[
  {
    "path": ".gitignore",
    "content": "*.o\n*.a\n.depend\n.*.swp\naclocal.m4\nautom4te.cache\nconfigure\nMakefile.in\nMakefile\n.deps\nconfig.*\nINSTALL\ncompile\ndepcomp\ninstall-sh\nmissing\ntest-driver\n.dirstamp\nylwrap\n"
  },
  {
    "path": "AUTHORS",
    "content": "Rhys Weatherley <rhys.weatherley@gmail.com>\nEli Fidler <efidler@topologyinc.com>\n"
  },
  {
    "path": "COPYING",
    "content": "Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included\nin all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\nOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\nDEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "ChangeLog",
    "content": ""
  },
  {
    "path": "Makefile.am",
    "content": "\nSUBDIRS = include src tools tests examples doc\n\nEXTRA_DIST = README.md\n\ndocs:\n\t(cd $(srcdir)/doc; $(DOXYGEN))\n"
  },
  {
    "path": "NEWS",
    "content": ""
  },
  {
    "path": "README",
    "content": "\nSee README.md\n"
  },
  {
    "path": "README.md",
    "content": "\nNoise-C Library\n===============\n\nNoise-C is a plain C implementation of the\n[Noise Protocol](http://noiseprotocol.org), intended as a\nreference implementation.  It can also be referred to as \"Noisy\",\nwhich is what you get when you say \"Noise-C\" too fast.  The code is\ndistributed under the terms of the MIT license.\n\nThe [documentation](http://rweather.github.io/noise-c/index.html)\ncontains more information on the library, examples, and how to build it.\n\nFor more information on this library, to report bugs, to contribute,\nor to suggest improvements, please contact the author Rhys Weatherley via\n[email](mailto:rhys.weatherley@gmail.com).\n"
  },
  {
    "path": "autogen.sh",
    "content": "#! /bin/sh\n\nif [ -x \"`which autoreconf 2>/dev/null`\" ] ; then\n  exec autoreconf -ivf\nfi\n\nif glibtoolize --version > /dev/null 2>&1; then\n  LIBTOOLIZE='glibtoolize'\nelse\n  LIBTOOLIZE='libtoolize'\nfi\n\n$LIBTOOLIZE && \\\naclocal && \\\nautomake --add-missing --force-missing --include-deps && \\\nautoconf\n"
  },
  {
    "path": "configure.ac",
    "content": "\nAC_INIT([noise-c], [0.0.1])\nAM_INIT_AUTOMAKE\nAC_CONFIG_MACRO_DIR([m4])\n\nAC_PROG_CC\nAC_PROG_CC_STDC\nAC_PROG_RANLIB\nAC_PROG_LEX\nAC_PROG_YACC\nAC_PATH_PROG(DOXYGEN, doxygen)\n\ndnl Determine the default Ed448-Goldilocks architecture to use.\nAC_CHECK_DECL([__x86_64__])\nAC_CHECK_SIZEOF(void *)\nif test \"x$ac_cv_have_decl___x86_64__\" = \"xyes\" ; then\n    ED448_DEFAULT_ARCH=arch_x86_64\nelse\n    if test \"x$ac_cv_sizeof_void_p\" = \"x8\" ; then\n        ED448_DEFAULT_ARCH=arch_ref64\n    else\n        ED448_DEFAULT_ARCH=arch_32\n    fi\nfi\n\nAC_ARG_WITH([ed448-arch],\n    [AS_HELP_STRING([--with-ed448-arch=ARCH],\n                    [specify the Ed448-Goldilocks architecture])],\n    [],\n    [with_ed448_arch=${ED448_DEFAULT_ARCH}])\n\nAC_CHECK_LIB(rt, clock_gettime)\n\ndnl Try to detect winsock2 on mingw32/64 systems.\nAC_CHECK_LIB(ws2_32, [_head_libws2_32_a])\nAC_CHECK_LIB(ws2_32, [_head_lib32_libws2_32_a])\nAC_CHECK_LIB(ws2_32, [_head_lib64_libws2_32_a])\n\nAC_CHECK_FUNCS([poll])\n\nAX_PTHREAD([LIBS=\"$PTHREAD_LIBS $LIBS\"\n    CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n    CC=\"$PTHREAD_CC\"],[])\n\nAC_SUBST([WARNING_FLAGS],[-Wall])\nAC_SUBST([GOLDILOCKS_ARCH],[$with_ed448_arch])\n\nAC_CONFIG_FILES([Makefile\ninclude/Makefile\ninclude/noise/Makefile\ninclude/noise/protocol/Makefile\ninclude/noise/keys/Makefile\nsrc/Makefile\nsrc/protocol/Makefile\nsrc/protobufs/Makefile\nsrc/keys/Makefile\ntests/Makefile\ntests/unit/Makefile\ntests/vector/Makefile\ntests/vector-gen/Makefile\ntests/performance/Makefile\ntools/Makefile\ntools/keytool/Makefile\ntools/protoc/Makefile\nexamples/Makefile\nexamples/echo/Makefile\nexamples/echo/echo-client/Makefile\nexamples/echo/echo-keygen/Makefile\nexamples/echo/echo-server/Makefile\ndoc/Makefile])\n\nAC_ARG_WITH([libsodium],\n  [AS_HELP_STRING([--with-libsodium],\n    [use libsodium for crypto @<:@default=check@:>@])],\n  [],\n  [with_libsodium=no])\nAC_ARG_WITH([openssl],\n  [AS_HELP_STRING([--with-openssl],\n    [use openssl for crypto @<:@default=check@:>@])],\n  [],\n  [with_openssl=no])\n\nPKG_PROG_PKG_CONFIG\nAS_IF([test -n \"$PKG_CONFIG\"], [\n  AS_CASE([\"$with_libsodium\"],\n    [yes], [PKG_CHECK_MODULES_STATIC([libsodium], [libsodium], [HAVE_LIBSODIUM=1])],\n    [no], [HAVE_LIBSODIUM=0],\n    [PKG_CHECK_MODULES_STATIC([libsodium], [libsodium], [HAVE_LIBSODIUM=1], [HAVE_LIBSODIUM=0])])\n  AM_CONDITIONAL([USE_LIBSODIUM], [test \"$with_libsodium\" != no -a \"$HAVE_LIBSODIUM\" -eq 1])\n\n  AS_CASE([\"$with_openssl\"],\n    [yes], [PKG_CHECK_MODULES_STATIC([openssl], [openssl], [HAVE_OPENSSL=1])],\n    [no], [HAVE_OPENSSL=0],\n    [PKG_CHECK_MODULES_STATIC([openssl], [openssl], [HAVE_OPENSSL=1], [HAVE_OPENSSL=0])])\n  AM_CONDITIONAL([USE_OPENSSL], [test \"$with_openssl\" != no -a \"$HAVE_OPENSSL\" -eq 1])\n], [\n  AC_MSG_WARN([Can't find pkg-config. Using built-in reference crypto backend.])\n  AM_CONDITIONAL([USE_LIBSODIUM],[false])\n  AM_CONDITIONAL([USE_OPENSSL],[false])\n])\n\nAC_ARG_ENABLE(asan, AC_HELP_STRING([--enable-asan],\n\t\t\t[Compile with Address Sanitizer]), [\n\tif (test \"${enableval}\" = \"yes\"); then\n\t\tCFLAGS=\"$CFLAGS -fsanitize=address\";\n\t\tLDFLAGS=\"$LDFLAGS -fsanitize=address\"\n\tfi\n])\n\nAC_ARG_ENABLE(ubsan, AC_HELP_STRING([--enable-ubsan],\n\t\t\t[Compile with Undefined Behavior Sanitizer]), [\n\tif (test \"${enableval}\" = \"yes\"); then\n\t\tCFLAGS=\"$CFLAGS -fsanitize=undefined\";\n\t\tLDFLAGS=\"$LDFLAGS -fsanitize=undefined\"\n\tfi\n])\n\nAC_OUTPUT\n"
  },
  {
    "path": "doc/.gitignore",
    "content": "html\n"
  },
  {
    "path": "doc/Doxyfile",
    "content": "# Doxyfile 1.8.6\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) for a project.\n#\n# All text after a double hash (##) is considered a comment and is placed in\n# front of the TAG it is preceding.\n#\n# All text after a single hash (#) is considered a comment and will be ignored.\n# The format is:\n# TAG = value [value, ...]\n# For lists, items can also be appended using:\n# TAG += value [value, ...]\n# Values that contain spaces should be placed between quotes (\\\" \\\").\n\n#---------------------------------------------------------------------------\n# Project related configuration options\n#---------------------------------------------------------------------------\n\n# This tag specifies the encoding used for all characters in the config file\n# that follow. The default is UTF-8 which is also the encoding used for all text\n# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv\n# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv\n# for the list of possible encodings.\n# The default value is: UTF-8.\n\nDOXYFILE_ENCODING      = UTF-8\n\n# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by\n# double-quotes, unless you are using Doxywizard) that should identify the\n# project for which the documentation is generated. This name is used in the\n# title of most generated pages and in a few other places.\n# The default value is: My Project.\n\nPROJECT_NAME           = \"Noise-C\"\n\n# The PROJECT_NUMBER tag can be used to enter a project or revision number. This\n# could be handy for archiving the generated documentation or if some version\n# control system is used.\n\nPROJECT_NUMBER         =\n\n# Using the PROJECT_BRIEF tag one can provide an optional one line description\n# for a project that appears at the top of each page and should give viewer a\n# quick idea about the purpose of the project. Keep the description short.\n\nPROJECT_BRIEF          =\n\n# With the PROJECT_LOGO tag one can specify an logo or icon that is included in\n# the documentation. The maximum height of the logo should not exceed 55 pixels\n# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo\n# to the output directory.\n\nPROJECT_LOGO           =\n\n# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path\n# into which the generated documentation will be written. If a relative path is\n# entered, it will be relative to the location where doxygen was started. If\n# left blank the current directory will be used.\n\nOUTPUT_DIRECTORY       = .\n\n# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-\n# directories (in 2 levels) under the output directory of each output format and\n# will distribute the generated files over these directories. Enabling this\n# option can be useful when feeding doxygen a huge amount of source files, where\n# putting all generated files in the same directory would otherwise causes\n# performance problems for the file system.\n# The default value is: NO.\n\nCREATE_SUBDIRS         = NO\n\n# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all constant output in the proper language.\n# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,\n# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),\n# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,\n# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),\n# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,\n# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,\n# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,\n# Ukrainian and Vietnamese.\n# The default value is: English.\n\nOUTPUT_LANGUAGE        = English\n\n# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member\n# descriptions after the members that are listed in the file and class\n# documentation (similar to Javadoc). Set to NO to disable this.\n# The default value is: YES.\n\nBRIEF_MEMBER_DESC      = YES\n\n# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief\n# description of a member or function before the detailed description\n#\n# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the\n# brief descriptions will be completely suppressed.\n# The default value is: YES.\n\nREPEAT_BRIEF           = YES\n\n# This tag implements a quasi-intelligent brief description abbreviator that is\n# used to form the text in various listings. Each string in this list, if found\n# as the leading text of the brief description, will be stripped from the text\n# and the result, after processing the whole list, is used as the annotated\n# text. Otherwise, the brief description is used as-is. If left blank, the\n# following values are used ($name is automatically replaced with the name of\n# the entity):The $name class, The $name widget, The $name file, is, provides,\n# specifies, contains, represents, a, an and the.\n\nABBREVIATE_BRIEF       =\n\n# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n# doxygen will generate a detailed section even if there is only a brief\n# description.\n# The default value is: NO.\n\nALWAYS_DETAILED_SEC    = NO\n\n# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all\n# inherited members of a class in the documentation of that class as if those\n# members were ordinary class members. Constructors, destructors and assignment\n# operators of the base classes will not be shown.\n# The default value is: NO.\n\nINLINE_INHERITED_MEMB  = NO\n\n# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path\n# before files name in the file list and in the header files. If set to NO the\n# shortest path that makes the file name unique will be used\n# The default value is: YES.\n\nFULL_PATH_NAMES        = NO\n\n# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.\n# Stripping is only done if one of the specified strings matches the left-hand\n# part of the path. The tag can be used to show relative paths in the file list.\n# If left blank the directory from which doxygen is run is used as the path to\n# strip.\n#\n# Note that you can specify absolute paths here, but also relative paths, which\n# will be relative from the directory where doxygen is started.\n# This tag requires that the tag FULL_PATH_NAMES is set to YES.\n\nSTRIP_FROM_PATH        =\n\n# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the\n# path mentioned in the documentation of a class, which tells the reader which\n# header file to include in order to use a class. If left blank only the name of\n# the header file containing the class definition is used. Otherwise one should\n# specify the list of include paths that are normally passed to the compiler\n# using the -I flag.\n\nSTRIP_FROM_INC_PATH    =\n\n# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but\n# less readable) file names. This can be useful is your file systems doesn't\n# support long names like on DOS, Mac, or CD-ROM.\n# The default value is: NO.\n\nSHORT_NAMES            = NO\n\n# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the\n# first line (until the first dot) of a Javadoc-style comment as the brief\n# description. If set to NO, the Javadoc-style will behave just like regular Qt-\n# style comments (thus requiring an explicit @brief command for a brief\n# description.)\n# The default value is: NO.\n\nJAVADOC_AUTOBRIEF      = NO\n\n# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first\n# line (until the first dot) of a Qt-style comment as the brief description. If\n# set to NO, the Qt-style will behave just like regular Qt-style comments (thus\n# requiring an explicit \\brief command for a brief description.)\n# The default value is: NO.\n\nQT_AUTOBRIEF           = NO\n\n# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a\n# multi-line C++ special comment block (i.e. a block of //! or /// comments) as\n# a brief description. This used to be the default behavior. The new default is\n# to treat a multi-line C++ comment block as a detailed description. Set this\n# tag to YES if you prefer the old behavior instead.\n#\n# Note that setting this tag to YES also means that rational rose comments are\n# not recognized any more.\n# The default value is: NO.\n\nMULTILINE_CPP_IS_BRIEF = NO\n\n# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the\n# documentation from any documented member that it re-implements.\n# The default value is: YES.\n\nINHERIT_DOCS           = YES\n\n# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a\n# new page for each member. If set to NO, the documentation of a member will be\n# part of the file/class/namespace that contains it.\n# The default value is: NO.\n\nSEPARATE_MEMBER_PAGES  = NO\n\n# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen\n# uses this value to replace tabs by spaces in code fragments.\n# Minimum value: 1, maximum value: 16, default value: 4.\n\nTAB_SIZE               = 4\n\n# This tag can be used to specify a number of aliases that act as commands in\n# the documentation. An alias has the form:\n# name=value\n# For example adding\n# \"sideeffect=@par Side Effects:\\n\"\n# will allow you to put the command \\sideeffect (or @sideeffect) in the\n# documentation, which will result in a user-defined paragraph with heading\n# \"Side Effects:\". You can put \\n's in the value part of an alias to insert\n# newlines.\n\nALIASES                =\n\n# This tag can be used to specify a number of word-keyword mappings (TCL only).\n# A mapping has the form \"name=value\". For example adding \"class=itcl::class\"\n# will allow you to use the command class in the itcl::class meaning.\n\nTCL_SUBST              =\n\n# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources\n# only. Doxygen will then generate output that is more tailored for C. For\n# instance, some of the names that are used will be different. The list of all\n# members will be omitted, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_FOR_C  = YES\n\n# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or\n# Python sources only. Doxygen will then generate output that is more tailored\n# for that language. For instance, namespaces will be presented as packages,\n# qualified scopes will look different, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_JAVA   = NO\n\n# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran\n# sources. Doxygen will then generate output that is tailored for Fortran.\n# The default value is: NO.\n\nOPTIMIZE_FOR_FORTRAN   = NO\n\n# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL\n# sources. Doxygen will then generate output that is tailored for VHDL.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_VHDL   = NO\n\n# Doxygen selects the parser to use depending on the extension of the files it\n# parses. With this tag you can assign which parser to use for a given\n# extension. Doxygen has a built-in mapping, but you can override or extend it\n# using this tag. The format is ext=language, where ext is a file extension, and\n# language is one of the parsers supported by doxygen: IDL, Java, Javascript,\n# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make\n# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C\n# (default is Fortran), use: inc=Fortran f=C.\n#\n# Note For files without extension you can use no_extension as a placeholder.\n#\n# Note that for custom extensions you also need to set FILE_PATTERNS otherwise\n# the files are not read by doxygen.\n\nEXTENSION_MAPPING      =\n\n# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments\n# according to the Markdown format, which allows for more readable\n# documentation. See http://daringfireball.net/projects/markdown/ for details.\n# The output of markdown processing is further processed by doxygen, so you can\n# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in\n# case of backward compatibilities issues.\n# The default value is: YES.\n\nMARKDOWN_SUPPORT       = YES\n\n# When enabled doxygen tries to link words that correspond to documented\n# classes, or namespaces to their corresponding documentation. Such a link can\n# be prevented in individual cases by by putting a % sign in front of the word\n# or globally by setting AUTOLINK_SUPPORT to NO.\n# The default value is: YES.\n\nAUTOLINK_SUPPORT       = YES\n\n# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want\n# to include (a tag file for) the STL sources as input, then you should set this\n# tag to YES in order to let doxygen match functions declarations and\n# definitions whose arguments contain STL classes (e.g. func(std::string);\n# versus func(std::string) {}). This also make the inheritance and collaboration\n# diagrams that involve STL classes more complete and accurate.\n# The default value is: NO.\n\nBUILTIN_STL_SUPPORT    = NO\n\n# If you use Microsoft's C++/CLI language, you should set this option to YES to\n# enable parsing support.\n# The default value is: NO.\n\nCPP_CLI_SUPPORT        = NO\n\n# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:\n# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen\n# will parse them like normal C++ but will assume all classes use public instead\n# of private inheritance when no explicit protection keyword is present.\n# The default value is: NO.\n\nSIP_SUPPORT            = NO\n\n# For Microsoft's IDL there are propget and propput attributes to indicate\n# getter and setter methods for a property. Setting this option to YES will make\n# doxygen to replace the get and set methods by a property in the documentation.\n# This will only work if the methods are indeed getting or setting a simple\n# type. If this is not the case, or you want to show the methods anyway, you\n# should set this option to NO.\n# The default value is: YES.\n\nIDL_PROPERTY_SUPPORT   = YES\n\n# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC\n# tag is set to YES, then doxygen will reuse the documentation of the first\n# member in the group (if any) for the other members of the group. By default\n# all members of a group must be documented explicitly.\n# The default value is: NO.\n\nDISTRIBUTE_GROUP_DOC   = NO\n\n# Set the SUBGROUPING tag to YES to allow class member groups of the same type\n# (for instance a group of public functions) to be put as a subgroup of that\n# type (e.g. under the Public Functions section). Set it to NO to prevent\n# subgrouping. Alternatively, this can be done per class using the\n# \\nosubgrouping command.\n# The default value is: YES.\n\nSUBGROUPING            = YES\n\n# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions\n# are shown inside the group in which they are included (e.g. using \\ingroup)\n# instead of on a separate page (for HTML and Man pages) or section (for LaTeX\n# and RTF).\n#\n# Note that this feature does not work in combination with\n# SEPARATE_MEMBER_PAGES.\n# The default value is: NO.\n\nINLINE_GROUPED_CLASSES = NO\n\n# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions\n# with only public data fields or simple typedef fields will be shown inline in\n# the documentation of the scope in which they are defined (i.e. file,\n# namespace, or group documentation), provided this scope is documented. If set\n# to NO, structs, classes, and unions are shown on a separate page (for HTML and\n# Man pages) or section (for LaTeX and RTF).\n# The default value is: NO.\n\nINLINE_SIMPLE_STRUCTS  = YES\n\n# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or\n# enum is documented as struct, union, or enum with the name of the typedef. So\n# typedef struct TypeS {} TypeT, will appear in the documentation as a struct\n# with name TypeT. When disabled the typedef will appear as a member of a file,\n# namespace, or class. And the struct will be named TypeS. This can typically be\n# useful for C code in case the coding convention dictates that all compound\n# types are typedef'ed and only the typedef is referenced, never the tag name.\n# The default value is: NO.\n\nTYPEDEF_HIDES_STRUCT   = NO\n\n# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This\n# cache is used to resolve symbols given their name and scope. Since this can be\n# an expensive process and often the same symbol appears multiple times in the\n# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small\n# doxygen will become slower. If the cache is too large, memory is wasted. The\n# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range\n# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536\n# symbols. At the end of a run doxygen will report the cache usage and suggest\n# the optimal cache size from a speed point of view.\n# Minimum value: 0, maximum value: 9, default value: 0.\n\nLOOKUP_CACHE_SIZE      = 0\n\n#---------------------------------------------------------------------------\n# Build related configuration options\n#---------------------------------------------------------------------------\n\n# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in\n# documentation are documented, even if no documentation was available. Private\n# class members and static file members will be hidden unless the\n# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.\n# Note: This will also disable the warnings about undocumented members that are\n# normally produced when WARNINGS is set to YES.\n# The default value is: NO.\n\nEXTRACT_ALL            = YES\n\n# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will\n# be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PRIVATE        = NO\n\n# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal\n# scope will be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PACKAGE        = NO\n\n# If the EXTRACT_STATIC tag is set to YES all static members of a file will be\n# included in the documentation.\n# The default value is: NO.\n\nEXTRACT_STATIC         = NO\n\n# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined\n# locally in source files will be included in the documentation. If set to NO\n# only classes defined in header files are included. Does not have any effect\n# for Java sources.\n# The default value is: YES.\n\nEXTRACT_LOCAL_CLASSES  = YES\n\n# This flag is only useful for Objective-C code. When set to YES local methods,\n# which are defined in the implementation section but not in the interface are\n# included in the documentation. If set to NO only methods in the interface are\n# included.\n# The default value is: NO.\n\nEXTRACT_LOCAL_METHODS  = NO\n\n# If this flag is set to YES, the members of anonymous namespaces will be\n# extracted and appear in the documentation as a namespace called\n# 'anonymous_namespace{file}', where file will be replaced with the base name of\n# the file that contains the anonymous namespace. By default anonymous namespace\n# are hidden.\n# The default value is: NO.\n\nEXTRACT_ANON_NSPACES   = NO\n\n# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all\n# undocumented members inside documented classes or files. If set to NO these\n# members will be included in the various overviews, but no documentation\n# section is generated. This option has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_MEMBERS     = NO\n\n# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all\n# undocumented classes that are normally visible in the class hierarchy. If set\n# to NO these classes will be included in the various overviews. This option has\n# no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_CLASSES     = NO\n\n# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend\n# (class|struct|union) declarations. If set to NO these declarations will be\n# included in the documentation.\n# The default value is: NO.\n\nHIDE_FRIEND_COMPOUNDS  = NO\n\n# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any\n# documentation blocks found inside the body of a function. If set to NO these\n# blocks will be appended to the function's detailed documentation block.\n# The default value is: NO.\n\nHIDE_IN_BODY_DOCS      = NO\n\n# The INTERNAL_DOCS tag determines if documentation that is typed after a\n# \\internal command is included. If the tag is set to NO then the documentation\n# will be excluded. Set it to YES to include the internal documentation.\n# The default value is: NO.\n\nINTERNAL_DOCS          = NO\n\n# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file\n# names in lower-case letters. If set to YES upper-case letters are also\n# allowed. This is useful if you have classes or files whose names only differ\n# in case and if your file system supports case sensitive file names. Windows\n# and Mac users are advised to set this option to NO.\n# The default value is: system dependent.\n\nCASE_SENSE_NAMES       = YES\n\n# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with\n# their full class and namespace scopes in the documentation. If set to YES the\n# scope will be hidden.\n# The default value is: NO.\n\nHIDE_SCOPE_NAMES       = NO\n\n# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of\n# the files that are included by a file in the documentation of that file.\n# The default value is: YES.\n\nSHOW_INCLUDE_FILES     = YES\n\n# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each\n# grouped member an include statement to the documentation, telling the reader\n# which file to include in order to use the member.\n# The default value is: NO.\n\nSHOW_GROUPED_MEMB_INC  = NO\n\n# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include\n# files with double quotes in the documentation rather than with sharp brackets.\n# The default value is: NO.\n\nFORCE_LOCAL_INCLUDES   = NO\n\n# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the\n# documentation for inline members.\n# The default value is: YES.\n\nINLINE_INFO            = YES\n\n# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the\n# (detailed) documentation of file and class members alphabetically by member\n# name. If set to NO the members will appear in declaration order.\n# The default value is: YES.\n\nSORT_MEMBER_DOCS       = YES\n\n# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief\n# descriptions of file, namespace and class members alphabetically by member\n# name. If set to NO the members will appear in declaration order. Note that\n# this will also influence the order of the classes in the class list.\n# The default value is: NO.\n\nSORT_BRIEF_DOCS        = YES\n\n# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the\n# (brief and detailed) documentation of class members so that constructors and\n# destructors are listed first. If set to NO the constructors will appear in the\n# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.\n# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief\n# member documentation.\n# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting\n# detailed member documentation.\n# The default value is: NO.\n\nSORT_MEMBERS_CTORS_1ST = NO\n\n# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy\n# of group names into alphabetical order. If set to NO the group names will\n# appear in their defined order.\n# The default value is: NO.\n\nSORT_GROUP_NAMES       = NO\n\n# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by\n# fully-qualified names, including namespaces. If set to NO, the class list will\n# be sorted only by class name, not including the namespace part.\n# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n# Note: This option applies only to the class list, not to the alphabetical\n# list.\n# The default value is: NO.\n\nSORT_BY_SCOPE_NAME     = NO\n\n# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper\n# type resolution of all parameters of a function it will reject a match between\n# the prototype and the implementation of a member function even if there is\n# only one candidate or it is obvious which candidate to choose by doing a\n# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still\n# accept a match between prototype and implementation in such cases.\n# The default value is: NO.\n\nSTRICT_PROTO_MATCHING  = NO\n\n# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the\n# todo list. This list is created by putting \\todo commands in the\n# documentation.\n# The default value is: YES.\n\nGENERATE_TODOLIST      = YES\n\n# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the\n# test list. This list is created by putting \\test commands in the\n# documentation.\n# The default value is: YES.\n\nGENERATE_TESTLIST      = YES\n\n# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug\n# list. This list is created by putting \\bug commands in the documentation.\n# The default value is: YES.\n\nGENERATE_BUGLIST       = YES\n\n# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)\n# the deprecated list. This list is created by putting \\deprecated commands in\n# the documentation.\n# The default value is: YES.\n\nGENERATE_DEPRECATEDLIST= YES\n\n# The ENABLED_SECTIONS tag can be used to enable conditional documentation\n# sections, marked by \\if <section_label> ... \\endif and \\cond <section_label>\n# ... \\endcond blocks.\n\nENABLED_SECTIONS       =\n\n# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the\n# initial value of a variable or macro / define can have for it to appear in the\n# documentation. If the initializer consists of more lines than specified here\n# it will be hidden. Use a value of 0 to hide initializers completely. The\n# appearance of the value of individual variables and macros / defines can be\n# controlled using \\showinitializer or \\hideinitializer command in the\n# documentation regardless of this setting.\n# Minimum value: 0, maximum value: 10000, default value: 30.\n\nMAX_INITIALIZER_LINES  = 30\n\n# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at\n# the bottom of the documentation of classes and structs. If set to YES the list\n# will mention the files that were used to generate the documentation.\n# The default value is: YES.\n\nSHOW_USED_FILES        = YES\n\n# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This\n# will remove the Files entry from the Quick Index and from the Folder Tree View\n# (if specified).\n# The default value is: YES.\n\nSHOW_FILES             = YES\n\n# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces\n# page. This will remove the Namespaces entry from the Quick Index and from the\n# Folder Tree View (if specified).\n# The default value is: YES.\n\nSHOW_NAMESPACES        = YES\n\n# The FILE_VERSION_FILTER tag can be used to specify a program or script that\n# doxygen should invoke to get the current version for each file (typically from\n# the version control system). Doxygen will invoke the program by executing (via\n# popen()) the command command input-file, where command is the value of the\n# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided\n# by doxygen. Whatever the program writes to standard output is used as the file\n# version. For an example see the documentation.\n\nFILE_VERSION_FILTER    =\n\n# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed\n# by doxygen. The layout file controls the global structure of the generated\n# output files in an output format independent way. To create the layout file\n# that represents doxygen's defaults, run doxygen with the -l option. You can\n# optionally specify a file name after the option, if omitted DoxygenLayout.xml\n# will be used as the name of the layout file.\n#\n# Note that if you run doxygen from a directory containing a file called\n# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE\n# tag is left empty.\n\nLAYOUT_FILE            =\n\n# The CITE_BIB_FILES tag can be used to specify one or more bib files containing\n# the reference definitions. This must be a list of .bib files. The .bib\n# extension is automatically appended if omitted. This requires the bibtex tool\n# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.\n# For LaTeX the style of the bibliography can be controlled using\n# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the\n# search path. Do not use file names with spaces, bibtex cannot handle them. See\n# also \\cite for info how to create references.\n\nCITE_BIB_FILES         =\n\n#---------------------------------------------------------------------------\n# Configuration options related to warning and progress messages\n#---------------------------------------------------------------------------\n\n# The QUIET tag can be used to turn on/off the messages that are generated to\n# standard output by doxygen. If QUIET is set to YES this implies that the\n# messages are off.\n# The default value is: NO.\n\nQUIET                  = YES\n\n# The WARNINGS tag can be used to turn on/off the warning messages that are\n# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES\n# this implies that the warnings are on.\n#\n# Tip: Turn warnings on while writing the documentation.\n# The default value is: YES.\n\nWARNINGS               = YES\n\n# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate\n# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag\n# will automatically be disabled.\n# The default value is: YES.\n\nWARN_IF_UNDOCUMENTED   = YES\n\n# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for\n# potential errors in the documentation, such as not documenting some parameters\n# in a documented function, or documenting parameters that don't exist or using\n# markup commands wrongly.\n# The default value is: YES.\n\nWARN_IF_DOC_ERROR      = YES\n\n# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that\n# are documented, but have no documentation for their parameters or return\n# value. If set to NO doxygen will only warn about wrong or incomplete parameter\n# documentation, but not about the absence of documentation.\n# The default value is: NO.\n\nWARN_NO_PARAMDOC       = NO\n\n# The WARN_FORMAT tag determines the format of the warning messages that doxygen\n# can produce. The string should contain the $file, $line, and $text tags, which\n# will be replaced by the file and line number from which the warning originated\n# and the warning text. Optionally the format may contain $version, which will\n# be replaced by the version of the file (if it could be obtained via\n# FILE_VERSION_FILTER)\n# The default value is: $file:$line: $text.\n\nWARN_FORMAT            = \"$file:$line: $text\"\n\n# The WARN_LOGFILE tag can be used to specify a file to which warning and error\n# messages should be written. If left blank the output is written to standard\n# error (stderr).\n\nWARN_LOGFILE           =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the input files\n#---------------------------------------------------------------------------\n\n# The INPUT tag is used to specify the files and/or directories that contain\n# documented source files. You may enter file names like myfile.cpp or\n# directories like /usr/src/myproject. Separate the files or directories with\n# spaces.\n# Note: If this tag is empty the current directory is searched.\n\nINPUT                  = ../src/protocol ../src/keys ../include/noise ../include/noise/protocol ../include/noise/keys .\n\n# This tag can be used to specify the character encoding of the source files\n# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses\n# libiconv (or the iconv built into libc) for the transcoding. See the libiconv\n# documentation (see: http://www.gnu.org/software/libiconv) for the list of\n# possible encodings.\n# The default value is: UTF-8.\n\nINPUT_ENCODING         = UTF-8\n\n# If the value of the INPUT tag contains directories, you can use the\n# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank the\n# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,\n# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,\n# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,\n# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,\n# *.qsf, *.as and *.js.\n\nFILE_PATTERNS          = *.h *.c *.dox\n\n# The RECURSIVE tag can be used to specify whether or not subdirectories should\n# be searched for input files as well.\n# The default value is: NO.\n\nRECURSIVE              = NO\n\n# The EXCLUDE tag can be used to specify files and/or directories that should be\n# excluded from the INPUT source files. This way you can easily exclude a\n# subdirectory from a directory tree whose root is specified with the INPUT tag.\n#\n# Note that relative paths are relative to the directory from which doxygen is\n# run.\n\nEXCLUDE                = ../src/crypto\n\n# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or\n# directories that are symbolic links (a Unix file system feature) are excluded\n# from the input.\n# The default value is: NO.\n\nEXCLUDE_SYMLINKS       = NO\n\n# If the value of the INPUT tag contains directories, you can use the\n# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n# certain files from those directories.\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories for example use the pattern */test/*\n\nEXCLUDE_PATTERNS       =\n\n# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names\n# (namespaces, classes, functions, etc.) that should be excluded from the\n# output. The symbol name can be a fully qualified name, a word, or if the\n# wildcard * is used, a substring. Examples: ANamespace, AClass,\n# AClass::ANamespace, ANamespace::*Test\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories use the pattern */test/*\n\nEXCLUDE_SYMBOLS        =\n\n# The EXAMPLE_PATH tag can be used to specify one or more files or directories\n# that contain example code fragments that are included (see the \\include\n# command).\n\nEXAMPLE_PATH           = . ../examples\n\n# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank all\n# files are included.\n\nEXAMPLE_PATTERNS       =\n\n# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be\n# searched for input files to be used with the \\include or \\dontinclude commands\n# irrespective of the value of the RECURSIVE tag.\n# The default value is: NO.\n\nEXAMPLE_RECURSIVE      = YES\n\n# The IMAGE_PATH tag can be used to specify one or more files or directories\n# that contain images that are to be included in the documentation (see the\n# \\image command).\n\nIMAGE_PATH             =\n\n# The INPUT_FILTER tag can be used to specify a program that doxygen should\n# invoke to filter for each input file. Doxygen will invoke the filter program\n# by executing (via popen()) the command:\n#\n# <filter> <input-file>\n#\n# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the\n# name of an input file. Doxygen will then use the output that the filter\n# program writes to standard output. If FILTER_PATTERNS is specified, this tag\n# will be ignored.\n#\n# Note that the filter must not add or remove lines; it is applied before the\n# code is scanned, but not when the output code is generated. If lines are added\n# or removed, the anchors will not be placed correctly.\n\nINPUT_FILTER           =\n\n# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern\n# basis. Doxygen will compare the file name with each pattern and apply the\n# filter if there is a match. The filters are a list of the form: pattern=filter\n# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how\n# filters are used. If the FILTER_PATTERNS tag is empty or if none of the\n# patterns match the file name, INPUT_FILTER is applied.\n\nFILTER_PATTERNS        =\n\n# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using\n# INPUT_FILTER ) will also be used to filter the input files that are used for\n# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).\n# The default value is: NO.\n\nFILTER_SOURCE_FILES    = NO\n\n# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file\n# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and\n# it is also possible to disable source filtering for a specific pattern using\n# *.ext= (so without naming a filter).\n# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.\n\nFILTER_SOURCE_PATTERNS =\n\n# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that\n# is part of the input, its contents will be placed on the main page\n# (index.html). This can be useful if you have a project on for instance GitHub\n# and want to reuse the introduction page also for the doxygen output.\n\nUSE_MDFILE_AS_MAINPAGE =\n\n#---------------------------------------------------------------------------\n# Configuration options related to source browsing\n#---------------------------------------------------------------------------\n\n# If the SOURCE_BROWSER tag is set to YES then a list of source files will be\n# generated. Documented entities will be cross-referenced with these sources.\n#\n# Note: To get rid of all source code in the generated output, make sure that\n# also VERBATIM_HEADERS is set to NO.\n# The default value is: NO.\n\nSOURCE_BROWSER         = YES\n\n# Setting the INLINE_SOURCES tag to YES will include the body of functions,\n# classes and enums directly into the documentation.\n# The default value is: NO.\n\nINLINE_SOURCES         = NO\n\n# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any\n# special comment blocks from generated source code fragments. Normal C, C++ and\n# Fortran comments will always remain visible.\n# The default value is: YES.\n\nSTRIP_CODE_COMMENTS    = YES\n\n# If the REFERENCED_BY_RELATION tag is set to YES then for each documented\n# function all documented functions referencing it will be listed.\n# The default value is: NO.\n\nREFERENCED_BY_RELATION = NO\n\n# If the REFERENCES_RELATION tag is set to YES then for each documented function\n# all documented entities called/used by that function will be listed.\n# The default value is: NO.\n\nREFERENCES_RELATION    = NO\n\n# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set\n# to YES, then the hyperlinks from functions in REFERENCES_RELATION and\n# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will\n# link to the documentation.\n# The default value is: YES.\n\nREFERENCES_LINK_SOURCE = YES\n\n# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the\n# source code will show a tooltip with additional information such as prototype,\n# brief description and links to the definition and documentation. Since this\n# will make the HTML file larger and loading of large files a bit slower, you\n# can opt to disable this feature.\n# The default value is: YES.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nSOURCE_TOOLTIPS        = YES\n\n# If the USE_HTAGS tag is set to YES then the references to source code will\n# point to the HTML generated by the htags(1) tool instead of doxygen built-in\n# source browser. The htags tool is part of GNU's global source tagging system\n# (see http://www.gnu.org/software/global/global.html). You will need version\n# 4.8.6 or higher.\n#\n# To use it do the following:\n# - Install the latest version of global\n# - Enable SOURCE_BROWSER and USE_HTAGS in the config file\n# - Make sure the INPUT points to the root of the source tree\n# - Run doxygen as normal\n#\n# Doxygen will invoke htags (and that will in turn invoke gtags), so these\n# tools must be available from the command line (i.e. in the search path).\n#\n# The result: instead of the source browser generated by doxygen, the links to\n# source code will now point to the output of htags.\n# The default value is: NO.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nUSE_HTAGS              = NO\n\n# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a\n# verbatim copy of the header file for each class for which an include is\n# specified. Set to NO to disable this.\n# See also: Section \\class.\n# The default value is: YES.\n\nVERBATIM_HEADERS       = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the alphabetical class index\n#---------------------------------------------------------------------------\n\n# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all\n# compounds will be generated. Enable this if the project contains a lot of\n# classes, structs, unions or interfaces.\n# The default value is: YES.\n\nALPHABETICAL_INDEX     = YES\n\n# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in\n# which the alphabetical index list will be split.\n# Minimum value: 1, maximum value: 20, default value: 5.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nCOLS_IN_ALPHA_INDEX    = 5\n\n# In case all classes in a project start with a common prefix, all classes will\n# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag\n# can be used to specify a prefix (or a list of prefixes) that should be ignored\n# while generating the index headers.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nIGNORE_PREFIX          =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the HTML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output\n# The default value is: YES.\n\nGENERATE_HTML          = YES\n\n# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_OUTPUT            = html\n\n# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each\n# generated HTML page (for example: .htm, .php, .asp).\n# The default value is: .html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FILE_EXTENSION    = .html\n\n# The HTML_HEADER tag can be used to specify a user-defined HTML header file for\n# each generated HTML page. If the tag is left blank doxygen will generate a\n# standard header.\n#\n# To get valid HTML the header file that includes any scripts and style sheets\n# that doxygen needs, which is dependent on the configuration options used (e.g.\n# the setting GENERATE_TREEVIEW). It is highly recommended to start with a\n# default header using\n# doxygen -w html new_header.html new_footer.html new_stylesheet.css\n# YourConfigFile\n# and then modify the file new_header.html. See also section \"Doxygen usage\"\n# for information on how to generate the default header that doxygen normally\n# uses.\n# Note: The header is subject to change so you typically have to regenerate the\n# default header when upgrading to a newer version of doxygen. For a description\n# of the possible markers and block names see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_HEADER            =\n\n# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each\n# generated HTML page. If the tag is left blank doxygen will generate a standard\n# footer. See HTML_HEADER for more information on how to generate a default\n# footer and what special commands can be used inside the footer. See also\n# section \"Doxygen usage\" for information on how to generate the default footer\n# that doxygen normally uses.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FOOTER            =\n\n# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style\n# sheet that is used by each HTML page. It can be used to fine-tune the look of\n# the HTML output. If left blank doxygen will generate a default style sheet.\n# See also section \"Doxygen usage\" for information on how to generate the style\n# sheet that doxygen normally uses.\n# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as\n# it is more robust and this tag (HTML_STYLESHEET) will in the future become\n# obsolete.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_STYLESHEET        =\n\n# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-\n# defined cascading style sheet that is included after the standard style sheets\n# created by doxygen. Using this option one can overrule certain style aspects.\n# This is preferred over using HTML_STYLESHEET since it does not replace the\n# standard style sheet and is therefor more robust against future updates.\n# Doxygen will copy the style sheet file to the output directory. For an example\n# see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_STYLESHEET  =\n\n# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the HTML output directory. Note\n# that these files will be copied to the base HTML output directory. Use the\n# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these\n# files. In the HTML_STYLESHEET file, use the file name only. Also note that the\n# files will be copied as-is; there are no commands or markers available.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_FILES       =\n\n# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen\n# will adjust the colors in the stylesheet and background images according to\n# this color. Hue is specified as an angle on a colorwheel, see\n# http://en.wikipedia.org/wiki/Hue for more information. For instance the value\n# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300\n# purple, and 360 is red again.\n# Minimum value: 0, maximum value: 359, default value: 220.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_HUE    = 220\n\n# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors\n# in the HTML output. For a value of 0 the output will use grayscales only. A\n# value of 255 will produce the most vivid colors.\n# Minimum value: 0, maximum value: 255, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_SAT    = 100\n\n# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the\n# luminance component of the colors in the HTML output. Values below 100\n# gradually make the output lighter, whereas values above 100 make the output\n# darker. The value divided by 100 is the actual gamma applied, so 80 represents\n# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not\n# change the gamma.\n# Minimum value: 40, maximum value: 240, default value: 80.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_GAMMA  = 80\n\n# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML\n# page will contain the date and time when the page was generated. Setting this\n# to NO can help when comparing the output of multiple runs.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_TIMESTAMP         = YES\n\n# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML\n# documentation will contain sections that can be hidden and shown after the\n# page has loaded.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_SECTIONS  = NO\n\n# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries\n# shown in the various tree structured indices initially; the user can expand\n# and collapse entries dynamically later on. Doxygen will expand the tree to\n# such a level that at most the specified number of entries are visible (unless\n# a fully collapsed tree already exceeds this amount). So setting the number of\n# entries 1 will produce a full collapsed tree by default. 0 is a special value\n# representing an infinite number of entries and will result in a full expanded\n# tree by default.\n# Minimum value: 0, maximum value: 9999, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_INDEX_NUM_ENTRIES = 100\n\n# If the GENERATE_DOCSET tag is set to YES, additional index files will be\n# generated that can be used as input for Apple's Xcode 3 integrated development\n# environment (see: http://developer.apple.com/tools/xcode/), introduced with\n# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a\n# Makefile in the HTML output directory. Running make will produce the docset in\n# that directory and running make install will install the docset in\n# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at\n# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html\n# for more information.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_DOCSET        = NO\n\n# This tag determines the name of the docset feed. A documentation feed provides\n# an umbrella under which multiple documentation sets from a single provider\n# (such as a company or product suite) can be grouped.\n# The default value is: Doxygen generated docs.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_FEEDNAME        = \"Doxygen generated docs\"\n\n# This tag specifies a string that should uniquely identify the documentation\n# set bundle. This should be a reverse domain-name style string, e.g.\n# com.mycompany.MyDocSet. Doxygen will append .docset to the name.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_BUNDLE_ID       = org.doxygen.Project\n\n# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify\n# the documentation publisher. This should be a reverse domain-name style\n# string, e.g. com.mycompany.MyDocSet.documentation.\n# The default value is: org.doxygen.Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_ID    = org.doxygen.Publisher\n\n# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.\n# The default value is: Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_NAME  = Publisher\n\n# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three\n# additional HTML index files: index.hhp, index.hhc, and index.hhk. The\n# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop\n# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on\n# Windows.\n#\n# The HTML Help Workshop contains a compiler that can convert all HTML output\n# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML\n# files are now used as the Windows 98 help format, and will replace the old\n# Windows help format (.hlp) on all Windows platforms in the future. Compressed\n# HTML files also contain an index, a table of contents, and you can search for\n# words in the documentation. The HTML workshop also contains a viewer for\n# compressed HTML files.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_HTMLHELP      = NO\n\n# The CHM_FILE tag can be used to specify the file name of the resulting .chm\n# file. You can add a path in front of the file if the result should not be\n# written to the html output directory.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_FILE               =\n\n# The HHC_LOCATION tag can be used to specify the location (absolute path\n# including file name) of the HTML help compiler ( hhc.exe). If non-empty\n# doxygen will try to run the HTML help compiler on the generated index.hhp.\n# The file has to be specified with full path.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nHHC_LOCATION           =\n\n# The GENERATE_CHI flag controls if a separate .chi index file is generated (\n# YES) or that it should be included in the master .chm file ( NO).\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nGENERATE_CHI           = NO\n\n# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)\n# and project file content.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_INDEX_ENCODING     =\n\n# The BINARY_TOC flag controls whether a binary table of contents is generated (\n# YES) or a normal table of contents ( NO) in the .chm file.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nBINARY_TOC             = NO\n\n# The TOC_EXPAND flag can be set to YES to add extra items for group members to\n# the table of contents of the HTML help documentation and to the tree view.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nTOC_EXPAND             = NO\n\n# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and\n# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that\n# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help\n# (.qch) of the generated HTML documentation.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_QHP           = NO\n\n# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify\n# the file name of the resulting .qch file. The path specified is relative to\n# the HTML output folder.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQCH_FILE               =\n\n# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help\n# Project output. For more information please see Qt Help Project / Namespace\n# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_NAMESPACE          = org.doxygen.Project\n\n# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt\n# Help Project output. For more information please see Qt Help Project / Virtual\n# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-\n# folders).\n# The default value is: doc.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_VIRTUAL_FOLDER     = doc\n\n# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom\n# filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_NAME   =\n\n# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the\n# custom filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_ATTRS  =\n\n# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this\n# project's filter section matches. Qt Help Project / Filter Attributes (see:\n# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_SECT_FILTER_ATTRS  =\n\n# The QHG_LOCATION tag can be used to specify the location of Qt's\n# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the\n# generated .qhp file.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHG_LOCATION           =\n\n# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be\n# generated, together with the HTML files, they form an Eclipse help plugin. To\n# install this plugin and make it available under the help contents menu in\n# Eclipse, the contents of the directory containing the HTML and XML files needs\n# to be copied into the plugins directory of eclipse. The name of the directory\n# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.\n# After copying Eclipse needs to be restarted before the help appears.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_ECLIPSEHELP   = NO\n\n# A unique identifier for the Eclipse help plugin. When installing the plugin\n# the directory name containing the HTML and XML files should also have this\n# name. Each documentation set should have its own identifier.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.\n\nECLIPSE_DOC_ID         = org.doxygen.Project\n\n# If you want full control over the layout of the generated HTML pages it might\n# be necessary to disable the index and replace it with your own. The\n# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top\n# of each HTML page. A value of NO enables the index and the value YES disables\n# it. Since the tabs in the index contain the same information as the navigation\n# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nDISABLE_INDEX          = NO\n\n# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n# structure should be generated to display hierarchical information. If the tag\n# value is set to YES, a side panel will be generated containing a tree-like\n# index structure (just like the one that is generated for HTML Help). For this\n# to work a browser that supports JavaScript, DHTML, CSS and frames is required\n# (i.e. any modern browser). Windows users are probably better off using the\n# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can\n# further fine-tune the look of the index. As an example, the default style\n# sheet generated by doxygen has an example that shows how to put an image at\n# the root of the tree instead of the PROJECT_NAME. Since the tree basically has\n# the same information as the tab index, you could consider setting\n# DISABLE_INDEX to YES when enabling this option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_TREEVIEW      = NO\n\n# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that\n# doxygen will group on one line in the generated HTML documentation.\n#\n# Note that a value of 0 will completely suppress the enum values from appearing\n# in the overview section.\n# Minimum value: 0, maximum value: 20, default value: 4.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nENUM_VALUES_PER_LINE   = 4\n\n# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used\n# to set the initial width (in pixels) of the frame in which the tree is shown.\n# Minimum value: 0, maximum value: 1500, default value: 250.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nTREEVIEW_WIDTH         = 250\n\n# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to\n# external symbols imported via tag files in a separate window.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nEXT_LINKS_IN_WINDOW    = NO\n\n# Use this tag to change the font size of LaTeX formulas included as images in\n# the HTML documentation. When you change the font size after a successful\n# doxygen run you need to manually remove any form_*.png images from the HTML\n# output directory to force them to be regenerated.\n# Minimum value: 8, maximum value: 50, default value: 10.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_FONTSIZE       = 10\n\n# Use the FORMULA_TRANPARENT tag to determine whether or not the images\n# generated for formulas are transparent PNGs. Transparent PNGs are not\n# supported properly for IE 6.0, but are supported on all modern browsers.\n#\n# Note that when changing this option you need to delete any form_*.png files in\n# the HTML output directory before the changes have effect.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_TRANSPARENT    = YES\n\n# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see\n# http://www.mathjax.org) which uses client side Javascript for the rendering\n# instead of using prerendered bitmaps. Use this if you do not have LaTeX\n# installed or if you want to formulas look prettier in the HTML output. When\n# enabled you may also need to install MathJax separately and configure the path\n# to it using the MATHJAX_RELPATH option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nUSE_MATHJAX            = NO\n\n# When MathJax is enabled you can set the default output format to be used for\n# the MathJax output. See the MathJax site (see:\n# http://docs.mathjax.org/en/latest/output.html) for more details.\n# Possible values are: HTML-CSS (which is slower, but has the best\n# compatibility), NativeMML (i.e. MathML) and SVG.\n# The default value is: HTML-CSS.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_FORMAT         = HTML-CSS\n\n# When MathJax is enabled you need to specify the location relative to the HTML\n# output directory using the MATHJAX_RELPATH option. The destination directory\n# should contain the MathJax.js script. For instance, if the mathjax directory\n# is located at the same level as the HTML output directory, then\n# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax\n# Content Delivery Network so you can quickly see the result without installing\n# MathJax. However, it is strongly recommended to install a local copy of\n# MathJax from http://www.mathjax.org before deployment.\n# The default value is: http://cdn.mathjax.org/mathjax/latest.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest\n\n# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax\n# extension names that should be enabled during MathJax rendering. For example\n# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_EXTENSIONS     =\n\n# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces\n# of code that will be used on startup of the MathJax code. See the MathJax site\n# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an\n# example see the documentation.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_CODEFILE       =\n\n# When the SEARCHENGINE tag is enabled doxygen will generate a search box for\n# the HTML output. The underlying search engine uses javascript and DHTML and\n# should work on any modern browser. Note that when using HTML help\n# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)\n# there is already a search function so this one should typically be disabled.\n# For large projects the javascript based search engine can be slow, then\n# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to\n# search using the keyboard; to jump to the search box use <access key> + S\n# (what the <access key> is depends on the OS and browser, but it is typically\n# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down\n# key> to jump into the search results window, the results can be navigated\n# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel\n# the search. The filter options can be selected when the cursor is inside the\n# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>\n# to select a filter and <Enter> or <escape> to activate or cancel the filter\n# option.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nSEARCHENGINE           = YES\n\n# When the SERVER_BASED_SEARCH tag is enabled the search engine will be\n# implemented using a web server instead of a web client using Javascript. There\n# are two flavours of web server based searching depending on the\n# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for\n# searching and an index file used by the script. When EXTERNAL_SEARCH is\n# enabled the indexing and searching needs to be provided by external tools. See\n# the section \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSERVER_BASED_SEARCH    = NO\n\n# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP\n# script for searching. Instead the search results are written to an XML file\n# which needs to be processed by an external indexer. Doxygen will invoke an\n# external search engine pointed to by the SEARCHENGINE_URL option to obtain the\n# search results.\n#\n# Doxygen ships with an example indexer ( doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: http://xapian.org/).\n#\n# See the section \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH        = NO\n\n# The SEARCHENGINE_URL should point to a search engine hosted by a web server\n# which will return the search results when EXTERNAL_SEARCH is enabled.\n#\n# Doxygen ships with an example indexer ( doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: http://xapian.org/). See the section \"External Indexing and\n# Searching\" for details.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHENGINE_URL       =\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed\n# search data is written to a file for indexing by an external tool. With the\n# SEARCHDATA_FILE tag the name of this file can be specified.\n# The default file is: searchdata.xml.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHDATA_FILE        = searchdata.xml\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the\n# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is\n# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple\n# projects and redirect the results back to the right project.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH_ID     =\n\n# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen\n# projects other than the one defined by this configuration file, but that are\n# all added to the same external search index. Each project needs to have a\n# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of\n# to a relative location where the documentation can be found. The format is:\n# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTRA_SEARCH_MAPPINGS  =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the LaTeX output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.\n# The default value is: YES.\n\nGENERATE_LATEX         = NO\n\n# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_OUTPUT           = latex\n\n# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be\n# invoked.\n#\n# Note that when enabling USE_PDFLATEX this option is only used for generating\n# bitmaps for formulas in the HTML output, but not in the Makefile that is\n# written to the output directory.\n# The default file is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_CMD_NAME         = latex\n\n# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate\n# index for LaTeX.\n# The default file is: makeindex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nMAKEINDEX_CMD_NAME     = makeindex\n\n# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nCOMPACT_LATEX          = NO\n\n# The PAPER_TYPE tag can be used to set the paper type that is used by the\n# printer.\n# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x\n# 14 inches) and executive (7.25 x 10.5 inches).\n# The default value is: a4.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPAPER_TYPE             = a4\n\n# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names\n# that should be included in the LaTeX output. To get the times font for\n# instance you can specify\n# EXTRA_PACKAGES=times\n# If left blank no extra packages will be included.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nEXTRA_PACKAGES         =\n\n# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the\n# generated LaTeX document. The header should contain everything until the first\n# chapter. If it is left blank doxygen will generate a standard header. See\n# section \"Doxygen usage\" for information on how to let doxygen write the\n# default header to a separate file.\n#\n# Note: Only use a user-defined header if you know what you are doing! The\n# following commands have a special meaning inside the header: $title,\n# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will\n# replace them by respectively the title of the page, the current date and time,\n# only the current date, the version number of doxygen, the project name (see\n# PROJECT_NAME), or the project number (see PROJECT_NUMBER).\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HEADER           =\n\n# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the\n# generated LaTeX document. The footer should contain everything after the last\n# chapter. If it is left blank doxygen will generate a standard footer.\n#\n# Note: Only use a user-defined footer if you know what you are doing!\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_FOOTER           =\n\n# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the LATEX_OUTPUT output\n# directory. Note that the files will be copied as-is; there are no commands or\n# markers available.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_FILES      =\n\n# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is\n# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will\n# contain links (just like the HTML output) instead of page references. This\n# makes the output suitable for online browsing using a PDF viewer.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPDF_HYPERLINKS         = YES\n\n# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate\n# the PDF file directly from the LaTeX files. Set this option to YES to get a\n# higher quality PDF documentation.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nUSE_PDFLATEX           = YES\n\n# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode\n# command to the generated LaTeX files. This will instruct LaTeX to keep running\n# if errors occur, instead of asking the user for help. This option is also used\n# when generating formulas in HTML.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BATCHMODE        = NO\n\n# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the\n# index chapters (such as File Index, Compound Index, etc.) in the output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HIDE_INDICES     = NO\n\n# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source\n# code with syntax highlighting in the LaTeX output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_SOURCE_CODE      = NO\n\n# The LATEX_BIB_STYLE tag can be used to specify the style to use for the\n# bibliography, e.g. plainnat, or ieeetr. See\n# http://en.wikipedia.org/wiki/BibTeX and \\cite for more info.\n# The default value is: plain.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BIB_STYLE        = plain\n\n#---------------------------------------------------------------------------\n# Configuration options related to the RTF output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The\n# RTF output is optimized for Word 97 and may not look too pretty with other RTF\n# readers/editors.\n# The default value is: NO.\n\nGENERATE_RTF           = NO\n\n# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: rtf.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_OUTPUT             = rtf\n\n# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nCOMPACT_RTF            = NO\n\n# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will\n# contain hyperlink fields. The RTF file will contain links (just like the HTML\n# output) instead of page references. This makes the output suitable for online\n# browsing using Word or some other Word compatible readers that support those\n# fields.\n#\n# Note: WordPad (write) and others do not support links.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_HYPERLINKS         = NO\n\n# Load stylesheet definitions from file. Syntax is similar to doxygen's config\n# file, i.e. a series of assignments. You only have to provide replacements,\n# missing definitions are set to their default value.\n#\n# See also section \"Doxygen usage\" for information on how to generate the\n# default style sheet that doxygen normally uses.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_STYLESHEET_FILE    =\n\n# Set optional variables used in the generation of an RTF document. Syntax is\n# similar to doxygen's config file. A template extensions file can be generated\n# using doxygen -e rtf extensionFile.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_EXTENSIONS_FILE    =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the man page output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for\n# classes and files.\n# The default value is: NO.\n\nGENERATE_MAN           = NO\n\n# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it. A directory man3 will be created inside the directory specified by\n# MAN_OUTPUT.\n# The default directory is: man.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_OUTPUT             = man\n\n# The MAN_EXTENSION tag determines the extension that is added to the generated\n# man pages. In case the manual section does not start with a number, the number\n# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is\n# optional.\n# The default value is: .3.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_EXTENSION          = .3\n\n# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it\n# will generate one additional man file for each entity documented in the real\n# man page(s). These additional files only source the real man page, but without\n# them the man command would be unable to find the correct page.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_LINKS              = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the XML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that\n# captures the structure of the code including all documentation.\n# The default value is: NO.\n\nGENERATE_XML           = NO\n\n# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: xml.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_OUTPUT             = xml\n\n# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a\n# validating XML parser to check the syntax of the XML files.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_SCHEMA             =\n\n# The XML_DTD tag can be used to specify a XML DTD, which can be used by a\n# validating XML parser to check the syntax of the XML files.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_DTD                =\n\n# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program\n# listings (including syntax highlighting and cross-referencing information) to\n# the XML output. Note that enabling this will significantly increase the size\n# of the XML output.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_PROGRAMLISTING     = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the DOCBOOK output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files\n# that can be used to generate PDF.\n# The default value is: NO.\n\nGENERATE_DOCBOOK       = NO\n\n# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.\n# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in\n# front of it.\n# The default directory is: docbook.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_OUTPUT         = docbook\n\n#---------------------------------------------------------------------------\n# Configuration options for the AutoGen Definitions output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen\n# Definitions (see http://autogen.sf.net) file that captures the structure of\n# the code including all documentation. Note that this feature is still\n# experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_AUTOGEN_DEF   = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the Perl module output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module\n# file that captures the structure of the code including all documentation.\n#\n# Note that this feature is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_PERLMOD       = NO\n\n# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary\n# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI\n# output from the Perl module output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_LATEX          = NO\n\n# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely\n# formatted so it can be parsed by a human reader. This is useful if you want to\n# understand what is going on. On the other hand, if this tag is set to NO the\n# size of the Perl module output will be much smaller and Perl will parse it\n# just the same.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_PRETTY         = YES\n\n# The names of the make variables in the generated doxyrules.make file are\n# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful\n# so different doxyrules.make files included by the same Makefile don't\n# overwrite each other's variables.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_MAKEVAR_PREFIX =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the preprocessor\n#---------------------------------------------------------------------------\n\n# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all\n# C-preprocessor directives found in the sources and include files.\n# The default value is: YES.\n\nENABLE_PREPROCESSING   = YES\n\n# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names\n# in the source code. If set to NO only conditional compilation will be\n# performed. Macro expansion can be done in a controlled way by setting\n# EXPAND_ONLY_PREDEF to YES.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nMACRO_EXPANSION        = NO\n\n# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then\n# the macro expansion is limited to the macros specified with the PREDEFINED and\n# EXPAND_AS_DEFINED tags.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_ONLY_PREDEF     = NO\n\n# If the SEARCH_INCLUDES tag is set to YES the includes files in the\n# INCLUDE_PATH will be searched if a #include is found.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSEARCH_INCLUDES        = YES\n\n# The INCLUDE_PATH tag can be used to specify one or more directories that\n# contain include files that are not input files but should be processed by the\n# preprocessor.\n# This tag requires that the tag SEARCH_INCLUDES is set to YES.\n\nINCLUDE_PATH           =\n\n# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard\n# patterns (like *.h and *.hpp) to filter out the header-files in the\n# directories. If left blank, the patterns specified with FILE_PATTERNS will be\n# used.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nINCLUDE_FILE_PATTERNS  =\n\n# The PREDEFINED tag can be used to specify one or more macro names that are\n# defined before the preprocessor is started (similar to the -D option of e.g.\n# gcc). The argument of the tag is a list of macros of the form: name or\n# name=definition (no spaces). If the definition and the \"=\" are omitted, \"=1\"\n# is assumed. To prevent a macro definition from being undefined via #undef or\n# recursively expanded use the := operator instead of the = operator.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nPREDEFINED             =\n\n# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this\n# tag can be used to specify a list of macro names that should be expanded. The\n# macro definition that is found in the sources will be used. Use the PREDEFINED\n# tag if you want to use a different macro definition that overrules the\n# definition found in the source code.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_AS_DEFINED      =\n\n# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will\n# remove all refrences to function-like macros that are alone on a line, have an\n# all uppercase name, and do not end with a semicolon. Such function macros are\n# typically used for boiler-plate code, and will confuse the parser if not\n# removed.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSKIP_FUNCTION_MACROS   = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to external references\n#---------------------------------------------------------------------------\n\n# The TAGFILES tag can be used to specify one or more tag files. For each tag\n# file the location of the external documentation should be added. The format of\n# a tag file without this location is as follows:\n# TAGFILES = file1 file2 ...\n# Adding location for the tag files is done as follows:\n# TAGFILES = file1=loc1 \"file2 = loc2\" ...\n# where loc1 and loc2 can be relative or absolute paths or URLs. See the\n# section \"Linking to external documentation\" for more information about the use\n# of tag files.\n# Note: Each tag file must have an unique name (where the name does NOT include\n# the path). If a tag file is not located in the directory in which doxygen is\n# run, you must also specify the path to the tagfile here.\n\nTAGFILES               =\n\n# When a file name is specified after GENERATE_TAGFILE, doxygen will create a\n# tag file that is based on the input files it reads. See section \"Linking to\n# external documentation\" for more information about the usage of tag files.\n\nGENERATE_TAGFILE       =\n\n# If the ALLEXTERNALS tag is set to YES all external class will be listed in the\n# class index. If set to NO only the inherited external classes will be listed.\n# The default value is: NO.\n\nALLEXTERNALS           = NO\n\n# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in\n# the modules index. If set to NO, only the current project's groups will be\n# listed.\n# The default value is: YES.\n\nEXTERNAL_GROUPS        = YES\n\n# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in\n# the related pages index. If set to NO, only the current project's pages will\n# be listed.\n# The default value is: YES.\n\nEXTERNAL_PAGES         = YES\n\n# The PERL_PATH should be the absolute path and name of the perl script\n# interpreter (i.e. the result of 'which perl').\n# The default file (with absolute path) is: /usr/bin/perl.\n\nPERL_PATH              = /usr/bin/perl\n\n#---------------------------------------------------------------------------\n# Configuration options related to the dot tool\n#---------------------------------------------------------------------------\n\n# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram\n# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to\n# NO turns the diagrams off. Note that this option also works with HAVE_DOT\n# disabled, but it is recommended to install and use dot, since it yields more\n# powerful graphs.\n# The default value is: YES.\n\nCLASS_DIAGRAMS         = YES\n\n# You can define message sequence charts within doxygen comments using the \\msc\n# command. Doxygen will then run the mscgen tool (see:\n# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the\n# documentation. The MSCGEN_PATH tag allows you to specify the directory where\n# the mscgen tool resides. If left empty the tool is assumed to be found in the\n# default search path.\n\nMSCGEN_PATH            =\n\n# You can include diagrams made with dia in doxygen documentation. Doxygen will\n# then run dia to produce the diagram and insert it in the documentation. The\n# DIA_PATH tag allows you to specify the directory where the dia binary resides.\n# If left empty dia is assumed to be found in the default search path.\n\nDIA_PATH               =\n\n# If set to YES, the inheritance and collaboration graphs will hide inheritance\n# and usage relations if the target is undocumented or is not a class.\n# The default value is: YES.\n\nHIDE_UNDOC_RELATIONS   = YES\n\n# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n# available from the path. This tool is part of Graphviz (see:\n# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent\n# Bell Labs. The other options in this section have no effect if this option is\n# set to NO\n# The default value is: NO.\n\nHAVE_DOT               = NO\n\n# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed\n# to run in parallel. When set to 0 doxygen will base this on the number of\n# processors available in the system. You can set it explicitly to a value\n# larger than 0 to get control over the balance between CPU load and processing\n# speed.\n# Minimum value: 0, maximum value: 32, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_NUM_THREADS        = 0\n\n# When you want a differently looking font n the dot files that doxygen\n# generates you can specify the font name using DOT_FONTNAME. You need to make\n# sure dot is able to find the font, which can be done by putting it in a\n# standard location or by setting the DOTFONTPATH environment variable or by\n# setting DOT_FONTPATH to the directory containing the font.\n# The default value is: Helvetica.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTNAME           = Helvetica\n\n# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of\n# dot graphs.\n# Minimum value: 4, maximum value: 24, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTSIZE           = 10\n\n# By default doxygen will tell dot to use the default font as specified with\n# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set\n# the path where dot can find it using this tag.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTPATH           =\n\n# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for\n# each documented class showing the direct and indirect inheritance relations.\n# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCLASS_GRAPH            = YES\n\n# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a\n# graph for each documented class showing the direct and indirect implementation\n# dependencies (inheritance, containment, and class references variables) of the\n# class with other documented classes.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCOLLABORATION_GRAPH    = YES\n\n# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for\n# groups, showing the direct groups dependencies.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGROUP_GRAPHS           = YES\n\n# If the UML_LOOK tag is set to YES doxygen will generate inheritance and\n# collaboration diagrams in a style similar to the OMG's Unified Modeling\n# Language.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LOOK               = NO\n\n# If the UML_LOOK tag is enabled, the fields and methods are shown inside the\n# class node. If there are many fields or methods and many nodes the graph may\n# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the\n# number of items for each type to make the size more manageable. Set this to 0\n# for no limit. Note that the threshold may be exceeded by 50% before the limit\n# is enforced. So when you set the threshold to 10, up to 15 fields may appear,\n# but if the number exceeds 15, the total amount of fields shown is limited to\n# 10.\n# Minimum value: 0, maximum value: 100, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LIMIT_NUM_FIELDS   = 10\n\n# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and\n# collaboration graphs will show the relations between templates and their\n# instances.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nTEMPLATE_RELATIONS     = NO\n\n# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to\n# YES then doxygen will generate a graph for each documented file showing the\n# direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDE_GRAPH          = YES\n\n# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are\n# set to YES then doxygen will generate a graph for each documented file showing\n# the direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDED_BY_GRAPH      = YES\n\n# If the CALL_GRAPH tag is set to YES then doxygen will generate a call\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable call graphs for selected\n# functions only using the \\callgraph command.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALL_GRAPH             = NO\n\n# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable caller graphs for selected\n# functions only using the \\callergraph command.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALLER_GRAPH           = NO\n\n# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical\n# hierarchy of all classes instead of a textual one.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGRAPHICAL_HIERARCHY    = YES\n\n# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the\n# dependencies a directory has on other directories in a graphical way. The\n# dependency relations are determined by the #include relations between the\n# files in the directories.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDIRECTORY_GRAPH        = YES\n\n# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images\n# generated by dot.\n# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order\n# to make the SVG files visible in IE 9+ (other browsers do not have this\n# requirement).\n# Possible values are: png, jpg, gif and svg.\n# The default value is: png.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_IMAGE_FORMAT       = png\n\n# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to\n# enable generation of interactive SVG images that allow zooming and panning.\n#\n# Note that this requires a modern browser other than Internet Explorer. Tested\n# and working are Firefox, Chrome, Safari, and Opera.\n# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make\n# the SVG files visible. Older versions of IE do not have SVG support.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINTERACTIVE_SVG        = NO\n\n# The DOT_PATH tag can be used to specify the path where the dot tool can be\n# found. If left blank, it is assumed the dot tool can be found in the path.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_PATH               =\n\n# The DOTFILE_DIRS tag can be used to specify one or more directories that\n# contain dot files that are included in the documentation (see the \\dotfile\n# command).\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOTFILE_DIRS           =\n\n# The MSCFILE_DIRS tag can be used to specify one or more directories that\n# contain msc files that are included in the documentation (see the \\mscfile\n# command).\n\nMSCFILE_DIRS           =\n\n# The DIAFILE_DIRS tag can be used to specify one or more directories that\n# contain dia files that are included in the documentation (see the \\diafile\n# command).\n\nDIAFILE_DIRS           =\n\n# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes\n# that will be shown in the graph. If the number of nodes in a graph becomes\n# larger than this value, doxygen will truncate the graph, which is visualized\n# by representing a node as a red box. Note that doxygen if the number of direct\n# children of the root node in a graph is already larger than\n# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that\n# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n# Minimum value: 0, maximum value: 10000, default value: 50.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_GRAPH_MAX_NODES    = 50\n\n# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs\n# generated by dot. A depth value of 3 means that only nodes reachable from the\n# root by following a path via at most 3 edges will be shown. Nodes that lay\n# further from the root node will be omitted. Note that setting this option to 1\n# or 2 may greatly reduce the computation time needed for large code bases. Also\n# note that the size of a graph can be further restricted by\n# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n# Minimum value: 0, maximum value: 1000, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nMAX_DOT_GRAPH_DEPTH    = 0\n\n# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent\n# background. This is disabled by default, because dot on Windows does not seem\n# to support this out of the box.\n#\n# Warning: Depending on the platform used, enabling this option may lead to\n# badly anti-aliased labels on the edges of a graph (i.e. they become hard to\n# read).\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_TRANSPARENT        = NO\n\n# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output\n# files in one run (i.e. multiple -o and -T options on the command line). This\n# makes dot run faster, but since only newer versions of dot (>1.8.10) support\n# this, this feature is disabled by default.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_MULTI_TARGETS      = YES\n\n# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page\n# explaining the meaning of the various boxes and arrows in the dot generated\n# graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGENERATE_LEGEND        = YES\n\n# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot\n# files that are used to generate the various graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_CLEANUP            = YES\n"
  },
  {
    "path": "doc/Makefile.am",
    "content": "\nEXTRA_DIST = \\\n    buffer.dox \\\n    cert-key-format.dox \\\n    constants.dox \\\n    example-echo.dox \\\n    mainpage.dox \\\n    noise-certificate.dox \\\n    noise-certificate.proto \\\n    Doxyfile\n"
  },
  {
    "path": "doc/buffer.dox",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/**\n\\file buffer.h\n\\brief Buffer management.\n*/\n\n/**\n * \\defgroup buffer_management Buffer management API\n *\n * This API defines types and macros to help with managing the passing\n * of buffers to the Noise-C library.  NoiseBuffer objects carry their\n * current and maximum sizes around with them wherever they go.  The intention\n * is that applications that use NoiseBuffer are less likely to create a\n * buffer overrun situation because the maximum size is always available\n * for checking and never implicit.\n */\n/**@{*/\n\n/**\n * \\struct NoiseBuffer\n * \\brief Type that defines a region of memory for a data buffer.\n */\n\n/**\n * \\def noise_buffer_init(buffer)\n * \\brief Initializes all fields of a buffer to zero.\n */\n\n/**\n * \\def noise_buffer_set_output(buffer, ptr, len)\n * \\brief Sets a NoiseBuffer object to point to an output memory region.\n *\n * \\param buffer The NoiseBuffer object to set.\n * \\param ptr Pointer to the start of the memory region for the buffer.\n * \\param len Length of the memory region in bytes.\n *\n * The buffer's current size is set to zero and its maximum size is\n * set to \\a len.\n *\n * This macro is intended for initializing a region of memory to\n * receive data that was output by a Noise-C function.  The maximum\n * size indicates how many bytes can be output into the region\n * before overflow occurs.\n */\n\n/**\n * \\def noise_buffer_set_input(buffer, ptr, len)\n * \\brief Sets a NoiseBuffer object to point to an input memory region.\n *\n * \\param buffer The NoiseBuffer object to set.\n * \\param ptr Pointer to the start of the memory region for the buffer.\n * \\param len Length of the memory region in bytes.\n *\n * The buffer's current and maximum size are both set to \\a len.\n *\n * This macro is intended for passing an existing region of memory to a\n * Noise-C function.  It is typically used for input values.\n */\n\n/**\n * \\def noise_buffer_set_inout(buffer, ptr, len, max)\n * \\brief Sets a NoiseBuffer object to point to an input-output memory region.\n *\n * \\param buffer The NoiseBuffer object to set.\n * \\param ptr Pointer to the start of the memory region for the buffer.\n * \\param len Length of the memory region in bytes on input.\n * \\param max Maximum length of the memory region in bytes.\n *\n * This function is intended for use when transforming a region of memory;\n * for example to encrypt or decrypt it.  The original size is \\a len\n * and during transformation the region can grow in size to no more\n * than \\a max.\n */\n\n/**@}*/\n"
  },
  {
    "path": "doc/cert-key-format.dox",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/**\n\\file cert-key-format.dox\n\\page cert_key_format Certificate and private key format\n\n\\tableofcontents\n\nThis document describes certificate and private key formats that\nare proposed for use in implementations of Noise.\n\nThe certificate format is represented on the wire using\n<a href=\"https://developers.google.com/protocol-buffers/\">Protocol Buffers</a>\nor \"protobufs\" for short.  The full protocol description is contained\nin the \\ref noise_certificate_proto \"noise-certificate.proto\" file\nin the Noise-C distribution.\n\n\\section cert_examples Certificate format examples\n\nThe following is an example of a certificate for \"Jane Smith\" that has been\nsigned by \"Trent Peoples\".  To make things easier, we will use a simplified\ntext syntax for describing the contents of a protobuf message.  The data is\nactually encoded in binary on the wire using the standard\n<a href=\"https://developers.google.com/protocol-buffers/docs/encoding\">Protocol\nBuffers Encoding</a>.\n\n\\code\nCertificate {\n    version: 1\n    subject: SubjectInfo {\n        id: \"jane.smith@example.com\"\n        name: \"Jane Smith\"\n        role: \"foo-chat-user\"\n        keys: [\n            PublicKeyInfo {\n                algorithm: \"25519\"\n                key: \"0xf14a2dedf6e1dd879a3af47900eedf17ae56868a7849a370ca732a571ef19e0f\"\n            }\n            PublicKeyInfo {\n                algorithm: \"448\"\n                key: \"0xd414a46bed6231540306818bdab08d8b06a28d98d0bfca47bcea1faf1aca78d8aabc7d7c2073779bd84cf0950ae10247975266267eebb1c8\"\n            }\n        ]\n    }\n    signatures: [\n        Signature {\n            id: \"tpeoples@example.org\"\n            name: \"Trent Peoples\"\n            signing_key: PublicKeyInfo {\n                algorithm: \"Ed25519\"\n                key: \"0x0fdde4a7a7cc91ec509a74bd5f2369ac768a14bb6388ceb2e1710a4b85bfe001\"\n            }\n            hash_algorithm: \"BLAKE2b\"\n            extra_signed_info: ExtraSignedInfo {\n                nonce: \"0xa2bf177b31bd60ee0e8e00097d88e48e\"\n                valid_from: \"2016-03-15T00:00:00Z\"\n                valid_to: \"2026-03-15T23:59:59Z\"\n            }\n            signature: \"0x40fa37936793009750ca45e9ef1eb246eaaded93ddd356e7120e0dc171cfa51ff26b7d7a95ba9498d717bff6b9e5d5eeb0a4bbdbf7bcd8c5c4b617da36a68ed9\"\n        }\n    ]\n}\n\\endcode\n\nHere, Jane has declared that her Curve25519 and Curve448 Diffie-Hellman keys\nwill be used in the \"foo-chat-user\" role.  Trent then accepted that role,\nhashed the certificate data with \"BLAKE2b\", and added his signature using the\n\"Ed25519\" algorithm.\n\nThe signature covers the contents of the \"subject\" and \"extra_signed_info\"\nfields, represented in the standard\n<a href=\"https://developers.google.com/protocol-buffers/docs/encoding\">Protocol\nBuffers Encoding</a>.  The encoding MUST be \"canonical\" in that all integer\nvalues, field tag numbers, and field lengths are represented using the\nminimum number of bytes for the value, and the fields are listed strictly\nin order of field tag number.\n\nMultiple signature blocks can be included from multiple signers:\n\n\\code\nsignatures: [\n    Signature {\n        id: \"tpeoples@example.org\"\n        name: \"Trent Peoples\"\n        signing_key: PublicKeyInfo {\n            algorithm: \"Ed25519\"\n            key: \"0x0fdde4a7a7cc91ec509a74bd5f2369ac768a14bb6388ceb2e1710a4b85bfe001\"\n        }\n        hash_algorithm: \"BLAKE2b\"\n        extra_signed_info: ExtraSignedInfo {\n            nonce: \"0xa2bf177b31bd60ee0e8e00097d88e48e\"\n            valid_from: \"2016-03-15T00:00:00Z\"\n            valid_to: \"2026-03-15T23:59:59Z\"\n        }\n        signature: \"0x40fa37936793009750ca45e9ef1eb246eaaded93ddd356e7120e0dc171cfa51ff26b7d7a95ba9498d717bff6b9e5d5eeb0a4bbdbf7bcd8c5c4b617da36a68ed9\"\n    }\n    Signature {\n        id: \"mary.sue@example.com\"\n        name: \"Mary Sue\"\n        signing_key: PublicKeyInfo {\n            algorithm: \"Ed25519\"\n            key: \"0x8e15998d97f9b43150f05d1b895f5272a2ff1453dbf40ee4ea90df81147db5c3\"\n        }\n        hash_algorithm: \"SHA512\"\n        extra_signed_info: ExtraSignedInfo {\n            nonce: \"0x024e95d2a060df2be5e1fbdfe8e31c58\"\n            valid_from: \"2015-05-17T00:00:00Z\"\n            valid_to: \"2025-05-17T23:59:59Z\"\n        }\n        signature: \"0x833243ed18ac609880446c1ea147f6322db98ef9d2eaba30ece46bf7cabe50cd822fbe369f4c9c6bd8a5a5f400fff732f1a29c4113e12cb23138733ca880126d\"\n    }\n]\n\\endcode\n\nEach signature is independent, covering the \"subject\" information and\ncontinuing with the \"extra_signed_info\" details for the specific signer.\nIn the above example, Mary's signature does not include the details\nfrom Trent.  The certificate would be equally valid with Mary's signature\nlisted first.\n\nBecause the signatures are independent, new signatures can be added to\nthe end of the certificate at any time.  Or old signatures can be removed\nfrom the certificate at any time.  Any remaining signatures will remain\nvalid as they only vouch for Jane's identity, not the identity of\nthe other signers.\n\nThis approach also allows certificates to be trimmed when they are sent\nin Noise packets.  If the client is communicating with a server that\ntrusts Trent as a certificate authority, then there is no need to send\nthe signature block for Mary.  Certificates may also be trimmed to\nhide the identity of additional signers from remote parties that do not\nneed to know about those signers.\n\n\\note Signatures provide additional information that may help bind a key\nto an identity for specific use cases, but signatures are not necessary\nfor secure communication to occur.  Protocols should keep this in mind\nwhen using Noise certificates.  The lack of a signature does not imply\nthat the user is untrustworthy.  It only implies that the user has not\nfound anyone yet who they trust to sign their certificate.  Other\nstrategies such as \"Trust On First Use\" can be used to manage certificates\nthat lack signatures.\n\n\\section cert_format Certificate format details\n\nThe format details below are specified in the\n<a href=\"https://developers.google.com/protocol-buffers/docs/proto3\">proto3</a>\nlanguage.\n\n\\subsection cert_overall_format Top level of certificates and certificate chains\n\nThe top level of a certificate contains a version number, information about\nthe subject, and any optional signatures:\n\n\\dontinclude noise-certificate.proto\n\\skip message Certificate\n\\until }\n\nThe version number MUST be 1 for this version of the format.\n\nIn all of the definitions here, field tags 1 to 15 are intended for use\nby this format description (or future versions of it).  Field tags 16\nand higher are available for private use extensions, although this shouldn't\nbe necessary because the \"meta\" field described later provides a standard\nway to add extensions.\n\nCertificate chains are a list of one or more certificates:\n\n\\dontinclude noise-certificate.proto\n\\skip message CertificateChain\n\\until }\n\nThe field tag number on the certificates in a chain is deliberately set to 8,\nwhich is different than any of the field tags in \"Certificate\".  This allows\napplications to quickly determine if the supplied data is a single certificate\nor a certificate chain.\n\nWhen a chain of certificates is given, the first is assumed to be the subject\nwith the remainder of the certificates intended to provide additional\ninformation to verify the subject.\n\n\\subsection cert_subject Subject information\n\n\\dontinclude noise-certificate.proto\n\\skip message SubjectInfo\n\\until }\n\n<tt>id</tt> - The identity of the subject, formatted as \"foo@domain\"\nand encoded in UTF-8.  The <tt>Id</tt> may look like an e-mail address\nbut it doesn't have to be.  It only needs to be unique in the context\nof the larger Noise protocol.\n\n<tt>name</tt> - The name of the subject for the certificate.  This string\nis intended to be human-readable and MUST be encoded in UTF-8.  If the\n<tt>name</tt> is not present, <tt>id</tt> can be displayed to the human user\ninstead.\n\nBoth <tt>id</tt> and <tt>name</tt> are OPTIONAL.  If neither are present,\nthen the subject is identified by their public key fingerprint.  This option\nis provided to protect the identity of anonymous users.  A pseudonym could\nbe used instead, but pseudonym use is not required.\n\n<tt>role</tt> - The role that the subject's keys are intended to be used for.\nThere are no predefined roles yet and the field can be omitted.  The role\nmay be an application name; e.g. \"foo-chat\", or a sub-role within an\napplication; e.g. \"foo-chat-user\" and \"foo-chat-server\".\n\n<tt>keys</tt> - List of public keys for the subject.\n\n\\dontinclude noise-certificate.proto\n\\skip message PublicKeyInfo\n\\until }\n\n<tt>meta</tt> - Extra meta information about the subject as a list of\nfreeform name/value pairs:\n\n\\dontinclude noise-certificate.proto\n\\skip message MetaInfo\n\\until }\n\nMetaInfo blocks may be used to add extra information that is of interest\nto an application.  For example, \"Foo-Nickname\" may convey the nickname\nof a user for the \"foo-chat\" application.  For privacy reasons, any meta\ninformation that may identify the user MUST be OPTIONAL.  Applications\nSHOULD use meta names that are obviously unique to that application to\navoid conflict with other applications.\n\n\\subsection cert_signature Signature blocks\n\n\\dontinclude noise-certificate.proto\n\\skip message Signature\n\\until }\n\nThe <tt>id</tt> and <tt>name</tt> fields have the same format and meaning\nas for subject information blocks.  In this case they identify the signer.\nBoth fields can be omitted to hide the identity of the signer.\n\nThe <tt>signing_key</tt> field specifies the algorithm name and public key\nthat was used to sign the certificate.\n\nThe <tt>hash_algorithm</tt> indicates the algorithm that was used to\nhash the subject information and <tt>extra_signed_info</tt>.  It should be\none of <tt>BLAKE2s</tt>, <tt>BLAKE2b</tt>, <tt>SHA256</tt>, or\n<tt>SHA512</tt>.  <tt>BLAKE2b</tt> or <tt>SHA512</tt> is recommended\nto ensure signature longevity.\n\nThe <tt>extra_signed_info</tt> field contains information that is signed\nalong with the subject information:\n\n\\dontinclude noise-certificate.proto\n\\skip message ExtraSignedInfo\n\\until }\n\nThe <tt>nonce</tt> is an extra pseudorandom value added by the signer,\nwhich ensures that multiple signatures for the same subject from\nthe same signer will be different.  The value should be considered\nopaque.  It is recommended that it consist of at least 128 bits\nof pseudorandom data.  This field SHOULD be included.  It MAY be omitted\nfor anonymous users to avoid the watermarking problems described under\n\\ref cert_other \"Other issues\" below.  The <tt>valid_from</tt> field SHOULD\nbe included in this case to provide a fallback nonce that is different\nbetween signatures.\n\nThe <tt>valid_from</tt> and <tt>valid_to</tt> OPTIONAL fields indicate\nthe starting and ending times for the validity of the signature.\nNote: This is the validity of the signature, not of the certificate.\nThe signer is not saying \"this key is valid for this period\" but\nrather \"I do not vouch for this certificate outside this time period\".\nThe subject information may remain valid for much longer.  The format MUST\ncomply with <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO 8601</a>\nas profiled in <a href=\"https://tools.ietf.org/html/rfc3339\">RFC 3339</a>.\n\nThe <tt>signature</tt> field MUST be the last line in the <tt>Signature</tt>\nblock, and contains the actual signature produced with the <tt>signing_key</tt>\nand <tt>hash_algorithm</tt>.\n\nIf there were any existing <tt>Signature</tt> blocks in the\ncertificate to be signed, they are ignored when calculating the hash.\nThe new signature block is inserted at the end of the certificate.\n\n\\subsection cert_other Other issues\n\nAny strings that are read from a certificate and presented to a human\nuser should be preprocessed to remove or transform control characters or\nother data that may be problematic for the output device.  The security\nconsiderations from <a href=\"https://tools.ietf.org/html/rfc3629\">RFC 3629</a>\nshould be kept in mind to ensure that all strings are strict UTF-8.\n\nThe <tt>nonce</tt> value and implementation-specific meta fields could be\nused to watermark users who otherwise wish to remain anonymous.  Once a\ncertificate is signed, the subject will need to import the signature into\ntheir key ring.  At this point the subject can see if any extra fields\nwere inserted that concern them and reject the signature.\n\nThe <tt>nonce</tt> field is opaque and non-obvious but highly recommended\nto deal with duplicate signatures for the same subject key.  The <tt>nonce</tt>\nfield MAY be omitted by a signer from certificates if they wish to provide\nsome assurance to anonymous users that they have not watermarked the\nsignature.  The <tt>valid_from</tt> field is used as a fallback nonce\nfor this case.\n\nAnonymous users can choose to reject signatures that include a\n<tt>nonce</tt>.  They should also carefully inspect the <tt>valid_from</tt>\nand <tt>valid_to</tt> timestamps.  Odd date or time values might provide\nanother opportunity to include watermarking bits.\n\nThe main protection against this is disclosure.  If it was discovered\nthat well-known signing authorities were watermarking certificates,\naffected users can remove the offending signatures and seek new signers.\n\nSigners may require some kind of proof that the subject is in possession\nof the relevant key before adding a signature.  For Diffie-Hellman keys,\nthe Noise protocol itself provides handshake patterns that can prove key\npossession.\n\nA hypothetical certificate issuing protocol should check that the static\npublic key for the session matches that in the supplied certificate.\nThis does become more complex if the subject has multiple encryption keys\nor signing keys.  Multiple requests may be necessary to prove ownership\nof the additional keys.\n\n\\section key_format Encrypted private key format\n\nThe private key information is similar to the subject information from the\ncertificate format:\n\n\\dontinclude noise-certificate.proto\n\\skip message PrivateKey\n\\until }\n\\skip message PrivateKeyInfo\n\\until }\n\nThe format of \"PrivateKey\" and \"PrivateKeyInfo\" are identical to\n\"SubjectInfo\" and \"PublicKeyInfo\", which may allow applications to\nshare the format handling code between the two use cases if they so wish.\n\nThe private key information is encrypted to protect it inside an\n\"EncryptedPrivateKey\" wrapper:\n\n\\dontinclude noise-certificate.proto\n\\skip message EncryptedPrivateKey\n\\until }\n\nFor example:\n\n\\code\nEncryptedPrivateKey {\n    version: 1\n    algorithm: \"ChaChaPoly_BLAKE2b_PBKDF2\"\n    salt: \"0x1621bb322ca96658eb6172d01031845f\"\n    iterations: 50000\n    encrypted_data: \"0x...\"\n}\n\\endcode\n\nThe <tt>version</tt> must be 1 for this version of the encrypted\nprivate key format.\n\nThe <tt>algorithm</tt> indicates the cipher, hash, and KDF schemes that\nare used to protect the private key.  Any Noise cipher or hash algorithm\nsupported by the application can be used, although \"ChaChaPoly_BLAKE2b_PBKDF2\"\nis recommended for minimum interoperability.\n\nThe only KDF algorithm that is defined at present is PBKDF2 from\n<a href=\"https://www.ietf.org/rfc/rfc2898.txt\">RFC 2898</a>.  The\n<tt>salt</tt> and <tt>iterations</tt> fields are two of the parameters\nto PBKDF2 (the other being the passphrase).\n\nOther KDF algorithms may be defined in the future.  The <tt>salt</tt>\nand <tt>iterations</tt> fields can be repurposed to contain whatever\nparameters those KDF algorithms require.\n\nAs an example, the algorithm identifier \"ChaChaPoly_BLAKE2b_PBKDF2\" is\nimplemented as follows.  PBKDF2 is used with BLAKE2b to generate an\nencryption key and nonce for ChaChaPoly.  The first 32 bytes of the PBKDF2\noutput are used as the encryption key.  The next 8 bytes of the PBKDF2 output\nare interpreted as a big-endian 64-bit value and used as the nonce.\nThe entirety of the private key details are encrypted in a single request,\nwhich limits the size to 65535 bytes including the MAC.\n\n\\note The nonce value 2^64 - 1 (0xFFFFFFFFFFFFFFFF) is reserved by\nrevision 30 of the Noise specification.  If the PBKDF2 hashing process\ngenerates such a nonce, then the implementation should generate a new\nsalt and hash the passphrase again.  This situation is highly unlikely.\n\nThe <tt>salt</tt> SHOULD be at least 16 bytes in length, and MAY be longer\nat the implementation's discretion.  The unsigned 32-bit <tt>iteration</tt>\ncount should be large enough to make dictionary attacks on the private key\nfile time-consuming on current hardware.\n\nEncrypted private keys can be a hassle for servers and other systems\nthat run unattended.  Such systems may need to use a static passphrase,\neven if only the empty passphrase.\n\nThe field tag numbers on \"EncryptedPrivateKey\" are deliberately different\nthan those for \"Certificate\" and \"CertificateChain\" so that an application\ncan easily determine what type of data it is processing.  Applications may\nuse this to cross-check that a private key is not accidentally sent\nover the wire as a certificate.\n\n\\section fingerprints Public key fingerprints\n\nWhen displaying a public key to a human user, the public key SHOULD\nbe hashed with SHA256 with the first 16 bytes of the value formatted\nin hexadecimal, separated by colons.  For example:\n\n\\code\n34:da:01:7b:07:e1:a0:0d:64:14:be:e9:af:cf:db:7b\n\\endcode\n\nFingerprints MAY be calculated with other hash algorithms or MAY\ninclude more than 16 bytes.  However, SHA256 with truncation is\nRECOMMENDED to improve interoperability of fingerprints between\nimplementations.\n\n*/\n"
  },
  {
    "path": "doc/constants.dox",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/**\n\\file constants.h\n\\brief Constants for algorithm identifiers, limit values, etc\n*/\n\n/**\n * \\def NOISE_ID(ch, num)\n * \\brief Builds an algorithm identifier for the library.\n *\n * \\param ch ASCII character that names the algorithm category;\n * e.g. 'C' for ciphers, 'P' for handshake patterns, 'E' for errors, etc.\n * \\param num Code for the specific identifier, 0 to 255.  The value 0 is\n * reserved for category values.\n *\n * \\return 16-bit integer value for the algorithm identifier.\n *\n * This macro was deliberately designed to output a 16-bit identifier\n * so that identifiers would fit in an \"int\" on 8-bit and 16-bit\n * embedded systems.\n */\n\n/**\n * \\defgroup cipher_id Cipher algorithm identifiers\n */\n/**@{*/\n\n/**\n * \\def NOISE_CIPHER_NONE\n * \\brief Cipher identifier that indicates \"no cipher\".\n */\n\n/**\n * \\def NOISE_CIPHER_CATEGORY\n * \\brief Category for cipher algorithms.\n *\n * Intended for use with noise_name_to_id() and noise_id_to_name().\n */\n\n/**\n * \\def NOISE_CIPHER_CHACHAPOLY\n * \\brief Cipher identifier for \"ChaChaPoly\".\n */\n\n/**\n * \\def NOISE_CIPHER_AESGCM\n * \\brief Cipher identifier for \"AESGCM\".\n */\n\n/**@}*/\n\n/**\n * \\defgroup hash_id Hash algorithm identifiers\n */\n/**@{*/\n\n/**\n * \\def NOISE_HASH_NONE\n * \\brief Hash identifier that indicates \"no hash\".\n */\n\n/**\n * \\def NOISE_HASH_CATEGORY\n * \\brief Category for hash algorithms.\n *\n * Intended for use with noise_name_to_id() and noise_id_to_name().\n */\n\n/**\n * \\def NOISE_HASH_BLAKE2s\n * \\brief Hash identifier for \"BLAKE2s\".\n */\n\n/**\n * \\def NOISE_HASH_BLAKE2b\n * \\brief Hash identifier for \"BLAKE2b\".\n */\n\n/**\n * \\def NOISE_HASH_SHA256\n * \\brief Hash identifier for \"SHA256\".\n */\n\n/**\n * \\def NOISE_HASH_SHA512\n * \\brief Hash identifier for \"SHA512\".\n */\n\n/**@}*/\n\n/**\n * \\defgroup dh_id Diffie-Hellman algorithm identifiers\n */\n/**@{*/\n\n/**\n * \\def NOISE_DH_NONE\n * \\brief Diffie-Hellman identifier that indicates \"no DH\".\n */\n\n/**\n * \\def NOISE_DH_CATEGORY\n * \\brief Category for Diffie-Hellman algorithms.\n *\n * Intended for use with noise_name_to_id() and noise_id_to_name().\n */\n\n/**\n * \\def NOISE_DH_CURVE25519\n * \\brief Diffie-Hellman identifier for \"25519\".\n */\n\n/**\n * \\def NOISE_DH_CURVE448\n * \\brief Diffie-Hellman identifier for \"448\".\n */\n\n/**\n * \\def NOISE_DH_NEWHOPE\n * \\brief Diffie-Hellman identifier for \"NewHope\" (post-quantum,\n * ephemeral key exchanges only).\n */\n\n/**@}*/\n\n/**\n * \\defgroup pattern_id Handshake pattern identifiers\n */\n/**@{*/\n\n/**\n * \\def NOISE_PATTERN_NONE\n * \\brief Handshake pattern identifier that indicates \"no pattern\".\n */\n\n/**\n * \\def NOISE_PATTERN_CATEGORY\n * \\brief Category for handshake patterns.\n *\n * Intended for use with noise_name_to_id() and noise_id_to_name().\n */\n\n/**\n * \\def NOISE_PATTERN_N\n * \\brief Handshake pattern identifier for \"N\".\n */\n\n/**\n * \\def NOISE_PATTERN_X\n * \\brief Handshake pattern identifier for \"X\".\n */\n\n/**\n * \\def NOISE_PATTERN_K\n * \\brief Handshake pattern identifier for \"K\".\n */\n\n/**\n * \\def NOISE_PATTERN_NN\n * \\brief Handshake pattern identifier for \"NN\".\n */\n\n/**\n * \\def NOISE_PATTERN_NK\n * \\brief Handshake pattern identifier for \"NK\".\n */\n\n/**\n * \\def NOISE_PATTERN_NX\n * \\brief Handshake pattern identifier for \"NX\".\n */\n\n/**\n * \\def NOISE_PATTERN_XN\n * \\brief Handshake pattern identifier for \"XN\".\n */\n\n/**\n * \\def NOISE_PATTERN_XK\n * \\brief Handshake pattern identifier for \"XK\".\n */\n\n/**\n * \\def NOISE_PATTERN_XX\n * \\brief Handshake pattern identifier for \"XX\".\n */\n\n/**\n * \\def NOISE_PATTERN_KN\n * \\brief Handshake pattern identifier for \"KN\".\n */\n\n/**\n * \\def NOISE_PATTERN_KK\n * \\brief Handshake pattern identifier for \"KK\".\n */\n\n/**\n * \\def NOISE_PATTERN_KX\n * \\brief Handshake pattern identifier for \"KX\".\n */\n\n/**\n * \\def NOISE_PATTERN_IN\n * \\brief Handshake pattern identifier for \"IN\".\n */\n\n/**\n * \\def NOISE_PATTERN_IK\n * \\brief Handshake pattern identifier for \"IK\".\n */\n\n/**\n * \\def NOISE_PATTERN_IX\n * \\brief Handshake pattern identifier for \"IX\".\n */\n\n/**\n * \\def NOISE_PATTERN_XX_FALLBACK\n * \\brief Handshake pattern identifier for \"XXfallback\".\n */\n\n/**\n * \\def NOISE_PATTERN_X_NOIDH\n * \\brief Handshake pattern identifier for \"Xnoidh\".\n */\n\n/**\n * \\def NOISE_PATTERN_NX_NOIDH\n * \\brief Handshake pattern identifier for \"NXnoidh\".\n */\n\n/**\n * \\def NOISE_PATTERN_XX_NOIDH\n * \\brief Handshake pattern identifier for \"XXnoidh\".\n */\n\n/**\n * \\def NOISE_PATTERN_KX_NOIDH\n * \\brief Handshake pattern identifier for \"KXnoidh\".\n */\n\n/**\n * \\def NOISE_PATTERN_IK_NOIDH\n * \\brief Handshake pattern identifier for \"IKnoidh\".\n */\n\n/**\n * \\def NOISE_PATTERN_IX_NOIDH\n * \\brief Handshake pattern identifier for \"IXnoidh\".\n */\n\n/**@}*/\n\n/**\n * \\defgroup prefix_id Protocol prefix identifiers\n */\n/**@{*/\n\n/**\n * \\def NOISE_PREFIX_NONE\n * \\brief Protocol prefix identifier that indicates \"no prefix\".\n */\n\n/**\n * \\def NOISE_PREFIX_CATEGORY\n * \\brief Category for protocol prefixes.\n *\n * Intended for use with noise_name_to_id() and noise_id_to_name().\n */\n\n/**\n * \\def NOISE_PREFIX_STANDARD\n * \\brief Protocol prefix identifier for \"Noise\".\n */\n\n/**\n * \\def NOISE_PREFIX_PSK\n * \\brief Protocol prefix identifier for \"NoisePSK\".\n */\n\n/**@}*/\n\n/**\n * \\defgroup signature_id Signature algorithm identifiers\n */\n/**@{*/\n\n/**\n * \\def NOISE_SIGN_NONE\n * \\brief Signature algorithm identifier that indicates \"no algorithm\".\n */\n\n/**\n * \\def NOISE_SIGN_CATEGORY\n * \\brief Category for signature algorithms.\n *\n * Intended for use with noise_name_to_id() and noise_id_to_name().\n */\n\n/**\n * \\def NOISE_SIGN_ED25519\n * \\brief Signature algorithm identifier for \"Ed25519\".\n */\n\n/**@}*/\n\n/**\n * \\defgroup roles Initiator/responder role codes\n */\n/**@{*/\n\n/**\n * \\def NOISE_ROLE_INITIATOR\n * \\brief This end of the communications is the initiator.\n */\n\n/**\n * \\def NOISE_ROLE_RESPONDER\n * \\brief This end of the communications is the responder.\n */\n\n/**@}*/\n\n/**\n * \\defgroup actions HandshakeState action codes\n */\n/**@{*/\n\n/**\n * \\def NOISE_ACTION_NONE\n * \\brief No action is required of the application yet because the\n * handshake has not started.\n */\n\n/**\n * \\def NOISE_ACTION_WRITE_MESSAGE\n * \\brief The HandshakeState expects the application to write the\n * next message payload for the handshake.\n */\n\n/**\n * \\def NOISE_ACTION_READ_MESSAGE\n * \\brief The HandshakeState expects the application to read the\n * next message payload from the handshake.\n */\n\n/**\n * \\def NOISE_ACTION_FAILED\n * \\brief The HandshakeState has flagged that the handshake has failed\n * due to some kind of error.\n */\n\n/**\n * \\def NOISE_ACTION_SPLIT\n * \\brief The HandshakeState has flagged that the handshake is over and\n * that the application is expected to call noise_handshake_split() and\n * begin data session communications.\n */\n\n/**\n * \\def NOISE_ACTION_COMPLETE\n * \\brief The HandshakeState has flagged that the handshake is over and\n * and that noise_handshake_split() has been called to begin data session\n * communications.\n */\n\n/**@}*/\n\n/**\n * \\defgroup padding_modes Padding modes\n */\n/**@{*/\n\n/**\n * \\def NOISE_PADDING_ZERO\n * \\brief Pads messages with zero bytes.\n */\n\n/**\n * \\def NOISE_PADDING_RANDOM\n * \\brief Pads messages with random bytes.\n */\n\n/**@}*/\n\n/**\n * \\defgroup fingerprint_types Fingerprint types\n */\n/**@{*/\n\n/**\n * \\def NOISE_FINGERPRINT_BASIC\n * \\brief Fingerprint format is the hexadecimal encoding of the first\n * 16 bytes of the SHA256 hash of the public key.\n */\n\n/**\n * \\def NOISE_FINGERPRINT_FULL\n * \\brief Fingerprint format is the hexadecimal encoding of the entire\n * 32 bytes of the SHA256 hash of the public key.\n */\n\n/**\n * \\def NOISE_MAX_FINGERPRINT_LEN\n * \\brief Recommended maximum size for buffers to be passed to\n * noise_format_fingerprint(), noise_dhstate_format_fingerprint(), etc.\n */\n\n/**@}*/\n\n/**\n * \\defgroup errors Error codes\n */\n/**@{*/\n\n/**\n * \\def NOISE_ERROR_NONE\n * \\brief Success, no error.\n */\n\n/**\n * \\def NOISE_ERROR_NO_MEMORY\n * \\brief Insufficient memory to complete the operation.\n */\n\n/**\n * \\def NOISE_ERROR_UNKNOWN_ID\n * \\brief Algorithm identifier is unknown.\n */\n\n/**\n * \\def NOISE_ERROR_UNKNOWN_NAME\n * \\brief Algorithm name is unknown.\n */\n\n/**\n * \\def NOISE_ERROR_MAC_FAILURE\n * \\brief MAC check failed on an incoming packet.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_LENGTH\n * \\brief Invalid length specified for a key, packet, etc.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_PARAM\n * \\brief Invalid parameter to function; e.g. a NULL value.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_STATE\n * \\brief Operation cannot be performed in the current state.\n *\n * For example, attempting to encrypt or decrypt with a CipherState\n * before setting the key.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_NONCE\n * \\brief Invalid nonce value.\n *\n * Typically this is reported when the 64-bit nonce value wraps around.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_PRIVATE_KEY\n * \\brief Invalid private key value.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_PUBLIC_KEY\n * \\brief Invalid public key value.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_FORMAT\n * \\brief Invalid format for packet or key file.\n */\n\n/**\n * \\def NOISE_ERROR_INVALID_SIGNATURE\n * \\brief Invalid digital signature; does not verify.\n */\n\n/**\n * \\def NOISE_ERROR_REMOTE_KEY_REQUIRED\n * \\brief A remote static public key is required for the selected protocol,\n * but one was not supplied.\n */\n\n/**\n * \\def NOISE_ERROR_LOCAL_KEY_REQUIRED\n * \\brief A local keypair is required for the selected protocol, but one\n * was not supplied.\n */\n\n/**\n * \\def NOISE_ERROR_PSK_REQUIRED\n * \\brief A pre shared key is required for the selected protocol, but one\n * was not supplied.\n */\n\n/**\n * \\def NOISE_ERROR_NOT_APPLICABLE\n * \\brief An option was supplied that was not applicable to the\n * selected protocol.\n *\n * For example, a pre shared key was supplied to a protocol that does not\n * use pre shared keys.\n */\n\n/**\n * \\def NOISE_ERROR_SYSTEM\n * \\brief System error, with more information in errno.\n *\n * This code is intended for reporting errors from the underlying\n * operating system, with more information about the specific error\n * in the standard errno variable.\n */\n\n/**@}*/\n\n/**\n * \\def NOISE_MAX_PAYLOAD_LEN\n * \\brief Maximum payload length for Noise packets.\n *\n * \\note Specific protocol instantiations may enforce a smaller limit.\n */\n\n/**\n * \\def NOISE_MAX_PROTOCOL_NAME\n * \\brief Maximum length of a protocol name string.\n */\n"
  },
  {
    "path": "doc/example-echo.dox",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/**\n\\file example-echo.dox\n\\page example_echo Using Noise-C: Client/Server Echo Example\n\n\\tableofcontents\n\nThis page describes how to use Noise-C to create a simple client/server\necho system.  This example uses the same wire protocol as the echo example from\n<a href=\"https://github.com/centromere/cacophony#example-code\">cacophony</a>,\nfor testing interoperability between Noise implementations.\n\nThe source code for the example is under the <tt>examples/echo</tt>\ndirectory in the Noise-C repository.  There are three programs that\nmake up the example: <tt>echo-client</tt>, <tt>echo-server</tt>,\nand <tt>echo-keygen</tt>.  Here we describe the main points of the\nclient code to demonstrate how to use Noise-C.  The server side is similar.\n\n\\section example_echo_client Creating a Noise-C client application\n\n\\subsection example_echo_create_handshake Creating the HandshakeState\n\nThe first step in using a HandshakeState is to create it with either the\nnoise_handshakestate_new_by_name() or noise_handshakestate_new_by_id()\nfunction:\n\n\\dontinclude echo-client.c\n\\skip NoiseHandshakeState *handshake;\n\\until NoiseHandshakeState\n\\skip noise_handshakestate_new_by_name\n\\until }\n\nHere the \"protocol\" variable is the name of the Noise protocol,\nsuch as \"Noise_XX_25519_ChaChaPoly_BLAKE2s\".  Because we are writing a\nclient, the role is \\ref NOISE_ROLE_INITIATOR.  The server side uses\n\\ref NOISE_ROLE_RESPONDER instead.\n\nIf an error occurs, the noise_perror() function can be used to print a\nsimple message to the standard error output in the same way as the\nperror() function in C.  If you want to report errors through some\nmeans other than the standard error output, you can use noise_strerror()\nto obtain the error string directly.\n\nFor the rest of this page we will elide the calls to noise_perror() to\nmake it easier to understand the code snippets.  Error handling is very\nimportant.  Noise sessions can fail for any number of reasons and\nforgetting to check an error return could lead the application to\ncontinue operating when it should stop.\n\nWhen you no longer need the HandshakeState, the memory should be returned\nto the system with noise_handshakestate_free():\n\n\\dontinclude echo-client.c\n\\skip no longer need\n\\skip noise_handshakestate_free\n\\until noise_handshakestate_free\n\n\\subsection example_echo_setting_keys Setting keys\n\nAfter the HandshakeState object has been created, the next step is to\nspecify the prologue, pre shared key, and any public or private keys\nthat are needed for the handshake.  We start with the prologue:\n\n\\code\nerr = noise_handshakestate_set_prologue(handshake, prologue, prologue_len);\n\\endcode\n\nWe can also set the pre shared key (PSK) value:\n\n\\code\nerr = noise_handshakestate_set_pre_shared_key(handshake, psk, sizeof(psk));\n\\endcode\n\nNext is the local client private key.  The function\nnoise_handshakestate_needs_local_keypair() tells us if the handshake\nrequires a local keypair.\n\nOnce we know if we need a keypair, we obtain the local Diffie-Hellman\nkey object using noise_handshakestate_get_local_keypair_dh() and set\nthe key with noise_dhstate_set_keypair_private():\n\n\\code\nif (noise_handshakestate_needs_local_keypair(handshake)) {\n    dh = noise_handshakestate_get_local_keypair_dh(handshake);\n    key_len = noise_dhstate_get_private_key_length(dh);\n    if (!echo_load_private_key(client_private_key, key, key_len))\n        return 0;\n    err = noise_dhstate_set_keypair_private(dh, key, key_len);\n    ...\n}\n\\endcode\n\nIn this case we are using a private key only.  Noise-C internally\nderives the public key from the private key.  If we had both keys,\nthen noise_dhstate_set_keypair() can be used to set both.\n\nThe public key for the remote server is set in a similar fashion:\n\n\\code\nif (noise_handshakestate_needs_remote_public_key(handshake)) {\n    dh = noise_handshakestate_get_remote_public_key_dh(handshake);\n    key_len = noise_dhstate_get_public_key_length(dh);\n    if (!echo_load_public_key(server_public_key, key, key_len))\n        return 0;\n    err = noise_dhstate_set_public_key(dh, key, key_len);\n    ...\n}\n\\endcode\n\n\\subsection example_echo_run_handshake Running the handshake phase\n\nAt this point we have a fully configured HandshakeState object.\nThe next step is to start the handshake:\n\n\\code\nerr = noise_handshakestate_start(handshake);\n\\endcode\n\nIf there are any missing keys, then this function will fail with an error.\n\nThe handshake runs until there are no more packets to be processed.\nEach step of the way, the noise_handshakestate_get_action() function\ntells the application what needs to be done next.  The two most\nimportant actions are \\ref NOISE_ACTION_WRITE_MESSAGE and\n\\ref NOISE_ACTION_READ_MESSAGE, which indicates whether the application\nshould write or read the next handshake message.  A typical handshake\nprocessing loop looks like this:\n\n\\code\nfor (;;) {\n    int action = noise_handshakestate_get_action(handshake);\n    if (action == NOISE_ACTION_WRITE_MESSAGE) {\n        ...\n    } else if (action == NOISE_ACTION_READ_MESSAGE) {\n        ...\n    } else {\n        break;\n    }\n}\n\\endcode\n\nWhen the application receives \\ref NOISE_ACTION_WRITE_MESSAGE,\nit should format the next handshake payload and call\nnoise_handshakestate_write_message() to prepare it for transmission.\nThe application then transmits what it was given over the transport.\n\nWhen the application receives \\ref NOISE_ACTION_READ_MESSAGE,\nit should wait for an incoming message from the transport and pass\nit to noise_handshakestate_read_message() to process it and recover\nthe payload.\n\nThis process continues until the action is either \\ref NOISE_ACTION_FAILED\nor \\ref NOISE_ACTION_SPLIT.  An action of \\ref NOISE_ACTION_SPLIT\nindicates that the handshake has completed successfully and the\napplication should move onto the data transport phase.\n\n\\subsection example_echo_run_transport Running the data transport phase\n\nOnce the handshake completes successfully, we can \"split\" the HandshakeState\ninto two CipherState objects, one for sending and the other for receiving:\n\n\\code\nerr = noise_handshakestate_split(handshake, &send_cipher, &recv_cipher);\n\\endcode\n\nIf the remote side provided its public key during the handshake,\nthen noise_handshakestate_get_remote_public_key_dh() and\nnoise_dhstate_get_public_key() can be used to retrieve it at this point.\n\nThe HandshakeState is now no longer required and we can discard it:\n\n\\code\nnoise_handshakestate_free(handshake);\n\\endcode\n\nFrom now on, whenever the application has data to send, it calls\nnoise_cipherstate_encrypt() or noise_cipherstate_encrypt_with_ad()\non the sending CipherState, and then writes the resulting packet to\nthe transport.\n\nWhenever the application receives an incoming packet, it calls\nnoise_cipherstate_decrypt() or noise_cipherstate_decrypt_with_ad()\non the receiving CipherState to decrypt it, and then processes the\ncontents if the decryption succeeded.\n\nThis process continues until the connection is terminated or an\nerror occurs.  The final step is to clean up the two CipherState objects:\n\n\\code\nnoise_cipherstate_free(send_cipher);\nnoise_cipherstate_free(recv_cipher);\n\\endcode\n\n\\section example_echo_using Using the echo example\n\nThis section describes how to use the echo example: how to generate keys,\nhow to start an echo server running, and how to connect to it using an\necho client.\n\n\\subsection example_echo_keygen Generating keys\n\nThe echo example uses a very simple key format.  Private key files are\nbinary data containing the 32 or 56 bytes of the private key, for Curve25519\nand Curve448 respectively.  Public key files contain the base64 encoding of\nthe 32 or 56 byte public key values.\n\nThe <tt>echo-keygen</tt> example can be used to generate new keys or you can\nuse the keys from cacophony.  To generate a new key for Curve25519, you would\ninvoke the key generator as follows:\n\n\\code\necho-keygen 25519 client_key_25519 client_key_25519.pub\n\\endcode\n\nThe arguments are the curve type (\"25519\" or \"448\"), the name of the private\nkey file, and the name of the public key file.\n\nThe server needs a full set of keys, so here's how to generate them all:\n\n\\code\necho-keygen 25519 client_key_25519 client_key_25519.pub\necho-keygen 25519 server_key_25519 server_key_25519.pub\necho-keygen 448 client_key_448 client_key_448.pub\necho-keygen 448 server_key_448 server_key_448.pub\n\\endcode\n\n\\subsection example_echo_start_server Starting an echo server\n\nA new echo server can be started with the following command:\n\n\\code\necho-server --key-dir=../keys 7000\n\\endcode\n\nThe server will look in <tt>key-dir</tt> for the keys that were generated\nearlier.  If <tt>--key-dir</tt> is omitted, it defaults to the current\ndirectory.\n\nThe pre-shared key value is loaded from the \"psk\" file in the key\ndirectory.  It is assumed to be a 32 byte value encoded in base64.\nPre-shared keys are only used if the client selects them.\n\nThe final argument is the port number for the server to bind to.\n\n\\subsection example_echo_start_client Running the echo client\n\nTo use the client, specify the Noise protocol name, server hostname,\nand server port number on the command-line:\n\n\\code\necho-client Noise_NN_25519_AESGCM_SHA256 hostname 7000\n\\endcode\n\nIn this case we are using the \"NN\" pattern which does not require any\nadditional local or remote static keys.  If keys are required, they can\nbe provided via options:\n\n\\code\necho-client --client-private-key=client_key_448 \\\n            --server-public-key=server_key_448.pub \\\n            Noise_KK_448_ChaChaPoly_BLAKE2b hostname 7000\n\necho-client --client-private-key=client_key_448 \\\n            --server-public-key=server_key_448.pub \\\n            --psk=pskfile \\\n            NoisePSK_KK_448_ChaChaPoly_BLAKE2b hostname 7000\n\\endcode\n\nAfter performing the handshake, the client reads lines of text from its\nstandard input and sends them to the server.  After each line, the client\nwill wait for a packet from the server and then will write its contents to\nstandard output prefixed by `Received`:\n\n\\code\nHello!\nReceived: Hello!\nWhat day is it?\nReceived: What day is it?\n\\endcode\n\nIf the keys supplied to the client do not match those used by the server,\nthe connection will abort with a \"MAC failure\".\n\nThe <tt>--padding</tt> option can be supplied to cause the client to pad\nall outgoing messages to a uniform size with random data.  The padding will\nbe stripped when the echo returns from the server.\n\nThe <tt>--verbose</tt> or <tt>-v</tt> option can be supplied to dump the\nverbose packet contents that are transmitted or received.\nThe <tt>--fixed-ephemeral</tt> or <tt>-f</tt> option will force the client\nor the server to use a fixed ephemeral key instead of the usual random\nephemeral key.  These options can help diagnose interoperability issues\nbetween different implementations of the echo protocol.\n\n*/\n"
  },
  {
    "path": "doc/mainpage.dox",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/**\n\\file mainpage.dox\n\\mainpage\n\\tableofcontents\n\nNoise-C is a plain C implementation of the\n<a href=\"http://noiseprotocol.org/\">Noise Protocol</a>, intended as a\nreference implementation.  It can also be referred to as \"Noisy\",\nwhich is what you get when you say \"Noise-C\" too fast.  The code is\ndistributed under the terms of the MIT license, with the code available from\n<a href=\"https://github.com/rweather/noise-c\">github</a>.\n\n\\note This project is still a work in progress.  There is still a lot of\ncleaning up and example writing to do.\n\nThe initial target is GNU/Linux systems, because that's what I have,\nbut contributions are definitely welcome to make the code work\non other platforms.  Desktop systems will be targeted first and\nthen embedded systems.  \"Make It Work And Then Make It Work Better\"\nis my motto.\n\n\\section algorithms Supported Patterns and Algorithms\n\n\\li Specification Level: Revision 30\n\\li Prefixes: Noise and NoisePSK\n\\li Patterns: N, X, K, NN, NK, NX, XN, XK, XX, KN, KK, KX, IN, IK, IX,\nXXfallback, Xnoidh, NXnoidh, XXnoidh, KXnoidh, IKnoidh, IXnoidh,\nNNhfs, NKhfs, NXhfs, XNhfs, XKhfs, XXhfs, KNhfs, KKhfs, KXhfs, INhfs, IKhfs,\nIXhfs, XXfallback+hfs, NXnoidh+hfs, XXnoidh+hfs, KXnoidh+hfs, IKnoidh+hfs,\nIXnoidh+hfs\n\\li Diffie-Hellman: 25519, 448\n\\li Post-Quantum: NewHope\n\\li Cipher: ChaChaPoly, AESGCM\n\\li Hash: BLAKE2s, BLAKE2b, SHA256, SHA512\n\\li Other: Support for Hybrid Forward Secrecy\n\nNote that the post-quantum \"NewHope\" algorithm only works with the \"NN\"\nhandshake pattern because it does not support long-term static keys.\nFor more information, see the <a href=\"https://github.com/noiseprotocol/noise_wiki/wiki/Post-Quantum-Noise-with-New-Hope\">Post-Quantum Noise with New Hope</a>\npage on the Noise wiki.\n\n\\section major_apis Major API's\n\n\\li \\ref handshakestate \"HandshakeState\"\n\\li \\ref cipherstate \"CipherState\"\n\n\\section supporting_apis Supporting API's\n\n\\li \\ref symmetricstate \"SymmetricState\"\n\\li \\ref hashstate \"HashState\"\n\\li \\ref dhstate \"DHState\"\n\\li \\ref signstate \"SignState\"\n\\li \\ref randstate \"RandState\"\n\\li \\ref keyloader \"Key/certificate loading and saving\"\n\\li \\ref utils \"Utilities\"\n\n\\section other_info Other information\n\n\\li \\ref example_echo \"Using Noise-C: Client/Server Echo Example\"\n\\li \\ref cert_key_format \"Certificate and private key file format\"\n\n\\section dir_structure Directory structure\n\n\\li <tt>include/noise/</tt> - Public API definitions for inclusion\n    into applications.\n\\li <tt>src/protocol/</tt> - Source code for the core Noise-C protocol library.\n\\li <tt>src/protobufs/</tt> - Source code for the Noise-C protobufs library.\n\\li <tt>src/keys/</tt> - Source code for the key and certificate management\n    library.\n\\li <tt>src/crypto/</tt> - Public domain and open source reference\n    implementations of the cryptographic primitives.\n\\li <tt>src/backend/ref/</tt> - Backends for\n    \\ref cipherstate \"CipherState\", \\ref hashstate \"HashState\",\n    \\ref dhstate \"DHState\", and \\ref signstate \"SignState\" that use the\n    reference cryptographic primitives.\n\\li <tt>src/backend/openssl/</tt> - OpenSSL crypto backend\n\\li <tt>src/backend/sodium/</tt> - libsodium crypto backend\n\\li <tt>tools/protoc/</tt> - Source code for the Noise-C protobufs compiler.\n\\li <tt>tools/keytool/</tt> - Command-line key and certificate management tool.\n\\li <tt>tests/unit/</tt> - Unit tests to exercise the library's functionality.\n\\li <tt>tests/vector/</tt> - Public JSON test vectors and test harness for\n    the Noise protocol.\n\\li <tt>tests/vector-gen/</tt> - Generates test vectors in JSON format.\n\\li <tt>tests/performance/</tt> - Performance tests for the cryptographic\n    primitives.\n\\li <tt>examples/</tt> - Source code for examples.\n\\li <tt>doc/</tt> - Overview and example documentation.\n\n\\section building Building\n\nThe library uses autoconf and automake for the Makefile structure.\nYou will need to have these installed to build from the sources in the\ngit repository.  Bison and Flex are also requred to build the\n<tt>noise-protoc</tt> protobuf compiler.\n\nTo build the library under GNU/Linux and run the tests, type the following:\n\n\\code\n$ autoreconf -i\n$ ./configure\n$ make\n$ make check\n\\endcode\n\nThe following parameters can be supplied to <tt>configure</tt> to select\nother crypto back ends:\n\n\\li <tt>--with-libsodium</tt> - Use libsodium to provide crypto primitives,\nfalling back to the reference back end where libsodium does not have an\nimplementation.\n\\li <tt>--with-openssl</tt> - Use the AESGCM implementation from OpenSSL.\n\nBoth options can be combined to get the best of both worlds.\n\n\\section todo TODO\n\nIn no particular order:\n\n\\li Examples and overview documentation.\n\\li Mechanism to encrypt static keypairs with a passphrase.\n\\li Complete the standalone key generation utility for static keypairs.\n\\li Compile-time subsetting of the library for applications that only\n    need a subset of the algorithms, and for platforms with limited memory.\n\nContributions are welcome to help implement any of these.\n\n\\section contact Contact\n\nFor more information on this library, to report bugs, to contribute,\nor to suggest improvements, please contact the author Rhys Weatherley via\n<a href=\"mailto:rhys.weatherley@gmail.com\">e-mail</a>.\n*/\n\n/**\n\\file protocol.h\n\\brief Main header file to include the Noise protocol library definitions\n*/\n"
  },
  {
    "path": "doc/noise-certificate.dox",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/**\n\\file noise-certificate.dox\n\\page noise_certificate_proto noise-certificate.proto\n\n\\include noise-certificate.proto\n\n*/\n"
  },
  {
    "path": "doc/noise-certificate.proto",
    "content": "// This protobuf definition is placed into the public domain.\n//\n// Author: Rhys Weatherley <rhys.weatherley@gmail.com>\n\nsyntax = \"proto3\";\n\npackage Noise;\n\n// The top-level definitions are \"Certificate\", \"CertificateChain\",\n// and \"EncryptedPrivateKey\".  The other definitions support these three.\n\n// Fields with tag numbers 1 to 15 are reserved for use in this format\n// and future versions of this format.  Fields with tag numbers 16 and\n// higher are available for private use extensions, although a \"meta\"\n// block is probably a better approach for extensions.\n\n// A certificate contains a version, information about the subject,\n// and zero of more signatures over the subject information.\n// The version must be 1 for this version of the format.\nmessage Certificate {\n    reserved 4 to 15;\n    uint32 version = 1;\n    SubjectInfo subject = 2;\n    repeated Signature signatures = 3;\n}\n\n// A certificate chain consists of one or more certificates appended\n// one after the other.  The field tag is set to 8 to distinguish it\n// from the fields in Certificate, which allows applications to detect\n// if they are parsing a single certificate or a certificate chain.\n// The first certificate is assumed to be the subject, with the remaining\n// certificates providing additional information for subject verification.\nmessage CertificateChain {\n    reserved 1 to 7, 9 to 15;\n    repeated Certificate certs = 8;\n}\n\n// Information about the subject/owner in a certificate and their public keys.\nmessage SubjectInfo {\n    reserved 6 to 15;\n    string id = 1;\n    string name = 2;\n    string role = 3;\n    repeated PublicKeyInfo keys = 4;\n    repeated MetaInfo meta = 5;\n}\n\n// Information about a single public key.\nmessage PublicKeyInfo {\n    reserved 3 to 15;\n    string algorithm = 1;       // \"25519\", \"448\", \"Ed25519\", etc.\n    bytes key = 2;              // Format depends upon the algorithm.\n}\n\n// Extra meta information in a certificate, for future extensions.\nmessage MetaInfo {\n    reserved 3 to 15;\n    string name = 1;\n    string value = 2;\n}\n\n// Information about a signature on a certificate.\nmessage Signature {\n    reserved 6 to 14;\n    string id = 1;\n    string name = 2;\n    PublicKeyInfo signing_key = 3;\n    string hash_algorithm = 4;\n    ExtraSignedInfo extra_signed_info = 5;\n    bytes signature = 15;\n}\n\n// Extra information that is included by a signer to be signed\n// along with the subject information for the certificate.\nmessage ExtraSignedInfo {\n    reserved 5 to 15;\n    bytes nonce = 1;\n    string valid_from = 2;      // ISO 8601 format timestamp.\n    string valid_to = 3;        // ISO 8601 format timestamp.\n    repeated MetaInfo meta = 4;\n}\n\n// Contents of an encrypted private key file.  The field tag numbers are\n// deliberately different from \"Certificate\" and \"CertificateChain\" to\n// allow the application to detect what type of data it is processing.\nmessage EncryptedPrivateKey {\n    reserved 1 to 9, 14;\n    uint32 version = 10;        // 1 for this version of the format.\n    string algorithm = 11;      // e.g. \"ChaChaPoly_BLAKE2b_PBKDF2\".\n    bytes salt = 12;            // Salt value for input to the KDF.\n    uint32 iterations = 13;     // Iteration count for the KDF.\n    bytes encrypted_data = 15;  // Encrypted version of PrivateKey.\n}\n\n// Information about a subject's private keys.  Note that this is\n// identical in format to \"SubjectInfo\" except that the key values\n// are private keys rather than public keys.\nmessage PrivateKey {\n    reserved 6 to 15;\n    string id = 1;\n    string name = 2;\n    string role = 3;\n    repeated PrivateKeyInfo keys = 4;\n    repeated MetaInfo meta = 5;\n}\n\n// Information about a single private key.\nmessage PrivateKeyInfo {\n    reserved 3 to 15;\n    string algorithm = 1;       // \"25519\", \"448\", \"Ed25519\", etc.\n    bytes key = 2;              // Format depends upon the algorithm.\n}\n"
  },
  {
    "path": "examples/Makefile.am",
    "content": "\nSUBDIRS = echo\n"
  },
  {
    "path": "examples/echo/Makefile.am",
    "content": "\nSUBDIRS = echo-client echo-keygen echo-server\n"
  },
  {
    "path": "include/Makefile.am",
    "content": "\nSUBDIRS = noise\n"
  },
  {
    "path": "include/noise/Makefile.am",
    "content": "\nnoiseincludedir = $(includedir)/noise\nnoiseinclude_HEADERS = \\\n    keys.h \\\n    protocol.h \\\n    protobufs.h\n\nSUBDIRS = . protocol keys\n"
  },
  {
    "path": "include/noise/keys/Makefile.am",
    "content": "\nkeysincludedir = $(includedir)/noise/keys\nkeysinclude_HEADERS = \\\n    certificate.h \\\n    loader.h\n"
  },
  {
    "path": "include/noise/keys/certificate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef __NOISE_CERTIFICATE_H__\n#define __NOISE_CERTIFICATE_H__\n\n#include <noise/protobufs.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct _Noise_Certificate Noise_Certificate;\ntypedef struct _Noise_CertificateChain Noise_CertificateChain;\ntypedef struct _Noise_SubjectInfo Noise_SubjectInfo;\ntypedef struct _Noise_PublicKeyInfo Noise_PublicKeyInfo;\ntypedef struct _Noise_MetaInfo Noise_MetaInfo;\ntypedef struct _Noise_Signature Noise_Signature;\ntypedef struct _Noise_ExtraSignedInfo Noise_ExtraSignedInfo;\ntypedef struct _Noise_EncryptedPrivateKey Noise_EncryptedPrivateKey;\ntypedef struct _Noise_PrivateKey Noise_PrivateKey;\ntypedef struct _Noise_PrivateKeyInfo Noise_PrivateKeyInfo;\n\nint Noise_Certificate_new(Noise_Certificate **obj);\nint Noise_Certificate_free(Noise_Certificate *obj);\nint Noise_Certificate_write(NoiseProtobuf *pbuf, int tag, const Noise_Certificate *obj);\nint Noise_Certificate_read(NoiseProtobuf *pbuf, int tag, Noise_Certificate **obj);\nint Noise_Certificate_clear_version(Noise_Certificate *obj);\nint Noise_Certificate_has_version(const Noise_Certificate *obj);\nuint32_t Noise_Certificate_get_version(const Noise_Certificate *obj);\nint Noise_Certificate_set_version(Noise_Certificate *obj, uint32_t value);\nint Noise_Certificate_clear_subject(Noise_Certificate *obj);\nint Noise_Certificate_has_subject(const Noise_Certificate *obj);\nNoise_SubjectInfo *Noise_Certificate_get_subject(const Noise_Certificate *obj);\nint Noise_Certificate_get_new_subject(Noise_Certificate *obj, Noise_SubjectInfo **value);\nint Noise_Certificate_clear_signatures(Noise_Certificate *obj);\nint Noise_Certificate_has_signatures(const Noise_Certificate *obj);\nsize_t Noise_Certificate_count_signatures(const Noise_Certificate *obj);\nNoise_Signature *Noise_Certificate_get_at_signatures(const Noise_Certificate *obj, size_t index);\nint Noise_Certificate_add_signatures(Noise_Certificate *obj, Noise_Signature **value);\nint Noise_Certificate_insert_signatures(Noise_Certificate *obj, size_t index, Noise_Signature *value);\n\nint Noise_CertificateChain_new(Noise_CertificateChain **obj);\nint Noise_CertificateChain_free(Noise_CertificateChain *obj);\nint Noise_CertificateChain_write(NoiseProtobuf *pbuf, int tag, const Noise_CertificateChain *obj);\nint Noise_CertificateChain_read(NoiseProtobuf *pbuf, int tag, Noise_CertificateChain **obj);\nint Noise_CertificateChain_clear_certs(Noise_CertificateChain *obj);\nint Noise_CertificateChain_has_certs(const Noise_CertificateChain *obj);\nsize_t Noise_CertificateChain_count_certs(const Noise_CertificateChain *obj);\nNoise_Certificate *Noise_CertificateChain_get_at_certs(const Noise_CertificateChain *obj, size_t index);\nint Noise_CertificateChain_add_certs(Noise_CertificateChain *obj, Noise_Certificate **value);\nint Noise_CertificateChain_insert_certs(Noise_CertificateChain *obj, size_t index, Noise_Certificate *value);\n\nint Noise_SubjectInfo_new(Noise_SubjectInfo **obj);\nint Noise_SubjectInfo_free(Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_read(NoiseProtobuf *pbuf, int tag, Noise_SubjectInfo **obj);\nint Noise_SubjectInfo_clear_id(Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_has_id(const Noise_SubjectInfo *obj);\nconst char *Noise_SubjectInfo_get_id(const Noise_SubjectInfo *obj);\nsize_t Noise_SubjectInfo_get_size_id(const Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_set_id(Noise_SubjectInfo *obj, const char *value, size_t size);\nint Noise_SubjectInfo_clear_name(Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_has_name(const Noise_SubjectInfo *obj);\nconst char *Noise_SubjectInfo_get_name(const Noise_SubjectInfo *obj);\nsize_t Noise_SubjectInfo_get_size_name(const Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_set_name(Noise_SubjectInfo *obj, const char *value, size_t size);\nint Noise_SubjectInfo_clear_role(Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_has_role(const Noise_SubjectInfo *obj);\nconst char *Noise_SubjectInfo_get_role(const Noise_SubjectInfo *obj);\nsize_t Noise_SubjectInfo_get_size_role(const Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_set_role(Noise_SubjectInfo *obj, const char *value, size_t size);\nint Noise_SubjectInfo_clear_keys(Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_has_keys(const Noise_SubjectInfo *obj);\nsize_t Noise_SubjectInfo_count_keys(const Noise_SubjectInfo *obj);\nNoise_PublicKeyInfo *Noise_SubjectInfo_get_at_keys(const Noise_SubjectInfo *obj, size_t index);\nint Noise_SubjectInfo_add_keys(Noise_SubjectInfo *obj, Noise_PublicKeyInfo **value);\nint Noise_SubjectInfo_insert_keys(Noise_SubjectInfo *obj, size_t index, Noise_PublicKeyInfo *value);\nint Noise_SubjectInfo_clear_meta(Noise_SubjectInfo *obj);\nint Noise_SubjectInfo_has_meta(const Noise_SubjectInfo *obj);\nsize_t Noise_SubjectInfo_count_meta(const Noise_SubjectInfo *obj);\nNoise_MetaInfo *Noise_SubjectInfo_get_at_meta(const Noise_SubjectInfo *obj, size_t index);\nint Noise_SubjectInfo_add_meta(Noise_SubjectInfo *obj, Noise_MetaInfo **value);\nint Noise_SubjectInfo_insert_meta(Noise_SubjectInfo *obj, size_t index, Noise_MetaInfo *value);\n\nint Noise_PublicKeyInfo_new(Noise_PublicKeyInfo **obj);\nint Noise_PublicKeyInfo_free(Noise_PublicKeyInfo *obj);\nint Noise_PublicKeyInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_PublicKeyInfo *obj);\nint Noise_PublicKeyInfo_read(NoiseProtobuf *pbuf, int tag, Noise_PublicKeyInfo **obj);\nint Noise_PublicKeyInfo_clear_algorithm(Noise_PublicKeyInfo *obj);\nint Noise_PublicKeyInfo_has_algorithm(const Noise_PublicKeyInfo *obj);\nconst char *Noise_PublicKeyInfo_get_algorithm(const Noise_PublicKeyInfo *obj);\nsize_t Noise_PublicKeyInfo_get_size_algorithm(const Noise_PublicKeyInfo *obj);\nint Noise_PublicKeyInfo_set_algorithm(Noise_PublicKeyInfo *obj, const char *value, size_t size);\nint Noise_PublicKeyInfo_clear_key(Noise_PublicKeyInfo *obj);\nint Noise_PublicKeyInfo_has_key(const Noise_PublicKeyInfo *obj);\nconst void *Noise_PublicKeyInfo_get_key(const Noise_PublicKeyInfo *obj);\nsize_t Noise_PublicKeyInfo_get_size_key(const Noise_PublicKeyInfo *obj);\nint Noise_PublicKeyInfo_set_key(Noise_PublicKeyInfo *obj, const void *value, size_t size);\n\nint Noise_MetaInfo_new(Noise_MetaInfo **obj);\nint Noise_MetaInfo_free(Noise_MetaInfo *obj);\nint Noise_MetaInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_MetaInfo *obj);\nint Noise_MetaInfo_read(NoiseProtobuf *pbuf, int tag, Noise_MetaInfo **obj);\nint Noise_MetaInfo_clear_name(Noise_MetaInfo *obj);\nint Noise_MetaInfo_has_name(const Noise_MetaInfo *obj);\nconst char *Noise_MetaInfo_get_name(const Noise_MetaInfo *obj);\nsize_t Noise_MetaInfo_get_size_name(const Noise_MetaInfo *obj);\nint Noise_MetaInfo_set_name(Noise_MetaInfo *obj, const char *value, size_t size);\nint Noise_MetaInfo_clear_value(Noise_MetaInfo *obj);\nint Noise_MetaInfo_has_value(const Noise_MetaInfo *obj);\nconst char *Noise_MetaInfo_get_value(const Noise_MetaInfo *obj);\nsize_t Noise_MetaInfo_get_size_value(const Noise_MetaInfo *obj);\nint Noise_MetaInfo_set_value(Noise_MetaInfo *obj, const char *value, size_t size);\n\nint Noise_Signature_new(Noise_Signature **obj);\nint Noise_Signature_free(Noise_Signature *obj);\nint Noise_Signature_write(NoiseProtobuf *pbuf, int tag, const Noise_Signature *obj);\nint Noise_Signature_read(NoiseProtobuf *pbuf, int tag, Noise_Signature **obj);\nint Noise_Signature_clear_id(Noise_Signature *obj);\nint Noise_Signature_has_id(const Noise_Signature *obj);\nconst char *Noise_Signature_get_id(const Noise_Signature *obj);\nsize_t Noise_Signature_get_size_id(const Noise_Signature *obj);\nint Noise_Signature_set_id(Noise_Signature *obj, const char *value, size_t size);\nint Noise_Signature_clear_name(Noise_Signature *obj);\nint Noise_Signature_has_name(const Noise_Signature *obj);\nconst char *Noise_Signature_get_name(const Noise_Signature *obj);\nsize_t Noise_Signature_get_size_name(const Noise_Signature *obj);\nint Noise_Signature_set_name(Noise_Signature *obj, const char *value, size_t size);\nint Noise_Signature_clear_signing_key(Noise_Signature *obj);\nint Noise_Signature_has_signing_key(const Noise_Signature *obj);\nNoise_PublicKeyInfo *Noise_Signature_get_signing_key(const Noise_Signature *obj);\nint Noise_Signature_get_new_signing_key(Noise_Signature *obj, Noise_PublicKeyInfo **value);\nint Noise_Signature_clear_hash_algorithm(Noise_Signature *obj);\nint Noise_Signature_has_hash_algorithm(const Noise_Signature *obj);\nconst char *Noise_Signature_get_hash_algorithm(const Noise_Signature *obj);\nsize_t Noise_Signature_get_size_hash_algorithm(const Noise_Signature *obj);\nint Noise_Signature_set_hash_algorithm(Noise_Signature *obj, const char *value, size_t size);\nint Noise_Signature_clear_extra_signed_info(Noise_Signature *obj);\nint Noise_Signature_has_extra_signed_info(const Noise_Signature *obj);\nNoise_ExtraSignedInfo *Noise_Signature_get_extra_signed_info(const Noise_Signature *obj);\nint Noise_Signature_get_new_extra_signed_info(Noise_Signature *obj, Noise_ExtraSignedInfo **value);\nint Noise_Signature_clear_signature(Noise_Signature *obj);\nint Noise_Signature_has_signature(const Noise_Signature *obj);\nconst void *Noise_Signature_get_signature(const Noise_Signature *obj);\nsize_t Noise_Signature_get_size_signature(const Noise_Signature *obj);\nint Noise_Signature_set_signature(Noise_Signature *obj, const void *value, size_t size);\n\nint Noise_ExtraSignedInfo_new(Noise_ExtraSignedInfo **obj);\nint Noise_ExtraSignedInfo_free(Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_read(NoiseProtobuf *pbuf, int tag, Noise_ExtraSignedInfo **obj);\nint Noise_ExtraSignedInfo_clear_nonce(Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_has_nonce(const Noise_ExtraSignedInfo *obj);\nconst void *Noise_ExtraSignedInfo_get_nonce(const Noise_ExtraSignedInfo *obj);\nsize_t Noise_ExtraSignedInfo_get_size_nonce(const Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_set_nonce(Noise_ExtraSignedInfo *obj, const void *value, size_t size);\nint Noise_ExtraSignedInfo_clear_valid_from(Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_has_valid_from(const Noise_ExtraSignedInfo *obj);\nconst char *Noise_ExtraSignedInfo_get_valid_from(const Noise_ExtraSignedInfo *obj);\nsize_t Noise_ExtraSignedInfo_get_size_valid_from(const Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_set_valid_from(Noise_ExtraSignedInfo *obj, const char *value, size_t size);\nint Noise_ExtraSignedInfo_clear_valid_to(Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_has_valid_to(const Noise_ExtraSignedInfo *obj);\nconst char *Noise_ExtraSignedInfo_get_valid_to(const Noise_ExtraSignedInfo *obj);\nsize_t Noise_ExtraSignedInfo_get_size_valid_to(const Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_set_valid_to(Noise_ExtraSignedInfo *obj, const char *value, size_t size);\nint Noise_ExtraSignedInfo_clear_meta(Noise_ExtraSignedInfo *obj);\nint Noise_ExtraSignedInfo_has_meta(const Noise_ExtraSignedInfo *obj);\nsize_t Noise_ExtraSignedInfo_count_meta(const Noise_ExtraSignedInfo *obj);\nNoise_MetaInfo *Noise_ExtraSignedInfo_get_at_meta(const Noise_ExtraSignedInfo *obj, size_t index);\nint Noise_ExtraSignedInfo_add_meta(Noise_ExtraSignedInfo *obj, Noise_MetaInfo **value);\nint Noise_ExtraSignedInfo_insert_meta(Noise_ExtraSignedInfo *obj, size_t index, Noise_MetaInfo *value);\n\nint Noise_EncryptedPrivateKey_new(Noise_EncryptedPrivateKey **obj);\nint Noise_EncryptedPrivateKey_free(Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_write(NoiseProtobuf *pbuf, int tag, const Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_read(NoiseProtobuf *pbuf, int tag, Noise_EncryptedPrivateKey **obj);\nint Noise_EncryptedPrivateKey_clear_version(Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_has_version(const Noise_EncryptedPrivateKey *obj);\nuint32_t Noise_EncryptedPrivateKey_get_version(const Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_set_version(Noise_EncryptedPrivateKey *obj, uint32_t value);\nint Noise_EncryptedPrivateKey_clear_algorithm(Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_has_algorithm(const Noise_EncryptedPrivateKey *obj);\nconst char *Noise_EncryptedPrivateKey_get_algorithm(const Noise_EncryptedPrivateKey *obj);\nsize_t Noise_EncryptedPrivateKey_get_size_algorithm(const Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_set_algorithm(Noise_EncryptedPrivateKey *obj, const char *value, size_t size);\nint Noise_EncryptedPrivateKey_clear_salt(Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_has_salt(const Noise_EncryptedPrivateKey *obj);\nconst void *Noise_EncryptedPrivateKey_get_salt(const Noise_EncryptedPrivateKey *obj);\nsize_t Noise_EncryptedPrivateKey_get_size_salt(const Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_set_salt(Noise_EncryptedPrivateKey *obj, const void *value, size_t size);\nint Noise_EncryptedPrivateKey_clear_iterations(Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_has_iterations(const Noise_EncryptedPrivateKey *obj);\nuint32_t Noise_EncryptedPrivateKey_get_iterations(const Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_set_iterations(Noise_EncryptedPrivateKey *obj, uint32_t value);\nint Noise_EncryptedPrivateKey_clear_encrypted_data(Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_has_encrypted_data(const Noise_EncryptedPrivateKey *obj);\nconst void *Noise_EncryptedPrivateKey_get_encrypted_data(const Noise_EncryptedPrivateKey *obj);\nsize_t Noise_EncryptedPrivateKey_get_size_encrypted_data(const Noise_EncryptedPrivateKey *obj);\nint Noise_EncryptedPrivateKey_set_encrypted_data(Noise_EncryptedPrivateKey *obj, const void *value, size_t size);\n\nint Noise_PrivateKey_new(Noise_PrivateKey **obj);\nint Noise_PrivateKey_free(Noise_PrivateKey *obj);\nint Noise_PrivateKey_write(NoiseProtobuf *pbuf, int tag, const Noise_PrivateKey *obj);\nint Noise_PrivateKey_read(NoiseProtobuf *pbuf, int tag, Noise_PrivateKey **obj);\nint Noise_PrivateKey_clear_id(Noise_PrivateKey *obj);\nint Noise_PrivateKey_has_id(const Noise_PrivateKey *obj);\nconst char *Noise_PrivateKey_get_id(const Noise_PrivateKey *obj);\nsize_t Noise_PrivateKey_get_size_id(const Noise_PrivateKey *obj);\nint Noise_PrivateKey_set_id(Noise_PrivateKey *obj, const char *value, size_t size);\nint Noise_PrivateKey_clear_name(Noise_PrivateKey *obj);\nint Noise_PrivateKey_has_name(const Noise_PrivateKey *obj);\nconst char *Noise_PrivateKey_get_name(const Noise_PrivateKey *obj);\nsize_t Noise_PrivateKey_get_size_name(const Noise_PrivateKey *obj);\nint Noise_PrivateKey_set_name(Noise_PrivateKey *obj, const char *value, size_t size);\nint Noise_PrivateKey_clear_role(Noise_PrivateKey *obj);\nint Noise_PrivateKey_has_role(const Noise_PrivateKey *obj);\nconst char *Noise_PrivateKey_get_role(const Noise_PrivateKey *obj);\nsize_t Noise_PrivateKey_get_size_role(const Noise_PrivateKey *obj);\nint Noise_PrivateKey_set_role(Noise_PrivateKey *obj, const char *value, size_t size);\nint Noise_PrivateKey_clear_keys(Noise_PrivateKey *obj);\nint Noise_PrivateKey_has_keys(const Noise_PrivateKey *obj);\nsize_t Noise_PrivateKey_count_keys(const Noise_PrivateKey *obj);\nNoise_PrivateKeyInfo *Noise_PrivateKey_get_at_keys(const Noise_PrivateKey *obj, size_t index);\nint Noise_PrivateKey_add_keys(Noise_PrivateKey *obj, Noise_PrivateKeyInfo **value);\nint Noise_PrivateKey_insert_keys(Noise_PrivateKey *obj, size_t index, Noise_PrivateKeyInfo *value);\nint Noise_PrivateKey_clear_meta(Noise_PrivateKey *obj);\nint Noise_PrivateKey_has_meta(const Noise_PrivateKey *obj);\nsize_t Noise_PrivateKey_count_meta(const Noise_PrivateKey *obj);\nNoise_MetaInfo *Noise_PrivateKey_get_at_meta(const Noise_PrivateKey *obj, size_t index);\nint Noise_PrivateKey_add_meta(Noise_PrivateKey *obj, Noise_MetaInfo **value);\nint Noise_PrivateKey_insert_meta(Noise_PrivateKey *obj, size_t index, Noise_MetaInfo *value);\n\nint Noise_PrivateKeyInfo_new(Noise_PrivateKeyInfo **obj);\nint Noise_PrivateKeyInfo_free(Noise_PrivateKeyInfo *obj);\nint Noise_PrivateKeyInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_PrivateKeyInfo *obj);\nint Noise_PrivateKeyInfo_read(NoiseProtobuf *pbuf, int tag, Noise_PrivateKeyInfo **obj);\nint Noise_PrivateKeyInfo_clear_algorithm(Noise_PrivateKeyInfo *obj);\nint Noise_PrivateKeyInfo_has_algorithm(const Noise_PrivateKeyInfo *obj);\nconst char *Noise_PrivateKeyInfo_get_algorithm(const Noise_PrivateKeyInfo *obj);\nsize_t Noise_PrivateKeyInfo_get_size_algorithm(const Noise_PrivateKeyInfo *obj);\nint Noise_PrivateKeyInfo_set_algorithm(Noise_PrivateKeyInfo *obj, const char *value, size_t size);\nint Noise_PrivateKeyInfo_clear_key(Noise_PrivateKeyInfo *obj);\nint Noise_PrivateKeyInfo_has_key(const Noise_PrivateKeyInfo *obj);\nconst void *Noise_PrivateKeyInfo_get_key(const Noise_PrivateKeyInfo *obj);\nsize_t Noise_PrivateKeyInfo_get_size_key(const Noise_PrivateKeyInfo *obj);\nint Noise_PrivateKeyInfo_set_key(Noise_PrivateKeyInfo *obj, const void *value, size_t size);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/keys/loader.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_KEYS_LOADER_H\n#define NOISE_KEYS_LOADER_H\n\n#include <noise/keys/certificate.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nint noise_load_certificate_from_file\n    (Noise_Certificate **cert, const char *filename);\nint noise_load_certificate_from_buffer\n    (Noise_Certificate **cert, NoiseProtobuf *pbuf);\n\nint noise_load_certificate_chain_from_file\n    (Noise_CertificateChain **chain, const char *filename);\nint noise_load_certificate_chain_from_buffer\n    (Noise_CertificateChain **chain, NoiseProtobuf *pbuf);\n\nint noise_load_private_key_from_file\n    (Noise_PrivateKey **key, const char *filename,\n     const void *passphrase, size_t passphrase_len);\nint noise_load_private_key_from_buffer\n    (Noise_PrivateKey **key, NoiseProtobuf *pbuf,\n     const void *passphrase, size_t passphrase_len);\n\nint noise_save_certificate_to_file\n    (const Noise_Certificate *cert, const char *filename);\nint noise_save_certificate_to_buffer\n    (const Noise_Certificate *cert, NoiseProtobuf *pbuf);\n\nint noise_save_certificate_chain_to_file\n    (const Noise_CertificateChain *chain, const char *filename);\nint noise_save_certificate_chain_to_buffer\n    (const Noise_CertificateChain *chain, NoiseProtobuf *pbuf);\n\nint noise_save_private_key_to_file\n    (const Noise_PrivateKey *key, const char *filename,\n     const void *passphrase, size_t passphrase_len,\n     const char *protect_name);\nint noise_save_private_key_to_buffer\n    (const Noise_PrivateKey *key, NoiseProtobuf *pbuf,\n     const void *passphrase, size_t passphrase_len,\n     const char *protect_name);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/keys.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_KEYS_H\n#define NOISE_KEYS_H\n\n#include <noise/keys/certificate.h>\n#include <noise/keys/loader.h>\n\n#endif\n"
  },
  {
    "path": "include/noise/protobufs.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_PROTOBUFS_H\n#define NOISE_PROTOBUFS_H\n\n#include <noise/protocol/constants.h>\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct\n{\n    uint8_t *data;\n    size_t size;\n    size_t posn;\n    int error;\n\n} NoiseProtobuf;\n\nint noise_protobuf_prepare_input\n    (NoiseProtobuf *pbuf, const uint8_t *data, size_t size);\nint noise_protobuf_prepare_output\n    (NoiseProtobuf *pbuf, uint8_t *data, size_t size);\nint noise_protobuf_prepare_measure(NoiseProtobuf *pbuf, size_t max_size);\n\nint noise_protobuf_finish_input(NoiseProtobuf *pbuf);\nint noise_protobuf_finish_output\n    (NoiseProtobuf *pbuf, uint8_t **data, size_t *size);\nint noise_protobuf_finish_output_shift\n    (NoiseProtobuf *pbuf, uint8_t **data, size_t *size);\nint noise_protobuf_finish_measure(NoiseProtobuf *pbuf, size_t *size);\n\nint noise_protobuf_write_int32(NoiseProtobuf *pbuf, int tag, int32_t value);\nint noise_protobuf_write_uint32(NoiseProtobuf *pbuf, int tag, uint32_t value);\nint noise_protobuf_write_int64(NoiseProtobuf *pbuf, int tag, int64_t value);\nint noise_protobuf_write_uint64(NoiseProtobuf *pbuf, int tag, uint64_t value);\nint noise_protobuf_write_sint32(NoiseProtobuf *pbuf, int tag, int32_t value);\nint noise_protobuf_write_sint64(NoiseProtobuf *pbuf, int tag, int64_t value);\nint noise_protobuf_write_sfixed32(NoiseProtobuf *pbuf, int tag, int32_t value);\nint noise_protobuf_write_fixed32(NoiseProtobuf *pbuf, int tag, uint32_t value);\nint noise_protobuf_write_sfixed64(NoiseProtobuf *pbuf, int tag, int64_t value);\nint noise_protobuf_write_fixed64(NoiseProtobuf *pbuf, int tag, uint64_t value);\nint noise_protobuf_write_float(NoiseProtobuf *pbuf, int tag, float value);\nint noise_protobuf_write_double(NoiseProtobuf *pbuf, int tag, double value);\nint noise_protobuf_write_bool(NoiseProtobuf *pbuf, int tag, int value);\nint noise_protobuf_write_string\n    (NoiseProtobuf *pbuf, int tag, const char *str, size_t size);\nint noise_protobuf_write_bytes\n    (NoiseProtobuf *pbuf, int tag, const void *data, size_t size);\nint noise_protobuf_write_end_element(NoiseProtobuf *pbuf, size_t *end_posn);\nint noise_protobuf_write_start_element\n    (NoiseProtobuf *pbuf, int tag, size_t end_posn);\n\nint noise_protobuf_peek_tag(const NoiseProtobuf *pbuf);\nsize_t noise_protobuf_peek_size(const NoiseProtobuf *pbuf);\nint noise_protobuf_read_int32(NoiseProtobuf *pbuf, int tag, int32_t *value);\nint noise_protobuf_read_uint32(NoiseProtobuf *pbuf, int tag, uint32_t *value);\nint noise_protobuf_read_int64(NoiseProtobuf *pbuf, int tag, int64_t *value);\nint noise_protobuf_read_uint64(NoiseProtobuf *pbuf, int tag, uint64_t *value);\nint noise_protobuf_read_sint32(NoiseProtobuf *pbuf, int tag, int32_t *value);\nint noise_protobuf_read_sint64(NoiseProtobuf *pbuf, int tag, int64_t *value);\nint noise_protobuf_read_sfixed32(NoiseProtobuf *pbuf, int tag, int32_t *value);\nint noise_protobuf_read_fixed32(NoiseProtobuf *pbuf, int tag, uint32_t *value);\nint noise_protobuf_read_sfixed64(NoiseProtobuf *pbuf, int tag, int64_t *value);\nint noise_protobuf_read_fixed64(NoiseProtobuf *pbuf, int tag, uint64_t *value);\nint noise_protobuf_read_float(NoiseProtobuf *pbuf, int tag, float *value);\nint noise_protobuf_read_double(NoiseProtobuf *pbuf, int tag, double *value);\nint noise_protobuf_read_bool(NoiseProtobuf *pbuf, int tag, int *value);\nint noise_protobuf_read_string\n    (NoiseProtobuf *pbuf, int tag, char *str, size_t max_size, size_t *size);\nint noise_protobuf_read_alloc_string\n    (NoiseProtobuf *pbuf, int tag, char **str, size_t max_size, size_t *size);\nint noise_protobuf_read_bytes\n    (NoiseProtobuf *pbuf, int tag, void *data, size_t max_size, size_t *size);\nint noise_protobuf_read_alloc_bytes\n    (NoiseProtobuf *pbuf, int tag, void **data, size_t max_size, size_t *size);\nint noise_protobuf_read_start_element\n    (NoiseProtobuf *pbuf, int tag, size_t *end_posn);\nint noise_protobuf_read_end_element(NoiseProtobuf *pbuf, size_t end_posn);\nint noise_protobuf_read_at_end_element\n    (const NoiseProtobuf *pbuf, size_t end_posn);\nint noise_protobuf_read_stop(NoiseProtobuf *pbuf);\nint noise_protobuf_read_skip(NoiseProtobuf *pbuf);\n\nint noise_protobuf_add_to_array\n    (void **array, size_t *count, size_t *max, const void *value, size_t size);\nint noise_protobuf_add_to_string_array\n    (char ***array, size_t **len_array, size_t *count, size_t *max,\n     const char *value, size_t size);\nint noise_protobuf_add_to_bytes_array\n    (void ***array, size_t **len_array, size_t *count, size_t *max,\n     const void *value, size_t size);\n\nint noise_protobuf_insert_into_array\n    (void **array, size_t *count, size_t *max, size_t index,\n     const void *value, size_t size);\n\nvoid noise_protobuf_free_memory(void *ptr, size_t size);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/Makefile.am",
    "content": "\nprotocolincludedir = $(includedir)/noise/protocol\nprotocolinclude_HEADERS = \\\n    buffer.h \\\n    cipherstate.h \\\n    constants.h \\\n    dhstate.h \\\n    errors.h \\\n    handshakestate.h \\\n    hashstate.h \\\n    names.h \\\n    randstate.h \\\n    signstate.h \\\n    symmetricstate.h \\\n    util.h\n"
  },
  {
    "path": "include/noise/protocol/buffer.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_BUFFER_H\n#define NOISE_BUFFER_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct\n{\n    uint8_t *data;      /**< Points to the data in the buffer */\n    size_t size;        /**< Current size of the data in the buffer */\n    size_t max_size;    /**< Maximum size of the data in the buffer */\n\n} NoiseBuffer;\n\n#define noise_buffer_init(buffer)   \\\n    ((buffer).data = 0, (buffer).size = 0, (buffer).max_size = 0)\n#define noise_buffer_set_output(buffer, ptr, len) \\\n    ((buffer).data = (ptr), (buffer).size = 0, (buffer).max_size = (len))\n#define noise_buffer_set_input(buffer, ptr, len) \\\n    ((buffer).data = (ptr), (buffer).size = (buffer).max_size = (len))\n#define noise_buffer_set_inout(buffer, ptr, len, max) \\\n    ((buffer).data = (ptr), (buffer).size = (len), (buffer).max_size = (max))\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/cipherstate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_CIPHERSTATE_H\n#define NOISE_CIPHERSTATE_H\n\n#include <noise/protocol/buffer.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct NoiseCipherState_s NoiseCipherState;\n\nint noise_cipherstate_new_by_id(NoiseCipherState **state, int id);\nint noise_cipherstate_new_by_name(NoiseCipherState **state, const char *name);\nint noise_cipherstate_free(NoiseCipherState *state);\nint noise_cipherstate_get_cipher_id(const NoiseCipherState *state);\nsize_t noise_cipherstate_get_key_length(const NoiseCipherState *state);\nsize_t noise_cipherstate_get_mac_length(const NoiseCipherState *state);\nint noise_cipherstate_init_key\n    (NoiseCipherState *state, const uint8_t *key, size_t key_len);\nint noise_cipherstate_has_key(const NoiseCipherState *state);\nint noise_cipherstate_encrypt_with_ad\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     NoiseBuffer *buffer);\nint noise_cipherstate_decrypt_with_ad\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     NoiseBuffer *buffer);\nint noise_cipherstate_encrypt(NoiseCipherState *state, NoiseBuffer *buffer);\nint noise_cipherstate_decrypt(NoiseCipherState *state, NoiseBuffer *buffer);\nint noise_cipherstate_set_nonce(NoiseCipherState *state, uint64_t nonce);\nint noise_cipherstate_get_max_key_length(void);\nint noise_cipherstate_get_max_mac_length(void);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/constants.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_CONSTANTS_H\n#define NOISE_CONSTANTS_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/* Build an identifier.  Deliberately designed to fit into a 16-bit\n   integer on 8-bit and 16-bit embedded systems */\n#define NOISE_ID(ch,num)                ((((int)(ch)) << 8) | ((int)(num)))\n\n/* AEAD cipher algorithms */\n#define NOISE_CIPHER_NONE               0\n#define NOISE_CIPHER_CATEGORY           NOISE_ID('C', 0)\n#define NOISE_CIPHER_CHACHAPOLY         NOISE_ID('C', 1)\n#define NOISE_CIPHER_AESGCM             NOISE_ID('C', 2)\n\n/* Hash algorithms */\n#define NOISE_HASH_NONE                 0\n#define NOISE_HASH_CATEGORY             NOISE_ID('H', 0)\n#define NOISE_HASH_BLAKE2s              NOISE_ID('H', 1)\n#define NOISE_HASH_BLAKE2b              NOISE_ID('H', 2)\n#define NOISE_HASH_SHA256               NOISE_ID('H', 3)\n#define NOISE_HASH_SHA512               NOISE_ID('H', 4)\n\n/* Diffie-Hellman algorithms */\n#define NOISE_DH_NONE                   0\n#define NOISE_DH_CATEGORY               NOISE_ID('D', 0)\n#define NOISE_DH_CURVE25519             NOISE_ID('D', 1)\n#define NOISE_DH_CURVE448               NOISE_ID('D', 2)\n#define NOISE_DH_NEWHOPE                NOISE_ID('D', 3)\n\n/* Handshake patterns */\n#define NOISE_PATTERN_NONE              0\n#define NOISE_PATTERN_CATEGORY          NOISE_ID('P', 0)\n#define NOISE_PATTERN_N                 NOISE_ID('P', 1)\n#define NOISE_PATTERN_X                 NOISE_ID('P', 2)\n#define NOISE_PATTERN_K                 NOISE_ID('P', 3)\n#define NOISE_PATTERN_NN                NOISE_ID('P', 4)\n#define NOISE_PATTERN_NK                NOISE_ID('P', 5)\n#define NOISE_PATTERN_NX                NOISE_ID('P', 6)\n#define NOISE_PATTERN_XN                NOISE_ID('P', 7)\n#define NOISE_PATTERN_XK                NOISE_ID('P', 8)\n#define NOISE_PATTERN_XX                NOISE_ID('P', 9)\n#define NOISE_PATTERN_KN                NOISE_ID('P', 10)\n#define NOISE_PATTERN_KK                NOISE_ID('P', 11)\n#define NOISE_PATTERN_KX                NOISE_ID('P', 12)\n#define NOISE_PATTERN_IN                NOISE_ID('P', 13)\n#define NOISE_PATTERN_IK                NOISE_ID('P', 14)\n#define NOISE_PATTERN_IX                NOISE_ID('P', 15)\n#define NOISE_PATTERN_XX_FALLBACK       NOISE_ID('P', 16)\n#define NOISE_PATTERN_X_NOIDH           NOISE_ID('P', 32)\n#define NOISE_PATTERN_NX_NOIDH          NOISE_ID('P', 33)\n#define NOISE_PATTERN_XX_NOIDH          NOISE_ID('P', 34)\n#define NOISE_PATTERN_KX_NOIDH          NOISE_ID('P', 35)\n#define NOISE_PATTERN_IK_NOIDH          NOISE_ID('P', 36)\n#define NOISE_PATTERN_IX_NOIDH          NOISE_ID('P', 37)\n#define NOISE_PATTERN_NN_HFS            NOISE_ID('P', 48)\n#define NOISE_PATTERN_NK_HFS            NOISE_ID('P', 49)\n#define NOISE_PATTERN_NX_HFS            NOISE_ID('P', 50)\n#define NOISE_PATTERN_XN_HFS            NOISE_ID('P', 51)\n#define NOISE_PATTERN_XK_HFS            NOISE_ID('P', 52)\n#define NOISE_PATTERN_XX_HFS            NOISE_ID('P', 53)\n#define NOISE_PATTERN_KN_HFS            NOISE_ID('P', 54)\n#define NOISE_PATTERN_KK_HFS            NOISE_ID('P', 55)\n#define NOISE_PATTERN_KX_HFS            NOISE_ID('P', 56)\n#define NOISE_PATTERN_IN_HFS            NOISE_ID('P', 57)\n#define NOISE_PATTERN_IK_HFS            NOISE_ID('P', 58)\n#define NOISE_PATTERN_IX_HFS            NOISE_ID('P', 59)\n#define NOISE_PATTERN_XX_FALLBACK_HFS   NOISE_ID('P', 60)\n#define NOISE_PATTERN_NX_NOIDH_HFS      NOISE_ID('P', 80)\n#define NOISE_PATTERN_XX_NOIDH_HFS      NOISE_ID('P', 81)\n#define NOISE_PATTERN_KX_NOIDH_HFS      NOISE_ID('P', 82)\n#define NOISE_PATTERN_IK_NOIDH_HFS      NOISE_ID('P', 83)\n#define NOISE_PATTERN_IX_NOIDH_HFS      NOISE_ID('P', 84)\n\n/* Protocol name prefixes */\n#define NOISE_PREFIX_NONE               0\n#define NOISE_PREFIX_CATEGORY           NOISE_ID('N', 0)\n#define NOISE_PREFIX_STANDARD           NOISE_ID('N', 1)\n#define NOISE_PREFIX_PSK                NOISE_ID('N', 2)\n\n/* Signature algorithms */\n#define NOISE_SIGN_NONE                 0\n#define NOISE_SIGN_CATEGORY             NOISE_ID('S', 0)\n#define NOISE_SIGN_ED25519              NOISE_ID('S', 1)\n\n/* Role for this end of the communications */\n#define NOISE_ROLE_INITIATOR            NOISE_ID('R', 1)\n#define NOISE_ROLE_RESPONDER            NOISE_ID('R', 2)\n\n/* Actions for the application to take, as directed by the HandshakeState */\n#define NOISE_ACTION_NONE               0\n#define NOISE_ACTION_WRITE_MESSAGE      NOISE_ID('A', 1)\n#define NOISE_ACTION_READ_MESSAGE       NOISE_ID('A', 2)\n#define NOISE_ACTION_FAILED             NOISE_ID('A', 3)\n#define NOISE_ACTION_SPLIT              NOISE_ID('A', 4)\n#define NOISE_ACTION_COMPLETE           NOISE_ID('A', 5)\n\n/* Padding modes for noise_cipherstate_pad() */\n#define NOISE_PADDING_ZERO              NOISE_ID('G', 1)\n#define NOISE_PADDING_RANDOM            NOISE_ID('G', 2)\n\n/* Key fingerprint types */\n#define NOISE_FINGERPRINT_BASIC         NOISE_ID('F', 1)\n#define NOISE_FINGERPRINT_FULL          NOISE_ID('F', 2)\n\n/* Error codes */\n#define NOISE_ERROR_NONE                0\n#define NOISE_ERROR_NO_MEMORY           NOISE_ID('E', 1)\n#define NOISE_ERROR_UNKNOWN_ID          NOISE_ID('E', 2)\n#define NOISE_ERROR_UNKNOWN_NAME        NOISE_ID('E', 3)\n#define NOISE_ERROR_MAC_FAILURE         NOISE_ID('E', 4)\n#define NOISE_ERROR_NOT_APPLICABLE      NOISE_ID('E', 5)\n#define NOISE_ERROR_SYSTEM              NOISE_ID('E', 6)\n#define NOISE_ERROR_REMOTE_KEY_REQUIRED NOISE_ID('E', 7)\n#define NOISE_ERROR_LOCAL_KEY_REQUIRED  NOISE_ID('E', 8)\n#define NOISE_ERROR_PSK_REQUIRED        NOISE_ID('E', 9)\n#define NOISE_ERROR_INVALID_LENGTH      NOISE_ID('E', 10)\n#define NOISE_ERROR_INVALID_PARAM       NOISE_ID('E', 11)\n#define NOISE_ERROR_INVALID_STATE       NOISE_ID('E', 12)\n#define NOISE_ERROR_INVALID_NONCE       NOISE_ID('E', 13)\n#define NOISE_ERROR_INVALID_PRIVATE_KEY NOISE_ID('E', 14)\n#define NOISE_ERROR_INVALID_PUBLIC_KEY  NOISE_ID('E', 15)\n#define NOISE_ERROR_INVALID_FORMAT      NOISE_ID('E', 16)\n#define NOISE_ERROR_INVALID_SIGNATURE   NOISE_ID('E', 17)\n\n/* Maximum length of a packet payload */\n#define NOISE_MAX_PAYLOAD_LEN           65535\n\n/* Maximum length of a protocol name string */\n#define NOISE_MAX_PROTOCOL_NAME         128\n\n/* Recommended maximum length for fingerprint buffers */\n#define NOISE_MAX_FINGERPRINT_LEN       256\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/dhstate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_DHSTATE_H\n#define NOISE_DHSTATE_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct NoiseDHState_s NoiseDHState;\n\nint noise_dhstate_new_by_id(NoiseDHState **state, int id);\nint noise_dhstate_new_by_name(NoiseDHState **state, const char *name);\nint noise_dhstate_free(NoiseDHState *state);\nint noise_dhstate_get_dh_id(const NoiseDHState *state);\nsize_t noise_dhstate_get_public_key_length(const NoiseDHState *state);\nsize_t noise_dhstate_get_private_key_length(const NoiseDHState *state);\nsize_t noise_dhstate_get_shared_key_length(const NoiseDHState *state);\nint noise_dhstate_is_ephemeral_only(const NoiseDHState *state);\nint noise_dhstate_has_keypair(const NoiseDHState *state);\nint noise_dhstate_has_public_key(const NoiseDHState *state);\nint noise_dhstate_generate_keypair(NoiseDHState *state);\nint noise_dhstate_generate_dependent_keypair\n    (NoiseDHState *state, const NoiseDHState *other);\nint noise_dhstate_set_keypair\n    (NoiseDHState *state, const uint8_t *private_key, size_t private_key_len,\n     const uint8_t *public_key, size_t public_key_len);\nint noise_dhstate_set_keypair_private\n    (NoiseDHState *state, const uint8_t *private_key, size_t private_key_len);\nint noise_dhstate_get_keypair\n    (const NoiseDHState *state, uint8_t *private_key, size_t private_key_len,\n     uint8_t *public_key, size_t public_key_len);\nint noise_dhstate_set_public_key\n    (NoiseDHState *state, const uint8_t *public_key, size_t public_key_len);\nint noise_dhstate_get_public_key\n    (const NoiseDHState *state, uint8_t *public_key, size_t public_key_len);\nint noise_dhstate_set_null_public_key(NoiseDHState *state);\nint noise_dhstate_is_null_public_key(const NoiseDHState *state);\nint noise_dhstate_clear_key(NoiseDHState *state);\nint noise_dhstate_calculate\n    (const NoiseDHState *private_key_state,\n     const NoiseDHState *public_key_state,\n     uint8_t *shared_key, size_t shared_key_len);\nint noise_dhstate_copy(NoiseDHState *state, const NoiseDHState *from);\nint noise_dhstate_format_fingerprint\n    (const NoiseDHState *state, int fingerprint_type, char *buffer, size_t len);\nint noise_dhstate_get_role(const NoiseDHState *state);\nint noise_dhstate_set_role(NoiseDHState *state, int role);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/errors.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_ERRORS_H\n#define NOISE_ERRORS_H\n\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nvoid noise_perror(const char *s, int err);\nint noise_strerror(int err, char *buf, size_t size);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/handshakestate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_HANDSHAKESTATE_H\n#define NOISE_HANDSHAKESTATE_H\n\n#include <noise/protocol/symmetricstate.h>\n#include <noise/protocol/dhstate.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct NoiseHandshakeState_s NoiseHandshakeState;\n\nint noise_handshakestate_new_by_id\n    (NoiseHandshakeState **state, const NoiseProtocolId *protocol_id, int role);\nint noise_handshakestate_new_by_name\n    (NoiseHandshakeState **state, const char *protocol_name, int role);\nint noise_handshakestate_free(NoiseHandshakeState *state);\nint noise_handshakestate_get_role(const NoiseHandshakeState *state);\nint noise_handshakestate_get_protocol_id\n    (const NoiseHandshakeState *state, NoiseProtocolId *id);\nNoiseDHState *noise_handshakestate_get_local_keypair_dh\n    (const NoiseHandshakeState *state);\nNoiseDHState *noise_handshakestate_get_remote_public_key_dh\n    (const NoiseHandshakeState *state);\nNoiseDHState *noise_handshakestate_get_fixed_ephemeral_dh\n    (NoiseHandshakeState *state);\nNoiseDHState *noise_handshakestate_get_fixed_hybrid_dh\n    (NoiseHandshakeState *state);\nint noise_handshakestate_needs_pre_shared_key(const NoiseHandshakeState *state);\nint noise_handshakestate_has_pre_shared_key(const NoiseHandshakeState *state);\nint noise_handshakestate_set_pre_shared_key\n    (NoiseHandshakeState *state, const uint8_t *key, size_t key_len);\nint noise_handshakestate_set_prologue\n    (NoiseHandshakeState *state, const void *prologue, size_t prologue_len);\nint noise_handshakestate_needs_local_keypair(const NoiseHandshakeState *state);\nint noise_handshakestate_has_local_keypair(const NoiseHandshakeState *state);\nint noise_handshakestate_needs_remote_public_key(const NoiseHandshakeState *state);\nint noise_handshakestate_has_remote_public_key(const NoiseHandshakeState *state);\nint noise_handshakestate_start(NoiseHandshakeState *state);\nint noise_handshakestate_fallback(NoiseHandshakeState *state);\nint noise_handshakestate_fallback_to(NoiseHandshakeState *state, int pattern_id);\nint noise_handshakestate_get_action(const NoiseHandshakeState *state);\nint noise_handshakestate_write_message\n    (NoiseHandshakeState *state, NoiseBuffer *message, const NoiseBuffer *payload);\nint noise_handshakestate_read_message\n    (NoiseHandshakeState *state, NoiseBuffer *message, NoiseBuffer *payload);\nint noise_handshakestate_split\n    (NoiseHandshakeState *state, NoiseCipherState **send, NoiseCipherState **receive);\nint noise_handshakestate_get_handshake_hash\n    (const NoiseHandshakeState *state, uint8_t *hash, size_t max_len);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/hashstate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_HASHSTATE_H\n#define NOISE_HASHSTATE_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct NoiseHashState_s NoiseHashState;\n\nint noise_hashstate_new_by_id(NoiseHashState **state, int id);\nint noise_hashstate_new_by_name(NoiseHashState **state, const char *name);\nint noise_hashstate_free(NoiseHashState *state);\nint noise_hashstate_get_hash_id(const NoiseHashState *state);\nsize_t noise_hashstate_get_hash_length(const NoiseHashState *state);\nsize_t noise_hashstate_get_block_length(const NoiseHashState *state);\nint noise_hashstate_reset(NoiseHashState *state);\nint noise_hashstate_update\n    (NoiseHashState *state, const uint8_t *data, size_t data_len);\nint noise_hashstate_finalize\n    (NoiseHashState *state, uint8_t *hash, size_t hash_len);\nint noise_hashstate_hash_one\n    (NoiseHashState *state, const uint8_t *data, size_t data_len,\n     uint8_t *hash, size_t hash_len);\nint noise_hashstate_hash_two\n    (NoiseHashState *state, const uint8_t *data1, size_t data1_len,\n     const uint8_t *data2, size_t data2_len, uint8_t *hash, size_t hash_len);\nint noise_hashstate_hkdf\n    (NoiseHashState *state, const uint8_t *key, size_t key_len,\n     const uint8_t *data, size_t data_len,\n     uint8_t *output1, size_t output1_len,\n     uint8_t *output2, size_t output2_len);\nint noise_hashstate_pbkdf2\n    (NoiseHashState *state, const uint8_t *passphrase, size_t passphrase_len,\n     const uint8_t *salt, size_t salt_len, size_t iterations,\n     uint8_t *output, size_t output_len);\nint noise_hashstate_get_max_hash_length(void);\nint noise_hashstate_get_max_block_length(void);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/names.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_NAMES_H\n#define NOISE_NAMES_H\n\n#include <noise/protocol/constants.h>\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct\n{\n    int prefix_id;      /**< Protocol name prefix */\n    int pattern_id;     /**< Handshake pattern */\n    int dh_id;          /**< Diffie-Hellman algorithm identifier */\n    int cipher_id;      /**< Cipher algorithm identifier */\n    int hash_id;        /**< Hash algorithm identifier */\n    int hybrid_id;      /**< Hybrid forward secrecy algorithm identifier */\n    int reserved[4];    /**< Reserved for future use; should be zero */\n\n} NoiseProtocolId;\n\nint noise_name_to_id(int category, const char *name, size_t name_len);\nconst char *noise_id_to_name(int category, int id);\n\nint noise_protocol_name_to_id\n    (NoiseProtocolId *id, const char *name, size_t name_len);\nint noise_protocol_id_to_name\n    (char *name, size_t name_len, const NoiseProtocolId *id);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/randstate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_RANDSTATE_H\n#define NOISE_RANDSTATE_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct NoiseRandState_s NoiseRandState;\n\nint noise_randstate_new(NoiseRandState **state);\nint noise_randstate_free(NoiseRandState *state);\nint noise_randstate_reseed(NoiseRandState *state);\nint noise_randstate_generate\n    (NoiseRandState *state, uint8_t *buffer, size_t len);\nint noise_randstate_pad\n    (NoiseRandState *state, uint8_t *payload, size_t orig_len,\n     size_t padded_len, int padding_mode);\nint noise_randstate_generate_simple(uint8_t *buffer, size_t len);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/signstate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_SIGNSTATE_H\n#define NOISE_SIGNSTATE_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct NoiseSignState_s NoiseSignState;\n\nint noise_signstate_new_by_id(NoiseSignState **state, int id);\nint noise_signstate_new_by_name(NoiseSignState **state, const char *name);\nint noise_signstate_free(NoiseSignState *state);\nint noise_signstate_get_sign_id(const NoiseSignState *state);\nsize_t noise_signstate_get_public_key_length(const NoiseSignState *state);\nsize_t noise_signstate_get_private_key_length(const NoiseSignState *state);\nsize_t noise_signstate_get_signature_length(const NoiseSignState *state);\nint noise_signstate_has_keypair(const NoiseSignState *state);\nint noise_signstate_has_public_key(const NoiseSignState *state);\nint noise_signstate_generate_keypair(NoiseSignState *state);\nint noise_signstate_set_keypair\n    (NoiseSignState *state, const uint8_t *private_key, size_t private_key_len,\n     const uint8_t *public_key, size_t public_key_len);\nint noise_signstate_set_keypair_private\n    (NoiseSignState *state, const uint8_t *private_key, size_t private_key_len);\nint noise_signstate_get_keypair\n    (const NoiseSignState *state, uint8_t *private_key, size_t private_key_len,\n     uint8_t *public_key, size_t public_key_len);\nint noise_signstate_set_public_key\n    (NoiseSignState *state, const uint8_t *public_key, size_t public_key_len);\nint noise_signstate_get_public_key\n    (const NoiseSignState *state, uint8_t *public_key, size_t public_key_len);\nint noise_signstate_clear_key(NoiseSignState *state);\nint noise_signstate_sign\n    (const NoiseSignState *state, const uint8_t *message, size_t message_len,\n     uint8_t *signature, size_t signature_len);\nint noise_signstate_verify\n    (const NoiseSignState *state, const uint8_t *message, size_t message_len,\n     const uint8_t *signature, size_t signature_len);\nint noise_signstate_copy(NoiseSignState *state, const NoiseSignState *from);\nint noise_signstate_format_fingerprint\n    (const NoiseSignState *state, int fingerprint_type,\n     char *buffer, size_t len);\nint noise_signstate_get_max_key_length(void);\nint noise_signstate_get_max_signature_length(void);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/symmetricstate.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_SYMMETRICSTATE_H\n#define NOISE_SYMMETRICSTATE_H\n\n#include <noise/protocol/cipherstate.h>\n#include <noise/protocol/names.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct NoiseSymmetricState_s NoiseSymmetricState;\n\nint noise_symmetricstate_new_by_id\n    (NoiseSymmetricState **state, const NoiseProtocolId *id);\nint noise_symmetricstate_new_by_name\n    (NoiseSymmetricState **state, const char *name);\nint noise_symmetricstate_free(NoiseSymmetricState *state);\nint noise_symmetricstate_get_protocol_id\n    (const NoiseSymmetricState *state, NoiseProtocolId *id);\nint noise_symmetricstate_mix_key\n    (NoiseSymmetricState *state, const uint8_t *input, size_t size);\nint noise_symmetricstate_mix_hash\n    (NoiseSymmetricState *state, const uint8_t *input, size_t size);\nint noise_symmetricstate_encrypt_and_hash\n    (NoiseSymmetricState *state, NoiseBuffer *buffer);\nint noise_symmetricstate_decrypt_and_hash\n    (NoiseSymmetricState *state, NoiseBuffer *buffer);\nsize_t noise_symmetricstate_get_mac_length(const NoiseSymmetricState *state);\nint noise_symmetricstate_split\n    (NoiseSymmetricState *state, NoiseCipherState **c1, NoiseCipherState **c2);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol/util.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_UTIL_H\n#define NOISE_UTIL_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nint noise_init(void);\n\n#define noise_new(type) ((type *)noise_new_object(sizeof(type)))\nvoid *noise_new_object(size_t size);\nvoid noise_free(void *ptr, size_t size);\n\nvoid noise_clean(void *data, size_t size);\n\nint noise_is_equal(const void *s1, const void *s2, size_t size);\nint noise_is_zero(const void *data, size_t size);\n\nint noise_format_fingerprint\n    (int fingerprint_type, char *buffer, size_t len,\n     const uint8_t *public_key, size_t public_key_len);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "include/noise/protocol.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_PROTOCOL_H\n#define NOISE_PROTOCOL_H\n\n#include <noise/protocol/constants.h>\n#include <noise/protocol/errors.h>\n#include <noise/protocol/names.h>\n#include <noise/protocol/buffer.h>\n#include <noise/protocol/cipherstate.h>\n#include <noise/protocol/hashstate.h>\n#include <noise/protocol/dhstate.h>\n#include <noise/protocol/signstate.h>\n#include <noise/protocol/randstate.h>\n#include <noise/protocol/symmetricstate.h>\n#include <noise/protocol/handshakestate.h>\n#include <noise/protocol/util.h>\n\n#endif\n"
  },
  {
    "path": "m4/ax_pthread.m4",
    "content": "# ===========================================================================\n#        http://www.gnu.org/software/autoconf-archive/ax_pthread.html\n# ===========================================================================\n#\n# SYNOPSIS\n#\n#   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])\n#\n# DESCRIPTION\n#\n#   This macro figures out how to build C programs using POSIX threads. It\n#   sets the PTHREAD_LIBS output variable to the threads library and linker\n#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler\n#   flags that are needed. (The user can also force certain compiler\n#   flags/libs to be tested by setting these environment variables.)\n#\n#   Also sets PTHREAD_CC to any special C compiler that is needed for\n#   multi-threaded programs (defaults to the value of CC otherwise). (This\n#   is necessary on AIX to use the special cc_r compiler alias.)\n#\n#   NOTE: You are assumed to not only compile your program with these flags,\n#   but also to link with them as well. For example, you might link with\n#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS\n#\n#   If you are only building threaded programs, you may wish to use these\n#   variables in your default LIBS, CFLAGS, and CC:\n#\n#     LIBS=\"$PTHREAD_LIBS $LIBS\"\n#     CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n#     CC=\"$PTHREAD_CC\"\n#\n#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant\n#   has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to\n#   that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).\n#\n#   Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the\n#   PTHREAD_PRIO_INHERIT symbol is defined when compiling with\n#   PTHREAD_CFLAGS.\n#\n#   ACTION-IF-FOUND is a list of shell commands to run if a threads library\n#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it\n#   is not found. If ACTION-IF-FOUND is not specified, the default action\n#   will define HAVE_PTHREAD.\n#\n#   Please let the authors know if this macro fails on any platform, or if\n#   you have any other suggestions or comments. This macro was based on work\n#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help\n#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by\n#   Alejandro Forero Cuervo to the autoconf macro repository. We are also\n#   grateful for the helpful feedback of numerous users.\n#\n#   Updated for Autoconf 2.68 by Daniel Richard G.\n#\n# LICENSE\n#\n#   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>\n#   Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>\n#\n#   This program is free software: you can redistribute it and/or modify it\n#   under the terms of the GNU General Public License as published by the\n#   Free Software Foundation, either version 3 of the License, or (at your\n#   option) any later version.\n#\n#   This program is distributed in the hope that it will be useful, but\n#   WITHOUT ANY WARRANTY; without even the implied warranty of\n#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n#   Public License for more details.\n#\n#   You should have received a copy of the GNU General Public License along\n#   with this program. If not, see <http://www.gnu.org/licenses/>.\n#\n#   As a special exception, the respective Autoconf Macro's copyright owner\n#   gives unlimited permission to copy, distribute and modify the configure\n#   scripts that are the output of Autoconf when processing the Macro. You\n#   need not follow the terms of the GNU General Public License when using\n#   or distributing such scripts, even though portions of the text of the\n#   Macro appear in them. The GNU General Public License (GPL) does govern\n#   all other use of the material that constitutes the Autoconf Macro.\n#\n#   This special exception to the GPL applies to versions of the Autoconf\n#   Macro released by the Autoconf Archive. When you make and distribute a\n#   modified version of the Autoconf Macro, you may extend this special\n#   exception to the GPL to apply to your modified version as well.\n\n#serial 23\n\nAU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])\nAC_DEFUN([AX_PTHREAD], [\nAC_REQUIRE([AC_CANONICAL_HOST])\nAC_REQUIRE([AC_PROG_CC])\nAC_REQUIRE([AC_PROG_SED])\nAC_LANG_PUSH([C])\nax_pthread_ok=no\n\n# We used to check for pthread.h first, but this fails if pthread.h\n# requires special compiler flags (e.g. on Tru64 or Sequent).\n# It gets checked for in the link test anyway.\n\n# First of all, check if the user has set any of the PTHREAD_LIBS,\n# etcetera environment variables, and if threads linking works using\n# them:\nif test \"x$PTHREAD_CFLAGS$PTHREAD_LIBS\" != \"x\"; then\n        ax_pthread_save_CC=\"$CC\"\n        ax_pthread_save_CFLAGS=\"$CFLAGS\"\n        ax_pthread_save_LIBS=\"$LIBS\"\n        AS_IF([test \"x$PTHREAD_CC\" != \"x\"], [CC=\"$PTHREAD_CC\"])\n        CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n        LIBS=\"$PTHREAD_LIBS $LIBS\"\n        AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])\n        AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])\n        AC_MSG_RESULT([$ax_pthread_ok])\n        if test \"x$ax_pthread_ok\" = \"xno\"; then\n                PTHREAD_LIBS=\"\"\n                PTHREAD_CFLAGS=\"\"\n        fi\n        CC=\"$ax_pthread_save_CC\"\n        CFLAGS=\"$ax_pthread_save_CFLAGS\"\n        LIBS=\"$ax_pthread_save_LIBS\"\nfi\n\n# We must check for the threads library under a number of different\n# names; the ordering is very important because some systems\n# (e.g. DEC) have both -lpthread and -lpthreads, where one of the\n# libraries is broken (non-POSIX).\n\n# Create a list of thread flags to try.  Items starting with a \"-\" are\n# C compiler flags, and other items are library names, except for \"none\"\n# which indicates that we try without any flags at all, and \"pthread-config\"\n# which is a program returning the flags for the Pth emulation library.\n\nax_pthread_flags=\"pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config\"\n\n# The ordering *is* (sometimes) important.  Some notes on the\n# individual items follow:\n\n# pthreads: AIX (must check this before -lpthread)\n# none: in case threads are in libc; should be tried before -Kthread and\n#       other compiler flags to prevent continual compiler warnings\n# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)\n# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64\n#           (Note: HP C rejects this with \"bad form for `-t' option\")\n# -pthreads: Solaris/gcc (Note: HP C also rejects)\n# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it\n#      doesn't hurt to check since this sometimes defines pthreads and\n#      -D_REENTRANT too), HP C (must be checked before -lpthread, which\n#      is present but should not be used directly; and before -mthreads,\n#      because the compiler interprets this as \"-mt\" + \"-hreads\")\n# -mthreads: Mingw32/gcc, Lynx/gcc\n# pthread: Linux, etcetera\n# --thread-safe: KAI C++\n# pthread-config: use pthread-config program (for GNU Pth library)\n\ncase $host_os in\n\n        freebsd*)\n\n        # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)\n        # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)\n\n        ax_pthread_flags=\"-kthread lthread $ax_pthread_flags\"\n        ;;\n\n        hpux*)\n\n        # From the cc(1) man page: \"[-mt] Sets various -D flags to enable\n        # multi-threading and also sets -lpthread.\"\n\n        ax_pthread_flags=\"-mt -pthread pthread $ax_pthread_flags\"\n        ;;\n\n        openedition*)\n\n        # IBM z/OS requires a feature-test macro to be defined in order to\n        # enable POSIX threads at all, so give the user a hint if this is\n        # not set. (We don't define these ourselves, as they can affect\n        # other portions of the system API in unpredictable ways.)\n\n        AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],\n            [\n#            if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)\n             AX_PTHREAD_ZOS_MISSING\n#            endif\n            ],\n            [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])\n        ;;\n\n        solaris*)\n\n        # On Solaris (at least, for some versions), libc contains stubbed\n        # (non-functional) versions of the pthreads routines, so link-based\n        # tests will erroneously succeed. (N.B.: The stubs are missing\n        # pthread_cleanup_push, or rather a function called by this macro,\n        # so we could check for that, but who knows whether they'll stub\n        # that too in a future libc.)  So we'll check first for the\n        # standard Solaris way of linking pthreads (-mt -lpthread).\n\n        ax_pthread_flags=\"-mt,pthread pthread $ax_pthread_flags\"\n        ;;\nesac\n\n# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)\n\nAS_IF([test \"x$GCC\" = \"xyes\"],\n      [ax_pthread_flags=\"-pthread -pthreads $ax_pthread_flags\"])\n\n# The presence of a feature test macro requesting re-entrant function\n# definitions is, on some systems, a strong hint that pthreads support is\n# correctly enabled\n\ncase $host_os in\n        darwin* | hpux* | linux* | osf* | solaris*)\n        ax_pthread_check_macro=\"_REENTRANT\"\n        ;;\n\n        aix*)\n        ax_pthread_check_macro=\"_THREAD_SAFE\"\n        ;;\n\n        *)\n        ax_pthread_check_macro=\"--\"\n        ;;\nesac\nAS_IF([test \"x$ax_pthread_check_macro\" = \"x--\"],\n      [ax_pthread_check_cond=0],\n      [ax_pthread_check_cond=\"!defined($ax_pthread_check_macro)\"])\n\n# Are we compiling with Clang?\n\nAC_CACHE_CHECK([whether $CC is Clang],\n    [ax_cv_PTHREAD_CLANG],\n    [ax_cv_PTHREAD_CLANG=no\n     # Note that Autoconf sets GCC=yes for Clang as well as GCC\n     if test \"x$GCC\" = \"xyes\"; then\n        AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],\n            [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */\n#            if defined(__clang__) && defined(__llvm__)\n             AX_PTHREAD_CC_IS_CLANG\n#            endif\n            ],\n            [ax_cv_PTHREAD_CLANG=yes])\n     fi\n    ])\nax_pthread_clang=\"$ax_cv_PTHREAD_CLANG\"\n\nax_pthread_clang_warning=no\n\n# Clang needs special handling, because older versions handle the -pthread\n# option in a rather... idiosyncratic way\n\nif test \"x$ax_pthread_clang\" = \"xyes\"; then\n\n        # Clang takes -pthread; it has never supported any other flag\n\n        # (Note 1: This will need to be revisited if a system that Clang\n        # supports has POSIX threads in a separate library.  This tends not\n        # to be the way of modern systems, but it's conceivable.)\n\n        # (Note 2: On some systems, notably Darwin, -pthread is not needed\n        # to get POSIX threads support; the API is always present and\n        # active.  We could reasonably leave PTHREAD_CFLAGS empty.  But\n        # -pthread does define _REENTRANT, and while the Darwin headers\n        # ignore this macro, third-party headers might not.)\n\n        PTHREAD_CFLAGS=\"-pthread\"\n        PTHREAD_LIBS=\n\n        ax_pthread_ok=yes\n\n        # However, older versions of Clang make a point of warning the user\n        # that, in an invocation where only linking and no compilation is\n        # taking place, the -pthread option has no effect (\"argument unused\n        # during compilation\").  They expect -pthread to be passed in only\n        # when source code is being compiled.\n        #\n        # Problem is, this is at odds with the way Automake and most other\n        # C build frameworks function, which is that the same flags used in\n        # compilation (CFLAGS) are also used in linking.  Many systems\n        # supported by AX_PTHREAD require exactly this for POSIX threads\n        # support, and in fact it is often not straightforward to specify a\n        # flag that is used only in the compilation phase and not in\n        # linking.  Such a scenario is extremely rare in practice.\n        #\n        # Even though use of the -pthread flag in linking would only print\n        # a warning, this can be a nuisance for well-run software projects\n        # that build with -Werror.  So if the active version of Clang has\n        # this misfeature, we search for an option to squash it.\n\n        AC_CACHE_CHECK([whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread],\n            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],\n            [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown\n             # Create an alternate version of $ac_link that compiles and\n             # links in two steps (.c -> .o, .o -> exe) instead of one\n             # (.c -> exe), because the warning occurs only in the second\n             # step\n             ax_pthread_save_ac_link=\"$ac_link\"\n             ax_pthread_sed='s/conftest\\.\\$ac_ext/conftest.$ac_objext/g'\n             ax_pthread_link_step=`$as_echo \"$ac_link\" | sed \"$ax_pthread_sed\"`\n             ax_pthread_2step_ac_link=\"($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)\"\n             ax_pthread_save_CFLAGS=\"$CFLAGS\"\n             for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do\n                AS_IF([test \"x$ax_pthread_try\" = \"xunknown\"], [break])\n                CFLAGS=\"-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS\"\n                ac_link=\"$ax_pthread_save_ac_link\"\n                AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],\n                    [ac_link=\"$ax_pthread_2step_ac_link\"\n                     AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],\n                         [break])\n                    ])\n             done\n             ac_link=\"$ax_pthread_save_ac_link\"\n             CFLAGS=\"$ax_pthread_save_CFLAGS\"\n             AS_IF([test \"x$ax_pthread_try\" = \"x\"], [ax_pthread_try=no])\n             ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=\"$ax_pthread_try\"\n            ])\n\n        case \"$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG\" in\n                no | unknown) ;;\n                *) PTHREAD_CFLAGS=\"$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS\" ;;\n        esac\n\nfi # $ax_pthread_clang = yes\n\nif test \"x$ax_pthread_ok\" = \"xno\"; then\nfor ax_pthread_try_flag in $ax_pthread_flags; do\n\n        case $ax_pthread_try_flag in\n                none)\n                AC_MSG_CHECKING([whether pthreads work without any flags])\n                ;;\n\n                -mt,pthread)\n                AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])\n                PTHREAD_CFLAGS=\"-mt\"\n                PTHREAD_LIBS=\"-lpthread\"\n                ;;\n\n                -*)\n                AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])\n                PTHREAD_CFLAGS=\"$ax_pthread_try_flag\"\n                ;;\n\n                pthread-config)\n                AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])\n                AS_IF([test \"x$ax_pthread_config\" = \"xno\"], [continue])\n                PTHREAD_CFLAGS=\"`pthread-config --cflags`\"\n                PTHREAD_LIBS=\"`pthread-config --ldflags` `pthread-config --libs`\"\n                ;;\n\n                *)\n                AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])\n                PTHREAD_LIBS=\"-l$ax_pthread_try_flag\"\n                ;;\n        esac\n\n        ax_pthread_save_CFLAGS=\"$CFLAGS\"\n        ax_pthread_save_LIBS=\"$LIBS\"\n        CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n        LIBS=\"$PTHREAD_LIBS $LIBS\"\n\n        # Check for various functions.  We must include pthread.h,\n        # since some functions may be macros.  (On the Sequent, we\n        # need a special flag -Kthread to make this header compile.)\n        # We check for pthread_join because it is in -lpthread on IRIX\n        # while pthread_create is in libc.  We check for pthread_attr_init\n        # due to DEC craziness with -lpthreads.  We check for\n        # pthread_cleanup_push because it is one of the few pthread\n        # functions on Solaris that doesn't have a non-functional libc stub.\n        # We try pthread_create on general principles.\n\n        AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>\n#                       if $ax_pthread_check_cond\n#                        error \"$ax_pthread_check_macro must be defined\"\n#                       endif\n                        static void routine(void *a) { a = 0; }\n                        static void *start_routine(void *a) { return a; }],\n                       [pthread_t th; pthread_attr_t attr;\n                        pthread_create(&th, 0, start_routine, 0);\n                        pthread_join(th, 0);\n                        pthread_attr_init(&attr);\n                        pthread_cleanup_push(routine, 0);\n                        pthread_cleanup_pop(0) /* ; */])],\n            [ax_pthread_ok=yes],\n            [])\n\n        CFLAGS=\"$ax_pthread_save_CFLAGS\"\n        LIBS=\"$ax_pthread_save_LIBS\"\n\n        AC_MSG_RESULT([$ax_pthread_ok])\n        AS_IF([test \"x$ax_pthread_ok\" = \"xyes\"], [break])\n\n        PTHREAD_LIBS=\"\"\n        PTHREAD_CFLAGS=\"\"\ndone\nfi\n\n# Various other checks:\nif test \"x$ax_pthread_ok\" = \"xyes\"; then\n        ax_pthread_save_CFLAGS=\"$CFLAGS\"\n        ax_pthread_save_LIBS=\"$LIBS\"\n        CFLAGS=\"$CFLAGS $PTHREAD_CFLAGS\"\n        LIBS=\"$PTHREAD_LIBS $LIBS\"\n\n        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.\n        AC_CACHE_CHECK([for joinable pthread attribute],\n            [ax_cv_PTHREAD_JOINABLE_ATTR],\n            [ax_cv_PTHREAD_JOINABLE_ATTR=unknown\n             for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do\n                 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],\n                                                 [int attr = $ax_pthread_attr; return attr /* ; */])],\n                                [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],\n                                [])\n             done\n            ])\n        AS_IF([test \"x$ax_cv_PTHREAD_JOINABLE_ATTR\" != \"xunknown\" && \\\n               test \"x$ax_cv_PTHREAD_JOINABLE_ATTR\" != \"xPTHREAD_CREATE_JOINABLE\" && \\\n               test \"x$ax_pthread_joinable_attr_defined\" != \"xyes\"],\n              [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],\n                                  [$ax_cv_PTHREAD_JOINABLE_ATTR],\n                                  [Define to necessary symbol if this constant\n                                   uses a non-standard name on your system.])\n               ax_pthread_joinable_attr_defined=yes\n              ])\n\n        AC_CACHE_CHECK([whether more special flags are required for pthreads],\n            [ax_cv_PTHREAD_SPECIAL_FLAGS],\n            [ax_cv_PTHREAD_SPECIAL_FLAGS=no\n             case $host_os in\n             solaris*)\n             ax_cv_PTHREAD_SPECIAL_FLAGS=\"-D_POSIX_PTHREAD_SEMANTICS\"\n             ;;\n             esac\n            ])\n        AS_IF([test \"x$ax_cv_PTHREAD_SPECIAL_FLAGS\" != \"xno\" && \\\n               test \"x$ax_pthread_special_flags_added\" != \"xyes\"],\n              [PTHREAD_CFLAGS=\"$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS\"\n               ax_pthread_special_flags_added=yes])\n\n        AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],\n            [ax_cv_PTHREAD_PRIO_INHERIT],\n            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],\n                                             [[int i = PTHREAD_PRIO_INHERIT;]])],\n                            [ax_cv_PTHREAD_PRIO_INHERIT=yes],\n                            [ax_cv_PTHREAD_PRIO_INHERIT=no])\n            ])\n        AS_IF([test \"x$ax_cv_PTHREAD_PRIO_INHERIT\" = \"xyes\" && \\\n               test \"x$ax_pthread_prio_inherit_defined\" != \"xyes\"],\n              [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])\n               ax_pthread_prio_inherit_defined=yes\n              ])\n\n        CFLAGS=\"$ax_pthread_save_CFLAGS\"\n        LIBS=\"$ax_pthread_save_LIBS\"\n\n        # More AIX lossage: compile with *_r variant\n        if test \"x$GCC\" != \"xyes\"; then\n            case $host_os in\n                aix*)\n                AS_CASE([\"x/$CC\"],\n                    [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],\n                    [#handle absolute path differently from PATH based program lookup\n                     AS_CASE([\"x$CC\"],\n                         [x/*],\n                         [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC=\"${CC}_r\"])],\n                         [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])\n                ;;\n            esac\n        fi\nfi\n\ntest -n \"$PTHREAD_CC\" || PTHREAD_CC=\"$CC\"\n\nAC_SUBST([PTHREAD_LIBS])\nAC_SUBST([PTHREAD_CFLAGS])\nAC_SUBST([PTHREAD_CC])\n\n# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:\nif test \"x$ax_pthread_ok\" = \"xyes\"; then\n        ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])\n        :\nelse\n        ax_pthread_ok=no\n        $2\nfi\nAC_LANG_POP\n])dnl AX_PTHREAD\n"
  },
  {
    "path": "m4/pkg.m4",
    "content": "dnl pkg.m4 - Macros to locate and utilise pkg-config.   -*- Autoconf -*-\ndnl serial 11 (pkg-config-0.29.1)\ndnl\ndnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.\ndnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>\ndnl\ndnl This program is free software; you can redistribute it and/or modify\ndnl it under the terms of the GNU General Public License as published by\ndnl the Free Software Foundation; either version 2 of the License, or\ndnl (at your option) any later version.\ndnl\ndnl This program is distributed in the hope that it will be useful, but\ndnl WITHOUT ANY WARRANTY; without even the implied warranty of\ndnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\ndnl General Public License for more details.\ndnl\ndnl You should have received a copy of the GNU General Public License\ndnl along with this program; if not, write to the Free Software\ndnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA\ndnl 02111-1307, USA.\ndnl\ndnl As a special exception to the GNU General Public License, if you\ndnl distribute this file as part of a program that contains a\ndnl configuration script generated by Autoconf, you may include it under\ndnl the same distribution terms that you use for the rest of that\ndnl program.\n\ndnl PKG_PREREQ(MIN-VERSION)\ndnl -----------------------\ndnl Since: 0.29\ndnl\ndnl Verify that the version of the pkg-config macros are at least\ndnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's\ndnl installed version of pkg-config, this checks the developer's version\ndnl of pkg.m4 when generating configure.\ndnl\ndnl To ensure that this macro is defined, also add:\ndnl m4_ifndef([PKG_PREREQ],\ndnl     [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])\ndnl\ndnl See the \"Since\" comment for each macro you use to see what version\ndnl of the macros you require.\nm4_defun([PKG_PREREQ],\n[m4_define([PKG_MACROS_VERSION], [0.29.1])\nm4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,\n    [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])\n])dnl PKG_PREREQ\n\ndnl PKG_PROG_PKG_CONFIG([MIN-VERSION])\ndnl ----------------------------------\ndnl Since: 0.16\ndnl\ndnl Search for the pkg-config tool and set the PKG_CONFIG variable to\ndnl first found in the path. Checks that the version of pkg-config found\ndnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is\ndnl used since that's the first version where most current features of\ndnl pkg-config existed.\nAC_DEFUN([PKG_PROG_PKG_CONFIG],\n[m4_pattern_forbid([^_?PKG_[A-Z_]+$])\nm4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])\nm4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])\nAC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])\nAC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])\nAC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])\n\nif test \"x$ac_cv_env_PKG_CONFIG_set\" != \"xset\"; then\n\tAC_PATH_TOOL([PKG_CONFIG], [pkg-config])\nfi\nif test -n \"$PKG_CONFIG\"; then\n\t_pkg_min_version=m4_default([$1], [0.9.0])\n\tAC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])\n\tif $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then\n\t\tAC_MSG_RESULT([yes])\n\telse\n\t\tAC_MSG_RESULT([no])\n\t\tPKG_CONFIG=\"\"\n\tfi\nfi[]dnl\n])dnl PKG_PROG_PKG_CONFIG\n\ndnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])\ndnl -------------------------------------------------------------------\ndnl Since: 0.18\ndnl\ndnl Check to see whether a particular set of modules exists. Similar to\ndnl PKG_CHECK_MODULES(), but does not set variables or print errors.\ndnl\ndnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])\ndnl only at the first occurence in configure.ac, so if the first place\ndnl it's called might be skipped (such as if it is within an \"if\", you\ndnl have to call PKG_CHECK_EXISTS manually\nAC_DEFUN([PKG_CHECK_EXISTS],\n[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl\nif test -n \"$PKG_CONFIG\" && \\\n    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors \"$1\"]); then\n  m4_default([$2], [:])\nm4_ifvaln([$3], [else\n  $3])dnl\nfi])\n\ndnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])\ndnl ---------------------------------------------\ndnl Internal wrapper calling pkg-config via PKG_CONFIG and setting\ndnl pkg_failed based on the result.\nm4_define([_PKG_CONFIG],\n[if test -n \"$$1\"; then\n    pkg_cv_[]$1=\"$$1\"\n elif test -n \"$PKG_CONFIG\"; then\n    PKG_CHECK_EXISTS([$3],\n                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 \"$3\" 2>/dev/null`\n\t\t      test \"x$?\" != \"x0\" && pkg_failed=yes ],\n\t\t     [pkg_failed=yes])\n else\n    pkg_failed=untried\nfi[]dnl\n])dnl _PKG_CONFIG\n\ndnl _PKG_SHORT_ERRORS_SUPPORTED\ndnl ---------------------------\ndnl Internal check to see if pkg-config supports short errors.\nAC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],\n[AC_REQUIRE([PKG_PROG_PKG_CONFIG])\nif $PKG_CONFIG --atleast-pkgconfig-version 0.20; then\n        _pkg_short_errors_supported=yes\nelse\n        _pkg_short_errors_supported=no\nfi[]dnl\n])dnl _PKG_SHORT_ERRORS_SUPPORTED\n\n\ndnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],\ndnl   [ACTION-IF-NOT-FOUND])\ndnl --------------------------------------------------------------\ndnl Since: 0.4.0\ndnl\ndnl Note that if there is a possibility the first call to\ndnl PKG_CHECK_MODULES might not happen, you should be sure to include an\ndnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac\nAC_DEFUN([PKG_CHECK_MODULES],\n[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl\nAC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl\nAC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl\n\npkg_failed=no\nAC_MSG_CHECKING([for $1])\n\n_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])\n_PKG_CONFIG([$1][_LIBS], [libs], [$2])\n\nm4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS\nand $1[]_LIBS to avoid the need to call pkg-config.\nSee the pkg-config man page for more details.])\n\nif test $pkg_failed = yes; then\n   \tAC_MSG_RESULT([no])\n        _PKG_SHORT_ERRORS_SUPPORTED\n        if test $_pkg_short_errors_supported = yes; then\n\t        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs \"$2\" 2>&1`\n        else \n\t        $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs \"$2\" 2>&1`\n        fi\n\t# Put the nasty error message in config.log where it belongs\n\techo \"$$1[]_PKG_ERRORS\" >&AS_MESSAGE_LOG_FD\n\n\tm4_default([$4], [AC_MSG_ERROR(\n[Package requirements ($2) were not met:\n\n$$1_PKG_ERRORS\n\nConsider adjusting the PKG_CONFIG_PATH environment variable if you\ninstalled software in a non-standard prefix.\n\n_PKG_TEXT])[]dnl\n        ])\nelif test $pkg_failed = untried; then\n     \tAC_MSG_RESULT([no])\n\tm4_default([$4], [AC_MSG_FAILURE(\n[The pkg-config script could not be found or is too old.  Make sure it\nis in your PATH or set the PKG_CONFIG environment variable to the full\npath to pkg-config.\n\n_PKG_TEXT\n\nTo get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl\n        ])\nelse\n\t$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS\n\t$1[]_LIBS=$pkg_cv_[]$1[]_LIBS\n        AC_MSG_RESULT([yes])\n\t$3\nfi[]dnl\n])dnl PKG_CHECK_MODULES\n\n\ndnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],\ndnl   [ACTION-IF-NOT-FOUND])\ndnl ---------------------------------------------------------------------\ndnl Since: 0.29\ndnl\ndnl Checks for existence of MODULES and gathers its build flags with\ndnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags\ndnl and VARIABLE-PREFIX_LIBS from --libs.\ndnl\ndnl Note that if there is a possibility the first call to\ndnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to\ndnl include an explicit call to PKG_PROG_PKG_CONFIG in your\ndnl configure.ac.\nAC_DEFUN([PKG_CHECK_MODULES_STATIC],\n[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl\n_save_PKG_CONFIG=$PKG_CONFIG\nPKG_CONFIG=\"$PKG_CONFIG --static\"\nPKG_CHECK_MODULES($@)\nPKG_CONFIG=$_save_PKG_CONFIG[]dnl\n])dnl PKG_CHECK_MODULES_STATIC\n\n\ndnl PKG_INSTALLDIR([DIRECTORY])\ndnl -------------------------\ndnl Since: 0.27\ndnl\ndnl Substitutes the variable pkgconfigdir as the location where a module\ndnl should install pkg-config .pc files. By default the directory is\ndnl $libdir/pkgconfig, but the default can be changed by passing\ndnl DIRECTORY. The user can override through the --with-pkgconfigdir\ndnl parameter.\nAC_DEFUN([PKG_INSTALLDIR],\n[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])\nm4_pushdef([pkg_description],\n    [pkg-config installation directory @<:@]pkg_default[@:>@])\nAC_ARG_WITH([pkgconfigdir],\n    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,\n    [with_pkgconfigdir=]pkg_default)\nAC_SUBST([pkgconfigdir], [$with_pkgconfigdir])\nm4_popdef([pkg_default])\nm4_popdef([pkg_description])\n])dnl PKG_INSTALLDIR\n\n\ndnl PKG_NOARCH_INSTALLDIR([DIRECTORY])\ndnl --------------------------------\ndnl Since: 0.27\ndnl\ndnl Substitutes the variable noarch_pkgconfigdir as the location where a\ndnl module should install arch-independent pkg-config .pc files. By\ndnl default the directory is $datadir/pkgconfig, but the default can be\ndnl changed by passing DIRECTORY. The user can override through the\ndnl --with-noarch-pkgconfigdir parameter.\nAC_DEFUN([PKG_NOARCH_INSTALLDIR],\n[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])\nm4_pushdef([pkg_description],\n    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])\nAC_ARG_WITH([noarch-pkgconfigdir],\n    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,\n    [with_noarch_pkgconfigdir=]pkg_default)\nAC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])\nm4_popdef([pkg_default])\nm4_popdef([pkg_description])\n])dnl PKG_NOARCH_INSTALLDIR\n\n\ndnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,\ndnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])\ndnl -------------------------------------------\ndnl Since: 0.28\ndnl\ndnl Retrieves the value of the pkg-config variable for the given module.\nAC_DEFUN([PKG_CHECK_VAR],\n[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl\nAC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl\n\n_PKG_CONFIG([$1], [variable=\"][$3][\"], [$2])\nAS_VAR_COPY([$1], [pkg_cv_][$1])\n\nAS_VAR_IF([$1], [\"\"], [$5], [$4])dnl\n])dnl PKG_CHECK_VAR\n"
  },
  {
    "path": "src/Makefile.am",
    "content": "\nSUBDIRS = protocol protobufs keys\n"
  },
  {
    "path": "src/backend/openssl/cipher-aesgcm.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <openssl/conf.h>\n#include <openssl/evp.h>\n#include <openssl/err.h>\n#include <string.h>\n\ntypedef struct\n{\n    struct NoiseCipherState_s parent;\n    EVP_CIPHER_CTX *ctx;\n\n\tuint8_t iv[12];\n    uint8_t key[32];\n} NoiseAESGCMState;\n\nstatic void noise_aesgcm_init_key\n    (NoiseCipherState *state, const uint8_t *key)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n\n    memcpy(st->key, key, 32);\n}\n\n#define PUT_UINT64_BE(buf, value) \\\n    do { \\\n        uint64_t _value = (value); \\\n        (buf)[0] = (uint8_t)(_value >> 56); \\\n        (buf)[1] = (uint8_t)(_value >> 48); \\\n        (buf)[2] = (uint8_t)(_value >> 40); \\\n        (buf)[3] = (uint8_t)(_value >> 32); \\\n        (buf)[4] = (uint8_t)(_value >> 24); \\\n        (buf)[5] = (uint8_t)(_value >> 16); \\\n        (buf)[6] = (uint8_t)(_value >> 8); \\\n        (buf)[7] = (uint8_t)_value; \\\n    } while (0)\n\n/**\n * \\brief Sets up the IV to start encrypting or decrypting a block.\n *\n * \\param st The cipher state for AESGCM.\n */\nstatic void noise_aesgcm_setup_iv(NoiseAESGCMState *st)\n{\n    /* The 96-bit nonce is formed by encoding 32 bits of zeros followed by big-endian encoding of n */\n    memset(st->iv, 0, 4);\n    PUT_UINT64_BE(st->iv + 4, st->parent.n);\n}\n\nstatic int noise_aesgcm_encrypt(NoiseCipherState *state, const uint8_t *ad, size_t ad_len, uint8_t *data, size_t data_len)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n\n    if (EVP_CIPHER_CTX_cleanup(st->ctx) <= 0) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n\n    noise_aesgcm_setup_iv(st);\n\n    if (EVP_EncryptInit_ex(st->ctx, EVP_aes_256_gcm(), NULL, st->key, st->iv) != 1) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n\n    /* Provide any AAD data. This can be called zero or more times as\n     * required\n     */\n    int len;\n    if (ad_len > 0) {\n        if (EVP_EncryptUpdate(st->ctx, NULL, &len, ad, ad_len) != 1) {\n            ERR_clear_error();\n            return NOISE_ERROR_SYSTEM;\n        }\n    }\n\n    /* Provide the message to be encrypted, and obtain the encrypted output.\n     * EVP_EncryptUpdate can be called multiple times if necessary\n     */\n    uint8_t out[data_len];\n    if (EVP_EncryptUpdate(st->ctx, out, &len, data, data_len) != 1) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n    int ciphertext_len = len;\n\n    /* Finalise the encryption. Normally ciphertext bytes may be written at\n     * this stage, but this does not occur in GCM mode\n     */\n    if (EVP_EncryptFinal_ex(st->ctx, out + len, &len) != 1) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n    ciphertext_len += len;\n\n    /* Get the tag */\n    if (EVP_CIPHER_CTX_ctrl(st->ctx, EVP_CTRL_GCM_GET_TAG, 16, data + ciphertext_len) != 1) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n\n    memcpy(data, out, ciphertext_len);\n\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_aesgcm_decrypt(NoiseCipherState *state, const uint8_t *ad, size_t ad_len, uint8_t *data, size_t data_len)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n\n    if (EVP_CIPHER_CTX_cleanup(st->ctx) <= 0) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n\n    noise_aesgcm_setup_iv(st);\n\n    if (EVP_DecryptInit_ex(st->ctx, EVP_aes_256_gcm(), NULL, st->key, st->iv) != 1) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n\n    /* Provide any AAD data. This can be called zero or more times as\n     * required\n     */\n    int len;\n    if (ad_len > 0) {\n        if (!EVP_DecryptUpdate(st->ctx, NULL, &len, ad, ad_len)) {\n            ERR_clear_error();\n            return NOISE_ERROR_SYSTEM;\n        }\n    }\n\n    /* Provide the message to be decrypted, and obtain the plaintext output.\n     * EVP_DecryptUpdate can be called multiple times if necessary\n     */\n    if (!EVP_DecryptUpdate(st->ctx, data, &len, data, data_len)) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n\n    /* Set expected tag value. Works in OpenSSL 1.0.1d and later */\n    if (!EVP_CIPHER_CTX_ctrl(st->ctx, EVP_CTRL_GCM_SET_TAG, 16, data + len)) {\n        ERR_clear_error();\n        return NOISE_ERROR_SYSTEM;\n    }\n\n    /* Finalise the decryption. A positive return value indicates success,\n     * anything else is a failure - the plaintext is not trustworthy.\n     */\n    if (EVP_DecryptFinal_ex(st->ctx, data + len, &len) <= 0) {\n        ERR_clear_error();\n        return NOISE_ERROR_MAC_FAILURE;\n    }\n\n    return NOISE_ERROR_NONE;\n}\n\nvoid noise_aesgcm_free(NoiseCipherState *state)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n\n    EVP_CIPHER_CTX_free(st->ctx);\n}\n\nNoiseCipherState *noise_aesgcm_new_openssl(void)\n{\n    NoiseAESGCMState *state = noise_new(NoiseAESGCMState);\n    if (!state)\n        return 0;\n    if (!(state->ctx = EVP_CIPHER_CTX_new()))\n        return 0;\n    state->parent.cipher_id = NOISE_CIPHER_AESGCM;\n    state->parent.key_len = 32;\n    state->parent.mac_len = 16;\n    state->parent.create = noise_aesgcm_new_openssl;\n    state->parent.destroy = noise_aesgcm_free;\n    state->parent.init_key = noise_aesgcm_init_key;\n    state->parent.encrypt = noise_aesgcm_encrypt;\n    state->parent.decrypt = noise_aesgcm_decrypt;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/cipher-aesgcm.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/aes/rijndael-alg-fst.h\"\n#include \"crypto/ghash/ghash.h\"\n#include <string.h>\n\ntypedef struct\n{\n    struct NoiseCipherState_s parent;\n    uint32_t aes[4 * (MAXNR + 1)];\n    ghash_state ghash;\n    uint8_t counter[16];\n    uint8_t hash[16];\n\n} NoiseAESGCMState;\n\nstatic void noise_aesgcm_init_key\n    (NoiseCipherState *state, const uint8_t *key)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n\n    /* Set the encryption key */\n    rijndaelKeySetupEnc(st->aes, key, 256);\n\n    /* Construct the hashing key by encrypting a block of zeroes */\n    memset(st->counter, 0, 16);\n    rijndaelEncrypt(st->aes, MAXNR, st->counter, st->hash);\n    ghash_reset(&(st->ghash), st->hash);\n}\n\n#define PUT_UINT64(buf, value) \\\n    do { \\\n        uint64_t _value = (value); \\\n        (buf)[0] = (uint8_t)(_value >> 56); \\\n        (buf)[1] = (uint8_t)(_value >> 48); \\\n        (buf)[2] = (uint8_t)(_value >> 40); \\\n        (buf)[3] = (uint8_t)(_value >> 32); \\\n        (buf)[4] = (uint8_t)(_value >> 24); \\\n        (buf)[5] = (uint8_t)(_value >> 16); \\\n        (buf)[6] = (uint8_t)(_value >> 8); \\\n        (buf)[7] = (uint8_t)_value; \\\n    } while (0)\n\n/**\n * \\brief Sets up the IV to start encrypting or decrypting a block.\n *\n * \\param st The cipher state for AESGCM.\n */\nstatic void noise_aesgcm_setup_iv(NoiseAESGCMState *st)\n{\n    uint64_t n = st->parent.n;\n\n    /* Set up the initial counter block */\n    st->counter[0] = 0;\n    st->counter[1] = 0;\n    st->counter[2] = 0;\n    st->counter[3] = 0;\n    PUT_UINT64(st->counter + 4, n);\n    st->counter[12] = 0;\n    st->counter[13] = 0;\n    st->counter[14] = 0;\n    st->counter[15] = 1;\n\n    /* Encrypt the counter to create the value to XOR with the hash later */\n    rijndaelEncrypt(st->aes, MAXNR, st->counter, st->hash);\n\n    /* Reset the GHASH state, but keep the same key as before */\n    ghash_reset(&(st->ghash), 0);\n}\n\n/**\n * \\brief Encrypts or decrypts a block.\n *\n * \\param st The cipher state for AESGCM.\n * \\param data The data to be encrypted or decrypted.\n * \\param len The length of the data to be encrypted or decrypted in bytes.\n */\nstatic void noise_aesgcm_encrypt_or_decrypt\n    (NoiseAESGCMState *st, uint8_t *data, size_t len)\n{\n    uint8_t temp, index;\n    uint8_t keystream[16];\n    while (len > 0) {\n        /* Increment the counter block and encrypt to get keystream data.\n           We only need to increment the last two bytes of the counter\n           because the maximum payload size of 65535 bytes means a maximum\n           counter value of 4097 (+1 for the hashing nonce) */\n        uint16_t counter = (((uint16_t)(st->counter[15])) |\n                           (((uint16_t)(st->counter[14])) << 8)) + 1;\n        st->counter[15] = (uint8_t)counter;\n        st->counter[14] = (uint8_t)(counter >> 8);\n        rijndaelEncrypt(st->aes, MAXNR, st->counter, keystream);\n\n        /* XOR the input with the keystream block to generate the output */\n        temp = 16;\n        if (temp > len)\n            temp = len;\n        for (index = 0; index < temp; ++index)\n            data[index] ^= keystream[index];\n        data += temp;\n        len -= temp;\n    }\n    noise_clean(keystream, sizeof(keystream));\n}\n\n/**\n * \\brief Finalizes the GHASH state.\n *\n * \\param st The cipher state for AESGCM.\n * \\param hash The buffer where to place the final hash value.\n * \\param ad_len The length of the associated data.\n * \\param data_len The length of the plaintext data.\n */\nstatic void noise_aesgcm_finalize_hash\n    (NoiseAESGCMState *st, uint8_t *hash, size_t ad_len, size_t data_len)\n{\n    uint8_t *value;\n    uint8_t index;\n    uint8_t block[16];\n\n    /* Pad the GHASH data to a 16-byte boundary */\n    ghash_pad(&(st->ghash));\n\n    /* Add the sizes (in bits, not bytes) in a final block */\n    PUT_UINT64(block, ((uint64_t)ad_len) * 8);\n    PUT_UINT64(block + 8, ((uint64_t)data_len) * 8);\n    ghash_update(&(st->ghash), block, 16);\n\n    /* Read the result directly out of ghash.Y and XOR with the hash nonce */\n    value = (uint8_t *)(st->ghash.Y);\n    for (index = 0; index < 16; ++index)\n        hash[index] = st->hash[index] ^ value[index];\n}\n\nstatic int noise_aesgcm_encrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n    noise_aesgcm_setup_iv(st);\n    if (ad_len) {\n        ghash_update(&(st->ghash), ad, ad_len);\n        ghash_pad(&(st->ghash));\n    }\n    noise_aesgcm_encrypt_or_decrypt(st, data, len);\n    ghash_update(&(st->ghash), data, len);\n    noise_aesgcm_finalize_hash(st, data + len, ad_len, len);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_aesgcm_decrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n    noise_aesgcm_setup_iv(st);\n    if (ad_len) {\n        ghash_update(&(st->ghash), ad, ad_len);\n        ghash_pad(&(st->ghash));\n    }\n    ghash_update(&(st->ghash), data, len);\n    noise_aesgcm_finalize_hash(st, st->hash, ad_len, len);\n    if (!noise_is_equal(data + len, st->hash, 16))\n        return NOISE_ERROR_MAC_FAILURE;\n    noise_aesgcm_encrypt_or_decrypt(st, data, len);\n    return NOISE_ERROR_NONE;\n}\n\nNoiseCipherState *noise_aesgcm_new_ref(void)\n{\n    NoiseAESGCMState *state = noise_new(NoiseAESGCMState);\n    if (!state)\n        return 0;\n    state->parent.cipher_id = NOISE_CIPHER_AESGCM;\n    state->parent.key_len = 32;\n    state->parent.mac_len = 16;\n    state->parent.create = noise_aesgcm_new_ref;\n    state->parent.init_key = noise_aesgcm_init_key;\n    state->parent.encrypt = noise_aesgcm_encrypt;\n    state->parent.decrypt = noise_aesgcm_decrypt;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/cipher-chachapoly.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/chacha/chacha.h\"\n#include \"crypto/donna/poly1305-donna.h\"\n#include <string.h>\n\ntypedef struct\n{\n    struct NoiseCipherState_s parent;\n    chacha_ctx chacha;\n    poly1305_context poly1305;\n    uint8_t block[64];\n\n} NoiseChaChaPolyState;\n\nstatic void noise_chachapoly_init_key\n    (NoiseCipherState *state, const uint8_t *key)\n{\n    NoiseChaChaPolyState *st = (NoiseChaChaPolyState *)state;\n    chacha_keysetup(&(st->chacha), key, 256);\n}\n\n#define PUT_UINT64(buf, value) \\\n    do { \\\n        (buf)[0] = (uint8_t)(value); \\\n        (buf)[1] = (uint8_t)((value) >> 8); \\\n        (buf)[2] = (uint8_t)((value) >> 16); \\\n        (buf)[3] = (uint8_t)((value) >> 24); \\\n        (buf)[4] = (uint8_t)((value) >> 32); \\\n        (buf)[5] = (uint8_t)((value) >> 40); \\\n        (buf)[6] = (uint8_t)((value) >> 48); \\\n        (buf)[7] = (uint8_t)((value) >> 56); \\\n    } while (0)\n\n/**\n * \\brief Sets up a ChaChaPoly context to encrypt/decrypt a block.\n *\n * \\param st The encryption state for ChaChaPoly.\n * \\param n The nonce for this block.\n */\nstatic void noise_chachapoly_setup(NoiseChaChaPolyState *st, uint64_t n)\n{\n    /* Set the initialization vector to the supplied nonce */\n    PUT_UINT64(st->block, n);\n    chacha_ivsetup(&(st->chacha), st->block, 0);\n\n    /* Encrypt an initial block to create the Poly1305 key */\n    memset(st->block, 0, 64);\n    chacha_encrypt_bytes(&(st->chacha), st->block, st->block, 64);\n    poly1305_init(&(st->poly1305), st->block);\n    noise_clean(st->block, sizeof(st->block));\n}\n\n/**\n * \\brief Pads the Poly1305 input to a multiple of 16 bytes.\n *\n * \\param st The encryption state for ChaChaPoly.\n * \\param len The length of the input that needs to be padded.\n */\nstatic void noise_chachapoly_pad_auth(NoiseChaChaPolyState *st, size_t len)\n{\n    len %= 16;\n    if (len) {\n        static uint8_t const padding[16] = {\n            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n        };\n        poly1305_update(&(st->poly1305), padding, 16 - len);\n    }\n}\n\n/**\n * \\brief Finalize the Poly1305 hash by adding the lengths.\n *\n * \\param st The encryption state for ChaChaPoly.\n * \\param ad_len The length of the associated data.\n * \\param data_len The length of the ciphertext.\n */\nstatic void noise_chachapoly_auth_lengths\n    (NoiseChaChaPolyState *st, uint64_t ad_len, uint64_t data_len)\n{\n    PUT_UINT64(st->block, ad_len);\n    PUT_UINT64(st->block + 8, data_len);\n    poly1305_update(&(st->poly1305), st->block, 16);\n}\n\nstatic int noise_chachapoly_encrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseChaChaPolyState *st = (NoiseChaChaPolyState *)state;\n    noise_chachapoly_setup(st, state->n);\n    if (ad_len) {\n        poly1305_update(&(st->poly1305), ad, ad_len);\n        noise_chachapoly_pad_auth(st, ad_len);\n    }\n    chacha_encrypt_bytes(&(st->chacha), data, data, len);\n    poly1305_update(&(st->poly1305), data, len);\n    noise_chachapoly_pad_auth(st, len);\n    noise_chachapoly_auth_lengths(st, ad_len, len);\n    poly1305_finish(&(st->poly1305), data + len);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_chachapoly_decrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseChaChaPolyState *st = (NoiseChaChaPolyState *)state;\n    noise_chachapoly_setup(st, state->n);\n    if (ad_len) {\n        poly1305_update(&(st->poly1305), ad, ad_len);\n        noise_chachapoly_pad_auth(st, ad_len);\n    }\n    poly1305_update(&(st->poly1305), data, len);\n    noise_chachapoly_pad_auth(st, len);\n    noise_chachapoly_auth_lengths(st, ad_len, len);\n    poly1305_finish(&(st->poly1305), st->block);\n    if (!noise_is_equal(st->block, data + len, 16))\n        return NOISE_ERROR_MAC_FAILURE;\n    chacha_encrypt_bytes(&(st->chacha), data, data, len);\n    return NOISE_ERROR_NONE;\n}\n\nNoiseCipherState *noise_chachapoly_new(void)\n{\n    NoiseChaChaPolyState *state = noise_new(NoiseChaChaPolyState);\n    if (!state)\n        return 0;\n    state->parent.cipher_id = NOISE_CIPHER_CHACHAPOLY;\n    state->parent.key_len = 32;\n    state->parent.mac_len = 16;\n    state->parent.create = noise_chachapoly_new;\n    state->parent.init_key = noise_chachapoly_init_key;\n    state->parent.encrypt = noise_chachapoly_encrypt;\n    state->parent.decrypt = noise_chachapoly_decrypt;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/dh-curve25519.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/ed25519/ed25519.h\"\n#include <string.h>\n\n/* We use ed25519's faster curved25519_scalarmult_basepoint() function\n   when deriving a public key from a private key.  Unfortunately ed25519\n   doesn't have an equivalent function for general curve25519 calculations\n   so we fall back to the curve25519-donna implementation for that. */\n\nint curve25519_donna(uint8_t *mypublic, const uint8_t *secret, const uint8_t *basepoint);\n\ntypedef struct\n{\n    struct NoiseDHState_s parent;\n    uint8_t private_key[32];\n    uint8_t public_key[32];\n\n} NoiseCurve25519State;\n\nstatic int noise_curve25519_generate_keypair\n    (NoiseDHState *state, const NoiseDHState *other)\n{\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    noise_rand_bytes(st->private_key, 32);\n    st->private_key[0] &= 0xF8;\n    st->private_key[31] = (st->private_key[31] & 0x7F) | 0x40;\n    curved25519_scalarmult_basepoint(st->public_key, st->private_key);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_set_keypair\n        (NoiseDHState *state, const uint8_t *private_key,\n         const uint8_t *public_key)\n{\n    /* Check that the public key actually corresponds to the private key */\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    uint8_t temp[32];\n    int equal;\n    curved25519_scalarmult_basepoint(temp, private_key);\n    equal = noise_is_equal(temp, public_key, 32);\n    memcpy(st->private_key, private_key, 32);\n    memcpy(st->public_key, public_key, 32);\n    return NOISE_ERROR_INVALID_PUBLIC_KEY & (equal - 1);\n}\n\nstatic int noise_curve25519_set_keypair_private\n        (NoiseDHState *state, const uint8_t *private_key)\n{\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    memcpy(st->private_key, private_key, 32);\n    curved25519_scalarmult_basepoint(st->public_key, st->private_key);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_validate_public_key\n        (const NoiseDHState *state, const uint8_t *public_key)\n{\n    /* Nothing to do here yet */\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_copy\n    (NoiseDHState *state, const NoiseDHState *from, const NoiseDHState *other)\n{\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    const NoiseCurve25519State *from_st = (const NoiseCurve25519State *)from;\n    memcpy(st->private_key, from_st->private_key, 32);\n    memcpy(st->public_key, from_st->public_key, 32);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_calculate\n    (const NoiseDHState *private_key_state,\n     const NoiseDHState *public_key_state,\n     uint8_t *shared_key)\n{\n    /* Do we need to check that the public key is less than 2^255 - 19? */\n    curve25519_donna(shared_key, private_key_state->private_key,\n                     public_key_state->public_key);\n    return NOISE_ERROR_NONE;\n}\n\nNoiseDHState *noise_curve25519_new(void)\n{\n    NoiseCurve25519State *state = noise_new(NoiseCurve25519State);\n    if (!state)\n        return 0;\n    state->parent.dh_id = NOISE_DH_CURVE25519;\n    state->parent.nulls_allowed = 1;\n    state->parent.private_key_len = 32;\n    state->parent.public_key_len = 32;\n    state->parent.shared_key_len = 32;\n    state->parent.private_key = state->private_key;\n    state->parent.public_key = state->public_key;\n    state->parent.generate_keypair = noise_curve25519_generate_keypair;\n    state->parent.set_keypair = noise_curve25519_set_keypair;\n    state->parent.set_keypair_private = noise_curve25519_set_keypair_private;\n    state->parent.validate_public_key = noise_curve25519_validate_public_key;\n    state->parent.copy = noise_curve25519_copy;\n    state->parent.calculate = noise_curve25519_calculate;\n    return &(state->parent);\n}\n\n/* Choose the version of curve25519-donna based on the word size */\n#if __WORDSIZE == 64 && defined(__GNUC__)\n#include \"crypto/donna/curve25519-donna-c64.c\"\n#else\n#include \"crypto/donna/curve25519-donna.c\"\n#endif\n"
  },
  {
    "path": "src/backend/ref/dh-curve448.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/curve448/curve448.h\"\n#include <string.h>\n\ntypedef struct\n{\n    struct NoiseDHState_s parent;\n    uint8_t private_key[56];\n    uint8_t public_key[56];\n\n} NoiseCurve448State;\n\n/* Curve448 base point from RFC 7748, 5 in little-endian order */\nstatic uint8_t const basepoint[56] = {5};\n\nstatic int noise_curve448_generate_keypair\n    (NoiseDHState *state, const NoiseDHState *other)\n{\n    NoiseCurve448State *st = (NoiseCurve448State *)state;\n\n    /* Generate 56 bytes of random data and modify bits to put it\n       into the correct form for Curve448 private keys.  This is the\n       decodeScalar448() function from section 5 of RFC 7748 */\n    noise_rand_bytes(st->private_key, 56);\n    st->private_key[0] &= 0xFC;\n    st->private_key[55] |= 0x80;\n\n    /* Evaluate the curve operation to derive the public key */\n    curve448_eval(st->public_key, st->private_key, basepoint);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve448_set_keypair\n        (NoiseDHState *state, const uint8_t *private_key,\n         const uint8_t *public_key)\n{\n    /* Check that the public key actually corresponds to the private key */\n    NoiseCurve448State *st = (NoiseCurve448State *)state;\n    uint8_t temp[56];\n    int equal;\n    curve448_eval(temp, private_key, basepoint);\n    equal = noise_is_equal(temp, public_key, 56);\n    memcpy(st->private_key, private_key, 56);\n    memcpy(st->public_key, public_key, 56);\n    return NOISE_ERROR_INVALID_PUBLIC_KEY & (equal - 1);\n}\n\nstatic int noise_curve448_set_keypair_private\n        (NoiseDHState *state, const uint8_t *private_key)\n{\n    NoiseCurve448State *st = (NoiseCurve448State *)state;\n    memcpy(st->private_key, private_key, 56);\n    curve448_eval(st->public_key, st->private_key, basepoint);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve448_validate_public_key\n        (const NoiseDHState *state, const uint8_t *public_key)\n{\n    /* Nothing to do here yet */\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve448_copy\n    (NoiseDHState *state, const NoiseDHState *from, const NoiseDHState *other)\n{\n    NoiseCurve448State *st = (NoiseCurve448State *)state;\n    const NoiseCurve448State *from_st = (const NoiseCurve448State *)from;\n    memcpy(st->private_key, from_st->private_key, 56);\n    memcpy(st->public_key, from_st->public_key, 56);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve448_calculate\n    (const NoiseDHState *private_key_state,\n     const NoiseDHState *public_key_state,\n     uint8_t *shared_key)\n{\n    int result = curve448_eval\n        (shared_key, private_key_state->private_key,\n         public_key_state->public_key);\n    return NOISE_ERROR_INVALID_PUBLIC_KEY & (result - 1);\n}\n\nNoiseDHState *noise_curve448_new(void)\n{\n    NoiseCurve448State *state = noise_new(NoiseCurve448State);\n    if (!state)\n        return 0;\n    state->parent.dh_id = NOISE_DH_CURVE448;\n    state->parent.nulls_allowed = 1;\n    state->parent.private_key_len = 56;\n    state->parent.public_key_len = 56;\n    state->parent.shared_key_len = 56;\n    state->parent.private_key = state->private_key;\n    state->parent.public_key = state->public_key;\n    state->parent.generate_keypair = noise_curve448_generate_keypair;\n    state->parent.set_keypair = noise_curve448_set_keypair;\n    state->parent.set_keypair_private = noise_curve448_set_keypair_private;\n    state->parent.validate_public_key = noise_curve448_validate_public_key;\n    state->parent.copy = noise_curve448_copy;\n    state->parent.calculate = noise_curve448_calculate;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/dh-newhope.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/newhope/newhope.h\"\n#include <string.h>\n\n#define MAX_OF(a, b) ((a) > (b) ? (a) : (b))\n\ntypedef struct NoiseNewHopeState_s\n{\n    struct NoiseDHState_s parent;\n    uint8_t random_data[64];\n    uint16_t generated;\n    poly private_key;\n    uint8_t public_key[MAX_OF(NEWHOPE_SENDABYTES, NEWHOPE_SENDBBYTES)];\n\n} NoiseNewHopeState;\n\nstatic int noise_newhope_generate_keypair\n    (NoiseDHState *state, const NoiseDHState *other)\n{\n    NoiseNewHopeState *st = (NoiseNewHopeState *)state;\n    NoiseNewHopeState *os = (NoiseNewHopeState *)other;\n    if (st->parent.role == NOISE_ROLE_RESPONDER) {\n        /* Generating the keypair for Bob relative to Alice's parameters */\n        if (!os || os->parent.key_type == NOISE_KEY_TYPE_NO_KEY)\n            return NOISE_ERROR_INVALID_STATE;\n        noise_rand_bytes(st->random_data, st->parent.private_key_len);\n        newhope_sharedb((uint8_t *)&(st->private_key), st->public_key,\n                        os->public_key, st->random_data);\n    } else {\n        /* Generate the keypair for Alice */\n        noise_rand_bytes(st->random_data, st->parent.private_key_len);\n        newhope_keygen(st->public_key, &(st->private_key), st->random_data);\n    }\n    st->generated = 1;\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_newhope_set_keypair_private\n        (NoiseDHState *state, const uint8_t *private_key)\n{\n    /* The \"private key\" is actually the 64 or 32 bytes of random seed data */\n    NoiseNewHopeState *st = (NoiseNewHopeState *)state;\n    memcpy(st->random_data, private_key, st->parent.private_key_len);\n    if (st->parent.role == NOISE_ROLE_RESPONDER) {\n        /* Setting the keypair for Bob.  Because we don't know the public\n           key for Alice we cannot generate the public key for Bob yet.\n           Defer key generation until the call to calculate() */\n        memset(st->public_key, 0, sizeof(st->public_key));\n        st->generated = 0;\n    } else {\n        /* Generate the key pair for Alice from the supplied random data */\n        newhope_keygen(st->public_key, &(st->private_key), st->random_data);\n        st->generated = 1;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_newhope_set_keypair\n        (NoiseDHState *state, const uint8_t *private_key,\n         const uint8_t *public_key)\n{\n    /* Ignore the public key and re-generate from the private key */\n    return noise_newhope_set_keypair_private(state, private_key);\n}\n\nstatic int noise_newhope_validate_public_key\n        (const NoiseDHState *state, const uint8_t *public_key)\n{\n    /* Nothing to do here */\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_newhope_copy\n    (NoiseDHState *state, const NoiseDHState *from, const NoiseDHState *other)\n{\n    NoiseNewHopeState *st = (NoiseNewHopeState *)state;\n    const NoiseNewHopeState *from_st = (const NoiseNewHopeState *)from;\n    const NoiseNewHopeState *other_st = (const NoiseNewHopeState *)other;\n    memcpy(st->random_data, from_st->random_data, sizeof(st->random_data));\n    st->generated = from_st->generated;\n    memcpy(&(st->private_key), &(from_st->private_key),\n           sizeof(st->private_key));\n    memcpy(st->public_key, from_st->public_key, sizeof(st->public_key));\n    if (st->parent.role == NOISE_ROLE_RESPONDER && !(st->generated) &&\n            from_st->parent.key_type == NOISE_KEY_TYPE_KEYPAIR && other_st) {\n        /* We are copying a key pair for Bob but we didn't have the\n           public key for Alice when we set Bob's private key.  We have\n           the public key for Alice now so generate Bob's actual key */\n        newhope_sharedb((uint8_t *)&(st->private_key), st->public_key,\n                        other_st->public_key, st->random_data);\n        st->generated = 1;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_newhope_calculate\n    (const NoiseDHState *private_key_state,\n     const NoiseDHState *public_key_state,\n     uint8_t *shared_key)\n{\n    NoiseNewHopeState *priv_st = (NoiseNewHopeState *)private_key_state;\n    NoiseNewHopeState *pub_st = (NoiseNewHopeState *)public_key_state;\n    if (priv_st->parent.role == NOISE_ROLE_RESPONDER) {\n        if (!priv_st->generated) {\n            /* Bob's private key was set explicitly, which means that we\n               didn't know Alice's public key at the time.  We do know\n               Alice's public key now, so generate Bob's key pair now */\n            newhope_sharedb(shared_key, priv_st->public_key,\n                            pub_st->public_key, priv_st->random_data);\n        } else {\n            /* We already generated the shared secret for Bob when we\n             * generated the \"keypair\" for him. */\n            memcpy(shared_key, &(priv_st->private_key), 32);\n        }\n    } else {\n        /* Generate the shared secret for Alice */\n        newhope_shareda(shared_key, &(priv_st->private_key), pub_st->public_key);\n    }\n    return NOISE_ERROR_NONE;\n}\n\nstatic void noise_newhope_change_role(NoiseDHState *state)\n{\n    /* Change the size of the keys based on the object's role */\n    if (state->role == NOISE_ROLE_RESPONDER) {\n        state->private_key_len = 32;\n        state->public_key_len = NEWHOPE_SENDBBYTES;\n    } else {\n        state->private_key_len = 64;\n        state->public_key_len = NEWHOPE_SENDABYTES;\n    }\n}\n\nNoiseDHState *noise_newhope_new(void)\n{\n    NoiseNewHopeState *state = noise_new(NoiseNewHopeState);\n    if (!state)\n        return 0;\n    state->parent.dh_id = NOISE_DH_NEWHOPE;\n    state->parent.ephemeral_only = 1;\n    state->parent.nulls_allowed = 0;\n    state->parent.private_key_len = 64;\n    state->parent.public_key_len = NEWHOPE_SENDABYTES;\n    state->parent.shared_key_len = 32;\n    state->parent.private_key = state->random_data;\n    state->parent.public_key = state->public_key;\n    state->parent.generate_keypair = noise_newhope_generate_keypair;\n    state->parent.set_keypair = noise_newhope_set_keypair;\n    state->parent.set_keypair_private = noise_newhope_set_keypair_private;\n    state->parent.validate_public_key = noise_newhope_validate_public_key;\n    state->parent.copy = noise_newhope_copy;\n    state->parent.calculate = noise_newhope_calculate;\n    state->parent.change_role = noise_newhope_change_role;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/hash-blake2b.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/blake2/blake2b.h\"\n\ntypedef struct\n{\n    struct NoiseHashState_s parent;\n    BLAKE2b_context_t blake2;\n\n} NoiseBLAKE2bState;\n\nstatic void noise_blake2b_reset(NoiseHashState *state)\n{\n    NoiseBLAKE2bState *st = (NoiseBLAKE2bState *)state;\n    BLAKE2b_reset(&(st->blake2));\n}\n\nstatic void noise_blake2b_update(NoiseHashState *state, const uint8_t *data, size_t len)\n{\n    NoiseBLAKE2bState *st = (NoiseBLAKE2bState *)state;\n    BLAKE2b_update(&(st->blake2), data, len);\n}\n\nstatic void noise_blake2b_finalize(NoiseHashState *state, uint8_t *hash)\n{\n    NoiseBLAKE2bState *st = (NoiseBLAKE2bState *)state;\n    BLAKE2b_finish(&(st->blake2), hash);\n}\n\nNoiseHashState *noise_blake2b_new(void)\n{\n    NoiseBLAKE2bState *state = noise_new(NoiseBLAKE2bState);\n    if (!state)\n        return 0;\n    state->parent.hash_id = NOISE_HASH_BLAKE2b;\n    state->parent.hash_len = 64;\n    state->parent.block_len = 128;\n    state->parent.reset = noise_blake2b_reset;\n    state->parent.update = noise_blake2b_update;\n    state->parent.finalize = noise_blake2b_finalize;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/hash-blake2s.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/blake2/blake2s.h\"\n\ntypedef struct\n{\n    struct NoiseHashState_s parent;\n    BLAKE2s_context_t blake2;\n\n} NoiseBLAKE2sState;\n\nstatic void noise_blake2s_reset(NoiseHashState *state)\n{\n    NoiseBLAKE2sState *st = (NoiseBLAKE2sState *)state;\n    BLAKE2s_reset(&(st->blake2));\n}\n\nstatic void noise_blake2s_update(NoiseHashState *state, const uint8_t *data, size_t len)\n{\n    NoiseBLAKE2sState *st = (NoiseBLAKE2sState *)state;\n    BLAKE2s_update(&(st->blake2), data, len);\n}\n\nstatic void noise_blake2s_finalize(NoiseHashState *state, uint8_t *hash)\n{\n    NoiseBLAKE2sState *st = (NoiseBLAKE2sState *)state;\n    BLAKE2s_finish(&(st->blake2), hash);\n}\n\nNoiseHashState *noise_blake2s_new(void)\n{\n    NoiseBLAKE2sState *state = noise_new(NoiseBLAKE2sState);\n    if (!state)\n        return 0;\n    state->parent.hash_id = NOISE_HASH_BLAKE2s;\n    state->parent.hash_len = 32;\n    state->parent.block_len = 64;\n    state->parent.reset = noise_blake2s_reset;\n    state->parent.update = noise_blake2s_update;\n    state->parent.finalize = noise_blake2s_finalize;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/hash-sha256.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/sha2/sha256.h\"\n\ntypedef struct\n{\n    struct NoiseHashState_s parent;\n    sha256_context_t sha256;\n\n} NoiseSHA256State;\n\nstatic void noise_sha256_reset(NoiseHashState *state)\n{\n    NoiseSHA256State *st = (NoiseSHA256State *)state;\n    sha256_reset(&(st->sha256));\n}\n\nstatic void noise_sha256_update(NoiseHashState *state, const uint8_t *data, size_t len)\n{\n    NoiseSHA256State *st = (NoiseSHA256State *)state;\n    sha256_update(&(st->sha256), data, len);\n}\n\nstatic void noise_sha256_finalize(NoiseHashState *state, uint8_t *hash)\n{\n    NoiseSHA256State *st = (NoiseSHA256State *)state;\n    sha256_finish(&(st->sha256), hash);\n}\n\nNoiseHashState *noise_sha256_new(void)\n{\n    NoiseSHA256State *state = noise_new(NoiseSHA256State);\n    if (!state)\n        return 0;\n    state->parent.hash_id = NOISE_HASH_SHA256;\n    state->parent.hash_len = 32;\n    state->parent.block_len = 64;\n    state->parent.reset = noise_sha256_reset;\n    state->parent.update = noise_sha256_update;\n    state->parent.finalize = noise_sha256_finalize;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/hash-sha512.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/sha2/sha512.h\"\n\ntypedef struct\n{\n    struct NoiseHashState_s parent;\n    sha512_context_t sha512;\n\n} NoiseSHA512State;\n\nstatic void noise_sha512_reset(NoiseHashState *state)\n{\n    NoiseSHA512State *st = (NoiseSHA512State *)state;\n    sha512_reset(&(st->sha512));\n}\n\nstatic void noise_sha512_update(NoiseHashState *state, const uint8_t *data, size_t len)\n{\n    NoiseSHA512State *st = (NoiseSHA512State *)state;\n    sha512_update(&(st->sha512), data, len);\n}\n\nstatic void noise_sha512_finalize(NoiseHashState *state, uint8_t *hash)\n{\n    NoiseSHA512State *st = (NoiseSHA512State *)state;\n    sha512_finish(&(st->sha512), hash);\n}\n\nNoiseHashState *noise_sha512_new(void)\n{\n    NoiseSHA512State *state = noise_new(NoiseSHA512State);\n    if (!state)\n        return 0;\n    state->parent.hash_id = NOISE_HASH_SHA512;\n    state->parent.hash_len = 64;\n    state->parent.block_len = 128;\n    state->parent.reset = noise_sha512_reset;\n    state->parent.update = noise_sha512_update;\n    state->parent.finalize = noise_sha512_finalize;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/ref/sign-ed25519.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include \"crypto/ed25519/ed25519.h\"\n\ntypedef struct\n{\n    struct NoiseSignState_s parent;\n    uint8_t private_key[32];\n    uint8_t public_key[32];\n\n} NoiseEd25519State;\n\nstatic void noise_ed25519_generate_keypair(NoiseSignState *state)\n{\n    NoiseEd25519State *st = (NoiseEd25519State *)state;\n    noise_rand_bytes(st->private_key, 32);\n    st->private_key[0] &= 0xF8;\n    st->private_key[31] = (st->private_key[31] & 0x7F) | 0x40;\n    ed25519_publickey(st->private_key, st->public_key);\n}\n\nstatic int noise_ed25519_validate_keypair\n        (const NoiseSignState *state, const uint8_t *private_key,\n         const uint8_t *public_key)\n{\n    /* Check that the public key actually corresponds to the private key */\n    uint8_t temp[32];\n    int equal;\n    ed25519_publickey(private_key, temp);\n    equal = noise_is_equal(temp, public_key, 32);\n    return NOISE_ERROR_INVALID_PUBLIC_KEY & (equal - 1);\n}\n\nstatic int noise_ed25519_validate_public_key\n        (const NoiseSignState *state, const uint8_t *public_key)\n{\n    /* Nothing to do here yet */\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_ed25519_derive_public_key\n        (const NoiseSignState *state, const uint8_t *private_key,\n         uint8_t *public_key)\n{\n    ed25519_publickey(private_key, public_key);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_ed25519_sign\n        (const NoiseSignState *state, const uint8_t *message,\n         size_t message_len, uint8_t *signature)\n{\n    const NoiseEd25519State *st = (const NoiseEd25519State *)state;\n    ed25519_sign(message, message_len, st->private_key,\n                 st->public_key, signature);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_ed25519_verify\n        (const NoiseSignState *state, const uint8_t *message,\n         size_t message_len, const uint8_t *signature)\n{\n    const NoiseEd25519State *st = (const NoiseEd25519State *)state;\n    int result = ed25519_sign_open\n        (message, message_len, st->public_key, signature);\n    return result ? NOISE_ERROR_INVALID_SIGNATURE : NOISE_ERROR_NONE;\n}\n\nNoiseSignState *noise_ed25519_new(void)\n{\n    NoiseEd25519State *state = noise_new(NoiseEd25519State);\n    if (!state)\n        return 0;\n    state->parent.sign_id = NOISE_SIGN_ED25519;\n    state->parent.private_key_len = 32;\n    state->parent.public_key_len = 32;\n    state->parent.signature_len = 64;\n    state->parent.private_key = state->private_key;\n    state->parent.public_key = state->public_key;\n    state->parent.generate_keypair = noise_ed25519_generate_keypair;\n    state->parent.validate_keypair = noise_ed25519_validate_keypair;\n    state->parent.validate_public_key = noise_ed25519_validate_public_key;\n    state->parent.derive_public_key = noise_ed25519_derive_public_key;\n    state->parent.sign = noise_ed25519_sign;\n    state->parent.verify = noise_ed25519_verify;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/sodium/cipher-aesgcm.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <sodium.h>\n#include <string.h>\n\ntypedef struct\n{\n    struct NoiseCipherState_s parent;\n    crypto_aead_aes256gcm_state context;\n    uint8_t nonce[crypto_aead_aes256gcm_NPUBBYTES];\n    uint8_t key[crypto_aead_aes256gcm_KEYBYTES];\n} NoiseAESGCMState;\n\nstatic void noise_aesgcm_init_key\n    (NoiseCipherState *state, const uint8_t *key)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n\n    memcpy(st->key, key, crypto_aead_aes256gcm_KEYBYTES);\n    crypto_aead_aes256gcm_beforenm(&st->context, key);\n}\n\n#define PUT_UINT64_BE(buf, value) \\\n    do { \\\n        uint64_t _value = (value); \\\n        (buf)[0] = (uint8_t)(_value >> 56); \\\n        (buf)[1] = (uint8_t)(_value >> 48); \\\n        (buf)[2] = (uint8_t)(_value >> 40); \\\n        (buf)[3] = (uint8_t)(_value >> 32); \\\n        (buf)[4] = (uint8_t)(_value >> 24); \\\n        (buf)[5] = (uint8_t)(_value >> 16); \\\n        (buf)[6] = (uint8_t)(_value >> 8); \\\n        (buf)[7] = (uint8_t)_value; \\\n    } while (0)\n\n/**\n * \\brief Sets up the IV to start encrypting or decrypting a block.\n *\n * \\param st The cipher state for AESGCM.\n */\nstatic void noise_aesgcm_setup_iv(NoiseAESGCMState *st)\n{\n    /* The 96-bit nonce is formed by encoding 32 bits of zeros followed by big-endian encoding of n */\n    memset(st->nonce, 0, 4);\n    PUT_UINT64_BE(st->nonce + 4, st->parent.n);\n}\n\nstatic int noise_aesgcm_encrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n    noise_aesgcm_setup_iv(st);\n    crypto_aead_aes256gcm_encrypt_afternm(data, NULL, data, len, ad, ad_len, NULL, st->nonce, &st->context);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_aesgcm_decrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseAESGCMState *st = (NoiseAESGCMState *)state;\n    noise_aesgcm_setup_iv(st);\n    if (crypto_aead_aes256gcm_decrypt_afternm(data, NULL, NULL, data, len + crypto_aead_aes256gcm_ABYTES, ad, ad_len, st->nonce, &st->context) < 0)\n        return NOISE_ERROR_MAC_FAILURE;\n    return NOISE_ERROR_NONE;\n}\n\nNoiseCipherState *noise_aesgcm_new_sodium(void)\n{\n    NoiseAESGCMState *state = noise_new(NoiseAESGCMState);\n    if (!state)\n        return 0;\n    state->parent.cipher_id = NOISE_CIPHER_AESGCM;\n    state->parent.key_len = crypto_aead_aes256gcm_KEYBYTES;\n    state->parent.mac_len = crypto_aead_aes256gcm_ABYTES;\n    state->parent.create = noise_aesgcm_new_sodium;\n    state->parent.init_key = noise_aesgcm_init_key;\n    state->parent.encrypt = noise_aesgcm_encrypt;\n    state->parent.decrypt = noise_aesgcm_decrypt;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/sodium/cipher-chachapoly.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <sodium.h>\n#include <string.h>\n\ntypedef struct\n{\n    struct NoiseCipherState_s parent;\n    uint8_t chacha_k[crypto_stream_chacha20_KEYBYTES];\n    uint8_t chacha_n[crypto_stream_chacha20_IETF_NONCEBYTES];\n    crypto_onetimeauth_poly1305_state poly1305;\n    uint8_t block[64];\n\n} NoiseChaChaPolyState;\n\nstatic void noise_chachapoly_init_key\n    (NoiseCipherState *state, const uint8_t *key)\n{\n    NoiseChaChaPolyState *st = (NoiseChaChaPolyState *)state;\n    memcpy(st->chacha_k, key, crypto_stream_chacha20_KEYBYTES);\n}\n\n#define PUT_UINT64_LE(buf, value) \\\n    do { \\\n        (buf)[0] = (uint8_t)(value); \\\n        (buf)[1] = (uint8_t)((value) >> 8); \\\n        (buf)[2] = (uint8_t)((value) >> 16); \\\n        (buf)[3] = (uint8_t)((value) >> 24); \\\n        (buf)[4] = (uint8_t)((value) >> 32); \\\n        (buf)[5] = (uint8_t)((value) >> 40); \\\n        (buf)[6] = (uint8_t)((value) >> 48); \\\n        (buf)[7] = (uint8_t)((value) >> 56); \\\n    } while (0)\n\n/**\n * \\brief Sets up a ChaChaPoly context to encrypt/decrypt a block.\n *\n * \\param st The encryption state for ChaChaPoly.\n * \\param n The nonce for this block.\n */\nstatic void noise_chachapoly_setup(NoiseChaChaPolyState *st, uint64_t n)\n{\n    /* The 96-bit nonce is formed by encoding 32 bits of zeros followed by little-endian encoding of n */\n    memset(st->chacha_n, 0, 4);\n    PUT_UINT64_LE(st->chacha_n + 4, n);\n\n    /* Encrypt an initial block to create the Poly1305 key */\n    memset(st->block, 0, 64);\n    crypto_stream_chacha20_ietf_xor(st->block, st->block, 64, st->chacha_n, st->chacha_k);\n    crypto_onetimeauth_poly1305_init(&(st->poly1305), st->block);\n    noise_clean(st->block, sizeof(st->block));\n}\n\n/**\n * \\brief Pads the Poly1305 input to a multiple of 16 bytes.\n *\n * \\param st The encryption state for ChaChaPoly.\n * \\param len The length of the input that needs to be padded.\n */\nstatic void noise_chachapoly_pad_auth(NoiseChaChaPolyState *st, size_t len)\n{\n    len %= 16;\n    if (len) {\n        static uint8_t const padding[16] = {\n            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n        };\n        crypto_onetimeauth_poly1305_update(&(st->poly1305), padding, 16 - len);\n    }\n}\n\n/**\n * \\brief Finalize the Poly1305 hash by adding the lengths.\n *\n * \\param st The encryption state for ChaChaPoly.\n * \\param ad_len The length of the associated data.\n * \\param data_len The length of the ciphertext.\n */\nstatic void noise_chachapoly_auth_lengths\n    (NoiseChaChaPolyState *st, uint64_t ad_len, uint64_t data_len)\n{\n    PUT_UINT64_LE(st->block, ad_len);\n    PUT_UINT64_LE(st->block + 8, data_len);\n    crypto_onetimeauth_poly1305_update(&(st->poly1305), st->block, 16);\n}\n\nstatic int noise_chachapoly_encrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseChaChaPolyState *st = (NoiseChaChaPolyState *)state;\n    noise_chachapoly_setup(st, state->n);\n    if (ad_len) {\n        crypto_onetimeauth_poly1305_update(&(st->poly1305), ad, ad_len);\n        noise_chachapoly_pad_auth(st, ad_len);\n    }\n    crypto_stream_chacha20_ietf_xor_ic(data, data, len, st->chacha_n, 1U, st->chacha_k);\n    crypto_onetimeauth_poly1305_update(&(st->poly1305), data, len);\n    noise_chachapoly_pad_auth(st, len);\n    noise_chachapoly_auth_lengths(st, ad_len, len);\n    crypto_onetimeauth_poly1305_final(&(st->poly1305), data + len);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_chachapoly_decrypt\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     uint8_t *data, size_t len)\n{\n    NoiseChaChaPolyState *st = (NoiseChaChaPolyState *)state;\n    noise_chachapoly_setup(st, state->n);\n    if (ad_len) {\n        crypto_onetimeauth_poly1305_update(&(st->poly1305), ad, ad_len);\n        noise_chachapoly_pad_auth(st, ad_len);\n    }\n    crypto_onetimeauth_poly1305_update(&(st->poly1305), data, len);\n    noise_chachapoly_pad_auth(st, len);\n    noise_chachapoly_auth_lengths(st, ad_len, len);\n    crypto_onetimeauth_poly1305_final(&(st->poly1305), st->block);\n    if (!noise_is_equal(st->block, data + len, 16))\n        return NOISE_ERROR_MAC_FAILURE;\n    crypto_stream_chacha20_ietf_xor_ic(data, data, len, st->chacha_n, 1U, st->chacha_k);\n    return NOISE_ERROR_NONE;\n}\n\nNoiseCipherState *noise_chachapoly_new(void)\n{\n    NoiseChaChaPolyState *state = noise_new(NoiseChaChaPolyState);\n    if (!state)\n        return 0;\n    state->parent.cipher_id = NOISE_CIPHER_CHACHAPOLY;\n    state->parent.key_len = crypto_stream_chacha20_KEYBYTES;\n    state->parent.mac_len = crypto_onetimeauth_poly1305_BYTES;\n    state->parent.create = noise_chachapoly_new;\n    state->parent.init_key = noise_chachapoly_init_key;\n    state->parent.encrypt = noise_chachapoly_encrypt;\n    state->parent.decrypt = noise_chachapoly_decrypt;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/sodium/dh-curve25519.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <sodium.h>\n#include <string.h>\n\n/* We use ed25519's faster curved25519_scalarmult_basepoint() function\n   when deriving a public key from a private key.  Unfortunately ed25519\n   doesn't have an equivalent function for general curve25519 calculations\n   so we fall back to the curve25519-donna implementation for that. */\n\nint curve25519_donna(uint8_t *mypublic, const uint8_t *secret, const uint8_t *basepoint);\n\ntypedef struct\n{\n    struct NoiseDHState_s parent;\n    uint8_t private_key[32];\n    uint8_t public_key[32];\n\n} NoiseCurve25519State;\n\nstatic int noise_curve25519_generate_keypair\n    (NoiseDHState *state, const NoiseDHState *other)\n{\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    noise_rand_bytes(st->private_key, 32);\n    st->private_key[0] &= 0xF8;\n    st->private_key[31] = (st->private_key[31] & 0x7F) | 0x40;\n    crypto_scalarmult_curve25519_base(st->public_key, st->private_key);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_set_keypair\n        (NoiseDHState *state, const uint8_t *private_key,\n         const uint8_t *public_key)\n{\n    /* Check that the public key actually corresponds to the private key */\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    uint8_t temp[32];\n    int equal;\n    crypto_scalarmult_curve25519_base(temp, private_key);\n    equal = noise_is_equal(temp, public_key, 32);\n    memcpy(st->private_key, private_key, 32);\n    memcpy(st->public_key, public_key, 32);\n    return NOISE_ERROR_INVALID_PUBLIC_KEY & (equal - 1);\n}\n\nstatic int noise_curve25519_set_keypair_private\n        (NoiseDHState *state, const uint8_t *private_key)\n{\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    memcpy(st->private_key, private_key, 32);\n    crypto_scalarmult_curve25519_base(st->public_key, st->private_key);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_validate_public_key\n        (const NoiseDHState *state, const uint8_t *public_key)\n{\n    /* Nothing to do here yet */\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_copy\n    (NoiseDHState *state, const NoiseDHState *from, const NoiseDHState *other)\n{\n    NoiseCurve25519State *st = (NoiseCurve25519State *)state;\n    const NoiseCurve25519State *from_st = (const NoiseCurve25519State *)from;\n    memcpy(st->private_key, from_st->private_key, 32);\n    memcpy(st->public_key, from_st->public_key, 32);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_curve25519_calculate\n    (const NoiseDHState *private_key_state,\n     const NoiseDHState *public_key_state,\n     uint8_t *shared_key)\n{\n    /* Do we need to check that the public key is less than 2^255 - 19? */\n    curve25519_donna(shared_key, private_key_state->private_key,\n                     public_key_state->public_key);\n    return NOISE_ERROR_NONE;\n}\n\nNoiseDHState *noise_curve25519_new(void)\n{\n    NoiseCurve25519State *state = noise_new(NoiseCurve25519State);\n    if (!state)\n        return 0;\n    state->parent.dh_id = NOISE_DH_CURVE25519;\n    state->parent.nulls_allowed = 1;\n    state->parent.private_key_len = 32;\n    state->parent.public_key_len = 32;\n    state->parent.shared_key_len = 32;\n    state->parent.private_key = state->private_key;\n    state->parent.public_key = state->public_key;\n    state->parent.generate_keypair = noise_curve25519_generate_keypair;\n    state->parent.set_keypair = noise_curve25519_set_keypair;\n    state->parent.set_keypair_private = noise_curve25519_set_keypair_private;\n    state->parent.validate_public_key = noise_curve25519_validate_public_key;\n    state->parent.copy = noise_curve25519_copy;\n    state->parent.calculate = noise_curve25519_calculate;\n    return &(state->parent);\n}\n\n/* Choose the version of curve25519-donna based on the word size */\n#if __WORDSIZE == 64 && defined(__GNUC__)\n#include \"crypto/donna/curve25519-donna-c64.c\"\n#else\n#include \"crypto/donna/curve25519-donna.c\"\n#endif\n"
  },
  {
    "path": "src/backend/sodium/hash-blake2b.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <sodium.h>\n\ntypedef struct\n{\n    struct NoiseHashState_s parent;\n    crypto_generichash_blake2b_state blake2;\n\n} NoiseBLAKE2bState;\n\nstatic void noise_blake2b_reset(NoiseHashState *state)\n{\n    NoiseBLAKE2bState *st = (NoiseBLAKE2bState *)state;\n    crypto_generichash_blake2b_init(&(st->blake2), NULL, 0, crypto_generichash_blake2b_BYTES_MAX);\n}\n\nstatic void noise_blake2b_update(NoiseHashState *state, const uint8_t *data, size_t len)\n{\n    NoiseBLAKE2bState *st = (NoiseBLAKE2bState *)state;\n    crypto_generichash_blake2b_update(&(st->blake2), data, len);\n}\n\nstatic void noise_blake2b_finalize(NoiseHashState *state, uint8_t *hash)\n{\n    NoiseBLAKE2bState *st = (NoiseBLAKE2bState *)state;\n    crypto_generichash_blake2b_final(&(st->blake2), hash, crypto_generichash_blake2b_BYTES_MAX);\n}\n\nNoiseHashState *noise_blake2b_new(void)\n{\n    NoiseBLAKE2bState *state = noise_new(NoiseBLAKE2bState);\n    if (!state)\n        return 0;\n    state->parent.hash_id = NOISE_HASH_BLAKE2b;\n    state->parent.hash_len = 64;\n    state->parent.block_len = 128;\n    state->parent.reset = noise_blake2b_reset;\n    state->parent.update = noise_blake2b_update;\n    state->parent.finalize = noise_blake2b_finalize;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/sodium/hash-sha256.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <sodium.h>\n\ntypedef struct\n{\n    struct NoiseHashState_s parent;\n    crypto_hash_sha256_state sha256;\n\n} NoiseSHA256State;\n\nstatic void noise_sha256_reset(NoiseHashState *state)\n{\n    NoiseSHA256State *st = (NoiseSHA256State *)state;\n    crypto_hash_sha256_init(&(st->sha256));\n}\n\nstatic void noise_sha256_update(NoiseHashState *state, const uint8_t *data, size_t len)\n{\n    NoiseSHA256State *st = (NoiseSHA256State *)state;\n    crypto_hash_sha256_update(&(st->sha256), data, len);\n}\n\nstatic void noise_sha256_finalize(NoiseHashState *state, uint8_t *hash)\n{\n    NoiseSHA256State *st = (NoiseSHA256State *)state;\n    crypto_hash_sha256_final(&(st->sha256), hash);\n}\n\nNoiseHashState *noise_sha256_new(void)\n{\n    NoiseSHA256State *state = noise_new(NoiseSHA256State);\n    if (!state)\n        return 0;\n    state->parent.hash_id = NOISE_HASH_SHA256;\n    state->parent.hash_len = 32;\n    state->parent.block_len = 64;\n    state->parent.reset = noise_sha256_reset;\n    state->parent.update = noise_sha256_update;\n    state->parent.finalize = noise_sha256_finalize;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/sodium/hash-sha512.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <sodium.h>\n\ntypedef struct\n{\n    struct NoiseHashState_s parent;\n    crypto_hash_sha512_state sha512;\n\n} NoiseSHA512State;\n\nstatic void noise_sha512_reset(NoiseHashState *state)\n{\n    NoiseSHA512State *st = (NoiseSHA512State *)state;\n    crypto_hash_sha512_init(&(st->sha512));\n}\n\nstatic void noise_sha512_update(NoiseHashState *state, const uint8_t *data, size_t len)\n{\n    NoiseSHA512State *st = (NoiseSHA512State *)state;\n    crypto_hash_sha512_update(&(st->sha512), data, len);\n}\n\nstatic void noise_sha512_finalize(NoiseHashState *state, uint8_t *hash)\n{\n    NoiseSHA512State *st = (NoiseSHA512State *)state;\n    crypto_hash_sha512_final(&(st->sha512), hash);\n}\n\nNoiseHashState *noise_sha512_new(void)\n{\n    NoiseSHA512State *state = noise_new(NoiseSHA512State);\n    if (!state)\n        return 0;\n    state->parent.hash_id = NOISE_HASH_SHA512;\n    state->parent.hash_len = 64;\n    state->parent.block_len = 128;\n    state->parent.reset = noise_sha512_reset;\n    state->parent.update = noise_sha512_update;\n    state->parent.finalize = noise_sha512_finalize;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/backend/sodium/sign-ed25519.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <sodium.h>\n\ntypedef struct\n{\n    struct NoiseSignState_s parent;\n    union {\n        struct {\n            uint8_t private_key[32];\n            uint8_t public_key[32];\n        };\n        uint8_t skpk[crypto_sign_ed25519_SECRETKEYBYTES]; // sodium uses this format\n    };\n\n} NoiseEd25519State;\n\nstatic void noise_ed25519_generate_keypair(NoiseSignState *state)\n{\n    NoiseEd25519State *st = (NoiseEd25519State *)state;\n    uint8_t temp_pk[crypto_sign_ed25519_PUBLICKEYBYTES];\n    crypto_sign_ed25519_keypair(temp_pk, st->skpk);\n}\n\nstatic int noise_ed25519_validate_keypair\n        (const NoiseSignState *state, const uint8_t *private_key,\n         const uint8_t *public_key)\n{\n    /* Check that the public key actually corresponds to the private key */\n    uint8_t temp[crypto_sign_ed25519_PUBLICKEYBYTES];\n    uint8_t temp_sk[crypto_sign_ed25519_SECRETKEYBYTES];\n    int equal;\n    crypto_sign_ed25519_seed_keypair(temp, temp_sk, private_key);\n    equal = noise_is_equal(temp, public_key, sizeof(temp));\n    return NOISE_ERROR_INVALID_PUBLIC_KEY & (equal - 1);\n}\n\nstatic int noise_ed25519_validate_public_key\n        (const NoiseSignState *state, const uint8_t *public_key)\n{\n    /* Nothing to do here yet */\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_ed25519_derive_public_key\n        (const NoiseSignState *state, const uint8_t *private_key,\n         uint8_t *public_key)\n{\n    uint8_t temp_sk[crypto_sign_ed25519_SECRETKEYBYTES];\n    crypto_sign_ed25519_seed_keypair(public_key, temp_sk, private_key);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_ed25519_sign\n        (const NoiseSignState *state, const uint8_t *message,\n         size_t message_len, uint8_t *signature)\n{\n    const NoiseEd25519State *st = (const NoiseEd25519State *)state;\n    crypto_sign_ed25519_detached(signature, NULL, message, message_len, st->skpk);\n    return NOISE_ERROR_NONE;\n}\n\nstatic int noise_ed25519_verify\n        (const NoiseSignState *state, const uint8_t *message,\n         size_t message_len, const uint8_t *signature)\n{\n    const NoiseEd25519State *st = (const NoiseEd25519State *)state;\n    int result = crypto_sign_ed25519_verify_detached(signature,\n            message, message_len, st->public_key);\n    return result ? NOISE_ERROR_INVALID_SIGNATURE : NOISE_ERROR_NONE;\n}\n\nNoiseSignState *noise_ed25519_new(void)\n{\n    NoiseEd25519State *state = noise_new(NoiseEd25519State);\n    if (!state)\n        return 0;\n    state->parent.sign_id = NOISE_SIGN_ED25519;\n    state->parent.private_key_len = 32;\n    state->parent.public_key_len = 32;\n    state->parent.signature_len = 64;\n    state->parent.private_key = state->private_key;\n    state->parent.public_key = state->public_key;\n    state->parent.generate_keypair = noise_ed25519_generate_keypair;\n    state->parent.validate_keypair = noise_ed25519_validate_keypair;\n    state->parent.validate_public_key = noise_ed25519_validate_public_key;\n    state->parent.derive_public_key = noise_ed25519_derive_public_key;\n    state->parent.sign = noise_ed25519_sign;\n    state->parent.verify = noise_ed25519_verify;\n    return &(state->parent);\n}\n"
  },
  {
    "path": "src/crypto/README",
    "content": "\nThis directory contains reference implementations of various primitives.\n\ncurve25519-donna:\n    https://github.com/agl/curve25519-donna.git\n    MIT license\n\npoly1305-donna:\n    https://github.com/floodyberry/poly1305-donna.git\n    MIT license / public domain\n\nchacha:\n    Implementation specific to this distribution.  Supports plain C and SSE2.\n    MIT license\n\nblake2:\n    Implementation of BLAKE2 from arduinolibs.  SSE2 support added to BLAKE2s.\n    https://github.com/rweather/arduinolibs\n    MIT license\n\nAES:\n    http://web.cs.ucdavis.edu/~rogaway/ocb/ocb-ref/\n    Public domain code from the original Rijndael authors.\n\nsha2:\n    Plain C implementation specific to this distribution.\n    MIT license\n\nghash:\n    Implementation of GHASH from arduinolibs to support GCM.\n    https://github.com/rweather/arduinolibs\n    MIT license\n\ngoldilocks:\n    Ed448-Goldilocks reference implementation of p448 curves.  We only use\n    the p448 field arithmetic from this library because the public API\n    for goldilocks doesn't quite do what we want (RFC 7748 compatibility).\n    git://git.code.sf.net/p/ed448goldilocks/code\n    MIT license\n\ncurve448:\n    Simple implementation of curve448 built on top of the p448 arithmetic\n    from goldilocks.  This can be exported and used in other projects.\n    MIT license\n\ned25519:\n    Reference implementation of the Ed25519 signature signature algorithm.\n    https://github.com/floodyberry/ed25519-donna.git\n    Public domain\n\nnewhope\n    Reference New Hope post-quantum key exchange algorithm, \"torref\" version.\n    https://cryptojedi.org/crypto/#newhope\n    Public domain\n"
  },
  {
    "path": "src/crypto/aes/rijndael-alg-fst.c",
    "content": "/**\n * rijndael-alg-fst.c\n *\n * @version 3.0 (December 2000)\n *\n * Optimised ANSI C code for the Rijndael cipher (now AES)\n *\n * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>\n * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>\n * @author Paulo Barreto <paulo.barreto@terra.com.br>\n *\n * This code is hereby placed in the public domain.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS\n * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n#include <assert.h>\n#include <stdlib.h>\n\n#include \"rijndael-alg-fst.h\"\n\n/*\nTe0[x] = S [x].[02, 01, 01, 03];\nTe1[x] = S [x].[03, 02, 01, 01];\nTe2[x] = S [x].[01, 03, 02, 01];\nTe3[x] = S [x].[01, 01, 03, 02];\nTe4[x] = S [x].[01, 01, 01, 01];\n\nTd0[x] = Si[x].[0e, 09, 0d, 0b];\nTd1[x] = Si[x].[0b, 0e, 09, 0d];\nTd2[x] = Si[x].[0d, 0b, 0e, 09];\nTd3[x] = Si[x].[09, 0d, 0b, 0e];\nTd4[x] = Si[x].[01, 01, 01, 01];\n*/\n\nstatic const u32 Te0[256] = {\n    0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,\n    0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,\n    0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,\n    0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,\n    0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,\n    0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,\n    0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,\n    0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,\n    0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,\n    0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,\n    0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,\n    0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,\n    0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,\n    0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,\n    0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,\n    0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,\n    0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,\n    0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,\n    0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,\n    0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,\n    0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,\n    0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,\n    0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,\n    0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,\n    0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,\n    0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,\n    0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,\n    0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,\n    0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,\n    0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,\n    0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,\n    0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,\n    0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,\n    0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,\n    0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,\n    0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,\n    0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,\n    0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,\n    0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,\n    0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,\n    0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,\n    0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,\n    0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,\n    0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,\n    0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,\n    0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,\n    0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,\n    0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,\n    0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,\n    0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,\n    0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,\n    0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,\n    0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,\n    0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,\n    0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,\n    0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,\n    0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,\n    0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,\n    0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,\n    0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,\n    0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,\n    0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,\n    0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,\n    0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,\n};\nstatic const u32 Te1[256] = {\n    0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,\n    0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,\n    0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,\n    0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,\n    0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,\n    0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,\n    0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,\n    0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,\n    0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,\n    0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,\n    0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,\n    0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,\n    0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,\n    0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,\n    0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,\n    0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,\n    0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,\n    0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,\n    0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,\n    0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,\n    0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,\n    0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,\n    0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,\n    0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,\n    0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,\n    0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,\n    0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,\n    0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,\n    0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,\n    0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,\n    0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,\n    0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,\n    0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,\n    0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,\n    0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,\n    0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,\n    0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,\n    0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,\n    0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,\n    0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,\n    0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,\n    0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,\n    0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,\n    0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,\n    0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,\n    0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,\n    0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,\n    0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,\n    0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,\n    0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,\n    0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,\n    0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,\n    0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,\n    0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,\n    0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,\n    0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,\n    0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,\n    0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,\n    0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,\n    0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,\n    0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,\n    0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,\n    0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,\n    0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,\n};\nstatic const u32 Te2[256] = {\n    0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,\n    0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,\n    0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,\n    0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,\n    0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,\n    0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,\n    0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,\n    0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,\n    0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,\n    0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,\n    0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,\n    0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,\n    0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,\n    0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,\n    0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,\n    0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,\n    0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,\n    0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,\n    0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,\n    0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,\n    0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,\n    0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,\n    0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,\n    0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,\n    0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,\n    0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,\n    0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,\n    0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,\n    0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,\n    0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,\n    0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,\n    0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,\n    0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,\n    0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,\n    0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,\n    0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,\n    0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,\n    0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,\n    0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,\n    0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,\n    0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,\n    0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,\n    0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,\n    0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,\n    0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,\n    0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,\n    0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,\n    0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,\n    0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,\n    0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,\n    0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,\n    0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,\n    0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,\n    0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,\n    0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,\n    0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,\n    0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,\n    0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,\n    0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,\n    0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,\n    0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,\n    0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,\n    0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,\n    0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,\n};\nstatic const u32 Te3[256] = {\n\n    0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,\n    0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,\n    0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,\n    0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,\n    0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,\n    0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,\n    0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,\n    0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,\n    0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,\n    0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,\n    0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,\n    0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,\n    0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,\n    0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,\n    0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,\n    0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,\n    0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,\n    0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,\n    0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,\n    0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,\n    0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,\n    0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,\n    0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,\n    0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,\n    0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,\n    0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,\n    0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,\n    0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,\n    0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,\n    0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,\n    0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,\n    0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,\n    0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,\n    0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,\n    0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,\n    0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,\n    0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,\n    0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,\n    0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,\n    0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,\n    0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,\n    0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,\n    0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,\n    0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,\n    0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,\n    0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,\n    0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,\n    0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,\n    0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,\n    0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,\n    0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,\n    0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,\n    0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,\n    0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,\n    0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,\n    0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,\n    0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,\n    0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,\n    0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,\n    0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,\n    0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,\n    0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,\n    0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,\n    0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,\n};\nstatic const u32 Te4[256] = {\n    0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU,\n    0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U,\n    0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU,\n    0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U,\n    0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU,\n    0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U,\n    0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU,\n    0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U,\n    0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U,\n    0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU,\n    0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U,\n    0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U,\n    0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U,\n    0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU,\n    0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U,\n    0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U,\n    0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU,\n    0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U,\n    0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U,\n    0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U,\n    0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU,\n    0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU,\n    0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U,\n    0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU,\n    0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU,\n    0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U,\n    0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU,\n    0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U,\n    0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU,\n    0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U,\n    0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U,\n    0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U,\n    0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU,\n    0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U,\n    0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU,\n    0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U,\n    0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU,\n    0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U,\n    0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U,\n    0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU,\n    0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU,\n    0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU,\n    0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U,\n    0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U,\n    0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU,\n    0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U,\n    0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU,\n    0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U,\n    0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU,\n    0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U,\n    0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU,\n    0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU,\n    0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U,\n    0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU,\n    0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U,\n    0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU,\n    0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U,\n    0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U,\n    0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U,\n    0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU,\n    0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU,\n    0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U,\n    0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,\n    0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,\n};\nstatic const u32 Td0[256] = {\n    0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,\n    0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,\n    0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,\n    0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,\n    0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,\n    0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,\n    0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,\n    0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,\n    0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,\n    0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,\n    0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,\n    0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,\n    0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,\n    0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,\n    0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,\n    0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,\n    0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,\n    0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,\n    0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,\n    0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,\n    0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,\n    0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,\n    0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,\n    0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,\n    0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,\n    0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,\n    0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,\n    0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,\n    0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,\n    0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,\n    0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,\n    0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,\n    0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,\n    0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,\n    0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,\n    0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,\n    0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,\n    0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,\n    0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,\n    0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,\n    0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,\n    0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,\n    0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,\n    0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,\n    0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,\n    0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,\n    0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,\n    0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,\n    0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,\n    0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,\n    0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,\n    0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,\n    0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,\n    0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,\n    0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,\n    0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,\n    0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,\n    0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,\n    0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,\n    0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,\n    0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,\n    0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,\n    0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,\n    0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,\n};\nstatic const u32 Td1[256] = {\n    0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,\n    0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,\n    0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,\n    0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,\n    0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,\n    0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,\n    0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,\n    0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,\n    0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,\n    0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,\n    0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,\n    0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,\n    0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,\n    0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,\n    0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,\n    0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,\n    0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,\n    0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,\n    0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,\n    0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,\n    0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,\n    0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,\n    0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,\n    0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,\n    0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,\n    0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,\n    0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,\n    0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,\n    0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,\n    0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,\n    0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,\n    0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,\n    0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,\n    0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,\n    0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,\n    0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,\n    0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,\n    0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,\n    0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,\n    0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,\n    0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,\n    0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,\n    0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,\n    0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,\n    0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,\n    0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,\n    0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,\n    0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,\n    0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,\n    0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,\n    0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,\n    0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,\n    0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,\n    0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,\n    0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,\n    0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,\n    0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,\n    0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,\n    0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,\n    0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,\n    0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,\n    0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,\n    0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,\n    0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,\n};\nstatic const u32 Td2[256] = {\n    0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,\n    0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,\n    0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,\n    0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,\n    0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,\n    0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,\n    0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,\n    0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,\n    0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,\n    0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,\n    0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,\n    0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,\n    0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,\n    0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,\n    0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,\n    0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,\n    0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,\n    0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,\n    0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,\n    0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,\n\n    0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,\n    0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,\n    0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,\n    0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,\n    0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,\n    0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,\n    0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,\n    0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,\n    0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,\n    0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,\n    0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,\n    0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,\n    0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,\n    0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,\n    0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,\n    0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,\n    0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,\n    0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,\n    0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,\n    0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,\n    0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,\n    0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,\n    0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,\n    0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,\n    0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,\n    0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,\n    0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,\n    0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,\n    0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,\n    0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,\n    0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,\n    0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,\n    0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,\n    0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,\n    0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,\n    0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,\n    0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,\n    0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,\n    0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,\n    0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,\n    0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,\n    0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,\n    0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,\n    0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,\n};\nstatic const u32 Td3[256] = {\n    0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,\n    0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,\n    0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,\n    0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,\n    0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,\n    0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,\n    0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,\n    0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,\n    0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,\n    0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,\n    0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,\n    0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,\n    0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,\n    0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,\n    0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,\n    0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,\n    0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,\n    0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,\n    0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,\n    0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,\n    0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,\n    0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,\n    0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,\n    0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,\n    0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,\n    0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,\n    0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,\n    0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,\n    0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,\n    0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,\n    0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,\n    0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,\n    0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,\n    0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,\n    0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,\n    0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,\n    0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,\n    0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,\n    0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,\n    0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,\n    0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,\n    0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,\n    0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,\n    0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,\n    0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,\n    0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,\n    0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,\n    0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,\n    0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,\n    0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,\n    0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,\n    0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,\n    0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,\n    0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,\n    0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,\n    0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,\n    0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,\n    0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,\n    0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,\n    0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,\n    0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,\n    0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,\n    0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,\n    0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,\n};\nstatic const u32 Td4[256] = {\n    0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U,\n    0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U,\n    0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU,\n    0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU,\n    0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U,\n    0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U,\n    0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U,\n    0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU,\n    0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U,\n    0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU,\n    0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU,\n    0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU,\n    0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U,\n    0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U,\n    0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U,\n    0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U,\n    0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U,\n    0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U,\n    0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU,\n    0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U,\n    0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U,\n    0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU,\n    0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U,\n    0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U,\n    0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U,\n    0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU,\n    0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U,\n    0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U,\n    0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU,\n    0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U,\n    0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U,\n    0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU,\n    0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U,\n    0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU,\n    0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU,\n    0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U,\n    0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U,\n    0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U,\n    0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U,\n    0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU,\n    0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U,\n    0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U,\n    0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU,\n    0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU,\n    0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU,\n    0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U,\n    0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU,\n    0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U,\n    0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U,\n    0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U,\n    0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U,\n    0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU,\n    0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U,\n    0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU,\n    0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU,\n    0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU,\n    0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU,\n    0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U,\n    0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU,\n    0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U,\n    0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU,\n    0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U,\n    0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,\n    0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,\n};\nstatic const u32 rcon[] = {\n\t0x01000000, 0x02000000, 0x04000000, 0x08000000,\n\t0x10000000, 0x20000000, 0x40000000, 0x80000000,\n\t0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */\n};\n\n#define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)\n\n#ifdef _MSC_VER\n#define GETU32(p) SWAP(*((u32 *)(p)))\n#define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }\n#else\n#define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] <<  8) ^ ((u32)(pt)[3]))\n#define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >>  8); (ct)[3] = (u8)(st); }\n#endif\n\n/**\n * Expand the cipher key into the encryption key schedule.\n *\n * @return\tthe number of rounds for the given cipher key size.\n */\nint rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits) {\n   \tint i = 0;\n\tu32 temp;\n\n\trk[0] = GETU32(cipherKey     );\n\trk[1] = GETU32(cipherKey +  4);\n\trk[2] = GETU32(cipherKey +  8);\n\trk[3] = GETU32(cipherKey + 12);\n\tif (keyBits == 128) {\n\t\tfor (;;) {\n\t\t\ttemp  = rk[3];\n\t\t\trk[4] = rk[0] ^\n\t\t\t\t(Te4[(temp >> 16) & 0xff] & 0xff000000) ^\n\t\t\t\t(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^\n\t\t\t\t(Te4[(temp      ) & 0xff] & 0x0000ff00) ^\n\t\t\t\t(Te4[(temp >> 24)       ] & 0x000000ff) ^\n\t\t\t\trcon[i];\n\t\t\trk[5] = rk[1] ^ rk[4];\n\t\t\trk[6] = rk[2] ^ rk[5];\n\t\t\trk[7] = rk[3] ^ rk[6];\n\t\t\tif (++i == 10) {\n\t\t\t\treturn 10;\n\t\t\t}\n\t\t\trk += 4;\n\t\t}\n\t}\n\trk[4] = GETU32(cipherKey + 16);\n\trk[5] = GETU32(cipherKey + 20);\n\tif (keyBits == 192) {\n\t\tfor (;;) {\n\t\t\ttemp = rk[ 5];\n\t\t\trk[ 6] = rk[ 0] ^\n\t\t\t\t(Te4[(temp >> 16) & 0xff] & 0xff000000) ^\n\t\t\t\t(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^\n\t\t\t\t(Te4[(temp      ) & 0xff] & 0x0000ff00) ^\n\t\t\t\t(Te4[(temp >> 24)       ] & 0x000000ff) ^\n\t\t\t\trcon[i];\n\t\t\trk[ 7] = rk[ 1] ^ rk[ 6];\n\t\t\trk[ 8] = rk[ 2] ^ rk[ 7];\n\t\t\trk[ 9] = rk[ 3] ^ rk[ 8];\n\t\t\tif (++i == 8) {\n\t\t\t\treturn 12;\n\t\t\t}\n\t\t\trk[10] = rk[ 4] ^ rk[ 9];\n\t\t\trk[11] = rk[ 5] ^ rk[10];\n\t\t\trk += 6;\n\t\t}\n\t}\n\trk[6] = GETU32(cipherKey + 24);\n\trk[7] = GETU32(cipherKey + 28);\n\tif (keyBits == 256) {\n        for (;;) {\n        \ttemp = rk[ 7];\n        \trk[ 8] = rk[ 0] ^\n        \t\t(Te4[(temp >> 16) & 0xff] & 0xff000000) ^\n        \t\t(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^\n        \t\t(Te4[(temp      ) & 0xff] & 0x0000ff00) ^\n        \t\t(Te4[(temp >> 24)       ] & 0x000000ff) ^\n        \t\trcon[i];\n        \trk[ 9] = rk[ 1] ^ rk[ 8];\n        \trk[10] = rk[ 2] ^ rk[ 9];\n        \trk[11] = rk[ 3] ^ rk[10];\n\t\t\tif (++i == 7) {\n\t\t\t\treturn 14;\n\t\t\t}\n        \ttemp = rk[11];\n        \trk[12] = rk[ 4] ^\n        \t\t(Te4[(temp >> 24)       ] & 0xff000000) ^\n        \t\t(Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^\n        \t\t(Te4[(temp >>  8) & 0xff] & 0x0000ff00) ^\n        \t\t(Te4[(temp      ) & 0xff] & 0x000000ff);\n        \trk[13] = rk[ 5] ^ rk[12];\n        \trk[14] = rk[ 6] ^ rk[13];\n        \trk[15] = rk[ 7] ^ rk[14];\n\n\t\t\trk += 8;\n        }\n\t}\n\treturn 0;\n}\n\n/**\n * Expand the cipher key into the decryption key schedule.\n *\n * @return\tthe number of rounds for the given cipher key size.\n */\nint rijndaelKeySetupDec(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits) {\n\tint Nr, i, j;\n\tu32 temp;\n\n\t/* expand the cipher key: */\n\tNr = rijndaelKeySetupEnc(rk, cipherKey, keyBits);\n\t/* invert the order of the round keys: */\n\tfor (i = 0, j = 4*Nr; i < j; i += 4, j -= 4) {\n\t\ttemp = rk[i    ]; rk[i    ] = rk[j    ]; rk[j    ] = temp;\n\t\ttemp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;\n\t\ttemp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;\n\t\ttemp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;\n\t}\n\t/* apply the inverse MixColumn transform to all round keys but the first and the last: */\n\tfor (i = 1; i < Nr; i++) {\n\t\trk += 4;\n\t\trk[0] =\n\t\t\tTd0[Te4[(rk[0] >> 24)       ] & 0xff] ^\n\t\t\tTd1[Te4[(rk[0] >> 16) & 0xff] & 0xff] ^\n\t\t\tTd2[Te4[(rk[0] >>  8) & 0xff] & 0xff] ^\n\t\t\tTd3[Te4[(rk[0]      ) & 0xff] & 0xff];\n\t\trk[1] =\n\t\t\tTd0[Te4[(rk[1] >> 24)       ] & 0xff] ^\n\t\t\tTd1[Te4[(rk[1] >> 16) & 0xff] & 0xff] ^\n\t\t\tTd2[Te4[(rk[1] >>  8) & 0xff] & 0xff] ^\n\t\t\tTd3[Te4[(rk[1]      ) & 0xff] & 0xff];\n\t\trk[2] =\n\t\t\tTd0[Te4[(rk[2] >> 24)       ] & 0xff] ^\n\t\t\tTd1[Te4[(rk[2] >> 16) & 0xff] & 0xff] ^\n\t\t\tTd2[Te4[(rk[2] >>  8) & 0xff] & 0xff] ^\n\t\t\tTd3[Te4[(rk[2]      ) & 0xff] & 0xff];\n\t\trk[3] =\n\t\t\tTd0[Te4[(rk[3] >> 24)       ] & 0xff] ^\n\t\t\tTd1[Te4[(rk[3] >> 16) & 0xff] & 0xff] ^\n\t\t\tTd2[Te4[(rk[3] >>  8) & 0xff] & 0xff] ^\n\t\t\tTd3[Te4[(rk[3]      ) & 0xff] & 0xff];\n\t}\n\treturn Nr;\n}\n\nvoid rijndaelEncrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 pt[16], u8 ct[16]) {\n\tu32 s0, s1, s2, s3, t0, t1, t2, t3;\n#ifndef FULL_UNROLL\n    int r;\n#endif /* ?FULL_UNROLL */\n\n    /*\n\t * map byte array block to cipher state\n\t * and add initial round key:\n\t */\n\ts0 = GETU32(pt     ) ^ rk[0];\n\ts1 = GETU32(pt +  4) ^ rk[1];\n\ts2 = GETU32(pt +  8) ^ rk[2];\n\ts3 = GETU32(pt + 12) ^ rk[3];\n#ifdef FULL_UNROLL\n    /* round 1: */\n   \tt0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4];\n   \tt1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5];\n   \tt2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6];\n   \tt3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7];\n   \t/* round 2: */\n   \ts0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8];\n   \ts1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9];\n   \ts2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10];\n   \ts3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11];\n    /* round 3: */\n   \tt0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12];\n   \tt1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13];\n   \tt2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14];\n   \tt3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15];\n   \t/* round 4: */\n   \ts0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16];\n   \ts1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17];\n   \ts2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18];\n   \ts3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19];\n    /* round 5: */\n   \tt0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20];\n   \tt1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21];\n   \tt2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22];\n   \tt3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23];\n   \t/* round 6: */\n   \ts0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24];\n   \ts1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25];\n   \ts2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26];\n   \ts3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27];\n    /* round 7: */\n   \tt0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28];\n   \tt1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29];\n   \tt2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30];\n   \tt3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31];\n   \t/* round 8: */\n   \ts0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32];\n   \ts1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];\n   \ts2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];\n   \ts3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];\n    /* round 9: */\n   \tt0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];\n   \tt1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];\n   \tt2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];\n   \tt3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];\n    if (Nr > 10) {\n        /* round 10: */\n        s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];\n        s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];\n        s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];\n        s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];\n        /* round 11: */\n        t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];\n        t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];\n        t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];\n        t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];\n        if (Nr > 12) {\n            /* round 12: */\n            s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];\n            s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];\n            s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];\n            s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];\n            /* round 13: */\n            t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];\n            t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];\n            t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];\n            t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];\n        }\n    }\n    rk += Nr << 2;\n#else  /* !FULL_UNROLL */\n    /*\n\t * Nr - 1 full rounds:\n\t */\n    r = Nr >> 1;\n    for (;;) {\n        t0 =\n            Te0[(s0 >> 24)       ] ^\n            Te1[(s1 >> 16) & 0xff] ^\n            Te2[(s2 >>  8) & 0xff] ^\n            Te3[(s3      ) & 0xff] ^\n            rk[4];\n        t1 =\n            Te0[(s1 >> 24)       ] ^\n            Te1[(s2 >> 16) & 0xff] ^\n            Te2[(s3 >>  8) & 0xff] ^\n            Te3[(s0      ) & 0xff] ^\n            rk[5];\n        t2 =\n            Te0[(s2 >> 24)       ] ^\n            Te1[(s3 >> 16) & 0xff] ^\n            Te2[(s0 >>  8) & 0xff] ^\n            Te3[(s1      ) & 0xff] ^\n            rk[6];\n        t3 =\n            Te0[(s3 >> 24)       ] ^\n            Te1[(s0 >> 16) & 0xff] ^\n            Te2[(s1 >>  8) & 0xff] ^\n            Te3[(s2      ) & 0xff] ^\n            rk[7];\n\n        rk += 8;\n        if (--r == 0) {\n            break;\n        }\n\n        s0 =\n            Te0[(t0 >> 24)       ] ^\n            Te1[(t1 >> 16) & 0xff] ^\n            Te2[(t2 >>  8) & 0xff] ^\n            Te3[(t3      ) & 0xff] ^\n            rk[0];\n        s1 =\n            Te0[(t1 >> 24)       ] ^\n            Te1[(t2 >> 16) & 0xff] ^\n            Te2[(t3 >>  8) & 0xff] ^\n            Te3[(t0      ) & 0xff] ^\n            rk[1];\n        s2 =\n            Te0[(t2 >> 24)       ] ^\n            Te1[(t3 >> 16) & 0xff] ^\n            Te2[(t0 >>  8) & 0xff] ^\n            Te3[(t1      ) & 0xff] ^\n            rk[2];\n        s3 =\n            Te0[(t3 >> 24)       ] ^\n            Te1[(t0 >> 16) & 0xff] ^\n            Te2[(t1 >>  8) & 0xff] ^\n            Te3[(t2      ) & 0xff] ^\n            rk[3];\n    }\n#endif /* ?FULL_UNROLL */\n    /*\n\t * apply last round and\n\t * map cipher state to byte array block:\n\t */\n\ts0 =\n\t\t(Te4[(t0 >> 24)       ] & 0xff000000) ^\n\t\t(Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Te4[(t2 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Te4[(t3      ) & 0xff] & 0x000000ff) ^\n\t\trk[0];\n\tPUTU32(ct     , s0);\n\ts1 =\n\t\t(Te4[(t1 >> 24)       ] & 0xff000000) ^\n\t\t(Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Te4[(t3 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Te4[(t0      ) & 0xff] & 0x000000ff) ^\n\t\trk[1];\n\tPUTU32(ct +  4, s1);\n\ts2 =\n\t\t(Te4[(t2 >> 24)       ] & 0xff000000) ^\n\t\t(Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Te4[(t0 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Te4[(t1      ) & 0xff] & 0x000000ff) ^\n\t\trk[2];\n\tPUTU32(ct +  8, s2);\n\ts3 =\n\t\t(Te4[(t3 >> 24)       ] & 0xff000000) ^\n\t\t(Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Te4[(t1 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Te4[(t2      ) & 0xff] & 0x000000ff) ^\n\t\trk[3];\n\tPUTU32(ct + 12, s3);\n}\n\nvoid rijndaelDecrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 ct[16], u8 pt[16]) {\n\tu32 s0, s1, s2, s3, t0, t1, t2, t3;\n#ifndef FULL_UNROLL\n    int r;\n#endif /* ?FULL_UNROLL */\n\n    /*\n\t * map byte array block to cipher state\n\t * and add initial round key:\n\t */\n    s0 = GETU32(ct     ) ^ rk[0];\n    s1 = GETU32(ct +  4) ^ rk[1];\n    s2 = GETU32(ct +  8) ^ rk[2];\n    s3 = GETU32(ct + 12) ^ rk[3];\n#ifdef FULL_UNROLL\n    /* round 1: */\n    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4];\n    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5];\n    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6];\n    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7];\n    /* round 2: */\n    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8];\n    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9];\n    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10];\n    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11];\n    /* round 3: */\n    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12];\n    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13];\n    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14];\n    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15];\n    /* round 4: */\n    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16];\n    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17];\n    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18];\n    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19];\n    /* round 5: */\n    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20];\n    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21];\n    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22];\n    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23];\n    /* round 6: */\n    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24];\n    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25];\n    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26];\n    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27];\n    /* round 7: */\n    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28];\n    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29];\n    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30];\n    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31];\n    /* round 8: */\n    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32];\n    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];\n    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];\n    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];\n    /* round 9: */\n    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];\n    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];\n    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];\n    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];\n    if (Nr > 10) {\n        /* round 10: */\n        s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];\n        s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];\n        s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];\n        s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];\n        /* round 11: */\n        t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];\n        t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];\n        t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];\n        t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];\n        if (Nr > 12) {\n            /* round 12: */\n            s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];\n            s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];\n            s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];\n            s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];\n            /* round 13: */\n            t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];\n            t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];\n            t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];\n            t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];\n        }\n    }\n\trk += Nr << 2;\n#else  /* !FULL_UNROLL */\n    /*\n     * Nr - 1 full rounds:\n     */\n    r = Nr >> 1;\n    for (;;) {\n        t0 =\n            Td0[(s0 >> 24)       ] ^\n            Td1[(s3 >> 16) & 0xff] ^\n            Td2[(s2 >>  8) & 0xff] ^\n            Td3[(s1      ) & 0xff] ^\n            rk[4];\n        t1 =\n            Td0[(s1 >> 24)       ] ^\n            Td1[(s0 >> 16) & 0xff] ^\n            Td2[(s3 >>  8) & 0xff] ^\n            Td3[(s2      ) & 0xff] ^\n            rk[5];\n        t2 =\n            Td0[(s2 >> 24)       ] ^\n            Td1[(s1 >> 16) & 0xff] ^\n            Td2[(s0 >>  8) & 0xff] ^\n            Td3[(s3      ) & 0xff] ^\n            rk[6];\n        t3 =\n            Td0[(s3 >> 24)       ] ^\n            Td1[(s2 >> 16) & 0xff] ^\n            Td2[(s1 >>  8) & 0xff] ^\n            Td3[(s0      ) & 0xff] ^\n            rk[7];\n\n        rk += 8;\n        if (--r == 0) {\n            break;\n        }\n\n        s0 =\n            Td0[(t0 >> 24)       ] ^\n            Td1[(t3 >> 16) & 0xff] ^\n            Td2[(t2 >>  8) & 0xff] ^\n            Td3[(t1      ) & 0xff] ^\n            rk[0];\n        s1 =\n            Td0[(t1 >> 24)       ] ^\n            Td1[(t0 >> 16) & 0xff] ^\n            Td2[(t3 >>  8) & 0xff] ^\n            Td3[(t2      ) & 0xff] ^\n            rk[1];\n        s2 =\n            Td0[(t2 >> 24)       ] ^\n            Td1[(t1 >> 16) & 0xff] ^\n            Td2[(t0 >>  8) & 0xff] ^\n            Td3[(t3      ) & 0xff] ^\n            rk[2];\n        s3 =\n            Td0[(t3 >> 24)       ] ^\n            Td1[(t2 >> 16) & 0xff] ^\n            Td2[(t1 >>  8) & 0xff] ^\n            Td3[(t0      ) & 0xff] ^\n            rk[3];\n    }\n#endif /* ?FULL_UNROLL */\n    /*\n\t * apply last round and\n\t * map cipher state to byte array block:\n\t */\n   \ts0 =\n   \t\t(Td4[(t0 >> 24)       ] & 0xff000000) ^\n   \t\t(Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^\n   \t\t(Td4[(t2 >>  8) & 0xff] & 0x0000ff00) ^\n   \t\t(Td4[(t1      ) & 0xff] & 0x000000ff) ^\n   \t\trk[0];\n\tPUTU32(pt     , s0);\n   \ts1 =\n   \t\t(Td4[(t1 >> 24)       ] & 0xff000000) ^\n   \t\t(Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^\n   \t\t(Td4[(t3 >>  8) & 0xff] & 0x0000ff00) ^\n   \t\t(Td4[(t2      ) & 0xff] & 0x000000ff) ^\n   \t\trk[1];\n\tPUTU32(pt +  4, s1);\n   \ts2 =\n   \t\t(Td4[(t2 >> 24)       ] & 0xff000000) ^\n   \t\t(Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^\n   \t\t(Td4[(t0 >>  8) & 0xff] & 0x0000ff00) ^\n   \t\t(Td4[(t3      ) & 0xff] & 0x000000ff) ^\n   \t\trk[2];\n\tPUTU32(pt +  8, s2);\n   \ts3 =\n   \t\t(Td4[(t3 >> 24)       ] & 0xff000000) ^\n   \t\t(Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^\n   \t\t(Td4[(t1 >>  8) & 0xff] & 0x0000ff00) ^\n   \t\t(Td4[(t0      ) & 0xff] & 0x000000ff) ^\n   \t\trk[3];\n\tPUTU32(pt + 12, s3);\n}\n\n#ifdef INTERMEDIATE_VALUE_KAT\n\nvoid rijndaelEncryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds) {\n\tint r;\n\tu32 s0, s1, s2, s3, t0, t1, t2, t3;\n\n    /*\n\t * map byte array block to cipher state\n\t * and add initial round key:\n\t */\n\ts0 = GETU32(block     ) ^ rk[0];\n\ts1 = GETU32(block +  4) ^ rk[1];\n\ts2 = GETU32(block +  8) ^ rk[2];\n\ts3 = GETU32(block + 12) ^ rk[3];\n    rk += 4;\n\n    /*\n\t * Nr - 1 full rounds:\n\t */\n\tfor (r = (rounds < Nr ? rounds : Nr - 1); r > 0; r--) {\n\t\tt0 =\n\t\t\tTe0[(s0 >> 24)       ] ^\n\t\t\tTe1[(s1 >> 16) & 0xff] ^\n\t\t\tTe2[(s2 >>  8) & 0xff] ^\n\t\t\tTe3[(s3      ) & 0xff] ^\n\t\t\trk[0];\n\t\tt1 =\n\t\t\tTe0[(s1 >> 24)       ] ^\n\t\t\tTe1[(s2 >> 16) & 0xff] ^\n\t\t\tTe2[(s3 >>  8) & 0xff] ^\n\t\t\tTe3[(s0      ) & 0xff] ^\n\t\t\trk[1];\n\t\tt2 =\n\t\t\tTe0[(s2 >> 24)       ] ^\n\t\t\tTe1[(s3 >> 16) & 0xff] ^\n\t\t\tTe2[(s0 >>  8) & 0xff] ^\n\t\t\tTe3[(s1      ) & 0xff] ^\n\t\t\trk[2];\n\t\tt3 =\n\t\t\tTe0[(s3 >> 24)       ] ^\n\t\t\tTe1[(s0 >> 16) & 0xff] ^\n\t\t\tTe2[(s1 >>  8) & 0xff] ^\n\t\t\tTe3[(s2      ) & 0xff] ^\n\t\t\trk[3];\n\n\t\ts0 = t0;\n\t\ts1 = t1;\n\t\ts2 = t2;\n\t\ts3 = t3;\n\t\trk += 4;\n\n    }\n\n    /*\n\t * apply last round and\n\t * map cipher state to byte array block:\n\t */\n\tif (rounds == Nr) {\n    \tt0 =\n    \t\t(Te4[(s0 >> 24)       ] & 0xff000000) ^\n    \t\t(Te4[(s1 >> 16) & 0xff] & 0x00ff0000) ^\n    \t\t(Te4[(s2 >>  8) & 0xff] & 0x0000ff00) ^\n    \t\t(Te4[(s3      ) & 0xff] & 0x000000ff) ^\n    \t\trk[0];\n    \tt1 =\n    \t\t(Te4[(s1 >> 24)       ] & 0xff000000) ^\n    \t\t(Te4[(s2 >> 16) & 0xff] & 0x00ff0000) ^\n    \t\t(Te4[(s3 >>  8) & 0xff] & 0x0000ff00) ^\n    \t\t(Te4[(s0      ) & 0xff] & 0x000000ff) ^\n    \t\trk[1];\n    \tt2 =\n    \t\t(Te4[(s2 >> 24)       ] & 0xff000000) ^\n    \t\t(Te4[(s3 >> 16) & 0xff] & 0x00ff0000) ^\n    \t\t(Te4[(s0 >>  8) & 0xff] & 0x0000ff00) ^\n    \t\t(Te4[(s1      ) & 0xff] & 0x000000ff) ^\n    \t\trk[2];\n    \tt3 =\n    \t\t(Te4[(s3 >> 24)       ] & 0xff000000) ^\n    \t\t(Te4[(s0 >> 16) & 0xff] & 0x00ff0000) ^\n    \t\t(Te4[(s1 >>  8) & 0xff] & 0x0000ff00) ^\n    \t\t(Te4[(s2      ) & 0xff] & 0x000000ff) ^\n    \t\trk[3];\n\t\t\n\t\ts0 = t0;\n\t\ts1 = t1;\n\t\ts2 = t2;\n\t\ts3 = t3;\n\t}\n\n\tPUTU32(block     , s0);\n\tPUTU32(block +  4, s1);\n\tPUTU32(block +  8, s2);\n\tPUTU32(block + 12, s3);\n}\n\nvoid rijndaelDecryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds) {\n\tint r;\n\tu32 s0, s1, s2, s3, t0, t1, t2, t3;\n\n    /*\n\t * map byte array block to cipher state\n\t * and add initial round key:\n\t */\n\ts0 = GETU32(block     ) ^ rk[0];\n\ts1 = GETU32(block +  4) ^ rk[1];\n\ts2 = GETU32(block +  8) ^ rk[2];\n\ts3 = GETU32(block + 12) ^ rk[3];\n    rk += 4;\n\n    /*\n\t * Nr - 1 full rounds:\n\t */\n\tfor (r = (rounds < Nr ? rounds : Nr) - 1; r > 0; r--) {\n\t\tt0 =\n\t\t\tTd0[(s0 >> 24)       ] ^\n\t\t\tTd1[(s3 >> 16) & 0xff] ^\n\t\t\tTd2[(s2 >>  8) & 0xff] ^\n\t\t\tTd3[(s1      ) & 0xff] ^\n\t\t\trk[0];\n\t\tt1 =\n\t\t\tTd0[(s1 >> 24)       ] ^\n\t\t\tTd1[(s0 >> 16) & 0xff] ^\n\t\t\tTd2[(s3 >>  8) & 0xff] ^\n\t\t\tTd3[(s2      ) & 0xff] ^\n\t\t\trk[1];\n\t\tt2 =\n\t\t\tTd0[(s2 >> 24)       ] ^\n\t\t\tTd1[(s1 >> 16) & 0xff] ^\n\t\t\tTd2[(s0 >>  8) & 0xff] ^\n\t\t\tTd3[(s3      ) & 0xff] ^\n\t\t\trk[2];\n\t\tt3 =\n\t\t\tTd0[(s3 >> 24)       ] ^\n\t\t\tTd1[(s2 >> 16) & 0xff] ^\n\t\t\tTd2[(s1 >>  8) & 0xff] ^\n\t\t\tTd3[(s0      ) & 0xff] ^\n\t\t\trk[3];\n\n\t\ts0 = t0;\n\t\ts1 = t1;\n\t\ts2 = t2;\n\t\ts3 = t3;\n\t\trk += 4;\n\n    }\n\n    /*\n\t * complete the last round and\n\t * map cipher state to byte array block:\n\t */\n\tt0 =\n\t\t(Td4[(s0 >> 24)       ] & 0xff000000) ^\n\t\t(Td4[(s3 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Td4[(s2 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Td4[(s1      ) & 0xff] & 0x000000ff);\n\tt1 =\n\t\t(Td4[(s1 >> 24)       ] & 0xff000000) ^\n\t\t(Td4[(s0 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Td4[(s3 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Td4[(s2      ) & 0xff] & 0x000000ff);\n\tt2 =\n\t\t(Td4[(s2 >> 24)       ] & 0xff000000) ^\n\t\t(Td4[(s1 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Td4[(s0 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Td4[(s3      ) & 0xff] & 0x000000ff);\n\tt3 =\n\t\t(Td4[(s3 >> 24)       ] & 0xff000000) ^\n\t\t(Td4[(s2 >> 16) & 0xff] & 0x00ff0000) ^\n\t\t(Td4[(s1 >>  8) & 0xff] & 0x0000ff00) ^\n\t\t(Td4[(s0      ) & 0xff] & 0x000000ff);\n\n\tif (rounds == Nr) {\n\t    t0 ^= rk[0];\n\t    t1 ^= rk[1];\n\t    t2 ^= rk[2];\n\t    t3 ^= rk[3];\n\t}\n\n\tPUTU32(block     , t0);\n\tPUTU32(block +  4, t1);\n\tPUTU32(block +  8, t2);\n\tPUTU32(block + 12, t3);\n}\n\n#endif /* INTERMEDIATE_VALUE_KAT */\n"
  },
  {
    "path": "src/crypto/aes/rijndael-alg-fst.h",
    "content": "/**\n * rijndael-alg-fst.h\n *\n * @version 3.0 (December 2000)\n *\n * Optimised ANSI C code for the Rijndael cipher (now AES)\n *\n * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>\n * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>\n * @author Paulo Barreto <paulo.barreto@terra.com.br>\n *\n * This code is hereby placed in the public domain.\n *\n * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS\n * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n#ifndef __RIJNDAEL_ALG_FST_H\n#define __RIJNDAEL_ALG_FST_H\n\n#include <stdint.h>\n\n#define MAXKC\t(256/32)\n#define MAXKB\t(256/8)\n#define MAXNR\t14\n\ntypedef uint8_t      \tu8;\t\ntypedef uint16_t      \tu16;\t\ntypedef uint32_t  \tu32;\n\nint rijndaelKeySetupEnc(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits);\nint rijndaelKeySetupDec(u32 rk[/*4*(Nr + 1)*/], const u8 cipherKey[], int keyBits);\nvoid rijndaelEncrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 pt[16], u8 ct[16]);\nvoid rijndaelDecrypt(const u32 rk[/*4*(Nr + 1)*/], int Nr, const u8 ct[16], u8 pt[16]);\n\n#ifdef INTERMEDIATE_VALUE_KAT\nvoid rijndaelEncryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds);\nvoid rijndaelDecryptRound(const u32 rk[/*4*(Nr + 1)*/], int Nr, u8 block[16], int rounds);\n#endif /* INTERMEDIATE_VALUE_KAT */\n\n#endif /* __RIJNDAEL_ALG_FST_H */\n"
  },
  {
    "path": "src/crypto/blake2/blake2-endian.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef __BLAKE2_ENDIAN_H__\n#define __BLAKE2_ENDIAN_H__\n\n#if defined(__WIN32__) || defined(WIN32)\n#ifndef __BIG_ENDIAN\n#define __BIG_ENDIAN 4321\n#endif\n#ifndef __LITTLE_ENDIAN\n#define __LITTLE_ENDIAN 1234\n#endif\n#ifndef __BYTE_ORDER\n#define __BYTE_ORDER __LITTLE_ENDIAN\n#endif\n#elif defined(__APPLE__)\n#include <machine/endian.h>\n#if !defined( __BYTE_ORDER) && defined(__DARWIN_BYTE_ORDER)\n#define __BYTE_ORDER __DARWIN_BYTE_ORDER\n#endif\n#if !defined( __BIG_ENDIAN) && defined(__DARWIN_BIG_ENDIAN)\n#define __BIG_ENDIAN __DARWIN_BIG_ENDIAN\n#endif\n#if !defined( __LITTLE_ENDIAN) && defined(__DARWIN_LITTLE_ENDIAN)\n#define __LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN\n#endif\n#else\n#include <endian.h>\n#endif\n\n#if __BYTE_ORDER == __LITTLE_ENDIAN\n#define BLAKE2_LITTLE_ENDIAN 1\n#endif\n\n#endif\n"
  },
  {
    "path": "src/crypto/blake2/blake2b.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/*\n    Cut-down BLAKE2b implementation, starting with the version from arduinolibs:\n\n    https://github.com/rweather/arduinolibs\n*/\n\n#include \"blake2b.h\"\n#include \"blake2-endian.h\"\n#include <string.h>\n\n/* Initialization vectors for BLAKE2b */\n#define BLAKE2b_IV0 0x6a09e667f3bcc908ULL\n#define BLAKE2b_IV1 0xbb67ae8584caa73bULL\n#define BLAKE2b_IV2 0x3c6ef372fe94f82bULL\n#define BLAKE2b_IV3 0xa54ff53a5f1d36f1ULL\n#define BLAKE2b_IV4 0x510e527fade682d1ULL\n#define BLAKE2b_IV5 0x9b05688c2b3e6c1fULL\n#define BLAKE2b_IV6 0x1f83d9abfb41bd6bULL\n#define BLAKE2b_IV7 0x5be0cd19137e2179ULL\n\nvoid BLAKE2b_reset(BLAKE2b_context_t *context)\n{\n    context->h[0] = BLAKE2b_IV0 ^ 0x01010040; /* Default output length of 64 */\n    context->h[1] = BLAKE2b_IV1;\n    context->h[2] = BLAKE2b_IV2;\n    context->h[3] = BLAKE2b_IV3;\n    context->h[4] = BLAKE2b_IV4;\n    context->h[5] = BLAKE2b_IV5;\n    context->h[6] = BLAKE2b_IV6;\n    context->h[7] = BLAKE2b_IV7;\n    context->length = 0;\n    context->posn = 0;\n}\n\n/* Permutation on the message input state for BLAKE2b */\nstatic const uint8_t sigma[12][16] = {\n    { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15},\n    {14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3},\n    {11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4},\n    { 7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8},\n    { 9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13},\n    { 2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9},\n    {12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11},\n    {13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10},\n    { 6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5},\n    {10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0},\n    { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15},\n    {14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3},\n};\n\n/* Rotate right by a certain number of bits */\n#define rightRotate(x, n) (((x) >> (n)) | ((x) << (64 - (n))))\n\n/* Perform a BLAKE2b quarter round operation */\n#define quarterRound(a, b, c, d, i) \\\n    do { \\\n        (a) += (b) + m[sigma_row[2 * (i)]]; \\\n        (d) = rightRotate((d) ^ (a), 32); \\\n        (c) += (d); \\\n        (b) = rightRotate((b) ^ (c), 24); \\\n        (a) += (b) + m[sigma_row[2 * (i) + 1]]; \\\n        (d) = rightRotate((d) ^ (a), 16); \\\n        (c) += (d); \\\n        (b) = rightRotate((b) ^ (c), 63); \\\n    } while (0)\n\nstatic void blake2b_transform\n    (BLAKE2b_context_t *context, const uint8_t *data, uint64_t f0)\n{\n    uint8_t index;\n    uint64_t m[16];\n    uint64_t v[16];\n    const uint8_t *sigma_row;\n\n    /* Unpack the input data from little-endian */\n#if BLAKE2_LITTLE_ENDIAN\n    memcpy(m, data, sizeof(m));\n#else\n    for (index = 0; index < 16; ++index, data += 4) {\n        m[index] = ((uint64_t)(data[0])) |\n                  (((uint64_t)(data[1])) <<  8) |\n                  (((uint64_t)(data[2])) << 16) |\n                  (((uint64_t)(data[3])) << 24) |\n                  (((uint64_t)(data[4])) << 32) |\n                  (((uint64_t)(data[5])) << 40) |\n                  (((uint64_t)(data[6])) << 48) |\n                  (((uint64_t)(data[7])) << 56);\n    }\n#endif\n\n    /* Format the block to be hashed */\n    memcpy(v, context->h, sizeof(context->h));\n    v[8]  = BLAKE2b_IV0;\n    v[9]  = BLAKE2b_IV1;\n    v[10] = BLAKE2b_IV2;\n    v[11] = BLAKE2b_IV3;\n    v[12] = BLAKE2b_IV4 ^ context->length;\n    v[13] = BLAKE2b_IV5;\n    v[14] = BLAKE2b_IV6 ^ f0;\n    v[15] = BLAKE2b_IV7;\n\n    /* Perform the 12 BLAKE2b rounds */\n    sigma_row = sigma[0];\n    for (index = 0; index < 12; ++index, sigma_row += 16) {\n        /* Column round */\n        quarterRound(v[0], v[4], v[8],  v[12], 0);\n        quarterRound(v[1], v[5], v[9],  v[13], 1);\n        quarterRound(v[2], v[6], v[10], v[14], 2);\n        quarterRound(v[3], v[7], v[11], v[15], 3);\n\n        /* Diagonal round */\n        quarterRound(v[0], v[5], v[10], v[15], 4);\n        quarterRound(v[1], v[6], v[11], v[12], 5);\n        quarterRound(v[2], v[7], v[8],  v[13], 6);\n        quarterRound(v[3], v[4], v[9],  v[14], 7);\n    }\n\n    /* Combine the new and old hash values */\n    for (index = 0; index < 8; ++index)\n        context->h[index] ^= (v[index] ^ v[index + 8]);\n}\n\nvoid BLAKE2b_update(BLAKE2b_context_t *context, const void *data, size_t size)\n{\n    /* Break the input up into 512-bit chunks and process each in turn */\n    const uint8_t *d = (const uint8_t *)data;\n    uint8_t len;\n    while (size > 0) {\n        if (context->posn == 128) {\n            /* Previous chunk was full and we know that it wasn't the\n               last chunk, so we can process it now with f0 set to zero. */\n            blake2b_transform(context, context->m, 0);\n            context->posn = 0;\n        }\n        if (size > 128 && context->posn == 0) {\n            /* This chunk can be processed directly from the input buffer */\n            context->length += 128;\n            blake2b_transform(context, d, 0);\n            d += 128;\n            size -= 128;\n        } else {\n            /* Buffer the block for later */\n            len = 128 - context->posn;\n            if (len > size)\n                len = size;\n            memcpy(context->m + context->posn, d, len);\n            context->posn += len;\n            context->length += len;\n            size -= len;\n            d += len;\n        }\n    }\n}\n\nvoid BLAKE2b_finish(BLAKE2b_context_t *context, uint8_t *hash)\n{\n    /* Pad the last chunk and hash it with f0 set to all-ones */\n    memset(context->m + context->posn, 0, 128 - context->posn);\n    blake2b_transform(context, context->m, 0xFFFFFFFFFFFFFFFF);\n\n    /* Copy the hash to the caller's return buffer in little-endian */\n#if BLAKE2_LITTLE_ENDIAN\n    memcpy(hash, context->h, sizeof(context->h));\n#else\n    {\n        unsigned posn;\n        for (posn = 0; posn < 8; ++posn, hash += 4) {\n            uint64_t h = context->h[posn];\n            hash[0] = (uint8_t)h;\n            hash[1] = (uint8_t)(h >> 8);\n            hash[2] = (uint8_t)(h >> 16);\n            hash[3] = (uint8_t)(h >> 24);\n            hash[4] = (uint8_t)(h >> 32);\n            hash[5] = (uint8_t)(h >> 40);\n            hash[6] = (uint8_t)(h >> 48);\n            hash[7] = (uint8_t)(h >> 56);\n        }\n    }\n#endif\n}\n"
  },
  {
    "path": "src/crypto/blake2/blake2b.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef BLAKE2b_H\n#define BLAKE2b_H\n\n#include <stdint.h>\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct\n{\n    uint64_t h[8];\n    uint8_t  m[128];\n    uint64_t length;    /* Limited to 2^64 - 1 bytes */\n    uint8_t  posn;\n\n} BLAKE2b_context_t;\n\nvoid BLAKE2b_reset(BLAKE2b_context_t *context);\nvoid BLAKE2b_update(BLAKE2b_context_t *context, const void *data, size_t size);\nvoid BLAKE2b_finish(BLAKE2b_context_t *context, uint8_t *hash);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "src/crypto/blake2/blake2s.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/*\n    Cut-down BLAKE2s implementation, starting with the version from arduinolibs\n    and then making modifications for desktop systems, including SSE2 support.\n\n    https://github.com/rweather/arduinolibs\n*/\n\n#include \"blake2s.h\"\n#include \"blake2-endian.h\"\n#include <string.h>\n\n/* Initialization vectors for BLAKE2s */\n#define BLAKE2s_IV0 0x6A09E667\n#define BLAKE2s_IV1 0xBB67AE85\n#define BLAKE2s_IV2 0x3C6EF372\n#define BLAKE2s_IV3 0xA54FF53A\n#define BLAKE2s_IV4 0x510E527F\n#define BLAKE2s_IV5 0x9B05688C\n#define BLAKE2s_IV6 0x1F83D9AB\n#define BLAKE2s_IV7 0x5BE0CD19\n\nvoid BLAKE2s_reset(BLAKE2s_context_t *context)\n{\n#if BLAKE2S_USE_VECTOR_MATH\n    context->h[0] = (BlakeVectorUInt32){BLAKE2s_IV0 ^ 0x01010020,\n                                        BLAKE2s_IV1, BLAKE2s_IV2, BLAKE2s_IV3};\n    context->h[1] = (BlakeVectorUInt32){BLAKE2s_IV4, BLAKE2s_IV5,\n                                        BLAKE2s_IV6, BLAKE2s_IV7};\n#else\n    context->h[0] = BLAKE2s_IV0 ^ 0x01010020; /* Default output length of 32 */\n    context->h[1] = BLAKE2s_IV1;\n    context->h[2] = BLAKE2s_IV2;\n    context->h[3] = BLAKE2s_IV3;\n    context->h[4] = BLAKE2s_IV4;\n    context->h[5] = BLAKE2s_IV5;\n    context->h[6] = BLAKE2s_IV6;\n    context->h[7] = BLAKE2s_IV7;\n#endif\n    context->length = 0;\n    context->posn = 0;\n}\n\n/* Permutation on the message input state for BLAKE2s */\nstatic const uint8_t sigma[10][16] = {\n    { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15},\n    {14, 10,  4,  8,  9, 15, 13,  6,  1, 12,  0,  2, 11,  7,  5,  3},\n    {11,  8, 12,  0,  5,  2, 15, 13, 10, 14,  3,  6,  7,  1,  9,  4},\n    { 7,  9,  3,  1, 13, 12, 11, 14,  2,  6,  5, 10,  4,  0, 15,  8},\n    { 9,  0,  5,  7,  2,  4, 10, 15, 14,  1, 11, 12,  6,  8,  3, 13},\n    { 2, 12,  6, 10,  0, 11,  8,  3,  4, 13,  7,  5, 15, 14,  1,  9},\n    {12,  5,  1, 15, 14, 13,  4, 10,  0,  7,  6,  3,  9,  2,  8, 11},\n    {13, 11,  7, 14, 12,  1,  3,  9,  5,  0, 15,  4,  8,  6,  2, 10},\n    { 6, 15, 14,  9, 11,  3,  0,  8, 12,  2, 13,  7,  1,  4, 10,  5},\n    {10,  2,  8,  4,  7,  6,  1,  5, 15, 11,  9, 14,  3, 12, 13 , 0}\n};\n\n/* Rotate right by a certain number of bits */\n#define rightRotate(x, n) (((x) >> (n)) | ((x) << (32 - (n))))\n\n/* Perform a BLAKE2s quarter round operation */\n#define quarterRound(a, b, c, d, i) \\\n    do { \\\n        (a) += (b) + m[sigma_row[2 * (i)]]; \\\n        (d) = rightRotate((d) ^ (a), 16); \\\n        (c) += (d); \\\n        (b) = rightRotate((b) ^ (c), 12); \\\n        (a) += (b) + m[sigma_row[2 * (i) + 1]]; \\\n        (d) = rightRotate((d) ^ (a), 8); \\\n        (c) += (d); \\\n        (b) = rightRotate((b) ^ (c), 7); \\\n    } while (0)\n\n#if BLAKE2S_USE_VECTOR_MATH\n\n#define shuffleLeft1(x) (BlakeVectorUInt32){(x)[1], (x)[2], (x)[3], (x)[0]}\n#define shuffleLeft2(x) (BlakeVectorUInt32){(x)[2], (x)[3], (x)[0], (x)[1]}\n#define shuffleLeft3(x) (BlakeVectorUInt32){(x)[3], (x)[0], (x)[1], (x)[2]}\n\n/* Perform a BLAKE2s quarter round operation with vector math */\n#define quarterRoundVec(a, b, c, d, mv0, mv1) \\\n    do { \\\n        (a) += (b) + (mv0); \\\n        (d) = rightRotate((d) ^ (a), 16); \\\n        (c) += (d); \\\n        (b) = rightRotate((b) ^ (c), 12); \\\n        (a) += (b) + (mv1); \\\n        (d) = rightRotate((d) ^ (a), 8); \\\n        (c) += (d); \\\n        (b) = rightRotate((b) ^ (c), 7); \\\n    } while (0)\n\n#endif\n\nstatic void blake2s_transform\n    (BLAKE2s_context_t *context, const uint8_t *data, uint32_t f0)\n{\n#if BLAKE2S_USE_VECTOR_MATH\n    /* Assumption: CPU is little-endian and supports unaligned 32-bit loads */\n    uint8_t index;\n    const uint32_t *m = (const uint32_t *)data;\n    BlakeVectorUInt32 v0, v1, v2, v3, mv0, mv1;\n    const uint8_t *sigma_row;\n\n    /* Format the block to be hashed */\n    v0 = context->h[0];\n    v1 = context->h[1];\n    v2 = (BlakeVectorUInt32){BLAKE2s_IV0, BLAKE2s_IV1,\n                             BLAKE2s_IV2, BLAKE2s_IV3};\n    v3 = (BlakeVectorUInt32){BLAKE2s_IV4 ^ (uint32_t)(context->length),\n                             BLAKE2s_IV5 ^ (uint32_t)(context->length >> 32),\n                             BLAKE2s_IV6 ^ f0, BLAKE2s_IV7};\n\n    /* Perform the 10 BLAKE2s rounds */\n    sigma_row = sigma[0];\n    for (index = 0; index < 10; ++index, sigma_row += 16) {\n        /* Column round */\n        mv0 = (BlakeVectorUInt32){m[sigma_row[0]], m[sigma_row[2]],\n                                  m[sigma_row[4]], m[sigma_row[6]]};\n        mv1 = (BlakeVectorUInt32){m[sigma_row[1]], m[sigma_row[3]],\n                                  m[sigma_row[5]], m[sigma_row[7]]};\n        quarterRoundVec(v0, v1, v2, v3, mv0, mv1);\n        v1 = shuffleLeft1(v1);\n        v2 = shuffleLeft2(v2);\n        v3 = shuffleLeft3(v3);\n\n        /* Diagonal round */\n        mv0 = (BlakeVectorUInt32){m[sigma_row[8]],  m[sigma_row[10]],\n                                  m[sigma_row[12]], m[sigma_row[14]]};\n        mv1 = (BlakeVectorUInt32){m[sigma_row[9]],  m[sigma_row[11]],\n                                  m[sigma_row[13]], m[sigma_row[15]]};\n        quarterRoundVec(v0, v1, v2, v3, mv0, mv1);\n        v1 = shuffleLeft3(v1);\n        v2 = shuffleLeft2(v2);\n        v3 = shuffleLeft1(v3);\n    }\n\n    /* Combine the new and old hash values */\n    context->h[0] ^= v0 ^ v2;\n    context->h[1] ^= v1 ^ v3;\n#else /* !BLAKE2S_USE_VECTOR_MATH */\n    uint8_t index;\n    uint32_t m[16];\n    uint32_t v[16];\n    const uint8_t *sigma_row;\n\n    /* Unpack the input data from little-endian */\n#if BLAKE2_LITTLE_ENDIAN\n    memcpy(m, data, sizeof(m));\n#else\n    for (index = 0; index < 16; ++index, data += 4) {\n        m[index] = ((uint32_t)(data[0])) |\n                  (((uint32_t)(data[1])) <<  8) |\n                  (((uint32_t)(data[2])) << 16) |\n                  (((uint32_t)(data[3])) << 24);\n    }\n#endif\n\n    /* Format the block to be hashed */\n    memcpy(v, context->h, sizeof(context->h));\n    v[8]  = BLAKE2s_IV0;\n    v[9]  = BLAKE2s_IV1;\n    v[10] = BLAKE2s_IV2;\n    v[11] = BLAKE2s_IV3;\n    v[12] = BLAKE2s_IV4 ^ (uint32_t)(context->length);\n    v[13] = BLAKE2s_IV5 ^ (uint32_t)(context->length >> 32);\n    v[14] = BLAKE2s_IV6 ^ f0;\n    v[15] = BLAKE2s_IV7;\n\n    /* Perform the 10 BLAKE2s rounds */\n    sigma_row = sigma[0];\n    for (index = 0; index < 10; ++index, sigma_row += 16) {\n        /* Column round */\n        quarterRound(v[0], v[4], v[8],  v[12], 0);\n        quarterRound(v[1], v[5], v[9],  v[13], 1);\n        quarterRound(v[2], v[6], v[10], v[14], 2);\n        quarterRound(v[3], v[7], v[11], v[15], 3);\n\n        /* Diagonal round */\n        quarterRound(v[0], v[5], v[10], v[15], 4);\n        quarterRound(v[1], v[6], v[11], v[12], 5);\n        quarterRound(v[2], v[7], v[8],  v[13], 6);\n        quarterRound(v[3], v[4], v[9],  v[14], 7);\n    }\n\n    /* Combine the new and old hash values */\n    for (index = 0; index < 8; ++index)\n        context->h[index] ^= (v[index] ^ v[index + 8]);\n#endif /* !BLAKE2S_USE_VECTOR_MATH */\n}\n\nvoid BLAKE2s_update(BLAKE2s_context_t *context, const void *data, size_t size)\n{\n    /* Break the input up into 512-bit chunks and process each in turn */\n    const uint8_t *d = (const uint8_t *)data;\n    uint8_t len;\n    while (size > 0) {\n        if (context->posn == 64) {\n            /* Previous chunk was full and we know that it wasn't the\n               last chunk, so we can process it now with f0 set to zero. */\n            blake2s_transform(context, context->m, 0);\n            context->posn = 0;\n        }\n        if (size > 64 && context->posn == 0) {\n            /* This chunk can be processed directly from the input buffer */\n            context->length += 64;\n            blake2s_transform(context, d, 0);\n            d += 64;\n            size -= 64;\n        } else {\n            /* Buffer the block for later */\n            len = 64 - context->posn;\n            if (len > size)\n                len = size;\n            memcpy(context->m + context->posn, d, len);\n            context->posn += len;\n            context->length += len;\n            size -= len;\n            d += len;\n        }\n    }\n}\n\nvoid BLAKE2s_finish(BLAKE2s_context_t *context, uint8_t *hash)\n{\n    /* Pad the last chunk and hash it with f0 set to all-ones */\n    memset(context->m + context->posn, 0, 64 - context->posn);\n    blake2s_transform(context, context->m, 0xFFFFFFFF);\n\n    /* Copy the hash to the caller's return buffer in little-endian */\n#if BLAKE2_LITTLE_ENDIAN\n    memcpy(hash, context->h, sizeof(context->h));\n#else\n    {\n        unsigned posn;\n        for (posn = 0; posn < 8; ++posn, hash += 4) {\n            uint32_t h = context->h[posn];\n            hash[0] = (uint8_t)h;\n            hash[1] = (uint8_t)(h >> 8);\n            hash[2] = (uint8_t)(h >> 16);\n            hash[3] = (uint8_t)(h >> 24);\n        }\n    }\n#endif\n}\n"
  },
  {
    "path": "src/crypto/blake2/blake2s.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef BLAKE2s_H\n#define BLAKE2s_H\n\n#include <stdint.h>\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if defined(__SSE2__) && defined(__GNUC__) && __GNUC__ >= 4\n#define BLAKE2S_USE_VECTOR_MATH 1\n#ifdef __clang__\ntypedef uint32_t BlakeVectorUInt32 __attribute__((ext_vector_type(4)));\n#else\ntypedef uint32_t BlakeVectorUInt32 __attribute__((__vector_size__(16)));\n#endif\n#else\n#undef BLAKE2S_USE_VECTOR_MATH\n#endif\n\ntypedef struct\n{\n#if BLAKE2S_USE_VECTOR_MATH\n    BlakeVectorUInt32 h[2];\n#else\n    uint32_t h[8];\n#endif\n    uint8_t  m[64];\n    uint64_t length;\n    uint8_t  posn;\n\n} BLAKE2s_context_t;\n\nvoid BLAKE2s_reset(BLAKE2s_context_t *context);\nvoid BLAKE2s_update(BLAKE2s_context_t *context, const void *data, size_t size);\nvoid BLAKE2s_finish(BLAKE2s_context_t *context, uint8_t *hash);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "src/crypto/chacha/chacha.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"chacha.h\"\n#include <string.h>\n\n/* Essentially the same as D. J. Bernstein's reference implementation\n   but with an option to use SIMD instructions for 4-way parallelism. */\n\n#define fromLittle(ptr)   \\\n    (((uint32_t)((ptr)[0])) | \\\n    (((uint32_t)((ptr)[1])) << 8) | \\\n    (((uint32_t)((ptr)[2])) << 16) | \\\n    (((uint32_t)((ptr)[3])) << 24))\n\n#define toLittle(ptr, v) \\\n    ((ptr)[0] = (uint8_t)(v), \\\n     (ptr)[1] = (uint8_t)((v) >> 8), \\\n     (ptr)[2] = (uint8_t)((v) >> 16), \\\n     (ptr)[3] = (uint8_t)((v) >> 24))\n\n#ifdef USE_VECTOR_MATH\n\n/* Assumption: CPU is little-endian and can perform unaligned\n   32-bit loads and stores */\n#define fromLittleVec(ptr)  \\\n    (VectorUInt32){((const uint32_t *)(ptr))[0], \\\n                   ((const uint32_t *)(ptr))[1], \\\n                   ((const uint32_t *)(ptr))[2], \\\n                   ((const uint32_t *)(ptr))[3]}\n#define toLittleVec(ptr, v) \\\n    (((uint32_t *)(ptr))[0] = (v)[0], \\\n     ((uint32_t *)(ptr))[1] = (v)[1], \\\n     ((uint32_t *)(ptr))[2] = (v)[2], \\\n     ((uint32_t *)(ptr))[3] = (v)[3])\n\n#endif\n\n/* Rotate left by a certain number of bits */\n#define leftRotate(x, n) (((x) << (n)) | ((x) >> (32 - (n))))\n\n/* Perform a ChaCha quarter round operation */\n#define quarterRound(a, b, c, d)    \\\n    do { \\\n        (a) += (b); \\\n        (d) = leftRotate((d) ^ (a), 16); \\\n        (c) += (d); \\\n        (b) = leftRotate((b) ^ (c), 12); \\\n        (a) += (b); \\\n        (d) = leftRotate((d) ^ (a), 8); \\\n        (c) += (d); \\\n        (b) = leftRotate((b) ^ (c), 7); \\\n    } while (0)\n\nvoid chacha_keysetup(chacha_ctx *x, const uint8_t *k, uint32_t kbits)\n{\n    static const char tag128[] = \"expand 16-byte k\";\n    static const char tag256[] = \"expand 32-byte k\";\n    if (kbits == 256) {\n        memcpy(x->input, tag256, 16);\n#ifdef USE_VECTOR_MATH\n        x->input[1] = fromLittleVec(k);\n        x->input[2] = fromLittleVec(k + 16);\n#else\n        x->input[4]  = fromLittle(k);\n        x->input[5]  = fromLittle(k + 4);\n        x->input[6]  = fromLittle(k + 8);\n        x->input[7]  = fromLittle(k + 12);\n        x->input[8]  = fromLittle(k + 16);\n        x->input[9]  = fromLittle(k + 20);\n        x->input[10] = fromLittle(k + 24);\n        x->input[11] = fromLittle(k + 28);\n#endif\n    } else {\n        memcpy(x->input, tag128, 16);\n#ifdef USE_VECTOR_MATH\n        x->input[2] = x->input[1] = fromLittleVec(k);\n#else\n        x->input[8]  = x->input[4] = fromLittle(k);\n        x->input[9]  = x->input[5] = fromLittle(k + 4);\n        x->input[10] = x->input[6] = fromLittle(k + 8);\n        x->input[11] = x->input[7] = fromLittle(k + 12);\n#endif\n    }\n#ifdef USE_VECTOR_MATH\n    x->input[3] = (VectorUInt32){0, 0, 0, 0};\n#else\n    memset(x->input + 12, 0, 16);\n#endif\n}\n\nvoid chacha_ivsetup(chacha_ctx *x, const uint8_t *iv, const uint8_t *counter)\n{\n#ifdef USE_VECTOR_MATH\n    if (counter) {\n        x->input[3] = (VectorUInt32){fromLittle(counter),\n                                     fromLittle(counter + 4),\n                                     fromLittle(iv),\n                                     fromLittle(iv + 4)};\n    } else {\n        x->input[3] = (VectorUInt32){0, 0, fromLittle(iv), fromLittle(iv + 4)};\n    }\n#else\n    if (counter) {\n        x->input[12] = fromLittle(counter);\n        x->input[13] = fromLittle(counter + 4);\n    } else {\n        x->input[12] = 0;\n        x->input[13] = 0;\n    }\n    x->input[14] = fromLittle(iv);\n    x->input[15] = fromLittle(iv + 4);\n#endif\n}\n\n#ifdef USE_VECTOR_MATH\n\n#define shuffleLeft1(x) (VectorUInt32){(x)[1], (x)[2], (x)[3], (x)[0]}\n#define shuffleLeft2(x) (VectorUInt32){(x)[2], (x)[3], (x)[0], (x)[1]}\n#define shuffleLeft3(x) (VectorUInt32){(x)[3], (x)[0], (x)[1], (x)[2]}\n\nvoid chacha_encrypt_bytes(chacha_ctx *x, const uint8_t *m, uint8_t *c, uint32_t bytes)\n{\n    VectorUInt32 out0, out1, out2, out3;\n    uint32_t index;\n    uint8_t temp[64];\n    uint8_t *t;\n\n    /* Encrypt all input blocks */\n    while (bytes > 0) {\n        /* Copy the \"in\" block to \"out\" */\n        out0 = x->input[0];\n        out1 = x->input[1];\n        out2 = x->input[2];\n        out3 = x->input[3];\n\n        /* Perform the 20 rounds of the hash core */\n        for (index = 20; index >= 2; index -= 2) {\n            /* Column round */\n            quarterRound(out0, out1, out2, out3);\n            out1 = shuffleLeft1(out1);\n            out2 = shuffleLeft2(out2);\n            out3 = shuffleLeft3(out3);\n\n            /* Diagonal round */\n            quarterRound(out0, out1, out2, out3);\n            out1 = shuffleLeft3(out1);\n            out2 = shuffleLeft2(out2);\n            out3 = shuffleLeft1(out3);\n        }\n\n        /* Add the input to the output */\n        out0 += x->input[0];\n        out1 += x->input[1];\n        out2 += x->input[2];\n        out3 += x->input[3];\n\n        /* Increment the counter in the input block */\n        if (++(x->input[3][0]) == 0)\n            ++(x->input[3][1]);\n\n        /* XOR the plaintext with the output to create the ciphertext */\n        if (bytes >= 64) {\n            t = c;\n        } else {\n            memcpy(temp, m, bytes);\n            m = temp;\n            t = temp;\n        }\n        out0 ^= fromLittleVec(m);\n        out1 ^= fromLittleVec(m + 16);\n        out2 ^= fromLittleVec(m + 32);\n        out3 ^= fromLittleVec(m + 48);\n        toLittleVec(t, out0);\n        toLittleVec(t + 16, out1);\n        toLittleVec(t + 32, out2);\n        toLittleVec(t + 48, out3);\n        if (bytes < 64) {\n            memcpy(c, t, bytes);\n            break;\n        }\n        m += 64;\n        c += 64;\n        bytes -= 64;\n    }\n}\n\n#else /* !USE_VECTOR_MATH */\n\nvoid chacha_encrypt_bytes(chacha_ctx *x, const uint8_t *m, uint8_t *c, uint32_t bytes)\n{\n    uint32_t in0, in1, in2, in3, in4, in5, in6, in7;\n    uint32_t in8, in9, in10, in11, in12, in13, in14, in15;\n    uint32_t out0, out1, out2, out3, out4, out5, out6, out7;\n    uint32_t out8, out9, out10, out11, out12, out13, out14, out15;\n    uint32_t index;\n    uint8_t temp[64];\n    uint8_t *t;\n\n    /* Load the context into local variables */\n    in0 = x->input[0]; in1 = x->input[1]; in2 = x->input[2]; in3 = x->input[3];\n    in4 = x->input[4]; in5 = x->input[5]; in6 = x->input[6]; in7 = x->input[7];\n    in8 = x->input[8]; in9 = x->input[9]; in10 = x->input[10]; in11 = x->input[11];\n    in12 = x->input[12]; in13 = x->input[13]; in14 = x->input[14]; in15 = x->input[15];\n\n    /* Encrypt all input blocks */\n    while (bytes > 0) {\n        /* Copy the \"in\" block to \"out\" */\n        out0 = in0; out1 = in1; out2 = in2; out3 = in3;\n        out4 = in4; out5 = in5; out6 = in6; out7 = in7;\n        out8 = in8; out9 = in9; out10 = in10; out11 = in11;\n        out12 = in12; out13 = in13; out14 = in14; out15 = in15;\n\n        /* Perform the 20 rounds of the hash core */\n        for (index = 20; index >= 2; index -= 2) {\n            /* Column round */\n            quarterRound(out0, out4, out8,  out12);\n            quarterRound(out1, out5, out9,  out13);\n            quarterRound(out2, out6, out10, out14);\n            quarterRound(out3, out7, out11, out15);\n\n            /* Diagonal round */\n            quarterRound(out0, out5, out10, out15);\n            quarterRound(out1, out6, out11, out12);\n            quarterRound(out2, out7, out8,  out13);\n            quarterRound(out3, out4, out9,  out14);\n        }\n\n        /* Add the input to the output */\n        out0 += in0; out1 += in1; out2 += in2; out3 += in3;\n        out4 += in4; out5 += in5; out6 += in6; out7 += in7;\n        out8 += in8; out9 += in9; out10 += in10; out11 += in11;\n        out12 += in12; out13 += in13; out14 += in14; out15 += in15;\n\n        /* Increment the counter in the input block */\n        if ((++in12) == 0)\n            ++in13;\n\n        /* XOR the plaintext with the output to create the ciphertext */\n        if (bytes >= 64) {\n            t = c;\n        } else {\n            memcpy(temp, m, bytes);\n            m = temp;\n            t = temp;\n        }\n        out0 ^= fromLittle(m);\n        out1 ^= fromLittle(m + 4);\n        out2 ^= fromLittle(m + 8);\n        out3 ^= fromLittle(m + 12);\n        out4 ^= fromLittle(m + 16);\n        out5 ^= fromLittle(m + 20);\n        out6 ^= fromLittle(m + 24);\n        out7 ^= fromLittle(m + 28);\n        out8 ^= fromLittle(m + 32);\n        out9 ^= fromLittle(m + 36);\n        out10 ^= fromLittle(m + 40);\n        out11 ^= fromLittle(m + 44);\n        out12 ^= fromLittle(m + 48);\n        out13 ^= fromLittle(m + 52);\n        out14 ^= fromLittle(m + 56);\n        out15 ^= fromLittle(m + 60);\n        toLittle(t, out0);\n        toLittle(t + 4, out1);\n        toLittle(t + 8, out2);\n        toLittle(t + 12, out3);\n        toLittle(t + 16, out4);\n        toLittle(t + 20, out5);\n        toLittle(t + 24, out6);\n        toLittle(t + 28, out7);\n        toLittle(t + 32, out8);\n        toLittle(t + 36, out9);\n        toLittle(t + 40, out10);\n        toLittle(t + 44, out11);\n        toLittle(t + 48, out12);\n        toLittle(t + 52, out13);\n        toLittle(t + 56, out14);\n        toLittle(t + 60, out15);\n        if (bytes < 64) {\n            memcpy(c, t, bytes);\n            break;\n        }\n        m += 64;\n        c += 64;\n        bytes -= 64;\n    }\n\n    /* Copy the counter back into the context */\n    x->input[12] = in12;\n    x->input[13] = in13;\n}\n\n#endif /* !USE_VECTOR_MATH */\n"
  },
  {
    "path": "src/crypto/chacha/chacha.h",
    "content": "\n#ifndef CHACHA_H\n#define CHACHA_H\n\n#include <stddef.h>\n#include <stdint.h>\n\n#if defined(__SSE2__) && defined(__GNUC__) && __GNUC__ >= 4\n#define USE_VECTOR_MATH 1\n#ifdef __clang__\ntypedef uint32_t VectorUInt32 __attribute__((ext_vector_type(4)));\n#else\ntypedef uint32_t VectorUInt32 __attribute__((__vector_size__(16)));\n#endif\n#else\n#undef USE_VECTOR_MATH\n#endif\n\ntypedef struct\n{\n#ifdef USE_VECTOR_MATH\n    VectorUInt32 input[4];\n#else\n    uint32_t input[16];\n#endif\n\n} chacha_ctx;\n\nextern void chacha_keysetup(chacha_ctx *x,const uint8_t *k,uint32_t kbits);\nextern void chacha_ivsetup(chacha_ctx *x,const uint8_t *iv,const uint8_t *counter);\nextern void chacha_encrypt_bytes(chacha_ctx *x,const uint8_t *m,uint8_t *c,uint32_t bytes);\n\n#endif\n"
  },
  {
    "path": "src/crypto/curve448/curve448.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"curve448.h\"\n\n/* Include the field arithmetic from Ed448-Goldilocks */\n#include <field.h>\n\n/*\nThe public Ed448-Goldilocks functions don't quite do what we want.\nSo we instead call the internal field arithmetic functions directly\nto implement the requirements from RFC 7748.\n\nReference: https://tools.ietf.org/html/rfc7748\n*/\n\n/**\n * \\brief Conditional swap of two values in constant time.\n *\n * \\param swap Set to 1 to swap the values or 0 to leave them as-is.\n * \\param x The first value to swap.\n * \\param y The second value to swap.\n *\n * Reference: http://tools.ietf.org/html/rfc7748\n */\nstatic void cswap(unsigned char swap, field_t *x, field_t *y)\n{\n#if WORD_BITS == 64\n    uint64_t sel, dummy;\n#else\n    uint32_t sel, dummy;\n#endif\n    unsigned char posn;\n    sel = (uint64_t)(-((int64_t)swap));\n    for (posn = 0; posn < (sizeof(x->limb) / sizeof(x->limb[0])); ++posn) {\n        dummy = sel & (x->limb[posn] ^ y->limb[posn]);\n        x->limb[posn] ^= dummy;\n        y->limb[posn] ^= dummy;\n    }\n}\n\n/**\n * \\brief Evaluates the Curve448 function.\n *\n * \\param mypublic Final output public key, 56 bytes.\n * \\param secret Secret value; i.e. the private key, 56 bytes.\n * \\param basepoint The input base point, 56 bytes.\n *\n * \\return Returns 1 if the evaluation was successful, 0 if the inputs\n * were invalid in some way.\n *\n * Reference: http://tools.ietf.org/html/rfc7748\n */\nint curve448_eval(unsigned char mypublic[56], const unsigned char secret[56], const unsigned char basepoint[56])\n{\n    /* Implementation details from RFC 7748, section 5 */\n    field_t x_1, x_2, z_2, x_3, z_3;\n    field_t A, AA, B, BB, E, C, D, DA, CB;\n    unsigned char swap = 0;\n    unsigned char byte_val;\n    unsigned char k_t;\n    unsigned char bit = 7;\n    unsigned char posn = 55;\n\n    /* Initialize working variables */\n    mask_t success = field_deserialize(&x_1, basepoint);    /* x_1 = u */\n    field_set_ui(&x_2, 1);                                  /* x_2 = 1 */\n    field_set_ui(&z_2, 0);                                  /* z_2 = 0 */\n    field_copy(&x_3, &x_1);                                 /* x_3 = u */\n    field_set_ui(&z_3, 1);                                  /* z_3 = 1 */\n\n    /* Loop on all bits of the secret from highest to lowest.\n       We perform the required masking from RFC 7748 as we go */\n    byte_val = secret[posn] | 0x80;\n    for (;;) {\n        /* Get the next bit of the secret and conditionally swap */\n        k_t = (byte_val >> bit) & 1;\n        swap ^= k_t;\n        cswap(swap, &x_2, &x_3);\n        cswap(swap, &z_2, &z_3);\n        swap = k_t;\n\n        /* Double and add for this bit */\n        field_add(&A, &x_2, &z_2);          /* A = x_2 + z_2 */\n        field_sqr(&AA, &A);                 /* AA = A^2 */\n        field_sub(&B, &x_2, &z_2);          /* B = x_2 - z_2 */\n        field_sqr(&BB, &B);                 /* BB = B^2 */\n        field_sub(&E, &AA, &BB);            /* E = AA - BB */\n        field_add(&C, &x_3, &z_3);          /* C = x_3 + z_3 */\n        field_sub(&D, &x_3, &z_3);          /* D = x_3 - z_3 */\n        field_mul(&DA, &D, &A);             /* DA = D * A */\n        field_mul(&CB, &C, &B);             /* CB = C * B */\n        field_add(&z_2, &DA, &CB);          /* x_3 = (DA + CB)^2 */\n        field_sqr(&x_3, &z_2);\n        field_sub(&z_2, &DA, &CB);          /* z_3 = x_1 * (DA - CB)^2 */\n        field_sqr(&x_2, &z_2);\n        field_mul(&z_3, &x_1, &x_2);\n        field_mul(&x_2, &AA, &BB);          /* x_2 = AA * BB */\n        field_mulw(&z_2, &E, 39081);        /* z_2 = E * (AA + a24 * E) */\n        field_add(&A, &AA, &z_2);\n        field_mul(&z_2, &E, &A);\n\n        /* Move onto the next lower bit of the secret */\n        if (bit) {\n            --bit;\n        } else if (posn > 1) {\n            bit = 7;\n            byte_val = secret[--posn];\n        } else if (posn == 1) {\n            bit = 7;\n            byte_val = secret[--posn] & 0xFC;\n        } else {\n            break;\n        }\n    }\n\n    /* Final conditional swap */\n    cswap(swap, &x_2, &x_3);\n    cswap(swap, &z_2, &z_3);\n\n    /* Compute x_2 * z_2 ^ (p - 2)\n\n       The value p - 2 is: FF...FEFF...FD, which from highest to lowest is\n       223 one bits, followed by a zero bit, followed by 222 one bits,\n       followed by another zero bit, and a final one bit.\n\n       The naive implementation that squares for every bit and multiplies\n       for every 1 bit requires 893 multiplications.  The following can\n       do the same operation in 483 multiplications.  The basic idea is to\n       create bit patterns and then \"shift\" them into position.  We start\n       with a 4 bit pattern 1111, which we can square 4 times to get\n       11110000 and then multiply by the 1111 pattern to get 11111111.\n       We then repeat that to turn 11111111 into 1111111111111111, etc.\n    */\n    field_sqr(&B, &z_2);                /* Set A to a 4 bit pattern */\n    field_mul(&A, &B, &z_2);\n    field_sqr(&B, &A);\n    field_mul(&A, &B, &z_2);\n    field_sqr(&B, &A);\n    field_mul(&A, &B, &z_2);\n    field_sqr(&B, &A);                  /* Set C to a 6 bit pattern */\n    field_mul(&C, &B, &z_2);\n    field_sqr(&B, &C);\n    field_mul(&C, &B, &z_2);\n    field_sqr(&B, &C);                  /* Set A to a 8 bit pattern */\n    field_mul(&A, &B, &z_2);\n    field_sqr(&B, &A);\n    field_mul(&A, &B, &z_2);\n    field_sqr(&E, &A);                  /* Set E to a 16 bit pattern */\n    field_sqr(&B, &E);\n    for (posn = 1; posn < 4; ++posn) {\n        field_sqr(&E, &B);\n        field_sqr(&B, &E);\n    }\n    field_mul(&E, &B, &A);\n    field_sqr(&AA, &E);                 /* Set AA to a 32 bit pattern */\n    field_sqr(&B, &AA);\n    for (posn = 1; posn < 8; ++posn) {\n        field_sqr(&AA, &B);\n        field_sqr(&B, &AA);\n    }\n    field_mul(&AA, &B, &E);\n    field_sqr(&BB, &AA);                /* Set BB to a 64 bit pattern */\n    field_sqr(&B, &BB);\n    for (posn = 1; posn < 16; ++posn) {\n        field_sqr(&BB, &B);\n        field_sqr(&B, &BB);\n    }\n    field_mul(&BB, &B, &AA);\n    field_sqr(&DA, &BB);                /* Set DA to a 128 bit pattern */\n    field_sqr(&B, &DA);\n    for (posn = 1; posn < 32; ++posn) {\n        field_sqr(&DA, &B);\n        field_sqr(&B, &DA);\n    }\n    field_mul(&DA, &B, &BB);\n    field_sqr(&CB, &DA);                /* Set CB to a 192 bit pattern */\n    field_sqr(&B, &CB);                 /* 192 = 128 + 64 */\n    for (posn = 1; posn < 32; ++posn) {\n        field_sqr(&CB, &B);\n        field_sqr(&B, &CB);\n    }\n    field_mul(&CB, &B, &BB);\n    field_sqr(&DA, &CB);                /* Set DA to a 208 bit pattern */\n    field_sqr(&B, &DA);                 /* 208 = 128 + 64 + 16 */\n    for (posn = 1; posn < 8; ++posn) {\n        field_sqr(&DA, &B);\n        field_sqr(&B, &DA);\n    }\n    field_mul(&DA, &B, &E);\n    field_sqr(&CB, &DA);                /* Set CB to a 216 bit pattern */\n    field_sqr(&B, &CB);                 /* 216 = 128 + 64 + 16 + 8 */\n    for (posn = 1; posn < 4; ++posn) {\n        field_sqr(&CB, &B);\n        field_sqr(&B, &CB);\n    }\n    field_mul(&CB, &B, &A);\n    field_sqr(&DA, &CB);                /* Set DA to a 222 bit pattern */\n    field_sqr(&B, &DA);                 /* 222 = 128 + 64 + 16+ 8 + 6 */\n    for (posn = 1; posn < 3; ++posn) {\n        field_sqr(&DA, &B);\n        field_sqr(&B, &DA);\n    }\n    field_mul(&DA, &B, &C);\n    field_sqr(&CB, &DA);                /* Set CB to a 224 bit pattern */\n    field_mul(&B, &CB, &z_2);           /* CB = DA|1|0 */\n    field_sqr(&CB, &B);\n    field_sqr(&BB, &CB);                /* Set BB to a 446 bit pattern */\n    field_sqr(&B, &BB);                 /* BB = DA|1|0|DA */\n    for (posn = 1; posn < 111; ++posn) {\n        field_sqr(&BB, &B);\n        field_sqr(&B, &BB);\n    }\n    field_mul(&BB, &B, &DA);\n    field_sqr(&B, &BB);                 /* Set B to a 448 bit pattern */\n    field_sqr(&BB, &B);                 /* B = DA|1|0|DA|01 */\n    field_mul(&B, &BB, &z_2);\n    field_mul(&BB, &x_2, &B);           /* Set BB to x_2 * B */\n\n    /* Serialize the result into the return buffer */\n    field_serialize(mypublic, &BB);\n\n    /* If the original base point was out of range, then fail now */\n    return (int)(1 & success);\n}\n"
  },
  {
    "path": "src/crypto/curve448/curve448.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef __CURVE448_H__\n#define __CURVE448_H__\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nint curve448_eval(unsigned char mypublic[56], const unsigned char secret[56], const unsigned char basepoint[56]);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "src/crypto/donna/curve25519-donna-c64.c",
    "content": "/* Copyright 2008, Google Inc.\n * All rights reserved.\n *\n * Code released into the public domain.\n *\n * curve25519-donna: Curve25519 elliptic curve, public key function\n *\n * http://code.google.com/p/curve25519-donna/\n *\n * Adam Langley <agl@imperialviolet.org>\n *\n * Derived from public domain C code by Daniel J. Bernstein <djb@cr.yp.to>\n *\n * More information about curve25519 can be found here\n *   http://cr.yp.to/ecdh.html\n *\n * djb's sample implementation of curve25519 is written in a special assembly\n * language called qhasm and uses the floating point registers.\n *\n * This is, almost, a clean room reimplementation from the curve25519 paper. It\n * uses many of the tricks described therein. Only the crecip function is taken\n * from the sample implementation.\n */\n\n#include <string.h>\n#include <stdint.h>\n\ntypedef uint8_t u8;\ntypedef uint64_t limb;\ntypedef limb felem[5];\n// This is a special gcc mode for 128-bit integers. It's implemented on 64-bit\n// platforms only as far as I know.\ntypedef unsigned uint128_t __attribute__((mode(TI)));\n\n#undef force_inline\n#define force_inline __attribute__((always_inline))\n\n/* Sum two numbers: output += in */\nstatic inline void force_inline\nfsum(limb *output, const limb *in) {\n  output[0] += in[0];\n  output[1] += in[1];\n  output[2] += in[2];\n  output[3] += in[3];\n  output[4] += in[4];\n}\n\n/* Find the difference of two numbers: output = in - output\n * (note the order of the arguments!)\n *\n * Assumes that out[i] < 2**52\n * On return, out[i] < 2**55\n */\nstatic inline void force_inline\nfdifference_backwards(felem out, const felem in) {\n  /* 152 is 19 << 3 */\n  static const limb two54m152 = (((limb)1) << 54) - 152;\n  static const limb two54m8 = (((limb)1) << 54) - 8;\n\n  out[0] = in[0] + two54m152 - out[0];\n  out[1] = in[1] + two54m8 - out[1];\n  out[2] = in[2] + two54m8 - out[2];\n  out[3] = in[3] + two54m8 - out[3];\n  out[4] = in[4] + two54m8 - out[4];\n}\n\n/* Multiply a number by a scalar: output = in * scalar */\nstatic inline void force_inline\nfscalar_product(felem output, const felem in, const limb scalar) {\n  uint128_t a;\n\n  a = ((uint128_t) in[0]) * scalar;\n  output[0] = ((limb)a) & 0x7ffffffffffff;\n\n  a = ((uint128_t) in[1]) * scalar + ((limb) (a >> 51));\n  output[1] = ((limb)a) & 0x7ffffffffffff;\n\n  a = ((uint128_t) in[2]) * scalar + ((limb) (a >> 51));\n  output[2] = ((limb)a) & 0x7ffffffffffff;\n\n  a = ((uint128_t) in[3]) * scalar + ((limb) (a >> 51));\n  output[3] = ((limb)a) & 0x7ffffffffffff;\n\n  a = ((uint128_t) in[4]) * scalar + ((limb) (a >> 51));\n  output[4] = ((limb)a) & 0x7ffffffffffff;\n\n  output[0] += (a >> 51) * 19;\n}\n\n/* Multiply two numbers: output = in2 * in\n *\n * output must be distinct to both inputs. The inputs are reduced coefficient\n * form, the output is not.\n *\n * Assumes that in[i] < 2**55 and likewise for in2.\n * On return, output[i] < 2**52\n */\nstatic inline void force_inline\nfmul(felem output, const felem in2, const felem in) {\n  uint128_t t[5];\n  limb r0,r1,r2,r3,r4,s0,s1,s2,s3,s4,c;\n\n  r0 = in[0];\n  r1 = in[1];\n  r2 = in[2];\n  r3 = in[3];\n  r4 = in[4];\n\n  s0 = in2[0];\n  s1 = in2[1];\n  s2 = in2[2];\n  s3 = in2[3];\n  s4 = in2[4];\n\n  t[0]  =  ((uint128_t) r0) * s0;\n  t[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;\n  t[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;\n  t[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;\n  t[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;\n\n  r4 *= 19;\n  r1 *= 19;\n  r2 *= 19;\n  r3 *= 19;\n\n  t[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;\n  t[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;\n  t[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;\n  t[3] += ((uint128_t) r4) * s4;\n\n                  r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);\n  t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);\n  t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);\n  t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);\n  t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);\n  r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;\n  r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;\n  r2 +=   c;\n\n  output[0] = r0;\n  output[1] = r1;\n  output[2] = r2;\n  output[3] = r3;\n  output[4] = r4;\n}\n\nstatic inline void force_inline\nfsquare_times(felem output, const felem in, limb count) {\n  uint128_t t[5];\n  limb r0,r1,r2,r3,r4,c;\n  limb d0,d1,d2,d4,d419;\n\n  r0 = in[0];\n  r1 = in[1];\n  r2 = in[2];\n  r3 = in[3];\n  r4 = in[4];\n\n  do {\n    d0 = r0 * 2;\n    d1 = r1 * 2;\n    d2 = r2 * 2 * 19;\n    d419 = r4 * 19;\n    d4 = d419 * 2;\n\n    t[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));\n    t[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));\n    t[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));\n    t[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));\n    t[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));\n\n                    r0 = (limb)t[0] & 0x7ffffffffffff; c = (limb)(t[0] >> 51);\n    t[1] += c;      r1 = (limb)t[1] & 0x7ffffffffffff; c = (limb)(t[1] >> 51);\n    t[2] += c;      r2 = (limb)t[2] & 0x7ffffffffffff; c = (limb)(t[2] >> 51);\n    t[3] += c;      r3 = (limb)t[3] & 0x7ffffffffffff; c = (limb)(t[3] >> 51);\n    t[4] += c;      r4 = (limb)t[4] & 0x7ffffffffffff; c = (limb)(t[4] >> 51);\n    r0 +=   c * 19; c = r0 >> 51; r0 = r0 & 0x7ffffffffffff;\n    r1 +=   c;      c = r1 >> 51; r1 = r1 & 0x7ffffffffffff;\n    r2 +=   c;\n  } while(--count);\n\n  output[0] = r0;\n  output[1] = r1;\n  output[2] = r2;\n  output[3] = r3;\n  output[4] = r4;\n}\n\n/* Load a little-endian 64-bit number  */\nstatic limb\nload_limb(const u8 *in) {\n  return\n    ((limb)in[0]) |\n    (((limb)in[1]) << 8) |\n    (((limb)in[2]) << 16) |\n    (((limb)in[3]) << 24) |\n    (((limb)in[4]) << 32) |\n    (((limb)in[5]) << 40) |\n    (((limb)in[6]) << 48) |\n    (((limb)in[7]) << 56);\n}\n\nstatic void\nstore_limb(u8 *out, limb in) {\n  out[0] = in & 0xff;\n  out[1] = (in >> 8) & 0xff;\n  out[2] = (in >> 16) & 0xff;\n  out[3] = (in >> 24) & 0xff;\n  out[4] = (in >> 32) & 0xff;\n  out[5] = (in >> 40) & 0xff;\n  out[6] = (in >> 48) & 0xff;\n  out[7] = (in >> 56) & 0xff;\n}\n\n/* Take a little-endian, 32-byte number and expand it into polynomial form */\nstatic void\nfexpand(limb *output, const u8 *in) {\n  output[0] = load_limb(in) & 0x7ffffffffffff;\n  output[1] = (load_limb(in+6) >> 3) & 0x7ffffffffffff;\n  output[2] = (load_limb(in+12) >> 6) & 0x7ffffffffffff;\n  output[3] = (load_limb(in+19) >> 1) & 0x7ffffffffffff;\n  output[4] = (load_limb(in+24) >> 12) & 0x7ffffffffffff;\n}\n\n/* Take a fully reduced polynomial form number and contract it into a\n * little-endian, 32-byte array\n */\nstatic void\nfcontract(u8 *output, const felem input) {\n  uint128_t t[5];\n\n  t[0] = input[0];\n  t[1] = input[1];\n  t[2] = input[2];\n  t[3] = input[3];\n  t[4] = input[4];\n\n  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;\n  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;\n  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;\n  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;\n  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;\n\n  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;\n  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;\n  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;\n  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;\n  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;\n\n  /* now t is between 0 and 2^255-1, properly carried. */\n  /* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */\n\n  t[0] += 19;\n\n  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;\n  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;\n  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;\n  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;\n  t[0] += 19 * (t[4] >> 51); t[4] &= 0x7ffffffffffff;\n\n  /* now between 19 and 2^255-1 in both cases, and offset by 19. */\n\n  t[0] += 0x8000000000000 - 19;\n  t[1] += 0x8000000000000 - 1;\n  t[2] += 0x8000000000000 - 1;\n  t[3] += 0x8000000000000 - 1;\n  t[4] += 0x8000000000000 - 1;\n\n  /* now between 2^255 and 2^256-20, and offset by 2^255. */\n\n  t[1] += t[0] >> 51; t[0] &= 0x7ffffffffffff;\n  t[2] += t[1] >> 51; t[1] &= 0x7ffffffffffff;\n  t[3] += t[2] >> 51; t[2] &= 0x7ffffffffffff;\n  t[4] += t[3] >> 51; t[3] &= 0x7ffffffffffff;\n  t[4] &= 0x7ffffffffffff;\n\n  store_limb(output,    t[0] | (t[1] << 51));\n  store_limb(output+8,  (t[1] >> 13) | (t[2] << 38));\n  store_limb(output+16, (t[2] >> 26) | (t[3] << 25));\n  store_limb(output+24, (t[3] >> 39) | (t[4] << 12));\n}\n\n/* Input: Q, Q', Q-Q'\n * Output: 2Q, Q+Q'\n *\n *   x2 z3: long form\n *   x3 z3: long form\n *   x z: short form, destroyed\n *   xprime zprime: short form, destroyed\n *   qmqp: short form, preserved\n */\nstatic void\nfmonty(limb *x2, limb *z2, /* output 2Q */\n       limb *x3, limb *z3, /* output Q + Q' */\n       limb *x, limb *z,   /* input Q */\n       limb *xprime, limb *zprime, /* input Q' */\n       const limb *qmqp /* input Q - Q' */) {\n  limb origx[5], origxprime[5], zzz[5], xx[5], zz[5], xxprime[5],\n        zzprime[5], zzzprime[5];\n\n  memcpy(origx, x, 5 * sizeof(limb));\n  fsum(x, z);\n  fdifference_backwards(z, origx);  // does x - z\n\n  memcpy(origxprime, xprime, sizeof(limb) * 5);\n  fsum(xprime, zprime);\n  fdifference_backwards(zprime, origxprime);\n  fmul(xxprime, xprime, z);\n  fmul(zzprime, x, zprime);\n  memcpy(origxprime, xxprime, sizeof(limb) * 5);\n  fsum(xxprime, zzprime);\n  fdifference_backwards(zzprime, origxprime);\n  fsquare_times(x3, xxprime, 1);\n  fsquare_times(zzzprime, zzprime, 1);\n  fmul(z3, zzzprime, qmqp);\n\n  fsquare_times(xx, x, 1);\n  fsquare_times(zz, z, 1);\n  fmul(x2, xx, zz);\n  fdifference_backwards(zz, xx);  // does zz = xx - zz\n  fscalar_product(zzz, zz, 121665);\n  fsum(zzz, xx);\n  fmul(z2, zz, zzz);\n}\n\n// -----------------------------------------------------------------------------\n// Maybe swap the contents of two limb arrays (@a and @b), each @len elements\n// long. Perform the swap iff @swap is non-zero.\n//\n// This function performs the swap without leaking any side-channel\n// information.\n// -----------------------------------------------------------------------------\nstatic void\nswap_conditional(limb a[5], limb b[5], limb iswap) {\n  unsigned i;\n  const limb swap = -iswap;\n\n  for (i = 0; i < 5; ++i) {\n    const limb x = swap & (a[i] ^ b[i]);\n    a[i] ^= x;\n    b[i] ^= x;\n  }\n}\n\n/* Calculates nQ where Q is the x-coordinate of a point on the curve\n *\n *   resultx/resultz: the x coordinate of the resulting curve point (short form)\n *   n: a little endian, 32-byte number\n *   q: a point of the curve (short form)\n */\nstatic void\ncmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) {\n  limb a[5] = {0}, b[5] = {1}, c[5] = {1}, d[5] = {0};\n  limb *nqpqx = a, *nqpqz = b, *nqx = c, *nqz = d, *t;\n  limb e[5] = {0}, f[5] = {1}, g[5] = {0}, h[5] = {1};\n  limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h;\n\n  unsigned i, j;\n\n  memcpy(nqpqx, q, sizeof(limb) * 5);\n\n  for (i = 0; i < 32; ++i) {\n    u8 byte = n[31 - i];\n    for (j = 0; j < 8; ++j) {\n      const limb bit = byte >> 7;\n\n      swap_conditional(nqx, nqpqx, bit);\n      swap_conditional(nqz, nqpqz, bit);\n      fmonty(nqx2, nqz2,\n             nqpqx2, nqpqz2,\n             nqx, nqz,\n             nqpqx, nqpqz,\n             q);\n      swap_conditional(nqx2, nqpqx2, bit);\n      swap_conditional(nqz2, nqpqz2, bit);\n\n      t = nqx;\n      nqx = nqx2;\n      nqx2 = t;\n      t = nqz;\n      nqz = nqz2;\n      nqz2 = t;\n      t = nqpqx;\n      nqpqx = nqpqx2;\n      nqpqx2 = t;\n      t = nqpqz;\n      nqpqz = nqpqz2;\n      nqpqz2 = t;\n\n      byte <<= 1;\n    }\n  }\n\n  memcpy(resultx, nqx, sizeof(limb) * 5);\n  memcpy(resultz, nqz, sizeof(limb) * 5);\n}\n\n\n// -----------------------------------------------------------------------------\n// Shamelessly copied from djb's code, tightened a little\n// -----------------------------------------------------------------------------\nstatic void\ncrecip(felem out, const felem z) {\n  felem a,t0,b,c;\n\n  /* 2 */ fsquare_times(a, z, 1); // a = 2\n  /* 8 */ fsquare_times(t0, a, 2);\n  /* 9 */ fmul(b, t0, z); // b = 9\n  /* 11 */ fmul(a, b, a); // a = 11\n  /* 22 */ fsquare_times(t0, a, 1);\n  /* 2^5 - 2^0 = 31 */ fmul(b, t0, b);\n  /* 2^10 - 2^5 */ fsquare_times(t0, b, 5);\n  /* 2^10 - 2^0 */ fmul(b, t0, b);\n  /* 2^20 - 2^10 */ fsquare_times(t0, b, 10);\n  /* 2^20 - 2^0 */ fmul(c, t0, b);\n  /* 2^40 - 2^20 */ fsquare_times(t0, c, 20);\n  /* 2^40 - 2^0 */ fmul(t0, t0, c);\n  /* 2^50 - 2^10 */ fsquare_times(t0, t0, 10);\n  /* 2^50 - 2^0 */ fmul(b, t0, b);\n  /* 2^100 - 2^50 */ fsquare_times(t0, b, 50);\n  /* 2^100 - 2^0 */ fmul(c, t0, b);\n  /* 2^200 - 2^100 */ fsquare_times(t0, c, 100);\n  /* 2^200 - 2^0 */ fmul(t0, t0, c);\n  /* 2^250 - 2^50 */ fsquare_times(t0, t0, 50);\n  /* 2^250 - 2^0 */ fmul(t0, t0, b);\n  /* 2^255 - 2^5 */ fsquare_times(t0, t0, 5);\n  /* 2^255 - 21 */ fmul(out, t0, a);\n}\n\nint curve25519_donna(u8 *, const u8 *, const u8 *);\n\nint\ncurve25519_donna(u8 *mypublic, const u8 *secret, const u8 *basepoint) {\n  limb bp[5], x[5], z[5], zmone[5];\n  uint8_t e[32];\n  int i;\n\n  for (i = 0;i < 32;++i) e[i] = secret[i];\n  e[0] &= 248;\n  e[31] &= 127;\n  e[31] |= 64;\n\n  fexpand(bp, basepoint);\n  cmult(x, z, e, bp);\n  crecip(zmone, z);\n  fmul(z, x, zmone);\n  fcontract(mypublic, z);\n  return 0;\n}\n"
  },
  {
    "path": "src/crypto/donna/curve25519-donna.c",
    "content": "/* Copyright 2008, Google Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *     * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n *     * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following disclaimer\n * in the documentation and/or other materials provided with the\n * distribution.\n *     * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * curve25519-donna: Curve25519 elliptic curve, public key function\n *\n * http://code.google.com/p/curve25519-donna/\n *\n * Adam Langley <agl@imperialviolet.org>\n *\n * Derived from public domain C code by Daniel J. Bernstein <djb@cr.yp.to>\n *\n * More information about curve25519 can be found here\n *   http://cr.yp.to/ecdh.html\n *\n * djb's sample implementation of curve25519 is written in a special assembly\n * language called qhasm and uses the floating point registers.\n *\n * This is, almost, a clean room reimplementation from the curve25519 paper. It\n * uses many of the tricks described therein. Only the crecip function is taken\n * from the sample implementation. */\n\n#include <string.h>\n#include <stdint.h>\n\n#ifdef _MSC_VER\n#define inline __inline\n#endif\n\ntypedef uint8_t u8;\ntypedef int32_t s32;\ntypedef int64_t limb;\n\n/* Field element representation:\n *\n * Field elements are written as an array of signed, 64-bit limbs, least\n * significant first. The value of the field element is:\n *   x[0] + 2^26·x[1] + x^51·x[2] + 2^102·x[3] + ...\n *\n * i.e. the limbs are 26, 25, 26, 25, ... bits wide. */\n\n/* Sum two numbers: output += in */\nstatic void fsum(limb *output, const limb *in) {\n  unsigned i;\n  for (i = 0; i < 10; i += 2) {\n    output[0+i] = output[0+i] + in[0+i];\n    output[1+i] = output[1+i] + in[1+i];\n  }\n}\n\n/* Find the difference of two numbers: output = in - output\n * (note the order of the arguments!). */\nstatic void fdifference(limb *output, const limb *in) {\n  unsigned i;\n  for (i = 0; i < 10; ++i) {\n    output[i] = in[i] - output[i];\n  }\n}\n\n/* Multiply a number by a scalar: output = in * scalar */\nstatic void fscalar_product(limb *output, const limb *in, const limb scalar) {\n  unsigned i;\n  for (i = 0; i < 10; ++i) {\n    output[i] = in[i] * scalar;\n  }\n}\n\n/* Multiply two numbers: output = in2 * in\n *\n * output must be distinct to both inputs. The inputs are reduced coefficient\n * form, the output is not.\n *\n * output[x] <= 14 * the largest product of the input limbs. */\nstatic void fproduct(limb *output, const limb *in2, const limb *in) {\n  output[0] =       ((limb) ((s32) in2[0])) * ((s32) in[0]);\n  output[1] =       ((limb) ((s32) in2[0])) * ((s32) in[1]) +\n                    ((limb) ((s32) in2[1])) * ((s32) in[0]);\n  output[2] =  2 *  ((limb) ((s32) in2[1])) * ((s32) in[1]) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[2]) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[0]);\n  output[3] =       ((limb) ((s32) in2[1])) * ((s32) in[2]) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[1]) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[3])) * ((s32) in[0]);\n  output[4] =       ((limb) ((s32) in2[2])) * ((s32) in[2]) +\n               2 * (((limb) ((s32) in2[1])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[3])) * ((s32) in[1])) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[4]) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[0]);\n  output[5] =       ((limb) ((s32) in2[2])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[3])) * ((s32) in[2]) +\n                    ((limb) ((s32) in2[1])) * ((s32) in[4]) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[1]) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[5])) * ((s32) in[0]);\n  output[6] =  2 * (((limb) ((s32) in2[3])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[1])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[5])) * ((s32) in[1])) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[4]) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[2]) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[6]) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[0]);\n  output[7] =       ((limb) ((s32) in2[3])) * ((s32) in[4]) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[5])) * ((s32) in[2]) +\n                    ((limb) ((s32) in2[1])) * ((s32) in[6]) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[1]) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[7])) * ((s32) in[0]);\n  output[8] =       ((limb) ((s32) in2[4])) * ((s32) in[4]) +\n               2 * (((limb) ((s32) in2[3])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[5])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[1])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[7])) * ((s32) in[1])) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[6]) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[2]) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[0]);\n  output[9] =       ((limb) ((s32) in2[4])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[5])) * ((s32) in[4]) +\n                    ((limb) ((s32) in2[3])) * ((s32) in[6]) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[7])) * ((s32) in[2]) +\n                    ((limb) ((s32) in2[1])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[1]) +\n                    ((limb) ((s32) in2[0])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[0]);\n  output[10] = 2 * (((limb) ((s32) in2[5])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[3])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[7])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[1])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[1])) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[6]) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[4]) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[2]);\n  output[11] =      ((limb) ((s32) in2[5])) * ((s32) in[6]) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[7])) * ((s32) in[4]) +\n                    ((limb) ((s32) in2[3])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[3]) +\n                    ((limb) ((s32) in2[2])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[2]);\n  output[12] =      ((limb) ((s32) in2[6])) * ((s32) in[6]) +\n               2 * (((limb) ((s32) in2[5])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[7])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[3])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[3])) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[4]);\n  output[13] =      ((limb) ((s32) in2[6])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[7])) * ((s32) in[6]) +\n                    ((limb) ((s32) in2[5])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[5]) +\n                    ((limb) ((s32) in2[4])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[4]);\n  output[14] = 2 * (((limb) ((s32) in2[7])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[5])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[5])) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[6]);\n  output[15] =      ((limb) ((s32) in2[7])) * ((s32) in[8]) +\n                    ((limb) ((s32) in2[8])) * ((s32) in[7]) +\n                    ((limb) ((s32) in2[6])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[6]);\n  output[16] =      ((limb) ((s32) in2[8])) * ((s32) in[8]) +\n               2 * (((limb) ((s32) in2[7])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[7]));\n  output[17] =      ((limb) ((s32) in2[8])) * ((s32) in[9]) +\n                    ((limb) ((s32) in2[9])) * ((s32) in[8]);\n  output[18] = 2 *  ((limb) ((s32) in2[9])) * ((s32) in[9]);\n}\n\n/* Reduce a long form to a short form by taking the input mod 2^255 - 19.\n *\n * On entry: |output[i]| < 14*2^54\n * On exit: |output[0..8]| < 280*2^54 */\nstatic void freduce_degree(limb *output) {\n  /* Each of these shifts and adds ends up multiplying the value by 19.\n   *\n   * For output[0..8], the absolute entry value is < 14*2^54 and we add, at\n   * most, 19*14*2^54 thus, on exit, |output[0..8]| < 280*2^54. */\n  output[8] += output[18] << 4;\n  output[8] += output[18] << 1;\n  output[8] += output[18];\n  output[7] += output[17] << 4;\n  output[7] += output[17] << 1;\n  output[7] += output[17];\n  output[6] += output[16] << 4;\n  output[6] += output[16] << 1;\n  output[6] += output[16];\n  output[5] += output[15] << 4;\n  output[5] += output[15] << 1;\n  output[5] += output[15];\n  output[4] += output[14] << 4;\n  output[4] += output[14] << 1;\n  output[4] += output[14];\n  output[3] += output[13] << 4;\n  output[3] += output[13] << 1;\n  output[3] += output[13];\n  output[2] += output[12] << 4;\n  output[2] += output[12] << 1;\n  output[2] += output[12];\n  output[1] += output[11] << 4;\n  output[1] += output[11] << 1;\n  output[1] += output[11];\n  output[0] += output[10] << 4;\n  output[0] += output[10] << 1;\n  output[0] += output[10];\n}\n\n#if (-1 & 3) != 3\n#error \"This code only works on a two's complement system\"\n#endif\n\n/* return v / 2^26, using only shifts and adds.\n *\n * On entry: v can take any value. */\nstatic inline limb\ndiv_by_2_26(const limb v)\n{\n  /* High word of v; no shift needed. */\n  const uint32_t highword = (uint32_t) (((uint64_t) v) >> 32);\n  /* Set to all 1s if v was negative; else set to 0s. */\n  const int32_t sign = ((int32_t) highword) >> 31;\n  /* Set to 0x3ffffff if v was negative; else set to 0. */\n  const int32_t roundoff = ((uint32_t) sign) >> 6;\n  /* Should return v / (1<<26) */\n  return (v + roundoff) >> 26;\n}\n\n/* return v / (2^25), using only shifts and adds.\n *\n * On entry: v can take any value. */\nstatic inline limb\ndiv_by_2_25(const limb v)\n{\n  /* High word of v; no shift needed*/\n  const uint32_t highword = (uint32_t) (((uint64_t) v) >> 32);\n  /* Set to all 1s if v was negative; else set to 0s. */\n  const int32_t sign = ((int32_t) highword) >> 31;\n  /* Set to 0x1ffffff if v was negative; else set to 0. */\n  const int32_t roundoff = ((uint32_t) sign) >> 7;\n  /* Should return v / (1<<25) */\n  return (v + roundoff) >> 25;\n}\n\n/* Reduce all coefficients of the short form input so that |x| < 2^26.\n *\n * On entry: |output[i]| < 280*2^54 */\nstatic void freduce_coefficients(limb *output) {\n  unsigned i;\n\n  output[10] = 0;\n\n  for (i = 0; i < 10; i += 2) {\n    limb over = div_by_2_26(output[i]);\n    /* The entry condition (that |output[i]| < 280*2^54) means that over is, at\n     * most, 280*2^28 in the first iteration of this loop. This is added to the\n     * next limb and we can approximate the resulting bound of that limb by\n     * 281*2^54. */\n    output[i] -= over << 26;\n    output[i+1] += over;\n\n    /* For the first iteration, |output[i+1]| < 281*2^54, thus |over| <\n     * 281*2^29. When this is added to the next limb, the resulting bound can\n     * be approximated as 281*2^54.\n     *\n     * For subsequent iterations of the loop, 281*2^54 remains a conservative\n     * bound and no overflow occurs. */\n    over = div_by_2_25(output[i+1]);\n    output[i+1] -= over << 25;\n    output[i+2] += over;\n  }\n  /* Now |output[10]| < 281*2^29 and all other coefficients are reduced. */\n  output[0] += output[10] << 4;\n  output[0] += output[10] << 1;\n  output[0] += output[10];\n\n  output[10] = 0;\n\n  /* Now output[1..9] are reduced, and |output[0]| < 2^26 + 19*281*2^29\n   * So |over| will be no more than 2^16. */\n  {\n    limb over = div_by_2_26(output[0]);\n    output[0] -= over << 26;\n    output[1] += over;\n  }\n\n  /* Now output[0,2..9] are reduced, and |output[1]| < 2^25 + 2^16 < 2^26. The\n   * bound on |output[1]| is sufficient to meet our needs. */\n}\n\n/* A helpful wrapper around fproduct: output = in * in2.\n *\n * On entry: |in[i]| < 2^27 and |in2[i]| < 2^27.\n *\n * output must be distinct to both inputs. The output is reduced degree\n * (indeed, one need only provide storage for 10 limbs) and |output[i]| < 2^26. */\nstatic void\nfmul(limb *output, const limb *in, const limb *in2) {\n  limb t[19];\n  fproduct(t, in, in2);\n  /* |t[i]| < 14*2^54 */\n  freduce_degree(t);\n  freduce_coefficients(t);\n  /* |t[i]| < 2^26 */\n  memcpy(output, t, sizeof(limb) * 10);\n}\n\n/* Square a number: output = in**2\n *\n * output must be distinct from the input. The inputs are reduced coefficient\n * form, the output is not.\n *\n * output[x] <= 14 * the largest product of the input limbs. */\nstatic void fsquare_inner(limb *output, const limb *in) {\n  output[0] =       ((limb) ((s32) in[0])) * ((s32) in[0]);\n  output[1] =  2 *  ((limb) ((s32) in[0])) * ((s32) in[1]);\n  output[2] =  2 * (((limb) ((s32) in[1])) * ((s32) in[1]) +\n                    ((limb) ((s32) in[0])) * ((s32) in[2]));\n  output[3] =  2 * (((limb) ((s32) in[1])) * ((s32) in[2]) +\n                    ((limb) ((s32) in[0])) * ((s32) in[3]));\n  output[4] =       ((limb) ((s32) in[2])) * ((s32) in[2]) +\n               4 *  ((limb) ((s32) in[1])) * ((s32) in[3]) +\n               2 *  ((limb) ((s32) in[0])) * ((s32) in[4]);\n  output[5] =  2 * (((limb) ((s32) in[2])) * ((s32) in[3]) +\n                    ((limb) ((s32) in[1])) * ((s32) in[4]) +\n                    ((limb) ((s32) in[0])) * ((s32) in[5]));\n  output[6] =  2 * (((limb) ((s32) in[3])) * ((s32) in[3]) +\n                    ((limb) ((s32) in[2])) * ((s32) in[4]) +\n                    ((limb) ((s32) in[0])) * ((s32) in[6]) +\n               2 *  ((limb) ((s32) in[1])) * ((s32) in[5]));\n  output[7] =  2 * (((limb) ((s32) in[3])) * ((s32) in[4]) +\n                    ((limb) ((s32) in[2])) * ((s32) in[5]) +\n                    ((limb) ((s32) in[1])) * ((s32) in[6]) +\n                    ((limb) ((s32) in[0])) * ((s32) in[7]));\n  output[8] =       ((limb) ((s32) in[4])) * ((s32) in[4]) +\n               2 * (((limb) ((s32) in[2])) * ((s32) in[6]) +\n                    ((limb) ((s32) in[0])) * ((s32) in[8]) +\n               2 * (((limb) ((s32) in[1])) * ((s32) in[7]) +\n                    ((limb) ((s32) in[3])) * ((s32) in[5])));\n  output[9] =  2 * (((limb) ((s32) in[4])) * ((s32) in[5]) +\n                    ((limb) ((s32) in[3])) * ((s32) in[6]) +\n                    ((limb) ((s32) in[2])) * ((s32) in[7]) +\n                    ((limb) ((s32) in[1])) * ((s32) in[8]) +\n                    ((limb) ((s32) in[0])) * ((s32) in[9]));\n  output[10] = 2 * (((limb) ((s32) in[5])) * ((s32) in[5]) +\n                    ((limb) ((s32) in[4])) * ((s32) in[6]) +\n                    ((limb) ((s32) in[2])) * ((s32) in[8]) +\n               2 * (((limb) ((s32) in[3])) * ((s32) in[7]) +\n                    ((limb) ((s32) in[1])) * ((s32) in[9])));\n  output[11] = 2 * (((limb) ((s32) in[5])) * ((s32) in[6]) +\n                    ((limb) ((s32) in[4])) * ((s32) in[7]) +\n                    ((limb) ((s32) in[3])) * ((s32) in[8]) +\n                    ((limb) ((s32) in[2])) * ((s32) in[9]));\n  output[12] =      ((limb) ((s32) in[6])) * ((s32) in[6]) +\n               2 * (((limb) ((s32) in[4])) * ((s32) in[8]) +\n               2 * (((limb) ((s32) in[5])) * ((s32) in[7]) +\n                    ((limb) ((s32) in[3])) * ((s32) in[9])));\n  output[13] = 2 * (((limb) ((s32) in[6])) * ((s32) in[7]) +\n                    ((limb) ((s32) in[5])) * ((s32) in[8]) +\n                    ((limb) ((s32) in[4])) * ((s32) in[9]));\n  output[14] = 2 * (((limb) ((s32) in[7])) * ((s32) in[7]) +\n                    ((limb) ((s32) in[6])) * ((s32) in[8]) +\n               2 *  ((limb) ((s32) in[5])) * ((s32) in[9]));\n  output[15] = 2 * (((limb) ((s32) in[7])) * ((s32) in[8]) +\n                    ((limb) ((s32) in[6])) * ((s32) in[9]));\n  output[16] =      ((limb) ((s32) in[8])) * ((s32) in[8]) +\n               4 *  ((limb) ((s32) in[7])) * ((s32) in[9]);\n  output[17] = 2 *  ((limb) ((s32) in[8])) * ((s32) in[9]);\n  output[18] = 2 *  ((limb) ((s32) in[9])) * ((s32) in[9]);\n}\n\n/* fsquare sets output = in^2.\n *\n * On entry: The |in| argument is in reduced coefficients form and |in[i]| <\n * 2^27.\n *\n * On exit: The |output| argument is in reduced coefficients form (indeed, one\n * need only provide storage for 10 limbs) and |out[i]| < 2^26. */\nstatic void\nfsquare(limb *output, const limb *in) {\n  limb t[19];\n  fsquare_inner(t, in);\n  /* |t[i]| < 14*2^54 because the largest product of two limbs will be <\n   * 2^(27+27) and fsquare_inner adds together, at most, 14 of those\n   * products. */\n  freduce_degree(t);\n  freduce_coefficients(t);\n  /* |t[i]| < 2^26 */\n  memcpy(output, t, sizeof(limb) * 10);\n}\n\n/* Take a little-endian, 32-byte number and expand it into polynomial form */\nstatic void\nfexpand(limb *output, const u8 *input) {\n#define F(n,start,shift,mask) \\\n  output[n] = ((((limb) input[start + 0]) | \\\n                ((limb) input[start + 1]) << 8 | \\\n                ((limb) input[start + 2]) << 16 | \\\n                ((limb) input[start + 3]) << 24) >> shift) & mask;\n  F(0, 0, 0, 0x3ffffff);\n  F(1, 3, 2, 0x1ffffff);\n  F(2, 6, 3, 0x3ffffff);\n  F(3, 9, 5, 0x1ffffff);\n  F(4, 12, 6, 0x3ffffff);\n  F(5, 16, 0, 0x1ffffff);\n  F(6, 19, 1, 0x3ffffff);\n  F(7, 22, 3, 0x1ffffff);\n  F(8, 25, 4, 0x3ffffff);\n  F(9, 28, 6, 0x1ffffff);\n#undef F\n}\n\n#if (-32 >> 1) != -16\n#error \"This code only works when >> does sign-extension on negative numbers\"\n#endif\n\n/* s32_eq returns 0xffffffff iff a == b and zero otherwise. */\nstatic s32 s32_eq(s32 a, s32 b) {\n  a = ~(a ^ b);\n  a &= a << 16;\n  a &= a << 8;\n  a &= a << 4;\n  a &= a << 2;\n  a &= a << 1;\n  return a >> 31;\n}\n\n/* s32_gte returns 0xffffffff if a >= b and zero otherwise, where a and b are\n * both non-negative. */\nstatic s32 s32_gte(s32 a, s32 b) {\n  a -= b;\n  /* a >= 0 iff a >= b. */\n  return ~(a >> 31);\n}\n\n/* Take a fully reduced polynomial form number and contract it into a\n * little-endian, 32-byte array.\n *\n * On entry: |input_limbs[i]| < 2^26 */\nstatic void\nfcontract(u8 *output, limb *input_limbs) {\n  int i;\n  int j;\n  s32 input[10];\n  s32 mask;\n\n  /* |input_limbs[i]| < 2^26, so it's valid to convert to an s32. */\n  for (i = 0; i < 10; i++) {\n    input[i] = input_limbs[i];\n  }\n\n  for (j = 0; j < 2; ++j) {\n    for (i = 0; i < 9; ++i) {\n      if ((i & 1) == 1) {\n        /* This calculation is a time-invariant way to make input[i]\n         * non-negative by borrowing from the next-larger limb. */\n        const s32 mask = input[i] >> 31;\n        const s32 carry = -((input[i] & mask) >> 25);\n        input[i] = input[i] + (carry << 25);\n        input[i+1] = input[i+1] - carry;\n      } else {\n        const s32 mask = input[i] >> 31;\n        const s32 carry = -((input[i] & mask) >> 26);\n        input[i] = input[i] + (carry << 26);\n        input[i+1] = input[i+1] - carry;\n      }\n    }\n\n    /* There's no greater limb for input[9] to borrow from, but we can multiply\n     * by 19 and borrow from input[0], which is valid mod 2^255-19. */\n    {\n      const s32 mask = input[9] >> 31;\n      const s32 carry = -((input[9] & mask) >> 25);\n      input[9] = input[9] + (carry << 25);\n      input[0] = input[0] - (carry * 19);\n    }\n\n    /* After the first iteration, input[1..9] are non-negative and fit within\n     * 25 or 26 bits, depending on position. However, input[0] may be\n     * negative. */\n  }\n\n  /* The first borrow-propagation pass above ended with every limb\n     except (possibly) input[0] non-negative.\n\n     If input[0] was negative after the first pass, then it was because of a\n     carry from input[9]. On entry, input[9] < 2^26 so the carry was, at most,\n     one, since (2**26-1) >> 25 = 1. Thus input[0] >= -19.\n\n     In the second pass, each limb is decreased by at most one. Thus the second\n     borrow-propagation pass could only have wrapped around to decrease\n     input[0] again if the first pass left input[0] negative *and* input[1]\n     through input[9] were all zero.  In that case, input[1] is now 2^25 - 1,\n     and this last borrow-propagation step will leave input[1] non-negative. */\n  {\n    const s32 mask = input[0] >> 31;\n    const s32 carry = -((input[0] & mask) >> 26);\n    input[0] = input[0] + (carry << 26);\n    input[1] = input[1] - carry;\n  }\n\n  /* All input[i] are now non-negative. However, there might be values between\n   * 2^25 and 2^26 in a limb which is, nominally, 25 bits wide. */\n  for (j = 0; j < 2; j++) {\n    for (i = 0; i < 9; i++) {\n      if ((i & 1) == 1) {\n        const s32 carry = input[i] >> 25;\n        input[i] &= 0x1ffffff;\n        input[i+1] += carry;\n      } else {\n        const s32 carry = input[i] >> 26;\n        input[i] &= 0x3ffffff;\n        input[i+1] += carry;\n      }\n    }\n\n    {\n      const s32 carry = input[9] >> 25;\n      input[9] &= 0x1ffffff;\n      input[0] += 19*carry;\n    }\n  }\n\n  /* If the first carry-chain pass, just above, ended up with a carry from\n   * input[9], and that caused input[0] to be out-of-bounds, then input[0] was\n   * < 2^26 + 2*19, because the carry was, at most, two.\n   *\n   * If the second pass carried from input[9] again then input[0] is < 2*19 and\n   * the input[9] -> input[0] carry didn't push input[0] out of bounds. */\n\n  /* It still remains the case that input might be between 2^255-19 and 2^255.\n   * In this case, input[1..9] must take their maximum value and input[0] must\n   * be >= (2^255-19) & 0x3ffffff, which is 0x3ffffed. */\n  mask = s32_gte(input[0], 0x3ffffed);\n  for (i = 1; i < 10; i++) {\n    if ((i & 1) == 1) {\n      mask &= s32_eq(input[i], 0x1ffffff);\n    } else {\n      mask &= s32_eq(input[i], 0x3ffffff);\n    }\n  }\n\n  /* mask is either 0xffffffff (if input >= 2^255-19) and zero otherwise. Thus\n   * this conditionally subtracts 2^255-19. */\n  input[0] -= mask & 0x3ffffed;\n\n  for (i = 1; i < 10; i++) {\n    if ((i & 1) == 1) {\n      input[i] -= mask & 0x1ffffff;\n    } else {\n      input[i] -= mask & 0x3ffffff;\n    }\n  }\n\n  input[1] <<= 2;\n  input[2] <<= 3;\n  input[3] <<= 5;\n  input[4] <<= 6;\n  input[6] <<= 1;\n  input[7] <<= 3;\n  input[8] <<= 4;\n  input[9] <<= 6;\n#define F(i, s) \\\n  output[s+0] |=  input[i] & 0xff; \\\n  output[s+1]  = (input[i] >> 8) & 0xff; \\\n  output[s+2]  = (input[i] >> 16) & 0xff; \\\n  output[s+3]  = (input[i] >> 24) & 0xff;\n  output[0] = 0;\n  output[16] = 0;\n  F(0,0);\n  F(1,3);\n  F(2,6);\n  F(3,9);\n  F(4,12);\n  F(5,16);\n  F(6,19);\n  F(7,22);\n  F(8,25);\n  F(9,28);\n#undef F\n}\n\n/* Input: Q, Q', Q-Q'\n * Output: 2Q, Q+Q'\n *\n *   x2 z3: long form\n *   x3 z3: long form\n *   x z: short form, destroyed\n *   xprime zprime: short form, destroyed\n *   qmqp: short form, preserved\n *\n * On entry and exit, the absolute value of the limbs of all inputs and outputs\n * are < 2^26. */\nstatic void fmonty(limb *x2, limb *z2,  /* output 2Q */\n                   limb *x3, limb *z3,  /* output Q + Q' */\n                   limb *x, limb *z,    /* input Q */\n                   limb *xprime, limb *zprime,  /* input Q' */\n                   const limb *qmqp /* input Q - Q' */) {\n  limb origx[10], origxprime[10], zzz[19], xx[19], zz[19], xxprime[19],\n        zzprime[19], zzzprime[19], xxxprime[19];\n\n  memcpy(origx, x, 10 * sizeof(limb));\n  fsum(x, z);\n  /* |x[i]| < 2^27 */\n  fdifference(z, origx);  /* does x - z */\n  /* |z[i]| < 2^27 */\n\n  memcpy(origxprime, xprime, sizeof(limb) * 10);\n  fsum(xprime, zprime);\n  /* |xprime[i]| < 2^27 */\n  fdifference(zprime, origxprime);\n  /* |zprime[i]| < 2^27 */\n  fproduct(xxprime, xprime, z);\n  /* |xxprime[i]| < 14*2^54: the largest product of two limbs will be <\n   * 2^(27+27) and fproduct adds together, at most, 14 of those products.\n   * (Approximating that to 2^58 doesn't work out.) */\n  fproduct(zzprime, x, zprime);\n  /* |zzprime[i]| < 14*2^54 */\n  freduce_degree(xxprime);\n  freduce_coefficients(xxprime);\n  /* |xxprime[i]| < 2^26 */\n  freduce_degree(zzprime);\n  freduce_coefficients(zzprime);\n  /* |zzprime[i]| < 2^26 */\n  memcpy(origxprime, xxprime, sizeof(limb) * 10);\n  fsum(xxprime, zzprime);\n  /* |xxprime[i]| < 2^27 */\n  fdifference(zzprime, origxprime);\n  /* |zzprime[i]| < 2^27 */\n  fsquare(xxxprime, xxprime);\n  /* |xxxprime[i]| < 2^26 */\n  fsquare(zzzprime, zzprime);\n  /* |zzzprime[i]| < 2^26 */\n  fproduct(zzprime, zzzprime, qmqp);\n  /* |zzprime[i]| < 14*2^52 */\n  freduce_degree(zzprime);\n  freduce_coefficients(zzprime);\n  /* |zzprime[i]| < 2^26 */\n  memcpy(x3, xxxprime, sizeof(limb) * 10);\n  memcpy(z3, zzprime, sizeof(limb) * 10);\n\n  fsquare(xx, x);\n  /* |xx[i]| < 2^26 */\n  fsquare(zz, z);\n  /* |zz[i]| < 2^26 */\n  fproduct(x2, xx, zz);\n  /* |x2[i]| < 14*2^52 */\n  freduce_degree(x2);\n  freduce_coefficients(x2);\n  /* |x2[i]| < 2^26 */\n  fdifference(zz, xx);  // does zz = xx - zz\n  /* |zz[i]| < 2^27 */\n  memset(zzz + 10, 0, sizeof(limb) * 9);\n  fscalar_product(zzz, zz, 121665);\n  /* |zzz[i]| < 2^(27+17) */\n  /* No need to call freduce_degree here:\n     fscalar_product doesn't increase the degree of its input. */\n  freduce_coefficients(zzz);\n  /* |zzz[i]| < 2^26 */\n  fsum(zzz, xx);\n  /* |zzz[i]| < 2^27 */\n  fproduct(z2, zz, zzz);\n  /* |z2[i]| < 14*2^(26+27) */\n  freduce_degree(z2);\n  freduce_coefficients(z2);\n  /* |z2|i| < 2^26 */\n}\n\n/* Conditionally swap two reduced-form limb arrays if 'iswap' is 1, but leave\n * them unchanged if 'iswap' is 0.  Runs in data-invariant time to avoid\n * side-channel attacks.\n *\n * NOTE that this function requires that 'iswap' be 1 or 0; other values give\n * wrong results.  Also, the two limb arrays must be in reduced-coefficient,\n * reduced-degree form: the values in a[10..19] or b[10..19] aren't swapped,\n * and all all values in a[0..9],b[0..9] must have magnitude less than\n * INT32_MAX. */\nstatic void\nswap_conditional(limb a[19], limb b[19], limb iswap) {\n  unsigned i;\n  const s32 swap = (s32) -iswap;\n\n  for (i = 0; i < 10; ++i) {\n    const s32 x = swap & ( ((s32)a[i]) ^ ((s32)b[i]) );\n    a[i] = ((s32)a[i]) ^ x;\n    b[i] = ((s32)b[i]) ^ x;\n  }\n}\n\n/* Calculates nQ where Q is the x-coordinate of a point on the curve\n *\n *   resultx/resultz: the x coordinate of the resulting curve point (short form)\n *   n: a little endian, 32-byte number\n *   q: a point of the curve (short form) */\nstatic void\ncmult(limb *resultx, limb *resultz, const u8 *n, const limb *q) {\n  limb a[19] = {0}, b[19] = {1}, c[19] = {1}, d[19] = {0};\n  limb *nqpqx = a, *nqpqz = b, *nqx = c, *nqz = d, *t;\n  limb e[19] = {0}, f[19] = {1}, g[19] = {0}, h[19] = {1};\n  limb *nqpqx2 = e, *nqpqz2 = f, *nqx2 = g, *nqz2 = h;\n\n  unsigned i, j;\n\n  memcpy(nqpqx, q, sizeof(limb) * 10);\n\n  for (i = 0; i < 32; ++i) {\n    u8 byte = n[31 - i];\n    for (j = 0; j < 8; ++j) {\n      const limb bit = byte >> 7;\n\n      swap_conditional(nqx, nqpqx, bit);\n      swap_conditional(nqz, nqpqz, bit);\n      fmonty(nqx2, nqz2,\n             nqpqx2, nqpqz2,\n             nqx, nqz,\n             nqpqx, nqpqz,\n             q);\n      swap_conditional(nqx2, nqpqx2, bit);\n      swap_conditional(nqz2, nqpqz2, bit);\n\n      t = nqx;\n      nqx = nqx2;\n      nqx2 = t;\n      t = nqz;\n      nqz = nqz2;\n      nqz2 = t;\n      t = nqpqx;\n      nqpqx = nqpqx2;\n      nqpqx2 = t;\n      t = nqpqz;\n      nqpqz = nqpqz2;\n      nqpqz2 = t;\n\n      byte <<= 1;\n    }\n  }\n\n  memcpy(resultx, nqx, sizeof(limb) * 10);\n  memcpy(resultz, nqz, sizeof(limb) * 10);\n}\n\n// -----------------------------------------------------------------------------\n// Shamelessly copied from djb's code\n// -----------------------------------------------------------------------------\nstatic void\ncrecip(limb *out, const limb *z) {\n  limb z2[10];\n  limb z9[10];\n  limb z11[10];\n  limb z2_5_0[10];\n  limb z2_10_0[10];\n  limb z2_20_0[10];\n  limb z2_50_0[10];\n  limb z2_100_0[10];\n  limb t0[10];\n  limb t1[10];\n  int i;\n\n  /* 2 */ fsquare(z2,z);\n  /* 4 */ fsquare(t1,z2);\n  /* 8 */ fsquare(t0,t1);\n  /* 9 */ fmul(z9,t0,z);\n  /* 11 */ fmul(z11,z9,z2);\n  /* 22 */ fsquare(t0,z11);\n  /* 2^5 - 2^0 = 31 */ fmul(z2_5_0,t0,z9);\n\n  /* 2^6 - 2^1 */ fsquare(t0,z2_5_0);\n  /* 2^7 - 2^2 */ fsquare(t1,t0);\n  /* 2^8 - 2^3 */ fsquare(t0,t1);\n  /* 2^9 - 2^4 */ fsquare(t1,t0);\n  /* 2^10 - 2^5 */ fsquare(t0,t1);\n  /* 2^10 - 2^0 */ fmul(z2_10_0,t0,z2_5_0);\n\n  /* 2^11 - 2^1 */ fsquare(t0,z2_10_0);\n  /* 2^12 - 2^2 */ fsquare(t1,t0);\n  /* 2^20 - 2^10 */ for (i = 2;i < 10;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }\n  /* 2^20 - 2^0 */ fmul(z2_20_0,t1,z2_10_0);\n\n  /* 2^21 - 2^1 */ fsquare(t0,z2_20_0);\n  /* 2^22 - 2^2 */ fsquare(t1,t0);\n  /* 2^40 - 2^20 */ for (i = 2;i < 20;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }\n  /* 2^40 - 2^0 */ fmul(t0,t1,z2_20_0);\n\n  /* 2^41 - 2^1 */ fsquare(t1,t0);\n  /* 2^42 - 2^2 */ fsquare(t0,t1);\n  /* 2^50 - 2^10 */ for (i = 2;i < 10;i += 2) { fsquare(t1,t0); fsquare(t0,t1); }\n  /* 2^50 - 2^0 */ fmul(z2_50_0,t0,z2_10_0);\n\n  /* 2^51 - 2^1 */ fsquare(t0,z2_50_0);\n  /* 2^52 - 2^2 */ fsquare(t1,t0);\n  /* 2^100 - 2^50 */ for (i = 2;i < 50;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }\n  /* 2^100 - 2^0 */ fmul(z2_100_0,t1,z2_50_0);\n\n  /* 2^101 - 2^1 */ fsquare(t1,z2_100_0);\n  /* 2^102 - 2^2 */ fsquare(t0,t1);\n  /* 2^200 - 2^100 */ for (i = 2;i < 100;i += 2) { fsquare(t1,t0); fsquare(t0,t1); }\n  /* 2^200 - 2^0 */ fmul(t1,t0,z2_100_0);\n\n  /* 2^201 - 2^1 */ fsquare(t0,t1);\n  /* 2^202 - 2^2 */ fsquare(t1,t0);\n  /* 2^250 - 2^50 */ for (i = 2;i < 50;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }\n  /* 2^250 - 2^0 */ fmul(t0,t1,z2_50_0);\n\n  /* 2^251 - 2^1 */ fsquare(t1,t0);\n  /* 2^252 - 2^2 */ fsquare(t0,t1);\n  /* 2^253 - 2^3 */ fsquare(t1,t0);\n  /* 2^254 - 2^4 */ fsquare(t0,t1);\n  /* 2^255 - 2^5 */ fsquare(t1,t0);\n  /* 2^255 - 21 */ fmul(out,t1,z11);\n}\n\nint\ncurve25519_donna(u8 *mypublic, const u8 *secret, const u8 *basepoint) {\n  limb bp[10], x[10], z[11], zmone[10];\n  uint8_t e[32];\n  int i;\n\n  for (i = 0; i < 32; ++i) e[i] = secret[i];\n  e[0] &= 248;\n  e[31] &= 127;\n  e[31] |= 64;\n\n  fexpand(bp, basepoint);\n  cmult(x, z, e, bp);\n  crecip(zmone, z);\n  fmul(z, x, zmone);\n  fcontract(mypublic, z);\n  return 0;\n}\n"
  },
  {
    "path": "src/crypto/donna/poly1305-donna-16.h",
    "content": "/*\n\tpoly1305 implementation using 16 bit * 16 bit = 32 bit multiplication and 32 bit addition\n*/\n\n#if defined(_MSC_VER)\n\t#define POLY1305_NOINLINE __declspec(noinline)\n#elif defined(__GNUC__)\n\t#define POLY1305_NOINLINE __attribute__((noinline))\n#else\n\t#define POLY1305_NOINLINE\n#endif\n\n#define poly1305_block_size 16\n\n/* 17 + sizeof(size_t) + 18*sizeof(unsigned short) */\ntypedef struct poly1305_state_internal_t {\n\tunsigned char buffer[poly1305_block_size];\n\tsize_t leftover;\n\tunsigned short r[10];\n\tunsigned short h[10];\n\tunsigned short pad[8];\n\tunsigned char final;\n} poly1305_state_internal_t;\n\n/* interpret two 8 bit unsigned integers as a 16 bit unsigned integer in little endian */\nstatic unsigned short\nU8TO16(const unsigned char *p) {\n\treturn\n\t\t(((unsigned short)(p[0] & 0xff)      ) |\n\t     ((unsigned short)(p[1] & 0xff) <<  8));\n}\n\n/* store a 16 bit unsigned integer as two 8 bit unsigned integers in little endian */\nstatic void\nU16TO8(unsigned char *p, unsigned short v) {\n\tp[0] = (v      ) & 0xff;\n\tp[1] = (v >>  8) & 0xff;\n}\n\nvoid\npoly1305_init(poly1305_context *ctx, const unsigned char key[32]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tunsigned short t0,t1,t2,t3,t4,t5,t6,t7;\n\tsize_t i;\n\n\t/* r &= 0xffffffc0ffffffc0ffffffc0fffffff */\n\tt0 = U8TO16(&key[ 0]); st->r[0] = ( t0                    ) & 0x1fff;\n\tt1 = U8TO16(&key[ 2]); st->r[1] = ((t0 >> 13) | (t1 <<  3)) & 0x1fff;\n\tt2 = U8TO16(&key[ 4]); st->r[2] = ((t1 >> 10) | (t2 <<  6)) & 0x1f03;\n\tt3 = U8TO16(&key[ 6]); st->r[3] = ((t2 >>  7) | (t3 <<  9)) & 0x1fff;\n\tt4 = U8TO16(&key[ 8]); st->r[4] = ((t3 >>  4) | (t4 << 12)) & 0x00ff;\n\t                       st->r[5] = ((t4 >>  1)             ) & 0x1ffe;\n\tt5 = U8TO16(&key[10]); st->r[6] = ((t4 >> 14) | (t5 <<  2)) & 0x1fff;\n\tt6 = U8TO16(&key[12]); st->r[7] = ((t5 >> 11) | (t6 <<  5)) & 0x1f81;\n\tt7 = U8TO16(&key[14]); st->r[8] = ((t6 >>  8) | (t7 <<  8)) & 0x1fff;\n\t                       st->r[9] = ((t7 >>  5)             ) & 0x007f;\n\n\t/* h = 0 */\n\tfor (i = 0; i < 10; i++)\n\t\tst->h[i] = 0;\n\n\t/* save pad for later */\n\tfor (i = 0; i < 8; i++)\n\t\tst->pad[i] = U8TO16(&key[16 + (2 * i)]);\n\n\tst->leftover = 0;\n\tst->final = 0;\n}\n\nstatic void\npoly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, size_t bytes) {\n\tconst unsigned short hibit = (st->final) ? 0 : (1 << 11); /* 1 << 128 */\n\tunsigned short t0,t1,t2,t3,t4,t5,t6,t7;\n\tunsigned long d[10];\n\tunsigned long c;\n\n\twhile (bytes >= poly1305_block_size) {\n\t\tsize_t i, j;\n\n\t\t/* h += m[i] */\n\t\tt0 = U8TO16(&m[ 0]); st->h[0] += ( t0                    ) & 0x1fff;\n\t\tt1 = U8TO16(&m[ 2]); st->h[1] += ((t0 >> 13) | (t1 <<  3)) & 0x1fff;\n\t\tt2 = U8TO16(&m[ 4]); st->h[2] += ((t1 >> 10) | (t2 <<  6)) & 0x1fff;\n\t\tt3 = U8TO16(&m[ 6]); st->h[3] += ((t2 >>  7) | (t3 <<  9)) & 0x1fff;\n\t\tt4 = U8TO16(&m[ 8]); st->h[4] += ((t3 >>  4) | (t4 << 12)) & 0x1fff;\n\t\t                     st->h[5] += ((t4 >>  1)             ) & 0x1fff;\n\t\tt5 = U8TO16(&m[10]); st->h[6] += ((t4 >> 14) | (t5 <<  2)) & 0x1fff;\n\t\tt6 = U8TO16(&m[12]); st->h[7] += ((t5 >> 11) | (t6 <<  5)) & 0x1fff;\n\t\tt7 = U8TO16(&m[14]); st->h[8] += ((t6 >>  8) | (t7 <<  8)) & 0x1fff;\n\t\t                     st->h[9] += ((t7 >>  5)             ) | hibit;\n\n\t\t/* h *= r, (partial) h %= p */\n\t\tfor (i = 0, c = 0; i < 10; i++) {\n\t\t\td[i] = c;\n\t\t\tfor (j = 0; j < 10; j++) {\n\t\t\t\td[i] += (unsigned long)st->h[j] * ((j <= i) ? st->r[i - j] : (5 * st->r[i + 10 - j]));\n\t\t\t\t/* Sum(h[i] * r[i] * 5) will overflow slightly above 6 products with an unclamped r, so carry at 5 */\n\t\t\t\tif (j == 4) {\n\t\t\t\t\tc = (d[i] >> 13);\n\t\t\t\t\td[i] &= 0x1fff;\n\t\t\t\t}\n\t\t\t}\n\t\t\tc += (d[i] >> 13);\n\t\t\td[i] &= 0x1fff;\n\t\t}\n\t\tc = ((c << 2) + c); /* c *= 5 */\n\t\tc += d[0];\n\t\td[0] = ((unsigned short)c & 0x1fff);\n\t\tc = (c >> 13);\n\t\td[1] += c;\n\n\t\tfor (i = 0; i < 10; i++)\n\t\t\tst->h[i] = (unsigned short)d[i];\n\n\t\tm += poly1305_block_size;\n\t\tbytes -= poly1305_block_size;\n\t}\n}\n\nPOLY1305_NOINLINE void\npoly1305_finish(poly1305_context *ctx, unsigned char mac[16]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tunsigned short c;\n\tunsigned short g[10];\n\tunsigned short mask;\n\tunsigned long f;\n\tsize_t i;\n\n\t/* process the remaining block */\n\tif (st->leftover) {\n\t\tsize_t i = st->leftover;\n\t\tst->buffer[i++] = 1;\n\t\tfor (; i < poly1305_block_size; i++)\n\t\t\tst->buffer[i] = 0;\n\t\tst->final = 1;\n\t\tpoly1305_blocks(st, st->buffer, poly1305_block_size);\n\t}\n\n\t/* fully carry h */\n\tc = st->h[1] >> 13;\n\tst->h[1] &= 0x1fff;\n\tfor (i = 2; i < 10; i++) {\n\t\tst->h[i] += c;\n\t\tc = st->h[i] >> 13;\n\t\tst->h[i] &= 0x1fff;\n\t}\n\tst->h[0] += (c * 5);\n\tc = st->h[0] >> 13;\n\tst->h[0] &= 0x1fff;\n\tst->h[1] += c;\n\tc = st->h[1] >> 13;\n\tst->h[1] &= 0x1fff;\n\tst->h[2] += c;\n\n\t/* compute h + -p */\n\tg[0] = st->h[0] + 5;\n\tc = g[0] >> 13;\n\tg[0] &= 0x1fff;\n\tfor (i = 1; i < 10; i++) {\n\t\tg[i] = st->h[i] + c;\n\t\tc = g[i] >> 13;\n\t\tg[i] &= 0x1fff;\n\t}\n\n\t/* select h if h < p, or h + -p if h >= p */\n\tmask = (c ^ 1) - 1;\n\tfor (i = 0; i < 10; i++)\n\t\tg[i] &= mask;\n\tmask = ~mask;\n\tfor (i = 0; i < 10; i++)\n\t\tst->h[i] = (st->h[i] & mask) | g[i];\n\n\t/* h = h % (2^128) */\n\tst->h[0] = ((st->h[0]      ) | (st->h[1] << 13)                   ) & 0xffff;\n\tst->h[1] = ((st->h[1] >>  3) | (st->h[2] << 10)                   ) & 0xffff;\n\tst->h[2] = ((st->h[2] >>  6) | (st->h[3] <<  7)                   ) & 0xffff;\n\tst->h[3] = ((st->h[3] >>  9) | (st->h[4] <<  4)                   ) & 0xffff;\n\tst->h[4] = ((st->h[4] >> 12) | (st->h[5] <<  1) | (st->h[6] << 14)) & 0xffff;\n\tst->h[5] = ((st->h[6] >>  2) | (st->h[7] << 11)                   ) & 0xffff;\n\tst->h[6] = ((st->h[7] >>  5) | (st->h[8] <<  8)                   ) & 0xffff;\n\tst->h[7] = ((st->h[8] >>  8) | (st->h[9] <<  5)                   ) & 0xffff;\n\n\t/* mac = (h + pad) % (2^128) */\n\tf = (unsigned long)st->h[0] + st->pad[0];\n\tst->h[0] = (unsigned short)f;\n\tfor (i = 1; i < 8; i++) {\n\t\tf = (unsigned long)st->h[i] + st->pad[i] + (f >> 16);\n\t\tst->h[i] = (unsigned short)f;\n\t}\n\n\tfor (i = 0; i < 8; i++)\n\t\tU16TO8(mac + (i * 2), st->h[i]);\n\n\t/* zero out the state */\n\tfor (i = 0; i < 10; i++)\n\t\tst->h[i] = 0;\n\tfor (i = 0; i < 10; i++)\n\t\tst->r[i] = 0;\n\tfor (i = 0; i < 8; i++)\n\t\tst->pad[i] = 0;\n}\n"
  },
  {
    "path": "src/crypto/donna/poly1305-donna-32.h",
    "content": "/*\n\tpoly1305 implementation using 32 bit * 32 bit = 64 bit multiplication and 64 bit addition\n*/\n\n#if defined(_MSC_VER)\n\t#define POLY1305_NOINLINE __declspec(noinline)\n#elif defined(__GNUC__)\n\t#define POLY1305_NOINLINE __attribute__((noinline))\n#else\n\t#define POLY1305_NOINLINE\n#endif\n\n#define poly1305_block_size 16\n\n/* 17 + sizeof(size_t) + 14*sizeof(unsigned long) */\ntypedef struct poly1305_state_internal_t {\n\tunsigned long r[5];\n\tunsigned long h[5];\n\tunsigned long pad[4];\n\tsize_t leftover;\n\tunsigned char buffer[poly1305_block_size];\n\tunsigned char final;\n} poly1305_state_internal_t;\n\n/* interpret four 8 bit unsigned integers as a 32 bit unsigned integer in little endian */\nstatic unsigned long\nU8TO32(const unsigned char *p) {\n\treturn\n\t\t(((unsigned long)(p[0] & 0xff)      ) |\n\t     ((unsigned long)(p[1] & 0xff) <<  8) |\n         ((unsigned long)(p[2] & 0xff) << 16) |\n         ((unsigned long)(p[3] & 0xff) << 24));\n}\n\n/* store a 32 bit unsigned integer as four 8 bit unsigned integers in little endian */\nstatic void\nU32TO8(unsigned char *p, unsigned long v) {\n\tp[0] = (v      ) & 0xff;\n\tp[1] = (v >>  8) & 0xff;\n\tp[2] = (v >> 16) & 0xff;\n\tp[3] = (v >> 24) & 0xff;\n}\n\nvoid\npoly1305_init(poly1305_context *ctx, const unsigned char key[32]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\n\t/* r &= 0xffffffc0ffffffc0ffffffc0fffffff */\n\tst->r[0] = (U8TO32(&key[ 0])     ) & 0x3ffffff;\n\tst->r[1] = (U8TO32(&key[ 3]) >> 2) & 0x3ffff03;\n\tst->r[2] = (U8TO32(&key[ 6]) >> 4) & 0x3ffc0ff;\n\tst->r[3] = (U8TO32(&key[ 9]) >> 6) & 0x3f03fff;\n\tst->r[4] = (U8TO32(&key[12]) >> 8) & 0x00fffff;\n\n\t/* h = 0 */\n\tst->h[0] = 0;\n\tst->h[1] = 0;\n\tst->h[2] = 0;\n\tst->h[3] = 0;\n\tst->h[4] = 0;\n\n\t/* save pad for later */\n\tst->pad[0] = U8TO32(&key[16]);\n\tst->pad[1] = U8TO32(&key[20]);\n\tst->pad[2] = U8TO32(&key[24]);\n\tst->pad[3] = U8TO32(&key[28]);\n\n\tst->leftover = 0;\n\tst->final = 0;\n}\n\nstatic void\npoly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, size_t bytes) {\n\tconst unsigned long hibit = (st->final) ? 0 : (1UL << 24); /* 1 << 128 */\n\tunsigned long r0,r1,r2,r3,r4;\n\tunsigned long s1,s2,s3,s4;\n\tunsigned long h0,h1,h2,h3,h4;\n\tunsigned long long d0,d1,d2,d3,d4;\n\tunsigned long c;\n\n\tr0 = st->r[0];\n\tr1 = st->r[1];\n\tr2 = st->r[2];\n\tr3 = st->r[3];\n\tr4 = st->r[4];\n\n\ts1 = r1 * 5;\n\ts2 = r2 * 5;\n\ts3 = r3 * 5;\n\ts4 = r4 * 5;\n\n\th0 = st->h[0];\n\th1 = st->h[1];\n\th2 = st->h[2];\n\th3 = st->h[3];\n\th4 = st->h[4];\n\n\twhile (bytes >= poly1305_block_size) {\n\t\t/* h += m[i] */\n\t\th0 += (U8TO32(m+ 0)     ) & 0x3ffffff;\n\t\th1 += (U8TO32(m+ 3) >> 2) & 0x3ffffff;\n\t\th2 += (U8TO32(m+ 6) >> 4) & 0x3ffffff;\n\t\th3 += (U8TO32(m+ 9) >> 6) & 0x3ffffff;\n\t\th4 += (U8TO32(m+12) >> 8) | hibit;\n\n\t\t/* h *= r */\n\t\td0 = ((unsigned long long)h0 * r0) + ((unsigned long long)h1 * s4) + ((unsigned long long)h2 * s3) + ((unsigned long long)h3 * s2) + ((unsigned long long)h4 * s1);\n\t\td1 = ((unsigned long long)h0 * r1) + ((unsigned long long)h1 * r0) + ((unsigned long long)h2 * s4) + ((unsigned long long)h3 * s3) + ((unsigned long long)h4 * s2);\n\t\td2 = ((unsigned long long)h0 * r2) + ((unsigned long long)h1 * r1) + ((unsigned long long)h2 * r0) + ((unsigned long long)h3 * s4) + ((unsigned long long)h4 * s3);\n\t\td3 = ((unsigned long long)h0 * r3) + ((unsigned long long)h1 * r2) + ((unsigned long long)h2 * r1) + ((unsigned long long)h3 * r0) + ((unsigned long long)h4 * s4);\n\t\td4 = ((unsigned long long)h0 * r4) + ((unsigned long long)h1 * r3) + ((unsigned long long)h2 * r2) + ((unsigned long long)h3 * r1) + ((unsigned long long)h4 * r0);\n\n\t\t/* (partial) h %= p */\n\t\t              c = (unsigned long)(d0 >> 26); h0 = (unsigned long)d0 & 0x3ffffff;\n\t\td1 += c;      c = (unsigned long)(d1 >> 26); h1 = (unsigned long)d1 & 0x3ffffff;\n\t\td2 += c;      c = (unsigned long)(d2 >> 26); h2 = (unsigned long)d2 & 0x3ffffff;\n\t\td3 += c;      c = (unsigned long)(d3 >> 26); h3 = (unsigned long)d3 & 0x3ffffff;\n\t\td4 += c;      c = (unsigned long)(d4 >> 26); h4 = (unsigned long)d4 & 0x3ffffff;\n\t\th0 += c * 5;  c =                (h0 >> 26); h0 =                h0 & 0x3ffffff;\n\t\th1 += c;\n\n\t\tm += poly1305_block_size;\n\t\tbytes -= poly1305_block_size;\n\t}\n\n\tst->h[0] = h0;\n\tst->h[1] = h1;\n\tst->h[2] = h2;\n\tst->h[3] = h3;\n\tst->h[4] = h4;\n}\n\nPOLY1305_NOINLINE void\npoly1305_finish(poly1305_context *ctx, unsigned char mac[16]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tunsigned long h0,h1,h2,h3,h4,c;\n\tunsigned long g0,g1,g2,g3,g4;\n\tunsigned long long f;\n\tunsigned long mask;\n\n\t/* process the remaining block */\n\tif (st->leftover) {\n\t\tsize_t i = st->leftover;\n\t\tst->buffer[i++] = 1;\n\t\tfor (; i < poly1305_block_size; i++)\n\t\t\tst->buffer[i] = 0;\n\t\tst->final = 1;\n\t\tpoly1305_blocks(st, st->buffer, poly1305_block_size);\n\t}\n\n\t/* fully carry h */\n\th0 = st->h[0];\n\th1 = st->h[1];\n\th2 = st->h[2];\n\th3 = st->h[3];\n\th4 = st->h[4];\n\n\t             c = h1 >> 26; h1 = h1 & 0x3ffffff;\n\th2 +=     c; c = h2 >> 26; h2 = h2 & 0x3ffffff;\n\th3 +=     c; c = h3 >> 26; h3 = h3 & 0x3ffffff;\n\th4 +=     c; c = h4 >> 26; h4 = h4 & 0x3ffffff;\n\th0 += c * 5; c = h0 >> 26; h0 = h0 & 0x3ffffff;\n\th1 +=     c;\n\n\t/* compute h + -p */\n\tg0 = h0 + 5; c = g0 >> 26; g0 &= 0x3ffffff;\n\tg1 = h1 + c; c = g1 >> 26; g1 &= 0x3ffffff;\n\tg2 = h2 + c; c = g2 >> 26; g2 &= 0x3ffffff;\n\tg3 = h3 + c; c = g3 >> 26; g3 &= 0x3ffffff;\n\tg4 = h4 + c - (1UL << 26);\n\n\t/* select h if h < p, or h + -p if h >= p */\n\tmask = (g4 >> ((sizeof(unsigned long) * 8) - 1)) - 1;\n\tg0 &= mask;\n\tg1 &= mask;\n\tg2 &= mask;\n\tg3 &= mask;\n\tg4 &= mask;\n\tmask = ~mask;\n\th0 = (h0 & mask) | g0;\n\th1 = (h1 & mask) | g1;\n\th2 = (h2 & mask) | g2;\n\th3 = (h3 & mask) | g3;\n\th4 = (h4 & mask) | g4;\n\n\t/* h = h % (2^128) */\n\th0 = ((h0      ) | (h1 << 26)) & 0xffffffff;\n\th1 = ((h1 >>  6) | (h2 << 20)) & 0xffffffff;\n\th2 = ((h2 >> 12) | (h3 << 14)) & 0xffffffff;\n\th3 = ((h3 >> 18) | (h4 <<  8)) & 0xffffffff;\n\n\t/* mac = (h + pad) % (2^128) */\n\tf = (unsigned long long)h0 + st->pad[0]            ; h0 = (unsigned long)f;\n\tf = (unsigned long long)h1 + st->pad[1] + (f >> 32); h1 = (unsigned long)f;\n\tf = (unsigned long long)h2 + st->pad[2] + (f >> 32); h2 = (unsigned long)f;\n\tf = (unsigned long long)h3 + st->pad[3] + (f >> 32); h3 = (unsigned long)f;\n\n\tU32TO8(mac +  0, h0);\n\tU32TO8(mac +  4, h1);\n\tU32TO8(mac +  8, h2);\n\tU32TO8(mac + 12, h3);\n\n\t/* zero out the state */\n\tst->h[0] = 0;\n\tst->h[1] = 0;\n\tst->h[2] = 0;\n\tst->h[3] = 0;\n\tst->h[4] = 0;\n\tst->r[0] = 0;\n\tst->r[1] = 0;\n\tst->r[2] = 0;\n\tst->r[3] = 0;\n\tst->r[4] = 0;\n\tst->pad[0] = 0;\n\tst->pad[1] = 0;\n\tst->pad[2] = 0;\n\tst->pad[3] = 0;\n}\n\n"
  },
  {
    "path": "src/crypto/donna/poly1305-donna-64.h",
    "content": "/*\n\tpoly1305 implementation using 64 bit * 64 bit = 128 bit multiplication and 128 bit addition\n*/\n\n#if defined(_MSC_VER)\n\t#include <intrin.h>\n\n\ttypedef struct uint128_t {\n\t\tunsigned long long lo;\n\t\tunsigned long long hi;\n\t} uint128_t;\n\n\t#define MUL(out, x, y) out.lo = _umul128((x), (y), &out.hi)\n\t#define ADD(out, in) { unsigned long long t = out.lo; out.lo += in.lo; out.hi += (out.lo < t) + in.hi; }\n\t#define ADDLO(out, in) { unsigned long long t = out.lo; out.lo += in; out.hi += (out.lo < t); }\n\t#define SHR(in, shift) (__shiftright128(in.lo, in.hi, (shift)))\n\t#define LO(in) (in.lo)\n\n\t#define POLY1305_NOINLINE __declspec(noinline)\n#elif defined(__GNUC__)\n\t#if defined(__SIZEOF_INT128__)\n\t\ttypedef unsigned __int128 uint128_t;\n\t#else\n\t\ttypedef unsigned uint128_t __attribute__((mode(TI)));\n\t#endif\n\n\t#define MUL(out, x, y) out = ((uint128_t)x * y)\n\t#define ADD(out, in) out += in\n\t#define ADDLO(out, in) out += in\n\t#define SHR(in, shift) (unsigned long long)(in >> (shift))\n\t#define LO(in) (unsigned long long)(in)\n\n\t#define POLY1305_NOINLINE __attribute__((noinline))\n#endif\n\n#define poly1305_block_size 16\n\n/* 17 + sizeof(size_t) + 8*sizeof(unsigned long long) */\ntypedef struct poly1305_state_internal_t {\n\tunsigned long long r[3];\n\tunsigned long long h[3];\n\tunsigned long long pad[2];\n\tsize_t leftover;\n\tunsigned char buffer[poly1305_block_size];\n\tunsigned char final;\n} poly1305_state_internal_t;\n\n/* interpret eight 8 bit unsigned integers as a 64 bit unsigned integer in little endian */\nstatic unsigned long long\nU8TO64(const unsigned char *p) {\n\treturn\n\t\t(((unsigned long long)(p[0] & 0xff)      ) |\n\t\t ((unsigned long long)(p[1] & 0xff) <<  8) |\n\t\t ((unsigned long long)(p[2] & 0xff) << 16) |\n\t\t ((unsigned long long)(p[3] & 0xff) << 24) |\n\t\t ((unsigned long long)(p[4] & 0xff) << 32) |\n\t\t ((unsigned long long)(p[5] & 0xff) << 40) |\n\t\t ((unsigned long long)(p[6] & 0xff) << 48) |\n\t\t ((unsigned long long)(p[7] & 0xff) << 56));\n}\n\n/* store a 64 bit unsigned integer as eight 8 bit unsigned integers in little endian */\nstatic void\nU64TO8(unsigned char *p, unsigned long long v) {\n\tp[0] = (v      ) & 0xff;\n\tp[1] = (v >>  8) & 0xff;\n\tp[2] = (v >> 16) & 0xff;\n\tp[3] = (v >> 24) & 0xff;\n\tp[4] = (v >> 32) & 0xff;\n\tp[5] = (v >> 40) & 0xff;\n\tp[6] = (v >> 48) & 0xff;\n\tp[7] = (v >> 56) & 0xff;\n}\n\nvoid\npoly1305_init(poly1305_context *ctx, const unsigned char key[32]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tunsigned long long t0,t1;\n\n\t/* r &= 0xffffffc0ffffffc0ffffffc0fffffff */\n\tt0 = U8TO64(&key[0]);\n\tt1 = U8TO64(&key[8]);\n\n\tst->r[0] = ( t0                    ) & 0xffc0fffffff;\n\tst->r[1] = ((t0 >> 44) | (t1 << 20)) & 0xfffffc0ffff;\n\tst->r[2] = ((t1 >> 24)             ) & 0x00ffffffc0f;\n\n\t/* h = 0 */\n\tst->h[0] = 0;\n\tst->h[1] = 0;\n\tst->h[2] = 0;\n\n\t/* save pad for later */\n\tst->pad[0] = U8TO64(&key[16]);\n\tst->pad[1] = U8TO64(&key[24]);\n\n\tst->leftover = 0;\n\tst->final = 0;\n}\n\nstatic void\npoly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, size_t bytes) {\n\tconst unsigned long long hibit = (st->final) ? 0 : ((unsigned long long)1 << 40); /* 1 << 128 */\n\tunsigned long long r0,r1,r2;\n\tunsigned long long s1,s2;\n\tunsigned long long h0,h1,h2;\n\tunsigned long long c;\n\tuint128_t d0,d1,d2,d;\n\n\tr0 = st->r[0];\n\tr1 = st->r[1];\n\tr2 = st->r[2];\n\n\th0 = st->h[0];\n\th1 = st->h[1];\n\th2 = st->h[2];\n\n\ts1 = r1 * (5 << 2);\n\ts2 = r2 * (5 << 2);\n\n\twhile (bytes >= poly1305_block_size) {\n\t\tunsigned long long t0,t1;\n\n\t\t/* h += m[i] */\n\t\tt0 = U8TO64(&m[0]);\n\t\tt1 = U8TO64(&m[8]);\n\n\t\th0 += (( t0                    ) & 0xfffffffffff);\n\t\th1 += (((t0 >> 44) | (t1 << 20)) & 0xfffffffffff);\n\t\th2 += (((t1 >> 24)             ) & 0x3ffffffffff) | hibit;\n\n\t\t/* h *= r */\n\t\tMUL(d0, h0, r0); MUL(d, h1, s2); ADD(d0, d); MUL(d, h2, s1); ADD(d0, d);\n\t\tMUL(d1, h0, r1); MUL(d, h1, r0); ADD(d1, d); MUL(d, h2, s2); ADD(d1, d);\n\t\tMUL(d2, h0, r2); MUL(d, h1, r1); ADD(d2, d); MUL(d, h2, r0); ADD(d2, d);\n\n\t\t/* (partial) h %= p */\n\t\t              c = SHR(d0, 44); h0 = LO(d0) & 0xfffffffffff;\n\t\tADDLO(d1, c); c = SHR(d1, 44); h1 = LO(d1) & 0xfffffffffff;\n\t\tADDLO(d2, c); c = SHR(d2, 42); h2 = LO(d2) & 0x3ffffffffff;\n\t\th0  += c * 5; c = (h0 >> 44);  h0 =    h0  & 0xfffffffffff;\n\t\th1  += c;\n\n\t\tm += poly1305_block_size;\n\t\tbytes -= poly1305_block_size;\n\t}\n\n\tst->h[0] = h0;\n\tst->h[1] = h1;\n\tst->h[2] = h2;\n}\n\n\nPOLY1305_NOINLINE void\npoly1305_finish(poly1305_context *ctx, unsigned char mac[16]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tunsigned long long h0,h1,h2,c;\n\tunsigned long long g0,g1,g2;\n\tunsigned long long t0,t1;\n\n\t/* process the remaining block */\n\tif (st->leftover) {\n\t\tsize_t i = st->leftover;\n\t\tst->buffer[i] = 1;\n\t\tfor (i = i + 1; i < poly1305_block_size; i++)\n\t\t\tst->buffer[i] = 0;\n\t\tst->final = 1;\n\t\tpoly1305_blocks(st, st->buffer, poly1305_block_size);\n\t}\n\n\t/* fully carry h */\n\th0 = st->h[0];\n\th1 = st->h[1];\n\th2 = st->h[2];\n\n\t             c = (h1 >> 44); h1 &= 0xfffffffffff;\n\th2 += c;     c = (h2 >> 42); h2 &= 0x3ffffffffff;\n\th0 += c * 5; c = (h0 >> 44); h0 &= 0xfffffffffff;\n\th1 += c;     c = (h1 >> 44); h1 &= 0xfffffffffff;\n\th2 += c;     c = (h2 >> 42); h2 &= 0x3ffffffffff;\n\th0 += c * 5; c = (h0 >> 44); h0 &= 0xfffffffffff;\n\th1 += c;\n\n\t/* compute h + -p */\n\tg0 = h0 + 5; c = (g0 >> 44); g0 &= 0xfffffffffff;\n\tg1 = h1 + c; c = (g1 >> 44); g1 &= 0xfffffffffff;\n\tg2 = h2 + c - ((unsigned long long)1 << 42);\n\n\t/* select h if h < p, or h + -p if h >= p */\n\tc = (g2 >> ((sizeof(unsigned long long) * 8) - 1)) - 1;\n\tg0 &= c;\n\tg1 &= c;\n\tg2 &= c;\n\tc = ~c;\n\th0 = (h0 & c) | g0;\n\th1 = (h1 & c) | g1;\n\th2 = (h2 & c) | g2;\n\n\t/* h = (h + pad) */\n\tt0 = st->pad[0];\n\tt1 = st->pad[1];\n\n\th0 += (( t0                    ) & 0xfffffffffff)    ; c = (h0 >> 44); h0 &= 0xfffffffffff;\n\th1 += (((t0 >> 44) | (t1 << 20)) & 0xfffffffffff) + c; c = (h1 >> 44); h1 &= 0xfffffffffff;\n\th2 += (((t1 >> 24)             ) & 0x3ffffffffff) + c;                 h2 &= 0x3ffffffffff;\n\n\t/* mac = h % (2^128) */\n\th0 = ((h0      ) | (h1 << 44));\n\th1 = ((h1 >> 20) | (h2 << 24));\n\n\tU64TO8(&mac[0], h0);\n\tU64TO8(&mac[8], h1);\n\n\t/* zero out the state */\n\tst->h[0] = 0;\n\tst->h[1] = 0;\n\tst->h[2] = 0;\n\tst->r[0] = 0;\n\tst->r[1] = 0;\n\tst->r[2] = 0;\n\tst->pad[0] = 0;\n\tst->pad[1] = 0;\n}\n\n"
  },
  {
    "path": "src/crypto/donna/poly1305-donna-8.h",
    "content": "/*\n\tpoly1305 implementation using 8 bit * 8 bit = 16 bit multiplication and 32 bit addition\n\n\tbased on the public domain reference version in supercop by djb\n*/\n\n#if defined(_MSC_VER)\n\t#define POLY1305_NOINLINE __declspec(noinline)\n#elif defined(__GNUC__)\n\t#define POLY1305_NOINLINE __attribute__((noinline))\n#else\n\t#define POLY1305_NOINLINE\n#endif\n\n#define poly1305_block_size 16\n\n/* 17 + sizeof(size_t) + 51*sizeof(unsigned char) */\ntypedef struct poly1305_state_internal_t {\n\tunsigned char buffer[poly1305_block_size];\n\tsize_t leftover;\n\tunsigned char h[17];\n\tunsigned char r[17];\n\tunsigned char pad[17];\n\tunsigned char final;\n} poly1305_state_internal_t;\n\nvoid\npoly1305_init(poly1305_context *ctx, const unsigned char key[32]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tsize_t i;\n\n\tst->leftover = 0;\n\n\t/* h = 0 */\n\tfor (i = 0; i < 17; i++)\n\t\tst->h[i] = 0;\n\n\t/* r &= 0xffffffc0ffffffc0ffffffc0fffffff */\n\tst->r[ 0] = key[ 0] & 0xff;\n\tst->r[ 1] = key[ 1] & 0xff;\n\tst->r[ 2] = key[ 2] & 0xff;\n\tst->r[ 3] = key[ 3] & 0x0f;\n\tst->r[ 4] = key[ 4] & 0xfc;\n\tst->r[ 5] = key[ 5] & 0xff;\n\tst->r[ 6] = key[ 6] & 0xff;\n\tst->r[ 7] = key[ 7] & 0x0f;\n\tst->r[ 8] = key[ 8] & 0xfc;\n\tst->r[ 9] = key[ 9] & 0xff;\n\tst->r[10] = key[10] & 0xff;\n\tst->r[11] = key[11] & 0x0f;\n\tst->r[12] = key[12] & 0xfc;\n\tst->r[13] = key[13] & 0xff;\n\tst->r[14] = key[14] & 0xff;\n\tst->r[15] = key[15] & 0x0f;\n\tst->r[16] = 0;\n\n\t/* save pad for later */\n\tfor (i = 0; i < 16; i++)\n\t\tst->pad[i] = key[i + 16];\n\tst->pad[16] = 0;\n\n\tst->final = 0;\n}\n\nstatic void\npoly1305_add(unsigned char h[17], const unsigned char c[17]) {\n\tunsigned short u;\n\tunsigned int i;\n\tfor (u = 0, i = 0; i < 17; i++) {\n\t\tu += (unsigned short)h[i] + (unsigned short)c[i];\n\t\th[i] = (unsigned char)u & 0xff;\n\t\tu >>= 8;\n\t}\n}\n\nstatic void\npoly1305_squeeze(unsigned char h[17], unsigned long hr[17]) {\n\tunsigned long u;\n\tunsigned int i;\n\tu = 0;\n\tfor (i = 0; i < 16; i++) {\n\t\tu += hr[i];\n\t\th[i] = (unsigned char)u & 0xff;\n\t\tu >>= 8;\n\t}\n\tu += hr[16];\n\th[16] = (unsigned char)u & 0x03;\n\tu >>= 2;\n\tu += (u << 2); /* u *= 5; */\n\tfor (i = 0; i < 16; i++) {\n\t\tu += h[i];\n\t\th[i] = (unsigned char)u & 0xff;\n\t\tu >>= 8;\n\t}\n\th[16] += (unsigned char)u;\n}\n\nstatic void\npoly1305_freeze(unsigned char h[17]) {\n\tstatic const unsigned char minusp[17] = {\n\t\t0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0xfc\n\t};\n\tunsigned char horig[17], negative;\n\tunsigned int i;\n\n\t/* compute h + -p */\n\tfor (i = 0; i < 17; i++)\n\t\thorig[i] = h[i];\n\tpoly1305_add(h, minusp);\n\n\t/* select h if h < p, or h + -p if h >= p */\n\tnegative = -(h[16] >> 7);\n\tfor (i = 0; i < 17; i++)\n\t\th[i] ^= negative & (horig[i] ^ h[i]);\n}\n\nstatic void\npoly1305_blocks(poly1305_state_internal_t *st, const unsigned char *m, size_t bytes) {\n\tconst unsigned char hibit = st->final ^ 1; /* 1 << 128 */\n\n\twhile (bytes >= poly1305_block_size) {\n\t\tunsigned long hr[17], u;\n\t\tunsigned char c[17];\n\t\tunsigned int i, j;\n\n\t\t/* h += m */\n\t\tfor (i = 0; i < 16; i++)\n\t\t\tc[i] = m[i];\n\t\tc[16] = hibit;\n\t\tpoly1305_add(st->h, c);\n\n\t\t/* h *= r */\n\t\tfor (i = 0; i < 17; i++) {\n\t\t\tu = 0;\n\t\t\tfor (j = 0; j <= i ; j++) {\n\t\t\t\tu += (unsigned short)st->h[j] * st->r[i - j];\n\t\t\t}\n\t\t\tfor (j = i + 1; j < 17; j++) {\n\t\t\t\tunsigned long v = (unsigned short)st->h[j] * st->r[i + 17 - j];\n\t\t\t\tv = ((v << 8) + (v << 6)); /* v *= (5 << 6); */\n\t\t\t\tu += v;\n\t\t\t}\n\t\t\thr[i] = u;\n\t\t}\n\n\t\t/* (partial) h %= p */\n\t\tpoly1305_squeeze(st->h, hr);\n\n\t\tm += poly1305_block_size;\n\t\tbytes -= poly1305_block_size;\n\t}\n}\n\nPOLY1305_NOINLINE void\npoly1305_finish(poly1305_context *ctx, unsigned char mac[16]) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tsize_t i;\n\n\t/* process the remaining block */\n\tif (st->leftover) {\n\t\tsize_t i = st->leftover;\n\t\tst->buffer[i++] = 1;\n\t\tfor (; i < poly1305_block_size; i++)\n\t\t\tst->buffer[i] = 0;\n\t\tst->final = 1;\n\t\tpoly1305_blocks(st, st->buffer, poly1305_block_size);\n\t}\n\n\t/* fully reduce h */\n\tpoly1305_freeze(st->h);\n\n\t/* h = (h + pad) % (1 << 128) */\n\tpoly1305_add(st->h, st->pad);\n\tfor (i = 0; i < 16; i++)\n\t\tmac[i] = st->h[i];\n\n\t/* zero out the state */\n\tfor (i = 0; i < 17; i++)\n\t\tst->h[i] = 0;\n\tfor (i = 0; i < 17; i++)\n\t\tst->r[i] = 0;\n\tfor (i = 0; i < 17; i++)\n\t\tst->pad[i] = 0;\n}\n"
  },
  {
    "path": "src/crypto/donna/poly1305-donna.c",
    "content": "#include \"poly1305-donna.h\"\n\n#if defined(POLY1305_8BIT)\n#include \"poly1305-donna-8.h\"\n#elif defined(POLY1305_16BIT)\n#include \"poly1305-donna-16.h\"\n#elif defined(POLY1305_32BIT)\n#include \"poly1305-donna-32.h\"\n#elif defined(POLY1305_64BIT)\n#include \"poly1305-donna-64.h\"\n#else\n\n/* auto detect between 32bit / 64bit */\n#define HAS_SIZEOF_INT128_64BIT (defined(__SIZEOF_INT128__) && defined(__LP64__))\n#define HAS_MSVC_64BIT (defined(_MSC_VER) && defined(_M_X64))\n#define HAS_GCC_4_4_64BIT (defined(__GNUC__) && defined(__LP64__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))))\n\n#if (HAS_SIZEOF_INT128_64BIT || HAS_MSVC_64BIT || HAS_GCC_4_4_64BIT)\n#include \"poly1305-donna-64.h\"\n#else\n#include \"poly1305-donna-32.h\"\n#endif\n\n#endif\n\nvoid\npoly1305_update(poly1305_context *ctx, const unsigned char *m, size_t bytes) {\n\tpoly1305_state_internal_t *st = (poly1305_state_internal_t *)ctx;\n\tsize_t i;\n\n\t/* handle leftover */\n\tif (st->leftover) {\n\t\tsize_t want = (poly1305_block_size - st->leftover);\n\t\tif (want > bytes)\n\t\t\twant = bytes;\n\t\tfor (i = 0; i < want; i++)\n\t\t\tst->buffer[st->leftover + i] = m[i];\n\t\tbytes -= want;\n\t\tm += want;\n\t\tst->leftover += want;\n\t\tif (st->leftover < poly1305_block_size)\n\t\t\treturn;\n\t\tpoly1305_blocks(st, st->buffer, poly1305_block_size);\n\t\tst->leftover = 0;\n\t}\n\n\t/* process full blocks */\n\tif (bytes >= poly1305_block_size) {\n\t\tsize_t want = (bytes & ~(poly1305_block_size - 1));\n\t\tpoly1305_blocks(st, m, want);\n\t\tm += want;\n\t\tbytes -= want;\n\t}\n\n\t/* store leftover */\n\tif (bytes) {\n\t\tfor (i = 0; i < bytes; i++)\n\t\t\tst->buffer[st->leftover + i] = m[i];\n\t\tst->leftover += bytes;\n\t}\n}\n\nvoid\npoly1305_auth(unsigned char mac[16], const unsigned char *m, size_t bytes, const unsigned char key[32]) {\n\tpoly1305_context ctx;\n\tpoly1305_init(&ctx, key);\n\tpoly1305_update(&ctx, m, bytes);\n\tpoly1305_finish(&ctx, mac);\n}\n\nint\npoly1305_verify(const unsigned char mac1[16], const unsigned char mac2[16]) {\n\tsize_t i;\n\tunsigned int dif = 0;\n\tfor (i = 0; i < 16; i++)\n\t\tdif |= (mac1[i] ^ mac2[i]);\n\tdif = (dif - 1) >> ((sizeof(unsigned int) * 8) - 1);\n\treturn (dif & 1);\n}\n\n\n/* test a few basic operations */\nint\npoly1305_power_on_self_test(void) {\n\t/* example from nacl */\n\tstatic const unsigned char nacl_key[32] = {\n\t\t0xee,0xa6,0xa7,0x25,0x1c,0x1e,0x72,0x91,\n\t\t0x6d,0x11,0xc2,0xcb,0x21,0x4d,0x3c,0x25,\n\t\t0x25,0x39,0x12,0x1d,0x8e,0x23,0x4e,0x65,\n\t\t0x2d,0x65,0x1f,0xa4,0xc8,0xcf,0xf8,0x80,\n\t};\n\n\tstatic const unsigned char nacl_msg[131] = {\n\t\t0x8e,0x99,0x3b,0x9f,0x48,0x68,0x12,0x73,\n\t\t0xc2,0x96,0x50,0xba,0x32,0xfc,0x76,0xce,\n\t\t0x48,0x33,0x2e,0xa7,0x16,0x4d,0x96,0xa4,\n\t\t0x47,0x6f,0xb8,0xc5,0x31,0xa1,0x18,0x6a,\n\t\t0xc0,0xdf,0xc1,0x7c,0x98,0xdc,0xe8,0x7b,\n\t\t0x4d,0xa7,0xf0,0x11,0xec,0x48,0xc9,0x72,\n\t\t0x71,0xd2,0xc2,0x0f,0x9b,0x92,0x8f,0xe2,\n\t\t0x27,0x0d,0x6f,0xb8,0x63,0xd5,0x17,0x38,\n\t\t0xb4,0x8e,0xee,0xe3,0x14,0xa7,0xcc,0x8a,\n\t\t0xb9,0x32,0x16,0x45,0x48,0xe5,0x26,0xae,\n\t\t0x90,0x22,0x43,0x68,0x51,0x7a,0xcf,0xea,\n\t\t0xbd,0x6b,0xb3,0x73,0x2b,0xc0,0xe9,0xda,\n\t\t0x99,0x83,0x2b,0x61,0xca,0x01,0xb6,0xde,\n\t\t0x56,0x24,0x4a,0x9e,0x88,0xd5,0xf9,0xb3,\n\t\t0x79,0x73,0xf6,0x22,0xa4,0x3d,0x14,0xa6,\n\t\t0x59,0x9b,0x1f,0x65,0x4c,0xb4,0x5a,0x74,\n\t\t0xe3,0x55,0xa5\n\t};\n\n\tstatic const unsigned char nacl_mac[16] = {\n\t\t0xf3,0xff,0xc7,0x70,0x3f,0x94,0x00,0xe5,\n\t\t0x2a,0x7d,0xfb,0x4b,0x3d,0x33,0x05,0xd9\n\t};\n\n\t/* generates a final value of (2^130 - 2) == 3 */\n\tstatic const unsigned char wrap_key[32] = {\n\t\t0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n\n\tstatic const unsigned char wrap_msg[16] = {\n\t\t0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,\n\t\t0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff\n\t};\n\n\tstatic const unsigned char wrap_mac[16] = {\n\t\t0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n\n\t/*\n\t\tmac of the macs of messages of length 0 to 256, where the key and messages\n\t\thave all their values set to the length\n\t*/\n\tstatic const unsigned char total_key[32] = {\n\t\t0x01,0x02,0x03,0x04,0x05,0x06,0x07,\n\t\t0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,\n\t\t0xff,0xff,0xff,0xff,0xff,0xff,0xff,\n\t\t0xff,0xff,0xff,0xff,0xff,0xff,0xff\n\t};\n\n\tstatic const unsigned char total_mac[16] = {\n\t\t0x64,0xaf,0xe2,0xe8,0xd6,0xad,0x7b,0xbd,\n\t\t0xd2,0x87,0xf9,0x7c,0x44,0x62,0x3d,0x39\n\t};\n\n\tpoly1305_context ctx;\n\tpoly1305_context total_ctx;\n\tunsigned char all_key[32];\n\tunsigned char all_msg[256];\n\tunsigned char mac[16];\n\tsize_t i, j;\n\tint result = 1;\n\n\tfor (i = 0; i < sizeof(mac); i++)\n\t\tmac[i] = 0;\n\tpoly1305_auth(mac, nacl_msg, sizeof(nacl_msg), nacl_key);\n\tresult &= poly1305_verify(nacl_mac, mac);\n\n\tfor (i = 0; i < sizeof(mac); i++)\n\t\tmac[i] = 0;\n\tpoly1305_init(&ctx, nacl_key);\n\tpoly1305_update(&ctx, nacl_msg +   0, 32);\n\tpoly1305_update(&ctx, nacl_msg +  32, 64);\n\tpoly1305_update(&ctx, nacl_msg +  96, 16);\n\tpoly1305_update(&ctx, nacl_msg + 112,  8);\n\tpoly1305_update(&ctx, nacl_msg + 120,  4);\n\tpoly1305_update(&ctx, nacl_msg + 124,  2);\n\tpoly1305_update(&ctx, nacl_msg + 126,  1);\n\tpoly1305_update(&ctx, nacl_msg + 127,  1);\n\tpoly1305_update(&ctx, nacl_msg + 128,  1);\n\tpoly1305_update(&ctx, nacl_msg + 129,  1);\n\tpoly1305_update(&ctx, nacl_msg + 130,  1);\n\tpoly1305_finish(&ctx, mac);\n\tresult &= poly1305_verify(nacl_mac, mac);\n\n\tfor (i = 0; i < sizeof(mac); i++)\n\t\tmac[i] = 0;\n\tpoly1305_auth(mac, wrap_msg, sizeof(wrap_msg), wrap_key);\n\tresult &= poly1305_verify(wrap_mac, mac);\n\n\tpoly1305_init(&total_ctx, total_key);\n\tfor (i = 0; i < 256; i++) {\n\t\t/* set key and message to 'i,i,i..' */\n\t\tfor (j = 0; j < sizeof(all_key); j++)\n\t\t\tall_key[j] = i;\n\t\tfor (j = 0; j < i; j++)\n\t\t\tall_msg[j] = i;\n\t\tpoly1305_auth(mac, all_msg, i, all_key);\n\t\tpoly1305_update(&total_ctx, mac, 16);\n\t}\n\tpoly1305_finish(&total_ctx, mac);\n\tresult &= poly1305_verify(total_mac, mac);\n\n\treturn result;\n}\n"
  },
  {
    "path": "src/crypto/donna/poly1305-donna.h",
    "content": "#ifndef POLY1305_DONNA_H\n#define POLY1305_DONNA_H\n\n#include <stddef.h>\n\ntypedef struct poly1305_context {\n\tsize_t aligner;\n\tunsigned char opaque[136];\n} poly1305_context;\n\nvoid poly1305_init(poly1305_context *ctx, const unsigned char key[32]);\nvoid poly1305_update(poly1305_context *ctx, const unsigned char *m, size_t bytes);\nvoid poly1305_finish(poly1305_context *ctx, unsigned char mac[16]);\nvoid poly1305_auth(unsigned char mac[16], const unsigned char *m, size_t bytes, const unsigned char key[32]);\n\nint poly1305_verify(const unsigned char mac1[16], const unsigned char mac2[16]);\nint poly1305_power_on_self_test(void);\n\n#endif /* POLY1305_DONNA_H */\n\n"
  },
  {
    "path": "src/crypto/ed25519/README.md",
    "content": "[ed25519](http://ed25519.cr.yp.to/) is an \n[Elliptic Curve Digital Signature Algortithm](http://en.wikipedia.org/wiki/Elliptic_Curve_DSA), \ndeveloped by [Dan Bernstein](http://cr.yp.to/djb.html), \n[Niels Duif](http://www.nielsduif.nl/), \n[Tanja Lange](http://hyperelliptic.org/tanja), \n[Peter Schwabe](http://www.cryptojedi.org/users/peter/), \nand [Bo-Yin Yang](http://www.iis.sinica.edu.tw/pages/byyang/).\n\nThis project provides performant, portable 32-bit & 64-bit implementations. All implementations are \nof course constant time in regard to secret data.\n\n#### Performance\n\nSSE2 code and benches have not been updated yet. I will do those next.\n\nCompilers versions are gcc 4.6.3, icc 13.1.1, clang 3.4-1~exp1.\n\nBatch verification time (in parentheses) is the average time per 1 verification in a batch of 64 signatures. Counts are in thousands of cycles.\n\nNote that SSE2 performance may be less impressive on AMD & older CPUs with slower SSE ops!\n\nVisual Studio performance for `ge25519_scalarmult_base_niels` will lag behind a bit until optimized assembler versions of `ge25519_scalarmult_base_choose_niels`\nare made.\n\n##### E5200 @ 2.5ghz, march=core2\n\n<table>\n<thead><tr><th>Implementation</th><th>Sign</th><th>gcc</th><th>icc</th><th>clang</th><th>Verify</th><th>gcc</th><th>icc</th><th>clang</th></tr></thead>\n<tbody>\n<tr><td>ed25519-donna 64bit     </td><td></td><td>100k</td><td>110k</td><td>137k</td><td></td><td>327k (144k) </td><td>342k (163k) </td><td>422k (194k) </td></tr>\n<tr><td>amd64-64-24k            </td><td></td><td>102k</td><td>    </td><td>    </td><td></td><td>355k (158k) </td><td>            </td><td>            </td></tr>\n<tr><td>ed25519-donna-sse2 64bit</td><td></td><td>108k</td><td>111k</td><td>116k</td><td></td><td>353k (155k) </td><td>345k (154k) </td><td>360k (161k) </td></tr>\n<tr><td>amd64-51-32k            </td><td></td><td>116k</td><td>    </td><td>    </td><td></td><td>380k (175k) </td><td>            </td><td>            </td></tr>\n<tr><td>ed25519-donna-sse2 32bit</td><td></td><td>147k</td><td>147k</td><td>156k</td><td></td><td>380k (178k) </td><td>381k (173k) </td><td>430k (192k) </td></tr>\n<tr><td>ed25519-donna 32bit     </td><td></td><td>597k</td><td>335k</td><td>380k</td><td></td><td>1693k (720k)</td><td>1052k (453k)</td><td>1141k (493k)</td></tr>\n</tbody>\n</table>\n\n##### E3-1270 @ 3.4ghz, march=corei7-avx\n\n<table>\n<thead><tr><th>Implementation</th><th>Sign</th><th>gcc</th><th>icc</th><th>clang</th><th>Verify</th><th>gcc</th><th>icc</th><th>clang</th></tr></thead>\n<tbody>\n<tr><td>amd64-64-24k            </td><td></td><td> 68k</td><td>    </td><td>    </td><td></td><td>225k (104k) </td><td>            </td><td>            </td></tr>\n<tr><td>ed25519-donna 64bit     </td><td></td><td> 71k</td><td> 75k</td><td> 90k</td><td></td><td>226k (105k) </td><td>226k (112k) </td><td>277k (125k) </td></tr>\n<tr><td>amd64-51-32k            </td><td></td><td> 72k</td><td>    </td><td>    </td><td></td><td>218k (107k) </td><td>            </td><td>            </td></tr>\n<tr><td>ed25519-donna-sse2 64bit</td><td></td><td> 79k</td><td> 82k</td><td> 92k</td><td></td><td>252k (122k) </td><td>259k (124k) </td><td>282k (131k) </td></tr>\n<tr><td>ed25519-donna-sse2 32bit</td><td></td><td> 94k</td><td> 95k</td><td>103k</td><td></td><td>296k (146k) </td><td>294k (137k) </td><td>306k (147k) </td></tr>\n<tr><td>ed25519-donna 32bit     </td><td></td><td>525k</td><td>299k</td><td>316k</td><td></td><td>1502k (645k)</td><td>959k (418k) </td><td>954k (416k) </td></tr>\n</tbody>\n</table>\n\n#### Compilation\n\nNo configuration is needed **if you are compiling against OpenSSL**. \n\n##### Hash Options\n\nIf you are not compiling aginst OpenSSL, you will need a hash function.\n\nTo use a simple/**slow** implementation of SHA-512, use `-DED25519_REFHASH` when compiling `ed25519.c`. \nThis should never be used except to verify the code works when OpenSSL is not available.\n\nTo use a custom hash function, use `-DED25519_CUSTOMHASH` when compiling `ed25519.c` and put your \ncustom hash implementation in ed25519-hash-custom.h. The hash must have a 512bit digest and implement\n\n\tstruct ed25519_hash_context;\n\n\tvoid ed25519_hash_init(ed25519_hash_context *ctx);\n\tvoid ed25519_hash_update(ed25519_hash_context *ctx, const uint8_t *in, size_t inlen);\n\tvoid ed25519_hash_final(ed25519_hash_context *ctx, uint8_t *hash);\n\tvoid ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen);\n\n##### Random Options\n\nIf you are not compiling aginst OpenSSL, you will need a random function for batch verification.\n\nTo use a custom random function, use `-DED25519_CUSTOMRANDOM` when compiling `ed25519.c` and put your \ncustom hash implementation in ed25519-randombytes-custom.h. The random function must implement:\n\n\tvoid ED25519_FN(ed25519_randombytes_unsafe) (void *p, size_t len);\n\nUse `-DED25519_TEST` when compiling `ed25519.c` to use a deterministically seeded, non-thread safe CSPRNG \nvariant of Bob Jenkins [ISAAC](http://en.wikipedia.org/wiki/ISAAC_%28cipher%29)\n\n##### Minor options\n\nUse `-DED25519_INLINE_ASM` to disable the use of custom assembler routines and instead rely on portable C.\n\nUse `-DED25519_FORCE_32BIT` to force the use of 32 bit routines even when compiling for 64 bit.\n\n##### 32-bit\n\n\tgcc ed25519.c -m32 -O3 -c\n\n##### 64-bit\n\n\tgcc ed25519.c -m64 -O3 -c\n\n##### SSE2\n\n\tgcc ed25519.c -m32 -O3 -c -DED25519_SSE2 -msse2\n\tgcc ed25519.c -m64 -O3 -c -DED25519_SSE2\n\nclang and icc are also supported\n\n\n#### Usage\n\nTo use the code, link against `ed25519.o -mbits` and:\n\n\t#include \"ed25519.h\"\n\nAdd `-lssl -lcrypto` when using OpenSSL (Some systems don't need -lcrypto? It might be trial and error).\n\nTo generate a private key, simply generate 32 bytes from a secure\ncryptographic source:\n\n\ted25519_secret_key sk;\n\trandombytes(sk, sizeof(ed25519_secret_key));\n\nTo generate a public key:\n\n\ted25519_public_key pk;\n\ted25519_publickey(sk, pk);\n\nTo sign a message:\n\n\ted25519_signature sig;\n\ted25519_sign(message, message_len, sk, pk, signature);\n\nTo verify a signature:\n\n\tint valid = ed25519_sign_open(message, message_len, pk, signature) == 0;\n\nTo batch verify signatures:\n\n\tconst unsigned char *mp[num] = {message1, message2..}\n\tsize_t ml[num] = {message_len1, message_len2..}\n\tconst unsigned char *pkp[num] = {pk1, pk2..}\n\tconst unsigned char *sigp[num] = {signature1, signature2..}\n\tint valid[num]\n\n\t/* valid[i] will be set to 1 if the individual signature was valid, 0 otherwise */\n\tint all_valid = ed25519_sign_open_batch(mp, ml, pkp, sigp, num, valid) == 0;\n\n**Note**: Batch verification uses `ed25519_randombytes_unsafe`, implemented in \n`ed25519-randombytes.h`, to generate random scalars for the verification code. \nThe default implementation now uses OpenSSLs `RAND_bytes`.\n\nUnlike the [SUPERCOP](http://bench.cr.yp.to/supercop.html) version, signatures are\nnot appended to messages, and there is no need for padding in front of messages. \nAdditionally, the secret key does not contain a copy of the public key, so it is \n32 bytes instead of 64 bytes, and the public key must be provided to the signing\nfunction.\n\n##### Curve25519\n\nCurve25519 public keys can be generated thanks to \n[Adam Langley](http://www.imperialviolet.org/2013/05/10/fastercurve25519.html) \nleveraging Ed25519's precomputed basepoint scalar multiplication.\n\n\tcurved25519_key sk, pk;\n\trandombytes(sk, sizeof(curved25519_key));\n\tcurved25519_scalarmult_basepoint(pk, sk);\n\nNote the name is curved25519, a combination of curve and ed25519, to prevent \nname clashes. Performance is slightly faster than short message ed25519\nsigning due to both using the same code for the scalar multiply.\n\n#### Testing\n\nFuzzing against reference implemenations is now available. See [fuzz/README](fuzz/README.md).\n\nBuilding `ed25519.c` with `-DED25519_TEST` and linking with `test.c` will run basic sanity tests\nand benchmark each function. `test-batch.c` has been incorporated in to `test.c`.\n\n`test-internals.c` is standalone and built the same way as `ed25519.c`. It tests the math primitives\nwith extreme values to ensure they function correctly. SSE2 is now supported.\n\n#### Papers\n\n[Available on the Ed25519 website](http://ed25519.cr.yp.to/papers.html)"
  },
  {
    "path": "src/crypto/ed25519/curve25519-donna-32bit.h",
    "content": "/*\n\tPublic domain by Andrew M. <liquidsun@gmail.com>\n\tSee: https://github.com/floodyberry/curve25519-donna\n\n\t32 bit integer curve25519 implementation\n*/\n\ntypedef uint32_t bignum25519[10];\ntypedef uint32_t bignum25519align16[12];\n\nstatic const uint32_t reduce_mask_25 = (1 << 25) - 1;\nstatic const uint32_t reduce_mask_26 = (1 << 26) - 1;\n\n\n/* out = in */\nDONNA_INLINE static void\ncurve25519_copy(bignum25519 out, const bignum25519 in) {\n\tout[0] = in[0];\n\tout[1] = in[1];\n\tout[2] = in[2];\n\tout[3] = in[3];\n\tout[4] = in[4];\n\tout[5] = in[5];\n\tout[6] = in[6];\n\tout[7] = in[7];\n\tout[8] = in[8];\n\tout[9] = in[9];\n}\n\n/* out = a + b */\nDONNA_INLINE static void\ncurve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tout[0] = a[0] + b[0];\n\tout[1] = a[1] + b[1];\n\tout[2] = a[2] + b[2];\n\tout[3] = a[3] + b[3];\n\tout[4] = a[4] + b[4];\n\tout[5] = a[5] + b[5];\n\tout[6] = a[6] + b[6];\n\tout[7] = a[7] + b[7];\n\tout[8] = a[8] + b[8];\n\tout[9] = a[9] + b[9];\n}\n\nDONNA_INLINE static void \ncurve25519_add_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint32_t c;\n\tout[0] = a[0] + b[0]    ; c = (out[0] >> 26); out[0] &= reduce_mask_26;\n\tout[1] = a[1] + b[1] + c; c = (out[1] >> 25); out[1] &= reduce_mask_25;\n\tout[2] = a[2] + b[2] + c; c = (out[2] >> 26); out[2] &= reduce_mask_26;\n\tout[3] = a[3] + b[3] + c; c = (out[3] >> 25); out[3] &= reduce_mask_25;\n\tout[4] = a[4] + b[4] + c; c = (out[4] >> 26); out[4] &= reduce_mask_26;\n\tout[5] = a[5] + b[5] + c; c = (out[5] >> 25); out[5] &= reduce_mask_25;\n\tout[6] = a[6] + b[6] + c; c = (out[6] >> 26); out[6] &= reduce_mask_26;\n\tout[7] = a[7] + b[7] + c; c = (out[7] >> 25); out[7] &= reduce_mask_25;\n\tout[8] = a[8] + b[8] + c; c = (out[8] >> 26); out[8] &= reduce_mask_26;\n\tout[9] = a[9] + b[9] + c; c = (out[9] >> 25); out[9] &= reduce_mask_25;\n\tout[0] += 19 * c;\n}\n\nDONNA_INLINE static void\ncurve25519_add_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint32_t c;\n\tout[0] = a[0] + b[0]    ; c = (out[0] >> 26); out[0] &= reduce_mask_26;\n\tout[1] = a[1] + b[1] + c; c = (out[1] >> 25); out[1] &= reduce_mask_25;\n\tout[2] = a[2] + b[2] + c; c = (out[2] >> 26); out[2] &= reduce_mask_26;\n\tout[3] = a[3] + b[3] + c; c = (out[3] >> 25); out[3] &= reduce_mask_25;\n\tout[4] = a[4] + b[4] + c; c = (out[4] >> 26); out[4] &= reduce_mask_26;\n\tout[5] = a[5] + b[5] + c; c = (out[5] >> 25); out[5] &= reduce_mask_25;\n\tout[6] = a[6] + b[6] + c; c = (out[6] >> 26); out[6] &= reduce_mask_26;\n\tout[7] = a[7] + b[7] + c; c = (out[7] >> 25); out[7] &= reduce_mask_25;\n\tout[8] = a[8] + b[8] + c; c = (out[8] >> 26); out[8] &= reduce_mask_26;\n\tout[9] = a[9] + b[9] + c; c = (out[9] >> 25); out[9] &= reduce_mask_25;\n\tout[0] += 19 * c;\n}\n\n/* multiples of p */\nstatic const uint32_t twoP0       = 0x07ffffda;\nstatic const uint32_t twoP13579   = 0x03fffffe;\nstatic const uint32_t twoP2468    = 0x07fffffe;\nstatic const uint32_t fourP0      = 0x0fffffb4;\nstatic const uint32_t fourP13579  = 0x07fffffc;\nstatic const uint32_t fourP2468   = 0x0ffffffc;\n\n/* out = a - b */\nDONNA_INLINE static void\ncurve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint32_t c;\n\tout[0] = twoP0     + a[0] - b[0]    ; c = (out[0] >> 26); out[0] &= reduce_mask_26;\n\tout[1] = twoP13579 + a[1] - b[1] + c; c = (out[1] >> 25); out[1] &= reduce_mask_25;\n\tout[2] = twoP2468  + a[2] - b[2] + c; c = (out[2] >> 26); out[2] &= reduce_mask_26;\n\tout[3] = twoP13579 + a[3] - b[3] + c; c = (out[3] >> 25); out[3] &= reduce_mask_25;\n\tout[4] = twoP2468  + a[4] - b[4] + c;\n\tout[5] = twoP13579 + a[5] - b[5]    ;\n\tout[6] = twoP2468  + a[6] - b[6]    ;\n\tout[7] = twoP13579 + a[7] - b[7]    ;\n\tout[8] = twoP2468  + a[8] - b[8]    ;\n\tout[9] = twoP13579 + a[9] - b[9]    ;\n}\n\n/* out = a - b, where a is the result of a basic op (add,sub) */\nDONNA_INLINE static void\ncurve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint32_t c;\n\tout[0] = fourP0     + a[0] - b[0]    ; c = (out[0] >> 26); out[0] &= reduce_mask_26;\n\tout[1] = fourP13579 + a[1] - b[1] + c; c = (out[1] >> 25); out[1] &= reduce_mask_25;\n\tout[2] = fourP2468  + a[2] - b[2] + c; c = (out[2] >> 26); out[2] &= reduce_mask_26;\n\tout[3] = fourP13579 + a[3] - b[3] + c; c = (out[3] >> 25); out[3] &= reduce_mask_25;\n\tout[4] = fourP2468  + a[4] - b[4] + c; c = (out[4] >> 26); out[4] &= reduce_mask_26;\n\tout[5] = fourP13579 + a[5] - b[5] + c; c = (out[5] >> 25); out[5] &= reduce_mask_25;\n\tout[6] = fourP2468  + a[6] - b[6] + c; c = (out[6] >> 26); out[6] &= reduce_mask_26;\n\tout[7] = fourP13579 + a[7] - b[7] + c; c = (out[7] >> 25); out[7] &= reduce_mask_25;\n\tout[8] = fourP2468  + a[8] - b[8] + c; c = (out[8] >> 26); out[8] &= reduce_mask_26;\n\tout[9] = fourP13579 + a[9] - b[9] + c; c = (out[9] >> 25); out[9] &= reduce_mask_25;\n\tout[0] += 19 * c;\n}\n\nDONNA_INLINE static void\ncurve25519_sub_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint32_t c;\n\tout[0] = fourP0     + a[0] - b[0]    ; c = (out[0] >> 26); out[0] &= reduce_mask_26;\n\tout[1] = fourP13579 + a[1] - b[1] + c; c = (out[1] >> 25); out[1] &= reduce_mask_25;\n\tout[2] = fourP2468  + a[2] - b[2] + c; c = (out[2] >> 26); out[2] &= reduce_mask_26;\n\tout[3] = fourP13579 + a[3] - b[3] + c; c = (out[3] >> 25); out[3] &= reduce_mask_25;\n\tout[4] = fourP2468  + a[4] - b[4] + c; c = (out[4] >> 26); out[4] &= reduce_mask_26;\n\tout[5] = fourP13579 + a[5] - b[5] + c; c = (out[5] >> 25); out[5] &= reduce_mask_25;\n\tout[6] = fourP2468  + a[6] - b[6] + c; c = (out[6] >> 26); out[6] &= reduce_mask_26;\n\tout[7] = fourP13579 + a[7] - b[7] + c; c = (out[7] >> 25); out[7] &= reduce_mask_25;\n\tout[8] = fourP2468  + a[8] - b[8] + c; c = (out[8] >> 26); out[8] &= reduce_mask_26;\n\tout[9] = fourP13579 + a[9] - b[9] + c; c = (out[9] >> 25); out[9] &= reduce_mask_25;\n\tout[0] += 19 * c;\n}\n\n/* out = -a */\nDONNA_INLINE static void\ncurve25519_neg(bignum25519 out, const bignum25519 a) {\n\tuint32_t c;\n\tout[0] = twoP0     - a[0]    ; c = (out[0] >> 26); out[0] &= reduce_mask_26;\n\tout[1] = twoP13579 - a[1] + c; c = (out[1] >> 25); out[1] &= reduce_mask_25;\n\tout[2] = twoP2468  - a[2] + c; c = (out[2] >> 26); out[2] &= reduce_mask_26;\n\tout[3] = twoP13579 - a[3] + c; c = (out[3] >> 25); out[3] &= reduce_mask_25;\n\tout[4] = twoP2468  - a[4] + c; c = (out[4] >> 26); out[4] &= reduce_mask_26;\n\tout[5] = twoP13579 - a[5] + c; c = (out[5] >> 25); out[5] &= reduce_mask_25;\n\tout[6] = twoP2468  - a[6] + c; c = (out[6] >> 26); out[6] &= reduce_mask_26;\n\tout[7] = twoP13579 - a[7] + c; c = (out[7] >> 25); out[7] &= reduce_mask_25;\n\tout[8] = twoP2468  - a[8] + c; c = (out[8] >> 26); out[8] &= reduce_mask_26;\n\tout[9] = twoP13579 - a[9] + c; c = (out[9] >> 25); out[9] &= reduce_mask_25;\n\tout[0] += 19 * c;\n}\n\n/* out = a * b */\n#define curve25519_mul_noinline curve25519_mul\nstatic void\ncurve25519_mul(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint32_t r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;\n\tuint32_t s0,s1,s2,s3,s4,s5,s6,s7,s8,s9;\n\tuint64_t m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,c;\n\tuint32_t p;\n\n\tr0 = b[0];\n\tr1 = b[1];\n\tr2 = b[2];\n\tr3 = b[3];\n\tr4 = b[4];\n\tr5 = b[5];\n\tr6 = b[6];\n\tr7 = b[7];\n\tr8 = b[8];\n\tr9 = b[9];\n\n\ts0 = a[0];\n\ts1 = a[1];\n\ts2 = a[2];\n\ts3 = a[3];\n\ts4 = a[4];\n\ts5 = a[5];\n\ts6 = a[6];\n\ts7 = a[7];\n\ts8 = a[8];\n\ts9 = a[9];\n\n\tm1 = mul32x32_64(r0, s1) + mul32x32_64(r1, s0);\n\tm3 = mul32x32_64(r0, s3) + mul32x32_64(r1, s2) + mul32x32_64(r2, s1) + mul32x32_64(r3, s0);\n\tm5 = mul32x32_64(r0, s5) + mul32x32_64(r1, s4) + mul32x32_64(r2, s3) + mul32x32_64(r3, s2) + mul32x32_64(r4, s1) + mul32x32_64(r5, s0);\n\tm7 = mul32x32_64(r0, s7) + mul32x32_64(r1, s6) + mul32x32_64(r2, s5) + mul32x32_64(r3, s4) + mul32x32_64(r4, s3) + mul32x32_64(r5, s2) + mul32x32_64(r6, s1) + mul32x32_64(r7, s0);\n\tm9 = mul32x32_64(r0, s9) + mul32x32_64(r1, s8) + mul32x32_64(r2, s7) + mul32x32_64(r3, s6) + mul32x32_64(r4, s5) + mul32x32_64(r5, s4) + mul32x32_64(r6, s3) + mul32x32_64(r7, s2) + mul32x32_64(r8, s1) + mul32x32_64(r9, s0);\n\n\tr1 *= 2;\n\tr3 *= 2;\n\tr5 *= 2;\n\tr7 *= 2;\n\n\tm0 = mul32x32_64(r0, s0);\n\tm2 = mul32x32_64(r0, s2) + mul32x32_64(r1, s1) + mul32x32_64(r2, s0);\n\tm4 = mul32x32_64(r0, s4) + mul32x32_64(r1, s3) + mul32x32_64(r2, s2) + mul32x32_64(r3, s1) + mul32x32_64(r4, s0);\n\tm6 = mul32x32_64(r0, s6) + mul32x32_64(r1, s5) + mul32x32_64(r2, s4) + mul32x32_64(r3, s3) + mul32x32_64(r4, s2) + mul32x32_64(r5, s1) + mul32x32_64(r6, s0);\n\tm8 = mul32x32_64(r0, s8) + mul32x32_64(r1, s7) + mul32x32_64(r2, s6) + mul32x32_64(r3, s5) + mul32x32_64(r4, s4) + mul32x32_64(r5, s3) + mul32x32_64(r6, s2) + mul32x32_64(r7, s1) + mul32x32_64(r8, s0);\n\n\tr1 *= 19;\n\tr2 *= 19;\n\tr3 = (r3 / 2) * 19;\n\tr4 *= 19;\n\tr5 = (r5 / 2) * 19;\n\tr6 *= 19;\n\tr7 = (r7 / 2) * 19;\n\tr8 *= 19;\n\tr9 *= 19;\n\n\tm1 += (mul32x32_64(r9, s2) + mul32x32_64(r8, s3) + mul32x32_64(r7, s4) + mul32x32_64(r6, s5) + mul32x32_64(r5, s6) + mul32x32_64(r4, s7) + mul32x32_64(r3, s8) + mul32x32_64(r2, s9));\n\tm3 += (mul32x32_64(r9, s4) + mul32x32_64(r8, s5) + mul32x32_64(r7, s6) + mul32x32_64(r6, s7) + mul32x32_64(r5, s8) + mul32x32_64(r4, s9));\n\tm5 += (mul32x32_64(r9, s6) + mul32x32_64(r8, s7) + mul32x32_64(r7, s8) + mul32x32_64(r6, s9));\n\tm7 += (mul32x32_64(r9, s8) + mul32x32_64(r8, s9));\n\n\tr3 *= 2;\n\tr5 *= 2;\n\tr7 *= 2;\n\tr9 *= 2;\n\n\tm0 += (mul32x32_64(r9, s1) + mul32x32_64(r8, s2) + mul32x32_64(r7, s3) + mul32x32_64(r6, s4) + mul32x32_64(r5, s5) + mul32x32_64(r4, s6) + mul32x32_64(r3, s7) + mul32x32_64(r2, s8) + mul32x32_64(r1, s9));\n\tm2 += (mul32x32_64(r9, s3) + mul32x32_64(r8, s4) + mul32x32_64(r7, s5) + mul32x32_64(r6, s6) + mul32x32_64(r5, s7) + mul32x32_64(r4, s8) + mul32x32_64(r3, s9));\n\tm4 += (mul32x32_64(r9, s5) + mul32x32_64(r8, s6) + mul32x32_64(r7, s7) + mul32x32_64(r6, s8) + mul32x32_64(r5, s9));\n\tm6 += (mul32x32_64(r9, s7) + mul32x32_64(r8, s8) + mul32x32_64(r7, s9));\n\tm8 += (mul32x32_64(r9, s9));\n\n\t                             r0 = (uint32_t)m0 & reduce_mask_26; c = (m0 >> 26);\n\tm1 += c;                     r1 = (uint32_t)m1 & reduce_mask_25; c = (m1 >> 25);\n\tm2 += c;                     r2 = (uint32_t)m2 & reduce_mask_26; c = (m2 >> 26);\n\tm3 += c;                     r3 = (uint32_t)m3 & reduce_mask_25; c = (m3 >> 25);\n\tm4 += c;                     r4 = (uint32_t)m4 & reduce_mask_26; c = (m4 >> 26);\n\tm5 += c;                     r5 = (uint32_t)m5 & reduce_mask_25; c = (m5 >> 25);\n\tm6 += c;                     r6 = (uint32_t)m6 & reduce_mask_26; c = (m6 >> 26);\n\tm7 += c;                     r7 = (uint32_t)m7 & reduce_mask_25; c = (m7 >> 25);\n\tm8 += c;                     r8 = (uint32_t)m8 & reduce_mask_26; c = (m8 >> 26);\n\tm9 += c;                     r9 = (uint32_t)m9 & reduce_mask_25; p = (uint32_t)(m9 >> 25);\n\tm0 = r0 + mul32x32_64(p,19); r0 = (uint32_t)m0 & reduce_mask_26; p = (uint32_t)(m0 >> 26);\n\tr1 += p;\n\n\tout[0] = r0;\n\tout[1] = r1;\n\tout[2] = r2;\n\tout[3] = r3;\n\tout[4] = r4;\n\tout[5] = r5;\n\tout[6] = r6;\n\tout[7] = r7;\n\tout[8] = r8;\n\tout[9] = r9;\n}\n\n/* out = in*in */\nstatic void\ncurve25519_square(bignum25519 out, const bignum25519 in) {\n\tuint32_t r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;\n\tuint32_t d6,d7,d8,d9;\n\tuint64_t m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,c;\n\tuint32_t p;\n\n\tr0 = in[0];\n\tr1 = in[1];\n\tr2 = in[2];\n\tr3 = in[3];\n\tr4 = in[4];\n\tr5 = in[5];\n\tr6 = in[6];\n\tr7 = in[7];\n\tr8 = in[8];\n\tr9 = in[9];\n\n\tm0 = mul32x32_64(r0, r0);\n\tr0 *= 2;\n\tm1 = mul32x32_64(r0, r1);\n\tm2 = mul32x32_64(r0, r2) + mul32x32_64(r1, r1 * 2);\n\tr1 *= 2;\n\tm3 = mul32x32_64(r0, r3) + mul32x32_64(r1, r2    );\n\tm4 = mul32x32_64(r0, r4) + mul32x32_64(r1, r3 * 2) + mul32x32_64(r2, r2);\n\tr2 *= 2;\n\tm5 = mul32x32_64(r0, r5) + mul32x32_64(r1, r4    ) + mul32x32_64(r2, r3);\n\tm6 = mul32x32_64(r0, r6) + mul32x32_64(r1, r5 * 2) + mul32x32_64(r2, r4) + mul32x32_64(r3, r3 * 2);\n\tr3 *= 2;\n\tm7 = mul32x32_64(r0, r7) + mul32x32_64(r1, r6    ) + mul32x32_64(r2, r5) + mul32x32_64(r3, r4    );\n\tm8 = mul32x32_64(r0, r8) + mul32x32_64(r1, r7 * 2) + mul32x32_64(r2, r6) + mul32x32_64(r3, r5 * 2) + mul32x32_64(r4, r4    );\n\tm9 = mul32x32_64(r0, r9) + mul32x32_64(r1, r8    ) + mul32x32_64(r2, r7) + mul32x32_64(r3, r6    ) + mul32x32_64(r4, r5 * 2);\n\n\td6 = r6 * 19;\n\td7 = r7 * 2 * 19;\n\td8 = r8 * 19;\n\td9 = r9 * 2 * 19;\n\n\tm0 += (mul32x32_64(d9, r1    ) + mul32x32_64(d8, r2    ) + mul32x32_64(d7, r3    ) + mul32x32_64(d6, r4 * 2) + mul32x32_64(r5, r5 * 2 * 19));\n\tm1 += (mul32x32_64(d9, r2 / 2) + mul32x32_64(d8, r3    ) + mul32x32_64(d7, r4    ) + mul32x32_64(d6, r5 * 2));\n\tm2 += (mul32x32_64(d9, r3    ) + mul32x32_64(d8, r4 * 2) + mul32x32_64(d7, r5 * 2) + mul32x32_64(d6, r6    ));\n\tm3 += (mul32x32_64(d9, r4    ) + mul32x32_64(d8, r5 * 2) + mul32x32_64(d7, r6    ));\n\tm4 += (mul32x32_64(d9, r5 * 2) + mul32x32_64(d8, r6 * 2) + mul32x32_64(d7, r7    ));\n\tm5 += (mul32x32_64(d9, r6    ) + mul32x32_64(d8, r7 * 2));\n\tm6 += (mul32x32_64(d9, r7 * 2) + mul32x32_64(d8, r8    ));\n\tm7 += (mul32x32_64(d9, r8    ));\n\tm8 += (mul32x32_64(d9, r9    ));\n\n\t                             r0 = (uint32_t)m0 & reduce_mask_26; c = (m0 >> 26);\n\tm1 += c;                     r1 = (uint32_t)m1 & reduce_mask_25; c = (m1 >> 25);\n\tm2 += c;                     r2 = (uint32_t)m2 & reduce_mask_26; c = (m2 >> 26);\n\tm3 += c;                     r3 = (uint32_t)m3 & reduce_mask_25; c = (m3 >> 25);\n\tm4 += c;                     r4 = (uint32_t)m4 & reduce_mask_26; c = (m4 >> 26);\n\tm5 += c;                     r5 = (uint32_t)m5 & reduce_mask_25; c = (m5 >> 25);\n\tm6 += c;                     r6 = (uint32_t)m6 & reduce_mask_26; c = (m6 >> 26);\n\tm7 += c;                     r7 = (uint32_t)m7 & reduce_mask_25; c = (m7 >> 25);\n\tm8 += c;                     r8 = (uint32_t)m8 & reduce_mask_26; c = (m8 >> 26);\n\tm9 += c;                     r9 = (uint32_t)m9 & reduce_mask_25; p = (uint32_t)(m9 >> 25);\n\tm0 = r0 + mul32x32_64(p,19); r0 = (uint32_t)m0 & reduce_mask_26; p = (uint32_t)(m0 >> 26);\n\tr1 += p;\n\n\tout[0] = r0;\n\tout[1] = r1;\n\tout[2] = r2;\n\tout[3] = r3;\n\tout[4] = r4;\n\tout[5] = r5;\n\tout[6] = r6;\n\tout[7] = r7;\n\tout[8] = r8;\n\tout[9] = r9;\n}\n\n\n/* out = in ^ (2 * count) */\nstatic void\ncurve25519_square_times(bignum25519 out, const bignum25519 in, int count) {\n\tuint32_t r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;\n\tuint32_t d6,d7,d8,d9;\n\tuint64_t m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,c;\n\tuint32_t p;\n\n\tr0 = in[0];\n\tr1 = in[1];\n\tr2 = in[2];\n\tr3 = in[3];\n\tr4 = in[4];\n\tr5 = in[5];\n\tr6 = in[6];\n\tr7 = in[7];\n\tr8 = in[8];\n\tr9 = in[9];\n\n\tdo {\n\t\tm0 = mul32x32_64(r0, r0);\n\t\tr0 *= 2;\n\t\tm1 = mul32x32_64(r0, r1);\n\t\tm2 = mul32x32_64(r0, r2) + mul32x32_64(r1, r1 * 2);\n\t\tr1 *= 2;\n\t\tm3 = mul32x32_64(r0, r3) + mul32x32_64(r1, r2    );\n\t\tm4 = mul32x32_64(r0, r4) + mul32x32_64(r1, r3 * 2) + mul32x32_64(r2, r2);\n\t\tr2 *= 2;\n\t\tm5 = mul32x32_64(r0, r5) + mul32x32_64(r1, r4    ) + mul32x32_64(r2, r3);\n\t\tm6 = mul32x32_64(r0, r6) + mul32x32_64(r1, r5 * 2) + mul32x32_64(r2, r4) + mul32x32_64(r3, r3 * 2);\n\t\tr3 *= 2;\n\t\tm7 = mul32x32_64(r0, r7) + mul32x32_64(r1, r6    ) + mul32x32_64(r2, r5) + mul32x32_64(r3, r4    );\n\t\tm8 = mul32x32_64(r0, r8) + mul32x32_64(r1, r7 * 2) + mul32x32_64(r2, r6) + mul32x32_64(r3, r5 * 2) + mul32x32_64(r4, r4    );\n\t\tm9 = mul32x32_64(r0, r9) + mul32x32_64(r1, r8    ) + mul32x32_64(r2, r7) + mul32x32_64(r3, r6    ) + mul32x32_64(r4, r5 * 2);\n\n\t\td6 = r6 * 19;\n\t\td7 = r7 * 2 * 19;\n\t\td8 = r8 * 19;\n\t\td9 = r9 * 2 * 19;\n\n\t\tm0 += (mul32x32_64(d9, r1    ) + mul32x32_64(d8, r2    ) + mul32x32_64(d7, r3    ) + mul32x32_64(d6, r4 * 2) + mul32x32_64(r5, r5 * 2 * 19));\n\t\tm1 += (mul32x32_64(d9, r2 / 2) + mul32x32_64(d8, r3    ) + mul32x32_64(d7, r4    ) + mul32x32_64(d6, r5 * 2));\n\t\tm2 += (mul32x32_64(d9, r3    ) + mul32x32_64(d8, r4 * 2) + mul32x32_64(d7, r5 * 2) + mul32x32_64(d6, r6    ));\n\t\tm3 += (mul32x32_64(d9, r4    ) + mul32x32_64(d8, r5 * 2) + mul32x32_64(d7, r6    ));\n\t\tm4 += (mul32x32_64(d9, r5 * 2) + mul32x32_64(d8, r6 * 2) + mul32x32_64(d7, r7    ));\n\t\tm5 += (mul32x32_64(d9, r6    ) + mul32x32_64(d8, r7 * 2));\n\t\tm6 += (mul32x32_64(d9, r7 * 2) + mul32x32_64(d8, r8    ));\n\t\tm7 += (mul32x32_64(d9, r8    ));\n\t\tm8 += (mul32x32_64(d9, r9    ));\n\n\t\t                             r0 = (uint32_t)m0 & reduce_mask_26; c = (m0 >> 26);\n\t\tm1 += c;                     r1 = (uint32_t)m1 & reduce_mask_25; c = (m1 >> 25);\n\t\tm2 += c;                     r2 = (uint32_t)m2 & reduce_mask_26; c = (m2 >> 26);\n\t\tm3 += c;                     r3 = (uint32_t)m3 & reduce_mask_25; c = (m3 >> 25);\n\t\tm4 += c;                     r4 = (uint32_t)m4 & reduce_mask_26; c = (m4 >> 26);\n\t\tm5 += c;                     r5 = (uint32_t)m5 & reduce_mask_25; c = (m5 >> 25);\n\t\tm6 += c;                     r6 = (uint32_t)m6 & reduce_mask_26; c = (m6 >> 26);\n\t\tm7 += c;                     r7 = (uint32_t)m7 & reduce_mask_25; c = (m7 >> 25);\n\t\tm8 += c;                     r8 = (uint32_t)m8 & reduce_mask_26; c = (m8 >> 26);\n\t\tm9 += c;                     r9 = (uint32_t)m9 & reduce_mask_25; p = (uint32_t)(m9 >> 25);\n\t\tm0 = r0 + mul32x32_64(p,19); r0 = (uint32_t)m0 & reduce_mask_26; p = (uint32_t)(m0 >> 26);\n\t\tr1 += p;\n\t} while (--count);\n\n\tout[0] = r0;\n\tout[1] = r1;\n\tout[2] = r2;\n\tout[3] = r3;\n\tout[4] = r4;\n\tout[5] = r5;\n\tout[6] = r6;\n\tout[7] = r7;\n\tout[8] = r8;\n\tout[9] = r9;\n}\n\n/* Take a little-endian, 32-byte number and expand it into polynomial form */\nstatic void\ncurve25519_expand(bignum25519 out, const unsigned char in[32]) {\n\tstatic const union { uint8_t b[2]; uint16_t s; } endian_check = {{1,0}};\n\tuint32_t x0,x1,x2,x3,x4,x5,x6,x7;\n\n\tif (endian_check.s == 1) {\n\t\tx0 = *(uint32_t *)(in + 0);\n\t\tx1 = *(uint32_t *)(in + 4);\n\t\tx2 = *(uint32_t *)(in + 8);\n\t\tx3 = *(uint32_t *)(in + 12);\n\t\tx4 = *(uint32_t *)(in + 16);\n\t\tx5 = *(uint32_t *)(in + 20);\n\t\tx6 = *(uint32_t *)(in + 24);\n\t\tx7 = *(uint32_t *)(in + 28);\n    } else {\n\t\t#define F(s)                         \\\n\t\t\t((((uint32_t)in[s + 0])      ) | \\\n\t\t\t (((uint32_t)in[s + 1]) <<  8) | \\\n\t\t\t (((uint32_t)in[s + 2]) << 16) | \\\n\t\t\t (((uint32_t)in[s + 3]) << 24))\n\t\tx0 = F(0);\n\t\tx1 = F(4);\n\t\tx2 = F(8);\n\t\tx3 = F(12);\n\t\tx4 = F(16);\n\t\tx5 = F(20);\n\t\tx6 = F(24);\n\t\tx7 = F(28);\n\t\t#undef F\n\t}\n\n\tout[0] = (                        x0       ) & 0x3ffffff;\n\tout[1] = ((((uint64_t)x1 << 32) | x0) >> 26) & 0x1ffffff;\n\tout[2] = ((((uint64_t)x2 << 32) | x1) >> 19) & 0x3ffffff;\n\tout[3] = ((((uint64_t)x3 << 32) | x2) >> 13) & 0x1ffffff;\n\tout[4] = ((                       x3) >>  6) & 0x3ffffff;\n\tout[5] = (                        x4       ) & 0x1ffffff;\n\tout[6] = ((((uint64_t)x5 << 32) | x4) >> 25) & 0x3ffffff;\n\tout[7] = ((((uint64_t)x6 << 32) | x5) >> 19) & 0x1ffffff;\n\tout[8] = ((((uint64_t)x7 << 32) | x6) >> 12) & 0x3ffffff;\n\tout[9] = ((                       x7) >>  6) & 0x1ffffff;\n}\n\n/* Take a fully reduced polynomial form number and contract it into a\n * little-endian, 32-byte array\n */\nstatic void\ncurve25519_contract(unsigned char out[32], const bignum25519 in) {\n\tbignum25519 f;\n\tcurve25519_copy(f, in);\n\n\t#define carry_pass() \\\n\t\tf[1] += f[0] >> 26; f[0] &= reduce_mask_26; \\\n\t\tf[2] += f[1] >> 25; f[1] &= reduce_mask_25; \\\n\t\tf[3] += f[2] >> 26; f[2] &= reduce_mask_26; \\\n\t\tf[4] += f[3] >> 25; f[3] &= reduce_mask_25; \\\n\t\tf[5] += f[4] >> 26; f[4] &= reduce_mask_26; \\\n\t\tf[6] += f[5] >> 25; f[5] &= reduce_mask_25; \\\n\t\tf[7] += f[6] >> 26; f[6] &= reduce_mask_26; \\\n\t\tf[8] += f[7] >> 25; f[7] &= reduce_mask_25; \\\n\t\tf[9] += f[8] >> 26; f[8] &= reduce_mask_26;\n\n\t#define carry_pass_full() \\\n\t\tcarry_pass() \\\n\t\tf[0] += 19 * (f[9] >> 25); f[9] &= reduce_mask_25;\n\n\t#define carry_pass_final() \\\n\t\tcarry_pass() \\\n\t\tf[9] &= reduce_mask_25;\n\n\tcarry_pass_full()\n\tcarry_pass_full()\n\n\t/* now t is between 0 and 2^255-1, properly carried. */\n\t/* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */\n\tf[0] += 19;\n\tcarry_pass_full()\n\n\t/* now between 19 and 2^255-1 in both cases, and offset by 19. */\n\tf[0] += (reduce_mask_26 + 1) - 19;\n\tf[1] += (reduce_mask_25 + 1) - 1;\n\tf[2] += (reduce_mask_26 + 1) - 1;\n\tf[3] += (reduce_mask_25 + 1) - 1;\n\tf[4] += (reduce_mask_26 + 1) - 1;\n\tf[5] += (reduce_mask_25 + 1) - 1;\n\tf[6] += (reduce_mask_26 + 1) - 1;\n\tf[7] += (reduce_mask_25 + 1) - 1;\n\tf[8] += (reduce_mask_26 + 1) - 1;\n\tf[9] += (reduce_mask_25 + 1) - 1;\n\n\t/* now between 2^255 and 2^256-20, and offset by 2^255. */\n\tcarry_pass_final()\n\n\t#undef carry_pass\n\t#undef carry_full\n\t#undef carry_final\n\n\tf[1] <<= 2;\n\tf[2] <<= 3;\n\tf[3] <<= 5;\n\tf[4] <<= 6;\n\tf[6] <<= 1;\n\tf[7] <<= 3;\n\tf[8] <<= 4;\n\tf[9] <<= 6;\n\n\t#define F(i, s) \\\n\t\tout[s+0] |= (unsigned char )(f[i] & 0xff); \\\n\t\tout[s+1] = (unsigned char )((f[i] >> 8) & 0xff); \\\n\t\tout[s+2] = (unsigned char )((f[i] >> 16) & 0xff); \\\n\t\tout[s+3] = (unsigned char )((f[i] >> 24) & 0xff);\n\n\tout[0] = 0;\n\tout[16] = 0;\n\tF(0,0);\n\tF(1,3);\n\tF(2,6);\n\tF(3,9);\n\tF(4,12);\n\tF(5,16);\n\tF(6,19);\n\tF(7,22);\n\tF(8,25);\n\tF(9,28);\n\t#undef F\n}\n\n\n/* out = (flag) ? in : out */\nDONNA_INLINE static void\ncurve25519_move_conditional_bytes(uint8_t out[96], const uint8_t in[96], uint32_t flag) {\n\tconst uint32_t nb = flag - 1, b = ~nb;\n\tconst uint32_t *inl = (const uint32_t *)in;\n\tuint32_t *outl = (uint32_t *)out;\n\toutl[0] = (outl[0] & nb) | (inl[0] & b);\n\toutl[1] = (outl[1] & nb) | (inl[1] & b);\n\toutl[2] = (outl[2] & nb) | (inl[2] & b);\n\toutl[3] = (outl[3] & nb) | (inl[3] & b);\n\toutl[4] = (outl[4] & nb) | (inl[4] & b);\n\toutl[5] = (outl[5] & nb) | (inl[5] & b);\n\toutl[6] = (outl[6] & nb) | (inl[6] & b);\n\toutl[7] = (outl[7] & nb) | (inl[7] & b);\n\toutl[8] = (outl[8] & nb) | (inl[8] & b);\n\toutl[9] = (outl[9] & nb) | (inl[9] & b);\n\toutl[10] = (outl[10] & nb) | (inl[10] & b);\n\toutl[11] = (outl[11] & nb) | (inl[11] & b);\n\toutl[12] = (outl[12] & nb) | (inl[12] & b);\n\toutl[13] = (outl[13] & nb) | (inl[13] & b);\n\toutl[14] = (outl[14] & nb) | (inl[14] & b);\n\toutl[15] = (outl[15] & nb) | (inl[15] & b);\n\toutl[16] = (outl[16] & nb) | (inl[16] & b);\n\toutl[17] = (outl[17] & nb) | (inl[17] & b);\n\toutl[18] = (outl[18] & nb) | (inl[18] & b);\n\toutl[19] = (outl[19] & nb) | (inl[19] & b);\n\toutl[20] = (outl[20] & nb) | (inl[20] & b);\n\toutl[21] = (outl[21] & nb) | (inl[21] & b);\n\toutl[22] = (outl[22] & nb) | (inl[22] & b);\n\toutl[23] = (outl[23] & nb) | (inl[23] & b);\n\n}\n\n/* if (iswap) swap(a, b) */\nDONNA_INLINE static void\ncurve25519_swap_conditional(bignum25519 a, bignum25519 b, uint32_t iswap) {\n\tconst uint32_t swap = (uint32_t)(-(int32_t)iswap);\n\tuint32_t x0,x1,x2,x3,x4,x5,x6,x7,x8,x9;\n\n\tx0 = swap & (a[0] ^ b[0]); a[0] ^= x0; b[0] ^= x0;\n\tx1 = swap & (a[1] ^ b[1]); a[1] ^= x1; b[1] ^= x1;\n\tx2 = swap & (a[2] ^ b[2]); a[2] ^= x2; b[2] ^= x2;\n\tx3 = swap & (a[3] ^ b[3]); a[3] ^= x3; b[3] ^= x3;\n\tx4 = swap & (a[4] ^ b[4]); a[4] ^= x4; b[4] ^= x4;\n\tx5 = swap & (a[5] ^ b[5]); a[5] ^= x5; b[5] ^= x5;\n\tx6 = swap & (a[6] ^ b[6]); a[6] ^= x6; b[6] ^= x6;\n\tx7 = swap & (a[7] ^ b[7]); a[7] ^= x7; b[7] ^= x7;\n\tx8 = swap & (a[8] ^ b[8]); a[8] ^= x8; b[8] ^= x8;\n\tx9 = swap & (a[9] ^ b[9]); a[9] ^= x9; b[9] ^= x9;\n}\n"
  },
  {
    "path": "src/crypto/ed25519/curve25519-donna-64bit.h",
    "content": "/*\n\tPublic domain by Adam Langley <agl@imperialviolet.org> &\n\t                 Andrew M. <liquidsun@gmail.com>\n\tSee: https://github.com/floodyberry/curve25519-donna\n\n\t64bit integer curve25519 implementation\n*/\n\ntypedef uint64_t bignum25519[5];\n\nstatic const uint64_t reduce_mask_40 = ((uint64_t)1 << 40) - 1;\nstatic const uint64_t reduce_mask_51 = ((uint64_t)1 << 51) - 1;\nstatic const uint64_t reduce_mask_56 = ((uint64_t)1 << 56) - 1;\n\n/* out = in */\nDONNA_INLINE static void\ncurve25519_copy(bignum25519 out, const bignum25519 in) {\n\tout[0] = in[0];\n\tout[1] = in[1];\n\tout[2] = in[2];\n\tout[3] = in[3];\n\tout[4] = in[4];\n}\n\n/* out = a + b */\nDONNA_INLINE static void\ncurve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tout[0] = a[0] + b[0];\n\tout[1] = a[1] + b[1];\n\tout[2] = a[2] + b[2];\n\tout[3] = a[3] + b[3];\n\tout[4] = a[4] + b[4];\n}\n\n/* out = a + b, where a and/or b are the result of a basic op (add,sub) */\nDONNA_INLINE static void\ncurve25519_add_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tout[0] = a[0] + b[0];\n\tout[1] = a[1] + b[1];\n\tout[2] = a[2] + b[2];\n\tout[3] = a[3] + b[3];\n\tout[4] = a[4] + b[4];\n}\n\nDONNA_INLINE static void\ncurve25519_add_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint64_t c;\n\tout[0] = a[0] + b[0]    ; c = (out[0] >> 51); out[0] &= reduce_mask_51;\n\tout[1] = a[1] + b[1] + c; c = (out[1] >> 51); out[1] &= reduce_mask_51;\n\tout[2] = a[2] + b[2] + c; c = (out[2] >> 51); out[2] &= reduce_mask_51;\n\tout[3] = a[3] + b[3] + c; c = (out[3] >> 51); out[3] &= reduce_mask_51;\n\tout[4] = a[4] + b[4] + c; c = (out[4] >> 51); out[4] &= reduce_mask_51;\n\tout[0] += c * 19;\n}\n\n/* multiples of p */\nstatic const uint64_t twoP0      = 0x0fffffffffffda;\nstatic const uint64_t twoP1234   = 0x0ffffffffffffe;\nstatic const uint64_t fourP0     = 0x1fffffffffffb4;\nstatic const uint64_t fourP1234  = 0x1ffffffffffffc;\n\n/* out = a - b */\nDONNA_INLINE static void\ncurve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tout[0] = a[0] + twoP0    - b[0];\n\tout[1] = a[1] + twoP1234 - b[1];\n\tout[2] = a[2] + twoP1234 - b[2];\n\tout[3] = a[3] + twoP1234 - b[3];\n\tout[4] = a[4] + twoP1234 - b[4];\n}\n\n/* out = a - b, where a and/or b are the result of a basic op (add,sub) */\nDONNA_INLINE static void\ncurve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tout[0] = a[0] + fourP0    - b[0];\n\tout[1] = a[1] + fourP1234 - b[1];\n\tout[2] = a[2] + fourP1234 - b[2];\n\tout[3] = a[3] + fourP1234 - b[3];\n\tout[4] = a[4] + fourP1234 - b[4];\n}\n\nDONNA_INLINE static void\ncurve25519_sub_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\tuint64_t c;\n\tout[0] = a[0] + fourP0    - b[0]    ; c = (out[0] >> 51); out[0] &= reduce_mask_51;\n\tout[1] = a[1] + fourP1234 - b[1] + c; c = (out[1] >> 51); out[1] &= reduce_mask_51;\n\tout[2] = a[2] + fourP1234 - b[2] + c; c = (out[2] >> 51); out[2] &= reduce_mask_51;\n\tout[3] = a[3] + fourP1234 - b[3] + c; c = (out[3] >> 51); out[3] &= reduce_mask_51;\n\tout[4] = a[4] + fourP1234 - b[4] + c; c = (out[4] >> 51); out[4] &= reduce_mask_51;\n\tout[0] += c * 19;\n}\n\n/* out = -a */\nDONNA_INLINE static void\ncurve25519_neg(bignum25519 out, const bignum25519 a) {\n\tuint64_t c;\n\tout[0] = twoP0    - a[0]    ; c = (out[0] >> 51); out[0] &= reduce_mask_51;\n\tout[1] = twoP1234 - a[1] + c; c = (out[1] >> 51); out[1] &= reduce_mask_51;\n\tout[2] = twoP1234 - a[2] + c; c = (out[2] >> 51); out[2] &= reduce_mask_51;\n\tout[3] = twoP1234 - a[3] + c; c = (out[3] >> 51); out[3] &= reduce_mask_51;\n\tout[4] = twoP1234 - a[4] + c; c = (out[4] >> 51); out[4] &= reduce_mask_51;\n\tout[0] += c * 19;\n}\n\n/* out = a * b */\nDONNA_INLINE static void\ncurve25519_mul(bignum25519 out, const bignum25519 in2, const bignum25519 in) {\n#if !defined(HAVE_NATIVE_UINT128)\n\tuint128_t mul;\n#endif\n\tuint128_t t[5];\n\tuint64_t r0,r1,r2,r3,r4,s0,s1,s2,s3,s4,c;\n\n\tr0 = in[0];\n\tr1 = in[1];\n\tr2 = in[2];\n\tr3 = in[3];\n\tr4 = in[4];\n\n\ts0 = in2[0];\n\ts1 = in2[1];\n\ts2 = in2[2];\n\ts3 = in2[3];\n\ts4 = in2[4];\n\n#if defined(HAVE_NATIVE_UINT128)\n\tt[0]  =  ((uint128_t) r0) * s0;\n\tt[1]  =  ((uint128_t) r0) * s1 + ((uint128_t) r1) * s0;\n\tt[2]  =  ((uint128_t) r0) * s2 + ((uint128_t) r2) * s0 + ((uint128_t) r1) * s1;\n\tt[3]  =  ((uint128_t) r0) * s3 + ((uint128_t) r3) * s0 + ((uint128_t) r1) * s2 + ((uint128_t) r2) * s1;\n\tt[4]  =  ((uint128_t) r0) * s4 + ((uint128_t) r4) * s0 + ((uint128_t) r3) * s1 + ((uint128_t) r1) * s3 + ((uint128_t) r2) * s2;\n#else\n\tmul64x64_128(t[0], r0, s0)\n\tmul64x64_128(t[1], r0, s1) mul64x64_128(mul, r1, s0) add128(t[1], mul)\n\tmul64x64_128(t[2], r0, s2) mul64x64_128(mul, r2, s0) add128(t[2], mul) mul64x64_128(mul, r1, s1) add128(t[2], mul)\n\tmul64x64_128(t[3], r0, s3) mul64x64_128(mul, r3, s0) add128(t[3], mul) mul64x64_128(mul, r1, s2) add128(t[3], mul) mul64x64_128(mul, r2, s1) add128(t[3], mul)\n\tmul64x64_128(t[4], r0, s4) mul64x64_128(mul, r4, s0) add128(t[4], mul) mul64x64_128(mul, r3, s1) add128(t[4], mul) mul64x64_128(mul, r1, s3) add128(t[4], mul) mul64x64_128(mul, r2, s2) add128(t[4], mul)\n#endif\n\n\tr1 *= 19;\n\tr2 *= 19;\n\tr3 *= 19;\n\tr4 *= 19;\n\n#if defined(HAVE_NATIVE_UINT128)\n\tt[0] += ((uint128_t) r4) * s1 + ((uint128_t) r1) * s4 + ((uint128_t) r2) * s3 + ((uint128_t) r3) * s2;\n\tt[1] += ((uint128_t) r4) * s2 + ((uint128_t) r2) * s4 + ((uint128_t) r3) * s3;\n\tt[2] += ((uint128_t) r4) * s3 + ((uint128_t) r3) * s4;\n\tt[3] += ((uint128_t) r4) * s4;\n#else\n\tmul64x64_128(mul, r4, s1) add128(t[0], mul) mul64x64_128(mul, r1, s4) add128(t[0], mul) mul64x64_128(mul, r2, s3) add128(t[0], mul) mul64x64_128(mul, r3, s2) add128(t[0], mul)\n\tmul64x64_128(mul, r4, s2) add128(t[1], mul) mul64x64_128(mul, r2, s4) add128(t[1], mul) mul64x64_128(mul, r3, s3) add128(t[1], mul)\n\tmul64x64_128(mul, r4, s3) add128(t[2], mul) mul64x64_128(mul, r3, s4) add128(t[2], mul)\n\tmul64x64_128(mul, r4, s4) add128(t[3], mul)\n#endif\n\n\n\t                     r0 = lo128(t[0]) & reduce_mask_51; shr128(c, t[0], 51);\n\tadd128_64(t[1], c)   r1 = lo128(t[1]) & reduce_mask_51; shr128(c, t[1], 51);\n\tadd128_64(t[2], c)   r2 = lo128(t[2]) & reduce_mask_51; shr128(c, t[2], 51);\n\tadd128_64(t[3], c)   r3 = lo128(t[3]) & reduce_mask_51; shr128(c, t[3], 51);\n\tadd128_64(t[4], c)   r4 = lo128(t[4]) & reduce_mask_51; shr128(c, t[4], 51);\n\tr0 +=   c * 19; c = r0 >> 51; r0 = r0 & reduce_mask_51;\n\tr1 +=   c;\n\n\tout[0] = r0;\n\tout[1] = r1;\n\tout[2] = r2;\n\tout[3] = r3;\n\tout[4] = r4;\n}\n\nDONNA_NOINLINE static void\ncurve25519_mul_noinline(bignum25519 out, const bignum25519 in2, const bignum25519 in) {\n\tcurve25519_mul(out, in2, in);\n}\n\n/* out = in^(2 * count) */\nDONNA_NOINLINE static void\ncurve25519_square_times(bignum25519 out, const bignum25519 in, uint64_t count) {\n#if !defined(HAVE_NATIVE_UINT128)\n\tuint128_t mul;\n#endif\n\tuint128_t t[5];\n\tuint64_t r0,r1,r2,r3,r4,c;\n\tuint64_t d0,d1,d2,d4,d419;\n\n\tr0 = in[0];\n\tr1 = in[1];\n\tr2 = in[2];\n\tr3 = in[3];\n\tr4 = in[4];\n\n\tdo {\n\t\td0 = r0 * 2;\n\t\td1 = r1 * 2;\n\t\td2 = r2 * 2 * 19;\n\t\td419 = r4 * 19;\n\t\td4 = d419 * 2;\n\n#if defined(HAVE_NATIVE_UINT128)\n\t\tt[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));\n\t\tt[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));\n\t\tt[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));\n\t\tt[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));\n\t\tt[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));\n#else\n\t\tmul64x64_128(t[0], r0, r0) mul64x64_128(mul, d4, r1) add128(t[0], mul) mul64x64_128(mul, d2,      r3) add128(t[0], mul)\n\t\tmul64x64_128(t[1], d0, r1) mul64x64_128(mul, d4, r2) add128(t[1], mul) mul64x64_128(mul, r3, r3 * 19) add128(t[1], mul)\n\t\tmul64x64_128(t[2], d0, r2) mul64x64_128(mul, r1, r1) add128(t[2], mul) mul64x64_128(mul, d4,      r3) add128(t[2], mul)\n\t\tmul64x64_128(t[3], d0, r3) mul64x64_128(mul, d1, r2) add128(t[3], mul) mul64x64_128(mul, r4,    d419) add128(t[3], mul)\n\t\tmul64x64_128(t[4], d0, r4) mul64x64_128(mul, d1, r3) add128(t[4], mul) mul64x64_128(mul, r2,      r2) add128(t[4], mul)\n#endif\n\n\t\tr0 = lo128(t[0]) & reduce_mask_51;\n\t\tr1 = lo128(t[1]) & reduce_mask_51; shl128(c, t[0], 13); r1 += c;\n\t\tr2 = lo128(t[2]) & reduce_mask_51; shl128(c, t[1], 13); r2 += c;\n\t\tr3 = lo128(t[3]) & reduce_mask_51; shl128(c, t[2], 13); r3 += c;\n\t\tr4 = lo128(t[4]) & reduce_mask_51; shl128(c, t[3], 13); r4 += c; \n\t\t                                   shl128(c, t[4], 13); r0 += c * 19;\n\t\t               c = r0 >> 51; r0 &= reduce_mask_51;\n\t\tr1 += c     ;  c = r1 >> 51; r1 &= reduce_mask_51;\n\t\tr2 += c     ;  c = r2 >> 51; r2 &= reduce_mask_51;\n\t\tr3 += c     ;  c = r3 >> 51; r3 &= reduce_mask_51;\n\t\tr4 += c     ;  c = r4 >> 51; r4 &= reduce_mask_51;\n\t\tr0 += c * 19;\n\t} while(--count);\n\n\tout[0] = r0;\n\tout[1] = r1;\n\tout[2] = r2;\n\tout[3] = r3;\n\tout[4] = r4;\n}\n\nDONNA_INLINE static void\ncurve25519_square(bignum25519 out, const bignum25519 in) {\n#if !defined(HAVE_NATIVE_UINT128)\n\tuint128_t mul;\n#endif\n\tuint128_t t[5];\n\tuint64_t r0,r1,r2,r3,r4,c;\n\tuint64_t d0,d1,d2,d4,d419;\n\n\tr0 = in[0];\n\tr1 = in[1];\n\tr2 = in[2];\n\tr3 = in[3];\n\tr4 = in[4];\n\n\td0 = r0 * 2;\n\td1 = r1 * 2;\n\td2 = r2 * 2 * 19;\n\td419 = r4 * 19;\n\td4 = d419 * 2;\n\n#if defined(HAVE_NATIVE_UINT128)\n\tt[0] = ((uint128_t) r0) * r0 + ((uint128_t) d4) * r1 + (((uint128_t) d2) * (r3     ));\n\tt[1] = ((uint128_t) d0) * r1 + ((uint128_t) d4) * r2 + (((uint128_t) r3) * (r3 * 19));\n\tt[2] = ((uint128_t) d0) * r2 + ((uint128_t) r1) * r1 + (((uint128_t) d4) * (r3     ));\n\tt[3] = ((uint128_t) d0) * r3 + ((uint128_t) d1) * r2 + (((uint128_t) r4) * (d419   ));\n\tt[4] = ((uint128_t) d0) * r4 + ((uint128_t) d1) * r3 + (((uint128_t) r2) * (r2     ));\n#else\n\tmul64x64_128(t[0], r0, r0) mul64x64_128(mul, d4, r1) add128(t[0], mul) mul64x64_128(mul, d2,      r3) add128(t[0], mul)\n\tmul64x64_128(t[1], d0, r1) mul64x64_128(mul, d4, r2) add128(t[1], mul) mul64x64_128(mul, r3, r3 * 19) add128(t[1], mul)\n\tmul64x64_128(t[2], d0, r2) mul64x64_128(mul, r1, r1) add128(t[2], mul) mul64x64_128(mul, d4,      r3) add128(t[2], mul)\n\tmul64x64_128(t[3], d0, r3) mul64x64_128(mul, d1, r2) add128(t[3], mul) mul64x64_128(mul, r4,    d419) add128(t[3], mul)\n\tmul64x64_128(t[4], d0, r4) mul64x64_128(mul, d1, r3) add128(t[4], mul) mul64x64_128(mul, r2,      r2) add128(t[4], mul)\n#endif\n\n\t                     r0 = lo128(t[0]) & reduce_mask_51; shr128(c, t[0], 51);\n\tadd128_64(t[1], c)   r1 = lo128(t[1]) & reduce_mask_51; shr128(c, t[1], 51);\n\tadd128_64(t[2], c)   r2 = lo128(t[2]) & reduce_mask_51; shr128(c, t[2], 51);\n\tadd128_64(t[3], c)   r3 = lo128(t[3]) & reduce_mask_51; shr128(c, t[3], 51);\n\tadd128_64(t[4], c)   r4 = lo128(t[4]) & reduce_mask_51; shr128(c, t[4], 51);\n\tr0 +=   c * 19; c = r0 >> 51; r0 = r0 & reduce_mask_51;\n\tr1 +=   c;\n\n\tout[0] = r0;\n\tout[1] = r1;\n\tout[2] = r2;\n\tout[3] = r3;\n\tout[4] = r4;\n}\n\n/* Take a little-endian, 32-byte number and expand it into polynomial form */\nDONNA_INLINE static void\ncurve25519_expand(bignum25519 out, const unsigned char *in) {\n\tstatic const union { uint8_t b[2]; uint16_t s; } endian_check = {{1,0}};\n\tuint64_t x0,x1,x2,x3;\n\n\tif (endian_check.s == 1) {\n\t\tx0 = *(uint64_t *)(in + 0);\n\t\tx1 = *(uint64_t *)(in + 8);\n\t\tx2 = *(uint64_t *)(in + 16);\n\t\tx3 = *(uint64_t *)(in + 24);\n\t} else {\n\t\t#define F(s)                         \\\n\t\t\t((((uint64_t)in[s + 0])      ) | \\\n\t\t\t (((uint64_t)in[s + 1]) <<  8) | \\\n\t\t\t (((uint64_t)in[s + 2]) << 16) | \\\n\t\t\t (((uint64_t)in[s + 3]) << 24) | \\\n\t\t\t (((uint64_t)in[s + 4]) << 32) | \\\n\t\t\t (((uint64_t)in[s + 5]) << 40) | \\\n\t\t\t (((uint64_t)in[s + 6]) << 48) | \\\n\t\t\t (((uint64_t)in[s + 7]) << 56))\n\n\t\tx0 = F(0);\n\t\tx1 = F(8);\n\t\tx2 = F(16);\n\t\tx3 = F(24);\n\t}\n\n\tout[0] = x0 & reduce_mask_51; x0 = (x0 >> 51) | (x1 << 13);\n\tout[1] = x0 & reduce_mask_51; x1 = (x1 >> 38) | (x2 << 26);\n\tout[2] = x1 & reduce_mask_51; x2 = (x2 >> 25) | (x3 << 39);\n\tout[3] = x2 & reduce_mask_51; x3 = (x3 >> 12);\n\tout[4] = x3 & reduce_mask_51;\n}\n\n/* Take a fully reduced polynomial form number and contract it into a\n * little-endian, 32-byte array\n */\nDONNA_INLINE static void\ncurve25519_contract(unsigned char *out, const bignum25519 input) {\n\tuint64_t t[5];\n\tuint64_t f, i;\n\n\tt[0] = input[0];\n\tt[1] = input[1];\n\tt[2] = input[2];\n\tt[3] = input[3];\n\tt[4] = input[4];\n\n\t#define curve25519_contract_carry() \\\n\t\tt[1] += t[0] >> 51; t[0] &= reduce_mask_51; \\\n\t\tt[2] += t[1] >> 51; t[1] &= reduce_mask_51; \\\n\t\tt[3] += t[2] >> 51; t[2] &= reduce_mask_51; \\\n\t\tt[4] += t[3] >> 51; t[3] &= reduce_mask_51;\n\n\t#define curve25519_contract_carry_full() curve25519_contract_carry() \\\n\t\tt[0] += 19 * (t[4] >> 51); t[4] &= reduce_mask_51;\n\n\t#define curve25519_contract_carry_final() curve25519_contract_carry() \\\n\t\tt[4] &= reduce_mask_51;\n\n\tcurve25519_contract_carry_full()\n\tcurve25519_contract_carry_full()\n\n\t/* now t is between 0 and 2^255-1, properly carried. */\n\t/* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */\n\tt[0] += 19;\n\tcurve25519_contract_carry_full()\n\n\t/* now between 19 and 2^255-1 in both cases, and offset by 19. */\n\tt[0] += (reduce_mask_51 + 1) - 19;\n\tt[1] += (reduce_mask_51 + 1) - 1;\n\tt[2] += (reduce_mask_51 + 1) - 1;\n\tt[3] += (reduce_mask_51 + 1) - 1;\n\tt[4] += (reduce_mask_51 + 1) - 1;\n\n\t/* now between 2^255 and 2^256-20, and offset by 2^255. */\n\tcurve25519_contract_carry_final()\n\n\t#define write51full(n,shift) \\\n\t\tf = ((t[n] >> shift) | (t[n+1] << (51 - shift))); \\\n\t\tfor (i = 0; i < 8; i++, f >>= 8) *out++ = (unsigned char)f;\n\t#define write51(n) write51full(n,13*n)\n\twrite51(0)\n\twrite51(1)\n\twrite51(2)\n\twrite51(3)\n}\n\n#if !defined(ED25519_GCC_64BIT_CHOOSE)\n\n/* out = (flag) ? in : out */\nDONNA_INLINE static void\ncurve25519_move_conditional_bytes(uint8_t out[96], const uint8_t in[96], uint64_t flag) {\n\tconst uint64_t nb = flag - 1, b = ~nb;\n\tconst uint64_t *inq = (const uint64_t *)in;\n\tuint64_t *outq = (uint64_t *)out;\n\toutq[0] = (outq[0] & nb) | (inq[0] & b);\n\toutq[1] = (outq[1] & nb) | (inq[1] & b);\n\toutq[2] = (outq[2] & nb) | (inq[2] & b);\n\toutq[3] = (outq[3] & nb) | (inq[3] & b);\n\toutq[4] = (outq[4] & nb) | (inq[4] & b);\n\toutq[5] = (outq[5] & nb) | (inq[5] & b);\n\toutq[6] = (outq[6] & nb) | (inq[6] & b);\n\toutq[7] = (outq[7] & nb) | (inq[7] & b);\n\toutq[8] = (outq[8] & nb) | (inq[8] & b);\n\toutq[9] = (outq[9] & nb) | (inq[9] & b);\n\toutq[10] = (outq[10] & nb) | (inq[10] & b);\n\toutq[11] = (outq[11] & nb) | (inq[11] & b);\n}\n\n/* if (iswap) swap(a, b) */\nDONNA_INLINE static void\ncurve25519_swap_conditional(bignum25519 a, bignum25519 b, uint64_t iswap) {\n\tconst uint64_t swap = (uint64_t)(-(int64_t)iswap);\n\tuint64_t x0,x1,x2,x3,x4;\n\n\tx0 = swap & (a[0] ^ b[0]); a[0] ^= x0; b[0] ^= x0;\n\tx1 = swap & (a[1] ^ b[1]); a[1] ^= x1; b[1] ^= x1;\n\tx2 = swap & (a[2] ^ b[2]); a[2] ^= x2; b[2] ^= x2;\n\tx3 = swap & (a[3] ^ b[3]); a[3] ^= x3; b[3] ^= x3;\n\tx4 = swap & (a[4] ^ b[4]); a[4] ^= x4; b[4] ^= x4;\n}\n\n#endif /* ED25519_GCC_64BIT_CHOOSE */\n\n#define ED25519_64BIT_TABLES\n\n"
  },
  {
    "path": "src/crypto/ed25519/curve25519-donna-helpers.h",
    "content": "/*\n\tPublic domain by Andrew M. <liquidsun@gmail.com>\n\tSee: https://github.com/floodyberry/curve25519-donna\n\n\tCurve25519 implementation agnostic helpers\n*/\n\n/*\n * In:  b =   2^5 - 2^0\n * Out: b = 2^250 - 2^0\n */\nstatic void\ncurve25519_pow_two5mtwo0_two250mtwo0(bignum25519 b) {\n\tbignum25519 ALIGN(16) t0,c;\n\n\t/* 2^5  - 2^0 */ /* b */\n\t/* 2^10 - 2^5 */ curve25519_square_times(t0, b, 5);\n\t/* 2^10 - 2^0 */ curve25519_mul_noinline(b, t0, b);\n\t/* 2^20 - 2^10 */ curve25519_square_times(t0, b, 10);\n\t/* 2^20 - 2^0 */ curve25519_mul_noinline(c, t0, b);\n\t/* 2^40 - 2^20 */ curve25519_square_times(t0, c, 20);\n\t/* 2^40 - 2^0 */ curve25519_mul_noinline(t0, t0, c);\n\t/* 2^50 - 2^10 */ curve25519_square_times(t0, t0, 10);\n\t/* 2^50 - 2^0 */ curve25519_mul_noinline(b, t0, b);\n\t/* 2^100 - 2^50 */ curve25519_square_times(t0, b, 50);\n\t/* 2^100 - 2^0 */ curve25519_mul_noinline(c, t0, b);\n\t/* 2^200 - 2^100 */ curve25519_square_times(t0, c, 100);\n\t/* 2^200 - 2^0 */ curve25519_mul_noinline(t0, t0, c);\n\t/* 2^250 - 2^50 */ curve25519_square_times(t0, t0, 50);\n\t/* 2^250 - 2^0 */ curve25519_mul_noinline(b, t0, b);\n}\n\n/*\n * z^(p - 2) = z(2^255 - 21)\n */\nstatic void\ncurve25519_recip(bignum25519 out, const bignum25519 z) {\n\tbignum25519 ALIGN(16) a,t0,b;\n\n\t/* 2 */ curve25519_square_times(a, z, 1); /* a = 2 */\n\t/* 8 */ curve25519_square_times(t0, a, 2);\n\t/* 9 */ curve25519_mul_noinline(b, t0, z); /* b = 9 */\n\t/* 11 */ curve25519_mul_noinline(a, b, a); /* a = 11 */\n\t/* 22 */ curve25519_square_times(t0, a, 1);\n\t/* 2^5 - 2^0 = 31 */ curve25519_mul_noinline(b, t0, b);\n\t/* 2^250 - 2^0 */ curve25519_pow_two5mtwo0_two250mtwo0(b);\n\t/* 2^255 - 2^5 */ curve25519_square_times(b, b, 5);\n\t/* 2^255 - 21 */ curve25519_mul_noinline(out, b, a);\n}\n\n/*\n * z^((p-5)/8) = z^(2^252 - 3)\n */\nstatic void\ncurve25519_pow_two252m3(bignum25519 two252m3, const bignum25519 z) {\n\tbignum25519 ALIGN(16) b,c,t0;\n\n\t/* 2 */ curve25519_square_times(c, z, 1); /* c = 2 */\n\t/* 8 */ curve25519_square_times(t0, c, 2); /* t0 = 8 */\n\t/* 9 */ curve25519_mul_noinline(b, t0, z); /* b = 9 */\n\t/* 11 */ curve25519_mul_noinline(c, b, c); /* c = 11 */\n\t/* 22 */ curve25519_square_times(t0, c, 1);\n\t/* 2^5 - 2^0 = 31 */ curve25519_mul_noinline(b, t0, b);\n\t/* 2^250 - 2^0 */ curve25519_pow_two5mtwo0_two250mtwo0(b);\n\t/* 2^252 - 2^2 */ curve25519_square_times(b, b, 2);\n\t/* 2^252 - 3 */ curve25519_mul_noinline(two252m3, b, z);\n}\n"
  },
  {
    "path": "src/crypto/ed25519/curve25519-donna-sse2.h",
    "content": "/*\n\tPublic domain by Andrew M. <liquidsun@gmail.com>\n\tSee: https://github.com/floodyberry/curve25519-donna\n\n\tSSE2 curve25519 implementation\n*/\n\n#include <emmintrin.h>\ntypedef __m128i xmmi;\n\ntypedef union packedelem8_t {\n\tunsigned char u[16];\n\txmmi v;\n} packedelem8;\n\ntypedef union packedelem32_t {\n\tuint32_t u[4];\n\txmmi v;\n} packedelem32;\n\ntypedef union packedelem64_t {\n\tuint64_t u[2];\n\txmmi v;\n} packedelem64;\n\n/* 10 elements + an extra 2 to fit in 3 xmm registers */\ntypedef uint32_t bignum25519[12];\ntypedef packedelem32 packed32bignum25519[5];\ntypedef packedelem64 packed64bignum25519[10];\n\nstatic const packedelem32 bot32bitmask = {{0xffffffff, 0x00000000, 0xffffffff, 0x00000000}};\nstatic const packedelem32 top32bitmask = {{0x00000000, 0xffffffff, 0x00000000, 0xffffffff}};\nstatic const packedelem32 top64bitmask = {{0x00000000, 0x00000000, 0xffffffff, 0xffffffff}};\nstatic const packedelem32 bot64bitmask = {{0xffffffff, 0xffffffff, 0x00000000, 0x00000000}};\n\n/* reduction masks */\nstatic const packedelem64 packedmask26 = {{0x03ffffff, 0x03ffffff}};\nstatic const packedelem64 packedmask25 = {{0x01ffffff, 0x01ffffff}};\nstatic const packedelem32 packedmask2625 = {{0x3ffffff,0,0x1ffffff,0}};\nstatic const packedelem32 packedmask26262626 = {{0x03ffffff, 0x03ffffff, 0x03ffffff, 0x03ffffff}};\nstatic const packedelem32 packedmask25252525 = {{0x01ffffff, 0x01ffffff, 0x01ffffff, 0x01ffffff}};\n\n/* multipliers */\nstatic const packedelem64 packednineteen = {{19, 19}};\nstatic const packedelem64 packednineteenone = {{19, 1}};\nstatic const packedelem64 packedthirtyeight = {{38, 38}};\nstatic const packedelem64 packed3819 = {{19*2,19}};\nstatic const packedelem64 packed9638 = {{19*4,19*2}};\n\n/* 121666,121665 */\nstatic const packedelem64 packed121666121665 = {{121666, 121665}};\n\n/* 2*(2^255 - 19) = 0 mod p */\nstatic const packedelem32 packed2p0 = {{0x7ffffda,0x3fffffe,0x7fffffe,0x3fffffe}};\nstatic const packedelem32 packed2p1 = {{0x7fffffe,0x3fffffe,0x7fffffe,0x3fffffe}};\nstatic const packedelem32 packed2p2 = {{0x7fffffe,0x3fffffe,0x0000000,0x0000000}};\n\nstatic const packedelem32 packed32packed2p0 = {{0x7ffffda,0x7ffffda,0x3fffffe,0x3fffffe}};\nstatic const packedelem32 packed32packed2p1 = {{0x7fffffe,0x7fffffe,0x3fffffe,0x3fffffe}};\n\n/* 4*(2^255 - 19) = 0 mod p */\nstatic const packedelem32 packed4p0 = {{0xfffffb4,0x7fffffc,0xffffffc,0x7fffffc}};\nstatic const packedelem32 packed4p1 = {{0xffffffc,0x7fffffc,0xffffffc,0x7fffffc}};\nstatic const packedelem32 packed4p2 = {{0xffffffc,0x7fffffc,0x0000000,0x0000000}};\n\nstatic const packedelem32 packed32packed4p0 = {{0xfffffb4,0xfffffb4,0x7fffffc,0x7fffffc}};\nstatic const packedelem32 packed32packed4p1 = {{0xffffffc,0xffffffc,0x7fffffc,0x7fffffc}};\n\n/* out = in */\nDONNA_INLINE static void\ncurve25519_copy(bignum25519 out, const bignum25519 in) {\n\txmmi x0,x1,x2;\n\tx0 = _mm_load_si128((xmmi*)in + 0);\n\tx1 = _mm_load_si128((xmmi*)in + 1);\n\tx2 = _mm_load_si128((xmmi*)in + 2);\n\t_mm_store_si128((xmmi*)out + 0, x0);\n\t_mm_store_si128((xmmi*)out + 1, x1);\n\t_mm_store_si128((xmmi*)out + 2, x2);\n}\n\n/* out = a + b */\nDONNA_INLINE static void\ncurve25519_add(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\txmmi a0,a1,a2,b0,b1,b2;\n\ta0 = _mm_load_si128((xmmi*)a + 0);\n\ta1 = _mm_load_si128((xmmi*)a + 1);\n\ta2 = _mm_load_si128((xmmi*)a + 2);\n\tb0 = _mm_load_si128((xmmi*)b + 0);\n\tb1 = _mm_load_si128((xmmi*)b + 1);\n\tb2 = _mm_load_si128((xmmi*)b + 2);\n\ta0 = _mm_add_epi32(a0, b0);\n\ta1 = _mm_add_epi32(a1, b1);\n\ta2 = _mm_add_epi32(a2, b2);\n\t_mm_store_si128((xmmi*)out + 0, a0);\n\t_mm_store_si128((xmmi*)out + 1, a1);\n\t_mm_store_si128((xmmi*)out + 2, a2);\n}\n\n#define curve25519_add_after_basic curve25519_add_reduce\nDONNA_INLINE static void\ncurve25519_add_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\txmmi a0,a1,a2,b0,b1,b2;\n\txmmi c1,c2,c3;\n\txmmi r0,r1,r2,r3,r4,r5;\n\n\ta0 = _mm_load_si128((xmmi*)a + 0);\n\ta1 = _mm_load_si128((xmmi*)a + 1);\n\ta2 = _mm_load_si128((xmmi*)a + 2);\n\tb0 = _mm_load_si128((xmmi*)b + 0);\n\tb1 = _mm_load_si128((xmmi*)b + 1);\n\tb2 = _mm_load_si128((xmmi*)b + 2);\n\ta0 = _mm_add_epi32(a0, b0);\n\ta1 = _mm_add_epi32(a1, b1);\n\ta2 = _mm_add_epi32(a2, b2);\n\n\tr0 = _mm_and_si128(_mm_unpacklo_epi64(a0, a1), bot32bitmask.v);\n\tr1 = _mm_srli_epi64(_mm_unpacklo_epi64(a0, a1), 32);\n\tr2 = _mm_and_si128(_mm_unpackhi_epi64(a0, a1), bot32bitmask.v);\n\tr3 = _mm_srli_epi64(_mm_unpackhi_epi64(a0, a1), 32);\n\tr4 = _mm_and_si128(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), bot32bitmask.v);\n\tr5 = _mm_srli_epi64(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), 32);\n\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\tc1 = _mm_srli_epi64(r1, 25); c2 = _mm_srli_epi64(r3, 25); r1 = _mm_and_si128(r1, packedmask25.v); r3 = _mm_and_si128(r3, packedmask25.v); r2 = _mm_add_epi64(r2, c1); r4 = _mm_add_epi64(r4, c2); c3 = _mm_slli_si128(c2, 8);\n\tc1 = _mm_srli_epi64(r4, 26);                                                                      r4 = _mm_and_si128(r4, packedmask26.v);                             r5 = _mm_add_epi64(r5, c1); \n\tc1 = _mm_srli_epi64(r5, 25);                                                                      r5 = _mm_and_si128(r5, packedmask25.v);                             r0 = _mm_add_epi64(r0, _mm_unpackhi_epi64(_mm_mul_epu32(c1, packednineteen.v), c3));\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\n\t_mm_store_si128((xmmi*)out + 0, _mm_unpacklo_epi64(_mm_unpacklo_epi32(r0, r1), _mm_unpacklo_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 1, _mm_unpacklo_epi64(_mm_unpackhi_epi32(r0, r1), _mm_unpackhi_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 2, _mm_unpackhi_epi32(r4, r5));\n}\n\nDONNA_INLINE static void\ncurve25519_sub(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\txmmi a0,a1,a2,b0,b1,b2;\n\txmmi c1,c2;\n\txmmi r0,r1;\n\n\ta0 = _mm_load_si128((xmmi*)a + 0);\n\ta1 = _mm_load_si128((xmmi*)a + 1);\n\ta2 = _mm_load_si128((xmmi*)a + 2);\n\ta0 = _mm_add_epi32(a0, packed2p0.v);\n\ta1 = _mm_add_epi32(a1, packed2p1.v);\n\ta2 = _mm_add_epi32(a2, packed2p2.v);\n\tb0 = _mm_load_si128((xmmi*)b + 0);\n\tb1 = _mm_load_si128((xmmi*)b + 1);\n\tb2 = _mm_load_si128((xmmi*)b + 2);\n\ta0 = _mm_sub_epi32(a0, b0);\n\ta1 = _mm_sub_epi32(a1, b1);\n\ta2 = _mm_sub_epi32(a2, b2);\n\n\tr0 = _mm_and_si128(_mm_shuffle_epi32(a0, _MM_SHUFFLE(2,2,0,0)), bot32bitmask.v);\n\tr1 = _mm_and_si128(_mm_shuffle_epi32(a0, _MM_SHUFFLE(3,3,1,1)), bot32bitmask.v);\n\n\tc1 = _mm_srli_epi32(r0, 26); \n\tc2 = _mm_srli_epi32(r1, 25); \n\tr0 = _mm_and_si128(r0, packedmask26.v); \n\tr1 = _mm_and_si128(r1, packedmask25.v); \n\tr0 = _mm_add_epi32(r0, _mm_slli_si128(c2, 8));\n\tr1 = _mm_add_epi32(r1, c1);\n\n\ta0 = _mm_unpacklo_epi64(_mm_unpacklo_epi32(r0, r1), _mm_unpackhi_epi32(r0, r1));\n\ta1 = _mm_add_epi32(a1, _mm_srli_si128(c2, 8));\n\n\t_mm_store_si128((xmmi*)out + 0, a0);\n\t_mm_store_si128((xmmi*)out + 1, a1);\n\t_mm_store_si128((xmmi*)out + 2, a2);\n}\n\nDONNA_INLINE static void\ncurve25519_sub_after_basic(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\txmmi a0,a1,a2,b0,b1,b2;\n\txmmi c1,c2,c3;\n\txmmi r0,r1,r2,r3,r4,r5;\n\n\ta0 = _mm_load_si128((xmmi*)a + 0);\n\ta1 = _mm_load_si128((xmmi*)a + 1);\n\ta2 = _mm_load_si128((xmmi*)a + 2);\n\ta0 = _mm_add_epi32(a0, packed4p0.v);\n\ta1 = _mm_add_epi32(a1, packed4p1.v);\n\ta2 = _mm_add_epi32(a2, packed4p2.v);\n\tb0 = _mm_load_si128((xmmi*)b + 0);\n\tb1 = _mm_load_si128((xmmi*)b + 1);\n\tb2 = _mm_load_si128((xmmi*)b + 2);\n\ta0 = _mm_sub_epi32(a0, b0);\n\ta1 = _mm_sub_epi32(a1, b1);\n\ta2 = _mm_sub_epi32(a2, b2);\n\n\tr0 = _mm_and_si128(_mm_unpacklo_epi64(a0, a1), bot32bitmask.v);\n\tr1 = _mm_srli_epi64(_mm_unpacklo_epi64(a0, a1), 32);\n\tr2 = _mm_and_si128(_mm_unpackhi_epi64(a0, a1), bot32bitmask.v);\n\tr3 = _mm_srli_epi64(_mm_unpackhi_epi64(a0, a1), 32);\n\tr4 = _mm_and_si128(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), bot32bitmask.v);\n\tr5 = _mm_srli_epi64(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), 32);\n\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\tc1 = _mm_srli_epi64(r1, 25); c2 = _mm_srli_epi64(r3, 25); r1 = _mm_and_si128(r1, packedmask25.v); r3 = _mm_and_si128(r3, packedmask25.v); r2 = _mm_add_epi64(r2, c1); r4 = _mm_add_epi64(r4, c2); c3 = _mm_slli_si128(c2, 8);\n\tc1 = _mm_srli_epi64(r4, 26);                                                                      r4 = _mm_and_si128(r4, packedmask26.v);                             r5 = _mm_add_epi64(r5, c1); \n\tc1 = _mm_srli_epi64(r5, 25);                                                                      r5 = _mm_and_si128(r5, packedmask25.v);                             r0 = _mm_add_epi64(r0, _mm_unpackhi_epi64(_mm_mul_epu32(c1, packednineteen.v), c3));\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\n\t_mm_store_si128((xmmi*)out + 0, _mm_unpacklo_epi64(_mm_unpacklo_epi32(r0, r1), _mm_unpacklo_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 1, _mm_unpacklo_epi64(_mm_unpackhi_epi32(r0, r1), _mm_unpackhi_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 2, _mm_unpackhi_epi32(r4, r5));\n}\n\nDONNA_INLINE static void\ncurve25519_sub_reduce(bignum25519 out, const bignum25519 a, const bignum25519 b) {\n\txmmi a0,a1,a2,b0,b1,b2;\n\txmmi c1,c2,c3;\n\txmmi r0,r1,r2,r3,r4,r5;\n\n\ta0 = _mm_load_si128((xmmi*)a + 0);\n\ta1 = _mm_load_si128((xmmi*)a + 1);\n\ta2 = _mm_load_si128((xmmi*)a + 2);\n\ta0 = _mm_add_epi32(a0, packed2p0.v);\n\ta1 = _mm_add_epi32(a1, packed2p1.v);\n\ta2 = _mm_add_epi32(a2, packed2p2.v);\n\tb0 = _mm_load_si128((xmmi*)b + 0);\n\tb1 = _mm_load_si128((xmmi*)b + 1);\n\tb2 = _mm_load_si128((xmmi*)b + 2);\n\ta0 = _mm_sub_epi32(a0, b0);\n\ta1 = _mm_sub_epi32(a1, b1);\n\ta2 = _mm_sub_epi32(a2, b2);\n\n\tr0 = _mm_and_si128(_mm_unpacklo_epi64(a0, a1), bot32bitmask.v);\n\tr1 = _mm_srli_epi64(_mm_unpacklo_epi64(a0, a1), 32);\n\tr2 = _mm_and_si128(_mm_unpackhi_epi64(a0, a1), bot32bitmask.v);\n\tr3 = _mm_srli_epi64(_mm_unpackhi_epi64(a0, a1), 32);\n\tr4 = _mm_and_si128(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), bot32bitmask.v);\n\tr5 = _mm_srli_epi64(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), 32);\n\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\tc1 = _mm_srli_epi64(r1, 25); c2 = _mm_srli_epi64(r3, 25); r1 = _mm_and_si128(r1, packedmask25.v); r3 = _mm_and_si128(r3, packedmask25.v); r2 = _mm_add_epi64(r2, c1); r4 = _mm_add_epi64(r4, c2); c3 = _mm_slli_si128(c2, 8);\n\tc1 = _mm_srli_epi64(r4, 26);                                                                      r4 = _mm_and_si128(r4, packedmask26.v);                             r5 = _mm_add_epi64(r5, c1); \n\tc1 = _mm_srli_epi64(r5, 25);                                                                      r5 = _mm_and_si128(r5, packedmask25.v);                             r0 = _mm_add_epi64(r0, _mm_unpackhi_epi64(_mm_mul_epu32(c1, packednineteen.v), c3));\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\n\t_mm_store_si128((xmmi*)out + 0, _mm_unpacklo_epi64(_mm_unpacklo_epi32(r0, r1), _mm_unpacklo_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 1, _mm_unpacklo_epi64(_mm_unpackhi_epi32(r0, r1), _mm_unpackhi_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 2, _mm_unpackhi_epi32(r4, r5));\n}\n\n\nDONNA_INLINE static void\ncurve25519_neg(bignum25519 out, const bignum25519 b) {\n\txmmi a0,a1,a2,b0,b1,b2;\n\txmmi c1,c2,c3;\n\txmmi r0,r1,r2,r3,r4,r5;\n\n\ta0 = packed2p0.v;\n\ta1 = packed2p1.v;\n\ta2 = packed2p2.v;\n\tb0 = _mm_load_si128((xmmi*)b + 0);\n\tb1 = _mm_load_si128((xmmi*)b + 1);\n\tb2 = _mm_load_si128((xmmi*)b + 2);\n\ta0 = _mm_sub_epi32(a0, b0);\n\ta1 = _mm_sub_epi32(a1, b1);\n\ta2 = _mm_sub_epi32(a2, b2);\n\n\tr0 = _mm_and_si128(_mm_unpacklo_epi64(a0, a1), bot32bitmask.v);\n\tr1 = _mm_srli_epi64(_mm_unpacklo_epi64(a0, a1), 32);\n\tr2 = _mm_and_si128(_mm_unpackhi_epi64(a0, a1), bot32bitmask.v);\n\tr3 = _mm_srli_epi64(_mm_unpackhi_epi64(a0, a1), 32);\n\tr4 = _mm_and_si128(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), bot32bitmask.v);\n\tr5 = _mm_srli_epi64(_mm_unpacklo_epi64(_mm_setzero_si128(), a2), 32);\n\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\tc1 = _mm_srli_epi64(r1, 25); c2 = _mm_srli_epi64(r3, 25); r1 = _mm_and_si128(r1, packedmask25.v); r3 = _mm_and_si128(r3, packedmask25.v); r2 = _mm_add_epi64(r2, c1); r4 = _mm_add_epi64(r4, c2); c3 = _mm_slli_si128(c2, 8);\n\tc1 = _mm_srli_epi64(r4, 26);                                                                      r4 = _mm_and_si128(r4, packedmask26.v);                             r5 = _mm_add_epi64(r5, c1); \n\tc1 = _mm_srli_epi64(r5, 25);                                                                      r5 = _mm_and_si128(r5, packedmask25.v);                             r0 = _mm_add_epi64(r0, _mm_unpackhi_epi64(_mm_mul_epu32(c1, packednineteen.v), c3));\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\n\t_mm_store_si128((xmmi*)out + 0, _mm_unpacklo_epi64(_mm_unpacklo_epi32(r0, r1), _mm_unpacklo_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 1, _mm_unpacklo_epi64(_mm_unpackhi_epi32(r0, r1), _mm_unpackhi_epi32(r2, r3)));\n\t_mm_store_si128((xmmi*)out + 2, _mm_unpackhi_epi32(r4, r5));\n}\n\n\n/* Multiply two numbers: out = in2 * in */\nstatic void \ncurve25519_mul(bignum25519 out, const bignum25519 r, const bignum25519 s) {\n\txmmi m01,m23,m45,m67,m89;\n\txmmi m0123,m4567;\n\txmmi s0123,s4567;\n\txmmi s01,s23,s45,s67,s89;\n\txmmi s12,s34,s56,s78,s9;\n\txmmi r0,r2,r4,r6,r8;\n\txmmi r1,r3,r5,r7,r9;\n\txmmi r119,r219,r319,r419,r519,r619,r719,r819,r919;\n\txmmi c1,c2,c3;\n\n\ts0123 = _mm_load_si128((xmmi*)s + 0);\n\ts01 = _mm_shuffle_epi32(s0123,_MM_SHUFFLE(3,1,2,0));\n\ts12 = _mm_shuffle_epi32(s0123, _MM_SHUFFLE(2,2,1,1));\n\ts23 = _mm_shuffle_epi32(s0123,_MM_SHUFFLE(3,3,2,2));\n\ts4567 = _mm_load_si128((xmmi*)s + 1);\n\ts34 = _mm_unpacklo_epi64(_mm_srli_si128(s0123,12),s4567);\n\ts45 = _mm_shuffle_epi32(s4567,_MM_SHUFFLE(3,1,2,0));\n\ts56 = _mm_shuffle_epi32(s4567, _MM_SHUFFLE(2,2,1,1));\n\ts67 = _mm_shuffle_epi32(s4567,_MM_SHUFFLE(3,3,2,2));\n\ts89 = _mm_load_si128((xmmi*)s + 2);\n\ts78 = _mm_unpacklo_epi64(_mm_srli_si128(s4567,12),s89);\n\ts89 = _mm_shuffle_epi32(s89,_MM_SHUFFLE(3,1,2,0));\n\ts9 = _mm_shuffle_epi32(s89, _MM_SHUFFLE(3,3,2,2));\n\n\tr0 = _mm_load_si128((xmmi*)r + 0);\n\tr1 = _mm_shuffle_epi32(r0, _MM_SHUFFLE(1,1,1,1));\n\tr1 = _mm_add_epi64(r1, _mm_and_si128(r1, top64bitmask.v));\n\tr2 = _mm_shuffle_epi32(r0, _MM_SHUFFLE(2,2,2,2));\n\tr3 = _mm_shuffle_epi32(r0, _MM_SHUFFLE(3,3,3,3));\n\tr3 = _mm_add_epi64(r3, _mm_and_si128(r3, top64bitmask.v));\n\tr0 = _mm_shuffle_epi32(r0, _MM_SHUFFLE(0,0,0,0));\n\tr4 = _mm_load_si128((xmmi*)r + 1);\n\tr5 = _mm_shuffle_epi32(r4, _MM_SHUFFLE(1,1,1,1));\n\tr5 = _mm_add_epi64(r5, _mm_and_si128(r5, top64bitmask.v));\n\tr6 = _mm_shuffle_epi32(r4, _MM_SHUFFLE(2,2,2,2));\n\tr7 = _mm_shuffle_epi32(r4, _MM_SHUFFLE(3,3,3,3));\n\tr7 = _mm_add_epi64(r7, _mm_and_si128(r7, top64bitmask.v));\n\tr4 = _mm_shuffle_epi32(r4, _MM_SHUFFLE(0,0,0,0));\n\tr8 = _mm_load_si128((xmmi*)r + 2);\n\tr9 = _mm_shuffle_epi32(r8, _MM_SHUFFLE(3,1,3,1));\n\tr9 = _mm_add_epi64(r9, _mm_and_si128(r9, top64bitmask.v));\n\tr8 = _mm_shuffle_epi32(r8, _MM_SHUFFLE(3,0,3,0));\n\n\tm01 = _mm_mul_epu32(r1,s01);\n\tm23 = _mm_mul_epu32(r1,s23);\n\tm45 = _mm_mul_epu32(r1,s45);\n\tm67 = _mm_mul_epu32(r1,s67);\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r3,s01));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r3,s23));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r3,s45));\n\tm89 = _mm_mul_epu32(r1,s89);\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r5,s01));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r5,s23));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r3,s67));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r7,s01));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r5,s45));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r7,s23));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r9,s01));\n\n\t/* shift up */\n\tm89 = _mm_unpackhi_epi64(m67,_mm_slli_si128(m89,8));\n\tm67 = _mm_unpackhi_epi64(m45,_mm_slli_si128(m67,8));\n\tm45 = _mm_unpackhi_epi64(m23,_mm_slli_si128(m45,8));\n\tm23 = _mm_unpackhi_epi64(m01,_mm_slli_si128(m23,8));\n\tm01 = _mm_unpackhi_epi64(_mm_setzero_si128(),_mm_slli_si128(m01,8));\n\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r0,s01));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r0,s23));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r0,s45));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r0,s67));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r2,s01));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r2,s23));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r4,s23));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r0,s89));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r4,s01));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r2,s45));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r2,s67));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r6,s01));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r4,s45));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r6,s23));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r8,s01));\n\n\tr219 = _mm_mul_epu32(r2, packednineteen.v);\n\tr419 = _mm_mul_epu32(r4, packednineteen.v);\n\tr619 = _mm_mul_epu32(r6, packednineteen.v);\n\tr819 = _mm_mul_epu32(r8, packednineteen.v);\n\tr119 = _mm_shuffle_epi32(r1,_MM_SHUFFLE(0,0,2,2)); r119 = _mm_mul_epu32(r119, packednineteen.v);\n\tr319 = _mm_shuffle_epi32(r3,_MM_SHUFFLE(0,0,2,2)); r319 = _mm_mul_epu32(r319, packednineteen.v);\n\tr519 = _mm_shuffle_epi32(r5,_MM_SHUFFLE(0,0,2,2)); r519 = _mm_mul_epu32(r519, packednineteen.v);\n\tr719 = _mm_shuffle_epi32(r7,_MM_SHUFFLE(0,0,2,2)); r719 = _mm_mul_epu32(r719, packednineteen.v);\n\tr919 = _mm_shuffle_epi32(r9,_MM_SHUFFLE(0,0,2,2)); r919 = _mm_mul_epu32(r919, packednineteen.v);\n\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r919,s12));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r919,s34));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r919,s56));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r919,s78));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r719,s34));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r719,s56));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r719,s78));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r719,s9));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r519,s56));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r519,s78));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r519,s9));\n\tm67 = _mm_add_epi64(m67,_mm_mul_epu32(r819,s89));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r319,s78));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r319,s9));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r619,s89));\n\tm89 = _mm_add_epi64(m89,_mm_mul_epu32(r919,s9));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r819,s23));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r819,s45));\n\tm45 = _mm_add_epi64(m45,_mm_mul_epu32(r819,s67));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r619,s45));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r619,s67));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r419,s67));\n\tm23 = _mm_add_epi64(m23,_mm_mul_epu32(r419,s89));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r219,s89));\n\tm01 = _mm_add_epi64(m01,_mm_mul_epu32(r119,s9));\n\n\tr0 = _mm_unpacklo_epi64(m01, m45);\n\tr1 = _mm_unpackhi_epi64(m01, m45);\n\tr2 = _mm_unpacklo_epi64(m23, m67);\n\tr3 = _mm_unpackhi_epi64(m23, m67);\n\tr4 = _mm_unpacklo_epi64(m89, m89);\n\tr5 = _mm_unpackhi_epi64(m89, m89);\n\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\tc1 = _mm_srli_epi64(r1, 25); c2 = _mm_srli_epi64(r3, 25); r1 = _mm_and_si128(r1, packedmask25.v); r3 = _mm_and_si128(r3, packedmask25.v); r2 = _mm_add_epi64(r2, c1); r4 = _mm_add_epi64(r4, c2); c3 = _mm_slli_si128(c2, 8);\n\tc1 = _mm_srli_epi64(r4, 26);                                                                      r4 = _mm_and_si128(r4, packedmask26.v);                             r5 = _mm_add_epi64(r5, c1); \n\tc1 = _mm_srli_epi64(r5, 25);                                                                      r5 = _mm_and_si128(r5, packedmask25.v);                             r0 = _mm_add_epi64(r0, _mm_unpackhi_epi64(_mm_mul_epu32(c1, packednineteen.v), c3));\n\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\n\tm0123 = _mm_unpacklo_epi32(r0, r1);\n\tm4567 = _mm_unpackhi_epi32(r0, r1);\n\tm0123 = _mm_unpacklo_epi64(m0123, _mm_unpacklo_epi32(r2, r3));\n\tm4567 = _mm_unpacklo_epi64(m4567, _mm_unpackhi_epi32(r2, r3));\n\tm89 = _mm_unpackhi_epi32(r4, r5);\n\n\t_mm_store_si128((xmmi*)out + 0, m0123);\n\t_mm_store_si128((xmmi*)out + 1, m4567);\n\t_mm_store_si128((xmmi*)out + 2, m89);\n}\n\nDONNA_NOINLINE static void\ncurve25519_mul_noinline(bignum25519 out, const bignum25519 r, const bignum25519 s) {\n\tcurve25519_mul(out, r, s);\n}\n\n#define curve25519_square(r, n) curve25519_square_times(r, n, 1)\nstatic void\ncurve25519_square_times(bignum25519 r, const bignum25519 in, int count) {\n\txmmi m01,m23,m45,m67,m89;\n\txmmi r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;\n\txmmi r0a,r1a,r2a,r3a,r7a,r9a;\n\txmmi r0123,r4567;\n\txmmi r01,r23,r45,r67,r6x,r89,r8x;\n\txmmi r12,r34,r56,r78,r9x;\n\txmmi r5619;\n\txmmi c1,c2,c3;\n\n\tr0123 = _mm_load_si128((xmmi*)in + 0);\n\tr01 = _mm_shuffle_epi32(r0123,_MM_SHUFFLE(3,1,2,0));\n\tr23 = _mm_shuffle_epi32(r0123,_MM_SHUFFLE(3,3,2,2));\n\tr4567 = _mm_load_si128((xmmi*)in + 1);\n\tr45 = _mm_shuffle_epi32(r4567,_MM_SHUFFLE(3,1,2,0));\n\tr67 = _mm_shuffle_epi32(r4567,_MM_SHUFFLE(3,3,2,2));\n\tr89 = _mm_load_si128((xmmi*)in + 2);\n\tr89 = _mm_shuffle_epi32(r89,_MM_SHUFFLE(3,1,2,0));\n\n\tdo {\n\t\tr12 = _mm_unpackhi_epi64(r01, _mm_slli_si128(r23, 8));\n\t\tr0 = _mm_shuffle_epi32(r01, _MM_SHUFFLE(0,0,0,0));\n\t\tr0 = _mm_add_epi64(r0, _mm_and_si128(r0, top64bitmask.v));\n\t\tr0a = _mm_shuffle_epi32(r0,_MM_SHUFFLE(3,2,1,2));\n\t\tr1 = _mm_shuffle_epi32(r01, _MM_SHUFFLE(2,2,2,2));\n\t\tr2 = _mm_shuffle_epi32(r23, _MM_SHUFFLE(0,0,0,0));\n\t\tr2 = _mm_add_epi64(r2, _mm_and_si128(r2, top64bitmask.v));\n\t\tr2a = _mm_shuffle_epi32(r2,_MM_SHUFFLE(3,2,1,2));\n\t\tr3 = _mm_shuffle_epi32(r23, _MM_SHUFFLE(2,2,2,2));\n\t\tr34 = _mm_unpackhi_epi64(r23, _mm_slli_si128(r45, 8));\n\t\tr4 = _mm_shuffle_epi32(r45, _MM_SHUFFLE(0,0,0,0));\n\t\tr4 = _mm_add_epi64(r4, _mm_and_si128(r4, top64bitmask.v));\n\t\tr56 = _mm_unpackhi_epi64(r45, _mm_slli_si128(r67, 8));\n\t\tr5619 = _mm_mul_epu32(r56, packednineteen.v);\n\t\tr5 = _mm_shuffle_epi32(r5619, _MM_SHUFFLE(1,1,1,0));\n\t\tr6 = _mm_shuffle_epi32(r5619, _MM_SHUFFLE(3,2,3,2));\t\t\n\t\tr78 = _mm_unpackhi_epi64(r67, _mm_slli_si128(r89, 8));\n\t\tr6x = _mm_unpacklo_epi64(r67, _mm_setzero_si128());\n\t\tr7 = _mm_shuffle_epi32(r67, _MM_SHUFFLE(2,2,2,2));\n\t\tr7 = _mm_mul_epu32(r7, packed3819.v);\n\t\tr7a = _mm_shuffle_epi32(r7, _MM_SHUFFLE(3,3,3,2));\n\t\tr8x = _mm_unpacklo_epi64(r89, _mm_setzero_si128());\n\t\tr8 = _mm_shuffle_epi32(r89, _MM_SHUFFLE(0,0,0,0));\n\t\tr8 = _mm_mul_epu32(r8, packednineteen.v);\n\t\tr9  = _mm_shuffle_epi32(r89, _MM_SHUFFLE(2,2,2,2));\n\t\tr9x  = _mm_slli_epi32(_mm_shuffle_epi32(r89, _MM_SHUFFLE(3,3,3,2)), 1);\n\t\tr9 = _mm_mul_epu32(r9, packed3819.v);\n\t\tr9a = _mm_shuffle_epi32(r9, _MM_SHUFFLE(2,2,2,2));\n\n\t\tm01 = _mm_mul_epu32(r01, r0);\n\t\tm23 = _mm_mul_epu32(r23, r0a);\n\t\tm45 = _mm_mul_epu32(r45, r0a);\n\t\tm45 = _mm_add_epi64(m45, _mm_mul_epu32(r23, r2));\n\t\tr23 = _mm_slli_epi32(r23, 1);\n\t\tm67 = _mm_mul_epu32(r67, r0a);\n\t\tm67 = _mm_add_epi64(m67, _mm_mul_epu32(r45, r2a));\n\t\tm89 = _mm_mul_epu32(r89, r0a);\n\t\tm89 = _mm_add_epi64(m89, _mm_mul_epu32(r67, r2a));\n\t\tr67 = _mm_slli_epi32(r67, 1);\n\t\tm89 = _mm_add_epi64(m89, _mm_mul_epu32(r45, r4));\n\t\tr45 = _mm_slli_epi32(r45, 1);\n\n\t\tr1 = _mm_slli_epi32(r1, 1);\n\t\tr3 = _mm_slli_epi32(r3, 1);\n\t\tr1a = _mm_add_epi64(r1, _mm_and_si128(r1, bot64bitmask.v));\n\t\tr3a = _mm_add_epi64(r3, _mm_and_si128(r3, bot64bitmask.v));\n\n\t\tm23 = _mm_add_epi64(m23, _mm_mul_epu32(r12, r1));\n\t\tm45 = _mm_add_epi64(m45, _mm_mul_epu32(r34, r1a));\n\t\tm67 = _mm_add_epi64(m67, _mm_mul_epu32(r56, r1a));\n\t\tm67 = _mm_add_epi64(m67, _mm_mul_epu32(r34, r3));\n\t\tr34 = _mm_slli_epi32(r34, 1);\n\t\tm89 = _mm_add_epi64(m89, _mm_mul_epu32(r78, r1a));\n\t\tr78 = _mm_slli_epi32(r78, 1);\n\t\tm89 = _mm_add_epi64(m89, _mm_mul_epu32(r56, r3a));\n\t\tr56 = _mm_slli_epi32(r56, 1);\n\n\t\tm01 = _mm_add_epi64(m01, _mm_mul_epu32(_mm_slli_epi32(r12, 1), r9));\n\t\tm01 = _mm_add_epi64(m01, _mm_mul_epu32(r34, r7));\n\t\tm23 = _mm_add_epi64(m23, _mm_mul_epu32(r34, r9));\n\t\tm01 = _mm_add_epi64(m01, _mm_mul_epu32(r56, r5));\n\t\tm23 = _mm_add_epi64(m23, _mm_mul_epu32(r56, r7));\n\t\tm45 = _mm_add_epi64(m45, _mm_mul_epu32(r56, r9));\n\t\tm01 = _mm_add_epi64(m01, _mm_mul_epu32(r23, r8));\n\t\tm01 = _mm_add_epi64(m01, _mm_mul_epu32(r45, r6));\n\t\tm23 = _mm_add_epi64(m23, _mm_mul_epu32(r45, r8));\n\t\tm23 = _mm_add_epi64(m23, _mm_mul_epu32(r6x, r6));\n\t\tm45 = _mm_add_epi64(m45, _mm_mul_epu32(r78, r7a));\n\t\tm67 = _mm_add_epi64(m67, _mm_mul_epu32(r78, r9));\n\t\tm45 = _mm_add_epi64(m45, _mm_mul_epu32(r67, r8));\t\t\n\t\tm67 = _mm_add_epi64(m67, _mm_mul_epu32(r8x, r8));\n\t\tm89 = _mm_add_epi64(m89, _mm_mul_epu32(r9x, r9a));\n\n\t\tr0 = _mm_unpacklo_epi64(m01, m45);\n\t\tr1 = _mm_unpackhi_epi64(m01, m45);\n\t\tr2 = _mm_unpacklo_epi64(m23, m67);\n\t\tr3 = _mm_unpackhi_epi64(m23, m67);\n\t\tr4 = _mm_unpacklo_epi64(m89, m89);\n\t\tr5 = _mm_unpackhi_epi64(m89, m89);\n\n\t\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\t\tc1 = _mm_srli_epi64(r1, 25); c2 = _mm_srli_epi64(r3, 25); r1 = _mm_and_si128(r1, packedmask25.v); r3 = _mm_and_si128(r3, packedmask25.v); r2 = _mm_add_epi64(r2, c1); r4 = _mm_add_epi64(r4, c2); c3 = _mm_slli_si128(c2, 8);\n\t\tc1 = _mm_srli_epi64(r4, 26);                                                                      r4 = _mm_and_si128(r4, packedmask26.v);                             r5 = _mm_add_epi64(r5, c1); \n\t\tc1 = _mm_srli_epi64(r5, 25);                                                                      r5 = _mm_and_si128(r5, packedmask25.v);                             r0 = _mm_add_epi64(r0, _mm_unpackhi_epi64(_mm_mul_epu32(c1, packednineteen.v), c3));\n\t\tc1 = _mm_srli_epi64(r0, 26); c2 = _mm_srli_epi64(r2, 26); r0 = _mm_and_si128(r0, packedmask26.v); r2 = _mm_and_si128(r2, packedmask26.v); r1 = _mm_add_epi64(r1, c1); r3 = _mm_add_epi64(r3, c2);\n\n\t\tr01 = _mm_unpacklo_epi64(r0, r1);\n\t\tr45 = _mm_unpackhi_epi64(r0, r1);\n\t\tr23 = _mm_unpacklo_epi64(r2, r3);\n\t\tr67 = _mm_unpackhi_epi64(r2, r3);\n\t\tr89 = _mm_unpackhi_epi64(r4, r5);\n\t} while (--count);\n\n\tr0123 = _mm_shuffle_epi32(r23, _MM_SHUFFLE(2,0,3,3));\n\tr4567 = _mm_shuffle_epi32(r67, _MM_SHUFFLE(2,0,3,3));\n\tr0123 = _mm_or_si128(r0123, _mm_shuffle_epi32(r01, _MM_SHUFFLE(3,3,2,0)));\n\tr4567 = _mm_or_si128(r4567, _mm_shuffle_epi32(r45, _MM_SHUFFLE(3,3,2,0)));\n\tr89 = _mm_shuffle_epi32(r89, _MM_SHUFFLE(3,3,2,0));\n\n\t_mm_store_si128((xmmi*)r + 0, r0123);\n\t_mm_store_si128((xmmi*)r + 1, r4567);\n\t_mm_store_si128((xmmi*)r + 2, r89);\n}\n\nDONNA_INLINE static void\ncurve25519_tangle32(packedelem32 *out, const bignum25519 x, const bignum25519 z) {\n\txmmi x0,x1,x2,z0,z1,z2;\n\n\tx0 = _mm_load_si128((xmmi *)(x + 0));\n\tx1 = _mm_load_si128((xmmi *)(x + 4));\n\tx2 = _mm_load_si128((xmmi *)(x + 8));\n\tz0 = _mm_load_si128((xmmi *)(z + 0));\n\tz1 = _mm_load_si128((xmmi *)(z + 4));\n\tz2 = _mm_load_si128((xmmi *)(z + 8));\n\n\tout[0].v = _mm_unpacklo_epi32(x0, z0);\n\tout[1].v = _mm_unpackhi_epi32(x0, z0);\n\tout[2].v = _mm_unpacklo_epi32(x1, z1);\n\tout[3].v = _mm_unpackhi_epi32(x1, z1);\n\tout[4].v = _mm_unpacklo_epi32(x2, z2);\n}\n\nDONNA_INLINE static void\ncurve25519_untangle32(bignum25519 x, bignum25519 z, const packedelem32 *in) {\n\txmmi t0,t1,t2,t3,t4,zero;\n\n\tt0 = _mm_shuffle_epi32(in[0].v, _MM_SHUFFLE(3,1,2,0));\n\tt1 = _mm_shuffle_epi32(in[1].v, _MM_SHUFFLE(3,1,2,0));\n\tt2 = _mm_shuffle_epi32(in[2].v, _MM_SHUFFLE(3,1,2,0));\n\tt3 = _mm_shuffle_epi32(in[3].v, _MM_SHUFFLE(3,1,2,0));\n\tt4 = _mm_shuffle_epi32(in[4].v, _MM_SHUFFLE(3,1,2,0));\n\tzero = _mm_setzero_si128();\n\t_mm_store_si128((xmmi *)x + 0, _mm_unpacklo_epi64(t0, t1));\n\t_mm_store_si128((xmmi *)x + 1, _mm_unpacklo_epi64(t2, t3));\n\t_mm_store_si128((xmmi *)x + 2, _mm_unpacklo_epi64(t4, zero));\n\t_mm_store_si128((xmmi *)z + 0, _mm_unpackhi_epi64(t0, t1));\n\t_mm_store_si128((xmmi *)z + 1, _mm_unpackhi_epi64(t2, t3));\n\t_mm_store_si128((xmmi *)z + 2, _mm_unpackhi_epi64(t4, zero));\n}\n\nDONNA_INLINE static void\ncurve25519_add_reduce_packed32(packedelem32 *out, const packedelem32 *r, const packedelem32 *s) {\n\txmmi r0,r1,r2,r3,r4;\n\txmmi s0,s1,s2,s3,s4,s5;\n\txmmi c1,c2;\n\n\tr0 = _mm_add_epi32(r[0].v, s[0].v);\n\tr1 = _mm_add_epi32(r[1].v, s[1].v);\n\tr2 = _mm_add_epi32(r[2].v, s[2].v);\n\tr3 = _mm_add_epi32(r[3].v, s[3].v);\n\tr4 = _mm_add_epi32(r[4].v, s[4].v);\n\n\ts0 = _mm_unpacklo_epi64(r0, r2); /* 00 44 */\n\ts1 = _mm_unpackhi_epi64(r0, r2); /* 11 55 */\n\ts2 = _mm_unpacklo_epi64(r1, r3); /* 22 66 */\n\ts3 = _mm_unpackhi_epi64(r1, r3); /* 33 77 */\n\ts4 = _mm_unpacklo_epi64(_mm_setzero_si128(), r4);  /* 00 88 */\n\ts5 = _mm_unpackhi_epi64(_mm_setzero_si128(), r4);  /* 00 99 */\n\n\tc1 = _mm_srli_epi32(s0, 26); c2 = _mm_srli_epi32(s2, 26); s0 = _mm_and_si128(s0, packedmask26262626.v); s2 = _mm_and_si128(s2, packedmask26262626.v); s1 = _mm_add_epi32(s1, c1); s3 = _mm_add_epi32(s3, c2);\n\tc1 = _mm_srli_epi32(s1, 25); c2 = _mm_srli_epi32(s3, 25); s1 = _mm_and_si128(s1, packedmask25252525.v); s3 = _mm_and_si128(s3, packedmask25252525.v); s2 = _mm_add_epi32(s2, c1); s4 = _mm_add_epi32(s4, _mm_unpackhi_epi64(_mm_setzero_si128(), c2)); s0 = _mm_add_epi32(s0, _mm_unpacklo_epi64(_mm_setzero_si128(), c2));\n\tc1 = _mm_srli_epi32(s2, 26); c2 = _mm_srli_epi32(s4, 26); s2 = _mm_and_si128(s2, packedmask26262626.v); s4 = _mm_and_si128(s4, packedmask26262626.v); s3 = _mm_add_epi32(s3, c1); s5 = _mm_add_epi32(s5, c2);\n\tc1 = _mm_srli_epi32(s3, 25); c2 = _mm_srli_epi32(s5, 25); s3 = _mm_and_si128(s3, packedmask25252525.v); s5 = _mm_and_si128(s5, packedmask25252525.v); s4 = _mm_add_epi32(s4, c1); s0 = _mm_add_epi32(s0, _mm_or_si128(_mm_slli_si128(c1, 8), _mm_srli_si128(_mm_add_epi32(_mm_add_epi32(_mm_slli_epi32(c2, 4), _mm_slli_epi32(c2, 1)), c2), 8)));\n\tc1 = _mm_srli_epi32(s0, 26); c2 = _mm_srli_epi32(s2, 26); s0 = _mm_and_si128(s0, packedmask26262626.v); s2 = _mm_and_si128(s2, packedmask26262626.v); s1 = _mm_add_epi32(s1, c1); s3 = _mm_add_epi32(s3, c2);\n\n\tout[0].v = _mm_unpacklo_epi64(s0, s1); /* 00 11 */\n\tout[1].v = _mm_unpacklo_epi64(s2, s3); /* 22 33 */\n\tout[2].v = _mm_unpackhi_epi64(s0, s1); /* 44 55 */\n\tout[3].v = _mm_unpackhi_epi64(s2, s3); /* 66 77 */\n\tout[4].v = _mm_unpackhi_epi64(s4, s5); /* 88 99 */\n}\n\nDONNA_INLINE static void\ncurve25519_add_packed32(packedelem32 *out, const packedelem32 *r, const packedelem32 *s) {\n\tout[0].v = _mm_add_epi32(r[0].v, s[0].v);\n\tout[1].v = _mm_add_epi32(r[1].v, s[1].v);\n\tout[2].v = _mm_add_epi32(r[2].v, s[2].v);\n\tout[3].v = _mm_add_epi32(r[3].v, s[3].v);\n\tout[4].v = _mm_add_epi32(r[4].v, s[4].v);\n}\n\nDONNA_INLINE static void\ncurve25519_sub_packed32(packedelem32 *out, const packedelem32 *r, const packedelem32 *s) {\n\txmmi r0,r1,r2,r3,r4;\n\txmmi s0,s1,s2,s3;\n\txmmi c1,c2;\n\n\tr0 = _mm_add_epi32(r[0].v, packed32packed2p0.v);\n\tr1 = _mm_add_epi32(r[1].v, packed32packed2p1.v);\n\tr2 = _mm_add_epi32(r[2].v, packed32packed2p1.v);\n\tr3 = _mm_add_epi32(r[3].v, packed32packed2p1.v);\n\tr4 = _mm_add_epi32(r[4].v, packed32packed2p1.v);\n\tr0 = _mm_sub_epi32(r0, s[0].v); /* 00 11 */\n\tr1 = _mm_sub_epi32(r1, s[1].v); /* 22 33 */\n\tr2 = _mm_sub_epi32(r2, s[2].v); /* 44 55 */\n\tr3 = _mm_sub_epi32(r3, s[3].v); /* 66 77 */\n\tr4 = _mm_sub_epi32(r4, s[4].v); /* 88 99 */\n\n\ts0 = _mm_unpacklo_epi64(r0, r2); /* 00 44 */\n\ts1 = _mm_unpackhi_epi64(r0, r2); /* 11 55 */\n\ts2 = _mm_unpacklo_epi64(r1, r3); /* 22 66 */\n\ts3 = _mm_unpackhi_epi64(r1, r3); /* 33 77 */\n\n\tc1 = _mm_srli_epi32(s0, 26); c2 = _mm_srli_epi32(s2, 26); s0 = _mm_and_si128(s0, packedmask26262626.v); s2 = _mm_and_si128(s2, packedmask26262626.v); s1 = _mm_add_epi32(s1, c1); s3 = _mm_add_epi32(s3, c2);\n\tc1 = _mm_srli_epi32(s1, 25); c2 = _mm_srli_epi32(s3, 25); s1 = _mm_and_si128(s1, packedmask25252525.v); s3 = _mm_and_si128(s3, packedmask25252525.v); s2 = _mm_add_epi32(s2, c1); r4 = _mm_add_epi32(r4, _mm_srli_si128(c2, 8)); s0 = _mm_add_epi32(s0,  _mm_slli_si128(c2, 8));\n\n\tout[0].v = _mm_unpacklo_epi64(s0, s1); /* 00 11 */\n\tout[1].v = _mm_unpacklo_epi64(s2, s3); /* 22 33 */\n\tout[2].v = _mm_unpackhi_epi64(s0, s1); /* 44 55 */\n\tout[3].v = _mm_unpackhi_epi64(s2, s3); /* 66 77 */\n\tout[4].v = r4;\n}\n\nDONNA_INLINE static void\ncurve25519_sub_after_basic_packed32(packedelem32 *out, const packedelem32 *r, const packedelem32 *s) {\n\txmmi r0,r1,r2,r3,r4;\n\txmmi s0,s1,s2,s3,s4,s5;\n\txmmi c1,c2;\n\n\tr0 = _mm_add_epi32(r[0].v, packed32packed4p0.v);\n\tr1 = _mm_add_epi32(r[1].v, packed32packed4p1.v);\n\tr2 = _mm_add_epi32(r[2].v, packed32packed4p1.v);\n\tr3 = _mm_add_epi32(r[3].v, packed32packed4p1.v);\n\tr4 = _mm_add_epi32(r[4].v, packed32packed4p1.v);\n\tr0 = _mm_sub_epi32(r0, s[0].v); /* 00 11 */\n\tr1 = _mm_sub_epi32(r1, s[1].v); /* 22 33 */\n\tr2 = _mm_sub_epi32(r2, s[2].v); /* 44 55 */\n\tr3 = _mm_sub_epi32(r3, s[3].v); /* 66 77 */\n\tr4 = _mm_sub_epi32(r4, s[4].v); /* 88 99 */\n\n\ts0 = _mm_unpacklo_epi64(r0, r2); /* 00 44 */\n\ts1 = _mm_unpackhi_epi64(r0, r2); /* 11 55 */\n\ts2 = _mm_unpacklo_epi64(r1, r3); /* 22 66 */\n\ts3 = _mm_unpackhi_epi64(r1, r3); /* 33 77 */\n\ts4 = _mm_unpacklo_epi64(_mm_setzero_si128(), r4);  /* 00 88 */\n\ts5 = _mm_unpackhi_epi64(_mm_setzero_si128(), r4);  /* 00 99 */\n\n\tc1 = _mm_srli_epi32(s0, 26); c2 = _mm_srli_epi32(s2, 26); s0 = _mm_and_si128(s0, packedmask26262626.v); s2 = _mm_and_si128(s2, packedmask26262626.v); s1 = _mm_add_epi32(s1, c1); s3 = _mm_add_epi32(s3, c2);\n\tc1 = _mm_srli_epi32(s1, 25); c2 = _mm_srli_epi32(s3, 25); s1 = _mm_and_si128(s1, packedmask25252525.v); s3 = _mm_and_si128(s3, packedmask25252525.v); s2 = _mm_add_epi32(s2, c1); s4 = _mm_add_epi32(s4, _mm_unpackhi_epi64(_mm_setzero_si128(), c2)); s0 = _mm_add_epi32(s0, _mm_unpacklo_epi64(_mm_setzero_si128(), c2));\n\tc1 = _mm_srli_epi32(s2, 26); c2 = _mm_srli_epi32(s4, 26); s2 = _mm_and_si128(s2, packedmask26262626.v); s4 = _mm_and_si128(s4, packedmask26262626.v); s3 = _mm_add_epi32(s3, c1); s5 = _mm_add_epi32(s5, c2);\n\tc1 = _mm_srli_epi32(s3, 25); c2 = _mm_srli_epi32(s5, 25); s3 = _mm_and_si128(s3, packedmask25252525.v); s5 = _mm_and_si128(s5, packedmask25252525.v); s4 = _mm_add_epi32(s4, c1); s0 = _mm_add_epi32(s0, _mm_or_si128(_mm_slli_si128(c1, 8), _mm_srli_si128(_mm_add_epi32(_mm_add_epi32(_mm_slli_epi32(c2, 4), _mm_slli_epi32(c2, 1)), c2), 8)));\n\tc1 = _mm_srli_epi32(s0, 26); c2 = _mm_srli_epi32(s2, 26); s0 = _mm_and_si128(s0, packedmask26262626.v); s2 = _mm_and_si128(s2, packedmask26262626.v); s1 = _mm_add_epi32(s1, c1); s3 = _mm_add_epi32(s3, c2);\n\n\tout[0].v = _mm_unpacklo_epi64(s0, s1); /* 00 11 */\n\tout[1].v = _mm_unpacklo_epi64(s2, s3); /* 22 33 */\n\tout[2].v = _mm_unpackhi_epi64(s0, s1); /* 44 55 */\n\tout[3].v = _mm_unpackhi_epi64(s2, s3); /* 66 77 */\n\tout[4].v = _mm_unpackhi_epi64(s4, s5); /* 88 99 */\n}\n\nDONNA_INLINE static void\ncurve25519_tangle64_from32(packedelem64 *a, packedelem64 *b, const packedelem32 *c, const packedelem32 *d) {\n\txmmi c0,c1,c2,c3,c4,c5,t;\n\txmmi d0,d1,d2,d3,d4,d5;\n\txmmi t0,t1,t2,t3,t4,zero;\n\n\tt0 = _mm_shuffle_epi32(c[0].v, _MM_SHUFFLE(3,1,2,0));\n\tt1 = _mm_shuffle_epi32(c[1].v, _MM_SHUFFLE(3,1,2,0));\n\tt2 = _mm_shuffle_epi32(d[0].v, _MM_SHUFFLE(3,1,2,0));\n\tt3 = _mm_shuffle_epi32(d[1].v, _MM_SHUFFLE(3,1,2,0));\n\tc0 = _mm_unpacklo_epi64(t0, t1);\n\tc3 = _mm_unpackhi_epi64(t0, t1);\n\td0 = _mm_unpacklo_epi64(t2, t3);\n\td3 = _mm_unpackhi_epi64(t2, t3);\n\tt = _mm_unpacklo_epi64(c0, d0); a[0].v = t; a[1].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpackhi_epi64(c0, d0); a[2].v = t; a[3].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpacklo_epi64(c3, d3); b[0].v = t; b[1].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpackhi_epi64(c3, d3); b[2].v = t; b[3].v = _mm_srli_epi64(t, 32);\n\n\tt0 = _mm_shuffle_epi32(c[2].v, _MM_SHUFFLE(3,1,2,0));\n\tt1 = _mm_shuffle_epi32(c[3].v, _MM_SHUFFLE(3,1,2,0));\n\tt2 = _mm_shuffle_epi32(d[2].v, _MM_SHUFFLE(3,1,2,0));\n\tt3 = _mm_shuffle_epi32(d[3].v, _MM_SHUFFLE(3,1,2,0));\n\tc1 = _mm_unpacklo_epi64(t0, t1);\n\tc4 = _mm_unpackhi_epi64(t0, t1);\n\td1 = _mm_unpacklo_epi64(t2, t3);\n\td4 = _mm_unpackhi_epi64(t2, t3);\n\tt = _mm_unpacklo_epi64(c1, d1); a[4].v = t; a[5].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpackhi_epi64(c1, d1); a[6].v = t; a[7].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpacklo_epi64(c4, d4); b[4].v = t; b[5].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpackhi_epi64(c4, d4); b[6].v = t; b[7].v = _mm_srli_epi64(t, 32);\n\n\tt4 = _mm_shuffle_epi32(c[4].v, _MM_SHUFFLE(3,1,2,0));\n\tzero = _mm_setzero_si128();\n\tc2 = _mm_unpacklo_epi64(t4, zero);\n\tc5 = _mm_unpackhi_epi64(t4, zero);\n\tt4 = _mm_shuffle_epi32(d[4].v, _MM_SHUFFLE(3,1,2,0));\n\td2 = _mm_unpacklo_epi64(t4, zero);\n\td5 = _mm_unpackhi_epi64(t4, zero);\n\tt = _mm_unpacklo_epi64(c2, d2); a[8].v = t; a[9].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpacklo_epi64(c5, d5); b[8].v = t; b[9].v = _mm_srli_epi64(t, 32);\n}\n\nDONNA_INLINE static void\ncurve25519_tangle64(packedelem64 *out, const bignum25519 x, const bignum25519 z) {\n\txmmi x0,x1,x2,z0,z1,z2,t;\n\n\tx0 = _mm_load_si128((xmmi *)x + 0);\n\tx1 = _mm_load_si128((xmmi *)x + 1);\n\tx2 = _mm_load_si128((xmmi *)x + 2);\n\tz0 = _mm_load_si128((xmmi *)z + 0);\n\tz1 = _mm_load_si128((xmmi *)z + 1);\n\tz2 = _mm_load_si128((xmmi *)z + 2);\n\n\tt = _mm_unpacklo_epi64(x0, z0);\tout[0].v = t; out[1].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpackhi_epi64(x0, z0);\tout[2].v = t; out[3].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpacklo_epi64(x1, z1);\tout[4].v = t; out[5].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpackhi_epi64(x1, z1);\tout[6].v = t; out[7].v = _mm_srli_epi64(t, 32);\n\tt = _mm_unpacklo_epi64(x2, z2);\tout[8].v = t; out[9].v = _mm_srli_epi64(t, 32);\n}\n\nDONNA_INLINE static void\ncurve25519_tangleone64(packedelem64 *out, const bignum25519 x) {\n\txmmi x0,x1,x2;\n\n\tx0 = _mm_load_si128((xmmi *)(x + 0));\n\tx1 = _mm_load_si128((xmmi *)(x + 4));\n\tx2 = _mm_load_si128((xmmi *)(x + 8));\n\n\tout[0].v = _mm_shuffle_epi32(x0, _MM_SHUFFLE(0,0,0,0));\n\tout[1].v = _mm_shuffle_epi32(x0, _MM_SHUFFLE(1,1,1,1));\n\tout[2].v = _mm_shuffle_epi32(x0, _MM_SHUFFLE(2,2,2,2));\n\tout[3].v = _mm_shuffle_epi32(x0, _MM_SHUFFLE(3,3,3,3));\n\tout[4].v = _mm_shuffle_epi32(x1, _MM_SHUFFLE(0,0,0,0));\n\tout[5].v = _mm_shuffle_epi32(x1, _MM_SHUFFLE(1,1,1,1));\n\tout[6].v = _mm_shuffle_epi32(x1, _MM_SHUFFLE(2,2,2,2));\n\tout[7].v = _mm_shuffle_epi32(x1, _MM_SHUFFLE(3,3,3,3));\n\tout[8].v = _mm_shuffle_epi32(x2, _MM_SHUFFLE(0,0,0,0));\n\tout[9].v = _mm_shuffle_epi32(x2, _MM_SHUFFLE(1,1,1,1));\n}\n\nDONNA_INLINE static void\ncurve25519_swap64(packedelem64 *out) {\n\tout[0].v = _mm_shuffle_epi32(out[0].v, _MM_SHUFFLE(1,0,3,2));\n\tout[1].v = _mm_shuffle_epi32(out[1].v, _MM_SHUFFLE(1,0,3,2));\n\tout[2].v = _mm_shuffle_epi32(out[2].v, _MM_SHUFFLE(1,0,3,2));\n\tout[3].v = _mm_shuffle_epi32(out[3].v, _MM_SHUFFLE(1,0,3,2));\n\tout[4].v = _mm_shuffle_epi32(out[4].v, _MM_SHUFFLE(1,0,3,2));\n\tout[5].v = _mm_shuffle_epi32(out[5].v, _MM_SHUFFLE(1,0,3,2));\n\tout[6].v = _mm_shuffle_epi32(out[6].v, _MM_SHUFFLE(1,0,3,2));\n\tout[7].v = _mm_shuffle_epi32(out[7].v, _MM_SHUFFLE(1,0,3,2));\n\tout[8].v = _mm_shuffle_epi32(out[8].v, _MM_SHUFFLE(1,0,3,2));\n\tout[9].v = _mm_shuffle_epi32(out[9].v, _MM_SHUFFLE(1,0,3,2));\n}\n\nDONNA_INLINE static void\ncurve25519_untangle64(bignum25519 x, bignum25519 z, const packedelem64 *in) {\n\t_mm_store_si128((xmmi *)(x + 0), _mm_unpacklo_epi64(_mm_unpacklo_epi32(in[0].v, in[1].v), _mm_unpacklo_epi32(in[2].v, in[3].v)));\n\t_mm_store_si128((xmmi *)(x + 4), _mm_unpacklo_epi64(_mm_unpacklo_epi32(in[4].v, in[5].v), _mm_unpacklo_epi32(in[6].v, in[7].v)));\n\t_mm_store_si128((xmmi *)(x + 8), _mm_unpacklo_epi32(in[8].v, in[9].v)                                                          );\n\t_mm_store_si128((xmmi *)(z + 0), _mm_unpacklo_epi64(_mm_unpackhi_epi32(in[0].v, in[1].v), _mm_unpackhi_epi32(in[2].v, in[3].v)));\n\t_mm_store_si128((xmmi *)(z + 4), _mm_unpacklo_epi64(_mm_unpackhi_epi32(in[4].v, in[5].v), _mm_unpackhi_epi32(in[6].v, in[7].v)));\n\t_mm_store_si128((xmmi *)(z + 8), _mm_unpackhi_epi32(in[8].v, in[9].v)                                                          );\n}\n\nDONNA_INLINE static void\ncurve25519_mul_packed64(packedelem64 *out, const packedelem64 *r, const packedelem64 *s) {\n\txmmi r1,r2,r3,r4,r5,r6,r7,r8,r9;\n\txmmi r1_2,r3_2,r5_2,r7_2,r9_2;\n\txmmi c1,c2;\n\n\tout[0].v = _mm_mul_epu32(r[0].v, s[0].v);\n\tout[1].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[1].v), _mm_mul_epu32(r[1].v, s[0].v));\n\tr1_2 = _mm_slli_epi32(r[1].v, 1);\n\tout[2].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r1_2  , s[1].v), _mm_mul_epu32(r[2].v, s[0].v)));\n\tout[3].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[3].v), _mm_add_epi64(_mm_mul_epu32(r[1].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r[2].v, s[1].v), _mm_mul_epu32(r[3].v, s[0].v))));\n\tr3_2 = _mm_slli_epi32(r[3].v, 1);\n\tout[4].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[4].v), _mm_add_epi64(_mm_mul_epu32(r1_2  , s[3].v), _mm_add_epi64(_mm_mul_epu32(r[2].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r3_2  , s[1].v), _mm_mul_epu32(r[4].v, s[0].v)))));\n\tout[5].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[5].v), _mm_add_epi64(_mm_mul_epu32(r[1].v, s[4].v), _mm_add_epi64(_mm_mul_epu32(r[2].v, s[3].v), _mm_add_epi64(_mm_mul_epu32(r[3].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r[4].v, s[1].v), _mm_mul_epu32(r[5].v, s[0].v))))));\n\tr5_2 = _mm_slli_epi32(r[5].v, 1);\n\tout[6].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[6].v), _mm_add_epi64(_mm_mul_epu32(r1_2  , s[5].v), _mm_add_epi64(_mm_mul_epu32(r[2].v, s[4].v), _mm_add_epi64(_mm_mul_epu32(r3_2  , s[3].v), _mm_add_epi64(_mm_mul_epu32(r[4].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r5_2  , s[1].v), _mm_mul_epu32(r[6].v, s[0].v)))))));\n\tout[7].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[7].v), _mm_add_epi64(_mm_mul_epu32(r[1].v, s[6].v), _mm_add_epi64(_mm_mul_epu32(r[2].v, s[5].v), _mm_add_epi64(_mm_mul_epu32(r[3].v, s[4].v), _mm_add_epi64(_mm_mul_epu32(r[4].v, s[3].v), _mm_add_epi64(_mm_mul_epu32(r[5].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r[6].v, s[1].v), _mm_mul_epu32(r[7].v  , s[0].v))))))));\n\tr7_2 = _mm_slli_epi32(r[7].v, 1);\n\tout[8].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[8].v), _mm_add_epi64(_mm_mul_epu32(r1_2  , s[7].v), _mm_add_epi64(_mm_mul_epu32(r[2].v, s[6].v), _mm_add_epi64(_mm_mul_epu32(r3_2  , s[5].v), _mm_add_epi64(_mm_mul_epu32(r[4].v, s[4].v), _mm_add_epi64(_mm_mul_epu32(r5_2  , s[3].v), _mm_add_epi64(_mm_mul_epu32(r[6].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r7_2  , s[1].v), _mm_mul_epu32(r[8].v, s[0].v)))))))));\n\tout[9].v = _mm_add_epi64(_mm_mul_epu32(r[0].v, s[9].v), _mm_add_epi64(_mm_mul_epu32(r[1].v, s[8].v), _mm_add_epi64(_mm_mul_epu32(r[2].v, s[7].v), _mm_add_epi64(_mm_mul_epu32(r[3].v, s[6].v), _mm_add_epi64(_mm_mul_epu32(r[4].v, s[5].v), _mm_add_epi64(_mm_mul_epu32(r[5].v, s[4].v), _mm_add_epi64(_mm_mul_epu32(r[6].v, s[3].v), _mm_add_epi64(_mm_mul_epu32(r[7].v, s[2].v), _mm_add_epi64(_mm_mul_epu32(r[8].v, s[1].v), _mm_mul_epu32(r[9].v, s[0].v))))))))));\n\n\tr1 = _mm_mul_epu32(r[1].v, packednineteen.v);\n\tr2 = _mm_mul_epu32(r[2].v, packednineteen.v);\n\tr1_2 = _mm_slli_epi32(r1, 1);\n\tr3 = _mm_mul_epu32(r[3].v, packednineteen.v);\n\tr4 = _mm_mul_epu32(r[4].v, packednineteen.v);\n\tr3_2 = _mm_slli_epi32(r3, 1);\n\tr5 = _mm_mul_epu32(r[5].v, packednineteen.v);\n\tr6 = _mm_mul_epu32(r[6].v, packednineteen.v);\n\tr5_2 = _mm_slli_epi32(r5, 1);\n\tr7 = _mm_mul_epu32(r[7].v, packednineteen.v);\n\tr8 = _mm_mul_epu32(r[8].v, packednineteen.v);\n\tr7_2 = _mm_slli_epi32(r7, 1);\n\tr9 = _mm_mul_epu32(r[9].v, packednineteen.v);\n\tr9_2 = _mm_slli_epi32(r9, 1);\n\n\tout[0].v = _mm_add_epi64(out[0].v, _mm_add_epi64(_mm_mul_epu32(r9_2, s[1].v), _mm_add_epi64(_mm_mul_epu32(r8, s[2].v), _mm_add_epi64(_mm_mul_epu32(r7_2, s[3].v), _mm_add_epi64(_mm_mul_epu32(r6, s[4].v), _mm_add_epi64(_mm_mul_epu32(r5_2, s[5].v), _mm_add_epi64(_mm_mul_epu32(r4, s[6].v), _mm_add_epi64(_mm_mul_epu32(r3_2, s[7].v), _mm_add_epi64(_mm_mul_epu32(r2, s[8].v), _mm_mul_epu32(r1_2, s[9].v))))))))));\n\tout[1].v = _mm_add_epi64(out[1].v, _mm_add_epi64(_mm_mul_epu32(r9  , s[2].v), _mm_add_epi64(_mm_mul_epu32(r8, s[3].v), _mm_add_epi64(_mm_mul_epu32(r7  , s[4].v), _mm_add_epi64(_mm_mul_epu32(r6, s[5].v), _mm_add_epi64(_mm_mul_epu32(r5  , s[6].v), _mm_add_epi64(_mm_mul_epu32(r4, s[7].v), _mm_add_epi64(_mm_mul_epu32(r3  , s[8].v), _mm_mul_epu32(r2, s[9].v)))))))));\n\tout[2].v = _mm_add_epi64(out[2].v, _mm_add_epi64(_mm_mul_epu32(r9_2, s[3].v), _mm_add_epi64(_mm_mul_epu32(r8, s[4].v), _mm_add_epi64(_mm_mul_epu32(r7_2, s[5].v), _mm_add_epi64(_mm_mul_epu32(r6, s[6].v), _mm_add_epi64(_mm_mul_epu32(r5_2, s[7].v), _mm_add_epi64(_mm_mul_epu32(r4, s[8].v), _mm_mul_epu32(r3_2, s[9].v))))))));\n\tout[3].v = _mm_add_epi64(out[3].v, _mm_add_epi64(_mm_mul_epu32(r9  , s[4].v), _mm_add_epi64(_mm_mul_epu32(r8, s[5].v), _mm_add_epi64(_mm_mul_epu32(r7  , s[6].v), _mm_add_epi64(_mm_mul_epu32(r6, s[7].v), _mm_add_epi64(_mm_mul_epu32(r5  , s[8].v), _mm_mul_epu32(r4, s[9].v)))))));\n\tout[4].v = _mm_add_epi64(out[4].v, _mm_add_epi64(_mm_mul_epu32(r9_2, s[5].v), _mm_add_epi64(_mm_mul_epu32(r8, s[6].v), _mm_add_epi64(_mm_mul_epu32(r7_2, s[7].v), _mm_add_epi64(_mm_mul_epu32(r6, s[8].v), _mm_mul_epu32(r5_2, s[9].v))))));\n\tout[5].v = _mm_add_epi64(out[5].v, _mm_add_epi64(_mm_mul_epu32(r9  , s[6].v), _mm_add_epi64(_mm_mul_epu32(r8, s[7].v), _mm_add_epi64(_mm_mul_epu32(r7  , s[8].v), _mm_mul_epu32(r6, s[9].v)))));\n\tout[6].v = _mm_add_epi64(out[6].v, _mm_add_epi64(_mm_mul_epu32(r9_2, s[7].v), _mm_add_epi64(_mm_mul_epu32(r8, s[8].v), _mm_mul_epu32(r7_2, s[9].v))));\n\tout[7].v = _mm_add_epi64(out[7].v, _mm_add_epi64(_mm_mul_epu32(r9  , s[8].v), _mm_mul_epu32(r8, s[9].v)));\n\tout[8].v = _mm_add_epi64(out[8].v, _mm_mul_epu32(r9_2, s[9].v));\n\n\tc1 = _mm_srli_epi64(out[0].v, 26); c2 = _mm_srli_epi64(out[4].v, 26); out[0].v = _mm_and_si128(out[0].v, packedmask26.v); out[4].v = _mm_and_si128(out[4].v, packedmask26.v); out[1].v = _mm_add_epi64(out[1].v, c1); out[5].v = _mm_add_epi64(out[5].v, c2);\n\tc1 = _mm_srli_epi64(out[1].v, 25); c2 = _mm_srli_epi64(out[5].v, 25); out[1].v = _mm_and_si128(out[1].v, packedmask25.v); out[5].v = _mm_and_si128(out[5].v, packedmask25.v); out[2].v = _mm_add_epi64(out[2].v, c1); out[6].v = _mm_add_epi64(out[6].v, c2);\n\tc1 = _mm_srli_epi64(out[2].v, 26); c2 = _mm_srli_epi64(out[6].v, 26); out[2].v = _mm_and_si128(out[2].v, packedmask26.v); out[6].v = _mm_and_si128(out[6].v, packedmask26.v); out[3].v = _mm_add_epi64(out[3].v, c1); out[7].v = _mm_add_epi64(out[7].v, c2);\n\tc1 = _mm_srli_epi64(out[3].v, 25); c2 = _mm_srli_epi64(out[7].v, 25); out[3].v = _mm_and_si128(out[3].v, packedmask25.v); out[7].v = _mm_and_si128(out[7].v, packedmask25.v); out[4].v = _mm_add_epi64(out[4].v, c1); out[8].v = _mm_add_epi64(out[8].v, c2);\n\t                                   c2 = _mm_srli_epi64(out[8].v, 26);                                                     out[8].v = _mm_and_si128(out[8].v, packedmask26.v);                                         out[9].v = _mm_add_epi64(out[9].v, c2);\n\t                                   c2 = _mm_srli_epi64(out[9].v, 25);                                                     out[9].v = _mm_and_si128(out[9].v, packedmask25.v);                                         out[0].v = _mm_add_epi64(out[0].v, _mm_mul_epu32(c2, packednineteen.v));\n\tc1 = _mm_srli_epi64(out[0].v, 26); c2 = _mm_srli_epi64(out[4].v, 26); out[0].v = _mm_and_si128(out[0].v, packedmask26.v); out[4].v = _mm_and_si128(out[4].v, packedmask26.v); out[1].v = _mm_add_epi64(out[1].v, c1); out[5].v = _mm_add_epi64(out[5].v, c2);\n}\n\nDONNA_INLINE static void\ncurve25519_square_packed64(packedelem64 *out, const packedelem64 *r) {\n\txmmi r0,r1,r2,r3;\n\txmmi r1_2,r3_2,r4_2,r5_2,r6_2,r7_2;\n\txmmi d5,d6,d7,d8,d9;\n\txmmi c1,c2;\n\n\tr0 = r[0].v;\n\tr1 = r[1].v;\n\tr2 = r[2].v;\n\tr3 = r[3].v;\n\n\tout[0].v = _mm_mul_epu32(r0, r0);\n\tr0 = _mm_slli_epi32(r0, 1);\n\tout[1].v = _mm_mul_epu32(r0, r1);\n\tr1_2 = _mm_slli_epi32(r1, 1);\n\tout[2].v = _mm_add_epi64(_mm_mul_epu32(r0, r2    ), _mm_mul_epu32(r1, r1_2));\n\tr1 = r1_2;\n\tout[3].v = _mm_add_epi64(_mm_mul_epu32(r0, r3    ), _mm_mul_epu32(r1, r2  ));\n\tr3_2 = _mm_slli_epi32(r3, 1);\n\tout[4].v = _mm_add_epi64(_mm_mul_epu32(r0, r[4].v), _mm_add_epi64(_mm_mul_epu32(r1, r3_2  ), _mm_mul_epu32(r2, r2)));\n\tr2 = _mm_slli_epi32(r2, 1);\n\tout[5].v = _mm_add_epi64(_mm_mul_epu32(r0, r[5].v), _mm_add_epi64(_mm_mul_epu32(r1, r[4].v), _mm_mul_epu32(r2, r3)));\n\tr5_2 = _mm_slli_epi32(r[5].v, 1);\n\tout[6].v = _mm_add_epi64(_mm_mul_epu32(r0, r[6].v), _mm_add_epi64(_mm_mul_epu32(r1, r5_2  ), _mm_add_epi64(_mm_mul_epu32(r2, r[4].v), _mm_mul_epu32(r3, r3_2  ))));\n\tr3 = r3_2;\n\tout[7].v = _mm_add_epi64(_mm_mul_epu32(r0, r[7].v), _mm_add_epi64(_mm_mul_epu32(r1, r[6].v), _mm_add_epi64(_mm_mul_epu32(r2, r[5].v), _mm_mul_epu32(r3, r[4].v))));\n\tr7_2 = _mm_slli_epi32(r[7].v, 1);\n\tout[8].v = _mm_add_epi64(_mm_mul_epu32(r0, r[8].v), _mm_add_epi64(_mm_mul_epu32(r1, r7_2  ), _mm_add_epi64(_mm_mul_epu32(r2, r[6].v), _mm_add_epi64(_mm_mul_epu32(r3, r5_2  ), _mm_mul_epu32(r[4].v, r[4].v)))));\n\tout[9].v = _mm_add_epi64(_mm_mul_epu32(r0, r[9].v), _mm_add_epi64(_mm_mul_epu32(r1, r[8].v), _mm_add_epi64(_mm_mul_epu32(r2, r[7].v), _mm_add_epi64(_mm_mul_epu32(r3, r[6].v), _mm_mul_epu32(r[4].v, r5_2  )))));\n\n\td5 = _mm_mul_epu32(r[5].v, packedthirtyeight.v);\n\td6 = _mm_mul_epu32(r[6].v, packednineteen.v);\n\td7 = _mm_mul_epu32(r[7].v, packedthirtyeight.v);\n\td8 = _mm_mul_epu32(r[8].v, packednineteen.v);\n\td9 = _mm_mul_epu32(r[9].v, packedthirtyeight.v);\n\n\tr4_2 = _mm_slli_epi32(r[4].v, 1);\n\tr6_2 = _mm_slli_epi32(r[6].v, 1);\n\tout[0].v = _mm_add_epi64(out[0].v, _mm_add_epi64(_mm_mul_epu32(d9, r1                   ), _mm_add_epi64(_mm_mul_epu32(d8, r2  ), _mm_add_epi64(_mm_mul_epu32(d7, r3    ), _mm_add_epi64(_mm_mul_epu32(d6, r4_2), _mm_mul_epu32(d5, r[5].v))))));\n\tout[1].v = _mm_add_epi64(out[1].v, _mm_add_epi64(_mm_mul_epu32(d9, _mm_srli_epi32(r2, 1)), _mm_add_epi64(_mm_mul_epu32(d8, r3  ), _mm_add_epi64(_mm_mul_epu32(d7, r[4].v), _mm_mul_epu32(d6, r5_2  )))));\n\tout[2].v = _mm_add_epi64(out[2].v, _mm_add_epi64(_mm_mul_epu32(d9, r3                   ), _mm_add_epi64(_mm_mul_epu32(d8, r4_2), _mm_add_epi64(_mm_mul_epu32(d7, r5_2  ), _mm_mul_epu32(d6, r[6].v)))));\n\tout[3].v = _mm_add_epi64(out[3].v, _mm_add_epi64(_mm_mul_epu32(d9, r[4].v               ), _mm_add_epi64(_mm_mul_epu32(d8, r5_2), _mm_mul_epu32(d7, r[6].v))));\n\tout[4].v = _mm_add_epi64(out[4].v, _mm_add_epi64(_mm_mul_epu32(d9, r5_2                 ), _mm_add_epi64(_mm_mul_epu32(d8, r6_2), _mm_mul_epu32(d7, r[7].v))));\n\tout[5].v = _mm_add_epi64(out[5].v, _mm_add_epi64(_mm_mul_epu32(d9, r[6].v               ), _mm_mul_epu32(d8, r7_2  )));\n\tout[6].v = _mm_add_epi64(out[6].v, _mm_add_epi64(_mm_mul_epu32(d9, r7_2                 ), _mm_mul_epu32(d8, r[8].v)));\n\tout[7].v = _mm_add_epi64(out[7].v, _mm_mul_epu32(d9, r[8].v));\n\tout[8].v = _mm_add_epi64(out[8].v, _mm_mul_epu32(d9, r[9].v));\n\n\tc1 = _mm_srli_epi64(out[0].v, 26); c2 = _mm_srli_epi64(out[4].v, 26); out[0].v = _mm_and_si128(out[0].v, packedmask26.v); out[4].v = _mm_and_si128(out[4].v, packedmask26.v); out[1].v = _mm_add_epi64(out[1].v, c1); out[5].v = _mm_add_epi64(out[5].v, c2);\n\tc1 = _mm_srli_epi64(out[1].v, 25); c2 = _mm_srli_epi64(out[5].v, 25); out[1].v = _mm_and_si128(out[1].v, packedmask25.v); out[5].v = _mm_and_si128(out[5].v, packedmask25.v); out[2].v = _mm_add_epi64(out[2].v, c1); out[6].v = _mm_add_epi64(out[6].v, c2);\n\tc1 = _mm_srli_epi64(out[2].v, 26); c2 = _mm_srli_epi64(out[6].v, 26); out[2].v = _mm_and_si128(out[2].v, packedmask26.v); out[6].v = _mm_and_si128(out[6].v, packedmask26.v); out[3].v = _mm_add_epi64(out[3].v, c1); out[7].v = _mm_add_epi64(out[7].v, c2);\n\tc1 = _mm_srli_epi64(out[3].v, 25); c2 = _mm_srli_epi64(out[7].v, 25); out[3].v = _mm_and_si128(out[3].v, packedmask25.v); out[7].v = _mm_and_si128(out[7].v, packedmask25.v); out[4].v = _mm_add_epi64(out[4].v, c1); out[8].v = _mm_add_epi64(out[8].v, c2);\n\t                                   c2 = _mm_srli_epi64(out[8].v, 26);                                                     out[8].v = _mm_and_si128(out[8].v, packedmask26.v);                                         out[9].v = _mm_add_epi64(out[9].v, c2);\n\t                                   c2 = _mm_srli_epi64(out[9].v, 25);                                                     out[9].v = _mm_and_si128(out[9].v, packedmask25.v);                                         out[0].v = _mm_add_epi64(out[0].v, _mm_mul_epu32(c2, packednineteen.v));\n\tc1 = _mm_srli_epi64(out[0].v, 26); c2 = _mm_srli_epi64(out[4].v, 26); out[0].v = _mm_and_si128(out[0].v, packedmask26.v); out[4].v = _mm_and_si128(out[4].v, packedmask26.v); out[1].v = _mm_add_epi64(out[1].v, c1); out[5].v = _mm_add_epi64(out[5].v, c2);\n}\n\n\n/* Take a little-endian, 32-byte number and expand it into polynomial form */\nstatic void\ncurve25519_expand(bignum25519 out, const unsigned char in[32]) {\n\tuint32_t x0,x1,x2,x3,x4,x5,x6,x7;\n\n\tx0 = *(uint32_t *)(in + 0);\n\tx1 = *(uint32_t *)(in + 4);\n\tx2 = *(uint32_t *)(in + 8);\n\tx3 = *(uint32_t *)(in + 12);\n\tx4 = *(uint32_t *)(in + 16);\n\tx5 = *(uint32_t *)(in + 20);\n\tx6 = *(uint32_t *)(in + 24);\n\tx7 = *(uint32_t *)(in + 28);\n\n\tout[0] = (                        x0       ) & 0x3ffffff;\n\tout[1] = ((((uint64_t)x1 << 32) | x0) >> 26) & 0x1ffffff;\n\tout[2] = ((((uint64_t)x2 << 32) | x1) >> 19) & 0x3ffffff;\n\tout[3] = ((((uint64_t)x3 << 32) | x2) >> 13) & 0x1ffffff;\n\tout[4] = ((                       x3) >>  6) & 0x3ffffff;\n\tout[5] = (                        x4       ) & 0x1ffffff;\n\tout[6] = ((((uint64_t)x5 << 32) | x4) >> 25) & 0x3ffffff;\n\tout[7] = ((((uint64_t)x6 << 32) | x5) >> 19) & 0x1ffffff;\n\tout[8] = ((((uint64_t)x7 << 32) | x6) >> 12) & 0x3ffffff;\n\tout[9] = ((                       x7) >>  6) & 0x1ffffff;\n\tout[10] = 0;\n\tout[11] = 0;\n}\n\n/* Take a fully reduced polynomial form number and contract it into a\n * little-endian, 32-byte array\n */\nstatic void\ncurve25519_contract(unsigned char out[32], const bignum25519 in) {\n\tbignum25519 ALIGN(16) f;\n\tcurve25519_copy(f, in);\n\n\t#define carry_pass() \\\n\t\tf[1] += f[0] >> 26; f[0] &= 0x3ffffff; \\\n\t\tf[2] += f[1] >> 25; f[1] &= 0x1ffffff; \\\n\t\tf[3] += f[2] >> 26; f[2] &= 0x3ffffff; \\\n\t\tf[4] += f[3] >> 25; f[3] &= 0x1ffffff; \\\n\t\tf[5] += f[4] >> 26; f[4] &= 0x3ffffff; \\\n\t\tf[6] += f[5] >> 25; f[5] &= 0x1ffffff; \\\n\t\tf[7] += f[6] >> 26; f[6] &= 0x3ffffff; \\\n\t\tf[8] += f[7] >> 25; f[7] &= 0x1ffffff; \\\n\t\tf[9] += f[8] >> 26; f[8] &= 0x3ffffff;\n\n\t#define carry_pass_full() \\\n\t\tcarry_pass() \\\n\t\tf[0] += 19 * (f[9] >> 25); f[9] &= 0x1ffffff;\n\n\t#define carry_pass_final() \\\n\t\tcarry_pass() \\\n\t\tf[9] &= 0x1ffffff;\n\n\tcarry_pass_full()\n\tcarry_pass_full()\n\n\t/* now t is between 0 and 2^255-1, properly carried. */\n\t/* case 1: between 0 and 2^255-20. case 2: between 2^255-19 and 2^255-1. */\n\tf[0] += 19;\n\tcarry_pass_full()\n\n\t/* now between 19 and 2^255-1 in both cases, and offset by 19. */\n\tf[0] += (1 << 26) - 19;\n\tf[1] += (1 << 25) - 1;\n\tf[2] += (1 << 26) - 1;\n\tf[3] += (1 << 25) - 1;\n\tf[4] += (1 << 26) - 1;\n\tf[5] += (1 << 25) - 1;\n\tf[6] += (1 << 26) - 1;\n\tf[7] += (1 << 25) - 1;\n\tf[8] += (1 << 26) - 1;\n\tf[9] += (1 << 25) - 1;\n\n\t/* now between 2^255 and 2^256-20, and offset by 2^255. */\n\tcarry_pass_final()\n\n\t#undef carry_pass\n\t#undef carry_full\n\t#undef carry_final\n\n\tf[1] <<= 2;\n\tf[2] <<= 3;\n\tf[3] <<= 5;\n\tf[4] <<= 6;\n\tf[6] <<= 1;\n\tf[7] <<= 3;\n\tf[8] <<= 4;\n\tf[9] <<= 6;\n\n\t#define F(i, s) \\\n\t\tout[s+0] |= (unsigned char )(f[i] & 0xff); \\\n\t\tout[s+1] = (unsigned char )((f[i] >> 8) & 0xff); \\\n\t\tout[s+2] = (unsigned char )((f[i] >> 16) & 0xff); \\\n\t\tout[s+3] = (unsigned char )((f[i] >> 24) & 0xff);\n\n\tout[0] = 0;\n\tout[16] = 0;\n\tF(0,0);\n\tF(1,3);\n\tF(2,6);\n\tF(3,9);\n\tF(4,12);\n\tF(5,16);\n\tF(6,19);\n\tF(7,22);\n\tF(8,25);\n\tF(9,28);\n\t#undef F\n}\n\n/* if (iswap) swap(a, b) */\nDONNA_INLINE static void\ncurve25519_swap_conditional(bignum25519 a, bignum25519 b, uint32_t iswap) {\n\tconst uint32_t swap = (uint32_t)(-(int32_t)iswap);\n\txmmi a0,a1,a2,b0,b1,b2,x0,x1,x2;\n\txmmi mask = _mm_cvtsi32_si128(swap);\n\tmask = _mm_shuffle_epi32(mask, 0);\n\ta0 = _mm_load_si128((xmmi *)a + 0);\n\ta1 = _mm_load_si128((xmmi *)a + 1);\n\tb0 = _mm_load_si128((xmmi *)b + 0);\n\tb1 = _mm_load_si128((xmmi *)b + 1);\n\tb0 = _mm_xor_si128(a0, b0);\n\tb1 = _mm_xor_si128(a1, b1);\n\tx0 = _mm_and_si128(b0, mask);\n\tx1 = _mm_and_si128(b1, mask);\n\tx0 = _mm_xor_si128(x0, a0);\n\tx1 = _mm_xor_si128(x1, a1);\n\ta0 = _mm_xor_si128(x0, b0);\n\ta1 = _mm_xor_si128(x1, b1);\n\t_mm_store_si128((xmmi *)a + 0, x0);\n\t_mm_store_si128((xmmi *)a + 1, x1);\t\n\t_mm_store_si128((xmmi *)b + 0, a0);\n\t_mm_store_si128((xmmi *)b + 1, a1);\n\n\ta2 = _mm_load_si128((xmmi *)a + 2);\n\tb2 = _mm_load_si128((xmmi *)b + 2);\n\tb2 = _mm_xor_si128(a2, b2);\n\tx2 = _mm_and_si128(b2, mask);\n\tx2 = _mm_xor_si128(x2, a2);\n\ta2 = _mm_xor_si128(x2, b2);\t\n\t_mm_store_si128((xmmi *)b + 2, a2);\n\t_mm_store_si128((xmmi *)a + 2, x2);\n}\n\n/* out = (flag) ? out : in */\nDONNA_INLINE static void\ncurve25519_move_conditional_bytes(uint8_t out[96], const uint8_t in[96], uint32_t flag) {\n\txmmi a0,a1,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5;\n\tconst uint32_t nb = flag - 1;\n\txmmi masknb = _mm_shuffle_epi32(_mm_cvtsi32_si128(nb),0);\n\ta0 = _mm_load_si128((xmmi *)in + 0);\n\ta1 = _mm_load_si128((xmmi *)in + 1);\n\ta2 = _mm_load_si128((xmmi *)in + 2);\n\tb0 = _mm_load_si128((xmmi *)out + 0);\n\tb1 = _mm_load_si128((xmmi *)out + 1);\n\tb2 = _mm_load_si128((xmmi *)out + 2);\n\ta0 = _mm_andnot_si128(masknb, a0);\n\ta1 = _mm_andnot_si128(masknb, a1);\n\ta2 = _mm_andnot_si128(masknb, a2);\n\tb0 = _mm_and_si128(masknb, b0);\n\tb1 = _mm_and_si128(masknb, b1);\n\tb2 = _mm_and_si128(masknb, b2);\n\ta0 = _mm_or_si128(a0, b0);\n\ta1 = _mm_or_si128(a1, b1);\n\ta2 = _mm_or_si128(a2, b2);\n\t_mm_store_si128((xmmi*)out + 0, a0);\n\t_mm_store_si128((xmmi*)out + 1, a1);\n\t_mm_store_si128((xmmi*)out + 2, a2);\n\n\ta3 = _mm_load_si128((xmmi *)in + 3);\n\ta4 = _mm_load_si128((xmmi *)in + 4);\n\ta5 = _mm_load_si128((xmmi *)in + 5);\n\tb3 = _mm_load_si128((xmmi *)out + 3);\n\tb4 = _mm_load_si128((xmmi *)out + 4);\n\tb5 = _mm_load_si128((xmmi *)out + 5);\n\ta3 = _mm_andnot_si128(masknb, a3);\n\ta4 = _mm_andnot_si128(masknb, a4);\n\ta5 = _mm_andnot_si128(masknb, a5);\n\tb3 = _mm_and_si128(masknb, b3);\n\tb4 = _mm_and_si128(masknb, b4);\n\tb5 = _mm_and_si128(masknb, b5);\n\ta3 = _mm_or_si128(a3, b3);\n\ta4 = _mm_or_si128(a4, b4);\n\ta5 = _mm_or_si128(a5, b5);\n\t_mm_store_si128((xmmi*)out + 3, a3);\n\t_mm_store_si128((xmmi*)out + 4, a4);\n\t_mm_store_si128((xmmi*)out + 5, a5);\n}\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-32bit-sse2.h",
    "content": "#if defined(ED25519_GCC_32BIT_SSE_CHOOSE)\n\n#define HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS\n\nDONNA_NOINLINE static void\nge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b) {\n\tint32_t breg = (int32_t)b;\n\tuint32_t sign = (uint32_t)breg >> 31;\n\tuint32_t mask = ~(sign - 1);\n\tuint32_t u = (breg + mask) ^ mask;\n\n\t__asm__ __volatile__ (\n\t\t/* ysubx+xaddy */\n\t\t\"movl %0, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm6              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm6, %%xmm6    ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm2, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm3, %%xmm3             ;\\n\"\n\n\t\t/* 0 */\n\t\t\"movl $0, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movl $1, %%ecx                  ;\\n\"\n\t\t\"movd %%ecx, %%xmm4              ;\\n\"\n\t\t\"pxor %%xmm5, %%xmm5             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 1 */\n\t\t\"movl $1, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 0(%1), %%xmm4            ;\\n\"\n\t\t\"movdqa 16(%1), %%xmm5           ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 32(%1), %%xmm4           ;\\n\"\n\t\t\"movdqa 48(%1), %%xmm5           ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 2 */\n\t\t\"movl $2, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 96(%1), %%xmm4           ;\\n\"\n\t\t\"movdqa 112(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 128(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 144(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 3 */\n\t\t\"movl $3, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 192(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 208(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 224(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 240(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 4 */\n\t\t\"movl $4, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 288(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 304(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 320(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 336(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 5 */\n\t\t\"movl $5, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 384(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 400(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 416(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 432(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 6 */\n\t\t\"movl $6, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 480(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 496(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 512(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 528(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 7 */\n\t\t\"movl $7, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 576(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 592(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 608(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 624(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* 8 */\n\t\t\"movl $8, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 672(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 688(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm0              ;\\n\"\n\t\t\"por %%xmm5, %%xmm1              ;\\n\"\n\t\t\"movdqa 704(%1), %%xmm4          ;\\n\"\n\t\t\"movdqa 720(%1), %%xmm5          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"por %%xmm4, %%xmm2              ;\\n\"\n\t\t\"por %%xmm5, %%xmm3              ;\\n\"\n\n\t\t/* conditional swap based on sign */\n\t\t\"movl %3, %%ecx                  ;\\n\"\n\t\t\"movl %2, %%eax                  ;\\n\"\n\t\t\"xorl $1, %%ecx                  ;\\n\"\n\t\t\"movd %%ecx, %%xmm6              ;\\n\"\n\t\t\"pxor %%xmm7, %%xmm7             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm6, %%xmm6    ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa %%xmm2, %%xmm4           ;\\n\"\n\t\t\"movdqa %%xmm3, %%xmm5           ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm5             ;\\n\"\n\t\t\"pxor %%xmm4, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm5, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\n\t\t/* store ysubx */\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"movl %%ecx, %%edx               ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 0(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"shrdl $26, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 4(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"shrdl $19, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 8(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"shrdl $13, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 12(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrl $6, %%ecx                  ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 16(%%eax)           ;\\n\"\n\t\t\"movl %%edx, %%ecx               ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 20(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrdl $25, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 24(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%ecx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrdl $19, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 28(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"shrdl $12, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 32(%%eax)           ;\\n\"\n\t\t\"shrl $6, %%edx                  ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"xorl %%ecx, %%ecx               ;\\n\"\n\t\t\"movl %%edx, 36(%%eax)           ;\\n\"\n\t\t\"movl %%ecx, 40(%%eax)           ;\\n\"\n\t\t\"movl %%ecx, 44(%%eax)           ;\\n\"\n\n\t\t/* store xaddy */\n\t\t\"addl $48, %%eax                 ;\\n\"\n\t\t\"movdqa %%xmm2, %%xmm0           ;\\n\"\n\t\t\"movdqa %%xmm3, %%xmm1           ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"movl %%ecx, %%edx               ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 0(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"shrdl $26, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 4(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"shrdl $19, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 8(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"shrdl $13, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 12(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrl $6, %%ecx                  ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 16(%%eax)           ;\\n\"\n\t\t\"movl %%edx, %%ecx               ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 20(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrdl $25, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 24(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%ecx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrdl $19, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 28(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"shrdl $12, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 32(%%eax)           ;\\n\"\n\t\t\"shrl $6, %%edx                  ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"xorl %%ecx, %%ecx               ;\\n\"\n\t\t\"movl %%edx, 36(%%eax)           ;\\n\"\n\t\t\"movl %%ecx, 40(%%eax)           ;\\n\"\n\t\t\"movl %%ecx, 44(%%eax)           ;\\n\"\n\n\t\t/* t2d */\n\t\t\"movl %0, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm6              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm6, %%xmm6    ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm1             ;\\n\"\n\n\t\t/* 0 */\n\t\t\"movl $0, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm1             ;\\n\"\n\n\t\t/* 1 */\n\t\t\"movl $1, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 64(%1), %%xmm3           ;\\n\"\n\t\t\"movdqa 80(%1), %%xmm4           ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* 2 */\n\t\t\"movl $2, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 160(%1), %%xmm3          ;\\n\"\n\t\t\"movdqa 176(%1), %%xmm4          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* 3 */\n\t\t\"movl $3, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 256(%1), %%xmm3          ;\\n\"\n\t\t\"movdqa 272(%1), %%xmm4          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* 4 */\n\t\t\"movl $4, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 352(%1), %%xmm3          ;\\n\"\n\t\t\"movdqa 368(%1), %%xmm4          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* 5 */\n\t\t\"movl $5, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 448(%1), %%xmm3          ;\\n\"\n\t\t\"movdqa 464(%1), %%xmm4          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* 6 */\n\t\t\"movl $6, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 544(%1), %%xmm3          ;\\n\"\n\t\t\"movdqa 560(%1), %%xmm4          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* 7 */\n\t\t\"movl $7, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 640(%1), %%xmm3          ;\\n\"\n\t\t\"movdqa 656(%1), %%xmm4          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* 8 */\n\t\t\"movl $8, %%eax                  ;\\n\"\n\t\t\"movd %%eax, %%xmm7              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm7, %%xmm7    ;\\n\"\n\t\t\"pcmpeqd %%xmm6, %%xmm7          ;\\n\"\n\t\t\"movdqa 736(%1), %%xmm3          ;\\n\"\n\t\t\"movdqa 752(%1), %%xmm4          ;\\n\"\n\t\t\"pand %%xmm7, %%xmm3             ;\\n\"\n\t\t\"pand %%xmm7, %%xmm4             ;\\n\"\n\t\t\"por %%xmm3, %%xmm0              ;\\n\"\n\t\t\"por %%xmm4, %%xmm1              ;\\n\"\n\n\t\t/* store t2d */\n\t\t\"movl %2, %%eax                  ;\\n\"\n\t\t\"addl $96, %%eax                 ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"movl %%ecx, %%edx               ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 0(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"shrdl $26, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 4(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"shrdl $19, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 8(%%eax)            ;\\n\"\n\t\t\"movd %%xmm0, %%ecx              ;\\n\"\n\t\t\"shrdl $13, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 12(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrl $6, %%ecx                  ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 16(%%eax)           ;\\n\"\n\t\t\"movl %%edx, %%ecx               ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 20(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrdl $25, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 24(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%ecx              ;\\n\"\n\t\t\"pshufd $0x39, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"shrdl $19, %%ecx, %%edx         ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"movl %%edx, 28(%%eax)           ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"movd %%xmm1, %%edx              ;\\n\"\n\t\t\"shrdl $12, %%edx, %%ecx         ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"movl %%ecx, 32(%%eax)           ;\\n\"\n\t\t\"shrl $6, %%edx                  ;\\n\"\n\t\t\"andl $0x1ffffff, %%edx          ;\\n\"\n\t\t\"xorl %%ecx, %%ecx               ;\\n\"\n\t\t\"movl %%edx, 36(%%eax)           ;\\n\"\n\t\t\"movl %%ecx, 40(%%eax)           ;\\n\"\n\t\t\"movl %%ecx, 44(%%eax)           ;\\n\"\n\t\t\"movdqa 0(%%eax), %%xmm0         ;\\n\"\n\t\t\"movdqa 16(%%eax), %%xmm1        ;\\n\"\n\t\t\"movdqa 32(%%eax), %%xmm2        ;\\n\"\n\n\t\t/* conditionally negate t2d */\n\n\t\t/* set up 2p in to 3/4 */\n\t\t\"movl $0x7ffffda, %%ecx          ;\\n\"\n\t\t\"movl $0x3fffffe, %%edx          ;\\n\"\n\t\t\"movd %%ecx, %%xmm3              ;\\n\"\n\t\t\"movd %%edx, %%xmm5              ;\\n\"\n\t\t\"movl $0x7fffffe, %%ecx          ;\\n\"\n\t\t\"movd %%ecx, %%xmm4              ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm3        ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm4        ;\\n\"\n\t\t\"punpcklqdq %%xmm4, %%xmm3       ;\\n\"\n\t\t\"movdqa %%xmm4, %%xmm5           ;\\n\"\n\t\t\"punpcklqdq %%xmm4, %%xmm4       ;\\n\"\n\n\t\t/* subtract and conditionally move */\n\t\t\"movl %3, %%ecx                  ;\\n\"\n\t\t\"sub $1, %%ecx                   ;\\n\"\n\t\t\"movd %%ecx, %%xmm6              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm6, %%xmm6    ;\\n\"\n\t\t\"movdqa %%xmm6, %%xmm7           ;\\n\"\n\t\t\"psubd %%xmm0, %%xmm3            ;\\n\"\n\t\t\"psubd %%xmm1, %%xmm4            ;\\n\"\n\t\t\"psubd %%xmm2, %%xmm5            ;\\n\"\n\t\t\"pand %%xmm6, %%xmm0             ;\\n\"\n\t\t\"pand %%xmm6, %%xmm1             ;\\n\"\n\t\t\"pand %%xmm6, %%xmm2             ;\\n\"\n\t\t\"pandn %%xmm3, %%xmm6            ;\\n\"\n\t\t\"movdqa %%xmm7, %%xmm3           ;\\n\"\n\t\t\"pandn %%xmm4, %%xmm7            ;\\n\"\n\t\t\"pandn %%xmm5, %%xmm3            ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm3, %%xmm2              ;\\n\"\n\n\t\t/* store */\n\t\t\"movdqa %%xmm0, 0(%%eax)         ;\\n\"\n\t\t\"movdqa %%xmm1, 16(%%eax)        ;\\n\"\n\t\t\"movdqa %%xmm2, 32(%%eax)        ;\\n\"\n\t\t:\n\t\t: \"m\"(u), \"r\"(&table[pos * 8]), \"m\"(t), \"m\"(sign) /* %0 = u, %1 = table, %2 = t, %3 = sign */\n\t\t: \"%eax\", \"%ecx\", \"%edx\", \"%xmm0\", \"%xmm1\", \"%xmm2\", \"%xmm3\", \"%xmm4\", \"%xmm5\", \"%xmm6\", \"%xmm7\", \"cc\", \"memory\"\n\t);\n}\n\n#endif /* defined(ED25519_GCC_32BIT_SSE_CHOOSE) */\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-32bit-tables.h",
    "content": "static const ge25519 ALIGN(16) ge25519_basepoint = {\n\t{0x0325d51a,0x018b5823,0x00f6592a,0x0104a92d,0x01a4b31d,0x01d6dc5c,0x027118fe,0x007fd814,0x013cd6e5,0x0085a4db},\n\t{0x02666658,0x01999999,0x00cccccc,0x01333333,0x01999999,0x00666666,0x03333333,0x00cccccc,0x02666666,0x01999999},\n\t{0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000},\n\t{0x01b7dda3,0x01a2ace9,0x025eadbb,0x0003ba8a,0x0083c27e,0x00abe37d,0x01274732,0x00ccacdd,0x00fd78b7,0x019e1d7c}\n};\n\n/*\n\td\n*/\n\nstatic const bignum25519 ALIGN(16) ge25519_ecd = {\n\t0x035978a3,0x00d37284,0x03156ebd,0x006a0a0e,0x0001c029,0x0179e898,0x03a03cbb,0x01ce7198,0x02e2b6ff,0x01480db3\n};\n\nstatic const bignum25519 ALIGN(16) ge25519_ec2d = {\n\t0x02b2f159,0x01a6e509,0x022add7a,0x00d4141d,0x00038052,0x00f3d130,0x03407977,0x019ce331,0x01c56dff,0x00901b67\n};\n\n/*\n\tsqrt(-1)\n*/\n\nstatic const bignum25519 ALIGN(16) ge25519_sqrtneg1 = {\n\t0x020ea0b0,0x0186c9d2,0x008f189d,0x0035697f,0x00bd0c60,0x01fbd7a7,0x02804c9e,0x01e16569,0x0004fc1d,0x00ae0c92\n};\n\nstatic const ge25519_niels ALIGN(16) ge25519_niels_sliding_multiples[32] = {\n\t{{0x0340913e,0x000e4175,0x03d673a2,0x002e8a05,0x03f4e67c,0x008f8a09,0x00c21a34,0x004cf4b8,0x01298f81,0x0113f4be},{0x018c3b85,0x0124f1bd,0x01c325f7,0x0037dc60,0x033e4cb7,0x003d42c2,0x01a44c32,0x014ca4e1,0x03a33d4b,0x001f3e74},{0x037aaa68,0x00448161,0x0093d579,0x011e6556,0x009b67a0,0x0143598c,0x01bee5ee,0x00b50b43,0x0289f0c6,0x01bc45ed}},\n\t{{0x00fcd265,0x0047fa29,0x034faacc,0x01ef2e0d,0x00ef4d4f,0x014bd6bd,0x00f98d10,0x014c5026,0x007555bd,0x00aae456},{0x00ee9730,0x016c2a13,0x017155e4,0x01874432,0x00096a10,0x01016732,0x01a8014f,0x011e9823,0x01b9a80f,0x01e85938},{0x01d0d889,0x01a4cfc3,0x034c4295,0x0110e1ae,0x0162508c,0x00f2db4c,0x0072a2c6,0x0098da2e,0x02f12b9b,0x0168a09a}},\n\t{{0x0047d6ba,0x0060b0e9,0x0136eff2,0x008a5939,0x03540053,0x0064a087,0x02788e5c,0x00be7c67,0x033eb1b5,0x005529f9},{0x00a5bb33,0x00af1102,0x01a05442,0x001e3af7,0x02354123,0x00bfec44,0x01f5862d,0x00dd7ba3,0x03146e20,0x00a51733},{0x012a8285,0x00f6fc60,0x023f9797,0x003e85ee,0x009c3820,0x01bda72d,0x01b3858d,0x00d35683,0x0296b3bb,0x010eaaf9}},\n\t{{0x023221b1,0x01cb26aa,0x0074f74d,0x0099ddd1,0x01b28085,0x00192c3a,0x013b27c9,0x00fc13bd,0x01d2e531,0x0075bb75},{0x004ea3bf,0x00973425,0x001a4d63,0x01d59cee,0x01d1c0d4,0x00542e49,0x01294114,0x004fce36,0x029283c9,0x01186fa9},{0x01b8b3a2,0x00db7200,0x00935e30,0x003829f5,0x02cc0d7d,0x0077adf3,0x0220dd2c,0x0014ea53,0x01c6a0f9,0x01ea7eec}},\n\t{{0x039d8064,0x01885f80,0x00337e6d,0x01b7a902,0x02628206,0x015eb044,0x01e30473,0x0191f2d9,0x011fadc9,0x01270169},{0x02a8632f,0x0199e2a9,0x00d8b365,0x017a8de2,0x02994279,0x0086f5b5,0x0119e4e3,0x01eb39d6,0x0338add7,0x00d2e7b4},{0x0045af1b,0x013a2fe4,0x0245e0d6,0x014538ce,0x038bfe0f,0x01d4cf16,0x037e14c9,0x0160d55e,0x0021b008,0x01cf05c8}},\n\t{{0x01864348,0x01d6c092,0x0070262b,0x014bb844,0x00fb5acd,0x008deb95,0x003aaab5,0x00eff474,0x00029d5c,0x0062ad66},{0x02802ade,0x01c02122,0x01c4e5f7,0x00781181,0x039767fb,0x01703406,0x0342388b,0x01f5e227,0x022546d8,0x0109d6ab},{0x016089e9,0x00cb317f,0x00949b05,0x01099417,0x000c7ad2,0x011a8622,0x0088ccda,0x01290886,0x022b53df,0x00f71954}},\n\t{{0x027fbf93,0x01c04ecc,0x01ed6a0d,0x004cdbbb,0x02bbf3af,0x00ad5968,0x01591955,0x0094f3a2,0x02d17602,0x00099e20},{0x02007f6d,0x003088a8,0x03db77ee,0x00d5ade6,0x02fe12ce,0x0107ba07,0x0107097d,0x00482a6f,0x02ec346f,0x008d3f5f},{0x032ea378,0x0028465c,0x028e2a6c,0x018efc6e,0x0090df9a,0x01a7e533,0x039bfc48,0x010c745d,0x03daa097,0x0125ee9b}},\n\t{{0x028ccf0b,0x00f36191,0x021ac081,0x012154c8,0x034e0a6e,0x01b25192,0x00180403,0x01d7eea1,0x00218d05,0x010ed735},{0x03cfeaa0,0x01b300c4,0x008da499,0x0068c4e1,0x0219230a,0x01f2d4d0,0x02defd60,0x00e565b7,0x017f12de,0x018788a4},{0x03d0b516,0x009d8be6,0x03ddcbb3,0x0071b9fe,0x03ace2bd,0x01d64270,0x032d3ec9,0x01084065,0x0210ae4d,0x01447584}},\n\t{{0x0020de87,0x00e19211,0x01b68102,0x00b5ac97,0x022873c0,0x01942d25,0x01271394,0x0102073f,0x02fe2482,0x01c69ff9},{0x010e9d81,0x019dbbe5,0x0089f258,0x006e06b8,0x02951883,0x018f1248,0x019b3237,0x00bc7553,0x024ddb85,0x01b4c964},{0x01c8c854,0x0060ae29,0x01406d8e,0x01cff2f9,0x00cff451,0x01778d0c,0x03ac8c41,0x01552e59,0x036559ee,0x011d1b12}},\n\t{{0x00741147,0x0151b219,0x01092690,0x00e877e6,0x01f4d6bb,0x0072a332,0x01cd3b03,0x00dadff2,0x0097db5e,0x0086598d},{0x01c69a2b,0x01decf1b,0x02c2fa6e,0x013b7c4f,0x037beac8,0x013a16b5,0x028e7bda,0x01f6e8ac,0x01e34fe9,0x01726947},{0x01f10e67,0x003c73de,0x022b7ea2,0x010f32c2,0x03ff776a,0x00142277,0x01d38b88,0x00776138,0x03c60822,0x01201140}},\n\t{{0x0236d175,0x0008748e,0x03c6476d,0x013f4cdc,0x02eed02a,0x00838a47,0x032e7210,0x018bcbb3,0x00858de4,0x01dc7826},{0x00a37fc7,0x0127b40b,0x01957884,0x011d30ad,0x02816683,0x016e0e23,0x00b76be4,0x012db115,0x02516506,0x0154ce62},{0x00451edf,0x00bd749e,0x03997342,0x01cc2c4c,0x00eb6975,0x01a59508,0x03a516cf,0x00c228ef,0x0168ff5a,0x01697b47}},\n\t{{0x00527359,0x01783156,0x03afd75c,0x00ce56dc,0x00e4b970,0x001cabe9,0x029e0f6d,0x0188850c,0x0135fefd,0x00066d80},{0x02150e83,0x01448abf,0x02bb0232,0x012bf259,0x033c8268,0x00711e20,0x03fc148f,0x005e0e70,0x017d8bf9,0x0112b2e2},{0x02134b83,0x001a0517,0x0182c3cc,0x00792182,0x0313d799,0x001a3ed7,0x0344547e,0x01f24a0d,0x03de6ad2,0x00543127}},\n\t{{0x00dca868,0x00618f27,0x015a1709,0x00ddc38a,0x0320fd13,0x0036168d,0x0371ab06,0x01783fc7,0x0391e05f,0x01e29b5d},{0x01471138,0x00fca542,0x00ca31cf,0x01ca7bad,0x0175bfbc,0x01a708ad,0x03bce212,0x01244215,0x0075bb99,0x01acad68},{0x03a0b976,0x01dc12d1,0x011aab17,0x00aba0ba,0x029806cd,0x0142f590,0x018fd8ea,0x01a01545,0x03c4ad55,0x01c971ff}},\n\t{{0x00d098c0,0x000afdc7,0x006cd230,0x01276af3,0x03f905b2,0x0102994c,0x002eb8a4,0x015cfbeb,0x025f855f,0x01335518},{0x01cf99b2,0x0099c574,0x01a69c88,0x00881510,0x01cd4b54,0x0112109f,0x008abdc5,0x0074647a,0x0277cb1f,0x01e53324},{0x02ac5053,0x01b109b0,0x024b095e,0x016997b3,0x02f26bb6,0x00311021,0x00197885,0x01d0a55a,0x03b6fcc8,0x01c020d5}},\n\t{{0x02584a34,0x00e7eee0,0x03257a03,0x011e95a3,0x011ead91,0x00536202,0x00b1ce24,0x008516c6,0x03669d6d,0x004ea4a8},{0x00773f01,0x0019c9ce,0x019f6171,0x01d4afde,0x02e33323,0x01ad29b6,0x02ead1dc,0x01ed51a5,0x01851ad0,0x001bbdfa},{0x00577de5,0x00ddc730,0x038b9952,0x00f281ae,0x01d50390,0x0002e071,0x000780ec,0x010d448d,0x01f8a2af,0x00f0a5b7}},\n\t{{0x031f2541,0x00d34bae,0x0323ff9d,0x003a056d,0x02e25443,0x00a1ad05,0x00d1bee8,0x002f7f8e,0x03007477,0x002a24b1},{0x0114a713,0x01457e76,0x032255d5,0x01cc647f,0x02a4bdef,0x0153d730,0x00118bcf,0x00f755ff,0x013490c7,0x01ea674e},{0x02bda3e8,0x00bb490d,0x00f291ea,0x000abf40,0x01dea321,0x002f9ce0,0x00b2b193,0x00fa54b5,0x0128302f,0x00a19d8b}},\n\t{{0x022ef5bd,0x01638af3,0x038c6f8a,0x01a33a3d,0x039261b2,0x01bb89b8,0x010bcf9d,0x00cf42a9,0x023d6f17,0x01da1bca},{0x00e35b25,0x000d824f,0x0152e9cf,0x00ed935d,0x020b8460,0x01c7b83f,0x00c969e5,0x01a74198,0x0046a9d9,0x00cbc768},{0x01597c6a,0x0144a99b,0x00a57551,0x0018269c,0x023c464c,0x0009b022,0x00ee39e1,0x0114c7f2,0x038a9ad2,0x01584c17}},\n\t{{0x03b0c0d5,0x00b30a39,0x038a6ce4,0x01ded83a,0x01c277a6,0x01010a61,0x0346d3eb,0x018d995e,0x02f2c57c,0x000c286b},{0x0092aed1,0x0125e37b,0x027ca201,0x001a6b6b,0x03290f55,0x0047ba48,0x018d916c,0x01a59062,0x013e35d4,0x0002abb1},{0x003ad2aa,0x007ddcc0,0x00c10f76,0x0001590b,0x002cfca6,0x000ed23e,0x00ee4329,0x00900f04,0x01c24065,0x0082fa70}},\n\t{{0x02025e60,0x003912b8,0x0327041c,0x017e5ee5,0x02c0ecec,0x015a0d1c,0x02b1ce7c,0x0062220b,0x0145067e,0x01a5d931},{0x009673a6,0x00e1f609,0x00927c2a,0x016faa37,0x01650ef0,0x016f63b5,0x03cd40e1,0x003bc38f,0x0361f0ac,0x01d42acc},{0x02f81037,0x008ca0e8,0x017e23d1,0x011debfe,0x01bcbb68,0x002e2563,0x03e8add6,0x000816e5,0x03fb7075,0x0153e5ac}},\n\t{{0x02b11ecd,0x016bf185,0x008f22ef,0x00e7d2bb,0x0225d92e,0x00ece785,0x00508873,0x017e16f5,0x01fbe85d,0x01e39a0e},{0x01669279,0x017c810a,0x024941f5,0x0023ebeb,0x00eb7688,0x005760f1,0x02ca4146,0x0073cde7,0x0052bb75,0x00f5ffa7},{0x03b8856b,0x00cb7dcd,0x02f14e06,0x001820d0,0x01d74175,0x00e59e22,0x03fba550,0x00484641,0x03350088,0x01c3c9a3}},\n\t{{0x00dcf355,0x0104481c,0x0022e464,0x01f73fe7,0x00e03325,0x0152b698,0x02ef769a,0x00973663,0x00039b8c,0x0101395b},{0x01805f47,0x019160ec,0x03832cd0,0x008b06eb,0x03d4d717,0x004cb006,0x03a75b8f,0x013b3d30,0x01cfad88,0x01f034d1},{0x0078338a,0x01c7d2e3,0x02bc2b23,0x018b3f05,0x0280d9aa,0x005f3d44,0x0220a95a,0x00eeeb97,0x0362aaec,0x00835d51}},\n\t{{0x01b9f543,0x013fac4d,0x02ad93ae,0x018ef464,0x0212cdf7,0x01138ba9,0x011583ab,0x019c3d26,0x028790b4,0x00e2e2b6},{0x033bb758,0x01f0dbf1,0x03734bd1,0x0129b1e5,0x02b3950e,0x003bc922,0x01a53ec8,0x018c5532,0x006f3cee,0x00ae3c79},{0x0351f95d,0x0012a737,0x03d596b8,0x017658fe,0x00ace54a,0x008b66da,0x0036c599,0x012a63a2,0x032ceba1,0x00126bac}},\n\t{{0x03dcfe7e,0x019f4f18,0x01c81aee,0x0044bc2b,0x00827165,0x014f7c13,0x03b430f0,0x00bf96cc,0x020c8d62,0x01471997},{0x01fc7931,0x001f42dd,0x00ba754a,0x005bd339,0x003fbe49,0x016b3930,0x012a159c,0x009f83b0,0x03530f67,0x01e57b85},{0x02ecbd81,0x0096c294,0x01fce4a9,0x017701a5,0x0175047d,0x00ee4a31,0x012686e5,0x008efcd4,0x0349dc54,0x01b3466f}},\n\t{{0x02179ca3,0x01d86414,0x03f0afd0,0x00305964,0x015c7428,0x0099711e,0x015d5442,0x00c71014,0x01b40b2e,0x01d483cf},{0x01afc386,0x01984859,0x036203ff,0x0045c6a8,0x0020a8aa,0x00990baa,0x03313f10,0x007ceede,0x027429e4,0x017806ce},{0x039357a1,0x0142f8f4,0x0294a7b6,0x00eaccf4,0x0259edb3,0x01311e6e,0x004d326f,0x0130c346,0x01ccef3c,0x01c424b2}},\n\t{{0x0364918c,0x00148fc0,0x01638a7b,0x01a1fd5b,0x028ad013,0x0081e5a4,0x01a54f33,0x0174e101,0x003d0257,0x003a856c},{0x00051dcf,0x00f62b1d,0x0143d0ad,0x0042adbd,0x000fda90,0x01743ceb,0x0173e5e4,0x017bc749,0x03b7137a,0x0105ce96},{0x00f9218a,0x015b8c7c,0x00e102f8,0x0158d7e2,0x0169a5b8,0x00b2f176,0x018b347a,0x014cfef2,0x0214a4e3,0x017f1595}},\n\t{{0x006d7ae5,0x0195c371,0x0391e26d,0x0062a7c6,0x003f42ab,0x010dad86,0x024f8198,0x01542b2a,0x0014c454,0x0189c471},{0x0390988e,0x00b8799d,0x02e44912,0x0078e2e6,0x00075654,0x01923eed,0x0040cd72,0x00a37c76,0x0009d466,0x00c8531d},{0x02651770,0x00609d01,0x0286c265,0x0134513c,0x00ee9281,0x005d223c,0x035c760c,0x00679b36,0x0073ecb8,0x016faa50}},\n\t{{0x02c89be4,0x016fc244,0x02f38c83,0x018beb72,0x02b3ce2c,0x0097b065,0x034f017b,0x01dd957f,0x00148f61,0x00eab357},{0x0343d2f8,0x003398fc,0x011e368e,0x00782a1f,0x00019eea,0x00117b6f,0x0128d0d1,0x01a5e6bb,0x01944f1b,0x012b41e1},{0x03318301,0x018ecd30,0x0104d0b1,0x0038398b,0x03726701,0x019da88c,0x002d9769,0x00a7a681,0x031d9028,0x00ebfc32}},\n\t{{0x0220405e,0x0171face,0x02d930f8,0x017f6d6a,0x023b8c47,0x0129d5f9,0x02972456,0x00a3a524,0x006f4cd2,0x004439fa},{0x00c53505,0x0190c2fd,0x00507244,0x009930f9,0x01a39270,0x01d327c6,0x0399bc47,0x01cfe13d,0x0332bd99,0x00b33e7d},{0x0203f5e4,0x003627b5,0x00018af8,0x01478581,0x004a2218,0x002e3bb7,0x039384d0,0x0146ea62,0x020b9693,0x0017155f}},\n\t{{0x03c97e6f,0x00738c47,0x03b5db1f,0x01808fcf,0x01e8fc98,0x01ed25dd,0x01bf5045,0x00eb5c2b,0x0178fe98,0x01b85530},{0x01c20eb0,0x01aeec22,0x030b9eee,0x01b7d07e,0x0187e16f,0x014421fb,0x009fa731,0x0040b6d7,0x00841861,0x00a27fbc},{0x02d69abf,0x0058cdbf,0x0129f9ec,0x013c19ae,0x026c5b93,0x013a7fe7,0x004bb2ba,0x0063226f,0x002a95ca,0x01abefd9}},\n\t{{0x02f5d2c1,0x00378318,0x03734fb5,0x01258073,0x0263f0f6,0x01ad70e0,0x01b56d06,0x01188fbd,0x011b9503,0x0036d2e1},{0x0113a8cc,0x01541c3e,0x02ac2bbc,0x01d95867,0x01f47459,0x00ead489,0x00ab5b48,0x01db3b45,0x00edb801,0x004b024f},{0x00b8190f,0x011fe4c2,0x00621f82,0x010508d7,0x001a5a76,0x00c7d7fd,0x03aab96d,0x019cd9dc,0x019c6635,0x00ceaa1e}},\n\t{{0x01085cf2,0x01fd47af,0x03e3f5e1,0x004b3e99,0x01e3d46a,0x0060033c,0x015ff0a8,0x0150cdd8,0x029e8e21,0x008cf1bc},{0x00156cb1,0x003d623f,0x01a4f069,0x00d8d053,0x01b68aea,0x01ca5ab6,0x0316ae43,0x0134dc44,0x001c8d58,0x0084b343},{0x0318c781,0x0135441f,0x03a51a5e,0x019293f4,0x0048bb37,0x013d3341,0x0143151e,0x019c74e1,0x00911914,0x0076ddde}},\n\t{{0x006bc26f,0x00d48e5f,0x00227bbe,0x00629ea8,0x01ea5f8b,0x0179a330,0x027a1d5f,0x01bf8f8e,0x02d26e2a,0x00c6b65e},{0x01701ab6,0x0051da77,0x01b4b667,0x00a0ce7c,0x038ae37b,0x012ac852,0x03a0b0fe,0x0097c2bb,0x00a017d2,0x01eb8b2a},{0x0120b962,0x0005fb42,0x0353b6fd,0x0061f8ce,0x007a1463,0x01560a64,0x00e0a792,0x01907c92,0x013a6622,0x007b47f1}}\n};\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-64bit-sse2.h",
    "content": "#if defined(ED25519_GCC_64BIT_SSE_CHOOSE)\n\n#define HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS\n\nDONNA_NOINLINE static void\nge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b) {\n\tint64_t breg = (int64_t)b;\n\tuint64_t sign = (uint64_t)breg >> 63;\n\tuint64_t mask = ~(sign - 1);\n\tuint64_t u = (breg + mask) ^ mask;\n\n\t__asm__ __volatile__ (\n\t\t/* ysubx+xaddy+t2d */\n\t\t\"movq %0, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm14             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm14, %%xmm14  ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm2, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm3, %%xmm3             ;\\n\"\n\t\t\"pxor %%xmm4, %%xmm4             ;\\n\"\n\t\t\"pxor %%xmm5, %%xmm5             ;\\n\"\n\n\t\t/* 0 */\n\t\t\"movq $0, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm6              ;\\n\"\n\t\t\"pxor %%xmm7, %%xmm7             ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm6, %%xmm2              ;\\n\"\n\t\t\"por %%xmm7, %%xmm3              ;\\n\"\n\n\t\t/* 1 */\n\t\t\"movq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 0(%1), %%xmm6            ;\\n\"\n\t\t\"movdqa 16(%1), %%xmm7           ;\\n\"\n\t\t\"movdqa 32(%1), %%xmm8           ;\\n\"\n\t\t\"movdqa 48(%1), %%xmm9           ;\\n\"\n\t\t\"movdqa 64(%1), %%xmm10          ;\\n\"\n\t\t\"movdqa 80(%1), %%xmm11          ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 2 */\n\t\t\"movq $2, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 96(%1), %%xmm6           ;\\n\"\n\t\t\"movdqa 112(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 128(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 144(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 160(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 176(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 3 */\n\t\t\"movq $3, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 192(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 208(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 224(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 240(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 256(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 272(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 4 */\n\t\t\"movq $4, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 288(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 304(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 320(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 336(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 352(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 368(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 5 */\n\t\t\"movq $5, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 384(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 400(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 416(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 432(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 448(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 464(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 6 */\n\t\t\"movq $6, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 480(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 496(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 512(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 528(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 544(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 560(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 7 */\n\t\t\"movq $7, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 576(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 592(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 608(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 624(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 640(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 656(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 8 */\n\t\t\"movq $8, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 672(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 688(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 704(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 720(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 736(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 752(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* conditionally swap ysubx and xaddy */\n\t\t\"movq %3, %%rax                  ;\\n\"\n\t\t\"xorq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm14             ;\\n\"\n\t\t\"pxor %%xmm15, %%xmm15           ;\\n\"\n\t\t\"pshufd $0x00, %%xmm14, %%xmm14  ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa %%xmm2, %%xmm6           ;\\n\"\n\t\t\"movdqa %%xmm3, %%xmm7           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pxor %%xmm6, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm7, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\n\t\t/* store ysubx */\n\t\t\"xorq %%rax, %%rax               ;\\n\"\n\t\t\"movd %%xmm0, %%rcx              ;\\n\"\n\t\t\"movd %%xmm0, %%r8               ;\\n\"\n\t\t\"movd %%xmm1, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"movd %%xmm0, %%rdx              ;\\n\"\n\t\t\"movd %%xmm1, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"movq %%rcx, %%r9                ;\\n\"\n\t\t\"movq %%r8, %%r10                ;\\n\"\n\t\t\"movq %%rdx, %%r11               ;\\n\"\n\t\t\"movq %%rsi, %%r12               ;\\n\"\n\t\t\"movq %%rdi, %%r13               ;\\n\"\n\t\t\"shrq $26, %%r9                  ;\\n\"\n\t\t\"shrq $26, %%r10                 ;\\n\"\n\t\t\"shrq $26, %%r11                 ;\\n\"\n\t\t\"shrq $26, %%r12                 ;\\n\"\n\t\t\"shrq $26, %%r13                 ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r9d          ;\\n\"\n\t\t\"andl $0x3ffffff, %%r8d          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r10d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r11d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%esi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r12d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r13d         ;\\n\"\n\t\t\"movl %%ecx, 0(%2)               ;\\n\"\n\t\t\"movl %%r9d, 4(%2)               ;\\n\"\n\t\t\"movl %%r8d, 8(%2)               ;\\n\"\n\t\t\"movl %%r10d, 12(%2)             ;\\n\"\n\t\t\"movl %%edx, 16(%2)              ;\\n\"\n\t\t\"movl %%r11d, 20(%2)             ;\\n\"\n\t\t\"movl %%esi, 24(%2)              ;\\n\"\n\t\t\"movl %%r12d, 28(%2)             ;\\n\"\n\t\t\"movl %%edi, 32(%2)              ;\\n\"\n\t\t\"movl %%r13d, 36(%2)             ;\\n\"\n\t\t\"movq %%rax, 40(%2)              ;\\n\"\n\n\t\t/* store xaddy */\n\t\t\"movd %%xmm2, %%rcx              ;\\n\"\n\t\t\"movd %%xmm2, %%r8               ;\\n\"\n\t\t\"movd %%xmm3, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm2, %%xmm2    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm3, %%xmm3    ;\\n\"\n\t\t\"movd %%xmm2, %%rdx              ;\\n\"\n\t\t\"movd %%xmm3, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"movq %%rcx, %%r9                ;\\n\"\n\t\t\"movq %%r8, %%r10                ;\\n\"\n\t\t\"movq %%rdx, %%r11               ;\\n\"\n\t\t\"movq %%rsi, %%r12               ;\\n\"\n\t\t\"movq %%rdi, %%r13               ;\\n\"\n\t\t\"shrq $26, %%r9                  ;\\n\"\n\t\t\"shrq $26, %%r10                 ;\\n\"\n\t\t\"shrq $26, %%r11                 ;\\n\"\n\t\t\"shrq $26, %%r12                 ;\\n\"\n\t\t\"shrq $26, %%r13                 ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r9d          ;\\n\"\n\t\t\"andl $0x3ffffff, %%r8d          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r10d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r11d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%esi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r12d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r13d         ;\\n\"\n\t\t\"movl %%ecx, 48(%2)              ;\\n\"\n\t\t\"movl %%r9d, 52(%2)              ;\\n\"\n\t\t\"movl %%r8d, 56(%2)              ;\\n\"\n\t\t\"movl %%r10d, 60(%2)             ;\\n\"\n\t\t\"movl %%edx, 64(%2)              ;\\n\"\n\t\t\"movl %%r11d, 68(%2)             ;\\n\"\n\t\t\"movl %%esi, 72(%2)              ;\\n\"\n\t\t\"movl %%r12d, 76(%2)             ;\\n\"\n\t\t\"movl %%edi, 80(%2)              ;\\n\"\n\t\t\"movl %%r13d, 84(%2)             ;\\n\"\n\t\t\"movq %%rax, 88(%2)              ;\\n\"\n\n\t\t/* extract t2d */\n\t\t\"xorq %%rax, %%rax               ;\\n\"\n\t\t\"movd %%xmm4, %%rcx              ;\\n\"\n\t\t\"movd %%xmm4, %%r8               ;\\n\"\n\t\t\"movd %%xmm5, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm4, %%xmm4    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm5, %%xmm5    ;\\n\"\n\t\t\"movd %%xmm4, %%rdx              ;\\n\"\n\t\t\"movd %%xmm5, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"movq %%rcx, %%r9                ;\\n\"\n\t\t\"movq %%r8, %%r10                ;\\n\"\n\t\t\"movq %%rdx, %%r11               ;\\n\"\n\t\t\"movq %%rsi, %%r12               ;\\n\"\n\t\t\"movq %%rdi, %%r13               ;\\n\"\n\t\t\"shrq $26, %%r9                  ;\\n\"\n\t\t\"shrq $26, %%r10                 ;\\n\"\n\t\t\"shrq $26, %%r11                 ;\\n\"\n\t\t\"shrq $26, %%r12                 ;\\n\"\n\t\t\"shrq $26, %%r13                 ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r9d          ;\\n\"\n\t\t\"andl $0x3ffffff, %%r8d          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r10d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r11d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%esi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r12d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r13d         ;\\n\"\n\t\t\"movd %%ecx, %%xmm0              ;\\n\"\n\t\t\"movd %%r9d, %%xmm4              ;\\n\"\n\t\t\"movd %%r8d, %%xmm8              ;\\n\"\n\t\t\"movd %%r10d, %%xmm3             ;\\n\"\n\t\t\"movd %%edx, %%xmm1              ;\\n\"\n\t\t\"movd %%r11d, %%xmm5             ;\\n\"\n\t\t\"movd %%esi, %%xmm6              ;\\n\"\n\t\t\"movd %%r12d, %%xmm7             ;\\n\"\n\t\t\"movd %%edi, %%xmm2              ;\\n\"\n\t\t\"movd %%r13d, %%xmm9             ;\\n\"\n\t\t\"punpckldq %%xmm4, %%xmm0        ;\\n\"\n\t\t\"punpckldq %%xmm3, %%xmm8        ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm1        ;\\n\"\n\t\t\"punpckldq %%xmm7, %%xmm6        ;\\n\"\n\t\t\"punpckldq %%xmm9, %%xmm2        ;\\n\"\n\t\t\"punpcklqdq %%xmm8, %%xmm0       ;\\n\"\n\t\t\"punpcklqdq %%xmm6, %%xmm1       ;\\n\"\n\n\t\t/* set up 2p in to 3/4 */\n\t\t\"movl $0x7ffffda, %%ecx          ;\\n\"\n\t\t\"movl $0x3fffffe, %%edx          ;\\n\"\n\t\t\"movl $0x7fffffe, %%eax          ;\\n\"\n\t\t\"movd %%ecx, %%xmm3              ;\\n\"\n\t\t\"movd %%edx, %%xmm5              ;\\n\"\n\t\t\"movd %%eax, %%xmm4              ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm3        ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm4        ;\\n\"\n\t\t\"punpcklqdq %%xmm4, %%xmm3       ;\\n\"\n\t\t\"movdqa %%xmm4, %%xmm5           ;\\n\"\n\t\t\"punpcklqdq %%xmm4, %%xmm4       ;\\n\"\n\n\t\t/* subtract and conditionally move */\n\t\t\"movl %3, %%ecx                  ;\\n\"\n\t\t\"sub $1, %%ecx                   ;\\n\"\n\t\t\"movd %%ecx, %%xmm6              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm6, %%xmm6    ;\\n\"\n\t\t\"movdqa %%xmm6, %%xmm7           ;\\n\"\n\t\t\"psubd %%xmm0, %%xmm3            ;\\n\"\n\t\t\"psubd %%xmm1, %%xmm4            ;\\n\"\n\t\t\"psubd %%xmm2, %%xmm5            ;\\n\"\n\t\t\"pand %%xmm6, %%xmm0             ;\\n\"\n\t\t\"pand %%xmm6, %%xmm1             ;\\n\"\n\t\t\"pand %%xmm6, %%xmm2             ;\\n\"\n\t\t\"pandn %%xmm3, %%xmm6            ;\\n\"\n\t\t\"movdqa %%xmm7, %%xmm3           ;\\n\"\n\t\t\"pandn %%xmm4, %%xmm7            ;\\n\"\n\t\t\"pandn %%xmm5, %%xmm3            ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm3, %%xmm2              ;\\n\"\n\n\t\t/* store t2d */\n\t\t\"movdqa %%xmm0, 96(%2)           ;\\n\"\n\t\t\"movdqa %%xmm1, 112(%2)          ;\\n\"\n\t\t\"movdqa %%xmm2, 128(%2)          ;\\n\"\n\t\t:\n\t\t: \"m\"(u), \"r\"(&table[pos * 8]), \"r\"(t), \"m\"(sign) /* %0 = u, %1 = table, %2 = t, %3 = sign */\n\t\t:\n\t\t\t\"%rax\", \"%rcx\", \"%rdx\", \"%rdi\", \"%rsi\", \"%r8\", \"%r9\", \"%r10\", \"%r11\", \"%r12\", \"%r13\", \n\t\t\t\"%xmm0\", \"%xmm1\", \"%xmm2\", \"%xmm3\", \"%xmm4\", \"%xmm5\", \"%xmm6\", \"%xmm7\", \"%xmm8\", \"%xmm9\", \"%xmm10\", \"%xmm11\", \"%xmm14\", \"%xmm14\",\n\t\t\t\"cc\", \"memory\"\n\t);\n}\n\n#endif /* defined(ED25519_GCC_64BIT_SSE_CHOOSE) */\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-64bit-tables.h",
    "content": "static const ge25519 ge25519_basepoint = {\n\t{0x00062d608f25d51a,0x000412a4b4f6592a,0x00075b7171a4b31d,0x0001ff60527118fe,0x000216936d3cd6e5},\n\t{0x0006666666666658,0x0004cccccccccccc,0x0001999999999999,0x0003333333333333,0x0006666666666666},\n\t{0x0000000000000001,0x0000000000000000,0x0000000000000000,0x0000000000000000,0x0000000000000000},\n\t{0x00068ab3a5b7dda3,0x00000eea2a5eadbb,0x0002af8df483c27e,0x000332b375274732,0x00067875f0fd78b7}\n};\n\nstatic const bignum25519 ge25519_ecd = {\n\t0x00034dca135978a3,0x0001a8283b156ebd,0x0005e7a26001c029,0x000739c663a03cbb,0x00052036cee2b6ff\n};\n\nstatic const bignum25519 ge25519_ec2d = {\n\t0x00069b9426b2f159,0x00035050762add7a,0x0003cf44c0038052,0x0006738cc7407977,0x0002406d9dc56dff\n};\n\nstatic const bignum25519 ge25519_sqrtneg1 = {\n\t0x00061b274a0ea0b0,0x0000d5a5fc8f189d,0x0007ef5e9cbd0c60,0x00078595a6804c9e,0x0002b8324804fc1d\n};\n\nstatic const ge25519_niels ge25519_niels_sliding_multiples[32] = {\n\t{{0x00003905d740913e,0x0000ba2817d673a2,0x00023e2827f4e67c,0x000133d2e0c21a34,0x00044fd2f9298f81},{0x000493c6f58c3b85,0x0000df7181c325f7,0x0000f50b0b3e4cb7,0x0005329385a44c32,0x00007cf9d3a33d4b},{0x00011205877aaa68,0x000479955893d579,0x00050d66309b67a0,0x0002d42d0dbee5ee,0x0006f117b689f0c6}},\n\t{{0x00011fe8a4fcd265,0x0007bcb8374faacc,0x00052f5af4ef4d4f,0x0005314098f98d10,0x0002ab91587555bd},{0x0005b0a84cee9730,0x00061d10c97155e4,0x0004059cc8096a10,0x00047a608da8014f,0x0007a164e1b9a80f},{0x0006933f0dd0d889,0x00044386bb4c4295,0x0003cb6d3162508c,0x00026368b872a2c6,0x0005a2826af12b9b}},\n\t{{0x000182c3a447d6ba,0x00022964e536eff2,0x000192821f540053,0x0002f9f19e788e5c,0x000154a7e73eb1b5},{0x0002bc4408a5bb33,0x000078ebdda05442,0x0002ffb112354123,0x000375ee8df5862d,0x0002945ccf146e20},{0x0003dbf1812a8285,0x0000fa17ba3f9797,0x0006f69cb49c3820,0x00034d5a0db3858d,0x00043aabe696b3bb}},\n\t{{0x00072c9aaa3221b1,0x000267774474f74d,0x000064b0e9b28085,0x0003f04ef53b27c9,0x0001d6edd5d2e531},{0x00025cd0944ea3bf,0x00075673b81a4d63,0x000150b925d1c0d4,0x00013f38d9294114,0x000461bea69283c9},{0x00036dc801b8b3a2,0x0000e0a7d4935e30,0x0001deb7cecc0d7d,0x000053a94e20dd2c,0x0007a9fbb1c6a0f9}},\n\t{{0x0006217e039d8064,0x0006dea408337e6d,0x00057ac112628206,0x000647cb65e30473,0x00049c05a51fadc9},{0x0006678aa6a8632f,0x0005ea3788d8b365,0x00021bd6d6994279,0x0007ace75919e4e3,0x00034b9ed338add7},{0x0004e8bf9045af1b,0x000514e33a45e0d6,0x0007533c5b8bfe0f,0x000583557b7e14c9,0x00073c172021b008}},\n\t{{0x00075b0249864348,0x00052ee11070262b,0x000237ae54fb5acd,0x0003bfd1d03aaab5,0x00018ab598029d5c},{0x000700848a802ade,0x0001e04605c4e5f7,0x0005c0d01b9767fb,0x0007d7889f42388b,0x0004275aae2546d8},{0x00032cc5fd6089e9,0x000426505c949b05,0x00046a18880c7ad2,0x0004a4221888ccda,0x0003dc65522b53df}},\n\t{{0x0007013b327fbf93,0x0001336eeded6a0d,0x0002b565a2bbf3af,0x000253ce89591955,0x0000267882d17602},{0x0000c222a2007f6d,0x000356b79bdb77ee,0x00041ee81efe12ce,0x000120a9bd07097d,0x000234fd7eec346f},{0x0000a119732ea378,0x00063bf1ba8e2a6c,0x00069f94cc90df9a,0x000431d1779bfc48,0x000497ba6fdaa097}},\n\t{{0x0003cd86468ccf0b,0x00048553221ac081,0x0006c9464b4e0a6e,0x00075fba84180403,0x00043b5cd4218d05},{0x0006cc0313cfeaa0,0x0001a313848da499,0x0007cb534219230a,0x00039596dedefd60,0x00061e22917f12de},{0x0002762f9bd0b516,0x0001c6e7fbddcbb3,0x00075909c3ace2bd,0x00042101972d3ec9,0x000511d61210ae4d}},\n\t{{0x000386484420de87,0x0002d6b25db68102,0x000650b4962873c0,0x0004081cfd271394,0x00071a7fe6fe2482},{0x000676ef950e9d81,0x0001b81ae089f258,0x00063c4922951883,0x0002f1d54d9b3237,0x0006d325924ddb85},{0x000182b8a5c8c854,0x00073fcbe5406d8e,0x0005de3430cff451,0x000554b967ac8c41,0x0004746c4b6559ee}},\n\t{{0x000546c864741147,0x0003a1df99092690,0x0001ca8cc9f4d6bb,0x00036b7fc9cd3b03,0x000219663497db5e},{0x00077b3c6dc69a2b,0x0004edf13ec2fa6e,0x0004e85ad77beac8,0x0007dba2b28e7bda,0x0005c9a51de34fe9},{0x0000f1cf79f10e67,0x00043ccb0a2b7ea2,0x00005089dfff776a,0x0001dd84e1d38b88,0x0004804503c60822}},\n\t{{0x000021d23a36d175,0x0004fd3373c6476d,0x00020e291eeed02a,0x00062f2ecf2e7210,0x000771e098858de4},{0x00049ed02ca37fc7,0x000474c2b5957884,0x0005b8388e816683,0x0004b6c454b76be4,0x000553398a516506},{0x0002f5d278451edf,0x000730b133997342,0x0006965420eb6975,0x000308a3bfa516cf,0x0005a5ed1d68ff5a}},\n\t{{0x0005e0c558527359,0x0003395b73afd75c,0x000072afa4e4b970,0x00062214329e0f6d,0x000019b60135fefd},{0x0005122afe150e83,0x0004afc966bb0232,0x0001c478833c8268,0x00017839c3fc148f,0x00044acb897d8bf9},{0x000068145e134b83,0x0001e4860982c3cc,0x000068fb5f13d799,0x0007c9283744547e,0x000150c49fde6ad2}},\n\t{{0x0001863c9cdca868,0x0003770e295a1709,0x0000d85a3720fd13,0x0005e0ff1f71ab06,0x00078a6d7791e05f},{0x0003f29509471138,0x000729eeb4ca31cf,0x00069c22b575bfbc,0x0004910857bce212,0x0006b2b5a075bb99},{0x0007704b47a0b976,0x0002ae82e91aab17,0x00050bd6429806cd,0x00068055158fd8ea,0x000725c7ffc4ad55}},\n\t{{0x00002bf71cd098c0,0x00049dabcc6cd230,0x00040a6533f905b2,0x000573efac2eb8a4,0x0004cd54625f855f},{0x00026715d1cf99b2,0x0002205441a69c88,0x000448427dcd4b54,0x0001d191e88abdc5,0x000794cc9277cb1f},{0x0006c426c2ac5053,0x0005a65ece4b095e,0x0000c44086f26bb6,0x0007429568197885,0x0007008357b6fcc8}},\n\t{{0x00039fbb82584a34,0x00047a568f257a03,0x00014d88091ead91,0x0002145b18b1ce24,0x00013a92a3669d6d},{0x0000672738773f01,0x000752bf799f6171,0x0006b4a6dae33323,0x0007b54696ead1dc,0x00006ef7e9851ad0},{0x0003771cc0577de5,0x0003ca06bb8b9952,0x00000b81c5d50390,0x00043512340780ec,0x0003c296ddf8a2af}},\n\t{{0x00034d2ebb1f2541,0x0000e815b723ff9d,0x000286b416e25443,0x0000bdfe38d1bee8,0x0000a892c7007477},{0x000515f9d914a713,0x00073191ff2255d5,0x00054f5cc2a4bdef,0x0003dd57fc118bcf,0x0007a99d393490c7},{0x0002ed2436bda3e8,0x00002afd00f291ea,0x0000be7381dea321,0x0003e952d4b2b193,0x000286762d28302f}},\n\t{{0x00058e2bce2ef5bd,0x00068ce8f78c6f8a,0x0006ee26e39261b2,0x00033d0aa50bcf9d,0x0007686f2a3d6f17},{0x000036093ce35b25,0x0003b64d7552e9cf,0x00071ee0fe0b8460,0x00069d0660c969e5,0x00032f1da046a9d9},{0x000512a66d597c6a,0x0000609a70a57551,0x000026c08a3c464c,0x0004531fc8ee39e1,0x000561305f8a9ad2}},\n\t{{0x0002cc28e7b0c0d5,0x00077b60eb8a6ce4,0x0004042985c277a6,0x000636657b46d3eb,0x000030a1aef2c57c},{0x0004978dec92aed1,0x000069adae7ca201,0x00011ee923290f55,0x00069641898d916c,0x00000aaec53e35d4},{0x0001f773003ad2aa,0x000005642cc10f76,0x00003b48f82cfca6,0x0002403c10ee4329,0x00020be9c1c24065}},\n\t{{0x0000e44ae2025e60,0x0005f97b9727041c,0x0005683472c0ecec,0x000188882eb1ce7c,0x00069764c545067e},{0x000387d8249673a6,0x0005bea8dc927c2a,0x0005bd8ed5650ef0,0x0000ef0e3fcd40e1,0x000750ab3361f0ac},{0x00023283a2f81037,0x000477aff97e23d1,0x0000b8958dbcbb68,0x0000205b97e8add6,0x00054f96b3fb7075}},\n\t{{0x0005afc616b11ecd,0x00039f4aec8f22ef,0x0003b39e1625d92e,0x0005f85bd4508873,0x00078e6839fbe85d},{0x0005f20429669279,0x00008fafae4941f5,0x00015d83c4eb7688,0x0001cf379eca4146,0x0003d7fe9c52bb75},{0x00032df737b8856b,0x0000608342f14e06,0x0003967889d74175,0x0001211907fba550,0x00070f268f350088}},\n\t{{0x0004112070dcf355,0x0007dcff9c22e464,0x00054ada60e03325,0x00025cd98eef769a,0x000404e56c039b8c},{0x00064583b1805f47,0x00022c1baf832cd0,0x000132c01bd4d717,0x0004ecf4c3a75b8f,0x0007c0d345cfad88},{0x00071f4b8c78338a,0x00062cfc16bc2b23,0x00017cf51280d9aa,0x0003bbae5e20a95a,0x00020d754762aaec}},\n\t{{0x0004feb135b9f543,0x00063bd192ad93ae,0x00044e2ea612cdf7,0x000670f4991583ab,0x00038b8ada8790b4},{0x0007c36fc73bb758,0x0004a6c797734bd1,0x0000ef248ab3950e,0x00063154c9a53ec8,0x0002b8f1e46f3cee},{0x00004a9cdf51f95d,0x0005d963fbd596b8,0x00022d9b68ace54a,0x0004a98e8836c599,0x000049aeb32ceba1}},\n\t{{0x00067d3c63dcfe7e,0x000112f0adc81aee,0x00053df04c827165,0x0002fe5b33b430f0,0x00051c665e0c8d62},{0x00007d0b75fc7931,0x00016f4ce4ba754a,0x0005ace4c03fbe49,0x00027e0ec12a159c,0x000795ee17530f67},{0x00025b0a52ecbd81,0x0005dc0695fce4a9,0x0003b928c575047d,0x00023bf3512686e5,0x0006cd19bf49dc54}},\n\t{{0x0007619052179ca3,0x0000c16593f0afd0,0x000265c4795c7428,0x00031c40515d5442,0x0007520f3db40b2e},{0x0006612165afc386,0x0001171aa36203ff,0x0002642ea820a8aa,0x0001f3bb7b313f10,0x0005e01b3a7429e4},{0x00050be3d39357a1,0x0003ab33d294a7b6,0x0004c479ba59edb3,0x0004c30d184d326f,0x00071092c9ccef3c}},\n\t{{0x0000523f0364918c,0x000687f56d638a7b,0x00020796928ad013,0x0005d38405a54f33,0x0000ea15b03d0257},{0x0003d8ac74051dcf,0x00010ab6f543d0ad,0x0005d0f3ac0fda90,0x0005ef1d2573e5e4,0x0004173a5bb7137a},{0x00056e31f0f9218a,0x0005635f88e102f8,0x0002cbc5d969a5b8,0x000533fbc98b347a,0x0005fc565614a4e3}},\n\t{{0x0006570dc46d7ae5,0x00018a9f1b91e26d,0x000436b6183f42ab,0x000550acaa4f8198,0x00062711c414c454},{0x0002e1e67790988e,0x0001e38b9ae44912,0x000648fbb4075654,0x00028df1d840cd72,0x0003214c7409d466},{0x0001827406651770,0x0004d144f286c265,0x00017488f0ee9281,0x00019e6cdb5c760c,0x0005bea94073ecb8}},\n\t{{0x0005bf0912c89be4,0x00062fadcaf38c83,0x00025ec196b3ce2c,0x00077655ff4f017b,0x0003aacd5c148f61},{0x0000ce63f343d2f8,0x0001e0a87d1e368e,0x000045edbc019eea,0x0006979aed28d0d1,0x0004ad0785944f1b},{0x00063b34c3318301,0x0000e0e62d04d0b1,0x000676a233726701,0x00029e9a042d9769,0x0003aff0cb1d9028}},\n\t{{0x0005c7eb3a20405e,0x0005fdb5aad930f8,0x0004a757e63b8c47,0x00028e9492972456,0x000110e7e86f4cd2},{0x0006430bf4c53505,0x000264c3e4507244,0x00074c9f19a39270,0x00073f84f799bc47,0x0002ccf9f732bd99},{0x0000d89ed603f5e4,0x00051e1604018af8,0x0000b8eedc4a2218,0x00051ba98b9384d0,0x00005c557e0b9693}},\n\t{{0x0001ce311fc97e6f,0x0006023f3fb5db1f,0x0007b49775e8fc98,0x0003ad70adbf5045,0x0006e154c178fe98},{0x0006bbb089c20eb0,0x0006df41fb0b9eee,0x00051087ed87e16f,0x000102db5c9fa731,0x000289fef0841861},{0x00016336fed69abf,0x0004f066b929f9ec,0x0004e9ff9e6c5b93,0x00018c89bc4bb2ba,0x0006afbf642a95ca}},\n\t{{0x0000de0c62f5d2c1,0x00049601cf734fb5,0x0006b5c38263f0f6,0x0004623ef5b56d06,0x0000db4b851b9503},{0x00055070f913a8cc,0x000765619eac2bbc,0x0003ab5225f47459,0x00076ced14ab5b48,0x00012c093cedb801},{0x00047f9308b8190f,0x000414235c621f82,0x00031f5ff41a5a76,0x0006736773aab96d,0x00033aa8799c6635}},\n\t{{0x0007f51ebd085cf2,0x00012cfa67e3f5e1,0x0001800cf1e3d46a,0x00054337615ff0a8,0x000233c6f29e8e21},{0x0000f588fc156cb1,0x000363414da4f069,0x0007296ad9b68aea,0x0004d3711316ae43,0x000212cd0c1c8d58},{0x0004d5107f18c781,0x00064a4fd3a51a5e,0x0004f4cd0448bb37,0x000671d38543151e,0x0001db7778911914}},\n\t{{0x000352397c6bc26f,0x00018a7aa0227bbe,0x0005e68cc1ea5f8b,0x0006fe3e3a7a1d5f,0x00031ad97ad26e2a},{0x00014769dd701ab6,0x00028339f1b4b667,0x0004ab214b8ae37b,0x00025f0aefa0b0fe,0x0007ae2ca8a017d2},{0x000017ed0920b962,0x000187e33b53b6fd,0x00055829907a1463,0x000641f248e0a792,0x0001ed1fc53a6622}}\n};\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-64bit-x86-32bit.h",
    "content": "#if defined(ED25519_GCC_64BIT_32BIT_CHOOSE)\n\n#define HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS\n\nDONNA_NOINLINE static void\nge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b) {\n\tint64_t breg = (int64_t)b;\n\tuint64_t sign = (uint64_t)breg >> 63;\n\tuint64_t mask = ~(sign - 1);\n\tuint64_t u = (breg + mask) ^ mask;\n\n\t__asm__ __volatile__ (\n\t\t/* ysubx+xaddy+t2d */\n\t\t\"movq %0, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm14             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm14, %%xmm14  ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm2, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm3, %%xmm3             ;\\n\"\n\t\t\"pxor %%xmm4, %%xmm4             ;\\n\"\n\t\t\"pxor %%xmm5, %%xmm5             ;\\n\"\n\n\t\t/* 0 */\n\t\t\"movq $0, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm6              ;\\n\"\n\t\t\"pxor %%xmm7, %%xmm7             ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm6, %%xmm2              ;\\n\"\n\t\t\"por %%xmm7, %%xmm3              ;\\n\"\n\n\t\t/* 1 */\n\t\t\"movq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 0(%1), %%xmm6            ;\\n\"\n\t\t\"movdqa 16(%1), %%xmm7           ;\\n\"\n\t\t\"movdqa 32(%1), %%xmm8           ;\\n\"\n\t\t\"movdqa 48(%1), %%xmm9           ;\\n\"\n\t\t\"movdqa 64(%1), %%xmm10          ;\\n\"\n\t\t\"movdqa 80(%1), %%xmm11          ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 2 */\n\t\t\"movq $2, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 96(%1), %%xmm6           ;\\n\"\n\t\t\"movdqa 112(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 128(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 144(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 160(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 176(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 3 */\n\t\t\"movq $3, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 192(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 208(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 224(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 240(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 256(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 272(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 4 */\n\t\t\"movq $4, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 288(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 304(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 320(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 336(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 352(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 368(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 5 */\n\t\t\"movq $5, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 384(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 400(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 416(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 432(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 448(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 464(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 6 */\n\t\t\"movq $6, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 480(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 496(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 512(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 528(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 544(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 560(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 7 */\n\t\t\"movq $7, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 576(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 592(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 608(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 624(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 640(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 656(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 8 */\n\t\t\"movq $8, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 672(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 688(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 704(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 720(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 736(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 752(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* conditionally swap ysubx and xaddy */\n\t\t\"movq %3, %%rax                  ;\\n\"\n\t\t\"xorq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm14             ;\\n\"\n\t\t\"pxor %%xmm15, %%xmm15           ;\\n\"\n\t\t\"pshufd $0x00, %%xmm14, %%xmm14  ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa %%xmm2, %%xmm6           ;\\n\"\n\t\t\"movdqa %%xmm3, %%xmm7           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pxor %%xmm6, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm7, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\n\t\t/* store ysubx */\n\t\t\"xorq %%rax, %%rax               ;\\n\"\n\t\t\"movd %%xmm0, %%rcx              ;\\n\"\n\t\t\"movd %%xmm0, %%r8               ;\\n\"\n\t\t\"movd %%xmm1, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"movd %%xmm0, %%rdx              ;\\n\"\n\t\t\"movd %%xmm1, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"movq %%rcx, %%r9                ;\\n\"\n\t\t\"movq %%r8, %%r10                ;\\n\"\n\t\t\"movq %%rdx, %%r11               ;\\n\"\n\t\t\"movq %%rsi, %%r12               ;\\n\"\n\t\t\"movq %%rdi, %%r13               ;\\n\"\n\t\t\"shrq $26, %%r9                  ;\\n\"\n\t\t\"shrq $26, %%r10                 ;\\n\"\n\t\t\"shrq $26, %%r11                 ;\\n\"\n\t\t\"shrq $26, %%r12                 ;\\n\"\n\t\t\"shrq $26, %%r13                 ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r9d          ;\\n\"\n\t\t\"andl $0x3ffffff, %%r8d          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r10d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r11d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%esi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r12d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r13d         ;\\n\"\n\t\t\"movl %%ecx, 0(%2)               ;\\n\"\n\t\t\"movl %%r9d, 4(%2)               ;\\n\"\n\t\t\"movl %%r8d, 8(%2)               ;\\n\"\n\t\t\"movl %%r10d, 12(%2)             ;\\n\"\n\t\t\"movl %%edx, 16(%2)              ;\\n\"\n\t\t\"movl %%r11d, 20(%2)             ;\\n\"\n\t\t\"movl %%esi, 24(%2)              ;\\n\"\n\t\t\"movl %%r12d, 28(%2)             ;\\n\"\n\t\t\"movl %%edi, 32(%2)              ;\\n\"\n\t\t\"movl %%r13d, 36(%2)             ;\\n\"\n\n\t\t/* store xaddy */\n\t\t\"movd %%xmm2, %%rcx              ;\\n\"\n\t\t\"movd %%xmm2, %%r8               ;\\n\"\n\t\t\"movd %%xmm3, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm2, %%xmm2    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm3, %%xmm3    ;\\n\"\n\t\t\"movd %%xmm2, %%rdx              ;\\n\"\n\t\t\"movd %%xmm3, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"movq %%rcx, %%r9                ;\\n\"\n\t\t\"movq %%r8, %%r10                ;\\n\"\n\t\t\"movq %%rdx, %%r11               ;\\n\"\n\t\t\"movq %%rsi, %%r12               ;\\n\"\n\t\t\"movq %%rdi, %%r13               ;\\n\"\n\t\t\"shrq $26, %%r9                  ;\\n\"\n\t\t\"shrq $26, %%r10                 ;\\n\"\n\t\t\"shrq $26, %%r11                 ;\\n\"\n\t\t\"shrq $26, %%r12                 ;\\n\"\n\t\t\"shrq $26, %%r13                 ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r9d          ;\\n\"\n\t\t\"andl $0x3ffffff, %%r8d          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r10d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r11d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%esi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r12d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r13d         ;\\n\"\n\t\t\"movl %%ecx, 40(%2)              ;\\n\"\n\t\t\"movl %%r9d, 44(%2)              ;\\n\"\n\t\t\"movl %%r8d, 48(%2)              ;\\n\"\n\t\t\"movl %%r10d, 52(%2)             ;\\n\"\n\t\t\"movl %%edx, 56(%2)              ;\\n\"\n\t\t\"movl %%r11d, 60(%2)             ;\\n\"\n\t\t\"movl %%esi, 64(%2)              ;\\n\"\n\t\t\"movl %%r12d, 68(%2)             ;\\n\"\n\t\t\"movl %%edi, 72(%2)              ;\\n\"\n\t\t\"movl %%r13d, 76(%2)             ;\\n\"\n\n\t\t/* extract t2d */\n\t\t\"xorq %%rax, %%rax               ;\\n\"\n\t\t\"movd %%xmm4, %%rcx              ;\\n\"\n\t\t\"movd %%xmm4, %%r8               ;\\n\"\n\t\t\"movd %%xmm5, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm4, %%xmm4    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm5, %%xmm5    ;\\n\"\n\t\t\"movd %%xmm4, %%rdx              ;\\n\"\n\t\t\"movd %%xmm5, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"movq %%rcx, %%r9                ;\\n\"\n\t\t\"movq %%r8, %%r10                ;\\n\"\n\t\t\"movq %%rdx, %%r11               ;\\n\"\n\t\t\"movq %%rsi, %%r12               ;\\n\"\n\t\t\"movq %%rdi, %%r13               ;\\n\"\n\t\t\"shrq $26, %%r9                  ;\\n\"\n\t\t\"shrq $26, %%r10                 ;\\n\"\n\t\t\"shrq $26, %%r11                 ;\\n\"\n\t\t\"shrq $26, %%r12                 ;\\n\"\n\t\t\"shrq $26, %%r13                 ;\\n\"\n\t\t\"andl $0x3ffffff, %%ecx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r9d          ;\\n\"\n\t\t\"andl $0x3ffffff, %%r8d          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r10d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edx          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r11d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%esi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r12d         ;\\n\"\n\t\t\"andl $0x3ffffff, %%edi          ;\\n\"\n\t\t\"andl $0x1ffffff, %%r13d         ;\\n\"\n\t\t\"movd %%ecx, %%xmm0              ;\\n\"\n\t\t\"movd %%r9d, %%xmm4              ;\\n\"\n\t\t\"movd %%r8d, %%xmm8              ;\\n\"\n\t\t\"movd %%r10d, %%xmm3             ;\\n\"\n\t\t\"movd %%edx, %%xmm1              ;\\n\"\n\t\t\"movd %%r11d, %%xmm5             ;\\n\"\n\t\t\"movd %%esi, %%xmm6              ;\\n\"\n\t\t\"movd %%r12d, %%xmm7             ;\\n\"\n\t\t\"movd %%edi, %%xmm2              ;\\n\"\n\t\t\"movd %%r13d, %%xmm9             ;\\n\"\n\t\t\"punpckldq %%xmm4, %%xmm0        ;\\n\"\n\t\t\"punpckldq %%xmm3, %%xmm8        ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm1        ;\\n\"\n\t\t\"punpckldq %%xmm7, %%xmm6        ;\\n\"\n\t\t\"punpckldq %%xmm9, %%xmm2        ;\\n\"\n\t\t\"punpcklqdq %%xmm8, %%xmm0       ;\\n\"\n\t\t\"punpcklqdq %%xmm6, %%xmm1       ;\\n\"\n\n\t\t/* set up 2p in to 3/4 */\n\t\t\"movl $0x7ffffda, %%ecx          ;\\n\"\n\t\t\"movl $0x3fffffe, %%edx          ;\\n\"\n\t\t\"movl $0x7fffffe, %%eax          ;\\n\"\n\t\t\"movd %%ecx, %%xmm3              ;\\n\"\n\t\t\"movd %%edx, %%xmm5              ;\\n\"\n\t\t\"movd %%eax, %%xmm4              ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm3        ;\\n\"\n\t\t\"punpckldq %%xmm5, %%xmm4        ;\\n\"\n\t\t\"punpcklqdq %%xmm4, %%xmm3       ;\\n\"\n\t\t\"movdqa %%xmm4, %%xmm5           ;\\n\"\n\t\t\"punpcklqdq %%xmm4, %%xmm4       ;\\n\"\n\n\t\t/* subtract and conditionally move */\n\t\t\"movl %3, %%ecx                  ;\\n\"\n\t\t\"sub $1, %%ecx                   ;\\n\"\n\t\t\"movd %%ecx, %%xmm6              ;\\n\"\n\t\t\"pshufd $0x00, %%xmm6, %%xmm6    ;\\n\"\n\t\t\"movdqa %%xmm6, %%xmm7           ;\\n\"\n\t\t\"psubd %%xmm0, %%xmm3            ;\\n\"\n\t\t\"psubd %%xmm1, %%xmm4            ;\\n\"\n\t\t\"psubd %%xmm2, %%xmm5            ;\\n\"\n\t\t\"pand %%xmm6, %%xmm0             ;\\n\"\n\t\t\"pand %%xmm6, %%xmm1             ;\\n\"\n\t\t\"pand %%xmm6, %%xmm2             ;\\n\"\n\t\t\"pandn %%xmm3, %%xmm6            ;\\n\"\n\t\t\"movdqa %%xmm7, %%xmm3           ;\\n\"\n\t\t\"pandn %%xmm4, %%xmm7            ;\\n\"\n\t\t\"pandn %%xmm5, %%xmm3            ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm3, %%xmm2              ;\\n\"\n\n\t\t/* store t2d */\n\t\t\"movdqa %%xmm0, 80(%2)           ;\\n\"\n\t\t\"movdqa %%xmm1, 96(%2)          ;\\n\"\n\t\t\"movd %%xmm2, %%rax              ;\\n\"\n\t\t\"movq %%rax, 112(%2)             ;\\n\"\n\t\t:\n\t\t: \"m\"(u), \"r\"(&table[pos * 8]), \"r\"(t), \"m\"(sign) /* %0 = u, %1 = table, %2 = t, %3 = sign */\n\t\t:\n\t\t\t\"%rax\", \"%rcx\", \"%rdx\", \"%rdi\", \"%rsi\", \"%r8\", \"%r9\", \"%r10\", \"%r11\", \"%r12\", \"%r13\", \n\t\t\t\"%xmm0\", \"%xmm1\", \"%xmm2\", \"%xmm3\", \"%xmm4\", \"%xmm5\", \"%xmm6\", \"%xmm7\", \"%xmm8\", \"%xmm9\", \"%xmm10\", \"%xmm11\", \"%xmm14\", \"%xmm14\",\n\t\t\t\"cc\", \"memory\"\n\t);\n}\n\n#endif /* defined(ED25519_GCC_64BIT_32BIT_CHOOSE) */\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-64bit-x86.h",
    "content": "#if defined(ED25519_GCC_64BIT_X86_CHOOSE)\n\n#define HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS\n\n#if defined(__has_feature)\n#  if __has_feature(address_sanitizer)\n__attribute__((no_sanitize(\"address\")))\n#  endif\n#endif\nDONNA_NOINLINE static void\nge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b) {\n\tint64_t breg = (int64_t)b;\n\tuint64_t sign = (uint64_t)breg >> 63;\n\tuint64_t mask = ~(sign - 1);\n\tuint64_t u = (breg + mask) ^ mask;\n\n\t__asm__ __volatile__ (\n\t\t/* ysubx+xaddy+t2d */\n\t\t\"movq %0, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm14             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm14, %%xmm14  ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm2, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm3, %%xmm3             ;\\n\"\n\t\t\"pxor %%xmm4, %%xmm4             ;\\n\"\n\t\t\"pxor %%xmm5, %%xmm5             ;\\n\"\n\n\t\t/* 0 */\n\t\t\"movq $0, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm6              ;\\n\"\n\t\t\"pxor %%xmm7, %%xmm7             ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm6, %%xmm2              ;\\n\"\n\t\t\"por %%xmm7, %%xmm3              ;\\n\"\n\n\t\t/* 1 */\n\t\t\"movq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 0(%1), %%xmm6            ;\\n\"\n\t\t\"movdqa 16(%1), %%xmm7           ;\\n\"\n\t\t\"movdqa 32(%1), %%xmm8           ;\\n\"\n\t\t\"movdqa 48(%1), %%xmm9           ;\\n\"\n\t\t\"movdqa 64(%1), %%xmm10          ;\\n\"\n\t\t\"movdqa 80(%1), %%xmm11          ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 2 */\n\t\t\"movq $2, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 96(%1), %%xmm6           ;\\n\"\n\t\t\"movdqa 112(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 128(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 144(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 160(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 176(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 3 */\n\t\t\"movq $3, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 192(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 208(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 224(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 240(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 256(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 272(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 4 */\n\t\t\"movq $4, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 288(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 304(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 320(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 336(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 352(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 368(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 5 */\n\t\t\"movq $5, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 384(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 400(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 416(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 432(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 448(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 464(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 6 */\n\t\t\"movq $6, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 480(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 496(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 512(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 528(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 544(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 560(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 7 */\n\t\t\"movq $7, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 576(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 592(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 608(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 624(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 640(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 656(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* 8 */\n\t\t\"movq $8, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm15             ;\\n\"\n\t\t\"pshufd $0x00, %%xmm15, %%xmm15  ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa 672(%1), %%xmm6          ;\\n\"\n\t\t\"movdqa 688(%1), %%xmm7          ;\\n\"\n\t\t\"movdqa 704(%1), %%xmm8          ;\\n\"\n\t\t\"movdqa 720(%1), %%xmm9          ;\\n\"\n\t\t\"movdqa 736(%1), %%xmm10         ;\\n\"\n\t\t\"movdqa 752(%1), %%xmm11         ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm8            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm9            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm10           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm11           ;\\n\"\n\t\t\"por %%xmm6, %%xmm0              ;\\n\"\n\t\t\"por %%xmm7, %%xmm1              ;\\n\"\n\t\t\"por %%xmm8, %%xmm2              ;\\n\"\n\t\t\"por %%xmm9, %%xmm3              ;\\n\"\n\t\t\"por %%xmm10, %%xmm4             ;\\n\"\n\t\t\"por %%xmm11, %%xmm5             ;\\n\"\n\n\t\t/* conditionally swap ysubx and xaddy */\n\t\t\"movq %3, %%rax                  ;\\n\"\n\t\t\"xorq $1, %%rax                  ;\\n\"\n\t\t\"movd %%rax, %%xmm14             ;\\n\"\n\t\t\"pxor %%xmm15, %%xmm15           ;\\n\"\n\t\t\"pshufd $0x00, %%xmm14, %%xmm14  ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\t\t\"pcmpeqd %%xmm14, %%xmm15        ;\\n\"\n\t\t\"movdqa %%xmm2, %%xmm6           ;\\n\"\n\t\t\"movdqa %%xmm3, %%xmm7           ;\\n\"\n\t\t\"pand %%xmm15, %%xmm6            ;\\n\"\n\t\t\"pand %%xmm15, %%xmm7            ;\\n\"\n\t\t\"pxor %%xmm6, %%xmm0             ;\\n\"\n\t\t\"pxor %%xmm7, %%xmm1             ;\\n\"\n\t\t\"pxor %%xmm0, %%xmm2             ;\\n\"\n\t\t\"pxor %%xmm1, %%xmm3             ;\\n\"\n\n\t\t/* store ysubx */\n\t\t\"movq $0x7ffffffffffff, %%rax    ;\\n\"\n\t\t\"movd %%xmm0, %%rcx              ;\\n\"\n\t\t\"movd %%xmm0, %%r8               ;\\n\"\n\t\t\"movd %%xmm1, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm0, %%xmm0    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm1, %%xmm1    ;\\n\"\n\t\t\"movd %%xmm0, %%rdx              ;\\n\"\n\t\t\"movd %%xmm1, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"andq %%rax, %%rcx               ;\\n\"\n\t\t\"andq %%rax, %%r8                ;\\n\"\n\t\t\"andq %%rax, %%rdx               ;\\n\"\n\t\t\"andq %%rax, %%rsi               ;\\n\"\n\t\t\"andq %%rax, %%rdi               ;\\n\"\n\t\t\"movq %%rcx, 0(%2)               ;\\n\"\n\t\t\"movq %%r8, 8(%2)                ;\\n\"\n\t\t\"movq %%rdx, 16(%2)              ;\\n\"\n\t\t\"movq %%rsi, 24(%2)              ;\\n\"\n\t\t\"movq %%rdi, 32(%2)              ;\\n\"\n\n\t\t/* store xaddy */\n\t\t\"movq $0x7ffffffffffff, %%rax    ;\\n\"\n\t\t\"movd %%xmm2, %%rcx              ;\\n\"\n\t\t\"movd %%xmm2, %%r8               ;\\n\"\n\t\t\"movd %%xmm3, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm2, %%xmm2    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm3, %%xmm3    ;\\n\"\n\t\t\"movd %%xmm2, %%rdx              ;\\n\"\n\t\t\"movd %%xmm3, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"andq %%rax, %%rcx               ;\\n\"\n\t\t\"andq %%rax, %%r8                ;\\n\"\n\t\t\"andq %%rax, %%rdx               ;\\n\"\n\t\t\"andq %%rax, %%rsi               ;\\n\"\n\t\t\"andq %%rax, %%rdi               ;\\n\"\n\t\t\"movq %%rcx, 40(%2)              ;\\n\"\n\t\t\"movq %%r8, 48(%2)               ;\\n\"\n\t\t\"movq %%rdx, 56(%2)              ;\\n\"\n\t\t\"movq %%rsi, 64(%2)              ;\\n\"\n\t\t\"movq %%rdi, 72(%2)              ;\\n\"\n\n\t\t/* extract t2d */\n\t\t\"movq $0x7ffffffffffff, %%rax    ;\\n\"\n\t\t\"movd %%xmm4, %%rcx              ;\\n\"\n\t\t\"movd %%xmm4, %%r8               ;\\n\"\n\t\t\"movd %%xmm5, %%rsi              ;\\n\"\n\t\t\"pshufd $0xee, %%xmm4, %%xmm4    ;\\n\"\n\t\t\"pshufd $0xee, %%xmm5, %%xmm5    ;\\n\"\n\t\t\"movd %%xmm4, %%rdx              ;\\n\"\n\t\t\"movd %%xmm5, %%rdi              ;\\n\"\n\t\t\"shrdq $51, %%rdx, %%r8          ;\\n\"\n\t\t\"shrdq $38, %%rsi, %%rdx         ;\\n\"\n\t\t\"shrdq $25, %%rdi, %%rsi         ;\\n\"\n\t\t\"shrq $12, %%rdi                 ;\\n\"\n\t\t\"andq %%rax, %%rcx               ;\\n\"\n\t\t\"andq %%rax, %%r8                ;\\n\"\n\t\t\"andq %%rax, %%rdx               ;\\n\"\n\t\t\"andq %%rax, %%rsi               ;\\n\"\n\t\t\"andq %%rax, %%rdi               ;\\n\"\n\n\t\t/* conditionally negate t2d */\n\t\t\"movq %3, %%rax                  ;\\n\"\n\t\t\"movq $0xfffffffffffda, %%r9     ;\\n\"\n\t\t\"movq $0xffffffffffffe, %%r10    ;\\n\"\n\t\t\"movq %%r10, %%r11               ;\\n\"\n\t\t\"movq %%r10, %%r12               ;\\n\"\n\t\t\"movq %%r10, %%r13               ;\\n\"\n\t\t\"subq %%rcx, %%r9                ;\\n\"\n\t\t\"subq %%r8, %%r10                ;\\n\"\n\t\t\"subq %%rdx, %%r11               ;\\n\"\n\t\t\"subq %%rsi, %%r12               ;\\n\"\n\t\t\"subq %%rdi, %%r13               ;\\n\"\n\t\t\"cmpq $1, %%rax                  ;\\n\"\n\t\t\"cmove %%r9, %%rcx               ;\\n\"\n\t\t\"cmove %%r10, %%r8               ;\\n\"\n\t\t\"cmove %%r11, %%rdx              ;\\n\"\n\t\t\"cmove %%r12, %%rsi              ;\\n\"\n\t\t\"cmove %%r13, %%rdi              ;\\n\"\n\n\t\t/* store t2d */\n\t\t\"movq %%rcx, 80(%2)              ;\\n\"\n\t\t\"movq %%r8, 88(%2)               ;\\n\"\n\t\t\"movq %%rdx, 96(%2)              ;\\n\"\n\t\t\"movq %%rsi, 104(%2)             ;\\n\"\n\t\t\"movq %%rdi, 112(%2)             ;\\n\"\n\t\t:\n\t\t: \"m\"(u), \"r\"(&table[pos * 8]), \"r\"(t), \"m\"(sign) /* %0 = u, %1 = table, %2 = t, %3 = sign */\n\t\t:\n\t\t\t\"%rax\", \"%rcx\", \"%rdx\", \"%rdi\", \"%rsi\", \"%r8\", \"%r9\", \"%r10\", \"%r11\", \"%r12\", \"%r13\", \n\t\t\t\"%xmm0\", \"%xmm1\", \"%xmm2\", \"%xmm3\", \"%xmm4\", \"%xmm5\", \"%xmm6\", \"%xmm7\", \"%xmm8\", \"%xmm9\", \"%xmm10\", \"%xmm11\", \"%xmm14\", \"%xmm14\",\n\t\t\t\"cc\", \"memory\"\n\t);\n}\n\n#endif /* defined(ED25519_GCC_64BIT_X86_CHOOSE) */\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-basepoint-table.h",
    "content": "/* multiples of the base point in packed {ysubx, xaddy, t2d} form */\nstatic const uint8_t ALIGN(16) ge25519_niels_base_multiples[256][96] = {\n\t{0x3e,0x91,0x40,0xd7,0x05,0x39,0x10,0x9d,0xb3,0xbe,0x40,0xd1,0x05,0x9f,0x39,0xfd,0x09,0x8a,0x8f,0x68,0x34,0x84,0xc1,0xa5,0x67,0x12,0xf8,0x98,0x92,0x2f,0xfd,0x44,0x85,0x3b,0x8c,0xf5,0xc6,0x93,0xbc,0x2f,0x19,0x0e,0x8c,0xfb,0xc6,0x2d,0x93,0xcf,0xc2,0x42,0x3d,0x64,0x98,0x48,0x0b,0x27,0x65,0xba,0xd4,0x33,0x3a,0x9d,0xcf,0x07,0x59,0xbb,0x6f,0x4b,0x67,0x15,0xbd,0xdb,0xea,0xa5,0xa2,0xee,0x00,0x3f,0xe1,0x41,0xfa,0xc6,0x57,0xc9,0x1c,0x9d,0xd4,0xcd,0xca,0xec,0x16,0xaf,0x1f,0xbe,0x0e,0x4f},\n\t{0xa8,0xd5,0xb4,0x42,0x60,0xa5,0x99,0x8a,0xf6,0xac,0x60,0x4e,0x0c,0x81,0x2b,0x8f,0xaa,0x37,0x6e,0xb1,0x6b,0x23,0x9e,0xe0,0x55,0x25,0xc9,0x69,0xa6,0x95,0xb5,0x6b,0xd7,0x71,0x3c,0x93,0xfc,0xe7,0x24,0x92,0xb5,0xf5,0x0f,0x7a,0x96,0x9d,0x46,0x9f,0x02,0x07,0xd6,0xe1,0x65,0x9a,0xa6,0x5a,0x2e,0x2e,0x7d,0xa8,0x3f,0x06,0x0c,0x59,0x02,0x68,0xd3,0xda,0xaa,0x7e,0x34,0x6e,0x05,0x48,0xee,0x83,0x93,0x59,0xf3,0xba,0x26,0x68,0x07,0xe6,0x10,0xbe,0xca,0x3b,0xb8,0xd1,0x5e,0x16,0x0a,0x4f,0x31,0x49},\n\t{0x65,0xd2,0xfc,0xa4,0xe8,0x1f,0x61,0x56,0x7d,0xba,0xc1,0xe5,0xfd,0x53,0xd3,0x3b,0xbd,0xd6,0x4b,0x21,0x1a,0xf3,0x31,0x81,0x62,0xda,0x5b,0x55,0x87,0x15,0xb9,0x2a,0x30,0x97,0xee,0x4c,0xa8,0xb0,0x25,0xaf,0x8a,0x4b,0x86,0xe8,0x30,0x84,0x5a,0x02,0x32,0x67,0x01,0x9f,0x02,0x50,0x1b,0xc1,0xf4,0xf8,0x80,0x9a,0x1b,0x4e,0x16,0x7a,0x34,0x48,0x67,0xf1,0xf4,0x11,0xf2,0x9b,0x95,0xf8,0x2d,0xf6,0x17,0x6b,0x4e,0xb8,0x4e,0x2a,0x72,0x5b,0x07,0x6f,0xde,0xd7,0x21,0x2a,0xbb,0x63,0xb9,0x04,0x9a,0x54},\n\t{0xbf,0x18,0x68,0x05,0x0a,0x05,0xfe,0x95,0xa9,0xfa,0x60,0x56,0x71,0x89,0x7e,0x32,0x73,0x50,0xa0,0x06,0xcd,0xe3,0xe8,0xc3,0x9a,0xa4,0x45,0x74,0x4c,0x3f,0x93,0x27,0x9f,0x09,0xfc,0x8e,0xb9,0x51,0x73,0x28,0x38,0x25,0xfd,0x7d,0xf4,0xc6,0x65,0x67,0x65,0x92,0x0a,0xfb,0x3d,0x8d,0x34,0xca,0x27,0x87,0xe5,0x21,0x03,0x91,0x0e,0x68,0xb0,0x26,0x14,0xe5,0xec,0x45,0x1e,0xbf,0x94,0x0f,0xba,0x6d,0x3d,0xc6,0x2b,0xe3,0xc0,0x52,0xf8,0x8c,0xd5,0x74,0x29,0xe4,0x18,0x4c,0xe6,0xb0,0xb1,0x79,0xf0,0x44},\n\t{0xba,0xd6,0x47,0xa4,0xc3,0x82,0x91,0x7f,0xb7,0x29,0x27,0x4b,0xd1,0x14,0x00,0xd5,0x87,0xa0,0x64,0xb8,0x1c,0xf1,0x3c,0xe3,0xf3,0x55,0x1b,0xeb,0x73,0x7e,0x4a,0x15,0x33,0xbb,0xa5,0x08,0x44,0xbc,0x12,0xa2,0x02,0xed,0x5e,0xc7,0xc3,0x48,0x50,0x8d,0x44,0xec,0xbf,0x5a,0x0c,0xeb,0x1b,0xdd,0xeb,0x06,0xe2,0x46,0xf1,0xcc,0x45,0x29,0xb3,0x03,0xd0,0xe7,0x79,0xa1,0x32,0xc8,0x7e,0x4d,0x12,0x00,0x0a,0x9d,0x72,0x5f,0xf3,0x8f,0x6d,0x0e,0xa1,0xd4,0xc1,0x62,0x98,0x7a,0xb2,0x38,0x59,0xac,0xb8,0x68},\n\t{0xa4,0x8c,0x7d,0x7b,0xb6,0x06,0x98,0x49,0x39,0x27,0xd2,0x27,0x84,0xe2,0x5b,0x57,0xb9,0x53,0x45,0x20,0xe7,0x5c,0x08,0xbb,0x84,0x78,0x41,0xae,0x41,0x4c,0xb6,0x38,0x31,0x71,0x15,0x77,0xeb,0xee,0x0c,0x3a,0x88,0xaf,0xc8,0x00,0x89,0x15,0x27,0x9b,0x36,0xa7,0x59,0xda,0x68,0xb6,0x65,0x80,0xbd,0x38,0xcc,0xa2,0xb6,0x7b,0xe5,0x51,0xa4,0xe3,0x9d,0x68,0x91,0xad,0x9d,0x8f,0x37,0x91,0xfb,0xf8,0x28,0x24,0x5f,0x17,0x88,0xb9,0xcf,0x9f,0x32,0xb5,0x0a,0x05,0x9f,0xc0,0x54,0x13,0xa2,0xdf,0x65,0x78},\n\t{0xb1,0x21,0x32,0xaa,0x9a,0x2c,0x6f,0xba,0xa7,0x23,0xba,0x3b,0x53,0x21,0xa0,0x6c,0x3a,0x2c,0x19,0x92,0x4f,0x76,0xea,0x9d,0xe0,0x17,0x53,0x2e,0x5d,0xdd,0x6e,0x1d,0xbf,0xa3,0x4e,0x94,0xd0,0x5c,0x1a,0x6b,0xd2,0xc0,0x9d,0xb3,0x3a,0x35,0x70,0x74,0x49,0x2e,0x54,0x28,0x82,0x52,0xb2,0x71,0x7e,0x92,0x3c,0x28,0x69,0xea,0x1b,0x46,0x36,0xda,0x0f,0xab,0xac,0x8a,0x7a,0x21,0xc8,0x49,0x35,0x3d,0x54,0xc6,0x28,0xa5,0x68,0x75,0xab,0x13,0x8b,0x5b,0xd0,0x37,0x37,0xbc,0x2c,0x3a,0x62,0xef,0x3c,0x23},\n\t{0xd9,0x34,0x92,0xf3,0xed,0x5d,0xa7,0xe2,0xf9,0x58,0xb5,0xe1,0x80,0x76,0x3d,0x96,0xfb,0x23,0x3c,0x6e,0xac,0x41,0x27,0x2c,0xc3,0x01,0x0e,0x32,0xa1,0x24,0x90,0x3a,0x8f,0x3e,0xdd,0x04,0x66,0x59,0xb7,0x59,0x2c,0x70,0x88,0xe2,0x77,0x03,0xb3,0x6c,0x23,0xc3,0xd9,0x5e,0x66,0x9c,0x33,0xb1,0x2f,0xe5,0xbc,0x61,0x60,0xe7,0x15,0x09,0x7e,0xa3,0x34,0xa8,0x35,0xe8,0x7d,0xdf,0xea,0x57,0x98,0x68,0xda,0x9c,0xe1,0x8b,0x26,0xb3,0x67,0x71,0x36,0x85,0x11,0x2c,0xc2,0xd5,0xef,0xdb,0xd9,0xb3,0x9e,0x58},\n\t{0x5e,0x51,0xaa,0x49,0x54,0x63,0x5b,0xed,0x3a,0x82,0xc6,0x0b,0x9f,0xc4,0x65,0xa8,0xc4,0xd1,0x42,0x5b,0xe9,0x1f,0x0c,0x85,0xb9,0x15,0xd3,0x03,0x6f,0x6d,0xd7,0x30,0x1d,0x9c,0x2f,0x63,0x0e,0xdd,0xcc,0x2e,0x15,0x31,0x89,0x76,0x96,0xb6,0xd0,0x51,0x58,0x7a,0x63,0xa8,0x6b,0xb7,0xdf,0x52,0x39,0xef,0x0e,0xa0,0x49,0x7d,0xd3,0x6d,0xc7,0xe4,0x06,0x21,0x17,0x44,0x44,0x6c,0x69,0x7f,0x8d,0x92,0x80,0xd6,0x53,0xfb,0x26,0x3f,0x4d,0x69,0xa4,0x9e,0x73,0xb4,0xb0,0x4b,0x86,0x2e,0x11,0x97,0xc6,0x10},\n\t{0xde,0x5f,0xbe,0x7d,0x27,0xc4,0x93,0x64,0xa2,0x7e,0xad,0x19,0xad,0x4f,0x5d,0x26,0x90,0x45,0x30,0x46,0xc8,0xdf,0x00,0x0e,0x09,0xfe,0x66,0xed,0xab,0x1c,0xe6,0x25,0x05,0xc8,0x58,0x83,0xa0,0x2a,0xa6,0x0c,0x47,0x42,0x20,0x7a,0xe3,0x4a,0x3d,0x6a,0xdc,0xed,0x11,0x3b,0xa6,0xd3,0x64,0x74,0xef,0x06,0x08,0x55,0xaf,0x9b,0xbf,0x03,0x04,0x66,0x58,0xcc,0x28,0xe1,0x13,0x3f,0x7e,0x74,0x59,0xb4,0xec,0x73,0x58,0x6f,0xf5,0x68,0x12,0xcc,0xed,0x3d,0xb6,0xa0,0x2c,0xe2,0x86,0x45,0x63,0x78,0x6d,0x56},\n\t{0x34,0x08,0xc1,0x9c,0x9f,0xa4,0x37,0x16,0x51,0xc4,0x9b,0xa8,0xd5,0x56,0x8e,0xbc,0xdb,0xd2,0x7f,0x7f,0x0f,0xec,0xb5,0x1c,0xd9,0x35,0xcc,0x5e,0xca,0x5b,0x97,0x33,0xd0,0x2f,0x5a,0xc6,0x85,0x42,0x05,0xa1,0xc3,0x67,0x16,0xf3,0x2a,0x11,0x64,0x6c,0x58,0xee,0x1a,0x73,0x40,0xe2,0x0a,0x68,0x2a,0xb2,0x93,0x47,0xf3,0xa5,0xfb,0x14,0xd4,0xf7,0x85,0x69,0x16,0x46,0xd7,0x3c,0x57,0x00,0xc8,0xc9,0x84,0x5e,0x3e,0x59,0x1e,0x13,0x61,0x7b,0xb6,0xf2,0xc3,0x2f,0x6c,0x52,0xfc,0x83,0xea,0x9c,0x82,0x14},\n\t{0xc2,0x95,0xdd,0x97,0x84,0x7b,0x43,0xff,0xa7,0xb5,0x4e,0xaa,0x30,0x4e,0x74,0x6c,0x8b,0xe8,0x85,0x3c,0x61,0x5d,0x0c,0x9e,0x73,0x81,0x75,0x5f,0x1e,0xc7,0xd9,0x2f,0xb8,0xec,0x71,0x4e,0x2f,0x0b,0xe7,0x21,0xe3,0x77,0xa4,0x40,0xb9,0xdd,0x56,0xe6,0x80,0x4f,0x1d,0xce,0xce,0x56,0x65,0xbf,0x7e,0x7b,0x5d,0x53,0xc4,0x3b,0xfc,0x05,0xdd,0xde,0xaf,0x52,0xae,0xb3,0xb8,0x24,0xcf,0x30,0x3b,0xed,0x8c,0x63,0x95,0x34,0x95,0x81,0xbe,0xa9,0x83,0xbc,0xa4,0x33,0x04,0x1f,0x65,0x5c,0x47,0x67,0x37,0x37},\n\t{0xd9,0xad,0xd1,0x40,0xfd,0x99,0xba,0x2f,0x27,0xd0,0xf4,0x96,0x6f,0x16,0x07,0xb3,0xae,0x3b,0xf0,0x15,0x52,0xf0,0x63,0x43,0x99,0xf9,0x18,0x3b,0x6c,0xa5,0xbe,0x1f,0x90,0x65,0x24,0x14,0xcb,0x95,0x40,0x63,0x35,0x55,0xc1,0x16,0x40,0x14,0x12,0xef,0x60,0xbc,0x10,0x89,0x0c,0x14,0x38,0x9e,0x8c,0x7c,0x90,0x30,0x57,0x90,0xf5,0x6b,0x8a,0x5b,0x41,0xe1,0xf1,0x78,0xa7,0x0f,0x7e,0xa7,0xc3,0xba,0xf7,0x9f,0x40,0x06,0x50,0x9a,0xa2,0x9a,0xb8,0xd7,0x52,0x6f,0x56,0x5a,0x63,0x7a,0xf6,0x1c,0x52,0x02},\n\t{0x94,0x52,0x9d,0x0a,0x0b,0xee,0x3f,0x51,0x66,0x5a,0xdf,0x0f,0x5c,0xe7,0x98,0x8f,0xce,0x07,0xe1,0xbf,0x88,0x86,0x61,0xd4,0xed,0x2c,0x38,0x71,0x7e,0x0a,0xa0,0x3f,0xe4,0x5e,0x2f,0x77,0x20,0x67,0x14,0xb1,0xce,0x9a,0x07,0x96,0xb1,0x94,0xf8,0xe8,0x4a,0x82,0xac,0x00,0x4d,0x22,0xf8,0x4a,0xc4,0x6c,0xcd,0xf7,0xd9,0x53,0x17,0x00,0x34,0xdb,0x3d,0x96,0x2d,0x23,0x69,0x3c,0x58,0x38,0x97,0xb4,0xda,0x87,0xde,0x1d,0x85,0xf2,0x91,0xa0,0xf9,0xd1,0xd7,0xaa,0xb6,0xed,0x48,0xa0,0x2f,0xfe,0xb5,0x12},\n\t{0x4d,0xe3,0xfc,0x96,0xc4,0xfb,0xf0,0x71,0xed,0x5b,0xf3,0xad,0x6b,0x82,0xb9,0x73,0x61,0xc5,0x28,0xff,0x61,0x72,0x04,0xd2,0x6f,0x20,0xb1,0x6f,0xf9,0x76,0x9b,0x74,0x92,0x1e,0x6f,0xad,0x26,0x7c,0x2b,0xdf,0x13,0x89,0x4b,0x50,0x23,0xd3,0x66,0x4b,0xc3,0x8b,0x1c,0x75,0xc0,0x9d,0x40,0x8c,0xb8,0xc7,0x96,0x07,0xc2,0x93,0x7e,0x6f,0x05,0xae,0xa6,0xae,0x04,0xf6,0x5a,0x1f,0x99,0x9c,0xe4,0xbe,0xf1,0x51,0x23,0xc1,0x66,0x6b,0xff,0xee,0xb5,0x08,0xa8,0x61,0x51,0x21,0xe0,0x01,0x0f,0xc1,0xce,0x0f},\n\t{0x44,0x1e,0xfe,0x49,0xa6,0x58,0x4d,0x64,0x7e,0x77,0xad,0x31,0xa2,0xae,0xfc,0x21,0xd2,0xd0,0x7f,0x88,0x5a,0x1c,0x44,0x02,0xf3,0x11,0xc5,0x83,0x71,0xaa,0x01,0x49,0x45,0x4e,0x24,0xc4,0x9d,0xd2,0xf2,0x3d,0x0a,0xde,0xd8,0x93,0x74,0x0e,0x02,0x2b,0x4d,0x21,0x0c,0x82,0x7e,0x06,0xc8,0x6c,0x0a,0xb9,0xea,0x6f,0x16,0x79,0x37,0x41,0xf0,0xf8,0x1a,0x8c,0x54,0xb7,0xb1,0x08,0xb4,0x99,0x62,0x24,0x7c,0x7a,0x0f,0xce,0x39,0xd9,0x06,0x1e,0xf9,0xb0,0x60,0xf7,0x13,0x12,0x6d,0x72,0x7b,0x88,0xbb,0x41},\n\t{0xbe,0x46,0x43,0x74,0x44,0x7d,0xe8,0x40,0x25,0x2b,0xb5,0x15,0xd4,0xda,0x48,0x1d,0x3e,0x60,0x3b,0xa1,0x18,0x8a,0x3a,0x7c,0xf7,0xbd,0xcd,0x2f,0xc1,0x28,0xb7,0x4e,0xae,0x91,0x66,0x7c,0x59,0x4c,0x23,0x7e,0xc8,0xb4,0x85,0x0a,0x3d,0x9d,0x88,0x64,0xe7,0xfa,0x4a,0x35,0x0c,0xc9,0xe2,0xda,0x1d,0x9e,0x6a,0x0c,0x07,0x1e,0x87,0x0a,0x89,0x89,0xbc,0x4b,0x99,0xb5,0x01,0x33,0x60,0x42,0xdd,0x5b,0x3a,0xae,0x6b,0x73,0x3c,0x9e,0xd5,0x19,0xe2,0xad,0x61,0x0d,0x64,0xd4,0x85,0x26,0x0f,0x30,0xe7,0x3e},\n\t{0xb7,0xd6,0x7d,0x9e,0xe4,0x55,0xd2,0xf5,0xac,0x1e,0x0b,0x61,0x5c,0x11,0x16,0x80,0xca,0x87,0xe1,0x92,0x5d,0x97,0x99,0x3c,0xc2,0x25,0x91,0x97,0x62,0x57,0x81,0x13,0x18,0x75,0x1e,0x84,0x47,0x79,0xfa,0x43,0xd7,0x46,0x9c,0x63,0x59,0xfa,0xc6,0xe5,0x74,0x2b,0x05,0xe3,0x1d,0x5e,0x06,0xa1,0x30,0x90,0xb8,0xcf,0xa2,0xc6,0x47,0x7d,0xe0,0xd6,0xf0,0x8e,0x14,0xd0,0xda,0x3f,0x3c,0x6f,0x54,0x91,0x9a,0x74,0x3e,0x9d,0x57,0x81,0xbb,0x26,0x10,0x62,0xec,0x71,0x80,0xec,0xc9,0x34,0x8d,0xf5,0x8c,0x14},\n\t{0x27,0xf0,0x34,0x79,0xf6,0x92,0xa4,0x46,0xa9,0x0a,0x84,0xf6,0xbe,0x84,0x99,0x46,0x54,0x18,0x61,0x89,0x2a,0xbc,0xa1,0x5c,0xd4,0xbb,0x5d,0xbd,0x1e,0xfa,0xf2,0x3f,0x6d,0x75,0xe4,0x9a,0x7d,0x2f,0x57,0xe2,0x7f,0x48,0xf3,0x88,0xbb,0x45,0xc3,0x56,0x8d,0xa8,0x60,0x69,0x6d,0x0b,0xd1,0x9f,0xb9,0xa1,0xae,0x4e,0xad,0xeb,0x8f,0x27,0x66,0x39,0x93,0x8c,0x1f,0x68,0xaa,0xb1,0x98,0x0c,0x29,0x20,0x9c,0x94,0x21,0x8c,0x52,0x3c,0x9d,0x21,0x91,0x52,0x11,0x39,0x7b,0x67,0x9c,0xfe,0x02,0xdd,0x04,0x41},\n\t{0x2a,0x42,0x24,0x11,0x5e,0xbf,0xb2,0x72,0xb5,0x3a,0xa3,0x98,0x33,0x0c,0xfa,0xa1,0x66,0xb6,0x52,0xfa,0x01,0x61,0xcb,0x94,0xd5,0x53,0xaf,0xaf,0x00,0x3b,0x86,0x2c,0xb8,0x6a,0x09,0xdb,0x06,0x4e,0x21,0x81,0x35,0x4f,0xe4,0x0c,0xc9,0xb6,0xa8,0x21,0xf5,0x2a,0x9e,0x40,0x2a,0xc1,0x24,0x65,0x81,0xa4,0xfc,0x8e,0xa4,0xb5,0x65,0x01,0x76,0x6a,0x84,0xa0,0x74,0xa4,0x90,0xf1,0xc0,0x7c,0x2f,0xcd,0x84,0xf9,0xef,0x12,0x8f,0x2b,0xaa,0x58,0x06,0x29,0x5e,0x69,0xb8,0xc8,0xfe,0xbf,0xd9,0x67,0x1b,0x59},\n\t{0xfa,0x9b,0xb4,0x80,0x1c,0x0d,0x2f,0x31,0x8a,0xec,0xf3,0xab,0x5e,0x51,0x79,0x59,0x88,0x1c,0xf0,0x9e,0xc0,0x33,0x70,0x72,0xcb,0x7b,0x8f,0xca,0xc7,0x2e,0xe0,0x3d,0x5d,0xb5,0x18,0x9f,0x71,0xb3,0xb9,0x99,0x1e,0x64,0x8c,0xa1,0xfa,0xe5,0x65,0xe4,0xed,0x05,0x9f,0xc2,0x36,0x11,0x08,0x61,0x8b,0x12,0x30,0x70,0x86,0x4f,0x9b,0x48,0xef,0x92,0xeb,0x3a,0x2d,0x10,0x32,0xd2,0x61,0xa8,0x16,0x61,0xb4,0x53,0x62,0xe1,0x24,0xaa,0x0b,0x19,0xe7,0xab,0x7e,0x3d,0xbf,0xbe,0x6c,0x49,0xba,0xfb,0xf5,0x49},\n\t{0xd4,0xcf,0x5b,0x8a,0x10,0x9a,0x94,0x30,0xeb,0x73,0x64,0xbc,0x70,0xdd,0x40,0xdc,0x1c,0x0d,0x7c,0x30,0xc1,0x94,0xc2,0x92,0x74,0x6e,0xfa,0xcb,0x6d,0xa8,0x04,0x56,0x2e,0x57,0x9c,0x1e,0x8c,0x62,0x5d,0x15,0x41,0x47,0x88,0xc5,0xac,0x86,0x4d,0x8a,0xeb,0x63,0x57,0x51,0xf6,0x52,0xa3,0x91,0x5b,0x51,0x67,0x88,0xc2,0xa6,0xa1,0x06,0xb6,0x64,0x17,0x7c,0xd4,0xd1,0x88,0x72,0x51,0x8b,0x41,0xe0,0x40,0x11,0x54,0x72,0xd1,0xf6,0xac,0x18,0x60,0x1a,0x03,0x9f,0xc6,0x42,0x27,0xfe,0x89,0x9e,0x98,0x20},\n\t{0x7f,0xcc,0x2d,0x3a,0xfd,0x77,0x97,0x49,0x92,0xd8,0x4f,0xa5,0x2c,0x7c,0x85,0x32,0xa0,0xe3,0x07,0xd2,0x64,0xd8,0x79,0xa2,0x29,0x7e,0xa6,0x0c,0x1d,0xed,0x03,0x04,0x2e,0xec,0xea,0x85,0x8b,0x27,0x74,0x16,0xdf,0x2b,0xcb,0x7a,0x07,0xdc,0x21,0x56,0x5a,0xf4,0xcb,0x61,0x16,0x4c,0x0a,0x64,0xd3,0x95,0x05,0xf7,0x50,0x99,0x0b,0x73,0x52,0xc5,0x4e,0x87,0x35,0x2d,0x4b,0xc9,0x8d,0x6f,0x24,0x98,0xcf,0xc8,0xe6,0xc5,0xce,0x35,0xc0,0x16,0xfa,0x46,0xcb,0xf7,0xcc,0x3d,0x30,0x08,0x43,0x45,0xd7,0x5b},\n\t{0xc2,0x4c,0xb2,0x28,0x95,0xd1,0x9a,0x7f,0x81,0xc1,0x35,0x63,0x65,0x54,0x6b,0x7f,0x36,0x72,0xc0,0x4f,0x6e,0xb6,0xb8,0x66,0x83,0xad,0x80,0x73,0x00,0x78,0x3a,0x13,0x2a,0x79,0xe7,0x15,0x21,0x93,0xc4,0x85,0xc9,0xdd,0xcd,0xbd,0xa2,0x89,0x4c,0xc6,0x62,0xd7,0xa3,0xad,0xa8,0x3d,0x1e,0x9d,0x2c,0xf8,0x67,0x30,0x12,0xdb,0xb7,0x5b,0xbe,0x62,0xca,0xc6,0x67,0xf4,0x61,0x09,0xee,0x52,0x19,0x21,0xd6,0x21,0xec,0x04,0x70,0x47,0xd5,0x9b,0x77,0x60,0x23,0x18,0xd2,0xe0,0xf0,0x58,0x6d,0xca,0x0d,0x74},\n\t{0x4e,0xce,0xcf,0x52,0x07,0xee,0x48,0xdf,0xb7,0x08,0xec,0x06,0xf3,0xfa,0xff,0xc3,0xc4,0x59,0x54,0xb9,0x2a,0x0b,0x71,0x05,0x8d,0xa3,0x3e,0x96,0xfa,0x25,0x1d,0x16,0x3c,0x43,0x78,0x04,0x57,0x8c,0x1a,0x23,0x9d,0x43,0x81,0xc2,0x0e,0x27,0xb5,0xb7,0x9f,0x07,0xd9,0xe3,0xea,0x99,0xaa,0xdb,0xd9,0x03,0x2b,0x6c,0x25,0xf5,0x03,0x2c,0x7d,0xa4,0x53,0x7b,0x75,0x18,0x0f,0x79,0x79,0x58,0x0c,0xcf,0x30,0x01,0x7b,0x30,0xf9,0xf7,0x7e,0x25,0x77,0x3d,0x90,0x31,0xaf,0xbb,0x96,0xbd,0xbd,0x68,0x94,0x69},\n\t{0xcf,0xfe,0xda,0xf4,0x46,0x2f,0x1f,0xbd,0xf7,0xd6,0x7f,0xa4,0x14,0x01,0xef,0x7c,0x7f,0xb3,0x47,0x4a,0xda,0xfd,0x1f,0xd3,0x85,0x57,0x90,0x73,0xa4,0x19,0x52,0x52,0x48,0x19,0xa9,0x6a,0xe6,0x3d,0xdd,0xd8,0xcc,0xd2,0xc0,0x2f,0xc2,0x64,0x50,0x48,0x2f,0xea,0xfd,0x34,0x66,0x24,0x48,0x9b,0x3a,0x2e,0x4a,0x6c,0x4e,0x1c,0x3e,0x29,0xe1,0x12,0x51,0x92,0x4b,0x13,0x6e,0x37,0xa0,0x5d,0xa1,0xdc,0xb5,0x78,0x37,0x70,0x11,0x31,0x1c,0x46,0xaf,0x89,0x45,0xb0,0x23,0x28,0x03,0x7f,0x44,0x5c,0x60,0x5b},\n\t{0x89,0x7c,0xc4,0x20,0x59,0x80,0x65,0xb9,0xcc,0x8f,0x3b,0x92,0x0c,0x10,0xf0,0xe7,0x77,0xef,0xe2,0x02,0x65,0x25,0x01,0x00,0xee,0xb3,0xae,0xa8,0xce,0x6d,0xa7,0x24,0x4c,0xf0,0xe7,0xf0,0xc6,0xfe,0xe9,0x3b,0x62,0x49,0xe3,0x75,0x9e,0x57,0x6a,0x86,0x1a,0xe6,0x1d,0x1e,0x16,0xef,0x42,0x55,0xd5,0xbd,0x5a,0xcc,0xf4,0xfe,0x12,0x2f,0x40,0xc7,0xc0,0xdf,0xb2,0x22,0x45,0x0a,0x07,0xa4,0xc9,0x40,0x7f,0x6e,0xd0,0x10,0x68,0xf6,0xcf,0x78,0x41,0x14,0xcf,0xc6,0x90,0x37,0xa4,0x18,0x25,0x7b,0x60,0x5e},\n\t{0x18,0x18,0xdf,0x6c,0x8f,0x1d,0xb3,0x58,0xa2,0x58,0x62,0xc3,0x4f,0xa7,0xcf,0x35,0x6e,0x1d,0xe6,0x66,0x4f,0xff,0xb3,0xe1,0xf7,0xd5,0xcd,0x6c,0xab,0xac,0x67,0x50,0x14,0xcf,0x96,0xa5,0x1c,0x43,0x2c,0xa0,0x00,0xe4,0xd3,0xae,0x40,0x2d,0xc4,0xe3,0xdb,0x26,0x0f,0x2e,0x80,0x26,0x45,0xd2,0x68,0x70,0x45,0x9e,0x13,0x33,0x1f,0x20,0x51,0x9d,0x03,0x08,0x6b,0x7f,0x52,0xfd,0x06,0x00,0x7c,0x01,0x64,0x49,0xb1,0x18,0xa8,0xa4,0x25,0x2e,0xb0,0x0e,0x22,0xd5,0x75,0x03,0x46,0x62,0x88,0xba,0x7c,0x39},\n\t{0xb2,0x59,0x59,0xf0,0x93,0x30,0xc1,0x30,0x76,0x79,0xa9,0xe9,0x8d,0xa1,0x3a,0xe2,0x26,0x5e,0x1d,0x72,0x91,0xd4,0x2f,0x22,0x3a,0x6c,0x6e,0x76,0x20,0xd3,0x39,0x23,0xe7,0x79,0x13,0xc8,0xfb,0xc3,0x15,0x78,0xf1,0x2a,0xe1,0xdd,0x20,0x94,0x61,0xa6,0xd5,0xfd,0xa8,0x85,0xf8,0xc0,0xa9,0xff,0x52,0xc2,0xe1,0xc1,0x22,0x40,0x1b,0x77,0xa7,0x2f,0x3a,0x51,0x86,0xd9,0x7d,0xd8,0x08,0xcf,0xd4,0xf9,0x71,0x9b,0xac,0xf5,0xb3,0x83,0xa2,0x1e,0x1b,0xc3,0x6b,0xd0,0x76,0x1a,0x97,0x19,0x92,0x18,0x1a,0x33},\n\t{0xc6,0x80,0x4f,0xfb,0x45,0x6f,0x16,0xf5,0xcf,0x75,0xc7,0x61,0xde,0xc7,0x36,0x9c,0x1c,0xd9,0x41,0x90,0x1b,0xe8,0xd4,0xe3,0x21,0xfe,0xbd,0x83,0x6b,0x7c,0x16,0x31,0xaf,0x72,0x75,0x9d,0x3a,0x2f,0x51,0x26,0x9e,0x4a,0x07,0x68,0x88,0xe2,0xcb,0x5b,0xc4,0xf7,0x80,0x11,0xc1,0xc1,0xed,0x84,0x7b,0xa6,0x49,0xf6,0x9f,0x61,0xc9,0x1a,0x68,0x10,0x4b,0x52,0x42,0x38,0x2b,0xf2,0x87,0xe9,0x9c,0xee,0x3b,0x34,0x68,0x50,0xc8,0x50,0x62,0x4a,0x84,0x71,0x9d,0xfc,0x11,0xb1,0x08,0x1f,0x34,0x36,0x24,0x61},\n\t{0x8d,0x89,0x4e,0x87,0xdb,0x41,0x9d,0xd9,0x20,0xdc,0x07,0x6c,0xf1,0xa5,0xfe,0x09,0xbc,0x9b,0x0f,0xd0,0x67,0x2c,0x3d,0x79,0x40,0xff,0x5e,0x9e,0x30,0xe2,0xeb,0x46,0x38,0x26,0x2d,0x1a,0xe3,0x49,0x63,0x8b,0x35,0xfd,0xd3,0x9b,0x00,0xb7,0xdf,0x9d,0xa4,0x6b,0xa0,0xa3,0xb8,0xf1,0x8b,0x7f,0x45,0x04,0xd9,0x78,0x31,0xaa,0x22,0x15,0x38,0x49,0x61,0x69,0x53,0x2f,0x38,0x2c,0x10,0x6d,0x2d,0xb7,0x9a,0x40,0xfe,0xda,0x27,0xf2,0x46,0xb6,0x91,0x33,0xc8,0xe8,0x6c,0x30,0x24,0x05,0xf5,0x70,0xfe,0x45},\n\t{0x8c,0x0b,0x0c,0x96,0xa6,0x75,0x48,0xda,0x20,0x2f,0x0e,0xef,0x76,0xd0,0x68,0x5b,0xd4,0x8f,0x0b,0x3d,0xcf,0x51,0xfb,0x07,0xd4,0x92,0xe3,0xa0,0x23,0x16,0x8d,0x42,0x91,0x14,0x95,0xc8,0x20,0x49,0xf2,0x62,0xa2,0x0c,0x63,0x3f,0xc8,0x07,0xf0,0x05,0xb8,0xd4,0xc9,0xf5,0xd2,0x45,0xbb,0x6f,0x45,0x22,0x7a,0xb5,0x6d,0x9f,0x61,0x16,0xfd,0x08,0xa3,0x01,0x44,0x4a,0x4f,0x08,0xac,0xca,0xa5,0x76,0xc3,0x19,0x22,0xa8,0x7d,0xbc,0xd1,0x43,0x46,0xde,0xb8,0xde,0xc6,0x38,0xbd,0x60,0x2d,0x59,0x81,0x1d},\n\t{0x5f,0xac,0x0d,0xa6,0x56,0x87,0x36,0x61,0x57,0xdc,0xab,0xeb,0x6a,0x2f,0xe0,0x17,0x7d,0x0f,0xce,0x4c,0x2d,0x3f,0x19,0x7f,0xf0,0xdc,0xec,0x89,0x77,0x4a,0x23,0x20,0xe8,0xc5,0x85,0x7b,0x9f,0xb6,0x65,0x87,0xb2,0xba,0x68,0xd1,0x8b,0x67,0xf0,0x6f,0x9b,0x0f,0x33,0x1d,0x7c,0xe7,0x70,0x3a,0x7c,0x8e,0xaf,0xb0,0x51,0x6d,0x5f,0x3a,0x52,0xb2,0x78,0x71,0xb6,0x0d,0xd2,0x76,0x60,0xd1,0x1e,0xd5,0xf9,0x34,0x1c,0x07,0x70,0x11,0xe4,0xb3,0x20,0x4a,0x2a,0xf6,0x66,0xe3,0xff,0x3c,0x35,0x82,0xd6,0x7c},\n\t{0xb6,0xfa,0x87,0xd8,0x5b,0xa4,0xe1,0x0b,0x6e,0x3b,0x40,0xba,0x32,0x6a,0x84,0x2a,0x00,0x60,0x6e,0xe9,0x12,0x10,0x92,0xd9,0x43,0x09,0xdc,0x3b,0x86,0xc8,0x38,0x28,0xf3,0xf4,0xac,0x68,0x60,0xcd,0x65,0xa6,0xd3,0xe3,0xd7,0x3c,0x18,0x2d,0xd9,0x42,0xd9,0x25,0x60,0x33,0x9d,0x38,0x59,0x57,0xff,0xd8,0x2c,0x2b,0x3b,0x25,0xf0,0x3e,0x30,0x50,0x46,0x4a,0xcf,0xb0,0x6b,0xd1,0xab,0x77,0xc5,0x15,0x41,0x6b,0x49,0xfa,0x9d,0x41,0xab,0xf4,0x8a,0xae,0xcf,0x82,0x12,0x28,0xa8,0x06,0xa6,0xb8,0xdc,0x21},\n\t{0xc8,0x9f,0x9d,0x8c,0x46,0x04,0x60,0x5c,0xcb,0xa3,0x2a,0xd4,0x6e,0x09,0x40,0x25,0x9c,0x2f,0xee,0x12,0x4c,0x4d,0x5b,0x12,0xab,0x1d,0xa3,0x94,0x81,0xd0,0xc3,0x0b,0xba,0x31,0x77,0xbe,0xfa,0x00,0x8d,0x9a,0x89,0x18,0x9e,0x62,0x7e,0x60,0x03,0x82,0x7f,0xd9,0xf3,0x43,0x37,0x02,0xcc,0xb2,0x8b,0x67,0x6f,0x6c,0xbf,0x0d,0x84,0x5d,0x8b,0xe1,0x9f,0x30,0x0d,0x38,0x6e,0x70,0xc7,0x65,0xe1,0xb9,0xa6,0x2d,0xb0,0x6e,0xab,0x20,0xae,0x7d,0x99,0xba,0xbb,0x57,0xdd,0x96,0xc1,0x2a,0x23,0x76,0x42,0x3a},\n\t{0xfa,0x84,0x70,0x8a,0x2c,0x43,0x42,0x4b,0x45,0xe5,0xb9,0xdf,0xe3,0x19,0x8a,0x89,0x5d,0xe4,0x58,0x9c,0x21,0x00,0x9f,0xbe,0xd1,0xeb,0x6d,0xa1,0xce,0x77,0xf1,0x1f,0xcb,0x7e,0x44,0xdb,0x72,0xc1,0xf8,0x3b,0xbd,0x2d,0x28,0xc6,0x1f,0xc4,0xcf,0x5f,0xfe,0x15,0xaa,0x75,0xc0,0xff,0xac,0x80,0xf9,0xa9,0xe1,0x24,0xe8,0xc9,0x70,0x07,0xfd,0xb5,0xb5,0x45,0x9a,0xd9,0x61,0xcf,0x24,0x79,0x3a,0x1b,0xe9,0x84,0x09,0x86,0x89,0x3e,0x3e,0x30,0x19,0x09,0x30,0xe7,0x1e,0x0b,0x50,0x41,0xfd,0x64,0xf2,0x39},\n\t{0x9c,0xe2,0xe7,0xdb,0x17,0x34,0xad,0xa7,0x9c,0x13,0x9c,0x2b,0x6a,0x37,0x94,0xbd,0xa9,0x7b,0x59,0x93,0x8e,0x1b,0xe9,0xa0,0x40,0x98,0x88,0x68,0x34,0xd7,0x12,0x17,0xe1,0x7b,0x09,0xfe,0xab,0x4a,0x9b,0xd1,0x29,0x19,0xe0,0xdf,0xe1,0xfc,0x6d,0xa4,0xff,0xf1,0xa6,0x2c,0x94,0x08,0xc9,0xc3,0x4e,0xf1,0x35,0x2c,0x27,0x21,0xc6,0x65,0xdd,0x93,0x31,0xce,0xf8,0x89,0x2b,0xe7,0xbb,0xc0,0x25,0xa1,0x56,0x33,0x10,0x4d,0x83,0xfe,0x1c,0x2e,0x3d,0xa9,0x19,0x04,0x72,0xe2,0x9c,0xb1,0x0a,0x80,0xf9,0x22},\n\t{0xcb,0xf8,0x9e,0x3e,0x8a,0x36,0x5a,0x60,0x15,0x47,0x50,0xa5,0x22,0xc0,0xe9,0xe3,0x8f,0x24,0x24,0x5f,0xb0,0x48,0x3d,0x55,0xe5,0x26,0x76,0x64,0xcd,0x16,0xf4,0x13,0xac,0xfd,0x6e,0x9a,0xdd,0x9f,0x02,0x42,0x41,0x49,0xa5,0x34,0xbe,0xce,0x12,0xb9,0x7b,0xf3,0xbd,0x87,0xb9,0x64,0x0f,0x64,0xb4,0xca,0x98,0x85,0xd3,0xa4,0x71,0x41,0x8c,0x4c,0xc9,0x99,0xaa,0x58,0x27,0xfa,0x07,0xb8,0x00,0xb0,0x6f,0x6f,0x00,0x23,0x92,0x53,0xda,0xad,0xdd,0x91,0xd2,0xfb,0xab,0xd1,0x4b,0x57,0xfa,0x14,0x82,0x50},\n\t{0x4b,0xfe,0xd6,0x3e,0x15,0x69,0x02,0xc2,0xc4,0x77,0x1d,0x51,0x39,0x67,0x5a,0xa6,0x94,0xaf,0x14,0x2c,0x46,0x26,0xde,0xcb,0x4b,0xa7,0xab,0x6f,0xec,0x60,0xf9,0x22,0xd6,0x03,0xd0,0x53,0xbb,0x15,0x1a,0x46,0x65,0xc9,0xf3,0xbc,0x88,0x28,0x10,0xb2,0x5a,0x3a,0x68,0x6c,0x75,0x76,0xc5,0x27,0x47,0xb4,0x6c,0xc8,0xa4,0x58,0x77,0x3a,0x76,0x50,0xae,0x93,0xf6,0x11,0x81,0x54,0xa6,0x54,0xfd,0x1d,0xdf,0x21,0xae,0x1d,0x65,0x5e,0x11,0xf3,0x90,0x8c,0x24,0x12,0x94,0xf4,0xe7,0x8d,0x5f,0xd1,0x9f,0x5d},\n\t{0x7f,0x72,0x63,0x6d,0xd3,0x08,0x14,0x03,0x33,0xb5,0xc7,0xd7,0xef,0x9a,0x37,0x6a,0x4b,0xe2,0xae,0xcc,0xc5,0x8f,0xe1,0xa9,0xd3,0xbe,0x8f,0x4f,0x91,0x35,0x2f,0x33,0x1e,0x52,0xd7,0xee,0x2a,0x4d,0x24,0x3f,0x15,0x96,0x2e,0x43,0x28,0x90,0x3a,0x8e,0xd4,0x16,0x9c,0x2e,0x77,0xba,0x64,0xe1,0xd8,0x98,0xeb,0x47,0xfa,0x87,0xc1,0x3b,0x0c,0xc2,0x86,0xea,0x15,0x01,0x47,0x6d,0x25,0xd1,0x46,0x6c,0xcb,0xb7,0x8a,0x99,0x88,0x01,0x66,0x3a,0xb5,0x32,0x78,0xd7,0x03,0xba,0x6f,0x90,0xce,0x81,0x0d,0x45},\n\t{0x75,0x52,0x20,0xa6,0xa1,0xb6,0x7b,0x6e,0x83,0x8e,0x3c,0x41,0xd7,0x21,0x4f,0xaa,0xb2,0x5c,0x8f,0xe8,0x55,0xd1,0x56,0x6f,0xe1,0x5b,0x34,0xa6,0x4b,0x5d,0xe2,0x2d,0x3f,0x74,0xae,0x1c,0x96,0xd8,0x74,0xd0,0xed,0x63,0x1c,0xee,0xf5,0x18,0x6d,0xf8,0x29,0xed,0xf4,0xe7,0x5b,0xc5,0xbd,0x97,0x08,0xb1,0x3a,0x66,0x79,0xd2,0xba,0x4c,0xcd,0x1f,0xd7,0xa0,0x24,0x90,0xd1,0x80,0xf8,0x8a,0x28,0xfb,0x0a,0xc2,0x25,0xc5,0x19,0x64,0x3a,0x5f,0x4b,0x97,0xa3,0xb1,0x33,0x72,0x00,0xe2,0xef,0xbc,0x7f,0x7d},\n\t{0x01,0x28,0x6b,0x26,0x6a,0x1e,0xef,0xfa,0x16,0x9f,0x73,0xd5,0xc4,0x68,0x6c,0x86,0x2c,0x76,0x03,0x1b,0xbc,0x2f,0x8a,0xf6,0x8d,0x5a,0xb7,0x87,0x5e,0x43,0x75,0x59,0x94,0x90,0xc2,0xf3,0xc5,0x5d,0x7c,0xcd,0xab,0x05,0x91,0x2a,0x9a,0xa2,0x81,0xc7,0x58,0x30,0x1c,0x42,0x36,0x1d,0xc6,0x80,0xd7,0xd4,0xd8,0xdc,0x96,0xd1,0x9c,0x4f,0x68,0x37,0x7b,0x6a,0xd8,0x97,0x92,0x19,0x63,0x7a,0xd1,0x1a,0x24,0x58,0xd0,0xd0,0x17,0x0c,0x1c,0x5c,0xad,0x9c,0x02,0xba,0x07,0x03,0x7a,0x38,0x84,0xd0,0xcd,0x7c},\n\t{0x17,0x04,0x26,0x6d,0x2c,0x42,0xa6,0xdc,0xbd,0x40,0x82,0x94,0x50,0x3d,0x15,0xae,0x77,0xc6,0x68,0xfb,0xb4,0xc1,0xc0,0xa9,0x53,0xcf,0xd0,0x61,0xed,0xd0,0x8b,0x42,0x93,0xcc,0x60,0x67,0x18,0x84,0x0c,0x9b,0x99,0x2a,0xb3,0x1a,0x7a,0x00,0xae,0xcd,0x18,0xda,0x0b,0x62,0x86,0xec,0x8d,0xa8,0x44,0xca,0x90,0x81,0x84,0xca,0x93,0x35,0xa7,0x9a,0x84,0x5e,0x9a,0x18,0x13,0x92,0xcd,0xfa,0xd8,0x65,0x35,0xc3,0xd8,0xd4,0xd1,0xbb,0xfd,0x53,0x5b,0x54,0x52,0x8c,0xe6,0x63,0x2d,0xda,0x08,0x83,0x39,0x27},\n\t{0x13,0xd4,0x5e,0x43,0x28,0x8d,0xc3,0x42,0xc9,0xcc,0x78,0x32,0x60,0xf3,0x50,0xbd,0xef,0x03,0xda,0x79,0x1a,0xab,0x07,0xbb,0x55,0x33,0x8c,0xbe,0xae,0x97,0x95,0x26,0x53,0x24,0x70,0x0a,0x4c,0x0e,0xa1,0xb9,0xde,0x1b,0x7d,0xd5,0x66,0x58,0xa2,0x0f,0xf7,0xda,0x27,0xcd,0xb5,0xd9,0xb9,0xff,0xfd,0x33,0x2c,0x49,0x45,0x29,0x2c,0x57,0xbe,0x30,0xcd,0xd6,0x45,0xc7,0x7f,0xc7,0xfb,0xae,0xba,0xe3,0xd3,0xe8,0xdf,0xe4,0x0c,0xda,0x5d,0xaa,0x30,0x88,0x2c,0xa2,0x80,0xca,0x5b,0xc0,0x98,0x54,0x98,0x7f},\n\t{0x17,0xe1,0x0b,0x9f,0x88,0xce,0x49,0x38,0x88,0xa2,0x54,0x7b,0x1b,0xad,0x05,0x80,0x1c,0x92,0xfc,0x23,0x9f,0xc3,0xa3,0x3d,0x04,0xf3,0x31,0x0a,0x47,0xec,0xc2,0x76,0x63,0x63,0xbf,0x0f,0x52,0x15,0x56,0xd3,0xa6,0xfb,0x4d,0xcf,0x45,0x5a,0x04,0x08,0xc2,0xa0,0x3f,0x87,0xbc,0x4f,0xc2,0xee,0xe7,0x12,0x9b,0xd6,0x3c,0x65,0xf2,0x30,0x85,0x0c,0xc1,0xaa,0x38,0xc9,0x08,0x8a,0xcb,0x6b,0x27,0xdb,0x60,0x9b,0x17,0x46,0x70,0xac,0x6f,0x0e,0x1e,0xc0,0x20,0xa9,0xda,0x73,0x64,0x59,0xf1,0x73,0x12,0x2f},\n\t{0x11,0x1e,0xe0,0x8a,0x7c,0xfc,0x39,0x47,0x9f,0xab,0x6a,0x4a,0x90,0x74,0x52,0xfd,0x2e,0x8f,0x72,0x87,0x82,0x8a,0xd9,0x41,0xf2,0x69,0x5b,0xd8,0x2a,0x57,0x9e,0x5d,0xc0,0x0b,0xa7,0x55,0xd7,0x8b,0x48,0x30,0xe7,0x42,0xd4,0xf1,0xa4,0xb5,0xd6,0x06,0x62,0x61,0x59,0xbc,0x9e,0xa6,0xd1,0xea,0x84,0xf7,0xc5,0xed,0x97,0x19,0xac,0x38,0x3b,0xb1,0x51,0xa7,0x17,0xb5,0x66,0x06,0x8c,0x85,0x9b,0x7e,0x86,0x06,0x7d,0x74,0x49,0xde,0x4d,0x45,0x11,0xc0,0xac,0xac,0x9c,0xe6,0xe9,0xbf,0x9c,0xcd,0xdf,0x22},\n\t{0xd9,0x0c,0x0d,0xc3,0xe0,0xd2,0xdb,0x8d,0x33,0x43,0xbb,0xac,0x5f,0x66,0x8e,0xad,0x1f,0x96,0x2a,0x32,0x8c,0x25,0x6b,0x8f,0xc7,0xc1,0x48,0x54,0xc0,0x16,0x29,0x6b,0xa1,0xe0,0x3b,0x10,0xb4,0x59,0xec,0x56,0x69,0xf9,0x59,0xd2,0xec,0xba,0xe3,0x2e,0x32,0xcd,0xf5,0x13,0x94,0xb2,0x7c,0x79,0x72,0xe4,0xcd,0x24,0x78,0x87,0xe9,0x0f,0x3b,0x91,0xba,0x0a,0xd1,0x34,0xdb,0x7e,0x0e,0xac,0x6d,0x2e,0x82,0xcd,0xa3,0x4e,0x15,0xf8,0x78,0x65,0xff,0x3d,0x08,0x66,0x17,0x0a,0xf0,0x7f,0x30,0x3f,0x30,0x4c},\n\t{0x85,0x8c,0xb2,0x17,0xd6,0x3b,0x0a,0xd3,0xea,0x3b,0x77,0x39,0xb7,0x77,0xd3,0xc5,0xbf,0x5c,0x6a,0x1e,0x8c,0xe7,0xc6,0xc6,0xc4,0xb7,0x2a,0x8b,0xf7,0xb8,0x61,0x0d,0x00,0x45,0xd9,0x0d,0x58,0x03,0xfc,0x29,0x93,0xec,0xbb,0x6f,0xa4,0x7a,0xd2,0xec,0xf8,0xa7,0xe2,0xc2,0x5f,0x15,0x0a,0x13,0xd5,0xa1,0x06,0xb7,0x1a,0x15,0x6b,0x41,0xb0,0x36,0xc1,0xe9,0xef,0xd7,0xa8,0x56,0x20,0x4b,0xe4,0x58,0xcd,0xe5,0x07,0xbd,0xab,0xe0,0x57,0x1b,0xda,0x2f,0xe6,0xaf,0xd2,0xe8,0x77,0x42,0xf7,0x2a,0x1a,0x19},\n\t{0x31,0x14,0x3c,0xc5,0x4b,0xf7,0x16,0xce,0xde,0xed,0x72,0x20,0xce,0x25,0x97,0x2b,0xe7,0x3e,0xb2,0xb5,0x6f,0xc3,0xb9,0xb8,0x08,0xc9,0x5c,0x0b,0x45,0x0e,0x2e,0x7e,0xfb,0x0e,0x46,0x4f,0x43,0x2b,0xe6,0x9f,0xd6,0x07,0x36,0xa6,0xd4,0x03,0xd3,0xde,0x24,0xda,0xa0,0xb7,0x0e,0x21,0x52,0xf0,0x93,0x5b,0x54,0x00,0xbe,0x7d,0x7e,0x23,0x30,0xb4,0x01,0x67,0xed,0x75,0x35,0x01,0x10,0xfd,0x0b,0x9f,0xe6,0x94,0x10,0x23,0x22,0x7f,0xe4,0x83,0x15,0x0f,0x32,0x75,0xe3,0x55,0x11,0xb1,0x99,0xa6,0xaf,0x71},\n\t{0x1d,0xb6,0x53,0x39,0x9b,0x6f,0xce,0x65,0xe6,0x41,0xa1,0xaf,0xea,0x39,0x58,0xc6,0xfe,0x59,0xf7,0xa9,0xfd,0x5f,0x43,0x0f,0x8e,0xc2,0xb1,0xc2,0xe9,0x42,0x11,0x02,0xd6,0x50,0x3b,0x47,0x1c,0x3c,0x42,0xea,0x10,0xef,0x38,0x3b,0x1f,0x7a,0xe8,0x51,0x95,0xbe,0xc9,0xb2,0x5f,0xbf,0x84,0x9b,0x1c,0x9a,0xf8,0x78,0xbc,0x1f,0x73,0x00,0x80,0x18,0xf8,0x48,0x18,0xc7,0x30,0xe4,0x19,0xc1,0xce,0x5e,0x22,0x0c,0x96,0xbf,0xe3,0x15,0xba,0x6b,0x83,0xe0,0xda,0xb6,0x08,0x58,0xe1,0x47,0x33,0x6f,0x4d,0x4c},\n\t{0xc9,0x1f,0x7d,0xc1,0xcf,0xec,0xf7,0x18,0x14,0x3c,0x40,0x51,0xa6,0xf5,0x75,0x6c,0xdf,0x0c,0xee,0xf7,0x2b,0x71,0xde,0xdb,0x22,0x7a,0xe4,0xa7,0xaa,0xdd,0x3f,0x19,0x70,0x19,0x8f,0x98,0xfc,0xdd,0x0c,0x2f,0x1b,0xf5,0xb9,0xb0,0x27,0x62,0x91,0x6b,0xbe,0x76,0x91,0x77,0xc4,0xb6,0xc7,0x6e,0xa8,0x9f,0x8f,0xa8,0x00,0x95,0xbf,0x38,0x6f,0x87,0xe8,0x37,0x3c,0xc9,0xd2,0x1f,0x2c,0x46,0xd1,0x18,0x5a,0x1e,0xf6,0xa2,0x76,0x12,0x24,0x39,0x82,0xf5,0x80,0x50,0x69,0x49,0x0d,0xbf,0x9e,0xb9,0x6f,0x6a},\n\t{0xeb,0x55,0x08,0x56,0xbb,0xc1,0x46,0x6a,0x9d,0xf0,0x93,0xf8,0x38,0xbb,0x16,0x24,0xc1,0xac,0x71,0x8f,0x37,0x11,0x1d,0xd7,0xea,0x96,0x18,0xa3,0x14,0x69,0xf7,0x75,0xc6,0x23,0xe4,0xb6,0xb5,0x22,0xb1,0xee,0x8e,0xff,0x86,0xf2,0x10,0x70,0x9d,0x93,0x8c,0x5d,0xcf,0x1d,0x83,0x2a,0xa9,0x90,0x10,0xeb,0xc5,0x42,0x9f,0xda,0x6f,0x13,0xd1,0xbd,0x05,0xa3,0xb1,0xdf,0x4c,0xf9,0x08,0x2c,0xf8,0x9f,0x9d,0x4b,0x36,0x0f,0x8a,0x58,0xbb,0xc3,0xa5,0xd8,0x87,0x2a,0xba,0xdc,0xe8,0x0b,0x51,0x83,0x21,0x02},\n\t{0x14,0x2d,0xad,0x5e,0x38,0x66,0xf7,0x4a,0x30,0x58,0x7c,0xca,0x80,0xd8,0x8e,0xa0,0x3d,0x1e,0x21,0x10,0xe6,0xa6,0x13,0x0d,0x03,0x6c,0x80,0x7b,0xe1,0x1c,0x07,0x6a,0x7f,0x7a,0x30,0x43,0x01,0x71,0x5a,0x9d,0x5f,0xa4,0x7d,0xc4,0x9e,0xde,0x63,0xb0,0xd3,0x7a,0x92,0xbe,0x52,0xfe,0xbb,0x22,0x6c,0x42,0x40,0xfd,0x41,0xc4,0x87,0x13,0xf8,0x8a,0x97,0x87,0xd1,0xc3,0xd3,0xb5,0x13,0x44,0x0e,0x7f,0x3d,0x5a,0x2b,0x72,0xa0,0x7c,0x47,0xbb,0x48,0x48,0x7b,0x0d,0x92,0xdc,0x1e,0xaf,0x6a,0xb2,0x71,0x31},\n\t{0xa8,0x4c,0x56,0x97,0x90,0x31,0x2f,0xa9,0x19,0xe1,0x75,0x22,0x4c,0xb8,0x7b,0xff,0x50,0x51,0x87,0xa4,0x37,0xfe,0x55,0x4f,0x5a,0x83,0xf0,0x3c,0x87,0xd4,0x1f,0x22,0xd1,0x47,0x8a,0xb2,0xd8,0xb7,0x0d,0xa6,0xf1,0xa4,0x70,0x17,0xd6,0x14,0xbf,0xa6,0x58,0xbd,0xdd,0x53,0x93,0xf8,0xa1,0xd4,0xe9,0x43,0x42,0x34,0x63,0x4a,0x51,0x6c,0x41,0x63,0x15,0x3a,0x4f,0x20,0x22,0x23,0x2d,0x03,0x0a,0xba,0xe9,0xe0,0x73,0xfb,0x0e,0x03,0x0f,0x41,0x4c,0xdd,0xe0,0xfc,0xaa,0x4a,0x92,0xfb,0x96,0xa5,0xda,0x48},\n\t{0xc7,0x9c,0xa5,0x5c,0x66,0x8e,0xca,0x6e,0xa0,0xac,0x38,0x2e,0x4b,0x25,0x47,0xa8,0xce,0x17,0x1e,0xd2,0x08,0xc7,0xaf,0x31,0xf7,0x4a,0xd8,0xca,0xfc,0xd6,0x6d,0x67,0x93,0x97,0x4c,0xc8,0x5d,0x1d,0xf6,0x14,0x06,0x82,0x41,0xef,0xe3,0xf9,0x41,0x99,0xac,0x77,0x62,0x34,0x8f,0xb8,0xf5,0xcd,0xa9,0x79,0x8a,0x0e,0xfa,0x37,0xc8,0x58,0x58,0x90,0xfc,0x96,0x85,0x68,0xf9,0x0c,0x1b,0xa0,0x56,0x7b,0xf3,0xbb,0xdc,0x1d,0x6a,0xd6,0x35,0x49,0x7d,0xe7,0xc2,0xdc,0x0a,0x7f,0xa5,0xc6,0xf2,0x73,0x4f,0x1c},\n\t{0xbb,0xa0,0x5f,0x30,0xbd,0x4f,0x7a,0x0e,0xad,0x63,0xc6,0x54,0xe0,0x4c,0x9d,0x82,0x48,0x38,0xe3,0x2f,0x83,0xc3,0x21,0xf4,0x42,0x4c,0xf6,0x1b,0x0d,0xc8,0x5a,0x79,0x84,0x34,0x7c,0xfc,0x6e,0x70,0x6e,0xb3,0x61,0xcf,0xc1,0xc3,0xb4,0xc9,0xdf,0x73,0xe5,0xc7,0x1c,0x78,0xc9,0x79,0x1d,0xeb,0x5c,0x67,0xaf,0x7d,0xdb,0x9a,0x45,0x70,0xb3,0x2b,0xb4,0x91,0x49,0xdb,0x91,0x1b,0xca,0xdc,0x02,0x4b,0x23,0x96,0x26,0x57,0xdc,0x78,0x8c,0x1f,0xe5,0x9e,0xdf,0x9f,0xd3,0x1f,0xe2,0x8c,0x84,0x62,0xe1,0x5f},\n\t{0x1a,0x96,0x94,0xe1,0x4f,0x21,0x59,0x4e,0x4f,0xcd,0x71,0x0d,0xc7,0x7d,0xbe,0x49,0x2d,0xf2,0x50,0x3b,0xd2,0xcf,0x00,0x93,0x32,0x72,0x91,0xfc,0x46,0xd4,0x89,0x47,0x08,0xb2,0x7c,0x5d,0x2d,0x85,0x79,0x28,0xe7,0xf2,0x7d,0x68,0x70,0xdd,0xde,0xb8,0x91,0x78,0x68,0x21,0xab,0xff,0x0b,0xdc,0x35,0xaa,0x7d,0x67,0x43,0xc0,0x44,0x2b,0x8e,0xb7,0x4e,0x07,0xab,0x87,0x1c,0x1a,0x67,0xf4,0xda,0x99,0x8e,0xd1,0xc6,0xfa,0x67,0x90,0x4f,0x48,0xcd,0xbb,0xac,0x3e,0xe4,0xa4,0xb9,0x2b,0xef,0x2e,0xc5,0x60},\n\t{0xf1,0x8b,0xfd,0x3b,0xbc,0x89,0x5d,0x0b,0x1a,0x55,0xf3,0xc9,0x37,0x92,0x6b,0xb0,0xf5,0x28,0x30,0xd5,0xb0,0x16,0x4c,0x0e,0xab,0xca,0xcf,0x2c,0x31,0x9c,0xbc,0x10,0x11,0x6d,0xae,0x7c,0xc2,0xc5,0x2b,0x70,0xab,0x8c,0xa4,0x54,0x9b,0x69,0xc7,0x44,0xb2,0x2e,0x49,0xba,0x56,0x40,0xbc,0xef,0x6d,0x67,0xb6,0xd9,0x48,0x72,0xd7,0x70,0x5b,0xa0,0xc2,0x3e,0x4b,0xe8,0x8a,0xaa,0xe0,0x81,0x17,0xed,0xf4,0x9e,0x69,0x98,0xd1,0x85,0x8e,0x70,0xe4,0x13,0x45,0x79,0x13,0xf4,0x76,0xa9,0xd3,0x5b,0x75,0x63},\n\t{0x53,0x08,0xd1,0x2a,0x3e,0xa0,0x5f,0xb5,0x69,0x35,0xe6,0x9e,0x90,0x75,0x6f,0x35,0x90,0xb8,0x69,0xbe,0xfd,0xf1,0xf9,0x9f,0x84,0x6f,0xc1,0x8b,0xc4,0xc1,0x8c,0x0d,0xb7,0xac,0xf1,0x97,0x18,0x10,0xc7,0x3d,0xd8,0xbb,0x65,0xc1,0x5e,0x7d,0xda,0x5d,0x0f,0x02,0xa1,0x0f,0x9c,0x5b,0x8e,0x50,0x56,0x2a,0xc5,0x37,0x17,0x75,0x63,0x27,0xa9,0x19,0xb4,0x6e,0xd3,0x02,0x94,0x02,0xa5,0x60,0xb4,0x77,0x7e,0x4e,0xb4,0xf0,0x56,0x49,0x3c,0xd4,0x30,0x62,0xa8,0xcf,0xe7,0x66,0xd1,0x7a,0x8a,0xdd,0xc2,0x70},\n\t{0x0e,0xec,0x6f,0x9f,0x50,0x94,0x61,0x65,0x8d,0x51,0xc6,0x46,0xa9,0x7e,0x2e,0xee,0x5c,0x9b,0xe0,0x67,0xf3,0xc1,0x33,0x97,0x95,0x84,0x94,0x63,0x63,0xac,0x0f,0x2e,0x13,0x7e,0xed,0xb8,0x7d,0x96,0xd4,0x91,0x7a,0x81,0x76,0xd7,0x0a,0x2f,0x25,0x74,0x64,0x25,0x85,0x0d,0xe0,0x82,0x09,0xe4,0xe5,0x3c,0xa5,0x16,0x38,0x61,0xb8,0x32,0x64,0xcd,0x48,0xe4,0xbe,0xf7,0xe7,0x79,0xd0,0x86,0x78,0x08,0x67,0x3a,0xc8,0x6a,0x2e,0xdb,0xe4,0xa0,0xd9,0xd4,0x9f,0xf8,0x41,0x4f,0x5a,0x73,0x5c,0x21,0x79,0x41},\n\t{0x2a,0xed,0xdc,0xd7,0xe7,0x94,0x70,0x8c,0x70,0x9c,0xd3,0x47,0xc3,0x8a,0xfb,0x97,0x02,0xd9,0x06,0xa9,0x33,0xe0,0x3b,0xe1,0x76,0x9d,0xd9,0x0c,0xa3,0x44,0x03,0x70,0x34,0xcd,0x6b,0x28,0xb9,0x33,0xae,0xe4,0xdc,0xd6,0x9d,0x55,0xb6,0x7e,0xef,0xb7,0x1f,0x8e,0xd3,0xb3,0x1f,0x14,0x8b,0x27,0x86,0xc2,0x41,0x22,0x66,0x85,0xfa,0x31,0xf4,0x22,0x36,0x2e,0x42,0x6c,0x82,0xaf,0x2d,0x50,0x33,0x98,0x87,0x29,0x20,0xc1,0x23,0x91,0x38,0x2b,0xe1,0xb7,0xc1,0x9b,0x89,0x24,0x95,0xa9,0x12,0x23,0xbb,0x24},\n\t{0xc3,0x67,0xde,0x32,0x17,0xed,0xa8,0xb1,0x48,0x49,0x1b,0x46,0x18,0x94,0xb4,0x3c,0xd2,0xbc,0xcf,0x76,0x43,0x43,0xbd,0x8e,0x08,0x80,0x18,0x1e,0x87,0x3e,0xee,0x0f,0x6b,0x5c,0xf8,0xf5,0x2a,0x0c,0xf8,0x41,0x94,0x67,0xfa,0x04,0xc3,0x84,0x72,0x68,0xad,0x1b,0xba,0xa3,0x99,0xdf,0x45,0x89,0x16,0x5d,0xeb,0xff,0xf9,0x2a,0x1d,0x0d,0xdf,0x1e,0x62,0x32,0xa1,0x8a,0xda,0xa9,0x79,0x65,0x22,0x59,0xa1,0x22,0xb8,0x30,0x93,0xc1,0x9a,0xa7,0x7b,0x19,0x04,0x40,0x76,0x1d,0x53,0x18,0x97,0xd7,0xac,0x16},\n\t{0x3d,0x1d,0x9b,0x2d,0xaf,0x72,0xdf,0x72,0x5a,0x24,0x32,0xa4,0x36,0x2a,0x46,0x63,0x37,0x96,0xb3,0x16,0x79,0xa0,0xce,0x3e,0x09,0x23,0x30,0xb9,0xf6,0x0e,0x3e,0x12,0xad,0xb6,0x87,0x78,0xc5,0xc6,0x59,0xc9,0xba,0xfe,0x90,0x5f,0xad,0x9e,0xe1,0x94,0x04,0xf5,0x42,0xa3,0x62,0x4e,0xe2,0x16,0x00,0x17,0x16,0x18,0x4b,0xd3,0x4e,0x16,0x9a,0xe6,0x2f,0x19,0x4c,0xd9,0x7e,0x48,0x13,0x15,0x91,0x3a,0xea,0x2c,0xae,0x61,0x27,0xde,0xa4,0xb9,0xd3,0xf6,0x7b,0x87,0xeb,0xf3,0x73,0x10,0xc6,0x0f,0xda,0x78},\n\t{0x6a,0xc6,0x2b,0xe5,0x28,0x5d,0xf1,0x5b,0x8e,0x1a,0xf0,0x70,0x18,0xe3,0x47,0x2c,0xdd,0x8b,0xc2,0x06,0xbc,0xaf,0x19,0x24,0x3a,0x17,0x6b,0x25,0xeb,0xde,0x25,0x2d,0x94,0x3a,0x0c,0x68,0xf1,0x80,0x9f,0xa2,0xe6,0xe7,0xe9,0x1a,0x15,0x7e,0xf7,0x71,0x73,0x79,0x01,0x48,0x58,0xf1,0x00,0x11,0xdd,0x8d,0xb3,0x16,0xb3,0xa4,0x4a,0x05,0xb8,0x7c,0x26,0x19,0x8d,0x46,0xc8,0xdf,0xaf,0x4d,0xe5,0x66,0x9c,0x78,0x28,0x0b,0x17,0xec,0x6e,0x66,0x2a,0x1d,0xeb,0x2a,0x60,0xa7,0x7d,0xab,0xa6,0x10,0x46,0x13},\n\t{0xfe,0xb0,0xf6,0x8d,0xc7,0x8e,0x13,0x51,0x1b,0xf5,0x75,0xe5,0x89,0xda,0x97,0x53,0xb9,0xf1,0x7a,0x71,0x1d,0x7a,0x20,0x09,0x50,0xd6,0x20,0x2b,0xba,0xfd,0x02,0x21,0x15,0xf5,0xd1,0x77,0xe7,0x65,0x2a,0xcd,0xf1,0x60,0xaa,0x8f,0x87,0x91,0x89,0x54,0xe5,0x06,0xbc,0xda,0xbc,0x3b,0xb7,0xb1,0xfb,0xc9,0x7c,0xa9,0xcb,0x78,0x48,0x65,0xa1,0xe6,0x5c,0x05,0x05,0xe4,0x9e,0x96,0x29,0xad,0x51,0x12,0x68,0xa7,0xbc,0x36,0x15,0xa4,0x7d,0xaa,0x17,0xf5,0x1a,0x3a,0xba,0xb2,0xec,0x29,0xdb,0x25,0xd7,0x0a},\n\t{0x57,0x24,0x4e,0x83,0xb1,0x67,0x42,0xdc,0xc5,0x1b,0xce,0x70,0xb5,0x44,0x75,0xb6,0xd7,0x5e,0xd1,0xf7,0x0b,0x7a,0xf0,0x1a,0x50,0x36,0xa0,0x71,0xfb,0xcf,0xef,0x4a,0x85,0x6f,0x05,0x9b,0x0c,0xbc,0xc7,0xfe,0xd7,0xff,0xf5,0xe7,0x68,0x52,0x7d,0x53,0xfa,0xae,0x12,0x43,0x62,0xc6,0xaf,0x77,0xd9,0x9f,0x39,0x02,0x53,0x5f,0x67,0x4f,0x1e,0x17,0x15,0x04,0x36,0x36,0x2d,0xc3,0x3b,0x48,0x98,0x89,0x11,0xef,0x2b,0xcd,0x10,0x51,0x94,0xd0,0xad,0x6e,0x0a,0x87,0x61,0x65,0xa8,0xa2,0x72,0xbb,0xcc,0x0b},\n\t{0xc8,0xa9,0xb1,0xea,0x2f,0x96,0x5e,0x18,0xcd,0x7d,0x14,0x65,0x35,0xe6,0xe7,0x86,0xf2,0x6d,0x5b,0xbb,0x31,0xe0,0x92,0xb0,0x3e,0xb7,0xd6,0x59,0xab,0xf0,0x24,0x40,0x96,0x12,0xfe,0x50,0x4c,0x5e,0x6d,0x18,0x7e,0x9f,0xe8,0xfe,0x82,0x7b,0x39,0xe0,0xb0,0x31,0x70,0x50,0xc5,0xf6,0xc7,0x3b,0xc2,0x37,0x8f,0x10,0x69,0xfd,0x78,0x66,0xc2,0x63,0x68,0x63,0x31,0xfa,0x86,0x15,0xf2,0x33,0x2d,0x57,0x48,0x8c,0xf6,0x07,0xfc,0xae,0x9e,0x78,0x9f,0xcc,0x73,0x4f,0x01,0x47,0xad,0x8e,0x10,0xe2,0x42,0x2d},\n\t{0x9b,0xd2,0xdf,0x94,0x15,0x13,0xf5,0x97,0x6a,0x4c,0x3f,0x31,0x5d,0x98,0x55,0x61,0x10,0x50,0x45,0x08,0x07,0x3f,0xa1,0xeb,0x22,0xd3,0xd2,0xb8,0x08,0x26,0x6b,0x67,0x93,0x75,0x53,0x0f,0x0d,0x7b,0x71,0x21,0x4c,0x06,0x1e,0x13,0x0b,0x69,0x4e,0x91,0x9f,0xe0,0x2a,0x75,0xae,0x87,0xb6,0x1b,0x6e,0x3c,0x42,0x9b,0xa7,0xf3,0x0b,0x42,0x47,0x2b,0x5b,0x1c,0x65,0xba,0x38,0x81,0x80,0x1b,0x1b,0x31,0xec,0xb6,0x71,0x86,0xb0,0x35,0x31,0xbc,0xb1,0x0c,0xff,0x7b,0xe0,0xf1,0x0c,0x9c,0xfa,0x2f,0x5d,0x74},\n\t{0xbd,0xc8,0xc9,0x2b,0x1e,0x5a,0x52,0xbf,0x81,0x9d,0x47,0x26,0x08,0x26,0x5b,0xea,0xdb,0x55,0x01,0xdf,0x0e,0xc7,0x11,0xd5,0xd0,0xf5,0x0c,0x96,0xeb,0x3c,0xe2,0x1a,0x6a,0x4e,0xd3,0x21,0x57,0xdf,0x36,0x60,0xd0,0xb3,0x7b,0x99,0x27,0x88,0xdb,0xb1,0xfa,0x6a,0x75,0xc8,0xc3,0x09,0xc2,0xd3,0x39,0xc8,0x1d,0x4c,0xe5,0x5b,0xe1,0x06,0x4a,0x99,0x32,0x19,0x87,0x5d,0x72,0x5b,0xb0,0xda,0xb1,0xce,0xb5,0x1c,0x35,0x32,0x05,0xca,0xb7,0xda,0x49,0x15,0xc4,0x7d,0xf7,0xc1,0x8e,0x27,0x61,0xd8,0xde,0x58},\n\t{0x5c,0xc5,0x66,0xf2,0x93,0x37,0x17,0xd8,0x49,0x4e,0x45,0xcc,0xc5,0x76,0xc9,0xc8,0xa8,0xc3,0x26,0xbc,0xf8,0x82,0xe3,0x5c,0xf9,0xf6,0x85,0x54,0xe8,0x9d,0xf3,0x2f,0xa8,0xc9,0xc2,0xb6,0xa8,0x5b,0xfb,0x2d,0x8c,0x59,0x2c,0xf5,0x8e,0xef,0xee,0x48,0x73,0x15,0x2d,0xf1,0x07,0x91,0x80,0x33,0xd8,0x5b,0x1d,0x53,0x6b,0x69,0xba,0x08,0x7a,0xc5,0xef,0xc3,0xee,0x3e,0xed,0x77,0x11,0x48,0xff,0xd4,0x17,0x55,0xe0,0x04,0xcb,0x71,0xa6,0xf1,0x3f,0x7a,0x3d,0xea,0x54,0xfe,0x7c,0x94,0xb4,0x33,0x06,0x12},\n\t{0x42,0x00,0x61,0x91,0x78,0x98,0x94,0x0b,0xe8,0xfa,0xeb,0xec,0x3c,0xb1,0xe7,0x4e,0xc0,0xa4,0xf0,0x94,0x95,0x73,0xbe,0x70,0x85,0x91,0xd5,0xb4,0x99,0x0a,0xd3,0x35,0x0a,0x10,0x12,0x49,0x47,0x31,0xbd,0x82,0x06,0xbe,0x6f,0x7e,0x6d,0x7b,0x23,0xde,0xc6,0x79,0xea,0x11,0x19,0x76,0x1e,0xe1,0xde,0x3b,0x39,0xcb,0xe3,0x3b,0x43,0x07,0xf4,0x97,0xe9,0x5c,0xc0,0x44,0x79,0xff,0xa3,0x51,0x5c,0xb0,0xe4,0x3d,0x5d,0x57,0x7c,0x84,0x76,0x5a,0xfd,0x81,0x33,0x58,0x9f,0xda,0xf6,0x7a,0xde,0x3e,0x87,0x2d},\n\t{0x09,0x34,0x37,0x43,0x64,0x31,0x7a,0x15,0xd9,0x81,0xaa,0xf4,0xee,0xb7,0xb8,0xfa,0x06,0x48,0xa6,0xf5,0xe6,0xfe,0x93,0xb0,0xb6,0xa7,0x7f,0x70,0x54,0x36,0x77,0x2e,0x81,0xf9,0x5d,0x4e,0xe1,0x02,0x62,0xaa,0xf5,0xe1,0x15,0x50,0x17,0x59,0x0d,0xa2,0x6c,0x1d,0xe2,0xba,0xd3,0x75,0xa2,0x18,0x53,0x02,0x60,0x01,0x8a,0x61,0x43,0x05,0xc1,0x23,0x4c,0x97,0xf4,0xbd,0xea,0x0d,0x93,0x46,0xce,0x9d,0x25,0x0a,0x6f,0xaa,0x2c,0xba,0x9a,0xa2,0xb8,0x2c,0x20,0x04,0x0d,0x96,0x07,0x2d,0x36,0x43,0x14,0x4b},\n\t{0x7a,0x1f,0x6e,0xb6,0xc7,0xb7,0xc4,0xcc,0x7e,0x2f,0x0c,0xf5,0x25,0x7e,0x15,0x44,0x1c,0xaf,0x3e,0x71,0xfc,0x6d,0xf0,0x3e,0xf7,0x63,0xda,0x52,0x67,0x44,0x2f,0x58,0xcb,0x9c,0x52,0x1c,0xe9,0x54,0x7c,0x96,0xfb,0x35,0xc6,0x64,0x92,0x26,0xf6,0x30,0x65,0x19,0x12,0x78,0xf4,0xaf,0x47,0x27,0x5c,0x6f,0xf6,0xea,0x18,0x84,0x03,0x17,0xe4,0x4c,0x32,0x20,0xd3,0x7b,0x31,0xc6,0xc4,0x8b,0x48,0xa4,0xe8,0x42,0x10,0xa8,0x64,0x13,0x5a,0x4e,0x8b,0xf1,0x1e,0xb2,0xc9,0x8d,0xa2,0xcd,0x4b,0x1c,0x2a,0x0c},\n\t{0x47,0x04,0x1f,0x6f,0xd0,0xc7,0x4d,0xd2,0x59,0xc0,0x87,0xdb,0x3e,0x9e,0x26,0xb2,0x8f,0xd2,0xb2,0xfb,0x72,0x02,0x5b,0xd1,0x77,0x48,0xf6,0xc6,0xd1,0x8b,0x55,0x7c,0x45,0x69,0xbd,0x69,0x48,0x81,0xc4,0xed,0x22,0x8d,0x1c,0xbe,0x7d,0x90,0x6d,0x0d,0xab,0xc5,0x5c,0xd5,0x12,0xd2,0x3b,0xc6,0x83,0xdc,0x14,0xa3,0x30,0x9b,0x6a,0x5a,0x3d,0x46,0x96,0xd3,0x24,0x15,0xec,0xd0,0xf0,0x24,0x5a,0xc3,0x8a,0x62,0xbb,0x12,0xa4,0x5f,0xbc,0x1c,0x79,0x3a,0x0c,0xa5,0xc3,0xaf,0xfb,0x0a,0xca,0xa5,0x04,0x04},\n\t{0xd6,0x43,0xa7,0x0a,0x07,0x40,0x1f,0x8c,0xe8,0x5e,0x26,0x5b,0xcb,0xd0,0xba,0xcc,0xde,0xd2,0x8f,0x66,0x6b,0x04,0x4b,0x57,0x33,0x96,0xdd,0xca,0xfd,0x5b,0x39,0x46,0xd1,0x6f,0x41,0x2a,0x1b,0x9e,0xbc,0x62,0x8b,0x59,0x50,0xe3,0x28,0xf7,0xc6,0xb5,0x67,0x69,0x5d,0x3d,0xd8,0x3f,0x34,0x04,0x98,0xee,0xf8,0xe7,0x16,0x75,0x52,0x39,0x9c,0x9a,0x5d,0x1a,0x2d,0xdb,0x7f,0x11,0x2a,0x5c,0x00,0xd1,0xbc,0x45,0x77,0x9c,0xea,0x6f,0xd5,0x54,0xf1,0xbe,0xd4,0xef,0x16,0xd0,0x22,0xe8,0x29,0x9a,0x57,0x76},\n\t{0x17,0x2a,0xc0,0x49,0x7e,0x8e,0xb6,0x45,0x7f,0xa3,0xa9,0xbc,0xa2,0x51,0xcd,0x23,0x1b,0x4c,0x22,0xec,0x11,0x5f,0xd6,0x3e,0xb1,0xbd,0x05,0x9e,0xdc,0x84,0xa3,0x43,0xf2,0x34,0xb4,0x52,0x13,0xb5,0x3c,0x33,0xe1,0x80,0xde,0x93,0x49,0x28,0x32,0xd8,0xce,0x35,0x0d,0x75,0x87,0x28,0x51,0xb5,0xc1,0x77,0x27,0x2a,0xbb,0x14,0xc5,0x02,0x45,0xb6,0xf1,0x8b,0xda,0xd5,0x4b,0x68,0x53,0x4b,0xb5,0xf6,0x7e,0xd3,0x8b,0xfb,0x53,0xd2,0xb0,0xa9,0xd7,0x16,0x39,0x31,0x59,0x80,0x54,0x61,0x09,0x92,0x60,0x11},\n\t{0xaa,0xcf,0xda,0x29,0x69,0x16,0x4d,0xb4,0x8f,0x59,0x13,0x84,0x4c,0x9f,0x52,0xda,0x59,0x55,0x3d,0x45,0xca,0x63,0xef,0xe9,0x0b,0x8e,0x69,0xc5,0x5b,0x12,0x1e,0x35,0xcd,0x4d,0x9b,0x36,0x16,0x56,0x38,0x7a,0x63,0x35,0x5c,0x65,0xa7,0x2c,0xc0,0x75,0x21,0x80,0xf1,0xd4,0xf9,0x1b,0xc2,0x7d,0x42,0xe0,0xe6,0x91,0x74,0x7d,0x63,0x2f,0xbe,0x7b,0xf6,0x1a,0x46,0x9b,0xb4,0xd4,0x61,0x89,0xab,0xc8,0x7a,0x03,0x03,0xd6,0xfb,0x99,0xa6,0xf9,0x9f,0xe1,0xde,0x71,0x9a,0x2a,0xce,0xe7,0x06,0x2d,0x18,0x7f},\n\t{0xec,0x68,0x01,0xab,0x64,0x8e,0x7c,0x7a,0x43,0xc5,0xed,0x15,0x55,0x4a,0x5a,0xcb,0xda,0x0e,0xcd,0x47,0xd3,0x19,0x55,0x09,0xb0,0x93,0x3e,0x34,0x8c,0xac,0xd4,0x67,0x22,0x75,0x21,0x8e,0x72,0x4b,0x45,0x09,0xd8,0xb8,0x84,0xd4,0xf4,0xe8,0x58,0xaa,0x3c,0x90,0x46,0x7f,0x4d,0x25,0x58,0xd3,0x17,0x52,0x1c,0x24,0x43,0xc0,0xac,0x44,0x77,0x57,0x7a,0x4f,0xbb,0x6b,0x7d,0x1c,0xe1,0x13,0x83,0x91,0xd4,0xfe,0x35,0x8b,0x84,0x46,0x6b,0xc9,0xc6,0xa1,0xdc,0x4a,0xbd,0x71,0xad,0x12,0x83,0x1c,0x6d,0x55},\n\t{0x82,0x39,0x8d,0x0c,0xe3,0x40,0xef,0x17,0x34,0xfa,0xa3,0x15,0x3e,0x07,0xf7,0x31,0x6e,0x64,0x73,0x07,0xcb,0xf3,0x21,0x4f,0xff,0x4e,0x82,0x1d,0x6d,0x6c,0x6c,0x74,0x21,0xe8,0x1b,0xb1,0x56,0x67,0xf0,0x81,0xdd,0xf3,0xa3,0x10,0x23,0xf8,0xaf,0x0f,0x5d,0x46,0x99,0x6a,0x55,0xd0,0xb2,0xf8,0x05,0x7f,0x8c,0xcc,0x38,0xbe,0x7a,0x09,0xa4,0x2d,0xa5,0x7e,0x87,0xc9,0x49,0x0c,0x43,0x1d,0xdc,0x9b,0x55,0x69,0x43,0x4c,0xd2,0xeb,0xcc,0xf7,0x09,0x38,0x2c,0x02,0xbd,0x84,0xee,0x4b,0xa3,0x14,0x7e,0x57},\n\t{0x0a,0x3b,0xa7,0x61,0xac,0x68,0xe2,0xf0,0xf5,0xa5,0x91,0x37,0x10,0xfa,0xfa,0xf2,0xe9,0x00,0x6d,0x6b,0x82,0x3e,0xe1,0xc1,0x42,0x8f,0xd7,0x6f,0xe9,0x7e,0xfa,0x60,0x2b,0xd7,0x4d,0xbd,0xbe,0xce,0xfe,0x94,0x11,0x22,0x0f,0x06,0xda,0x4f,0x6a,0xf4,0xff,0xd1,0xc8,0xc0,0x77,0x59,0x4a,0x12,0x95,0x92,0x00,0xfb,0xb8,0x04,0x53,0x70,0xc6,0x6e,0x29,0x4d,0x35,0x1d,0x3d,0xb6,0xd8,0x31,0xad,0x5f,0x3e,0x05,0xc3,0xf3,0xec,0x42,0xbd,0xb4,0x8c,0x95,0x0b,0x67,0xfd,0x53,0x63,0xa1,0x0c,0x8e,0x39,0x21},\n\t{0xf3,0x33,0x2b,0x38,0x8a,0x05,0xf5,0x89,0xb4,0xc0,0x48,0xad,0x0b,0xba,0xe2,0x5a,0x6e,0xb3,0x3d,0xa5,0x03,0xb5,0x93,0x8f,0xe6,0x32,0xa2,0x95,0x9d,0xed,0xa3,0x5a,0x01,0x56,0xb7,0xb4,0xf9,0xaa,0x98,0x27,0x72,0xad,0x8d,0x5c,0x13,0x72,0xac,0x5e,0x23,0xa0,0xb7,0x61,0x61,0xaa,0xce,0xd2,0x4e,0x7d,0x8f,0xe9,0x84,0xb2,0xbf,0x1b,0x61,0x65,0xd9,0xc7,0xe9,0x77,0x67,0x65,0x36,0x80,0xc7,0x72,0x54,0x12,0x2b,0xcb,0xee,0x6e,0x50,0xd9,0x99,0x32,0x05,0x65,0xcc,0x57,0x89,0x5e,0x4e,0xe1,0x07,0x4a},\n\t{0x99,0xf9,0x0d,0x98,0xcb,0x12,0xe4,0x4e,0x71,0xc7,0x6e,0x3c,0x6f,0xd7,0x15,0xa3,0xfd,0x77,0x5c,0x92,0xde,0xed,0xa5,0xbb,0x02,0x34,0x31,0x1d,0x39,0xac,0x0b,0x3f,0x9b,0xa4,0x77,0xc4,0xcd,0x58,0x0b,0x24,0x17,0xf0,0x47,0x64,0xde,0xda,0x38,0xfd,0xad,0x6a,0xc8,0xa7,0x32,0x8d,0x92,0x19,0x81,0xa0,0xaf,0x84,0xed,0x7a,0xaf,0x50,0xe5,0x5b,0xf6,0x15,0x01,0xde,0x4f,0x6e,0xb2,0x09,0x61,0x21,0x21,0x26,0x98,0x29,0xd9,0xd6,0xad,0x0b,0x81,0x05,0x02,0x78,0x06,0xd0,0xeb,0xba,0x16,0xa3,0x21,0x19},\n\t{0xfc,0x70,0xb8,0xdf,0x7e,0x2f,0x42,0x89,0xbd,0xb3,0x76,0x4f,0xeb,0x6b,0x29,0x2c,0xf7,0x4d,0xc2,0x36,0xd4,0xf1,0x38,0x07,0xb0,0xae,0x73,0xe2,0x41,0xdf,0x58,0x64,0x8b,0xc1,0xf3,0xd9,0x9a,0xad,0x5a,0xd7,0x9c,0xc1,0xb1,0x60,0xef,0x0e,0x6a,0x56,0xd9,0x0e,0x5c,0x25,0xac,0x0b,0x9a,0x3e,0xf5,0xc7,0x62,0xa0,0xec,0x9d,0x04,0x7b,0x83,0x44,0x44,0x35,0x7a,0xe3,0xcb,0xdc,0x93,0xbe,0xed,0x0f,0x33,0x79,0x88,0x75,0x87,0xdd,0xc5,0x12,0xc3,0x04,0x60,0x78,0x64,0x0e,0x95,0xc2,0xcb,0xdc,0x93,0x60},\n\t{0x6d,0x70,0xe0,0x85,0x85,0x9a,0xf3,0x1f,0x33,0x39,0xe7,0xb3,0xd8,0xa5,0xd0,0x36,0x3b,0x45,0x8f,0x71,0xe1,0xf2,0xb9,0x43,0x7c,0xa9,0x27,0x48,0x08,0xea,0xd1,0x57,0x4b,0x03,0x84,0x60,0xbe,0xee,0xde,0x6b,0x54,0xb8,0x0f,0x78,0xb6,0xc2,0x99,0x31,0x95,0x06,0x2d,0xb6,0xab,0x76,0x33,0x97,0x90,0x7d,0x64,0x8b,0xc9,0x80,0x31,0x6e,0x71,0xb0,0x28,0xa1,0xe7,0xb6,0x7a,0xee,0xaa,0x8b,0xa8,0x93,0x6d,0x59,0xc1,0xa4,0x30,0x61,0x21,0xb2,0x82,0xde,0xb4,0xf7,0x18,0xbd,0x97,0xdd,0x9d,0x99,0x3e,0x36},\n\t{0xc4,0x1f,0xee,0x35,0xc1,0x43,0xa8,0x96,0xcf,0xc8,0xe4,0x08,0x55,0xb3,0x6e,0x97,0x30,0xd3,0x8c,0xb5,0x01,0x68,0x2f,0xb4,0x2b,0x05,0x3a,0x69,0x78,0x9b,0xee,0x48,0xc6,0xae,0x4b,0xe2,0xdc,0x48,0x18,0x2f,0x60,0xaf,0xbc,0xba,0x55,0x72,0x9b,0x76,0x31,0xe9,0xef,0x3c,0x6e,0x3c,0xcb,0x90,0x55,0xb3,0xf9,0xc6,0x9b,0x97,0x1f,0x23,0xc6,0xf3,0x2a,0xcc,0x4b,0xde,0x31,0x5c,0x1f,0x8d,0x20,0xfe,0x30,0xb0,0x4b,0xb0,0x66,0xb4,0x4f,0xc1,0x09,0x70,0x8d,0xb7,0x13,0x24,0x79,0x08,0x9b,0xfa,0x9b,0x07},\n\t{0xf4,0x0d,0x30,0xda,0x51,0x3a,0x90,0xe3,0xb0,0x5a,0xa9,0x3d,0x23,0x64,0x39,0x84,0x80,0x64,0x35,0x0b,0x2d,0xf1,0x3c,0xed,0x94,0x71,0x81,0x84,0xf6,0x77,0x8c,0x03,0x45,0x42,0xd5,0xa2,0x80,0xed,0xc9,0xf3,0x52,0x39,0xf6,0x77,0x78,0x8b,0xa0,0x0a,0x75,0x54,0x08,0xd1,0x63,0xac,0x6d,0xd7,0x6b,0x63,0x70,0x94,0x15,0xfb,0xf4,0x1e,0xec,0x7b,0x16,0x5b,0xe6,0x5e,0x4e,0x85,0xc2,0xcd,0xd0,0x96,0x42,0x0a,0x59,0x59,0x99,0x21,0x10,0x98,0x34,0xdf,0xb2,0x72,0x56,0xff,0x0b,0x4a,0x2a,0xe9,0x5e,0x57},\n\t{0xcf,0x2f,0x18,0x8a,0x90,0x80,0xc0,0xd4,0xbd,0x9d,0x48,0x99,0xc2,0x70,0xe1,0x30,0xde,0x33,0xf7,0x52,0x57,0xbd,0xba,0x05,0x00,0xfd,0xd3,0x2c,0x11,0xe7,0xd4,0x43,0x01,0xd8,0xa4,0x0a,0x45,0xbc,0x46,0x5d,0xd8,0xb9,0x33,0xa5,0x27,0x12,0xaf,0xc3,0xc2,0x06,0x89,0x2b,0x26,0x3b,0x9e,0x38,0x1b,0x58,0x2f,0x38,0x7e,0x1e,0x0a,0x20,0xc5,0x3a,0xf9,0xea,0x67,0xb9,0x8d,0x51,0xc0,0x52,0x66,0x05,0x9b,0x98,0xbc,0x71,0xf5,0x97,0x71,0x56,0xd9,0x85,0x2b,0xfe,0x38,0x4e,0x1e,0x65,0x52,0xca,0x0e,0x05},\n\t{0x9c,0x0c,0x3f,0x45,0xde,0x1a,0x43,0xc3,0x9b,0x3b,0x70,0xff,0x5e,0x04,0xf5,0xe9,0x3d,0x7b,0x84,0xed,0xc9,0x7a,0xd9,0xfc,0xc6,0xf4,0x58,0x1c,0xc2,0xe6,0x0e,0x4b,0xea,0x68,0xe6,0x60,0x76,0x39,0xac,0x97,0x97,0xb4,0x3a,0x15,0xfe,0xbb,0x19,0x9b,0x9f,0xa7,0xec,0x34,0xb5,0x79,0xb1,0x4c,0x57,0xae,0x31,0xa1,0x9f,0xc0,0x51,0x61,0x96,0x5d,0xf0,0xfd,0x0d,0x5c,0xf5,0x3a,0x7a,0xee,0xb4,0x2a,0xe0,0x2e,0x26,0xdd,0x09,0x17,0x17,0x12,0x87,0xbb,0xb2,0x11,0x0b,0x03,0x0f,0x80,0xfa,0x24,0xef,0x1f},\n\t{0x96,0x31,0xa7,0x1a,0xfb,0x53,0xd6,0x37,0x18,0x64,0xd7,0x3f,0x30,0x95,0x94,0x0f,0xb2,0x17,0x3a,0xfb,0x09,0x0b,0x20,0xad,0x3e,0x61,0xc8,0x2f,0x29,0x49,0x4d,0x54,0x86,0x6b,0x97,0x30,0xf5,0xaf,0xd2,0x22,0x04,0x46,0xd2,0xc2,0x06,0xb8,0x90,0x8d,0xe5,0xba,0xe5,0x4d,0x6c,0x89,0xa1,0xdc,0x17,0x0c,0x34,0xc8,0xe6,0x5f,0x00,0x28,0x88,0x86,0x52,0x34,0x9f,0xba,0xef,0x6a,0xa1,0x7d,0x10,0x25,0x94,0xff,0x1b,0x5c,0x36,0x4b,0xd9,0x66,0xcd,0xbb,0x5b,0xf7,0xfa,0x6d,0x31,0x0f,0x93,0x72,0xe4,0x72},\n\t{0x4f,0x08,0x81,0x97,0x8c,0x20,0x95,0x26,0xe1,0x0e,0x45,0x23,0x0b,0x2a,0x50,0xb1,0x02,0xde,0xef,0x03,0xa6,0xae,0x9d,0xfd,0x4c,0xa3,0x33,0x27,0x8c,0x2e,0x9d,0x5a,0x27,0x76,0x2a,0xd3,0x35,0xf6,0xf3,0x07,0xf0,0x66,0x65,0x5f,0x86,0x4d,0xaa,0x7a,0x50,0x44,0xd0,0x28,0x97,0xe7,0x85,0x3c,0x38,0x64,0xe0,0x0f,0x00,0x7f,0xee,0x1f,0xe5,0xf7,0xdb,0x03,0xda,0x05,0x53,0x76,0xbd,0xcd,0x34,0x14,0x49,0xf2,0xda,0xa4,0xec,0x88,0x4a,0xd2,0xcd,0xd5,0x4a,0x7b,0x43,0x05,0x04,0xee,0x51,0x40,0xf9,0x00},\n\t{0xb2,0x30,0xd3,0xc3,0x23,0x6b,0x35,0x8d,0x06,0x1b,0x47,0xb0,0x9b,0x8b,0x1c,0xf2,0x3c,0xb8,0x42,0x6e,0x6c,0x31,0x6c,0xb3,0x0d,0xb1,0xea,0x8b,0x7e,0x9c,0xd7,0x07,0x53,0x97,0xaf,0x07,0xbb,0x93,0xef,0xd7,0xa7,0x66,0xb7,0x3d,0xcf,0xd0,0x3e,0x58,0xc5,0x1e,0x0b,0x6e,0xbf,0x98,0x69,0xce,0x52,0x04,0xd4,0x5d,0xd2,0xff,0xb7,0x47,0x12,0xdd,0x08,0xbc,0x9c,0xfb,0xfb,0x87,0x9b,0xc2,0xee,0xe1,0x3a,0x6b,0x06,0x8a,0xbf,0xc1,0x1f,0xdb,0x2b,0x24,0x57,0x0d,0xb6,0x4b,0xa6,0x5e,0xa3,0x20,0x35,0x1c},\n\t{0x4a,0xa3,0xcb,0xbc,0xa6,0x53,0xd2,0x80,0x9b,0x21,0x38,0x38,0xa1,0xc3,0x61,0x3e,0x96,0xe3,0x82,0x98,0x01,0xb6,0xc3,0x90,0x6f,0xe6,0x0e,0x5d,0x77,0x05,0x3d,0x1c,0x59,0xc0,0x6b,0x21,0x40,0x6f,0xa8,0xcd,0x7e,0xd8,0xbc,0x12,0x1d,0x23,0xbb,0x1f,0x90,0x09,0xc7,0x17,0x9e,0x6a,0x95,0xb4,0x55,0x2e,0xd1,0x66,0x3b,0x0c,0x75,0x38,0x1a,0xe5,0x22,0x94,0x40,0xf1,0x2e,0x69,0x71,0xf6,0x5d,0x2b,0x3c,0xc7,0xc0,0xcb,0x29,0xe0,0x4c,0x74,0xe7,0x4f,0x01,0x21,0x7c,0x48,0x30,0xd3,0xc7,0xe2,0x21,0x06},\n\t{0x8d,0x83,0x59,0x82,0xcc,0x60,0x98,0xaf,0xdc,0x9a,0x9f,0xc6,0xc1,0x48,0xea,0x90,0x30,0x1e,0x58,0x65,0x37,0x48,0x26,0x65,0xbc,0xa5,0xd3,0x7b,0x09,0xd6,0x07,0x00,0xf3,0xf0,0xdb,0xb0,0x96,0x17,0xae,0xb7,0x96,0xe1,0x7c,0xe1,0xb9,0xaf,0xdf,0x54,0xb4,0xa3,0xaa,0xe9,0x71,0x30,0x92,0x25,0x9d,0x2e,0x00,0xa1,0x9c,0x58,0x8e,0x5d,0x4b,0xa9,0x42,0x08,0x95,0x1d,0xbf,0xc0,0x3e,0x2e,0x8f,0x58,0x63,0xc3,0xd3,0xb2,0xef,0xe2,0x51,0xbb,0x38,0x14,0x96,0x0a,0x86,0xbf,0x1c,0x3c,0x78,0xd7,0x83,0x15},\n\t{0xe1,0x7a,0xa2,0x5d,0xef,0xa2,0xee,0xec,0x74,0x01,0x67,0x55,0x14,0x3a,0x7c,0x59,0x7a,0x16,0x09,0x66,0x12,0x2a,0xa6,0xc9,0x70,0x8f,0xed,0x81,0x2e,0x5f,0x2a,0x25,0xc7,0x28,0x9d,0xcc,0x04,0x47,0x03,0x90,0x8f,0xc5,0x2c,0xf7,0x9e,0x67,0x1b,0x1d,0x26,0x87,0x5b,0xbe,0x5f,0x2b,0xe1,0x16,0x0a,0x58,0xc5,0x83,0x4e,0x06,0x58,0x49,0x0d,0xe8,0x66,0x50,0x26,0x94,0x28,0x0d,0x6b,0x8c,0x7c,0x30,0x85,0xf7,0xc3,0xfc,0xfd,0x12,0x11,0x0c,0x78,0xda,0x53,0x1b,0x88,0xb3,0x43,0xd8,0x0b,0x17,0x9c,0x07},\n\t{0xff,0x6f,0xfa,0x64,0xe4,0xec,0x06,0x05,0x23,0xe5,0x05,0x62,0x1e,0x43,0xe3,0xbe,0x42,0xea,0xb8,0x51,0x24,0x42,0x79,0x35,0x00,0xfb,0xc9,0x4a,0xe3,0x05,0xec,0x6d,0x56,0xd0,0xd5,0xc0,0x50,0xcd,0xd6,0xcd,0x3b,0x57,0x03,0xbb,0x6d,0x68,0xf7,0x9a,0x48,0xef,0xc3,0xf3,0x3f,0x72,0xa6,0x3c,0xcc,0x8a,0x7b,0x31,0xd7,0xc0,0x68,0x67,0xb3,0xc1,0x55,0xf1,0xe5,0x25,0xb6,0x94,0x91,0x7b,0x7b,0x99,0xa7,0xf3,0x7b,0x41,0x00,0x26,0x6b,0x6d,0xdc,0xbd,0x2c,0xc2,0xf4,0x52,0xcd,0xdd,0x14,0x5e,0x44,0x51},\n\t{0x51,0x49,0x14,0x3b,0x4b,0x2b,0x50,0x57,0xb3,0xbc,0x4b,0x44,0x6b,0xff,0x67,0x8e,0xdb,0x85,0x63,0x16,0x27,0x69,0xbd,0xb8,0xc8,0x95,0x92,0xe3,0x31,0x6f,0x18,0x13,0x55,0xa4,0xbe,0x2b,0xab,0x47,0x31,0x89,0x29,0x91,0x07,0x92,0x4f,0xa2,0x53,0x8c,0xa7,0xf7,0x30,0xbe,0x48,0xf9,0x49,0x4b,0x3d,0xd4,0x4f,0x6e,0x08,0x90,0xe9,0x12,0x2e,0xbb,0xdf,0x7f,0xb3,0x96,0x0c,0xf1,0xf9,0xea,0x1c,0x12,0x5e,0x93,0x9a,0x9f,0x3f,0x98,0x5b,0x3a,0xc4,0x36,0x11,0xdf,0xaf,0x99,0x3e,0x5d,0xf0,0xe3,0xb2,0x77},\n\t{0xde,0xc4,0x2e,0x9c,0xc5,0xa9,0x6f,0x29,0xcb,0xf3,0x84,0x4f,0xbf,0x61,0x8b,0xbc,0x08,0xf9,0xa8,0x17,0xd9,0x06,0x77,0x1c,0x5d,0x25,0xd3,0x7a,0xfc,0x95,0xb7,0x63,0xa4,0xb0,0xdd,0x12,0x9c,0x63,0x98,0xd5,0x6b,0x86,0x24,0xc0,0x30,0x9f,0xd1,0xa5,0x60,0xe4,0xfc,0x58,0x03,0x2f,0x7c,0xd1,0x8a,0x5e,0x09,0x2e,0x15,0x95,0xa1,0x07,0xc8,0x5f,0x9e,0x38,0x02,0x8f,0x36,0xa8,0x3b,0xe4,0x8d,0xcf,0x02,0x3b,0x43,0x90,0x43,0x26,0x41,0xc5,0x5d,0xfd,0xa1,0xaf,0x37,0x01,0x2f,0x03,0x3d,0xe8,0x8f,0x3e},\n\t{0x94,0xa2,0x70,0x05,0xb9,0x15,0x8b,0x2f,0x49,0x45,0x08,0x67,0x70,0x42,0xf2,0x94,0x84,0xfd,0xbb,0x61,0xe1,0x5a,0x1c,0xde,0x07,0x40,0xac,0x7f,0x79,0x3b,0xba,0x75,0x3c,0xd1,0xef,0xe8,0x8d,0x4c,0x70,0x08,0x31,0x37,0xe0,0x33,0x8e,0x1a,0xc5,0xdf,0xe3,0xcd,0x60,0x12,0xa5,0x5d,0x9d,0xa5,0x86,0x8c,0x25,0xa6,0x99,0x08,0xd6,0x22,0x96,0xd1,0xcd,0x70,0xc0,0xdb,0x39,0x62,0x9a,0x8a,0x7d,0x6c,0x8b,0x8a,0xfe,0x60,0x60,0x12,0x40,0xeb,0xbc,0x47,0x88,0xb3,0x5e,0x9e,0x77,0x87,0x7b,0xd0,0x04,0x09},\n\t{0x9c,0x91,0xba,0xdd,0xd4,0x1f,0xce,0xb4,0xaa,0x8d,0x4c,0xc7,0x3e,0xdb,0x31,0xcf,0x51,0xcc,0x86,0xad,0x63,0xcc,0x63,0x2c,0x07,0xde,0x1d,0xbc,0x3f,0x14,0xe2,0x43,0xb9,0x40,0xf9,0x48,0x66,0x2d,0x32,0xf4,0x39,0x0c,0x2d,0xbd,0x0c,0x2f,0x95,0x06,0x31,0xf9,0x81,0xa0,0xad,0x97,0x76,0x16,0x6c,0x2a,0xf7,0xba,0xce,0xaa,0x40,0x62,0xa0,0x95,0xa2,0x5b,0x9c,0x74,0x34,0xf8,0x5a,0xd2,0x37,0xca,0x5b,0x7c,0x94,0xd6,0x6a,0x31,0xc9,0xe7,0xa7,0x3b,0xf1,0x66,0xac,0x0c,0xb4,0x8d,0x23,0xaf,0xbd,0x56},\n\t{0xeb,0x33,0x35,0xf5,0xe3,0xb9,0x2a,0x36,0x40,0x3d,0xb9,0x6e,0xd5,0x68,0x85,0x33,0x72,0x55,0x5a,0x1d,0x52,0x14,0x0e,0x9e,0x18,0x13,0x74,0x83,0x6d,0xa8,0x24,0x1d,0xb2,0x3b,0x9d,0xc1,0x6c,0xd3,0x10,0x13,0xb9,0x86,0x23,0x62,0xb7,0x6b,0x2a,0x06,0x5c,0x4f,0xa1,0xd7,0x91,0x85,0x9b,0x7c,0x54,0x57,0x1e,0x7e,0x50,0x31,0xaa,0x03,0x1f,0xce,0xd4,0xff,0x48,0x76,0xec,0xf4,0x1c,0x8c,0xac,0x54,0xf0,0xea,0x45,0xe0,0x7c,0x35,0x09,0x1d,0x82,0x25,0xd2,0x88,0x59,0x48,0xeb,0x9a,0xdc,0x61,0xb2,0x43},\n\t{0xbb,0x79,0xbb,0x88,0x19,0x1e,0x5b,0xe5,0x9d,0x35,0x7a,0xc1,0x7d,0xd0,0x9e,0xa0,0x33,0xea,0x3d,0x60,0xe2,0x2e,0x2c,0xb0,0xc2,0x6b,0x27,0x5b,0xcf,0x55,0x60,0x32,0x64,0x13,0x95,0x6c,0x8b,0x3d,0x51,0x19,0x7b,0xf4,0x0b,0x00,0x26,0x71,0xfe,0x94,0x67,0x95,0x4f,0xd5,0xdd,0x10,0x8d,0x02,0x64,0x09,0x94,0x42,0xe2,0xd5,0xb4,0x02,0xf2,0x8d,0xd1,0x28,0xcb,0x55,0xa1,0xb4,0x08,0xe5,0x6c,0x18,0x46,0x46,0xcc,0xea,0x89,0x43,0x82,0x6c,0x93,0xf4,0x9c,0xc4,0x10,0x34,0x5d,0xae,0x09,0xc8,0xa6,0x27},\n\t{0x88,0xb1,0x0d,0x1f,0xcd,0xeb,0xa6,0x8b,0xe8,0x5b,0x5a,0x67,0x3a,0xd7,0xd3,0x37,0x5a,0x58,0xf5,0x15,0xa3,0xdf,0x2e,0xf2,0x7e,0xa1,0x60,0xff,0x74,0x71,0xb6,0x2c,0x54,0x69,0x3d,0xc4,0x0a,0x27,0x2c,0xcd,0xb2,0xca,0x66,0x6a,0x57,0x3e,0x4a,0xdd,0x6c,0x03,0xd7,0x69,0x24,0x59,0xfa,0x79,0x99,0x25,0x8c,0x3d,0x60,0x03,0x15,0x22,0xd0,0xe1,0x0b,0x39,0xf9,0xcd,0xee,0x59,0xf1,0xe3,0x8c,0x72,0x44,0x20,0x42,0xa9,0xf4,0xf0,0x94,0x7a,0x66,0x1c,0x89,0x82,0x36,0xf4,0x90,0x38,0xb7,0xf4,0x1d,0x7b},\n\t{0x24,0xa2,0xb2,0xb3,0xe0,0xf2,0x92,0xe4,0x60,0x11,0x55,0x2b,0x06,0x9e,0x6c,0x7c,0x0e,0x7b,0x7f,0x0d,0xe2,0x8f,0xeb,0x15,0x92,0x59,0xfc,0x58,0x26,0xef,0xfc,0x61,0x8c,0xf5,0xf8,0x07,0x18,0x22,0x2e,0x5f,0xd4,0x09,0x94,0xd4,0x9f,0x5c,0x55,0xe3,0x30,0xa6,0xb6,0x1f,0x8d,0xa8,0xaa,0xb2,0x3d,0xe0,0x52,0xd3,0x45,0x82,0x69,0x68,0x7a,0x18,0x18,0x2a,0x85,0x5d,0xb1,0xdb,0xd7,0xac,0xdd,0x86,0xd3,0xaa,0xe4,0xf3,0x82,0xc4,0xf6,0x0f,0x81,0xe2,0xba,0x44,0xcf,0x01,0xaf,0x3d,0x47,0x4c,0xcf,0x46},\n\t{0xf9,0xe5,0xc4,0x9e,0xed,0x25,0x65,0x42,0x03,0x33,0x90,0x16,0x01,0xda,0x5e,0x0e,0xdc,0xca,0xe5,0xcb,0xf2,0xa7,0xb1,0x72,0x40,0x5f,0xeb,0x14,0xcd,0x7b,0x38,0x29,0x40,0x81,0x49,0xf1,0xa7,0x6e,0x3c,0x21,0x54,0x48,0x2b,0x39,0xf8,0x7e,0x1e,0x7c,0xba,0xce,0x29,0x56,0x8c,0xc3,0x88,0x24,0xbb,0xc5,0x8c,0x0d,0xe5,0xaa,0x65,0x10,0x57,0x0d,0x20,0xdf,0x25,0x45,0x2c,0x1c,0x4a,0x67,0xca,0xbf,0xd6,0x2d,0x3b,0x5c,0x30,0x40,0x83,0xe1,0xb1,0xe7,0x07,0x0a,0x16,0xe7,0x1c,0x4f,0xe6,0x98,0xa1,0x69},\n\t{0xbc,0x78,0x1a,0xd9,0xe0,0xb2,0x62,0x90,0x67,0x96,0x50,0xc8,0x9c,0x88,0xc9,0x47,0xb8,0x70,0x50,0x40,0x66,0x4a,0xf5,0x9d,0xbf,0xa1,0x93,0x24,0xa9,0xe6,0x69,0x73,0xed,0xca,0xc5,0xdc,0x34,0x44,0x01,0xe1,0x33,0xfb,0x84,0x3c,0x96,0x5d,0xed,0x47,0xe7,0xa0,0x86,0xed,0x76,0x95,0x01,0x70,0xe4,0xf9,0x67,0xd2,0x7b,0x69,0xb2,0x25,0x64,0x68,0x98,0x13,0xfb,0x3f,0x67,0x9d,0xb8,0xc7,0x5d,0x41,0xd9,0xfb,0xa5,0x3c,0x5e,0x3b,0x27,0xdf,0x3b,0xcc,0x4e,0xe0,0xd2,0x4c,0x4e,0xb5,0x3d,0x68,0x20,0x14},\n\t{0x97,0xd1,0x9d,0x24,0x1e,0xbd,0x78,0xb4,0x02,0xc1,0x58,0x5e,0x00,0x35,0x0c,0x62,0x5c,0xac,0xba,0xcc,0x2f,0xd3,0x02,0xfb,0x2d,0xa7,0x08,0xf5,0xeb,0x3b,0xb6,0x60,0xd0,0x5a,0xcc,0xc1,0x6f,0xbb,0xee,0x34,0x8b,0xac,0x46,0x96,0xe9,0x0c,0x1b,0x6a,0x53,0xde,0x6b,0xa6,0x49,0xda,0xb0,0xd3,0xc1,0x81,0xd0,0x61,0x41,0x3b,0xe8,0x31,0x4f,0x2b,0x06,0x9e,0x12,0xc7,0xe8,0x97,0xd8,0x0a,0x32,0x29,0x4f,0x8f,0xe4,0x49,0x3f,0x68,0x18,0x6f,0x4b,0xe1,0xec,0x5b,0x17,0x03,0x55,0x2d,0xb6,0x1e,0xcf,0x55},\n\t{0x58,0x3d,0xc2,0x65,0x10,0x10,0x79,0x58,0x9c,0x81,0x94,0x50,0x6d,0x08,0x9d,0x8b,0xa7,0x5f,0xc5,0x12,0xa9,0x2f,0x40,0xe2,0xd4,0x91,0x08,0x57,0x64,0x65,0x9a,0x66,0x52,0x8c,0xf5,0x7d,0xe3,0xb5,0x76,0x30,0x36,0xcc,0x99,0xe7,0xdd,0xb9,0x3a,0xd7,0x20,0xee,0x13,0x49,0xe3,0x1c,0x83,0xbd,0x33,0x01,0xba,0x62,0xaa,0xfb,0x56,0x1a,0xec,0xc9,0x9d,0x5c,0x50,0x6b,0x3e,0x94,0x1a,0x37,0x7c,0xa7,0xbb,0x57,0x25,0x30,0x51,0x76,0x34,0x41,0x56,0xae,0x73,0x98,0x5c,0x8a,0xc5,0x99,0x67,0x83,0xc4,0x13},\n\t{0xb9,0xe1,0xb3,0x5a,0x46,0x5d,0x3a,0x42,0x61,0x3f,0xf1,0xc7,0x87,0xc1,0x13,0xfc,0xb6,0xb9,0xb5,0xec,0x64,0x36,0xf8,0x19,0x07,0xb6,0x37,0xa6,0x93,0x0c,0xf8,0x66,0x80,0xd0,0x8b,0x5d,0x6a,0xfb,0xdc,0xc4,0x42,0x48,0x1a,0x57,0xec,0xc4,0xeb,0xde,0x65,0x53,0xe5,0xb8,0x83,0xe8,0xb2,0xd4,0x27,0xb8,0xe5,0xc8,0x7d,0xc8,0xbd,0x50,0x11,0xe1,0xdf,0x6e,0x83,0x37,0x6d,0x60,0xd9,0xab,0x11,0xf0,0x15,0x3e,0x35,0x32,0x96,0x3b,0xb7,0x25,0xc3,0x3a,0xb0,0x64,0xae,0xd5,0x5f,0x72,0x44,0x64,0xd5,0x1d},\n\t{0x7d,0x12,0x62,0x33,0xf8,0x7f,0xa4,0x8f,0x15,0x7c,0xcd,0x71,0xc4,0x6a,0x9f,0xbc,0x8b,0x0c,0x22,0x49,0x43,0x45,0x71,0x6e,0x2e,0x73,0x9f,0x21,0x12,0x59,0x64,0x0e,0x9a,0xc8,0xba,0x08,0x00,0xe6,0x97,0xc2,0xe0,0xc3,0xe1,0xea,0x11,0xea,0x4c,0x7d,0x7c,0x97,0xe7,0x9f,0xe1,0x8b,0xe3,0xf3,0xcd,0x05,0xa3,0x63,0x0f,0x45,0x3a,0x3a,0x27,0x46,0x39,0xd8,0x31,0x2f,0x8f,0x07,0x10,0xa5,0x94,0xde,0x83,0x31,0x9d,0x38,0x80,0x6f,0x99,0x17,0x6d,0x6c,0xe3,0xd1,0x7b,0xa8,0xa9,0x93,0x93,0x8d,0x8c,0x31},\n\t{0x19,0xfe,0xff,0x2a,0x03,0x5d,0x74,0xf2,0x66,0xdb,0x24,0x7f,0x49,0x3c,0x9f,0x0c,0xef,0x98,0x85,0xba,0xe3,0xd3,0x98,0xbc,0x14,0x53,0x1d,0x9a,0x67,0x7c,0x4c,0x22,0x98,0xd3,0x1d,0xab,0x29,0x9e,0x66,0x5d,0x3b,0x9e,0x2d,0x34,0x58,0x16,0x92,0xfc,0xcd,0x73,0x59,0xf3,0xfd,0x1d,0x85,0x55,0xf6,0x0a,0x95,0x25,0xc3,0x41,0x9a,0x50,0xe9,0x25,0xf9,0xa6,0xdc,0x6e,0xc0,0xbd,0x33,0x1f,0x1b,0x64,0xf4,0xf3,0x3e,0x79,0x89,0x3e,0x83,0x9d,0x80,0x12,0xec,0x82,0x89,0x13,0xa1,0x28,0x23,0xf0,0xbf,0x05},\n\t{0x0b,0xe0,0xca,0x23,0x70,0x13,0x32,0x36,0x59,0xcf,0xac,0xd1,0x0a,0xcf,0x4a,0x54,0x88,0x1c,0x1a,0xd2,0x49,0x10,0x74,0x96,0xa7,0x44,0x2a,0xfa,0xc3,0x8c,0x0b,0x78,0xe4,0x12,0xc5,0x0d,0xdd,0xa0,0x81,0x68,0xfe,0xfa,0xa5,0x44,0xc8,0x0d,0xe7,0x4f,0x40,0x52,0x4a,0x8f,0x6b,0x8e,0x74,0x1f,0xea,0xa3,0x01,0xee,0xcd,0x77,0x62,0x57,0x5f,0x30,0x4f,0x23,0xbc,0x8a,0xf3,0x1e,0x08,0xde,0x05,0x14,0xbd,0x7f,0x57,0x9a,0x0d,0x2a,0xe6,0x34,0x14,0xa5,0x82,0x5e,0xa1,0xb7,0x71,0x62,0x72,0x18,0xf4,0x5f},\n\t{0x9d,0xdb,0x89,0x17,0x0c,0x08,0x8e,0x39,0xf5,0x78,0xe7,0xf3,0x25,0x20,0x60,0xa7,0x5d,0x03,0xbd,0x06,0x4c,0x89,0x98,0xfa,0xbe,0x66,0xa9,0x25,0xdc,0x03,0x6a,0x10,0x40,0x95,0xb6,0x13,0xe8,0x47,0xdb,0xe5,0xe1,0x10,0x26,0x43,0x3b,0x2a,0x5d,0xf3,0x76,0x12,0x78,0x38,0xe9,0x26,0x1f,0xac,0x69,0xcb,0xa0,0xa0,0x8c,0xdb,0xd4,0x29,0xd0,0x53,0x33,0x33,0xaf,0x0a,0xad,0xd9,0xe5,0x09,0xd3,0xac,0xa5,0x9d,0x66,0x38,0xf0,0xf7,0x88,0xc8,0x8a,0x65,0x57,0x3c,0xfa,0xbe,0x2c,0x05,0x51,0x8a,0xb3,0x4a},\n\t{0x93,0xd5,0x68,0x67,0x25,0x2b,0x7c,0xda,0x13,0xca,0x22,0x44,0x57,0xc0,0xc1,0x98,0x1d,0xce,0x0a,0xca,0xd5,0x0b,0xa8,0xf1,0x90,0xa6,0x88,0xc0,0xad,0xd1,0xcd,0x29,0x9c,0xc0,0xdd,0x5f,0xef,0xd1,0xcf,0xd6,0xce,0x5d,0x57,0xf7,0xfd,0x3e,0x2b,0xe8,0xc2,0x34,0x16,0x20,0x5d,0x6b,0xd5,0x25,0x9b,0x2b,0xed,0x04,0xbb,0xc6,0x41,0x30,0x48,0xe1,0x56,0xd9,0xf9,0xf2,0xf2,0x0f,0x2e,0x6b,0x35,0x9f,0x75,0x97,0xe7,0xad,0x5c,0x02,0x6c,0x5f,0xbb,0x98,0x46,0x1a,0x7b,0x9a,0x04,0x14,0x68,0xbd,0x4b,0x10},\n\t{0x67,0xed,0xf1,0x68,0x31,0xfd,0xf0,0x51,0xc2,0x3b,0x6f,0xd8,0xcd,0x1d,0x81,0x2c,0xde,0xf2,0xd2,0x04,0x43,0x5c,0xdc,0x44,0x49,0x71,0x2a,0x09,0x57,0xcc,0xe8,0x5b,0x63,0xf1,0x7f,0xd6,0x5f,0x9a,0x5d,0xa9,0x81,0x56,0xc7,0x4c,0x9d,0xe6,0x2b,0xe9,0x57,0xf2,0x20,0xde,0x4c,0x02,0xf8,0xb7,0xf5,0x2d,0x07,0xfb,0x20,0x2a,0x4f,0x20,0x79,0xb0,0xeb,0x30,0x3d,0x3b,0x14,0xc8,0x30,0x2e,0x65,0xbd,0x5a,0x15,0x89,0x75,0x31,0x5c,0x6d,0x8f,0x31,0x3c,0x3c,0x65,0x1f,0x16,0x79,0xc2,0x17,0xfb,0x70,0x25},\n\t{0x75,0x15,0xb6,0x2c,0x7f,0x36,0xfa,0x3e,0x6c,0x02,0xd6,0x1c,0x76,0x6f,0xf9,0xf5,0x62,0x25,0xb5,0x65,0x2a,0x14,0xc7,0xe8,0xcd,0x0a,0x03,0x53,0xea,0x65,0xcb,0x3d,0x5a,0x24,0xb8,0x0b,0x55,0xa9,0x2e,0x19,0xd1,0x50,0x90,0x8f,0xa8,0xfb,0xe6,0xc8,0x35,0xc9,0xa4,0x88,0x2d,0xea,0x86,0x79,0x68,0x86,0x01,0xde,0x91,0x5f,0x1c,0x24,0xaa,0x6c,0xde,0x40,0x29,0x17,0xd8,0x28,0x3a,0x73,0xd9,0x22,0xf0,0x2c,0xbf,0x8f,0xd1,0x01,0x5b,0x23,0xdd,0xfc,0xd7,0x16,0xe5,0xf0,0xcd,0x5f,0xdd,0x0e,0x42,0x08},\n\t{0x4a,0xfa,0x62,0x83,0xab,0x20,0xff,0xcd,0x6e,0x3e,0x1a,0xe2,0xd4,0x18,0xe1,0x57,0x2b,0xe6,0x39,0xfc,0x17,0x96,0x17,0xe3,0xfd,0x69,0x17,0xbc,0xef,0x53,0x9a,0x0d,0xce,0x10,0xf4,0x04,0x4e,0xc3,0x58,0x03,0x85,0x06,0x6e,0x27,0x5a,0x5b,0x13,0xb6,0x21,0x15,0xb9,0xeb,0xc7,0x70,0x96,0x5d,0x9c,0x88,0xdb,0x21,0xf3,0x54,0xd6,0x04,0xd5,0xb5,0xbd,0xdd,0x16,0xc1,0x7d,0x5e,0x2d,0xdd,0xa5,0x8d,0xb6,0xde,0x54,0x29,0x92,0xa2,0x34,0x33,0x17,0x08,0xb6,0x1c,0xd7,0x1a,0x99,0x18,0x26,0x4f,0x7a,0x4a},\n\t{0x95,0x5f,0xb1,0x5f,0x02,0x18,0xa7,0xf4,0x8f,0x1b,0x5c,0x6b,0x34,0x5f,0xf6,0x3d,0x12,0x11,0xe0,0x00,0x85,0xf0,0xfc,0xcd,0x48,0x18,0xd3,0xdd,0x4c,0x0c,0xb5,0x11,0x4b,0x2a,0x37,0xaf,0x91,0xb2,0xc3,0x24,0xf2,0x47,0x81,0x71,0x70,0x82,0xda,0x93,0xf2,0x9e,0x89,0x86,0x64,0x85,0x84,0xdd,0x33,0xee,0xe0,0x23,0x42,0x31,0x96,0x4a,0xd6,0xff,0xa4,0x08,0x44,0x27,0xe8,0xa6,0xd9,0x76,0x15,0x9c,0x7e,0x17,0x8e,0x73,0xf2,0xb3,0x02,0x3d,0xb6,0x48,0x33,0x77,0x51,0xcc,0x6b,0xce,0x4d,0xce,0x4b,0x4f},\n\t{0x84,0x25,0x24,0xe2,0x5a,0xce,0x1f,0xa7,0x9e,0x8a,0xf5,0x92,0x56,0x72,0xea,0x26,0xf4,0x3c,0xea,0x1c,0xd7,0x09,0x1a,0xd2,0xe6,0x01,0x1c,0xb7,0x14,0xdd,0xfc,0x73,0x6f,0x0b,0x9d,0xc4,0x6e,0x61,0xe2,0x30,0x17,0x23,0xec,0xca,0x8f,0x71,0x56,0xe4,0xa6,0x4f,0x6b,0xf2,0x9b,0x40,0xeb,0x48,0x37,0x5f,0x59,0x61,0xe5,0xce,0x42,0x30,0x41,0xac,0x9b,0x44,0x79,0x70,0x7e,0x42,0x0a,0x31,0xe2,0xbc,0x6d,0xe3,0x5a,0x85,0x7c,0x1a,0x84,0x5f,0x21,0x76,0xae,0x4c,0xd6,0xe1,0x9c,0x9a,0x0c,0x74,0x9e,0x38},\n\t{0xce,0xb9,0xdc,0x34,0xae,0xb3,0xfc,0x64,0xad,0xd0,0x48,0xe3,0x23,0x03,0x50,0x97,0x1b,0x38,0xc6,0x62,0x7d,0xf0,0xb3,0x45,0x88,0x67,0x5a,0x46,0x79,0x53,0x54,0x61,0x28,0xac,0x0e,0x57,0xf6,0x78,0xbd,0xc9,0xe1,0x9c,0x91,0x27,0x32,0x0b,0x5b,0xe5,0xed,0x91,0x9b,0xa1,0xab,0x3e,0xfc,0x65,0x90,0x36,0x26,0xd6,0xe5,0x25,0xc4,0x25,0x6e,0xde,0xd7,0xf1,0xa6,0x06,0x3e,0x3f,0x08,0x23,0x06,0x8e,0x27,0x76,0xf9,0x3e,0x77,0x6c,0x8a,0x4e,0x26,0xf6,0x14,0x8c,0x59,0x47,0x48,0x15,0x89,0xa0,0x39,0x65},\n\t{0x73,0xf7,0xd2,0xc3,0x74,0x1f,0xd2,0xe9,0x45,0x68,0xc4,0x25,0x41,0x54,0x50,0xc1,0x33,0x9e,0xb9,0xf9,0xe8,0x5c,0x4e,0x62,0x6c,0x18,0xcd,0xc5,0xaa,0xe4,0xc5,0x11,0x19,0x4a,0xbb,0x14,0xd4,0xdb,0xc4,0xdd,0x8e,0x4f,0x42,0x98,0x3c,0xbc,0xb2,0x19,0x69,0x71,0xca,0x36,0xd7,0x9f,0xa8,0x48,0x90,0xbd,0x19,0xf0,0x0e,0x32,0x65,0x0f,0xc6,0xe0,0xfd,0xca,0xb1,0xd1,0x86,0xd4,0x81,0x51,0x3b,0x16,0xe3,0xe6,0x3f,0x4f,0x9a,0x93,0xf2,0xfa,0x0d,0xaf,0xa8,0x59,0x2a,0x07,0x33,0xec,0xbd,0xc7,0xab,0x4c},\n\t{0x2e,0x0a,0x9c,0x08,0x24,0x96,0x9e,0x23,0x38,0x47,0xfe,0x3a,0xc0,0xc4,0x48,0xc7,0x2a,0xa1,0x4f,0x76,0x2a,0xed,0xdb,0x17,0x82,0x85,0x1c,0x32,0xf0,0x93,0x9b,0x63,0x89,0xd2,0x78,0x3f,0x8f,0x78,0x8f,0xc0,0x9f,0x4d,0x40,0xa1,0x2c,0xa7,0x30,0xfe,0x9d,0xcc,0x65,0xcf,0xfc,0x8b,0x77,0xf2,0x21,0x20,0xcb,0x5a,0x16,0x98,0xe4,0x7e,0xc3,0xa1,0x11,0x91,0xe3,0x08,0xd5,0x7b,0x89,0x74,0x90,0x80,0xd4,0x90,0x2b,0x2b,0x19,0xfd,0x72,0xae,0xc2,0xae,0xd2,0xe7,0xa6,0x02,0xb6,0x85,0x3c,0x49,0xdf,0x0e},\n\t{0x68,0x5a,0x9b,0x59,0x58,0x81,0xcc,0xae,0x0e,0xe2,0xad,0xeb,0x0f,0x4f,0x57,0xea,0x07,0x7f,0xb6,0x22,0x74,0x1d,0xe4,0x4f,0xb4,0x4f,0x9d,0x01,0xe3,0x92,0x3b,0x40,0x13,0x41,0x76,0x84,0xd2,0xc4,0x67,0x67,0x35,0xf8,0xf5,0xf7,0x3f,0x40,0x90,0xa0,0xde,0xbe,0xe6,0xca,0xfa,0xcf,0x8f,0x1c,0x69,0xa3,0xdf,0xd1,0x54,0x0c,0xc0,0x04,0xf8,0x5c,0x46,0x8b,0x81,0x2f,0xc2,0x4d,0xf8,0xef,0x80,0x14,0x5a,0xf3,0xa0,0x71,0x57,0xd6,0xc7,0x04,0xad,0xbf,0xe8,0xae,0xf4,0x76,0x61,0xb2,0x2a,0xb1,0x5b,0x35},\n\t{0xf4,0xbb,0x93,0x74,0xcc,0x64,0x1e,0xa7,0xc3,0xb0,0xa3,0xec,0xd9,0x84,0xbd,0xe5,0x85,0xe7,0x05,0xfa,0x0c,0xc5,0x6b,0x0a,0x12,0xc3,0x2e,0x18,0x32,0x81,0x9b,0x0f,0x18,0x73,0x8c,0x5a,0xc7,0xda,0x01,0xa3,0x11,0xaa,0xce,0xb3,0x9d,0x03,0x90,0xed,0x2d,0x3f,0xae,0x3b,0xbf,0x7c,0x07,0x6f,0x8e,0xad,0x52,0xe0,0xf8,0xea,0x18,0x75,0x32,0x6c,0x7f,0x1b,0xc4,0x59,0x88,0xa4,0x98,0x32,0x38,0xf4,0xbc,0x60,0x2d,0x0f,0xd9,0xd1,0xb1,0xc9,0x29,0xa9,0x15,0x18,0xc4,0x55,0x17,0xbb,0x1b,0x87,0xc3,0x47},\n\t{0x48,0x4f,0xec,0x71,0x97,0x53,0x44,0x51,0x6e,0x5d,0x8c,0xc9,0x7d,0xb1,0x05,0xf8,0x6b,0xc6,0xc3,0x47,0x1a,0xc1,0x62,0xf7,0xdc,0x99,0x46,0x76,0x85,0x9b,0xb8,0x00,0xb0,0x66,0x50,0xc8,0x50,0x5d,0xe6,0xfb,0xb0,0x99,0xa2,0xb3,0xb0,0xc4,0xec,0x62,0xe0,0xe8,0x1a,0x44,0xea,0x54,0x37,0xe5,0x5f,0x8d,0xd4,0xe8,0x2c,0xa0,0xfe,0x08,0xd0,0xea,0xde,0x68,0x76,0xdd,0x4d,0x82,0x23,0x5d,0x68,0x4b,0x20,0x45,0x64,0xc8,0x65,0xd6,0x89,0x5d,0xcd,0xcf,0x14,0xb5,0x37,0xd5,0x75,0x4f,0xa7,0x29,0x38,0x47},\n\t{0x18,0xc4,0x79,0x46,0x75,0xda,0xd2,0x82,0xf0,0x8d,0x61,0xb2,0xd8,0xd7,0x3b,0xe6,0x0a,0xeb,0x47,0xac,0x24,0xef,0x5e,0x35,0xb4,0xc6,0x33,0x48,0x4c,0x68,0x78,0x20,0xc9,0x02,0x39,0xad,0x3a,0x53,0xd9,0x23,0x8f,0x58,0x03,0xef,0xce,0xdd,0xc2,0x64,0xb4,0x2f,0xe1,0xcf,0x90,0x73,0x25,0x15,0x90,0xd3,0xe4,0x44,0x4d,0x8b,0x66,0x6c,0x0c,0x82,0x78,0x7a,0x21,0xcf,0x48,0x3b,0x97,0x3e,0x27,0x81,0xb2,0x0a,0x6a,0xf7,0x7b,0xed,0x8e,0x8c,0xa7,0x65,0x6c,0xa9,0x3f,0x43,0x8a,0x4f,0x05,0xa6,0x11,0x74},\n\t{0x6d,0xc8,0x9d,0xb9,0x32,0x9d,0x65,0x4d,0x15,0xf1,0x3a,0x60,0x75,0xdc,0x4c,0x04,0x88,0xe4,0xc2,0xdc,0x2c,0x71,0x4c,0xb3,0xff,0x34,0x81,0xfb,0x74,0x65,0x13,0x7c,0xb4,0x75,0xb1,0x18,0x3d,0xe5,0x9a,0x57,0x02,0xa1,0x92,0xf3,0x59,0x31,0x71,0x68,0xf5,0x35,0xef,0x1e,0xba,0xec,0x55,0x84,0x8f,0x39,0x8c,0x45,0x72,0xa8,0xc9,0x1e,0x9b,0x50,0xa2,0x00,0xd4,0xa4,0xe6,0xb8,0xb4,0x82,0xc8,0x0b,0x02,0xd7,0x81,0x9b,0x61,0x75,0x95,0xf1,0x9b,0xcc,0xe7,0x57,0x60,0x64,0xcd,0xc7,0xa5,0x88,0xdd,0x3a},\n\t{0xf2,0xdc,0x35,0xb6,0x70,0x57,0x89,0xab,0xbc,0x1f,0x6c,0xf6,0x6c,0xef,0xdf,0x02,0x87,0xd1,0xb6,0xbe,0x68,0x02,0x53,0x85,0x74,0x9e,0x87,0xcc,0xfc,0x29,0x99,0x24,0x46,0x30,0x39,0x59,0xd4,0x98,0xc2,0x85,0xec,0x59,0xf6,0x5f,0x98,0x35,0x7e,0x8f,0x3a,0x6e,0xf6,0xf2,0x2a,0xa2,0x2c,0x1d,0x20,0xa7,0x06,0xa4,0x31,0x11,0xba,0x61,0x29,0x90,0x95,0x16,0xf1,0xa0,0xd0,0xa3,0x89,0xbd,0x7e,0xba,0x6c,0x6b,0x3b,0x02,0x07,0x33,0x78,0x26,0x3e,0x5a,0xf1,0x7b,0xe7,0xec,0xd8,0xbb,0x0c,0x31,0x20,0x56},\n\t{0x43,0xd6,0x34,0x49,0x43,0x93,0x89,0x52,0xf5,0x22,0x12,0xa5,0x06,0xf8,0xdb,0xb9,0x22,0x1c,0xf4,0xc3,0x8f,0x87,0x6d,0x8f,0x30,0x97,0x9d,0x4d,0x2a,0x6a,0x67,0x37,0xd6,0x85,0xe2,0x77,0xf4,0xb5,0x46,0x66,0x93,0x61,0x8f,0x6c,0x67,0xff,0xe8,0x40,0xdd,0x94,0xb5,0xab,0x11,0x73,0xec,0xa6,0x4d,0xec,0x8c,0x65,0xf3,0x46,0xc8,0x7e,0xc7,0x2e,0xa2,0x1d,0x3f,0x8f,0x5e,0x9b,0x13,0xcd,0x01,0x6c,0x77,0x1d,0x0f,0x13,0xb8,0x9f,0x98,0xa2,0xcf,0x8f,0x4c,0x21,0xd5,0x9d,0x9b,0x39,0x23,0xf7,0xaa,0x6d},\n\t{0x47,0xbe,0x3d,0xeb,0x62,0x75,0x3a,0x5f,0xb8,0xa0,0xbd,0x8e,0x54,0x38,0xea,0xf7,0x99,0x72,0x74,0x45,0x31,0xe5,0xc3,0x00,0x51,0xd5,0x27,0x16,0xe7,0xe9,0x04,0x13,0xa2,0x8e,0xad,0xac,0xbf,0x04,0x3b,0x58,0x84,0xe8,0x8b,0x14,0xe8,0x43,0xb7,0x29,0xdb,0xc5,0x10,0x08,0x3b,0x58,0x1e,0x2b,0xaa,0xbb,0xb3,0x8e,0xe5,0x49,0x54,0x2b,0xfe,0x9c,0xdc,0x6a,0xd2,0x14,0x98,0x78,0x0b,0xdd,0x48,0x8b,0x3f,0xab,0x1b,0x3c,0x0a,0xc6,0x79,0xf9,0xff,0xe1,0x0f,0xda,0x93,0xd6,0x2d,0x7c,0x2d,0xde,0x68,0x44},\n\t{0x9e,0x46,0x19,0x94,0x5e,0x35,0xbb,0x51,0x54,0xc7,0xdd,0x23,0x4c,0xdc,0xe6,0x33,0x62,0x99,0x7f,0x44,0xd6,0xb6,0xa5,0x93,0x63,0xbd,0x44,0xfb,0x6f,0x7c,0xce,0x6c,0xce,0x07,0x63,0xf8,0xc6,0xd8,0x9a,0x4b,0x28,0x0c,0x5d,0x43,0x31,0x35,0x11,0x21,0x2c,0x77,0x7a,0x65,0xc5,0x66,0xa8,0xd4,0x52,0x73,0x24,0x63,0x7e,0x42,0xa6,0x5d,0xca,0x22,0xac,0xde,0x88,0xc6,0x94,0x1a,0xf8,0x1f,0xae,0xbb,0xf7,0x6e,0x06,0xb9,0x0f,0x58,0x59,0x8d,0x38,0x8c,0xad,0x88,0xa8,0x2c,0x9f,0xe7,0xbf,0x9a,0xf2,0x58},\n\t{0x68,0x3e,0xe7,0x8d,0xab,0xcf,0x0e,0xe9,0xa5,0x76,0x7e,0x37,0x9f,0x6f,0x03,0x54,0x82,0x59,0x01,0xbe,0x0b,0x5b,0x49,0xf0,0x36,0x1e,0xf4,0xa7,0xc4,0x29,0x76,0x57,0xf6,0xcd,0x0e,0x71,0xbf,0x64,0x5a,0x4b,0x3c,0x29,0x2c,0x46,0x38,0xe5,0x4c,0xb1,0xb9,0x3a,0x0b,0xd5,0x56,0xd0,0x43,0x36,0x70,0x48,0x5b,0x18,0x24,0x37,0xf9,0x6a,0x88,0xa8,0xc6,0x09,0x45,0x02,0x20,0x32,0x73,0x89,0x55,0x4b,0x13,0x36,0xe0,0xd2,0x9f,0x28,0x33,0x3c,0x23,0x36,0xe2,0x83,0x8f,0xc1,0xae,0x0c,0xbb,0x25,0x1f,0x70},\n\t{0xed,0x6c,0x61,0xe4,0xf8,0xb0,0xa8,0xc3,0x7d,0xa8,0x25,0x9e,0x0e,0x66,0x00,0xf7,0x9c,0xa5,0xbc,0xf4,0x1f,0x06,0xe3,0x61,0xe9,0x0b,0xc4,0xbd,0xbf,0x92,0x0c,0x2e,0x13,0xc1,0xbe,0x7c,0xd9,0xf6,0x18,0x9d,0xe4,0xdb,0xbf,0x74,0xe6,0x06,0x4a,0x84,0xd6,0x60,0x4e,0xac,0x22,0xb5,0xf5,0x20,0x51,0x5e,0x95,0x50,0xc0,0x5b,0x0a,0x72,0x35,0x5a,0x80,0x9b,0x43,0x09,0x3f,0x0c,0xfc,0xab,0x42,0x62,0x37,0x8b,0x4e,0xe8,0x46,0x93,0x22,0x5c,0xf3,0x17,0x14,0x69,0xec,0xf0,0x4e,0x14,0xbb,0x9c,0x9b,0x0e},\n\t{0xad,0x20,0x57,0xfb,0x8f,0xd4,0xba,0xfb,0x0e,0x0d,0xf9,0xdb,0x6b,0x91,0x81,0xee,0xbf,0x43,0x55,0x63,0x52,0x31,0x81,0xd4,0xd8,0x7b,0x33,0x3f,0xeb,0x04,0x11,0x22,0xee,0xbe,0xb1,0x5d,0xd5,0x9b,0xee,0x8d,0xb9,0x3f,0x72,0x0a,0x37,0xab,0xc3,0xc9,0x91,0xd7,0x68,0x1c,0xbf,0xf1,0xa8,0x44,0xde,0x3c,0xfd,0x1c,0x19,0x44,0x6d,0x36,0x14,0x8c,0xbc,0xf2,0x43,0x17,0x3c,0x9e,0x3b,0x6c,0x85,0xb5,0xfc,0x26,0xda,0x2e,0x97,0xfb,0xa7,0x68,0x0e,0x2f,0xb8,0xcc,0x44,0x32,0x59,0xbc,0xe6,0xa4,0x67,0x41},\n\t{0x00,0x27,0xf6,0x76,0x28,0x9d,0x3b,0x64,0xeb,0x68,0x76,0x0e,0x40,0x9d,0x1d,0x5d,0x84,0x06,0xfc,0x21,0x03,0x43,0x4b,0x1b,0x6a,0x24,0x55,0x22,0x7e,0xbb,0x38,0x79,0xee,0x8f,0xce,0xf8,0x65,0x26,0xbe,0xc2,0x2c,0xd6,0x80,0xe8,0x14,0xff,0x67,0xe9,0xee,0x4e,0x36,0x2f,0x7e,0x6e,0x2e,0xf1,0xf6,0xd2,0x7e,0xcb,0x70,0x33,0xb3,0x34,0xcc,0xd6,0x81,0x86,0xee,0x91,0xc5,0xcd,0x53,0xa7,0x85,0xed,0x9c,0x10,0x02,0xce,0x83,0x88,0x80,0x58,0xc1,0x85,0x74,0xed,0xe4,0x65,0xfe,0x2d,0x6e,0xfc,0x76,0x11},\n\t{0x9b,0x61,0x9c,0x5b,0xd0,0x6c,0xaf,0xb4,0x80,0x84,0xa5,0xb2,0xf4,0xc9,0xdf,0x2d,0xc4,0x4d,0xe9,0xeb,0x02,0xa5,0x4f,0x3d,0x34,0x5f,0x7d,0x67,0x4c,0x3a,0xfc,0x08,0xb8,0x0e,0x77,0x49,0x89,0xe2,0x90,0xdb,0xa3,0x40,0xf4,0xac,0x2a,0xcc,0xfb,0x98,0x9b,0x87,0xd7,0xde,0xfe,0x4f,0x35,0x21,0xb6,0x06,0x69,0xf2,0x54,0x3e,0x6a,0x1f,0xea,0x34,0x07,0xd3,0x99,0xc1,0xa4,0x60,0xd6,0x5c,0x16,0x31,0xb6,0x85,0xc0,0x40,0x95,0x82,0x59,0xf7,0x23,0x3e,0x33,0xe2,0xd1,0x00,0xb9,0x16,0x01,0xad,0x2f,0x4f},\n\t{0x54,0x4e,0xae,0x94,0x41,0xb2,0xbe,0x44,0x6c,0xef,0x57,0x18,0x51,0x1c,0x54,0x5f,0x98,0x04,0x8d,0x36,0x2d,0x6b,0x1e,0xa6,0xab,0xf7,0x2e,0x97,0xa4,0x84,0x54,0x44,0x38,0xb6,0x3b,0xb7,0x1d,0xd9,0x2c,0x96,0x08,0x9c,0x12,0xfc,0xaa,0x77,0x05,0xe6,0x89,0x16,0xb6,0xf3,0x39,0x9b,0x61,0x6f,0x81,0xee,0x44,0x29,0x5f,0x99,0x51,0x34,0x7c,0x7d,0xea,0x9f,0xd0,0xfc,0x52,0x91,0xf6,0x5c,0x93,0xb0,0x94,0x6c,0x81,0x4a,0x40,0x5c,0x28,0x47,0xaa,0x9a,0x8e,0x25,0xb7,0x93,0x28,0x04,0xa6,0x9c,0xb8,0x10},\n\t{0x9c,0x28,0x18,0x97,0x49,0x47,0x59,0x3d,0x26,0x3f,0x53,0x24,0xc5,0xf8,0xeb,0x12,0x15,0xef,0xc3,0x14,0xcb,0xbf,0x62,0x02,0x8e,0x51,0xb7,0x77,0xd5,0x78,0xb8,0x20,0x6e,0xf0,0x45,0x5a,0xbe,0x41,0x39,0x75,0x65,0x5f,0x9c,0x6d,0xed,0xae,0x7c,0xd0,0xb6,0x51,0xff,0x72,0x9c,0x6b,0x77,0x11,0xa9,0x4d,0x0d,0xef,0xd9,0xd1,0xd2,0x17,0x6a,0x3e,0x3f,0x07,0x18,0xaf,0xf2,0x27,0x69,0x10,0x52,0xd7,0x19,0xe5,0x3f,0xfd,0x22,0x00,0xa6,0x3c,0x2c,0xb7,0xe3,0x22,0xa7,0xc6,0x65,0xcc,0x63,0x4f,0x21,0x72},\n\t{0x93,0xa6,0x07,0x53,0x40,0x7f,0xe3,0xb4,0x95,0x67,0x33,0x2f,0xd7,0x14,0xa7,0xab,0x99,0x10,0x76,0x73,0xa7,0xd0,0xfb,0xd6,0xc9,0xcb,0x71,0x81,0xc5,0x48,0xdf,0x5f,0xc9,0x29,0x3b,0xf4,0xb9,0xb7,0x9d,0x1d,0x75,0x8f,0x51,0x4f,0x4a,0x82,0x05,0xd6,0xc4,0x9d,0x2f,0x31,0xbd,0x72,0xc0,0xf2,0xb0,0x45,0x15,0x5a,0x85,0xac,0x24,0x1f,0xaa,0x05,0x95,0x8e,0x32,0x08,0xd6,0x24,0xee,0x20,0x14,0x0c,0xd1,0xc1,0x48,0x47,0xa2,0x25,0xfb,0x06,0x5c,0xe4,0xff,0xc7,0xe6,0x95,0xe3,0x2a,0x9e,0x73,0xba,0x00},\n\t{0xd6,0x90,0x87,0x5c,0xde,0x98,0x2e,0x59,0xdf,0xa2,0xc2,0x45,0xd3,0xb7,0xbf,0xe5,0x22,0x99,0xb4,0xf9,0x60,0x3b,0x5a,0x11,0xf3,0x78,0xad,0x67,0x3e,0x3a,0x28,0x03,0x26,0xbb,0x88,0xea,0xf5,0x26,0x44,0xae,0xfb,0x3b,0x97,0x84,0xd9,0x79,0x06,0x36,0x50,0x4e,0x69,0x26,0x0c,0x03,0x9f,0x5c,0x26,0xd2,0x18,0xd5,0xe7,0x7d,0x29,0x72,0x39,0xb9,0x0c,0xbe,0xc7,0x1d,0x24,0x48,0x80,0x30,0x63,0x8b,0x4d,0x9b,0xf1,0x32,0x08,0x93,0x28,0x02,0x0d,0xc9,0xdf,0xd3,0x45,0x19,0x27,0x46,0x68,0x29,0xe1,0x05},\n\t{0x5a,0x49,0x9c,0x2d,0xb3,0xee,0x82,0xba,0x7c,0xb9,0x2b,0xf1,0xfc,0xc8,0xef,0xce,0xe0,0xd1,0xb5,0x93,0xae,0xab,0x2d,0xb0,0x9b,0x8d,0x69,0x13,0x9c,0x0c,0xc0,0x39,0x50,0x45,0x2c,0x24,0xc8,0xbb,0xbf,0xad,0xd9,0x81,0x30,0xd0,0xec,0x0c,0xc8,0xbc,0x92,0xdf,0xc8,0xf5,0xa6,0x66,0x35,0x84,0x4c,0xce,0x58,0x82,0xd3,0x25,0xcf,0x78,0x68,0x9d,0x48,0x31,0x8e,0x6b,0xae,0x15,0x87,0xf0,0x2b,0x9c,0xab,0x1c,0x85,0xaa,0x05,0xfa,0x4e,0xf0,0x97,0x5a,0xa7,0xc9,0x32,0xf8,0x3f,0x6b,0x07,0x52,0x6b,0x00},\n\t{0x1c,0x78,0x95,0x9d,0xe1,0xcf,0xe0,0x29,0xe2,0x10,0x63,0x96,0x18,0xdf,0x81,0xb6,0x39,0x6b,0x51,0x70,0xd3,0x39,0xdf,0x57,0x22,0x61,0xc7,0x3b,0x44,0xe3,0x57,0x4d,0x2d,0x08,0xce,0xb9,0x16,0x7e,0xcb,0xf5,0x29,0xbc,0x7a,0x41,0x4c,0xf1,0x07,0x34,0xab,0xa7,0xf4,0x2b,0xce,0x6b,0xb3,0xd4,0xce,0x75,0x9f,0x1a,0x56,0xe9,0xe2,0x7d,0xcb,0x5e,0xa5,0xb6,0xf4,0xd4,0x70,0xde,0x99,0xdb,0x85,0x5d,0x7f,0x52,0x01,0x48,0x81,0x9a,0xee,0xd3,0x40,0xc4,0xc9,0xdb,0xed,0x29,0x60,0x1a,0xaf,0x90,0x2a,0x6b},\n\t{0x97,0x1e,0xe6,0x9a,0xfc,0xf4,0x23,0x69,0xd1,0x5f,0x3f,0xe0,0x1d,0x28,0x35,0x57,0x2d,0xd1,0xed,0xe6,0x43,0xae,0x64,0xa7,0x4a,0x3e,0x2d,0xd1,0xe9,0xf4,0xd8,0x5f,0x0a,0xd8,0xb2,0x5b,0x24,0xf3,0xeb,0x77,0x9b,0x07,0xb9,0x2f,0x47,0x1b,0x30,0xd8,0x33,0x73,0xee,0x4c,0xf2,0xe6,0x47,0xc6,0x09,0x21,0x6c,0x27,0xc8,0x12,0x58,0x46,0xd9,0x62,0x10,0x2a,0xb2,0xbe,0x43,0x4d,0x16,0xdc,0x31,0x38,0x75,0xfb,0x65,0x70,0xd7,0x68,0x29,0xde,0x7b,0x4a,0x0d,0x18,0x90,0x67,0xb1,0x1c,0x2b,0x2c,0xb3,0x05},\n\t{0xfd,0xa8,0x4d,0xd2,0xcc,0x5e,0xc0,0xc8,0x83,0xef,0xdf,0x05,0xac,0x1a,0xcf,0xa1,0x61,0xcd,0xf9,0x7d,0xf2,0xef,0xbe,0xdb,0x99,0x1e,0x47,0x7b,0xa3,0x56,0x55,0x3b,0x95,0x81,0xd5,0x7a,0x2c,0xa4,0xfc,0xf7,0xcc,0xf3,0x33,0x43,0x6e,0x28,0x14,0x32,0x9d,0x97,0x0b,0x34,0x0d,0x9d,0xc2,0xb6,0xe1,0x07,0x73,0x56,0x48,0x1a,0x77,0x31,0x82,0xd4,0x4d,0xe1,0x24,0xc5,0xb0,0x32,0xb6,0xa4,0x2b,0x1a,0x54,0x51,0xb3,0xed,0xf3,0x5a,0x2b,0x28,0x48,0x60,0xd1,0xa3,0xeb,0x36,0x73,0x7a,0xd2,0x79,0xc0,0x4f},\n\t{0x7f,0x2f,0xbf,0x89,0xb0,0x38,0xc9,0x51,0xa7,0xe9,0xdf,0x02,0x65,0xbd,0x97,0x24,0x53,0xe4,0x80,0x78,0x9c,0xc0,0xff,0xff,0x92,0x8e,0xf9,0xca,0xce,0x67,0x45,0x12,0x0d,0xc5,0x86,0x0c,0x44,0x8b,0x34,0xdc,0x51,0xe6,0x94,0xcc,0xc9,0xcb,0x37,0x13,0xb9,0x3c,0x3e,0x64,0x4d,0xf7,0x22,0x64,0x08,0xcd,0xe3,0xba,0xc2,0x70,0x11,0x24,0xb4,0x73,0xc4,0x0a,0x86,0xab,0xf9,0x3f,0x35,0xe4,0x13,0x01,0xee,0x1d,0x91,0xf0,0xaf,0xc4,0xc6,0xeb,0x60,0x50,0xe7,0x4a,0x0d,0x00,0x87,0x6c,0x96,0x12,0x86,0x3f},\n\t{0xde,0x0d,0x2a,0x78,0xc9,0x0c,0x9a,0x55,0x85,0x83,0x71,0xea,0xb2,0xcd,0x1d,0x55,0x8c,0x23,0xef,0x31,0x5b,0x86,0x62,0x7f,0x3d,0x61,0x73,0x79,0x76,0xa7,0x4a,0x50,0x13,0x8d,0x04,0x36,0xfa,0xfc,0x18,0x9c,0xdd,0x9d,0x89,0x73,0xb3,0x9d,0x15,0x29,0xaa,0xd0,0x92,0x9f,0x0b,0x35,0x9f,0xdc,0xd4,0x19,0x8a,0x87,0xee,0x7e,0xf5,0x26,0xb1,0xef,0x87,0x56,0xd5,0x2c,0xab,0x0c,0x7b,0xf1,0x7a,0x24,0x62,0xd1,0x80,0x51,0x67,0x24,0x5a,0x4f,0x34,0x5a,0xc1,0x85,0x69,0x30,0xba,0x9d,0x3d,0x94,0x41,0x40},\n\t{0x96,0xcc,0xeb,0x43,0xba,0xee,0xc0,0xc3,0xaf,0x9c,0xea,0x26,0x9c,0x9c,0x74,0x8d,0xc6,0xcc,0x77,0x1c,0xee,0x95,0xfa,0xd9,0x0f,0x34,0x84,0x76,0xd9,0xa1,0x20,0x14,0xdd,0xaa,0x6c,0xa2,0x43,0x77,0x21,0x4b,0xce,0xb7,0x8a,0x64,0x24,0xb4,0xa6,0x47,0xe3,0xc9,0xfb,0x03,0x7a,0x4f,0x1d,0xcb,0x19,0xd0,0x00,0x98,0x42,0x31,0xd9,0x12,0x4f,0x59,0x37,0xd3,0x99,0x77,0xc6,0x00,0x7b,0xa4,0x3a,0xb2,0x40,0x51,0x3c,0x5e,0x95,0xf3,0x5f,0xe3,0x54,0x28,0x18,0x44,0x12,0xa0,0x59,0x43,0x31,0x92,0x4f,0x1b},\n\t{0x51,0x09,0x15,0x89,0x9d,0x10,0x5c,0x3e,0x6a,0x69,0xe9,0x2d,0x91,0xfa,0xce,0x39,0x20,0x30,0x5f,0x97,0x3f,0xe4,0xea,0x20,0xae,0x2d,0x13,0x7f,0x2a,0x57,0x9b,0x23,0xb1,0x66,0x98,0xa4,0x30,0x30,0xcf,0x33,0x59,0x48,0x5f,0x21,0xd2,0x73,0x1f,0x25,0xf6,0xf4,0xde,0x51,0x40,0xaa,0x82,0xab,0xf6,0x23,0x9a,0x6f,0xd5,0x91,0xf1,0x5f,0x68,0x90,0x2d,0xac,0x33,0xd4,0x9e,0x81,0x23,0x85,0xc9,0x5f,0x79,0xab,0x83,0x28,0x3d,0xeb,0x93,0x55,0x80,0x72,0x45,0xef,0xcb,0x36,0x8f,0x75,0x6a,0x52,0x0c,0x02},\n\t{0xbc,0xdb,0xd8,0x9e,0xf8,0x34,0x98,0x77,0x6c,0xa4,0x7c,0xdc,0xf9,0xaa,0xf2,0xc8,0x74,0xb0,0xe1,0xa3,0xdc,0x4c,0x52,0xa9,0x77,0x38,0x31,0x15,0x46,0xcc,0xaa,0x02,0x89,0xcc,0x42,0xf0,0x59,0xef,0x31,0xe9,0xb6,0x4b,0x12,0x8e,0x9d,0x9c,0x58,0x2c,0x97,0x59,0xc7,0xae,0x8a,0xe1,0xc8,0xad,0x0c,0xc5,0x02,0x56,0x0a,0xfe,0x2c,0x45,0xdf,0x77,0x78,0x64,0xa0,0xf7,0xa0,0x86,0x9f,0x7c,0x60,0x0e,0x27,0x64,0xc4,0xbb,0xc9,0x11,0xfb,0xf1,0x25,0xea,0x17,0xab,0x7b,0x87,0x4b,0x30,0x7b,0x7d,0xfb,0x4c},\n\t{0xfe,0x75,0x9b,0xb8,0x6c,0x3d,0xb4,0x72,0x80,0xdc,0x6a,0x9c,0xd9,0x94,0xc6,0x54,0x9f,0x4c,0xe3,0x3e,0x37,0xaa,0xc3,0xb8,0x64,0x53,0x07,0x39,0x2b,0x62,0xb4,0x14,0x12,0xef,0x89,0x97,0xc2,0x99,0x86,0xe2,0x0d,0x19,0x57,0xdf,0x71,0xcd,0x6e,0x2b,0xd0,0x70,0xc9,0xec,0x57,0xc8,0x43,0xc3,0xc5,0x3a,0x4d,0x43,0xbc,0x4c,0x1d,0x5b,0x26,0x9f,0x0a,0xcc,0x15,0x26,0xfb,0xb6,0xe5,0xcc,0x8d,0xb8,0x2b,0x0e,0x4f,0x3a,0x05,0xa7,0x69,0x33,0x8b,0x49,0x01,0x13,0xd1,0x2d,0x59,0x58,0x12,0xf7,0x98,0x2f},\n\t{0x56,0x9e,0x0f,0xb5,0x4c,0xa7,0x94,0x0c,0x20,0x13,0x8e,0x8e,0xa9,0xf4,0x1f,0x5b,0x67,0x0f,0x30,0x82,0x21,0xcc,0x2a,0x9a,0xf9,0xaa,0x06,0xd8,0x49,0xe2,0x6a,0x3a,0x01,0xa7,0x54,0x4f,0x44,0xae,0x12,0x2e,0xde,0xd7,0xcb,0xa9,0xf0,0x3e,0xfe,0xfc,0xe0,0x5d,0x83,0x75,0x0d,0x89,0xbf,0xce,0x54,0x45,0x61,0xe7,0xe9,0x62,0x80,0x1d,0x5a,0x7c,0x90,0xa9,0x85,0xda,0x7a,0x65,0x62,0x0f,0xb9,0x91,0xb5,0xa8,0x0e,0x1a,0xe9,0xb4,0x34,0xdf,0xfb,0x1d,0x0e,0x8d,0xf3,0x5f,0xf2,0xae,0xe8,0x8c,0x8b,0x29},\n\t{0xb2,0x0c,0xf7,0xef,0x53,0x79,0x92,0x2a,0x76,0x70,0x15,0x79,0x2a,0xc9,0x89,0x4b,0x6a,0xcf,0xa7,0x30,0x7a,0x45,0x18,0x94,0x85,0xe4,0x5c,0x4d,0x40,0xa8,0xb8,0x34,0xde,0x65,0x21,0x0a,0xea,0x72,0x7a,0x83,0xf6,0x79,0xcf,0x0b,0xb4,0x07,0xab,0x3f,0x70,0xae,0x38,0x77,0xc7,0x36,0x16,0x52,0xdc,0xd7,0xa7,0x03,0x18,0x27,0xa6,0x6b,0x35,0x33,0x69,0x83,0xb5,0xec,0x6e,0xc2,0xfd,0xfe,0xb5,0x63,0xdf,0x13,0xa8,0xd5,0x73,0x25,0xb2,0xa4,0x9a,0xaa,0x93,0xa2,0x6a,0x1c,0x5e,0x46,0xdd,0x2b,0xd6,0x71},\n\t{0x80,0xdf,0x78,0xd3,0x28,0xcc,0x33,0x65,0xb4,0xa4,0x0f,0x0a,0x79,0x43,0xdb,0xf6,0x5a,0xda,0x01,0xf7,0xf9,0x5f,0x64,0xe3,0xa4,0x2b,0x17,0xf3,0x17,0xf3,0xd5,0x74,0xf5,0x5e,0xf7,0xb1,0xda,0xb5,0x2d,0xcd,0xf5,0x65,0xb0,0x16,0xcf,0x95,0x7f,0xd7,0x85,0xf0,0x49,0x3f,0xea,0x1f,0x57,0x14,0x3d,0x2b,0x2b,0x26,0x21,0x36,0x33,0x1c,0x81,0xca,0xd9,0x67,0x54,0xe5,0x6f,0xa8,0x37,0x8c,0x29,0x2b,0x75,0x7c,0x8b,0x39,0x3b,0x62,0xac,0xe3,0x92,0x08,0x6d,0xda,0x8c,0xd9,0xe9,0x47,0x45,0xcc,0xeb,0x4a},\n\t{0xc9,0x01,0x6d,0x27,0x1b,0x07,0xf0,0x12,0x70,0x8c,0xc4,0x86,0xc5,0xba,0xb8,0xe7,0xa9,0xfb,0xd6,0x71,0x9b,0x12,0x08,0x53,0x92,0xb7,0x3d,0x5a,0xf9,0xfb,0x88,0x5d,0x10,0xb6,0x54,0x73,0x9e,0x8d,0x40,0x0b,0x6e,0x5b,0xa8,0x5b,0x53,0x32,0x6b,0x80,0x07,0xa2,0x58,0x4a,0x03,0x3a,0xe6,0xdb,0x2c,0xdf,0xa1,0xc9,0xdd,0xd9,0x3b,0x17,0xdf,0x72,0x58,0xfe,0x1e,0x0f,0x50,0x2b,0xc1,0x18,0x39,0xd4,0x2e,0x58,0xd6,0x58,0xe0,0x3a,0x67,0xc9,0x8e,0x27,0xed,0xe6,0x19,0xa3,0x9e,0xb1,0x13,0xcd,0xe1,0x06},\n\t{0x23,0x6f,0x16,0x6f,0x51,0xad,0xd0,0x40,0xbe,0x6a,0xab,0x1f,0x93,0x32,0x8e,0x11,0x8e,0x08,0x4d,0xa0,0x14,0x5e,0xe3,0x3f,0x66,0x62,0xe1,0x26,0x35,0x60,0x80,0x30,0x53,0x03,0x5b,0x9e,0x62,0xaf,0x2b,0x47,0x47,0x04,0x8d,0x27,0x90,0x0b,0xaa,0x3b,0x27,0xbf,0x43,0x96,0x46,0x5f,0x78,0x0c,0x13,0x7b,0x83,0x8d,0x1a,0x6a,0x3a,0x7f,0x0b,0x80,0x3d,0x5d,0x39,0x44,0xe6,0xf7,0xf6,0xed,0x01,0xc9,0x55,0xd5,0xa8,0x95,0x39,0x63,0x2c,0x59,0x30,0x78,0xcd,0x68,0x7e,0x30,0x51,0x2e,0xed,0xfd,0xd0,0x30},\n\t{0xb3,0x33,0x12,0xf2,0x1a,0x4d,0x59,0xe0,0x9c,0x4d,0xcc,0xf0,0x8e,0xe7,0xdb,0x1b,0x77,0x9a,0x49,0x8f,0x7f,0x18,0x65,0x69,0x68,0x98,0x09,0x2c,0x20,0x14,0x92,0x0a,0x50,0x47,0xb8,0x68,0x1e,0x97,0xb4,0x9c,0xcf,0xbb,0x64,0x66,0x29,0x72,0x95,0xa0,0x2b,0x41,0xfa,0x72,0x26,0xe7,0x8d,0x5c,0xd9,0x89,0xc5,0x51,0x43,0x08,0x15,0x46,0x2e,0xa0,0xb9,0xae,0xc0,0x19,0x90,0xbc,0xae,0x4c,0x03,0x16,0x0d,0x11,0xc7,0x55,0xec,0x32,0x99,0x65,0x01,0xf5,0x6d,0x0e,0xfe,0x5d,0xca,0x95,0x28,0x0d,0xca,0x3b},\n\t{0xa4,0x62,0x5d,0x3c,0xbc,0x31,0xf0,0x40,0x60,0x7a,0xf0,0xcf,0x3e,0x8b,0xfc,0x19,0x45,0xb5,0x0f,0x13,0xa2,0x3d,0x18,0x98,0xcd,0x13,0x8f,0xae,0xdd,0xde,0x31,0x56,0xbf,0x01,0xcc,0x9e,0xb6,0x8e,0x68,0x9c,0x6f,0x89,0x44,0xa6,0xad,0x83,0xbc,0xf0,0xe2,0x9f,0x7a,0x5f,0x5f,0x95,0x2d,0xca,0x41,0x82,0xf2,0x8d,0x03,0xb4,0xa8,0x4e,0x02,0xd2,0xca,0xf1,0x0a,0x46,0xed,0x2a,0x83,0xee,0x8c,0xa4,0x05,0x53,0x30,0x46,0x5f,0x1a,0xf1,0x49,0x45,0x77,0x21,0x91,0x63,0xa4,0x2c,0x54,0x30,0x09,0xce,0x24},\n\t{0x06,0xc1,0x06,0xfd,0xf5,0x90,0xe8,0x1f,0xf2,0x10,0x88,0x5d,0x35,0x68,0xc4,0xb5,0x3e,0xaf,0x8c,0x6e,0xfe,0x08,0x78,0x82,0x4b,0xd7,0x06,0x8a,0xc2,0xe3,0xd4,0x41,0x85,0x0b,0xf3,0xfd,0x55,0xa1,0xcf,0x3f,0xa4,0x2e,0x37,0x36,0x8e,0x16,0xf7,0xd2,0x44,0xf8,0x92,0x64,0xde,0x64,0xe0,0xb2,0x80,0x42,0x4f,0x32,0xa7,0x28,0x99,0x54,0x2e,0x1a,0xee,0x63,0xa7,0x32,0x6e,0xf2,0xea,0xfd,0x5f,0xd2,0xb7,0xe4,0x91,0xae,0x69,0x4d,0x7f,0xd1,0x3b,0xd3,0x3b,0xbc,0x6a,0xff,0xdc,0xc0,0xde,0x66,0x1b,0x49},\n\t{0xa7,0x32,0xea,0xc7,0x3d,0xb1,0xf5,0x98,0x98,0xdb,0x16,0x7e,0xcc,0xf8,0xd5,0xe3,0x47,0xd9,0xf8,0xcb,0x52,0xbf,0x0a,0xac,0xac,0xe4,0x5e,0xc8,0xd0,0x38,0xf3,0x08,0xa1,0x64,0xda,0xd0,0x8e,0x4a,0xf0,0x75,0x4b,0x28,0xe2,0x67,0xaf,0x2c,0x22,0xed,0xa4,0x7b,0x7b,0x1f,0x79,0xa3,0x34,0x82,0x67,0x8b,0x01,0xb7,0xb0,0xb8,0xf6,0x4c,0xbd,0x73,0x1a,0x99,0x21,0xa8,0x83,0xc3,0x7a,0x0c,0x32,0xdf,0x01,0xbc,0x27,0xab,0x63,0x70,0x77,0x84,0x1b,0x33,0x3d,0xc1,0x99,0x8a,0x07,0xeb,0x82,0x4a,0x0d,0x53},\n\t{0x25,0x48,0xf9,0xe1,0x30,0x36,0x4c,0x00,0x5a,0x53,0xab,0x8c,0x26,0x78,0x2d,0x7e,0x8b,0xff,0x84,0xcc,0x23,0x23,0x48,0xc7,0xb9,0x70,0x17,0x10,0x3f,0x75,0xea,0x65,0x9e,0xbf,0x9a,0x6c,0x45,0x73,0x69,0x6d,0x80,0xa8,0x00,0x49,0xfc,0xb2,0x7f,0x25,0x50,0xb8,0xcf,0xc8,0x12,0xf4,0xac,0x2b,0x5b,0xbd,0xbf,0x0c,0xe0,0xe7,0xb3,0x0d,0x63,0x63,0x09,0xe2,0x3e,0xfc,0x66,0x3d,0x6b,0xcb,0xb5,0x61,0x7f,0x2c,0xd6,0x81,0x1a,0x3b,0x44,0x13,0x42,0x04,0xbe,0x0f,0xdb,0xa1,0xe1,0x21,0x19,0xec,0xa4,0x02},\n\t{0xa2,0xb8,0x24,0x3b,0x9a,0x25,0xe6,0x5c,0xb8,0xa0,0xaf,0x45,0xcc,0x7a,0x57,0xb8,0x37,0x70,0xa0,0x8b,0xe8,0xe6,0xcb,0xcc,0xbf,0x09,0x78,0x12,0x51,0x3c,0x14,0x3d,0x5f,0x79,0xcf,0xf1,0x62,0x61,0xc8,0xf5,0xf2,0x57,0xee,0x26,0x19,0x86,0x8c,0x11,0x78,0x35,0x06,0x1c,0x85,0x24,0x21,0x17,0xcf,0x7f,0x06,0xec,0x5d,0x2b,0xd1,0x36,0x57,0x45,0x15,0x79,0x91,0x27,0x6d,0x12,0x0a,0x3a,0x78,0xfc,0x5c,0x8f,0xe4,0xd5,0xac,0x9b,0x17,0xdf,0xe8,0xb6,0xbd,0x36,0x59,0x28,0xa8,0x5b,0x88,0x17,0xf5,0x2e},\n\t{0xdc,0xae,0x58,0x8c,0x4e,0x97,0x37,0x46,0xa4,0x41,0xf0,0xab,0xfb,0x22,0xef,0xb9,0x8a,0x71,0x80,0xe9,0x56,0xd9,0x85,0xe1,0xa6,0xa8,0x43,0xb1,0xfa,0x78,0x1b,0x2f,0x51,0x2f,0x5b,0x30,0xfb,0xbf,0xee,0x96,0xb8,0x96,0x95,0x88,0xad,0x38,0xf9,0xd3,0x25,0xdd,0xd5,0x46,0xc7,0x2d,0xf5,0xf0,0x95,0x00,0x3a,0xbb,0x90,0x82,0x96,0x57,0x01,0xe1,0x20,0x0a,0x43,0xb8,0x1a,0xf7,0x47,0xec,0xf0,0x24,0x8d,0x65,0x93,0xf3,0xd1,0xee,0xe2,0x6e,0xa8,0x09,0x75,0xcf,0xe1,0xa3,0x2a,0xdc,0x35,0x3e,0xc4,0x7d},\n\t{0xc3,0xd9,0x7d,0x88,0x65,0x66,0x96,0x85,0x55,0x53,0xb0,0x4b,0x31,0x9b,0x0f,0xc9,0xb1,0x79,0x20,0xef,0xf8,0x8d,0xe0,0xc6,0x2f,0xc1,0x8c,0x75,0x16,0x20,0xf7,0x7e,0x18,0x97,0x3e,0x27,0x5c,0x2a,0x78,0x5a,0x94,0xfd,0x4e,0x5e,0x99,0xc6,0x76,0x35,0x3e,0x7d,0x23,0x1f,0x05,0xd8,0x2e,0x0f,0x99,0x0a,0xd5,0x82,0x1d,0xb8,0x4f,0x04,0xd9,0xe3,0x07,0xa9,0xc5,0x18,0xdf,0xc1,0x59,0x63,0x4c,0xce,0x1d,0x37,0xb3,0x57,0x49,0xbb,0x01,0xb2,0x34,0x45,0x70,0xca,0x2e,0xdd,0x30,0x9c,0x3f,0x82,0x79,0x7f},\n\t{0xe8,0x13,0xb5,0xa3,0x39,0xd2,0x34,0x83,0xd8,0xa8,0x1f,0xb9,0xd4,0x70,0x36,0xc1,0x33,0xbd,0x90,0xf5,0x36,0x41,0xb5,0x12,0xb4,0xd9,0x84,0xd7,0x73,0x03,0x4e,0x0a,0xba,0x87,0xf5,0x68,0xf0,0x1f,0x9c,0x6a,0xde,0xc8,0x50,0x00,0x4e,0x89,0x27,0x08,0xe7,0x5b,0xed,0x7d,0x55,0x99,0xbf,0x3c,0xf0,0xd6,0x06,0x1c,0x43,0xb0,0xa9,0x64,0x19,0x29,0x7d,0x5b,0xa1,0xd6,0xb3,0x2e,0x35,0x82,0x3a,0xd5,0xa0,0xf6,0xb4,0xb0,0x47,0x5d,0xa4,0x89,0x43,0xce,0x56,0x71,0x6c,0x34,0x18,0xce,0x0a,0x7d,0x1a,0x07},\n\t{0x0b,0xba,0x87,0xc8,0xaa,0x2d,0x07,0xd3,0xee,0x62,0xa5,0xbf,0x05,0x29,0x26,0x01,0x8b,0x76,0xef,0xc0,0x02,0x30,0x54,0xcf,0x9c,0x7e,0xea,0x46,0x71,0xcc,0x3b,0x2c,0x31,0x44,0xe1,0x20,0x52,0x35,0x0c,0xcc,0x41,0x51,0xb1,0x09,0x07,0x95,0x65,0x0d,0x36,0x5f,0x9d,0x20,0x1b,0x62,0xf5,0x9a,0xd3,0x55,0x77,0x61,0xf7,0xbc,0x69,0x7c,0x5f,0x29,0xe8,0x04,0xeb,0xd7,0xf0,0x07,0x7d,0xf3,0x50,0x2f,0x25,0x18,0xdb,0x10,0xd7,0x98,0x17,0x17,0xa3,0xa9,0x51,0xe9,0x1d,0xa5,0xac,0x22,0x73,0x9a,0x5a,0x6f},\n\t{0xc5,0xc6,0x41,0x2f,0x0c,0x00,0xa1,0x8b,0x9b,0xfb,0xfe,0x0c,0xc1,0x79,0x9f,0xc4,0x9f,0x1c,0xc5,0x3c,0x70,0x47,0xfa,0x4e,0xca,0xaf,0x47,0xe1,0xa2,0x21,0x4e,0x49,0xbe,0x44,0xd9,0xa3,0xeb,0xd4,0x29,0xe7,0x9e,0xaf,0x78,0x80,0x40,0x09,0x9e,0x8d,0x03,0x9c,0x86,0x47,0x7a,0x56,0x25,0x45,0x24,0x3b,0x8d,0xee,0x80,0x96,0xab,0x02,0x9a,0x0d,0xe5,0xdd,0x85,0x8a,0xa4,0xef,0x49,0xa2,0xb9,0x0f,0x4e,0x22,0x9a,0x21,0xd9,0xf6,0x1e,0xd9,0x1d,0x1f,0x09,0xfa,0x34,0xbb,0x46,0xea,0xcb,0x76,0x5d,0x6b},\n\t{0x94,0xd9,0x0c,0xec,0x6c,0x55,0x57,0x88,0xba,0x1d,0xd0,0x5c,0x6f,0xdc,0x72,0x64,0x77,0xb4,0x42,0x8f,0x14,0x69,0x01,0xaf,0x54,0x73,0x27,0x85,0xf6,0x33,0xe3,0x0a,0x22,0x25,0x78,0x1e,0x17,0x41,0xf9,0xe0,0xd3,0x36,0x69,0x03,0x74,0xae,0xe6,0xf1,0x46,0xc7,0xfc,0xd0,0xa2,0x3e,0x8b,0x40,0x3e,0x31,0xdd,0x03,0x9c,0x86,0xfb,0x16,0x62,0x09,0xb6,0x33,0x97,0x19,0x8e,0x28,0x33,0xe1,0xab,0xd8,0xb4,0x72,0xfc,0x24,0x3e,0xd0,0x91,0x09,0xed,0xf7,0x11,0x48,0x75,0xd0,0x70,0x8f,0x8b,0xe3,0x81,0x3f},\n\t{0xfe,0xaf,0xd9,0x7e,0xcc,0x0f,0x91,0x7f,0x4b,0x87,0x65,0x24,0xa1,0xb8,0x5c,0x54,0x04,0x47,0x0c,0x4b,0xd2,0x7e,0x39,0xa8,0x93,0x09,0xf5,0x04,0xc1,0x0f,0x51,0x50,0x24,0xc8,0x17,0x5f,0x35,0x7f,0xdb,0x0a,0xa4,0x99,0x42,0xd7,0xc3,0x23,0xb9,0x74,0xf7,0xea,0xf8,0xcb,0x8b,0x3e,0x7c,0xd5,0x3d,0xdc,0xde,0x4c,0xd3,0xe2,0xd3,0x0a,0x9d,0x24,0x6e,0x33,0xc5,0x0f,0x0c,0x6f,0xd9,0xcf,0x31,0xc3,0x19,0xde,0x5e,0x74,0x1c,0xfe,0xee,0x09,0x00,0xfd,0xd6,0xf2,0xbe,0x1e,0xfa,0xf0,0x8b,0x15,0x7c,0x12},\n\t{0xa2,0x79,0x98,0x2e,0x42,0x7c,0x19,0xf6,0x47,0x36,0xca,0x52,0xd4,0xdd,0x4a,0xa4,0xcb,0xac,0x4e,0x4b,0xc1,0x3f,0x41,0x9b,0x68,0x4f,0xef,0x07,0x7d,0xf8,0x4e,0x35,0x74,0xb9,0x51,0xae,0xc4,0x8f,0xa2,0xde,0x96,0xfe,0x4d,0x74,0xd3,0x73,0x99,0x1d,0xa8,0x48,0x38,0x87,0x0b,0x68,0x40,0x62,0x95,0xdf,0x67,0xd1,0x79,0x24,0xd8,0x4e,0x75,0xd9,0xc5,0x60,0x22,0xb5,0xe3,0xfe,0xb8,0xb0,0x41,0xeb,0xfc,0x2e,0x35,0x50,0x3c,0x65,0xf6,0xa9,0x30,0xac,0x08,0x88,0x6d,0x23,0x39,0x05,0xd2,0x92,0x2d,0x30},\n\t{0x3d,0x28,0xa4,0xbc,0xa2,0xc1,0x13,0x78,0xd9,0x3d,0x86,0xa1,0x91,0xf0,0x62,0xed,0x86,0xfa,0x68,0xc2,0xb8,0xbc,0xc7,0xae,0x4c,0xae,0x1c,0x6f,0xb7,0xd3,0xe5,0x10,0x77,0xf1,0xe0,0xe4,0xb6,0x6f,0xbc,0x2d,0x93,0x6a,0xbd,0xa4,0x29,0xbf,0xe1,0x04,0xe8,0xf6,0x7a,0x78,0xd4,0x66,0x19,0x5e,0x60,0xd0,0x26,0xb4,0x5e,0x5f,0xdc,0x0e,0x67,0x8e,0xda,0x53,0xd6,0xbf,0x53,0x54,0x41,0xf6,0xa9,0x24,0xec,0x1e,0xdc,0xe9,0x23,0x8a,0x57,0x03,0x3b,0x26,0x87,0xbf,0x72,0xba,0x1c,0x36,0x51,0x6c,0xb4,0x45},\n\t{0xa1,0x7f,0x4f,0x31,0xbf,0x2a,0x40,0xa9,0x50,0xf4,0x8c,0x8e,0xdc,0xf1,0x57,0xe2,0x84,0xbe,0xa8,0x23,0x4b,0xd5,0xbb,0x1d,0x3b,0x71,0xcb,0x6d,0xa3,0xbf,0x77,0x21,0xe4,0xe3,0x7f,0x8a,0xdd,0x4d,0x9d,0xce,0x30,0x0e,0x62,0x76,0x56,0x64,0x13,0xab,0x58,0x99,0x0e,0xb3,0x7b,0x4f,0x59,0x4b,0xdf,0x29,0x12,0x32,0xef,0x0a,0x1c,0x5c,0x8f,0xdb,0x79,0xfa,0xbc,0x1b,0x08,0x37,0xb3,0x59,0x5f,0xc2,0x1e,0x81,0x48,0x60,0x87,0x24,0x83,0x9c,0x65,0x76,0x7a,0x08,0xbb,0xb5,0x8a,0x7d,0x38,0x19,0xe6,0x4a},\n\t{0x2e,0xa3,0x44,0x53,0xaa,0xf6,0xdb,0x8d,0x78,0x40,0x1b,0xb4,0xb4,0xea,0x88,0x7d,0x60,0x0d,0x13,0x4a,0x97,0xeb,0xb0,0x5e,0x03,0x3e,0xbf,0x17,0x1b,0xd9,0x00,0x1a,0x83,0xfb,0x5b,0x98,0x44,0x7e,0x11,0x61,0x36,0x31,0x96,0x71,0x2a,0x46,0xe0,0xfc,0x4b,0x90,0x25,0xd4,0x48,0x34,0xac,0x83,0x64,0x3d,0xa4,0x5b,0xbe,0x5a,0x68,0x75,0xb2,0xf2,0x61,0xeb,0x33,0x09,0x96,0x6e,0x52,0x49,0xff,0xc9,0xa8,0x0f,0x3d,0x54,0x69,0x65,0xf6,0x7a,0x10,0x75,0x72,0xdf,0xaa,0xe6,0xb0,0x23,0xb6,0x29,0x55,0x13},\n\t{0x18,0xd5,0xd1,0xad,0xd7,0xdb,0xf0,0x18,0x11,0x1f,0xc1,0xcf,0x88,0x78,0x9f,0x97,0x9b,0x75,0x14,0x71,0xf0,0xe1,0x32,0x87,0x01,0x3a,0xca,0x65,0x1a,0xb8,0xb5,0x79,0xfe,0x83,0x2e,0xe2,0xbc,0x16,0xc7,0xf5,0xc1,0x85,0x09,0xe8,0x19,0xeb,0x2b,0xb4,0xae,0x4a,0x25,0x14,0x37,0xa6,0x9d,0xec,0x13,0xa6,0x90,0x15,0x05,0xea,0x72,0x59,0x11,0x78,0x8f,0xdc,0x20,0xac,0xd4,0x0f,0xa8,0x4f,0x4d,0xac,0x94,0xd2,0x9a,0x9a,0x34,0x04,0x36,0xb3,0x64,0x2d,0x1b,0xc0,0xdb,0x3b,0x5f,0x90,0x95,0x9c,0x7e,0x4f},\n\t{0x2e,0x30,0x81,0x57,0xbc,0x4b,0x67,0x62,0x0f,0xdc,0xad,0x89,0x39,0x0f,0x52,0xd8,0xc6,0xd9,0xfb,0x53,0xae,0x99,0x29,0x8c,0x4c,0x8e,0x63,0x2e,0xd9,0x3a,0x99,0x31,0xfe,0x99,0x52,0x35,0x3d,0x44,0xc8,0x71,0xd7,0xea,0xeb,0xdb,0x1c,0x3b,0xcd,0x8b,0x66,0x94,0xa4,0xf1,0x9e,0x49,0x92,0x80,0xc8,0xad,0x44,0xa1,0xc4,0xee,0x42,0x19,0x92,0x49,0x23,0xae,0x19,0x53,0xac,0x7d,0x92,0x3e,0xea,0x0c,0x91,0x3d,0x1b,0x2c,0x22,0x11,0x3c,0x25,0x94,0xe4,0x3c,0x55,0x75,0xca,0xf9,0x4e,0x31,0x65,0x0a,0x2a},\n\t{0xc2,0x27,0xf9,0xf7,0x7f,0x93,0xb7,0x2d,0x35,0xa6,0xd0,0x17,0x06,0x1f,0x74,0xdb,0x76,0xaf,0x55,0x11,0xa2,0xf3,0x82,0x59,0xed,0x2d,0x7c,0x64,0x18,0xe2,0xf6,0x4c,0x3a,0x79,0x1c,0x3c,0xcd,0x1a,0x36,0xcf,0x3b,0xbc,0x35,0x5a,0xac,0xbc,0x9e,0x2f,0xab,0xa6,0xcd,0xa8,0xe9,0x60,0xe8,0x60,0x13,0x1a,0xea,0x6d,0x9b,0xc3,0x5d,0x05,0xb6,0x5b,0x8d,0xc2,0x7c,0x22,0x19,0xb1,0xab,0xff,0x4d,0x77,0xbc,0x4e,0xe2,0x07,0x89,0x2c,0xa3,0xe4,0xce,0x78,0x3c,0xa8,0xb6,0x24,0xaa,0x10,0x77,0x30,0x1a,0x12},\n\t{0x97,0x4a,0x03,0x9f,0x5e,0x5d,0xdb,0xe4,0x2d,0xbc,0x34,0x30,0x09,0xfc,0x53,0xe1,0xb1,0xd3,0x51,0x95,0x91,0x46,0x05,0x46,0x2d,0xe5,0x40,0x7a,0x6c,0xc7,0x3f,0x33,0xc9,0x83,0x74,0xc7,0x3e,0x71,0x59,0xd6,0xaf,0x96,0x2b,0xb8,0x77,0xe0,0xbf,0x88,0xd3,0xbc,0x97,0x10,0x23,0x28,0x9e,0x28,0x9b,0x3a,0xed,0x6c,0x4a,0xb9,0x7b,0x52,0x2e,0x48,0x5b,0x99,0x2a,0x99,0x3d,0x56,0x01,0x38,0x38,0x6e,0x7c,0xd0,0x05,0x34,0xe5,0xd8,0x64,0x2f,0xde,0x35,0x50,0x48,0xf7,0xa9,0xa7,0x20,0x9b,0x06,0x89,0x6b},\n\t{0x0d,0x22,0x70,0x62,0x41,0xa0,0x2a,0x81,0x4e,0x5b,0x24,0xf9,0xfa,0x89,0x5a,0x99,0x05,0xef,0x72,0x50,0xce,0xc4,0xad,0xff,0x73,0xeb,0x73,0xaa,0x03,0x21,0xbc,0x23,0x77,0xdb,0xc7,0xb5,0x8c,0xfa,0x82,0x40,0x55,0xc1,0x34,0xc7,0xf8,0x86,0x86,0x06,0x7e,0xa5,0xe7,0xf6,0xd9,0xc8,0xe6,0x29,0xcf,0x9b,0x63,0xa7,0x08,0xd3,0x73,0x04,0x05,0x9e,0x58,0x03,0x26,0x79,0xee,0xca,0x92,0xc4,0xdc,0x46,0x12,0x42,0x4b,0x2b,0x4f,0xa9,0x01,0xe6,0x74,0xef,0xa1,0x02,0x1a,0x34,0x04,0xde,0xbf,0x73,0x2f,0x10},\n\t{0xc6,0x45,0x57,0x7f,0xab,0xb9,0x18,0xeb,0x90,0xc6,0x87,0x57,0xee,0x8a,0x3a,0x02,0xa9,0xaf,0xf7,0x2d,0xda,0x12,0x27,0xb7,0x3d,0x01,0x5c,0xea,0x25,0x7d,0x59,0x36,0x9a,0x1c,0x51,0xb5,0xe0,0xda,0xb4,0xa2,0x06,0xff,0xff,0x2b,0x29,0x60,0xc8,0x7a,0x34,0x42,0x50,0xf5,0x5d,0x37,0x1f,0x98,0x2d,0xa1,0x4e,0xda,0x25,0xd7,0x6b,0x3f,0xac,0x58,0x60,0x10,0x7b,0x8d,0x4d,0x73,0x5f,0x90,0xc6,0x6f,0x9e,0x57,0x40,0xd9,0x2d,0x93,0x02,0x92,0xf9,0xf8,0x66,0x64,0xd0,0xd6,0x60,0xda,0x19,0xcc,0x7e,0x7b},\n\t{0x0d,0x69,0x5c,0x69,0x3c,0x37,0xc2,0x78,0x6e,0x90,0x42,0x06,0x66,0x2e,0x25,0xdd,0xd2,0x2b,0xe1,0x4a,0x44,0x44,0x1d,0x95,0x56,0x39,0x74,0x01,0x76,0xad,0x35,0x42,0x9b,0xfa,0x7c,0xa7,0x51,0x4a,0xae,0x6d,0x50,0x86,0xa3,0xe7,0x54,0x36,0x26,0x82,0xdb,0x82,0x2d,0x8f,0xcd,0xff,0xbb,0x09,0xba,0xca,0xf5,0x1b,0x66,0xdc,0xbe,0x03,0xf5,0x75,0x89,0x07,0x0d,0xcb,0x58,0x62,0x98,0xf2,0x89,0x91,0x54,0x42,0x29,0x49,0xe4,0x6e,0xe3,0xe2,0x23,0xb4,0xca,0xa0,0xa1,0x66,0xf0,0xcd,0xb0,0xe2,0x7c,0x0e},\n\t{0xa3,0x85,0x8c,0xc4,0x3a,0x64,0x94,0xc4,0xad,0x39,0x61,0x3c,0xf4,0x1d,0x36,0xfd,0x48,0x4d,0xe9,0x3a,0xdd,0x17,0xdb,0x09,0x4a,0x67,0xb4,0x8f,0x5d,0x0a,0x6e,0x66,0xf9,0x70,0x4b,0xd9,0xdf,0xfe,0xa6,0xfe,0x2d,0xba,0xfc,0xc1,0x51,0xc0,0x30,0xf1,0x89,0xab,0x2f,0x7f,0x7e,0xd4,0x82,0x48,0xb5,0xee,0xec,0x8a,0x13,0x56,0x52,0x61,0x0d,0xcb,0x70,0x48,0x4e,0xf6,0xbb,0x2a,0x6b,0x8b,0x45,0xaa,0xf0,0xbc,0x65,0xcd,0x5d,0x98,0xe8,0x75,0xba,0x4e,0xbe,0x9a,0xe4,0xde,0x14,0xd5,0x10,0xc8,0x0b,0x7f},\n\t{0x6f,0x13,0xf4,0x26,0xa4,0x6b,0x00,0xb9,0x35,0x30,0xe0,0x57,0x9e,0x36,0x67,0x8d,0x28,0x3c,0x46,0x4f,0xd9,0xdf,0xc8,0xcb,0xf5,0xdb,0xee,0xf8,0xbc,0x8d,0x1f,0x0d,0xa0,0x13,0x72,0x73,0xad,0x9d,0xac,0x83,0x98,0x2e,0xf7,0x2e,0xba,0xf8,0xf6,0x9f,0x57,0x69,0xec,0x43,0xdd,0x2e,0x1e,0x31,0x75,0xab,0xc5,0xde,0x7d,0x90,0x3a,0x1d,0xdc,0x81,0xd0,0x3e,0x31,0x93,0x16,0xba,0x80,0x34,0x1b,0x85,0xad,0x9f,0x32,0x29,0xcb,0x21,0x03,0x03,0x3c,0x01,0x28,0x01,0xe3,0xfd,0x1b,0xa3,0x44,0x1b,0x01,0x00},\n\t{0x0c,0x6c,0xc6,0x3f,0x6c,0xa0,0xdf,0x3f,0xd2,0x0d,0xd6,0x4d,0x8e,0xe3,0x40,0x5d,0x71,0x4d,0x8e,0x26,0x38,0x8b,0xe3,0x7a,0xe1,0x57,0x83,0x6e,0x91,0x8d,0xc4,0x3a,0x5c,0xa7,0x0a,0x6a,0x69,0x1f,0x56,0x16,0x6a,0xbd,0x52,0x58,0x5c,0x72,0xbf,0xc1,0xad,0x66,0x79,0x9a,0x7f,0xdd,0xa8,0x11,0x26,0x10,0x85,0xd2,0xa2,0x88,0xd9,0x63,0x2e,0x23,0xbd,0xaf,0x53,0x07,0x12,0x00,0x83,0xf6,0xd8,0xfd,0xb8,0xce,0x2b,0xe9,0x91,0x2b,0xe7,0x84,0xb3,0x69,0x16,0xf8,0x66,0xa0,0x68,0x23,0x2b,0xd5,0xfa,0x33},\n\t{0x16,0x1e,0xe4,0xc5,0xc6,0x49,0x06,0x54,0x35,0x77,0x3f,0x33,0x30,0x64,0xf8,0x0a,0x46,0xe7,0x05,0xf3,0xd2,0xfc,0xac,0xb2,0xa7,0xdc,0x56,0xa2,0x29,0xf4,0xc0,0x16,0xe8,0xcf,0x22,0xc4,0xd0,0xc8,0x2c,0x8d,0xcb,0x3a,0xa1,0x05,0x7b,0x4f,0x2b,0x07,0x6f,0xa5,0xf6,0xec,0xe6,0xb6,0xfe,0xa3,0xe2,0x71,0x0a,0xb9,0xcc,0x55,0xc3,0x3c,0x31,0x91,0x3e,0x90,0x43,0x94,0xb6,0xe9,0xce,0x37,0x56,0x7a,0xcb,0x94,0xa4,0xb8,0x44,0x92,0xba,0xba,0xa4,0xd1,0x7c,0xc8,0x68,0x75,0xae,0x6b,0x42,0xaf,0x1e,0x63},\n\t{0x9f,0xfe,0x66,0xda,0x10,0x04,0xe9,0xb3,0xa6,0xe5,0x16,0x6c,0x52,0x4b,0xdd,0x85,0x83,0xbf,0xf9,0x1e,0x61,0x97,0x3d,0xbc,0xb5,0x19,0xa9,0x1e,0x8b,0x64,0x99,0x55,0xe8,0x0d,0x70,0xa3,0xb9,0x75,0xd9,0x47,0x52,0x05,0xf8,0xe2,0xfb,0xc5,0x80,0x72,0xe1,0x5d,0xe4,0x32,0x27,0x8f,0x65,0x53,0xb5,0x80,0x5f,0x66,0x7f,0x2c,0x1f,0x43,0x19,0x7b,0x8f,0x85,0x44,0x63,0x02,0xd6,0x4a,0x51,0xea,0xa1,0x2f,0x35,0xab,0x14,0xd7,0xa9,0x90,0x20,0x1a,0x44,0x00,0x89,0x26,0x3b,0x25,0x91,0x5f,0x71,0x04,0x7b},\n\t{0x43,0xae,0xf6,0xac,0x28,0xbd,0xed,0x83,0xb4,0x7a,0x5c,0x7d,0x8b,0x7c,0x35,0x86,0x44,0x2c,0xeb,0xb7,0x69,0x47,0x40,0xc0,0x3f,0x58,0xf6,0xc2,0xf5,0x7b,0xb3,0x59,0xc6,0xba,0xe6,0xc4,0x80,0xc2,0x76,0xb3,0x0b,0x9b,0x1d,0x6d,0xdd,0xd3,0x0e,0x97,0x44,0xf9,0x0b,0x45,0x58,0x95,0x9a,0xb0,0x23,0xe2,0xcd,0x57,0xfa,0xac,0xd0,0x48,0x71,0xe6,0xab,0x7d,0xe4,0x26,0x0f,0xb6,0x37,0x3a,0x2f,0x62,0x97,0xa1,0xd1,0xf1,0x94,0x03,0x96,0xe9,0x7e,0xce,0x08,0x42,0xdb,0x3b,0x6d,0x33,0x91,0x41,0x23,0x16},\n\t{0xf6,0x7f,0x26,0xf6,0xde,0x99,0xe4,0xb9,0x43,0x08,0x2c,0x74,0x7b,0xca,0x72,0x77,0xb1,0xf2,0xa4,0xe9,0x3f,0x15,0xa0,0x23,0x06,0x50,0xd0,0xd5,0xec,0xdf,0xdf,0x2c,0x40,0x86,0xf3,0x1f,0xd6,0x9c,0x49,0xdd,0xa0,0x25,0x36,0x06,0xc3,0x9b,0xcd,0x29,0xc3,0x3d,0xd7,0x3d,0x02,0xd8,0xe2,0x51,0x31,0x92,0x3b,0x20,0x7a,0x70,0x25,0x4a,0x6a,0xed,0xf6,0x53,0x8a,0x66,0xb7,0x2a,0xa1,0x70,0xd1,0x1d,0x58,0x42,0x42,0x30,0x61,0x01,0xe2,0x3a,0x4c,0x14,0x00,0x40,0xfc,0x49,0x8e,0x24,0x6d,0x89,0x21,0x57},\n\t{0xae,0x1b,0x18,0xfd,0x17,0x55,0x6e,0x0b,0xb4,0x63,0xb9,0x2b,0x9f,0x62,0x22,0x90,0x25,0x46,0x06,0x32,0xe9,0xbc,0x09,0x55,0xda,0x13,0x3c,0xf6,0x74,0xdd,0x8e,0x57,0x4e,0xda,0xd0,0xa1,0x91,0x50,0x5d,0x28,0x08,0x3e,0xfe,0xb5,0xa7,0x6f,0xaa,0x4b,0xb3,0x93,0x93,0xe1,0x7c,0x17,0xe5,0x63,0xfd,0x30,0xb0,0xc4,0xaf,0x35,0xc9,0x03,0x3d,0x0c,0x2b,0x49,0xc6,0x76,0x72,0x99,0xfc,0x05,0xe2,0xdf,0xc4,0xc2,0xcc,0x47,0x3c,0x3a,0x62,0xdd,0x84,0x9b,0xd2,0xdc,0xa2,0xc7,0x88,0x02,0x59,0xab,0xc2,0x3e},\n\t{0xb9,0x7b,0xd8,0xe4,0x7b,0xd2,0xa0,0xa1,0xed,0x1a,0x39,0x61,0xeb,0x4d,0x8b,0xa9,0x83,0x9b,0xcb,0x73,0xd0,0xdd,0xa0,0x99,0xce,0xca,0x0f,0x20,0x5a,0xc2,0xd5,0x2d,0xcb,0xd1,0x32,0xae,0x09,0x3a,0x21,0xa7,0xd5,0xc2,0xf5,0x40,0xdf,0x87,0x2b,0x0f,0x29,0xab,0x1e,0xe8,0xc6,0xa4,0xae,0x0b,0x5e,0xac,0xdb,0x6a,0x6c,0xf6,0x1b,0x0e,0x7e,0x88,0x2c,0x79,0xe9,0xd5,0xab,0xe2,0x5d,0x6d,0x92,0xcb,0x18,0x00,0x02,0x1a,0x1e,0x5f,0xae,0xba,0xcd,0x69,0xba,0xbf,0x5f,0x8f,0xe8,0x5a,0xb3,0x48,0x05,0x73},\n\t{0xee,0xb8,0xa8,0xcb,0xa3,0x51,0x35,0xc4,0x16,0x5f,0x11,0xb2,0x1d,0x6f,0xa2,0x65,0x50,0x38,0x8c,0xab,0x52,0x4f,0x0f,0x76,0xca,0xb8,0x1d,0x41,0x3b,0x44,0x43,0x30,0x34,0xe3,0xd6,0xa1,0x4b,0x09,0x5b,0x80,0x19,0x3f,0x35,0x09,0x77,0xf1,0x3e,0xbf,0x2b,0x70,0x22,0x06,0xcb,0x06,0x3f,0x42,0xdd,0x45,0x78,0xd8,0x77,0x22,0x5a,0x58,0x62,0x89,0xd4,0x33,0x82,0x5f,0x8a,0xa1,0x7f,0x25,0x78,0xec,0xb5,0xc4,0x98,0x66,0xff,0x41,0x3e,0x37,0xa5,0x6f,0x8e,0xa7,0x1f,0x98,0xef,0x50,0x89,0x27,0x56,0x76},\n\t{0xc0,0xc8,0x1f,0xd5,0x59,0xcf,0xc3,0x38,0xf2,0xb6,0x06,0x05,0xfd,0xd2,0xed,0x9b,0x8f,0x0e,0x57,0xab,0x9f,0x10,0xbf,0x26,0xa6,0x46,0xb8,0xc1,0xa8,0x60,0x41,0x3f,0x9d,0xcf,0x86,0xea,0xa3,0x73,0x70,0xe1,0xdc,0x5f,0x15,0x07,0xb7,0xfb,0x8c,0x3a,0x8e,0x8a,0x83,0x31,0xfc,0xe7,0x53,0x48,0x16,0xf6,0x13,0xb6,0x84,0xf4,0xbb,0x28,0x7c,0x6c,0x13,0x6f,0x5c,0x2f,0x61,0xf2,0xbe,0x11,0xdd,0xf6,0x07,0xd1,0xea,0xaf,0x33,0x6f,0xde,0x13,0xd2,0x9a,0x7e,0x52,0x5d,0xf7,0x88,0x81,0x35,0xcb,0x79,0x1e},\n\t{0xf1,0xe3,0xf7,0xee,0xc3,0x36,0x34,0x01,0xf8,0x10,0x9e,0xfe,0x7f,0x6a,0x8b,0x82,0xfc,0xde,0xf9,0xbc,0xe5,0x08,0xf9,0x7f,0x31,0x38,0x3b,0x3a,0x1b,0x95,0xd7,0x65,0x81,0x81,0xe0,0xf5,0xd8,0x53,0xe9,0x77,0xd9,0xde,0x9d,0x29,0x44,0x0c,0xa5,0x84,0xe5,0x25,0x45,0x86,0x0c,0x2d,0x6c,0xdc,0xf4,0xf2,0xd1,0x39,0x2d,0xb5,0x8a,0x47,0x59,0xd1,0x52,0x92,0xd3,0xa4,0xa6,0x66,0x07,0xc8,0x1a,0x87,0xbc,0xe1,0xdd,0xe5,0x6f,0xc9,0xc1,0xa6,0x40,0x6b,0x2c,0xb8,0x14,0x22,0x21,0x1a,0x41,0x7a,0xd8,0x16},\n\t{0x15,0x62,0x06,0x42,0x5a,0x7e,0xbd,0xb3,0xc1,0x24,0x5a,0x0c,0xcd,0xe3,0x9b,0x87,0xb7,0x94,0xf9,0xd6,0xb1,0x5d,0xc0,0x57,0xa6,0x8c,0xf3,0x65,0x81,0x7c,0xf8,0x28,0x83,0x05,0x4e,0xd5,0xe2,0xd5,0xa4,0xfb,0xfa,0x99,0xbd,0x2e,0xd7,0xaf,0x1f,0xe2,0x8f,0x77,0xe9,0x6e,0x73,0xc2,0x7a,0x49,0xde,0x6d,0x5a,0x7a,0x57,0x0b,0x99,0x1f,0xd6,0xf7,0xe8,0x1b,0xad,0x4e,0x34,0xa3,0x8f,0x79,0xea,0xac,0xeb,0x50,0x1e,0x7d,0x52,0xe0,0x0d,0x52,0x9e,0x56,0xc6,0x77,0x3e,0x6d,0x4d,0x53,0xe1,0x2f,0x88,0x45},\n\t{0xd6,0x83,0x79,0x75,0x5d,0x34,0x69,0x66,0xa6,0x11,0xaa,0x17,0x11,0xed,0xb6,0x62,0x8f,0x12,0x5e,0x98,0x57,0x18,0xdd,0x7d,0xdd,0xf6,0x26,0xf6,0xb8,0xe5,0x8f,0x68,0xe4,0x6f,0x3c,0x94,0x29,0x99,0xac,0xd8,0xa2,0x92,0x83,0xa3,0x61,0xf1,0xf9,0xb5,0xf3,0x9a,0xc8,0xbe,0x13,0xdb,0x99,0x26,0x74,0xf0,0x05,0xe4,0x3c,0x84,0xcf,0x7d,0xc0,0x32,0x47,0x4a,0x48,0xd6,0x90,0x6c,0x99,0x32,0x56,0xca,0xfd,0x43,0x21,0xd5,0xe1,0xc6,0x5d,0x91,0xc3,0x28,0xbe,0xb3,0x1b,0x19,0x27,0x73,0x7e,0x68,0x39,0x67},\n\t{0xa6,0x75,0x56,0x38,0x14,0x20,0x78,0xef,0xe8,0xa9,0xfd,0xaa,0x30,0x9f,0x64,0xa2,0xcb,0xa8,0xdf,0x5c,0x50,0xeb,0xd1,0x4c,0xb3,0xc0,0x4d,0x1d,0xba,0x5a,0x11,0x46,0xc0,0x1a,0x0c,0xc8,0x9d,0xcc,0x6d,0xa6,0x36,0xa4,0x38,0x1b,0xf4,0x5c,0xa0,0x97,0xc6,0xd7,0xdb,0x95,0xbe,0xf3,0xeb,0xa7,0xab,0x7d,0x7e,0x8d,0xf6,0xb8,0xa0,0x7d,0x76,0xda,0xb5,0xc3,0x53,0x19,0x0f,0xd4,0x9b,0x9e,0x11,0x21,0x73,0x6f,0xac,0x1d,0x60,0x59,0xb2,0xfe,0x21,0x60,0xcc,0x03,0x4b,0x4b,0x67,0x83,0x7e,0x88,0x5f,0x5a},\n\t{0x11,0x3d,0xa1,0x70,0xcf,0x01,0x63,0x8f,0xc4,0xd0,0x0d,0x35,0x15,0xb8,0xce,0xcf,0x7e,0xa4,0xbc,0xa4,0xd4,0x97,0x02,0xf7,0x34,0x14,0x4d,0xe4,0x56,0xb6,0x69,0x36,0xb9,0x43,0xa6,0xa0,0xd3,0x28,0x96,0x9e,0x64,0x20,0xc3,0xe6,0x00,0xcb,0xc3,0xb5,0x32,0xec,0x2d,0x7c,0x89,0x02,0x53,0x9b,0x0c,0xc7,0xd1,0xd5,0xe2,0x7a,0xe3,0x43,0x33,0xe1,0xa6,0xed,0x06,0x3f,0x7e,0x38,0xc0,0x3a,0xa1,0x99,0x51,0x1d,0x30,0x67,0x11,0x38,0x26,0x36,0xf8,0xd8,0x5a,0xbd,0xbe,0xe9,0xd5,0x4f,0xcd,0xe6,0x21,0x6a},\n\t{0x5f,0xe6,0x46,0x30,0x0a,0x17,0xc6,0xf1,0x24,0x35,0xd2,0x00,0x2a,0x2a,0x71,0x58,0x55,0xb7,0x82,0x8c,0x3c,0xbd,0xdb,0x69,0x57,0xff,0x95,0xa1,0xf1,0xf9,0x6b,0x58,0xe3,0xb2,0x99,0x66,0x12,0x29,0x41,0xef,0x01,0x13,0x8d,0x70,0x47,0x08,0xd3,0x71,0xbd,0xb0,0x82,0x11,0xd0,0x32,0x54,0x32,0x36,0x8b,0x1e,0x00,0x07,0x1b,0x37,0x45,0x0b,0x79,0xf8,0x5e,0x8d,0x08,0xdb,0xa6,0xe5,0x37,0x09,0x61,0xdc,0xf0,0x78,0x52,0xb8,0x6e,0xa1,0x61,0xd2,0x49,0x03,0xac,0x79,0x21,0xe5,0x90,0x37,0xb0,0xaf,0x0e},\n\t{0x2f,0x04,0x48,0x37,0xc1,0x55,0x05,0x96,0x11,0xaa,0x0b,0x82,0xe6,0x41,0x9a,0x21,0x0c,0x6d,0x48,0x73,0x38,0xf7,0x81,0x1c,0x61,0xc6,0x02,0x5a,0x67,0xcc,0x9a,0x30,0x1d,0xae,0x75,0x0f,0x5e,0x80,0x40,0x51,0x30,0xcc,0x62,0x26,0xe3,0xfb,0x02,0xec,0x6d,0x39,0x92,0xea,0x1e,0xdf,0xeb,0x2c,0xb3,0x5b,0x43,0xc5,0x44,0x33,0xae,0x44,0xee,0x43,0xa5,0xbb,0xb9,0x89,0xf2,0x9c,0x42,0x71,0xc9,0x5a,0x9d,0x0e,0x76,0xf3,0xaa,0x60,0x93,0x4f,0xc6,0xe5,0x82,0x1d,0x8f,0x67,0x94,0x7f,0x1b,0x22,0xd5,0x62},\n\t{0x6d,0x93,0xd0,0x18,0x9c,0x29,0x4c,0x52,0x0c,0x1a,0x0c,0x8a,0x6c,0xb5,0x6b,0xc8,0x31,0x86,0x4a,0xdb,0x2e,0x05,0x75,0xa3,0x62,0x45,0x75,0xbc,0xe4,0xfd,0x0e,0x5c,0x3c,0x7a,0xf7,0x3a,0x26,0xd4,0x85,0x75,0x4d,0x14,0xe9,0xfe,0x11,0x7b,0xae,0xdf,0x3d,0x19,0xf7,0x59,0x80,0x70,0x06,0xa5,0x37,0x20,0x92,0x83,0x53,0x9a,0xf2,0x14,0xf5,0xd7,0xb2,0x25,0xdc,0x7e,0x71,0xdf,0x40,0x30,0xb5,0x99,0xdb,0x70,0xf9,0x21,0x62,0x4c,0xed,0xc3,0xb7,0x34,0x92,0xda,0x3e,0x09,0xee,0x7b,0x5c,0x36,0x72,0x5e},\n\t{0x7f,0x21,0x71,0x45,0x07,0xfc,0x5b,0x57,0x5b,0xd9,0x94,0x06,0x5d,0x67,0x79,0x37,0x33,0x1e,0x19,0xf4,0xbb,0x37,0x0a,0x9a,0xbc,0xea,0xb4,0x47,0x4c,0x10,0xf1,0x77,0x3e,0xb3,0x08,0x2f,0x06,0x39,0x93,0x7d,0xbe,0x32,0x9f,0xdf,0xe5,0x59,0x96,0x5b,0xfd,0xbd,0x9e,0x1f,0xad,0x3d,0xff,0xac,0xb7,0x49,0x73,0xcb,0x55,0x05,0xb2,0x70,0x4c,0x2c,0x11,0x55,0xc5,0x13,0x51,0xbe,0xcd,0x1f,0x88,0x9a,0x3a,0x42,0x88,0x66,0x47,0x3b,0x50,0x5e,0x85,0x77,0x66,0x44,0x4a,0x40,0x06,0x4a,0x8f,0x39,0x34,0x0e},\n\t{0xe8,0xbd,0xce,0x3e,0xd9,0x22,0x7d,0xb6,0x07,0x2f,0x82,0x27,0x41,0xe8,0xb3,0x09,0x8d,0x6d,0x5b,0xb0,0x1f,0xa6,0x3f,0x74,0x72,0x23,0x36,0x8a,0x36,0x05,0x54,0x5e,0x28,0x19,0x4b,0x3e,0x09,0x0b,0x93,0x18,0x40,0xf6,0xf3,0x73,0x0e,0xe1,0xe3,0x7d,0x6f,0x5d,0x39,0x73,0xda,0x17,0x32,0xf4,0x3e,0x9c,0x37,0xca,0xd6,0xde,0x8a,0x6f,0x9a,0xb2,0xb7,0xfd,0x3d,0x12,0x40,0xe3,0x91,0xb2,0x1a,0xa2,0xe1,0x97,0x7b,0x48,0x9e,0x94,0xe6,0xfd,0x02,0x7d,0x96,0xf9,0x97,0xde,0xd3,0xc8,0x2e,0xe7,0x0d,0x78},\n\t{0xbc,0xe7,0x9a,0x08,0x45,0x85,0xe2,0x0a,0x06,0x4d,0x7f,0x1c,0xcf,0xde,0x8d,0x38,0xb8,0x11,0x48,0x0a,0x51,0x15,0xac,0x38,0xe4,0x8c,0x92,0x71,0xf6,0x8b,0xb2,0x0e,0x72,0x27,0xf4,0x00,0xf3,0xea,0x1f,0x67,0xaa,0x41,0x8c,0x2a,0x2a,0xeb,0x72,0x8f,0x92,0x32,0x37,0x97,0xd7,0x7f,0xa1,0x29,0xa6,0x87,0xb5,0x32,0xad,0xc6,0xef,0x1d,0xa7,0x95,0x51,0xef,0x1a,0xbe,0x5b,0xaf,0xed,0x15,0x7b,0x91,0x77,0x12,0x8c,0x14,0x2e,0xda,0xe5,0x7a,0xfb,0xf7,0x91,0x29,0x67,0x28,0xdd,0xf8,0x1b,0x20,0x7d,0x46},\n\t{0xad,0x4f,0xef,0x74,0x9a,0x91,0xfe,0x95,0xa2,0x08,0xa3,0xf6,0xec,0x7b,0x82,0x3a,0x01,0x7b,0xa4,0x09,0xd3,0x01,0x4e,0x96,0x97,0xc7,0xa3,0x5b,0x4f,0x3c,0xc4,0x71,0xa9,0xe7,0x7a,0x56,0xbd,0xf4,0x1e,0xbc,0xbd,0x98,0x44,0xd6,0xb2,0x4c,0x62,0x3f,0xc8,0x4e,0x1f,0x2c,0xd2,0x64,0x10,0xe4,0x01,0x40,0x38,0xba,0xa5,0xc5,0xf9,0x2e,0xcd,0x74,0x9e,0xfa,0xf6,0x6d,0xfd,0xb6,0x7a,0x26,0xaf,0xe4,0xbc,0x78,0x82,0xf1,0x0e,0x99,0xef,0xf1,0xd0,0xb3,0x55,0x82,0x93,0xf2,0xc5,0x90,0xa3,0x8c,0x75,0x5a},\n\t{0x95,0x24,0x46,0xd9,0x10,0x27,0xb7,0xa2,0x03,0x50,0x7d,0xd5,0xd2,0xc6,0xa8,0x3a,0xca,0x87,0xb4,0xa0,0xbf,0x00,0xd4,0xe3,0xec,0x72,0xeb,0xb3,0x44,0xe2,0xba,0x2d,0x94,0xdc,0x61,0x1d,0x8b,0x91,0xe0,0x8c,0x66,0x30,0x81,0x9a,0x46,0x36,0xed,0x8d,0xd3,0xaa,0xe8,0xaf,0x29,0xa8,0xe6,0xd4,0x3f,0xd4,0x39,0xf6,0x27,0x80,0x73,0x0a,0xcc,0xe1,0xff,0x57,0x2f,0x4a,0x0f,0x98,0x43,0x98,0x83,0xe1,0x0d,0x0d,0x67,0x00,0xfd,0x15,0xfb,0x49,0x4a,0x3f,0x5c,0x10,0x9c,0xa6,0x26,0x51,0x63,0xca,0x98,0x26},\n\t{0x78,0xba,0xb0,0x32,0x88,0x31,0x65,0xe7,0x8b,0xff,0x5c,0x92,0xf7,0x31,0x18,0x38,0xcc,0x1f,0x29,0xa0,0x91,0x1b,0xa8,0x08,0x07,0xeb,0xca,0x49,0xcc,0x3d,0xb4,0x1f,0x0e,0xd9,0x3d,0x5e,0x2f,0x70,0x3d,0x2e,0x86,0x53,0xd2,0xe4,0x18,0x09,0x3f,0x9e,0x6a,0xa9,0x4d,0x02,0xf6,0x3e,0x77,0x5e,0x32,0x33,0xfa,0x4a,0x0c,0x4b,0x00,0x3c,0x2b,0xb8,0xf4,0x06,0xac,0x46,0xa9,0x9a,0xf3,0xc4,0x06,0xa8,0xa5,0x84,0xa2,0x1c,0x87,0x47,0xcd,0xc6,0x5f,0x26,0xd3,0x3e,0x17,0xd2,0x1f,0xcd,0x01,0xfd,0x43,0x6b},\n\t{0x44,0xc5,0x97,0x46,0x4b,0x5d,0xa7,0xc7,0xbf,0xff,0x0f,0xdf,0x48,0xf8,0xfd,0x15,0x5a,0x78,0x46,0xaa,0xeb,0xb9,0x68,0x28,0x14,0xf7,0x52,0x5b,0x10,0xd7,0x68,0x5a,0xf3,0x0e,0x76,0x3e,0x58,0x42,0xc7,0xb5,0x90,0xb9,0x0a,0xee,0xb9,0x52,0xdc,0x75,0x3f,0x92,0x2b,0x07,0xc2,0x27,0x14,0xbf,0xf0,0xd9,0xf0,0x6f,0x2d,0x0b,0x42,0x73,0x06,0x1e,0x85,0x9e,0xcb,0xf6,0x2c,0xaf,0xc4,0x38,0x22,0xc6,0x13,0x39,0x59,0x8f,0x73,0xf3,0xfb,0x99,0x96,0xb8,0x8a,0xda,0x9e,0xbc,0x34,0xea,0x2f,0x63,0xb5,0x3d},\n\t{0xd8,0xd9,0x5d,0xf7,0x2b,0xee,0x6e,0xf4,0xa5,0x59,0x67,0x39,0xf6,0xb1,0x17,0x0d,0x73,0x72,0x9e,0x49,0x31,0xd1,0xf2,0x1b,0x13,0x5f,0xd7,0x49,0xdf,0x1a,0x32,0x04,0xd5,0x25,0x98,0x82,0xb1,0x90,0x49,0x2e,0x91,0x89,0x9a,0x3e,0x87,0xeb,0xea,0xed,0xf8,0x4a,0x70,0x4c,0x39,0x3d,0xf0,0xee,0x0e,0x2b,0xdf,0x95,0xa4,0x7e,0x19,0x59,0xae,0x5a,0xe5,0xe4,0x19,0x60,0xe1,0x04,0xe9,0x92,0x2f,0x7e,0x7a,0x43,0x7b,0xe7,0xa4,0x9a,0x15,0x6f,0xc1,0x2d,0xce,0xc7,0xc0,0x0c,0xd7,0xf4,0xc1,0xfd,0xea,0x45},\n\t{0x2b,0xd7,0x45,0x80,0x85,0x01,0x84,0x69,0x51,0x06,0x2f,0xcf,0xa2,0xfa,0x22,0x4c,0xc6,0x2d,0x22,0x6b,0x65,0x36,0x1a,0x94,0xde,0xda,0x62,0x03,0xc8,0xeb,0x5e,0x5a,0xed,0xb1,0xcc,0xcf,0x24,0x46,0x0e,0xb6,0x95,0x03,0x5c,0xbd,0x92,0xc2,0xdb,0x59,0xc9,0x81,0x04,0xdc,0x1d,0x9d,0xa0,0x31,0x40,0xd9,0x56,0x5d,0xea,0xce,0x73,0x3f,0xc6,0x8d,0x4e,0x0a,0xd1,0xbf,0xa7,0xb7,0x39,0xb3,0xc9,0x44,0x7e,0x00,0x57,0xbe,0xfa,0xae,0x57,0x15,0x7f,0x20,0xc1,0x60,0xdb,0x18,0x62,0x26,0x91,0x88,0x05,0x26},\n\t{0x04,0xff,0x60,0x83,0xa6,0x04,0xf7,0x59,0xf4,0xe6,0x61,0x76,0xde,0x3f,0xd9,0xc3,0x51,0x35,0x87,0x12,0x73,0x2a,0x1b,0x83,0x57,0x5d,0x61,0x4e,0x2e,0x0c,0xad,0x54,0x42,0xe5,0x76,0xc6,0x3c,0x8e,0x81,0x4c,0xad,0xcc,0xce,0x03,0x93,0x2c,0x42,0x5e,0x08,0x9f,0x12,0xb4,0xca,0xcc,0x07,0xec,0xb8,0x43,0x44,0xb2,0x10,0xfa,0xed,0x0d,0x2a,0x52,0x2b,0xb8,0xd5,0x67,0x3b,0xee,0xeb,0xc1,0xa5,0x9f,0x46,0x63,0xf1,0x36,0xd3,0x9f,0xc1,0x6e,0xf2,0xd2,0xb4,0xa5,0x08,0x94,0x7a,0xa7,0xba,0xb2,0xec,0x62},\n\t{0x3d,0x2b,0x15,0x61,0x52,0x79,0xed,0xe5,0xd1,0xd7,0xdd,0x0e,0x7d,0x35,0x62,0x49,0x71,0x4c,0x6b,0xb9,0xd0,0xc8,0x82,0x74,0xbe,0xd8,0x66,0xa9,0x19,0xf9,0x59,0x2e,0x74,0x28,0xb6,0xaf,0x36,0x28,0x07,0x92,0xa5,0x04,0xe1,0x79,0x85,0x5e,0xcd,0x5f,0x4a,0xa1,0x30,0xc6,0xad,0x01,0xad,0x5a,0x98,0x3f,0x66,0x75,0x50,0x3d,0x91,0x61,0xda,0x31,0x32,0x1a,0x36,0x2d,0xc6,0x0d,0x70,0x02,0x20,0x94,0x32,0x58,0x47,0xfa,0xce,0x94,0x95,0x3f,0x51,0x01,0xd8,0x02,0x5c,0x5d,0xc0,0x31,0xa1,0xc2,0xdb,0x3d},\n\t{0x4b,0xc5,0x5e,0xce,0xf9,0x0f,0xdc,0x9a,0x0d,0x13,0x2f,0x8c,0x6b,0x2a,0x9c,0x03,0x15,0x95,0xf8,0xf0,0xc7,0x07,0x80,0x02,0x6b,0xb3,0x04,0xac,0x14,0x83,0x96,0x78,0x14,0xbb,0x96,0x27,0xa2,0x57,0xaa,0xf3,0x21,0xda,0x07,0x9b,0xb7,0xba,0x3a,0x88,0x1c,0x39,0xa0,0x31,0x18,0xe2,0x4b,0xe5,0xf9,0x05,0x32,0xd8,0x38,0xfb,0xe7,0x5e,0x8e,0x6a,0x44,0x41,0xcb,0xfd,0x8d,0x53,0xf9,0x37,0x49,0x43,0xa9,0xfd,0xac,0xa5,0x78,0x8c,0x3c,0x26,0x8d,0x90,0xaf,0x46,0x09,0x0d,0xca,0x9b,0x3c,0x63,0xd0,0x61},\n\t{0x66,0x25,0xdb,0xff,0x35,0x49,0x74,0x63,0xbb,0x68,0x0b,0x78,0x89,0x6b,0xbd,0xc5,0x03,0xec,0x3e,0x55,0x80,0x32,0x1b,0x6f,0xf5,0xd7,0xae,0x47,0xd8,0x5f,0x96,0x6e,0xdf,0x73,0xfc,0xf8,0xbc,0x28,0xa3,0xad,0xfc,0x37,0xf0,0xa6,0x5d,0x69,0x84,0xee,0x09,0xa9,0xc2,0x38,0xdb,0xb4,0x7f,0x63,0xdc,0x7b,0x06,0xf8,0x2d,0xac,0x23,0x5b,0x7b,0x52,0x80,0xee,0x53,0xb9,0xd2,0x9a,0x8d,0x6d,0xde,0xfa,0xaa,0x19,0x8f,0xe8,0xcf,0x82,0x0e,0x15,0x04,0x17,0x71,0x0e,0xdc,0xde,0x95,0xdd,0xb9,0xbb,0xb9,0x79},\n\t{0xc2,0x26,0x31,0x6a,0x40,0x55,0xb3,0xeb,0x93,0xc3,0xc8,0x68,0xa8,0x83,0x63,0xd2,0x82,0x7a,0xb9,0xe5,0x29,0x64,0x0c,0x6c,0x47,0x21,0xfd,0xc9,0x58,0xf1,0x65,0x50,0x74,0x73,0x9f,0x8e,0xae,0x7d,0x99,0xd1,0x16,0x08,0xbb,0xcf,0xf8,0xa2,0x32,0xa0,0x0a,0x5f,0x44,0x6d,0x12,0xba,0x6c,0xcd,0x34,0xb8,0xcc,0x0a,0x46,0x11,0xa8,0x1b,0x54,0x99,0x42,0x0c,0xfb,0x69,0x81,0x70,0x67,0xcf,0x6e,0xd7,0xac,0x00,0x46,0xe1,0xba,0x45,0xe6,0x70,0x8a,0xb9,0xaa,0x2e,0xf2,0xfa,0xa4,0x58,0x9e,0xf3,0x81,0x39},\n\t{0x93,0x0a,0x23,0x59,0x75,0x8a,0xfb,0x18,0x5d,0xf4,0xe6,0x60,0x69,0x8f,0x16,0x1d,0xb5,0x3c,0xa9,0x14,0x45,0xa9,0x85,0x3a,0xfd,0xd0,0xac,0x05,0x37,0x08,0xdc,0x38,0xde,0x6f,0xe6,0x6d,0xa5,0xdf,0x45,0xc8,0x3a,0x48,0x40,0x2c,0x00,0xa5,0x52,0xe1,0x32,0xf6,0xb4,0xc7,0x63,0xe1,0xd2,0xe9,0x65,0x1b,0xbc,0xdc,0x2e,0x45,0xf4,0x30,0x40,0x97,0x75,0xc5,0x82,0x27,0x6d,0x85,0xcc,0xbe,0x9c,0xf9,0x69,0x45,0x13,0xfa,0x71,0x4e,0xea,0xc0,0x73,0xfc,0x44,0x88,0x69,0x24,0x3f,0x59,0x1a,0x9a,0x2d,0x63},\n\t{0xa6,0xcb,0x07,0xb8,0x15,0x6b,0xbb,0xf6,0xd7,0xf0,0x54,0xbc,0xdf,0xc7,0x23,0x18,0x0b,0x67,0x29,0x6e,0x03,0x97,0x1d,0xbb,0x57,0x4a,0xed,0x47,0x88,0xf4,0x24,0x0b,0xa7,0x84,0x0c,0xed,0x11,0xfd,0x09,0xbf,0x3a,0x69,0x9f,0x0d,0x81,0x71,0xf0,0x63,0x79,0x87,0xcf,0x57,0x2d,0x8c,0x90,0x21,0xa2,0x4b,0xf6,0x8a,0xf2,0x7d,0x5a,0x3a,0xc7,0xea,0x1b,0x51,0xbe,0xd4,0xda,0xdc,0xf2,0xcc,0x26,0xed,0x75,0x80,0x53,0xa4,0x65,0x9a,0x5f,0x00,0x9f,0xff,0x9c,0xe1,0x63,0x1f,0x48,0x75,0x44,0xf7,0xfc,0x34},\n\t{0xca,0x67,0x97,0x78,0x4c,0xe0,0x97,0xc1,0x7d,0x46,0xd9,0x38,0xcb,0x4d,0x71,0xb8,0xa8,0x5f,0xf9,0x83,0x82,0x88,0xde,0x55,0xf7,0x63,0xfa,0x4d,0x16,0xdc,0x3b,0x3d,0x98,0xaa,0xcf,0x78,0xab,0x1d,0xbb,0xa5,0xf2,0x72,0x0b,0x19,0x67,0xa2,0xed,0x5c,0x8e,0x60,0x92,0x0a,0x11,0xc9,0x09,0x93,0xb0,0x74,0xb3,0x2f,0x04,0xa3,0x19,0x01,0x7d,0x17,0xc2,0xe8,0x9c,0xd8,0xa2,0x67,0xc1,0xd0,0x95,0x68,0xf6,0xa5,0x9d,0x66,0xb0,0xa2,0x82,0xb2,0xe5,0x98,0x65,0xf5,0x73,0x0a,0xe2,0xed,0xf1,0x88,0xc0,0x56},\n\t{0x17,0x6e,0xa8,0x10,0x11,0x3d,0x6d,0x33,0xfa,0xb2,0x75,0x0b,0x32,0x88,0xf3,0xd7,0x88,0x29,0x07,0x25,0x76,0x33,0x15,0xf9,0x87,0x8b,0x10,0x99,0x6b,0x4c,0x67,0x09,0x02,0x8f,0xf3,0x24,0xac,0x5f,0x1b,0x58,0xbd,0x0c,0xe3,0xba,0xfe,0xe9,0x0b,0xa9,0xf0,0x92,0xcf,0x8a,0x02,0x69,0x21,0x9a,0x8f,0x03,0x59,0x83,0xa4,0x7e,0x8b,0x03,0xf8,0x6f,0x31,0x99,0x21,0xf8,0x4e,0x9f,0x4f,0x8d,0xa7,0xea,0x82,0xd2,0x49,0x2f,0x74,0x31,0xef,0x5a,0xab,0xa5,0x71,0x09,0x65,0xeb,0x69,0x59,0x02,0x31,0x5e,0x6e},\n\t{0xfb,0x93,0xe5,0x87,0xf5,0x62,0x6c,0xb1,0x71,0x3e,0x5d,0xca,0xde,0xed,0x99,0x49,0x6d,0x3e,0xcc,0x14,0xe0,0xc1,0x91,0xb4,0xa8,0xdb,0xa8,0x89,0x47,0x11,0xf5,0x08,0x22,0x62,0x06,0x63,0x0e,0xfb,0x04,0x33,0x3f,0xba,0xac,0x87,0x89,0x06,0x35,0xfb,0xa3,0x61,0x10,0x8c,0x77,0x24,0x19,0xbd,0x20,0x86,0x83,0xd1,0x43,0xad,0x58,0x30,0xd0,0x63,0x76,0xe5,0xfd,0x0f,0x3c,0x32,0x10,0xa6,0x2e,0xa2,0x38,0xdf,0xc3,0x05,0x9a,0x4f,0x99,0xac,0xbd,0x8a,0xc7,0xbd,0x99,0xdc,0xe3,0xef,0xa4,0x9f,0x54,0x26},\n\t{0xd6,0xf9,0x6b,0x1e,0x46,0x5a,0x1d,0x74,0x81,0xa5,0x77,0x77,0xfc,0xb3,0x05,0x23,0xd9,0xd3,0x74,0x64,0xa2,0x74,0x55,0xd4,0xff,0xe0,0x01,0x64,0xdc,0xe1,0x26,0x19,0x6e,0x66,0x3f,0xaf,0x49,0x85,0x46,0xdb,0xa5,0x0e,0x4a,0xf1,0x04,0xcf,0x7f,0xd7,0x47,0x0c,0xba,0xa4,0xf7,0x3f,0xf2,0x3d,0x85,0x3c,0xce,0x32,0xe1,0xdf,0x10,0x3a,0xa0,0xce,0x17,0xea,0x8a,0x4e,0x7f,0xe0,0xfd,0xc1,0x1f,0x3a,0x46,0x15,0xd5,0x2f,0xf1,0xc0,0xf2,0x31,0xfd,0x22,0x53,0x17,0x15,0x5d,0x1e,0x86,0x1d,0xd0,0xa1,0x1f},\n\t{0x32,0x98,0x59,0x7d,0x94,0x55,0x80,0xcc,0x20,0x55,0xf1,0x37,0xda,0x56,0x46,0x1e,0x20,0x93,0x05,0x4e,0x74,0xf7,0xf6,0x99,0x33,0xcf,0x75,0x6a,0xbc,0x63,0x35,0x77,0xab,0x94,0xdf,0xd1,0x00,0xac,0xdc,0x38,0xe9,0x0d,0x08,0xd1,0xdd,0x2b,0x71,0x2e,0x62,0xe2,0xd5,0xfd,0x3e,0xe9,0x13,0x7f,0xe5,0x01,0x9a,0xee,0x18,0xed,0xfc,0x73,0xb3,0x9c,0x13,0x63,0x08,0xe9,0xb1,0x06,0xcd,0x3e,0xa0,0xc5,0x67,0xda,0x93,0xa4,0x32,0x89,0x63,0xad,0xc8,0xce,0x77,0x8d,0x44,0x4f,0x86,0x1b,0x70,0x6b,0x42,0x1f},\n\t{0x01,0x1c,0x91,0x41,0x4c,0x26,0xc9,0xef,0x25,0x2c,0xa2,0x17,0xb8,0xb7,0xa3,0xf1,0x47,0x14,0x0f,0xf3,0x6b,0xda,0x75,0x58,0x90,0xb0,0x31,0x1d,0x27,0xf5,0x1a,0x4e,0x52,0x25,0xa1,0x91,0xc8,0x35,0x7e,0xf1,0x76,0x9c,0x5e,0x57,0x53,0x81,0x6b,0xb7,0x3e,0x72,0x9b,0x0d,0x6f,0x40,0x83,0xfa,0x38,0xe4,0xa7,0x3f,0x1b,0xbb,0x76,0x0b,0x9b,0x93,0x92,0x7f,0xf9,0xc1,0xb8,0x08,0x6e,0xab,0x44,0xd4,0xcb,0x71,0x67,0xbe,0x17,0x80,0xbb,0x99,0x63,0x64,0xe5,0x22,0x55,0xa9,0x72,0xb7,0x1e,0xd6,0x6d,0x7b},\n\t{0x92,0x3d,0xf3,0x50,0xe8,0xc1,0xad,0xb7,0xcf,0xd5,0x8c,0x60,0x4f,0xfa,0x98,0x79,0xdb,0x5b,0xfc,0x8d,0xbd,0x2d,0x96,0xad,0x4f,0x2f,0x1d,0xaf,0xce,0x9b,0x3e,0x70,0xc7,0xd2,0x01,0xab,0xf9,0xab,0x30,0x57,0x18,0x3b,0x14,0x40,0xdc,0x76,0xfb,0x16,0x81,0xb2,0xcb,0xa0,0x65,0xbe,0x6c,0x86,0xfe,0x6a,0xff,0x9b,0x65,0x9b,0xfa,0x53,0x55,0x54,0x88,0x94,0xe9,0xc8,0x14,0x6c,0xe5,0xd4,0xae,0x65,0x66,0x5d,0x3a,0x84,0xf1,0x5a,0xd6,0xbc,0x3e,0xb7,0x1b,0x18,0x50,0x1f,0xc6,0xc4,0xe5,0x93,0x8d,0x39},\n\t{0xf3,0x48,0xe2,0x33,0x67,0xd1,0x4b,0x1c,0x5f,0x0a,0xbf,0x15,0x87,0x12,0x9e,0xbd,0x76,0x03,0x0b,0xa1,0xf0,0x8c,0x3f,0xd4,0x13,0x1b,0x19,0xdf,0x5d,0x9b,0xb0,0x53,0xf2,0xe3,0xe7,0xd2,0x60,0x7c,0x87,0xc3,0xb1,0x8b,0x82,0x30,0xa0,0xaa,0x34,0x3b,0x38,0xf1,0x9e,0x73,0xe7,0x26,0x3e,0x28,0x77,0x05,0xc3,0x02,0x90,0x9c,0x9c,0x69,0xcc,0xf1,0x46,0x59,0x23,0xa7,0x06,0xf3,0x7d,0xd9,0xe5,0xcc,0xb5,0x18,0x17,0x92,0x75,0xe9,0xb4,0x81,0x47,0xd2,0xcd,0x28,0x07,0xd9,0xcd,0x6f,0x0c,0xf3,0xca,0x51},\n\t{0x0a,0xe0,0x74,0x76,0x42,0xa7,0x0b,0xa6,0xf3,0x7b,0x7a,0xa1,0x70,0x85,0x0e,0x63,0xcc,0x24,0x33,0xcf,0x3d,0x56,0x58,0x37,0xaa,0xfd,0x83,0x23,0x29,0xaa,0x04,0x55,0xc7,0x54,0xac,0x18,0x9a,0xf9,0x7a,0x73,0x0f,0xb3,0x1c,0xc5,0xdc,0x78,0x33,0x90,0xc7,0x0c,0xe1,0x4c,0x33,0xbc,0x89,0x2b,0x9a,0xe9,0xf8,0x89,0xc1,0x29,0xae,0x12,0xcf,0x01,0x0d,0x1f,0xcb,0xc0,0x9e,0xa9,0xae,0xf7,0x34,0x3a,0xcc,0xef,0xd1,0x0d,0x22,0x4e,0x9c,0xd0,0x21,0x75,0xca,0x55,0xea,0xa5,0xeb,0x58,0xe9,0x4f,0xd1,0x5f},\n\t{0x2c,0xab,0x45,0x28,0xdf,0x2d,0xdc,0xb5,0x93,0xe9,0x7f,0x0a,0xb1,0x91,0x94,0x06,0x46,0xe3,0x02,0x40,0xd6,0xf3,0xaa,0x4d,0xd1,0x74,0x64,0x58,0x6e,0xf2,0x3f,0x09,0x8e,0xcb,0x93,0xbf,0x5e,0xfe,0x42,0x3c,0x5f,0x56,0xd4,0x36,0x51,0xa8,0xdf,0xbe,0xe8,0x20,0x42,0x88,0x9e,0x85,0xf0,0xe0,0x28,0xd1,0x25,0x07,0x96,0x3f,0xd7,0x7d,0x29,0x98,0x05,0x68,0xfe,0x24,0x0d,0xb1,0xe5,0x23,0xaf,0xdb,0x72,0x06,0x73,0x75,0x29,0xac,0x57,0xb4,0x3a,0x25,0x67,0x13,0xa4,0x70,0xb4,0x86,0xbc,0xbc,0x59,0x2f},\n\t{0x5f,0x13,0x17,0x99,0x42,0x7d,0x84,0x83,0xd7,0x03,0x7d,0x56,0x1f,0x91,0x1b,0xad,0xd1,0xaa,0x77,0xbe,0xd9,0x48,0x77,0x7e,0x4a,0xaf,0x51,0x2e,0x2e,0xb4,0x58,0x54,0x01,0xc3,0x91,0xb6,0x60,0xd5,0x41,0x70,0x1e,0xe7,0xd7,0xad,0x3f,0x1b,0x20,0x85,0x85,0x55,0x33,0x11,0x63,0xe1,0xc2,0x16,0xb1,0x28,0x08,0x01,0x3d,0x5e,0xa5,0x2a,0x4f,0x44,0x07,0x0c,0xe6,0x92,0x51,0xed,0x10,0x1d,0x42,0x74,0x2d,0x4e,0xc5,0x42,0x64,0xc8,0xb5,0xfd,0x82,0x4c,0x2b,0x35,0x64,0x86,0x76,0x8a,0x4a,0x00,0xe9,0x13},\n\t{0xdb,0xce,0x2f,0x83,0x45,0x88,0x9d,0x73,0x63,0xf8,0x6b,0xae,0xc9,0xd6,0x38,0xfa,0xf7,0xfe,0x4f,0xb7,0xca,0x0d,0xbc,0x32,0x5e,0xe4,0xbc,0x14,0x88,0x7e,0x93,0x73,0x7f,0x87,0x3b,0x19,0xc9,0x00,0x2e,0xbb,0x6b,0x50,0xdc,0xe0,0x90,0xa8,0xe3,0xec,0x9f,0x64,0xde,0x36,0xc0,0xb7,0xf3,0xec,0x1a,0x9e,0xde,0x98,0x08,0x04,0x46,0x5f,0x8d,0xf4,0x7b,0x29,0x16,0x71,0x03,0xb9,0x34,0x68,0xf0,0xd4,0x22,0x3b,0xd1,0xa9,0xc6,0xbd,0x96,0x46,0x57,0x15,0x97,0xe1,0x35,0xe8,0xd5,0x91,0xe8,0xa4,0xf8,0x2c},\n\t{0x67,0x0f,0x11,0x07,0x87,0xfd,0x93,0x6d,0x49,0xb5,0x38,0x7c,0xd3,0x09,0x4c,0xdd,0x86,0x6a,0x73,0xc2,0x4c,0x6a,0xb1,0x7c,0x09,0x2a,0x25,0x58,0x6e,0xbd,0x49,0x20,0xa2,0x6b,0xd0,0x17,0x7e,0x48,0xb5,0x2c,0x6b,0x19,0x50,0x39,0x1c,0x38,0xd2,0x24,0x30,0x8a,0x97,0x85,0x81,0x9c,0x65,0xd7,0xf6,0xa4,0xd6,0x91,0x28,0x7f,0x6f,0x7a,0x49,0xef,0x9a,0x6a,0x8d,0xfd,0x09,0x7d,0x0b,0xb9,0x3d,0x5b,0xbe,0x60,0xee,0xf0,0xd4,0xbf,0x9e,0x51,0x2c,0xb5,0x21,0x4c,0x1d,0x94,0x45,0xc5,0xdf,0xaa,0x11,0x60},\n\t{0x3c,0xf8,0x95,0xcf,0x6d,0x92,0x67,0x5f,0x71,0x90,0x28,0x71,0x61,0x85,0x7e,0x7c,0x5b,0x7a,0x8f,0x99,0xf3,0xe7,0xa1,0xd6,0xe0,0xf9,0x62,0x0b,0x1b,0xcc,0xc5,0x6f,0x90,0xf8,0xcb,0x02,0xc8,0xd0,0xde,0x63,0xaa,0x6a,0xff,0x0d,0xca,0x98,0xd0,0xfb,0x99,0xed,0xb6,0xb9,0xfd,0x0a,0x4d,0x62,0x1e,0x0b,0x34,0x79,0xb7,0x18,0xce,0x69,0xcb,0x79,0x98,0xb2,0x28,0x55,0xef,0xd1,0x92,0x90,0x7e,0xd4,0x3c,0xae,0x1a,0xdd,0x52,0x23,0x9f,0x18,0x42,0x04,0x7e,0x12,0xf1,0x01,0x71,0xe5,0x3a,0x6b,0x59,0x15},\n\t{0xa2,0x79,0x91,0x3f,0xd2,0x39,0x27,0x46,0xcf,0xdd,0xd6,0x97,0x31,0x12,0x83,0xff,0x8a,0x14,0xf2,0x53,0xb5,0xde,0x07,0x13,0xda,0x4d,0x5f,0x7b,0x68,0x37,0x22,0x0d,0xca,0x24,0x51,0x7e,0x16,0x31,0xff,0x09,0xdf,0x45,0xc7,0xd9,0x8b,0x15,0xe4,0x0b,0xe5,0x56,0xf5,0x7e,0x22,0x7d,0x2b,0x29,0x38,0xd1,0xb6,0xaf,0x41,0xe2,0xa4,0x3a,0xf5,0x05,0x33,0x2a,0xbf,0x38,0xc1,0x2c,0xc3,0x26,0xe9,0xa2,0x8f,0x3f,0x58,0x48,0xeb,0xd2,0x49,0x55,0xa2,0xb1,0x3a,0x08,0x6c,0xa3,0x87,0x46,0x6e,0xaa,0xfc,0x32},\n\t{0xf5,0x9a,0x7d,0xc5,0x8d,0x6e,0xc5,0x7b,0xf2,0xbd,0xf0,0x9d,0xed,0xd2,0x0b,0x3e,0xa3,0xe4,0xef,0x22,0xde,0x14,0xc0,0xaa,0x5c,0x6a,0xbd,0xfe,0xce,0xe9,0x27,0x46,0xdf,0xcc,0x87,0x27,0x73,0xa4,0x07,0x32,0xf8,0xe3,0x13,0xf2,0x08,0x19,0xe3,0x17,0x4e,0x96,0x0d,0xf6,0xd7,0xec,0xb2,0xd5,0xe9,0x0b,0x60,0xc2,0x36,0x63,0x6f,0x74,0x1c,0x97,0x6c,0xab,0x45,0xf3,0x4a,0x3f,0x1f,0x73,0x43,0x99,0x72,0xeb,0x88,0xe2,0x6d,0x18,0x44,0x03,0x8a,0x6a,0x59,0x33,0x93,0x62,0xd6,0x7e,0x00,0x17,0x49,0x7b},\n\t{0x64,0xb0,0x84,0xab,0x5c,0xfb,0x85,0x2d,0x14,0xbc,0xf3,0x89,0xd2,0x10,0x78,0x49,0x0c,0xce,0x15,0x7b,0x44,0xdc,0x6a,0x47,0x7b,0xfd,0x44,0xf8,0x76,0xa3,0x2b,0x12,0xdd,0xa2,0x53,0xdd,0x28,0x1b,0x34,0x54,0x3f,0xfc,0x42,0xdf,0x5b,0x90,0x17,0xaa,0xf4,0xf8,0xd2,0x4d,0xd9,0x92,0xf5,0x0f,0x7d,0xd3,0x8c,0xe0,0x0f,0x62,0x03,0x1d,0x54,0xe5,0xb4,0xa2,0xcd,0x32,0x02,0xc2,0x7f,0x18,0x5d,0x11,0x42,0xfd,0xd0,0x9e,0xd9,0x79,0xd4,0x7d,0xbe,0xb4,0xab,0x2e,0x4c,0xec,0x68,0x2b,0xf5,0x0b,0xc7,0x02},\n\t{0xbb,0x2f,0x0b,0x5d,0x4b,0xec,0x87,0xa2,0xca,0x82,0x48,0x07,0x90,0x57,0x5c,0x41,0x5c,0x81,0xd0,0xc1,0x1e,0xa6,0x44,0xe0,0xe0,0xf5,0x9e,0x40,0x0a,0x4f,0x33,0x26,0xe1,0x72,0x8d,0x45,0xbf,0x32,0xe5,0xac,0xb5,0x3c,0xb7,0x7c,0xe0,0x68,0xe7,0x5b,0xe7,0xbd,0x8b,0xee,0x94,0x7d,0xcf,0x56,0x03,0x3a,0xb4,0xfe,0xe3,0x97,0x06,0x6b,0xc0,0xa3,0x62,0xdf,0x4a,0xf0,0xc8,0xb6,0x5d,0xa4,0x6d,0x07,0xef,0x00,0xf0,0x3e,0xa9,0xd2,0xf0,0x49,0x58,0xb9,0x9c,0x9c,0xae,0x2f,0x1b,0x44,0x43,0x7f,0xc3,0x1c},\n\t{0x4f,0x32,0xc7,0x5c,0x5a,0x56,0x8f,0x50,0x22,0xa9,0x06,0xe5,0xc0,0xc4,0x61,0xd0,0x19,0xac,0x45,0x5c,0xdb,0xab,0x18,0xfb,0x4a,0x31,0x80,0x03,0xc1,0x09,0x68,0x6c,0xb9,0xae,0xce,0xc9,0xf1,0x56,0x66,0xd7,0x6a,0x65,0xe5,0x18,0xf8,0x15,0x5b,0x1c,0x34,0x23,0x4c,0x84,0x32,0x28,0xe7,0x26,0x38,0x68,0x19,0x2f,0x77,0x6f,0x34,0x3a,0xc8,0x6a,0xda,0xe2,0x12,0x51,0xd5,0xd2,0xed,0x51,0xe8,0xb1,0x31,0x03,0xbd,0xe9,0x62,0x72,0xc6,0x8e,0xdd,0x46,0x07,0x96,0xd0,0xc5,0xf7,0x6e,0x9f,0x1b,0x91,0x05},\n\t{0xbb,0x0e,0xdf,0xf5,0x83,0x99,0x33,0xc1,0xac,0x4c,0x2c,0x51,0x8f,0x75,0xf3,0xc0,0xe1,0x98,0xb3,0x0b,0x0a,0x13,0xf1,0x2c,0x62,0x0c,0x27,0xaa,0xf9,0xec,0x3c,0x6b,0xef,0xea,0x2e,0x51,0xf3,0xac,0x49,0x53,0x49,0xcb,0xc1,0x1c,0xd3,0x41,0xc1,0x20,0x8d,0x68,0x9a,0xa9,0x07,0x0c,0x18,0x24,0x17,0x2d,0x4b,0xc6,0xd1,0xf9,0x5e,0x55,0x08,0xbd,0x73,0x3b,0xba,0x70,0xa7,0x36,0x0c,0xbf,0xaf,0xa3,0x08,0xef,0x4a,0x62,0xf2,0x46,0x09,0xb4,0x98,0xff,0x37,0x57,0x9d,0x74,0x81,0x33,0xe1,0x4d,0x5f,0x67},\n\t{0xfc,0x82,0x17,0x6b,0x03,0x52,0x2c,0x0e,0xb4,0x83,0xad,0x6c,0x81,0x6c,0x81,0x64,0x3e,0x07,0x64,0x69,0xd9,0xbd,0xdc,0xd0,0x20,0xc5,0x64,0x01,0xf7,0x9d,0xd9,0x13,0x1d,0xb3,0xda,0x3b,0xd9,0xf6,0x2f,0xa1,0xfe,0x2d,0x65,0x9d,0x0f,0xd8,0x25,0x07,0x87,0x94,0xbe,0x9a,0xf3,0x4f,0x9c,0x01,0x43,0x3c,0xcd,0x82,0xb8,0x50,0xf4,0x60,0xca,0xc0,0xe5,0x21,0xc3,0x5e,0x4b,0x01,0xa2,0xbf,0x19,0xd7,0xc9,0x69,0xcb,0x4f,0xa0,0x23,0x00,0x75,0x18,0x1c,0x5f,0x4e,0x80,0xac,0xed,0x55,0x9e,0xde,0x06,0x1c},\n\t{0xe2,0xc4,0x3e,0xa3,0xd6,0x7a,0x0f,0x99,0x8e,0xe0,0x2e,0xbe,0x38,0xf9,0x08,0x66,0x15,0x45,0x28,0x63,0xc5,0x43,0xa1,0x9c,0x0d,0xb6,0x2d,0xec,0x1f,0x8a,0xf3,0x4c,0xaa,0x69,0x6d,0xff,0x40,0x2b,0xd5,0xff,0xbb,0x49,0x40,0xdc,0x18,0x0b,0x53,0x34,0x97,0x98,0x4d,0xa3,0x2f,0x5c,0x4a,0x5e,0x2d,0xba,0x32,0x7d,0x8e,0x6f,0x09,0x78,0xe7,0x5c,0xfa,0x0d,0x65,0xaa,0xaa,0xa0,0x8c,0x47,0xb5,0x48,0x2a,0x9e,0xc4,0xf9,0x5b,0x72,0x03,0x70,0x7d,0xcc,0x09,0x4f,0xbe,0x1a,0x09,0x26,0x3a,0xad,0x3c,0x37},\n\t{0x7c,0xf5,0xc9,0x82,0x4d,0x63,0x94,0xb2,0x36,0x45,0x93,0x24,0xe1,0xfd,0xcb,0x1f,0x5a,0xdb,0x8c,0x41,0xb3,0x4d,0x9c,0x9e,0xfc,0x19,0x44,0x45,0xd9,0xf3,0x40,0x00,0xad,0xbb,0xdd,0x89,0xfb,0xa8,0xbe,0xf1,0xcb,0xae,0xae,0x61,0xbc,0x2c,0xcb,0x3b,0x9d,0x8d,0x9b,0x1f,0xbb,0xa7,0x58,0x8f,0x86,0xa6,0x12,0x51,0xda,0x7e,0x54,0x21,0xd3,0x86,0x59,0xfd,0x39,0xe9,0xfd,0xde,0x0c,0x38,0x0a,0x51,0x89,0x2c,0x27,0xf4,0xb9,0x19,0x31,0xbb,0x07,0xa4,0x2b,0xb7,0xf4,0x4d,0x25,0x4a,0x33,0x0a,0x55,0x63},\n\t{0x37,0xcf,0x69,0xb5,0xed,0xd6,0x07,0x65,0xe1,0x2e,0xa5,0x0c,0xb0,0x29,0x84,0x17,0x5d,0xd6,0x6b,0xeb,0x90,0x00,0x7c,0xea,0x51,0x8f,0xf7,0xda,0xc7,0x62,0xea,0x3e,0x49,0x7b,0x54,0x72,0x45,0x58,0xba,0x9b,0xe0,0x08,0xc4,0xe2,0xfa,0xc6,0x05,0xf3,0x8d,0xf1,0x34,0xc7,0x69,0xfa,0xe8,0x60,0x7a,0x76,0x7d,0xaa,0xaf,0x2b,0xa9,0x39,0x4e,0x27,0x93,0xe6,0x13,0xc7,0x24,0x9d,0x75,0xd3,0xdb,0x68,0x77,0x85,0x63,0x5f,0x9a,0xb3,0x8a,0xeb,0x60,0x55,0x52,0x70,0xcd,0xc4,0xc9,0x65,0x06,0x6a,0x43,0x68},\n\t{0x27,0x3f,0x2f,0x20,0xe8,0x35,0x02,0xbc,0xb0,0x75,0xf9,0x64,0xe2,0x00,0x5c,0xc7,0x16,0x24,0x8c,0xa3,0xd5,0xe9,0xa4,0x91,0xf9,0x89,0xb7,0x8a,0xf6,0xe7,0xb6,0x17,0x7c,0x10,0x20,0xe8,0x17,0xd3,0x56,0x1e,0x65,0xe9,0x0a,0x84,0x44,0x68,0x26,0xc5,0x7a,0xfc,0x0f,0x32,0xc6,0xa1,0xe0,0xc1,0x72,0x14,0x61,0x91,0x9c,0x66,0x73,0x53,0x57,0x52,0x0e,0x9a,0xab,0x14,0x28,0x5d,0xfc,0xb3,0xca,0xc9,0x84,0x20,0x8f,0x90,0xca,0x1e,0x2d,0x5b,0x88,0xf5,0xca,0xaf,0x11,0x7d,0xf8,0x78,0xa6,0xb5,0xb4,0x1c},\n\t{0x6c,0xfc,0x4a,0x39,0x6b,0xc0,0x64,0xb6,0xb1,0x5f,0xda,0x98,0x24,0xde,0x88,0x0c,0x34,0xd8,0xca,0x4b,0x16,0x03,0x8d,0x4f,0xa2,0x34,0x74,0xde,0x78,0xca,0x0b,0x33,0xe7,0x07,0xa0,0xa2,0x62,0xaa,0x74,0x6b,0xb1,0xc7,0x71,0xf0,0xb0,0xe0,0x11,0xf3,0x23,0xe2,0x0b,0x00,0x38,0xe4,0x07,0x57,0xac,0x6e,0xef,0x82,0x2d,0xfd,0xc0,0x2d,0x4e,0x74,0x19,0x11,0x84,0xff,0x2e,0x98,0x24,0x47,0x07,0x2b,0x96,0x5e,0x69,0xf9,0xfb,0x53,0xc9,0xbf,0x4f,0xc1,0x8a,0xc5,0xf5,0x1c,0x9f,0x36,0x1b,0xbe,0x31,0x3c},\n\t{0xee,0x8a,0x94,0x08,0x4d,0x86,0xf4,0xb0,0x6f,0x1c,0xba,0x91,0xee,0x19,0xdc,0x07,0x58,0xa1,0xac,0xa6,0xae,0xcd,0x75,0x79,0xbb,0xd4,0x62,0x42,0x13,0x61,0x0b,0x33,0x72,0x42,0xcb,0xf9,0x93,0xbc,0x68,0xc1,0x98,0xdb,0xce,0xc7,0x1f,0x71,0xb8,0xae,0x7a,0x8d,0xac,0x34,0xaa,0x52,0x0e,0x7f,0xbb,0x55,0x7d,0x7e,0x09,0xc1,0xce,0x41,0x8a,0x80,0x6d,0xa2,0xd7,0x19,0x96,0xf7,0x6d,0x15,0x9e,0x1d,0x9e,0xd4,0x1f,0xbb,0x27,0xdf,0xa1,0xdb,0x6c,0xc3,0xd7,0x73,0x7d,0x77,0x28,0x1f,0xd9,0x4c,0xb4,0x26},\n\t{0x75,0x74,0x38,0x8f,0x47,0x48,0xf0,0x51,0x3c,0xcb,0xbe,0x9c,0xf4,0xbc,0x5d,0xb2,0x55,0x20,0x9f,0xd9,0x44,0x12,0xab,0x9a,0xd6,0xa5,0x10,0x1c,0x6c,0x9e,0x70,0x2c,0x83,0x03,0x73,0x62,0x93,0xf2,0xb7,0xe1,0x2c,0x8a,0xca,0xeb,0xff,0x79,0x52,0x4b,0x14,0x13,0xd4,0xbf,0x8a,0x77,0xfc,0xda,0x0f,0x61,0x72,0x9c,0x14,0x10,0xeb,0x7d,0x7a,0xee,0x66,0x87,0x6a,0xaf,0x62,0xcb,0x0e,0xcd,0x53,0x55,0x04,0xec,0xcb,0x66,0xb5,0xe4,0x0b,0x0f,0x38,0x01,0x80,0x58,0xea,0xe2,0x2c,0xf6,0x9f,0x8e,0xe6,0x08},\n\t{0xad,0x30,0xc1,0x4b,0x0a,0x50,0xad,0x34,0x9c,0xd4,0x0b,0x3d,0x49,0xdb,0x38,0x8d,0xbe,0x89,0x0a,0x50,0x98,0x3d,0x5c,0xa2,0x09,0x3b,0xba,0xee,0x87,0x3f,0x1f,0x2f,0xf9,0xf2,0xb8,0x0a,0xd5,0x09,0x2d,0x2f,0xdf,0x23,0x59,0xc5,0x8d,0x21,0xb9,0xac,0xb9,0x6c,0x76,0x73,0x26,0x34,0x8f,0x4a,0xf5,0x19,0xf7,0x38,0xd7,0x3b,0xb1,0x4c,0x4a,0xb6,0x15,0xe5,0x75,0x8c,0x84,0xf7,0x38,0x90,0x4a,0xdb,0xba,0x01,0x95,0xa5,0x50,0x1b,0x75,0x3f,0x3f,0x31,0x0d,0xc2,0xe8,0x2e,0xae,0xc0,0x53,0xe3,0xa1,0x19},\n\t{0xc3,0x05,0xfa,0xba,0x60,0x75,0x1c,0x7d,0x61,0x5e,0xe5,0xc6,0xa0,0xa0,0xe1,0xb3,0x73,0x64,0xd6,0xc0,0x18,0x97,0x52,0xe3,0x86,0x34,0x0c,0xc2,0x11,0x6b,0x54,0x41,0xbd,0xbd,0x96,0xd5,0xcd,0x72,0x21,0xb4,0x40,0xfc,0xee,0x98,0x43,0x45,0xe0,0x93,0xb5,0x09,0x41,0xb4,0x47,0x53,0xb1,0x9f,0x34,0xae,0x66,0x02,0x99,0xd3,0x6b,0x73,0xb4,0xb3,0x34,0x93,0x50,0x2d,0x53,0x85,0x73,0x65,0x81,0x60,0x4b,0x11,0xfd,0x46,0x75,0x83,0x5c,0x42,0x30,0x5f,0x5f,0xcc,0x5c,0xab,0x7f,0xb8,0xa2,0x95,0x22,0x41},\n\t{0xe9,0xd6,0x7e,0xf5,0x88,0x9b,0xc9,0x19,0x25,0xc8,0xf8,0x6d,0x26,0xcb,0x93,0x53,0x73,0xd2,0x0a,0xb3,0x13,0x32,0xee,0x5c,0x34,0x2e,0x2d,0xb5,0xeb,0x53,0xe1,0x14,0xc6,0xea,0x93,0xe2,0x61,0x52,0x65,0x2e,0xdb,0xac,0x33,0x21,0x03,0x92,0x5a,0x84,0x6b,0x99,0x00,0x79,0xcb,0x75,0x09,0x46,0x80,0xdd,0x5a,0x19,0x8d,0xbb,0x60,0x07,0x8a,0x81,0xe6,0xcd,0x17,0x1a,0x3e,0x41,0x84,0xa0,0x69,0xed,0xa9,0x6d,0x15,0x57,0xb1,0xcc,0xca,0x46,0x8f,0x26,0xbf,0x2c,0xf2,0xc5,0x3a,0xc3,0x9b,0xbe,0x34,0x6b},\n\t{0xb2,0xc0,0x78,0x3a,0x64,0x2f,0xdf,0xf3,0x7c,0x02,0x2e,0xf2,0x1e,0x97,0x3e,0x4c,0xa3,0xb5,0xc1,0x49,0x5e,0x1c,0x7d,0xec,0x2d,0xdd,0x22,0x09,0x8f,0xc1,0x12,0x20,0xd3,0xf2,0x71,0x65,0x65,0x69,0xfc,0x11,0x7a,0x73,0x0e,0x53,0x45,0xe8,0xc9,0xc6,0x35,0x50,0xfe,0xd4,0xa2,0xe7,0x3a,0xe3,0x0b,0xd3,0x6d,0x2e,0xb6,0xc7,0xb9,0x01,0x29,0x9d,0xc8,0x5a,0xe5,0x55,0x0b,0x88,0x63,0xa7,0xa0,0x45,0x1f,0x24,0x83,0x14,0x1f,0x6c,0xe7,0xc2,0xdf,0xef,0x36,0x3d,0xe8,0xad,0x4b,0x4e,0x78,0x5b,0xaf,0x08},\n\t{0x33,0x25,0x1f,0x88,0xdc,0x99,0x34,0x28,0xb6,0x23,0x93,0x77,0xda,0x25,0x05,0x9d,0xf4,0x41,0x34,0x67,0xfb,0xdd,0x7a,0x89,0x8d,0x16,0x3a,0x16,0x71,0x9d,0xb7,0x32,0x4b,0x2c,0xcc,0x89,0xd2,0x14,0x73,0xe2,0x8d,0x17,0x87,0xa2,0x11,0xbd,0xe4,0x4b,0xce,0x64,0x33,0xfa,0xd6,0x28,0xd5,0x18,0x6e,0x82,0xd9,0xaf,0xd5,0xc1,0x23,0x64,0x6a,0xb3,0xfc,0xed,0xd9,0xf8,0x85,0xcc,0xf9,0xe5,0x46,0x37,0x8f,0xc2,0xbc,0x22,0xcd,0xd3,0xe5,0xf9,0x38,0xe3,0x9d,0xe4,0xcc,0x2d,0x3e,0xc1,0xfb,0x5e,0x0a,0x48},\n\t{0x71,0x20,0x62,0x01,0x0b,0xe7,0x51,0x0b,0xc5,0xaf,0x1d,0x8b,0xcf,0x05,0xb5,0x06,0xcd,0xab,0x5a,0xef,0x61,0xb0,0x6b,0x2c,0x31,0xbf,0xb7,0x0c,0x60,0x27,0xaa,0x47,0x1f,0x22,0xce,0x42,0xe4,0x4c,0x61,0xb6,0x28,0x39,0x05,0x4c,0xcc,0x9d,0x19,0x6e,0x03,0xbe,0x1c,0xdc,0xa4,0xb4,0x3f,0x66,0x06,0x8e,0x1c,0x69,0x47,0x1d,0xb3,0x24,0xc3,0xf8,0x15,0xc0,0xed,0x1e,0x54,0x2a,0x7c,0x3f,0x69,0x7c,0x7e,0xfe,0xa4,0x11,0xd6,0x78,0xa2,0x4e,0x13,0x66,0xaf,0xf0,0x94,0xa0,0xdd,0x14,0x5d,0x58,0x5b,0x54},\n\t{0x0f,0x3a,0xd4,0xa0,0x5e,0x27,0xbf,0x67,0xbe,0xee,0x9b,0x08,0x34,0x8e,0xe6,0xad,0x2e,0xe7,0x79,0xd4,0x4c,0x13,0x89,0x42,0x54,0x54,0xba,0x32,0xc3,0xf9,0x62,0x0f,0xe1,0x21,0xb3,0xe3,0xd0,0xe4,0x04,0x62,0x95,0x1e,0xff,0x28,0x7a,0x63,0xaa,0x3b,0x9e,0xbd,0x99,0x5b,0xfd,0xcf,0x0c,0x0b,0x71,0xd0,0xc8,0x64,0x3e,0xdc,0x22,0x4d,0x39,0x5f,0x3b,0xd6,0x89,0x65,0xb4,0xfc,0x61,0xcf,0xcb,0x57,0x3f,0x6a,0xae,0x5c,0x05,0xfa,0x3a,0x95,0xd2,0xc2,0xba,0xfe,0x36,0x14,0x37,0x36,0x1a,0xa0,0x0f,0x1c},\n\t{0xff,0x3d,0x94,0x22,0xb6,0x04,0xc6,0xd2,0xa0,0xb3,0xcf,0x44,0xce,0xbe,0x8c,0xbc,0x78,0x86,0x80,0x97,0xf3,0x4f,0x25,0x5d,0xbf,0xa6,0x1c,0x3b,0x4f,0x61,0xa3,0x0f,0x50,0x6a,0x93,0x8c,0x0e,0x2b,0x08,0x69,0xb6,0xc5,0xda,0xc1,0x35,0xa0,0xc9,0xf9,0x34,0xb6,0xdf,0xc4,0x54,0x3e,0xb7,0x6f,0x40,0xc1,0x2b,0x1d,0x9b,0x41,0x05,0x40,0xf0,0x82,0xbe,0xb9,0xbd,0xfe,0x03,0xa0,0x90,0xac,0x44,0x3a,0xaf,0xc1,0x89,0x20,0x8e,0xfa,0x54,0x19,0x91,0x9f,0x49,0xf8,0x42,0xab,0x40,0xef,0x8a,0x21,0xba,0x1f},\n\t{0x3e,0xf5,0xc8,0xfa,0x48,0x94,0x54,0xab,0x41,0x37,0xa6,0x7b,0x9a,0xe8,0xf6,0x81,0x01,0x5e,0x2b,0x6c,0x7d,0x6c,0xfd,0x74,0x42,0x6e,0xc8,0xa8,0xca,0x3a,0x2e,0x39,0x94,0x01,0x7b,0x3e,0x04,0x57,0x3e,0x4f,0x7f,0xaf,0xda,0x08,0xee,0x3e,0x1d,0xa8,0xf1,0xde,0xdc,0x99,0xab,0xc6,0x39,0xc8,0xd5,0x61,0x77,0xff,0x13,0x5d,0x53,0x6c,0xaf,0x35,0x8a,0x3e,0xe9,0x34,0xbd,0x4c,0x16,0xe8,0x87,0x58,0x44,0x81,0x07,0x2e,0xab,0xb0,0x9a,0xf2,0x76,0x9c,0x31,0x19,0x3b,0xc1,0x0a,0xd5,0xe4,0x7f,0xe1,0x25},\n\t{0x76,0xf6,0x04,0x1e,0xd7,0x9b,0x28,0x0a,0x95,0x0f,0x42,0xd6,0x52,0x1c,0x8e,0x20,0xab,0x1f,0x69,0x34,0xb0,0xd8,0x86,0x51,0x51,0xb3,0x9f,0x2a,0x44,0x51,0x57,0x25,0xa7,0x21,0xf1,0x76,0xf5,0x7f,0x5f,0x91,0xe3,0x87,0xcd,0x2f,0x27,0x32,0x4a,0xc3,0x26,0xe5,0x1b,0x4d,0xde,0x2f,0xba,0xcc,0x9b,0x89,0x69,0x89,0x8f,0x82,0xba,0x6b,0x01,0x39,0xfe,0x90,0x66,0xbc,0xd1,0xe2,0xd5,0x7a,0x99,0xa0,0x18,0x4a,0xb5,0x4c,0xd4,0x60,0x84,0xaf,0x14,0x69,0x1d,0x97,0xe4,0x7b,0x6b,0x7f,0x4f,0x50,0x9d,0x55},\n\t{0xd5,0x54,0xeb,0xb3,0x78,0x83,0x73,0xa7,0x7c,0x3c,0x55,0xa5,0x66,0xd3,0x69,0x1d,0xba,0x00,0x28,0xf9,0x62,0xcf,0x26,0x0a,0x17,0x32,0x7e,0x80,0xd5,0x12,0xab,0x01,0xfd,0x66,0xd2,0xf6,0xe7,0x91,0x48,0x9c,0x1b,0x78,0x07,0x03,0x9b,0xa1,0x44,0x07,0x3b,0xe2,0x61,0x60,0x1d,0x8f,0x38,0x88,0x0e,0xd5,0x4b,0x35,0xa3,0xa6,0x3e,0x12,0x96,0x2d,0xe3,0x41,0x90,0x18,0x8d,0x11,0x48,0x58,0x31,0xd8,0xc2,0xe3,0xed,0xb9,0xd9,0x45,0x32,0xd8,0x71,0x42,0xab,0x1e,0x54,0xa1,0x18,0xc9,0xe2,0x61,0x39,0x4a},\n\t{0xa0,0xbb,0xe6,0xf8,0xe0,0x3b,0xdc,0x71,0x0a,0xe3,0xff,0x7e,0x34,0xf8,0xce,0xd6,0x6a,0x47,0x3a,0xe1,0x5f,0x42,0x92,0xa9,0x63,0xb7,0x1d,0xfb,0xe3,0xbc,0xd6,0x2c,0x1e,0x3f,0x23,0xf3,0x44,0xd6,0x27,0x03,0x16,0xf0,0xfc,0x34,0x0e,0x26,0x9a,0x49,0x79,0xb9,0xda,0xf2,0x16,0xa7,0xb5,0x83,0x1f,0x11,0xd4,0x9b,0xad,0xee,0xac,0x68,0x10,0xc2,0xd7,0xf3,0x0e,0xc9,0xb4,0x38,0x0c,0x04,0xad,0xb7,0x24,0x6e,0x8e,0x30,0x23,0x3e,0xe7,0xb7,0xf1,0xd9,0x60,0x38,0x97,0xf5,0x08,0xb5,0xd5,0x60,0x57,0x59},\n\t{0x97,0x63,0xaa,0x04,0xe1,0xbf,0x29,0x61,0xcb,0xfc,0xa7,0xa4,0x08,0x00,0x96,0x8f,0x58,0x94,0x90,0x7d,0x89,0xc0,0x8b,0x3f,0xa9,0x91,0xb2,0xdc,0x3e,0xa4,0x9f,0x70,0x90,0x27,0x02,0xfd,0xeb,0xcb,0x2a,0x88,0x60,0x57,0x11,0xc4,0x05,0x33,0xaf,0x89,0xf4,0x73,0x34,0x7d,0xe3,0x92,0xf4,0x65,0x2b,0x5a,0x51,0x54,0xdf,0xc5,0xb2,0x2c,0xca,0x2a,0xfd,0x63,0x8c,0x5d,0x0a,0xeb,0xff,0x4e,0x69,0x2e,0x66,0xc1,0x2b,0xd2,0x3a,0xb0,0xcb,0xf8,0x6e,0xf3,0x23,0x27,0x1f,0x13,0xc8,0xf0,0xec,0x29,0xf0,0x70},\n\t{0x33,0x3e,0xed,0x2e,0xb3,0x07,0x13,0x46,0xe7,0x81,0x55,0xa4,0x33,0x2f,0x04,0xae,0x66,0x03,0x5f,0x19,0xd3,0x49,0x44,0xc9,0x58,0x48,0x31,0x6c,0x8a,0x5d,0x7d,0x0b,0xb9,0xb0,0x10,0x5e,0xaa,0xaf,0x6a,0x2a,0xa9,0x1a,0x04,0xef,0x70,0xa3,0xf0,0x78,0x1f,0xd6,0x3a,0xaa,0x77,0xfb,0x3e,0x77,0xe1,0xd9,0x4b,0xa7,0xa2,0xa5,0xec,0x44,0x43,0xd5,0x95,0x7b,0x32,0x48,0xd4,0x25,0x1d,0x0f,0x34,0xa3,0x00,0x83,0xd3,0x70,0x2b,0xc5,0xe1,0x60,0x1c,0x53,0x1c,0xde,0xe4,0xe9,0x7d,0x2c,0x51,0x24,0x22,0x27},\n\t{0x2e,0x34,0xc5,0x49,0xaf,0x92,0xbc,0x1a,0xd0,0xfa,0xe6,0xb2,0x11,0xd8,0xee,0xff,0x29,0x4e,0xc8,0xfc,0x8d,0x8c,0xa2,0xef,0x43,0xc5,0x4c,0xa4,0x18,0xdf,0xb5,0x11,0xfc,0x75,0xa9,0x42,0x8a,0xbb,0x7b,0xbf,0x58,0xa3,0xad,0x96,0x77,0x39,0x5c,0x8c,0x48,0xaa,0xed,0xcd,0x6f,0xc7,0x7f,0xe2,0xa6,0x20,0xbc,0xf6,0xd7,0x5f,0x73,0x19,0x66,0x42,0xc8,0x42,0xd0,0x90,0xab,0xe3,0x7e,0x54,0x19,0x7f,0x0f,0x8e,0x84,0xeb,0xb9,0x97,0xa4,0x65,0xd0,0xa1,0x03,0x25,0x5f,0x89,0xdf,0x91,0x11,0x91,0xef,0x0f}\n};\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-batchverify.h",
    "content": "/*\n\tEd25519 batch verification\n*/\n\n#define max_batch_size 64\n#define heap_batch_size ((max_batch_size * 2) + 1)\n\n/* which limb is the 128th bit in? */\nstatic const size_t limb128bits = (128 + bignum256modm_bits_per_limb - 1) / bignum256modm_bits_per_limb;\n\ntypedef size_t heap_index_t;\n\ntypedef struct batch_heap_t {\n\tunsigned char r[heap_batch_size][16]; /* 128 bit random values */\n\tge25519 points[heap_batch_size];\n\tbignum256modm scalars[heap_batch_size];\n\theap_index_t heap[heap_batch_size];\n\tsize_t size;\n} batch_heap;\n\n/* swap two values in the heap */\nstatic void\nheap_swap(heap_index_t *heap, size_t a, size_t b) {\n\theap_index_t temp;\n\ttemp = heap[a];\n\theap[a] = heap[b];\n\theap[b] = temp;\n}\n\n/* add the scalar at the end of the list to the heap */\nstatic void\nheap_insert_next(batch_heap *heap) {\n\tsize_t node = heap->size, parent;\n\theap_index_t *pheap = heap->heap;\n\tbignum256modm *scalars = heap->scalars;\n\n\t/* insert at the bottom */\n\tpheap[node] = (heap_index_t)node;\n\n\t/* sift node up to its sorted spot */\n\tparent = (node - 1) / 2;\n\twhile (node && lt256_modm_batch(scalars[pheap[parent]], scalars[pheap[node]], bignum256modm_limb_size - 1)) {\n\t\theap_swap(pheap, parent, node);\n\t\tnode = parent;\n\t\tparent = (node - 1) / 2;\n\t}\n\theap->size++;\n}\n\n/* update the heap when the root element is updated */\nstatic void\nheap_updated_root(batch_heap *heap, size_t limbsize) {\n\tsize_t node, parent, childr, childl;\n\theap_index_t *pheap = heap->heap;\n\tbignum256modm *scalars = heap->scalars;\n\n\t/* sift root to the bottom */\n\tparent = 0;\n\tnode = 1;\n\tchildl = 1;\n\tchildr = 2;\n\twhile ((childr < heap->size)) {\n\t\tnode = lt256_modm_batch(scalars[pheap[childl]], scalars[pheap[childr]], limbsize) ? childr : childl;\n\t\theap_swap(pheap, parent, node);\n\t\tparent = node;\n\t\tchildl = (parent * 2) + 1;\n\t\tchildr = childl + 1;\n\t}\n\n\t/* sift root back up to its sorted spot */\n\tparent = (node - 1) / 2;\n\twhile (node && lte256_modm_batch(scalars[pheap[parent]], scalars[pheap[node]], limbsize)) {\n\t\theap_swap(pheap, parent, node);\n\t\tnode = parent;\n\t\tparent = (node - 1) / 2;\n\t}\n}\n\n/* build the heap with count elements, count must be >= 3 */\nstatic void\nheap_build(batch_heap *heap, size_t count) {\n\theap->heap[0] = 0;\n\theap->size = 0;\n\twhile (heap->size < count)\n\t\theap_insert_next(heap);\n}\n\n/* extend the heap to contain new_count elements */\nstatic void\nheap_extend(batch_heap *heap, size_t new_count) {\n\twhile (heap->size < new_count)\n\t\theap_insert_next(heap);\n}\n\n/* get the top 2 elements of the heap */\nstatic void\nheap_get_top2(batch_heap *heap, heap_index_t *max1, heap_index_t *max2, size_t limbsize) {\n\theap_index_t h0 = heap->heap[0], h1 = heap->heap[1], h2 = heap->heap[2];\n\tif (lt256_modm_batch(heap->scalars[h1], heap->scalars[h2], limbsize))\n\t\th1 = h2;\n\t*max1 = h0;\n\t*max2 = h1;\n}\n\n/* */\nstatic void\nge25519_multi_scalarmult_vartime_final(ge25519 *r, ge25519 *point, bignum256modm scalar) {\n\tconst bignum256modm_element_t topbit = ((bignum256modm_element_t)1 << (bignum256modm_bits_per_limb - 1));\n\tsize_t limb = limb128bits;\n\tbignum256modm_element_t flag;\n\n\tif (isone256_modm_batch(scalar)) {\n\t\t/* this will happen most of the time after bos-carter */\n\t\t*r = *point;\n\t\treturn;\n\t} else if (iszero256_modm_batch(scalar)) {\n\t\t/* this will only happen if all scalars == 0 */\n\t\tmemset(r, 0, sizeof(*r));\n\t\tr->y[0] = 1;\n\t\tr->z[0] = 1;\n\t\treturn;\n\t}\n\n\t*r = *point;\n\n\t/* find the limb where first bit is set */\n\twhile (!scalar[limb])\n\t\tlimb--;\n\n\t/* find the first bit */\n\tflag = topbit;\n\twhile ((scalar[limb] & flag) == 0)\n\t\tflag >>= 1;\n\n\t/* exponentiate */\n\tfor (;;) {\n\t\tge25519_double(r, r);\n\t\tif (scalar[limb] & flag)\n\t\t\tge25519_add(r, r, point);\n\n\t\tflag >>= 1;\n\t\tif (!flag) {\n\t\t\tif (!limb--)\n\t\t\t\tbreak;\n\t\t\tflag = topbit;\n\t\t}\n\t}\n}\n\n/* count must be >= 5 */\nstatic void\nge25519_multi_scalarmult_vartime(ge25519 *r, batch_heap *heap, size_t count) {\n\theap_index_t max1, max2;\n\n\t/* start with the full limb size */\n\tsize_t limbsize = bignum256modm_limb_size - 1;\n\n\t/* whether the heap has been extended to include the 128 bit scalars */\n\tint extended = 0;\n\n\t/* grab an odd number of scalars to build the heap, unknown limb sizes */\n\theap_build(heap, ((count + 1) / 2) | 1);\n\n\tfor (;;) {\n\t\theap_get_top2(heap, &max1, &max2, limbsize);\n\n\t\t/* only one scalar remaining, we're done */\n\t\tif (iszero256_modm_batch(heap->scalars[max2]))\n\t\t\tbreak;\n\n\t\t/* exhausted another limb? */\n\t\tif (!heap->scalars[max1][limbsize])\n\t\t\tlimbsize -= 1;\n\n\t\t/* can we extend to the 128 bit scalars? */\n\t\tif (!extended && isatmost128bits256_modm_batch(heap->scalars[max1])) {\n\t\t\theap_extend(heap, count);\n\t\t\theap_get_top2(heap, &max1, &max2, limbsize);\n\t\t\textended = 1;\n\t\t}\n\n\t\tsub256_modm_batch(heap->scalars[max1], heap->scalars[max1], heap->scalars[max2], limbsize);\n\t\tge25519_add(&heap->points[max2], &heap->points[max2], &heap->points[max1]);\n\t\theap_updated_root(heap, limbsize);\n\t}\n\n\tge25519_multi_scalarmult_vartime_final(r, &heap->points[max1], heap->scalars[max1]);\n}\n\n/* not actually used for anything other than testing */\nunsigned char batch_point_buffer[3][32];\n\nstatic int\nge25519_is_neutral_vartime(const ge25519 *p) {\n\tstatic const unsigned char zero[32] = {0};\n\tunsigned char point_buffer[3][32];\n\tcurve25519_contract(point_buffer[0], p->x);\n\tcurve25519_contract(point_buffer[1], p->y);\n\tcurve25519_contract(point_buffer[2], p->z);\n\tmemcpy(batch_point_buffer[1], point_buffer[1], 32);\n\treturn (memcmp(point_buffer[0], zero, 32) == 0) && (memcmp(point_buffer[1], point_buffer[2], 32) == 0);\n}\n\nint\nED25519_FN(ed25519_sign_open_batch) (const unsigned char **m, size_t *mlen, const unsigned char **pk, const unsigned char **RS, size_t num, int *valid) {\n\tbatch_heap ALIGN(16) batch;\n\tge25519 ALIGN(16) p;\n\tbignum256modm *r_scalars;\n\tsize_t i, batchsize;\n\tunsigned char hram[64];\n\tint ret = 0;\n\n\tfor (i = 0; i < num; i++)\n\t\tvalid[i] = 1;\n\n\twhile (num > 3) {\n\t\tbatchsize = (num > max_batch_size) ? max_batch_size : num;\n\n\t\t/* generate r (scalars[batchsize+1]..scalars[2*batchsize] */\n\t\tED25519_FN(ed25519_randombytes_unsafe) (batch.r, batchsize * 16);\n\t\tr_scalars = &batch.scalars[batchsize + 1];\n\t\tfor (i = 0; i < batchsize; i++)\n\t\t\texpand256_modm(r_scalars[i], batch.r[i], 16);\n\n\t\t/* compute scalars[0] = ((r1s1 + r2s2 + ...)) */\n\t\tfor (i = 0; i < batchsize; i++) {\n\t\t\texpand256_modm(batch.scalars[i], RS[i] + 32, 32);\n\t\t\tmul256_modm(batch.scalars[i], batch.scalars[i], r_scalars[i]);\n\t\t}\n\t\tfor (i = 1; i < batchsize; i++)\n\t\t\tadd256_modm(batch.scalars[0], batch.scalars[0], batch.scalars[i]);\n\n\t\t/* compute scalars[1]..scalars[batchsize] as r[i]*H(R[i],A[i],m[i]) */\n\t\tfor (i = 0; i < batchsize; i++) {\n\t\t\ted25519_hram(hram, RS[i], pk[i], m[i], mlen[i]);\n\t\t\texpand256_modm(batch.scalars[i+1], hram, 64);\n\t\t\tmul256_modm(batch.scalars[i+1], batch.scalars[i+1], r_scalars[i]);\n\t\t}\n\n\t\t/* compute points */\n\t\tbatch.points[0] = ge25519_basepoint;\n\t\tfor (i = 0; i < batchsize; i++)\n\t\t\tif (!ge25519_unpack_negative_vartime(&batch.points[i+1], pk[i]))\n\t\t\t\tgoto fallback;\n\t\tfor (i = 0; i < batchsize; i++)\n\t\t\tif (!ge25519_unpack_negative_vartime(&batch.points[batchsize+i+1], RS[i]))\n\t\t\t\tgoto fallback;\n\n\t\tge25519_multi_scalarmult_vartime(&p, &batch, (batchsize * 2) + 1);\n\t\tif (!ge25519_is_neutral_vartime(&p)) {\n\t\t\tret |= 2;\n\n\t\t\tfallback:\n\t\t\tfor (i = 0; i < batchsize; i++) {\n\t\t\t\tvalid[i] = ED25519_FN(ed25519_sign_open) (m[i], mlen[i], pk[i], RS[i]) ? 0 : 1;\n\t\t\t\tret |= (valid[i] ^ 1);\n\t\t\t}\n\t\t}\n\n\t\tm += batchsize;\n\t\tmlen += batchsize;\n\t\tpk += batchsize;\n\t\tRS += batchsize;\n\t\tnum -= batchsize;\n\t\tvalid += batchsize;\n\t}\n\n\tfor (i = 0; i < num; i++) {\n\t\tvalid[i] = ED25519_FN(ed25519_sign_open) (m[i], mlen[i], pk[i], RS[i]) ? 0 : 1;\n\t\tret |= (valid[i] ^ 1);\n\t}\n\n\treturn ret;\n}\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-impl-base.h",
    "content": "/*\n\tconversions\n*/\n\nDONNA_INLINE static void\nge25519_p1p1_to_partial(ge25519 *r, const ge25519_p1p1 *p) {\n\tcurve25519_mul(r->x, p->x, p->t);\n\tcurve25519_mul(r->y, p->y, p->z);\n\tcurve25519_mul(r->z, p->z, p->t); \n}\n\nDONNA_INLINE static void\nge25519_p1p1_to_full(ge25519 *r, const ge25519_p1p1 *p) {\n\tcurve25519_mul(r->x, p->x, p->t);\n\tcurve25519_mul(r->y, p->y, p->z);\n\tcurve25519_mul(r->z, p->z, p->t); \n\tcurve25519_mul(r->t, p->x, p->y); \n}\n\nstatic void\nge25519_full_to_pniels(ge25519_pniels *p, const ge25519 *r) {\n\tcurve25519_sub(p->ysubx, r->y, r->x);\n\tcurve25519_add(p->xaddy, r->y, r->x);\n\tcurve25519_copy(p->z, r->z);\n\tcurve25519_mul(p->t2d, r->t, ge25519_ec2d);\n}\n\n/*\n\tadding & doubling\n*/\n\nstatic void\nge25519_add_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519 *q) {\n\tbignum25519 a,b,c,d,t,u;\n\n\tcurve25519_sub(a, p->y, p->x);\n\tcurve25519_add(b, p->y, p->x);\n\tcurve25519_sub(t, q->y, q->x);\n\tcurve25519_add(u, q->y, q->x);\n\tcurve25519_mul(a, a, t);\n\tcurve25519_mul(b, b, u);\n\tcurve25519_mul(c, p->t, q->t);\n\tcurve25519_mul(c, c, ge25519_ec2d);\n\tcurve25519_mul(d, p->z, q->z);\n\tcurve25519_add(d, d, d);\n\tcurve25519_sub(r->x, b, a);\n\tcurve25519_add(r->y, b, a);\n\tcurve25519_add_after_basic(r->z, d, c);\n\tcurve25519_sub_after_basic(r->t, d, c);\n}\n\n\nstatic void\nge25519_double_p1p1(ge25519_p1p1 *r, const ge25519 *p) {\n\tbignum25519 a,b,c;\n\n\tcurve25519_square(a, p->x);\n\tcurve25519_square(b, p->y);\n\tcurve25519_square(c, p->z);\n\tcurve25519_add_reduce(c, c, c);\n\tcurve25519_add(r->x, p->x, p->y);\n\tcurve25519_square(r->x, r->x);\n\tcurve25519_add(r->y, b, a);\n\tcurve25519_sub(r->z, b, a);\n\tcurve25519_sub_after_basic(r->x, r->x, r->y);\n\tcurve25519_sub_after_basic(r->t, c, r->z);\n}\n\nstatic void\nge25519_nielsadd2_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519_niels *q, unsigned char signbit) {\n\tconst bignum25519 *qb = (const bignum25519 *)q;\n\tbignum25519 *rb = (bignum25519 *)r;\n\tbignum25519 a,b,c;\n\n\tcurve25519_sub(a, p->y, p->x);\n\tcurve25519_add(b, p->y, p->x);\n\tcurve25519_mul(a, a, qb[signbit]); /* x for +, y for - */\n\tcurve25519_mul(r->x, b, qb[signbit^1]); /* y for +, x for - */\n\tcurve25519_add(r->y, r->x, a);\n\tcurve25519_sub(r->x, r->x, a);\n\tcurve25519_mul(c, p->t, q->t2d);\n\tcurve25519_add_reduce(r->t, p->z, p->z);\n\tcurve25519_copy(r->z, r->t);\n\tcurve25519_add(rb[2+signbit], rb[2+signbit], c); /* z for +, t for - */\n\tcurve25519_sub(rb[2+(signbit^1)], rb[2+(signbit^1)], c); /* t for +, z for - */\n}\n\nstatic void\nge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519_pniels *q, unsigned char signbit) {\n\tconst bignum25519 *qb = (const bignum25519 *)q;\n\tbignum25519 *rb = (bignum25519 *)r;\n\tbignum25519 a,b,c;\n\n\tcurve25519_sub(a, p->y, p->x);\n\tcurve25519_add(b, p->y, p->x);\n\tcurve25519_mul(a, a, qb[signbit]); /* ysubx for +, xaddy for - */\n\tcurve25519_mul(r->x, b, qb[signbit^1]); /* xaddy for +, ysubx for - */\n\tcurve25519_add(r->y, r->x, a);\n\tcurve25519_sub(r->x, r->x, a);\n\tcurve25519_mul(c, p->t, q->t2d);\n\tcurve25519_mul(r->t, p->z, q->z);\n\tcurve25519_add_reduce(r->t, r->t, r->t);\n\tcurve25519_copy(r->z, r->t);\n\tcurve25519_add(rb[2+signbit], rb[2+signbit], c); /* z for +, t for - */\n\tcurve25519_sub(rb[2+(signbit^1)], rb[2+(signbit^1)], c); /* t for +, z for - */\n}\n\nstatic void\nge25519_double_partial(ge25519 *r, const ge25519 *p) {\n\tge25519_p1p1 t;\n\tge25519_double_p1p1(&t, p);\n\tge25519_p1p1_to_partial(r, &t);\n}\n\nstatic void\nge25519_double(ge25519 *r, const ge25519 *p) {\n\tge25519_p1p1 t;\n\tge25519_double_p1p1(&t, p);\n\tge25519_p1p1_to_full(r, &t);\n}\n\nstatic void\nge25519_add(ge25519 *r, const ge25519 *p,  const ge25519 *q) {\n\tge25519_p1p1 t;\n\tge25519_add_p1p1(&t, p, q);\n\tge25519_p1p1_to_full(r, &t);\n}\n\nstatic void\nge25519_nielsadd2(ge25519 *r, const ge25519_niels *q) {\n\tbignum25519 a,b,c,e,f,g,h;\n\n\tcurve25519_sub(a, r->y, r->x);\n\tcurve25519_add(b, r->y, r->x);\n\tcurve25519_mul(a, a, q->ysubx);\n\tcurve25519_mul(e, b, q->xaddy);\n\tcurve25519_add(h, e, a);\n\tcurve25519_sub(e, e, a);\n\tcurve25519_mul(c, r->t, q->t2d);\n\tcurve25519_add(f, r->z, r->z);\n\tcurve25519_add_after_basic(g, f, c);\n\tcurve25519_sub_after_basic(f, f, c);\n\tcurve25519_mul(r->x, e, f);\n\tcurve25519_mul(r->y, h, g);\n\tcurve25519_mul(r->z, g, f);\n\tcurve25519_mul(r->t, e, h);\n}\n\nstatic void\nge25519_pnielsadd(ge25519_pniels *r, const ge25519 *p, const ge25519_pniels *q) {\n\tbignum25519 a,b,c,x,y,z,t;\n\n\tcurve25519_sub(a, p->y, p->x);\n\tcurve25519_add(b, p->y, p->x);\n\tcurve25519_mul(a, a, q->ysubx);\n\tcurve25519_mul(x, b, q->xaddy);\n\tcurve25519_add(y, x, a);\n\tcurve25519_sub(x, x, a);\n\tcurve25519_mul(c, p->t, q->t2d);\n\tcurve25519_mul(t, p->z, q->z);\n\tcurve25519_add(t, t, t);\n\tcurve25519_add_after_basic(z, t, c);\n\tcurve25519_sub_after_basic(t, t, c);\n\tcurve25519_mul(r->xaddy, x, t);\n\tcurve25519_mul(r->ysubx, y, z);\n\tcurve25519_mul(r->z, z, t);\n\tcurve25519_mul(r->t2d, x, y);\n\tcurve25519_copy(y, r->ysubx);\n\tcurve25519_sub(r->ysubx, r->ysubx, r->xaddy);\n\tcurve25519_add(r->xaddy, r->xaddy, y);\n\tcurve25519_mul(r->t2d, r->t2d, ge25519_ec2d);\n}\n\n\n/*\n\tpack & unpack\n*/\n\nstatic void\nge25519_pack(unsigned char r[32], const ge25519 *p) {\n\tbignum25519 tx, ty, zi;\n\tunsigned char parity[32];\n\tcurve25519_recip(zi, p->z);\n\tcurve25519_mul(tx, p->x, zi);\n\tcurve25519_mul(ty, p->y, zi);\n\tcurve25519_contract(r, ty);\n\tcurve25519_contract(parity, tx);\n\tr[31] ^= ((parity[0] & 1) << 7);\n}\n\nstatic int\nge25519_unpack_negative_vartime(ge25519 *r, const unsigned char p[32]) {\n\tstatic const unsigned char zero[32] = {0};\n\tstatic const bignum25519 one = {1};\n\tunsigned char parity = p[31] >> 7;\n\tunsigned char check[32];\n\tbignum25519 t, root, num, den, d3;\n\n\tcurve25519_expand(r->y, p);\n\tcurve25519_copy(r->z, one);\n\tcurve25519_square(num, r->y); /* x = y^2 */\n\tcurve25519_mul(den, num, ge25519_ecd); /* den = dy^2 */\n\tcurve25519_sub_reduce(num, num, r->z); /* x = y^1 - 1 */\n\tcurve25519_add(den, den, r->z); /* den = dy^2 + 1 */\n\n\t/* Computation of sqrt(num/den) */\n\t/* 1.: computation of num^((p-5)/8)*den^((7p-35)/8) = (num*den^7)^((p-5)/8) */\n\tcurve25519_square(t, den);\n\tcurve25519_mul(d3, t, den);\n\tcurve25519_square(r->x, d3);\n\tcurve25519_mul(r->x, r->x, den);\n\tcurve25519_mul(r->x, r->x, num);\n\tcurve25519_pow_two252m3(r->x, r->x);\n\n\t/* 2. computation of r->x = num * den^3 * (num*den^7)^((p-5)/8) */\n\tcurve25519_mul(r->x, r->x, d3);\n\tcurve25519_mul(r->x, r->x, num);\n\n\t/* 3. Check if either of the roots works: */\n\tcurve25519_square(t, r->x);\n\tcurve25519_mul(t, t, den);\n\tcurve25519_sub_reduce(root, t, num);\n\tcurve25519_contract(check, root);\n\tif (!ed25519_verify(check, zero, 32)) {\n\t\tcurve25519_add_reduce(t, t, num);\n\t\tcurve25519_contract(check, t);\n\t\tif (!ed25519_verify(check, zero, 32))\n\t\t\treturn 0;\n\t\tcurve25519_mul(r->x, r->x, ge25519_sqrtneg1);\n\t}\n\n\tcurve25519_contract(check, r->x);\n\tif ((check[0] & 1) == parity) {\n\t\tcurve25519_copy(t, r->x);\n\t\tcurve25519_neg(r->x, t);\n\t}\n\tcurve25519_mul(r->t, r->x, r->y);\n\treturn 1;\n}\n\n\n/*\n\tscalarmults\n*/\n\n#define S1_SWINDOWSIZE 5\n#define S1_TABLE_SIZE (1<<(S1_SWINDOWSIZE-2))\n#define S2_SWINDOWSIZE 7\n#define S2_TABLE_SIZE (1<<(S2_SWINDOWSIZE-2))\n\n/* computes [s1]p1 + [s2]basepoint */\nstatic void \nge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const bignum256modm s1, const bignum256modm s2) {\n\tsigned char slide1[256], slide2[256];\n\tge25519_pniels pre1[S1_TABLE_SIZE];\n\tge25519 d1;\n\tge25519_p1p1 t;\n\tint32_t i;\n\n\tcontract256_slidingwindow_modm(slide1, s1, S1_SWINDOWSIZE);\n\tcontract256_slidingwindow_modm(slide2, s2, S2_SWINDOWSIZE);\n\n\tge25519_double(&d1, p1);\n\tge25519_full_to_pniels(pre1, p1);\n\tfor (i = 0; i < S1_TABLE_SIZE - 1; i++)\n\t\tge25519_pnielsadd(&pre1[i+1], &d1, &pre1[i]);\n\n\t/* set neutral */\n\tmemset(r, 0, sizeof(ge25519));\n\tr->y[0] = 1;\n\tr->z[0] = 1;\n\n\ti = 255;\n\twhile ((i >= 0) && !(slide1[i] | slide2[i]))\n\t\ti--;\n\n\tfor (; i >= 0; i--) {\n\t\tge25519_double_p1p1(&t, r);\n\n\t\tif (slide1[i]) {\n\t\t\tge25519_p1p1_to_full(r, &t);\n\t\t\tge25519_pnielsadd_p1p1(&t, r, &pre1[abs(slide1[i]) / 2], (unsigned char)slide1[i] >> 7);\n\t\t}\n\n\t\tif (slide2[i]) {\n\t\t\tge25519_p1p1_to_full(r, &t);\n\t\t\tge25519_nielsadd2_p1p1(&t, r, &ge25519_niels_sliding_multiples[abs(slide2[i]) / 2], (unsigned char)slide2[i] >> 7);\n\t\t}\n\n\t\tge25519_p1p1_to_partial(r, &t);\n\t}\n}\n\n\n\n#if !defined(HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS)\n\nstatic uint32_t\nge25519_windowb_equal(uint32_t b, uint32_t c) {\n\treturn ((b ^ c) - 1) >> 31;\n}\n\nstatic void\nge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b) {\n\tbignum25519 neg;\n\tuint32_t sign = (uint32_t)((unsigned char)b >> 7);\n\tuint32_t mask = ~(sign - 1);\n\tuint32_t u = (b + mask) ^ mask;\n\tuint32_t i;\n\n\t/* ysubx, xaddy, t2d in packed form. initialize to ysubx = 1, xaddy = 1, t2d = 0 */\n\tuint8_t packed[96] = {0};\n\tpacked[0] = 1;\n\tpacked[32] = 1;\n\n\tfor (i = 0; i < 8; i++)\n\t\tcurve25519_move_conditional_bytes(packed, table[(pos * 8) + i], ge25519_windowb_equal(u, i + 1));\n\n\t/* expand in to t */\n\tcurve25519_expand(t->ysubx, packed +  0);\n\tcurve25519_expand(t->xaddy, packed + 32);\n\tcurve25519_expand(t->t2d  , packed + 64);\n\n\t/* adjust for sign */\n\tcurve25519_swap_conditional(t->ysubx, t->xaddy, sign);\n\tcurve25519_neg(neg, t->t2d);\n\tcurve25519_swap_conditional(t->t2d, neg, sign);\n}\n\n#endif /* HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS */\n\n\n/* computes [s]basepoint */\nstatic void\nge25519_scalarmult_base_niels(ge25519 *r, const uint8_t basepoint_table[256][96], const bignum256modm s) {\n\tsigned char b[64];\n\tuint32_t i;\n\tge25519_niels t;\n\n\tcontract256_window4_modm(b, s);\n\n\tge25519_scalarmult_base_choose_niels(&t, basepoint_table, 0, b[1]);\n\tcurve25519_sub_reduce(r->x, t.xaddy, t.ysubx);\n\tcurve25519_add_reduce(r->y, t.xaddy, t.ysubx);\n\tmemset(r->z, 0, sizeof(bignum25519));\n\tcurve25519_copy(r->t, t.t2d);\n\tr->z[0] = 2;\t\n\tfor (i = 3; i < 64; i += 2) {\n\t\tge25519_scalarmult_base_choose_niels(&t, basepoint_table, i / 2, b[i]);\n\t\tge25519_nielsadd2(r, &t);\n\t}\n\tge25519_double_partial(r, r);\n\tge25519_double_partial(r, r);\n\tge25519_double_partial(r, r);\n\tge25519_double(r, r);\n\tge25519_scalarmult_base_choose_niels(&t, basepoint_table, 0, b[0]);\n\tcurve25519_mul(t.t2d, t.t2d, ge25519_ecd);\n\tge25519_nielsadd2(r, &t);\n\tfor(i = 2; i < 64; i += 2) {\n\t\tge25519_scalarmult_base_choose_niels(&t, basepoint_table, i / 2, b[i]);\n\t\tge25519_nielsadd2(r, &t);\n\t}\n}\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-impl-sse2.h",
    "content": "/*\n\tconversions\n*/\n\nstatic void\nge25519_p1p1_to_partial(ge25519 *r, const ge25519_p1p1 *p) {\n\tpacked64bignum25519 ALIGN(16) xz, tt, xzout;\n\tcurve25519_mul(r->y, p->y, p->z);\n\tcurve25519_tangle64(xz, p->x, p->z);\n\tcurve25519_tangleone64(tt, p->t);\n\tcurve25519_mul_packed64(xzout, xz, tt);\n\tcurve25519_untangle64(r->x, r->z, xzout);\n}\n\nstatic void \nge25519_p1p1_to_full(ge25519 *r, const ge25519_p1p1 *p) {\n\tpacked64bignum25519 ALIGN(16) zy, xt, xx, zz, ty;\n\tcurve25519_tangle64(ty, p->t, p->y);\n\tcurve25519_tangleone64(xx, p->x);\n\tcurve25519_mul_packed64(xt, xx, ty);\n\tcurve25519_untangle64(r->x, r->t, xt);\n\tcurve25519_tangleone64(zz, p->z);\n\tcurve25519_mul_packed64(zy, zz, ty);\n\tcurve25519_untangle64(r->z, r->y, zy);\n}\n\nstatic void\nge25519_full_to_pniels(ge25519_pniels *p, const ge25519 *r) {\n\tcurve25519_sub(p->ysubx, r->y, r->x);\n\tcurve25519_add(p->xaddy, r->x, r->y);\n\tcurve25519_copy(p->z, r->z);\n\tcurve25519_mul(p->t2d, r->t, ge25519_ec2d);\n}\n\n/*\n\tadding & doubling\n*/\n\nstatic void\nge25519_add_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519 *q) {\n\tbignum25519 ALIGN(16) a,b,c,d;\n\tpacked32bignum25519 ALIGN(16) xx, yy, yypxx, yymxx, bd, ac, bdmac, bdpac;\n\tpacked64bignum25519 ALIGN(16) at, bu, atbu, ptz, qtz, cd;\n\n\tcurve25519_tangle32(yy, p->y, q->y);\n\tcurve25519_tangle32(xx, p->x, q->x);\n\tcurve25519_add_packed32(yypxx, yy, xx);\n\tcurve25519_sub_packed32(yymxx, yy, xx);\n\tcurve25519_tangle64_from32(at, bu, yymxx, yypxx);\n\tcurve25519_mul_packed64(atbu, at, bu);\n\tcurve25519_untangle64(a, b, atbu);\n\tcurve25519_tangle64(ptz, p->t, p->z);\n\tcurve25519_tangle64(qtz, q->t, q->z);\n\tcurve25519_mul_packed64(cd, ptz, qtz);\n\tcurve25519_untangle64(c, d, cd);\n\tcurve25519_mul(c, c, ge25519_ec2d);\n\tcurve25519_add_reduce(d, d, d);\n\t/* reduce, so no after_basic is needed later */\n\tcurve25519_tangle32(bd, b, d);\n\tcurve25519_tangle32(ac, a, c);\n\tcurve25519_sub_packed32(bdmac, bd, ac);\n\tcurve25519_add_packed32(bdpac, bd, ac);\n\tcurve25519_untangle32(r->x, r->t, bdmac);\n\tcurve25519_untangle32(r->y, r->z, bdpac);\n}\n\n\nstatic void\nge25519_double_p1p1(ge25519_p1p1 *r, const ge25519 *p) {\n\tbignum25519 ALIGN(16) a,b,c,x;\n\tpacked64bignum25519 ALIGN(16) xy, zx, ab, cx;\n\tpacked32bignum25519 ALIGN(16) xc, yz, xt, yc, ac, bc;\n\n\tcurve25519_add(x, p->x, p->y);\n\tcurve25519_tangle64(xy, p->x, p->y);\n\tcurve25519_square_packed64(ab, xy);\n\tcurve25519_untangle64(a, b, ab);\n\tcurve25519_tangle64(zx, p->z, x);\n\tcurve25519_square_packed64(cx, zx);\n\tcurve25519_untangle64(c, x, cx);\n\tcurve25519_tangle32(bc, b, c);\n\tcurve25519_tangle32(ac, a, c);\n\tcurve25519_add_reduce_packed32(yc, bc, ac);\n\tcurve25519_untangle32(r->y, c, yc);\n\tcurve25519_sub(r->z, b, a);\n\tcurve25519_tangle32(yz, r->y, r->z);\n\tcurve25519_tangle32(xc, x, c);\n\tcurve25519_sub_after_basic_packed32(xt, xc, yz);\n\tcurve25519_untangle32(r->x, r->t, xt);\n}\n\nstatic void\nge25519_nielsadd2_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519_niels *q, unsigned char signbit) {\n\tconst bignum25519 *qb = (const bignum25519 *)q;\n\tbignum25519 *rb = (bignum25519 *)r;\n\tbignum25519 ALIGN(16) a,b,c;\n\tpacked64bignum25519 ALIGN(16) ab, yx, aybx;\n\tpacked32bignum25519 ALIGN(16) bd, ac, bdac;\n\n\tcurve25519_sub(a, p->y, p->x);\n\tcurve25519_add(b, p->y, p->x);\n\tcurve25519_tangle64(ab, a, b);\n\tcurve25519_tangle64(yx, qb[signbit], qb[signbit^1]);\n\tcurve25519_mul_packed64(aybx, ab, yx);\n\tcurve25519_untangle64(a, b, aybx);\n\tcurve25519_add(r->y, b, a);\n\tcurve25519_add_reduce(r->t, p->z, p->z);\n\tcurve25519_mul(c, p->t, q->t2d);\n\tcurve25519_copy(r->z, r->t);\n\tcurve25519_add(rb[2+signbit], rb[2+signbit], c);\n\tcurve25519_tangle32(bd, b, rb[2+(signbit^1)]);\n\tcurve25519_tangle32(ac, a, c);\n\tcurve25519_sub_packed32(bdac, bd, ac);\n\tcurve25519_untangle32(r->x, rb[2+(signbit^1)], bdac);\n}\n\nstatic void\nge25519_pnielsadd_p1p1(ge25519_p1p1 *r, const ge25519 *p, const ge25519_pniels *q, unsigned char signbit) {\n\tconst bignum25519 *qb = (const bignum25519 *)q;\n\tbignum25519 *rb = (bignum25519 *)r;\n\tbignum25519 ALIGN(16) a,b,c;\n\tpacked64bignum25519 ALIGN(16) ab, yx, aybx, zt, zt2d, tc;\n\tpacked32bignum25519 ALIGN(16) bd, ac, bdac;\n\n\tcurve25519_sub(a, p->y, p->x);\n\tcurve25519_add(b, p->y, p->x);\n\tcurve25519_tangle64(ab, a, b);\n\tcurve25519_tangle64(yx, qb[signbit], qb[signbit^1]);\n\tcurve25519_mul_packed64(aybx, ab, yx);\n\tcurve25519_untangle64(a, b, aybx);\n\tcurve25519_add(r->y, b, a);\n\tcurve25519_tangle64(zt, p->z, p->t);\n\tcurve25519_tangle64(zt2d, q->z, q->t2d);\n\tcurve25519_mul_packed64(tc, zt, zt2d);\n\tcurve25519_untangle64(r->t, c, tc);\n\tcurve25519_add_reduce(r->t, r->t, r->t);\n\tcurve25519_copy(r->z, r->t);\n\tcurve25519_add(rb[2+signbit], rb[2+signbit], c);\n\tcurve25519_tangle32(bd, b, rb[2+(signbit^1)]);\n\tcurve25519_tangle32(ac, a, c);\n\tcurve25519_sub_packed32(bdac, bd, ac);\n\tcurve25519_untangle32(r->x, rb[2+(signbit^1)], bdac);\n}\n\nstatic void\nge25519_double(ge25519 *r, const ge25519 *p) {\n\tge25519_p1p1 ALIGN(16) t;\n\tge25519_double_p1p1(&t, p);\n\tge25519_p1p1_to_full(r, &t);\n}\n\nstatic void\nge25519_add(ge25519 *r, const ge25519 *p, const ge25519 *q) {\n\tge25519_p1p1 ALIGN(16) t;\n\tge25519_add_p1p1(&t, p, q);\n\tge25519_p1p1_to_full(r, &t);\n}\n\nstatic void\nge25519_double_partial(ge25519 *r, const ge25519 *p) {\n\tge25519_p1p1 ALIGN(16) t;\n\tge25519_double_p1p1(&t, p);\n\tge25519_p1p1_to_partial(r, &t);\n}\n\nstatic void\nge25519_nielsadd2(ge25519 *r, const ge25519_niels *q) {\n\tpacked64bignum25519 ALIGN(16) ab, yx, aybx, eg, ff, hh, xz, ty;\n\tpacked32bignum25519 ALIGN(16) bd, ac, bdac;\n\tbignum25519 ALIGN(16) a,b,c,d,e,f,g,h;\n\n\tcurve25519_sub(a, r->y, r->x);\n\tcurve25519_add(b, r->y, r->x);\n\tcurve25519_tangle64(ab, a, b);\n\tcurve25519_tangle64(yx, q->ysubx, q->xaddy);\n\tcurve25519_mul_packed64(aybx, ab, yx);\n\tcurve25519_untangle64(a, b, aybx);\n\tcurve25519_add(h, b, a);\n\tcurve25519_add_reduce(d, r->z, r->z);\n\tcurve25519_mul(c, r->t, q->t2d);\n\tcurve25519_add(g, d, c); /* d is reduced, so no need for after_basic */\n\tcurve25519_tangle32(bd, b, d);\n\tcurve25519_tangle32(ac, a, c);\n\tcurve25519_sub_packed32(bdac, bd, ac); /* d is reduced, so no need for after_basic */\n\tcurve25519_untangle32(e, f, bdac);\n\tcurve25519_tangle64(eg, e, g);\n\tcurve25519_tangleone64(ff, f);\n\tcurve25519_mul_packed64(xz, eg, ff);\n\tcurve25519_untangle64(r->x, r->z, xz);\n\tcurve25519_tangleone64(hh, h);\n\tcurve25519_mul_packed64(ty, eg, hh);\n\tcurve25519_untangle64(r->t, r->y, ty);\n}\n\nstatic void\nge25519_pnielsadd(ge25519_pniels *r, const ge25519 *p, const ge25519_pniels *q) {\n\tge25519_p1p1 ALIGN(16) t;\n\tge25519 ALIGN(16) f;\n\tge25519_pnielsadd_p1p1(&t, p, q, 0);\n\tge25519_p1p1_to_full(&f, &t);\n\tge25519_full_to_pniels(r, &f);\n}\n\n/*\n\tpack & unpack\n*/\n\nstatic void\nge25519_pack(unsigned char r[32], const ge25519 *p) {\n\tbignum25519 ALIGN(16) tx, ty, zi;\n\tunsigned char parity[32];\n\tcurve25519_recip(zi, p->z);\n\tcurve25519_mul(tx, p->x, zi);\n\tcurve25519_mul(ty, p->y, zi);\n\tcurve25519_contract(r, ty);\n\tcurve25519_contract(parity, tx);\n\tr[31] ^= ((parity[0] & 1) << 7);\n}\n\n\nstatic int\nge25519_unpack_negative_vartime(ge25519 *r, const unsigned char p[32]) {\n\tstatic const bignum25519 ALIGN(16) one = {1};\n\tstatic const unsigned char zero[32] = {0};\n\tunsigned char parity = p[31] >> 7;\n\tunsigned char check[32];\n\tbignum25519 ALIGN(16) t, root, num, den, d3;\n\n\tcurve25519_expand(r->y, p);\n\tcurve25519_copy(r->z, one);\n\tcurve25519_square_times(num, r->y, 1); /* x = y^2 */\n\tcurve25519_mul(den, num, ge25519_ecd); /* den = dy^2 */\n\tcurve25519_sub_reduce(num,  num, r->z); /* x = y^2 - 1 */\n\tcurve25519_add(den, den, r->z); /* den = dy^2 + 1 */\n\n\t/* Computation of sqrt(num/den) */\n\t/* 1.: computation of num^((p-5)/8)*den^((7p-35)/8) = (num*den^7)^((p-5)/8) */\n\tcurve25519_square_times(t, den, 1);\n\tcurve25519_mul(d3, t, den);\n\tcurve25519_square_times(r->x, d3, 1);\n\tcurve25519_mul(r->x, r->x, den);\n\tcurve25519_mul(r->x, r->x, num);\n\tcurve25519_pow_two252m3(r->x, r->x);\n\n\t/* 2. computation of r->x = t * num * den^3 */\n\tcurve25519_mul(r->x, r->x, d3);\n\tcurve25519_mul(r->x, r->x, num);\n\n\t/* 3. Check if either of the roots works: */\n\tcurve25519_square_times(t, r->x, 1);\n\tcurve25519_mul(t, t, den);\n\tcurve25519_copy(root, t);\n\tcurve25519_sub_reduce(root,  root, num);\n\tcurve25519_contract(check, root);\n\tif (!ed25519_verify(check, zero, 32)) {\n\t\tcurve25519_add_reduce(t, t, num);\n\t\tcurve25519_contract(check, t);\n\t\tif (!ed25519_verify(check, zero, 32))\n\t\t\treturn 0;\n\t\tcurve25519_mul(r->x, r->x, ge25519_sqrtneg1);\n\t}\n\n\tcurve25519_contract(check, r->x);\n\tif ((check[0] & 1) == parity) {\n\t\tcurve25519_copy(t, r->x);\n\t\tcurve25519_neg(r->x, t);\n\t}\n\tcurve25519_mul(r->t, r->x, r->y);\n\treturn 1;\n}\n\n\n\n/*\n\tscalarmults\n*/\n\n#define S1_SWINDOWSIZE 5\n#define S1_TABLE_SIZE (1<<(S1_SWINDOWSIZE-2))\n#define S2_SWINDOWSIZE 7\n#define S2_TABLE_SIZE (1<<(S2_SWINDOWSIZE-2))\n\nstatic void\nge25519_double_scalarmult_vartime(ge25519 *r, const ge25519 *p1, const bignum256modm s1, const bignum256modm s2) {\n\tsigned char slide1[256], slide2[256];\n\tge25519_pniels ALIGN(16) pre1[S1_TABLE_SIZE];\n\tge25519 ALIGN(16) d1;\n\tge25519_p1p1 ALIGN(16) t;\n\tint32_t i;\n\n\tcontract256_slidingwindow_modm(slide1, s1, S1_SWINDOWSIZE);\n\tcontract256_slidingwindow_modm(slide2, s2, S2_SWINDOWSIZE);\n\n\tge25519_double(&d1, p1);\n\tge25519_full_to_pniels(pre1, p1);\n\tfor (i = 0; i < S1_TABLE_SIZE - 1; i++)\n\t\tge25519_pnielsadd(&pre1[i+1], &d1, &pre1[i]);\n\n\t/* set neutral */\n\tmemset(r, 0, sizeof(ge25519));\n\tr->y[0] = 1;\n\tr->z[0] = 1;\n\n\ti = 255;\n\twhile ((i >= 0) && !(slide1[i] | slide2[i]))\n\t\ti--;\n\n\tfor (; i >= 0; i--) {\n\t\tge25519_double_p1p1(&t, r);\n\n\t\tif (slide1[i]) {\n\t\t\tge25519_p1p1_to_full(r, &t);\n\t\t\tge25519_pnielsadd_p1p1(&t, r, &pre1[abs(slide1[i]) / 2], (unsigned char)slide1[i] >> 7);\n\t\t}\n\n\t\tif (slide2[i]) {\n\t\t\tge25519_p1p1_to_full(r, &t);\n\t\t\tge25519_nielsadd2_p1p1(&t, r, &ge25519_niels_sliding_multiples[abs(slide2[i]) / 2], (unsigned char)slide2[i] >> 7);\n\t\t}\n\n\t\tge25519_p1p1_to_partial(r, &t);\n\t}\n}\n\n#if !defined(HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS)\n\nstatic uint32_t\nge25519_windowb_equal(uint32_t b, uint32_t c) {\n\treturn ((b ^ c) - 1) >> 31;\n}\n\nstatic void\nge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b) {\n\tbignum25519 ALIGN(16) neg;\n\tuint32_t sign = (uint32_t)((unsigned char)b >> 7);\n\tuint32_t mask = ~(sign - 1);\n\tuint32_t u = (b + mask) ^ mask;\n\tuint32_t i;\n\n\t/* ysubx, xaddy, t2d in packed form. initialize to ysubx = 1, xaddy = 1, t2d = 0 */\n\tuint8_t ALIGN(16) packed[96] = {0};\n\tpacked[0] = 1;\n\tpacked[32] = 1;\n\n\tfor (i = 0; i < 8; i++)\n\t\tcurve25519_move_conditional_bytes(packed, table[(pos * 8) + i], ge25519_windowb_equal(u, i + 1));\n\n\t/* expand in to t */\n\tcurve25519_expand(t->ysubx, packed +  0);\n\tcurve25519_expand(t->xaddy, packed + 32);\n\tcurve25519_expand(t->t2d  , packed + 64);\n\n\t/* adjust for sign */\n\tcurve25519_swap_conditional(t->ysubx, t->xaddy, sign);\n\tcurve25519_neg(neg, t->t2d);\n\tcurve25519_swap_conditional(t->t2d, neg, sign);\n}\n\n#endif /* HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS */\n\nstatic void\nge25519_scalarmult_base_niels(ge25519 *r, const uint8_t table[256][96], const bignum256modm s) {\n\tsigned char b[64];\n\tuint32_t i;\n\tge25519_niels ALIGN(16) t;\n\n\tcontract256_window4_modm(b, s);\n\n\tge25519_scalarmult_base_choose_niels(&t, table, 0, b[1]);\n\tcurve25519_sub_reduce(r->x, t.xaddy, t.ysubx);\n\tcurve25519_add_reduce(r->y, t.xaddy, t.ysubx);\n\tmemset(r->z, 0, sizeof(bignum25519)); \n\tr->z[0] = 2;\n\tcurve25519_copy(r->t, t.t2d);\n\tfor (i = 3; i < 64; i += 2) {\n\t\tge25519_scalarmult_base_choose_niels(&t, table, i / 2, b[i]);\n\t\tge25519_nielsadd2(r, &t);\n\t}\n\tge25519_double_partial(r, r);\n\tge25519_double_partial(r, r);\n\tge25519_double_partial(r, r);\n\tge25519_double(r, r);\n\tge25519_scalarmult_base_choose_niels(&t, table, 0, b[0]);\n\tcurve25519_mul(t.t2d, t.t2d, ge25519_ecd);\n\tge25519_nielsadd2(r, &t);\n\tfor(i = 2; i < 64; i += 2) {\n\t\tge25519_scalarmult_base_choose_niels(&t, table, i / 2, b[i]);\n\t\tge25519_nielsadd2(r, &t);\n\t}\n}\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-portable-identify.h",
    "content": "/* os */\n#if defined(_WIN32)\t|| defined(_WIN64) || defined(__TOS_WIN__) || defined(__WINDOWS__)\n\t#define OS_WINDOWS\n#elif defined(sun) || defined(__sun) || defined(__SVR4) || defined(__svr4__)\n\t#define OS_SOLARIS\n#else\n\t#include <sys/param.h> /* need this to define BSD */\n\t#define OS_NIX\n\t#if defined(__linux__)\n\t\t#define OS_LINUX\n\t#elif defined(BSD)\n\t\t#define OS_BSD\n\t\t#if defined(MACOS_X) || (defined(__APPLE__) & defined(__MACH__))\n\t\t\t#define OS_OSX\n\t\t#elif defined(macintosh) || defined(Macintosh)\n\t\t\t#define OS_MAC\n\t\t#elif defined(__OpenBSD__)\n\t\t\t#define OS_OPENBSD\n\t\t#endif\n\t#endif\n#endif\n\n\n/* compiler */\n#if defined(_MSC_VER)\n\t#define COMPILER_MSVC\n#endif\n#if defined(__ICC)\n\t#define COMPILER_INTEL\n#endif\n#if defined(__GNUC__)\n\t#if (__GNUC__ >= 3)\n\t\t#define COMPILER_GCC ((__GNUC__ * 10000) + (__GNUC_MINOR__ * 100) + (__GNUC_PATCHLEVEL__))\n\t#else\n\t\t#define COMPILER_GCC ((__GNUC__ * 10000) + (__GNUC_MINOR__ * 100)                        )\n\t#endif\n#endif\n#if defined(__PATHCC__)\n\t#define COMPILER_PATHCC\n#endif\n#if defined(__clang__)\n\t#define COMPILER_CLANG ((__clang_major__ * 10000) + (__clang_minor__ * 100) + (__clang_patchlevel__))\n#endif\n\n\n\n/* cpu */\n#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__ ) || defined(_M_X64)\n\t#define CPU_X86_64\n#elif defined(__i586__) || defined(__i686__) || (defined(_M_IX86) && (_M_IX86 >= 500))\n\t#define CPU_X86 500\n#elif defined(__i486__) || (defined(_M_IX86) && (_M_IX86 >= 400))\n\t#define CPU_X86 400\n#elif defined(__i386__) || (defined(_M_IX86) && (_M_IX86 >= 300)) || defined(__X86__) || defined(_X86_) || defined(__I86__)\n\t#define CPU_X86 300\n#elif defined(__ia64__) || defined(_IA64) || defined(__IA64__) || defined(_M_IA64) || defined(__ia64)\n\t#define CPU_IA64\n#endif\n\n#if defined(__sparc__) || defined(__sparc) || defined(__sparcv9)\n\t#define CPU_SPARC\n\t#if defined(__sparcv9)\n\t\t#define CPU_SPARC64\n\t#endif\n#endif\n\n#if defined(powerpc) || defined(__PPC__) || defined(__ppc__) || defined(_ARCH_PPC) || defined(__powerpc__) || defined(__powerpc) || defined(POWERPC) || defined(_M_PPC)\n\t#define CPU_PPC\n\t#if defined(_ARCH_PWR7)\n\t\t#define CPU_POWER7\n\t#elif defined(__64BIT__)\n\t\t#define CPU_PPC64\n\t#else\n\t\t#define CPU_PPC32\n\t#endif\n#endif\n\n#if defined(__hppa__) || defined(__hppa)\n\t#define CPU_HPPA\n#endif\n\n#if defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)\n\t#define CPU_ALPHA\n#endif\n\n/* 64 bit cpu */\n#if defined(CPU_X86_64) || defined(CPU_IA64) || defined(CPU_SPARC64) || defined(__64BIT__) || defined(__LP64__) || defined(_LP64) || (defined(_MIPS_SZLONG) && (_MIPS_SZLONG == 64))\n\t#define CPU_64BITS\n#endif\n\n#if defined(COMPILER_MSVC)\n\ttypedef signed char int8_t;\n\ttypedef unsigned char uint8_t;\n\ttypedef signed short int16_t;\n\ttypedef unsigned short uint16_t;\n\ttypedef signed int int32_t;\n\ttypedef unsigned int uint32_t;\n\ttypedef signed __int64 int64_t;\n\ttypedef unsigned __int64 uint64_t;\n#else\n\t#include <stdint.h>\n#endif\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna-portable.h",
    "content": "#include \"ed25519-donna-portable-identify.h\"\n\n#define mul32x32_64(a,b) (((uint64_t)(a))*(b))\n\n/* platform */\n#if defined(COMPILER_MSVC)\n\t#include <intrin.h>\n\t#if !defined(_DEBUG)\n\t\t#undef mul32x32_64\t\t\n\t\t#define mul32x32_64(a,b) __emulu(a,b)\n\t#endif\n\t#undef inline\n\t#define inline __forceinline\n\t#define DONNA_INLINE __forceinline\n\t#define DONNA_NOINLINE __declspec(noinline)\n\t#define ALIGN(x) __declspec(align(x))\n\t#define ROTL32(a,b) _rotl(a,b)\n\t#define ROTR32(a,b) _rotr(a,b)\n#else\n\t#include <sys/param.h>\n\t#define DONNA_INLINE inline __attribute__((always_inline))\n\t#define DONNA_NOINLINE __attribute__((noinline))\n\t/* Tor: OSX pollutes the global namespace with an ALIGN macro. */\n\t#undef ALIGN\n\t#define ALIGN(x) __attribute__((aligned(x)))\n\t#define ROTL32(a,b) (((a) << (b)) | ((a) >> (32 - b)))\n\t#define ROTR32(a,b) (((a) >> (b)) | ((a) << (32 - b)))\n#endif\n\n/* uint128_t */\n#if defined(CPU_64BITS) && !defined(ED25519_FORCE_32BIT)\n\t#if defined(COMPILER_CLANG) && (COMPILER_CLANG >= 30100)\n\t\t#define HAVE_NATIVE_UINT128\n\t\ttypedef unsigned __int128 uint128_t;\n\t#elif defined(COMPILER_MSVC)\n\t\t#define HAVE_UINT128\n\t\ttypedef struct uint128_t {\n\t\t\tuint64_t lo, hi;\n\t\t} uint128_t;\n\t\t#define mul64x64_128(out,a,b) out.lo = _umul128(a,b,&out.hi);\n\t\t#define shr128_pair(out,hi,lo,shift) out = __shiftright128(lo, hi, shift);\n\t\t#define shl128_pair(out,hi,lo,shift) out = __shiftleft128(lo, hi, shift);\n\t\t#define shr128(out,in,shift) shr128_pair(out, in.hi, in.lo, shift)\n\t\t#define shl128(out,in,shift) shl128_pair(out, in.hi, in.lo, shift)\n\t\t#define add128(a,b) { uint64_t p = a.lo; a.lo += b.lo; a.hi += b.hi + (a.lo < p); }\n\t\t#define add128_64(a,b) { uint64_t p = a.lo; a.lo += b; a.hi += (a.lo < p); }\n\t\t#define lo128(a) (a.lo)\n\t\t#define hi128(a) (a.hi)\n\t#elif defined(COMPILER_GCC) && !defined(HAVE_NATIVE_UINT128)\n\t\t#if defined(__SIZEOF_INT128__)\n\t\t\t#define HAVE_NATIVE_UINT128\n\t\t\ttypedef unsigned __int128 uint128_t;\n\t\t#elif (COMPILER_GCC >= 40400)\n\t\t\t#define HAVE_NATIVE_UINT128\n\t\t\ttypedef unsigned uint128_t __attribute__((mode(TI)));\n\t\t#elif defined(CPU_X86_64)\n\t\t\t#define HAVE_UINT128\n\t\t\ttypedef struct uint128_t {\n\t\t\t\tuint64_t lo, hi;\n\t\t\t} uint128_t;\n\t\t\t#define mul64x64_128(out,a,b) __asm__ (\"mulq %3\" : \"=a\" (out.lo), \"=d\" (out.hi) : \"a\" (a), \"rm\" (b));\n\t\t\t#define shr128_pair(out,hi,lo,shift) __asm__ (\"shrdq %2,%1,%0\" : \"+r\" (lo) : \"r\" (hi), \"J\" (shift)); out = lo;\n\t\t\t#define shl128_pair(out,hi,lo,shift) __asm__ (\"shldq %2,%1,%0\" : \"+r\" (hi) : \"r\" (lo), \"J\" (shift)); out = hi;\n\t\t\t#define shr128(out,in,shift) shr128_pair(out,in.hi, in.lo, shift)\n\t\t\t#define shl128(out,in,shift) shl128_pair(out,in.hi, in.lo, shift)\n\t\t\t#define add128(a,b) __asm__ (\"addq %4,%2; adcq %5,%3\" : \"=r\" (a.hi), \"=r\" (a.lo) : \"1\" (a.lo), \"0\" (a.hi), \"rm\" (b.lo), \"rm\" (b.hi) : \"cc\");\n\t\t\t#define add128_64(a,b) __asm__ (\"addq %4,%2; adcq $0,%3\" : \"=r\" (a.hi), \"=r\" (a.lo) : \"1\" (a.lo), \"0\" (a.hi), \"rm\" (b) : \"cc\");\n\t\t\t#define lo128(a) (a.lo)\n\t\t\t#define hi128(a) (a.hi)\n\t\t#endif\n\t#endif\n\n\t#if defined(HAVE_NATIVE_UINT128)\n\t\t#define HAVE_UINT128\n\t\t#define mul64x64_128(out,a,b) out = (uint128_t)a * b;\n\t\t#define shr128_pair(out,hi,lo,shift) out = (uint64_t)((((uint128_t)hi << 64) | lo) >> (shift));\n\t\t#define shl128_pair(out,hi,lo,shift) out = (uint64_t)(((((uint128_t)hi << 64) | lo) << (shift)) >> 64);\n\t\t#define shr128(out,in,shift) out = (uint64_t)(in >> (shift));\n\t\t#define shl128(out,in,shift) out = (uint64_t)((in << shift) >> 64);\n\t\t#define add128(a,b) a += b;\n\t\t#define add128_64(a,b) a += (uint64_t)b;\n\t\t#define lo128(a) ((uint64_t)a)\n\t\t#define hi128(a) ((uint64_t)(a >> 64))\n\t#endif\n\n\t#if !defined(HAVE_UINT128)\n\t\t#error Need a uint128_t implementation!\n\t#endif\n#endif\n\n/* endian */\n#if !defined(ED25519_OPENSSLRNG)\nstatic inline void U32TO8_LE(unsigned char *p, const uint32_t v) {\n\tp[0] = (unsigned char)(v      );\n\tp[1] = (unsigned char)(v >>  8);\n\tp[2] = (unsigned char)(v >> 16);\n\tp[3] = (unsigned char)(v >> 24);\n}\n#endif\n\n#if !defined(HAVE_UINT128)\nstatic inline uint32_t U8TO32_LE(const unsigned char *p) {\n\treturn\n\t(((uint32_t)(p[0])      ) | \n\t ((uint32_t)(p[1]) <<  8) |\n\t ((uint32_t)(p[2]) << 16) |\n\t ((uint32_t)(p[3]) << 24));\n}\n#else\nstatic inline uint64_t U8TO64_LE(const unsigned char *p) {\n\treturn\n\t(((uint64_t)(p[0])      ) |\n\t ((uint64_t)(p[1]) <<  8) |\n\t ((uint64_t)(p[2]) << 16) |\n\t ((uint64_t)(p[3]) << 24) |\n\t ((uint64_t)(p[4]) << 32) |\n\t ((uint64_t)(p[5]) << 40) |\n\t ((uint64_t)(p[6]) << 48) |\n\t ((uint64_t)(p[7]) << 56));\n}\n\nstatic inline void U64TO8_LE(unsigned char *p, const uint64_t v) {\n\tp[0] = (unsigned char)(v      );\n\tp[1] = (unsigned char)(v >>  8);\n\tp[2] = (unsigned char)(v >> 16);\n\tp[3] = (unsigned char)(v >> 24);\n\tp[4] = (unsigned char)(v >> 32);\n\tp[5] = (unsigned char)(v >> 40);\n\tp[6] = (unsigned char)(v >> 48);\n\tp[7] = (unsigned char)(v >> 56);\n}\n#endif\n\n#include <stdlib.h>\n#include <string.h>\n\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-donna.h",
    "content": "/*\n\tPublic domain by Andrew M. <liquidsun@gmail.com>\n\tModified from the amd64-51-30k implementation by\n\t\tDaniel J. Bernstein\n\t\tNiels Duif\n\t\tTanja Lange\n\t\tPeter Schwabe\n\t\tBo-Yin Yang\n*/\n\n\n#include \"ed25519-donna-portable.h\"\n\n#if defined(ED25519_SSE2)\n#else\n\t#if defined(HAVE_UINT128) && !defined(ED25519_FORCE_32BIT)\n\t\t#define ED25519_64BIT\n\t#else\n\t\t#define ED25519_32BIT\n\t#endif\n#endif\n\n#if !defined(ED25519_NO_INLINE_ASM)\n\t/* detect extra features first so un-needed functions can be disabled throughout */\n\t#if defined(ED25519_SSE2)\n\t\t#if defined(COMPILER_GCC) && defined(CPU_X86)\n\t\t\t#define ED25519_GCC_32BIT_SSE_CHOOSE\n\t\t#elif defined(COMPILER_GCC) && defined(CPU_X86_64)\n\t\t\t#define ED25519_GCC_64BIT_SSE_CHOOSE\n\t\t#endif\n\t#else\n\t\t#if defined(CPU_X86_64)\n\t\t\t#if defined(COMPILER_GCC) \n\t\t\t\t#if defined(ED25519_64BIT)\n\t\t\t\t\t#define ED25519_GCC_64BIT_X86_CHOOSE\n\t\t\t\t#else\n\t\t\t\t\t#define ED25519_GCC_64BIT_32BIT_CHOOSE\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#endif\n\t#endif\n#endif\n\n#if defined(ED25519_SSE2)\n\t#include \"curve25519-donna-sse2.h\"\n#elif defined(ED25519_64BIT)\n\t#include \"curve25519-donna-64bit.h\"\n#else\n\t#include \"curve25519-donna-32bit.h\"\n#endif\n\n#include \"curve25519-donna-helpers.h\"\n\n/* separate uint128 check for 64 bit sse2 */\n#if defined(HAVE_UINT128) && !defined(ED25519_FORCE_32BIT)\n\t#include \"modm-donna-64bit.h\"\n#else\n\t#include \"modm-donna-32bit.h\"\n#endif\n\ntypedef unsigned char hash_512bits[64];\n\n/*\n\tTiming safe memory compare\n*/\nstatic int\ned25519_verify(const unsigned char *x, const unsigned char *y, size_t len) {\n\tsize_t differentbits = 0;\n\twhile (len--)\n\t\tdifferentbits |= (*x++ ^ *y++);\n\treturn (int) (1 & ((differentbits - 1) >> 8));\n}\n\n\n/*\n * Arithmetic on the twisted Edwards curve -x^2 + y^2 = 1 + dx^2y^2\n * with d = -(121665/121666) = 37095705934669439343138083508754565189542113879843219016388785533085940283555\n * Base point: (15112221349535400772501151409588531511454012693041857206046113283949847762202,46316835694926478169428394003475163141307993866256225615783033603165251855960);\n */\n\ntypedef struct ge25519_t {\n\tbignum25519 x, y, z, t;\n} ge25519;\n\ntypedef struct ge25519_p1p1_t {\n\tbignum25519 x, y, z, t;\n} ge25519_p1p1;\n\ntypedef struct ge25519_niels_t {\n\tbignum25519 ysubx, xaddy, t2d;\n} ge25519_niels;\n\ntypedef struct ge25519_pniels_t {\n\tbignum25519 ysubx, xaddy, z, t2d;\n} ge25519_pniels;\n\n#include \"ed25519-donna-basepoint-table.h\"\n\n#if defined(ED25519_64BIT)\n\t#include \"ed25519-donna-64bit-tables.h\"\n\t#include \"ed25519-donna-64bit-x86.h\"\n#else\n\t#include \"ed25519-donna-32bit-tables.h\"\n\t#include \"ed25519-donna-64bit-x86-32bit.h\"\n#endif\n\n\n#if defined(ED25519_SSE2)\n\t#include \"ed25519-donna-32bit-sse2.h\"\n\t#include \"ed25519-donna-64bit-sse2.h\"\n\t#include \"ed25519-donna-impl-sse2.h\"\n#else\n\t#include \"ed25519-donna-impl-base.h\"\n#endif\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-hash-custom.h",
    "content": "/*\n\ta custom hash must have a 512bit digest and implement:\n\n\tstruct ed25519_hash_context;\n\n\tvoid ed25519_hash_init(ed25519_hash_context *ctx);\n\tvoid ed25519_hash_update(ed25519_hash_context *ctx, const uint8_t *in, size_t inlen);\n\tvoid ed25519_hash_final(ed25519_hash_context *ctx, uint8_t *hash);\n\tvoid ed25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen);\n*/\n\n/* Definitions for using the SHA512 code from Noise-C */\n\n#include \"../sha2/sha512.h\"\n\n#define ed25519_hash_context sha512_context_t\n#define ed25519_hash_init sha512_reset\n#define ed25519_hash_update sha512_update\n#define ed25519_hash_final sha512_finish\n#define ed25519_hash sha512_hash\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-hash.h",
    "content": "#if defined(ED25519_REFHASH)\n\n/* reference/slow SHA-512. really, do not use this */\n\n#define HASH_BLOCK_SIZE 128\n#define HASH_DIGEST_SIZE 64\n\ntypedef struct sha512_state_t {\n\tuint64_t H[8];\n\tuint64_t T[2];\n\tuint32_t leftover;\n\tuint8_t buffer[HASH_BLOCK_SIZE];\n} sha512_state;\n\ntypedef sha512_state ed25519_hash_context;\n\nstatic const uint64_t sha512_constants[80] = {\n\t0x428a2f98d728ae22ull, 0x7137449123ef65cdull, 0xb5c0fbcfec4d3b2full, 0xe9b5dba58189dbbcull,\n\t0x3956c25bf348b538ull, 0x59f111f1b605d019ull, 0x923f82a4af194f9bull, 0xab1c5ed5da6d8118ull,\n\t0xd807aa98a3030242ull, 0x12835b0145706fbeull, 0x243185be4ee4b28cull, 0x550c7dc3d5ffb4e2ull,\n\t0x72be5d74f27b896full, 0x80deb1fe3b1696b1ull, 0x9bdc06a725c71235ull, 0xc19bf174cf692694ull,\n\t0xe49b69c19ef14ad2ull, 0xefbe4786384f25e3ull, 0x0fc19dc68b8cd5b5ull, 0x240ca1cc77ac9c65ull,\n\t0x2de92c6f592b0275ull, 0x4a7484aa6ea6e483ull, 0x5cb0a9dcbd41fbd4ull, 0x76f988da831153b5ull,\n\t0x983e5152ee66dfabull, 0xa831c66d2db43210ull, 0xb00327c898fb213full, 0xbf597fc7beef0ee4ull,\n\t0xc6e00bf33da88fc2ull, 0xd5a79147930aa725ull, 0x06ca6351e003826full, 0x142929670a0e6e70ull,\n\t0x27b70a8546d22ffcull, 0x2e1b21385c26c926ull, 0x4d2c6dfc5ac42aedull, 0x53380d139d95b3dfull,\n\t0x650a73548baf63deull, 0x766a0abb3c77b2a8ull, 0x81c2c92e47edaee6ull, 0x92722c851482353bull,\n\t0xa2bfe8a14cf10364ull, 0xa81a664bbc423001ull, 0xc24b8b70d0f89791ull, 0xc76c51a30654be30ull,\n\t0xd192e819d6ef5218ull, 0xd69906245565a910ull, 0xf40e35855771202aull, 0x106aa07032bbd1b8ull,\n\t0x19a4c116b8d2d0c8ull, 0x1e376c085141ab53ull, 0x2748774cdf8eeb99ull, 0x34b0bcb5e19b48a8ull,\n\t0x391c0cb3c5c95a63ull, 0x4ed8aa4ae3418acbull, 0x5b9cca4f7763e373ull, 0x682e6ff3d6b2b8a3ull,\n\t0x748f82ee5defb2fcull, 0x78a5636f43172f60ull, 0x84c87814a1f0ab72ull, 0x8cc702081a6439ecull,\n\t0x90befffa23631e28ull, 0xa4506cebde82bde9ull, 0xbef9a3f7b2c67915ull, 0xc67178f2e372532bull,\n\t0xca273eceea26619cull, 0xd186b8c721c0c207ull, 0xeada7dd6cde0eb1eull, 0xf57d4f7fee6ed178ull,\n\t0x06f067aa72176fbaull, 0x0a637dc5a2c898a6ull, 0x113f9804bef90daeull, 0x1b710b35131c471bull,\n\t0x28db77f523047d84ull, 0x32caab7b40c72493ull, 0x3c9ebe0a15c9bebcull, 0x431d67c49c100d4cull,\n\t0x4cc5d4becb3e42b6ull, 0x597f299cfc657e2aull, 0x5fcb6fab3ad6faecull, 0x6c44198c4a475817ull\n};\n\nstatic uint64_t\nsha512_ROTR64(uint64_t x, int k) {\n\treturn (x >> k) | (x << (64 - k));\n}\n\nstatic uint64_t\nsha512_LOAD64_BE(const uint8_t *p) {\n\treturn \n\t\t((uint64_t)p[0] << 56) |\n\t\t((uint64_t)p[1] << 48) |\n\t\t((uint64_t)p[2] << 40) |\n\t\t((uint64_t)p[3] << 32) |\n\t\t((uint64_t)p[4] << 24) |\n\t\t((uint64_t)p[5] << 16) |\n\t\t((uint64_t)p[6] <<  8) |\n\t\t((uint64_t)p[7]      );\n}\n\nstatic void\nsha512_STORE64_BE(uint8_t *p, uint64_t v) {\n\tp[0] = (uint8_t)(v >> 56);\n\tp[1] = (uint8_t)(v >> 48);\n\tp[2] = (uint8_t)(v >> 40);\n\tp[3] = (uint8_t)(v >> 32);\n\tp[4] = (uint8_t)(v >> 24);\n\tp[5] = (uint8_t)(v >> 16);\n\tp[6] = (uint8_t)(v >>  8);\n\tp[7] = (uint8_t)(v      );\n}\n\n#define Ch(x,y,z)  (z ^ (x & (y ^ z)))\n#define Maj(x,y,z) (((x | y) & z) | (x & y))\n#define S0(x)      (sha512_ROTR64(x, 28) ^ sha512_ROTR64(x, 34) ^ sha512_ROTR64(x, 39))\n#define S1(x)      (sha512_ROTR64(x, 14) ^ sha512_ROTR64(x, 18) ^ sha512_ROTR64(x, 41))\n#define G0(x)      (sha512_ROTR64(x,  1) ^ sha512_ROTR64(x,  8) ^ (x >>  7))\n#define G1(x)      (sha512_ROTR64(x, 19) ^ sha512_ROTR64(x, 61) ^ (x >>  6))\n#define W0(in,i)   (sha512_LOAD64_BE(&in[i * 8]))\n#define W1(i)      (G1(w[i - 2]) + w[i - 7] + G0(w[i - 15]) + w[i - 16])\n#define STEP(i) \\\n\tt1 = S0(r[0]) + Maj(r[0], r[1], r[2]); \\\n\tt0 = r[7] + S1(r[4]) + Ch(r[4], r[5], r[6]) + sha512_constants[i] + w[i]; \\\n\tr[7] = r[6]; \\\n\tr[6] = r[5]; \\\n\tr[5] = r[4]; \\\n\tr[4] = r[3] + t0; \\\n\tr[3] = r[2]; \\\n\tr[2] = r[1]; \\\n\tr[1] = r[0]; \\\n\tr[0] = t0 + t1;\n\nstatic void\nsha512_blocks(sha512_state *S, const uint8_t *in, size_t blocks) {\n\tuint64_t r[8], w[80], t0, t1;\n\tsize_t i;\n\n\tfor (i = 0; i < 8; i++) r[i] = S->H[i];\n\n\twhile (blocks--) {\n\t\tfor (i =  0; i < 16; i++) { w[i] = W0(in, i); }\n\t\tfor (i = 16; i < 80; i++) { w[i] = W1(i); }\n\t\tfor (i =  0; i < 80; i++) { STEP(i); }\n\t\tfor (i =  0; i <  8; i++) { r[i] += S->H[i]; S->H[i] = r[i]; }\n\t\tS->T[0] += HASH_BLOCK_SIZE * 8;\n\t\tS->T[1] += (!S->T[0]) ? 1 : 0;\n\t\tin += HASH_BLOCK_SIZE;\n\t}\n}\n\nstatic void\ned25519_hash_init(sha512_state *S) {\n\tS->H[0] = 0x6a09e667f3bcc908ull;\n\tS->H[1] = 0xbb67ae8584caa73bull;\n\tS->H[2] = 0x3c6ef372fe94f82bull;\n\tS->H[3] = 0xa54ff53a5f1d36f1ull;\n\tS->H[4] = 0x510e527fade682d1ull;\n\tS->H[5] = 0x9b05688c2b3e6c1full;\n\tS->H[6] = 0x1f83d9abfb41bd6bull;\n\tS->H[7] = 0x5be0cd19137e2179ull;\n\tS->T[0] = 0;\n\tS->T[1] = 0;\n\tS->leftover = 0;\n}\n\nstatic void\ned25519_hash_update(sha512_state *S, const uint8_t *in, size_t inlen) {\n\tsize_t blocks, want;\n\n\t/* handle the previous data */\n\tif (S->leftover) {\n\t\twant = (HASH_BLOCK_SIZE - S->leftover);\n\t\twant = (want < inlen) ? want : inlen;\n\t\tmemcpy(S->buffer + S->leftover, in, want);\n\t\tS->leftover += (uint32_t)want;\n\t\tif (S->leftover < HASH_BLOCK_SIZE)\n\t\t\treturn;\n\t\tin += want;\n\t\tinlen -= want;\n\t\tsha512_blocks(S, S->buffer, 1);\n\t}\n\n\t/* handle the current data */\n\tblocks = (inlen & ~(HASH_BLOCK_SIZE - 1));\n\tS->leftover = (uint32_t)(inlen - blocks);\n\tif (blocks) {\n\t\tsha512_blocks(S, in, blocks / HASH_BLOCK_SIZE);\n\t\tin += blocks;\n\t}\n\n\t/* handle leftover data */\n\tif (S->leftover)\n\t\tmemcpy(S->buffer, in, S->leftover);\n}\n\nstatic void\ned25519_hash_final(sha512_state *S, uint8_t *hash) {\n\tuint64_t t0 = S->T[0] + (S->leftover * 8), t1 = S->T[1];\n\n\tS->buffer[S->leftover] = 0x80;\n\tif (S->leftover <= 111) {\n\t\tmemset(S->buffer + S->leftover + 1, 0, 111 - S->leftover);\n\t} else {\n\t\tmemset(S->buffer + S->leftover + 1, 0, 127 - S->leftover);\n\t\tsha512_blocks(S, S->buffer, 1);\n\t\tmemset(S->buffer, 0, 112);\n\t}\n\n\tsha512_STORE64_BE(S->buffer + 112, t1);\n\tsha512_STORE64_BE(S->buffer + 120, t0);\n\tsha512_blocks(S, S->buffer, 1);\n\n\tsha512_STORE64_BE(&hash[ 0], S->H[0]);\n\tsha512_STORE64_BE(&hash[ 8], S->H[1]);\n\tsha512_STORE64_BE(&hash[16], S->H[2]);\n\tsha512_STORE64_BE(&hash[24], S->H[3]);\n\tsha512_STORE64_BE(&hash[32], S->H[4]);\n\tsha512_STORE64_BE(&hash[40], S->H[5]);\n\tsha512_STORE64_BE(&hash[48], S->H[6]);\n\tsha512_STORE64_BE(&hash[56], S->H[7]);\n}\n\nstatic void\ned25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen) {\n\ted25519_hash_context ctx;\n\ted25519_hash_init(&ctx);\n\ted25519_hash_update(&ctx, in, inlen);\n\ted25519_hash_final(&ctx, hash);\n}\n\n#elif defined(ED25519_CUSTOMHASH)\n\n#include \"ed25519-hash-custom.h\"\n\n#else\n\n#include <openssl/sha.h>\n\ntypedef SHA512_CTX ed25519_hash_context;\n\nstatic void\ned25519_hash_init(ed25519_hash_context *ctx) {\n\tSHA512_Init(ctx);\n}\n\nstatic void\ned25519_hash_update(ed25519_hash_context *ctx, const uint8_t *in, size_t inlen) {\n\tSHA512_Update(ctx, in, inlen);\n}\n\nstatic void\ned25519_hash_final(ed25519_hash_context *ctx, uint8_t *hash) {\n\tSHA512_Final(hash, ctx);\n}\n\nstatic void\ned25519_hash(uint8_t *hash, const uint8_t *in, size_t inlen) {\n\tSHA512(in, inlen, hash);\n}\n\n#endif\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-randombytes-custom.h",
    "content": "/*\n\ta custom randombytes must implement:\n\n\tvoid ED25519_FN(ed25519_randombytes_unsafe) (void *p, size_t len);\n\n\ted25519_randombytes_unsafe is used by the batch verification function\n\tto create random scalars\n*/\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519-randombytes.h",
    "content": "#if defined(ED25519_TEST)\n/*\n\tISAAC+ \"variant\", the paper is not clear on operator precedence and other\n\tthings. This is the \"first in, first out\" option!\n\n\tNot threadsafe or securely initialized, only for deterministic testing\n*/\ntypedef struct isaacp_state_t {\n\tuint32_t state[256];\n\tunsigned char buffer[1024];\n\tuint32_t a, b, c;\n\tsize_t left;\n} isaacp_state;\n\n#define isaacp_step(offset, mix) \\\n\tx = mm[i + offset]; \\\n\ta = (a ^ (mix)) + (mm[(i + offset + 128) & 0xff]); \\\n\ty = (a ^ b) + mm[(x >> 2) & 0xff]; \\\n\tmm[i + offset] = y; \\\n\tb = (x + a) ^ mm[(y >> 10) & 0xff]; \\\n\tU32TO8_LE(out + (i + offset) * 4, b);\n\nstatic void\nisaacp_mix(isaacp_state *st) {\n\tuint32_t i, x, y;\n\tuint32_t a = st->a, b = st->b, c = st->c;\n\tuint32_t *mm = st->state;\n\tunsigned char *out = st->buffer;\n\n\tc = c + 1;\n\tb = b + c;\n\n\tfor (i = 0; i < 256; i += 4) {\n\t\tisaacp_step(0, ROTL32(a,13))\n\t\tisaacp_step(1, ROTR32(a, 6))\n\t\tisaacp_step(2, ROTL32(a, 2))\n\t\tisaacp_step(3, ROTR32(a,16))\n\t}\n\n\tst->a = a;\n\tst->b = b;\n\tst->c = c;\n\tst->left = 1024;\n}\n\nstatic void\nisaacp_random(isaacp_state *st, void *p, size_t len) {\n\tsize_t use;\n\tunsigned char *c = (unsigned char *)p;\n\twhile (len) {\n\t\tuse = (len > st->left) ? st->left : len;\n\t\tmemcpy(c, st->buffer + (sizeof(st->buffer) - st->left), use);\n\n\t\tst->left -= use;\n\t\tc += use;\n\t\tlen -= use;\n\n\t\tif (!st->left)\n\t\t\tisaacp_mix(st);\n\t}\n}\n\nvoid\nED25519_FN(ed25519_randombytes_unsafe) (void *p, size_t len) {\n\tstatic int initialized = 0;\n\tstatic isaacp_state rng;\n\n\tif (!initialized) {\n\t\tmemset(&rng, 0, sizeof(rng));\n\t\tisaacp_mix(&rng);\n\t\tisaacp_mix(&rng);\n\t\tinitialized = 1;\n\t}\n\n\tisaacp_random(&rng, p, len);\n}\n#elif defined(ED25519_CUSTOMRANDOM)\n\n#include \"ed25519-randombytes-custom.h\"\n\n#else\n\n#include <openssl/rand.h>\n\nvoid\nED25519_FN(ed25519_randombytes_unsafe) (void *p, size_t len) {\n\n  RAND_bytes(p, (int) len);\n\n}\n#endif\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519.c",
    "content": "/*\n\tPublic domain by Andrew M. <liquidsun@gmail.com>\n\n\tEd25519 reference implementation using Ed25519-donna\n*/\n\n\n/* define ED25519_SUFFIX to have it appended to the end of each public function */\n#if !defined(ED25519_SUFFIX)\n#define ED25519_SUFFIX \n#endif\n\n#define ED25519_FN3(fn,suffix) fn##suffix\n#define ED25519_FN2(fn,suffix) ED25519_FN3(fn,suffix)\n#define ED25519_FN(fn)         ED25519_FN2(fn,ED25519_SUFFIX)\n\n#include \"ed25519-donna.h\"\n#include \"ed25519.h\"\n#include \"ed25519-randombytes.h\"\n#include \"ed25519-hash.h\"\n\n/*\n\tGenerates a (extsk[0..31]) and aExt (extsk[32..63])\n*/\n\nDONNA_INLINE static void\ned25519_extsk(hash_512bits extsk, const ed25519_secret_key sk) {\n\ted25519_hash(extsk, sk, 32);\n\textsk[0] &= 248;\n\textsk[31] &= 127;\n\textsk[31] |= 64;\n}\n\nstatic void\ned25519_hram(hash_512bits hram, const ed25519_signature RS, const ed25519_public_key pk, const unsigned char *m, size_t mlen) {\n\ted25519_hash_context ctx;\n\ted25519_hash_init(&ctx);\n\ted25519_hash_update(&ctx, RS, 32);\n\ted25519_hash_update(&ctx, pk, 32);\n\ted25519_hash_update(&ctx, m, mlen);\n\ted25519_hash_final(&ctx, hram);\n}\n\nvoid\nED25519_FN(ed25519_publickey) (const ed25519_secret_key sk, ed25519_public_key pk) {\n\tbignum256modm a;\n\tge25519 ALIGN(16) A;\n\thash_512bits extsk;\n\n\t/* A = aB */\n\ted25519_extsk(extsk, sk);\n\texpand256_modm(a, extsk, 32);\n\tge25519_scalarmult_base_niels(&A, ge25519_niels_base_multiples, a);\n\tge25519_pack(pk, &A);\n}\n\n\nvoid\nED25519_FN(ed25519_sign) (const unsigned char *m, size_t mlen, const ed25519_secret_key sk, const ed25519_public_key pk, ed25519_signature RS) {\n\ted25519_hash_context ctx;\n\tbignum256modm r, S, a;\n\tge25519 ALIGN(16) R;\n\thash_512bits extsk, hashr, hram;\n\n\ted25519_extsk(extsk, sk);\n\n\t/* r = H(aExt[32..64], m) */\n\ted25519_hash_init(&ctx);\n\ted25519_hash_update(&ctx, extsk + 32, 32);\n\ted25519_hash_update(&ctx, m, mlen);\n\ted25519_hash_final(&ctx, hashr);\n\texpand256_modm(r, hashr, 64);\n\n\t/* R = rB */\n\tge25519_scalarmult_base_niels(&R, ge25519_niels_base_multiples, r);\n\tge25519_pack(RS, &R);\n\n\t/* S = H(R,A,m).. */\n\ted25519_hram(hram, RS, pk, m, mlen);\n\texpand256_modm(S, hram, 64);\n\n\t/* S = H(R,A,m)a */\n\texpand256_modm(a, extsk, 32);\n\tmul256_modm(S, S, a);\n\n\t/* S = (r + H(R,A,m)a) */\n\tadd256_modm(S, S, r);\n\n\t/* S = (r + H(R,A,m)a) mod L */\t\n\tcontract256_modm(RS + 32, S);\n}\n\nint\nED25519_FN(ed25519_sign_open) (const unsigned char *m, size_t mlen, const ed25519_public_key pk, const ed25519_signature RS) {\n\tge25519 ALIGN(16) R, A;\n\thash_512bits hash;\n\tbignum256modm hram, S;\n\tunsigned char checkR[32];\n\n\tif ((RS[63] & 224) || !ge25519_unpack_negative_vartime(&A, pk))\n\t\treturn -1;\n\n\t/* hram = H(R,A,m) */\n\ted25519_hram(hash, RS, pk, m, mlen);\n\texpand256_modm(hram, hash, 64);\n\n\t/* S */\n\texpand256_modm(S, RS + 32, 32);\n\n\t/* SB - H(R,A,m)A */\n\tge25519_double_scalarmult_vartime(&R, &A, hram, S);\n\tge25519_pack(checkR, &R);\n\n\t/* check that R = SB - H(R,A,m)A */\n\treturn ed25519_verify(RS, checkR, 32) ? 0 : -1;\n}\n\n#include \"ed25519-donna-batchverify.h\"\n\n/*\n\tFast Curve25519 basepoint scalar multiplication\n*/\n\nvoid\nED25519_FN(curved25519_scalarmult_basepoint) (curved25519_key pk, const curved25519_key e) {\n\tcurved25519_key ec;\n\tbignum256modm s;\n\tbignum25519 ALIGN(16) yplusz, zminusy;\n\tge25519 ALIGN(16) p;\n\tsize_t i;\n\n\t/* clamp */\n\tfor (i = 0; i < 32; i++) ec[i] = e[i];\n\tec[0] &= 248;\n\tec[31] &= 127;\n\tec[31] |= 64;\n\n\texpand_raw256_modm(s, ec);\n\n\t/* scalar * basepoint */\n\tge25519_scalarmult_base_niels(&p, ge25519_niels_base_multiples, s);\n\n\t/* u = (y + z) / (z - y) */\n\tcurve25519_add(yplusz, p.y, p.z);\n\tcurve25519_sub(zminusy, p.z, p.y);\n\tcurve25519_recip(zminusy, zminusy);\n\tcurve25519_mul(yplusz, yplusz, zminusy);\n\tcurve25519_contract(pk, yplusz);\n}\n\n"
  },
  {
    "path": "src/crypto/ed25519/ed25519.h",
    "content": "#ifndef ED25519_H\n#define ED25519_H\n\n#include <stdlib.h>\n\n#if defined(__cplusplus)\nextern \"C\" {\n#endif\n\ntypedef unsigned char ed25519_signature[64];\ntypedef unsigned char ed25519_public_key[32];\ntypedef unsigned char ed25519_secret_key[32];\n\ntypedef unsigned char curved25519_key[32];\n\nvoid ed25519_publickey(const ed25519_secret_key sk, ed25519_public_key pk);\nint ed25519_sign_open(const unsigned char *m, size_t mlen, const ed25519_public_key pk, const ed25519_signature RS);\nvoid ed25519_sign(const unsigned char *m, size_t mlen, const ed25519_secret_key sk, const ed25519_public_key pk, ed25519_signature RS);\n\nint ed25519_sign_open_batch(const unsigned char **m, size_t *mlen, const unsigned char **pk, const unsigned char **RS, size_t num, int *valid);\n\nvoid ed25519_randombytes_unsafe(void *out, size_t count);\n\nvoid curved25519_scalarmult_basepoint(curved25519_key pk, const curved25519_key e);\n\n#if defined(__cplusplus)\n}\n#endif\n\n#endif // ED25519_H\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/README.md",
    "content": "This code fuzzes ed25519-donna (and optionally ed25519-donna-sse2) against the ref10 implementations of\n[curve25519](https://github.com/floodyberry/supercop/tree/master/crypto_scalarmult/curve25519/ref10) and \n[ed25519](https://github.com/floodyberry/supercop/tree/master/crypto_sign/ed25519/ref10).\n\nCurve25519 tests that generating a public key from a secret key\n\n# Building\n\n## *nix + PHP\n\n`php build-nix.php (required parameters) (optional parameters)`\n\nRequired parameters:\n\n* `--function=[curve25519,ed25519]`\n* `--bits=[32,64]`\n\nOptional parameters:\n\n* `--with-sse2`\n\n    Also fuzz against ed25519-donna-sse2\n* `--with-openssl`\n\n    Build with OpenSSL's SHA-512.\n\n    Default: Reference SHA-512 implementation (slow!)\n\n* `--compiler=[gcc,clang,icc]`\n\n    Default: gcc\n\n* `--no-asm`\n\n    Do not use platform specific assembler\n\n\nexample:\n    \n    php build-nix.php --bits=64 --function=ed25519 --with-sse2 --compiler=icc \n\n## Windows\n\nCreate a project with access to the ed25519 files.\n\nIf you are not using OpenSSL, add the `ED25519_REFHASH` define to the projects \n\"Properties/Preprocessor/Preprocessor Definitions\" option\n\nAdd the following files to the project:\n\n* `fuzz/curve25519-ref10.c`\n* `fuzz/ed25519-ref10.c`\n* `fuzz/ed25519-donna.c`\n* `fuzz/ed25519-donna-sse2.c` (optional)\n* `fuzz-[curve25519/ed25519].c` (depending on which you want to fuzz)\n\nIf you are also fuzzing against ed25519-donna-sse2, add the `ED25519_SSE2` define for `fuzz-[curve25519/ed25519].c` under \nits \"Properties/Preprocessor/Preprocessor Definitions\" option.\n\n# Running\n\nIf everything agrees, the program will only output occasional status dots (every 0x1000 passes) \nand a 64bit progress count (every 0x20000 passes):\n\n    fuzzing:  ref10 curved25519 curved25519-sse2\n    \n    ................................ [0000000000020000]\n    ................................ [0000000000040000]\n    ................................ [0000000000060000]\n    ................................ [0000000000080000]\n    ................................ [00000000000a0000]\n    ................................ [00000000000c0000]\n \nIf any of the implementations do not agree with the ref10 implementation, the program will dump\nthe random data that was used, the data generated by the ref10 implementation, and diffs of the \ned25519-donna data against the ref10 data.\n\n## Example errors\n\nThese are example error dumps (with intentionally introduced errors).\n\n### Ed25519\n\nRandom data:\n\n* sk, or Secret Key\n* m, or Message\n\nGenerated data:\n\n* pk, or Public Key\n* sig, or Signature\n* valid, or if the signature of the message is valid with the public key\n\nDump:\n\n    sk:\n    0x3b,0xb7,0x17,0x7a,0x66,0xdc,0xb7,0x9a,0x90,0x25,0x07,0x99,0x96,0xf3,0x92,0xef,\n    0x78,0xf8,0xad,0x6c,0x35,0x87,0x81,0x67,0x03,0xe6,0x95,0xba,0x06,0x18,0x7c,0x9c,\n    \n    m:\n    0x7c,0x8d,0x3d,0xe1,0x92,0xee,0x7a,0xb8,0x4d,0xc9,0xfb,0x02,0x34,0x1e,0x5a,0x91,\n    0xee,0x01,0xa6,0xb8,0xab,0x37,0x3f,0x3d,0x6d,0xa2,0x47,0xe3,0x27,0x93,0x7c,0xb7,\n    0x77,0x07,0xb6,0x88,0x41,0x22,0xf3,0x3f,0xce,0xcb,0x6b,0x3e,0x2b,0x23,0x68,0x7f,\n    0x5b,0xb9,0xda,0x04,0xbb,0xae,0x42,0x50,0xf5,0xe9,0xc5,0x11,0xbd,0x52,0x76,0x98,\n    0xf1,0x87,0x09,0xb9,0x89,0x0a,0x52,0x69,0x01,0xce,0xe0,0x4a,0xa6,0x46,0x5a,0xe1,\n    0x63,0x14,0xe0,0x81,0x52,0xec,0xcd,0xcf,0x70,0x54,0x7d,0xa3,0x49,0x8b,0xf0,0x89,\n    0x70,0x07,0x12,0x2a,0xd9,0xaa,0x16,0x01,0xb2,0x16,0x3a,0xbb,0xfc,0xfa,0x13,0x5b,\n    0x69,0x83,0x92,0x70,0x95,0x76,0xa0,0x8e,0x16,0x79,0xcc,0xaa,0xb5,0x7c,0xf8,0x7a,\n    \n    ref10:\n    pk:\n    0x71,0xb0,0x5e,0x62,0x1b,0xe3,0xe7,0x36,0x91,0x8b,0xc0,0x13,0x36,0x0c,0xc9,0x04,\n    0x16,0xf5,0xff,0x48,0x0c,0x83,0x6b,0x88,0x53,0xa2,0xc6,0x0f,0xf7,0xac,0x42,0x04,\n    \n    sig:\n    0x3e,0x05,0xc5,0x37,0x16,0x0b,0x29,0x30,0x89,0xa3,0xe7,0x83,0x08,0x16,0xdd,0x96,\n    0x02,0xfa,0x0d,0x44,0x2c,0x43,0xaa,0x80,0x93,0x04,0x58,0x22,0x09,0xbf,0x11,0xa5,\n    0xcc,0xa5,0x3c,0x9f,0xa0,0xa4,0x64,0x5a,0x4a,0xdb,0x20,0xfb,0xc7,0x9b,0xfd,0x3f,\n    0x08,0xae,0xc4,0x3c,0x1e,0xd8,0xb6,0xb4,0xd2,0x6d,0x80,0x92,0xcb,0x71,0xf3,0x02,\n    \n    valid: yes\n    \n    ed25519-donna:\n    pk diff:\n    ____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,\n    ____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,\n    \n    sig diff:\n    0x2c,0xb9,0x25,0x14,0xd0,0x94,0xeb,0xfe,0x46,0x02,0xc2,0xe8,0xa3,0xeb,0xbf,0xb5,\n    0x72,0x84,0xbf,0xc1,0x8a,0x32,0x30,0x99,0xf7,0x58,0xfe,0x06,0xa8,0xdc,0xdc,0xab,\n    0xb5,0x57,0x03,0x33,0x87,0xce,0x54,0x55,0x6a,0x69,0x8a,0xc4,0xb7,0x2a,0xed,0x97,\n    0xb4,0x68,0xe7,0x52,0x7a,0x07,0x55,0x3b,0xa2,0x94,0xd6,0x5e,0xa1,0x61,0x80,0x08,\n    \n    valid: no\n\nIn this case, the generated public key matches, but the generated signature is completely \ndifferent and does not validate.\n\n### Curve25519\n\nRandom data:\n\n* sk, or Secret Key\n\nGenerated data:\n\n* pk, or Public Key\n\nDump:\n\n    sk:\n    0x44,0xec,0x0b,0x0e,0xa2,0x0e,0x9c,0x5b,0x8c,0xce,0x7b,0x1d,0x68,0xae,0x0f,0x9e,\n    0x81,0xe2,0x04,0x76,0xda,0x87,0xa4,0x9e,0xc9,0x4f,0x3b,0xf9,0xc3,0x89,0x63,0x70,\n    \n    \n    ref10:\n    0x24,0x55,0x55,0xc0,0xf9,0x80,0xaf,0x02,0x43,0xee,0x8c,0x7f,0xc1,0xad,0x90,0x95,\n    0x57,0x91,0x14,0x2e,0xf2,0x14,0x22,0x80,0xdd,0x4e,0x3c,0x85,0x71,0x84,0x8c,0x62,\n    \n    \n    curved25519 diff:\n    0x12,0xd1,0x61,0x2b,0x16,0xb3,0xd8,0x29,0xf8,0xa3,0xba,0x70,0x4e,0x49,0x4f,0x43,\n    0xa1,0x3c,0x6b,0x42,0x11,0x61,0xcc,0x30,0x87,0x73,0x46,0xfb,0x85,0xc7,0x9a,0x35,\n    \n    \n    curved25519-sse2 diff:\n    ____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,\n    ____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,____,\n\n\nIn this case, curved25519 is totally wrong, while curved25519-sse2 matches the reference \nimplementation."
  },
  {
    "path": "src/crypto/ed25519/fuzz/build-nix.php",
    "content": "<?php\n\tfunction echoln($str) {\n\t\techo $str;\n\t\techo \"\\n\";\n\t}\n\n\tfunction usage($reason) {\n\t\techoln(\"Usage: php build-nix.php [flags]\");\n\t\techoln(\"Flags in parantheses are optional\");\n\t\techoln(\"\");\n\t\techoln(\"  --bits=[32,64]\");\n\t\techoln(\"  --function=[curve25519,ed25519]\");\n\t\techoln(\" (--compiler=[*gcc,clang,icc])        which compiler to use, gcc is default\");\n\t\techoln(\" (--with-openssl)                     use openssl for SHA512\");\n\t\techoln(\" (--with-sse2)                        additionally fuzz against SSE2\");\n\t\techoln(\" (--no-asm)                           don't use platform specific asm\");\n\t\techoln(\"\");\n\t\tif ($reason)\n\t\t\techoln($reason);\n\t}\n\n\tfunction cleanup() {\n\t\tsystem(\"rm -f *.o\");\n\t}\n\n\tfunction runcmd($desc, $cmd) {\n\t\techoln($desc);\n\n\t\t$ret = 0;\n\t\tsystem($cmd, $ret);\n\t\tif ($ret) {\n\t\t\tcleanup();\n\t\t\texit;\n\t\t}\n\t}\n\n\tclass argument {\n\t\tvar $set, $value;\n\t}\n\n\tclass multiargument extends argument {\n\t\tfunction multiargument($flag, $legal_values) {\n\t\t\tglobal $argc, $argv;\n\n\t\t\t$this->set = false;\n\n\t\t\t$map = array();\n\t\t\tforeach($legal_values as $value)\n\t\t\t\t$map[$value] = true;\n\n\t\t\tfor ($i = 1; $i < $argc; $i++) {\n\t\t\t\tif (!preg_match(\"!--\".$flag.\"=(.*)!\", $argv[$i], $m))\n\t\t\t\t\tcontinue;\n\t\t\t\tif (isset($map[$m[1]])) {\n\t\t\t\t\t$this->value = $m[1];\n\t\t\t\t\t$this->set = true;\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tusage(\"{$m[1]} is not a valid parameter to --{$flag}!\");\n\t\t\t\t\texit(1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tclass flag extends argument {\n\t\tfunction flag($flag) {\n\t\t\tglobal $argc, $argv;\n\n\t\t\t$this->set = false;\n\n\t\t\t$flag = \"--{$flag}\";\n\t\t\tfor ($i = 1; $i < $argc; $i++) {\n\t\t\t\tif ($argv[$i] !== $flag)\n\t\t\t\t\tcontinue;\n\t\t\t\t$this->value = true;\n\t\t\t\t$this->set = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\n\t$bits = new multiargument(\"bits\", array(\"32\", \"64\"));\n\t$function = new multiargument(\"function\", array(\"curve25519\", \"ed25519\"));\n\t$compiler = new multiargument(\"compiler\", array(\"gcc\", \"clang\", \"icc\"));\n\t$with_sse2 = new flag(\"with-sse2\");\n\t$with_openssl = new flag(\"with-openssl\");\n\t$no_asm = new flag(\"no-asm\");\n\n\t$err = \"\";\n\tif (!$bits->set)\n\t\t$err .= \"--bits not set\\n\";\n\tif (!$function->set)\n\t\t$err .= \"--function not set\\n\";\n\n\tif ($err !== \"\") {\n\t\tusage($err);\n\t\texit;\n\t}\n\n\t$compile = ($compiler->set) ? $compiler->value : \"gcc\";\n\t$link = \"\";\n\t$flags = \"-O3 -m{$bits->value}\";\n\t$ret = 0;\n\n\tif ($with_openssl->set) $link .= \" -lssl -lcrypto\";\n\tif (!$with_openssl->set) $flags .= \" -DED25519_REFHASH -DED25519_TEST\";\n\tif ($no_asm->set) $flags .= \" -DED25519_NO_INLINE_ASM\";\n\n\tif ($function->value === \"curve25519\") {\n\t\truncmd(\"building ref10..\", \"{$compile} {$flags} curve25519-ref10.c -c -o curve25519-ref10.o\");\n\t\truncmd(\"building ed25519..\", \"{$compile} {$flags} ed25519-donna.c -c -o ed25519.o\");\n\t\tif ($with_sse2->set) {\n\t\t\truncmd(\"building ed25519-sse2..\", \"{$compile} {$flags} ed25519-donna-sse2.c -c -o ed25519-sse2.o -msse2\");\n\t\t\t$flags .= \" -DED25519_SSE2\";\n\t\t\t$link .= \" ed25519-sse2.o\";\n\t\t}\n\t\truncmd(\"linking..\", \"{$compile} {$flags} {$link} fuzz-curve25519.c ed25519.o curve25519-ref10.o -o fuzz-curve25519\");\n\t\techoln(\"fuzz-curve25519 built.\");\n\t} else \tif ($function->value === \"ed25519\") {\n\t\truncmd(\"building ref10..\", \"{$compile} {$flags} ed25519-ref10.c -c -o ed25519-ref10.o\");\n\t\truncmd(\"building ed25519..\", \"{$compile} {$flags} ed25519-donna.c -c -o ed25519.o\");\n\t\tif ($with_sse2->set) {\n\t\t\truncmd(\"building ed25519-sse2..\", \"{$compile} {$flags} ed25519-donna-sse2.c -c -o ed25519-sse2.o -msse2\");\n\t\t\t$flags .= \" -DED25519_SSE2\";\n\t\t\t$link .= \" ed25519-sse2.o\";\n\t\t}\n\t\truncmd(\"linking..\", \"{$compile} {$flags} {$link} fuzz-ed25519.c ed25519.o ed25519-ref10.o -o fuzz-ed25519\");\n\t\techoln(\"fuzz-ed25519 built.\");\n\t}\n\n\n\tcleanup();\n?>\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/curve25519-ref10.c",
    "content": "#include <stdint.h>\n\ntypedef int32_t crypto_int32;\ntypedef int64_t crypto_int64;\ntypedef uint64_t crypto_uint64;\n\ntypedef crypto_int32 fe[10];\n\n/*\nh = 0\n*/\n\nvoid fe_0(fe h)\n{\n  h[0] = 0;\n  h[1] = 0;\n  h[2] = 0;\n  h[3] = 0;\n  h[4] = 0;\n  h[5] = 0;\n  h[6] = 0;\n  h[7] = 0;\n  h[8] = 0;\n  h[9] = 0;\n}\n\n/*\nh = 1\n*/\n\nvoid fe_1(fe h)\n{\n  h[0] = 1;\n  h[1] = 0;\n  h[2] = 0;\n  h[3] = 0;\n  h[4] = 0;\n  h[5] = 0;\n  h[6] = 0;\n  h[7] = 0;\n  h[8] = 0;\n  h[9] = 0;\n}\n\n/*\nh = f + g\nCan overlap h with f or g.\n\nPreconditions:\n   |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n   |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n*/\n\nvoid fe_add(fe h,fe f,fe g)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 h0 = f0 + g0;\n  crypto_int32 h1 = f1 + g1;\n  crypto_int32 h2 = f2 + g2;\n  crypto_int32 h3 = f3 + g3;\n  crypto_int32 h4 = f4 + g4;\n  crypto_int32 h5 = f5 + g5;\n  crypto_int32 h6 = f6 + g6;\n  crypto_int32 h7 = f7 + g7;\n  crypto_int32 h8 = f8 + g8;\n  crypto_int32 h9 = f9 + g9;\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nh = f\n*/\n\nvoid fe_copy(fe h,fe f)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  h[0] = f0;\n  h[1] = f1;\n  h[2] = f2;\n  h[3] = f3;\n  h[4] = f4;\n  h[5] = f5;\n  h[6] = f6;\n  h[7] = f7;\n  h[8] = f8;\n  h[9] = f9;\n}\n\n\n/*\nReplace (f,g) with (g,f) if b == 1;\nreplace (f,g) with (f,g) if b == 0.\n\nPreconditions: b in {0,1}.\n*/\n\nvoid fe_cswap(fe f,fe g,unsigned int b)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 x0 = f0 ^ g0;\n  crypto_int32 x1 = f1 ^ g1;\n  crypto_int32 x2 = f2 ^ g2;\n  crypto_int32 x3 = f3 ^ g3;\n  crypto_int32 x4 = f4 ^ g4;\n  crypto_int32 x5 = f5 ^ g5;\n  crypto_int32 x6 = f6 ^ g6;\n  crypto_int32 x7 = f7 ^ g7;\n  crypto_int32 x8 = f8 ^ g8;\n  crypto_int32 x9 = f9 ^ g9;\n  b = -b;\n  x0 &= b;\n  x1 &= b;\n  x2 &= b;\n  x3 &= b;\n  x4 &= b;\n  x5 &= b;\n  x6 &= b;\n  x7 &= b;\n  x8 &= b;\n  x9 &= b;\n  f[0] = f0 ^ x0;\n  f[1] = f1 ^ x1;\n  f[2] = f2 ^ x2;\n  f[3] = f3 ^ x3;\n  f[4] = f4 ^ x4;\n  f[5] = f5 ^ x5;\n  f[6] = f6 ^ x6;\n  f[7] = f7 ^ x7;\n  f[8] = f8 ^ x8;\n  f[9] = f9 ^ x9;\n  g[0] = g0 ^ x0;\n  g[1] = g1 ^ x1;\n  g[2] = g2 ^ x2;\n  g[3] = g3 ^ x3;\n  g[4] = g4 ^ x4;\n  g[5] = g5 ^ x5;\n  g[6] = g6 ^ x6;\n  g[7] = g7 ^ x7;\n  g[8] = g8 ^ x8;\n  g[9] = g9 ^ x9;\n}\n\nstatic crypto_uint64 load_3(const unsigned char *in)\n{\n  crypto_uint64 result;\n  result = (crypto_uint64) in[0];\n  result |= ((crypto_uint64) in[1]) << 8;\n  result |= ((crypto_uint64) in[2]) << 16;\n  return result;\n}\n\nstatic crypto_uint64 load_4(const unsigned char *in)\n{\n  crypto_uint64 result;\n  result = (crypto_uint64) in[0];\n  result |= ((crypto_uint64) in[1]) << 8;\n  result |= ((crypto_uint64) in[2]) << 16;\n  result |= ((crypto_uint64) in[3]) << 24;\n  return result;\n}\n\nvoid fe_frombytes(fe h,const unsigned char *s)\n{\n  crypto_int64 h0 = load_4(s);\n  crypto_int64 h1 = load_3(s + 4) << 6;\n  crypto_int64 h2 = load_3(s + 7) << 5;\n  crypto_int64 h3 = load_3(s + 10) << 3;\n  crypto_int64 h4 = load_3(s + 13) << 2;\n  crypto_int64 h5 = load_4(s + 16);\n  crypto_int64 h6 = load_3(s + 20) << 7;\n  crypto_int64 h7 = load_3(s + 23) << 5;\n  crypto_int64 h8 = load_3(s + 26) << 4;\n  crypto_int64 h9 = load_3(s + 29) << 2;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n\n/*\nh = f * g\nCan overlap h with f or g.\n\nPreconditions:\n   |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n   |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n*/\n\n/*\nNotes on implementation strategy:\n\nUsing schoolbook multiplication.\nKaratsuba would save a little in some cost models.\n\nMost multiplications by 2 and 19 are 32-bit precomputations;\ncheaper than 64-bit postcomputations.\n\nThere is one remaining multiplication by 19 in the carry chain;\none *19 precomputation can be merged into this,\nbut the resulting data flow is considerably less clean.\n\nThere are 12 carries below.\n10 of them are 2-way parallelizable and vectorizable.\nCan get away with 11 carries, but then data flow is much deeper.\n\nWith tighter constraints on inputs can squeeze carries into int32.\n*/\n\nvoid fe_mul(fe h,fe f,fe g)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 g1_19 = 19 * g1; /* 1.4*2^29 */\n  crypto_int32 g2_19 = 19 * g2; /* 1.4*2^30; still ok */\n  crypto_int32 g3_19 = 19 * g3;\n  crypto_int32 g4_19 = 19 * g4;\n  crypto_int32 g5_19 = 19 * g5;\n  crypto_int32 g6_19 = 19 * g6;\n  crypto_int32 g7_19 = 19 * g7;\n  crypto_int32 g8_19 = 19 * g8;\n  crypto_int32 g9_19 = 19 * g9;\n  crypto_int32 f1_2 = 2 * f1;\n  crypto_int32 f3_2 = 2 * f3;\n  crypto_int32 f5_2 = 2 * f5;\n  crypto_int32 f7_2 = 2 * f7;\n  crypto_int32 f9_2 = 2 * f9;\n  crypto_int64 f0g0    = f0   * (crypto_int64) g0;\n  crypto_int64 f0g1    = f0   * (crypto_int64) g1;\n  crypto_int64 f0g2    = f0   * (crypto_int64) g2;\n  crypto_int64 f0g3    = f0   * (crypto_int64) g3;\n  crypto_int64 f0g4    = f0   * (crypto_int64) g4;\n  crypto_int64 f0g5    = f0   * (crypto_int64) g5;\n  crypto_int64 f0g6    = f0   * (crypto_int64) g6;\n  crypto_int64 f0g7    = f0   * (crypto_int64) g7;\n  crypto_int64 f0g8    = f0   * (crypto_int64) g8;\n  crypto_int64 f0g9    = f0   * (crypto_int64) g9;\n  crypto_int64 f1g0    = f1   * (crypto_int64) g0;\n  crypto_int64 f1g1_2  = f1_2 * (crypto_int64) g1;\n  crypto_int64 f1g2    = f1   * (crypto_int64) g2;\n  crypto_int64 f1g3_2  = f1_2 * (crypto_int64) g3;\n  crypto_int64 f1g4    = f1   * (crypto_int64) g4;\n  crypto_int64 f1g5_2  = f1_2 * (crypto_int64) g5;\n  crypto_int64 f1g6    = f1   * (crypto_int64) g6;\n  crypto_int64 f1g7_2  = f1_2 * (crypto_int64) g7;\n  crypto_int64 f1g8    = f1   * (crypto_int64) g8;\n  crypto_int64 f1g9_38 = f1_2 * (crypto_int64) g9_19;\n  crypto_int64 f2g0    = f2   * (crypto_int64) g0;\n  crypto_int64 f2g1    = f2   * (crypto_int64) g1;\n  crypto_int64 f2g2    = f2   * (crypto_int64) g2;\n  crypto_int64 f2g3    = f2   * (crypto_int64) g3;\n  crypto_int64 f2g4    = f2   * (crypto_int64) g4;\n  crypto_int64 f2g5    = f2   * (crypto_int64) g5;\n  crypto_int64 f2g6    = f2   * (crypto_int64) g6;\n  crypto_int64 f2g7    = f2   * (crypto_int64) g7;\n  crypto_int64 f2g8_19 = f2   * (crypto_int64) g8_19;\n  crypto_int64 f2g9_19 = f2   * (crypto_int64) g9_19;\n  crypto_int64 f3g0    = f3   * (crypto_int64) g0;\n  crypto_int64 f3g1_2  = f3_2 * (crypto_int64) g1;\n  crypto_int64 f3g2    = f3   * (crypto_int64) g2;\n  crypto_int64 f3g3_2  = f3_2 * (crypto_int64) g3;\n  crypto_int64 f3g4    = f3   * (crypto_int64) g4;\n  crypto_int64 f3g5_2  = f3_2 * (crypto_int64) g5;\n  crypto_int64 f3g6    = f3   * (crypto_int64) g6;\n  crypto_int64 f3g7_38 = f3_2 * (crypto_int64) g7_19;\n  crypto_int64 f3g8_19 = f3   * (crypto_int64) g8_19;\n  crypto_int64 f3g9_38 = f3_2 * (crypto_int64) g9_19;\n  crypto_int64 f4g0    = f4   * (crypto_int64) g0;\n  crypto_int64 f4g1    = f4   * (crypto_int64) g1;\n  crypto_int64 f4g2    = f4   * (crypto_int64) g2;\n  crypto_int64 f4g3    = f4   * (crypto_int64) g3;\n  crypto_int64 f4g4    = f4   * (crypto_int64) g4;\n  crypto_int64 f4g5    = f4   * (crypto_int64) g5;\n  crypto_int64 f4g6_19 = f4   * (crypto_int64) g6_19;\n  crypto_int64 f4g7_19 = f4   * (crypto_int64) g7_19;\n  crypto_int64 f4g8_19 = f4   * (crypto_int64) g8_19;\n  crypto_int64 f4g9_19 = f4   * (crypto_int64) g9_19;\n  crypto_int64 f5g0    = f5   * (crypto_int64) g0;\n  crypto_int64 f5g1_2  = f5_2 * (crypto_int64) g1;\n  crypto_int64 f5g2    = f5   * (crypto_int64) g2;\n  crypto_int64 f5g3_2  = f5_2 * (crypto_int64) g3;\n  crypto_int64 f5g4    = f5   * (crypto_int64) g4;\n  crypto_int64 f5g5_38 = f5_2 * (crypto_int64) g5_19;\n  crypto_int64 f5g6_19 = f5   * (crypto_int64) g6_19;\n  crypto_int64 f5g7_38 = f5_2 * (crypto_int64) g7_19;\n  crypto_int64 f5g8_19 = f5   * (crypto_int64) g8_19;\n  crypto_int64 f5g9_38 = f5_2 * (crypto_int64) g9_19;\n  crypto_int64 f6g0    = f6   * (crypto_int64) g0;\n  crypto_int64 f6g1    = f6   * (crypto_int64) g1;\n  crypto_int64 f6g2    = f6   * (crypto_int64) g2;\n  crypto_int64 f6g3    = f6   * (crypto_int64) g3;\n  crypto_int64 f6g4_19 = f6   * (crypto_int64) g4_19;\n  crypto_int64 f6g5_19 = f6   * (crypto_int64) g5_19;\n  crypto_int64 f6g6_19 = f6   * (crypto_int64) g6_19;\n  crypto_int64 f6g7_19 = f6   * (crypto_int64) g7_19;\n  crypto_int64 f6g8_19 = f6   * (crypto_int64) g8_19;\n  crypto_int64 f6g9_19 = f6   * (crypto_int64) g9_19;\n  crypto_int64 f7g0    = f7   * (crypto_int64) g0;\n  crypto_int64 f7g1_2  = f7_2 * (crypto_int64) g1;\n  crypto_int64 f7g2    = f7   * (crypto_int64) g2;\n  crypto_int64 f7g3_38 = f7_2 * (crypto_int64) g3_19;\n  crypto_int64 f7g4_19 = f7   * (crypto_int64) g4_19;\n  crypto_int64 f7g5_38 = f7_2 * (crypto_int64) g5_19;\n  crypto_int64 f7g6_19 = f7   * (crypto_int64) g6_19;\n  crypto_int64 f7g7_38 = f7_2 * (crypto_int64) g7_19;\n  crypto_int64 f7g8_19 = f7   * (crypto_int64) g8_19;\n  crypto_int64 f7g9_38 = f7_2 * (crypto_int64) g9_19;\n  crypto_int64 f8g0    = f8   * (crypto_int64) g0;\n  crypto_int64 f8g1    = f8   * (crypto_int64) g1;\n  crypto_int64 f8g2_19 = f8   * (crypto_int64) g2_19;\n  crypto_int64 f8g3_19 = f8   * (crypto_int64) g3_19;\n  crypto_int64 f8g4_19 = f8   * (crypto_int64) g4_19;\n  crypto_int64 f8g5_19 = f8   * (crypto_int64) g5_19;\n  crypto_int64 f8g6_19 = f8   * (crypto_int64) g6_19;\n  crypto_int64 f8g7_19 = f8   * (crypto_int64) g7_19;\n  crypto_int64 f8g8_19 = f8   * (crypto_int64) g8_19;\n  crypto_int64 f8g9_19 = f8   * (crypto_int64) g9_19;\n  crypto_int64 f9g0    = f9   * (crypto_int64) g0;\n  crypto_int64 f9g1_38 = f9_2 * (crypto_int64) g1_19;\n  crypto_int64 f9g2_19 = f9   * (crypto_int64) g2_19;\n  crypto_int64 f9g3_38 = f9_2 * (crypto_int64) g3_19;\n  crypto_int64 f9g4_19 = f9   * (crypto_int64) g4_19;\n  crypto_int64 f9g5_38 = f9_2 * (crypto_int64) g5_19;\n  crypto_int64 f9g6_19 = f9   * (crypto_int64) g6_19;\n  crypto_int64 f9g7_38 = f9_2 * (crypto_int64) g7_19;\n  crypto_int64 f9g8_19 = f9   * (crypto_int64) g8_19;\n  crypto_int64 f9g9_38 = f9_2 * (crypto_int64) g9_19;\n  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;\n  crypto_int64 h1 = f0g1+f1g0   +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19;\n  crypto_int64 h2 = f0g2+f1g1_2 +f2g0   +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38;\n  crypto_int64 h3 = f0g3+f1g2   +f2g1   +f3g0   +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19;\n  crypto_int64 h4 = f0g4+f1g3_2 +f2g2   +f3g1_2 +f4g0   +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38;\n  crypto_int64 h5 = f0g5+f1g4   +f2g3   +f3g2   +f4g1   +f5g0   +f6g9_19+f7g8_19+f8g7_19+f9g6_19;\n  crypto_int64 h6 = f0g6+f1g5_2 +f2g4   +f3g3_2 +f4g2   +f5g1_2 +f6g0   +f7g9_38+f8g8_19+f9g7_38;\n  crypto_int64 h7 = f0g7+f1g6   +f2g5   +f3g4   +f4g3   +f5g2   +f6g1   +f7g0   +f8g9_19+f9g8_19;\n  crypto_int64 h8 = f0g8+f1g7_2 +f2g6   +f3g5_2 +f4g4   +f5g3_2 +f6g2   +f7g1_2 +f8g0   +f9g9_38;\n  crypto_int64 h9 = f0g9+f1g8   +f2g7   +f3g6   +f4g5   +f5g4   +f6g3   +f7g2   +f8g1   +f9g0   ;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  /*\n  |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38))\n    i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8\n  |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19))\n    i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9\n  */\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  /* |h0| <= 2^25 */\n  /* |h4| <= 2^25 */\n  /* |h1| <= 1.51*2^58 */\n  /* |h5| <= 1.51*2^58 */\n\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n  /* |h1| <= 2^24; from now on fits into int32 */\n  /* |h5| <= 2^24; from now on fits into int32 */\n  /* |h2| <= 1.21*2^59 */\n  /* |h6| <= 1.21*2^59 */\n\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n  /* |h2| <= 2^25; from now on fits into int32 unchanged */\n  /* |h6| <= 2^25; from now on fits into int32 unchanged */\n  /* |h3| <= 1.51*2^58 */\n  /* |h7| <= 1.51*2^58 */\n\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n  /* |h3| <= 2^24; from now on fits into int32 unchanged */\n  /* |h7| <= 2^24; from now on fits into int32 unchanged */\n  /* |h4| <= 1.52*2^33 */\n  /* |h8| <= 1.52*2^33 */\n\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n  /* |h4| <= 2^25; from now on fits into int32 unchanged */\n  /* |h8| <= 2^25; from now on fits into int32 unchanged */\n  /* |h5| <= 1.01*2^24 */\n  /* |h9| <= 1.51*2^58 */\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n  /* |h9| <= 2^24; from now on fits into int32 unchanged */\n  /* |h0| <= 1.8*2^37 */\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  /* |h0| <= 2^25; from now on fits into int32 unchanged */\n  /* |h1| <= 1.01*2^24 */\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nh = f * 121666\nCan overlap h with f.\n\nPreconditions:\n   |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n*/\n\nvoid fe_mul121666(fe h,fe f)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int64 h0 = f0 * (crypto_int64) 121666;\n  crypto_int64 h1 = f1 * (crypto_int64) 121666;\n  crypto_int64 h2 = f2 * (crypto_int64) 121666;\n  crypto_int64 h3 = f3 * (crypto_int64) 121666;\n  crypto_int64 h4 = f4 * (crypto_int64) 121666;\n  crypto_int64 h5 = f5 * (crypto_int64) 121666;\n  crypto_int64 h6 = f6 * (crypto_int64) 121666;\n  crypto_int64 h7 = f7 * (crypto_int64) 121666;\n  crypto_int64 h8 = f8 * (crypto_int64) 121666;\n  crypto_int64 h9 = f9 * (crypto_int64) 121666;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nh = f * f\nCan overlap h with f.\n\nPreconditions:\n   |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n*/\n\n/*\nSee fe_mul.c for discussion of implementation strategy.\n*/\n\nvoid fe_sq(fe h,fe f)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 f0_2 = 2 * f0;\n  crypto_int32 f1_2 = 2 * f1;\n  crypto_int32 f2_2 = 2 * f2;\n  crypto_int32 f3_2 = 2 * f3;\n  crypto_int32 f4_2 = 2 * f4;\n  crypto_int32 f5_2 = 2 * f5;\n  crypto_int32 f6_2 = 2 * f6;\n  crypto_int32 f7_2 = 2 * f7;\n  crypto_int32 f5_38 = 38 * f5; /* 1.31*2^30 */\n  crypto_int32 f6_19 = 19 * f6; /* 1.31*2^30 */\n  crypto_int32 f7_38 = 38 * f7; /* 1.31*2^30 */\n  crypto_int32 f8_19 = 19 * f8; /* 1.31*2^30 */\n  crypto_int32 f9_38 = 38 * f9; /* 1.31*2^30 */\n  crypto_int64 f0f0    = f0   * (crypto_int64) f0;\n  crypto_int64 f0f1_2  = f0_2 * (crypto_int64) f1;\n  crypto_int64 f0f2_2  = f0_2 * (crypto_int64) f2;\n  crypto_int64 f0f3_2  = f0_2 * (crypto_int64) f3;\n  crypto_int64 f0f4_2  = f0_2 * (crypto_int64) f4;\n  crypto_int64 f0f5_2  = f0_2 * (crypto_int64) f5;\n  crypto_int64 f0f6_2  = f0_2 * (crypto_int64) f6;\n  crypto_int64 f0f7_2  = f0_2 * (crypto_int64) f7;\n  crypto_int64 f0f8_2  = f0_2 * (crypto_int64) f8;\n  crypto_int64 f0f9_2  = f0_2 * (crypto_int64) f9;\n  crypto_int64 f1f1_2  = f1_2 * (crypto_int64) f1;\n  crypto_int64 f1f2_2  = f1_2 * (crypto_int64) f2;\n  crypto_int64 f1f3_4  = f1_2 * (crypto_int64) f3_2;\n  crypto_int64 f1f4_2  = f1_2 * (crypto_int64) f4;\n  crypto_int64 f1f5_4  = f1_2 * (crypto_int64) f5_2;\n  crypto_int64 f1f6_2  = f1_2 * (crypto_int64) f6;\n  crypto_int64 f1f7_4  = f1_2 * (crypto_int64) f7_2;\n  crypto_int64 f1f8_2  = f1_2 * (crypto_int64) f8;\n  crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38;\n  crypto_int64 f2f2    = f2   * (crypto_int64) f2;\n  crypto_int64 f2f3_2  = f2_2 * (crypto_int64) f3;\n  crypto_int64 f2f4_2  = f2_2 * (crypto_int64) f4;\n  crypto_int64 f2f5_2  = f2_2 * (crypto_int64) f5;\n  crypto_int64 f2f6_2  = f2_2 * (crypto_int64) f6;\n  crypto_int64 f2f7_2  = f2_2 * (crypto_int64) f7;\n  crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;\n  crypto_int64 f2f9_38 = f2   * (crypto_int64) f9_38;\n  crypto_int64 f3f3_2  = f3_2 * (crypto_int64) f3;\n  crypto_int64 f3f4_2  = f3_2 * (crypto_int64) f4;\n  crypto_int64 f3f5_4  = f3_2 * (crypto_int64) f5_2;\n  crypto_int64 f3f6_2  = f3_2 * (crypto_int64) f6;\n  crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38;\n  crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19;\n  crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38;\n  crypto_int64 f4f4    = f4   * (crypto_int64) f4;\n  crypto_int64 f4f5_2  = f4_2 * (crypto_int64) f5;\n  crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19;\n  crypto_int64 f4f7_38 = f4   * (crypto_int64) f7_38;\n  crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19;\n  crypto_int64 f4f9_38 = f4   * (crypto_int64) f9_38;\n  crypto_int64 f5f5_38 = f5   * (crypto_int64) f5_38;\n  crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19;\n  crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38;\n  crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19;\n  crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38;\n  crypto_int64 f6f6_19 = f6   * (crypto_int64) f6_19;\n  crypto_int64 f6f7_38 = f6   * (crypto_int64) f7_38;\n  crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19;\n  crypto_int64 f6f9_38 = f6   * (crypto_int64) f9_38;\n  crypto_int64 f7f7_38 = f7   * (crypto_int64) f7_38;\n  crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19;\n  crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38;\n  crypto_int64 f8f8_19 = f8   * (crypto_int64) f8_19;\n  crypto_int64 f8f9_38 = f8   * (crypto_int64) f9_38;\n  crypto_int64 f9f9_38 = f9   * (crypto_int64) f9_38;\n  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;\n  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;\n  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;\n  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;\n  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;\n  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;\n  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;\n  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;\n  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;\n  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nh = f - g\nCan overlap h with f or g.\n\nPreconditions:\n   |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n   |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n*/\n\nvoid fe_sub(fe h,fe f,fe g)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 h0 = f0 - g0;\n  crypto_int32 h1 = f1 - g1;\n  crypto_int32 h2 = f2 - g2;\n  crypto_int32 h3 = f3 - g3;\n  crypto_int32 h4 = f4 - g4;\n  crypto_int32 h5 = f5 - g5;\n  crypto_int32 h6 = f6 - g6;\n  crypto_int32 h7 = f7 - g7;\n  crypto_int32 h8 = f8 - g8;\n  crypto_int32 h9 = f9 - g9;\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nPreconditions:\n  |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n\nWrite p=2^255-19; q=floor(h/p).\nBasic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).\n\nProof:\n  Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.\n  Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4.\n\n  Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).\n  Then 0<y<1.\n\n  Write r=h-pq.\n  Have 0<=r<=p-1=2^255-20.\n  Thus 0<=r+19(2^-255)r<r+19(2^-255)2^255<=2^255-1.\n\n  Write x=r+19(2^-255)r+y.\n  Then 0<x<2^255 so floor(2^(-255)x) = 0 so floor(q+2^(-255)x) = q.\n\n  Have q+2^(-255)x = 2^(-255)(h + 19 2^(-25) h9 + 2^(-1))\n  so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q.\n*/\n\nvoid fe_tobytes(unsigned char *s,fe h)\n{\n  crypto_int32 h0 = h[0];\n  crypto_int32 h1 = h[1];\n  crypto_int32 h2 = h[2];\n  crypto_int32 h3 = h[3];\n  crypto_int32 h4 = h[4];\n  crypto_int32 h5 = h[5];\n  crypto_int32 h6 = h[6];\n  crypto_int32 h7 = h[7];\n  crypto_int32 h8 = h[8];\n  crypto_int32 h9 = h[9];\n  crypto_int32 q;\n  crypto_int32 carry0;\n  crypto_int32 carry1;\n  crypto_int32 carry2;\n  crypto_int32 carry3;\n  crypto_int32 carry4;\n  crypto_int32 carry5;\n  crypto_int32 carry6;\n  crypto_int32 carry7;\n  crypto_int32 carry8;\n  crypto_int32 carry9;\n\n  q = (19 * h9 + (((crypto_int32) 1) << 24)) >> 25;\n  q = (h0 + q) >> 26;\n  q = (h1 + q) >> 25;\n  q = (h2 + q) >> 26;\n  q = (h3 + q) >> 25;\n  q = (h4 + q) >> 26;\n  q = (h5 + q) >> 25;\n  q = (h6 + q) >> 26;\n  q = (h7 + q) >> 25;\n  q = (h8 + q) >> 26;\n  q = (h9 + q) >> 25;\n\n  /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */\n  h0 += 19 * q;\n  /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */\n\n  carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25;\n  carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26;\n  carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25;\n  carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26;\n  carry9 = h9 >> 25;               h9 -= carry9 << 25;\n                  /* h10 = carry9 */\n\n  /*\n  Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.\n  Have h0+...+2^230 h9 between 0 and 2^255-1;\n  evidently 2^255 h10-2^255 q = 0.\n  Goal: Output h0+...+2^230 h9.\n  */\n\n  s[0] = h0 >> 0;\n  s[1] = h0 >> 8;\n  s[2] = h0 >> 16;\n  s[3] = (h0 >> 24) | (h1 << 2);\n  s[4] = h1 >> 6;\n  s[5] = h1 >> 14;\n  s[6] = (h1 >> 22) | (h2 << 3);\n  s[7] = h2 >> 5;\n  s[8] = h2 >> 13;\n  s[9] = (h2 >> 21) | (h3 << 5);\n  s[10] = h3 >> 3;\n  s[11] = h3 >> 11;\n  s[12] = (h3 >> 19) | (h4 << 6);\n  s[13] = h4 >> 2;\n  s[14] = h4 >> 10;\n  s[15] = h4 >> 18;\n  s[16] = h5 >> 0;\n  s[17] = h5 >> 8;\n  s[18] = h5 >> 16;\n  s[19] = (h5 >> 24) | (h6 << 1);\n  s[20] = h6 >> 7;\n  s[21] = h6 >> 15;\n  s[22] = (h6 >> 23) | (h7 << 3);\n  s[23] = h7 >> 5;\n  s[24] = h7 >> 13;\n  s[25] = (h7 >> 21) | (h8 << 4);\n  s[26] = h8 >> 4;\n  s[27] = h8 >> 12;\n  s[28] = (h8 >> 20) | (h9 << 6);\n  s[29] = h9 >> 2;\n  s[30] = h9 >> 10;\n  s[31] = h9 >> 18;\n}\n\nvoid fe_invert(fe out,fe z)\n{\n  fe t0;\n  fe t1;\n  fe t2;\n  fe t3;\n  int i;\n\n\n/* qhasm: fe z1 */\n\n/* qhasm: fe z2 */\n\n/* qhasm: fe z8 */\n\n/* qhasm: fe z9 */\n\n/* qhasm: fe z11 */\n\n/* qhasm: fe z22 */\n\n/* qhasm: fe z_5_0 */\n\n/* qhasm: fe z_10_5 */\n\n/* qhasm: fe z_10_0 */\n\n/* qhasm: fe z_20_10 */\n\n/* qhasm: fe z_20_0 */\n\n/* qhasm: fe z_40_20 */\n\n/* qhasm: fe z_40_0 */\n\n/* qhasm: fe z_50_10 */\n\n/* qhasm: fe z_50_0 */\n\n/* qhasm: fe z_100_50 */\n\n/* qhasm: fe z_100_0 */\n\n/* qhasm: fe z_200_100 */\n\n/* qhasm: fe z_200_0 */\n\n/* qhasm: fe z_250_50 */\n\n/* qhasm: fe z_250_0 */\n\n/* qhasm: fe z_255_5 */\n\n/* qhasm: fe z_255_21 */\n\n/* qhasm: enter pow225521 */\n\n/* qhasm: z2 = z1^2^1 */\n/* asm 1: fe_sq(>z2=fe#1,<z1=fe#11); for (i = 1;i < 1;++i) fe_sq(>z2=fe#1,>z2=fe#1); */\n/* asm 2: fe_sq(>z2=t0,<z1=z); for (i = 1;i < 1;++i) fe_sq(>z2=t0,>z2=t0); */\nfe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0);\n\n/* qhasm: z8 = z2^2^2 */\n/* asm 1: fe_sq(>z8=fe#2,<z2=fe#1); for (i = 1;i < 2;++i) fe_sq(>z8=fe#2,>z8=fe#2); */\n/* asm 2: fe_sq(>z8=t1,<z2=t0); for (i = 1;i < 2;++i) fe_sq(>z8=t1,>z8=t1); */\nfe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1);\n\n/* qhasm: z9 = z1*z8 */\n/* asm 1: fe_mul(>z9=fe#2,<z1=fe#11,<z8=fe#2); */\n/* asm 2: fe_mul(>z9=t1,<z1=z,<z8=t1); */\nfe_mul(t1,z,t1);\n\n/* qhasm: z11 = z2*z9 */\n/* asm 1: fe_mul(>z11=fe#1,<z2=fe#1,<z9=fe#2); */\n/* asm 2: fe_mul(>z11=t0,<z2=t0,<z9=t1); */\nfe_mul(t0,t0,t1);\n\n/* qhasm: z22 = z11^2^1 */\n/* asm 1: fe_sq(>z22=fe#3,<z11=fe#1); for (i = 1;i < 1;++i) fe_sq(>z22=fe#3,>z22=fe#3); */\n/* asm 2: fe_sq(>z22=t2,<z11=t0); for (i = 1;i < 1;++i) fe_sq(>z22=t2,>z22=t2); */\nfe_sq(t2,t0); for (i = 1;i < 1;++i) fe_sq(t2,t2);\n\n/* qhasm: z_5_0 = z9*z22 */\n/* asm 1: fe_mul(>z_5_0=fe#2,<z9=fe#2,<z22=fe#3); */\n/* asm 2: fe_mul(>z_5_0=t1,<z9=t1,<z22=t2); */\nfe_mul(t1,t1,t2);\n\n/* qhasm: z_10_5 = z_5_0^2^5 */\n/* asm 1: fe_sq(>z_10_5=fe#3,<z_5_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_10_5=fe#3,>z_10_5=fe#3); */\n/* asm 2: fe_sq(>z_10_5=t2,<z_5_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_10_5=t2,>z_10_5=t2); */\nfe_sq(t2,t1); for (i = 1;i < 5;++i) fe_sq(t2,t2);\n\n/* qhasm: z_10_0 = z_10_5*z_5_0 */\n/* asm 1: fe_mul(>z_10_0=fe#2,<z_10_5=fe#3,<z_5_0=fe#2); */\n/* asm 2: fe_mul(>z_10_0=t1,<z_10_5=t2,<z_5_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_20_10 = z_10_0^2^10 */\n/* asm 1: fe_sq(>z_20_10=fe#3,<z_10_0=fe#2); for (i = 1;i < 10;++i) fe_sq(>z_20_10=fe#3,>z_20_10=fe#3); */\n/* asm 2: fe_sq(>z_20_10=t2,<z_10_0=t1); for (i = 1;i < 10;++i) fe_sq(>z_20_10=t2,>z_20_10=t2); */\nfe_sq(t2,t1); for (i = 1;i < 10;++i) fe_sq(t2,t2);\n\n/* qhasm: z_20_0 = z_20_10*z_10_0 */\n/* asm 1: fe_mul(>z_20_0=fe#3,<z_20_10=fe#3,<z_10_0=fe#2); */\n/* asm 2: fe_mul(>z_20_0=t2,<z_20_10=t2,<z_10_0=t1); */\nfe_mul(t2,t2,t1);\n\n/* qhasm: z_40_20 = z_20_0^2^20 */\n/* asm 1: fe_sq(>z_40_20=fe#4,<z_20_0=fe#3); for (i = 1;i < 20;++i) fe_sq(>z_40_20=fe#4,>z_40_20=fe#4); */\n/* asm 2: fe_sq(>z_40_20=t3,<z_20_0=t2); for (i = 1;i < 20;++i) fe_sq(>z_40_20=t3,>z_40_20=t3); */\nfe_sq(t3,t2); for (i = 1;i < 20;++i) fe_sq(t3,t3);\n\n/* qhasm: z_40_0 = z_40_20*z_20_0 */\n/* asm 1: fe_mul(>z_40_0=fe#3,<z_40_20=fe#4,<z_20_0=fe#3); */\n/* asm 2: fe_mul(>z_40_0=t2,<z_40_20=t3,<z_20_0=t2); */\nfe_mul(t2,t3,t2);\n\n/* qhasm: z_50_10 = z_40_0^2^10 */\n/* asm 1: fe_sq(>z_50_10=fe#3,<z_40_0=fe#3); for (i = 1;i < 10;++i) fe_sq(>z_50_10=fe#3,>z_50_10=fe#3); */\n/* asm 2: fe_sq(>z_50_10=t2,<z_40_0=t2); for (i = 1;i < 10;++i) fe_sq(>z_50_10=t2,>z_50_10=t2); */\nfe_sq(t2,t2); for (i = 1;i < 10;++i) fe_sq(t2,t2);\n\n/* qhasm: z_50_0 = z_50_10*z_10_0 */\n/* asm 1: fe_mul(>z_50_0=fe#2,<z_50_10=fe#3,<z_10_0=fe#2); */\n/* asm 2: fe_mul(>z_50_0=t1,<z_50_10=t2,<z_10_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_100_50 = z_50_0^2^50 */\n/* asm 1: fe_sq(>z_100_50=fe#3,<z_50_0=fe#2); for (i = 1;i < 50;++i) fe_sq(>z_100_50=fe#3,>z_100_50=fe#3); */\n/* asm 2: fe_sq(>z_100_50=t2,<z_50_0=t1); for (i = 1;i < 50;++i) fe_sq(>z_100_50=t2,>z_100_50=t2); */\nfe_sq(t2,t1); for (i = 1;i < 50;++i) fe_sq(t2,t2);\n\n/* qhasm: z_100_0 = z_100_50*z_50_0 */\n/* asm 1: fe_mul(>z_100_0=fe#3,<z_100_50=fe#3,<z_50_0=fe#2); */\n/* asm 2: fe_mul(>z_100_0=t2,<z_100_50=t2,<z_50_0=t1); */\nfe_mul(t2,t2,t1);\n\n/* qhasm: z_200_100 = z_100_0^2^100 */\n/* asm 1: fe_sq(>z_200_100=fe#4,<z_100_0=fe#3); for (i = 1;i < 100;++i) fe_sq(>z_200_100=fe#4,>z_200_100=fe#4); */\n/* asm 2: fe_sq(>z_200_100=t3,<z_100_0=t2); for (i = 1;i < 100;++i) fe_sq(>z_200_100=t3,>z_200_100=t3); */\nfe_sq(t3,t2); for (i = 1;i < 100;++i) fe_sq(t3,t3);\n\n/* qhasm: z_200_0 = z_200_100*z_100_0 */\n/* asm 1: fe_mul(>z_200_0=fe#3,<z_200_100=fe#4,<z_100_0=fe#3); */\n/* asm 2: fe_mul(>z_200_0=t2,<z_200_100=t3,<z_100_0=t2); */\nfe_mul(t2,t3,t2);\n\n/* qhasm: z_250_50 = z_200_0^2^50 */\n/* asm 1: fe_sq(>z_250_50=fe#3,<z_200_0=fe#3); for (i = 1;i < 50;++i) fe_sq(>z_250_50=fe#3,>z_250_50=fe#3); */\n/* asm 2: fe_sq(>z_250_50=t2,<z_200_0=t2); for (i = 1;i < 50;++i) fe_sq(>z_250_50=t2,>z_250_50=t2); */\nfe_sq(t2,t2); for (i = 1;i < 50;++i) fe_sq(t2,t2);\n\n/* qhasm: z_250_0 = z_250_50*z_50_0 */\n/* asm 1: fe_mul(>z_250_0=fe#2,<z_250_50=fe#3,<z_50_0=fe#2); */\n/* asm 2: fe_mul(>z_250_0=t1,<z_250_50=t2,<z_50_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_255_5 = z_250_0^2^5 */\n/* asm 1: fe_sq(>z_255_5=fe#2,<z_250_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_255_5=fe#2,>z_255_5=fe#2); */\n/* asm 2: fe_sq(>z_255_5=t1,<z_250_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_255_5=t1,>z_255_5=t1); */\nfe_sq(t1,t1); for (i = 1;i < 5;++i) fe_sq(t1,t1);\n\n/* qhasm: z_255_21 = z_255_5*z11 */\n/* asm 1: fe_mul(>z_255_21=fe#12,<z_255_5=fe#2,<z11=fe#1); */\n/* asm 2: fe_mul(>z_255_21=out,<z_255_5=t1,<z11=t0); */\nfe_mul(out,t1,t0);\n\n/* qhasm: return */\n\n  return;\n}\n\n\nint crypto_scalarmult_ref10(unsigned char *q,\n  const unsigned char *n,\n  const unsigned char *p)\n{\n  unsigned char e[32];\n  unsigned int i;\n  fe x1;\n  fe x2;\n  fe z2;\n  fe x3;\n  fe z3;\n  fe tmp0;\n  fe tmp1;\n  int pos;\n  unsigned int swap;\n  unsigned int b;\n\n  for (i = 0;i < 32;++i) e[i] = n[i];\n  e[0] &= 248;\n  e[31] &= 127;\n  e[31] |= 64;\n  fe_frombytes(x1,p);\n  fe_1(x2);\n  fe_0(z2);\n  fe_copy(x3,x1);\n  fe_1(z3);\n\n  swap = 0;\n  for (pos = 254;pos >= 0;--pos) {\n    b = e[pos / 8] >> (pos & 7);\n    b &= 1;\n    swap ^= b;\n    fe_cswap(x2,x3,swap);\n    fe_cswap(z2,z3,swap);\n    swap = b;\n/* qhasm: fe X2 */\n\n/* qhasm: fe Z2 */\n\n/* qhasm: fe X3 */\n\n/* qhasm: fe Z3 */\n\n/* qhasm: fe X4 */\n\n/* qhasm: fe Z4 */\n\n/* qhasm: fe X5 */\n\n/* qhasm: fe Z5 */\n\n/* qhasm: fe A */\n\n/* qhasm: fe B */\n\n/* qhasm: fe C */\n\n/* qhasm: fe D */\n\n/* qhasm: fe E */\n\n/* qhasm: fe AA */\n\n/* qhasm: fe BB */\n\n/* qhasm: fe DA */\n\n/* qhasm: fe CB */\n\n/* qhasm: fe t0 */\n\n/* qhasm: fe t1 */\n\n/* qhasm: fe t2 */\n\n/* qhasm: fe t3 */\n\n/* qhasm: fe t4 */\n\n/* qhasm: enter ladder */\n\n/* qhasm: D = X3-Z3 */\n/* asm 1: fe_sub(>D=fe#5,<X3=fe#3,<Z3=fe#4); */\n/* asm 2: fe_sub(>D=tmp0,<X3=x3,<Z3=z3); */\nfe_sub(tmp0,x3,z3);\n\n/* qhasm: B = X2-Z2 */\n/* asm 1: fe_sub(>B=fe#6,<X2=fe#1,<Z2=fe#2); */\n/* asm 2: fe_sub(>B=tmp1,<X2=x2,<Z2=z2); */\nfe_sub(tmp1,x2,z2);\n\n/* qhasm: A = X2+Z2 */\n/* asm 1: fe_add(>A=fe#1,<X2=fe#1,<Z2=fe#2); */\n/* asm 2: fe_add(>A=x2,<X2=x2,<Z2=z2); */\nfe_add(x2,x2,z2);\n\n/* qhasm: C = X3+Z3 */\n/* asm 1: fe_add(>C=fe#2,<X3=fe#3,<Z3=fe#4); */\n/* asm 2: fe_add(>C=z2,<X3=x3,<Z3=z3); */\nfe_add(z2,x3,z3);\n\n/* qhasm: DA = D*A */\n/* asm 1: fe_mul(>DA=fe#4,<D=fe#5,<A=fe#1); */\n/* asm 2: fe_mul(>DA=z3,<D=tmp0,<A=x2); */\nfe_mul(z3,tmp0,x2);\n\n/* qhasm: CB = C*B */\n/* asm 1: fe_mul(>CB=fe#2,<C=fe#2,<B=fe#6); */\n/* asm 2: fe_mul(>CB=z2,<C=z2,<B=tmp1); */\nfe_mul(z2,z2,tmp1);\n\n/* qhasm: BB = B^2 */\n/* asm 1: fe_sq(>BB=fe#5,<B=fe#6); */\n/* asm 2: fe_sq(>BB=tmp0,<B=tmp1); */\nfe_sq(tmp0,tmp1);\n\n/* qhasm: AA = A^2 */\n/* asm 1: fe_sq(>AA=fe#6,<A=fe#1); */\n/* asm 2: fe_sq(>AA=tmp1,<A=x2); */\nfe_sq(tmp1,x2);\n\n/* qhasm: t0 = DA+CB */\n/* asm 1: fe_add(>t0=fe#3,<DA=fe#4,<CB=fe#2); */\n/* asm 2: fe_add(>t0=x3,<DA=z3,<CB=z2); */\nfe_add(x3,z3,z2);\n\n/* qhasm: assign x3 to t0 */\n\n/* qhasm: t1 = DA-CB */\n/* asm 1: fe_sub(>t1=fe#2,<DA=fe#4,<CB=fe#2); */\n/* asm 2: fe_sub(>t1=z2,<DA=z3,<CB=z2); */\nfe_sub(z2,z3,z2);\n\n/* qhasm: X4 = AA*BB */\n/* asm 1: fe_mul(>X4=fe#1,<AA=fe#6,<BB=fe#5); */\n/* asm 2: fe_mul(>X4=x2,<AA=tmp1,<BB=tmp0); */\nfe_mul(x2,tmp1,tmp0);\n\n/* qhasm: E = AA-BB */\n/* asm 1: fe_sub(>E=fe#6,<AA=fe#6,<BB=fe#5); */\n/* asm 2: fe_sub(>E=tmp1,<AA=tmp1,<BB=tmp0); */\nfe_sub(tmp1,tmp1,tmp0);\n\n/* qhasm: t2 = t1^2 */\n/* asm 1: fe_sq(>t2=fe#2,<t1=fe#2); */\n/* asm 2: fe_sq(>t2=z2,<t1=z2); */\nfe_sq(z2,z2);\n\n/* qhasm: t3 = a24*E */\n/* asm 1: fe_mul121666(>t3=fe#4,<E=fe#6); */\n/* asm 2: fe_mul121666(>t3=z3,<E=tmp1); */\nfe_mul121666(z3,tmp1);\n\n/* qhasm: X5 = t0^2 */\n/* asm 1: fe_sq(>X5=fe#3,<t0=fe#3); */\n/* asm 2: fe_sq(>X5=x3,<t0=x3); */\nfe_sq(x3,x3);\n\n/* qhasm: t4 = BB+t3 */\n/* asm 1: fe_add(>t4=fe#5,<BB=fe#5,<t3=fe#4); */\n/* asm 2: fe_add(>t4=tmp0,<BB=tmp0,<t3=z3); */\nfe_add(tmp0,tmp0,z3);\n\n/* qhasm: Z5 = X1*t2 */\n/* asm 1: fe_mul(>Z5=fe#4,x1,<t2=fe#2); */\n/* asm 2: fe_mul(>Z5=z3,x1,<t2=z2); */\nfe_mul(z3,x1,z2);\n\n/* qhasm: Z4 = E*t4 */\n/* asm 1: fe_mul(>Z4=fe#2,<E=fe#6,<t4=fe#5); */\n/* asm 2: fe_mul(>Z4=z2,<E=tmp1,<t4=tmp0); */\nfe_mul(z2,tmp1,tmp0);\n\n/* qhasm: return */\n  }\n  fe_cswap(x2,x3,swap);\n  fe_cswap(z2,z3,swap);\n\n  fe_invert(z2,z2);\n  fe_mul(x2,x2,z2);\n  fe_tobytes(q,x2);\n  return 0;\n}\n\nstatic const unsigned char basepoint[32] = {9};\n\nint crypto_scalarmult_base_ref10(unsigned char *q,const unsigned char *n)\n{\n  return crypto_scalarmult_ref10(q,n,basepoint);\n}\n\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/curve25519-ref10.h",
    "content": "#ifndef CURVE25519_REF10_H\n#define CURVE25519_REF10_H\n\nint crypto_scalarmult_base_ref10(unsigned char *q,const unsigned char *n);\nint crypto_scalarmult_ref10(unsigned char *q, const unsigned char *n, const unsigned char *p);\n\n#endif /* CURVE25519_REF10_H */\n\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/ed25519-donna-sse2.c",
    "content": "#define ED25519_SUFFIX _sse2\n#define ED25519_SSE2\n#include \"../ed25519.c\"\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/ed25519-donna.c",
    "content": "#include \"../ed25519.c\"\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/ed25519-donna.h",
    "content": "#ifndef ED25519_H\n#define ED25519_H\n\n#include <stdlib.h>\n\ntypedef unsigned char ed25519_signature[64];\ntypedef unsigned char ed25519_public_key[32];\ntypedef unsigned char ed25519_secret_key[32];\n\ntypedef unsigned char curved25519_key[32];\n\nvoid ed25519_publickey(const ed25519_secret_key sk, ed25519_public_key pk);\nint ed25519_sign_open(const unsigned char *m, size_t mlen, const ed25519_public_key pk, const ed25519_signature RS);\nvoid ed25519_sign(const unsigned char *m, size_t mlen, const ed25519_secret_key sk, const ed25519_public_key pk, ed25519_signature RS);\n\nint ed25519_sign_open_batch(const unsigned char **m, size_t *mlen, const unsigned char **pk, const unsigned char **RS, size_t num, int *valid);\n\nvoid ed25519_randombytes_unsafe(void *out, size_t count);\n\nvoid curved25519_scalarmult_basepoint(curved25519_key pk, const curved25519_key e);\n\n#if defined(ED25519_SSE2)\nvoid ed25519_publickey_sse2(const ed25519_secret_key sk, ed25519_public_key pk);\nint ed25519_sign_open_sse2(const unsigned char *m, size_t mlen, const ed25519_public_key pk, const ed25519_signature RS);\nvoid ed25519_sign_sse2(const unsigned char *m, size_t mlen, const ed25519_secret_key sk, const ed25519_public_key pk, ed25519_signature RS);\n\nint ed25519_sign_open_batch_sse2(const unsigned char **m, size_t *mlen, const unsigned char **pk, const unsigned char **RS, size_t num, int *valid);\n\nvoid ed25519_randombytes_unsafe_sse2(void *out, size_t count);\n\nvoid curved25519_scalarmult_basepoint_sse2(curved25519_key pk, const curved25519_key e);\n#endif\n\n#endif // ED25519_H\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/ed25519-ref10.c",
    "content": "#include <stdint.h>\n#include <stddef.h>\n#include <string.h>\n\nstatic int crypto_verify_32(const unsigned char *x,const unsigned char *y)\n{\n  unsigned int differentbits = 0;\n#define F(i) differentbits |= x[i] ^ y[i];\n  F(0)\n  F(1)\n  F(2)\n  F(3)\n  F(4)\n  F(5)\n  F(6)\n  F(7)\n  F(8)\n  F(9)\n  F(10)\n  F(11)\n  F(12)\n  F(13)\n  F(14)\n  F(15)\n  F(16)\n  F(17)\n  F(18)\n  F(19)\n  F(20)\n  F(21)\n  F(22)\n  F(23)\n  F(24)\n  F(25)\n  F(26)\n  F(27)\n  F(28)\n  F(29)\n  F(30)\n  F(31)\n  return (1 & ((differentbits - 1) >> 8)) - 1;\n}\n\n#if defined(ED25519_REFHASH)\n\n/* reference/slow SHA-512. really, do not use this */\n\n#define HASH_BLOCK_SIZE 128\n#define HASH_DIGEST_SIZE 64\n\ntypedef struct sha512_state_t {\n\tuint64_t H[8];\n\tuint64_t T[2];\n\tuint32_t leftover;\n\tuint8_t buffer[HASH_BLOCK_SIZE];\n} sha512_state;\n\ntypedef sha512_state ed25519_hash_context;\n\nstatic const uint64_t sha512_constants[80] = {\n\t0x428a2f98d728ae22ull, 0x7137449123ef65cdull, 0xb5c0fbcfec4d3b2full, 0xe9b5dba58189dbbcull,\n\t0x3956c25bf348b538ull, 0x59f111f1b605d019ull, 0x923f82a4af194f9bull, 0xab1c5ed5da6d8118ull,\n\t0xd807aa98a3030242ull, 0x12835b0145706fbeull, 0x243185be4ee4b28cull, 0x550c7dc3d5ffb4e2ull,\n\t0x72be5d74f27b896full, 0x80deb1fe3b1696b1ull, 0x9bdc06a725c71235ull, 0xc19bf174cf692694ull,\n\t0xe49b69c19ef14ad2ull, 0xefbe4786384f25e3ull, 0x0fc19dc68b8cd5b5ull, 0x240ca1cc77ac9c65ull,\n\t0x2de92c6f592b0275ull, 0x4a7484aa6ea6e483ull, 0x5cb0a9dcbd41fbd4ull, 0x76f988da831153b5ull,\n\t0x983e5152ee66dfabull, 0xa831c66d2db43210ull, 0xb00327c898fb213full, 0xbf597fc7beef0ee4ull,\n\t0xc6e00bf33da88fc2ull, 0xd5a79147930aa725ull, 0x06ca6351e003826full, 0x142929670a0e6e70ull,\n\t0x27b70a8546d22ffcull, 0x2e1b21385c26c926ull, 0x4d2c6dfc5ac42aedull, 0x53380d139d95b3dfull,\n\t0x650a73548baf63deull, 0x766a0abb3c77b2a8ull, 0x81c2c92e47edaee6ull, 0x92722c851482353bull,\n\t0xa2bfe8a14cf10364ull, 0xa81a664bbc423001ull, 0xc24b8b70d0f89791ull, 0xc76c51a30654be30ull,\n\t0xd192e819d6ef5218ull, 0xd69906245565a910ull, 0xf40e35855771202aull, 0x106aa07032bbd1b8ull,\n\t0x19a4c116b8d2d0c8ull, 0x1e376c085141ab53ull, 0x2748774cdf8eeb99ull, 0x34b0bcb5e19b48a8ull,\n\t0x391c0cb3c5c95a63ull, 0x4ed8aa4ae3418acbull, 0x5b9cca4f7763e373ull, 0x682e6ff3d6b2b8a3ull,\n\t0x748f82ee5defb2fcull, 0x78a5636f43172f60ull, 0x84c87814a1f0ab72ull, 0x8cc702081a6439ecull,\n\t0x90befffa23631e28ull, 0xa4506cebde82bde9ull, 0xbef9a3f7b2c67915ull, 0xc67178f2e372532bull,\n\t0xca273eceea26619cull, 0xd186b8c721c0c207ull, 0xeada7dd6cde0eb1eull, 0xf57d4f7fee6ed178ull,\n\t0x06f067aa72176fbaull, 0x0a637dc5a2c898a6ull, 0x113f9804bef90daeull, 0x1b710b35131c471bull,\n\t0x28db77f523047d84ull, 0x32caab7b40c72493ull, 0x3c9ebe0a15c9bebcull, 0x431d67c49c100d4cull,\n\t0x4cc5d4becb3e42b6ull, 0x597f299cfc657e2aull, 0x5fcb6fab3ad6faecull, 0x6c44198c4a475817ull\n};\n\nstatic uint64_t\nsha512_ROTR64(uint64_t x, int k) {\n\treturn (x >> k) | (x << (64 - k));\n}\n\nstatic uint64_t\nsha512_LOAD64_BE(const uint8_t *p) {\n\treturn \n\t\t((uint64_t)p[0] << 56) |\n\t\t((uint64_t)p[1] << 48) |\n\t\t((uint64_t)p[2] << 40) |\n\t\t((uint64_t)p[3] << 32) |\n\t\t((uint64_t)p[4] << 24) |\n\t\t((uint64_t)p[5] << 16) |\n\t\t((uint64_t)p[6] <<  8) |\n\t\t((uint64_t)p[7]      );\n}\n\nstatic void\nsha512_STORE64_BE(uint8_t *p, uint64_t v) {\n\tp[0] = (uint8_t)(v >> 56);\n\tp[1] = (uint8_t)(v >> 48);\n\tp[2] = (uint8_t)(v >> 40);\n\tp[3] = (uint8_t)(v >> 32);\n\tp[4] = (uint8_t)(v >> 24);\n\tp[5] = (uint8_t)(v >> 16);\n\tp[6] = (uint8_t)(v >>  8);\n\tp[7] = (uint8_t)(v      );\n}\n\n#define Ch(x,y,z)  (z ^ (x & (y ^ z)))\n#define Maj(x,y,z) (((x | y) & z) | (x & y))\n#define S0(x)      (sha512_ROTR64(x, 28) ^ sha512_ROTR64(x, 34) ^ sha512_ROTR64(x, 39))\n#define S1(x)      (sha512_ROTR64(x, 14) ^ sha512_ROTR64(x, 18) ^ sha512_ROTR64(x, 41))\n#define G0(x)      (sha512_ROTR64(x,  1) ^ sha512_ROTR64(x,  8) ^ (x >>  7))\n#define G1(x)      (sha512_ROTR64(x, 19) ^ sha512_ROTR64(x, 61) ^ (x >>  6))\n#define W0(in,i)   (sha512_LOAD64_BE(&in[i * 8]))\n#define W1(i)      (G1(w[i - 2]) + w[i - 7] + G0(w[i - 15]) + w[i - 16])\n#define STEP(i) \\\n\tt1 = S0(r[0]) + Maj(r[0], r[1], r[2]); \\\n\tt0 = r[7] + S1(r[4]) + Ch(r[4], r[5], r[6]) + sha512_constants[i] + w[i]; \\\n\tr[7] = r[6]; \\\n\tr[6] = r[5]; \\\n\tr[5] = r[4]; \\\n\tr[4] = r[3] + t0; \\\n\tr[3] = r[2]; \\\n\tr[2] = r[1]; \\\n\tr[1] = r[0]; \\\n\tr[0] = t0 + t1;\n\nstatic void\nsha512_blocks(sha512_state *S, const uint8_t *in, size_t blocks) {\n\tuint64_t r[8], w[80], t0, t1;\n\tsize_t i;\n\n\tfor (i = 0; i < 8; i++) r[i] = S->H[i];\n\n\twhile (blocks--) {\n\t\tfor (i =  0; i < 16; i++) { w[i] = W0(in, i); }\n\t\tfor (i = 16; i < 80; i++) { w[i] = W1(i); }\n\t\tfor (i =  0; i < 80; i++) { STEP(i); }\n\t\tfor (i =  0; i <  8; i++) { r[i] += S->H[i]; S->H[i] = r[i]; }\n\t\tS->T[0] += HASH_BLOCK_SIZE * 8;\n\t\tS->T[1] += (!S->T[0]) ? 1 : 0;\n\t\tin += HASH_BLOCK_SIZE;\n\t}\n}\n\nstatic void\ned25519_hash_init(sha512_state *S) {\n\tS->H[0] = 0x6a09e667f3bcc908ull;\n\tS->H[1] = 0xbb67ae8584caa73bull;\n\tS->H[2] = 0x3c6ef372fe94f82bull;\n\tS->H[3] = 0xa54ff53a5f1d36f1ull;\n\tS->H[4] = 0x510e527fade682d1ull;\n\tS->H[5] = 0x9b05688c2b3e6c1full;\n\tS->H[6] = 0x1f83d9abfb41bd6bull;\n\tS->H[7] = 0x5be0cd19137e2179ull;\n\tS->T[0] = 0;\n\tS->T[1] = 0;\n\tS->leftover = 0;\n}\n\nstatic void\ned25519_hash_update(sha512_state *S, const uint8_t *in, size_t inlen) {\n\tsize_t blocks, want;\n\n\t/* handle the previous data */\n\tif (S->leftover) {\n\t\twant = (HASH_BLOCK_SIZE - S->leftover);\n\t\twant = (want < inlen) ? want : inlen;\n\t\tmemcpy(S->buffer + S->leftover, in, want);\n\t\tS->leftover += (uint32_t)want;\n\t\tif (S->leftover < HASH_BLOCK_SIZE)\n\t\t\treturn;\n\t\tin += want;\n\t\tinlen -= want;\n\t\tsha512_blocks(S, S->buffer, 1);\n\t}\n\n\t/* handle the current data */\n\tblocks = (inlen & ~(HASH_BLOCK_SIZE - 1));\n\tS->leftover = (uint32_t)(inlen - blocks);\n\tif (blocks) {\n\t\tsha512_blocks(S, in, blocks / HASH_BLOCK_SIZE);\n\t\tin += blocks;\n\t}\n\n\t/* handle leftover data */\n\tif (S->leftover)\n\t\tmemcpy(S->buffer, in, S->leftover);\n}\n\nstatic void\ned25519_hash_final(sha512_state *S, uint8_t *hash) {\n\tuint64_t t0 = S->T[0] + (S->leftover * 8), t1 = S->T[1];\n\n\tS->buffer[S->leftover] = 0x80;\n\tif (S->leftover <= 111) {\n\t\tmemset(S->buffer + S->leftover + 1, 0, 111 - S->leftover);\n\t} else {\n\t\tmemset(S->buffer + S->leftover + 1, 0, 127 - S->leftover);\n\t\tsha512_blocks(S, S->buffer, 1);\n\t\tmemset(S->buffer, 0, 112);\n\t}\n\n\tsha512_STORE64_BE(S->buffer + 112, t1);\n\tsha512_STORE64_BE(S->buffer + 120, t0);\n\tsha512_blocks(S, S->buffer, 1);\n\n\tsha512_STORE64_BE(&hash[ 0], S->H[0]);\n\tsha512_STORE64_BE(&hash[ 8], S->H[1]);\n\tsha512_STORE64_BE(&hash[16], S->H[2]);\n\tsha512_STORE64_BE(&hash[24], S->H[3]);\n\tsha512_STORE64_BE(&hash[32], S->H[4]);\n\tsha512_STORE64_BE(&hash[40], S->H[5]);\n\tsha512_STORE64_BE(&hash[48], S->H[6]);\n\tsha512_STORE64_BE(&hash[56], S->H[7]);\n}\n\nstatic void\ncrypto_hash_sha512(unsigned char *hash, const unsigned char *in, size_t inlen) {\n\ted25519_hash_context ctx;\n\ted25519_hash_init(&ctx);\n\ted25519_hash_update(&ctx, in, inlen);\n\ted25519_hash_final(&ctx, hash);\n}\n\n#else\n\n#include <openssl/sha.h>\n\nstatic void\ncrypto_hash_sha512(unsigned char *hash, const unsigned char *in, size_t inlen) {\n\tSHA512(in, inlen, hash);\n}\n\n#endif\n\n\n\n\ntypedef int32_t crypto_int32;\ntypedef uint32_t crypto_uint32;\ntypedef int64_t crypto_int64;\ntypedef uint64_t crypto_uint64;\n\ntypedef crypto_int32 fe[10];\n\n/*\nh = 0\n*/\n\nstatic void fe_0(fe h)\n{\n  h[0] = 0;\n  h[1] = 0;\n  h[2] = 0;\n  h[3] = 0;\n  h[4] = 0;\n  h[5] = 0;\n  h[6] = 0;\n  h[7] = 0;\n  h[8] = 0;\n  h[9] = 0;\n}\n\n/*\nh = 1\n*/\n\nstatic void fe_1(fe h)\n{\n  h[0] = 1;\n  h[1] = 0;\n  h[2] = 0;\n  h[3] = 0;\n  h[4] = 0;\n  h[5] = 0;\n  h[6] = 0;\n  h[7] = 0;\n  h[8] = 0;\n  h[9] = 0;\n}\n\n/*\nh = f + g\nCan overlap h with f or g.\n\nPreconditions:\n   |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n   |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n*/\n\nstatic void fe_add(fe h,const fe f,const fe g)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 h0 = f0 + g0;\n  crypto_int32 h1 = f1 + g1;\n  crypto_int32 h2 = f2 + g2;\n  crypto_int32 h3 = f3 + g3;\n  crypto_int32 h4 = f4 + g4;\n  crypto_int32 h5 = f5 + g5;\n  crypto_int32 h6 = f6 + g6;\n  crypto_int32 h7 = f7 + g7;\n  crypto_int32 h8 = f8 + g8;\n  crypto_int32 h9 = f9 + g9;\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n\n/*\nReplace (f,g) with (g,g) if b == 1;\nreplace (f,g) with (f,g) if b == 0.\n\nPreconditions: b in {0,1}.\n*/\n\nstatic void fe_cmov(fe f,const fe g,unsigned int b)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 x0 = f0 ^ g0;\n  crypto_int32 x1 = f1 ^ g1;\n  crypto_int32 x2 = f2 ^ g2;\n  crypto_int32 x3 = f3 ^ g3;\n  crypto_int32 x4 = f4 ^ g4;\n  crypto_int32 x5 = f5 ^ g5;\n  crypto_int32 x6 = f6 ^ g6;\n  crypto_int32 x7 = f7 ^ g7;\n  crypto_int32 x8 = f8 ^ g8;\n  crypto_int32 x9 = f9 ^ g9;\n  b = -b;\n  x0 &= b;\n  x1 &= b;\n  x2 &= b;\n  x3 &= b;\n  x4 &= b;\n  x5 &= b;\n  x6 &= b;\n  x7 &= b;\n  x8 &= b;\n  x9 &= b;\n  f[0] = f0 ^ x0;\n  f[1] = f1 ^ x1;\n  f[2] = f2 ^ x2;\n  f[3] = f3 ^ x3;\n  f[4] = f4 ^ x4;\n  f[5] = f5 ^ x5;\n  f[6] = f6 ^ x6;\n  f[7] = f7 ^ x7;\n  f[8] = f8 ^ x8;\n  f[9] = f9 ^ x9;\n}\n\n\n/*\nh = f\n*/\n\nstatic void fe_copy(fe h,const fe f)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  h[0] = f0;\n  h[1] = f1;\n  h[2] = f2;\n  h[3] = f3;\n  h[4] = f4;\n  h[5] = f5;\n  h[6] = f6;\n  h[7] = f7;\n  h[8] = f8;\n  h[9] = f9;\n}\n\n\nstatic crypto_uint64 load_3(const unsigned char *in)\n{\n  crypto_uint64 result;\n  result = (crypto_uint64) in[0];\n  result |= ((crypto_uint64) in[1]) << 8;\n  result |= ((crypto_uint64) in[2]) << 16;\n  return result;\n}\n\nstatic crypto_uint64 load_4(const unsigned char *in)\n{\n  crypto_uint64 result;\n  result = (crypto_uint64) in[0];\n  result |= ((crypto_uint64) in[1]) << 8;\n  result |= ((crypto_uint64) in[2]) << 16;\n  result |= ((crypto_uint64) in[3]) << 24;\n  return result;\n}\n\n/*\nIgnores top bit of h.\n*/\n\nstatic void fe_frombytes(fe h,const unsigned char *s)\n{\n  crypto_int64 h0 = load_4(s);\n  crypto_int64 h1 = load_3(s + 4) << 6;\n  crypto_int64 h2 = load_3(s + 7) << 5;\n  crypto_int64 h3 = load_3(s + 10) << 3;\n  crypto_int64 h4 = load_3(s + 13) << 2;\n  crypto_int64 h5 = load_4(s + 16);\n  crypto_int64 h6 = load_3(s + 20) << 7;\n  crypto_int64 h7 = load_3(s + 23) << 5;\n  crypto_int64 h8 = load_3(s + 26) << 4;\n  crypto_int64 h9 = (load_3(s + 29) & 8388607) << 2;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nPreconditions:\n  |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n\nWrite p=2^255-19; q=floor(h/p).\nBasic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).\n\nProof:\n  Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.\n  Also have |h-2^230 h9|<2^231 so |19 2^(-255)(h-2^230 h9)|<1/4.\n\n  Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).\n  Then 0<y<1.\n\n  Write r=h-pq.\n  Have 0<=r<=p-1=2^255-20.\n  Thus 0<=r+19(2^-255)r<r+19(2^-255)2^255<=2^255-1.\n\n  Write x=r+19(2^-255)r+y.\n  Then 0<x<2^255 so floor(2^(-255)x) = 0 so floor(q+2^(-255)x) = q.\n\n  Have q+2^(-255)x = 2^(-255)(h + 19 2^(-25) h9 + 2^(-1))\n  so floor(2^(-255)(h + 19 2^(-25) h9 + 2^(-1))) = q.\n*/\n\nstatic void fe_tobytes(unsigned char *s,const fe h)\n{\n  crypto_int32 h0 = h[0];\n  crypto_int32 h1 = h[1];\n  crypto_int32 h2 = h[2];\n  crypto_int32 h3 = h[3];\n  crypto_int32 h4 = h[4];\n  crypto_int32 h5 = h[5];\n  crypto_int32 h6 = h[6];\n  crypto_int32 h7 = h[7];\n  crypto_int32 h8 = h[8];\n  crypto_int32 h9 = h[9];\n  crypto_int32 q;\n  crypto_int32 carry0;\n  crypto_int32 carry1;\n  crypto_int32 carry2;\n  crypto_int32 carry3;\n  crypto_int32 carry4;\n  crypto_int32 carry5;\n  crypto_int32 carry6;\n  crypto_int32 carry7;\n  crypto_int32 carry8;\n  crypto_int32 carry9;\n\n  q = (19 * h9 + (((crypto_int32) 1) << 24)) >> 25;\n  q = (h0 + q) >> 26;\n  q = (h1 + q) >> 25;\n  q = (h2 + q) >> 26;\n  q = (h3 + q) >> 25;\n  q = (h4 + q) >> 26;\n  q = (h5 + q) >> 25;\n  q = (h6 + q) >> 26;\n  q = (h7 + q) >> 25;\n  q = (h8 + q) >> 26;\n  q = (h9 + q) >> 25;\n\n  /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */\n  h0 += 19 * q;\n  /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */\n\n  carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25;\n  carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26;\n  carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25;\n  carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26;\n  carry9 = h9 >> 25;               h9 -= carry9 << 25;\n                  /* h10 = carry9 */\n\n  /*\n  Goal: Output h0+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.\n  Have h0+...+2^230 h9 between 0 and 2^255-1;\n  evidently 2^255 h10-2^255 q = 0.\n  Goal: Output h0+...+2^230 h9.\n  */\n\n  s[0] = h0 >> 0;\n  s[1] = h0 >> 8;\n  s[2] = h0 >> 16;\n  s[3] = (h0 >> 24) | (h1 << 2);\n  s[4] = h1 >> 6;\n  s[5] = h1 >> 14;\n  s[6] = (h1 >> 22) | (h2 << 3);\n  s[7] = h2 >> 5;\n  s[8] = h2 >> 13;\n  s[9] = (h2 >> 21) | (h3 << 5);\n  s[10] = h3 >> 3;\n  s[11] = h3 >> 11;\n  s[12] = (h3 >> 19) | (h4 << 6);\n  s[13] = h4 >> 2;\n  s[14] = h4 >> 10;\n  s[15] = h4 >> 18;\n  s[16] = h5 >> 0;\n  s[17] = h5 >> 8;\n  s[18] = h5 >> 16;\n  s[19] = (h5 >> 24) | (h6 << 1);\n  s[20] = h6 >> 7;\n  s[21] = h6 >> 15;\n  s[22] = (h6 >> 23) | (h7 << 3);\n  s[23] = h7 >> 5;\n  s[24] = h7 >> 13;\n  s[25] = (h7 >> 21) | (h8 << 4);\n  s[26] = h8 >> 4;\n  s[27] = h8 >> 12;\n  s[28] = (h8 >> 20) | (h9 << 6);\n  s[29] = h9 >> 2;\n  s[30] = h9 >> 10;\n  s[31] = h9 >> 18;\n}\n\n\n/*\nh = f - g\nCan overlap h with f or g.\n\nPreconditions:\n   |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n   |g| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n*/\n\nstatic void fe_sub(fe h,const fe f,const fe g)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 h0 = f0 - g0;\n  crypto_int32 h1 = f1 - g1;\n  crypto_int32 h2 = f2 - g2;\n  crypto_int32 h3 = f3 - g3;\n  crypto_int32 h4 = f4 - g4;\n  crypto_int32 h5 = f5 - g5;\n  crypto_int32 h6 = f6 - g6;\n  crypto_int32 h7 = f7 - g7;\n  crypto_int32 h8 = f8 - g8;\n  crypto_int32 h9 = f9 - g9;\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n\n/*\nh = f * f\nCan overlap h with f.\n\nPreconditions:\n   |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.\n\nPostconditions:\n   |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.\n*/\n\n/*\nSee fe_mul.c for discussion of implementation strategy.\n*/\n\nstatic void fe_sq(fe h,const fe f)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 f0_2 = 2 * f0;\n  crypto_int32 f1_2 = 2 * f1;\n  crypto_int32 f2_2 = 2 * f2;\n  crypto_int32 f3_2 = 2 * f3;\n  crypto_int32 f4_2 = 2 * f4;\n  crypto_int32 f5_2 = 2 * f5;\n  crypto_int32 f6_2 = 2 * f6;\n  crypto_int32 f7_2 = 2 * f7;\n  crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */\n  crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */\n  crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */\n  crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */\n  crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */\n  crypto_int64 f0f0    = f0   * (crypto_int64) f0;\n  crypto_int64 f0f1_2  = f0_2 * (crypto_int64) f1;\n  crypto_int64 f0f2_2  = f0_2 * (crypto_int64) f2;\n  crypto_int64 f0f3_2  = f0_2 * (crypto_int64) f3;\n  crypto_int64 f0f4_2  = f0_2 * (crypto_int64) f4;\n  crypto_int64 f0f5_2  = f0_2 * (crypto_int64) f5;\n  crypto_int64 f0f6_2  = f0_2 * (crypto_int64) f6;\n  crypto_int64 f0f7_2  = f0_2 * (crypto_int64) f7;\n  crypto_int64 f0f8_2  = f0_2 * (crypto_int64) f8;\n  crypto_int64 f0f9_2  = f0_2 * (crypto_int64) f9;\n  crypto_int64 f1f1_2  = f1_2 * (crypto_int64) f1;\n  crypto_int64 f1f2_2  = f1_2 * (crypto_int64) f2;\n  crypto_int64 f1f3_4  = f1_2 * (crypto_int64) f3_2;\n  crypto_int64 f1f4_2  = f1_2 * (crypto_int64) f4;\n  crypto_int64 f1f5_4  = f1_2 * (crypto_int64) f5_2;\n  crypto_int64 f1f6_2  = f1_2 * (crypto_int64) f6;\n  crypto_int64 f1f7_4  = f1_2 * (crypto_int64) f7_2;\n  crypto_int64 f1f8_2  = f1_2 * (crypto_int64) f8;\n  crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38;\n  crypto_int64 f2f2    = f2   * (crypto_int64) f2;\n  crypto_int64 f2f3_2  = f2_2 * (crypto_int64) f3;\n  crypto_int64 f2f4_2  = f2_2 * (crypto_int64) f4;\n  crypto_int64 f2f5_2  = f2_2 * (crypto_int64) f5;\n  crypto_int64 f2f6_2  = f2_2 * (crypto_int64) f6;\n  crypto_int64 f2f7_2  = f2_2 * (crypto_int64) f7;\n  crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;\n  crypto_int64 f2f9_38 = f2   * (crypto_int64) f9_38;\n  crypto_int64 f3f3_2  = f3_2 * (crypto_int64) f3;\n  crypto_int64 f3f4_2  = f3_2 * (crypto_int64) f4;\n  crypto_int64 f3f5_4  = f3_2 * (crypto_int64) f5_2;\n  crypto_int64 f3f6_2  = f3_2 * (crypto_int64) f6;\n  crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38;\n  crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19;\n  crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38;\n  crypto_int64 f4f4    = f4   * (crypto_int64) f4;\n  crypto_int64 f4f5_2  = f4_2 * (crypto_int64) f5;\n  crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19;\n  crypto_int64 f4f7_38 = f4   * (crypto_int64) f7_38;\n  crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19;\n  crypto_int64 f4f9_38 = f4   * (crypto_int64) f9_38;\n  crypto_int64 f5f5_38 = f5   * (crypto_int64) f5_38;\n  crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19;\n  crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38;\n  crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19;\n  crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38;\n  crypto_int64 f6f6_19 = f6   * (crypto_int64) f6_19;\n  crypto_int64 f6f7_38 = f6   * (crypto_int64) f7_38;\n  crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19;\n  crypto_int64 f6f9_38 = f6   * (crypto_int64) f9_38;\n  crypto_int64 f7f7_38 = f7   * (crypto_int64) f7_38;\n  crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19;\n  crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38;\n  crypto_int64 f8f8_19 = f8   * (crypto_int64) f8_19;\n  crypto_int64 f8f9_38 = f8   * (crypto_int64) f9_38;\n  crypto_int64 f9f9_38 = f9   * (crypto_int64) f9_38;\n  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;\n  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;\n  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;\n  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;\n  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;\n  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;\n  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;\n  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;\n  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;\n  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nh = 2 * f * f\nCan overlap h with f.\n\nPreconditions:\n   |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.\n\nPostconditions:\n   |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.\n*/\n\n/*\nSee fe_mul.c for discussion of implementation strategy.\n*/\n\nstatic void fe_sq2(fe h,const fe f)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 f0_2 = 2 * f0;\n  crypto_int32 f1_2 = 2 * f1;\n  crypto_int32 f2_2 = 2 * f2;\n  crypto_int32 f3_2 = 2 * f3;\n  crypto_int32 f4_2 = 2 * f4;\n  crypto_int32 f5_2 = 2 * f5;\n  crypto_int32 f6_2 = 2 * f6;\n  crypto_int32 f7_2 = 2 * f7;\n  crypto_int32 f5_38 = 38 * f5; /* 1.959375*2^30 */\n  crypto_int32 f6_19 = 19 * f6; /* 1.959375*2^30 */\n  crypto_int32 f7_38 = 38 * f7; /* 1.959375*2^30 */\n  crypto_int32 f8_19 = 19 * f8; /* 1.959375*2^30 */\n  crypto_int32 f9_38 = 38 * f9; /* 1.959375*2^30 */\n  crypto_int64 f0f0    = f0   * (crypto_int64) f0;\n  crypto_int64 f0f1_2  = f0_2 * (crypto_int64) f1;\n  crypto_int64 f0f2_2  = f0_2 * (crypto_int64) f2;\n  crypto_int64 f0f3_2  = f0_2 * (crypto_int64) f3;\n  crypto_int64 f0f4_2  = f0_2 * (crypto_int64) f4;\n  crypto_int64 f0f5_2  = f0_2 * (crypto_int64) f5;\n  crypto_int64 f0f6_2  = f0_2 * (crypto_int64) f6;\n  crypto_int64 f0f7_2  = f0_2 * (crypto_int64) f7;\n  crypto_int64 f0f8_2  = f0_2 * (crypto_int64) f8;\n  crypto_int64 f0f9_2  = f0_2 * (crypto_int64) f9;\n  crypto_int64 f1f1_2  = f1_2 * (crypto_int64) f1;\n  crypto_int64 f1f2_2  = f1_2 * (crypto_int64) f2;\n  crypto_int64 f1f3_4  = f1_2 * (crypto_int64) f3_2;\n  crypto_int64 f1f4_2  = f1_2 * (crypto_int64) f4;\n  crypto_int64 f1f5_4  = f1_2 * (crypto_int64) f5_2;\n  crypto_int64 f1f6_2  = f1_2 * (crypto_int64) f6;\n  crypto_int64 f1f7_4  = f1_2 * (crypto_int64) f7_2;\n  crypto_int64 f1f8_2  = f1_2 * (crypto_int64) f8;\n  crypto_int64 f1f9_76 = f1_2 * (crypto_int64) f9_38;\n  crypto_int64 f2f2    = f2   * (crypto_int64) f2;\n  crypto_int64 f2f3_2  = f2_2 * (crypto_int64) f3;\n  crypto_int64 f2f4_2  = f2_2 * (crypto_int64) f4;\n  crypto_int64 f2f5_2  = f2_2 * (crypto_int64) f5;\n  crypto_int64 f2f6_2  = f2_2 * (crypto_int64) f6;\n  crypto_int64 f2f7_2  = f2_2 * (crypto_int64) f7;\n  crypto_int64 f2f8_38 = f2_2 * (crypto_int64) f8_19;\n  crypto_int64 f2f9_38 = f2   * (crypto_int64) f9_38;\n  crypto_int64 f3f3_2  = f3_2 * (crypto_int64) f3;\n  crypto_int64 f3f4_2  = f3_2 * (crypto_int64) f4;\n  crypto_int64 f3f5_4  = f3_2 * (crypto_int64) f5_2;\n  crypto_int64 f3f6_2  = f3_2 * (crypto_int64) f6;\n  crypto_int64 f3f7_76 = f3_2 * (crypto_int64) f7_38;\n  crypto_int64 f3f8_38 = f3_2 * (crypto_int64) f8_19;\n  crypto_int64 f3f9_76 = f3_2 * (crypto_int64) f9_38;\n  crypto_int64 f4f4    = f4   * (crypto_int64) f4;\n  crypto_int64 f4f5_2  = f4_2 * (crypto_int64) f5;\n  crypto_int64 f4f6_38 = f4_2 * (crypto_int64) f6_19;\n  crypto_int64 f4f7_38 = f4   * (crypto_int64) f7_38;\n  crypto_int64 f4f8_38 = f4_2 * (crypto_int64) f8_19;\n  crypto_int64 f4f9_38 = f4   * (crypto_int64) f9_38;\n  crypto_int64 f5f5_38 = f5   * (crypto_int64) f5_38;\n  crypto_int64 f5f6_38 = f5_2 * (crypto_int64) f6_19;\n  crypto_int64 f5f7_76 = f5_2 * (crypto_int64) f7_38;\n  crypto_int64 f5f8_38 = f5_2 * (crypto_int64) f8_19;\n  crypto_int64 f5f9_76 = f5_2 * (crypto_int64) f9_38;\n  crypto_int64 f6f6_19 = f6   * (crypto_int64) f6_19;\n  crypto_int64 f6f7_38 = f6   * (crypto_int64) f7_38;\n  crypto_int64 f6f8_38 = f6_2 * (crypto_int64) f8_19;\n  crypto_int64 f6f9_38 = f6   * (crypto_int64) f9_38;\n  crypto_int64 f7f7_38 = f7   * (crypto_int64) f7_38;\n  crypto_int64 f7f8_38 = f7_2 * (crypto_int64) f8_19;\n  crypto_int64 f7f9_76 = f7_2 * (crypto_int64) f9_38;\n  crypto_int64 f8f8_19 = f8   * (crypto_int64) f8_19;\n  crypto_int64 f8f9_38 = f8   * (crypto_int64) f9_38;\n  crypto_int64 f9f9_38 = f9   * (crypto_int64) f9_38;\n  crypto_int64 h0 = f0f0  +f1f9_76+f2f8_38+f3f7_76+f4f6_38+f5f5_38;\n  crypto_int64 h1 = f0f1_2+f2f9_38+f3f8_38+f4f7_38+f5f6_38;\n  crypto_int64 h2 = f0f2_2+f1f1_2 +f3f9_76+f4f8_38+f5f7_76+f6f6_19;\n  crypto_int64 h3 = f0f3_2+f1f2_2 +f4f9_38+f5f8_38+f6f7_38;\n  crypto_int64 h4 = f0f4_2+f1f3_4 +f2f2   +f5f9_76+f6f8_38+f7f7_38;\n  crypto_int64 h5 = f0f5_2+f1f4_2 +f2f3_2 +f6f9_38+f7f8_38;\n  crypto_int64 h6 = f0f6_2+f1f5_4 +f2f4_2 +f3f3_2 +f7f9_76+f8f8_19;\n  crypto_int64 h7 = f0f7_2+f1f6_2 +f2f5_2 +f3f4_2 +f8f9_38;\n  crypto_int64 h8 = f0f8_2+f1f7_4 +f2f6_2 +f3f5_4 +f4f4   +f9f9_38;\n  crypto_int64 h9 = f0f9_2+f1f8_2 +f2f7_2 +f3f6_2 +f4f5_2;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  h0 += h0;\n  h1 += h1;\n  h2 += h2;\n  h3 += h3;\n  h4 += h4;\n  h5 += h5;\n  h6 += h6;\n  h7 += h7;\n  h8 += h8;\n  h9 += h9;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n/*\nh = f * g\nCan overlap h with f or g.\n\nPreconditions:\n   |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.\n   |g| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.\n\nPostconditions:\n   |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.\n*/\n\n/*\nNotes on implementation strategy:\n\nUsing schoolbook multiplication.\nKaratsuba would save a little in some cost models.\n\nMost multiplications by 2 and 19 are 32-bit precomputations;\ncheaper than 64-bit postcomputations.\n\nThere is one remaining multiplication by 19 in the carry chain;\none *19 precomputation can be merged into this,\nbut the resulting data flow is considerably less clean.\n\nThere are 12 carries below.\n10 of them are 2-way parallelizable and vectorizable.\nCan get away with 11 carries, but then data flow is much deeper.\n\nWith tighter constraints on inputs can squeeze carries into int32.\n*/\n\nstatic void fe_mul(fe h,const fe f,const fe g)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 g0 = g[0];\n  crypto_int32 g1 = g[1];\n  crypto_int32 g2 = g[2];\n  crypto_int32 g3 = g[3];\n  crypto_int32 g4 = g[4];\n  crypto_int32 g5 = g[5];\n  crypto_int32 g6 = g[6];\n  crypto_int32 g7 = g[7];\n  crypto_int32 g8 = g[8];\n  crypto_int32 g9 = g[9];\n  crypto_int32 g1_19 = 19 * g1; /* 1.959375*2^29 */\n  crypto_int32 g2_19 = 19 * g2; /* 1.959375*2^30; still ok */\n  crypto_int32 g3_19 = 19 * g3;\n  crypto_int32 g4_19 = 19 * g4;\n  crypto_int32 g5_19 = 19 * g5;\n  crypto_int32 g6_19 = 19 * g6;\n  crypto_int32 g7_19 = 19 * g7;\n  crypto_int32 g8_19 = 19 * g8;\n  crypto_int32 g9_19 = 19 * g9;\n  crypto_int32 f1_2 = 2 * f1;\n  crypto_int32 f3_2 = 2 * f3;\n  crypto_int32 f5_2 = 2 * f5;\n  crypto_int32 f7_2 = 2 * f7;\n  crypto_int32 f9_2 = 2 * f9;\n  crypto_int64 f0g0    = f0   * (crypto_int64) g0;\n  crypto_int64 f0g1    = f0   * (crypto_int64) g1;\n  crypto_int64 f0g2    = f0   * (crypto_int64) g2;\n  crypto_int64 f0g3    = f0   * (crypto_int64) g3;\n  crypto_int64 f0g4    = f0   * (crypto_int64) g4;\n  crypto_int64 f0g5    = f0   * (crypto_int64) g5;\n  crypto_int64 f0g6    = f0   * (crypto_int64) g6;\n  crypto_int64 f0g7    = f0   * (crypto_int64) g7;\n  crypto_int64 f0g8    = f0   * (crypto_int64) g8;\n  crypto_int64 f0g9    = f0   * (crypto_int64) g9;\n  crypto_int64 f1g0    = f1   * (crypto_int64) g0;\n  crypto_int64 f1g1_2  = f1_2 * (crypto_int64) g1;\n  crypto_int64 f1g2    = f1   * (crypto_int64) g2;\n  crypto_int64 f1g3_2  = f1_2 * (crypto_int64) g3;\n  crypto_int64 f1g4    = f1   * (crypto_int64) g4;\n  crypto_int64 f1g5_2  = f1_2 * (crypto_int64) g5;\n  crypto_int64 f1g6    = f1   * (crypto_int64) g6;\n  crypto_int64 f1g7_2  = f1_2 * (crypto_int64) g7;\n  crypto_int64 f1g8    = f1   * (crypto_int64) g8;\n  crypto_int64 f1g9_38 = f1_2 * (crypto_int64) g9_19;\n  crypto_int64 f2g0    = f2   * (crypto_int64) g0;\n  crypto_int64 f2g1    = f2   * (crypto_int64) g1;\n  crypto_int64 f2g2    = f2   * (crypto_int64) g2;\n  crypto_int64 f2g3    = f2   * (crypto_int64) g3;\n  crypto_int64 f2g4    = f2   * (crypto_int64) g4;\n  crypto_int64 f2g5    = f2   * (crypto_int64) g5;\n  crypto_int64 f2g6    = f2   * (crypto_int64) g6;\n  crypto_int64 f2g7    = f2   * (crypto_int64) g7;\n  crypto_int64 f2g8_19 = f2   * (crypto_int64) g8_19;\n  crypto_int64 f2g9_19 = f2   * (crypto_int64) g9_19;\n  crypto_int64 f3g0    = f3   * (crypto_int64) g0;\n  crypto_int64 f3g1_2  = f3_2 * (crypto_int64) g1;\n  crypto_int64 f3g2    = f3   * (crypto_int64) g2;\n  crypto_int64 f3g3_2  = f3_2 * (crypto_int64) g3;\n  crypto_int64 f3g4    = f3   * (crypto_int64) g4;\n  crypto_int64 f3g5_2  = f3_2 * (crypto_int64) g5;\n  crypto_int64 f3g6    = f3   * (crypto_int64) g6;\n  crypto_int64 f3g7_38 = f3_2 * (crypto_int64) g7_19;\n  crypto_int64 f3g8_19 = f3   * (crypto_int64) g8_19;\n  crypto_int64 f3g9_38 = f3_2 * (crypto_int64) g9_19;\n  crypto_int64 f4g0    = f4   * (crypto_int64) g0;\n  crypto_int64 f4g1    = f4   * (crypto_int64) g1;\n  crypto_int64 f4g2    = f4   * (crypto_int64) g2;\n  crypto_int64 f4g3    = f4   * (crypto_int64) g3;\n  crypto_int64 f4g4    = f4   * (crypto_int64) g4;\n  crypto_int64 f4g5    = f4   * (crypto_int64) g5;\n  crypto_int64 f4g6_19 = f4   * (crypto_int64) g6_19;\n  crypto_int64 f4g7_19 = f4   * (crypto_int64) g7_19;\n  crypto_int64 f4g8_19 = f4   * (crypto_int64) g8_19;\n  crypto_int64 f4g9_19 = f4   * (crypto_int64) g9_19;\n  crypto_int64 f5g0    = f5   * (crypto_int64) g0;\n  crypto_int64 f5g1_2  = f5_2 * (crypto_int64) g1;\n  crypto_int64 f5g2    = f5   * (crypto_int64) g2;\n  crypto_int64 f5g3_2  = f5_2 * (crypto_int64) g3;\n  crypto_int64 f5g4    = f5   * (crypto_int64) g4;\n  crypto_int64 f5g5_38 = f5_2 * (crypto_int64) g5_19;\n  crypto_int64 f5g6_19 = f5   * (crypto_int64) g6_19;\n  crypto_int64 f5g7_38 = f5_2 * (crypto_int64) g7_19;\n  crypto_int64 f5g8_19 = f5   * (crypto_int64) g8_19;\n  crypto_int64 f5g9_38 = f5_2 * (crypto_int64) g9_19;\n  crypto_int64 f6g0    = f6   * (crypto_int64) g0;\n  crypto_int64 f6g1    = f6   * (crypto_int64) g1;\n  crypto_int64 f6g2    = f6   * (crypto_int64) g2;\n  crypto_int64 f6g3    = f6   * (crypto_int64) g3;\n  crypto_int64 f6g4_19 = f6   * (crypto_int64) g4_19;\n  crypto_int64 f6g5_19 = f6   * (crypto_int64) g5_19;\n  crypto_int64 f6g6_19 = f6   * (crypto_int64) g6_19;\n  crypto_int64 f6g7_19 = f6   * (crypto_int64) g7_19;\n  crypto_int64 f6g8_19 = f6   * (crypto_int64) g8_19;\n  crypto_int64 f6g9_19 = f6   * (crypto_int64) g9_19;\n  crypto_int64 f7g0    = f7   * (crypto_int64) g0;\n  crypto_int64 f7g1_2  = f7_2 * (crypto_int64) g1;\n  crypto_int64 f7g2    = f7   * (crypto_int64) g2;\n  crypto_int64 f7g3_38 = f7_2 * (crypto_int64) g3_19;\n  crypto_int64 f7g4_19 = f7   * (crypto_int64) g4_19;\n  crypto_int64 f7g5_38 = f7_2 * (crypto_int64) g5_19;\n  crypto_int64 f7g6_19 = f7   * (crypto_int64) g6_19;\n  crypto_int64 f7g7_38 = f7_2 * (crypto_int64) g7_19;\n  crypto_int64 f7g8_19 = f7   * (crypto_int64) g8_19;\n  crypto_int64 f7g9_38 = f7_2 * (crypto_int64) g9_19;\n  crypto_int64 f8g0    = f8   * (crypto_int64) g0;\n  crypto_int64 f8g1    = f8   * (crypto_int64) g1;\n  crypto_int64 f8g2_19 = f8   * (crypto_int64) g2_19;\n  crypto_int64 f8g3_19 = f8   * (crypto_int64) g3_19;\n  crypto_int64 f8g4_19 = f8   * (crypto_int64) g4_19;\n  crypto_int64 f8g5_19 = f8   * (crypto_int64) g5_19;\n  crypto_int64 f8g6_19 = f8   * (crypto_int64) g6_19;\n  crypto_int64 f8g7_19 = f8   * (crypto_int64) g7_19;\n  crypto_int64 f8g8_19 = f8   * (crypto_int64) g8_19;\n  crypto_int64 f8g9_19 = f8   * (crypto_int64) g9_19;\n  crypto_int64 f9g0    = f9   * (crypto_int64) g0;\n  crypto_int64 f9g1_38 = f9_2 * (crypto_int64) g1_19;\n  crypto_int64 f9g2_19 = f9   * (crypto_int64) g2_19;\n  crypto_int64 f9g3_38 = f9_2 * (crypto_int64) g3_19;\n  crypto_int64 f9g4_19 = f9   * (crypto_int64) g4_19;\n  crypto_int64 f9g5_38 = f9_2 * (crypto_int64) g5_19;\n  crypto_int64 f9g6_19 = f9   * (crypto_int64) g6_19;\n  crypto_int64 f9g7_38 = f9_2 * (crypto_int64) g7_19;\n  crypto_int64 f9g8_19 = f9   * (crypto_int64) g8_19;\n  crypto_int64 f9g9_38 = f9_2 * (crypto_int64) g9_19;\n  crypto_int64 h0 = f0g0+f1g9_38+f2g8_19+f3g7_38+f4g6_19+f5g5_38+f6g4_19+f7g3_38+f8g2_19+f9g1_38;\n  crypto_int64 h1 = f0g1+f1g0   +f2g9_19+f3g8_19+f4g7_19+f5g6_19+f6g5_19+f7g4_19+f8g3_19+f9g2_19;\n  crypto_int64 h2 = f0g2+f1g1_2 +f2g0   +f3g9_38+f4g8_19+f5g7_38+f6g6_19+f7g5_38+f8g4_19+f9g3_38;\n  crypto_int64 h3 = f0g3+f1g2   +f2g1   +f3g0   +f4g9_19+f5g8_19+f6g7_19+f7g6_19+f8g5_19+f9g4_19;\n  crypto_int64 h4 = f0g4+f1g3_2 +f2g2   +f3g1_2 +f4g0   +f5g9_38+f6g8_19+f7g7_38+f8g6_19+f9g5_38;\n  crypto_int64 h5 = f0g5+f1g4   +f2g3   +f3g2   +f4g1   +f5g0   +f6g9_19+f7g8_19+f8g7_19+f9g6_19;\n  crypto_int64 h6 = f0g6+f1g5_2 +f2g4   +f3g3_2 +f4g2   +f5g1_2 +f6g0   +f7g9_38+f8g8_19+f9g7_38;\n  crypto_int64 h7 = f0g7+f1g6   +f2g5   +f3g4   +f4g3   +f5g2   +f6g1   +f7g0   +f8g9_19+f9g8_19;\n  crypto_int64 h8 = f0g8+f1g7_2 +f2g6   +f3g5_2 +f4g4   +f5g3_2 +f6g2   +f7g1_2 +f8g0   +f9g9_38;\n  crypto_int64 h9 = f0g9+f1g8   +f2g7   +f3g6   +f4g5   +f5g4   +f6g3   +f7g2   +f8g1   +f9g0   ;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n\n  /*\n  |h0| <= (1.65*1.65*2^52*(1+19+19+19+19)+1.65*1.65*2^50*(38+38+38+38+38))\n    i.e. |h0| <= 1.4*2^60; narrower ranges for h2, h4, h6, h8\n  |h1| <= (1.65*1.65*2^51*(1+1+19+19+19+19+19+19+19+19))\n    i.e. |h1| <= 1.7*2^59; narrower ranges for h3, h5, h7, h9\n  */\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  /* |h0| <= 2^25 */\n  /* |h4| <= 2^25 */\n  /* |h1| <= 1.71*2^59 */\n  /* |h5| <= 1.71*2^59 */\n\n  carry1 = (h1 + (crypto_int64) (1<<24)) >> 25; h2 += carry1; h1 -= carry1 << 25;\n  carry5 = (h5 + (crypto_int64) (1<<24)) >> 25; h6 += carry5; h5 -= carry5 << 25;\n  /* |h1| <= 2^24; from now on fits into int32 */\n  /* |h5| <= 2^24; from now on fits into int32 */\n  /* |h2| <= 1.41*2^60 */\n  /* |h6| <= 1.41*2^60 */\n\n  carry2 = (h2 + (crypto_int64) (1<<25)) >> 26; h3 += carry2; h2 -= carry2 << 26;\n  carry6 = (h6 + (crypto_int64) (1<<25)) >> 26; h7 += carry6; h6 -= carry6 << 26;\n  /* |h2| <= 2^25; from now on fits into int32 unchanged */\n  /* |h6| <= 2^25; from now on fits into int32 unchanged */\n  /* |h3| <= 1.71*2^59 */\n  /* |h7| <= 1.71*2^59 */\n\n  carry3 = (h3 + (crypto_int64) (1<<24)) >> 25; h4 += carry3; h3 -= carry3 << 25;\n  carry7 = (h7 + (crypto_int64) (1<<24)) >> 25; h8 += carry7; h7 -= carry7 << 25;\n  /* |h3| <= 2^24; from now on fits into int32 unchanged */\n  /* |h7| <= 2^24; from now on fits into int32 unchanged */\n  /* |h4| <= 1.72*2^34 */\n  /* |h8| <= 1.41*2^60 */\n\n  carry4 = (h4 + (crypto_int64) (1<<25)) >> 26; h5 += carry4; h4 -= carry4 << 26;\n  carry8 = (h8 + (crypto_int64) (1<<25)) >> 26; h9 += carry8; h8 -= carry8 << 26;\n  /* |h4| <= 2^25; from now on fits into int32 unchanged */\n  /* |h8| <= 2^25; from now on fits into int32 unchanged */\n  /* |h5| <= 1.01*2^24 */\n  /* |h9| <= 1.71*2^59 */\n\n  carry9 = (h9 + (crypto_int64) (1<<24)) >> 25; h0 += carry9 * 19; h9 -= carry9 << 25;\n  /* |h9| <= 2^24; from now on fits into int32 unchanged */\n  /* |h0| <= 1.1*2^39 */\n\n  carry0 = (h0 + (crypto_int64) (1<<25)) >> 26; h1 += carry0; h0 -= carry0 << 26;\n  /* |h0| <= 2^25; from now on fits into int32 unchanged */\n  /* |h1| <= 1.01*2^24 */\n\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\n\n/*\nreturn 1 if f is in {1,3,5,...,q-2}\nreturn 0 if f is in {0,2,4,...,q-1}\n\nPreconditions:\n   |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n*/\n\nstatic int fe_isnegative(const fe f)\n{\n  unsigned char s[32];\n  fe_tobytes(s,f);\n  return s[0] & 1;\n}\n\n\n/*\nreturn 1 if f == 0\nreturn 0 if f != 0\n\nPreconditions:\n   |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\n*/\n\nstatic const unsigned char zero[32] = {0};\n\nstatic int fe_isnonzero(const fe f)\n{\n  unsigned char s[32];\n  fe_tobytes(s,f);\n  return crypto_verify_32(s,zero);\n}\n\n/*\nh = -f\n\nPreconditions:\n   |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n\nPostconditions:\n   |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\n*/\n\nstatic void fe_neg(fe h,const fe f)\n{\n  crypto_int32 f0 = f[0];\n  crypto_int32 f1 = f[1];\n  crypto_int32 f2 = f[2];\n  crypto_int32 f3 = f[3];\n  crypto_int32 f4 = f[4];\n  crypto_int32 f5 = f[5];\n  crypto_int32 f6 = f[6];\n  crypto_int32 f7 = f[7];\n  crypto_int32 f8 = f[8];\n  crypto_int32 f9 = f[9];\n  crypto_int32 h0 = -f0;\n  crypto_int32 h1 = -f1;\n  crypto_int32 h2 = -f2;\n  crypto_int32 h3 = -f3;\n  crypto_int32 h4 = -f4;\n  crypto_int32 h5 = -f5;\n  crypto_int32 h6 = -f6;\n  crypto_int32 h7 = -f7;\n  crypto_int32 h8 = -f8;\n  crypto_int32 h9 = -f9;\n  h[0] = h0;\n  h[1] = h1;\n  h[2] = h2;\n  h[3] = h3;\n  h[4] = h4;\n  h[5] = h5;\n  h[6] = h6;\n  h[7] = h7;\n  h[8] = h8;\n  h[9] = h9;\n}\n\nstatic void fe_invert(fe out,const fe z)\n{\n  fe t0;\n  fe t1;\n  fe t2;\n  fe t3;\n  int i;\n\n\n/* qhasm: fe z1 */\n\n/* qhasm: fe z2 */\n\n/* qhasm: fe z8 */\n\n/* qhasm: fe z9 */\n\n/* qhasm: fe z11 */\n\n/* qhasm: fe z22 */\n\n/* qhasm: fe z_5_0 */\n\n/* qhasm: fe z_10_5 */\n\n/* qhasm: fe z_10_0 */\n\n/* qhasm: fe z_20_10 */\n\n/* qhasm: fe z_20_0 */\n\n/* qhasm: fe z_40_20 */\n\n/* qhasm: fe z_40_0 */\n\n/* qhasm: fe z_50_10 */\n\n/* qhasm: fe z_50_0 */\n\n/* qhasm: fe z_100_50 */\n\n/* qhasm: fe z_100_0 */\n\n/* qhasm: fe z_200_100 */\n\n/* qhasm: fe z_200_0 */\n\n/* qhasm: fe z_250_50 */\n\n/* qhasm: fe z_250_0 */\n\n/* qhasm: fe z_255_5 */\n\n/* qhasm: fe z_255_21 */\n\n/* qhasm: enter pow225521 */\n\n/* qhasm: z2 = z1^2^1 */\n/* asm 1: fe_sq(>z2=fe#1,<z1=fe#11); for (i = 1;i < 1;++i) fe_sq(>z2=fe#1,>z2=fe#1); */\n/* asm 2: fe_sq(>z2=t0,<z1=z); for (i = 1;i < 1;++i) fe_sq(>z2=t0,>z2=t0); */\nfe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0);\n\n/* qhasm: z8 = z2^2^2 */\n/* asm 1: fe_sq(>z8=fe#2,<z2=fe#1); for (i = 1;i < 2;++i) fe_sq(>z8=fe#2,>z8=fe#2); */\n/* asm 2: fe_sq(>z8=t1,<z2=t0); for (i = 1;i < 2;++i) fe_sq(>z8=t1,>z8=t1); */\nfe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1);\n\n/* qhasm: z9 = z1*z8 */\n/* asm 1: fe_mul(>z9=fe#2,<z1=fe#11,<z8=fe#2); */\n/* asm 2: fe_mul(>z9=t1,<z1=z,<z8=t1); */\nfe_mul(t1,z,t1);\n\n/* qhasm: z11 = z2*z9 */\n/* asm 1: fe_mul(>z11=fe#1,<z2=fe#1,<z9=fe#2); */\n/* asm 2: fe_mul(>z11=t0,<z2=t0,<z9=t1); */\nfe_mul(t0,t0,t1);\n\n/* qhasm: z22 = z11^2^1 */\n/* asm 1: fe_sq(>z22=fe#3,<z11=fe#1); for (i = 1;i < 1;++i) fe_sq(>z22=fe#3,>z22=fe#3); */\n/* asm 2: fe_sq(>z22=t2,<z11=t0); for (i = 1;i < 1;++i) fe_sq(>z22=t2,>z22=t2); */\nfe_sq(t2,t0); for (i = 1;i < 1;++i) fe_sq(t2,t2);\n\n/* qhasm: z_5_0 = z9*z22 */\n/* asm 1: fe_mul(>z_5_0=fe#2,<z9=fe#2,<z22=fe#3); */\n/* asm 2: fe_mul(>z_5_0=t1,<z9=t1,<z22=t2); */\nfe_mul(t1,t1,t2);\n\n/* qhasm: z_10_5 = z_5_0^2^5 */\n/* asm 1: fe_sq(>z_10_5=fe#3,<z_5_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_10_5=fe#3,>z_10_5=fe#3); */\n/* asm 2: fe_sq(>z_10_5=t2,<z_5_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_10_5=t2,>z_10_5=t2); */\nfe_sq(t2,t1); for (i = 1;i < 5;++i) fe_sq(t2,t2);\n\n/* qhasm: z_10_0 = z_10_5*z_5_0 */\n/* asm 1: fe_mul(>z_10_0=fe#2,<z_10_5=fe#3,<z_5_0=fe#2); */\n/* asm 2: fe_mul(>z_10_0=t1,<z_10_5=t2,<z_5_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_20_10 = z_10_0^2^10 */\n/* asm 1: fe_sq(>z_20_10=fe#3,<z_10_0=fe#2); for (i = 1;i < 10;++i) fe_sq(>z_20_10=fe#3,>z_20_10=fe#3); */\n/* asm 2: fe_sq(>z_20_10=t2,<z_10_0=t1); for (i = 1;i < 10;++i) fe_sq(>z_20_10=t2,>z_20_10=t2); */\nfe_sq(t2,t1); for (i = 1;i < 10;++i) fe_sq(t2,t2);\n\n/* qhasm: z_20_0 = z_20_10*z_10_0 */\n/* asm 1: fe_mul(>z_20_0=fe#3,<z_20_10=fe#3,<z_10_0=fe#2); */\n/* asm 2: fe_mul(>z_20_0=t2,<z_20_10=t2,<z_10_0=t1); */\nfe_mul(t2,t2,t1);\n\n/* qhasm: z_40_20 = z_20_0^2^20 */\n/* asm 1: fe_sq(>z_40_20=fe#4,<z_20_0=fe#3); for (i = 1;i < 20;++i) fe_sq(>z_40_20=fe#4,>z_40_20=fe#4); */\n/* asm 2: fe_sq(>z_40_20=t3,<z_20_0=t2); for (i = 1;i < 20;++i) fe_sq(>z_40_20=t3,>z_40_20=t3); */\nfe_sq(t3,t2); for (i = 1;i < 20;++i) fe_sq(t3,t3);\n\n/* qhasm: z_40_0 = z_40_20*z_20_0 */\n/* asm 1: fe_mul(>z_40_0=fe#3,<z_40_20=fe#4,<z_20_0=fe#3); */\n/* asm 2: fe_mul(>z_40_0=t2,<z_40_20=t3,<z_20_0=t2); */\nfe_mul(t2,t3,t2);\n\n/* qhasm: z_50_10 = z_40_0^2^10 */\n/* asm 1: fe_sq(>z_50_10=fe#3,<z_40_0=fe#3); for (i = 1;i < 10;++i) fe_sq(>z_50_10=fe#3,>z_50_10=fe#3); */\n/* asm 2: fe_sq(>z_50_10=t2,<z_40_0=t2); for (i = 1;i < 10;++i) fe_sq(>z_50_10=t2,>z_50_10=t2); */\nfe_sq(t2,t2); for (i = 1;i < 10;++i) fe_sq(t2,t2);\n\n/* qhasm: z_50_0 = z_50_10*z_10_0 */\n/* asm 1: fe_mul(>z_50_0=fe#2,<z_50_10=fe#3,<z_10_0=fe#2); */\n/* asm 2: fe_mul(>z_50_0=t1,<z_50_10=t2,<z_10_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_100_50 = z_50_0^2^50 */\n/* asm 1: fe_sq(>z_100_50=fe#3,<z_50_0=fe#2); for (i = 1;i < 50;++i) fe_sq(>z_100_50=fe#3,>z_100_50=fe#3); */\n/* asm 2: fe_sq(>z_100_50=t2,<z_50_0=t1); for (i = 1;i < 50;++i) fe_sq(>z_100_50=t2,>z_100_50=t2); */\nfe_sq(t2,t1); for (i = 1;i < 50;++i) fe_sq(t2,t2);\n\n/* qhasm: z_100_0 = z_100_50*z_50_0 */\n/* asm 1: fe_mul(>z_100_0=fe#3,<z_100_50=fe#3,<z_50_0=fe#2); */\n/* asm 2: fe_mul(>z_100_0=t2,<z_100_50=t2,<z_50_0=t1); */\nfe_mul(t2,t2,t1);\n\n/* qhasm: z_200_100 = z_100_0^2^100 */\n/* asm 1: fe_sq(>z_200_100=fe#4,<z_100_0=fe#3); for (i = 1;i < 100;++i) fe_sq(>z_200_100=fe#4,>z_200_100=fe#4); */\n/* asm 2: fe_sq(>z_200_100=t3,<z_100_0=t2); for (i = 1;i < 100;++i) fe_sq(>z_200_100=t3,>z_200_100=t3); */\nfe_sq(t3,t2); for (i = 1;i < 100;++i) fe_sq(t3,t3);\n\n/* qhasm: z_200_0 = z_200_100*z_100_0 */\n/* asm 1: fe_mul(>z_200_0=fe#3,<z_200_100=fe#4,<z_100_0=fe#3); */\n/* asm 2: fe_mul(>z_200_0=t2,<z_200_100=t3,<z_100_0=t2); */\nfe_mul(t2,t3,t2);\n\n/* qhasm: z_250_50 = z_200_0^2^50 */\n/* asm 1: fe_sq(>z_250_50=fe#3,<z_200_0=fe#3); for (i = 1;i < 50;++i) fe_sq(>z_250_50=fe#3,>z_250_50=fe#3); */\n/* asm 2: fe_sq(>z_250_50=t2,<z_200_0=t2); for (i = 1;i < 50;++i) fe_sq(>z_250_50=t2,>z_250_50=t2); */\nfe_sq(t2,t2); for (i = 1;i < 50;++i) fe_sq(t2,t2);\n\n/* qhasm: z_250_0 = z_250_50*z_50_0 */\n/* asm 1: fe_mul(>z_250_0=fe#2,<z_250_50=fe#3,<z_50_0=fe#2); */\n/* asm 2: fe_mul(>z_250_0=t1,<z_250_50=t2,<z_50_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_255_5 = z_250_0^2^5 */\n/* asm 1: fe_sq(>z_255_5=fe#2,<z_250_0=fe#2); for (i = 1;i < 5;++i) fe_sq(>z_255_5=fe#2,>z_255_5=fe#2); */\n/* asm 2: fe_sq(>z_255_5=t1,<z_250_0=t1); for (i = 1;i < 5;++i) fe_sq(>z_255_5=t1,>z_255_5=t1); */\nfe_sq(t1,t1); for (i = 1;i < 5;++i) fe_sq(t1,t1);\n\n/* qhasm: z_255_21 = z_255_5*z11 */\n/* asm 1: fe_mul(>z_255_21=fe#12,<z_255_5=fe#2,<z11=fe#1); */\n/* asm 2: fe_mul(>z_255_21=out,<z_255_5=t1,<z11=t0); */\nfe_mul(out,t1,t0);\n\n/* qhasm: return */\n\n  return;\n}\n\n\nstatic void fe_pow22523(fe out,const fe z)\n{\n  fe t0;\n  fe t1;\n  fe t2;\n  int i;\n\n\n/* qhasm: fe z1 */\n\n/* qhasm: fe z2 */\n\n/* qhasm: fe z8 */\n\n/* qhasm: fe z9 */\n\n/* qhasm: fe z11 */\n\n/* qhasm: fe z22 */\n\n/* qhasm: fe z_5_0 */\n\n/* qhasm: fe z_10_5 */\n\n/* qhasm: fe z_10_0 */\n\n/* qhasm: fe z_20_10 */\n\n/* qhasm: fe z_20_0 */\n\n/* qhasm: fe z_40_20 */\n\n/* qhasm: fe z_40_0 */\n\n/* qhasm: fe z_50_10 */\n\n/* qhasm: fe z_50_0 */\n\n/* qhasm: fe z_100_50 */\n\n/* qhasm: fe z_100_0 */\n\n/* qhasm: fe z_200_100 */\n\n/* qhasm: fe z_200_0 */\n\n/* qhasm: fe z_250_50 */\n\n/* qhasm: fe z_250_0 */\n\n/* qhasm: fe z_252_2 */\n\n/* qhasm: fe z_252_3 */\n\n/* qhasm: enter pow22523 */\n\n/* qhasm: z2 = z1^2^1 */\n/* asm 1: fe_sq(>z2=fe#1,<z1=fe#11); for (i = 1;i < 1;++i) fe_sq(>z2=fe#1,>z2=fe#1); */\n/* asm 2: fe_sq(>z2=t0,<z1=z); for (i = 1;i < 1;++i) fe_sq(>z2=t0,>z2=t0); */\nfe_sq(t0,z); for (i = 1;i < 1;++i) fe_sq(t0,t0);\n\n/* qhasm: z8 = z2^2^2 */\n/* asm 1: fe_sq(>z8=fe#2,<z2=fe#1); for (i = 1;i < 2;++i) fe_sq(>z8=fe#2,>z8=fe#2); */\n/* asm 2: fe_sq(>z8=t1,<z2=t0); for (i = 1;i < 2;++i) fe_sq(>z8=t1,>z8=t1); */\nfe_sq(t1,t0); for (i = 1;i < 2;++i) fe_sq(t1,t1);\n\n/* qhasm: z9 = z1*z8 */\n/* asm 1: fe_mul(>z9=fe#2,<z1=fe#11,<z8=fe#2); */\n/* asm 2: fe_mul(>z9=t1,<z1=z,<z8=t1); */\nfe_mul(t1,z,t1);\n\n/* qhasm: z11 = z2*z9 */\n/* asm 1: fe_mul(>z11=fe#1,<z2=fe#1,<z9=fe#2); */\n/* asm 2: fe_mul(>z11=t0,<z2=t0,<z9=t1); */\nfe_mul(t0,t0,t1);\n\n/* qhasm: z22 = z11^2^1 */\n/* asm 1: fe_sq(>z22=fe#1,<z11=fe#1); for (i = 1;i < 1;++i) fe_sq(>z22=fe#1,>z22=fe#1); */\n/* asm 2: fe_sq(>z22=t0,<z11=t0); for (i = 1;i < 1;++i) fe_sq(>z22=t0,>z22=t0); */\nfe_sq(t0,t0); for (i = 1;i < 1;++i) fe_sq(t0,t0);\n\n/* qhasm: z_5_0 = z9*z22 */\n/* asm 1: fe_mul(>z_5_0=fe#1,<z9=fe#2,<z22=fe#1); */\n/* asm 2: fe_mul(>z_5_0=t0,<z9=t1,<z22=t0); */\nfe_mul(t0,t1,t0);\n\n/* qhasm: z_10_5 = z_5_0^2^5 */\n/* asm 1: fe_sq(>z_10_5=fe#2,<z_5_0=fe#1); for (i = 1;i < 5;++i) fe_sq(>z_10_5=fe#2,>z_10_5=fe#2); */\n/* asm 2: fe_sq(>z_10_5=t1,<z_5_0=t0); for (i = 1;i < 5;++i) fe_sq(>z_10_5=t1,>z_10_5=t1); */\nfe_sq(t1,t0); for (i = 1;i < 5;++i) fe_sq(t1,t1);\n\n/* qhasm: z_10_0 = z_10_5*z_5_0 */\n/* asm 1: fe_mul(>z_10_0=fe#1,<z_10_5=fe#2,<z_5_0=fe#1); */\n/* asm 2: fe_mul(>z_10_0=t0,<z_10_5=t1,<z_5_0=t0); */\nfe_mul(t0,t1,t0);\n\n/* qhasm: z_20_10 = z_10_0^2^10 */\n/* asm 1: fe_sq(>z_20_10=fe#2,<z_10_0=fe#1); for (i = 1;i < 10;++i) fe_sq(>z_20_10=fe#2,>z_20_10=fe#2); */\n/* asm 2: fe_sq(>z_20_10=t1,<z_10_0=t0); for (i = 1;i < 10;++i) fe_sq(>z_20_10=t1,>z_20_10=t1); */\nfe_sq(t1,t0); for (i = 1;i < 10;++i) fe_sq(t1,t1);\n\n/* qhasm: z_20_0 = z_20_10*z_10_0 */\n/* asm 1: fe_mul(>z_20_0=fe#2,<z_20_10=fe#2,<z_10_0=fe#1); */\n/* asm 2: fe_mul(>z_20_0=t1,<z_20_10=t1,<z_10_0=t0); */\nfe_mul(t1,t1,t0);\n\n/* qhasm: z_40_20 = z_20_0^2^20 */\n/* asm 1: fe_sq(>z_40_20=fe#3,<z_20_0=fe#2); for (i = 1;i < 20;++i) fe_sq(>z_40_20=fe#3,>z_40_20=fe#3); */\n/* asm 2: fe_sq(>z_40_20=t2,<z_20_0=t1); for (i = 1;i < 20;++i) fe_sq(>z_40_20=t2,>z_40_20=t2); */\nfe_sq(t2,t1); for (i = 1;i < 20;++i) fe_sq(t2,t2);\n\n/* qhasm: z_40_0 = z_40_20*z_20_0 */\n/* asm 1: fe_mul(>z_40_0=fe#2,<z_40_20=fe#3,<z_20_0=fe#2); */\n/* asm 2: fe_mul(>z_40_0=t1,<z_40_20=t2,<z_20_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_50_10 = z_40_0^2^10 */\n/* asm 1: fe_sq(>z_50_10=fe#2,<z_40_0=fe#2); for (i = 1;i < 10;++i) fe_sq(>z_50_10=fe#2,>z_50_10=fe#2); */\n/* asm 2: fe_sq(>z_50_10=t1,<z_40_0=t1); for (i = 1;i < 10;++i) fe_sq(>z_50_10=t1,>z_50_10=t1); */\nfe_sq(t1,t1); for (i = 1;i < 10;++i) fe_sq(t1,t1);\n\n/* qhasm: z_50_0 = z_50_10*z_10_0 */\n/* asm 1: fe_mul(>z_50_0=fe#1,<z_50_10=fe#2,<z_10_0=fe#1); */\n/* asm 2: fe_mul(>z_50_0=t0,<z_50_10=t1,<z_10_0=t0); */\nfe_mul(t0,t1,t0);\n\n/* qhasm: z_100_50 = z_50_0^2^50 */\n/* asm 1: fe_sq(>z_100_50=fe#2,<z_50_0=fe#1); for (i = 1;i < 50;++i) fe_sq(>z_100_50=fe#2,>z_100_50=fe#2); */\n/* asm 2: fe_sq(>z_100_50=t1,<z_50_0=t0); for (i = 1;i < 50;++i) fe_sq(>z_100_50=t1,>z_100_50=t1); */\nfe_sq(t1,t0); for (i = 1;i < 50;++i) fe_sq(t1,t1);\n\n/* qhasm: z_100_0 = z_100_50*z_50_0 */\n/* asm 1: fe_mul(>z_100_0=fe#2,<z_100_50=fe#2,<z_50_0=fe#1); */\n/* asm 2: fe_mul(>z_100_0=t1,<z_100_50=t1,<z_50_0=t0); */\nfe_mul(t1,t1,t0);\n\n/* qhasm: z_200_100 = z_100_0^2^100 */\n/* asm 1: fe_sq(>z_200_100=fe#3,<z_100_0=fe#2); for (i = 1;i < 100;++i) fe_sq(>z_200_100=fe#3,>z_200_100=fe#3); */\n/* asm 2: fe_sq(>z_200_100=t2,<z_100_0=t1); for (i = 1;i < 100;++i) fe_sq(>z_200_100=t2,>z_200_100=t2); */\nfe_sq(t2,t1); for (i = 1;i < 100;++i) fe_sq(t2,t2);\n\n/* qhasm: z_200_0 = z_200_100*z_100_0 */\n/* asm 1: fe_mul(>z_200_0=fe#2,<z_200_100=fe#3,<z_100_0=fe#2); */\n/* asm 2: fe_mul(>z_200_0=t1,<z_200_100=t2,<z_100_0=t1); */\nfe_mul(t1,t2,t1);\n\n/* qhasm: z_250_50 = z_200_0^2^50 */\n/* asm 1: fe_sq(>z_250_50=fe#2,<z_200_0=fe#2); for (i = 1;i < 50;++i) fe_sq(>z_250_50=fe#2,>z_250_50=fe#2); */\n/* asm 2: fe_sq(>z_250_50=t1,<z_200_0=t1); for (i = 1;i < 50;++i) fe_sq(>z_250_50=t1,>z_250_50=t1); */\nfe_sq(t1,t1); for (i = 1;i < 50;++i) fe_sq(t1,t1);\n\n/* qhasm: z_250_0 = z_250_50*z_50_0 */\n/* asm 1: fe_mul(>z_250_0=fe#1,<z_250_50=fe#2,<z_50_0=fe#1); */\n/* asm 2: fe_mul(>z_250_0=t0,<z_250_50=t1,<z_50_0=t0); */\nfe_mul(t0,t1,t0);\n\n/* qhasm: z_252_2 = z_250_0^2^2 */\n/* asm 1: fe_sq(>z_252_2=fe#1,<z_250_0=fe#1); for (i = 1;i < 2;++i) fe_sq(>z_252_2=fe#1,>z_252_2=fe#1); */\n/* asm 2: fe_sq(>z_252_2=t0,<z_250_0=t0); for (i = 1;i < 2;++i) fe_sq(>z_252_2=t0,>z_252_2=t0); */\nfe_sq(t0,t0); for (i = 1;i < 2;++i) fe_sq(t0,t0);\n\n/* qhasm: z_252_3 = z_252_2*z1 */\n/* asm 1: fe_mul(>z_252_3=fe#12,<z_252_2=fe#1,<z1=fe#11); */\n/* asm 2: fe_mul(>z_252_3=out,<z_252_2=t0,<z1=z); */\nfe_mul(out,t0,z);\n\n/* qhasm: return */\n\n\n  return;\n}\n\n\n/*\nge means group element.\n\nHere the group is the set of pairs (x,y) of field elements (see fe.h)\nsatisfying -x^2 + y^2 = 1 + d x^2y^2\nwhere d = -121665/121666.\n\nRepresentations:\n  ge_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z\n  ge_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT\n  ge_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T\n  ge_precomp (Duif): (y+x,y-x,2dxy)\n*/\n\ntypedef struct {\n  fe X;\n  fe Y;\n  fe Z;\n} ge_p2;\n\ntypedef struct {\n  fe X;\n  fe Y;\n  fe Z;\n  fe T;\n} ge_p3;\n\ntypedef struct {\n  fe X;\n  fe Y;\n  fe Z;\n  fe T;\n} ge_p1p1;\n\ntypedef struct {\n  fe yplusx;\n  fe yminusx;\n  fe xy2d;\n} ge_precomp;\n\ntypedef struct {\n  fe YplusX;\n  fe YminusX;\n  fe Z;\n  fe T2d;\n} ge_cached;\n\nstatic const fe d = {\n-10913610,13857413,-15372611,6949391,114729,-8787816,-6275908,-3247719,-18696448,-12055116\n} ;\n\nstatic const fe sqrtm1 = {\n-32595792,-7943725,9377950,3500415,12389472,-272473,-25146209,-2005654,326686,11406482\n} ;\n\nstatic const fe d2 = {\n-21827239,-5839606,-30745221,13898782,229458,15978800,-12551817,-6495438,29715968,9444199\n} ;\n\nstatic ge_precomp Bi[8] = {\n {\n  { 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 },\n  { -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 },\n  { -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 },\n },\n {\n  { 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 },\n  { 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 },\n  { 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 },\n },\n {\n  { 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 },\n  { 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 },\n  { 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 },\n },\n {\n  { 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 },\n  { -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 },\n  { 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 },\n },\n {\n  { -22518993,-6692182,14201702,-8745502,-23510406,8844726,18474211,-1361450,-13062696,13821877 },\n  { -6455177,-7839871,3374702,-4740862,-27098617,-10571707,31655028,-7212327,18853322,-14220951 },\n  { 4566830,-12963868,-28974889,-12240689,-7602672,-2830569,-8514358,-10431137,2207753,-3209784 },\n },\n {\n  { -25154831,-4185821,29681144,7868801,-6854661,-9423865,-12437364,-663000,-31111463,-16132436 },\n  { 25576264,-2703214,7349804,-11814844,16472782,9300885,3844789,15725684,171356,6466918 },\n  { 23103977,13316479,9739013,-16149481,817875,-15038942,8965339,-14088058,-30714912,16193877 },\n },\n {\n  { -33521811,3180713,-2394130,14003687,-16903474,-16270840,17238398,4729455,-18074513,9256800 },\n  { -25182317,-4174131,32336398,5036987,-21236817,11360617,22616405,9761698,-19827198,630305 },\n  { -13720693,2639453,-24237460,-7406481,9494427,-5774029,-6554551,-15960994,-2449256,-14291300 },\n },\n {\n  { -3151181,-5046075,9282714,6866145,-31907062,-863023,-18940575,15033784,25105118,-7894876 },\n  { -24326370,15950226,-31801215,-14592823,-11662737,-5090925,1573892,-2625887,2198790,-15804619 },\n  { -3099351,10324967,-2241613,7453183,-5446979,-2735503,-13812022,-16236442,-32461234,-12290683 },\n },\n} ;\n\n\n/* base[i][j] = (j+1)*256^i*B */\nstatic ge_precomp base[32][8] = {\n{\n {\n  { 25967493,-14356035,29566456,3660896,-12694345,4014787,27544626,-11754271,-6079156,2047605 },\n  { -12545711,934262,-2722910,3049990,-727428,9406986,12720692,5043384,19500929,-15469378 },\n  { -8738181,4489570,9688441,-14785194,10184609,-12363380,29287919,11864899,-24514362,-4438546 },\n },\n {\n  { -12815894,-12976347,-21581243,11784320,-25355658,-2750717,-11717903,-3814571,-358445,-10211303 },\n  { -21703237,6903825,27185491,6451973,-29577724,-9554005,-15616551,11189268,-26829678,-5319081 },\n  { 26966642,11152617,32442495,15396054,14353839,-12752335,-3128826,-9541118,-15472047,-4166697 },\n },\n {\n  { 15636291,-9688557,24204773,-7912398,616977,-16685262,27787600,-14772189,28944400,-1550024 },\n  { 16568933,4717097,-11556148,-1102322,15682896,-11807043,16354577,-11775962,7689662,11199574 },\n  { 30464156,-5976125,-11779434,-15670865,23220365,15915852,7512774,10017326,-17749093,-9920357 },\n },\n {\n  { -17036878,13921892,10945806,-6033431,27105052,-16084379,-28926210,15006023,3284568,-6276540 },\n  { 23599295,-8306047,-11193664,-7687416,13236774,10506355,7464579,9656445,13059162,10374397 },\n  { 7798556,16710257,3033922,2874086,28997861,2835604,32406664,-3839045,-641708,-101325 },\n },\n {\n  { 10861363,11473154,27284546,1981175,-30064349,12577861,32867885,14515107,-15438304,10819380 },\n  { 4708026,6336745,20377586,9066809,-11272109,6594696,-25653668,12483688,-12668491,5581306 },\n  { 19563160,16186464,-29386857,4097519,10237984,-4348115,28542350,13850243,-23678021,-15815942 },\n },\n {\n  { -15371964,-12862754,32573250,4720197,-26436522,5875511,-19188627,-15224819,-9818940,-12085777 },\n  { -8549212,109983,15149363,2178705,22900618,4543417,3044240,-15689887,1762328,14866737 },\n  { -18199695,-15951423,-10473290,1707278,-17185920,3916101,-28236412,3959421,27914454,4383652 },\n },\n {\n  { 5153746,9909285,1723747,-2777874,30523605,5516873,19480852,5230134,-23952439,-15175766 },\n  { -30269007,-3463509,7665486,10083793,28475525,1649722,20654025,16520125,30598449,7715701 },\n  { 28881845,14381568,9657904,3680757,-20181635,7843316,-31400660,1370708,29794553,-1409300 },\n },\n {\n  { 14499471,-2729599,-33191113,-4254652,28494862,14271267,30290735,10876454,-33154098,2381726 },\n  { -7195431,-2655363,-14730155,462251,-27724326,3941372,-6236617,3696005,-32300832,15351955 },\n  { 27431194,8222322,16448760,-3907995,-18707002,11938355,-32961401,-2970515,29551813,10109425 },\n },\n},\n{\n {\n  { -13657040,-13155431,-31283750,11777098,21447386,6519384,-2378284,-1627556,10092783,-4764171 },\n  { 27939166,14210322,4677035,16277044,-22964462,-12398139,-32508754,12005538,-17810127,12803510 },\n  { 17228999,-15661624,-1233527,300140,-1224870,-11714777,30364213,-9038194,18016357,4397660 },\n },\n {\n  { -10958843,-7690207,4776341,-14954238,27850028,-15602212,-26619106,14544525,-17477504,982639 },\n  { 29253598,15796703,-2863982,-9908884,10057023,3163536,7332899,-4120128,-21047696,9934963 },\n  { 5793303,16271923,-24131614,-10116404,29188560,1206517,-14747930,4559895,-30123922,-10897950 },\n },\n {\n  { -27643952,-11493006,16282657,-11036493,28414021,-15012264,24191034,4541697,-13338309,5500568 },\n  { 12650548,-1497113,9052871,11355358,-17680037,-8400164,-17430592,12264343,10874051,13524335 },\n  { 25556948,-3045990,714651,2510400,23394682,-10415330,33119038,5080568,-22528059,5376628 },\n },\n {\n  { -26088264,-4011052,-17013699,-3537628,-6726793,1920897,-22321305,-9447443,4535768,1569007 },\n  { -2255422,14606630,-21692440,-8039818,28430649,8775819,-30494562,3044290,31848280,12543772 },\n  { -22028579,2943893,-31857513,6777306,13784462,-4292203,-27377195,-2062731,7718482,14474653 },\n },\n {\n  { 2385315,2454213,-22631320,46603,-4437935,-15680415,656965,-7236665,24316168,-5253567 },\n  { 13741529,10911568,-33233417,-8603737,-20177830,-1033297,33040651,-13424532,-20729456,8321686 },\n  { 21060490,-2212744,15712757,-4336099,1639040,10656336,23845965,-11874838,-9984458,608372 },\n },\n {\n  { -13672732,-15087586,-10889693,-7557059,-6036909,11305547,1123968,-6780577,27229399,23887 },\n  { -23244140,-294205,-11744728,14712571,-29465699,-2029617,12797024,-6440308,-1633405,16678954 },\n  { -29500620,4770662,-16054387,14001338,7830047,9564805,-1508144,-4795045,-17169265,4904953 },\n },\n {\n  { 24059557,14617003,19037157,-15039908,19766093,-14906429,5169211,16191880,2128236,-4326833 },\n  { -16981152,4124966,-8540610,-10653797,30336522,-14105247,-29806336,916033,-6882542,-2986532 },\n  { -22630907,12419372,-7134229,-7473371,-16478904,16739175,285431,2763829,15736322,4143876 },\n },\n {\n  { 2379352,11839345,-4110402,-5988665,11274298,794957,212801,-14594663,23527084,-16458268 },\n  { 33431127,-11130478,-17838966,-15626900,8909499,8376530,-32625340,4087881,-15188911,-14416214 },\n  { 1767683,7197987,-13205226,-2022635,-13091350,448826,5799055,4357868,-4774191,-16323038 },\n },\n},\n{\n {\n  { 6721966,13833823,-23523388,-1551314,26354293,-11863321,23365147,-3949732,7390890,2759800 },\n  { 4409041,2052381,23373853,10530217,7676779,-12885954,21302353,-4264057,1244380,-12919645 },\n  { -4421239,7169619,4982368,-2957590,30256825,-2777540,14086413,9208236,15886429,16489664 },\n },\n {\n  { 1996075,10375649,14346367,13311202,-6874135,-16438411,-13693198,398369,-30606455,-712933 },\n  { -25307465,9795880,-2777414,14878809,-33531835,14780363,13348553,12076947,-30836462,5113182 },\n  { -17770784,11797796,31950843,13929123,-25888302,12288344,-30341101,-7336386,13847711,5387222 },\n },\n {\n  { -18582163,-3416217,17824843,-2340966,22744343,-10442611,8763061,3617786,-19600662,10370991 },\n  { 20246567,-14369378,22358229,-543712,18507283,-10413996,14554437,-8746092,32232924,16763880 },\n  { 9648505,10094563,26416693,14745928,-30374318,-6472621,11094161,15689506,3140038,-16510092 },\n },\n {\n  { -16160072,5472695,31895588,4744994,8823515,10365685,-27224800,9448613,-28774454,366295 },\n  { 19153450,11523972,-11096490,-6503142,-24647631,5420647,28344573,8041113,719605,11671788 },\n  { 8678025,2694440,-6808014,2517372,4964326,11152271,-15432916,-15266516,27000813,-10195553 },\n },\n {\n  { -15157904,7134312,8639287,-2814877,-7235688,10421742,564065,5336097,6750977,-14521026 },\n  { 11836410,-3979488,26297894,16080799,23455045,15735944,1695823,-8819122,8169720,16220347 },\n  { -18115838,8653647,17578566,-6092619,-8025777,-16012763,-11144307,-2627664,-5990708,-14166033 },\n },\n {\n  { -23308498,-10968312,15213228,-10081214,-30853605,-11050004,27884329,2847284,2655861,1738395 },\n  { -27537433,-14253021,-25336301,-8002780,-9370762,8129821,21651608,-3239336,-19087449,-11005278 },\n  { 1533110,3437855,23735889,459276,29970501,11335377,26030092,5821408,10478196,8544890 },\n },\n {\n  { 32173121,-16129311,24896207,3921497,22579056,-3410854,19270449,12217473,17789017,-3395995 },\n  { -30552961,-2228401,-15578829,-10147201,13243889,517024,15479401,-3853233,30460520,1052596 },\n  { -11614875,13323618,32618793,8175907,-15230173,12596687,27491595,-4612359,3179268,-9478891 },\n },\n {\n  { 31947069,-14366651,-4640583,-15339921,-15125977,-6039709,-14756777,-16411740,19072640,-9511060 },\n  { 11685058,11822410,3158003,-13952594,33402194,-4165066,5977896,-5215017,473099,5040608 },\n  { -20290863,8198642,-27410132,11602123,1290375,-2799760,28326862,1721092,-19558642,-3131606 },\n },\n},\n{\n {\n  { 7881532,10687937,7578723,7738378,-18951012,-2553952,21820786,8076149,-27868496,11538389 },\n  { -19935666,3899861,18283497,-6801568,-15728660,-11249211,8754525,7446702,-5676054,5797016 },\n  { -11295600,-3793569,-15782110,-7964573,12708869,-8456199,2014099,-9050574,-2369172,-5877341 },\n },\n {\n  { -22472376,-11568741,-27682020,1146375,18956691,16640559,1192730,-3714199,15123619,10811505 },\n  { 14352098,-3419715,-18942044,10822655,32750596,4699007,-70363,15776356,-28886779,-11974553 },\n  { -28241164,-8072475,-4978962,-5315317,29416931,1847569,-20654173,-16484855,4714547,-9600655 },\n },\n {\n  { 15200332,8368572,19679101,15970074,-31872674,1959451,24611599,-4543832,-11745876,12340220 },\n  { 12876937,-10480056,33134381,6590940,-6307776,14872440,9613953,8241152,15370987,9608631 },\n  { -4143277,-12014408,8446281,-391603,4407738,13629032,-7724868,15866074,-28210621,-8814099 },\n },\n {\n  { 26660628,-15677655,8393734,358047,-7401291,992988,-23904233,858697,20571223,8420556 },\n  { 14620715,13067227,-15447274,8264467,14106269,15080814,33531827,12516406,-21574435,-12476749 },\n  { 236881,10476226,57258,-14677024,6472998,2466984,17258519,7256740,8791136,15069930 },\n },\n {\n  { 1276410,-9371918,22949635,-16322807,-23493039,-5702186,14711875,4874229,-30663140,-2331391 },\n  { 5855666,4990204,-13711848,7294284,-7804282,1924647,-1423175,-7912378,-33069337,9234253 },\n  { 20590503,-9018988,31529744,-7352666,-2706834,10650548,31559055,-11609587,18979186,13396066 },\n },\n {\n  { 24474287,4968103,22267082,4407354,24063882,-8325180,-18816887,13594782,33514650,7021958 },\n  { -11566906,-6565505,-21365085,15928892,-26158305,4315421,-25948728,-3916677,-21480480,12868082 },\n  { -28635013,13504661,19988037,-2132761,21078225,6443208,-21446107,2244500,-12455797,-8089383 },\n },\n {\n  { -30595528,13793479,-5852820,319136,-25723172,-6263899,33086546,8957937,-15233648,5540521 },\n  { -11630176,-11503902,-8119500,-7643073,2620056,1022908,-23710744,-1568984,-16128528,-14962807 },\n  { 23152971,775386,27395463,14006635,-9701118,4649512,1689819,892185,-11513277,-15205948 },\n },\n {\n  { 9770129,9586738,26496094,4324120,1556511,-3550024,27453819,4763127,-19179614,5867134 },\n  { -32765025,1927590,31726409,-4753295,23962434,-16019500,27846559,5931263,-29749703,-16108455 },\n  { 27461885,-2977536,22380810,1815854,-23033753,-3031938,7283490,-15148073,-19526700,7734629 },\n },\n},\n{\n {\n  { -8010264,-9590817,-11120403,6196038,29344158,-13430885,7585295,-3176626,18549497,15302069 },\n  { -32658337,-6171222,-7672793,-11051681,6258878,13504381,10458790,-6418461,-8872242,8424746 },\n  { 24687205,8613276,-30667046,-3233545,1863892,-1830544,19206234,7134917,-11284482,-828919 },\n },\n {\n  { 11334899,-9218022,8025293,12707519,17523892,-10476071,10243738,-14685461,-5066034,16498837 },\n  { 8911542,6887158,-9584260,-6958590,11145641,-9543680,17303925,-14124238,6536641,10543906 },\n  { -28946384,15479763,-17466835,568876,-1497683,11223454,-2669190,-16625574,-27235709,8876771 },\n },\n {\n  { -25742899,-12566864,-15649966,-846607,-33026686,-796288,-33481822,15824474,-604426,-9039817 },\n  { 10330056,70051,7957388,-9002667,9764902,15609756,27698697,-4890037,1657394,3084098 },\n  { 10477963,-7470260,12119566,-13250805,29016247,-5365589,31280319,14396151,-30233575,15272409 },\n },\n {\n  { -12288309,3169463,28813183,16658753,25116432,-5630466,-25173957,-12636138,-25014757,1950504 },\n  { -26180358,9489187,11053416,-14746161,-31053720,5825630,-8384306,-8767532,15341279,8373727 },\n  { 28685821,7759505,-14378516,-12002860,-31971820,4079242,298136,-10232602,-2878207,15190420 },\n },\n {\n  { -32932876,13806336,-14337485,-15794431,-24004620,10940928,8669718,2742393,-26033313,-6875003 },\n  { -1580388,-11729417,-25979658,-11445023,-17411874,-10912854,9291594,-16247779,-12154742,6048605 },\n  { -30305315,14843444,1539301,11864366,20201677,1900163,13934231,5128323,11213262,9168384 },\n },\n {\n  { -26280513,11007847,19408960,-940758,-18592965,-4328580,-5088060,-11105150,20470157,-16398701 },\n  { -23136053,9282192,14855179,-15390078,-7362815,-14408560,-22783952,14461608,14042978,5230683 },\n  { 29969567,-2741594,-16711867,-8552442,9175486,-2468974,21556951,3506042,-5933891,-12449708 },\n },\n {\n  { -3144746,8744661,19704003,4581278,-20430686,6830683,-21284170,8971513,-28539189,15326563 },\n  { -19464629,10110288,-17262528,-3503892,-23500387,1355669,-15523050,15300988,-20514118,9168260 },\n  { -5353335,4488613,-23803248,16314347,7780487,-15638939,-28948358,9601605,33087103,-9011387 },\n },\n {\n  { -19443170,-15512900,-20797467,-12445323,-29824447,10229461,-27444329,-15000531,-5996870,15664672 },\n  { 23294591,-16632613,-22650781,-8470978,27844204,11461195,13099750,-2460356,18151676,13417686 },\n  { -24722913,-4176517,-31150679,5988919,-26858785,6685065,1661597,-12551441,15271676,-15452665 },\n },\n},\n{\n {\n  { 11433042,-13228665,8239631,-5279517,-1985436,-725718,-18698764,2167544,-6921301,-13440182 },\n  { -31436171,15575146,30436815,12192228,-22463353,9395379,-9917708,-8638997,12215110,12028277 },\n  { 14098400,6555944,23007258,5757252,-15427832,-12950502,30123440,4617780,-16900089,-655628 },\n },\n {\n  { -4026201,-15240835,11893168,13718664,-14809462,1847385,-15819999,10154009,23973261,-12684474 },\n  { -26531820,-3695990,-1908898,2534301,-31870557,-16550355,18341390,-11419951,32013174,-10103539 },\n  { -25479301,10876443,-11771086,-14625140,-12369567,1838104,21911214,6354752,4425632,-837822 },\n },\n {\n  { -10433389,-14612966,22229858,-3091047,-13191166,776729,-17415375,-12020462,4725005,14044970 },\n  { 19268650,-7304421,1555349,8692754,-21474059,-9910664,6347390,-1411784,-19522291,-16109756 },\n  { -24864089,12986008,-10898878,-5558584,-11312371,-148526,19541418,8180106,9282262,10282508 },\n },\n {\n  { -26205082,4428547,-8661196,-13194263,4098402,-14165257,15522535,8372215,5542595,-10702683 },\n  { -10562541,14895633,26814552,-16673850,-17480754,-2489360,-2781891,6993761,-18093885,10114655 },\n  { -20107055,-929418,31422704,10427861,-7110749,6150669,-29091755,-11529146,25953725,-106158 },\n },\n {\n  { -4234397,-8039292,-9119125,3046000,2101609,-12607294,19390020,6094296,-3315279,12831125 },\n  { -15998678,7578152,5310217,14408357,-33548620,-224739,31575954,6326196,7381791,-2421839 },\n  { -20902779,3296811,24736065,-16328389,18374254,7318640,6295303,8082724,-15362489,12339664 },\n },\n {\n  { 27724736,2291157,6088201,-14184798,1792727,5857634,13848414,15768922,25091167,14856294 },\n  { -18866652,8331043,24373479,8541013,-701998,-9269457,12927300,-12695493,-22182473,-9012899 },\n  { -11423429,-5421590,11632845,3405020,30536730,-11674039,-27260765,13866390,30146206,9142070 },\n },\n {\n  { 3924129,-15307516,-13817122,-10054960,12291820,-668366,-27702774,9326384,-8237858,4171294 },\n  { -15921940,16037937,6713787,16606682,-21612135,2790944,26396185,3731949,345228,-5462949 },\n  { -21327538,13448259,25284571,1143661,20614966,-8849387,2031539,-12391231,-16253183,-13582083 },\n },\n {\n  { 31016211,-16722429,26371392,-14451233,-5027349,14854137,17477601,3842657,28012650,-16405420 },\n  { -5075835,9368966,-8562079,-4600902,-15249953,6970560,-9189873,16292057,-8867157,3507940 },\n  { 29439664,3537914,23333589,6997794,-17555561,-11018068,-15209202,-15051267,-9164929,6580396 },\n },\n},\n{\n {\n  { -12185861,-7679788,16438269,10826160,-8696817,-6235611,17860444,-9273846,-2095802,9304567 },\n  { 20714564,-4336911,29088195,7406487,11426967,-5095705,14792667,-14608617,5289421,-477127 },\n  { -16665533,-10650790,-6160345,-13305760,9192020,-1802462,17271490,12349094,26939669,-3752294 },\n },\n {\n  { -12889898,9373458,31595848,16374215,21471720,13221525,-27283495,-12348559,-3698806,117887 },\n  { 22263325,-6560050,3984570,-11174646,-15114008,-566785,28311253,5358056,-23319780,541964 },\n  { 16259219,3261970,2309254,-15534474,-16885711,-4581916,24134070,-16705829,-13337066,-13552195 },\n },\n {\n  { 9378160,-13140186,-22845982,-12745264,28198281,-7244098,-2399684,-717351,690426,14876244 },\n  { 24977353,-314384,-8223969,-13465086,28432343,-1176353,-13068804,-12297348,-22380984,6618999 },\n  { -1538174,11685646,12944378,13682314,-24389511,-14413193,8044829,-13817328,32239829,-5652762 },\n },\n {\n  { -18603066,4762990,-926250,8885304,-28412480,-3187315,9781647,-10350059,32779359,5095274 },\n  { -33008130,-5214506,-32264887,-3685216,9460461,-9327423,-24601656,14506724,21639561,-2630236 },\n  { -16400943,-13112215,25239338,15531969,3987758,-4499318,-1289502,-6863535,17874574,558605 },\n },\n {\n  { -13600129,10240081,9171883,16131053,-20869254,9599700,33499487,5080151,2085892,5119761 },\n  { -22205145,-2519528,-16381601,414691,-25019550,2170430,30634760,-8363614,-31999993,-5759884 },\n  { -6845704,15791202,8550074,-1312654,29928809,-12092256,27534430,-7192145,-22351378,12961482 },\n },\n {\n  { -24492060,-9570771,10368194,11582341,-23397293,-2245287,16533930,8206996,-30194652,-5159638 },\n  { -11121496,-3382234,2307366,6362031,-135455,8868177,-16835630,7031275,7589640,8945490 },\n  { -32152748,8917967,6661220,-11677616,-1192060,-15793393,7251489,-11182180,24099109,-14456170 },\n },\n {\n  { 5019558,-7907470,4244127,-14714356,-26933272,6453165,-19118182,-13289025,-6231896,-10280736 },\n  { 10853594,10721687,26480089,5861829,-22995819,1972175,-1866647,-10557898,-3363451,-6441124 },\n  { -17002408,5906790,221599,-6563147,7828208,-13248918,24362661,-2008168,-13866408,7421392 },\n },\n {\n  { 8139927,-6546497,32257646,-5890546,30375719,1886181,-21175108,15441252,28826358,-4123029 },\n  { 6267086,9695052,7709135,-16603597,-32869068,-1886135,14795160,-7840124,13746021,-1742048 },\n  { 28584902,7787108,-6732942,-15050729,22846041,-7571236,-3181936,-363524,4771362,-8419958 },\n },\n},\n{\n {\n  { 24949256,6376279,-27466481,-8174608,-18646154,-9930606,33543569,-12141695,3569627,11342593 },\n  { 26514989,4740088,27912651,3697550,19331575,-11472339,6809886,4608608,7325975,-14801071 },\n  { -11618399,-14554430,-24321212,7655128,-1369274,5214312,-27400540,10258390,-17646694,-8186692 },\n },\n {\n  { 11431204,15823007,26570245,14329124,18029990,4796082,-31446179,15580664,9280358,-3973687 },\n  { -160783,-10326257,-22855316,-4304997,-20861367,-13621002,-32810901,-11181622,-15545091,4387441 },\n  { -20799378,12194512,3937617,-5805892,-27154820,9340370,-24513992,8548137,20617071,-7482001 },\n },\n {\n  { -938825,-3930586,-8714311,16124718,24603125,-6225393,-13775352,-11875822,24345683,10325460 },\n  { -19855277,-1568885,-22202708,8714034,14007766,6928528,16318175,-1010689,4766743,3552007 },\n  { -21751364,-16730916,1351763,-803421,-4009670,3950935,3217514,14481909,10988822,-3994762 },\n },\n {\n  { 15564307,-14311570,3101243,5684148,30446780,-8051356,12677127,-6505343,-8295852,13296005 },\n  { -9442290,6624296,-30298964,-11913677,-4670981,-2057379,31521204,9614054,-30000824,12074674 },\n  { 4771191,-135239,14290749,-13089852,27992298,14998318,-1413936,-1556716,29832613,-16391035 },\n },\n {\n  { 7064884,-7541174,-19161962,-5067537,-18891269,-2912736,25825242,5293297,-27122660,13101590 },\n  { -2298563,2439670,-7466610,1719965,-27267541,-16328445,32512469,-5317593,-30356070,-4190957 },\n  { -30006540,10162316,-33180176,3981723,-16482138,-13070044,14413974,9515896,19568978,9628812 },\n },\n {\n  { 33053803,199357,15894591,1583059,27380243,-4580435,-17838894,-6106839,-6291786,3437740 },\n  { -18978877,3884493,19469877,12726490,15913552,13614290,-22961733,70104,7463304,4176122 },\n  { -27124001,10659917,11482427,-16070381,12771467,-6635117,-32719404,-5322751,24216882,5944158 },\n },\n {\n  { 8894125,7450974,-2664149,-9765752,-28080517,-12389115,19345746,14680796,11632993,5847885 },\n  { 26942781,-2315317,9129564,-4906607,26024105,11769399,-11518837,6367194,-9727230,4782140 },\n  { 19916461,-4828410,-22910704,-11414391,25606324,-5972441,33253853,8220911,6358847,-1873857 },\n },\n {\n  { 801428,-2081702,16569428,11065167,29875704,96627,7908388,-4480480,-13538503,1387155 },\n  { 19646058,5720633,-11416706,12814209,11607948,12749789,14147075,15156355,-21866831,11835260 },\n  { 19299512,1155910,28703737,14890794,2925026,7269399,26121523,15467869,-26560550,5052483 },\n },\n},\n{\n {\n  { -3017432,10058206,1980837,3964243,22160966,12322533,-6431123,-12618185,12228557,-7003677 },\n  { 32944382,14922211,-22844894,5188528,21913450,-8719943,4001465,13238564,-6114803,8653815 },\n  { 22865569,-4652735,27603668,-12545395,14348958,8234005,24808405,5719875,28483275,2841751 },\n },\n {\n  { -16420968,-1113305,-327719,-12107856,21886282,-15552774,-1887966,-315658,19932058,-12739203 },\n  { -11656086,10087521,-8864888,-5536143,-19278573,-3055912,3999228,13239134,-4777469,-13910208 },\n  { 1382174,-11694719,17266790,9194690,-13324356,9720081,20403944,11284705,-14013818,3093230 },\n },\n {\n  { 16650921,-11037932,-1064178,1570629,-8329746,7352753,-302424,16271225,-24049421,-6691850 },\n  { -21911077,-5927941,-4611316,-5560156,-31744103,-10785293,24123614,15193618,-21652117,-16739389 },\n  { -9935934,-4289447,-25279823,4372842,2087473,10399484,31870908,14690798,17361620,11864968 },\n },\n {\n  { -11307610,6210372,13206574,5806320,-29017692,-13967200,-12331205,-7486601,-25578460,-16240689 },\n  { 14668462,-12270235,26039039,15305210,25515617,4542480,10453892,6577524,9145645,-6443880 },\n  { 5974874,3053895,-9433049,-10385191,-31865124,3225009,-7972642,3936128,-5652273,-3050304 },\n },\n {\n  { 30625386,-4729400,-25555961,-12792866,-20484575,7695099,17097188,-16303496,-27999779,1803632 },\n  { -3553091,9865099,-5228566,4272701,-5673832,-16689700,14911344,12196514,-21405489,7047412 },\n  { 20093277,9920966,-11138194,-5343857,13161587,12044805,-32856851,4124601,-32343828,-10257566 },\n },\n {\n  { -20788824,14084654,-13531713,7842147,19119038,-13822605,4752377,-8714640,-21679658,2288038 },\n  { -26819236,-3283715,29965059,3039786,-14473765,2540457,29457502,14625692,-24819617,12570232 },\n  { -1063558,-11551823,16920318,12494842,1278292,-5869109,-21159943,-3498680,-11974704,4724943 },\n },\n {\n  { 17960970,-11775534,-4140968,-9702530,-8876562,-1410617,-12907383,-8659932,-29576300,1903856 },\n  { 23134274,-14279132,-10681997,-1611936,20684485,15770816,-12989750,3190296,26955097,14109738 },\n  { 15308788,5320727,-30113809,-14318877,22902008,7767164,29425325,-11277562,31960942,11934971 },\n },\n {\n  { -27395711,8435796,4109644,12222639,-24627868,14818669,20638173,4875028,10491392,1379718 },\n  { -13159415,9197841,3875503,-8936108,-1383712,-5879801,33518459,16176658,21432314,12180697 },\n  { -11787308,11500838,13787581,-13832590,-22430679,10140205,1465425,12689540,-10301319,-13872883 },\n },\n},\n{\n {\n  { 5414091,-15386041,-21007664,9643570,12834970,1186149,-2622916,-1342231,26128231,6032912 },\n  { -26337395,-13766162,32496025,-13653919,17847801,-12669156,3604025,8316894,-25875034,-10437358 },\n  { 3296484,6223048,24680646,-12246460,-23052020,5903205,-8862297,-4639164,12376617,3188849 },\n },\n {\n  { 29190488,-14659046,27549113,-1183516,3520066,-10697301,32049515,-7309113,-16109234,-9852307 },\n  { -14744486,-9309156,735818,-598978,-20407687,-5057904,25246078,-15795669,18640741,-960977 },\n  { -6928835,-16430795,10361374,5642961,4910474,12345252,-31638386,-494430,10530747,1053335 },\n },\n {\n  { -29265967,-14186805,-13538216,-12117373,-19457059,-10655384,-31462369,-2948985,24018831,15026644 },\n  { -22592535,-3145277,-2289276,5953843,-13440189,9425631,25310643,13003497,-2314791,-15145616 },\n  { -27419985,-603321,-8043984,-1669117,-26092265,13987819,-27297622,187899,-23166419,-2531735 },\n },\n {\n  { -21744398,-13810475,1844840,5021428,-10434399,-15911473,9716667,16266922,-5070217,726099 },\n  { 29370922,-6053998,7334071,-15342259,9385287,2247707,-13661962,-4839461,30007388,-15823341 },\n  { -936379,16086691,23751945,-543318,-1167538,-5189036,9137109,730663,9835848,4555336 },\n },\n {\n  { -23376435,1410446,-22253753,-12899614,30867635,15826977,17693930,544696,-11985298,12422646 },\n  { 31117226,-12215734,-13502838,6561947,-9876867,-12757670,-5118685,-4096706,29120153,13924425 },\n  { -17400879,-14233209,19675799,-2734756,-11006962,-5858820,-9383939,-11317700,7240931,-237388 },\n },\n {\n  { -31361739,-11346780,-15007447,-5856218,-22453340,-12152771,1222336,4389483,3293637,-15551743 },\n  { -16684801,-14444245,11038544,11054958,-13801175,-3338533,-24319580,7733547,12796905,-6335822 },\n  { -8759414,-10817836,-25418864,10783769,-30615557,-9746811,-28253339,3647836,3222231,-11160462 },\n },\n {\n  { 18606113,1693100,-25448386,-15170272,4112353,10045021,23603893,-2048234,-7550776,2484985 },\n  { 9255317,-3131197,-12156162,-1004256,13098013,-9214866,16377220,-2102812,-19802075,-3034702 },\n  { -22729289,7496160,-5742199,11329249,19991973,-3347502,-31718148,9936966,-30097688,-10618797 },\n },\n {\n  { 21878590,-5001297,4338336,13643897,-3036865,13160960,19708896,5415497,-7360503,-4109293 },\n  { 27736861,10103576,12500508,8502413,-3413016,-9633558,10436918,-1550276,-23659143,-8132100 },\n  { 19492550,-12104365,-29681976,-852630,-3208171,12403437,30066266,8367329,13243957,8709688 },\n },\n},\n{\n {\n  { 12015105,2801261,28198131,10151021,24818120,-4743133,-11194191,-5645734,5150968,7274186 },\n  { 2831366,-12492146,1478975,6122054,23825128,-12733586,31097299,6083058,31021603,-9793610 },\n  { -2529932,-2229646,445613,10720828,-13849527,-11505937,-23507731,16354465,15067285,-14147707 },\n },\n {\n  { 7840942,14037873,-33364863,15934016,-728213,-3642706,21403988,1057586,-19379462,-12403220 },\n  { 915865,-16469274,15608285,-8789130,-24357026,6060030,-17371319,8410997,-7220461,16527025 },\n  { 32922597,-556987,20336074,-16184568,10903705,-5384487,16957574,52992,23834301,6588044 },\n },\n {\n  { 32752030,11232950,3381995,-8714866,22652988,-10744103,17159699,16689107,-20314580,-1305992 },\n  { -4689649,9166776,-25710296,-10847306,11576752,12733943,7924251,-2752281,1976123,-7249027 },\n  { 21251222,16309901,-2983015,-6783122,30810597,12967303,156041,-3371252,12331345,-8237197 },\n },\n {\n  { 8651614,-4477032,-16085636,-4996994,13002507,2950805,29054427,-5106970,10008136,-4667901 },\n  { 31486080,15114593,-14261250,12951354,14369431,-7387845,16347321,-13662089,8684155,-10532952 },\n  { 19443825,11385320,24468943,-9659068,-23919258,2187569,-26263207,-6086921,31316348,14219878 },\n },\n {\n  { -28594490,1193785,32245219,11392485,31092169,15722801,27146014,6992409,29126555,9207390 },\n  { 32382935,1110093,18477781,11028262,-27411763,-7548111,-4980517,10843782,-7957600,-14435730 },\n  { 2814918,7836403,27519878,-7868156,-20894015,-11553689,-21494559,8550130,28346258,1994730 },\n },\n {\n  { -19578299,8085545,-14000519,-3948622,2785838,-16231307,-19516951,7174894,22628102,8115180 },\n  { -30405132,955511,-11133838,-15078069,-32447087,-13278079,-25651578,3317160,-9943017,930272 },\n  { -15303681,-6833769,28856490,1357446,23421993,1057177,24091212,-1388970,-22765376,-10650715 },\n },\n {\n  { -22751231,-5303997,-12907607,-12768866,-15811511,-7797053,-14839018,-16554220,-1867018,8398970 },\n  { -31969310,2106403,-4736360,1362501,12813763,16200670,22981545,-6291273,18009408,-15772772 },\n  { -17220923,-9545221,-27784654,14166835,29815394,7444469,29551787,-3727419,19288549,1325865 },\n },\n {\n  { 15100157,-15835752,-23923978,-1005098,-26450192,15509408,12376730,-3479146,33166107,-8042750 },\n  { 20909231,13023121,-9209752,16251778,-5778415,-8094914,12412151,10018715,2213263,-13878373 },\n  { 32529814,-11074689,30361439,-16689753,-9135940,1513226,22922121,6382134,-5766928,8371348 },\n },\n},\n{\n {\n  { 9923462,11271500,12616794,3544722,-29998368,-1721626,12891687,-8193132,-26442943,10486144 },\n  { -22597207,-7012665,8587003,-8257861,4084309,-12970062,361726,2610596,-23921530,-11455195 },\n  { 5408411,-1136691,-4969122,10561668,24145918,14240566,31319731,-4235541,19985175,-3436086 },\n },\n {\n  { -13994457,16616821,14549246,3341099,32155958,13648976,-17577068,8849297,65030,8370684 },\n  { -8320926,-12049626,31204563,5839400,-20627288,-1057277,-19442942,6922164,12743482,-9800518 },\n  { -2361371,12678785,28815050,4759974,-23893047,4884717,23783145,11038569,18800704,255233 },\n },\n {\n  { -5269658,-1773886,13957886,7990715,23132995,728773,13393847,9066957,19258688,-14753793 },\n  { -2936654,-10827535,-10432089,14516793,-3640786,4372541,-31934921,2209390,-1524053,2055794 },\n  { 580882,16705327,5468415,-2683018,-30926419,-14696000,-7203346,-8994389,-30021019,7394435 },\n },\n {\n  { 23838809,1822728,-15738443,15242727,8318092,-3733104,-21672180,-3492205,-4821741,14799921 },\n  { 13345610,9759151,3371034,-16137791,16353039,8577942,31129804,13496856,-9056018,7402518 },\n  { 2286874,-4435931,-20042458,-2008336,-13696227,5038122,11006906,-15760352,8205061,1607563 },\n },\n {\n  { 14414086,-8002132,3331830,-3208217,22249151,-5594188,18364661,-2906958,30019587,-9029278 },\n  { -27688051,1585953,-10775053,931069,-29120221,-11002319,-14410829,12029093,9944378,8024 },\n  { 4368715,-3709630,29874200,-15022983,-20230386,-11410704,-16114594,-999085,-8142388,5640030 },\n },\n {\n  { 10299610,13746483,11661824,16234854,7630238,5998374,9809887,-16694564,15219798,-14327783 },\n  { 27425505,-5719081,3055006,10660664,23458024,595578,-15398605,-1173195,-18342183,9742717 },\n  { 6744077,2427284,26042789,2720740,-847906,1118974,32324614,7406442,12420155,1994844 },\n },\n {\n  { 14012521,-5024720,-18384453,-9578469,-26485342,-3936439,-13033478,-10909803,24319929,-6446333 },\n  { 16412690,-4507367,10772641,15929391,-17068788,-4658621,10555945,-10484049,-30102368,-4739048 },\n  { 22397382,-7767684,-9293161,-12792868,17166287,-9755136,-27333065,6199366,21880021,-12250760 },\n },\n {\n  { -4283307,5368523,-31117018,8163389,-30323063,3209128,16557151,8890729,8840445,4957760 },\n  { -15447727,709327,-6919446,-10870178,-29777922,6522332,-21720181,12130072,-14796503,5005757 },\n  { -2114751,-14308128,23019042,15765735,-25269683,6002752,10183197,-13239326,-16395286,-2176112 },\n },\n},\n{\n {\n  { -19025756,1632005,13466291,-7995100,-23640451,16573537,-32013908,-3057104,22208662,2000468 },\n  { 3065073,-1412761,-25598674,-361432,-17683065,-5703415,-8164212,11248527,-3691214,-7414184 },\n  { 10379208,-6045554,8877319,1473647,-29291284,-12507580,16690915,2553332,-3132688,16400289 },\n },\n {\n  { 15716668,1254266,-18472690,7446274,-8448918,6344164,-22097271,-7285580,26894937,9132066 },\n  { 24158887,12938817,11085297,-8177598,-28063478,-4457083,-30576463,64452,-6817084,-2692882 },\n  { 13488534,7794716,22236231,5989356,25426474,-12578208,2350710,-3418511,-4688006,2364226 },\n },\n {\n  { 16335052,9132434,25640582,6678888,1725628,8517937,-11807024,-11697457,15445875,-7798101 },\n  { 29004207,-7867081,28661402,-640412,-12794003,-7943086,31863255,-4135540,-278050,-15759279 },\n  { -6122061,-14866665,-28614905,14569919,-10857999,-3591829,10343412,-6976290,-29828287,-10815811 },\n },\n {\n  { 27081650,3463984,14099042,-4517604,1616303,-6205604,29542636,15372179,17293797,960709 },\n  { 20263915,11434237,-5765435,11236810,13505955,-10857102,-16111345,6493122,-19384511,7639714 },\n  { -2830798,-14839232,25403038,-8215196,-8317012,-16173699,18006287,-16043750,29994677,-15808121 },\n },\n {\n  { 9769828,5202651,-24157398,-13631392,-28051003,-11561624,-24613141,-13860782,-31184575,709464 },\n  { 12286395,13076066,-21775189,-1176622,-25003198,4057652,-32018128,-8890874,16102007,13205847 },\n  { 13733362,5599946,10557076,3195751,-5557991,8536970,-25540170,8525972,10151379,10394400 },\n },\n {\n  { 4024660,-16137551,22436262,12276534,-9099015,-2686099,19698229,11743039,-33302334,8934414 },\n  { -15879800,-4525240,-8580747,-2934061,14634845,-698278,-9449077,3137094,-11536886,11721158 },\n  { 17555939,-5013938,8268606,2331751,-22738815,9761013,9319229,8835153,-9205489,-1280045 },\n },\n {\n  { -461409,-7830014,20614118,16688288,-7514766,-4807119,22300304,505429,6108462,-6183415 },\n  { -5070281,12367917,-30663534,3234473,32617080,-8422642,29880583,-13483331,-26898490,-7867459 },\n  { -31975283,5726539,26934134,10237677,-3173717,-605053,24199304,3795095,7592688,-14992079 },\n },\n {\n  { 21594432,-14964228,17466408,-4077222,32537084,2739898,6407723,12018833,-28256052,4298412 },\n  { -20650503,-11961496,-27236275,570498,3767144,-1717540,13891942,-1569194,13717174,10805743 },\n  { -14676630,-15644296,15287174,11927123,24177847,-8175568,-796431,14860609,-26938930,-5863836 },\n },\n},\n{\n {\n  { 12962541,5311799,-10060768,11658280,18855286,-7954201,13286263,-12808704,-4381056,9882022 },\n  { 18512079,11319350,-20123124,15090309,18818594,5271736,-22727904,3666879,-23967430,-3299429 },\n  { -6789020,-3146043,16192429,13241070,15898607,-14206114,-10084880,-6661110,-2403099,5276065 },\n },\n {\n  { 30169808,-5317648,26306206,-11750859,27814964,7069267,7152851,3684982,1449224,13082861 },\n  { 10342826,3098505,2119311,193222,25702612,12233820,23697382,15056736,-21016438,-8202000 },\n  { -33150110,3261608,22745853,7948688,19370557,-15177665,-26171976,6482814,-10300080,-11060101 },\n },\n {\n  { 32869458,-5408545,25609743,15678670,-10687769,-15471071,26112421,2521008,-22664288,6904815 },\n  { 29506923,4457497,3377935,-9796444,-30510046,12935080,1561737,3841096,-29003639,-6657642 },\n  { 10340844,-6630377,-18656632,-2278430,12621151,-13339055,30878497,-11824370,-25584551,5181966 },\n },\n {\n  { 25940115,-12658025,17324188,-10307374,-8671468,15029094,24396252,-16450922,-2322852,-12388574 },\n  { -21765684,9916823,-1300409,4079498,-1028346,11909559,1782390,12641087,20603771,-6561742 },\n  { -18882287,-11673380,24849422,11501709,13161720,-4768874,1925523,11914390,4662781,7820689 },\n },\n {\n  { 12241050,-425982,8132691,9393934,32846760,-1599620,29749456,12172924,16136752,15264020 },\n  { -10349955,-14680563,-8211979,2330220,-17662549,-14545780,10658213,6671822,19012087,3772772 },\n  { 3753511,-3421066,10617074,2028709,14841030,-6721664,28718732,-15762884,20527771,12988982 },\n },\n {\n  { -14822485,-5797269,-3707987,12689773,-898983,-10914866,-24183046,-10564943,3299665,-12424953 },\n  { -16777703,-15253301,-9642417,4978983,3308785,8755439,6943197,6461331,-25583147,8991218 },\n  { -17226263,1816362,-1673288,-6086439,31783888,-8175991,-32948145,7417950,-30242287,1507265 },\n },\n {\n  { 29692663,6829891,-10498800,4334896,20945975,-11906496,-28887608,8209391,14606362,-10647073 },\n  { -3481570,8707081,32188102,5672294,22096700,1711240,-33020695,9761487,4170404,-2085325 },\n  { -11587470,14855945,-4127778,-1531857,-26649089,15084046,22186522,16002000,-14276837,-8400798 },\n },\n {\n  { -4811456,13761029,-31703877,-2483919,-3312471,7869047,-7113572,-9620092,13240845,10965870 },\n  { -7742563,-8256762,-14768334,-13656260,-23232383,12387166,4498947,14147411,29514390,4302863 },\n  { -13413405,-12407859,20757302,-13801832,14785143,8976368,-5061276,-2144373,17846988,-13971927 },\n },\n},\n{\n {\n  { -2244452,-754728,-4597030,-1066309,-6247172,1455299,-21647728,-9214789,-5222701,12650267 },\n  { -9906797,-16070310,21134160,12198166,-27064575,708126,387813,13770293,-19134326,10958663 },\n  { 22470984,12369526,23446014,-5441109,-21520802,-9698723,-11772496,-11574455,-25083830,4271862 },\n },\n {\n  { -25169565,-10053642,-19909332,15361595,-5984358,2159192,75375,-4278529,-32526221,8469673 },\n  { 15854970,4148314,-8893890,7259002,11666551,13824734,-30531198,2697372,24154791,-9460943 },\n  { 15446137,-15806644,29759747,14019369,30811221,-9610191,-31582008,12840104,24913809,9815020 },\n },\n {\n  { -4709286,-5614269,-31841498,-12288893,-14443537,10799414,-9103676,13438769,18735128,9466238 },\n  { 11933045,9281483,5081055,-5183824,-2628162,-4905629,-7727821,-10896103,-22728655,16199064 },\n  { 14576810,379472,-26786533,-8317236,-29426508,-10812974,-102766,1876699,30801119,2164795 },\n },\n {\n  { 15995086,3199873,13672555,13712240,-19378835,-4647646,-13081610,-15496269,-13492807,1268052 },\n  { -10290614,-3659039,-3286592,10948818,23037027,3794475,-3470338,-12600221,-17055369,3565904 },\n  { 29210088,-9419337,-5919792,-4952785,10834811,-13327726,-16512102,-10820713,-27162222,-14030531 },\n },\n {\n  { -13161890,15508588,16663704,-8156150,-28349942,9019123,-29183421,-3769423,2244111,-14001979 },\n  { -5152875,-3800936,-9306475,-6071583,16243069,14684434,-25673088,-16180800,13491506,4641841 },\n  { 10813417,643330,-19188515,-728916,30292062,-16600078,27548447,-7721242,14476989,-12767431 },\n },\n {\n  { 10292079,9984945,6481436,8279905,-7251514,7032743,27282937,-1644259,-27912810,12651324 },\n  { -31185513,-813383,22271204,11835308,10201545,15351028,17099662,3988035,21721536,-3148940 },\n  { 10202177,-6545839,-31373232,-9574638,-32150642,-8119683,-12906320,3852694,13216206,14842320 },\n },\n {\n  { -15815640,-10601066,-6538952,-7258995,-6984659,-6581778,-31500847,13765824,-27434397,9900184 },\n  { 14465505,-13833331,-32133984,-14738873,-27443187,12990492,33046193,15796406,-7051866,-8040114 },\n  { 30924417,-8279620,6359016,-12816335,16508377,9071735,-25488601,15413635,9524356,-7018878 },\n },\n {\n  { 12274201,-13175547,32627641,-1785326,6736625,13267305,5237659,-5109483,15663516,4035784 },\n  { -2951309,8903985,17349946,601635,-16432815,-4612556,-13732739,-15889334,-22258478,4659091 },\n  { -16916263,-4952973,-30393711,-15158821,20774812,15897498,5736189,15026997,-2178256,-13455585 },\n },\n},\n{\n {\n  { -8858980,-2219056,28571666,-10155518,-474467,-10105698,-3801496,278095,23440562,-290208 },\n  { 10226241,-5928702,15139956,120818,-14867693,5218603,32937275,11551483,-16571960,-7442864 },\n  { 17932739,-12437276,-24039557,10749060,11316803,7535897,22503767,5561594,-3646624,3898661 },\n },\n {\n  { 7749907,-969567,-16339731,-16464,-25018111,15122143,-1573531,7152530,21831162,1245233 },\n  { 26958459,-14658026,4314586,8346991,-5677764,11960072,-32589295,-620035,-30402091,-16716212 },\n  { -12165896,9166947,33491384,13673479,29787085,13096535,6280834,14587357,-22338025,13987525 },\n },\n {\n  { -24349909,7778775,21116000,15572597,-4833266,-5357778,-4300898,-5124639,-7469781,-2858068 },\n  { 9681908,-6737123,-31951644,13591838,-6883821,386950,31622781,6439245,-14581012,4091397 },\n  { -8426427,1470727,-28109679,-1596990,3978627,-5123623,-19622683,12092163,29077877,-14741988 },\n },\n {\n  { 5269168,-6859726,-13230211,-8020715,25932563,1763552,-5606110,-5505881,-20017847,2357889 },\n  { 32264008,-15407652,-5387735,-1160093,-2091322,-3946900,23104804,-12869908,5727338,189038 },\n  { 14609123,-8954470,-6000566,-16622781,-14577387,-7743898,-26745169,10942115,-25888931,-14884697 },\n },\n {\n  { 20513500,5557931,-15604613,7829531,26413943,-2019404,-21378968,7471781,13913677,-5137875 },\n  { -25574376,11967826,29233242,12948236,-6754465,4713227,-8940970,14059180,12878652,8511905 },\n  { -25656801,3393631,-2955415,-7075526,-2250709,9366908,-30223418,6812974,5568676,-3127656 },\n },\n {\n  { 11630004,12144454,2116339,13606037,27378885,15676917,-17408753,-13504373,-14395196,8070818 },\n  { 27117696,-10007378,-31282771,-5570088,1127282,12772488,-29845906,10483306,-11552749,-1028714 },\n  { 10637467,-5688064,5674781,1072708,-26343588,-6982302,-1683975,9177853,-27493162,15431203 },\n },\n {\n  { 20525145,10892566,-12742472,12779443,-29493034,16150075,-28240519,14943142,-15056790,-7935931 },\n  { -30024462,5626926,-551567,-9981087,753598,11981191,25244767,-3239766,-3356550,9594024 },\n  { -23752644,2636870,-5163910,-10103818,585134,7877383,11345683,-6492290,13352335,-10977084 },\n },\n {\n  { -1931799,-5407458,3304649,-12884869,17015806,-4877091,-29783850,-7752482,-13215537,-319204 },\n  { 20239939,6607058,6203985,3483793,-18386976,-779229,-20723742,15077870,-22750759,14523817 },\n  { 27406042,-6041657,27423596,-4497394,4996214,10002360,-28842031,-4545494,-30172742,-4805667 },\n },\n},\n{\n {\n  { 11374242,12660715,17861383,-12540833,10935568,1099227,-13886076,-9091740,-27727044,11358504 },\n  { -12730809,10311867,1510375,10778093,-2119455,-9145702,32676003,11149336,-26123651,4985768 },\n  { -19096303,341147,-6197485,-239033,15756973,-8796662,-983043,13794114,-19414307,-15621255 },\n },\n {\n  { 6490081,11940286,25495923,-7726360,8668373,-8751316,3367603,6970005,-1691065,-9004790 },\n  { 1656497,13457317,15370807,6364910,13605745,8362338,-19174622,-5475723,-16796596,-5031438 },\n  { -22273315,-13524424,-64685,-4334223,-18605636,-10921968,-20571065,-7007978,-99853,-10237333 },\n },\n {\n  { 17747465,10039260,19368299,-4050591,-20630635,-16041286,31992683,-15857976,-29260363,-5511971 },\n  { 31932027,-4986141,-19612382,16366580,22023614,88450,11371999,-3744247,4882242,-10626905 },\n  { 29796507,37186,19818052,10115756,-11829032,3352736,18551198,3272828,-5190932,-4162409 },\n },\n {\n  { 12501286,4044383,-8612957,-13392385,-32430052,5136599,-19230378,-3529697,330070,-3659409 },\n  { 6384877,2899513,17807477,7663917,-2358888,12363165,25366522,-8573892,-271295,12071499 },\n  { -8365515,-4042521,25133448,-4517355,-6211027,2265927,-32769618,1936675,-5159697,3829363 },\n },\n {\n  { 28425966,-5835433,-577090,-4697198,-14217555,6870930,7921550,-6567787,26333140,14267664 },\n  { -11067219,11871231,27385719,-10559544,-4585914,-11189312,10004786,-8709488,-21761224,8930324 },\n  { -21197785,-16396035,25654216,-1725397,12282012,11008919,1541940,4757911,-26491501,-16408940 },\n },\n {\n  { 13537262,-7759490,-20604840,10961927,-5922820,-13218065,-13156584,6217254,-15943699,13814990 },\n  { -17422573,15157790,18705543,29619,24409717,-260476,27361681,9257833,-1956526,-1776914 },\n  { -25045300,-10191966,15366585,15166509,-13105086,8423556,-29171540,12361135,-18685978,4578290 },\n },\n {\n  { 24579768,3711570,1342322,-11180126,-27005135,14124956,-22544529,14074919,21964432,8235257 },\n  { -6528613,-2411497,9442966,-5925588,12025640,-1487420,-2981514,-1669206,13006806,2355433 },\n  { -16304899,-13605259,-6632427,-5142349,16974359,-10911083,27202044,1719366,1141648,-12796236 },\n },\n {\n  { -12863944,-13219986,-8318266,-11018091,-6810145,-4843894,13475066,-3133972,32674895,13715045 },\n  { 11423335,-5468059,32344216,8962751,24989809,9241752,-13265253,16086212,-28740881,-15642093 },\n  { -1409668,12530728,-6368726,10847387,19531186,-14132160,-11709148,7791794,-27245943,4383347 },\n },\n},\n{\n {\n  { -28970898,5271447,-1266009,-9736989,-12455236,16732599,-4862407,-4906449,27193557,6245191 },\n  { -15193956,5362278,-1783893,2695834,4960227,12840725,23061898,3260492,22510453,8577507 },\n  { -12632451,11257346,-32692994,13548177,-721004,10879011,31168030,13952092,-29571492,-3635906 },\n },\n {\n  { 3877321,-9572739,32416692,5405324,-11004407,-13656635,3759769,11935320,5611860,8164018 },\n  { -16275802,14667797,15906460,12155291,-22111149,-9039718,32003002,-8832289,5773085,-8422109 },\n  { -23788118,-8254300,1950875,8937633,18686727,16459170,-905725,12376320,31632953,190926 },\n },\n {\n  { -24593607,-16138885,-8423991,13378746,14162407,6901328,-8288749,4508564,-25341555,-3627528 },\n  { 8884438,-5884009,6023974,10104341,-6881569,-4941533,18722941,-14786005,-1672488,827625 },\n  { -32720583,-16289296,-32503547,7101210,13354605,2659080,-1800575,-14108036,-24878478,1541286 },\n },\n {\n  { 2901347,-1117687,3880376,-10059388,-17620940,-3612781,-21802117,-3567481,20456845,-1885033 },\n  { 27019610,12299467,-13658288,-1603234,-12861660,-4861471,-19540150,-5016058,29439641,15138866 },\n  { 21536104,-6626420,-32447818,-10690208,-22408077,5175814,-5420040,-16361163,7779328,109896 },\n },\n {\n  { 30279744,14648750,-8044871,6425558,13639621,-743509,28698390,12180118,23177719,-554075 },\n  { 26572847,3405927,-31701700,12890905,-19265668,5335866,-6493768,2378492,4439158,-13279347 },\n  { -22716706,3489070,-9225266,-332753,18875722,-1140095,14819434,-12731527,-17717757,-5461437 },\n },\n {\n  { -5056483,16566551,15953661,3767752,-10436499,15627060,-820954,2177225,8550082,-15114165 },\n  { -18473302,16596775,-381660,15663611,22860960,15585581,-27844109,-3582739,-23260460,-8428588 },\n  { -32480551,15707275,-8205912,-5652081,29464558,2713815,-22725137,15860482,-21902570,1494193 },\n },\n {\n  { -19562091,-14087393,-25583872,-9299552,13127842,759709,21923482,16529112,8742704,12967017 },\n  { -28464899,1553205,32536856,-10473729,-24691605,-406174,-8914625,-2933896,-29903758,15553883 },\n  { 21877909,3230008,9881174,10539357,-4797115,2841332,11543572,14513274,19375923,-12647961 },\n },\n {\n  { 8832269,-14495485,13253511,5137575,5037871,4078777,24880818,-6222716,2862653,9455043 },\n  { 29306751,5123106,20245049,-14149889,9592566,8447059,-2077124,-2990080,15511449,4789663 },\n  { -20679756,7004547,8824831,-9434977,-4045704,-3750736,-5754762,108893,23513200,16652362 },\n },\n},\n{\n {\n  { -33256173,4144782,-4476029,-6579123,10770039,-7155542,-6650416,-12936300,-18319198,10212860 },\n  { 2756081,8598110,7383731,-6859892,22312759,-1105012,21179801,2600940,-9988298,-12506466 },\n  { -24645692,13317462,-30449259,-15653928,21365574,-10869657,11344424,864440,-2499677,-16710063 },\n },\n {\n  { -26432803,6148329,-17184412,-14474154,18782929,-275997,-22561534,211300,2719757,4940997 },\n  { -1323882,3911313,-6948744,14759765,-30027150,7851207,21690126,8518463,26699843,5276295 },\n  { -13149873,-6429067,9396249,365013,24703301,-10488939,1321586,149635,-15452774,7159369 },\n },\n {\n  { 9987780,-3404759,17507962,9505530,9731535,-2165514,22356009,8312176,22477218,-8403385 },\n  { 18155857,-16504990,19744716,9006923,15154154,-10538976,24256460,-4864995,-22548173,9334109 },\n  { 2986088,-4911893,10776628,-3473844,10620590,-7083203,-21413845,14253545,-22587149,536906 },\n },\n {\n  { 4377756,8115836,24567078,15495314,11625074,13064599,7390551,10589625,10838060,-15420424 },\n  { -19342404,867880,9277171,-3218459,-14431572,-1986443,19295826,-15796950,6378260,699185 },\n  { 7895026,4057113,-7081772,-13077756,-17886831,-323126,-716039,15693155,-5045064,-13373962 },\n },\n {\n  { -7737563,-5869402,-14566319,-7406919,11385654,13201616,31730678,-10962840,-3918636,-9669325 },\n  { 10188286,-15770834,-7336361,13427543,22223443,14896287,30743455,7116568,-21786507,5427593 },\n  { 696102,13206899,27047647,-10632082,15285305,-9853179,10798490,-4578720,19236243,12477404 },\n },\n {\n  { -11229439,11243796,-17054270,-8040865,-788228,-8167967,-3897669,11180504,-23169516,7733644 },\n  { 17800790,-14036179,-27000429,-11766671,23887827,3149671,23466177,-10538171,10322027,15313801 },\n  { 26246234,11968874,32263343,-5468728,6830755,-13323031,-15794704,-101982,-24449242,10890804 },\n },\n {\n  { -31365647,10271363,-12660625,-6267268,16690207,-13062544,-14982212,16484931,25180797,-5334884 },\n  { -586574,10376444,-32586414,-11286356,19801893,10997610,2276632,9482883,316878,13820577 },\n  { -9882808,-4510367,-2115506,16457136,-11100081,11674996,30756178,-7515054,30696930,-3712849 },\n },\n {\n  { 32988917,-9603412,12499366,7910787,-10617257,-11931514,-7342816,-9985397,-32349517,7392473 },\n  { -8855661,15927861,9866406,-3649411,-2396914,-16655781,-30409476,-9134995,25112947,-2926644 },\n  { -2504044,-436966,25621774,-5678772,15085042,-5479877,-24884878,-13526194,5537438,-13914319 },\n },\n},\n{\n {\n  { -11225584,2320285,-9584280,10149187,-33444663,5808648,-14876251,-1729667,31234590,6090599 },\n  { -9633316,116426,26083934,2897444,-6364437,-2688086,609721,15878753,-6970405,-9034768 },\n  { -27757857,247744,-15194774,-9002551,23288161,-10011936,-23869595,6503646,20650474,1804084 },\n },\n {\n  { -27589786,15456424,8972517,8469608,15640622,4439847,3121995,-10329713,27842616,-202328 },\n  { -15306973,2839644,22530074,10026331,4602058,5048462,28248656,5031932,-11375082,12714369 },\n  { 20807691,-7270825,29286141,11421711,-27876523,-13868230,-21227475,1035546,-19733229,12796920 },\n },\n {\n  { 12076899,-14301286,-8785001,-11848922,-25012791,16400684,-17591495,-12899438,3480665,-15182815 },\n  { -32361549,5457597,28548107,7833186,7303070,-11953545,-24363064,-15921875,-33374054,2771025 },\n  { -21389266,421932,26597266,6860826,22486084,-6737172,-17137485,-4210226,-24552282,15673397 },\n },\n {\n  { -20184622,2338216,19788685,-9620956,-4001265,-8740893,-20271184,4733254,3727144,-12934448 },\n  { 6120119,814863,-11794402,-622716,6812205,-15747771,2019594,7975683,31123697,-10958981 },\n  { 30069250,-11435332,30434654,2958439,18399564,-976289,12296869,9204260,-16432438,9648165 },\n },\n {\n  { 32705432,-1550977,30705658,7451065,-11805606,9631813,3305266,5248604,-26008332,-11377501 },\n  { 17219865,2375039,-31570947,-5575615,-19459679,9219903,294711,15298639,2662509,-16297073 },\n  { -1172927,-7558695,-4366770,-4287744,-21346413,-8434326,32087529,-1222777,32247248,-14389861 },\n },\n {\n  { 14312628,1221556,17395390,-8700143,-4945741,-8684635,-28197744,-9637817,-16027623,-13378845 },\n  { -1428825,-9678990,-9235681,6549687,-7383069,-468664,23046502,9803137,17597934,2346211 },\n  { 18510800,15337574,26171504,981392,-22241552,7827556,-23491134,-11323352,3059833,-11782870 },\n },\n {\n  { 10141598,6082907,17829293,-1947643,9830092,13613136,-25556636,-5544586,-33502212,3592096 },\n  { 33114168,-15889352,-26525686,-13343397,33076705,8716171,1151462,1521897,-982665,-6837803 },\n  { -32939165,-4255815,23947181,-324178,-33072974,-12305637,-16637686,3891704,26353178,693168 },\n },\n {\n  { 30374239,1595580,-16884039,13186931,4600344,406904,9585294,-400668,31375464,14369965 },\n  { -14370654,-7772529,1510301,6434173,-18784789,-6262728,32732230,-13108839,17901441,16011505 },\n  { 18171223,-11934626,-12500402,15197122,-11038147,-15230035,-19172240,-16046376,8764035,12309598 },\n },\n},\n{\n {\n  { 5975908,-5243188,-19459362,-9681747,-11541277,14015782,-23665757,1228319,17544096,-10593782 },\n  { 5811932,-1715293,3442887,-2269310,-18367348,-8359541,-18044043,-15410127,-5565381,12348900 },\n  { -31399660,11407555,25755363,6891399,-3256938,14872274,-24849353,8141295,-10632534,-585479 },\n },\n {\n  { -12675304,694026,-5076145,13300344,14015258,-14451394,-9698672,-11329050,30944593,1130208 },\n  { 8247766,-6710942,-26562381,-7709309,-14401939,-14648910,4652152,2488540,23550156,-271232 },\n  { 17294316,-3788438,7026748,15626851,22990044,113481,2267737,-5908146,-408818,-137719 },\n },\n {\n  { 16091085,-16253926,18599252,7340678,2137637,-1221657,-3364161,14550936,3260525,-7166271 },\n  { -4910104,-13332887,18550887,10864893,-16459325,-7291596,-23028869,-13204905,-12748722,2701326 },\n  { -8574695,16099415,4629974,-16340524,-20786213,-6005432,-10018363,9276971,11329923,1862132 },\n },\n {\n  { 14763076,-15903608,-30918270,3689867,3511892,10313526,-21951088,12219231,-9037963,-940300 },\n  { 8894987,-3446094,6150753,3013931,301220,15693451,-31981216,-2909717,-15438168,11595570 },\n  { 15214962,3537601,-26238722,-14058872,4418657,-15230761,13947276,10730794,-13489462,-4363670 },\n },\n {\n  { -2538306,7682793,32759013,263109,-29984731,-7955452,-22332124,-10188635,977108,699994 },\n  { -12466472,4195084,-9211532,550904,-15565337,12917920,19118110,-439841,-30534533,-14337913 },\n  { 31788461,-14507657,4799989,7372237,8808585,-14747943,9408237,-10051775,12493932,-5409317 },\n },\n {\n  { -25680606,5260744,-19235809,-6284470,-3695942,16566087,27218280,2607121,29375955,6024730 },\n  { 842132,-2794693,-4763381,-8722815,26332018,-12405641,11831880,6985184,-9940361,2854096 },\n  { -4847262,-7969331,2516242,-5847713,9695691,-7221186,16512645,960770,12121869,16648078 },\n },\n {\n  { -15218652,14667096,-13336229,2013717,30598287,-464137,-31504922,-7882064,20237806,2838411 },\n  { -19288047,4453152,15298546,-16178388,22115043,-15972604,12544294,-13470457,1068881,-12499905 },\n  { -9558883,-16518835,33238498,13506958,30505848,-1114596,-8486907,-2630053,12521378,4845654 },\n },\n {\n  { -28198521,10744108,-2958380,10199664,7759311,-13088600,3409348,-873400,-6482306,-12885870 },\n  { -23561822,6230156,-20382013,10655314,-24040585,-11621172,10477734,-1240216,-3113227,13974498 },\n  { 12966261,15550616,-32038948,-1615346,21025980,-629444,5642325,7188737,18895762,12629579 },\n },\n},\n{\n {\n  { 14741879,-14946887,22177208,-11721237,1279741,8058600,11758140,789443,32195181,3895677 },\n  { 10758205,15755439,-4509950,9243698,-4879422,6879879,-2204575,-3566119,-8982069,4429647 },\n  { -2453894,15725973,-20436342,-10410672,-5803908,-11040220,-7135870,-11642895,18047436,-15281743 },\n },\n {\n  { -25173001,-11307165,29759956,11776784,-22262383,-15820455,10993114,-12850837,-17620701,-9408468 },\n  { 21987233,700364,-24505048,14972008,-7774265,-5718395,32155026,2581431,-29958985,8773375 },\n  { -25568350,454463,-13211935,16126715,25240068,8594567,20656846,12017935,-7874389,-13920155 },\n },\n {\n  { 6028182,6263078,-31011806,-11301710,-818919,2461772,-31841174,-5468042,-1721788,-2776725 },\n  { -12278994,16624277,987579,-5922598,32908203,1248608,7719845,-4166698,28408820,6816612 },\n  { -10358094,-8237829,19549651,-12169222,22082623,16147817,20613181,13982702,-10339570,5067943 },\n },\n {\n  { -30505967,-3821767,12074681,13582412,-19877972,2443951,-19719286,12746132,5331210,-10105944 },\n  { 30528811,3601899,-1957090,4619785,-27361822,-15436388,24180793,-12570394,27679908,-1648928 },\n  { 9402404,-13957065,32834043,10838634,-26580150,-13237195,26653274,-8685565,22611444,-12715406 },\n },\n {\n  { 22190590,1118029,22736441,15130463,-30460692,-5991321,19189625,-4648942,4854859,6622139 },\n  { -8310738,-2953450,-8262579,-3388049,-10401731,-271929,13424426,-3567227,26404409,13001963 },\n  { -31241838,-15415700,-2994250,8939346,11562230,-12840670,-26064365,-11621720,-15405155,11020693 },\n },\n {\n  { 1866042,-7949489,-7898649,-10301010,12483315,13477547,3175636,-12424163,28761762,1406734 },\n  { -448555,-1777666,13018551,3194501,-9580420,-11161737,24760585,-4347088,25577411,-13378680 },\n  { -24290378,4759345,-690653,-1852816,2066747,10693769,-29595790,9884936,-9368926,4745410 },\n },\n {\n  { -9141284,6049714,-19531061,-4341411,-31260798,9944276,-15462008,-11311852,10931924,-11931931 },\n  { -16561513,14112680,-8012645,4817318,-8040464,-11414606,-22853429,10856641,-20470770,13434654 },\n  { 22759489,-10073434,-16766264,-1871422,13637442,-10168091,1765144,-12654326,28445307,-5364710 },\n },\n {\n  { 29875063,12493613,2795536,-3786330,1710620,15181182,-10195717,-8788675,9074234,1167180 },\n  { -26205683,11014233,-9842651,-2635485,-26908120,7532294,-18716888,-9535498,3843903,9367684 },\n  { -10969595,-6403711,9591134,9582310,11349256,108879,16235123,8601684,-139197,4242895 },\n },\n},\n{\n {\n  { 22092954,-13191123,-2042793,-11968512,32186753,-11517388,-6574341,2470660,-27417366,16625501 },\n  { -11057722,3042016,13770083,-9257922,584236,-544855,-7770857,2602725,-27351616,14247413 },\n  { 6314175,-10264892,-32772502,15957557,-10157730,168750,-8618807,14290061,27108877,-1180880 },\n },\n {\n  { -8586597,-7170966,13241782,10960156,-32991015,-13794596,33547976,-11058889,-27148451,981874 },\n  { 22833440,9293594,-32649448,-13618667,-9136966,14756819,-22928859,-13970780,-10479804,-16197962 },\n  { -7768587,3326786,-28111797,10783824,19178761,14905060,22680049,13906969,-15933690,3797899 },\n },\n {\n  { 21721356,-4212746,-12206123,9310182,-3882239,-13653110,23740224,-2709232,20491983,-8042152 },\n  { 9209270,-15135055,-13256557,-6167798,-731016,15289673,25947805,15286587,30997318,-6703063 },\n  { 7392032,16618386,23946583,-8039892,-13265164,-1533858,-14197445,-2321576,17649998,-250080 },\n },\n {\n  { -9301088,-14193827,30609526,-3049543,-25175069,-1283752,-15241566,-9525724,-2233253,7662146 },\n  { -17558673,1763594,-33114336,15908610,-30040870,-12174295,7335080,-8472199,-3174674,3440183 },\n  { -19889700,-5977008,-24111293,-9688870,10799743,-16571957,40450,-4431835,4862400,1133 },\n },\n {\n  { -32856209,-7873957,-5422389,14860950,-16319031,7956142,7258061,311861,-30594991,-7379421 },\n  { -3773428,-1565936,28985340,7499440,24445838,9325937,29727763,16527196,18278453,15405622 },\n  { -4381906,8508652,-19898366,-3674424,-5984453,15149970,-13313598,843523,-21875062,13626197 },\n },\n {\n  { 2281448,-13487055,-10915418,-2609910,1879358,16164207,-10783882,3953792,13340839,15928663 },\n  { 31727126,-7179855,-18437503,-8283652,2875793,-16390330,-25269894,-7014826,-23452306,5964753 },\n  { 4100420,-5959452,-17179337,6017714,-18705837,12227141,-26684835,11344144,2538215,-7570755 },\n },\n {\n  { -9433605,6123113,11159803,-2156608,30016280,14966241,-20474983,1485421,-629256,-15958862 },\n  { -26804558,4260919,11851389,9658551,-32017107,16367492,-20205425,-13191288,11659922,-11115118 },\n  { 26180396,10015009,-30844224,-8581293,5418197,9480663,2231568,-10170080,33100372,-1306171 },\n },\n {\n  { 15121113,-5201871,-10389905,15427821,-27509937,-15992507,21670947,4486675,-5931810,-14466380 },\n  { 16166486,-9483733,-11104130,6023908,-31926798,-1364923,2340060,-16254968,-10735770,-10039824 },\n  { 28042865,-3557089,-12126526,12259706,-3717498,-6945899,6766453,-8689599,18036436,5803270 },\n },\n},\n{\n {\n  { -817581,6763912,11803561,1585585,10958447,-2671165,23855391,4598332,-6159431,-14117438 },\n  { -31031306,-14256194,17332029,-2383520,31312682,-5967183,696309,50292,-20095739,11763584 },\n  { -594563,-2514283,-32234153,12643980,12650761,14811489,665117,-12613632,-19773211,-10713562 },\n },\n {\n  { 30464590,-11262872,-4127476,-12734478,19835327,-7105613,-24396175,2075773,-17020157,992471 },\n  { 18357185,-6994433,7766382,16342475,-29324918,411174,14578841,8080033,-11574335,-10601610 },\n  { 19598397,10334610,12555054,2555664,18821899,-10339780,21873263,16014234,26224780,16452269 },\n },\n {\n  { -30223925,5145196,5944548,16385966,3976735,2009897,-11377804,-7618186,-20533829,3698650 },\n  { 14187449,3448569,-10636236,-10810935,-22663880,-3433596,7268410,-10890444,27394301,12015369 },\n  { 19695761,16087646,28032085,12999827,6817792,11427614,20244189,-1312777,-13259127,-3402461 },\n },\n {\n  { 30860103,12735208,-1888245,-4699734,-16974906,2256940,-8166013,12298312,-8550524,-10393462 },\n  { -5719826,-11245325,-1910649,15569035,26642876,-7587760,-5789354,-15118654,-4976164,12651793 },\n  { -2848395,9953421,11531313,-5282879,26895123,-12697089,-13118820,-16517902,9768698,-2533218 },\n },\n {\n  { -24719459,1894651,-287698,-4704085,15348719,-8156530,32767513,12765450,4940095,10678226 },\n  { 18860224,15980149,-18987240,-1562570,-26233012,-11071856,-7843882,13944024,-24372348,16582019 },\n  { -15504260,4970268,-29893044,4175593,-20993212,-2199756,-11704054,15444560,-11003761,7989037 },\n },\n {\n  { 31490452,5568061,-2412803,2182383,-32336847,4531686,-32078269,6200206,-19686113,-14800171 },\n  { -17308668,-15879940,-31522777,-2831,-32887382,16375549,8680158,-16371713,28550068,-6857132 },\n  { -28126887,-5688091,16837845,-1820458,-6850681,12700016,-30039981,4364038,1155602,5988841 },\n },\n {\n  { 21890435,-13272907,-12624011,12154349,-7831873,15300496,23148983,-4470481,24618407,8283181 },\n  { -33136107,-10512751,9975416,6841041,-31559793,16356536,3070187,-7025928,1466169,10740210 },\n  { -1509399,-15488185,-13503385,-10655916,32799044,909394,-13938903,-5779719,-32164649,-15327040 },\n },\n {\n  { 3960823,-14267803,-28026090,-15918051,-19404858,13146868,15567327,951507,-3260321,-573935 },\n  { 24740841,5052253,-30094131,8961361,25877428,6165135,-24368180,14397372,-7380369,-6144105 },\n  { -28888365,3510803,-28103278,-1158478,-11238128,-10631454,-15441463,-14453128,-1625486,-6494814 },\n },\n},\n{\n {\n  { 793299,-9230478,8836302,-6235707,-27360908,-2369593,33152843,-4885251,-9906200,-621852 },\n  { 5666233,525582,20782575,-8038419,-24538499,14657740,16099374,1468826,-6171428,-15186581 },\n  { -4859255,-3779343,-2917758,-6748019,7778750,11688288,-30404353,-9871238,-1558923,-9863646 },\n },\n {\n  { 10896332,-7719704,824275,472601,-19460308,3009587,25248958,14783338,-30581476,-15757844 },\n  { 10566929,12612572,-31944212,11118703,-12633376,12362879,21752402,8822496,24003793,14264025 },\n  { 27713862,-7355973,-11008240,9227530,27050101,2504721,23886875,-13117525,13958495,-5732453 },\n },\n {\n  { -23481610,4867226,-27247128,3900521,29838369,-8212291,-31889399,-10041781,7340521,-15410068 },\n  { 4646514,-8011124,-22766023,-11532654,23184553,8566613,31366726,-1381061,-15066784,-10375192 },\n  { -17270517,12723032,-16993061,14878794,21619651,-6197576,27584817,3093888,-8843694,3849921 },\n },\n {\n  { -9064912,2103172,25561640,-15125738,-5239824,9582958,32477045,-9017955,5002294,-15550259 },\n  { -12057553,-11177906,21115585,-13365155,8808712,-12030708,16489530,13378448,-25845716,12741426 },\n  { -5946367,10645103,-30911586,15390284,-3286982,-7118677,24306472,15852464,28834118,-7646072 },\n },\n {\n  { -17335748,-9107057,-24531279,9434953,-8472084,-583362,-13090771,455841,20461858,5491305 },\n  { 13669248,-16095482,-12481974,-10203039,-14569770,-11893198,-24995986,11293807,-28588204,-9421832 },\n  { 28497928,6272777,-33022994,14470570,8906179,-1225630,18504674,-14165166,29867745,-8795943 },\n },\n {\n  { -16207023,13517196,-27799630,-13697798,24009064,-6373891,-6367600,-13175392,22853429,-4012011 },\n  { 24191378,16712145,-13931797,15217831,14542237,1646131,18603514,-11037887,12876623,-2112447 },\n  { 17902668,4518229,-411702,-2829247,26878217,5258055,-12860753,608397,16031844,3723494 },\n },\n {\n  { -28632773,12763728,-20446446,7577504,33001348,-13017745,17558842,-7872890,23896954,-4314245 },\n  { -20005381,-12011952,31520464,605201,2543521,5991821,-2945064,7229064,-9919646,-8826859 },\n  { 28816045,298879,-28165016,-15920938,19000928,-1665890,-12680833,-2949325,-18051778,-2082915 },\n },\n {\n  { 16000882,-344896,3493092,-11447198,-29504595,-13159789,12577740,16041268,-19715240,7847707 },\n  { 10151868,10572098,27312476,7922682,14825339,4723128,-32855931,-6519018,-10020567,3852848 },\n  { -11430470,15697596,-21121557,-4420647,5386314,15063598,16514493,-15932110,29330899,-15076224 },\n },\n},\n{\n {\n  { -25499735,-4378794,-15222908,-6901211,16615731,2051784,3303702,15490,-27548796,12314391 },\n  { 15683520,-6003043,18109120,-9980648,15337968,-5997823,-16717435,15921866,16103996,-3731215 },\n  { -23169824,-10781249,13588192,-1628807,-3798557,-1074929,-19273607,5402699,-29815713,-9841101 },\n },\n {\n  { 23190676,2384583,-32714340,3462154,-29903655,-1529132,-11266856,8911517,-25205859,2739713 },\n  { 21374101,-3554250,-33524649,9874411,15377179,11831242,-33529904,6134907,4931255,11987849 },\n  { -7732,-2978858,-16223486,7277597,105524,-322051,-31480539,13861388,-30076310,10117930 },\n },\n {\n  { -29501170,-10744872,-26163768,13051539,-25625564,5089643,-6325503,6704079,12890019,15728940 },\n  { -21972360,-11771379,-951059,-4418840,14704840,2695116,903376,-10428139,12885167,8311031 },\n  { -17516482,5352194,10384213,-13811658,7506451,13453191,26423267,4384730,1888765,-5435404 },\n },\n {\n  { -25817338,-3107312,-13494599,-3182506,30896459,-13921729,-32251644,-12707869,-19464434,-3340243 },\n  { -23607977,-2665774,-526091,4651136,5765089,4618330,6092245,14845197,17151279,-9854116 },\n  { -24830458,-12733720,-15165978,10367250,-29530908,-265356,22825805,-7087279,-16866484,16176525 },\n },\n {\n  { -23583256,6564961,20063689,3798228,-4740178,7359225,2006182,-10363426,-28746253,-10197509 },\n  { -10626600,-4486402,-13320562,-5125317,3432136,-6393229,23632037,-1940610,32808310,1099883 },\n  { 15030977,5768825,-27451236,-2887299,-6427378,-15361371,-15277896,-6809350,2051441,-15225865 },\n },\n {\n  { -3362323,-7239372,7517890,9824992,23555850,295369,5148398,-14154188,-22686354,16633660 },\n  { 4577086,-16752288,13249841,-15304328,19958763,-14537274,18559670,-10759549,8402478,-9864273 },\n  { -28406330,-1051581,-26790155,-907698,-17212414,-11030789,9453451,-14980072,17983010,9967138 },\n },\n {\n  { -25762494,6524722,26585488,9969270,24709298,1220360,-1677990,7806337,17507396,3651560 },\n  { -10420457,-4118111,14584639,15971087,-15768321,8861010,26556809,-5574557,-18553322,-11357135 },\n  { 2839101,14284142,4029895,3472686,14402957,12689363,-26642121,8459447,-5605463,-7621941 },\n },\n {\n  { -4839289,-3535444,9744961,2871048,25113978,3187018,-25110813,-849066,17258084,-7977739 },\n  { 18164541,-10595176,-17154882,-1542417,19237078,-9745295,23357533,-15217008,26908270,12150756 },\n  { -30264870,-7647865,5112249,-7036672,-1499807,-6974257,43168,-5537701,-32302074,16215819 },\n },\n},\n{\n {\n  { -6898905,9824394,-12304779,-4401089,-31397141,-6276835,32574489,12532905,-7503072,-8675347 },\n  { -27343522,-16515468,-27151524,-10722951,946346,16291093,254968,7168080,21676107,-1943028 },\n  { 21260961,-8424752,-16831886,-11920822,-23677961,3968121,-3651949,-6215466,-3556191,-7913075 },\n },\n {\n  { 16544754,13250366,-16804428,15546242,-4583003,12757258,-2462308,-8680336,-18907032,-9662799 },\n  { -2415239,-15577728,18312303,4964443,-15272530,-12653564,26820651,16690659,25459437,-4564609 },\n  { -25144690,11425020,28423002,-11020557,-6144921,-15826224,9142795,-2391602,-6432418,-1644817 },\n },\n {\n  { -23104652,6253476,16964147,-3768872,-25113972,-12296437,-27457225,-16344658,6335692,7249989 },\n  { -30333227,13979675,7503222,-12368314,-11956721,-4621693,-30272269,2682242,25993170,-12478523 },\n  { 4364628,5930691,32304656,-10044554,-8054781,15091131,22857016,-10598955,31820368,15075278 },\n },\n {\n  { 31879134,-8918693,17258761,90626,-8041836,-4917709,24162788,-9650886,-17970238,12833045 },\n  { 19073683,14851414,-24403169,-11860168,7625278,11091125,-19619190,2074449,-9413939,14905377 },\n  { 24483667,-11935567,-2518866,-11547418,-1553130,15355506,-25282080,9253129,27628530,-7555480 },\n },\n {\n  { 17597607,8340603,19355617,552187,26198470,-3176583,4593324,-9157582,-14110875,15297016 },\n  { 510886,14337390,-31785257,16638632,6328095,2713355,-20217417,-11864220,8683221,2921426 },\n  { 18606791,11874196,27155355,-5281482,-24031742,6265446,-25178240,-1278924,4674690,13890525 },\n },\n {\n  { 13609624,13069022,-27372361,-13055908,24360586,9592974,14977157,9835105,4389687,288396 },\n  { 9922506,-519394,13613107,5883594,-18758345,-434263,-12304062,8317628,23388070,16052080 },\n  { 12720016,11937594,-31970060,-5028689,26900120,8561328,-20155687,-11632979,-14754271,-10812892 },\n },\n {\n  { 15961858,14150409,26716931,-665832,-22794328,13603569,11829573,7467844,-28822128,929275 },\n  { 11038231,-11582396,-27310482,-7316562,-10498527,-16307831,-23479533,-9371869,-21393143,2465074 },\n  { 20017163,-4323226,27915242,1529148,12396362,15675764,13817261,-9658066,2463391,-4622140 },\n },\n {\n  { -16358878,-12663911,-12065183,4996454,-1256422,1073572,9583558,12851107,4003896,12673717 },\n  { -1731589,-15155870,-3262930,16143082,19294135,13385325,14741514,-9103726,7903886,2348101 },\n  { 24536016,-16515207,12715592,-3862155,1511293,10047386,-3842346,-7129159,-28377538,10048127 },\n },\n},\n{\n {\n  { -12622226,-6204820,30718825,2591312,-10617028,12192840,18873298,-7297090,-32297756,15221632 },\n  { -26478122,-11103864,11546244,-1852483,9180880,7656409,-21343950,2095755,29769758,6593415 },\n  { -31994208,-2907461,4176912,3264766,12538965,-868111,26312345,-6118678,30958054,8292160 },\n },\n {\n  { 31429822,-13959116,29173532,15632448,12174511,-2760094,32808831,3977186,26143136,-3148876 },\n  { 22648901,1402143,-22799984,13746059,7936347,365344,-8668633,-1674433,-3758243,-2304625 },\n  { -15491917,8012313,-2514730,-12702462,-23965846,-10254029,-1612713,-1535569,-16664475,8194478 },\n },\n {\n  { 27338066,-7507420,-7414224,10140405,-19026427,-6589889,27277191,8855376,28572286,3005164 },\n  { 26287124,4821776,25476601,-4145903,-3764513,-15788984,-18008582,1182479,-26094821,-13079595 },\n  { -7171154,3178080,23970071,6201893,-17195577,-4489192,-21876275,-13982627,32208683,-1198248 },\n },\n {\n  { -16657702,2817643,-10286362,14811298,6024667,13349505,-27315504,-10497842,-27672585,-11539858 },\n  { 15941029,-9405932,-21367050,8062055,31876073,-238629,-15278393,-1444429,15397331,-4130193 },\n  { 8934485,-13485467,-23286397,-13423241,-32446090,14047986,31170398,-1441021,-27505566,15087184 },\n },\n {\n  { -18357243,-2156491,24524913,-16677868,15520427,-6360776,-15502406,11461896,16788528,-5868942 },\n  { -1947386,16013773,21750665,3714552,-17401782,-16055433,-3770287,-10323320,31322514,-11615635 },\n  { 21426655,-5650218,-13648287,-5347537,-28812189,-4920970,-18275391,-14621414,13040862,-12112948 },\n },\n {\n  { 11293895,12478086,-27136401,15083750,-29307421,14748872,14555558,-13417103,1613711,4896935 },\n  { -25894883,15323294,-8489791,-8057900,25967126,-13425460,2825960,-4897045,-23971776,-11267415 },\n  { -15924766,-5229880,-17443532,6410664,3622847,10243618,20615400,12405433,-23753030,-8436416 },\n },\n {\n  { -7091295,12556208,-20191352,9025187,-17072479,4333801,4378436,2432030,23097949,-566018 },\n  { 4565804,-16025654,20084412,-7842817,1724999,189254,24767264,10103221,-18512313,2424778 },\n  { 366633,-11976806,8173090,-6890119,30788634,5745705,-7168678,1344109,-3642553,12412659 },\n },\n {\n  { -24001791,7690286,14929416,-168257,-32210835,-13412986,24162697,-15326504,-3141501,11179385 },\n  { 18289522,-14724954,8056945,16430056,-21729724,7842514,-6001441,-1486897,-18684645,-11443503 },\n  { 476239,6601091,-6152790,-9723375,17503545,-4863900,27672959,13403813,11052904,5219329 },\n },\n},\n{\n {\n  { 20678546,-8375738,-32671898,8849123,-5009758,14574752,31186971,-3973730,9014762,-8579056 },\n  { -13644050,-10350239,-15962508,5075808,-1514661,-11534600,-33102500,9160280,8473550,-3256838 },\n  { 24900749,14435722,17209120,-15292541,-22592275,9878983,-7689309,-16335821,-24568481,11788948 },\n },\n {\n  { -3118155,-11395194,-13802089,14797441,9652448,-6845904,-20037437,10410733,-24568470,-1458691 },\n  { -15659161,16736706,-22467150,10215878,-9097177,7563911,11871841,-12505194,-18513325,8464118 },\n  { -23400612,8348507,-14585951,-861714,-3950205,-6373419,14325289,8628612,33313881,-8370517 },\n },\n {\n  { -20186973,-4967935,22367356,5271547,-1097117,-4788838,-24805667,-10236854,-8940735,-5818269 },\n  { -6948785,-1795212,-32625683,-16021179,32635414,-7374245,15989197,-12838188,28358192,-4253904 },\n  { -23561781,-2799059,-32351682,-1661963,-9147719,10429267,-16637684,4072016,-5351664,5596589 },\n },\n {\n  { -28236598,-3390048,12312896,6213178,3117142,16078565,29266239,2557221,1768301,15373193 },\n  { -7243358,-3246960,-4593467,-7553353,-127927,-912245,-1090902,-4504991,-24660491,3442910 },\n  { -30210571,5124043,14181784,8197961,18964734,-11939093,22597931,7176455,-18585478,13365930 },\n },\n {\n  { -7877390,-1499958,8324673,4690079,6261860,890446,24538107,-8570186,-9689599,-3031667 },\n  { 25008904,-10771599,-4305031,-9638010,16265036,15721635,683793,-11823784,15723479,-15163481 },\n  { -9660625,12374379,-27006999,-7026148,-7724114,-12314514,11879682,5400171,519526,-1235876 },\n },\n {\n  { 22258397,-16332233,-7869817,14613016,-22520255,-2950923,-20353881,7315967,16648397,7605640 },\n  { -8081308,-8464597,-8223311,9719710,19259459,-15348212,23994942,-5281555,-9468848,4763278 },\n  { -21699244,9220969,-15730624,1084137,-25476107,-2852390,31088447,-7764523,-11356529,728112 },\n },\n {\n  { 26047220,-11751471,-6900323,-16521798,24092068,9158119,-4273545,-12555558,-29365436,-5498272 },\n  { 17510331,-322857,5854289,8403524,17133918,-3112612,-28111007,12327945,10750447,10014012 },\n  { -10312768,3936952,9156313,-8897683,16498692,-994647,-27481051,-666732,3424691,7540221 },\n },\n {\n  { 30322361,-6964110,11361005,-4143317,7433304,4989748,-7071422,-16317219,-9244265,15258046 },\n  { 13054562,-2779497,19155474,469045,-12482797,4566042,5631406,2711395,1062915,-5136345 },\n  { -19240248,-11254599,-29509029,-7499965,-5835763,13005411,-6066489,12194497,32960380,1459310 },\n },\n},\n{\n {\n  { 19852034,7027924,23669353,10020366,8586503,-6657907,394197,-6101885,18638003,-11174937 },\n  { 31395534,15098109,26581030,8030562,-16527914,-5007134,9012486,-7584354,-6643087,-5442636 },\n  { -9192165,-2347377,-1997099,4529534,25766844,607986,-13222,9677543,-32294889,-6456008 },\n },\n {\n  { -2444496,-149937,29348902,8186665,1873760,12489863,-30934579,-7839692,-7852844,-8138429 },\n  { -15236356,-15433509,7766470,746860,26346930,-10221762,-27333451,10754588,-9431476,5203576 },\n  { 31834314,14135496,-770007,5159118,20917671,-16768096,-7467973,-7337524,31809243,7347066 },\n },\n {\n  { -9606723,-11874240,20414459,13033986,13716524,-11691881,19797970,-12211255,15192876,-2087490 },\n  { -12663563,-2181719,1168162,-3804809,26747877,-14138091,10609330,12694420,33473243,-13382104 },\n  { 33184999,11180355,15832085,-11385430,-1633671,225884,15089336,-11023903,-6135662,14480053 },\n },\n {\n  { 31308717,-5619998,31030840,-1897099,15674547,-6582883,5496208,13685227,27595050,8737275 },\n  { -20318852,-15150239,10933843,-16178022,8335352,-7546022,-31008351,-12610604,26498114,66511 },\n  { 22644454,-8761729,-16671776,4884562,-3105614,-13559366,30540766,-4286747,-13327787,-7515095 },\n },\n {\n  { -28017847,9834845,18617207,-2681312,-3401956,-13307506,8205540,13585437,-17127465,15115439 },\n  { 23711543,-672915,31206561,-8362711,6164647,-9709987,-33535882,-1426096,8236921,16492939 },\n  { -23910559,-13515526,-26299483,-4503841,25005590,-7687270,19574902,10071562,6708380,-6222424 },\n },\n {\n  { 2101391,-4930054,19702731,2367575,-15427167,1047675,5301017,9328700,29955601,-11678310 },\n  { 3096359,9271816,-21620864,-15521844,-14847996,-7592937,-25892142,-12635595,-9917575,6216608 },\n  { -32615849,338663,-25195611,2510422,-29213566,-13820213,24822830,-6146567,-26767480,7525079 },\n },\n {\n  { -23066649,-13985623,16133487,-7896178,-3389565,778788,-910336,-2782495,-19386633,11994101 },\n  { 21691500,-13624626,-641331,-14367021,3285881,-3483596,-25064666,9718258,-7477437,13381418 },\n  { 18445390,-4202236,14979846,11622458,-1727110,-3582980,23111648,-6375247,28535282,15779576 },\n },\n {\n  { 30098053,3089662,-9234387,16662135,-21306940,11308411,-14068454,12021730,9955285,-16303356 },\n  { 9734894,-14576830,-7473633,-9138735,2060392,11313496,-18426029,9924399,20194861,13380996 },\n  { -26378102,-7965207,-22167821,15789297,-18055342,-6168792,-1984914,15707771,26342023,10146099 },\n },\n},\n{\n {\n  { -26016874,-219943,21339191,-41388,19745256,-2878700,-29637280,2227040,21612326,-545728 },\n  { -13077387,1184228,23562814,-5970442,-20351244,-6348714,25764461,12243797,-20856566,11649658 },\n  { -10031494,11262626,27384172,2271902,26947504,-15997771,39944,6114064,33514190,2333242 },\n },\n {\n  { -21433588,-12421821,8119782,7219913,-21830522,-9016134,-6679750,-12670638,24350578,-13450001 },\n  { -4116307,-11271533,-23886186,4843615,-30088339,690623,-31536088,-10406836,8317860,12352766 },\n  { 18200138,-14475911,-33087759,-2696619,-23702521,-9102511,-23552096,-2287550,20712163,6719373 },\n },\n {\n  { 26656208,6075253,-7858556,1886072,-28344043,4262326,11117530,-3763210,26224235,-3297458 },\n  { -17168938,-14854097,-3395676,-16369877,-19954045,14050420,21728352,9493610,18620611,-16428628 },\n  { -13323321,13325349,11432106,5964811,18609221,6062965,-5269471,-9725556,-30701573,-16479657 },\n },\n {\n  { -23860538,-11233159,26961357,1640861,-32413112,-16737940,12248509,-5240639,13735342,1934062 },\n  { 25089769,6742589,17081145,-13406266,21909293,-16067981,-15136294,-3765346,-21277997,5473616 },\n  { 31883677,-7961101,1083432,-11572403,22828471,13290673,-7125085,12469656,29111212,-5451014 },\n },\n {\n  { 24244947,-15050407,-26262976,2791540,-14997599,16666678,24367466,6388839,-10295587,452383 },\n  { -25640782,-3417841,5217916,16224624,19987036,-4082269,-24236251,-5915248,15766062,8407814 },\n  { -20406999,13990231,15495425,16395525,5377168,15166495,-8917023,-4388953,-8067909,2276718 },\n },\n {\n  { 30157918,12924066,-17712050,9245753,19895028,3368142,-23827587,5096219,22740376,-7303417 },\n  { 2041139,-14256350,7783687,13876377,-25946985,-13352459,24051124,13742383,-15637599,13295222 },\n  { 33338237,-8505733,12532113,7977527,9106186,-1715251,-17720195,-4612972,-4451357,-14669444 },\n },\n {\n  { -20045281,5454097,-14346548,6447146,28862071,1883651,-2469266,-4141880,7770569,9620597 },\n  { 23208068,7979712,33071466,8149229,1758231,-10834995,30945528,-1694323,-33502340,-14767970 },\n  { 1439958,-16270480,-1079989,-793782,4625402,10647766,-5043801,1220118,30494170,-11440799 },\n },\n {\n  { -5037580,-13028295,-2970559,-3061767,15640974,-6701666,-26739026,926050,-1684339,-13333647 },\n  { 13908495,-3549272,30919928,-6273825,-21521863,7989039,9021034,9078865,3353509,4033511 },\n  { -29663431,-15113610,32259991,-344482,24295849,-12912123,23161163,8839127,27485041,7356032 },\n },\n},\n{\n {\n  { 9661027,705443,11980065,-5370154,-1628543,14661173,-6346142,2625015,28431036,-16771834 },\n  { -23839233,-8311415,-25945511,7480958,-17681669,-8354183,-22545972,14150565,15970762,4099461 },\n  { 29262576,16756590,26350592,-8793563,8529671,-11208050,13617293,-9937143,11465739,8317062 },\n },\n {\n  { -25493081,-6962928,32500200,-9419051,-23038724,-2302222,14898637,3848455,20969334,-5157516 },\n  { -20384450,-14347713,-18336405,13884722,-33039454,2842114,-21610826,-3649888,11177095,14989547 },\n  { -24496721,-11716016,16959896,2278463,12066309,10137771,13515641,2581286,-28487508,9930240 },\n },\n {\n  { -17751622,-2097826,16544300,-13009300,-15914807,-14949081,18345767,-13403753,16291481,-5314038 },\n  { -33229194,2553288,32678213,9875984,8534129,6889387,-9676774,6957617,4368891,9788741 },\n  { 16660756,7281060,-10830758,12911820,20108584,-8101676,-21722536,-8613148,16250552,-11111103 },\n },\n {\n  { -19765507,2390526,-16551031,14161980,1905286,6414907,4689584,10604807,-30190403,4782747 },\n  { -1354539,14736941,-7367442,-13292886,7710542,-14155590,-9981571,4383045,22546403,437323 },\n  { 31665577,-12180464,-16186830,1491339,-18368625,3294682,27343084,2786261,-30633590,-14097016 },\n },\n {\n  { -14467279,-683715,-33374107,7448552,19294360,14334329,-19690631,2355319,-19284671,-6114373 },\n  { 15121312,-15796162,6377020,-6031361,-10798111,-12957845,18952177,15496498,-29380133,11754228 },\n  { -2637277,-13483075,8488727,-14303896,12728761,-1622493,7141596,11724556,22761615,-10134141 },\n },\n {\n  { 16918416,11729663,-18083579,3022987,-31015732,-13339659,-28741185,-12227393,32851222,11717399 },\n  { 11166634,7338049,-6722523,4531520,-29468672,-7302055,31474879,3483633,-1193175,-4030831 },\n  { -185635,9921305,31456609,-13536438,-12013818,13348923,33142652,6546660,-19985279,-3948376 },\n },\n {\n  { -32460596,11266712,-11197107,-7899103,31703694,3855903,-8537131,-12833048,-30772034,-15486313 },\n  { -18006477,12709068,3991746,-6479188,-21491523,-10550425,-31135347,-16049879,10928917,3011958 },\n  { -6957757,-15594337,31696059,334240,29576716,14796075,-30831056,-12805180,18008031,10258577 },\n },\n {\n  { -22448644,15655569,7018479,-4410003,-30314266,-1201591,-1853465,1367120,25127874,6671743 },\n  { 29701166,-14373934,-10878120,9279288,-17568,13127210,21382910,11042292,25838796,4642684 },\n  { -20430234,14955537,-24126347,8124619,-5369288,-5990470,30468147,-13900640,18423289,4177476 },\n },\n},\n} ;\n\nstatic void ge_p2_0(ge_p2 *h)\n{\n  fe_0(h->X);\n  fe_1(h->Y);\n  fe_1(h->Z);\n}\n\nstatic void ge_p3_0(ge_p3 *h)\n{\n  fe_0(h->X);\n  fe_1(h->Y);\n  fe_1(h->Z);\n  fe_0(h->T);\n}\n\nstatic void ge_precomp_0(ge_precomp *h)\n{\n  fe_1(h->yplusx);\n  fe_1(h->yminusx);\n  fe_0(h->xy2d);\n}\n\n/*\nr = p\n*/\n\nstatic void ge_p1p1_to_p2(ge_p2 *r,const ge_p1p1 *p)\n{\n  fe_mul(r->X,p->X,p->T);\n  fe_mul(r->Y,p->Y,p->Z);\n  fe_mul(r->Z,p->Z,p->T);\n}\n\n/*\nr = p\n*/\n\nstatic void ge_p1p1_to_p3(ge_p3 *r,const ge_p1p1 *p)\n{\n  fe_mul(r->X,p->X,p->T);\n  fe_mul(r->Y,p->Y,p->Z);\n  fe_mul(r->Z,p->Z,p->T);\n  fe_mul(r->T,p->X,p->Y);\n}\n\n/*\nr = p\n*/\n\nstatic void ge_p3_to_p2(ge_p2 *r,const ge_p3 *p)\n{\n  fe_copy(r->X,p->X);\n  fe_copy(r->Y,p->Y);\n  fe_copy(r->Z,p->Z);\n}\n\n\n/*\nr = 2 * p\n*/\n\nstatic void ge_p2_dbl(ge_p1p1 *r,const ge_p2 *p)\n{\n  fe t0;\n/* qhasm: enter ge_p2_dbl */\n\n/* qhasm: fe X1 */\n\n/* qhasm: fe Y1 */\n\n/* qhasm: fe Z1 */\n\n/* qhasm: fe A */\n\n/* qhasm: fe AA */\n\n/* qhasm: fe XX */\n\n/* qhasm: fe YY */\n\n/* qhasm: fe B */\n\n/* qhasm: fe X3 */\n\n/* qhasm: fe Y3 */\n\n/* qhasm: fe Z3 */\n\n/* qhasm: fe T3 */\n\n/* qhasm: XX=X1^2 */\n/* asm 1: fe_sq(>XX=fe#1,<X1=fe#11); */\n/* asm 2: fe_sq(>XX=r->X,<X1=p->X); */\nfe_sq(r->X,p->X);\n\n/* qhasm: YY=Y1^2 */\n/* asm 1: fe_sq(>YY=fe#3,<Y1=fe#12); */\n/* asm 2: fe_sq(>YY=r->Z,<Y1=p->Y); */\nfe_sq(r->Z,p->Y);\n\n/* qhasm: B=2*Z1^2 */\n/* asm 1: fe_sq2(>B=fe#4,<Z1=fe#13); */\n/* asm 2: fe_sq2(>B=r->T,<Z1=p->Z); */\nfe_sq2(r->T,p->Z);\n\n/* qhasm: A=X1+Y1 */\n/* asm 1: fe_add(>A=fe#2,<X1=fe#11,<Y1=fe#12); */\n/* asm 2: fe_add(>A=r->Y,<X1=p->X,<Y1=p->Y); */\nfe_add(r->Y,p->X,p->Y);\n\n/* qhasm: AA=A^2 */\n/* asm 1: fe_sq(>AA=fe#5,<A=fe#2); */\n/* asm 2: fe_sq(>AA=t0,<A=r->Y); */\nfe_sq(t0,r->Y);\n\n/* qhasm: Y3=YY+XX */\n/* asm 1: fe_add(>Y3=fe#2,<YY=fe#3,<XX=fe#1); */\n/* asm 2: fe_add(>Y3=r->Y,<YY=r->Z,<XX=r->X); */\nfe_add(r->Y,r->Z,r->X);\n\n/* qhasm: Z3=YY-XX */\n/* asm 1: fe_sub(>Z3=fe#3,<YY=fe#3,<XX=fe#1); */\n/* asm 2: fe_sub(>Z3=r->Z,<YY=r->Z,<XX=r->X); */\nfe_sub(r->Z,r->Z,r->X);\n\n/* qhasm: X3=AA-Y3 */\n/* asm 1: fe_sub(>X3=fe#1,<AA=fe#5,<Y3=fe#2); */\n/* asm 2: fe_sub(>X3=r->X,<AA=t0,<Y3=r->Y); */\nfe_sub(r->X,t0,r->Y);\n\n/* qhasm: T3=B-Z3 */\n/* asm 1: fe_sub(>T3=fe#4,<B=fe#4,<Z3=fe#3); */\n/* asm 2: fe_sub(>T3=r->T,<B=r->T,<Z3=r->Z); */\nfe_sub(r->T,r->T,r->Z);\n\n/* qhasm: return */\n}\n\n\n/*\nr = 2 * p\n*/\n\nstatic void ge_p3_dbl(ge_p1p1 *r,const ge_p3 *p)\n{\n  ge_p2 q;\n  ge_p3_to_p2(&q,p);\n  ge_p2_dbl(r,&q);\n}\n\n\n/*\nr = p\n*/\n\nstatic void ge_p3_to_cached(ge_cached *r,const ge_p3 *p)\n{\n  fe_add(r->YplusX,p->Y,p->X);\n  fe_sub(r->YminusX,p->Y,p->X);\n  fe_copy(r->Z,p->Z);\n  fe_mul(r->T2d,p->T,d2);\n}\n\n/*\nr = p + q\n*/\n\nstatic void ge_add(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q)\n{\n  fe t0;\n/* qhasm: enter ge_add */\n\n/* qhasm: fe X1 */\n\n/* qhasm: fe Y1 */\n\n/* qhasm: fe Z1 */\n\n/* qhasm: fe Z2 */\n\n/* qhasm: fe T1 */\n\n/* qhasm: fe ZZ */\n\n/* qhasm: fe YpX2 */\n\n/* qhasm: fe YmX2 */\n\n/* qhasm: fe T2d2 */\n\n/* qhasm: fe X3 */\n\n/* qhasm: fe Y3 */\n\n/* qhasm: fe Z3 */\n\n/* qhasm: fe T3 */\n\n/* qhasm: fe YpX1 */\n\n/* qhasm: fe YmX1 */\n\n/* qhasm: fe A */\n\n/* qhasm: fe B */\n\n/* qhasm: fe C */\n\n/* qhasm: fe D */\n\n/* qhasm: YpX1 = Y1+X1 */\n/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */\nfe_add(r->X,p->Y,p->X);\n\n/* qhasm: YmX1 = Y1-X1 */\n/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */\nfe_sub(r->Y,p->Y,p->X);\n\n/* qhasm: A = YpX1*YpX2 */\n/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<YpX2=fe#15); */\n/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<YpX2=q->YplusX); */\nfe_mul(r->Z,r->X,q->YplusX);\n\n/* qhasm: B = YmX1*YmX2 */\n/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<YmX2=fe#16); */\n/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<YmX2=q->YminusX); */\nfe_mul(r->Y,r->Y,q->YminusX);\n\n/* qhasm: C = T2d2*T1 */\n/* asm 1: fe_mul(>C=fe#4,<T2d2=fe#18,<T1=fe#14); */\n/* asm 2: fe_mul(>C=r->T,<T2d2=q->T2d,<T1=p->T); */\nfe_mul(r->T,q->T2d,p->T);\n\n/* qhasm: ZZ = Z1*Z2 */\n/* asm 1: fe_mul(>ZZ=fe#1,<Z1=fe#13,<Z2=fe#17); */\n/* asm 2: fe_mul(>ZZ=r->X,<Z1=p->Z,<Z2=q->Z); */\nfe_mul(r->X,p->Z,q->Z);\n\n/* qhasm: D = 2*ZZ */\n/* asm 1: fe_add(>D=fe#5,<ZZ=fe#1,<ZZ=fe#1); */\n/* asm 2: fe_add(>D=t0,<ZZ=r->X,<ZZ=r->X); */\nfe_add(t0,r->X,r->X);\n\n/* qhasm: X3 = A-B */\n/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */\nfe_sub(r->X,r->Z,r->Y);\n\n/* qhasm: Y3 = A+B */\n/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */\nfe_add(r->Y,r->Z,r->Y);\n\n/* qhasm: Z3 = D+C */\n/* asm 1: fe_add(>Z3=fe#3,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_add(>Z3=r->Z,<D=t0,<C=r->T); */\nfe_add(r->Z,t0,r->T);\n\n/* qhasm: T3 = D-C */\n/* asm 1: fe_sub(>T3=fe#4,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_sub(>T3=r->T,<D=t0,<C=r->T); */\nfe_sub(r->T,t0,r->T);\n\n/* qhasm: return */\n}\n\n\n/*\nr = p - q\n*/\n\nstatic void ge_sub(ge_p1p1 *r,const ge_p3 *p,const ge_cached *q)\n{\n  fe t0;\n/* qhasm: enter ge_sub */\n\n/* qhasm: fe X1 */\n\n/* qhasm: fe Y1 */\n\n/* qhasm: fe Z1 */\n\n/* qhasm: fe Z2 */\n\n/* qhasm: fe T1 */\n\n/* qhasm: fe ZZ */\n\n/* qhasm: fe YpX2 */\n\n/* qhasm: fe YmX2 */\n\n/* qhasm: fe T2d2 */\n\n/* qhasm: fe X3 */\n\n/* qhasm: fe Y3 */\n\n/* qhasm: fe Z3 */\n\n/* qhasm: fe T3 */\n\n/* qhasm: fe YpX1 */\n\n/* qhasm: fe YmX1 */\n\n/* qhasm: fe A */\n\n/* qhasm: fe B */\n\n/* qhasm: fe C */\n\n/* qhasm: fe D */\n\n/* qhasm: YpX1 = Y1+X1 */\n/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */\nfe_add(r->X,p->Y,p->X);\n\n/* qhasm: YmX1 = Y1-X1 */\n/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */\nfe_sub(r->Y,p->Y,p->X);\n\n/* qhasm: A = YpX1*YmX2 */\n/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<YmX2=fe#16); */\n/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<YmX2=q->YminusX); */\nfe_mul(r->Z,r->X,q->YminusX);\n\n/* qhasm: B = YmX1*YpX2 */\n/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<YpX2=fe#15); */\n/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<YpX2=q->YplusX); */\nfe_mul(r->Y,r->Y,q->YplusX);\n\n/* qhasm: C = T2d2*T1 */\n/* asm 1: fe_mul(>C=fe#4,<T2d2=fe#18,<T1=fe#14); */\n/* asm 2: fe_mul(>C=r->T,<T2d2=q->T2d,<T1=p->T); */\nfe_mul(r->T,q->T2d,p->T);\n\n/* qhasm: ZZ = Z1*Z2 */\n/* asm 1: fe_mul(>ZZ=fe#1,<Z1=fe#13,<Z2=fe#17); */\n/* asm 2: fe_mul(>ZZ=r->X,<Z1=p->Z,<Z2=q->Z); */\nfe_mul(r->X,p->Z,q->Z);\n\n/* qhasm: D = 2*ZZ */\n/* asm 1: fe_add(>D=fe#5,<ZZ=fe#1,<ZZ=fe#1); */\n/* asm 2: fe_add(>D=t0,<ZZ=r->X,<ZZ=r->X); */\nfe_add(t0,r->X,r->X);\n\n/* qhasm: X3 = A-B */\n/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */\nfe_sub(r->X,r->Z,r->Y);\n\n/* qhasm: Y3 = A+B */\n/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */\nfe_add(r->Y,r->Z,r->Y);\n\n/* qhasm: Z3 = D-C */\n/* asm 1: fe_sub(>Z3=fe#3,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_sub(>Z3=r->Z,<D=t0,<C=r->T); */\nfe_sub(r->Z,t0,r->T);\n\n/* qhasm: T3 = D+C */\n/* asm 1: fe_add(>T3=fe#4,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_add(>T3=r->T,<D=t0,<C=r->T); */\nfe_add(r->T,t0,r->T);\n\n/* qhasm: return */\n}\n\n\n/*\nr = p + q\n*/\n\nstatic void ge_madd(ge_p1p1 *r,const ge_p3 *p,const ge_precomp *q)\n{\n  fe t0;\n/* qhasm: enter ge_madd */\n\n/* qhasm: fe X1 */\n\n/* qhasm: fe Y1 */\n\n/* qhasm: fe Z1 */\n\n/* qhasm: fe T1 */\n\n/* qhasm: fe ypx2 */\n\n/* qhasm: fe ymx2 */\n\n/* qhasm: fe xy2d2 */\n\n/* qhasm: fe X3 */\n\n/* qhasm: fe Y3 */\n\n/* qhasm: fe Z3 */\n\n/* qhasm: fe T3 */\n\n/* qhasm: fe YpX1 */\n\n/* qhasm: fe YmX1 */\n\n/* qhasm: fe A */\n\n/* qhasm: fe B */\n\n/* qhasm: fe C */\n\n/* qhasm: fe D */\n\n/* qhasm: YpX1 = Y1+X1 */\n/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */\nfe_add(r->X,p->Y,p->X);\n\n/* qhasm: YmX1 = Y1-X1 */\n/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */\nfe_sub(r->Y,p->Y,p->X);\n\n/* qhasm: A = YpX1*ypx2 */\n/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<ypx2=fe#15); */\n/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<ypx2=q->yplusx); */\nfe_mul(r->Z,r->X,q->yplusx);\n\n/* qhasm: B = YmX1*ymx2 */\n/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<ymx2=fe#16); */\n/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<ymx2=q->yminusx); */\nfe_mul(r->Y,r->Y,q->yminusx);\n\n/* qhasm: C = xy2d2*T1 */\n/* asm 1: fe_mul(>C=fe#4,<xy2d2=fe#17,<T1=fe#14); */\n/* asm 2: fe_mul(>C=r->T,<xy2d2=q->xy2d,<T1=p->T); */\nfe_mul(r->T,q->xy2d,p->T);\n\n/* qhasm: D = 2*Z1 */\n/* asm 1: fe_add(>D=fe#5,<Z1=fe#13,<Z1=fe#13); */\n/* asm 2: fe_add(>D=t0,<Z1=p->Z,<Z1=p->Z); */\nfe_add(t0,p->Z,p->Z);\n\n/* qhasm: X3 = A-B */\n/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */\nfe_sub(r->X,r->Z,r->Y);\n\n/* qhasm: Y3 = A+B */\n/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */\nfe_add(r->Y,r->Z,r->Y);\n\n/* qhasm: Z3 = D+C */\n/* asm 1: fe_add(>Z3=fe#3,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_add(>Z3=r->Z,<D=t0,<C=r->T); */\nfe_add(r->Z,t0,r->T);\n\n/* qhasm: T3 = D-C */\n/* asm 1: fe_sub(>T3=fe#4,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_sub(>T3=r->T,<D=t0,<C=r->T); */\nfe_sub(r->T,t0,r->T);\n\n/* qhasm: return */\n}\n\n\n/*\nr = p - q\n*/\n\nstatic void ge_msub(ge_p1p1 *r,const ge_p3 *p,const ge_precomp *q)\n{\n  fe t0;\n/* qhasm: enter ge_msub */\n\n/* qhasm: fe X1 */\n\n/* qhasm: fe Y1 */\n\n/* qhasm: fe Z1 */\n\n/* qhasm: fe T1 */\n\n/* qhasm: fe ypx2 */\n\n/* qhasm: fe ymx2 */\n\n/* qhasm: fe xy2d2 */\n\n/* qhasm: fe X3 */\n\n/* qhasm: fe Y3 */\n\n/* qhasm: fe Z3 */\n\n/* qhasm: fe T3 */\n\n/* qhasm: fe YpX1 */\n\n/* qhasm: fe YmX1 */\n\n/* qhasm: fe A */\n\n/* qhasm: fe B */\n\n/* qhasm: fe C */\n\n/* qhasm: fe D */\n\n/* qhasm: YpX1 = Y1+X1 */\n/* asm 1: fe_add(>YpX1=fe#1,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_add(>YpX1=r->X,<Y1=p->Y,<X1=p->X); */\nfe_add(r->X,p->Y,p->X);\n\n/* qhasm: YmX1 = Y1-X1 */\n/* asm 1: fe_sub(>YmX1=fe#2,<Y1=fe#12,<X1=fe#11); */\n/* asm 2: fe_sub(>YmX1=r->Y,<Y1=p->Y,<X1=p->X); */\nfe_sub(r->Y,p->Y,p->X);\n\n/* qhasm: A = YpX1*ymx2 */\n/* asm 1: fe_mul(>A=fe#3,<YpX1=fe#1,<ymx2=fe#16); */\n/* asm 2: fe_mul(>A=r->Z,<YpX1=r->X,<ymx2=q->yminusx); */\nfe_mul(r->Z,r->X,q->yminusx);\n\n/* qhasm: B = YmX1*ypx2 */\n/* asm 1: fe_mul(>B=fe#2,<YmX1=fe#2,<ypx2=fe#15); */\n/* asm 2: fe_mul(>B=r->Y,<YmX1=r->Y,<ypx2=q->yplusx); */\nfe_mul(r->Y,r->Y,q->yplusx);\n\n/* qhasm: C = xy2d2*T1 */\n/* asm 1: fe_mul(>C=fe#4,<xy2d2=fe#17,<T1=fe#14); */\n/* asm 2: fe_mul(>C=r->T,<xy2d2=q->xy2d,<T1=p->T); */\nfe_mul(r->T,q->xy2d,p->T);\n\n/* qhasm: D = 2*Z1 */\n/* asm 1: fe_add(>D=fe#5,<Z1=fe#13,<Z1=fe#13); */\n/* asm 2: fe_add(>D=t0,<Z1=p->Z,<Z1=p->Z); */\nfe_add(t0,p->Z,p->Z);\n\n/* qhasm: X3 = A-B */\n/* asm 1: fe_sub(>X3=fe#1,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_sub(>X3=r->X,<A=r->Z,<B=r->Y); */\nfe_sub(r->X,r->Z,r->Y);\n\n/* qhasm: Y3 = A+B */\n/* asm 1: fe_add(>Y3=fe#2,<A=fe#3,<B=fe#2); */\n/* asm 2: fe_add(>Y3=r->Y,<A=r->Z,<B=r->Y); */\nfe_add(r->Y,r->Z,r->Y);\n\n/* qhasm: Z3 = D-C */\n/* asm 1: fe_sub(>Z3=fe#3,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_sub(>Z3=r->Z,<D=t0,<C=r->T); */\nfe_sub(r->Z,t0,r->T);\n\n/* qhasm: T3 = D+C */\n/* asm 1: fe_add(>T3=fe#4,<D=fe#5,<C=fe#4); */\n/* asm 2: fe_add(>T3=r->T,<D=t0,<C=r->T); */\nfe_add(r->T,t0,r->T);\n\n/* qhasm: return */\n}\n\n\nstatic void ge_p3_tobytes(unsigned char *s,const ge_p3 *h)\n{\n  fe recip;\n  fe x;\n  fe y;\n\n  fe_invert(recip,h->Z);\n  fe_mul(x,h->X,recip);\n  fe_mul(y,h->Y,recip);\n  fe_tobytes(s,y);\n  s[31] ^= fe_isnegative(x) << 7;\n}\n\nstatic void ge_tobytes(unsigned char *s,const ge_p2 *h)\n{\n  fe recip;\n  fe x;\n  fe y;\n\n  fe_invert(recip,h->Z);\n  fe_mul(x,h->X,recip);\n  fe_mul(y,h->Y,recip);\n  fe_tobytes(s,y);\n  s[31] ^= fe_isnegative(x) << 7;\n}\n\nstatic int ge_frombytes_negate_vartime(ge_p3 *h,const unsigned char *s)\n{\n  fe u;\n  fe v;\n  fe v3;\n  fe vxx;\n  fe check;\n\n  fe_frombytes(h->Y,s);\n  fe_1(h->Z);\n  fe_sq(u,h->Y);\n  fe_mul(v,u,d);\n  fe_sub(u,u,h->Z);       /* u = y^2-1 */\n  fe_add(v,v,h->Z);       /* v = dy^2+1 */\n\n  fe_sq(v3,v);\n  fe_mul(v3,v3,v);        /* v3 = v^3 */\n  fe_sq(h->X,v3);\n  fe_mul(h->X,h->X,v);\n  fe_mul(h->X,h->X,u);    /* x = uv^7 */\n\n  fe_pow22523(h->X,h->X); /* x = (uv^7)^((q-5)/8) */\n  fe_mul(h->X,h->X,v3);\n  fe_mul(h->X,h->X,u);    /* x = uv^3(uv^7)^((q-5)/8) */\n\n  fe_sq(vxx,h->X);\n  fe_mul(vxx,vxx,v);\n  fe_sub(check,vxx,u);    /* vx^2-u */\n  if (fe_isnonzero(check)) {\n    fe_add(check,vxx,u);  /* vx^2+u */\n    if (fe_isnonzero(check)) return -1;\n    fe_mul(h->X,h->X,sqrtm1);\n  }\n\n  if (fe_isnegative(h->X) == (s[31] >> 7))\n    fe_neg(h->X,h->X);\n\n  fe_mul(h->T,h->X,h->Y);\n  return 0;\n}\n\n\nstatic void slide(signed char *r,const unsigned char *a)\n{\n  int i;\n  int b;\n  int k;\n\n  for (i = 0;i < 256;++i)\n    r[i] = 1 & (a[i >> 3] >> (i & 7));\n\n  for (i = 0;i < 256;++i)\n    if (r[i]) {\n      for (b = 1;b <= 6 && i + b < 256;++b) {\n        if (r[i + b]) {\n          if (r[i] + (r[i + b] << b) <= 15) {\n            r[i] += r[i + b] << b; r[i + b] = 0;\n          } else if (r[i] - (r[i + b] << b) >= -15) {\n            r[i] -= r[i + b] << b;\n            for (k = i + b;k < 256;++k) {\n              if (!r[k]) {\n                r[k] = 1;\n                break;\n              }\n              r[k] = 0;\n            }\n          } else\n            break;\n        }\n      }\n    }\n\n}\n\n\n/*\nr = a * A + b * B\nwhere a = a[0]+256*a[1]+...+256^31 a[31].\nand b = b[0]+256*b[1]+...+256^31 b[31].\nB is the Ed25519 base point (x,4/5) with x positive.\n*/\n\nstatic void ge_double_scalarmult_vartime(ge_p2 *r,const unsigned char *a,const ge_p3 *A,const unsigned char *b)\n{\n  signed char aslide[256];\n  signed char bslide[256];\n  ge_cached Ai[8]; /* A,3A,5A,7A,9A,11A,13A,15A */\n  ge_p1p1 t;\n  ge_p3 u;\n  ge_p3 A2;\n  int i;\n\n  slide(aslide,a);\n  slide(bslide,b);\n\n  ge_p3_to_cached(&Ai[0],A);\n  ge_p3_dbl(&t,A); ge_p1p1_to_p3(&A2,&t);\n  ge_add(&t,&A2,&Ai[0]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[1],&u);\n  ge_add(&t,&A2,&Ai[1]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[2],&u);\n  ge_add(&t,&A2,&Ai[2]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[3],&u);\n  ge_add(&t,&A2,&Ai[3]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[4],&u);\n  ge_add(&t,&A2,&Ai[4]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[5],&u);\n  ge_add(&t,&A2,&Ai[5]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[6],&u);\n  ge_add(&t,&A2,&Ai[6]); ge_p1p1_to_p3(&u,&t); ge_p3_to_cached(&Ai[7],&u);\n\n  ge_p2_0(r);\n\n  for (i = 255;i >= 0;--i) {\n    if (aslide[i] || bslide[i]) break;\n  }\n\n  for (;i >= 0;--i) {\n    ge_p2_dbl(&t,r);\n\n    if (aslide[i] > 0) {\n      ge_p1p1_to_p3(&u,&t);\n      ge_add(&t,&u,&Ai[aslide[i]/2]);\n    } else if (aslide[i] < 0) {\n      ge_p1p1_to_p3(&u,&t);\n      ge_sub(&t,&u,&Ai[(-aslide[i])/2]);\n    }\n\n    if (bslide[i] > 0) {\n      ge_p1p1_to_p3(&u,&t);\n      ge_madd(&t,&u,&Bi[bslide[i]/2]);\n    } else if (bslide[i] < 0) {\n      ge_p1p1_to_p3(&u,&t);\n      ge_msub(&t,&u,&Bi[(-bslide[i])/2]);\n    }\n\n    ge_p1p1_to_p2(r,&t);\n  }\n}\n\nstatic unsigned char equal(signed char b,signed char c)\n{\n  unsigned char ub = b;\n  unsigned char uc = c;\n  unsigned char x = ub ^ uc; /* 0: yes; 1..255: no */\n  crypto_uint32 y = x; /* 0: yes; 1..255: no */\n  y -= 1; /* 4294967295: yes; 0..254: no */\n  y >>= 31; /* 1: yes; 0: no */\n  return y;\n}\n\nstatic unsigned char negative(signed char b)\n{\n  unsigned long long x = b; /* 18446744073709551361..18446744073709551615: yes; 0..255: no */\n  x >>= 63; /* 1: yes; 0: no */\n  return x;\n}\n\nstatic void cmov(ge_precomp *t,ge_precomp *u,unsigned char b)\n{\n  fe_cmov(t->yplusx,u->yplusx,b);\n  fe_cmov(t->yminusx,u->yminusx,b);\n  fe_cmov(t->xy2d,u->xy2d,b);\n}\n\n\n\nstatic void select(ge_precomp *t,int pos,signed char b)\n{\n  ge_precomp minust;\n  unsigned char bnegative = negative(b);\n  unsigned char babs = b - (((-bnegative) & b) << 1);\n\n  ge_precomp_0(t);\n  cmov(t,&base[pos][0],equal(babs,1));\n  cmov(t,&base[pos][1],equal(babs,2));\n  cmov(t,&base[pos][2],equal(babs,3));\n  cmov(t,&base[pos][3],equal(babs,4));\n  cmov(t,&base[pos][4],equal(babs,5));\n  cmov(t,&base[pos][5],equal(babs,6));\n  cmov(t,&base[pos][6],equal(babs,7));\n  cmov(t,&base[pos][7],equal(babs,8));\n  fe_copy(minust.yplusx,t->yminusx);\n  fe_copy(minust.yminusx,t->yplusx);\n  fe_neg(minust.xy2d,t->xy2d);\n  cmov(t,&minust,bnegative);\n}\n\n/*\nh = a * B\nwhere a = a[0]+256*a[1]+...+256^31 a[31]\nB is the Ed25519 base point (x,4/5) with x positive.\n\nPreconditions:\n  a[31] <= 127\n*/\n\nstatic void ge_scalarmult_base(ge_p3 *h,const unsigned char *a)\n{\n  signed char e[64];\n  signed char carry;\n  ge_p1p1 r;\n  ge_p2 s;\n  ge_precomp t;\n  int i;\n\n  for (i = 0;i < 32;++i) {\n    e[2 * i + 0] = (a[i] >> 0) & 15;\n    e[2 * i + 1] = (a[i] >> 4) & 15;\n  }\n  /* each e[i] is between 0 and 15 */\n  /* e[63] is between 0 and 7 */\n\n  carry = 0;\n  for (i = 0;i < 63;++i) {\n    e[i] += carry;\n    carry = e[i] + 8;\n    carry >>= 4;\n    e[i] -= carry << 4;\n  }\n  e[63] += carry;\n  /* each e[i] is between -8 and 8 */\n\n  ge_p3_0(h);\n  for (i = 1;i < 64;i += 2) {\n    select(&t,i / 2,e[i]);\n    ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r);\n  }\n\n  ge_p3_dbl(&r,h);  ge_p1p1_to_p2(&s,&r);\n  ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r);\n  ge_p2_dbl(&r,&s); ge_p1p1_to_p2(&s,&r);\n  ge_p2_dbl(&r,&s); ge_p1p1_to_p3(h,&r);\n\n  for (i = 0;i < 64;i += 2) {\n    select(&t,i / 2,e[i]);\n    ge_madd(&r,h,&t); ge_p1p1_to_p3(h,&r);\n  }\n}\n\n/*\nInput:\n  s[0]+256*s[1]+...+256^63*s[63] = s\n\nOutput:\n  s[0]+256*s[1]+...+256^31*s[31] = s mod l\n  where l = 2^252 + 27742317777372353535851937790883648493.\n  Overwrites s in place.\n*/\n\nstatic void sc_reduce(unsigned char *s)\n{\n  crypto_int64 s0 = 2097151 & load_3(s);\n  crypto_int64 s1 = 2097151 & (load_4(s + 2) >> 5);\n  crypto_int64 s2 = 2097151 & (load_3(s + 5) >> 2);\n  crypto_int64 s3 = 2097151 & (load_4(s + 7) >> 7);\n  crypto_int64 s4 = 2097151 & (load_4(s + 10) >> 4);\n  crypto_int64 s5 = 2097151 & (load_3(s + 13) >> 1);\n  crypto_int64 s6 = 2097151 & (load_4(s + 15) >> 6);\n  crypto_int64 s7 = 2097151 & (load_3(s + 18) >> 3);\n  crypto_int64 s8 = 2097151 & load_3(s + 21);\n  crypto_int64 s9 = 2097151 & (load_4(s + 23) >> 5);\n  crypto_int64 s10 = 2097151 & (load_3(s + 26) >> 2);\n  crypto_int64 s11 = 2097151 & (load_4(s + 28) >> 7);\n  crypto_int64 s12 = 2097151 & (load_4(s + 31) >> 4);\n  crypto_int64 s13 = 2097151 & (load_3(s + 34) >> 1);\n  crypto_int64 s14 = 2097151 & (load_4(s + 36) >> 6);\n  crypto_int64 s15 = 2097151 & (load_3(s + 39) >> 3);\n  crypto_int64 s16 = 2097151 & load_3(s + 42);\n  crypto_int64 s17 = 2097151 & (load_4(s + 44) >> 5);\n  crypto_int64 s18 = 2097151 & (load_3(s + 47) >> 2);\n  crypto_int64 s19 = 2097151 & (load_4(s + 49) >> 7);\n  crypto_int64 s20 = 2097151 & (load_4(s + 52) >> 4);\n  crypto_int64 s21 = 2097151 & (load_3(s + 55) >> 1);\n  crypto_int64 s22 = 2097151 & (load_4(s + 57) >> 6);\n  crypto_int64 s23 = (load_4(s + 60) >> 3);\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n  crypto_int64 carry10;\n  crypto_int64 carry11;\n  crypto_int64 carry12;\n  crypto_int64 carry13;\n  crypto_int64 carry14;\n  crypto_int64 carry15;\n  crypto_int64 carry16;\n\n  s11 += s23 * 666643;\n  s12 += s23 * 470296;\n  s13 += s23 * 654183;\n  s14 -= s23 * 997805;\n  s15 += s23 * 136657;\n  s16 -= s23 * 683901;\n  s23 = 0;\n\n  s10 += s22 * 666643;\n  s11 += s22 * 470296;\n  s12 += s22 * 654183;\n  s13 -= s22 * 997805;\n  s14 += s22 * 136657;\n  s15 -= s22 * 683901;\n  s22 = 0;\n\n  s9 += s21 * 666643;\n  s10 += s21 * 470296;\n  s11 += s21 * 654183;\n  s12 -= s21 * 997805;\n  s13 += s21 * 136657;\n  s14 -= s21 * 683901;\n  s21 = 0;\n\n  s8 += s20 * 666643;\n  s9 += s20 * 470296;\n  s10 += s20 * 654183;\n  s11 -= s20 * 997805;\n  s12 += s20 * 136657;\n  s13 -= s20 * 683901;\n  s20 = 0;\n\n  s7 += s19 * 666643;\n  s8 += s19 * 470296;\n  s9 += s19 * 654183;\n  s10 -= s19 * 997805;\n  s11 += s19 * 136657;\n  s12 -= s19 * 683901;\n  s19 = 0;\n\n  s6 += s18 * 666643;\n  s7 += s18 * 470296;\n  s8 += s18 * 654183;\n  s9 -= s18 * 997805;\n  s10 += s18 * 136657;\n  s11 -= s18 * 683901;\n  s18 = 0;\n\n  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;\n  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;\n  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;\n  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;\n\n  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;\n  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;\n  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;\n\n  s5 += s17 * 666643;\n  s6 += s17 * 470296;\n  s7 += s17 * 654183;\n  s8 -= s17 * 997805;\n  s9 += s17 * 136657;\n  s10 -= s17 * 683901;\n  s17 = 0;\n\n  s4 += s16 * 666643;\n  s5 += s16 * 470296;\n  s6 += s16 * 654183;\n  s7 -= s16 * 997805;\n  s8 += s16 * 136657;\n  s9 -= s16 * 683901;\n  s16 = 0;\n\n  s3 += s15 * 666643;\n  s4 += s15 * 470296;\n  s5 += s15 * 654183;\n  s6 -= s15 * 997805;\n  s7 += s15 * 136657;\n  s8 -= s15 * 683901;\n  s15 = 0;\n\n  s2 += s14 * 666643;\n  s3 += s14 * 470296;\n  s4 += s14 * 654183;\n  s5 -= s14 * 997805;\n  s6 += s14 * 136657;\n  s7 -= s14 * 683901;\n  s14 = 0;\n\n  s1 += s13 * 666643;\n  s2 += s13 * 470296;\n  s3 += s13 * 654183;\n  s4 -= s13 * 997805;\n  s5 += s13 * 136657;\n  s6 -= s13 * 683901;\n  s13 = 0;\n\n  s0 += s12 * 666643;\n  s1 += s12 * 470296;\n  s2 += s12 * 654183;\n  s3 -= s12 * 997805;\n  s4 += s12 * 136657;\n  s5 -= s12 * 683901;\n  s12 = 0;\n\n  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;\n  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;\n  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;\n  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;\n\n  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;\n  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;\n  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;\n  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;\n\n  s0 += s12 * 666643;\n  s1 += s12 * 470296;\n  s2 += s12 * 654183;\n  s3 -= s12 * 997805;\n  s4 += s12 * 136657;\n  s5 -= s12 * 683901;\n  s12 = 0;\n\n  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;\n  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;\n  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;\n  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;\n  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;\n  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;\n  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;\n  carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21;\n\n  s0 += s12 * 666643;\n  s1 += s12 * 470296;\n  s2 += s12 * 654183;\n  s3 -= s12 * 997805;\n  s4 += s12 * 136657;\n  s5 -= s12 * 683901;\n  s12 = 0;\n\n  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;\n  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;\n  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;\n  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;\n  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;\n  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;\n  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;\n\n  s[0] = s0 >> 0;\n  s[1] = s0 >> 8;\n  s[2] = (s0 >> 16) | (s1 << 5);\n  s[3] = s1 >> 3;\n  s[4] = s1 >> 11;\n  s[5] = (s1 >> 19) | (s2 << 2);\n  s[6] = s2 >> 6;\n  s[7] = (s2 >> 14) | (s3 << 7);\n  s[8] = s3 >> 1;\n  s[9] = s3 >> 9;\n  s[10] = (s3 >> 17) | (s4 << 4);\n  s[11] = s4 >> 4;\n  s[12] = s4 >> 12;\n  s[13] = (s4 >> 20) | (s5 << 1);\n  s[14] = s5 >> 7;\n  s[15] = (s5 >> 15) | (s6 << 6);\n  s[16] = s6 >> 2;\n  s[17] = s6 >> 10;\n  s[18] = (s6 >> 18) | (s7 << 3);\n  s[19] = s7 >> 5;\n  s[20] = s7 >> 13;\n  s[21] = s8 >> 0;\n  s[22] = s8 >> 8;\n  s[23] = (s8 >> 16) | (s9 << 5);\n  s[24] = s9 >> 3;\n  s[25] = s9 >> 11;\n  s[26] = (s9 >> 19) | (s10 << 2);\n  s[27] = s10 >> 6;\n  s[28] = (s10 >> 14) | (s11 << 7);\n  s[29] = s11 >> 1;\n  s[30] = s11 >> 9;\n  s[31] = s11 >> 17;\n}\n\n/*\nInput:\n  a[0]+256*a[1]+...+256^31*a[31] = a\n  b[0]+256*b[1]+...+256^31*b[31] = b\n  c[0]+256*c[1]+...+256^31*c[31] = c\n\nOutput:\n  s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l\n  where l = 2^252 + 27742317777372353535851937790883648493.\n*/\n\nstatic void sc_muladd(unsigned char *s,const unsigned char *a,const unsigned char *b,const unsigned char *c)\n{\n  crypto_int64 a0 = 2097151 & load_3(a);\n  crypto_int64 a1 = 2097151 & (load_4(a + 2) >> 5);\n  crypto_int64 a2 = 2097151 & (load_3(a + 5) >> 2);\n  crypto_int64 a3 = 2097151 & (load_4(a + 7) >> 7);\n  crypto_int64 a4 = 2097151 & (load_4(a + 10) >> 4);\n  crypto_int64 a5 = 2097151 & (load_3(a + 13) >> 1);\n  crypto_int64 a6 = 2097151 & (load_4(a + 15) >> 6);\n  crypto_int64 a7 = 2097151 & (load_3(a + 18) >> 3);\n  crypto_int64 a8 = 2097151 & load_3(a + 21);\n  crypto_int64 a9 = 2097151 & (load_4(a + 23) >> 5);\n  crypto_int64 a10 = 2097151 & (load_3(a + 26) >> 2);\n  crypto_int64 a11 = (load_4(a + 28) >> 7);\n  crypto_int64 b0 = 2097151 & load_3(b);\n  crypto_int64 b1 = 2097151 & (load_4(b + 2) >> 5);\n  crypto_int64 b2 = 2097151 & (load_3(b + 5) >> 2);\n  crypto_int64 b3 = 2097151 & (load_4(b + 7) >> 7);\n  crypto_int64 b4 = 2097151 & (load_4(b + 10) >> 4);\n  crypto_int64 b5 = 2097151 & (load_3(b + 13) >> 1);\n  crypto_int64 b6 = 2097151 & (load_4(b + 15) >> 6);\n  crypto_int64 b7 = 2097151 & (load_3(b + 18) >> 3);\n  crypto_int64 b8 = 2097151 & load_3(b + 21);\n  crypto_int64 b9 = 2097151 & (load_4(b + 23) >> 5);\n  crypto_int64 b10 = 2097151 & (load_3(b + 26) >> 2);\n  crypto_int64 b11 = (load_4(b + 28) >> 7);\n  crypto_int64 c0 = 2097151 & load_3(c);\n  crypto_int64 c1 = 2097151 & (load_4(c + 2) >> 5);\n  crypto_int64 c2 = 2097151 & (load_3(c + 5) >> 2);\n  crypto_int64 c3 = 2097151 & (load_4(c + 7) >> 7);\n  crypto_int64 c4 = 2097151 & (load_4(c + 10) >> 4);\n  crypto_int64 c5 = 2097151 & (load_3(c + 13) >> 1);\n  crypto_int64 c6 = 2097151 & (load_4(c + 15) >> 6);\n  crypto_int64 c7 = 2097151 & (load_3(c + 18) >> 3);\n  crypto_int64 c8 = 2097151 & load_3(c + 21);\n  crypto_int64 c9 = 2097151 & (load_4(c + 23) >> 5);\n  crypto_int64 c10 = 2097151 & (load_3(c + 26) >> 2);\n  crypto_int64 c11 = (load_4(c + 28) >> 7);\n  crypto_int64 s0;\n  crypto_int64 s1;\n  crypto_int64 s2;\n  crypto_int64 s3;\n  crypto_int64 s4;\n  crypto_int64 s5;\n  crypto_int64 s6;\n  crypto_int64 s7;\n  crypto_int64 s8;\n  crypto_int64 s9;\n  crypto_int64 s10;\n  crypto_int64 s11;\n  crypto_int64 s12;\n  crypto_int64 s13;\n  crypto_int64 s14;\n  crypto_int64 s15;\n  crypto_int64 s16;\n  crypto_int64 s17;\n  crypto_int64 s18;\n  crypto_int64 s19;\n  crypto_int64 s20;\n  crypto_int64 s21;\n  crypto_int64 s22;\n  crypto_int64 s23;\n  crypto_int64 carry0;\n  crypto_int64 carry1;\n  crypto_int64 carry2;\n  crypto_int64 carry3;\n  crypto_int64 carry4;\n  crypto_int64 carry5;\n  crypto_int64 carry6;\n  crypto_int64 carry7;\n  crypto_int64 carry8;\n  crypto_int64 carry9;\n  crypto_int64 carry10;\n  crypto_int64 carry11;\n  crypto_int64 carry12;\n  crypto_int64 carry13;\n  crypto_int64 carry14;\n  crypto_int64 carry15;\n  crypto_int64 carry16;\n  crypto_int64 carry17;\n  crypto_int64 carry18;\n  crypto_int64 carry19;\n  crypto_int64 carry20;\n  crypto_int64 carry21;\n  crypto_int64 carry22;\n\n  s0 = c0 + a0*b0;\n  s1 = c1 + a0*b1 + a1*b0;\n  s2 = c2 + a0*b2 + a1*b1 + a2*b0;\n  s3 = c3 + a0*b3 + a1*b2 + a2*b1 + a3*b0;\n  s4 = c4 + a0*b4 + a1*b3 + a2*b2 + a3*b1 + a4*b0;\n  s5 = c5 + a0*b5 + a1*b4 + a2*b3 + a3*b2 + a4*b1 + a5*b0;\n  s6 = c6 + a0*b6 + a1*b5 + a2*b4 + a3*b3 + a4*b2 + a5*b1 + a6*b0;\n  s7 = c7 + a0*b7 + a1*b6 + a2*b5 + a3*b4 + a4*b3 + a5*b2 + a6*b1 + a7*b0;\n  s8 = c8 + a0*b8 + a1*b7 + a2*b6 + a3*b5 + a4*b4 + a5*b3 + a6*b2 + a7*b1 + a8*b0;\n  s9 = c9 + a0*b9 + a1*b8 + a2*b7 + a3*b6 + a4*b5 + a5*b4 + a6*b3 + a7*b2 + a8*b1 + a9*b0;\n  s10 = c10 + a0*b10 + a1*b9 + a2*b8 + a3*b7 + a4*b6 + a5*b5 + a6*b4 + a7*b3 + a8*b2 + a9*b1 + a10*b0;\n  s11 = c11 + a0*b11 + a1*b10 + a2*b9 + a3*b8 + a4*b7 + a5*b6 + a6*b5 + a7*b4 + a8*b3 + a9*b2 + a10*b1 + a11*b0;\n  s12 = a1*b11 + a2*b10 + a3*b9 + a4*b8 + a5*b7 + a6*b6 + a7*b5 + a8*b4 + a9*b3 + a10*b2 + a11*b1;\n  s13 = a2*b11 + a3*b10 + a4*b9 + a5*b8 + a6*b7 + a7*b6 + a8*b5 + a9*b4 + a10*b3 + a11*b2;\n  s14 = a3*b11 + a4*b10 + a5*b9 + a6*b8 + a7*b7 + a8*b6 + a9*b5 + a10*b4 + a11*b3;\n  s15 = a4*b11 + a5*b10 + a6*b9 + a7*b8 + a8*b7 + a9*b6 + a10*b5 + a11*b4;\n  s16 = a5*b11 + a6*b10 + a7*b9 + a8*b8 + a9*b7 + a10*b6 + a11*b5;\n  s17 = a6*b11 + a7*b10 + a8*b9 + a9*b8 + a10*b7 + a11*b6;\n  s18 = a7*b11 + a8*b10 + a9*b9 + a10*b8 + a11*b7;\n  s19 = a8*b11 + a9*b10 + a10*b9 + a11*b8;\n  s20 = a9*b11 + a10*b10 + a11*b9;\n  s21 = a10*b11 + a11*b10;\n  s22 = a11*b11;\n  s23 = 0;\n\n  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;\n  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;\n  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;\n  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;\n  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;\n  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;\n  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;\n  carry18 = (s18 + (1<<20)) >> 21; s19 += carry18; s18 -= carry18 << 21;\n  carry20 = (s20 + (1<<20)) >> 21; s21 += carry20; s20 -= carry20 << 21;\n  carry22 = (s22 + (1<<20)) >> 21; s23 += carry22; s22 -= carry22 << 21;\n\n  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;\n  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;\n  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;\n  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;\n  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;\n  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;\n  carry17 = (s17 + (1<<20)) >> 21; s18 += carry17; s17 -= carry17 << 21;\n  carry19 = (s19 + (1<<20)) >> 21; s20 += carry19; s19 -= carry19 << 21;\n  carry21 = (s21 + (1<<20)) >> 21; s22 += carry21; s21 -= carry21 << 21;\n\n  s11 += s23 * 666643;\n  s12 += s23 * 470296;\n  s13 += s23 * 654183;\n  s14 -= s23 * 997805;\n  s15 += s23 * 136657;\n  s16 -= s23 * 683901;\n  s23 = 0;\n\n  s10 += s22 * 666643;\n  s11 += s22 * 470296;\n  s12 += s22 * 654183;\n  s13 -= s22 * 997805;\n  s14 += s22 * 136657;\n  s15 -= s22 * 683901;\n  s22 = 0;\n\n  s9 += s21 * 666643;\n  s10 += s21 * 470296;\n  s11 += s21 * 654183;\n  s12 -= s21 * 997805;\n  s13 += s21 * 136657;\n  s14 -= s21 * 683901;\n  s21 = 0;\n\n  s8 += s20 * 666643;\n  s9 += s20 * 470296;\n  s10 += s20 * 654183;\n  s11 -= s20 * 997805;\n  s12 += s20 * 136657;\n  s13 -= s20 * 683901;\n  s20 = 0;\n\n  s7 += s19 * 666643;\n  s8 += s19 * 470296;\n  s9 += s19 * 654183;\n  s10 -= s19 * 997805;\n  s11 += s19 * 136657;\n  s12 -= s19 * 683901;\n  s19 = 0;\n\n  s6 += s18 * 666643;\n  s7 += s18 * 470296;\n  s8 += s18 * 654183;\n  s9 -= s18 * 997805;\n  s10 += s18 * 136657;\n  s11 -= s18 * 683901;\n  s18 = 0;\n\n  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;\n  carry12 = (s12 + (1<<20)) >> 21; s13 += carry12; s12 -= carry12 << 21;\n  carry14 = (s14 + (1<<20)) >> 21; s15 += carry14; s14 -= carry14 << 21;\n  carry16 = (s16 + (1<<20)) >> 21; s17 += carry16; s16 -= carry16 << 21;\n\n  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;\n  carry13 = (s13 + (1<<20)) >> 21; s14 += carry13; s13 -= carry13 << 21;\n  carry15 = (s15 + (1<<20)) >> 21; s16 += carry15; s15 -= carry15 << 21;\n\n  s5 += s17 * 666643;\n  s6 += s17 * 470296;\n  s7 += s17 * 654183;\n  s8 -= s17 * 997805;\n  s9 += s17 * 136657;\n  s10 -= s17 * 683901;\n  s17 = 0;\n\n  s4 += s16 * 666643;\n  s5 += s16 * 470296;\n  s6 += s16 * 654183;\n  s7 -= s16 * 997805;\n  s8 += s16 * 136657;\n  s9 -= s16 * 683901;\n  s16 = 0;\n\n  s3 += s15 * 666643;\n  s4 += s15 * 470296;\n  s5 += s15 * 654183;\n  s6 -= s15 * 997805;\n  s7 += s15 * 136657;\n  s8 -= s15 * 683901;\n  s15 = 0;\n\n  s2 += s14 * 666643;\n  s3 += s14 * 470296;\n  s4 += s14 * 654183;\n  s5 -= s14 * 997805;\n  s6 += s14 * 136657;\n  s7 -= s14 * 683901;\n  s14 = 0;\n\n  s1 += s13 * 666643;\n  s2 += s13 * 470296;\n  s3 += s13 * 654183;\n  s4 -= s13 * 997805;\n  s5 += s13 * 136657;\n  s6 -= s13 * 683901;\n  s13 = 0;\n\n  s0 += s12 * 666643;\n  s1 += s12 * 470296;\n  s2 += s12 * 654183;\n  s3 -= s12 * 997805;\n  s4 += s12 * 136657;\n  s5 -= s12 * 683901;\n  s12 = 0;\n\n  carry0 = (s0 + (1<<20)) >> 21; s1 += carry0; s0 -= carry0 << 21;\n  carry2 = (s2 + (1<<20)) >> 21; s3 += carry2; s2 -= carry2 << 21;\n  carry4 = (s4 + (1<<20)) >> 21; s5 += carry4; s4 -= carry4 << 21;\n  carry6 = (s6 + (1<<20)) >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry8 = (s8 + (1<<20)) >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry10 = (s10 + (1<<20)) >> 21; s11 += carry10; s10 -= carry10 << 21;\n\n  carry1 = (s1 + (1<<20)) >> 21; s2 += carry1; s1 -= carry1 << 21;\n  carry3 = (s3 + (1<<20)) >> 21; s4 += carry3; s3 -= carry3 << 21;\n  carry5 = (s5 + (1<<20)) >> 21; s6 += carry5; s5 -= carry5 << 21;\n  carry7 = (s7 + (1<<20)) >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry9 = (s9 + (1<<20)) >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry11 = (s11 + (1<<20)) >> 21; s12 += carry11; s11 -= carry11 << 21;\n\n  s0 += s12 * 666643;\n  s1 += s12 * 470296;\n  s2 += s12 * 654183;\n  s3 -= s12 * 997805;\n  s4 += s12 * 136657;\n  s5 -= s12 * 683901;\n  s12 = 0;\n\n  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;\n  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;\n  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;\n  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;\n  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;\n  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;\n  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;\n  carry11 = s11 >> 21; s12 += carry11; s11 -= carry11 << 21;\n\n  s0 += s12 * 666643;\n  s1 += s12 * 470296;\n  s2 += s12 * 654183;\n  s3 -= s12 * 997805;\n  s4 += s12 * 136657;\n  s5 -= s12 * 683901;\n  s12 = 0;\n\n  carry0 = s0 >> 21; s1 += carry0; s0 -= carry0 << 21;\n  carry1 = s1 >> 21; s2 += carry1; s1 -= carry1 << 21;\n  carry2 = s2 >> 21; s3 += carry2; s2 -= carry2 << 21;\n  carry3 = s3 >> 21; s4 += carry3; s3 -= carry3 << 21;\n  carry4 = s4 >> 21; s5 += carry4; s4 -= carry4 << 21;\n  carry5 = s5 >> 21; s6 += carry5; s5 -= carry5 << 21;\n  carry6 = s6 >> 21; s7 += carry6; s6 -= carry6 << 21;\n  carry7 = s7 >> 21; s8 += carry7; s7 -= carry7 << 21;\n  carry8 = s8 >> 21; s9 += carry8; s8 -= carry8 << 21;\n  carry9 = s9 >> 21; s10 += carry9; s9 -= carry9 << 21;\n  carry10 = s10 >> 21; s11 += carry10; s10 -= carry10 << 21;\n\n  s[0] = s0 >> 0;\n  s[1] = s0 >> 8;\n  s[2] = (s0 >> 16) | (s1 << 5);\n  s[3] = s1 >> 3;\n  s[4] = s1 >> 11;\n  s[5] = (s1 >> 19) | (s2 << 2);\n  s[6] = s2 >> 6;\n  s[7] = (s2 >> 14) | (s3 << 7);\n  s[8] = s3 >> 1;\n  s[9] = s3 >> 9;\n  s[10] = (s3 >> 17) | (s4 << 4);\n  s[11] = s4 >> 4;\n  s[12] = s4 >> 12;\n  s[13] = (s4 >> 20) | (s5 << 1);\n  s[14] = s5 >> 7;\n  s[15] = (s5 >> 15) | (s6 << 6);\n  s[16] = s6 >> 2;\n  s[17] = s6 >> 10;\n  s[18] = (s6 >> 18) | (s7 << 3);\n  s[19] = s7 >> 5;\n  s[20] = s7 >> 13;\n  s[21] = s8 >> 0;\n  s[22] = s8 >> 8;\n  s[23] = (s8 >> 16) | (s9 << 5);\n  s[24] = s9 >> 3;\n  s[25] = s9 >> 11;\n  s[26] = (s9 >> 19) | (s10 << 2);\n  s[27] = s10 >> 6;\n  s[28] = (s10 >> 14) | (s11 << 7);\n  s[29] = s11 >> 1;\n  s[30] = s11 >> 9;\n  s[31] = s11 >> 17;\n}\n\n/*\nint crypto_sign_keypair(unsigned char *pk,unsigned char *sk)\n{\n  unsigned char h[64];\n  ge_p3 A;\n  int i;\n\n  randombytes(sk,32);\n  crypto_hash_sha512(h,sk,32);\n  h[0] &= 248;\n  h[31] &= 63;\n  h[31] |= 64;\n\n  ge_scalarmult_base(&A,h);\n  ge_p3_tobytes(pk,&A);\n\n  for (i = 0;i < 32;++i) sk[32 + i] = pk[i];\n  return 0;\n}\n*/\n\nint crypto_sign_pk_ref10(unsigned char *pk,unsigned char *sk)\n{\n  unsigned char h[64];\n  ge_p3 A;\n  int i;\n\n  crypto_hash_sha512(h,sk,32);\n  h[0] &= 248;\n  h[31] &= 63;\n  h[31] |= 64;\n\n  ge_scalarmult_base(&A,h);\n  ge_p3_tobytes(pk,&A);\n\n  for (i = 0;i < 32;++i) sk[32 + i] = pk[i];\n  return 0;\n}\n\nint crypto_sign_ref10(\n  unsigned char *sm,unsigned long long *smlen,\n  const unsigned char *m,unsigned long long mlen,\n  const unsigned char *sk\n)\n{\n  unsigned char az[64];\n  unsigned char r[64];\n  unsigned char hram[64];\n  ge_p3 R;\n  unsigned long long i;\n\n  crypto_hash_sha512(az,sk,32);\n  az[0] &= 248;\n  az[31] &= 63;\n  az[31] |= 64;\n\n  *smlen = mlen + 64;\n  for (i = 0;i < mlen;++i) sm[64 + i] = m[i];\n  for (i = 0;i < 32;++i) sm[32 + i] = az[32 + i];\n  crypto_hash_sha512(r,sm + 32,mlen + 32);\n  for (i = 0;i < 32;++i) sm[32 + i] = sk[32 + i];\n\n  sc_reduce(r);\n  ge_scalarmult_base(&R,r);\n  ge_p3_tobytes(sm,&R);\n\n  crypto_hash_sha512(hram,sm,mlen + 64);\n  sc_reduce(hram);\n  sc_muladd(sm + 32,hram,az,r);\n\n  return 0;\n}\n\nint crypto_sign_open_ref10(\n  unsigned char *m,unsigned long long *mlen,\n  const unsigned char *sm,unsigned long long smlen,\n  const unsigned char *pk\n)\n{\n  unsigned char h[64];\n  unsigned char checkr[32];\n  ge_p3 A;\n  ge_p2 R;\n  unsigned long long i;\n\n  *mlen = -1;\n  if (smlen < 64) return -1;\n  if (sm[63] & 224) return -1;\n  if (ge_frombytes_negate_vartime(&A,pk) != 0) return -1;\n\n  for (i = 0;i < smlen;++i) m[i] = sm[i];\n  for (i = 0;i < 32;++i) m[32 + i] = pk[i];\n  crypto_hash_sha512(h,m,smlen);\n  sc_reduce(h);\n\n  ge_double_scalarmult_vartime(&R,h,&A,sm + 32);\n  ge_tobytes(checkr,&R);\n  if (crypto_verify_32(checkr,sm) != 0) {\n    for (i = 0;i < smlen;++i) m[i] = 0;\n    return -1;\n  }\n\n  for (i = 0;i < smlen - 64;++i) m[i] = sm[64 + i];\n  for (i = smlen - 64;i < smlen;++i) m[i] = 0;\n  *mlen = smlen - 64;\n  return 0;\n}\n\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/ed25519-ref10.h",
    "content": "#ifndef ED25519_REF10_H\n#define ED25519_REF10_H\n\nint crypto_sign_pk_ref10(unsigned char *pk,unsigned char *sk);\nint crypto_sign_ref10(unsigned char *sm,unsigned long long *smlen,const unsigned char *m,unsigned long long mlen,const unsigned char *sk);\nint crypto_sign_open_ref10(unsigned char *m,unsigned long long *mlen,const unsigned char *sm,unsigned long long smlen,const unsigned char *pk);\n\n#endif /* ED25519_REF10_H */\n\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/fuzz-curve25519.c",
    "content": "#if defined(_WIN32)\n\t#include <windows.h>\n\t#include <wincrypt.h>\n\ttypedef unsigned int uint32_t;\n\ttypedef unsigned __int64 uint64_t;\n#else\n\t#include <stdint.h>\n#endif\n\n#include <string.h>\n#include <stdio.h>\n\n#include \"ed25519-donna.h\"\n#include \"curve25519-ref10.h\"\n\nstatic void\nprint_diff(const char *desc, const unsigned char *a, const unsigned char *b, size_t len) {\n\tsize_t p = 0;\n\tunsigned char diff;\n\tprintf(\"%s diff:\\n\", desc);\n\twhile (len--) {\n\t\tdiff = *a++ ^ *b++;\n\t\tif (!diff)\n\t\t\tprintf(\"____,\");\n\t\telse\n\t\t\tprintf(\"0x%02x,\", diff);\n\t\tif ((++p & 15) == 0)\n\t\t\tprintf(\"\\n\");\n\t}\n\tprintf(\"\\n\\n\");\n}\n\nstatic void\nprint_bytes(const char *desc, const unsigned char *bytes, size_t len) {\n\tsize_t p = 0;\n\tprintf(\"%s:\\n\", desc);\n\twhile (len--) {\n\t\tprintf(\"0x%02x,\", *bytes++);\n\t\tif ((++p & 15) == 0)\n\t\t\tprintf(\"\\n\");\n\t}\n\tprintf(\"\\n\\n\");\n}\n\n\n/* chacha20/12 prng */\nvoid\nprng(unsigned char *out, size_t bytes) {\n\tstatic uint32_t state[16];\n\tstatic int init = 0;\n\tuint32_t x[16], t;\n\tsize_t i;\n\n\tif (!init) {\n\t#if defined(_WIN32)\n\t\tHCRYPTPROV csp;\n\t\tif (!CryptAcquireContext(&csp, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {\n\t\t\tprintf(\"CryptAcquireContext failed\\n\");\n\t\t\texit(1);\n\t\t}\n\t\tif (!CryptGenRandom(csp, (DWORD)sizeof(state), (BYTE*)state)) {\n\t\t\tprintf(\"CryptGenRandom failed\\n\");\n\t\t\texit(1);\n\t\t}\n\t\tCryptReleaseContext(csp, 0);\n\t#else\n\t\tFILE *f = NULL;\n\t\tf = fopen(\"/dev/urandom\", \"rb\");\n\t\tif (!f) {\n\t\t\tprintf(\"failed to open /dev/urandom\\n\");\n\t\t\texit(1);\n\t\t}\n\t\tif (fread(state, sizeof(state), 1, f) != 1) {\n\t\t\tprintf(\"read error on /dev/urandom\\n\");\n\t\t\texit(1);\n\t\t}\n\t#endif\n\t\tinit = 1;\n\t}\n\n\twhile (bytes) {\n\t\tfor (i = 0; i < 16; i++) x[i] = state[i];\n\n\t\t#define rotl32(x,k) ((x << k) | (x >> (32 - k)))\n\t\t#define quarter(a,b,c,d) \\\n\t\t\tx[a] += x[b]; t = x[d]^x[a]; x[d] = rotl32(t,16); \\\n\t\t\tx[c] += x[d]; t = x[b]^x[c]; x[b] = rotl32(t,12); \\\n\t\t\tx[a] += x[b]; t = x[d]^x[a]; x[d] = rotl32(t, 8); \\\n\t\t\tx[c] += x[d]; t = x[b]^x[c]; x[b] = rotl32(t, 7);\n\n\t\tfor (i = 0; i < 12; i += 2) {\n\t\t\tquarter( 0, 4, 8,12)\n\t\t\tquarter( 1, 5, 9,13)\n\t\t\tquarter( 2, 6,10,14)\n\t\t\tquarter( 3, 7,11,15)\n\t\t\tquarter( 0, 5,10,15)\n\t\t\tquarter( 1, 6,11,12)\n\t\t\tquarter( 2, 7, 8,13)\n\t\t\tquarter( 3, 4, 9,14)\n\t\t};\n\n\t\tif (bytes <= 64) {\n\t\t\tmemcpy(out, x, bytes);\n\t\t\tbytes = 0;\n\t\t} else {\n\t\t\tmemcpy(out, x, 64);\n\t\t\tbytes -= 64;\n\t\t\tout += 64;\n\t\t}\n\n\t\t/* don't need a nonce, so last 4 words are the counter. 2^136 bytes can be generated */\n\t\tif (!++state[12]) if (!++state[13]) if (!++state[14]) ++state[15];\n\t}\n}\n\n\n\nint main() {\n\tconst size_t skmax = 1024;\n\tstatic unsigned char sk[1024][32];\n\tunsigned char pk[3][32];\n\tunsigned char *skp;\n\tsize_t ski, pki, i;\n\tuint64_t ctr;\n\n\tprintf(\"fuzzing: \");\n\tprintf(\" ref10\");\n\tprintf(\" curved25519\");\n#if defined(ED25519_SSE2)\n\tprintf(\" curved25519-sse2\");\n#endif\n\tprintf(\"\\n\\n\");\n\n\tfor (ctr = 0, ski = skmax;;ctr++) {\n\t\tif (ski == skmax) {\n\t\t\tprng((unsigned char *)sk, sizeof(sk));\n\t\t\tski = 0;\n\t\t}\n\t\tskp = sk[ski++];\n\n\t\tpki = 0;\n\t\tcrypto_scalarmult_base_ref10(pk[pki++], skp);\n\t\tcurved25519_scalarmult_basepoint(pk[pki++],  skp);\n\t\t#if defined(ED25519_SSE2)\n\t\t\tcurved25519_scalarmult_basepoint_sse2(pk[pki++], skp);\n\t\t#endif\n\n\t\tfor (i = 1; i < pki; i++) {\n\t\t\tif (memcmp(pk[0], pk[i], 32) != 0) {\n\t\t\t\tprintf(\"\\n\\n\");\n\t\t\t\tprint_bytes(\"sk\",  skp, 32);\n\t\t\t\tprint_bytes(\"ref10\", pk[0], 32);\n\t\t\t\tprint_diff(\"curved25519\", pk[0], pk[1], 32);\n\t\t\t\t#if defined(ED25519_SSE2)\n\t\t\t\t\tprint_diff(\"curved25519-sse2\", pk[0], pk[2], 32);\n\t\t\t\t#endif\n\t\t\t\texit(1);\n\t\t\t}\n\t\t}\n\n\t\tif (ctr && (ctr % 0x1000 == 0)) {\n\t\t\tprintf(\".\");\n\t\t\tif ((ctr % 0x20000) == 0) {\n\t\t\t\tprintf(\" [\");\n\t\t\t\tfor (i = 0; i < 8; i++)\n\t\t\t\t\tprintf(\"%02x\", (unsigned char)(ctr >> ((7 - i) * 8)));\n\t\t\t\tprintf(\"]\\n\");\n\t\t\t}\n\t\t}\n\t}\n}\n\n"
  },
  {
    "path": "src/crypto/ed25519/fuzz/fuzz-ed25519.c",
    "content": "#if defined(_WIN32)\n\t#include <windows.h>\n\t#include <wincrypt.h>\n\ttypedef unsigned int uint32_t;\n#else\n\t#include <stdint.h>\n#endif\n\n#include <string.h>\n#include <stdio.h>\n\n#include \"ed25519-donna.h\"\n#include \"ed25519-ref10.h\"\n\nstatic void\nprint_diff(const char *desc, const unsigned char *a, const unsigned char *b, size_t len) {\n\tsize_t p = 0;\n\tunsigned char diff;\n\tprintf(\"%s diff:\\n\", desc);\n\twhile (len--) {\n\t\tdiff = *a++ ^ *b++;\n\t\tif (!diff)\n\t\t\tprintf(\"____,\");\n\t\telse\n\t\t\tprintf(\"0x%02x,\", diff);\n\t\tif ((++p & 15) == 0)\n\t\t\tprintf(\"\\n\");\n\t}\n\tprintf(\"\\n\");\n}\n\nstatic void\nprint_bytes(const char *desc, const unsigned char *bytes, size_t len) {\n\tsize_t p = 0;\n\tprintf(\"%s:\\n\", desc);\n\twhile (len--) {\n\t\tprintf(\"0x%02x,\", *bytes++);\n\t\tif ((++p & 15) == 0)\n\t\t\tprintf(\"\\n\");\n\t}\n\tprintf(\"\\n\");\n}\n\n\n/* chacha20/12 prng */\nvoid\nprng(unsigned char *out, size_t bytes) {\n\tstatic uint32_t state[16];\n\tstatic int init = 0;\n\tuint32_t x[16], t;\n\tsize_t i;\n\n\tif (!init) {\n\t#if defined(_WIN32)\n\t\tHCRYPTPROV csp = NULL;\n\t\tif (!CryptAcquireContext(&csp, 0, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {\n\t\t\tprintf(\"CryptAcquireContext failed\\n\");\n\t\t\texit(1);\n\t\t}\n\t\tif (!CryptGenRandom(csp, (DWORD)sizeof(state), (BYTE*)state)) {\n\t\t\tprintf(\"CryptGenRandom failed\\n\");\n\t\t\texit(1);\n\t\t}\n\t\tCryptReleaseContext(csp, 0);\n\t#else\n\t\tFILE *f = NULL;\n\t\tf = fopen(\"/dev/urandom\", \"rb\");\n\t\tif (!f) {\n\t\t\tprintf(\"failed to open /dev/urandom\\n\");\n\t\t\texit(1);\n\t\t}\n\t\tif (fread(state, sizeof(state), 1, f) != 1) {\n\t\t\tprintf(\"read error on /dev/urandom\\n\");\n\t\t\texit(1);\n\t\t}\n\t#endif\n\t\tinit = 1;\n\t}\n\n\twhile (bytes) {\n\t\tfor (i = 0; i < 16; i++) x[i] = state[i];\n\n\t\t#define rotl32(x,k) ((x << k) | (x >> (32 - k)))\n\t\t#define quarter(a,b,c,d) \\\n\t\t\tx[a] += x[b]; t = x[d]^x[a]; x[d] = rotl32(t,16); \\\n\t\t\tx[c] += x[d]; t = x[b]^x[c]; x[b] = rotl32(t,12); \\\n\t\t\tx[a] += x[b]; t = x[d]^x[a]; x[d] = rotl32(t, 8); \\\n\t\t\tx[c] += x[d]; t = x[b]^x[c]; x[b] = rotl32(t, 7);\n\n\t\tfor (i = 0; i < 12; i += 2) {\n\t\t\tquarter( 0, 4, 8,12)\n\t\t\tquarter( 1, 5, 9,13)\n\t\t\tquarter( 2, 6,10,14)\n\t\t\tquarter( 3, 7,11,15)\n\t\t\tquarter( 0, 5,10,15)\n\t\t\tquarter( 1, 6,11,12)\n\t\t\tquarter( 2, 7, 8,13)\n\t\t\tquarter( 3, 4, 9,14)\n\t\t};\n\n\t\tif (bytes <= 64) {\n\t\t\tmemcpy(out, x, bytes);\n\t\t\tbytes = 0;\n\t\t} else {\n\t\t\tmemcpy(out, x, 64);\n\t\t\tbytes -= 64;\n\t\t\tout += 64;\n\t\t}\n\n\t\t/* don't need a nonce, so last 4 words are the counter. 2^136 bytes can be generated */\n\t\tif (!++state[12]) if (!++state[13]) if (!++state[14]) ++state[15];\n\t}\n}\n\ntypedef struct random_data_t {\n\tunsigned char sk[32];\n\tunsigned char m[128];\n} random_data;\n\ntypedef struct generated_data_t {\n\tunsigned char pk[32];\n\tunsigned char sig[64];\n\tint valid;\n} generated_data;\n\nstatic void\nprint_generated(const char *desc, generated_data *g) {\n\tprintf(\"%s:\\n\", desc);\n\tprint_bytes(\"pk\", g->pk, 32);\n\tprint_bytes(\"sig\", g->sig, 64);\n\tprintf(\"valid: %s\\n\\n\", g->valid ? \"no\" : \"yes\");\n}\n\nstatic void\nprint_generated_diff(const char *desc, const generated_data *base, generated_data *g) {\n\tprintf(\"%s:\\n\", desc);\n\tprint_diff(\"pk\", base->pk, g->pk, 32);\n\tprint_diff(\"sig\", base->sig, g->sig, 64);\n\tprintf(\"valid: %s\\n\\n\", (base->valid == g->valid) ? \"___\" : (g->valid ? \"no\" : \"yes\"));\n}\n\nint main() {\n\tconst size_t rndmax = 128;\n\tstatic random_data rnd[128];\n\tstatic generated_data gen[3];\n\trandom_data *r;\n\tgenerated_data *g;\n\tunsigned long long dummylen;\n\tunsigned char dummysk[64];\n\tunsigned char dummymsg[2][128+64];\n\tsize_t rndi, geni, i, j;\n\tuint64_t ctr;\n\n\tprintf(\"fuzzing: \");\n\tprintf(\" ref10\");\n\tprintf(\" ed25519-donna\");\n#if defined(ED25519_SSE2)\n\tprintf(\" ed25519-donna-sse2\");\n#endif\n\tprintf(\"\\n\\n\");\n\n\tfor (ctr = 0, rndi = rndmax;;ctr++) {\n\t\tif (rndi == rndmax) {\n\t\t\tprng((unsigned char *)rnd, sizeof(rnd));\n\t\t\trndi = 0;\n\t\t}\n\t\tr = &rnd[rndi++];\n\n\t\t/* ref10, lots of horrible gymnastics to work around the wonky api */\n\t\tgeni = 0;\n\t\tg = &gen[geni++];\n\t\tmemcpy(dummysk, r->sk, 32); /* pk is appended to the sk, need to copy the sk to a larger buffer */\n\t\tcrypto_sign_pk_ref10(dummysk + 32, dummysk);\n\t\tmemcpy(g->pk, dummysk + 32, 32); \n\t\tcrypto_sign_ref10(dummymsg[0], &dummylen, r->m, 128, dummysk);\n\t\tmemcpy(g->sig, dummymsg[0], 64); /* sig is placed in front of the signed message */\n\t\tg->valid = crypto_sign_open_ref10(dummymsg[1], &dummylen, dummymsg[0], 128 + 64, g->pk);\n\n\t\t/* ed25519-donna */\n\t\tg = &gen[geni++];\n\t\ted25519_publickey(r->sk, g->pk);\n\t\ted25519_sign(r->m, 128, r->sk, g->pk, g->sig);\n\t\tg->valid = ed25519_sign_open(r->m, 128, g->pk, g->sig);\n\n\t\t#if defined(ED25519_SSE2)\n\t\t\t/* ed25519-donna-sse2 */\n\t\t\tg = &gen[geni++];\n\t\t\ted25519_publickey_sse2(r->sk, g->pk);\n\t\t\ted25519_sign_sse2(r->m, 128, r->sk, g->pk, g->sig);\n\t\t\tg->valid = ed25519_sign_open_sse2(r->m, 128, g->pk, g->sig);\n\t\t#endif\n\n\t\t/* compare implementations 1..geni against the reference */\n\t\tfor (i = 1; i < geni; i++) {\n\t\t\tif (memcmp(&gen[0], &gen[i], sizeof(generated_data)) != 0) {\n\t\t\t\tprintf(\"\\n\\n\");\n\t\t\t\tprint_bytes(\"sk\", r->sk, 32);\n\t\t\t\tprint_bytes(\"m\", r->m, 128);\n\t\t\t\tprint_generated(\"ref10\", &gen[0]);\n\t\t\t\tprint_generated_diff(\"ed25519-donna\", &gen[0], &gen[1]);\n\t\t\t\t#if defined(ED25519_SSE2)\n\t\t\t\t\tprint_generated_diff(\"ed25519-donna-sse2\", &gen[0], &gen[2]);\n\t\t\t\t#endif\n\t\t\t\texit(1);\n\t\t\t}\n\t\t}\n\n\t\t/* print out status */\n\t\tif (ctr && (ctr % 0x1000 == 0)) {\n\t\t\tprintf(\".\");\n\t\t\tif ((ctr % 0x20000) == 0) {\n\t\t\t\tprintf(\" [\");\n\t\t\t\tfor (i = 0; i < 8; i++)\n\t\t\t\t\tprintf(\"%02x\", (unsigned char)(ctr >> ((7 - i) * 8)));\n\t\t\t\tprintf(\"]\\n\");\n\t\t\t}\n\t\t}\n\t}\n}"
  },
  {
    "path": "src/crypto/ed25519/modm-donna-32bit.h",
    "content": "/*\n\tPublic domain by Andrew M. <liquidsun@gmail.com>\n*/\n\n\n/*\n\tArithmetic modulo the group order n = 2^252 +  27742317777372353535851937790883648493 = 7237005577332262213973186563042994240857116359379907606001950938285454250989\n\n\tk = 32\n\tb = 1 << 8 = 256\n\tm = 2^252 + 27742317777372353535851937790883648493 = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed\n\tmu = floor( b^(k*2) / m ) = 0xfffffffffffffffffffffffffffffffeb2106215d086329a7ed9ce5a30a2c131b\n*/\n\n#define bignum256modm_bits_per_limb 30\n#define bignum256modm_limb_size 9\n\ntypedef uint32_t bignum256modm_element_t;\ntypedef bignum256modm_element_t bignum256modm[9];\n\nstatic const bignum256modm modm_m = {\n\t0x1cf5d3ed, 0x20498c69, 0x2f79cd65, 0x37be77a8,\n\t0x00000014,\t0x00000000, 0x00000000,\t0x00000000,\n\t0x00001000\n};\n\nstatic const bignum256modm modm_mu = {\n\t0x0a2c131b, 0x3673968c, 0x06329a7e, 0x01885742,\n\t0x3fffeb21, 0x3fffffff, 0x3fffffff, 0x3fffffff,\n\t0x000fffff\n};\n\nstatic bignum256modm_element_t\nlt_modm(bignum256modm_element_t a, bignum256modm_element_t b) {\n\treturn (a - b) >> 31;\n}\n\n/* see HAC, Alg. 14.42 Step 4 */\nstatic void\nreduce256_modm(bignum256modm r) {\n\tbignum256modm t;\n\tbignum256modm_element_t b = 0, pb, mask;\n\n\t/* t = r - m */\n\tpb = 0;\n\tpb += modm_m[0]; b = lt_modm(r[0], pb); t[0] = (r[0] - pb + (b << 30)); pb = b;\n\tpb += modm_m[1]; b = lt_modm(r[1], pb); t[1] = (r[1] - pb + (b << 30)); pb = b;\n\tpb += modm_m[2]; b = lt_modm(r[2], pb); t[2] = (r[2] - pb + (b << 30)); pb = b;\n\tpb += modm_m[3]; b = lt_modm(r[3], pb); t[3] = (r[3] - pb + (b << 30)); pb = b;\n\tpb += modm_m[4]; b = lt_modm(r[4], pb); t[4] = (r[4] - pb + (b << 30)); pb = b;\n\tpb += modm_m[5]; b = lt_modm(r[5], pb); t[5] = (r[5] - pb + (b << 30)); pb = b;\n\tpb += modm_m[6]; b = lt_modm(r[6], pb); t[6] = (r[6] - pb + (b << 30)); pb = b;\n\tpb += modm_m[7]; b = lt_modm(r[7], pb); t[7] = (r[7] - pb + (b << 30)); pb = b;\n\tpb += modm_m[8]; b = lt_modm(r[8], pb); t[8] = (r[8] - pb + (b << 16));\n\n\t/* keep r if r was smaller than m */\n\tmask = b - 1;\n\tr[0] ^= mask & (r[0] ^ t[0]);\n\tr[1] ^= mask & (r[1] ^ t[1]);\n\tr[2] ^= mask & (r[2] ^ t[2]);\n\tr[3] ^= mask & (r[3] ^ t[3]);\n\tr[4] ^= mask & (r[4] ^ t[4]);\n\tr[5] ^= mask & (r[5] ^ t[5]);\n\tr[6] ^= mask & (r[6] ^ t[6]);\n\tr[7] ^= mask & (r[7] ^ t[7]);\n\tr[8] ^= mask & (r[8] ^ t[8]);\n}\n\n/*\n\tBarrett reduction,  see HAC, Alg. 14.42\n\n\tInstead of passing in x, pre-process in to q1 and r1 for efficiency\n*/\nstatic void\nbarrett_reduce256_modm(bignum256modm r, const bignum256modm q1, const bignum256modm r1) {\n\tbignum256modm q3, r2;\n\tuint64_t c;\n\tbignum256modm_element_t f, b, pb;\n\n\t/* q1 = x >> 248 = 264 bits = 9 30 bit elements\n\t   q2 = mu * q1\n\t   q3 = (q2 / 256(32+1)) = q2 / (2^8)^(32+1) = q2 >> 264 */\n\tc  = mul32x32_64(modm_mu[0], q1[7]) + mul32x32_64(modm_mu[1], q1[6]) + mul32x32_64(modm_mu[2], q1[5]) + mul32x32_64(modm_mu[3], q1[4]) + mul32x32_64(modm_mu[4], q1[3]) + mul32x32_64(modm_mu[5], q1[2]) + mul32x32_64(modm_mu[6], q1[1]) + mul32x32_64(modm_mu[7], q1[0]); \n\tc >>= 30;\n\tc += mul32x32_64(modm_mu[0], q1[8]) + mul32x32_64(modm_mu[1], q1[7]) + mul32x32_64(modm_mu[2], q1[6]) + mul32x32_64(modm_mu[3], q1[5]) + mul32x32_64(modm_mu[4], q1[4]) + mul32x32_64(modm_mu[5], q1[3]) + mul32x32_64(modm_mu[6], q1[2]) + mul32x32_64(modm_mu[7], q1[1]) + mul32x32_64(modm_mu[8], q1[0]);\n\tf = (bignum256modm_element_t)c; q3[0] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[1], q1[8]) + mul32x32_64(modm_mu[2], q1[7]) + mul32x32_64(modm_mu[3], q1[6]) + mul32x32_64(modm_mu[4], q1[5]) + mul32x32_64(modm_mu[5], q1[4]) + mul32x32_64(modm_mu[6], q1[3]) + mul32x32_64(modm_mu[7], q1[2]) + mul32x32_64(modm_mu[8], q1[1]);\n\tf = (bignum256modm_element_t)c; q3[0] |= (f << 6) & 0x3fffffff; q3[1] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[2], q1[8]) + mul32x32_64(modm_mu[3], q1[7]) + mul32x32_64(modm_mu[4], q1[6]) + mul32x32_64(modm_mu[5], q1[5]) + mul32x32_64(modm_mu[6], q1[4]) + mul32x32_64(modm_mu[7], q1[3]) + mul32x32_64(modm_mu[8], q1[2]);\n\tf = (bignum256modm_element_t)c; q3[1] |= (f << 6) & 0x3fffffff; q3[2] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[3], q1[8]) + mul32x32_64(modm_mu[4], q1[7]) + mul32x32_64(modm_mu[5], q1[6]) + mul32x32_64(modm_mu[6], q1[5]) + mul32x32_64(modm_mu[7], q1[4]) + mul32x32_64(modm_mu[8], q1[3]);\n\tf = (bignum256modm_element_t)c; q3[2] |= (f << 6) & 0x3fffffff; q3[3] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[4], q1[8]) + mul32x32_64(modm_mu[5], q1[7]) + mul32x32_64(modm_mu[6], q1[6]) + mul32x32_64(modm_mu[7], q1[5]) + mul32x32_64(modm_mu[8], q1[4]);\n\tf = (bignum256modm_element_t)c; q3[3] |= (f << 6) & 0x3fffffff; q3[4] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[5], q1[8]) + mul32x32_64(modm_mu[6], q1[7]) + mul32x32_64(modm_mu[7], q1[6]) + mul32x32_64(modm_mu[8], q1[5]);\n\tf = (bignum256modm_element_t)c; q3[4] |= (f << 6) & 0x3fffffff; q3[5] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[6], q1[8]) + mul32x32_64(modm_mu[7], q1[7]) + mul32x32_64(modm_mu[8], q1[6]);\n\tf = (bignum256modm_element_t)c; q3[5] |= (f << 6) & 0x3fffffff; q3[6] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[7], q1[8]) + mul32x32_64(modm_mu[8], q1[7]);\n\tf = (bignum256modm_element_t)c; q3[6] |= (f << 6) & 0x3fffffff; q3[7] = (f >> 24) & 0x3f; c >>= 30;\n\tc += mul32x32_64(modm_mu[8], q1[8]);\n\tf = (bignum256modm_element_t)c; q3[7] |= (f << 6) & 0x3fffffff; q3[8] = (bignum256modm_element_t)(c >> 24);\n\n\t/* r1 = (x mod 256^(32+1)) = x mod (2^8)(31+1) = x & ((1 << 264) - 1)\n\t   r2 = (q3 * m) mod (256^(32+1)) = (q3 * m) & ((1 << 264) - 1) */\n\tc = mul32x32_64(modm_m[0], q3[0]);\n\tr2[0] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[1]) + mul32x32_64(modm_m[1], q3[0]);\n\tr2[1] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[2]) + mul32x32_64(modm_m[1], q3[1]) + mul32x32_64(modm_m[2], q3[0]);\n\tr2[2] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[3]) + mul32x32_64(modm_m[1], q3[2]) + mul32x32_64(modm_m[2], q3[1]) + mul32x32_64(modm_m[3], q3[0]);\n\tr2[3] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[4]) + mul32x32_64(modm_m[1], q3[3]) + mul32x32_64(modm_m[2], q3[2]) + mul32x32_64(modm_m[3], q3[1]) + mul32x32_64(modm_m[4], q3[0]);\n\tr2[4] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[5]) + mul32x32_64(modm_m[1], q3[4]) + mul32x32_64(modm_m[2], q3[3]) + mul32x32_64(modm_m[3], q3[2]) + mul32x32_64(modm_m[4], q3[1]) + mul32x32_64(modm_m[5], q3[0]);\n\tr2[5] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[6]) + mul32x32_64(modm_m[1], q3[5]) + mul32x32_64(modm_m[2], q3[4]) + mul32x32_64(modm_m[3], q3[3]) + mul32x32_64(modm_m[4], q3[2]) + mul32x32_64(modm_m[5], q3[1]) + mul32x32_64(modm_m[6], q3[0]);\n\tr2[6] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[7]) + mul32x32_64(modm_m[1], q3[6]) + mul32x32_64(modm_m[2], q3[5]) + mul32x32_64(modm_m[3], q3[4]) + mul32x32_64(modm_m[4], q3[3]) + mul32x32_64(modm_m[5], q3[2]) + mul32x32_64(modm_m[6], q3[1]) + mul32x32_64(modm_m[7], q3[0]);\n\tr2[7] = (bignum256modm_element_t)(c & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(modm_m[0], q3[8]) + mul32x32_64(modm_m[1], q3[7]) + mul32x32_64(modm_m[2], q3[6]) + mul32x32_64(modm_m[3], q3[5]) + mul32x32_64(modm_m[4], q3[4]) + mul32x32_64(modm_m[5], q3[3]) + mul32x32_64(modm_m[6], q3[2]) + mul32x32_64(modm_m[7], q3[1]) + mul32x32_64(modm_m[8], q3[0]);\n\tr2[8] = (bignum256modm_element_t)(c & 0xffffff);\n\n\t/* r = r1 - r2\n\t   if (r < 0) r += (1 << 264) */\n\tpb = 0;\n\tpb += r2[0]; b = lt_modm(r1[0], pb); r[0] = (r1[0] - pb + (b << 30)); pb = b;\n\tpb += r2[1]; b = lt_modm(r1[1], pb); r[1] = (r1[1] - pb + (b << 30)); pb = b;\n\tpb += r2[2]; b = lt_modm(r1[2], pb); r[2] = (r1[2] - pb + (b << 30)); pb = b;\n\tpb += r2[3]; b = lt_modm(r1[3], pb); r[3] = (r1[3] - pb + (b << 30)); pb = b;\n\tpb += r2[4]; b = lt_modm(r1[4], pb); r[4] = (r1[4] - pb + (b << 30)); pb = b;\n\tpb += r2[5]; b = lt_modm(r1[5], pb); r[5] = (r1[5] - pb + (b << 30)); pb = b;\n\tpb += r2[6]; b = lt_modm(r1[6], pb); r[6] = (r1[6] - pb + (b << 30)); pb = b;\n\tpb += r2[7]; b = lt_modm(r1[7], pb); r[7] = (r1[7] - pb + (b << 30)); pb = b;\n\tpb += r2[8]; b = lt_modm(r1[8], pb); r[8] = (r1[8] - pb + (b << 24));\n\n\treduce256_modm(r);\n\treduce256_modm(r);\n}\n\n/* addition modulo m */\nstatic void\nadd256_modm(bignum256modm r, const bignum256modm x, const bignum256modm y) {\n\tbignum256modm_element_t c;\n\n\tc  = x[0] + y[0]; r[0] = c & 0x3fffffff; c >>= 30;\n\tc += x[1] + y[1]; r[1] = c & 0x3fffffff; c >>= 30;\n\tc += x[2] + y[2]; r[2] = c & 0x3fffffff; c >>= 30;\n\tc += x[3] + y[3]; r[3] = c & 0x3fffffff; c >>= 30;\n\tc += x[4] + y[4]; r[4] = c & 0x3fffffff; c >>= 30;\n\tc += x[5] + y[5]; r[5] = c & 0x3fffffff; c >>= 30;\n\tc += x[6] + y[6]; r[6] = c & 0x3fffffff; c >>= 30;\n\tc += x[7] + y[7]; r[7] = c & 0x3fffffff; c >>= 30;\n\tc += x[8] + y[8]; r[8] = c;\n\n\treduce256_modm(r);\n}\n\n/* multiplication modulo m */\nstatic void \nmul256_modm(bignum256modm r, const bignum256modm x, const bignum256modm y) {\n\tbignum256modm r1, q1;\n\tuint64_t c;\n\tbignum256modm_element_t f;\n\n\t/* r1 = (x mod 256^(32+1)) = x mod (2^8)(31+1) = x & ((1 << 264) - 1)\n\t   q1 = x >> 248 = 264 bits = 9 30 bit elements */\n\tc = mul32x32_64(x[0], y[0]);\n\tf = (bignum256modm_element_t)c; r1[0] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[1]) + mul32x32_64(x[1], y[0]);\n\tf = (bignum256modm_element_t)c; r1[1] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[2]) + mul32x32_64(x[1], y[1]) + mul32x32_64(x[2], y[0]);\n\tf = (bignum256modm_element_t)c; r1[2] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[3]) + mul32x32_64(x[1], y[2]) + mul32x32_64(x[2], y[1]) + mul32x32_64(x[3], y[0]);\n\tf = (bignum256modm_element_t)c; r1[3] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[4]) + mul32x32_64(x[1], y[3]) + mul32x32_64(x[2], y[2]) + mul32x32_64(x[3], y[1]) + mul32x32_64(x[4], y[0]);\n\tf = (bignum256modm_element_t)c; r1[4] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[5]) + mul32x32_64(x[1], y[4]) + mul32x32_64(x[2], y[3]) + mul32x32_64(x[3], y[2]) + mul32x32_64(x[4], y[1]) + mul32x32_64(x[5], y[0]);\n\tf = (bignum256modm_element_t)c; r1[5] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[6]) + mul32x32_64(x[1], y[5]) + mul32x32_64(x[2], y[4]) + mul32x32_64(x[3], y[3]) + mul32x32_64(x[4], y[2]) + mul32x32_64(x[5], y[1]) + mul32x32_64(x[6], y[0]);\n\tf = (bignum256modm_element_t)c; r1[6] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[7]) + mul32x32_64(x[1], y[6]) + mul32x32_64(x[2], y[5]) + mul32x32_64(x[3], y[4]) + mul32x32_64(x[4], y[3]) + mul32x32_64(x[5], y[2]) + mul32x32_64(x[6], y[1]) + mul32x32_64(x[7], y[0]);\n\tf = (bignum256modm_element_t)c; r1[7] = (f & 0x3fffffff); c >>= 30;\n\tc += mul32x32_64(x[0], y[8]) + mul32x32_64(x[1], y[7]) + mul32x32_64(x[2], y[6]) + mul32x32_64(x[3], y[5]) + mul32x32_64(x[4], y[4]) + mul32x32_64(x[5], y[3]) + mul32x32_64(x[6], y[2]) + mul32x32_64(x[7], y[1]) + mul32x32_64(x[8], y[0]);\n\tf = (bignum256modm_element_t)c; r1[8] = (f & 0x00ffffff); q1[0] = (f >> 8) & 0x3fffff; c >>= 30;\n\tc += mul32x32_64(x[1], y[8]) + mul32x32_64(x[2], y[7]) + mul32x32_64(x[3], y[6]) + mul32x32_64(x[4], y[5]) + mul32x32_64(x[5], y[4]) + mul32x32_64(x[6], y[3]) + mul32x32_64(x[7], y[2]) + mul32x32_64(x[8], y[1]);\n\tf = (bignum256modm_element_t)c; q1[0] = (q1[0] | (f << 22)) & 0x3fffffff; q1[1] = (f >> 8) & 0x3fffff; c >>= 30;\t\n\tc += mul32x32_64(x[2], y[8]) + mul32x32_64(x[3], y[7]) + mul32x32_64(x[4], y[6]) + mul32x32_64(x[5], y[5]) + mul32x32_64(x[6], y[4]) + mul32x32_64(x[7], y[3]) + mul32x32_64(x[8], y[2]);\n\tf = (bignum256modm_element_t)c; q1[1] = (q1[1] | (f << 22)) & 0x3fffffff; q1[2] = (f >> 8) & 0x3fffff; c >>= 30;\t\n\tc += mul32x32_64(x[3], y[8]) + mul32x32_64(x[4], y[7]) + mul32x32_64(x[5], y[6]) + mul32x32_64(x[6], y[5]) + mul32x32_64(x[7], y[4]) + mul32x32_64(x[8], y[3]);\n\tf = (bignum256modm_element_t)c; q1[2] = (q1[2] | (f << 22)) & 0x3fffffff; q1[3] = (f >> 8) & 0x3fffff; c >>= 30;\t\n\tc += mul32x32_64(x[4], y[8]) + mul32x32_64(x[5], y[7]) + mul32x32_64(x[6], y[6]) + mul32x32_64(x[7], y[5]) + mul32x32_64(x[8], y[4]);\n\tf = (bignum256modm_element_t)c; q1[3] = (q1[3] | (f << 22)) & 0x3fffffff; q1[4] = (f >> 8) & 0x3fffff; c >>= 30;\t\n\tc += mul32x32_64(x[5], y[8]) + mul32x32_64(x[6], y[7]) + mul32x32_64(x[7], y[6]) + mul32x32_64(x[8], y[5]);\n\tf = (bignum256modm_element_t)c; q1[4] = (q1[4] | (f << 22)) & 0x3fffffff; q1[5] = (f >> 8) & 0x3fffff; c >>= 30;\n\tc += mul32x32_64(x[6], y[8]) + mul32x32_64(x[7], y[7]) + mul32x32_64(x[8], y[6]);\n\tf = (bignum256modm_element_t)c; q1[5] = (q1[5] | (f << 22)) & 0x3fffffff; q1[6] = (f >> 8) & 0x3fffff; c >>= 30;\n\tc += mul32x32_64(x[7], y[8]) + mul32x32_64(x[8], y[7]);\n\tf = (bignum256modm_element_t)c; q1[6] = (q1[6] | (f << 22)) & 0x3fffffff; q1[7] = (f >> 8) & 0x3fffff; c >>= 30;\n\tc += mul32x32_64(x[8], y[8]);\n\tf = (bignum256modm_element_t)c; q1[7] = (q1[7] | (f << 22)) & 0x3fffffff; q1[8] = (f >> 8) & 0x3fffff;\n\n\tbarrett_reduce256_modm(r, q1, r1);\n}\n\nstatic void\nexpand256_modm(bignum256modm out, const unsigned char *in, size_t len) {\n\tunsigned char work[64] = {0};\n\tbignum256modm_element_t x[16];\n\tbignum256modm q1;\n\n\tmemcpy(work, in, len);\n\tx[0] = U8TO32_LE(work +  0);\n\tx[1] = U8TO32_LE(work +  4);\n\tx[2] = U8TO32_LE(work +  8);\n\tx[3] = U8TO32_LE(work + 12);\n\tx[4] = U8TO32_LE(work + 16);\n\tx[5] = U8TO32_LE(work + 20);\n\tx[6] = U8TO32_LE(work + 24);\n\tx[7] = U8TO32_LE(work + 28);\n\tx[8] = U8TO32_LE(work + 32);\n\tx[9] = U8TO32_LE(work + 36);\n\tx[10] = U8TO32_LE(work + 40);\n\tx[11] = U8TO32_LE(work + 44);\n\tx[12] = U8TO32_LE(work + 48);\n\tx[13] = U8TO32_LE(work + 52);\n\tx[14] = U8TO32_LE(work + 56);\n\tx[15] = U8TO32_LE(work + 60);\n\n\t/* r1 = (x mod 256^(32+1)) = x mod (2^8)(31+1) = x & ((1 << 264) - 1) */\n\tout[0] = (                         x[0]) & 0x3fffffff;\n\tout[1] = ((x[ 0] >> 30) | (x[ 1] <<  2)) & 0x3fffffff;\n\tout[2] = ((x[ 1] >> 28) | (x[ 2] <<  4)) & 0x3fffffff;\n\tout[3] = ((x[ 2] >> 26) | (x[ 3] <<  6)) & 0x3fffffff;\n\tout[4] = ((x[ 3] >> 24) | (x[ 4] <<  8)) & 0x3fffffff;\n\tout[5] = ((x[ 4] >> 22) | (x[ 5] << 10)) & 0x3fffffff;\n\tout[6] = ((x[ 5] >> 20) | (x[ 6] << 12)) & 0x3fffffff;\n\tout[7] = ((x[ 6] >> 18) | (x[ 7] << 14)) & 0x3fffffff;\n\tout[8] = ((x[ 7] >> 16) | (x[ 8] << 16)) & 0x00ffffff;\n\n\t/* 8*31 = 248 bits, no need to reduce */\n\tif (len < 32)\n\t\treturn;\n\n\t/* q1 = x >> 248 = 264 bits = 9 30 bit elements */\n\tq1[0] = ((x[ 7] >> 24) | (x[ 8] <<  8)) & 0x3fffffff;\n\tq1[1] = ((x[ 8] >> 22) | (x[ 9] << 10)) & 0x3fffffff;\n\tq1[2] = ((x[ 9] >> 20) | (x[10] << 12)) & 0x3fffffff;\n\tq1[3] = ((x[10] >> 18) | (x[11] << 14)) & 0x3fffffff;\n\tq1[4] = ((x[11] >> 16) | (x[12] << 16)) & 0x3fffffff;\n\tq1[5] = ((x[12] >> 14) | (x[13] << 18)) & 0x3fffffff;\n\tq1[6] = ((x[13] >> 12) | (x[14] << 20)) & 0x3fffffff;\n\tq1[7] = ((x[14] >> 10) | (x[15] << 22)) & 0x3fffffff;\n\tq1[8] = ((x[15] >>  8)                );\t\n\n\tbarrett_reduce256_modm(out, q1, out);\n}\n\nstatic void\nexpand_raw256_modm(bignum256modm out, const unsigned char in[32]) {\n\tbignum256modm_element_t x[8];\n\n\tx[0] = U8TO32_LE(in +  0);\n\tx[1] = U8TO32_LE(in +  4);\n\tx[2] = U8TO32_LE(in +  8);\n\tx[3] = U8TO32_LE(in + 12);\n\tx[4] = U8TO32_LE(in + 16);\n\tx[5] = U8TO32_LE(in + 20);\n\tx[6] = U8TO32_LE(in + 24);\n\tx[7] = U8TO32_LE(in + 28);\n\n\tout[0] = (                         x[0]) & 0x3fffffff;\n\tout[1] = ((x[ 0] >> 30) | (x[ 1] <<  2)) & 0x3fffffff;\n\tout[2] = ((x[ 1] >> 28) | (x[ 2] <<  4)) & 0x3fffffff;\n\tout[3] = ((x[ 2] >> 26) | (x[ 3] <<  6)) & 0x3fffffff;\n\tout[4] = ((x[ 3] >> 24) | (x[ 4] <<  8)) & 0x3fffffff;\n\tout[5] = ((x[ 4] >> 22) | (x[ 5] << 10)) & 0x3fffffff;\n\tout[6] = ((x[ 5] >> 20) | (x[ 6] << 12)) & 0x3fffffff;\n\tout[7] = ((x[ 6] >> 18) | (x[ 7] << 14)) & 0x3fffffff;\n\tout[8] = ((x[ 7] >> 16)                ) & 0x0000ffff;\n}\n\nstatic void\ncontract256_modm(unsigned char out[32], const bignum256modm in) {\n\tU32TO8_LE(out +  0, (in[0]      ) | (in[1] << 30));\n\tU32TO8_LE(out +  4, (in[1] >>  2) | (in[2] << 28));\n\tU32TO8_LE(out +  8, (in[2] >>  4) | (in[3] << 26));\n\tU32TO8_LE(out + 12, (in[3] >>  6) | (in[4] << 24));\n\tU32TO8_LE(out + 16, (in[4] >>  8) | (in[5] << 22));\n\tU32TO8_LE(out + 20, (in[5] >> 10) | (in[6] << 20));\n\tU32TO8_LE(out + 24, (in[6] >> 12) | (in[7] << 18));\n\tU32TO8_LE(out + 28, (in[7] >> 14) | (in[8] << 16));\n}\n\n\n\nstatic void\ncontract256_window4_modm(signed char r[64], const bignum256modm in) {\n\tchar carry;\n\tsigned char *quads = r;\n\tbignum256modm_element_t i, j, v;\n\n\tfor (i = 0; i < 8; i += 2) {\n\t\tv = in[i];\n\t\tfor (j = 0; j < 7; j++) {\n\t\t\t*quads++ = (v & 15);\n\t\t\tv >>= 4;\n\t\t}\n\t\tv |= (in[i+1] << 2);\n\t\tfor (j = 0; j < 8; j++) {\n\t\t\t*quads++ = (v & 15);\n\t\t\tv >>= 4;\n\t\t}\n\t}\n\tv = in[8];\n\t*quads++ = (v & 15); v >>= 4;\n\t*quads++ = (v & 15); v >>= 4;\n\t*quads++ = (v & 15); v >>= 4;\n\t*quads++ = (v & 15); v >>= 4;\n\n\t/* making it signed */\n\tcarry = 0;\n\tfor(i = 0; i < 63; i++) {\n\t\tr[i] += carry;\n\t\tr[i+1] += (r[i] >> 4);\n\t\tr[i] &= 15;\n\t\tcarry = (r[i] >> 3);\n\t\tr[i] -= (carry << 4);\n\t}\n\tr[63] += carry;\n}\n\nstatic void\ncontract256_slidingwindow_modm(signed char r[256], const bignum256modm s, int windowsize) {\n\tint i,j,k,b;\n\tint m = (1 << (windowsize - 1)) - 1, soplen = 256;\n\tsigned char *bits = r;\n\tbignum256modm_element_t v;\n\n\t/* first put the binary expansion into r  */\n\tfor (i = 0; i < 8; i++) {\n\t\tv = s[i];\n\t\tfor (j = 0; j < 30; j++, v >>= 1)\n\t\t\t*bits++ = (v & 1);\n\t}\n\tv = s[8];\n\tfor (j = 0; j < 16; j++, v >>= 1)\n\t\t*bits++ = (v & 1);\n\n\t/* Making it sliding window */\n\tfor (j = 0; j < soplen; j++) {\n\t\tif (!r[j])\n\t\t\tcontinue;\n\n\t\tfor (b = 1; (b < (soplen - j)) && (b <= 6); b++) {\n\t\t\tif ((r[j] + (r[j + b] << b)) <= m) {\n\t\t\t\tr[j] += r[j + b] << b;\n\t\t\t\tr[j + b] = 0;\n\t\t\t} else if ((r[j] - (r[j + b] << b)) >= -m) {\n\t\t\t\tr[j] -= r[j + b] << b;\n\t\t\t\tfor (k = j + b; k < soplen; k++) {\n\t\t\t\t\tif (!r[k]) {\n\t\t\t\t\t\tr[k] = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tr[k] = 0;\n\t\t\t\t}\n\t\t\t} else if (r[j + b]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n\n/*\n\thelpers for batch verifcation, are allowed to be vartime\n*/\n\n/* out = a - b, a must be larger than b */\nstatic void\nsub256_modm_batch(bignum256modm out, const bignum256modm a, const bignum256modm b, size_t limbsize) {\n\tsize_t i = 0;\n\tbignum256modm_element_t carry = 0;\n\tswitch (limbsize) {\n\t\tcase 8: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 7: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 6: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 5: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 4: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 3: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 2: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 1: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 31); out[i] &= 0x3fffffff; i++;\n\t\tcase 0: \n\t\tdefault: out[i] = (a[i] - b[i]) - carry;\n\t}\n}\n\n\n/* is a < b */\nstatic int\nlt256_modm_batch(const bignum256modm a, const bignum256modm b, size_t limbsize) {\n\tswitch (limbsize) {\n\t\tcase 8: if (a[8] > b[8]) return 0; if (a[8] < b[8]) return 1;\n\t\tcase 7: if (a[7] > b[7]) return 0; if (a[7] < b[7]) return 1;\n\t\tcase 6: if (a[6] > b[6]) return 0; if (a[6] < b[6]) return 1;\n\t\tcase 5: if (a[5] > b[5]) return 0; if (a[5] < b[5]) return 1;\n\t\tcase 4: if (a[4] > b[4]) return 0; if (a[4] < b[4]) return 1;\n\t\tcase 3: if (a[3] > b[3]) return 0; if (a[3] < b[3]) return 1;\n\t\tcase 2: if (a[2] > b[2]) return 0; if (a[2] < b[2]) return 1;\n\t\tcase 1: if (a[1] > b[1]) return 0; if (a[1] < b[1]) return 1;\n\t\tcase 0: if (a[0] > b[0]) return 0; if (a[0] < b[0]) return 1;\n\t}\n\treturn 0;\n}\n\n/* is a <= b */\nstatic int\nlte256_modm_batch(const bignum256modm a, const bignum256modm b, size_t limbsize) {\n\tswitch (limbsize) {\n\t\tcase 8: if (a[8] > b[8]) return 0; if (a[8] < b[8]) return 1;\n\t\tcase 7: if (a[7] > b[7]) return 0; if (a[7] < b[7]) return 1;\n\t\tcase 6: if (a[6] > b[6]) return 0; if (a[6] < b[6]) return 1;\n\t\tcase 5: if (a[5] > b[5]) return 0; if (a[5] < b[5]) return 1;\n\t\tcase 4: if (a[4] > b[4]) return 0; if (a[4] < b[4]) return 1;\n\t\tcase 3: if (a[3] > b[3]) return 0; if (a[3] < b[3]) return 1;\n\t\tcase 2: if (a[2] > b[2]) return 0; if (a[2] < b[2]) return 1;\n\t\tcase 1: if (a[1] > b[1]) return 0; if (a[1] < b[1]) return 1;\n\t\tcase 0: if (a[0] > b[0]) return 0; if (a[0] < b[0]) return 1;\n\t}\n\treturn 1;\n}\n\n\n/* is a == 0 */\nstatic int\niszero256_modm_batch(const bignum256modm a) {\n\tsize_t i;\n\tfor (i = 0; i < 9; i++)\n\t\tif (a[i])\n\t\t\treturn 0;\n\treturn 1;\n}\n\n/* is a == 1 */\nstatic int\nisone256_modm_batch(const bignum256modm a) {\n\tsize_t i;\n\tif (a[0] != 1)\n\t\treturn 0;\n\tfor (i = 1; i < 9; i++)\n\t\tif (a[i])\n\t\t\treturn 0;\n\treturn 1;\n}\n\n/* can a fit in to (at most) 128 bits */\nstatic int\nisatmost128bits256_modm_batch(const bignum256modm a) {\n\tuint32_t mask =\n\t\t((a[8]             )  | /*  16 */\n\t\t (a[7]             )  | /*  46 */\n\t\t (a[6]             )  | /*  76 */\n\t\t (a[5]             )  | /* 106 */\n\t\t (a[4] & 0x3fffff00));  /* 128 */\n\n\treturn (mask == 0);\n}\n"
  },
  {
    "path": "src/crypto/ed25519/modm-donna-64bit.h",
    "content": "/*\n\tPublic domain by Andrew M. <liquidsun@gmail.com>\n*/\n\n\n/*\n\tArithmetic modulo the group order n = 2^252 +  27742317777372353535851937790883648493 = 7237005577332262213973186563042994240857116359379907606001950938285454250989\n\n\tk = 32\n\tb = 1 << 8 = 256\n\tm = 2^252 + 27742317777372353535851937790883648493 = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed\n\tmu = floor( b^(k*2) / m ) = 0xfffffffffffffffffffffffffffffffeb2106215d086329a7ed9ce5a30a2c131b\n*/\n\n#define bignum256modm_bits_per_limb 56\n#define bignum256modm_limb_size 5\n\ntypedef uint64_t bignum256modm_element_t;\ntypedef bignum256modm_element_t bignum256modm[5];\n\nstatic const bignum256modm modm_m = {\n\t0x12631a5cf5d3ed, \n\t0xf9dea2f79cd658, \n\t0x000000000014de, \n\t0x00000000000000, \n\t0x00000010000000\n};\n\nstatic const bignum256modm modm_mu = {\n\t0x9ce5a30a2c131b,\n\t0x215d086329a7ed,\n\t0xffffffffeb2106,\n\t0xffffffffffffff,\n\t0x00000fffffffff\n};\n\nstatic bignum256modm_element_t\nlt_modm(bignum256modm_element_t a, bignum256modm_element_t b) {\n\treturn (a - b) >> 63;\n}\n\nstatic void\nreduce256_modm(bignum256modm r) {\n\tbignum256modm t;\n\tbignum256modm_element_t b = 0, pb, mask;\n\n\t/* t = r - m */\n\tpb = 0;\n\tpb += modm_m[0]; b = lt_modm(r[0], pb); t[0] = (r[0] - pb + (b << 56)); pb = b;\n\tpb += modm_m[1]; b = lt_modm(r[1], pb); t[1] = (r[1] - pb + (b << 56)); pb = b;\n\tpb += modm_m[2]; b = lt_modm(r[2], pb); t[2] = (r[2] - pb + (b << 56)); pb = b;\n\tpb += modm_m[3]; b = lt_modm(r[3], pb); t[3] = (r[3] - pb + (b << 56)); pb = b;\n\tpb += modm_m[4]; b = lt_modm(r[4], pb); t[4] = (r[4] - pb + (b << 32)); \n\n\t/* keep r if r was smaller than m */\n\tmask = b - 1;\n\n\tr[0] ^= mask & (r[0] ^ t[0]);\n\tr[1] ^= mask & (r[1] ^ t[1]);\n\tr[2] ^= mask & (r[2] ^ t[2]);\n\tr[3] ^= mask & (r[3] ^ t[3]);\n\tr[4] ^= mask & (r[4] ^ t[4]);\n}\n\nstatic void\nbarrett_reduce256_modm(bignum256modm r, const bignum256modm q1, const bignum256modm r1) {\n\tbignum256modm q3, r2;\n\tuint128_t c, mul;\n\tbignum256modm_element_t f, b, pb;\n\n\t/* q1 = x >> 248 = 264 bits = 5 56 bit elements\n\t   q2 = mu * q1\n\t   q3 = (q2 / 256(32+1)) = q2 / (2^8)^(32+1) = q2 >> 264 */\n\tmul64x64_128(c, modm_mu[0], q1[3])                 mul64x64_128(mul, modm_mu[3], q1[0]) add128(c, mul) mul64x64_128(mul, modm_mu[1], q1[2]) add128(c, mul) mul64x64_128(mul, modm_mu[2], q1[1]) add128(c, mul) shr128(f, c, 56);\n\tmul64x64_128(c, modm_mu[0], q1[4]) add128_64(c, f) mul64x64_128(mul, modm_mu[4], q1[0]) add128(c, mul) mul64x64_128(mul, modm_mu[3], q1[1]) add128(c, mul) mul64x64_128(mul, modm_mu[1], q1[3]) add128(c, mul) mul64x64_128(mul, modm_mu[2], q1[2]) add128(c, mul)\n\tf = lo128(c); q3[0] = (f >> 40) & 0xffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_mu[4], q1[1]) add128_64(c, f) mul64x64_128(mul, modm_mu[1], q1[4]) add128(c, mul) mul64x64_128(mul, modm_mu[2], q1[3]) add128(c, mul) mul64x64_128(mul, modm_mu[3], q1[2]) add128(c, mul)\n\tf = lo128(c); q3[0] |= (f << 16) & 0xffffffffffffff; q3[1] = (f >> 40) & 0xffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_mu[4], q1[2]) add128_64(c, f) mul64x64_128(mul, modm_mu[2], q1[4]) add128(c, mul) mul64x64_128(mul, modm_mu[3], q1[3]) add128(c, mul)\n\tf = lo128(c); q3[1] |= (f << 16) & 0xffffffffffffff; q3[2] = (f >> 40) & 0xffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_mu[4], q1[3]) add128_64(c, f) mul64x64_128(mul, modm_mu[3], q1[4]) add128(c, mul)\n\tf = lo128(c); q3[2] |= (f << 16) & 0xffffffffffffff; q3[3] = (f >> 40) & 0xffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_mu[4], q1[4]) add128_64(c, f)\n\tf = lo128(c); q3[3] |= (f << 16) & 0xffffffffffffff; q3[4] = (f >> 40) & 0xffff; shr128(f, c, 56);\n\tq3[4] |= (f << 16);\n\n\tmul64x64_128(c, modm_m[0], q3[0]) \n\tr2[0] = lo128(c) & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_m[0], q3[1]) add128_64(c, f) mul64x64_128(mul, modm_m[1], q3[0]) add128(c, mul)\n\tr2[1] = lo128(c) & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_m[0], q3[2]) add128_64(c, f) mul64x64_128(mul, modm_m[2], q3[0]) add128(c, mul) mul64x64_128(mul, modm_m[1], q3[1]) add128(c, mul)\n\tr2[2] = lo128(c) & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_m[0], q3[3]) add128_64(c, f) mul64x64_128(mul, modm_m[3], q3[0]) add128(c, mul) mul64x64_128(mul, modm_m[1], q3[2]) add128(c, mul) mul64x64_128(mul, modm_m[2], q3[1]) add128(c, mul)\n\tr2[3] = lo128(c) & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, modm_m[0], q3[4]) add128_64(c, f) mul64x64_128(mul, modm_m[4], q3[0]) add128(c, mul) mul64x64_128(mul, modm_m[3], q3[1]) add128(c, mul) mul64x64_128(mul, modm_m[1], q3[3]) add128(c, mul) mul64x64_128(mul, modm_m[2], q3[2]) add128(c, mul)\n\tr2[4] = lo128(c) & 0x0000ffffffffff;\n\n\tpb = 0;\n\tpb += r2[0]; b = lt_modm(r1[0], pb); r[0] = (r1[0] - pb + (b << 56)); pb = b;\n\tpb += r2[1]; b = lt_modm(r1[1], pb); r[1] = (r1[1] - pb + (b << 56)); pb = b;\n\tpb += r2[2]; b = lt_modm(r1[2], pb); r[2] = (r1[2] - pb + (b << 56)); pb = b;\n\tpb += r2[3]; b = lt_modm(r1[3], pb); r[3] = (r1[3] - pb + (b << 56)); pb = b;\n\tpb += r2[4]; b = lt_modm(r1[4], pb); r[4] = (r1[4] - pb + (b << 40)); \n\n\treduce256_modm(r);\n\treduce256_modm(r);\n}\n\n\nstatic void\nadd256_modm(bignum256modm r, const bignum256modm x, const bignum256modm y) {\n\tbignum256modm_element_t c;\n\n\tc  = x[0] + y[0]; r[0] = c & 0xffffffffffffff; c >>= 56;\n\tc += x[1] + y[1]; r[1] = c & 0xffffffffffffff; c >>= 56;\n\tc += x[2] + y[2]; r[2] = c & 0xffffffffffffff; c >>= 56;\n\tc += x[3] + y[3]; r[3] = c & 0xffffffffffffff; c >>= 56;\n\tc += x[4] + y[4]; r[4] = c;\n\n\treduce256_modm(r);\n}\n\nstatic void\nmul256_modm(bignum256modm r, const bignum256modm x, const bignum256modm y) {\n\tbignum256modm q1, r1;\n\tuint128_t c, mul;\n\tbignum256modm_element_t f;\n\n\tmul64x64_128(c, x[0], y[0])\n\tf = lo128(c); r1[0] = f & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[0], y[1]) add128_64(c, f) mul64x64_128(mul, x[1], y[0]) add128(c, mul) \n\tf = lo128(c); r1[1] = f & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[0], y[2]) add128_64(c, f) mul64x64_128(mul, x[2], y[0]) add128(c, mul) mul64x64_128(mul, x[1], y[1]) add128(c, mul) \n\tf = lo128(c); r1[2] = f & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[0], y[3]) add128_64(c, f) mul64x64_128(mul, x[3], y[0]) add128(c, mul) mul64x64_128(mul, x[1], y[2]) add128(c, mul) mul64x64_128(mul, x[2], y[1]) add128(c, mul) \n\tf = lo128(c); r1[3] = f & 0xffffffffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[0], y[4]) add128_64(c, f) mul64x64_128(mul, x[4], y[0]) add128(c, mul) mul64x64_128(mul, x[3], y[1]) add128(c, mul) mul64x64_128(mul, x[1], y[3]) add128(c, mul) mul64x64_128(mul, x[2], y[2]) add128(c, mul) \n\tf = lo128(c); r1[4] = f & 0x0000ffffffffff; q1[0] = (f >> 24) & 0xffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[4], y[1]) add128_64(c, f) mul64x64_128(mul, x[1], y[4]) add128(c, mul) mul64x64_128(mul, x[2], y[3]) add128(c, mul) mul64x64_128(mul, x[3], y[2]) add128(c, mul) \n\tf = lo128(c); q1[0] |= (f << 32) & 0xffffffffffffff; q1[1] = (f >> 24) & 0xffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[4], y[2]) add128_64(c, f) mul64x64_128(mul, x[2], y[4]) add128(c, mul) mul64x64_128(mul, x[3], y[3]) add128(c, mul) \n\tf = lo128(c); q1[1] |= (f << 32) & 0xffffffffffffff; q1[2] = (f >> 24) & 0xffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[4], y[3]) add128_64(c, f) mul64x64_128(mul, x[3], y[4]) add128(c, mul) \n\tf = lo128(c); q1[2] |= (f << 32) & 0xffffffffffffff; q1[3] = (f >> 24) & 0xffffffff; shr128(f, c, 56);\n\tmul64x64_128(c, x[4], y[4]) add128_64(c, f)\n\tf = lo128(c); q1[3] |= (f << 32) & 0xffffffffffffff; q1[4] = (f >> 24) & 0xffffffff; shr128(f, c, 56);\n\tq1[4] |= (f << 32);\n\n\tbarrett_reduce256_modm(r, q1, r1);\n}\n\nstatic void\nexpand256_modm(bignum256modm out, const unsigned char *in, size_t len) {\n\tunsigned char work[64] = {0};\n\tbignum256modm_element_t x[16];\n\tbignum256modm q1;\n\n\tmemcpy(work, in, len);\n\tx[0] = U8TO64_LE(work +  0);\n\tx[1] = U8TO64_LE(work +  8);\n\tx[2] = U8TO64_LE(work + 16);\n\tx[3] = U8TO64_LE(work + 24);\n\tx[4] = U8TO64_LE(work + 32);\n\tx[5] = U8TO64_LE(work + 40);\n\tx[6] = U8TO64_LE(work + 48);\n\tx[7] = U8TO64_LE(work + 56);\n\n\t/* r1 = (x mod 256^(32+1)) = x mod (2^8)(31+1) = x & ((1 << 264) - 1) */\n\tout[0] = (                         x[0]) & 0xffffffffffffff;\n\tout[1] = ((x[ 0] >> 56) | (x[ 1] <<  8)) & 0xffffffffffffff;\n\tout[2] = ((x[ 1] >> 48) | (x[ 2] << 16)) & 0xffffffffffffff;\n\tout[3] = ((x[ 2] >> 40) | (x[ 3] << 24)) & 0xffffffffffffff;\n\tout[4] = ((x[ 3] >> 32) | (x[ 4] << 32)) & 0x0000ffffffffff;\n\n\t/* under 252 bits, no need to reduce */\n\tif (len < 32)\n\t\treturn;\n\n\t/* q1 = x >> 248 = 264 bits */\n\tq1[0] = ((x[ 3] >> 56) | (x[ 4] <<  8)) & 0xffffffffffffff;\n\tq1[1] = ((x[ 4] >> 48) | (x[ 5] << 16)) & 0xffffffffffffff;\n\tq1[2] = ((x[ 5] >> 40) | (x[ 6] << 24)) & 0xffffffffffffff;\n\tq1[3] = ((x[ 6] >> 32) | (x[ 7] << 32)) & 0xffffffffffffff;\n\tq1[4] = ((x[ 7] >> 24)                );\n\n\tbarrett_reduce256_modm(out, q1, out);\n}\n\nstatic void\nexpand_raw256_modm(bignum256modm out, const unsigned char in[32]) {\n\tbignum256modm_element_t x[4];\n\n\tx[0] = U8TO64_LE(in +  0);\n\tx[1] = U8TO64_LE(in +  8);\n\tx[2] = U8TO64_LE(in + 16);\n\tx[3] = U8TO64_LE(in + 24);\n\n\tout[0] = (                         x[0]) & 0xffffffffffffff;\n\tout[1] = ((x[ 0] >> 56) | (x[ 1] <<  8)) & 0xffffffffffffff;\n\tout[2] = ((x[ 1] >> 48) | (x[ 2] << 16)) & 0xffffffffffffff;\n\tout[3] = ((x[ 2] >> 40) | (x[ 3] << 24)) & 0xffffffffffffff;\n\tout[4] = ((x[ 3] >> 32)                ) & 0x000000ffffffff;\n}\n\nstatic void\ncontract256_modm(unsigned char out[32], const bignum256modm in) {\n\tU64TO8_LE(out +  0, (in[0]      ) | (in[1] << 56));\n\tU64TO8_LE(out +  8, (in[1] >>  8) | (in[2] << 48));\n\tU64TO8_LE(out + 16, (in[2] >> 16) | (in[3] << 40));\n\tU64TO8_LE(out + 24, (in[3] >> 24) | (in[4] << 32));\n}\n\nstatic void\ncontract256_window4_modm(signed char r[64], const bignum256modm in) {\n\tchar carry;\n\tsigned char *quads = r;\n\tbignum256modm_element_t i, j, v, m;\n\n\tfor (i = 0; i < 5; i++) {\n\t\tv = in[i];\n\t\tm = (i == 4) ? 8 : 14;\n\t\tfor (j = 0; j < m; j++) {\n\t\t\t*quads++ = (v & 15);\n\t\t\tv >>= 4;\n\t\t}\n\t}\n\n\t/* making it signed */\n\tcarry = 0;\n\tfor(i = 0; i < 63; i++) {\n\t\tr[i] += carry;\n\t\tr[i+1] += (r[i] >> 4);\n\t\tr[i] &= 15;\n\t\tcarry = (r[i] >> 3);\n\t\tr[i] -= (carry << 4);\n\t}\n\tr[63] += carry;\n}\n\nstatic void\ncontract256_slidingwindow_modm(signed char r[256], const bignum256modm s, int windowsize) {\n\tint i,j,k,b;\n\tint m = (1 << (windowsize - 1)) - 1, soplen = 256;\n\tsigned char *bits = r;\n\tbignum256modm_element_t v;\n\n\t/* first put the binary expansion into r  */\n\tfor (i = 0; i < 4; i++) {\n\t\tv = s[i];\n\t\tfor (j = 0; j < 56; j++, v >>= 1)\n\t\t\t*bits++ = (v & 1);\n\t}\n\tv = s[4];\n\tfor (j = 0; j < 32; j++, v >>= 1)\n\t\t*bits++ = (v & 1);\n\n\t/* Making it sliding window */\n\tfor (j = 0; j < soplen; j++) {\n\t\tif (!r[j])\n\t\t\tcontinue;\n\n\t\tfor (b = 1; (b < (soplen - j)) && (b <= 6); b++) {\n\t\t\tif ((r[j] + (r[j + b] << b)) <= m) {\n\t\t\t\tr[j] += r[j + b] << b;\n\t\t\t\tr[j + b] = 0;\n\t\t\t} else if ((r[j] - (r[j + b] << b)) >= -m) {\n\t\t\t\tr[j] -= r[j + b] << b;\n\t\t\t\tfor (k = j + b; k < soplen; k++) {\n\t\t\t\t\tif (!r[k]) {\n\t\t\t\t\t\tr[k] = 1;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tr[k] = 0;\n\t\t\t\t}\n\t\t\t} else if (r[j + b]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/*\n\thelpers for batch verifcation, are allowed to be vartime\n*/\n\n/* out = a - b, a must be larger than b */\nstatic void\nsub256_modm_batch(bignum256modm out, const bignum256modm a, const bignum256modm b, size_t limbsize) {\n\tsize_t i = 0;\n\tbignum256modm_element_t carry = 0;\n\tswitch (limbsize) {\n\t\tcase 4: out[i] = (a[i] - b[i])        ; carry = (out[i] >> 63); out[i] &= 0xffffffffffffff; i++;\n\t\tcase 3: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 63); out[i] &= 0xffffffffffffff; i++;\n\t\tcase 2: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 63); out[i] &= 0xffffffffffffff; i++;\n\t\tcase 1: out[i] = (a[i] - b[i]) - carry; carry = (out[i] >> 63); out[i] &= 0xffffffffffffff; i++;\n\t\tcase 0: \n\t\tdefault: out[i] = (a[i] - b[i]) - carry;\n\t}\n}\n\n\n/* is a < b */\nstatic int\nlt256_modm_batch(const bignum256modm a, const bignum256modm b, size_t limbsize) {\n\tsize_t i = 0;\n\tbignum256modm_element_t t, carry = 0;\n\tswitch (limbsize) {\n\t\tcase 4: t = (a[i] - b[i])        ; carry = (t >> 63); i++;\n\t\tcase 3: t = (a[i] - b[i]) - carry; carry = (t >> 63); i++;\n\t\tcase 2: t = (a[i] - b[i]) - carry; carry = (t >> 63); i++;\n\t\tcase 1: t = (a[i] - b[i]) - carry; carry = (t >> 63); i++;\n\t\tcase 0: t = (a[i] - b[i]) - carry; carry = (t >> 63);\n\t}\n\treturn (int)carry;\n}\n\n/* is a <= b */\nstatic int\nlte256_modm_batch(const bignum256modm a, const bignum256modm b, size_t limbsize) {\n\tsize_t i = 0;\n\tbignum256modm_element_t t, carry = 0;\n\tswitch (limbsize) {\n\t\tcase 4: t = (b[i] - a[i])        ; carry = (t >> 63); i++;\n\t\tcase 3: t = (b[i] - a[i]) - carry; carry = (t >> 63); i++;\n\t\tcase 2: t = (b[i] - a[i]) - carry; carry = (t >> 63); i++;\n\t\tcase 1: t = (b[i] - a[i]) - carry; carry = (t >> 63); i++;\n\t\tcase 0: t = (b[i] - a[i]) - carry; carry = (t >> 63);\n\t}\n\treturn (int)!carry;\n}\n\n/* is a == 0 */\nstatic int\niszero256_modm_batch(const bignum256modm a) {\n\tsize_t i;\n\tfor (i = 0; i < 5; i++)\n\t\tif (a[i])\n\t\t\treturn 0;\n\treturn 1;\n}\n\n/* is a == 1 */\nstatic int\nisone256_modm_batch(const bignum256modm a) {\n\tsize_t i;\n\tfor (i = 0; i < 5; i++)\n\t\tif (a[i] != ((i) ? 0 : 1))\n\t\t\treturn 0;\n\treturn 1;\n}\n\n/* can a fit in to (at most) 128 bits */\nstatic int\nisatmost128bits256_modm_batch(const bignum256modm a) {\n\tuint64_t mask =\n\t\t((a[4]                   )  | /*  32 */\n\t\t (a[3]                   )  | /*  88 */\n\t\t (a[2] & 0xffffffffff0000));\n\n\treturn (mask == 0);\n}\n"
  },
  {
    "path": "src/crypto/ed25519/regression.h",
    "content": "{{0x9d,0x61,0xb1,0x9d,0xef,0xfd,0x5a,0x60,0xba,0x84,0x4a,0xf4,0x92,0xec,0x2c,0xc4,0x44,0x49,0xc5,0x69,0x7b,0x32,0x69,0x19,0x70,0x3b,0xac,0x03,0x1c,0xae,0x7f,0x60,},{0xd7,0x5a,0x98,0x01,0x82,0xb1,0x0a,0xb7,0xd5,0x4b,0xfe,0xd3,0xc9,0x64,0x07,0x3a,0x0e,0xe1,0x72,0xf3,0xda,0xa6,0x23,0x25,0xaf,0x02,0x1a,0x68,0xf7,0x07,0x51,0x1a,},{0xe5,0x56,0x43,0x00,0xc3,0x60,0xac,0x72,0x90,0x86,0xe2,0xcc,0x80,0x6e,0x82,0x8a,0x84,0x87,0x7f,0x1e,0xb8,0xe5,0xd9,0x74,0xd8,0x73,0xe0,0x65,0x22,0x49,0x01,0x55,0x5f,0xb8,0x82,0x15,0x90,0xa3,0x3b,0xac,0xc6,0x1e,0x39,0x70,0x1c,0xf9,0xb4,0x6b,0xd2,0x5b,0xf5,0xf0,0x59,0x5b,0xbe,0x24,0x65,0x51,0x41,0x43,0x8e,0x7a,0x10,0x0b,},\"\"},\n{{0x4c,0xcd,0x08,0x9b,0x28,0xff,0x96,0xda,0x9d,0xb6,0xc3,0x46,0xec,0x11,0x4e,0x0f,0x5b,0x8a,0x31,0x9f,0x35,0xab,0xa6,0x24,0xda,0x8c,0xf6,0xed,0x4f,0xb8,0xa6,0xfb,},{0x3d,0x40,0x17,0xc3,0xe8,0x43,0x89,0x5a,0x92,0xb7,0x0a,0xa7,0x4d,0x1b,0x7e,0xbc,0x9c,0x98,0x2c,0xcf,0x2e,0xc4,0x96,0x8c,0xc0,0xcd,0x55,0xf1,0x2a,0xf4,0x66,0x0c,},{0x92,0xa0,0x09,0xa9,0xf0,0xd4,0xca,0xb8,0x72,0x0e,0x82,0x0b,0x5f,0x64,0x25,0x40,0xa2,0xb2,0x7b,0x54,0x16,0x50,0x3f,0x8f,0xb3,0x76,0x22,0x23,0xeb,0xdb,0x69,0xda,0x08,0x5a,0xc1,0xe4,0x3e,0x15,0x99,0x6e,0x45,0x8f,0x36,0x13,0xd0,0xf1,0x1d,0x8c,0x38,0x7b,0x2e,0xae,0xb4,0x30,0x2a,0xee,0xb0,0x0d,0x29,0x16,0x12,0xbb,0x0c,0x00,},\"\\x72\"},\n{{0xc5,0xaa,0x8d,0xf4,0x3f,0x9f,0x83,0x7b,0xed,0xb7,0x44,0x2f,0x31,0xdc,0xb7,0xb1,0x66,0xd3,0x85,0x35,0x07,0x6f,0x09,0x4b,0x85,0xce,0x3a,0x2e,0x0b,0x44,0x58,0xf7,},{0xfc,0x51,0xcd,0x8e,0x62,0x18,0xa1,0xa3,0x8d,0xa4,0x7e,0xd0,0x02,0x30,0xf0,0x58,0x08,0x16,0xed,0x13,0xba,0x33,0x03,0xac,0x5d,0xeb,0x91,0x15,0x48,0x90,0x80,0x25,},{0x62,0x91,0xd6,0x57,0xde,0xec,0x24,0x02,0x48,0x27,0xe6,0x9c,0x3a,0xbe,0x01,0xa3,0x0c,0xe5,0x48,0xa2,0x84,0x74,0x3a,0x44,0x5e,0x36,0x80,0xd7,0xdb,0x5a,0xc3,0xac,0x18,0xff,0x9b,0x53,0x8d,0x16,0xf2,0x90,0xae,0x67,0xf7,0x60,0x98,0x4d,0xc6,0x59,0x4a,0x7c,0x15,0xe9,0x71,0x6e,0xd2,0x8d,0xc0,0x27,0xbe,0xce,0xea,0x1e,0xc4,0x0a,},\"\\xaf\\x82\"},\n{{0x0d,0x4a,0x05,0xb0,0x73,0x52,0xa5,0x43,0x6e,0x18,0x03,0x56,0xda,0x0a,0xe6,0xef,0xa0,0x34,0x5f,0xf7,0xfb,0x15,0x72,0x57,0x57,0x72,0xe8,0x00,0x5e,0xd9,0x78,0xe9,},{0xe6,0x1a,0x18,0x5b,0xce,0xf2,0x61,0x3a,0x6c,0x7c,0xb7,0x97,0x63,0xce,0x94,0x5d,0x3b,0x24,0x5d,0x76,0x11,0x4d,0xd4,0x40,0xbc,0xf5,0xf2,0xdc,0x1a,0xa5,0x70,0x57,},{0xd9,0x86,0x8d,0x52,0xc2,0xbe,0xbc,0xe5,0xf3,0xfa,0x5a,0x79,0x89,0x19,0x70,0xf3,0x09,0xcb,0x65,0x91,0xe3,0xe1,0x70,0x2a,0x70,0x27,0x6f,0xa9,0x7c,0x24,0xb3,0xa8,0xe5,0x86,0x06,0xc3,0x8c,0x97,0x58,0x52,0x9d,0xa5,0x0e,0xe3,0x1b,0x82,0x19,0xcb,0xa4,0x52,0x71,0xc6,0x89,0xaf,0xa6,0x0b,0x0e,0xa2,0x6c,0x99,0xdb,0x19,0xb0,0x0c,},\"\\xcb\\xc7\\x7b\"},\n{{0x6d,0xf9,0x34,0x0c,0x13,0x8c,0xc1,0x88,0xb5,0xfe,0x44,0x64,0xeb,0xaa,0x3f,0x7f,0xc2,0x06,0xa2,0xd5,0x5c,0x34,0x34,0x70,0x7e,0x74,0xc9,0xfc,0x04,0xe2,0x0e,0xbb,},{0xc0,0xda,0xc1,0x02,0xc4,0x53,0x31,0x86,0xe2,0x5d,0xc4,0x31,0x28,0x47,0x23,0x53,0xea,0xab,0xdb,0x87,0x8b,0x15,0x2a,0xeb,0x8e,0x00,0x1f,0x92,0xd9,0x02,0x33,0xa7,},{0x12,0x4f,0x6f,0xc6,0xb0,0xd1,0x00,0x84,0x27,0x69,0xe7,0x1b,0xd5,0x30,0x66,0x4d,0x88,0x8d,0xf8,0x50,0x7d,0xf6,0xc5,0x6d,0xed,0xfd,0xb5,0x09,0xae,0xb9,0x34,0x16,0xe2,0x6b,0x91,0x8d,0x38,0xaa,0x06,0x30,0x5d,0xf3,0x09,0x56,0x97,0xc1,0x8b,0x2a,0xa8,0x32,0xea,0xa5,0x2e,0xdc,0x0a,0xe4,0x9f,0xba,0xe5,0xa8,0x5e,0x15,0x0c,0x07,},\"\\x5f\\x4c\\x89\\x89\"},\n{{0xb7,0x80,0x38,0x1a,0x65,0xed,0xf8,0xb7,0x8f,0x69,0x45,0xe8,0xdb,0xec,0x79,0x41,0xac,0x04,0x9f,0xd4,0xc6,0x10,0x40,0xcf,0x0c,0x32,0x43,0x57,0x97,0x5a,0x29,0x3c,},{0xe2,0x53,0xaf,0x07,0x66,0x80,0x4b,0x86,0x9b,0xb1,0x59,0x5b,0xe9,0x76,0x5b,0x53,0x48,0x86,0xbb,0xaa,0xb8,0x30,0x5b,0xf5,0x0d,0xbc,0x7f,0x89,0x9b,0xfb,0x5f,0x01,},{0xb2,0xfc,0x46,0xad,0x47,0xaf,0x46,0x44,0x78,0xc1,0x99,0xe1,0xf8,0xbe,0x16,0x9f,0x1b,0xe6,0x32,0x7c,0x7f,0x9a,0x0a,0x66,0x89,0x37,0x1c,0xa9,0x4c,0xaf,0x04,0x06,0x4a,0x01,0xb2,0x2a,0xff,0x15,0x20,0xab,0xd5,0x89,0x51,0x34,0x16,0x03,0xfa,0xed,0x76,0x8c,0xf7,0x8c,0xe9,0x7a,0xe7,0xb0,0x38,0xab,0xfe,0x45,0x6a,0xa1,0x7c,0x09,},\"\\x18\\xb6\\xbe\\xc0\\x97\"},\n{{0x78,0xae,0x9e,0xff,0xe6,0xf2,0x45,0xe9,0x24,0xa7,0xbe,0x63,0x04,0x11,0x46,0xeb,0xc6,0x70,0xdb,0xd3,0x06,0x0c,0xba,0x67,0xfb,0xc6,0x21,0x6f,0xeb,0xc4,0x45,0x46,},{0xfb,0xcf,0xbf,0xa4,0x05,0x05,0xd7,0xf2,0xbe,0x44,0x4a,0x33,0xd1,0x85,0xcc,0x54,0xe1,0x6d,0x61,0x52,0x60,0xe1,0x64,0x0b,0x2b,0x50,0x87,0xb8,0x3e,0xe3,0x64,0x3d,},{0x6e,0xd6,0x29,0xfc,0x1d,0x9c,0xe9,0xe1,0x46,0x87,0x55,0xff,0x63,0x6d,0x5a,0x3f,0x40,0xa5,0xd9,0xc9,0x1a,0xfd,0x93,0xb7,0x9d,0x24,0x18,0x30,0xf7,0xe5,0xfa,0x29,0x85,0x4b,0x8f,0x20,0xcc,0x6e,0xec,0xbb,0x24,0x8d,0xbd,0x8d,0x16,0xd1,0x4e,0x99,0x75,0x21,0x94,0xe4,0x90,0x4d,0x09,0xc7,0x4d,0x63,0x95,0x18,0x83,0x9d,0x23,0x00,},\"\\x89\\x01\\x0d\\x85\\x59\\x72\"},\n{{0x69,0x18,0x65,0xbf,0xc8,0x2a,0x1e,0x4b,0x57,0x4e,0xec,0xde,0x4c,0x75,0x19,0x09,0x3f,0xaf,0x0c,0xf8,0x67,0x38,0x02,0x34,0xe3,0x66,0x46,0x45,0xc6,0x1c,0x5f,0x79,},{0x98,0xa5,0xe3,0xa3,0x6e,0x67,0xaa,0xba,0x89,0x88,0x8b,0xf0,0x93,0xde,0x1a,0xd9,0x63,0xe7,0x74,0x01,0x3b,0x39,0x02,0xbf,0xab,0x35,0x6d,0x8b,0x90,0x17,0x8a,0x63,},{0x6e,0x0a,0xf2,0xfe,0x55,0xae,0x37,0x7a,0x6b,0x7a,0x72,0x78,0xed,0xfb,0x41,0x9b,0xd3,0x21,0xe0,0x6d,0x0d,0xf5,0xe2,0x70,0x37,0xdb,0x88,0x12,0xe7,0xe3,0x52,0x98,0x10,0xfa,0x55,0x52,0xf6,0xc0,0x02,0x09,0x85,0xca,0x17,0xa0,0xe0,0x2e,0x03,0x6d,0x7b,0x22,0x2a,0x24,0xf9,0x9b,0x77,0xb7,0x5f,0xdd,0x16,0xcb,0x05,0x56,0x81,0x07,},\"\\xb4\\xa8\\xf3\\x81\\xe7\\x0e\\x7a\"},\n{{0x3b,0x26,0x51,0x6f,0xb3,0xdc,0x88,0xeb,0x18,0x1b,0x9e,0xd7,0x3f,0x0b,0xcd,0x52,0xbc,0xd6,0xb4,0xc7,0x88,0xe4,0xbc,0xaf,0x46,0x05,0x7f,0xd0,0x78,0xbe,0xe0,0x73,},{0xf8,0x1f,0xb5,0x4a,0x82,0x5f,0xce,0xd9,0x5e,0xb0,0x33,0xaf,0xcd,0x64,0x31,0x40,0x75,0xab,0xfb,0x0a,0xbd,0x20,0xa9,0x70,0x89,0x25,0x03,0x43,0x6f,0x34,0xb8,0x63,},{0xd6,0xad,0xde,0xc5,0xaf,0xb0,0x52,0x8a,0xc1,0x7b,0xb1,0x78,0xd3,0xe7,0xf2,0x88,0x7f,0x9a,0xdb,0xb1,0xad,0x16,0xe1,0x10,0x54,0x5e,0xf3,0xbc,0x57,0xf9,0xde,0x23,0x14,0xa5,0xc8,0x38,0x8f,0x72,0x3b,0x89,0x07,0xbe,0x0f,0x3a,0xc9,0x0c,0x62,0x59,0xbb,0xe8,0x85,0xec,0xc1,0x76,0x45,0xdf,0x3d,0xb7,0xd4,0x88,0xf8,0x05,0xfa,0x08,},\"\\x42\\x84\\xab\\xc5\\x1b\\xb6\\x72\\x35\"},\n{{0xed,0xc6,0xf5,0xfb,0xdd,0x1c,0xee,0x4d,0x10,0x1c,0x06,0x35,0x30,0xa3,0x04,0x90,0xb2,0x21,0xbe,0x68,0xc0,0x36,0xf5,0xb0,0x7d,0x0f,0x95,0x3b,0x74,0x5d,0xf1,0x92,},{0xc1,0xa4,0x9c,0x66,0xe6,0x17,0xf9,0xef,0x5e,0xc6,0x6b,0xc4,0xc6,0x56,0x4c,0xa3,0x3d,0xe2,0xa5,0xfb,0x5e,0x14,0x64,0x06,0x2e,0x6d,0x6c,0x62,0x19,0x15,0x5e,0xfd,},{0x2c,0x76,0xa0,0x4a,0xf2,0x39,0x1c,0x14,0x70,0x82,0xe3,0x3f,0xaa,0xcd,0xbe,0x56,0x64,0x2a,0x1e,0x13,0x4b,0xd3,0x88,0x62,0x0b,0x85,0x2b,0x90,0x1a,0x6b,0xc1,0x6f,0xf6,0xc9,0xcc,0x94,0x04,0xc4,0x1d,0xea,0x12,0xed,0x28,0x1d,0xa0,0x67,0xa1,0x51,0x38,0x66,0xf9,0xd9,0x64,0xf8,0xbd,0xd2,0x49,0x53,0x85,0x6c,0x50,0x04,0x29,0x01,},\"\\x67\\x2b\\xf8\\x96\\x5d\\x04\\xbc\\x51\\x46\"},\n{{0x4e,0x7d,0x21,0xfb,0x3b,0x18,0x97,0x57,0x1a,0x44,0x58,0x33,0xbe,0x0f,0x9f,0xd4,0x1c,0xd6,0x2b,0xe3,0xaa,0x04,0x04,0x0f,0x89,0x34,0xe1,0xfc,0xbd,0xca,0xcd,0x45,},{0x31,0xb2,0x52,0x4b,0x83,0x48,0xf7,0xab,0x1d,0xfa,0xfa,0x67,0x5c,0xc5,0x38,0xe9,0xa8,0x4e,0x3f,0xe5,0x81,0x9e,0x27,0xc1,0x2a,0xd8,0xbb,0xc1,0xa3,0x6e,0x4d,0xff,},{0x28,0xe4,0x59,0x8c,0x41,0x5a,0xe9,0xde,0x01,0xf0,0x3f,0x9f,0x3f,0xab,0x4e,0x91,0x9e,0x8b,0xf5,0x37,0xdd,0x2b,0x0c,0xdf,0x6e,0x79,0xb9,0xe6,0x55,0x9c,0x94,0x09,0xd9,0x15,0x1a,0x4c,0x40,0xf0,0x83,0x19,0x39,0x37,0x62,0x7c,0x36,0x94,0x88,0x25,0x9e,0x99,0xda,0x5a,0x9f,0x0a,0x87,0x49,0x7f,0xa6,0x69,0x6a,0x5d,0xd6,0xce,0x08,},\"\\x33\\xd7\\xa7\\x86\\xad\\xed\\x8c\\x1b\\xf6\\x91\"},\n{{0xa9,0x80,0xf8,0x92,0xdb,0x13,0xc9,0x9a,0x3e,0x89,0x71,0xe9,0x65,0xb2,0xff,0x3d,0x41,0xea,0xfd,0x54,0x09,0x3b,0xc9,0xf3,0x4d,0x1f,0xd2,0x2d,0x84,0x11,0x5b,0xb6,},{0x44,0xb5,0x7e,0xe3,0x0c,0xdb,0x55,0x82,0x9d,0x0a,0x5d,0x4f,0x04,0x6b,0xae,0xf0,0x78,0xf1,0xe9,0x7a,0x7f,0x21,0xb6,0x2d,0x75,0xf8,0xe9,0x6e,0xa1,0x39,0xc3,0x5f,},{0x77,0xd3,0x89,0xe5,0x99,0x63,0x0d,0x93,0x40,0x76,0x32,0x95,0x83,0xcd,0x41,0x05,0xa6,0x49,0xa9,0x29,0x2a,0xbc,0x44,0xcd,0x28,0xc4,0x00,0x00,0xc8,0xe2,0xf5,0xac,0x76,0x60,0xa8,0x1c,0x85,0xb7,0x2a,0xf8,0x45,0x2d,0x7d,0x25,0xc0,0x70,0x86,0x1d,0xae,0x91,0x60,0x1c,0x78,0x03,0xd6,0x56,0x53,0x16,0x50,0xdd,0x4e,0x5c,0x41,0x00,},\"\\x34\\x86\\xf6\\x88\\x48\\xa6\\x5a\\x0e\\xb5\\x50\\x7d\"},\n{{0x5b,0x5a,0x61,0x9f,0x8c,0xe1,0xc6,0x6d,0x7c,0xe2,0x6e,0x5a,0x2a,0xe7,0xb0,0xc0,0x4f,0xeb,0xcd,0x34,0x6d,0x28,0x6c,0x92,0x9e,0x19,0xd0,0xd5,0x97,0x3b,0xfe,0xf9,},{0x6f,0xe8,0x36,0x93,0xd0,0x11,0xd1,0x11,0x13,0x1c,0x4f,0x3f,0xba,0xaa,0x40,0xa9,0xd3,0xd7,0x6b,0x30,0x01,0x2f,0xf7,0x3b,0xb0,0xe3,0x9e,0xc2,0x7a,0xb1,0x82,0x57,},{0x0f,0x9a,0xd9,0x79,0x30,0x33,0xa2,0xfa,0x06,0x61,0x4b,0x27,0x7d,0x37,0x38,0x1e,0x6d,0x94,0xf6,0x5a,0xc2,0xa5,0xa9,0x45,0x58,0xd0,0x9e,0xd6,0xce,0x92,0x22,0x58,0xc1,0xa5,0x67,0x95,0x2e,0x86,0x3a,0xc9,0x42,0x97,0xae,0xc3,0xc0,0xd0,0xc8,0xdd,0xf7,0x10,0x84,0xe5,0x04,0x86,0x0b,0xb6,0xba,0x27,0x44,0x9b,0x55,0xad,0xc4,0x0e,},\"\\x5a\\x8d\\x9d\\x0a\\x22\\x35\\x7e\\x66\\x55\\xf9\\xc7\\x85\"},\n{{0x94,0x0c,0x89,0xfe,0x40,0xa8,0x1d,0xaf,0xbd,0xb2,0x41,0x6d,0x14,0xae,0x46,0x91,0x19,0x86,0x97,0x44,0x41,0x0c,0x33,0x03,0xbf,0xaa,0x02,0x41,0xda,0xc5,0x78,0x00,},{0xa2,0xeb,0x8c,0x05,0x01,0xe3,0x0b,0xae,0x0c,0xf8,0x42,0xd2,0xbd,0xe8,0xde,0xc7,0x38,0x6f,0x6b,0x7f,0xc3,0x98,0x1b,0x8c,0x57,0xc9,0x79,0x2b,0xb9,0x4c,0xf2,0xdd,},{0xd8,0xbb,0x64,0xaa,0xd8,0xc9,0x95,0x5a,0x11,0x5a,0x79,0x3a,0xdd,0xd2,0x4f,0x7f,0x2b,0x07,0x76,0x48,0x71,0x4f,0x49,0xc4,0x69,0x4e,0xc9,0x95,0xb3,0x30,0xd0,0x9d,0x64,0x0d,0xf3,0x10,0xf4,0x47,0xfd,0x7b,0x6c,0xb5,0xc1,0x4f,0x9f,0xe9,0xf4,0x90,0xbc,0xf8,0xcf,0xad,0xbf,0xd2,0x16,0x9c,0x8a,0xc2,0x0d,0x3b,0x8a,0xf4,0x9a,0x0c,},\"\\xb8\\x7d\\x38\\x13\\xe0\\x3f\\x58\\xcf\\x19\\xfd\\x0b\\x63\\x95\"},\n{{0x9a,0xca,0xd9,0x59,0xd2,0x16,0x21,0x2d,0x78,0x9a,0x11,0x92,0x52,0xeb,0xfe,0x0c,0x96,0x51,0x2a,0x23,0xc7,0x3b,0xd9,0xf3,0xb2,0x02,0x29,0x2d,0x69,0x16,0xa7,0x38,},{0xcf,0x3a,0xf8,0x98,0x46,0x7a,0x5b,0x7a,0x52,0xd3,0x3d,0x53,0xbc,0x03,0x7e,0x26,0x42,0xa8,0xda,0x99,0x69,0x03,0xfc,0x25,0x22,0x17,0xe9,0xc0,0x33,0xe2,0xf2,0x91,},{0x6e,0xe3,0xfe,0x81,0xe2,0x3c,0x60,0xeb,0x23,0x12,0xb2,0x00,0x6b,0x3b,0x25,0xe6,0x83,0x8e,0x02,0x10,0x66,0x23,0xf8,0x44,0xc4,0x4e,0xdb,0x8d,0xaf,0xd6,0x6a,0xb0,0x67,0x10,0x87,0xfd,0x19,0x5d,0xf5,0xb8,0xf5,0x8a,0x1d,0x6e,0x52,0xaf,0x42,0x90,0x80,0x53,0xd5,0x5c,0x73,0x21,0x01,0x00,0x92,0x74,0x87,0x95,0xef,0x94,0xcf,0x06,},\"\\x55\\xc7\\xfa\\x43\\x4f\\x5e\\xd8\\xcd\\xec\\x2b\\x7a\\xea\\xc1\\x73\"},\n{{0xd5,0xae,0xee,0x41,0xee,0xb0,0xe9,0xd1,0xbf,0x83,0x37,0xf9,0x39,0x58,0x7e,0xbe,0x29,0x61,0x61,0xe6,0xbf,0x52,0x09,0xf5,0x91,0xec,0x93,0x9e,0x14,0x40,0xc3,0x00,},{0xfd,0x2a,0x56,0x57,0x23,0x16,0x3e,0x29,0xf5,0x3c,0x9d,0xe3,0xd5,0xe8,0xfb,0xe3,0x6a,0x7a,0xb6,0x6e,0x14,0x39,0xec,0x4e,0xae,0x9c,0x0a,0x60,0x4a,0xf2,0x91,0xa5,},{0xf6,0x8d,0x04,0x84,0x7e,0x5b,0x24,0x97,0x37,0x89,0x9c,0x01,0x4d,0x31,0xc8,0x05,0xc5,0x00,0x7a,0x62,0xc0,0xa1,0x0d,0x50,0xbb,0x15,0x38,0xc5,0xf3,0x55,0x03,0x95,0x1f,0xbc,0x1e,0x08,0x68,0x2f,0x2c,0xc0,0xc9,0x2e,0xfe,0x8f,0x49,0x85,0xde,0xc6,0x1d,0xcb,0xd5,0x4d,0x4b,0x94,0xa2,0x25,0x47,0xd2,0x44,0x51,0x27,0x1c,0x8b,0x00,},\"\\x0a\\x68\\x8e\\x79\\xbe\\x24\\xf8\\x66\\x28\\x6d\\x46\\x46\\xb5\\xd8\\x1c\"},\n{{0x0a,0x47,0xd1,0x04,0x52,0xae,0x2f,0xeb,0xec,0x51,0x8a,0x1c,0x7c,0x36,0x28,0x90,0xc3,0xfc,0x1a,0x49,0xd3,0x4b,0x03,0xb6,0x46,0x7d,0x35,0xc9,0x04,0xa8,0x36,0x2d,},{0x34,0xe5,0xa8,0x50,0x8c,0x47,0x43,0x74,0x69,0x62,0xc0,0x66,0xe4,0xba,0xde,0xa2,0x20,0x1b,0x8a,0xb4,0x84,0xde,0x5c,0x4f,0x94,0x47,0x6c,0xcd,0x21,0x43,0x95,0x5b,},{0x2a,0x3d,0x27,0xdc,0x40,0xd0,0xa8,0x12,0x79,0x49,0xa3,0xb7,0xf9,0x08,0xb3,0x68,0x8f,0x63,0xb7,0xf1,0x4f,0x65,0x1a,0xac,0xd7,0x15,0x94,0x0b,0xdb,0xe2,0x7a,0x08,0x09,0xaa,0xc1,0x42,0xf4,0x7a,0xb0,0xe1,0xe4,0x4f,0xa4,0x90,0xba,0x87,0xce,0x53,0x92,0xf3,0x3a,0x89,0x15,0x39,0xca,0xf1,0xef,0x4c,0x36,0x7c,0xae,0x54,0x50,0x0c,},\"\\xc9\\x42\\xfa\\x7a\\xc6\\xb2\\x3a\\xb7\\xff\\x61\\x2f\\xdc\\x8e\\x68\\xef\\x39\"},\n{{0xf8,0x14,0x8f,0x75,0x06,0xb7,0x75,0xef,0x46,0xfd,0xc8,0xe8,0xc7,0x56,0x51,0x68,0x12,0xd4,0x7d,0x6c,0xfb,0xfa,0x31,0x8c,0x27,0xc9,0xa2,0x26,0x41,0xe5,0x6f,0x17,},{0x04,0x45,0xe4,0x56,0xda,0xcc,0x7d,0x5b,0x0b,0xbe,0xd2,0x3c,0x82,0x00,0xcd,0xb7,0x4b,0xdc,0xb0,0x3e,0x4c,0x7b,0x73,0xf0,0xa2,0xb9,0xb4,0x6e,0xac,0x5d,0x43,0x72,},{0x36,0x53,0xcc,0xb2,0x12,0x19,0x20,0x2b,0x84,0x36,0xfb,0x41,0xa3,0x2b,0xa2,0x61,0x8c,0x4a,0x13,0x34,0x31,0xe6,0xe6,0x34,0x63,0xce,0xb3,0xb6,0x10,0x6c,0x4d,0x56,0xe1,0xd2,0xba,0x16,0x5b,0xa7,0x6e,0xaa,0xd3,0xdc,0x39,0xbf,0xfb,0x13,0x0f,0x1d,0xe3,0xd8,0xe6,0x42,0x7d,0xb5,0xb7,0x19,0x38,0xdb,0x4e,0x27,0x2b,0xc3,0xe2,0x0b,},\"\\x73\\x68\\x72\\x4a\\x5b\\x0e\\xfb\\x57\\xd2\\x8d\\x97\\x62\\x2d\\xbd\\xe7\\x25\\xaf\"},\n{{0x77,0xf8,0x86,0x91,0xc4,0xef,0xf2,0x3e,0xbb,0x73,0x64,0x94,0x70,0x92,0x95,0x1a,0x5f,0xf3,0xf1,0x07,0x85,0xb4,0x17,0xe9,0x18,0x82,0x3a,0x55,0x2d,0xab,0x7c,0x75,},{0x74,0xd2,0x91,0x27,0xf1,0x99,0xd8,0x6a,0x86,0x76,0xae,0xc3,0x3b,0x4c,0xe3,0xf2,0x25,0xcc,0xb1,0x91,0xf5,0x2c,0x19,0x1c,0xcd,0x1e,0x8c,0xca,0x65,0x21,0x3a,0x6b,},{0xfb,0xe9,0x29,0xd7,0x43,0xa0,0x3c,0x17,0x91,0x05,0x75,0x49,0x2f,0x30,0x92,0xee,0x2a,0x2b,0xf1,0x4a,0x60,0xa3,0xfc,0xac,0xec,0x74,0xa5,0x8c,0x73,0x34,0x51,0x0f,0xc2,0x62,0xdb,0x58,0x27,0x91,0x32,0x2d,0x6c,0x8c,0x41,0xf1,0x70,0x0a,0xdb,0x80,0x02,0x7e,0xca,0xbc,0x14,0x27,0x0b,0x70,0x34,0x44,0xae,0x3e,0xe7,0x62,0x3e,0x0a,},\"\\xbd\\x8e\\x05\\x03\\x3f\\x3a\\x8b\\xcd\\xcb\\xf4\\xbe\\xce\\xb7\\x09\\x01\\xc8\\x2e\\x31\"},\n{{0xab,0x6f,0x7a,0xee,0x6a,0x08,0x37,0xb3,0x34,0xba,0x5e,0xb1,0xb2,0xad,0x7f,0xce,0xcf,0xab,0x7e,0x32,0x3c,0xab,0x18,0x7f,0xe2,0xe0,0xa9,0x5d,0x80,0xef,0xf1,0x32,},{0x5b,0x96,0xdc,0xa4,0x97,0x87,0x5b,0xf9,0x66,0x4c,0x5e,0x75,0xfa,0xcf,0x3f,0x9b,0xc5,0x4b,0xae,0x91,0x3d,0x66,0xca,0x15,0xee,0x85,0xf1,0x49,0x1c,0xa2,0x4d,0x2c,},{0x73,0xbc,0xa6,0x4e,0x9d,0xd0,0xdb,0x88,0x13,0x8e,0xed,0xfa,0xfc,0xea,0x8f,0x54,0x36,0xcf,0xb7,0x4b,0xfb,0x0e,0x77,0x33,0xcf,0x34,0x9b,0xaa,0x0c,0x49,0x77,0x5c,0x56,0xd5,0x93,0x4e,0x1d,0x38,0xe3,0x6f,0x39,0xb7,0xc5,0xbe,0xb0,0xa8,0x36,0x51,0x0c,0x45,0x12,0x6f,0x8e,0xc4,0xb6,0x81,0x05,0x19,0x90,0x5b,0x0c,0xa0,0x7c,0x09,},\"\\x81\\x71\\x45\\x6f\\x8b\\x90\\x71\\x89\\xb1\\xd7\\x79\\xe2\\x6b\\xc5\\xaf\\xbb\\x08\\xc6\\x7a\"},\n{{0x8d,0x13,0x5d,0xe7,0xc8,0x41,0x1b,0xbd,0xbd,0x1b,0x31,0xe5,0xdc,0x67,0x8f,0x2a,0xc7,0x10,0x9e,0x79,0x2b,0x60,0xf3,0x8c,0xd2,0x49,0x36,0xe8,0xa8,0x98,0xc3,0x2d,},{0x1c,0xa2,0x81,0x93,0x85,0x29,0x89,0x65,0x35,0xa7,0x71,0x4e,0x35,0x84,0x08,0x5b,0x86,0xef,0x9f,0xec,0x72,0x3f,0x42,0x81,0x9f,0xc8,0xdd,0x5d,0x8c,0x00,0x81,0x7f,},{0xa1,0xad,0xc2,0xbc,0x6a,0x2d,0x98,0x06,0x62,0x67,0x7e,0x7f,0xdf,0xf6,0x42,0x4d,0xe7,0xdb,0xa5,0x0f,0x57,0x95,0xca,0x90,0xfd,0xf3,0xe9,0x6e,0x25,0x6f,0x32,0x85,0xca,0xc7,0x1d,0x33,0x60,0x48,0x2e,0x99,0x3d,0x02,0x94,0xba,0x4e,0xc7,0x44,0x0c,0x61,0xaf,0xfd,0xf3,0x5f,0xe8,0x3e,0x6e,0x04,0x26,0x39,0x37,0xdb,0x93,0xf1,0x05,},\"\\x8b\\xa6\\xa4\\xc9\\xa1\\x5a\\x24\\x4a\\x9c\\x26\\xbb\\x2a\\x59\\xb1\\x02\\x6f\\x21\\x34\\x8b\\x49\"},\n{{0x0e,0x76,0x5d,0x72,0x0e,0x70,0x5f,0x93,0x66,0xc1,0xab,0x8c,0x3f,0xa8,0x4c,0x9a,0x44,0x37,0x0c,0x06,0x96,0x9f,0x80,0x32,0x96,0x88,0x4b,0x28,0x46,0xa6,0x52,0xa4,},{0x7f,0xae,0x45,0xdd,0x0a,0x05,0x97,0x10,0x26,0xd4,0x10,0xbc,0x49,0x7a,0xf5,0xbe,0x7d,0x08,0x27,0xa8,0x2a,0x14,0x5c,0x20,0x3f,0x62,0x5d,0xfc,0xb8,0xb0,0x3b,0xa8,},{0xbb,0x61,0xcf,0x84,0xde,0x61,0x86,0x22,0x07,0xc6,0xa4,0x55,0x25,0x8b,0xc4,0xdb,0x4e,0x15,0xee,0xa0,0x31,0x7f,0xf8,0x87,0x18,0xb8,0x82,0xa0,0x6b,0x5c,0xf6,0xec,0x6f,0xd2,0x0c,0x5a,0x26,0x9e,0x5d,0x5c,0x80,0x5b,0xaf,0xbc,0xc5,0x79,0xe2,0x59,0x0a,0xf4,0x14,0xc7,0xc2,0x27,0x27,0x3c,0x10,0x2a,0x10,0x07,0x0c,0xdf,0xe8,0x0f,},\"\\x1d\\x56\\x6a\\x62\\x32\\xbb\\xaa\\xb3\\xe6\\xd8\\x80\\x4b\\xb5\\x18\\xa4\\x98\\xed\\x0f\\x90\\x49\\x86\"},\n{{0xdb,0x36,0xe3,0x26,0xd6,0x76,0xc2,0xd1,0x9c,0xc8,0xfe,0x0c,0x14,0xb7,0x09,0x20,0x2e,0xcf,0xc7,0x61,0xd2,0x70,0x89,0xeb,0x6e,0xa4,0xb1,0xbb,0x02,0x1e,0xcf,0xa7,},{0x48,0x35,0x9b,0x85,0x0d,0x23,0xf0,0x71,0x5d,0x94,0xbb,0x8b,0xb7,0x5e,0x7e,0x14,0x32,0x2e,0xaf,0x14,0xf0,0x6f,0x28,0xa8,0x05,0x40,0x3f,0xbd,0xa0,0x02,0xfc,0x85,},{0xb6,0xdc,0xd0,0x99,0x89,0xdf,0xba,0xc5,0x43,0x22,0xa3,0xce,0x87,0x87,0x6e,0x1d,0x62,0x13,0x4d,0xa9,0x98,0xc7,0x9d,0x24,0xb5,0x0b,0xd7,0xa6,0xa7,0x97,0xd8,0x6a,0x0e,0x14,0xdc,0x9d,0x74,0x91,0xd6,0xc1,0x4a,0x67,0x3c,0x65,0x2c,0xfb,0xec,0x9f,0x96,0x2a,0x38,0xc9,0x45,0xda,0x3b,0x2f,0x08,0x79,0xd0,0xb6,0x8a,0x92,0x13,0x00,},\"\\x1b\\x0a\\xfb\\x0a\\xc4\\xba\\x9a\\xb7\\xb7\\x17\\x2c\\xdd\\xc9\\xeb\\x42\\xbb\\xa1\\xa6\\x4b\\xce\\x47\\xd4\"},\n{{0xc8,0x99,0x55,0xe0,0xf7,0x74,0x1d,0x90,0x5d,0xf0,0x73,0x0b,0x3d,0xc2,0xb0,0xce,0x1a,0x13,0x13,0x4e,0x44,0xfe,0xf3,0xd4,0x0d,0x60,0xc0,0x20,0xef,0x19,0xdf,0x77,},{0xfd,0xb3,0x06,0x73,0x40,0x2f,0xaf,0x1c,0x80,0x33,0x71,0x4f,0x35,0x17,0xe4,0x7c,0xc0,0xf9,0x1f,0xe7,0x0c,0xf3,0x83,0x6d,0x6c,0x23,0x63,0x6e,0x3f,0xd2,0x28,0x7c,},{0x7e,0xf6,0x6e,0x5e,0x86,0xf2,0x36,0x08,0x48,0xe0,0x01,0x4e,0x94,0x88,0x0a,0xe2,0x92,0x0a,0xd8,0xa3,0x18,0x5a,0x46,0xb3,0x5d,0x1e,0x07,0xde,0xa8,0xfa,0x8a,0xe4,0xf6,0xb8,0x43,0xba,0x17,0x4d,0x99,0xfa,0x79,0x86,0x65,0x4a,0x08,0x91,0xc1,0x2a,0x79,0x44,0x55,0x66,0x93,0x75,0xbf,0x92,0xaf,0x4c,0xc2,0x77,0x0b,0x57,0x9e,0x0c,},\"\\x50\\x7c\\x94\\xc8\\x82\\x0d\\x2a\\x57\\x93\\xcb\\xf3\\x44\\x2b\\x3d\\x71\\x93\\x6f\\x35\\xfe\\x3a\\xfe\\xf3\\x16\"},\n{{0x4e,0x62,0x62,0x7f,0xc2,0x21,0x14,0x24,0x78,0xae,0xe7,0xf0,0x07,0x81,0xf8,0x17,0xf6,0x62,0xe3,0xb7,0x5d,0xb2,0x9b,0xb1,0x4a,0xb4,0x7c,0xf8,0xe8,0x41,0x04,0xd6,},{0xb1,0xd3,0x98,0x01,0x89,0x20,0x27,0xd5,0x8a,0x8c,0x64,0x33,0x51,0x63,0x19,0x58,0x93,0xbf,0xc1,0xb6,0x1d,0xbe,0xca,0x32,0x60,0x49,0x7e,0x1f,0x30,0x37,0x11,0x07,},{0x83,0x6a,0xfa,0x76,0x4d,0x9c,0x48,0xaa,0x47,0x70,0xa4,0x38,0x8b,0x65,0x4e,0x97,0xb3,0xc1,0x6f,0x08,0x29,0x67,0xfe,0xbc,0xa2,0x7f,0x2f,0xc4,0x7d,0xdf,0xd9,0x24,0x4b,0x03,0xcf,0xc7,0x29,0x69,0x8a,0xcf,0x51,0x09,0x70,0x43,0x46,0xb6,0x0b,0x23,0x0f,0x25,0x54,0x30,0x08,0x9d,0xdc,0x56,0x91,0x23,0x99,0xd1,0x12,0x2d,0xe7,0x0a,},\"\\xd3\\xd6\\x15\\xa8\\x47\\x2d\\x99\\x62\\xbb\\x70\\xc5\\xb5\\x46\\x6a\\x3d\\x98\\x3a\\x48\\x11\\x04\\x6e\\x2a\\x0e\\xf5\"},\n{{0x6b,0x83,0xd7,0xda,0x89,0x08,0xc3,0xe7,0x20,0x5b,0x39,0x86,0x4b,0x56,0xe5,0xf3,0xe1,0x71,0x96,0xa3,0xfc,0x9c,0x2f,0x58,0x05,0xaa,0xd0,0xf5,0x55,0x4c,0x14,0x2d,},{0xd0,0xc8,0x46,0xf9,0x7f,0xe2,0x85,0x85,0xc0,0xee,0x15,0x90,0x15,0xd6,0x4c,0x56,0x31,0x1c,0x88,0x6e,0xdd,0xcc,0x18,0x5d,0x29,0x6d,0xbb,0x16,0x5d,0x26,0x25,0xd6,},{0x16,0xe4,0x62,0xa2,0x9a,0x6d,0xd4,0x98,0x68,0x5a,0x37,0x18,0xb3,0xee,0xd0,0x0c,0xc1,0x59,0x86,0x01,0xee,0x47,0x82,0x04,0x86,0x03,0x2d,0x6b,0x9a,0xcc,0x9b,0xf8,0x9f,0x57,0x68,0x4e,0x08,0xd8,0xc0,0xf0,0x55,0x89,0xcd,0xa2,0x88,0x2a,0x05,0xdc,0x4c,0x63,0xf9,0xd0,0x43,0x1d,0x65,0x52,0x71,0x08,0x12,0x43,0x30,0x03,0xbc,0x08,},\"\\x6a\\xda\\x80\\xb6\\xfa\\x84\\xf7\\x03\\x49\\x20\\x78\\x9e\\x85\\x36\\xb8\\x2d\\x5e\\x46\\x78\\x05\\x9a\\xed\\x27\\xf7\\x1c\"},\n{{0x19,0xa9,0x1f,0xe2,0x3a,0x4e,0x9e,0x33,0xec,0xc4,0x74,0x87,0x8f,0x57,0xc6,0x4c,0xf1,0x54,0xb3,0x94,0x20,0x34,0x87,0xa7,0x03,0x5e,0x1a,0xd9,0xcd,0x69,0x7b,0x0d,},{0x2b,0xf3,0x2b,0xa1,0x42,0xba,0x46,0x22,0xd8,0xf3,0xe2,0x9e,0xcd,0x85,0xee,0xa0,0x7b,0x9c,0x47,0xbe,0x9d,0x64,0x41,0x2c,0x9b,0x51,0x0b,0x27,0xdd,0x21,0x8b,0x23,},{0x88,0x1f,0x5b,0x8c,0x5a,0x03,0x0d,0xf0,0xf7,0x5b,0x66,0x34,0xb0,0x70,0xdd,0x27,0xbd,0x1e,0xe3,0xc0,0x87,0x38,0xae,0x34,0x93,0x38,0xb3,0xee,0x64,0x69,0xbb,0xf9,0x76,0x0b,0x13,0x57,0x8a,0x23,0x7d,0x51,0x82,0x53,0x5e,0xde,0x12,0x12,0x83,0x02,0x7a,0x90,0xb5,0xf8,0x65,0xd6,0x3a,0x65,0x37,0xdc,0xa0,0x7b,0x44,0x04,0x9a,0x0f,},\"\\x82\\xcb\\x53\\xc4\\xd5\\xa0\\x13\\xba\\xe5\\x07\\x07\\x59\\xec\\x06\\xc3\\xc6\\x95\\x5a\\xb7\\xa4\\x05\\x09\\x58\\xec\\x32\\x8c\"},\n{{0x1d,0x5b,0x8c,0xb6,0x21,0x5c,0x18,0x14,0x16,0x66,0xba,0xee,0xfc,0xf5,0xd6,0x9d,0xad,0x5b,0xea,0x9a,0x34,0x93,0xdd,0xda,0xa3,0x57,0xa4,0x39,0x7a,0x13,0xd4,0xde,},{0x94,0xd2,0x3d,0x97,0x7c,0x33,0xe4,0x9e,0x5e,0x49,0x92,0xc6,0x8f,0x25,0xec,0x99,0xa2,0x7c,0x41,0xce,0x6b,0x91,0xf2,0xbf,0xa0,0xcd,0x82,0x92,0xfe,0x96,0x28,0x35,},{0x3a,0xcd,0x39,0xbe,0xc8,0xc3,0xcd,0x2b,0x44,0x29,0x97,0x22,0xb5,0x85,0x0a,0x04,0x00,0xc1,0x44,0x35,0x90,0xfd,0x48,0x61,0xd5,0x9a,0xae,0x74,0x96,0xac,0xb3,0xdf,0x73,0xfc,0x3f,0xdf,0x79,0x69,0xae,0x5f,0x50,0xba,0x47,0xdd,0xdc,0x43,0x52,0x46,0xe5,0xfd,0x37,0x6f,0x6b,0x89,0x1c,0xd4,0xc2,0xca,0xf5,0xd6,0x14,0xb6,0x17,0x0c,},\"\\xa9\\xa8\\xcb\\xb0\\xad\\x58\\x51\\x24\\xe5\\x22\\xab\\xbf\\xb4\\x05\\x33\\xbd\\xd6\\xf4\\x93\\x47\\xb5\\x5b\\x18\\xe8\\x55\\x8c\\xb0\"},\n{{0x6a,0x91,0xb3,0x22,0x7c,0x47,0x22,0x99,0x08,0x9b,0xdc,0xe9,0x35,0x6e,0x72,0x6a,0x40,0xef,0xd8,0x40,0xf1,0x10,0x02,0x70,0x8b,0x7e,0xe5,0x5b,0x64,0x10,0x5a,0xc2,},{0x9d,0x08,0x4a,0xa8,0xb9,0x7a,0x6b,0x9b,0xaf,0xa4,0x96,0xdb,0xc6,0xf7,0x6f,0x33,0x06,0xa1,0x16,0xc9,0xd9,0x17,0xe6,0x81,0x52,0x0a,0x0f,0x91,0x43,0x69,0x42,0x7e,},{0xf5,0x87,0x54,0x23,0x78,0x1b,0x66,0x21,0x6c,0xb5,0xe8,0x99,0x8d,0xe5,0xd9,0xff,0xc2,0x9d,0x1d,0x67,0x10,0x70,0x54,0xac,0xe3,0x37,0x45,0x03,0xa9,0xc3,0xef,0x81,0x15,0x77,0xf2,0x69,0xde,0x81,0x29,0x67,0x44,0xbd,0x70,0x6f,0x1a,0xc4,0x78,0xca,0xf0,0x9b,0x54,0xcd,0xf8,0x71,0xb3,0xf8,0x02,0xbd,0x57,0xf9,0xa6,0xcb,0x91,0x01,},\"\\x5c\\xb6\\xf9\\xaa\\x59\\xb8\\x0e\\xca\\x14\\xf6\\xa6\\x8f\\xb4\\x0c\\xf0\\x7b\\x79\\x4e\\x75\\x17\\x1f\\xba\\x96\\x26\\x2c\\x1c\\x6a\\xdc\"},\n{{0x93,0xea,0xa8,0x54,0xd7,0x91,0xf0,0x53,0x72,0xce,0x72,0xb9,0x4f,0xc6,0x50,0x3b,0x2f,0xf8,0xae,0x68,0x19,0xe6,0xa2,0x1a,0xfe,0x82,0x5e,0x27,0xad,0xa9,0xe4,0xfb,},{0x16,0xce,0xe8,0xa3,0xf2,0x63,0x18,0x34,0xc8,0x8b,0x67,0x08,0x97,0xff,0x0b,0x08,0xce,0x90,0xcc,0x14,0x7b,0x45,0x93,0xb3,0xf1,0xf4,0x03,0x72,0x7f,0x7e,0x7a,0xd5,},{0xd8,0x34,0x19,0x7c,0x1a,0x30,0x80,0x61,0x4e,0x0a,0x5f,0xa0,0xaa,0xaa,0x80,0x88,0x24,0xf2,0x1c,0x38,0xd6,0x92,0xe6,0xff,0xbd,0x20,0x0f,0x7d,0xfb,0x3c,0x8f,0x44,0x40,0x2a,0x73,0x82,0x18,0x0b,0x98,0xad,0x0a,0xfc,0x8e,0xec,0x1a,0x02,0xac,0xec,0xf3,0xcb,0x7f,0xde,0x62,0x7b,0x9f,0x18,0x11,0x1f,0x26,0x0a,0xb1,0xdb,0x9a,0x07,},\"\\x32\\xfe\\x27\\x99\\x41\\x24\\x20\\x21\\x53\\xb5\\xc7\\x0d\\x38\\x13\\xfd\\xee\\x9c\\x2a\\xa6\\xe7\\xdc\\x74\\x3d\\x4d\\x53\\x5f\\x18\\x40\\xa5\"},\n{{0x94,0x1c,0xac,0x69,0xfb,0x7b,0x18,0x15,0xc5,0x7b,0xb9,0x87,0xc4,0xd6,0xc2,0xad,0x2c,0x35,0xd5,0xf9,0xa3,0x18,0x2a,0x79,0xd4,0xba,0x13,0xea,0xb2,0x53,0xa8,0xad,},{0x23,0xbe,0x32,0x3c,0x56,0x2d,0xfd,0x71,0xce,0x65,0xf5,0xbb,0xa5,0x6a,0x74,0xa3,0xa6,0xdf,0xc3,0x6b,0x57,0x3d,0x2f,0x94,0xf6,0x35,0xc7,0xf9,0xb4,0xfd,0x5a,0x5b,},{0x0f,0x8f,0xad,0x1e,0x6b,0xde,0x77,0x1b,0x4f,0x54,0x20,0xea,0xc7,0x5c,0x37,0x8b,0xae,0x6d,0xb5,0xac,0x66,0x50,0xcd,0x2b,0xc2,0x10,0xc1,0x82,0x3b,0x43,0x2b,0x48,0xe0,0x16,0xb1,0x05,0x95,0x45,0x8f,0xfa,0xb9,0x2f,0x7a,0x89,0x89,0xb2,0x93,0xce,0xb8,0xdf,0xed,0x6c,0x24,0x3a,0x20,0x38,0xfc,0x06,0x65,0x2a,0xaa,0xf1,0x6f,0x02,},\"\\xbb\\x31\\x72\\x79\\x57\\x10\\xfe\\x00\\x05\\x4d\\x3b\\x5d\\xfe\\xf8\\xa1\\x16\\x23\\x58\\x2d\\xa6\\x8b\\xf8\\xe4\\x6d\\x72\\xd2\\x7c\\xec\\xe2\\xaa\"},\n{{0x1a,0xcd,0xbb,0x79,0x3b,0x03,0x84,0x93,0x46,0x27,0x47,0x0d,0x79,0x5c,0x3d,0x1d,0xd4,0xd7,0x9c,0xea,0x59,0xef,0x98,0x3f,0x29,0x5b,0x9b,0x59,0x17,0x9c,0xbb,0x28,},{0x3f,0x60,0xc7,0x54,0x1a,0xfa,0x76,0xc0,0x19,0xcf,0x5a,0xa8,0x2d,0xcd,0xb0,0x88,0xed,0x9e,0x4e,0xd9,0x78,0x05,0x14,0xae,0xfb,0x37,0x9d,0xab,0xc8,0x44,0xf3,0x1a,},{0xbe,0x71,0xef,0x48,0x06,0xcb,0x04,0x1d,0x88,0x5e,0xff,0xd9,0xe6,0xb0,0xfb,0xb7,0x3d,0x65,0xd7,0xcd,0xec,0x47,0xa8,0x9c,0x8a,0x99,0x48,0x92,0xf4,0xe5,0x5a,0x56,0x8c,0x4c,0xc7,0x8d,0x61,0xf9,0x01,0xe8,0x0d,0xbb,0x62,0x8b,0x86,0xa2,0x3c,0xcd,0x59,0x4e,0x71,0x2b,0x57,0xfa,0x94,0xc2,0xd6,0x7e,0xc2,0x66,0x34,0x87,0x85,0x07,},\"\\x7c\\xf3\\x4f\\x75\\xc3\\xda\\xc9\\xa8\\x04\\xd0\\xfc\\xd0\\x9e\\xba\\x9b\\x29\\xc9\\x48\\x4e\\x8a\\x01\\x8f\\xa9\\xe0\\x73\\x04\\x2d\\xf8\\x8e\\x3c\\x56\"},\n{{0x8e,0xd7,0xa7,0x97,0xb9,0xce,0xa8,0xa8,0x37,0x0d,0x41,0x91,0x36,0xbc,0xdf,0x68,0x3b,0x75,0x9d,0x2e,0x3c,0x69,0x47,0xf1,0x7e,0x13,0xe2,0x48,0x5a,0xa9,0xd4,0x20,},{0xb4,0x9f,0x3a,0x78,0xb1,0xc6,0xa7,0xfc,0xa8,0xf3,0x46,0x6f,0x33,0xbc,0x0e,0x92,0x9f,0x01,0xfb,0xa0,0x43,0x06,0xc2,0xa7,0x46,0x5f,0x46,0xc3,0x75,0x93,0x16,0xd9,},{0x04,0x26,0x6c,0x03,0x3b,0x91,0xc1,0x32,0x2c,0xeb,0x34,0x46,0xc9,0x01,0xff,0xcf,0x3c,0xc4,0x0c,0x40,0x34,0xe8,0x87,0xc9,0x59,0x7c,0xa1,0x89,0x3b,0xa7,0x33,0x0b,0xec,0xbb,0xd8,0xb4,0x81,0x42,0xef,0x35,0xc0,0x12,0xc6,0xba,0x51,0xa6,0x6d,0xf9,0x30,0x8c,0xb6,0x26,0x8a,0xd6,0xb1,0xe4,0xb0,0x3e,0x70,0x10,0x24,0x95,0x79,0x0b,},\"\\xa7\\x50\\xc2\\x32\\x93\\x3d\\xc1\\x4b\\x11\\x84\\xd8\\x6d\\x8b\\x4c\\xe7\\x2e\\x16\\xd6\\x97\\x44\\xba\\x69\\x81\\x8b\\x6a\\xc3\\x3b\\x1d\\x82\\x3b\\xb2\\xc3\"},\n{{0xf2,0xab,0x39,0x6f,0xe8,0x90,0x6e,0x3e,0x56,0x33,0xe9,0x9c,0xab,0xcd,0x5b,0x09,0xdf,0x08,0x59,0xb5,0x16,0x23,0x0b,0x1e,0x04,0x50,0xb5,0x80,0xb6,0x5f,0x61,0x6c,},{0x8e,0xa0,0x74,0x24,0x51,0x59,0xa1,0x16,0xaa,0x71,0x22,0xa2,0x5e,0xc1,0x6b,0x89,0x1d,0x62,0x5a,0x68,0xf3,0x36,0x60,0x42,0x39,0x08,0xf6,0xbd,0xc4,0x4f,0x8c,0x1b,},{0xa0,0x6a,0x23,0xd9,0x82,0xd8,0x1a,0xb8,0x83,0xaa,0xe2,0x30,0xad,0xbc,0x36,0x8a,0x6a,0x99,0x77,0xf0,0x03,0xce,0xbb,0x00,0xd4,0xc2,0xe4,0x01,0x84,0x90,0x19,0x1a,0x84,0xd3,0xa2,0x82,0xfd,0xbf,0xb2,0xfc,0x88,0x04,0x6e,0x62,0xde,0x43,0xe1,0x5f,0xb5,0x75,0x33,0x6b,0x3c,0x8b,0x77,0xd1,0x9c,0xe6,0xa0,0x09,0xce,0x51,0xf5,0x0c,},\"\\x5a\\x44\\xe3\\x4b\\x74\\x6c\\x5f\\xd1\\x89\\x8d\\x55\\x2a\\xb3\\x54\\xd2\\x8f\\xb4\\x71\\x38\\x56\\xd7\\x69\\x7d\\xd6\\x3e\\xb9\\xbd\\x6b\\x99\\xc2\\x80\\xe1\\x87\"},\n{{0x55,0x0a,0x41,0xc0,0x13,0xf7,0x9b,0xab,0x8f,0x06,0xe4,0x3a,0xd1,0x83,0x6d,0x51,0x31,0x27,0x36,0xa9,0x71,0x38,0x06,0xfa,0xfe,0x66,0x45,0x21,0x9e,0xaa,0x1f,0x9d,},{0xaf,0x6b,0x71,0x45,0x47,0x4d,0xc9,0x95,0x4b,0x9a,0xf9,0x3a,0x9c,0xdb,0x34,0x44,0x9d,0x5b,0x7c,0x65,0x1c,0x82,0x4d,0x24,0xe2,0x30,0xb9,0x00,0x33,0xce,0x59,0xc0,},{0x16,0xdc,0x1e,0x2b,0x9f,0xa9,0x09,0xee,0xfd,0xc2,0x77,0xba,0x16,0xeb,0xe2,0x07,0xb8,0xda,0x5e,0x91,0x14,0x3c,0xde,0x78,0xc5,0x04,0x7a,0x89,0xf6,0x81,0xc3,0x3c,0x4e,0x4e,0x34,0x28,0xd5,0xc9,0x28,0x09,0x59,0x03,0xa8,0x11,0xec,0x00,0x2d,0x52,0xa3,0x9e,0xd7,0xf8,0xb3,0xfe,0x19,0x27,0x20,0x0c,0x6d,0xd0,0xb9,0xab,0x3e,0x04,},\"\\x8b\\xc4\\x18\\x5e\\x50\\xe5\\x7d\\x5f\\x87\\xf4\\x75\\x15\\xfe\\x2b\\x18\\x37\\xd5\\x85\\xf0\\xaa\\xe9\\xe1\\xca\\x38\\x3b\\x3e\\xc9\\x08\\x88\\x4b\\xb9\\x00\\xff\\x27\"},\n{{0x19,0xac,0x3e,0x27,0x24,0x38,0xc7,0x2d,0xdf,0x7b,0x88,0x19,0x64,0x86,0x7c,0xb3,0xb3,0x1f,0xf4,0xc7,0x93,0xbb,0x7e,0xa1,0x54,0x61,0x3c,0x1d,0xb0,0x68,0xcb,0x7e,},{0xf8,0x5b,0x80,0xe0,0x50,0xa1,0xb9,0x62,0x0d,0xb1,0x38,0xbf,0xc9,0xe1,0x00,0x32,0x7e,0x25,0xc2,0x57,0xc5,0x92,0x17,0xb6,0x01,0xf1,0xf6,0xac,0x9a,0x41,0x3d,0x3f,},{0xea,0x85,0x5d,0x78,0x1c,0xbe,0xa4,0x68,0x2e,0x35,0x01,0x73,0xcb,0x89,0xe8,0x61,0x9c,0xcf,0xdd,0xb9,0x7c,0xdc,0xe1,0x6f,0x9a,0x2f,0x6f,0x68,0x92,0xf4,0x6d,0xbe,0x68,0xe0,0x4b,0x12,0xb8,0xd8,0x86,0x89,0xa7,0xa3,0x16,0x70,0xcd,0xff,0x40,0x9a,0xf9,0x8a,0x93,0xb4,0x9a,0x34,0x53,0x7b,0x6a,0xa0,0x09,0xd2,0xeb,0x8b,0x47,0x01,},\"\\x95\\x87\\x2d\\x5f\\x78\\x9f\\x95\\x48\\x4e\\x30\\xcb\\xb0\\xe1\\x14\\x02\\x89\\x53\\xb1\\x6f\\x5c\\x6a\\x8d\\x9f\\x65\\xc0\\x03\\xa8\\x35\\x43\\xbe\\xaa\\x46\\xb3\\x86\\x45\"},\n{{0xca,0x26,0x7d,0xe9,0x6c,0x93,0xc2,0x38,0xfa,0xfb,0x12,0x79,0x81,0x20,0x59,0xab,0x93,0xac,0x03,0x05,0x96,0x57,0xfd,0x99,0x4f,0x8f,0xa5,0xa0,0x92,0x39,0xc8,0x21,},{0x01,0x73,0x70,0xc8,0x79,0x09,0x0a,0x81,0xc7,0xf2,0x72,0xc2,0xfc,0x80,0xe3,0xaa,0xc2,0xbc,0x60,0x3f,0xcb,0x37,0x9a,0xfc,0x98,0x69,0x11,0x60,0xab,0x74,0x5b,0x26,},{0xac,0x95,0x7f,0x82,0x33,0x5a,0xa7,0x14,0x1e,0x96,0xb5,0x9d,0x63,0xe3,0xcc,0xee,0x95,0xc3,0xa2,0xc4,0x7d,0x02,0x65,0x40,0xc2,0xaf,0x42,0xdc,0x95,0x33,0xd5,0xfd,0x81,0x82,0x7d,0x16,0x79,0xad,0x18,0x7a,0xea,0xf3,0x78,0x34,0x91,0x5e,0x75,0xb1,0x47,0xa9,0x28,0x68,0x06,0xc8,0x01,0x75,0x16,0xba,0x43,0xdd,0x05,0x1a,0x5e,0x0c,},\"\\xe0\\x5f\\x71\\xe4\\xe4\\x9a\\x72\\xec\\x55\\x0c\\x44\\xa3\\xb8\\x5a\\xca\\x8f\\x20\\xff\\x26\\xc3\\xee\\x94\\xa8\\x0f\\x1b\\x43\\x1c\\x7d\\x15\\x4e\\xc9\\x60\\x3e\\xe0\\x25\\x31\"},\n{{0x3d,0xff,0x5e,0x89,0x94,0x75,0xe7,0xe9,0x1d,0xd2,0x61,0x32,0x2f,0xab,0x09,0x98,0x0c,0x52,0x97,0x0d,0xe1,0xda,0x6e,0x2e,0x20,0x16,0x60,0xcc,0x4f,0xce,0x70,0x32,},{0xf3,0x01,0x62,0xba,0xc9,0x84,0x47,0xc4,0x04,0x2f,0xac,0x05,0xda,0x44,0x80,0x34,0x62,0x9b,0xe2,0xc6,0xa5,0x8d,0x30,0xdf,0xd5,0x78,0xba,0x9f,0xb5,0xe3,0x93,0x0b,},{0x5e,0xfe,0x7a,0x92,0xff,0x96,0x23,0x08,0x9b,0x3e,0x3b,0x78,0xf3,0x52,0x11,0x53,0x66,0xe2,0x6b,0xa3,0xfb,0x1a,0x41,0x62,0x09,0xbc,0x02,0x9e,0x9c,0xad,0xcc,0xd9,0xf4,0xaf,0xfa,0x33,0x35,0x55,0xa8,0xf3,0xa3,0x5a,0x9d,0x0f,0x7c,0x34,0xb2,0x92,0xca,0xe7,0x7e,0xc9,0x6f,0xa3,0xad,0xfc,0xaa,0xde,0xe2,0xd9,0xce,0xd8,0xf8,0x05,},\"\\x93\\x8f\\x0e\\x77\\x62\\x1b\\xf3\\xea\\x52\\xc7\\xc4\\x91\\x1c\\x51\\x57\\xc2\\xd8\\xa2\\xa8\\x58\\x09\\x3e\\xf1\\x6a\\xa9\\xb1\\x07\\xe6\\x9d\\x98\\x03\\x7b\\xa1\\x39\\xa3\\xc3\\x82\"},\n{{0x9a,0x6b,0x84,0x78,0x64,0xe7,0x0c,0xfe,0x8b,0xa6,0xab,0x22,0xfa,0x0c,0xa3,0x08,0xc0,0xcc,0x8b,0xec,0x71,0x41,0xfb,0xca,0xa3,0xb8,0x1f,0x5d,0x1e,0x1c,0xfc,0xfc,},{0x34,0xad,0x0f,0xbd,0xb2,0x56,0x65,0x07,0xa8,0x1c,0x2b,0x1f,0x8a,0xa8,0xf5,0x3d,0xcc,0xaa,0x64,0xcc,0x87,0xad,0xa9,0x1b,0x90,0x3e,0x90,0x0d,0x07,0xee,0xe9,0x30,},{0x2a,0xb2,0x55,0x16,0x9c,0x48,0x9c,0x54,0xc7,0x32,0x23,0x2e,0x37,0xc8,0x73,0x49,0xd4,0x86,0xb1,0xeb,0xa2,0x05,0x09,0xdb,0xab,0xe7,0xfe,0xd3,0x29,0xef,0x08,0xfd,0x75,0xba,0x1c,0xd1,0x45,0xe6,0x7b,0x2e,0xa2,0x6c,0xb5,0xcc,0x51,0xca,0xb3,0x43,0xee,0xb0,0x85,0xfe,0x1f,0xd7,0xb0,0xec,0x4c,0x6a,0xfc,0xd9,0xb9,0x79,0xf9,0x05,},\"\\x83\\x83\\x67\\x47\\x11\\x83\\xc7\\x1f\\x7e\\x71\\x77\\x24\\xf8\\x9d\\x40\\x1c\\x3a\\xd9\\x86\\x3f\\xd9\\xcc\\x7a\\xa3\\xcf\\x33\\xd3\\xc5\\x29\\x86\\x0c\\xb5\\x81\\xf3\\x09\\x3d\\x87\\xda\"},\n{{0x57,0x5b,0xe0,0x7a,0xfc,0xa5,0xd0,0x63,0xc2,0x38,0xcd,0x9b,0x80,0x28,0x77,0x2c,0xc4,0x9c,0xda,0x34,0x47,0x14,0x32,0xa2,0xe1,0x66,0xe0,0x96,0xe2,0x21,0x9e,0xfc,},{0x94,0xe5,0xeb,0x4d,0x50,0x24,0xf4,0x9d,0x7e,0xbf,0x79,0x81,0x7c,0x8d,0xe1,0x14,0x97,0xdc,0x2b,0x55,0x62,0x2a,0x51,0xae,0x12,0x3f,0xfc,0x74,0x9d,0xbb,0x16,0xe0,},{0x58,0x27,0x1d,0x44,0x23,0x6f,0x3b,0x98,0xc5,0x8f,0xd7,0xae,0x0d,0x2f,0x49,0xef,0x2b,0x6e,0x3a,0xff,0xdb,0x22,0x5a,0xa3,0xba,0x55,0x5f,0x0e,0x11,0xcc,0x53,0xc2,0x3a,0xd1,0x9b,0xaf,0x24,0x34,0x65,0x90,0xd0,0x5d,0x7d,0x53,0x90,0x58,0x20,0x82,0xcf,0x94,0xd3,0x9c,0xad,0x65,0x30,0xab,0x93,0xd1,0x3e,0xfb,0x39,0x27,0x95,0x06,},\"\\x33\\xe5\\x91\\x8b\\x66\\xd3\\x3d\\x55\\xfe\\x71\\x7c\\xa3\\x43\\x83\\xea\\xe7\\x8f\\x0a\\xf8\\x28\\x89\\xca\\xf6\\x69\\x6e\\x1a\\xc9\\xd9\\x5d\\x1f\\xfb\\x32\\xcb\\xa7\\x55\\xf9\\xe3\\x50\\x3e\"},\n{{0x15,0xff,0xb4,0x55,0x14,0xd4,0x34,0x44,0xd6,0x1f,0xcb,0x10,0x5e,0x30,0xe1,0x35,0xfd,0x26,0x85,0x23,0xdd,0xa2,0x0b,0x82,0x75,0x8b,0x17,0x94,0x23,0x11,0x04,0x41,},{0x17,0x72,0xc5,0xab,0xc2,0xd2,0x3f,0xd2,0xf9,0xd1,0xc3,0x25,0x7b,0xe7,0xbc,0x3c,0x1c,0xd7,0x9c,0xee,0x40,0x84,0x4b,0x74,0x9b,0x3a,0x77,0x43,0xd2,0xf9,0x64,0xb8,},{0x68,0x28,0xcd,0x76,0x24,0xe7,0x93,0xb8,0xa4,0xce,0xb9,0x6d,0x3c,0x2a,0x97,0x5b,0xf7,0x73,0xe5,0xff,0x66,0x45,0xf3,0x53,0x61,0x40,0x58,0x62,0x1e,0x58,0x83,0x52,0x89,0xe7,0xf3,0x1f,0x42,0xdf,0xe6,0xaf,0x6d,0x73,0x6f,0x26,0x44,0x51,0x1e,0x32,0x0c,0x0f,0xa6,0x98,0x58,0x2a,0x79,0x77,0x8d,0x18,0x73,0x0e,0xd3,0xe8,0xcb,0x08,},\"\\xda\\x9c\\x55\\x59\\xd0\\xea\\x51\\xd2\\x55\\xb6\\xbd\\x9d\\x76\\x38\\xb8\\x76\\x47\\x2f\\x94\\x2b\\x33\\x0f\\xc0\\xe2\\xb3\\x0a\\xea\\x68\\xd7\\x73\\x68\\xfc\\xe4\\x94\\x82\\x72\\x99\\x1d\\x25\\x7e\"},\n{{0xfe,0x05,0x68,0x64,0x29,0x43,0xb2,0xe1,0xaf,0xbf,0xd1,0xf1,0x0f,0xe8,0xdf,0x87,0xa4,0x23,0x6b,0xea,0x40,0xdc,0xe7,0x42,0x07,0x2c,0xb2,0x18,0x86,0xee,0xc1,0xfa,},{0x29,0x9e,0xbd,0x1f,0x13,0x17,0x7d,0xbd,0xb6,0x6a,0x91,0x2b,0xbf,0x71,0x20,0x38,0xfd,0xf7,0x3b,0x06,0xc3,0xac,0x02,0x0c,0x7b,0x19,0x12,0x67,0x55,0xd4,0x7f,0x61,},{0xd5,0x9e,0x6d,0xfc,0xc6,0xd7,0xe3,0xe2,0xc5,0x8d,0xec,0x81,0xe9,0x85,0xd2,0x45,0xe6,0x81,0xac,0xf6,0x59,0x4a,0x23,0xc5,0x92,0x14,0xf7,0xbe,0xd8,0x01,0x5d,0x81,0x3c,0x76,0x82,0xb6,0x0b,0x35,0x83,0x44,0x03,0x11,0xe7,0x2a,0x86,0x65,0xba,0x2c,0x96,0xde,0xc2,0x3c,0xe8,0x26,0xe1,0x60,0x12,0x7e,0x18,0x13,0x2b,0x03,0x04,0x04,},\"\\xc5\\x9d\\x08\\x62\\xec\\x1c\\x97\\x46\\xab\\xcc\\x3c\\xf8\\x3c\\x9e\\xeb\\xa2\\xc7\\x08\\x2a\\x03\\x6a\\x8c\\xb5\\x7c\\xe4\\x87\\xe7\\x63\\x49\\x27\\x96\\xd4\\x7e\\x6e\\x06\\x3a\\x0c\\x1f\\xec\\xcc\\x2d\"},\n{{0x5e,0xcb,0x16,0xc2,0xdf,0x27,0xc8,0xcf,0x58,0xe4,0x36,0xa9,0xd3,0xaf,0xfb,0xd5,0x8e,0x95,0x38,0xa9,0x26,0x59,0xa0,0xf9,0x7c,0x4c,0x4f,0x99,0x46,0x35,0xa8,0xca,},{0xda,0x76,0x8b,0x20,0xc4,0x37,0xdd,0x3a,0xa5,0xf8,0x4b,0xb6,0xa0,0x77,0xff,0xa3,0x4a,0xb6,0x85,0x01,0xc5,0x35,0x2b,0x5c,0xc3,0xfd,0xce,0x7f,0xe6,0xc2,0x39,0x8d,},{0x1c,0x72,0x3a,0x20,0xc6,0x77,0x24,0x26,0xa6,0x70,0xe4,0xd5,0xc4,0xa9,0x7c,0x6e,0xbe,0x91,0x47,0xf7,0x1b,0xb0,0xa4,0x15,0x63,0x1e,0x44,0x40,0x6e,0x29,0x03,0x22,0xe4,0xca,0x97,0x7d,0x34,0x8f,0xe7,0x85,0x6a,0x8e,0xdc,0x23,0x5d,0x0f,0xe9,0x5f,0x7e,0xd9,0x1a,0xef,0xdd,0xf2,0x8a,0x77,0xe2,0xc7,0xdb,0xfd,0x8f,0x55,0x2f,0x0a,},\"\\x56\\xf1\\x32\\x9d\\x9a\\x6b\\xe2\\x5a\\x61\\x59\\xc7\\x2f\\x12\\x68\\x8d\\xc8\\x31\\x4e\\x85\\xdd\\x9e\\x7e\\x4d\\xc0\\x5b\\xbe\\xcb\\x77\\x29\\xe0\\x23\\xc8\\x6f\\x8e\\x09\\x37\\x35\\x3f\\x27\\xc7\\xed\\xe9\"},\n{{0xd5,0x99,0xd6,0x37,0xb3,0xc3,0x0a,0x82,0xa9,0x98,0x4e,0x2f,0x75,0x84,0x97,0xd1,0x44,0xde,0x6f,0x06,0xb9,0xfb,0xa0,0x4d,0xd4,0x0f,0xd9,0x49,0x03,0x9d,0x7c,0x84,},{0x67,0x91,0xd8,0xce,0x50,0xa4,0x46,0x89,0xfc,0x17,0x87,0x27,0xc5,0xc3,0xa1,0xc9,0x59,0xfb,0xee,0xd7,0x4e,0xf7,0xd8,0xe7,0xbd,0x3c,0x1a,0xb4,0xda,0x31,0xc5,0x1f,},{0xeb,0xf1,0x0d,0x9a,0xc7,0xc9,0x61,0x08,0x14,0x0e,0x7d,0xef,0x6f,0xe9,0x53,0x3d,0x72,0x76,0x46,0xff,0x5b,0x3a,0xf2,0x73,0xc1,0xdf,0x95,0x76,0x2a,0x66,0xf3,0x2b,0x65,0xa0,0x96,0x34,0xd0,0x13,0xf5,0x4b,0x5d,0xd6,0x01,0x1f,0x91,0xbc,0x33,0x6c,0xa8,0xb3,0x55,0xce,0x33,0xf8,0xcf,0xbe,0xc2,0x53,0x5a,0x4c,0x42,0x7f,0x82,0x05,},\"\\xa7\\xc0\\x4e\\x8b\\xa7\\x5d\\x0a\\x03\\xd8\\xb1\\x66\\xad\\x7a\\x1d\\x77\\xe1\\xb9\\x1c\\x7a\\xaf\\x7b\\xef\\xdd\\x99\\x31\\x1f\\xc3\\xc5\\x4a\\x68\\x4d\\xdd\\x97\\x1d\\x5b\\x32\\x11\\xc3\\xee\\xaf\\xf1\\xe5\\x4e\"},\n{{0x30,0xab,0x82,0x32,0xfa,0x70,0x18,0xf0,0xce,0x6c,0x39,0xbd,0x8f,0x78,0x2f,0xe2,0xe1,0x59,0x75,0x8b,0xb0,0xf2,0xf4,0x38,0x6c,0x7f,0x28,0xcf,0xd2,0xc8,0x58,0x98,},{0xec,0xfb,0x6a,0x2b,0xd4,0x2f,0x31,0xb6,0x12,0x50,0xba,0x5d,0xe7,0xe4,0x6b,0x47,0x19,0xaf,0xdf,0xbc,0x66,0x0d,0xb7,0x1a,0x7b,0xd1,0xdf,0x7b,0x0a,0x3a,0xbe,0x37,},{0x9a,0xf8,0x85,0x34,0x4c,0xc7,0x23,0x94,0x98,0xf7,0x12,0xdf,0x80,0xbc,0x01,0xb8,0x06,0x38,0x29,0x1e,0xd4,0xa1,0xd2,0x8b,0xaa,0x55,0x45,0x01,0x7a,0x72,0xe2,0xf6,0x56,0x49,0xcc,0xf9,0x60,0x3d,0xa6,0xeb,0x5b,0xfa,0xb9,0xf5,0x54,0x3a,0x6c,0xa4,0xa7,0xaf,0x38,0x66,0x15,0x3c,0x76,0xbf,0x66,0xbf,0x95,0xde,0xf6,0x15,0xb0,0x0c,},\"\\x63\\xb8\\x0b\\x79\\x56\\xac\\xbe\\xcf\\x0c\\x35\\xe9\\xab\\x06\\xb9\\x14\\xb0\\xc7\\x01\\x4f\\xe1\\xa4\\xbb\\xc0\\x21\\x72\\x40\\xc1\\xa3\\x30\\x95\\xd7\\x07\\x95\\x3e\\xd7\\x7b\\x15\\xd2\\x11\\xad\\xaf\\x9b\\x97\\xdc\"},\n{{0x0d,0xdc,0xdc,0x87,0x2c,0x7b,0x74,0x8d,0x40,0xef,0xe9,0x6c,0x28,0x81,0xae,0x18,0x9d,0x87,0xf5,0x61,0x48,0xed,0x8a,0xf3,0xeb,0xbb,0xc8,0x03,0x24,0xe3,0x8b,0xdd,},{0x58,0x8d,0xda,0xdc,0xbc,0xed,0xf4,0x0d,0xf0,0xe9,0x69,0x7d,0x8b,0xb2,0x77,0xc7,0xbb,0x14,0x98,0xfa,0x1d,0x26,0xce,0x0a,0x83,0x5a,0x76,0x0b,0x92,0xca,0x7c,0x85,},{0xc1,0x79,0xc0,0x94,0x56,0xe2,0x35,0xfe,0x24,0x10,0x5a,0xfa,0x6e,0x8e,0xc0,0x46,0x37,0xf8,0xf9,0x43,0x81,0x7c,0xd0,0x98,0xba,0x95,0x38,0x7f,0x96,0x53,0xb2,0xad,0xd1,0x81,0xa3,0x14,0x47,0xd9,0x2d,0x1a,0x1d,0xdf,0x1c,0xeb,0x0d,0xb6,0x21,0x18,0xde,0x9d,0xff,0xb7,0xdc,0xd2,0x42,0x40,0x57,0xcb,0xdf,0xf5,0xd4,0x1d,0x04,0x03,},\"\\x65\\x64\\x1c\\xd4\\x02\\xad\\xd8\\xbf\\x3d\\x1d\\x67\\xdb\\xeb\\x6d\\x41\\xde\\xbf\\xbe\\xf6\\x7e\\x43\\x17\\xc3\\x5b\\x0a\\x6d\\x5b\\xbb\\xae\\x0e\\x03\\x4d\\xe7\\xd6\\x70\\xba\\x14\\x13\\xd0\\x56\\xf2\\xd6\\xf1\\xde\\x12\"},\n{{0x89,0xf0,0xd6,0x82,0x99,0xba,0x0a,0x5a,0x83,0xf2,0x48,0xae,0x0c,0x16,0x9f,0x8e,0x38,0x49,0xa9,0xb4,0x7b,0xd4,0x54,0x98,0x84,0x30,0x5c,0x99,0x12,0xb4,0x66,0x03,},{0xab,0xa3,0xe7,0x95,0xaa,0xb2,0x01,0x2a,0xcc,0xea,0xdd,0x7b,0x3b,0xd9,0xda,0xee,0xed,0x6f,0xf5,0x25,0x8b,0xdc,0xd7,0xc9,0x36,0x99,0xc2,0xa3,0x83,0x6e,0x38,0x32,},{0x2c,0x69,0x1f,0xa8,0xd4,0x87,0xce,0x20,0xd5,0xd2,0xfa,0x41,0x55,0x91,0x16,0xe0,0xbb,0xf4,0x39,0x7c,0xf5,0x24,0x0e,0x15,0x25,0x56,0x18,0x35,0x41,0xd6,0x6c,0xf7,0x53,0x58,0x24,0x01,0xa4,0x38,0x8d,0x39,0x03,0x39,0xdb,0xef,0x4d,0x38,0x47,0x43,0xca,0xa3,0x46,0xf5,0x5f,0x8d,0xab,0xa6,0x8b,0xa7,0xb9,0x13,0x1a,0x8a,0x6e,0x0b,},\"\\x4f\\x18\\x46\\xdd\\x7a\\xd5\\x0e\\x54\\x5d\\x4c\\xfb\\xff\\xbb\\x1d\\xc2\\xff\\x14\\x5d\\xc1\\x23\\x75\\x4d\\x08\\xaf\\x4e\\x44\\xec\\xc0\\xbc\\x8c\\x91\\x41\\x13\\x88\\xbc\\x76\\x53\\xe2\\xd8\\x93\\xd1\\xea\\xc2\\x10\\x7d\\x05\"},\n{{0x0a,0x3c,0x18,0x44,0xe2,0xdb,0x07,0x0f,0xb2,0x4e,0x3c,0x95,0xcb,0x1c,0xc6,0x71,0x4e,0xf8,0x4e,0x2c,0xcd,0x2b,0x9d,0xd2,0xf1,0x46,0x0e,0xbf,0x7e,0xcf,0x13,0xb1,},{0x72,0xe4,0x09,0x93,0x7e,0x06,0x10,0xeb,0x5c,0x20,0xb3,0x26,0xdc,0x6e,0xa1,0xbb,0xbc,0x04,0x06,0x70,0x1c,0x5c,0xd6,0x7d,0x1f,0xbd,0xe0,0x91,0x92,0xb0,0x7c,0x01,},{0x87,0xf7,0xfd,0xf4,0x60,0x95,0x20,0x1e,0x87,0x7a,0x58,0x8f,0xe3,0xe5,0xaa,0xf4,0x76,0xbd,0x63,0x13,0x8d,0x8a,0x87,0x8b,0x89,0xd6,0xac,0x60,0x63,0x1b,0x34,0x58,0xb9,0xd4,0x1a,0x3c,0x61,0xa5,0x88,0xe1,0xdb,0x8d,0x29,0xa5,0x96,0x89,0x81,0xb0,0x18,0x77,0x6c,0x58,0x87,0x80,0x92,0x2f,0x5a,0xa7,0x32,0xba,0x63,0x79,0xdd,0x05,},\"\\x4c\\x82\\x74\\xd0\\xed\\x1f\\x74\\xe2\\xc8\\x6c\\x08\\xd9\\x55\\xbd\\xe5\\x5b\\x2d\\x54\\x32\\x7e\\x82\\x06\\x2a\\x1f\\x71\\xf7\\x0d\\x53\\x6f\\xdc\\x87\\x22\\xcd\\xea\\xd7\\xd2\\x2a\\xae\\xad\\x2b\\xfa\\xa1\\xad\\x00\\xb8\\x29\\x57\"},\n{{0xc8,0xd7,0xa8,0x81,0x8b,0x98,0xdf,0xdb,0x20,0x83,0x9c,0x87,0x1c,0xb5,0xc4,0x8e,0x9e,0x94,0x70,0xca,0x3a,0xd3,0x5b,0xa2,0x61,0x3a,0x5d,0x31,0x99,0xc8,0xab,0x23,},{0x90,0xd2,0xef,0xbb,0xa4,0xd4,0x3e,0x6b,0x2b,0x99,0x2c,0xa1,0x60,0x83,0xdb,0xcf,0xa2,0xb3,0x22,0x38,0x39,0x07,0xb0,0xee,0x75,0xf3,0xe9,0x58,0x45,0xd3,0xc4,0x7f,},{0xfa,0x2e,0x99,0x44,0x21,0xae,0xf1,0xd5,0x85,0x66,0x74,0x81,0x3d,0x05,0xcb,0xd2,0xcf,0x84,0xef,0x5e,0xb4,0x24,0xaf,0x6e,0xcd,0x0d,0xc6,0xfd,0xbd,0xc2,0xfe,0x60,0x5f,0xe9,0x85,0x88,0x33,0x12,0xec,0xf3,0x4f,0x59,0xbf,0xb2,0xf1,0xc9,0x14,0x9e,0x5b,0x9c,0xc9,0xec,0xda,0x05,0xb2,0x73,0x11,0x30,0xf3,0xed,0x28,0xdd,0xae,0x0b,},\"\\x78\\x3e\\x33\\xc3\\xac\\xbd\\xbb\\x36\\xe8\\x19\\xf5\\x44\\xa7\\x78\\x1d\\x83\\xfc\\x28\\x3d\\x33\\x09\\xf5\\xd3\\xd1\\x2c\\x8d\\xcd\\x6b\\x0b\\x3d\\x0e\\x89\\xe3\\x8c\\xfd\\x3b\\x4d\\x08\\x85\\x66\\x1c\\xa5\\x47\\xfb\\x97\\x64\\xab\\xff\"},\n{{0xb4,0x82,0x70,0x36,0x12,0xd0,0xc5,0x86,0xf7,0x6c,0xfc,0xb2,0x1c,0xfd,0x21,0x03,0xc9,0x57,0x25,0x15,0x04,0xa8,0xc0,0xac,0x4c,0x86,0xc9,0xc6,0xf3,0xe4,0x29,0xff,},{0xfd,0x71,0x1d,0xc7,0xdd,0x3b,0x1d,0xfb,0x9d,0xf9,0x70,0x4b,0xe3,0xe6,0xb2,0x6f,0x58,0x7f,0xe7,0xdd,0x7b,0xa4,0x56,0xa9,0x1b,0xa4,0x3f,0xe5,0x1a,0xec,0x09,0xad,},{0x58,0x83,0x2b,0xde,0xb2,0x6f,0xea,0xfc,0x31,0xb4,0x62,0x77,0xcf,0x3f,0xb5,0xd7,0xa1,0x7d,0xfb,0x7c,0xcd,0x9b,0x1f,0x58,0xec,0xbe,0x6f,0xeb,0x97,0x96,0x66,0x82,0x8f,0x23,0x9b,0xa4,0xd7,0x52,0x19,0x26,0x0e,0xca,0xc0,0xac,0xf4,0x0f,0x0e,0x5e,0x25,0x90,0xf4,0xca,0xa1,0x6b,0xbb,0xcd,0x8a,0x15,0x5d,0x34,0x79,0x67,0xa6,0x07,},\"\\x29\\xd7\\x7a\\xcf\\xd9\\x9c\\x7a\\x00\\x70\\xa8\\x8f\\xeb\\x62\\x47\\xa2\\xbc\\xe9\\x98\\x4f\\xe3\\xe6\\xfb\\xf1\\x9d\\x40\\x45\\x04\\x2a\\x21\\xab\\x26\\xcb\\xd7\\x71\\xe1\\x84\\xa9\\xa7\\x5f\\x31\\x6b\\x64\\x8c\\x69\\x20\\xdb\\x92\\xb8\\x7b\"},\n{{0x84,0xe5,0x0d,0xd9,0xa0,0xf1,0x97,0xe3,0x89,0x3c,0x38,0xdb,0xd9,0x1f,0xaf,0xc3,0x44,0xc1,0x77,0x6d,0x3a,0x40,0x0e,0x2f,0x0f,0x0e,0xe7,0xaa,0x82,0x9e,0xb8,0xa2,},{0x2c,0x50,0xf8,0x70,0xee,0x48,0xb3,0x6b,0x0a,0xc2,0xf8,0xa5,0xf3,0x36,0xfb,0x09,0x0b,0x11,0x30,0x50,0xdb,0xcc,0x25,0xe0,0x78,0x20,0x0a,0x6e,0x16,0x15,0x3e,0xea,},{0x69,0xe6,0xa4,0x49,0x1a,0x63,0x83,0x73,0x16,0xe8,0x6a,0x5f,0x4b,0xa7,0xcd,0x0d,0x73,0x1e,0xcc,0x58,0xf1,0xd0,0xa2,0x64,0xc6,0x7c,0x89,0xbe,0xfd,0xd8,0xd3,0x82,0x9d,0x8d,0xe1,0x3b,0x33,0xcc,0x0b,0xf5,0x13,0x93,0x17,0x15,0xc7,0x80,0x96,0x57,0xe2,0xbf,0xb9,0x60,0xe5,0xc7,0x64,0xc9,0x71,0xd7,0x33,0x74,0x60,0x93,0xe5,0x00,},\"\\xf3\\x99\\x2c\\xde\\x64\\x93\\xe6\\x71\\xf1\\xe1\\x29\\xdd\\xca\\x80\\x38\\xb0\\xab\\xdb\\x77\\xbb\\x90\\x35\\xf9\\xf8\\xbe\\x54\\xbd\\x5d\\x68\\xc1\\xae\\xff\\x72\\x4f\\xf4\\x7d\\x29\\x34\\x43\\x91\\xdc\\x53\\x61\\x66\\xb8\\x67\\x1c\\xbb\\xf1\\x23\"},\n{{0xb3,0x22,0xd4,0x65,0x77,0xa2,0xa9,0x91,0xa4,0xd1,0x69,0x82,0x87,0x83,0x2a,0x39,0xc4,0x87,0xef,0x77,0x6b,0x4b,0xff,0x03,0x7a,0x05,0xc7,0xf1,0x81,0x2b,0xde,0xec,},{0xeb,0x2b,0xca,0xdf,0xd3,0xee,0xc2,0x98,0x6b,0xaf,0xf3,0x2b,0x98,0xe7,0xc4,0xdb,0xf0,0x3f,0xf9,0x5d,0x8a,0xd5,0xff,0x9a,0xa9,0x50,0x6e,0x54,0x72,0xff,0x84,0x5f,},{0xc7,0xb5,0x51,0x37,0x31,0x7c,0xa2,0x1e,0x33,0x48,0x9f,0xf6,0xa9,0xbf,0xab,0x97,0xc8,0x55,0xdc,0x6f,0x85,0x68,0x4a,0x70,0xa9,0x12,0x5a,0x26,0x1b,0x56,0xd5,0xe6,0xf1,0x49,0xc5,0x77,0x4d,0x73,0x4f,0x2d,0x8d,0xeb,0xfc,0x77,0xb7,0x21,0x89,0x6a,0x82,0x67,0xc2,0x37,0x68,0xe9,0xba,0xdb,0x91,0x0e,0xef,0x83,0xec,0x25,0x88,0x02,},\"\\x19\\xf1\\xbf\\x5d\\xcf\\x17\\x50\\xc6\\x11\\xf1\\xc4\\xa2\\x86\\x52\\x00\\x50\\x4d\\x82\\x29\\x8e\\xdd\\x72\\x67\\x1f\\x62\\xa7\\xb1\\x47\\x1a\\xc3\\xd4\\xa3\\x0f\\x7d\\xe9\\xe5\\xda\\x41\\x08\\xc5\\x2a\\x4c\\xe7\\x0a\\x3e\\x11\\x4a\\x52\\xa3\\xb3\\xc5\"},\n{{0x96,0x0c,0xab,0x50,0x34,0xb9,0x83,0x8d,0x09,0x8d,0x2d,0xcb,0xf4,0x36,0x4b,0xec,0x16,0xd3,0x88,0xf6,0x37,0x6d,0x73,0xa6,0x27,0x3b,0x70,0xf8,0x2b,0xbc,0x98,0xc0,},{0x5e,0x3c,0x19,0xf2,0x41,0x5a,0xcf,0x72,0x9f,0x82,0x9a,0x4e,0xbd,0x5c,0x40,0xe1,0xa6,0xbc,0x9f,0xbc,0xa9,0x57,0x03,0xa9,0x37,0x60,0x87,0xed,0x09,0x37,0xe5,0x1a,},{0x27,0xd4,0xc3,0xa1,0x81,0x1e,0xf9,0xd4,0x36,0x0b,0x3b,0xdd,0x13,0x3c,0x2c,0xcc,0x30,0xd0,0x2c,0x2f,0x24,0x82,0x15,0x77,0x6c,0xb0,0x7e,0xe4,0x17,0x7f,0x9b,0x13,0xfc,0x42,0xdd,0x70,0xa6,0xc2,0xfe,0xd8,0xf2,0x25,0xc7,0x66,0x3c,0x7f,0x18,0x2e,0x7e,0xe8,0xec,0xcf,0xf2,0x0d,0xc7,0xb0,0xe1,0xd5,0x83,0x4e,0xc5,0xb1,0xea,0x01,},\"\\xf8\\xb2\\x19\\x62\\x44\\x7b\\x0a\\x8f\\x2e\\x42\\x79\\xde\\x41\\x1b\\xea\\x12\\x8e\\x0b\\xe4\\x4b\\x69\\x15\\xe6\\xcd\\xa8\\x83\\x41\\xa6\\x8a\\x0d\\x81\\x83\\x57\\xdb\\x93\\x8e\\xac\\x73\\xe0\\xaf\\x6d\\x31\\x20\\x6b\\x39\\x48\\xf8\\xc4\\x8a\\x44\\x73\\x08\"},\n{{0xeb,0x77,0xb2,0x63,0x8f,0x23,0xee,0xbc,0x82,0xef,0xe4,0x5e,0xe9,0xe5,0xa0,0x32,0x66,0x37,0x40,0x1e,0x66,0x3e,0xd0,0x29,0x69,0x9b,0x21,0xe6,0x44,0x3f,0xb4,0x8e,},{0x9e,0xf2,0x76,0x08,0x96,0x1a,0xc7,0x11,0xde,0x71,0xa6,0xe2,0xd4,0xd4,0x66,0x3e,0xa3,0xec,0xd4,0x2f,0xb7,0xe4,0xe8,0x62,0x7c,0x39,0x62,0x2d,0xf4,0xaf,0x0b,0xbc,},{0x18,0xdc,0x56,0xd7,0xbd,0x9a,0xcd,0x4f,0x4d,0xaa,0x78,0x54,0x0b,0x4a,0xc8,0xff,0x7a,0xa9,0x81,0x5f,0x45,0xa0,0xbb,0xa3,0x70,0x73,0x1a,0x14,0xea,0xab,0xe9,0x6d,0xf8,0xb5,0xf3,0x7d,0xbf,0x8e,0xae,0x4c,0xb1,0x5a,0x64,0xb2,0x44,0x65,0x1e,0x59,0xd6,0xa3,0xd6,0x76,0x1d,0x9e,0x3c,0x50,0xf2,0xd0,0xcb,0xb0,0x9c,0x05,0xec,0x06,},\"\\x99\\xe3\\xd0\\x09\\x34\\x00\\x3e\\xba\\xfc\\x3e\\x9f\\xdb\\x68\\x7b\\x0f\\x5f\\xf9\\xd5\\x78\\x2a\\x4b\\x1f\\x56\\xb9\\x70\\x00\\x46\\xc0\\x77\\x91\\x56\\x02\\xc3\\x13\\x4e\\x22\\xfc\\x90\\xed\\x7e\\x69\\x0f\\xdd\\xd4\\x43\\x3e\\x20\\x34\\xdc\\xb2\\xdc\\x99\\xab\"},\n{{0xb6,0x25,0xaa,0x89,0xd3,0xf7,0x30,0x87,0x15,0x42,0x7b,0x6c,0x39,0xbb,0xac,0x58,0xef,0xfd,0x3a,0x0f,0xb7,0x31,0x6f,0x7a,0x22,0xb9,0x9e,0xe5,0x92,0x2f,0x2d,0xc9,},{0x65,0xa9,0x9c,0x3e,0x16,0xfe,0xa8,0x94,0xec,0x33,0xc6,0xb2,0x0d,0x91,0x05,0xe2,0xa0,0x4e,0x27,0x64,0xa4,0x76,0x9d,0x9b,0xbd,0x4d,0x8b,0xac,0xfe,0xab,0x4a,0x2e,},{0x01,0xbb,0x90,0x1d,0x83,0xb8,0xb6,0x82,0xd3,0x61,0x4a,0xf4,0x6a,0x80,0x7b,0xa2,0x69,0x13,0x58,0xfe,0xb7,0x75,0x32,0x5d,0x34,0x23,0xf5,0x49,0xff,0x0a,0xa5,0x75,0x7e,0x4e,0x1a,0x74,0xe9,0xc7,0x0f,0x97,0x21,0xd8,0xf3,0x54,0xb3,0x19,0xd4,0xf4,0xa1,0xd9,0x14,0x45,0xc8,0x70,0xfd,0x0f,0xfb,0x94,0xfe,0xd6,0x46,0x64,0x73,0x0d,},\"\\xe0\\x72\\x41\\xdb\\xd3\\xad\\xbe\\x61\\x0b\\xbe\\x4d\\x00\\x5d\\xd4\\x67\\x32\\xa4\\xc2\\x50\\x86\\xec\\xb8\\xec\\x29\\xcd\\x7b\\xca\\x11\\x6e\\x1b\\xf9\\xf5\\x3b\\xfb\\xf3\\xe1\\x1f\\xa4\\x90\\x18\\xd3\\x9f\\xf1\\x15\\x4a\\x06\\x66\\x8e\\xf7\\xdf\\x5c\\x67\\x8e\\x6a\"},\n{{0xb1,0xc9,0xf8,0xbd,0x03,0xfe,0x82,0xe7,0x8f,0x5c,0x0f,0xb0,0x64,0x50,0xf2,0x7d,0xac,0xdf,0x71,0x64,0x34,0xdb,0x26,0x82,0x75,0xdf,0x3e,0x1d,0xc1,0x77,0xaf,0x42,},{0x7f,0xc8,0x8b,0x1f,0x7b,0x3f,0x11,0xc6,0x29,0xbe,0x67,0x1c,0x21,0x62,0x1f,0x5c,0x10,0x67,0x2f,0xaf,0xc8,0x49,0x2d,0xa8,0x85,0x74,0x20,0x59,0xee,0x67,0x74,0xcf,},{0x4b,0x22,0x99,0x51,0xef,0x26,0x2f,0x16,0x97,0x8f,0x79,0x14,0xbc,0x67,0x2e,0x72,0x26,0xc5,0xf8,0x37,0x9d,0x27,0x78,0xc5,0xa2,0xdc,0x0a,0x26,0x50,0x86,0x9f,0x7a,0xcf,0xbd,0x0b,0xcd,0x30,0xfd,0xb0,0x61,0x9b,0xb4,0x4f,0xc1,0xae,0x59,0x39,0xb8,0x7c,0xc3,0x18,0x13,0x30,0x09,0xc2,0x03,0x95,0xb6,0xc7,0xeb,0x98,0x10,0x77,0x01,},\"\\x33\\x1d\\xa7\\xa9\\xc1\\xf8\\x7b\\x2a\\xc9\\x1e\\xe3\\xb8\\x6d\\x06\\xc2\\x91\\x63\\xc0\\x5e\\xd6\\xf8\\xd8\\xa9\\x72\\x5b\\x47\\x1b\\x7d\\xb0\\xd6\\xac\\xec\\x7f\\x0f\\x70\\x24\\x87\\x16\\x3f\\x5e\\xda\\x02\\x0c\\xa5\\xb4\\x93\\xf3\\x99\\xe1\\xc8\\xd3\\x08\\xc3\\xc0\\xc2\"},\n{{0x6d,0x8c,0xdb,0x2e,0x07,0x5f,0x3a,0x2f,0x86,0x13,0x72,0x14,0xcb,0x23,0x6c,0xeb,0x89,0xa6,0x72,0x8b,0xb4,0xa2,0x00,0x80,0x6b,0xf3,0x55,0x7f,0xb7,0x8f,0xac,0x69,},{0x57,0xa0,0x4c,0x7a,0x51,0x13,0xcd,0xdf,0xe4,0x9a,0x4c,0x12,0x46,0x91,0xd4,0x6c,0x1f,0x9c,0xdc,0x8f,0x34,0x3f,0x9d,0xcb,0x72,0xa1,0x33,0x0a,0xec,0xa7,0x1f,0xda,},{0xa6,0xcb,0xc9,0x47,0xf9,0xc8,0x7d,0x14,0x55,0xcf,0x1a,0x70,0x85,0x28,0xc0,0x90,0xf1,0x1e,0xce,0xe4,0x85,0x5d,0x1d,0xba,0xad,0xf4,0x74,0x54,0xa4,0xde,0x55,0xfa,0x4c,0xe8,0x4b,0x36,0xd7,0x3a,0x5b,0x5f,0x8f,0x59,0x29,0x8c,0xcf,0x21,0x99,0x2d,0xf4,0x92,0xef,0x34,0x16,0x3d,0x87,0x75,0x3b,0x7e,0x9d,0x32,0xf2,0xc3,0x66,0x0b,},\"\\x7f\\x31\\x8d\\xbd\\x12\\x1c\\x08\\xbf\\xdd\\xfe\\xff\\x4f\\x6a\\xff\\x4e\\x45\\x79\\x32\\x51\\xf8\\xab\\xf6\\x58\\x40\\x33\\x58\\x23\\x89\\x84\\x36\\x00\\x54\\xf2\\xa8\\x62\\xc5\\xbb\\x83\\xed\\x89\\x02\\x5d\\x20\\x14\\xa7\\xa0\\xce\\xe5\\x0d\\xa3\\xcb\\x0e\\x76\\xbb\\xb6\\xbf\"},\n{{0x47,0xad,0xc6,0xd6,0xbf,0x57,0x1e,0xe9,0x57,0x0c,0xa0,0xf7,0x5b,0x60,0x4a,0xc4,0x3e,0x30,0x3e,0x4a,0xb3,0x39,0xca,0x9b,0x53,0xca,0xcc,0x5b,0xe4,0x5b,0x2c,0xcb,},{0xa3,0xf5,0x27,0xa1,0xc1,0xf1,0x7d,0xfe,0xed,0x92,0x27,0x73,0x47,0xc9,0xf9,0x8a,0xb4,0x75,0xde,0x17,0x55,0xb0,0xab,0x54,0x6b,0x8a,0x15,0xd0,0x1b,0x9b,0xd0,0xbe,},{0x4e,0x8c,0x31,0x83,0x43,0xc3,0x06,0xad,0xbb,0xa6,0x0c,0x92,0xb7,0x5c,0xb0,0x56,0x9b,0x92,0x19,0xd8,0xa8,0x6e,0x5d,0x57,0x75,0x2e,0xd2,0x35,0xfc,0x10,0x9a,0x43,0xc2,0xcf,0x4e,0x94,0x2c,0xac,0xf2,0x97,0x27,0x9f,0xbb,0x28,0x67,0x53,0x47,0xe0,0x80,0x27,0x72,0x2a,0x4e,0xb7,0x39,0x5e,0x00,0xa1,0x74,0x95,0xd3,0x2e,0xdf,0x0b,},\"\\xce\\x49\\x7c\\x5f\\xf5\\xa7\\x79\\x90\\xb7\\xd8\\xf8\\x69\\x9e\\xb1\\xf5\\xd8\\xc0\\x58\\x2f\\x70\\xcb\\x7a\\xc5\\xc5\\x4d\\x9d\\x92\\x49\\x13\\x27\\x8b\\xc6\\x54\\xd3\\x7e\\xa2\\x27\\x59\\x0e\\x15\\x20\\x22\\x17\\xfc\\x98\\xda\\xc4\\xc0\\xf3\\xbe\\x21\\x83\\xd1\\x33\\x31\\x57\\x39\"},\n{{0x3c,0x19,0xb5,0x0b,0x0f,0xe4,0x79,0x61,0x71,0x9c,0x38,0x1d,0x0d,0x8d,0xa9,0xb9,0x86,0x9d,0x31,0x2f,0x13,0xe3,0x29,0x8b,0x97,0xfb,0x22,0xf0,0xaf,0x29,0xcb,0xbe,},{0x0f,0x7e,0xda,0x09,0x14,0x99,0x62,0x5e,0x2b,0xae,0x85,0x36,0xea,0x35,0xcd,0xa5,0x48,0x3b,0xd1,0x6a,0x9c,0x7e,0x41,0x6b,0x34,0x1d,0x6f,0x2c,0x83,0x34,0x36,0x12,},{0xef,0xbd,0x41,0xf2,0x6a,0x5d,0x62,0x68,0x55,0x16,0xf8,0x82,0xb6,0xec,0x74,0xe0,0xd5,0xa7,0x18,0x30,0xd2,0x03,0xc2,0x31,0x24,0x8f,0x26,0xe9,0x9a,0x9c,0x65,0x78,0xec,0x90,0x0d,0x68,0xcd,0xb8,0xfa,0x72,0x16,0xad,0x0d,0x24,0xf9,0xec,0xbc,0x9f,0xfa,0x65,0x53,0x51,0x66,0x65,0x82,0xf6,0x26,0x64,0x53,0x95,0xa3,0x1f,0xa7,0x04,},\"\\x8d\\xdc\\xd6\\x30\\x43\\xf5\\x5e\\xc3\\xbf\\xc8\\x3d\\xce\\xae\\x69\\xd8\\xf8\\xb3\\x2f\\x4c\\xdb\\x6e\\x2a\\xeb\\xd9\\x4b\\x43\\x14\\xf8\\xfe\\x72\\x87\\xdc\\xb6\\x27\\x32\\xc9\\x05\\x2e\\x75\\x57\\xfe\\x63\\x53\\x43\\x38\\xef\\xb5\\xb6\\x25\\x4c\\x5d\\x41\\xd2\\x69\\x0c\\xf5\\x14\\x4f\"},\n{{0x34,0xe1,0xe9,0xd5,0x39,0x10,0x7e,0xb8,0x6b,0x39,0x3a,0x5c,0xce,0xa1,0x49,0x6d,0x35,0xbc,0x7d,0x5e,0x9a,0x8c,0x51,0x59,0xd9,0x57,0xe4,0xe5,0x85,0x2b,0x3e,0xb0,},{0x0e,0xcb,0x26,0x01,0xd5,0xf7,0x04,0x74,0x28,0xe9,0xf9,0x09,0x88,0x3a,0x12,0x42,0x00,0x85,0xf0,0x4e,0xe2,0xa8,0x8b,0x6d,0x95,0xd3,0xd7,0xf2,0xc9,0x32,0xbd,0x76,},{0x32,0xd2,0x29,0x04,0xd3,0xe7,0x01,0x2d,0x6f,0x5a,0x44,0x1b,0x0b,0x42,0x28,0x06,0x4a,0x5c,0xf9,0x5b,0x72,0x3a,0x66,0xb0,0x48,0xa0,0x87,0xec,0xd5,0x59,0x20,0xc3,0x1c,0x20,0x4c,0x3f,0x20,0x06,0x89,0x1a,0x85,0xdd,0x19,0x32,0xe3,0xf1,0xd6,0x14,0xcf,0xd6,0x33,0xb5,0xe6,0x32,0x91,0xc6,0xd8,0x16,0x6f,0x30,0x11,0x43,0x1e,0x09,},\"\\xa6\\xd4\\xd0\\x54\\x2c\\xfe\\x0d\\x24\\x0a\\x90\\x50\\x7d\\xeb\\xac\\xab\\xce\\x7c\\xbb\\xd4\\x87\\x32\\x35\\x3f\\x4f\\xad\\x82\\xc7\\xbb\\x7d\\xbd\\x9d\\xf8\\xe7\\xd9\\xa1\\x69\\x80\\xa4\\x51\\x86\\xd8\\x78\\x6c\\x5e\\xf6\\x54\\x45\\xbc\\xc5\\xb2\\xad\\x5f\\x66\\x0f\\xfc\\x7c\\x8e\\xaa\\xc0\"},\n{{0x49,0xdd,0x47,0x3e,0xde,0x6a,0xa3,0xc8,0x66,0x82,0x4a,0x40,0xad,0xa4,0x99,0x6c,0x23,0x9a,0x20,0xd8,0x4c,0x93,0x65,0xe4,0xf0,0xa4,0x55,0x4f,0x80,0x31,0xb9,0xcf,},{0x78,0x8d,0xe5,0x40,0x54,0x4d,0x3f,0xeb,0x0c,0x91,0x92,0x40,0xb3,0x90,0x72,0x9b,0xe4,0x87,0xe9,0x4b,0x64,0xad,0x97,0x3e,0xb6,0x5b,0x46,0x69,0xec,0xf2,0x35,0x01,},{0xd2,0xfd,0xe0,0x27,0x91,0xe7,0x20,0x85,0x25,0x07,0xfa,0xa7,0xc3,0x78,0x90,0x40,0xd9,0xef,0x86,0x64,0x63,0x21,0xf3,0x13,0xac,0x55,0x7f,0x40,0x02,0x49,0x15,0x42,0xdd,0x67,0xd0,0x5c,0x69,0x90,0xcd,0xb0,0xd4,0x95,0x50,0x1f,0xbc,0x5d,0x51,0x88,0xbf,0xbb,0x84,0xdc,0x1b,0xf6,0x09,0x8b,0xee,0x06,0x03,0xa4,0x7f,0xc2,0x69,0x0f,},\"\\x3a\\x53\\x59\\x4f\\x3f\\xba\\x03\\x02\\x93\\x18\\xf5\\x12\\xb0\\x84\\xa0\\x71\\xeb\\xd6\\x0b\\xae\\xc7\\xf5\\x5b\\x02\\x8d\\xc7\\x3b\\xfc\\x9c\\x74\\xe0\\xca\\x49\\x6b\\xf8\\x19\\xdd\\x92\\xab\\x61\\xcd\\x8b\\x74\\xbe\\x3c\\x0d\\x6d\\xcd\\x12\\x8e\\xfc\\x5e\\xd3\\x34\\x2c\\xba\\x12\\x4f\\x72\\x6c\"},\n{{0x33,0x1c,0x64,0xda,0x48,0x2b,0x6b,0x55,0x13,0x73,0xc3,0x64,0x81,0xa0,0x2d,0x81,0x36,0xec,0xad,0xbb,0x01,0xab,0x11,0x4b,0x44,0x70,0xbf,0x41,0x60,0x7a,0xc5,0x71,},{0x52,0xa0,0x0d,0x96,0xa3,0x14,0x8b,0x47,0x26,0x69,0x2d,0x9e,0xff,0x89,0x16,0x0e,0xa9,0xf9,0x9a,0x5c,0xc4,0x38,0x9f,0x36,0x1f,0xed,0x0b,0xb1,0x6a,0x42,0xd5,0x21,},{0x22,0xc9,0x9a,0xa9,0x46,0xea,0xd3,0x9a,0xc7,0x99,0x75,0x62,0x81,0x0c,0x01,0xc2,0x0b,0x46,0xbd,0x61,0x06,0x45,0xbd,0x2d,0x56,0xdc,0xdc,0xba,0xac,0xc5,0x45,0x2c,0x74,0xfb,0xf4,0xb8,0xb1,0x81,0x3b,0x0e,0x94,0xc3,0x0d,0x80,0x8c,0xe5,0x49,0x8e,0x61,0xd4,0xf7,0xcc,0xbb,0x4c,0xc5,0xf0,0x4d,0xfc,0x61,0x40,0x82,0x5a,0x96,0x00,},\"\\x20\\xe1\\xd0\\x5a\\x0d\\x5b\\x32\\xcc\\x81\\x50\\xb8\\x11\\x6c\\xef\\x39\\x65\\x9d\\xd5\\xfb\\x44\\x3a\\xb1\\x56\\x00\\xf7\\x8e\\x5b\\x49\\xc4\\x53\\x26\\xd9\\x32\\x3f\\x28\\x50\\xa6\\x3c\\x38\\x08\\x85\\x94\\x95\\xae\\x27\\x3f\\x58\\xa5\\x1e\\x9d\\xe9\\xa1\\x45\\xd7\\x74\\xb4\\x0b\\xa9\\xd7\\x53\\xd3\"},\n{{0x5c,0x0b,0x96,0xf2,0xaf,0x87,0x12,0x12,0x2c,0xf7,0x43,0xc8,0xf8,0xdc,0x77,0xb6,0xcd,0x55,0x70,0xa7,0xde,0x13,0x29,0x7b,0xb3,0xdd,0xe1,0x88,0x62,0x13,0xcc,0xe2,},{0x05,0x10,0xea,0xf5,0x7d,0x73,0x01,0xb0,0xe1,0xd5,0x27,0x03,0x9b,0xf4,0xc6,0xe2,0x92,0x30,0x0a,0x3a,0x61,0xb4,0x76,0x54,0x34,0xf3,0x20,0x3c,0x10,0x03,0x51,0xb1,},{0x06,0xe5,0xd8,0x43,0x6a,0xc7,0x70,0x5b,0x3a,0x90,0xf1,0x63,0x1c,0xdd,0x38,0xec,0x1a,0x3f,0xa4,0x97,0x78,0xa9,0xb9,0xf2,0xfa,0x5e,0xbe,0xa4,0xe7,0xd5,0x60,0xad,0xa7,0xdd,0x26,0xff,0x42,0xfa,0xfa,0x8b,0xa4,0x20,0x32,0x37,0x42,0x76,0x1a,0xca,0x69,0x04,0x94,0x0d,0xc2,0x1b,0xbe,0xf6,0x3f,0xf7,0x2d,0xaa,0xb4,0x5d,0x43,0x0b,},\"\\x54\\xe0\\xca\\xa8\\xe6\\x39\\x19\\xca\\x61\\x4b\\x2b\\xfd\\x30\\x8c\\xcf\\xe5\\x0c\\x9e\\xa8\\x88\\xe1\\xee\\x44\\x46\\xd6\\x82\\xcb\\x50\\x34\\x62\\x7f\\x97\\xb0\\x53\\x92\\xc0\\x4e\\x83\\x55\\x56\\xc3\\x1c\\x52\\x81\\x6a\\x48\\xe4\\xfb\\x19\\x66\\x93\\x20\\x6b\\x8a\\xfb\\x44\\x08\\x66\\x2b\\x3c\\xb5\\x75\"},\n{{0xde,0x84,0xf2,0x43,0x5f,0x78,0xde,0xdb,0x87,0xda,0x18,0x19,0x4f,0xf6,0xa3,0x36,0xf0,0x81,0x11,0x15,0x0d,0xef,0x90,0x1c,0x1a,0xc4,0x18,0x14,0x6e,0xb7,0xb5,0x4a,},{0xd3,0xa9,0x2b,0xba,0xa4,0xd6,0x3a,0xf7,0x9c,0x22,0x26,0xa7,0x23,0x6e,0x64,0x27,0x42,0x8d,0xf8,0xb3,0x62,0x42,0x7f,0x87,0x30,0x23,0xb2,0x2d,0x2f,0x5e,0x03,0xf2,},{0x47,0x1e,0xbc,0x97,0x3c,0xfd,0xac,0xee,0xc0,0x72,0x79,0x30,0x73,0x68,0xb7,0x3b,0xe3,0x5b,0xc6,0xf8,0xd8,0x31,0x2b,0x70,0x15,0x05,0x67,0x36,0x90,0x96,0x70,0x6d,0xc4,0x71,0x12,0x6c,0x35,0x76,0xf9,0xf0,0xeb,0x55,0x0d,0xf5,0xac,0x6a,0x52,0x51,0x81,0x11,0x00,0x29,0xdd,0x1f,0xc1,0x11,0x74,0xd1,0xaa,0xce,0xd4,0x8d,0x63,0x0f,},\"\\x20\\x51\\x35\\xec\\x7f\\x41\\x7c\\x85\\x80\\x72\\xd5\\x23\\x3f\\xb3\\x64\\x82\\xd4\\x90\\x6a\\xbd\\x60\\xa7\\x4a\\x49\\x8c\\x34\\x7f\\xf2\\x48\\xdf\\xa2\\x72\\x2c\\xa7\\x4e\\x87\\x9d\\xe3\\x31\\x69\\xfa\\xdc\\x7c\\xd4\\x4d\\x6c\\x94\\xa1\\x7d\\x16\\xe1\\xe6\\x30\\x82\\x4b\\xa3\\xe0\\xdf\\x22\\xed\\x68\\xea\\xab\"},\n{{0xba,0x4d,0x6e,0x67,0xb2,0xce,0x67,0xa1,0xe4,0x43,0x26,0x49,0x40,0x44,0xf3,0x7a,0x44,0x2f,0x3b,0x81,0x72,0x5b,0xc1,0xf9,0x34,0x14,0x62,0x71,0x8b,0x55,0xee,0x20,},{0xf7,0x3f,0xa0,0x76,0xf8,0x4b,0x6d,0xb6,0x75,0xa5,0xfd,0xa5,0xad,0x67,0xe3,0x51,0xa4,0x1e,0x8e,0x7f,0x29,0xad,0xd1,0x68,0x09,0xca,0x01,0x03,0x87,0xe9,0xc6,0xcc,},{0x57,0xb9,0xd2,0xa7,0x11,0x20,0x7f,0x83,0x74,0x21,0xba,0xe7,0xdd,0x48,0xea,0xa1,0x8e,0xab,0x1a,0x9a,0x70,0xa0,0xf1,0x30,0x58,0x06,0xfe,0xe1,0x7b,0x45,0x8f,0x3a,0x09,0x64,0xb3,0x02,0xd1,0x83,0x4d,0x3e,0x0a,0xc9,0xe8,0x49,0x6f,0x00,0x0b,0x77,0xf0,0x08,0x3b,0x41,0xf8,0xa9,0x57,0xe6,0x32,0xfb,0xc7,0x84,0x0e,0xee,0x6a,0x06,},\"\\x4b\\xaf\\xda\\xc9\\x09\\x9d\\x40\\x57\\xed\\x6d\\xd0\\x8b\\xca\\xee\\x87\\x56\\xe9\\xa4\\x0f\\x2c\\xb9\\x59\\x80\\x20\\xeb\\x95\\x01\\x95\\x28\\x40\\x9b\\xbe\\xa3\\x8b\\x38\\x4a\\x59\\xf1\\x19\\xf5\\x72\\x97\\xbf\\xb2\\xfa\\x14\\x2f\\xc7\\xbb\\x1d\\x90\\xdb\\xdd\\xde\\x77\\x2b\\xcd\\xe4\\x8c\\x56\\x70\\xd5\\xfa\\x13\"},\n{{0x0d,0x13,0x1c,0x45,0xae,0xa6,0xf3,0xa4,0xe1,0xb9,0xa2,0xcf,0x60,0xc5,0x51,0x04,0x58,0x7e,0xfa,0xa8,0x46,0xb2,0x22,0xbf,0x0a,0x7b,0x74,0xce,0x7a,0x3f,0x63,0xb6,},{0x3c,0x67,0x29,0xdb,0xe9,0x3b,0x49,0x9c,0x4e,0x61,0x4a,0x2f,0x21,0xbe,0xb7,0x29,0x43,0x8d,0x49,0x8e,0x1a,0xc8,0xd1,0x4c,0xba,0xd9,0x71,0x7a,0x5d,0xbd,0x97,0xcd,},{0xa9,0xc5,0xee,0x86,0xfb,0x06,0xd9,0xe4,0x6b,0x37,0x9c,0x32,0xdd,0xa7,0xc9,0x2c,0x9c,0x13,0xdb,0x27,0x4d,0xc2,0x41,0x16,0xfb,0xdd,0x87,0x86,0x96,0x04,0x54,0x88,0xcc,0x75,0xa5,0x2f,0xff,0x67,0xd1,0xa5,0x11,0x3d,0x06,0xe3,0x33,0xac,0x67,0xff,0x66,0x4b,0x3f,0x2a,0x40,0x5f,0xa1,0xd1,0x4d,0xd5,0xbb,0xb9,0x74,0x09,0xb6,0x06,},\"\\xb4\\x29\\x1d\\x08\\xb8\\x8f\\xb2\\xf7\\xb8\\xf9\\x9d\\x0d\\xce\\x40\\x07\\x9f\\xcb\\xab\\x71\\x8b\\xbd\\x8f\\x4e\\x8e\\xab\\xc3\\xc1\\x42\\x8b\\x6a\\x07\\x1f\\xb2\\xa3\\xc8\\xeb\\xa1\\xca\\xcc\\xcf\\xa8\\x71\\xb3\\x65\\xc7\\x08\\xbe\\xf2\\x68\\x5b\\xc1\\x3e\\x6b\\x80\\xbc\\x14\\xa5\\xf2\\x49\\x17\\x0f\\xfc\\x56\\xd0\\x14\"},\n{{0xa7,0x5e,0x3b,0x6b,0x41,0x70,0xe4,0x44,0x78,0x1b,0xe4,0xee,0xac,0x3e,0x0f,0xda,0xa4,0xb4,0x35,0x6f,0x70,0x54,0x86,0xbc,0xb0,0x71,0xa3,0x25,0xae,0x07,0x1f,0xba,},{0x99,0x3d,0x38,0xa7,0xd7,0x2f,0x0a,0xee,0x15,0xff,0x6f,0x4f,0xdc,0x37,0xca,0x77,0x24,0xfd,0x13,0x73,0xa3,0x76,0x6b,0x27,0x5d,0xbc,0x77,0xe6,0x47,0x98,0x0e,0x0a,},{0xa5,0xdb,0x4d,0x3d,0x33,0x29,0xab,0xe3,0x69,0x79,0x59,0xe6,0xb5,0x94,0x7e,0xa8,0x60,0x1b,0x03,0xef,0x8e,0x1d,0x6f,0xe2,0x02,0x14,0x49,0x31,0x27,0x2c,0xa0,0xa0,0x9b,0x5e,0xb0,0xf3,0x90,0x57,0x2e,0xa7,0xef,0x03,0xc6,0x13,0x1e,0x9d,0xe5,0xf1,0x6b,0xf0,0xb0,0x34,0x24,0x4f,0x7e,0x10,0x4f,0xf5,0x31,0x1b,0xbf,0x66,0x3a,0x0d,},\"\\x40\\x37\\x86\\x6f\\x65\\x48\\xb0\\x1c\\xc6\\xbc\\xf3\\xa9\\x40\\xe3\\x94\\x5a\\xa2\\xd1\\x88\\xb4\\xb7\\xf1\\x82\\xaa\\x77\\xec\\x4d\\x6b\\x04\\x28\\xab\\x5b\\x84\\xd8\\x5d\\xf1\\x92\\xa5\\xa3\\x8a\\xda\\x08\\x9d\\x76\\xfa\\x26\\xbf\\x67\\x73\\x6a\\x70\\x41\\xa5\\xeb\\x8f\\x0c\\x57\\x19\\xeb\\x39\\x66\\x93\\xc4\\x51\\x60\\xf8\"},\n{{0xbc,0xbc,0xf5,0x61,0xec,0xc0,0x5a,0x41,0xc7,0xd7,0xe5,0x5e,0x69,0x6d,0x32,0xce,0x39,0xb4,0xd0,0x3c,0x1f,0x5f,0x3f,0x3a,0x89,0x27,0xfe,0x5e,0x62,0xe8,0x44,0xb2,},{0x4d,0xdf,0x53,0xfa,0xd6,0xa7,0xa9,0xed,0x30,0xf3,0xaf,0xec,0xca,0x13,0x6f,0xd7,0x84,0x3b,0x72,0xc2,0x43,0x09,0x08,0x91,0xae,0x40,0x21,0xa3,0x2c,0xad,0xff,0x1a,},{0x9f,0xf1,0x51,0x15,0xf6,0x66,0x1f,0x32,0x11,0xd7,0xa4,0x07,0x64,0x96,0x76,0x29,0xba,0x6a,0x52,0x63,0x95,0x1b,0xdc,0x3c,0x6a,0x4c,0x90,0xd0,0x70,0xf7,0xbe,0x00,0x02,0x4b,0x80,0xd8,0x3b,0x6b,0xc2,0x75,0x87,0xfc,0xff,0x5f,0x5c,0xcc,0x0e,0xb3,0xcd,0xe1,0x49,0x7c,0xf5,0x68,0x95,0x14,0x7a,0x06,0x3f,0x61,0xf0,0x8a,0xdf,0x0b,},\"\\x6f\\x67\\x16\\xb6\\x78\\x47\\x40\\x98\\x0a\\xeb\\xc3\\x24\\x88\\x07\\xe3\\x1c\\x12\\x86\\xac\\x7b\\x68\\x1c\\x00\\xb6\\x6c\\x88\\xff\\x7a\\x33\\x6d\\x44\\x1f\\xa5\\xc3\\xeb\\x25\\x6d\\x20\\xcf\\x6d\\x1a\\xc9\\x2c\\xcf\\xe4\\xbe\\x6d\\xcc\\x41\\xb1\\xaf\\xf8\\x46\\xd3\\x60\\xc2\\x43\\x00\\x1c\\xab\\xdf\\xbf\\x1a\\x9b\\x24\\x04\\x55\"},\n{{0x21,0x05,0x32,0x80,0x5f,0xa9,0xcc,0x9b,0xe9,0x16,0xd2,0x13,0xca,0xc3,0x74,0xe3,0xcd,0x6f,0xc2,0x60,0x2a,0x54,0x4d,0x0c,0x1c,0xe2,0x9d,0x30,0x10,0x5d,0x69,0xab,},{0x10,0x69,0x9e,0x49,0x9b,0xe9,0x9e,0x2b,0x11,0xb9,0x8f,0x6f,0x86,0xb6,0x7c,0xdc,0x4c,0xcf,0x69,0xf3,0xc5,0x3c,0xe0,0x94,0x87,0x56,0x47,0xd2,0xd0,0xd0,0xec,0xc5,},{0x4c,0x2d,0x31,0xd5,0xbb,0xc4,0x2e,0x02,0x6d,0xc1,0xe0,0x79,0xec,0xc4,0xdd,0x07,0x2c,0x5d,0x2c,0xce,0x65,0xe3,0xdb,0x8d,0x8a,0x1d,0xd9,0x05,0x7f,0xaa,0x03,0x71,0x72,0x7f,0x72,0x72,0x31,0xa0,0xf0,0x60,0xfa,0x27,0x09,0x75,0x33,0xb6,0xdb,0x3b,0x8f,0x62,0x52,0xf2,0x79,0x3d,0x75,0x66,0x2c,0xaa,0xdf,0x5f,0x0f,0xcc,0x71,0x0e,},\"\\x9f\\xc4\\xd2\\x8c\\xfd\\x25\\xe6\\xc0\\xc5\\xe7\\x24\\xe1\\x9c\\xa3\\x9d\\x71\\xe5\\x3b\\xf4\\xaa\\x27\\x96\\xc5\\x4c\\x33\\x51\\xf1\\x08\\xfc\\x70\\xf2\\x61\\x1a\\x62\\xe0\\xab\\x90\\xaf\\x6a\\xde\\x52\\x16\\x78\\x8e\\x9e\\xb2\\xa8\\x73\\x05\\x9b\\x1e\\x79\\xd7\\xd5\\x9d\\xeb\\xd6\\x8f\\x2d\\x4d\\x80\\xff\\xe3\\x1b\\xf7\\x4b\\x92\\x8c\"},\n{{0x18,0x5d,0x64,0xb6,0x94,0x79,0xe0,0xba,0x0a,0x58,0x44,0xa1,0x0a,0xd8,0x41,0x25,0xba,0x11,0xc4,0xb4,0x0d,0x63,0xed,0xa2,0xc5,0x7a,0xfc,0x7e,0x01,0x9c,0x8e,0x0c,},{0xa5,0x76,0x4f,0x63,0x98,0xa5,0xae,0x22,0x66,0xa3,0x8f,0x97,0x14,0x53,0x3c,0x4b,0xbd,0x8d,0x07,0x82,0x6f,0x63,0xe2,0x04,0xcb,0xac,0x37,0x4b,0x0a,0xce,0xf1,0xbd,},{0x43,0xe0,0x38,0x7d,0xa5,0xba,0x09,0xa1,0x90,0xf6,0xe7,0xb2,0x68,0x05,0x78,0xd8,0x89,0x76,0x9b,0xcc,0x44,0x5e,0x5e,0xf5,0x71,0xb4,0x92,0x87,0x1c,0x15,0x5c,0x5b,0x9f,0x62,0x0b,0xfa,0xcf,0xbf,0x2d,0xf1,0xfd,0x87,0x44,0x46,0x04,0xb7,0x1b,0x2e,0x23,0x7b,0xaa,0xa7,0xee,0x20,0x93,0xed,0xe4,0xa6,0x01,0xed,0xf8,0x83,0xe3,0x07,},\"\\x4a\\x08\\x24\\xfe\\x70\\xd4\\x31\\x54\\x13\\xd0\\xa0\\xca\\xfb\\xf4\\xf5\\xfe\\x11\\x7d\\x5e\\x07\\xe1\\xc3\\xa4\\xef\\xfb\\x9d\\x0a\\xe9\\x14\\x90\\x23\\x48\\x78\\xcc\\xf6\\x79\\x2a\\x91\\xf6\\x8c\\x6a\\x52\\x0d\\xe1\\x60\\x71\\xf0\\x8a\\xbe\\x35\\xdc\\x5e\\xa4\\x28\\xf1\\x95\\x7b\\x66\\x33\\x71\\xce\\x24\\xc6\\x09\\xdd\\x55\\xb8\\xf4\\x93\"},\n{{0xcf,0xa9,0xd9,0x16,0x4b,0x3c,0x4f,0x6f,0x72,0x26,0x35,0xd2,0x06,0x6c,0xd7,0xea,0x5e,0x55,0x33,0xd2,0xc7,0x4f,0x8a,0xdd,0x66,0x9c,0x37,0x1f,0xaa,0x47,0x64,0x26,},{0x41,0x16,0x9a,0x66,0xf9,0xa6,0x3f,0x28,0x57,0x82,0xa6,0xc2,0xdb,0x81,0xcc,0x3f,0x70,0xb3,0xad,0xa2,0x1a,0x68,0xc8,0x47,0x45,0xc8,0x8a,0x74,0xc3,0xb0,0xa2,0xde,},{0x01,0xd7,0xc9,0xb5,0x70,0x1a,0xf7,0x1e,0x2f,0x48,0x77,0xff,0xc9,0xb7,0xb5,0x30,0x5f,0x52,0x81,0x6d,0x44,0x58,0xe3,0x7e,0x41,0xc7,0x71,0x9f,0xac,0x1d,0x76,0xa0,0x1f,0xff,0x3f,0x50,0xfe,0x1a,0x58,0x75,0xcc,0xc3,0xfb,0x70,0x00,0x1c,0x94,0x7a,0x33,0xfc,0x8b,0x20,0x7d,0xe1,0x35,0x72,0xcc,0xdb,0x8b,0xa9,0x89,0x33,0xab,0x01,},\"\\x75\\x76\\x21\\xb1\\x67\\x5d\\xb7\\xca\\xce\\xf7\\xf2\\x78\\x25\\x87\\xff\\x3a\\xf5\\x1a\\x3e\\xf2\\xf4\\xbc\\xf9\\x27\\x9c\\x4c\\xe9\\x40\\x02\\xe1\\xf0\\x04\\x24\\xbf\\x0e\\xb6\\x21\\x98\\x2c\\xc8\\x5c\\xb4\\xd1\\x71\\xe5\\x64\\xa0\\xc2\\xf6\\xe3\\x56\\x7a\\x1a\\xae\\x2c\\xdd\\xb7\\xe9\\xb2\\x5f\\x47\\xdc\\x20\\xa5\\x10\\x50\\x54\\x29\\x69\\xca\"},\n{{0x1a,0xcb,0x4a,0x25,0x6c,0x2f,0x89,0x93,0xca,0x24,0xde,0x1e,0x00,0x14,0x60,0x6d,0x66,0x8b,0x5e,0x75,0x60,0x32,0xd2,0x69,0xf1,0xd2,0x4d,0x35,0x1c,0x8e,0xea,0x4a,},{0xcb,0xbd,0xcd,0x8c,0xbc,0x88,0x5a,0xb4,0x3a,0x05,0x7e,0x5f,0x95,0x79,0xf1,0x16,0x19,0x54,0x15,0x9e,0x7b,0x56,0x2e,0xa2,0x6c,0xd9,0xa4,0x3c,0x88,0xd3,0xf9,0x6d,},{0x05,0xaa,0x76,0xf7,0xfe,0x51,0x89,0x23,0x03,0xd7,0x89,0x14,0x71,0x59,0x95,0xe7,0xd7,0x68,0xff,0x77,0x14,0xce,0x27,0x0f,0x17,0x5e,0x56,0xaf,0x17,0xae,0x01,0x8d,0x3f,0xa9,0x39,0xf5,0xf6,0x20,0xde,0x82,0xbc,0xd1,0x54,0x96,0x87,0xb2,0x05,0xc7,0x87,0x12,0x03,0xe6,0x24,0x23,0x8c,0x4e,0x30,0x9f,0xab,0x7f,0x92,0xfb,0xaa,0x05,},\"\\xc4\\x6a\\x6d\\x61\\xaa\\x0a\\xed\\x1c\\x1d\\x85\\x47\\xa7\\x0b\\x89\\xb7\\x19\\x64\\x75\\xd5\\xa4\\x87\\x08\\x81\\xb1\\xec\\xd0\\xf0\\xcb\\x9c\\x74\\x5f\\x8a\\x2a\\xdc\\x80\\x24\\xe2\\xdc\\x55\\xb5\\x3a\\xa5\\xd3\\x83\\xa8\\x1a\\xab\\xc1\\xa4\\x7e\\x8d\\x07\\xd0\\x0b\\x7f\\x0b\\x56\\xce\\xdd\\xbf\\xb1\\xf4\\x24\\xbb\\x5c\\x02\\x18\\x46\\x78\\xa6\\x66\"},\n{{0xac,0xe3,0xc4,0x64,0x24,0x82,0x36,0x22,0x97,0x9f,0xc3,0xa8,0x4a,0x7d,0xa6,0x9c,0x1d,0x52,0x7d,0x83,0x12,0xe8,0xfb,0x01,0x83,0x75,0xbd,0x3a,0x96,0xc2,0x9c,0x18,},{0x93,0x7c,0xf3,0x41,0x36,0xd9,0xe1,0xcc,0xe0,0xde,0x11,0xb1,0x2c,0x70,0xcb,0xfb,0x74,0x55,0x44,0x84,0x21,0xe9,0x2c,0x82,0xe7,0xc4,0x09,0x34,0xbf,0xf8,0xc6,0x76,},{0xfe,0xb8,0x89,0x6d,0xd3,0xfe,0x60,0x01,0xff,0xea,0x17,0x1b,0x37,0xb7,0x88,0xa6,0x9f,0x7f,0x85,0x01,0x93,0xa6,0x34,0x06,0xf5,0x63,0x76,0xdd,0x26,0x3d,0x09,0x9a,0xef,0x80,0xec,0xe6,0x7e,0x2c,0x43,0xf4,0x0e,0xca,0x46,0x2c,0x6b,0x71,0xe7,0x94,0x06,0xb1,0x8d,0xb7,0x4a,0xe5,0xd4,0x98,0x44,0xe3,0xb1,0x32,0xbc,0x2a,0x13,0x07,},\"\\xa9\\xf1\\x37\\xbc\\x90\\x21\\xbf\\x10\\x5a\\xee\\x25\\xbe\\x21\\xcd\\x9e\\xe5\\xb3\\x54\\x7c\\xf1\\x0c\\xc5\\xf9\\x84\\x76\\xfb\\x58\\x8b\\xd7\\x0e\\x2d\\x6d\\x6b\\x08\\x34\\xe8\\x42\\xe4\\xee\\x94\\x30\\x3c\\xf9\\x6b\\x09\\xc1\\x71\\x53\\x81\\xb3\\x6e\\x14\\xa4\\x91\\xb8\\x0f\\x89\\x5e\\xa4\\x21\\xb8\\xec\\x2b\\x1d\\x3c\\x18\\x7e\\x02\\x93\\x5c\\x55\\x26\"},\n{{0x88,0xf6,0x81,0x93,0x4e,0x33,0xc3,0x5c,0x07,0xdc,0x6e,0x5a,0x83,0x29,0x42,0xae,0x3d,0x59,0x90,0x3c,0xcd,0xe2,0xf7,0x6c,0xcb,0x75,0x87,0xce,0xa7,0xec,0x41,0xb6,},{0x6a,0x4e,0x8a,0xa5,0xad,0xb6,0x3d,0x22,0xfd,0x7b,0x14,0xa2,0x6f,0xdb,0x03,0xb7,0xc8,0xaa,0x6c,0xcd,0x5a,0x19,0x6f,0x2c,0x54,0xb0,0x46,0x5a,0xdb,0x50,0x92,0xe1,},{0x45,0xb2,0x7b,0xf1,0xb9,0xea,0xc0,0x6b,0x62,0xb6,0x86,0xf6,0xd5,0x46,0x56,0x3b,0x2d,0xfe,0x5b,0x17,0x5d,0xbe,0xf3,0x2b,0xf7,0x8c,0x35,0xa1,0x6c,0x95,0x8a,0x9d,0x4f,0x26,0xd2,0x91,0xde,0x9b,0xb2,0x06,0x6c,0x0a,0x28,0x61,0x13,0xcc,0x09,0x17,0x2d,0x40,0xa3,0x6d,0x4c,0xbd,0x95,0x17,0x08,0x86,0x02,0x26,0xeb,0x30,0xcd,0x05,},\"\\x6e\\x8b\\xac\\x1f\\x85\\x3b\\x81\\xfe\\xf9\\x47\\x07\\xe1\\x8c\\xc6\\x1c\\x6f\\x0a\\x9c\\xbc\\x2a\\x41\\xd0\\x78\\xdc\\xc8\\x3f\\xc0\\x22\\x9c\\x7f\\x8d\\xbe\\x6d\\xbd\\xd9\\x08\\x54\\xb1\\xf1\\xae\\x2b\\x9f\\x2b\\x12\\x0b\\x86\\xa8\\x78\\x6b\\x4e\\x78\\xce\\x23\\xab\\x86\\xba\\xaf\\x88\\x75\\x4a\\xf0\\xf3\\xd8\\x88\\x81\\xda\\xe0\\xbc\\x52\\x61\\xbf\\xd0\\x38\"},\n{{0x48,0x05,0x0a,0x6e,0x01,0x58,0xf6,0xad,0x25,0x34,0x12,0xe4,0x49,0x7c,0xff,0x62,0xd5,0xee,0x55,0x5e,0xdf,0xfe,0x59,0xe4,0xdc,0x40,0x15,0x22,0x81,0x32,0x95,0xce,},{0x97,0x5e,0x01,0x0a,0xbb,0x9a,0x3e,0x56,0x65,0x91,0x37,0xb0,0x50,0x60,0x57,0xf2,0x83,0x98,0x2f,0x88,0x6c,0xa1,0x72,0xc7,0xbc,0x2c,0x50,0x0e,0xd9,0xbd,0x26,0xc1,},{0x72,0x16,0xab,0x60,0xc3,0x51,0x68,0x18,0x7d,0x0f,0xce,0x47,0x53,0xc8,0x6e,0x80,0x05,0x8d,0x54,0x0b,0x76,0xbf,0x95,0x84,0x3a,0x58,0x98,0x84,0x10,0x60,0xa9,0x9a,0x44,0xde,0x6f,0x43,0x96,0x25,0xa3,0xf6,0x36,0x5f,0x59,0xc3,0x77,0xbf,0x45,0x90,0x9b,0xbf,0xef,0x5c,0x50,0xb2,0x5f,0x31,0x94,0xe5,0xfb,0xd3,0x4e,0xa5,0xe7,0x06,},\"\\xed\\x6e\\xec\\x29\\xfb\\x70\\x49\\xdf\\xf7\\x07\\xf0\\xa4\\x42\\x6e\\xbc\\x8f\\x5b\\x35\\x0e\\x95\\x87\\x0b\\x9d\\x61\\x98\\xc8\\x13\\x9e\\x9c\\x3e\\x1e\\x40\\x99\\x37\\xd1\\xa8\\x58\\xa0\\xde\\xa4\\x82\\xa5\\xcb\\x1a\\x85\\x4e\\xd3\\xb5\\xa9\\x39\\x7a\\xcb\\x63\\xbf\\xf6\\xb6\\x40\\x39\\xef\\x2e\\xb1\\x15\\x9e\\x99\\x85\\x83\\x10\\xbb\\xbd\\x86\\x12\\x5c\\x3e\\x0e\"},\n{{0x18,0xd1,0x3d,0x0c,0x00,0xe8,0xe3,0x38,0x6a,0x5c,0xfb,0x30,0xa9,0xe7,0x9f,0xe8,0x8b,0x18,0x61,0xed,0x2d,0x12,0x01,0xeb,0x17,0x00,0x38,0xe1,0x94,0x77,0x04,0x03,},{0xa4,0xaf,0xc8,0x33,0x40,0x18,0x76,0x09,0x0d,0x9b,0x88,0x0c,0x41,0x26,0x7d,0x68,0xcb,0xbe,0xea,0xa3,0x8a,0xfb,0x20,0x88,0x4e,0x27,0x32,0x8f,0x3b,0x7f,0x53,0x5e,},{0x03,0x39,0x88,0x15,0x4c,0x5d,0x79,0xd2,0x51,0x0b,0xe8,0x3e,0x77,0x80,0x15,0xdf,0xe2,0xfb,0x85,0xb8,0x11,0x1f,0x7e,0xc1,0x39,0x91,0x8b,0x54,0x00,0xe3,0xd6,0x56,0xee,0x80,0xa9,0xf5,0xc9,0x07,0x2b,0x5b,0x46,0x7a,0x5c,0xc5,0xa5,0x7c,0xc8,0xad,0x10,0x62,0xb5,0xbf,0xf1,0x08,0x62,0xd9,0xd3,0x69,0xdd,0xe2,0xcc,0x96,0x67,0x01,},\"\\x91\\x0f\\x6c\\x27\\x2d\\xd9\\x79\\x31\\xac\\x47\\x31\\x0d\\x24\\x4c\\xad\\xb4\\x32\\x51\\x36\\x5e\\x02\\xba\\x9f\\x6a\\x5b\\x3c\\x32\\x26\\xbe\\x9d\\x7d\\x3a\\x74\\xa2\\xba\\x49\\x06\\xe8\\xe7\\x1a\\x4b\\xf3\\xd3\\x55\\x6e\\xbd\\xfc\\x66\\x6c\\xd6\\xb1\\x2f\\x20\\xc4\\xa0\\x08\\x34\\xb8\\x8f\\xbb\\x24\\x45\\x75\\x19\\x92\\x86\\xb0\\xb9\\x34\\x4c\\xf3\\x34\\xaf\\xf0\\x07\"},\n{{0x4a,0xdc,0x8c,0x28,0x64,0x6a,0x93,0xa8,0x17,0x29,0x3a,0x14,0xd2,0x9b,0x48,0xe2,0xc6,0xd7,0x12,0xa6,0x89,0x93,0x54,0x7a,0x5c,0x5e,0x4d,0x14,0x52,0xac,0xbc,0x3a,},{0x7f,0x40,0x47,0x36,0x28,0xf2,0x3f,0xc0,0xdf,0xf0,0x02,0x1a,0xfd,0x48,0x77,0x40,0xd4,0x91,0x6a,0x91,0x22,0xe6,0xc9,0x7d,0x36,0x43,0x3e,0x5e,0xbf,0x04,0xf8,0x8c,},{0x6d,0x3b,0x4e,0x90,0xec,0x40,0x83,0x11,0xf9,0xb1,0x5b,0x92,0x53,0xd3,0xd9,0x5c,0x5d,0x15,0x26,0x20,0xc2,0x60,0xd5,0x63,0x02,0x55,0x5a,0x88,0x04,0xa5,0x10,0x4b,0xa5,0xe8,0xd2,0x9e,0xe1,0x08,0xe7,0x64,0xa6,0x42,0x19,0x29,0x72,0x98,0xab,0x76,0x74,0xbb,0xca,0x78,0x4d,0xee,0x28,0x77,0x3b,0x34,0xe1,0x85,0xa3,0x86,0xc2,0x08,},\"\\x09\\xfb\\x55\\x01\\xf1\\x68\\x8f\\x80\\xa0\\xab\\x9e\\x22\\xd7\\x78\\xae\\x13\\x0a\\xca\\xf7\\x4d\\x7f\\x51\\x85\\xb4\\xda\\x19\\x8c\\x6b\\x9e\\xda\\xc4\\x30\\x2e\\x2b\\x75\\x3e\\x57\\x87\\x66\\xe1\\x7d\\x40\\x56\\xdc\\x40\\xd9\\x5c\\xf4\\xca\\x8b\\xcc\\x65\\x65\\x79\\x5e\\x97\\xd6\\x8b\\xcd\\xa7\\x9f\\xa7\\x7c\\x49\\x33\\x97\\x71\\x63\\x56\\x16\\x4c\\xaa\\xb5\\xd1\\x9c\\xfd\"},\n{{0xf2,0x6e,0x1c,0x84,0x69,0x7a,0x49,0x08,0x15,0x1b,0x44,0x7d,0xcf,0x6c,0x7c,0x7a,0x38,0xb0,0x40,0x81,0xdb,0x9e,0x7c,0x77,0x38,0xe6,0xfe,0xc9,0x00,0xbe,0xd0,0xc1,},{0xa8,0x6e,0x14,0x22,0xc1,0x23,0x5f,0xf8,0xe1,0xaa,0x08,0x34,0x70,0xd5,0xe4,0x22,0x88,0xcb,0x00,0x7a,0xb5,0x0e,0x79,0x5d,0xd0,0xb4,0xff,0x87,0x39,0x49,0x66,0xc4,},{0x44,0xf3,0x34,0x4b,0x95,0x66,0xc9,0xdf,0xd2,0x2d,0x61,0x98,0xe1,0xcb,0xf9,0x5d,0x9e,0x28,0xf2,0x98,0x2f,0xc7,0xf1,0x66,0xab,0x25,0xdd,0xa3,0x0c,0x46,0xf7,0x68,0xc5,0x58,0xe0,0x39,0x4f,0xb9,0xab,0x3e,0x1d,0x4d,0xb4,0xcf,0x48,0x7c,0x17,0x64,0x1a,0x13,0xf3,0xf4,0x89,0x39,0xe0,0xc6,0x48,0x27,0xa7,0x51,0x03,0xc5,0x74,0x06,},\"\\x54\\xed\\x47\\x60\\x6a\\x14\\x87\\xc2\\xf9\\x00\\xce\\xfb\\x6e\\x89\\x9d\\xba\\xf6\\xc3\\x1c\\xc8\\x8e\\xbe\\x35\\x58\\xb8\\x3b\\x93\\xf6\\xd4\\x22\\xc3\\x1e\\x88\\x8e\\x48\\xe5\\x20\\xee\\xae\\xdd\\x7e\\x55\\x4a\\x9c\\xd4\\x0c\\x2c\\x51\\x9d\\x53\\x3b\\x61\\x44\\xce\\xe4\\x84\\xc3\\x89\\xe9\\x76\\xb1\\xe4\\x02\\x2b\\x50\\xe7\\xdb\\xb8\\x7e\\xad\\x7e\\x54\\x1a\\x20\\x04\\xda\\xf7\"},\n{{0xcc,0x0c,0x33,0xf3,0xa8,0x6f,0x5a,0x17,0xd3,0x0c,0x18,0x6c,0xe0,0xf3,0xb7,0x40,0xba,0xfa,0x5f,0xe3,0xc7,0x09,0x0f,0x14,0x35,0x41,0xe2,0xb2,0xc1,0xe5,0x34,0xbc,},{0x96,0x7a,0x71,0xc7,0xcf,0x9b,0x82,0xcc,0x78,0xcb,0xe1,0x09,0x10,0x4d,0x8b,0x43,0x8a,0x8d,0x1f,0xd7,0x1d,0x26,0x0d,0x02,0x90,0x46,0xa9,0xa4,0x52,0x68,0x66,0xff,},{0xe2,0x77,0xb3,0xdd,0x65,0x5c,0x33,0xff,0x75,0xfa,0x92,0x0a,0xf1,0xfc,0xc8,0x59,0x40,0x1e,0x6c,0x7a,0x6e,0xf4,0xc6,0xbf,0xbf,0xac,0x50,0x69,0x63,0x8f,0x19,0xca,0x11,0x5b,0xaf,0x13,0xc0,0x9c,0x82,0xaf,0x79,0x3f,0xac,0xb6,0xab,0xd0,0xcd,0x58,0xe8,0x48,0x1b,0x08,0xc1,0xb6,0x8a,0xd7,0xa2,0x66,0x5c,0x4a,0x61,0x4a,0x28,0x06,},\"\\x19\\x44\\xe5\\xe1\\x55\\xd7\\x5e\\x0d\\x0b\\xe9\\x2e\\x1b\\xe1\\x4c\\xec\\x37\\x0a\\xd1\\x37\\x91\\xf2\\xbf\\xd4\\x0f\\x27\\x12\\x14\\xe9\\x4f\\xcf\\x21\\x3c\\x71\\xbc\\x20\\xd7\\xce\\x0c\\x75\\x84\\x42\\x1a\\xc4\\xef\\xc4\\x51\\x88\\x3c\\xc3\\xf4\\x95\\x6f\\x21\\xf7\\x3a\\x42\\x16\\x72\\x04\\x38\\xbc\\x38\\xff\\x2c\\xfd\\xf3\\x70\\x99\\x05\\xa5\\x0a\\x9d\\x94\\xb1\\xd9\\xe7\\x93\\x2b\"},\n{{0xf0,0xbc,0x97,0x93,0x75,0xa7,0x07,0x30,0x68,0xdb,0xa7,0xf6,0xc0,0x94,0xdb,0x65,0x98,0xb4,0xe4,0x5d,0xf7,0xd5,0x49,0x58,0x3c,0x22,0xfd,0xed,0x80,0x48,0xfa,0x2e,},{0xb4,0x2b,0x6c,0x57,0xa7,0x8f,0x1d,0x90,0x09,0x0a,0x71,0x81,0xab,0x2a,0xe0,0x9f,0x42,0x6c,0xbc,0x2b,0xe9,0x6e,0xb2,0xcf,0x27,0xab,0xc7,0x0d,0x7d,0x32,0xa4,0xb3,},{0x19,0xdb,0xc3,0x02,0x7f,0x9f,0xae,0x70,0x7d,0xeb,0x76,0xf5,0x88,0xf9,0xfd,0x07,0xaa,0x8e,0xae,0x29,0xbd,0x4e,0x1d,0x04,0xc2,0xc9,0x84,0x38,0x82,0x86,0xb3,0xb1,0x22,0x24,0x8a,0x6c,0x03,0xed,0x67,0xec,0xa3,0x5d,0xf4,0xdb,0x3d,0xc1,0xe4,0x23,0x7f,0x26,0x78,0x92,0x51,0x84,0x97,0xd9,0x55,0x2a,0x21,0xde,0x19,0xb5,0x14,0x0f,},\"\\x27\\xab\\x30\\x49\\xb5\\xc6\\x35\\x1f\\x6c\\xfe\\x38\\xb1\\x3a\\x05\\x9f\\x50\\x37\\x25\\x7e\\xe3\\xd6\\x5d\\x60\\x79\\x65\\x68\\x56\\xed\\xc8\\x76\\xea\\x08\\x1f\\xd8\\xa9\\x48\\x04\\x66\\xf8\\x83\\x94\\x78\\x08\\x84\\x66\\xf5\\x1e\\xcb\\xfa\\xf2\\xd6\\x5d\\xef\\x25\\xf0\\xc4\\xdd\\x8d\\x08\\x58\\x82\\x02\\x81\\x22\\x32\\xf5\\x79\\x45\\xdf\\x8a\\x6f\\xa1\\x61\\xed\\x8c\\x03\\x43\\xb5\\x83\"},\n{{0x30,0x22,0x97,0x5f,0x29,0x8c,0x0a,0xd5,0xdd,0xbe,0x90,0x95,0x4f,0x20,0xe6,0x3a,0xe0,0xc0,0xd2,0x70,0x4c,0xf1,0x3c,0x22,0x1f,0x5b,0x37,0x20,0xaf,0x4d,0xba,0x32,},{0xb8,0x45,0xbc,0xe3,0x8e,0x26,0xab,0x02,0x7b,0x82,0x47,0x46,0x3d,0x43,0x7a,0x71,0xbb,0xdd,0xca,0x2a,0x23,0x81,0xd8,0x1f,0xad,0x4c,0x29,0x7d,0xf9,0x14,0x0b,0xd5,},{0xae,0x14,0xa8,0x60,0xfa,0xd0,0x05,0x1b,0x3e,0xb7,0x2b,0x37,0x21,0xa8,0x2f,0x7b,0x95,0x46,0xb2,0x86,0x72,0x61,0xe2,0xb7,0xb6,0x38,0x97,0x9e,0x25,0x61,0xbd,0xeb,0x89,0xb6,0x00,0x76,0x8f,0x82,0x45,0x0a,0x66,0xc8,0xb0,0x48,0x12,0x83,0xfa,0x21,0xcb,0x6c,0x53,0xbd,0xe3,0x50,0xef,0xfb,0x68,0xa7,0xd1,0x11,0x4b,0xfd,0xb2,0x03,},\"\\x9a\\xa1\\x9a\\x59\\x5d\\x98\\x93\\x78\\xcd\\xc0\\x68\\x91\\x88\\x7e\\xf5\\xf9\\xc2\\x46\\xe5\\xf8\\x3c\\x0b\\x65\\x87\\x10\\x67\\x3e\\x4e\\x7d\\xb7\\x60\\xc7\\x63\\x54\\xc4\\xf5\\xd1\\xe9\\x0d\\xb0\\x4a\\x23\\xb4\\xfb\\x43\\x4c\\x69\\x38\\x45\\x93\\xd0\\x10\\xe3\\x12\\xb1\\x1d\\x29\\x9c\\x9f\\x97\\x48\\x2d\\xe8\\x87\\xce\\xcf\\xe8\\x2e\\xa7\\x23\\xbc\\xa7\\x9a\\x1b\\xd6\\x4d\\x03\\xef\\x19\\xee\"},\n{{0x0f,0x71,0x0b,0x6c,0x48,0x1f,0x71,0x44,0x95,0x89,0x75,0x33,0x12,0xef,0x64,0x93,0x2b,0x46,0x52,0xeb,0xe0,0xe0,0x75,0x97,0xf7,0xda,0x1c,0x4f,0x3d,0xcf,0xfb,0x80,},{0x69,0x73,0xff,0x29,0x32,0xcc,0xdd,0xfc,0x1d,0x16,0xc4,0xc0,0xda,0x50,0xc8,0xb2,0x9f,0xe6,0x45,0x2d,0x1e,0xe8,0x4d,0x52,0x06,0x4e,0xbf,0x3d,0x62,0x8d,0x40,0x3e,},{0x02,0xa8,0xd2,0x6a,0xee,0x11,0x42,0x0f,0xb4,0xf0,0x9d,0x11,0x63,0xe1,0x4b,0x86,0x7d,0xf7,0xc6,0xf6,0xc8,0xf8,0xdc,0x7a,0x78,0x03,0x46,0x59,0xf0,0x40,0x1c,0xad,0x0a,0xa9,0x03,0x97,0xef,0xdd,0x07,0x04,0xb7,0x98,0xdb,0x19,0x36,0x50,0x30,0x26,0xe2,0xa1,0xad,0xc2,0x97,0xe2,0x79,0x74,0xd4,0xbe,0x31,0x2a,0x37,0x53,0xf8,0x04,},\"\\x85\\xd8\\x57\\x44\\xad\\x55\\xe9\\xef\\x9a\\x65\\xca\\x91\\xe8\\x5c\\x8a\\x4f\\x80\\xe4\\xc5\\x8f\\x8e\\x4e\\x93\\x54\\xe8\\x33\\x98\\x60\\x98\\xb7\\xd9\\xfe\\x9f\\xdc\\x0d\\xed\\xb0\\xd7\\x5d\\x25\\x39\\xfb\\xa0\\x00\\x34\\xfc\\x0c\\x2e\\x84\\x34\\x4d\\x1e\\xda\\xa0\\x9d\\x4f\\x63\\xd5\\x54\\x6d\\x67\\x80\\x3d\\xd6\\xb5\\x4d\\xdc\\xc0\\xb1\\xd3\\xf2\\x58\\x2d\\xd7\\x52\\x89\\xe3\\x1d\\xe4\\x2e\\x69\"},\n{{0x7a,0x05,0xf1,0x21,0xf6,0x01,0x12,0xdd,0x16,0xfe,0xe8,0xc9,0x1b,0xc2,0xa1,0x14,0x79,0xf4,0xb6,0x7e,0xe3,0x34,0x56,0x04,0x2c,0x8d,0xe1,0x67,0xfc,0x58,0x80,0x17,},{0xb3,0xb0,0x5b,0xe9,0x89,0xce,0xa7,0x19,0x75,0x05,0xd4,0xb5,0x43,0x35,0xe5,0xe1,0xd7,0x7a,0x4b,0x52,0xba,0x72,0x82,0x60,0x4b,0xbc,0x1c,0xf6,0xc4,0xe8,0x7a,0x6c,},{0xd3,0x0c,0xe8,0xa3,0x22,0xb4,0x50,0xa2,0xfb,0x1a,0xfd,0x32,0x9c,0xec,0x85,0x59,0xcc,0xf1,0x12,0xbd,0x83,0x96,0x5f,0x9e,0xc4,0x73,0x62,0x70,0xa0,0x91,0x4e,0x06,0x11,0x96,0xbf,0x52,0x09,0x77,0x8c,0x9f,0x8c,0xcf,0x39,0xc4,0x66,0x8b,0xbf,0x0e,0x13,0x63,0xf8,0x1a,0xfe,0x45,0xdd,0x74,0xe8,0x0d,0x58,0x75,0xdd,0xbf,0x6f,0x01,},\"\\xd9\\xc5\\x9e\\x8c\\xc4\\xed\\xe5\\x37\\xbe\\x21\\x22\\xab\\x49\\x2a\\x5b\\x91\\x5a\\x9b\\x0a\\x11\\x4b\\x2a\\xde\\x35\\x6f\\xc0\\x45\\x7e\\xf9\\x87\\x22\\xd5\\xf5\\x67\\xb8\\x62\\x11\\xe2\\x83\\x69\\xd1\\x41\\x68\\xec\\x4a\\x3c\\x80\\x40\\x76\\xe1\\x54\\xad\\xc7\\x0a\\x66\\x8c\\xf6\\x4a\\x20\\xd1\\x3c\\xf1\\x90\\xd1\\x15\\xcd\\x68\\x8d\\x03\\x6e\\x46\\x93\\x82\\x51\\xdf\\x49\\x64\\xdc\\x35\\x17\\xb1\\x0c\"},\n{{0xbf,0x38,0x1f,0x8d,0xfb,0x5d,0x0c,0x6d,0x64,0xe4,0x16,0xac,0x23,0xe0,0xd0,0xfc,0xb8,0x6e,0xbb,0x89,0x9b,0x1d,0x14,0x6a,0xbd,0x91,0x1b,0x92,0xa7,0x80,0x8e,0xb6,},{0x86,0x3f,0xad,0x8d,0x1f,0x1b,0xc6,0x30,0xa1,0x5f,0x6f,0xe8,0xec,0xef,0xe6,0xb4,0x49,0x7b,0x60,0xb2,0x1a,0xe8,0x83,0x0d,0xa4,0x67,0x42,0x04,0x5f,0xef,0x15,0x6f,},{0x99,0xb7,0x53,0x78,0x73,0x8f,0xca,0xc8,0x06,0x76,0x69,0xe8,0x50,0x9b,0x5d,0x26,0x07,0xe1,0xef,0x76,0xaf,0x90,0x04,0xe1,0x3f,0xe5,0xd3,0x93,0x2d,0xf6,0x0b,0x16,0x82,0x16,0xf5,0x85,0x65,0x34,0x0f,0xa4,0xd6,0x38,0x05,0x5a,0x89,0x04,0x4e,0xe7,0xd4,0x5e,0x2b,0xd0,0x82,0xa5,0x33,0x82,0x28,0x9a,0x34,0x70,0x06,0x48,0x98,0x0e,},\"\\x86\\x54\\xf2\\xf5\\xc6\\xdc\\xd2\\xcf\\xcb\\xb6\\xed\\x8d\\x2b\\xc5\\xfb\\x5f\\xec\\x53\\xe3\\xef\\xfb\\x0d\\xe6\\x5a\\xac\\x50\\x7f\\xa5\\x6c\\x89\\x77\\x32\\x39\\x5a\\xa0\\x99\\x46\\xd3\\xb6\\x58\\x6a\\x92\\xed\\xd6\\xdc\\x99\\x31\\x5e\\x1b\\xa7\\x4c\\x6a\\x02\\x47\\xc4\\xba\\x77\\x60\\xb9\\x48\\xeb\\x3c\\x09\\x32\\xd9\\xfe\\x1f\\x0e\\x9f\\xea\\x6e\\xb6\\x1a\\x54\\x8a\\x9a\\xb4\\x8f\\xfd\\xf1\\x54\\x73\\x29\"},\n{{0x36,0x98,0x32,0x41,0xa0,0xa8,0xe6,0x0c,0xe0,0x2a,0x61,0xb3,0xfa,0xfa,0xb1,0x5a,0x73,0x13,0xa5,0xa2,0x70,0xd0,0x15,0xb9,0xc9,0xec,0x07,0x0d,0xc4,0x2d,0xee,0xda,},{0x66,0x47,0x98,0x4d,0x42,0xb9,0xa5,0xb3,0xb1,0xaf,0xa3,0xb7,0xf8,0xf4,0x9d,0x4c,0x2b,0x05,0xe3,0x89,0x84,0xe9,0x9c,0xea,0x8f,0xd6,0x82,0x35,0xd2,0xae,0x46,0x27,},{0xee,0x37,0xdf,0x8a,0xf4,0x22,0xf9,0x1f,0x85,0xdf,0xe4,0x3e,0xfe,0x79,0xf6,0x23,0x78,0x06,0x8c,0xcd,0xba,0xf3,0x91,0x6e,0xec,0xbc,0x3a,0xdf,0xed,0x05,0x08,0xbd,0xeb,0xaf,0x5c,0xe0,0x6b,0x3b,0xc2,0x79,0xf7,0x80,0x87,0xf0,0xdb,0x8d,0xb3,0xc6,0x82,0x3e,0xdf,0xb3,0x2c,0x12,0x21,0x78,0x30,0xbe,0x72,0x3d,0x88,0x72,0xb3,0x0c,},\"\\xce\\xbb\\x9e\\x40\\x44\\x51\\x81\\x82\\x53\\xc0\\x39\\x2a\\x45\\x54\\xee\\x73\\x23\\xc5\\xd5\\xb8\\xb2\\x26\\x77\\x57\\x00\\xb8\\x06\\xed\\x5b\\x91\\x33\\x79\\x16\\xea\\x7e\\xcb\\xc3\\xd4\\x10\\x3f\\xc6\\x5e\\x53\\x72\\xae\\x7e\\x5f\\x9b\\xa2\\xd8\\xf5\\xae\\xe2\\x4c\\xcf\\x6e\\x63\\x1a\\xe2\\x0c\\x4a\\xf9\\xb5\\xf7\\x28\\xcd\\xf8\\x9e\\x81\\x89\\xde\\xf1\\xa5\\xb3\\xd3\\x53\\x47\\xaa\\x20\\x35\\x25\\xea\\x1d\\x2e\"},\n{{0xd0,0x68,0x99,0xf9,0x3a,0x40,0x8d,0xac,0xb4,0x1c,0x96,0x97,0x18,0x34,0x6f,0x1e,0x28,0x9b,0xb5,0xea,0x65,0xe2,0x83,0xff,0x79,0xc7,0x05,0xa0,0x74,0x51,0x7c,0x35,},{0x46,0xbf,0x2a,0x08,0xa0,0x76,0xc4,0x7d,0x7f,0x11,0xb7,0x33,0xf8,0x14,0x1c,0x35,0x53,0x63,0xed,0x85,0xd7,0xde,0xf2,0x6b,0xa6,0xa0,0xce,0x15,0xac,0x5f,0x2b,0xe8,},{0x6f,0x89,0xde,0x92,0xa6,0x6b,0xc5,0xf4,0x14,0x43,0x39,0x12,0x49,0x50,0xbd,0xf5,0x88,0x14,0x4c,0xb3,0x72,0xf6,0x73,0x62,0x45,0x35,0x1c,0x94,0x76,0xbe,0xcc,0x59,0xa2,0x58,0xf9,0xa9,0x33,0xff,0xff,0x2b,0xef,0x4b,0x46,0xcd,0x10,0x57,0x39,0x52,0x25,0x79,0x9f,0xd0,0x9d,0xed,0xe6,0x82,0x3d,0xb0,0xe3,0x25,0xdb,0xc8,0x14,0x0d,},\"\\x08\\x64\\xc3\\x9a\\xc4\\xfd\\xa8\\xeb\\x90\\x48\\x59\\x7b\\xd4\\x0b\\xe0\\x40\\x10\\x21\\xfd\\x2d\\xd3\\xa3\\x39\\x0a\\x8f\\xac\\xce\\x98\\x4b\\x26\\x0a\\x13\\xfa\\x2c\\x7c\\xfc\\x00\\xd1\\x92\\xfa\\xdf\\x13\\x4a\\x0a\\xd5\\xa1\\x81\\xee\\x89\\xef\\xf0\\xc7\\x95\\xea\\xa0\\xfb\\xfe\\x2f\\x3b\\x26\\x11\\x5d\\x07\\x16\\x8d\\xb4\\x2e\\xd2\\x1a\\x51\\x30\\x3b\\x19\\x58\\xe4\\xa4\\x2d\\xc0\\x65\\xb2\\x2c\\xe4\\x8f\\x17\\xa6\"},\n{{0xee,0xbc,0xa7,0x96,0x69,0x70,0xee,0x9f,0x2c,0xc4,0xd7,0x4c,0x6f,0x1d,0x8e,0x0e,0xbf,0xf7,0xc4,0x5a,0xeb,0xad,0x34,0x9f,0xb9,0xf8,0x6d,0xf6,0x28,0xdf,0xff,0x0e,},{0x89,0x10,0x1e,0x03,0x09,0xf7,0x67,0xe6,0x4a,0xe9,0xc9,0x8c,0x4a,0x5d,0x8d,0x23,0x28,0xfb,0x3e,0xf2,0x62,0xd0,0x82,0xf4,0x9b,0x64,0xca,0x20,0x9e,0x19,0x90,0xf6,},{0x7d,0x44,0x7e,0xe5,0x32,0x8c,0x9f,0xe7,0xf1,0x19,0x36,0xcc,0x42,0x99,0x87,0x54,0xa5,0x6c,0xd1,0xd2,0xa6,0x95,0x1a,0xf4,0xfe,0xe7,0xc4,0xa8,0xeb,0x31,0x9d,0x49,0x23,0x70,0x7c,0x79,0x3c,0x55,0xd7,0x90,0x67,0xf8,0x22,0xd5,0xb1,0x6b,0xb5,0x77,0x6e,0x38,0xdf,0xfa,0xbc,0x67,0x23,0x7a,0x91,0x6a,0x81,0xa6,0x33,0x39,0xb0,0x03,},\"\\x0f\\xac\\x79\\x0a\\xdb\\x9f\\x59\\xe5\\xcb\\x0d\\xdc\\xb2\\xb6\\x67\\x17\\x2f\\x2a\\x21\\x03\\x4d\\x93\\xbc\\xad\\xdf\\x18\\x86\\x06\\xfa\\x9e\\x77\\x6d\\xb3\\x3a\\x8f\\xcc\\x6b\\xd7\\xf5\\x56\\x78\\x83\\xfc\\x0d\\xe3\\x51\\xaa\\x9a\\xfa\\xa3\\x6d\\x20\\x75\\xb1\\xba\\x85\\x3b\\xad\\xa8\\x49\\xb8\\x66\\x1d\\x5c\\x81\\x54\\xe7\\xb0\\xaf\\xea\\x65\\x6d\\xd1\\x5e\\x01\\xa9\\xc5\\xba\\x21\\x58\\x9b\\x02\\xf8\\xfc\\x54\\x81\\xc2\"},\n{{0x38,0x20,0xb6,0xb1,0x59,0x39,0xd0,0xaf,0xe1,0x8c,0x9c,0xb3,0xd9,0xa2,0xa0,0x8f,0x16,0x7d,0xd4,0x58,0xeb,0x6c,0x7e,0x3f,0x15,0x58,0xb0,0xc6,0xdb,0x4c,0x68,0x90,},{0x80,0xb8,0x5c,0x65,0x59,0xfe,0xa8,0xb4,0x00,0xe1,0x99,0x9c,0xc5,0xbf,0xed,0x50,0x7a,0xd7,0xfc,0x29,0x4c,0xd9,0xba,0x0c,0xe2,0xdd,0x25,0x84,0xa9,0x10,0x89,0xb0,},{0x82,0x3e,0xe2,0xc0,0xc8,0xd8,0x7f,0xaa,0x0e,0xc0,0x14,0x1e,0x9c,0xe0,0x8b,0x51,0xe5,0x7c,0x83,0x97,0x92,0xd1,0xfb,0xd9,0x7a,0x96,0x72,0x07,0xfd,0x41,0x58,0x49,0xeb,0xfb,0x5d,0xad,0xb5,0xa1,0xdc,0x2c,0x0a,0x8b,0x7f,0xc6,0x3f,0xc3,0x54,0x85,0x7b,0x8c,0x90,0xc4,0x47,0x20,0xe1,0x3f,0x45,0xcd,0x01,0xe7,0xaa,0x23,0x14,0x0c,},\"\\x3e\\x5a\\xd9\\x2d\\x44\\xb4\\x0e\\x86\\x14\\xd8\\x08\\x7c\\x9c\\x74\\x3d\\xe0\\xc0\\x86\\x1a\\x07\\xf1\\xf5\\x14\\x6d\\x71\\xca\\xc2\\xf3\\x74\\x00\\x24\\xe8\\x41\\xcc\\x2d\\x46\\x02\\x7c\\xf5\\xd2\\x61\\xd3\\xee\\x7c\\x18\\x75\\xb3\\x95\\x51\\x01\\x7b\\x5f\\xb1\\x46\\x81\\x14\\xfc\\x3e\\x09\\x8a\\x89\\x9c\\xdb\\xd5\\x58\\xb3\\x9f\\x09\\x8e\\x15\\x6b\\x6e\\x98\\x01\\xeb\\xcd\\xd6\\x5f\\xed\\x56\\xdb\\xfc\\xaf\\x2c\\x8c\\x78\\x7b\"},\n{{0x0d,0x20,0xfa,0x4a,0x37,0xff,0x30,0xc4,0xdc,0xc3,0xe4,0x4e,0xa7,0xac,0x50,0x11,0x37,0xe5,0x80,0x7e,0x97,0x81,0x33,0x0a,0xc3,0x10,0x98,0x2c,0xc3,0xd3,0x9d,0xbd,},{0x67,0xbb,0x0a,0x01,0xbc,0x86,0x17,0xb4,0x91,0xef,0xf1,0xa3,0x26,0xc1,0xc7,0x0f,0x7d,0x0c,0x5b,0x95,0xa5,0xad,0x48,0x24,0x1a,0xed,0xce,0x1c,0x6f,0x08,0x83,0xcf,},{0xde,0xab,0x12,0xed,0x82,0xba,0x94,0xb4,0x69,0xca,0x98,0xb6,0x6f,0xa2,0x04,0x44,0xb4,0xb7,0x88,0x1c,0x4f,0x0f,0x85,0x34,0x09,0xc9,0xa1,0x50,0x4a,0x5b,0x2b,0x6d,0x78,0x60,0xf2,0x6a,0xda,0x6b,0xf7,0x34,0x59,0xb9,0xcd,0xb5,0x73,0xc8,0x01,0x71,0x21,0x33,0x8e,0xfa,0x60,0xf4,0x14,0x80,0x86,0xd7,0xa3,0xa8,0xed,0x59,0xbb,0x07,},\"\\x35\\xe0\\xf4\\xb4\\xa5\\x17\\xf9\\xc7\\xaa\\x45\\x14\\xf0\\x3e\\x6d\\x65\\xf1\\x9b\\x27\\xc6\\x2c\\xc0\\x69\\xf6\\xbf\\x07\\xdd\\x63\\x78\\xbd\\x6a\\xfe\\x2b\\x76\\x65\\x60\\x00\\x6c\\xbd\\x57\\x30\\xa0\\x09\\x19\\xed\\x11\\x19\\x1f\\xb0\\xc8\\xda\\xc5\\x6e\\x15\\x3f\\xc1\\xce\\xa4\\xbd\\xce\\x50\\x46\\xcc\\xcb\\x71\\x77\\x59\\xa4\\x08\\x3e\\x1c\\x16\\xf7\\x40\\x76\\x32\\x64\\xcc\\x80\\x4d\\xe0\\xd0\\xe1\\xa4\\xb5\\xa2\\x30\\x67\\xaf\"},\n{{0xbe,0xe1,0x61,0x88,0x1d,0x81,0x9b,0x37,0x0d,0x24,0x0d,0x50,0x9b,0xa4,0x6b,0x06,0xfb,0x82,0x8e,0x20,0x31,0x0d,0x9f,0x6b,0x30,0x97,0x80,0x70,0x3e,0x98,0x92,0x7b,},{0x10,0x85,0x43,0x80,0xde,0x89,0x16,0x2b,0xfb,0x9f,0x78,0x35,0xa2,0x71,0x6a,0x3a,0x6e,0x02,0x65,0x67,0x1b,0x25,0x0b,0x38,0x9d,0x01,0xc3,0xbc,0xc0,0x37,0x36,0xb8,},{0xb0,0x7d,0x07,0x2e,0xb3,0x83,0x1f,0xae,0x8a,0x06,0xef,0xfa,0x92,0x01,0x79,0x74,0x96,0xdc,0xe1,0x26,0xb8,0xe1,0x1f,0xef,0x2f,0xa0,0x7f,0x66,0x4d,0xc5,0xcf,0x3d,0x4b,0xf9,0xc3,0x8a,0x8b,0x3c,0x09,0xfb,0x5f,0x14,0xfa,0x2d,0xeb,0x21,0x9e,0x7d,0x85,0x2f,0xdd,0x27,0xc7,0xba,0x32,0xd3,0x09,0x94,0x2f,0x27,0x46,0xdf,0xe4,0x04,},\"\\x5a\\x6f\\xe5\\x99\\xb6\\xb0\\x9b\\x05\\xc0\\xba\\x6a\\x62\\x2d\\xf3\\xa9\\x2b\\x3d\\x37\\x6d\\x24\\xd0\\x4e\\xa8\\x5e\\xbe\\x76\\x7b\\xc2\\xec\\x4d\\x14\\xe8\\x3e\\x69\\x37\\xdc\\x0b\\x91\\x4b\\x48\\x09\\xfd\\xb6\\x07\\x90\\x68\\x41\\xa6\\xfd\\x1d\\xcd\\xf6\\x1a\\xae\\xa8\\xf9\\xbb\\x81\\xb2\\xcc\\xaa\\x32\\xdf\\x41\\x29\\x89\\xae\\x53\\x64\\x66\\x80\\xa7\\x1a\\x21\\x1c\\x84\\x40\\xea\\xb0\\xf1\\xae\\xc5\\xe4\\xfc\\x00\\xe6\\xa2\\xc9\\x6d\"},\n{{0x70,0x15,0x0e,0x95,0x16,0x16,0x4a,0x3d,0x7b,0x7e,0x8b,0x6f,0x25,0x5b,0x65,0xca,0xc9,0xf0,0x74,0x59,0xb3,0x2d,0x11,0xbb,0x94,0xb3,0xd2,0x77,0x20,0x8a,0xbc,0x99,},{0x23,0x28,0xbe,0xc8,0xe4,0x03,0x51,0x04,0x78,0x82,0xe8,0xb4,0x3b,0xc1,0xab,0x08,0x53,0x86,0xfa,0x47,0x98,0x7e,0x46,0xea,0x87,0x60,0x88,0x14,0xc5,0xda,0x71,0x3c,},{0xed,0xa3,0xf5,0x03,0x3e,0xa7,0x95,0x3a,0x0d,0x58,0x3c,0x64,0x57,0x52,0x2e,0x84,0xad,0x78,0x44,0x53,0x04,0xd4,0x8e,0x57,0x7d,0x4d,0x69,0xe8,0x64,0x1f,0xeb,0xe1,0x52,0x48,0xd8,0xd9,0x0c,0xe0,0x94,0x4a,0x8f,0x80,0x1d,0x39,0x09,0x9b,0xc7,0x74,0x94,0xba,0xc4,0xce,0x2a,0x20,0xb3,0x83,0x69,0xc6,0xad,0xfb,0x71,0xe0,0x3d,0x0f,},\"\\x77\\xbe\\x8e\\xce\\xaa\\xb4\\x31\\xa1\\x3c\\x2a\\x28\\xd0\\xd1\\x55\\x64\\x89\\xd8\\xc3\\x92\\xfd\\x7a\\xe4\\x11\\x57\\xf7\\xca\\xf0\\x82\\xcb\\x54\\xe4\\x5f\\x08\\x62\\x6b\\xe0\\x07\\x6b\\xe8\\x44\\xd3\\x8f\\xde\\x90\\x1a\\x5e\\xab\\x0e\\x88\\x32\\xd6\\x9d\\xac\\x22\\xfb\\x85\\x07\\xfb\\x8e\\xc4\\xfa\\xf7\\xc8\\x8f\\xd2\\x6d\\xa3\\x08\\x46\\x1a\\xfe\\x38\\x59\\x87\\x97\\x2b\\x5e\\x76\\x0a\\x34\\xa5\\xe1\\x8b\\x9a\\x82\\xb4\\xaa\\xa5\\x29\\xb7\"},\n{{0x3f,0x87,0xfc,0xfd,0xb4,0x21,0x42,0x2a,0x9c,0x5f,0xb9,0x82,0x68,0x31,0x3c,0x15,0x12,0x8c,0x78,0x84,0x4e,0xf9,0xeb,0x3b,0x37,0x13,0xfa,0x77,0xb6,0x71,0x89,0x03,},{0x53,0x3e,0xc5,0x92,0x28,0x37,0x4b,0xd0,0x3a,0x46,0x99,0xe3,0xa8,0x89,0x6b,0x86,0x18,0x2f,0xcf,0x8f,0xc3,0x08,0x5f,0xdb,0x8f,0x5c,0x46,0x71,0x52,0x4d,0x6f,0xe0,},{0xf6,0x51,0x9d,0x7e,0xdb,0x61,0x34,0x11,0x19,0x74,0x03,0x3f,0x03,0xb8,0xd8,0x9e,0x9c,0x76,0xca,0xec,0x89,0x65,0xa8,0xe1,0x7c,0xd4,0x5f,0xff,0x19,0xde,0x26,0x15,0xd7,0x3e,0xcc,0xdb,0x4a,0x66,0x64,0xa8,0xf0,0xe2,0x3a,0xdf,0x98,0x98,0x8e,0x96,0x25,0x1b,0xf2,0x6e,0xb7,0xa4,0xcc,0xaa,0xc1,0x07,0x9f,0x0a,0x77,0x2f,0x9b,0x05,},\"\\xc0\\x0f\\xed\\x2d\\x68\\x94\\x68\\xbc\\xba\\xcc\\xcd\\x44\\x6e\\x8d\\x8f\\x29\\x9e\\x2a\\x86\\x92\\x5e\\x62\\xe5\\x97\\x09\\xaf\\xaf\\x48\\x57\\x46\\x9f\\xf1\\xe0\\x06\\xd0\\x0f\\xa3\\xe1\\x8a\\x36\\x15\\xf8\\xf0\\x6b\\x6e\\xbd\\xff\\x78\\x5d\\xde\\x58\\x85\\x1d\\x2c\\x23\\x90\\x38\\xa0\\xc3\\x44\\xdc\\xe9\\x85\\xbd\\x1f\\xc8\\xde\\xb4\\x77\\x9a\\xe5\\xf8\\x93\\x2e\\x2f\\x9e\\xd5\\x99\\x0b\\x64\\x72\\xdb\\xe4\\xe6\\xfe\\xf6\\x91\\x76\\x57\\xe0\\xb5\"},\n{{0x44,0xce,0xef,0x04,0x4f,0xf9,0x98,0xd4,0xab,0xea,0xaf,0x37,0x4e,0xb4,0x1d,0x08,0x67,0x18,0xb6,0x30,0x97,0xb1,0xe3,0x5f,0x89,0x63,0x4c,0x14,0x89,0x71,0x32,0xea,},{0xe8,0x3c,0x86,0x67,0x7d,0x03,0xed,0x3a,0x5e,0x8c,0x95,0xf4,0x1f,0x0b,0x32,0x5f,0xf4,0x33,0x37,0x02,0xf2,0xff,0x69,0x36,0xf5,0x7f,0xf3,0x0a,0xa3,0x14,0x85,0xc7,},{0x55,0x45,0x52,0xd6,0xb7,0x90,0xd4,0x21,0xd0,0x6b,0x0a,0x67,0xf8,0xe0,0x02,0xad,0x7a,0x1e,0xd0,0x1c,0x06,0xcf,0x00,0xcb,0xea,0xec,0x2a,0x26,0x8b,0xda,0x29,0xf1,0x18,0x3f,0x0c,0xea,0xfc,0x62,0x5f,0xa5,0xfd,0xb8,0x47,0xdc,0x86,0xfa,0xe1,0xa2,0x04,0x06,0xe4,0x59,0xd4,0xa0,0x17,0x7c,0xb5,0x15,0x22,0x0a,0x56,0x8e,0x08,0x00,},\"\\x8d\\x3e\\x2d\\xec\\x46\\x44\\xc7\\xb5\\x16\\x33\\xb1\\x3e\\x63\\x75\\xca\\x42\\xff\\x91\\x38\\x46\\x5f\\x43\\xd7\\x80\\x0c\\x73\\x13\\x19\\x9f\\x67\\xc9\\xcf\\x1b\\x52\\x0b\\x18\\x20\\xbd\\x63\\x0e\\xcf\\x1c\\x99\\x2e\\x27\\x67\\xb3\\x8e\\xb5\\xbb\\xc4\\x41\\xa4\\xab\\x8d\\x31\\x7d\\xb4\\x41\\xdb\\x35\\xa0\\xfe\\x3a\\xbe\\x7a\\x9e\\x45\\x41\\x88\\x1c\\x2d\\x7b\\x1a\\x26\\x12\\x30\\x69\\x59\\x81\\x5d\\x1d\\xa4\\x12\\x67\\xd9\\x64\\x9d\\xd4\\x49\\x4a\\xce\"},\n{{0x98,0xef,0x2a,0x44,0xd4,0xc8,0x47,0x6d,0xff,0x05,0xaa,0x78,0xdc,0xf9,0xc6,0xdc,0x08,0x6c,0xb2,0xf6,0x22,0xa0,0x67,0x45,0xd6,0x0c,0xbf,0x22,0x3f,0xaa,0xba,0x66,},{0x42,0xfd,0xb1,0xda,0xa3,0x9f,0x01,0x59,0x11,0x9b,0xee,0xc1,0xbe,0xdf,0x6f,0x03,0x94,0xb2,0x6a,0x2a,0x29,0xbd,0x1f,0xde,0x08,0x1e,0xcc,0xda,0xde,0xcc,0x22,0x6a,},{0xab,0x5e,0x87,0x24,0xa3,0xe6,0xff,0x76,0x05,0x8c,0xfb,0x21,0x4d,0x57,0x4e,0x04,0xd0,0x55,0x74,0xec,0xdd,0x4f,0xfe,0x8c,0x07,0xc7,0xaf,0x39,0x6e,0x88,0x26,0x87,0xc5,0xd7,0x9e,0xf1,0xe6,0x2f,0xbb,0x4c,0x5f,0x1b,0xd0,0x6b,0x9b,0xd8,0x97,0x82,0x6e,0xdd,0xe0,0xd1,0x11,0xd9,0x18,0xe8,0xef,0x96,0x1f,0xf2,0xa0,0x0d,0x77,0x00,},\"\\xc8\\xb5\\xfc\\xfc\\x3c\\x18\\xc7\\xd9\\x59\\x57\\xb6\\x68\\xe9\\x1c\\x73\\x1d\\x50\\xc7\\xfc\\xea\\x4f\\x95\\x75\\xbb\\xf7\\x84\\x62\\x58\\x70\\xe2\\x38\\xdf\\x54\\x6e\\x2c\\xb1\\xa1\\x9d\\x28\\x08\\xdd\\x5b\\x23\\x0d\\x38\\x71\\xfd\\xec\\x16\\x10\\x0e\\xe1\\xfb\\xf9\\xb7\\x22\\xfa\\x37\\x44\\xa7\\x50\\xa3\\xb3\\x96\\xb0\\x5f\\x9c\\x21\\xb8\\xc0\\xf6\\x1e\\xad\\x57\\xa7\\x8c\\x5e\\xcf\\x72\\xb5\\x79\\xcf\\xe8\\x8a\\x3f\\x40\\x4c\\x8a\\xcf\\x52\\x4f\\x9a\\xb9\"},\n{{0x93,0xa8,0xc7,0x92,0xa2,0x39,0xc9,0x31,0x91,0x7c,0x11,0x48,0x24,0xa0,0x17,0x4f,0x8b,0xc4,0xeb,0xbf,0x98,0xaf,0x8c,0x7e,0x32,0x1e,0x0f,0x5b,0xea,0x40,0x15,0xec,},{0x9b,0x2e,0xaa,0x8a,0x9c,0x2c,0x25,0xff,0x4f,0x6e,0x13,0xbb,0x12,0xba,0xe5,0xd0,0x6f,0xda,0x0e,0xb1,0x10,0x5f,0xaf,0xae,0x58,0x80,0xff,0x16,0x87,0x40,0xbb,0x74,},{0xcf,0xe3,0x2c,0x44,0x35,0xd9,0x11,0xd7,0x72,0xdc,0x07,0x27,0xe7,0x8d,0x68,0x9d,0x01,0x64,0xc5,0x06,0x95,0x97,0xcb,0x44,0x1b,0x22,0xc1,0xd2,0x62,0x36,0x47,0x9f,0x1a,0xfd,0x70,0x89,0x12,0x1b,0x9a,0xb4,0xf6,0x1b,0xbb,0x1f,0xae,0x1a,0xb4,0x2f,0x76,0x35,0xa9,0x2a,0x53,0x78,0x4d,0x71,0x70,0x91,0x6b,0x70,0x3a,0xa5,0xcc,0x09,},\"\\x90\\x1b\\xf4\\xe0\\x41\\xca\\xf1\\x6e\\x04\\xf2\\xff\\xde\\x8d\\x6f\\xe9\\x7e\\x93\\xd0\\x90\\x0f\\x6b\\xc0\\xfc\\x09\\xa9\\xa0\\x17\\x9d\\x13\\x7b\\x4b\\x77\\x88\\xe5\\x7e\\xb9\\x27\\x66\\xa9\\xc6\\x34\\xf3\\x5a\\xdb\\x5c\\x29\\x88\\xaf\\x1e\\x86\\x20\\x8f\\x46\\x19\\x98\\xf5\\x9c\\xfe\\xc9\\x92\\x04\\xb4\\x84\\xfb\\xca\\xd3\\x95\\x1e\\x7e\\xe4\\x40\\x55\\x23\\x70\\x5d\\x97\\x39\\xb4\\x43\\x07\\xdb\\x03\\xf7\\x13\\xfd\\xa7\\x8d\\xb4\\x21\\xef\\x31\\x21\\xb3\\xba\"},\n{{0x70,0x01,0xfa,0x0c,0x44,0x04,0xc2,0x8a,0xa5,0xb5,0xfc,0xff,0x30,0xa9,0x61,0xf2,0x1a,0x22,0xf5,0xb8,0x5a,0x9e,0x38,0x2e,0x07,0xae,0xa8,0xa8,0x92,0x4d,0x0e,0xc1,},{0xda,0xeb,0xb6,0x3c,0x4d,0x8f,0x40,0xce,0xba,0x8e,0xc3,0x5e,0x3d,0xd9,0x46,0xa6,0xb7,0x5b,0xc7,0x4f,0xcb,0x29,0xad,0xe7,0xb5,0x5e,0xee,0x3c,0xc3,0xae,0xa5,0xca,},{0x64,0xea,0xc9,0xce,0x87,0x46,0x06,0x18,0x63,0x6b,0x41,0xfd,0x2d,0xec,0xc1,0x67,0x3b,0xfc,0x48,0xc5,0xf4,0x79,0xdf,0xac,0xb5,0x1e,0x86,0x68,0x64,0x07,0x37,0x4b,0x1d,0x10,0xbf,0x65,0xd6,0xd7,0x47,0x42,0x14,0xd7,0x77,0x0c,0x9e,0x5c,0x7f,0x80,0x6c,0x80,0xd5,0x3d,0x48,0xb7,0x20,0x87,0x0e,0x5e,0x78,0xf3,0x2e,0x3a,0x7e,0x05,},\"\\x44\\xf4\\x8c\\xfb\\x02\\xf0\\x87\\x77\\xa5\\x78\\x73\\x85\\x5f\\x96\\xbe\\x4c\\x02\\x91\\x32\\x3f\\x27\\x39\\xb2\\x75\\xd9\\x07\\x57\\xa1\\x54\\x72\\xe5\\x75\\x04\\x36\\xe0\\x10\\x74\\x08\\xfe\\x30\\x26\\xc0\\x06\\x25\\x68\\x99\\x83\\xf9\\x90\\xeb\\xa9\\xbe\\xcb\\xfc\\xe4\\x03\\xcc\\xd5\\x63\\x56\\xad\\x27\\x41\\xfd\\x21\\x44\\x5d\\xfb\\x23\\xd7\\x61\\x12\\xe5\\x78\\xb3\\x39\\x5c\\xf9\\xd9\\x60\\x95\\x5f\\x1d\\xa8\\xf3\\x99\\xca\\x28\\x6f\\x21\\x39\\x0e\\x25\\xa5\\x9a\"},\n{{0x3a,0xdc,0xe3,0xa3,0xd3,0xfb,0xc9,0x77,0xdd,0x4b,0x30,0x0a,0x74,0x74,0x9f,0x13,0xa3,0xb0,0x4a,0x5d,0x73,0xa2,0xcd,0x75,0xa9,0x94,0xe3,0x19,0x5e,0xfe,0xbd,0xac,},{0x6f,0xf1,0x9b,0x1f,0x18,0xd6,0x48,0x51,0xd5,0xc7,0x48,0x45,0xc6,0x40,0x7f,0x0b,0xf5,0x96,0xa5,0x2e,0x38,0x5e,0x02,0x01,0x27,0xe8,0x3e,0x54,0xcf,0xf5,0xac,0x19,},{0x7d,0xda,0x89,0xf8,0x5b,0x40,0x53,0x9f,0x5a,0xd8,0xc6,0xde,0x49,0x53,0xf7,0x09,0x4a,0x71,0x5b,0x63,0xdd,0xa3,0x0e,0xc7,0xcf,0x65,0xa7,0x85,0xce,0xae,0x5f,0xc6,0x88,0x70,0x7e,0xe0,0x0b,0xe6,0x82,0xce,0xcb,0xe7,0xee,0x37,0xd8,0xfc,0x39,0xee,0x6d,0x83,0xc6,0x44,0x09,0x68,0x17,0x08,0xa0,0x89,0x8a,0x18,0x3b,0x28,0x8a,0x06,},\"\\xfe\\x6c\\x1a\\x31\\x06\\x8e\\x33\\x2d\\x12\\xaa\\xb3\\x7d\\x99\\x40\\x65\\x68\\xde\\xaa\\x36\\xbd\\xb2\\x77\\xce\\xe5\\x53\\x04\\x63\\x3b\\xd0\\xa2\\x67\\xa8\\x50\\xe2\\x03\\xbb\\x3f\\xab\\xe5\\x11\\x0b\\xcc\\x1c\\xa4\\x31\\x66\\x98\\xab\\x1c\\xf0\\x0f\\x0b\\x0f\\x1d\\x97\\xef\\x21\\x80\\x88\\x7f\\x0e\\xc0\\x99\\x1e\\x8c\\x11\\x11\\xf0\\xc0\\xe1\\xd2\\xb7\\x12\\x43\\x3a\\xd2\\xb3\\x07\\x1b\\xd6\\x6e\\x1d\\x81\\xf7\\xfa\\x47\\xbb\\x4b\\xb3\\x1a\\xc0\\xf0\\x59\\xbb\\x3c\\xb8\"},\n{{0x14,0x80,0x3c,0x1f,0x23,0xa4,0x7f,0xcd,0xd3,0x5e,0x5d,0x14,0x6e,0x20,0xca,0x63,0x0c,0xd7,0x12,0xc0,0x47,0xd5,0x33,0x0b,0x65,0x2e,0x31,0x85,0x7a,0xcb,0xc9,0xe8,},{0x36,0xf2,0xd5,0xbd,0x6d,0x83,0x24,0xfa,0x6e,0x9d,0xb7,0xf7,0xd8,0x54,0xeb,0xe4,0x8c,0x0e,0x62,0x99,0x99,0x81,0x22,0xe9,0xd4,0x4b,0x8a,0xdb,0xef,0x54,0xf0,0x93,},{0x07,0xa7,0xde,0x6c,0xe9,0x76,0x64,0xb3,0xea,0x09,0x28,0xe1,0x38,0x5c,0x33,0x09,0xbe,0x08,0xa4,0x7c,0xbf,0x4d,0xaa,0x91,0x86,0xa1,0xb9,0x48,0xc8,0x6f,0xbb,0xa3,0x9c,0x4e,0xfc,0xfc,0xb7,0xa0,0xa3,0x86,0x6b,0xc9,0x4c,0x67,0x88,0xff,0xe6,0xbe,0x0d,0x49,0x72,0xe5,0x6d,0x0c,0x32,0x92,0xd1,0xcc,0x6e,0x25,0x44,0x7b,0x99,0x04,},\"\\x55\\x59\\x83\\x67\\x9d\\x02\\x6e\\x53\\x54\\xb4\\xcc\\x05\\x5a\\xe1\\xbc\\x14\\x65\\x3c\\x72\\x81\\xec\\x72\\x23\\x72\\xf3\\xfe\\xb7\\x78\\xe8\\x41\\xda\\x82\\x1b\\x3d\\x0b\\x8e\\xe7\\xa9\\xa9\\x12\\x9e\\xa0\\x68\\x24\\xbe\\x83\\x79\\xfb\\xbd\\xcb\\x07\\x48\\xf4\\x23\\x72\\x1c\\xcb\\x17\\x2a\\x1b\\xaf\\xa1\\xd5\\xae\\x9f\\xc1\\xc5\\x1e\\x93\\xd4\\x1d\\xd5\\x51\\xc3\\x08\\x60\\x79\\xb6\\x20\\x28\\x6c\\x1c\\x40\\xc1\\x22\\x3b\\xbc\\xbb\\x76\\x72\\x2e\\x92\\xca\\x21\\xd8\\x41\\x0a\"},\n{{0x1a,0x61,0x15,0x4d,0x34,0x72,0xcd,0x96,0xb3,0x28,0xee,0x67,0x4b,0xeb,0x4f,0xc8,0x67,0x63,0xa9,0x69,0xfb,0x41,0x04,0x94,0xe0,0x67,0x84,0x14,0xe3,0x1a,0x46,0xa6,},{0x75,0x76,0xd9,0x3a,0xc8,0x5d,0x0f,0xc6,0x1f,0x25,0x8c,0x55,0xcf,0x90,0xbd,0x87,0xa6,0x35,0x09,0x9c,0x0e,0x81,0x0e,0xd0,0xb9,0x37,0x25,0x8d,0x13,0xb4,0x25,0x59,},{0xad,0xa1,0x66,0x6c,0x9c,0x3b,0x82,0x84,0xb8,0xa2,0x1c,0x4f,0x26,0x18,0xef,0x08,0x08,0xa6,0x46,0xf3,0xf1,0x09,0x41,0xe4,0x70,0xf7,0x38,0xe1,0x78,0x5e,0x2d,0xe9,0xfd,0xd9,0xc8,0xcb,0x52,0x6f,0x94,0x5c,0x7a,0x8c,0x69,0x94,0xf1,0x51,0xb7,0xd0,0x66,0x58,0x1b,0x1d,0x75,0x53,0x07,0x94,0x7c,0x62,0xbe,0xfc,0x8a,0xb7,0x07,0x0f,},\"\\x64\\xc5\\x65\\xef\\xbc\\xb8\\xb9\\x52\\x8e\\xd4\\x72\\x53\\xf3\\xc6\\xa4\\x03\\x5d\\xb7\\x81\\xd6\\xf0\\x97\\x6b\\x5e\\x5b\\xa8\\x44\\x7d\\x4e\\xd5\\x4b\\x04\\x10\\x52\\x93\\xef\\x4c\\x00\\x0d\\x8b\\x2e\\x1b\\x5b\\x75\\xe7\\x27\\xe5\\xd2\\xa0\\x77\\x74\\x3b\\x50\\xd1\\x83\\xb4\\x91\\x76\\x48\\x01\\xa2\\x50\\x4d\\x16\\xee\\x6d\\x7d\\x8a\\xc4\\xfe\\x40\\xe6\\xbf\\xc2\\xa8\\x12\\x9c\\x72\\x85\\xa5\\xac\\x69\\x1c\\x35\\xe6\\x42\\xed\\x16\\x2c\\xf7\\xfb\\xc6\\x45\\x16\\x73\\x3a\\x23\\xb3\"},\n{{0xf2,0x15,0xd3,0x4f,0xe2,0xd7,0x57,0xcf,0xf9,0xcf,0x5c,0x05,0x43,0x09,0x94,0xde,0x58,0x79,0x87,0xce,0x45,0xcb,0x04,0x59,0xf6,0x1e,0xc6,0xc8,0x25,0xc6,0x22,0x59,},{0x1e,0xd5,0x06,0x48,0x5b,0x09,0xa6,0x45,0x0b,0xe7,0xc9,0x33,0x7d,0x9f,0xe8,0x7e,0xf9,0x9c,0x96,0xf8,0xbd,0x11,0xcd,0x63,0x1c,0xa1,0x60,0xd0,0xfd,0x73,0x06,0x7e,},{0xcb,0xef,0x65,0xb6,0xf3,0xfd,0x58,0x09,0x69,0xfc,0x33,0x40,0xcf,0xae,0x4f,0x7c,0x99,0xdf,0x13,0x40,0xcc,0xe5,0x46,0x26,0x18,0x31,0x44,0xef,0x46,0x88,0x71,0x63,0x4b,0x0a,0x5c,0x00,0x33,0x53,0x41,0x08,0xe1,0xc6,0x7c,0x0d,0xc9,0x9d,0x30,0x14,0xf0,0x10,0x84,0xe9,0x8c,0x95,0xe1,0x01,0x4b,0x30,0x9b,0x1d,0xbb,0x2e,0x67,0x04,},\"\\xfb\\xed\\x2a\\x7d\\xf4\\x18\\xec\\x0e\\x80\\x36\\x31\\x2e\\xc2\\x39\\xfc\\xee\\x6e\\xf9\\x7d\\xc8\\xc2\\xdf\\x1f\\x2e\\x14\\xad\\xee\\x28\\x78\\x08\\xb7\\x88\\xa6\\x07\\x21\\x43\\xb8\\x51\\xd9\\x75\\xc8\\xe8\\xa0\\x29\\x9d\\xf8\\x46\\xb1\\x91\\x13\\xe3\\x8c\\xee\\x83\\xda\\x71\\xea\\x8e\\x9b\\xd6\\xf5\\x7b\\xdc\\xd3\\x55\\x75\\x23\\xf4\\xfe\\xb6\\x16\\xca\\xa5\\x95\\xae\\xa0\\x1e\\xb0\\xb3\\xd4\\x90\\xb9\\x9b\\x52\\x5e\\xa4\\xfb\\xb9\\x25\\x8b\\xc7\\xfb\\xb0\\xde\\xea\\x8f\\x56\\x8c\\xb2\"},\n{{0x8c,0x9f,0x95,0x08,0x30,0x75,0xa4,0x3f,0xe4,0x26,0xd1,0x9f,0x1e,0x87,0x71,0x9b,0x40,0x04,0x3d,0xe8,0x8e,0xb0,0xee,0x97,0x1f,0x70,0xe1,0x0c,0x76,0x94,0xce,0x4e,},{0xe9,0x1d,0x16,0x7a,0xa3,0xeb,0xc2,0x3e,0x70,0xaa,0xb4,0x5d,0xab,0xe9,0x05,0xe4,0x16,0x26,0x2f,0x91,0x0e,0x2a,0x95,0x5d,0xd8,0x61,0x9e,0xfc,0x74,0xc2,0x4e,0x85,},{0xca,0xc5,0x55,0x22,0x2d,0xaf,0xec,0x76,0xa0,0xb4,0x7b,0x9d,0x2c,0x58,0x6b,0x3b,0x3b,0x9b,0x3b,0x9c,0x83,0x64,0xbe,0xb3,0xca,0xe1,0xe8,0xdd,0x7f,0x1a,0xe9,0xdd,0x74,0xf2,0x2b,0x8d,0xd4,0xad,0x2b,0x29,0x0f,0x81,0x35,0x1a,0x41,0x5a,0x99,0xf0,0x30,0xf1,0x07,0x78,0xbe,0x4c,0xda,0x85,0xd1,0xd3,0x53,0x33,0x1e,0x70,0xf1,0x09,},\"\\xb6\\x9d\\x70\\xe8\\x60\\xf5\\x5c\\x42\\x7e\\xf2\\xa7\\x1d\\xf3\\x6e\\x05\\xbb\\xc4\\x3b\\xb2\\xe0\\x64\\x63\\xaa\\x5d\\xe3\\x44\\x19\\xc6\\xa6\\x14\\xee\\xa6\\x69\\x53\\x35\\xa8\\x75\\x26\\xc1\\x22\\x64\\x88\\xd8\\x42\\x89\\x1d\\x05\\x74\\xdf\\x34\\x3c\\x9c\\x1e\\x17\\xae\\xd6\\x95\\x8e\\xce\\xe8\\x74\\x74\\x22\\x1e\\xb7\\x7a\\x59\\x9e\\xcb\\x05\\x93\\x44\\xc0\\xd0\\x52\\xc0\\x00\\x2a\\x66\\xe5\\xa6\\x01\\x31\\x85\\xaf\\x69\\xa0\\x1b\\xa5\\xdb\\xc6\\x60\\xd3\\x6c\\xae\\x23\\x5f\\x67\\xfe\\x0e\"},\n{{0xd7,0xeb,0x1f,0xba,0x42,0x4f,0xee,0xd1,0x00,0x77,0x7e,0xed,0xb4,0x87,0x4b,0xf2,0x08,0x10,0xad,0x68,0x6b,0x67,0xe3,0x1d,0x27,0xec,0xf6,0x10,0x60,0x9a,0x33,0xf5,},{0xa2,0x5a,0xcb,0x11,0xa6,0xc8,0x25,0x71,0x3a,0x08,0x5f,0xa7,0x54,0x69,0x28,0x86,0xa8,0x7d,0x07,0xfb,0x9b,0xe1,0xa5,0x3e,0xb9,0x61,0x72,0x8b,0xb6,0x6c,0x90,0x60,},{0x2b,0xf7,0x19,0x68,0x2b,0x07,0xcc,0x5e,0xcc,0x04,0x80,0xf3,0x7e,0x9d,0x12,0x3f,0xf6,0xf4,0x4c,0x26,0xe6,0x95,0x8e,0x59,0xf0,0x80,0x46,0x6f,0x9c,0xd3,0x73,0xa1,0x65,0x00,0xda,0xf1,0x23,0xdc,0x3f,0x13,0x34,0x77,0x4b,0xfc,0x9f,0xa8,0x45,0x03,0xb1,0x6d,0xbf,0x21,0xa8,0x15,0xc1,0xad,0xa6,0xeb,0xef,0x49,0x20,0x46,0x17,0x02,},\"\\xa1\\xd0\\xf8\\x1e\\x3d\\x59\\x08\\x9c\\xc2\\xb1\\x9e\\x07\\xd2\\xfc\\xe4\\x3d\\xb4\\xcf\\x17\\x1f\\xaa\\x64\\x2f\\x3b\\x0b\\xbd\\xe7\\x7a\\xe3\\xd5\\x3a\\xf5\\xc0\\x2b\\xf8\\xfc\\x12\\xff\\xb4\\xe5\\x7f\\x7c\\x8a\\x01\\x5d\\x6c\\x2d\\x17\\x89\\x44\\xfa\\xe9\\xf7\\xc8\\xfc\\x96\\x9d\\x4b\\x77\\xbe\\xa5\\x18\\x76\\xae\\x99\\xd5\\x9e\\x94\\xad\\x24\\x56\\xe0\\xed\\x72\\xc5\\x2c\\xf4\\xe5\\x34\\x0d\\xa1\\x7c\\x44\\xdb\\xff\\x86\\x45\\x7a\\x51\\x9b\\x6f\\xff\\xe2\\x69\\x06\\x62\\x90\\xd6\\x29\\xfe\\x69\"},\n{{0x4f,0x6a,0xeb,0x35,0xfc,0xe1,0x4f,0xbc,0xbb,0x9a,0xa8,0xa4,0xf6,0x45,0x1b,0xf9,0x5b,0x98,0xdf,0x04,0x7f,0xa8,0xc4,0x3f,0x1e,0xad,0x3b,0x40,0x4d,0x3f,0x92,0x8f,},{0xbf,0x66,0xa9,0xed,0xd0,0x94,0x81,0xdb,0x84,0x44,0xa1,0x76,0xc8,0xce,0x05,0x78,0xd2,0x93,0x4f,0x0c,0xdc,0x97,0x34,0xe8,0x6f,0xca,0xac,0x05,0xbf,0x33,0x30,0xf1,},{0x6a,0xdb,0x07,0xe3,0x64,0xf2,0xa4,0x55,0xcb,0x05,0x86,0x7a,0xbc,0x51,0x1a,0xcd,0x9d,0x65,0x89,0x77,0xf0,0xca,0xca,0xfc,0x92,0x82,0x8e,0x7b,0x72,0x4f,0x6b,0xbf,0x98,0xbf,0x0b,0xfb,0x29,0xf4,0xe5,0xe6,0xc7,0x47,0x38,0xd4,0xfd,0xd8,0x16,0xd9,0x25,0x24,0x07,0xae,0x4f,0x3a,0xfc,0x57,0x4c,0x4f,0x00,0x61,0x48,0x24,0xe2,0x03,},\"\\x2d\\xfb\\xb3\\xf5\\x9e\\x19\\xea\\x17\\xd4\\x4a\\x5b\\xde\\x4a\\xd2\\x27\\xa1\\xa3\\x51\\xdd\\xa1\\x7a\\xf8\\x40\\xee\\x0a\\x75\\xda\\x21\\xa5\\xcc\\xa8\\x9b\\x6d\\x1c\\x56\\x7c\\x33\\x3e\\x9c\\xc9\\x10\\xe2\\x15\\x7e\\x05\\xe8\\x6a\\xd5\\xd9\\x31\\x14\\x50\\x64\\x59\\x4c\\x47\\xba\\xee\\xa8\\x66\\x3a\\x34\\x64\\x9c\\x43\\xe9\\x0e\\xb9\\x5c\\xa1\\x0f\\x7d\\x51\\x59\\x7b\\x37\\x8a\\x72\\x2f\\x1f\\x70\\x4a\\xdf\\x9f\\x22\\xe9\\xf8\\x85\\xb8\\x9d\\x1f\\x93\\x80\\x06\\xa2\\xef\\xcd\\xb4\\x2a\\xaf\\xf5\\xe3\"},\n{{0xef,0x4a,0x67,0x62,0xb4,0x00,0x97,0x52,0x04,0xcc,0xc1,0x3a,0xbb,0x47,0x34,0x40,0x15,0x45,0x49,0x06,0x85,0x0f,0xf1,0x49,0x40,0xcb,0xb8,0x3a,0xa2,0x24,0x14,0xae,},{0xea,0xca,0x45,0x09,0x96,0xf5,0x0c,0xfa,0xf2,0xbd,0x7f,0x9d,0x7f,0xa7,0x08,0x7f,0x09,0xad,0x49,0x66,0x42,0x06,0xa8,0x0b,0xc2,0xe5,0xbb,0xbb,0x85,0xbb,0x66,0x8e,},{0x02,0x69,0x7d,0x44,0xca,0xd8,0x62,0xf1,0xda,0xf5,0x70,0x82,0x05,0xf4,0x50,0xd4,0x08,0x52,0x5b,0x10,0xc0,0x1f,0xfd,0x06,0xcf,0xee,0x80,0x37,0x4f,0x3d,0xb1,0x6f,0xa9,0xa4,0x9c,0x19,0xa9,0x84,0x4b,0x34,0x5f,0x2f,0x95,0x59,0xea,0x74,0xaa,0xb1,0x73,0xba,0xa0,0x78,0xc5,0x43,0x70,0xa5,0x16,0x67,0x00,0xc6,0xda,0xfb,0x78,0x0a,},\"\\xa4\\xb6\\x3e\\xae\\xd5\\xa6\\x4a\\x94\\xf2\\xca\\xd2\\x12\\xce\\x2a\\xe7\\x10\\x92\\xfd\\x3e\\xa7\\x44\\xf5\\xbd\\x89\\x56\\x2b\\x2f\\xc2\\xa6\\xc9\\xe4\\xd7\\xaa\\x27\\xad\\xd5\\x62\\x64\\xa5\\xa5\\x50\\x16\\x61\\x0b\\xe6\\xc1\\x9f\\xf7\\xd4\\x98\\x9e\\x95\\x04\\x74\\x08\\x53\\x01\\x27\\x15\\xa7\\x9e\\xce\\x9e\\x12\\xc3\\x01\\xb3\\x31\\x7c\\x7d\\x9b\\x67\\x30\\xdb\\x86\\x2a\\x4a\\x1d\\x28\\x05\\x8e\\x0f\\x8b\\x5d\\xdd\\x97\\x38\\xc7\\xc6\\x2e\\xa5\\x72\\xcf\\xe5\\x9e\\xae\\x08\\xe2\\xb8\\xb6\\x59\\x3b\\x58\"},\n{{0x55,0x01,0x7e,0x5f,0x61,0xf0,0xc5,0xba,0xfb,0xcd,0xe6,0xf8,0x49,0xf4,0x2a,0x31,0xe5,0xe7,0xa8,0x78,0xc1,0xd3,0xf9,0x12,0x6f,0xc5,0x69,0xfd,0x41,0x7e,0xa9,0xf2,},{0x66,0x91,0x4f,0x74,0xed,0x93,0x2f,0xc8,0x81,0xff,0x01,0x66,0x68,0x3f,0x67,0x5a,0x7c,0x28,0xa9,0x26,0xfd,0xdd,0x64,0x69,0xcd,0xb3,0xf2,0x8e,0x6d,0xec,0x42,0xcc,},{0xb1,0xa5,0xe7,0xc4,0x9b,0x8f,0xc6,0xb4,0x33,0x1e,0x04,0x16,0xce,0x7e,0x4e,0xd5,0x9e,0xdd,0x56,0x30,0x0b,0x80,0x2e,0x0d,0x72,0xab,0xca,0x4a,0x6f,0xcb,0x87,0x6c,0x03,0xbf,0x33,0x15,0x79,0x12,0x4a,0xe0,0xd3,0xfe,0x43,0xf7,0x89,0x8b,0xc8,0x7e,0x93,0xfc,0x2d,0xa3,0x97,0x0f,0xc8,0x63,0x89,0x57,0xd1,0x8c,0x66,0x13,0xc8,0x08,},\"\\x2f\\xc8\\x4a\\x09\\x98\\xfa\\x6e\\x16\\x8a\\x86\\x64\\x10\\xbb\\x68\\x10\\x5d\\xf2\\x49\\xa2\\x8c\\xfc\\x76\\x60\\x4b\\xe9\\x4f\\xd7\\xdf\\xff\\xf2\\xfc\\x1d\\xed\\xd2\\x20\\x19\\x94\\x65\\x57\\x5e\\x8d\\xf8\\x60\\x19\\x0f\\x16\\xac\\xa4\\x08\\x41\\x69\\xbe\\x16\\xc6\\xba\\x32\\xeb\\x67\\x04\\x2f\\xfd\\x4f\\x23\\x03\\x16\\xa2\\x6b\\x26\\x24\\xa4\\x2f\\x8f\\x90\\xad\\x57\\xf6\\x91\\x64\\x86\\xfa\\x91\\xfd\\x94\\xed\\x68\\xad\\xed\\x4e\\x63\\x24\\x30\\xef\\x71\\x94\\x46\\x97\\x9b\\xfa\\xf3\\x45\\x40\\x9c\\x38\\x7f\"},\n{{0x05,0x53,0xfb,0xa8,0x66,0x94,0x23,0x41,0x21,0x7c,0xf2,0x78,0xac,0x57,0xcb,0x21,0xac,0xd0,0x9d,0x99,0x16,0xcc,0x6a,0xf0,0xac,0x46,0x94,0x1e,0xa1,0x39,0xd5,0x45,},{0x84,0x0c,0x66,0xe5,0x7c,0x2d,0x4f,0x52,0xa4,0xa2,0x79,0x6d,0x2a,0x53,0xc5,0x70,0x9b,0x96,0xa6,0x28,0xc2,0xe0,0x63,0xfe,0x6e,0xfd,0x47,0xf2,0x83,0xef,0x5e,0x82,},{0xbc,0x33,0x64,0xc1,0x52,0xee,0x5c,0x80,0x8a,0xc3,0x40,0xf4,0x9e,0xa2,0xcc,0x40,0x4e,0x93,0x51,0x71,0x21,0x22,0x0c,0xce,0x6f,0x7c,0x30,0xa2,0x25,0x00,0xe4,0x1b,0xcd,0xb6,0xe8,0x20,0x48,0x0f,0x8f,0xcc,0xdd,0x22,0xff,0x9a,0xd9,0x6d,0xa5,0x32,0x80,0x2f,0x43,0x1e,0x94,0x24,0x0f,0xb8,0x3d,0x4b,0xce,0xaa,0x09,0xb9,0x2b,0x0d,},\"\\xc1\\xfa\\xe6\\x26\\x2a\\x0e\\x98\\xa6\\xb1\\x23\\x5f\\xcb\\x62\\x28\\x3b\\x7f\\x0a\\x09\\x7f\\x9d\\x00\\x24\\x16\\xd3\\x18\\xfe\\xfc\\x60\\xc5\\xa1\\x58\\x4f\\x90\\x0a\\xd0\\xab\\x26\\xcc\\xfa\\xe0\\xd6\\xd8\\x4a\\xa9\\xaa\\x2d\\xf1\\x6d\\x4c\\x11\\x7e\\xa2\\x72\\x46\\x76\\xcb\\x86\\x6d\\x48\\x70\\xa8\\x72\\xfc\\x82\\x9a\\x7c\\x2a\\x5d\\x21\\xba\\x83\\x34\\x0a\\xdb\\x33\\x9a\\x34\\xc5\\x18\\x4c\\x7f\\x5e\\xad\\x0f\\x07\\x72\\x89\\xb3\\x36\\x77\\xed\\x6a\\x1b\\xa3\\x4b\\xe1\\x99\\x4e\\x25\\x76\\x3b\\xd1\\xd9\\xfa\\xec\"},\n{{0x7a,0x5a,0xc6,0x02,0xde,0x19,0xf3,0xc2,0x10,0x40,0xbc,0xdd,0xbf,0xf4,0x2f,0x6a,0xee,0x6f,0x95,0xc1,0xb0,0x93,0x86,0x8f,0x48,0xe5,0x04,0x82,0xdb,0xf4,0xf9,0xc7,},{0xfb,0xb6,0xc7,0x53,0x1c,0xda,0x21,0xe7,0xd1,0x7e,0xa9,0x03,0xc4,0xd1,0x4b,0xe6,0xc6,0x8b,0x4c,0xa8,0x03,0xa1,0x6b,0xd8,0x71,0x20,0xf5,0xaa,0xf7,0xdc,0xe1,0xd4,},{0x84,0x10,0x1d,0xd4,0xb5,0xe8,0xca,0x3e,0xd9,0x8c,0x1e,0x8a,0x06,0xe1,0x1d,0x7e,0x42,0x4b,0x0d,0x12,0xca,0x71,0x4e,0xe7,0x37,0x4b,0x64,0xc2,0x9d,0x51,0xa2,0x02,0x1c,0xc7,0x7a,0xc7,0x53,0x89,0xd9,0xb0,0xa6,0x46,0xa4,0x47,0x62,0x3d,0x7d,0x04,0xd1,0x24,0x18,0x66,0xb0,0xca,0x6e,0xdd,0x1b,0x7a,0xc0,0x15,0x66,0x6b,0x70,0x0d,},\"\\xbd\\x16\\x85\\x41\\x92\\x79\\xeb\\x81\\xe4\\xcf\\x3c\\x90\\x90\\x31\\xf0\\xf0\\x9c\\x5f\\xfa\\xe7\\xe2\\xce\\x6b\\xa9\\xd9\\x6c\\x2b\\xce\\x87\\xb8\\xba\\x0d\\xd7\\x63\\x23\\x10\\x01\\xe5\\x32\\xc7\\xdd\\xd6\\x21\\x03\\xab\\xf7\\x01\\x28\\x8e\\x19\\xdd\\x8f\\x53\\x02\\xe8\\xf5\\xd3\\x1b\\x64\\xcc\\x33\\x9b\\xd8\\xb7\\xa9\\x55\\x50\\xc8\\xa1\\x16\\xfd\\x48\\x69\\x48\\x77\\x2b\\xd5\\xaf\\x8d\\xfd\\x46\\x00\\x1c\\x59\\x76\\x7b\\x0d\\x6b\\xdc\\xe3\\x83\\xa7\\x07\\x89\\x92\\xd1\\x02\\x2f\\xbc\\xaf\\x90\\x71\\x06\\x87\\xb9\\xaa\"},\n{{0x50,0x41,0x4c,0xf5,0x49,0xbc,0xc5,0x5b,0x5b,0x6b,0x75,0xea,0x37,0x82,0xb2,0xea,0x7c,0x08,0x7b,0x6a,0x01,0x06,0x17,0x5e,0x46,0x9c,0xa2,0xcc,0x76,0x4a,0xeb,0x01,},{0xd0,0xf3,0x0c,0x12,0xe9,0x97,0xf9,0x6e,0x7a,0xee,0xcd,0x1b,0xff,0x6a,0x01,0x2e,0xc3,0x88,0xeb,0xf8,0xf3,0xf4,0xaf,0x66,0x48,0x04,0xd1,0x63,0x8e,0x4c,0x34,0x6a,},{0xb3,0x09,0x80,0x01,0x60,0xde,0x43,0xa6,0x3a,0x89,0xa0,0xac,0xb8,0xa6,0x05,0x00,0x59,0x58,0x9b,0x3e,0xae,0xca,0xc2,0x0b,0x25,0x6f,0xec,0xe4,0x38,0x04,0x2f,0x69,0x41,0x5d,0x8a,0x56,0x88,0x3e,0xe3,0x83,0x6d,0x31,0x34,0xa7,0xfc,0x1d,0xe6,0x4f,0xa8,0xc8,0xce,0xcc,0x3c,0xe2,0x75,0x89,0xf6,0x06,0x05,0x88,0x20,0x85,0x7a,0x0c,},\"\\x75\\xad\\x77\\xe8\\xc5\\x4b\\x0b\\x05\\xfb\\x2d\\x16\\x2e\\x7c\\xad\\xb8\\xa7\\x52\\x80\\x81\\xb8\\x63\\xf7\\x6a\\x44\\x1b\\x37\\x44\\x69\\x41\\x3e\\x57\\x14\\xed\\xf5\\x4f\\x80\\x04\\x96\\xaf\\x01\\x57\\xc1\\x7e\\x42\\x55\\x83\\x41\\x4d\\x43\\x61\\xf2\\x13\\x41\\x71\\xc0\\xb8\\x7c\\x22\\xce\\x68\\x20\\xa4\\x85\\x0a\\xb4\\x9d\\x99\\xa9\\xba\\xdc\\xe9\\xe3\\x61\\x10\\xe7\\xf3\\x06\\x01\\x18\\xb3\\x59\\x0f\\x82\\xb4\\x37\\x71\\xe9\\xfb\\xb0\\x81\\xaf\\xe6\\x22\\x27\\xe0\\x24\\xd9\\x8d\\xe6\\xcd\\xec\\x02\\x8d\\x7c\\x49\\x49\\x0d\"},\n{{0x93,0xcb,0x00,0xd8,0xfe,0x9c,0x97,0x77,0xa6,0x83,0x63,0x1f,0x39,0xba,0x0f,0x48,0x76,0x14,0x82,0xcf,0x1c,0x36,0x6b,0xd8,0x63,0xcf,0x71,0x51,0x01,0x53,0x25,0x55,},{0x87,0xe9,0x4a,0x1e,0xa5,0x25,0x8d,0x61,0x18,0x0c,0xb8,0x28,0x59,0x0f,0xf1,0x41,0x8a,0x87,0xd0,0x1e,0x70,0x26,0x86,0xba,0x8a,0xbc,0x26,0x92,0xc8,0xdc,0x3c,0x91,},{0x09,0x82,0x4f,0xa2,0xdf,0xbc,0x4d,0x6e,0xf7,0x6a,0x9e,0x41,0x45,0x96,0x11,0x16,0x76,0x91,0x30,0x55,0x3b,0x3e,0xdf,0xfa,0x50,0xd0,0x4f,0x39,0xb8,0xb7,0x9f,0xac,0xbd,0x23,0x7a,0xcf,0x71,0x35,0x4a,0x53,0xa6,0xe5,0xfe,0xe7,0x54,0xe8,0x23,0xb0,0xb2,0x90,0xf9,0x61,0x93,0x20,0xa1,0x3d,0x56,0x12,0x69,0xa2,0x21,0x63,0x9f,0x03,},\"\\x88\\xd8\\x53\\x8d\\x31\\x86\\x78\\x13\\xd8\\x8f\\xef\\x72\\x28\\xd4\\x9a\\x7e\\x95\\x0d\\x73\\x83\\x96\\xf1\\x16\\xdd\\xa1\\x02\\x5f\\x79\\x13\\x54\\x7c\\x5d\\x1d\\xc5\\x67\\x7a\\x6d\\xe4\\xb4\\xa5\\x88\\x05\\x07\\xb3\\x61\\x78\\x0b\\x61\\xb4\\x3f\\x77\\x95\\x26\\x3d\\xb2\\x2f\\xf3\\x41\\x64\\x5f\\x2f\\x59\\x14\\xfd\\x60\\x88\\xc2\\x81\\x12\\x11\\xed\\x47\\x56\\xac\\x01\\x9a\\x60\\x35\\xd6\\x6e\\x31\\x70\\xc1\\xd8\\x2b\\xfa\\xa3\\x05\\x96\\xb3\\x96\\xb3\\x26\\x0c\\xc1\\xd1\\x0d\\x41\\x3d\\xd4\\x7e\\xbe\\x6d\\xaa\\x0c\\x30\\xdc\\x42\"},\n{{0x2b,0x4c,0xae,0x38,0x0e,0x95,0xce,0x69,0x4c,0x26,0xac,0x79,0x57,0x44,0x73,0x47,0xf9,0x8e,0x31,0xb4,0xbf,0x02,0xd7,0x44,0xe1,0x31,0x52,0x90,0x71,0xe2,0x30,0x1d,},{0xe6,0xfc,0x70,0x5a,0x79,0xc9,0x8e,0x11,0x5b,0x4e,0x28,0xd3,0xaa,0x15,0x06,0xb7,0x4e,0xe7,0x42,0x76,0xc5,0xfc,0x11,0x09,0xa7,0xf4,0xd8,0x9c,0x6f,0xaf,0xb8,0x89,},{0x55,0x5e,0x45,0x65,0x6b,0xa9,0xcf,0xbf,0x51,0x55,0xd0,0xe5,0x25,0x76,0xe5,0x19,0x7a,0xbb,0xbc,0x9d,0xd2,0x33,0x99,0x3e,0xec,0x2a,0x1e,0xe7,0xf6,0xa8,0x64,0x09,0xc0,0xb7,0x1b,0x0a,0x66,0x19,0x78,0xff,0x5e,0x0a,0xcd,0xc9,0x46,0x3d,0xc4,0x49,0x90,0x6f,0x47,0x4f,0x8e,0x79,0xbb,0x86,0x16,0x8b,0xf7,0x07,0x41,0xe3,0x4b,0x02,},\"\\xe0\\xb8\\x25\\x0e\\x27\\xb7\\xc0\\x29\\x1d\\xbc\\x47\\xa6\\xda\\x6f\\x12\\x68\\x98\\x7a\\xfd\\xf0\\xa1\\xe9\\x0b\\xe6\\x9b\\xcb\\xc4\\x37\\x08\\x65\\x21\\x78\\x30\\xd5\\x20\\x86\\x93\\xbe\\x7b\\x70\\x45\\x09\\x9a\\x22\\xea\\x27\\xf9\\x52\\xeb\\x3f\\x79\\xa9\\xa0\\xf1\\xb5\\xa8\\x7b\\x19\\x36\\x77\\x90\\x78\\x8d\\x34\\xc2\\x19\\xc2\\xe2\\xa6\\xb8\\x34\\x02\\x0f\\xb4\\xfd\\x14\\x9d\\xc5\\x6b\\x54\\x4f\\xdd\\xbb\\x42\\x07\\x1a\\x16\\x2f\\xc7\\xcb\\x33\\xc1\\x46\\xca\\xc0\\x5a\\x31\\xb1\\x83\\xe9\\xda\\xad\\xc6\\x16\\xf3\\xaf\\x44\\x9b\\x17\"},\n{{0xb5,0x64,0x91,0xe5,0x49,0x99,0xbb,0x5a,0x17,0x15,0xeb,0xfa,0x2f,0xeb,0x14,0xa5,0x45,0xa3,0xa4,0x3c,0x2f,0xdf,0xd4,0xbe,0x0c,0x95,0xfc,0x11,0x81,0x9a,0xd6,0x95,},{0xcd,0x42,0xbf,0x41,0x4f,0x9b,0xfc,0x72,0xec,0x06,0x98,0x82,0xa8,0x00,0x55,0x7c,0xdf,0x31,0xbc,0x34,0x64,0xfb,0x10,0x2c,0x31,0x0e,0x6d,0xbd,0x3a,0xe2,0x08,0x63,},{0xe3,0xbe,0x3e,0x71,0xa8,0x98,0x52,0xdf,0x3c,0xff,0xd7,0x2d,0x68,0x20,0x78,0x69,0xdd,0x3e,0xce,0xb4,0x9b,0x1f,0x02,0x94,0x93,0xec,0xcb,0xb9,0x32,0x44,0x4e,0xbe,0x8c,0x8c,0x6d,0xb5,0xf0,0xa5,0xa6,0x7e,0x21,0x94,0x40,0x8d,0xf9,0x84,0x19,0x13,0xa5,0xac,0x1a,0x60,0x68,0x96,0x41,0x9a,0x66,0x8f,0x4f,0x47,0xc5,0x6c,0x2b,0x08,},\"\\xeb\\x44\\x18\\xba\\x30\\x68\\x3e\\xc7\\x95\\x9b\\xdb\\x1e\\xc7\\xb2\\x63\\xf8\\x3e\\x81\\xf0\\x54\\xdd\\xcd\\xbe\\x0a\\x67\\x38\\xca\\x77\\x63\\xe2\\x46\\x93\\x5b\\xac\\x41\\x90\\x26\\xc2\\x2b\\xfb\\xdd\\x12\\x36\\x33\\x6c\\xc1\\x61\\x07\\xc5\\x35\\x13\\xe3\\xdd\\xf3\\x4e\\x12\\x08\\x46\\x96\\x2c\\x3b\\xdd\\x54\\xf5\\xad\\x57\\x49\\x59\\x72\\x08\\xf1\\x5a\\x8b\\xb5\\x66\\x67\\xba\\xa8\\x95\\xf0\\x83\\x40\\xdb\\x89\\xb8\\x5c\\x43\\x5e\\x77\\x09\\x31\\x92\\x8d\\x8a\\xbc\\x99\\x26\\x2f\\x83\\x9a\\xed\\xd9\\xbe\\x2a\\xa1\\x38\\xc9\\x25\\x9a\\xdf\"},\n{{0x65,0x79,0xc2,0x47,0xdd,0x2c,0xd0,0x2b,0xa2,0xf7,0xd7,0xa9,0x50,0xa3,0x30,0x75,0x26,0x81,0xe9,0x2c,0x0d,0xc6,0x29,0x84,0xbb,0xea,0x27,0x9e,0xa5,0x21,0xc3,0x81,},{0x0b,0x08,0x7b,0xea,0x1a,0x1b,0x3d,0x15,0x80,0x5c,0xb6,0x04,0xf4,0xbb,0x8d,0x68,0xed,0xde,0x27,0x4f,0xaf,0x52,0x1f,0xe6,0xdf,0x50,0xc5,0x5f,0x8a,0xd4,0xa7,0x0d,},{0xec,0xca,0xf8,0x01,0xae,0x0a,0x91,0x2e,0x21,0xc6,0xb8,0x3a,0x5f,0x0e,0x4e,0x88,0xd4,0xb2,0x71,0x34,0x59,0xff,0x93,0x44,0x9f,0xc0,0xb2,0x1a,0x9f,0x41,0x60,0x50,0x11,0x3c,0xba,0xe4,0xe8,0x14,0xd2,0x0c,0x0a,0x79,0x8f,0x76,0xd2,0xf9,0xd3,0x26,0xed,0x83,0x95,0x9e,0xa0,0x2a,0xbd,0xc1,0xab,0x35,0x0a,0x46,0x71,0x23,0xf7,0x09,},\"\\xdf\\x7c\\x55\\x2f\\xfc\\x89\\x37\\x4b\\x95\\x71\\xa6\\x02\\x4a\\x8d\\x04\\x71\\xd7\\xeb\\x6b\\xe8\\xdf\\xca\\x6f\\x41\\x66\\xb5\\x81\\xb6\\x54\\x79\\x01\\x5a\\x05\\x68\\x12\\x90\\x74\\xcc\\x04\\xd6\\x34\\x2c\\x75\\x8c\\xa1\\x8f\\x79\\x87\\xde\\xc5\\x36\\xb7\\x03\\x3d\\x5f\\x96\\x81\\x50\\x43\\x40\\xe2\\x09\\x86\\xf0\\x27\\xb8\\xcf\\x1f\\x26\\x3b\\xe7\\x6d\\xb3\\x52\\x5d\\x17\\x34\\x22\\x95\\x0e\\xa8\\xdc\\xed\\xdc\\x58\\x56\\x40\\x91\\x8a\\xa9\\xd2\\x5c\\xa8\\x9c\\xba\\x70\\x1c\\x20\\x20\\x15\\x38\\x73\\xf4\\x61\\x08\\xc7\\x72\\xcb\\x38\\x8d\\x55\"},\n{{0x18,0xfb,0xa6,0x0c,0x50,0x26,0xf3,0xc9,0xdd,0x7a,0xed,0xc0,0x42,0x09,0xd5,0x26,0x03,0x61,0xde,0x40,0x0e,0x19,0x0a,0xeb,0x60,0x16,0x9e,0x05,0xa3,0x36,0x7c,0x9f,},{0xdf,0xff,0x34,0x7f,0x3d,0xd2,0x55,0x53,0x0b,0xf7,0xfb,0x34,0xd0,0x2b,0xa4,0x86,0xd1,0x12,0xbb,0x46,0xe9,0x50,0xe2,0xef,0x80,0xe5,0x17,0x01,0x4c,0xc9,0x57,0x34,},{0x4b,0xc0,0x11,0xe4,0x0f,0x0f,0x59,0xc6,0x18,0xf6,0xbb,0xe2,0x30,0xb6,0xf7,0xbc,0x2f,0x50,0xe3,0x61,0x7c,0x7f,0xaa,0xb7,0xf4,0xc2,0x1c,0xb8,0x4f,0x77,0xeb,0xa9,0x94,0xcb,0x7c,0x2a,0x1b,0xf1,0x0b,0x01,0xbb,0x20,0x08,0x44,0x97,0xfd,0xf0,0xa6,0xab,0x5d,0x9b,0xcd,0x22,0xc4,0xa2,0xc5,0xa7,0x8f,0x79,0x92,0x68,0x25,0x94,0x0f,},\"\\x34\\xf0\\x8a\\x80\\x4d\\x78\\x29\\xcc\\x39\\x14\\xf0\\x00\\xce\\x1a\\x32\\x88\\xac\\xce\\x21\\x49\\xc8\\xa0\\x20\\x86\\xb9\\xf6\\x7a\\xfc\\xcd\\x83\\xa1\\x78\\xb0\\xbc\\xfd\\x49\\x70\\xc0\\x56\\x99\\x7d\\xa7\\xdc\\x3d\\x47\\x56\\x2f\\x16\\x66\\x3c\\xed\\xc5\\x2f\\x82\\xd7\\x10\\x85\\x0c\\xf4\\x05\\x03\\x79\\xef\\xda\\xc2\\x3b\\xee\\x17\\xc3\\x30\\xa3\\x83\\xad\\x13\\x7f\\x78\\x84\\x73\\xb2\\xb0\\x72\\x36\\x03\\xb6\\xde\\xb1\\xfd\\xbf\\x6c\\x52\\x3f\\xc9\\x48\\xa0\\xcc\\xc4\\xff\\x10\\x0f\\xb9\\x46\\xd8\\x74\\xc1\\xf9\\x90\\x43\\x6a\\xe8\\xc4\\xf3\\xb2\"},\n{{0x07,0x3c,0xc1,0x5b,0x05,0x36,0x28,0x59,0x33,0xb2,0xbe,0x39,0x25,0x3c,0xf4,0xfd,0x69,0x6b,0x81,0x61,0x0f,0x5d,0xd3,0xad,0xac,0x2e,0x9c,0xbf,0x33,0x8e,0xf2,0xf6,},{0x00,0xb5,0x51,0xd3,0x71,0x54,0x43,0x75,0xda,0xc5,0xc4,0xe9,0x6c,0xd1,0xf0,0x21,0x52,0x07,0xe8,0xe1,0x66,0xa1,0xfe,0x49,0xd5,0xb0,0xa5,0x1a,0xc1,0x84,0x43,0xec,},{0x3a,0xa5,0x2a,0x83,0x06,0x2a,0x8f,0x28,0xa5,0xd6,0xb7,0x60,0x7f,0x48,0x4b,0x66,0xcc,0x37,0x48,0x96,0xb7,0x66,0x12,0x31,0x26,0x33,0x3c,0x57,0x95,0x81,0x31,0x6c,0x74,0x28,0x06,0xf6,0x27,0xb5,0xbc,0x55,0xca,0xd7,0x05,0xcc,0x1d,0x47,0x82,0xb0,0x44,0x08,0x0c,0x8a,0xc8,0x40,0xf3,0x8c,0x0c,0x50,0xd3,0x5e,0x34,0x5c,0x78,0x03,},\"\\xc2\\x85\\x36\\x2b\\xc8\\xef\\x62\\x8f\\x7a\\xed\\xf6\\x54\\x23\\x1e\\xe5\\x1a\\xcd\\xf2\\xcf\\x69\\xa8\\x86\\xb9\\x42\\xbb\\x9b\\xfe\\xd8\\x15\\x51\\x05\\xd9\\x20\\x9d\\xed\\x2a\\xf2\\x4f\\x16\\x9a\\xd5\\xfc\\xd4\\x51\\x37\\x0f\\x58\\x27\\xa8\\x51\\x11\\xc7\\xa5\\x2e\\x03\\x2c\\x50\\x38\\x61\\x7c\\x0c\\x01\\x70\\xe2\\xa6\\xc2\\x31\\xdc\\x40\\x1d\\x12\\x06\\x2e\\xdb\\x18\\x60\\x36\\x11\\x4e\\x38\\x79\\x3b\\x79\\x08\\x90\\x77\\x58\\x1b\\x97\\x83\\xf4\\x00\\x07\\x10\\x3e\\xf1\\x74\\x72\\x49\\x1c\\x00\\xe7\\x13\\x8a\\xec\\xc5\\x08\\x4d\\x3c\\x85\\x01\\x04\\x70\"},\n{{0xfd,0x89,0x4a,0x1e,0x82,0x32,0x20,0x3b,0x28,0x95,0x05,0xd5,0xc6,0x8c,0x68,0x79,0x1f,0xfc,0x0e,0x54,0xf2,0xa8,0x75,0x30,0xfb,0xba,0x5b,0x3a,0x3f,0x2c,0xaf,0x00,},{0xe9,0x5a,0xb5,0x65,0x94,0x5c,0x7a,0xe5,0xd5,0x33,0xdf,0x5d,0x0c,0xcc,0xc7,0xe9,0xab,0xbc,0x83,0x8e,0x20,0xa0,0xb6,0x1c,0x93,0x0f,0x5d,0x41,0xd8,0x1a,0x6f,0xe7,},{0xf5,0x11,0x02,0x21,0x9e,0x88,0x04,0xbe,0x71,0x3e,0x55,0x6d,0xf4,0xe4,0xaf,0xa2,0xf8,0x86,0x6f,0xe8,0x65,0x41,0xa1,0xc2,0xa0,0x93,0x4d,0x24,0xc3,0xc9,0xbe,0xb2,0x80,0xa7,0x0d,0xd8,0xd5,0x27,0xfe,0x8b,0x7e,0x0b,0x94,0x82,0x14,0xd5,0xf2,0xf9,0x63,0x86,0x19,0x91,0x4b,0x72,0xd5,0x5d,0xc1,0x98,0xb0,0x22,0x9a,0x84,0x87,0x08,},\"\\x26\\x69\\x62\\x4a\\x94\\xf2\\xc4\\x4a\\x05\\xb7\\xdc\\x3e\\xbf\\x93\\xe5\\x8a\\x4b\\xf3\\xa0\\x1c\\x27\\x36\\x57\\xe7\\xe7\\x87\\x89\\x76\\xf6\\xb6\\xea\\x73\\x7f\\xa3\\xf2\\x2c\\xc8\\x36\\x5b\\x8b\\x22\\x0c\\x00\\x7d\\x5b\\x64\\x27\\x26\\xa4\\x08\\xfe\\x2f\\xab\\x69\\xeb\\xb3\\xbd\\x07\\x2b\\x34\\x9f\\x4d\\xc3\\x37\\x7e\\xe7\\xcc\\x75\\x29\\x34\\x25\\x42\\x15\\xd2\\x39\\x89\\xbd\\x3c\\xd0\\x2c\\xe9\\x99\\xad\\xec\\x97\\x84\\x99\\x3f\\x4c\\x19\\x94\\x08\\x15\\xf3\\x9c\\x9e\\x22\\x92\\x47\\xf5\\x20\\x5c\\x36\\xcb\\xa4\\x4e\\x71\\x42\\x66\\x36\\x92\\x89\\xb4\\xa7\"},\n{{0x18,0xef,0x46,0x4e,0x28,0xf8,0x7f,0xfc,0xfa,0x4d,0x3a,0x9c,0x09,0xa2,0x29,0x10,0x95,0x1b,0x8c,0x71,0x9f,0xda,0xcd,0xb5,0x6d,0xe6,0x2c,0x4b,0x40,0x6d,0xf0,0x0c,},{0xc5,0x06,0x4c,0x9d,0x43,0xee,0x2d,0xa7,0x5b,0x06,0xbb,0x09,0xc7,0x72,0x67,0xdb,0xd0,0xd3,0x91,0x28,0xf1,0xcd,0xc6,0xbf,0xa4,0x51,0xa0,0x3e,0x93,0xaf,0x4a,0x70,},{0xd1,0xe7,0xf1,0x6e,0x8e,0x59,0x7d,0x42,0x8a,0xde,0xa6,0x55,0x91,0xd5,0x51,0xb5,0x4b,0x66,0x7a,0xff,0x20,0x20,0xc4,0x64,0xf7,0xf4,0xe5,0x3c,0x47,0x73,0xf7,0x04,0x33,0x24,0x9a,0x3c,0x71,0xb4,0xd1,0x1c,0x89,0xc3,0xfa,0xa8,0x92,0x80,0x92,0x27,0xb9,0xf2,0x9e,0xf4,0xf7,0xf5,0xd0,0x20,0xd4,0x67,0x4d,0x40,0x21,0x35,0x94,0x05,},\"\\x9c\\x82\\x57\\x07\\xd9\\x35\\x83\\x65\\xab\\x9d\\x38\\xf7\\xe7\\x28\\xd6\\x28\\xaa\\x72\\x2a\\x4f\\x1a\\x20\\xa3\\x8e\\x47\\xc9\\x99\\xff\\xf8\\xfc\\x32\\x41\\x7f\\xbe\\x07\\x2f\\x96\\xeb\\x6a\\x0e\\x11\\xe4\\xda\\x9b\\x6d\\xe9\\x61\\x54\\x45\\x28\\x0e\\x93\\xc7\\x7a\\x36\\x34\\xd3\\xd2\\xc6\\x87\\x98\\x56\\xc2\\x48\\xf9\\x80\\x0f\\x60\\xa0\\xd3\\x8d\\xc1\\xce\\xa8\\xb7\\xf3\\x1f\\x28\\x6c\\xb0\\x37\\x48\\x27\\xb4\\xc6\\xba\\x14\\x4a\\x66\\x94\\xf2\\xb9\\x08\\xea\\xd6\\x8d\\x18\\x34\\x01\\x24\\xcb\\x59\\xcf\\x17\\x01\\x86\\x3b\\xd4\\xf3\\xef\\xc7\\x09\\xf3\\x62\\x7a\"},\n{{0xc9,0x11,0xbd,0xf2,0xf9,0xe7,0xcc,0x5f,0xff,0x35,0xc9,0x6e,0x15,0xcc,0x12,0xea,0xfd,0x05,0xab,0x0d,0xb3,0x1f,0x64,0x9f,0x74,0x08,0xac,0xd0,0xca,0xda,0x76,0xe0,},{0xde,0x44,0x69,0x6c,0xd6,0xbd,0x2c,0xbe,0x9b,0x11,0xa0,0xef,0x18,0xb8,0x81,0x64,0x80,0x1a,0x96,0x9d,0x5e,0x06,0xed,0x45,0x3e,0xb4,0x00,0x8c,0xce,0x9a,0x57,0x25,},{0xd5,0x84,0xb5,0xda,0x37,0x1a,0xe4,0xf5,0xc9,0x85,0x9b,0x25,0xf7,0x0d,0xc5,0x6c,0x1b,0x7b,0x4e,0x02,0xd1,0xae,0x66,0x36,0x28,0x3b,0x1b,0x7b,0x11,0x21,0x7a,0xfd,0xcd,0xf6,0x5d,0x1b,0x49,0xca,0x2c,0x8e,0xf1,0x79,0x66,0xe9,0xbc,0x65,0xf1,0x0c,0x31,0x0b,0x77,0xbb,0x5d,0xf7,0xaf,0xf5,0xec,0x1b,0x37,0x9a,0x2c,0xe5,0x5d,0x0d,},\"\\x76\\xc4\\x71\\x24\\x1d\\x17\\x19\\x29\\x84\\xb0\\x03\\x62\\x69\\x6e\\x4d\\x9d\\x4d\\x2b\\x7f\\x83\\x9c\\x20\\x64\\x11\\x7e\\x50\\xa1\\x59\\x8f\\x3a\\x11\\x72\\xb1\\x6c\\x55\\xe5\\x39\\x68\\x66\\x08\\x47\\x52\\x02\\x4f\\x3a\\x7e\\xb6\\x8b\\xb3\\xff\\xdb\\x80\\x97\\x9a\\x0a\\xf6\\xd0\\xf6\\xaf\\x26\\xb6\\xf0\\xbc\\x0c\\x03\\x84\\x43\\x3b\\xcf\\xd4\\x4c\\x75\\xeb\\x65\\x4a\\x8a\\x82\\x25\\xcb\\x9c\\x4a\\x7f\\xb3\\xc8\\x24\\xc3\\xaf\\x61\\x25\\xfd\\x46\\xdb\\x28\\x7e\\x70\\x49\\x2d\\x15\\x46\\x32\\xcb\\x8f\\x62\\x43\\x26\\x59\\xd9\\x58\\xd6\\x28\\x1d\\x04\\xa5\\x4f\\x5f\\x5f\"},\n{{0xd3,0x70,0x32,0x99,0xc4,0x1d,0xb3,0x6d,0x77,0xdd,0x3a,0x49,0x54,0x1f,0x3f,0xb2,0x1d,0x0b,0x2b,0xad,0x1f,0x6e,0x07,0x4a,0xff,0xd9,0x6f,0x1c,0x40,0xd0,0xf9,0x27,},{0x86,0x2c,0x5e,0xf6,0x16,0xa5,0xf0,0x66,0xfd,0x87,0x75,0x8a,0x56,0xab,0x45,0x05,0x6f,0xea,0x4b,0xd3,0x3f,0x00,0x8b,0xe2,0x4f,0x7b,0x54,0x0e,0x09,0x5e,0x14,0x8e,},{0xdf,0x28,0x27,0x71,0x21,0xea,0xc4,0x46,0x30,0x08,0x4c,0xce,0x75,0x91,0x7a,0xe9,0xf6,0xbe,0xc6,0x5a,0xf5,0x57,0x2d,0xc3,0x07,0x19,0xbd,0xe6,0x61,0xcf,0x69,0x6b,0x85,0xb8,0x67,0x2d,0xd4,0x98,0x3c,0xab,0x30,0xbd,0x05,0xcc,0x3a,0x11,0x9d,0x7d,0xb9,0xba,0xbd,0x52,0x2d,0x7b,0x3a,0x6b,0xcf,0x38,0x86,0xec,0xd2,0x5e,0x08,0x0f,},\"\\xac\\x92\\xed\\xbe\\x22\\x25\\x7b\\xb0\\x6d\\x94\\xaa\\x95\\x0e\\x62\\xd1\\x8c\\xa2\\xac\\x0a\\x8f\\xc1\\x06\\x00\\x0d\\x22\\x31\\xf8\\xa1\\x3b\\x8d\\x7a\\x20\\x9c\\xcd\\x8c\\xc4\\x9a\\x6c\\xd6\\x8a\\x7f\\x36\\xc0\\x2f\\xb8\\xf7\\x28\\xd1\\x55\\x95\\x16\\x7f\\x0b\\xa8\\xcf\\xe9\\x5c\\x8a\\x1e\\x43\\x5f\\x32\\x75\\x13\\x01\\x4a\\xc4\\x28\\xb7\\x5d\\x4f\\x72\\xe7\\xc8\\x34\\xdd\\x70\\xe1\\xa4\\x48\\xf1\\x84\\x7d\\x34\\x98\\x47\\x5f\\x74\\xe3\\xd9\\x33\\x4d\\xc7\\xdc\\xc4\\xfe\\xd7\\x2b\\xf6\\xc7\\xfe\\x3b\\x1d\\x4f\\x53\\xd4\\x29\\x61\\x6f\\x1d\\xf4\\x4f\\x19\\x73\\x31\\x58\\xb6\"},\n{{0xd4,0x11,0xcd,0x33,0x57,0x6d,0x0e,0xfe,0x9e,0xc4,0x13,0xcc,0xda,0xab,0xd4,0xfc,0xba,0xfe,0xc0,0x1a,0x3a,0xf4,0xb3,0xcb,0xe3,0x4f,0x8b,0x05,0xef,0x8b,0x59,0xba,},{0xe8,0x70,0x34,0x4d,0xf9,0x8d,0xd3,0xa8,0x70,0x2c,0x45,0x19,0xbf,0x9e,0x8b,0x35,0xa9,0xd1,0x89,0xe7,0x46,0xf7,0x20,0x3d,0xbb,0xf9,0xbb,0xfa,0xb2,0x2d,0x6f,0x63,},{0x83,0x46,0x0d,0x15,0x46,0x1d,0x67,0x17,0x71,0x0b,0xaf,0xd6,0xa4,0x7a,0x1e,0xaa,0x90,0x0a,0x80,0xf2,0xbf,0x8b,0x8a,0xae,0x24,0x68,0x77,0x36,0x14,0xee,0x84,0xbd,0x62,0x8c,0x97,0x17,0x47,0x63,0x68,0xef,0x36,0x40,0xcf,0x76,0x0a,0xca,0xc8,0x3a,0xd6,0x02,0x32,0xa7,0x69,0x63,0xb7,0xd5,0x25,0x88,0xb1,0x1d,0xc0,0x04,0xd7,0x0d,},\"\\x11\\xd2\\xc2\\xa7\\xf0\\x19\\x09\\x88\\x12\\x66\\x96\\x43\\x1b\\x4b\\xbc\\xd9\\x0a\\xb7\\xb5\\x6a\\x32\\xda\\x64\\x04\\xae\\x44\\x6a\\xa7\\x62\\xa4\\xdd\\xc6\\x60\\x94\\x97\\x15\\x38\\xee\\xb8\\x5b\\xde\\x04\\x70\\xa5\\x10\\xbe\\x0d\\x6d\\x85\\x78\\x0e\\xe7\\x30\\xa9\\x85\\x41\\x38\\x72\\x8a\\xe6\\x81\\x61\\x62\\x26\\x8d\\xa8\\x52\\x85\\x8e\\xae\\xd4\\xec\\x74\\xc7\\xac\\x62\\xe6\\xe7\\x09\\x6d\\xc0\\x02\\xdf\\x0b\\xdf\\x5f\\xa4\\x0d\\xa5\\x65\\xb4\\x1d\\x18\\x1a\\x3f\\x0a\\xd0\\xc5\\xe0\\xb9\\x76\\x74\\x3e\\x31\\x5d\\x9d\\xb8\\xed\\x41\\x60\\xab\\xe6\\x9c\\x13\\xa2\\xb3\\xf0\\x9a\"},\n{{0xe1,0x0a,0x2f,0x13,0x80,0xc3,0xe4,0x72,0x0e,0x8a,0x87,0x07,0xa9,0xbc,0xb2,0x5a,0x0f,0x58,0x27,0x0d,0x70,0x59,0xcd,0x76,0x26,0xc7,0x15,0x34,0x47,0xed,0xfb,0x87,},{0xa3,0xc7,0x17,0xac,0xab,0x36,0x6a,0x40,0xb5,0x11,0x87,0xbb,0xf3,0x5b,0x2d,0x15,0xe9,0x7c,0xfe,0xac,0xd7,0x34,0x9c,0x06,0xef,0x1c,0x91,0xac,0x93,0xe9,0x06,0x56,},{0x09,0x4b,0xf6,0xf9,0x53,0xca,0x0e,0xb7,0x7d,0xf4,0x51,0x29,0xb7,0xbf,0x10,0xd1,0x92,0xcf,0x6d,0xde,0xae,0x94,0xad,0x62,0x02,0xb8,0xea,0xcf,0xbe,0xc1,0x19,0xe5,0x29,0x15,0x78,0xfe,0x64,0xa0,0x84,0xae,0x60,0x0f,0xe0,0x7e,0xfd,0xb8,0xa7,0x82,0x61,0x0d,0xbd,0xb0,0xb4,0x9e,0xb5,0xf2,0xa4,0x6c,0x43,0x23,0x55,0x55,0x2f,0x01,},\"\\x13\\x52\\x12\\xa9\\xcf\\x00\\xd0\\xa0\\x52\\x20\\xbe\\x73\\x23\\xbf\\xa4\\xa5\\xba\\x7f\\xc5\\x46\\x55\\x14\\x00\\x77\\x02\\x12\\x1a\\x9c\\x92\\xe4\\x6b\\xd4\\x73\\x06\\x2f\\x00\\x84\\x1a\\xf8\\x3c\\xb7\\xbc\\x4b\\x2c\\xd5\\x8d\\xc4\\xd5\\xb1\\x51\\x24\\x4c\\xc8\\x29\\x3e\\x79\\x57\\x96\\x83\\x5e\\xd3\\x68\\x22\\xc6\\xe0\\x98\\x93\\xec\\x99\\x1b\\x38\\xad\\xa4\\xb2\\x1a\\x06\\xe6\\x91\\xaf\\xa8\\x87\\xdb\\x4e\\x9d\\x7b\\x1d\\x2a\\xfc\\x65\\xba\\x8d\\x2f\\x5e\\x69\\x26\\xff\\x53\\xd2\\xd4\\x4d\\x55\\xfa\\x09\\x5f\\x3f\\xad\\x62\\x54\\x5c\\x71\\x4f\\x0f\\x3f\\x59\\xe4\\xbf\\xe9\\x1a\\xf8\"},\n{{0xb2,0xe6,0x97,0xb3,0xd3,0xef,0xec,0x97,0x6e,0xf3,0x36,0x95,0x30,0xc7,0x92,0x71,0x7b,0xdb,0xb4,0x28,0xd9,0xed,0x0c,0x11,0xec,0x0e,0xa9,0xb2,0xe5,0xf3,0x9f,0x82,},{0xc4,0xd2,0xe4,0xb3,0xc2,0x36,0xd6,0xc9,0xb8,0xc7,0x4f,0xa3,0x84,0x61,0x2c,0x47,0x10,0xd8,0x3a,0xa1,0x6a,0xd7,0xef,0x01,0xfb,0xb7,0x42,0x1d,0x4f,0xb3,0xf0,0xf6,},{0x50,0x47,0xfa,0x38,0x19,0x7b,0x83,0x28,0xe7,0x8d,0xd8,0xa1,0x0e,0x96,0x6a,0xfb,0x7b,0xd3,0xd4,0x36,0x08,0x28,0x0f,0x1c,0x25,0x7d,0x25,0xca,0x43,0xbc,0x1c,0x06,0xe9,0x4a,0x57,0x47,0xab,0x62,0x15,0xec,0xe5,0x4c,0xde,0xff,0x8c,0x56,0x56,0x7d,0x70,0xd2,0xf9,0x1f,0x9e,0xc8,0xc2,0x60,0xaa,0x10,0x80,0xa6,0xab,0x5a,0x7a,0x02,},\"\\x7b\\x43\\x62\\x32\\xac\\x21\\x11\\xa8\\x40\\x59\\x51\\x0c\\x48\\x36\\x25\\x88\\xfc\\xb7\\x38\\x34\\x26\\xbe\\x5e\\x6f\\x62\\xf3\\x72\\xe4\\xf7\\xcc\\xa8\\x3c\\x81\\xc2\\x35\\x7f\\x9b\\x54\\xf4\\xa1\\x52\\x91\\x06\\x5b\\x6d\\x41\\xaa\\xd1\\xea\\x93\\xcf\\xfa\\x77\\x6b\\x9a\\xca\\xa5\\x8a\\xfe\\x2b\\x51\\x64\\x4b\\x97\\xaf\\x9a\\x3e\\x53\\xf8\\x4e\\x40\\xaa\\x6d\\x86\\x05\\x1e\\x69\\x14\\xcd\\x03\\x9d\\x41\\x70\\xa9\\xa5\\x26\\xdd\\x69\\x95\\x5f\\xf5\\x07\\xc3\\x3f\\x74\\xe2\\x17\\x65\\x91\\xfb\\x0b\\x3c\\xd7\\xf0\\x0e\\xe4\\x18\\xf2\\xc2\\x58\\xa9\\x98\\x1c\\xcc\\xee\\x72\\xf0\\x1c\\x84\\x30\"},\n{{0x19,0xa6,0x79,0xa7,0xa9,0x05,0xa1,0xe2,0xb3,0x03,0x8e,0x6e,0x41,0x8b,0x3d,0xa9,0x7c,0x30,0x89,0xc7,0xcd,0x35,0x1e,0xa0,0x7b,0xc8,0xd1,0xaf,0x64,0xea,0xcc,0x46,},{0x19,0xf0,0x83,0x61,0xf4,0x69,0xb4,0xae,0x1e,0x0c,0xeb,0x94,0xf4,0x7a,0x7d,0xe7,0x31,0x74,0x10,0xa9,0x2d,0xd0,0x13,0xb1,0x6a,0xe0,0xd0,0x53,0x2f,0xa4,0xb3,0xef,},{0x43,0x47,0xb7,0xb4,0xf7,0xc3,0xc4,0xdd,0x31,0x5b,0x83,0x84,0xa0,0xb0,0xca,0xee,0xd8,0x4b,0xda,0xbe,0x24,0xb2,0x91,0x5f,0x12,0x51,0x2d,0xfd,0x04,0x77,0x0f,0xc9,0x96,0xa1,0xbf,0xb7,0x29,0xaf,0xef,0x9e,0xdd,0x61,0x14,0x47,0x08,0x1a,0x53,0x30,0x61,0x7e,0xae,0xa1,0xc1,0xda,0xb1,0xbf,0x13,0xce,0xa8,0x99,0x72,0x04,0x91,0x0c,},\"\\x98\\x0c\\x7b\\x4d\\x29\\x39\\x06\\x1a\\xc7\\xb9\\xba\\x44\\x11\\x17\\xa1\\x94\\x85\\x66\\x17\\x81\\xa4\\x08\\x30\\x67\\xc5\\x5a\\xcf\\x93\\x02\\x6c\\x08\\x2a\\x93\\xcc\\x12\\x4f\\x09\\x5e\\x1b\\x4f\\x2c\\x3f\\x6c\\x13\\x54\\x12\\xa5\\x09\\x62\\x28\\xe8\\xa0\\x71\\xe8\\xb4\\xb6\\x68\\xba\\x9d\\x96\\x44\\xea\\x9f\\x4d\\xab\\xfc\\x54\\xa9\\x85\\x6c\\x3e\\x96\\x5e\\x63\\x63\\x39\\x5a\\xb7\\x09\\x03\\x7d\\xda\\x22\\x9b\\xaf\\x92\\x7c\\xd0\\x1f\\x9a\\xf5\\xe0\\x39\\xaf\\xc4\\x2f\\x3c\\xec\\x63\\x4f\\x5d\\x83\\x2d\\x2a\\xb7\\xc7\\xca\\xd3\\xad\\x7b\\x8c\\xf2\\x7e\\xbd\\xac\\x69\\x84\\x31\\xad\\x82\\x36\"},\n{{0xf0,0x3b,0x83,0x63,0xee,0x5b,0x0e,0xef,0x70,0x18,0xa4,0x9b,0xc0,0x2a,0xdf,0x73,0x1d,0xa5,0x4e,0xe5,0x0a,0x7f,0x03,0xb8,0x8a,0x29,0xa2,0x08,0x2b,0x18,0x9c,0x43,},{0x31,0x28,0x7e,0xf5,0xa2,0xe6,0x41,0x04,0xab,0x77,0x90,0xb3,0x12,0xf3,0x5c,0x7a,0xd4,0xaf,0x6b,0xeb,0x0d,0x7c,0xeb,0x8a,0x58,0xf3,0x6a,0x54,0xce,0x27,0x2c,0x3e,},{0xe8,0xfa,0x96,0x7e,0x6a,0xfa,0xdf,0x6a,0x87,0x7d,0x87,0xe5,0xf5,0xc5,0x2b,0xb6,0x34,0xb7,0x5a,0x78,0x04,0x19,0x9a,0x2b,0xc9,0xd0,0x27,0xb6,0x3a,0x35,0x65,0x4d,0x9d,0xdd,0x06,0x83,0x04,0x55,0x64,0x1d,0xbf,0xb4,0x9e,0xdc,0xe4,0x2e,0x20,0xe7,0xd4,0x10,0x4a,0x07,0x1c,0x2c,0xbb,0xec,0x23,0x01,0x8c,0x29,0x7c,0xed,0x99,0x08,},\"\\x24\\x19\\x1b\\x54\\x64\\xb3\\x5a\\xc7\\xbc\\xf4\\xa3\\x75\\xf0\\x33\\xef\\xba\\x89\\x43\\xb0\\x9b\\x9f\\xf0\\xfc\\x40\\x3c\\xa7\\xaa\\xe7\\x02\\xa3\\xcb\\xf3\\x96\\xc5\\x13\\x1b\\xc0\\x08\\x13\\x2c\\xf5\\xf1\\x29\\x10\\xd5\\x86\\xdc\\x1d\\xb9\\xc0\\x84\\x57\\x4a\\x96\\xba\\xbe\\xe9\\x56\\x42\\xf9\\x22\\x37\\x1c\\x03\\x82\\xec\\x04\\x02\\xa2\\x6f\\xeb\\x14\\x2e\\x41\\x46\\xbb\\xd3\\x36\\x0c\\x2b\\x36\\x83\\x4f\\xe4\\x5a\\xf5\\xe2\\x86\\x8d\\x4d\\x56\\xfd\\xd5\\x04\\xce\\xbf\\x0c\\x2d\\x7f\\x57\\x91\\xb4\\x42\\x94\\x17\\xc8\\xb6\\x5a\\x98\\xe0\\xb1\\x5c\\x46\\x6c\\x13\\x7f\\x41\\x05\\x24\\xfc\\xe7\\x37\"},\n{{0x11,0x08,0x6b,0x0d,0x11,0xe4,0x15,0xab,0x1c,0xe0,0x2a,0xaf,0x8f,0x06,0x21,0xb5,0x44,0x30,0xf6,0xfb,0x13,0x5c,0x74,0xf4,0x0d,0x38,0xe8,0xc6,0x47,0x37,0x06,0x4b,},{0x71,0x66,0xdf,0xbc,0x69,0x1e,0xb8,0xc2,0x01,0x11,0x4b,0xa0,0xd1,0xa2,0xc7,0xb8,0x7f,0x7a,0x1f,0xd8,0xd0,0xb3,0x60,0x58,0xb0,0xd7,0xdc,0xab,0xe1,0xae,0x30,0xda,},{0xe9,0x07,0x45,0x9d,0x5a,0xdc,0xd0,0xd0,0xc3,0x64,0x18,0x58,0x1f,0x19,0xd0,0xee,0xbd,0xa7,0x13,0x8e,0xbd,0x9f,0xaa,0x0b,0x26,0x22,0x01,0xf4,0x58,0xc8,0x56,0x31,0x0b,0xb7,0x7f,0x4c,0x7d,0xe9,0x22,0x49,0x5d,0xcf,0xe8,0xb2,0x48,0xed,0xa2,0xad,0x0d,0xf6,0xa7,0x3f,0x47,0xbb,0xfb,0x89,0x4b,0xaa,0x7d,0x88,0x69,0x87,0x58,0x02,},\"\\x4b\\x5b\\x29\\x36\\xc5\\xe3\\x60\\xa3\\x84\\x55\\x50\\x37\\x21\\x07\\x8f\\x8a\\xdb\\x40\\x4a\\x7e\\xe7\\xec\\xc1\\x48\\x01\\xdc\\x87\\xa6\\x7a\\x15\\x2b\\x76\\x95\\x69\\xfb\\xea\\xc0\\xaf\\xa2\\x5a\\x20\\x70\\xa1\\x68\\x6b\\x90\\x0a\\xc1\\x63\\x3d\\x49\\x98\\x08\\xcd\\xb2\\xe8\\x1c\\xe3\\x91\\x6d\\x5a\\x3c\\x04\\xd1\\x9c\\x5b\\xb2\\x69\\x9a\\x66\\x2b\\x8a\\xba\\x4a\\xf9\\x4d\\x39\\x0b\\xac\\x7c\\xcc\\x8e\\xc9\\x10\\xed\\x2a\\xcd\\xf8\\x6e\\xbb\\x71\\xad\\xb6\\x01\\x87\\x78\\x85\\xee\\xf3\\xc9\\x16\\x62\\xfc\\x30\\x73\\x8e\\x35\\x2c\\xc7\\x43\\x53\\xcc\\xf8\\xd8\\xed\\xee\\xfa\\xcc\\x04\\x2c\\x10\\xa0\\xe5\"},\n{{0xef,0xce,0x76,0x67,0xa8,0xef,0x91,0x22,0x8c,0xae,0xd1,0x4e,0xb4,0x77,0xa3,0x45,0xe5,0xe8,0x23,0x92,0x34,0x08,0x08,0x48,0x76,0x0e,0xd0,0x97,0x07,0x13,0xfa,0x86,},{0x91,0x93,0x05,0x5a,0x84,0xdf,0x1e,0xac,0xca,0x28,0xce,0x2a,0x08,0xc2,0xa0,0x7a,0x50,0xf0,0x4c,0x02,0x4e,0xcf,0x1f,0xe4,0xa4,0x7d,0x2e,0xfb,0xaf,0x63,0xed,0x58,},{0xe5,0xa6,0x31,0x24,0xdb,0x16,0x96,0xb6,0x41,0x40,0xb6,0xe9,0x61,0x2f,0xa9,0x58,0x7b,0x3e,0xef,0x71,0x01,0x09,0x39,0x8d,0x44,0xba,0x0c,0xa6,0x3c,0x0e,0xba,0xd0,0x6f,0x0a,0x6c,0x89,0x94,0xea,0x34,0xb3,0xa2,0xaf,0x91,0xa8,0x9b,0xf4,0x1a,0xe6,0x14,0xd7,0x72,0x7d,0x71,0x6f,0xd4,0x2f,0x8b,0x92,0xe1,0xac,0x64,0xfd,0xbf,0x03,},\"\\xaa\\x1b\\xc8\\x0d\\x7b\\xcc\\x1d\\x94\\xa2\\x3a\\x57\\xce\\xdf\\x50\\x27\\x48\\x24\\x77\\xdc\\x46\\xb8\\x68\\x90\\xbc\\x0e\\x5a\\xc2\\x9a\\xe6\\xc9\\x1b\\xbc\\x43\\x13\\x03\\x48\\x79\\x73\\x05\\xf7\\x55\\x43\\x58\\x0a\\x8a\\x06\\x9b\\x34\\x8a\\x7b\\xd8\\xfc\\x3e\\x01\\x52\\x30\\xb7\\xc1\\x94\\x0c\\x7f\\x80\\xa8\\x2b\\x12\\x90\\x09\\x10\\xdb\\xcf\\x06\\x30\\xda\\x03\\xf0\\x81\\xd4\\x4c\\x7f\\x95\\x5d\\x4a\\x11\\x72\\xf5\\x6e\\xcc\\x7c\\x5a\\xc6\\x46\\x69\\x6b\\xff\\xdf\\x4e\\xb6\\xd8\\x8b\\xdd\\x9c\\xc3\\x84\\x35\\x28\\xb7\\x25\\x83\\xab\\xb3\\xba\\xd0\\x2e\\x56\\xef\\x76\\x46\\xee\\xd5\\x13\\x95\\x51\\xcd\\xeb\"},\n{{0x88,0xfc,0xca,0xa9,0x6a,0xd8,0x84,0xd1,0x16,0x5b,0xe7,0x1d,0xd0,0xc4,0xf5,0xf8,0xf4,0x42,0x1c,0x60,0xfb,0xfa,0x49,0x8b,0xfe,0xe9,0xb9,0x67,0x46,0x24,0x43,0xbd,},{0xc7,0x5c,0xb0,0xe0,0x23,0x7b,0x45,0xb8,0x65,0x6e,0xea,0x9f,0x3d,0x1a,0x9d,0x4a,0xcd,0x01,0xa1,0x03,0xaa,0x26,0x9b,0xb2,0x4f,0xd5,0x41,0x22,0xfd,0x81,0xf2,0xac,},{0x27,0xd3,0xa1,0x97,0xcc,0x99,0x94,0x21,0x20,0x63,0xbc,0xe8,0xd7,0x99,0xe7,0x7b,0x68,0x53,0xb7,0x35,0x5e,0xbe,0x36,0x9b,0xcf,0x18,0x89,0xa4,0x18,0xa8,0x2c,0xaa,0x3a,0x79,0x87,0xa6,0x63,0xf6,0x21,0xde,0xfe,0x86,0xb3,0xac,0x4a,0xd4,0x4f,0xae,0xed,0x16,0xc9,0x11,0x6a,0xce,0x28,0xfc,0xcf,0x91,0x55,0x57,0xfa,0x77,0x99,0x03,},\"\\x9d\\x0e\\xac\\x98\\x55\\x6b\\xfa\\x86\\x72\\xc3\\x57\\x05\\xd1\\xd6\\x1a\\xc4\\xd0\\xfc\\xa1\\x9d\\xc0\\xd9\\x93\\x01\\x58\\x77\\x85\\x7d\\x27\\xfd\\x80\\xf7\\x4a\\xca\\xce\\x66\\x6c\\x56\\x34\\x85\\xd8\\x1e\\x53\\x60\\x3a\\x6a\\xef\\x40\\x87\\x5f\\xa5\\x51\\xcc\\x10\\x5f\\x2c\\xc1\\x0b\\x39\\x69\\x46\\x79\\xcd\\xf4\\xa6\\xb0\\x73\\xbc\\x88\\x64\\x5f\\xc5\\x1a\\x36\\xda\\x17\\x9d\\x3d\\x1e\\x3c\\x77\\x22\\x45\\x4c\\x5e\\x73\\x57\\x7c\\x61\\xaa\\x7d\\x14\\x8c\\x4b\\xa5\\x0e\\xa4\\x6c\\x56\\xa1\\xc3\\xb3\\xb3\\xc4\\x70\\xf9\\x31\\x00\\x49\\x4e\\x08\\xbc\\x55\\x14\\xac\\x76\\x3a\\x85\\x48\\x3c\\x42\\xc7\\xcd\\xc2\\x7c\"},\n{{0x67,0x0b,0x30,0x62,0x6f,0xe3,0x67,0xd8,0xb4,0x5f,0x43,0x73,0x3d,0x6f,0x25,0xb3,0x7e,0xcc,0xbc,0xb5,0x51,0x96,0x3f,0x0a,0xc8,0xb6,0x66,0xb4,0x80,0x41,0xc7,0x2d,},{0x65,0xaa,0x4c,0x6d,0x4b,0xa0,0xab,0x34,0xbc,0x75,0xb3,0x9f,0x09,0x52,0x7c,0xa6,0xf2,0x42,0x5f,0x52,0x41,0x5c,0xdf,0xfd,0xf2,0xdf,0xf2,0x73,0xf8,0xea,0x61,0x2c,},{0x1b,0x6b,0x43,0x77,0xd2,0xb9,0x8e,0x0f,0x9d,0x24,0xae,0x8d,0xfe,0x30,0xe2,0x39,0x6e,0x20,0x04,0x38,0x0d,0x34,0x31,0x48,0x8e,0x58,0x43,0xcf,0x8d,0x2d,0x7a,0x00,0x70,0xab,0x21,0xf8,0xa3,0xb5,0x1c,0xe8,0x4d,0x2f,0x4b,0xa2,0x09,0xf7,0x39,0xf9,0x22,0xbe,0xbf,0x79,0x80,0x96,0x69,0x3f,0x56,0x22,0x87,0x3d,0x79,0xae,0x6f,0x04,},\"\\xd0\\x0b\\xcc\\xa7\\xe1\\x84\\xd1\\x0e\\x1f\\x1f\\xe4\\x20\\xb5\\x06\\x39\\xe1\\xd5\\xde\\xba\\x52\\xa7\\x51\\x23\\x6e\\x68\\xc5\\x9b\\xb4\\xbf\\xf9\\x80\\x2f\\x5f\\xc1\\x65\\xed\\x42\\xfd\\x6d\\x53\\x46\\x70\\xa7\\xc6\\xfb\\x60\\xe4\\x30\\x7d\\x94\\x79\\x15\\xa2\\x48\\xbf\\x2f\\x93\\x46\\x5c\\x2c\\xb4\\x4d\\x8f\\x45\\x3d\\x2c\\x01\\x5a\\xfb\\xc8\\xed\\x58\\x81\\x8e\\xa5\\x17\\x26\\xa2\\x51\\x77\\x93\\x0e\\x9e\\xa1\\x92\\xef\\x45\\x14\\xf4\\xbb\\x0e\\xb4\\xe0\\xf5\\xd4\\xae\\x3c\\x46\\xe3\\x57\\xc8\\x11\\x87\\xf7\\xed\\x17\\x47\\x33\\xff\\xf9\\x59\\xc3\\xf9\\xfa\\xe6\\x48\\x6c\\xfa\\x13\\x56\\xa9\\x56\\x99\\x21\\x1d\\xe5\"},\n{{0x81,0x3c,0x4d,0xae,0xd6,0x7a,0x19,0x0d,0x68,0xbb,0x63,0x5d,0x73,0xaf,0x6d,0xa7,0x4f,0x32,0xfd,0xf7,0xc4,0x8c,0xca,0x6e,0x59,0x26,0x29,0x46,0xb8,0xe8,0xc7,0x1f,},{0xa2,0x09,0x54,0x57,0xd7,0x69,0x70,0x20,0xe2,0xb8,0x84,0xd9,0x5a,0x96,0x57,0x8c,0x2a,0x90,0x0a,0x76,0x66,0xac,0x0d,0xc7,0xbd,0x38,0xf1,0x93,0x1d,0x79,0x45,0xd8,},{0xb4,0x46,0x57,0x4f,0xf6,0xa4,0xbd,0x2b,0x57,0x2e,0x48,0x7c,0x4a,0xb4,0x43,0xca,0x64,0x10,0x75,0x16,0x8a,0xa4,0xe1,0x09,0x2f,0x71,0xf3,0x0b,0xdb,0x06,0x8c,0xe4,0x6a,0x39,0x5e,0xfe,0xe1,0xee,0x66,0x0b,0x9f,0xac,0x26,0xd5,0x41,0x09,0x72,0x2c,0x15,0xcd,0xb7,0x91,0xbf,0xb8,0x7f,0xff,0x63,0xc6,0x59,0x6a,0xd4,0xf2,0x27,0x0c,},\"\\xce\\x54\\xcb\\x04\\x50\\xe6\\x89\\xa0\\xdb\\xef\\x78\\x53\\x08\\xb3\\x17\\x74\\x72\\xfc\\xd6\\xd3\\x82\\x03\\xe5\\x8a\\x05\\x90\\xb3\\x1f\\xa2\\x53\\xf9\\xea\\x59\\x0b\\xe5\\x36\\x8a\\x92\\x2d\\xe8\\x8b\\x63\\x45\\x01\\x02\\x68\\x44\\x43\\xfb\\x81\\x89\\xe6\\x01\\x28\\x20\\x03\\x32\\x3b\\x89\\xc8\\x1e\\x92\\xea\\xef\\x2b\\x5d\\xdc\\x4a\\x55\\xc5\\x3f\\xa3\\xcf\\xad\\x41\\x60\\x24\\x8b\\x3c\\x28\\x6f\\xf8\\x0d\\x31\\xd1\\x61\\xb7\\xb8\\xde\\xe7\\x13\\x55\\x2b\\x56\\xf1\\x50\\x7f\\xb7\\x2e\\xad\\xfa\\x89\\x05\\x4e\\x9d\\x16\\x00\\xac\\x87\\x4c\\x4b\\x0a\\x96\\x10\\x04\\xeb\\x6d\\x0d\\x4b\\xfd\\x2e\\xcb\\x9c\\x73\\x4f\\x00\\xba\"},\n{{0x84,0x00,0x96,0x2b,0xb7,0x69,0xf6,0x38,0x68,0xca,0xe5,0xa3,0xfe,0xc8,0xdb,0x6a,0x9c,0x8d,0x3f,0x1c,0x84,0x6c,0x8d,0xce,0xeb,0x64,0x2b,0x69,0x46,0xef,0xa8,0xe3,},{0x98,0xbe,0x21,0x00,0x19,0x93,0xa7,0xeb,0x1a,0x12,0x77,0xff,0x74,0xc1,0x55,0x04,0x18,0x3d,0x25,0xfd,0xfc,0xc0,0x5f,0x0d,0x4d,0xea,0x89,0x2f,0x6e,0x30,0x18,0x90,},{0x0a,0xd7,0x1b,0x00,0x25,0xf3,0xd9,0xa5,0x0d,0xb3,0x38,0x41,0x4d,0x6d,0x67,0x0e,0x77,0x99,0xb7,0x27,0x0a,0x84,0x44,0xf6,0xae,0x7f,0x12,0xae,0x7e,0xb7,0x1b,0xd0,0x3f,0xfd,0x3c,0x4f,0x36,0x63,0x1f,0x69,0xfd,0xcc,0x40,0x61,0x46,0x8f,0xf5,0x82,0xed,0xe4,0x95,0x24,0x3e,0xf1,0x36,0x1a,0x3b,0x32,0x95,0xfa,0x81,0x3b,0xa2,0x05,},\"\\xf7\\xe6\\x7d\\x98\\x2a\\x2f\\xf9\\x3e\\xcd\\xa4\\x08\\x71\\x52\\xb4\\x86\\x4c\\x94\\x3b\\x1b\\xa7\\x02\\x1f\\x54\\x07\\x04\\x3c\\xcb\\x42\\x53\\xd3\\x48\\xc2\\x7b\\x92\\x83\\xac\\xb2\\x6c\\x19\\x4f\\xd1\\xcb\\xb7\\x9e\\x6a\\xfc\\x32\\xff\\x68\\x6b\\x55\\xb0\\xb3\\x61\\x72\\x18\\xdc\\xf3\\x93\\x16\\xb4\\xb6\\x6b\\x3c\\x8c\\x0d\\x67\\x26\\x7a\\x86\\xdb\\x8a\\xdf\\x37\\x50\\x80\\x1b\\xcf\\x93\\x27\\xd4\\xc2\\x54\\x41\\xb9\\x61\\x97\\x83\\x2b\\x4c\\xde\\x0e\\xac\\x3f\\xf2\\x28\\x92\\xa2\\xf0\\xbc\\x17\\xc2\\xc2\\x13\\xc0\\x23\\x77\\xa3\\x33\\xe3\\x08\\xed\\x27\\x16\\x58\\x04\\x93\\x83\\xb7\\xe2\\xe5\\x7b\\x6b\\x8b\\x12\\x55\\x12\\xe0\"},\n{{0x62,0x88,0x72,0x20,0x35,0xd1,0xea,0x69,0x9b,0xc7,0xcf,0xdf,0x18,0xd8,0x96,0x25,0x42,0x31,0x80,0xb6,0x83,0xfa,0x74,0x63,0x9f,0x4f,0x30,0xf1,0x53,0x59,0xcc,0x85,},{0xe1,0x7f,0xaa,0x01,0x95,0x72,0x86,0x1a,0x06,0x4e,0x1b,0xc5,0x71,0x25,0x6d,0xea,0x14,0x68,0xf3,0xa4,0x85,0x90,0xa8,0x91,0x38,0xaa,0xa8,0x59,0x25,0x08,0x0c,0xd7,},{0x9d,0xec,0x92,0xb6,0xe8,0x9a,0xdb,0xe8,0xf4,0xe1,0xb5,0xe9,0x3a,0xc4,0xfc,0xf9,0x57,0xde,0x7d,0x19,0x70,0xa2,0x26,0x77,0x0e,0xc4,0xed,0xa6,0x47,0xc8,0xe3,0xb3,0xdf,0xfb,0x27,0x31,0xa3,0x9e,0x16,0xe4,0xa0,0x11,0x9d,0x36,0x62,0xa9,0x37,0xe5,0x60,0x52,0x24,0x91,0xec,0x7a,0x16,0x96,0xbe,0x04,0xc0,0x76,0xb1,0x2e,0x35,0x01,},\"\\x8b\\x6c\\xaa\\xca\\xc5\\x1d\\x89\\x49\\xfb\\x86\\xac\\xbc\\xb1\\xb9\\x9d\\x85\\x9f\\xf6\\x7c\\x64\\x14\\x7b\\xc1\\x21\\x69\\x09\\xdc\\xab\\x07\\xee\\x6e\\xf0\\x9f\\x40\\x38\\x63\\x32\\x73\\x94\\x68\\x9d\\xc3\\x4a\\xbc\\x77\\x8f\\xcb\\x5c\\x1f\\x50\\x91\\xac\\xf5\\xa0\\x8f\\x9d\\x84\\x22\\x11\\xd1\\xae\\x2e\\xb4\\x0b\\xe9\\xbb\\x8d\\x66\\x79\\x07\\x74\\x71\\x54\\x7a\\x6c\\x71\\xff\\x77\\xb5\\x19\\xd4\\xb7\\x10\\x8e\\x32\\xbc\\x46\\x25\\x1c\\x60\\xde\\xe8\\xe3\\x32\\xb6\\x22\\x93\\x16\\xe6\\xd5\\x7c\\x22\\xab\\x82\\x6f\\xf1\\xbc\\x33\\xf2\\xb0\\x21\\x38\\x07\\xc1\\x92\\x80\\xaf\\x11\\x0f\\xd2\\x6e\\xe2\\x74\\x68\\x20\\x1c\\xff\\x49\\xcb\"},\n{{0x13,0x03,0x8a,0x3a,0x65,0xef,0x32,0x75,0x9a,0x9c,0xd9,0x03,0xac,0xb5,0x54,0xb2,0x52,0xde,0x00,0xe7,0xcd,0xb7,0x7b,0xbe,0xd1,0x97,0x0b,0x20,0x68,0x0e,0xe1,0x7b,},{0xb6,0xa3,0x08,0xe6,0x7f,0x9b,0x46,0xc6,0x64,0x99,0x45,0x6a,0xb5,0xcd,0x13,0x5c,0xb2,0xfe,0x84,0xa3,0x2e,0xb0,0x45,0x35,0x86,0x26,0x60,0x4d,0xa4,0x12,0x2c,0x8f,},{0x52,0x61,0x55,0x8e,0xcc,0x3c,0x98,0xff,0x36,0x35,0x1f,0x42,0xf5,0x04,0xca,0xd4,0xa3,0x2f,0xfd,0xa5,0xa7,0x44,0x56,0x09,0x60,0xb4,0xc1,0x06,0xe4,0x49,0x2f,0x02,0xe2,0x04,0x78,0x88,0x7a,0xfe,0xe4,0xf7,0x70,0xf0,0x55,0x97,0xa7,0xe3,0x88,0xca,0xce,0xae,0x80,0x5a,0xe3,0x51,0xe0,0xe4,0x5e,0x8e,0x57,0x8e,0x6a,0x6f,0xf2,0x0c,},\"\\xdd\\xf0\\x0b\\x40\\x33\\xa2\\xa0\\x88\\x02\\x2d\\xab\\xe9\\x33\\x56\\x43\\x2f\\x50\\xdd\\xc6\\xc6\\xe1\\xa6\\x59\\xdc\\x1a\\x93\\x12\\x4a\\x4c\\x2f\\xff\\xfd\\x18\\x27\\x65\\xa2\\xf5\\x6c\\x43\\xea\\x0b\\xfd\\x8d\\xe8\\x01\\x50\\x60\\x88\\x9a\\xe6\\x94\\x1c\\x3f\\x3e\\x25\\x5d\\x44\\x21\\xa1\\xc3\\x62\\x01\\xbe\\x84\\x6a\\x27\\x38\\xa7\\x1f\\x12\\x0c\\xad\\x59\\x8c\\xa8\\x52\\x7d\\x70\\xff\\x8d\\x5a\\x09\\x93\\xb5\\x5c\\xb5\\x15\\x35\\x17\\x11\\x0a\\x41\\x96\\x2d\\xaf\\xf4\\x22\\x50\\x15\\x8f\\x20\\x96\\xd1\\xdd\\xaf\\x71\\x86\\xe5\\x02\\x98\\xcb\\xe5\\x1f\\xcb\\x42\\x9c\\xbe\\xa4\\x11\\x29\\x3f\\x8a\\x7b\\xd9\\xcf\\x06\\x9f\\xa2\\x37\\xe4\"},\n{{0xb9,0xde,0x5b,0x06,0x3d,0x3c,0xa3,0xa7,0x73,0xf1,0x14,0x94,0x1b,0x2e,0x42,0x27,0xc0,0x75,0x11,0xc0,0xf5,0xc0,0x60,0x17,0xb9,0xc8,0x84,0x50,0x18,0xf2,0x34,0x32,},{0x52,0x95,0x24,0x3c,0x86,0x46,0xe0,0x96,0x67,0x4d,0xda,0x15,0x97,0x9b,0x32,0x2b,0x9d,0xd0,0xfa,0xf2,0x7d,0x02,0x4a,0x0e,0xd5,0x77,0x13,0x34,0xe1,0x17,0x9e,0xd2,},{0x92,0xba,0x76,0x0d,0x14,0xd1,0x41,0x5c,0xfa,0xf2,0x18,0xca,0x84,0x70,0x14,0x08,0x8a,0xe5,0x1a,0xd8,0x21,0x11,0x3a,0x6f,0x86,0x30,0x35,0x6f,0x7b,0xa8,0x5c,0x00,0x5e,0x23,0x30,0xf1,0x06,0x6d,0x0d,0xf4,0x64,0x80,0x60,0x52,0xa4,0x17,0x46,0x10,0x05,0x04,0x62,0xf3,0xe0,0x13,0xd7,0x02,0xe7,0xc7,0x71,0x85,0xa0,0x32,0x58,0x0b,},\"\\x94\\x93\\xcc\\x23\\x89\\x6b\\x84\\x09\\x60\\x46\\xae\\x10\\x53\\xaf\\xe3\\x94\\x99\\xe9\\x42\\x42\\x54\\xb3\\x66\\xfe\\x14\\x3f\\x4d\\xa3\\x21\\xe2\\xdc\\x9e\\x47\\x84\\x20\\x8e\\x12\\xa5\\x42\\xd8\\x99\\x82\\x8d\\xde\\x7e\\xff\\x62\\x5a\\x7f\\x12\\x41\\x69\\x90\\xc2\\x84\\x1f\\xfb\\x09\\x5b\\xf9\\x4c\\x0c\\x61\\x0e\\x5a\\x66\\x39\\x18\\xb6\\x89\\x03\\x1c\\xcd\\x6b\\x51\\x93\\x49\\xd0\\x4d\\xe1\\xc2\\x12\\xca\\x2a\\x9d\\x7a\\xbf\\x52\\xe1\\xb4\\xfd\\x46\\x7b\\xb6\\x65\\xb6\\x91\\x9e\\xf8\\xf9\\x16\\x17\\xe2\\x05\\x56\\x5b\\xf5\\x66\\x47\\xe5\\xf8\\xd5\\x08\\xea\\x20\\x0a\\x84\\x46\\x7f\\x8f\\xa1\\x22\\xe7\\x4b\\xc3\\xb9\\x97\\x9f\\x11\\x74\\xe5\"},\n{{0x8f,0xf0,0x29,0x7c,0xc0,0x88,0x42,0xb5,0xe6,0x75,0x52,0xec,0x28,0x43,0xe0,0x43,0x53,0xa3,0x4d,0x74,0xef,0x89,0xb8,0x56,0x5d,0x97,0x20,0x5b,0x74,0xca,0x13,0x3a,},{0x0f,0x7e,0xf9,0x8c,0x5b,0xa4,0xaf,0x98,0x4d,0xfb,0x77,0xbc,0x4e,0x53,0x7b,0x2b,0x39,0xe6,0x27,0x3b,0xb3,0xe7,0xb9,0x5f,0xe1,0xb7,0xe6,0x78,0x19,0x52,0xbd,0x4a,},{0x07,0x83,0x73,0x7f,0x70,0x6e,0x6f,0xf3,0x66,0x14,0xf8,0x50,0x07,0x4f,0xca,0x1f,0x48,0x5f,0x24,0xfc,0xde,0x2a,0x28,0xaf,0x54,0x4f,0x37,0xab,0xd6,0x9b,0x7a,0x58,0x1d,0xef,0xd8,0xc7,0x71,0xb0,0x31,0xe1,0x08,0xd1,0x9d,0x78,0x8c,0x74,0xc5,0xf2,0x0b,0xb3,0xf1,0xc2,0x1c,0xd9,0x2b,0xe3,0x17,0xba,0xcd,0x8f,0x65,0x0b,0x49,0x05,},\"\\x2b\\xdc\\x3a\\x48\\x6c\\x5e\\x4e\\xa6\\x2d\\xcf\\xec\\x8a\\x9d\\x4f\\xcf\\x9e\\xa9\\x49\\x0d\\xbc\\xc7\\x15\\x61\\x5d\\x58\\x49\\x0a\\x72\\xce\\x83\\x3f\\xa2\\x23\\x87\\xca\\x50\\xa0\\x05\\x25\\x08\\xcf\\x0a\\xff\\x1c\\xa7\\x27\\xf0\\xfe\\xd4\\x6f\\xfa\\x7d\\x3c\\x8e\\x23\\xc5\\xbb\\x01\\xd4\\x7e\\x90\\xff\\x06\\xd3\\x85\\x8a\\x55\\x7d\\x99\\x26\\x48\\x15\\x79\\xda\\xf4\\x38\\x4a\\xea\\x50\\xe9\\x6e\\xc6\\x15\\xd2\\xa3\\xbf\\x3c\\x11\\x22\\xf1\\xf2\\x4d\\xd6\\xed\\x98\\xa5\\xde\\x42\\x18\\x83\\x58\\x9c\\x21\\x39\\x98\\xca\\x54\\x32\\x37\\x3e\\x68\\xbb\\xbe\\x89\\x42\\x8c\\xa9\\x88\\x5d\\x05\\x93\\xd5\\xe6\\x21\\x51\\x16\\xb8\\x26\\x63\\x86\\x45\\x2b\"},\n{{0x05,0x0d,0x55,0x3d,0x28,0x2d,0xca,0x32,0x69,0xc8,0x3c,0x18,0x17,0x68,0xec,0x06,0x7b,0x81,0xc9,0xfe,0x0c,0x94,0xf2,0xa0,0xeb,0xbb,0x0c,0x94,0x2d,0x0f,0xcd,0x7c,},{0x63,0xe2,0x30,0xb0,0x03,0xc5,0x3a,0x56,0x72,0xe8,0x32,0xff,0x7f,0x24,0x43,0x0b,0xe2,0x23,0xe4,0x97,0xde,0x84,0x02,0x33,0xf5,0x95,0xa3,0xe2,0x00,0xc7,0x12,0x7e,},{0x3f,0x0e,0x83,0x76,0x5b,0x31,0xbb,0xe8,0xe1,0xfb,0x92,0xe9,0x67,0x8d,0x6c,0xde,0x57,0x1a,0x03,0xba,0x7f,0x1d,0xcc,0x11,0x28,0x46,0x1f,0x70,0x85,0x25,0x45,0x7f,0x4e,0x0e,0x23,0x53,0xaa,0x2b,0x59,0x8c,0x06,0x3f,0xf1,0xbf,0xfd,0xac,0x91,0x6b,0x5a,0x22,0x00,0x65,0x51,0x56,0x90,0x4b,0x05,0x85,0x57,0x7a,0x16,0x28,0x56,0x0d,},\"\\x15\\xe1\\x3b\\x8c\\x01\\x00\\x4f\\x6a\\xa5\\xb2\\x36\\xdb\\xb2\\x81\\x67\\x7f\\x74\\x6d\\x81\\xe5\\x48\\xe0\\xaa\\x80\\xf0\\xe4\\x14\\x52\\x15\\x21\\xd8\\x56\\xcd\\x69\\x4e\\x7c\\x91\\x52\\xbb\\x5e\\x43\\x77\\x6b\\x60\\xf6\\xb5\\x60\\xed\\x1a\\xd3\\xe4\\xb3\\x90\\xdb\\xf3\\xe4\\x6e\\xf9\\x25\\x74\\x43\\xf3\\x9c\\x14\\x9e\\x02\\x40\\xa0\\x2d\\x02\\x1e\\x1e\\x3d\\x7d\\x04\\x6b\\x26\\xfd\\x00\\x4e\\xee\\x7c\\xa1\\x6a\\x80\\x59\\xe1\\x26\\xc7\\x4c\\xb3\\xf2\\x19\\x4d\\xb4\\x7b\\xf6\\x04\\x65\\xec\\xef\\x5c\\x70\\x4d\\x2e\\x2c\\x75\\xe2\\xe5\\x00\\x60\\xea\\x2a\\x31\\xcb\\x72\\xb7\\xb3\\xc6\\xb1\\xb5\\xec\\x72\\xab\\x38\\x00\\x40\\x85\\x28\\x1a\\x22\\xfe\\x86\"},\n{{0x69,0x49,0x7c,0xd7,0xb4,0xe8,0x68,0xcf,0xa0,0x32,0x8d,0x92,0xbd,0x60,0x52,0xd7,0x72,0xb2,0x76,0x73,0x95,0xc1,0x45,0x95,0xb2,0x79,0x85,0x1a,0x9c,0xdd,0x31,0xaa,},{0x5d,0x27,0x6d,0x62,0x6e,0x23,0x0d,0x18,0xe7,0xbc,0xd6,0x11,0x41,0xcb,0x93,0xc9,0x0e,0xf0,0xf7,0x9e,0x01,0x32,0x12,0x12,0xd8,0x38,0xec,0x71,0x45,0x7b,0x1a,0xac,},{0xbe,0xaf,0xa5,0x83,0x40,0x96,0x09,0x08,0xe8,0xd8,0x6e,0x40,0x32,0x9e,0x3a,0x45,0x23,0xfc,0x7b,0xe7,0x70,0xad,0xdb,0x86,0xe3,0x4c,0x37,0x72,0xf8,0x4c,0xd9,0xfb,0x33,0x8d,0x1f,0x3b,0x65,0xbf,0xcd,0xb0,0x9f,0x35,0xc6,0xda,0x36,0xd1,0xa3,0xad,0xf8,0xf9,0x1f,0x1f,0xfd,0x57,0x82,0xcc,0x83,0x02,0x06,0x43,0x3a,0x08,0x41,0x0d,},\"\\x53\\xcd\\x08\\x0a\\x0c\\x61\\xf1\\xa0\\x93\\xd3\\xb3\\xa7\\x45\\x71\\xc2\\x96\\x30\\x3f\\x36\\x3b\\x41\\x07\\xed\\xbe\\x88\\x0b\\x7a\\xa9\\xdf\\xe4\\x4a\\xb5\\xd5\\xdc\\x5f\\x74\\xbe\\x9c\\x8d\\x87\\x6f\\x04\\xd7\\x54\\x65\\x34\\x91\\xab\\x51\\xb1\\x35\\xfc\\x95\\x3f\\x71\\x28\\x7b\\x62\\xff\\x41\\xb6\\x7c\\x74\\x2b\\xd3\\x44\\x56\\x71\\xa9\\xd4\\xf2\\xdc\\x17\\x4c\\xa1\\xb0\\x33\\x5f\\x78\\x62\\x7a\\x0d\\xd4\\xb3\\x06\\x50\\x50\\x41\\x78\\x03\\x9e\\x73\\x93\\x63\\x85\\x10\\xff\\xe8\\x40\\x91\\xb5\\x72\\x98\\xd3\\xac\\x90\\x01\\xc3\\x67\\xc1\\x45\\x2f\\xbc\\xb3\\x3d\\xc5\\x4a\\x5d\\xc3\\x16\\xfb\\x2a\\x52\\x70\\x76\\x4a\\x2a\\xc8\\x20\\xa0\\xb6\\x3f\\xbd\\xc6\"},\n{{0x21,0x65,0xa4,0x86,0xb6,0x12,0xbb,0xff,0x52,0x9c,0xd0,0x03,0x46,0x96,0x4a,0x3c,0xb8,0xcd,0xcf,0xfa,0x51,0xdc,0x3d,0x52,0x4d,0xd5,0xad,0xc5,0xac,0x93,0x6d,0x68,},{0x7e,0xbc,0x83,0x9a,0x46,0x5e,0x14,0xf5,0x89,0x24,0x76,0xe4,0xa1,0x3b,0x39,0x88,0xf8,0x3b,0x3c,0xd2,0x7e,0xf7,0x9e,0x19,0x3f,0x86,0xfa,0x16,0xf3,0x4a,0x1c,0xe1,},{0x7e,0xc6,0xfb,0xa5,0x6b,0xa5,0x24,0x60,0xa1,0xb4,0xf2,0x73,0x86,0x89,0xc1,0x88,0x3d,0xda,0x9a,0xaf,0xfc,0x8b,0xde,0x17,0xcb,0x60,0x29,0xbd,0xce,0x3a,0x0e,0xbe,0x2f,0xff,0xda,0x55,0x93,0x9b,0x70,0xbb,0xd0,0x7f,0xdb,0xf6,0xfc,0x5c,0xda,0x87,0xfe,0xd8,0xba,0x58,0x57,0x5f,0x89,0x4a,0x36,0x6e,0x45,0xe5,0x70,0x5e,0xea,0x09,},\"\\xb7\\x28\\xda\\x7a\\x36\\x16\\x7c\\x60\\x85\\xbd\\x2d\\x96\\x2c\\xf6\\x39\\x59\\xfa\\xcd\\x95\\xc9\\xad\\x45\\x42\\x02\\x8a\\xfb\\xa9\\x0e\\xc9\\xc6\\xc0\\x76\\x0b\\xda\\xe9\\x35\\x42\\x9c\\x3f\\xeb\\x39\\x33\\xe2\\xf0\\x00\\x42\\xc6\\x72\\xad\\x2c\\xd7\\x34\\x8d\\x92\\xbc\\x33\\xf8\\x17\\x51\\xe2\\x94\\xae\\x91\\x71\\xb9\\x45\\xb1\\x93\\x14\\x4e\\xf8\\xac\\xb9\\xa1\\xbd\\x9a\\xbf\\x04\\x75\\xce\\x0d\\x0a\\xc7\\x89\\xb2\\x00\\xc3\\x2e\\x9c\\x9a\\x27\\x36\\xb1\\x68\\x36\\x9c\\xe5\\xf9\\x7b\\x1e\\x8d\\x2e\\x79\\x00\\xe1\\xa7\\x59\\x17\\x84\\x41\\xf1\\xfc\\x43\\x05\\x64\\xae\\x12\\x9b\\xae\\x78\\x57\\x74\\x05\\x11\\xa6\\x68\\xf3\\x2c\\x0a\\x3b\\x07\\x7a\\x9d\\x8b\\x19\"},\n{{0x1c,0x64,0xad,0x63,0xdd,0x14,0x70,0x34,0x59,0x8e,0x12,0x8f,0x74,0x06,0xec,0x05,0x30,0x74,0x6e,0xa1,0xc5,0xb7,0x2e,0xcf,0x79,0xe8,0x88,0x06,0x54,0x86,0xfa,0x1b,},{0xba,0xa6,0xbc,0xc1,0xc3,0xd8,0xd3,0xb1,0x1f,0xfc,0x15,0x87,0xad,0xdd,0xc5,0x8b,0xfd,0x96,0xc2,0xb9,0x92,0xb6,0xc6,0xf5,0x9f,0xcc,0x50,0xcc,0xbc,0xdd,0x0e,0xb9,},{0x74,0x77,0xe5,0x41,0x58,0xf1,0x3b,0x71,0x28,0xc0,0xa1,0x10,0xca,0x6b,0x65,0xf4,0x25,0x14,0xfb,0x70,0xcd,0x5c,0xf2,0x8a,0x8b,0x1c,0xc6,0x11,0x0e,0xa0,0x6f,0xcf,0x94,0x29,0x0d,0xa1,0x3f,0x85,0xa1,0x1c,0x23,0x51,0xd3,0xbb,0xcc,0xbb,0x4c,0x64,0xe0,0x21,0x5d,0x6d,0x0f,0x00,0x99,0xe7,0xf2,0x7b,0xc9,0x4e,0x94,0x9b,0x15,0x0b,},\"\\x9e\\xbd\\x8e\\x33\\x78\\x93\\xbb\\x05\\x3e\\xf2\\xb9\\xe3\\x26\\x9d\\xf5\\x48\\x48\\x49\\x4f\\x03\\xcd\\x63\\x57\\x6b\\x33\\xe6\\x4b\\x10\\x80\\xbe\\x4b\\xe0\\x15\\x26\\x4a\\x40\\x3f\\xb9\\x60\\x2b\\xbf\\x90\\xca\\x19\\xb2\\x41\\xa9\\xb6\\x68\\x63\\x90\\x9b\\x90\\x08\\xce\\x1b\\x2f\\xfc\\xf2\\x36\\xef\\xa4\\xc2\\x66\\x8f\\x0f\\x47\\xdb\\x9f\\xf5\\xfa\\x15\\x7d\\x9c\\xb6\\x05\\x41\\x2b\\xe7\\xdd\\x8b\\x07\\xea\\x87\\x8c\\xcc\\xae\\x6b\\xf5\\x0f\\x93\\x5b\\x86\\xd1\\x9e\\x1b\\x64\\x8b\\x69\\xe5\\x28\\x55\\x3a\\x56\\xd8\\xaf\\xb7\\x82\\x21\\xad\\x53\\x30\\x7b\\x7a\\x4e\\xc8\\xd2\\xfd\\x48\\x61\\xb5\\x5d\\xc5\\xda\\xe8\\xe9\\x3e\\xf3\\x87\\xfb\\xbe\\x0b\\x4c\\xe7\\xf7\\x88\"},\n{{0x55,0xab,0xbc,0x5d,0xac,0x41,0x28,0x13,0x4d,0xc8,0xc6,0x01,0x8a,0x21,0x3e,0xd4,0xb6,0x0f,0xcc,0x8e,0x90,0xcb,0xd4,0x1d,0xb2,0xd2,0x1e,0xda,0x53,0x73,0xe9,0x36,},{0x25,0x1a,0xfa,0xa2,0x64,0x69,0x26,0xb2,0xa3,0x71,0xf2,0xa0,0x9d,0x58,0x65,0xb9,0x8c,0x9a,0x5e,0xb6,0xca,0x04,0x7c,0xd0,0xd8,0xee,0x36,0xe5,0xe0,0x41,0x69,0x74,},{0xf6,0xa6,0x1c,0x2e,0x66,0x1a,0x9e,0xb7,0xbd,0xe1,0x82,0xe3,0x8e,0xc9,0x9a,0xf9,0x85,0xf6,0x16,0x98,0xa5,0xd7,0xfa,0x43,0x0d,0x16,0xe3,0xf1,0xa9,0x37,0x09,0xb7,0x55,0x22,0x32,0x0d,0xe4,0x8a,0xfc,0xc5,0x95,0xab,0x20,0x91,0x22,0xae,0x0c,0xe1,0x32,0xcd,0xf4,0xb0,0x39,0x17,0x46,0xe7,0xff,0x34,0x11,0x77,0x57,0x0c,0x81,0x08,},\"\\x47\\x01\\x0e\\x13\\x98\\xad\\x55\\xfa\\xbe\\x37\\x1d\\xd8\\x64\\x8f\\x76\\x8d\\x90\\xdf\\x4b\\x96\\x5a\\x3b\\x39\\x61\\x00\\xb3\\x03\\xb4\\x0a\\x17\\x51\\x8b\\xed\\x6d\\x86\\xb0\\x9f\\x73\\x4a\\xb7\\xc1\\x0b\\x5f\\x3a\\x01\\xb5\\x3d\\xee\\xc5\\xf8\\x53\\x4b\\x70\\xc7\\x9f\\x3f\\x29\\xb2\\x84\\xfd\\xec\\x48\\x6f\\x22\\xf4\\x4c\\x22\\xcc\\xd5\\xc6\\x46\\x35\\x94\\x41\\x52\\x67\\xba\\xa6\\x11\\xf7\\x0b\\x1b\\x31\\x6c\\xaa\\x1b\\x68\\xb5\\xe0\\xe9\\x9b\\x31\\xc5\\xbb\\x0c\\xe1\\x36\\x79\\xa2\\x3c\\x31\\xa6\\x39\\x99\\x69\\x81\\x64\\xcb\\xf3\\x7d\\x10\\x3b\\xa9\\x24\\x90\\x18\\x8b\\xe5\\x99\\x37\\xf1\\x23\\x04\\x3e\\xc7\\x86\\xef\\xe3\\xd4\\x11\\xf9\\xb0\\x62\\x3a\\x6a\\xd9\\x72\"},\n{{0xf2,0xdc,0xf4,0xa1,0xa0,0xd4,0x6d,0xdb,0x2d,0x72,0xf8,0xfd,0xd8,0x0b,0xbe,0xc5,0xb7,0xde,0xa5,0x91,0x3d,0xa4,0x96,0x6c,0x2f,0x4d,0x12,0xc2,0x61,0xf0,0xbf,0x98,},{0xd3,0x95,0x70,0xa2,0x5c,0xa5,0x9f,0x22,0x57,0xf9,0x3f,0x96,0x60,0x0d,0xf4,0xf6,0x3e,0x68,0x4b,0xf6,0x3a,0xe8,0xdf,0xfd,0x91,0x4e,0x46,0x29,0xc3,0xd5,0x09,0x5f,},{0x42,0x88,0x2a,0x81,0x1d,0xad,0x2d,0x85,0x18,0x85,0xe4,0xcb,0xe9,0x04,0x47,0x08,0xd9,0x1a,0x86,0xf1,0x5d,0xfa,0x1d,0x66,0xc3,0xeb,0x30,0x43,0x14,0x53,0x1f,0x30,0x15,0x20,0x8c,0x71,0x1b,0x9b,0xdb,0xc5,0xfb,0x23,0x39,0x51,0xe5,0x69,0xb5,0x9d,0x34,0xe4,0x15,0xee,0xc4,0xb3,0x7f,0xfd,0x37,0x4d,0x41,0x2c,0x9a,0x36,0x0d,0x0c,},\"\\x3b\\x00\\xe8\\x08\\xfc\\xa4\\xc1\\x16\\x51\\xd8\\x53\\xd6\\xb9\\x0f\\x95\\x2c\\xcf\\x56\\x47\\xe1\\x02\\xd4\\xee\\x0a\\xd7\\xa5\\xd1\\x81\\xd5\\xb4\\x25\\x8c\\x52\\x3c\\xd3\\x9e\\x3d\\x98\\x25\\x29\\x8d\\x84\\xc8\\xcb\\xa0\\x9f\\x43\\xdb\\xba\\x11\\x99\\x88\\x22\\x2c\\x76\\x05\\x9c\\xaf\\x17\\xb4\\xbf\\x99\\x31\\xc4\\x5e\\x61\\x74\\x48\\xae\\xad\\xe1\\x51\\x18\\x14\\x97\\xb2\\x45\\x52\\x36\\x7e\\x52\\xbc\\x45\\xac\\x79\\x08\\x88\\x06\\xd3\\x36\\x82\\x07\\xaa\\xfe\\xfd\\x30\\x57\\x84\\x5d\\xce\\x81\\x9d\\x5a\\xaa\\xa7\\x7b\\x21\\x8e\\x2a\\xed\\x3d\\xa7\\x6d\\x40\\xc1\\xf0\\x76\\x99\\xf8\\x17\\x2e\\x4a\\x5c\\x80\\x3f\\x7a\\x2a\\xce\\xb9\\xa4\\x7a\\x89\\x52\\xe1\\xb2\\xf0\\x53\\xf2\"},\n{{0x22,0x46,0xbf,0xb0,0x61,0x55,0x85,0x9e,0x10,0xa7,0x48,0xff,0x8f,0x59,0x19,0xad,0x5d,0x1d,0xaa,0xb7,0x56,0xf0,0x10,0x57,0xb7,0x90,0xd0,0x74,0x74,0x77,0x5f,0x4f,},{0xfa,0x63,0x49,0xb6,0x2d,0xc8,0xc6,0xa2,0xfe,0xee,0xf6,0xff,0xc3,0x3a,0xe0,0x85,0xc6,0x49,0x79,0x5c,0x1c,0x9d,0x98,0x98,0xe7,0x5c,0x13,0xae,0x16,0x25,0xdb,0x34,},{0x2b,0xe4,0x91,0x5a,0x35,0x2f,0x77,0x85,0x48,0x30,0x46,0xd8,0xae,0x96,0x25,0xb8,0xb6,0x32,0x57,0xaf,0x57,0xc0,0x73,0x69,0x12,0x56,0xee,0x07,0x6d,0x6e,0x1b,0x97,0x2a,0x10,0x1f,0x55,0x1c,0x70,0x5d,0x3f,0x96,0x15,0x7c,0x33,0xb5,0x6e,0xa0,0x49,0xbe,0x4a,0xf4,0xdc,0x56,0x1c,0xbe,0x3c,0x1e,0xc5,0x07,0x2d,0x7f,0x13,0x4e,0x07,},\"\\x63\\xee\\x1c\\x7b\\xbb\\x15\\xce\\xbe\\x1c\\x22\\x53\\x2d\\x48\\x16\\x82\\x75\\x4b\\xda\\xf5\\x8b\\x8b\\xc9\\x97\\xae\\x30\\xa3\\x4c\\x9d\\x23\\xc3\\x3f\\x16\\x90\\xc3\\x46\\xab\\x0a\\x73\\x65\\xff\\x62\\x45\\x74\\x24\\xb6\\x10\\x5f\\x84\\x21\\xec\\xa0\\xce\\x3c\\x63\\x0a\\xcf\\xeb\\x9a\\x1c\\xc4\\x16\\x39\\x0e\\xdf\\x49\\x20\\xe2\\x2b\\x23\\x67\\xe9\\xfb\\x5d\\x2a\\xb2\\x5b\\xee\\x56\\xda\\x03\\xea\\x55\\xe3\\xf5\\x78\\x82\\xd4\\x8b\\x89\\x22\\x93\\x14\\xd7\\x34\\xcb\\x83\\xc7\\x9f\\x4e\\x17\\xee\\x64\\xba\\xe6\\xf7\\xad\\xdb\\xe9\\xb5\\x25\\xfc\\xd0\\x3a\\x91\\x40\\x9a\\x2d\\xde\\x90\\x77\\x51\\xdb\\x8c\\xc9\\x7e\\x08\\xd0\\xea\\x89\\xc4\\xd1\\x87\\x18\\xd2\\x6d\\x0b\\x89\\x7b\\x64\"},\n{{0xc0,0x88,0xa3,0xdd,0x2c,0xb8,0xbd,0x5d,0x68,0x4d,0xb8,0x53,0x8d,0xc2,0x24,0x73,0xb6,0xf0,0x14,0xf6,0x4f,0xe8,0x6a,0xf1,0x68,0xb4,0xbb,0x01,0xb9,0x0a,0x1d,0xd0,},{0xaa,0xd6,0x15,0xa9,0xc2,0x87,0x59,0xf0,0x3d,0x37,0x3a,0xbe,0x66,0x66,0x91,0xde,0xad,0x8b,0x84,0xf9,0xb8,0xb5,0x0a,0x67,0xf8,0xf0,0xaa,0x4a,0x70,0x15,0x80,0xd1,},{0x3b,0xb4,0x59,0xd1,0xac,0x57,0x5a,0x18,0x0c,0x17,0x28,0xd8,0xb8,0x92,0x49,0x70,0x49,0x2a,0x0c,0x8d,0x2a,0x37,0x8c,0x29,0xd1,0xd4,0x17,0x85,0xc8,0x37,0x9a,0x58,0xe2,0xba,0x36,0x06,0x78,0x5e,0x1c,0x5d,0xa2,0x9e,0x55,0x27,0x55,0x2b,0xc6,0xdc,0x89,0xa2,0xb6,0x9c,0x27,0xfe,0x51,0xed,0x25,0x3a,0x9f,0x3b,0x56,0x5b,0x27,0x00,},\"\\x74\\x90\\x6a\\xe0\\x5a\\x5a\\xf8\\xe9\\x96\\x8b\\x6f\\xeb\\x49\\x85\\x69\\xd6\\x34\\x5a\\x24\\xf9\\x71\\x1b\\xef\\xb1\\x36\\xe6\\xc3\\xb5\\xed\\x49\\x33\\x9e\\x59\\xa7\\x93\\x8b\\x4b\\xa1\\xa1\\x18\\xf1\\x69\\xb9\\xac\\xe0\\xf7\\x84\\x2a\\x26\\xa6\\x45\\xf1\\x4c\\x0a\\xd2\\x2e\\xbb\\xcd\\xa9\\x3e\\x67\\xe4\\xc3\\x48\\xef\\xc3\\xd9\\xec\\xbb\\x14\\x19\\xe6\\x26\\x2d\\x04\\x36\\xa5\\x8e\\xa8\\x2c\\x22\\x02\\x38\\x90\\x65\\xcc\\xf6\\x7c\\x4f\\x55\\x0e\\x45\\xb5\\xf6\\xa1\\x2a\\x6c\\x01\\x1b\\x2e\\x0a\\x30\\x10\\x1d\\x5c\\x62\\x32\\x8b\\xbf\\x99\\xc8\\xc9\\x55\\x63\\xa6\\xe3\\x3b\\xdd\\x9c\\xce\\x72\\xb1\\xf7\\x20\\x13\\x9c\\x2f\\xd3\\xe0\\x49\\x13\\x14\\x6a\\xe5\\xba\\xc5\\x28\\x8e\\x0e\\x3e\"},\n{{0x45,0x66,0x7d,0x1e,0x7b,0x59,0x10,0x97,0x9c,0x4a,0x32,0x83,0x17,0x96,0x83,0x71,0xc8,0x64,0xd5,0x64,0xa6,0x61,0xc5,0xcc,0xe5,0x57,0xc9,0xec,0xc6,0x1b,0xab,0x9e,},{0xed,0xcd,0xf5,0xe1,0xa1,0x70,0xe0,0x0c,0x8c,0x68,0x7e,0x7e,0x9c,0x18,0xf9,0x89,0x3b,0x5f,0xe4,0x95,0xcd,0x29,0x77,0xce,0xb7,0xf4,0x46,0xc0,0x14,0x9a,0xa9,0xd3,},{0x6d,0xe6,0x68,0xf1,0xca,0x6f,0x29,0x28,0x14,0x62,0x52,0x89,0xa0,0x80,0x80,0x20,0xc8,0x7c,0x89,0xac,0x94,0xf5,0xb0,0x50,0x8e,0x55,0x7b,0xdf,0x80,0x00,0xa5,0xca,0x80,0x8f,0x02,0x1c,0x96,0x79,0xb5,0x0e,0xe2,0xf3,0x20,0x06,0x4c,0x95,0xa4,0x64,0xa8,0x43,0x93,0x79,0x82,0x8c,0x3b,0x76,0xcf,0xa7,0x66,0x45,0x5e,0x12,0x8c,0x0b,},\"\\xcd\\x66\\xce\\xc4\\x76\\xc8\\x7c\\x8d\\xbf\\x47\\xec\\x91\\xda\\xc4\\x8f\\xb5\\xb4\\x2d\\xb1\\x28\\x2a\\x57\\x3e\\x0a\\x5c\\xf0\\xb9\\x17\\x68\\x98\\x66\\x08\\xe1\\xd7\\xeb\\xd0\\x5f\\x52\\x51\\xbc\\xf8\\xb4\\x7a\\x17\\x09\\x32\\x29\\xac\\xef\\xbd\\x44\\xbe\\xb2\\x1c\\x0c\\x0c\\x92\\x8d\\xd3\\xcd\\x3f\\x89\\x66\\xec\\xce\\x69\\x10\\x33\\x1c\\x50\\x8e\\xa7\\x6b\\xaf\\x90\\x4d\\x8c\\x21\\xf6\\xc1\\x7c\\x2c\\x58\\xd0\\x0a\\xfd\\x32\\x59\\xb8\\xbf\\x79\\x4c\\x14\\x6b\\x12\\xb9\\x95\\xcd\\xdd\\x1c\\x42\\x89\\xc5\\xbe\\x31\\x68\\xeb\\xd6\\x16\\xb3\\x84\\xc2\\x81\\xce\\x1b\\x38\\xa1\\x0e\\x18\\x07\\x80\\x88\\x53\\xc6\\x81\\xa6\\x40\\xa0\\x09\\xb4\\xd2\\xac\\xd7\\x93\\x4f\\x8c\\x6d\\x07\\x57\\x81\\x61\"},\n{{0x24,0x89,0x74,0x28,0xae,0x65,0x46,0xd8,0x5b,0x31,0x90,0xeb,0xe3,0xf1,0xf7,0xbf,0x7c,0x71,0x25,0x28,0xac,0x85,0x1a,0x58,0x8b,0x07,0xd5,0xc8,0xf9,0x4e,0xec,0xd1,},{0x5f,0x34,0x8f,0xe3,0xea,0x5b,0x2c,0x02,0x3d,0x0a,0xf7,0xed,0xe6,0x0e,0x55,0xf9,0x1a,0xa5,0x51,0x99,0x69,0x9d,0xa1,0x5a,0x11,0xc3,0x79,0x1d,0x68,0xd7,0x10,0xbd,},{0x1b,0x5e,0x75,0xde,0xf4,0x9f,0x51,0xd6,0xb2,0xde,0x00,0x8c,0x71,0xfc,0x1a,0x90,0x9b,0xd4,0x2c,0xa8,0x13,0x29,0x8d,0xce,0x4e,0xee,0xf7,0x17,0x81,0x5d,0x7a,0x6c,0x07,0x8c,0x2f,0x3d,0x9a,0x3f,0xce,0x1a,0xb5,0xb3,0xad,0x8e,0xf8,0xd4,0x5c,0xdf,0x2e,0xb4,0x90,0x1c,0x32,0xee,0xa2,0xd5,0xe0,0x18,0xdc,0xf2,0x83,0x3c,0xad,0x0c,},\"\\x52\\x01\\xd9\\x72\\x5f\\x1d\\xff\\xa1\\x86\\x3f\\xa4\\xd8\\x4c\\x30\\x18\\x61\\x14\\x1a\\xcd\\xfb\\x64\\xbe\\x1f\\xbf\\xdd\\x5b\\x93\\x86\\xdb\\x20\\xef\\x39\\x40\\x99\\xee\\xbc\\xfd\\xfe\\xcc\\x62\\xc6\\x26\\x86\\x07\\xa8\\x4d\\x55\\xc5\\x5c\\xd0\\xef\\xdc\\x37\\x2e\\xcf\\x30\\x67\\x34\\x3e\\x7b\\x07\\x31\\xc2\\x68\\x54\\x61\\xe2\\x4b\\x95\\x3f\\x99\\x94\\x9e\\x59\\xba\\x3e\\x67\\xed\\x0f\\x08\\x48\\x31\\x37\\x93\\x96\\x2a\\x29\\x2c\\x45\\x98\\x14\\xc5\\xe2\\x86\\x90\\xec\\x1f\\x45\\x17\\x1f\\x1a\\xba\\xb8\\x6f\\xdd\\x14\\x56\\x8b\\x00\\xca\\xf4\\x85\\x81\\x11\\x5e\\xe5\\xea\\x83\\xb0\\x00\\x28\\x2f\\xbb\\xf0\\xc0\\xb2\\xa1\\x11\\x60\\x39\\xa3\\x5c\\xfa\\x3f\\x20\\x14\\x22\\x20\\x7a\\x3d\\x49\\x48\"},\n{{0x7b,0x04,0xac,0xa7,0xcf,0x92,0x62,0x16,0xcb,0x96,0x0a,0x38,0x90,0x78,0x63,0x39,0xd0,0xa6,0x15,0x96,0x76,0x80,0x19,0x01,0x23,0xfd,0xa3,0xb6,0x0c,0x6a,0xeb,0x11,},{0xcd,0xbc,0x3e,0x70,0xe4,0xe8,0xfd,0x13,0xd0,0xcc,0xe2,0x85,0x2a,0x3b,0x93,0x72,0xc3,0xa6,0x16,0x0c,0xd6,0xde,0xab,0xa9,0x0f,0x9b,0x30,0x22,0xf7,0x0c,0x91,0xf9,},{0x25,0xd2,0xd3,0x61,0x75,0x1d,0x52,0xb4,0xfe,0x66,0xea,0x18,0xe4,0xb9,0x86,0x6b,0xde,0x3d,0x12,0x1a,0x73,0x12,0xfd,0x9e,0x28,0xa1,0xe2,0x95,0xe0,0x87,0xe3,0x17,0x6c,0x94,0xc8,0x74,0xa2,0xe8,0x16,0x00,0xf2,0x4c,0x46,0x54,0xf4,0x3d,0x1b,0x67,0xd4,0x7b,0x64,0x82,0x26,0x48,0x59,0x0c,0xe5,0xce,0x44,0xf3,0xb5,0xdd,0xc5,0x02,},\"\\x1c\\xb0\\x96\\x24\\xb1\\xf1\\x4a\\x02\\x60\\xc7\\xf5\\x6d\\x8c\\x60\\xb5\\xfe\\x45\\x83\\x71\\x14\\x23\\x25\\x51\\xef\\x59\\x66\\x38\\x6e\\x0c\\x2b\\x44\\x1b\\x75\\xcf\\xdb\\x8d\\xf2\\x18\\x57\\x85\\xd2\\x2c\\xf5\\x26\\xfa\\x9d\\xf7\\xfd\\x45\\xd9\\xd8\\x38\\x81\\xb6\\x6c\\x1f\\xee\\xe0\\x91\\x3e\\x23\\x81\\x21\\xee\\xdb\\xb7\\xab\\x50\\x4d\\xa0\\xbe\\xe8\\x99\\x80\\x16\\x68\\x45\\x35\\x03\\x19\\x91\\xf1\\x1b\\xfc\\xd9\\xb9\\x56\\x90\\xaa\\xd2\\xd1\\x9b\\xd6\\xa9\\xde\\x18\\x44\\xed\\x13\\x62\\x30\\x2d\\xf4\\x21\\x72\\x30\\xb2\\x5c\\x05\\x52\\xce\\x27\\x75\\x34\\xc6\\x50\\xca\\xe5\\x26\\x57\\x7f\\x25\\xd8\\xb1\\xfe\\x9f\\x9f\\xeb\\xca\\x2c\\x81\\x46\\x70\\xd4\\x80\\x5b\\x21\\xad\\xef\\x85\\x2d\\xaf\\x94\"},\n{{0xea,0x73,0xbf,0x64,0xa1,0xa9,0x78,0x77,0xc3,0xc3,0xe7,0xca,0x46,0x44,0xb7,0x1a,0xaa,0x66,0x31,0x4c,0x8f,0x1b,0x66,0xba,0xfa,0xeb,0xd5,0xed,0xfb,0x88,0x8b,0xcd,},{0xca,0xac,0x93,0x90,0x2e,0x57,0x64,0xad,0xe4,0x72,0x94,0xed,0xd5,0x1f,0xaa,0x14,0x62,0x09,0x40,0xc6,0x68,0xb5,0xc1,0xc3,0x92,0xa6,0x92,0x83,0x25,0xd4,0xc3,0xfd,},{0xbd,0x86,0xcb,0x9c,0x70,0xa0,0x55,0x27,0x9a,0x86,0xa9,0xe6,0x48,0x70,0x98,0x8b,0x8a,0x73,0x45,0xc3,0xcd,0x29,0x48,0xa0,0xfa,0xbc,0xfb,0x38,0xab,0xce,0x3c,0x42,0x0b,0x4d,0x55,0x21,0x61,0x8e,0x11,0xd2,0xde,0x82,0x7d,0x9d,0xe5,0x69,0xf6,0xbc,0x3b,0xe6,0x6a,0xad,0x40,0x63,0x6c,0xda,0xa6,0x47,0x60,0xde,0xd3,0xb7,0xc2,0x09,},\"\\x36\\x2e\\xec\\x68\\xb9\\x12\\x85\\x27\\x86\\xbb\\x4f\\x9a\\xff\\xf9\\xec\\xf7\\xcb\\x28\\xc9\\xde\\x6b\\x18\\x42\\x2a\\x8c\\xa9\\x40\\xb0\\xd7\\xe6\\xdc\\xb8\\x3a\\xa4\\x4b\\xe0\\xaf\\xb5\\xf1\\x80\\x6d\\x43\\xf0\\xe3\\x1d\\x71\\xf9\\x22\\xf8\\x53\\x61\\x5a\\x26\\xe2\\x87\\xa2\\x7f\\x08\\xa0\\x4f\\xbc\\xe3\\xd4\\x5a\\x0c\\x6c\\x31\\x1d\\x4b\\x7c\\xb1\\x7e\\x42\\x5b\\xbe\\xb0\\xa6\\xb4\\x10\\xb5\\xd6\\xdb\\xb7\\xac\\x11\\xdf\\x98\\x50\\xa1\\x31\\xa6\\x91\\xe3\\xb6\\x0b\\x0b\\x21\\x4e\\xbe\\x04\\x41\\x06\\xe9\\x82\\x43\\x32\\x87\\x59\\x52\\x67\\xb0\\x31\\xb5\\xd4\\xa0\\x92\\x62\\xde\\xd8\\x93\\x4f\\xdf\\xdf\\x96\\x4d\\x86\\x8e\\xf9\\xa2\\xc8\\x42\\xf8\\x04\\xea\\xfd\\xde\\xfc\\xb7\\x1d\\x9f\\x16\\xa5\\x9b\\xf8\"},\n{{0xb8,0x12,0x3c,0x11,0x6b,0x33,0xba,0xd0,0xdc,0xbc,0x2c,0x4d,0xc0,0x6a,0x3d,0x66,0x85,0x0d,0xab,0x36,0x0c,0xdb,0x5a,0x03,0x3c,0x14,0x89,0x5c,0x4e,0xe3,0x1b,0xfb,},{0xbd,0xca,0x15,0x1b,0xa3,0x2c,0x6b,0xb3,0x15,0x31,0xb0,0x5f,0xdf,0x86,0xc6,0xd7,0x8c,0x8c,0xd1,0x93,0x56,0x11,0xd5,0xff,0x11,0x1a,0x0f,0x00,0x63,0x5b,0x18,0x85,},{0x9c,0xf1,0x3e,0xba,0x3d,0xcc,0x37,0xb8,0xfc,0x70,0xcc,0xb2,0x32,0x74,0x36,0xb9,0xf0,0x88,0x55,0xe7,0x26,0xaa,0x7e,0xd8,0x2b,0xd5,0xcb,0x7d,0xf4,0x5f,0xdf,0x9e,0xc1,0xf9,0x6a,0xfa,0xd1,0x93,0xf4,0x75,0x72,0xd7,0x70,0x44,0x4b,0x65,0xb7,0x4a,0x37,0xcc,0x03,0x4f,0xc5,0x14,0xcb,0x3f,0x91,0xb2,0xd8,0xad,0xa5,0xb0,0x20,0x06,},\"\\x79\\x70\\xf6\\x66\\x66\\x34\\x54\\x8c\\x84\\x8b\\xb5\\x23\\x38\\x81\\x7b\\x26\\xa4\\xd0\\xca\\x68\\xdf\\x3d\\x28\\xaf\\xff\\x20\\x7c\\x2d\\x02\\x80\\x67\\xa1\\x8e\\x4c\\x95\\x43\\x02\\x5f\\x5b\\x02\\x28\\xaa\\x69\\x1e\\x50\\x88\\x51\\x31\\x51\\xa9\\x44\\x94\\xe1\\x5d\\x1f\\x54\\x21\\x03\\x28\\xe0\\xdf\\x15\\x9b\\x35\\x2c\\x30\\xaa\\xa7\\xa8\\x44\\xf1\\x8a\\x9f\\x4c\\x39\\x5d\\xcb\\xb3\\xfb\\x9f\\xcf\\xbe\\xd1\\x10\\x3e\\x07\\x06\\xfb\\xf9\\xc3\\x5f\\xe2\\x66\\x68\\x48\\xfa\\x35\\xdc\\x2c\\xf5\\x22\\x7e\\xbe\\xe8\\x9e\\x7d\\x3b\\xcf\\xae\\x27\\x21\\xb2\\x5f\\xde\\xc3\\xd3\\x17\\x4e\\xa7\\xce\\x26\\x7a\\x55\\xdd\\x61\\xd5\\x82\\x01\\xe9\\x6b\\xda\\x30\\x3c\\xf4\\x18\\xed\\xf6\\xe3\\x2f\\xb9\\x2f\\x5d\\xc1\\xa0\\xb1\"},\n{{0xb1,0x8e,0x1d,0x00,0x45,0x99,0x5e,0xc3,0xd0,0x10,0xc3,0x87,0xcc,0xfe,0xb9,0x84,0xd7,0x83,0xaf,0x8f,0xbb,0x0f,0x40,0xfa,0x7d,0xb1,0x26,0xd8,0x89,0xf6,0xda,0xdd,},{0x77,0xf4,0x8b,0x59,0xca,0xed,0xa7,0x77,0x51,0xed,0x13,0x8b,0x0e,0xc6,0x67,0xff,0x50,0xf8,0x76,0x8c,0x25,0xd4,0x83,0x09,0xa8,0xf3,0x86,0xa2,0xba,0xd1,0x87,0xfb,},{0x6b,0xd7,0x10,0xa3,0x68,0xc1,0x24,0x99,0x23,0xfc,0x7a,0x16,0x10,0x74,0x74,0x03,0x04,0x0f,0x0c,0xc3,0x08,0x15,0xa0,0x0f,0x9f,0xf5,0x48,0xa8,0x96,0xbb,0xda,0x0b,0x4e,0xb2,0xca,0x19,0xeb,0xcf,0x91,0x7f,0x0f,0x34,0x20,0x0a,0x9e,0xdb,0xad,0x39,0x01,0xb6,0x4a,0xb0,0x9c,0xc5,0xef,0x7b,0x9b,0xcc,0x3c,0x40,0xc0,0xff,0x75,0x09,},\"\\x91\\x6c\\x7d\\x1d\\x26\\x8f\\xc0\\xe7\\x7c\\x1b\\xef\\x23\\x84\\x32\\x57\\x3c\\x39\\xbe\\x57\\x7b\\xbe\\xa0\\x99\\x89\\x36\\xad\\xd2\\xb5\\x0a\\x65\\x31\\x71\\xce\\x18\\xa5\\x42\\xb0\\xb7\\xf9\\x6c\\x16\\x91\\xa3\\xbe\\x60\\x31\\x52\\x28\\x94\\xa8\\x63\\x41\\x83\\xed\\xa3\\x87\\x98\\xa0\\xc5\\xd5\\xd7\\x9f\\xbd\\x01\\xdd\\x04\\xa8\\x64\\x6d\\x71\\x87\\x3b\\x77\\xb2\\x21\\x99\\x8a\\x81\\x92\\x2d\\x81\\x05\\xf8\\x92\\x31\\x63\\x69\\xd5\\x22\\x4c\\x99\\x83\\x37\\x2d\\x23\\x13\\xc6\\xb1\\xf4\\x55\\x6e\\xa2\\x6b\\xa4\\x9d\\x46\\xe8\\xb5\\x61\\xe0\\xfc\\x76\\x63\\x3a\\xc9\\x76\\x6e\\x68\\xe2\\x1f\\xba\\x7e\\xdc\\xa9\\x3c\\x4c\\x74\\x60\\x37\\x6d\\x7f\\x3a\\xc2\\x2f\\xf3\\x72\\xc1\\x8f\\x61\\x3f\\x2a\\xe2\\xe8\\x56\\xaf\\x40\"},\n{{0x93,0x64,0x9c,0x63,0x91,0x0b,0x35,0x71,0x8e,0x48,0xc5,0x90,0xd2,0x61,0xc4,0x8e,0x4e,0xf8,0x33,0x66,0x13,0xf6,0xaa,0x07,0x7b,0x46,0x26,0x76,0xb3,0xba,0x88,0x29,},{0x06,0xa6,0x85,0x89,0x8b,0x85,0x52,0x12,0xeb,0xc2,0x89,0x91,0x5d,0x10,0x5a,0x43,0x20,0xd6,0x20,0xd8,0x57,0x71,0xb8,0xc6,0xb1,0x5b,0xf1,0x0a,0x1b,0xe6,0xe9,0xb8,},{0x62,0x74,0xf2,0xd4,0xf4,0x31,0xd5,0xaf,0xfe,0xfa,0x35,0xe7,0xcf,0x58,0x4a,0x59,0x90,0x17,0x19,0x3d,0xa9,0x90,0x94,0xca,0x90,0x8b,0x75,0xac,0xb6,0x08,0xd1,0xbf,0x98,0x18,0x57,0xbe,0x93,0xa7,0xda,0xfb,0x0f,0xad,0xb3,0xff,0x09,0x06,0xf4,0x8a,0x5e,0xe9,0x50,0x45,0x6f,0x78,0x2c,0x2d,0x60,0x5b,0x14,0x09,0x5b,0xa0,0xff,0x0f,},\"\\x2c\\xd1\\xa9\\x51\\x05\\x6c\\x9e\\xba\\xe1\\x39\\x9b\\x6b\\xd2\\xd8\\x2c\\x0a\\xe2\\x77\\x85\\x62\\x90\\xd0\\x69\\x20\\xac\\x56\\xca\\xc8\\xfb\\x42\\x43\\x51\\x01\\xc7\\x2a\\xa9\\xc0\\x8d\\xd2\\xd1\\x24\\x26\\x32\\x55\\x62\\xc2\\xf0\\xa4\\x9c\\xd8\\x21\\xb1\\x1b\\x93\\x9a\\xaf\\xa5\\x93\\xb4\\x09\\x5c\\x02\\x1b\\xcb\\x48\\x27\\xb1\\x07\\xb9\\x66\\x4d\\x68\\x28\\x28\\x88\\xbc\\x4a\\x44\\xaf\\x3e\\x3b\\xdc\\x86\\x1b\\xe6\\xaf\\x30\\x90\\x44\\xc3\\xda\\xab\\x57\\xb7\\x70\\x23\\xdc\\x90\\x2d\\x47\\xeb\\xc3\\x26\\xf9\\xbd\\xd0\\x2d\\xbc\\x02\\xcd\\x54\\x0f\\xf8\\x1b\\x2d\\xdf\\x7c\\xf6\\x79\\xa4\\x11\\x93\\xdf\\xe5\\xf8\\xc8\\xca\\x1a\\xae\\xfc\\x41\\xef\\x74\\x02\\x80\\xd9\\x82\\x3e\\x30\\xa3\\x54\\x71\\x7c\\x84\\x31\\xf5\\xd8\"},\n{{0x1c,0x15,0xcb,0xeb,0x89,0x36,0x2d,0x69,0x47,0x6a,0x2a,0xa4,0xa5,0xf3,0xef,0x20,0x89,0xcf,0x87,0x28,0x63,0x49,0xe0,0xdf,0xe0,0xe7,0x2d,0x9e,0x3e,0x5a,0x66,0xc7,},{0x13,0xa8,0x82,0xa1,0x06,0x41,0x82,0x58,0x2c,0x21,0x18,0x47,0xe1,0x9b,0x4d,0xac,0x59,0x72,0x2c,0x9f,0xfd,0x34,0x82,0x6d,0x96,0xf3,0x31,0x13,0x40,0x0f,0xac,0x7a,},{0x59,0x98,0xb2,0x80,0x8a,0xdf,0xde,0xea,0xeb,0xe2,0xc3,0xea,0xc0,0x26,0xd3,0xf8,0x25,0xf9,0xc7,0xf2,0xaf,0x97,0xca,0x32,0x4f,0xbd,0x57,0xaa,0xc1,0xbe,0xdf,0xf7,0x8a,0x8e,0xe6,0x21,0xd0,0x37,0xee,0x3a,0xd2,0xa7,0x12,0xe9,0xa0,0x09,0xc5,0x8e,0xa3,0xe6,0xf2,0xa8,0x28,0xf7,0x4b,0x86,0xda,0x27,0x5a,0x44,0xa4,0xb1,0xe5,0x0b,},\"\\x09\\x1c\\x9b\\x9b\\x11\\x6a\\xe8\\x3d\\x23\\xd0\\x1a\\x62\\x95\\x21\\x17\\x85\\xd4\\x46\\xb6\\x22\\x8d\\xd6\\x87\\xdd\\xf7\\x9b\\xd0\\xd5\\xa4\\xda\\xa8\\xc7\\x9d\\x2c\\xbf\\xc3\\x73\\x65\\xf1\\xf2\\x85\\xe3\\x61\\x73\\x81\\x23\\xe3\\x4e\\x2b\\xcb\\xfc\\x66\\x4c\\xe1\\x25\\x3a\\x11\\xd9\\xe4\\xa7\\x98\\x2e\\x58\\xcf\\x94\\x68\\xe1\\x01\\x7e\\xa1\\x4d\\x2c\\xc6\\xd0\\x86\\x5d\\x40\\xfd\\xe8\\xcb\\x56\\x02\\x41\\xe9\\x6a\\xc1\\x61\\x7c\\x79\\x1f\\x0c\\xa7\\xc6\\x41\\x0c\\xad\\xf3\\x28\\x61\\x1b\\x18\\xae\\xf3\\x33\\xd8\\x35\\x0a\\xc4\\x97\\xf0\\xa4\\xae\\x2d\\x03\\xfd\\xf0\\xe2\\x3e\\x42\\x6d\\x34\\xf4\\x51\\x47\\x80\\xd1\\x47\\x4e\\x11\\x35\\x83\\x54\\x1f\\x3c\\x04\\x36\\x72\\x05\\x71\\x72\\x61\\x8c\\xb2\\x05\\x9e\\xaa\\xed\\x56\"},\n{{0x11,0x24,0x1f,0xfd,0xf3,0x4a,0xe8,0xab,0x87,0x54,0x75,0xe9,0x4c,0x6c,0xc3,0x29,0x1f,0x0b,0x88,0x20,0xdc,0x85,0xe2,0x0f,0x32,0xfc,0x53,0xb2,0x4a,0xe6,0x89,0x78,},{0x09,0xc0,0x45,0xe4,0xbd,0x51,0x37,0x31,0x4c,0x0e,0xc1,0xd0,0x31,0xfa,0xf9,0x14,0x91,0x0c,0x45,0xa4,0x67,0x6f,0x5a,0x3c,0xd8,0xf5,0x81,0xbc,0xcc,0xb0,0x3c,0x97,},{0x72,0xce,0x9f,0x91,0xbe,0x2e,0x66,0xcf,0xc9,0x0f,0x95,0x25,0x95,0x94,0x6f,0xfc,0x90,0xbf,0xce,0x53,0x08,0x7d,0x49,0xe5,0xdd,0x7c,0x08,0x7f,0x3f,0xaa,0x8f,0x18,0xf2,0x35,0x6d,0xe9,0x71,0xe4,0x42,0x9d,0x98,0x5a,0x99,0x19,0x4b,0x4f,0x92,0xce,0xd3,0xef,0x47,0xcd,0x71,0x14,0x37,0x9e,0x0b,0x32,0x67,0xa9,0xf8,0xb1,0xe7,0x06,},\"\\x3b\\x89\\xde\\xcc\\xb7\\x02\\x3e\\x4b\\x2b\\x7a\\xff\\x2c\\x39\\x51\\x87\\x0a\\xf4\\x13\\xa9\\xb0\\x4d\\xd8\\x6a\\xc7\\x8b\\x7c\\x8f\\xd8\\x87\\x49\\x2d\\x8d\\xde\\x49\\xd8\\xfd\\xa1\\x49\\xed\\xd5\\x47\\x81\\xae\\x2b\\x50\\x80\\x30\\xd1\\x44\\x16\\xa9\\xa3\\x8b\\xed\\x2b\\x9a\\xeb\\xbb\\xb2\\x02\\x50\\xb3\\xc9\\x31\\xac\\xd4\\xe3\\x2f\\xbe\\xee\\xc5\\xa2\\x65\\x01\\xbe\\xab\\x72\\x68\\xd1\\x44\\xfc\\xe8\\x95\\x1a\\x10\\x1c\\x4b\\x51\\x78\\x16\\x6f\\xbb\\x59\\x27\\xb1\\xdf\\xb1\\xe1\\xce\\x90\\xd1\\xd1\\x23\\x06\\x8e\\x3f\\x47\\x2c\\x88\\x8f\\xdb\\x01\\xfd\\xf7\\x0e\\x7f\\x8d\\xe9\\xb0\\xad\\xb2\\x84\\xb7\\x11\\x9f\\x55\\x35\\x43\\x16\\xf8\\x4e\\xd0\\x90\\x03\\x0f\\x9c\\x26\\x62\\x06\\x1c\\xa4\\x84\\x47\\xcc\\x0a\\xef\\x96\\x41\\x26\"},\n{{0x3b,0xdb,0x16,0x24,0x65,0xea,0xce,0xff,0x98,0xd6,0x9c,0x86,0xf7,0x00,0x39,0xc5,0x17,0xd1,0x68,0xae,0xfe,0x6b,0xb1,0x01,0xb4,0xf7,0x69,0xa8,0x6b,0x17,0xc9,0x72,},{0xd7,0x6c,0xb7,0xbe,0x74,0x32,0x82,0x89,0xfd,0x1c,0x64,0xbe,0x74,0x7c,0xca,0x5b,0xb3,0x02,0x95,0xdf,0xac,0xcd,0x0f,0x2e,0x43,0xf5,0x17,0x03,0xfd,0x5d,0x36,0x83,},{0x6f,0x13,0x62,0xa4,0x02,0x06,0x37,0x91,0xf9,0x50,0x98,0x4f,0x54,0x49,0x28,0xe6,0x16,0xa4,0xef,0x79,0xbb,0xeb,0x68,0x54,0xe9,0x61,0x5a,0xab,0x9c,0xdb,0xae,0xc4,0x83,0xfb,0x9a,0x04,0xbf,0x22,0xde,0x5d,0x97,0xa1,0x5b,0xda,0x2d,0x39,0x04,0x83,0xc7,0xf6,0x1d,0xbe,0xe0,0x7b,0xb5,0x14,0x1f,0xc1,0x73,0xb1,0xaa,0x47,0x65,0x0d,},\"\\xfb\\xf3\\x68\\xfe\\xae\\xba\\x87\\x91\\x8b\\x1b\\x8c\\x7b\\x8a\\x26\\x83\\x2b\\xe6\\xe7\\xfc\\x1c\\xbd\\xb8\\x90\\x25\\x19\\x28\\x1a\\x06\\x54\\xec\\x73\\xde\\x0b\\xb0\\x71\\x01\\xa9\\xd6\\x03\\xf7\\x45\\xd4\\xec\\x23\\x57\\xae\\xe9\\x87\\x0c\\xb1\\x9a\\x56\\xcb\\x44\\xfb\\xd9\\xc9\\x1f\\xc3\\x47\\x52\\x61\\x2f\\xbd\\x83\\xd6\\xfc\\x1a\\x16\\xbf\\x8a\\x85\\xa2\\x15\\xd0\\x14\\x8e\\x4a\\xf3\\x7d\\x29\\x84\\x67\\xe5\\xcc\\x48\\x6b\\x13\\x13\\x52\\xce\\x09\\x21\\x82\\xce\\x82\\x84\\x15\\x9a\\x38\\x12\\xb3\\x0b\\xac\\xbf\\xf5\\x95\\x86\\x38\\x11\\xbf\\x9a\\x30\\xa9\\xda\\x49\\x45\\x65\\xc3\\xac\\x18\\x14\\x43\\x00\\x18\\xea\\x0e\\xee\\xd3\\x9c\\xdb\\xca\\x27\\xf9\\x31\\x40\\xe4\\x69\\x49\\xdb\\x57\\x0b\\xfa\\x2e\\xd4\\xf4\\x07\\x3f\\x88\\x33\"},\n{{0xd5,0xef,0xe5,0x1d,0x5c,0xd8,0xe1,0x08,0xbd,0x92,0x2f,0xc0,0xea,0x12,0x61,0x90,0xa9,0x46,0x28,0xff,0xa5,0x3c,0x43,0x3a,0x51,0x80,0x22,0x79,0x2d,0xdc,0x78,0xef,},{0x42,0x6b,0x01,0xcc,0x61,0xff,0x5e,0x0e,0x72,0x4d,0xa1,0xd3,0xb2,0x97,0xf5,0x32,0x5c,0x18,0xc6,0x2f,0x64,0xd5,0xeb,0x48,0xd4,0xa5,0x21,0x6a,0x8e,0x9a,0x40,0x73,},{0x23,0x06,0xf5,0x8f,0xcd,0x4c,0xff,0x22,0x22,0xd8,0x1b,0x05,0xa4,0x75,0x53,0x2b,0x8b,0x19,0xdc,0x67,0xe6,0xd7,0x8d,0xdb,0x42,0x05,0xa3,0xb7,0x62,0x1c,0xc5,0xae,0xf0,0xb3,0x93,0xd5,0xd2,0x4d,0xd9,0x6c,0x88,0xcc,0xbc,0x53,0xa3,0x20,0x8d,0xa3,0x23,0xbe,0x45,0x87,0xd5,0xec,0x06,0x7c,0x82,0x0f,0x07,0x23,0xaa,0x44,0xe9,0x0e,},\"\\x9d\\x17\\xbc\\xfe\\x2d\\xfc\\x74\\x2f\\x41\\x1c\\xb5\\x3a\\x94\\xf3\\x59\\xc0\\x01\\xab\\xf0\\x96\\xc7\\x41\\xf3\\x4a\\xf4\\x86\\x79\\xf2\\x81\\xe7\\xce\\x6b\\xbd\\x9e\\x87\\x70\\x9f\\xc0\\x72\\x8a\\x56\\x3d\\xb2\\xb9\\xcf\\x8e\\xa4\\xfb\\xdc\\xc3\\x44\\xc1\\x84\\x8e\\x65\\x3c\\xe9\\x70\\xc6\\xce\\x29\\xde\\x2c\\xcd\\x52\\x03\\x00\\x64\\x9a\\xdc\\xdd\\xfc\\x75\\x39\\x71\\xf8\\x46\\xaa\\xc1\\xba\\x42\\xae\\x45\\x28\\x95\\x2d\\x94\\x98\\x0a\\xa7\\xc6\\xcf\\xa2\\x14\\x29\\x07\\x64\\x7f\\x89\\x4a\\xe9\\x74\\xa7\\x4d\\x59\\x03\\x5a\\x73\\xef\\x56\\xa1\\x0b\\x66\\x12\\x62\\x48\\x09\\x52\\x01\\x90\\xac\\xe6\\x61\\xc3\\xa4\\x70\\x95\\xe0\\x32\\x2e\\xfd\\x78\\x1d\\x50\\xd1\\x16\\x35\\x98\\xf2\\xda\\x32\\xf3\\x1b\\xc9\\xc4\\xf9\\x13\\xd1\\xb1\\x48\\x61\"},\n{{0x18,0xaf,0x89,0x02,0x5e,0xbf,0xa7,0x6b,0xd5,0x57,0xcf,0xb2,0xdf,0xf1,0x48,0x24,0x52,0x14,0x64,0x1f,0xd5,0xbd,0xa1,0x59,0xf7,0x3d,0xa0,0x4b,0x08,0xe8,0x7c,0x88,},{0x0c,0x58,0x44,0x59,0xb9,0xeb,0xcc,0xca,0xd5,0x87,0xb2,0x72,0x16,0x0b,0xc6,0x0b,0x27,0xf4,0xf7,0x72,0xb4,0x32,0x1d,0xe7,0x72,0x3a,0xfe,0xf5,0x77,0xed,0xc7,0xb4,},{0x26,0xbb,0x08,0x82,0x29,0x7c,0x2c,0x08,0xa7,0x52,0xd3,0x98,0x11,0x45,0xdc,0xde,0x55,0x89,0x3a,0x11,0xdf,0x77,0xf8,0xaa,0x4c,0x19,0xd0,0xb9,0xed,0x6e,0x52,0x20,0xed,0x12,0xe9,0xfa,0xc3,0xaf,0x13,0xd0,0xf0,0xc7,0x15,0x68,0xf4,0xa5,0x47,0xd3,0x01,0x14,0xa6,0x59,0x9a,0x23,0x68,0x06,0xc4,0xbe,0xee,0x67,0x65,0x28,0x44,0x08,},\"\\xe8\\x2f\\x46\\x65\\x2a\\xb9\\x14\\xaf\\x53\\x5d\\x8f\\xb7\\x20\\xb5\\x57\\xac\\x95\\x01\\x8d\\x9f\\x2a\\x3f\\xcc\\xe8\\x57\\x71\\xbb\\x40\\xab\\x14\\xcb\\x9a\\x98\\x6e\\x09\\x6f\\x3a\\xfe\\x5b\\xee\\x82\\x9d\\xfd\\x8b\\x97\\x33\\x5c\\x53\\x6a\\xc9\\x71\\xa2\\x16\\x55\\xaf\\x16\\xa2\\xf8\\xfd\\xba\\x18\\x3a\\x4e\\x18\\x56\\x4c\\x21\\x49\\x29\\x56\\x53\\x7a\\x41\\x9a\\xbb\\xbb\\xb0\\x2a\\x4b\\xbd\\xc0\\x14\\x81\\xf5\\xc6\\xe6\\x58\\xec\\xf3\\xc3\\x4f\\x01\\x1a\\xd8\\x46\\xf5\\xed\\xcd\\x49\\x39\\x19\\x5d\\xf8\\x5e\\x41\\x30\\x3f\\xb9\\xa8\\x8f\\xdf\\xbd\\x70\\x43\\x96\\xf7\\x55\\x9a\\x32\\x73\\x18\\xb9\\x52\\xb3\\xe6\\x0c\\xe8\\xdd\\xde\\x56\\x37\\x85\\x79\\x23\\x2f\\xaf\\x95\\x0c\\x78\\xe7\\xf0\\xb1\\x7c\\x3b\\x8d\\xec\\xe3\\x6b\\x78\\x8a\\x84\\x73\"},\n{{0x0c,0x93,0xd9,0x98,0x15,0xff,0xf8,0xfe,0x22,0xb9,0xe4,0x5a,0xa0,0x2b,0x3e,0x64,0x45,0xce,0x1d,0x6b,0xf5,0xa6,0x5d,0xce,0x3d,0xa1,0x07,0xaa,0x10,0x55,0x94,0x0e,},{0x4d,0x27,0xa4,0x7b,0x0f,0xc8,0x08,0x00,0xd8,0x4d,0x24,0x4e,0xeb,0xb1,0xde,0xb4,0x43,0x6d,0x97,0x63,0x3a,0x83,0xe6,0x71,0x25,0xad,0x52,0xea,0x01,0x68,0x50,0x57,},{0x7d,0xc4,0x46,0x7a,0xbc,0xf6,0x43,0x1a,0xdb,0x7c,0xcf,0xe8,0x68,0xea,0xc8,0xcd,0x8a,0x61,0x5a,0x0f,0xf6,0x5f,0x6a,0x9e,0x33,0x83,0x75,0xb1,0xaa,0xe3,0xc4,0x9a,0x12,0x6c,0x9e,0xba,0x79,0x42,0x6d,0x16,0x41,0xc6,0xb9,0x7c,0x3e,0x92,0xc1,0x94,0xe5,0xee,0x44,0x31,0xef,0xa2,0x43,0x9f,0xd4,0x50,0xf2,0xcd,0x01,0x8c,0x87,0x00,},\"\\x11\\xe8\\x77\\xde\\x58\\xc1\\x34\\xea\\xf4\\xc9\\xf1\\xb5\\x3c\\x3d\\xc4\\x51\\xd3\\xc0\\x55\\xf1\\x6b\\x09\\x62\\x27\\x25\\xb2\\x79\\x76\\x85\\x12\\xfe\\x10\\xa7\\xad\\xb0\\x76\\x5b\\x68\\x9e\\xc2\\x1d\\x5b\\x6e\\xfa\\xa1\\x9f\\x1b\\x9d\\x36\\x25\\x4d\\xf0\\xa9\\x36\\x7f\\x44\\x1b\\x26\\xbd\\xb9\\x0b\\x28\\xcb\\xc4\\x03\\xe5\\x07\\x40\\x82\\xfa\\x1f\\xed\\x58\\xe1\\x40\\xda\\xc9\\x7a\\xea\\xf4\\x83\\xe2\\xc1\\x3f\\x3c\\xc5\\x60\\xab\\xff\\xab\\xa0\\x5b\\x76\\x3f\\xee\\xdb\\x51\\xe6\\x06\\x98\\x15\\x1c\\xf5\\x6e\\xfd\\xf1\\xd3\\x7d\\x6c\\xe0\\x56\\x44\\x86\\x21\\x0f\\x05\\x2e\\x93\\x7f\\x2e\\xa2\\x6f\\x63\\xef\\xa5\\xd2\\x47\\xff\\x18\\x83\\x29\\xbb\\x1a\\xa8\\x3c\\xe3\\xf4\\xf3\\x5a\\x3d\\x7d\\xec\\x14\\x59\\x9e\\x5f\\xeb\\x7b\\x6d\\x5f\\xe4\\x29\\x6a\"},\n{{0x98,0x9e,0x99,0x94,0x56,0x35,0x19,0x2c,0x02,0x3c,0xc5,0x18,0x6f,0xc2,0x5b,0xba,0xef,0x47,0x24,0x07,0x75,0xd1,0x5a,0x56,0x19,0x5d,0x88,0xcd,0x07,0xc3,0x74,0x8e,},{0xca,0x0b,0xea,0xfd,0xf7,0x31,0xd8,0x93,0x01,0xf7,0x72,0x3c,0x5b,0xb7,0xe5,0xa1,0xc3,0xff,0x3e,0xab,0x27,0xc9,0x7d,0x71,0x1b,0xcd,0x76,0xe4,0x20,0x54,0xbe,0xe4,},{0xae,0xf7,0x56,0xbf,0xb8,0xa7,0x26,0x6e,0x17,0xd1,0x5f,0x3f,0x11,0xee,0x50,0xed,0x25,0xbe,0x42,0x0e,0x95,0xa0,0x74,0x22,0x71,0xeb,0xd1,0x22,0x94,0xe2,0xcb,0x96,0xea,0xd0,0x83,0xb8,0xff,0x0b,0x82,0x9d,0x2e,0xde,0xb1,0x4d,0xa8,0x6e,0x40,0x2e,0xf2,0x5e,0x6d,0x4a,0x5a,0x79,0x58,0xc1,0x84,0xed,0x10,0xc1,0x76,0xcb,0x57,0x0b,},\"\\xc4\\x84\\x14\\xf5\\xc7\\x57\\xd0\\x3c\\x52\\x3e\\xf3\\xf3\\xb8\\x51\\x07\\x71\\xb0\\xff\\x3b\\x4b\\x97\\xde\\x27\\x96\\x25\\xd3\\x49\\xec\\x18\\x5a\\x29\\x92\\x7a\\x66\\xb9\\x59\\x3b\\xa1\\x93\\x38\\xc2\\xf5\\xe4\\x13\\x1f\\x1a\\xc0\\x7e\\xa4\\x6d\\x2c\\x1b\\x6e\\x4a\\xb5\\x22\\x92\\x80\\xb2\\xe2\\xbb\\x9d\\x14\\x0d\\x1e\\xf7\\xaf\\x7b\\x16\\x92\\xbf\\x2d\\x09\\x7b\\x80\\xf8\\x11\\xad\\xcf\\xa9\\x5d\\x5c\\xbf\\x9e\\xee\\x92\\xa1\\x64\\x1c\\x55\\x2b\\x4b\\xe4\\xa0\\xd7\\x34\\xf0\\xaf\\xd4\\x70\\xb9\\xd7\\xf4\\xe4\\x57\\x78\\x95\\x1e\\x21\\xfc\\x53\\x4f\\x20\\x0a\\x12\\x8b\\x96\\xad\\xb8\\x37\\x3f\\x10\\xce\\xce\\xc2\\xda\\xc2\\x99\\x6a\\x06\\x2f\\xb3\\xc2\\x94\\x31\\x59\\x65\\xa9\\xd5\\xd7\\xb0\\x77\\xc4\\xb0\\x13\\xc6\\x4a\\x38\\x42\\x97\\x69\\xd2\\x3e\\xab\"},\n{{0x6b,0xdb,0xbe,0x06,0xd9,0xf4,0x21,0x9e,0xea,0x64,0x03,0xa3,0x57,0xb2,0x5e,0x56,0x19,0x92,0xfa,0xe0,0xf0,0xf6,0x14,0x56,0x1d,0xd8,0x6d,0x23,0xde,0x41,0x5a,0x43,},{0xed,0x52,0xdd,0x1c,0xce,0x32,0xd9,0xb4,0x85,0xe0,0x94,0x07,0x46,0x42,0x1d,0x36,0xb9,0xfd,0xe6,0xcd,0xf0,0x21,0x15,0x45,0xb6,0x34,0x04,0x4d,0x4b,0x3c,0xb8,0xf1,},{0x95,0x02,0x06,0x60,0x5b,0x0f,0x41,0x7c,0x90,0x84,0x3e,0x2c,0x8d,0x8e,0x66,0xc8,0x28,0xbb,0x10,0xb9,0x9b,0x36,0xee,0xee,0xe8,0xca,0xf2,0xe0,0xe5,0x48,0x4d,0x93,0xfe,0x02,0xbf,0x53,0x34,0x05,0xf4,0xbb,0x74,0xa5,0x0e,0x55,0x85,0xfa,0x0d,0xae,0xf4,0x82,0x1f,0x03,0x01,0xd0,0x1b,0x46,0x32,0x1b,0xaa,0x31,0xe1,0xf0,0x8d,0x03,},\"\\x58\\x2a\\xda\\x13\\xd6\\x92\\x93\\xe4\\x9b\\xbd\\x46\\x10\\x32\\xdf\\xea\\x1c\\xa2\\x02\\x5b\\x52\\xe0\\x13\\xa3\\x3a\\x03\\x87\\xfc\\xfc\\x5f\\x7c\\x0b\\x8e\\xc9\\x55\\x98\\x26\\x07\\xfc\\x90\\x1e\\x1b\\x7f\\x63\\x6a\\x9d\\x37\\x1e\\x1f\\x91\\xfe\\x47\\x6b\\xdd\\x44\\x85\\x6e\\x27\\x5d\\x67\\xef\\xa1\\x42\\x38\\x16\\x43\\x54\\xc2\\x31\\x12\\x4c\\x84\\xde\\x8f\\x5b\\x89\\xd5\\xa5\\x8e\\xa6\\x74\\x4b\\x4d\\x3b\\x3d\\x79\\x06\\x90\\x52\\x33\\xcc\\xe6\\x94\\xa6\\x4d\\x69\\x6f\\x5a\\x70\\x24\\xfc\\x90\\x33\\xb1\\xce\\x39\\x08\\x99\\xa3\\xb4\\x41\\xa4\\x8e\\x53\\xc7\\xc9\\xb3\\x0b\\xa1\\x2e\\x7d\\x61\\xf3\\x5f\\x15\\xe6\\x58\\xc7\\xcc\\x44\\x07\\xe2\\xf6\\x89\\xea\\x8a\\x55\\xd0\\x1b\\xf5\\xdb\\xac\\xb1\\x19\\x54\\x75\\x4f\\x92\\x0f\\x09\\xdb\\xd4\\x84\\x09\\xbb\\xb5\"},\n{{0xd7,0x61,0xc8,0xc5,0xa9,0x60,0x1b,0x91,0x45,0xb7,0xd0,0x51,0x24,0x9b,0x00,0x41,0x07,0xe4,0x52,0xe5,0x63,0x10,0x0c,0x6c,0x78,0x80,0x38,0xc9,0xee,0x8a,0xda,0xd7,},{0xe6,0x48,0x87,0x75,0xd6,0x40,0x7e,0xfc,0x7b,0x2b,0xca,0x89,0x0a,0x7f,0xc6,0x22,0x66,0xfc,0x54,0xcd,0xac,0x89,0x33,0x43,0xb4,0xf5,0x9a,0x19,0x6d,0x94,0x88,0x98,},{0x7a,0xb7,0x8b,0x64,0xe6,0xdb,0x35,0x9a,0x2d,0xc8,0x30,0x2e,0x10,0x92,0xed,0x66,0xfa,0x73,0x6b,0x53,0x62,0x53,0xa1,0xcd,0x90,0xfd,0xb8,0xc1,0x0e,0xfd,0x78,0x30,0x02,0x25,0xe1,0x91,0x96,0x35,0x99,0xba,0x54,0x9c,0xc8,0x59,0x20,0x9d,0xf0,0xff,0x61,0xcd,0x06,0x9b,0x03,0xd2,0x54,0xe6,0xe7,0xd7,0x6c,0x79,0x84,0x40,0xf9,0x07,},\"\\x84\\xea\\xd5\\xea\\xbd\\x2f\\xd4\\xb7\\xc7\\x9a\\x9a\\x92\\x8a\\xb8\\xee\\x0a\\x16\\xa5\\xfd\\x66\\x7a\\x05\\x7f\\x8a\\x25\\x46\\x63\\xd5\\x6d\\xaa\\xe1\\x56\\xd1\\xa4\\x9a\\xff\\xb2\\x99\\x61\\x37\\xb9\\xd8\\xb3\\x40\\xe6\\x35\\x73\\x2f\\x9d\\x2b\\x4c\\x60\\x21\\x84\\x42\\x54\\x1e\\x72\\xd2\\xb0\\x0e\\x1e\\xe7\\xa7\\x3c\\x3f\\x67\\xca\\xa4\\x99\\xfa\\x9d\\x07\\x0b\\x57\\xd0\\x76\\xdc\\xde\\x96\\xb0\\x76\\x47\\x23\\xc3\\xc6\\x59\\xc7\\xa0\\x0c\\x1b\\x78\\xb1\\x5c\\xcc\\x22\\x23\\x89\\x0b\\x51\\x06\\x7f\\xc8\\x1e\\x23\\xe9\\x45\\x8a\\xb0\\x68\\x3b\\xa6\\x26\\xa5\\x3d\\x0c\\x37\\x93\\xa5\\x8a\\x98\\x57\\xbb\\x44\\xb3\\xbd\\x85\\xbb\\x6c\\xe5\\x3a\\x85\\x69\\x4e\\x7f\\x53\\xcc\\x1b\\xd4\\x6d\\x50\\xed\\xa3\\x7d\\x81\\xf5\\x38\\x1b\\x51\\x3d\\x1f\\x38\\x33\\x9d\\x29\\x1b\"},\n{{0xc5,0xe0,0xc7,0xa7,0xbb,0x8b,0x7c,0xa0,0x7b,0xf0,0xa0,0x5e,0xa6,0x7e,0xff,0x6d,0xee,0xbf,0xe3,0x71,0x4e,0xe3,0xe1,0xa2,0x27,0xf4,0xdc,0x8e,0x24,0x2a,0x2f,0xa0,},{0x51,0x35,0xef,0xcd,0x90,0x52,0xbe,0xc5,0x7a,0x44,0x31,0xca,0xab,0xe8,0x26,0x80,0xee,0xc0,0xa3,0x3a,0xfd,0x59,0xb3,0x02,0x03,0xb2,0x80,0xba,0x12,0xbe,0x48,0x5c,},{0x2e,0x7f,0xde,0xb3,0x48,0x4d,0x0a,0x5e,0x8d,0xce,0x94,0x44,0x89,0x79,0x49,0x6b,0x06,0x42,0xca,0xbc,0x37,0x33,0xa5,0x1f,0x8c,0x3c,0x5c,0x51,0xc1,0x9a,0xe3,0x19,0x01,0x8d,0xa9,0x10,0x91,0xc2,0x38,0x5f,0x2f,0x4e,0x9a,0x59,0xed,0xbc,0xa2,0xab,0xd0,0xd0,0x85,0xee,0x40,0xd3,0xf0,0xd4,0x20,0x61,0xa5,0xa9,0x83,0x2a,0x37,0x0c,},\"\\x37\\x70\\xa6\\x78\\x66\\x52\\xc4\\xb7\\x8a\\x04\\x3e\\xdc\\xe0\\x7f\\x3e\\x20\\x4d\\x81\\x99\\x7c\\x42\\xaf\\xc2\\x23\\x31\\xf7\\x5a\\x54\\x94\\xa8\\x26\\xd7\\xcb\\x69\\xab\\x43\\x14\\xa4\\x73\\x72\\x10\\x58\\xa1\\x83\\x99\\x81\\xd5\\xb7\\x02\\x2d\\x0c\\xd8\\x67\\x03\\x77\\xda\\xf3\\x32\\x04\\x76\\xd2\\x5b\\x9f\\x55\\x95\\x61\\xd6\\x6e\\xe0\\xa7\\x09\\xfe\\x17\\x36\\x1e\\x2a\\x52\\x89\\x8f\\x57\\x53\\xc4\\xfb\\x43\\xbd\\x0c\\x98\\xb3\\x68\\xf5\\x12\\xad\\xc0\\x9c\\xd9\\x27\\xc6\\x62\\x26\\x76\\x92\\x6d\\x8c\\x2d\\x91\\xa1\\x4a\\xca\\x32\\xf2\\x26\\xf7\\x00\\x36\\xc1\\xc8\\x58\\xbc\\xff\\xc2\\xb5\\x9f\\x54\\xc1\\xc3\\x7b\\xf8\\x1e\\xb5\\x2e\\xcb\\x3f\\x00\\xda\\x60\\x2c\\x94\\x36\\x1b\\x52\\xa5\\xaf\\xdd\\xbf\\xd7\\xe0\\x50\\x36\\xe3\\x77\\x50\\x30\\x50\\x33\\x3b\\xe5\\x12\"},\n{{0x11,0xbb,0x47,0x48,0xd2,0x54,0x7e,0x61,0x96,0xbe,0x82,0x3c,0x9b,0xe7,0xaa,0x18,0x15,0x0c,0x20,0x4b,0x12,0xca,0x8d,0x73,0xc1,0xbd,0x46,0xb1,0x1a,0x54,0xb4,0x75,},{0xef,0xeb,0x42,0xda,0x28,0xd7,0x64,0x96,0x64,0x03,0xdd,0x30,0x0d,0x9f,0x94,0x51,0xb2,0x58,0xab,0x1c,0x80,0xdf,0x06,0xfe,0x59,0x43,0x15,0x3f,0x53,0x01,0xcc,0xcb,},{0x44,0xc5,0x8d,0xa4,0x9d,0x23,0x65,0xd2,0x70,0x29,0xd1,0xee,0xbb,0x3b,0xeb,0xf7,0xc0,0x32,0xd8,0x58,0xaa,0x07,0xe0,0x75,0x6b,0x1c,0x26,0xa5,0x41,0x2d,0x22,0x69,0x11,0x76,0x03,0x13,0x41,0xad,0x37,0xd7,0xbb,0x78,0x43,0x28,0x9e,0xb3,0x9d,0xb4,0x91,0x58,0x4c,0x1b,0x2a,0x1d,0xa2,0xe4,0xa2,0x64,0x9c,0x22,0x93,0x82,0x66,0x06,},\"\\xf4\\xb7\\x65\\xb2\\x58\\xba\\x35\\xb4\\x27\\x52\\x5c\\x7f\\x10\\xa4\\x6f\\x0b\\xcc\\xd3\\x57\\xec\\x1a\\xd5\\x2a\\x5b\\x13\\x94\\x17\\xa9\\xd3\\x89\\x4c\\x51\\x2d\\x89\\xeb\\x88\\xe6\\x81\\xb1\\xf3\\x0a\\xac\\x4c\\x11\\x5c\\xcf\\x36\\x54\\x5e\\x83\\xf3\\x78\\x34\\xc8\\x2e\\x83\\x00\\xcc\\x1e\\xb2\\x89\\xaf\\x43\\x75\\x96\\x8c\\x29\\xc0\\xff\\xef\\xb4\\x0e\\x15\\x6c\\x20\\xc0\\x43\\x26\\x69\\xac\\x8d\\xc0\\xa8\\x3c\\x13\\xb1\\xe8\\x55\\xa8\\x4a\\xd0\\x13\\x3c\\x40\\xc8\\x2c\\x87\\xee\\x1e\\x7d\\xd4\\x08\\x4d\\x74\\x1c\\x80\\xde\\x8a\\x7a\\x9f\\x77\\x59\\xe8\\x43\\xa5\\x62\\x09\\x9c\\x4d\\x7d\\xf8\\x75\\x35\\x20\\x39\\xff\\x4d\\x38\\x24\\x65\\x13\\x86\\xc9\\x77\\x59\\xff\\x7d\\xba\\x52\\x06\\x4e\\x6d\\x31\\x12\\xe0\\x80\\x81\\x9a\\xee\\x8c\\xe7\\x23\\xa1\\xa2\\xaa\\x46\\x4d\\x8a\"},\n{{0x74,0x52,0xa0,0x01,0x56,0xd7,0x94,0xed,0xeb,0xff,0x4a,0xdb,0x1f,0x7a,0x7e,0xec,0x26,0x21,0x7f,0xef,0x67,0xc3,0xd2,0x68,0x35,0x2b,0x2b,0x54,0x60,0xa7,0xdc,0x25,},{0x5f,0x4d,0xc3,0x38,0xcf,0xbd,0x38,0x4b,0x5f,0x1c,0x14,0xc2,0x26,0x70,0x14,0x46,0xb5,0x2b,0x1e,0x3e,0x2a,0x3c,0xba,0x1a,0x40,0xee,0x28,0x25,0x08,0x0d,0x1d,0xe6,},{0xa8,0xf9,0xfa,0x24,0xa3,0xde,0xa1,0x02,0x2e,0x73,0xf0,0xd8,0x8b,0x1c,0x37,0xd0,0x6d,0x0f,0x0b,0x20,0xbb,0xff,0x0e,0xcd,0xb4,0xa4,0x0c,0x86,0xd7,0xe4,0x75,0x61,0x7c,0x03,0x57,0x0a,0x74,0x19,0xd7,0x4b,0xa0,0xf1,0x32,0x70,0x96,0xbf,0x19,0xf0,0xd0,0xcf,0x9f,0x51,0xd4,0x83,0x11,0x2f,0x26,0x92,0x23,0x78,0x68,0x2f,0x48,0x07,},\"\\x8c\\x4e\\xe2\\x86\\x76\\x56\\xe3\\x3f\\x52\\x69\\x41\\x4d\\x77\\xb4\\x2d\\x8e\\x47\\x50\\xdb\\xa9\\x3c\\x41\\x8b\\xac\\xca\\x10\\x93\\x8c\\xc3\\xb5\\x70\\xc6\\x60\\x3d\\x52\\xc2\\x34\\x44\\x88\\x60\\x7b\\x2f\\x93\\x4f\\x6d\\x26\\x9f\\xcb\\x2a\\xd9\\x66\\x21\\x9b\\x1a\\xb1\\x14\\x72\\xf4\\x2c\\x67\\x2c\\xe2\\x05\\x92\\x49\\x0e\\xc5\\xba\\xf6\\xa2\\xd2\\xfc\\x8a\\x3e\\xe3\\x53\\x74\\xb1\\x90\\x2f\\xde\\xfc\\x78\\x70\\xb1\\xb6\\x26\\xfa\\x46\\xb1\\x2b\\x6c\\xee\\x24\\x1f\\x60\\x1a\\x9b\\x3f\\xe4\\xc5\\x08\\x12\\xe5\\x73\\xe6\\x75\\x2c\\xe2\\xc7\\x64\\x4e\\x33\\x67\\xa6\\xa6\\xb7\\x77\\x58\\xd8\\xe4\\x93\\x4b\\x58\\xaf\\x23\\xab\\xae\\x8f\\xec\\xac\\x25\\xed\\xd7\\x34\\x03\\x0e\\xe7\\xcf\\x39\\x90\\x7e\\x3e\\xed\\x81\\x86\\xa1\\x9a\\x80\\x71\\x03\\xa9\\xfc\\x49\\xd3\\x8f\\x4c\\x84\\x60\"},\n{{0x88,0x0e,0xf1,0x06,0x73,0x3f,0x04,0xe7,0x61,0x95,0xeb,0xa2,0x80,0xb3,0xfa,0xdd,0xa0,0xf2,0x5d,0xcf,0x96,0xa6,0xa9,0x9c,0x8c,0xcf,0x84,0x2c,0x68,0xaf,0xda,0xe5,},{0x70,0xce,0xe3,0x3d,0x41,0xc7,0x28,0xce,0x7b,0x14,0x19,0x31,0xe6,0xe8,0x52,0x45,0x67,0xd7,0x60,0x1e,0xb7,0x9f,0x67,0xfd,0xcd,0x07,0xb9,0xd6,0x82,0xc6,0x50,0xf0,},{0xff,0x6c,0xae,0xdd,0x8a,0x46,0x8a,0xa0,0x7d,0x4c,0x6e,0x71,0x31,0xbb,0xda,0x76,0x18,0x2b,0xa9,0x58,0x64,0x93,0x76,0xe7,0x11,0xf4,0x4c,0x7b,0xba,0xcb,0xa6,0x07,0x7b,0xea,0x87,0x8b,0xa5,0x94,0x9c,0xde,0xee,0xf0,0x5c,0xfd,0x49,0x83,0xb0,0x05,0x7d,0x27,0x5e,0xa3,0xe1,0x8c,0x32,0x65,0x94,0x68,0xc3,0x0c,0x47,0xac,0x8f,0x0b,},\"\\xf4\\xf3\\x8d\\x07\\x7f\\x2b\\x03\\xda\\x82\\x1b\\xd3\\x6f\\xde\\x67\\x3d\\x66\\x6e\\x52\\xf4\\x83\\x2e\\x1c\\x0d\\xcf\\xee\\xf0\\x49\\x32\\x8a\\xcb\\x7b\\xd7\\x1a\\xd2\\xbf\\xc4\\x9c\\x12\\x35\\x16\\xe1\\x96\\xc4\\x70\\xdf\\x08\\x47\\xb3\\x84\\x8a\\x45\\xa2\\xc6\\x9b\\xea\\x03\\xe2\\xaf\\xa7\\xe5\\x82\\x05\\xb6\\x3b\\x52\\x38\\x14\\xfc\\x8e\\x24\\x2f\\x05\\x9c\\x69\\xff\\x7e\\x40\\xf9\\x7b\\xe8\\x12\\x5b\\x70\\xa5\\x4f\\xda\\xf3\\x5a\\xea\\xfa\\xc7\\x91\\x14\\xa7\\xb4\\x19\\xe6\\xbb\\x9e\\x70\\xbf\\x07\\xad\\xb5\\x59\\x81\\x96\\x00\\xdc\\x25\\xe5\\x1b\\x4b\\x70\\x0d\\x27\\xca\\x54\\x72\\xa0\\xe7\\xcb\\xbf\\xd1\\x4e\\x09\\x9f\\xaa\\x3a\\x72\\x00\\x2d\\xa5\\x38\\xcb\\xe4\\x5d\\x62\\x1e\\xf0\\xd5\\x25\\x2b\\xa2\\x9d\\x83\\xf8\\xb3\\xec\\x83\\x89\\xc9\\xce\\xb6\\xc6\\xb2\\xe8\\xd8\\xa2\\x0f\"},\n{{0xa2,0xd8,0x8f,0x37,0xec,0xc2,0xb2,0xc0,0x5d,0xd6,0xcb,0x31,0x59,0x96,0x2c,0x5f,0x64,0x6a,0x98,0x15,0xb2,0xfb,0x37,0x79,0x1f,0xc7,0xb6,0x06,0xe2,0x91,0x3e,0xd5,},{0x58,0xdd,0x67,0xd7,0xa1,0x5d,0x4c,0xa0,0x34,0x1a,0x4c,0x86,0x95,0x66,0xca,0xd8,0xc4,0xee,0x16,0xe5,0x83,0xa1,0x0b,0x48,0x24,0x17,0x3b,0x08,0x29,0x0d,0x92,0xd1,},{0xcc,0xf2,0x40,0x0c,0xd6,0x73,0xe1,0xef,0xfd,0x20,0x16,0x1d,0x7b,0x68,0xa5,0xfb,0x87,0xc1,0xe9,0x9d,0x36,0x35,0xd7,0x8c,0x2d,0xa1,0xb5,0x09,0xfa,0xc3,0x33,0x46,0xc0,0x69,0x16,0x3a,0x6c,0x46,0xc7,0x82,0x6a,0x48,0xbb,0xbd,0x03,0xb0,0x5e,0x6e,0x23,0x51,0xfa,0x62,0xbf,0x89,0xbf,0x7c,0xcf,0x9a,0x90,0x24,0xbd,0x15,0x7d,0x07,},\"\\xd1\\xb8\\x7e\\x9e\\x88\\x6d\\xfb\\xbd\\xc8\\xca\\x8a\\xb9\\x01\\x0e\\xcf\\x9b\\xba\\xf2\\x3f\\x72\\xab\\x3c\\xbe\\x76\\x9d\\xb1\\xd4\\x3c\\x2a\\x47\\x4a\\x81\\x65\\x1c\\x46\\x4e\\x9f\\xb9\\x27\\x34\\x63\\x46\\x41\\xc9\\x48\\x5a\\x02\\x39\\xb3\\x11\\x07\\x71\\xe7\\xf7\\x5e\\x05\\x25\\x2e\\x4d\\x8f\\x4c\\x0a\\xa1\\xba\\x08\\x62\\x6d\\x7e\\x96\\x31\\x7c\\x20\\xac\\xde\\x2a\\xd9\\x9b\\x23\\xbd\\xad\\xfd\\x6f\\x17\\x46\\x8e\\xb4\\x02\\xec\\x5e\\xef\\xa5\\x7b\\x47\\xca\\xf9\\x72\\xb3\\xdd\\x21\\xd8\\x9f\\x0e\\x29\\x89\\xff\\x87\\xd5\\x1e\\xd2\\xe2\\xd6\\x39\\xc1\\x64\\x4e\\x69\\x8c\\xbe\\x02\\x21\\xb8\\xe1\\x79\\xf3\\xcf\\xb0\\x4a\\x20\\xcb\\x24\\x70\\x21\\x6a\\x68\\x82\\xfb\\x4f\\xf7\\x99\\xe1\\x15\\x36\\xcf\\x64\\x21\\x9f\\x0c\\x07\\x51\\x76\\xbc\\x7c\\xf0\\xf6\\xc5\\xb7\\x92\\x5f\\xcd\\x61\\x55\"},\n{{0x42,0xaa,0xfd,0x0a,0xe2,0x6d,0xf1,0xe7,0xaa,0x02,0x76,0x86,0x0d,0x75,0x27,0x83,0xaf,0x97,0x28,0x04,0x39,0xbb,0x23,0xea,0xe4,0x6e,0x3f,0x84,0xca,0xac,0x78,0xde,},{0xda,0xa2,0x35,0x0a,0xdb,0x55,0xdb,0xa9,0xdf,0x7d,0x7a,0xf5,0x10,0x19,0x98,0xfe,0x51,0x5d,0x31,0x1c,0x3c,0xba,0x3e,0xea,0xb9,0x13,0x82,0x33,0x19,0x0c,0x3b,0x4e,},{0x11,0x61,0x43,0x65,0x0b,0x6c,0x13,0x3d,0x61,0x78,0x59,0xdb,0x24,0x29,0xc2,0x91,0x35,0x79,0x79,0x0b,0x21,0x97,0xd7,0xb7,0xb1,0xb4,0x96,0x2b,0x32,0x87,0x21,0x03,0x2c,0xee,0xca,0x58,0xb2,0xd5,0x64,0x39,0xe2,0x33,0xbb,0x84,0xdc,0x52,0x5e,0x28,0x4f,0xf8,0xdf,0x2b,0xde,0x1d,0xb4,0x98,0x6f,0xaf,0xd2,0x1b,0x3d,0x7d,0x6a,0x0a,},\"\\x72\\x13\\x1b\\x80\\xad\\x59\\x9b\\x6f\\x5f\\xf6\\x98\\x54\\x7d\\x16\\xe7\\x49\\x9d\\x71\\x27\\x5e\\x4e\\x9b\\x30\\x52\\x6a\\x5a\\xac\\x0b\\x0c\\x8b\\x14\\xfa\\x4a\\x54\\x0c\\xfb\\x11\\x45\\xfc\\x00\\x44\\x18\\xbc\\xd3\\x18\\xc1\\xa7\\x0e\\x62\\x69\\xa3\\xfb\\x69\\xba\\xed\\x86\\xf3\\x63\\xf5\\xb8\\xf9\\x7f\\x56\\x9c\\x20\\xd4\\xf4\\x99\\x0e\\x7b\\xb4\\xd0\\xc3\\x99\\x21\\x26\\x8d\\x63\\x6e\\xd0\\x55\\x4b\\xd6\\x2a\\xcf\\xca\\xcd\\x3b\\x8e\\x03\\x02\\x17\\xaa\\xfa\\xc3\\x04\\x4c\\x03\\x7e\\x0f\\x94\\xda\\x18\\xc6\\xb9\\xa0\\x93\\x2c\\x3c\\x58\\x75\\xd3\\xa9\\x3f\\xbd\\xad\\xcf\\x67\\x96\\x4e\\xec\\x9e\\xc2\\xbe\\x69\\xb4\\x8f\\x02\\x0f\\x6c\\x98\\x74\\xde\\x5f\\x8a\\x51\\x67\\xb5\\xee\\x02\\x4a\\x2c\\x2e\\xfd\\x0c\\xdc\\xd2\\xac\\xd8\\xc1\\xf7\\x87\\x81\\x41\\x41\\xe3\\x0b\\x38\\xb1\\x63\\x17\\x5b\"},\n{{0xb6,0x9c,0x33,0xb1,0x1b,0xa6,0x78,0x41,0xc3,0xd4,0xe6,0xf9,0x23,0x4e,0x35,0x37,0x0a,0x28,0xb4,0x76,0x62,0xac,0x56,0x0b,0x27,0xc0,0x78,0xb6,0x6a,0xb1,0xb0,0x21,},{0x9d,0xf6,0x8e,0x9a,0xcf,0x67,0x37,0x92,0x61,0x74,0x4d,0xb5,0xd1,0xe3,0x77,0x89,0x2f,0x2b,0x69,0x2e,0xd5,0xa3,0x8b,0x37,0x07,0x3c,0x04,0xde,0x5d,0x22,0x67,0x37,},{0x24,0x36,0x8f,0xee,0x5b,0xd8,0x48,0xb4,0xc6,0x61,0xa3,0xbe,0x4f,0x31,0x0c,0xfc,0x43,0x6e,0x79,0xec,0x4a,0x78,0x50,0x1b,0x81,0x09,0x5f,0xe5,0x16,0x14,0x23,0x1b,0x6c,0xa1,0xab,0x12,0x69,0x99,0x6a,0xd2,0xe9,0x8e,0x29,0x97,0x81,0xaf,0x8e,0x29,0x80,0x4b,0x24,0xfe,0x56,0x79,0xca,0x3b,0xa6,0x50,0xc5,0xc4,0xcc,0x58,0xce,0x01,},\"\\xf9\\xea\\x12\\x6d\\x3a\\xb2\\x19\\x61\\xaa\\x24\\x33\\x90\\x0a\\x39\\x82\\xb8\\x3e\\x0e\\xf8\\x6d\\x52\\xd1\\x34\\x40\\xaf\\xa4\\x81\\x7f\\x9b\\x82\\x2f\\xb5\\x82\\xcc\\x39\\x32\\xbf\\x45\\x0d\\x46\\x77\\xc9\\x18\\x81\\x81\\xfe\\x75\\x26\\xad\\x6f\\xe5\\xab\\xc6\\x1d\\x0a\\xe7\\x59\\xf2\\x15\\x01\\x3c\\x0b\\x2b\\x41\\x06\\x4c\\xb6\\x27\\x8b\\xa7\\xe3\\x9e\\x2f\\x4c\\x10\\xd6\\xcc\\x96\\x05\\xb3\\x86\\x9e\\x16\\x9d\\x7d\\xa4\\x2e\\x88\\xeb\\x85\\x78\\x70\\xfe\\x61\\x18\\xbb\\x02\\xbc\\x08\\xc8\\x05\\x5f\\x0c\\x18\\x9b\\x62\\xf7\\x9f\\xb1\\x46\\xb4\\xc5\\x43\\xaa\\x30\\xcc\\x0c\\xd5\\x7f\\x03\\x7e\\x9e\\xf7\\xa6\\x37\\x11\\xf6\\x6e\\x6f\\x28\\x78\\x93\\x17\\x02\\x20\\x27\\x02\\x61\\x42\\x77\\xd5\\x13\\xf0\\x85\\x0b\\x75\\x85\\x49\\x33\\x6b\\x30\\xcf\\x40\\xab\\x8b\\xd4\\x60\\xe6\\x0e\\x12\\xde\\xed\\x04\"},\n{{0x7b,0x63,0x61,0x3f,0x6d,0xae,0x01,0xcd,0xcd,0x5e,0x6b,0x37,0x68,0x69,0x71,0xcd,0x8d,0x8a,0x99,0x54,0x2f,0x63,0x29,0xa1,0x28,0x54,0xa9,0xd8,0xff,0x81,0x05,0xac,},{0x72,0xec,0x43,0xfa,0xf3,0x4d,0x87,0x30,0x17,0x7d,0x1f,0x07,0x43,0xc7,0x4c,0x20,0xbf,0x72,0xc2,0x39,0x4b,0x8a,0x7d,0x47,0x1f,0xfe,0x2a,0x04,0xab,0x00,0x81,0x1c,},{0x76,0xf5,0x0b,0x2b,0x9c,0x2a,0xd9,0x7b,0xfb,0x94,0x99,0xee,0x41,0x92,0x8a,0xc0,0x72,0xda,0x5e,0x8b,0xc7,0x1d,0x02,0x12,0x55,0x09,0x42,0x33,0x2b,0x62,0xe7,0x0c,0x8b,0xfe,0x1c,0x72,0x25,0x42,0x39,0x46,0x88,0xde,0xcd,0x91,0x7a,0xec,0x8f,0x95,0x35,0x3e,0x1d,0x72,0x62,0x4b,0x70,0xeb,0xed,0x5d,0x17,0xf6,0xc5,0x49,0x77,0x02,},\"\\x18\\x16\\x48\\x8f\\x1f\\xc8\\x3e\\x1e\\xd5\\x91\\x16\\x37\\xdd\\x42\\xba\\x20\\x77\\x65\\x7d\\xfe\\x1a\\xe4\\x22\\xad\\x0a\\xee\\x59\\xdf\\x9d\\xd5\\x6a\\x27\\x63\\xc2\\xdd\\x0e\\xf6\\x1a\\x12\\xbb\\x82\\x5b\\x0d\\xac\\x1e\\xda\\x5f\\xbb\\x69\\x1c\\x5e\\xd5\\x8f\\x3f\\xb3\\x25\\x05\\x0b\\x45\\x63\\xa4\\x04\\x20\\x99\\x98\\x2f\\xff\\xa5\\xd6\\xed\\x74\\x2d\\x95\\x82\\x3d\\xa8\\xe1\\x78\\x7c\\xf7\\x46\\xef\\x63\\xb3\\xfb\\xb0\\xe8\\x8a\\x6c\\x0b\\xea\\xe4\\xf7\\x31\\x83\\x66\\x93\\x6b\\x49\\x17\\xf5\\x07\\x33\\x60\\x68\\xb1\\x94\\x68\\x09\\x00\\xa7\\xbf\\x4a\\x6f\\xb6\\x9a\\x5c\\x38\\x7b\\x97\\xe3\\x1b\\xc7\\xf9\\xbe\\x53\\xc2\\xa8\\x9e\\x36\\x51\\xce\\x1d\\xe4\\x1b\\x10\\xe9\\x21\\xb2\\x06\\xeb\\xf3\\x2e\\x56\\x21\\xef\\x80\\x81\\x61\\x6d\\xcd\\x7a\\x20\\x59\\x43\\x7e\\xfa\\xd0\\x14\\xbb\\x8e\\x2c\\x82\\x21\"},\n{{0x35,0x58,0xd3,0xa7,0x43,0x95,0xbd,0xcb,0xa5,0x60,0xe2,0xc4,0x5a,0x91,0x96,0x0c,0xec,0x6c,0xb3,0xed,0xbc,0xd3,0x0e,0x72,0x2f,0x7f,0x05,0x52,0x10,0xf3,0x7b,0x51,},{0x53,0x4f,0x43,0xeb,0xa4,0x03,0xa8,0x4f,0x25,0x96,0x7c,0x15,0x2d,0x93,0xa0,0x17,0x5e,0xc8,0x29,0x3e,0x6f,0x43,0x75,0x31,0x9e,0xad,0xf9,0x57,0x40,0x1f,0xbb,0xd2,},{0xb3,0x65,0xb5,0x56,0x1a,0x13,0xa5,0x45,0x17,0xcf,0x90,0xd8,0x8b,0x35,0xeb,0x09,0x67,0xd6,0xd5,0x84,0x14,0xb8,0xc1,0x54,0x7e,0x69,0x31,0x59,0xe0,0x13,0x78,0x56,0x36,0x54,0xc5,0x0f,0xb4,0x23,0x23,0xf0,0x9d,0xd7,0x8f,0xfe,0x28,0x05,0x6d,0xdf,0xa5,0x4f,0xeb,0xf4,0x48,0x91,0xe8,0xa7,0x41,0xb6,0xa1,0x68,0x7d,0x72,0x86,0x05,},\"\\xbe\\x75\\x44\\x4f\\x9c\\xe6\\xbe\\x1d\\x83\\xaf\\x62\\x2a\\x8c\\x47\\x8d\\x51\\x01\\x27\\xdb\\x56\\xf1\\xde\\x6e\\xb8\\xa5\\x12\\x65\\x22\\xb0\\x9f\\xdc\\x6c\\xa0\\x86\\x2c\\xec\\x0b\\x8b\\x2a\\xaf\\xa3\\x1c\\x17\\xa2\\xcc\\x47\\x7d\\xa5\\x33\\xd2\\x76\\xa1\\xae\\x4f\\x8e\\x07\\x59\\xd6\\xaf\\xa0\\xb1\\x74\\x11\\xb5\\x17\\x0b\\x52\\xf2\\x05\\x47\\xc7\\x2f\\x3e\\x88\\xd4\\x8c\\xb4\\x56\\xfe\\x62\\x5b\\x62\\xfe\\xb0\\xf8\\x13\\x17\\xed\\xf1\\xec\\x09\\xec\\xe5\\x34\\xb9\\xf5\\x00\\xd4\\xe1\\xb1\\xbd\\xa2\\xdb\\x21\\x98\\x2a\\xa9\\x50\\x94\\x22\\x6e\\xe9\\xf5\\xb0\\xa6\\x5d\\xa8\\x3f\\x91\\x12\\x1c\\x96\\xb3\\xb4\\x01\\x0a\\xe7\\x82\\x6c\\x9e\\x80\\x63\\x6c\\xba\\x00\\xf7\\x0c\\x3c\\x8a\\x27\\x9b\\x01\\xb9\\x52\\x94\\xcb\\x85\\x0f\\x91\\x70\\x9f\\x43\\x76\\x66\\x2a\\x58\\x0b\\x15\\xac\\x29\\x81\\xaf\\xe9\\xf8\\x54\"},\n{{0xa3,0x5b,0x92,0xf2,0x44,0x06,0x3a,0x19,0xbb,0x5e,0x3e,0xd4,0xd6,0x99,0xed,0x20,0x69,0x60,0x71,0x16,0xd2,0xbd,0x08,0x11,0x3f,0x0d,0x83,0x73,0x61,0x3f,0x35,0xb7,},{0x7e,0xc9,0x36,0x01,0x86,0x4e,0xe4,0x99,0x5a,0x4f,0x7a,0xbc,0xd3,0xdf,0xc1,0x01,0xe9,0xe7,0xf3,0x69,0xe6,0x3d,0xe1,0xae,0x68,0xa0,0x7a,0xa7,0xf0,0x75,0xb3,0x29,},{0xa2,0x3d,0xbe,0x37,0x57,0xe4,0x78,0xdb,0xc8,0x4d,0x3d,0xb3,0xa9,0x33,0xb0,0x42,0x8c,0xed,0xb6,0xb0,0x1b,0x86,0xd8,0xd7,0x3f,0x39,0x59,0x87,0x8d,0xae,0x6f,0x05,0x88,0xf5,0x05,0xcd,0x4d,0x39,0xf2,0xab,0x46,0x77,0xb6,0x48,0x05,0xd6,0x29,0x65,0x2a,0x22,0x52,0x98,0x25,0xc3,0xa9,0x1d,0x04,0x37,0x49,0xfc,0x71,0xf0,0x37,0x06,},\"\\x65\\xcd\\x36\\xda\\xe0\\x16\\x8d\\x69\\x97\\x4f\\x95\\xf0\\x9d\\xd9\\xa5\\x9d\\xb7\\x99\\xf9\\x11\\xe1\\xa1\\x5b\\x85\\xa0\\x08\\x93\\xb8\\xc9\\xa3\\xd4\\x8a\\x2f\\x58\\xac\\x12\\x6b\\xfa\\xa0\\xa6\\x06\\xc0\\x5d\\x94\\x70\\x1d\\x27\\x3a\\xbf\\x7d\\x68\\x81\\x7f\\x2c\\x71\\xb1\\xc5\\x41\\x79\\x5c\\x4f\\x60\\x95\\xe2\\x6c\\x9d\\xff\\x80\\x3f\\x03\\x2f\\x75\\x66\\x3f\\xd1\\x69\\x8e\\xdd\\x97\\xff\\x3a\\x0e\\x72\\xe1\\xb7\\xc9\\x94\\x8b\\x08\\xba\\xcb\\x5f\\x7d\\xe5\\x02\\xb2\\xfe\\xa6\\x7c\\xa2\\xfe\\xf1\\x90\\xd6\\x0e\\xae\\x92\\xd1\\x51\\x58\\xda\\x44\\x4a\\x49\\xd2\\xe9\\xd5\\xa5\\x73\\xe8\\xe1\\x77\\xe8\\xbb\\xf7\\xe6\\xc4\\x9f\\x90\\x71\\x36\\xe7\\x1d\\x2a\\x66\\xcb\\x07\\x63\\x6d\\x48\\x76\\x8f\\xf4\\x17\\xc8\\xbe\\xcc\\xf4\\x32\\x31\\x81\\xfe\\xfb\\x31\\x24\\xe4\\x34\\x04\\x9e\\xa4\\x5d\\xd5\\x01\\x9e\\x40\\xb4\"},\n{{0x72,0xd4,0xa5,0x64,0xca,0x15,0x49,0x9b,0x5e,0x4e,0x75,0xd8,0xac,0x0f,0x28,0x21,0x7d,0x32,0x11,0x4a,0x0c,0x64,0x9a,0x7c,0x8e,0xaa,0xdd,0x0c,0xc7,0x8c,0x52,0x0b,},{0xc7,0x66,0xbd,0x73,0x83,0x7c,0x4f,0xaa,0x52,0x15,0x50,0x2f,0x1e,0xfc,0x90,0xc0,0x03,0xf7,0x11,0xbb,0xef,0x55,0x17,0x00,0x91,0x02,0x8a,0x34,0x49,0x34,0x08,0xa9,},{0x8f,0xc4,0xf1,0x79,0x33,0x0b,0x64,0x2d,0xd8,0x6c,0xa9,0x36,0x26,0x51,0xb8,0x3b,0x00,0x6d,0x83,0x75,0xcc,0xef,0x81,0x1d,0x3c,0x67,0x06,0xf9,0x15,0x94,0x65,0x1d,0xf2,0x76,0x99,0x53,0x72,0x30,0x46,0xcc,0xb9,0xbf,0xe6,0x6a,0x66,0x7e,0x0d,0x11,0xfc,0x3e,0xa2,0xd8,0x22,0x62,0x34,0xfd,0xd5,0x16,0x47,0x65,0x26,0x0f,0x7b,0x05,},\"\\x6c\\x7e\\x7b\\x62\\xeb\\x24\\x4a\\x45\\xd7\\x84\\x36\\xe2\\x97\\x0d\\xcd\\x6c\\x0f\\x7d\\xb8\\x22\\x97\\xa8\\x61\\x40\\xea\\x58\\xdd\\x22\\xc2\\x19\\x5a\\xdb\\xc9\\x56\\xd4\\xc4\\xec\\x05\\x35\\x4b\\x21\\xef\\xe2\\x4c\\xfc\\xfe\\x10\\xe1\\x76\\x22\\x36\\x88\\x48\\x18\\x0d\\x2c\\x46\\x80\\xcc\\x21\\x5e\\x8c\\xee\\xa6\\xcc\\xe2\\x22\\x16\\x1f\\x1e\\x09\\x22\\x39\\x25\\x3b\\x97\\x46\\xf7\\x88\\x7d\\xf2\\x42\\x5a\\xb5\\xa8\\x80\\xbd\\xba\\x98\\x15\\x3b\\xe7\\x86\\xdc\\x83\\x8c\\xbe\\xca\\x01\\x6b\\x1d\\x06\\x52\\x4b\\xd6\\xbf\\xba\\x80\\x9a\\x8b\\xb3\\x7a\\xda\\xb1\\x5d\\x42\\x41\\x5f\\x86\\xec\\x03\\x58\\x36\\x5e\\xa8\\x7b\\x81\\x50\\xb0\\x54\\x41\\xd9\\xd4\\x98\\x46\\x87\\x14\\x85\\xca\\xae\\x6d\\xe3\\x59\\x73\\x6c\\x27\\x18\\x97\\x36\\xd8\\xf1\\x76\\x5f\\x3e\\x5c\\x5f\\x6b\\x92\\x16\\x83\\x96\\x39\\x0b\\xee\\x94\\xcf\\xbd\"},\n{{0x2e,0x5a,0xaa,0xb2,0x98,0xe6,0x6c,0x2d,0xc1,0xd7,0x7e,0xa7,0x42,0x1f,0xf8,0x95,0x25,0x5f,0x9d,0x90,0x0d,0xb0,0x45,0x0d,0x63,0xf9,0xf7,0x9c,0x1a,0x70,0x13,0xcf,},{0x03,0x81,0xf3,0xf1,0x90,0x45,0x71,0x9b,0x9e,0x8c,0xeb,0x56,0x2f,0x0e,0x96,0x5d,0xc0,0x7b,0x09,0xf3,0x71,0xa9,0x63,0xa2,0x81,0xc7,0x49,0xc2,0x53,0x2f,0x65,0x4a,},{0x7c,0x74,0x30,0x30,0x5b,0x36,0x1a,0x9e,0x35,0xb2,0x78,0x0c,0x4d,0x44,0x08,0x07,0x1b,0x21,0x30,0x93,0x1d,0x39,0x83,0x0e,0xc8,0xd3,0x13,0xaa,0xfb,0xc8,0x3a,0x65,0xda,0xe1,0x9c,0xb7,0x47,0xd9,0xd1,0xc4,0xce,0x3f,0x35,0x9c,0xc8,0x24,0xea,0x8c,0x92,0xf6,0x6a,0x42,0xb8,0x61,0x4e,0x78,0x48,0xb8,0x84,0xac,0x8a,0xa4,0xae,0x02,},\"\\x3d\\xf0\\xe5\\x4c\\x71\\x1e\\x31\\x32\\xd7\\xae\\x95\\x3d\\xeb\\x7b\\x66\\x86\\x9e\\xe5\\x31\\xee\\x40\\xb6\\x3c\\xe6\\x93\\x20\\x6c\\xdb\\x2f\\x4b\\xda\\x0a\\x25\\x69\\xe9\\x13\\xac\\x3e\\x65\\x32\\xc5\\xd9\\x64\\x8e\\xfd\\x46\\x27\\x78\\x0f\\xb8\\xa3\\x1d\\x10\\x7e\\x03\\x3f\\x05\\x4d\\x19\\xed\\x8b\\x7c\\x49\\xdc\\x40\\x7d\\x2e\\x94\\x9d\\xe2\\x5f\\x99\\x30\\x72\\x21\\xd3\\x58\\x43\\xf6\\xd5\\xeb\\x7d\\xe5\\xcd\\xf4\\x1b\\x91\\xdb\\xbf\\x34\\xcb\\x6c\\x9c\\x53\\x00\\x21\\x01\\x4b\\x56\\xab\\xc4\\x4a\\xc2\\x30\\x03\\x13\\x61\\x56\\x08\\xa7\\xb4\\xa2\\x35\\xe9\\x9c\\x14\\xce\\xf8\\x05\\x08\\x87\\x03\\x22\\x09\\x48\\x8b\\x9e\\xae\\xaa\\x82\\xc0\\x94\\x05\\xfc\\x75\\xbe\\xc9\\x4d\\xd4\\x2d\\x6f\\xf1\\xb5\\x99\\xa6\\x3e\\xe5\\x74\\x2f\\x33\\x64\\x09\\x3a\\xc9\\x2c\\xab\\xab\\x30\\x35\\x82\\x2a\\xa8\\x67\\xae\\x56\\xdc\\xc9\\x9d\"},\n{{0xb6,0x36,0xa0,0x24,0x48,0x00,0x35,0x43,0xdb,0x86,0x4b,0x40,0xb5,0xd8,0xd6,0xdd,0x9a,0xd6,0x11,0x62,0x4c,0x9b,0x0f,0xc6,0x89,0x0c,0x51,0xea,0x55,0x92,0xc7,0x90,},{0x1e,0xf3,0x60,0x49,0x59,0x68,0xe5,0x6e,0x6d,0x3f,0xe7,0x40,0xb1,0xc8,0x4c,0x4e,0x44,0x90,0xed,0x68,0x2d,0xeb,0x43,0x05,0xaf,0xd5,0x96,0xef,0xb2,0x80,0x22,0x3b,},{0xd4,0xba,0x80,0x30,0x0d,0x5c,0xb5,0x13,0x53,0xc0,0x3f,0x28,0xc4,0x4f,0xd0,0xa4,0x24,0xff,0xe1,0xe4,0x0d,0x78,0xed,0x7b,0xb1,0x13,0x3e,0x8f,0xe4,0xe1,0x87,0x50,0x52,0x93,0xb2,0x0a,0x39,0x1d,0xa9,0x62,0xc6,0xa8,0xac,0x0a,0xce,0xc9,0xc6,0x72,0x26,0xaf,0x3b,0x61,0x95,0xda,0xbe,0x39,0xb3,0x66,0x22,0x94,0xda,0x3e,0x0e,0x09,},\"\\x4a\\xa8\\x5a\\xac\\x25\\x03\\x4f\\x61\\x4e\\xd4\\x4f\\x7a\\xdc\\xdb\\xee\\xec\\x25\\xfc\\xc2\\xa9\\xee\\xa3\\x2a\\xb6\\xa8\\x69\\x95\\x06\\xf7\\xa1\\xca\\xd3\\xbc\\x89\\x2e\\x9d\\xce\\x93\\x4e\\x75\\xb0\\xa8\\xcd\\x14\\x64\\x2b\\x77\\x85\\x99\\x28\\x6c\\xfd\\x8f\\x50\\xa9\\xe4\\xf2\\xed\\xf9\\xf9\\xd6\\x29\\x1a\\x2e\\x29\\x79\\xcf\\x18\\x06\\xb9\\x3e\\xd8\\xc9\\xa7\\x8f\\xae\\x19\\x9b\\x28\\x54\\xa0\\x3e\\xc4\\x06\\xab\\x3f\\x72\\x08\\x35\\xee\\x26\\x3f\\xbb\\xc9\\x1c\\xb4\\xef\\x07\\x58\\xd7\\x75\\xfc\\x78\\x4c\\x7d\\x5b\\x25\\x1a\\xc8\\x93\\x79\\x19\\xa9\\xe6\\x7b\\xe8\\x8c\\x9e\\x44\\xcf\\x2e\\xc7\\xf5\\x60\\x26\\x9a\\xa0\\xf1\\x11\\x3d\\x91\\xb8\\x44\\x01\\xdb\\x15\\xa3\\xc4\\x8c\\x7d\\xac\\xff\\x49\\x39\\xee\\x01\\xba\\xbb\\x98\\x2f\\xb9\\x56\\x25\\xc6\\xc3\\xad\\x78\\x74\\x90\\x60\\x55\\x1b\\xfd\\xe8\\xcc\\xe4\\xfb\\x8a\\x29\"},\n{{0x5c,0xa0,0x54,0x3c,0x71,0xf5,0x68,0xa0,0x0e,0xed,0xf5,0x0a,0x95,0x20,0xf4,0xc1,0x5b,0x52,0x6e,0x3f,0xb0,0xda,0x81,0x6c,0x29,0xea,0x3d,0x50,0xb2,0xf6,0x2a,0x12,},{0xd4,0xa2,0x93,0x3c,0xe1,0x94,0x54,0xe3,0x31,0xb5,0x28,0x01,0x00,0x20,0x9a,0x6c,0xe8,0xe5,0x69,0xf9,0x93,0xc2,0xac,0xab,0x51,0xdb,0xe8,0x64,0xc5,0xcb,0x25,0x63,},{0x43,0x68,0x23,0xee,0xff,0x3e,0xdc,0xe5,0xd8,0x58,0x7d,0x68,0xe5,0x47,0x3e,0xf3,0xd8,0xdc,0x94,0x65,0xb5,0x58,0xb6,0xe8,0xe7,0xcd,0x31,0x37,0xec,0xcc,0x80,0xb4,0xc4,0xe8,0x06,0xed,0xf1,0x36,0x19,0xd8,0xe7,0x17,0xe6,0x9f,0x48,0xd7,0x06,0x1b,0x68,0xde,0x02,0xc8,0x20,0x9b,0xe1,0xf7,0xac,0x26,0xba,0x8e,0xdf,0x60,0x6d,0x02,},\"\\x4e\\xf8\\x49\\x69\\x78\\xd2\\x8c\\x10\\xab\\xd5\\x4a\\x26\\x35\\x6e\\xe5\\x59\\x21\\xce\\xb3\\x50\\xdd\\x4b\\x74\\x2c\\x41\\x61\\xfb\\xeb\\xa8\\xa1\\x60\\x1f\\x8a\\xd0\\x48\\x4b\\x21\\xa8\\xcf\\x5a\\x29\\x4f\\xac\\x00\\xec\\x8a\\x6f\\x59\\xe3\\x36\\x2e\\x47\\xbf\\xae\\x1e\\x28\\xa2\\xe6\\xd0\\x17\\xc5\\xca\\xa7\\x5f\\xb0\\xf4\\x84\\x82\\x80\\x80\\x37\\xca\\x21\\x47\\x69\\x54\\xd7\\x78\\xff\\x1a\\x05\\x86\\xda\\x3e\\xf6\\x9d\\x6c\\xef\\x6d\\x2d\\x8d\\xf4\\xae\\x7a\\x85\\x44\\x2a\\x1e\\x46\\xc9\\x98\\xcf\\x40\\x7a\\x6a\\xd4\\xc5\\x46\\x3a\\x43\\xc2\\x48\\xf3\\xb6\\x93\\x7f\\xdb\\xc8\\x45\\xb6\\x0c\\x6d\\x85\\xe0\\x56\\x3c\\xc1\\x6b\\xa9\\x67\\x5d\\x36\\x4f\\x52\\x5f\\x66\\x9a\\xaa\\xc9\\x5f\\x42\\x8b\\xb5\\x82\\x05\\x09\\x9f\\x9e\\x4a\\x6d\\xbb\\xd0\\x15\\x1f\\xb6\\x5b\\xab\\xe1\\x23\\xe5\\x39\\x3a\\xd6\\x40\\x26\\x93\\x5c\\xb4\\x88\\xaa\"},\n{{0x5f,0x87,0x11,0x7d,0xa9,0xbb,0xb6,0x09,0x1c,0x94,0xda,0x6b,0x23,0x0b,0x7d,0x8f,0x6d,0xe0,0xed,0x2a,0x07,0x64,0x13,0xb9,0x2e,0xac,0xdc,0x43,0xab,0xbc,0x68,0x97,},{0xaa,0x78,0x6a,0x14,0x62,0x26,0x83,0x2a,0xa7,0x3c,0x43,0x4b,0x0e,0xdc,0x2d,0x41,0xd2,0x55,0x8f,0x82,0x0a,0xb8,0xf8,0x7e,0x09,0xe6,0xcd,0xa9,0x10,0x72,0xb9,0xb6,},{0x0f,0x19,0xe6,0xea,0x0c,0x05,0xf3,0x81,0x85,0xc0,0x1c,0x2d,0x64,0x77,0x99,0x5d,0xaf,0x50,0x65,0xba,0x9d,0x80,0x17,0x3f,0xa6,0xbb,0x23,0xa7,0x74,0xdc,0x88,0xb3,0xaa,0xe8,0x79,0xd8,0xa6,0x24,0x71,0xd2,0xd3,0x04,0xcc,0x3d,0xc6,0x62,0x78,0xa7,0xab,0xcb,0x0b,0xb0,0x77,0x1c,0xd2,0x78,0xe1,0x1e,0x7b,0x93,0x2e,0x9f,0x9b,0x0f,},\"\\x22\\x97\\xc4\\x0a\\x2e\\x83\\x65\\xba\\xe4\\xc5\\xf0\\x63\\x0c\\x50\\xb1\\x3b\\xdd\\x9a\\xd9\\x77\\x0a\\x5d\\x9a\\x94\\x51\\xd0\\x08\\x74\\xb0\\x23\\xd2\\x5e\\xcd\\x46\\x8b\\x96\\x57\\x1b\\x2f\\x16\\xdc\\xb1\\xb0\\xd3\\xd7\\x56\\xc1\\xf0\\x44\\xfc\\xdd\\xd1\\xc5\\x1f\\x27\\x72\\x7a\\x03\\x69\\xc9\\xcf\\x25\\xbd\\x6a\\xa5\\x95\\x51\\xb5\\xb0\\x7c\\xf8\\xf8\\x07\\xd9\\x2b\\x15\\x91\\x98\\x63\\x97\\x04\\x74\\x0f\\xe6\\xed\\xa0\\xf2\\x6d\\xba\\x7e\\x75\\xd4\\x53\\x0b\\x28\\x00\\xf0\\x3f\\xb6\\xaa\\x67\\x7d\\x84\\xdf\\x75\\xd6\\x8d\\x4f\\xbb\\x64\\xad\\x21\\x00\\x1e\\x3f\\xc8\\x7b\\x60\\x9b\\x9c\\x25\\x1e\\x8c\\xcb\\x12\\xbb\\xca\\x92\\x74\\x47\\xe2\\x05\\x4e\\x07\\x68\\x8e\\xb8\\xa2\\x05\\x21\\xa5\\x22\\x49\\xe7\\xb9\\x43\\xbe\\xd6\\x0e\\x6a\\x93\\xc0\\x1e\\x3e\\xb6\\x21\\xf0\\x46\\x0c\\x18\\xa6\\x90\\xb6\\xf6\\xb6\\x6e\\xdc\\x6e\\x87\\x43\\xa6\"},\n{{0xb5,0x3a,0x64,0x4c,0x92,0xba,0x2d,0xc7,0x10,0x8b,0x16,0x83,0x3f,0x09,0xad,0x59,0x17,0x84,0x64,0x37,0x22,0x5a,0x77,0x3d,0x32,0xd7,0x9c,0x97,0x73,0x3c,0x0a,0x58,},{0x51,0x58,0x18,0xc6,0x9c,0x0e,0x0a,0x17,0x06,0xb0,0x41,0x43,0x84,0x2f,0x3e,0x9e,0x27,0x14,0x48,0xfb,0xaf,0x3a,0x89,0x91,0x19,0xc3,0x2f,0x42,0x56,0x6f,0xfd,0x33,},{0x13,0xd2,0xcb,0xac,0x79,0x76,0xad,0x27,0xf0,0xbf,0x66,0x9a,0xd5,0x88,0xef,0xb2,0xc9,0x1b,0xab,0x85,0x07,0xd5,0x7f,0xb1,0x6b,0xfe,0xa9,0xca,0xff,0x2b,0x09,0x64,0xe7,0x56,0x25,0xc4,0xd8,0x08,0xd7,0xbb,0xb7,0x8c,0x5b,0x46,0x4e,0xdf,0xfe,0x49,0x49,0xec,0xfb,0xc8,0xb9,0x5f,0xf6,0xfd,0xb1,0xbd,0xca,0x27,0x42,0x06,0x81,0x00,},\"\\x13\\x03\\x6d\\xaa\\xee\\x45\\xfc\\xfd\\xe0\\xc5\\x3e\\x06\\xd0\\x5a\\xa9\\xc0\\x1e\\xa9\\x4a\\x67\\xe8\\x6c\\x6c\\x53\\x8c\\xcb\\x28\\x3b\\x36\\x8d\\xaf\\x70\\x78\\xd3\\xfb\\xab\\x58\\x0c\\x76\\xec\\xf8\\x2b\\x4e\\x96\\x60\\xf0\\x68\\xdc\\xbb\\x50\\x0b\\x80\\x59\\x50\\x17\\xc5\\xbe\\x3c\\x44\\x8f\\xbd\\x8a\\x17\\xd9\\x7c\\x56\\x43\\x19\\x78\\x90\\xe1\\x67\\xb3\\x53\\x45\\xbf\\x65\\xe7\\x5b\\x82\\xc8\\xd6\\x52\\x29\\xf2\\xf6\\x0a\\xae\\x27\\x72\\x58\\x1b\\xc9\\x9c\\x49\\xd4\\x16\\xbc\\x3d\\x78\\x74\\x6e\\xf8\\x30\\xf1\\xaf\\x94\\x4f\\x4a\\x67\\x15\\xab\\x4f\\xfb\\x01\\x59\\x1b\\xac\\x28\\x57\\xf1\\xa9\\xc9\\xd1\\x70\\x08\\x88\\x78\\x00\\x06\\xa3\\x16\\x07\\x33\\x8f\\x7a\\xf7\\xbe\\xdf\\x6e\\xfe\\x0b\\x57\\x29\\x9a\\xc9\\x15\\x52\\x6f\\xe5\\xe1\\xe1\\x01\\x29\\x87\\x08\\xc6\\xe6\\x1b\\x84\\x22\\x0a\\xfe\\x95\\xb5\\x3f\\x89\\x59\\x87\\x45\\x61\\x52\"},\n{{0xd2,0x7c,0x9e,0xaf,0xcf,0x88,0x15,0x19,0x90,0xbb,0x5b,0x2f,0xa8,0x44,0x3e,0x70,0x9b,0x5f,0xd8,0xd7,0x8d,0x23,0x38,0x03,0x32,0x2d,0xc8,0x6d,0x93,0xd9,0x32,0x95,},{0x08,0xe0,0xef,0xf5,0x29,0x77,0x67,0x14,0x68,0x61,0x96,0xd8,0x17,0xfd,0xf7,0x1e,0xb5,0xb6,0xe8,0x32,0x65,0x16,0xef,0x48,0x9b,0xfe,0x18,0x6a,0xc5,0xc5,0xbf,0x6d,},{0xc2,0x54,0xe3,0x71,0x44,0x56,0x33,0x13,0x74,0x42,0xee,0xfe,0x40,0xad,0x4a,0x82,0xe6,0x9b,0x1e,0xbf,0x48,0xa6,0x85,0xa2,0xbc,0x6f,0xfb,0xac,0x12,0x6d,0x22,0x84,0x87,0xb2,0xe3,0x53,0x7c,0x97,0xef,0x74,0x10,0x34,0x20,0x91,0x96,0x2e,0x50,0xc0,0xcb,0x85,0xde,0x7b,0x39,0xce,0xb4,0x1a,0xc4,0x07,0x8d,0x40,0xf3,0x40,0x71,0x06,},\"\\x77\\xc3\\x5b\\xda\\x32\\xa5\\x96\\x7d\\x8b\\x30\\x2f\\xa7\\xa4\\x75\\x83\\xce\\xab\\x89\\xc9\\xa6\\x09\\xa6\\x67\\xb7\\x53\\x15\\x5f\\xa6\\x99\\x6f\\x86\\x31\\xd0\\xeb\\xed\\xfe\\x0a\\xc3\\x64\\xc7\\x7e\\x85\\xba\\x37\\x31\\x1f\\x0d\\xe5\\x7a\\x0d\\xc2\\xc1\\xe9\\xe4\\x00\\xd5\\x8b\\x42\\x4a\\x32\\x2e\\x1d\\x57\\x71\\xe0\\xa9\\xfd\\x95\\x02\\xad\\x02\\x32\\xce\\x54\\x4f\\x07\\xd8\\xc6\\x6e\\x7c\\x31\\x47\\xf8\\x60\\x7a\\xc6\\x18\\x9b\\xb6\\x90\\x66\\xf2\\xfa\\xd6\\x31\\x18\\x5f\\x45\\x7f\\x46\\x7e\\xba\\x33\\x22\\x8e\\xcc\\x40\\xe8\\x94\\xa7\\x7b\\x57\\x16\\x98\\xa9\\xbf\\xac\\x84\\x1a\\x54\\xea\\xc5\\x21\\x9d\\xa9\\x9c\\x6a\\x91\\x25\\xc4\\x69\\xa2\\x2f\\xe8\\x1f\\x3b\\x95\\x14\\x33\\x89\\x6f\\x19\\xce\\x39\\xb3\\x73\\xfd\\x7e\\x5c\\x7b\\x65\\x0a\\x5e\\xf2\\x36\\x5a\\xe7\\x51\\x0b\\x0d\\xa5\\xe4\\x9d\\x7c\\x07\\x07\\x3c\\xf1\\x66\\xa9\\x83\\x87\\xe8\"},\n{{0x70,0x21,0x3d,0x3a,0x79,0xc6,0x5d,0x6d,0xbb,0xa5,0x42,0xa3,0x67,0x96,0x35,0x00,0x3a,0x68,0x2a,0xf5,0xfa,0x58,0xde,0x6b,0x0d,0x65,0xbf,0xa2,0x41,0x84,0x90,0x1c,},{0x44,0x02,0xfb,0x92,0xcc,0x12,0x49,0xdd,0x1a,0xe1,0x69,0x0f,0x03,0xb3,0xec,0x4f,0x1e,0x9b,0xda,0xb0,0xde,0x5b,0xfd,0x28,0x9f,0x10,0x29,0x68,0x30,0xfd,0x40,0x3e,},{0x5b,0x6c,0xe2,0x77,0x4d,0x40,0x0e,0xce,0xa8,0xa8,0x08,0xf5,0xfd,0x0a,0x79,0x7f,0xfc,0x61,0x16,0x75,0x23,0x76,0xcd,0x7b,0xfa,0x3b,0x2c,0xca,0x3a,0x84,0xd5,0x59,0x3f,0x5c,0x03,0xad,0x3e,0xec,0x1d,0x89,0x53,0x22,0x75,0xc4,0x7b,0x7c,0xe2,0xa0,0xe9,0xc5,0x9c,0xc4,0x02,0x8a,0x8a,0x65,0xe5,0xbb,0x90,0x97,0xea,0x71,0xc2,0x08,},\"\\xcd\\x6e\\x1c\\xd9\\xc9\\x0f\\x56\\x6d\\xe0\\x43\\xd7\\x5d\\x72\\x44\\xec\\xfd\\xb3\\x8e\\x8b\\xde\\x2f\\x9a\\x6c\\xd5\\xa4\\xfd\\xac\\x72\\xb5\\xed\\xe6\\xaf\\x62\\xd9\\x81\\x91\\x8c\\x5e\\x61\\x0a\\x38\\x78\\x92\\x74\\xfa\\x10\\xe5\\x27\\xf8\\x5f\\xad\\x20\\x9b\\x76\\xca\\x1c\\x28\\x1a\\xd5\\x89\\x0f\\x9c\\x96\\xd3\\x5d\\xe5\\x22\\xf1\\xdd\\xcc\\xb5\\x39\\xb8\\x79\\x8a\\x00\\x67\\xac\\xdd\\x45\\xb6\\xe3\\x44\\xa5\\xd9\\xa9\\x77\\x31\\xf5\\x45\\xff\\xa4\\xb1\\x7b\\x87\\x5c\\x67\\xb4\\x8e\\x9d\\x4c\\x4b\\xa7\\x2c\\x98\\xa4\\x50\\x55\\x83\\xfd\\xbf\\x1e\\x12\\xf2\\x2b\\x5a\\x7a\\x49\\x47\\x46\\xcc\\x9b\\x6c\\x1b\\x57\\x19\\x06\\xc6\\x7f\\xcc\\x88\\x3a\\x9c\\x15\\xa3\\x80\\x68\\x75\\xb6\\x59\\xe5\\x81\\x6b\\x42\\x76\\xc3\\x19\\x0e\\x25\\xcc\\x1a\\xc3\\xde\\x47\\xbf\\x99\\xc4\\x99\\x65\\x38\\x8f\\x54\\xf3\\xef\\x8e\\xb5\\x69\\x90\\x6c\\x60\\x08\\xe5\\xfb\\xbd\"},\n{{0x5d,0x54,0x0b,0x3b,0x14,0xf0,0xc0,0x17,0x5c,0x04,0x7e,0xaf,0x02,0x6c,0x90,0x70,0x65,0x9e,0xf1,0x3e,0x9d,0x28,0xe0,0xc5,0xc5,0x16,0xa4,0x28,0x26,0x9b,0x14,0xeb,},{0x1d,0x2d,0x4d,0x55,0x1a,0x57,0xc6,0xfb,0x2b,0x04,0x18,0x10,0x49,0xd4,0x03,0x9d,0x57,0x5c,0xf8,0x0c,0x0b,0xc6,0xec,0x70,0x33,0x06,0x7f,0x27,0x30,0x93,0x44,0xde,},{0x32,0x52,0x7d,0xa7,0x55,0x31,0x28,0x89,0x93,0x5d,0xd5,0xee,0x91,0xb1,0xbb,0x11,0x7a,0x5d,0x37,0x7d,0xd2,0x3e,0xf5,0xb7,0xe1,0x5b,0xaf,0xfa,0xe9,0xa5,0x43,0x91,0xa3,0xfd,0x23,0x4b,0xdc,0xe0,0x73,0xe0,0x98,0xc5,0x8d,0x05,0xbf,0x19,0x5b,0x4c,0x3c,0xc6,0x39,0x72,0x38,0x3b,0xa4,0xb5,0x10,0x72,0x97,0x1a,0xeb,0xcb,0x62,0x0d,},\"\\xe4\\xc9\\xe8\\x70\\x68\\x98\\xca\\xd4\\xac\\x68\\xd7\\x3c\\x13\\x0e\\xfa\\x04\\xa5\\x4f\\x8c\\xa2\\x59\\x19\\xea\\x6b\\xfa\\xa5\\x4c\\x8c\\x72\\x0c\\xed\\x85\\x4c\\x5e\\x95\\x09\\x10\\x2c\\x7b\\x88\\x5a\\xed\\xdf\\xfb\\xd1\\xb7\\xf2\\xc5\\x92\\x25\\x83\\x67\\x7a\\xc9\\xee\\xa9\\xa1\\x08\\xc7\\xe8\\x3e\\x88\\x71\\xae\\xd5\\xa0\\x84\\xf5\\x44\\x0b\\x0f\\x39\\x1a\\xd7\\xff\\xc6\\xba\\xb4\\x57\\x4a\\xf1\\xb9\\x67\\x70\\xf4\\x37\\x0e\\x8e\\x98\\x8e\\x85\\xec\\xb1\\xa8\\xd6\\x03\\x4f\\xc3\\xd7\\xf4\\x9f\\x74\\x22\\x02\\x3b\\x9d\\xab\\x5d\\x0c\\x16\\xbe\\xab\\x5f\\x5d\\x37\\xb0\\xa4\\xd7\\xde\\x19\\x7a\\xd8\\x7c\\xd4\\xff\\x8c\\xe7\\x8e\\xb1\\x2e\\x1d\\xaf\\x73\\x9d\\x8b\\x47\\xab\\x38\\x0a\\xbe\\x90\\x93\\x35\\x6d\\xb5\\xb5\\x97\\x17\\x75\\x1a\\x49\\xe1\\x94\\x84\\x72\\xfd\\xac\\xc2\\x59\\xff\\xff\\xc8\\xc1\\xdb\\xae\\x59\\x26\\x07\\xd4\\xec\\x71\\xcc\\x6a\\x8f\\x6b\"},\n{{0xca,0x41,0x76,0x9c,0xaf,0x17,0x17,0xb4,0xe4,0x5c,0x93,0xc1,0x21,0xdc,0x82,0xa5,0x34,0xfb,0xc6,0xec,0x09,0x86,0x66,0x2c,0x32,0x22,0xd7,0x14,0x92,0xbd,0x11,0x76,},{0xaf,0x3f,0x89,0xf6,0x18,0x7d,0xbc,0xf9,0x21,0x77,0x50,0xc6,0x7e,0xf8,0x9e,0xd4,0x7b,0x03,0x9f,0x9e,0xb0,0x62,0xff,0xec,0x9d,0xf6,0x4a,0xb5,0x2b,0x0b,0x45,0xcb,},{0x5c,0xda,0x87,0x2f,0x7e,0xd6,0xd7,0xc9,0x02,0x18,0xac,0x10,0xbe,0xe8,0xe2,0x14,0xf3,0xb3,0x4d,0x15,0xd2,0x5c,0x39,0x25,0x5e,0xc9,0xe6,0xb0,0x17,0x7a,0xa3,0xcb,0x73,0x68,0xd1,0x1c,0xb8,0xed,0x6f,0xf5,0xcf,0x0c,0x04,0x28,0x1d,0x06,0xbc,0x42,0x72,0xb8,0xbc,0x09,0xc2,0x3f,0x6f,0x4c,0xd5,0xa8,0x10,0xdd,0xc7,0xb9,0xc1,0x03,},\"\\x9d\\xe8\\x47\\x6c\\x58\\x13\\x84\\x8a\\xb1\\x45\\x15\\x37\\x84\\x1c\\xc1\\x78\\x00\\x21\\x81\\xa2\\x18\\x2a\\xf3\\x05\\xb1\\x2e\\x5f\\x7c\\x3b\\x1d\\x56\\xb2\\x2c\\xf4\\x6a\\xe6\\x27\\x6d\\x18\\x26\\xec\\x0a\\x8c\\x9a\\x7d\\x9f\\x68\\x08\\x3b\\x72\\x25\\xbb\\xfa\\xef\\xce\\x82\\xb3\\xb6\\x45\\x94\\x05\\x2a\\x77\\x00\\xf3\\x09\\x23\\x3a\\x79\\xff\\xfd\\xfc\\xcc\\x5c\\x21\\x40\\x0c\\x91\\xcc\\x0e\\x41\\x8d\\x51\\x41\\xd4\\x86\\xb5\\x21\\x99\\x01\\xd6\\xdd\\x24\\x47\\xc1\\xf7\\xb7\\xcf\\x5a\\x08\\x79\\xe7\\x0e\\x1d\\xd6\\x58\\xd0\\xf2\\xec\\xf3\\x1e\\xbe\\xee\\x11\\xa5\\xc7\\x44\\x40\\xc6\\x3b\\x9d\\x8b\\x45\\x31\\x8c\\x34\\x65\\xd7\\xff\\x03\\x36\\x5e\\xdd\\x03\\x85\\xed\\xf8\\x0d\\x4f\\xde\\xd5\\x1f\\x0f\\x75\\x33\\xee\\x40\\x99\\xf1\\x9e\\x93\\xbc\\x9d\\x08\\xda\\xdc\\xd1\\x34\\x85\\xdb\\x23\\x95\\x22\\xff\\xc8\\x1e\\x2c\\x05\\x1f\\x87\\x96\\xd6\\x2e\\x97\\x9f\\xcf\"},\n{{0xfe,0xdd,0x63,0xff,0xd4,0xcf,0xbf,0x61,0x88,0x94,0x96,0x2e,0x12,0x1a,0x90,0x25,0xee,0xa3,0x18,0xa8,0x0a,0x1a,0xdf,0x16,0x9d,0x64,0x90,0x44,0x5d,0x2e,0x02,0xa0,},{0x54,0x2f,0x22,0x44,0xbd,0xb7,0xd8,0x4b,0x87,0xe6,0x28,0xa8,0xe6,0xa1,0x2f,0x17,0xbf,0x74,0xa9,0xa6,0xd0,0xea,0x46,0xc5,0x95,0xdb,0xfd,0xc6,0x80,0xc0,0x4b,0x26,},{0xed,0x59,0xd9,0xe2,0x3d,0xec,0x34,0x94,0xb0,0xfb,0xc5,0xd1,0x0c,0xd0,0x2b,0xab,0x86,0xb3,0xeb,0x35,0xab,0xbf,0x9e,0x4d,0x4a,0x92,0x64,0x79,0xf1,0x34,0x58,0x3a,0x44,0xce,0x72,0xdc,0x41,0x22,0xac,0xa3,0x77,0xa4,0x07,0x2b,0x71,0x56,0x46,0x2b,0x74,0xe8,0xdf,0x46,0xb6,0x86,0x69,0x86,0x36,0x83,0x6e,0xf2,0x03,0x17,0x9c,0x07,},\"\\x2e\\x2a\\xe5\\x84\\x64\\x1b\\xe0\\x3d\\xd4\\x8f\\x9c\\x61\\x80\\x77\\xae\\xaa\\x18\\x21\\x2a\\x42\\x41\\xf0\\xc0\\x19\\x4e\\xd2\\x3e\\x37\\x0d\\x74\\x1a\\x3a\\xe1\\x1a\\x5f\\xec\\x3b\\x04\\x0c\\x16\\xea\\xfa\\x4a\\xc8\\xd1\\x8a\\xba\\xa7\\xce\\x8f\\x28\\x69\\x67\\x33\\x71\\x89\\xf0\\x49\\x5f\\xfd\\xd6\\x19\\x95\\xcd\\xe3\\x1d\\xd8\\xdf\\xc3\\xdf\\x57\\x00\\xb5\\x7a\\x7a\\x29\\x98\\x0e\\x9c\\x82\\x3f\\xee\\x85\\xd6\\x14\\x51\\x17\\x67\\x29\\xe7\\x27\\x87\\xc6\\x10\\x9b\\x47\\x35\\x9b\\x93\\xdf\\xd6\\x2e\\x1e\\x5a\\x2d\\x64\\x2c\\x05\\x72\\x42\\xda\\xe5\\x00\\xa9\\x4c\\xa1\\xa9\\x3b\\xc5\\x7b\\xe1\\xad\\xe7\\x6f\\xe4\\x50\\x1c\\x0f\\x63\\x77\\xed\\x0e\\x92\\x46\\x17\\x9a\\xec\\xdd\\x99\\x46\\xb6\\x71\\xe8\\x19\\x0e\\x1e\\xd2\\x3f\\x96\\x6e\\x96\\x40\\x9b\\x94\\x82\\x22\\xd8\\xea\\x58\\x39\\xde\\x90\\x4f\\xc5\\x13\\x48\\x07\\x3b\\x8f\\x40\\xed\\xbd\\x9b\\x4a\\x4b\\x22\\x75\"},\n{{0x38,0xf2,0x18,0x4e,0xaa,0x55,0x36,0x56,0xee,0x29,0x02,0x70,0x6b,0xce,0xc4,0xac,0xb5,0xaf,0x25,0x15,0x7c,0xa0,0xf6,0xa2,0xd4,0x8d,0xe8,0x52,0x85,0xfa,0x3b,0xc0,},{0x7f,0xf0,0x3f,0xb4,0xc8,0x2e,0x9c,0x15,0xd6,0x59,0xdf,0x42,0x4b,0x3e,0x73,0xed,0x1d,0x78,0x00,0x6f,0x3e,0x0b,0x79,0xeb,0x64,0xd9,0x8c,0x13,0xae,0xc6,0xba,0x37,},{0x4a,0x64,0x13,0xc2,0xc8,0x7f,0x2b,0x38,0x56,0xa8,0xde,0xcb,0xce,0x49,0x3a,0xde,0xae,0x0c,0x69,0xc9,0x41,0x34,0x70,0x7f,0xb0,0xf1,0x8f,0x30,0x49,0xfd,0x3e,0x3d,0x05,0x1a,0xbd,0xb9,0xd4,0xbe,0xe2,0x53,0xc6,0x10,0x7c,0x02,0xd5,0x7a,0xd7,0xcc,0x9f,0x31,0x01,0xdb,0x66,0x0a,0xfa,0xc2,0xb7,0x98,0x19,0x38,0xe9,0x56,0x4f,0x01,},\"\\xc2\\xdf\\x77\\xc9\\xe4\\x79\\xf6\\x19\\x83\\xb6\\xc7\\x48\\x3e\\xf9\\x3f\\xb8\\x5a\\x10\\x3b\\x21\\x39\\x23\\x92\\x65\\x23\\x06\\x5e\\xbf\\xf2\\x25\\x7e\\x85\\x42\\x7e\\x05\\xcd\\xc2\\x75\\x82\\xef\\x6c\\x16\\xbe\\x35\\x3a\\x3b\\x25\\x03\\x72\\xd6\\x37\\x0e\\xec\\xb6\\xc8\\x96\\x29\\x17\\xeb\\x65\\x6f\\x26\\x41\\x69\\x01\\x89\\xd1\\x72\\xa1\\x11\\x05\\x15\\x57\\xab\\xc2\\x49\\x4e\\x32\\xca\\xb6\\x5e\\xd0\\x63\\x3a\\xff\\xe9\\x24\\x08\\xb5\\x5c\\x4e\\xd8\\xaf\\x65\\xe2\\xc5\\xe7\\xaa\\xb8\\x87\\xa3\\xcc\\x8d\\x28\\xc5\\x2e\\x9e\\x13\\x36\\xd0\\xb7\\xbb\\x3f\\xe2\\xcd\\x84\\x3e\\x7f\\xa1\\x68\\x03\\x42\\xf8\\xa4\\xaa\\xfa\\x02\\xc4\\xab\\x25\\x2f\\x08\\xc3\\xd4\\x6d\\x5f\\x00\\xfd\\x01\\x48\\x42\\x63\\xee\\x63\\x52\\x84\\xf6\\xdb\\x26\\xd6\\x29\\x8d\\xe5\\xb0\\xdd\\x23\\x8d\\xa4\\x0a\\x8d\\x2a\\x93\\x37\\x6d\\xa0\\x30\\x27\\x83\\xa0\\xe3\\xbe\\x23\\xd9\\xe7\\xf9\\x90\\xd2\\x5b\"},\n{{0x8b,0xfc,0xa4,0x84,0x62,0xd2,0x53,0x6f,0x74,0xb8,0x4f,0x6a,0xf5,0x9f,0x5d,0x85,0x82,0xff,0x8f,0x7e,0xc2,0x87,0x45,0xd6,0x72,0xe7,0x2e,0xb7,0x2e,0x79,0xd3,0xe9,},{0x9d,0x10,0xd2,0x75,0xc3,0xd3,0xfe,0x45,0x9f,0x7f,0xe2,0x90,0x1b,0xce,0x38,0x91,0x91,0xcc,0x84,0x83,0xc0,0xf5,0x11,0x40,0xd9,0xc6,0x2b,0x08,0xfa,0xde,0x81,0xbb,},{0x44,0xd7,0x7e,0x43,0x9e,0xf6,0xca,0x5e,0xb9,0x40,0xc6,0x0f,0xf8,0x73,0x2d,0xdc,0x16,0x26,0x9e,0xa0,0x23,0xbb,0x26,0x13,0xbd,0x44,0x7e,0xba,0x7f,0xd6,0x98,0x51,0x22,0x6c,0x48,0x19,0xce,0x8d,0x44,0x98,0x5a,0x49,0xf3,0xf4,0x1a,0xc7,0xaf,0x33,0xc4,0x7f,0xfe,0x5f,0x89,0x30,0x4a,0x32,0x56,0xe4,0x45,0xf8,0xd6,0x86,0xe3,0x07,},\"\\x81\\xee\\x4c\\xb9\\xc4\\x5d\\xa6\\x91\\xda\\xcd\\x7d\\xd0\\x9a\\xff\\x59\\x73\\x72\\x67\\xbb\\x55\\xc3\\xad\\xe1\\xba\\x32\\xc1\\x7b\\x7d\\x0d\\x2d\\x0c\\x60\\x79\\xc3\\x9d\\x5f\\xd5\\xb2\\x9b\\xa5\\xf9\\xc1\\x76\\x20\\x97\\x70\\x98\\x43\\xee\\xe5\\x61\\x2b\\xd2\\x0b\\xc8\\x18\\x5b\\xf6\\x4d\\x5c\\x93\\x41\\x84\\xe1\\x36\\x24\\xe6\\xf8\\x77\\xa2\\xa5\\xdd\\xa1\\x5c\\x0d\\xf6\\x2a\\xfb\\xb9\\x70\\x57\\xcc\\x91\\xca\\xc9\\xa1\\x84\\x06\\xa0\\xe0\\x10\\x9c\\xc3\\x9b\\x2e\\x3f\\x81\\x2e\\x22\\x7a\\x40\\x62\\xd5\\xef\\x81\\xc9\\x2c\\x22\\xa7\\xdc\\x79\\x7c\\x84\\x5d\\x71\\xeb\\x6e\\xa9\\xe4\\x2e\\xc8\\x41\\x7f\\xba\\x90\\xa9\\x6d\\x2b\\xb1\\x43\\x94\\x18\\x33\\x0b\\x4b\\xb2\\xf9\\x9c\\x6d\\x63\\xd3\\x04\\xa0\\xe5\\x06\\xdc\\xa9\\x65\\x3e\\x5d\\xe0\\xdd\\x56\\xe3\\x09\\xdb\\x1a\\x76\\xa0\\xfa\\xab\\xab\\x16\\x37\\x74\\xf0\\x00\\x08\\x8c\\xef\\x3d\\x1b\\x7a\\x6c\\xf6\\x61\\xd2\\xe1\\xd9\"},\n{{0xd7,0x48,0x0d,0x42,0x72,0xbc,0xb1,0x55,0x7b,0x1b,0xbe,0xe0,0x49,0x15,0xc1,0x26,0xa5,0x2c,0xa6,0xd6,0xa8,0xbb,0x53,0x14,0xa0,0xe1,0xa5,0x2b,0x59,0xbf,0xc9,0x9c,},{0x99,0xc8,0x39,0xd3,0x6d,0x8f,0x5b,0x86,0x52,0x61,0x8e,0xd7,0xb0,0xfe,0x9e,0xc3,0xd9,0x4e,0xff,0xf4,0xc4,0x53,0xc5,0x40,0x63,0x14,0x76,0xa5,0x97,0x9b,0xbb,0xe0,},{0xe0,0x4d,0xc8,0x44,0x2d,0x35,0x21,0x73,0xe9,0x31,0x81,0x8e,0x29,0x08,0x58,0xde,0x85,0x68,0x8a,0x46,0x49,0xea,0x3e,0x3c,0x3a,0xe7,0x4e,0xda,0xa5,0x4a,0xd0,0x1b,0x64,0x62,0x2a,0xd8,0xa0,0x90,0xb6,0xad,0x60,0xad,0xfd,0x01,0x88,0x18,0x82,0x82,0x8d,0x39,0x07,0x8b,0xb5,0xb2,0x71,0x4f,0xd3,0xea,0x83,0x97,0xa3,0x42,0xfd,0x04,},\"\\x61\\x5c\\xc1\\x9f\\x94\\x20\\x17\\x36\\x5b\\xa8\\xbf\\xa2\\x56\\xce\\xcc\\xc8\\x5e\\xe2\\x89\\xa1\\xc3\\x4b\\xb1\\x44\\x2a\\xcc\\x07\\x16\\xc7\\xfc\\x2c\\xae\\xb7\\x6a\\x9d\\xe1\\x9a\\xde\\xc1\\x06\\x37\\x1e\\x47\\xa3\\x0d\\x2e\\x12\\x39\\xce\\x1f\\x7d\\xca\\x25\\x52\\x6d\\x60\\x4b\\xdd\\x64\\x76\\x59\\xd9\\x42\\xbc\\xba\\xc3\\x68\\x91\\x13\\x49\\xc3\\xb9\\x46\\xa9\\x7d\\xa1\\x0a\\x42\\xdb\\xcf\\x3c\\x73\\x41\\x6d\\x2e\\x6b\\xa2\\x2b\\xd2\\x9d\\x9f\\x70\\x56\\x72\\xe9\\xe3\\x38\\x94\\x4c\\xef\\x01\\xad\\x21\\xf0\\x09\\x74\\x2e\\x07\\xbc\\xd8\\x88\\xca\\x31\\xe1\\xee\\x95\\x3e\\x8c\\x1b\\x1f\\xd9\\x54\\xb7\\xdc\\xf1\\xa0\\xb1\\xd5\\xa0\\x69\\x06\\x5a\\x66\\xcb\\x72\\x1a\\xdc\\x02\\x0f\\x4e\\xfe\\x1a\\xbd\\xd1\\x67\\x42\\x74\\x69\\x39\\x28\\x57\\x80\\xd7\\x53\\x13\\x7a\\xe0\\x14\\x0b\\xb4\\x10\\xfb\\x6c\\xe3\\x36\\x76\\xc2\\x7a\\xee\\xc5\\x93\\xa8\\x8c\\xbc\\x73\\xaf\\xd9\\xf4\\x05\\x11\"},\n{{0x3c,0x2d,0x36,0x50,0x73,0x5b,0x41,0xef,0x90,0x06,0xbb,0x45,0xe4,0xbe,0x2e,0x0a,0xa5,0xcd,0xe8,0x51,0xae,0xac,0x42,0x1e,0xe9,0xc1,0xb4,0x92,0xd8,0x7a,0xa1,0x8a,},{0x3e,0x46,0xdd,0xce,0x29,0x88,0x44,0xfc,0xaf,0xa0,0x0a,0x1b,0x47,0xea,0xf3,0xde,0x70,0x59,0x6d,0xf1,0xbb,0xee,0x3c,0x80,0x9d,0x1b,0xe7,0xdd,0x94,0x08,0x0e,0x34,},{0x3f,0x2a,0xf0,0x1a,0xd5,0x37,0x7a,0xc3,0x90,0x40,0xd4,0x1a,0x41,0xe3,0x6e,0x7b,0x93,0xfa,0x72,0x35,0xb8,0x41,0x79,0x1f,0x43,0x2e,0xcd,0x7f,0x91,0xa3,0xb2,0x1a,0xb7,0x19,0x6c,0x88,0x3a,0xd5,0xa7,0xdb,0x44,0x6f,0x6c,0x06,0x67,0x24,0x60,0xf3,0xf6,0x3e,0xf8,0x63,0xd9,0x43,0x2b,0xe9,0xca,0xea,0xbb,0x79,0xe8,0x7e,0x22,0x08,},\"\\x14\\x25\\xd8\\xd2\\x18\\xda\\x1a\\x10\\xa8\\x0b\\x6a\\x9c\\x3c\\x27\\x50\\xef\\xe4\\x16\\x57\\x98\\x4a\\xbd\\x51\\x00\\xf4\\x51\\xba\\x94\\x9d\\xb0\\x10\\x46\\xb7\\x12\\x6b\\xe8\\x40\\x23\\x34\\xed\\x57\\x52\\x8b\\xac\\x05\\x62\\x25\\x53\\xa8\\x6b\\x72\\x67\\x22\\x69\\x5a\\x8f\\xb3\\x31\\xd8\\x56\\x54\\x17\\xc4\\xff\\x0f\\x25\\x1a\\x32\\x0a\\xd0\\x6d\\xed\\xbb\\x75\\x0d\\xef\\x35\\xd5\\x21\\xc3\\xc4\\xcd\\x57\\x1a\\x45\\xad\\xa8\\x45\\x06\\x53\\xd5\\xe8\\x1f\\xe0\\xbe\\xb5\\x3a\\xaa\\xe7\\x87\\xb3\\xeb\\x65\\x3c\\x23\\x81\\xed\\x55\\xaa\\xf2\\x59\\x0e\\xe5\\xed\\x8b\\x66\\x26\\xf1\\xc4\\xb0\\x43\\x0a\\x54\\xf3\\x96\\x58\\x62\\x4e\\x66\\x35\\xfe\\xfc\\x98\\xfe\\xe8\\xfc\\x3e\\x1c\\xc7\\xff\\x3d\\xd4\\x20\\xde\\x9d\\xa1\\x1a\\x62\\xfc\\xae\\x0e\\x0c\\xb4\\x54\\xfc\\x6f\\x7d\\xf0\\x39\\x54\\x29\\x1d\\x26\\x20\\x2f\\x1b\\x18\\x8b\\x65\\x7b\\x3b\\xae\\x07\\x38\\x94\\x49\\xb7\\x5e\\x67\\x42\\x2f\"},\n{{0x74,0x96,0x59,0x96,0x26,0x8c,0xdc,0x4c,0x09,0x22,0x0b,0xd3,0x1c,0xe0,0x7b,0x21,0x7a,0x03,0x82,0x6e,0xe9,0x81,0xfa,0x89,0xf3,0xa2,0x35,0x9c,0xed,0x09,0x5e,0xf1,},{0x40,0x96,0xd0,0x27,0xc1,0xc5,0xee,0x4c,0xbf,0xc0,0x4b,0x9d,0x53,0x41,0x74,0x02,0x9f,0xdb,0x50,0xcf,0x56,0x10,0xd3,0x02,0x1e,0xf9,0x33,0xb4,0xca,0xf3,0x39,0x85,},{0x8c,0x66,0x28,0x34,0x43,0x17,0xa6,0x3a,0xca,0x6f,0x78,0xcf,0xae,0xa9,0x65,0xb3,0xaa,0x55,0x22,0xce,0x91,0x41,0x95,0x14,0x1c,0x08,0x87,0x0a,0x1b,0x8d,0xac,0xf3,0x4b,0x79,0xc7,0xab,0xc6,0x93,0xcd,0x9e,0x5e,0xbe,0x1a,0x2e,0x86,0xf0,0x33,0x2d,0x20,0x48,0xdb,0x3c,0xbd,0xef,0x01,0x68,0x79,0x62,0xd6,0xdf,0x24,0x9e,0x38,0x00,},\"\\x45\\xb2\\xf0\\x64\\x61\\x5b\\xf7\\x74\\xfc\\xe9\\x7f\\x51\\xc4\\x64\\x68\\x5d\\x7b\\x3e\\x4f\\xef\\xff\\x92\\x31\\x24\\x0a\\x71\\x9b\\x3b\\x06\\x21\\xcd\\x4a\\xd8\\x33\\x05\\x67\\x5c\\xd6\\xea\\xae\\xbf\\xf7\\x91\\x00\\x0b\\x0b\\x1f\\xa3\\x1d\\x82\\xd8\\x18\\x1b\\x7f\\xe5\\x7c\\x5e\\x00\\xce\\xc5\\x6f\\xf9\\x02\\x2e\\x9c\\xe8\\xdb\\x66\\x35\\x6e\\x40\\x8e\\x3e\\xe2\\x62\\xfe\\x62\\x77\\x89\\xe6\\x55\\x35\\xef\\x1a\\x63\\xe8\\xfe\\xc9\\x33\\xbe\\x3d\\xee\\x34\\xd2\\xfa\\xcd\\xb8\\x92\\x8c\\xc4\\x56\\xab\\xf2\\xf3\\xe8\\xca\\xb4\\x7e\\xff\\x1c\\xa4\\x2e\\x8b\\x0e\\x48\\xd2\\xc7\\x3e\\x7b\\xcc\\x5d\\xe3\\xf1\\x05\\x6f\\xc5\\x23\\xdf\\xef\\x6b\\x00\\x23\\xf3\\x28\\x89\\xed\\x39\\x4e\\xed\\xa0\\x32\\xab\\xf6\\xbc\\xaa\\xda\\xa7\\xf3\\xee\\x74\\x11\\x87\\x60\\xab\\x6d\\x91\\xdf\\x52\\x8b\\xdc\\x58\\x07\\x97\\x2c\\x85\\xfa\\x7c\\xb5\\x6e\\x38\\x7d\\x73\\x32\\xe7\\x79\\xe5\\x2d\\x0d\\xd7\\xdb\\x0c\\xfb\"},\n{{0x0a,0xbf,0x06,0x9c,0x08,0xb2,0x69,0x1c,0x3a,0x26,0xf7,0x9d,0xc8,0xed,0x05,0xcb,0x71,0xd2,0x20,0xff,0x78,0xf3,0xa5,0xc5,0x78,0x0a,0xe9,0xda,0x18,0xe4,0x56,0x43,},{0x9e,0xf3,0xb5,0xcc,0x01,0x6c,0xc8,0x2d,0xbd,0xda,0x70,0x57,0x66,0xaa,0x44,0x8b,0xd6,0x1f,0xa1,0xaa,0xf1,0x17,0x0e,0xfe,0x91,0x49,0xda,0xa9,0xfe,0x64,0xa1,0xae,},{0xc7,0x56,0x6f,0xb3,0xb4,0xd8,0xde,0xf6,0x67,0xe0,0x40,0xf2,0x76,0xd3,0xed,0x98,0xd3,0x6d,0xff,0x46,0x01,0x26,0xa7,0x5b,0x4c,0xc2,0x10,0x03,0x86,0xbb,0x01,0xc6,0x42,0xf6,0xd8,0xde,0x7e,0x64,0x9b,0xe6,0xe0,0x81,0x8b,0x08,0xd7,0x7c,0xe6,0x0f,0x4e,0xe5,0xe7,0x71,0x7a,0x50,0x88,0x4b,0xde,0xe0,0x20,0x34,0xec,0xf1,0xcd,0x0c,},\"\\x0d\\x05\\x52\\x91\\xb2\\xe8\\x61\\xea\\xe1\\x9e\\xa0\\xfb\\x20\\x69\\xd8\\xc9\\xee\\xf4\\xf1\\x34\\x7f\\x35\\x76\\xd7\\x84\\x11\\xae\\x7c\\x0b\\x1c\\x1c\\xaf\\x31\\xfd\\xe7\\x36\\xdc\\x8a\\xcc\\xac\\xb6\\x62\\xdf\\x76\\xb6\\x20\\xb6\\x2c\\xe9\\x0b\\x9f\\x92\\xc8\\x33\\x09\\x12\\x86\\x21\\xd0\\x57\\xcf\\x84\\x58\\x05\\x94\\x90\\x88\\xe9\\x38\\xdd\\xbc\\x3d\\x41\\xc5\\xe5\\x54\\x1f\\xec\\x82\\x98\\x68\\x7a\\xd2\\xf7\\x9a\\xcd\\xa0\\x1a\\xa2\\x15\\xd2\\x58\\x21\\x43\\x6e\\xac\\x9d\\x26\\x87\\x16\\xd4\\xcd\\x60\\x50\\x26\\x0c\\xb4\\xef\\x6a\\xad\\xa4\\x83\\x5e\\x07\\x3a\\x84\\x58\\x21\\xff\\x21\\x1a\\xe2\\xba\\xad\\xce\\xb6\\xe5\\x7f\\x06\\xf8\\x83\\x45\\xed\\xbf\\x93\\xbf\\xdf\\x54\\xfb\\x74\\x12\\x3b\\x57\\xc0\\xfb\\x4a\\x79\\x60\\x8d\\x8d\\xb6\\x74\\x08\\x89\\xe1\\x57\\x33\\x50\\x77\\x99\\xf7\\xa1\\xfd\\x30\\x17\\xbc\\xd7\\x7b\\x28\\xa2\\xbb\\x6c\\x91\\xec\\xd1\\x54\\xe9\\xc5\\xa5\\xff\\xa0\\xeb\\x62\"},\n{{0xf3,0xfd,0x5e,0xc5,0xe2,0x30,0xb6,0xda,0xd1,0xac,0x3d,0x3a,0xeb,0xad,0xc7,0x86,0x3f,0xf8,0x9d,0xe2,0xa1,0x31,0x7f,0x42,0x4d,0x15,0x98,0x9a,0x3e,0xfb,0x0a,0xfd,},{0xf9,0x9e,0x5d,0x5e,0xee,0xae,0xd1,0x20,0x5c,0xfb,0x5c,0x2c,0xc4,0xe5,0xe9,0xf6,0xb4,0xe7,0xf6,0x41,0x29,0xf8,0x60,0x10,0x4c,0xa6,0x24,0x4e,0xb9,0xfe,0xb5,0x64,},{0x44,0xb0,0x12,0x46,0x63,0xad,0xb0,0xc7,0x3a,0xed,0x49,0xf7,0x34,0x03,0x46,0x1f,0xcb,0x19,0x11,0x1b,0x0b,0xa1,0x7a,0xa9,0x96,0x56,0x6f,0x47,0x7e,0x37,0xd5,0x24,0xb0,0xe1,0xf1,0x07,0x61,0x2f,0xc5,0x2a,0x7c,0x76,0x7b,0x18,0x1f,0xbf,0x4d,0x62,0x9b,0xdd,0xc0,0x8f,0x30,0x58,0x4d,0xec,0x61,0x24,0xc5,0xd3,0x9d,0x42,0x31,0x02,},\"\\x71\\xf2\\x89\\x73\\xed\\x3d\\xf0\\x59\\x45\\xfa\\x0b\\xdb\\x23\\xe9\\xbe\\xca\\x65\\x1d\\x3e\\xe6\\xbf\\x9f\\xa4\\x5f\\xfd\\xc6\\x06\\x1e\\x42\\xfa\\x2e\\x8d\\x76\\x23\\x5f\\x0e\\x9e\\x2d\\xaa\\x65\\xe5\\x26\\x31\\xfc\\x3b\\xea\\xd3\\x3d\\xa0\\x55\\xbb\\x49\\x2e\\x47\\x58\\xe5\\x98\\xa0\\x30\\xa3\\x3b\\x3c\\x40\\xb3\\x43\\x71\\x45\\x9b\\x23\\x3c\\xcc\\x04\\x3c\\xcc\\xc3\\xa3\\xcb\\xce\\x54\\x9e\\x20\\xe0\\xb2\\xb4\\x33\\x05\\xb6\\x4a\\xec\\x66\\x1a\\xad\\xba\\x65\\x56\\xb1\\x7d\\x76\\xe3\\xbb\\xed\\x62\\xc4\\xa4\\xea\\xc4\\xf8\\x86\\x03\\x99\\x67\\x52\\xd2\\x36\\x3c\\x8d\\x4a\\x27\\x89\\xd1\\x28\\xf6\\xe9\\x59\\x94\\x5c\\x68\\xc3\\x01\\x46\\xd1\\x94\\xcc\\xb6\\x83\\x9e\\xc6\\x53\\x44\\x60\\x16\\x52\\xc1\\x8b\\x00\\x74\\xe2\\xbc\\x76\\x68\\x31\\x16\\x97\\xd9\\x60\\xc7\\x06\\x65\\x97\\x92\\x4d\\x70\\x4d\\x02\\xa0\\x19\\x3f\\xaf\\xbf\\xdf\\x57\\x1e\\xe0\\xdf\\xe4\\x14\\xdc\\x2f\\x52\\x89\\x69\\x12\\xbc\\x32\"},\n{{0x73,0x8f,0x13,0x10,0xa4,0xe0,0x8f,0x91,0x7a,0x0a,0x5c,0x1f,0xba,0xf4,0xef,0x72,0xf9,0x5e,0xe6,0x2f,0xcd,0xed,0x50,0x86,0x8a,0x3d,0xaf,0x98,0x85,0x6a,0x44,0x8d,},{0x42,0x27,0x2c,0x2c,0x8b,0x08,0x47,0x0e,0xe5,0xdd,0x8a,0xf8,0x84,0x9c,0x01,0xb7,0x50,0x8d,0x3a,0x3c,0x65,0xb0,0x33,0x0e,0x69,0x5c,0x84,0x1d,0x5d,0xcc,0xb2,0xf5,},{0xce,0x1e,0x35,0x77,0xb6,0xa2,0x10,0x16,0xb9,0xdd,0x0b,0x51,0x7b,0xaa,0x0c,0xcb,0x10,0x7b,0xc1,0x99,0xb8,0xbb,0xae,0xf6,0x8f,0x95,0x0c,0x8e,0xd5,0x80,0x13,0xc8,0x53,0xb4,0xd3,0x38,0xee,0xdc,0x67,0x50,0x79,0xab,0x13,0x90,0x46,0x2f,0xfe,0xfa,0x6a,0x95,0x9b,0x04,0x3f,0x8b,0x56,0x51,0xc6,0xca,0x37,0x5c,0xe0,0xb4,0xa4,0x03,},\"\\xf0\\xe7\\xef\\x67\\x82\\xd0\\x4c\\x69\\x43\\xb1\\x9e\\xb6\\x6f\\xf6\\x22\\x6b\\x73\\x6e\\x3b\\x09\\x40\\xc0\\x9b\\xb1\\x26\\xbf\\xc4\\xc4\\xca\\x7a\\x5e\\x70\\x16\\xc2\\x86\\xb7\\xbf\\xd7\\x3a\\xa6\\xa7\\x9a\\x96\\x03\\x1b\\xc8\\x1c\\xb5\\xda\\x68\\xce\\xc7\\x1a\\x6a\\x0d\\x39\\x78\\x0c\\xbe\\x6a\\x0c\\xd4\\x77\\x4d\\x3a\\xa0\\x6a\\x88\\x16\\x10\\x44\\x4a\\x8c\\x9d\\x19\\x10\\x22\\x94\\xe5\\xf6\\x35\\x18\\x7a\\xa6\\xf4\\x8d\\x11\\x91\\x2c\\x70\\x94\\xb3\\x88\\x33\\x02\\x8d\\x57\\x0c\\xb1\\x10\\xdb\\x60\\x62\\x5b\\xb1\\xbd\\xc3\\x7a\\xff\\xa2\\x5e\\xa3\\xc8\\xf8\\xdb\\xfc\\x25\\x14\\xf4\\x36\\x5c\\x62\\xb2\\x98\\x9a\\x66\\xd2\\x7c\\x80\\x38\\x4e\\x74\\xae\\x5f\\xba\\x8c\\x1c\\x2a\\xf9\\xc7\\x2c\\x49\\x71\\xe6\\x4f\\xa6\\xa1\\xdc\\x25\\x17\\xb3\\x1e\\xa5\\x7c\\xcb\\x08\\x15\\xa7\\xfe\\x2d\\xa0\\xf1\\x46\\xca\\xa0\\x84\\x31\\xd2\\x5d\\x15\\x16\\x62\\xd9\\xd2\\x6e\\x95\\x22\\x9d\\x0c\\x62\\x82\\x36\\x64\\x12\\x3c\"},\n{{0x88,0x41,0xd2,0x2a,0xde,0xd6,0x9c,0x13,0x1e,0xf5,0xee,0x0a,0x10,0xab,0x0a,0x9b,0x77,0xcb,0x75,0x4e,0xde,0x8d,0x25,0x7a,0x53,0x72,0x72,0x6e,0x2b,0x49,0x9c,0x6e,},{0x71,0x5e,0xcc,0xa6,0x36,0x81,0xbc,0x6e,0x9e,0x31,0xd1,0x88,0x48,0x90,0x2f,0x4d,0x96,0xfe,0xaf,0x43,0xb9,0x5d,0x00,0x86,0x42,0x90,0x3b,0x17,0x63,0xbc,0x9f,0xb8,},{0xbb,0x2b,0xab,0x70,0x03,0xf1,0x31,0x1b,0xe9,0xb8,0xc8,0x83,0xfc,0x4f,0xd5,0x28,0xad,0xfd,0x51,0xa9,0xc9,0x9d,0xb3,0xdc,0xa8,0xda,0x0f,0xca,0x95,0x8d,0xa1,0x9a,0x10,0xeb,0x22,0x33,0x26,0x67,0xb1,0xa0,0x06,0x5d,0x3d,0xbc,0x0d,0x06,0x26,0x9a,0x12,0x59,0xb6,0xa8,0x90,0x48,0x4a,0xa2,0x14,0x3a,0x52,0x69,0x5f,0x14,0x5b,0x0a,},\"\\x08\\x7c\\xa6\\xbe\\x2a\\x95\\x0c\\x02\\x4b\\x3e\\x74\\x67\\xfe\\x00\\xa7\\xd3\\x64\\x55\\x5d\\x5d\\xc6\\x77\\x0f\\x5e\\xbd\\x26\\x06\\x42\\x52\\x5b\\xd3\\xc0\\xf9\\x65\\xdb\\x36\\xd7\\xb2\\x29\\xa5\\x74\\x21\\xee\\xc6\\x4e\\x4d\\x99\\x1c\\xdd\\xe5\\x91\\x23\\x03\\x44\\x70\\x55\\x3f\\x4e\\xb0\\xbe\\x81\\xad\\x29\\x36\\xc8\\xca\\x26\\xbc\\xab\\x4e\\x5d\\x79\\x04\\x0e\\x29\\x79\\x87\\x28\\x60\\x16\\x84\\xa4\\x68\\x32\\x3c\\xf3\\xba\\xae\\x4d\\x94\\x8d\\x0a\\x1f\\xd9\\x05\\xef\\xfe\\x16\\xdc\\x44\\x64\\x20\\x88\\xdf\\x53\\xf6\\x38\\x8b\\xc4\\x80\\xed\\xf4\\xaa\\x20\\x7d\\x0e\\xd1\\x61\\xed\\xa3\\x45\\x71\\x2b\\x4c\\x00\\xcb\\x05\\xfc\\xf6\\x35\\xec\\x25\\x88\\x78\\x5b\\xfb\\x8a\\x27\\xcd\\xc2\\x89\\x96\\xa1\\xdb\\x3e\\x67\\x87\\x02\\x33\\x93\\xc0\\x75\\xd8\\x3c\\x90\\x38\\xfe\\xd7\\x89\\x9c\\x55\\xfe\\xc3\\x07\\xde\\x32\\x49\\xc1\\x4b\\xda\\x49\\xe8\\xb8\\x95\\x86\\x09\\x42\\xc3\\x6d\\x64\\x0b\\xb8\\x93\\x77\\x91\\x42\"},\n{{0xc0,0x21,0x35,0xe7,0xb6,0x5a,0xac,0x72,0xf6,0x3c,0x32,0xbf,0x5b,0xef,0x5b,0x68,0xc7,0xf3,0xb8,0xed,0x56,0x20,0x8e,0x59,0xe4,0x75,0x20,0x70,0xe9,0xd0,0x70,0x95,},{0xdc,0xf6,0x00,0xf2,0x44,0x03,0x7a,0x75,0x20,0x3a,0xe1,0x1a,0xc3,0x16,0xe8,0xdb,0xe9,0x98,0x6f,0x0d,0xce,0x23,0x47,0x39,0x39,0x33,0x4b,0xf5,0xce,0xa4,0x8b,0x0d,},{0xdd,0x5c,0xba,0xe4,0x79,0xeb,0x5e,0x22,0x95,0x74,0xc2,0x1e,0xc3,0xbe,0xd9,0x11,0x11,0x3a,0x57,0xa1,0x91,0x6d,0x33,0x13,0x45,0x75,0x15,0xd5,0x5c,0xc5,0xb6,0xe6,0xeb,0xc5,0x2c,0x93,0xf8,0x21,0xd1,0x39,0x88,0xdb,0xba,0x8d,0xf5,0x09,0x6d,0x55,0xff,0x9c,0x39,0xe7,0xf9,0xd5,0x61,0xcb,0x58,0x93,0x0c,0x96,0xa7,0xa5,0xd6,0x0b,},\"\\x86\\xd9\\x49\\x13\\x50\\xd2\\x56\\x6e\\x70\\x8e\\xd3\\x56\\x18\\x5d\\x61\\x0c\\x73\\x46\\x5b\\x2a\\x5c\\x70\\x12\\x91\\x99\\x58\\xaf\\x2c\\xf7\\x6a\\xf9\\x95\\x23\\x0d\\x36\\x0d\\xe4\\x00\\xb7\\x13\\x71\\x70\\xdd\\x08\\x35\\xf1\\x0f\\xcb\\xec\\x22\\x4e\\xe4\\xe4\\x2c\\x7d\\x1c\\xeb\\xb7\\xf5\\x80\\xfe\\xa8\\xed\\x62\\x23\\x16\\x3b\\xac\\xdd\\x19\\x23\\xa5\\x72\\xcb\\xb6\\xdc\\x26\\xca\\x8b\\x17\\xad\\xe6\\x8c\\x6d\\x28\\x08\\xc4\\xca\\x1e\\xca\\x28\\xea\\xe9\\xa1\\x45\\xf6\\x8d\\x40\\x79\\xd8\\xd5\\x9d\\x14\\x0e\\x95\\x82\\x28\\xe7\\xe9\\x95\\x20\\xe3\\x42\\xdb\\xd7\\x45\\x7a\\x91\\x59\\x74\\x0f\\x48\\xbd\\xc2\\x7b\\x93\\xbd\\xab\\xeb\\xa4\\x65\\xcb\\xf0\\xc8\\xdf\\x5e\\xf2\\xc0\\xf9\\x38\\x6e\\xeb\\xe6\\x56\\xf5\\xd7\\x49\\xd5\\xf9\\x14\\x7f\\x52\\x52\\x66\\x91\\x0d\\x7b\\x80\\x39\\x6a\\x90\\xbe\\x5c\\xc1\\x88\\xa9\\xa9\\x45\\xf9\\x3e\\x75\\x3f\\xc9\\x9b\\xaf\\xa1\\x8e\\xe0\\xa6\\xdf\\xf7\\x9b\\xf8\\x48\\x48\\x98\\xef\"},\n{{0x15,0x4a,0x47,0xeb,0xa1,0xb8,0xc3,0x83,0x62,0xea,0x61,0xfa,0xeb,0x0c,0x0a,0xd7,0xe6,0x1e,0x41,0x2a,0x3c,0xba,0x46,0x88,0xaf,0x0d,0xb2,0xa4,0x87,0x20,0x8b,0x1c,},{0x16,0xde,0x2c,0x89,0x4a,0x50,0xcb,0xd4,0xca,0x90,0x41,0x9a,0x4c,0xa6,0x49,0x42,0xcb,0x14,0xbd,0x33,0x5c,0x5d,0x3f,0x4a,0x53,0xe2,0x39,0xc2,0x80,0xbd,0xa7,0x25,},{0xf4,0xb6,0xeb,0x1a,0x8d,0x95,0x0e,0x88,0x7f,0xd2,0xf3,0x0f,0x70,0xa2,0x3b,0x41,0x87,0x14,0x95,0xbf,0xa5,0xb8,0xa4,0xad,0x39,0x96,0xcd,0x9b,0xf5,0x1e,0xb7,0x42,0xe0,0x7f,0x4c,0x4d,0x2d,0xa4,0xb0,0x1a,0xb0,0x87,0x36,0x7a,0x50,0xe2,0xb6,0x5b,0x3c,0xef,0x51,0x4e,0x40,0xd8,0x37,0x54,0x0b,0x8c,0x89,0x96,0x64,0x85,0x91,0x0f,},\"\\xbf\\x60\\x7e\\x8b\\x6e\\x14\\xd9\\xc8\\xac\\xd9\\x68\\x15\\xaf\\x0c\\x03\\x5a\\xc7\\x3c\\x41\\x04\\xc9\\x37\\x86\\xcc\\xc1\\xc9\\xf8\\x59\\x39\\x5d\\xd7\\x81\\x90\\x03\\x20\\xeb\\xf3\\x56\\xaa\\x99\\x1c\\xdc\\x9f\\x50\\x3f\\xce\\xe9\\xf8\\x36\\x75\\x88\\x8a\\x7d\\x59\\x20\\x02\\xd2\\xa5\\x4a\\x57\\x3a\\x96\\x99\\x4b\\x3f\\xa8\\x65\\x53\\x8c\\x61\\x7e\\xd8\\xad\\x1f\\xf6\\x20\\x18\\x28\\x8a\\x67\\x4f\\x44\\x9b\\xe0\\xaa\\xb5\\x22\\x2f\\x74\\xc4\\xfd\\x47\\x5e\\xd6\\xa8\\xdf\\xb2\\x7f\\x45\\x28\\x7b\\x22\\xb2\\xb6\\xc3\\xbd\\x15\\x17\\x9f\\x26\\x7d\\x15\\x7d\\x7d\\x8a\\x41\\x59\\x67\\x9b\\xe8\\x5b\\x25\\xc2\\xbb\\x2b\\xa8\\x50\\xaa\\xed\\x9a\\xe3\\xae\\x57\\x1b\\xe4\\xf7\\x58\\x36\\x32\\x9c\\xf3\\x6f\\x41\\x2c\\x1c\\x80\\xf1\\x41\\x3b\\x76\\x61\\xea\\xb4\\xa8\\xe1\\x1b\\x60\\x24\\x24\\x4f\\xc6\\x23\\x23\\xff\\x02\\xe3\\x8a\\xce\\xb1\\x73\\x7b\\xd4\\x74\\xbf\\x1e\\x98\\x01\\x5d\\xbc\\x78\\x8b\\x02\\x7b\\xbe\\x21\\x7c\\xf4\\xe7\"},\n{{0xd3,0x02,0x84,0x31,0xce,0x2e,0xef,0x73,0xbd,0x94,0x0a,0xb8,0x4c,0xa2,0x9f,0x13,0xfb,0x26,0x43,0x6a,0xa2,0x5e,0x1b,0x7b,0xf2,0x6c,0xb3,0x3f,0x17,0xfd,0xf8,0x17,},{0x63,0xdf,0x20,0x3e,0x28,0x60,0xba,0xc4,0xd3,0x52,0xe7,0x22,0xc1,0xc9,0x1f,0xe3,0x77,0x6e,0x1c,0xbc,0xae,0x85,0x53,0xa4,0xf1,0x98,0x90,0x26,0x0b,0xf0,0xe4,0x57,},{0xce,0x97,0x29,0xa9,0x6c,0x3e,0xd2,0x89,0x43,0xb2,0x78,0x39,0xc7,0x33,0x82,0xec,0xd5,0x72,0x96,0x0c,0x1f,0x9e,0x90,0xc5,0xef,0xf9,0xdd,0x49,0x9f,0xf4,0x8f,0x17,0xd2,0x5e,0xdd,0x12,0x68,0xef,0xfe,0x41,0xee,0x6a,0x81,0xce,0x48,0xd8,0x4d,0xe5,0x13,0xdf,0x9c,0x41,0x44,0x26,0x21,0xb2,0xf5,0x49,0x1e,0x34,0x6b,0xe1,0x8c,0x04,},\"\\x08\\x63\\x35\\xd6\\x12\\x75\\xd1\\x68\\xea\\xac\\x05\\x40\\x47\\x7f\\x50\\xd4\\xb1\\x5f\\x9e\\x50\\xb9\\xbe\\x69\\x39\\x21\\xed\\x54\\xa9\\x94\\x1b\\xc4\\x06\\x43\\xcd\\xa6\\x2e\\x1d\\x80\\x5d\\x02\\x50\\xa8\\x11\\x46\\xbd\\x5f\\xe2\\xd3\\x9e\\x81\\x44\\x4d\\x21\\xe2\\xb2\\x1b\\x03\\x1c\\x11\\x13\\x06\\xca\\xcb\\xf5\\x27\\x17\\xf6\\xfb\\x4c\\xd3\\x41\\x6f\\x12\\x15\\xf8\\xdd\\xdc\\xed\\xd2\\xf0\\x09\\x6b\\x0f\\xcf\\xa0\\xa6\\xcc\\x2c\\xde\\x7a\\x2b\\xab\\x7f\\x1e\\x32\\x79\\x0b\\x53\\x61\\xdf\\x36\\x71\\x42\\x4c\\xc7\\x22\\xf2\\x31\\xbf\\x71\\x89\\x5b\\xcd\\xcb\\x7b\\x22\\xee\\x07\\x4e\\x8f\\xb4\\xa9\\x67\\x85\\x04\\xe7\\x35\\x36\\x6c\\x17\\x2f\\x07\\x63\\x7b\\x7a\\x93\\x14\\x9b\\xb2\\x1f\\x38\\x88\\x33\\x78\\xa1\\xdb\\x27\\x3f\\xc2\\x32\\x39\\xe3\\x53\\x37\\xf9\\xce\\x56\\x6d\\x8d\\xdf\\x3b\\x31\\x33\\xca\\xd7\\xf2\\xce\\x81\\xed\\xb5\\x03\\xce\\x1d\\x27\\xc5\\xa6\\x57\\x16\\x0b\\x78\\xdc\\xa9\\xae\\xae\\xa3\\x79\\xbe\\x9c\\x85\"},\n{{0xee,0x89,0x85,0xdc,0x27,0x50,0x44,0x40,0xa8,0x75,0x8d,0x4c,0x53,0xe4,0x22,0x52,0x15,0x79,0x7a,0x00,0xcd,0x86,0x31,0xd5,0x9b,0xd9,0x3b,0xc6,0x6f,0x37,0x3d,0x5e,},{0xcd,0x64,0x7b,0xb0,0x65,0x69,0x3d,0x48,0x65,0x89,0x15,0x6a,0x9f,0xa2,0x61,0x43,0x75,0x34,0xdc,0x86,0xf4,0x6f,0x72,0xd0,0xa8,0x00,0x39,0x9a,0x7a,0xf0,0x10,0xf7,},{0x5b,0xd6,0x0a,0xd5,0xe9,0xba,0xd9,0x93,0x2c,0xa9,0xc7,0x5f,0x23,0x1a,0x76,0x88,0x9a,0xe7,0xa8,0xb8,0x64,0xb9,0x1d,0x1f,0xcb,0xa5,0xc5,0xd4,0xbf,0xa1,0xd9,0x28,0x38,0xad,0xb9,0x74,0x84,0x2a,0x07,0x10,0x77,0x9b,0x3e,0x30,0x94,0x04,0x49,0x09,0xe9,0x2c,0x7c,0xf0,0x46,0xce,0x51,0x9f,0x4c,0x68,0xe8,0xf1,0x9e,0xc0,0x3c,0x02,},\"\\xf2\\x22\\x04\\x85\\xad\\xdf\\xeb\\xce\\x02\\xa8\\x33\\xac\\xa3\\x33\\x81\\xd1\\xdf\\x91\\x7e\\xd6\\x09\\x95\\x0e\\xd2\\x4f\\x85\\xe3\\xb0\\x2b\\x2b\\x99\\x4b\\x4d\\x93\\x97\\x84\\xe3\\x32\\xf4\\x10\\x64\\xc8\\xb4\\xa2\\x63\\x0a\\xb3\\x69\\x61\\x74\\x2a\\xa1\\xcf\\xfd\\xcb\\x08\\xc1\\x44\\xee\\xae\\xde\\xaf\\xd4\\x8b\\x5d\\xbe\\x96\\xbf\\x24\\x35\\x0e\\x14\\xfd\\x68\\x28\\x6b\\xc0\\x8e\\xea\\xef\\x8b\\xc6\\xad\\x9e\\x19\\x5d\\x14\\x84\\xaf\\xcd\\x30\\xaf\\xa8\\xce\\xd4\\x84\\x81\\x26\\xd5\\x6c\\x81\\xb4\\x3c\\x27\\xa5\\xdb\\xbd\\xec\\x1a\\x50\\xc1\\x10\\x62\\xce\\x21\\xc6\\x1d\\x86\\x0c\\x25\\xa8\\x62\\xfb\\xb7\\x5c\\x3b\\xd5\\x1c\\x8d\\xc0\\x76\\x36\\x66\\x86\\x69\\xbb\\xf7\\x51\\xea\\xca\\xcc\\xb3\\xb5\\x1d\\x2c\\x0d\\x41\\x40\\x31\\x6c\\xfc\\xe2\\xeb\\x18\\xd2\\x90\\x8c\\xec\\xd5\\xa1\\x88\\x67\\x9b\\xc5\\xf5\\xde\\x29\\x0f\\x54\\x8e\\x7e\\xbc\\x57\\xd4\\x1b\\x58\\x9a\\x24\\xce\\x88\\xee\\x48\\xd9\\x7e\\x8d\\x0c\\x7c\\x76\\x99\\x60\"},\n{{0x80,0xdf,0xe2,0xbf,0x73,0x87,0xba,0xd4,0x65,0x4e,0xb0,0x76,0xf8,0xda,0xe9,0x59,0x51,0x63,0xe4,0x01,0x27,0xf5,0xdf,0x49,0x2d,0xad,0x7d,0xf0,0x4c,0x72,0x21,0xc4,},{0xd1,0x78,0x3c,0xee,0xb9,0xcf,0x8e,0x4d,0x07,0x76,0x4c,0x47,0x3f,0xa4,0x06,0x1b,0x82,0x74,0x39,0x71,0x03,0xf2,0x07,0x6d,0x70,0x32,0x49,0xd7,0x58,0xb8,0xfb,0xd5,},{0x27,0x27,0x9e,0x3c,0xdc,0xb0,0x3e,0xf5,0x57,0xa5,0xde,0xfc,0x2f,0x6c,0x58,0x12,0x8a,0x6d,0xc3,0xf8,0xb0,0x38,0x59,0x58,0x01,0x4e,0x70,0x9c,0x1f,0x61,0xb0,0xae,0x6b,0x40,0x35,0x76,0xf0,0xe4,0x54,0xd5,0xe4,0xc6,0x4c,0x17,0x31,0x38,0xee,0x4b,0xbd,0x5f,0xe7,0xb6,0x0d,0x06,0xc5,0xab,0xe2,0x3f,0xe9,0x9e,0xe3,0xb4,0x6a,0x00,},\"\\xaa\\x09\\xd7\\x84\\xbb\\x09\\xdc\\x99\\x99\\x31\\xeb\\xb4\\xc0\\x0e\\x42\\x4c\\xef\\xec\\xa1\\x04\\x81\\x8d\\x8e\\xaf\\x06\\x61\\xf0\\x97\\x28\\xad\\x02\\x5e\\xf4\\x73\\x93\\x21\\x05\\x71\\xf1\\x74\\x04\\xe9\\xaa\\x6d\\x8c\\xbd\\x5f\\xd8\\x8c\\xd7\\xdf\\xb8\\xe2\\xe8\\xa1\\x08\\xc0\\x5d\\xe2\\x06\\xf3\\x40\\x82\\x34\\xa3\\xb4\\x63\\xdb\\xe7\\x1a\\x07\\xd0\\x55\\x87\\x32\\x45\\x24\\xb7\\x32\\x6e\\xe7\\x9d\\x33\\x48\\xdd\\xbe\\xd7\\x87\\x1b\\x86\\xfc\\xb4\\x88\\x03\\x1d\\xc9\\xea\\x93\\xf6\\xb8\\xd7\\xfd\\xa6\\x23\\x93\\x48\\xa5\\x62\\x44\\x4f\\xaf\\x1e\\x72\\xd3\\x1a\\xf3\\x54\\x43\\xe9\\xdf\\x53\\xe7\\x62\\xf3\\xe5\\x6b\\x48\\x66\\x8f\\x97\\x84\\xb3\\x36\\x8a\\xb2\\x78\\xa4\\x8e\\xf4\\x54\\x6a\\x26\\xcf\\xad\\x0d\\x0a\\x51\\x61\\x69\\x8f\\x26\\xee\\x8d\\x34\\xfc\\x2b\\x3d\\x6d\\xfb\\x93\\xb0\\x09\\xac\\x29\\x6f\\x6a\\xfe\\x48\\x7e\\xe3\\x35\\xea\\xc9\\xf0\\x2c\\xfc\\xae\\x5f\\xcb\\xd1\\xa1\\x6b\\xa4\\xe7\\x1b\\xe1\\xb1\\x12\\x56\\x2f\\xc2\"},\n{{0xda,0x1f,0x86,0x85,0x42,0xcd,0x7c,0xce,0x7a,0x5c,0xa3,0xfa,0x3c,0x24,0x08,0x1b,0x4d,0x23,0x44,0xb2,0x1a,0x15,0x7f,0x02,0x64,0xa3,0x47,0x13,0x2d,0x19,0x65,0x9d,},{0xcb,0x3a,0x25,0xa5,0x3f,0x27,0x2e,0xa8,0x13,0x80,0x44,0x68,0xd6,0x50,0x0e,0x96,0xa1,0xea,0xf8,0x22,0x70,0x5b,0x77,0x90,0xa8,0xac,0x3e,0x98,0xcc,0x4e,0x52,0x4b,},{0x75,0xc5,0x17,0xad,0xe4,0xf0,0x8d,0x77,0x46,0x30,0x57,0x43,0xd1,0xa7,0x76,0xc3,0xc5,0x5e,0xb5,0xee,0xdf,0xdf,0xcb,0x5e,0xb1,0xd5,0x63,0x4a,0x1b,0xda,0xf7,0xa4,0xb8,0xd2,0x41,0x87,0xd6,0xc8,0x85,0x0e,0x3c,0xed,0x65,0x67,0xa0,0x3c,0x4c,0x59,0x38,0x9a,0x4c,0xf4,0x71,0x14,0xce,0x54,0x73,0x16,0x0f,0x23,0x05,0x46,0xe6,0x0d,},\"\\xc6\\x98\\x7e\\xf3\\x80\\xd5\\xd0\\xe7\\x41\\x96\\x44\\x3a\\xaa\\x3a\\x32\\x35\\x6c\\xbc\\x02\\x63\\x6c\\x5a\\x4b\\x6d\\x62\\xa8\\x11\\x4b\\x21\\x11\\xbc\\x1a\\xbd\\xdd\\x9e\\x44\\xb3\\x67\\x2c\\x18\\xb5\\x8d\\x4e\\xf5\\x91\\xaf\\x45\\x62\\xe0\\x20\\x04\\x9f\\x8e\\x12\\x74\\x68\\x8e\\x1f\\x8e\\x52\\x96\\xd2\\xf9\\x25\\x2e\\x7f\\xc8\\x4c\\xd1\\xd0\\xc5\\x8e\\x98\\xf0\\xf1\\x60\\x53\\x0a\\xa2\\x2c\\x87\\x1e\\xef\\x65\\x2e\\x71\\x97\\x4c\\xe9\\x1b\\x4a\\x65\\xfc\\x25\\xfd\\x09\\xfa\\x1b\\x6c\\x32\\x08\\x6e\\x98\\xec\\x70\\x8d\\x9a\\xbc\\xb1\\xd9\\xcc\\x8e\\x1a\\x08\\x9e\\xd8\\xdb\\x22\\x06\\xee\\x95\\x70\\x23\\x6a\\xd6\\x9b\\x3d\\xe6\\x82\\x18\\x62\\xfd\\x2c\\x70\\xcd\\x83\\xa3\\x2a\\x68\\xb0\\x48\\x62\\x29\\x55\\x3d\\x92\\x8d\\xe4\\x8d\\x03\\xa1\\x04\\xe8\\x73\\x81\\x96\\x4a\\xbe\\xa7\\x66\\x83\\x97\\x6d\\x52\\x7c\\x84\\x16\\x3a\\x12\\xee\\xe0\\xa5\\x59\\x86\\xcf\\x14\\x31\\xe9\\xc8\\x6c\\xba\\x81\\x82\\xca\\x94\\x68\\x9b\\xac\\xd1\\x65\\xfb\\xce\"},\n{{0xf1,0x3d,0xae,0xc0,0xef,0x33,0xdd,0xd1,0x33,0xc7,0xd2,0x44,0xd1,0x0f,0xd2,0x7d,0xdb,0x23,0x70,0x52,0x80,0xff,0x5f,0x18,0x15,0xf0,0xf6,0x56,0xd8,0x36,0xfe,0x84,},{0x2d,0xc7,0xf1,0x36,0x7d,0xe6,0x72,0xc5,0x1e,0x00,0x5c,0x74,0xf8,0x76,0xf9,0x82,0x59,0x39,0x96,0x87,0x3a,0xcb,0xa0,0x79,0x29,0x27,0x34,0xc2,0x09,0xc2,0xb1,0x11,},{0xdb,0x77,0x18,0x33,0xf7,0xfd,0xba,0xcd,0xab,0x2b,0x5c,0xc8,0x0e,0xed,0x50,0xaf,0xdf,0x13,0x78,0x3b,0x7f,0xe5,0xe9,0x03,0xd5,0xdb,0xb4,0xc2,0xe5,0x35,0x31,0x6a,0x6e,0xef,0x4c,0x34,0xf0,0x04,0xd2,0xb9,0xa4,0xe2,0x70,0x0b,0xd6,0xe2,0xac,0xdd,0x56,0x4c,0x3c,0x80,0xcc,0x68,0xa3,0x03,0xf5,0xfb,0x09,0x1c,0xb4,0x34,0x0f,0x0a,},\"\\xec\\x02\\xff\\x18\\x04\\xb2\\xb3\\x09\\xaf\\x31\\x58\\xb6\\x62\\x72\\xa1\\x4a\\x3a\\xad\\x83\\xc4\\x1a\\x71\\x98\\x46\\xf7\\x08\\x8c\\xa9\\x79\\x2a\\xf5\\x75\\xc7\\x89\\x13\\xc4\\x32\\x75\\x9f\\x0b\\x9a\\x74\\x8b\\xdc\\x55\\x68\\x49\\x6e\\x41\\x65\\x8c\\xc1\\xcd\\xb8\\xda\\x6c\\x91\\xd0\\x7c\\x3e\\xc2\\xf4\\xaf\\x50\\x42\\x49\\xb9\\x96\\xaa\\x00\\xc0\\x07\\x1c\\xdf\\xa7\\x93\\xf8\\x2d\\x0e\\xc5\\xd2\\x67\\x26\\x2f\\x51\\x8f\\xc0\\x29\\xb8\\x8e\\x20\\xb6\\x20\\x1f\\xb9\\xe0\\x5a\\xbd\\x3f\\x95\\x24\\xc5\\xda\\x2f\\xa8\\x97\\x8f\\xf2\\xef\\xd4\\x81\\x20\\xcf\\x00\\x82\\x2d\\x1b\\xee\\x90\\xdf\\x81\\x61\\x25\\xd8\\xed\\xc0\\xcf\\xb5\\xde\\x66\\xd1\\x6b\\xe6\\x38\\x96\\xa4\\x12\\xa6\\x2b\\x03\\x1b\\x71\\x18\\xac\\x13\\xfe\\x2c\\x9f\\xaa\\x6b\\x1a\\x33\\x42\\xf9\\xcc\\xf7\\x88\\x41\\x66\\xcf\\x48\\x9a\\x84\\xde\\x26\\xb5\\xce\\x5b\\x21\\x85\\x6a\\x3a\\xf2\\x89\\xbc\\x66\\x22\\xc0\\xaa\\xb9\\xf2\\x14\\x2d\\x39\\x3f\\x5d\\x4b\\x23\\x67\\x79\\xdb\\xb0\\x66\"},\n{{0x42,0xdc,0x16,0xc5,0x7f,0xb6,0xf1,0x28,0x94,0x5f,0xa1,0x01,0xe0,0x5b,0xbf,0x54,0x8e,0xf7,0xd9,0x77,0x26,0xb6,0x92,0xfe,0x40,0x40,0x69,0xcc,0x57,0xcc,0xef,0xa0,},{0x0a,0x1b,0xa5,0xdf,0x52,0x39,0x96,0xf9,0x54,0xb3,0x4d,0xdc,0xfa,0xba,0xd3,0xf3,0xde,0xe2,0x1a,0x5f,0xa7,0xa4,0xce,0x32,0x2d,0x21,0x6b,0xd8,0xcc,0xaf,0x43,0x8c,},{0xc7,0x59,0x77,0xe8,0x3b,0xcf,0xe9,0xdf,0x72,0x92,0xa8,0x60,0xed,0x97,0x25,0x55,0xb5,0xc2,0x44,0x16,0xfd,0x4b,0x7e,0xe3,0x28,0x53,0x88,0xfa,0x5b,0x14,0x47,0x60,0x8e,0x4a,0x34,0x78,0x13,0xcf,0xe0,0x93,0x51,0x2a,0x76,0x51,0xe4,0x22,0xe9,0x86,0x7d,0xb7,0xb9,0x7c,0x0b,0x08,0x67,0xf0,0xb8,0xc7,0xb7,0xf4,0xf0,0x2c,0x31,0x0d,},\"\\xf2\\x71\\x4c\\x23\\xa3\\xa6\\xfc\\x11\\xad\\x15\\xc9\\x80\\xb7\\x35\\x0f\\xc8\\x42\\x17\\x87\\x76\\x61\\x18\\x80\\x55\\xff\\x75\\x0d\\x82\\xc4\\x9c\\x5f\\xef\\x7b\\xc8\\xe6\\xaa\\xc5\\x74\\xa1\\xb7\\x9a\\x3f\\x26\\xd1\\x69\\x69\\xc0\\xf4\\x06\\xee\\xab\\x3e\\x9e\\x12\\x85\\x0a\\x55\\x70\\x97\\x45\\xe3\\x0d\\xff\\xa6\\x2a\\x69\\xdf\\xb2\\xb6\\x4b\\x3c\\x1b\\xd2\\xbc\\x35\\x86\\xe2\\x6d\\x4e\\xea\\x71\\x4d\\x2a\\x7b\\x71\\xcf\\x79\\xfb\\x8f\\xfb\\xf2\\xaa\\xad\\x00\\xca\\x3e\\x4f\\x2b\\x6f\\x50\\x3c\\xc1\\xfe\\xf2\\xea\\xb3\\x65\\x6f\\xb4\\x4f\\x8d\\x62\\xa8\\xdb\\x8a\\xb5\\x8f\\x39\\x46\\x93\\x94\\x9e\\xea\\x57\\xfa\\xfe\\xcf\\x00\\x5f\\x6e\\xbf\\x12\\x87\\xdb\\xa4\\xd2\\xd6\\x23\\xc0\\x2e\\xa1\\x71\\xf5\\x67\\xe5\\x26\\xad\\xd2\\x07\\x09\\xeb\\xca\\xb9\\x62\\xf8\\x3d\\x98\\xef\\x66\\x8e\\xbd\\x01\\xef\\x20\\x48\\x8b\\x36\\x65\\xe3\\xa4\\x46\\xfb\\xfb\\x13\\xd3\\x40\\x50\\x94\\x2c\\x74\\x9b\\xb2\\xdf\\xfc\\x76\\x63\\x67\\xfd\\x45\\x2e\\x68\\xe5\\xb0\\xc6\"},\n{{0x90,0xb4,0x55,0xc6,0xbb,0x9c,0xec,0x83,0xe1,0x37,0x35,0x70,0x65,0x33,0x9d,0x03,0x05,0x25,0xd0,0xea,0x7f,0x5b,0x92,0x3a,0x2d,0x59,0x72,0xc3,0xc1,0x2a,0xa3,0x7b,},{0x5c,0xef,0x03,0x8c,0x16,0xbf,0xa4,0xb4,0xc9,0x23,0xa0,0xfe,0x70,0xcd,0x7f,0x25,0xc8,0xbc,0x83,0x7f,0xdf,0x5a,0x7e,0xfb,0x9d,0x95,0xf2,0x1b,0x96,0xbe,0x92,0x5a,},{0xc9,0x34,0x5e,0xec,0x2c,0x4a,0x0a,0xec,0x73,0x23,0x86,0x49,0x4a,0x69,0xa3,0xfc,0xe8,0xb8,0xa1,0xbe,0x36,0x6b,0xbe,0xd1,0x65,0x9f,0x13,0x1f,0xe9,0x7c,0xc0,0x37,0xfb,0x1b,0x7c,0x1b,0x68,0xb0,0xf3,0x02,0x39,0x45,0xd2,0x00,0x90,0xa0,0xcd,0x2c,0x15,0x53,0xa4,0x7f,0xae,0xc4,0xd6,0x6f,0xd8,0x16,0xce,0x12,0x11,0x68,0xf3,0x09,},\"\\xc6\\x2c\\xfd\\xb9\\xd2\\x1e\\xee\\x6b\\xe4\\x7f\\x30\\x72\\x7a\\xae\\xe5\\x1f\\x07\\x03\\x78\\x9a\\x43\\x1d\\x32\\x22\\x85\\x33\\x35\\x02\\x17\\xa9\\x3a\\x18\\x90\\x06\\x69\\xc9\\x59\\x56\\xf3\\xf2\\xae\\x90\\xdc\\x74\\x5a\\x71\\xe1\\x83\\x40\\xd0\\x58\\xd1\\x6b\\x4c\\x6f\\xe3\\x3b\\x64\\xaf\\x8d\\xad\\x97\\x3f\\xe5\\xdc\\x02\\xe8\\x52\\x07\\x05\\xc7\\xa8\\xbb\\x3c\\xcb\\xe1\\x83\\x8c\\x6c\\x24\\x93\\x37\\xf9\\xb6\\xa4\\xc0\\xe1\\xf8\\xa4\\xe5\\xd1\\x03\\x19\\x6f\\xa7\\x99\\x98\\x92\\x3d\\x04\\x22\\xe9\\xd0\\x79\\xa7\\x2c\\xc2\\xa8\\xf8\\x6d\\x65\\x90\\x31\\xa6\\x07\\xd4\\xcc\\xa0\\xb9\\x47\\xb3\\xab\\xee\\xee\\xf6\\x4c\\x28\\xda\\x42\\x0d\\x05\\xde\\x66\\x5a\\x55\\x10\\xfe\\x55\\xf7\\x75\\x98\\xec\\xad\\x7f\\xaa\\x0a\\xc2\\x84\\x80\\x0b\\x53\\x82\\x93\\x94\\xc4\\xae\\x90\\xbe\\x66\\x67\\x8f\\xf0\\x4a\\xb4\\x6d\\xa2\\x65\\xae\\x06\\x40\\x2d\\x8c\\x83\\xca\\xd8\\x4d\\x61\\xa0\\x51\\xde\\x02\\x60\\x55\\x98\\x88\\xe7\\x79\\xf7\\x4b\\x72\\xa5\\xd7\\x1c\\x13\\x2f\"},\n{{0xdc,0x18,0x5c,0x2b,0xa0,0xb3,0x78,0xdf,0xe5,0xdd,0xa5,0x10,0xc3,0x2f,0xef,0xf5,0x35,0xca,0x2e,0x8a,0x02,0x43,0x4b,0x32,0x6e,0x01,0x58,0xbc,0x87,0x8e,0x88,0x48,},{0x33,0xd6,0xcc,0x05,0xa4,0x34,0xe4,0x19,0x28,0x0d,0x58,0x64,0xa1,0xaf,0x20,0x9a,0x2c,0x67,0x68,0x14,0xb7,0x0f,0x72,0xf8,0x14,0x1a,0xc7,0xe0,0x57,0x3e,0xe6,0x3e,},{0xf1,0xe4,0x45,0x14,0xd2,0xec,0xbc,0xc8,0xd1,0xa7,0xe8,0x4b,0xf5,0x84,0xce,0x73,0x18,0x35,0xe9,0x89,0x4f,0x88,0x97,0x4f,0x09,0x8d,0x45,0x6b,0x60,0x71,0x8f,0x57,0x5e,0xf4,0xd8,0x06,0x2f,0x21,0x82,0x50,0x42,0x50,0xcf,0x83,0xbb,0x2a,0xf2,0xa7,0x9b,0x1f,0x58,0xa6,0xa9,0x7b,0xd9,0x8d,0xa4,0x67,0x13,0x2d,0x7b,0xec,0x2f,0x05,},\"\\xe2\\x76\\xb1\\x19\\x12\\xcc\\xa5\\xa8\\x4b\\xba\\x65\\x0c\\x17\\x2a\\xef\\x3a\\x4d\\x5f\\x91\\xac\\x72\\x29\\x13\\xbb\\x89\\x1a\\x3a\\xb0\\x42\\x4a\\xb0\\x7e\\xa7\\x09\\xcb\\x8b\\xba\\x3a\\x3d\\x11\\xf8\\x2f\\x51\\xc2\\xaf\\x01\\x62\\xa8\\x2f\\x72\\x19\\xce\\x27\\xb3\\x5a\\x30\\x50\\x7d\\x53\\x6a\\x93\\x08\\x17\\xe4\\x0f\\x85\\xa2\\x2a\\x5a\\x43\\x2b\\x94\\xd1\\x92\\xc3\\xc8\\x91\\x17\\x77\\xcf\\xdb\\x7f\\xe9\\x37\\xa6\\x75\\x02\\x77\\x0d\\x6d\\x75\\x75\\x3d\\x3a\\xe8\\x82\\x29\\xe0\\x8f\\x1e\\xd2\\x3b\\x43\\x28\\xd8\\x62\\xac\\x61\\x86\\x3c\\x06\\x3e\\xa9\\x84\\x8f\\x8a\\xb9\\x6a\\x02\\x13\\xd7\\xb9\\x36\\xc4\\x8f\\xe7\\x54\\x83\\x6c\\x98\\x48\\x78\\x59\\xd1\\x99\\xb3\\xd9\\x40\\x39\\x27\\x16\\xa1\\xd5\\x69\\xe6\\xc0\\xcb\\x1b\\xa9\\x18\\x93\\x2c\\xf8\\x85\\x25\\xe2\\x56\\xc8\\xab\\xb1\\x1a\\xaf\\x0b\\x45\\x46\\x55\\xd5\\xdb\\x55\\x71\\x3c\\xeb\\xba\\x28\\x7a\\xe2\\x02\\x65\\x1a\\xc8\\x72\\xbf\\xc8\\x0f\\xea\\xa7\\xe0\\x0d\\x47\\xc0\\xbe\\x38\\xe6\\x58\\xf7\\xc5\"},\n{{0x90,0x72,0x1c,0x43,0xbc,0x36,0x6f,0x24,0xbf,0x4e,0x8c,0x99,0x3e,0x13,0x80,0x24,0x68,0x2f,0x10,0x29,0xdb,0xa3,0x5a,0xbe,0xb0,0xd6,0x0c,0x7f,0xa7,0x10,0x02,0x1c,},{0x7c,0x63,0xa2,0xf1,0x3b,0x7b,0x22,0x0a,0x0b,0xb7,0x52,0xe3,0x80,0x07,0x53,0xb8,0xb6,0xb3,0x26,0x69,0x37,0x8c,0xe1,0x31,0xbb,0x77,0xa9,0xa8,0xd2,0x30,0xe9,0xae,},{0xd2,0x06,0x4a,0x6d,0x6c,0x99,0xc6,0xc3,0xf1,0x52,0xd2,0xd4,0x35,0xf2,0x4e,0x34,0xb5,0x45,0x9b,0x08,0x2e,0xf1,0x1e,0x94,0x4a,0x77,0xff,0x54,0xdd,0xf9,0x86,0x27,0x37,0xec,0xb2,0xac,0x8d,0x54,0x20,0x7d,0x36,0xc5,0x1a,0xd4,0x1f,0x36,0x49,0x0a,0x11,0x1b,0xa8,0x0e,0x12,0x6b,0xfe,0xcb,0x09,0xde,0xf6,0xac,0xcb,0xdf,0x88,0x0e,},\"\\x65\\x1c\\x96\\x17\\xca\\xc9\\x58\\xc7\\xed\\xd4\\xa5\\xf3\\xfe\\xdf\\xb8\\x3d\\xc9\\x71\\xab\\xfb\\xb6\\x9a\\x31\\xe8\\x98\\xcc\\xa8\\x47\\x2e\\xf0\\x68\\x03\\x4a\\x6d\\x23\\x76\\xee\\x0e\\x72\\xd0\\xa9\\xbf\\xee\\x27\\x57\\x96\\xc3\\x79\\x5a\\xda\\xc8\\xeb\\xe1\\xd1\\x2b\\x66\\xec\\x26\\x8f\\x6b\\x75\\xfa\\x39\\x41\\x15\\x4f\\x99\\xe2\\x23\\xfa\\xf2\\xcb\\xab\\x5b\\x92\\xe2\\xb3\\xba\\x7b\\x79\\xbe\\x77\\x00\\xef\\x9d\\xba\\x69\\x25\\x3c\\xce\\x53\\x56\\xb0\\xc4\\xe7\\x47\\x03\\xcf\\xca\\xfd\\xb5\\x54\\x68\\x50\\xb4\\x62\\x32\\x67\\x5c\\x90\\xc0\\x2d\\x5e\\x42\\x6d\\x33\\xd6\\x0c\\xeb\\xf0\\xc7\\x93\\x01\\x82\\x37\\x9d\\xbb\\x00\\x7f\\x53\\x61\\x63\\xc8\\xdd\\xbb\\xd3\\x15\\x7b\\xb2\\xda\\x62\\x34\\x01\\x33\\xf0\\x0a\\xe2\\x68\\x2e\\xc6\\xba\\xa6\\x41\\x6b\\x5a\\x01\\x52\\x1c\\xc1\\x0e\\x04\\x69\\x52\\x95\\xf2\\xe5\\xb9\\x4c\\x05\\xf0\\x03\\x83\\xff\\xe9\\x54\\x83\\x07\\x97\\xf6\\xdf\\x82\\x31\\x72\\x53\\x2f\\x98\\x16\\x5f\\xe3\\x14\\xab\\x32\\x59\\x29\\xaf\\x83\\x85\"},\n{{0x9c,0xec,0x24,0x67,0x58,0xe4,0x12,0xe7,0x37,0x8b,0x45,0x79,0xea,0xfe,0x9f,0xac,0x5a,0x25,0xd5,0x40,0x5f,0x92,0x70,0xb5,0xd7,0xe5,0x43,0x41,0x4e,0xc3,0xd5,0xda,},{0x97,0x5a,0x9e,0x6a,0x15,0x2c,0xae,0xbb,0x2f,0x9d,0xd0,0xde,0xb7,0x6d,0xd9,0x22,0xb6,0xdc,0x77,0x05,0x5d,0xda,0x03,0xfb,0xae,0x9e,0x7c,0x68,0x5d,0x07,0x3a,0xa1,},{0x9b,0xad,0x1e,0x3b,0x12,0x79,0xef,0x65,0x8f,0x4d,0x07,0x16,0x44,0xc6,0x3a,0xe2,0xb7,0xa7,0x80,0x35,0x7e,0x9d,0xc4,0x26,0xf1,0x65,0x0e,0xc0,0x63,0x4d,0xfc,0x52,0x0f,0x8e,0xda,0x9d,0xc8,0xf1,0x0a,0xa7,0x32,0x4c,0x59,0x42,0xd2,0x34,0x7f,0xf8,0x80,0x2b,0xd9,0x0e,0x95,0xfc,0xec,0x31,0x33,0x52,0xcd,0xae,0x64,0xf3,0x2a,0x04,},\"\\x17\\xec\\x9b\\xd4\\x7a\\xdd\\x6c\\xcf\\xbd\\x78\\x7a\\xf0\\xd9\\x01\\x3e\\x9c\\xc9\\x79\\xaa\\xf8\\x50\\xe0\\x94\\x26\\xd3\\xb2\\x8e\\xdf\\xd7\\x12\\x96\\xeb\\x31\\xff\\x8b\\x21\\xc5\\xfe\\x7b\\xe0\\x50\\xf5\\x36\\x32\\x4c\\x3e\\xc4\\x88\\x50\\xe0\\xb5\\x08\\xa3\\x6b\\xb4\\xcb\\x7e\\x75\\x4b\\x32\\x71\\x83\\xa1\\xb3\\x94\\xd8\\x8a\\x79\\x41\\xd1\\xce\\x8d\\xac\\x62\\xa5\\xd8\\x29\\x18\\x74\\xd7\\x84\\x85\\xe5\\x1f\\x29\\xed\\x05\\x86\\x5a\\x20\\x6e\\x52\\xec\\xb1\\x2c\\x5d\\x10\\x7d\\x4f\\xf9\\x6f\\x25\\xd3\\xc5\\xd1\\x81\\xd2\\xc4\\xba\\x64\\x63\\x60\\x0d\\xb1\\xcc\\xa3\\x28\\x57\\xfc\\xf5\\x97\\xcb\\xdf\\xb2\\xfd\\xa2\\x70\\x8a\\x8a\\xba\\x28\\x1b\\x43\\xc3\\xd2\\x8c\\x4a\\x4e\\x79\\x83\\x36\\x15\\x09\\xf6\\x1a\\x10\\x74\\xe6\\xf0\\xad\\x61\\x01\\xc7\\xb5\\x67\\xee\\x40\\x78\\xe9\\x83\\x9c\\x47\\xf4\\x65\\x31\\xb7\\x29\\xff\\x0e\\xfe\\xef\\x7c\\x9d\\x1a\\x8d\\x83\\x3d\\x9c\\x0f\\x42\\x81\\x2a\\x34\\x18\\x7c\\x3a\\x77\\x8c\\x16\\x5c\\x09\\xd6\\x45\\x9c\\x9c\\x7c\\xea\\xa2\"},\n{{0xd1,0x40,0x3f,0x63,0x20,0x2e,0x08,0x05,0x25,0x84,0x3b,0xde,0x25,0x5e,0xeb,0x6b,0x67,0x83,0xc1,0xca,0xae,0x9d,0x6e,0xd0,0x0b,0xa6,0x08,0x05,0xbe,0xd1,0x94,0x1f,},{0x23,0x8a,0xea,0x3a,0xd6,0xd6,0xf2,0x77,0x83,0xe7,0x05,0x16,0xbb,0xfc,0xca,0x47,0x70,0x36,0x6b,0x50,0xed,0x0f,0xe6,0xa4,0xe9,0x66,0xb5,0x3a,0xf1,0x21,0xa7,0x21,},{0x8e,0x60,0xe7,0x3c,0x06,0x38,0x16,0x79,0x5e,0x29,0xf5,0xd6,0x4e,0xce,0x11,0x59,0xf1,0xb5,0xd5,0x02,0x1a,0x6f,0x8f,0x65,0x5e,0x26,0x1a,0x4d,0x00,0x26,0xf5,0xb9,0x4f,0xf2,0x92,0x32,0x50,0x49,0x9d,0x99,0x52,0x98,0x48,0x05,0x12,0xe4,0x12,0x62,0x76,0xaa,0x4a,0x22,0x6d,0x01,0x5a,0x95,0x82,0x7b,0x3c,0xe6,0x92,0xe2,0x33,0x02,},\"\\xc4\\xf1\\x7d\\x44\\x2f\\xba\\x4c\\xa0\\xdf\\x8d\\xc1\\xd0\\x62\\x8d\\x7d\\x7f\\x36\\xb6\\x0b\\x57\\x58\\xd7\\xc1\\x3b\\x80\\xb8\\xf9\\x7a\\x62\\x12\\x4d\\x96\\xa2\\x3b\\x27\\x95\\x65\\x49\\x5a\\x8a\\xcc\\xab\\x59\\x97\\x11\\x5b\\x13\\xa4\\xba\\x22\\x0a\\x73\\x95\\x7e\\xb7\\x93\\x05\\x20\\xac\\xbb\\xfb\\x6f\\x54\\xcf\\x68\\x72\\x6b\\x64\\x50\\xc6\\xff\\xa9\\x47\\x0b\\x05\\x5e\\xa2\\x62\\x91\\x4e\\x2b\\xc6\\x12\\x63\\x3f\\x1a\\xc3\\xd0\\x61\\x8a\\x23\\xdf\\xf1\\x88\\xa7\\x33\\xd7\\x6b\\xcb\\xcc\\x46\\x0f\\x52\\xab\\x61\\xe1\\x99\\x38\\xf9\\xc8\\xca\\xaa\\x79\\x2c\\x20\\x8d\\x1f\\x6c\\x75\\x47\\x28\\x90\\x5f\\xda\\x51\\xd8\\x81\\xa3\\x47\\xa5\\x3d\\xa7\\x44\\xd3\\xba\\xad\\xc0\\xa7\\x6c\\x47\\x4c\\x55\\x86\\x80\\x26\\x90\\x95\\xf9\\x08\\x4a\\x74\\x47\\x1d\\x5c\\x09\\xff\\xc2\\x91\\x41\\xb5\\xbf\\xaf\\x49\\x54\\xdf\\xac\\xbc\\xa6\\x63\\xd0\\x37\\xb1\\x7e\\xbf\\x95\\x59\\x88\\x22\\x33\\xe5\\xca\\x5a\\x8b\\xf7\\x5c\\xca\\x4f\\xc9\\xc5\\xa4\\x10\\x9f\\x32\\xe1\\x45\\xf3\\x85\\x3b\\x17\"},\n{{0xbd,0xf6,0xbd,0xc3,0x1a,0xb0,0xb5,0x31,0x37,0x84,0x48,0x3a,0xbe,0xca,0x6e,0xa5,0xe9,0xcd,0xc6,0x8f,0x81,0xb2,0x1f,0x35,0x0d,0x09,0xc3,0x90,0x7b,0xb9,0xb6,0xa1,},{0x03,0x62,0x77,0x12,0xb7,0x55,0xe5,0x06,0x9f,0xb9,0xab,0x8f,0x9e,0x89,0x97,0x24,0x02,0x9a,0x7f,0x26,0x8a,0xf9,0x39,0x88,0x21,0xee,0xec,0x93,0x60,0xc9,0x28,0x5b,},{0x38,0xfa,0xc6,0x03,0xed,0x24,0x6f,0x83,0x3f,0x1c,0x0f,0xd4,0x58,0x56,0x98,0xb0,0xa7,0x13,0x05,0xef,0xf0,0xd1,0x4a,0x00,0x49,0xb3,0xce,0xf0,0x73,0xbd,0x03,0x6d,0xd4,0x51,0xb3,0xda,0xba,0xda,0xae,0xae,0xa2,0xae,0xaf,0x83,0xd3,0x95,0x74,0x6f,0x4e,0x86,0x86,0x6a,0xda,0x97,0x1c,0xbe,0x48,0x2e,0xdb,0x04,0x19,0x33,0x2f,0x0e,},\"\\x90\\xa6\\x6a\\xaf\\xa5\\x64\\x2a\\x98\\xe7\\x9f\\x0d\\x88\\x14\\x70\\x80\\x16\\x7b\\x11\\xe4\\x46\\x65\\x18\\xf1\\x95\\xcd\\xdd\\x89\\x40\\xd1\\x2e\\xe4\\x91\\x8d\\x31\\xa6\\xd4\\xcb\\x77\\xd0\\xbf\\x5a\\xf2\\x99\\x83\\xbb\\xe5\\x08\\x56\\x10\\xa7\\x9d\\xaf\\x0c\\x75\\xa7\\x8c\\xcb\\xcf\\xfb\\xbd\\xab\\x21\\x89\\xc3\\x94\\xae\\x24\\xe2\\x65\\xbd\\x8c\\x55\\xfd\\x3f\\x40\\x98\\xe1\\xb1\\x75\\x57\\x75\\x49\\x51\\x8e\\x7a\\x4d\\xcf\\x74\\x52\\x08\\x6d\\xd1\\x27\\x8d\\xd5\\x8e\\xa4\\xc0\\xaa\\x69\\x0e\\x91\\x79\\x51\\xef\\x39\\xfc\\xff\\x60\\xcb\\xfa\\x1e\\x90\\x91\\x0b\\xab\\x53\\x74\\x92\\x8d\\x47\\x22\\xf7\\x02\\xbf\\x5a\\xd6\\x02\\x8f\\xfd\\xa6\\x54\\x1f\\xa5\\xba\\x1a\\x37\\x79\\xec\\x78\\xb0\\xa9\\x5f\\xe3\\x85\\x0c\\x74\\x8b\\x6c\\x8f\\x42\\xf3\\x30\\xec\\x79\\x54\\x1a\\x52\\xa1\\xcf\\x57\\xdb\\x72\\xdf\\x4f\\x92\\xce\\x7f\\x74\\x8a\\xee\\xf1\\xaf\\x33\\xbc\\x5a\\xe0\\xa8\\x2c\\x89\\xdf\\xf2\\x16\\xf2\\x3a\\xec\\x16\\x8a\\x7d\\xbb\\x51\\x0a\\xa6\\x32\\xda\\xab\\xcc\\x97\\x1b\\x3f\"},\n{{0x57,0xb3,0xb1,0x4a,0xce,0x1c,0xd0,0xcd,0x60,0x3e,0x63,0x28,0xbd,0x21,0x9e,0xe7,0xd9,0xd0,0x94,0x48,0x7f,0xa6,0x68,0xf2,0x8a,0xee,0xc0,0x2b,0x43,0xc9,0x09,0xa7,},{0x24,0xe6,0xb6,0x39,0x5f,0x97,0xea,0x0e,0x23,0x71,0x86,0xd4,0x69,0xb7,0x19,0x23,0xd2,0x11,0x3a,0xdf,0x40,0x3b,0xee,0xeb,0x4a,0x2d,0x27,0x90,0x9a,0xaf,0x3e,0xda,},{0xfc,0x79,0xfd,0xc6,0xd0,0x90,0x88,0x7a,0x61,0xe4,0x3c,0x6b,0x91,0x87,0xb6,0x57,0xd2,0xe4,0xd9,0xcb,0xaf,0xd6,0xe7,0xca,0xeb,0x7e,0xbd,0xea,0x84,0x28,0x25,0xb7,0x8f,0xb9,0x49,0xd2,0xc4,0x9a,0x0c,0xf3,0x8b,0x6c,0x73,0x29,0x6d,0x82,0xc8,0xdd,0xeb,0x1f,0xe2,0xd4,0x0a,0xad,0xdd,0x79,0x64,0xda,0x68,0xac,0xf8,0xc6,0x6f,0x0e,},\"\\xb2\\xe0\\xde\\xdd\\x80\\x2e\\xed\\x99\\x6d\\xbd\\x58\\x36\\xbf\\x86\\x88\\xb0\\xd1\\x20\\x1b\\xf5\\x44\\x2f\\xf9\\xbb\\xd3\\x51\\xae\\xef\\xe1\\xa0\\xc2\\x1f\\xea\\x2b\\x5c\\x9f\\xe5\\xed\\xee\\x47\\xe9\\x21\\x09\\x9b\\x05\\xae\\xda\\xa8\\x03\\x67\\xc1\\xce\\x08\\x82\\x1d\\x78\\x3a\\x5b\\x64\\xcf\\x05\\x9c\\x0f\\x43\\x35\\x08\\x39\\x86\\xa5\\xa6\\xec\\xff\\x8c\\x84\\xfd\\x40\\xe0\\xba\\x5d\\xd5\\xe5\\xd2\\xf0\\x11\\x12\\xa8\\x4c\\xe5\\xcf\\x8e\\x0d\\xb7\\x8b\\xeb\\x18\\x2d\\x91\\x39\\xc0\\xb0\\xf3\\xe0\\x06\\x0a\\x3f\\xa7\\x38\\x69\\xe9\\x64\\x23\\xf1\\x70\\xdf\\x9a\\xf1\\xcb\\x9c\\x35\\x56\\x6d\\x87\\xdf\\xf5\\x42\\x22\\x3f\\x6d\\x43\\x9b\\xdb\\x54\\x72\\x9d\\x36\\x6a\\xff\\x63\\x7b\\x0f\\x36\\xa5\\xd1\\x4b\\x15\\xd6\\x12\\xbd\\x03\\x07\\x6c\\xc4\\xd0\\x4c\\x1f\\x25\\xb3\\xba\\x84\\xe0\\xd1\\xfe\\x47\\x4e\\x57\\x18\\xd1\\xa1\\x7d\\x5a\\x48\\x84\\x65\\x66\\x2e\\xe4\\xc3\\xf6\\x64\\xb4\\xc9\\x27\\x4b\\x64\\x9d\\x78\\xce\\xa4\\xe8\\x52\\x43\\xf3\\x71\\x32\\x39\\x04\\x8a\\x90\\x8c\\xe3\\xe1\"},\n{{0x01,0x8a,0x2c,0x3d,0xee,0xa5,0x0a,0xb5,0x06,0x75,0x1f,0x9c,0x2a,0xda,0xad,0xfd,0x9e,0x21,0x92,0x12,0x16,0x09,0x93,0x16,0x84,0xeb,0x26,0x5e,0x19,0x3e,0x7f,0x89,},{0xaf,0x41,0x0b,0xdd,0xde,0xfc,0x64,0x4e,0xf1,0x2c,0x98,0x99,0xff,0x71,0xb9,0xe1,0xd0,0xdf,0xa3,0xd6,0x9d,0x8c,0x2c,0xd6,0x76,0xc1,0x91,0x6b,0x34,0x59,0x1c,0xfd,},{0x7a,0x44,0xe6,0xa3,0x19,0x32,0xde,0xe6,0xdc,0x2d,0x83,0x94,0xe2,0x9a,0x65,0x51,0xd1,0x3e,0x6c,0x6f,0xfd,0xfa,0x21,0x8f,0xa5,0xb9,0x98,0x66,0x8d,0x84,0x39,0xdb,0x5e,0x05,0x37,0x9f,0xbf,0xa0,0xda,0x5b,0x56,0x3e,0xd9,0x66,0x43,0x5a,0xe2,0xc5,0x4e,0x3a,0xd1,0x6e,0x1a,0x9f,0xca,0x1f,0x5a,0x15,0x7a,0x08,0x07,0x04,0xab,0x03,},\"\\xcf\\x78\\x13\\xef\\xac\\x12\\xad\\x1c\\x7c\\x73\\x22\\xcc\\xbe\\x54\\xaa\\x0e\\x9a\\x8b\\xa4\\xfd\\x43\\x45\\xb0\\x6e\\x4c\\xe7\\xa3\\x5c\\x8b\\x1c\\xd5\\xe3\\xf7\\xf0\\x68\\x85\\x33\\x84\\x9b\\xa2\\xcf\\x4c\\x75\\xb6\\xf2\\x09\\x26\\xa1\\x19\\x4a\\x72\\xdf\\x0e\\x1b\\x1b\\x34\\x45\\x6a\\x21\\x33\\x11\\x2d\\x00\\x67\\x22\\xfe\\x81\\x1d\\x5e\\x40\\xc4\\x12\\x11\\x59\\xde\\xd8\\x89\\x90\\xc0\\xac\\x2b\\xfd\\x34\\xf3\\x5a\\xf4\\xf0\\x7c\\xc4\\x02\\xe9\\xa3\\x81\\xa6\\x75\\xd0\\x3f\\xec\\x7e\\xc4\\x38\\xc4\\xad\\x9d\\x92\\x9a\\xec\\x8f\\x24\\x2d\\xef\\x02\\x3c\\x99\\x3c\\x9e\\x8b\\xa1\\x8c\\x74\\x28\\xe8\\x8f\\xde\\x68\\xa4\\x71\\x1e\\x50\\x6d\\x79\\x69\\xf6\\x3c\\x8e\\x0b\\xc8\\x3f\\xf0\\xde\\x4e\\x13\\x36\\x10\\x6c\\x05\\xe0\\x9d\\x59\\x22\\x40\\x0e\\x8a\\x81\\xbf\\x54\\x88\\x56\\x67\\x89\\x97\\x85\\x88\\x2b\\x70\\xf2\\x0d\\xd8\\xfb\\x1e\\x75\\xf5\\x85\\x5b\\x76\\x5a\\x25\\x6d\\xa4\\x34\\x1b\\xf2\\x3e\\xa0\\xff\\xa1\\x8a\\xad\\xda\\x38\\x18\\x16\\x94\\x60\\x01\\x04\\x56\\x69\\xc8\\xd0\\x4d\\xf0\"},\n{{0xbe,0xa4,0x45,0xe9,0xb6,0xd3,0xf2,0x12,0x35,0x91,0x2c,0xd6,0xc4,0x2e,0xc0,0x57,0x72,0x97,0xca,0x20,0xa1,0x03,0x57,0x88,0x0c,0x2b,0x84,0x6d,0xd8,0xe2,0xcc,0x77,},{0x02,0x41,0x74,0x96,0x62,0x21,0x69,0x9e,0xa4,0xb0,0xa3,0x7e,0x51,0x7f,0xf9,0xb1,0x65,0x98,0xae,0x4d,0x4e,0x83,0xbf,0xa3,0xca,0x50,0xbc,0x61,0x68,0x41,0xf5,0x95,},{0x69,0x64,0xb9,0xc5,0x90,0x3e,0x74,0xe9,0x93,0x28,0xac,0xef,0x03,0x65,0x58,0xee,0xcd,0x33,0x69,0x15,0x0a,0x52,0xe2,0xcb,0xad,0x4b,0xbb,0x97,0xd4,0x61,0xb3,0xdf,0xc6,0xb3,0xe8,0x45,0x58,0x13,0xa4,0xf4,0xbd,0xca,0x46,0x30,0x2e,0x02,0xe6,0x83,0xec,0xea,0x18,0x20,0x17,0x1c,0x53,0x8e,0x54,0xc3,0xde,0x6c,0x95,0x4a,0xa4,0x07,},\"\\x47\\x43\\xc7\\xc0\\x99\\xab\\x81\\x59\\x27\\xb3\\x67\\x4d\\x00\\x54\\xb6\\xde\\x59\\xaf\\x28\\x11\\xab\\xc2\\xcf\\x7f\\xde\\x08\\xf6\\x29\\x29\\x18\\x5a\\xdc\\x23\\x8f\\xad\\xd5\\xe7\\x5a\\xe3\\xba\\x00\\x36\\xff\\x56\\x5a\\x79\\x40\\x5b\\x42\\x4f\\x65\\x52\\x33\\x1e\\x27\\x89\\xd9\\x70\\x9a\\xc1\\xec\\xbd\\x83\\x9a\\xa1\\xe9\\x1c\\x85\\x48\\x17\\x59\\x79\\x58\\xcc\\x4b\\xd9\\x1d\\x07\\x37\\x75\\x07\\xc2\\xc8\\xd3\\xc0\\x06\\xcf\\xeb\\x6c\\x0a\\x6c\\x5a\\x50\\xee\\xe1\\x15\\xe2\\x11\\x53\\xdd\\x19\\x8e\\xa0\\xa3\\xaf\\xf6\\x2b\\x70\\x75\\xd5\\xa4\\x61\\x78\\x87\\x83\\xf0\\x50\\xe6\\x59\\xc5\\x72\\x96\\x3d\\x7a\\x59\\xe5\\xaf\\xaa\\x2b\\x9c\\x50\\x1f\\x43\\xc6\\xac\\x08\\xab\\x47\\x97\\xc4\\x56\\x6d\\x22\\xb9\\x3c\\xdf\\x65\\xa9\\x9a\\x2a\\x1d\\x63\\x8e\\x79\\xf7\\x2b\\x5f\\x46\\x31\\xfe\\x5e\\x9e\\x5f\\x96\\x8f\\x6d\\xb7\\xa1\\x88\\x0d\\xf5\\x1d\\x8f\\xeb\\xc1\\x49\\x42\\x67\\x2f\\x8e\\xa6\\xfc\\x3a\\x72\\x81\\x4a\\x44\\xd6\\x6d\\x14\\x84\\x20\\xa6\\x90\\x00\\xf6\\x8c\\x33\\x0d\\xe5\\xb8\\x0f\\xc6\"},\n{{0x64,0x47,0x54,0x0e,0xd7,0xbe,0x0a,0x11,0xc2,0xa8,0xde,0x79,0x3d,0x83,0xc6,0xe2,0x44,0x98,0x3d,0xb1,0x8d,0x78,0xec,0x9d,0x75,0xf1,0x72,0x9c,0x92,0xe0,0xfd,0xf1,},{0x39,0x12,0x12,0xc8,0xed,0xc4,0xd3,0x34,0xa5,0xbe,0xc8,0x60,0xef,0x0f,0x5e,0xbb,0x5e,0xc4,0x4e,0x8b,0xb5,0x1c,0x0f,0x67,0x41,0x99,0x89,0x59,0xb2,0xb3,0x79,0xfc,},{0x3a,0xb5,0xf8,0x8e,0x2f,0x72,0x76,0xb5,0xb6,0x58,0x3d,0xff,0xba,0x56,0x39,0x99,0x3a,0x90,0x5d,0xbf,0x9b,0x88,0xce,0xea,0xaa,0xae,0x33,0x35,0x80,0x0e,0x4a,0x5f,0x10,0xf8,0x3d,0xa6,0xd6,0x22,0x5a,0x8d,0xbe,0x99,0xae,0x80,0x07,0x50,0x09,0xdd,0x50,0x87,0x86,0xb3,0x97,0x51,0x13,0xdb,0x47,0x8e,0x14,0xba,0x10,0x1b,0xee,0x0f,},\"\\xa4\\x38\\x1c\\x76\\x38\\xc4\\x87\\x99\\xe9\\xb5\\xc4\\x3f\\x67\\xfc\\x3a\\xa3\\xcb\\xb5\\xec\\x42\\x34\\xf3\\x7e\\x70\\xcc\\xcc\\xce\\xd1\\x62\\x7a\\x57\\x68\\x3d\\x1e\\x53\\xf4\\xe0\\x88\\x3d\\x8b\\x46\\x2b\\xf8\\x3f\\x13\\x08\\x63\\x03\\x68\\xc8\\x9b\\x49\\x15\\x33\\xdd\\xb8\\xc9\\xa5\\xb9\\xe8\\x15\\x50\\x02\\xfd\\xd5\\x81\\xa9\\xa5\\xbe\\x0e\\x43\\x0b\\x90\\x86\\xa6\\xbe\\xac\\x47\\x20\\x21\\x0f\\x87\\xb1\\x4e\\x86\\x2d\\x97\\xe5\\xcc\\x69\\x28\\x67\\x86\\xa7\\x58\\x67\\x23\\xf2\\x31\\xef\\x0e\\x3e\\x1b\\x93\\x2d\\xbb\\xa3\\xa1\\x8a\\x0c\\xb2\\x21\\xcb\\x07\\xf8\\x0e\\x6a\\x8e\\x13\\x00\\x05\\x6c\\x13\\xe7\\x02\\xb2\\x3b\\xfb\\x32\\x50\\xec\\x7c\\xc8\\x64\\xd5\\xc7\\xec\\x57\\x86\\x24\\x07\\x09\\xc5\\x60\\x24\\xea\\x6b\\xe5\\xf7\\xb1\\x5a\\x4f\\xa5\\x55\\x5e\\x39\\xa7\\x44\\xa1\\xdc\\x55\\x7d\\xf5\\xb9\\x48\\xdb\\x22\\x0b\\x3d\\x57\\x45\\x74\\x66\\x91\\xda\\xcb\\x44\\x21\\x64\\x1c\\xdc\\xc1\\x2e\\x7e\\xc0\\x45\\x02\\x93\\xf1\\x9e\\xc5\\x7b\\x09\\xcf\\xf1\\x35\\x84\\x7a\\xab\\xe4\\x46\\xa6\\x13\\x32\"},\n{{0x0c,0x58,0x7a,0x81,0x1a,0xdd,0x88,0xb9,0x94,0x45,0x8c,0x3c,0x80,0x8a,0xc4,0xe3,0xa8,0x3a,0xfa,0xb2,0x6d,0x4c,0xff,0x5c,0x96,0x1b,0x9d,0xf0,0xb5,0xc8,0x33,0x44,},{0x06,0x78,0x3b,0x0c,0xdc,0xc5,0x02,0x8c,0x56,0x38,0xbd,0x74,0x8f,0x0b,0xc7,0x6f,0x7e,0x94,0xd1,0xaa,0x20,0x15,0xca,0x94,0x87,0x38,0xa3,0x50,0x04,0x60,0xac,0xa0,},{0x33,0xb4,0xf4,0x27,0x4f,0x20,0x00,0x8a,0x72,0x1d,0x1e,0x8d,0x05,0x4a,0x2b,0x4e,0x95,0x32,0x7e,0x38,0xbb,0x07,0xb3,0x3c,0x4b,0xee,0x7e,0x1c,0xe0,0x20,0xa4,0x42,0xfb,0x26,0x27,0xed,0xa3,0xb7,0xac,0x93,0xcd,0x3a,0xb0,0xb1,0x2b,0x99,0x93,0x5a,0x1a,0x92,0x33,0x11,0x16,0x04,0xda,0x4a,0xcf,0xfb,0x53,0x15,0xb9,0x07,0x12,0x0b,},\"\\xf5\\x6d\\xc6\\xb7\\x60\\x76\\x32\\x5b\\x21\\x26\\xed\\x11\\xd1\\xf0\\x9d\\xec\\xef\\x9d\\x15\\xc3\\x1d\\x0e\\x90\\xcd\\xb1\\xa2\\x7e\\x08\\x9c\\xc5\\x63\\x29\\xf6\\xec\\x3f\\x66\\x5e\\xb6\\x73\\x9e\\xc5\\x67\\x8b\\x3f\\x37\\xee\\x1f\\xb3\\x7d\\xeb\\x9e\\x24\\x00\\x92\\xb7\\xa8\\x8f\\xd2\\x55\\x25\\xac\\xd5\\x5e\\x29\\x4e\\xb1\\x04\\x6f\\x9b\\x1b\\x69\\xa8\\x47\\xeb\\x9c\\xeb\\x7b\\x15\\x93\\xb9\\xf6\\x97\\x8e\\xf6\\x18\\xc1\\x5d\\xe4\\xe0\\x59\\xec\\xc3\\xbf\\xda\\x32\\x97\\xa1\\x9c\\x2d\\xf2\\x02\\xad\\xf7\\x21\\x55\\xcf\\x21\\xea\\xbd\\x03\\x94\\x8d\\xf1\\x51\\x98\\xe8\\xa6\\x8b\\x08\\x84\\xf9\\x3a\\xd5\\xe3\\x6e\\xb0\\x98\\x3c\\xca\\x30\\xe4\\x5a\\x8b\\x4b\\x5f\\xb8\\x13\\x6f\\xde\\xa8\\xa3\\x34\\x1d\\xd7\\x87\\x75\\x40\\xa5\\x57\\xde\\xbf\\x75\\x30\\xcc\\x33\\xae\\xee\\xf6\\x27\\x1c\\x3f\\x0a\\xf6\\xd0\\x97\\x87\\xe8\\x15\\xf2\\xf1\\xdd\\x25\\xce\\x4d\\x2f\\xd0\\x9f\\xfa\\x9f\\x53\\x08\\x1b\\x46\\x9c\\x50\\x0d\\xa4\\xd4\\x41\\x80\\xc0\\x4e\\xb1\\x86\\x93\\x29\\xcb\\xf2\\xd8\\x23\\x18\\x7e\\x83\\x1c\\x24\"},\n{{0x66,0xcf,0x40,0x1a,0x21,0x42,0xfc,0xf4,0xa8,0x01,0x80,0x46,0xcf,0x41,0x40,0xbc,0xa1,0x8d,0x76,0xef,0x62,0x66,0xe7,0xa0,0x24,0x75,0x7d,0xf1,0x72,0xa5,0xd6,0x53,},{0x67,0xd4,0x8d,0xfd,0x23,0x74,0x3c,0xc2,0xca,0x40,0xe4,0xdf,0xd6,0xb8,0xcc,0x5d,0x84,0xbe,0x82,0xdd,0x2b,0x11,0x20,0xcc,0x47,0x6e,0x6a,0xf6,0xf2,0x5e,0xcc,0x98,},{0xd6,0xb0,0xe8,0x0e,0x60,0xbc,0x1b,0x29,0xab,0x8f,0x74,0x80,0x8f,0xc4,0x60,0x84,0x77,0x95,0xcc,0xb8,0x87,0xba,0xc0,0xec,0xaa,0x8e,0x13,0x52,0x97,0xa8,0x50,0x97,0x71,0x2b,0x24,0xb0,0xa1,0xfb,0xaf,0x7a,0x67,0xc5,0xd5,0x30,0xa4,0x7d,0x06,0x43,0xfc,0x87,0x02,0xc0,0x59,0xd2,0x15,0xfb,0x11,0x2d,0xbe,0x47,0x5e,0x5b,0xca,0x0d,},\"\\xda\\xa8\\xef\\xb3\\xfd\\x41\\xf1\\x2f\\xbc\\x55\\xbd\\x60\\x46\\x41\\x57\\xa2\\x6d\\x71\\x86\\x32\\xd8\\x82\\xae\\xdb\\x6b\\xf9\\x8e\\x47\\xdd\\x23\\x37\\x87\\x9e\\x0b\\x46\\x45\\x2e\\x06\\x2e\\x6d\\xfb\\xff\\x3e\\x7b\\xca\\x72\\x89\\xe4\\xef\\x6b\\x3f\\x41\\xd4\\xb0\\x3b\\xdc\\x2c\\x84\\x2a\\xfe\\x97\\xf3\\x02\\x98\\x83\\xed\\x45\\xf6\\x05\\x4d\\xde\\x96\\x90\\x64\\x9a\\xbb\\x2b\\x8d\\xc2\\x8f\\x5f\\xe8\\xce\\xcf\\x80\\xfc\\x1e\\xa4\\x11\\xbf\\xc4\\x0b\\xbf\\x4f\\xd2\\x0b\\x21\\x8c\\xf4\\x7e\\xa8\\xee\\x11\\x8d\\x4d\\x5a\\xef\\xa5\\xc1\\xbf\\xa0\\x8a\\x8f\\xb1\\xb3\\x0d\\x6d\\xe0\\x97\\x7c\\xd1\\x5e\\x50\\x29\\x2c\\x50\\x1f\\x2e\\x71\\xce\\x27\\x40\\xff\\x82\\x8b\\x84\\x32\\xda\\x5a\\x59\\x4b\\xab\\x52\\x23\\x76\\x0b\\x64\\x79\\x2e\\xd3\\xa6\\x9d\\xd7\\x5e\\x28\\x29\\x23\\x49\\x43\\x65\\x65\\x13\\xdf\\x1a\\x17\\xa2\\xa0\\x67\\xa9\\xa8\\xea\\xa6\\x4e\\x19\\x56\\x9f\\x46\\x93\\x9d\\x34\\xb9\\x92\\x71\\xae\\x50\\xa4\\x7d\\x7d\\xbc\\xa3\\x62\\x0c\\x81\\x25\\x5b\\x0e\\x1f\\xd1\\xf3\\xce\\xc8\\x51\\xf1\\xb1\\x1b\\x35\"},\n{{0x5d,0xbf,0x88,0x5a,0xa5,0x98,0xe8,0x95,0x57,0x1f,0x5f,0x65,0x09,0x0b,0x72,0x32,0x3e,0x9d,0x70,0xb0,0xf5,0x81,0x10,0x68,0x7a,0xfb,0xbc,0x38,0x3a,0xfe,0xdc,0xac,},{0xfa,0x17,0xeb,0xa7,0x6e,0x3b,0xc3,0xea,0x6d,0xab,0x3a,0x5b,0x12,0x0d,0xc5,0xec,0xb9,0xae,0x6f,0x00,0x13,0x8f,0x7d,0x36,0xdd,0xa9,0x26,0x8b,0xc4,0x72,0x21,0x74,},{0xe1,0x42,0x9d,0xab,0x2e,0x42,0xcd,0x03,0x5b,0x7f,0xc6,0x02,0xef,0xd6,0xba,0xf9,0x47,0x06,0xf1,0x6e,0xaf,0x2f,0x8b,0x5f,0xed,0x32,0x92,0x39,0xe8,0x75,0x60,0x5f,0xb1,0x72,0xf5,0xdd,0x9a,0xe2,0xbc,0x2e,0xb4,0x2e,0xb4,0x74,0x56,0x7e,0x29,0x2f,0x52,0x06,0xe8,0x2e,0x69,0x4b,0xca,0x0d,0x6d,0x43,0x3b,0x86,0x76,0x34,0xcb,0x0d,},\"\\x1e\\x0b\\x6c\\xf1\\x5c\\xe0\\x33\\x37\\x17\\x9c\\x02\\xd6\\x54\\x08\\xdf\\x5b\\xe9\\x20\\x0c\\x37\\x82\\xb6\\x00\\x4a\\xf9\\x4e\\xa4\\xde\\xcb\\x25\\x79\\x99\\xd6\\xfd\\xff\\x30\\x1d\\x11\\xd0\\x0c\\x98\\xc3\\x72\\xfa\\xc0\\xd0\\x26\\xcb\\x56\\xdf\\xef\\xe3\\xde\\xf7\\xeb\\x99\\xac\\x68\\xd6\\x96\\x8e\\x17\\x12\\x4d\\x84\\x46\\xf5\\x3e\\x8d\\x2d\\x3d\\xd8\\x90\\xd3\\x7a\\x23\\xc7\\xe0\\xb8\\x3a\\x48\\x4b\\x3c\\x93\\xbd\\xdf\\x6c\\x11\\x8e\\x02\\x81\\x95\\x9d\\x27\\xbd\\x87\\xd3\\x7e\\x84\\x3d\\x57\\x85\\xf4\\xa4\\x07\\x71\\x39\\x84\\x94\\xe6\\xc4\\x32\\x2f\\xbb\\x67\\x5c\\x1d\\x47\\x93\\x21\\x03\\x21\\x48\\xf7\\xfe\\x52\\x56\\x4d\\xdf\\x7a\\xe7\\xac\\x26\\x9d\\x0c\\xd2\\xe5\\x52\\xfe\\xc5\\x89\\xae\\xae\\x0f\\xb9\\x3f\\xe3\\xee\\xae\\xf0\\x85\\x60\\x96\\xcf\\x4f\\x6b\\x34\\x97\\xe7\\x23\\x5c\\xc8\\x49\\x4d\\x81\\x0a\\x0b\\x46\\xc5\\xea\\xc8\\x7f\\x18\\x7e\\x50\\x5b\\xb7\\x76\\x4f\\x80\\x45\\xc9\\x54\\x19\\x83\\xf7\\xb0\\x25\\x69\\x80\\x09\\xa2\\x3d\\x9d\\xf0\\xbd\\x1a\\x47\\x3c\\xbe\\xe4\\xcf\\x5e\\x94\\x88\\xec\\xbc\"},\n{{0x84,0xb3,0xae,0xdd,0x47,0x97,0xa5,0x65,0xc3,0x51,0xde,0x7d,0xfa,0x07,0x00,0xb9,0xff,0x7c,0x4d,0x72,0x91,0xc8,0x80,0x8d,0x8a,0x8a,0xe5,0x05,0xcd,0xd2,0x25,0x90,},{0xd7,0xad,0x72,0xca,0xa7,0xc2,0x22,0x09,0xec,0x46,0x78,0xd1,0x1d,0x55,0x90,0xa6,0xcb,0x28,0xa0,0x71,0x17,0xfe,0x5a,0xef,0x57,0xb5,0x07,0x51,0x58,0x32,0x01,0xa5,},{0x92,0x20,0xf0,0xed,0xaa,0xae,0xe1,0xb8,0x76,0x35,0x0d,0xbe,0x92,0x66,0x06,0x17,0x67,0xb8,0x62,0x96,0xc3,0x51,0xd4,0xca,0xc9,0x9d,0x07,0xcd,0x61,0x2c,0x6e,0xfb,0x24,0xf8,0xf9,0xb0,0xb9,0x75,0xf9,0x5c,0x42,0xc5,0xb6,0xaf,0xed,0xc8,0x92,0xf8,0x7e,0xfe,0xdd,0x39,0xd5,0x16,0x02,0x94,0xc2,0x76,0x58,0xbd,0xcf,0x42,0x85,0x0b,},\"\\x53\\x25\\x67\\xff\\xa5\\x3b\\x5c\\x0f\\xcd\\x29\\xc3\\x94\\x99\\xd2\\xe7\\x8e\\xcd\\x20\\xe6\\x31\\x23\\x49\\x92\\x40\\xe7\\x75\\x08\\x8b\\x39\\x4d\\xc6\\x5c\\x8b\\xaa\\xa0\\xfe\\x8f\\x6a\\xa7\\xe7\\x01\\x81\\xf9\\xe1\\x0a\\xdd\\x8b\\x4a\\x8b\\xeb\\x0b\\x2e\\xc3\\x8a\\x43\\x30\\x9f\\x10\\x0c\\xd4\\xbe\\x91\\xc6\\xf4\\x8e\\x79\\xdc\\x0a\\xee\\x93\\xa1\\x5c\\x94\\x03\\x77\\x3b\\x35\\x4a\\x8d\\x42\\xed\\x48\\xd8\\xf2\\x76\\x23\\x0f\\xa6\\xde\\x5a\\xda\\x50\\x1e\\xe0\\xa6\\x53\\xb4\\x45\\x8f\\x0e\\xcf\\x6d\\x5b\\x3c\\x33\\xe2\\x14\\x1c\\x66\\x2f\\x6e\\xa0\\x55\\xf7\\x41\\xe5\\x45\\x86\\x91\\x7d\\x2e\\x0c\\x4e\\xb2\\xb5\\x66\\x21\\xf9\\x66\\x5f\\xef\\x32\\x46\\xf0\\xbd\\x80\\x0b\\x53\\x3e\\x3b\\xc6\\x15\\xc4\\x02\\x1f\\x8d\\x0e\\x2a\\xd2\\x33\\xa1\\x1e\\x77\\x36\\xc4\\x93\\xac\\xc3\\x1f\\xae\\xe7\\x6a\\x09\\x7d\\xc4\\x0d\\xb9\\xef\\xc2\\x24\\x46\\xea\\xcf\\x1c\\xc1\\x8f\\x51\\xfd\\x10\\x23\\x6a\\x2f\\x94\\x2d\\x0a\\x53\\xc3\\xce\\x20\\x91\\x08\\xb5\\x93\\x8c\\x0a\\x9e\\x53\\x6b\\x89\\xef\\x0a\\xd6\\xb4\\x05\\xa1\\x0f\\x22\\xc3\"},\n{{0x69,0x50,0xbf,0xcf,0x48,0x0b,0x98,0xea,0x18,0xa2,0xd5,0xae,0x5b,0xa6,0xe7,0x66,0x8f,0x4c,0x28,0x3f,0xf2,0x71,0x13,0x57,0x74,0x0f,0xfe,0x32,0xcf,0x25,0x81,0x9a,},{0x8e,0x4c,0x6f,0x23,0x3f,0x7b,0x86,0x32,0x1c,0x9d,0x67,0x99,0xba,0xc2,0x8a,0xaf,0xcd,0x25,0x03,0xd7,0xaa,0x0a,0x7b,0xde,0xd8,0x72,0x27,0x27,0xfb,0xbc,0xae,0xb8,},{0x94,0xde,0x5d,0xf7,0xa2,0x5e,0xcd,0x70,0x20,0x5d,0x40,0xbc,0x94,0x99,0xfc,0x7c,0xd7,0x13,0x65,0x68,0x06,0x0a,0x41,0x9a,0x93,0xbe,0x6e,0x31,0x86,0x64,0xbb,0x6d,0xfc,0xe6,0x0e,0x2d,0x4e,0x63,0x3f,0x7e,0xc1,0x48,0xfe,0x4f,0x83,0x4e,0xd2,0x77,0xc1,0xfe,0xc4,0xc4,0xe2,0xa8,0x6f,0x44,0xc4,0x58,0x9c,0x81,0x78,0x88,0xdb,0x00,},\"\\xa4\\x01\\xb9\\x22\\xab\\xa5\\x7e\\xe0\\xc6\\xac\\x1c\\x8f\\x1b\\x48\\x29\\x6a\\x85\\x62\\xee\\xf1\\x37\\x52\\x68\\x93\\x88\\x6a\\x08\\x30\\x6e\\x22\\x03\\x66\\x77\\x88\\x61\\x8b\\x93\\x98\\x64\\x46\\x7a\\x31\\xf1\\x6e\\xdc\\xe1\\x52\\xa4\\x2c\\x25\\x54\\x6b\\x64\\x0e\\xa8\\xbe\\xd1\\x89\\xa4\\xf8\\x98\\x86\\xa3\\x7f\\x10\\x69\\x11\\xea\\xe1\\xf5\\x00\\x81\\xbf\\x79\\x5e\\x70\\xc6\\x50\\x44\\x37\\xd2\\xa8\\x0c\\xb8\\x39\\x47\\x9e\\xcb\\xb8\\x7c\\x12\\x9b\\xcc\\x5f\\xe3\\x1d\\x71\\x6e\\xf9\\x78\\xc2\\x06\\xd7\\xf0\\x8a\\x79\\x34\\x66\\x59\\x4f\\x4d\\x75\\xe2\\x15\\xbb\\x63\\x74\\x59\\x6f\\x8e\\x7d\\x00\\xee\\xa7\\x24\\x78\\x09\\x43\\xe8\\x9b\\xd3\\x86\\x3c\\x95\\x1b\\xbd\\x24\\xef\\xee\\x23\\xc9\\x7c\\x2c\\x79\\x7c\\x7f\\xaf\\xbf\\x8f\\x2c\\x8b\\x43\\xf3\\x7a\\x5f\\x88\\x11\\x29\\xa0\\x95\\x73\\xfa\\x7a\\x03\\x4a\\x28\\x5e\\x80\\xdc\\x4b\\xa4\\xbc\\x95\\x64\\xa4\\xdc\\xed\\xeb\\x33\\x16\\x7e\\x0b\\x30\\xc5\\xa0\\x0b\\x9a\\x10\\x9a\\x22\\x31\\xcf\\xa0\\x01\\x2b\\x29\\xb2\\xb3\\x45\\x0b\\x89\\x2e\\xcc\\xef\\x08\\x08\\xe5\\x03\\xf8\"},\n{{0x61,0xb2,0x60,0xf5,0xb8,0x48,0xb2,0x71,0xef,0x48,0xe5,0xa5,0x6d,0x29,0x74,0x32,0xd8,0x9f,0x2a,0xb8,0x5b,0xd5,0x38,0xfa,0x66,0x88,0x70,0xd0,0x56,0x02,0x20,0xe5,},{0x60,0x86,0xfe,0x87,0x35,0xf3,0x99,0xf1,0xaf,0x2e,0x39,0x5e,0x0f,0xdf,0xb5,0x62,0x9e,0xbc,0xb0,0x4b,0x6e,0xd4,0xa5,0x4a,0x9e,0x47,0x05,0x2c,0x6e,0x81,0x91,0xd4,},{0x98,0x28,0xfe,0xc8,0xff,0x5c,0xf8,0x5a,0x98,0xf4,0x50,0x77,0x0b,0x5b,0xdb,0x4b,0x80,0xda,0xca,0x44,0x37,0x9d,0x8f,0x53,0xc9,0x1c,0x34,0x8e,0x22,0xdf,0x64,0xac,0x48,0xf2,0xb6,0xe2,0xa7,0xb3,0xb6,0x42,0xbc,0x81,0x93,0xa1,0x94,0x31,0x62,0x29,0xe6,0x94,0x47,0xed,0x24,0x1c,0xd4,0x23,0xd8,0x3b,0x6f,0xe7,0xb2,0xd4,0x4b,0x00,},\"\\x28\\x26\\x29\\x5d\\x79\\x94\\x5f\\x67\\x54\\x76\\xbc\\x4d\\x45\\xef\\x80\\x0d\\x80\\xb1\\xf0\\x39\\x8e\\x4b\\xe6\\x0e\\x3d\\xe4\\x57\\x1e\\xd1\\x08\\xdf\\x98\\x9f\\x03\\x2d\\xe6\\xc2\\x34\\x5d\\x99\\x48\\xd6\\x77\\x92\\x7e\\xa0\\xb8\\xcf\\x1a\\x5c\\xa3\\x6f\\xd5\\xf2\\x3c\\x25\\xdc\\x0d\\x2a\\xb5\\xbd\\x56\\x5a\\x54\\xaf\\x46\\xfd\\x97\\xd3\\x38\\xd7\\x70\\xe3\\xa7\\xb4\\x7e\\xfb\\x54\\xc0\\x7a\\x16\\x64\\x70\\x77\\x71\\xeb\\x4e\\x37\\xd9\\xd7\\x0b\\xa7\\x79\\x25\\x1d\\xcd\\xcd\\x3b\\xf6\\xd1\\x24\\x8a\\xde\\xc5\\x3f\\x78\\x72\\x59\\xc4\\xd5\\x94\\xd5\\xfd\\x4c\\xed\\x8e\\x3d\\xb7\\x62\\x1d\\x49\\x65\\xd4\\x82\\x98\\x17\\x81\\x24\\x93\\x1a\\x3d\\x0c\\xd2\\x69\\xb2\\xd5\\x3b\\x7c\\xd2\\x61\\xb9\\x6d\\x37\\x0c\\x5d\\x96\\x93\\xc8\\xad\\x13\\x3e\\xd5\\x89\\x45\\xee\\x35\\x40\\xe1\\x06\\x25\\xd9\\x24\\xae\\xba\\x9b\\xda\\xfc\\x65\\x61\\x00\\xaa\\xb2\\x76\\xfa\\x99\\x6b\\x1d\\xb4\\x77\\xbf\\x85\\xea\\x55\\x90\\x81\\xd5\\xb4\\xc7\\x30\\x7d\\xc1\\x59\\x56\\x54\\xac\\xa8\\x2f\\x7b\\x6d\\x2d\\xda\\xf7\\x35\\x7c\\x15\\xa4\\xd7\\xd8\\xb9\\x08\"},\n{{0x93,0x6d,0xc1,0xce,0xf6,0xa3,0x10,0x74,0x7f,0x35,0x00,0x88,0x05,0x5a,0x39,0xaa,0x76,0x2d,0x9a,0x4b,0x52,0xc8,0xc8,0xe4,0xc6,0x82,0x79,0x43,0x80,0xc2,0x72,0x5c,},{0x03,0xb3,0x18,0x00,0x41,0x2d,0xf4,0xd5,0x6f,0x15,0x32,0xc0,0x58,0x28,0xc0,0xb7,0x25,0x28,0xa6,0x7a,0x78,0x1b,0xef,0x4c,0x06,0xc1,0xfb,0x6f,0xf2,0xce,0x32,0x4b,},{0x3f,0x99,0x4b,0x8e,0xf5,0x28,0xf6,0x42,0x1c,0x6a,0x6a,0x22,0xe9,0x77,0xad,0xe5,0xce,0xe8,0x87,0x26,0x3d,0xe3,0x8b,0x71,0x9a,0xcd,0x12,0xd4,0x69,0xbf,0xd8,0xc3,0xf6,0x8e,0x7a,0xc0,0x7d,0x2f,0xae,0x80,0xa2,0x09,0x27,0x78,0xdf,0x0b,0x46,0x35,0x37,0xad,0x3a,0x05,0x51,0x99,0x7a,0x3d,0x5b,0x51,0xf8,0x32,0xd9,0xc8,0x23,0x0b,},\"\\xeb\\x58\\xfe\\x86\\xc4\\xef\\x34\\x9c\\x29\\xae\\x6f\\xb0\\x4f\\x10\\x85\\x0e\\x38\\xc6\\x82\\x3d\\xbe\\x64\\xa0\\x9a\\x5b\\xf1\\xe0\\xce\\x60\\x0d\\x39\\x4e\\xfa\\x6f\\xb9\\x6e\\xd6\\xa8\\xf2\\xc9\\xd4\\xbe\\xc0\\x5e\\x6a\\x5e\\xbd\\x5a\\x1b\\xf4\\xd0\\xc5\\x1d\\xb9\\x34\\xe5\\x7b\\x79\\xe5\\xc6\\xa8\\x79\\xd9\\x75\\x19\\x7d\\xbb\\x10\\x47\\x5f\\x65\\xc7\\xf8\\xa8\\xc6\\xa7\\x7a\\x42\\x03\\x84\\xb5\\x06\\x2a\\x27\\x40\\xf1\\x40\\x17\\x40\\xee\\x0f\\x5e\\x04\\x3a\\xad\\x7a\\x2a\\x2b\\x42\\x60\\xc5\\xd9\\x07\\xf7\\x05\\xed\\xaf\\x65\\xb0\\xe3\\x75\\xdf\\xc7\\xb0\\x0b\\xd6\\x60\\xdb\\x61\\x47\\xf2\\xeb\\xe8\\x70\\xa0\\xee\\x18\\xdc\\x2b\\xa3\\xc9\\x2b\\x0b\\x76\\xfa\\xe2\\xb9\\x09\\x32\\xcd\\xb6\\xc1\\x49\\xe4\\x6f\\x3f\\xee\\xcf\\x4c\\x26\\xf0\\x44\\x1f\\x3a\\x9e\\x00\\x66\\x78\\xae\\xcf\\xf8\\xcc\\xae\\xca\\xed\\xa7\\x3a\\x18\\xa6\\x8a\\xc9\\x88\\xb6\\x2e\\x83\\xa9\\xbb\\x51\\x88\\xae\\xde\\x38\\xdf\\x77\\xa9\\xa1\\x64\\xab\\xbd\\xd9\\xd5\\x8e\\x52\\xa6\\xca\\xf7\\x22\\x23\\x89\\xf1\\x98\\xe8\\x5f\\xbf\\x96\\x62\\x36\\xdc\\xdb\\xd4\\xc1\"},\n{{0xf8,0x9e,0xed,0x09,0xde,0xc5,0x51,0x36,0x1f,0xa4,0x6f,0x37,0x59,0x73,0xd4,0xfb,0xfa,0x5c,0x5c,0x12,0xf1,0xb5,0xe5,0xab,0xf4,0x5c,0xfa,0x05,0xff,0x31,0xa3,0x40,},{0x3e,0x0e,0xfd,0xca,0x39,0x19,0xfa,0x10,0xd4,0xa8,0x49,0xce,0xf1,0xde,0x42,0x88,0x51,0xbd,0x08,0xef,0xd2,0x48,0x59,0x4f,0xd8,0x9c,0xde,0xb9,0xde,0xee,0x43,0xb0,},{0x89,0x7e,0x6f,0x27,0x97,0xc3,0xf3,0x26,0xd2,0xcd,0xb1,0xd2,0x67,0x3d,0x36,0x06,0x31,0xf0,0x63,0x30,0x45,0x80,0xff,0x5b,0x4e,0xb4,0x3d,0x39,0xad,0x68,0x51,0x83,0x4c,0x9c,0xf8,0x91,0xd9,0xf0,0x90,0x5b,0xf8,0xde,0x07,0x5f,0x76,0x35,0xdf,0xca,0x60,0x1a,0xdc,0x0f,0x14,0xe7,0xb2,0xc7,0x6f,0x75,0x71,0xbf,0xa4,0x68,0xed,0x0c,},\"\\x4c\\xf9\\x77\\x3d\\xa0\\x5f\\xd3\\x22\\xfc\\x14\\x7b\\xe9\\x00\\xef\\x5c\\xf2\\x56\\xc8\\x8a\\xfd\\xad\\x4b\\x08\\xc2\\x30\\xdf\\xc8\\x98\\x1f\\xb6\\x9f\\x47\\x6f\\x7d\\x45\\xef\\x7c\\x90\\x06\\xbc\\x10\\x03\\x2b\\xa5\\x34\\x36\\xac\\x22\\x84\\x3e\\x0d\\x76\\x28\\x9c\\xf6\\x8f\\x98\\x18\\xfa\\x64\\x03\\x1d\\x4b\\x40\\x95\\x50\\x59\\xaa\\x69\\x11\\x09\\x15\\x88\\x9f\\x5e\\x22\\x73\\x2a\\x13\\x43\\x91\\x25\\x81\\xab\\x3b\\x11\\xa3\\xba\\xe7\\xa4\\x71\\x35\\x95\\x08\\x59\\x65\\x75\\xf8\\x88\\x16\\x0b\\xee\\xf9\\x66\\xe5\\x70\\x8f\\x0e\\x31\\x47\\xea\\xcf\\xce\\xc1\\xca\\xa3\\xef\\x24\\x0c\\x5e\\x0a\\x14\\xc1\\x86\\x54\\x6c\\x8e\\xeb\\x64\\x65\\x83\\x50\\xb1\\xaf\\xfc\\x0c\\xfd\\x2a\\xc2\\x13\\xaf\\x67\\x0a\\xfc\\xa7\\xbb\\xc9\\xdd\\xdd\\x28\\xa4\\x65\\xb5\\x86\\xe6\\x9c\\x38\\x8c\\xd7\\x34\\x78\\xd6\\x8e\\xfb\\x32\\x2b\\xdf\\x86\\xd9\\x21\\x30\\x11\\xe7\\x11\\xb2\\xb9\\x5f\\xef\\xa7\\xbb\\x9b\\x59\\x39\\x76\\x17\\x06\\xaa\\x71\\x21\\x02\\x49\\x06\\x42\\x0b\\xdd\\xf1\\xd8\\x80\\x0a\\x43\\x38\\xd9\\x38\\xfa\\x13\\x7c\\xf2\\x7e\\x9f\\xfc\\x51\\xc6\"},\n{{0x40,0x07,0x96,0xef,0x60,0xc5,0xcf,0x40,0x84,0xde,0xe1,0x80,0x1c,0x4a,0x19,0x75,0xe4,0x82,0xe7,0x0a,0xef,0x96,0x1c,0xd4,0x2e,0x2f,0xd5,0xa3,0xfa,0x1a,0x0f,0xbe,},{0xf4,0x7d,0xa3,0x81,0x28,0xf2,0xd0,0x12,0xcc,0x57,0x97,0x57,0x1d,0x47,0x9c,0x83,0xe7,0xd8,0xa3,0x40,0x98,0x02,0xf9,0xa7,0xd9,0x76,0xc2,0x70,0x67,0xcb,0xbe,0x43,},{0x84,0xd3,0xaa,0x3f,0x36,0x18,0x44,0x39,0x67,0x54,0xd8,0x0d,0x9f,0xa0,0x5b,0x8b,0x2f,0xa4,0xab,0xf3,0xa0,0xf3,0x6b,0x63,0x9b,0xee,0x9c,0xfb,0x5c,0x85,0x30,0xa3,0xa9,0xcc,0x34,0x67,0x7f,0x92,0xa9,0x13,0xc4,0x1e,0x80,0x0f,0x2e,0x80,0x41,0xf7,0x66,0x6d,0x07,0xed,0x85,0xf1,0x6a,0x57,0xd8,0x17,0xb1,0x24,0x1f,0xc5,0xee,0x04,},\"\\xc4\\x73\\x32\\x5e\\x78\\x5b\\x27\\xdf\\x44\\x71\\xee\\xfb\\x9e\\xbe\\xbd\\x64\\x61\\xd5\\x70\\x80\\x01\\x81\\x10\\x0f\\xf3\\x6c\\xaf\\x3c\\x38\\xf6\\x7c\\x19\\x21\\xb1\\x57\\xec\\x8e\\x61\\x26\\xf9\\x55\\xae\\xbd\\x90\\xea\\x3f\\xe5\\x38\\x5f\\x80\\x42\\xcd\\x70\\x4b\\x27\\xcc\\x1d\\x69\\x78\\xc0\\xe2\\xa2\\x96\\x69\\x5f\\x5e\\xf9\\x7b\\x7c\\x2e\\x16\\xae\\x4f\\xf4\\xd0\\x63\\xc6\\x88\\xd7\\xf4\\x6e\\x96\\x4e\\x1f\\x0a\\x00\\x50\\x3f\\x35\\x73\\x45\\x97\\x76\\x83\\xd6\\xe4\\xc3\\x42\\x3d\\x56\\xbd\\xb6\\xce\\x86\\x4b\\x69\\x87\\xe0\\x85\\xe8\\x3e\\x70\\xc7\\xc1\\xa1\\x4e\\x0e\\x41\\x3f\\x59\\x2a\\x72\\xa7\\x1e\\x01\\x7d\\x50\\x5b\\x64\\xc2\\x4f\\x1a\\x1a\\x6b\\x81\\x3e\\x06\\x4e\\x6e\\x0c\\xf8\\xbd\\x45\\x71\\xd0\\xff\\x2f\\x26\\x7a\\x6a\\x13\\xe0\\xcd\\x43\\x04\\x63\\xb6\\xca\\x3b\\x88\\xf0\\xcd\\x40\\xb0\\xfb\\x83\\xd5\\xbe\\xdf\\x6f\\x7d\\x47\\xe1\\x70\\xe8\\x7d\\x0a\\x75\\x00\\x93\\x69\\x3e\\xda\\x23\\x2a\\x6d\\xaf\\x98\\x12\\x57\\x27\\xb9\\x58\\x8e\\xcb\\x89\\x4a\\xe3\\x73\\xba\\xe3\\xa4\\x45\\xa1\\x06\\x30\\x64\\x69\\xa4\\xc2\\xcd\\x77\\xff\"},\n{{0x67,0x03,0xa6,0x23,0x2c,0x5e,0x2e,0x65,0xe0,0xab,0x3b,0x92,0xe2,0xaa,0xf9,0xf5,0xfb,0xd3,0x3f,0xb4,0x69,0x88,0x04,0x7d,0x6f,0x4d,0x0f,0xf5,0x38,0x7f,0xa0,0x29,},{0x04,0x7c,0xff,0xca,0x8b,0x7b,0x11,0xac,0x6e,0xac,0xc0,0xea,0xa0,0xc5,0xb7,0x3c,0x75,0xb9,0xc6,0x37,0x95,0x69,0x73,0xaf,0x9d,0x97,0xb2,0xdd,0x5b,0x60,0x5d,0x6f,},{0xca,0xe9,0x68,0x79,0xe5,0xb6,0x03,0xbe,0x86,0x66,0x09,0xd4,0xa0,0x53,0xbf,0xa1,0x2a,0x51,0x37,0x8e,0x99,0xb2,0xa2,0x81,0x2e,0x47,0x89,0x26,0x7d,0x8f,0x32,0xf4,0x73,0x24,0x3f,0x8a,0xf7,0x4b,0x9b,0xe7,0x3f,0x47,0xde,0xa5,0x0f,0x0d,0x16,0x5e,0xbf,0x49,0x45,0x8b,0x73,0xe5,0x3d,0x88,0x58,0x0c,0x19,0x1a,0x18,0x2d,0x19,0x04,},\"\\xa2\\x6b\\x30\\xa7\\x69\\x19\\x79\\x32\\xa3\\xa6\\x28\\x54\\x96\\x8d\\x76\\x01\\x51\\x61\\x23\\x66\\x77\\x8d\\xc9\\x94\\x57\\x6a\\x2e\\x0e\\x03\\x55\\x49\\x6b\\x46\\x20\\x0e\\x50\\x69\\x48\\xa0\\xd1\\x02\\xb6\\x65\\x1b\\x2e\\x73\\x34\\xca\\x6c\\x6e\\xae\\xf8\\xbc\\xa4\\x4b\\x42\\x59\\x70\\xa0\\xb3\\x7d\\x6b\\xde\\x0d\\xa9\\xd3\\xc1\\xb9\\xf5\\x1c\\xbb\\x25\\xbc\\x33\\x5c\\xd6\\xfa\\x92\\x8a\\x74\\xf2\\xc0\\xdc\\x2c\\x6e\\x99\\xd3\\x7a\\x12\\x86\\x3a\\x47\\x4d\\x4d\\xf4\\x3a\\xad\\x35\\x41\\x5f\\xfc\\xaa\\x24\\xd8\\xc2\\x9f\\x91\\x45\\x72\\xab\\x2a\\xbe\\xc3\\x89\\x2d\\xb4\\x9e\\x67\\x9c\\x5e\\xa2\\x20\\xc2\\xf5\\x19\\xa7\\xd0\\x33\\xac\\x1a\\x2c\\x5a\\x46\\x78\\x69\\xe3\\x0e\\xda\\x3d\\x26\\x35\\xca\\x86\\x34\\x31\\x47\\x3f\\x95\\x8d\\x55\\x2b\\xdc\\x55\\x82\\x35\\x2c\\x29\\x0d\\x0c\\xe4\\xfa\\x9c\\xfd\\x0a\\xd4\\x27\\x99\\xc2\\x27\\xec\\x90\\xb7\\xc9\\xe5\\xdb\\x9f\\x5a\\x7b\\x6d\\x56\\x92\\x12\\xee\\xd9\\x4d\\x32\\x33\\x26\\x80\\x5f\\x2b\\x3a\\x00\\x10\\xd6\\xc1\\x1e\\xb4\\x10\\x7c\\x82\\x83\\x03\\x76\\x52\\xf5\\x0d\\xc0\\x67\\xb6\\xdc\\x81\\xf4\\xdb\"},\n{{0xe0,0xe7,0x2f,0x8f,0x17,0x86,0x33,0x62,0x67,0x33,0xbc,0xbd,0xa2,0xad,0x2a,0x50,0xe6,0x53,0x89,0x0f,0x15,0x35,0x9b,0x6c,0x22,0xfc,0x73,0x45,0xad,0x33,0x31,0x09,},{0xd1,0x3c,0xee,0x54,0x0d,0x84,0xb5,0x66,0x7d,0x51,0x6f,0xe7,0xec,0x72,0x39,0xbf,0x8d,0xa9,0x15,0x46,0xee,0x79,0x1f,0x84,0xed,0xd8,0xff,0xcf,0x3a,0x08,0x3e,0x76,},{0x14,0x55,0x21,0x71,0xb9,0x52,0x45,0xac,0x0f,0x0e,0x5a,0x6e,0x7a,0x2f,0x54,0x17,0x21,0x06,0x8d,0xb6,0x50,0xc6,0xda,0xda,0x04,0xc2,0x8c,0xab,0x7c,0x49,0x19,0x5f,0x64,0x36,0x71,0x21,0x44,0xcb,0x31,0x91,0x3c,0x56,0x2e,0x30,0xc3,0x9d,0x8a,0x85,0x49,0xfb,0x64,0xff,0xea,0x81,0xc7,0x44,0x51,0x43,0xb5,0xf2,0x32,0x86,0xda,0x05,},\"\\x79\\x1f\\xd6\\x13\\xc1\\x09\\x52\\x92\\xc8\\xa4\\xa2\\xc8\\x6b\\x47\\xae\\x02\\x61\\x55\\xb8\\x46\\x5b\\x60\\x7d\\xbb\\x41\\x64\\x77\\xef\\x79\\xa2\\x97\\xc9\\xd7\\x75\\x8c\\xe3\\x4a\\xf9\\xdc\\xbf\\x1c\\x68\\x47\\x4f\\x30\\x90\\x9f\\xbe\\x74\\xb7\\xba\\x42\\x96\\x32\\xf2\\x40\\x3a\\xad\\x83\\x2b\\x48\\x6b\\x72\\xc2\\x30\\x54\\xad\\x42\\xf7\\x65\\x3a\\x9d\\xdb\\x45\\x6c\\xc7\\x91\\xf3\\x48\\x88\\x6a\\x7a\\xe5\\xdc\\xec\\x7c\\x0b\\xa8\\x15\\xf7\\xa9\\x3a\\x10\\xfe\\x33\\x1e\\x90\\x3b\\x97\\x0f\\x7b\\x50\\x28\\xbe\\x49\\xd1\\x4b\\xc5\\x62\\x0d\\x63\\x79\\x26\\x72\\xb9\\x8b\\x94\\x88\\xc6\\x7a\\xe1\\x66\\x46\\x69\\x3e\\x11\\x20\\x47\\xf0\\xac\\x89\\x21\\xff\\x56\\x1c\\x92\\xdd\\x05\\x96\\xd3\\x2d\\xf0\\xa6\\xe5\\x07\\xac\\x1b\\x07\\xde\\x51\\x6c\\x98\\x42\\x8d\\x57\\x0a\\x37\\xdb\\x9b\\xcd\\x7c\\x7e\\x61\\xc6\\x94\\x8a\\xb3\\xfe\\x91\\x25\\x0d\\xd1\\xd5\\xbd\\x67\\x12\\x75\\xdf\\x9a\\x97\\x2f\\x22\\xc2\\xba\\x36\\x80\\x47\\x47\\xae\\xc1\\xea\\x24\\x16\\xc1\\xf4\\x1a\\xb8\\x7b\\xef\\xde\\x31\\x62\\x9b\\x2d\\x43\\x31\\x7c\\xe4\\x1c\\xda\\x03\\x62\\x62\\x86\\xc0\"},\n{{0x54,0x4d,0xaf,0xd9,0x96,0x0d,0x82,0x97,0x56,0xc6,0xd4,0xb3,0xea,0xdd,0x44,0x37,0x5f,0xe7,0x80,0x51,0x87,0x6b,0xf9,0x78,0xa3,0x81,0xb0,0xde,0xca,0xaa,0x80,0x96,},{0xae,0x4f,0x64,0x25,0xc1,0xb6,0x7c,0xcb,0x77,0xf9,0xaa,0xcf,0xea,0x28,0xea,0xef,0x76,0x9c,0x8c,0xac,0xee,0x03,0x52,0x05,0xcd,0xcd,0x78,0x7e,0x8d,0x07,0x62,0x9d,},{0xa2,0xae,0x11,0x7c,0x8d,0xe4,0xca,0x6d,0x6f,0xe7,0x5e,0x46,0x60,0x23,0xbd,0x55,0x0c,0x26,0xfe,0xdd,0x3e,0x74,0xca,0x13,0xad,0xb6,0x25,0xf2,0x72,0xe1,0x75,0xf1,0x4d,0x5d,0xf5,0x50,0xac,0xe7,0xd8,0x22,0x88,0xef,0xef,0xab,0xf9,0x63,0x11,0xa1,0x23,0xbe,0xe2,0x38,0x89,0xad,0x37,0x11,0xbf,0xf2,0xb8,0x08,0x79,0x46,0xbf,0x0e,},\"\\x44\\x7f\\xe7\\x34\\x4c\\xad\\x1f\\xae\\x09\\xd6\\xa7\\xd0\\x5f\\x09\\xd5\\x03\\xc1\\xb3\\xd3\\xd5\\xdf\\xa5\\x84\\x81\\x0c\\x35\\xbc\\x41\\xe4\\x95\\x56\\x93\\x70\\x61\\x54\\xe2\\xd7\\x51\\xb2\\xf1\\xb5\\x25\\xe1\\xa1\\x45\\x47\\xba\\x7f\\x8b\\x23\\x20\\x88\\xa6\\xfc\\x92\\x27\\x02\\xd9\\x3a\\x11\\xcd\\x82\\x94\\x9c\\x27\\xbe\\xd6\\x45\\xdc\\x35\\x1f\\xb4\\xc1\\x24\\x2c\\xf4\\x1d\\x01\\x57\\x54\\x12\\xe7\\x92\\xae\\xd2\\x14\\x53\\x1d\\x94\\xfd\\x66\\xe0\\x3d\\xd3\\x2e\\x97\\x2f\\xd7\\x7f\\x69\\x47\\xa3\\x53\\xe1\\xae\\x5e\\x00\\xf5\\xa6\\xca\\x77\\x99\\x24\\x72\\xf0\\x96\\xb6\\xe7\\x47\\x5f\\xe5\\x34\\xe9\\x13\\xa7\\x7b\\xcb\\x0d\\x68\\x1f\\xdf\\xb3\\xa7\\xa0\\xdc\\xb5\\x6d\\x27\\x4d\\xf4\\xaa\\x10\\x9d\\x4a\\x8a\\x37\\x79\\x4a\\x92\\x76\\xf5\\x00\\x06\\x69\\x6f\\xf1\\x2c\\xa4\\xd0\\x25\\x40\\x39\\xdf\\x0f\\xb3\\xf7\\x2a\\x96\\x0d\\xa0\\x5c\\x98\\x72\\xf2\\xe3\\x3e\\xe8\\x1d\\x1c\\xf7\\xa6\\xf4\\x8b\\xbc\\xe0\\xaa\\x18\\xc7\\xc0\\xf0\\x6b\\xa5\\x5e\\x67\\x68\\x9e\\x0a\\xf5\\x87\\xb5\\x00\\xea\\xb7\\x9c\\xc7\\xf9\\x64\\x0b\\xca\\x10\\x4b\\x7f\\xbf\\x31\\xf0\\x8e\"},\n{{0xbf,0xbc,0xd8,0x67,0x02,0x7a,0x19,0x99,0x78,0xd5,0x3e,0x35,0x9d,0x70,0x31,0x8f,0xc7,0x8c,0x7c,0xc7,0xbb,0x5c,0x79,0x96,0xba,0x79,0x7c,0x85,0x54,0xf3,0xf0,0xf0,},{0x7c,0x5a,0xe3,0xba,0xb9,0x20,0x11,0x99,0xdf,0xbe,0x74,0xb7,0xd1,0xec,0x15,0x71,0x25,0xbd,0xba,0xa4,0x52,0x0f,0x50,0x1d,0xa3,0xf2,0x48,0x57,0x9d,0xc6,0xc2,0x2d,},{0xe4,0x86,0x15,0xb6,0x56,0x33,0xe6,0x19,0x93,0xb0,0xaa,0xa1,0xfa,0xfb,0x74,0xb9,0x62,0x9c,0x38,0x4f,0xd5,0x92,0xbd,0x73,0x5f,0xa1,0xf6,0x2c,0x5c,0xad,0x11,0x29,0x1f,0xcd,0x8c,0x2e,0x91,0xa5,0x0b,0xfe,0x0b,0x03,0xb4,0x35,0x02,0xff,0xf3,0xa5,0xc3,0x82,0xb9,0xc2,0x82,0x19,0x07,0xef,0xc3,0x4d,0xa5,0xba,0x05,0x4a,0xf0,0x0e,},\"\\x11\\x7f\\xae\\x13\\xe7\\x87\\x77\\xb6\\x21\\x9f\\x02\\x02\\x14\\xc1\\xb8\\x7c\\x57\\x04\\x6d\\x1c\\x09\\xce\\x82\\xee\\x2b\\x56\\x29\\x89\\x8d\\x9b\\x0d\\xe7\\x4a\\x15\\xcf\\xe9\\x9f\\x80\\x54\\x8b\\xa9\\x13\\xd7\\x03\\x6c\\x56\\x28\\x5a\\x4c\\xba\\x49\\x3b\\x52\\xd2\\xcb\\x70\\xd6\\x36\\x5a\\xce\\x3d\\xa1\\x2b\\x1f\\x34\\xa2\\x77\\x8a\\xf3\\x6e\\xf5\\x2a\\xb8\\x2e\\xde\\x04\\xca\\xca\\xf2\\x79\\x3f\\x5f\\x89\\x83\\x1e\\x3b\\x20\\x5a\\x9e\\xe4\\xc1\\xd6\\xfb\\xda\\xb4\\xba\\x4d\\x9f\\xae\\x65\\xdd\\x79\\xa5\\xfe\\x76\\xb4\\xb3\\x9a\\x30\\x92\\xcc\\x71\\x48\\xd2\\x11\\xe8\\x5e\\xe8\\x2a\\xb4\\x63\\xd3\\x4d\\xce\\xe9\\x06\\x1d\\x9c\\x21\\xde\\xd2\\x05\\x1b\\xbd\\x50\\xb4\\x13\\xf0\\xe2\\x1a\\x0e\\x48\\xd1\\xff\\xa8\\xdc\\xae\\x24\\x0b\\x34\\x95\\xbe\\x25\\xd9\\x31\\x51\\xb5\\x7a\\xa2\\x71\\xab\\x99\\xaa\\x70\\x8c\\xa2\\x80\\x80\\xca\\xb4\\x80\\x4f\\xce\\xfa\\x92\\x9f\\x5f\\x1e\\xf3\\xf4\\xc6\\xc0\\xfb\\xfb\\x40\\xbe\\xf7\\xea\\x1b\\x50\\x9b\\x36\\xba\\x12\\x60\\x32\\x35\\x12\\x37\\x9d\\x7b\\xc3\\xfd\\xbb\\x5d\\x3f\\xaa\\xc9\\xb0\\x0e\\x21\\xf1\\x2e\\xa1\\xca\\x2e\\x29\"},\n{{0xdf,0x2d,0xf8,0xa9,0xd6,0x6d,0x56,0x38,0xcd,0xee,0x09,0x32,0x4e,0x7b,0x10,0xf8,0xed,0x29,0xab,0x91,0x38,0x7e,0x31,0x47,0xb7,0xdc,0x03,0xf7,0xcd,0x80,0x05,0x08,},{0x5c,0x04,0x2e,0x15,0x7f,0xb7,0xfb,0x12,0xd4,0xd4,0xfe,0xf2,0x84,0x71,0x41,0xec,0xfb,0x57,0xc1,0x25,0x3e,0x14,0xea,0xf3,0x00,0x4d,0x65,0x13,0xf5,0x2f,0xe6,0x25,},{0x9a,0x10,0x74,0x53,0x1e,0xd4,0x3d,0x07,0xbf,0xfc,0x7f,0x2b,0x6c,0x13,0xb8,0x83,0x8f,0xc7,0x5c,0xba,0x02,0xc7,0xd1,0xec,0x7b,0xa3,0x8b,0xca,0x3c,0xef,0x20,0xdc,0x9b,0xad,0xf3,0xa3,0x06,0x4a,0x2c,0x93,0xb1,0x84,0x24,0x41,0x42,0x0b,0x6a,0x8d,0x42,0x1a,0x96,0x0d,0x70,0xdf,0xb7,0xc7,0x0e,0xec,0x29,0x5f,0x21,0xf8,0x3f,0x0a,},\"\\x21\\x57\\x66\\x15\\xc9\\x34\\x6a\\x63\\xdc\\xcf\\x0c\\x50\\xec\\xbd\\x7c\\x6d\\x72\\xad\\x45\\x2c\\xfe\\xd4\\x3e\\xa7\\x32\\x02\\xcc\\x7a\\x98\\x57\\x60\\x56\\xb9\\x66\\x4b\\x54\\x62\\x29\\x05\\xa1\\xe7\\x22\\x17\\x20\\x73\\x0a\\xc6\\x85\\xd3\\xbd\\x39\\x77\\xec\\x39\\x59\\xd4\\x46\\xbf\\xa9\\x41\\xe7\\x25\\xb6\\xfe\\x16\\xaf\\xe5\\x43\\x2c\\x4b\\x4b\\xde\\xe7\\xaa\\x0f\\xd8\\x03\\x09\\x48\\xed\\x6f\\xcb\\xa7\\xc0\\xbd\\xb4\\x0c\\x2e\\x51\\x7d\\xa9\\x74\\x56\\xe7\\x4e\\x1f\\x93\\xd5\\xed\\x67\\x6d\\xe0\\xf4\\xa8\\xb0\\xae\\xa4\\x49\\x40\\x4b\\xd1\\x5b\\x6d\\xa7\\x9d\\xc1\\xb8\\x13\\x96\\x5f\\xe5\\x57\\x24\\x10\\xd7\\x6f\\x5b\\x5e\\xac\\x66\\x30\\x50\\x57\\x03\\x11\\xdc\\x98\\x42\\xb6\\xfb\\xf8\\x80\\x6a\\xec\\x03\\x15\\x17\\x15\\xca\\xcf\\x7f\\x21\\x80\\x2e\\x8b\\xf5\\xe9\\x8a\\x89\\xc0\\xd7\\xd0\\xd0\\x98\\xb7\\x3c\\x6e\\xfc\\x09\\x96\\x2e\\x36\\xb4\\xe0\\x30\\xc1\\xa6\\x4b\\x5d\\x34\\x9f\\x5f\\x20\\x42\\xc7\\x44\\x28\\x67\\x1e\\x4a\\x2c\\x7f\\xea\\x0c\\xae\\xe2\\x42\\x2d\\x85\\xc4\\xfc\\xdd\\xfe\\xd3\\x22\\x13\\x85\\x9a\\x69\\x95\\x5d\\x4e\\x3e\\xbb\\x7e\\x1b\\x20\\x22\"},\n{{0xe8,0xee,0x06,0x5f,0x99,0x07,0xf1,0xef,0xa2,0xda,0xec,0xb2,0x3a,0x04,0x25,0xf3,0x53,0x09,0x4d,0xa0,0x2b,0xc2,0xc9,0x31,0xf0,0xa5,0x87,0xef,0xc0,0xd1,0x3d,0xe1,},{0xc7,0x26,0x51,0xb7,0xfb,0x7a,0xc0,0x33,0x7a,0x17,0x29,0x77,0x49,0x6f,0xd7,0xf2,0xa7,0x2a,0xea,0x88,0x93,0x85,0x83,0x5e,0x56,0x3c,0x6b,0x60,0x53,0xa3,0x2d,0xc1,},{0xa5,0x10,0xdf,0xf4,0x2d,0x45,0x59,0xa1,0x9a,0x7b,0xf0,0xfe,0x0b,0xea,0x53,0xd3,0xe1,0xf2,0x2d,0xfa,0x6b,0xe5,0x50,0x39,0x89,0x5e,0x12,0xa5,0xd0,0x7d,0xa5,0xf2,0xe3,0x77,0x13,0xcc,0xb2,0xeb,0x21,0x60,0x11,0x62,0x8f,0x69,0x83,0xf8,0x71,0xfe,0xe2,0x86,0xe6,0x6f,0xff,0x4b,0xe7,0x58,0x2c,0x96,0x1a,0x1e,0xd7,0x56,0x84,0x04,},\"\\xa2\\xf0\\xc1\\x37\\x34\\x73\\xa3\\x05\\xd8\\xf1\\xd9\\x91\\x38\\xb0\\x6b\\x9a\\x96\\x94\\xff\\xaa\\x8a\\x88\\x22\\x2d\\xe9\\xf7\\x29\\xbe\\xe1\\x30\\x51\\x75\\xdf\\xb1\\x70\\x01\\xcc\\x77\\xf6\\x7b\\x6d\\x40\\xc9\\x0c\\x1a\\x28\\xfb\\x22\\x6c\\x11\\x28\\x6d\\xb4\\xa1\\x3e\\x45\\xe6\\x92\\x11\\x24\\x2b\\xcd\\xd0\\x1c\\xb6\\xe2\\xc4\\x54\\xe7\\x6c\\x0c\\xab\\x88\\x1b\\x4d\\x2d\\x9d\\x3a\\xb1\\x00\\xa5\\xd6\\x1d\\x17\\x25\\xd8\\x66\\xe4\\xfd\\xb6\\x6d\\x93\\xd7\\x7f\\x5b\\x30\\x86\\x93\\xb9\\xb5\\xa3\\x33\\xe5\\x7f\\xa2\\x5d\\x1e\\x5d\\x2e\\x38\\xdf\\x6e\\x4e\\x9e\\xc8\\x41\\x59\\xbb\\xee\\x1f\\xfe\\xa9\\x26\\x83\\x6a\\x01\\x01\\xc9\\x14\\x83\\xbd\\x5b\\xc8\\x8a\\x6f\\x1c\\xc4\\xd4\\xe7\\xf0\\x08\\xad\\x08\\x45\\x3a\\x01\\x23\\x42\\x9d\\xd3\\x35\\x78\\x1c\\x7c\\xbf\\x8d\\x68\\x5a\\x89\\x99\\xed\\x11\\x77\\x60\\x70\\x04\\xa1\\x3c\\x4c\\xb5\\xea\\x49\\x08\\xc5\\x42\\x60\\x7d\\x3f\\x2c\\xd6\\x69\\x0c\\xf1\\xf2\\xa7\\x45\\x5b\\xbd\\x38\\xf5\\x38\\xf0\\x7a\\x10\\x39\\x64\\x31\\x7e\\xfb\\xce\\xe3\\x7e\\xb4\\x69\\x31\\xc0\\x27\\xcf\\x15\\x3e\\xf8\\x6e\\x43\\xd7\\x82\\x81\\xeb\\xd7\\x10\"},\n{{0xc7,0x2e,0x67,0xd8,0xc3,0xfe,0xc0,0x04,0xff,0x61,0x87,0x18,0xa9,0x09,0x9e,0xb8,0xad,0x7b,0x06,0xff,0x3b,0x8c,0x54,0x2a,0x7e,0x8b,0x98,0x47,0x31,0x34,0x75,0xe1,},{0x4e,0xb0,0x02,0xd3,0xcc,0xeb,0x18,0x8c,0x66,0x58,0xfe,0xc5,0x1c,0xb4,0x79,0xa6,0x52,0x64,0xac,0x55,0x5c,0x75,0xcd,0xc2,0x24,0x9c,0xf1,0xce,0x3d,0xef,0xc1,0x6d,},{0x2d,0x7b,0xab,0x8e,0xbd,0xa7,0xfc,0xa5,0xbb,0x3c,0x25,0xf5,0x1d,0xc5,0x1b,0x73,0xe6,0xff,0x6a,0x3b,0xb1,0xb5,0x2a,0xcc,0x78,0x11,0xa7,0xd2,0x59,0x5c,0xd6,0xfd,0xaf,0x73,0x04,0x94,0x41,0x8e,0x2f,0x57,0xef,0xdc,0x56,0x17,0xb0,0x66,0xfd,0x7b,0x62,0x07,0x68,0x0d,0x94,0xfb,0x8c,0x43,0xd3,0xd4,0x74,0x0b,0x41,0xcb,0x69,0x01,},\"\\xa8\\xf3\\x41\\x35\\xc0\\x13\\x2e\\xc9\\x5b\\x64\\xb0\\xcb\\xf5\\x1d\\x66\\x90\\x01\\x43\\x37\\x04\\x06\\x79\\x1f\\xbb\\x55\\xf2\\xb8\\xca\\x95\\x3c\\xc7\\x4a\\x46\\xe0\\x8b\\x00\\x2f\\xa2\\xda\\x21\\xb9\\x51\\xb8\\x87\\x1f\\x7a\\x29\\xbc\\x6d\\x38\\x79\\x0a\\xfc\\x66\\xa3\\x29\\xc3\\x97\\xd9\\xf9\\x25\\x0b\\xae\\x0e\\x30\\xae\\x34\\x26\\xe0\\x8d\\x8e\\xad\\x01\\x79\\xa3\\xb3\\x13\\xc9\\x08\\x83\\x91\\x92\\xf2\\x89\\xa3\\xf3\\xb6\\xe9\\x60\\xb4\\xc5\\xce\\xbe\\xf0\\xa0\\x9d\\xaa\\x9c\\x7a\\x15\\xc1\\x9d\\x4e\\xbc\\x6f\\xc2\\xac\\x3c\\xd0\\x22\\x32\\xe8\\x32\\xb2\\x34\\xed\\xd7\\x96\\x5d\\x68\\x7b\\xfe\\xb7\\x58\\xf7\\x0f\\xa7\\x96\\x38\\x41\\xb7\\x85\\x9b\\xb9\\x7c\\x97\\x1b\\xd5\\x57\\xbc\\x87\\x69\\x52\\x4a\\xc4\\xc6\\xee\\xb3\\x57\\x97\\x93\\x33\\x4b\\x52\\x2d\\x17\\x6b\\xc6\\x2f\\x86\\xb4\\xd5\\xc0\\xd4\\x01\\x70\\x36\\xd2\\xb6\\xbd\\x4e\\x43\\x84\\x41\\x6e\\xf8\\x26\\x31\\x39\\x69\\x1a\\x86\\x06\\x17\\x0d\\x73\\xc9\\x3d\\x64\\x17\\xdc\\xc1\\xa0\\x8a\\x53\\x7c\\x9e\\xd4\\x40\\x04\\x71\\xa4\\x6f\\x52\\x90\\x7b\\x46\\xb1\\x0a\\x8b\\x68\\x89\\xdb\\xb4\\x64\\x7a\\x8b\\xbc\\x71\\x49\"},\n{{0x69,0x64,0x50,0xb5,0x57,0xec,0x3c,0x94,0xcf,0x1a,0xf1,0x32,0x64,0x75,0x63,0x4a,0xa8,0x1d,0xef,0x38,0x14,0xff,0x30,0xa0,0x2b,0xa7,0xf2,0x04,0x4b,0x59,0xc0,0xfe,},{0x85,0x84,0x77,0x3c,0x56,0x6b,0x0e,0xed,0x3f,0x43,0x28,0x17,0x05,0xb5,0x75,0xa4,0x34,0xe4,0x7d,0x6c,0xf6,0xb2,0x51,0xb8,0x98,0x03,0xfe,0xf5,0x35,0x34,0xcb,0x29,},{0xce,0x8b,0x0a,0x57,0x79,0xf4,0xf5,0xf4,0x01,0xe8,0x4d,0x65,0x92,0x7a,0x0c,0x28,0xdf,0x82,0x9e,0x95,0xd0,0x9b,0xfa,0x97,0x11,0x1b,0x87,0x00,0x07,0x8f,0xf8,0x94,0xcf,0x72,0x77,0xe3,0x4a,0x71,0x61,0x44,0xd5,0x53,0x06,0xfc,0x9e,0x2f,0x64,0xcd,0x28,0x75,0x83,0xcc,0x80,0x03,0xbe,0x0e,0x8f,0xaf,0x26,0xaf,0x76,0x40,0x14,0x0e,},\"\\xcc\\x25\\x78\\x29\\xf3\\x0a\\x5f\\x90\\xdf\\xdb\\xc2\\x47\\xd4\\x2e\\x38\\x87\\x38\\xb7\\x6c\\x41\\xef\\x8a\\x82\\xa5\\xe0\\x22\\x5d\\xdf\\x1e\\x38\\x6d\\x77\\x08\\x0b\\x3b\\x9d\\xf8\\x6c\\x54\\xb8\\x5c\\xdf\\x2c\\x32\\xf3\\x67\\xab\\xa0\\xc3\\xb6\\xbf\\x88\\x8a\\x5a\\x69\\x03\\x52\\x9b\\x6a\\xeb\\x4d\\x54\\x07\\xa1\\x01\\x80\\x14\\x91\\x14\\x13\\x02\\x28\\xfc\\x43\\x56\\xcc\\xf3\\x66\\xb7\\x7b\\xe8\\x97\\x96\\xa9\\xe7\\x1a\\x0c\\x69\\x3f\\x31\\xe5\\x84\\xa4\\xf1\\x43\\x09\\x7b\\xa3\\x70\\x36\\x3b\\x67\\xb2\\xf2\\xe2\\xfd\\x8d\\x6f\\xe8\\xb4\\xe8\\xdb\\xf0\\xd7\\xdc\\xc1\\xa8\\x36\\x00\\x41\\x15\\x8a\\xa2\\xaf\\xf7\\xe2\\xa3\\x25\\xb8\\xe5\\x18\\xf1\\x93\\xa2\\x8b\\xae\\x05\\xe3\\xd5\\x2b\\x26\\x62\\x1a\\xf4\\x02\\x02\\x6d\\x7f\\x25\\x0e\\x86\\xdc\\xee\\x30\\x1a\\x58\\xb6\\x31\\xea\\xdf\\x45\\x27\\xe9\\x58\\xf0\\x2a\\x61\\x58\\x7f\\x0b\\xb5\\x16\\xce\\xfa\\xc0\\x09\\xfe\\x51\\x05\\x2f\\xff\\x53\\x33\\x6d\\xbd\\x94\\xe7\\x26\\x6d\\x3b\\x43\\xca\\xba\\x8a\\x1b\\x38\\xe5\\xd8\\x71\\xc2\\xa2\\x4a\\x4c\\x41\\x2f\\xff\\x3f\\x7a\\x9a\\x52\\xa8\\xab\\x23\\xba\\xc9\\x79\\x1b\\x2b\\x5a\\x66\\x9a\"},\n{{0xa8,0xdd,0x35,0xf0,0x54,0xfb,0x6f,0xf6,0xf0,0xab,0x09,0x4a,0x0d,0x3d,0x1c,0x26,0x28,0x32,0x18,0x1d,0xf3,0x5c,0xcd,0x51,0x92,0x54,0x5e,0xbd,0x6a,0x9c,0xf5,0x29,},{0xca,0x41,0x23,0x38,0xd3,0x81,0x4b,0x88,0x6d,0x96,0x4b,0x71,0x92,0x5e,0x1a,0xab,0xb3,0xff,0xd0,0x78,0x34,0xdb,0xe7,0xdc,0x51,0x25,0x68,0x88,0x2b,0x53,0xe4,0xa3,},{0xfa,0x70,0x9f,0xbc,0x83,0x82,0xaf,0x83,0xd1,0x18,0x12,0x61,0x8d,0xfa,0xca,0x45,0x2e,0xab,0x83,0xe4,0xc5,0x3f,0xe9,0xe5,0x85,0x84,0x67,0xd0,0x7b,0x67,0x67,0xe1,0x79,0x75,0xc1,0xe0,0x63,0x93,0xd6,0xdd,0xe1,0x5a,0x34,0xd9,0x47,0x3d,0x1c,0xf4,0xd6,0xd8,0xc2,0xd5,0x73,0x94,0x52,0x00,0x80,0xfa,0xc4,0xe4,0x34,0x48,0xbe,0x07,},\"\\x55\\xa7\\xad\\x91\\x32\\xd6\\x3a\\xc1\\x61\\xe7\\xad\\xb1\\x32\\xb9\\x18\\x9f\\xdd\\x84\\xc3\\x61\\xc1\\xe4\\xf5\\x41\\x9a\\x6d\\xf7\\x3d\\xf4\\xd7\\xae\\xb2\\x9a\\x8d\\xc4\\xbf\\x01\\x49\\x0d\\x4f\\x48\\x4e\\x2d\\x12\\x07\\x75\\x17\\xf5\\xfc\\x7a\\xd0\\xbd\\xed\\xa2\\x0a\\x6c\\xb0\\x22\\x79\\x42\\x29\\x0b\\x08\\xc3\\xfe\\x33\\xab\\x9b\\x21\\x35\\xbc\\x38\\xa6\\x57\\x9a\\x54\\xbd\\x98\\x2f\\x7d\\x14\\x17\\xce\\x86\\x71\\x17\\xae\\xa9\\x18\\xdb\\xd3\\xdd\\x47\\x6e\\x7e\\xb5\\xb5\\xd3\\xc3\\xe4\\x8a\\x86\\x4a\\x2f\\x94\\x2a\\x31\\x50\\x1a\\xa2\\xb2\\x9b\\x53\\xb8\\x05\\x13\\xc9\\x5d\\x6a\\x41\\x18\\x44\\xf0\\xde\\xdf\\x16\\xa2\\x9a\\xc2\\x67\\xd3\\x31\\xe5\\x3b\\xdc\\x25\\x39\\xbf\\xcf\\x32\\xdc\\x9b\\x5d\\x64\\x0f\\x12\\x31\\xe2\\xca\\xfb\\x0a\\xe9\\x4b\\xb5\\x18\\x94\\x26\\x86\\x33\\x64\\x26\\x2e\\xfb\\x47\\xb5\\xb5\\xcc\\xdb\\xbc\\x93\\x32\\x42\\x16\\xa7\\x99\\xb6\\xf5\\x0d\\x37\\x04\\xf1\\x5e\\xd5\\x9a\\xf6\\xcc\\x7d\\x91\\x0c\\xf0\\x62\\xd1\\xbe\\x63\\x2d\\xca\\x5d\\xf2\\x13\\xd4\\x87\\xd8\\x56\\x4f\\x2b\\x2b\\xd7\\xd8\\x18\\xbb\\xa2\\x7c\\x36\\x40\\x13\\xd9\\x2d\\x7f\\x72\\x62\\x54\\x62\"},\n{{0xae,0x1d,0x2c,0x6b,0x17,0x1b,0xe2,0x4c,0x2e,0x41,0x3d,0x36,0x4d,0xcd,0xa9,0x7f,0xa4,0x76,0xaa,0xf9,0x12,0x3d,0x33,0x66,0xb0,0xbe,0x03,0xa1,0x42,0xfe,0x6e,0x7d,},{0xd4,0x37,0xf5,0x75,0x42,0xc6,0x81,0xdd,0x54,0x34,0x87,0x40,0x8e,0xc7,0xa4,0x4b,0xd4,0x2a,0x5f,0xd5,0x45,0xce,0x2f,0x4c,0x82,0x97,0xd6,0x7b,0xb0,0xb3,0xaa,0x7b,},{0x90,0x90,0x08,0xf3,0xfc,0xff,0xf4,0x39,0x88,0xae,0xe1,0x31,0x4b,0x15,0xb1,0x82,0x2c,0xaa,0xa8,0xda,0xb1,0x20,0xbd,0x45,0x2a,0xf4,0x94,0xe0,0x83,0x35,0xb4,0x4a,0x94,0xc3,0x13,0xc4,0xb1,0x45,0xea,0xdd,0x51,0x66,0xea,0xac,0x03,0x4e,0x29,0xb7,0xe6,0xac,0x79,0x41,0xd5,0x96,0x1f,0xc4,0x9d,0x26,0x0e,0x1c,0x48,0x20,0xb0,0x0e,},\"\\x9e\\x6c\\x2f\\xc7\\x6e\\x30\\xf1\\x7c\\xd8\\xb4\\x98\\x84\\x5d\\xa4\\x4f\\x22\\xd5\\x5b\\xec\\x15\\x0c\\x61\\x30\\xb4\\x11\\xc6\\x33\\x9d\\x14\\xb3\\x99\\x69\\xab\\x10\\x33\\xbe\\x68\\x75\\x69\\xa9\\x91\\xa0\\x6f\\x70\\xb2\\xa8\\xa6\\x93\\x1a\\x77\\x7b\\x0e\\x4b\\xe6\\x72\\x3c\\xd7\\x5e\\x5a\\xa7\\x53\\x28\\x13\\xef\\x50\\xb3\\xd3\\x72\\x71\\x64\\x0f\\xa2\\xfb\\x28\\x7c\\x03\\x55\\x25\\x76\\x41\\xea\\x93\\x5c\\x85\\x1c\\x0b\\x6a\\xc6\\x8b\\xe7\\x2c\\x88\\xdf\\xc5\\x85\\x6f\\xb5\\x35\\x43\\xfb\\x37\\x7b\\x0d\\xbf\\x64\\x80\\x8a\\xfc\\xc4\\x27\\x4a\\xa4\\x56\\x85\\x5a\\xd2\\x8f\\x61\\x26\\x7a\\x41\\x9b\\xc7\\x21\\x66\\xb9\\xca\\x73\\xcd\\x3b\\xb7\\x9b\\xf7\\xdd\\x25\\x9b\\xaa\\x75\\x91\\x14\\x40\\x97\\x4b\\x68\\xe8\\xba\\x95\\xa7\\x8c\\xbb\\xe1\\xcb\\x6a\\xd8\\x07\\xa3\\x3a\\x1c\\xce\\x2f\\x40\\x6f\\xf7\\xbc\\xbd\\x05\\x8b\\x44\\xa3\\x11\\xb3\\x8a\\xb4\\xd4\\xe6\\x14\\x16\\xc4\\xa7\\x4d\\x88\\x3d\\x6a\\x6a\\x79\\x4a\\xbd\\x9c\\xf1\\xc0\\x39\\x02\\x8b\\xf1\\xb2\\x0e\\x3d\\x49\\x90\\xaa\\xe8\\x6f\\x32\\xbf\\x06\\xcd\\x83\\x49\\xa7\\xa8\\x84\\xcc\\xe0\\x16\\x5e\\x36\\xa0\\x64\\x0e\\x98\\x7b\\x9d\\x51\"},\n{{0x02,0x65,0xa7,0x94,0x4b,0xac,0xcf,0xeb,0xf4,0x17,0xb8,0x7a,0xe1,0xe6,0xdf,0x2f,0xf2,0xa5,0x44,0xff,0xb5,0x82,0x25,0xa0,0x8e,0x09,0x2b,0xe0,0x3f,0x02,0x60,0x97,},{0x63,0xd3,0x27,0x61,0x5e,0xa0,0x13,0x9b,0xe0,0x74,0x0b,0x61,0x8a,0xff,0x1a,0xcf,0xa8,0x18,0xd4,0xb0,0xc2,0xcf,0xea,0xf0,0xda,0x93,0xcd,0xd5,0x24,0x5f,0xb5,0xa9,},{0xb6,0xc4,0x45,0xb7,0xed,0xdc,0xa5,0x93,0x5c,0x61,0x70,0x8d,0x44,0xea,0x59,0x06,0xbd,0x19,0xcc,0x54,0x22,0x4e,0xae,0x3c,0x8e,0x46,0xce,0x99,0xf5,0xcb,0xbd,0x34,0x1f,0x26,0x62,0x39,0x38,0xf5,0xfe,0x04,0x07,0x0b,0x1b,0x02,0xe7,0x1f,0xbb,0x7c,0x78,0xa9,0x0c,0x0d,0xda,0x66,0xcb,0x14,0x3f,0xab,0x02,0xe6,0xa0,0xba,0xe3,0x06,},\"\\x87\\x4e\\xd7\\x12\\xa2\\xc4\\x1c\\x26\\xa2\\xd9\\x52\\x7c\\x55\\x23\\x3f\\xde\\x0a\\x4f\\xfb\\x86\\xaf\\x8e\\x8a\\x1d\\xd0\\xa8\\x20\\x50\\x2c\\x5a\\x26\\x93\\x2b\\xf8\\x7e\\xe0\\xde\\x72\\xa8\\x87\\x4e\\xf2\\xee\\xbf\\x83\\x38\\x4d\\x44\\x3f\\x7a\\x5f\\x46\\xa1\\x23\\x3b\\x4f\\xb5\\x14\\xa2\\x46\\x99\\x81\\x82\\x48\\x94\\xf3\\x25\\xbf\\x86\\xaa\\x0f\\xe1\\x21\\x71\\x53\\xd4\\x0f\\x35\\x56\\xc4\\x3a\\x8e\\xa9\\x26\\x94\\x44\\xe1\\x49\\xfb\\x70\\xe9\\x41\\x5a\\xe0\\x76\\x6c\\x56\\x5d\\x93\\xd1\\xd6\\x36\\x8f\\x9a\\x23\\xa0\\xad\\x76\\xf9\\xa0\\x9d\\xbf\\x79\\x63\\x4a\\xa9\\x71\\x78\\x67\\x77\\x34\\xd0\\x4e\\xf1\\xa5\\xb3\\xf8\\x7c\\xe1\\xee\\x9f\\xc5\\xa9\\xac\\x4e\\x7a\\x72\\xc9\\xd7\\xd3\\x1e\\xc8\\x9e\\x28\\xa8\\x45\\xd2\\xe1\\x10\\x3c\\x15\\xd6\\x41\\x0c\\xe3\\xc7\\x23\\xb0\\xcc\\x22\\x09\\xf6\\x98\\xaa\\x9f\\xa2\\x88\\xbb\\xbe\\xcf\\xd9\\xe5\\xf8\\x9c\\xdc\\xb0\\x9d\\x3c\\x21\\x5f\\xeb\\x47\\xa5\\x8b\\x71\\xea\\x70\\xe2\\xab\\xea\\xd6\\x7f\\x1b\\x08\\xea\\x6f\\x56\\x1f\\xb9\\x3e\\xf0\\x52\\x32\\xee\\xda\\xbf\\xc1\\xc7\\x70\\x2a\\xb0\\x39\\xbc\\x46\\x5c\\xf5\\x7e\\x20\\x7f\\x10\\x93\\xfc\\x82\\x08\"},\n{{0x6b,0xce,0x4d,0xfd,0x53,0xbf,0xa5,0x50,0x6f,0x2f,0x55,0x4d,0x2d,0x99,0x4a,0x0d,0xc4,0x0c,0xaf,0xcd,0xec,0x7e,0x1b,0xe0,0x50,0x00,0x6e,0x5c,0x5a,0x4b,0x38,0xa1,},{0xc8,0x90,0x02,0x37,0x28,0xd8,0x39,0x70,0x70,0x29,0x17,0x71,0xe6,0x5e,0x03,0x4d,0x34,0xd4,0xaa,0xe5,0xe2,0x47,0x65,0x3e,0x4f,0xf4,0xc0,0x74,0x59,0x1d,0xa7,0x02,},{0x99,0xae,0x67,0x82,0xff,0x27,0x64,0x6c,0x27,0xf6,0x1e,0x23,0x63,0x6a,0xe1,0x88,0x15,0x21,0xcf,0xa5,0xed,0x25,0x6f,0x70,0xbc,0xe7,0xce,0x00,0xb6,0x82,0x80,0xce,0x8e,0x0c,0x82,0xaa,0x76,0x5a,0xfb,0x8b,0x5a,0x1f,0xf2,0xfe,0x42,0xc5,0x74,0x41,0xe4,0x58,0xe4,0x43,0xdc,0x8b,0x12,0x34,0x77,0xae,0x33,0xd8,0x84,0x88,0x8c,0x0b,},\"\\x32\\x39\\x19\\x07\\x47\\xee\\x33\\xd4\\x0b\\xf8\\x70\\xac\\x9a\\xd4\\x9d\\x88\\xee\\x32\\x0f\\x63\\xc0\\x52\\x57\\xe8\\xab\\x2c\\x60\\x30\\x65\\x97\\xce\\x76\\xd1\\xf1\\xe7\\x92\\xab\\x6a\\x65\\xca\\xa5\\x44\\xfb\\xec\\x20\\x89\\x2f\\xd4\\x96\\x05\\x94\\xf3\\x1b\\x37\\x63\\xef\\x07\\xd4\\x98\\x2e\\xae\\x4a\\x2d\\xbf\\x33\\x77\\xdc\\xc1\\xe3\\xf9\\x5e\\x46\\xed\\x39\\xb7\\xf0\\x22\\x2f\\x04\\xbb\\x5c\\x3b\\x43\\x4c\\x8f\\x9f\\x31\\x0d\\xe9\\xf1\\x22\\xa2\\x9f\\x82\\x41\\xe8\\x1e\\x20\\x65\\x49\\xae\\x62\\x8d\\x2b\\x8a\\xd7\\x68\\x97\\x2c\\x98\\x84\\x7c\\x11\\x88\\xad\\x04\\xc8\\x35\\x35\\x63\\x78\\xbe\\xf7\\x9c\\xd1\\x26\\x86\\x94\\x05\\xb1\\x29\\xfd\\xbd\\xc3\\xbc\\x48\\x9c\\xbd\\x13\\x99\\x50\\x5d\\xad\\xef\\x76\\x17\\xb5\\xbe\\x5d\\xa1\\x73\\xd3\\xe8\\x0e\\x58\\x38\\xc9\\x9e\\x34\\x92\\x76\\x24\\x27\\x29\\xe0\\x21\\x9b\\xd7\\x47\\x6a\\xe5\\xc4\\xf8\\x1a\\x12\\x87\\x8f\\xb4\\x83\\xa6\\xc0\\xe9\\xb0\\xdf\\x29\\x62\\xeb\\x0b\\xf0\\x01\\x57\\x78\\x2c\\xf7\\x68\\xa1\\xb7\\x1c\\x01\\x01\\x69\\xee\\x85\\x22\\xde\\xf0\\x02\\x4a\\xd7\\xe4\\x57\\x75\\xa2\\x90\\x63\\x9c\\x53\\xaa\\xf4\\x81\\x98\\xc4\\x2d\\xe7\\x5c\"},\n{{0x17,0x86,0x1a,0x8d,0x41,0x54,0xac,0xd4,0xfa,0x9c,0x8f,0xc9,0x47,0xc1,0x88,0x6c,0x11,0x29,0x0b,0xe2,0x22,0x87,0x2f,0xf4,0xf8,0xcd,0x25,0x93,0x9e,0x4d,0x13,0x61,},{0x43,0x77,0x3f,0x44,0x49,0x06,0x5e,0xae,0xba,0xf8,0x93,0x7b,0xaf,0x75,0x85,0x60,0xb0,0xc4,0xd2,0xde,0x46,0x97,0x78,0x39,0xb3,0xb8,0x73,0xd5,0xd7,0xd5,0xfd,0x8f,},{0xa5,0xee,0x02,0x4c,0xcd,0xbd,0xd4,0xc2,0x1a,0x24,0x70,0x9e,0xc5,0x3d,0xcc,0xb7,0xee,0x17,0x62,0x6d,0xd0,0x0a,0x09,0x3d,0x08,0x84,0xf5,0xb4,0x5c,0x4c,0x9d,0x16,0x91,0x84,0x01,0x51,0xc3,0x3c,0x8a,0xa0,0x7b,0x69,0xb3,0x4e,0x16,0xf6,0x16,0x47,0xeb,0xe7,0x93,0xae,0x4d,0xaa,0x70,0xcf,0xf4,0x8e,0x6a,0xb4,0x2f,0xfd,0xbc,0x00,},\"\\x18\\x4d\\xf5\\xea\\x32\\x15\\xeb\\xe1\\x80\\x39\\x0b\\x0f\\xf0\\x42\\xba\\x23\\x81\\x15\\x5a\\x03\\x8d\\xc7\\x32\\xf7\\x6a\\x01\\xc7\\xe7\\x0f\\x82\\xd1\\xcc\\xc9\\xde\\x9a\\x05\\x96\\xb3\\xfe\\xe4\\x47\\x20\\x9c\\x99\\x26\\x84\\xf6\\x43\\xdf\\x21\\xf4\\xcf\\x9d\\x17\\x92\\x62\\x79\\x0e\\x86\\x23\\xe4\\x24\\x72\\xdc\\x35\\x19\\x97\\xe6\\xda\\x18\\x9c\\x07\\xe1\\xe8\\x88\\x2c\\x07\\xf8\\x6c\\x63\\x37\\xec\\x01\\x13\\x91\\x2c\\xf9\\x22\\x15\\xc8\\xde\\x19\\x82\\xb8\\xfc\\x57\\xbf\\xab\\xc5\\x5a\\x3e\\x87\\x36\\xf7\\x36\\x10\\x42\\x9d\\x97\\xfe\\xb5\\x1d\\x79\\x4f\\x50\\x5d\\x0c\\x5a\\x0b\\x3a\\xbd\\x48\\xef\\x7f\\x55\\xa6\\x28\\xf9\\x0b\\x85\\x67\\xa1\\xc1\\x5e\\xa9\\xd1\\x90\\xd7\\xbf\\x4e\\xc2\\xbc\\x93\\x34\\xad\\xa6\\xcb\\x92\\x80\\x8d\\xfc\\x20\\x64\\x83\\x6f\\xcf\\xa4\\x6b\\x96\\xfd\\x7a\\x5d\\x6f\\x4b\\x05\\x4d\\xab\\x09\\xb7\\x35\\x95\\xfe\\xb8\\x9e\\xd0\\x05\\xb9\\xec\\x9d\\x31\\x88\\x12\\x1d\\xe6\\x96\\x96\\xd6\\x4e\\x7c\\x7b\\xbd\\xfc\\x1c\\x46\\x9f\\xaf\\x14\\x8c\\x38\\xa7\\x78\\x59\\x70\\xaf\\xe1\\xac\\xd0\\x6a\\x92\\xc9\\x94\\x78\\xfe\\x44\\x97\\x4e\\x3b\\xb2\\x09\\x5e\\x44\\x67\\xe9\\xb2\\xe9\\x96\"},\n{{0x0a,0x84,0xba,0xa5,0x4f,0x11,0xcf,0x17,0x09,0x0f,0xec,0x61,0xf3,0xf9,0x40,0x15,0x08,0xa3,0xa0,0x38,0x87,0xac,0xa1,0xa7,0x93,0x93,0x94,0xb1,0xee,0x40,0xa9,0x25,},{0x30,0x9a,0x73,0xc6,0x2d,0x23,0xd7,0x40,0xf2,0xe9,0x3c,0x18,0x58,0x7a,0xc1,0x5e,0x7e,0xc4,0x80,0xd2,0x5a,0xc0,0x79,0x4e,0x10,0xf8,0xcd,0x46,0x1c,0xc2,0xb1,0x30,},{0x4d,0x87,0x0b,0xd5,0x3a,0xf8,0xf1,0x3f,0x21,0x4d,0x99,0x34,0xec,0x90,0x3a,0xc4,0x82,0x84,0x09,0x2c,0xd9,0xb1,0x62,0xa4,0x4c,0xce,0xc8,0x51,0xfa,0x94,0x2d,0xe7,0x15,0xcc,0xda,0x07,0xb7,0x99,0x1d,0x71,0x27,0x23,0xe7,0xa4,0xd5,0xb4,0xf0,0x37,0x4a,0xb8,0x5a,0xc3,0x86,0x7e,0x0b,0x53,0xeb,0xc4,0x6b,0x53,0x0f,0x9f,0xed,0x05,},\"\\xfe\\x70\\x01\\x7b\\x14\\x67\\x8b\\x0d\\x3a\\xd0\\x3e\\x18\\x3d\\x6f\\x53\\x31\\x43\\x78\\x37\\x9a\\xb3\\xda\\x65\\xb3\\x51\\x12\\x57\\xb3\\xd5\\x40\\x86\\xe8\\x6f\\x20\\x31\\x13\\x90\\x21\\x39\\x1a\\xf9\\xd7\\x20\\x85\\xff\\x7c\\x3d\\xc8\\xc1\\xe2\\xd9\\x1e\\x53\\x33\\x38\\x55\\x42\\x3d\\x0f\\x78\\x5e\\x2c\\xc5\\xf8\\xb7\\x79\\x9f\\xcf\\x1b\\x70\\xe6\\xbe\\xcb\\x78\\x8e\\x53\\xe9\\x02\\x0f\\x29\\x95\\xdd\\xb0\\xc3\\x83\\xa1\\xf8\\x10\\x38\\xfc\\x3d\\x54\\x3c\\xe0\\xa3\\x8c\\x9c\\x28\\x8a\\x9b\\xc4\\x07\\x7f\\x42\\x77\\xdc\\xc6\\xc5\\x64\\x22\\x63\\xfc\\xfe\\x19\\x68\\x80\\x05\\xa6\\x03\\xf5\\x76\\x75\\xd2\\x43\\x4f\\x3e\\xd1\\xf4\\x6d\\x32\\xf1\\x4e\\xae\\xb0\\x73\\xe8\\x3e\\xe7\\x08\\x6d\\xa2\\xfb\\x67\\x65\\x9d\\x3f\\xb6\\x8c\\x62\\x32\\x0b\\x77\\x27\\xb3\\xb8\\xea\\x00\\x65\\x76\\xbc\\x2c\\x7e\\x6b\\x5f\\x1e\\xce\\xfa\\x8b\\x92\\xe7\\x0c\\x92\\xc8\\x89\\x51\\xd0\\xc1\\x2d\\x91\\xde\\x80\\x1c\\x38\\xb7\\xca\\x5a\\x0a\\x04\\xb4\\xc3\\x42\\x9a\\xba\\x86\\x38\\x6e\\x96\\xe0\\x6a\\xfd\\x20\\xd4\\xc5\\xc2\\xfe\\x2b\\x9b\\x42\\x73\\xeb\\x05\\x20\\x1a\\x79\\x27\\x3a\\xbd\\xbe\\xb3\\x7e\\xd1\\x83\\x0d\\x22\\x6b\\x6b\\xdb\"},\n{{0x38,0x37,0x94,0x23,0xda,0xfd,0xbf,0x25,0xe1,0x9d,0x72,0x31,0xbd,0xdd,0x80,0xb4,0xce,0xfc,0xfe,0x2a,0xed,0x93,0x25,0x84,0xdf,0xa0,0xcc,0x3c,0x9f,0x92,0x32,0xde,},{0x59,0x7e,0x81,0xdc,0xee,0x94,0x48,0xb7,0x7d,0xe6,0x82,0x9e,0x79,0x21,0xc8,0xa3,0x90,0x53,0x5d,0x89,0xa0,0x84,0x94,0x30,0xae,0xd6,0x63,0x64,0xee,0x14,0x0d,0x8b,},{0xd8,0xb5,0x0a,0x88,0xae,0xd6,0xf2,0xa9,0x6d,0x08,0x22,0x13,0xad,0xf8,0xb2,0x51,0x9f,0x6a,0x0b,0xbd,0x30,0xdd,0x3c,0xb0,0xf3,0xfd,0x3c,0xe1,0xc6,0x43,0xfc,0x02,0x99,0x46,0xcd,0x43,0x46,0x2e,0xd2,0x25,0x13,0xf1,0xd6,0x5f,0xca,0x24,0xbd,0xe3,0x81,0x81,0x66,0xba,0xa8,0x6d,0xaa,0x79,0x87,0x92,0xaf,0xaf,0xe0,0xc1,0xa1,0x0a,},\"\\x36\\x12\\x5c\\xa6\\x66\\x68\\x80\\x29\\x06\\x23\\x7e\\x63\\xa2\\xfe\\x5a\\xe6\\x10\\xf1\\x1a\\x7c\\xf9\\x25\\x20\\xd1\\x9e\\x66\\x90\\xa3\\xad\\xfa\\xfd\\x5d\\x07\\xa7\\x84\\xbc\\x1a\\x0e\\x18\\x52\\x73\\xd1\\x1d\\x34\\x0d\\x5e\\xff\\x90\\x15\\x97\\xde\\xdf\\x45\\x0c\\x46\\x99\\xd4\\x3f\\x3f\\xb1\\x68\\xd5\\x57\\xf6\\xc9\\xc0\\x30\\x77\\xc3\\xcd\\xc3\\x70\\xd3\\x48\\x32\\xcc\\xdf\\x2a\\x8e\\x3d\\x75\\x79\\x64\\x90\\xed\\x02\\x42\\x89\\x9d\\x25\\xdd\\xf4\\x4b\\xfc\\x66\\xf3\\x29\\xcf\\x4c\\x45\\x16\\x87\\x03\\xc3\\x1b\\xc9\\x20\\x2d\\x89\\x0f\\x39\\x69\\xff\\xd3\\xac\\x35\\xa1\\x28\\x18\\xdc\\xa7\\x51\\xce\\xb8\\x80\\x8f\\xe8\\x1e\\xfa\\x26\\xa5\\xe0\\xd2\\x00\\xc5\\xec\\x1d\\x94\\xa5\\x09\\x7e\\xa7\\x4b\\x64\\x98\\xfe\\x28\\x8f\\x30\\xc4\\x8d\\x72\\x7e\\x9d\\x3d\\x35\\xc8\\xe1\\x2d\\x85\\x42\\x07\\x02\\x55\\x6f\\x28\\x61\\x48\\x4f\\xfd\\x09\\xb4\\xf1\\x22\\x65\\xcc\\x9a\\xba\\xfe\\xb8\\x2c\\xf5\\x90\\x02\\x88\\x95\\xa7\\xd0\\x50\\xff\\x57\\xcc\\xf5\\xf2\\x80\\x22\\xd0\\x16\\xab\\x40\\x94\\xb0\\x62\\xe4\\x8b\\x66\\xfd\\x36\\xd1\\xe1\\x96\\x26\\xe5\\x21\\x5e\\xfa\\x40\\xfb\\x7e\\x3b\\x70\\x62\\xf8\\x1e\\x95\\x48\\x30\\xc9\"},\n{{0xf9,0x25,0xd2,0x74,0xaa,0xf1,0xfe,0x1a,0x21,0x65,0x62,0x37,0x38,0x5e,0x97,0xf7,0x78,0x3e,0x78,0x09,0x0c,0x5d,0x42,0x17,0xfe,0xce,0x70,0x57,0xc8,0x0f,0x42,0x6d,},{0x3b,0x0f,0xc3,0x70,0xbe,0x3a,0x4b,0x19,0xa8,0x8a,0xb9,0x98,0xc5,0x95,0x04,0xff,0xb5,0x9a,0x87,0x60,0x63,0x38,0xe6,0x73,0xdf,0x5b,0x3f,0xab,0x4d,0x9b,0xfb,0x8d,},{0x79,0x54,0x9a,0x31,0x7d,0x10,0xa0,0xbe,0x32,0x2a,0x94,0xa1,0x51,0xad,0x11,0xe7,0x7e,0xfc,0x48,0x36,0xcc,0x80,0x06,0xa8,0x50,0x81,0x27,0x3d,0x76,0x02,0xa6,0x38,0x96,0x3a,0x9c,0xaf,0x19,0xc3,0xed,0xf1,0xe2,0x5f,0xad,0x1e,0x9d,0x68,0x70,0x1a,0x71,0xde,0xa7,0x27,0xda,0x6a,0x5c,0x5b,0xca,0xc9,0x33,0x95,0x89,0x22,0x4b,0x05,},\"\\x14\\x3c\\xaa\\xfa\\x5f\\x62\\xb1\\x3e\\x43\\xdf\\xfa\\x49\\xd4\\x20\\xfa\\x99\\xf7\\x71\\xb1\\x92\\x6d\\x40\\xd6\\xcb\\x2b\\xbb\\x42\\x7f\\x27\\xb6\\xc2\\x66\\xeb\\x3d\\xeb\\x2d\\x8b\\xbb\\xd4\\x7b\\x82\\x14\\xad\\x40\\x25\\x1c\\xb1\\x90\\x7a\\xd6\\x5e\\xb9\\x41\\x93\\xe5\\x4a\\xd8\\x5c\\x67\\x00\\xb4\\x18\\x9e\\x80\\xf1\\xcc\\x01\\x54\\xc6\\x3e\\xd1\\x51\\xa8\\xbb\\xbd\\x30\\xe0\\x16\\x37\\xca\\x58\\xe7\\x0a\\xa3\\xee\\x52\\xef\\x75\\xd0\\x87\\x30\\x78\\xa4\\x05\\x01\\x4f\\x78\\x6e\\xb2\\xd7\\x7b\\x7f\\x44\\x22\\xf9\\x27\\x82\\x3e\\x47\\x5e\\x05\\xb2\\x42\\x45\\xf9\\x06\\x8a\\x67\\xf1\\x4f\\x4f\\x3c\\xfb\\x1e\\xb3\\x0b\\xfe\\xde\\x7b\\x32\\x62\\x23\\x0c\\xed\\x9e\\x31\\x36\\x1d\\xb1\\x96\\x36\\xb2\\xc1\\x2f\\xdf\\x1b\\x9c\\x14\\x51\\x0a\\xcd\\x5b\\xc1\\x8c\\x0d\\xdf\\x76\\x35\\xe0\\x03\\x50\\x3e\\x6f\\x71\\xe1\\xc3\\x65\\xcd\\xfb\\x4c\\x65\\xee\\x75\\xb4\\xde\\x06\\x94\\xaf\\x87\\x07\\x63\\x74\\xd6\\x31\\xe6\\xc4\\xb8\\xe2\\x40\\xfa\\x51\\xda\\xb5\\xe1\\xf8\\x0c\\xa2\\xa0\\x6c\\x49\\xf4\\x2e\\xa0\\x9e\\x04\\x75\\xde\\xfb\\x18\\x4d\\x9c\\xde\\x9f\\x58\\xf9\\x59\\xe6\\x40\\x92\\xaa\\xc8\\xf2\\x02\\x7e\\x46\\x81\\x26\\xf2\\xfb\"},\n{{0x97,0x1f,0x80,0x6b,0xe6,0xf0,0x7d,0x41,0xbe,0x88,0x30,0xff,0x8d,0xae,0x70,0x4b,0x08,0x63,0x8a,0xd6,0xcf,0xf7,0x22,0xd8,0x43,0x25,0x38,0x12,0x7b,0x76,0x96,0x25,},{0xaf,0x6a,0xc9,0x8d,0xce,0x20,0x78,0xa6,0xc7,0x3f,0x60,0x97,0xba,0xb6,0x3f,0x20,0x5c,0xaf,0x69,0x53,0xaf,0xa2,0x84,0xd0,0x42,0xbd,0x50,0xa4,0xfc,0xe9,0x6c,0xb4,},{0x20,0x37,0xa0,0xa7,0x67,0x4b,0x84,0xff,0x27,0xd0,0xb2,0x2f,0x62,0xb4,0xba,0xc6,0x5e,0x2d,0xc0,0xf5,0xfd,0xc8,0x99,0xfe,0xb7,0x80,0x0f,0x25,0xc2,0x99,0x81,0xde,0xe6,0x41,0xc5,0xa5,0x0f,0x8b,0x94,0x10,0x97,0x0b,0x49,0xd2,0xd5,0x36,0x58,0xc8,0x9e,0xe1,0x69,0x61,0xdc,0xcf,0x53,0x91,0xa6,0x91,0x8f,0x2a,0x84,0xea,0xda,0x0b,},\"\\x01\\x34\\x55\\xd0\\x49\\xaa\\x54\\xed\\x99\\x5f\\xbd\\x94\\xe6\\x36\\x99\\x55\\x49\\x53\\x95\\xe4\\x43\\x88\\x22\\x25\\x9b\\x10\\x60\\xe9\\xa3\\x47\\x79\\x04\\x2a\\x1a\\x69\\x21\\x1f\\x6e\\xa2\\x07\\x73\\x99\\xdd\\x23\\x48\\x06\\xba\\x0b\\x35\\x3c\\xd7\\x9a\\x57\\xe1\\xc4\\x9b\\x25\\x0a\\xb2\\x71\\x06\\xdc\\xde\\x57\\x6e\\xcf\\xa1\\x15\\xea\\xe4\\x61\\xfe\\xbb\\x12\\xd2\\xda\\x25\\xff\\xcf\\x17\\xb7\\x15\\xf8\\xd9\\x5c\\x2f\\x0c\\x42\\x5d\\x5a\\x81\\xf7\\x00\\x11\\x5b\\x70\\xd4\\x9e\\x1c\\xfe\\x49\\xfc\\xaa\\x14\\xfa\\x20\\x5e\\x28\\xec\\x85\\x24\\x7f\\x1a\\x6e\\x71\\x28\\xbf\\x3b\\xb3\\x06\\x0d\\xc0\\x84\\x64\\xbd\\xa6\\x53\\x85\\x40\\xd0\\xac\\x47\\x20\\x93\\xe5\\xa0\\x72\\x0f\\xde\\x2f\\x3d\\xc4\\x78\\x8e\\x0e\\x9b\\x0d\\xbf\\xe2\\xa2\\xb5\\xf1\\xa0\\xf3\\xf8\\x0d\\xe9\\x84\\x02\\x5b\\x15\\xc6\\x5a\\xf7\\x7f\\x67\\x1e\\x1c\\x5e\\x28\\x40\\x44\\x4d\\xe5\\xc7\\xed\\xa0\\x25\\xe6\\xdc\\x1a\\x3f\\xf1\\x6e\\x26\\xcc\\x54\\xcd\\xee\\xd5\\x6b\\xe7\\x3f\\x9b\\x01\\xab\\x2b\\x1b\\xc1\\x6c\\x8e\\xf5\\x8a\\x5b\\x76\\xdd\\x47\\x28\\x78\\x07\\xe5\\xc5\\x0f\\x0d\\x7c\\x0a\\x5b\\x81\\x20\\xdf\\xde\\x64\\x5a\\x01\\x2c\\x5c\\xf1\\x14\\x91\\xbc\"},\n{{0x2b,0xb0,0x65,0x2f,0x8f,0xff,0x69,0x01,0x99,0x11,0x48,0xc6,0x8a,0x32,0x67,0x87,0x72,0x71,0x00,0x6a,0xe9,0x58,0x91,0x49,0xbb,0x20,0x68,0x50,0xcd,0xf5,0x2f,0xb0,},{0xc0,0x3b,0x77,0xbe,0x98,0x3e,0x74,0xa2,0x34,0xc1,0x98,0x64,0x96,0xb2,0x92,0xe1,0x39,0x99,0x2e,0xb7,0x52,0x9e,0x70,0xb3,0xaf,0xad,0x7a,0xe4,0xfd,0xcf,0x8a,0x66,},{0x4e,0x15,0x8d,0xea,0xae,0xc3,0xd8,0x89,0x41,0x29,0x6a,0xf2,0xd2,0x73,0x41,0x01,0x2b,0x02,0x41,0xd4,0xe0,0xf4,0x6e,0x43,0x5e,0x37,0x5c,0x98,0x75,0xe8,0x9f,0x5e,0x32,0xc0,0x57,0xb5,0x27,0xbc,0x34,0x11,0xaf,0x09,0x6a,0x77,0xbf,0xce,0xb4,0x5b,0x98,0x3e,0xfe,0x45,0x5e,0x3f,0x03,0x15,0x5d,0x6b,0xc7,0xb0,0xac,0xc8,0xe6,0x0c,},\"\\xb9\\x23\\xca\\x67\\xe3\\x96\\xd8\\x65\\x6f\\xa3\\xdb\\xce\\x82\\x89\\xa3\\x8b\\xd3\\xc1\\x28\\xce\\xfb\\x30\\xef\\xc1\\x86\\x2b\\xb9\\x44\\xb4\\x50\\x78\\x05\\x41\\x98\\x24\\xce\\x2b\\x83\\xd6\\x90\\xef\\x4c\\xf1\\x07\\x49\\x28\\x17\\x14\\x3b\\xf6\\x4c\\x02\\x49\\x89\\xaf\\x1a\\x7d\\x2e\\x1f\\x5a\\xc9\\x78\\x74\\xf8\\x6b\\xb0\\xd3\\x77\\x3f\\xf8\\x40\\xf5\\x14\\xd9\\xa1\\x39\\x4a\\x39\\x59\\xb0\\x11\\xd3\\xa6\\xb8\\x16\\xa3\\xfa\\xe5\\xde\\x17\\xb2\\xa9\\xff\\x34\\x98\\x63\\xd2\\x7f\\xbb\\xb5\\x0c\\xca\\x73\\x41\\x08\\x75\\x10\\x00\\xd6\\x35\\x8c\\xa0\\x64\\x7a\\x93\\xeb\\x49\\xe2\\xe7\\xaf\\x06\\x28\\x7d\\x48\\xf2\\xc0\\x9d\\x5c\\x1c\\x73\\xe4\\xd8\\xf7\\x7e\\xa2\\xbc\\xaa\\x73\\x56\\x79\\x5b\\x26\\x72\\x87\\x19\\xbe\\xd5\\xff\\xdb\\x82\\x15\\x78\\xbd\\x5d\\x66\\xbf\\x92\\xed\\xaf\\x8b\\x23\\x8b\\x2b\\xbd\\x7d\\x1e\\x2c\\x30\\xa7\\x87\\xf9\\x01\\xa3\\x3d\\x0a\\x76\\x66\\x9a\\x9c\\x3c\\x7f\\x2b\\x55\\x2c\\xcb\\x83\\x49\\xc7\\xde\\xd5\\xe1\\xa4\\x61\\x70\\xcf\\x28\\xe3\\x59\\xe2\\xfd\\xd5\\x4b\\x05\\xa5\\x62\\xf5\\x28\\xc6\\x8a\\x56\\x97\\x4d\\xf8\\x2d\\x46\\x66\\x37\\xc8\\xe5\\x32\\x46\\xa7\\x21\\x7e\\x43\\x86\\x80\\x1e\\x0e\\x32\\x66\"},\n{{0xdb,0x9b,0x81,0x2c,0xb3,0xc7,0xc0,0x3b,0x97,0x7f,0x48,0x7d,0x3d,0x65,0xcc,0xd9,0xcd,0x2f,0x3d,0xee,0x11,0x60,0x20,0x67,0xdb,0xfb,0x72,0xb5,0x89,0xff,0x3f,0x79,},{0xff,0xa0,0x38,0xad,0x8c,0x3b,0x37,0x8c,0xe7,0x5d,0x65,0x84,0x4d,0x08,0xe3,0xd6,0xa9,0x2d,0x19,0x4a,0x1b,0x78,0x62,0xe9,0xd9,0x72,0x0d,0x20,0x67,0x9b,0x29,0x44,},{0xa6,0x28,0xa7,0x74,0x21,0xb2,0xab,0xab,0x57,0x6e,0xed,0x35,0xd2,0xee,0x3d,0x14,0x56,0x1b,0x21,0xfa,0x14,0xa6,0xe2,0xfa,0xc2,0x63,0xc3,0xea,0xdd,0x79,0xf2,0xfc,0x06,0x69,0xf9,0x42,0x9b,0x91,0x0b,0x84,0x22,0xb4,0xb2,0x9a,0xc0,0x26,0xa4,0x2e,0x98,0xd1,0x81,0xbe,0x35,0x07,0xc5,0xed,0x7c,0x74,0x8a,0x1f,0xdc,0xf1,0xd8,0x07,},\"\\xa7\\x00\\x92\\xc7\\x69\\x7c\\xd4\\xa2\\x09\\x56\\x7c\\x38\\xba\\x7f\\xb7\\x1a\\xa8\\xf1\\x5e\\x58\\x27\\xa2\\x08\\x76\\x92\\x39\\x43\\xfd\\x6a\\xdc\\x65\\x9c\\x98\\x67\\xac\\x6f\\x58\\xa6\\x1d\\xc7\\xce\\xc3\\xd3\\x62\\x41\\x16\\x82\\x00\\x0c\\x1a\\x9a\\xd1\\x29\\x5e\\xb8\\xb7\\x0f\\x24\\x2d\\x86\\xb5\\x86\\x5e\\xb7\\x6b\\x87\\xe3\\xf2\\xc6\\x94\\x1d\\x26\\x12\\xee\\x3b\\xcd\\xe8\\xf1\\x97\\x65\\x56\\x67\\x33\\x15\\x2e\\xf5\\x4e\\x95\\x69\\x09\\x43\\x28\\x5f\\x78\\xb3\\x75\\xf4\\x03\\x65\\x85\\xd4\\x73\\x9d\\xee\\xde\\xef\\x6d\\x94\\x6d\\xb6\\x1c\\xa4\\x58\\xef\\x4f\\x65\\x0d\\xa9\\x63\\xc3\\x85\\xe2\\x9d\\xfd\\xee\\x41\\x5f\\xe4\\x95\\x84\\x5f\\x55\\x19\\x7a\\x87\\x0f\\x8c\\xde\\xb5\\xa0\\x10\\xba\\x6b\\xbb\\x32\\xbf\\x1a\\x58\\x8c\\xc7\\x74\\xd4\\x89\\x01\\x84\\xc4\\xb2\\x92\\x4a\\x5b\\x80\\x73\\x31\\x3b\\xce\\x22\\x65\\x85\\xf1\\xad\\xfc\\x22\\x9c\\x90\\xbc\\x6c\\xc9\\xd2\\x12\\xe6\\x2f\\x05\\xd3\\x3b\\xed\\xac\\x96\\x1d\\x77\\xcf\\x8c\\x26\\x20\\xe4\\x51\\xde\\x81\\x7f\\x8c\\x1b\\xb1\\x6a\\x2c\\x59\\xff\\x80\\x4b\\x63\\x5a\\x73\\xa8\\xcf\\x8c\\x18\\x1b\\x3f\\x94\\x01\\xc3\\xb6\\x43\\xd1\\x8a\\x2f\\x70\\x6e\\xa9\\xca\\xe4\\x70\\x71\\xa6\"},\n{{0xce,0x37,0x9b,0xbe,0x2f,0xa8,0xab,0xcb,0xa5,0x1c,0x7a,0x75,0x43,0xde,0x5b,0x71,0x80,0x77,0x1b,0x3c,0x44,0xbc,0x6b,0x41,0x89,0x2e,0x7b,0x88,0x97,0x9b,0xab,0x90,},{0x7f,0x3c,0xff,0x89,0xf4,0x1b,0xab,0xf4,0xfa,0x64,0xcb,0xa3,0x3a,0x5b,0xb1,0x7f,0x41,0x3b,0xbf,0x2a,0x1e,0x11,0x2b,0x50,0xa8,0xe9,0xb1,0xf8,0x21,0xd8,0x49,0xbf,},{0xda,0x98,0xdf,0xb1,0x89,0x38,0x5b,0x2c,0x85,0x3b,0x6c,0xf3,0x75,0x73,0x80,0x46,0xa8,0xf2,0x7e,0xf2,0x79,0x74,0xab,0xce,0xce,0xa1,0xdb,0x02,0x98,0x9b,0x95,0x1f,0xe4,0x33,0xa6,0xce,0x1e,0x22,0x5b,0x3f,0xa8,0x20,0x32,0xfe,0x06,0x0a,0x7d,0x3f,0x6c,0x18,0x3f,0xd1,0x15,0x7f,0x79,0x1a,0x06,0x4b,0x40,0x76,0x50,0x57,0x16,0x00,},\"\\x00\\x1a\\x74\\xf0\\x95\\xc8\\x14\\xd3\\xbe\\xed\\x67\\xa8\\xd1\\x5f\\xc1\\x8e\\xfe\\x23\\x5d\\xc3\\xf6\\x45\\x78\\x12\\xa4\\x03\\x9b\\x7a\\x46\\xfe\\x9a\\x0e\\x9d\\xe8\\x1a\\x7a\\x4e\\x5f\\xba\\xb5\\xeb\\xe9\\xe1\\xe4\\x80\\x1b\\xd1\\x1b\\x45\\xc9\\xf7\\xad\\x06\\x36\\xa0\\x9b\\xff\\x42\\x16\\x4b\\xe5\\x74\\x9a\\x04\\xc0\\x2f\\x0a\\xb6\\x1f\\x0e\\xcf\\xdf\\xef\\x79\\x9b\\x82\\x7d\\xa6\\xa2\\x74\\xc8\\xd3\\xb3\\x9f\\x2e\\x38\\x05\\xa6\\x79\\x12\\x87\\xee\\xdb\\x23\\x14\\xd3\\xf8\\x42\\xb5\\x58\\xb9\\xb4\\x89\\xaf\\xe1\\xed\\x37\\xbb\\xbc\\xfc\\x5e\\x60\\xa4\\x31\\xd5\\xac\\x60\\xb3\\x9e\\x94\\x6d\\x90\\x3d\\x6b\\xf6\\xb1\\x40\\xe1\\x2c\\x7e\\x07\\xf9\\xed\\x7a\\xc4\\x6a\\x39\\x99\\xc6\\x24\\x5c\\x8a\\xb1\\xbd\\xb2\\x18\\x79\\xa3\\x17\\xa3\\xdc\\xd2\\x57\\xa5\\xc4\\xf3\\x49\\xb7\\xf5\\x9e\\x4e\\x43\\xd6\\x2d\\x9f\\x1c\\xd1\\x6f\\x51\\x8f\\x1c\\xa6\\xca\\xd3\\x7e\\x2c\\xb2\\x0f\\x25\\x98\\xc4\\x13\\x42\\x91\\xc6\\xb8\\xa9\\x8a\\xae\\x52\\x47\\xe2\\x6e\\xef\\xb7\\x6a\\xa3\\x8c\\x9c\\x82\\x31\\xc1\\x7e\\x9d\\xbf\\x27\\x1c\\xec\\x80\\xfb\\xa5\\xb4\\xa8\\x34\\xbd\\x9b\\xe8\\x1e\\xa8\\x41\\x63\\x7a\\xa9\\xcd\\xd4\\xc4\\xbf\\x26\\xd7\\xad\\x24\\xca\\x3c\"},\n{{0x2b,0x2e,0xe8,0x09,0xd6,0x47,0x02,0x3e,0x7b,0x77,0xfc,0x54,0x1f,0x44,0x87,0x5a,0x35,0xfa,0x94,0x1d,0x37,0xf7,0xc5,0xb2,0x1f,0xd3,0x49,0x34,0xd2,0x39,0x19,0x35,},{0x2c,0x29,0xd5,0x3e,0x1b,0xf2,0xc7,0x87,0x9d,0x73,0xd2,0x0b,0xa8,0x8c,0xa0,0x7a,0x0b,0x21,0x6d,0x7f,0x6d,0x05,0xd9,0x36,0x63,0xa6,0x5c,0x3d,0x9e,0x10,0x63,0x3a,},{0x12,0xd9,0x06,0x85,0x77,0x55,0x72,0xc9,0xea,0xbc,0x9b,0xe2,0x57,0x4c,0xa9,0xae,0x66,0xf0,0xe6,0x52,0xe5,0x78,0xb2,0x17,0x36,0xcd,0x6e,0x65,0x4f,0x7c,0x6b,0x15,0x45,0x88,0x3d,0x56,0xbf,0x76,0x0c,0xcf,0xc3,0xcf,0x87,0x54,0x4e,0x00,0x04,0xc7,0x98,0x06,0x12,0x57,0xe1,0x30,0x03,0x0c,0xb9,0x97,0xa7,0x88,0x36,0x9a,0x9a,0x05,},\"\\xc4\\x14\\x7d\\x64\\xeb\\xfd\\xa4\\x1a\\x1b\\xe5\\x97\\x72\\x62\\x95\\x81\\x04\\xe9\\x40\\xc3\\x87\\x6b\\xcd\\x5b\\x69\\x56\\xac\\xfd\\xec\\x32\\xc6\\x60\\x91\\x4d\\x62\\x62\\x3c\\x21\\x06\\x63\\xcb\\x2c\\xbe\\x62\\x49\\xd7\\xf5\\x27\\x49\\x91\\xc6\\x0e\\x95\\x0e\\x8e\\x28\\x09\\x04\\x99\\x53\\xc6\\x95\\x81\\xd2\\x46\\x9f\\x4f\\xe9\\x82\\xc7\\x43\\x4f\\xed\\xd9\\xd4\\xe0\\x0a\\xe0\\x88\\x96\\xd6\\x2c\\xc1\\xfb\\x98\\x4d\\xd2\\x33\\x15\\x0c\\xc2\\x48\\x3e\\x15\\x9c\\xff\\x40\\x97\\xdf\\x8c\\x03\\x6b\\xb6\\x33\\x00\\x3a\\xbb\\xfb\\xe1\\x8c\\x8f\\xa7\\x9b\\x5a\\x22\\x27\\x08\\x38\\x12\\x3f\\xc9\\xbe\\x39\\xb8\\x89\\x2c\\x80\\x38\\x4a\\x38\\x50\\x28\\xc1\\xa8\\x1e\\xc5\\x8c\\x8f\\x21\\x06\\x0e\\x78\\xaf\\xd2\\xc0\\x4b\\xfd\\x2d\\x30\\xca\\x39\\x77\\xc6\\xed\\xad\\x51\\x8c\\xc1\\xe2\\x00\\x4c\\xdc\\x14\\xbf\\x3d\\x15\\xf5\\xf5\\x28\\xe5\\xaf\\x27\\x7f\\xa1\\x82\\x27\\x58\\x70\\xe5\\xc0\\x12\\xf5\\xf8\\x2f\\xb1\\xaf\\xd0\\x4e\\xdd\\xe4\\x57\\x8d\\xdd\\x21\\x60\\xa1\\xa3\\xdb\\xc0\\x50\\xe8\\x0b\\xdd\\x81\\x1b\\xc8\\x8e\\xad\\x79\\xbf\\x93\\xf0\\x10\\xcd\\x0f\\xd4\\x43\\x3d\\x0b\\xc3\\x48\\xda\\xcf\\xd0\\x94\\x7c\\xce\\xda\\x62\\xbf\\xa4\\x97\\x11\\xd0\\x13\"},\n{{0x4e,0xa1,0x8d,0x6b,0x4a,0xf8,0x05,0x3b,0x88,0x5e,0xc1,0x88,0xbe,0x48,0xde,0xb8,0x6f,0xfb,0x2a,0x69,0xa4,0xce,0xc8,0x66,0x37,0xbb,0xd7,0xb4,0x1b,0x80,0x7c,0x46,},{0xe5,0x98,0x60,0x59,0x97,0x62,0x33,0xed,0x77,0x38,0x2c,0x3d,0x99,0x59,0xf3,0x4e,0x31,0x79,0x62,0x69,0x65,0x53,0xe8,0x6e,0xd1,0xe5,0x90,0x2c,0x4b,0xed,0xd1,0x67,},{0x27,0x57,0x0c,0x00,0x2a,0x48,0x7d,0x00,0x0c,0xa3,0x92,0x8b,0x83,0xcb,0x43,0x19,0x72,0x2c,0x46,0xdf,0xb4,0xcc,0xa2,0x60,0xde,0x79,0x0e,0xc0,0xe3,0xc1,0x93,0x26,0x88,0xf8,0x73,0x62,0x95,0x28,0x18,0xb5,0x4f,0x51,0xbc,0x7a,0xee,0xb2,0x63,0xf9,0x60,0xbc,0x0d,0xa8,0x96,0x4b,0xf3,0x12,0xef,0x93,0xe8,0x1f,0x06,0xc8,0x0b,0x04,},\"\\xe9\\xc8\\x9a\\x1a\\x11\\x19\\x37\\x32\\x06\\xce\\x40\\xed\\xe3\\xb8\\x9a\\x82\\xf8\\x94\\x62\\xa1\\xde\\xe9\\xe7\\x89\\xe9\\x84\\x5e\\xec\\x21\\xf5\\x71\\xc0\\xfa\\xef\\xd4\\x30\\xad\\x33\\x8e\\x4a\\x72\\xc0\\x47\\xa3\\x9a\\x42\\x59\\x58\\x03\\x87\\xfb\\x9a\\xac\\xad\\xdc\\x36\\xa2\\xb5\\x1e\\x7b\\x60\\xa8\\x7c\\xa1\\x32\\x1f\\xf8\\x06\\x79\\x4c\\xd6\\xdd\\x45\\x49\\xa4\\xdf\\x45\\xc2\\xda\\xe3\\xe5\\x39\\xc4\\xd7\\xd0\\x6b\\x6e\\x6e\\x9f\\x46\\x6f\\xfc\\xa2\\xfa\\x49\\x78\\xce\\x3d\\xc7\\x92\\xe4\\x4a\\x62\\x83\\x88\\x0c\\xd1\\x38\\xa7\\x5a\\x22\\x6f\\x98\\x5d\\xa4\\x1f\\xfd\\xc0\\xe3\\x2a\\x5a\\x85\\xc8\\x5f\\xe9\\xa4\\x3a\\xe7\\x8f\\xcf\\xe5\\x7f\\x4d\\xd7\\x54\\x0a\\x6d\\xd3\\x92\\x4a\\x49\\xab\\x39\\xeb\\x69\\x95\\x0d\\x42\\x11\\x51\\xd9\\x6b\\x1e\\x4f\\xd3\\x93\\x58\\x90\\xf6\\x34\\xcd\\x52\\xa7\\x3a\\x75\\x5f\\x5c\\x2f\\xb7\\x2f\\x9c\\xd5\\xa2\\xe6\\x7e\\xa9\\x30\\x91\\x5e\\x13\\x3b\\x47\\xcf\\x6b\\x7c\\x10\\xa9\\xd8\\x89\\xc6\\xaf\\x6b\\x5f\\x1f\\x4f\\x51\\x09\\x4d\\x27\\xfb\\xba\\x22\\x8a\\xc2\\x26\\x8b\\x34\\x40\\x27\\xfd\\x49\\xe4\\x26\\x34\\x3c\\xc0\\x13\\x43\\x99\\xb4\\xb5\\x10\\xaa\\xea\\x50\\x23\\x4d\\xf4\\x2c\\x37\\xfa\\x1c\\x4f\\x4d\\x0e\"},\n{{0xfc,0x1b,0x75,0xd1,0x7d,0x38,0x07,0x21,0x73,0x51,0xd2,0xaa,0x40,0xd9,0xb0,0x4f,0x52,0x5b,0x89,0xed,0x3f,0x5f,0xcd,0xb3,0x11,0xbe,0xc2,0xae,0xc5,0xcb,0x7e,0xce,},{0x55,0xe4,0x84,0xe7,0x74,0xa4,0x39,0x2a,0x9d,0x6e,0xef,0xf8,0x35,0xa8,0xfb,0xb2,0x32,0xcf,0x62,0x76,0xa8,0x9c,0x74,0xfc,0x0d,0x1b,0xb2,0x04,0x5a,0x8b,0x21,0xbe,},{0x9a,0x68,0xd1,0x51,0xfe,0xa3,0x90,0x98,0x93,0x35,0x9e,0x60,0xb9,0x6b,0x68,0xb2,0xa3,0xe2,0x94,0x6f,0x2b,0x47,0xb8,0x75,0x39,0x8a,0x1e,0x39,0xeb,0x01,0x46,0x3d,0x35,0xea,0xe7,0xd9,0x76,0xf8,0x33,0xa7,0x62,0xb5,0x1f,0x27,0x26,0xee,0x0d,0xcc,0xad,0x5c,0xe3,0x60,0x05,0x64,0xfd,0x9d,0xd5,0x8c,0x23,0x80,0x7f,0xdf,0xfd,0x05,},\"\\xd0\\x31\\xbd\\x11\\xda\\x30\\x80\\x97\\xe3\\xbe\\xb6\\xff\\xdb\\x26\\x00\\xee\\x6a\\x19\\x3c\\xa6\\xd8\\x32\\x45\\x01\\xc9\\x72\\xb1\\xa2\\x51\\x66\\xfa\\x7a\\x36\\x9f\\x5b\\xc8\\x82\\xea\\x45\\x61\\x2c\\xf0\\x25\\x80\\x25\\x4d\\x21\\xb4\\x0b\\x03\\x63\\x23\\x7e\\x83\\x5d\\xae\\x26\\x56\\xc1\\xb7\\xf4\\x73\\x6e\\x88\\xbe\\x53\\xd6\\xb1\\x19\\xc0\\x7f\\x57\\x29\\xbb\\xd8\\x2f\\x67\\xde\\x03\\x58\\x83\\x22\\x87\\x92\\x43\\xc5\\x99\\x0a\\x7e\\x61\\xf5\\x69\\x07\\xb2\\x41\\x71\\xa5\\x7c\\xbb\\x0b\\xbe\\xfb\\xa2\\x31\\x62\\x77\\xaf\\x93\\x26\\xf9\\xcb\\xf3\\x53\\x8b\\xcb\\xf6\\x78\\x0b\\xe4\\x18\\x25\\xa2\\xca\\x77\\x4b\\x41\\xbd\\xb1\\xcd\\x5c\\x60\\x88\\x51\\xec\\x23\\x39\\xeb\\x2f\\x4f\\xee\\xdd\\xaa\\x89\\x1a\\x63\\x26\\xb2\\x9d\\x97\\xd7\\xfb\\xf3\\x11\\xe3\\xbb\\x74\\x9c\\x5d\\x4c\\x05\\x8d\\xcc\\x14\\xf4\\x52\\xf9\\x33\\x49\\x91\\xe2\\x71\\xc1\\x6d\\x65\\x08\\xc8\\x18\\x63\\x39\\x27\\xf4\\x29\\x80\\x4c\\xa7\\xa3\\x81\\x70\\xf1\\xb9\\xf6\\xbd\\x73\\xed\\x67\\x5e\\x11\\xe8\\xc0\\xd3\\x21\\xfa\\xc9\\x12\\x73\\x0b\\x4b\\xa2\\xf7\\xc4\\x28\\x53\\x4a\\xdc\\xaa\\x4d\\xad\\x31\\x4c\\x55\\x80\\x7e\\x6c\\x64\\x2d\\x49\\x4c\\x6b\\x2f\\x0e\\x8c\\xd1\\x29\\x77\\x5c\\xc0\"},\n{{0x0d,0x0b,0xf4,0xd4,0x2e,0xf8,0x10,0xb1,0x79,0xeb,0x84,0x17,0x71,0xde,0x6d,0xbd,0xe7,0x63,0x61,0xca,0xf8,0x94,0xe4,0x2a,0x14,0xb1,0xe0,0x97,0x87,0xea,0x3e,0x06,},{0x71,0x71,0x51,0x0b,0x43,0xfc,0x17,0xef,0xa8,0x0b,0x15,0xe3,0x20,0xb1,0xb0,0xa4,0x08,0x33,0x25,0x42,0xe0,0xd3,0x6e,0x4a,0xb9,0xa6,0x49,0xcd,0x94,0x1b,0x5a,0xed,},{0x24,0x44,0x6b,0xdf,0x03,0x41,0x6a,0x4d,0x08,0x61,0x44,0x66,0xfb,0x85,0x1d,0xb5,0x0e,0x91,0xa6,0x23,0xca,0xcd,0x1b,0x0b,0x35,0x66,0x0f,0x3c,0xf9,0x33,0x20,0x0e,0x15,0x30,0x87,0x08,0xda,0x34,0x99,0xa5,0xad,0x25,0xf0,0xf0,0x30,0x6b,0x79,0x42,0x76,0x2e,0x20,0xa7,0x65,0xb7,0xca,0x9b,0x90,0x1c,0x75,0x0b,0x3a,0x95,0x32,0x0a,},\"\\x8e\\x21\\x79\\x97\\x5d\\x0a\\x8e\\x5a\\x69\\xfe\\x87\\x5a\\x3c\\xb1\\xe7\\x9a\\xec\\x49\\xc3\\x85\\x3e\\x30\\xdd\\x03\\x20\\xfe\\x3e\\xbf\\xb6\\x38\\xb8\\x2f\\x89\\xad\\x16\\x43\\x03\\x6b\\x37\\xe5\\x6e\\x0b\\x55\\xe0\\xa9\\xe2\\x2a\\x4e\\x28\\x3d\\x7a\\x27\\x48\\x5c\\xe9\\x10\\x2d\\xb6\\x78\\x7d\\x66\\x28\\xb7\\x79\\x13\\xe1\\x08\\x96\\x77\\x4e\\x49\\x5c\\x26\\xe8\\xba\\xb2\\x6e\\x7f\\x9a\\x94\\xd2\\x9a\\xaa\\x36\\xae\\xc9\\xc2\\x6a\\xd3\\xf5\\x0e\\x5d\\x8c\\x0b\\x76\\x98\\xbb\\x5f\\x01\\xb8\\x76\\xd0\\xd6\\x5f\\xcf\\x5e\\x9e\\x32\\xcd\\x7b\\x89\\x82\\x9e\\xd0\\x5b\\x0b\\x8f\\x63\\xa9\\x38\\x58\\x98\\x5b\\xc9\\x56\\x9f\\xce\\x42\\x9f\\xd3\\x7a\\x21\\x1a\\xbe\\xd6\\x50\\xf5\\x85\\xc3\\xb5\\x59\\x00\\x44\\x3b\\x6c\\x5d\\x6e\\x8a\\x48\\xba\\x67\\xde\\xee\\xd0\\x7b\\x76\\xe9\\x69\\xfc\\x88\\x43\\x0f\\xce\\x27\\x09\\xc0\\xbb\\x5c\\xe9\\x26\\xab\\x7f\\x44\\xe0\\xcd\\x79\\xf4\\xec\\x35\\x9e\\xf7\\x67\\x48\\x88\\x3f\\xcc\\x3d\\x02\\x6e\\xdd\\x06\\xc8\\xb9\\xcb\\xa5\\x4b\\x99\\x0d\\x30\\xaa\\x41\\xf1\\x44\\x8a\\x10\\x89\\x3f\\xb0\\x53\\x92\\x80\\xc5\\x99\\xd4\\x23\\x61\\x43\\x3a\\x34\\xcd\\xaf\\xd8\\xeb\\xdd\\x92\\xef\\xb9\\xc3\\x8a\\x36\\xda\\xf4\\xc7\\x40\\x60\\xc6\\x96\"},\n{{0x57,0xb5,0x19,0x4d,0x26,0xab,0xe4,0xab,0x21,0x16,0xc0,0xf0,0x3d,0x23,0xdb,0xe1,0x16,0xd4,0x88,0x25,0xa2,0x5e,0x77,0xd6,0x46,0x48,0xb4,0x36,0x92,0xae,0x25,0xbf,},{0x49,0x9c,0x02,0xdb,0xad,0x2a,0x4e,0xab,0x3b,0x6f,0xf1,0xab,0xa3,0x94,0x4b,0x91,0xc3,0xf2,0x73,0xa3,0x82,0xc5,0x48,0xa6,0xf3,0xa1,0x9c,0x83,0xf0,0xa8,0x67,0x24,},{0x4c,0x73,0x45,0x96,0x0c,0x8f,0xd4,0x8a,0x7d,0xea,0xd7,0x1d,0xbd,0x61,0x90,0x84,0x68,0xef,0xa8,0x65,0xa1,0x35,0x56,0x8c,0x8f,0x9c,0xa0,0x05,0x54,0x83,0x46,0x86,0x17,0xa7,0xe3,0x35,0x84,0x0f,0x57,0xc6,0xcd,0x8f,0x2c,0x98,0x05,0xcd,0x47,0xa9,0xd7,0xcd,0xfd,0xe5,0x3d,0xa8,0xef,0x4f,0x1a,0xdb,0xb6,0xf6,0x98,0xaa,0xf1,0x00,},\"\\xb4\\x81\\x3c\\x9d\\x13\\x21\\x5f\\xe9\\xf6\\x3a\\x78\\xff\\x7a\\xc9\\x51\\x73\\xeb\\x81\\x0b\\x46\\x13\\xf0\\xf4\\x8d\\x68\\x76\\xb2\\xbd\\x3b\\x2c\\x72\\xbc\\x7d\\x98\\xcb\\x1a\\xc3\\x2b\\xc4\\x1c\\xa4\\x7f\\x09\\x89\\x6f\\x79\\x20\\x4e\\xcf\\xb8\\x26\\x4c\\xe8\\xf3\\xc3\\xe7\\x6d\\xc1\\x24\\xda\\x8d\\xdc\\x6e\\x0d\\xfc\\x1e\\x13\\xb5\\xa5\\x29\\xf2\\x0c\\x82\\x61\\x3f\\xb9\\xa8\\x2e\\x5f\\x5d\\x77\\x32\\x6a\\x86\\x1f\\xae\\xda\\xbc\\x73\\x25\\xc5\\x9a\\xf3\\x3d\\xae\\x67\\x44\\x02\\x5e\\x64\\x97\\x74\\xfc\\x4f\\x79\\x13\\x4b\\xf9\\xf6\\xe3\\xd5\\x87\\x5d\\xd9\\x1b\\xc8\\xa1\\x4c\\xc3\\x6a\\x66\\x28\\x3d\\x01\\xd8\\xd1\\x08\\xc1\\x33\\x27\\xec\\xa5\\x30\\x57\\xba\\x50\\xbf\\x21\\x0c\\x19\\xf1\\x39\\xde\\x64\\x94\\x98\\x26\\x46\\x19\\x8a\\x12\\x46\\xc2\\x71\\xb0\\xa3\\x68\\xc1\\x0a\\xab\\x95\\xcd\\x89\\x61\\x23\\x5d\\x74\\x2d\\xf4\\x54\\x5b\\xe6\\x8b\\xd0\\x10\\xdc\\x0d\\xb2\\x3b\\x67\\x3e\\x62\\x36\\x09\\xe4\\x20\\xee\\x76\\xb1\\x05\\x6c\\x52\\x0f\\x9c\\xe8\\xfb\\xe8\\xee\\x18\\x63\\xdf\\x97\\xd1\\x7b\\x71\\x74\\x63\\x6c\\x3a\\x2b\\x61\\x22\\x95\\x09\\x19\\x48\\x81\\x0d\\x1d\\x4b\\x8a\\x58\\x43\\x76\\x0a\\x28\\x87\\xdc\\x55\\xef\\x51\\x2a\\xf0\\x41\\xec\\x54\\xfa\\xd3\"},\n{{0x06,0x8d,0x27,0xb2,0x1e,0x2a,0xcf,0xcc,0x19,0xc3,0xe9,0x67,0x3d,0xd4,0x41,0x42,0xd9,0x8a,0xac,0xae,0x89,0x49,0x30,0xe2,0x0c,0xa0,0x67,0x43,0x9e,0x74,0x9a,0x79,},{0xe2,0x2d,0xdd,0x39,0x6f,0x95,0x5b,0xb9,0x0e,0x28,0x47,0x76,0xaa,0x76,0xe9,0x21,0xe5,0x06,0x99,0xd0,0xca,0x89,0x14,0xa9,0xb7,0xb8,0x41,0xeb,0x5f,0xf4,0x7d,0x6d,},{0x0c,0x17,0x3c,0x48,0x8a,0xd0,0x01,0xcb,0xb9,0xc4,0x3d,0x7b,0x30,0xa7,0xc0,0x71,0xa2,0xfd,0xb0,0x8c,0xf7,0xf3,0x7d,0xaf,0x71,0xd7,0xae,0x71,0x28,0xdc,0x0d,0x43,0xf0,0xf0,0x95,0xb2,0x92,0x9c,0x54,0xb7,0x73,0xed,0x4a,0x1f,0x0b,0xf0,0xdc,0x4f,0x36,0x4f,0x06,0x01,0xe8,0xd5,0xae,0x06,0x2f,0x5b,0x78,0xc0,0x5b,0xfb,0xc7,0x02,},\"\\x1c\\x68\\x15\\x42\\x3d\\x1a\\x2c\\x5e\\xbe\\x88\\x28\\xd1\\x64\\x65\\x27\\xc1\\x7b\\x20\\x06\\xe5\\x47\\xf0\\x16\\xb5\\x35\\x0f\\x01\\x0d\\x79\\xb1\\x3d\\xf4\\xfb\\x8c\\x6e\\xd5\\x7b\\xa9\\xc2\\x6c\\x3c\\xb0\\xe0\\xa6\\x41\\x78\\xb6\\x50\\xa3\\xea\\x54\\x44\\xa4\\xfa\\xd5\\xb2\\x0a\\x3e\\xb8\\xca\\xa7\\x02\\x63\\x40\\x11\\xcf\\x78\\x92\\xa0\\x72\\x7b\\x6e\\x81\\x50\\xb0\\x77\\x04\\x29\\xa3\\x7a\\x8a\\x0b\\xb3\\xa7\\xed\\xb8\\x91\\xa7\\xc9\\x02\\x40\\xbc\\x03\\x60\\xb1\\x4e\\x6d\\xd7\\x70\\xa9\\x90\\xb3\\x1b\\x31\\xf3\\x3d\\xdb\\xf6\\x53\\x98\\x8f\\x82\\x74\\x2e\\x5e\\xec\\x31\\xb2\\x73\\x68\\xeb\\x0e\\x4f\\x1e\\xcf\\x4d\\x67\\x6f\\x49\\x21\\x4a\\x52\\x0d\\x1e\\x5b\\x2b\\xbb\\x59\\xac\\x2e\\x13\\x26\\x7e\\x07\\xa0\\xcb\\xac\\xbe\\xd9\\xf9\\x4d\\x74\\x73\\xed\\x69\\x78\\x28\\xb0\\x92\\x8f\\xcc\\x61\\x6e\\xe0\\x2e\\x51\\xfc\\xd8\\xdb\\x4d\\x8f\\x75\\x33\\xb7\\xb1\\x39\\xa0\\x5e\\x06\\xf9\\xe0\\xea\\xe3\\x29\\x93\\xe3\\x02\\x5a\\xef\\x05\\x90\\xb3\\xfb\\xb4\\x29\\x2a\\x3a\\xc4\\x07\\x65\\xe8\\x58\\x4e\\xad\\x00\\x26\\x6a\\xcd\\xcb\\xdd\\xe1\\x45\\x7a\\x03\\xb7\\xd5\\x7b\\xd5\\xc9\\xe6\\x4f\\xb0\\x6b\\x64\\xa5\\x0f\\x35\\xf0\\xa1\\xec\\x34\\xb6\\xdd\\xbd\\xe7\\x67\\xb9\\x6f\\xfd\"},\n{{0xa3,0x4d,0x52,0x56,0x31,0x59,0xe0,0x72,0x3e,0x9f,0x3f,0xd1,0x33,0xbd,0x96,0xe2,0x0a,0xda,0xe6,0x23,0xf8,0xc7,0x98,0x01,0x3b,0xc3,0x6b,0x44,0x14,0x89,0xbd,0xc2,},{0x1f,0xb6,0x58,0xe6,0x45,0xde,0x6d,0x3e,0xfd,0xb0,0x83,0xa7,0x3f,0xbd,0x59,0x2f,0xcd,0x4b,0x80,0x0e,0x03,0xc7,0xbd,0x68,0x1a,0xea,0xe6,0x57,0x6b,0xfb,0xbe,0x2f,},{0x5f,0xab,0x5a,0x71,0x40,0xd4,0x78,0x73,0x68,0x43,0x05,0xaa,0x63,0x53,0xd3,0x86,0x2f,0x5f,0xc1,0x3e,0x54,0xa4,0x0c,0x95,0x63,0xcc,0xea,0xc8,0xf7,0x40,0x08,0xc6,0xc4,0x45,0x63,0x1f,0xa8,0x64,0xe0,0xf1,0xc3,0x45,0xb5,0x95,0x4f,0x80,0x05,0x6a,0xeb,0xa2,0x56,0x62,0xb7,0x88,0x27,0xb5,0xe8,0xe3,0xa9,0x43,0x78,0x13,0x72,0x0f,},\"\\x1d\\x21\\x5f\\x85\\xc0\\x89\\xf3\\x5f\\x30\\x7a\\x74\\x6c\\x66\\xc7\\xc1\\xe4\\x1d\\x6b\\xa3\\x77\\x30\\xd7\\x59\\xe6\\xe5\\x62\\x2d\\x6c\\x6a\\x19\\x8e\\x40\\xf6\\x3d\\x37\\x87\\x3b\\x71\\x5d\\xf7\\x51\\x8b\\x3c\\x6b\\xb5\\xe9\\x5a\\x46\\x77\\x26\\xb9\\x7c\\x9a\\x0f\\x8f\\x5d\\xfc\\xdb\\xfd\\x1e\\x0d\\xe3\\x57\\x66\\x1d\\xde\\xab\\x55\\x50\\x42\\xb9\\x45\\xfd\\x89\\x9f\\xad\\x6d\\x38\\x2d\\x79\\x17\\xda\\x9e\\x12\\xdf\\xbd\\xa0\\xd6\\x99\\x00\\xb3\\x97\\x51\\x65\\xa7\\x3d\\x0a\\xc9\\xde\\x01\\xfd\\x30\\x48\\xb8\\xfe\\x5f\\x0b\\x90\\xbe\\x67\\xe0\\x3d\\xc2\\x2f\\x65\\x3a\\x0a\\x13\\xeb\\x4b\\x0b\\x75\\x3f\\x3f\\x3b\\xbf\\x78\\x73\\x69\\xeb\\xd8\\xbf\\x5e\\x00\\xeb\\x78\\xbf\\x0b\\x35\\x15\\xa9\\x1e\\x68\\xb1\\xd5\\xfc\\x69\\x20\\xbf\\x4f\\x42\\x59\\xf8\\xa7\\x30\\xef\\xc7\\xf1\\x01\\x6d\\x50\\x1e\\xf6\\xfb\\x7c\\xb8\\x36\\x6f\\xc8\\xe7\\x16\\xcf\\xa5\\x0e\\xa8\\xb2\\x03\\xcc\\xa1\\xa3\\x16\\x70\\x7e\\x0b\\x0f\\xc5\\x7e\\xaf\\xce\\x82\\xd6\\x2f\\x7f\\xf3\\xae\\x04\\xac\\x8f\\xd0\\x41\\xb5\\x5b\\x19\\xa3\\x52\\xa6\\x9e\\x6d\\x4b\\x79\\xd0\\xe6\\x50\\x17\\x51\\x68\\xe3\\x4f\\xa3\\x35\\x8e\\xac\\x81\\x6c\\xec\\xf2\\xc8\\xdd\\x1b\\xf2\\xa5\\x89\\x11\\x3e\\x91\\xbb\\x81\\x8f\\x91\\xf8\"},\n{{0x58,0xdf,0xe7,0x68,0xbf,0x52,0x11,0x84,0x94,0xb2,0x99,0x75,0x15,0x4c,0xf4,0x52,0xbd,0x97,0x46,0xdc,0x7d,0xe1,0xd6,0xbc,0xd1,0x8e,0xe6,0xa0,0x5a,0xcf,0xd8,0x58,},{0x0f,0x14,0x76,0xc6,0xcc,0x2a,0x1b,0x47,0x64,0xaf,0x75,0x80,0x5e,0x77,0x34,0x1f,0x14,0xa0,0xd8,0xb0,0x9c,0x6a,0x5b,0x2e,0xa2,0x87,0xfd,0x51,0x7c,0x3f,0xa6,0xb9,},{0x97,0x71,0x37,0xa3,0x8a,0xf4,0x4f,0x4b,0x26,0x2a,0xbf,0xf7,0xe0,0x72,0x82,0x43,0x3c,0x58,0x92,0x6d,0x56,0x2f,0xbc,0x61,0x80,0xbd,0xe6,0xcd,0x94,0x97,0x86,0x1f,0xb6,0xd9,0x55,0xcf,0x38,0x3d,0x99,0x9f,0xa1,0x03,0x7b,0x8b,0x17,0x54,0xce,0x88,0x8c,0x9f,0xfc,0x15,0x60,0xa4,0x51,0xd0,0xe9,0xdb,0x8d,0x74,0xd2,0x94,0x06,0x04,},\"\\x60\\x97\\x94\\x20\\x1c\\x4f\\x6f\\xaf\\x48\\x87\\x90\\xd6\\x1d\\xbf\\xf3\\xf4\\x1b\\x32\\x8c\\x5b\\x06\\x95\\xcb\\xe9\\xaa\\x8a\\x13\\x6d\\x72\\xb4\\x97\\x7b\\x21\\xb5\\x00\\xf2\\x16\\xe9\\xf3\\x21\\x68\\xad\\xa8\\xc1\\x3b\\xff\\x25\\x32\\x76\\x47\\xe3\\x0d\\x8a\\x24\\x4d\\x74\\xd8\\x83\\x03\\xab\\xc9\\x0b\\x7f\\x71\\xaa\\x07\\xca\\x04\\xd1\\x7b\\xc8\\xa0\\x16\\x7d\\x6e\\x63\\xfb\\x88\\xba\\xa1\\xda\\xb8\\x1d\\x50\\xf1\\xe9\\x1f\\x46\\xf5\\xaf\\x77\\xf2\\xe8\\x40\\x8b\\x82\\x63\\x36\\xa3\\x50\\x52\\xef\\xff\\xdf\\x4a\\xf7\\x95\\x96\\xaf\\x1b\\xb2\\x25\\x9f\\x83\\xc1\\xbc\\x10\\x9c\\xfd\\xc3\\xdd\\x50\\xfd\\x96\\xd3\\x10\\xf2\\x7e\\xa4\\xc6\\xc7\\x69\\x0f\\x21\\x81\\x5e\\xa9\\x2b\\xd7\\x93\\x89\\x68\\x0c\\xfe\\x3e\\xd4\\x0c\\x80\\x18\\x11\\x90\\x68\\x8d\\x24\\x22\\x2d\\x9a\\x1e\\xd5\\x2c\\xe6\\xa1\\x6b\\x41\\xdb\\xd9\\x10\\x7e\\xb6\\xd2\\xe3\\x59\\x4e\\x44\\x94\\xd7\\x5d\\xd7\\xc0\\x89\\xe3\\xb2\\x6f\\xfd\\x00\\xd1\\x00\\x3c\\x92\\xc4\\xc3\\x9a\\xe5\\x38\\x2e\\xf9\\x29\\x14\\x91\\xa8\\x80\\xca\\x4e\\xc3\\xac\\x2b\\x86\\xe6\\x67\\x19\\xb9\\x2b\\x6f\\x7c\\xea\\x2c\\xb0\\xbb\\xb1\\xcf\\x62\\x4d\\x0d\\x1a\\xbe\\xae\\x55\\x6e\\x5f\\x73\\x90\\x9d\\xd5\\x46\\x27\\x70\\x37\\xec\\x97\\x2f\\xd4\"},\n{{0x5a,0x63,0xef,0x9b,0xd7,0xdb,0xf0,0xe8,0x9f,0xef,0x15,0x59,0x83,0x65,0x9e,0x8a,0x0a,0x6c,0xa0,0x02,0xbc,0x42,0xfa,0xd5,0xa4,0x5a,0xf8,0xe0,0x28,0x19,0x23,0xf4,},{0xe6,0x32,0xf4,0xdc,0x99,0x42,0x31,0xcc,0x17,0x90,0xc2,0x1a,0xfa,0xda,0xa9,0x77,0xa5,0x89,0xb0,0xeb,0x0d,0xa1,0x9f,0xcb,0x27,0x92,0x91,0x1b,0x15,0xec,0xf8,0xaf,},{0x75,0x46,0x1f,0x99,0x65,0x0c,0x03,0x68,0x05,0x81,0x13,0xa1,0x5b,0xa1,0x6b,0xd2,0x33,0x7b,0x2e,0x63,0x3d,0xa3,0x81,0x12,0x87,0x8c,0x48,0x34,0xfa,0xc9,0xba,0x2e,0x30,0x7c,0x86,0x6c,0x02,0xaf,0x79,0xbe,0xa3,0x36,0x59,0x61,0x4c,0xbb,0x44,0x65,0xc5,0x7e,0xc3,0xef,0xfd,0x4c,0x47,0x8a,0xe3,0x8a,0x34,0xa0,0x5c,0xf1,0xed,0x07,},\"\\x79\\x6b\\xc8\\x36\\x1c\\x6e\\x8e\\xec\\x39\\x83\\x8b\\x24\\xf5\\x39\\x71\\xe8\\x20\\xf8\\x23\\x61\\xe0\\x51\\x0e\\xb4\\xde\\xf1\\xdb\\x25\\x12\\x38\\x7d\\x6b\\xf3\\x5b\\xbd\\xfa\\x31\\x88\\x79\\x20\\x94\\x35\\xd6\\x88\\x7b\\x14\\x10\\xb3\\xeb\\xc1\\x45\\x5f\\x91\\xf9\\x85\\xe0\\xfa\\xb1\\xce\\x1c\\x50\\x5c\\x45\\x55\\x76\\xbc\\xa0\\x35\\x39\\xd0\\x48\\xad\\x3a\\x0e\\xd1\\xf1\\x1c\\x73\\xba\\xc6\\x80\\x9e\\x2e\\xa1\\x47\\x97\\x5b\\xee\\x27\\xc6\\x52\\x61\\xac\\xa1\\x17\\xdf\\x0f\\xae\\x70\\x08\\xe2\\xc3\\xc1\\x30\\xbe\\xc5\\x53\\x3a\\xb8\\x93\\x51\\xc2\\x14\\x0c\\x9d\\x1a\\x62\\xbd\\xf6\\x88\\x62\\x97\\x87\\xf9\\x54\\xe1\\xc6\\x10\\xcb\\xb7\\x5e\\xdb\\x86\\x20\\x9d\\x7c\\x35\\x7c\\xd0\\x6e\\xf4\\x19\\x31\\xdd\\x5d\\xfd\\x1c\\x7d\\x40\\x7f\\xa4\\xee\\x1e\\xf2\\x93\\x93\\xbe\\xab\\x57\\x13\\x17\\x38\\x02\\xcc\\xe2\\xd5\\x62\\x29\\xcf\\xa7\\x6b\\x60\\x16\\x62\\xc4\\xd9\\xa8\\x4a\\x49\\x36\\xc5\\x2a\\xbb\\x19\\x81\\x37\\x8b\\x71\\x7e\\xb5\\x5c\\xb6\\x04\\xa6\\x8d\\x34\\xf0\\x3b\\x21\\x9f\\x32\\x22\\x6c\\xa0\\xe6\\x69\\x34\\x8a\\x2d\\x8d\\x24\\x53\\x93\\x0e\\xb6\\xe9\\xc2\\xbf\\x66\\xfa\\x4e\\x92\\xc7\\x51\\x36\\xe1\\x48\\xcd\\xb0\\x34\\x13\\x0d\\x3f\\x64\\x63\\x82\\xe1\\xc7\\x15\\x79\\xac\\x70\"},\n{{0x8b,0x2f,0x06,0x14,0x1e,0x40,0x11,0x63,0xf9,0x0f,0x67,0x4b,0x04,0xdc,0x90,0xdc,0xb6,0xdd,0x33,0x86,0x41,0x93,0x39,0x66,0x2e,0xcb,0x0d,0xff,0xad,0xf2,0x50,0x0b,},{0x54,0xda,0x93,0x4a,0x65,0x91,0x19,0x19,0x85,0x53,0xfd,0x45,0x66,0xb6,0x60,0xd8,0xd6,0x10,0xad,0xc3,0x29,0x0c,0xb8,0x48,0x29,0xc8,0x94,0x14,0x8c,0xf3,0xf6,0x7e,},{0xd6,0x8e,0x37,0x50,0xdc,0x56,0x43,0x23,0x97,0x40,0x1c,0x98,0xff,0x15,0x29,0xdb,0x9e,0xd4,0x8f,0xea,0x24,0x6d,0xd4,0xed,0x38,0x3e,0xc7,0x4c,0x1a,0x46,0x3a,0xeb,0x78,0x4c,0x87,0xb1,0xfd,0xa8,0xbb,0xce,0x97,0x0f,0xc9,0x7a,0xa9,0x80,0x7d,0xdb,0xe9,0x5d,0x41,0xfb,0x02,0x2e,0xa6,0x8c,0x1e,0x31,0x16,0x54,0xfa,0x1d,0xa2,0x07,},\"\\x1d\\xeb\\x25\\xd4\\x34\\x58\\x69\\x03\\x23\\xa7\\xd2\\x6a\\x26\\x69\\x50\\x90\\x99\\x34\\x74\\xf4\\x67\\xc6\\xfd\\xe5\\xdd\\xb3\\x4d\\xa9\\x45\\xbe\\x3c\\xea\\x2f\\x6b\\x75\\x65\\x2a\\xe2\\x1c\\xbc\\x4f\\xd2\\x27\\x63\\xa1\\xb4\\x55\\x83\\xe1\\xc3\\xe8\\x8b\\xbb\\x5f\\xea\\x20\\x49\\xb7\\x33\\x6c\\x91\\x15\\x99\\x88\\xc0\\x15\\x26\\x82\\x4c\\xa3\\xbe\\xf1\\x6b\\x36\\x2b\\x92\\x02\\xb8\\xb9\\x75\\x41\\x85\\xbd\\x61\\xbe\\xa8\\xf5\\x39\\xaa\\xdf\\x4a\\x1a\\xb1\\x35\\xfb\\xc3\\x1d\\x2a\\x8e\\x33\\x17\\x80\\x73\\x10\\x6c\\xbb\\xc0\\x2d\\x4c\\xd0\\xd3\\xc8\\xfe\\xaa\\x8e\\xb7\\x33\\x08\\x43\\x56\\x25\\x17\\x95\\xaf\\xbd\\x78\\xac\\x3c\\x4f\\x8a\\x3b\\xa1\\x9a\\xed\\x75\\x5c\\x64\\x6f\\x35\\x56\\x9c\\x7a\\x6c\\x67\\x5b\\x6d\\x69\\x18\\xe8\\x34\\x96\\x9a\\xca\\x03\\xf7\\x1a\\x2e\\x72\\xcc\\xb1\\x70\\x03\\xbb\\x75\\xb6\\x2e\\x85\\x2a\\xaf\\x58\\xb3\\xba\\xea\\x89\\xbc\\xd6\\x4a\\x32\\xeb\\x14\\xa6\\xb9\\xe1\\x0d\\xe4\\x89\\x71\\xe5\\x3d\\x0e\\x9a\\xc9\\x9a\\x78\\xf4\\x2d\\xe0\\x38\\x2e\\xf0\\xe8\\x0e\\xd3\\xcf\\xa3\\x43\\xf3\\x5e\\x4a\\x99\\x83\\xb9\\xae\\xed\\x98\\x6d\\x3a\\x57\\xf4\\x7e\\x5e\\x46\\xd4\\x0e\\x9d\\x67\\x73\\x02\\x80\\x9a\\x2d\\x37\\xe4\\xec\\x01\\x1f\\x05\\x1b\\x4d\\x03\\x1e\\xd6\\x00\"},\n{{0xdc,0x64,0x9f,0xbb,0x1b,0xee,0x0a,0x44,0x81,0x4d,0x6d,0x9e,0x90,0x80,0xd5,0xd9,0x0c,0x1f,0xc1,0x73,0xab,0x5f,0xef,0xed,0x82,0x6a,0x74,0x72,0x3a,0x77,0x4e,0x0a,},{0x02,0x14,0xc8,0x9f,0x38,0x67,0xad,0x2e,0x88,0x70,0xe5,0x0f,0x8c,0x2a,0x62,0x54,0x98,0x6d,0x9c,0x22,0x0e,0x33,0x38,0x41,0x13,0x00,0xcd,0x9c,0x64,0x04,0xd4,0xb1,},{0x0e,0x0c,0x5e,0x4e,0x18,0x43,0x75,0xda,0x4e,0xf7,0xe2,0xa2,0xe4,0x88,0x80,0x50,0xcd,0x84,0xe2,0xfe,0x21,0xd0,0x8e,0x84,0xa8,0x52,0xdb,0x2b,0xe3,0xfb,0xc3,0x72,0xc4,0x72,0xde,0x09,0x54,0xdc,0xd1,0xdc,0x11,0xae,0xc4,0x93,0xc5,0x69,0xf4,0x0f,0xc6,0xf7,0x7f,0x03,0xee,0x52,0x4f,0xb0,0x6e,0xc4,0x0f,0xaa,0x1d,0x6c,0xc1,0x0f,},\"\\x32\\x87\\x00\\xa8\\xae\\x58\\x1c\\x1e\\xdc\\x4e\\x2c\\x00\\xc7\\x8b\\xf4\\x60\\x60\\x97\\xf9\\xbd\\x75\\xaa\\xde\\x20\\x5a\\x24\\x3c\\x5f\\xd7\\x43\\x4d\\x62\\x22\\xda\\x93\\x7e\\x28\\x81\\xa2\\xe3\\xc5\\x74\\x35\\x6d\\x4d\\x56\\x79\\x30\\x1d\\xa9\\x9e\\x11\\xcf\\x74\\x9c\\x27\\x92\\x1c\\x8c\\xaa\\x2a\\xb2\\xa5\\x64\\xd8\\x7c\\x5d\\xf8\\xec\\xf1\\xa7\\x2b\\x68\\x01\\x84\\x82\\x4f\\x69\\x86\\x02\\x2e\\x3f\\xc9\\x8b\\xd2\\xa2\\x1c\\x34\\x55\\xab\\xf1\\x15\\x49\\x54\\xfb\\x30\\xc8\\x98\\x82\\x94\\x7b\\x02\\xf3\\x5a\\xf7\\xb1\\xbf\\xad\\x05\\x23\\x7d\\x24\\x2e\\x2b\\x74\\x83\\x2f\\xc5\\x36\\x19\\x6f\\x2e\\x59\\xd1\\xac\\xd0\\xc1\\xdb\\x6f\\x19\\x43\\xd0\\xf6\\x04\\x3b\\xbd\\x6a\\x76\\x90\\x83\\xed\\x66\\xba\\x0e\\x05\\xa5\\x0f\\xeb\\x0a\\xcf\\x72\\xb6\\xc1\\x6b\\xa9\\xaf\\x03\\x9a\\xfb\\x7f\\xe2\\xa4\\xaa\\xeb\\x4d\\x06\\x18\\x1c\\x5a\\x18\\x78\\x68\\x9e\\x67\\xa3\\xf5\\xd0\\xad\\x39\\xe7\\x94\\xd6\\x23\\x9a\\x7e\\x0a\\x12\\xce\\x82\\x0c\\x5b\\xe6\\x0f\\xd5\\xf1\\xdd\\x79\\x70\\x2f\\x49\\xd0\\x2b\\x79\\x75\\x5f\\xe8\\x73\\xf5\\x78\\x5c\\x72\\xf7\\x46\\x25\\xcd\\x7e\\x24\\x28\\x26\\x25\\x97\\xd3\\x14\\x82\\xc2\\xc0\\x50\\x88\\x01\\xfd\\x96\\x31\\x9d\\x61\\xb9\\x1b\\xa2\\x53\\xa5\\xe7\\x22\\xf4\\x14\\xcf\"},\n{{0x39,0xb8,0x06,0x2d,0xa4,0x3e,0x64,0xe1,0x67,0x67,0x65,0xd6,0x2c,0x7f,0xb8,0xe0,0xa9,0x9c,0x4f,0xd4,0x17,0xd6,0xf7,0xe3,0x31,0x9b,0xb1,0x30,0x44,0x20,0x5f,0x3b,},{0x62,0x27,0xce,0xfe,0x88,0xea,0x4f,0xb2,0x7b,0x37,0xb5,0xf7,0x97,0x77,0x8b,0xd7,0x2f,0xda,0xfe,0xad,0xcc,0xd9,0xae,0xb6,0x7a,0xd4,0x37,0xce,0x08,0xfb,0xa6,0xa8,},{0xc5,0xf6,0x26,0x49,0x0c,0x0e,0xf4,0xe1,0xef,0xc3,0xed,0xeb,0x0c,0xbc,0x3f,0x7d,0xe2,0x67,0x05,0x7f,0xb7,0xb6,0xeb,0x8f,0x0c,0x81,0x35,0x84,0x96,0x5b,0xc5,0xc4,0x21,0xfe,0xed,0xf5,0x42,0x41,0xca,0xe0,0x01,0xec,0x6d,0x5e,0x25,0xc9,0xb1,0xfb,0xa0,0x38,0x5e,0x5d,0xbd,0x95,0xa0,0x6e,0xc1,0xd8,0xae,0x51,0x91,0x44,0x96,0x0d,},\"\\x74\\x0a\\xf6\\x79\\xe3\\x06\\x9f\\xad\\x05\\x9f\\xa4\\x82\\x5f\\xa4\\x1c\\x59\\xfb\\xd4\\x84\\xaa\\x64\\x93\\x03\\xc2\\x7c\\x4f\\x7a\\x94\\x71\\x1c\\x5b\\x71\\x3b\\x2a\\x6b\\x89\\x87\\x85\\x9e\\x22\\x71\\xa6\\xa7\\x1e\\xb0\\xb4\\xa1\\x5a\\xbd\\xe4\\xf5\\x16\\x8f\\x6c\\xb9\\xdb\\xdc\\x6a\\x27\\xa2\\xa1\\x3d\\x52\\xc9\\x72\\x08\\x96\\xa1\\xf4\\xce\\x3a\\x53\\x45\\xee\\x79\\x3b\\x6c\\xc3\\xad\\x80\\xd7\\xd5\\x81\\x63\\xd5\\x45\\x5b\\x9c\\xbd\\x07\\x3e\\x2b\\x7a\\xdb\\xff\\x95\\x59\\x0c\\x71\\x72\\x27\\x1b\\xd9\\x1f\\xef\\xdb\\xd0\\x16\\x57\\xee\\x17\\x50\\x65\\x10\\x36\\xcd\\xc3\\x56\\x0b\\x44\\x4c\\xa2\\x18\\x4b\\xf4\\xf3\\xea\\x89\\xfc\\x97\\x3a\\xab\\x6f\\xb4\\xa8\\xee\\x57\\x04\\xbb\\xe5\\xa7\\x1c\\x99\\xfa\\x3b\\x5e\\xf0\\xd0\\x39\\x62\\x49\\x75\\x82\\x97\\x69\\x9a\\xe2\\x02\\xb8\\x19\\x69\\x0d\\xc7\\xac\\x46\\x92\\x77\\x03\\x46\\x90\\x78\\x45\\xe2\\x21\\x0d\\x53\\x63\\xad\\xee\\xc0\\x3f\\x0f\\xc7\\x76\\x1b\\x7e\\x0e\\xc0\\xfe\\xa1\\xbc\\xf6\\xb0\\x4f\\xc5\\x4b\\x3e\\x4c\\x40\\xd1\\x9b\\x8f\\xa6\\x49\\xac\\x84\\x79\\xe8\\xf8\\x07\\x30\\xc0\\xc9\\x4e\\x9f\\x4a\\x1a\\xd5\\x06\\xf2\\xbc\\xab\\x0c\\x49\\x54\\x0f\\x6d\\xec\\xaa\\x77\\xb3\\xd6\\x57\\xdc\\x38\\xa0\\x2b\\x28\\xa9\\x77\\xec\\xe4\\x82\\x54\\x5a\"},\n{{0x52,0xf4,0x67,0x5d,0x8c,0xcd,0x0e,0xb9,0x09,0xdf,0x0a,0x51,0x66,0x48,0xdb,0x26,0xfa,0x03,0x3b,0xa4,0x1d,0x43,0xfc,0x38,0x45,0x89,0x6d,0x45,0x6e,0x14,0x26,0x5f,},{0xf3,0x9e,0x7d,0xaf,0xc9,0x7b,0x0a,0x84,0xdc,0xbf,0x7f,0xa1,0x4a,0x94,0x03,0xee,0x1f,0xa9,0x2b,0x85,0xe5,0xa7,0xe5,0xd0,0x5f,0x03,0x1b,0x44,0xdd,0xf1,0xf7,0x94,},{0x4b,0xf6,0x68,0x82,0x7a,0x72,0x0a,0xf6,0x88,0x98,0xa0,0x6e,0xa7,0xb4,0x45,0x45,0xa3,0x4c,0xa8,0x96,0xec,0xf3,0x11,0xfe,0xea,0x47,0xe0,0x68,0x6d,0x91,0x1f,0xad,0xaa,0x03,0x11,0x89,0x97,0x15,0x3c,0x65,0x36,0x1f,0xea,0x15,0xde,0x9b,0xb8,0x91,0xb8,0x90,0x98,0x72,0x04,0x55,0x08,0xff,0xad,0x0c,0xd9,0xea,0xb2,0x1a,0x97,0x02,},\"\\x74\\x42\\x71\\x10\\x85\\x7c\\xb4\\xaf\\x0a\\x33\\x42\\xc2\\xb5\\x29\\x97\\xbc\\xe1\\xa0\\xdb\\x64\\x05\\xc7\\x4e\\x96\\x51\\xc5\\xb8\\x59\\x79\\xac\\xb0\\x71\\xe5\\x67\\xfe\\x70\\x41\\x2c\\x4e\\x0d\\x8c\\x9f\\xa4\\x21\\x91\\x4f\\x6a\\x62\\xf2\\xae\\x42\\x0b\\x7b\\x2f\\x4c\\xf8\\x0c\\x90\\x57\\x42\\x21\\x22\\x22\\x88\\xb6\\x58\\x67\\xea\\xa6\\x6e\\x7e\\x0a\\x05\\x57\\xa2\\x6c\\x54\\x9f\\x9a\\x7a\\x4e\\x70\\x83\\x8b\\xa4\\x07\\x4b\\x4c\\xd7\\xa9\\xd7\\x58\\xb3\\x78\\xb8\\x8d\\xd4\\x94\\x41\\xdf\\x80\\x2a\\x44\\x4d\\xcb\\xc3\\x06\\x24\\x93\\x3b\\x59\\x92\\x2f\\x33\\xc2\\x0f\\x01\\x9f\\xe7\\x8e\\xe2\\x4b\\x8f\\xba\\x79\\xa6\\x82\\xf3\\x88\\x50\\x5a\\xc9\\xc9\\x7f\\x4e\\xb8\\x7c\\x61\\x18\\x80\\x02\\x6b\\x4c\\x23\\x30\\x6b\\x86\\x51\\x73\\xf5\\xd7\\x16\\xab\\xc6\\xcd\\x9a\\x99\\x06\\xdb\\x34\\x30\\x13\\x6f\\x75\\x41\\x29\\xc4\\x43\\xb2\\x0c\\x42\\xbe\\x2f\\xbc\\xbc\\xd4\\x40\\x34\\xd7\\x14\\xf5\\x8a\\x4b\\xa8\\xe7\\x56\\x60\\x7a\\x02\\xb6\\x08\\xef\\x49\\x64\\x8f\\x2a\\xd0\\xce\\xa9\\x9e\\x7a\\xb3\\x0a\\x8d\\xd7\\x81\\x40\\x04\\xf7\\x25\\xf4\\x93\\x01\\xd7\\xb3\\x04\\xdc\\xda\\x62\\x5c\\x29\\x6d\\x92\\x8c\\xb5\\x81\\x73\\x6a\\xb7\\x39\\xc8\\x6b\\x46\\x92\\x41\\xa8\\x25\\x93\\x51\\xfd\\x37\\xb4\\x78\\x0a\\x99\\x93\"},\n{{0xba,0xd7,0x3c,0x9f,0xda,0x4c,0xeb,0x9d,0xa6,0xc7,0x01,0xc2,0xa6,0xe2,0xef,0xc0,0x46,0x7a,0xfa,0x0a,0x74,0xf8,0x75,0x0c,0x52,0xcf,0x1f,0xd4,0xc8,0xe7,0x48,0x9a,},{0xbb,0x0f,0x02,0x7a,0x90,0x35,0x37,0x6e,0x1a,0xa3,0x20,0x6c,0x3d,0x77,0x44,0x75,0xe3,0x51,0xf5,0x76,0x7e,0xf8,0x6e,0xf4,0x8a,0x72,0xc0,0x37,0xc2,0x4c,0xce,0x62,},{0x19,0x7d,0x6b,0x6c,0xc8,0x8a,0x98,0xc0,0x6d,0xfc,0xa0,0xc0,0x12,0x25,0xed,0xfe,0x38,0xa0,0xb2,0x28,0x9f,0x29,0xf8,0xa4,0x4e,0xc0,0x81,0x6a,0x95,0x2d,0x58,0x5e,0x2d,0x59,0xb5,0xb0,0x8d,0xe1,0x00,0xc0,0x60,0x62,0x96,0xcc,0xf5,0xe9,0x2a,0x99,0xe0,0x93,0x62,0x31,0x44,0xb8,0xb2,0x2d,0xb8,0x7d,0x92,0x92,0x25,0x54,0x60,0x05,},\"\\x74\\xb9\\x66\\xcb\\x78\\x07\\x71\\xae\\xe6\\x3d\\x73\\x4d\\xf3\\x75\\x67\\x02\\xd1\\xd5\\xfd\\xed\\xdf\\x32\\x13\\x6c\\x63\\x58\\xb8\\x36\\x31\\x8a\\x4f\\x98\\x4f\\xe7\\x1e\\x77\\x16\\xad\\xdd\\xbd\\x64\\x9e\\xba\\x44\\xcd\\x42\\x82\\xe0\\x05\\x5d\\x8c\\x1e\\xd2\\xd3\\x51\\x23\\xd6\\x6e\\x5a\\x98\\xf1\\xc0\\x83\\x8d\\xed\\x56\\x3b\\x9a\\x20\\xeb\\x80\\x07\\x53\\x8f\\xc7\\xb0\\x71\\x3e\\x7e\\x48\\x5e\\x3c\\x28\\xf6\\xeb\\xc4\\x21\\xa2\\x9d\\xce\\x25\\x24\\xdb\\x7f\\x29\\x20\\x57\\x61\\x03\\x6a\\xda\\x62\\xe5\\xb0\\xb7\\xd5\\xb7\\xf2\\x94\\xff\\x17\\xf3\\x38\\x23\\x2f\\xa5\\xfd\\x42\\xb6\\xf7\\x25\\x33\\x04\\x09\\x2d\\x84\\x8f\\x50\\x73\\x52\\x48\\x59\\x5d\\xa0\\xf7\\xef\\x28\\xe5\\x68\\xe9\\x91\\x6b\\xfc\\x56\\xd7\\xed\\x0d\\x81\\x1b\\x59\\xd5\\xd8\\x91\\xae\\x43\\xe1\\xb1\\x98\\x07\\x13\\x06\\xbf\\x52\\x5c\\x67\\x8c\\x63\\x43\\x99\\x80\\x05\\xfb\\xb7\\x86\\x9d\\x1c\\x40\\xf8\\xca\\xc8\\x07\\xfe\\x2e\\xf0\\x3f\\x3d\\x5b\\x93\\x3f\\x58\\x97\\x8e\\xf2\\x90\\x6f\\xcc\\xf7\\x44\\x4a\\x29\\x36\\xe6\\x3d\\x92\\x8c\\x69\\x09\\x26\\xc9\\xc9\\x94\\xed\\x3d\\x66\\x62\\x63\\xe9\\x56\\xfd\\xfe\\xa2\\x77\\x64\\xbc\\x5f\\x74\\x12\\x5b\\xc4\\x6b\\xc1\\x02\\xdd\\x3e\\x5f\\xf9\\x3b\\x5e\\x12\\x3e\\x4b\\x38\\xbd\\xef\\x69\\x7e\\x15\"},\n{{0x70,0x73,0x27,0xa4,0x31,0xdb,0xa7,0x76,0x39,0xb3,0x96,0x6b,0x2b,0xc0,0x95,0xf8,0xee,0xdf,0x57,0xf7,0xa2,0x00,0xe3,0xb0,0x07,0x7c,0xe4,0x20,0x38,0x9c,0x92,0xfe,},{0xee,0x24,0x96,0x91,0x08,0x64,0x18,0x9f,0xda,0xa3,0xc7,0x75,0x7e,0xb3,0xcd,0xa9,0xab,0x1e,0x70,0xfc,0x9e,0x7f,0x71,0xa3,0x8a,0x0b,0xfc,0x84,0x59,0x31,0xc9,0x5a,},{0xfb,0x99,0x02,0x9f,0xec,0xa3,0x87,0xa5,0xd7,0x65,0x96,0x1e,0x36,0x1d,0x71,0x72,0xb9,0x8b,0x7e,0x0f,0x11,0x29,0x0b,0xb1,0xe5,0xb5,0x7b,0x51,0xbc,0x21,0x23,0xd0,0xbc,0xe2,0x90,0x20,0x39,0x2a,0x4f,0xec,0x9a,0xe6,0xa7,0x2c,0x4c,0x38,0x6c,0xea,0x18,0x57,0xcb,0x8f,0x9c,0x50,0xaa,0x9a,0x76,0xd7,0xf1,0x68,0x7f,0xcf,0x29,0x00,},\"\\x32\\xef\\x31\\xb6\\x4e\\xee\\x70\\x0f\\xca\\x2a\\xb2\\x1a\\x26\\x7f\\x8d\\x9d\\x3b\\xdc\\x68\\x9c\\x75\\x38\\xfe\\x95\\x9b\\xf7\\x13\\xfa\\x99\\x5d\\xb2\\xc0\\xad\\x36\\xdd\\xe4\\x30\\xa8\\x41\\x7d\\x43\\x7b\\x72\\xc7\\x4e\\x26\\xdb\\xe3\\x1d\\x93\\x70\\x1d\\x46\\x17\\xfe\\x51\\x82\\x5c\\xff\\x7a\\x54\\x4f\\xc9\\xf4\\x4e\\x43\\x45\\xe1\\x4b\\x4b\\x11\\xe1\\x5f\\x26\\xff\\xc2\\xaf\\x80\\x35\\xf3\\xf9\\x70\\xe4\\xdd\\xa4\\x4c\\x0e\\xbc\\x03\\x63\\xc2\\xb5\\x6f\\xde\\x21\\x86\\x63\\xbf\\x78\\x83\\x90\\x92\\x53\\x8f\\xc2\\xf3\\x91\\x53\\xd4\\xeb\\x29\\xda\\x0c\\x1a\\x08\\xaa\\x96\\x66\\x01\\xcc\\x68\\xca\\x96\\xe9\\x93\\xb0\\x1b\\x17\\x3a\\x26\\x1b\\x2e\\xf3\\x27\\x65\\x03\\x82\\xf5\\x68\\xfe\\x94\\x48\\x55\\xb0\\xf4\\xfd\\x9d\\x15\\xe7\\x52\\xac\\x74\\xdc\\xfd\\x37\\xb3\\x78\\x6f\\xff\\xce\\xf2\\x33\\x39\\xc2\\x1e\\x92\\x70\\xdc\\xe8\\x89\\x1d\\xd5\\xee\\xeb\\xa9\\x60\\x8f\\xdc\\x7b\\x6f\\xbc\\xc9\\x9f\\xa1\\xb5\\x90\\x3d\\xaa\\x09\\x68\\xe1\\xb6\\x91\\xd1\\x9d\\x06\\xf2\\x15\\xde\\xd0\\x47\\xef\\x9d\\x76\\x61\\x0f\\x5d\\xe2\\x20\\xf5\\x04\\x1b\\x31\\x3f\\xaf\\x9e\\x96\\xc9\\xfd\\x7d\\xb5\\x4b\\x52\\x25\\x72\\x6a\\xf4\\x35\\xf9\\xcb\\xd9\\xfd\\x87\\xab\\x40\\xce\\x8f\\x2c\\x69\\x40\\xb5\\x5f\\x0f\\xaa\\xe8\\x78\\x50\\xca\"},\n{{0x6a,0xa5,0xc9,0xf0,0x08,0xf9,0x90,0x47,0x3b,0xa4,0xa6,0x28,0x6a,0x41,0x66,0x14,0x02,0x66,0x61,0xf1,0x1e,0x1a,0x24,0xef,0xa8,0x1a,0xc3,0x58,0x52,0xd1,0xd0,0x70,},{0x60,0x5a,0xc9,0xb4,0xdb,0xdd,0x50,0x33,0xd6,0xc8,0x28,0xbf,0xaf,0xa9,0x3c,0x00,0x39,0x44,0x0a,0xa1,0x1c,0xa7,0x24,0xae,0x83,0x40,0x43,0xe0,0x7b,0xd0,0x32,0xd5,},{0x97,0x56,0x30,0x3b,0x90,0x65,0x5e,0x93,0x52,0x51,0x03,0x2a,0xb1,0x9c,0xfc,0x95,0xca,0x1c,0x2a,0x2c,0x3e,0xa2,0x8b,0x03,0x3b,0xd4,0x70,0x66,0xcb,0xd4,0xc7,0xd8,0x98,0x2a,0x8b,0x98,0x86,0xf1,0xb9,0xcd,0x02,0xe8,0x8a,0x65,0x56,0x4d,0xa8,0xdc,0xc3,0x4f,0x30,0x8b,0xa9,0xf1,0x01,0x44,0xba,0x46,0x9c,0x2e,0xfa,0x49,0xe0,0x04,},\"\\xb5\\x16\\x5d\\x39\\x63\\xf6\\xe6\\xf9\\xea\\x56\\x57\\xe9\\xf0\\x7f\\xf3\\xa3\\x21\\xeb\\x33\\x8f\\x9a\\x8c\\x3d\\x3c\\x42\\x30\\x6b\\x2b\\x27\\x89\\x78\\xb3\\x1c\\x62\\x3a\\x63\\x1b\\xe3\\xb0\\x4c\\x41\\xed\\xfd\\xed\\xdf\\x53\\x8e\\x1b\\x76\\x5b\\xc8\\x78\\x54\\x01\\xc1\\xaf\\x29\\xd0\\x46\\x7a\\x64\\x41\\x1c\\x49\\x73\\x95\\xd7\\x55\\xdc\\xa0\\x3a\\xe3\\x27\\x2f\\x4b\\xc1\\xfb\\x19\\x18\\xdc\\xc1\\xed\\x6f\\x04\\xd6\\x49\\x84\\x04\\xa8\\xce\\x14\\x09\\xd4\\x47\\xf5\\x70\\xa4\\x35\\x95\\x22\\xcc\\x54\\x62\\x92\\x02\\xeb\\xe5\\x07\\xab\\x69\\x38\\x43\\x14\\x1b\\xd5\\xea\\x05\\x73\\xb2\\x0f\\x32\\x1a\\x48\\x3f\\xf3\\x83\\xa4\\x68\\x97\\xf5\\x92\\x6f\\xe0\\xb8\\xaf\\xc2\\x55\\x72\\x70\\x7b\\x63\\xee\\xed\\x28\\x35\\x32\\x92\\x8a\\x41\\x44\\x19\\x64\\x97\\x94\\x2c\\x57\\x2a\\xc5\\x47\\x60\\x51\\x39\\x25\\x6b\\x0a\\xa0\\xea\\xf0\\x4d\\xb1\\xa2\\x56\\x01\\x2e\\xd4\\x53\\xb1\\x73\\xee\\x19\\xad\\x6e\\x9b\\x1a\\xf3\\xf4\\x5f\\xf3\\x04\\x4a\\x64\\x1f\\x8c\\x8e\\xb0\\xac\\x7b\\xb4\\x5a\\xbb\\xde\\xd4\\x72\\x86\\xb2\\xa0\\x69\\xd3\\x90\\x86\\x94\\xee\\x06\\xf2\\xfb\\xd0\\xef\\x60\\x5a\\x79\\x11\\x02\\x6e\\xa9\\xea\\x3c\\x49\\x13\\xf3\\x8c\\x04\\xd8\\xb6\\x95\\x65\\xa7\\x02\\x78\\x67\\xab\\x30\\x92\\xd0\\x5f\\x4c\\xfb\\x18\\xfc\\x7c\"},\n{{0x8e,0xfb,0x8b,0x79,0x74,0x2b,0xe2,0x1e,0x6d,0x31,0xde,0x67,0x8b,0xc8,0x14,0x50,0xba,0x86,0x21,0x08,0x2c,0xd6,0xf0,0x00,0x3e,0x22,0x86,0x1e,0x22,0x91,0xc4,0x81,},{0x33,0x38,0x1e,0x35,0x6c,0x4f,0xd3,0x86,0xa3,0xf7,0xb9,0x69,0xaf,0xd9,0xf5,0xc0,0x0d,0x20,0x67,0xb6,0x98,0xb3,0xf1,0xf0,0x0f,0x37,0x84,0x20,0x2d,0x30,0x84,0xcf,},{0x92,0x30,0x05,0xcb,0x48,0x48,0x40,0x2a,0xa8,0xf9,0xd5,0xda,0x74,0x03,0x0b,0x00,0x94,0x44,0x92,0x4c,0x21,0x4a,0xd6,0x00,0xdd,0xba,0xb4,0xc1,0x53,0xa6,0xff,0x02,0x2b,0x53,0xcf,0x63,0x64,0xcd,0x7e,0xe9,0x9b,0xef,0x34,0xfe,0x14,0x4d,0xa9,0x64,0xed,0xfc,0x38,0xa0,0xba,0x63,0x33,0x12,0x65,0x0e,0xbf,0x0e,0x55,0xa0,0x60,0x09,},\"\\x6b\\x75\\x03\\x25\\xd3\\xa0\\xf0\\x8a\\x14\\x77\\x00\\xb5\\x1a\\x9b\\x37\\x25\\x57\\x10\\x94\\x81\\x8e\\xd6\\x9d\\x1f\\x76\\x10\\x13\\xeb\\x86\\xf3\\x23\\xf7\\x3c\\x49\\xf5\\xe4\\x39\\x87\\x7c\\x27\\x83\\xb3\\x36\\xd1\\xf1\\xa6\\x74\\xef\\x3e\\x43\\x1f\\xc1\\xae\\x01\\x80\\x08\\x2d\\xf5\\xfc\\xa6\\x9f\\x84\\x81\\x39\\xfe\\x6a\\xb6\\x73\\x9a\\x05\\x92\\xeb\\xd6\\xd4\\x70\\x5c\\x7f\\x01\\x36\\xb2\\x21\\x89\\xa1\\x1d\\x60\\xd4\\xd3\\xc9\\xbc\\x80\\xfe\\x7d\\x7c\\x00\\x95\\x2d\\x57\\x42\\xf9\\xc0\\xc2\\x12\\x1f\\xe7\\x92\\xdf\\x13\\x3f\\x22\\x1d\\xb9\\x91\\xfc\\x96\\x0e\\xe6\\x4b\\x9d\\x32\\xe0\\x17\\x8e\\x54\\x2b\\xce\\x8e\\xfa\\x8d\\x03\\xac\\x80\\x26\\xcd\\x77\\xba\\x8b\\xf0\\xb2\\x42\\x15\\xb9\\xfa\\xed\\x2e\\xae\\xc9\\x20\\xe9\\x25\\xd5\\xec\\x46\\xff\\xf6\\xbd\\xe7\\x25\\xe9\\x1c\\x82\\x80\\xe4\\xad\\xa2\\x32\\xa5\\x43\\x3a\\xe9\\x68\\x0e\\xbb\\x53\\xeb\\x55\\x55\\x31\\x47\\xc9\\x33\\x70\\x57\\x48\\x54\\x89\\x61\\x54\\x51\\x42\\x99\\xc0\\x93\\x21\\x9a\\x11\\x1d\\xca\\x4e\\x63\\x7a\\xd5\\x00\\x13\\x38\\xc6\\xd4\\xd5\\xee\\x90\\x98\\xc6\\x58\\x32\\xf7\\xaf\\x83\\x5b\\xcb\\x62\\x21\\x28\\x42\\x30\\x36\\xc7\\x9a\\x57\\x37\\x73\\x8a\\x75\\x39\\xf8\\xd4\\xa6\\xb8\\xb2\\x21\\xb5\\x6d\\x14\\x01\\xae\\xb7\\x4d\\x45\\x71\\xbc\\x00\\x9d\"},\n{{0xed,0x04,0x6d,0x68,0x8b,0x2b,0x0a,0x1b,0xc3,0xda,0xf2,0x11,0x9d,0xd3,0x21,0xa6,0x07,0xb1,0x6d,0x2a,0x2d,0x1d,0x96,0x3a,0xdd,0x12,0x09,0xc6,0x65,0xb5,0xcc,0xba,},{0x87,0x34,0xf1,0xff,0xcb,0xd7,0x1c,0xfd,0xe2,0x90,0x01,0x7e,0xa6,0x25,0x3e,0x58,0x0d,0x59,0xe6,0x5b,0x54,0x1b,0x46,0x52,0x1f,0x5e,0x5e,0xc1,0x45,0x1e,0xae,0xc6,},{0x72,0x1b,0xfd,0x47,0x76,0xcf,0xba,0x13,0x33,0x0f,0xd3,0x72,0x69,0xe9,0x79,0xc1,0xd7,0xb6,0xce,0x54,0xa5,0x1b,0x82,0xf4,0x56,0xe1,0x37,0x37,0x8e,0x58,0x2f,0x19,0x2a,0x12,0x08,0x9d,0xa5,0xab,0xa7,0x6a,0x7b,0x16,0x18,0x13,0xdc,0xe5,0x6b,0x72,0x89,0x2a,0x35,0x33,0x0c,0x94,0xf7,0xff,0x21,0xd0,0x9c,0xf0,0x9e,0x55,0x35,0x04,},\"\\xb9\\xcc\\x90\\xfd\\x8d\\xe2\\xa1\\x41\\xf9\\x51\\x16\\xdb\\x3b\\x04\\xbe\\x83\\xe9\\x85\\x22\\x59\\x7e\\xc2\\x17\\x49\\x64\\x24\\x51\\x80\\xb9\\xa4\\x73\\x76\\x7d\\x6d\\x47\\x0a\\x21\\x7d\\xb5\\xff\\x5a\\x1a\\xb7\\x77\\xe1\\xe2\\x8a\\x0b\\x16\\x97\\x5e\\x2b\\xac\\xb8\\x73\\x02\\x04\\x44\\xb4\\x7e\\xd8\\x32\\x64\\x21\\xb9\\x0e\\xbb\\x50\\x36\\x88\\xf0\\x90\\xc1\\x1b\\x3b\\x13\\x61\\x7c\\x5c\\x50\\x52\\xc2\\x97\\xa4\\x1e\\x28\\x93\\x77\\x5e\\x34\\xd5\\x9a\\xda\\x49\\xd9\\x94\\xc0\\xe4\\xa9\\xf5\\x22\\x0e\\x9f\\x03\\x15\\xa6\\x77\\x05\\xa3\\xec\\x08\\xaf\\x0d\\xc7\\x24\\xb5\\xcf\\x67\\xff\\x34\\xfa\\xda\\x8b\\xa7\\x10\\x9e\\xd2\\xb5\\xa8\\x90\\x7b\\xb4\\x03\\xfb\\x1a\\x83\\x8b\\x4b\\x05\\x9f\\x18\\xc7\\x92\\xd7\\xbf\\xec\\x05\\xde\\xe0\\xc9\\xcb\\xbf\\x17\\x53\\x40\\x9d\\x7d\\xb3\\xac\\xea\\xf4\\x7b\\x4c\\x61\\x39\\x84\\x97\\xb0\\xec\\xa6\\xc1\\xf8\\xac\\x08\\xa7\\xea\\x1e\\xb9\\xc4\\x0b\\xc4\\xe9\\x2e\\x88\\x82\\x12\\xf7\\xd9\\xee\\x14\\xfd\\xb7\\x31\\x58\\x16\\x09\\x44\\xff\\x9b\\xcd\\xfe\\xf1\\xa7\\x46\\x9c\\xc7\\x0f\\x94\\x74\\xe5\\xf2\\x4d\\xff\\xfe\\xa5\\x85\\xf0\\x9e\\xaa\\xab\\x4b\\xe2\\xaf\\xeb\\xbe\\x8e\\x6c\\xf8\\x6d\\x35\\x68\\x0d\\xc5\\xd1\\xb9\\x29\\x13\\xe8\\x48\\x25\\x6e\\xc7\\x36\\x31\\x6f\\xd0\\xa2\\x14\\x20\\x63\\xb0\"},\n{{0x76,0xac,0x8e,0x57,0x0a,0x39,0xb3,0xa0,0x23,0x2c,0x45,0x49,0x75,0x37,0xfb,0x21,0x55,0xac,0xec,0x36,0x17,0x86,0x5e,0xd1,0xdf,0x21,0x0f,0x00,0xb4,0x9d,0x1b,0x8d,},{0x31,0x2a,0x3a,0xd8,0x99,0xae,0x6a,0x25,0x50,0x7a,0xe6,0xe4,0x52,0x4e,0x10,0xb6,0x3a,0x6e,0x7a,0xe5,0x3d,0x9c,0xff,0xd3,0x9c,0xf2,0x85,0x21,0xd9,0x35,0x33,0xd6,},{0xcf,0x03,0xf5,0x25,0x91,0x3c,0x44,0x30,0x3b,0x2f,0x80,0x07,0x93,0x93,0xc2,0x1c,0x11,0x58,0x14,0x6e,0xcf,0x99,0x63,0x6f,0x5d,0x97,0xad,0xfd,0xd9,0xf3,0x58,0x39,0x80,0x4c,0x23,0x80,0x4c,0xbf,0x1e,0x55,0x3c,0xfd,0x4b,0x73,0xf6,0x89,0xa9,0x14,0x3a,0xec,0x29,0x8f,0x82,0x76,0xe1,0xe4,0xee,0x08,0x91,0xf1,0xba,0x75,0xde,0x04,},\"\\x53\\xce\\xd9\\xdb\\x2b\\x47\\x9e\\x59\\xd3\\xed\\x64\\x3f\\x7c\\xc3\\x78\\x4c\\x24\\xb8\\xbd\\x4c\\x63\\x20\\x6c\\x72\\xe2\\x3f\\xa8\\x50\\x02\\x88\\x99\\xa4\\x1c\\xe1\\xa8\\xbd\\xc0\\x03\\xf1\\x2b\\x7c\\x29\\x97\\x2c\\x9a\\x08\\xbc\\xd2\\x31\\xfe\\x0e\\x1a\\x0f\\xef\\x0b\\xaf\\xbf\\xa4\\xe0\\xe0\\x27\\xd7\\x20\\x04\\x07\\x5b\\xa3\\x7d\\x49\\x0e\\xb9\\x96\\x4e\\x78\\x3b\\xb9\\x8f\\x9e\\x50\\x3e\\x9c\\x1f\\xd3\\xd2\\x3f\\xb0\\x01\\x7c\\xc7\\xc7\\xa9\\xf8\\x6d\\x17\\x1f\\x04\\x1e\\x23\\x55\\xd8\\xc5\\xe6\\x22\\x9d\\x34\\xc7\\xee\\xac\\xb6\\x35\\x8c\\xf3\\x06\\x0d\\x5d\\x26\\x5b\\xae\\x20\\x04\\xa5\\x58\\x87\\x86\\x59\\xa3\\x0d\\xfe\\xd5\\xf2\\xec\\x78\\x8b\\x4e\\x14\\x39\\x7b\\x5d\\x00\\xc2\\x9d\\xb5\\xd4\\xeb\\xf1\\x66\\x39\\xa8\\xdf\\x29\\x2a\\x3d\\x24\\xf6\\x98\\x3c\\xbc\\xa7\\x60\\xd9\\x03\\xe9\\x76\\xf5\\xb6\\x98\\x64\\x2b\\xa1\\xfe\\xd4\\x9e\\x79\\xc3\\x8f\\x4b\\xb3\\x94\\x6e\\xfc\\xcc\\x9d\\x6a\\xef\\xad\\x33\\x6d\\x55\\x8f\\x78\\xe4\\xf2\\x05\\x42\\x2e\\x10\\x38\\x4a\\x4e\\x53\\x1e\\x75\\x80\\x7e\\xfb\\x38\\x9d\\x2a\\xf4\\xca\\xb4\\x38\\x25\\xfb\\x87\\xf1\\x96\\xa9\\x08\\x07\\x69\\xfe\\x75\\x85\\x78\\x29\\x70\\xa6\\x91\\x8a\\xff\\xe1\\x0d\\x20\\xd6\\x29\\xb7\\x05\\x84\\x55\\x97\\x41\\x8d\\x69\\x9d\\xe3\\xf1\\xde\\x85\\x4f\\x94\\xbd\"},\n{{0xf6,0x4a,0x66,0xba,0x0f,0x08,0x19,0xf3,0x00,0x14,0x16,0xc2,0x20,0xbf,0x52,0xd8,0x60,0x13,0x0a,0x19,0x76,0x4a,0xa8,0xab,0x38,0xd1,0x5b,0x2a,0xa7,0x5a,0xc0,0x22,},{0x81,0x25,0x25,0x3c,0xd3,0x37,0xe0,0x0d,0x45,0xb4,0x50,0x79,0xb5,0x85,0x34,0x95,0x61,0xe5,0xf5,0x42,0xa8,0x1f,0x6d,0x2f,0xcf,0xd9,0x85,0xc1,0x0f,0xea,0xb2,0xaf,},{0x4d,0xe6,0xf5,0x25,0x08,0x22,0xd7,0xc9,0xd5,0xbb,0x98,0x58,0x25,0x00,0xb5,0xc0,0x85,0xf5,0x41,0xeb,0xdc,0x45,0x0e,0xd1,0xac,0xaf,0x83,0x68,0x48,0x27,0xed,0x1d,0xc7,0x71,0x47,0xaa,0xe4,0xb1,0x9e,0x14,0xa7,0xdc,0x5b,0xbe,0x1f,0x1e,0x4f,0x57,0x71,0xd8,0xa6,0xe4,0xf2,0x35,0x17,0x39,0xaf,0xb0,0x8c,0x80,0x6d,0x55,0x87,0x01,},\"\\x80\\x72\\x86\\x2e\\xd0\\xab\\x35\\x92\\x1d\\xb5\\xec\\x2c\\xba\\x8e\\x6a\\xed\\xb0\\x44\\x1f\\xdf\\x47\\x49\\x10\\x06\\xc0\\x1e\\x64\\x56\\xad\\x70\\xfa\\xe3\\xc4\\x15\\x2d\\xcf\\xbf\\xdb\\xb8\\xf0\\xfd\\xde\\xc5\\xe9\\x6b\\x12\\xbf\\x67\\x98\\x9b\\xa9\\x67\\x93\\xf4\\x86\\x1a\\x11\\xb6\\x39\\x09\\xce\\x8d\\x19\\xb8\\xca\\x64\\xa5\\x44\\xb3\\x1c\\xe0\\x51\\xfb\\xc8\\x8e\\x06\\x28\\x06\\xd9\\x96\\x5c\\xbd\\x29\\x67\\xb0\\x16\\x14\\xe8\\x6b\\x53\\x2f\\xbf\\x59\\x84\\x32\\x18\\xdc\\x9c\\x19\\xc8\\x03\\x15\\xf0\\x44\\x73\\x17\\x19\\x37\\x10\\x92\\xa3\\xda\\x38\\x87\\x8b\\xc4\\xcf\\x77\\xde\\x97\\x2e\\x86\\x04\\x66\\xb8\\xfc\\x45\\xe4\\x65\\xdc\\x3d\\x0e\\xbf\\x94\\xbd\\xea\\x60\\xef\\x0b\\x98\\x91\\xce\\xd4\\x1b\\x99\\x7b\\x11\\xb3\\x1e\\xe4\\x16\\x7d\\xb6\\x0c\\x9c\\xfc\\x8b\\x85\\xbe\\xac\\xfe\\x22\\x3c\\xc1\\x82\\x92\\x13\\x77\\x40\\x85\\xd7\\xc0\\x6d\\x2b\\x2e\\x63\\x2c\\xc2\\x1c\\xd9\\x66\\x0d\\xf4\\x7c\\x4f\\xa9\\x18\\xbd\\xd5\\x96\\xdd\\xf6\\x22\\xdc\\xb6\\x52\\x64\\x2b\\x67\\x52\\x7b\\xa8\\xed\\x15\\xa8\\x19\\xa8\\xe2\\x1f\\x48\\xd7\\xee\\x70\\x24\\x7f\\x52\\x00\\xe3\\x7c\\x25\\x9d\\xff\\xd1\\x7e\\xec\\x8c\\x23\\x2f\\x97\\x0c\\xb0\\x31\\x82\\xfe\\x39\\x64\\x13\\x29\\x93\\xf6\\xec\\xb7\\xc4\\xdb\\x18\\xcc\\xef\\x39\\x0c\\x9e\\xb3\\x63\\x9e\"},\n{{0x84,0x39,0xb1,0xd6,0x0a,0xa4,0x84,0x60,0x13,0x5e,0xb1,0x00,0x2c,0xc1,0x12,0x79,0x29,0x95,0x07,0x9a,0x77,0xe6,0xe8,0xab,0x02,0x0b,0x9a,0xba,0xca,0x89,0x20,0xb4,},{0xea,0xdc,0x3e,0x0c,0x5b,0xdd,0xbc,0x30,0x52,0xc3,0xb2,0xf8,0xb0,0xa9,0x45,0x66,0xc2,0xb2,0xc8,0x79,0xed,0x17,0x03,0x4a,0xc0,0xe6,0xa4,0x5f,0x2b,0x3e,0x32,0xd2,},{0x62,0xda,0x81,0xe1,0x64,0x40,0x82,0x1b,0x59,0x3b,0x6e,0xe6,0x54,0x0e,0x15,0xd1,0xae,0xa7,0x5d,0x23,0xe0,0xa1,0xbb,0xfe,0xdc,0x80,0x8c,0x95,0x48,0xf8,0x7e,0x8b,0xbf,0x36,0x91,0x5a,0x39,0xa7,0x47,0x16,0xf6,0x45,0xcc,0xa5,0x71,0x4d,0x17,0x0a,0xf9,0x07,0x57,0x6d,0x4f,0x37,0x05,0xe5,0x43,0xd2,0xad,0xdd,0xc5,0xff,0x23,0x03,},\"\\x54\\x19\\xf6\\xd2\\x4e\\xb4\\x66\\x35\\xd4\\xa7\\xf8\\xea\\xb8\\x03\\xcf\\xd0\\xd0\\x4d\\xe0\\x92\\xaf\\xbd\\x86\\xf2\\xa6\\x96\\x1a\\x8d\\x1e\\xb8\\xc0\\xd1\\x97\\xba\\x55\\xee\\x08\\xc9\\x91\\x82\\x2a\\x5a\\xa7\\x02\\xba\\xe0\\x33\\x7a\\xbd\\x5c\\xa7\\xfa\\xa1\\x5e\\x1f\\x1a\\xe3\\x69\\x94\\x6e\\x9b\\x81\\x21\\x6c\\x0f\\x5f\\xc2\\x2b\\xbd\\x44\\x33\\xc3\\xde\\x93\\xc5\\xca\\xa2\\x74\\x16\\x83\\xbb\\xd0\\xe1\\xa7\\x8d\\xf2\\x8d\\xda\\x19\\x17\\x41\\x01\\x87\\x63\\x34\\xd4\\x03\\x39\\x65\\x9f\\x02\\x1a\\xe7\\x66\\x16\\x2c\\x6c\\xc5\\x42\\x1b\\x79\\xcf\\x9d\\x5c\\x09\\x0e\\xd4\\xaf\\x07\\xec\\x84\\x49\\x30\\x35\\xbd\\x0b\\x24\\x21\\xb5\\x33\\x68\\x42\\x95\\xbb\\xe7\\x6a\\x70\\xfe\\xc5\\x96\\xef\\x8c\\x89\\xc5\\xc9\\xdd\\xa3\\xc3\\x3b\\x77\\x35\\xd2\\xd2\\xf2\\x0b\\x28\\xf1\\xa5\\x40\\x2e\\x72\\xd0\\x4b\\xa2\\x91\\xdd\\x59\\xf1\\x4a\\xf0\\x8a\\xdf\\x56\\xee\\xb0\\x86\\xd7\\x69\\xc6\\xbe\\xc3\\x45\\x18\\x91\\x37\\x23\\x45\\xfd\\x6b\\xd0\\x2d\\xcf\\x95\\xe8\\x03\\xaf\\x03\\x53\\x15\\x0e\\x18\\x2e\\x32\\x3a\\xaf\\x68\\x3e\\x03\\x6d\\x9a\\x13\\x5d\\x2e\\x6f\\x98\\xcb\\x4d\\x32\\x7e\\x2c\\xe7\\xd5\\x42\\x47\\xf3\\x59\\x2e\\xd0\\x67\\xb4\\xce\\x76\\x27\\x17\\x4f\\x99\\x6f\\x28\\x16\\x5c\\x9c\\x11\\xf0\\x7e\\x5e\\xe9\\xce\\xe6\\x38\\x51\\xc6\\xb6\\x8e\\xa2\"},\n{{0x3a,0x04,0x63,0x97,0xf0,0xaf,0xc0,0x72,0xbc,0x7f,0x90,0x7c,0x74,0xd3,0x8f,0xd1,0xb9,0xaf,0xdf,0x27,0xe1,0x4a,0x35,0x34,0x76,0x8b,0x0d,0xd2,0xdf,0x3a,0x1c,0x22,},{0x99,0xcd,0x70,0xef,0x3b,0xe3,0x42,0x49,0x33,0x93,0x87,0x2f,0x54,0xc4,0x7d,0xea,0xa0,0x81,0x02,0x18,0x92,0xd1,0x1a,0x32,0x68,0xf3,0x14,0x5e,0xd4,0xf3,0xab,0xe5,},{0x50,0x24,0xce,0x60,0x25,0x79,0x65,0x68,0x70,0x80,0xc5,0xb1,0xfc,0x7d,0x13,0x01,0xc3,0x2a,0xa6,0xfc,0xc8,0x35,0x49,0x7d,0x9c,0xb2,0x3a,0x74,0xa6,0xca,0x27,0x24,0xf5,0x53,0x53,0xc1,0xb7,0x57,0x82,0x7c,0xa5,0x44,0x0c,0x9e,0xf8,0xf8,0xc1,0x05,0x09,0x13,0xe2,0x0a,0xab,0xec,0x35,0xc4,0x97,0xb5,0x60,0x41,0xb5,0xde,0xb2,0x09,},\"\\xf0\\x8d\\xde\\xf4\\x6c\\xc6\\xc3\\x41\\x79\\x82\\x0c\\x98\\x61\\x37\\x51\\x72\\xfd\\xdf\\x77\\x4f\\x8d\\xc3\\xf7\\xd6\\x4a\\xa4\\x32\\xda\\x8e\\x5f\\xae\\x64\\x4c\\x0a\\x8a\\x9e\\x69\\x08\\x51\\x7d\\x50\\x5d\\xeb\\xd6\\x12\\x86\\x8a\\xc6\\xda\\xf9\\x5c\\xd7\\xe1\\x69\\x97\\x50\\x02\\x2c\\xcd\\x4b\\x88\\xdb\\xae\\x2b\\xbf\\x73\\x54\\x6e\\xe4\\xb8\\x35\\xd3\\x19\\xa8\\x42\\xda\\xe8\\xb9\\xed\\x68\\x33\\x23\\xf3\\x1e\\x5c\\xc5\\x79\\x19\\xbc\\x9d\\xbe\\x3b\\xcf\\xff\\xb2\\xad\\xa4\\x80\\x72\\x69\\x7f\\xf4\\xa7\\xd3\\x10\\xc9\\x1a\\xdb\\xca\\x81\\xfa\\xf2\\x6a\\x0e\\xb7\\xbb\\x0c\\x40\\x4a\\xc9\\xd8\\xdf\\xec\\x63\\xe9\\xc6\\x4e\\x2f\\x42\\x0c\\x07\\xd3\\x23\\xb7\\xc0\\xdc\\x3b\\x73\\x50\\x72\\x83\\xae\\xb1\\xce\\xe5\\x1d\\xb4\\xe1\\xa8\\x3a\\x69\\x2c\\x7c\\x1e\\xa3\\x98\\xf6\\xf3\\x09\\x40\\xfa\\xb8\\x5e\\x21\\x38\\xd4\\xb8\\x5a\\xa4\\xe2\\x31\\xe5\\x42\\x4f\\x5b\\x06\\x4e\\xd0\\x26\\xf0\\xcc\\xb9\\x9d\\x1c\\x85\\xa9\\xeb\\x15\\xf5\\x93\\x4a\\x11\\x35\\x9d\\x41\\x1c\\xf9\\x4a\\xe8\\xff\\xa3\\x36\\x1a\\x22\\x4f\\x46\\xba\\xb8\\x52\\xd1\\x84\\xa2\\x48\\xb4\\xc3\\x1f\\xe3\\xa7\\xe7\\xf5\\x13\\x4c\\x05\\x10\\x31\\xa9\\xf3\\x28\\xa7\\xbe\\x4a\\x7c\\xbb\\xb1\\xd8\\xd8\\x63\\xa4\\x00\\xfd\\x2d\\x58\\xda\\xa4\\x4f\\x1b\\x9d\\x8e\\x9d\\xdf\\x96\\x1c\\xe6\\x32\\x2f\"},\n{{0x12,0x4f,0x74,0x16,0xa8,0x04,0x53,0xe4,0xcf,0x1c,0xd7,0xb5,0xe0,0x50,0xa9,0x76,0x14,0x18,0x25,0x8b,0xf7,0xd2,0x7b,0xeb,0x7f,0x23,0x23,0x8c,0x45,0x40,0xbe,0x2d,},{0x0d,0xa3,0x4a,0xb1,0x73,0x99,0x01,0x50,0xdf,0x73,0x99,0xb6,0xbc,0xdd,0xba,0x93,0xc6,0xdb,0xcb,0xf4,0xd1,0x76,0x94,0x1c,0xb5,0x07,0x1e,0x87,0x34,0xc5,0xdc,0x92,},{0xb0,0x57,0x21,0x04,0xaa,0x69,0xe5,0x29,0xe3,0x46,0x5a,0x6f,0xd2,0x8f,0x40,0x4a,0x4e,0xc2,0x02,0x76,0xa9,0x93,0xb1,0x72,0x5e,0xb8,0xc5,0xf6,0x50,0xb4,0xa2,0x16,0xf1,0x87,0x1b,0x24,0xe3,0x68,0xcc,0x46,0xcd,0x1e,0xe0,0x17,0x4c,0xda,0x1b,0x5e,0x4a,0xe2,0x20,0x0a,0xa9,0xfc,0x44,0x52,0x2d,0x97,0x5a,0x9c,0x51,0x81,0x49,0x08,},\"\\x9d\\xcb\\x98\\x73\\xff\\x05\\x4d\\xb1\\x1d\\x0a\\x9b\\x19\\xde\\x68\\x85\\xff\\xba\\x7f\\x0e\\x68\\x1c\\xf7\\xfb\\x8f\\x6c\\xd9\\x50\\xc4\\x83\\x28\\xd1\\xf9\\x19\\xca\\x46\\x05\\x4e\\xee\\xe6\\xc9\\xe5\\x78\\x43\\xeb\\xdd\\xa7\\xb2\\x4b\\xc3\\x50\\x3c\\x4d\\x61\\x2a\\xbb\\x1a\\x31\\x4f\\x39\\xf5\\x82\\x21\\xd2\\xb5\\x4d\\xc7\\x55\\xac\\xca\\x79\\x69\\x74\\x0e\\x7f\\xa8\\xb1\\xa9\\x52\\x3b\\x8c\\x73\\x79\\xfd\\x39\\x52\\x53\\xf4\\xe6\\xcd\\x05\\x4e\\xe2\\x4b\\x75\\x61\\x3c\\x35\\x81\\xd4\\x9e\\x19\\x24\\x6a\\x7b\\x3b\\xe1\\xce\\xcb\\x33\\x4b\\xe4\\x4f\\x3d\\x62\\x6f\\xe3\\xb7\\xb2\\x69\\xe6\\x28\\xd4\\x45\\x80\\xc2\\x06\\x36\\xeb\\xa2\\x64\\x2f\\x27\\x44\\xb9\\x59\\xe6\\x57\\x57\\xd0\\xee\\x60\\x18\\x43\\xf1\\x88\\xe9\\x5d\\x17\\x25\\x3f\\xef\\x56\\x70\\x68\\xa5\\x40\\x5a\\x3a\\x9e\\x67\\x7f\\xea\\x3d\\x7d\\x55\\xf7\\xea\\xd1\\x9a\\x3f\\x30\\xc5\\xf9\\x85\\x67\\x1b\\x55\\xfa\\x12\\x0c\\xb9\\xd0\\x5f\\x47\\x1b\\x6e\\x1e\\x8d\\x77\\x9a\\x2c\\x80\\x3a\\x19\\xe6\\xd0\\xd7\\xcd\\x50\\x78\\x87\\xed\\x64\\x7c\\x2a\\x95\\x48\\x3f\\x93\\x39\\x91\\xed\\x45\\xae\\x30\\x1a\\x2b\\x0e\\x95\\x4a\\x57\\x03\\xd2\\x48\\xc7\\x88\\x10\\xaa\\x0b\\x19\\x9c\\xc2\\xbe\\xbb\\x2f\\x1d\\x71\\xcc\\x40\\x48\\x7d\\xbd\\x42\\xee\\xe0\\xf7\\x45\\xf7\\xd2\\x85\\x68\\x5b\\x1f\\xb3\\x1b\\x15\"},\n{{0x25,0xd1,0x3b,0x38,0x37,0x60,0x1b,0x07,0xa9,0x75,0x69,0x3e,0x5a,0x33,0xd5,0x33,0x7c,0x34,0xc1,0x12,0x7f,0xe4,0xc2,0x74,0x90,0x61,0x2a,0xaf,0x7f,0x64,0x2e,0x9a,},{0x3a,0x07,0xcd,0x68,0xee,0x26,0x92,0xd5,0x1c,0xfa,0xd1,0xa8,0x0e,0x77,0x63,0xb1,0x8a,0x04,0x3c,0x74,0xf4,0xe1,0xb0,0x1e,0xdc,0x55,0xba,0x9a,0x9e,0x07,0x79,0x5a,},{0x20,0xcb,0xf0,0x83,0x92,0xfe,0xa6,0xa9,0x9c,0xf4,0x46,0xa9,0x5c,0x19,0x9c,0xaa,0x0c,0x0f,0x98,0x13,0xcc,0x21,0x7b,0x8d,0x22,0x8e,0x2e,0xd9,0x0b,0xab,0x95,0xea,0x92,0xcd,0x73,0xac,0x95,0x83,0x47,0x64,0xd3,0x3e,0x42,0x24,0x3c,0x80,0xa7,0x60,0x34,0x91,0xc8,0xd3,0xe4,0x9a,0xc7,0x15,0xfd,0x8a,0x5b,0x9e,0x47,0x89,0xbb,0x03,},\"\\x11\\x5b\\x32\\x20\\xb4\\x5c\\xa8\\xf3\\x6c\\x7f\\xf5\\xb5\\x38\\x87\\xd4\\x7e\\x66\\x9b\\x78\\xda\\xc1\\x3b\\x98\\xcc\\x7a\\xac\\xa5\\xc2\\xe1\\x9f\\xce\\x81\\xec\\x86\\x17\\xca\\x41\\x0e\\x11\\xc9\\xa9\\x11\\x8a\\x66\\x84\\x53\\xb3\\x29\\xff\\xb7\\x18\\xea\\xec\\x73\\x91\\x72\\xf0\\xa8\\x49\\xa0\\x84\\x81\\x92\\xa5\\xbd\\xea\\x18\\xab\\x4f\\x60\\xd8\\xd1\\xa0\\xd3\\x38\\x95\\x2d\\x77\\xb2\\xcc\\x13\\xef\\xe8\\x3c\\x76\\xe8\\xdd\\x58\\x80\\x3b\\x1d\\x8b\\x3c\\x97\\x29\\xef\\x10\\x2b\\x20\\x83\\x5b\\x7d\\xe8\\x72\\xbe\\xf3\\x01\\x0f\\x15\\xa4\\xca\\xdd\\xf0\\x7c\\xf7\\xbd\\xd2\\x22\\xd8\\x4b\\x17\\x4b\\xc2\\x15\\x27\\xcf\\xfb\\x1b\\x7f\\xfd\\xe8\\x1e\\x28\\x1d\\x30\\xcb\\x7b\\xce\\x25\\xea\\x3d\\xff\\xb6\\xea\\x1f\\xbb\\x06\\xcb\\x70\\x56\\x9a\\x95\\xed\\x1a\\x07\\xe9\\x7c\\xa4\\x2d\\xe7\\x0a\\xa2\\x18\\x15\\x9e\\xfd\\x60\\x8f\\xa9\\xb0\\x89\\x6e\\x0b\\x58\\x51\\x8a\\x32\\x2f\\x25\\x1d\\x13\\x3e\\x58\\xc8\\xfc\\x14\\x28\\xab\\x0a\\x17\\x0e\\xd8\\x45\\xc7\\x5f\\xb4\\x03\\xf1\\xff\\xb9\\x7d\\x2d\\x2a\\x6d\\x4f\\x27\\x79\\x11\\xd3\\x26\\xc1\\xca\\xbb\\xb8\\x51\\x6c\\xbc\\x17\\x90\\x8a\\xb8\\x1f\\xf8\\xd7\\x9a\\xf4\\x46\\x11\\xea\\x1d\\x05\\x87\\x9c\\x1e\\xc8\\x1d\\x06\\x93\\x6e\\x0f\\x4a\\x0a\\xef\\x6d\\x57\\x48\\xe1\\x81\\xd3\\x0e\\xc2\\x52\\x36\\x59\\x7a\\x97\\x3d\"},\n{{0x7b,0x3a,0x76,0xde,0xca,0xea,0x60,0xc4,0x1e,0x95,0xb0,0x58,0x77,0xa7,0xda,0x82,0x06,0x4c,0x27,0x27,0x8c,0x8d,0x7d,0xf5,0xf0,0xbb,0x95,0xf0,0xad,0x2d,0x04,0x35,},{0xf8,0x0d,0xb5,0xc2,0x87,0x21,0xb1,0xc6,0x11,0xbd,0x87,0xeb,0x14,0x5a,0x98,0xbb,0xf3,0x83,0xb0,0x68,0x04,0x5d,0xf2,0x45,0x8d,0x1a,0x6f,0xda,0x09,0x9f,0x7f,0xc2,},{0x2c,0xd2,0x6f,0xb3,0xc4,0xf7,0x44,0x0a,0x72,0xaf,0xfe,0x93,0x56,0x4f,0x6f,0x65,0x59,0xad,0xb1,0x5c,0xc7,0xa2,0xba,0x10,0x87,0x9f,0xb7,0xd6,0x7e,0x47,0xd4,0xeb,0xd0,0x2f,0xe4,0x82,0x36,0x98,0xa5,0xfb,0xd4,0xa9,0x07,0xfd,0x69,0x18,0x4c,0x25,0x5a,0x17,0x0e,0x5f,0x17,0x47,0xfc,0xe9,0x68,0x10,0x2d,0xc2,0x19,0xb5,0x0d,0x02,},\"\\x37\\x5f\\xad\\xae\\xdd\\x9c\\xac\\x49\\xb6\\x4e\\x15\\x74\\x02\\x80\\x46\\x06\\x9f\\x4c\\x83\\x65\\x4c\\x8a\\x70\\x11\\xab\\xdb\\x64\\xdb\\x16\\xb4\\x7f\\xa3\\x11\\x79\\x81\\x72\\xf9\\x07\\x22\\x17\\xb0\\xa6\\xa4\\x3e\\x5d\\xf6\\xff\\xcc\\x11\\x54\\xbc\\xec\\x1c\\x68\\xe1\\xd3\\x5e\\xc0\\x58\\x80\\xd0\\x12\\xce\\x76\\xe4\\xce\\xbf\\x30\\x1b\\xb2\\xec\\x98\\x3d\\x00\\xb4\\xa0\\x54\\x0c\\x93\\x7f\\xf1\\xc6\\xdf\\x94\\x41\\xc6\\x1b\\xdb\\x3b\\xe8\\xe0\\xc7\\xc1\\x1a\\x35\\xd4\\x9b\\x6f\\x55\\xc3\\x81\\x26\\x9a\\x0e\\x76\\x8e\\xfb\\xd4\\x53\\x44\\x7f\\xe4\\x8b\\x75\\xac\\x39\\x64\\x6c\\xa8\\x2e\\xca\\x7d\\x14\\x93\\x04\\x42\\x34\\x91\\x87\\x1c\\x10\\xdb\\xcf\\xc5\\x97\\x3a\\x57\\xfa\\xb8\\x37\\x1c\\x30\\xcb\\xc4\\xe9\\x0b\\xec\\xc0\\xb6\\x71\\x52\\x22\\x6e\\xe1\\x77\\xb4\\xff\\x36\\x8e\\xc8\\x79\\xb3\\x91\\xeb\\x95\\xe3\\x6d\\xcb\\xb0\\x7b\\x2c\\x16\\xba\\x39\\x55\\x45\\xd4\\x52\\x9f\\x72\\x7b\\x1a\\x11\\xef\\x65\\xd1\\x20\\x97\\x6b\\x7c\\xcc\\x86\\xaf\\x4b\\xd2\\x04\\xcb\\x94\\x89\\xc9\\x21\\xe4\\x3b\\xa5\\xe8\\x50\\xcf\\xe5\\x98\\x99\\xf1\\xc1\\xec\\x4a\\xa5\\xc9\\x2b\\x6d\\xac\\x69\\x14\\xb1\\x95\\x2b\\x53\\xdc\\xb5\\x40\\xb4\\x09\\x23\\x13\\x81\\x56\\x89\\x87\\xbb\\x22\\x36\\xbc\\x40\\x89\\x5d\\xf3\\xf1\\x7e\\xab\\x7c\\x02\\x74\\xf2\\x24\\x4f\\x95\\x86\\x12\\xe8\\x8e\"},\n{{0x5f,0xf8,0xd4,0x05,0x26,0x08,0xeb,0x03,0x3a,0x5e,0x94,0xb6,0x03,0xce,0x38,0x4d,0x84,0x52,0xf6,0x0a,0x26,0x49,0x8b,0x91,0x12,0x56,0x7f,0x34,0x10,0xc1,0x86,0x66,},{0xc4,0x90,0x0d,0xe2,0x4d,0x9a,0xf2,0x48,0x27,0x63,0x10,0x99,0x26,0xaf,0x7c,0x48,0x13,0x80,0xfa,0xbc,0xda,0x94,0x40,0xc1,0xa5,0x3e,0xa1,0xcd,0xc2,0x7e,0x65,0x68,},{0xb7,0x37,0xd4,0xe5,0xbe,0x27,0xde,0xb6,0xd8,0x77,0x29,0xc6,0x36,0xdf,0xf7,0xa4,0x06,0xc0,0x13,0xf3,0x13,0xc3,0x8c,0xf6,0x83,0xfe,0x14,0xf7,0x5a,0x3b,0x30,0x05,0xd9,0x53,0x5d,0x7e,0x58,0x15,0xc8,0xf8,0xb3,0x7c,0x51,0xd6,0x92,0x71,0x11,0xc9,0x79,0xf7,0xd9,0xd8,0x1a,0x34,0x7a,0xa9,0xcc,0x09,0xed,0x4e,0x6c,0x18,0xe9,0x0f,},\"\\x13\\x8c\\x60\\x55\\x7c\\x2e\\x90\\x08\\xaf\\xc0\\x3d\\x45\\xbe\\xc7\\x1f\\x96\\x11\\x49\\xa0\\x83\\x59\\x26\\x75\\x1c\\x8f\\xf3\\x93\\x5c\\x7d\\x65\\x2d\\x83\\xe1\\xb0\\xb1\\xda\\x7d\\x5b\\xbe\\x0b\\x8e\\x17\\x1a\\x4e\\x49\\xaa\\xe0\\x6f\\xd8\\xa9\\xde\\xff\\x78\\xdc\\xde\\x4d\\x25\\xb1\\xaa\\x89\\x99\\x98\\xa0\\xf9\\x9e\\x1d\\xf6\\xf9\\x33\\x7a\\x3e\\xa2\\xf2\\x4b\\x76\\xc3\\x17\\xa7\\x01\\x4d\\xb4\\xe5\\x28\\x31\\x91\\x79\\x5a\\x70\\xd8\\x82\\x1d\\x21\\x78\\x46\\x49\\x0f\\x95\\x87\\x01\\xd3\\x9d\\xc2\\xc8\\xce\\x47\\xd9\\x28\\x93\\x88\\x74\\xd8\\x7b\\x35\\x58\\x98\\x9b\\xc7\\x7a\\xf8\\x20\\x97\\x9a\\x35\\x1e\\xef\\x95\\x94\\xaa\\x5b\\x94\\xf3\\x34\\x1e\\xde\\xd4\\xea\\x20\\xb0\\x8c\\x3e\\x7c\\x56\\x10\\xd4\\x32\\x67\\x81\\x8d\\xfa\\xc0\\xa8\\x7d\\xdf\\x52\\x7f\\xbc\\xe8\\x51\\x2b\\xbf\\x85\\xb6\\x6c\\x9b\\xb5\\xd6\\x2f\\x0f\\xe8\\x40\\x48\\xf2\\x3b\\x19\\x60\\x4a\\x5c\\x8d\\x82\\xb1\\xf2\\x5a\\x8d\\xa0\\x27\\x31\\xfe\\xb2\\xec\\xae\\x48\\x9b\\x84\\x75\\xf7\\xbd\\x32\\x6d\\xdf\\x1a\\x08\\x18\\x9e\\x46\\xc0\\x8c\\xf5\\x05\\x38\\xc2\\xa3\\x63\\xe2\\xf4\\xeb\\x2c\\x01\\xa2\\x04\\xc7\\xff\\xbc\\x0b\\x98\\x1a\\xdc\\x0f\\xd9\\x97\\xaa\\xfd\\xf2\\xa2\\x22\\xee\\x84\\xc3\\x09\\xf6\\xe9\\x5e\\xc7\\xde\\x4f\\xa8\\x5d\\x47\\x68\\xd5\\xc0\\x03\\x16\\x50\\x28\\x22\\x5e\\x22\\xe0\\x9e\"},\n{{0xee,0xde,0xfc,0x17,0x57,0xe3,0xa7,0xe5,0xed,0x39,0x46,0xdb,0xed,0xc3,0x96,0xa3,0x62,0xf6,0x83,0xd2,0xc5,0x1b,0x0b,0x9f,0x60,0x76,0x5d,0x4b,0xfc,0x51,0x34,0xde,},{0xa9,0x87,0x2b,0xc2,0x19,0x2f,0xc0,0x2b,0x18,0x9c,0xee,0xd4,0x03,0xab,0x9f,0x27,0x0a,0x03,0x2a,0x83,0x5f,0xde,0xbf,0xaf,0x1c,0x9d,0x69,0x34,0xed,0x83,0x04,0xbc,},{0xd5,0xbe,0xa8,0xea,0x9a,0x5f,0xe9,0xed,0x6d,0x2b,0xf8,0x39,0x93,0x0c,0x0c,0x6c,0xd5,0x03,0x9e,0x98,0x8f,0x55,0x1f,0xde,0xdb,0x54,0x37,0xe1,0xc1,0xaf,0x0e,0xd7,0xb3,0x89,0x7c,0x03,0x57,0x11,0xc3,0xc5,0x19,0x26,0xbe,0x8d,0x1b,0x32,0x02,0x4d,0x5c,0xd5,0x82,0xf5,0xf8,0x36,0x9a,0xd8,0x4d,0x18,0xb1,0x25,0x02,0x65,0x2f,0x07,},\"\\xb1\\x94\\xdb\\x73\\xf9\\x94\\xcb\\xdc\\x3c\\xbe\\x63\\x0b\\xa7\\x2c\\x47\\xc2\\x24\\x9b\\xc0\\x59\\x2a\\xb5\\x47\\x94\\x2b\\x1d\\x1b\\x88\\x2b\\x44\\xf5\\xb3\\x85\\x5e\\x56\\x8b\\xdd\\xdf\\x92\\xef\\x05\\x02\\x2d\\x88\\xfc\\xfc\\x29\\x4e\\x76\\xb6\\x4a\\x00\\xe9\\xc7\\x43\\x55\\x37\\x37\\x63\\xe4\\x9a\\x4e\\xbc\\x47\\x24\\x3d\\x48\\xa9\\xad\\x58\\x89\\x94\\xa5\\x18\\xf8\\x0f\\x86\\x15\\xc2\\xb3\\x1d\\xa5\\x87\\xa5\\x3e\\x52\\x9d\\x43\\x5a\\x86\\x97\\x35\\x0d\\xfc\\xde\\x02\\xd2\\x0c\\xce\\x7d\\x5e\\xee\\xfe\\x3f\\x5a\\xb2\\xaa\\xc6\\x01\\x25\\x9c\\xda\\x38\\x53\\x8a\\x1b\\x83\\x01\\xf9\\x83\\x2e\\x75\\xab\\x90\\xf8\\xa9\\x32\\xf2\\x67\\xea\\xc1\\x81\\x00\\x39\\x65\\xd5\\x26\\x6f\\x20\\x61\\x80\\xc6\\xc3\\x80\\xec\\xe8\\x03\\x57\\x7c\\xcb\\x46\\x17\\x6b\\xf6\\x07\\x15\\x94\\x86\\xf2\\x42\\x59\\x74\\x7e\\x2c\\xa6\\xfb\\x19\\x12\\xdb\\x7b\\x78\\xa9\\x73\\xb2\\x84\\x63\\x87\\xc1\\x20\\x80\\x30\\xee\\x1f\\x40\\x0d\\x0c\\x5b\\x5e\\x8b\\xde\\x96\\x35\\xae\\x55\\x63\\x8b\\xa1\\x7c\\x73\\x4d\\xe8\\x63\\x8b\\xb8\\x5d\\xfc\\xd7\\x66\\x29\\xa7\\xf9\\xf4\\x0d\\x6a\\xb9\\x54\\xd5\\x5b\\xf8\\x57\\x5f\\xc9\\xc9\\xa5\\x95\\x09\\x7e\\x08\\x93\\xdb\\x5a\\x7b\\x8a\\x6c\\x45\\x5e\\xcb\\xd3\\xd2\\x2d\\x72\\x5e\\x19\\xde\\x29\\x41\\xf4\\x67\\xf9\\xeb\\x93\\xd6\\x6a\\x0e\\x2b\\xbd\\xbf\\x92\\xed\\x1c\"},\n{{0x09,0xd2,0x2b,0xba,0xa5,0x95,0x6c,0xfa,0xcb,0xbf,0x9f,0xd5,0x51,0x09,0x75,0x12,0x86,0x86,0xc4,0x0c,0x6e,0xa9,0x6b,0x89,0xef,0x4c,0x0f,0x0c,0x64,0x9b,0xcd,0x7f,},{0xe5,0x59,0xea,0x8a,0xcb,0xdc,0x61,0xb6,0x70,0x9a,0x7d,0x83,0xae,0x15,0x84,0x9a,0x6c,0x78,0xb2,0x03,0x92,0x3d,0xd0,0xa2,0x99,0x23,0x9e,0xe4,0x88,0x69,0x30,0xba,},{0xe6,0x52,0x75,0xc4,0x32,0x8a,0x70,0xad,0x62,0x40,0x8e,0xd7,0xfb,0x17,0x28,0xbe,0x87,0xa7,0x3a,0x81,0x4f,0xee,0x8e,0xbd,0x94,0xf2,0x66,0x5c,0x71,0xbc,0x66,0xab,0x0c,0x1b,0x07,0xa6,0x00,0xb3,0x0b,0xc0,0x81,0xa7,0x4c,0x53,0x68,0x57,0xc2,0x06,0x10,0x38,0x4b,0xe2,0x68,0xd9,0xaf,0x3e,0x3e,0xcd,0xdd,0x3e,0xb0,0xc1,0x4c,0x0c,},\"\\x1c\\x26\\xa0\\xf3\\xa1\\xa5\\xb2\\xd7\\xd5\\xb2\\x97\\xaf\\x8a\\x6a\\x68\\x9d\\x7c\\x62\\xa2\\x52\\x67\\xe1\\x97\\xd2\\x3b\\xec\\xd2\\xf2\\xb8\\x16\\xc4\\xde\\x92\\xfb\\xda\\xff\\xb9\\x41\\xc3\\xfc\\x8d\\xb7\\xa8\\x43\\x35\\xa8\\x4c\\xfb\\xc9\\x2c\\xb3\\xac\\x80\\x6e\\xd5\\x8d\\xf1\\x6b\\x6b\\x8e\\x11\\x9a\\x48\\xdf\\x4f\\x27\\xc7\\x1e\\x93\\x1a\\x59\\x38\\xe7\\xd0\\x02\\x73\\x48\\x85\\xe1\\x3a\\x25\\x8a\\x15\\xb6\\xe1\\x13\\x6e\\xfb\\xa7\\x2f\\x1d\\x09\\x6b\\x68\\x9f\\x76\\x18\\xf4\\x9c\\x96\\x80\\x63\\xe8\\xf9\\x91\\xfa\\x0b\\x55\\x60\\x1e\\x43\\x0e\\xee\\x13\\x49\\x2a\\x1b\\x09\\x41\\x3e\\xb2\\x38\\x13\\x59\\x1a\\x7a\\x9f\\x07\\x0c\\xc3\\x96\\xca\\x9d\\x1f\\xac\\xdd\\x4f\\x4c\\xe3\\x7c\\x40\\xf7\\x24\\x5f\\x55\\x03\\x5e\\x10\\xfa\\xd6\\xb8\\x5b\\x5f\\x01\\xa1\\xda\\xac\\xc0\\xdf\\x94\\x06\\x9f\\x7d\\xe8\\xf6\\x46\\x7f\\x96\\xd1\\xfb\\x98\\x64\\x8e\\x8a\\x05\\x20\\xa8\\xcd\\x72\\x3c\\x98\\xe9\\xdc\\x2d\\xd4\\xb2\\x93\\x4d\\x82\\x28\\xf0\\xae\\x1a\\x41\\x5b\\xd3\\xa7\\xcd\\xa3\\x8d\\x7a\\x99\\x83\\xce\\x1a\\xf6\\xf8\\xc9\\x70\\xa2\\xa5\\x91\\x63\\x5f\\xe1\\x2b\\x91\\x75\\x36\\xef\\x81\\x5e\\xaf\\x1a\\x31\\x38\\xd7\\x0c\\xe7\\x0a\\x79\\x42\\x64\\xd7\\xc9\\x86\\xd9\\xee\\x32\\x90\\x44\\x5f\\x15\\xa9\\x24\\x8f\\x27\\x65\\x27\\x1e\\x5a\\x99\\x21\\x96\\xae\\x33\\x1a\\xbd\\x41\\x64\\xbf\"},\n{{0x77,0x82,0x6e,0xd3,0x51,0xa3,0xf0,0x92,0x54,0xae,0x56,0x92,0x88,0x5d,0x77,0x4c,0xb3,0xf2,0x44,0x10,0xa4,0x80,0x9f,0xd9,0x0f,0x8a,0x00,0xda,0x9a,0xee,0x99,0x03,},{0x3e,0xac,0x8f,0x41,0xee,0x73,0xe6,0xef,0x13,0x68,0x21,0xf7,0x95,0x7a,0x1c,0x27,0xe1,0x56,0x38,0xd0,0xe3,0x91,0x6e,0x6c,0xaa,0xc6,0xfb,0x7b,0xeb,0x7b,0xcf,0xb0,},{0x97,0x7a,0xdc,0xcd,0xb8,0x29,0xb4,0x0b,0xbd,0x8e,0x53,0x85,0x6a,0x78,0x3d,0xb3,0x46,0xa3,0x9d,0xff,0x62,0x04,0x1a,0x29,0x72,0xd2,0x90,0x09,0xf1,0xc9,0xff,0x81,0xb8,0xad,0x54,0xcb,0x90,0x1e,0x49,0x7c,0x1d,0x30,0x21,0xb5,0x0b,0x6c,0x69,0xee,0x73,0x55,0x8f,0xd7,0xbe,0x05,0xd6,0x25,0xf5,0x72,0x7f,0x9a,0xf2,0xce,0x87,0x02,},\"\\x1f\\xf0\\x6c\\x0b\\x39\\x99\\xce\\xcb\\x19\\x00\\xa4\\x7d\\x26\\x7b\\xea\\xfb\\xb3\\x5d\\x93\\xd1\\x4c\\xb2\\xc8\\x92\\x5e\\x3e\\x3f\\xe5\\xd9\\x67\\x58\\x69\\x25\\xee\\x4b\\xaa\\x41\\x99\\x8e\\xdd\\x01\\x03\\x20\\x58\\x10\\xaa\\xd5\\xc0\\xbb\\xdc\\x77\\x87\\x44\\x76\\x81\\x02\\x46\\xd1\\x30\\x89\\xa6\\x4d\\xb5\\x76\\x42\\x4f\\xae\\x0b\\xed\\x96\\x64\\xa4\\x2a\\x49\\x11\\x47\\xd1\\xee\\x3b\\x9c\\x3b\\x1b\\xa4\\x87\\x5b\\xe1\\x54\\x62\\x39\\x25\\x40\\xf9\\x97\\x8d\\x9a\\x46\\x30\\xba\\x4c\\x52\\x54\\x99\\x75\\x1a\\x45\\xef\\xc2\\x99\\xec\\x7d\\x73\\xb1\\x7f\\x9a\\xd2\\x75\\xee\\x71\\xa6\\x87\\xe7\\x26\\x90\\xd7\\x32\\x02\\x42\\xd2\\xdc\\x2b\\xd4\\xd5\\xc5\\xcf\\x0f\\x17\\xa4\\x65\\x18\\x5d\\xcf\\x60\\xf8\\xef\\xff\\x53\\x90\\x3f\\x20\\xb0\\xc2\\xab\\x21\\x92\\xd4\\x43\\x68\\xf2\\xf2\\xfb\\x36\\x04\\x8a\\xf0\\x71\\xf7\\xaa\\x85\\x7b\\x14\\xad\\x1d\\x11\\x46\\x12\\x05\\xbe\\xbe\\x17\\xe0\\x2b\\xe2\\xe3\\xcc\\xb6\\x09\\x28\\x21\\x88\\x5c\\x4e\\x0d\\x48\\x11\\xbe\\x3f\\x45\\xb1\\xfe\\xa0\\x88\\x45\\x3e\\x02\\x24\\x32\\xf5\\x62\\x56\\x2b\\x43\\xa3\\x55\\xcb\\x56\\x27\\x0c\\xed\\xb6\\xc2\\xc4\\x2d\\xbf\\x9b\\xe8\\x50\\xe7\\x71\\x92\\xfd\\xc6\\x5c\\xfd\\x36\\x83\\x4b\\xe9\\x88\\xdb\\xe9\\xa9\\x3e\\x25\\x18\\xc1\\x38\\xb0\\x90\\xfb\\x9d\\xa8\\x27\\xcb\\x1c\\x91\\xc8\\xfe\\x52\\xfe\\x7c\\x57\\xf7\"},\n{{0x99,0xa9,0x95,0x31,0xc3,0xcd,0x6e,0x3e,0x9c,0x90,0x0a,0x9e,0xeb,0x26,0x26,0x7e,0x72,0xf0,0x9d,0x11,0xb6,0x51,0xa8,0x97,0xeb,0xb7,0x9b,0xe0,0x16,0xf6,0x4c,0x6e,},{0x9b,0xf9,0xf8,0xb4,0x8a,0x27,0x28,0xe0,0x26,0x08,0xfc,0x19,0x89,0x9d,0x21,0x96,0x56,0x83,0x9d,0x1c,0xc1,0xe9,0xa8,0x98,0x4d,0xf6,0x74,0xec,0x26,0x66,0x2f,0x41,},{0x0e,0x89,0xda,0x5d,0x94,0x9c,0xf2,0xbf,0x40,0xc7,0xe1,0x7c,0x2d,0x0f,0x9c,0xea,0xbc,0x88,0xa0,0x92,0xeb,0x4d,0x49,0xcf,0xbf,0xea,0xb7,0xc8,0xbf,0xf4,0x32,0x45,0xc6,0x7b,0x9e,0x2e,0x92,0xf9,0xbc,0xb9,0xb3,0x4b,0x3f,0xcf,0x8b,0x01,0xfa,0x2e,0xa7,0xa9,0x64,0x9f,0x81,0x4c,0x3a,0xa9,0x8b,0x3d,0xd0,0x45,0x40,0xc3,0x1d,0x09,},\"\\x7a\\x89\\xc0\\xc1\\x95\\x2f\\xdc\\x42\\x98\\xdc\\xae\\xa8\\x54\\xef\\xc1\\x34\\x65\\x6b\\xe1\\x47\\xe9\\xe8\\xe8\\x2f\\xc9\\xa4\\x49\\x05\\x9d\\x80\\x57\\x0f\\x75\\x67\\x6b\\x81\\xc4\\xa9\\x4f\\x76\\xa9\\x68\\x20\\x0c\\xde\\xb0\\x98\\x8c\\x73\\xf5\\x9a\\xfc\\x72\\xad\\x4c\\x31\\x03\\xe1\\x9f\\xe6\\x3b\\x7e\\x95\\xe1\\x40\\xb5\\xcb\\x2e\\xfc\\x7b\\x97\\xa6\\xff\\xbb\\x6c\\x29\\x8d\\xda\\xce\\x3b\\xe6\\xd2\\xed\\x3d\\x59\\x8b\\x8b\\xdf\\x0c\\x2f\\xe6\\xc9\\x76\\x02\\x14\\x2a\\x76\\xe9\\x78\\x51\\x4c\\x19\\x6c\\x1b\\x9a\\x88\\xef\\xdc\\x19\\x25\\xfc\\x50\\x61\\x55\\xcf\\xf9\\xa2\\xf2\\x1a\\xb6\\x34\\xe2\\xb9\\x3e\\x96\\x92\\x8a\\x5d\\x8f\\x7c\\xe4\\xcb\\x73\\x26\\xd9\\x68\\x94\\x69\\x24\\x2b\\xa9\\xc6\\xa0\\x1b\\x77\\x49\\x6b\\xad\\xef\\x87\\x57\\x8f\\x5a\\x17\\x28\\x4e\\x90\\x0a\\x72\\xdf\\x14\\x1c\\x61\\x99\\xb0\\xe7\\x1a\\xb5\\xda\\x43\\x75\\x03\\x76\\x17\\xec\\x61\\x96\\xd4\\xf4\\xe2\\x3a\\xe2\\x91\\x6a\\x72\\xd0\\xfc\\xe7\\x96\\x02\\x23\\x05\\xac\\x9f\\xbb\\xbb\\xe4\\x70\\x5b\\x34\\x0e\\x42\\xb7\\x8e\\x1c\\x02\\xbb\\x10\\x01\\x86\\x0c\\xdc\\xaf\\x71\\xed\\x89\\x25\\x5d\\xd5\\x6c\\xc0\\xb3\\x1c\\x59\\xd4\\x59\\x6d\\xce\\xf8\\x4e\\x22\\x23\\x4b\\xe5\\x62\\xbd\\x80\\x1e\\x94\\x11\\x1d\\x83\\xa7\\x80\\x64\\xc9\\x0f\\x9d\\x82\\xfc\\xe9\\x1f\\x68\\xab\\xb0\\x3c\\x73\\xb6\\xbd\\x8d\\x7e\\x02\\xd4\"},\n{{0xaa,0x58,0x40,0x3e,0x76,0x3b,0xac,0x40,0x5d,0xb0,0x65,0xeb,0x11,0xeb,0x6b,0xe3,0xe3,0xb6,0xcf,0x00,0xec,0x4a,0x22,0x2b,0x52,0xbf,0xf4,0xb6,0xe3,0xd1,0x56,0xac,},{0x16,0x7f,0x9b,0x9a,0x46,0x65,0xf9,0x3f,0x5d,0x7d,0x30,0x16,0xac,0xe6,0xfb,0xd1,0x34,0x20,0xb2,0xe5,0x1e,0x72,0xbd,0xe5,0x9e,0xed,0xf2,0x69,0x93,0xb6,0x6c,0xae,},{0x64,0xb5,0x98,0xca,0x5b,0x8f,0x9a,0xe7,0x42,0xe4,0x6e,0xe0,0xd8,0xc1,0xaa,0xf3,0x14,0x58,0xb5,0x0c,0x25,0xd2,0x67,0xa6,0x77,0xe4,0x4b,0xe5,0xb7,0x55,0xf1,0x4d,0x51,0x80,0x1a,0x30,0x39,0x9b,0xfc,0xc3,0x8d,0x14,0x07,0x1a,0xa0,0xae,0x93,0xda,0x82,0x5a,0x58,0x1a,0xb6,0xc2,0x07,0x25,0xa0,0xa9,0x10,0xb4,0x73,0x5d,0xfa,0x0b,},\"\\x3b\\xaa\\x09\\x98\\xff\\x02\\xb3\\x2b\\x90\\xb5\\x1f\\x9a\\x84\\x0c\\x7b\\x5c\\x58\\x70\\xcf\\xb1\\x81\\x0a\\x9b\\x0f\\x77\\xb5\\x59\\x09\\xd4\\x7a\\xd3\\x35\\x14\\x7a\\x99\\x1c\\x29\\xfb\\xeb\\xfc\\x59\\x2e\\x93\\x07\\x17\\x5c\\x19\\x64\\x12\\x9a\\x2d\\x5e\\xfc\\x62\\x15\\x80\\x74\\x53\\xbc\\xd7\\x26\\x96\\x97\\x81\\x22\\x2b\\xca\\xd1\\xc9\\x9a\\x49\\x74\\x8b\\x9e\\xe6\\x67\\xc4\\xd0\\xc8\\x28\\x89\\xe2\\xf5\\x00\\x64\\xc1\\x15\\xdb\\xd8\\xfb\\x48\\x3d\\x72\\xab\\x0c\\xca\\xdf\\x76\\xbd\\xdb\\x2d\\xc7\\x27\\xdb\\xc3\\xfa\\x5c\\x46\\x24\\xc2\\x83\\xd8\\x92\\x1c\\x8a\\xa4\\x42\\x51\\x10\\xdc\\xdd\\x69\\xc0\\x5e\\x5e\\xd5\\x9b\\x35\\x96\\x25\\xee\\xaa\\xec\\x1e\\x27\\xea\\xfe\\x9d\\x9a\\x5c\\xe7\\x36\\xc3\\xf9\\xc5\\x27\\xea\\x54\\x78\\x18\\xb9\\xbc\\xa6\\x81\\x1b\\xe4\\xcc\\x15\\x05\\x8a\\x6f\\x5b\\x68\\x33\\x03\\xb8\\x0c\\x90\\xc9\\x4a\\x83\\xb8\\xb1\\x58\\x69\\x71\\x3a\\x66\\xb1\\xe0\\xf6\\x56\\x33\\x1b\\x28\\x6d\\x1e\\xf7\\x69\\x88\\x34\\xab\\x3e\\x13\\x84\\x17\\xaa\\xd6\\xbb\\x3a\\xb3\\xbd\\x9f\\xc7\\x87\\x61\\xa4\\x82\\xdf\\xc6\\x54\\xf3\\xf8\\x62\\x8c\\x8d\\x9f\\xc1\\x60\\x18\\x89\\x8f\\x16\\x41\\xe8\\x62\\x2b\\xd2\\x72\\xe3\\x8d\\x41\\x70\\x6c\\xb9\\xce\\xbe\\x6e\\xe5\\xe1\\x73\\x57\\x6b\\xf6\\x1b\\xb1\\x18\\x8c\\xf2\\xf3\\x9c\\x62\\x22\\x0b\\xba\\x88\\xfc\\xb4\\xde\\x48\\x98\\xb2\\x5b\\x04\"},\n{{0x10,0x44,0xee,0x37,0x08,0xc0,0xb0,0xe9,0x09,0xa8,0xcb,0x2b,0xa2,0xcd,0x0a,0xf8,0xd2,0x8a,0x5d,0xe0,0x1d,0x96,0x2e,0x82,0x60,0x87,0xfb,0x23,0x2d,0xf7,0xb2,0xd2,},{0x46,0xd2,0x41,0xea,0x0c,0x70,0x2c,0x18,0x89,0xd4,0x46,0x55,0x82,0x46,0x29,0xb6,0x72,0x84,0xd4,0xe6,0x44,0xa4,0x8f,0xa4,0x54,0x55,0xd2,0x7a,0xc5,0xf6,0x25,0x29,},{0x7d,0x6b,0xed,0x7f,0x87,0xd0,0x90,0xab,0xe0,0x13,0xc3,0x1e,0x12,0x03,0x90,0x3b,0xac,0x9c,0x93,0x44,0x5d,0x06,0xc7,0xb5,0x3d,0x31,0xd1,0x5f,0x97,0x0d,0x88,0x64,0x7a,0x7e,0xd2,0xc3,0xa6,0x30,0x50,0xba,0x19,0xd6,0x80,0x43,0xaa,0xdd,0x18,0xbd,0x86,0x1d,0xe1,0xac,0x47,0x15,0xb8,0xe8,0x28,0xb2,0xb1,0x6f,0x8a,0x92,0xb0,0x01,},\"\\xb8\\xa4\\x45\\x45\\x5f\\xb6\\x6e\\x17\\xe3\\x14\\x3d\\x35\\x20\\x4c\\x9e\\xa9\\x34\\x74\\xee\\xbe\\xef\\x93\\x96\\x3e\\xe5\\xc1\\xd3\\x77\\xca\\x21\\x7a\\xcd\\x4c\\xa6\\x3e\\x57\\x55\\xda\\x08\\xfb\\xff\\xdb\\xd4\\x35\\x2b\\xf1\\x65\\x19\\x38\\x96\\xc8\\xd6\\xf7\\x6b\\xb4\\xcd\\x3b\\xc2\\xd3\\xa4\\x76\\xa4\\xe3\\x20\\x82\\x4a\\x12\\x10\\xce\\x74\\xd0\\x01\\x4d\\x74\\x7f\\x11\\x1e\\xec\\x31\\x0c\\x5c\\x89\\xed\\x4d\\x08\\x50\\xe8\\x11\\xf8\\x0a\\x8b\\xb2\\x8d\\xca\\xf6\\xf4\\x11\\xdf\\x83\\xe2\\xc1\\xdf\\xd9\\x0c\\x4a\\xd2\\x35\\x61\\x45\\x4e\\xb5\\xd7\\x56\\xb6\\x3b\\x4e\\xa7\\xf3\\x7d\\xc5\\xd4\\x66\\xc1\\x6e\\xf7\\x0d\\x11\\x19\\x0c\\x4f\\x53\\x16\\xfe\\x2a\\xa8\\x59\\x74\\x40\\xe8\\x8b\\xbe\\xba\\xeb\\x35\\xea\\x5f\\x04\\xf0\\x7b\\x03\\x39\\x26\\x41\\x58\\xef\\x90\\x9a\\xd5\\x16\\x3b\\xfc\\x24\\x8c\\xd7\\x24\\x13\\x3e\\x27\\x4f\\x81\\x26\\x95\\xf2\\x90\\xe5\\x71\\x76\\xa9\\x6b\\x93\\x93\\xd0\\x7b\\xb3\\x10\\x29\\x9f\\x5d\\x2a\\x6b\\x6d\\xd1\\xda\\xbc\\xb5\\x1b\\xf2\\x9c\\x5a\\xfa\\x7e\\xbb\\x07\\x01\\xc6\\xc8\\x47\\x67\\xac\\x13\\x77\\x93\\x09\\x1f\\xe0\\xed\\x6e\\x47\\xd7\\x80\\x62\\x8a\\x32\\xc8\\x4f\\x83\\xe0\\x0e\\x9c\\x16\\x74\\x2a\\x52\\x3e\\xcb\\x63\\xc2\\x4f\\x4a\\x33\\x8e\\xd2\\x99\\xa0\\x61\\x94\\x92\\x4f\\x44\\xc5\\xa5\\xd3\\xc9\\x37\\xff\\x9b\\x09\\x45\\x98\\x2a\\xd2\\x4a\\x2d\\x1c\\x79\"},\n{{0x95,0xdd,0x1a,0x5e,0x65,0x8f,0xa6,0xc8,0xd4,0x25,0x07,0xb3,0xe5,0xb8,0xed,0xb5,0xba,0xec,0xa6,0x2d,0xeb,0x00,0xfc,0x5d,0x4d,0xca,0x8e,0x1a,0xb5,0x83,0x5e,0x59,},{0x3a,0x53,0x23,0xdd,0x1e,0x07,0xf3,0x23,0xbb,0x6d,0x83,0xe9,0xc2,0xdb,0x92,0xa2,0x9f,0x62,0xe2,0xe0,0x03,0xee,0x0d,0xea,0xcd,0x7e,0x2e,0x4e,0x03,0x0d,0x8d,0x27,},{0xd0,0x2a,0x75,0x23,0xdc,0xbd,0x29,0x57,0x6b,0xa8,0x09,0xb5,0x31,0x03,0x77,0x74,0xdf,0x41,0x73,0x4a,0x41,0x17,0x58,0x13,0x11,0x9c,0x6a,0x6a,0x78,0x8c,0xd9,0xb8,0xad,0x78,0x08,0x65,0x67,0x86,0x67,0x69,0x9a,0xe6,0x6d,0x01,0x09,0x19,0xa9,0x66,0xa0,0x51,0xc0,0x81,0x63,0xdf,0x67,0xa9,0x77,0xee,0x6e,0x22,0x0d,0x0d,0xc3,0x0f,},\"\\x9b\\x7a\\xfd\\x48\\xc4\\x74\\x60\\x4c\\x26\\x36\\x75\\x31\\x55\\x68\\x40\\xc3\\x88\\x66\\x8b\\x0f\\x38\\x40\\x06\\x3d\\xfc\\x98\\x69\\xad\\x5b\\x90\\x12\\x74\\xb9\\x31\\x29\\x3d\\x04\\xf3\\xc8\\xe8\\xf7\\xf8\\xea\\xb8\\x15\\xa6\\x41\\xd7\\xc3\\x51\\x28\\x4e\\x8b\\xb0\\x43\\x7a\\xc5\\x51\\xbb\\x29\\x43\\x89\\x64\\xe6\\xa7\\xc7\\xba\\x77\\x23\\x44\\xb3\\x33\\xf9\\xed\\xa5\\xa7\\x75\\x68\\xc8\\x93\\x1d\\xdc\\xaf\\x21\\xe3\\x2e\\x07\\xb1\\x0b\\xf4\\x82\\x0f\\xb8\\x59\\xbc\\xf8\\x7b\\x81\\xc4\\xbf\\xf4\\x26\\xf2\\x4a\\x4d\\x46\\x8f\\x2e\\x9a\\xed\\xa8\\xf1\\x7d\\x93\\x97\\x09\\x97\\x0d\\xb1\\x1d\\xf7\\x62\\x47\\xe9\\x8a\\x39\\xeb\\x8b\\x38\\xf5\\x94\\x9f\\x34\\x9f\\x2a\\xe0\\x5a\\xb4\\x8c\\x01\\x85\\x17\\xc4\\x8f\\xa0\\x20\\x5d\\xc7\\xf1\\x56\\x64\\x53\\xe1\\x05\\xe4\\x8c\\x52\\xeb\\x45\\x5c\\x0c\\x40\\x80\\x2f\\x79\\x7b\\x3e\\xef\\xb1\\xe2\\xf3\\xb1\\xf8\\x43\\x15\\xae\\xd5\\xb0\\x71\\x1c\\x64\\x99\\xa6\\x91\\xb7\\x4b\\x91\\xf1\\x2e\\xf7\\x0f\\x76\\xc4\\xc0\\x5c\\x1a\\xa1\\xa9\\x93\\xe2\\xf3\\xe5\\x28\\xab\\x34\\x3d\\xd2\\x36\\x81\\x62\\xf4\\x03\\x6a\\x61\\xa1\\x3a\\x88\\x04\\x5d\\xcd\\xef\\xa8\\x5d\\x68\\x53\\x22\\x75\\xbc\\xf5\\xb8\\xf5\\xf0\\x0e\\xfd\\xea\\x99\\x9a\\x95\\x78\\x31\\x75\\xd9\\xee\\x95\\xa9\\x25\\xd4\\x8a\\x54\\x49\\x34\\xd8\\xc6\\xb2\\x62\\x22\\x5b\\x6e\\xbe\\xa3\\x54\\x15\\xdd\\x44\\xdf\\x1f\"},\n{{0x1a,0xbc,0x0b,0x9a,0xa0,0x1d,0xc5,0x7c,0xa5,0x3e,0xfe,0x73,0x80,0x96,0x2b,0x1a,0x88,0xd5,0x0a,0x96,0x4f,0x5c,0xd9,0x86,0x40,0x98,0x2c,0x74,0x39,0x3f,0x29,0x26,},{0x8d,0x4f,0xd1,0x43,0x94,0xd7,0xc1,0x40,0x57,0x00,0x30,0x69,0x83,0xfb,0xf7,0x6e,0xa9,0xf1,0x71,0xb1,0x5a,0x6b,0x56,0x61,0x2a,0x1f,0xeb,0x1c,0xbd,0xae,0x5d,0xd5,},{0xf7,0x38,0xaf,0x2d,0x3e,0x29,0x0b,0x3d,0x23,0xd9,0xaf,0xf7,0x41,0x4b,0xfc,0x5f,0xfa,0x47,0x23,0x5d,0xc0,0x53,0x68,0x7a,0x8b,0xa5,0xc8,0x54,0x1b,0x85,0x11,0xf7,0x81,0x56,0x6c,0xda,0xa1,0x30,0xe0,0x67,0x7d,0xb5,0x5f,0xa8,0xbe,0x9d,0x81,0xa0,0x92,0xcb,0x58,0x92,0x3a,0x86,0x28,0x49,0x4d,0x2f,0x62,0xd9,0x5c,0x16,0x71,0x00,},\"\\xda\\x2d\\xd9\\x40\\xd5\\xe1\\xdb\\x6e\\x80\\xbf\\x7e\\x2b\\x78\\x2e\\x7e\\x74\\x5c\\xd4\\xfd\\x25\\x2e\\x98\\x15\\x17\\x97\\x58\\x87\\xdd\\x05\\xac\\x77\\xed\\x83\\x7d\\x08\\x29\\x61\\x57\\x5e\\xfe\\xdf\\x30\\x1f\\xdf\\x24\\xb7\\x07\\x18\\xb9\\x91\\xb8\\xd9\\x2b\\xdd\\x2e\\x6b\\xee\\x17\\xc8\\xaa\\x4b\\xc6\\x94\\xa7\\x27\\xbc\\xfc\\x78\\xfd\\x85\\x19\\x5c\\x42\\xca\\xf8\\x83\\xa2\\xc3\\x8d\\x16\\x1c\\xad\\xd7\\x9c\\xfd\\xa9\\xa3\\x91\\x10\\xe1\\x26\\x4d\\x30\\xbd\\x4c\\x5c\\x4a\\x58\\x76\\x77\\x7f\\x23\\x3b\\x07\\x1b\\x1b\\x0b\\x40\\x89\\x35\\xf0\\x46\\x89\\x54\\xcc\\x74\\x4a\\xf8\\x06\\x3b\\x00\\x4e\\xde\\x56\\xcd\\x98\\x1c\\x4d\\xd5\\x60\\x8a\\xbf\\xfe\\xae\\xc9\\xe5\\x8f\\x3f\\xaf\\xaa\\x67\\x14\\x67\\x80\\x4b\\x7f\\xa2\\x55\\x8f\\x4f\\x95\\x17\\x42\\x01\\xf1\\x83\\xd8\\x0a\\x59\\x14\\x06\\x5f\\xed\\x53\\x11\\x5b\\x41\\xeb\\xc3\\x38\\xf7\\x8d\\xf0\\x50\\x05\\x3b\\x8a\\x4e\\x75\\xea\\x7c\\x6f\\xdc\\x35\\x4d\\xad\\x27\\xbf\\xd8\\xa2\\xe6\\x6f\\xcd\\x7a\\xe2\\xf5\\x87\\xd2\\x4b\\xe0\\xd4\\xa3\\x3d\\xa3\\x0a\\x22\\x0e\\x51\\xbc\\x05\\xfa\\x4e\\x41\\x2b\\x95\\x9f\\xd9\\x5d\\x89\\xea\\x6e\\xc0\\x16\\x25\\x16\\xc0\\x96\\xa9\\x43\\x3a\\x9e\\x7c\\xf5\\x99\\xc9\\x28\\xbd\\x53\\x05\\xc2\\x17\\x3b\\xf7\\x49\\x3e\\xd0\\xc1\\xc6\\x03\\xcd\\x03\\xf0\\x82\\xcc\\xe4\\x42\\x37\\xa7\\x9f\\xfd\\x8b\\xe9\\xa6\\x72\\xc2\\xeb\\xaa\"},\n{{0xcb,0xff,0xce,0x2c,0x9b,0xd3,0xe2,0x3e,0x40,0x6e,0x5f,0x66,0xe6,0x32,0xdc,0xfa,0x72,0x66,0x54,0xd2,0x9a,0x95,0x5c,0xec,0x98,0x31,0x73,0x23,0x5f,0xa3,0x59,0xd0,},{0x49,0x65,0x3e,0xdd,0x64,0xa5,0x5f,0x7c,0xd4,0x0e,0xaf,0x3f,0x8e,0x72,0xeb,0x96,0xdb,0xcd,0xee,0x39,0x8f,0x34,0x81,0x7f,0x2c,0x95,0x86,0x79,0x49,0x71,0x0b,0x14,},{0xe7,0xce,0xd4,0xfa,0x2a,0x7d,0xff,0x73,0xf1,0x06,0x8b,0xba,0xd0,0xec,0x9a,0x11,0x09,0x04,0x3c,0x97,0xa6,0x2e,0xff,0xa1,0x48,0x87,0x6f,0x09,0x69,0xed,0x4d,0xc6,0x08,0xe2,0x8b,0xce,0x79,0x7a,0xf3,0xb8,0x25,0x32,0xc9,0x4d,0xec,0x4d,0x68,0x11,0xb7,0xf5,0x63,0x67,0x91,0x29,0xfa,0xcf,0x17,0xbb,0x73,0xd6,0x93,0x75,0xeb,0x05,},\"\\x1f\\xfd\\xe6\\x82\\x6e\\x4f\\x0c\\x24\\xa7\\x96\\x1f\\x19\\x1e\\x74\\xcc\\x0b\\xbc\\x92\\x8e\\x3f\\x1a\\xec\\x3e\\xfa\\xb3\\x27\\x65\\xc2\\x50\\x1c\\xbc\\x16\\x20\\xe7\\xee\\x6f\\x61\\xfc\\xcf\\xb0\\x0c\\xfc\\xa9\\xfb\\x98\\x14\\x3b\\x52\\x9b\\xcc\\x8c\\x3d\\x0f\\xdf\\x89\\xee\\x7c\\x34\\x2f\\x10\\x18\\x15\\xfa\\xbf\\x7d\\xea\\xf9\\xf3\\x02\\xa2\\x88\\xfe\\x17\\x58\\x26\\xd5\\x90\\xd9\\x9e\\xe6\\xfd\\x92\\xda\\x74\\xf9\\x59\\x6b\\x78\\x3c\\x0e\\x7d\\x47\\xd7\\x11\\xa3\\x2f\\x39\\xea\\x41\\x65\\xe5\\x21\\x24\\x31\\x44\\x1b\\x49\\x8c\\x6b\\x70\\xdb\\x3b\\x09\\xd1\\xf4\\xe4\\xa1\\x4a\\x6b\\xae\\x39\\xda\\x50\\x88\\xbb\\x85\\xb3\\x28\\x5c\\xe9\\xdf\\x2f\\x90\\x68\\x1a\\xf2\\xc7\\x4d\\xec\\xe4\\x39\\xae\\xb9\\x1e\\x1c\\x1b\\x07\\x12\\xed\\xdb\\xee\\x8d\\x72\\x56\\x98\\x28\\xf3\\x7c\\xb7\\x20\\xc5\\x09\\xd0\\x2a\\xec\\x47\\x60\\x70\\x48\\x4e\\x9b\\x16\\xec\\x71\\x79\\x94\\x7a\\xc9\\x6c\\xaf\\x0e\\x1b\\xe8\\xb6\\xb7\\x4f\\x37\\x2d\\x72\\x35\\xfe\\x6e\\x39\\x99\\xdf\\x73\\x3b\\xcc\\xd4\\x82\\xdf\\xe2\\xe6\\x31\\xf5\\x6b\\x58\\x26\\x67\\xdc\\xe5\\xe3\\x12\\x17\\x63\\xad\\xfa\\xcf\\x3b\\x18\\xcf\\x20\\x95\\xf7\\x39\\x4d\\xee\\x49\\x27\\xfc\\x2b\\xea\\x6b\\x58\\x24\\xd9\\x0c\\xd5\\x9e\\x85\\x4e\\xc5\\x87\\x2b\\x45\\x51\\xb0\\x2e\\xfa\\xba\\x5a\\xd5\\x4a\\x9b\\x7a\\x8f\\x6d\\xe5\\xd7\\xcd\\xa5\\x82\\x5b\\x32\\x5b\\x07\\x6d\\xed\"},\n{{0x9f,0x91,0x23,0x14,0x97,0x48,0x4c,0xab,0x39,0xb9,0xe2,0x0f,0x86,0x11,0x81,0xd3,0x97,0x90,0x85,0x77,0xbb,0xb2,0x96,0x82,0x42,0xd0,0x71,0xbc,0xa4,0x81,0x3f,0xfb,},{0x88,0x24,0xbc,0x6c,0xd6,0xa6,0xf1,0x5a,0x5f,0x41,0x66,0x8f,0x2b,0x3b,0xae,0x8f,0xc4,0x96,0x73,0x83,0x07,0x8d,0x08,0xb5,0x1d,0x6d,0x1b,0x2b,0x93,0xa1,0x07,0x1f,},{0x0a,0x1c,0x70,0x6d,0xd8,0xa1,0x30,0x77,0xab,0x18,0x38,0x6c,0x65,0xfa,0x97,0xcf,0x9d,0xfc,0x43,0x54,0x2d,0x18,0x46,0xec,0xbd,0xde,0xb7,0xb3,0xc9,0x3f,0x3c,0x66,0xf3,0xcc,0xd0,0x44,0x7a,0xac,0xdd,0x4d,0xad,0x8f,0xbf,0x73,0x6c,0x4f,0xf9,0xdb,0xdb,0x62,0xbf,0xc1,0x4d,0x88,0x83,0xe3,0x85,0xbc,0xe9,0xba,0xc5,0x6a,0x35,0x0c,},\"\\x21\\xd4\\xfb\\xc9\\x81\\x63\\xc3\\xfb\\x6e\\x09\\xf7\\x75\\xc2\\xab\\x7b\\x18\\xb1\\x87\\x92\\x34\\x0b\\xaf\\xed\\xac\\xb4\\x96\\x05\\x62\\x2e\\x3c\\x08\\xaa\\x3b\\x2b\\x8d\\x0e\\x09\\x02\\xf3\\x61\\xaa\\x1c\\x0f\\x65\\x2e\\x27\\x32\\xb1\\x0a\\x0c\\x5c\\x6a\\x05\\x09\\x89\\x96\\xb5\\x88\\x26\\x7c\\xc8\\x95\\x1a\\x78\\xb5\\xd4\\x31\\xe7\\x22\\x2b\\xbb\\x50\\x8e\\xee\\xf1\\xb5\\xe8\\xb8\\xd0\\x1d\\x39\\x91\\xe1\\x8d\\xdd\\xc6\\xca\\x8d\\x22\\x2e\\xf1\\x77\\xce\\x62\\x93\\x8d\\x18\\x10\\xee\\xcf\\x06\\xf4\\x73\\x8b\\x28\\xf4\\x40\\x94\\x6c\\xca\\xd2\\xa1\\x2e\\x39\\xd3\\x86\\x11\\xbe\\xd3\\xa3\\x9f\\x93\\x41\\x9a\\x17\\x9e\\xc2\\xb1\\xb5\\x2d\\x5f\\xe5\\xc8\\x0c\\x23\\xb8\\x4d\\x88\\x03\\x75\\x5f\\x51\\x46\\x09\\x2c\\xc1\\x99\\xb4\\xbd\\xce\\xa5\\xbc\\xf2\\x03\\x7b\\xd5\\x3f\\xf6\\x34\\x66\\x94\\x15\\x5f\\x02\\x7d\\x8c\\xe2\\xba\\xff\\xe3\\x0a\\x56\\x66\\x59\\x6c\\x00\\x78\\x3a\\xae\\xad\\xe9\\xc7\\x7f\\xc8\\x63\\x79\\x42\\xec\\xe0\\x17\\xd6\\x48\\x4c\\x28\\x99\\xb1\\x91\\x8d\\x3a\\x48\\x0b\\xd5\\x15\\x76\\x78\\xd4\\x77\\x2d\\x27\\x1f\\x9b\\x99\\x76\\x8e\\xe1\\xbc\\xc4\\x6b\\x24\\x89\\xae\\x87\\xcd\\x03\\x0f\\x47\\xd1\\x33\\x3c\\x76\\x72\\xcb\\x90\\x2c\\xb4\\xf5\\xfe\\x74\\x6e\\x85\\x3d\\xe5\\x79\\x40\\xba\\x22\\x64\\xd3\\xe6\\x29\\x64\\x4d\\x65\\x3a\\x5b\\x7a\\xf7\\x8c\\xe6\\x4a\\x99\\x3f\\x36\\x25\\x0f\\x8c\\xb7\\xcb\\x45\"},\n{{0x1e,0x2b,0xd5,0x48,0x7c,0x5f,0x5c,0xed,0x46,0x1f,0x60,0x4d,0xcc,0xb4,0xe7,0x8e,0xb9,0x16,0x08,0xf0,0xb8,0x21,0xf5,0xaf,0xc4,0xe3,0xe5,0x34,0xf7,0x96,0x03,0x92,},{0xef,0x82,0x54,0x75,0xcf,0x20,0x51,0xa2,0x01,0x7a,0xe5,0x32,0xf0,0x77,0xd9,0x67,0x74,0x34,0x7d,0x27,0x67,0xea,0x7b,0x45,0xf9,0xc1,0xb8,0x60,0xab,0x99,0x35,0x06,},{0x4d,0x33,0xc9,0x6a,0x2e,0x3a,0x5d,0xb7,0x39,0x1a,0xdf,0x65,0xc1,0xcc,0x35,0x65,0xfe,0x76,0xee,0xaf,0xd0,0xb5,0xc7,0xab,0xb0,0xb4,0x92,0xa0,0xb5,0x1e,0x1f,0xa3,0x36,0x39,0x94,0x6a,0x24,0x3b,0x2d,0xde,0xf3,0x57,0x55,0x22,0x98,0xce,0x0a,0xa9,0x5e,0xac,0x6f,0xbf,0xe6,0x60,0x98,0x82,0x71,0x87,0x7e,0xb2,0xa7,0xda,0x18,0x06,},\"\\x1d\\xbb\\xbb\\x13\\xcd\\xad\\x88\\x85\\x4b\\x80\\x9c\\xed\\xed\\x27\\x33\\x43\\xd3\\x06\\xa8\\xde\\xab\\xf3\\xff\\x02\\xc9\\xce\\xc6\\xf0\\x02\\xb8\\xe9\\xe1\\x0e\\xf5\\xd1\\xb0\\xf5\\x71\\x1f\\x33\\x26\\x7a\\xa9\\x1c\\x17\\x1b\\x61\\xe9\\x60\\xf7\\x40\\x45\\x7b\\x81\\xd7\\x51\\xa4\\x73\\xf4\\x4f\\x75\\x0a\\x08\\x0c\\xab\\x80\\xaf\\x7c\\xcc\\xa7\\xdf\\xfc\\xfa\\xc9\\xee\\x4c\\x39\\xdc\\x85\\xcb\\xdf\\x51\\x25\\x9c\\xcd\\x34\\x70\\xd9\\xba\\xd3\\xad\\x30\\xf4\\xee\\x5d\\xbd\\x4f\\xac\\x6b\\xd5\\xc6\\xc4\\xdf\\x73\\x11\\xa4\\x70\\x04\\x46\\x95\\xa7\\xe1\\xa7\\xe1\\x85\\x72\\x20\\x75\\x88\\xaf\\xa5\\x7e\\xeb\\xcd\\x4d\\x57\\x5b\\x6d\\x42\\x44\\x57\\xee\\x92\\x46\\x5c\\xe1\\x86\\x3e\\x3c\\x67\\x7c\\xf8\\x75\\xfd\\xb9\\x8d\\x40\\x78\\xeb\\xe7\\x14\\x42\\x60\\x80\\x70\\x52\\x57\\x71\\x44\\xcb\\x8e\\x03\\x59\\xaa\\x42\\xad\\x15\\x5d\\x79\\xda\\xe3\\xde\\xb9\\x9c\\x46\\x32\\xc1\\x91\\xc7\\x99\\xcb\\xfe\\x58\\x7d\\x95\\x47\\x87\\x06\\x8d\\x66\\x3b\\xdf\\xc0\\xfa\\xb1\\x33\\x4f\\x18\\x76\\xbf\\x49\\x8c\\x4d\\xb5\\xc5\\x3d\\xb7\\xb0\\x20\\x4e\\xd5\\xa5\\x21\\xc6\\x2f\\x09\\xea\\xca\\x8d\\x01\\x89\\xf3\\xb3\\x94\\x14\\x3f\\x29\\xc4\\x21\\xcb\\x5c\\x8d\\x07\\xbd\\x75\\x1b\\xaf\\x4c\\xbe\\x3b\\xf4\\xbe\\x17\\x01\\xdf\\x4b\\x22\\x07\\xdf\\xb2\\x90\\x4d\\x84\\xf4\\xdb\\xda\\x51\\xcb\\xa5\\x76\\xd5\\xa5\\xbb\\x16\\xef\\xe6\\x98\\xed\\xd6\\x08\"},\n{{0xf7,0x8d,0xb1,0x4d,0x6d,0x1a,0x64,0x3d,0xd7,0x73,0x5b,0xaf,0x26,0x35,0x32,0x12,0x44,0xe7,0xec,0x8c,0xa7,0x2c,0x5c,0x38,0xc9,0x8c,0x80,0x9d,0xb9,0xcb,0x5a,0x55,},{0x54,0x14,0xf7,0x5f,0x52,0xf3,0x86,0x4a,0xfb,0x0c,0x79,0xc2,0xc5,0xc1,0xd0,0x6b,0x4b,0xce,0x40,0x0f,0xbd,0xdf,0x17,0xfe,0x9c,0xfb,0x2a,0x8b,0xac,0x47,0xa0,0xdd,},{0xd7,0xcb,0xd4,0x18,0x1f,0x67,0x71,0x20,0x07,0xb7,0xf0,0xe1,0x84,0x52,0xe0,0xa0,0x24,0x46,0x4d,0x9d,0xc9,0xb5,0xff,0x9c,0xf6,0x69,0xd1,0xb9,0x11,0x69,0xd7,0x57,0x32,0x62,0xf8,0x33,0x36,0xb9,0x7c,0x86,0x1b,0xfa,0xb3,0xfc,0xf6,0x69,0x22,0x3c,0xe8,0xca,0xf3,0x19,0xf2,0x1d,0x23,0xf1,0xfa,0x33,0x1a,0x2d,0x89,0xb6,0xca,0x0b,},\"\\x05\\xca\\xf1\\xb8\\xed\\xc3\\xb1\\x73\\xfb\\xc1\\xed\\x29\\xb9\\x5e\\x2b\\xf0\\x6d\\x81\\x4b\\xa2\\x40\\x7d\\x4b\\x31\\xc7\\x28\\xd0\\x4e\\xc2\\x73\\xd2\\x53\\x94\\x42\\x3a\\xc7\\xd4\\xff\\xf2\\xca\\x36\\xee\\x90\\x27\\x30\\x93\\xc7\\x56\\xe2\\xbd\\x13\\xc9\\x6d\\x4a\\x3d\\xc7\\xf5\\xbe\\x17\\x59\\xfc\\xd3\\x28\\xeb\\x66\\xc5\\x88\\x2b\\x58\\xfa\\x45\\x88\\xe5\\xb2\\xa3\\x71\\x3a\\x41\\x54\\xa2\\x34\\x0d\\x0b\\x06\\xad\\x01\\x96\\x01\\xb0\\xe0\\x28\\xe4\\x97\\xf8\\x98\\x25\\x6b\\x02\\x8a\\xf9\\x5c\\xd8\\x16\\x8d\\xf5\\xe5\\x8a\\x57\\xcd\\x1e\\xbf\\xc0\\xa0\\xc9\\x1c\\xed\\x61\\xdb\\xb4\\x80\\xac\\xa7\\xdf\\x8d\\xca\\x91\\xeb\\x16\\xe9\\x80\\x07\\xcd\\x2c\\xd1\\xa2\\x04\\x5b\\x0e\\x44\\x77\\xd1\\x2d\\x5a\\x40\\x72\\xf3\\x65\\x42\\x65\\x67\\xc9\\xd6\\x15\\x77\\xf3\\x48\\x5c\\x8f\\x46\\x60\\x5e\\x7f\\x47\\x5e\\xf0\\x4a\\x39\\x48\\xf6\\x0d\\xba\\x8c\\x55\\x08\\xd1\\x4b\\xfd\\xdb\\x9b\\x11\\xdd\\x04\\x4e\\xf2\\xd8\\x4c\\x16\\xb9\\xa9\\x03\\x8d\\x8e\\x78\\xed\\xa4\\x3b\\x91\\x29\\x7d\\xf3\\x5f\\x43\\x61\\xa3\\x83\\xb4\\x1d\\x49\\x67\\x7a\\x68\\x7d\\x5b\\x34\\x4a\\xd1\\xab\\x0f\\xc7\\x30\\x17\\xb3\\xbe\\xbf\\x32\\x30\\x6f\\xb3\\xfd\\x7b\\x3d\\x50\\x71\\xf3\\xab\\x5f\\x6e\\x49\\xaa\\x15\\x54\\x0c\\xad\\x65\\x03\\xbe\\xa7\\x78\\x4c\\xf9\\x42\\x18\\x01\\xce\\x13\\x85\\x83\\x98\\x93\\x36\\x2a\\x97\\xfa\\xe1\\x21\\x30\\x0d\\x67\\x83\\xaf\\x0f\"},\n{{0x7d,0xfa,0x32,0x8e,0x90,0xa1,0xb8,0x49,0xc2,0x19,0xe3,0xda,0x83,0x2d,0xf9,0xed,0x77,0x44,0x82,0x34,0xf0,0xd8,0x9e,0xa5,0xd1,0x7a,0x3d,0x64,0xe7,0x88,0x3d,0xaf,},{0xe3,0x0c,0xe6,0xfd,0x5f,0x58,0x00,0x38,0x9a,0x70,0xcd,0x11,0x73,0x64,0xf5,0x99,0x45,0xaf,0xb1,0x80,0xf2,0x29,0x92,0x73,0x60,0xb0,0x6b,0x48,0x35,0xf8,0xdc,0x91,},{0x1c,0x61,0xd5,0x3b,0x87,0x2f,0x8c,0xde,0x59,0x86,0x09,0x68,0x2c,0x79,0xf6,0xc5,0xdf,0x00,0x7c,0x51,0x3a,0x71,0xcf,0xb3,0xa0,0x6d,0xcb,0x82,0xd8,0x5c,0x4b,0x00,0xcc,0xc4,0x0b,0x00,0xe5,0x9f,0x59,0x53,0x93,0x08,0x8b,0x4c,0xd0,0x43,0x28,0x55,0xc6,0x7a,0x20,0x7d,0xa7,0x1f,0x87,0xe7,0x2c,0x40,0x9b,0x3e,0x50,0x27,0x95,0x07,},\"\\xe5\\xe4\\x95\\xd6\\x63\\xf4\\x72\\x36\\x71\\x45\\x32\\x68\\x7a\\x24\\x30\\x8f\\x94\\x2c\\xa9\\xc3\\x3e\\x08\\x8f\\x7f\\x10\\x6a\\x5a\\x72\\x35\\x18\\xca\\xcb\\xbe\\xf4\\xa6\\x8c\\x93\\x9a\\x69\\x50\\xb2\\xdc\\x25\\x89\\xf8\\x2d\\x35\\x4e\\x57\\x52\\x72\\xd4\\x2b\\x13\\x83\\xd3\\x15\\xab\\x8a\\x20\\xaa\\x0c\\xdc\\x9d\\x4d\\xf6\\x78\\xab\\x3b\\x26\\x61\\x2b\\x5d\\xca\\x66\\xe7\\x1f\\x9f\\x3f\\xa7\\xd9\\xe7\\x31\\xdc\\x48\\x1e\\x2b\\xc7\\x12\\x7c\\xea\\x3b\\x62\\x03\\xca\\x6c\\xd8\\x16\\x2e\\x90\\x88\\x6a\\x73\\xdc\\x46\\xc8\\x3d\\xde\\xfc\\x4b\\x9e\\x2d\\x53\\xd2\\x9d\\xd3\\x87\\xc6\\x24\\xe0\\x8b\\xd8\\xd5\\x3b\\xe9\\x28\\xa4\\x0a\\x9a\\xa8\\xae\\x8b\\x1c\\x8d\\x0f\\xb6\\xa7\\xbd\\x6d\\xce\\x5f\\x62\\x31\\x5b\\x7a\\x21\\x81\\xf6\\x27\\xf2\\x56\\xbb\\xe7\\xe2\\xa9\\x5b\\xf4\\x64\\xe6\\x13\\x22\\x04\\xc1\\x74\\x20\\x96\\x29\\x84\\x02\\x35\\xb2\\xc3\\x99\\x13\\x30\\x1a\\x4b\\x40\\x32\\x5d\\x11\\x8d\\x38\\x4b\\xc7\\xac\\x02\\x8c\\xd4\\xf1\\x27\\x02\\xe1\\x61\\x19\\x1b\\x14\\x9e\\x42\\x09\\x05\\x8a\\x55\\x12\\x2b\\xbb\\x8b\\x22\\xb2\\x46\\x83\\xba\\x4f\\x8e\\x2e\\x6c\\xcf\\xc0\\x8d\\xc8\\xc8\\xb1\\xbc\\xfb\\x6d\\x60\\xbd\\x8f\\x06\\x21\\x96\\x93\\x3d\\xf3\\x19\\xab\\x16\\x90\\x6d\\x08\\x57\\x30\\xeb\\xa1\\x72\\x0d\\x4b\\x02\\xc6\\x7d\\xaf\\x38\\xcc\\xe6\\xab\\xa3\\x8e\\x25\\xd6\\x8e\\xf9\\x5b\\x2f\\x52\\x19\\x13\\xa1\\xd7\\x7d\\x5e\\xb6\\x50\"},\n{{0x6c,0xe1,0x3d,0x3c,0x2e,0xc7,0x1f,0xed,0x83,0x13,0x1a,0x69,0xd5,0xd0,0x30,0x31,0x4a,0xb4,0x9e,0x65,0x65,0xef,0x68,0x16,0x3f,0xff,0x09,0xac,0x5d,0x9b,0x47,0xe7,},{0x9c,0x7b,0x11,0x18,0xfa,0xb9,0x1e,0x0e,0x7b,0x19,0x2a,0x23,0xd9,0x5f,0xb8,0x77,0xcb,0x79,0x36,0xcc,0x6c,0x8a,0x33,0x05,0x92,0xf4,0x8e,0x67,0x84,0xed,0xc2,0x92,},{0x60,0x8b,0x2b,0xf6,0xf6,0xda,0x05,0xc2,0xac,0x5b,0xbf,0xd7,0x95,0xa2,0xac,0x32,0xc7,0x9c,0x74,0x15,0x3f,0x94,0x31,0xde,0xa5,0x97,0x68,0xff,0x4c,0x22,0x5e,0x3b,0x69,0x3b,0x64,0x5a,0x50,0x67,0x66,0xb8,0x60,0x85,0x0e,0xe9,0x7e,0xa4,0x30,0x32,0xb0,0x5b,0x69,0xe5,0x67,0x67,0xe8,0xeb,0x9d,0x19,0x18,0xdf,0x9a,0xfb,0xa8,0x05,},\"\\x10\\xbb\\xc3\\x11\\xeb\\x2a\\x76\\x5e\\x01\\x67\\xff\\x37\\x61\\x8f\\xf7\\x0e\\x13\\xf0\\x2d\\x7b\\x06\\x17\\xae\\x4a\\xc0\\x6b\\xef\\xbb\\xe1\\x49\\xc9\\x72\\xa9\\x94\\xf6\\x80\\xca\\x4d\\xc9\\xa9\\x2e\\xc7\\xef\\xa5\\x39\\x97\\xfa\\xd3\\x56\\xb9\\xff\\x4e\\xbd\\xee\\x62\\x95\\x41\\xd1\\xf4\\xde\\xa6\\x2e\\xd0\\xd2\\x49\\x4f\\x9c\\xcf\\xdf\\x07\\xa9\\x31\\x04\\x91\\xf6\\x1c\\x4b\\x3e\\x27\\x00\\xb4\\xa3\\xc6\\x68\\xd6\\x78\\x32\\x9a\\x38\\xc2\\xef\\xf9\\xd8\\xcb\\xa4\\x31\\xfb\\x95\\x9e\\x7f\\x76\\x55\\xbd\\x0f\\xbd\\x77\\xd5\\x3b\\xbb\\xc2\\xeb\\x8d\\xc5\\x1d\\xd7\\x18\\xed\\x98\\x72\\x8a\\x18\\x16\\x86\\xbe\\x12\\x2b\\x84\\x4d\\x3d\\xa3\\x31\\xe3\\x29\\xd3\\x95\\x9b\\x59\\x23\\xf7\\x73\\x43\\x25\\xa0\\x21\\x02\\x6e\\x27\\x54\\xe1\\x7a\\x15\\x10\\x8b\\xe8\\x01\\x46\\x5a\\xd9\\x58\\xdb\\xcf\\x21\\xdf\\x89\\x0c\\xfe\\x5d\\x5b\\x88\\x3c\\xa4\\x3c\\x61\\xce\\xdc\\xcb\\xdb\\x58\\xb8\\x49\\xea\\x75\\x37\\x4f\\x1e\\x91\\x8e\\x80\\x3e\\x57\\x7a\\x5d\\xc7\\xa1\\xc1\\x79\\x36\\xec\\xcf\\xcd\\x34\\x81\\xbd\\x2b\\x1e\\xb0\\x75\\xb8\\x32\\x37\\xca\\x6f\\x3c\\x07\\xc1\\x9e\\x9a\\xf9\\x73\\x12\\x67\\xbe\\x82\\xd4\\x89\\x8e\\xee\\x96\\xeb\\xc9\\x00\\xd4\\x8b\\x05\\x9d\\x51\\xb0\\xdd\\x41\\x5b\\x1c\\x89\\x06\\x60\\xa8\\x8d\\x25\\xf5\\xc5\\xf3\\x5d\\x8e\\x45\\xe5\\x23\\xe0\\xce\\x33\\x36\\x92\\x3a\\xb4\\x36\\x70\\xe3\\x5c\\x50\\x57\\xd5\\x6c\\x75\\x88\\x76\"},\n{{0xd4,0x5e,0xe6,0x9a,0x5f,0x1a,0x7c,0xfd,0xd0,0x34,0x3f,0x87,0x70,0xd1,0xc6,0xbc,0x02,0x6f,0x06,0x7a,0x70,0xdb,0xe8,0x39,0xa8,0x6f,0x2a,0xa0,0x68,0xc3,0x3f,0x81,},{0xfc,0x8d,0x9f,0xb0,0xe4,0xf3,0x47,0x93,0x09,0x07,0x55,0xe0,0x32,0x80,0x96,0xe0,0x1e,0x28,0x1e,0xa3,0x51,0xb8,0xd9,0x5c,0xd9,0x11,0x6e,0x13,0x1a,0x5c,0xa5,0x4e,},{0x15,0x6c,0x51,0xc5,0xf9,0x15,0xd8,0x9b,0x8d,0x14,0x00,0x35,0x0f,0x8f,0x21,0x7a,0x5c,0x02,0xe2,0x62,0x9e,0xde,0x9f,0x4a,0x30,0xb6,0xe7,0x1d,0x1e,0xa7,0xa9,0x53,0xcc,0x6d,0xb3,0x1b,0xa5,0xc7,0x78,0xc2,0x69,0x92,0x0b,0x64,0x9f,0xb4,0x22,0x1c,0x6d,0x38,0xcf,0x2c,0xea,0x2a,0x7d,0xe3,0xad,0x42,0x3e,0x04,0xfa,0xaa,0x06,0x07,},\"\\xeb\\x5e\\xd8\\xab\\x79\\xcb\\xfe\\x61\\xc2\\x59\\x81\\xb9\\xd1\\xd6\\xb7\\x0f\\x10\\xb6\\x01\\x94\\xb4\\x16\\x1f\\xe1\\x7d\\x11\\xaf\\xf1\\x76\\x79\\x94\\xaa\\x08\\x13\\xe9\\xec\\xe2\\xf4\\xc5\\xd5\\x31\\xb9\\x9e\\x8a\\xdf\\x18\\x88\\xc3\\x0a\\x63\\x89\\x3e\\xb4\\x51\\xaa\\xf5\\x5a\\xcd\\x5a\\x52\\xad\\x8c\\x40\\x1f\\xaa\\x88\\xd6\\xea\\xcf\\x3e\\x49\\x47\\x05\\x66\\x11\\x4f\\xd0\\xc6\\xa2\\x74\\xe9\\x54\\x48\\x46\\xb0\\xae\\x9b\\xfa\\x12\\x4d\\x79\\x51\\xeb\\x26\\x71\\x5e\\x19\\x25\\x3f\\xf7\\xed\\xc8\\xa7\\x09\\x65\\x77\\x6f\\x23\\xce\\x46\\x03\\x1e\\x03\\x4a\\x20\\x07\\x23\\xba\\x3d\\x11\\xe1\\x1d\\x35\\x3d\\x7e\\x7c\\xd8\\x4a\\xed\\xe2\\x67\\xff\\x64\\xbe\\xd4\\x18\\xcb\\x9f\\x28\\xc6\\x1c\\xd0\\xf6\\x3b\\x6c\\xe2\\xec\\xae\\x14\\xb2\\x0b\\xc6\\xbd\\xae\\xd8\\xc4\\x28\\xba\\xd1\\x8b\\xe4\\xb7\\xd6\\x63\\x38\\x36\\x4a\\xcd\\x80\\x42\\xa8\\x25\\x6f\\x25\\x8a\\x69\\x96\\x9b\\x8d\\x3c\\xa2\\xea\\xb3\\xae\\xa3\\x70\\x6e\\x5f\\x21\\xc3\\xb1\\xef\\xcc\\x25\\x4a\\x82\\x4b\\xb4\\xe7\\xea\\x7a\\xba\\x88\\x27\\xc8\\xeb\\x82\\x78\\x6c\\x66\\x5a\\xa9\\x73\\x82\\x19\\x31\\xff\\x99\\x0a\\x63\\xfd\\x34\\xa7\\x4a\\x6d\\x8c\\x22\\xa8\\x82\\xb0\\xb9\\x35\\x15\\x2c\\xcb\\x36\\xfc\\xc7\\x6f\\x4e\\xca\\x65\\xd6\\x7c\\x86\\x80\\x94\\x2f\\x75\\xdf\\xad\\x07\\x34\\x39\\xc0\\x91\\x60\\x65\\xe8\\x38\\x77\\xf7\\xba\\x20\\x93\\x03\\xf3\\x35\\x48\\xd9\\xe4\\x0d\\x4a\\x6b\"},\n{{0x8a,0x76,0xea,0xab,0x3a,0x21,0xec,0x5a,0x97,0x5c,0x8b,0x9e,0x19,0x7a,0x98,0x9e,0x8e,0x03,0x08,0x99,0xeb,0x45,0xd7,0x89,0x68,0xd0,0xfb,0x69,0x7b,0x92,0xe4,0x6d,},{0x2d,0x9c,0x81,0x3d,0x2d,0x81,0xe2,0x73,0x0b,0x0d,0x17,0xd8,0x51,0x2b,0xb8,0xb5,0xd3,0x3f,0x43,0x6c,0xab,0xaa,0x13,0xe1,0x41,0xca,0x1c,0xb7,0x85,0x01,0x43,0x44,},{0xfc,0xee,0xcc,0xa4,0xb0,0x14,0xfe,0xcd,0x90,0xb9,0x21,0xb0,0xfa,0x3b,0x15,0xae,0xaa,0x4e,0x62,0xca,0xa1,0xfb,0x22,0x72,0x9c,0x70,0x26,0x92,0x32,0xc3,0x3c,0xef,0x0d,0x0a,0xee,0xa6,0x64,0x32,0xc1,0x28,0xaf,0xb9,0xa3,0x64,0x6b,0xc7,0xf0,0x3a,0x12,0x77,0x4d,0xa8,0x75,0x83,0x98,0xc2,0xa0,0xdc,0xce,0x0b,0xbb,0xf6,0x74,0x0a,},\"\\xc6\\xc7\\x8f\\x2e\\x20\\x80\\x46\\x1a\\xed\\x9f\\x12\\xb4\\xf7\\x7c\\x98\\x9b\\x19\\x71\\x67\\x80\\xfa\\xb6\\x0e\\x6e\\xcb\\x97\\x93\\xb4\\xbc\\x7e\\xd6\\x9e\\x5f\\x70\\xfa\\x6b\\xdb\\xa1\\x6e\\x9b\\xd3\\x19\\x49\\x69\\xee\\xa6\\x66\\x5a\\xbf\\xd6\\x30\\xde\\xee\\xfa\\x3d\\x71\\x7b\\x6d\\x25\\x4d\\xd2\\x4b\\xc9\\x7d\\xde\\x21\\xf0\\xf2\\x9f\\x9e\\xd3\\x4b\\x8b\\xd7\\xa0\\x13\\x38\\x0f\\x4f\\x82\\xc9\\x84\\xfd\\xbd\\x95\\xaf\\x98\\x05\\xb7\\x44\\xbc\\xd9\\x52\\xc5\\xa7\\x1f\\xbb\\x57\\xd1\\x1f\\x41\\x1c\\x18\\xcc\\x30\\xbc\\x35\\x94\\xf7\\xad\\x82\\x28\\xcb\\x60\\x99\\x39\\x4a\\x1b\\x6b\\x0a\\x81\\x85\\x81\\xbd\\xf9\\x3c\\xce\\x58\\xf3\\xa4\\xa2\\x3e\\x55\\xdb\\x3e\\x69\\xca\\x9d\\x60\\xcf\\xb3\\xa9\\x07\\xfb\\x68\\x32\\x9e\\x2f\\xfb\\x6c\\x65\\xf1\\xe8\\x28\\xd2\\x81\\x27\\x10\\x9c\\x9e\\x9f\\xb7\\x01\\x60\\xf2\\xef\\x82\\xa2\\xee\\x9f\\x9b\\xd1\\x70\\xc5\\x1e\\x13\\xfd\\x3f\\xc1\\x86\\x6b\\x22\\xc7\\x9f\\xe6\\xd5\\x10\\x12\\x17\\x97\\x9d\\xbe\\x27\\x24\\xdc\\xad\\x8a\\x9b\\xc6\\x9a\\xcc\\x42\\xc1\\x12\\xdc\\x69\\x7b\\xd2\\x71\\xee\\xa5\\x50\\xe9\\xe5\\x04\\x06\\xbf\\xd2\\x82\\x45\\xb8\\x3b\\x8f\\x01\\x2d\\x34\\xdb\\x6d\\xbd\\xd5\\x5a\\xe6\\xe5\\x75\\x74\\x5c\\x15\\x3d\\x6e\\x75\\x34\\x90\\x10\\x27\\xea\\xdc\\x2f\\xcc\\x33\\xa5\\x28\\x7d\\xdb\\xca\\x6d\\x3a\\xea\\xb8\\x97\\x22\\x94\\xdc\\x6c\\x71\\x2b\\x99\\x42\\x54\\x72\\x77\\x34\\x0e\\x7a\\xd1\\x9e\"},\n{{0x18,0xa8,0xf9,0x36,0x48,0xcd,0xcf,0x47,0x13,0x36,0x30,0xaf,0x1e,0x11,0xc0,0xce,0xea,0x3d,0xe0,0x73,0x27,0x31,0x4c,0x96,0x58,0x0d,0xf7,0x75,0x59,0x7d,0x7a,0x9c,},{0x29,0x12,0xf4,0x1a,0xb4,0xc8,0x7e,0x39,0x37,0xa0,0x33,0x31,0x80,0x2c,0xba,0x87,0x71,0x6b,0x4e,0xea,0x14,0xb9,0xfb,0xa6,0xf5,0x46,0xd0,0xac,0x2c,0x09,0x73,0xdf,},{0x3b,0x77,0x39,0x4c,0xd6,0x9f,0x8b,0x45,0xd0,0x0c,0xfe,0x3a,0x79,0xa7,0x90,0x06,0x28,0xa5,0x65,0x18,0xb3,0x79,0xed,0x8a,0x11,0x58,0x1f,0xc3,0xa3,0x76,0xe5,0xd6,0x68,0x07,0xdf,0x11,0xe7,0x09,0x04,0xf6,0x96,0xc7,0x41,0xd2,0x1d,0x13,0x93,0x10,0xfa,0x1b,0x89,0xa9,0x3b,0xdc,0x4d,0x2c,0x39,0x97,0x99,0x1f,0x52,0x20,0xee,0x00,},\"\\x59\\x20\\x93\\xac\\x7c\\xd6\\x71\\xd6\\x07\\x0b\\x00\\x27\\xed\\xac\\x1f\\xb0\\x15\\xcc\\x20\\x5d\\x78\\xbb\\x60\\x3f\\x37\\x8e\\xb9\\xf8\\xaa\\x38\\x8c\\xa8\\x30\\xdb\\x3c\\xb2\\x34\\x20\\xc7\\xe8\\x52\\xdb\\x0b\\x55\\x24\\x1e\\xb8\\x8a\\x02\\xcc\\x62\\x7a\\xa9\\x41\\x43\\xbe\\x43\\x9a\\xab\\x4b\\xf2\\x63\\x47\\x57\\x47\\x04\\x06\\xe8\\x42\\xf2\\x0e\\xb1\\x0f\\x07\\x00\\xe3\\xc2\\xda\\x36\\x4f\\x58\\x8a\\x80\\x00\\xf2\\x38\\x50\\xc1\\x2c\\xe9\\x76\\xf3\\x26\\xd2\\xdf\\x1b\\xac\\x13\\xe9\\x50\\x20\\xb4\\x12\\xb1\\x75\\xbf\\x74\\xbd\\x7e\\xbb\\xac\\xf3\\xae\\x55\\xc0\\xda\\xeb\\xb5\\xc0\\x10\\xbf\\x80\\x4f\\xee\\xe1\\xd7\\xd4\\x9f\\xae\\x05\\x0b\\xea\\x55\\x99\\x6f\\x53\\xcf\\xe1\\xf1\\x5a\\x0c\\xf2\\x07\\x27\\xdb\\x4e\\xe3\\x11\\xc2\\x60\\xba\\xd9\\x68\\x2d\\x7b\\x96\\x5e\\x27\\xa9\\x49\\x1f\\x47\\x1d\\x4a\\x47\\x3a\\xff\\x64\\x6c\\x7d\\x42\\x4d\\x5a\\x0b\\xdc\\xbb\\x8a\\x02\\x33\\xf4\\xb3\\x06\\x0d\\xd0\\x4c\\x98\\xec\\x98\\xdf\\xd0\\x5e\\xc7\\x24\\x78\\x84\\xe2\\xd8\\xe1\\x52\\xd4\\xae\\x52\\xb3\\xd5\\x86\\x5d\\x9e\\xfd\\x67\\x06\\xa6\\x0e\\x08\\x8e\\x1e\\x7c\\x9f\\x62\\x45\\x10\\xab\\xc7\\xa2\\x04\\x5a\\x2c\\x7a\\x75\\x88\\xe2\\x53\\x5e\\x73\\x19\\x1d\\xd5\\xcf\\x05\\x42\\x15\\x63\\xf5\\x56\\xa1\\x3e\\x82\\x36\\x67\\x03\\x43\\xcd\\x5b\\xa4\\xd4\\x66\\xe2\\x45\\xc4\\xee\\x3b\\x5a\\x41\\xe7\\x0c\\x9a\\x0f\\x5e\\x6e\\xa2\\xc5\\x59\\xeb\\xe6\\x1b\\xa8\\x1e\"},\n{{0x20,0x6c,0xd2,0xb8,0x11,0x4a,0xae,0x18,0x8d,0x81,0x86,0x2c,0xce,0xc4,0xcb,0x92,0xc4,0xef,0x5f,0xc7,0x8c,0x24,0x43,0x5a,0x19,0xf9,0xed,0x9b,0x8a,0x22,0xf4,0x7e,},{0x97,0xa6,0x7a,0xc2,0x81,0x1f,0x52,0x94,0x56,0xdf,0x53,0x27,0x37,0xd7,0x6b,0xed,0x7e,0x38,0x7d,0xa8,0x3b,0xd5,0x54,0x59,0x37,0x2f,0xdf,0xb2,0x7f,0xfa,0xcf,0xf3,},{0x73,0xa4,0x0d,0x9d,0xa0,0x8f,0xb9,0x8e,0xa2,0x5b,0x67,0xe7,0x21,0x55,0x7a,0x1a,0x51,0x22,0x52,0x94,0xd3,0x16,0xb5,0x31,0x49,0xaf,0x89,0x5f,0xa4,0xd6,0x3c,0xb4,0xa3,0xf5,0x6f,0x68,0x85,0x66,0xef,0x6d,0xa4,0x2f,0xd2,0x94,0x1d,0xff,0xa0,0x6d,0x49,0x7a,0xa9,0x02,0x16,0x5d,0x50,0x21,0x3a,0x62,0x14,0x11,0x62,0x99,0xa9,0x0c,},\"\\x48\\x0c\\x48\\x00\\xf6\\x8c\\x79\\xf5\\xdf\\xc0\\xc3\\x66\\x6c\\x0a\\xc4\\x29\\xb3\\x0f\\xe0\\xc5\\xfe\\x84\\x87\\x50\\xdb\\x21\\x71\\x38\\x0b\\x80\\xc8\\xe9\\xfe\\xc0\\xa0\\x54\\xb1\\x6d\\x08\\x67\\x4c\\xef\\xe2\\xf6\\x4e\\xc2\\x8b\\xb6\\xb0\\x59\\x6b\\x35\\x23\\x55\\x75\\xf1\\x89\\xbe\\xe2\\x59\\xac\\xa7\\x66\\xc2\\x22\\xac\\x0a\\x46\\xcf\\x2a\\xf7\\x57\\x74\\xda\\x4e\\x34\\xa0\\xb5\\x4f\\xc2\\xac\\x49\\xec\\x8b\\xed\\xf4\\x88\\x7c\\xd9\\xb7\\xbe\\x4f\\xdb\\x7f\\x68\\x69\\x02\\xdd\\xfa\\xb0\\x46\\x27\\xe2\\x6e\\xa2\\xdc\\x3d\\x97\\xd6\\x2a\\x4b\\x15\\x46\\x18\\x02\\x18\\xed\\x8f\\xa1\\x13\\x33\\x48\\x19\\xb5\\x27\\x5c\\xc5\\x4a\\xfd\\xee\\x44\\x30\\x90\\x08\\x59\\x65\\x07\\x97\\x16\\x75\\xe6\\xd8\\xb8\\xa8\\xed\\xec\\x47\\x18\\xf2\\xd4\\xbd\\x73\\x52\\x13\\xcb\\xbd\\x18\\x79\\x1f\\xaa\\x80\\x54\\x17\\x49\\x07\\xa7\\xac\\x17\\xd7\\x14\\x3a\\x47\\x57\\xe4\\x93\\xbe\\xee\\xc4\\x84\\x9d\\x0b\\x83\\x6f\\x18\\xbb\\x2b\\x3c\\x90\\x16\\xf2\\x5a\\xf4\\x7f\\xb9\\x61\\x99\\x25\\x17\\x20\\x54\\x9f\\x15\\xd1\\x49\\x50\\x3d\\x41\\x09\\x5e\\x25\\xf2\\x62\\x09\\xda\\xac\\x39\\x15\\x44\\x85\\xc3\\xde\\xd7\\xcb\\x1a\\x8c\\x3e\\x83\\xa5\\x2f\\x5a\\x06\\xec\\x09\\xcf\\x83\\xdf\\x00\\x72\\x6b\\x79\\x68\\xf6\\x4c\\x0c\\xba\\xe2\\x99\\x51\\x2f\\xb4\\x38\\x56\\x0f\\x04\\xb3\\xb6\\x44\\x34\\x6f\\x93\\x8a\\xc8\\xe9\\x04\\x86\\x61\\x4c\\xd8\\x44\\xb5\\x4e\\xae\\x07\\x8b\\xf6\\x78\\xb3\"},\n{{0x59,0xb1,0x44,0xa7,0x08,0xab,0xec,0x97,0x27,0x29,0xa0,0x4a,0x6c,0x13,0xf0,0xea,0x02,0x0b,0x4e,0xd4,0xa4,0x82,0x98,0x02,0x3a,0x56,0x89,0x58,0xc2,0x12,0x15,0xec,},{0xc4,0xf4,0x72,0x00,0x92,0xed,0x61,0x79,0xa0,0x82,0xae,0x4d,0x61,0x45,0xdf,0x37,0x71,0x78,0x6e,0xfc,0xa9,0xbd,0x9b,0xb7,0x9c,0x9f,0x66,0x67,0xd2,0xcb,0x56,0xb3,},{0x1a,0x80,0x85,0x0f,0xcb,0xd6,0xe6,0x43,0xc6,0xba,0x8e,0xb6,0x84,0xdb,0xef,0x7d,0xf0,0x15,0x15,0x92,0x28,0xda,0xed,0xcf,0x06,0x04,0x70,0x91,0x86,0x05,0x4d,0xb1,0x85,0xaa,0x7b,0xaa,0xcb,0x09,0xd6,0xca,0xad,0x01,0x63,0x8e,0xff,0x8e,0x46,0x87,0x35,0xa6,0x01,0x24,0xde,0x0c,0x53,0x76,0xe9,0x43,0x40,0xe5,0x41,0xa9,0x80,0x07,},\"\\x38\\x57\\xbd\\x26\\x0b\\x8a\\xad\\x9d\\x07\\x3f\\x06\\x76\\x5d\\x37\\xfe\\x89\\x3a\\x3f\\x53\\xe2\\x3d\\xe8\\x66\\xdd\\xac\\x33\\x49\\x5a\\x39\\xad\\x33\\xee\\x9e\\x9d\\x5c\\x22\\x50\\x2b\\xc1\\xc4\\xb5\\x47\\x0d\\x0e\\x3f\\x3a\\x58\\x52\\x23\\xfe\\x4c\\xb9\\x3c\\xc4\\xad\\x2b\\x5b\\xa6\\xd7\\x88\\x26\\xa5\\x3f\\xc0\\x25\\x3d\\xc5\\x80\\xa2\\x01\\x8c\\xc9\\xff\\x1c\\xfe\\xdb\\xd3\\xac\\x0b\\x53\\x29\\x2d\\xee\\xfb\\xc1\\x4e\\x58\\x9a\\xcf\\x49\\x6c\\xb5\\xf7\\x67\\x01\\x30\\xfd\\xbb\\x6c\\xf3\\x8d\\x20\\x89\\x53\\xc0\\x15\\xa0\\x47\\x46\\x75\\xb7\\x24\\xbd\\x10\\x9f\\x7c\\xb8\\x9c\\x33\\x01\\x67\\x51\\xfe\\x7a\\xa7\\x85\\xd0\\x99\\xd0\\x9a\\xb2\\x0d\\xd5\\x25\\x8c\\xd7\\x64\\xac\\x8d\\xaf\\x34\\x3c\\xe4\\x79\\x0e\\xad\\x08\\x63\\xaf\\x43\\x12\\x1a\\xa5\\x27\\xa3\\x7a\\x11\\x62\\x8f\\x47\\x86\\x96\\x68\\xf8\\xea\\xc0\\x0d\\x80\\xb6\\xbf\\x99\\x06\\x66\\x3d\\x7a\\x28\\x99\\xc1\\xcb\\x67\\x8c\\xd7\\xb3\\xeb\\x3b\\xc8\\x02\\x26\\xb8\\xb1\\x3b\\x6e\\x46\\x87\\x7f\\x38\\xf0\\x7c\\x3d\\x9c\\x86\\xd3\\x36\\x8b\\xaa\\xc4\\xa6\\xf6\\xb9\\x3c\\xce\\xbc\\xec\\x98\\x11\\x47\\x4b\\x6a\\x6a\\x4d\\xa5\\xc3\\xa5\\x96\\x65\\x71\\xee\\xd0\\x5e\\xdc\\xc0\\xe3\\xfe\\x7c\\xd1\\x59\\x15\\xc9\\x1f\\x44\\xee\\xe8\\xc1\\x49\\xae\\x45\\x1f\\x37\\x55\\x18\\xa7\\x9f\\xb6\\x00\\xa9\\x71\\xa3\\x9b\\x94\\x33\\xdf\\xa1\\x9f\\x91\\x93\\x1b\\x19\\x32\\x27\\x57\\x47\\xc2\\x62\\xee\\xdc\\xbd\\x27\\xf1\"},\n{{0x8d,0x16,0x21,0xee,0xab,0x83,0x27,0x0d,0xe8,0x57,0x33,0x5c,0x66,0x5b,0xbf,0x57,0x26,0xe3,0x72,0x22,0x25,0xfd,0x01,0x6e,0x23,0xbf,0x90,0xab,0x47,0xae,0xec,0x3d,},{0xbe,0xcd,0xbc,0x02,0x4d,0xae,0x6a,0x94,0xed,0x4e,0x29,0xc8,0x0f,0x2a,0xff,0x79,0x6a,0xed,0x8f,0xeb,0x2c,0x1b,0x37,0x90,0xa8,0xc7,0x2d,0x7b,0x04,0x8a,0x2c,0x61,},{0xe0,0x8d,0x6c,0xaa,0x5f,0x39,0x32,0x7d,0x6e,0x66,0x52,0xed,0x74,0xdd,0x1a,0x37,0x84,0x4b,0x97,0x9f,0x5c,0xce,0x74,0x7a,0x60,0x6f,0x56,0x79,0xf4,0x89,0x8b,0xbb,0x76,0x43,0xdf,0x7e,0x93,0x1b,0x54,0xa2,0xb4,0x0e,0xbd,0xef,0xe8,0x30,0x03,0xf6,0x1c,0xa0,0xf1,0x11,0x12,0xf0,0x23,0xc6,0xa3,0xe8,0xcc,0x18,0xca,0xfe,0x5f,0x0d,},\"\\x97\\xfa\\xcd\\xdc\\x82\\xcc\\xcc\\xcf\\x78\\x8c\\x31\\xb3\\x30\\x5e\\x93\\xeb\\xa9\\x56\\xf8\\x96\\x13\\xe6\\xe5\\x35\\x42\\xb0\\x43\\x26\\x7f\\xee\\x54\\x4c\\x2b\\x0a\\x8a\\xe8\\x88\\x6a\\x31\\xb9\\xd3\\x21\\xa6\\x3c\\x27\\x62\\x3b\\xae\\xfe\\xa8\\x40\\xb2\\xa8\\xaf\\x5b\\x23\\x30\\x19\\x3f\\xfb\\x5b\\xaf\\x87\\x3c\\x33\\x55\\x28\\xaf\\xea\\xe2\\x16\\x01\\x63\\xc8\\x51\\xc5\\xa2\\xe5\\x81\\x54\\xa1\\xb0\\x56\\x9c\\x2d\\x13\\x66\\xc0\\x71\\x04\\x37\\x62\\x3b\\x0e\\x08\\xc6\\x86\\xe5\\x4f\\xc2\\x79\\xed\\x4c\\x45\\xf3\\xe8\\x56\\x86\\x83\\x75\\xf7\\x82\\x24\\xc7\\x77\\xb1\\x3d\\x75\\xde\\x10\\xd7\\x91\\x73\\x55\\x24\\x25\\xd1\\x5a\\x56\\x19\\x04\\x15\\x5f\\x21\\x17\\xb2\\xf1\\x47\\x13\\xeb\\x0b\\x04\\x64\\x8a\\x3b\\xde\\xb3\\x30\\x21\\x67\\xd1\\x97\\x3e\\x78\\x8a\\x06\\xcb\\x00\\xd4\\x8c\\xcb\\x26\\x9f\\xa7\\x1a\\xf8\\xba\\x68\\xea\\xe5\\x5d\\xbb\\xfd\\x95\\x94\\xd5\\xc2\\xb4\\xdc\\x13\\xae\\x03\\x21\\x71\\x85\\x61\\xac\\xdf\\x67\\xdc\\x8c\\xfc\\xc2\\x5b\\xc4\\x6b\\xb6\\x6e\\x09\\x6a\\x19\\x41\\xd9\\x33\\x52\\x07\\xd3\\xf7\\xd1\\x1e\\x89\\x04\\x90\\x4f\\xab\\xe3\\xa5\\x0a\\x38\\x83\\xe7\\x07\\x80\\x47\\xdf\\x25\\x2f\\x38\\xb6\\x7c\\xd2\\x8a\\x6a\\xc4\\x5c\\x7d\\x7a\\x1d\\x2a\\x1d\\xe8\\xd4\\x57\\x47\\xcf\\x09\\x30\\x1e\\x01\\xcd\\xaf\\xd0\\xcd\\x99\\xa6\\xe9\\x1b\\x70\\x4d\\x50\\x9f\\xce\\x69\\x2f\\xbd\\xef\\x2f\\x71\\xa5\\xce\\x0b\\x35\\xbc\\x15\\xc6\\x5f\\x87\\x68\\x24\"},\n{{0xf2,0x73,0x5d,0x50,0xee,0x3a,0x9a,0x65,0xb5,0x8c,0x8a,0xcf,0x55,0x16,0x63,0xe9,0x88,0x09,0xec,0x40,0x6f,0x73,0xe3,0xe7,0xf4,0xe7,0x3b,0xc4,0xea,0x92,0x38,0x74,},{0xdf,0x48,0xa5,0xb9,0x4a,0x07,0xaf,0x3c,0x2c,0x99,0xb8,0x38,0x87,0x62,0x24,0x32,0x33,0xc8,0x50,0xdc,0x17,0x53,0x17,0xd6,0x02,0x63,0x8e,0x5b,0x86,0xab,0x49,0xed,},{0x69,0x42,0xa7,0x69,0x64,0x17,0xef,0xaa,0x59,0x1b,0x95,0xe1,0x1f,0x02,0xd7,0x63,0xbe,0xf5,0x27,0x9b,0x93,0x2a,0x8e,0x2a,0x7c,0xbb,0x9f,0x58,0x36,0x95,0xc1,0x4c,0xe5,0xcc,0x55,0x6b,0xec,0x66,0x79,0x9b,0x33,0xcb,0x59,0x2d,0xa4,0xdf,0x27,0x35,0xf9,0xee,0xf2,0xc3,0xce,0xca,0x43,0x62,0x16,0x4b,0x6c,0xc9,0x3d,0xa4,0xe1,0x05,},\"\\xae\\x31\\xe9\\x4e\\x71\\x97\\xe4\\xe4\\xd0\\x23\\x93\\x48\\x02\\x5e\\xd6\\x68\\x1e\\x51\\x3c\\xe1\\xa6\\xe0\\xaa\\x0e\\x5b\\x97\\x93\\x73\\x91\\x21\\x50\\xef\\x11\\x3e\\x50\\xef\\x05\\x69\\xc4\\x83\\xf7\\x56\\x8c\\x4b\\xbc\\x47\\x03\\xc5\\xda\\xca\\xa8\\x0a\\x0d\\xe4\\xe7\\x38\\x38\\x3f\\xa1\\xf1\\x0d\\x6d\\x40\\x71\\xa3\\x1b\\x99\\xe6\\x48\\x51\\x43\\x97\\x23\\x16\\xc8\\x65\\x22\\xe3\\x7c\\x68\\x87\\xa1\\xc3\\x07\\xb2\\x9b\\x0d\\xd6\\xf9\\xf1\\xb4\\x38\\x31\\x0a\\xf9\\xd8\\xd7\\x34\\x6f\\xb4\\x1f\\x9b\\x2d\\xd2\\xe8\\x0b\\x14\\xc4\\x5e\\xb8\\x7d\\x4e\\xd4\\x8e\\x37\\xa5\\x26\\x0b\\x52\\x25\\x7b\\x3e\\x99\\x78\\x7a\\x13\\xc5\\x53\\x92\\xba\\x93\\x0c\\x08\\xe0\\x24\\x0e\\x96\\x0d\\xef\\x0c\\x29\\xb8\\x55\\x07\\x45\\xcf\\x14\\x9d\\xee\\x53\\xa5\\xd1\\x74\\xec\\x06\\x5d\\x2d\\x66\\x77\\xde\\xe1\\xfc\\x42\\x05\\x70\\x62\\xc3\\x4e\\x27\\xea\\x5d\\xbc\\xdb\\x86\\x1b\\x9f\\x67\\x0c\\x60\\x32\\xc7\\x84\\x6c\\xec\\x8e\\x87\\xa7\\xc9\\x52\\x0e\\x27\\x96\\x7b\\x01\\x86\\xee\\x71\\xb7\\x7e\\xd6\\xd0\\x29\\xbb\\xdd\\x70\\x94\\x9c\\xec\\x4a\\x70\\x93\\x29\\xfa\\x37\\xfe\\xe0\\x02\\x49\\x0c\\xc1\\xbc\\x4c\\x2d\\xf6\\xf7\\x63\\xf9\\x85\\x8f\\x33\\xd7\\x50\\xc5\\xb5\\x05\\xa6\\x7e\\x23\\x70\\x63\\xc0\\x48\\x6f\\x94\\x56\\xd3\\xc6\\x20\\xd9\\xac\\x7c\\x98\\xf1\\x38\\x1d\\xe0\\xef\\xfe\\x41\\xc1\\x82\\x59\\x50\\x4a\\x15\\x0d\\x68\\xa6\\xa2\\x8b\\x0a\\x3e\\xea\\x80\\x3b\\x85\\x53\\x15\\xc9\\xe0\"},\n{{0xca,0xd9,0xd2,0x1a,0x01,0xc7,0xe1,0xd1,0x5d,0xf2,0xfb,0xd7,0x9c,0x51,0x6e,0xb8,0xc3,0x40,0x1e,0x9f,0xe2,0x84,0x67,0xcc,0x7b,0x21,0x67,0x9d,0x4e,0x33,0x1a,0x3d,},{0xa7,0xb5,0x5c,0x15,0xd6,0x79,0x0b,0x40,0x53,0x6f,0xca,0xe5,0xad,0x28,0x92,0xcd,0x66,0xb1,0x86,0x89,0xf4,0x99,0xc1,0xfd,0xee,0xa6,0x6d,0x4a,0x7d,0xf3,0x94,0x24,},{0x31,0x92,0x7d,0x01,0xdb,0x9f,0x24,0x72,0xf4,0xdf,0x6f,0x63,0xc1,0x8e,0xbd,0x83,0xc2,0xb1,0xaa,0xf8,0x8d,0x58,0x0e,0x84,0x88,0x54,0xdf,0x8c,0xba,0x63,0x95,0xd3,0xda,0x7b,0xd6,0xbb,0x9e,0xdc,0x1f,0xce,0x1c,0x7d,0x7e,0x13,0x60,0x55,0x8f,0xcd,0xdf,0xa9,0x39,0x15,0xbe,0x07,0x6e,0xfb,0x8e,0xa2,0xdc,0x5e,0xa7,0xb2,0x0d,0x0a,},\"\\x70\\x70\\x2b\\xf1\\x9c\\x91\\x9f\\x98\\x36\\xde\\xfd\\x7b\\x84\\x6f\\xd9\\x99\\x2d\\x8b\\x7e\\xb2\\xe1\\x06\\xae\\xb7\\x1e\\x60\\xa3\\x1b\\x4e\\xa2\\x5a\\x41\\xb2\\x12\\xdc\\x7d\\xe7\\xc9\\x1c\\xbd\\x61\\x3d\\x58\\xd0\\x59\\x5d\\xb8\\x33\\xcf\\xe7\\xe5\\x05\\x84\\xf2\\x55\\x69\\x60\\x2c\\x77\\x44\\xfa\\x67\\x5d\\x15\\x6d\\x0f\\x63\\xcd\\x2b\\x7c\\x08\\x9c\\x8a\\x00\\x68\\x6a\\x43\\x71\\x69\\x82\\x6a\\x12\\xdc\\x48\\x5b\\x38\\xc0\\x68\\xa8\\x00\\x71\\x42\\xe5\\x16\\x37\\x47\\x01\\x1a\\x07\\xa4\\x15\\x68\\x36\\x22\\xab\\x1e\\x23\\xce\\x57\\x7c\\x73\\x2b\\xa1\\x4f\\x40\\x1f\\xbc\\x30\\x43\\xe0\\x69\\x3a\\x92\\x05\\xc1\\x9a\\x92\\x29\\x8a\\x3d\\x9b\\x08\\xfb\\x7a\\xfa\\xfa\\xe0\\xa9\\xf0\\x16\\xbc\\x75\\x0e\\xe6\\x31\\xa5\\xf5\\xda\\x5d\\xb6\\xf9\\xba\\x26\\x92\\xc7\\x4c\\xaa\\xae\\xb4\\xd0\\x97\\xe9\\x0e\\x3c\\x02\\xd2\\xe3\\xa7\\xfb\\x3a\\xa0\\x00\\x04\\x0b\\x7c\\x17\\xb7\\x45\\x64\\xe6\\x46\\xbe\\xa1\\x6b\\xad\\x61\\x1e\\xbc\\x08\\x59\\xa3\\x82\\x88\\x04\\xab\\x4f\\x5c\\xfb\\xa4\\x17\\xd2\\x54\\x51\\x5c\\xa3\\x62\\x0a\\x3a\\xd6\\x83\\xc4\\x6c\\xa6\\x26\\x7b\\xb4\\x95\\x39\\xbb\\x30\\xe3\\x69\\x08\\x7e\\x67\\x43\\x8e\\x94\\x89\\x56\\x27\\x50\\xdc\\xcb\\xa3\\xaa\\x0b\\x1b\\x0a\\x6c\\x26\\x70\\x32\\xd2\\x0c\\x2a\\xdb\\x75\\xe6\\x8d\\xf1\\x12\\x3b\\x52\\x59\\xbf\\xe4\\xea\\xc6\\xca\\xdc\\xa6\\x77\\x81\\x38\\xa3\\x73\\x18\\xad\\xb3\\x0e\\x8d\\x66\\x9f\\x3b\\xc9\\x69\\x2c\\xc7\\x4b\\x68\"},\n{{0xd9,0xbe,0x84,0x22,0x55,0xe9,0xa1,0x6b,0x0a,0x51,0xa8,0x67,0x42,0x18,0xce,0xe7,0xcd,0x9a,0x8b,0xdf,0x34,0x35,0x08,0x39,0x7f,0x4d,0xdb,0x05,0xf3,0xfa,0x00,0x82,},{0x79,0x31,0xbc,0x6d,0xfa,0x33,0x24,0x94,0x3a,0xab,0x18,0x3d,0x12,0x85,0x51,0x59,0x19,0x39,0x9f,0xfe,0x0b,0x71,0x06,0x77,0xf0,0x91,0x5d,0x3a,0x5b,0xe5,0x1e,0x92,},{0xc9,0x38,0x45,0x65,0x8c,0x95,0x60,0xd2,0xc0,0xe2,0x8f,0x28,0x2a,0xdb,0xd4,0x65,0x2b,0xaf,0xd3,0xbb,0x2e,0xde,0xc1,0x7c,0x94,0x87,0x8f,0x7b,0x94,0xd3,0xc7,0x7a,0xfe,0xc9,0x06,0xed,0x29,0x2a,0x8d,0xfb,0xf5,0xf8,0xe7,0xc1,0x18,0xe8,0xf2,0xca,0x33,0xdd,0xa7,0x90,0x9d,0x9b,0x69,0x5b,0x8f,0xf5,0xa1,0xc0,0xe9,0x7a,0xc8,0x07,},\"\\xac\\x6c\\x55\\xb1\\x34\\x66\\x3e\\x41\\xf0\\x2a\\x6d\\xcb\\x85\\x49\\xea\\xa1\\xc0\\x13\\xf5\\x96\\x58\\xd8\\x1d\\x81\\x2f\\x95\\xb7\\x40\\x09\\x51\\x37\\x23\\x67\\x19\\x45\\xe1\\x32\\x4f\\x90\\xf8\\xa3\\xf9\\x71\\x36\\x91\\x81\\xb5\\x87\\xba\\xb4\\x56\\x65\\xf7\\x88\\xd6\\x63\\xab\\x78\\x14\\x0c\\x5a\\x22\\xc1\\xc1\\x8d\\x4a\\xfe\\xdc\\x74\\x48\\xa7\\x48\\xaf\\xe5\\xbf\\x23\\x87\\x00\\x3c\\x1d\\x65\\xab\\x18\\x48\\x2e\\xf9\\x89\\x22\\xb4\\x70\\xda\\x80\\xad\\x14\\xc9\\x44\\x95\\x1c\\xe4\\xae\\xd3\\x73\\x90\\xcc\\xe7\\x9a\\x8e\\x01\\xb2\\x4c\\x7d\\xfc\\x11\\x41\\xc0\\xec\\xa2\\xc7\\xf7\\x73\\xed\\x4b\\x11\\x80\\x6a\\x34\\x61\\x55\\x13\\x48\\x6e\\x4e\\xe1\\x1a\\xf0\\x80\\x78\\xa1\\xb4\\x05\\x4c\\xf9\\x88\\x02\\x98\\x60\\x8d\\xd9\\xb3\\xfa\\xa1\\xa2\\x42\\xa4\\x52\\xfe\\x51\\x16\\x04\\xb3\\x10\\x2c\\x31\\x3d\\x14\\xcc\\x27\\xc6\\xf0\\xf8\\x47\\x1d\\x94\\x55\\x53\\x17\\xea\\xa2\\x64\\xcd\\xf5\\x2c\\x69\\xe1\\x8f\\x46\\x1e\\x47\\x90\\x3d\\x21\\x29\\x87\\x16\\xb1\\x72\\xee\\x9c\\xb1\\x78\\xf0\\x8f\\xf2\\xd3\\xc9\\xc1\\x62\\x12\\x1c\\x2e\\xd2\\x1d\\x87\\x34\\xb2\\xf0\\x63\\x0d\\x39\\x91\\x46\\xcb\\xf7\\x6e\\x02\\x8a\\x14\\x3f\\x2b\\xf7\\xbb\\x50\\xaf\\x0f\\x57\\xb9\\xba\\x80\\x21\\xd2\\x64\\xb0\\x0c\\x66\\x62\\xf8\\x4c\\x86\\xcb\\x6d\\x59\\x52\\xb3\\xd2\\x41\\xf7\\xdc\\x3e\\x70\\x0c\\x96\\x61\\x6c\\xbc\\xfb\\x0d\\x0e\\x75\\x3f\\xfd\\x5d\\x21\\xee\\x32\\x0e\\x65\\xe9\\x7e\\x25\\xcb\\x86\\x09\"},\n{{0xcf,0xc4,0x8c,0xc6,0xf6,0x58,0x11,0xfe,0x7d,0x7b,0xba,0x85,0xd1,0xcd,0x84,0x85,0x8f,0xd6,0xf7,0xed,0xd6,0x38,0xf4,0xf5,0x52,0x36,0x3e,0xe7,0x68,0x5f,0x69,0xca,},{0xd2,0x9c,0x10,0x69,0x4c,0x5e,0x8e,0x3f,0x34,0x47,0xed,0x78,0xd3,0x4d,0xbd,0x74,0xa2,0xb3,0x01,0x37,0x3b,0xa8,0x71,0xb5,0x85,0x0c,0x33,0x3d,0xff,0x7b,0xf8,0xd0,},{0x80,0xc5,0xd5,0x1e,0x96,0xd1,0xca,0xc8,0xef,0xd3,0x45,0x98,0x25,0xe7,0x9c,0x1e,0x9f,0x65,0xaf,0x70,0x1d,0x1d,0x29,0xe1,0xf9,0x5b,0x03,0x67,0x07,0x11,0x3b,0x77,0x98,0x4b,0x7b,0x33,0x50,0xf0,0x40,0x77,0x33,0x3c,0x95,0x7f,0x8f,0xbc,0x7d,0x9b,0x04,0x0c,0x36,0x26,0x51,0x41,0x7b,0x98,0x99,0x02,0x7c,0xd3,0x3e,0xdb,0x11,0x03,},\"\\x8e\\x7d\\xef\\xb9\\xd1\\x6d\\x03\\x6b\\xd6\\x42\\xcf\\x22\\x6e\\x32\\x77\\x3e\\x60\\x53\\x61\\xc5\\xec\\x4b\\x95\\x12\\x55\\x78\\x8d\\xb0\\xa0\\x42\\xc6\\x3e\\x5a\\x43\\x67\\xd6\\x15\\x24\\xf1\\x0e\\x62\\x58\\x99\\x13\\x25\\xa3\\x9a\\xb6\\xb0\\x36\\x12\\x26\\x0c\\x3f\\xe3\\xdf\\x20\\xb3\\x42\\x02\\xd3\\x43\\x95\\xbd\\x4e\\xd4\\x0b\\xd6\\x13\\x73\\xdf\\x78\\x1a\\x4c\\x8b\\xcf\\xbd\\x15\\x30\\x10\\x60\\xf0\\x74\\x37\\x73\\x23\\x33\\xd8\\xe4\\x97\\x36\\x32\\x2d\\xee\\x6b\\x22\\x43\\x8e\\x78\\x7d\\x88\\x56\\xb7\\x0c\\x26\\xec\\x57\\xd6\\xda\\xde\\x9c\\x3c\\x28\\xe2\\x72\\x20\\xc5\\x67\\x0e\\x39\\x35\\x44\\xed\\x09\\x59\\x37\\x29\\x8d\\xc3\\xad\\xc7\\x38\\x65\\xf7\\x77\\xe9\\x00\\x37\\xbd\\xef\\x83\\x47\\x16\\x47\\x6d\\x78\\xf4\\xe6\\xcb\\x49\\x61\\xa4\\xc6\\x8a\\x8a\\x83\\x63\\x38\\xa9\\xf5\\xda\\x17\\x9c\\x4d\\x5e\\x93\\xc3\\xf7\\x0d\\xd3\\x5e\\xec\\x70\\x96\\x53\\xdd\\x8d\\xe3\\x79\\x96\\xb1\\x20\\x56\\xd4\\xee\\xfc\\xb4\\xb6\\xb3\\xc1\\x3b\\xa9\\x84\\xd8\\x32\\x27\\x5c\\x43\\x86\\xeb\\xf4\\xa8\\xff\\x7f\\x07\\x8b\\xe3\\xd4\\x28\\xc1\\xe0\\xd9\\xb1\\x62\\x38\\x1f\\x06\\xa5\\xb7\\xbb\\x12\\x70\\x40\\x03\\xd9\\x1f\\x25\\xd1\\xd8\\xfd\\x43\\x62\\x6c\\xe7\\x0f\\xff\\x59\\xd2\\x92\\x77\\x68\\xa7\\x6b\\xf7\\xf9\\xef\\x76\\xff\\x95\\x48\\x9f\\x38\\xed\\xcd\\x1c\\x9e\\x9b\\x8a\\x8b\\x0e\\xf6\\x6c\\x32\\x80\\x57\\x76\\xd5\\xae\\x9f\\xbd\\x84\\xa7\\xaf\\x4f\\xa6\\x56\\x3e\\xc7\\x0a\\xc5\\x73\\x3a\\x44\"},\n{{0x15,0xc9,0xf7,0xc4,0xd8,0x4a,0x5a,0x47,0x90,0x41,0x95,0x2e,0x6a,0x8c,0xac,0x24,0xe7,0x6f,0xd2,0xd2,0x75,0xc1,0x97,0xe6,0xb5,0x21,0x92,0x9b,0x43,0xba,0x6c,0x5d,},{0x86,0x33,0xc1,0x82,0x9d,0x29,0x09,0x1d,0xf7,0x1f,0xd5,0xc0,0xef,0x64,0x05,0x72,0xe4,0xb6,0x49,0x74,0xcd,0x09,0x7d,0xbe,0xbb,0xcd,0xde,0xba,0x04,0x16,0x47,0xc0,},{0x1e,0x36,0xbe,0xa5,0xa5,0x83,0x76,0x7e,0xbd,0x80,0x30,0x6c,0xab,0x23,0x31,0x55,0xb7,0xb4,0x28,0x14,0xb4,0x34,0x73,0xcf,0x45,0xcd,0xc5,0x03,0x9c,0x93,0x97,0x44,0xa9,0x69,0x4b,0x87,0x22,0x0d,0xaf,0x4c,0xcd,0x29,0xf2,0x5c,0xea,0x40,0x5e,0x7c,0x08,0xdb,0x2e,0xf1,0x7f,0x3f,0x03,0x4d,0xbb,0x49,0xcf,0xf6,0x02,0x83,0xe3,0x06,},\"\\x11\\x73\\x0d\\xd4\\x5d\\xda\\x80\\xd8\\x4d\\x08\\x0d\\x92\\xe9\\xbd\\xda\\xee\\xa6\\x87\\x8e\\x4a\\x0b\\x3b\\x51\\x2d\\x9e\\xa7\\x33\\x80\\x8e\\x1c\\xef\\x51\\xd4\\x90\\x48\\xd6\\xc7\\x81\\x16\\xa4\\xbd\\xe3\\xc6\\x4a\\xce\\xaa\\x52\\xbe\\xca\\x86\\xb3\\x31\\xab\\x59\\xe9\\x18\\x5c\\x70\\x28\\x6a\\x02\\xbb\\x5d\\xd0\\x4f\\x5c\\x7f\\x4e\\x9c\\x7e\\x44\\x5e\\x77\\x45\\x85\\x65\\xf1\\x59\\xc7\\x83\\xdf\\xd4\\xd9\\x76\\xa9\\x10\\xe9\\x37\\x78\\x9d\\x21\\x41\\xd4\\x16\\xed\\x3a\\x7f\\x60\\x8d\\x26\\x73\\x7a\\x86\\xb2\\x0b\\x62\\x4e\\x3c\\x36\\xaf\\x18\\xd2\\x5c\\x7d\\x59\\xb8\\xd7\\x42\\x7e\\xc6\\xc4\\xd3\\xd4\\x38\\xd7\\xae\\x09\\x49\\xdd\\x7d\\x74\\x8c\\x1f\\xfd\\x6f\\x28\\xe8\\x28\\x5d\\x44\\x04\\x22\\xd2\\x2a\\x37\\x61\\x20\\x2e\\x95\\x84\\xf5\\xcd\\xb3\\x50\\x45\\x47\\xaa\\x4b\\x68\\x57\\x30\\xc9\\x82\\xcb\\xa2\\x13\\xde\\x08\\x02\\x0a\\x5e\\x4e\\x46\\xa9\\x5f\\xac\\x4b\\x48\\x1b\\xea\\x0b\\x63\\x0a\\xbd\\x03\\x0d\\xdd\\x33\\x5a\\x20\\xfe\\x2c\\xf7\\x09\\x4a\\xef\\x48\\x13\\x95\\x69\\x91\\x91\\x3c\\x68\\x21\\xf4\\xb5\\x41\\x0d\\xf4\\xf1\\x33\\xfe\\x63\\xe2\\x2c\\x08\\x09\\x2a\\x0a\\x65\\x97\\x27\\x22\\xa2\\x7a\\xe4\\x20\\x11\\xa8\\x07\\xc3\\x27\\xb4\\x17\\x23\\x7c\\x54\\x01\\x14\\xee\\xcb\\x9f\\x0e\\x96\\xcd\\xa5\\xdc\\xf0\\x24\\x6f\\x1d\\x27\\x17\\xf4\\x9b\\x9c\\xea\\x9d\\xc6\\xa3\\xda\\x9b\\x39\\x6f\\x02\\x70\\x52\\x92\\x26\\xf5\\xdc\\xba\\x64\\x99\\x91\\x8a\\x6c\\x28\\x9f\\xe0\\x55\\xfe\\xc8\"},\n{{0x6d,0x2d,0x0d,0x82,0x3f,0x29,0x47,0x46,0xb9,0xa5,0x51,0x2e,0x14,0xe7,0x3c,0x1d,0x85,0x5b,0x5e,0x4b,0xca,0x65,0xfe,0x81,0x77,0x29,0x81,0x0c,0xc5,0xef,0x84,0x0d,},{0x1b,0x64,0x80,0xa6,0xa9,0x0d,0xfb,0x47,0x29,0x84,0x85,0x5c,0xef,0x6f,0x1a,0xb3,0x1e,0xb7,0xb3,0xf1,0x3c,0x8a,0xc0,0x0f,0xa5,0x56,0xd2,0x0b,0x53,0xe5,0xae,0x17,},{0xb5,0x15,0xf4,0x9e,0xb3,0x2a,0xd4,0x78,0x69,0x2d,0xf8,0x8f,0x07,0xb7,0x80,0x2c,0x6e,0x0e,0x53,0x27,0xaa,0x08,0xa6,0x36,0x6e,0x4c,0xb1,0xd1,0xe2,0x6f,0x9e,0x65,0xfc,0x81,0xab,0xeb,0xe2,0x21,0x5d,0x64,0x91,0x00,0xf2,0x75,0x98,0x27,0x3a,0x41,0x2b,0x62,0x4e,0x84,0x2d,0x81,0x30,0x40,0x37,0x97,0xe5,0x7d,0xec,0x97,0x5a,0x0a,},\"\\x87\\x72\\x72\\x1f\\x72\\xea\\xf7\\xf7\\x30\\x40\\xc0\\x68\\xa7\\xc3\\x75\\x3b\\xff\\xca\\x7d\\xc2\\xd0\\x93\\x0c\\x65\\x25\\xf4\\x25\\xe6\\x00\\x5c\\x25\\xcd\\x4c\\x0f\\xf5\\x09\\x5c\\x9c\\x61\\xa5\\xd8\\xa1\\x96\\x7b\\x8c\\x86\\x01\\x0c\\x88\\x4e\\x50\\x9e\\x6b\\x16\\x70\\xf7\\x90\\x46\\xe2\\x29\\x79\\xeb\\xd3\\x54\\x73\\x40\\x90\\xd3\\xad\\xa2\\x14\\x35\\xc1\\xf8\\x25\\x4f\\x7b\\x52\\x22\\xcd\\x55\\x64\\xf0\\x64\\xe9\\x77\\x64\\x03\\x66\\x44\\x9f\\x4e\\x50\\x08\\xf8\\x70\\xf9\\xc4\\x84\\x05\\x65\\xbf\\x4f\\xb5\\xf5\\x74\\xc9\\x77\\x4b\\xa2\\x56\\x8e\\x71\\xa9\\xcc\\xd8\\x2f\\xfc\\x59\\xb6\\x94\\xf2\\x6e\\x7d\\xe4\\xce\\x2e\\x3f\\xd8\\x80\\xa0\\xee\\xf3\\x87\\x93\\x13\\x33\\xed\\xe0\\x0d\\xcb\\x06\\x5e\\x6d\\x0f\\x79\\x59\\x1a\\x2a\\xa9\\x56\\xdf\\x19\\x48\\xa2\\x65\\xcb\\x95\\x75\\x0d\\x8a\\x23\\x3b\\x15\\xc2\\x88\\xa0\\x54\\x87\\xc5\\x15\\x66\\x3f\\x93\\xe7\\x40\\xfb\\x15\\x70\\xfb\\xe4\\xbd\\x80\\xc6\\x8e\\x8d\\x92\\x97\\x34\\x5a\\x8a\\x01\\xcd\\xbd\\x88\\xf4\\xa3\\x9b\\xed\\x9c\\x5e\\xf0\\x9f\\x14\\x4b\\xce\\x5d\\xe5\\x68\\xbf\\x37\\x33\\xbc\\x53\\xb2\\x03\\x9a\\x29\\xcb\\x3e\\x19\\x45\\x01\\xad\\xc1\\xc1\\x0e\\x86\\x38\\x3a\\xac\\x8b\\x0f\\x85\\xc6\\x7a\\x66\\x89\\xbb\\xe1\\x47\\x0a\\x39\\x24\\x76\\x31\\x34\\x39\\xca\\x88\\xd9\\x8c\\x02\\x1c\\x0e\\xae\\xc2\\x5f\\xb2\\xf9\\xa1\\x60\\xce\\x5c\\x78\\x61\\x70\\xbe\\x02\\x38\\xfb\\x87\\x85\\xdd\\x33\\xbf\\xa9\\x05\\x9a\\x6c\\x37\\x02\\xd0\\xde\\x05\"},\n{{0xc0,0xcf,0x79,0x9a,0xf7,0x39,0x5b,0xf2,0x7b,0xaf,0xa3,0x6c,0xab,0x43,0x70,0x45,0xe3,0x9c,0x90,0x3b,0xf8,0x07,0x54,0x83,0x19,0xce,0x44,0xf2,0x87,0x49,0x4f,0xbb,},{0xaf,0xbf,0x55,0x0c,0xa2,0x90,0xc9,0x05,0xbd,0xd9,0x2f,0xc8,0x83,0x1e,0xbe,0x3d,0xfe,0xb6,0xda,0xae,0x4f,0x56,0x00,0x52,0x53,0xcc,0x50,0x95,0x1e,0x50,0xed,0xc2,},{0x5b,0xba,0x01,0xa4,0xc7,0xb2,0x55,0x42,0xd0,0x69,0x12,0xde,0x70,0xaa,0x1e,0x22,0x04,0x23,0xfd,0xf8,0x33,0x8a,0x9e,0x69,0x33,0x95,0xcb,0x6f,0x0d,0xc1,0xfb,0xfd,0x01,0x8e,0x3c,0x77,0xe5,0x0a,0xef,0x90,0xa9,0x08,0x0f,0x30,0xf1,0xf5,0x79,0x2b,0x24,0x31,0x07,0x8f,0xe6,0xe3,0xe0,0x04,0x64,0x24,0x5e,0x17,0xcd,0x8d,0xc1,0x07,},\"\\xdb\\xe6\\x57\\x80\\xe9\\x68\\xde\\x9e\\x40\\xff\\xb5\\x7c\\xf5\\x9a\\x60\\xfd\\x93\\xb3\\xf9\\xa5\\xe7\\xd8\\xed\\x51\\x80\\xad\\xbc\\x57\\x8c\\xa1\\xbc\\x48\\xbd\\x9f\\xb6\\x0a\\x13\\x24\\xc9\\xc2\\xc1\\x14\\x14\\x79\\xa0\\xdc\\xf0\\xf1\\xd0\\x7e\\x84\\x93\\x65\\x26\\xdf\\x42\\x33\\x3c\\x0d\\x77\\x3e\\x3f\\xed\\x9e\\x40\\x38\\xde\\x5b\\x95\\xad\\x90\\x5c\\x92\\xcb\\xe0\\x40\\x48\\x7b\\xf5\\x5e\\x10\\xe1\\xed\\xb4\\x29\\xa0\\xec\\xc4\\xe0\\xe8\\xd0\\x0a\\x98\\x8a\\x9c\\xd5\\x3e\\x2e\\xb3\\x72\\xf4\\xfc\\x4c\\xd9\\x53\\x7b\\x26\\x9b\\xa3\\xa2\\x3c\\xef\\xbc\\x8d\\xf6\\x47\\x6e\\x75\\x43\\x4b\\x81\\xd9\\x3e\\x88\\x91\\xbf\\x41\\x7c\\x82\\xe3\\x63\\xf3\\xe4\\xab\\xf8\\x0a\\x4f\\x73\\xac\\xa8\\x4a\\xc7\\xdf\\x63\\x37\\xf5\\x36\\xd6\\x3d\\x93\\x9d\\x92\\xcb\\xa6\\x4b\\xe7\\x42\\x22\\x11\\x16\\x06\\x9e\\xf2\\x51\\xab\\xba\\x0b\\x00\\xaf\\x01\\x71\\x8b\\xb5\\x80\\xdd\\xbe\\xb7\\x99\\x73\\xef\\x10\\xa6\\x8b\\x4d\\x0f\\xa0\\x23\\xd6\\xeb\\xd3\\x07\\x9d\\x6b\\x32\\xa1\\xaa\\x20\\xa2\\x1e\\x92\\x02\\xf2\\x75\\x90\\xc3\\xf0\\xc0\\xcc\\x25\\x30\\x73\\xc3\\xf8\\x22\\xaa\\xc4\\x59\\xd3\\x9f\\x50\\x75\\x8b\\x70\\xc0\\x07\\x10\\xa3\\xc9\\x84\\x38\\x41\\x65\\x08\\x52\\x2e\\x51\\x2a\\xda\\xa0\\xaf\\xd5\\x03\\xa7\\xce\\xb0\\x4f\\xb9\\x4a\\x4a\\x93\\x2c\\xe8\\x0c\\xd5\\xa7\\xf1\\x1b\\xb8\\x61\\x26\\x3f\\x58\\xe5\\x74\\x9d\\x54\\x2a\\x11\\x0d\\xe7\\xc7\\x68\\x9d\\xfc\\xb0\\xc5\\x1a\\xfa\\x9d\\x54\\xa5\\x8f\\xf8\\x9f\\x3f\\x67\"},\n{{0xcd,0xaa,0x50,0xe8,0x52,0x7d,0xc7,0xa5,0x0f,0xb3,0x7e,0x28,0xfa,0x8b,0x95,0x68,0xc3,0x7e,0x85,0x67,0xe0,0xb4,0x99,0x99,0x7b,0x9a,0xed,0x67,0x61,0x80,0xc3,0xb0,},{0x7c,0x56,0xe1,0x64,0x51,0x02,0x68,0xc1,0x82,0xb4,0x23,0x74,0x79,0x04,0xf1,0xd3,0xa5,0x80,0x93,0x30,0xf6,0xe1,0xb2,0x92,0x66,0xec,0x46,0xe7,0x3b,0xe1,0x55,0x0f,},{0x13,0x7b,0xd1,0x0a,0x50,0xef,0x60,0x93,0x84,0xfe,0x66,0x87,0x68,0xfb,0x87,0x1d,0xe7,0x41,0xca,0x0f,0x53,0xff,0x84,0x77,0xd7,0xeb,0xfa,0x90,0xaa,0xfd,0x5e,0x26,0x81,0xfd,0xf1,0xb8,0x92,0x50,0x46,0x3c,0x15,0xdb,0x8e,0x17,0xa5,0x88,0x25,0xfe,0x94,0x27,0xde,0x08,0x9c,0x34,0xde,0x13,0xcd,0x07,0xbb,0xa1,0x8d,0x4a,0xa4,0x0d,},\"\\x94\\xfc\\xfb\\xaa\\xa3\\x03\\xde\\xce\\x7b\\x90\\x8f\\x87\\x4c\\xc5\\xf0\\x95\\x06\\x1f\\x17\\x54\\xbb\\x35\\x78\\x0d\\xb6\\x66\\xb6\\x3a\\xb8\\x29\\x08\\x11\\xbf\\x1c\\x52\\x1a\\x7f\\x8f\\x78\\x5e\\xa2\\x70\\xdf\\xb3\\x9d\\x0d\\x6e\\xd9\\x5a\\xb7\\x19\\x55\\xa1\\x1f\\xfa\\xea\\xa2\\x68\\xe0\\x81\\xff\\x3e\\x4f\\x24\\x25\\xb4\\x18\\x80\\xa9\\x87\\x15\\x1e\\x67\\x8e\\x89\\x11\\x13\\x50\\x94\\x2d\\x82\\x0c\\x3e\\xec\\x36\\x21\\x24\\x26\\x66\\x3b\\xe1\\x75\\xe5\\x28\\x6b\\x4a\\xd1\\xcc\\x80\\x4e\\x3e\\x3a\\x03\\xb9\\xfa\\x3e\\x82\\x83\\x8e\\xbb\\xc2\\x61\\x5a\\x64\\x5f\\x2c\\xa1\\x46\\x8a\\xc4\\xa1\\xcd\\xbe\\x52\\x37\\x61\\xe8\\x3f\\x43\\x81\\xb0\\xc8\\x55\\x0a\\xe5\\xe8\\xc8\\xcd\\x1f\\xda\\x57\\x19\\x14\\x36\\xe2\\x7c\\xb8\\x83\\xbc\\x64\\xbe\\x86\\xa9\\xdc\\x61\\x10\\xef\\x34\\x01\\xd8\\x8a\\x7d\\xeb\\xd1\\xb7\\x01\\xd9\\xc2\\x57\\xa6\\x82\\x6c\\xf0\\x1e\\x9e\\x29\\x22\\xe3\\xae\\x57\\x7f\\x28\\x34\\x27\\x5f\\xb0\\xec\\xda\\x80\\xed\\x8c\\xf1\\x80\\x1e\\x0b\\xc5\\xe0\\x1e\\x26\\xa7\\x7c\\x48\\xbd\\xf4\\x6a\\x5c\\x48\\x94\\xd2\\x2a\\xb5\\x3e\\x74\\x18\\x27\\xe2\\x4b\\xed\\x5f\\x07\\x50\\xff\\xad\\x05\\xe5\\x3f\\x1d\\x5e\\x61\\xdf\\xd3\\x16\\xb1\\x91\\xd9\\x79\\x7e\\xf7\\x13\\x13\\x1a\\x8b\\x43\\x0a\\xbe\\x3f\\xac\\x5f\\x3c\\x4a\\x2c\\xa0\\x21\\x87\\x8b\\x15\\xad\\xc8\\xc5\\xf5\\x42\\x11\\x42\\x60\\xe6\\x87\\xa9\\xd1\\x99\\xd2\\x30\\xc4\\xe0\\xd3\\xfc\\x69\\x69\\x93\\xb5\\x9c\\xcf\\xa3\\xff\\xa9\\xd8\\xd2\\xfb\"},\n{{0x0f,0xde,0xa9,0xbe,0xe6,0x28,0x8f,0x94,0x7e,0x0a,0xdb,0xdd,0xa4,0xdf,0xb2,0xba,0xa0,0x38,0x91,0xaf,0x25,0x02,0x4a,0x5e,0x13,0x8a,0xc7,0x79,0x84,0xd0,0x05,0x07,},{0x70,0xab,0xd8,0x64,0x30,0xd7,0xe8,0xd6,0x32,0x09,0xc8,0xb3,0x73,0xec,0x4e,0x4b,0x79,0xe9,0x89,0xe6,0x72,0x5f,0xac,0xef,0xba,0xde,0x3c,0x75,0x74,0xd2,0x3c,0xd0,},{0x80,0xc4,0x2d,0xd5,0xdf,0x03,0xb2,0x85,0xa8,0x6a,0xc9,0x5c,0xe6,0x66,0x9f,0x78,0x6a,0x97,0x8a,0x81,0x3a,0x9d,0x7b,0x8c,0x6a,0x23,0xde,0x76,0xfb,0xd0,0x9b,0xdb,0x66,0xc5,0xdd,0x1c,0xc9,0xf1,0xa1,0x76,0xcb,0xa3,0x88,0xd5,0x05,0x17,0x64,0xa3,0x2f,0xa2,0x7f,0x00,0x28,0xba,0x48,0x98,0x06,0x8b,0xd0,0x1a,0x3e,0xe1,0x72,0x08,},\"\\xcf\\x72\\xc1\\xa1\\x80\\xa2\\xbc\\x37\\xd8\\x47\\x8d\\x9a\\x7a\\x39\\xac\\xf0\\x3b\\xf2\\xa5\\x07\\x90\\xf7\\x90\\x2f\\x81\\x12\\x12\\x22\\xd3\\x1d\\x3e\\xc9\\x16\\xf4\\xf2\\x4c\\xef\\x9d\\x7c\\x41\\xdc\\x02\\x1b\\x0e\\x84\\x87\\xbb\\x89\\x2e\\x47\\x30\\x5e\\x54\\x52\\x03\\x03\\xe8\\x9b\\x30\\xb2\\x63\\xda\\xc4\\xa9\\xba\\x37\\x5d\\x46\\xc4\\x0f\\xcf\\x40\\x05\\x35\\xc9\\x59\\xd2\\xb7\\x46\\xa7\\xfc\\x97\\x0c\\xf6\\x5b\\x47\\x2e\\x84\\xb5\\xf1\\xd0\\xeb\\xad\\xcf\\xa1\\xae\\xd6\\xfc\\x47\\xfa\\xcc\\xe1\\x6a\\x36\\x6a\\x3b\\x1d\\x6e\\x51\\x68\\x13\\xc1\\x96\\x09\\x75\\xf8\\xf2\\xb4\\x30\\x42\\xfb\\x4e\\xea\\xab\\xe6\\x3c\\x6f\\x65\\xdb\\x45\\xdd\\xb7\\xdb\\x88\\x8a\\x19\\xa9\\xd7\\xba\\x6c\\xa4\\x79\\xfc\\xd7\\x0c\\x5d\\x1e\\x97\\x0f\\x12\\xc1\\x4f\\x4d\\x24\\xfb\\x7e\\x2f\\x35\\x7b\\xd3\\xa9\\x4a\\xa1\\xb8\\x68\\xcc\\xc0\\x84\\x7f\\x2e\\xef\\x21\\x85\\x3e\\x25\\x3b\\xaf\\xbf\\x07\\xc4\\xe6\\x17\\x6a\\x1e\\xf0\\x77\\x16\\x78\\x41\\xeb\\xbe\\x56\\x29\\x33\\x71\\x57\\xf3\\x9f\\x75\\xc7\\x1d\\x21\\xe7\\xe9\\x6c\\x51\\xa1\\xb1\\x6f\\xa8\\xdc\\x60\\xf0\\xb1\\x27\\x9f\\xcd\\xa2\\x64\\x1f\\xc8\\x59\\x1e\\x3c\\x49\\x2f\\x15\\xbf\\x83\\xca\\xf1\\xd9\\x5b\\x2c\\xd9\\x13\\x32\\xf1\\xb4\\x20\\x2f\\xe7\\x28\\x62\\xca\\x2e\\xa2\\xef\\x92\\xc1\\x1d\\xb8\\x31\\xd8\\x2f\\x8f\\xc3\\xd4\\x1f\\xe2\\x9a\\x76\\xc2\\x11\\xa7\\x58\\xe2\\xf7\\x1b\\xd8\\x9d\\x2c\\x66\\x10\\xf2\\x01\\x42\\x9f\\x34\\x8d\\x56\\xe1\\x0e\\x3b\\x7a\\xf5\\x3e\\x27\"},\n{{0x03,0xd5,0xe4,0x66,0xf8,0x29,0x8a,0xb5,0x43,0x8a,0x30,0x97,0x6d,0x13,0x22,0xa7,0x21,0x5a,0x64,0x2d,0xd5,0xfb,0x4c,0x3f,0x85,0x19,0x40,0x9a,0x75,0x22,0xf0,0x92,},{0x4b,0x3e,0xd4,0xdb,0x08,0x0e,0x2a,0x45,0x2e,0x16,0x91,0x2c,0x14,0x50,0x44,0x24,0x92,0x0a,0x60,0x97,0x56,0x04,0xe4,0xf3,0x79,0x25,0x8d,0x1c,0x8b,0x19,0x3d,0x6f,},{0x6d,0x7e,0x46,0x58,0xf2,0x6f,0x33,0x7c,0x98,0xe0,0x3f,0x13,0x54,0x2e,0x2f,0x39,0x44,0x0f,0xf7,0xbf,0x8d,0x88,0xf3,0xf6,0xdf,0xa4,0xd6,0x49,0x48,0xcd,0x96,0xb7,0x90,0x51,0x49,0x2f,0xc2,0x8f,0x65,0xf2,0xcc,0x0d,0x23,0xa0,0xc4,0xd5,0xe2,0x30,0x7b,0xb1,0xc4,0x7e,0x11,0xe5,0x3b,0x37,0x1f,0x09,0x1b,0x69,0xf8,0x0d,0xbd,0x05,},\"\\x1b\\x47\\xb7\\x00\\x13\\xcb\\x53\\xe1\\xf8\\xf4\\x97\\x1e\\x0f\\x39\\x56\\x3c\\xe8\\x7e\\xdb\\xc2\\xce\\xdd\\x99\\xe5\\xa3\\x55\\x85\\xdf\\x8b\\x00\\xa8\\x52\\xf7\\xb9\\xc9\\x7c\\x7e\\x4a\\x54\\x65\\xfc\\x56\\x05\\xae\\x8c\\x5c\\x36\\x57\\x0a\\x99\\x20\\x1a\\x7a\\xd6\\x03\\x12\\x87\\xef\\x0c\\x7b\\x2b\\xa6\\xe5\\x7b\\x05\\x6d\\x0f\\xc8\\xd6\\xca\\x43\\xbf\\x6c\\xbd\\xab\\x09\\x89\\x34\\xb4\\x03\\x19\\x7b\\x52\\x5d\\x22\\xd4\\x5e\\x6b\\x29\\xc7\\x8f\\x8d\\x61\\x83\\xe4\\x1f\\xfe\\x19\\x7d\\xae\\x25\\xba\\x22\\xb0\\x66\\x69\\xae\\x05\\xba\\xdd\\x7e\\x1d\\xa6\\x93\\x2a\\x7d\\x05\\x4c\\xba\\xb3\\xf5\\x4e\\x51\\x46\\x22\\x3a\\xd8\\x67\\x12\\x31\\xbc\\x16\\xfe\\x62\\x67\\x9b\\xd2\\x81\\x7a\\x6b\\x80\\xe6\\x53\\x99\\x8c\\x49\\x49\\xf8\\x1f\\xf5\\x3b\\x61\\x73\\x16\\x3e\\x11\\xda\\x3e\\x6d\\x3c\\x76\\xd8\\x4c\\x71\\x32\\x25\\xb4\\x17\\x3d\\x6b\\xf0\\x6a\\x85\\xb6\\x98\\x8a\\x48\\xbe\\x43\\x59\\xcb\\x51\\x55\\x03\\xca\\x56\\x3f\\x43\\x53\\xf8\\xe7\\xd4\\x5e\\x4d\\x94\\x46\\x2c\\x89\\xa0\\x4a\\x00\\xf1\\xb3\\xb0\\xca\\x64\\x22\\xd5\\xdb\\x02\\x9c\\x50\\x7d\\x46\\x48\\x34\\xa2\\x0c\\x78\\xa7\\x13\\x66\\x1d\\x84\\xed\\xff\\xc4\\x96\\xd6\\x92\\x82\\x61\\x98\\x94\\x43\\x7b\\x44\\x87\\x95\\x4c\\xbe\\xa2\\xaa\\x72\\x61\\xe6\\xa6\\x2b\\x68\\x51\\x15\\x4a\\x5d\\x25\\xfb\\x6b\\x4f\\x09\\xc5\\x94\\x73\\xd3\\x85\\xce\\x03\\xe9\\x1b\\xa8\\x65\\xea\\xb6\\x6c\\x58\\xc0\\xab\\xb0\\xb7\\xa7\\x8e\\x4b\\xe9\\x27\\xe5\\x54\\x60\\xcc\\xd7\\x0d\\x82\"},\n{{0x76,0xcc,0x18,0xa1,0xda,0xff,0xfa,0x10,0x05,0x86,0xc0,0x6a,0x7b,0x40,0xf7,0x9c,0x35,0xfe,0x55,0x8c,0x33,0x9c,0x29,0x99,0xa5,0xf4,0x38,0x75,0xcf,0xad,0xe0,0x3e,},{0x4b,0x9d,0xa8,0xd2,0xf1,0x37,0xdc,0x6c,0x85,0x7a,0x99,0xa5,0x99,0x8d,0xd8,0x9d,0xd5,0xf0,0x59,0x71,0xa2,0x1e,0x8c,0x77,0x66,0x70,0xeb,0x47,0xbc,0x12,0x70,0xa5,},{0xdb,0x74,0x75,0x1c,0x66,0xe6,0xb1,0x86,0x60,0x44,0xdd,0x9a,0xe9,0x9f,0x19,0xe6,0x33,0x4f,0x17,0x9e,0x79,0xd8,0xb8,0xe0,0xc8,0xcd,0x71,0xd2,0x2c,0xef,0xb9,0xea,0xb7,0xe3,0xe7,0xa9,0xc2,0xda,0x22,0x5f,0x2a,0x9d,0x93,0xa3,0x13,0xd1,0xcb,0xf1,0xb7,0xfe,0x25,0x97,0xb8,0xd7,0x02,0xbf,0x30,0x17,0xa6,0xa6,0xbc,0x7b,0x7b,0x06,},\"\\x45\\x22\\xb1\\xd8\\x23\\x73\\xf7\\xa3\\x18\\x22\\x1e\\x7e\\x57\\x61\\x75\\x03\\xdd\\xf4\\x4f\\xd5\\x39\\x97\\x52\\x2a\\x1d\\x96\\x3c\\x85\\xb7\\x08\\xd0\\xb2\\x45\\xde\\x37\\x2a\\xd5\\x2e\\xc7\\xf5\\x4f\\x62\\x13\\xd2\\x71\\xf7\\xc9\\x1d\\x5a\\x1d\\x36\\xd1\\x34\\xdb\\x38\\x9d\\xf0\\xb0\\x81\\xa0\\x6b\\xc0\\xc7\\xa4\\x87\\x5f\\x72\\x40\\x92\\x79\\x31\\x72\\xc9\\x11\\x56\\x41\\xc6\\xd0\\x54\\xf1\\xd9\\x92\\xe0\\xfa\\xe4\\xdf\\x58\\x69\\x5f\\x0e\\xa3\\x44\\x9d\\x7a\\x4b\\x3a\\x88\\x57\\xe1\\x98\\x03\\xfe\\x49\\xb6\\xd5\\x2c\\x9f\\xf3\\x74\\x6a\\x57\\x4a\\x27\\x56\\x95\\x65\\x79\\xf9\\xfb\\x80\\x9a\\x0e\\xde\\xc9\\x2c\\x55\\xe9\\x5f\\xfe\\xfa\\x3d\\x05\\xf1\\x65\\x82\\x2f\\x46\\x4a\\x21\\x99\\x9f\\x29\\x69\\x1f\\x67\\x44\\xac\\x5a\\x3e\\xe4\\x90\\x17\\x88\\x06\\x45\\xe8\\x37\\xed\\xeb\\xfd\\x2e\\x0f\\x24\\x99\\x7f\\x04\\x11\\x45\\xa7\\x2e\\x23\\x76\\xad\\xa2\\x83\\x18\\x6c\\xa2\\xb8\\x36\\x36\\x29\\x77\\x19\\x5b\\xae\\xe3\\x0a\\x3a\\xcc\\x81\\xb2\\x43\\xf3\\xee\\x37\\x6a\\x2c\\x47\\x64\\xc7\\x83\\x66\\x7a\\x4b\\x11\\x77\\xe7\\x95\\x1d\\x3e\\x3c\\x7b\\xe4\\xf1\\xbd\\x7a\\xe8\\xc6\\x0f\\xd5\\xfb\\x0f\\xd9\\x1f\\x0c\\x1c\\x14\\xd0\\xd2\\x32\\x7e\\x8f\\x20\\xd9\\x2c\\x0d\\xfc\\xc5\\x38\\x70\\xe9\\xd9\\x9f\\xdb\\xf9\\xdd\\x9a\\x17\\xe8\\x82\\x50\\x9a\\xe7\\xba\\xa8\\x65\\x3e\\x39\\xed\\xc8\\xee\\x56\\x90\\x00\\xd6\\x24\\xcb\\x93\\xa0\\x75\\x4a\\x79\\x8d\\x1f\\x81\\x1f\\x6a\\x0e\\xf5\\x50\\x1a\\x17\\xbc\\xf2\\x5f\\xd0\\xf9\\x16\\x26\"},\n{{0x71,0xad,0x98,0x0d,0x58,0xad,0x8e,0x7d,0x33,0x30,0x66,0x89,0x35,0x89,0x36,0xa3,0x72,0xd5,0x19,0x0b,0x24,0xec,0x7f,0x9b,0xde,0x74,0x9c,0xb8,0x11,0x50,0xef,0xda,},{0xfd,0x35,0xa7,0x5f,0xe5,0xab,0xc2,0x01,0x04,0x69,0x1a,0x24,0xa4,0x65,0x94,0x40,0xb5,0x5a,0xea,0xea,0x90,0x2a,0xc3,0xbe,0x27,0x4a,0xf2,0x7a,0xa8,0x31,0x28,0x69,},{0x81,0x67,0x0b,0x10,0x29,0xe4,0x81,0xe9,0xff,0x3c,0x17,0x1f,0x05,0xc1,0x68,0x61,0xc8,0x46,0xee,0x79,0xcd,0xf2,0xe2,0x1e,0x3b,0xf9,0x52,0xbc,0xfa,0xc9,0x75,0x65,0xf2,0xb1,0xdc,0xed,0xf6,0x9d,0x2e,0x7e,0xb3,0x5c,0xaf,0x56,0x62,0xe8,0xbc,0x67,0x1f,0xbb,0x96,0x75,0x6a,0x63,0xa5,0x96,0x26,0x4d,0x1b,0x7f,0x4a,0xf9,0x7e,0x06,},\"\\xe8\\x7a\\xe0\\x73\\xff\\x5d\\xcc\\x54\\x85\\xa1\\x99\\x40\\xe4\\xe3\\xff\\x26\\x3a\\x06\\x18\\xa9\\x02\\x5a\\xd4\\x03\\x2d\\xfb\\x36\\xd1\\x71\\xce\\x88\\x1f\\x71\\xc1\\x8a\\x49\\x21\\x0e\\xb4\\x58\\x19\\x80\\x61\\x42\\xe2\\xf0\\x0d\\xb3\\x04\\x18\\x35\\xbf\\x2c\\x3b\\xcc\\xf1\\xdb\\xa0\\x2b\\x8b\\x5a\\x5b\\xda\\xf8\\xfe\\xa3\\x16\\xc0\\x62\\x3d\\xd4\\x8a\\x56\\x4e\\xc1\\x66\\xf0\\x37\\xd5\\x87\\xc8\\xc0\\x16\\x84\\xe5\\xe5\\xc0\\xba\\x9d\\xba\\x4d\\x23\\xb4\\x9a\\x03\\x09\\x24\\x4e\\x28\\x2a\\x51\\x40\\x86\\x22\\xed\\xb0\\x57\\x04\\x74\\x7e\\x0c\\xde\\xec\\x97\\x68\\x93\\x77\\x70\\x71\\x09\\x89\\x72\\xc1\\x13\\xa8\\xab\\x63\\x9c\\x31\\xf1\\x61\\x32\\x33\\xee\\x46\\x0e\\xea\\x8a\\x8c\\x10\\xe1\\xe6\\xe1\\x52\\x21\\x45\\x29\\x87\\x8c\\xf1\\xad\\xae\\xaf\\x78\\xcf\\x19\\xba\\xc7\\x13\\x61\\x81\\x5b\\xf5\\x79\\x55\\x49\\x8f\\xab\\x4f\\x0f\\x2b\\x75\\x86\\xc8\\x6f\\x9f\\x4c\\x2d\\xdf\\x89\\x72\\xf9\\xb9\\xe0\\xeb\\x63\\x6d\\x84\\xbc\\xc1\\x43\\x85\\xb2\\xd0\\x38\\xbe\\x55\\xa9\\x63\\x70\\x2e\\xfe\\x22\\x5a\\x50\\xbd\\xd0\\xc4\\xda\\x92\\xa2\\xa6\\xa0\\x91\\x00\\xea\\x04\\xa2\\x11\\xd3\\x96\\x45\\x8d\\xce\\xb4\\x48\\x71\\x16\\x83\\x7d\\x13\\x9e\\xb0\\xf1\\x22\\x53\\x8e\\xd3\\x98\\x6a\\xd0\\xaf\\x4d\\xa2\\xdf\\xfc\\x89\\xf3\\x26\\x9c\\xa8\\x85\\x38\\x08\\x6e\\x69\\x1e\\x5b\\xea\\xe9\\x58\\x1e\\x7c\\x63\\xd8\\xe6\\x12\\xda\\x2c\\x47\\xf7\\x4d\\xde\\x1d\\x94\\x95\\x1e\\xad\\xb0\\xdf\\x60\\xc3\\x89\\x7d\\x2a\\x30\\x95\\xc5\\x06\\x09\\x3b\"},\n{{0x61,0x59,0x4e,0x24,0xe7,0x5f,0x99,0x6b,0x4f,0xb6,0xb3,0xe5,0x63,0xf6,0xa4,0xf9,0x91,0x5c,0xfa,0x65,0xdd,0xb1,0x99,0xb0,0x1f,0xed,0x7f,0x8e,0xd7,0x82,0x4e,0xcb,},{0x86,0x27,0xd2,0x14,0x15,0x79,0xcd,0x25,0x21,0xaa,0x07,0x68,0x00,0xac,0x35,0x4b,0x9e,0x3a,0x47,0xd7,0x1c,0xed,0xc8,0x54,0x74,0x34,0x26,0x82,0x25,0xe3,0x30,0x05,},{0x63,0x02,0xb3,0xff,0x27,0x10,0xbe,0x30,0x6c,0x92,0xb9,0xaa,0xe3,0x0d,0x23,0xc3,0xd4,0xbe,0xff,0x39,0x4e,0x63,0x20,0x1e,0x6a,0xd1,0x17,0x13,0x34,0x5c,0x4f,0xcb,0x5c,0xc8,0xd3,0xdd,0x10,0xad,0xfb,0x82,0xbb,0x11,0xa1,0x89,0xce,0x7e,0xc3,0xe4,0x22,0x27,0x27,0x62,0x4f,0xc1,0x78,0x81,0xc1,0x47,0x88,0xd2,0x71,0x0e,0x16,0x08,},\"\\xbc\\x01\\xb0\\x8c\\x7c\\xaa\\x23\\x61\\x00\\xa0\\x12\\xa7\\x26\\x47\\x7d\\x0e\\xc3\\x89\\xdb\\xfa\\xda\\xc7\\x3d\\x51\\x06\\x42\\x4c\\x5d\\x1f\\x3d\\x1c\\xef\\x16\\x95\\xcf\\xd9\\x3a\\x70\\x62\\xec\\x8b\\xf1\\x06\\x70\\x47\\x85\\x49\\x20\\x16\\x2f\\x65\\x13\\x57\\xbe\\xdf\\x1c\\xd5\\xa9\\x2e\\xc2\\x9b\\xdb\\x5d\\xff\\x71\\x6e\\x8f\\x60\\x25\\x51\\x5a\\x95\\x49\\xba\\x36\\xcd\\xc3\\x5c\\xed\\x7c\\x5c\\x0c\\x36\\x8e\\x6c\\xd9\\x2f\\x2f\\x10\\xae\\x14\\x6a\\x20\\x72\\x8c\\x37\\x4b\\xba\\x50\\x96\\x41\\xce\\x88\\xcb\\x42\\xff\\xf0\\xce\\xdf\\xd9\\xfd\\x67\\xf3\\x10\\xf9\\xd0\\x1a\\x3f\\x36\\x90\\xeb\\x21\\xdb\\x17\\xbc\\xe6\\x7a\\xe3\\x5c\\x4c\\xd2\\x4c\\x20\\x9f\\x09\\xf0\\x44\\x75\\x9d\\x8d\\x5a\\x7d\\x24\\x8e\\x2b\\xd9\\x66\\x52\\x4b\\xa8\\xc0\\xc2\\x89\\x74\\x72\\x6b\\x43\\xbd\\x05\\xde\\x84\\x34\\x33\\xcc\\x40\\x05\\x98\\x92\\x29\\x74\\x62\\x3d\\x9a\\xcb\\xfd\\xc7\\x61\\xc4\\xc0\\x43\\x75\\xa9\\x52\\xce\\x54\\xca\\xff\\xaa\\x96\\xac\\xff\\x6d\\x9d\\xc2\\x78\\x74\\x2a\\xf4\\x76\\xe1\\x86\\x5c\\xb8\\xc2\\x0d\\x13\\xd1\\xc1\\x90\\x08\\x63\\xbc\\xa2\\x31\\xe4\\x4c\\x6b\\x0d\\x47\\xcb\\x41\\xd5\\x10\\xf7\\x95\\x8f\\x48\\xf3\\x04\\xd0\\x3d\\xa0\\x33\\x48\\x4a\\x3e\\x1f\\x27\\x3f\\xaf\\x69\\x83\\x37\\x5b\\x7d\\x3b\\xe0\\x3d\\x8a\\x0a\\x00\\x2d\\xef\\x63\\x65\\xbe\\xb2\\xfa\\x8c\\xcf\\x1a\\x94\\x98\\x7a\\xdc\\xd3\\x3d\\x0d\\xa1\\x17\\x7f\\xc5\\x15\\x9b\\x6e\\x56\\xd0\\x04\\x30\\x1e\\x92\\x1d\\xbc\\x12\\xec\\x0a\\x73\\xf4\\x13\\xcf\\x2c\\x48\"},\n{{0x54,0xe6,0xbb,0xfb,0xf8,0xc0,0x6f,0xf2,0xc0,0x66,0x31,0x8c,0x2e,0xbf,0x03,0xd5,0x06,0x54,0x7b,0xf4,0x3c,0x2d,0x7a,0x5d,0x4d,0xf3,0x05,0xa3,0x03,0x2b,0x71,0x38,},{0x3b,0x71,0xaa,0x1d,0xef,0x66,0x6d,0x91,0x88,0xf4,0x03,0xf8,0x2e,0xd3,0x04,0x54,0xab,0xa5,0xbc,0x9f,0x47,0x0f,0x6e,0xb9,0x88,0xda,0x18,0x7c,0x92,0x52,0x32,0x84,},{0x3d,0xf4,0xd0,0x90,0x79,0xf8,0x30,0xe3,0xf9,0x82,0x28,0x36,0x81,0xba,0x37,0xb5,0x0f,0x3c,0x73,0xde,0x2c,0x5d,0x22,0xa2,0x91,0x35,0x8e,0xbb,0x1f,0xb8,0x54,0xe5,0x10,0xf6,0x3f,0x9a,0x48,0xe9,0xff,0xf7,0xfd,0x83,0x11,0x30,0x2e,0xa3,0xe9,0x69,0x39,0x4e,0x6d,0x49,0xc9,0xe3,0x18,0x20,0x54,0x94,0x2f,0x6a,0x74,0x4c,0xee,0x03,},\"\\x03\\x18\\xd7\\xcb\\x48\\x05\\xaf\\x98\\x21\\xdd\\x3f\\x91\\x4b\\x0e\\x07\\x6f\\xea\\x04\\xa7\\xd2\\xdb\\x3a\\x59\\xa0\\x0a\\xff\\xea\\xd3\\x32\\x5a\\x2b\\xe4\\x0c\\x1f\\x87\\xf5\\x32\\x76\\xa8\\x55\\x26\\x04\\xf2\\x28\\xb9\\x76\\xe2\\x88\\xb9\\xbe\\x90\\x6a\\x7b\\xd2\\x5b\\x2f\\xfa\\xb8\\xa8\\xaf\\x5d\\x0f\\x6e\\x08\\x78\\x6f\\xd0\\x34\\xe2\\xfe\\x1e\\xb7\\xee\\x03\\x39\\x79\\x86\\x0d\\xd1\\xe5\\x32\\x72\\x87\\xe9\\xe6\\x15\\xf5\\xdc\\x5a\\x96\\x0f\\x17\\x02\\x6b\\x56\\x84\\x2f\\xc8\\xd4\\x4c\\xad\\x00\\x2e\\xdc\\x85\\x01\\xcf\\xb9\\x56\\x00\\x15\\x02\\xe4\\xdd\\xc8\\x1a\\x77\\x00\\xd9\\xc0\\xbe\\x88\\xeb\\x4a\\xaa\\x64\\xa6\\xcb\\xc3\\x9d\\xe8\\x2f\\x13\\xc1\\x10\\x86\\xde\\x1a\\x42\\x70\\xd3\\xaf\\x97\\x28\\x4b\\xac\\x1c\\xae\\xf1\\xd3\\xed\\xaa\\x10\\x71\\x66\\x6b\\xd8\\x3b\\x2e\\xde\\x39\\x62\\xd9\\x8b\\x9d\\x93\\x49\\x7d\\xdf\\xd8\\xe9\\x7d\\xab\\x30\\x89\\x95\\x0c\\xf3\\x0e\\xd1\\x1d\\xb7\\x7a\\xd1\\x43\\x7a\\x0a\\xf5\\x88\\x9d\\x8e\\xfc\\x44\\xe6\\x12\\x42\\x0e\\x39\\x07\\x26\\x7d\\xf3\\xac\\xff\\x4b\\xd3\\xfb\\x6e\\x8c\\xa5\\xba\\xdf\\x8e\\x72\\xf9\\xde\\x39\\x52\\x86\\x53\\x05\\x85\\x24\\x45\\x6a\\x81\\xda\\x5f\\x84\\x98\\x2a\\xfa\\xc3\\x4b\\xef\\x5f\\x71\\xe9\\x1f\\x8f\\x90\\x93\\x8a\\x6f\\x5f\\x1f\\x28\\x77\\x16\\xde\\x56\\xa0\\x94\\x6d\\x26\\x1e\\x87\\xbc\\x77\\x5c\\xe1\\x89\\xe4\\x1a\\x77\\xba\\xed\\xe7\\x32\\x0a\\x3c\\x60\\x8f\\xc9\\x71\\xe5\\x5d\\x0a\\x77\\x3c\\x4d\\x84\\x8d\\x42\\x86\\x37\\xf1\\x1b\\x4e\\x44\\x60\\x39\\x0c\"},\n{{0x68,0x62,0x06,0x1b,0xe0,0xde,0x9d,0xfd,0x99,0x81,0x18,0x20,0x4b,0x2b,0x98,0xdb,0x3c,0xe7,0xd7,0xe8,0x19,0xdb,0xc1,0x07,0x94,0xaf,0x0a,0xb2,0xb0,0x6e,0x84,0x34,},{0x9c,0x5f,0x7c,0x22,0x65,0xdd,0xe1,0xb2,0x5e,0x4f,0x27,0xec,0x71,0x58,0x0d,0x52,0xdc,0x89,0xf2,0xc3,0xa7,0x12,0xbc,0x1a,0xd5,0xd6,0xd6,0x9e,0x71,0x1e,0x08,0xd4,},{0x96,0x5e,0xdb,0x34,0xe8,0xab,0x8b,0xc3,0x20,0x4a,0x32,0x01,0xd2,0x21,0x86,0x37,0x2d,0xe4,0x24,0x26,0x00,0x29,0x7c,0xfd,0xb5,0x7a,0xa1,0xdf,0x07,0x4e,0xc5,0x0d,0xdf,0x10,0x10,0x5e,0x9d,0x4c,0x89,0xa2,0x66,0xc3,0x4d,0xb7,0x77,0x2a,0xa9,0x4c,0xba,0x94,0x64,0x29,0xe6,0x8b,0xa6,0x2b,0xf9,0xa0,0xac,0x90,0xf5,0xf0,0x5b,0x02,},\"\\x17\\x40\\xdd\\xe8\\x43\\x4a\\x0d\\x68\\x99\\x25\\x67\\x9b\\x0c\\x18\\x03\\x00\\xcd\\xbd\\x0c\\xf6\\xa8\\x9a\\xd8\\xfd\\xe3\\x46\\x53\\x31\\x6c\\xee\\x4c\\x57\\x1a\\x41\\x05\\xc9\\xe9\\xe0\\x28\\x42\\x38\\xfe\\xf2\\xc3\\x8a\\x09\\x15\\x7c\\x5d\\xb9\\x43\\x40\\x57\\x1b\\x39\\x0a\\xdf\\xb6\\x9f\\xf4\\xc0\\xdc\\x50\\x53\\x25\\x3a\\x67\\x9d\\x42\\xcc\\x1f\\x1b\\xf1\\xff\\x42\\x92\\x29\\xea\\x0a\\x50\\x44\\xc6\\xf7\\x95\\x64\\xe0\\xdd\\x28\\x7f\\x53\\xf0\\x15\\xb8\\x31\\x87\\xd9\\xad\\x27\\xd9\\x10\\x39\\xaf\\x06\\x2c\\x43\\x7b\\x15\\x75\\xa0\\xea\\xb6\\xae\\xb8\\xaa\\x0d\\x27\\xb2\\x76\\x65\\xd6\\xde\\xa9\\x04\\x1f\\xf9\\x96\\x3a\\x31\\x18\\xb3\\x29\\x8a\\x85\\x44\\xe3\\xfd\\x69\\xac\\x68\\x77\\xe3\\xe4\\x05\\x2f\\xe4\\x42\\x2b\\xf0\\x35\\x60\\xb2\\xc5\\x7e\\xc5\\x31\\xee\\x8b\\x5f\\xf5\\x3c\\x28\\xdb\\xde\\x35\\xbb\\x45\\xc3\\x50\\x77\\x63\\x6e\\x6f\\x84\\x1b\\x59\\xd7\\xeb\\x77\\xbc\\x77\\x91\\xb6\\x09\\x38\\x58\\xa3\\xa8\\x0a\\x3a\\xa6\\xd7\\x78\\xdb\\xf5\\x3d\\xb9\\xd0\\x61\\x19\\xc5\\x0b\\x71\\xc7\\x91\\xc0\\x49\\x5c\\x57\\x6d\\x1b\\x59\\xd3\\x96\\x87\\x3e\\xd8\\x71\\x48\\x53\\x52\\xc8\\x29\\x9a\\x35\\x9d\\xa5\\xee\\x9d\\x7f\\x36\\xed\\x14\\x55\\xf8\\x98\\x51\\xa3\\x08\\x51\\xbe\\xa7\\x19\\x68\\x5a\\xec\\xd0\\x8f\\x25\\x56\\x26\\x09\\xdd\\x10\\x66\\x30\\x73\\x52\\x77\\xe1\\xd6\\x51\\x9b\\xb1\\x68\\x7d\\xe8\\xb8\\xc6\\x8b\\x96\\x71\\x45\\x2e\\xdb\\xb3\\x49\\x1d\\xa2\\x64\\xcd\\xfa\\x00\\x17\\xc5\\x12\\xd2\\x76\\x97\\x59\\xcb\\x92\\x5f\\xb6\\x64\"},\n{{0xb2,0x25,0x0b,0xbc,0xb2,0x68,0xd2,0x47,0x7c,0x83,0x12,0xb1,0x90,0x0f,0xd9,0x99,0x82,0xba,0xa2,0x9a,0x68,0x97,0x4f,0xbf,0x87,0x78,0xa1,0x22,0x8d,0xc9,0x75,0x50,},{0x44,0xaa,0x8d,0xf1,0x18,0x16,0x74,0xb0,0x5a,0xde,0x98,0x0f,0x7e,0xdd,0xba,0xf3,0xbd,0x74,0x22,0xa9,0x20,0x28,0x7c,0xb2,0xd2,0xdb,0x59,0xa0,0x63,0xee,0xbf,0x74,},{0xf2,0xb8,0xd9,0x2e,0xd5,0x1e,0xbd,0x10,0x00,0xbf,0x9d,0xd3,0x41,0x1a,0x9f,0xa9,0xe7,0xae,0xe5,0x4c,0x4c,0x86,0xe2,0x4a,0xd0,0xf9,0xad,0x5c,0x55,0x64,0x3a,0x12,0xd6,0x80,0x01,0x9c,0xa0,0x3f,0x21,0x6b,0xd4,0xbd,0x32,0xc9,0xce,0x1c,0xd8,0xa5,0x28,0xc3,0xff,0xaa,0x5d,0x5b,0x1d,0xc9,0x1a,0x4b,0xe5,0x6f,0x0e,0x2c,0x5e,0x06,},\"\\x7e\\xf0\\xae\\x13\\x36\\xa6\\xfa\\xb3\\x7f\\x99\\xda\\x5f\\xa7\\xd0\\xde\\xc7\\x40\\x9c\\x07\\x26\\x23\\xea\\xd8\\x4f\\x24\\x1d\\x53\\xd0\\x59\\x6b\\x46\\x17\\x05\\xfb\\x1b\\x3c\\x53\\x7d\\x36\\xb8\\x9e\\x89\\x60\\xfe\\xbb\\x4c\\xdc\\x0d\\x42\\x7c\\xe2\\xfc\\x1b\\xe5\\x8d\\xbb\\xce\\x15\\x1e\\x35\\xac\\xd8\\xb6\\xac\\xe4\\x0a\\x19\\x82\\x29\\x14\\xa4\\xbd\\x8c\\x4a\\xf6\\x32\\xf1\\x36\\x41\\x8a\\xc4\\x9b\\x18\\x4d\\x55\\x19\\x3e\\xbc\\xc3\\x2d\\x0d\\x79\\x87\\x09\\xb1\\xa8\\xfe\\x29\\x4f\\xba\\x8a\\x1f\\xe7\\x2d\\x97\\x6b\\x44\\x00\\xd4\\xa3\\x93\\x24\\x23\\x11\\xb0\\xf8\\xcc\\x99\\x4e\\x89\\x47\\x5b\\x00\\x38\\xae\\x5d\\x89\\x14\\x93\\x8e\\x8f\\x6e\\x87\\xc6\\xf5\\x0b\\x9d\\x65\\x6c\\x45\\xd7\\xb1\\x42\\x31\\xef\\xed\\x97\\xf3\\xc9\\x06\\x68\\x91\\x36\\x70\\xbf\\x5b\\xe2\\xef\\xd5\\xc2\\x70\\xc7\\xcb\\xaf\\x01\\xe8\\x57\\x2e\\x98\\x00\\x97\\x8d\\xfe\\x2e\\x10\\xa2\\xfc\\x04\\x40\\xb8\\x55\\x62\\x9b\\xf9\\xcd\\x40\\x9e\\xa9\\x41\\xcb\\x69\\x22\\x6c\\xac\\x77\\x1b\\x15\\xea\\x77\\xc0\\x32\\x68\\x48\\x80\\x6f\\xf8\\xd2\\xe2\\x01\\xe6\\xe2\\x6c\\xd5\\xf4\\x54\\x30\\xda\\xdc\\xff\\x8f\\x59\\xc3\\x21\\xc1\\xc9\\xc6\\xa2\\x9b\\x94\\x88\\x29\\x35\\x44\\x7d\\x3e\\x6c\\x2e\\x88\\x04\\xb1\\x16\\x15\\x76\\xbd\\xf0\\x32\\x0f\\xe5\\x3c\\x30\\x7d\\x9c\\xde\\x42\\x60\\x77\\xa7\\x67\\x7c\\xde\\x3c\\x1b\\xc8\\x3e\\x18\\xe6\\x0a\\x0c\\x4e\\xe6\\xdc\\xcd\\x87\\x7c\\x21\\x3a\\x8e\\x4c\\xca\\x64\\x0e\\xe0\\x49\\x29\\x80\\x45\\x70\\xae\\x1f\\x96\\x15\\x7c\\x04\\x35\\x7a\"},\n{{0xb8,0x09,0x36,0x1f,0x55,0xcf,0xe8,0x13,0x7f,0xbd,0xa8,0x80,0xfc,0x62,0xcb,0xe4,0x4c,0x21,0x6e,0x14,0x18,0x93,0x34,0x63,0x02,0xb3,0x36,0x04,0x5d,0xe2,0x18,0x78,},{0xfd,0x23,0xe4,0x2f,0xf0,0x66,0x44,0xea,0xd3,0x47,0xab,0xcc,0x1b,0x3e,0x03,0xb0,0xe8,0x85,0x93,0xb6,0x12,0x54,0x98,0x1d,0xd8,0xae,0x59,0x45,0x4e,0x61,0xb3,0xe0,},{0xb5,0xb5,0x95,0x0d,0x37,0x72,0xd2,0xee,0xf8,0x8e,0x1b,0x0f,0x5d,0xf5,0xff,0xae,0x2f,0x21,0x03,0x88,0x5e,0x71,0x44,0x6d,0x34,0x6f,0xbb,0x5d,0xae,0xf9,0x49,0x67,0xa6,0xb7,0xb6,0xe4,0xbe,0x88,0x51,0x10,0x06,0x58,0x76,0xc6,0x65,0xb7,0x81,0x2d,0xe4,0x6a,0xd3,0x1e,0xc3,0xbf,0xcb,0xea,0xee,0x13,0xed,0x0c,0x1e,0x0b,0x30,0x0e,},\"\\x17\\xac\\xe1\\x97\\xd0\\x83\\xaa\\xf1\\x72\\x6f\\x53\\xe5\\xef\\x81\\xb5\\xa8\\xc0\\x92\\x22\\xf2\\x60\\xee\\x5f\\x1f\\x54\\x04\\xab\\x78\\xd9\\x00\\xd4\\x89\\x68\\x84\\x49\\xb8\\x43\\xba\\xd3\\xc4\\x98\\xaa\\xc6\\xd8\\x0b\\x46\\x39\\xb7\\x6e\\x6e\\x81\\xc5\\x52\\x76\\xa6\\xf9\\xc7\\xce\\xcd\\x70\\xb7\\x1a\\xaa\\xf2\\x01\\x8e\\xf7\\x6c\\x0e\\x30\\x15\\x4a\\xae\\x86\\xa5\\xc8\\x6d\\x4e\\x8d\\x0e\\x4e\\xc6\\x8c\\xc4\\x27\\x06\\x0b\\xd5\\x65\\x14\\xf7\\x23\\x80\\x86\\xbb\\xef\\x5b\\xfc\\xa1\\xf5\\x67\\x1b\\x18\\x04\\x18\\x38\\xfd\\x01\\x35\\x72\\x44\\x3d\\xba\\x48\\xfb\\xdd\\x95\\xca\\x74\\x0b\\x0d\\xaa\\x43\\x27\\x16\\x4a\\x1e\\x34\\x67\\x72\\x49\\x70\\x8f\\x77\\xbd\\x79\\x3e\\x7c\\xaa\\x66\\x38\\xb5\\xdc\\x9f\\xbe\\x6f\\x0d\\xfd\\x41\\x20\\x20\\x90\\x97\\x20\\x9c\\x93\\xce\\xdf\\xaf\\x21\\xb6\\xbf\\x59\\xca\\x6e\\x99\\xe6\\x20\\x96\\x39\\x44\\x4f\\x0e\\x82\\x7b\\xbc\\xc0\\xa6\\x1c\\x3a\\x23\\x7c\\xa2\\x2a\\x28\\x32\\x13\\x22\\x3a\\xb6\\x58\\xe7\\x12\\xc7\\x55\\x62\\x38\\xd3\\xa5\\xfe\\x31\\x72\\x2d\\x65\\xf5\\x70\\x6e\\xf6\\xd6\\x4d\\x73\\x23\\x2d\\x30\\x43\\x22\\x0f\\x14\\xe5\\xcf\\xd3\\xc2\\xc8\\x3a\\x83\\xd6\\x8e\\x20\\x27\\x4b\\x6f\\x96\\xb2\\x9d\\xe0\\x40\\xce\\xc8\\x47\\x50\\x30\\xb6\\xa8\\xa8\\x7d\\x29\\x80\\x8d\\xd3\\x81\\x79\\x5c\\x3d\\x22\\xac\\xf5\\xdc\\x19\\x3b\\x72\\x0d\\x95\\xa7\\x52\\xd9\\xf1\\x23\\xc2\\x09\\xff\\xba\\x00\\x4e\\x48\\xdd\\x06\\xdd\\x8c\\x9e\\x17\\x2b\\xc9\\xe0\\x87\\xd8\\x0b\\xc5\\x21\\x6c\\x0b\\x0b\\x6e\\x77\\x03\\x12\\x41\"},\n{{0xee,0xef,0x80,0x74,0xc2,0xeb,0x9a,0x1c,0xee,0x2f,0x2d,0x3b,0xb0,0x53,0x25,0x54,0x6a,0x9f,0xb7,0xcb,0xe4,0x4b,0x59,0x94,0x61,0xfc,0x58,0x85,0xf5,0xfd,0x9c,0xac,},{0x9b,0x89,0x29,0x41,0xa0,0x57,0x3b,0x7a,0x16,0x73,0xef,0x48,0x0f,0x08,0x11,0x68,0xd9,0xb7,0x49,0x6a,0x81,0xf9,0x17,0x7d,0xc4,0x27,0xca,0x1f,0x84,0xcb,0xbf,0x7d,},{0x6f,0x71,0x01,0x98,0x4f,0xd6,0x89,0x2e,0x21,0x44,0xb7,0xd4,0x56,0x19,0x83,0x0c,0xae,0xb6,0x71,0x3b,0xfa,0xb4,0xee,0xbb,0xe2,0x17,0xc5,0xbe,0xcd,0x24,0x9b,0xd9,0xd7,0x52,0xeb,0x76,0xe9,0xfa,0x99,0x5e,0x7c,0x71,0xff,0x7d,0xf8,0x6b,0xb2,0x60,0xcd,0xda,0x17,0x3f,0xf5,0xde,0xec,0x6a,0xf2,0x04,0xb7,0xdd,0xe0,0x11,0xde,0x09,},\"\\x9a\\xe3\\x9f\\xea\\xde\\x90\\x5a\\xff\\xcb\\xed\\xd2\\xe7\\x2a\\x6f\\x24\\x29\\xb3\\xd1\\x10\\x8e\\x5b\\xc1\\xa9\\xdb\\xaf\\x49\\x0a\\x62\\x99\\xbc\\xcd\\x94\\xac\\xc4\\x13\\xad\\xac\\xc9\\x18\\xb1\\x4a\\xfa\\x85\\xc7\\x8b\\xc1\\x68\\xcc\\x00\\x74\\x0c\\x3d\\xa0\\xe0\\x81\\x83\\x91\\x5f\\x79\\xb7\\xfe\\x38\\x68\\xce\\x2a\\x7e\\x88\\x6b\\x32\\xad\\x45\\x00\\x98\\x05\\xbf\\xb8\\x1b\\x8c\\x07\\xb3\\xb1\\x02\\x24\\x20\\xc0\\xf0\\x09\\xb8\\x89\\xd7\\xfc\\x22\\xfd\\x19\\x97\\xae\\x34\\x19\\x84\\x38\\xca\\x94\\x77\\x85\\x75\\x12\\x2f\\xca\\xaf\\x96\\xe6\\x50\\x2c\\x33\\xa7\\x5a\\x12\\x9a\\x2d\\x0d\\xbb\\x07\\x3d\\x93\\x82\\x0d\\x9c\\x96\\x68\\x3d\\xb3\\x18\\x99\\x0b\\xe3\\xfe\\xf4\\xca\\xfc\\x89\\x0a\\xfb\\xd9\\xb1\\x50\\x4c\\x74\\x39\\xa0\\x8a\\x06\\x5e\\x78\\x14\\xee\\x4f\\x9b\\x6f\\x57\\xee\\x16\\xba\\xed\\x3f\\x0e\\x3a\\xa3\\x5d\\xd2\\x3d\\x35\\x28\\xa4\\x58\\x91\\x9a\\xd7\\x70\\x48\\xb4\\xe2\\xe6\\x17\\x23\\x46\\xbe\\x24\\x9a\\x50\\xaf\\x02\\xbc\\x6c\\x85\\x33\\x04\\xc2\\x08\\xae\\x0b\\xa0\\x27\\x71\\x26\\x2a\\x0d\\x8a\\x46\\x5f\\x71\\xfa\\x06\\x35\\xe5\\x3e\\xb2\\xef\\x0a\\x84\\x7d\\x56\\xa0\\xbc\\xd7\\xdd\\x3f\\xe0\\x77\\xc9\\x2b\\xcd\\xca\\x30\\x69\\xa4\\xa6\\x82\\xa2\\x85\\x99\\x28\\x31\\x5c\\xe3\\xeb\\x44\\x5c\\x60\\x72\\xa7\\x14\\x92\\xee\\x82\\xe1\\x72\\xa2\\x0b\\xe0\\xb6\\x48\\xb7\\x56\\xe6\\xc7\\x75\\x37\\x6f\\x0c\\x7c\\x3d\\xf8\\xe6\\x42\\x88\\x08\\x9c\\x2f\\x81\\xce\\x95\\x93\\xc6\\xe0\\x8b\\xb1\\xcc\\x1b\\x27\\xfc\\xbd\\x39\\x2f\\xc7\\x95\\x2c\\x55\"},\n{{0x61,0xfa,0xeb,0x15,0xf8,0x57,0xf6,0x55,0x78,0x62,0xc8,0xb8,0xc7,0xef,0x41,0xf8,0x05,0x45,0x52,0x09,0x96,0xfc,0xc1,0x12,0x7b,0x8c,0x24,0x91,0x82,0x22,0x01,0xae,},{0x60,0xa2,0x90,0xc0,0xfc,0x42,0x5a,0x08,0x74,0x67,0x3d,0x94,0xf9,0xbb,0x14,0x00,0xf9,0xda,0xcd,0xe9,0x95,0x4f,0x9f,0x5b,0x05,0xdd,0x48,0xab,0x74,0x7a,0x39,0x50,},{0x31,0xf9,0x0f,0x50,0xb2,0xdc,0x70,0x5f,0x1d,0x92,0xf1,0x2c,0xa9,0x97,0x5d,0x76,0xf1,0xb2,0x82,0x6a,0xda,0x3c,0xc1,0x85,0xb0,0xed,0x6c,0x83,0x86,0x07,0x77,0xbd,0x8c,0x48,0x9b,0x59,0x85,0x5a,0x91,0xf6,0x48,0x39,0xd4,0x9b,0xa4,0x67,0x98,0x5a,0xbb,0x37,0x6c,0x47,0xa4,0x90,0x8b,0x27,0x1b,0x8f,0x77,0xc5,0x8d,0x01,0xfd,0x04,},\"\\x25\\x3b\\x56\\x6e\\xcc\\xb5\\x63\\xbd\\x6e\\x48\\x0c\\x69\\x73\\x9b\\x8e\\x37\\x25\\x19\\xa3\\x43\\x72\\x54\\xe0\\xe5\\x02\\x9c\\xac\\x86\\xc7\\x16\\x38\\xf2\\xdf\\x2a\\x6c\\xf9\\xe5\\x6d\\xb2\\x56\\x99\\x34\\xde\\xba\\x90\\xdb\\x75\\x54\\x7e\\x36\\x71\\x74\\x7d\\xf6\\x4d\\x6f\\x2a\\xaf\\x3c\\x11\\x0f\\xa6\\x7a\\x70\\x94\\xcc\\xbe\\x4c\\xc5\\x35\\x5f\\x0d\\x43\\x23\\x51\\x36\\xee\\x26\\xdb\\xe3\\x7f\\x42\\x25\\xd3\\xbb\\xfe\\x24\\x55\\x95\\x28\\x05\\x85\\xfb\\x54\\x8f\\x89\\x4e\\x86\\xc5\\x16\\x10\\x25\\x80\\x29\\x1f\\xa7\\xa0\\x28\\x59\\x55\\x7f\\xb9\\x8e\\xb5\\x88\\x87\\x08\\x28\\xb0\\x99\\x0a\\xe9\\xd7\\x4f\\x38\\x31\\xda\\x58\\x94\\x6b\\xc7\\xa5\\xce\\x1b\\xa4\\x98\\xb4\\xe8\\xbe\\x89\\x89\\xa3\\xb5\\x0d\\x7e\\x87\\x89\\xf5\\x6b\\x8b\\x4f\\xec\\xbc\\x2a\\x33\\xbf\\xa3\\xef\\x59\\x1a\\x0f\\xbc\\xd9\\x32\\xfa\\x93\\xe1\\x9f\\x3a\\x81\\x2a\\xe5\\xe4\\xe3\\xb4\\xb2\\x42\\xbe\\x77\\x05\\xa5\\x87\\x4a\\xf7\\x3b\\xe3\\x10\\xb0\\x05\\x82\\x66\\xa3\\x78\\xf2\\x3c\\x13\\x48\\x52\\x47\\x15\\xb0\\xcc\\xc1\\x8d\\x66\\x34\\xb2\\x36\\x36\\xc3\\x16\\xba\\x6a\\x1d\\xd2\\xfd\\x50\\x92\\xc0\\x67\\x16\\xa7\\x17\\xb5\\x4d\\x0e\\xb9\\xfc\\x7f\\x63\\x6f\\x85\\xbb\\xf2\\x25\\xa2\\xcf\\x03\\x5b\\x4b\\x7c\\xfd\\xdd\\x75\\x35\\x16\\x82\\xc0\\x57\\x6c\\x6b\\x3b\\xa5\\xa1\\xc0\\xb2\\x5e\\xc5\\x94\\xe7\\x70\\x9d\\xd0\\x9a\\x00\\x79\\x77\\x2f\\xf3\\xac\\xc6\\x7f\\xb6\\xc1\\xb3\\x7b\\xb3\\x74\\x2b\\x72\\x6e\\x77\\xe8\\x05\\x61\\xd9\\xab\\x73\\x16\\x0b\\x73\\x36\\x25\\x81\\xda\\x5b\\x9c\\x7f\"},\n{{0xe6,0xb9,0xcd,0x4d,0xa0,0x7c,0xb3,0x4f,0x30,0x39,0x1c,0xf6,0x8f,0x0d,0x87,0xc7,0xcf,0xcf,0x68,0xf8,0x10,0xff,0xa4,0x0f,0x97,0x39,0xc9,0x5d,0xeb,0x03,0x7f,0x71,},{0x56,0x9e,0xde,0x0f,0x04,0x63,0x0b,0x43,0xa0,0x4c,0x5a,0x66,0xb6,0xa5,0x63,0x6b,0x76,0x6c,0x75,0x96,0x59,0x84,0xa7,0x47,0x7e,0x15,0x49,0x19,0x60,0xfd,0xd8,0x64,},{0x1e,0x37,0x5c,0x94,0xbd,0x80,0x9c,0xa0,0xcd,0xd0,0x2f,0x89,0xec,0xec,0x4e,0x43,0x77,0x32,0xdd,0x20,0xa0,0xa8,0x4b,0x25,0x4e,0xae,0x88,0x9d,0x80,0x70,0xe6,0x82,0xd1,0x13,0xb0,0xbe,0x22,0xe4,0x1e,0x6c,0xdc,0x3b,0xe8,0x77,0x68,0x0e,0x7e,0xeb,0x7f,0x09,0x95,0xe6,0x62,0x2d,0xc0,0xb4,0x34,0xfb,0x09,0x49,0xdd,0x99,0x4b,0x0c,},\"\\x69\\xde\\xf0\\x52\\x3a\\xfd\\xa6\\x96\\xf8\\x44\\x8f\\x9c\\x11\\x43\\xab\\xc2\\x65\\x33\\xe6\\x86\\x95\\xa0\\x90\\xdf\\x0d\\x9e\\x43\\xd0\\xc0\\xef\\xf4\\x35\\x83\\xe6\\xf7\\x09\\xd2\\x04\\x3c\\x81\\x5f\\xbb\\x3f\\x96\\xba\\x2b\\x0d\\xc3\\xbe\\x6f\\xec\\xad\\x5d\\xd3\\x81\\x48\\x78\\x8e\\x4a\\x03\\x85\\xa9\\xfe\\x7a\\x92\\x1f\\xcb\\x8c\\xce\\xe0\\xe4\\xd3\\xae\\xd4\\xbc\\x3d\\x21\\x6d\\x84\\xb4\\x14\\xf9\\x58\\x0b\\x02\\x82\\x0c\\x03\\xd9\\x2e\\x67\\x5e\\x68\\x5c\\x4b\\x58\\x51\\xf3\\x63\\xbb\\x4d\\xf9\\x7b\\x41\\x7c\\x3f\\xd9\\x00\\x22\\xee\\xaf\\xa2\\x0d\\xfb\\xe8\\x29\\x64\\xf2\\xff\\x07\\x3d\\x25\\x57\\x58\\xfb\\xe5\\x67\\xc7\\x6b\\x2c\\x35\\xe2\\xb0\\x9f\\x8a\\x8d\\x7a\\xfa\\x32\\xc6\\xf5\\xad\\x01\\xbc\\x3e\\xbf\\x6e\\x21\\x06\\x06\\xdb\\x03\\x8e\\xcb\\x68\\x20\\xce\\x1e\\xa4\\xdd\\x52\\x9f\\xc1\\xad\\xfb\\xc2\\xa1\\x38\\x56\\x5a\\xc6\\xd0\\xf4\\xa4\\x10\\x9b\\xdd\\x47\\xb8\\xaa\\x6e\\xf4\\xb8\\xbe\\xde\\x45\\x46\\x80\\xd1\\xdb\\xdb\\x75\\xfe\\x1e\\xb2\\xe5\\x48\\xd5\\xde\\x7c\\xb6\\xd7\\x92\\xfe\\xf3\\xaa\\x0d\\x84\\x80\\xa6\\x03\\x0b\\x30\\xf1\\x04\\xd7\\xe7\\x6b\\x58\\xe9\\xf4\\x76\\xeb\\xf2\\xcc\\x83\\x29\\x23\\xb5\\x0c\\x50\\xc1\\x11\\xc3\\x51\\x5f\\xc5\\x18\\x85\\x23\\x23\\x42\\x6c\\xa7\\x78\\xa5\\x96\\xd3\\x19\\x5d\\xa8\\x58\\x5d\\x8c\\x3a\\xa9\\x20\\x83\\x31\\x3a\\x6e\\x65\\x85\\xb7\\x0c\\x98\\xb1\\x85\\xb4\\x72\\x79\\x8a\\x61\\xcd\\xe7\\x7e\\x62\\xec\\x27\\x2f\\x14\\xb0\\xd9\\xeb\\x4f\\x22\\xf9\\xc7\\xc0\\x58\\x17\\xda\\x6f\\xde\\xfe\\x78\\x79\\xa5\\x84\"},\n{{0x4d,0x90,0x44,0xf1,0x7b,0x5a,0x09,0x77,0xdc,0x5a,0xa9,0x91,0x6a,0x92,0x43,0x00,0xa2,0x44,0xa1,0xef,0x7f,0x06,0x02,0x77,0xad,0x49,0x78,0x35,0x1e,0xa6,0x42,0x91,},{0xab,0x9c,0x06,0x92,0xa6,0x06,0xb2,0x56,0x7c,0x19,0xc3,0x0f,0x9f,0xaa,0x3b,0x4c,0xfe,0x72,0xfb,0x23,0x70,0x77,0x76,0x7b,0x76,0xd3,0xb2,0xae,0x14,0x90,0xa6,0xd4,},{0x6f,0xa4,0x8a,0xea,0x4d,0x5b,0x9a,0xf6,0x5a,0xf9,0x64,0xcd,0xb7,0x09,0x44,0x3a,0x11,0xfa,0x84,0xf7,0xd4,0x4a,0xcd,0xda,0xb1,0x6e,0x04,0xa6,0xfc,0xef,0xb2,0x7a,0xe3,0x3c,0x05,0xb3,0x6d,0xa1,0x3c,0x23,0xde,0x51,0x7d,0x6e,0x6a,0xc5,0x74,0xa0,0x3e,0xa6,0x30,0xba,0x4f,0xbb,0x95,0x81,0x31,0x12,0x9a,0xa7,0xf1,0x35,0x4c,0x01,},\"\\x7c\\x8c\\x71\\x89\\xaf\\x67\\x32\\x7a\\xf1\\xc6\\xdd\\x2c\\x30\\xe9\\x75\\xf1\\x90\\xe3\\xb3\\x8d\\x00\\x8b\\x45\\x85\\x16\\x7e\\x0d\\x45\\x07\\x40\\xd4\\x67\\x34\\x58\\x7f\\x6d\\x20\\x87\\x84\\x24\\x5c\\xc5\\xcb\\x06\\x2a\\x2a\\x27\\x7f\\x17\\xeb\\xb2\\x74\\x6f\\x9b\\xdf\\x4a\\x82\\x37\\xca\\x47\\x9a\\xb0\\xa4\\x30\\x17\\x7e\\x19\\xed\\x7d\\xd3\\x62\\x25\\x76\\xb1\\x4c\\xdc\\x08\\x28\\x22\\x14\\xfe\\x5e\\xe4\\xd7\\x6b\\x43\\xc1\\x6a\\xc9\\x08\\x64\\xc5\\x1b\\xe8\\xae\\xd4\\x5d\\x7b\\x98\\x0d\\xf7\\x91\\x7f\\x29\\x0f\\xdf\\x79\\x58\\x46\\x46\\x5f\\x27\\xfc\\xb7\\xe5\\x73\\x06\\x37\\x94\\x4f\\x05\\x77\\xc9\\x2f\\x32\\x37\\x5e\\x99\\x5b\\xc0\\xcd\\xa9\\xd7\\x19\\x6f\\x2c\\x0c\\x1a\\xc8\\xb8\\x0d\\x12\\xa0\\x43\\x99\\x63\\xeb\\xd2\\x25\\x4c\\x34\\x77\\x03\\x57\\x58\\x16\\xe7\\x96\\x4c\\x13\\xd4\\x4d\\x62\\x92\\x80\\xc3\\x12\\xea\\x26\\x53\\x44\\xde\\x38\\xf3\\xb1\\x8d\\x91\\x50\\xf8\\xf9\\x24\\xaf\\xb4\\x4b\\x6b\\xfb\\x9e\\xda\\x51\\x3d\\x59\\xe6\\x5e\\x2e\\xf1\\x86\\x66\\xe6\\xc2\\xa2\\x1c\\x40\\x18\\x66\\x5b\\xef\\xe9\\x2c\\xae\\x58\\x1d\\x3c\\xb1\\x4e\\x23\\xe9\\x7d\\x83\\x00\\x02\\xcb\\x90\\x93\\x1a\\xe0\\x21\\x00\\x68\\xaf\\x39\\x4e\\xbe\\x35\\x1b\\xe5\\xb8\\x17\\xf3\\x67\\x4b\\xfb\\xf4\\x00\\x49\\x03\\x0e\\x4f\\xe5\\x05\\xd3\\x4a\\x1d\\x50\\x2a\\x2c\\x50\\xd8\\xe6\\x38\\xe9\\x26\\xc2\\x30\\x67\\x6b\\x7e\\xde\\xfb\\x6b\\xec\\x77\\xb1\\xc0\\xce\\x60\\x93\\x25\\x28\\x7b\\xa5\\xfd\\xd7\\xa9\\x97\\x69\\x87\\xbd\\x07\\xfc\\x6a\\x43\\x44\\x95\\x6e\\xbf\\x81\\x8f\\x08\\x58\\x6c\"},\n{{0x75,0xad,0x76,0xbb,0x4c,0x0c,0x22,0x9a,0x5a,0xdc,0x79,0xe4,0x44,0xb1,0x3f,0x88,0xa9,0x64,0x59,0x86,0x2c,0x8c,0xf0,0xba,0x49,0x8d,0x0c,0x99,0x6a,0xf9,0x4a,0x7a,},{0xf0,0x74,0xdd,0x2b,0x9c,0x1c,0x30,0x91,0x05,0xec,0x95,0x1b,0xb5,0x81,0x2a,0x91,0xdd,0xb5,0x40,0x23,0xb3,0x80,0x9a,0xb3,0x79,0xc5,0x6a,0xf0,0x46,0x1a,0xf6,0x17,},{0x0c,0x46,0x43,0xa8,0xbe,0x6d,0xc2,0x2f,0x4b,0xeb,0x6b,0xcc,0x70,0xc6,0x17,0x2e,0xc7,0x60,0x83,0x78,0x65,0x3c,0xb4,0xe9,0x9f,0x3a,0xe7,0x95,0xea,0xdf,0x4e,0x98,0x2a,0x29,0x76,0x09,0xca,0x79,0x38,0xf5,0xdf,0x63,0x2b,0x09,0x56,0x28,0xcb,0x75,0x06,0x2d,0x3d,0x51,0xfc,0x0f,0x33,0x23,0xbf,0xa7,0xb2,0x2e,0xc4,0xd4,0x72,0x05,},\"\\x0c\\xa8\\xc1\\xc7\\x41\\x28\\xd7\\x4e\\x9d\\x0a\\x7b\\xf8\\x96\\x42\\x91\\xd0\\x74\\x91\\x7f\\x2f\\x99\\x20\\xef\\xb9\\x11\\x52\\x05\\x67\\x64\\x2a\\x50\\xa6\\x15\\xab\\xcb\\xd0\\x0a\\xed\\x4a\\xbb\\xfe\\xf1\\xa9\\x83\\xcc\\xe3\\x33\\xe1\\xd0\\xdf\\x3e\\x64\\x04\\xfb\\x90\\x43\\xc6\\x80\\x39\\x14\\xcd\\x5f\\xff\\xbc\\x66\\xa0\\x79\\x0c\\x78\\x78\\xa2\\x40\\x89\\xa5\\x71\\xf8\\x95\\x66\\x2a\\x1d\\x18\\xbe\\x3f\\x01\\xff\\x97\\xfb\\x33\\x23\\x33\\x4b\\x6f\\x5b\\xaf\\x96\\x55\\x14\\x48\\xe4\\x09\\x0d\\x03\\x3c\\x46\\x42\\x94\\xd0\\x91\\x33\\xb1\\x51\\xd5\\xb5\\xc6\\x32\\x1b\\x50\\xe2\\x24\\x1d\\xe0\\xef\\x6f\\x88\\x28\\x89\\xcc\\xf4\\xad\\x35\\x40\\xd5\\xa1\\xe3\\xf7\\x54\\x8f\\xb1\\x3b\\xe7\\x1c\\x16\\x51\\x66\\x06\\xe7\\x9d\\x04\\x49\\xc2\\xa0\\x8e\\x5d\\xc2\\x31\\x48\\x84\\x3c\\x84\\xe9\\x7e\\xd2\\x40\\x69\\x16\\x1c\\x8e\\x75\\x20\\x8f\\x33\\xe9\\x5b\\x3e\\x10\\xd1\\xd4\\x9a\\x2f\\xae\\xf9\\xd9\\x86\\xab\\x62\\x80\\x9f\\x62\\xad\\x39\\xc7\\xcc\\x87\\x1f\\x37\\x5a\\x4f\\x5a\\x6f\\xaf\\x10\\x4d\\x7e\\x11\\xb8\\x90\\xcf\\xb0\\x58\\x99\\x02\\x68\\x52\\x16\\xec\\x07\\xcb\\x8e\\x8e\\x9e\\x7a\\x7c\\x43\\x63\\x5e\\x23\\x21\\x2b\\x69\\xca\\x3b\\x7e\\xd5\\x4f\\x0b\\x97\\x94\\x9e\\x3d\\x9a\\x66\\x62\\xf8\\xe4\\xb3\\xab\\x09\\xcd\\x49\\x52\\x94\\xc3\\x31\\xc0\\x47\\xd8\\x6e\\xe7\\x85\\xff\\x65\\x8b\\xcd\\x7f\\xcf\\x9c\\x48\\x06\\x05\\xce\\x05\\xe8\\x10\\x06\\x8d\\x60\\xfc\\x9b\\x26\\xb5\\xf0\\x63\\xeb\\x90\\x00\\xd2\\x65\\x7a\\x50\\x94\\x28\\x4a\\xc8\\x0f\\x13\\x75\\xd0\\xb6\\x6d\\x6f\\x5f\"},\n{{0xad,0xc6,0xe9,0xb2,0xe1,0x03,0xb6,0x2c,0x24,0xad,0x43,0x46,0x41,0x0e,0x83,0xa1,0xa0,0xbd,0x25,0x3e,0x4a,0xbf,0x77,0x91,0x18,0x50,0xc6,0xd9,0x66,0x6e,0x09,0xf9,},{0xfc,0xe3,0x16,0xe3,0x3c,0x91,0x08,0x21,0xbe,0xed,0xdd,0x63,0x4b,0xed,0xc5,0x8e,0xe5,0x79,0x99,0xa7,0x6e,0xce,0x38,0x46,0x05,0x28,0x3b,0x99,0xb5,0x43,0xb7,0x8b,},{0xcb,0x01,0x7d,0x6d,0x26,0x82,0xc9,0x85,0x43,0x66,0x25,0x9a,0xa3,0x5f,0x30,0xd4,0x91,0xcf,0xaa,0x93,0x09,0x98,0xc2,0x97,0xdb,0xdd,0xc6,0xad,0xed,0x5b,0x3d,0x40,0x1c,0xf7,0x6d,0x80,0xd8,0xa2,0x76,0x4d,0xe1,0x31,0x71,0x8b,0x6e,0x0c,0x48,0x1d,0x71,0x96,0xbc,0x72,0x57,0x97,0x16,0xb0,0xc0,0xf6,0xff,0x05,0x3e,0x68,0xc5,0x0c,},\"\\x8c\\xcc\\xd9\\x8e\\xbb\\xf2\\x43\\x9f\\xfd\\xfa\\xc4\\x16\\x87\\x63\\x8f\\xaa\\x44\\x4e\\x1c\\xa4\\xb6\\x3d\\x13\\xe8\\x98\\xea\\xa8\\x35\\x54\\x92\\xf2\\x88\\x13\\xab\\x81\\x3f\\xd0\\x15\\x10\\xe1\\x12\\xbe\\x10\\x6b\\x20\\x45\\xd3\\x0f\\x63\\x33\\x5d\\x24\\x89\\x04\\xd5\\x21\\xde\\x18\\x1a\\xba\\xc0\\x3e\\x3d\\x2c\\xb2\\xd1\\x6c\\x44\\xb3\\xb0\\x12\\xa0\\xc5\\x1f\\x99\\x01\\xae\\xf9\\x05\\x6c\\x72\\x4d\\x7a\\x2c\\x6b\\x2a\\xcb\\x0a\\x07\\x55\\x59\\x40\\xe4\\xc6\\xe2\\x11\\x54\\x89\\x06\\x11\\xad\\xeb\\x64\\x89\\xf4\\x61\\xd3\\xe5\\xec\\xd1\\xaf\\x5a\\x4d\\x2b\\x0a\\xda\\xf4\\x17\\x47\\x43\\x6e\\xb4\\x14\\x75\\x7a\\x8f\\xe4\\x77\\x56\\x74\\xe3\\xc6\\xe5\\xde\\x45\\x69\\xd6\\xfc\\x6c\\x78\\x8e\\x10\\x90\\x5e\\xba\\x32\\xc2\\x70\\xa3\\x93\\xe6\\xf7\\x21\\xa7\\x65\\x29\\x4e\\x2a\\xc9\\x9a\\x9b\\x6e\\x53\\x4d\\x3d\\xf0\\x8d\\x1d\\xb9\\x7d\\x60\\x2a\\xc3\\x19\\x5c\\xb0\\xb7\\x7f\\x5b\\xd4\\xac\\xaf\\x73\\x7f\\xad\\xd6\\x99\\x1f\\x06\\x88\\xab\\xc7\\x49\\x18\\x04\\x75\\x74\\xea\\xc2\\x82\\x89\\x73\\x9a\\x66\\x4e\\x0e\\x0e\\x20\\x57\\x4a\\x2c\\x25\\xfd\\xe4\\x9d\\x14\\x53\\x9d\\xb1\\xce\\xdd\\x4a\\x92\\x04\\xa7\\x0a\\xcf\\xf0\\xa6\\x2c\\x8f\\x25\\xcd\\x76\\x8f\\xfa\\xb1\\x5c\\x4d\\xb3\\x16\\x84\\x0a\\x4d\\x1b\\xc9\\x2e\\x21\\x26\\x70\\xbe\\x07\\xc5\\xbd\\xcf\\x53\\x75\\x90\\x60\\x7d\\xfb\\xbb\\xb4\\xd9\\xf9\\x8b\\x89\\xda\\x0b\\x4d\\xf7\\xd8\\x8f\\x3e\\xca\\x48\\x14\\xd1\\x6b\\xfa\\x20\\xc8\\xd2\\xfa\\x94\\xf9\\xf2\\x59\\xf2\\xee\\x2d\\x3a\\x83\\xc9\\xe4\\x17\\x1b\\x1a\\x26\\x2c\\x4b\\x99\"},\n{{0x37,0xfc,0x1b,0xed,0xa4,0x06,0x0b,0x6c,0x57,0x88,0x3d,0xdb,0xa0,0x77,0x6c,0x2b,0xcf,0x5a,0xc2,0x8a,0x65,0x13,0x26,0x02,0x1c,0xca,0x97,0x72,0x37,0x30,0xfb,0xb0,},{0x7b,0xd7,0xbf,0x1c,0x99,0xdc,0x82,0xe0,0x6f,0x08,0xbb,0x45,0x4d,0x8f,0xb2,0x88,0xa5,0x79,0x27,0xe0,0x7f,0xf1,0xb1,0x2a,0xf1,0x5e,0xe2,0xc1,0x2f,0xbb,0x6b,0x3d,},{0xa0,0x1d,0xd6,0x5f,0xad,0xa2,0x70,0x39,0xf1,0x68,0xb1,0x23,0x41,0x9d,0x8a,0xbf,0xbd,0xa4,0x8c,0x57,0x2e,0xce,0x24,0xfd,0xa0,0x6e,0x1a,0x5e,0xc3,0x1e,0x08,0x4f,0x4e,0xe1,0xcb,0xf9,0x96,0x1e,0x88,0xed,0x51,0xe1,0x89,0xfc,0xb7,0xf5,0xf2,0x35,0xde,0x1e,0x5b,0x28,0xd0,0x8f,0x2b,0xfc,0xa1,0x90,0xb0,0xf0,0x19,0xec,0xc2,0x07,},\"\\x3d\\xfc\\xac\\x02\\x65\\xa0\\x24\\xa8\\x3c\\xb9\\x32\\x67\\x44\\x89\\xa1\\x63\\xaa\\xc3\\x14\\xbf\\x3d\\x96\\x9f\\x27\\x59\\x6e\\x45\\x17\\x33\\xb9\\x9d\\xeb\\xa5\\xee\\xb7\\x79\\x21\\x0b\\xaf\\x95\\xbf\\x54\\x5a\\x1a\\xe6\\xb8\\xa9\\x15\\x86\\x06\\x93\\xee\\x89\\x0f\\x93\\x93\\x20\\xe0\\x6a\\x84\\x44\\x83\\xd1\\x8c\\x6a\\x1b\\xcd\\x03\\xc6\\x38\\xbb\\x7d\\x1f\\xe2\\xa8\\x2e\\xb4\\x48\\xa3\\x11\\xb1\\x30\\x2e\\xa6\\x42\\x8f\\x54\\xa3\\x9f\\x45\\xa4\\xd5\\x60\\xbe\\x15\\x57\\xa2\\xb2\\x54\\xc4\\x5c\\x13\\x7f\\x45\\xcc\\x68\\x35\\x68\\x36\\xe2\\x1b\\xed\\x0b\\x7f\\x73\\xa5\\x18\\xce\\x09\\xdb\\x0b\\xe3\\x93\\x92\\x7c\\x33\\x9b\\xf2\\xa4\\xb5\\x98\\x75\\x39\\x40\\x4c\\xe6\\x50\\x28\\x4d\\xe1\\x2e\\x3b\\x55\\x3b\\x26\\x2e\\xfe\\x23\\x84\\x83\\x32\\xcc\\xfd\\xc3\\x5e\\x79\\x1a\\x0a\\xb4\\x3f\\x13\\x9c\\x71\\xed\\x0f\\xcb\\x2d\\x17\\x3b\\xb3\\x77\\xee\\x46\\xb1\\xa9\\xdc\\xa9\\x27\\x7e\\x77\\xdf\\x85\\x5f\\x28\\x30\\x25\\x1e\\x31\\xe2\\x6a\\xcd\\x86\\x76\\x3c\\x8d\\x7e\\xac\\x22\\xc8\\x82\\xfc\\x17\\x4f\\x2b\\x5e\\x75\\xca\\x6a\\xd1\\xad\\xe0\\x3f\\x94\\x2b\\xb2\\xa1\\x3b\\xf5\\x41\\x90\\x61\\x59\\x15\\x8c\\x68\\x36\\x3c\\x74\\x80\\xc5\\xb2\\x7a\\x99\\x32\\x0f\\x82\\x83\\xa2\\x69\\x9d\\x43\\x69\\xc0\\x71\\xc5\\x0d\\xbd\\x90\\xb7\\x79\\x2e\\x47\\x72\\xef\\xbc\\x0b\\x19\\x5b\\xce\\x84\\xcc\\x4d\\xcf\\xff\\x70\\x72\\xa4\\x89\\x68\\xdb\\x69\\xf9\\xfe\\xdd\\xd0\\xf9\\xce\\xd6\\x59\\xeb\\x5d\\xb7\\x16\\x7f\\x35\\xf9\\x88\\xce\\xc1\\x14\\x88\\x7d\\xcb\\xfd\\xf2\\x7d\\x02\\xd3\\x00\\xb3\\xe1\\xab\\xec\"},\n{{0x8d,0x42,0xf4,0xdd,0xd2,0xbb,0xd2,0xb8,0x27,0xb0,0xa0,0xd3,0x1d,0x8f,0x75,0x8e,0xbd,0x13,0xa1,0xb9,0xb3,0x71,0x22,0x28,0x94,0x8c,0xa6,0x10,0xbb,0x88,0x58,0xe5,},{0xb7,0x35,0x48,0x98,0x79,0x4f,0x9d,0xb0,0xa8,0xaf,0x6e,0xea,0xfc,0xdb,0xdf,0x01,0x1d,0x3f,0xbe,0xf0,0x21,0x2a,0xd9,0x38,0xa4,0xa4,0xad,0x27,0xab,0x16,0xeb,0xbf,},{0x70,0x76,0x4b,0xe3,0x9c,0x6d,0xca,0x0f,0x06,0x7a,0xbe,0x1e,0xca,0x49,0x0f,0xda,0x95,0x1f,0xd4,0xe9,0x49,0x96,0x95,0x26,0x6e,0x27,0x0b,0x9b,0x05,0xea,0xe7,0x06,0xca,0x8d,0x1c,0xa6,0xa9,0x2d,0x7c,0x48,0x8e,0xc6,0xad,0x8b,0xa1,0x14,0x57,0xa4,0x2a,0x5e,0x31,0x70,0x2a,0x9c,0x2b,0xce,0x89,0x2d,0xc4,0x05,0x35,0xc0,0x9f,0x01,},\"\\xe3\\xa2\\xbe\\xbc\\x04\\x96\\xd8\\x97\\x4a\\x8f\\x40\\x61\\x88\\x03\\x69\\x31\\x4e\\xd9\\xe4\\x40\\xc1\\xb7\\x7e\\x26\\xfe\\x50\\x71\\xce\\x69\\x4f\\xfd\\x21\\x36\\xdb\\x0c\\x4d\\x5e\\x88\\x0e\\x60\\x00\\x08\\x3a\\x75\\xc9\\x0d\\x3c\\xf7\\x2b\\x9c\\xf5\\xa2\\xb1\\xa9\\x00\\x2c\\x27\\x01\\xa2\\xff\\x59\\xb0\\x69\\x9a\\x8f\\x42\\xd7\\x9d\\xd8\\xa5\\xfb\\x71\\xa8\\x12\\x54\\x53\\xd9\\x1f\\xb8\\x00\\x80\\xa3\\xf0\\xa1\\x65\\x84\\x28\\x2f\\x17\\xec\\x7d\\xfd\\xc2\\xe5\\xc6\\x9c\\x4d\\x9b\\xdf\\x48\\x4d\\x55\\x94\\x4d\\xae\\x27\\x3f\\x21\\x1c\\xfb\\x76\\xad\\x37\\xda\\x45\\x87\\x13\\x65\\x43\\x9a\\xf3\\x5e\\xea\\x1f\\xbe\\xcd\\x4c\\xa6\\x79\\xb5\\x9b\\x5e\\x01\\xba\\xcf\\x49\\xc7\\xf4\\xe5\\xef\\xaa\\x40\\x6b\\xa1\\xda\\xeb\\x08\\x54\\x82\\xaf\\x5d\\xed\\x89\\xdc\\x68\\x85\\xff\\xbe\\x3d\\x14\\xd2\\x93\\x1b\\x83\\x89\\x7e\\x28\\xad\\x06\\xe5\\x56\\x4e\\x27\\x89\\xba\\xea\\x81\\xbd\\x93\\x2a\\xa2\\x79\\xfe\\x8e\\x32\\x4b\\x9a\\x8e\\xf1\\x11\\xc2\\xab\\xe2\\xf1\\x37\\xd4\\xbb\\x50\\xd8\\xab\\x76\\xce\\xbc\\x0b\\xd9\\x82\\xa2\\x39\\x19\\x75\\x1a\\xd4\\xd4\\x9e\\x88\\xeb\\x14\\x17\\x3d\\x33\\x10\\x28\\x9a\\x87\\x23\\x17\\xe4\\xa4\\x51\\xe8\\x8d\\x54\\x32\\x08\\x91\\x87\\x0f\\x15\\xb2\\xd5\\x33\\x24\\x43\\x08\\x77\\xa9\\xfb\\x5b\\x49\\xbb\\x92\\x9f\\x21\\x1c\\x5b\\x89\\x76\\x4d\\xd9\\xc3\\xa5\\x95\\xa1\\x45\\x1e\\x9f\\x85\\xa2\\x38\\x54\\x00\\x02\\x56\\x6e\\x53\\xa9\\x9e\\xd1\\xe6\\xdd\\xc9\\xb4\\x85\\x3f\\x45\\x5e\\xdb\\x4c\\xf1\\x98\\x0d\\x56\\xbb\\xdc\\x13\\x13\\xa3\\x6e\\x76\\xea\\x9c\\xbb\\x04\\x8a\"},\n{{0xb6,0x2d,0xe5,0xa1,0xac,0xfe,0x4c,0xa2,0xd1,0xf0,0xc1,0x32,0xaf,0xcb,0xda,0xe6,0x6f,0xb2,0x9a,0x02,0xf2,0x97,0xfb,0xc2,0x40,0x7f,0xad,0xbb,0xf2,0x45,0x42,0x00,},{0xb6,0x3b,0x2d,0x0b,0xf3,0x55,0xf7,0xb6,0xd0,0xba,0xc0,0x74,0x03,0x41,0x1c,0x40,0xaf,0xbb,0xb2,0xf7,0x07,0x50,0x3b,0x3f,0xc2,0xce,0xe8,0xa1,0xc7,0xd0,0xa8,0x38,},{0x5c,0xdb,0x00,0xe9,0x8d,0xe7,0x3e,0xab,0x48,0x0b,0xe4,0x2f,0x8a,0x8a,0x61,0x63,0x80,0x9a,0x0d,0x37,0x10,0x1b,0x6a,0x5a,0x4e,0xed,0x6a,0x0c,0x92,0x03,0x0d,0x09,0xa5,0x56,0x2c,0x72,0x90,0x80,0xce,0x6f,0x65,0x94,0xc8,0xfa,0xfb,0x1f,0x59,0x47,0x72,0xdb,0x7a,0x90,0xa9,0xe7,0xda,0x15,0x89,0x6e,0x82,0xf7,0x05,0x69,0x39,0x0d,},\"\\xe6\\x59\\xe5\\x1d\\x7b\\x19\\x3c\\x4b\\x8e\\x2b\\x3e\\xd7\\x3a\\x9d\\x75\\x57\\xed\\x2b\\xab\\x61\\x53\\x88\\x3a\\xb7\\x23\\x59\\x2f\\x73\\x0a\\x91\\x45\\x67\\x14\\x2b\\x3f\\xa4\\x35\\xdb\\x32\\x19\\xf8\\x3a\\x54\\x2d\\xc7\\xa4\\xbd\\x80\\x5a\\xf6\\x66\\xea\\x86\\x5b\\x85\\x31\\x46\\xf8\\xe3\\xa9\\xfe\\x87\\x07\\x11\\xf9\\x0d\\x12\\xb0\\x69\\x34\\x92\\xaf\\x2a\\x1e\\xdf\\x99\\xa1\\x64\\x58\\xf7\\x81\\xf1\\x26\\x6e\\xc4\\x37\\xa5\\x29\\x6a\\x82\\x2c\\xa9\\xd6\\x9c\\xe8\\x44\\xb5\\xc5\\x90\\x97\\xa2\\xa5\\x6f\\x3e\\xb8\\xfd\\x27\\x3a\\x63\\x61\\x16\\xdb\\x77\\x43\\x00\\x92\\x2d\\x45\\xb7\\x44\\x65\\x7a\\x69\\x2f\\x5e\\x8b\\xfb\\xcb\\x06\\xd2\\x42\\x28\\x18\\xae\\xb5\\x1e\\x7c\\xda\\x68\\xac\\xfb\\xed\\xa1\\x6e\\x7c\\x79\\x58\\x0d\\xcc\\xcd\\xe2\\x4e\\x8e\\x3d\\x60\\x1b\\x16\\xe0\\x63\\xb4\\x3a\\x6d\\x0d\\x14\\x07\\x55\\x2f\\x75\\x04\\xf5\\xbe\\x19\\x88\\x2e\\x4f\\xfe\\x32\\x34\\x4f\\x5f\\x47\\x3e\\x73\\xa8\\xf6\\xed\\x37\\xb0\\xd8\\xd9\\xe5\\xe0\\xa0\\xdc\\x98\\x28\\x39\\x5b\\xcb\\xd8\\xf3\\xa4\\xe3\\x12\\x48\\x69\\x24\\x9d\\x05\\x8b\\xe0\\xe0\\x45\\xde\\x0b\\x1e\\x12\\xb1\\xc8\\x3b\\xa0\\xaa\\x22\\x7c\\x95\\xb8\\x2b\\xf7\\x42\\xc3\\xea\\xc0\\x15\\x2b\\x33\\xe6\\xd1\\x9b\\xe8\\xb3\\x3a\\x35\\xbf\\x70\\x5d\\xaa\\xb1\\x06\\x22\\xa9\\x0a\\xed\\x02\\x2e\\xa6\\xe4\\x39\\xed\\x50\\xa9\\x30\\x84\\x37\\x92\\x99\\x24\\xba\\x3a\\xb1\\x11\\xad\\x0c\\xaa\\x6f\\xeb\\x0a\\x6e\\xb1\\x65\\x82\\x4e\\xbd\\xb0\\x86\\x65\\x71\\xef\\xc0\\x7e\\x52\\x22\\xed\\x86\\x86\\xb1\\x4d\\x92\\x70\\xbf\\x76\\xb9\\x45\\xd5\\x20\\x14\"},\n{{0x97,0x32,0x05,0x9d,0x7b,0xf0,0x20,0x0f,0x5f,0x30,0x41,0x24,0x30,0x33,0x6b,0xe4,0xef,0x1e,0x3c,0xae,0x62,0x93,0x8a,0xd0,0x87,0x29,0xce,0x3b,0xa7,0x14,0xcf,0xd4,},{0x0d,0xe8,0x42,0x5f,0x5e,0x30,0xb2,0xb8,0xae,0xbb,0x80,0x72,0x00,0x9a,0x30,0xcf,0x04,0x11,0xc3,0xc8,0x23,0x8f,0x4e,0x42,0x08,0x76,0x0c,0x56,0xc3,0x3e,0x43,0x4f,},{0xfb,0xa1,0x74,0x9b,0x64,0x1d,0xd4,0xdf,0x34,0x66,0x4b,0xc4,0x3c,0x00,0x46,0x8c,0x7d,0x75,0xe8,0x4a,0xfa,0xd7,0x2d,0xe4,0x73,0xfd,0x1e,0x9c,0x87,0xda,0x15,0xea,0x60,0x4f,0xc2,0x54,0x9a,0x1a,0x86,0x7f,0xa8,0x08,0x50,0xe9,0xc2,0xa5,0x9c,0xd9,0x90,0x53,0x88,0x67,0x60,0xa8,0xd9,0x76,0x4b,0x84,0xdd,0x67,0x26,0x76,0x72,0x0d,},\"\\x1a\\x13\\xe7\\xab\\x60\\x3b\\x48\\xeb\\x89\\x6f\\xe1\\x71\\x73\\xfb\\x31\\x95\\x0b\\x0d\\xcd\\x5a\\x35\\xff\\xdb\\xe1\\x37\\x1c\\x7a\\x5b\\xfb\\xa5\\x93\\x31\\x75\\x89\\xd9\\x65\\x2d\\x88\\x79\\x77\\x29\\x18\\x0b\\x8d\\x0e\\x51\\x5a\\xbf\\xe6\\x54\\x8f\\x16\\x04\\x21\\xe5\\x37\\xd5\\xc9\\x4a\\xef\\x2b\\x34\\xc7\\xeb\\xb0\\x97\\x42\\x00\\x03\\xbc\\x0f\\x36\\x1b\\x42\\x3e\\x7e\\x14\\x63\\x0a\\x80\\x3c\\x11\\x82\\x02\\x54\\x00\\x49\\xf6\\x8c\\x9c\\xf4\\x6f\\xae\\x03\\x68\\xd1\\x62\\xe4\\x00\\xd7\\x7b\\xb4\\x52\\x3c\\xf6\\xc7\\x53\\xb9\\x75\\xc2\\x45\\xbc\\x99\\xed\\x2f\\x41\\x3a\\x9d\\x06\\xc2\\xda\\x6c\\xe0\\xcc\\x09\\x87\\xb6\\x40\\x6b\\x80\\x9e\\x8e\\xb3\\x19\\x03\\x3d\\x2d\\xe9\\x13\\x1d\\xee\\x3b\\x1b\\x7b\\x5c\\x95\\xd6\\x53\\xce\\xd8\\xfc\\xcf\\x99\\x8d\\xa1\\x76\\x85\\x11\\xec\\xa4\\xd3\\xc5\\xf7\\x35\\xad\\xab\\x96\\x50\\x3b\\x35\\x51\\x80\\x3e\\x49\\x22\\x63\\x50\\x95\\xef\\x81\\x1b\\xe4\\xc0\\x8a\\x6c\\xba\\xc9\\x17\\xcb\\xe6\\xcd\\x91\\xa4\\xae\\x5a\\x33\\x0c\\xce\\xc0\\xe8\\xe8\\x15\\x37\\x12\\x17\\xa3\\xde\\x62\\xf2\\xd2\\xd6\\x14\\x66\\x21\\x98\\x33\\xf3\\x34\\x47\\x13\\x2f\\x4d\\x43\\x35\\x0c\\x58\\xcb\\xaf\\x42\\x24\\x75\\xed\\xb1\\x28\\xc5\\x6d\\x80\\xa4\\x95\\x72\\x6b\\x1f\\xdb\\xc5\\x65\\x51\\xeb\\x72\\xd0\\xf4\\xfe\\xc2\\x6b\\xa8\\xbf\\xf5\\xee\\xd6\\x77\\x4b\\x85\\x03\\x9a\\x52\\x92\\x83\\x4b\\x5d\\x1c\\xc1\\xb0\\x9b\\xa0\\xa3\\x95\\x4d\\x29\\x32\\x36\\x73\\xf5\\xe7\\x12\\x76\\xa1\\x2a\\xc4\\xc5\\x79\\x35\\x5b\\xf1\\xec\\xca\\x48\\xe6\\xa7\\x16\\xb9\\xfc\\xec\\xdc\\x56\\x5c\\x51\\xb9\"},\n{{0x9c,0x7f,0x6f,0x37,0x9e,0x38,0x57,0x00,0x7e,0x2a,0xc6,0x32,0x4c,0xbb,0xce,0xd5,0x7a,0xc9,0xee,0xe4,0x47,0x78,0x13,0xf8,0x3a,0x81,0xfc,0x8c,0xef,0xa9,0x64,0xd5,},{0xa5,0x4b,0xa3,0x96,0xd6,0x87,0x63,0x4d,0x3e,0xcc,0xf4,0x1c,0x57,0x82,0x49,0x4f,0x5f,0x10,0xa5,0x21,0xa1,0xe5,0xd3,0x88,0x52,0x3d,0x80,0xee,0xba,0x5b,0x0b,0x2b,},{0x65,0x68,0x5f,0x9c,0xa5,0x98,0x2e,0x15,0xa2,0x2b,0xa3,0xc8,0x3a,0x03,0x48,0x34,0x84,0x82,0xdf,0xae,0x57,0xce,0xa1,0x78,0xf0,0x78,0x0c,0x05,0x7b,0xae,0xbe,0x4a,0xf6,0x32,0xf9,0x84,0x54,0x0a,0x26,0x01,0x9a,0x7f,0xb3,0x42,0x53,0xc9,0xec,0xe7,0xff,0x30,0x8a,0xda,0x23,0x3c,0xe0,0x68,0x63,0x47,0xab,0x5b,0x21,0xce,0x57,0x0b,},\"\\x3f\\x2d\\x30\\x72\\xfe\\x73\\x83\\xe5\\x41\\x55\\x1e\\xa9\\xab\\xdb\\xae\\xae\\x6a\\x46\\x4a\\xe6\\xb9\\xf0\\xba\\x78\\x6a\\x44\\x1b\\x2d\\x08\\xda\\x5b\\xca\\xda\\x3c\\x54\\x24\\xdc\\x69\\x31\\xd6\\xb3\\x95\\x23\\xe2\\xde\\x0a\\x0c\\x2e\\x4e\\x6b\\x5b\\x8c\\xda\\x92\\x5e\\x5e\\xac\\x93\\x84\\x16\\xa2\\xc5\\x1b\\xf1\\x3d\\x49\\x53\\x1d\\x7e\\xc7\\x11\\x4b\\x1c\\x82\\xfe\\xaf\\x90\\xf3\\xf8\\x75\\x91\\xe3\\x97\\xd0\\x27\\x02\\xf8\\xec\\x1b\\x30\\xd9\\x9f\\x5b\\xe7\\xd2\\x20\\x3e\\x4f\\xe4\\xdb\\x2e\\xa4\\x7e\\x7b\\x45\\x89\\xd8\\xac\\x50\\x62\\x48\\xd7\\x34\\x74\\x66\\xed\\xbc\\x96\\xea\\x32\\xbf\\x3a\\x6e\\xa7\\x50\\x2d\\xd6\\x0c\\x9e\\x84\\x90\\x27\\x15\\xab\\x2c\\x6c\\xa6\\x8f\\x5b\\x00\\xe1\\xd9\\x09\\xd8\\x3a\\xa6\\xab\\x66\\x2d\\x8a\\xea\\x87\\x0e\\xcd\\x86\\x1f\\xec\\x69\\xf2\\xee\\xc0\\xae\\x67\\x7d\\x29\\x95\\xb0\\xed\\x68\\x8f\\xaa\\x8e\\xf7\\x82\\x44\\xe0\\xd1\\x19\\x56\\x97\\xb0\\x71\\x22\\xce\\xaa\\x11\\xf5\\xa6\\xea\\x58\\xfb\\xdf\\xa2\\xe2\\xec\\x2d\\xf9\\xd1\\x86\\x93\\xae\\x96\\xd4\\x71\\x27\\x55\\x6e\\x91\\xf0\\x86\\x49\\x82\\xc1\\x34\\x19\\xb0\\x4a\\x63\\xf2\\x08\\xe7\\x30\\xd2\\x69\\x51\\x88\\x2a\\xef\\xe0\\x01\\xbc\\xa3\\x40\\x8b\\xd9\\x86\\x27\\x48\\xc6\\xcc\\x87\\x6c\\x28\\xca\\xc3\\xbb\\x2e\\xb3\\x39\\x58\\x18\\xc2\\x09\\x1e\\x0f\\xbd\\x7a\\x0b\\x44\\x68\\xc6\\xb0\\xd0\\x0c\\xd0\\x08\\xc1\\x1c\\x3c\\x3a\\xd0\\x10\\x80\\xa1\\xf5\\xa4\\x0a\\xe2\\xe4\\xb0\\xc3\\xa0\\x71\\xef\\xc8\\xe1\\xd1\\xba\\x6a\\xce\\x6d\\x4d\\xf0\\xff\\x19\\x82\\x9b\\x0c\\x68\\x0b\\x3a\\xeb\\x75\\x91\\x77\\xed\\x34\"},\n{{0xa4,0x78,0xf3,0x5a,0xbb,0x73,0x72,0x7b,0x6b,0xe6,0xee,0x5e,0x56,0xee,0xc3,0x23,0xc9,0x51,0x78,0x82,0xfd,0x69,0x19,0x36,0x0e,0xbb,0xbf,0x5d,0x5c,0xb8,0xb8,0x3a,},{0x7a,0x6e,0x26,0x6a,0x54,0xd1,0x35,0xdd,0xa0,0x00,0x9c,0xcd,0xa8,0xa9,0x4a,0x47,0x12,0xae,0x5c,0xb1,0x47,0x61,0xe8,0x43,0x6e,0x97,0xc4,0xb7,0x81,0x4d,0x8e,0x8c,},{0x9d,0x16,0xfd,0x40,0xb9,0xf8,0xdd,0x9b,0x4a,0x1a,0x8c,0x6d,0x70,0x3b,0x9f,0xcc,0xbb,0x94,0x0b,0x1e,0x0a,0xe7,0x7a,0x59,0x70,0x37,0x4a,0xf0,0xcf,0x72,0x6f,0x44,0x79,0xfd,0x30,0xd7,0xdf,0xf5,0xcf,0x53,0x49,0x4d,0x9a,0x29,0x6a,0xb6,0xb9,0xe4,0x6e,0xa6,0xc1,0x36,0xb4,0xdb,0x2c,0x71,0xc2,0x1b,0x97,0xc1,0xc8,0x25,0x4d,0x0a,},\"\\x01\\x73\\xa3\\x40\\x50\\xb4\\x37\\x48\\x06\\x1f\\xf8\\xf5\\xa3\\xd7\\xc4\\x3b\\x63\\x60\\x84\\x77\\x86\\xe8\\xbb\\x75\\xe5\\x36\\xfb\\x47\\xb6\\x45\\xb2\\x14\\xf2\\x21\\xba\\x24\\xd8\\x3d\\x28\\xbc\\x02\\x50\\x24\\x66\\x3e\\x53\\x4f\\x90\\xf6\\xe8\\x3a\\x93\\xd8\\xbd\\xde\\xda\\x2c\\xd8\\x80\\x81\\x55\\x65\\x2a\\x90\\x8c\\x43\\x7c\\x2d\\xb6\\xf3\\xed\\x49\\x12\\xf5\\x7c\\xa5\\xb9\\x79\\x28\\xa7\\x3b\\xe9\\x64\\xaf\\x59\\xdf\\x44\\x39\\x85\\x4b\\xb0\\x06\\xfc\\x29\\x5a\\x87\\xb7\\xb7\\x22\\x39\\xc7\\xfa\\xdf\\xec\\x40\\x71\\x55\\x09\\xd9\\x85\\x79\\xda\\xad\\xfb\\x8d\\x52\\x4b\\x4c\\xec\\x66\\x20\\x70\\x5e\\xfd\\x41\\x04\\xc2\\x97\\x14\\x4a\\xea\\x72\\x29\\x74\\xe1\\x2c\\x5e\\xce\\xe5\\x39\\x1e\\xf2\\xd9\\x3a\\xc2\\xb1\\x24\\xe4\\xac\\x49\\x61\\x47\\xc8\\xb7\\x03\\x63\\x58\\x5d\\x70\\x78\\xcc\\xc5\\x3e\\x2a\\xe5\\x93\\x35\\x0b\\xc2\\x55\\x48\\xa0\\x54\\x25\\x26\\xab\\x00\\xaf\\xe4\\x77\\xa0\\xf4\\xb2\\x73\\x97\\xc7\\x2b\\xc7\\x4a\\x8a\\x8a\\xb1\\x56\\xe6\\x2b\\x8b\\xb4\\x7c\\x3f\\xbb\\x4b\\x34\\x91\\x3e\\x45\\x96\\x87\\x47\\x6b\\xf3\\x31\\x42\\xc6\\x14\\x70\\x21\\x07\\xff\\xe2\\xcc\\x01\\xe2\\x5f\\xa3\\x02\\x75\\xe1\\xe2\\xe6\\x3c\\xea\\x91\\x68\\xe4\\xa4\\x7c\\x02\\xde\\x09\\x7d\\x4d\\x85\\x3b\\x27\\x67\\x5c\\x5b\\xb3\\x30\\xb9\\x4a\\x97\\x4e\\xad\\x85\\xe2\\xbd\\xee\\x8e\\xe1\\x7c\\xbb\\x56\\x53\\x34\\x66\\x58\\xdf\\x2f\\x91\\xf6\\xbd\\x73\\x94\\x91\\xdd\\x71\\x98\\x8b\\x3a\\x97\\x6a\\x3e\\x2e\\x7a\\x9d\\x13\\x74\\x10\\xf4\\xac\\xba\\x9f\\xeb\\x5f\\x11\\x79\\x8c\\x9a\\x43\\xb6\\xad\\xce\\x14\\x36\\x5a\\x7c\\x6d\"},\n{{0xff,0xe8,0x25,0x14,0x8c,0x09,0x59,0xb3,0xa6,0x8d,0xe8,0x6a,0xd8,0xe8,0xaf,0x7f,0xa5,0xe0,0x78,0xf3,0x63,0xdc,0x12,0x42,0x13,0xc9,0x00,0x20,0xda,0x0c,0x90,0x89,},{0x13,0x91,0x52,0xa0,0xbd,0x22,0x96,0x2d,0xd9,0x19,0xae,0x3e,0x0b,0x16,0x20,0xe0,0x3c,0x03,0x3c,0x2a,0xd0,0xa3,0x97,0x9e,0xc6,0xbc,0xd1,0x70,0x5e,0x23,0xd5,0x98,},{0xfe,0x4e,0x89,0xee,0x31,0x78,0x6c,0x0a,0x3d,0x3d,0xe3,0x64,0x9b,0xb9,0x3f,0x0b,0x8a,0xef,0x1c,0xaf,0x5a,0x83,0x2e,0xc5,0xe4,0x06,0x78,0x10,0x70,0x5a,0xdd,0xdf,0x53,0x9b,0x8f,0x4e,0x05,0xad,0x08,0xcf,0x34,0x79,0xe4,0x5b,0x42,0xc9,0x65,0x28,0xf6,0xd5,0x9a,0x46,0x25,0x70,0x3d,0xdb,0xf1,0x5b,0x63,0x09,0x39,0x65,0xd8,0x0d,},\"\\xf1\\x25\\x78\\x0d\\x0c\\xd0\\x88\\x53\\x0f\\x0c\\x87\\xb7\\x0b\\xd4\\x2e\\xba\\xb5\\x6a\\xdb\\x5a\\xd4\\x34\\x5f\\x92\\x9a\\xe5\\xde\\xae\\x07\\xfb\\x55\\x32\\x21\\x53\\xa8\\xf0\\x23\\xd3\\x88\\x43\\xbf\\x5d\\x6a\\x93\\xfe\\x99\\x3e\\xee\\x71\\xbc\\x2e\\xe5\\x63\\xb2\\x5a\\x50\\x91\\x8f\\x03\\xef\\xdb\\x5d\\xbf\\x72\\x69\\xad\\xd6\\x9d\\xed\\x3e\\x66\\x95\\x38\\x95\\x62\\x0d\\x9b\\x6c\\xf4\\x6b\\xa2\\x34\\x8f\\x8d\\x66\\xd7\\xf0\\x92\\x23\\x5e\\x37\\x8c\\x1e\\x3e\\xdf\\xeb\\xeb\\x78\\x08\\x4b\\xc8\\xde\\xa0\\x13\\xf9\\x93\\x3a\\xae\\x14\\xa0\\x41\\x94\\x82\\x76\\xd0\\x1f\\x1c\\xb5\\x83\\x4b\\x0e\\x59\\x0e\\x13\\xd9\\x31\\xd1\\x92\\x92\\xbb\\x1d\\x80\\x41\\xff\\x2f\\xe2\\xe1\\x17\\x1a\\x2e\\x0b\\x9a\\x05\\x98\\x21\\xd0\\x92\\x4d\\xde\\x7f\\x3b\\x1b\\xb5\\x98\\x13\\xf5\\xe3\\xc6\\x35\\x20\\xaa\\xfb\\x88\\x01\\xba\\x62\\xc7\\x09\\x7d\\x4d\\x8c\\xf4\\x37\\xa5\\x68\\xa7\\xf0\\x08\\x7c\\x6e\\xa0\\xfc\\xe6\\xe5\\x68\\xc4\\x88\\x3f\\x1c\\xd1\\x2c\\x74\\x9d\\x06\\xa6\\xfe\\xb2\\x78\\xf1\\x08\\x6a\\x8b\\x04\\x76\\x99\\x21\\xf7\\x8a\\x99\\x59\\x06\\x2a\\xb0\\x6f\\x98\\xee\\x80\\xc2\\xc7\\x85\\x4f\\xfa\\x76\\x0f\\x86\\xa8\\x9e\\xe1\\xa5\\x12\\x66\\x05\\x3d\\x19\\x5e\\x61\\xbb\\x1d\\xbd\\x18\\xdd\\x89\\xff\\x39\\x4e\\x40\\x8a\\xce\\x0f\\x64\\x1a\\x39\\x5d\\x56\\x11\\x8e\\xa7\\x2b\\x7d\\x8a\\xdf\\x78\\xb1\\x65\\x5e\\xce\\xce\\x7e\\x82\\x50\\xe8\\xa3\\xa9\\x1c\\xb8\\xfc\\xa0\\xd9\\xce\\x0b\\xaf\\x89\\x80\\xa3\\x87\\xc5\\xed\\x43\\x18\\x66\\x32\\x80\\xe5\\xb4\\x53\\x1f\\x31\\x87\\xc4\\x7e\\xae\\xa7\\xc3\\x29\\x72\\x8d\\xdd\\x0e\\x40\"},\n{{0x49,0xaf,0xf4,0x21,0xa7,0xcd,0x12,0x72,0x2a,0xa8,0x4c,0x48,0xc1,0xfb,0x1c,0x5f,0x8d,0x9e,0x27,0x7d,0x0a,0x99,0xec,0xbc,0x93,0x48,0xc3,0xaa,0xa7,0x4b,0xe4,0x22,},{0x88,0xd2,0xc2,0x62,0x66,0xf4,0x93,0xbc,0x67,0x57,0x8c,0xa0,0xb1,0xf5,0x11,0x60,0xcf,0x0f,0xdb,0x6a,0x09,0xa9,0x06,0xdb,0x9f,0xaa,0x68,0x6f,0x11,0xf8,0x20,0x8d,},{0x74,0x91,0x81,0x28,0x4d,0xf0,0x5d,0xbe,0x59,0x74,0xb9,0x17,0x82,0xa1,0xa7,0x6e,0xa0,0x86,0x42,0xcb,0x0f,0x0c,0x98,0xdb,0x58,0x6c,0x57,0x5c,0x21,0x0c,0xdc,0x8b,0x65,0x1b,0xd3,0x4b,0x75,0x7a,0xe3,0x8e,0x4b,0x6b,0xe9,0x46,0x52,0x35,0xbd,0x0e,0xca,0x43,0x0e,0x26,0xc3,0xee,0xde,0x56,0x1c,0x6e,0x82,0x4d,0xfa,0x20,0x0e,0x0a,},\"\\x70\\xa1\\xac\\x14\\x4b\\x75\\xfd\\xa7\\x55\\x86\\xa7\\x9c\\x36\\xfd\\x39\\xcc\\xe5\\xf5\\xca\\xe2\\xe6\\x37\\x58\\x52\\xd3\\xb6\\x2a\\x96\\x30\\x33\\x6a\\x29\\x3e\\xa6\\xd2\\xac\\x6e\\x5b\\x57\\xda\\x21\\xef\\x36\\x4a\\x59\\x5b\\xb0\\x75\\x0f\\x5b\\xf4\\xd2\\xb3\\x20\\x67\\x64\\x23\\x87\\x0e\\x4b\\x8e\\x08\\x69\\x60\\x1f\\x16\\x68\\x06\\x19\\x04\\x8c\\x4e\\xde\\x27\\x6d\\xa6\\x9f\\x20\\x5a\\x70\\x17\\x6e\\x25\\xea\\x04\\xbd\\x08\\x97\\x63\\xe7\\x09\\xba\\x34\\x3f\\xc8\\x83\\x1e\\x52\\x04\\x4e\\xab\\xf9\\x44\\x1e\\x69\\x97\\xf8\\xba\\x1a\\xeb\\x9e\\xf0\\xf4\\x91\\x17\\x06\\x67\\xa7\\xf5\\xfc\\x96\\x27\\xcb\\xd0\\x55\\x1b\\x76\\xbe\\x27\\x28\\x3a\\x4b\\x0c\\x5f\\x66\\x78\\x46\\x68\\x82\\x26\\xa1\\x15\\xee\\x80\\x20\\xdf\\x08\\x04\\x2b\\x19\\xb5\\x9f\\xe5\\x51\\x31\\x6a\\x6c\\xb6\\x91\\x68\\x60\\xb9\\xec\\xd7\\x41\\x54\\xb4\\x05\\x10\\x38\\xa1\\x73\\x52\\x37\\x2e\\xc1\\x4d\\x3c\\x95\\x7d\\x2e\\xf5\\x0f\\xf7\\x86\\x18\\x9a\\x8a\\xeb\\x9c\\x08\\xf4\\x5e\\xeb\\x5e\\xb8\\xb0\\x40\\x33\\x99\\x74\\xaa\\x97\\x98\\xc4\\x25\\xd7\\xbe\\xcb\\x22\\x8c\\x44\\x7a\\x6d\\x0b\\x3c\\xef\\x27\\x18\\x93\\xe0\\xf7\\x07\\x6e\\x22\\x3a\\x7e\\x87\\xc6\\xa3\\xd2\\x70\\xa0\\x33\\xbc\\x97\\xa4\\x56\\x5e\\xdc\\xe0\\xaa\\x91\\xff\\xc3\\xf7\\x80\\x17\\x75\\xa6\\xf2\\x9b\\x23\\x02\\x45\\xbd\\x71\\xfa\\x03\\x43\\x53\\xde\\x37\\x23\\x95\\xd1\\xbf\\xcb\\xde\\xbb\\xa0\\x81\\x33\\x0f\\x7c\\x07\\x6b\\xe9\\x9c\\x2c\\xf4\\x86\\x7f\\x15\\xb7\\x8d\\x52\\xf4\\x6f\\xc7\\x39\\x1c\\x9c\\xb9\\x5e\\x5d\\x64\\x64\\x3b\\xaf\\xfe\\x72\\xa8\\xe3\\xa6\\x50\\x66\\x7f\\xbb\\x3e\"},\n{{0x70,0x3a,0x6e,0x2b,0x62,0xd0,0x09,0x0c,0x61,0xd8,0x65,0x9b,0x6a,0x96,0x3e,0x03,0xc9,0xd6,0x2c,0x1b,0x38,0xf7,0xd7,0x0e,0x5f,0x9f,0xf0,0x55,0x90,0xcd,0x03,0x60,},{0x37,0x0c,0x21,0xde,0x6e,0xf2,0xfa,0xb5,0x34,0xad,0xa9,0x99,0x86,0x9c,0x90,0xbc,0x9b,0x92,0xcc,0xbf,0x24,0x9b,0x79,0xd3,0x9d,0x95,0x44,0x1d,0x1e,0xde,0x21,0x0a,},{0xe5,0xfd,0x64,0xda,0x02,0x88,0x00,0xc6,0xce,0xed,0x06,0x8a,0x5e,0x59,0x6f,0x16,0x21,0xc7,0x0a,0x8c,0xb1,0x38,0xb3,0x1b,0x32,0x64,0x7e,0xb4,0xb0,0x7b,0xd2,0xec,0xc5,0x94,0x2c,0x18,0x84,0x4f,0x36,0x70,0x33,0xf6,0x73,0x98,0xe3,0x14,0xba,0x2c,0x7c,0xcf,0x29,0x9c,0x06,0x97,0x87,0x77,0x70,0x25,0xd8,0x45,0xf2,0xaa,0xd6,0x0e,},\"\\xd4\\x2a\\x17\\x56\\xe8\\x4d\\xf4\\xb4\\xe9\\x77\\x3f\\x86\\xf7\\x67\\x4a\\x2c\\xd7\\x8e\\x71\\xe4\\x0a\\xa8\\xf6\\x44\\xe6\\x70\\x2d\\xfb\\xc2\\xc2\\xc5\\xca\\x90\\xfc\\x24\\x2e\\x9c\\xb0\\x09\\x9c\\xc8\\xf2\\xc2\\xd3\\x13\\x6b\\xaa\\xfc\\x0f\\xf6\\x95\\x48\\x2f\\xda\\xcd\\xef\\x9f\\x56\\x56\\x10\\xb6\\xe1\\x90\\x07\\x22\\xf4\\x35\\xc6\\x38\\x5b\\x35\\xe9\\xf6\\xc4\\x36\\xca\\x03\\x7e\\x03\\xf6\\x4e\\x22\\x33\\xdf\\xfa\\x58\\xdb\\x3b\\x91\\xcc\\x1d\\xaa\\x0b\\xb0\\xc5\\x4c\\x8a\\x43\\xe4\\x69\\xd2\\xcf\\xf7\\xfa\\x2b\\xf8\\xf5\\xd1\\xd8\\x77\\x93\\x10\\x89\\xc8\\x2e\\xd8\\x9a\\xba\\x42\\xf2\\xee\\x2b\\x86\\xe4\\x45\\xcf\\xd0\\x9f\\x4c\\xd7\\x8b\\x35\\x19\\x1b\\xf4\\x67\\xe7\\x84\\xee\\xf7\\x5d\\xc9\\x87\\xe0\\x46\\xd3\\x7d\\x4d\\x4e\\x8e\\x9b\\xbe\\x14\\xaf\\x80\\xd0\\x3a\\x1f\\x40\\x89\\x83\\x84\\xb9\\xd3\\x27\\x9f\\xac\\x9c\\x57\\xfd\\x9c\\x7e\\xec\\xbe\\x19\\xa5\\xac\\xc1\\x50\\x33\\xb8\\x4e\\x07\\xfd\\x0e\\x40\\x9b\\xdb\\xd5\\xa5\\x7f\\x65\\x64\\x11\\x83\\xa6\\xc0\\xa8\\xec\\x42\\x6d\\x1f\\x1d\\x22\\x31\\x66\\xff\\x0a\\x19\\x00\\xb2\\xe9\\x2b\\x7d\\x85\\x83\\x5d\\x01\\x9d\\x17\\x77\\x5e\\x50\\x93\\xcc\\xd1\\x26\\xf9\\x0f\\x63\\xcb\\x7d\\x15\\xcb\\xeb\\x53\\x13\\x24\\x21\\x9c\\xd6\\x4d\\xed\\x67\\x14\\xb2\\x1a\\x65\\x37\\x1a\\xf0\\x72\\x10\\xdf\\xdf\\x0e\\x4e\\x58\\xdd\\xc7\\xd5\\x9f\\x4c\\xfa\\x65\\xc4\\x21\\xd8\\x14\\xee\\x2c\\x9b\\xf6\\xdb\\xf6\\x48\\x73\\xd5\\x79\\xb0\\x9e\\xe5\\xdc\\xed\\xd7\\x33\\x06\\x3e\\x03\\x9a\\xc9\\xa5\\xf9\\xca\\x4c\\x25\\x25\\xa4\\xcc\\x8e\\x98\\x4d\\xa7\\x18\\x5e\\x2d\\x64\\xfa\\xd8\\x1c\\x8a\"},\n{{0x76,0x84,0x9c,0x18,0x8e,0x3e,0xdd,0x0f,0xf5,0xf8,0xfb,0x87,0x4d,0xc0,0x45,0x66,0x45,0x51,0x84,0x45,0xe4,0x1a,0x7d,0x68,0x33,0xe6,0x16,0xc3,0xc4,0x8c,0x98,0x68,},{0xd6,0x70,0xe2,0xea,0x07,0xdb,0x60,0xc2,0x2a,0xb7,0x9a,0x93,0xeb,0xf4,0x9d,0x22,0xa6,0x24,0x5e,0xe3,0xaf,0x07,0xb3,0xbe,0x58,0x4e,0xda,0x69,0x4c,0x37,0x72,0x9e,},{0x71,0x41,0x39,0x9d,0x51,0xda,0xa6,0xeb,0x45,0x19,0xbf,0x3f,0x01,0xb2,0x33,0x92,0x0f,0xa9,0x08,0xfe,0xfa,0x61,0x2f,0x0c,0xd7,0xd5,0xaf,0x8a,0x9a,0x3c,0x44,0x19,0x0e,0x3f,0x63,0x84,0xa8,0xd1,0x4d,0x37,0xc9,0x70,0x30,0xef,0x50,0x18,0xcf,0x8a,0xee,0x8a,0xeb,0x15,0x69,0xa7,0x3d,0x84,0x86,0x2a,0x59,0xb7,0xdf,0x72,0xfe,0x09,},\"\\x1e\\xcc\\xb0\\xbc\\x8e\\xca\\x3a\\xb5\\xbe\\xe6\\x8c\\x5f\\x8c\\xaa\\x34\\x53\\x67\\x66\\xc7\\x05\\xf5\\x08\\x27\\xdb\\x7a\\xc3\\x75\\xd4\\xfe\\x30\\xb5\\x8f\\xfb\\x7e\\x2f\\xe4\\x90\\xcc\\x71\\xa8\\xff\\x86\\xc0\\x06\\xd6\\x17\\x4d\\x05\\x79\\x3a\\xb8\\xa5\\x5d\\xd5\\x1b\\x06\\xde\\x41\\x7b\\xc0\\xac\\x45\\x2c\\xdc\\x7c\\xfb\\x0b\\xb0\\x03\\x62\\xb6\\x76\\x5d\\x20\\xdb\\x23\\xeb\\x18\\x48\\x02\\x70\\x64\\xa1\\xd9\\x09\\x1d\\x3b\\x10\\xed\\x77\\x6f\\x28\\xb7\\x67\\x68\\xbd\\xfc\\x08\\xf0\\xbc\\x51\\x1f\\x76\\xfa\\xeb\\xa7\\x6c\\xfc\\x4c\\xb5\\xc8\\x3d\\xc9\\xeb\\xe8\\xa8\\xd7\\x9e\\xdc\\xa9\\x23\\xec\\xcd\\x52\\x40\\x09\\xca\\xfe\\xdc\\x90\\xe3\\xad\\x87\\xd1\\x39\\x2e\\x1f\\xcc\\xf4\\xe6\\x0c\\xca\\xb9\\x5d\\xc0\\xab\\x54\\xbf\\x44\\x24\\x5a\\x00\\x7a\\x96\\xd4\\x66\\x34\\xb1\\xb2\\x96\\x5b\\x82\\x9c\\x3d\\x7d\\xaa\\x76\\x59\\x72\\xb5\\x4a\\x7b\\x36\\x5b\\x6f\\x34\\xd7\\x7d\\x71\\x76\\xac\\xd8\\xd8\\x94\\xf6\\xb4\\x17\\x09\\x1b\\x6c\\x00\\xed\\xb7\\xa4\\xe8\\x13\\x79\\x98\\x8b\\xfc\\xec\\xb6\\x92\\xe9\\xc3\\xc4\\x31\\x0a\\x7e\\x24\\x0e\\x5c\\x10\\x63\\xcd\\xe1\\x13\\xf2\\x2a\\x68\\x4a\\x50\\xa1\\x12\\xff\\x47\\xd3\\x89\\x88\\x12\\xef\\xb9\\x26\\x37\\x07\\x2b\\x86\\x16\\x3a\\xd8\\x93\\x16\\xd2\\x21\\x19\\x5a\\xcb\\xfa\\xd0\\xa0\\x3a\\x1f\\xbc\\x2d\\x96\\x7f\\xe8\\x3f\\x84\\xc8\\x45\\x9f\\xcc\\xd4\\x90\\xb9\\xc5\\xb3\\xe5\\x5d\\x27\\xe9\\x48\\x4e\\x94\\x3c\\x41\\x7f\\x21\\x28\\xd7\\x37\\x01\\xda\\x28\\xf4\\x9f\\xd3\\x68\\x3f\\x33\\xa3\\x9c\\xde\\xe2\\x34\\xbd\\x30\\x5b\\x94\\x91\\xe2\\xf3\\xeb\\x62\\x1b\\xe3\\xdd\\x1d\\xbb\\xb3\\x1b\"},\n{{0x83,0xae,0x48,0xad,0x70,0xda,0x0b,0xb3,0xcd,0xf8,0x74,0x81,0xee,0x2c,0x0c,0x85,0x71,0xc2,0xca,0x98,0x67,0x12,0xf8,0xbc,0x23,0x29,0xe9,0xa3,0xe3,0x33,0x83,0xc5,},{0xb7,0x85,0x30,0x90,0x00,0xdf,0x95,0xf5,0xa0,0x4f,0x7d,0x89,0xc4,0x11,0x33,0x01,0x05,0x7a,0xda,0xee,0xb2,0x9b,0xcd,0x28,0xd9,0x93,0x71,0xb5,0x37,0xbb,0xa2,0xf6,},{0x43,0x33,0x23,0x51,0xd3,0xfb,0x7b,0x45,0xfc,0xf3,0x7c,0x60,0x7d,0x44,0x2e,0xa8,0x0d,0xbd,0xa2,0xcb,0x69,0xc2,0x88,0x4f,0x42,0x4e,0x65,0xea,0x3a,0x33,0x1e,0xd8,0x47,0x2d,0x43,0x68,0x40,0x5c,0xb7,0x36,0xb2,0xd6,0x68,0x5a,0xd7,0x82,0xe2,0x39,0xfe,0x83,0x3e,0xd7,0x89,0xa2,0x92,0x31,0x85,0x16,0x6f,0x60,0x83,0x42,0xee,0x05,},\"\\xb7\\x52\\x1d\\x3f\\x71\\xc6\\x79\\xfa\\x70\\x37\\xfe\\x74\\x88\\xa6\\x41\\xf6\\xb9\\x7c\\x49\\x45\\x4a\\xcc\\x8e\\x36\\xb9\\x03\\xd8\\xf9\\xeb\\xb5\\x4d\\x89\\xcb\\x56\\xef\\xd1\\x9e\\x04\\xba\\x6a\\x7c\\x8f\\x48\\xa7\\xd3\\xec\\x9d\\xec\\xd3\\xf1\\xcd\\x0f\\xaf\\x6e\\x97\\x81\\x18\\xe6\\xad\\xce\\x9c\\x6c\\x6b\\xe6\\x3c\\x6a\\x6a\\x1a\\xe2\\x16\\x51\\x82\\x84\\x79\\xa4\\x6b\\xc9\\xa0\\xf7\\x94\\x30\\x40\\xf9\\x40\\xa0\\xd4\\x70\\xc8\\xe5\\x77\\xc5\\xd5\\x75\\xcb\\x53\\xc1\\xbf\\x3a\\xb1\\xfe\\xb0\\x50\\xdc\\xb6\\xfe\\xf0\\xba\\x44\\x47\\xf2\\x99\\xfd\\xb9\\xf2\\x7e\\xcb\\x07\\x14\\xec\\xfe\\xfd\\x74\\xba\\xd7\\xb1\\x22\\xa4\\x62\\xc2\\x4a\\x20\\x98\\x48\\xa0\\x33\\x89\\x07\\x45\\x78\\xc5\\xbd\\xc3\\x63\\x96\\xd8\\x09\\xb0\\xf1\\x40\\x18\\xda\\x64\\x91\\x7e\\x6b\\xf8\\x7e\\xf4\\x05\\xc8\\xf3\\xe3\\x33\\xff\\x9c\\x3b\\xaf\\x63\\x39\\x66\\x76\\x20\\x79\\x4b\\xb4\\x74\\x3f\\x05\\x14\\xb5\\xde\\x7d\\x7f\\xdd\\x94\\x7a\\x7e\\x35\\x01\\xee\\x88\\xef\\xad\\x15\\x9e\\x33\\xa1\\x07\\x2f\\xbb\\x99\\xc7\\xc7\\x1e\\x9d\\x13\\xa5\\x02\\xd5\\xa0\\x7c\\x4f\\x81\\x7e\\xeb\\x7f\\x0c\\x53\\x19\\xaa\\x41\\xa9\\x6d\\x5f\\xf4\\xf1\\x5a\\x73\\xc2\\x9b\\x57\\x1f\\xe2\\x11\\x09\\x0e\\x17\\x2c\\x8d\\xb5\\x18\\x62\\x46\\x12\\xa5\\xc3\\x71\\xa9\\xd7\\xce\\xf6\\xde\\x35\\xeb\\xef\\x96\\xe8\\x8e\\x1a\\x78\\xaf\\x3b\\xd5\\xdd\\x35\\x25\\x1a\\xb5\\x4d\\x73\\x71\\x8f\\x3e\\x70\\xd2\\xd5\\x90\\x21\\x53\\x1d\\xc7\\x31\\x84\\xf0\\xfc\\x69\\xc2\\xe9\\x29\\x65\\x84\\x4e\\xc2\\x7c\\x1c\\x02\\xaf\\x5e\\x9a\\x34\\x69\\xde\\x35\\x5d\\xb2\\x25\\x6e\\x0e\\xc2\\xa4\\xeb\\xa3\\x0a\"},\n{{0x39,0xe5,0x6a,0x65,0x62,0x3a,0x0a,0xeb,0xad,0xe0,0xda,0x12,0xce,0x1d,0xf3,0x78,0xbc,0x92,0x40,0x73,0xf7,0x3a,0x54,0x9e,0xff,0xae,0xbc,0x46,0x5d,0x1a,0x78,0xe2,},{0x83,0xda,0x8a,0xd5,0x0b,0xad,0x09,0xeb,0x3e,0x94,0xc7,0x25,0xdf,0x3c,0xc3,0xa1,0x19,0x73,0x6a,0xdc,0x85,0x9c,0xa1,0xa1,0x05,0x03,0xf4,0x8f,0xf2,0xfe,0xc5,0x96,},{0x39,0x8e,0x82,0x60,0x01,0x1f,0x57,0xd8,0xac,0x8c,0x58,0xd5,0x45,0x7b,0xc6,0x52,0xc7,0x41,0x4a,0xaf,0x6f,0xb2,0xf4,0x26,0xb7,0x89,0x90,0x56,0x60,0x5c,0x0a,0xfc,0x28,0x39,0x24,0x23,0xb2,0xb5,0x71,0xf5,0xe6,0xc3,0xc7,0xf6,0xd6,0x02,0x45,0xe5,0x3e,0xbd,0x03,0xbd,0xc5,0xad,0x3c,0x1a,0xd8,0x73,0x8c,0xb3,0x22,0x14,0xd0,0x0f,},\"\\xa9\\x6d\\xc2\\xea\\x3f\\xa1\\x35\\x14\\x92\\xa4\\x61\\x9d\\x91\\x94\\x68\\x1f\\x8e\\xc4\\x00\\xa9\\x71\\x58\\x24\\x44\\x82\\x65\\x38\\x38\\xcc\\xb7\\xe1\\x56\\xa8\\x2d\\x56\\x43\\x68\\xf8\\x3a\\x6e\\xe1\\xbe\\x46\\xbc\\x34\\xb8\\x17\\x20\\x0e\\x84\\x64\\xc3\\xd1\\x2b\\x5e\\xf2\\xc5\\x0b\\x19\\x56\\x5b\\x88\\x1c\\x4c\\x3d\\x45\\x63\\xfb\\x94\\x7e\\xb4\\x7c\\x3e\\xe9\\xc1\\xee\\x78\\x53\\x26\\x98\\x74\\x45\\x5b\\xfa\\xcb\\xa3\\x05\\xf3\\x07\\xd1\\xac\\x53\\x09\\xee\\xae\\x5c\\x07\\xfa\\x5c\\x4d\\x42\\x8e\\xdb\\xc8\\xb9\\x52\\x8c\\x44\\x15\\x24\\x3a\\x9e\\xf5\\x80\\xaf\\xf8\\xfc\\xfb\\x12\\x00\\x0a\\x71\\xfc\\xee\\xe8\\x9d\\xe9\\x7f\\x90\\x27\\x95\\x29\\xbc\\xc8\\x22\\xed\\x3c\\xb3\\x4c\\x82\\xba\\x5f\\xec\\x15\\xf4\\x94\\x56\\x63\\x63\\x6d\\x67\\xb5\\xfe\\xce\\xac\\xc3\\x1d\\x25\\xf9\\x8a\\xea\\x07\\xf7\\x80\\x0d\\x5a\\x10\\x34\\x25\\x1c\\xb9\\x1d\\xd0\\x96\\x3e\\xc2\\xc1\\xa5\\x47\\x73\\xa4\\xd9\\x6c\\x18\\x35\\x7f\\x8d\\x10\\x1d\\xe5\\x8e\\x93\\x2f\\x8c\\x6c\\xdd\\xe8\\xe3\\xcf\\xce\\xf5\\xa7\\x44\\x3f\\xdb\\xa7\\xb7\\x83\\x20\\x40\\x3c\\x01\\x96\\x84\\x47\\x24\\xa6\\x12\\x18\\x3e\\x34\\xbd\\xd8\\x08\\xce\\x7b\\x95\\x88\\x61\\xca\\x37\\x11\\x57\\x30\\xea\\xed\\xe1\\xfd\\x0b\\xaa\\xbe\\x97\\x6e\\xfe\\xfd\\x03\\x65\\xfd\\xf9\\x26\\x77\\x6c\\x53\\x6f\\x47\\xff\\x80\\xde\\x5c\\x18\\x29\\x1b\\xb7\\xe9\\xf1\\xb9\\x13\\xff\\xd1\\xd9\\x44\\x68\\xb7\\x89\\x75\\x2f\\xae\\x6c\\xa8\\x97\\xc0\\xcc\\xa5\\x3e\\xf1\\xe7\\x31\\xd0\\x0c\\x8b\\xdb\\xe8\\x92\\x9e\\xa6\\xb1\\xdc\\xe1\\xf3\\x1a\\x20\\x68\\x8d\\x37\\xb0\\xf3\\xa2\\xb4\\x15\\x3b\\x30\\x6b\\xdb\\xa1\"},\n{{0x4b,0x99,0x21,0x85,0x2f,0x40,0x9a,0x32,0x3a,0xe3,0x81,0x75,0xe8,0xd7,0x6a,0x21,0x1f,0xc4,0xd9,0xc6,0x54,0x17,0x8e,0xea,0x3b,0xaa,0x7a,0x76,0x7a,0x6f,0xda,0x06,},{0x4c,0x72,0x3e,0x43,0x6b,0x6b,0xd9,0x7f,0x44,0xaf,0x52,0x50,0x3b,0x21,0xcc,0x50,0xd5,0xf6,0xad,0x6c,0xfc,0x82,0x88,0x34,0x5d,0xde,0x80,0x54,0xe9,0x95,0x58,0x2e,},{0xcb,0xf1,0xf1,0x64,0x2d,0xf9,0x50,0xeb,0x71,0xfd,0x09,0x59,0x0d,0x34,0xc2,0x65,0x92,0x2c,0x58,0xbd,0x80,0x26,0xbb,0xa3,0xfc,0x0e,0x59,0x4a,0x6b,0xb1,0xf2,0xb9,0x0d,0xa3,0xdc,0x1d,0x5f,0x6b,0x6d,0x5b,0x40,0x5a,0x89,0x6d,0x1d,0xbb,0x71,0xb8,0x68,0x5c,0x4d,0xfc,0x44,0x4a,0xca,0xff,0xe6,0x5a,0xb8,0x33,0x17,0x89,0xf5,0x07,},\"\\x3f\\x33\\xd8\\xfb\\x83\\xe6\\x87\\x41\\x09\\x0a\\x37\\xbe\\xdd\\x74\\x5c\\xf1\\x41\\xaa\\xae\\xd8\\xc9\\x2f\\xfa\\x74\\x2a\\x52\\x56\\x17\\x77\\x88\\x58\\x05\\xac\\xe1\\x42\\x46\\xab\\x98\\xa8\\xcb\\x59\\x8c\\x9c\\xe3\\xde\\x9b\\x29\\xba\\xe5\\xfa\\x04\\xb1\\xcf\\x82\\x8d\\xe1\\x1a\\xff\\x80\\xa7\\xef\\x8a\\x3a\\x38\\xae\\xde\\x4f\\x3c\\x35\\x63\\xa2\\x5d\\x04\\x9b\\xad\\xca\\xd5\\xed\\x7e\\x47\\xfd\\xbb\\xa6\\xe1\\x11\\x30\\x7e\\xeb\\xe9\\xef\\x49\\x06\\xbc\\x98\\x97\\x28\\xb7\\x6e\\x84\\xaf\\xe8\\x08\\xe6\\x65\\x3b\\x27\\x1e\\x21\\x10\\x4a\\xa6\\x65\\xf1\\x89\\x8d\\xd2\\xaa\\xb2\\x30\\x90\\xe2\\x2b\\x4e\\x34\\x4a\\x26\\x16\\xfb\\xd8\\xee\\x4a\\xd8\\xed\\x81\\x08\\x39\\x5e\\xba\\x81\\x7f\\xbd\\x14\\xfe\\xc5\\xc1\\x7d\\xcf\\x56\\xb8\\x22\\x08\\x56\\xb2\\xb8\\x33\\xe0\\x91\\x40\\x7d\\x50\\x89\\xb3\\x5d\\xdf\\x34\\xb8\\x6f\\xf7\\xdc\\x9f\\xde\\x52\\xb2\\x1e\\xf1\\x21\\x76\\xef\\x33\\x70\\xb7\\xf3\\xa0\\xa8\\xcb\\x1b\\x05\\x8a\\x51\\xae\\xff\\xf3\\xd2\\x79\\xd8\\x0f\\x51\\xa6\\x8b\\xfb\\x59\\x25\\x87\\xb4\\x5c\\x5c\\x63\\xa7\\xe4\\xd6\\x25\\xb8\\x87\\xde\\x48\\x6a\\x11\\x83\\x16\\xc3\\xb6\\xa2\\x38\\x57\\x5f\\x92\\xac\\x5b\\x1c\\x94\\xc3\\xf5\\xdb\\xbd\\x96\\x68\\x60\\x00\\xd6\\xd3\\x9c\\xcc\\xd5\\x58\\xd4\\x20\\xe4\\xd4\\x47\\xa8\\xcb\\xc4\\xbc\\x7b\\x8c\\x6a\\x03\\xaf\\x0f\\x00\\x34\\xfb\\x35\\x18\\xd9\\x38\\x00\\xf0\\xf7\\x13\\xe4\\xb1\\x37\\x32\\xe1\\x6a\\xda\\x51\\x80\\x1d\\x7e\\x55\\x9c\\xf8\\x39\\xd1\\x05\\x8f\\x64\\x95\\x56\\x98\\x31\\x13\\x99\\x34\\x54\\x16\\x85\\x0d\\xdd\\xcc\\x56\\x01\\xa6\\x84\\xfd\\x09\\xe6\\xaf\\xd3\\x94\\x4f\\x5e\\x19\"},\n{{0x1b,0xff,0x65,0x2a,0x2c,0x83,0x09,0xa3,0x93,0xac,0x11,0xda,0x3a,0xa9,0x7f,0xb0,0x78,0xbb,0x28,0x4e,0xd5,0xe1,0xb8,0xcc,0xc9,0x83,0x65,0x2e,0xf8,0x55,0x6c,0xd0,},{0xaa,0xab,0xdc,0x09,0x1f,0xc3,0x68,0x23,0x54,0x20,0x17,0x44,0xe9,0xb7,0x3f,0xd2,0xa6,0xcf,0xb2,0x81,0x91,0x4b,0xf2,0xc7,0x0e,0xc3,0xdc,0x1d,0xec,0x72,0x16,0xb0,},{0x93,0xc9,0xc3,0x34,0x93,0xfc,0x64,0x17,0x2d,0x51,0xe1,0x6a,0x0a,0x1c,0xd7,0x29,0xa0,0xd9,0x9e,0x3c,0xb8,0x64,0xe8,0x9a,0x42,0x98,0x7f,0x39,0xdd,0x8c,0xd2,0x65,0x45,0xfd,0xfe,0x37,0x58,0x19,0x11,0xe8,0x03,0x67,0x7d,0xa4,0xc5,0x5b,0x0a,0x68,0x3d,0xdf,0x62,0xb7,0x28,0xf8,0xf3,0x06,0x85,0xae,0x58,0xf6,0x28,0xeb,0xe6,0x09,},\"\\x48\\xd0\\x26\\x98\\xa9\\x7b\\xdc\\xb3\\xef\\x07\\x8d\\xcf\\xcf\\x57\\x50\\x00\\x5f\\x17\\x02\\xd3\\x00\\xe7\\xe8\\x9b\\xc4\\x36\\xe3\\x81\\x11\\x34\\x01\\xf8\\x52\\xb8\\xb4\\xac\\xff\\x60\\xff\\xbd\\x4a\\xb4\\x6d\\x20\\x21\\x68\\xd9\\x8b\\x87\\x35\\xe7\\x9c\\xb3\\x50\\xe3\\x5b\\x07\\x0f\\xf6\\xbd\\xca\\xfd\\x95\\x4b\\x55\\x19\\x69\\xb6\\xb1\\xa7\\x0c\\x91\\x31\\xeb\\xd4\\x0d\\x96\\x14\\x02\\x91\\xd8\\xd2\\xb0\\x91\\x54\\x0a\\x8b\\x18\\xd8\\xe5\\x46\\x59\\x15\\xc2\\x5d\\xbc\\x6b\\x5c\\x9a\\x68\\x79\\x42\\x53\\x3c\\x37\\x2c\\x8b\\x4e\\x95\\xa9\\x53\\x67\\x71\\x69\\xb9\\x50\\xed\\xd3\\x46\\x43\\x75\\xcd\\x43\\x13\\x2f\\xf9\\xbd\\x54\\x1e\\xe2\\x2b\\xd4\\x18\\xce\\x23\\x19\\x5f\\x65\\xd8\\xb2\\x89\\xf6\\x33\\xec\\x8d\\x71\\xe1\\xa8\\x01\\xb0\\x6c\\x3c\\x82\\x7f\\x62\\x7e\\x72\\x3d\\x21\\x99\\x10\\x0c\\xe7\\x3e\\x8e\\x4a\\x44\\x40\\xe7\\x78\\x31\\x7a\\x47\\x49\\x10\\x79\\x3b\\x47\\xb1\\x0f\\xfb\\x55\\xdb\\x7f\\x28\\x1c\\x7d\\x7a\\x03\\x3b\\xd8\\x00\\x48\\xb8\\x26\\x73\\xb8\\x7c\\xf9\\x5e\\x99\\x42\\x2b\\xa6\\x28\\x68\\x8f\\x3c\\x97\\x18\\x90\\xca\\x15\\xd1\\x2f\\x57\\x2f\\xa1\\x97\\x7a\\x17\\x30\\x70\\x69\\xda\\x30\\x4e\\xad\\x30\\x26\\xeb\\x01\\x04\\x26\\x68\\x89\\x0d\\x17\\x00\\x8c\\xd1\\xe9\\x2c\\x46\\xcb\\xe9\\xc8\\x57\\xe7\\x19\\x3d\\xe3\\xab\\xa3\\x91\\x1e\\x4f\\x86\\xfe\\x0a\\x16\\x98\\xab\\x7c\\xdb\\x92\\x51\\xa8\\x42\\x4b\\x28\\x48\\xb9\\x6a\\xd8\\x1e\\xa2\\x39\\xd3\\x65\\xfd\\xea\\x92\\xea\\x5c\\x04\\x73\\xd0\\xa6\\xbb\\x1e\\x37\\x13\\x56\\xbd\\xfa\\xd2\\xd0\\x35\\x03\\x36\\xd3\\xe1\\x94\\x7c\\x93\\x6f\\xd0\\xc2\\x51\\x95\\x44\\x50\\x11\\x73\\x1b\"},\n{{0x00,0x2f,0xdd,0x1f,0x76,0x41,0x79,0x3a,0xb0,0x64,0xbb,0x7a,0xa8,0x48,0xf7,0x62,0xe7,0xec,0x6e,0x33,0x2f,0xfc,0x26,0xee,0xac,0xda,0x14,0x1a,0xe3,0x3b,0x17,0x83,},{0x77,0xd1,0xd8,0xeb,0xac,0xd1,0x3f,0x4e,0x2f,0x8a,0x40,0xe2,0x8c,0x4a,0x63,0xbc,0x9c,0xe3,0xbf,0xb6,0x97,0x16,0x33,0x4b,0xcb,0x28,0xa3,0x3e,0xb1,0x34,0x08,0x6c,},{0x0d,0xf3,0xaa,0x0d,0x09,0x99,0xad,0x3d,0xc5,0x80,0x37,0x8f,0x52,0xd1,0x52,0x70,0x0d,0x5b,0x3b,0x05,0x7f,0x56,0xa6,0x6f,0x92,0x11,0x2e,0x44,0x1e,0x1c,0xb9,0x12,0x3c,0x66,0xf1,0x87,0x12,0xc8,0x7e,0xfe,0x22,0xd2,0x57,0x37,0x77,0x29,0x62,0x41,0x21,0x69,0x04,0xd7,0xcd,0xd7,0xd5,0xea,0x43,0x39,0x28,0xbd,0x28,0x72,0xfa,0x0c,},\"\\x5a\\xc1\\xdf\\xc3\\x24\\xf4\\x3e\\x6c\\xb7\\x9a\\x87\\xab\\x04\\x70\\xfa\\x85\\x7b\\x51\\xfb\\x94\\x49\\x82\\xe1\\x90\\x74\\xca\\x44\\xb1\\xe4\\x00\\x82\\xc1\\xd0\\x7b\\x92\\xef\\xa7\\xea\\x55\\xad\\x42\\xb7\\xc0\\x27\\xe0\\xb9\\xe3\\x37\\x56\\xd9\\x5a\\x2c\\x17\\x96\\xa7\\xc2\\x06\\x68\\x11\\xdc\\x41\\x85\\x83\\x77\\xd4\\xb8\\x35\\xc1\\x68\\x8d\\x63\\x88\\x84\\xcd\\x2a\\xd8\\x97\\x0b\\x74\\xc1\\xa5\\x4a\\xad\\xd2\\x70\\x64\\x16\\x39\\x28\\xa7\\x79\\x88\\xb2\\x44\\x03\\xaa\\x85\\xaf\\x82\\xce\\xab\\x6b\\x72\\x8e\\x55\\x47\\x61\\xaf\\x71\\x75\\xae\\xb9\\x92\\x15\\xb7\\x42\\x1e\\x44\\x74\\xc0\\x4d\\x21\\x3e\\x01\\xff\\x03\\xe3\\x52\\x9b\\x11\\x07\\x7c\\xdf\\x28\\x96\\x4b\\x8c\\x49\\xc5\\x64\\x9e\\x3a\\x46\\xfa\\x0a\\x09\\xdc\\xd5\\x9d\\xca\\xd5\\x8b\\x9b\\x92\\x2a\\x83\\x21\\x0a\\xcd\\x5e\\x65\\x06\\x55\\x31\\x40\\x02\\x34\\xf5\\xe4\\x0c\\xdd\\xcf\\x98\\x04\\x96\\x8e\\x3e\\x9a\\xc6\\xf5\\xc4\\x4a\\xf6\\x50\\x01\\xe1\\x58\\x06\\x7f\\xc3\\xa6\\x60\\x50\\x2d\\x13\\xfa\\x88\\x74\\xfa\\x93\\x33\\x21\\x38\\xd9\\x60\\x6b\\xc4\\x1b\\x4c\\xee\\x7e\\xdc\\x39\\xd7\\x53\\xda\\xe1\\x2a\\x87\\x39\\x41\\xbb\\x35\\x7f\\x7e\\x92\\xa4\\x49\\x88\\x47\\xd6\\x60\\x54\\x56\\xcb\\x8c\\x0b\\x42\\x5a\\x47\\xd7\\xd3\\xca\\x37\\xe5\\x4e\\x90\\x3a\\x41\\xe6\\x45\\x0a\\x35\\xeb\\xe5\\x23\\x7c\\x6f\\x0c\\x1b\\xbb\\xc1\\xfd\\x71\\xfb\\x7c\\xd8\\x93\\xd1\\x89\\x85\\x02\\x95\\xc1\\x99\\xb7\\xd8\\x8a\\xf2\\x6b\\xc8\\x54\\x89\\x75\\xfd\\xa1\\x09\\x9f\\xfe\\xfe\\xe4\\x2a\\x52\\xf3\\x42\\x8d\\xdf\\xf3\\x5e\\x01\\x73\\xd3\\x33\\x95\\x62\\x50\\x7a\\xc5\\xd2\\xc4\\x5b\\xbd\\x2c\\x19\\xcf\\xe8\\x9b\"},\n{{0x25,0xb0,0xf0,0xbb,0x3d,0xcb,0x42,0x2a,0x6f,0x3c,0x6c,0x22,0x0e,0xaa,0xdb,0x11,0xdb,0xfe,0x48,0x9c,0x2d,0x45,0x5b,0x27,0x6c,0xef,0xe8,0xcb,0xa0,0x57,0xf9,0xf3,},{0xfe,0x03,0xc9,0xc4,0x39,0x4a,0xdc,0x74,0xb1,0x3f,0x47,0x65,0x4b,0xea,0xd8,0xbc,0x85,0x59,0x58,0xb4,0x19,0x4f,0xda,0xb2,0x09,0x7a,0xc1,0xb1,0x57,0x93,0x3c,0x05,},{0xda,0x50,0xd5,0x24,0x2b,0xf5,0x1c,0x39,0x51,0x78,0x0c,0xaf,0xd9,0x26,0xd6,0x7b,0xdf,0x56,0x40,0xd5,0xd3,0xbb,0x08,0x43,0x38,0x31,0xd5,0x6e,0x48,0xe2,0x59,0x2a,0x1c,0x37,0x59,0x68,0xbb,0x4d,0x2f,0xbe,0xa5,0x61,0x45,0xab,0xf2,0xd8,0x29,0x91,0x36,0x3b,0x15,0x65,0xfa,0x1e,0xff,0xe2,0x14,0x01,0x1a,0x68,0x6e,0x39,0x95,0x0e,},\"\\x54\\xd9\\x9f\\x96\\x9e\\xfa\\x88\\x70\\xfc\\x20\\xfa\\x9a\\x96\\x2b\\xb3\\x72\\x61\\x9c\\x32\\x44\\x39\\x72\\x8a\\xf3\\x13\\x9c\\x2a\\x07\\xe8\\xc1\\xb2\\x9c\\x1e\\x4e\\xed\\xc2\\xd4\\x0b\\xa7\\x22\\xf6\\x3c\\xe3\\x76\\x70\\x36\\x2a\\xf6\\xf5\\x20\\x2a\\xdd\\x66\\x8c\\x4f\\xb4\\xd6\\x2f\\xa8\\xba\\xcb\\xc7\\xd0\\x7f\\xf3\\xbd\\x38\\xc1\\x5a\\x01\\x06\\x42\\x59\\xcc\\x34\\x13\\x48\\x61\\x63\\x29\\x67\\x46\\x05\\x41\\xa9\\x9b\\x8d\\x51\\x82\\xbf\\x59\\x34\\x7b\\x5a\\x59\\x87\\x9a\\xa3\\xb0\\x91\\xa1\\xf3\\xe0\\x41\\x35\\xbd\\x63\\x01\\xbe\\x52\\x26\\xd4\\x89\\x5e\\x5e\\x9c\\x2b\\x15\\xe4\\x8e\\x5e\\xcd\\xf4\\x41\\x29\\xe6\\x12\\x28\\x53\\xa6\\x06\\xfc\\x11\\x84\\x66\\xfa\\x72\\x0b\\x5a\\xb1\\x65\\x63\\x5c\\x3b\\xde\\x04\\xd7\\x42\\x89\\x27\\x4f\\xa0\\x35\\x47\\xac\\xcb\\xde\\x78\\x0e\\x1f\\xa0\\xbf\\x2c\\x56\\xf8\\x43\\x6a\\x53\\xe7\\x38\\x78\\xa4\\x24\\xa2\\x9a\\xa9\\xde\\x38\\x5d\\xba\\x41\\x9a\\xe6\\xa5\\xd1\\x2e\\x00\\x42\\x76\\x15\\x2b\\x58\\xd3\\x25\\xb3\\x02\\x40\\x0a\\x55\\x33\\x3c\\x38\\xcd\\xe4\\x90\\x8a\\xe1\\xd0\\x12\\x1c\\xbe\\xca\\x95\\x08\\x09\\xc5\\x43\\x31\\x42\\x77\\xc1\\x48\\x5e\\x68\\xd9\\xf9\\xc0\\xa9\\x62\\xd1\\xb1\\xe0\\xdd\\xa1\\xd4\\xa5\\x2b\\x56\\xf8\\x30\\x8a\\x80\\xb9\\x2a\\xcc\\x9f\\x4e\\xbc\\x3e\\xd4\\x5d\\x91\\xa1\\x29\\xda\\x86\\x75\\x62\\x1a\\xf6\\x76\\x70\\x3d\\xef\\x3b\\x84\\x11\\x31\\x83\\xb2\\xe3\\xa8\\xc5\\x61\\x57\\xf2\\x43\\xf1\\x39\\x80\\xf3\\xd1\\x75\\x6f\\xea\\x76\\x68\\xc9\\x15\\x03\\xd3\\x5c\\x83\\x9a\\x21\\x20\\xc7\\x9e\\xc9\\x54\\xfb\\x54\\x6d\\x7b\\x54\\x2f\\x98\\x72\\x89\\x53\\x4f\\xfd\\xef\\x62\\xd4\\x7f\\xd5\\xec\"},\n{{0xbf,0x5b,0xa5,0xd6,0xa4,0x9d,0xd5,0xef,0x7b,0x4d,0x5d,0x7d,0x3e,0x4e,0xcc,0x50,0x5c,0x01,0xf6,0xcc,0xee,0x4c,0x54,0xb5,0xef,0x7b,0x40,0xaf,0x6a,0x45,0x41,0x40,},{0x1b,0xe0,0x34,0xf8,0x13,0x01,0x7b,0x90,0x0d,0x89,0x90,0xaf,0x45,0xfa,0xd5,0xb5,0x21,0x4b,0x57,0x3b,0xd3,0x03,0xef,0x7a,0x75,0xef,0x4b,0x8c,0x5c,0x5b,0x98,0x42,},{0x27,0x9c,0xac,0xe6,0xfd,0xaf,0x39,0x45,0xe3,0x83,0x7d,0xf4,0x74,0xb2,0x86,0x46,0x14,0x37,0x47,0x63,0x2b,0xed,0xe9,0x3e,0x7a,0x66,0xf5,0xca,0x29,0x1d,0x2c,0x24,0x97,0x85,0x12,0xca,0x0c,0xb8,0x82,0x7c,0x8c,0x32,0x26,0x85,0xbd,0x60,0x55,0x03,0xa5,0xec,0x94,0xdb,0xae,0x61,0xbb,0xdc,0xae,0x1e,0x49,0x65,0x06,0x02,0xbc,0x07,},\"\\x16\\x15\\x2c\\x2e\\x03\\x7b\\x1c\\x0d\\x32\\x19\\xce\\xd8\\xe0\\x67\\x4a\\xee\\x6b\\x57\\x83\\x4b\\x55\\x10\\x6c\\x53\\x44\\x62\\x53\\x22\\xda\\x63\\x8e\\xce\\xa2\\xfc\\x9a\\x42\\x4a\\x05\\xee\\x95\\x12\\xd4\\x8f\\xcf\\x75\\xdd\\x8b\\xd4\\x69\\x1b\\x3c\\x10\\xc2\\x8e\\xc9\\x8e\\xe1\\xaf\\xa5\\xb8\\x63\\xd1\\xc3\\x67\\x95\\xed\\x18\\x10\\x5d\\xb3\\xa9\\xaa\\xbd\\x9d\\x2b\\x4c\\x17\\x47\\xad\\xba\\xf1\\xa5\\x6f\\xfc\\xc0\\xc5\\x33\\xc1\\xc0\\xfa\\xef\\x33\\x1c\\xdb\\x79\\xd9\\x61\\xfa\\x39\\xf8\\x80\\xa1\\xb8\\xb1\\x16\\x47\\x41\\x82\\x2e\\xfb\\x15\\xa7\\x25\\x9a\\x46\\x5b\\xef\\x21\\x28\\x55\\x75\\x1f\\xab\\x66\\xa8\\x97\\xbf\\xa2\\x11\\xab\\xe0\\xea\\x2f\\x2e\\x1c\\xd8\\xa1\\x1d\\x80\\xe1\\x42\\xcd\\xe1\\x26\\x3e\\xec\\x26\\x7a\\x31\\x38\\xae\\x1f\\xcf\\x40\\x99\\xdb\\x0a\\xb5\\x3d\\x64\\xf3\\x36\\xf4\\xbc\\xd7\\xa3\\x63\\xf6\\xdb\\x11\\x2c\\x0a\\x24\\x53\\x05\\x1a\\x00\\x06\\xf8\\x13\\xaa\\xf4\\xae\\x94\\x8a\\x20\\x90\\x61\\x93\\x74\\xfa\\x58\\x05\\x24\\x09\\xc2\\x8e\\xf7\\x62\\x25\\x68\\x7d\\xf3\\xcb\\x2d\\x1b\\x0b\\xfb\\x43\\xb0\\x9f\\x47\\xf1\\x23\\x2f\\x79\\x0e\\x6d\\x8d\\xea\\x75\\x9e\\x57\\x94\\x20\\x99\\xf4\\xc4\\xbd\\x33\\x90\\xf2\\x8a\\xfc\\x20\\x98\\x24\\x49\\x61\\x46\\x5c\\x64\\x3f\\xc8\\xb2\\x97\\x66\\xaf\\x2b\\xcb\\xc5\\x44\\x0b\\x86\\xe8\\x36\\x08\\xcf\\xc9\\x37\\xbe\\x98\\xbb\\x48\\x27\\xfd\\x5e\\x6b\\x68\\x9a\\xdc\\x2e\\x26\\x51\\x3d\\xb5\\x31\\x07\\x6a\\x65\\x64\\x39\\x62\\x55\\xa0\\x99\\x75\\xb7\\x03\\x4d\\xac\\x06\\x46\\x1b\\x25\\x56\\x42\\xe3\\xa7\\xed\\x75\\xfa\\x9f\\xc2\\x65\\x01\\x1f\\x5f\\x62\\x50\\x38\\x2a\\x84\\xac\\x26\\x8d\\x63\\xba\\x64\"},\n{{0x65,0xde,0x29,0x7b,0x70,0xcb,0xe8,0x09,0x80,0x50,0x0a,0xf0,0x56,0x1a,0x24,0xdb,0x50,0x00,0x10,0x00,0x12,0x5f,0x44,0x90,0x36,0x6d,0x83,0x00,0xd3,0x12,0x85,0x92,},{0xba,0x8e,0x2a,0xd9,0x29,0xbd,0xce,0xa5,0x38,0x74,0x10,0x42,0xb5,0x7f,0x20,0x67,0xd3,0x15,0x37,0x07,0xa4,0x53,0x77,0x0d,0xb9,0xf3,0xc4,0xca,0x75,0x50,0x4d,0x24,},{0x7a,0x9b,0x73,0x6b,0x01,0xcc,0x92,0xa3,0x34,0x9f,0x1a,0x3c,0x32,0xdb,0xd9,0x19,0x59,0x82,0x53,0x94,0xff,0x44,0x3c,0x56,0x74,0x05,0xe8,0x99,0xc8,0x18,0x5c,0xe8,0xfa,0xd9,0x50,0x0e,0x1f,0xce,0x89,0xd9,0x5a,0x62,0x53,0xc0,0x04,0x77,0x43,0x5a,0xcf,0x04,0xbf,0xf9,0x93,0xde,0x1b,0x00,0x49,0x5d,0xef,0x08,0x34,0xee,0x1f,0x07,},\"\\x13\\x1d\\x8f\\x4c\\x2c\\x94\\xb1\\x53\\x56\\x5b\\x86\\x59\\x2e\\x77\\x0c\\x98\\x7a\\x44\\x34\\x61\\xb3\\x9a\\xa2\\x40\\x8b\\x29\\xe2\\x13\\xab\\x05\\x7a\\xff\\xc5\\x98\\xb5\\x83\\x73\\x9d\\x66\\x03\\xa8\\x3f\\xef\\x0a\\xfc\\x51\\x47\\x21\\xdb\\x0e\\x76\\xf9\\xbd\\x1b\\x72\\xb9\\x8c\\x56\\x5c\\xc8\\x88\\x1a\\xf5\\x74\\x7c\\x0b\\xa6\\xf5\\x8c\\x53\\xdd\\x23\\x77\\xda\\x6c\\x0d\\x3a\\xa8\\x05\\x62\\x0c\\xc4\\xe7\\x5d\\x52\\xaa\\xbc\\xba\\x1f\\x9b\\x28\\x49\\xe0\\x8b\\xd1\\xb6\\xb9\\x2e\\x6f\\x06\\x61\\x5b\\x81\\x45\\x19\\x60\\x6a\\x02\\xdc\\x65\\xa8\\x60\\x9f\\x5b\\x29\\xe9\\xc2\\xaf\\x5a\\x89\\x4f\\x71\\x16\\xef\\x28\\xcf\\xd1\\xe7\\xb7\\x6b\\x64\\x06\\x17\\x32\\xf7\\xa5\\xa3\\xf8\\xaa\\x4c\\x2e\\x56\\x9e\\x62\\x7a\\x3f\\x97\\x49\\xaa\\x59\\x7b\\xe4\\x9d\\x6b\\x94\\x43\\x6c\\x35\\x2d\\xd5\\xfa\\x7b\\x83\\xc9\\x2d\\x26\\x10\\xfa\\xa3\\x20\\x95\\xca\\x30\\x21\\x52\\xd9\\x1a\\x3c\\x97\\x76\\x75\\x0e\\x75\\x8e\\xe8\\xe9\\xe4\\x02\\xc6\\xf5\\x38\\x5e\\xaa\\x5d\\xf2\\x38\\x50\\xe5\\x4b\\xeb\\x1b\\xe4\\x37\\xa4\\x16\\xc7\\x11\\x5e\\xd6\\xaa\\x6d\\xe1\\x3b\\x55\\x48\\x25\\x32\\x78\\x7e\\x0b\\xee\\x34\\xb8\\x3f\\x30\\x84\\x40\\x67\\x65\\x63\\x54\\x97\\xc9\\x31\\xb6\\x2a\\x05\\x18\\xf1\\xfb\\xc2\\xb8\\x91\\xdc\\x72\\x62\\xc7\\xc6\\xb6\\x7e\\xda\\x59\\x4f\\xa5\\x30\\xd7\\x4c\\x93\\x29\\xba\\xd5\\xbe\\x94\\xc2\\x87\\xfb\\xcd\\xe5\\x3a\\xa8\\x02\\x72\\xb8\\x33\\x22\\x61\\x3d\\x93\\x68\\xe5\\x90\\x40\\x76\\xfd\\xbc\\xc8\\x8b\\x2c\\x0e\\x59\\xc1\\x0b\\x02\\xc4\\x48\\xe0\\x0d\\x1b\\x3e\\x7a\\x9c\\x96\\x40\\xfe\\xff\\xb9\\x52\\x3a\\x8a\\x60\\xe1\\xd8\\x3f\\x04\\xa4\\xb8\\xdf\\x69\\x15\\x3b\"},\n{{0x08,0x26,0xe7,0x33,0x33,0x24,0xe7,0xec,0x8c,0x76,0x42,0x92,0xf6,0x01,0x5d,0x46,0x70,0xe9,0xb8,0xd7,0xc4,0xa8,0x9e,0x8d,0x90,0x9e,0x8e,0xf4,0x35,0xd1,0x8d,0x15,},{0xff,0xb2,0x34,0x8c,0xa8,0xa0,0x18,0x05,0x8b,0xe7,0x1d,0x15,0x12,0xf3,0x76,0xf9,0x1e,0x8b,0x0d,0x55,0x25,0x81,0x25,0x4e,0x10,0x76,0x02,0x21,0x73,0x95,0xe6,0x62,},{0x4b,0xac,0x7f,0xab,0xec,0x87,0x24,0xd8,0x1a,0xb0,0x9a,0xe1,0x30,0x87,0x4d,0x70,0xb5,0x21,0x34,0x92,0x10,0x43,0x72,0xf6,0x01,0xae,0x5a,0xbb,0x10,0x53,0x27,0x99,0x37,0x3c,0x4d,0xad,0x21,0x58,0x76,0x44,0x1f,0x47,0x4e,0x2c,0x00,0x6b,0xe3,0x7c,0x3c,0x8f,0x5f,0x6f,0x01,0x7d,0x08,0x70,0x41,0x4f,0xd2,0x76,0xa8,0xf4,0x28,0x08,},\"\\x7f\\x9e\\x3e\\x2f\\x03\\xc9\\xdf\\x3d\\x21\\xb9\\x90\\xf5\\xa4\\xaf\\x82\\x95\\x73\\x4a\\xfe\\x78\\x3a\\xcc\\xc3\\x4f\\xb1\\xe9\\xb8\\xe9\\x5a\\x0f\\xd8\\x37\\xaf\\x7e\\x05\\xc1\\x3c\\xda\\x0d\\xe8\\xfa\\xda\\xc9\\x20\\x52\\x65\\xa0\\x79\\x2b\\x52\\x56\\x3b\\xdc\\x2f\\xee\\x76\\x63\\x48\\xbe\\xfc\\xc5\\x6b\\x88\\xbb\\xb9\\x5f\\x15\\x44\\x14\\xfb\\x18\\x6e\\xc4\\x36\\xaa\\x62\\xea\\x6f\\xca\\xbb\\x11\\xc0\\x17\\xa9\\xd2\\xd1\\x5f\\x67\\xe5\\x95\\x98\\x0e\\x04\\xc9\\x31\\x3b\\xc9\\x4f\\xbc\\x8c\\x11\\x34\\xc2\\xf4\\x03\\x32\\xbc\\x7e\\x31\\x1a\\xc1\\xce\\x11\\xb5\\x05\\xf8\\x57\\x2a\\xda\\x7f\\xbe\\x19\\x6f\\xba\\x82\\x2d\\x9a\\x91\\x44\\x92\\xfa\\x71\\x85\\xe9\\xf3\\xbe\\xa4\\x68\\x72\\x00\\xa5\\x24\\xc6\\x73\\xa1\\xcd\\xf8\\x7e\\xb3\\xa1\\x40\\xdc\\xdb\\x6a\\x88\\x75\\x61\\x34\\x88\\xa2\\xb0\\x0a\\xdf\\x71\\x75\\x34\\x1c\\x1c\\x25\\x76\\x35\\xfa\\x1a\\x53\\xa3\\xe2\\x1d\\x60\\xc2\\x28\\x39\\x9e\\xea\\x09\\x91\\xf1\\x12\\xc6\\x0f\\x65\\x3d\\x71\\x48\\xe2\\xc5\\xce\\xb9\\x8f\\x94\\x08\\x31\\xf0\\x70\\xdb\\x10\\x84\\xd7\\x91\\x56\\xcc\\x82\\xc4\\x6b\\xc9\\xb8\\xe8\\x84\\xf3\\xfa\\x81\\xbe\\x2d\\xa4\\xcd\\xda\\x46\\xbc\\xaa\\x24\\xcc\\x46\\x1f\\x76\\xee\\x64\\x7b\\xb0\\xf0\\xf8\\xc1\\x5a\\xc5\\xda\\xa7\\x95\\xb9\\x45\\xe6\\xf8\\x5b\\xb3\\x10\\x36\\x2e\\x48\\xd8\\x09\\x5c\\x78\\x2c\\x61\\xc5\\x2b\\x48\\x1b\\x4b\\x00\\x2a\\xd0\\x6e\\xa7\\x4b\\x8d\\x30\\x6e\\xff\\x71\\xab\\xf2\\x1d\\xb7\\x10\\xa8\\x91\\x3c\\xbe\\x48\\x33\\x2b\\xe0\\xa0\\xb3\\xf3\\x1e\\x0c\\x7a\\x6e\\xba\\x85\\xce\\x33\\xf3\\x57\\xc7\\xae\\xcc\\xd3\\x0b\\xfb\\x1a\\x65\\x74\\x40\\x8b\\x66\\xfe\\x40\\x4d\\x31\\xc3\\xc5\"},\n{{0x00,0xad,0x62,0x27,0x97,0x7b,0x5f,0x38,0xcc,0xda,0x99,0x4d,0x92,0x8b,0xba,0x90,0x86,0xd2,0xda,0xeb,0x01,0x3f,0x86,0x90,0xdb,0x98,0x66,0x48,0xb9,0x0c,0x1d,0x45,},{0x91,0xa4,0xea,0x00,0x57,0x52,0xb9,0x2c,0xbe,0xbf,0x99,0xa8,0xa5,0xcb,0xec,0xd2,0x40,0xae,0x3f,0x01,0x6c,0x44,0xad,0x14,0x1b,0x2e,0x57,0xdd,0xc7,0x73,0xdc,0x8e,},{0xdc,0x50,0x1d,0xb7,0x9f,0xd7,0x82,0xbc,0x88,0xca,0xe7,0x92,0x55,0x7d,0x5d,0x27,0x3f,0x9b,0xa5,0x60,0xc7,0xd9,0x00,0x37,0xfe,0x84,0xac,0x87,0x9d,0x68,0x4f,0x61,0x2a,0x77,0x45,0x2c,0x44,0x43,0xe9,0x5c,0x07,0xb8,0xbe,0x19,0x2c,0x35,0x76,0x9b,0x17,0xbb,0xdf,0xca,0x42,0x28,0x0d,0xe7,0x96,0xd9,0x21,0x19,0xd8,0x33,0x67,0x0d,},\"\\xcb\\x5b\\xc5\\xb9\\x8b\\x2e\\xfc\\xe4\\x35\\x43\\xe9\\x1d\\xf0\\x41\\xe0\\xdb\\xb5\\x3e\\xd8\\xf6\\x7b\\xf0\\xf1\\x97\\xc5\\x2b\\x22\\x11\\xe7\\xa4\\x5e\\x2e\\x1e\\xc8\\x18\\xc1\\xa8\\x0e\\x10\\xab\\xf6\\xa4\\x35\\x35\\xf5\\xb7\\x9d\\x97\\x4d\\x8a\\xe2\\x8a\\x22\\x95\\xc0\\xa6\\x52\\x17\\x63\\xb6\\x07\\xd5\\x10\\x3c\\x6a\\xef\\x3b\\x27\\x86\\xbd\\x5a\\xfd\\x75\\x63\\x69\\x56\\x60\\x68\\x43\\x37\\xbc\\x30\\x90\\x73\\x9f\\xb1\\xcd\\x53\\xa9\\xd6\\x44\\x13\\x9b\\x6d\\x4c\\xae\\xc7\\x5b\\xda\\x7f\\x25\\x21\\xfb\\xfe\\x67\\x6a\\xb4\\x5b\\x98\\xcb\\x31\\x7a\\xa7\\xca\\x79\\xfc\\x54\\xa3\\xd7\\xc5\\x78\\x46\\x6a\\x6a\\xa6\\x4e\\x43\\x4e\\x92\\x34\\x65\\xa7\\xf2\\x11\\xaa\\x0c\\x61\\x68\\x1b\\xb8\\x48\\x6e\\x90\\x20\\x6a\\x25\\x25\\x0d\\x3f\\xda\\xe6\\xfb\\x03\\x29\\x97\\x21\\xe9\\x9e\\x2a\\x91\\x49\\x10\\xd9\\x17\\x60\\x08\\x9b\\x5d\\x28\\x1e\\x13\\x1e\\x6c\\x83\\x6b\\xc2\\xde\\x08\\xf7\\xe0\\x2c\\x48\\xd3\\x23\\xc6\\x47\\xe9\\x53\\x6c\\x00\\xec\\x10\\x39\\x20\\x1c\\x03\\x62\\x61\\x8c\\x7d\\x47\\xaa\\x8e\\x7b\\x97\\x15\\xff\\xc4\\x39\\x98\\x7a\\xe1\\xd3\\x11\\x54\\xa6\\x19\\x8c\\x5a\\xa1\\x1c\\x12\\x8f\\x40\\x82\\xf5\\x56\\xc9\\x9b\\xaf\\x10\\x3e\\xca\\xdc\\x3b\\x2f\\x3b\\x2e\\xc5\\xb4\\x69\\x62\\x3b\\xc0\\x3a\\x53\\xca\\xf3\\x81\\x4b\\x16\\x30\\x0a\\xed\\xbd\\xa5\\x38\\xd6\\x76\\xd1\\xf6\\x07\\x10\\x26\\x39\\xdb\\x2a\\x62\\xc4\\x46\\x70\\x7c\\xe6\\x46\\x9b\\xd8\\x73\\xa0\\x46\\x82\\x25\\xbe\\x88\\xb0\\xae\\xf5\\xd4\\x02\\x04\\x59\\xb9\\x4b\\x32\\xfe\\x2b\\x01\\x33\\xe9\\x2e\\x7b\\xa5\\x4d\\xd2\\xa5\\x39\\x7e\\xd8\\x5f\\x96\\x6a\\xb3\\x9e\\xd0\\x73\\x0c\\xca\\x8e\\x7d\\xac\\xb8\\xa3\\x36\"},\n{{0x15,0x21,0xc6,0xdb,0xd6,0xf7,0x24,0xde,0x73,0xea,0xf7,0xb5,0x62,0x64,0xf0,0x10,0x35,0xc0,0x4e,0x01,0xc1,0xf3,0xeb,0x3c,0xbe,0x83,0xef,0xd2,0x6c,0x43,0x9a,0xda,},{0x2f,0x61,0xa2,0x6f,0xfb,0x68,0xba,0x4f,0x6e,0x14,0x15,0x29,0xdc,0x26,0x17,0xe8,0x53,0x1c,0x71,0x51,0x40,0x48,0x08,0x09,0x3b,0x4f,0xa7,0xfe,0xda,0xea,0x25,0x5d,},{0xa8,0x17,0xed,0x23,0xec,0x39,0x8a,0x12,0x86,0x01,0xc1,0x83,0x2d,0xc6,0xaf,0x76,0x43,0xbf,0x3a,0x5f,0x51,0x7b,0xcc,0x57,0x94,0x50,0xfd,0xb4,0x75,0x90,0x28,0xf4,0x96,0x61,0x64,0x12,0x5f,0x6e,0xbd,0x0d,0x6b,0xf8,0x6f,0xf2,0x98,0xa3,0x9c,0x76,0x6d,0x0c,0x21,0xfd,0xb0,0xcb,0xfd,0xf8,0x1c,0xd0,0xeb,0x1f,0x03,0xcd,0x8a,0x08,},\"\\x3e\\x3c\\x7c\\x49\\x07\\x88\\xe4\\xb1\\xd4\\x2f\\x5c\\xbc\\xae\\x3a\\x99\\x30\\xbf\\x61\\x7e\\xbd\\xff\\x44\\x7f\\x7b\\xe2\\xac\\x2b\\xa7\\xcd\\x5b\\xcf\\xc0\\x15\\x76\\x09\\x63\\xe6\\xfe\\x5b\\x95\\x6f\\xb7\\xcd\\xb3\\x5b\\xd5\\xa1\\x7f\\x54\\x29\\xca\\x66\\x4f\\x43\\x7f\\x08\\x75\\x3a\\x74\\x1c\\x2b\\xc8\\x69\\x2b\\x71\\xa9\\x11\\x5c\\x58\\x2a\\x25\\xb2\\xf7\\x4d\\x32\\x98\\x54\\xd6\\x0b\\x78\\x17\\xc0\\x79\\xb3\\x52\\x3a\\xaf\\xf8\\x79\\x3c\\x2f\\x72\\xff\\xf8\\xcd\\x10\\x59\\x2c\\x54\\xe7\\x38\\xdf\\x1d\\x64\\x52\\xfb\\x72\\xda\\x13\\x1c\\x67\\x31\\xea\\x5c\\x95\\x3c\\x62\\xea\\x17\\x7a\\xc1\\xf4\\x73\\x5e\\x51\\x54\\x47\\x73\\x87\\x10\\x9a\\xfa\\xe1\\x5f\\x3e\\xd6\\xee\\xb0\\x86\\x06\\xe2\\x8c\\x81\\xd4\\x38\\x6f\\x03\\xb9\\x37\\x69\\x24\\xb6\\xef\\x8d\\x22\\x1e\\xe2\\x95\\x47\\xf8\\x2a\\x7e\\xde\\x48\\xe1\\xdc\\x17\\x72\\x3e\\x3d\\x42\\x17\\x1e\\xea\\xf9\\x6a\\xc8\\x4b\\xed\\xc2\\xa0\\x1d\\xd8\\x6f\\x4d\\x08\\x57\\x34\\xfd\\x69\\xf9\\x1b\\x52\\x63\\xe4\\x39\\x08\\x3f\\xf0\\x31\\x85\\x36\\xad\\xff\\x41\\x47\\x30\\x8e\\x3a\\xaf\\xd1\\xb5\\x8b\\xb7\\x4f\\x6f\\xb0\\x21\\x4a\\x46\\xfd\\xcd\\x35\\x24\\xf1\\x8d\\xf5\\xa7\\x19\\xce\\x57\\x31\\x9e\\x79\\x1b\\x4e\\xa6\\x06\\xb4\\x99\\xbf\\xa5\\x7a\\x60\\xe7\\x07\\xf9\\x4e\\x18\\xf1\\xfe\\xd2\\x2f\\x91\\xbc\\x79\\xe6\\x36\\x4a\\x84\\x3f\\x9c\\xbf\\x93\\x82\\x5c\\x46\\x5e\\x9c\\xae\\x90\\x72\\xbc\\x9d\\x3e\\xc4\\x47\\x1f\\x21\\xab\\x2f\\x7e\\x99\\xa6\\x33\\xf5\\x87\\xaa\\xc3\\xdb\\x78\\xae\\x96\\x66\\xa8\\x9a\\x18\\x00\\x8d\\xd6\\x1d\\x60\\x21\\x85\\x54\\x41\\x1a\\x65\\x74\\x0f\\xfd\\x1a\\xe3\\xad\\xc0\\x65\\x95\\xe3\\xb7\\x87\\x64\\x07\\xb6\"},\n{{0x17,0xe5,0xf0,0xa8,0xf3,0x47,0x51,0xba,0xbc,0x5c,0x72,0x3e,0xcf,0x33,0x93,0x06,0x99,0x2f,0x39,0xea,0x06,0x5a,0xc1,0x40,0xfc,0xbc,0x39,0x7d,0x2d,0xd3,0x2c,0x4b,},{0x4f,0x1e,0x23,0xcc,0x0f,0x2f,0x69,0xc8,0x8e,0xf9,0x16,0x2a,0xb5,0xf8,0xc5,0x9f,0xb3,0xb8,0xab,0x20,0x96,0xb7,0x7e,0x78,0x2c,0x63,0xc0,0x7c,0x8c,0x4f,0x2b,0x60,},{0xef,0xe2,0xcb,0x63,0xfe,0x7b,0x4f,0xc9,0x89,0x46,0xdc,0x82,0xfb,0x69,0x98,0xe7,0x41,0xed,0x9c,0xe6,0xb9,0xc1,0xa9,0x3b,0xb4,0x5b,0xc0,0xa7,0xd8,0x39,0x6d,0x74,0x05,0x28,0x2b,0x43,0xfe,0x36,0x3b,0xa5,0xb2,0x35,0x89,0xf8,0xe1,0xfa,0xe1,0x30,0xe1,0x57,0xce,0x88,0x8c,0xd7,0x2d,0x05,0x3d,0x0c,0xc1,0x9d,0x25,0x7a,0x43,0x00,},\"\\xc0\\xfa\\xd7\\x90\\x02\\x40\\x19\\xbd\\x6f\\xc0\\x8a\\x7a\\x92\\xf5\\xf2\\xac\\x35\\xcf\\x64\\x32\\xe2\\xea\\xa5\\x3d\\x48\\x2f\\x6e\\x12\\x04\\x93\\x53\\x36\\xcb\\x3a\\xe6\\x5a\\x63\\xc2\\x4d\\x0e\\xc6\\x53\\x9a\\x10\\xee\\x18\\x76\\x0f\\x2f\\x52\\x05\\x37\\x77\\x4c\\xde\\xc6\\xe9\\x6b\\x55\\x53\\x60\\x11\\xda\\xa8\\xf8\\xbc\\xb9\\xcd\\xaf\\x6d\\xf5\\xb3\\x46\\x48\\x44\\x8a\\xc7\\xd7\\xcb\\x7c\\x6b\\xd8\\x0d\\x67\\xfb\\xf3\\x30\\xf8\\x76\\x52\\x97\\x76\\x60\\x46\\xa9\\x25\\xab\\x52\\x41\\x1d\\x16\\x04\\xc3\\xed\\x6a\\x85\\x17\\x30\\x40\\x12\\x56\\x58\\xa3\\x2c\\xf4\\xc8\\x54\\xef\\x28\\x13\\xdf\\x2b\\xe6\\xf3\\x83\\x0e\\x5e\\xee\\x5a\\x61\\x63\\xa8\\x3c\\xa8\\x84\\x9f\\x61\\x29\\x91\\xa3\\x1e\\x9f\\x88\\x02\\x8e\\x50\\xbf\\x85\\x35\\xe1\\x17\\x55\\xfa\\xd0\\x29\\xd9\\x4c\\xf2\\x59\\x59\\xf6\\x69\\x5d\\x09\\xc1\\xba\\x43\\x15\\xd4\\x0f\\x7c\\xf5\\x1b\\x3f\\x81\\x66\\xd0\\x2f\\xab\\xa7\\x51\\x1e\\xcd\\x8b\\x1d\\xde\\xd5\\xf1\\x0c\\xd6\\x84\\x34\\x55\\xcf\\xf7\\x07\\xed\\x22\\x53\\x96\\xc6\\x1d\\x08\\x20\\xd2\\x0a\\xda\\x70\\xd0\\xc3\\x61\\x9f\\xf6\\x79\\x42\\x20\\x61\\xc9\\xf7\\xc7\\x6e\\x97\\xd5\\xa3\\x7a\\xf6\\x1f\\xd6\\x22\\x12\\xd2\\xda\\xfc\\x64\\x7e\\xbb\\xb9\\x79\\xe6\\x1d\\x90\\x70\\xec\\x03\\x60\\x9a\\x07\\xf5\\xfc\\x57\\xd1\\x19\\xae\\x64\\xb7\\xa6\\xef\\x92\\xa5\\xaf\\xae\\x66\\x0a\\x30\\xed\\x48\\xd7\\x02\\xcc\\x31\\x28\\xc6\\x33\\xb4\\xf1\\x90\\x60\\xa0\\x57\\x81\\x01\\x72\\x9e\\xe9\\x79\\xf7\\x90\\xf4\\x5b\\xdb\\xb5\\xfe\\x1a\\x8a\\x62\\xf0\\x1a\\x61\\xa3\\x1d\\x61\\xaf\\x07\\x03\\x04\\x50\\xfa\\x04\\x17\\x32\\x3e\\x94\\x07\\xbc\\x76\\xe7\\x31\\x30\\xe7\\xc6\\x9d\\x62\\xe6\\xa7\"},\n{{0x0c,0xd7,0xaa,0x7d,0x60,0x5e,0x44,0xd5,0xff,0xb9,0x79,0x66,0xb2,0xcb,0x93,0xc1,0x89,0xe4,0xc5,0xa8,0x5d,0xb8,0x7f,0xad,0x7a,0xb8,0xd6,0x24,0x63,0xc5,0x9b,0x59,},{0x48,0x89,0x85,0x5f,0xe4,0x11,0x6b,0x49,0x13,0x92,0x7f,0x47,0xf2,0x27,0x3b,0xf5,0x59,0xc3,0xb3,0x94,0xa9,0x83,0x63,0x1a,0x25,0xae,0x59,0x70,0x33,0x18,0x5e,0x46,},{0xbf,0x91,0x15,0xfd,0x3d,0x02,0x70,0x6e,0x39,0x8d,0x4b,0xf3,0xb0,0x2a,0x82,0x67,0x4f,0xf3,0x04,0x15,0x08,0xfd,0x39,0xd2,0x9f,0x86,0x7e,0x50,0x16,0x34,0xb9,0x26,0x1f,0x51,0x6a,0x79,0x4f,0x98,0x73,0x8d,0x7c,0x70,0x13,0xa3,0xf2,0xf8,0x58,0xff,0xdd,0x08,0x04,0x7f,0xb6,0xbf,0x3d,0xdd,0xfb,0x4b,0x4f,0x4c,0xbe,0xef,0x30,0x03,},\"\\x28\\xa5\\x5d\\xda\\x6c\\xd0\\x84\\x4b\\x65\\x77\\xc9\\xd6\\xda\\x07\\x3a\\x4d\\xc3\\x5c\\xbc\\x98\\xac\\x15\\x8a\\xb5\\x4c\\xf8\\x8f\\xd2\\x0c\\xc8\\x7e\\x83\\xc4\\xbb\\xa2\\xd7\\x4d\\x82\\xce\\x0f\\x48\\x54\\xec\\x4d\\xb5\\x13\\xde\\x40\\x04\\x65\\xaa\\xa5\\xee\\xe7\\x90\\xbc\\x84\\xf1\\x63\\x37\\x07\\x2d\\x3a\\x91\\xcd\\xe4\\x0d\\x6e\\x0d\\xf1\\xba\\x0c\\xc0\\x64\\x5f\\x5d\\x5c\\xbb\\xb6\\x42\\x38\\x1d\\x7b\\x9e\\x21\\x1d\\x25\\x26\\x7a\\x8a\\xcf\\x77\\xd1\\xed\\xb6\\x9c\\x3a\\x63\\x0f\\x5b\\x13\\x3d\\x24\\xf0\\x46\\xa8\\x1b\\xf2\\x2f\\xf0\\x3b\\x31\\xd8\\x44\\x7e\\x12\\xc3\\xf7\\xb7\\x71\\x14\\xa7\\x0c\\xbd\\x20\\xbb\\xd0\\x8b\\x0b\\x38\\x27\\xa6\\xbb\\xcf\\x90\\x40\\x9e\\x34\\x44\\x47\\xa7\\xfb\\xc5\\x9b\\xdd\\x97\\xd7\\x29\\x07\\x1f\\x8d\\x71\\xdc\\xc3\\x3e\\x6e\\xf2\\xcb\\xab\\x1d\\x41\\x1e\\xdf\\x13\\x73\\x4d\\xb1\\xdd\\x97\\x03\\x27\\x6f\\x5e\\xb2\\xd6\\xaa\\x2c\\xb8\\x95\\x2d\\xd6\\x71\\x2b\\xfa\\xe8\\x09\\xce\\x08\\xc3\\xaa\\x50\\x2b\\x81\\x35\\x71\\x3f\\xac\\x0a\\x9c\\x25\\xb1\\xd4\\x5b\\x6a\\x58\\x31\\xe0\\x24\\x21\\xbb\\xa6\\x5b\\x81\\xa5\\x96\\xef\\xa2\\x4b\\x05\\x76\\xbd\\x1d\\xc7\\xfd\\xfb\\x49\\xbe\\x76\\x28\\x75\\xe8\\x1b\\xd5\\x40\\x72\\x2b\\xc0\\x61\\x40\\xb9\\xaa\\x2e\\xf7\\xb8\\x4a\\x80\\x1e\\x41\\xde\\xd6\\x8d\\x45\\x46\\xac\\x48\\x73\\xd9\\xe7\\xce\\xd6\\x49\\xb6\\x4f\\xad\\xaf\\x0b\\x5c\\x4b\\x6e\\xb8\\xd0\\x36\\x31\\x52\\x33\\xf4\\x32\\x6c\\xa0\\x1e\\x03\\x39\\x30\\x50\\xcd\\x02\\x7c\\x24\\xf6\\x73\\x03\\xfb\\x84\\x6b\\xd2\\xc6\\xb3\\xdb\\xa0\\x6b\\xed\\x0d\\x59\\xa3\\x62\\x89\\xd2\\x4b\\xd6\\x48\\xf7\\xdb\\x0b\\x3a\\x81\\x34\\x66\\x12\\x59\\x3e\\x3d\\xdd\\x18\\xc5\\x57\"},\n{{0x33,0x37,0x1d,0x9e,0x89,0x2f,0x98,0x75,0x05,0x2a,0xc8,0xe3,0x25,0xba,0x50,0x5e,0x74,0x77,0xc1,0xac,0xe2,0x4b,0xa7,0x82,0x26,0x43,0xd4,0x3d,0x0a,0xce,0xf3,0xde,},{0x35,0x92,0x9b,0xde,0xd2,0x7c,0x24,0x9c,0x87,0xd8,0xb8,0xd8,0x2f,0x59,0x26,0x0a,0x57,0x53,0x27,0xb5,0x46,0xc3,0xa1,0x67,0xc6,0x9f,0x59,0x92,0xd5,0xb8,0xe0,0x06,},{0x98,0x5c,0xa4,0x46,0xdd,0xc0,0x07,0x82,0x7c,0xc8,0xf2,0x85,0x2c,0xbd,0x81,0x15,0xef,0x8c,0x59,0x75,0xe9,0xd7,0xce,0x96,0xd7,0x4d,0xfe,0xd8,0x59,0xaa,0x14,0xa4,0xc1,0x52,0x54,0x00,0x6b,0xea,0x5e,0x08,0x35,0x9e,0xfe,0x26,0x25,0xd7,0x15,0xe0,0x89,0x7e,0xe5,0xa1,0x6f,0x15,0x12,0x03,0xbe,0x50,0x10,0x41,0x86,0x37,0xde,0x05,},\"\\x27\\xa3\\x2e\\xfb\\xa2\\x82\\x04\\xbe\\x59\\xb7\\xff\\x5f\\xe4\\x88\\xca\\x15\\x8a\\x91\\xd5\\x98\\x60\\x91\\xec\\xc4\\x45\\x8b\\x49\\xe0\\x90\\xdd\\x37\\xcb\\xfe\\xde\\x7c\\x0f\\x46\\x18\\x6f\\xab\\xcb\\xdf\\xf7\\x8d\\x28\\x44\\x15\\x58\\x08\\xef\\xff\\xd8\\x73\\xed\\x9c\\x92\\x61\\x52\\x6e\\x04\\xe4\\xf7\\x05\\x0b\\x8d\\x7b\\xd2\\x67\\xa0\\xfe\\x3d\\x5a\\x44\\x93\\x78\\xd5\\x4a\\x4f\\xeb\\xbd\\x2f\\x26\\x82\\x43\\x38\\xe2\\xaa\\xaf\\x35\\xa3\\x2f\\xf0\\xf6\\x25\\x04\\xbd\\xa5\\xc2\\xe4\\x4a\\xbc\\x63\\x15\\x9f\\x33\\x6c\\xf2\\x5e\\x6b\\xb4\\x0d\\xdb\\x7d\\x88\\x25\\xdf\\xf1\\x8f\\xd5\\x1f\\xc0\\x19\\x51\\xea\\xed\\xcd\\x33\\x70\\x70\\x07\\xe1\\x20\\x3c\\xa5\\x8b\\x4f\\x7d\\x24\\x2f\\x81\\x66\\xa9\\x07\\xe0\\x99\\x93\\x2c\\x00\\x1b\\xfb\\x1e\\xc9\\xa6\\x1e\\x0e\\xf2\\xda\\x4e\\x84\\x46\\xaf\\x20\\x82\\x01\\x31\\x5d\\x69\\x68\\x17\\x10\\xd4\\x25\\xd2\\x40\\x0c\\x38\\x7d\\x7b\\x9d\\xf3\\x21\\xa4\\xae\\xc6\\x02\\xb9\\xc6\\x56\\xc3\\xe2\\x31\\x0b\\xff\\x87\\x56\\xd1\\x8b\\x80\\x21\\x34\\xb1\\x56\\x04\\xf4\\xed\\xc1\\x11\\x14\\x9a\\x98\\x79\\xe3\\x12\\x41\\xdd\\x34\\xf7\\x02\\xf4\\xc3\\x49\\x61\\x7b\\x13\\x52\\x97\\x69\\xa7\\x72\\xf5\\xe5\\x2a\\x89\\xc0\\x98\\xe0\\xdc\\xa5\\x92\\x06\\x67\\x89\\x3a\\x25\\x00\\x61\\xb1\\x79\\x91\\x62\\x6e\\xb9\\x31\\x92\\x98\\x68\\x5b\\xe4\\x6b\\x6a\\x8b\\x68\\x42\\x24\\x44\\xfa\\x5a\\x36\\xbc\\xf3\\xa6\\x87\\xe2\\xec\\xcb\\x93\\x22\\xc8\\x7d\\xc8\\x01\\x65\\xda\\x89\\x89\\x30\\x85\\x0b\\x98\\xfc\\x86\\x3c\\xad\\xa1\\xaa\\x99\\xc6\\xd6\\x1c\\x45\\x1b\\x9c\\xcf\\x48\\x74\\xc7\\xf0\\xe7\\x5b\\x0a\\x0c\\x60\\x2f\\x04\\x48\\x12\\xc7\\x17\\x65\\xad\\xaf\\x02\\x02\\x53\\x95\\xb0\"},\n{{0xbe,0xed,0xb8,0x07,0x3d,0xf5,0x8f,0x8c,0x1b,0xff,0xbd,0xbd,0x77,0xec,0x7d,0xec,0xb2,0xc8,0x2a,0x9b,0xab,0xec,0xef,0xc0,0x33,0x15,0x07,0xbd,0xc2,0xc2,0xa7,0xe7,},{0xb2,0x7e,0x90,0x8b,0x80,0x5e,0x29,0x6f,0xc3,0x0d,0x2e,0x47,0x4b,0x06,0x0c,0xd5,0x0c,0x0f,0x6f,0x52,0x0b,0x36,0x71,0x71,0x21,0x83,0xbd,0x89,0xd4,0xe7,0x33,0xe9,},{0x8c,0x89,0x0c,0xcc,0xad,0xc7,0x76,0x0e,0x1e,0x82,0xe4,0x3c,0x44,0xb3,0xdc,0x0b,0x68,0x5a,0x48,0xb4,0x79,0xae,0x13,0xcc,0x0a,0x6b,0x05,0x57,0xd0,0xfb,0x1c,0xba,0xbb,0xa6,0x3d,0x2a,0x96,0x84,0x34,0x12,0xea,0x8d,0x36,0xc5,0x0a,0xcb,0xf5,0x2b,0x92,0xcf,0xb2,0xdc,0xe4,0x9d,0xc4,0x8a,0xf6,0xdd,0xcf,0x8e,0xe4,0x7a,0x86,0x08,},\"\\x35\\xca\\x57\\xf0\\xf9\\x15\\xe5\\x20\\x9d\\x54\\xea\\x4b\\x87\\x1f\\xfb\\x58\\x53\\x54\\xdf\\x1b\\x4a\\x4a\\x17\\x96\\xfb\\xe4\\xd6\\x22\\x7d\\x3e\\x1a\\xba\\x51\\x71\\xed\\x03\\x91\\xa7\\x9e\\x83\\xe2\\x4d\\x82\\xfd\\xaf\\xd1\\x5c\\x17\\xb2\\x8b\\xf6\\xc9\\x4d\\x61\\x8c\\x74\\xd6\\x52\\x64\\xe5\\x8f\\xaa\\xac\\xd2\\x90\\x28\\x72\\xfd\\xd0\\xef\\xa2\\x2e\\x8d\\x2d\\x7c\\xe8\\xe3\\xb8\\x19\\x7f\\x0c\\x36\\x15\\xb0\\xa3\\x85\\x23\\x5f\\xa9\\xfd\\x8e\\x45\\x64\\xee\\x6e\\x6b\\x16\\x50\\xb4\\xcf\\xb9\\x4d\\x87\\x2c\\x80\\x5c\\x32\\xd4\\xf3\\xa1\\x8f\\x96\\x64\\x61\\xd3\\xad\\xbb\\x60\\x5f\\xa5\\x25\\x88\\x4f\\x8e\\xb1\\x97\\x62\\x73\\x96\\xba\\x4d\\x99\\x5d\\x78\\xac\\x02\\x94\\x8a\\x0e\\xaa\\xbb\\x58\\x51\\x9b\\x9a\\x8e\\x2e\\x79\\x85\\xcd\\x1d\\xe2\\xc7\\x1d\\x89\\x18\\xd9\\x6a\\x01\\x68\\x66\\x0c\\xe1\\x7c\\xdd\\xf3\\x64\\xe3\\xec\\x0d\\x4b\\xd9\\x0f\\x21\\x04\\x75\\x1a\\x19\\x27\\xee\\x1d\\x23\\xf3\\xe7\\xa6\\x98\\x40\\xed\\x04\\x0b\\x00\\xe5\\xf6\\xe4\\x86\\x6e\\xc5\\x88\\x13\\x14\\x9c\\xc3\\x82\\xae\\xbf\\x61\\x62\\x60\\x8c\\x79\\x57\\x4d\\x55\\x3f\\x47\\x23\\x0e\\x92\\x4a\\x0e\\xf1\\xeb\\xf5\\x5d\\x8e\\x1a\\x52\\xab\\xb6\\x2a\\x2d\\x7a\\xc8\\x60\\x27\\xc7\\xc0\\x3c\\xc8\\x3f\\xa1\\x94\\x9d\\xa2\\x9e\\x2f\\x30\\x37\\xab\\x98\\x6f\\xd2\\xff\\xfe\\x65\\x0e\\x31\\x49\\xba\\xba\\xe5\\xa5\\x0b\\x1e\\xe9\\x69\\x6f\\x3b\\xab\\xec\\x72\\xe2\\x96\\x97\\xc8\\x24\\x22\\x81\\x4d\\x27\\x20\\x85\\x50\\x0f\\xd8\\x37\\xfe\\x3c\\x7a\\x97\\x3e\\xf4\\xc1\\x69\\xaf\\x12\\xdd\\x7f\\x02\\x70\\x06\\x20\\xbb\\x04\\x5b\\xdb\\xf8\\x46\\x23\\xf3\\x26\\x35\\x05\\x70\\xb3\\xca\\xdb\\xc9\\xae\\xa4\\x20\\x0b\\x28\\x28\\x7e\\x17\\xab\"},\n{{0x91,0x84,0xef,0x61,0x88,0x16,0x83,0x25,0x92,0xbc,0x8e,0xb3,0x5f,0x4f,0xfd,0x4f,0xf9,0x8d,0xfb,0xf7,0x77,0x6c,0x90,0xf2,0xaa,0xd2,0x12,0xce,0x7e,0x03,0x35,0x1e,},{0x68,0x7b,0x77,0x26,0x01,0x0d,0x9b,0xde,0x2c,0x90,0xe5,0x73,0xcd,0x2a,0x2a,0x70,0x2f,0xf2,0x8c,0x4a,0x2a,0xf7,0x0a,0xfc,0x73,0x15,0xc9,0x4d,0x57,0x56,0x01,0xe5,},{0xb3,0xc2,0x4e,0x75,0x13,0x2c,0x56,0x34,0x75,0x42,0x2d,0x5e,0xa4,0x12,0xb5,0xc1,0xe8,0xe6,0xe5,0xea,0x1c,0x08,0xea,0xd1,0x39,0x3c,0x41,0x2d,0xa1,0x34,0xc9,0xa1,0x63,0x82,0x84,0xea,0x7e,0x2c,0xa0,0x32,0xfe,0x3d,0x3e,0x32,0xa9,0x06,0x6a,0x8c,0x88,0x39,0x90,0x3f,0x6e,0xf4,0x6e,0x96,0x6b,0xb5,0xe4,0x92,0xd8,0xc2,0xaa,0x00,},\"\\x72\\x9e\\xb7\\xe5\\x4a\\x9d\\x00\\xc5\\x86\\x17\\xaf\\x18\\xc3\\x45\\xb8\\xdc\\x6e\\x5b\\x4e\\x0f\\x57\\xde\\x2f\\x3c\\x02\\xe5\\x4a\\x2e\\xc8\\xf1\\x42\\x5e\\xc2\\xe2\\x40\\x77\\x5b\\x5a\\xb0\\xc1\\x0f\\x84\\xac\\x8b\\xaf\\xda\\x45\\x84\\xf7\\xe2\\x1c\\x65\\x5f\\xae\\xcd\\x80\\x30\\xa9\\x89\\x06\\xbd\\x68\\x39\\x8f\\x26\\xb5\\xd5\\x8d\\x92\\xb6\\xcf\\x04\\x5e\\x9b\\xd9\\x74\\x3c\\x74\\xc9\\xa3\\x42\\xec\\x61\\xce\\x57\\xf3\\x7b\\x98\\x1e\\xac\\x4d\\x8b\\xf0\\x34\\x60\\x88\\x66\\xe9\\x85\\xbb\\x68\\x68\\x6a\\x68\\xb4\\xa2\\xaf\\x88\\xb9\\x92\\xa2\\xa6\\xd2\\xdc\\x8c\\xe8\\x8b\\xfb\\x0a\\x36\\xcf\\x28\\xbb\\xab\\x70\\x24\\xab\\xfa\\x2b\\xea\\x53\\x31\\x3b\\x66\\xc9\\x06\\xf4\\xf7\\xcf\\x66\\x97\\x0f\\x54\\x00\\x95\\xbd\\x01\\x04\\xaa\\x49\\x24\\xdd\\x82\\xe1\\x54\\x13\\xc2\\x26\\x79\\xf8\\x47\\xe4\\x8c\\xd0\\xc7\\xec\\x1f\\x67\\x7e\\x00\\x5f\\xec\\x01\\x77\\xfb\\xd5\\xc5\\x59\\xfc\\x39\\xad\\xd6\\x13\\x99\\x1f\\xba\\xea\\xe4\\xd2\\x4d\\x39\\xd3\\x09\\xef\\x74\\x64\\x7f\\x81\\x92\\xcc\\x4c\\x62\\xd0\\x64\\x20\\x28\\xc7\\x6a\\x1b\\x95\\x1f\\x6b\\xc9\\x63\\x9d\\xeb\\x91\\xec\\xc0\\x8b\\xe6\\x04\\x3f\\x21\\x09\\x70\\x5a\\x42\\xc7\\xea\\xe7\\x12\\x64\\x9d\\x91\\xd9\\x6c\\xcb\\xbf\\xb6\\x3d\\x8d\\x0d\\xd6\\xdd\\x11\\x21\\x60\\xf6\\x13\\x61\\xec\\xdc\\x67\\x93\\x92\\x9c\\xa9\\xae\\xf9\\xab\\x56\\x94\\x4a\\x6f\\xa4\\xa7\\xdf\\x1e\\x27\\x9e\\xaf\\x58\\xce\\x83\\x23\\xa9\\xcf\\x62\\xc9\\x42\\x79\\xff\\xf7\\x44\\x0f\\xbc\\x93\\x6b\\xaa\\x61\\x48\\x9c\\x99\\x93\\x30\\xba\\xdc\\xb9\\xfc\\x0e\\x18\\x4b\\xc5\\x09\\x3f\\x33\\x0c\\xbb\\x24\\x2f\\x71\\xfb\\x37\\x87\\x38\\xfe\\xa1\\x05\\x11\\xdd\\x43\\x83\\x64\\xd7\\xf7\\x6b\\xcc\"},\n{{0x35,0x4e,0x13,0x15,0x2e,0xe1,0xfe,0x74,0x8a,0x12,0x52,0x20,0x4c,0x65,0x27,0xbd,0xc1,0xb1,0xeb,0x2e,0xb5,0x36,0x78,0x15,0x0e,0x63,0x59,0x92,0x47,0x08,0xd8,0x12,},{0xd4,0x5f,0xf6,0xc5,0xfb,0x83,0xe7,0xbb,0x96,0x69,0xaa,0x89,0x60,0xde,0xb7,0xdb,0xc6,0x65,0xc9,0x88,0x43,0x9b,0x6c,0x9e,0xf6,0x72,0xc6,0x81,0x1d,0xc8,0xbc,0xf6,},{0xde,0x2b,0x46,0xe6,0x5f,0x3d,0xec,0xef,0x34,0x33,0x2e,0x50,0x0f,0x2e,0x11,0x30,0x6f,0xbd,0xcf,0x1b,0xe8,0x5a,0x1c,0x1e,0xe6,0x8b,0xa3,0x04,0x5d,0xce,0xc2,0xc7,0xbe,0x60,0x8d,0x22,0x92,0x7d,0xa1,0xf4,0x4c,0x0e,0x20,0x83,0xae,0x62,0x2c,0xf3,0xc2,0x9d,0x89,0x38,0x87,0x99,0x4e,0xfc,0xfa,0x2c,0xa5,0x94,0xf5,0x05,0x1f,0x03,},\"\\x8e\\x5f\\xcc\\xf6\\x6b\\x1b\\xa6\\x16\\x9c\\xb6\\x85\\x73\\x3d\\x9d\\x0e\\x01\\x90\\x36\\x1c\\x90\\xbc\\xab\\x95\\xc1\\x63\\x28\\x5a\\x97\\xfe\\x35\\x6d\\x2b\\xdc\\xde\\x3c\\x93\\x80\\x26\\x88\\x05\\xa3\\x84\\xd0\\x63\\xda\\x09\\xcc\\xd9\\x96\\x9c\\xc3\\xff\\x74\\x31\\xe6\\x0a\\x8e\\x9f\\x86\\x9c\\xd6\\x2f\\xaa\\x0e\\x35\\x61\\x51\\xb2\\x80\\xbc\\x52\\x6e\\x57\\x7c\\x2c\\x53\\x8c\\x9a\\x72\\x4d\\xc4\\x8b\\xf8\\x8b\\x70\\x32\\x1d\\x7e\\x1e\\xee\\xdb\\x3c\\x4a\\xf7\\x06\\x74\\x8c\\x94\\x2e\\x67\\xbd\\xab\\xdb\\x41\\xbe\\xc2\\x97\\x7b\\x15\\x23\\x06\\x9e\\x31\\xe2\\x9b\\x76\\x30\\x02\\x88\\xf8\\x8a\\x51\\xb3\\x84\\xb8\\x0c\\xc2\\x52\\x6f\\x16\\x79\\x34\\x0d\\xde\\xc3\\x88\\x1f\\x5c\\xd2\\x8b\\x03\\x78\\xd9\\xcd\\x0a\\x81\\x2b\\x68\\xdd\\x3f\\x68\\xf7\\xa2\\x3e\\x1b\\x54\\xbe\\xe7\\x46\\x6a\\xc7\\x65\\xcf\\x38\\xdf\\x04\\xd6\\x74\\x41\\xdf\\xa4\\x98\\xc4\\xbf\\xfc\\x52\\x04\\x5f\\xa6\\xd2\\xdb\\xcd\\xbf\\xa3\\x3d\\xfa\\xa7\\x76\\x44\\xff\\xcc\\xef\\x0d\\xec\\xdb\\x67\\x90\\xc7\\x0a\\x0d\\x73\\x4e\\xc2\\x87\\xcc\\x33\\x8c\\xb5\\xa9\\x09\\xc0\\x05\\x51\\x89\\x30\\x11\\x69\\xc4\\xf7\\x70\\x2c\\x05\\xc0\\x91\\x1a\\x27\\xb1\\x6e\\xf9\\xed\\x93\\x4f\\xa6\\xa0\\xca\\x7b\\x13\\xe4\\x13\\x52\\x34\\x22\\x53\\x56\\x47\\x96\\x80\\x30\\xed\\xc4\\x0c\\xd7\\x3e\\x7d\\x6b\\x34\\x5b\\x75\\x81\\xf4\\x38\\x31\\x6d\\x68\\xe3\\xcd\\x29\\x2b\\x84\\x6d\\x3f\\x4f\\x7c\\x48\\x62\\xbc\\x7e\\x6b\\x3f\\xb8\\x9a\\x27\\xf6\\xf6\\x0c\\xd7\\xdb\\x2e\\x34\\xec\\x9a\\xae\\x10\\x13\\xfe\\x37\\xac\\xff\\x8a\\xd8\\x88\\xcb\\x9a\\x59\\x3e\\xf5\\xe6\\x21\\xea\\xe5\\x18\\x6c\\x58\\xb3\\x1d\\xcf\\xde\\x22\\x87\\x0e\\x33\\x6d\\x33\\xf4\\x40\\xf6\\xb8\\xd4\\x9a\"},\n{{0x7f,0xf6,0x2d,0x4b,0x3c,0x4d,0x99,0xd3,0x42,0xd4,0xbb,0x40,0x1d,0x72,0x6b,0x21,0xe9,0x9f,0x4e,0xf5,0x92,0x14,0x9f,0xc3,0x11,0xb6,0x87,0x61,0xf5,0x56,0x7f,0xf6,},{0x7f,0xdf,0xdb,0x9e,0xca,0x29,0xd3,0xf0,0x1d,0x94,0x86,0xd7,0xe1,0x12,0xce,0x03,0xaa,0x37,0xb9,0x13,0x26,0xa4,0x28,0x3b,0x9c,0x03,0x99,0x9c,0x5e,0xda,0x09,0x9a,},{0x05,0x8f,0x79,0x92,0x7f,0xbf,0x61,0x78,0x72,0x48,0x15,0xc7,0xb1,0x1c,0x63,0xba,0xaa,0x90,0xbc,0xc1,0x5d,0x72,0x72,0xbe,0x08,0x2f,0x8a,0x91,0x41,0x86,0x1c,0x81,0x64,0x33,0x05,0x5f,0x6c,0xf6,0x49,0x14,0x24,0x85,0x3f,0x9e,0xc7,0x8b,0xb9,0x1a,0xce,0x91,0x3a,0x93,0x41,0x1b,0x4e,0x5e,0xd5,0x8b,0xc4,0xba,0x57,0x15,0xc6,0x0a,},\"\\x99\\xc4\\x4c\\x79\\x65\\x72\\xa4\\x82\\x3f\\xc6\\xc3\\x80\\x77\\x30\\x83\\x91\\x73\\x77\\x4c\\x05\\xdb\\xfc\\x14\\x92\\xed\\x0d\\x00\\x50\\x9a\\x95\\xa1\\xde\\x37\\x27\\x4b\\x31\\x35\\xed\\x04\\x56\\xa1\\x71\\x8e\\x57\\x65\\x97\\xdc\\x13\\xf2\\xa2\\xab\\x37\\xa4\\x5c\\x06\\xcb\\xb4\\xa2\\xd2\\x2a\\xfa\\xd4\\xd5\\xf3\\xd9\\x0a\\xb3\\xd8\\xda\\x4d\\xcd\\xaa\\x06\\xd4\\x4f\\x22\\x19\\x08\\x84\\x01\\xc5\\xdc\\xee\\xe2\\x60\\x55\\xc4\\x78\\x2f\\x78\\xd7\\xd6\\x3a\\x38\\x06\\x08\\xe1\\xbe\\xf8\\x9e\\xee\\xf3\\x38\\xc2\\xf0\\x89\\x7d\\xa1\\x06\\xfa\\xfc\\xe2\\xfb\\x2e\\xbc\\x5d\\xb6\\x69\\xc7\\xc1\\x72\\xc9\\xcf\\xe7\\x7d\\x31\\x09\\xd2\\x39\\xfe\\x5d\\x00\\x5c\\x8e\\xe7\\x51\\x51\\x1b\\x5a\\x88\\x31\\x7c\\x72\\x9b\\x0d\\x8b\\x70\\xb5\\x2f\\x6b\\xd3\\xcd\\xa2\\xfe\\x86\\x5c\\x77\\xf3\\x6e\\x4f\\x1b\\x63\\x5f\\x33\\x6e\\x03\\x6b\\xd7\\x18\\xbe\\xc9\\x0e\\xe7\\x8a\\x80\\x28\\x11\\x51\\x0c\\x40\\x58\\xc1\\xba\\x36\\x40\\x17\\x25\\x3a\\xa8\\x42\\x92\\x2e\\x1d\\xd7\\xd7\\xa0\\xf0\\xfc\\x9c\\x69\\xe4\\x3f\\xc4\\xea\\xef\\xfa\\xaf\\x1a\\xe5\\xfa\\x5d\\x2d\\x73\\xb4\\x30\\x79\\x61\\x7b\\xab\\xa0\\x30\\x92\\x3f\\xe5\\xb1\\x3d\\x2c\\x1c\\x4f\\xe6\\xfa\\xc3\\xf2\\xdb\\x74\\xe2\\x02\\x0a\\x73\\x4b\\x61\\x21\\xa0\\x30\\x2f\\xce\\x82\\x0b\\xa0\\x58\\x0c\\xe6\\x13\\x53\\x48\\xfd\\xf0\\x63\\x2e\\x00\\x08\\xdf\\x03\\xee\\x11\\x21\\x68\\xf5\\xcf\\xa0\\x03\\x7a\\x26\\xa1\\xf6\\x9b\\x1f\\x13\\x17\\xed\\xf2\\xa3\\xab\\x36\\x74\\x55\\xa7\\x7e\\x00\\x69\\x12\\x15\\xd7\\xaa\\x31\\x33\\xc2\\x15\\x9d\\x3d\\xa2\\xb1\\x34\\xcf\\x04\\xf0\\xde\\xfb\\xf0\\x7a\\x60\\x64\\x01\\x1e\\x64\\xdd\\x14\\xd4\\xf8\\xf0\\x64\\x35\\x66\\x55\\x42\\x88\\x04\\xc2\\x77\\x1a\"},\n{{0x6c,0xab,0xad,0xd0,0x3f,0x8a,0x2e,0x6e,0xba,0xb9,0x6a,0x74,0xf8,0x0e,0x18,0x16,0x4e,0x4d,0x1b,0x6b,0xaa,0x67,0x8f,0x5a,0x82,0xe2,0x56,0x04,0xaf,0x98,0x9a,0xaf,},{0x2a,0x4a,0x31,0x79,0x56,0x41,0x94,0xe0,0x01,0x00,0xc1,0x8b,0xc3,0x53,0x51,0xd8,0xb1,0x35,0xbb,0xae,0x5b,0x32,0xb2,0x8f,0xce,0x1d,0x7b,0x67,0x66,0xca,0x4b,0x32,},{0x4e,0x65,0xc6,0xc1,0xd4,0x93,0x04,0x5e,0x8a,0x92,0x50,0xe3,0x97,0xc1,0xd1,0xd3,0x0f,0xfe,0xd2,0x4d,0xb6,0x6a,0x89,0x61,0xaa,0x45,0x8f,0x8f,0x0f,0xcb,0x76,0x0c,0x39,0xfe,0x86,0x57,0xd7,0xab,0x8f,0x84,0x00,0x0b,0x96,0xd5,0x19,0x71,0x7c,0xff,0x71,0xf9,0x26,0x52,0x2c,0x1e,0xfe,0xc7,0xf8,0xb2,0x62,0x4e,0xae,0x55,0xf6,0x0c,},\"\\x27\\x9f\\x78\\xcf\\x3b\\x9c\\xcf\\xc6\\xe1\\xb0\\x1e\\x1a\\x82\\xf5\\x0e\\xd1\\x72\\xe9\\xa8\\xe1\\xe7\\x02\\xbb\\x15\\x66\\x1d\\xd7\\xdc\\x3a\\x45\\x6f\\xf7\\xa7\\xa7\\xfd\\xfb\\x08\\x1d\\xb3\\x86\\x70\\x79\\x63\\x0c\\x7f\\x70\\xfd\\x75\\x32\\x92\\xec\\x60\\xec\\xbf\\x50\\x63\\x2e\\x9a\\xa4\\x5b\\x99\\x65\\x05\\xc6\\x6e\\x6d\\xc3\\xc6\\xae\\x89\\x2e\\x21\\xb6\\xa8\\x70\\x5e\\x4b\\xba\\xe8\\xf1\\x6a\\x33\\x78\\x55\\x4b\\x31\\xfd\\xb0\\x13\\x9d\\xcd\\x15\\xc9\\x6a\\x8a\\x7e\\x4b\\x88\\x75\\x6a\\x86\\xd1\\x8d\\xb5\\xdc\\x74\\xfd\\x76\\x91\\x19\\x7d\\xd8\\x8e\\x2c\\x7d\\x5d\\xf5\\x2b\\x04\\x93\\x44\\xcd\\xc4\\x77\\xc9\\xcd\\x7e\\x89\\xed\\xa9\\x9c\\xcf\\xb1\\xd0\\x08\\x14\\xd0\\x15\\x2b\\x96\\x54\\xdf\\x32\\x79\\x37\\x2c\\xa5\\xf1\\x8b\\x1c\\x94\\x6f\\x28\\x94\\xa7\\x6b\\x07\\x9d\\xdb\\x1c\\x3c\\xd6\\x1f\\xbb\\x96\\x9a\\xee\\xc9\\x19\\x3a\\x6b\\x88\\xfb\\x7d\\x13\\x6c\\x07\\xf9\\x82\\x1e\\x5c\\x10\\x74\\xb4\\xe9\\x3b\\xca\\xf6\\xfa\\x14\\xd0\\xd1\\xd7\\xe1\\x70\\x75\\x89\\xd7\\x7e\\xc1\\x33\\x72\\x06\\xe5\\x3a\\x1f\\x06\\xcc\\x26\\x67\\x2f\\xf9\\x5c\\x13\\xd5\\xff\\x44\\x47\\x66\\x93\\x1b\\xa3\\x0a\\x0a\\xfd\\xcd\\xad\\xd2\\x09\\x8e\\x9c\\x41\\xfd\\x87\\xa3\\xf2\\x3c\\xd1\\x6d\\xbb\\x0e\\xfb\\xf8\\x09\\x2c\\xe3\\x3e\\x32\\x7f\\x42\\x61\\x09\\x90\\xe1\\xce\\xe6\\xcb\\x8e\\x54\\x95\\x1a\\xa0\\x81\\xe6\\x97\\x65\\xae\\x40\\x09\\xae\\xed\\x75\\x8e\\x76\\x8d\\xe5\\x0c\\x23\\xd9\\xa2\\x2b\\x4a\\x06\\xdc\\x4d\\x19\\xfc\\x8c\\xbd\\x0c\\xde\\xf4\\xc9\\x83\\x46\\x17\\x55\\xd0\\xa3\\xb5\\xd6\\xa9\\xc1\\x22\\x53\\xe0\\x95\\x68\\x33\\x9f\\xf7\\xe5\\xf7\\x8c\\x5f\\xdf\\x7e\\xc8\\x9f\\x91\\x86\\xa6\\x21\\xa8\\xc0\\xee\\xd1\\x1b\\x67\\x02\\x2e\"},\n{{0x0f,0xa0,0xc3,0x2c,0x3a,0xe3,0x4b,0xe5,0x1b,0x92,0xf9,0x19,0x45,0x40,0x59,0x81,0xa8,0xe2,0x02,0x48,0x85,0x58,0xa8,0xe2,0x20,0xc2,0x88,0xc7,0xd6,0xa5,0x53,0x2d,},{0xd6,0xae,0xe6,0x2b,0xd9,0x1f,0xc9,0x45,0x36,0x35,0xff,0xcc,0x02,0xb2,0xf3,0x8d,0xca,0xb1,0x32,0x85,0x14,0x03,0x80,0x58,0x0c,0xcd,0xff,0x08,0x65,0xdf,0x04,0x92,},{0x7e,0x9a,0xb8,0x5e,0xe9,0x4f,0xe4,0xb3,0x5d,0xcb,0x54,0x53,0x29,0xa0,0xef,0x25,0x92,0x3d,0xe5,0xc9,0xdc,0x23,0xe7,0xdf,0x1a,0x7e,0x77,0xab,0x0d,0xcf,0xb8,0x9e,0x03,0xf4,0xe7,0x85,0xca,0x64,0x29,0xcb,0x2b,0x0d,0xf5,0x0d,0xa6,0x23,0x0f,0x73,0x3f,0x00,0xf3,0x3a,0x45,0xc4,0xe5,0x76,0xcd,0x40,0xbd,0xb8,0x4f,0x1a,0xe0,0x01,},\"\\x53\\xf4\\x4b\\xe0\\xe5\\x99\\x7f\\xf0\\x72\\x64\\xcb\\x64\\xba\\x13\\x59\\xe2\\x80\\x1d\\xef\\x87\\x55\\xe6\\x4a\\x23\\x62\\xbd\\xda\\xf5\\x97\\xe6\\x72\\xd0\\x21\\xd3\\x4f\\xfa\\xce\\x6d\\x97\\xe0\\xf2\\xb1\\xf6\\xae\\x62\\x5f\\xd3\\x3d\\x3c\\x4f\\x6e\\x9f\\xf7\\xd0\\xc7\\x3f\\x1d\\xa8\\xde\\xfb\\x23\\xf3\\x24\\x97\\x5e\\x92\\x1b\\xb2\\x47\\x32\\x58\\x17\\x7a\\x16\\x61\\x25\\x67\\xed\\xf7\\xd5\\x76\\x0f\\x3f\\x3e\\x3a\\x6d\\x26\\xaa\\xab\\xc5\\xfd\\xe4\\xe2\\x04\\x3f\\x73\\xfa\\x70\\xf1\\x28\\x02\\x09\\x33\\xb1\\xba\\x3b\\x6b\\xd6\\x94\\x98\\xe9\\x50\\x3e\\xa6\\x70\\xf1\\xed\\x88\\x0d\\x36\\x51\\xf2\\xe4\\xc5\\x9e\\x79\\xca\\xbc\\x86\\xe9\\xb7\\x03\\x39\\x42\\x94\\x11\\x2d\\x5d\\x8e\\x21\\x3c\\x31\\x74\\x23\\xb5\\x25\\xa6\\xdf\\x70\\x10\\x6a\\x9d\\x65\\x8a\\x26\\x20\\x28\\xb5\\xf4\\x51\\x00\\xcb\\x77\\xd1\\x15\\x0d\\x8f\\xe4\\x61\\xee\\xd4\\x34\\xf2\\x41\\x01\\x5f\\x32\\x76\\xad\\x7b\\x09\\xa2\\x91\\xb4\\xa7\\xf3\\x5e\\x3c\\x30\\x05\\x1c\\xbf\\x13\\xb1\\xd4\\xa7\\xfa\\x0c\\x81\\xa5\\x0f\\x93\\x9e\\x7c\\x49\\x67\\x3a\\xfd\\xc8\\x78\\x83\\xc9\\xe3\\xe6\\x1f\\x5a\\x1d\\xf0\\x37\\x55\\x47\\x0f\\xda\\x74\\xbf\\x23\\xea\\x88\\x67\\x6b\\x25\\x8a\\x97\\xa2\\x80\\xd5\\xf9\\x0b\\x52\\xb7\\x14\\xb5\\x96\\x03\\x5b\\xae\\x08\\xc8\\xd0\\xfe\\x6d\\x94\\xf8\\x94\\x95\\x59\\xb1\\xf2\\x7d\\x71\\x16\\xcf\\x59\\xdd\\x3c\\xfb\\xf1\\x82\\x02\\xa0\\x9c\\x13\\xf5\\xc4\\xfb\\xc8\\xd9\\x72\\x25\\x49\\x28\\x87\\xd3\\x28\\x70\\xc2\\x29\\x7e\\x34\\xde\\xbd\\x98\\x76\\xd6\\xd0\\x1a\\xc2\\x7a\\x16\\xb0\\x88\\xb0\\x79\\x07\\x9f\\x2b\\x20\\xfe\\xb0\\x25\\x37\\xcd\\xa3\\x14\\xc4\\x3c\\xb2\\xdc\\xa3\\x71\\xb9\\xdf\\x37\\xed\\x11\\xec\\x97\\xe1\\xa7\\xa6\\x99\\x3a\"},\n{{0x7b,0x06,0xf8,0x80,0x26,0xfa,0x86,0xf3,0x9f,0xce,0x24,0x26,0xf6,0x7c,0xc5,0x99,0x6b,0xed,0xd0,0xcf,0xc4,0xb5,0xeb,0xb1,0xb5,0xe3,0xed,0xbb,0x47,0xe0,0x80,0xaa,},{0x3f,0x14,0x69,0xee,0x6a,0x2e,0x78,0x67,0xe2,0xe9,0x01,0x2d,0x40,0x2c,0xf5,0xa4,0x86,0x14,0x97,0xc0,0x1d,0xf8,0x79,0xa1,0xde,0xb1,0xc5,0x39,0x83,0x0b,0x58,0xde,},{0x42,0xf1,0x33,0xe3,0x4e,0x3e,0xb7,0x03,0x2a,0x13,0x3e,0xd7,0x81,0x53,0x7e,0xc6,0x2e,0x44,0xa5,0xce,0x83,0x81,0xe5,0xe0,0xbf,0x9e,0x13,0xa9,0x14,0xa4,0xb2,0xc7,0x57,0x81,0x1d,0x6d,0x3b,0x1e,0x86,0x67,0x24,0x24,0xea,0x42,0x30,0xd1,0x0f,0x7c,0x61,0x0a,0xbb,0x70,0x69,0xe6,0x1e,0x31,0x9b,0x40,0x66,0xa2,0xbd,0x7b,0xc9,0x00,},\"\\x71\\x17\\x5d\\x4e\\x21\\x72\\x12\\x97\\xd9\\x17\\x6d\\x81\\x7f\\x4e\\x78\\x5d\\x96\\x00\\xd9\\x23\\xf9\\x87\\xfe\\x0b\\x26\\xfd\\x79\\xd3\\x3a\\x5e\\xa5\\xd1\\xe8\\x18\\xb7\\x1f\\x0f\\x92\\xb8\\xc7\\x3a\\xfd\\xda\\xbd\\xcc\\x27\\xf6\\xd1\\x6e\\x26\\xaa\\xfa\\x87\\x4c\\xfd\\x77\\xa0\\x0e\\x06\\xc3\\x6b\\x04\\x14\\x87\\x58\\x2b\\xb9\\x33\\x76\\x0f\\x88\\xb4\\x19\\x12\\x73\\x45\\x77\\x6e\\xa4\\x18\\xf8\\x35\\x22\\x25\\x4f\\xed\\x33\\x81\\x9b\\xc5\\xc9\\x5f\\x8f\\x84\\x04\\xcc\\x14\\x4e\\xbf\\x14\\x86\\xc8\\x85\\x15\\x40\\x9d\\x34\\x33\\xaa\\xf5\\x19\\xd9\\x92\\x0f\\x52\\x56\\xe6\\x29\\x41\\x9e\\x9a\\x95\\x58\\x0a\\x35\\xb0\\x69\\xb8\\xd2\\x55\\x33\\xdf\\xcb\\xc9\\x8a\\xd3\\x64\\x04\\xa9\\x51\\x80\\x8e\\x01\\x37\\x8c\\x03\\x26\\x63\\x26\\xd1\\x20\\x04\\x69\\x75\\xfd\\xe0\\x7d\\xae\\xf3\\x26\\x6c\\xaa\\xcd\\x82\\x1c\\x14\\x03\\x49\\x9d\\x7f\\xdf\\x17\\xc0\\x33\\xc8\\xd8\\xc3\\xf2\\x8f\\x16\\x2b\\x5f\\x09\\xdf\\xda\\xca\\x06\\x28\\x5f\\x00\\xc6\\xcb\\x98\\x6d\\xfd\\xf5\\x15\\x1a\\xa6\\x63\\x96\\x08\\xb5\\xb1\\x3e\\x78\\xd6\\x5a\\x43\\x68\\x58\\x5b\\x16\\x13\\x87\\x54\\xfb\\xd1\\x13\\x83\\x5a\\x68\\x6c\\xd0\\x66\\xc2\\xb8\\x9b\\xb0\\x95\\x3c\\x24\\xd5\\x0e\\x77\\xbf\\x0f\\xc4\\x57\\xc1\\xe0\\xfc\\xf5\\xd4\\x4d\\xa8\\xdb\\x9a\\x88\\xf0\\x62\\xbe\\x3b\\x68\\x8d\\x5c\\xdc\\xff\\x1d\\x1c\\x00\\xe8\\x1e\\xc9\\xd4\\x13\\x88\\x22\\x95\\xb3\\x41\\xfe\\xe8\\xfa\\x42\\x7d\\xc1\\x09\\xad\\xeb\\x5f\\x28\\x4e\\xec\\x20\\x2f\\x1b\\xef\\x11\\x5b\\xf9\\x6b\\x17\\x82\\xd3\\xcc\\xde\\xb6\\x82\\xb6\\x9b\\xf9\\x2d\\x17\\x0c\\x00\\x7d\\x5d\\xf8\\x0e\\x1e\\xd9\\x62\\xf6\\x77\\xdc\\x24\\xa1\\x45\\xa1\\xe4\\xe8\\x29\\xe8\\xde\\xc0\\x10\\x4e\\x5f\\x78\\x36\\x59\\x44\"},\n{{0xc3,0xf5,0xe1,0x49,0x96,0x8a,0x24,0xf4,0xde,0x91,0x19,0x53,0x19,0x75,0xf4,0x43,0x01,0x5c,0xcc,0xa3,0x05,0xd7,0x11,0x9e,0xd4,0x74,0x9e,0x8b,0xf6,0xd9,0x4f,0xc7,},{0x39,0xaa,0xcc,0xdb,0x94,0x8a,0x40,0x38,0x53,0x8a,0x45,0x88,0x32,0x2f,0x80,0x6b,0xb1,0x29,0xb5,0x87,0x6c,0x4b,0xec,0x51,0x27,0x1a,0xfe,0x4f,0x49,0x69,0x00,0x45,},{0x5f,0xa2,0xb5,0x31,0x67,0x7b,0x00,0xb8,0x5b,0x0a,0x31,0x3c,0xbd,0x47,0x9f,0x55,0xf4,0xab,0x3e,0xc5,0xcf,0xce,0x5e,0x45,0x4d,0x2b,0x74,0x17,0x6c,0xcc,0x33,0x99,0xc8,0x99,0xf9,0xd6,0xb5,0x1e,0xd4,0xc1,0xe7,0x61,0x85,0xac,0x9f,0xe7,0x30,0xc4,0xb4,0x01,0x40,0x44,0xf7,0x04,0x11,0x85,0xbc,0x3c,0x85,0x72,0x2e,0xb2,0xea,0x02,},\"\\xc4\\x63\\x70\\xe3\\x7f\\x2e\\x0c\\xad\\xcf\\x93\\x40\\x2f\\x1f\\x0c\\xb0\\x48\\xf5\\x28\\x81\\xba\\x75\\x0b\\x7a\\x43\\xf5\\x6a\\xb1\\x1c\\xe3\\x48\\x73\\x2f\\xb5\\x7e\\x7f\\x9a\\xaf\\x8d\\xfc\\xbe\\x45\\x5e\\x14\\xe9\\x83\\xc2\\x48\\xd0\\x26\\xa2\\x7e\\x7f\\x14\\x8d\\x5d\\xb5\\xa5\\x3f\\x94\\x63\\x57\\x02\\xb8\\x95\\x12\\x77\\x71\\x04\\x7a\\x87\\x6d\\x14\\x10\\x73\\x86\\xc5\\xe0\\xff\\x89\\x33\\x34\\x5b\\xbd\\x7a\\x93\\x6d\\x99\\x0d\\x33\\xef\\xa2\\x8c\\x2e\\xc4\\xe4\\x86\\x4f\\xfd\\x2f\\xf5\\x76\\xf7\\xc8\\x8f\\x95\\x4c\\xfc\\x1c\\x45\\x9e\\x88\\x3b\\xb7\\x12\\xda\\xe3\\xcd\\xf6\\x63\\x20\\x66\\xf1\\xf4\\xd1\\x3a\\x50\\x96\\x15\\xb3\\x36\\x0c\\xad\\xc5\\xa3\\x07\\xf2\\x3e\\x52\\xa5\\x1b\\x40\\xa6\\xfe\\xeb\\xe0\\xb1\\x8d\\x0e\\x9e\\xe4\\xe3\\x48\\xf3\\x3c\\xd8\\x1a\\x8d\\xef\\x22\\x2f\\x6a\\x59\\xb1\\x28\\x61\\xd3\\x35\\xbd\\x9a\\xf8\\x5c\\xc0\\x04\\xbe\\x46\\xf1\\xd3\\xa4\\x24\\xf4\\x87\\x0a\\xe9\\xdc\\x58\\x7e\\x5a\\x4a\\xde\\x13\\x6b\\x93\\x70\\x64\\x93\\x48\\xc3\\x3a\\xc3\\xbf\\x1f\\xeb\\xee\\xbf\\xfe\\xa3\\x70\\x85\\xed\\x59\\xca\\xc9\\xd9\\xe6\\x96\\x47\\x0b\\x23\\x46\\x09\\xe9\\xa1\\x0a\\x9d\\x43\\x1f\\xf9\\x1e\\x69\\xcb\\x51\\x35\\xfd\\x11\\x7f\\xf5\\x8a\\x36\\x53\\x97\\x44\\xeb\\xe7\\x0c\\xea\\x69\\x73\\xc0\\x0c\\x7a\\x4d\\x57\\xb6\\x2f\\x4a\\x71\\x36\\xd7\\x31\\xb8\\xe4\\x6f\\xf1\\x8e\\xc0\\xed\\x69\\x07\\x00\\x31\\x90\\x50\\x75\\xd8\\x54\\x1d\\x56\\x8c\\xfc\\xe6\\xee\\xb7\\x62\\x42\\xb7\\x81\\x9a\\x7b\\x6a\\x93\\x55\\x21\\x11\\xbb\\x88\\xf1\\x65\\x52\\x7c\\xfa\\x69\\x66\\xd3\\x9f\\xcb\\xe0\\xa7\\xde\\xa0\\x08\\xe3\\x9c\\x7a\\x3e\\x57\\x7a\\xb3\\x07\\xcd\\x1d\\x0e\\xa3\\x26\\x83\\x3d\\x52\\x65\\x4e\\x17\\x29\\x55\\xf3\\xfc\\xd4\"},\n{{0x42,0x30,0x5c,0x93,0x02,0xf4,0x5e,0xa6,0xf8,0x7e,0x26,0xe2,0x20,0x8f,0xd9,0x4b,0x3c,0x4a,0xd0,0x37,0xb1,0xb6,0xc8,0x3c,0xf6,0x67,0x7a,0xa1,0x09,0x6a,0x01,0x3c,},{0x3b,0x97,0xb1,0xf1,0x1c,0xe4,0x5b,0xa4,0x6f,0xfb,0xb2,0x5b,0x76,0xbf,0xc5,0xad,0x7b,0x77,0xf9,0x0c,0xc6,0x9e,0xd7,0x61,0x15,0xde,0xa4,0x02,0x94,0x69,0xd5,0x87,},{0x18,0xd0,0x5e,0x5d,0x01,0x66,0x8e,0x83,0xf4,0x0f,0xa3,0xbb,0xee,0x28,0xb3,0x88,0xac,0xf3,0x18,0xd1,0xb0,0xb5,0xad,0x66,0x8c,0x67,0x2f,0x34,0x5c,0x8e,0xda,0x14,0xc2,0xf8,0x84,0xcd,0x2a,0x90,0x39,0x45,0x9c,0xe0,0x81,0x0b,0xc5,0xb5,0x80,0xfe,0x70,0xd3,0x96,0x4a,0x43,0xed,0xb4,0x9e,0x73,0xa6,0xff,0x91,0x4b,0xbf,0x04,0x0c,},\"\\xd1\\x10\\x82\\x8d\\x44\\x91\\x98\\xd6\\x75\\xe7\\x4e\\x8e\\x39\\x43\\x9f\\xd1\\x5e\\x75\\xbf\\x2c\\xc1\\xf4\\x30\\xab\\xfb\\x24\\x58\\x36\\x88\\x5b\\xaf\\xc4\\x20\\xf7\\x54\\xb8\\x9d\\x2f\\xbb\\xf6\\xdd\\x34\\x90\\x79\\x2e\\x7a\\x4f\\x76\\x60\\x73\\xcf\\xe3\\xb3\\x02\\xd0\\x89\\x83\\x1a\\xce\\x86\\x9e\\x27\\x30\\xfd\\xe4\\x5c\\x21\\x21\\xec\\x3e\\xf2\\x17\\xaa\\x9c\\x43\\xfa\\x7c\\xc7\\xe9\\xed\\x0a\\x01\\xad\\x9f\\x1d\\x2f\\xc3\\x61\\x36\\x38\\xca\\x9f\\xc1\\x93\\xc9\\x8b\\x37\\x45\\x5b\\xf5\\xdb\\xf8\\xf3\\x8b\\x64\\x70\\x8d\\xfd\\xca\\x6c\\x21\\xf0\\x97\\x5f\\x10\\x17\\xc5\\xda\\x5f\\x64\\x34\\xbd\\xa9\\xf0\\x33\\xce\\xc2\\xa6\\x31\\xab\\x50\\x31\\x8e\\x01\\x7b\\x17\\x0b\\x24\\x0b\\xf0\\x1e\\xb8\\xb3\\x6c\\x7e\\x1c\\xb5\\x9e\\x77\\x36\\xac\\x34\\x44\\x42\\x08\\x13\\x2a\\x8f\\x59\\xe4\\xf3\\x13\\xd6\\x5d\\x84\\x9c\\x6a\\x4f\\xdf\\x13\\xe2\\x0e\\xca\\xee\\x38\\x23\\xe5\\x89\\xa1\\x71\\xb3\\x9b\\x24\\x89\\x49\\x7b\\x06\\xe6\\xff\\x58\\xc2\\xc9\\xf1\\xdc\\x5d\\x3a\\xa3\\xbd\\x10\\xe6\\x44\\x3e\\x22\\xd4\\x2d\\x07\\xb7\\x83\\xf7\\x9f\\xd4\\x3a\\x46\\xe1\\xcd\\xe3\\x14\\xb6\\x63\\xa9\\x5f\\x72\\x46\\xde\\xa1\\x31\\xfc\\xd4\\x6d\\x1d\\xc3\\x33\\xc5\\x45\\x4f\\x86\\xb2\\xc4\\xe2\\xe4\\x24\\xde\\xa4\\x05\\xcc\\x22\\x30\\xd4\\xdc\\xd3\\x9a\\x2e\\xab\\x2f\\x92\\x84\\x5c\\xf6\\xa7\\x99\\x41\\x92\\x06\\x3f\\x12\\x02\\x74\\x9e\\xf5\\x2d\\xcb\\x96\\xf2\\xb7\\x9e\\xd6\\xa9\\x81\\x18\\xca\\x0b\\x99\\xba\\x22\\x85\\x49\\x08\\x60\\xeb\\x4c\\x61\\xab\\x78\\xb9\\xdd\\xc6\\xac\\xc7\\xad\\x88\\x3f\\xa5\\xe9\\x6f\\x9d\\x02\\x91\\x71\\x22\\x3a\\xbf\\x75\\x73\\xe3\\x62\\x30\\xe0\\xa8\\x1f\\x6c\\x13\\x11\\x15\\x14\\x73\\xee\\x26\\x4f\\x4b\\x84\\x2e\\x92\\x3d\\xcb\\x3b\"},\n{{0xc5,0x7a,0x43,0xdc,0xd7,0xba,0xb8,0x51,0x60,0x09,0x54,0x69,0x18,0xd7,0x1a,0xd4,0x59,0xb7,0x34,0x5e,0xfd,0xca,0x8d,0x4f,0x19,0x92,0x98,0x75,0xc8,0x39,0xd7,0x22,},{0x20,0x83,0xb4,0x44,0x23,0x6b,0x9a,0xb3,0x1d,0x4e,0x00,0xc8,0x9d,0x55,0xc6,0x26,0x0f,0xee,0x71,0xac,0x1a,0x47,0xc4,0xb5,0xba,0x22,0x74,0x04,0xd3,0x82,0xb8,0x2d,},{0x1e,0xde,0xf9,0xbc,0x03,0x69,0x71,0xf1,0xfa,0x88,0xed,0xf4,0x53,0x93,0xc8,0x02,0xe6,0xc1,0xa1,0x63,0x1c,0x8a,0x06,0x87,0x1a,0x09,0xa3,0x20,0x82,0x1d,0xce,0x40,0xbe,0xca,0x97,0xe5,0x3a,0x03,0x61,0xa9,0x55,0xa4,0xc6,0xd6,0x0b,0x8c,0xa8,0xe4,0x00,0xc8,0x13,0x40,0x91,0x1c,0xcb,0x4f,0x56,0x28,0x40,0x41,0xcd,0xbb,0x18,0x04,},\"\\xa4\\xf6\\xd9\\xc2\\x81\\xcf\\x81\\xa2\\x8a\\x0b\\x9e\\x77\\x49\\x9a\\xa2\\x4b\\xde\\x96\\xcc\\x12\\x64\\x37\\x44\\x91\\xc0\\x08\\x29\\x4e\\xe0\\xaf\\x6f\\x6e\\x4b\\xbb\\x68\\x63\\x96\\xf5\\x90\\x68\\xd3\\x58\\xe3\\x0f\\xe9\\x99\\x2d\\xb0\\xc6\\xf1\\x66\\x80\\xa1\\xc7\\x1e\\x27\\xa4\\xa9\\x07\\xac\\x60\\x7d\\x39\\xbd\\xc3\\x25\\x8c\\x79\\x56\\x48\\x2f\\xb3\\x79\\x96\\xf4\\xbe\\xb3\\xe5\\x05\\x1b\\x81\\x48\\x01\\x9a\\x1c\\x25\\x6e\\x2e\\xe9\\x99\\xeb\\xc8\\xce\\x64\\xc5\\x4e\\x07\\xfe\\xdb\\x4f\\xbd\\x89\\x53\\xeb\\xd9\\x3b\\x7d\\x69\\xce\\x5a\\x00\\x82\\xed\\xd6\\x20\\x9d\\x12\\xd3\\x61\\x9b\\x4f\\xd2\\xea\\xe9\\x16\\x46\\x1f\\x72\\xa4\\xce\\x72\\x71\\x57\\x25\\x1a\\x19\\x20\\x9b\\xbf\\xf9\\xfb\\xdb\\xd2\\x89\\x43\\x6f\\x3f\\xca\\xcc\\x6b\\x4e\\x13\\x18\\x52\\x1a\\x47\\x83\\x9c\\xba\\x4b\\x14\\xf7\\xd7\\xa2\\x1e\\x7b\\x5d\\x6b\\x6a\\x75\\x3d\\x58\\x04\\xaf\\xcd\\x2b\\x1e\\xb7\\x77\\x9b\\x92\\xab\\xab\\x8a\\xfa\\x8a\\xa4\\xfa\\x51\\xca\\xec\\x0b\\x85\\xdc\\xd0\\xfc\\x2a\\x06\\x76\\x03\\x6d\\x3f\\x56\\x63\\x0a\\x83\\x1f\\xfe\\xb5\\x02\\x86\\x1d\\xd8\\x91\\x61\\xc7\\x08\\xa9\\xc0\\x06\\xc7\\x3c\\x93\\x0c\\xe5\\xb9\\x47\\x56\\x42\\x6f\\xf1\\x8a\\xa1\\x12\\xfb\\x4e\\xb9\\xa6\\x85\\x00\\xb4\\x8d\\x4e\\xed\\xbd\\x41\\x67\\xb6\\xff\\xd0\\xa1\\x1d\\x49\\x44\\x3a\\x17\\x3c\\xe9\\xd9\\x49\\x43\\x67\\x48\\xfc\\x06\\x34\\xf0\\x6b\\xb0\\x8b\\x8f\\x34\\x23\\xf4\\x46\\x3d\\xba\\x7b\\x4d\\x19\\x9b\\x64\\xdf\\x57\\x81\\x17\\xf0\\xa2\\x64\\x5f\\x0b\\x2a\\x1e\\x2a\\xda\\x27\\xd2\\x86\\xf7\\x67\\x33\\xf2\\x5b\\x82\\xed\\x1d\\x48\\xa5\\xc3\\x89\\x8d\\x4a\\xd6\\x21\\xe5\\x0e\\xd9\\x06\\x0d\\xaa\\xd4\\x0a\\x39\\x53\\x2e\\x4d\\x1b\\xf1\\x62\\xce\\x36\\x80\\x4d\\x5d\\x4e\\x2d\"},\n{{0x2d,0xdd,0xb6,0xb8,0xfd,0x04,0xfa,0x90,0xec,0xe1,0xa7,0x09,0xf8,0x41,0x8f,0x2e,0x5d,0x0c,0x9c,0x43,0xaf,0xe7,0xcf,0xce,0x19,0xe6,0xad,0x15,0xa7,0x34,0x76,0xf7,},{0x80,0x59,0xde,0x6a,0x7c,0x47,0x76,0x48,0x9e,0xcc,0x2e,0x7d,0x70,0x7f,0xfc,0xe3,0x02,0x85,0xbf,0x30,0xa2,0x3f,0x78,0xd7,0x2d,0xb4,0x9c,0xfd,0x6e,0xd0,0xd4,0x92,},{0xc6,0x34,0xea,0x7b,0xf7,0x2e,0x89,0x5a,0x2e,0x79,0x6e,0x28,0x34,0x20,0x14,0x15,0xb8,0xb4,0x5e,0x05,0xe0,0x45,0x55,0x92,0x84,0xeb,0x90,0x52,0xc0,0xe8,0x4f,0x62,0xa5,0xa9,0xf0,0xc9,0x76,0x4f,0x75,0x76,0x78,0x8c,0x72,0x28,0xb1,0x9e,0xf5,0x17,0xc1,0x95,0x49,0x73,0x25,0xa4,0x8a,0x93,0x44,0xb1,0x47,0xc1,0x2f,0xd7,0x55,0x09,},\"\\x47\\x4b\\xaa\\x59\\x0a\\x4c\\xd7\\x2d\\x54\\x24\\xe5\\x1d\\x82\\x57\\xb3\\xd4\\x43\\x25\\xbc\\x4c\\x50\\x63\\xa0\\x03\\x3c\\x86\\xeb\\xbe\\x99\\xed\\x72\\x12\\x18\\x4c\\x19\\x94\\x4d\\x08\\x2a\\x11\\x53\\x79\\xdd\\x4c\\xec\\xe9\\x73\\xfa\\xa0\\xbc\\xa6\\x48\\x5b\\xd2\\x5f\\x37\\x44\\xa7\\x19\\xe7\\x0a\\xa0\\x29\\x1e\\x1b\\x5a\\x96\\xe6\\x37\\xc1\\x40\\x61\\x6a\\x98\\x26\\x33\\x57\\xc7\\x6b\\x6e\\xb0\\x08\\x3f\\xe5\\x14\\x14\\xe3\\x86\\x87\\x0d\\x0f\\xdc\\x7d\\xd9\\xab\\xe4\\xff\\x6f\\xb5\\xbb\\xf1\\xe7\\xb1\\x5d\\xac\\x3e\\x08\\xe2\\x61\\x5f\\x65\\x5c\\x31\\x04\\xce\\xb3\\x2a\\x4c\\xc2\\xc9\\xe9\\xc4\\x3c\\xf2\\x82\\xd3\\x46\\xac\\x25\\x3c\\xcc\\x46\\xb6\\x35\\xae\\x04\\x09\\x73\\xb4\\x97\\x35\\x72\\x0f\\xfb\\x89\\x04\\x69\\xa5\\x67\\xc5\\x82\\x4e\\x0c\\x00\\xd7\\xcc\\xd5\\x50\\x9a\\x71\\x80\\x92\\xa9\\x06\\x46\\x1c\\x4d\\x61\\x63\\xea\\xf4\\x22\\x41\\x8f\\x5f\\xc6\\xe0\\x09\\xfc\\x3f\\x52\\x9a\\xc6\\x1a\\x2f\\x89\\xbb\\x8e\\x0e\\xd4\\x5d\\x94\\x0c\\x4c\\x23\\x31\\xff\\x8d\\x8e\\x1d\\x6d\\x58\\xd4\\x17\\xd8\\xfc\\x26\\x56\\xa0\\x2e\\x87\\x01\\xae\\xe7\\x5a\\xed\\x91\\x87\\x24\\xee\\xbe\\x4a\\x2c\\xf4\\x74\\x4c\\x5c\\x40\\x1e\\x21\\x70\\x23\\xdf\\x68\\xa6\\xf6\\xa0\\x22\\x8b\\xd0\\x5a\\x67\\x9a\\x69\\x7d\\x8d\\xe7\\x03\\x6b\\x9e\\xd2\\x69\\x09\\x0d\\x3c\\x65\\x48\\x6a\\xfb\\x91\\xe2\\x79\\x54\\xeb\\x15\\xb9\\x64\\x66\\x5e\\xde\\x7a\\xd0\\x08\\xf1\\x2f\\xb3\\xa9\\xd0\\xe6\\x9c\\x13\\xb4\\x25\\x4f\\x43\\x81\\x9e\\x08\\x18\\xa4\\x19\\x5f\\x68\\xb8\\xa3\\x8a\\xe8\\x1f\\x3f\\xcb\\x18\\x79\\xc9\\x5a\\xb4\\xcd\\x0f\\xfc\\x38\\xe3\\x81\\x08\\x92\\x60\\xcc\\xa9\\x67\\xac\\xe5\\xa0\\x85\\xb4\\x57\\xab\\x5e\\xb3\\x63\\x85\\x21\\x01\\x37\\x75\\x70\\xf9\\xac\\x9e\\x38\"},\n{{0x55,0x47,0xf1,0x00,0x4b,0xae,0xdf,0xce,0x5c,0xfc,0x08,0x50,0xb0,0x53,0x02,0x37,0x4a,0xad,0x24,0xf6,0x16,0x39,0x94,0xec,0xd7,0x51,0xdf,0x3a,0xf3,0xc1,0x06,0x20,},{0x7c,0xe6,0x20,0x78,0x73,0x85,0xee,0x19,0x51,0xac,0x49,0xa7,0x73,0x52,0xee,0x0d,0x6f,0x8c,0x5c,0xd4,0x7d,0xf7,0x4e,0x9e,0x32,0x16,0xa6,0x32,0x4f,0xc7,0xcf,0x7f,},{0x29,0xdf,0x3a,0xd5,0x89,0x00,0x9c,0x66,0x7b,0xaa,0x5e,0x72,0xda,0xbb,0x4e,0x53,0xcb,0x78,0x76,0xde,0x4e,0x7e,0xfe,0x5c,0xc2,0x1e,0xad,0x7f,0xa8,0x78,0xdb,0x57,0xf9,0x7c,0x11,0x03,0xdd,0xb3,0x9a,0x86,0x1e,0xb8,0x86,0x53,0xc1,0xd4,0xec,0x3b,0x43,0x06,0xe4,0x58,0x4b,0x47,0xb8,0xbc,0x90,0x42,0x31,0x19,0xe7,0xe4,0xaf,0x00,},\"\\xa6\\xc1\\x7e\\xeb\\x5b\\x80\\x66\\xc2\\xcd\\x9a\\x89\\x66\\x73\\x17\\xa9\\x45\\xa0\\xc7\\xc9\\x69\\x96\\xe7\\x7a\\xe8\\x54\\xc5\\x09\\xc6\\xcd\\x06\\x31\\xe9\\x22\\xad\\x04\\x50\\x3a\\xf8\\x7a\\x3c\\x46\\x28\\xad\\xaf\\xed\\x76\\x00\\xd0\\x71\\xc0\\x78\\xa2\\x2e\\x7f\\x64\\xbd\\xa0\\x8a\\x36\\x2b\\x38\\xb2\\x6c\\xa1\\x50\\x06\\xd3\\x8a\\xcf\\x53\\x2d\\x0d\\xed\\xea\\x41\\x77\\xa2\\xd3\\x3f\\x06\\x95\\x6d\\x80\\xe9\\x63\\x84\\x8e\\xc7\\x91\\xb2\\x76\\x2f\\xa9\\x94\\x49\\xb4\\xf1\\xa1\\xed\\x9b\\x3f\\x25\\x80\\xbe\\x3a\\xc7\\xd7\\xf5\\x2f\\xb1\\x44\\x21\\xd6\\x22\\x2b\\xa7\\x6f\\x80\\x77\\x50\\xc6\\xcb\\xb0\\xb1\\x6f\\x08\\x95\\xfc\\x73\\xd9\\xdf\\xc5\\x87\\xe1\\xa9\\xe5\\xd1\\xe5\\x83\\x75\\xfb\\xab\\x70\\x5b\\x8f\\x0c\\x1f\\xd7\\xdf\\x8b\\x3a\\xd4\\x46\\xf2\\xf0\\x84\\x59\\xe7\\xed\\x1a\\xf5\\x95\\x56\\xfb\\xc9\\x66\\xdc\\x24\\x9c\\x1c\\xf6\\x04\\xf3\\xe6\\x77\\xc8\\xa0\\x9d\\x43\\x63\\x60\\x87\\x74\\xbf\\x38\\x11\\xbe\\xf0\\x64\\x27\\x48\\xc5\\x5c\\x51\\x6c\\x7a\\x58\\x0f\\xa3\\x49\\x90\\x50\\xac\\xb3\\x0e\\xed\\x87\\x0d\\x0d\\x91\\x17\\x4c\\xb6\\x23\\xe9\\x8c\\x3a\\xd1\\x21\\xcf\\x81\\xf0\\x4e\\x57\\xd4\\x9b\\x00\\x84\\x24\\xa9\\x8a\\x31\\xee\\xaa\\xf5\\xf3\\x8e\\x00\\x0f\\x90\\x3d\\x48\\xd2\\x15\\xed\\x52\\xf8\\x62\\xd6\\x36\\xa5\\xa7\\x36\\x07\\xde\\x85\\x76\\x01\\x67\\x26\\x7e\\xfe\\x30\\xf8\\xa2\\x6e\\xbc\\x5a\\xa0\\xc0\\x9f\\x5b\\x25\\x8d\\x33\\x61\\xca\\x69\\xd1\\xd7\\xee\\x07\\xb5\\x96\\x48\\x17\\x9a\\xb2\\x17\\x0e\\xc5\\x0c\\x07\\xf6\\x61\\x6f\\x21\\x68\\x72\\x52\\x94\\x21\\xa6\\x33\\x4a\\x4a\\x1e\\xd3\\xd2\\x67\\x1e\\xf4\\x7b\\xc9\\xa9\\x2a\\xfb\\x58\\x31\\x4e\\x83\\x2d\\xb8\\xa9\\x00\\x34\\x08\\xa0\\x48\\x75\\x03\\xfe\\x4f\\x67\\x77\\x0d\\xd4\\xb6\"},\n{{0x3d,0xd7,0x20,0x3c,0x23,0x7a,0xef,0xe9,0xe3,0x8a,0x20,0x1f,0xf3,0x41,0x49,0x01,0x79,0x90,0x5f,0x9f,0x10,0x08,0x28,0xda,0x18,0xfc,0xbe,0x58,0x76,0x8b,0x57,0x60,},{0xf0,0x67,0xd7,0xb2,0xff,0x3a,0x95,0x7e,0x83,0x73,0xa7,0xd4,0x2e,0xf0,0x83,0x2b,0xcd,0xa8,0x4e,0xbf,0x28,0x72,0x49,0xa1,0x84,0xa2,0x12,0xa9,0x4c,0x99,0xea,0x5b,},{0x4c,0x03,0x69,0x35,0xa9,0x6a,0xbc,0x0d,0x05,0x0d,0x90,0x7b,0xed,0xbe,0x99,0x46,0xfb,0x97,0x43,0x9f,0x03,0x9c,0x74,0x2e,0x05,0x1c,0xcf,0x09,0xad,0xd7,0xdf,0x44,0xd1,0x7d,0xa9,0x8c,0x2c,0xa0,0x1b,0xdc,0x24,0x24,0xda,0x1e,0x4d,0xeb,0xf3,0x47,0xf8,0xff,0xf4,0x8a,0xc8,0x03,0x0d,0x2c,0xc0,0x7f,0x95,0x75,0xc0,0x44,0xbe,0x04,},\"\\xdb\\x28\\xed\\x31\\xac\\x04\\xb0\\xc2\\xde\\xce\\xe7\\xa6\\xb2\\x4f\\xc9\\xa0\\x82\\xcc\\x26\\x2c\\xa7\\xcc\\xf2\\xa2\\x47\\xd6\\x37\\x2e\\xc3\\xe9\\x12\\x0e\\xce\\xdb\\x45\\x42\\xea\\x59\\x3f\\xea\\x30\\x33\\x5c\\x5a\\xb9\\xdd\\x31\\x8a\\x3b\\x4f\\xd5\\x83\\x42\\x99\\xcf\\x3f\\x53\\xd9\\xef\\x46\\x13\\x7b\\x27\\x3c\\x39\\x0e\\xc3\\xc2\\x6a\\x0b\\x44\\x70\\xd0\\xd9\\x4b\\x77\\xd8\\x2c\\xae\\x4b\\x24\\x58\\x78\\x37\\xb1\\x67\\xbb\\x7f\\x81\\x66\\x71\\x0b\\xae\\xb3\\xee\\x70\\xaf\\x79\\x73\\x16\\xcb\\x7d\\x05\\xfa\\x57\\xe4\\x68\\xae\\x3f\\x0b\\xd4\\x49\\x40\\x4d\\x85\\x28\\x80\\x8b\\x41\\xfc\\xca\\x62\\xf5\\xe0\\xa2\\xaa\\x5d\\x8f\\x3a\\xca\\xb0\\x08\\xcc\\x5f\\x6e\\x5a\\xb0\\x27\\x77\\xbd\\xcd\\xe8\\x7f\\x0a\\x10\\xef\\x06\\xa4\\xbb\\x37\\xfe\\x02\\xc9\\x48\\x15\\xcf\\x76\\xbf\\xb8\\xf5\\xcd\\xd8\\x65\\xcc\\x26\\xdc\\xb5\\xcf\\x49\\x2e\\xdf\\xd5\\x47\\xb5\\x35\\xe2\\xe6\\xa6\\xd8\\x54\\x09\\x56\\xdc\\xba\\x62\\xcf\\xea\\x19\\xa9\\x47\\x44\\x06\\xe9\\x34\\x33\\x7e\\x45\\x42\\x70\\xe0\\x10\\x36\\xac\\x45\\x79\\x3b\\x6b\\x8a\\xce\\xda\\x18\\x7a\\x08\\xd5\\x6a\\x2c\\xe4\\xe9\\x8f\\x42\\xea\\x37\\x5b\\x10\\x1a\\x6b\\x9f\\xcb\\x42\\x31\\xd1\\x71\\xaa\\x46\\x3e\\xeb\\x43\\x58\\x6a\\x4b\\x82\\xa3\\x87\\xbc\\xdd\\xaf\\x71\\xa8\\x0f\\xd5\\xc1\\xf7\\x29\\x2e\\xfc\\x2b\\xd8\\xe7\\x0c\\x11\\xea\\xa8\\x17\\x10\\x60\\x61\\xb6\\xc4\\x61\\xc4\\x88\\x3d\\x61\\x3c\\xc0\\x6c\\x7e\\x2a\\x03\\xf7\\x3d\\x90\\xfc\\x55\\xcd\\xc0\\x72\\x65\\xee\\xfd\\x36\\xbe\\x72\\x27\\x03\\x83\\xd6\\xc6\\x76\\xca\\xe3\\x7c\\x93\\x69\\x1f\\x1a\\xe3\\xd9\\x27\\xb3\\xa1\\xcd\\x96\\x3e\\x42\\x29\\x75\\x7a\\xe5\\x23\\x1e\\xea\\x73\\xa9\\xf7\\x15\\x15\\x62\\x83\\x05\\x41\\x0a\\xc2\\x59\\x3b\\x32\\x5c\\xc6\\x31\"},\n{{0x28,0x27,0x75,0xdf,0x9e,0xbb,0xd7,0xc5,0xa6,0x5f,0x3a,0x2b,0x09,0x6e,0x36,0xee,0x64,0xa8,0xf8,0xea,0x71,0x9d,0xa7,0x77,0x58,0x73,0x9e,0x4e,0x74,0x76,0x11,0x1d,},{0xa2,0xb4,0x96,0x46,0x03,0x3a,0x13,0x93,0x7c,0xad,0x6b,0x0e,0x91,0x4e,0x3c,0xec,0x54,0x98,0x9c,0x25,0x2c,0xa5,0x64,0x3d,0x07,0x65,0x55,0xd8,0xc5,0x5e,0x56,0xe0,},{0x15,0x76,0x39,0x73,0x85,0x94,0x02,0x90,0x7d,0x8d,0xcb,0x86,0xad,0xc2,0x4a,0x2a,0x16,0x8b,0xa3,0xab,0xf2,0x24,0x61,0x73,0xd6,0x34,0x8a,0xfe,0xd5,0x1e,0xf6,0x0b,0x0c,0x0e,0xde,0xff,0x4e,0x10,0xbc,0xef,0x4c,0x6e,0x57,0x78,0xc8,0xbc,0x1f,0x5e,0x9e,0xe0,0x23,0x73,0x73,0x44,0x5b,0x45,0x51,0x55,0xd2,0x3d,0xe1,0x27,0xa2,0x02,},\"\\x14\\xcc\\x50\\xc2\\x97\\x3e\\xa9\\xd0\\x18\\x7a\\x73\\xf7\\x1c\\xb9\\xf1\\xce\\x07\\xe7\\x39\\xe0\\x49\\xec\\x2b\\x27\\xe6\\x61\\x3c\\x10\\xc2\\x6b\\x73\\xa2\\xa9\\x66\\xe0\\x1a\\xc3\\xbe\\x8b\\x50\\x5a\\xea\\xad\\x14\\x85\\xc1\\xc2\\xa3\\xc6\\xc2\\xb0\\x0f\\x81\\xb9\\xe5\\xf9\\x27\\xb7\\x3b\\xfd\\x49\\x86\\x01\\xa7\\x62\\x2e\\x85\\x44\\x83\\x7a\\xad\\x02\\xe7\\x2b\\xf7\\x21\\x96\\xdc\\x24\\x69\\x02\\xe5\\x8a\\xf2\\x53\\xad\\x7e\\x02\\x5e\\x36\\x66\\xd3\\xbf\\xc4\\x6b\\x5b\\x02\\xf0\\xeb\\x4a\\x37\\xc9\\x55\\x49\\x92\\xab\\xc8\\x65\\x1d\\xe1\\x2f\\xd8\\x13\\x17\\x73\\x79\\xbb\\x0c\\xe1\\x72\\xcd\\x8a\\xaf\\x93\\x7f\\x97\\x96\\x42\\xbc\\x2e\\xd7\\xc7\\xa4\\x30\\xcb\\x14\\xc3\\xcd\\x31\\x01\\xb9\\xf6\\xb9\\x1e\\xe3\\xf5\\x42\\xac\\xdf\\x01\\x7f\\x8c\\x21\\x16\\x29\\x7f\\x45\\x64\\x76\\x8f\\x4d\\xb9\\x5d\\xad\\x8a\\x9b\\xcd\\xc8\\xda\\x4d\\x8f\\xb1\\x3e\\xf6\\xe2\\xda\\x0b\\x13\\x16\\xd3\\xc8\\xc2\\xf3\\xed\\x83\\x6b\\x35\\xfe\\x2f\\xd3\\x3e\\xff\\xb4\\x09\\xe3\\xbc\\x1b\\x0f\\x85\\x22\\x5d\\x2a\\x1d\\xe3\\xbf\\xc2\\xd2\\x05\\x63\\x94\\x64\\x75\\xc4\\xd7\\xca\\x9f\\xdd\\xba\\xf5\\x9a\\xd8\\xf8\\x96\\x1d\\x28\\x7a\\xe7\\xdd\\x80\\x3e\\x7a\\xf1\\xfa\\x61\\x23\\x29\\xb1\\xbd\\xc0\\x4e\\x22\\x56\\x00\\xae\\x73\\x1b\\xc0\\x1a\\xe0\\x92\\x5a\\xed\\x62\\xac\\x50\\xd4\\x60\\x86\\xf3\\x64\\x6c\\xf4\\x7b\\x07\\x2f\\x0d\\x3b\\x04\\x4b\\x36\\xf8\\x5c\\xec\\x72\\x9a\\x8b\\xb2\\xb9\\x28\\x83\\xca\\x4d\\xfb\\x34\\xa8\\xee\\x8a\\x02\\x73\\xb3\\x1a\\xf5\\x09\\x82\\xbb\\x61\\x31\\xbf\\xa1\\x1d\\x55\\x50\\x4b\\x1f\\x6f\\x1a\\x0a\\x00\\x43\\x8c\\xa2\\x6d\\x8a\\xb4\\xf4\\x8b\\xcd\\xdc\\x9d\\x5a\\x38\\x85\\x1a\\xbe\\xde\\x41\\x51\\xd5\\xb7\\x0d\\x72\\x07\\x32\\xa0\\x0a\\xbe\\xa2\\xc8\\xb9\\x79\"},\n{{0x47,0x30,0xa5,0xcf,0x97,0x72,0xd7,0xd6,0x66,0x5b,0xa7,0x87,0xbe,0xa4,0xc9,0x52,0x52,0xe6,0xec,0xd6,0x3e,0xc6,0x23,0x90,0x54,0x7b,0xf1,0x00,0xc0,0xa4,0x63,0x75,},{0xf9,0xf0,0x94,0xf7,0xcc,0x1d,0x40,0xf1,0x92,0x6b,0x5b,0x22,0xdc,0xe4,0x65,0x78,0x44,0x68,0xb2,0x0a,0xb3,0x49,0xbc,0x6d,0x4f,0xdf,0x78,0xd0,0x04,0x2b,0xbc,0x5b,},{0x55,0x2c,0x73,0x47,0xbd,0xfe,0x13,0x16,0x46,0xce,0x09,0x32,0xd8,0x2a,0x36,0xd2,0xc1,0xb7,0x6d,0x7c,0x30,0xee,0x89,0x0e,0x05,0x92,0xe1,0x9f,0x9d,0x18,0xb9,0xa5,0x6f,0x48,0xd7,0xa9,0xb6,0x8c,0x01,0x7d,0xa6,0xb5,0x50,0xc9,0x43,0xaf,0x4a,0x90,0x7b,0xaf,0x31,0x7e,0x41,0x9f,0xbb,0xc9,0x6f,0x6c,0xf4,0xbf,0xad,0x42,0xde,0x00,},\"\\xe7\\x47\\x6d\\x2e\\x66\\x84\\x20\\xe1\\xb0\\xfa\\xdf\\xba\\xa5\\x42\\x86\\xfa\\x7f\\xa8\\x90\\xa8\\x7b\\x82\\x80\\xe2\\x60\\x78\\x15\\x22\\x95\\xe1\\xe6\\xe5\\x5d\\x12\\x41\\x43\\x5c\\xc4\\x30\\xa8\\x69\\x3b\\xb1\\x0c\\xde\\x46\\x43\\xf5\\x9c\\xbf\\xcc\\x25\\x6f\\x45\\xf5\\x09\\x0c\\x90\\x9a\\x14\\xc7\\xfc\\x49\\xd3\\x7b\\xfc\\x25\\xaf\\x11\\xe8\\xf4\\xc8\\x3f\\x4c\\x32\\xd4\\xaa\\xbf\\x43\\xb2\\x0f\\xa3\\x82\\xbb\\x66\\x22\\xa1\\x84\\x8f\\x8f\\xfc\\x4d\\xff\\x34\\x08\\xbb\\x4e\\xc7\\xc6\\x7a\\x35\\xb4\\xcd\\xae\\xe5\\xe2\\x79\\xc0\\xfc\\x0a\\x66\\x09\\x3a\\x9f\\x36\\xa6\\x0f\\xdd\\x65\\xe6\\x33\\x4a\\x80\\x4e\\x84\\x5c\\x85\\x30\\xb6\\xfd\\xa3\\x63\\xb5\\x64\\x03\\x37\\xd0\\x27\\x24\\x3c\\xcf\\xb3\\xc1\\x77\\xf4\\x3e\\x71\\x78\\x96\\xe4\\x6e\\xad\\x7f\\x72\\xca\\x06\\xaa\\x0f\\xf1\\xe7\\x72\\x47\\x12\\x1b\\xaf\\x48\\xbe\\x9a\\x44\\x5f\\x72\\x9c\\xa1\\x39\\x0f\\xc4\\x61\\x51\\xcb\\xd3\\x3f\\xcb\\xd7\\x37\\x3f\\x27\\xa6\\xba\\x55\\xc9\\x2c\\xbf\\x69\\x45\\xb0\\x9b\\x44\\xb9\\xa4\\xe5\\x80\\x0d\\x40\\x30\\x70\\xae\\x66\\x04\\x89\\x97\\xb2\\x19\\x7f\\x02\\x18\\x1a\\x09\\x7e\\x56\\x3f\\x9b\\x9a\\xcc\\x84\\x11\\x39\\x25\\x8a\\x25\\x8b\\xc6\\x10\\xd3\\xbd\\x89\\x16\\x37\\x35\\x6b\\x2e\\xdc\\x8c\\x18\\x4c\\x35\\xc6\\x5a\\xf9\\x1a\\xaf\\x7b\\x1c\\x16\\xd7\\x4a\\x5f\\x5f\\x86\\x25\\x48\\x13\\x92\\x54\\xec\\xf5\\x50\\x63\\x1d\\x5f\\x88\\x49\\xaf\\xdb\\x5b\\x64\\xcf\\x36\\x6f\\xf2\\x63\\x3a\\x93\\xf3\\xa1\\x8c\\x39\\xb5\\x15\\x02\\x45\\xfb\\x5f\\x33\\xc9\\xe4\\xe2\\xd9\\x4a\\xf6\\x96\\x3a\\x70\\xb8\\x8f\\x9e\\x7e\\x51\\x9f\\x8f\\xa2\\xa0\\xf2\\xe3\\x74\\x9d\\xe8\\x83\\xd0\\xe6\\xf0\\x52\\xa9\\x49\\xd0\\xfc\\x71\\x53\\xa8\\x69\\x3f\\x6d\\x80\\x1d\\x73\\x52\\xeb\\x2f\\x7a\\x46\\x5c\\x0e\"},\n{{0x27,0x70,0xaa,0xdd,0x1d,0x12,0x3e,0x95,0x47,0x83,0x2d,0xfb,0x2a,0x83,0x7e,0xba,0x08,0x91,0x79,0xef,0x4f,0x23,0xab,0xc4,0xa5,0x3f,0x2a,0x71,0x4e,0x42,0x3e,0xe2,},{0x3c,0x5f,0xbb,0x07,0x53,0x0d,0xd3,0xa2,0x0f,0xf3,0x5a,0x50,0x0e,0x37,0x08,0x92,0x63,0x10,0xfe,0xd8,0xa8,0x99,0x69,0x02,0x32,0xb4,0x2c,0x15,0xbd,0x86,0xe5,0xdc,},{0xf2,0x67,0x71,0x5e,0x9a,0x84,0xc7,0x31,0x4f,0x2d,0x58,0x69,0xef,0x4a,0xb8,0xd2,0x14,0x9a,0x13,0xf7,0xe8,0xe1,0xc7,0x28,0xc4,0x23,0x90,0x62,0x93,0xb4,0x9c,0xe6,0x28,0x34,0x54,0xdd,0x1c,0x7b,0x04,0x74,0x1d,0xf2,0xea,0xbe,0xdc,0x4d,0x6a,0xb1,0x39,0x7d,0xc9,0x5a,0x67,0x9d,0xf0,0x4d,0x2c,0x17,0xd6,0x6c,0x79,0xbb,0x76,0x01,},\"\\xa5\\xcc\\x20\\x55\\xeb\\xa3\\xcf\\x6f\\x0c\\x63\\x32\\xc1\\xf2\\xab\\x58\\x54\\x87\\x09\\x13\\xb0\\x3f\\xf7\\x09\\x3b\\xc9\\x4f\\x33\\x5a\\xdd\\x44\\x33\\x22\\x31\\xd9\\x86\\x9f\\x02\\x7d\\x82\\xef\\xd5\\xf1\\x22\\x71\\x44\\xab\\x56\\xe3\\x22\\x2d\\xc3\\xdd\\xcc\\xf0\\x62\\xd9\\xc1\\xb0\\xc1\\x02\\x4d\\x9b\\x41\\x6d\\xfa\\x3e\\xe8\\xa7\\x02\\x79\\x23\\x00\\x34\\x65\\xe0\\xff\\xae\\xfb\\x75\\xb9\\xf2\\x9d\\xc6\\xbc\\xf2\\x13\\xad\\xc5\\xe3\\x18\\xfd\\x8b\\xa9\\x3a\\x7a\\xa5\\xbf\\xb4\\x95\\xde\\x9d\\x7c\\x5e\\x1a\\x19\\x6c\\xd3\\xa2\\xd7\\x72\\x1f\\x8b\\xa7\\x85\\xaa\\x90\\x52\\xa1\\x81\\x1c\\x7f\\xcc\\x8f\\x93\\x93\\x27\\x65\\x05\\x9c\\xab\\x9c\\x9b\\x71\\x89\\x45\\x89\\x5e\\xf2\\x6f\\x3a\\xc0\\x48\\xd4\\xca\\xbf\\x91\\xa9\\xe6\\xaa\\x83\\xac\\x14\\xd4\\x31\\x56\\x82\\x78\\x37\\x91\\x4e\\xb7\\x63\\xa2\\x3c\\xba\\x53\\xf6\\x0f\\x15\\x0f\\x4b\\x70\\x20\\x3e\\xc1\\x83\\x3f\\xf1\\x05\\x84\\x94\\x57\\xa8\\xda\\x73\\x27\\x66\\x1f\\xb2\\x3a\\x55\\x41\\x64\\xe0\\x5f\\xcf\\x01\\x46\\xb1\\x06\\x74\\x96\\x4b\\xe6\\xf6\\xaa\\x0a\\xcc\\x94\\xc4\\x1a\\xd5\\x71\\x80\\xe5\\x18\\x0d\\x19\\x9b\\xd9\\x10\\x2f\\x55\\xd7\\x40\\xe8\\x17\\x89\\xb1\\x56\\x71\\xbb\\xd0\\x67\\x0e\\x6d\\xe5\\xd9\\x7e\\x1a\\xe6\\x26\\xd8\\xa0\\xeb\\xc3\\x2c\\x8f\\xd9\\xd2\\x47\\x37\\x27\\x4e\\x47\\xd2\\xdd\\x59\\x41\\xa2\\x72\\xe7\\x2a\\x59\\x89\\x28\\xad\\x10\\x9c\\xde\\x93\\x7b\\xf2\\x48\\xd5\\x7f\\x5d\\x29\\x42\\x98\\x3c\\x51\\xe2\\xa8\\x9f\\x8f\\x05\\x4d\\x5c\\x48\\xdf\\xad\\x8f\\xcf\\x1f\\xfa\\x97\\xf7\\xde\\x6a\\x3a\\x43\\xca\\x15\\xfc\\x67\\x20\\xef\\xae\\xc6\\x9f\\x08\\x36\\xd8\\x42\\x23\\xf9\\x77\\x6d\\x11\\x1e\\xc2\\xbb\\xc6\\x9b\\x2d\\xfd\\x58\\xbe\\x8c\\xa1\\x2c\\x07\\x21\\x64\\xb7\\x18\\xcd\\x7c\\x24\\x6d\\x64\"},\n{{0x4f,0xda,0xb7,0xc1,0x60,0x0e,0x70,0x11,0x4b,0x11,0xf5,0x33,0x24,0x23,0x76,0xaf,0x76,0x14,0xb4,0xd5,0xda,0x04,0x6a,0xc4,0xbe,0xde,0xa2,0x1d,0x8a,0x36,0x15,0x98,},{0xa2,0x5c,0x9a,0x94,0xd6,0xe4,0xec,0xd9,0x5a,0x4b,0xd6,0x80,0x5f,0x76,0x2e,0xb1,0xc4,0x57,0xa8,0xd4,0x5d,0x24,0x32,0x38,0xb1,0x83,0x9c,0xbb,0xa8,0xf4,0x41,0xcc,},{0x50,0x75,0xc0,0x90,0xcf,0xbe,0xb6,0xb0,0x18,0x02,0xaf,0x7f,0x4d,0xa5,0xaa,0x4f,0x43,0x4d,0x5e,0xe2,0xf3,0x53,0x0e,0xeb,0xb7,0x5c,0x85,0xe0,0x86,0x21,0xf8,0x3e,0xdc,0x08,0xaa,0x96,0x69,0x38,0x94,0xa4,0x27,0x76,0x33,0xba,0x81,0xe1,0x9e,0x9e,0x55,0xaf,0x5c,0x49,0x5d,0xaa,0x5e,0x1a,0x6f,0x8c,0xbb,0x79,0xc0,0x1c,0x72,0x07,},\"\\xda\\x40\\x58\\x90\\xd1\\x1a\\x87\\x2c\\x11\\x9d\\xab\\x5e\\xfc\\xbf\\xf6\\x1e\\x93\\x1f\\x38\\xec\\xcc\\xa4\\x57\\xed\\xc6\\x26\\xd3\\xea\\x29\\xed\\x4f\\xe3\\x15\\x4f\\xaf\\xec\\x14\\x44\\xda\\x74\\x34\\x3c\\x06\\xad\\x90\\xac\\x9d\\x17\\xb5\\x11\\xbc\\xb7\\x3b\\xb4\\x9d\\x90\\xba\\xfb\\x7c\\x7e\\xa8\\x00\\xbd\\x58\\x41\\x1d\\xf1\\x27\\x5c\\x3c\\xae\\x71\\xb7\\x00\\xa5\\xda\\xb4\\x91\\xa4\\x26\\x16\\x78\\x58\\x79\\x56\\xaa\\x4a\\x21\\x9e\\x1a\\xc6\\xdd\\x3f\\xb2\\xcb\\x8c\\x46\\x19\\x72\\x18\\xe7\\x26\\xdc\\x7e\\xd2\\x34\\x52\\x6a\\x6b\\x01\\xc0\\xd7\\x2c\\xb9\\x3a\\xb3\\xf4\\xf3\\x8a\\x08\\xe5\\x94\\x0b\\x3f\\x61\\xa7\\x2a\\xd2\\x78\\x9a\\x05\\x32\\x00\\x0f\\xac\\x1d\\x2d\\x2e\\x3a\\xd6\\x32\\xac\\x8b\\x62\\xbb\\x3f\\xf5\\xb9\\x9d\\x53\\x59\\x7b\\xf4\\xd4\\x4b\\x19\\x67\\x49\\x24\\xdf\\x9b\\x3d\\xb3\\xd0\\x25\\x3f\\x74\\x62\\x7c\\xca\\xb3\\x00\\x31\\xc8\\x5e\\x29\\x1c\\x58\\xb5\\xfa\\x91\\x67\\x52\\x2a\\x46\\x74\\x6f\\xc3\\x07\\x03\\x67\\x45\\xd4\\xf9\\x81\\x77\\x86\\xe5\\xd3\\x00\\xe6\\xc5\\xd5\\x03\\x12\\x5f\\xea\\x01\\xde\\xc3\\xe3\\xfe\\xdb\\xf3\\x86\\x1c\\xa2\\x62\\x7a\\x05\\x18\\xfb\\x2b\\x24\\xe5\\xa7\\xa0\\x14\\x17\\x87\\x19\\xe9\\xb3\\x45\\xf7\\xb2\\x49\\xce\\x3a\\x41\\x32\\x80\\xc8\\xde\\xb6\\x74\\xf5\\x9a\\x25\\xbe\\x92\\xa8\\xab\\x64\\x00\\xc7\\xc5\\x2b\\x07\\x28\\xae\\x34\\xe2\\x2b\\x2e\\xc2\\x00\\xc1\\xcb\\xab\\xa2\\xcc\\xd8\\xaf\\x29\\x24\\x9d\\x17\\xaf\\x60\\xc3\\x60\\x07\\xa7\\x22\\xfc\\x80\\x25\\x8a\\x7b\\xeb\\xab\\x1c\\xda\\xad\\x74\\x62\\xa8\\xb7\\x58\\x8c\\x2f\\x7e\\x27\\xc6\\xd0\\x7a\\xfc\\xf6\\x01\\x17\\xfe\\xd1\\x1b\\xd6\\x85\\x9e\\x75\\xe3\\xb4\\xfc\\xee\\x39\\x81\\x88\\x1e\\x95\\xdd\\x11\\x68\\x27\\xdd\\x4b\\x36\\x9a\\xf0\\x69\\xd3\\xc8\\xf2\\x67\\x6f\\x8a\"},\n{{0x26,0x45,0x04,0x60,0x4e,0x70,0xd7,0x2d,0xc4,0x47,0x4d,0xbb,0x34,0x91,0x3e,0x9c,0x0f,0x80,0x6d,0xfe,0x18,0xc7,0x87,0x9a,0x41,0x76,0x2a,0x9e,0x43,0x90,0xec,0x61,},{0xeb,0x2b,0x51,0x8c,0xe7,0xdc,0x71,0xc9,0x1f,0x36,0x65,0x58,0x16,0x51,0xfd,0x03,0xaf,0x84,0xc4,0x6b,0xf1,0xfe,0xd2,0x43,0x32,0x22,0x35,0x3b,0xc7,0xec,0x51,0x1d,},{0xee,0xa4,0x39,0xa0,0x0f,0x7e,0x45,0x9b,0x40,0x2b,0x83,0x51,0x50,0xa7,0x79,0xee,0xd1,0x71,0xab,0x97,0x1b,0xd1,0xb5,0x8d,0xcc,0x7f,0x93,0x86,0xda,0xdd,0x58,0x3d,0xe8,0xdc,0x69,0xe2,0x67,0x12,0x1d,0xde,0x41,0xf0,0xf9,0x49,0x3d,0x45,0x0b,0x16,0x21,0x9c,0xdf,0x3c,0x22,0xf0,0x94,0x82,0xce,0x40,0x2f,0xe1,0x7c,0xa4,0x9e,0x08,},\"\\x90\\x1d\\x70\\xe6\\x7e\\xd2\\x42\\xf2\\xec\\x1d\\xda\\x81\\x3d\\x4c\\x05\\x2c\\xfb\\x31\\xfd\\x00\\xcf\\xe5\\x44\\x6b\\xf3\\xb9\\x3f\\xdb\\x95\\x0f\\x95\\x2d\\x94\\xef\\x9c\\x99\\xd1\\xc2\\x64\\xa6\\xb1\\x3c\\x35\\x54\\xa2\\x64\\xbe\\xb9\\x7e\\xd2\\x0e\\x6b\\x5d\\x66\\xad\\x84\\xdb\\x5d\\x8f\\x1d\\xe3\\x5c\\x49\\x6f\\x94\\x7a\\x23\\x27\\x09\\x54\\x05\\x1f\\x8e\\x4d\\xbe\\x0d\\x3e\\xf9\\xab\\x30\\x03\\xdd\\x47\\xb8\\x59\\x35\\x6c\\xec\\xb8\\x1c\\x50\\xaf\\xfa\\x68\\xc1\\x5d\\xad\\xb5\\xf8\\x64\\xd5\\xe1\\xbb\\x4d\\x3b\\xad\\xa6\\xf3\\xab\\xa1\\xc8\\x3c\\x43\\x8d\\x79\\xa9\\x4b\\xfb\\x50\\xb4\\x38\\x79\\xe9\\xce\\xf0\\x8a\\x2b\\xfb\\x22\\xfa\\xd9\\x43\\xdb\\xf7\\x68\\x37\\x79\\x74\\x6e\\x31\\xc4\\x86\\xf0\\x1f\\xd6\\x44\\x90\\x50\\x48\\xb1\\x12\\xee\\x25\\x80\\x42\\x15\\x3f\\x46\\xd1\\xc7\\x77\\x2a\\x06\\x24\\xbc\\xd6\\x94\\x1e\\x90\\x62\\xcf\\xda\\x75\\xdc\\x87\\x12\\x53\\x3f\\x40\\x57\\x33\\x5c\\x29\\x80\\x38\\xcb\\xca\\x29\\xeb\\xdb\\x56\\x0a\\x29\\x5a\\x88\\x33\\x96\\x92\\x80\\x8e\\xb3\\x48\\x1f\\xd9\\x73\\x5e\\xa4\\x14\\xf6\\x20\\xc1\\x43\\xb2\\x13\\x3f\\x57\\xbb\\x64\\xe4\\x47\\x78\\xa8\\xca\\x70\\x91\\x82\\x02\\xd1\\x57\\x42\\x61\\x02\\xe1\\xdf\\xc0\\xa8\\xf7\\xb1\\xae\\x48\\x7b\\x74\\xf0\\x27\\x92\\x63\\x31\\x54\\xdf\\xe7\\x4c\\xaa\\x1b\\x70\\x88\\xfd\\xa2\\x2f\\xa8\\xb9\\xbc\\x35\\x4c\\x58\\x5f\\x15\\x67\\x70\\x6e\\x29\\x55\\x49\\x38\\x70\\xf5\\x41\\x69\\xe0\\xd7\\x69\\x11\\x59\\xdf\\x43\\x89\\x79\\x61\\xd2\\x4a\\x85\\x2e\\xa9\\x70\\xc5\\x14\\x94\\x8f\\x3b\\x48\\xf7\\x1e\\xe5\\x86\\xe7\\x2e\\xc7\\x8d\\xb8\\x20\\xf2\\x53\\xe0\\x8d\\xb8\\x4f\\x6f\\x31\\x2c\\x43\\x33\\xbd\\x0b\\x73\\x2f\\xe7\\x58\\x83\\x50\\x77\\x83\\xe9\\xa1\\xfd\\x4f\\xba\\xb8\\xe5\\x87\\x0f\\x9b\\xf7\\xad\\x58\\xaa\"},\n{{0x2c,0xa7,0x44,0x7a,0x36,0x68,0xb7,0x48,0xb1,0xfd,0x3d,0x52,0xd2,0x08,0x0d,0x30,0xe3,0x4d,0x39,0x7b,0xb2,0x84,0x6c,0xaf,0x8f,0x65,0x9a,0xc1,0x68,0x78,0x8c,0xa5,},{0xab,0x33,0x1c,0xd4,0x0a,0x31,0xd0,0x17,0x3c,0x0c,0x8c,0x1c,0x17,0x00,0x25,0x32,0x80,0x7b,0xf8,0x9e,0x3e,0xdb,0x6d,0x34,0xc2,0xdd,0x82,0x94,0x63,0x2b,0x9f,0xbc,},{0xf9,0x3a,0xda,0x15,0xae,0x9c,0xd2,0xb5,0x4f,0x26,0xf8,0x6f,0x0c,0x28,0x39,0x2a,0xed,0x5e,0xb6,0xb6,0xb4,0x4d,0x01,0xa4,0xe3,0x3a,0x54,0xe7,0xda,0x37,0xc3,0x8e,0x8d,0x53,0x36,0x6f,0x73,0xfd,0x85,0xbe,0x64,0x2e,0x4e,0xc8,0x12,0x36,0xd1,0x63,0xf0,0xd0,0x25,0xe7,0x6c,0x8b,0xbd,0xd6,0x5d,0x43,0xdf,0x49,0xf0,0x9c,0x1f,0x01,},\"\\xa8\\x2b\\xcd\\x94\\x24\\xbf\\xfd\\xa0\\xf2\\xf5\\xe9\\xea\\xe1\\x78\\x35\\xdb\\xe4\\x68\\xf6\\x1b\\x78\\x5a\\xab\\x82\\x93\\x47\\x37\\xa9\\x1c\\x5f\\x60\\x2c\\xb7\\xc6\\x17\\xcd\\xff\\xe8\\x7c\\xad\\x72\\x6a\\x49\\x72\\xe1\\x5a\\x7b\\x8e\\xe1\\x47\\xf0\\x62\\xd2\\xa5\\xa4\\xd8\\x97\\x06\\xb5\\x71\\xfa\\x8a\\xa2\\xb9\\x59\\x81\\xc7\\x8a\\xbe\\xaa\\xae\\x86\\x20\\x3f\\xa2\\xc0\\xe0\\x72\\x97\\x40\\x6e\\xa8\\xc2\\x71\\x11\\xa8\\x6d\\xbe\\x1d\\x5a\\x7c\\x3b\\x7a\\xe9\\x30\\x90\\x4d\\x98\\x90\\xf6\\xd4\\xab\\xeb\\xd1\\x41\\x2a\\x73\\xad\\x5f\\xee\\xa6\\x4a\\xcf\\x06\\x5d\\x3e\\x63\\xb5\\xcb\\xe2\\x0c\\xf2\\x0b\\xbd\\x2d\\x8b\\x94\\xf9\\x05\\x3e\\xd5\\xf6\\x66\\x33\\x48\\x25\\x30\\x12\\x44\\x46\\x60\\x59\\x18\\xde\\x66\\x45\\x5e\\x8c\\xf4\\xb1\\x01\\xa1\\x27\\x23\\x3c\\x4e\\x27\\xd5\\xd5\\x5b\\xf9\\x5b\\xd3\\x19\\x5d\\x03\\x40\\xd4\\x35\\x31\\xfc\\x75\\xfa\\xf8\\xdd\\xed\\x52\\x75\\xbf\\x89\\x75\\x0d\\xe8\\x38\\xfd\\x10\\xc3\\x17\\x45\\xbe\\x4c\\xa4\\x1f\\xa8\\x71\\xcb\\x0f\\x9b\\x01\\x67\\x06\\xa1\\xa7\\xe3\\xc4\\x4b\\xb9\\x0a\\xc7\\xa8\\xad\\x51\\xe2\\x72\\x38\\x92\\x92\\xfd\\x6c\\x98\\xad\\x7a\\x06\\x9e\\x76\\xe3\\xf5\\xf3\\xe0\\xcc\\x77\\x0b\\x9e\\x9b\\x35\\xa7\\x65\\xd0\\xd9\\x37\\x12\\xd7\\xcd\\xab\\xd1\\x7e\\x5d\\x01\\xdd\\x81\\x83\\xaf\\x4a\\xd9\\x36\\x5d\\xb0\\xa0\\xfa\\x41\\x38\\x1f\\xce\\x60\\xa0\\x81\\xdf\\x1c\\x5a\\xb0\\xf8\\xc1\\x8f\\x95\\xa7\\xa8\\xb5\\x82\\xdf\\xff\\x7f\\x14\\x9e\\xa5\\x79\\xdf\\x06\\x23\\xb3\\x3b\\x75\\x08\\xf0\\xc6\\x63\\xf0\\x1e\\x3a\\x2d\\xcd\\x9d\\xfb\\xee\\x51\\xcc\\x61\\x52\\x20\\xfd\\xaf\\xfd\\xab\\x51\\xbd\\xae\\x42\\xcb\\x9f\\x7f\\xa9\\xe3\\xb7\\xc6\\x9c\\xc8\\xad\\xa5\\xcc\\xd6\\x42\\x52\\x9b\\xa5\\x14\\xfd\\xc5\\x4f\\xcf\\x27\\x20\\xb8\\xf5\\xd0\\x8b\\x95\"},\n{{0x49,0x4e,0xa9,0xbc,0xce,0x26,0x88,0x5b,0x7d,0x17,0xd1,0xfc,0x11,0x44,0x48,0xf2,0x39,0xf0,0xce,0x46,0xe5,0xf2,0x47,0xb4,0xc9,0x99,0xfa,0x86,0x29,0x69,0x24,0x72,},{0x69,0x01,0xe5,0xef,0xae,0x57,0x53,0x6b,0xa5,0xfd,0xd9,0x6b,0x59,0x65,0x73,0x59,0x06,0x5f,0x25,0xd3,0x91,0xa1,0xaa,0x8c,0xdc,0x0d,0x38,0xbb,0x5d,0x53,0xc1,0x39,},{0x54,0x8a,0x09,0x3a,0x68,0x03,0x61,0xb7,0xdc,0x56,0xf1,0x45,0x03,0xb5,0x5e,0xee,0xc3,0xb3,0xf4,0xfd,0x4c,0xa9,0x9d,0x6a,0xed,0xce,0x08,0x30,0xf7,0xf4,0xae,0x2f,0x73,0x28,0x53,0x9b,0x34,0xc4,0x8f,0xc9,0x76,0x09,0x22,0x33,0x3d,0xae,0x9c,0x7c,0x01,0x7e,0x7d,0xb7,0x3b,0x8f,0xaa,0x6c,0x06,0xbe,0x05,0xe3,0x47,0x99,0x2b,0x06,},\"\\x3b\\xad\\xbf\\xa5\\xf5\\xa8\\xaa\\x2c\\xce\\x0a\\x60\\xe6\\x86\\xcd\\xce\\x65\\x4d\\x24\\x45\\x2f\\x98\\xfd\\x54\\x87\\x2e\\x73\\x95\\xb3\\x94\\x64\\x38\\x0a\\x0e\\x18\\x55\\x57\\xea\\x13\\x4d\\x09\\x57\\x30\\x86\\x4f\\x42\\x54\\xd3\\xdd\\x94\\x69\\x70\\xc1\\x0c\\x80\\x4f\\xcc\\x08\\x99\\xdf\\xa0\\x24\\x20\\x5b\\xe0\\xf8\\x0b\\x1c\\x75\\x44\\x95\\x23\\x32\\x4f\\xe6\\xa0\\x75\\x1e\\x47\\xb4\\xff\\x48\\x22\\xb8\\xc3\\x3e\\x9e\\xaf\\x1d\\x1d\\x96\\xe0\\xde\\x3d\\x4a\\xcd\\x89\\x69\\x6b\\x7f\\xcc\\x03\\xd4\\x9f\\x92\\xf8\\x2b\\x97\\x25\\x70\\x0b\\x35\\x0d\\xb1\\xa8\\x76\\x15\\x36\\x95\\x45\\x56\\x1b\\x85\\x99\\xf5\\xea\\x92\\x0a\\x31\\x0a\\x8b\\xaf\\xc0\\xe8\\xd7\\x46\\x8c\\xbf\\x6f\\x38\\x20\\xe9\\x43\\x59\\x4a\\xfd\\xd5\\x16\\x6e\\x4e\\x33\\x09\\xdd\\xdd\\x76\\x94\\xef\\x67\\xe6\\x94\\xf3\\x4f\\xc6\\x27\\x24\\xff\\x96\\xac\\x33\\x64\\x17\\x6f\\x34\\xe8\\xa0\\x2b\\x4c\\xf5\\x69\\xdb\\x5b\\x8f\\x77\\xd5\\x85\\x12\\xae\\xda\\xbf\\x0b\\xcd\\x1c\\x2d\\xf1\\x2d\\xb3\\xa9\\x47\\x3f\\x94\\x8c\\x5c\\x32\\x43\\x30\\x9a\\xae\\x46\\xc4\\x9e\\xfd\\x08\\x8b\\x60\\xf3\\x1a\\x8a\\x72\\xad\\x7e\\x5a\\x35\\xac\\xc5\\xd8\\x9f\\xa6\\x68\\x07\\xeb\\x5d\\x3b\\xa9\\xcd\\xf0\\x8d\\x47\\x53\\xcb\\x85\\x08\\x9e\\xe3\\x6f\\x5c\\x96\\xb4\\x32\\xb6\\x92\\x83\\x52\\xaf\\xad\\x58\\x01\\x22\\x25\\xd6\\x15\\x7f\\x9e\\x36\\x11\\x42\\x6d\\xf9\\x21\\xb6\\xd1\\xd8\\x37\\x46\\x28\\xa6\\x30\\x31\\xe9\\xff\\xb9\\x0e\\x42\\xff\\xbb\\xa0\\x21\\xf1\\x74\\xf6\\x85\\x03\\x15\\x54\\x30\\x15\\x2c\\x91\\x55\\xdc\\x98\\xff\\xa2\\x6c\\x4f\\xab\\x06\\x5e\\x1f\\x8e\\x46\\x22\\xc2\\xf2\\x8a\\x8c\\xb0\\x43\\x11\\x0b\\x61\\x74\\x41\\x14\\x0f\\x8e\\x20\\xad\\xc1\\x6f\\x79\\x9d\\x1d\\x50\\x96\\xb1\\xf5\\x05\\x32\\xbe\\x50\\x42\\xd2\\x1b\\x81\\xea\\x46\\xc7\"},\n{{0x00,0xd7,0x35,0xeb,0xae,0xe7,0x5d,0xd5,0x79,0xa4,0x0d,0xfd,0x82,0x50,0x82,0x74,0xd0,0x1a,0x15,0x72,0xdf,0x99,0xb8,0x11,0xd5,0xb0,0x11,0x90,0xd8,0x21,0x92,0xe4,},{0xba,0x02,0x51,0x7c,0x0f,0xdd,0x3e,0x26,0x14,0xb3,0xf7,0xbf,0x99,0xed,0x9b,0x49,0x2b,0x80,0xed,0xf0,0x49,0x5d,0x23,0x0f,0x88,0x17,0x30,0xea,0x45,0xbc,0x17,0xc4,},{0xdc,0xdc,0x54,0x61,0x19,0x37,0xd2,0xbd,0x06,0xca,0xcd,0x98,0x18,0xb3,0xbe,0x15,0xce,0x74,0x25,0x42,0x7a,0x75,0xf5,0x0d,0x19,0x7a,0x33,0x7a,0x3b,0x8b,0xa6,0x71,0x4e,0xf4,0x88,0x66,0xf2,0x43,0xbd,0x5a,0xc7,0x41,0x5e,0x91,0x45,0x17,0xa2,0xc1,0xc5,0xa9,0x53,0xf4,0x32,0xb9,0x9d,0xb0,0xe6,0x20,0xd6,0x4f,0x74,0xeb,0x85,0x05,},\"\\x59\\xc0\\xb6\\x9a\\xf9\\x5d\\x07\\x4c\\x88\\xfd\\xc8\\xf0\\x63\\xbf\\xdc\\x31\\xb5\\xf4\\xa9\\xbc\\x9c\\xec\\xdf\\xfa\\x81\\x28\\xe0\\x1e\\x7c\\x19\\x37\\xdd\\xe5\\xeb\\x05\\x70\\xb5\\x1b\\x7b\\x5d\\x0a\\x67\\xa3\\x55\\x5b\\x4c\\xdc\\xe2\\xbc\\xa7\\xa3\\x1a\\x4f\\xe8\\xe1\\xd0\\x3a\\xb3\\x2b\\x40\\x35\\xe6\\xda\\xdb\\xf1\\x53\\x20\\x59\\xee\\x01\\xd3\\xd9\\xa7\\x63\\x3a\\x0e\\x70\\x6a\\x11\\x54\\xca\\xb2\\x2a\\x07\\xcd\\x74\\xc0\\x6a\\x3c\\xb6\\x01\\x24\\x4c\\xf3\\xcf\\x35\\xa3\\x5c\\x31\\x00\\xba\\x47\\xf3\\x13\\x72\\xa2\\xda\\x65\\xdc\\xff\\x0d\\x7a\\x80\\xa1\\x05\\x5d\\x8a\\xa9\\x92\\x12\\xe8\\x99\\xaa\\xd7\\xf0\\x2e\\x94\\x9e\\x6f\\xee\\x4d\\x3c\\x9c\\xef\\xa8\\x50\\x69\\xea\\xff\\x1f\\x6a\\xd0\\x6f\\xc3\\x00\\xc8\\x71\\xab\\x82\\xb2\\xbe\\xdb\\x93\\x4d\\x20\\x87\\x5c\\x2a\\x26\\x32\\x42\\xcd\\xb7\\xf9\\xbe\\x19\\x2a\\x87\\x10\\xb2\\x4c\\x7e\\xa9\\x8d\\x43\\xda\\xec\\x8b\\xaa\\x55\\x53\\xc6\\x78\\xa3\\x8f\\x0e\\x0a\\xdf\\x7d\\x3f\\xf2\\xdc\\xc7\\x99\\xa1\\xdb\\xad\\x6e\\xab\\x1c\\x3d\\x94\\x58\\xa9\\xdb\\x92\\x2f\\x02\\xe7\\x5c\\xfa\\xb9\\xd6\\x5c\\x73\\x36\\xda\\xe7\\x18\\x95\\xd5\\xbb\\x15\\xca\\xc2\\x03\\xf2\\xb3\\x8b\\x99\\x96\\xc4\\x10\\xf8\\x65\\x5a\\xd2\\x2d\\x3c\\x09\\x1c\\x20\\xb7\\xf9\\x26\\xd4\\x5e\\x78\\x01\\x28\\xf1\\x97\\x47\\x46\\x2a\\xbc\\x5c\\x58\\x93\\x2f\\xbb\\x9e\\x0b\\xc6\\x2d\\x53\\x86\\x88\\x02\\xf1\\xb0\\x83\\xf1\\x83\\xb8\\xa1\\xf9\\x43\\x49\\x86\\xd5\\xcf\\x97\\xc0\\x4e\\x2f\\x3e\\x14\\x57\\x30\\xcb\\xa9\\x87\\x79\\xc7\\xfe\\xd0\\xca\\xb1\\xc0\\x5d\\x5e\\x46\\x53\\xc6\\xc3\\xf6\\x73\\x62\\x60\\xbc\\x78\\xee\\x43\\x72\\x86\\x2f\\xfe\\x9e\\x90\\x37\\x1d\\x76\\x2c\\x74\\x32\\x78\\x1f\\x35\\xce\\xd8\\x84\\xa4\\xba\\xca\\x05\\x65\\x3e\\xf2\\x5f\\x25\\xa6\\xf3\\xd5\\x62\\x83\\x08\"},\n{{0x8c,0x34,0xb9,0x05,0x44,0x0b,0x61,0x91,0x1d,0x1d,0x81,0x37,0xc5,0x3d,0x46,0xa1,0xa7,0x6d,0x46,0x09,0xaf,0x97,0x3e,0x18,0xeb,0x4c,0x57,0x09,0x29,0x56,0x27,0xbb,},{0xb6,0x9a,0x8b,0x2f,0xdf,0x5c,0x20,0xe7,0x34,0xc2,0xff,0xb2,0x94,0xbc,0x8a,0xe1,0x01,0x1d,0x66,0x4f,0x11,0xaf,0xe7,0xfb,0xc4,0x71,0x92,0x5c,0xf7,0x2f,0xa9,0x9d,},{0x3e,0x0b,0x72,0x07,0x3d,0xc9,0x37,0x5e,0xed,0xcc,0xa6,0xc4,0xfc,0x1c,0xd3,0x15,0x93,0x8a,0x05,0x0c,0x92,0x71,0x6b,0xd2,0x28,0x4f,0x46,0x29,0xa9,0x62,0xbe,0xec,0x0b,0x7d,0x7c,0xf1,0x6a,0xb9,0x23,0xd5,0x8f,0x5b,0x90,0xd3,0x90,0x1a,0x8e,0x5c,0x75,0xc8,0xf1,0x7d,0xab,0x99,0x98,0xe0,0x07,0xd8,0xc4,0x95,0x11,0x97,0x3d,0x0e,},\"\\x30\\xb5\\x7a\\x38\\x9b\\x48\\xa0\\xbe\\xb1\\xa4\\x84\\x32\\xbf\\xf6\\xb3\\x14\\xbd\\xed\\x79\\xc4\\xa1\\x76\\x3a\\x5a\\xcb\\x57\\xce\\xa1\\xbf\\xb4\\xc6\\xd0\\x16\\xcf\\x09\\x0f\\x5b\\xd0\\x5b\\xbd\\x11\\x4e\\x33\\xae\\x7c\\x17\\x78\\x2d\\xfa\\x26\\x4f\\x46\\xc4\\x5f\\x8c\\x59\\x9c\\x60\\x30\\x16\\xfe\\x9f\\xf0\\x5b\\x6b\\x5a\\x99\\xe9\\x2f\\xe7\\x13\\xa4\\xcd\\x5c\\x41\\xb2\\x92\\xed\\x2b\\xb2\\xe9\\xcf\\x33\\xa4\\x40\\x54\\x2e\\x82\\x1e\\xc8\\x2c\\xbf\\x66\\x5c\\x3f\\x02\\xe3\\xdc\\x33\\x7d\\x7f\\xdb\\x58\\xe3\\x1b\\x27\\xcb\\x29\\x54\\x54\\x14\\x68\\x81\\x46\\x98\\x51\\x0d\\xf1\\x8c\\x85\\xc8\\x1f\\xad\\x12\\xdb\\x11\\xec\\x6b\\x96\\x6f\\x49\\x30\\xda\\x56\\x46\\xb9\\x91\\xdb\\x97\\x44\\x50\\x97\\xda\\x30\\xda\\xb6\\x1c\\xda\\x53\\xa4\\x10\\x83\\xcb\\x96\\xad\\xd1\\x9d\\xe6\\xc5\\xee\\xc3\\x23\\xbc\\xa9\\xd3\\x53\\x0e\\x38\\xc0\\x0b\\x35\\xaf\\x73\\x60\\x07\\x76\\x01\\xbe\\x6a\\xc9\\x7f\\x30\\x30\\xf9\\x30\\xa2\\x7b\\x90\\xfe\\x8b\\x69\\x11\\xba\\xe3\\x89\\x06\\x5a\\xdc\\x15\\xe1\\x88\\x23\\x00\\xe2\\xa0\\x03\\x27\\x4d\\x23\\x18\\x2d\\x5e\\xfd\\x5b\\xa4\\xb9\\x13\\x0c\\x07\\xbd\\x5c\\x65\\xfe\\xcb\\x8b\\x5c\\xb7\\xeb\\x38\\x83\\x6b\\x31\\x8b\\xef\\xdf\\xd7\\x7d\\xe4\\xd6\\xca\\x01\\x81\\xf7\\x7a\\xe5\\x74\\x08\\x91\\x68\\x32\\x25\\xf5\\x49\\xdd\\x84\\x26\\x14\\x5c\\x97\\xc5\\x81\\x8c\\x31\\x9f\\x7a\\xb2\\xd8\\x68\\xe1\\xa4\\x1c\\xea\\xb6\\x4c\\x08\\x51\\x16\\x06\\x98\\x97\\xbf\\x2c\\xa3\\x66\\x76\\x52\\x40\\x61\\x55\\xed\\x06\\x46\\x43\\x1b\\x6d\\xe1\\xcc\\xc0\\x3b\\x42\\x79\\xae\\x4d\\x32\\x66\\x79\\x26\\x5d\\xce\\x82\\x04\\x8e\\x72\\x98\\xe1\\xf8\\x7f\\xce\\xc0\\x76\\x8a\\xc0\\xf5\\xd8\\xff\\x84\\xf7\\x21\\x0b\\xe5\\x4d\\x41\\x1a\\xf8\\xed\\xea\\x72\\x17\\xf4\\xe5\\x94\\x13\\x12\\x1e\\x14\\x8c\\x60\\xda\"},\n{{0x77,0xa8,0x3e,0x18,0xc9,0xf0,0x00,0xee,0xff,0x7d,0xee,0xac,0x95,0x9e,0xcb,0xa2,0x20,0x6c,0x0a,0xa3,0x9d,0x2f,0x0e,0x2a,0xed,0x57,0x29,0x48,0x2a,0x7a,0x02,0x29,},{0x62,0xb1,0xb3,0x16,0x13,0x55,0x96,0xbf,0xbc,0xa6,0x03,0x7e,0xd8,0x47,0xc6,0x1f,0xb7,0xf0,0x9f,0xa3,0x6c,0xe9,0x0a,0xbb,0x77,0x89,0xb8,0x6f,0x76,0x8b,0x59,0xdd,},{0x1e,0xaa,0xd8,0x42,0x0a,0xc1,0x2c,0x99,0xac,0x1f,0xf4,0x47,0x66,0x78,0xe3,0xcb,0xbe,0x94,0xda,0x6a,0x79,0x7f,0x17,0x46,0x64,0xd5,0xee,0x0f,0x64,0x14,0x33,0xfb,0x1e,0x7c,0xb2,0xf5,0x61,0x3e,0x10,0x80,0x5d,0xf8,0x65,0x4c,0xd8,0xe0,0xd4,0x5d,0x96,0x23,0x09,0x32,0xbc,0x7f,0x20,0xb0,0x4e,0xae,0x83,0x64,0x35,0x13,0x43,0x09,},\"\\xf3\\xd5\\xfa\\x2a\\xca\\xef\\xd8\\x58\\xf1\\xdf\\x26\\xe0\\x30\\x59\\xcd\\xcb\\xc2\\x46\\x8a\\xd7\\x4a\\xfc\\x99\\x3d\\x0d\\xb9\\xc4\\xcd\\xe4\\x11\\x3f\\x8d\\x55\\xc7\\xda\\x71\\xd3\\x8b\\xa0\\x65\\x20\\x53\\x1c\\x61\\xfd\\xdb\\x5f\\x33\\xd5\\xf0\\x35\\x3b\\xe2\\x37\\x6e\\x58\\x07\\x11\\xbe\\x45\\xc0\\xa3\\x0b\\x1f\\xa0\\x1b\\x55\\xe2\\x28\\xc6\\xfa\\x35\\xe3\\xf9\\x5b\\x67\\x90\\x9f\\xc7\\xdf\\x3f\\xd4\\x64\\xd9\\x3d\\x66\\x1a\\x92\\x6f\\x9d\\x11\\xf7\\x55\\x0c\\x17\\xfb\\xcc\\x34\\x96\\x52\\x6e\\x8f\\x10\\xe0\\xc8\\x91\\x66\\x77\\xb2\\xbe\\x5b\\x31\\x9b\\x68\\x8f\\x21\\xe8\\x1a\\xaa\\x94\\x82\\xe5\\xc9\\x3e\\x64\\xce\\x8c\\x43\\x7b\\x9c\\x1e\\x14\\xfe\\xfe\\xd7\\x0a\\x3f\\xee\\x56\\x88\\x11\\xdc\\x31\\xca\\xda\\xb3\\xd5\\xb2\\x20\\x25\\x44\\x65\\x33\\x6d\\xc4\\xd9\\x7a\\x3b\\xd0\\x96\\xb5\\xe0\\x65\\xe0\\xcf\\xbe\\x82\\x84\\x9e\\x2c\\x19\\x05\\xac\\xa4\\x86\\x53\\x3f\\x0d\\xa7\\xa6\\x1f\\x1e\\x9a\\x55\\xb8\\xe2\\xa8\\x32\\x62\\xde\\xeb\\x59\\xf2\\xb1\\x3d\\x3a\\x8a\\xef\\x57\\x00\\x84\\x5b\\x83\\xb2\\x5a\\xe2\\x18\\x3c\\x0d\\xda\\xc0\\xce\\x42\\xf8\\xd2\\x56\\x74\\xcb\\x0d\\x0d\\x22\\x0a\\x6d\\xe7\\xc1\\x85\\x8b\\xb0\\x7d\\x59\\xa3\\x37\\x23\\x44\\xd9\\x44\\x60\\x2a\\xa4\\x51\\xd2\\xb9\\x37\\xdb\\x0f\\xe6\\xfe\\xca\\x0b\\xeb\\xa8\\x17\\x21\\xfc\\x36\\x1e\\xa7\\x50\\x9e\\x2b\\x6d\\x39\\x7e\\x1c\\x19\\x1b\\x56\\xf5\\x4a\\xb4\\x36\\xd0\\xd2\\x7a\\xb4\\xc0\\x61\\xbd\\x66\\x1a\\xd1\\xa4\\x45\\x23\\x87\\xe8\\x73\\x57\\x54\\xd0\\x7f\\xa7\\xef\\x4d\\x45\\x48\\xb1\\x72\\x58\\x24\\x25\\xb2\\x99\\x04\\x6e\\x63\\x01\\xb5\\xba\\x6b\\x91\\x44\\x18\\xf1\\x49\\xcf\\x72\\x2e\\x10\\xbd\\xe2\\xe0\\xd4\\x17\\x00\\xf1\\x2c\\x84\\x29\\xfc\\x89\\x7b\\x78\\x19\\xda\\x92\\x29\\x22\\x40\\xcd\\x45\\x56\\x54\\x58\\xc9\\xa7\\xb2\\x9c\\x12\"},\n{{0x73,0xb0,0x33,0x73,0xef,0x1f,0xd8,0x49,0x00,0x5e,0xcd,0x62,0x70,0xdd,0x99,0x06,0xf1,0x9f,0x44,0x39,0xe4,0x03,0x76,0xcd,0xbc,0x52,0x09,0x02,0xbc,0x97,0x68,0x12,},{0x66,0x37,0x19,0xe0,0x8b,0xa3,0xba,0x16,0x66,0xf6,0x06,0x9a,0x3f,0x54,0x99,0x18,0x66,0xb1,0x8c,0xc6,0xbe,0x41,0x99,0x1b,0x02,0xeb,0x30,0x26,0xff,0x9e,0x15,0x5f,},{0xa4,0x0a,0xbe,0x98,0xfc,0x69,0xda,0x8a,0x1f,0xf9,0xff,0x5c,0x2c,0xca,0x93,0x63,0x2e,0x97,0x59,0x80,0xee,0x8b,0x82,0xc3,0xc3,0x76,0x02,0x2d,0x65,0x24,0xab,0x73,0x6d,0x01,0xb0,0x72,0xf2,0xb6,0x81,0xb5,0xf1,0xcd,0x3e,0xa0,0x67,0x01,0x2e,0xd6,0xd0,0x74,0xe9,0x49,0xc4,0x23,0x27,0xa3,0x66,0xca,0xa9,0xe4,0x75,0x0a,0x3c,0x08,},\"\\xd5\\xc2\\xde\\xab\\xa7\\x95\\xc3\\x0a\\xba\\x32\\x1b\\xc7\\xde\\x69\\x96\\xf0\\xd9\\x0e\\x4d\\x05\\xc7\\x47\\xfb\\x4d\\xae\\x8f\\x34\\x51\\x89\\x5d\\xef\\x6e\\x16\\xe7\\x2f\\x38\\xea\\xce\\x75\\x6f\\x36\\x63\\x5f\\x8f\\xb0\\xb7\\x2a\\x3a\\x0c\\x1f\\x54\\x66\\x38\\x17\\xa9\\x4d\\x4f\\xd3\\x46\\xf8\\x35\\xab\\x0e\\x65\\x7f\\x00\\x1a\\x6f\\x2c\\xec\\xb8\\x6d\\x08\\x25\\xbd\\x02\\x63\\x92\\x54\\xf7\\xf7\\xf3\\x8c\\xa9\\x9d\\xbb\\x86\\xc6\\x4a\\x63\\x3f\\x73\\xba\\xf9\\x33\\xaa\\xe3\\x56\\x32\\x81\\xf4\\x00\\x5e\\x2d\\x0e\\x7c\\xec\\x9f\\xbd\\xe8\\xe5\\x88\\xa9\\x57\\xe2\\x11\\x06\\x8b\\xe6\\x5b\\x3d\\x3d\\x35\\xbf\\x4e\\x8d\\x5b\\xb3\\x47\\x83\\x33\\xdf\\x9c\\xed\\x9b\\x2a\\xba\\xf4\\x86\\x97\\x99\\x4a\\x14\\x5e\\x93\\x21\\x49\\x9f\\xc5\\xee\\x56\\x0f\\x4f\\xbb\\x68\\x49\\xe1\\xae\\x8e\\xb3\\xd1\\xde\\x00\\x83\\xa2\\x1a\\x03\\xf6\\xa6\\xb2\\x81\\x76\\xf0\\x13\\x0d\\x38\\x95\\xe5\\x0e\\x75\\xe3\\xd7\\xd0\\x94\\x7a\\x7b\\xc2\\xc5\\xb9\\xff\\x69\\x89\\x5d\\x27\\x79\\x14\\x42\\xba\\x8d\\x0f\\x21\\x80\\x71\\x2b\\x56\\x7f\\x71\\x2e\\xa9\\x12\\xf3\\xb0\\xd9\\x2c\\x19\\x34\\x2e\\x01\\x06\\xff\\x1d\\x87\\xb4\\x6a\\xd3\\x3a\\xf3\\x00\\xb9\\x08\\x55\\xba\\x97\\x69\\xd3\\x66\\xe7\\x94\\x25\\xd9\\x8e\\x4d\\xe1\\x99\\x05\\xa0\\x45\\x77\\x70\\x7c\\xbe\\x62\\x5b\\x84\\x69\\x17\\x81\\xcd\\x26\\xbf\\x62\\x26\\x0b\\x4a\\x8b\\xd6\\x05\\xf7\\x7a\\xf6\\xf9\\x70\\xe1\\xb3\\xa1\\x12\\xe8\\x91\\x83\\x44\\xbd\\x0d\\x8d\\x2e\\x41\\xdf\\xd2\\xce\\x98\\x95\\xb0\\x24\\x6e\\x50\\x88\\x7a\\xa3\\xa5\\x77\\xff\\x73\\xbe\\x4b\\x6a\\xe6\\x0f\\xeb\\x0c\\xa3\\x6f\\x6a\\x5f\\x81\\x71\\xed\\x20\\x9e\\x5c\\x56\\x65\\x29\\xc0\\x94\\x0d\\x9b\\x4b\\xd7\\x44\\xcc\\xee\\x56\\xe5\\x4a\\x9a\\x0c\\x6e\\x4d\\xa5\\x20\\xdd\\x31\\x5c\\x28\\x72\\xb0\\x2d\\xb5\\x63\\x70\\x3e\"},\n{{0xea,0xb1,0x79,0xe4,0x1e,0xd5,0xc8,0x89,0xff,0xe6,0xaa,0xbd,0xc0,0x54,0xfa,0xf1,0x30,0x7c,0x39,0x5e,0x46,0xe3,0x13,0xe1,0x7a,0x14,0xfe,0x01,0x02,0x3f,0xfa,0x30,},{0x86,0xf3,0x47,0x46,0xd3,0xf7,0xa0,0x1d,0xdb,0xe3,0x22,0xf1,0xac,0xa5,0x6d,0x22,0x85,0x6d,0x38,0x73,0x3a,0x3a,0x69,0x00,0xbb,0x08,0xe7,0x76,0x45,0x0e,0xc8,0x03,},{0x14,0x3c,0xb2,0x80,0x27,0xc2,0xf8,0x2e,0x37,0x5e,0x5f,0x34,0x0e,0x7f,0xe6,0xe6,0x0c,0xe7,0xbd,0x51,0x00,0x0b,0x49,0xc7,0x41,0x68,0xaf,0x85,0xe2,0x6e,0xd2,0xed,0x63,0x0e,0xd2,0x67,0x20,0x90,0x16,0x4c,0xc5,0x4b,0x05,0x2d,0xa6,0x94,0xeb,0xdd,0x21,0xa2,0x1b,0x30,0x53,0xf4,0xdc,0xfd,0x78,0x95,0xea,0x5f,0x6c,0x8a,0xa8,0x0d,},\"\\x97\\x10\\x95\\xce\\xbe\\x50\\x31\\x53\\x02\\x24\\x38\\x7c\\x5c\\x31\\x96\\x6e\\x38\\x9b\\x85\\x66\\x39\\x00\\x54\\xcf\\x45\\x26\\x4b\\x44\\xe1\\x89\\x64\\xb7\\xbe\\x52\\xc3\\x3c\\x4f\\xfb\\x25\\x9a\\xf1\\x62\\x83\\x43\\x8f\\xa1\\x5d\\xd6\\x6b\\xc7\\x79\\x1b\\x75\\x33\\xef\\x10\\xcb\\x0b\\xea\\xb5\\x24\\xa6\\x43\\x76\\x26\\xf4\\xcc\\x74\\x51\\x28\\x51\\xad\\xcc\\x2f\\xb1\\x29\\x05\\x5a\\x48\\x2c\\x61\\x10\\x73\\x83\\xfb\\x7c\\x52\\x41\\x83\\x1d\\x55\\x51\\x63\\x4e\\xef\\x0d\\xc0\\xb8\\xf9\\x05\\x3a\\x00\\x97\\x1a\\xa8\\xfa\\x1a\\xe0\\x89\\x8e\\x4b\\x48\\x1b\\x67\\x07\\xe9\\x7c\\x0f\\x94\\x20\\x40\\xb3\\x39\\xd9\\x2f\\xc1\\x7b\\xba\\xde\\x74\\x67\\x5a\\xf2\\x43\\xd8\\xb2\\xda\\xfb\\x15\\xb1\\xdb\\x55\\xd1\\x24\\x15\\xb8\\x5f\\x30\\x37\\x29\\x19\\x30\\xab\\x61\\x60\\x0b\\xa3\\x43\\x1f\\x8e\\xb4\\x25\\xbe\\x44\\x91\\x61\\x47\\x28\\xaf\\x10\\x1e\\x81\\xc0\\x91\\xf3\\x48\\xbc\\x5f\\xfd\\x1b\\xde\\x6a\\xe6\\xca\\xd5\\xc1\\x5b\\x3a\\xa7\\x35\\x80\\x78\\xcc\\x4e\\xff\\xb5\\x4a\\x86\\xe7\\xf0\\xe0\\xc5\\x5e\\x4c\\xfe\\x0a\\x54\\x60\\x5e\\xd4\\x43\\xfd\\xf2\\xaa\\xba\\x01\\x65\\x85\\xda\\x61\\x7e\\x77\\x34\\x1d\\x52\\x88\\x9d\\x75\\xdd\\x54\\x0d\\x39\\xfe\\x8b\\x79\\x93\\xed\\x70\\x5c\\xfd\\xde\\xa0\\xcb\\x0d\\x5a\\x73\\x1d\\x6b\\xfc\\xdb\\x81\\x6a\\xfa\\xff\\x47\\xe9\\x63\\xee\\xde\\xbd\\xf2\\x41\\xaf\\x55\\x93\\x35\\x3d\\x6d\\x40\\x1a\\x34\\xf0\\x29\\xa8\\xcd\\xeb\\x19\\x04\\xcc\\x2c\\xaa\\x4f\\x96\\x35\\xcc\\x2b\\xa6\\xb7\\xb1\\xa2\\x9d\\xa6\\x25\\xff\\xc3\\x83\\xbe\\x2f\\x5a\\x8f\\x1f\\xa4\\xf3\\x9b\\x2d\\x4b\\x4f\\x4c\\x2d\\x88\\x38\\xce\\x25\\x8a\\x04\\xd4\\xa1\\x20\\x49\\x3f\\xdf\\x07\\xf6\\x8c\\x0f\\xfd\\x1c\\x16\\xb7\\x68\\xa3\\x5c\\x55\\xfe\\xa2\\xca\\xc6\\x96\\xb5\\xc2\\x0e\\xfc\\x10\\x86\\x5c\\xde\\x8a\\x64\\x62\\x7d\\xcd\"},\n{{0xfb,0xf1,0x46,0xeb,0xd5,0x10,0x75,0x57,0x0e,0xc5,0x1a,0xc4,0x10,0xae,0x9f,0x39,0x1d,0xb7,0x5b,0x61,0x0a,0xda,0x63,0x62,0xb4,0xdb,0xd9,0x49,0x65,0x6c,0xfb,0x66,},{0xbe,0x7c,0x2f,0x5b,0x21,0xd7,0x46,0xc8,0xea,0x32,0x45,0xce,0x6f,0x26,0x8e,0x9d,0xa7,0x4e,0x00,0xfa,0x85,0xc9,0xc4,0x75,0x26,0x0c,0x68,0xfa,0x1a,0xf6,0x36,0x1f,},{0x67,0x68,0x00,0x6f,0xe0,0xf2,0x01,0xb2,0x17,0xdd,0x10,0xeb,0x05,0xd4,0xb8,0x2a,0xdc,0xfe,0xb2,0xec,0xfc,0x83,0x73,0xc3,0x30,0x8f,0x41,0x50,0x39,0x48,0x11,0xeb,0x60,0x49,0x18,0x81,0xa2,0xe5,0x3d,0x12,0x89,0xd9,0x64,0x78,0xe1,0x8a,0x64,0xc3,0x4b,0x2a,0x19,0x83,0x2c,0xdc,0xcf,0xd9,0x6a,0x2e,0x4a,0x0c,0x46,0x9f,0xdc,0x0b,},\"\\xcd\\x7a\\xd4\\xf1\\x7f\\xcf\\xf7\\x3a\\xcc\\x40\\x2d\\xc1\\x02\\xd0\\x90\\x79\\xb2\\x9a\\xaf\\x2a\\x0f\\x4b\\x27\\xcf\\x6b\\xee\\xb1\\xe2\\xb2\\x3d\\x19\\xab\\x47\\xde\\xb3\\xae\\x1b\\xec\\xd6\\x88\\x61\\xea\\x27\\x9c\\x46\\x69\\x17\\x38\\xf4\\xff\\xf4\\x7c\\x43\\x04\\x7c\\x4f\\x8b\\x56\\xb6\\xbb\\xcc\\x3f\\xde\\x07\\x23\\xd4\\x41\\x20\\xdc\\xd3\\x07\\xa6\\x31\\x0d\\xc4\\xf3\\x66\\xb8\\xf3\\xcd\\x52\\xdb\\x19\\xb8\\x26\\x6a\\x48\\x7f\\x78\\x72\\x39\\x1c\\x45\\xfe\\x0d\\x32\\x48\\xa7\\xab\\xf2\\xc2\\x00\\x22\\xd3\\x76\\x95\\x47\\xf6\\x83\\x06\\x7d\\xcc\\x36\\x3c\\xd2\\x2f\\xd7\\xcd\\xa3\\xca\\xdc\\x15\\x80\\x40\\x56\\xf0\\xe2\\xaa\\x2b\\x79\\x50\\x08\\xc5\\x98\\xbe\\x7a\\x96\\x18\\x05\\xe6\\xdf\\x29\\x1b\\xa3\\x04\\x1c\\x47\\xff\\x56\\x40\\x27\\x5f\\x46\\xe6\\xae\\x82\\x09\\x2d\\x21\\xab\\xcb\\xcf\\xba\\x11\\xe7\\x30\\x21\\x60\\x08\\x82\\x2d\\xe3\\xce\\x46\\x24\\x00\\x59\\x6d\\xa7\\x9f\\x7a\\xe5\\xd1\\xdf\\x83\\x89\\x11\\x2a\\xd9\\x88\\x68\\xfa\\x94\\xfb\\x05\\x46\\xbf\\xe6\\xa6\\x7a\\xa8\\xd2\\x8c\\x4d\\x32\\x07\\x2d\\x2e\\xad\\xd6\\x25\\x62\\x55\\xf1\\x8c\\x23\\x82\\xe6\\x62\\xdf\\xa9\\x22\\xa6\\x80\\xe0\\x6a\\x43\\x62\\x2c\\x48\\x71\\xd2\\x7d\\x18\\x07\\xf7\\xb2\\x70\\x30\\x70\\xc8\\x3d\\xb8\\xdd\\x92\\x9c\\x06\\x03\\x8b\\x21\\x83\\xcb\\x8e\\x2b\\x9e\\xc4\\xc7\\x78\\xd7\\xec\\xf9\\xe9\\xff\\xac\\x77\\xfa\\x77\\x37\\xb0\\x55\\xfe\\xac\\x2e\\x79\\x82\\xae\\xee\\xc0\\xb7\\x2f\\x1b\\xbc\\xa2\\x42\\x4e\\x1a\\x84\\x4b\\xba\\xc7\\x9c\\xb2\\xe7\\x40\\x0f\\x81\\xdc\\x44\\x9d\\x05\\x60\\xb5\\x21\\xa7\\xc1\\x6b\\xb4\\x16\\x7e\\x66\\x96\\x58\\x60\\x58\\xa9\\xb8\\xed\\x2e\\x51\\x16\\x69\\x0b\\x77\\xf2\\xa1\\x7e\\x5c\\x0b\\x16\\xa8\\x3d\\xcb\\xd2\\xe2\\x45\\x52\\x29\\x3e\\x25\\x8b\\x32\\xba\\x7f\\x84\\x49\\x44\\x37\\x93\\x42\\x69\\x86\\x27\"},\n{{0xdf,0xf0,0xeb,0x6b,0x42,0x6d,0xea,0x2f,0xd3,0x3c,0x1d,0x3f,0xc2,0x4d,0xf9,0xb3,0x1b,0x48,0x6f,0xac,0xb7,0xed,0xb8,0x50,0x29,0x54,0xa3,0xe8,0xda,0x99,0xd9,0xfd,},{0xc2,0x45,0x08,0x5e,0xce,0x69,0xfb,0x9a,0xa5,0x60,0xd0,0xc2,0x7f,0xdb,0x63,0x4f,0x7a,0x84,0x0d,0x41,0xd8,0x46,0x36,0x60,0xfb,0xe8,0x24,0x83,0xb0,0xf3,0xcc,0x3a,},{0x6b,0x48,0xb1,0x0f,0x54,0x5d,0xdb,0x7a,0x89,0xcd,0x58,0x29,0xf4,0xe5,0xb2,0x01,0x46,0xcf,0x6b,0xc9,0x6e,0x55,0x0d,0x06,0xf6,0x5d,0xe8,0xbd,0xae,0x7c,0xcd,0xde,0xd2,0x6c,0xd6,0x30,0xf8,0x6c,0x92,0x66,0xbc,0xcf,0x88,0xe9,0x24,0x03,0x3e,0x04,0xf8,0x3a,0x54,0xf8,0x29,0x0d,0x7f,0x73,0x4c,0xf8,0x67,0x3c,0xca,0x8f,0x97,0x03,},\"\\xe7\\xc9\\xe3\\x13\\xd8\\x61\\x60\\xf4\\xc7\\x4a\\xa0\\xae\\x07\\x36\\x9e\\xe2\\x2b\\x27\\xf8\\x1b\\x3f\\x69\\x09\\x7a\\xff\\xae\\x28\\xda\\xe4\\x84\\x83\\xfb\\x52\\xa5\\xc0\\x62\\x30\\x6b\\x59\\x61\\x0f\\x5c\\xdb\\xff\\x63\\x32\\xb1\\x96\\x0c\\xd6\\xf2\\xb8\\xf7\\xb4\\x15\\x78\\xc2\\x0f\\x0b\\xc9\\x63\\x7a\\x0f\\xdf\\xc7\\x39\\xd6\\x1f\\x69\\x9a\\x57\\x3f\\x1c\\x1a\\x0b\\x49\\x29\\x45\\x06\\xcf\\x44\\x87\\x96\\x5e\\x5b\\xb0\\x7b\\xbf\\x81\\x80\\x3c\\xb3\\xd5\\xcb\\x38\\x29\\xc6\\x6c\\x4b\\xee\\x7f\\xc8\\x00\\xed\\xe2\\x16\\x15\\x09\\x34\\xd2\\x77\\xde\\xa5\\x0e\\xdb\\x09\\x7b\\x99\\x2f\\x11\\xbb\\x66\\x9f\\xdf\\x14\\x0b\\xf6\\xae\\x9f\\xec\\x46\\xc3\\xea\\x32\\xf8\\x88\\xfd\\xe9\\xd1\\x54\\xea\\x84\\xf0\\x1c\\x51\\x26\\x5a\\x7d\\x3f\\xef\\x6e\\xef\\xc1\\xcc\\xdb\\xff\\xd1\\xe2\\xc8\\x97\\xf0\\x55\\x46\\xa3\\xb1\\xca\\x11\\xd9\\x51\\x7c\\xd6\\x67\\xc6\\x60\\xec\\x39\\x60\\xf7\\xa8\\xe5\\xe8\\x02\\x02\\xa7\\x8d\\x3a\\x38\\x8b\\x92\\xf5\\xc1\\xde\\xe1\\x4a\\xe6\\xac\\xf8\\xe1\\x7c\\x84\\x1c\\x95\\x57\\xc3\\x5a\\x2e\\xec\\xed\\x6e\\x6a\\xf6\\x37\\x21\\x48\\xe4\\x83\\xcc\\xd0\\x6c\\x8f\\xe3\\x44\\x92\\x4e\\x10\\x19\\xfb\\x91\\xcb\\xf7\\x94\\x1b\\x9a\\x17\\x6a\\x07\\x34\\x15\\x86\\x72\\x10\\x67\\x04\\x10\\xc5\\xdb\\xd0\\xac\\x4a\\x50\\xe6\\xc0\\xa5\\x09\\xdd\\xfd\\xc5\\x55\\xf6\\x0d\\x69\\x6d\\x41\\xc7\\x7d\\xb8\\xe6\\xc8\\x4d\\x51\\x81\\xf8\\x72\\x75\\x5e\\x64\\xa7\\x21\\xb0\\x61\\xfc\\xd6\\x8c\\x46\\x3d\\xb4\\xd3\\x2c\\x9e\\x01\\xea\\x50\\x12\\x67\\xde\\x22\\x87\\x9d\\x7f\\xc1\\x2c\\x8c\\xa0\\x37\\x9e\\xdb\\x45\\xab\\xaa\\x6e\\x64\\xdd\\xa2\\xaf\\x6d\\x40\\xcc\\xf2\\x4f\\xbe\\xba\\xd7\\xb5\\xa8\\xd3\\xe5\\x20\\x07\\x94\\x5e\\xcd\\x3d\\xdc\\x1e\\x3e\\xfe\\xb5\\x22\\x58\\x1a\\xc8\\x0e\\x98\\xc8\\x63\\xba\\x0c\\x59\\x0a\\x3e\\xd9\\x5c\\xd1\"},\n{{0x9f,0x32,0x95,0x8c,0x76,0x79,0xb9,0x0f,0xd5,0x03,0x60,0x56,0xa7,0x5e,0xc2,0xeb,0x2f,0x56,0xec,0x1e,0xff,0xc7,0xc0,0x12,0x46,0x1d,0xc8,0x9a,0x3a,0x16,0x74,0x20,},{0x1d,0x72,0x69,0xdc,0xb6,0xd1,0xf5,0x84,0xe6,0x62,0xd4,0xce,0x25,0x1d,0xe0,0xab,0xa2,0x90,0xef,0x78,0xb9,0x7d,0x44,0x8a,0xfb,0x1e,0x53,0x33,0xf1,0x97,0x6d,0x26,},{0x98,0x81,0xa5,0x76,0x3b,0xdb,0x25,0x9a,0x3f,0xef,0xbb,0xa3,0xd9,0x57,0x16,0x2d,0x6c,0x70,0xb8,0x04,0xfa,0x94,0xab,0x61,0x34,0x06,0xa6,0xec,0x42,0x50,0x5b,0x87,0x89,0x46,0x5c,0xa1,0xa9,0xa3,0x3e,0x18,0x95,0x98,0x88,0x42,0x27,0x0c,0x55,0xe5,0xbd,0xd5,0x48,0x3f,0x6b,0x17,0xb3,0x17,0x81,0xb5,0x93,0x50,0x7a,0x6c,0x18,0x08,},\"\\xa5\\x6b\\xa8\\x6c\\x71\\x36\\x05\\x04\\x08\\x7e\\x74\\x5c\\x41\\x62\\x70\\x92\\xad\\x6b\\x49\\xa7\\x1e\\x9d\\xaa\\x56\\x40\\xe1\\x04\\x4b\\xf0\\x4d\\x4f\\x07\\x1a\\xd7\\x28\\x77\\x9e\\x95\\xd1\\xe2\\x46\\x05\\x84\\xe6\\xf0\\x77\\x35\\x45\\xda\\x82\\xd4\\x81\\x4c\\x91\\x89\\xa1\\x20\\xf1\\x2f\\x3e\\x38\\x19\\x81\\x3e\\x5b\\x24\\x0d\\x0f\\x26\\x43\\x6f\\x70\\xee\\x35\\x3b\\x4d\\x20\\xce\\xa5\\x4a\\x14\\x60\\xb5\\xb8\\xf1\\x00\\x8d\\x6f\\x95\\xf3\\xaa\\x2d\\x8f\\x1e\\x90\\x8f\\xce\\xd5\\x0d\\x62\\x4e\\x3a\\x09\\x69\\x38\\xb9\\x35\\x38\\x54\\xb9\\x6d\\xa4\\x63\\xa2\\x79\\x8a\\x5a\\x31\\x2e\\xc7\\x90\\x84\\x2c\\x10\\xc4\\x46\\xe3\\x35\\x0c\\x76\\x4b\\xf5\\xc9\\x72\\x59\\x3b\\x99\\x87\\xbf\\x23\\x25\\x6d\\xaa\\x88\\x94\\xd4\\x7f\\x22\\xe8\\x5b\\x97\\x60\\x7e\\x66\\xfc\\x08\\xa1\\x2c\\x78\\x9c\\x47\\x46\\x08\\x03\\x68\\xd3\\x21\\xbb\\x90\\x15\\xa1\\x15\\x5b\\x65\\x52\\x3a\\xd8\\xe9\\x9b\\xb9\\x89\\xb4\\x4e\\xac\\x75\\x6b\\x07\\x34\\xac\\xd7\\xc6\\x35\\x7c\\x70\\xb5\\x97\\x43\\x24\\x6d\\x16\\x52\\xd9\\x1b\\x0f\\x98\\x96\\x96\\x51\\x41\\x34\\x5b\\x99\\x45\\xcf\\x34\\x98\\x04\\x52\\xf3\\x50\\x29\\x74\\xed\\xb7\\x6b\\x9c\\x78\\x5f\\xb0\\xf4\\x39\\x52\\x66\\xb0\\x55\\xf3\\xb5\\xdb\\x8a\\xab\\x68\\xe9\\xd7\\x10\\x2a\\x1c\\xd9\\xee\\x3d\\x14\\x25\\x04\\xf0\\xe8\\x8b\\x28\\x2e\\x60\\x3a\\x73\\x8e\\x05\\x1d\\x98\\xde\\x05\\xd1\\xfc\\xc6\\x5b\\x5f\\x7e\\x99\\xc4\\x11\\x1c\\xc0\\xae\\xc4\\x89\\xab\\xd0\\xec\\xad\\x31\\x1b\\xfc\\x13\\xe7\\xd1\\x65\\x3b\\x9c\\x31\\xe8\\x1c\\x99\\x80\\x37\\xf9\\x59\\xd5\\xcd\\x98\\x08\\x35\\xaa\\x0e\\x0b\\x09\\xbc\\xbe\\xd6\\x34\\x39\\x11\\x51\\xda\\x02\\xbc\\x01\\xa3\\x6c\\x9a\\x58\\x00\\xaf\\xb9\\x84\\x16\\x3a\\x7b\\xb8\\x15\\xed\\xbc\\x02\\x26\\xed\\xa0\\x59\\x5c\\x72\\x4c\\xa9\\xb3\\xf8\\xa7\\x11\\x78\\xf0\\xd2\\x0a\\x5a\"},\n{{0xf8,0x6d,0x6f,0x76,0x6f,0x88,0xb0,0x07,0x17,0xb7,0xd6,0x32,0x7e,0xb2,0x6c,0xf3,0xce,0xeb,0xa5,0x38,0x51,0x84,0x42,0x6f,0x9c,0xfd,0x82,0x95,0xe2,0x42,0x1f,0xf2,},{0xcb,0x1d,0x25,0x05,0x04,0x75,0x41,0x83,0x70,0x4d,0xbe,0x21,0xc3,0x23,0xd6,0x6f,0x9f,0x90,0x11,0x75,0x8f,0x6d,0x8d,0xab,0x6f,0x59,0x7b,0x19,0x96,0x62,0x14,0x5b,},{0xec,0x61,0xc0,0xb2,0x92,0x20,0x3a,0x8f,0x1d,0x87,0x23,0x5e,0xde,0x92,0xb7,0x47,0x23,0xc8,0xd2,0x34,0x08,0x42,0x37,0x73,0xae,0x50,0xb1,0xe9,0xbc,0x44,0x64,0xe0,0x3e,0x44,0x6d,0xa9,0xdc,0xe4,0xc3,0x9f,0x6d,0xd1,0x59,0xbe,0xa2,0x6c,0x00,0x9e,0xd0,0x01,0x20,0xbc,0x36,0xd4,0xa2,0x47,0xdc,0x0d,0x24,0xbc,0xef,0xcc,0x11,0x0c,},\"\\xda\\x84\\x23\\xa6\\xb7\\xa1\\x8f\\x20\\xaa\\x1f\\x90\\xed\\x23\\x31\\xb1\\x7b\\x24\\x06\\x7c\\x40\\x17\\x5b\\xc2\\x5d\\x81\\x09\\xe2\\x1d\\x87\\xac\\x00\\x52\\x8e\\xb3\\xb2\\xf6\\x6a\\x2b\\x52\\xdc\\x7e\\xf2\\xf8\\xce\\xcb\\x75\\xc7\\x60\\x99\\xcf\\xa2\\x3d\\xb8\\xda\\x89\\x70\\x43\\xba\\x1c\\xce\\x31\\xe2\\xdf\\xea\\x46\\x07\\x5f\\x5e\\x07\\x32\\x03\\xea\\xeb\\x3d\\x62\\xc8\\x4c\\x10\\x7b\\x6d\\xab\\x33\\xa1\\x4e\\xaf\\x14\\x9a\\xa6\\x18\\x50\\xc1\\x5f\\x5a\\x58\\xd8\\x8a\\x15\\xab\\xa9\\x19\\x6f\\x9e\\x49\\x5e\\x8d\\xbe\\xcb\\xcf\\x7e\\x84\\x44\\xf5\\xdd\\x72\\xa0\\x8a\\x09\\x9d\\x7f\\x62\\x09\\x99\\x0b\\x56\\x29\\x74\\xea\\x82\\x9e\\xf1\\x1d\\x29\\xa9\\x20\\xe3\\xa7\\x99\\xd0\\xd9\\x2c\\xb5\\x0d\\x50\\xf8\\x17\\x63\\x1a\\xb0\\x9d\\xe9\\x7c\\x31\\xe9\\xa0\\x5f\\x4d\\x78\\xd6\\x49\\xfc\\xd9\\x3a\\x83\\x75\\x20\\x78\\xab\\x3b\\xb0\\xe1\\x6c\\x56\\x4d\\x4f\\xb0\\x7c\\xa9\\x23\\xc0\\x37\\x4b\\xa5\\xbf\\x1e\\xea\\x7e\\x73\\x66\\x8e\\x13\\x50\\x31\\xfe\\xaf\\xcb\\xb4\\x7c\\xbc\\x2a\\xe3\\x0e\\xc1\\x6a\\x39\\xb9\\xc3\\x37\\xe0\\xa6\\x2e\\xec\\xdd\\x80\\xc0\\xb7\\xa0\\x49\\x24\\xac\\x39\\x72\\xda\\x4f\\xa9\\x29\\x9c\\x14\\xb5\\xa5\\x3d\\x37\\xb0\\x8b\\xf0\\x22\\x68\\xb3\\xba\\xc9\\xea\\x93\\x55\\x09\\x0e\\xeb\\x04\\xad\\x87\\xbe\\xe0\\x59\\x3b\\xa4\\xe4\\x44\\x3d\\xda\\x38\\xa9\\x7a\\xfb\\xf2\\xdb\\x99\\x52\\xdf\\x63\\xf1\\x78\\xf3\\xb4\\xc5\\x2b\\xcc\\x13\\x2b\\xe8\\xd9\\xe2\\x68\\x81\\x21\\x3a\\xbd\\xeb\\x7e\\x1c\\x44\\xc4\\x06\\x15\\x48\\x90\\x9f\\x05\\x20\\xf0\\xdd\\x75\\x20\\xfc\\x40\\x8e\\xa2\\x8c\\x2c\\xeb\\xc0\\xf5\\x30\\x63\\xa2\\xd3\\x05\\x70\\xe0\\x53\\x50\\xe5\\x2b\\x39\\x0d\\xd9\\xb6\\x76\\x62\\x98\\x48\\x47\\xbe\\x9a\\xd9\\xb4\\xcd\\x50\\xb0\\x69\\xff\\xd2\\x9d\\xd9\\xc6\\x2e\\xf1\\x47\\x01\\xf8\\xd0\\x12\\xa4\\xa7\\x0c\\x84\\x31\\xcc\"},\n{{0xa5,0xb3,0x4c,0xef,0xab,0x94,0x79,0xdf,0x83,0x89,0xd7,0xe6,0xf6,0xc1,0x46,0xaa,0x8a,0xff,0xb0,0xbe,0xc8,0x37,0xf7,0x8a,0xf6,0x46,0x24,0xa1,0x45,0xcc,0x34,0x4e,},{0x7b,0x0f,0x4f,0x24,0xd9,0x97,0x2b,0xc6,0xfe,0x83,0x82,0x6c,0x52,0x71,0x6a,0xd1,0xe0,0xd7,0xd1,0x9f,0x12,0x38,0x58,0xcb,0x3e,0x99,0xfa,0x63,0x6a,0xc9,0x63,0x1a,},{0x2f,0xbd,0x89,0x9d,0x72,0xb6,0xd3,0x9e,0x4f,0x45,0xb8,0xb6,0x2c,0xbb,0xd5,0xf3,0xc0,0xac,0xb1,0xad,0x85,0x40,0x91,0x3f,0xa5,0x85,0x87,0x7e,0x91,0xcc,0xfe,0xf7,0xbe,0xe5,0x0a,0x4b,0x0f,0x9f,0xed,0xf5,0xcc,0x1e,0x0d,0x19,0x53,0xad,0x39,0x9c,0x83,0x89,0xa9,0x33,0x91,0xe1,0xb7,0xc9,0x29,0xaf,0x6d,0x6f,0x3b,0x79,0x6c,0x08,},\"\\xe2\\x1e\\x98\\xaf\\x6c\\x2b\\xac\\x70\\x55\\x7e\\xb0\\xe8\\x64\\xda\\x2c\\x2b\\x4d\\x6c\\x0a\\x39\\xa0\\x59\\xd3\\x47\\x72\\x51\\xf6\\x17\\x8a\\x39\\x67\\x6f\\x47\\x49\\xe7\\xfb\\xea\\x62\\x3f\\x14\\x8a\\x43\\xa8\\xb0\\xfe\\x06\\x10\\x50\\x6f\\xa6\\x58\\xab\\xd2\\xf5\\xfa\\x39\\x19\\x8f\\x26\\x36\\xb7\\x24\\xdb\\x22\\xd1\\xae\\xbc\\x2a\\xb0\\x7b\\x2b\\x6d\\xbf\\xfd\\xee\\x8c\\xec\\xe8\\x1e\\x1a\\xf1\\x49\\x3e\\xc1\\x96\\x4e\\x16\\xbf\\x86\\xab\\x25\\x8c\\xa0\\xfe\\xb7\\x7e\\x3c\\x87\\x17\\xe4\\x40\\x38\\xab\\xe1\\x52\\xc1\\x4b\\xe1\\x56\\x60\\xbf\\x93\\xb2\\xd4\\x8d\\x92\\xc4\\xed\\x70\\x74\\xd2\\x49\\x42\\x10\\x62\\x1b\\xcf\\x20\\x4f\\xba\\x88\\xc6\\x54\\xd5\\xff\\xe0\\x1e\\x1a\\x53\\xd0\\x8f\\x70\\xbb\\x23\\x70\\x89\\xdc\\x80\\x72\\x16\\xff\\x6a\\x85\\xdb\\xec\\x31\\x02\\x23\\x7d\\x42\\x59\\x07\\x78\\xac\\xf6\\xc1\\xdc\\x56\\x6d\\x5a\\x2b\\xb9\\xa6\\x3b\\xc2\\x1c\\x32\\x9c\\x27\\x2e\\x59\\x65\\xba\\xee\\xb0\\xfe\\x89\\x1d\\xe3\\xcc\\x8c\\xbf\\xa8\\xe5\\x41\\xa8\\x88\\x1d\\xf6\\x89\\x42\\xe7\\xff\\x8d\\xc6\\x56\\xbd\\x08\\x57\\x5f\\x6a\\xaf\\x92\\x4a\\x17\\x6d\\x66\\x3b\\x1a\\x1f\\x43\\x57\\x4d\\x11\\x76\\x8c\\x70\\x1b\\x26\\x95\\x61\\xe5\\x54\\x38\\xdb\\xeb\\xfd\\x44\\x3d\\x21\\x15\\xcb\\x93\\x3d\\x1c\\xde\\x4a\\x91\\x5b\\x54\\xc3\\x25\\xc2\\x7f\\x49\\x9e\\xf0\\x2b\\xd0\\x12\\xff\\x1f\\x9a\\x36\\x39\\x09\\x22\\x88\\x76\\x00\\xfe\\x71\\x2b\\xcd\\xc2\\x3e\\xb5\\x97\\x4a\\x30\\x53\\x72\\xad\\x52\\x95\\x1f\\x83\\xf0\\xe5\\x8c\\xc4\\x9e\\x28\\x98\\x41\\x62\\x19\\x17\\xf1\\xfc\\xb0\\x23\\x51\\x47\\x24\\x0d\\xae\\x4c\\xf3\\xb9\\x9b\\x6a\\xc6\\xd8\\xde\\x94\\xef\\xe7\\xc4\\x43\\x67\\x14\\x50\\x8b\\xcd\\x01\\x14\\xc5\\x60\\x68\\xff\\x1b\\x7c\\x16\\xd5\\x1b\\xd9\\x06\\x43\\x78\\x74\\xd6\\x54\\x9a\\xb5\\xd8\\x08\\x78\\x96\\x87\\x2e\\xc8\\xa0\\x9d\\x74\\x12\"},\n{{0xad,0x75,0xc9,0xce,0x29,0x9c,0x4d,0x59,0x39,0x33,0x67,0xd7,0x7a,0x4c,0x9f,0x8d,0xf8,0xdc,0xec,0x76,0x5c,0x6d,0xbd,0x25,0xb5,0x27,0xfb,0x76,0x69,0x91,0x36,0x04,},{0xb9,0x91,0x05,0x48,0xfe,0x63,0x12,0xa1,0x19,0xc9,0x99,0x3e,0xeb,0xcf,0xb9,0xdc,0x90,0x03,0x0f,0xfb,0x0e,0x4d,0xe2,0xb7,0xcc,0xd2,0x3c,0xbe,0xb4,0xfe,0xf7,0x1b,},{0x6b,0x7e,0xf2,0x7b,0xcf,0xbf,0x2b,0x71,0x49,0x85,0x03,0x37,0x64,0xfc,0xcf,0xf5,0x55,0xe3,0xf5,0xbc,0x44,0x61,0x0d,0x6c,0x8c,0x62,0x11,0x7c,0xb3,0x83,0x1a,0x07,0xf4,0xa8,0xbd,0xdb,0x0e,0xae,0xd1,0xd4,0x6b,0x02,0x89,0xb1,0x5d,0xe1,0xaa,0x4d,0xcc,0x17,0xd7,0x1b,0xe9,0x6a,0x09,0xe6,0x6b,0xa4,0xdc,0x46,0x27,0xc7,0x87,0x05,},\"\\x62\\xfc\\x5a\\xb6\\x7d\\xeb\\x1f\\xee\\x9a\\xb6\\xcc\\xa3\\xb8\\x8a\\x1d\\xf1\\xe5\\x89\\xf0\\xfd\\x4a\\x88\\xf4\\xaa\\x77\\x38\\x94\\x87\\x61\\xfe\\x84\\x37\\x2c\\x5b\\x18\\xe4\\x65\\x52\\x20\\xc1\\xd8\\x4d\\x52\\xac\\xad\\x32\\xe2\\x29\\xa5\\xc7\\x56\\xc2\\x0f\\xc6\\x2f\\xe4\\xb4\\xb4\\xe5\\xfd\\x70\\x77\\xae\\x4e\\xd5\\x39\\x7a\\xa7\\x96\\xf2\\x30\\x7c\\xee\\xdb\\x65\\x05\\xb3\\x92\\x97\\x85\\x6f\\x4a\\xeb\\x5e\\x70\\x93\\x8e\\x36\\xee\\x24\\xa0\\xac\\x7d\\x98\\x68\\x30\\x6f\\x6b\\x53\\x91\\x06\\x23\\xb7\\xdc\\x89\\xa6\\x67\\x2a\\xd7\\x38\\x57\\x6e\\xd5\\xd8\\x88\\x31\\xdd\\x33\\x83\\x21\\xc8\\x90\\x2b\\xc2\\x06\\x1f\\x65\\xe9\\x4d\\x45\\x2f\\xdf\\xa0\\xdc\\x66\\x5c\\xef\\xb9\\x23\\x08\\xe5\\x23\\x01\\xbd\\x46\\x27\\x00\\x6b\\x36\\x3d\\x06\\xb7\\x75\\xa3\\x95\\x91\\x4d\\x8c\\x86\\x3e\\x95\\xa0\\x0d\\x68\\x93\\xf3\\x37\\x61\\x34\\xc4\\x29\\xf5\\x64\\x78\\x14\\x5e\\x44\\x56\\xf7\\xa1\\x2d\\x65\\xbb\\x2b\\x89\\x65\\xd7\\x28\\xcb\\x2d\\xdb\\xb7\\x08\\xf7\\x12\\x5c\\x23\\x70\\x95\\xa9\\x21\\x95\\xd9\\x2f\\xa7\\x27\\xa3\\x72\\xf3\\x54\\x5a\\xe7\\x01\\xf3\\x80\\x8f\\xee\\x80\\x2c\\x89\\x67\\xa7\\x6e\\x8a\\x94\\x0e\\x55\\xfb\\x2d\\x81\\x0b\\xfb\\x47\\xad\\xa1\\x56\\xf0\\xed\\xa1\\x82\\x9b\\x15\\x9c\\xf0\\x5c\\x7f\\x36\\xcf\\x38\\x47\\xd7\\xb2\\x1d\\xe8\\x4c\\x3d\\xc0\\xfe\\x65\\x83\\x47\\xf7\\x93\\x96\\xa0\\x11\\x39\\xa5\\x08\\xb6\\x00\\x22\\xdb\\x1c\\x0e\\x5a\\xee\\xf4\\x7e\\x44\\x5e\\x66\\xf7\\x83\\xe6\\x2c\\x96\\x59\\x7b\\xdb\\x16\\xf2\\x09\\xc0\\x8a\\x91\\x32\\xc7\\x57\\x31\\x36\\x17\\x0e\\xe3\\xeb\\xf2\\x42\\x61\\x26\\x5a\\x89\\xfb\\x4f\\x10\\x33\\x33\\x75\\xe2\\x0b\\x33\\xab\\x74\\x03\\x46\\x4f\\x52\\x49\\x46\\x1c\\x68\\x53\\xc5\\xfd\\xdb\\x9f\\x58\\xaf\\x81\\x68\\x92\\x91\\x03\\x93\\xa7\\x07\\x7b\\x79\\x9f\\xdc\\x34\\x89\\x72\\x09\\x98\\xfe\\xea\\x86\"},\n{{0x1c,0xed,0x57,0x45,0x29,0xb9,0xb4,0x16,0x97,0x7e,0x92,0xeb,0x39,0x44,0x8a,0x87,0x17,0xca,0xc2,0x93,0x4a,0x24,0x3a,0x5c,0x44,0xfb,0x44,0xb7,0x3c,0xcc,0x16,0xda,},{0x85,0xe1,0x67,0xd5,0xf0,0x62,0xfe,0xe8,0x20,0x14,0xf3,0xc8,0xb1,0xbe,0xae,0xd8,0xee,0xfb,0x2c,0x22,0xd8,0x64,0x9c,0x42,0x4b,0x86,0xb2,0x1b,0x11,0xeb,0x8b,0xda,},{0xe0,0x30,0x3a,0xef,0xe0,0x8a,0x77,0x73,0x8d,0xcc,0x65,0x7a,0xfb,0xb9,0xb8,0x35,0xed,0x27,0x96,0x13,0xa5,0x3c,0x73,0xfd,0xc5,0xdd,0xbf,0xb3,0x50,0xe5,0xcf,0xf4,0xd6,0xc9,0xbb,0x43,0xdc,0x07,0xc9,0x5b,0xf4,0xe2,0x3b,0x64,0xc4,0x0f,0x88,0x04,0xc7,0x16,0x99,0x52,0xe3,0xc8,0xd5,0x9a,0x71,0x97,0x24,0x1b,0xfe,0xd0,0x74,0x0f,},\"\\x1b\\x3b\\x95\\x3c\\xce\\x6d\\x15\\x30\\x3c\\x61\\xca\\x70\\x76\\x09\\xf7\\x0e\\x72\\x50\\xf6\\xc0\\xde\\xba\\x56\\xa8\\xce\\x52\\x2b\\x59\\x86\\x68\\x96\\x51\\xcd\\xb8\\x48\\xb8\\x42\\xb2\\x22\\x96\\x61\\xb8\\xee\\xab\\xfb\\x85\\x70\\x74\\x9e\\xd6\\xc2\\xb1\\x0a\\x8f\\xbf\\x51\\x50\\x53\\xb5\\xea\\x7d\\x7a\\x92\\x28\\x34\\x9e\\x46\\x46\\xf9\\x50\\x5e\\x19\\x80\\x29\\xfe\\xc9\\xce\\x0f\\x38\\xe4\\xe0\\xca\\x73\\x62\\x58\\x42\\xd6\\x4c\\xaf\\x8c\\xed\\x07\\x0a\\x6e\\x29\\xc7\\x43\\x58\\x6a\\xa3\\xdb\\x6d\\x82\\x99\\x3a\\xc7\\x1f\\xd3\\x8b\\x78\\x31\\x62\\xd8\\xfe\\x04\\xff\\xd0\\xfa\\x5c\\xbc\\x38\\x1d\\x0e\\x21\\x9c\\x91\\x93\\x7d\\xf6\\xc9\\x73\\x91\\x2f\\xc0\\x2f\\xda\\x53\\x77\\x31\\x24\\x68\\x27\\x4c\\x4b\\xee\\x6d\\xca\\x7f\\x79\\xc8\\xb5\\x44\\x86\\x1e\\xd5\\xba\\xbc\\xf5\\xc5\\x0e\\x14\\x73\\x49\\x1b\\xe0\\x17\\x08\\xac\\x7c\\x9f\\xf5\\x8f\\x1e\\x40\\xf8\\x55\\x49\\x7c\\xe9\\xd7\\xcc\\x47\\xb9\\x41\\x0f\\x2e\\xdd\\x00\\xf6\\x49\\x67\\x40\\x24\\x3b\\x8d\\x03\\xb2\\xf5\\xfa\\x74\\x2b\\x9c\\x63\\x08\\x67\\xf7\\x7a\\xc4\\x2f\\x2b\\x62\\xc1\\x4e\\x5e\\xbd\\xdc\\x7b\\x64\\x7a\\x05\\xff\\xf4\\x36\\x70\\x74\\x5f\\x28\\x51\\xef\\xf4\\x90\\x9f\\x5d\\x27\\xd5\\x7a\\xe8\\x7f\\x61\\xe9\\x65\\xee\\x60\\xfd\\xf9\\x77\\x24\\xc5\\x92\\x67\\xf2\\x61\\x0b\\x7a\\xd5\\xde\\x91\\x98\\x56\\xd6\\x4d\\x7c\\x21\\x26\\x59\\xce\\x86\\x56\\x14\\x9b\\x6a\\x6d\\x29\\xd8\\xf9\\x2b\\x31\\x2b\\xe5\\x0b\\x6e\\x2a\\x43\\x1d\\x36\\xae\\x02\\x2b\\x00\\xa6\\xfe\\x36\\x0e\\x3a\\xf6\\x54\\x32\\x89\\x9c\\x43\\xbe\\x04\\x27\\xe3\\x6d\\x21\\xcf\\xec\\x81\\xf2\\x1a\\xa5\\x3b\\x33\\xdb\\x5e\\xd2\\xc3\\x7d\\xa8\\xf9\\x6a\\xc3\\xe7\\xdc\\x67\\xa1\\xde\\x37\\x54\\x6c\\xf7\\xde\\x10\\x08\\xc7\\xe1\\xad\\xbe\\x0f\\x34\\xfa\\x7e\\xb2\\x43\\x4d\\x94\\xe6\\xa1\\x3f\\x4c\\xf8\\x6a\\x98\\xd4\\x97\\x62\\x2f\"},\n{{0xf0,0x79,0x0d,0x93,0xe2,0xd3,0xb8,0x4f,0x61,0xef,0x4c,0x80,0x71,0x47,0xab,0xa4,0x10,0xe4,0x15,0xe7,0x2b,0x71,0xb0,0xd6,0x1d,0x01,0x02,0x6f,0xed,0x99,0xda,0x3d,},{0xef,0xdf,0x64,0x9f,0xb0,0x33,0xcf,0x32,0x8e,0x0b,0x28,0x77,0x96,0xf8,0xa2,0x5e,0x9c,0x6e,0x2e,0x87,0x1b,0x33,0xc2,0xc2,0x1a,0x40,0x28,0xa8,0xa2,0x5a,0x4b,0x28,},{0x08,0x77,0x3a,0x6a,0x78,0x76,0x2c,0xbb,0x1e,0x25,0xfc,0xbb,0x29,0x13,0x99,0x41,0xbd,0xf1,0x6f,0x4e,0x09,0xa1,0xfa,0x08,0xfc,0x70,0x1f,0x32,0xf9,0x33,0xed,0xd7,0x4c,0x0a,0xe9,0x83,0xc1,0x2a,0x0a,0x5b,0x02,0x0b,0x6b,0xcf,0x44,0xbb,0x71,0x9d,0xde,0x8e,0xd0,0x78,0x1a,0x82,0x98,0x26,0x56,0x40,0xe1,0x60,0x8c,0x98,0xb3,0x01,},\"\\x79\\x73\\xe9\\xf3\\x2d\\x74\\x80\\x59\\x92\\xeb\\x65\\xda\\x0d\\x63\\x73\\x35\\xe5\\x0e\\xff\\x0c\\xe6\\x8e\\xa2\\xd1\\xf3\\xa0\\x2d\\xe7\\x04\\x49\\x2b\\x9c\\xfb\\xe7\\xe7\\xba\\x96\\xfd\\xb4\\x2b\\xb8\\x21\\xa5\\x13\\xd7\\x3f\\xc6\\x04\\x02\\xe9\\x2c\\x85\\x5d\\xea\\xed\\x73\\xff\\xea\\xf7\\x09\\x52\\x02\\x90\\x62\\xc8\\x33\\xe1\\x4e\\xc1\\xb1\\x4f\\x14\\x4e\\x22\\x07\\xf6\\xa0\\xe7\\x27\\xe5\\xa7\\xe3\\xcb\\xab\\x27\\xd5\\x97\\x29\\x70\\xf6\\x95\\x18\\xa1\\x5b\\x09\\x3e\\x74\\x0c\\xc0\\xce\\x11\\xbf\\x52\\x48\\xf0\\x82\\x6b\\x8a\\x98\\xbd\\xe8\\xbf\\x2c\\x70\\x82\\xc9\\x7a\\xff\\x15\\x8d\\x08\\x37\\x11\\x18\\xc8\\x90\\x21\\xcc\\x39\\x74\\xae\\x8f\\x76\\xd8\\x66\\x73\\xc3\\xf8\\x24\\xb6\\x2c\\x79\\xc4\\xb4\\x1f\\x40\\xea\\xa8\\x94\\x37\\x38\\xf0\\x33\\x00\\xf6\\x8c\\xbe\\x17\\x54\\x68\\xeb\\x23\\x5a\\x9f\\xf0\\xe6\\x53\\x7f\\x87\\x14\\xe9\\x7e\\x8f\\x08\\xca\\x44\\x4e\\x41\\x19\\x10\\x63\\xb5\\xfa\\xbd\\x15\\x6e\\x85\\xdc\\xf6\\x66\\x06\\xb8\\x1d\\xad\\x4a\\x95\\x06\\x55\\x84\\xb3\\xe0\\x65\\x8c\\x20\\xa7\\x06\\xea\\xf4\\xa0\\x77\\x7d\\xa4\\xd2\\xe0\\xcd\\x2a\\x0f\\xca\\x60\\x10\\x9c\\x2b\\x44\\x03\\xdb\\x3f\\x03\\xcd\\x47\\x81\\xc1\\xfb\\xb0\\x27\\x22\\x02\\xbc\\xb1\\x16\\x87\\x80\\x8c\\x50\\xcb\\x98\\xf6\\x4b\\x7f\\x3f\\xd3\\xd4\\x33\\x33\\xbb\\x5a\\x06\\x1b\\x9e\\x37\\x70\\x90\\xab\\xb1\\xe0\\xa8\\x85\\xcb\\x26\\xb7\\x3c\\x16\\x3e\\x63\\xff\\x64\\x51\\xff\\x2f\\x4e\\xc8\\x24\\x9c\\x7e\\x15\\x2b\\xd0\\x39\\x73\\xa1\\xe9\\x64\\xe2\\xb5\\xb2\\x35\\x28\\x1a\\x93\\x83\\x99\\xa1\\x12\\xa2\\x45\\x29\\xe3\\x83\\xa5\\x60\\xdc\\x50\\xbb\\x1b\\x62\\x2a\\xd7\\x4e\\xf3\\x56\\x58\\xdc\\xb1\\x0f\\xfe\\x02\\x25\\x68\\xac\\x3f\\xfa\\xe5\\xb4\\x65\\xa8\\xed\\x76\\x43\\xe8\\x56\\x1b\\x35\\x2e\\xe9\\x94\\x4a\\x35\\xd8\\x82\\xc7\\x12\\xb1\\x87\\x78\\x8a\\x0a\\xba\\xe5\\xa2\\x2f\"},\n{{0x4c,0xb9,0xdf,0x7c,0xe6,0xfa,0xe9,0xd6,0x2b,0xa0,0x9e,0x8e,0xb7,0x0e,0x4c,0x96,0x9b,0xde,0xaf,0xcb,0x5e,0xc7,0xd7,0x02,0x43,0x26,0xe6,0x60,0x3b,0x06,0x21,0xbf,},{0x01,0x80,0x69,0xdd,0x0e,0xb4,0x40,0x55,0xa3,0x5c,0xd8,0xc7,0x7c,0x37,0xca,0x9f,0xb1,0xad,0x24,0x17,0x27,0x13,0x85,0xe1,0x34,0xb2,0xf4,0xe8,0x1f,0x52,0x03,0x3c,},{0xe3,0x3c,0x07,0x83,0x6c,0x53,0x7d,0x6b,0xfb,0xd0,0xf4,0x59,0x2d,0x6e,0x35,0xb1,0x63,0x49,0x9b,0xa7,0x8d,0xc7,0xff,0xce,0xc5,0x65,0xd0,0x4f,0x9a,0x7d,0xb7,0x81,0x94,0x3e,0x29,0xe6,0xce,0x76,0x76,0x3e,0x9b,0xad,0xdf,0x57,0x43,0x7f,0xd9,0xc6,0xb0,0x32,0x39,0xa6,0xe6,0x85,0x0e,0x45,0x02,0xa3,0x56,0xc2,0xe1,0x2c,0x37,0x05,},\"\\x14\\x62\\x7d\\x6e\\xa0\\xe7\\x89\\x54\\x60\\x75\\x94\\x76\\xdc\\x74\\xc4\\x28\\x00\\xce\\xef\\x99\\x43\\x27\\x51\\x81\\x51\\x49\\x0d\\x9d\\xf2\\x30\\x67\\x91\\x4e\\x44\\x78\\x8a\\x12\\x76\\x8c\\xcb\\x25\\x47\\x1b\\x9c\\x3b\\xa9\\xd1\\x4f\\xb4\\x36\\xdc\\xba\\x38\\x42\\x9b\\x3a\\x04\\x56\\x87\\x77\\x63\\xc4\\x91\\x75\\xd0\\xe0\\x82\\x68\\x3e\\x07\\xa9\\x05\\x8f\\x36\\x85\\xc6\\x27\\x93\\x07\\xb2\\x30\\x3d\\x12\\x21\\xb9\\xc2\\x97\\x93\\xd8\\xa4\\x87\\x7f\\x6d\\xf5\\x15\\x87\\x38\\x4d\\xad\\xf7\\x51\\xc5\\xf7\\xbf\\xbd\\x20\\x7d\\x51\\x96\\x22\\xc3\\x7b\\x51\\xce\\xee\\xe2\\xc2\\x0d\\x82\\x69\\xf8\\xcb\\x88\\xd3\\xfe\\x43\\xd6\\xd4\\x34\\xd5\\xbb\\xd0\\xe2\\x03\\xc1\\x53\\x2d\\x97\\xba\\x55\\x21\\x47\\x22\\x74\\x96\\xc8\\x7f\\x67\\xb5\\x0b\\xb7\\x61\\x93\\xad\\xd0\\x14\\x4d\\xf1\\xc1\\x76\\x65\\x75\\x85\\x40\\x83\\x62\\xca\\x2e\\xd0\\x4a\\xd6\\x2a\\xcf\\x1c\\x25\\xe3\\x41\\xdf\\xd1\\x49\\x8d\\x85\\xb4\\xb1\\x34\\x9a\\x8b\\x0b\\x9b\\x02\\xc4\\x35\\x23\\xc5\\x58\\x53\\x41\\x9b\\xfe\\xd3\\x7d\\x5a\\x2c\\xdf\\x17\\xdf\\xbf\\x1a\\x3b\\xd7\\x75\\x9d\\x6a\\xe1\\x80\\xf9\\xd2\\x7d\\xcd\\x9a\\x89\\x33\\xe2\\x9a\\x7c\\x0a\\x30\\x77\\x1e\\xea\\x7c\\x2e\\x0f\\xa2\\x42\\x92\\x5d\\x23\\x36\\xdc\\xe5\\x85\\x62\\x90\\x57\\xd8\\x44\\x32\\x39\\x64\\xf6\\xd3\\xd1\\x1f\\xf0\\xb3\\xf8\\x29\\xa3\\xbe\\x8c\\x9f\\x04\\x68\\xa6\\x82\\x3d\\x8e\\x70\\xab\\x5a\\x2d\\xa2\\x1e\\x15\\xfa\\x8b\\x04\\x1a\\x29\\x81\\x22\\x22\\xe9\\xc3\\x0b\\x2b\\xd9\\xa1\\x2d\\x1f\\xde\\xe6\\xf8\\x78\\x76\\xe8\\xce\\x81\\x00\\x96\\x37\\xa8\\xbb\\x22\\x36\\x12\\x9a\\x47\\xca\\x74\\x28\\x9e\\xe4\\xaa\\xd4\\x29\\xff\\xe2\\x9f\\x47\\x43\\x02\\x41\\xca\\x8c\\xc3\\x84\\x8b\\x72\\x00\\xfd\\x6e\\x14\\x70\\x65\\x1a\\x9a\\x0a\\x6f\\x72\\xc9\\x03\\x3e\\x83\\x1d\\xf0\\x51\\x40\\x8a\\x62\\x60\\xf6\\x5c\\xba\\xf6\\xe0\\x12\\xb1\\x8e\"},\n{{0xa1,0x36,0xe0,0x09,0xd5,0x3e,0x5e,0xf5,0x9d,0x09,0x46,0xbc,0x17,0x56,0x63,0xa8,0x6b,0xc0,0xfc,0xd2,0x9e,0xad,0xd9,0x5c,0xfc,0x9d,0x26,0x60,0x37,0xb1,0xe4,0xfb,},{0x9c,0x18,0x06,0xec,0x04,0x54,0xf5,0x83,0x14,0xeb,0x83,0x97,0xd6,0x42,0x87,0xde,0xe3,0x86,0x64,0x0d,0x84,0x91,0xab,0xa3,0x64,0x60,0x76,0x88,0x84,0x17,0x15,0xa0,},{0xbc,0x09,0x4b,0xa9,0x1c,0x11,0x5d,0xee,0x15,0xd7,0x53,0x36,0x1a,0x75,0xf3,0xf0,0x3d,0x6a,0xf4,0x5c,0x92,0x15,0x7e,0x95,0xdb,0xe8,0xd3,0x21,0x94,0xb6,0xc5,0xce,0x72,0xb9,0xdc,0x66,0xf7,0x3d,0xf1,0x2d,0xca,0x0b,0x63,0x9f,0x3e,0x79,0x1d,0x47,0x86,0x16,0xa1,0xf8,0xd7,0x35,0x9a,0x42,0xc8,0xea,0xe0,0xdd,0xa1,0x6b,0x16,0x06,},\"\\xa4\\x9d\\x1c\\x3d\\x49\\xe1\\x3c\\x2e\\xda\\x56\\x86\\x8a\\x88\\x24\\xaa\\x9f\\x8d\\x2b\\xf7\\x2f\\x21\\x95\\x5e\\xba\\xfd\\x07\\xb3\\xbd\\xc8\\xe9\\x24\\xde\\x20\\x93\\x6c\\xee\\x51\\x3d\\x8a\\x64\\xa4\\x71\\x73\\xa3\\xbd\\x65\\x9e\\xff\\x1a\\xcc\\xff\\x82\\x44\\xb2\\x6a\\xae\\x1a\\x0c\\x27\\xfa\\x89\\x1b\\xf4\\xd8\\x5e\\x8f\\xb1\\xb7\\x6a\\x6c\\xab\\x1e\\x7f\\x74\\xc8\\x9e\\xe0\\x7b\\xb4\\x0d\\x71\\x43\\x26\\xf0\\x9b\\x3f\\xd4\\x06\\x32\\xfa\\xd2\\x08\\xea\\x81\\x6f\\x90\\x72\\x02\\x8c\\x14\\xb5\\xb5\\x4e\\xcc\\x1c\\x5b\\x7f\\xc8\\x09\\xe7\\xe0\\x78\\x6e\\x2f\\x11\\x49\\x5e\\x76\\x01\\x7e\\xb6\\x2a\\xa4\\x56\\x3f\\x3d\\x00\\xee\\x84\\x34\\x8d\\x98\\x38\\xcd\\x17\\x64\\x9f\\x69\\x29\\xa6\\xd2\\x06\\xf6\\x0e\\x6f\\xc8\\x2e\\x0c\\x34\\x64\\xb2\\x7e\\x0e\\x6a\\xbd\\x22\\xf4\\x46\\x9b\\xdf\\xd4\\xcb\\x54\\xf7\\x7e\\x32\\x9b\\x80\\xf7\\x1b\\xf4\\x21\\x29\\xec\\x13\\xc9\\xdf\\xe1\\x92\\xad\\xfa\\xa4\\x2e\\xe3\\xdd\\xee\\xda\\x38\\x58\\x16\\xfb\\xad\\x5f\\x41\\x19\\x38\\xc6\\x3b\\x56\\x0f\\x4e\\xcd\\x94\\x53\\x4b\\xe7\\xd9\\x87\\x25\\xcd\\x94\\xc9\\x9c\\xe4\\x92\\xf0\\xf0\\x69\\xba\\x0e\\xc0\\x8f\\x87\\x7a\\x78\\x12\\xef\\x27\\xae\\x19\\xd7\\xa7\\x7b\\xe6\\x3f\\x66\\xbc\\xf8\\xd6\\xcf\\x3a\\x1a\\x61\\xfc\\x9c\\xfe\\xf1\\x04\\xc7\\x46\\x2a\\x21\\xca\\x7f\\x03\\xaf\\xb5\\xbb\\x1a\\xc8\\xc7\\x51\\x24\\xb5\\x54\\xe8\\xd0\\x44\\xb8\\x10\\xd9\\x5f\\xf8\\xc9\\xdd\\x09\\xa3\\x44\\x84\\xd8\\xc4\\xb6\\xc9\\x5f\\x95\\xc3\\xc2\\x28\\x23\\xf5\\x2c\\xe8\\x44\\x29\\x37\\x24\\xd5\\x25\\x91\\x91\\xf1\\xba\\x09\\x29\\xe2\\xac\\xdb\\xb8\\xb9\\xa7\\xa8\\xad\\xf0\\xc5\\x2e\\x78\\xac\\xdf\\xdf\\x05\\x7b\\x09\\x85\\x88\\x1a\\xfb\\xed\\x4d\\xbe\\xbd\\xeb\\xbd\\xae\\x0a\\x2b\\x63\\xbd\\x4e\\x90\\xf9\\x6a\\xfd\\xcb\\xbd\\x78\\xf5\\x06\\x30\\x9f\\x9b\\xdb\\x65\\x00\\x13\\xcb\\x73\\xfa\\xed\\x73\\x90\\x4e\"},\n{{0xff,0x0f,0x1c,0x57,0xdd,0x88,0x4f,0xbe,0xea,0x6e,0x29,0x17,0x28,0x2b,0x79,0xba,0x67,0xf8,0xa6,0x85,0x12,0x67,0xb9,0xf4,0x63,0x6d,0xaf,0xda,0x33,0xbd,0x2b,0x5b,},{0xfe,0xf6,0x37,0x8a,0xd1,0x2a,0x7c,0x25,0x2f,0xa6,0xeb,0x74,0x2b,0x05,0x06,0x4b,0x41,0x53,0x0f,0xf0,0x19,0xdc,0x68,0x0a,0xb5,0x44,0xc0,0x27,0xea,0x28,0x36,0xe7,},{0xd5,0x00,0x84,0x86,0x72,0x6c,0xce,0x33,0x0a,0x29,0xdd,0x7e,0x4d,0x74,0x74,0xd7,0x35,0x79,0x82,0x01,0xaf,0xd1,0x20,0x6f,0xeb,0x86,0x9a,0x11,0x2e,0x5b,0x43,0x52,0x3c,0x06,0x97,0x67,0x61,0xbe,0x3c,0xf9,0xb2,0x71,0x63,0x78,0x27,0x3c,0x94,0xf9,0x35,0x72,0xa7,0xd2,0xb8,0x98,0x26,0x34,0xe0,0x75,0x5c,0x63,0x2b,0x44,0x90,0x08,},\"\\x52\\x2a\\x5e\\x5e\\xff\\x5b\\x5e\\x98\\xfa\\xd6\\x87\\x8a\\x9d\\x72\\xdf\\x6e\\xb3\\x18\\x62\\x26\\x10\\xa1\\xe1\\xa4\\x81\\x83\\xf5\\x59\\x0e\\xce\\xf5\\xa6\\xdf\\x67\\x1b\\x28\\xbe\\x91\\xc8\\x8c\\xdf\\x7a\\xe2\\x88\\x11\\x47\\xfe\\x6c\\x37\\xc2\\x8b\\x43\\xf6\\x4c\\xf9\\x81\\xc4\\x55\\xc5\\x9e\\x76\\x5c\\xe9\\x4e\\x1b\\x64\\x91\\x63\\x1d\\xea\\xee\\xf6\\xd1\\xda\\x9e\\xbc\\xa8\\x86\\x43\\xc7\\x7f\\x83\\xea\\xe2\\xcf\\xdd\\x2d\\x97\\xf6\\x04\\xfe\\x45\\x08\\x1d\\x1b\\xe5\\xc4\\xae\\x2d\\x87\\x59\\x96\\xb8\\xb6\\xfe\\xcd\\x70\\x7d\\x3f\\xa2\\x19\\xa9\\x3b\\xa0\\x48\\x8e\\x55\\x24\\x7b\\x40\\x5e\\x33\\x0c\\xfb\\x97\\xd3\\x1a\\x13\\x61\\xc9\\xb2\\x08\\x4b\\xdb\\x13\\xfb\\x0c\\x05\\x89\\x25\\xdb\\x8c\\x3c\\x64\\x9c\\x9a\\x3e\\x93\\x7b\\x53\\x3c\\xc6\\x31\\x0f\\xa3\\xb1\\x61\\x26\\xfb\\x3c\\xc9\\xbb\\x2b\\x35\\xc5\\xc8\\x30\\x00\\x15\\x48\\x8a\\x30\\xfa\\xdc\\xa3\\xc8\\x87\\x1f\\xa7\\x0d\\xfd\\xc7\\x05\\x5b\\xf8\\xe6\\x31\\xf2\\x0c\\x9b\\x25\\x28\\x31\\x1e\\x32\\x4a\\x7c\\x4e\\xdd\\x54\\x62\\x07\\x9f\\x34\\x41\\xc9\\xec\\xf5\\x5f\\xa9\\x99\\xe7\\x31\\x37\\x23\\x44\\xfd\\xc0\\xd4\\x13\\xe4\\x17\\xaa\\xa0\\x01\\xa1\\xb2\\xd3\\xd9\\xbc\\x00\\x0f\\xec\\x1b\\x02\\xbd\\x7a\\x88\\xa8\\x12\\xd9\\xd8\\xa6\\x6f\\x94\\x64\\x76\\x4c\\x07\\x0c\\x93\\x04\\x1e\\xef\\xb1\\x7c\\xe7\\x4e\\xff\\x6d\\x4a\\xff\\x75\\xf0\\xcb\\xf6\\xa7\\x89\\xa9\\xec\\xde\\x74\\xab\\xe3\\x31\\x30\\xfc\\xa0\\xda\\x85\\x3a\\xa7\\xc3\\x31\\x3a\\xda\\x3f\\x0a\\xe2\\xf5\\x95\\xc6\\x79\\x6a\\x93\\x68\\x5e\\x72\\x9d\\xd1\\x8a\\x66\\x9d\\x63\\x81\\x82\\x5a\\xb3\\xf3\\x6a\\x39\\x1e\\x75\\x25\\xb2\\xa8\\x07\\xa5\\x2f\\xa5\\xec\\x2a\\x03\\x0a\\x8c\\xf3\\xb7\\x73\\x37\\xac\\x41\\xfc\\xeb\\x58\\x0e\\x84\\x5e\\xed\\x65\\x5a\\x48\\xb5\\x47\\x23\\x8c\\x2e\\x81\\x37\\xc9\\x2f\\x8c\\x27\\xe5\\x85\\xca\\xad\\x31\\x06\\xee\\xe3\\x81\\x4a\"},\n{{0x0b,0xc6,0xaf,0x64,0xde,0x57,0x09,0xd3,0xdb,0xc2,0x8f,0x7e,0xf6,0xd3,0xfe,0x28,0xb6,0xde,0x52,0x9f,0x08,0xf5,0x85,0x7c,0xcb,0x91,0x06,0x95,0xde,0x45,0x4f,0x56,},{0xfb,0x49,0x1f,0xc9,0x00,0x23,0x7b,0xdc,0x7e,0x9a,0x11,0x9f,0x27,0x15,0x0c,0xd9,0x11,0x93,0x5c,0xd3,0x62,0x87,0x49,0xff,0x40,0xef,0x41,0xf3,0x95,0x5b,0xc8,0xac,},{0xdb,0xc7,0x13,0x4d,0x1c,0xd6,0xb0,0x81,0x3b,0x53,0x35,0x27,0x14,0xb6,0xdf,0x93,0x94,0x98,0xe9,0x1c,0xf3,0x7c,0x32,0x43,0x37,0xd9,0xc0,0x88,0xa1,0xb9,0x98,0x34,0x7d,0x26,0x18,0x5b,0x43,0x09,0x00,0x41,0x29,0x29,0xe4,0xf6,0x3e,0x91,0x03,0x79,0xfc,0x42,0xe3,0x55,0xa4,0xe9,0x8f,0x6f,0xee,0x27,0xda,0xfa,0xd1,0x95,0x72,0x06,},\"\\xac\\x78\\x86\\xe4\\xf4\\x17\\x2a\\x22\\xc9\\x5e\\x8e\\xea\\x37\\x43\\x7b\\x37\\x5d\\x72\\xac\\xce\\xdc\\xee\\x6c\\xc6\\xe8\\x16\\x76\\x33\\x01\\xa2\\xd8\\xef\\x4d\\x6f\\x31\\xa2\\xc1\\xd6\\x35\\x81\\x8b\\x70\\x26\\xa3\\x95\\xce\\x0d\\xaf\\xd7\\x1c\\x51\\x80\\x89\\x3a\\xf7\\x6b\\x7e\\xa0\\x56\\xc9\\x72\\xd6\\x80\\xec\\xa0\\x1d\\xcb\\xdb\\xae\\x6b\\x26\\xf1\\xc5\\xf3\\x3f\\xc9\\x88\\xb8\\x24\\xfb\\xbe\\x00\\xca\\xcc\\x31\\x64\\x69\\xa3\\xba\\xe0\\x7a\\xa7\\xc8\\x88\\x5a\\xf7\\xf6\\x5f\\x42\\xe7\\x5c\\xef\\x94\\xdb\\xb9\\xaa\\xb4\\x82\\x51\\x43\\xc8\\x50\\x70\\xe7\\x71\\x6b\\x76\\x12\\xf6\\x4e\\xf0\\xb0\\x16\\x60\\x11\\xd2\\x3e\\xb5\\x65\\x4a\\xa0\\x98\\xb0\\x2d\\x8d\\x71\\xe5\\x7c\\x8f\\xa1\\x7b\\xff\\x2f\\xe9\\x7d\\xc8\\x19\\x31\\x77\\xea\\xdc\\x09\\xfb\\x19\\x2d\\x80\\xaa\\x92\\xaf\\xa9\\x87\\x20\\xd4\\x61\\x48\\x17\\xff\\x3c\\x39\\xd3\\xac\\xce\\x18\\x90\\x6f\\xa3\\xde\\x09\\x61\\x89\\x31\\xd0\\xd7\\xa6\\x0c\\x44\\x29\\xcb\\xfa\\x20\\xcf\\x16\\x5c\\x94\\x79\\x29\\xac\\x29\\x3a\\xe6\\xc0\\x6e\\x7e\\x8f\\x25\\xf1\\x26\\x42\\x91\\xe3\\xe1\\xc9\\x8f\\x5d\\x93\\xe6\\xec\\xc2\\x38\\x9b\\xc6\\x0d\\xbb\\xf4\\xa6\\x21\\xb1\\x32\\xc5\\x52\\xa9\\x9c\\x95\\xd2\\x6d\\x8d\\x1a\\xf6\\x11\\x38\\xb5\\x70\\xa0\\xde\\x4b\\x49\\x7e\\xbe\\x80\\x51\\xc7\\x27\\x3a\\x98\\xe6\\xe7\\x87\\x6d\\x0b\\x32\\x75\\x03\\xaf\\x3c\\xb2\\xcc\\x40\\x91\\xce\\x19\\x25\\xcb\\x2f\\x29\\x57\\xf4\\xec\\x56\\xee\\x90\\xf8\\xa0\\x9d\\xd5\\x7d\\x6e\\x83\\x06\\x7a\\x35\\x6a\\x4c\\xfe\\x65\\xb1\\xb7\\xa4\\x46\\x5d\\xa2\\xab\\x13\\x3b\\x0e\\xfb\\x5e\\x7d\\x4d\\xbb\\x81\\x1b\\xcb\\xbd\\xe7\\x12\\xaf\\xbf\\x0f\\x7d\\xd3\\xf3\\x26\\x22\\x22\\x84\\xb8\\xc7\\x4e\\xac\\x7a\\xd6\\x25\\x7f\\xa8\\xc6\\x32\\xb7\\xda\\x25\\x59\\xa6\\x26\\x6e\\x91\\xe0\\xef\\x90\\xdb\\xb0\\xaa\\x96\\x8f\\x75\\x37\\x6b\\x69\\x3f\\xca\\xa5\\xda\\x34\\x22\\x21\"},\n{{0x2f,0x5e,0x83,0xbd,0x5b,0x41,0x2e,0x71,0xae,0x3e,0x90,0x84,0xcd,0x36,0x9e,0xfc,0xc7,0x9b,0xf6,0x03,0x7c,0x4b,0x17,0x4d,0xfd,0x6a,0x11,0xfb,0x0f,0x5d,0xa2,0x18,},{0xa2,0x2a,0x6d,0xa2,0x9a,0x5e,0xf6,0x24,0x0c,0x49,0xd8,0x89,0x6e,0x3a,0x0f,0x1a,0x42,0x81,0xa2,0x66,0xc7,0x7d,0x38,0x3e,0xe6,0xf9,0xd2,0x5f,0xfa,0xcb,0xb8,0x72,},{0x9f,0x80,0x92,0x2b,0xc8,0xdb,0x32,0xd0,0xcc,0x43,0xf9,0x93,0x6a,0xff,0xeb,0xe7,0xb2,0xbc,0x35,0xa5,0xd8,0x22,0x77,0xcd,0x18,0x7b,0x5d,0x50,0xdc,0x7f,0xc4,0xc4,0x83,0x2f,0xff,0xa3,0x4e,0x95,0x43,0x80,0x6b,0x48,0x5c,0x04,0x54,0x8e,0x7c,0x75,0x42,0x94,0x25,0xe1,0x4d,0x55,0xd9,0x1f,0xc1,0x05,0x2e,0xfd,0x86,0x67,0x43,0x0b,},\"\\xb7\\x66\\x27\\x3f\\x06\\x0e\\xf3\\xb2\\xae\\x33\\x40\\x45\\x4a\\x39\\x1b\\x42\\x6b\\xc2\\xe9\\x72\\x64\\xf8\\x67\\x45\\x53\\xeb\\x00\\xdd\\x6e\\xcf\\xdd\\x59\\xb6\\x11\\xd8\\xd6\\x62\\x92\\x9f\\xec\\x71\\x0d\\x0e\\x46\\x20\\x20\\xe1\\x2c\\xdb\\xf9\\xc1\\xec\\x88\\x58\\xe8\\x56\\x71\\xac\\xf8\\xb7\\xb1\\x44\\x24\\xce\\x92\\x07\\x9d\\x7d\\x80\\x1e\\x2a\\xd9\\xac\\xac\\x03\\x6b\\xc8\\xd2\\xdf\\xaa\\x72\\xaa\\x83\\x9b\\xff\\x30\\xc0\\xaa\\x7e\\x41\\x4a\\x88\\x2c\\x00\\xb6\\x45\\xff\\x9d\\x31\\xbc\\xf5\\xa5\\x43\\x82\\xde\\xf4\\xd0\\x14\\x2e\\xfa\\x4f\\x06\\xe8\\x23\\x25\\x7f\\xf1\\x32\\xee\\x96\\x8c\\xdc\\x67\\x38\\xc5\\x3f\\x53\\xb8\\x4c\\x8d\\xf7\\x6e\\x9f\\x78\\xdd\\x50\\x56\\xcf\\x3d\\x4d\\x5a\\x80\\xa8\\xf8\\x4e\\x3e\\xde\\xc4\\x85\\x20\\xf2\\xcb\\x45\\x83\\xe7\\x08\\x53\\x93\\x55\\xef\\x7a\\xa8\\x6f\\xb5\\xa0\\xe8\\x7a\\x94\\xdc\\xf1\\x4f\\x30\\xa2\\xcc\\xa5\\x68\\xf1\\x39\\xd9\\xce\\x59\\xea\\xf4\\x59\\xa5\\xc5\\x91\\x6c\\xc8\\xf2\\x0b\\x26\\xaa\\xf6\\xc7\\xc0\\x29\\x37\\x9a\\xed\\xb0\\x5a\\x07\\xfe\\x58\\x5c\\xca\\xc6\\x03\\x07\\xc1\\xf5\\x8c\\xa9\\xf8\\x59\\x15\\x7d\\x06\\xd0\\x6b\\xaa\\x39\\x4a\\xac\\xe7\\x9d\\x51\\xb8\\xcb\\x38\\xcf\\xa2\\x59\\x81\\x41\\xe2\\x45\\x62\\x4e\\x5a\\xb9\\xb9\\xd6\\x87\\x31\\x17\\x33\\x48\\x90\\x53\\x15\\xbf\\x1a\\x5a\\xd6\\x1d\\x1e\\x8a\\xda\\xeb\\x81\\x0e\\x4e\\x8a\\x86\\xd7\\xc1\\x35\\x37\\xb0\\xbe\\x86\\x0a\\xb2\\xed\\x35\\xb7\\x33\\x99\\xb8\\x80\\x8a\\xa9\\x1d\\x75\\x0f\\x77\\x94\\x3f\\x8a\\x8b\\x7e\\x89\\xfd\\xb5\\x07\\x28\\xaa\\x3d\\xbb\\xd8\\xa4\\x1a\\x6e\\x00\\x75\\x6f\\x43\\x8c\\x9b\\x9e\\x9d\\x55\\x87\\x2d\\xf5\\xa9\\x06\\x8a\\xdd\\x8a\\x97\\x2b\\x7e\\x43\\xed\\xad\\x9c\\xed\\x22\\x37\\xca\\x13\\x67\\xbe\\x4b\\x7c\\xdb\\x66\\xa5\\x4e\\xa1\\x2e\\xef\\x12\\x94\\x71\\x15\\x86\\x10\\xea\\xf2\\x8f\\x99\\xf7\\xf6\\x86\\x55\\x7d\\xcd\\xf6\\x44\\xea\"},\n{{0x72,0x2a,0x2d,0xa5,0x0e,0x42,0xc1,0x1a,0x61,0xc9,0xaf,0xac,0x7b,0xe1,0xa2,0xfe,0xd2,0x26,0x7d,0x65,0x0f,0x8f,0x7d,0x8e,0x5b,0xc7,0x06,0xb8,0x07,0xc1,0xb9,0x1d,},{0xfd,0x0b,0x96,0x45,0x62,0xf8,0x23,0x72,0x1e,0x64,0x9c,0x3f,0xed,0xb4,0x32,0xa7,0x6f,0x91,0xe0,0xae,0xad,0x7c,0x61,0xd3,0x5f,0x95,0xed,0x77,0x26,0xd7,0x85,0x89,},{0xc2,0x69,0x5a,0x57,0x17,0x2a,0xaa,0x31,0xbd,0x08,0x90,0xf2,0x31,0xca,0x8e,0xee,0xc0,0x28,0x7a,0x87,0x17,0x26,0x69,0xa8,0x99,0xad,0x08,0x91,0xce,0xa4,0xc4,0x75,0x79,0xb5,0x04,0x20,0xe7,0x91,0xcd,0xec,0x8c,0x18,0x2c,0x8a,0x0e,0x8d,0xde,0x21,0xb2,0x48,0x0b,0x0c,0xfd,0x81,0x11,0xe2,0x8e,0x56,0x03,0x34,0x7a,0x35,0x2d,0x04,},\"\\x17\\x3e\\x8b\\xb8\\x85\\xe1\\xf9\\x08\\x14\\x04\\xac\\xac\\x99\\x90\\x41\\xd2\\xec\\xfc\\xb7\\x3f\\x94\\x5e\\x0d\\xb3\\x6e\\x63\\x1d\\x7c\\xd1\\xab\\x99\\x9e\\xb7\\x17\\xf3\\x4b\\xf0\\x78\\x74\\xbf\\x3d\\x34\\xe2\\x53\\x0e\\xb6\\x08\\x5f\\x4a\\x9f\\x88\\xae\\x1b\\x0f\\x7d\\x80\\xf2\\x21\\x45\\x6a\\x8e\\x9a\\x88\\x90\\xb9\\x1a\\x50\\x19\\x2d\\xea\\xaa\\xcc\\x0a\\x1a\\x61\\x5a\\x87\\x84\\x1e\\x2c\\x5a\\x9e\\x05\\x79\\x57\\xaf\\x6e\\x48\\xe7\\x8c\\xc8\\x61\\x98\\xe3\\x2e\\x7a\\xa2\\x4d\\xcf\\x6c\\xff\\xa3\\x29\\xbc\\x72\\x60\\x6d\\x65\\xb1\\x16\\x82\\xc8\\xba\\x73\\x6c\\xce\\x22\\xa0\\x57\\x85\\xdf\\x11\\x46\\x33\\x1e\\x41\\x60\\x9c\\xf9\\xca\\x71\\x1c\\xf4\\x64\\x95\\x82\\x97\\x13\\x8b\\x58\\xa9\\x07\\x3f\\x3b\\xbf\\x06\\xad\\x8a\\x85\\xd1\\x35\\xde\\x66\\x65\\x21\\x04\\xd8\\x8b\\x49\\xd2\\x7a\\xd4\\x1e\\x59\\xbc\\xc4\\x4c\\x7f\\xab\\x68\\xf5\\x3f\\x05\\x02\\xe2\\x93\\xff\\xca\\xba\\xaf\\x75\\x59\\x27\\xdf\\xdf\\xfb\\xfd\\xe3\\xb3\\x5c\\x08\\x0b\\x5d\\xe4\\xc8\\xb7\\x85\\xf4\\xda\\x64\\xef\\x35\\x7b\\xc0\\xd1\\x46\\x6a\\x6a\\x96\\x56\\x0c\\x3c\\x4f\\x3e\\x3c\\x0b\\x56\\x3a\\x00\\x3f\\x5f\\x95\\xf2\\x37\\x17\\x1b\\xce\\x1a\\x00\\x17\\x71\\xa0\\x4e\\xde\\x7c\\xdd\\x9b\\x8c\\xa7\\x70\\xfd\\x36\\xef\\x90\\xe9\\xfe\\x00\\x00\\xa8\\xd7\\x68\\x5f\\xd1\\x53\\xcc\\x72\\x82\\xde\\x95\\x92\\x0a\\x8f\\x8f\\x08\\x98\\xd0\\x0b\\xf0\\xc6\\xc9\\x33\\xfe\\x5b\\xb9\\x65\\x3f\\xf1\\x46\\xc4\\xe2\\xac\\xd1\\xa2\\xe0\\xc2\\x3c\\x12\\x44\\x84\\x4d\\xac\\xf8\\x65\\x27\\x16\\x30\\x2c\\x20\\x32\\xf9\\xc1\\x14\\x67\\x9e\\xd2\\x6b\\x3e\\xe3\\xab\\x4a\\x7b\\x18\\xbc\\x4e\\x30\\x71\\xf0\\x97\\x7d\\xb5\\x7c\\xd0\\xac\\x68\\xc0\\x72\\x7a\\x09\\xb4\\xf1\\x25\\xfb\\x64\\xaf\\x28\\x50\\xb2\\x6c\\x8a\\x48\\x42\\x63\\x33\\x4e\\x2d\\xa9\\x02\\xd7\\x44\\x73\\x70\\x44\\xe7\\x9a\\xb1\\xcf\\x5b\\x2f\\x93\\xa0\\x22\\xb6\\x3d\\x40\\xcd\"},\n{{0x5f,0xe9,0xc3,0x96,0x0e,0xd5,0xbd,0x37,0x4c,0xc9,0x4d,0x42,0x35,0x7e,0x6a,0x24,0xdc,0x7e,0x30,0x60,0x78,0x8f,0x72,0x63,0x65,0xde,0xfa,0xcf,0x13,0xcd,0x12,0xda,},{0x0c,0xe7,0xb1,0x55,0xc8,0xb2,0x0e,0xbd,0xaa,0xcd,0xc2,0xaa,0x23,0x62,0x7e,0x34,0xb1,0xf9,0xac,0xe9,0x80,0x65,0x0a,0x25,0x30,0xc7,0x60,0x7d,0x04,0x81,0x4e,0xb4,},{0x37,0x9f,0x9c,0x54,0xc4,0x13,0xaf,0x0d,0x19,0x2e,0x9b,0xc7,0x36,0xb2,0x9d,0xa9,0xd5,0x21,0xe7,0xba,0x78,0x41,0xd3,0x09,0xf9,0xbc,0xc1,0xe7,0x42,0xec,0x43,0x08,0xfe,0x9f,0x7b,0xa5,0x1e,0x0b,0x22,0xae,0xd4,0x87,0xcb,0x4a,0xa3,0x91,0x3b,0x9b,0xeb,0xfb,0x3a,0xac,0xd3,0x8f,0x40,0x39,0xf9,0xbb,0xbe,0xbe,0x1a,0xd8,0x00,0x02,},\"\\xc9\\x49\\x0d\\x83\\xd9\\xc3\\xa9\\x37\\x0f\\x06\\xc9\\x1a\\xf0\\x01\\x68\\x5a\\x02\\xfe\\x49\\xb5\\xca\\x66\\x77\\x33\\xff\\xf1\\x89\\xee\\xe8\\x53\\xec\\x16\\x67\\xa6\\xc1\\xb6\\xc7\\x87\\xe9\\x24\\x48\\x12\\xd2\\xd5\\x32\\x86\\x6a\\xb7\\x4d\\xfc\\x87\\x0d\\x6f\\x14\\x03\\x3b\\x6b\\xcd\\x39\\x85\\x2a\\x39\\x00\\xf8\\xf0\\x8c\\xd9\\x5a\\x74\\xcb\\x8c\\xbe\\x02\\xb8\\xb8\\xb5\\x1e\\x99\\x3a\\x06\\xad\\xfe\\xbd\\x7f\\xc9\\x85\\x4a\\xe5\\xd2\\x9f\\x4d\\xf9\\x64\\x28\\x71\\xd0\\xc5\\xe4\\x70\\xd9\\x03\\xcf\\xbc\\xbd\\x5a\\xdb\\x32\\x75\\x62\\x8f\\x28\\xa8\\x0b\\xf8\\xc0\\xf0\\x37\\x66\\x87\\xda\\xe6\\x73\\xbf\\x7a\\x85\\x47\\xe8\\x0d\\x4a\\x98\\x55\\xae\\x25\\x72\\xfc\\x2b\\x20\\x5d\\xc8\\xa1\\x98\\x01\\x6d\\xdc\\x9b\\x50\\x99\\x5f\\x5b\\x39\\xf3\\x68\\xf5\\x40\\x50\\x4a\\x55\\x18\\x03\\xd6\\xdd\\x5f\\x87\\x48\\x28\\xe5\\x54\\x1d\\xed\\x05\\x28\\x94\\xd9\\xe2\\xdc\\x5e\\x6a\\xa3\\x51\\x08\\x7e\\x79\\x0c\\x0d\\xd5\\xd9\\xc4\\xde\\xcb\\x21\\x7e\\x4d\\xb8\\x1c\\x98\\xa1\\x84\\xb2\\x64\\xe6\\xda\\xea\\xc0\\xf1\\x1e\\x07\\x4c\\xae\\x2b\\xfc\\x89\\x9f\\x54\\xb4\\x19\\xc6\\x5d\\xcc\\x22\\x66\\x4a\\x91\\x5f\\xbf\\xff\\xac\\x35\\xce\\xe0\\xf2\\x86\\xeb\\x7b\\x14\\x49\\x33\\xdb\\x93\\x3e\\x16\\xc4\\xbc\\xb6\\x50\\xd5\\x37\\x72\\x24\\x89\\xde\\x23\\x63\\x73\\xfd\\x8d\\x65\\xfc\\x86\\x11\\x8b\\x6d\\xef\\x37\\xca\\x46\\x08\\xbc\\x6c\\xe9\\x27\\xb6\\x54\\x36\\xff\\xda\\x7f\\x02\\xbf\\xbf\\x88\\xb0\\x45\\xae\\x7d\\x2c\\x2b\\x45\\xa0\\xb3\\x0c\\x8f\\x2a\\x04\\xdf\\x95\\x32\\x21\\x08\\x8c\\x55\\x5f\\xe9\\xa5\\xdf\\x26\\x09\\x82\\xa3\\xd6\\x4d\\xf1\\x94\\xee\\x95\\x2f\\xa9\\xa9\\x8c\\x31\\xb9\\x64\\x93\\xdb\\x61\\x80\\xd1\\x3d\\x67\\xc3\\x67\\x16\\xf9\\x5f\\x8c\\x0b\\xd7\\xa0\\x39\\xad\\x99\\x06\\x67\\xca\\x34\\xa8\\x3a\\xc1\\xa1\\x8c\\x37\\xdd\\x7c\\x77\\x36\\xaa\\x6b\\x9b\\x6f\\xc2\\xb1\\xac\\x0c\\xe1\\x19\\xef\\x77\"},\n{{0xec,0x2f,0xa5,0x41,0xac,0x14,0xb4,0x14,0x14,0x9c,0x38,0x25,0xea,0xa7,0x00,0x1b,0x79,0x5a,0xa1,0x95,0x7d,0x40,0x40,0xdd,0xa9,0x25,0x73,0x90,0x4a,0xfa,0x7e,0xe4,},{0x71,0xb3,0x63,0xb2,0x40,0x84,0x04,0xd7,0xbe,0xec,0xde,0xf1,0xe1,0xf5,0x11,0xbb,0x60,0x84,0x65,0x8b,0x53,0x2f,0x7e,0xa6,0x3d,0x4e,0x3f,0x5f,0x01,0xc6,0x1d,0x31,},{0x84,0xd1,0x8d,0x56,0xf9,0x64,0xe3,0x77,0x67,0x59,0xbb,0xa9,0x2c,0x51,0x0c,0x2b,0x6d,0x57,0x45,0x55,0xc3,0xcd,0xda,0xde,0x21,0x2d,0xa9,0x03,0x74,0x55,0x49,0x91,0xe7,0xd7,0x7e,0x27,0x8d,0x63,0xe3,0x46,0x93,0xe1,0x95,0x80,0x78,0xcc,0x36,0x85,0xf8,0xc4,0x1c,0x1f,0x53,0x42,0xe3,0x51,0x89,0x96,0x38,0xef,0x61,0x21,0x14,0x01,},\"\\x27\\x49\\xfc\\x7c\\x4a\\x72\\x9e\\x0e\\x0a\\xd7\\x1b\\x5b\\x74\\xeb\\x9f\\x9c\\x53\\x4e\\xbd\\x02\\xff\\xc9\\xdf\\x43\\x74\\xd8\\x13\\xbd\\xd1\\xae\\x4e\\xb8\\x7f\\x13\\x50\\xd5\\xfd\\xc5\\x63\\x93\\x45\\x15\\x77\\x17\\x63\\xe6\\xc3\\x3b\\x50\\xe6\\x4e\\x0c\\xd1\\x14\\x57\\x30\\x31\\xd2\\x18\\x6b\\x6e\\xca\\x4f\\xc8\\x02\\xcd\\xdc\\x7c\\xc5\\x1d\\x92\\xa6\\x13\\x45\\xa1\\x7f\\x6a\\xc3\\x8c\\xc7\\x4d\\x84\\x70\\x7a\\x51\\x56\\xbe\\x92\\x02\\xde\\xe3\\x44\\x46\\x52\\xe7\\x9b\\xae\\x7f\\x0d\\x31\\xbd\\x17\\x56\\x79\\x61\\xf6\\x5d\\xd0\\x1a\\x8e\\x4b\\xee\\x38\\x33\\x19\\x38\\xce\\x4b\\x2b\\x55\\x06\\x91\\xb9\\x9a\\x4b\\xc3\\xc0\\x72\\xd1\\x86\\xdf\\x4b\\x33\\x44\\xa5\\xc8\\xfb\\xfb\\xb9\\xfd\\x2f\\x35\\x5f\\x61\\x07\\xe4\\x10\\xc3\\xd0\\xc7\\x98\\xb6\\x8d\\x3f\\xb9\\xc6\\xf7\\xab\\x5f\\xe2\\x7e\\x70\\x87\\x1e\\x86\\x76\\x76\\x98\\xfe\\x35\\xb7\\x7e\\xad\\x4e\\x43\\x5a\\x94\\x02\\xcc\\x9e\\xd6\\xa2\\x65\\x7b\\x05\\x9b\\xe0\\xa2\\x10\\x03\\xc0\\x48\\xbb\\xf5\\xe0\\xeb\\xd9\\x3c\\xbb\\x2e\\x71\\xe9\\x23\\xcf\\x5c\\x72\\x8d\\x17\\x58\\xcd\\x81\\x7a\\xd7\\x4b\\x45\\x4a\\x88\\x71\\x26\\xd6\\x53\\xb9\\x5a\\x7f\\x25\\xe5\\x29\\x3b\\x76\\x8c\\x9f\\xc5\\xa9\\xc3\\x5a\\x23\\x72\\xe3\\x74\\x1b\\xc9\\x0f\\xd6\\x63\\x01\\x42\\x7b\\x10\\x82\\x4b\\xb4\\xb1\\xe9\\x11\\x0b\\xfb\\xa8\\x4c\\x21\\xa4\\x0e\\xb8\\xfe\\xd4\\x49\\x7e\\x91\\xdc\\x3f\\xfd\\x04\\x38\\xc5\\x14\\xc0\\xa8\\xcb\\x4c\\xac\\x6a\\xd0\\x25\\x6b\\xf1\\x1d\\x5a\\xa7\\xa9\\xc7\\xc0\\x0b\\x66\\x9b\\x01\\x5b\\x0b\\xf8\\x14\\x25\\xa2\\x14\\x13\\xe2\\xff\\xb6\\xed\\xc0\\xbd\\x78\\xe3\\x85\\xc4\\x4f\\xd7\\x45\\x58\\xe5\\x11\\xc2\\xc2\\x5f\\xee\\x1f\\xec\\x18\\xd3\\x99\\x0b\\x86\\x90\\x30\\x0f\\xa7\\x11\\xe9\\x3d\\x98\\x54\\x66\\x8f\\x01\\x87\\x06\\x5e\\x76\\xe7\\x11\\x3a\\xe7\\x63\\xc3\\x0d\\xdd\\x86\\x72\\x0b\\x55\\x46\\xa6\\xc3\\xc6\\xf1\\xc4\\x3b\\xc6\\x7b\\x14\"},\n{{0x61,0x32,0x69,0x2a,0x5e,0xf2,0x7b,0xf4,0x76,0xb1,0xe9,0x91,0xe6,0xc4,0x31,0xa8,0xc7,0x64,0xf1,0xae,0xbd,0x47,0x02,0x82,0xdb,0x33,0x21,0xbb,0x7c,0xb0,0x9c,0x20,},{0x7a,0x2d,0x16,0x61,0x84,0xf9,0xe5,0xf7,0x3b,0xea,0x45,0x44,0x86,0xb0,0x41,0xce,0xb5,0xfc,0x23,0x14,0xa7,0xbd,0x59,0xcb,0x71,0x8e,0x79,0xf0,0xec,0x98,0x9d,0x84,},{0xeb,0x67,0x7f,0x33,0x47,0xe1,0xa1,0xea,0x92,0x9e,0xfd,0xf6,0x2b,0xf9,0x10,0x5a,0x6c,0x8f,0x49,0x93,0x03,0x3b,0x4f,0x6d,0x03,0xcb,0x0d,0xbf,0x9c,0x74,0x2b,0x27,0x07,0x04,0xe3,0x83,0xab,0x7c,0x06,0x76,0xbd,0xb1,0xad,0x0c,0xe9,0xb1,0x66,0x73,0x08,0x3c,0x96,0x02,0xec,0x10,0xae,0x1d,0xd9,0x8e,0x87,0x48,0xb3,0x36,0x44,0x0b,},\"\\xa9\\xc0\\x86\\x16\\x65\\xd8\\xc2\\xde\\x06\\xf9\\x30\\x1d\\xa7\\x0a\\xfb\\x27\\xb3\\x02\\x4b\\x74\\x4c\\x6b\\x38\\xb2\\x42\\x59\\x29\\x4c\\x97\\xb1\\xd1\\xcb\\x4f\\x0d\\xcf\\x75\\x75\\xa8\\xed\\x45\\x4e\\x2f\\x09\\x80\\xf5\\x03\\x13\\xa7\\x73\\x63\\x41\\x51\\x83\\xfe\\x96\\x77\\xa9\\xeb\\x1e\\x06\\xcb\\x6d\\x34\\xa4\\x67\\xcb\\x7b\\x07\\x58\\xd6\\xf5\\x5c\\x56\\x4b\\x5b\\xa1\\x56\\x03\\xe2\\x02\\xb1\\x88\\x56\\xd8\\x9e\\x72\\xa2\\x3a\\xb0\\x7d\\x88\\x53\\xff\\x77\\xda\\x7a\\xff\\x1c\\xae\\xbd\\x79\\x59\\xf2\\xc7\\x10\\xef\\x31\\xf5\\x07\\x8a\\x9f\\x2c\\xda\\xe9\\x26\\x41\\xa1\\xcc\\x5f\\x74\\xd0\\xc1\\x43\\xec\\x42\\xaf\\xba\\xa5\\xf3\\x78\\xa9\\xe1\\x0d\\x5b\\xf7\\x45\\x87\\xfa\\x5f\\x49\\xc1\\x56\\x23\\x32\\x47\\xda\\xfd\\x39\\x29\\xac\\xde\\x88\\x8d\\xc6\\x84\\x33\\x7e\\x40\\xcd\\xc5\\x93\\x2e\\x7e\\xb7\\x3f\\xfc\\xc9\\x0b\\x85\\xc0\\xad\\x46\\x04\\x16\\x69\\x1a\\xef\\xbd\\x7e\\xfd\\x07\\xb6\\x57\\xc3\\x50\\x94\\x6a\\x0e\\x36\\x6b\\x37\\xa6\\xc8\\x08\\x9a\\xba\\x5c\\x5f\\xe3\\xbb\\xca\\x06\\x4a\\xfb\\xe9\\xd4\\x7f\\xbc\\x83\\x91\\x4a\\xf1\\xcb\\x43\\xc2\\xb2\\xef\\xa9\\x8e\\x0a\\x43\\xbe\\x32\\xba\\x82\\x32\\x02\\x00\\x1d\\xef\\x36\\x81\\x72\\x51\\xb6\\x5f\\x9b\\x05\\x06\\xce\\xf6\\x68\\x36\\x42\\xa4\\x6e\\xd6\\x12\\xf8\\xca\\x81\\xee\\x97\\xbb\\x04\\xd3\\x17\\xb5\\x17\\x34\\x3a\\xde\\x2b\\x77\\x12\\x6d\\x1f\\x02\\xa8\\x7b\\x76\\x04\\xc8\\x65\\x3b\\x67\\x48\\xcf\\x54\\x88\\xfa\\x6d\\x43\\xdf\\x80\\x9f\\xaa\\x19\\xe6\\x92\\x92\\xd3\\x8c\\x5d\\x39\\x7d\\xd8\\xe2\\x0c\\x7a\\xf7\\xc5\\x33\\x4e\\xc9\\x77\\xf5\\x01\\x0a\\x0f\\x7c\\xb5\\xb8\\x94\\x79\\xca\\x06\\xdb\\x4d\\x12\\x62\\x7f\\x06\\x7d\\x6c\\x42\\x18\\x6a\\x6b\\x1f\\x87\\x42\\xf3\\x6a\\xe7\\x09\\xba\\x72\\x0e\\x3c\\xd8\\x98\\x11\\x66\\x66\\xd8\\x1b\\x19\\x0b\\x9b\\x9d\\x2a\\x72\\x20\\x2c\\xb6\\x90\\xa0\\x3f\\x33\\x10\\x42\\x9a\\x71\\xdc\\x04\\x8c\\xde\"},\n{{0xf2,0x19,0xb2,0x10,0x11,0x64,0xaa,0x97,0x23,0xbd,0xe3,0xa7,0x34,0x6f,0x68,0xa3,0x50,0x61,0xc0,0x1f,0x97,0x82,0x07,0x25,0x80,0xba,0x32,0xdf,0x90,0x3b,0xa8,0x91,},{0xf6,0x6b,0x92,0x0d,0x5a,0xa1,0xa6,0x08,0x54,0x95,0xa1,0x48,0x05,0x39,0xbe,0xba,0x01,0xff,0xe6,0x0e,0x6a,0x63,0x88,0xd1,0xb2,0xe8,0xed,0xa2,0x33,0x55,0x81,0x0e,},{0x17,0xf0,0x12,0x7c,0xa3,0xba,0xfa,0x5f,0x4e,0xe9,0x59,0xcd,0x60,0xf7,0x72,0xbe,0x87,0xa0,0x03,0x49,0x61,0x51,0x7e,0x39,0xa0,0xa1,0xd0,0xf4,0xb9,0xe2,0x6d,0xb1,0x33,0x6e,0x60,0xc8,0x2b,0x35,0x2c,0x4c,0xba,0xcd,0xbb,0xd1,0x17,0x71,0xc3,0x77,0x4f,0x8c,0xc5,0xa1,0xa7,0x95,0xd6,0xe4,0xf4,0xeb,0xd5,0x1d,0xef,0x36,0x77,0x0b,},\"\\x01\\x55\\x77\\xd3\\xe4\\xa0\\xec\\x1a\\xb2\\x59\\x30\\x10\\x63\\x43\\xff\\x35\\xab\\x4f\\x1e\\x0a\\x8a\\x2d\\x84\\x4a\\xad\\xbb\\x70\\xe5\\xfc\\x53\\x48\\xcc\\xb6\\x79\\xc2\\x29\\x5c\\x51\\xd7\\x02\\xaa\\xae\\x7f\\x62\\x73\\xce\\x70\\x29\\x7b\\x26\\xcb\\x7a\\x25\\x3a\\x3d\\xb9\\x43\\x32\\xe8\\x6a\\x15\\xb4\\xa6\\x44\\x91\\x23\\x27\\x91\\xf7\\xa8\\xb0\\x82\\xee\\x28\\x34\\xaf\\x30\\x40\\x0e\\x80\\x46\\x47\\xa5\\x32\\xe9\\xc4\\x54\\xd2\\xa0\\xa7\\x32\\x01\\x30\\xab\\x6d\\x4d\\x86\\x00\\x73\\xa3\\x46\\x67\\xac\\x25\\xb7\\xe5\\xe2\\x74\\x7b\\xa9\\xf5\\xc9\\x45\\x94\\xfb\\x68\\x37\\x7a\\xe2\\x60\\x36\\x9c\\x40\\x71\\x3b\\x4e\\x32\\xf2\\x31\\x95\\xbf\\x91\\xd3\\xd7\\xf1\\xa2\\x71\\x9b\\xf4\\x08\\xaa\\xd8\\xd8\\xa3\\x47\\xb1\\x12\\xe8\\x4b\\x11\\x88\\x17\\xcb\\x06\\x51\\x33\\x44\\x02\\x17\\x63\\x03\\x52\\x72\\xa7\\xdb\\x72\\x8a\\x0c\\xcd\\xaa\\x94\\x9c\\x61\\x71\\x5d\\x07\\x64\\x14\\x0b\\x3e\\x8c\\x01\\xd2\\x0f\\xf1\\x59\\x3c\\x7f\\x2d\\x55\\xc4\\xe8\\x2a\\x1c\\x0c\\xb1\\xea\\x58\\x44\\x2b\\xf8\\x0a\\x74\\x1b\\xca\\x91\\xf5\\x8a\\xb0\\x58\\x1b\\x49\\x8e\\xe9\\xfe\\x3c\\x92\\xca\\x65\\x41\\x48\\xef\\x75\\x31\\x35\\x43\\xd1\\xaf\\xf3\\x82\\xbe\\xfe\\x1a\\x93\\xb0\\x21\\x90\\xce\\x01\\x02\\x17\\x51\\x58\\xe2\\x07\\x1d\\x02\\xba\\xca\\xd8\\xdb\\xe9\\xfb\\x94\\x0f\\xcb\\x61\\x0c\\x10\\x5a\\xd5\\x2c\\x80\\xfe\\xb1\\xec\\x4e\\x52\\x4f\\x4c\\x0e\\xc7\\x98\\x3e\\x9c\\xe6\\x96\\xfa\\x4f\\xcf\\x4b\\xf0\\x51\\x4b\\x8f\\x04\\x32\\xb1\\x7d\\x54\\x48\\xfc\\x42\\x6f\\xea\\x2b\\x01\\xac\\x7b\\x26\\xc2\\xae\\xd7\\x69\\x92\\x75\\x34\\xda\\x22\\x57\\x6f\\xc1\\xbb\\xa7\\x26\\xe9\\xd6\\x5b\\xe0\\x1b\\x59\\xf6\\x0a\\x64\\x8a\\xce\\x2f\\xc3\\xe5\\xe2\\x75\\x78\\x9f\\xa6\\x37\\xcb\\xbd\\x84\\xbe\\x3d\\x6a\\xc2\\x44\\x57\\xa6\\x29\\x2c\\xd6\\x56\\xc7\\xb5\\x69\\xa5\\x2f\\xfe\\xa7\\x91\\x6b\\x8d\\x04\\xb4\\xf4\\xa7\\x5b\\xe7\\xac\\x95\\x14\\x2f\"},\n{{0xfc,0x18,0x00,0x35,0xae,0xc0,0xf5,0xed,0xe7,0xbd,0xa9,0x3b,0xf7,0x7a,0xde,0x7a,0x81,0xed,0x06,0xde,0x07,0xee,0x2e,0x3a,0xa8,0x57,0x6b,0xe8,0x16,0x08,0x61,0x0a,},{0x4f,0x21,0x5e,0x94,0x8c,0xae,0x24,0x3e,0xe3,0x14,0x3b,0x80,0x28,0x2a,0xd7,0x92,0xc7,0x80,0xd2,0xa6,0xb7,0x50,0x60,0xca,0x1d,0x29,0x0c,0xa1,0xa8,0xe3,0x15,0x1f,},{0xa4,0x3a,0x71,0xc3,0xa1,0x9c,0x35,0x66,0x0d,0xae,0x6f,0x31,0xa2,0x54,0xb8,0xc0,0xea,0x35,0x93,0xfc,0x8f,0xca,0x74,0xd1,0x36,0x40,0x01,0x2b,0x9e,0x94,0x73,0xd4,0xaf,0xe0,0x70,0xdb,0x01,0xe7,0xfb,0x39,0x9b,0xf4,0xca,0x60,0x70,0xe0,0x62,0x18,0x00,0x11,0x28,0x5a,0x67,0xdd,0x68,0x58,0xb7,0x61,0xe4,0x6c,0x6b,0xd3,0x20,0x04,},\"\\xb5\\xe8\\xb0\\x16\\x25\\x66\\x4b\\x22\\x23\\x39\\xe0\\xf0\\x5f\\x93\\xa9\\x90\\xba\\x48\\xb5\\x6a\\xe6\\x54\\x39\\xa1\\x75\\x20\\x93\\x2d\\xf0\\x11\\x72\\x1e\\x28\\x4d\\xbe\\x36\\xf9\\x86\\x31\\xc0\\x66\\x51\\x00\\x98\\xa6\\x8d\\x7b\\x69\\x2a\\x38\\x63\\xe9\\x9d\\x58\\xdb\\x76\\xca\\x56\\x67\\xc8\\x04\\x3c\\xb1\\x0b\\xd7\\xab\\xba\\xf5\\x06\\x52\\x9f\\xbb\\x23\\xa5\\x16\\x6b\\xe0\\x38\\xaf\\xfd\\xb9\\xa2\\x34\\xc4\\xf4\\xfc\\xf4\\x3b\\xdd\\xd6\\xb8\\xd2\\xce\\x77\\x2d\\xd6\\x53\\xed\\x11\\x5c\\x09\\x5e\\x23\\x2b\\x26\\x9d\\xd4\\x88\\x8d\\x23\\x68\\xcb\\x1c\\x66\\xbe\\x29\\xdd\\x38\\x3f\\xca\\x67\\xf6\\x67\\x65\\xb2\\x96\\x56\\x4e\\x37\\x55\\x5f\\x0c\\x0e\\x48\\x45\\x04\\xc5\\x91\\xf0\\x06\\xea\\x85\\x33\\xa1\\x25\\x83\\xad\\x2e\\x48\\x31\\x8f\\xf6\\xf3\\x24\\xec\\xaf\\x80\\x4b\\x1b\\xae\\x04\\xaa\\x89\\x67\\x43\\xe6\\x7e\\xf6\\x1c\\xa3\\x83\\xd5\\x8e\\x42\\xac\\xfc\\x64\\x10\\xde\\x30\\x77\\x6e\\x3b\\xa2\\x62\\x37\\x3b\\x9e\\x14\\x41\\x94\\x39\\x55\\x10\\x1a\\x4e\\x76\\x82\\x31\\xad\\x9c\\x65\\x29\\xef\\xf6\\x11\\x8d\\xde\\x5d\\xf0\\x2f\\x94\\xb8\\xd6\\xdf\\x2d\\x99\\xf2\\x78\\x63\\xb5\\x17\\x24\\x3a\\x57\\x9e\\x7a\\xaf\\xf3\\x11\\xea\\x3a\\x02\\x82\\xe4\\x7c\\xa8\\x76\\xfa\\xbc\\x22\\x80\\xfc\\xe7\\xad\\xc9\\x84\\xdd\\x0b\\x30\\x88\\x5b\\x16\\x50\\xf1\\x47\\x1d\\xfc\\xb0\\x52\\x2d\\x49\\xfe\\xc7\\xd0\\x42\\xf3\\x2a\\x93\\xbc\\x36\\x8f\\x07\\x60\\x06\\xea\\x01\\xec\\x1c\\x74\\x12\\xbf\\x66\\xf6\\x2d\\xc8\\x8d\\xe2\\xc0\\xb7\\x47\\x01\\xa5\\x61\\x4e\\x85\\x5e\\x9f\\xa7\\x28\\xfb\\x1f\\x11\\x71\\x38\\x5f\\x96\\xaf\\xbd\\xe7\\x0d\\xea\\x02\\xe9\\xaa\\x94\\xdc\\x21\\x84\\x8c\\x26\\x30\\x2b\\x50\\xae\\x91\\xf9\\x69\\x3a\\x18\\x64\\xe4\\xe0\\x95\\xae\\x03\\xcd\\xc2\\x2a\\xd2\\x8a\\x0e\\xb7\\xdb\\x59\\x67\\x79\\x24\\x67\\x12\\xfa\\xb5\\xf5\\xda\\x32\\x7e\\xfe\\xc3\\xe7\\x96\\x12\\xde\\x0a\\x6c\\xca\\xa5\\x36\\x75\\x9b\\x8e\"},\n{{0xa2,0x83,0x6a,0x65,0x42,0x79,0x12,0x12,0x2d,0x25,0xdc,0xdf,0xc9,0x9d,0x70,0x46,0xfe,0x9b,0x53,0xd5,0xc1,0xbb,0x23,0x61,0x7f,0x11,0x89,0x0e,0x94,0xca,0x93,0xed,},{0x8c,0x12,0xbd,0xa2,0x14,0xc8,0xab,0xb2,0x28,0x6a,0xcf,0xfb,0xf8,0x11,0x24,0x25,0x04,0x0a,0xab,0x9f,0x4d,0x8b,0xb7,0x87,0x0b,0x98,0xda,0x01,0x59,0xe8,0x82,0xf1,},{0xe6,0xa9,0xa6,0xb4,0x36,0x55,0x9a,0x43,0x20,0xc4,0x5c,0x0c,0x2c,0x4a,0x2a,0xed,0xec,0xb9,0x0d,0x41,0x6d,0x52,0xc8,0x26,0x80,0xac,0x73,0x30,0xd0,0x62,0xae,0xbe,0xf3,0xe9,0xac,0x9f,0x2c,0x5f,0xfa,0x45,0x5c,0x9b,0xe1,0x13,0x01,0x3a,0x2b,0x28,0x2e,0x56,0x00,0xfd,0x30,0x64,0x35,0xad,0xa8,0x3b,0x1e,0x48,0xba,0x2a,0x36,0x05,},\"\\x81\\x3d\\x60\\x61\\xc5\\x6e\\xae\\x0f\\xf5\\x30\\x41\\xc0\\x24\\x4a\\xa5\\xe2\\x9e\\x13\\xec\\x0f\\x3f\\xb4\\x28\\xd4\\xbe\\xb8\\xa9\\x9e\\x04\\xbc\\xa8\\xc4\\x1b\\xdd\\xb0\\xdb\\x94\\x5f\\x48\\x7e\\xfe\\x38\\xf2\\xfc\\x14\\xa6\\x28\\xfa\\xfa\\x24\\x62\\xf8\\x60\\xe4\\xe3\\x42\\x50\\xeb\\x4e\\x93\\xf1\\x39\\xab\\x1b\\x74\\xa2\\x61\\x45\\x19\\xe4\\x1e\\xe2\\x40\\x3b\\xe4\\x27\\x93\\x0a\\xb8\\xbc\\x82\\xec\\x89\\xce\\xaf\\xb6\\x09\\x05\\xbd\\x4d\\xdb\\xbd\\x13\\xbd\\xb1\\x96\\x54\\x31\\x4f\\xc9\\x23\\x73\\x14\\x0b\\x96\\x2e\\x22\\x58\\xe0\\x38\\xd7\\x1b\\x9e\\xc6\\x6b\\x84\\xef\\x83\\x19\\xe0\\x35\\x51\\xcb\\x70\\x7e\\x74\\x7f\\x6c\\x40\\xad\\x47\\x6f\\xbe\\xfd\\xce\\x71\\xf3\\xa7\\xb6\\x7a\\x1a\\xf1\\x86\\x9b\\xc6\\x44\\x06\\x86\\xe7\\xe0\\x85\\x5e\\x4f\\x36\\x9d\\x1d\\x88\\xb8\\x09\\x9f\\xba\\x54\\x71\\x46\\x78\\x62\\x7b\\xba\\x1a\\xff\\x41\\xe7\\x70\\x7b\\xc9\\x7e\\xdd\\xf8\\x90\\xb0\\xc0\\x8d\\xce\\x3e\\x98\\x00\\xd2\\x4c\\x6f\\x61\\x09\\x2c\\xe2\\x8d\\x48\\x1b\\x5d\\xea\\x5c\\x09\\x6c\\x55\\xd7\\x2f\\x89\\x46\\x00\\x91\\x31\\xfb\\x96\\x8e\\x2b\\xc8\\xa0\\x54\\xd8\\x25\\xad\\xab\\x76\\x74\\x0d\\xcf\\x0d\\x75\\x8c\\x8b\\xf5\\x4f\\xf3\\x86\\x59\\xe7\\x1b\\x32\\xbf\\xe2\\xe6\\x15\\xaa\\xab\\xb0\\xf5\\x29\\x30\\x85\\x64\\x9c\\xf6\\x0b\\x98\\x47\\xbc\\x62\\x01\\x1c\\xe3\\x87\\x8a\\xf6\\x28\\x98\\x4a\\x58\\x40\\xa4\\xad\\x5d\\xae\\x37\\x02\\xdb\\x36\\x7d\\xa0\\xf8\\xa1\\x65\\xfe\\xd0\\x51\\x7e\\xb5\\xc4\\x42\\xb0\\x14\\x53\\x30\\x24\\x1b\\x97\\xee\\xca\\x73\\x3b\\xa6\\x68\\x8b\\x9c\\x12\\x9a\\x61\\xcd\\x12\\x36\\xaf\\xf0\\xe2\\x7b\\xcf\\x98\\xc2\\x8b\\x0f\\xbe\\xea\\x55\\xa3\\xd7\\xc7\\x19\\x3d\\x64\\x4b\\x27\\x49\\xf9\\x86\\xbd\\x46\\xaf\\x89\\x38\\xe8\\xfa\\xae\\xaf\\xbd\\x9c\\xec\\x36\\x12\\xab\\x00\\x5b\\xd7\\xc3\\xee\\xaf\\xe9\\xa3\\x12\\x79\\xca\\x61\\x02\\x56\\x06\\x66\\xba\\x16\\x13\\x6f\\xf1\\x45\\x2f\\x85\\x0a\\xdb\"},\n{{0xf0,0x51,0xaf,0x42,0x6d,0x0c,0x32,0x82,0xfa,0xfc,0x8b,0xf9,0x12,0xad,0xe1,0xc2,0x42,0x11,0xa9,0x5a,0xd2,0x00,0xe1,0xee,0xf5,0x49,0x32,0x0e,0x1c,0xb1,0xa2,0x52,},{0xfa,0x87,0x95,0x5e,0x0e,0xa1,0x3d,0xde,0x49,0xd8,0x3d,0xc2,0x2e,0x63,0xa2,0xbd,0xf1,0x07,0x67,0x25,0xc2,0xcc,0x7f,0x93,0xc7,0x65,0x11,0xf2,0x8e,0x79,0x44,0xf2,},{0xb8,0xf7,0x13,0x57,0x8a,0x64,0x46,0x67,0x19,0xac,0xeb,0x43,0x2f,0xce,0x30,0x2a,0x87,0xcf,0x06,0x6b,0xf3,0xe1,0x02,0xa3,0x50,0x61,0x69,0x21,0xa8,0x40,0x96,0x4b,0xfc,0x7e,0x68,0x5d,0x8f,0xd1,0x74,0x55,0xac,0x3e,0xb4,0x86,0x1e,0xdc,0xb8,0x97,0x9d,0x35,0xe3,0xa4,0xbd,0x82,0xa0,0x78,0xcd,0x70,0x77,0x21,0xd7,0x33,0x40,0x0e,},\"\\xb4\\x8d\\x9f\\x84\\x76\\x2b\\x3b\\xcc\\x66\\xe9\\x6d\\x76\\xa6\\x16\\xfa\\x8f\\xe8\\xe0\\x16\\x95\\x25\\x1f\\x47\\xcf\\xc1\\xb7\\xb1\\x7d\\x60\\xdc\\x9f\\x90\\xd5\\x76\\xef\\x64\\xee\\x7d\\x38\\x85\\x04\\xe2\\xc9\\x07\\x96\\x38\\x16\\x5a\\x88\\x96\\x96\\x47\\x1c\\x98\\x9a\\x87\\x6f\\x8f\\x13\\xb6\\x3b\\x58\\xd5\\x31\\xfe\\xa4\\xdd\\x12\\x29\\xfc\\x63\\x16\\x68\\xa0\\x47\\xbf\\xae\\x2d\\xa2\\x81\\xfe\\xae\\x1b\\x6d\\xe3\\xeb\\xe2\\x80\\xab\\xe0\\xa8\\x2e\\xe0\\x0f\\xbf\\xdc\\x22\\xce\\x2d\\x10\\xe0\\x6a\\x04\\x92\\xff\\x14\\x04\\xdf\\xc0\\x94\\xc4\\x0b\\x20\\x3b\\xf5\\x57\\x21\\xdd\\x78\\x7e\\xd4\\xe9\\x1d\\x55\\x17\\xaa\\xf5\\x8d\\x3b\\xdd\\x35\\xd4\\x4a\\x65\\xae\\x6b\\xa7\\x56\\x19\\xb3\\x39\\xb6\\x50\\x51\\x8c\\xef\\xcc\\x17\\x49\\x3d\\xe2\\x7a\\x3b\\x5d\\x41\\x78\\x8f\\x87\\xed\\xbd\\xe7\\x26\\x10\\xf1\\x81\\xbf\\x06\\xe2\\x08\\xe0\\xeb\\x7c\\xdf\\xe8\\x81\\xd9\\x1a\\x2d\\x6c\\xc7\\x7a\\xa1\\x9c\\x0f\\xcf\\x33\\x0f\\xed\\xb4\\x46\\x75\\xd8\\x00\\xeb\\x8c\\xff\\x95\\x05\\xd8\\x88\\x75\\x44\\xa5\\x03\\xcb\\xe3\\x73\\xc4\\x84\\x7b\\x19\\xe8\\xf3\\x99\\x57\\x26\\xef\\xd6\\x64\\x98\\x58\\x59\\x5c\\x57\\xcc\\xaf\\x0c\\xbc\\x9e\\xb2\\x5d\\xe8\\x3b\\xa0\\x46\\xbc\\x9f\\x18\\x38\\xac\\x7b\\x89\\x53\\xdd\\x81\\xb8\\x1a\\xc0\\xf6\\x8d\\x0e\\x93\\x38\\xcb\\x55\\x40\\x25\\x52\\xaf\\xb6\\xbc\\x16\\x94\\x93\\x51\\xb9\\x26\\xd1\\x51\\xa8\\x2e\\xfc\\x69\\x5e\\x8d\\x7d\\xa0\\xdd\\x55\\x09\\x93\\x66\\x78\\x97\\x18\\xcc\\xbf\\x36\\x03\\x0b\\xd2\\xc3\\xc1\\x09\\x39\\x9b\\xe2\\x6c\\xdb\\x8b\\x9e\\x2a\\x15\\x5f\\x3b\\x2c\\xb1\\xbf\\xa7\\x1a\\xb6\\x9a\\x23\\x62\\x5a\\x4a\\xc1\\x18\\xfe\\x91\\xcb\\x2c\\x19\\x78\\x8c\\xf5\\x2a\\x71\\xd7\\x30\\xd5\\x76\\xb4\\x21\\xd9\\x69\\x82\\xa5\\x1a\\x29\\x91\\xda\\xec\\x44\\x0c\\xda\\x7e\\x6c\\xc3\\x28\\x2b\\x83\\x12\\x71\\x42\\x78\\xb8\\x19\\xbf\\xe2\\x38\\x7e\\xb9\\x6a\\xa9\\x1d\\x40\\x17\\x30\\x34\\xf4\\x28\"},\n{{0xa1,0x03,0xe9,0x26,0x72,0xc6,0x5f,0x81,0xea,0x5d,0xa1,0xff,0xf1,0xa4,0x03,0x87,0x88,0x47,0x9e,0x94,0x1d,0x50,0x3a,0x75,0x6f,0x4a,0x75,0x52,0x01,0xa5,0x7c,0x1d,},{0xee,0x63,0xa5,0xb6,0x96,0x41,0x21,0x7a,0xcb,0xaf,0x33,0x39,0xda,0x82,0x9e,0xc0,0x71,0xb9,0x93,0x1e,0x59,0x87,0x15,0x35,0x14,0xd3,0x01,0x40,0x83,0x7a,0x7a,0xf4,},{0x2a,0xa2,0x03,0x5c,0x2c,0xe5,0xb5,0xe6,0xae,0x16,0x1e,0x16,0x8f,0x3a,0xd0,0xd6,0x59,0x2b,0xcf,0x2c,0x4a,0x04,0x9d,0x3e,0xd3,0x42,0xfc,0xeb,0x56,0xbe,0x9c,0x7c,0xb3,0x72,0x02,0x75,0x73,0xae,0x01,0x78,0xe8,0x87,0x8e,0xbe,0xfc,0xa7,0xb0,0x30,0x32,0x7b,0x8a,0xad,0x41,0x85,0x7d,0xe5,0x8c,0xb7,0x8e,0x1a,0x00,0xcb,0xac,0x05,},\"\\xb1\\x98\\x4e\\x9e\\xec\\x08\\x5d\\x52\\x4c\\x1e\\xb3\\xb9\\x5c\\x89\\xc8\\x4a\\xe0\\x85\\xbe\\x5d\\xc6\\x5c\\x32\\x6e\\x19\\x02\\x5e\\x12\\x10\\xa1\\xd5\\x0e\\xdb\\xbb\\xa5\\xd1\\x37\\x0c\\xf1\\x5d\\x68\\xd6\\x87\\xeb\\x11\\x32\\x33\\xe0\\xfb\\xa5\\x0f\\x94\\x33\\xc7\\xd3\\x58\\x77\\x39\\x50\\xc6\\x79\\x31\\xdb\\x82\\x96\\xbb\\xcb\\xec\\xec\\x88\\x8e\\x87\\xe7\\x1a\\x2f\\x75\\x79\\xfa\\xd2\\xfa\\x16\\x2b\\x85\\xfb\\x97\\x47\\x3c\\x45\\x6b\\x9a\\x5c\\xe2\\x95\\x66\\x76\\x96\\x9c\\x7b\\xf4\\xc4\\x56\\x79\\x08\\x5b\\x62\\xf2\\xc2\\x24\\xfc\\x7f\\x45\\x87\\x94\\x27\\x3f\\x6d\\x12\\xc5\\xf3\\xe0\\xd0\\x69\\x51\\x82\\x4d\\x1c\\xca\\x3e\\x2f\\x90\\x45\\x59\\xed\\x28\\xe2\\x86\\x8b\\x36\\x6d\\x79\\xd9\\x4d\\xc9\\x86\\x67\\xb9\\xb5\\x92\\x42\\x68\\xf3\\xe3\\x9b\\x12\\x91\\xe5\\xab\\xe4\\xa7\\x58\\xf7\\x70\\x19\\xda\\xcb\\xb2\\x2b\\xd8\\x19\\x6e\\x0a\\x83\\xa5\\x67\\x76\\x58\\x83\\x6e\\x96\\xca\\x56\\x35\\x05\\x5a\\x1e\\x63\\xd6\\x5d\\x03\\x6a\\x68\\xd8\\x7a\\xc2\\xfd\\x28\\x3f\\xdd\\xa3\\x90\\x31\\x99\\x09\\xc5\\xcc\\x76\\x80\\x36\\x88\\x48\\x87\\x3d\\x59\\x7f\\x29\\x8e\\x0c\\x61\\x72\\x30\\x80\\x30\\xff\\xd4\\x52\\xbb\\x13\\x63\\x61\\x7b\\x31\\x6e\\xd7\\xcd\\x94\\x9a\\x16\\x5d\\xc8\\xab\\xb5\\x3f\\x99\\x1a\\xef\\x3f\\x3e\\x95\\x02\\xc5\\xdf\\xe4\\x75\\x6b\\x7c\\x6b\\xfd\\xfe\\x89\\xf5\\xe0\\x0f\\xeb\\xdd\\x6a\\xfb\\x04\\x02\\x81\\x8f\\x11\\xcf\\x8d\\x1d\\x58\\x64\\xfe\\x9d\\xa1\\xb8\\x6e\\x39\\xaa\\x93\\x58\\x31\\x50\\x6c\\xf2\\x40\\x0e\\xa7\\xed\\x75\\xbd\\x95\\x33\\xb2\\x3e\\x20\\x2f\\xe8\\x75\\xd7\\xd9\\x63\\x8c\\x89\\xd1\\x1c\\xb2\\xd6\\xe6\\x02\\x1a\\xe6\\xbd\\x27\\xc7\\x75\\x48\\x10\\xd3\\x5c\\xd3\\xa6\\x14\\x94\\xf2\\x7b\\x16\\xfc\\x79\\x4e\\x2c\\xd2\\xf0\\xd3\\x45\\x3a\\xda\\x93\\x38\\x65\\xdb\\x78\\xc5\\x79\\x57\\x1f\\x8f\\xc5\\xc5\\xc6\\xbe\\x8e\\xaf\\xfc\\xe6\\xa8\\x52\\xe5\\xb3\\xb1\\xc5\\x24\\xc4\\x93\\x13\\xd4\\x27\\xab\\xcb\"},\n{{0xd4,0x7c,0x1b,0x4b,0x9e,0x50,0xcb,0xb7,0x1f,0xd0,0x7d,0x09,0x6d,0x91,0xd8,0x72,0x13,0xd4,0x4b,0x02,0x43,0x73,0x04,0x47,0x61,0xc4,0x82,0x2f,0x9d,0x9d,0xf8,0x80,},{0xf4,0xe1,0xcb,0x86,0xc8,0xca,0x2c,0xfe,0xe4,0x3e,0x58,0x59,0x4a,0x87,0x78,0x43,0x6d,0x3e,0xa5,0x19,0x70,0x4e,0x00,0xc1,0xbb,0xe4,0x8b,0xbb,0x1c,0x94,0x54,0xf8,},{0x62,0x7e,0x7c,0xa7,0xe3,0x4e,0xd6,0x33,0x1d,0x62,0xb9,0x54,0x1c,0x1e,0xa9,0xa9,0x29,0x2b,0xe7,0xb0,0xa6,0x5d,0x80,0x5e,0x26,0x6b,0x51,0x22,0x27,0x2a,0x82,0xdb,0x7d,0x76,0x5a,0xcc,0x7e,0x2a,0x29,0x0d,0x68,0x58,0x04,0x92,0x2f,0x91,0xed,0x04,0xa3,0xc3,0x82,0xc0,0x3f,0xf2,0x1a,0x17,0x68,0xf5,0x84,0x41,0x3c,0x4e,0x5f,0x00,},\"\\x88\\xd7\\x00\\x9d\\x51\\xde\\x3d\\x33\\x7e\\xef\\x0f\\x21\\x5e\\xa6\\x6a\\xb8\\x30\\xec\\x5a\\x9e\\x68\\x23\\x76\\x1c\\x3b\\x92\\xad\\x93\\xea\\x34\\x1d\\xb9\\x2e\\xce\\x67\\xf4\\xef\\x4c\\xeb\\x84\\x19\\x4a\\xe6\\x92\\x6c\\x3d\\x01\\x4b\\x2d\\x59\\x78\\x1f\\x02\\xe0\\xb3\\x2f\\x9a\\x61\\x12\\x22\\xcb\\x9a\\x58\\x50\\xc6\\x95\\x7c\\xb8\\x07\\x9a\\xe6\\x4e\\x08\\x32\\xa1\\xf0\\x5e\\x5d\\x1a\\x3c\\x57\\x2f\\x9d\\x08\\xf1\\x43\\x7f\\x76\\xbb\\x3b\\x83\\xb5\\x29\\x67\\xc3\\xd4\\x8c\\x35\\x76\\x84\\x88\\x91\\xc9\\x65\\x8d\\x49\\x59\\xeb\\x80\\x65\\x6d\\x26\\xcd\\xba\\x08\\x10\\x03\\x7c\\x8a\\x18\\x31\\x8f\\xf1\\x22\\xf8\\xaa\\x89\\x85\\xc7\\x73\\xcb\\x31\\x7e\\xfa\\x2f\\x55\\x7f\\x1c\\x38\\x96\\xbc\\xb1\\x62\\xdf\\x5d\\x87\\x68\\x1b\\xb7\\x87\\xe7\\x81\\x3a\\xa2\\xde\\xa3\\xb0\\xc5\\x64\\xd6\\x46\\xa9\\x28\\x61\\xf4\\x44\\xca\\x14\\x07\\xef\\xba\\xc3\\xd1\\x24\\x32\\xcb\\xb7\\x0a\\x1d\\x0e\\xaf\\xfb\\x11\\x74\\x1d\\x37\\x18\\xfe\\xde\\xe2\\xb8\\x30\\x36\\x18\\x9a\\x6f\\xc4\\x5a\\x52\\xf7\\x4f\\xa4\\x87\\xc1\\x8f\\xd2\\x64\\xa7\\x94\\x5f\\x6c\\x9e\\x44\\xb0\\x11\\xf5\\xd8\\x66\\x13\\xf1\\x93\\x9b\\x19\\xf4\\xf4\\xfd\\xf5\\x32\\x34\\x05\\x7b\\xe3\\xf0\\x05\\xad\\x64\\xee\\xbf\\x3c\\x8f\\xfb\\x58\\xcb\\x40\\x95\\x6c\\x43\\x36\\xdf\\x01\\xd4\\x42\\x4b\\x70\\x6a\\x0e\\x56\\x1d\\x60\\x17\\x08\\xd1\\x24\\x85\\xe2\\x1b\\xcb\\x6d\\x79\\x9d\\x8d\\x1d\\x04\\x4b\\x40\\x00\\x64\\xec\\x09\\x44\\x50\\x14\\x06\\xe7\\x02\\x53\\x94\\x70\\x06\\xca\\xbb\\xdb\\x2d\\xd6\\xbd\\x8c\\xee\\x44\\x97\\x65\\x3d\\x91\\x13\\xa4\\x4d\\x4d\\xe9\\xb6\\x8d\\x4c\\x52\\x6f\\xca\\x0b\\x9b\\x0c\\x18\\xfe\\x50\\xfb\\x91\\x7f\\xdd\\x9a\\x91\\x4f\\xb8\\x16\\x10\\x8a\\x73\\xa6\\xb3\\xff\\xf9\\xe6\\x54\\xe6\\x9c\\x9c\\xfe\\x02\\xb0\\x5c\\x6c\\x1b\\x9d\\x15\\xc4\\xe6\\x5c\\xf3\\x10\\x18\\xb8\\x10\\x0d\\x78\\x46\\x33\\xee\\x18\\x88\\xee\\xe3\\x57\\x2a\\xaf\\xa6\\xf1\\x89\\xea\\x22\\xd0\"},\n{{0xfc,0x0c,0x32,0xc5,0xeb,0x6c,0x71,0xea,0x08,0xdc,0x2b,0x30,0x0c,0xbc,0xef,0x18,0xfd,0xde,0x3e,0xa2,0x0f,0x68,0xf2,0x17,0x33,0x23,0x7b,0x4d,0xda,0xab,0x90,0x0e,},{0x47,0xc3,0x7d,0x8a,0x08,0x08,0x57,0xeb,0x87,0x77,0xa6,0xc0,0xa9,0xa5,0xc9,0x27,0x30,0x3f,0xaf,0x5c,0x32,0x09,0x53,0xb5,0xde,0x48,0xe4,0x62,0xe1,0x2d,0x00,0x62,},{0x68,0x87,0xc6,0xe2,0xb9,0x8a,0x82,0xaf,0x5e,0xe3,0xdf,0xa7,0xca,0x2c,0xb2,0x5d,0x9c,0x10,0x74,0x56,0x20,0xa8,0x29,0x56,0xac,0xba,0x85,0xcb,0x57,0xc8,0xec,0x24,0x27,0x9f,0xa4,0x2f,0x09,0x23,0x59,0xa1,0xb6,0xbb,0xea,0xfb,0xa0,0x50,0xf1,0x4b,0x62,0x88,0x20,0x9e,0x6e,0xf7,0xbc,0x1e,0x0a,0x2b,0x87,0x2c,0x11,0x38,0xf3,0x05,},\"\\xa7\\xb1\\xe2\\xdb\\x6b\\xdd\\x96\\xb3\\xd5\\x14\\x75\\x60\\x35\\x37\\xa7\\x6b\\x42\\xb0\\x4d\\x7e\\xbd\\x24\\xfe\\x51\\x5a\\x88\\x76\\x58\\xe4\\xa3\\x52\\xe2\\x21\\x09\\x33\\x56\\x39\\xa5\\x9e\\x25\\x34\\x81\\x1f\\x47\\x53\\xb7\\x02\\x09\\xd0\\xe4\\x69\\x8e\\x9d\\x92\\x60\\x88\\x82\\x6c\\x14\\x68\\x96\\x81\\xea\\x00\\xfa\\x3a\\x2f\\xca\\xa0\\x04\\x7c\\xed\\x3e\\xf2\\x87\\xe6\\x17\\x25\\x02\\xb2\\x15\\xe5\\x64\\x97\\x61\\x4d\\x86\\xb4\\xcb\\x26\\xbc\\xd7\\x7a\\x2e\\x17\\x25\\x09\\x36\\x0e\\xe5\\x88\\x93\\xd0\\x1c\\x0d\\x0f\\xb4\\xd4\\xab\\xfe\\x4d\\xbd\\x8d\\x2a\\x2f\\x54\\x19\\x0f\\xa2\\xf7\\x31\\xc1\\xce\\xac\\x68\\x29\\xc3\\xdd\\xc9\\xbf\\xb2\\xff\\xd7\\x0c\\x57\\xba\\x0c\\x2b\\x22\\xd2\\x32\\x6f\\xbf\\xe7\\x39\\x0d\\xb8\\x80\\x9f\\x73\\x54\\x7f\\xf4\\x7b\\x86\\xc3\\x6f\\x2b\\xf7\\x45\\x4e\\x67\\x8c\\x4f\\x1c\\x0f\\xa8\\x70\\xbd\\x0e\\x30\\xbb\\xf3\\x27\\x8e\\xc8\\xd0\\xc5\\xe9\\xb6\\x4a\\xff\\x0a\\xf6\\x4b\\xab\\xc1\\x9b\\x70\\xf4\\xcf\\x9a\\x41\\xcb\\x8f\\x95\\xd3\\xcd\\xe2\\x4f\\x45\\x6b\\xa3\\x57\\x1c\\x8f\\x02\\x1d\\x38\\xe5\\x91\\xde\\xc0\\x5c\\xb5\\xd1\\xca\\x7b\\x48\\xf9\\xda\\x4b\\xd7\\x34\\xb0\\x69\\xa9\\xfd\\x10\\x65\\x00\\xc1\\xf4\\x08\\xab\\x7f\\xe8\\xe4\\xa6\\xe6\\xf3\\xed\\x64\\xda\\x0e\\xd2\\x4b\\x01\\xe3\\x3d\\xf8\\x47\\x5f\\x95\\xfa\\x9e\\xd7\\x1d\\x04\\xdd\\x30\\xb3\\xcd\\x82\\x37\\x55\\xa3\\x40\\x1b\\xf5\\xaf\\xae\\x10\\xee\\x7e\\x18\\xec\\x6f\\xe6\\x37\\xc3\\x79\\x3f\\xd4\\x34\\xb4\\x8d\\x71\\x45\\x13\\x04\\x47\\xe0\\x02\\x99\\x10\\x10\\x52\\x55\\x8b\\x50\\x65\\x54\\xec\\x9c\\x39\\x9f\\x62\\x94\\x1c\\x3f\\x41\\x4c\\xbc\\x35\\x2c\\xaa\\x34\\x5b\\x93\\x0a\\xde\\xcf\\xad\\xda\\xc9\\x1e\\xe5\\x3d\\x14\\x51\\xa6\\x5e\\x06\\x20\\x10\\x26\\x32\\x5d\\xe0\\x7c\\x93\\x1f\\x69\\xbb\\xa8\\x68\\xa7\\xc8\\x7e\\xe2\\x3c\\x60\\x4e\\xc6\\x79\\x43\\x32\\x91\\x7d\\xfe\\x2c\\x5b\\x69\\x66\\x9b\\x65\\x97\\x06\\x91\\x7f\\x71\\xed\\xdf\\x96\"},\n{{0xa8,0xd7,0x3d,0x63,0x9a,0x23,0xcc,0x6a,0x96,0x7e,0xf3,0x1b,0xca,0xbb,0x5d,0x06,0x3e,0x53,0xe1,0xea,0xb8,0xfc,0xc7,0xca,0xb9,0xbc,0x3a,0x17,0xfd,0xe9,0xc2,0xf8,},{0x8d,0xaa,0x9f,0x4c,0x8b,0x1a,0x44,0x69,0x1b,0xf4,0x45,0x21,0xf2,0xf7,0xca,0x45,0xdc,0x7f,0xc6,0x1f,0x6a,0x4c,0xe6,0xf9,0x8f,0xaa,0x41,0xc2,0xa7,0x49,0x77,0xd1,},{0xc4,0xdc,0xef,0x1a,0x24,0x53,0x93,0x9b,0x36,0x4b,0x34,0x02,0x50,0xc3,0x12,0x94,0x31,0x43,0x1d,0x5b,0xa3,0xf4,0x76,0x70,0xab,0x07,0xce,0x68,0x0c,0x69,0xbf,0x28,0xb6,0x78,0x62,0x7c,0x76,0xa6,0x36,0x0f,0xc4,0x0d,0xc1,0x09,0xaa,0x7d,0xea,0x37,0x1b,0x82,0x5e,0x46,0x13,0x4f,0x62,0x45,0x72,0x18,0x2a,0xcf,0x39,0x57,0xe7,0x0f,},\"\\xfd\\x1f\\xac\\x3d\\x53\\x31\\x3b\\x11\\xac\\xd2\\x9f\\x5a\\x83\\xac\\x11\\x89\\x6d\\xab\\x25\\x30\\xfa\\x47\\x86\\x5b\\x22\\x95\\xc0\\xd9\\x9d\\xd6\\x7c\\x36\\xed\\x8e\\x5f\\xa5\\x49\\x15\\x0c\\x79\\x4c\\x55\\x49\\xef\\xb5\\xc1\\xd6\\x91\\x14\\xd5\\xd6\\x07\\xb2\\x32\\x85\\xb7\\x21\\x2a\\xfa\\xab\\x57\\x84\\x6a\\x54\\xae\\x67\\xb9\\xe8\\x80\\xe0\\x7b\\x65\\x86\\x60\\x7c\\xec\\xf6\\xd4\\xee\\xd5\\x16\\xa3\\xa7\\x55\\x11\\xfe\\x36\\x7d\\x88\\xeb\\x87\\x1e\\x6d\\x71\\xb7\\xd6\\xaa\\x13\\x67\\xa0\\x14\\x21\\xb1\\x08\\x8f\\xc2\\xd7\\x5e\\x44\\x95\\x4b\\x73\\x62\\x5c\\x52\\xda\\x8a\\x3a\\x18\\x3c\\x60\\xbe\\x9d\\xa6\\x05\\x0f\\x59\\xa4\\x53\\xca\\xa5\\x35\\x20\\x59\\x36\\x71\\x72\\x8d\\x43\\x18\\x77\\xbf\\xaa\\xc9\\x13\\xa7\\x65\\xfb\\x6a\\x56\\xb7\\x52\\x90\\xb2\\xa8\\xaa\\xac\\x34\\xaf\\xb9\\x21\\x7b\\xa1\\xb0\\xd5\\x85\\x0b\\xa0\\xfd\\xab\\xf8\\x09\\x69\\xde\\xf0\\xfe\\xee\\x79\\x4c\\xeb\\x60\\x61\\x4e\\x33\\x68\\xe6\\x3e\\xf2\\x0e\\x4c\\x32\\xd3\\x41\\xec\\x9b\\x03\\x28\\xea\\x9f\\xe1\\x39\\x20\\x7e\\xd7\\xa6\\x26\\xff\\x08\\x94\\x3b\\x41\\x52\\x33\\xdb\\x7c\\xfc\\xc8\\x45\\xc9\\xb6\\x31\\x21\\xd4\\xed\\x52\\xec\\x37\\x48\\xab\\x6a\\x1f\\x36\\xb2\\x10\\x3c\\x7d\\xc7\\xe9\\x30\\x3a\\xce\\xa4\\xba\\x8a\\xf7\\xa3\\xe0\\x71\\x84\\xfb\\x49\\x1e\\x89\\x1e\\xde\\x84\\xf0\\xdc\\x41\\xca\\xdc\\x39\\x73\\x02\\x8e\\x87\\x9a\\xcd\\x20\\x31\\xaf\\xc2\\x9a\\x16\\x09\\x28\\x68\\xe2\\xc7\\xf5\\x39\\xfc\\x1b\\x79\\x2e\\xda\\xb1\\x95\\xa2\\x5a\\xb9\\x83\\x06\\x61\\x34\\x6b\\x39\\xef\\x53\\x91\\x5d\\xe4\\xaf\\x52\\xc4\\x21\\xea\\xf1\\x72\\xe9\\xda\\x76\\xa0\\x8c\\x28\\x3a\\x52\\xdf\\x90\\x7f\\x70\\x5d\\x7e\\x85\\x99\\xc5\\xba\\xae\\x0c\\x2a\\xf3\\x80\\xc1\\xbb\\x46\\xf9\\x34\\x84\\xa0\\x3f\\x28\\x37\\x43\\x24\\xb2\\x78\\x99\\x2b\\x50\\xb7\\xaf\\xa0\\x25\\x52\\xca\\xfa\\x50\\x3f\\x03\\x4f\\x8d\\x86\\x6e\\x9b\\x72\\x02\\x71\\xdd\\x68\\xcc\\xb6\\x85\\xa8\\x5f\\xff\\xd1\"},\n{{0x79,0xc7,0xdc,0xb7,0xd5,0x9a,0x8d,0xf6,0xb2,0xb2,0xba,0x04,0x13,0x05,0x9d,0x89,0x68,0x09,0x95,0xc2,0x0e,0x91,0x6d,0xa0,0x1b,0x8f,0x06,0x7d,0xc6,0x0c,0xde,0xb4,},{0x29,0x87,0x43,0xc7,0x39,0x18,0xbd,0x55,0x6b,0x28,0xf8,0xd4,0x82,0x4a,0x09,0xb8,0x14,0x75,0x2a,0x7a,0xea,0xe7,0xee,0x04,0x87,0x5c,0x53,0xf4,0xd6,0xb1,0x08,0xd9,},{0x7b,0x7c,0xbe,0x44,0xc7,0x71,0xe4,0x37,0x1b,0xae,0x13,0xb0,0x72,0x2b,0xab,0xcc,0x10,0x64,0x15,0x57,0x32,0x96,0x2f,0x40,0x7c,0xba,0x2a,0xcd,0x35,0x38,0x1d,0x42,0x21,0x0b,0xec,0xe8,0x22,0xf4,0x68,0x11,0x21,0xfd,0x4d,0xab,0x74,0x5a,0x1f,0x30,0x77,0x92,0x2f,0xba,0x1a,0x78,0x04,0x5b,0x71,0x29,0x02,0xba,0xcc,0xac,0x66,0x0e,},\"\\x5f\\xe2\\x02\\xf5\\xb3\\x3b\\x77\\x88\\x81\\x0d\\x25\\x08\\xa1\\x3b\\x31\\x14\\xd6\\x9b\\x85\\x96\\xe6\\xea\\xcd\\xa0\\x5a\\x04\\xa2\\xeb\\x59\\x7f\\xa3\\x27\\x9c\\x20\\x8b\\x5a\\x5b\\x65\\xda\\xac\\xb6\\x99\\xf1\\x44\\xe1\\xd6\\x60\\xe7\\x8e\\x13\\x9b\\x57\\x83\\x31\\xab\\xec\\x5c\\x3c\\x35\\x33\\x44\\x54\\xf0\\x3e\\x83\\x2c\\x8d\\x6e\\x29\\x84\\xdf\\x5d\\x45\\x0e\\xcb\\x5d\\x33\\x58\\x2a\\x78\\x80\\x8a\\x9c\\x78\\xf2\\x6e\\xbc\\xd1\\x24\\x4e\\xf5\\x2e\\x3f\\xa6\\xdc\\xa1\\x15\\xc1\\xf0\\xcb\\x56\\xe3\\x8e\\xae\\x0e\\x5b\\x39\\xf5\\xfd\\x86\\x3d\\xff\\xd0\\xb2\\xfb\\x5b\\x95\\x8f\\x2d\\x73\\x9d\\xb3\\x12\\xfc\\x66\\x7a\\x17\\xb0\\x31\\xc4\\xc9\\xf8\\xc5\\xa2\\xad\\x57\\x79\\x84\\xcc\\x41\\x46\\xc4\\x37\\x58\\x0e\\xfd\\x21\\x52\\x17\\x3f\\xe0\\xd5\\x78\\x2c\\xc2\\xae\\x98\\x31\\xa8\\xd9\\xa0\\x41\\x77\\x25\\x60\\x18\\xff\\x76\\x31\\xe0\\xb0\\xd8\\xa9\\x9c\\xb2\\x8f\\x00\\x8b\\x32\\x04\\x21\\xe2\\x7a\\x74\\xc3\\x13\\x59\\x18\\x86\\x63\\x45\\x6d\\x85\\xe0\\x98\\xc1\\xeb\\xd2\\x81\\x70\\x10\\x97\\xb6\\xae\\x5a\\x87\\x1e\\x5c\\xcc\\x02\\x05\\x8a\\x50\\x14\\x16\\xcb\\x91\\xc1\\x2c\\xef\\x5b\\xe6\\xf1\\x91\\x43\\x70\\xe5\\x63\\xf1\\xa1\\xb2\\xaa\\x41\\xf4\\xb8\\xee\\x84\\xcd\\x32\\xa1\\xd5\\x09\\xe5\\x29\\x78\\x7d\\x14\\xa4\\x45\\x43\\x8d\\x80\\x7e\\xcd\\x62\\x0e\\x2f\\xa2\\x6d\\xe0\\xda\\x64\\x26\\x86\\x47\\x84\\xd4\\xa2\\x8f\\x54\\x10\\x3e\\x60\\x92\\x83\\xb9\\x9e\\xe9\\xb2\\xb6\\x99\\xc9\\x80\\xbb\\xb7\\x88\\x2c\\x3e\\xa6\\x8d\\xdc\\x90\\x80\\x2a\\xc2\\x32\\xf2\\xc8\\xe8\\x42\\x91\\x98\\x7b\\xf3\\xc5\\x24\\x09\\x21\\xb5\\x9c\\xfa\\x21\\x49\\x69\\x31\\x76\\x73\\xd0\\xbe\\x7f\\x34\\xb1\\xca\\x0e\\x15\\xea\\x73\\xc7\\x17\\x54\\x01\\xce\\x55\\x0b\\xe1\\x06\\xb4\\x9e\\x62\\xf8\\xdb\\x68\\x69\\x5e\\x74\\x0e\\x0f\\x3a\\x35\\x56\\xa1\\x9f\\x3c\\x8e\\x6b\\x91\\xac\\x1c\\xc2\\x3e\\x86\\x3f\\xcd\\x0f\\x0d\\x9e\\xb7\\x04\\x7a\\xa6\\x31\\xe0\\xd2\\xeb\\x9b\\xcc\\x6b\"},\n{{0xb9,0xce,0xd0,0x41,0x25,0x93,0xfe,0xfe,0xd9,0x5e,0x94,0xac,0x96,0x5e,0x5b,0x23,0xff,0x9d,0x4b,0x0e,0x79,0x7d,0xb0,0x2b,0xf4,0x97,0x99,0x4d,0x3b,0x79,0x3e,0x60,},{0xc1,0x62,0x9a,0x72,0x31,0x89,0x95,0x93,0x37,0xf5,0x53,0x52,0x01,0xe5,0xd3,0x95,0xba,0x0a,0x03,0xea,0x8c,0x17,0x66,0x0d,0x0f,0x8b,0x6f,0x6e,0x64,0x04,0xbb,0x12,},{0xf1,0xb7,0x97,0xde,0xd8,0xa6,0x94,0x2b,0x12,0x62,0x68,0x48,0x34,0x0f,0xb7,0x19,0xfc,0xdd,0xaf,0xd9,0x8f,0x33,0xe2,0x99,0x2d,0x35,0x7b,0xfd,0xd3,0x59,0x33,0xc7,0xac,0x56,0x1e,0x5b,0x2f,0x93,0x94,0x64,0x33,0x8c,0x56,0x66,0x85,0x4c,0xa8,0x85,0xc4,0xd0,0x46,0xeb,0x2c,0x54,0xe4,0x8a,0x1b,0x5e,0xd2,0x66,0xad,0x34,0xde,0x05,},\"\\x55\\x5b\\xb3\\x9c\\x18\\x99\\xd5\\x7c\\xab\\xe4\\x28\\x06\\x4c\\x2d\\x92\\x5f\\x5f\\xc4\\xcf\\x70\\x59\\xb9\\x5f\\xb8\\x9a\\x8e\\x9e\\x3a\\x7e\\x42\\x6c\\x6c\\x92\\x2d\\x9e\\x4d\\x76\\x98\\x4e\\xa2\\x38\\x3c\\xab\\xb4\\xf2\\xbe\\xfd\\x89\\xc1\\xf2\\x0e\\xaa\\x8a\\x00\\xdb\\xe7\\x87\\xcf\\xa7\\x0a\\xe2\\xae\\x6a\\xa9\\x03\\x31\\xcb\\xbe\\x58\\x0f\\xa5\\xa0\\x21\\x84\\xed\\x05\\xe6\\xc8\\xe8\\x9d\\x57\\x6a\\xf2\\x8a\\xee\\xaf\\x7c\\x4e\\x25\\x00\\xf3\\x58\\xa0\\x09\\x71\\xa0\\xa7\\x59\\x20\\xe8\\x54\\x84\\x9b\\xf3\\x32\\x14\\x29\\x75\\x40\\x4f\\x59\\x8c\\x32\\xe9\\x69\\x82\\x04\\x3d\\x99\\x2b\\xcd\\x1a\\x4f\\xe8\\x19\\xbb\\x56\\x34\\xad\\x03\\x46\\x7a\\xfc\\x4c\\xe0\\x50\\x73\\xf8\\x8b\\xa1\\xba\\x4a\\xe8\\x65\\x3a\\x04\\x66\\x5c\\xf3\\xf7\\x16\\x90\\xfe\\x13\\x34\\x38\\x85\\xbc\\x5e\\xbc\\x0e\\x5e\\x62\\xd8\\x82\\xf4\\x3b\\x7c\\x68\\x90\\x0a\\xc9\\x43\\x8b\\xf4\\xa8\\x1c\\xe9\\x01\\x69\\xec\\x12\\x9e\\xe6\\x3e\\x2c\\x67\\x5a\\x1a\\x5a\\x67\\xe2\\x7c\\xc7\\x98\\xc4\\x8c\\xc2\\x3f\\x51\\x07\\x8f\\x46\\x3b\\x3b\\x7c\\xc1\\x4e\\x3b\\xcf\\xd2\\xe9\\xb8\\x2c\\x75\\x24\\x09\\x34\\xcb\\xdc\\x50\\xc4\\x30\\x8f\\x28\\x2f\\x19\\x31\\x22\\x99\\x56\\x06\\xf4\\x01\\x35\\x10\\x0a\\x29\\x1c\\x55\\xaf\\xdf\\x89\\x34\\xeb\\x8b\\x61\\xd8\\x14\\x21\\x67\\x41\\x24\\xde\\xc3\\xb8\\x8f\\x9a\\x73\\x11\\x0a\\x9e\\x61\\x6f\\x5b\\x82\\x6b\\x9d\\x34\\x3f\\x3a\\xc0\\xe9\\xd7\\xbd\\xf4\\xfd\\x8b\\x64\\x8b\\x40\\xf0\\x09\\x8b\\x38\\x97\\xa3\\xa1\\xcd\\x65\\xa6\\x45\\x70\\x05\\x9b\\x8b\\xc5\\xc6\\x74\\x38\\x83\\x07\\x4c\\x88\\x62\\x3c\\x1f\\x5a\\x88\\xc5\\x89\\x69\\xe2\\x1c\\x69\\x2a\\xca\\x23\\x68\\x33\\xd3\\x47\\x0b\\x3e\\xb0\\x98\\x15\\xe1\\x13\\x8e\\x9d\\x06\\x50\\xc3\\x90\\xee\\xe9\\x77\\x42\\x21\\x93\\xb0\\x09\\x18\\xbe\\x8a\\x97\\xcc\\x61\\x99\\xb4\\x51\\xb0\\x5b\\x57\\x30\\xd1\\xd1\\x33\\x58\\xcf\\x74\\x61\\x06\\x78\\xf7\\xac\\x7f\\x78\\x95\\xcc\\x2e\\xfc\\x45\\x6e\\x03\\x87\\x3b\"},\n{{0x81,0xda,0x16,0x8f,0x02,0xd4,0x6b,0xb8,0x7c,0xda,0x84,0x5d,0xa4,0x3f,0x8a,0x6c,0xba,0x2c,0x01,0x68,0x78,0xd6,0xf4,0x9c,0x6f,0x06,0x1a,0x60,0xf1,0x55,0xa0,0x4a,},{0xaf,0xf8,0x6e,0x98,0x09,0x3c,0xa4,0xc7,0x1b,0x1b,0x80,0x4c,0x5f,0xe4,0x51,0xcf,0xdf,0x86,0x82,0x50,0xde,0xa3,0x03,0x45,0xfa,0x4b,0x89,0xbb,0x09,0xb6,0xa5,0x3b,},{0x4a,0xac,0xa9,0x47,0xe3,0xf2,0x2c,0xc8,0xb8,0x58,0x8e,0xe0,0x30,0xac,0xe8,0xf6,0xb5,0xf5,0x71,0x1c,0x29,0x74,0xf2,0x0c,0xc1,0x8c,0x3b,0x65,0x5b,0x07,0xa5,0xbc,0x13,0x66,0xb5,0x9a,0x17,0x08,0x03,0x2d,0x12,0xca,0xe0,0x1a,0xb7,0x94,0xf8,0xcb,0xcc,0x1a,0x33,0x08,0x74,0xa7,0x50,0x35,0xdb,0x1d,0x69,0x42,0x2d,0x2f,0xc0,0x0c,},\"\\x6b\\xc6\\x72\\x6a\\x34\\xa6\\x4a\\xae\\x76\\xab\\x08\\xc9\\x2b\\x17\\x9e\\x54\\xff\\x5d\\x2e\\x65\\xeb\\x2c\\x6c\\x65\\x9a\\xe8\\x70\\x3c\\xc2\\x45\\xcb\\xc2\\xcf\\x45\\xa1\\x2b\\x22\\xc4\\x68\\xae\\x61\\xfd\\x9a\\x66\\x27\\xad\\x06\\x26\\xc9\\xb1\\xe5\\xaf\\x41\\x2c\\xb4\\x83\\xea\\xee\\x1d\\xb1\\x1b\\x29\\xf0\\xa5\\x10\\xc1\\x3e\\x38\\x02\\x0e\\x09\\xae\\x0e\\xee\\x76\\x25\\x37\\xa3\\xe9\\xd1\\xa0\\xc7\\xb0\\x33\\xd0\\x97\\xfd\\xc1\\xf4\\xf8\\x26\\x29\\xa9\\xde\\x9e\\xf3\\x8d\\xa1\\xcf\\x96\\xa9\\x40\\x35\\x7d\\x5f\\x2e\\x0e\\x7e\\x8d\\xbc\\x29\\xdb\\x72\\x8a\\x1e\\x6a\\xad\\x87\\x6e\\x5e\\x05\\x31\\x13\\xd0\\x64\\x20\\x27\\x2b\\x87\\xcf\\x0c\\x40\\xdf\\xe0\\x3a\\x54\\x4d\\xe9\\x6c\\x7a\\xea\\x13\\xba\\x00\\x29\\xb5\\x7b\\x48\\xd9\\x9d\\xcc\\x6a\\x65\\x04\\x92\\xd7\\x8c\\x4c\\xdd\\x1b\\x28\\xe1\\xa1\\x15\\xa7\\xe3\\xe7\\xa7\\xcb\\x21\\x33\\x3d\\x4f\\xf8\\x08\\x58\\xdf\\xb6\\x77\\x82\\xc1\\x63\\x54\\xb8\\x71\\x65\\x96\\x56\\x0d\\x7d\\x8e\\x38\\x9e\\xb1\\x5a\\x05\\x2a\\x0b\\xf5\\xd1\\x6e\\xb5\\x4f\\xb3\\xe4\\x97\\x3a\\xd4\\x98\\x4e\\x72\\xa1\\x87\\xf5\\x34\\x7d\\x5b\\x26\\x2c\\x32\\xb1\\x64\\x7e\\x42\\xb6\\xa5\\x38\\x37\\x09\\x6c\\xc7\\x8c\\x2a\\x05\\xce\\x1c\\x6e\\x12\\x49\\x3a\\x03\\xf1\\xa6\\x67\\x58\\x4c\\xb9\\x7f\\x4f\\xcd\\x57\\xee\\x94\\x4c\\x65\\xb7\\xee\\xd2\\x5f\\x7a\\xe0\\xf3\\xf6\\xce\\xde\\x17\\x3f\\xdf\\xac\\xf5\\xaf\\x1d\\xb1\\x43\\x73\\x0d\\x18\\x09\\x66\\x64\\x91\\x4b\\xa4\\xcf\\xc6\\x96\\x6f\\x39\\x20\\x22\\x78\\x1c\\x66\\xa9\\x41\\x7c\\xa2\\x68\\x0b\\x51\\xf6\\x3e\\x4f\\xba\\x42\\x4e\\xcf\\xdb\\xc6\\xa2\\xf0\\x17\\x87\\xd0\\xe7\\x48\\x4f\\x8a\\x8a\\xb3\\x90\\xae\\xaa\\x6d\\x1f\\x7e\\xd3\\x25\\xd8\\x2f\\xea\\xa1\\x69\\x2a\\x49\\x84\\xfa\\xe4\\x3d\\xa8\\x73\\x29\\xb0\\x45\\xda\\x8f\\x0a\\x4f\\x56\\xb6\\x95\\xaa\\x93\\x5d\\xe1\\x52\\xce\\x03\\x85\\x15\\x37\\x20\\x97\\x9a\\x2b\\x70\\x06\\xd4\\x05\\xfc\\xb0\\xfb\\xa0\\x9e\\x23\\xb8\\x5f\\xd1\\x9b\"},\n{{0xaf,0x2e,0x60,0xda,0x0f,0x29,0xbb,0x16,0x14,0xfc,0x3f,0x19,0x3c,0xc3,0x53,0x33,0x19,0x86,0xb7,0x3f,0x3f,0x9a,0x0a,0xec,0x94,0x21,0xb9,0x47,0x3d,0x6a,0x4b,0x6a,},{0xc8,0xbf,0xe2,0x83,0x58,0x22,0x19,0x9c,0x61,0x27,0xb8,0x06,0xfa,0xbe,0xef,0x0c,0xb9,0xff,0x59,0xf3,0xc8,0x1f,0xf0,0xcb,0x89,0xc5,0x56,0xf5,0x51,0x06,0xaf,0x6a,},{0x50,0xf9,0xf9,0x41,0xa8,0xda,0x9f,0x62,0x40,0xf7,0x6d,0x2f,0xa3,0xb0,0x6d,0xd6,0xb2,0x29,0x2e,0xd3,0x2d,0x1c,0x05,0x21,0x80,0x97,0xd3,0x4d,0x8a,0x19,0xdf,0xe5,0x53,0xf7,0x6a,0xe3,0xc6,0xb4,0xa2,0xed,0x20,0x85,0x21,0x28,0x46,0x15,0x40,0xde,0xcf,0x41,0x8f,0x52,0xd3,0x8e,0x64,0x03,0x7e,0xec,0x77,0x71,0xbd,0x1a,0xfe,0x00,},\"\\x7d\\xbb\\x77\\xb8\\x8b\\xda\\x94\\xf3\\x44\\x41\\x6a\\x06\\xb0\\x96\\x56\\x6c\\x6e\\x8b\\x39\\x39\\x31\\xa8\\x24\\x3a\\x6c\\xab\\x75\\xc3\\x61\\xfd\\xe7\\xdc\\x53\\x6a\\xec\\x40\\xcd\\xed\\x83\\x29\\x6a\\x89\\xe8\\xc3\\xbe\\xf7\\xd7\\x87\\xcf\\xc4\\x94\\x01\\xa7\\xb9\\x18\\x3f\\x13\\x8d\\x50\\x00\\x61\\x9f\\xf0\\x73\\xc0\\x5e\\x2f\\x84\\x1d\\x60\\x08\\x35\\x8f\\x10\\xa2\\xda\\x7d\\xcf\\xac\\x3d\\x4d\\x70\\xc2\\x0d\\x2e\\xc3\\x4c\\x7b\\x6d\\x5c\\xd1\\xa7\\x34\\xd6\\xbb\\xb1\\x1c\\x5f\\xd8\\xd2\\xbc\\xe3\\x2a\\xc8\\x10\\xef\\x82\\xb4\\x18\\x8a\\xa8\\xea\\x3c\\xfc\\x30\\x32\\x23\\x3d\\xc0\\xe2\\x60\\x0e\\x9d\\xb6\\xe1\\x8b\\xc2\\x2b\\x10\\x04\\x4a\\x31\\xc1\\x5b\\xac\\xea\\xf5\\x55\\x4d\\xe8\\x9d\\x2a\\x34\\x66\\x80\\x7f\\x24\\x44\\x14\\xd0\\x80\\xff\\x29\\x63\\x95\\x6c\\x6e\\x83\\xc8\\xe1\\x44\\xed\\x00\\x66\\x08\\x8b\\x47\\x6d\\xdc\\xb5\\x64\\x40\\x34\\x47\\xd9\\x15\\x9f\\x90\\x89\\xab\\xa2\\xb4\\xd5\\x57\\x5c\\x4d\\x8a\\xe6\\x6f\\xc8\\x69\\x0e\\x73\\x49\\xed\\x40\\x83\\x2e\\x63\\x69\\xc0\\x24\\x56\\x3e\\xc4\\x93\\xbf\\xcc\\x0f\\xc9\\xac\\x78\\x7a\\xc8\\x41\\x39\\x7f\\xe1\\x33\\x16\\x72\\x83\\xd8\\x0c\\x42\\xf0\\x06\\xa9\\x9d\\x39\\xe8\\x29\\x79\\xda\\x3f\\xa9\\x33\\x4b\\xd9\\xed\\xe0\\xd1\\x4b\\x41\\xb7\\x46\\x6b\\xce\\xbb\\xe8\\x17\\x1b\\xc8\\x04\\xa6\\x45\\xd3\\x72\\x32\\x74\\xa1\\xb9\\x2b\\xf8\\x2f\\xd9\\x93\\x35\\x87\\x44\\xde\\x92\\x44\\x19\\x03\\xd4\\x36\\xfd\\x47\\xf2\\x3d\\x40\\x05\\x2a\\x38\\x29\\x36\\x7f\\x20\\x2f\\x05\\x53\\xb5\\xe4\\x9b\\x76\\xc5\\xe0\\x3f\\xa6\\xce\\x7c\\x3c\\xf5\\xee\\xb2\\x1d\\xe9\\x67\\xbe\\xc4\\xdd\\x35\\x59\\x25\\x38\\x4e\\xbf\\x96\\x69\\x7e\\x82\\x37\\x62\\xba\\xc4\\xd4\\x3a\\x76\\x7c\\x24\\x1a\\x4c\\xef\\x72\\x4a\\x97\\x0d\\x00\\xff\\x3a\\x8a\\xb3\\xb8\\x3e\\xed\\x84\\x00\\x75\\xc7\\x4e\\x90\\xf3\\x06\\xe3\\x30\\x01\\x32\\x60\\x96\\x21\\x61\\xe9\\xd0\\x91\\x0d\\xe1\\x83\\x62\\x2c\\xe9\\xa6\\xb8\\xd5\\x14\\x42\\x80\\x55\\x0f\\xc7\"},\n{{0x60,0x5f,0x90,0xb5,0x3d,0x8e,0x4a,0x3b,0x48,0xb9,0x7d,0x74,0x54,0x39,0xf2,0xa0,0x80,0x7d,0x83,0xb8,0x50,0x2e,0x8e,0x29,0x79,0xf0,0x3e,0x8d,0x37,0x6a,0xc9,0xfe,},{0xaa,0x3f,0xae,0x4c,0xfa,0x6f,0x6b,0xfd,0x14,0xba,0x0a,0xfa,0x36,0xdc,0xb1,0xa2,0x65,0x6f,0x36,0x54,0x1a,0xd6,0xb3,0xe6,0x7f,0x17,0x94,0xb0,0x63,0x60,0xa6,0x2f,},{0xdd,0x02,0x12,0xe6,0x32,0x88,0xcb,0xe1,0x4a,0x45,0x69,0xb4,0xd8,0x91,0xda,0x3c,0x7f,0x92,0x72,0x7c,0x5e,0x7f,0x9a,0x80,0x1c,0xf9,0xd6,0x82,0x70,0x85,0xe7,0x09,0x5b,0x66,0x9d,0x7d,0x45,0xf8,0x82,0xca,0x5f,0x07,0x45,0xdc,0xcd,0x24,0xd8,0x7a,0x57,0x18,0x13,0x20,0x19,0x1e,0x5b,0x7a,0x47,0xc3,0xf7,0xf2,0xdc,0xcb,0xd7,0x07,},\"\\x3b\\xcd\\xca\\xc2\\x92\\xac\\x95\\x19\\x02\\x4a\\xae\\xce\\xe2\\xb3\\xe9\\x99\\xff\\x5d\\x34\\x45\\xe9\\xf1\\xeb\\x60\\x94\\x0f\\x06\\xb9\\x12\\x75\\xb6\\xc5\\xdb\\x27\\x22\\xed\\x4d\\x82\\xfe\\x89\\x60\\x52\\x26\\x53\\x0f\\x3e\\x6b\\x07\\x37\\xb3\\x08\\xcd\\xe8\\x95\\x61\\x84\\x94\\x4f\\x38\\x8a\\x80\\x04\\x2f\\x6c\\xba\\x27\\x4c\\x0f\\x7d\\x11\\x92\\xa0\\xa9\\x6b\\x0d\\xa6\\xe2\\xd6\\xa6\\x1b\\x76\\x51\\x8f\\xbe\\xe5\\x55\\x77\\x3a\\x41\\x45\\x90\\xa9\\x28\\xb4\\xcd\\x54\\x5f\\xcc\\xf5\\x81\\x72\\xf3\\x58\\x57\\x12\\x0e\\xb9\\x6e\\x75\\xc5\\xc8\\xac\\x9a\\xe3\\xad\\xd3\\x67\\xd5\\x1d\\x34\\xac\\x40\\x34\\x46\\x36\\x0e\\xc1\\x0f\\x55\\x3e\\xa9\\xf1\\x4f\\xb2\\xb8\\xb7\\x8c\\xba\\x18\\xc3\\xe5\\x06\\xb2\\xf0\\x40\\x97\\x06\\x3a\\x43\\xb2\\xd3\\x64\\x31\\xcc\\xe0\\x2c\\xaf\\x11\\xc5\\xa4\\xdb\\x8c\\x82\\x17\\x52\\xe5\\x29\\x85\\xd5\\xaf\\x1b\\xfb\\xf4\\xc6\\x15\\x72\\xe3\\xfa\\xda\\xe3\\xad\\x42\\x4a\\xcd\\x81\\x66\\x2e\\xa5\\x83\\x7a\\x11\\x43\\xb9\\x66\\x93\\x91\\xd7\\xb9\\xcf\\xe2\\x30\\xcf\\xfb\\x3a\\x7b\\xb0\\x3f\\x65\\x91\\xc2\\x5a\\x4f\\x01\\xc0\\xd2\\xd4\\xac\\xa3\\xe7\\x4d\\xb1\\x99\\x7d\\x37\\x39\\xc8\\x51\\xf0\\x32\\x7d\\xb9\\x19\\xff\\x6e\\x77\\xf6\\xc8\\xa2\\x0f\\xdd\\x3e\\x15\\x94\\xe9\\x2d\\x01\\x90\\x1a\\xb9\\xae\\xf1\\x94\\xfc\\x89\\x3e\\x70\\xd7\\x8c\\x8a\\xe0\\xf4\\x80\\x00\\x1a\\x51\\x5d\\x4f\\x99\\x23\\xae\\x62\\x78\\xe8\\x92\\x72\\x37\\xd0\\x5d\\xb2\\x3e\\x98\\x4c\\x92\\xa6\\x83\\x88\\x2f\\x57\\xb1\\xf1\\x88\\x2a\\x74\\xa1\\x93\\xab\\x69\\x12\\xff\\x24\\x1b\\x9f\\xfa\\x66\\x2a\\x0d\\x47\\xf2\\x92\\x05\\xf0\\x84\\xdb\\xde\\x84\\x5b\\xaa\\xeb\\x5d\\xd3\\x6a\\xe6\\x43\\x9a\\x43\\x76\\x42\\xfa\\x76\\x3b\\x57\\xe8\\xdb\\xe8\\x4e\\x55\\x81\\x3f\\x01\\x51\\xe9\\x7e\\x5b\\x9d\\xe7\\x68\\xb2\\x34\\xb8\\xdb\\x15\\xc4\\x96\\xd4\\xbf\\xcf\\xa1\\x38\\x87\\x88\\x97\\x2b\\xb5\\x0c\\xe0\\x30\\xbc\\x6e\\x0c\\xcf\\x4f\\xa7\\xd0\\x0d\\x34\\x37\\x82\\xf6\\xba\\x8d\\xe0\"},\n{{0x9e,0x2c,0x3d,0x18,0x98,0x38,0xf4,0xdd,0x52,0xef,0x08,0x32,0x88,0x68,0x74,0xc5,0xca,0x49,0x39,0x83,0xdd,0xad,0xc0,0x7c,0xbc,0x57,0x0a,0xf2,0xee,0x9d,0x62,0x09,},{0xf6,0x8d,0x3b,0x81,0xe7,0x35,0x57,0xee,0x1f,0x08,0xbd,0x2d,0x3f,0x46,0xa4,0x71,0x82,0x56,0xa0,0xf3,0xcd,0x8d,0x2e,0x03,0xeb,0x8f,0xe8,0x82,0xaa,0xb6,0x5c,0x69,},{0x38,0xa3,0x1b,0x6b,0x46,0x50,0x84,0x73,0x82,0x62,0xa2,0x6c,0x06,0x5f,0xe5,0xd9,0xe2,0x88,0x6b,0xf9,0xdd,0x35,0xcd,0xe0,0x5d,0xf9,0xba,0xd0,0xcc,0x7d,0xb4,0x01,0xc7,0x50,0xaa,0x19,0xe6,0x60,0x90,0xbc,0xe2,0x5a,0x3c,0x72,0x12,0x01,0xe6,0x05,0x02,0xc8,0xc1,0x04,0x54,0x34,0x66,0x48,0xaf,0x06,0x5e,0xab,0x0e,0xe7,0xd8,0x0f,},\"\\x19\\x48\\x5f\\x52\\x38\\xba\\x82\\xea\\xdf\\x5e\\xff\\x14\\xca\\x75\\xcd\\x42\\xe5\\xd5\\x6f\\xea\\x69\\xd5\\x71\\x8c\\xfb\\x5b\\x1d\\x40\\xd7\\x60\\x89\\x9b\\x45\\x0e\\x66\\x88\\x45\\x58\\xf3\\xf2\\x5b\\x7c\\x3d\\xe9\\xaf\\xc4\\x73\\x8d\\x7a\\xc0\\x9d\\xa5\\xdd\\x46\\x89\\xbb\\xfa\\xc0\\x78\\x36\\xf5\\xe0\\xbe\\x43\\x2b\\x1d\\xdc\\xf1\\xb1\\xa0\\x75\\xbc\\x98\\x15\\xd0\\xde\\xbc\\x86\\x5d\\x90\\xbd\\x5a\\x0c\\x5f\\x56\\x04\\xd9\\xb4\\x6a\\xce\\x81\\x6c\\x57\\x69\\x4e\\xcc\\x3d\\x40\\xd8\\xf8\\x4d\\xf0\\xed\\xe2\\xbc\\x4d\\x57\\x77\\x75\\xa0\\x27\\xf7\\x25\\xde\\x08\\x16\\xf5\\x63\\xfa\\x88\\xf8\\x8e\\x07\\x77\\x20\\xeb\\xb6\\xac\\x02\\x57\\x46\\x04\\x81\\x98\\x24\\xdb\\x74\\x74\\xd4\\xd0\\xb2\\x2c\\xd1\\xbc\\x05\\x76\\x8e\\x0f\\xb8\\x67\\xca\\x1c\\x1a\\x7b\\x90\\xb3\\x4a\\xb7\\xa4\\x1a\\xfc\\x66\\x95\\x72\\x66\\xac\\x0c\\x91\\x59\\x34\\xaa\\xf3\\x1c\\x0c\\xf6\\x92\\x7a\\x4f\\x03\\xf2\\x32\\x85\\xe6\\xf2\\x4a\\xfd\\x58\\x13\\x84\\x9b\\xb0\\x8c\\x20\\x3a\\xc2\\xd0\\x33\\x6d\\xcb\\xf8\\x0d\\x77\\xf6\\xcf\\x71\\x20\\xed\\xfb\\xcd\\xf1\\x81\\xdb\\x10\\x7e\\xc8\\xe0\\x0f\\x32\\x44\\x9c\\x1d\\x3f\\x5c\\x04\\x9a\\x92\\x69\\x4b\\x4e\\xa2\\xc6\\xeb\\xe5\\xe2\\xb0\\xf6\\x4b\\x5a\\xe5\\x0a\\xd3\\x37\\x4d\\x24\\x6b\\x32\\x70\\x05\\x7e\\x72\\x4a\\x27\\xcf\\x26\\x3b\\x63\\x3a\\xb6\\x5e\\xcb\\x7f\\x5c\\x26\\x6b\\x80\\x07\\x61\\x8b\\x10\\xac\\x9a\\xc8\\x3d\\xb0\\xfe\\xbc\\x04\\xfd\\x86\\x3d\\x96\\x61\\xab\\x6e\\x58\\x49\\x47\\x66\\xf7\\x1b\\x9a\\x86\\x7c\\x5a\\x7a\\x45\\x55\\xf6\\x67\\xc1\\xaf\\x2e\\x54\\x58\\x8f\\x16\\x2a\\x41\\xce\\x75\\x64\\x07\\xcc\\x41\\x61\\xd6\\x07\\xb6\\xe0\\x68\\x29\\x80\\x93\\x4c\\xaa\\x1b\\xef\\x03\\x6f\\x73\\x30\\xd9\\xee\\xf0\\x1e\\xcc\\x55\\x35\\x83\\xfe\\xe5\\x99\\x4e\\x53\\x3a\\x46\\xca\\x91\\x6f\\x60\\xf8\\xb9\\x61\\xae\\x01\\xd2\\x0f\\x7a\\xbf\\x0d\\xf6\\x14\\x1b\\x60\\x4d\\xe7\\x33\\xc6\\x36\\xb4\\x20\\x18\\xcd\\x5f\\x1d\\x1e\\xf4\\xf8\\x4c\\xee\\x40\\xfc\"},\n{{0x31,0x01,0x0d,0x1d,0x67,0xeb,0x61,0x63,0x48,0xe8,0x47,0x92,0xb9,0x2d,0x5d,0xc1,0x28,0x55,0x3c,0xb5,0x2f,0x63,0x68,0x15,0x9f,0xe7,0xb8,0x16,0xcd,0x0e,0x7c,0x37,},{0x26,0x65,0x43,0xd9,0x67,0x87,0xca,0x90,0x1f,0xcf,0xf0,0x6e,0x6e,0x43,0x44,0x91,0xae,0x09,0x70,0x88,0x0a,0x5a,0x18,0x7d,0x53,0x5e,0xdb,0x19,0xdb,0x5c,0xab,0xeb,},{0x7b,0x1e,0xb6,0x77,0xc3,0xe5,0xe6,0xa8,0xb4,0xba,0x69,0xfc,0xb7,0xf6,0xb1,0x87,0x0e,0x42,0xa8,0xd5,0x89,0x58,0xa3,0x5c,0x67,0x4e,0x2d,0xb8,0x21,0x07,0x48,0x1c,0x4c,0x7b,0x37,0xf0,0xf6,0x89,0xd3,0x9d,0x9f,0x51,0xe1,0x81,0xb1,0x7b,0x11,0x08,0xc1,0x5a,0x3e,0x27,0xb2,0x9d,0xf3,0xa4,0x31,0x5d,0xcc,0x4f,0xaf,0x12,0x22,0x05,},\"\\x39\\xf8\\x9a\\x5e\\x7a\\xa5\\x30\\xb5\\x46\\x3d\\x49\\x8f\\x80\\x35\\xb9\\x90\\x9d\\x55\\xda\\x52\\x7c\\xdb\\xd4\\xde\\x6d\\x22\\x83\\x79\\xf0\\x89\\xe6\\x08\\xa9\\x20\\x7a\\x2c\\x5b\\x9c\\x42\\x05\\x1a\\x60\\xc8\\xca\\x3f\\xb9\\x7a\\x1c\\x06\\xcd\\x74\\x7d\\x9d\\x07\\x39\\x97\\x0c\\xeb\\x88\\xce\\x52\\x6f\\x97\\x11\\x40\\xea\\x2e\\xc2\\x1f\\x09\\x0b\\xa0\\x75\\xbf\\x89\\x75\\xfa\\xa5\\x08\\xb1\\xcc\\x10\\xef\\xa4\\x94\\xdc\\x17\\x2e\\x6d\\x3d\\x3f\\x3f\\x75\\xdc\\x8e\\x0e\\x96\\xf0\\x5c\\x0c\\xcc\\xb2\\xf9\\x6e\\x91\\x1c\\xfa\\x7a\\x2c\\x82\\xc9\\x84\\x50\\x18\\xbb\\x1f\\x9d\\x75\\xf8\\x2e\\x3d\\xfe\\x11\\x39\\x34\\x7b\\x2a\\xc0\\x58\\xb0\\x14\\xac\\x93\\x76\\x0c\\x90\\xf5\\x56\\x7a\\xb5\\xc4\\xeb\\xa0\\x4b\\x49\\xfb\\x09\\xdd\\xad\\xd3\\x05\\xbe\\x51\\x1d\\xfe\\x05\\xc9\\x6e\\xbc\\x86\\xfd\\x67\\xb5\\xd0\\xab\\x57\\xd8\\x5f\\x4f\\xe5\\xe2\\xf0\\xfa\\x9d\\x88\\xa6\\x8f\\x0f\\x6b\\x6b\\xc8\\xbb\\x94\\x4e\\xb3\\xc0\\xb1\\x75\\x57\\xe5\\x5d\\x5e\\xa1\\x87\\xd9\\x22\\xa4\\x28\\x13\\xe6\\x90\\x57\\xc9\\xb6\\xa7\\xf7\\x5e\\x49\\x92\\x1b\\x70\\x79\\xe5\\x8f\\x8a\\x63\\x71\\x9e\\xe3\\xe1\\xad\\x10\\xcf\\x0e\\x8a\\x70\\xc4\\xf1\\x54\\x02\\x18\\xb7\\x04\\x94\\xbd\\x02\\x9e\\xe0\\x2f\\xf9\\x72\\x7a\\x7d\\x85\\xd3\\x77\\x91\\x9e\\xc4\\x05\\x14\\x79\\xb7\\x0f\\x7c\\xd6\\x76\\x77\\x23\\xfe\\x42\\xc1\\xc7\\x89\\x9c\\x2b\\x7c\\x1f\\x70\\x2d\\xd6\\xb4\\xd1\\x3b\\x67\\x2d\\x48\\x8f\\x34\\xa0\\xe9\\x69\\xdb\\x79\\xcc\\x2c\\xb2\\x52\\x4a\\x94\\x8a\\x8d\\xe4\\xc5\\xb6\\x23\\xec\\xd9\\x0d\\x6e\\x82\\xd9\\x70\\x33\\xc1\\x25\\x63\\x7d\\x1c\\xd8\\xc8\\x48\\x03\\xd8\\xfb\\xc0\\x12\\x84\\x6f\\xfe\\x48\\x4f\\x6c\\x02\\x14\\x92\\x58\\xf9\\x46\\x2f\\xa1\\xe9\\x9c\\x30\\x7d\\xd0\\x06\\x2f\\xe0\\xb6\\xf1\\x1e\\xee\\x40\\xc2\\x62\\x9e\\xf7\\xc0\\xf6\\xa5\\x10\\x72\\x59\\xea\\x5b\\x9f\\xfb\\x6f\\x29\\xf1\\x2c\\x32\\xf7\\xb5\\x22\\x8c\\xab\\xc9\\x86\\xab\\x66\\x45\\x0a\\xf9\\xdc\\xc3\\xda\\x09\\xd0\\xe0\\xb9\\xa4\"},\n{{0x8f,0xf2,0x39,0x8c,0xd5,0x1f,0x51,0xd4,0xc2,0xc5,0x78,0x69,0xa2,0x21,0x8b,0x84,0x86,0x82,0x20,0x31,0xf4,0x00,0x72,0x9f,0x4a,0xc4,0xd5,0x90,0x9c,0x48,0xba,0xfe,},{0xa5,0xa8,0x87,0x04,0xb6,0x86,0x77,0xbe,0x3d,0x16,0xc3,0xdc,0x00,0x52,0xcf,0xee,0x6e,0x2b,0x30,0xe0,0x86,0x09,0x05,0x9d,0x4c,0xba,0x52,0xc6,0xd9,0x60,0x61,0xfb,},{0x41,0x7a,0x64,0x78,0x29,0xc9,0x28,0x98,0xe5,0x20,0xff,0x53,0x11,0xda,0xa0,0xa1,0x39,0xcd,0x8f,0xff,0xcb,0x25,0xa1,0x8e,0x6d,0x9b,0x50,0xcb,0x52,0xcb,0xc3,0x54,0x24,0xc3,0x9e,0xbb,0xb5,0xd5,0xac,0x6a,0x6d,0x63,0xf1,0xf5,0x3c,0x4d,0xf2,0x12,0xf7,0x02,0x5a,0x8a,0xae,0xf8,0xe3,0x64,0x93,0xc8,0x74,0xc3,0xce,0x34,0x1a,0x0e,},\"\\x99\\x39\\x53\\xe4\\x7a\\x34\\x11\\x88\\xbc\\x59\\x29\\x42\\xe1\\x55\\x7a\\xf2\\x95\\x46\\xe4\\xe9\\x36\\x8e\\x2f\\x1a\\x5e\\xe9\\x80\\x6e\\x2b\\xaf\\x66\\xb6\\x19\\x01\\x91\\xfc\\x5d\\x2b\\x7e\\x47\\xde\\x37\\xff\\x05\\x4f\\xb2\\xbb\\xb1\\xf0\\x31\\x68\\x4a\\xda\\x5d\\x60\\x7a\\xdd\\xa3\\xd6\\x54\\x33\\x12\\x2f\\xa9\\x04\\xe0\\x45\\x6f\\xaa\\x84\\x10\\x9b\\xbc\\x51\\x7f\\x8a\\xd3\\x96\\x60\\x87\\x63\\x82\\xad\\xcf\\xed\\x0f\\x76\\x20\\xcf\\x11\\x64\\x62\\x2e\\xac\\xd9\\x1e\\xb3\\x7a\\x85\\x96\\x46\\x2e\\xbe\\x9e\\xbe\\x26\\xbd\\xc1\\xe3\\x2c\\xc3\\x4a\\xd4\\x6f\\xb1\\xce\\xa4\\x20\\xe7\\x3c\\x31\\x21\\x54\\x08\\xe6\\xd3\\x54\\x25\\xf4\\x4a\\x82\\x9b\\x13\\x2f\\x63\\x1a\\x3f\\x6d\\xd4\\xb8\\x73\\xa0\\x00\\x66\\x7e\\x19\\xeb\\x22\\xff\\xfd\\x59\\x03\\xaa\\xa7\\xd4\\xc8\\xfd\\xf2\\x19\\x53\\xc3\\xc6\\x17\\x8f\\x5f\\x8c\\xb2\\xaa\\x6b\\xff\\x92\\x89\\x4e\\xad\\x83\\x58\\x88\\xdf\\x06\\x0a\\x3c\\x90\\x43\\x02\\x6e\\x0e\\x2c\\xef\\x27\\x54\\x97\\xe7\\xd1\\x05\\xdf\\x3b\\x64\\x4a\\x98\\xf2\\x6b\\xf0\\x01\\x05\\xc9\\x94\\x13\\xee\\x0a\\xf8\\x85\\x19\\x54\\xd6\\x5c\\xeb\\x8d\\x79\\xad\\x30\\x71\\xb8\\xbb\\x87\\xf0\\xb1\\x97\\x43\\xd2\\x55\\x6f\\xfd\\x98\\x19\\x83\\x0b\\x6e\\xeb\\xf7\\xec\\xc7\\xe0\\x45\\x66\\x1f\\x43\\x57\\x0c\\xe9\\xfd\\xbb\\xe2\\xd2\\x52\\x40\\x6f\\xa9\\x0d\\x04\\x23\\x6f\\x22\\x2c\\x42\\x9e\\xc1\\x6b\\x12\\x87\\x22\\x4a\\xda\\x1a\\x53\\x21\\x61\\xae\\x8b\\x48\\x1b\\xca\\xb8\\xd4\\x7a\\xfb\\x3e\\xd0\\x44\\x5b\\x30\\x60\\xfd\\x67\\x59\\x17\\x98\\x56\\xf4\\x08\\x5c\\x1e\\x58\\x5f\\xd7\\xc1\\x40\\x97\\x99\\xaf\\x69\\x3c\\xf4\\x27\\xbd\\x1d\\x3d\\xc1\\x0b\\x5a\\xe3\\x44\\x7a\\x8d\\x2a\\x18\\xdc\\x3a\\x12\\xa6\\x86\\x0b\\x22\\x17\\x5d\\xd5\\xeb\\x53\\xa0\\x95\\x04\\x32\\xe2\\xd7\\xae\\xfe\\xce\\x8a\\xf0\\xad\\xe3\\xd8\\x56\\x77\\x43\\xde\\x43\\x69\\x0f\\x2d\\x25\\x37\\x23\\xc5\\xd7\\xe4\\x8b\\xd3\\x0d\\x29\\x37\\x59\\x37\\x01\\xce\\xcd\\xe9\\x15\\x4b\\x76\\x65\\xcb\\x61\\x1d\\x7d\"},\n{{0xef,0x81,0x6c,0x8f,0x5e,0xc3,0x4e,0xf4,0x1f,0x68,0x83,0x1d,0x90,0xcd,0x29,0xe5,0x2d,0xe8,0x97,0x37,0x82,0xd0,0x03,0xee,0x4e,0xda,0xda,0x2a,0xda,0x26,0x91,0xd6,},{0x47,0xf9,0xb3,0x63,0xa8,0x8a,0x45,0x05,0x3a,0x05,0xbb,0x72,0x16,0x08,0x52,0xbf,0xe8,0xf7,0xdf,0xef,0xc2,0xf3,0x72,0x83,0xde,0x34,0x67,0x52,0xca,0xf0,0x92,0xcc,},{0x65,0xc5,0xd1,0x0e,0xa7,0xbf,0xdb,0xb3,0x8d,0x55,0x36,0x4a,0x99,0x68,0xf8,0x2b,0x54,0x82,0x24,0xdf,0xf3,0x36,0x3b,0x2d,0xdc,0xf5,0x85,0x16,0x3d,0xea,0x27,0xdc,0x63,0xb0,0x56,0x3e,0xb1,0xa8,0xdf,0xbe,0xe9,0x51,0xd3,0xc9,0xb3,0x3f,0xcd,0x6b,0xbf,0x09,0x21,0xc3,0xab,0xb2,0x17,0x86,0xb2,0x29,0x06,0x9b,0xd9,0xca,0x00,0x0a,},\"\\x95\\x93\\xc3\\x5c\\xde\\xc5\\x35\\xbe\\xbb\\x69\\x65\\xda\\x68\\xea\\xb0\\xb6\\x46\\xbf\\xfc\\xfb\\xd0\\x48\\x83\\xbc\\x4c\\xef\\x90\\xd5\\xd0\\x1f\\x01\\x8c\\x63\\xc9\\xb0\\xdd\\xfb\\x3c\\xef\\x5e\\x78\\x62\\x84\\xd5\\x21\\x8c\\xaa\\xaf\\x06\\x0e\\x92\\x88\\x95\\x2f\\x16\\x30\\x1e\\xd8\\xa4\\xc1\\xbc\\xee\\x25\\x63\\x56\\xa0\\xc8\\xbd\\xa3\\x59\\xfb\\xaa\\x27\\x82\\xb1\\x0c\\x86\\xd1\\x8e\\x20\\xf7\\xa0\\xec\\x99\\xb2\\x7a\\x0b\\x4d\\xbe\\xfc\\x0a\\x26\\x2a\\x3b\\xf6\\x8f\\xe8\\x14\\x44\\xdc\\xae\\x5f\\x69\\x3e\\xb0\\xf1\\x6e\\x6e\\xe0\\x3f\\x8f\\xcb\\xf3\\xa3\\x39\\x81\\x46\\xd2\\x0e\\xc4\\xd2\\x65\\x77\\x61\\xfd\\x03\\x20\\xfe\\xe7\\xea\\x70\\x3c\\x49\\xa6\\xa5\\x43\\xbc\\x9b\\xba\\x91\\x1e\\x79\\x25\\x03\\x87\\x10\\xe8\\xc3\\x65\\x52\\xd4\\x76\\xd6\\x02\\x7f\\x58\\xb2\\xc5\\x2b\\xa5\\x1a\\xd6\\x5e\\xa4\\xf0\\x39\\xc7\\x8f\\x96\\xb8\\x89\\x10\\x2b\\xb4\\xbd\\xd6\\x9b\\x68\\xe9\\xc3\\xd4\\x5b\\x51\\x76\\xa2\\xd8\\x2b\\x0b\\x95\\xdc\\x32\\x10\\x16\\x37\\x0d\\xae\\x30\\xc3\\x93\\x65\\x15\\xdb\\x04\\x64\\xc4\\x17\\x74\\x30\\x1c\\x74\\xe4\\x2d\\x89\\xb8\\xbf\\x4b\\x9c\\x19\\xed\\x55\\x4b\\x12\\xfe\\xba\\xc0\\xf6\\x0d\\xdb\\x32\\x19\\xcc\\xc5\\x60\\x35\\x31\\xdb\\xf2\\xeb\\x5f\\x29\\x34\\x25\\xd7\\x2c\\xce\\xfa\\x0c\\x7f\\x14\\x4a\\xba\\x89\\x34\\x7b\\x29\\x6b\\xe8\\x7f\\xf1\\x89\\x94\\xb4\\xa0\\xc7\\x0c\\x93\\x0f\\x05\\x93\\x03\\xb5\\xdd\\x4c\\x8f\\xe1\\xe6\\xbb\\xc3\\xcd\\x68\\xc6\\xc0\\xd8\\x42\\x46\\xdc\\x6e\\x61\\x40\\xa2\\xab\\xd1\\x78\\x0b\\x13\\xf1\\x59\\x4a\\x60\\x19\\xd1\\x77\\x8b\\x7c\\xbb\\x3a\\x3e\\x3a\\x34\\xbf\\xae\\x72\\x97\\xf0\\xb3\\xed\\xc3\\x76\\x94\\x1c\\x32\\x35\\x2a\\x4b\\xe3\\x14\\xb8\\x4a\\x9d\\x8d\\x6d\\x7f\\x1f\\x38\\xa0\\xad\\x37\\x98\\x02\\x0a\\xa2\\xa3\\x31\\xa4\\x02\\xbe\\x9c\\x70\\x44\\x84\\x74\\x4a\\x73\\x0c\\xbd\\xed\\xcb\\x90\\x4b\\x6f\\xde\\x70\\x8f\\xbd\\x14\\xbf\\xdc\\x29\\xef\\xd4\\x61\\xd1\\xd0\\xb5\\x82\\x5d\\xe0\\xbc\\x79\\x42\\x2b\\x69\\xa2\\x72\\x2f\"},\n{{0x45,0xeb,0x0c,0x4d,0xfa,0xfa,0x2a,0x76,0x90,0xef,0x57,0x9c,0x09,0x54,0x56,0xce,0xed,0xcd,0x32,0xf0,0xb6,0x14,0x4d,0x0c,0x38,0x0f,0x87,0xfb,0x74,0x4a,0x0b,0x1f,},{0xfc,0x85,0x63,0x2c,0x98,0x38,0x4b,0x5f,0x96,0x82,0xae,0xd9,0xcd,0x66,0x4c,0xf1,0xf4,0x8e,0x58,0x8b,0xe2,0xd5,0x68,0xe5,0xc7,0x34,0x49,0x4d,0xf4,0xc7,0x12,0xb8,},{0x55,0x85,0x1d,0xe8,0xe1,0x09,0x2f,0x78,0x94,0x4f,0x6c,0x6d,0xd9,0x5b,0xf0,0x7e,0x2d,0xbc,0x8d,0xf7,0xf5,0x7a,0xd5,0x76,0x82,0x9b,0x97,0x8e,0x3a,0xf5,0x8a,0x7a,0x8e,0x94,0xed,0x4d,0xcc,0xbc,0x01,0x82,0x46,0x7e,0xdf,0x0b,0xad,0x4b,0xae,0x7c,0xa8,0x4a,0xa9,0xa0,0xc1,0x7c,0x61,0xa9,0xe0,0xdd,0xff,0x1d,0x75,0x25,0xd7,0x04,},\"\\x6f\\x66\\xd8\\x47\\x40\\x5a\\x03\\xd7\\xbd\\x6f\\x8d\\x28\\x97\\xdb\\xdf\\x04\\xe7\\x6d\\x7d\\xf2\\xd9\\x47\\x0a\\x49\\x96\\xb7\\xdd\\x6d\\xb8\\x85\\x00\\xf8\\xf4\\xf8\\x3e\\x96\\x0e\\x21\\x9a\\x24\\x86\\xe2\\x45\\x45\\xad\\xd1\\x36\\x14\\x55\\x04\\x14\\xd8\\x27\\xc4\\x1a\\x9b\\x08\\x31\\x8d\\xaf\\x01\\xb1\\x52\\x14\\xc6\\x4a\\x42\\x66\\xcb\\xf8\\xa5\\x71\\x7a\\xda\\x3e\\x62\\xc2\\x67\\x29\\x07\\x3e\\x16\\xdd\\xbd\\x66\\xf2\\xd5\\x20\\xe1\\xe0\\x99\\x35\\xde\\x05\\xe4\\xdb\\x11\\xc3\\x96\\xd4\\x77\\x01\\x0a\\xec\\x66\\xaa\\xfb\\x76\\x2e\\x69\\x23\\x8d\\x0b\\x9e\\x76\\xb4\\x52\\x45\\x4b\\xf9\\xe4\\x51\\xe7\\x6a\\xc7\\x9e\\x69\\x90\\xd4\\x1b\\x93\\x2b\\xc3\\x29\\x17\\x09\\x37\\x83\\xc9\\x1b\\xc9\\xcf\\x0b\\xbe\\x3b\\x51\\x40\\x70\\xa1\\xe6\\x92\\xff\\x34\\xfd\\x06\\xb6\\x6e\\xa1\\x1f\\x39\\xe1\\x0a\\xf9\\x33\\xee\\x96\\xd8\\xe9\\xb6\\x77\\xcb\\x03\\x73\\x7e\\x79\\x64\\xee\\xaa\\x72\\x5f\\x12\\x12\\x07\\xf9\\xc1\\xb2\\x6a\\x96\\xc6\\x16\\xdf\\x7c\\xb7\\xca\\xef\\x47\\xbd\\xa9\\x01\\x36\\x8f\\xf2\\xea\\x58\\x6e\\x42\\x2e\\x65\\xbf\\x21\\xa6\\x91\\xbd\\xd2\\xc1\\x3e\\x67\\xff\\xf5\\x8c\\xfb\\xfe\\xd8\\x17\\x82\\x04\\x9d\\xaf\\xa0\\xf7\\x27\\xdf\\x88\\x62\\x3f\\x2f\\x7e\\x8f\\x26\\x2d\\xaf\\x93\\x95\\x42\\xa1\\x87\\xb8\\x72\\x0a\\x9b\\x6b\\x2b\\x09\\x89\\x0e\\x54\\x87\\x6b\\x28\\xa4\\x38\\x74\\xab\\xbe\\x3b\\xfa\\x98\\x1f\\x81\\x38\\xb7\\x72\\xc5\\xd5\\x17\\x36\\x88\\x5f\\x86\\xac\\xac\\x22\\x15\\xa0\\xb0\\x10\\xdf\\xc2\\xc6\\xb1\\x50\\x84\\x5d\\x4f\\x82\\x96\\x25\\x25\\x86\\xa3\\xe1\\x15\\xf3\\x03\\xc3\\xd8\\xa5\\x82\\xe2\\x0f\\xd2\\xd4\\x3f\\x6c\\x44\\x6e\\x5d\\x00\\x28\\x0e\\xc1\\x79\\x82\\x3b\\x7f\\xb4\\xc1\\xb0\\xfe\\xb9\\x4e\\xb4\\xef\\x17\\x07\\xf5\\x18\\x4e\\x3b\\x52\\x46\\x1a\\x75\\x62\\xd1\\xf3\\x07\\xcb\\x75\\x1c\\xdb\\xbf\\x6e\\xae\\x49\\xff\\xae\\x91\\x86\\x23\\x58\\xe7\\x4e\\x95\\x48\\x82\\x2b\\x8a\\x04\\x9f\\xec\\x6b\\xf4\\xc7\\xa9\\x9c\\xab\\xbe\\x09\\x20\\x65\\x77\\xb6\\x57\\xe3\\x1f\"},\n{{0x70,0x9d,0x2e,0x19,0x90,0x06,0xf5,0x36,0x9a,0x7a,0x0b,0xdd,0x34,0xe7,0x4d,0xc7,0x84,0xbe,0x33,0x88,0x0e,0xa3,0xc5,0xdd,0x10,0xed,0x5c,0x94,0x45,0x1e,0x79,0x72,},{0x06,0xf9,0x89,0x20,0x2b,0xa2,0xcb,0xc9,0xc1,0x50,0xbe,0x61,0x12,0x62,0xac,0xa0,0x0c,0x45,0xf0,0x12,0xf8,0x9f,0xba,0xf8,0x9f,0x8c,0xec,0xcb,0xa0,0xb1,0x93,0x4a,},{0x62,0x9b,0xf9,0x7b,0x0c,0x78,0xee,0x6a,0x9c,0x87,0x59,0xfb,0xea,0x28,0x22,0x4e,0x27,0xab,0xbb,0x6c,0xbe,0x4d,0xea,0x5b,0xb7,0x97,0xe6,0xe0,0xfe,0x80,0xc9,0x13,0xf9,0x53,0xe3,0xa9,0xb6,0x23,0x35,0x2d,0x13,0xac,0xf4,0xce,0x62,0x50,0xfb,0x02,0x9a,0x1e,0x19,0x8d,0x72,0xbd,0x5e,0x74,0x02,0xe6,0x0e,0x9e,0x48,0xca,0x35,0x01,},\"\\x62\\xf0\\x03\\x14\\x0f\\xa0\\x9e\\x03\\x87\\xd1\\x87\\xa0\\xff\\x96\\xc4\\x56\\x3d\\xf9\\xf4\\xe2\\x8c\\x22\\x82\\xc0\\x18\\x3a\\xc3\\xee\\xde\\x13\\x12\\x35\\x49\\x21\\xf7\\x80\\xfc\\xa5\\x36\\x1d\\x30\\x68\\xd2\\x99\\x49\\x63\\x0b\\x75\\x30\\xcd\\x59\\x14\\xac\\xe0\\x46\\x8d\\x01\\x4b\\x6f\\x53\\xd8\\x39\\xb8\\x2e\\x38\\x81\\x7d\\xbf\\x2d\\x83\\x92\\xc3\\xce\\x34\\x24\\xea\\xb8\\x6a\\x24\\xd8\\x04\\xc7\\xac\\xb1\\xce\\x7a\\xcf\\xe0\\xa1\\xcd\\xa4\\x39\\x39\\x24\\x28\\x31\\x05\\xda\\x4a\\x77\\x41\\x19\\x6e\\x02\\x75\\x50\\x04\\x7f\\x85\\xb7\\xa0\\xa0\\x1d\\x45\\x41\\x24\\xef\\xc0\\xe2\\x99\\xf0\\xef\\x9a\\xd1\\x43\\x50\\x54\\x30\\x53\\x48\\x22\\x61\\x52\\x8b\\xaa\\x56\\xe6\\x59\\x99\\xac\\x80\\x2c\\x00\\xa3\\x36\\x26\\x7c\\x63\\x51\\x06\\xb2\\x64\\x03\\xc1\\x9f\\x39\\x1d\\x53\\xbd\\x82\\x86\\x1d\\x6d\\x48\\xa4\\x38\\x0b\\x30\\x43\\xaa\\x91\\xd6\\x49\\x53\\x68\\x81\\x20\\x4e\\xcc\\xb0\\xde\\x20\\xd4\\x3e\\x5a\\x37\\x55\\xb7\\xf6\\x00\\x91\\x6e\\xcc\\xae\\x42\\xa0\\xc9\\x05\\x3b\\x46\\x2d\\x94\\x17\\xa1\\x3d\\x67\\xd7\\x78\\x26\\x4a\\x89\\x6e\\x8e\\xaf\\x90\\xba\\xf6\\x6d\\x29\\xe5\\x43\\x8a\\x71\\x67\\x81\\x12\\x3a\\x89\\xfa\\x9b\\x8b\\xee\\xf9\\x1d\\x96\\x5a\\xf2\\xf4\\xa1\\xa5\\xbd\\x5d\\x2e\\x2a\\xaf\\x46\\xd5\\xc9\\x4b\\x77\\x09\\xcd\\xd3\\x8d\\x05\\xfe\\xee\\x4b\\xfb\\x76\\xa3\\x59\\x07\\x7c\\x16\\xbc\\x4b\\xe9\\x11\\x6e\\x69\\x00\\x12\\x71\\xcd\\xa5\\x65\\xbc\\x19\\xbf\\x47\\xd4\\xf9\\x86\\xbd\\x9c\\x0d\\x18\\x4c\\xd8\\xa3\\x52\\x0c\\xa1\\xbd\\xb4\\xb5\\x05\\xaa\\xf7\\xcb\\x4e\\xc9\\xf9\\x47\\x89\\x77\\x9d\\x30\\x71\\x4e\\x79\\x11\\x6d\\xd5\\x01\\x9d\\x59\\xb2\\x8b\\x17\\xda\\xd9\\x6f\\x4e\\x21\\x55\\xad\\x9c\\x61\\x27\\x4a\\xdd\\xc6\\xb6\\x38\\x10\\x95\\x04\\xe9\\xed\\x19\\xf4\\xed\\xa5\\x37\\x77\\x62\\x64\\x8c\\x40\\x98\\x22\\x4e\\x33\\x91\\x04\\x3e\\x4c\\x2a\\xd5\\x91\\x65\\x4c\\x9e\\x7f\\x97\\x4e\\xfd\\xf0\\xb0\\x50\\x4b\\x6f\\xa5\\xf6\\x46\\xce\\xcf\\x44\\xcd\\x37\\x24\\x12\\x37\\x25\\x05\"},\n{{0x51,0x51,0x61,0x74,0x21,0xaa,0xdc,0x9c,0x95,0xa4,0x42,0xb4,0x5e,0x7f,0xf6,0xde,0x06,0xa2,0xc7,0x33,0xb8,0x5b,0xd7,0x89,0xfb,0xad,0x41,0x4e,0xe3,0xc9,0x1a,0xdd,},{0x14,0x94,0x1d,0x55,0x97,0x61,0xb3,0x0a,0xb0,0xa8,0x6d,0x47,0xe0,0xf7,0xd1,0x89,0x6b,0x33,0x78,0x45,0x27,0xc8,0x0a,0xf4,0x1c,0xb8,0x48,0x10,0xcb,0xff,0x9d,0xbf,},{0xfa,0xe4,0x77,0x3b,0x33,0x44,0x60,0xc7,0x7b,0xf0,0x1e,0xc6,0x36,0x6c,0x4f,0xe6,0x1c,0x0c,0xab,0x57,0xd8,0xa4,0xb0,0x39,0x09,0xc6,0x19,0xe1,0x1e,0xe3,0x46,0x1c,0x13,0xfa,0x21,0x57,0x6f,0x63,0x87,0x0e,0x42,0x3d,0xd0,0x41,0x81,0xe4,0xa7,0x01,0x3a,0x75,0x24,0xf2,0x46,0xfe,0x33,0x85,0x3c,0x67,0x41,0x62,0xa7,0x81,0x51,0x04,},\"\\x21\\x6e\\x9d\\x40\\xbc\\xdc\\x3b\\x26\\x50\\x18\\x8d\\x12\\x1c\\x9f\\x8e\\xf2\\x9e\\x91\\x4f\\xac\\xd0\\x22\\xfe\\x01\\xb9\\x0e\\xd1\\x12\\x25\\xf2\\xeb\\x93\\x53\\x8e\\x5f\\xce\\xe5\\xab\\x80\\x45\\xe9\\x19\\x9a\\xa7\\x6a\\x16\\xbd\\xd0\\x61\\x68\\x05\\x66\\x0e\\x24\\x7f\\xec\\xd7\\xe2\\x28\\x21\\xb6\\x9b\\x1f\\x8e\\x8a\\x58\\xac\\x3f\\xb8\\x56\\x91\\xd7\\x5d\\x59\\x57\\xa1\\xda\\xf5\\x3f\\xf9\\xee\\x64\\x76\\xd7\\xc4\\xbc\\x54\\x1e\\x6a\\xd3\\x8e\\x3a\\x34\\xea\\x90\\xfc\\x52\\xa4\\x8b\\x93\\x99\\xf9\\x2d\\x17\\xc9\\xbb\\x0d\\x7f\\xc3\\x10\\x4c\\x55\\xd0\\xef\\xb4\\xea\\x5b\\x83\\x1f\\xf9\\x49\\x0b\\x3f\\x79\\xf4\\xd9\\xd6\\x99\\x59\\x4b\\x74\\x15\\x66\\xf2\\xb5\\x0a\\x8f\\xc7\\x8c\\xc4\\x03\\xfa\\x40\\xf5\\xab\\xb6\\x63\\x8a\\x32\\xf4\\x49\\xa8\\xb3\\xef\\x02\\x9c\\x40\\x2f\\x46\\x93\\x1a\\xd2\\xbd\\x3e\\x8e\\x68\\x31\\x08\\x71\\x4c\\x98\\x9a\\xe2\\x16\\x89\\xe9\\xc4\\x44\\xb9\\xf5\\x5b\\x81\\x11\\x9b\\xb5\\x03\\x5b\\xcf\\x73\\xe9\\x7c\\xe4\\x3a\\x22\\x18\\xc7\\xbc\\x3e\\x43\\x0d\\x1e\\x81\\x4f\\x34\\xde\\xe0\\x57\\x26\\x5d\\x31\\x94\\xb9\\xf4\\x38\\x75\\xd8\\x38\\x1f\\x52\\x5f\\x78\\x57\\x6e\\x64\\xce\\x69\\x25\\x84\\xfa\\xa3\\x0f\\xb7\\x43\\xa1\\x2d\\x1b\\x77\\x61\\x4d\\x2e\\x10\\xa6\\xb8\\x56\\xb5\\x2b\\xe2\\x7c\\xdb\\x63\\x0b\\xa1\\xf0\\xd3\\xa6\\xf8\\xea\\x98\\x44\\x54\\x2e\\x58\\x4e\\xa0\\xa2\\x77\\x75\\x27\\xd0\\xc5\\x2a\\xca\\x94\\x9a\\xac\\xda\\x45\\xad\\x83\\xd1\\x6d\\x5c\\x83\\xd6\\x63\\xad\\xb7\\x9c\\xad\\x6f\\x3e\\x39\\xe9\\x90\\xfe\\x28\\x2a\\x14\\xc3\\x53\\xaa\\x23\\x79\\xd7\\xf0\\x6a\\xda\\xb7\\x4c\\xea\\x02\\x1b\\x89\\x83\\xa5\\x7f\\x1d\\x0c\\xf7\\x03\\x29\\x2e\\xb0\\x5e\\xce\\x89\\xc5\\x3f\\x3a\\x12\\x65\\x61\\x0e\\x0c\\x1e\\xa8\\xdd\\xd4\\x44\\xd1\\xff\\xd6\\xbc\\x3d\\x03\\xf0\\xa6\\xe4\\xd0\\xdf\\x5c\\x5b\\x8d\\xc1\\xf9\\x5d\\x9f\\x55\\x58\\xb1\\x18\\xaf\\xe6\\xbe\\xa0\\xf6\\xc2\\x93\\x13\\x63\\xf0\\x3a\\xb3\\x4e\\x75\\x7d\\x49\\x36\\x41\\x74\\xf6\\x58\\xef\\xbb\\xf3\\x8d\\xc1\\x77\"},\n{{0x38,0xbe,0xd4,0x45,0x55,0x6d,0xe7,0x44,0x82,0xbf,0x5f,0xec,0x05,0x06,0xf9,0xaf,0x33,0x0b,0x15,0x1e,0x50,0xd4,0x77,0x4d,0xfe,0x85,0x91,0xd7,0xb7,0xe0,0x27,0x6b,},{0x4c,0x0f,0x9c,0x49,0xa4,0x2f,0x40,0x47,0xbf,0xe6,0x88,0x55,0x51,0xc5,0xe4,0xb8,0x56,0xcf,0x77,0x1a,0x67,0xaf,0x3f,0x89,0xdb,0xf6,0x02,0xf9,0xdb,0x92,0x20,0xf3,},{0xf7,0x02,0xd0,0xd4,0x63,0x28,0x2f,0xc7,0xfd,0x5f,0x8f,0x90,0x29,0xb8,0x9c,0x62,0x6c,0xaf,0xd8,0x34,0x50,0xc3,0xbb,0x9d,0xd8,0xf6,0x58,0x9f,0x0c,0x4b,0x4b,0x71,0xf6,0x49,0xea,0x21,0x2e,0x5e,0x33,0x48,0x7c,0x59,0xc1,0x68,0xea,0x3a,0xd8,0x31,0x50,0xf1,0xfc,0xdf,0xe8,0xc5,0x3e,0xba,0x65,0xad,0xc2,0x02,0x3c,0x25,0x83,0x0f,},\"\\x0f\\xf0\\x03\\x1d\\xf0\\xbe\\xef\\xf3\\x71\\x0c\\x6b\\x76\\x3f\\x9b\\x8e\\xc8\\x17\\x19\\xbf\\xa1\\x52\\x8c\\xe4\\x65\\x19\\xad\\xf3\\xd3\\x41\\x2d\\x93\\xfb\\x18\\x8f\\xd4\\x97\\xd5\\xd1\\x70\\x91\\xc0\\xf0\\x34\\x59\\x60\\xdd\\x0e\\xb0\\xc0\\x9f\\xc4\\x00\\x51\\x73\\x66\\x5d\\x4d\\x97\\xf9\\x5c\\x13\\x82\\x8b\\xc7\\x6b\\x34\\x92\\xb8\\x7a\\x4b\\x64\\x25\\x3c\\x8b\\x5f\\xa4\\x7a\\xa7\\x5f\\xa3\\xb8\\x6d\\x5a\\xbe\\xea\\x8d\\xe5\\x95\\x9a\\x60\\x22\\x89\\x13\\x6f\\x60\\xa6\\x9b\\x30\\x9e\\x77\\x3b\\x22\\x55\\xcd\\xe1\\x9e\\xd2\\xa2\\xe1\\x99\\xc3\\x3d\\xb1\\x1c\\x16\\xad\\xe0\\x8a\\x31\\x97\\x50\\xb8\\x51\\xd9\\x2c\\x69\\x29\\x24\\xfc\\x98\\x59\\xbe\\x52\\x34\\x31\\xcb\\xe7\\x8e\\xc0\\x92\\xdb\\x11\\x29\\x21\\x0e\\xbb\\xea\\xa7\\xc2\\xa2\\xc0\\x00\\xee\\xb1\\x05\\xca\\x03\\x01\\xa4\\x8f\\x3e\\x45\\xfd\\xfb\\x15\\xb2\\x75\\xcb\\xab\\x83\\xca\\x5c\\x99\\xd7\\x37\\xa5\\x85\\x32\\x0e\\x9e\\x3b\\x31\\x71\\x79\\xbd\\x86\\x46\\x7f\\xa9\\x69\\x4f\\xcd\\xb2\\xac\\x6a\\xd3\\x6e\\xd7\\x14\\x48\\x43\\xdb\\xc3\\x4e\\x42\\x3d\\x35\\xaf\\xd7\\xd8\\x97\\x2a\\x1c\\x43\\xc1\\x99\\xa1\\x91\\xab\\xd6\\xce\\xba\\x49\\x36\\xd3\\x95\\xc9\\x95\\xa3\\xeb\\x13\\xcb\\x05\\x7f\\x88\\xa9\\xdc\\x94\\x90\\xfe\\x98\\x84\\x5e\\xe5\\xd2\\x6a\\x89\\xfb\\x64\\x2a\\x2a\\x51\\x6d\\xc3\\x05\\x6c\\x54\\xd3\\x63\\x72\\x13\\x36\\x3a\\x86\\x28\\xa4\\x2a\\x39\\x5d\\x94\\x2b\\x95\\x4a\\x89\\xe8\\xef\\x7a\\x74\\x4d\\x8a\\xe5\\xad\\xac\\x88\\xc6\\x16\\xef\\xaa\\x90\\xe2\\x07\\x72\\x05\\xa6\\x0b\\xaf\\xfe\\xde\\x5c\\x87\\xbb\\x14\\xde\\xad\\x30\\x62\\x29\\x49\\x5f\\x69\\x8f\\x3e\\x49\\x06\\x16\\x96\\x6b\\x16\\x36\\x38\\x7d\\x0d\\x86\\x18\\x3f\\x94\\x5b\\x24\\xa9\\xdc\\xfc\\xcf\\x4d\\x36\\x72\\x2c\\xd1\\x2e\\xbb\\x6b\\xd8\\xe7\\x83\\x25\\x75\\x2a\\xfa\\x2b\\x1a\\xbd\\x13\\xc4\\xbd\\xbc\\xad\\xd1\\x70\\x86\\x91\\x36\\x82\\x62\\x42\\xac\\xfb\\x72\\x1d\\xe5\\xff\\x27\\xba\\x8a\\xa0\\xc0\\x18\\xb2\\x25\\xed\\x34\\x04\\x80\\x3c\\xe9\\xfa\\x2d\\x50\\x8d\\x89\\x44\"},\n{{0x05,0x54,0x60,0xb3,0x2d,0xd0,0x4d,0x7f,0x4b,0x23,0x11,0xa8,0x98,0x07,0xe0,0x73,0xfd,0x55,0x65,0x65,0xa4,0x77,0x18,0x57,0xd8,0x82,0x79,0x41,0x30,0xa2,0xfe,0x5d,},{0x26,0x0f,0x8f,0xed,0x4b,0xba,0x30,0xb9,0xe1,0x2a,0xd8,0x52,0x3f,0xbb,0x6f,0x57,0xf0,0xa7,0xa8,0x82,0x55,0x00,0x61,0xf1,0xda,0x46,0xfb,0xd8,0xea,0x44,0x22,0x21,},{0x23,0xf4,0xf1,0x62,0x7f,0xba,0xbd,0x78,0x91,0xd7,0xd8,0x48,0x96,0x31,0xc7,0x23,0x1d,0x22,0xde,0x71,0x86,0x4e,0x26,0x2a,0xb4,0xda,0x84,0xea,0x8a,0x13,0xa6,0x0f,0xea,0xc4,0xdc,0xfb,0x18,0x12,0xf1,0x20,0x04,0x44,0xb7,0x75,0xf1,0x21,0xd7,0x26,0x6d,0x75,0x5c,0xe9,0xb6,0xa9,0xad,0x79,0x65,0x59,0xc0,0xa2,0x6b,0x51,0x6d,0x02,},\"\\x74\\x07\\xf9\\x6e\\xe3\\xe7\\x9c\\x69\\xd3\\x6c\\xe1\\xf6\\x4e\\x4f\\x18\\x86\\x55\\xea\\x68\\xb9\\x47\\xe7\\xe2\\xbe\\x97\\xb0\\x5e\\xbc\\x6d\\x44\\x39\\xe9\\x50\\x27\\x6e\\xf3\\xf0\\xe6\\xa0\\x3d\\xd4\\x8b\\x24\\xf6\\x69\\x29\\xb4\\x9c\\x15\\x80\\xeb\\x46\\x88\\x07\\xe1\\xe7\\xa2\\x5e\\xb9\\xb9\\x4d\\xa3\\x40\\xc5\\x3f\\x98\\x4f\\x8b\\x81\\x60\\x3e\\xfb\\x61\\x04\\x7b\\xf3\\xf1\\x4b\\x68\\x6d\\x97\\x98\\x00\\x3d\\x2f\\x68\\x58\\x9a\\x79\\xeb\\xfa\\xd5\\x44\\x09\\xc7\\x1c\\x90\\xff\\x67\\xc1\\x1f\\xbd\\x76\\xcc\\x72\\xc2\\xd1\\x45\\xf4\\x58\\xe4\\x2f\\x88\\xb7\\x5d\\x25\\x0e\\xad\\xca\\xfe\\x66\\xbf\\x37\\xff\\xc8\\x37\\xb6\\x2f\\xf0\\x06\\x68\\x5b\\x7f\\x85\\xa9\\xd8\\x75\\xfc\\x07\\x8c\\x82\\xe6\\x1f\\xe3\\x5d\\x19\\x22\\x52\\x7a\\x55\\x1d\\xab\\x62\\xf9\\xe4\\x77\\x49\\x91\\x46\\xba\\xd9\\x12\\x20\\x3e\\x66\\x4c\\x41\\x7c\\x36\\x79\\xc0\\x2d\\x87\\x2a\\xba\\xc0\\x03\\x2f\\x8c\\xc7\\x7f\\x77\\xbf\\xe5\\x4d\\x33\\x26\\xfd\\xee\\x92\\x76\\xa4\\x8e\\xa4\\xeb\\x25\\x13\\x50\\x40\\x68\\x82\\xd0\\x8c\\x83\\x0e\\x76\\x49\\xfe\\x68\\x54\\x55\\x8a\\x75\\x13\\xab\\x2d\\x8d\\x2a\\xc3\\xe5\\xce\\xd8\\xa8\\x08\\xd2\\xae\\xe4\\x54\\x77\\x9e\\xda\\xbd\\x1a\\xa6\\x3b\\xb1\\x9f\\x71\\x8f\\x47\\x0b\\xdc\\x84\\x51\\xcd\\x9b\\x29\\x49\\x41\\xe3\\x49\\x70\\x63\\xb1\\xe3\\x9b\\x6c\\xa1\\x84\\x56\\x2f\\xe8\\x38\\xcb\\xfe\\xee\\x92\\x2d\\xe2\\x4d\\xdf\\xcf\\x98\\x82\\xc5\\xe6\\x15\\xb1\\x1b\\xf9\\x04\\x81\\x7f\\xbd\\x64\\x71\\x39\\xdb\\x80\\xb4\\xe8\\xfe\\xb3\\x7f\\x11\\xe1\\x85\\x2d\\x7e\\x87\\x6d\\xb9\\xcb\\x63\\xc9\\x4d\\x7e\\xe3\\x41\\x92\\xf7\\x20\\x0b\\x5b\\xc7\\x7a\\x03\\x11\\xae\\x43\\xb8\\x06\\xeb\\xd4\\xc2\\x89\\x6c\\x53\\xf5\\x8f\\x7e\\xbc\\x16\\x25\\xcb\\x20\\xd7\\x10\\x7e\\xf9\\xdb\\x0d\\xa2\\x87\\x88\\x52\\x3d\\xe9\\x91\\xef\\x6c\\x58\\x66\\xb1\\x8d\\x8d\\xe8\\x3a\\x95\\x4d\\x32\\x81\\xe0\\x6d\\xbf\\x27\\xc4\\xf2\\x38\\x2e\\x08\\xcd\\x0e\\x0f\\x6e\\xba\\xe3\\xf9\\x61\\xb7\\x7f\\xce\\x5a\\x95\\xa9\\xb0\\x62\\x1b\\x75\\x6f\"},\n{{0xe9,0xf6,0xd3,0x1b,0x93,0x69,0x42,0xc5,0x26,0xe0,0xf9,0xec,0x4f,0x5a,0x7a,0xc2,0x5f,0xa7,0x89,0xe0,0xc4,0x34,0xbc,0xd9,0x19,0x9d,0x72,0x0c,0x74,0x3c,0x84,0xc4,},{0x32,0x12,0x6d,0x26,0xe2,0x82,0x31,0xc5,0xb5,0x85,0xb1,0x3f,0x43,0xa0,0x1c,0x6f,0xe5,0x42,0x94,0x6b,0x07,0xd3,0xa9,0x1e,0x57,0xd2,0x81,0x52,0x3f,0x5c,0xb4,0x5c,},{0x7e,0x3b,0x1c,0x4c,0x71,0x6c,0x80,0x8e,0x90,0xb9,0x74,0x45,0x89,0x15,0xf3,0xb2,0x23,0x9c,0x42,0x07,0x71,0x19,0xfe,0x27,0x07,0x88,0xfa,0xe5,0x20,0x57,0x8b,0xd7,0xda,0x64,0x88,0x04,0x41,0x32,0xe1,0xbe,0xf2,0x3e,0x3b,0x23,0xc3,0x4d,0x9c,0x18,0x62,0x74,0x4f,0x28,0xfc,0xae,0xcd,0xa6,0xca,0xc0,0xfd,0x72,0xb9,0x3b,0x6a,0x0f,},\"\\xe8\\x81\\x33\\xf3\\xd1\\x76\\x42\\xd5\\xc2\\x27\\x79\\xa8\\x53\\x16\\xba\\x0d\\xf3\\x4c\\x79\\x2b\\x4e\\xfe\\xe4\\x9e\\xd7\\xdd\\x93\\xca\\x33\\x22\\xef\\x47\\xc7\\x2e\\x5b\\x2e\\x45\\x95\\xc7\\x78\\x00\\x43\\x4b\\x60\\x71\\x9a\\xdf\\x54\\xe4\\xc1\\xa3\\x4c\\x89\\xfa\\x1e\\x27\\xee\\x8d\\x35\\xa0\\x92\\x1f\\x97\\x55\\xac\\x4a\\x77\\xa6\\xc1\\x68\\x4e\\xa0\\xf5\\xc8\\xee\\x5f\\x75\\x9c\\xe5\\x9b\\xfe\\x83\\x15\\x80\\x0a\\x67\\xaa\\x6c\\x64\\xdd\\xfa\\xac\\x92\\xea\\xbe\\x6c\\x2c\\x61\\x37\\x79\\x78\\x4b\\x3a\\xff\\xaf\\xcc\\x62\\x0f\\x2a\\x6d\\xc5\\xcb\\x8d\\x8d\\xc7\\xd7\\x4a\\xa4\\xd7\\x94\\x94\\x67\\x84\\x94\\xe5\\xe6\\x39\\x4c\\x43\\x3c\\x14\\x80\\x9f\\xf4\\x0c\\x9a\\x59\\x2d\\x0d\\x69\\x4a\\x81\\x10\\x3b\\x44\\x53\\x1e\\x1f\\x48\\xbc\\x13\\x96\\x5d\\x15\\xaf\\x8b\\xf3\\x34\\x04\\x88\\xf8\\xcd\\x58\\xf0\\x9a\\xe1\\xa6\\x61\\x6b\\xf8\\x5a\\xc9\\xde\\x7e\\x0c\\x66\\x96\\xaa\\x2f\\x1b\\xec\\x15\\xe1\\x7a\\x44\\xda\\x4a\\x84\\xed\\xb4\\xec\\x6d\\x77\\x24\\x77\\x88\\xba\\x0d\\xe3\\xae\\x12\\xa1\\x55\\xcb\\xed\\xc0\\xda\\x2f\\x56\\x8e\\xef\\x0b\\x75\\xa8\\x77\\xea\\x5b\\x0c\\x2c\\x0d\\x4b\\xf2\\xc6\\x1d\\x46\\x8a\\x46\\xfa\\xad\\xfa\\xec\\xe3\\x5f\\xc2\\x63\\xa9\\xbe\\x99\\x87\\xf4\\xf7\\xf7\\x8f\\x05\\xc7\\x07\\x78\\x43\\x78\\xc7\\xb8\\xf7\\xda\\xf9\\xac\\x3a\\x12\\x2a\\xad\\x39\\xa1\\x67\\x79\\x66\\xda\\x9e\\xf2\\x86\\xc9\\xe0\\x62\\xc4\\xf4\\x39\\xad\\x0b\\xdd\\xea\\x26\\xe5\\x4b\\x2f\\x73\\x88\\xe2\\x38\\xb2\\xa6\\x49\\x28\\x45\\x0d\\x34\\x56\\x4c\\x5a\\x44\\x7e\\x7a\\xfb\\xbe\\xdd\\x10\\x85\\xf1\\xf2\\x4c\\x11\\xae\\x08\\x43\\x22\\xd1\\xa3\\x2c\\xf8\\xaa\\x47\\x39\\x41\\xf0\\x0d\\x56\\xb1\\x61\\x82\\x13\\xca\\xb3\\x90\\x0a\\xa6\\x06\\x46\\x3d\\x9f\\x80\\x0e\\x92\\x6f\\x9f\\x42\\xd4\\xb0\\x82\\xd8\\xc5\\xec\\x3a\\x4a\\x02\\x5b\\x45\\xf9\\xaa\\xdc\\x8b\\xcb\\xd1\\x70\\x91\\xb3\\xda\\x49\\xe9\\x45\\x3d\\xc5\\x5e\\x89\\xb5\\xb5\\xfe\\x6b\\x31\\xf5\\xed\\xda\\xd1\\x0b\\x66\\x01\\x57\\x25\\x68\\xd8\\xe2\\x05\\xd3\\x25\\x1a\"},\n{{0x6b,0xf4,0xca,0xaa,0xbb,0x96,0x85,0x4a,0x38,0xa5,0x72,0xf4,0xce,0x6c,0x78,0x38,0xf7,0xe7,0x50,0x11,0x8c,0x73,0xf2,0x72,0x35,0x82,0x61,0x8e,0x23,0x07,0xf8,0x38,},{0x08,0x12,0x63,0x73,0xd0,0x56,0xf0,0x0e,0x54,0xb8,0xd4,0x3d,0x77,0xc3,0x5f,0x5f,0x91,0x98,0x33,0xe9,0x0d,0x8a,0xaf,0xd6,0xc8,0x24,0x6d,0x27,0x91,0x7a,0xd0,0x91,},{0xd2,0x11,0x3f,0x80,0xd6,0xcf,0x92,0x84,0x86,0xa2,0x50,0xa6,0x79,0xd6,0xe7,0x4b,0x35,0xea,0x9d,0x26,0x06,0x1f,0xa9,0x4d,0x76,0x9e,0x1a,0x8f,0xbf,0xa0,0xa7,0x34,0x22,0x7f,0x55,0x53,0x7e,0x4e,0xbf,0xf5,0x93,0x36,0xdb,0x14,0x1c,0xf5,0xd6,0xd4,0x82,0xa0,0x71,0x1f,0x1e,0x9f,0xc7,0x2f,0xf7,0x09,0x56,0xa1,0x1b,0x4f,0xb9,0x09,},\"\\x47\\x76\\xe9\\xd6\\x00\\x85\\x48\\x1f\\xa5\\x37\\xbf\\x29\\x5b\\xda\\xbd\\x8b\\x1c\\xf6\\x32\\xa8\\xcd\\x40\\xbc\\xe6\\xbd\\x32\\x5c\\x12\\x9f\\x97\\x70\\x00\\xe8\\x84\\x68\\xeb\\xf2\\xdc\\x15\\x8a\\xc0\\xf2\\x07\\x21\\x2d\\xb0\\x0f\\xb6\\x0b\\x8e\\xc8\\xba\\xe2\\x29\\x37\\x2e\\x9a\\x6b\\x01\\x53\\x0a\\x7e\\xd1\\xbc\\x9d\\x38\\x9e\\xc8\\x91\\x3f\\x59\\x03\\x0d\\x5b\\x54\\xaf\\x56\\xae\\x1c\\xcc\\x28\\xf3\\x7c\\xc9\\x6a\\x8e\\x53\\x20\\x4e\\x92\\xa6\\x77\\x76\\x6a\\xdf\\xaa\\xda\\x99\\xb0\\x28\\x1f\\x86\\x7f\\x61\\xac\\x9f\\xf7\\xd9\\x72\\xee\\x3e\\xd4\\x27\\xd7\\x2f\\xaa\\xe7\\x5d\\x4a\\xec\\x01\\xb5\\xff\\xc3\\x70\\x61\\xb6\\xf0\\xf7\\xe5\\x71\\x4c\\x4c\\xf3\\x0d\\x5b\\x73\\x1b\\x07\\x46\\x06\\x5f\\x19\\xe4\\xc8\\x92\\x2d\\xde\\x64\\x2f\\x80\\xfe\\x24\\xa3\\xc8\\xdc\\xb2\\xe5\\xf1\\xc2\\x66\\xe2\\xaf\\x6c\\x37\\xde\\xcf\\x55\\xa2\\xba\\xa5\\x4f\\x0d\\x5c\\xf0\\x83\\x93\\x70\\xc3\\xe0\\xb4\\xe7\\x7a\\x4f\\x36\\xbb\\xb3\\x16\\x20\\x14\\x93\\x3a\\x4a\\x4e\\xbc\\xae\\x8c\\x60\\x96\\x1a\\xc6\\xdc\\xf1\\x34\\xf3\\x08\\x28\\xd3\\x14\\x02\\xae\\x74\\xe7\\xe8\\x51\\x3c\\x9d\\x2a\\xd8\\xee\\x46\\xb7\\xa9\\xd5\\x3a\\x1f\\x87\\xeb\\xfc\\xe0\\x4f\\x46\\x1b\\xde\\xd1\\x74\\x9b\\x6f\\xc4\\xc4\\xf2\\x57\\x93\\x52\\x56\\x92\\xd7\\xa0\\xe4\\x26\\xc8\\x4e\\x06\\x08\\x2c\\xc3\\xe6\\xab\\xb5\\x13\\x68\\x37\\x0c\\xbb\\x10\\x6c\\x7a\\x08\\x97\\xf6\\x6d\\x92\\xc9\\x73\\x9c\\xff\\x9f\\x27\\x06\\xd6\\xa2\\x98\\x0e\\xce\\xa3\\xac\\x49\\x45\\xf0\\xf4\\x7e\\x65\\x6b\\xd9\\x63\\x77\\x77\\xe8\\x53\\xd2\\xa8\\x39\\x10\\x43\\x27\\xdc\\x04\\x9e\\xbc\\x34\\xf0\\x49\\xd6\\xc2\\xf8\\x0e\\xca\\x99\\xdb\\x7b\\x41\\x84\\x24\\xac\\xef\\x75\\x22\\x60\\xd2\\xd4\\x27\\x94\\x93\\x23\\x99\\x7c\\xd9\\x61\\x7e\\xdf\\x50\\xd4\\x41\\xd0\\x08\\x8b\\x1d\\x47\\x91\\x2e\\x35\\xcf\\x54\\x23\\x15\\x26\\x58\\x29\\xf3\\x83\\xf4\\x58\\x60\\xd3\\xb4\\x5e\\x73\\x5b\\xb2\\xf8\\x58\\x6d\\xcf\\x58\\xdb\\x4f\\x2a\\xcf\\xb4\\xa6\\x88\\x53\\xa9\\x6e\\xed\\x7b\\x89\\x76\\x9d\\x36\\x56\\x13\"},\n{{0x5d,0x95,0x85,0x73,0x6a,0xb2,0x09,0xb0,0xab,0xe8,0xbf,0x74,0xac,0xa4,0xee,0xa4,0xf6,0xd1,0x65,0x0b,0x53,0x25,0x50,0xa2,0x23,0xe0,0x44,0x58,0x0f,0x8e,0x20,0xde,},{0xe7,0x77,0x29,0xed,0xfd,0x21,0x44,0xb2,0xb1,0x20,0x78,0x76,0x54,0x17,0xfa,0x21,0xf1,0x59,0x4f,0x09,0xb2,0x69,0xe9,0xb6,0x70,0x68,0x02,0xb4,0xf3,0xbd,0xfe,0x85,},{0xe7,0xb0,0x8e,0x1d,0x58,0x09,0xfd,0xd8,0x52,0x94,0x43,0xd6,0x5a,0xda,0x5d,0xd6,0x55,0xea,0x55,0xb5,0x41,0x5a,0x01,0x13,0x93,0xbe,0x70,0x71,0x67,0x64,0x86,0xd3,0x58,0xe8,0xd2,0xa4,0x60,0xeb,0xe0,0x75,0xb0,0xe7,0x01,0xb2,0x4c,0x9e,0x3a,0xb5,0xf2,0xb0,0x33,0x59,0x2d,0x4d,0xe3,0xb7,0xf3,0x7f,0xd5,0x41,0xf6,0x92,0x09,0x09,},\"\\x08\\x69\\x35\\x91\\xe6\\xc5\\x8a\\x5e\\xad\\x9c\\x85\\xfe\\x8e\\xc5\\x85\\x08\\xf8\\x1a\\x34\\x67\\x63\\x6c\\x2d\\x34\\xfc\\xc1\\xf4\\x66\\xe5\\xc6\\xda\\xfd\\xc3\\x7c\\x35\\xcb\\xee\\x35\\x58\\x9c\\x69\\x97\\xe2\\xb1\\x54\\x48\\x13\\x27\\x44\\xe5\\xa1\\xe1\\x31\\xbb\\x49\\xbf\\x5c\\x25\\x63\\xf8\\x7e\\xad\\x3e\\xfe\\x01\\xe8\\x8c\\xbf\\x24\\xcc\\x17\\x69\\xc7\\x8c\\xdf\\xc1\\x67\\xe3\\x78\\x21\\x5b\\x15\\x85\\x9c\\x7a\\x28\\xec\\xe7\\x0e\\x18\\x8f\\xa3\\x30\\x26\\x7d\\x3f\\xc5\\x7b\\x4a\\xce\\x6c\\x15\\x20\\xec\\x67\\x87\\x50\\x67\\xfd\\x33\\xbe\\x86\\xf4\\xa1\\x96\\x7a\\xfb\\x3e\\xb1\\x64\\xc7\\x97\\xcf\\x28\\xd8\\x07\\x2a\\xa6\\x9d\\x82\\xaf\\xa3\\x83\\x74\\xf8\\xe5\\x79\\x7c\\x4c\\x28\\x47\\x1b\\x7d\\x69\\xf5\\xb9\\xc7\\xb4\\xac\\xdb\\xc1\\x9f\\x3c\\x5c\\x5d\\x40\\x08\\x08\\xa9\\x82\\xa4\\x78\\x37\\xae\\xd1\\xb3\\x84\\x1d\\x69\\x89\\x0e\\xeb\\x31\\x49\\x4e\\x10\\xe3\\xe5\\x13\\xd1\\x2d\\x0c\\xa6\\x86\\xc7\\xce\\x65\\x17\\x78\\x09\\x27\\x03\\xfe\\xf0\\xdc\\xc0\\x21\\x40\\x77\\xdf\\xb3\\x61\\x25\\x1b\\xde\\xa4\\x36\\x4d\\xd4\\x1b\\x97\\xbc\\xeb\\x0f\\xb1\\x47\\x5a\\x50\\xe4\\x70\\x8f\\x47\\xf7\\x87\\x8c\\x74\\x40\\x1e\\x97\\x71\\xcc\\x3f\\xce\\xac\\xe8\\x91\\x69\\x98\\x1a\\xa7\\x72\\x50\\x85\\x00\\x90\\xd1\\x81\\xd8\\x35\\x8e\\xbb\\xa6\\x5e\\x29\\x0a\\xcb\\x03\\x52\\xbe\\xce\\x8c\\x57\\x98\\x32\\xa6\\x01\\x55\\x18\\x16\\xd1\\xc0\\x56\\x21\\xcc\\xbb\\xee\\x0f\\xbe\\x39\\xea\\x2f\\x19\\x53\\x93\\x19\\x9e\\x69\\xc2\\x34\\xc2\\xfb\\x1c\\x37\\xe4\\x74\\x84\\x08\\x60\\xce\\x60\\x91\\x61\\xfc\\xfc\\xe2\\x86\\x95\\x74\\xbe\\x0d\\x38\\xf9\\x5e\\x20\\xf4\\xf8\\x72\\x52\\x47\\xb9\\x62\\x7b\\x46\\xe8\\x34\\x90\\x51\\x01\\xac\\x12\\xb9\\x34\\xcb\\xf8\\x7c\\xb2\\xd1\\x90\\xd2\\xf5\\x14\\x90\\xa8\\x2c\\x4e\\x81\\x0e\\xdd\\xb8\\x1f\\x95\\x6a\\x9f\\x36\\xbd\\xa4\\x97\\xbc\\xa5\\x06\\xa4\\x9e\\xe9\\xcd\\x47\\xfd\\xa5\\xb7\\xf2\\xb8\\x84\\xa3\\x64\\x8c\\xad\\xd1\\x2a\\xb6\\x18\\x98\\xad\\xa4\\x6e\\xcc\\x97\\x0f\\x81\\xdc\\x9f\\x87\\x68\\x45\\xdb\"},\n{{0x60,0xb1,0x42,0xf1,0x65,0x11,0x41,0x43,0xca,0x30,0xa6,0x04,0xfe,0xf5,0x1c,0x68,0x64,0x36,0xaa,0x1b,0x9a,0xfd,0xb2,0x66,0xb3,0xe3,0x98,0xcc,0xb3,0xc4,0xd8,0x55,},{0xea,0xf6,0xc5,0xa7,0x6c,0xa9,0x9b,0xf7,0x30,0x64,0x98,0x88,0x8c,0x3b,0x7a,0x1f,0xea,0xe9,0x8b,0xf8,0x98,0x8d,0x7f,0x2e,0x15,0x47,0xf8,0xf5,0x3a,0x45,0x28,0xaa,},{0xa6,0x21,0xf0,0x84,0xea,0x1a,0x36,0xef,0x81,0x2a,0x97,0x55,0xc9,0xaf,0xbb,0x53,0xda,0xda,0xae,0x6b,0x3a,0x53,0xfa,0x83,0x44,0xca,0x40,0xd3,0x61,0x2a,0x26,0x8a,0x35,0xfe,0xd0,0xfd,0x39,0x8a,0xb7,0x5b,0xcd,0x63,0x9c,0x54,0x79,0x37,0xc9,0x41,0x55,0xab,0x1a,0x7a,0x34,0x67,0xdd,0x4b,0xfd,0xdf,0xac,0xab,0x16,0x55,0xe9,0x08,},\"\\x18\\x15\\xde\\xe1\\x17\\x3b\\x78\\x26\\x47\\x20\\xd3\\x5b\\x7c\\xc2\\x45\\x4a\\x00\\x0a\\x65\\xff\\xf2\\x14\\xe2\\x47\\x3e\\x20\\xbc\\x83\\xf3\\xec\\xde\\x9c\\x04\\xc1\\xe0\\x69\\x6c\\xe6\\xe5\\x55\\x19\\xdd\\x2a\\x75\\xce\\x04\\x64\\xbf\\x60\\x1a\\xdc\\x38\\x1e\\x79\\x3e\\xcb\\x9f\\x8c\\xe7\\xab\\x87\\xb6\\xca\\x2a\\x3e\\x41\\x0f\\x63\\x90\\x69\\x45\\x19\\x78\\xd1\\x48\\x73\\xd3\\x39\\x0f\\xab\\x86\\x23\\x96\\x97\\x13\\xc3\\xdf\\xcd\\x58\\xd8\\x6d\\x12\\x40\\x73\\x76\\x1e\\xe0\\x9a\\x65\\x2a\\x48\\x76\\x7f\\x96\\x46\\xcb\\x72\\x6a\\xc4\\x54\\xac\\x9a\\x1b\\xc5\\xfa\\xed\\x30\\x26\\xb7\\x03\\x98\\x2b\\xc2\\xb1\\xe0\\x75\\x82\\x10\\xe1\\xd6\\x25\\x19\\x23\\x0e\\xb2\\xb2\\xf4\\xa4\\x86\\xbc\\x55\\x16\\x85\\x60\\xc4\\x36\\x3d\\xf5\\xff\\x5a\\xdf\\xda\\x11\\xac\\x7e\\xf5\\x1b\\x18\\x19\\x6c\\x94\\x33\\x7c\\x07\\xae\\xf1\\x17\\x99\\x0f\\x77\\x0c\\x0f\\x1e\\x8c\\x0f\\x88\\xeb\\x6f\\xfc\\x40\\xe8\\xed\\x7c\\x3a\\x80\\xa6\\x32\\xdb\\x1e\\x7f\\x63\\xb6\\x30\\x96\\xe2\\xac\\x49\\xe5\\x77\\x92\\xb3\\x11\\x43\\xe2\\xf4\\xfa\\xab\\xce\\xae\\x66\\xb2\\x74\\x71\\x68\\x1c\\x36\\xfc\\x11\\x39\\x00\\x7f\\x9b\\x54\\x8c\\xdc\\x6e\\x3b\\x8f\\xbb\\xda\\xba\\x7a\\x8a\\xdb\\x84\\x34\\x31\\x23\\x8b\\xb4\\x61\\xba\\x24\\xf6\\xe0\\x9f\\x62\\xc7\\x2d\\x63\\x77\\xb4\\x04\\x8c\\xb0\\x13\\x4c\\x25\\xa5\\x41\\x1a\\x20\\xbf\\xcf\\xc1\\x3e\\x48\\xd8\\x0e\\x36\\xbf\\xb0\\xda\\x7e\\x01\\x85\\xd3\\x3f\\x19\\x28\\x63\\x6e\\x15\\xde\\xe0\\xe5\\xdf\\x89\\x92\\xa1\\x65\\x72\\xb1\\x3e\\xa8\\xf7\\xcf\\x85\\xca\\xe3\\x2d\\x52\\x9f\\x66\\xe8\\xf6\\xd2\\xfb\\x2a\\xd0\\xbb\\xfe\\x71\\x99\\x16\\x9b\\x25\\x67\\xba\\x00\\xc7\\x81\\xb2\\x0a\\x48\\xe1\\xd7\\x0d\\xf9\\xfa\\x31\\x19\\xcd\\x7e\\x5b\\xbe\\x58\\x88\\x4b\\x0b\\x51\\x21\\x89\\x40\\xfa\\x81\\x5f\\x85\\x62\\x5f\\xa2\\x03\\x47\\x1c\\xee\\x80\\x84\\x78\\x0e\\xb0\\xb9\\x35\\x6f\\x9f\\x3d\\x4f\\x6d\\xf7\\x40\\x30\\x1d\\x70\\x7e\\xf1\\xff\\xb3\\x51\\x9e\\x3f\\x90\\xb8\\x06\\x4b\\x98\\xe7\\x0f\\x37\\x5d\\x07\\x14\\x26\\x88\\x17\\x18\"},\n{{0x73,0x4b,0xa4,0x70,0x33,0xc6,0x14,0x02,0x32,0xdd,0x4a,0x7a,0x14,0xf1,0xa7,0x74,0x3e,0xef,0xe9,0x07,0x0b,0xad,0x96,0x62,0x49,0x16,0x30,0xcc,0x9d,0x28,0xc1,0xf3,},{0x2f,0xa5,0xdf,0x30,0x26,0xd6,0x07,0x42,0xe2,0xaf,0xf6,0xb5,0x78,0x42,0xc7,0x12,0x68,0x46,0xc8,0xa7,0xbb,0xe9,0x26,0x6e,0xfa,0x7b,0x3f,0x23,0x98,0xc3,0x57,0xea,},{0x9b,0xd0,0x74,0xd1,0xd0,0xbd,0x28,0x00,0x1b,0xaf,0x7d,0x2d,0x4e,0x82,0x43,0x5d,0xf0,0x8c,0x42,0x64,0xd8,0xcb,0xb1,0xc3,0x81,0x18,0x3c,0x2f,0x01,0x22,0x3f,0x79,0xf9,0x49,0x23,0xca,0x17,0x8c,0xac,0x75,0x56,0x4e,0x16,0xc7,0xf5,0x60,0x79,0x08,0x8f,0x7e,0xd8,0x85,0xde,0x4d,0x50,0x9f,0xbc,0x78,0xf4,0x38,0xfb,0xa3,0xf6,0x07,},\"\\x5d\\x3c\\x65\\x98\\x10\\xc3\\xfe\\xa5\\x2a\\x6d\\xf3\\x86\\x1e\\x5c\\xdc\\x5b\\x70\\x3c\\xc1\\xce\\xf4\\x85\\x58\\xc6\\x1d\\x8c\\x51\\xd0\\xed\\xea\\x5a\\x14\\x79\\xcf\\xe5\\x06\\x3d\\x82\\xde\\xd9\\xca\\x68\\x1e\\x57\\x48\\x88\\x7c\\x40\\xec\\xfb\\x9e\\x1a\\x9a\\x8b\\x7f\\x85\\x09\\xd1\\x07\\x76\\x46\\x1c\\x39\\x23\\x39\\x96\\x93\\xa7\\x81\\x89\\x08\\x91\\x78\\xd5\\xaa\\xbd\\x15\\xf8\\xc8\\x46\\x64\\x2b\\xe4\\x7d\\x6d\\x4c\\xaf\\x13\\x82\\x4e\\xdc\\xef\\xb8\\x09\\x86\\x8f\\xa7\\x2d\\xdf\\x03\\x5c\\x4d\\xe8\\xef\\x0a\\x9c\\x83\\x22\\x64\\xf6\\x6f\\x01\\x27\\x61\\xce\\x69\\x55\\xbc\\x3c\\x41\\x6e\\x93\\xe2\\x91\\x88\\x02\\x5e\\xbb\\xb1\\x3a\\x55\\x32\\x58\\xc1\\xd7\\xc4\\x99\\xc9\\xa4\\xae\\xb1\\x0b\\xb3\\x6f\\x61\\xd1\\xbb\\x4c\\xec\\x5a\\xe5\\x5d\\x17\\x57\\x22\\xb9\\xa9\\x69\\x6d\\xf8\\x81\\x95\\x1e\\x35\\x20\\x0b\\x96\\x53\\xcf\\x6e\\xd4\\xb3\\xd1\\x5d\\xe0\\x87\\xa9\\xd1\\xc3\\x19\\xfc\\xe8\\x58\\x21\\x56\\xbe\\xbf\\x3f\\xc9\\x1e\\x0e\\x61\\x0f\\xf7\\xa1\\x53\\x08\\xfd\\x1d\\x2c\\x60\\x69\\xfb\\xbb\\x29\\x47\\xd3\\x11\\x07\\x31\\xd2\\x45\\xae\\x29\\x63\\x01\\x4b\\xd7\\x6d\\xea\\x42\\xdb\\x12\\x5c\\xec\\xc4\\x93\\xc8\\xe9\\x09\\x1a\\x76\\x64\\x65\\x77\\x72\\x9a\\xed\\x49\\x66\\xfc\\xe9\\x69\\x9f\\xe1\\x2e\\x36\\x7d\\x66\\x5d\\xf9\\xe9\\x5a\\x91\\x93\\xe1\\x13\\x3e\\x14\\x3a\\xf9\\x2f\\x82\\xb6\\x6a\\xc7\\x76\\x4e\\x50\\x33\\x17\\x86\\x90\\x52\\x18\\x09\\xa7\\x10\\x7d\\x8a\\xe9\\xb8\\x8e\\x0e\\xd1\\xf3\\x5b\\x17\\x19\\x90\\x1b\\x93\\x0a\\xd0\\xe1\\xcb\\xce\\x7f\\xb3\\x02\\x67\\xb1\\x15\\x52\\x04\\xf6\\x05\\xf5\\x25\\xe4\\x9d\\xe2\\x98\\x8e\\xa7\\xf7\\x4b\\xe8\\x81\\x51\\x77\\xfd\\x97\\x6a\\x1b\\xcc\\x12\\x6d\\x9c\\x9c\\x13\\x5c\\x5b\\x42\\x76\\xd3\\x80\\x19\\xc3\\x4a\\xef\\xb7\\xa0\\x22\\x0f\\x7f\\x5a\\xef\\xf3\\x80\\xae\\xd6\\x27\\xb0\\x70\\xc2\\xc9\\xe2\\x15\\x33\\xbb\\x35\\xc0\\x8e\\x39\\x4c\\x85\\xae\\x25\\xe6\\x86\\x29\\x42\\x59\\x9c\\x65\\xdb\\xae\\x59\\x77\\xa5\\x84\\xa8\\x81\\x80\\xe0\\xc8\\xc7\\x1e\\x5a\\x84\\x09\\xe0\\x4e\\xf7\"},\n{{0x45,0xe3,0x4d,0x0e,0xf4,0xc1,0x96,0xfa,0x6d,0x57,0x2b,0x6b,0x17,0x74,0xb5,0x21,0x8f,0x7c,0x32,0x91,0x30,0x4c,0x13,0x50,0x0d,0xf7,0x07,0x0d,0x90,0xe8,0x03,0x9e,},{0x13,0xa7,0x30,0x4d,0xff,0x42,0x33,0x59,0x17,0x7a,0xba,0xfa,0x5e,0x65,0x08,0xd2,0x67,0x69,0xca,0x99,0xcf,0x8a,0xf4,0x5c,0x38,0x3f,0x3f,0xf6,0x34,0x40,0x60,0x03,},{0xb4,0x2c,0x1f,0x92,0x5f,0x4b,0xac,0xcd,0x12,0x9e,0xfb,0x10,0x9d,0xb3,0x54,0xac,0xa3,0x1c,0x68,0x98,0xf4,0xf4,0x51,0x29,0x47,0x49,0xa2,0x6a,0x6d,0xa1,0x67,0x7b,0xd3,0xa5,0xc0,0x41,0x19,0xe3,0x5f,0x47,0x31,0x9f,0x20,0xcf,0xdf,0xc0,0x8b,0xb4,0x52,0x8b,0x21,0x00,0x9e,0x00,0xbd,0x41,0xeb,0xc0,0xf4,0x68,0x63,0xbe,0xd1,0x0b,},\"\\x3d\\x9e\\xd5\\xc6\\x4b\\x75\\xe1\\x35\\xdf\\x2f\\x5e\\x85\\x30\\x0d\\x90\\xf2\\x1b\\x36\\x39\\x35\\xe2\\x81\\x75\\x56\\xfc\\x93\\x11\\x75\\x1b\\xa7\\x53\\x54\\x77\\xde\\xc8\\x35\\x6e\\xc3\\x85\\xef\\xb8\\x2b\\x41\\x40\\x62\\xf3\\x5b\\xb6\\xd3\\xed\\xea\\xfd\\xe3\\x05\\xf9\\x90\\x0a\\x25\\xe9\\x81\\x3c\\x9e\\xe0\\x23\\x7d\\x46\\x40\\x96\\x50\\xcd\\xcd\\xb5\\xdf\\xa2\\x30\\x1a\\x8e\\x26\\x47\\xf8\\xd3\\x81\\x9d\\x86\\xf7\\xb7\\xe3\\x07\\x0d\\x33\\x44\\x0f\\x82\\xc4\\x05\\x4b\\x1a\\xb5\\xed\\xeb\\xeb\\x27\\xf9\\x5b\\x3c\\x4c\\x6f\\xdd\\x46\\x8f\\x21\\x60\\x0f\\x03\\xb3\\x49\\x4d\\xa2\\x00\\xba\\xb9\\x29\\x3c\\x38\\xd0\\x2f\\xc4\\x40\\x48\\xe5\\x2f\\xf5\\xfd\\x0f\\x72\\x17\\xa0\\x4d\\x4c\\xe9\\x12\\xa1\\x80\\xd1\\x62\\x8f\\x36\\x82\\x80\\xb6\\x89\\x26\\x72\\xe8\\xff\\x98\\xd4\\x62\\x9a\\xc2\\x8b\\x60\\xc0\\x2a\\x30\\x1e\\x6c\\x60\\x26\\xc1\\xb9\\xe9\\xef\\x21\\xcf\\x03\\x92\\xdf\\x22\\x50\\x08\\xd5\\xa0\\xe0\\x28\\x4b\\x28\\x26\\x31\\xad\\x17\\x10\\xf8\\x11\\x61\\x56\\x97\\x06\\x6c\\x98\\x29\\x65\\x19\\x94\\x8a\\x7c\\xfe\\xd5\\xae\\xeb\\x45\\x4e\\xe7\\xa6\\x1c\\xc2\\x71\\xbd\\x3d\\x49\\x9b\\xe1\\x7d\\xf0\\x9d\\x3a\\x0e\\x79\\x0e\\xe6\\xb9\\xbd\\x99\\xe1\\xb9\\x19\\xbe\\xd4\\xa0\\x63\\xb8\\xd1\\xa3\\x4f\\x1a\\xfd\\x2e\\x95\\x2b\\x9d\\xfe\\xfd\\x77\\x09\\x69\\xc8\\xb2\\xfc\\x37\\x97\\x7a\\xbb\\x0f\\xee\\x63\\x17\\x25\\x3a\\x23\\xec\\xc9\\x75\\x78\\x16\\x89\\x73\\x33\\x4c\\x8f\\x91\\x76\\x3a\\xb9\\x7f\\x29\\xc4\\x9b\\xae\\xee\\x7b\\x35\\xf3\\xae\\x7f\\x5c\\xd3\\xa4\\xa6\\xe6\\x97\\xef\\x25\\x5a\\x3c\\x2e\\xc0\\xc7\\x52\\xa3\\x39\\x6f\\x69\\xf6\\x63\\xca\\x1f\\xc2\\xb3\\x32\\xdf\\xe6\\xc0\\xfa\\xf7\\x8a\\xfe\\x9c\\x68\\xd9\\x95\\x71\\xe8\\xe8\\x96\\xc5\\x09\\x30\\x85\\xe9\\x86\\x3a\\x27\\x64\\x8a\\x9e\\x58\\xf3\\xa9\\xa8\\x4c\\xbb\\xfe\\x2b\\x41\\xca\\x36\\x33\\xdd\\x5c\\xf6\\xe8\\x2c\\xb7\\x7c\\xec\\xac\\xad\\x8d\\x78\\xb3\\x53\\xf4\\x8d\\xb4\\x2d\\x99\\xc3\\x6b\\xca\\xd1\\x70\\xea\\x9e\\x98\\xab\\xb2\\x78\\x8c\\x33\\xa3\\xc7\\x06\\x26\\x8f\\x36\\x31\"},\n{{0x88,0x8c,0xe2,0xec,0xce,0xda,0x9c,0xa2,0xb9,0x48,0xac,0x14,0x43,0xc2,0xae,0xdd,0x75,0x95,0xaa,0xcf,0x36,0xed,0xaf,0x27,0x25,0x5b,0xde,0x7a,0x69,0x91,0xdc,0xc0,},{0x01,0x6e,0x57,0x2b,0x4f,0x98,0x41,0x7c,0x6e,0xe2,0x97,0xab,0xd7,0x84,0xea,0x48,0x22,0x6f,0xf4,0xfb,0xf0,0x05,0x0a,0x5a,0xde,0x88,0x06,0xe7,0x04,0x6d,0x3b,0xa3,},{0x99,0xd8,0x3f,0x14,0x8a,0x23,0x6e,0xbb,0xef,0x1c,0xad,0x88,0xcb,0x3c,0x76,0x94,0xf4,0x98,0x6c,0x92,0x50,0xe2,0x1c,0x36,0x03,0xa0,0xd9,0x41,0xbf,0xf1,0x99,0xcf,0x77,0xd6,0xce,0x99,0xef,0xdb,0x20,0x53,0x31,0x88,0xd6,0x8a,0xd1,0x33,0xde,0x03,0x3a,0x1f,0xb3,0x46,0x8a,0xbb,0x70,0x6d,0x2b,0x8b,0x4f,0xba,0xc0,0x8d,0xfe,0x03,},\"\\x5c\\x80\\x1a\\x8e\\x66\\x4e\\x76\\x60\\x76\\x0a\\x25\\xa5\\xe1\\x43\\x1a\\x62\\x15\\x9f\\xc3\\xf3\\xaa\\x71\\x37\\x80\\xae\\x7c\\xbc\\xe2\\x3b\\x85\\x64\\x78\\x27\\x99\\xbf\\x2b\\xe4\\x81\\x7e\\xe2\\x92\\x19\\x65\\xba\\xb7\\xe1\\xd4\\x48\\x33\\x82\\x4c\\x16\\x28\\xd4\\x2d\\xce\\xe3\\xe4\\x6a\\xe4\\x2b\\x28\\x16\\xd0\\xa4\\x32\\xa1\\xab\\x0b\\xd2\\x1f\\xcf\\x30\\xad\\xb6\\x3d\\x8d\\xd7\\x65\\x69\\x54\\x43\\x43\\xd0\\x03\\x5c\\x76\\x05\\x22\\xca\\x68\\xbe\\xa7\\x2c\\x40\\x4e\\xdd\\xa1\\xe9\\x09\\x5e\\xc9\\x0f\\x33\\x25\\x68\\x1c\\x6d\\xe0\\xf4\\xc1\\x2d\\x1a\\xfb\\xcb\\xa2\\xc7\\x87\\x1a\\x1b\\x1e\\x1f\\x19\\xc3\\x5b\\x0b\\xed\\x9e\\xc2\\xa8\\x7c\\x04\\x3d\\x36\\xd8\\x19\\x39\\x6b\\xd5\\xd0\\x99\\xe1\\xaa\\x09\\x03\\x91\\x29\\x7c\\x73\\x3f\\x65\\xa8\\xc5\\xd2\\x12\\x0c\\x67\\x63\\x53\\x16\\xfa\\xb2\\x5b\\x4d\\x48\\x47\\xa4\\x5f\\xc3\\xf7\\x6f\\x2e\\x24\\x26\\xdb\\xee\\x46\\x29\\x97\\x50\\x62\\xfc\\xe1\\x4e\\x21\\x89\\xdb\\xa2\\x7f\\xb1\\xde\\xd2\\x45\\x3f\\x00\\x1d\\xeb\\xfa\\xa8\\x99\\xc1\\x16\\x60\\x61\\x2d\\x2c\\xe2\\xad\\x2f\\x76\\x2e\\xa5\\xde\\xe7\\xe7\\x1e\\x58\\xad\\xcd\\xce\\xfa\\x79\\xe8\\xe8\\xb2\\x7f\\xc4\\xcc\\xf8\\x9a\\xab\\xf1\\x76\\xb5\\xd3\\x4f\\x82\\xdd\\x15\\xd8\\x89\\xf9\\xf0\\x87\\xdc\\x9a\\xe8\\xa4\\x2a\\x72\\xf3\\xb8\\x35\\x83\\x61\\x6e\\x17\\x06\\x37\\xcd\\x1a\\xdf\\x38\\xaa\\x65\\x51\\xcb\\xac\\xca\\x36\\x02\\xbd\\xc7\\xae\\x21\\x0c\\x4a\\x44\\x6b\\x3a\\xf8\\xdb\\x27\\x20\\xe5\\x49\\xbb\\xed\\xb8\\xbe\\xd2\\x15\\xae\\x00\\xf1\\x9d\\xa2\\x9d\\x8f\\xb0\\xb6\\x42\\xd2\\x7b\\x2d\\x88\\x57\\x5f\\x0e\\xe8\\x4f\\x3d\\x12\\x9e\\xb7\\x74\\xd2\\x0f\\x53\\x7a\\x1c\\x0f\\xdc\\xf7\\x17\\xbd\\xeb\\xcf\\xe4\\x7f\\x83\\x31\\xa3\\x41\\x86\\x43\\x46\\xfa\\x6a\\x1c\\x6b\\xbf\\xd1\\x78\\x81\\x9e\\x38\\x7a\\x0d\\x54\\x99\\xa6\\x8e\\x81\\xcc\\x9f\\x82\\xad\\x39\\xe3\\x1e\\x4d\\xfe\\x71\\x95\\x2d\\x5e\\xa5\\xcc\\x80\\x52\\xa3\\xce\\xed\\x17\\x51\\xf5\\x9d\\xc7\\xec\\xc9\\x74\\x2f\\xad\\x14\\x4e\\x18\\xdd\\xa8\\xd0\\x58\\x2e\\x74\\xe3\\x9c\\xa8\\xc4\"},\n{{0x61,0x73,0x90,0x85,0x7d,0xc1,0x0c,0xdf,0x82,0xb5,0xc9,0x42,0x61,0xf5,0x8c,0xe2,0xd4,0x4a,0xa2,0xf5,0x7d,0x29,0x8f,0x08,0xa2,0xd6,0xc7,0x4d,0x28,0x14,0x7d,0xaf,},{0x89,0xe0,0xc3,0xe0,0xa0,0xf1,0x30,0xd1,0x91,0x6e,0x0e,0x38,0x49,0xb7,0x28,0x6f,0xa2,0xe3,0xac,0x4c,0x17,0xbd,0x1f,0x71,0x6e,0xe5,0xa7,0x2f,0x02,0x57,0xfb,0x8d,},{0x63,0xe9,0x0a,0x6a,0xfb,0xbb,0xb0,0xee,0x69,0x6b,0xfb,0x56,0xef,0xd6,0x79,0xd6,0x8a,0x98,0x51,0xa8,0x94,0x76,0x40,0xa9,0x7f,0x41,0xf6,0x8e,0xdf,0xea,0xdd,0x21,0x6e,0xd8,0x69,0x8e,0x2e,0x43,0xc8,0x20,0xc9,0x04,0x4c,0xaa,0x7a,0xda,0xab,0x5b,0x76,0x76,0x2b,0x68,0x18,0x31,0xa9,0xf7,0x60,0x47,0x6a,0x84,0x43,0xc4,0x3c,0x06,},\"\\x1f\\xd9\\xe7\\x45\\x3e\\xaf\\xfd\\x7c\\x9b\\x54\\x05\\x56\\x22\\xdd\\xe1\\x70\\xdd\\x58\\xb7\\x1c\\xb9\\x45\\xde\\x75\\x35\\x1d\\x5f\\xce\\xb1\\xf5\\x36\\xbd\\xe2\\x51\\x58\\xf0\\x37\\x86\\x15\\x5f\\x95\\x3d\\xc2\\x07\\xa1\\x70\\x8f\\x90\\xd9\\x5b\\x15\\xac\\xa0\\xae\\xe3\\x09\\x7f\\xdc\\xaa\\xe8\\x5e\\x4a\\xb1\\xc2\\xcd\\xb7\\x05\\xc5\\x3e\\x6c\\x2e\\xd2\\x1a\\x99\\x4b\\x30\\x4a\\x75\\xca\\xf2\\xce\\x4f\\xc7\\xd6\\x1f\\x56\\x1e\\x74\\xe2\\x97\\x39\\x7e\\x2c\\xde\\x5c\\xc6\\x90\\x56\\x94\\x03\\x43\\xaa\\x81\\x37\\x5d\\x0a\\xf1\\x8d\\x17\\xd2\\xf3\\x4c\\x0a\\x71\\xdc\\xf1\\xde\\x3c\\x4f\\xc4\\x88\\xa1\\x4c\\x5f\\xa6\\xb3\\x33\\x7a\\x31\\x74\\xb1\\xda\\x79\\x58\\xfb\\x00\\xbd\\x59\\x55\\x14\\x82\\x21\\x42\\x7c\\x60\\xdb\\xa0\\x41\\x17\\xc8\\x0d\\x24\\x88\\x65\\x6d\\xbd\\x53\\x43\\xde\\x89\\x12\\x87\\xb5\\x0e\\xf4\\xdf\\x98\\x25\\xed\\xa7\\x6b\\x49\\x77\\xf3\\xac\\xd4\\xab\\x6d\\x31\\x02\\xfa\\x56\\x87\\x83\\x06\\xcd\\x76\\x56\\x14\\x91\\xbc\\xfd\\xaa\\x1d\\xa5\\x67\\xe6\\x77\\xf7\\xf0\\x3b\\xae\\x5d\\xbf\\x44\\x26\\xc3\\xc4\\xa6\\xc3\\xd0\\x82\\xf9\\x17\\x8b\\x2e\\xfd\\xd2\\xbd\\x49\\xee\\xe9\\x7e\\xf4\\xdc\\xf3\\xf0\\xf5\\x1b\\xbd\\xef\\xfe\\x5a\\xe6\\x60\\x1e\\x28\\x01\\x95\\x18\\xf8\\x27\\xf0\\x2e\\x51\\xf6\\x67\\x9b\\x87\\x15\\x97\\x8b\\xec\\x3e\\x69\\xd5\\x77\\x15\\x6d\\xd7\\x19\\x95\\x93\\x71\\xba\\xf0\\x34\\x21\\x9f\\xbb\\xd1\\x7a\\x23\\x69\\xa8\\x54\\x14\\x90\\xf6\\xa0\\x20\\x13\\xe3\\x3e\\x74\\xf4\\x76\\x9b\\xe3\\x7a\\xef\\xa4\\xde\\xfb\\x6b\\xfb\\x3f\\x35\\x1c\\x2a\\x26\\x14\\x82\\xc2\\xfb\\xec\\x49\\xf8\\x5f\\x84\\x45\\x45\\x6e\\x8f\\x5a\\x47\\x40\\x30\\xcd\\x72\\xd0\\x95\\xef\\x6a\\x62\\x20\\x30\\xe1\\xe4\\x3a\\x0c\\x5d\\xeb\\xb0\\x34\\x73\\x1d\\x2f\\x5e\\x8e\\x4b\\xa3\\x99\\x0f\\x07\\x7d\\x0c\\x16\\x26\\x49\\xd1\\xfa\\x3e\\xa4\\xfe\\x1e\\x81\\xd7\\x4a\\xa8\\x49\\xe2\\x1b\\x05\\x9d\\x96\\x6c\\xba\\xd4\\xc4\\x93\\xca\\x10\\xba\\xfe\\x7a\\x69\\x24\\x3e\\x3c\\x0a\\x6e\\xbf\\xd1\\x3d\\x69\\x79\\x06\\x30\\x33\\x92\\xba\\x65\\xd4\\xfe\\x06\\xb6\\xa5\"},\n{{0x87,0x7d,0x01,0x74,0x36,0x36,0x9e,0xc2,0x45,0x3f,0xed,0x46,0xe9,0x77,0xd6,0xac,0xc3,0xa7,0xbe,0x60,0xd3,0x13,0x95,0xad,0x6e,0x7e,0xa9,0xe0,0x74,0x80,0xe4,0xc9,},{0x4e,0x65,0x42,0x2f,0xed,0x33,0x4a,0x55,0xe8,0xb6,0x73,0x89,0x3e,0xba,0x7c,0x18,0x1d,0xd7,0x24,0xdd,0xa0,0x02,0x81,0x7b,0x0b,0xae,0x28,0xac,0xdc,0x3f,0x7f,0xc0,},{0x76,0x88,0xf3,0xf2,0x40,0x1e,0xac,0xaf,0x2d,0xd8,0x8e,0x17,0x0f,0xf1,0xc4,0xd7,0xe9,0x48,0x22,0xa7,0x7f,0x6b,0x55,0x0b,0x56,0x9e,0x82,0x15,0x2b,0xbb,0xb4,0x34,0x05,0x7e,0x01,0x23,0x0b,0x05,0xce,0x58,0xee,0x1d,0xee,0x52,0x26,0xb5,0xc7,0xcd,0xbe,0x5a,0x8a,0xde,0x3b,0x94,0x65,0xf5,0x9a,0xed,0x74,0x14,0x5d,0x14,0x33,0x0c,},\"\\x4e\\xd3\\xf5\\xbd\\xbd\\x41\\xd0\\xe3\\xb0\\xa8\\xa7\\xfc\\x37\\x52\\xee\\xa4\\x96\\xd6\\x14\\x16\\x78\\xcb\\xfe\\x06\\x75\\x7f\\x61\\xe1\\xa1\\x68\\xd7\\x61\\xb6\\xda\\x83\\x05\\x2f\\x79\\x94\\x95\\x0d\\x24\\x62\\x6f\\x00\\x4f\\xbe\\x9b\\x8c\\x95\\x62\\xe0\\xc9\\x55\\xfb\\x3b\\x5c\\x08\\xfd\\x2d\\x3d\\x25\\x83\\x93\\xa3\\x49\\x03\\x0c\\x8e\\x15\\x62\\x05\\xb4\\x04\\x83\\x03\\x8b\\xe1\\x95\\x9f\\x1c\\xba\\x49\\x0a\\x87\\xfe\\x13\\x89\\x9e\\x4f\\x37\\x52\\x06\\x3b\\x68\\xfe\\x3e\\x1c\\x50\\x71\\xf7\\xdb\\x00\\x02\\xf0\\x14\\x94\\xb4\\xa3\\xee\\x2e\\x07\\x99\\x2b\\xdd\\x20\\x0d\\xb4\\x31\\x66\\x29\\xee\\x8a\\x95\\xca\\x34\\x7f\\x0b\\x28\\xd6\\x40\\x2a\\x6d\\xa8\\xb5\\x3e\\x6b\\x32\\x58\\x1c\\x36\\x91\\xe1\\x1a\\xe9\\xb6\\xe0\\xf0\\x49\\x48\\x94\\xe6\\x49\\xa9\\x2d\\x03\\xeb\\x49\\xc4\\xd6\\x83\\x3f\\xa1\\xf5\\x4f\\x8d\\xcd\\x91\\xd0\\x69\\x36\\xa6\\xe6\\x2d\\x49\\x1e\\x2c\\xea\\x46\\xdd\\x07\\xd9\\xf0\\x2d\\x32\\x54\\xb8\\x50\\xbc\\x97\\x49\\xf2\\x58\\xa6\\x1a\\xd3\\xb9\\xcc\\x24\\xb0\\x32\\x87\\x33\\x1b\\x85\\xa2\\x41\\x43\\xaa\\xf8\\xfc\\xcc\\xac\\x5f\\x18\\xbf\\xc7\\x2d\\xec\\x75\\xc0\\x23\\x35\\x16\\xaa\\x6e\\x45\\x89\\xc7\\x8c\\x66\\x5a\\x18\\x6e\\xd9\\x02\\x09\\x1d\\xf9\\x7b\\x0d\\x04\\xe8\\x3a\\x2d\\x74\\xd7\\x89\\x89\\x1a\\xea\\x2c\\xac\\xf8\\x13\\xff\\xfb\\x5e\\xfa\\xf7\\x8d\\xbc\\xd7\\xaf\\x54\\xef\\x55\\xc7\\x7b\\x1c\\x4c\\x8a\\xce\\x9e\\x92\\x78\\xad\\xc2\\x3d\\x76\\xc7\\x79\\xd6\\x4b\\x3b\\xbb\\xd1\\xfb\\x33\\xb0\\x98\\x36\\xea\\x64\\xa7\\x1e\\x47\\x11\\xe8\\x9e\\x8d\\xa0\\xf7\\x09\\x21\\x33\\x42\\x17\\x6a\\xe2\\x2c\\x6e\\x78\\x52\\xc3\\x97\\x3b\\x60\\xd9\\xf9\\x88\\x89\\xb4\\x42\\xaa\\x48\\xd7\\xbf\\xdf\\xde\\xf6\\x4c\\x36\\xc5\\x86\\xc4\\xfb\\x2a\\xd2\\xe2\\x7e\\xbe\\x47\\x9f\\x6d\\x72\\x2f\\x06\\x9f\\xd6\\x10\\x6b\\x0d\\x08\\x97\\x5d\\x5f\\x72\\x15\\x47\\xc3\\xb9\\xc5\\x2f\\x9f\\xc5\\xf4\\x5b\\xb4\\x5b\\x5b\\x63\\x21\\x88\\xe8\\x06\\x26\\x51\\x8a\\x79\\x05\\x6b\\xdc\\x4e\\xe1\\xd2\\xbe\\x6c\\x65\\x42\\xa2\\x1f\\xad\\xea\\x92\\xc6\\xdf\\xb7\\x76\"},\n{{0x4f,0x0b,0x36,0x07,0xd7,0x0b,0x0f,0x26,0x98,0x32,0x7e,0xf4,0xf1,0x98,0x2c,0x5b,0x4b,0x94,0xbe,0x78,0xf5,0x0c,0x76,0xf4,0x3b,0xd6,0x42,0xf1,0xf0,0xed,0xe3,0x9b,},{0x94,0x2b,0x43,0x08,0x9f,0xd0,0x31,0xce,0xc0,0xf9,0x9e,0x5e,0x55,0x0d,0x65,0x30,0x7f,0xb6,0xc3,0xe7,0x93,0x44,0x9f,0xb3,0x90,0xff,0x73,0x0f,0xff,0xd7,0xc7,0x4b,},{0xf3,0x96,0xa1,0x1f,0x2f,0x03,0xc6,0x14,0x39,0x68,0x4f,0x79,0x00,0x1b,0xd4,0xf3,0x46,0xa3,0x48,0xdc,0xf1,0xd3,0xbe,0xb2,0xd3,0xbf,0xe3,0x3e,0xa7,0x3a,0x5a,0xd4,0xeb,0x97,0x50,0x6a,0xcf,0xbf,0xfb,0x78,0x4e,0x77,0x54,0x81,0x89,0xcd,0x59,0x9f,0x8c,0xcf,0x17,0x35,0x5d,0xde,0x80,0xe7,0x50,0x24,0xef,0x2a,0x78,0xd5,0xfa,0x03,},\"\\x9f\\x70\\x0a\\x1d\\x25\\x60\\xf6\\x9d\\x9b\\xc1\\x05\\xbc\\x83\\xbf\\xf5\\x39\\xe4\\x25\\x8c\\x02\\x48\\x60\\x20\\x13\\xa9\\x59\\xb9\\x78\\xa1\\x9c\\xc2\\x73\\x28\\x0d\\x90\\xc0\\x17\\x80\\x89\\x57\\x8b\\x50\\x51\\x8e\\x06\\xad\\x1e\\xab\\x79\\x0f\\xfe\\x71\\x0c\\x63\\xd7\\x88\\x87\\xa9\\x55\\x69\\x14\\x4f\\x3e\\x58\\xa8\\x83\\x7f\\x93\\xdd\\x51\\x6f\\xcd\\xdd\\x22\\xbc\\x97\\xa7\\xf1\\x44\\x11\\xd4\\x24\\xb2\\xe8\\xe9\\xaa\\x7c\\x28\\x01\\x19\\xad\\x94\\xce\\x92\\x53\\x3f\\xc7\\xfe\\xa6\\xc6\\x62\\x48\\x64\\x4a\\xc3\\xe1\\xbe\\xef\\x25\\x53\\xa6\\xf6\\x1e\\x91\\xb9\\x37\\x9b\\x0f\\xe0\\xc6\\x8b\\x40\\x68\\x14\\x55\\xb3\\x11\\xf4\\x0d\\xf0\\xc9\\x7f\\x53\\xfc\\x95\\x42\\x42\\xc3\\x75\\xe7\\x70\\x8d\\x61\\xba\\xd9\\xf5\\x12\\x96\\x24\\x72\\x74\\xfa\\x01\\xa7\\x32\\x8f\\xa5\\x00\\x9d\\x99\\x95\\xf5\\x01\\xae\\x86\\x83\\x55\\x2b\\x11\\xa4\\x9d\\x26\\x38\\x11\\x67\\x23\\xb1\\x31\\x94\\x50\\xa9\\x01\\x38\\xd2\\x78\\xcd\\x95\\x12\\xb8\\x0c\\xa5\\x79\\x2e\\xd1\\x6c\\x68\\x3b\\xef\\x92\\xec\\x87\\x88\\x4c\\x9f\\x07\\xf1\\x37\\xdc\\x47\\xa1\\x31\\x46\\xe5\\x11\\x06\\x5c\\x2e\\x1b\\x4b\\x80\\xef\\xde\\x88\\xae\\x12\\xe2\\x94\\x31\\xbe\\xb7\\xae\\xe3\\x65\\xc1\\x6d\\x80\\x50\\x6b\\x99\\xaf\\xa6\\xa1\\x40\\x6e\\xdb\\x06\\x17\\x66\\x87\\x58\\x32\\xdb\\xa4\\x73\\xe5\\x19\\xdd\\x70\\x18\\xf4\\x02\\xeb\\x1b\\xb3\\x01\\x4b\\x7c\\xee\\x4f\\x02\\xe9\\x80\\xb1\\xb1\\x71\\x27\\xe7\\xd2\\x5d\\xfe\\x0c\\x16\\x8c\\x53\\x44\\xf1\\xc9\\x00\\x44\\xf8\\x27\\x70\\x7d\\xca\\x03\\x07\\x0e\\x4c\\x43\\xcc\\x46\\x00\\x47\\xff\\x62\\x87\\x0f\\x07\\x5f\\x34\\x59\\x18\\x16\\xe4\\xd0\\x7e\\xe3\\x02\\xe7\\xb2\\xc2\\xca\\x92\\x55\\xa3\\x5e\\x8a\\xde\\xc0\\x35\\x30\\xe8\\x6a\\x13\\xb1\\xbd\\xfa\\x14\\x98\\x81\\x30\\x98\\xf9\\xba\\x59\\xf8\\x18\\x7a\\xbc\\xaf\\xe2\\x1b\\xa0\\x9d\\x7c\\x4a\\xaa\\x1a\\xd1\\x0a\\x2f\\x28\\x33\\x4a\\xb5\\x39\\x96\\x14\\x7c\\x24\\x59\\xc0\\x1b\\x6a\\x10\\x83\\x9e\\x03\\x01\\x12\\x3d\\x91\\xa3\\x5c\\xed\\x7a\\xf8\\x9a\\xfb\\xac\\x7d\\x9c\\xf8\\xac\\x9a\\x38\\xce\\xeb\\xef\\x83\"},\n{{0xb8,0xa0,0x01,0x0c,0x78,0x4d,0x8d,0x00,0x2a,0x31,0xda,0x11,0xd0,0x22,0xd3,0x01,0x88,0xa4,0x19,0x7a,0x1d,0x5f,0x14,0xea,0x4c,0x0d,0xab,0x29,0xa2,0xe4,0x06,0x68,},{0x8b,0xdc,0x63,0xe5,0x0b,0xed,0xe1,0x3c,0x91,0xa4,0x1e,0x4b,0x4b,0x78,0x57,0xb9,0xe5,0x53,0xf4,0x84,0xe3,0xc1,0xec,0x16,0x7d,0xc0,0x4c,0x28,0x1e,0xa8,0x66,0x22,},{0xb3,0xf6,0xcf,0x4c,0x0e,0x0f,0x90,0x74,0xff,0x2c,0x2c,0x47,0xe1,0x63,0x20,0x2f,0x1e,0x9d,0x6e,0xe1,0x17,0xcf,0x75,0x76,0x33,0xe4,0xab,0xe7,0x44,0x23,0xaa,0x70,0x00,0x8a,0xda,0x15,0x09,0xec,0x1d,0xc1,0x17,0xc1,0xc2,0x30,0xe9,0xb2,0x37,0x86,0xf3,0xd0,0xf2,0x9b,0x73,0xaa,0x28,0x45,0x36,0xe9,0x58,0x01,0x06,0xa8,0xa7,0x0c,},\"\\x5c\\x6c\\xcb\\x29\\x8b\\xe2\\x16\\x80\\x8b\\x81\\x1e\\x56\\xd9\\x72\\xf4\\x56\\xb6\\x9a\\xd3\\x95\\x94\\xee\\xe3\\x54\\x70\\x1c\\xa6\\xb3\\xe3\\x8d\\x1f\\x41\\xa3\\x59\\xe5\\x51\\x2a\\xf9\\x8a\\x3a\\x08\\x73\\x26\\x5f\\xe5\\x19\\x1f\\x4f\\x2e\\xca\\xf6\\x6b\\xee\\x75\\xa3\\xac\\x0b\\x71\\xa4\\xdd\\xf2\\xa7\\x59\\xeb\\xdd\\xdb\\xd8\\x8a\\x6a\\x1c\\x6f\\xd0\\xfc\\xf7\\xd7\\xcb\\x92\\xa8\\x4e\\x33\\x07\\xb4\\xa4\\xf9\\x8c\\x71\\x0a\\xbf\\x4f\\x55\\x3d\\xee\\x74\\xf6\\x52\\xd2\\xac\\x64\\xbc\\x30\\xf7\\x2b\\xf4\\x35\\x4e\\xf7\\xe8\\x06\\xa1\\x90\\x71\\xa0\\x51\\xbc\\xfc\\xfb\\x27\\xe3\\x7f\\xdd\\xd4\\x1e\\xce\\xae\\xc1\\x75\\x8e\\x94\\x69\\x5c\\x67\\x0e\\xf4\\xc5\\xa5\\x90\\x21\\x78\\x32\\x9d\\xb9\\x58\\x5c\\x65\\xef\\x0f\\xa3\\xcd\\x62\\x44\\x9b\\xb2\\x0b\\x1f\\x13\\xae\\xcf\\xdd\\x1c\\x6c\\xf7\\x8c\\x51\\xf5\\x68\\xce\\x9f\\xb8\\x52\\x59\\xaa\\xd0\\x5b\\x38\\xc6\\xb4\\x85\\xf6\\xb8\\x60\\x76\\x92\\x8d\\xdb\\x4e\\x20\\x36\\xf4\\x5e\\x7b\\x9c\\x6a\\x7f\\xf2\\x4a\\xe1\\x77\\x60\\x30\\xe2\\x57\\x68\\x25\\x01\\x9a\\xb4\\x63\\xeb\\xf7\\x10\\x3a\\x33\\x07\\x20\\x33\\xea\\xcb\\xb5\\xb5\\x03\\xf5\\x32\\x66\\xaf\\xb8\\x2f\\x9b\\x24\\x54\\xb8\\xdc\\x05\\x7d\\x84\\xf3\\x0d\\x9d\\x2c\\xb7\\xc3\\xa3\\x1a\\x7d\\xbd\\xfb\\xa5\\xb8\\xe4\\x92\\x31\\xc2\\x31\\x39\\x6c\\x47\\xca\\x04\\x2c\\x8e\\x48\\xa1\\xa5\\xe3\\xec\\x9a\\xfe\\x40\\x20\\x59\\x53\\x90\\xf9\\x99\\x0d\\xfb\\x87\\x4e\\x08\\x25\\xae\\x9a\\xe5\\xe7\\x52\\xaf\\x63\\xaf\\x6f\\xd3\\xe7\\x87\\xe7\\x5e\\x8d\\x8d\\xc4\\xc6\\x63\\x02\\x27\\x7a\\xc0\\x1b\\x30\\xa1\\x8a\\x56\\xcb\\x82\\xc8\\xa7\\xeb\\xdc\\x91\\x5b\\x71\\x53\\x25\\x5a\\x1f\\xed\\xc4\\x92\\xe4\\x96\\x60\\x26\\x2b\\xb2\\x49\\x78\\x0d\\x17\\x3e\\x1f\\xd2\\x0d\\x18\\xc4\\xf6\\xb0\\xb6\\x9a\\xa2\\xec\\xa0\\x24\\xbf\\x3c\\x80\\xd7\\xd5\\x96\\x2c\\xc4\\xa1\\x29\\xa7\\x94\\x3b\\x27\\xf3\\x3c\\xc7\\x99\\xa3\\x60\\x45\\x54\\x12\\x75\\xa2\\xcd\\xb9\\x2a\\x40\\xe4\\x85\\xba\\x8b\\x73\\x7a\\x04\\xb4\\x3d\\x29\\xc3\\xe2\\x5f\\x76\\xcb\\x3d\\x93\\xa6\\xb9\\x44\\x61\\xf8\\x8f\\x56\\x96\"},\n{{0xef,0xc8,0x6c,0xbe,0x40,0x36,0x3a,0xbf,0xbb,0x2a,0x4b,0x1f,0xcc,0xe5,0xfd,0x60,0x84,0xda,0x96,0xe7,0xe8,0x14,0xde,0x71,0xaa,0xdf,0x9a,0x61,0x8f,0x30,0x36,0x25,},{0x22,0xf2,0x95,0xce,0xe7,0x27,0xd2,0x8d,0x2b,0x93,0x17,0x15,0x3e,0x7d,0x94,0x12,0xda,0x10,0x65,0xc1,0xb1,0x6a,0xe2,0xa2,0x51,0xdd,0x1f,0xb4,0x31,0xc6,0x2b,0x01,},{0xf8,0x81,0x83,0x10,0x22,0x8c,0xa7,0x61,0x11,0x52,0x4c,0xe9,0x4b,0xfc,0xb0,0x24,0x6e,0xa6,0x35,0x08,0xce,0xe9,0x30,0x65,0x92,0xb2,0xf7,0x75,0x48,0xed,0xef,0xcf,0x76,0xbd,0x14,0x54,0x50,0x8e,0xa7,0x15,0x04,0x2c,0xec,0x16,0x9c,0xea,0x51,0x15,0xab,0x54,0x23,0x5c,0xb1,0x09,0x7b,0x10,0x70,0x2a,0xa3,0x83,0x78,0x02,0x8e,0x0c,},\"\\x9e\\x4f\\xa4\\x5d\\xc0\\x26\\x71\\x0f\\x6b\\xef\\x4e\\xd0\\xf0\\x7c\\x54\\x4b\\x0b\\xb0\\xd8\\x8f\\xa7\\x9e\\x71\\x77\\xd8\\x44\\x8b\\xc2\\x09\\xd7\\x1c\\xfe\\x97\\x43\\xc1\\x0a\\xf0\\xc9\\x93\\x7d\\x72\\xe1\\x81\\x9e\\x5b\\x53\\x1d\\x66\\x1c\\x58\\xc6\\x31\\x41\\xce\\x86\\x62\\xc8\\x83\\x9e\\x66\\x4d\\xb7\\x9e\\x16\\xc5\\x4d\\x11\\x3a\\xbb\\x02\\xa7\\x5b\\xdf\\x11\\xb3\\x45\\x3d\\x07\\x18\\x25\\xbc\\x41\\x57\\x41\\xe9\\x94\\x83\\x54\\x6b\\x8e\\x1e\\x68\\x19\\xde\\x53\\x01\\x70\\x92\\xe4\\xef\\x87\\x1f\\x1c\\xa0\\xd3\\x50\\x8f\\x93\\x78\\x28\\xa4\\x66\\x7d\\xb1\\x1f\\xff\\xf9\\x41\\x6e\\xeb\\xb9\\x4b\\xf9\\xb8\\x4d\\x65\\x46\\x03\\x09\\x48\\x34\\xa9\\x9c\\xa7\\x0b\\x90\\xf5\\x62\\xa8\\x68\\x23\\x62\\x4d\\xfe\\x9c\\xb2\\xf9\\xe8\\x8c\\x17\\x3f\\x13\\x46\\x4d\\x4c\\xe2\\x55\\xf2\\x22\\xdb\\x50\\xdd\\x63\\xab\\x42\\x46\\x57\\x34\\xe7\\x52\\x95\\xc0\\x64\\xb6\\x4c\\xc3\\xf1\\x5e\\x62\\x37\\xe3\\x7f\\x33\\xd6\\x15\\xf7\\xc2\\x43\\xe4\\xba\\x30\\x89\\x60\\xcf\\xd4\\x39\\x34\\x02\\x52\\x55\\x00\\xbb\\x79\\x02\\x97\\x0b\\x39\\x31\\xd4\\x8b\\x35\\x66\\x6a\\x2d\\x4d\\x2a\\xb0\\x8f\\xa1\\x2a\\xf3\\x66\\xa0\\x04\\x34\\x6c\\x9d\\xd9\\x3d\\x39\\xfb\\x1b\\x73\\x40\\xf1\\x04\\xe5\\x1f\\xed\\xbb\\x53\\x36\\x05\\xb5\\xff\\x39\\xcf\\x6d\\x59\\x51\\x3f\\x12\\x85\\x6d\\xcf\\xa1\\x98\\xd7\\x93\\xb0\\xfc\\x87\\x5c\\xde\\xa0\\x74\\x1f\\x14\\x55\\x74\\x6d\\x8a\\x19\\xc3\\xe9\\xd9\\x28\\xf0\\x02\\x1b\\x01\\xc2\\x51\\x31\\x81\\x1e\\x48\\xc3\\xc7\\x5c\\x6f\\x41\\x42\\x2a\\x88\\x10\\xc6\\xc8\\x1f\\x35\\xb4\\x54\\xee\\xae\\x8c\\xd1\\x7c\\xf3\\xf2\\xe6\\xf0\\xbc\\xd9\\xf2\\x90\\x98\\x4f\\x49\\x65\\x78\\x62\\x3a\\xb8\\xe2\\x73\\x8d\\x2d\\x10\\x84\\x0e\\xb9\\x1d\\x10\\x1c\\xb4\\xa2\\x37\\x22\\xb7\\x2e\\x3d\\xd1\\x85\\x44\\x0c\\x3b\\x9f\\x44\\xd4\\x6a\\x39\\x3a\\x34\\xc1\\x87\\xa2\\x0d\\x61\\x0b\\xb6\\x98\\xc5\\x05\\x31\\x74\\x1e\\xfe\\x96\\x32\\x35\\x12\\x32\\x98\\x00\\x77\\x2a\\x40\\x80\\x65\\xa7\\xef\\x8e\\x4e\\x41\\x05\\xeb\\x1f\\x5b\\xf6\\xd3\\xfd\\x6b\\x21\\x7f\\xd8\\x36\\xd8\\x9f\\x53\\xb9\\x6f\\x45\"},\n{{0x33,0x55,0x6c,0x60,0xde,0x2f,0x2c,0x9a,0x93,0x03,0xb9,0x9a,0xdd,0x37,0x85,0x92,0x06,0x05,0x05,0xf8,0xe4,0x98,0x61,0x08,0x5a,0x4b,0x15,0xf0,0x72,0xa7,0xef,0x28,},{0x23,0x1e,0xc8,0xcd,0x84,0x58,0x59,0xf6,0x99,0x61,0x27,0x51,0x19,0xdb,0xe4,0xf7,0x15,0xe5,0xec,0x5a,0xa9,0x8b,0xb8,0x74,0x16,0x75,0xb3,0xc2,0xd0,0xc8,0x9f,0xee,},{0xe0,0x6a,0x7a,0x41,0x44,0x57,0xbb,0xbe,0xf2,0xba,0xc3,0x77,0x5c,0xca,0xd0,0x87,0xda,0xcb,0x1f,0xa4,0xbf,0x93,0x88,0x94,0xe8,0xc9,0x29,0x11,0x8e,0x09,0xe6,0x78,0xdd,0x19,0x93,0x8b,0xc8,0x8f,0x43,0xed,0x0f,0x7d,0x31,0xcc,0x6a,0x0e,0x60,0x2c,0x4e,0x4d,0x1f,0xee,0x33,0xd4,0x1e,0x74,0xa1,0x19,0xfa,0x2d,0x1e,0x4e,0x34,0x0f,},\"\\x96\\xaf\\x54\\x0e\\xa2\\xb1\\x92\\x3f\\x5f\\xd0\\xaa\\xd3\\x21\\xac\\x03\\x20\\x70\\xc2\\xd6\\x5b\\xa1\\x3d\\x16\\x4e\\x75\\xc3\\x46\\x97\\x58\\xfc\\xf3\\x1b\\xb3\\x16\\x55\\xcb\\x3a\\x72\\x1f\\x9c\\xb3\\x4b\\xe2\\xc9\\x0c\\x77\\xeb\\x65\\xbe\\x37\\xf6\\x06\\xd3\\x2a\\x91\\x7a\\x4c\\xb9\\xa7\\x09\\xac\\x07\\x05\\x22\\x99\\x30\\xef\\x6e\\xb6\\xfd\\xb0\\xfa\\x3c\\x0f\\xd3\\xa9\\x0c\\xe1\\x71\\x67\\x4e\\xe3\\xed\\x06\\x35\\x4b\\xaf\\xc3\\xc7\\x07\\x54\\x67\\xa5\\x74\\x45\\xb8\\x03\\x85\\x64\\x04\\x47\\x90\\x2b\\xe3\\x92\\x62\\x89\\x4b\\x1f\\x64\\xfe\\xa5\\x82\\x87\\xdc\\x32\\x2d\\x19\\x87\\x59\\x72\\xa7\\xc8\\xbe\\x91\\xd3\\x1f\\x02\\x1c\\x70\\xeb\\x68\\x2f\\xdf\\x11\\xa1\\x0f\\x8f\\x58\\x2a\\x12\\x6e\\x06\\x47\\x94\\x83\\x8c\\x69\\xfd\\xf6\\x4f\\x5b\\x6e\\x8b\\xa5\\x9d\\x48\\xb4\\x38\\x4f\\x8e\\x9f\\xb5\\xc0\\x87\\xcc\\x77\\x38\\x29\\x5c\\xd3\\x23\\x44\\xba\\x3b\\x69\\x7e\\xe6\\xb6\\xa8\\xb7\\x8e\\xe7\\xa9\\x57\\x5c\\x97\\x97\\x2a\\x4d\\x1b\\xb1\\x84\\x86\\xf9\\x03\\x7a\\x0f\\x3c\\x6f\\x47\\x1a\\x90\\xf8\\x64\\x98\\xdb\\xc0\\xdf\\x52\\x32\\xc0\\x7e\\x8c\\x01\\xb6\\x90\\xbe\\xe7\\x53\\x02\\x99\\x2a\\x7a\\x36\\xfb\\x44\\x37\\xc2\\x5a\\x8b\\xf5\\xe3\\x4c\\xf7\\xd5\\xb5\\x55\\x72\\xc7\\x00\\xa0\\x79\\x84\\x8d\\x38\\x13\\x64\\xf9\\x94\\x6a\\x91\\xeb\\x16\\x03\\xff\\x3d\\xe5\\xeb\\xdd\\x52\\x3b\\xd9\\x25\\x64\\x81\\x8e\\x23\\x7a\\x53\\xe8\\xf5\\x22\\xde\\xaa\\x2c\\x29\\xb8\\x97\\xe9\\x61\\x58\\x6e\\x10\\x0e\\xd0\\xfc\\x0a\\xd7\\x0d\\x16\\x09\\x34\\xe6\\x94\\x02\\x7e\\x5c\\x95\\x79\\x20\\xbc\\x05\\x46\\xe9\\x01\\xbe\\x39\\xa8\\x45\\x35\\x59\\x7e\\x1f\\x28\\x0c\\x22\\x22\\x67\\xab\\xe9\\x7f\\x41\\x20\\x5d\\x81\\x71\\x82\\x0d\\xd2\\xfa\\xaf\\xc0\\x69\\x94\\x19\\x32\\x1a\\x91\\x60\\xf6\\x9b\\x99\\xfd\\x41\\x18\\x09\\x45\\xb6\\x2d\\x2d\\xd1\\x05\\xcc\\x7b\\xbe\\x82\\x1d\\x28\\x60\\x5e\\x09\\x8e\\xdf\\xa8\\xb2\\x30\\x9a\\xeb\\x05\\x34\\xe7\\x56\\x37\\x7f\\x59\\x93\\x7c\\x67\\x46\\x3f\\xd8\\x7c\\x8b\\x92\\xab\\x58\\x11\\x9c\\xf4\\xce\\x6c\\x66\\x5a\\xf5\\x72\\xfb\\xae\\x1d\\xe4\\xa2\\xcc\\x71\"},\n{{0x7a,0x5c,0x74,0x31,0x4e,0x11,0x83,0x33,0x4a,0x4b,0x62,0x26,0xb9,0xa8,0x2d,0x70,0xfc,0x2a,0x12,0x4e,0x3f,0x87,0xdb,0x6a,0x22,0x83,0xee,0x05,0xb6,0x8e,0x34,0xe0,},{0xbe,0xae,0x7d,0x3d,0xd9,0x7c,0x67,0xf6,0x27,0x3b,0xfa,0xa0,0x66,0x13,0x1f,0xed,0x8a,0xce,0x7f,0x53,0x5f,0xe6,0x46,0x4e,0x65,0x79,0x1c,0x7e,0x53,0x98,0x57,0x6c,},{0xc2,0xab,0x1f,0x6f,0x51,0x14,0xa8,0x4f,0x21,0x85,0x02,0x58,0x2c,0x56,0x7b,0x37,0xa8,0xbd,0xbc,0xdf,0x63,0x40,0xfa,0x46,0x22,0x87,0x3b,0xe8,0x91,0x06,0xf0,0xa9,0x0b,0x48,0x29,0x50,0x5f,0x72,0x12,0x9d,0xf0,0xab,0x3d,0x85,0x13,0x26,0x87,0x74,0xa3,0x4d,0xf3,0xad,0x21,0xce,0x25,0x4b,0x46,0x44,0x88,0xad,0xdd,0x6c,0x9b,0x04,},\"\\x98\\xba\\xc6\\x72\\x47\\x55\\x91\\x29\\x92\\xad\\xc2\\xa4\\x8b\\x54\\x42\\x37\\x6f\\x2d\\x92\\x79\\x97\\xa0\\x40\\xfb\\x98\\xef\\xe5\\x44\\xeb\\x0c\\x8e\\x18\\x66\\xb9\\x61\\x6e\\x29\\x8d\\x33\\x60\\x31\\x6e\\xd9\\x76\\xbd\\x94\\x6a\\x41\\x1f\\xdd\\x3a\\x6b\\x62\\x5c\\x0c\\x1a\\x37\\xaf\\x0f\\x41\\xcf\\x65\\x69\\xa7\\x88\\x4a\\xb8\\x46\\x74\\x91\\xa9\\x87\\xdf\\x3e\\xa7\\xa0\\xb7\\xeb\\xc4\\x69\\x25\\x69\\xa3\\x4c\\xe3\\xa2\\xea\\x35\\x03\\x49\\x5b\\x2c\\x02\\xd4\\x9d\\x7d\\x7d\\xb5\\x79\\xd1\\x3a\\x82\\xcf\\x0c\\xf7\\xa9\\x54\\x7a\\x6e\\xae\\xbe\\x68\\xe7\\x26\\x7d\\x45\\xa6\\x0b\\x8d\\x47\\x72\\x45\\x52\\x28\\xcc\\xa4\\x03\\x6e\\x28\\x2e\\x1a\\x12\\x16\\xf3\\x4c\\xef\\x7e\\xa6\\x8f\\x93\\x82\\x70\\xbd\\xb0\\x42\\x93\\xc8\\x85\\xd0\\x05\\xf9\\xf7\\xe6\\x38\\xa8\\xb4\\xea\\xd2\\x62\\x6c\\x09\\x45\\x17\\x4f\\xf2\\xa3\\xe2\\xd6\\xe1\\x5a\\x4c\\x03\\x38\\xc0\\x9e\\x12\\x60\\xf0\\x92\\x8c\\xa9\\xd3\\x49\\x98\\x24\\xf3\\xfe\\xdc\\x47\\x85\\xda\\x49\\xc5\\xc3\\x4a\\x56\\x85\\x5e\\x24\\x1f\\xac\\xc6\\x34\\x7a\\x39\\x9d\\xdc\\xac\\x43\\x99\\xa8\\xb1\\x58\\x19\\x8c\\x15\\x14\\x61\\xa3\\xb1\\x89\\xe5\\x8e\\xc1\\xf7\\xef\\xcf\\x2a\\xb2\\x03\\x1f\\xb1\\x7b\\x6f\\x03\\x5b\\xa1\\xf0\\x92\\xe9\\xee\\xe2\\xe9\\x2c\\x2d\\x6c\\xc2\\x03\\x22\\x87\\xf8\\x54\\xb4\\x1e\\x70\\xfc\\x61\\xc8\\xd1\\x1a\\x2e\\x4f\\x07\\x08\\xf0\\x2e\\xeb\\xd0\\x2e\\x8c\\x7e\\x8c\\x7b\\x38\\xa5\\x7b\\xfa\\x1a\\x74\\x5f\\x3a\\x86\\xc2\\x39\\x09\\xf6\\xf8\\x9a\\xb1\\x6c\\xe7\\xe1\\x81\\x3c\\x1d\\x20\\x14\\x7f\\x31\\xb4\\xcf\\x2a\\xd0\\xb6\\x06\\xfb\\x17\\xe5\\xac\\x1a\\xb5\\x1e\\xf4\\xa7\\xd8\\x09\\x3c\\xee\\x9a\\x65\\x5f\\x47\\x1d\\xc5\\xb1\\x46\\xbd\\x1b\\x93\\xe5\\x40\\xa3\\xd3\\xd3\\xe2\\xde\\x81\\x05\\x91\\x1c\\x10\\xd6\\xab\\x5f\\xf7\\x9c\\x2d\\x06\\x02\\x7f\\x7a\\x54\\x56\\x1f\\x20\\x71\\x41\\x4b\\xd3\\x30\\xa8\\x78\\x54\\x42\\x25\\x1c\\x81\\x0e\\x23\\x2f\\x83\\xc3\\x67\\xf0\\xbe\\x77\\x99\\xa9\\x3f\\x52\\x38\\xf7\\xf1\\x7b\\x5b\\xe8\\x29\\xfd\\x89\\x12\\x3c\\x04\\x83\\x3a\\xf8\\xb7\\x7e\\x5a\\x43\\x63\\x04\\x7c\\xec\\xa7\"},\n{{0xda,0x80,0x06,0xad,0xc4,0x92,0xca,0x5d,0xc8,0x6c,0x29,0x59,0x43,0x7a,0x75,0xde,0xb6,0x12,0x0f,0xf7,0x87,0xd2,0xec,0xb9,0xc2,0x0c,0x30,0xb5,0x2c,0x26,0xbc,0x41,},{0xff,0x11,0x3b,0xf0,0xaa,0x58,0xd5,0x46,0xf2,0x38,0x5d,0x44,0x4e,0xcb,0x78,0x88,0xf8,0xca,0xba,0x43,0xa1,0x74,0xa8,0x9f,0xd6,0x06,0x5f,0x2b,0x7d,0xc1,0x7b,0xf0,},{0x1f,0x53,0x75,0xdc,0xb3,0xad,0x2b,0xaa,0xff,0x95,0x6d,0x85,0x54,0xec,0xb4,0x24,0x17,0x6b,0xe9,0xa6,0xeb,0x9e,0xa5,0x4e,0x81,0x4e,0x0a,0x73,0xdf,0x2a,0x5d,0x84,0x8a,0xda,0x26,0xba,0x8e,0x18,0x05,0xcd,0x51,0xc5,0xe1,0x69,0x50,0xc1,0xff,0x7d,0x4d,0x27,0x64,0xda,0xa6,0xf4,0xc7,0x50,0x2f,0xb8,0x65,0xcb,0xe5,0x5a,0xaf,0x0b,},\"\\x3e\\xb4\\x32\\x4d\\xbc\\x01\\x49\\xd2\\xe7\\xd6\\xdf\\x63\\x2b\\xb0\\xcb\\xe9\\xa9\\xf6\\xdf\\xa8\\x3e\\x22\\x7f\\xc0\\x7b\\xde\\x1b\\x57\\x7b\\x36\\x11\\xfb\\x92\\x1c\\x9f\\x83\\x13\\xf0\\x68\\xe6\\x29\\x5d\\x49\\x13\\xa8\\x19\\x6b\\xe5\\x30\\xf6\\xa0\\x1f\\x57\\xc0\\x9c\\x02\\x84\\x91\\x44\\x4b\\x78\\x47\\x20\\xe9\\x09\\xea\\x1f\\xb6\\x9c\\x1c\\x1d\\xd6\\x30\\x44\\x00\\x32\\x7b\\x77\\x31\\xb3\\x3c\\xc4\\x6d\\xeb\\x04\\x6c\\xda\\xb6\\xad\\x1b\\x53\\xf1\\x74\\x9a\\x0c\\x65\\xcb\\x9a\\x7e\\x37\\x6f\\xfa\\x02\\x23\\x0f\\x53\\x65\\x84\\xae\\xa2\\x43\\xc6\\x39\\x10\\x3a\\xdb\\xba\\x76\\x43\\x21\\x64\\x9d\\x7e\\x01\\x26\\xf8\\x2e\\x0b\\x4f\\xd9\\xdc\\xb8\\x6c\\x73\\x1c\\xbc\\xc5\\x17\\xf2\\x01\\x68\\x41\\xe9\\x16\\xbc\\xd5\\xfd\\xe8\\x71\\xdc\\x09\\x8c\\xd9\\x13\\xdc\\x54\\x62\\x84\\xd1\\xb2\\x16\\x5c\\x63\\xe8\\x8f\\x32\\xa2\\x78\\x9a\\x50\\x08\\x56\\x37\\x1b\\x50\\xd2\\x2f\\xb8\\xc8\\x7d\\x1a\\x3c\\xae\\xdc\\xdf\\xd0\\x1e\\xe5\\xf8\\x70\\xa5\\x3c\\x28\\x41\\x81\\xd6\\x32\\xec\\x66\\xd4\\x8b\\x6b\\xdd\\x56\\x46\\xac\\x39\\xc9\\xe7\\x53\\x38\\xa5\\x20\\x21\\x20\\x62\\xbc\\x34\\x66\\xef\\x5c\\x58\\x76\\x55\\x70\\xb9\\x05\\xf6\\x3a\\x93\\xd0\\x7f\\x8f\\x1b\\xaa\\xc3\\x52\\x6b\\x01\\x6d\\xa7\\x99\\xf3\\xe9\\xe0\\x3a\\x4f\\x7f\\x81\\x35\\x5e\\x0f\\x7a\\x76\\xf3\\x0a\\x42\\xb8\\x07\\x32\\x20\\x51\\xb7\\x1c\\x62\\x6a\\x7a\\x29\\x6d\\x75\\xb9\\xd9\\xd1\\xa2\\x3b\\xcb\\x13\\xc9\\xef\\x48\\xa9\\x12\\xdc\\x05\\x73\\x25\\xd3\\xbc\\xfb\\x3f\\x9f\\xad\\xaf\\x0c\\x24\\x9b\\x10\\x2a\\xeb\\x85\\x4a\\xa3\\x63\\x1e\\x34\\xf6\\x9a\\xd9\\x0c\\x2a\\xb2\\xed\\x33\\xba\\xcc\\x40\\xb9\\xed\\x10\\x37\\xfa\\xe6\\x7c\\xdf\\x79\\x9d\\x5a\\x9b\\x43\\x78\\x59\\x61\\x12\\x7d\\x62\\xf8\\xe0\\xbc\\x15\\x89\\xfd\\x1a\\x06\\xfc\\xa2\\xae\\xa7\\xcf\\xc0\\x12\\xcb\\xf7\\xb5\\xb2\\x07\\xdd\\xc4\\xe6\\x77\\xd8\\xae\\x4a\\xec\\x10\\x00\\x45\\xce\\x36\\xc0\\x0b\\x74\\xd1\\xd2\\x82\\x50\\x79\\x12\\x36\\xdc\\x5d\\xcc\\x1e\\xd3\\x13\\xc8\\xc2\\x46\\x17\\x26\\x66\\xf7\\x52\\x17\\x43\\x7c\\x60\\x34\\xac\\xd6\\x41\\x98\\xcd\\x96\\xdf\\x2a\"},\n{{0xa2,0x84,0xe2,0x6b,0x97,0xe5,0x38,0x83,0x9c,0x80,0x8d,0x45,0xbd,0xe6,0xf0,0x12,0xa3,0x54,0x45,0x4a,0xef,0x81,0xca,0xa8,0xc5,0x59,0x14,0x62,0x4f,0x2b,0x7d,0x66,},{0x5a,0xe4,0x6e,0x34,0x69,0x5e,0xfa,0xf4,0x63,0xa4,0x20,0x8f,0xc4,0xe3,0x5b,0x81,0xf2,0xc6,0x35,0x93,0x23,0x8a,0x56,0xf2,0x44,0x4b,0x85,0x0f,0x05,0x8c,0x3c,0x5c,},{0xbf,0x11,0x0e,0x2e,0x9c,0xec,0xbc,0x31,0xfa,0x3e,0x0c,0x24,0x38,0xcd,0x1f,0x43,0x21,0xf9,0x2c,0xd2,0x87,0x00,0x5a,0x48,0x52,0x8a,0xdd,0xf7,0x6c,0xad,0x8d,0x88,0xbb,0x22,0x71,0x9e,0xf9,0x1b,0x13,0x95,0x62,0xa1,0x51,0x18,0x38,0x68,0x26,0x74,0xfa,0xa9,0xff,0x7e,0x7a,0xde,0x6c,0x9d,0x57,0x3f,0x84,0x50,0x36,0xd1,0x89,0x05,},\"\\x9e\\xbf\\xe9\\x10\\xb5\\x0a\\x5c\\xb7\\x19\\xd9\\x5b\\x96\\x1e\\x59\\x05\\xf0\\x0e\\xc7\\x94\\x3b\\x55\\x46\\x8a\\xb5\\x95\\x66\\x92\\x01\\x76\\x45\\xb3\\x66\\x07\\x1f\\x8f\\xbb\\x77\\xeb\\x49\\xec\\x73\\xea\\x7d\\x64\\x51\\x14\\x05\\xb9\\x0d\\xe2\\x2d\\xb9\\x8c\\x3e\\xae\\x39\\xc4\\x03\\x9c\\x7a\\x13\\x34\\x30\\xe8\\x01\\x0b\\xdd\\x39\\xa0\\x0f\\xd1\\xa5\\x28\\xb1\\x13\\xda\\xe1\\x49\\xcf\\xad\\x3a\\xe3\\x40\\xda\\x27\\xdc\\xc5\\x07\\x78\\x2e\\xcd\\x89\\x29\\x23\\x75\\x17\\xaf\\xe7\\x46\\x3e\\xca\\x24\\x73\\xc7\\xac\\xf6\\xf7\\xaa\\x04\\xef\\xc9\\xf2\\x66\\xae\\x7b\\x6d\\x63\\xbb\\x8c\\xc2\\xa4\\x38\\xb3\\x44\\x82\\x7f\\x07\\x13\\xd1\\xf1\\x73\\x6f\\x0c\\xbb\\x65\\xb9\\x93\\x53\\xf2\\x03\\x55\\xfa\\x02\\x30\\xd4\\xfa\\x70\\x73\\x28\\xa8\\x66\\x26\\x54\\xe8\\x3a\\xd0\\x53\\x0a\\x10\\xf9\\xa6\\x9e\\x17\\xc0\\x99\\xe1\\xe2\\xb5\\xdb\\x18\\xe5\\xf6\\xf1\\xdc\\xed\\xa5\\x88\\x3e\\x8c\\xab\\x79\\x70\\x1a\\x5e\\x90\\x89\\x56\\x2e\\xd1\\x53\\xad\\x08\\xc6\\x74\\xf0\\x97\\xc2\\x8e\\x4d\\x16\\x63\\x3e\\x09\\x29\\x69\\xa8\\xf0\\xbd\\xac\\x54\\x52\\x7c\\x0e\\xe0\\x3b\\xc2\\x00\\xe5\\xbe\\x61\\x2e\\x3d\\x1e\\xab\\xd8\\x70\\x91\\x10\\x1b\\x49\\x62\\xaf\\xa0\\x7b\\x31\\x08\\x06\\x99\\x2f\\x37\\x30\\x76\\xd7\\x6a\\x58\\x18\\x51\\x18\\x13\\x7c\\x9d\\x26\\xee\\x2c\\xd4\\xc6\\x18\\xc1\\x82\\x83\\xdd\\x19\\xf0\\xe7\\xa0\\x89\\xee\\x37\\x30\\x5b\\x6b\\x95\\x18\\xa7\\x8d\\x80\\x98\\x43\\x6e\\xf6\\x2b\\xe7\\xd6\\x99\\x80\\x8a\\xce\\xcf\\x67\\x93\\x9d\\x61\\xb3\\xe0\\x29\\x37\\xcd\\x8c\\x5f\\x1e\\x74\\x6d\\x42\\x74\\x33\\x4b\\xc9\\xc3\\x7f\\xdc\\xba\\x23\\x4c\\x16\\x6f\\xd7\\x12\\x89\\x3f\\x3a\\x04\\x08\\x32\\xec\\x54\\x25\\xe5\\x7d\\x80\\xf1\\x1e\\xf9\\xca\\x5f\\xbc\\xd6\\xc1\\x47\\xfb\\xbf\\x5e\\x2f\\xae\\x74\\x6e\\x0d\\xdb\\x60\\x58\\x67\\xe3\\xbd\\x05\\x04\\x83\\xc3\\xcd\\x13\\x29\\xab\\xe5\\x7a\\x60\\xbf\\x88\\x89\\x8d\\xc7\\xe8\\x0e\\xde\\x0f\\x45\\x17\\xde\\x8f\\xc8\\x07\\xe8\\x88\\xb6\\x21\\xa0\\x0f\\x66\\x30\\x84\\xff\\x94\\xb9\\x99\\x96\\x62\\x8f\\x3b\\x11\\x69\\x0a\\x60\\xf0\\x91\\x8c\\xb5\\xc9\\xa7\\xef\"},\n{{0xcc,0x97,0xa9,0x63,0x01,0xce,0xed,0x0f,0x92,0x27,0x31,0xb6,0x85,0xba,0xd8,0xad,0x4f,0x06,0x20,0x7b,0xe3,0x40,0xf5,0xa4,0x4f,0xd1,0x87,0xf2,0x99,0x03,0xec,0x20,},{0xeb,0x56,0x3a,0x7b,0xce,0x12,0xdb,0x97,0xf1,0x89,0x1d,0x0f,0x61,0x0b,0xeb,0xd5,0x51,0x01,0xa3,0x12,0x5c,0xa8,0xdb,0xb5,0x0b,0x25,0xa6,0xb5,0x05,0x0d,0x37,0x84,},{0xff,0xbd,0xd3,0x24,0x41,0x81,0xcd,0xf6,0x03,0x4f,0x4a,0x45,0x0f,0xdd,0x95,0xde,0xe4,0x97,0x1a,0x93,0x3f,0x8b,0xe0,0x22,0xbb,0x0a,0x41,0x06,0xae,0xf3,0x9a,0xf3,0x05,0x5b,0x72,0x18,0x81,0xc9,0xb5,0x4d,0x1e,0x99,0xb9,0x40,0x90,0x96,0xfb,0xe6,0xdc,0x2c,0x99,0x66,0xe3,0x67,0x99,0x64,0xbd,0x7e,0xf4,0xc8,0x08,0xca,0xbf,0x01,},\"\\xb9\\xea\\x3b\\x3d\\xf7\\x18\\x7e\\xa4\\x15\\xa3\\xc3\\x35\\xe0\\x83\\x4e\\x10\\xf4\\x40\\x91\\x5b\\x2a\\xd4\\x1c\\x71\\xf2\\x55\\xd6\\x95\\x0a\\x4e\\x91\\x20\\xe4\\xd4\\x94\\xfd\\x9e\\x67\\x2c\\xe5\\x32\\x06\\xfd\\xc4\\x17\\xd8\\x65\\x89\\x7b\\x47\\xac\\x10\\x54\\xe1\\xca\\x10\\x68\\x19\\x52\\x32\\xd4\\x29\\x74\\x35\\xe4\\x4e\\x12\\x24\\xe6\\x6a\\x91\\x2d\\x9d\\x7d\\x18\\x29\\x46\\xff\\x5a\\x9f\\x08\\x5b\\xb8\\xba\\x19\\xc5\\x4d\\x16\\xb5\\x86\\xa9\\xb3\\x04\\x61\\xb6\\x77\\x3b\\x93\\x95\\x03\\x11\\xe1\\x61\\x98\\x86\\xf5\\xa5\\xb3\\xf1\\x11\\xaa\\xad\\x09\\x4b\\xae\\x31\\xc4\\x8f\\x19\\x41\\x08\\x09\\x68\\xbd\\x02\\x77\\xbb\\x6f\\xa9\\x2e\\xeb\\xf3\\x24\\xb1\\x92\\xdf\\x5c\\xc9\\x69\\x51\\x6c\\x78\\xc7\\xb2\\xd1\\x21\\x59\\xb4\\xd1\\xc8\\xeb\\x03\\x16\\x0c\\x4c\\xd1\\x90\\x7f\\x62\\xed\\x4b\\x85\\x4c\\x56\\x9e\\xcc\\x48\\x1c\\x08\\xe6\\x36\\xf4\\x4e\\xd7\\xc3\\x90\\xe5\\x8b\\x59\\x37\\xd2\\x90\\x6b\\x28\\x17\\xbc\\x37\\x69\\xda\\xd9\\xda\\x1b\\x0f\\x79\\x39\\x1b\\x55\\x94\\x20\\x63\\x05\\x5d\\xa0\\xd6\\xf2\\x49\\xa3\\xe4\\x52\\xba\\xdd\\xaa\\x03\\x29\\x98\\xd7\\xf7\\x33\\x98\\xcc\\xd0\\x15\\x1b\\xfc\\x92\\xc5\\xe2\\xfd\\xfa\\x9b\\x14\\x85\\x5e\\x6b\\x0d\\x37\\x46\\xdc\\xe2\\x48\\xe2\\x19\\x67\\x29\\x87\\x25\\x2e\\xc7\\x47\\xdf\\x27\\x47\\xfd\\x3f\\xbd\\x8b\\x71\\x4c\\x88\\x2d\\x70\\x7e\\xe3\\x02\\xa9\\x04\\x95\\x0c\\x34\\x75\\x4f\\x85\\x35\\x0e\\x1a\\xa3\\xf8\\xea\\x62\\x93\\xcf\\x01\\xf7\\x17\\xce\\xfb\\x6b\\x83\\xa2\\x21\\x26\\xdf\\x5c\\x4f\\x56\\x98\\xaa\\xfd\\x06\\xa2\\x24\\x4a\\xd7\\xd0\\x1f\\x34\\x01\\x7c\\xa0\\xec\\xe6\\xf2\\x10\\x40\\x04\\x8a\\xba\\x6c\\xa4\\xae\\xb0\\x43\\x25\\xb9\\x40\\x2b\\xcd\\x43\\xab\\x13\\x0a\\x10\\x57\\x88\\xac\\x3d\\x7b\\x7d\\xa0\\x1e\\xa9\\x42\\x6d\\xd0\\xea\\x19\\x33\\xa8\\x18\\x99\\x33\\xa6\\xc0\\xc6\\xcd\\x64\\x8e\\xa3\\x16\\xa7\\x46\\x9a\\x5f\\xdc\\x6e\\x7c\\x93\\x4d\\x91\\x86\\x58\\x60\\x97\\xb5\\x5d\\xd5\\x1a\\xc4\\x87\\xbb\\x80\\xed\\x11\\xd4\\xdf\\x8d\\x33\\x62\\x6b\\xbc\\xe9\\x5e\\x4f\\x13\\xbd\\x49\\x92\\x2f\\x00\\xc9\\x20\\x22\\x3f\\x4c\\xbf\\x93\\xcb\"},\n{{0x67,0x9e,0x3e,0x34,0x77,0x3a,0xbe,0x4a,0xe2,0x5c,0xae,0x7d,0x07,0xcc,0xd0,0xeb,0x3b,0x0e,0xc0,0xa3,0x5d,0x57,0x02,0x57,0xd6,0x25,0x70,0xde,0x58,0xea,0x25,0x16,},{0x18,0xac,0xff,0xce,0x25,0x3b,0x27,0x25,0x95,0x79,0xed,0x99,0x24,0xf4,0x79,0xca,0xe3,0x12,0x16,0x7b,0xcd,0x87,0x6e,0xdb,0xa8,0x8b,0x5d,0x1d,0x73,0xc4,0x3d,0xbe,},{0x1a,0x51,0x02,0x26,0x28,0xcc,0xbb,0x88,0xea,0xe9,0xb2,0x17,0x73,0xc3,0xf8,0x30,0xb7,0xb6,0xe5,0xbc,0x36,0xc9,0x90,0x3c,0xe7,0x0f,0xbc,0xf4,0x59,0xd6,0xa1,0xed,0x8a,0x1d,0xce,0xff,0x5b,0x19,0x26,0x9e,0xbf,0x5a,0x6f,0xd3,0xd8,0x95,0x88,0x60,0xf5,0x54,0x46,0x1f,0x0e,0x9f,0xc0,0xe2,0x9a,0xf9,0xb1,0xfb,0x17,0x44,0xa8,0x0b,},\"\\xfb\\x2b\\x64\\x8e\\xbb\\x16\\x68\\x82\\x44\\xf7\\x8b\\x2e\\xe9\\xa2\\x73\\x59\\x9d\\x56\\xb6\\x19\\x89\\x00\\xd4\\x38\\xa9\\xe9\\x9c\\x19\\x14\\x25\\xc7\\x2b\\xec\\x4f\\x23\\x58\\x47\\xe1\\x8e\\x47\\xf5\\x7c\\x3c\\xb3\\x96\\x65\\x5f\\x77\\x89\\x21\\xf9\\x08\\x58\\x0e\\x8e\\x83\\xc9\\x6c\\x10\\x8b\\x20\\xdd\\x41\\x66\\x78\\x02\\x1b\\xca\\x25\\x9b\\x98\\x51\\x8f\\xab\\xb2\\xd3\\x53\\x2e\\x48\\x51\\xd9\\xd5\\x2a\\xdd\\x25\\x42\\xc0\\xcb\\x3e\\xfa\\x38\\x57\\xa1\\x7e\\x51\\x24\\x38\\xbc\\x0e\\xc4\\x76\\x2e\\x2f\\x9b\\xab\\xa4\\x29\\xc0\\x3e\\x99\\xbe\\xc4\\x03\\x8e\\x6b\\x0c\\xa4\\x2b\\xff\\x5b\\x23\\x3b\\x24\\xc3\\x33\\xb4\\xca\\xea\\xd2\\xde\\x37\\x4a\\x87\\xb2\\xab\\x5d\\x80\\xd6\\xe4\\x9e\\x44\\x56\\x32\\x9d\\x51\\xae\\x97\\x3b\\xc8\\x3d\\x78\\x62\\xf3\\xd3\\x15\\xe5\\x14\\x48\\x1b\\x12\\x85\\x4a\\x9d\\xfc\\x09\\xe7\\xd1\\x4f\\x0d\\x02\\x2c\\x0b\\xa3\\x02\\x25\\x78\\xeb\\xa8\\xf8\\x74\\xde\\xba\\x4a\\xa8\\xc8\\x33\\xf2\\xb1\\x32\\x86\\x1d\\x4d\\x51\\xe5\\x0f\\xe9\\xaa\\x4b\\x78\\x7b\\xd2\\xf0\\x51\\xaa\\xc5\\x0c\\x37\\x53\\x90\\xcb\\xbc\\xfb\\xa2\\x00\\x2b\\x80\\xad\\x00\\xcd\\xc1\\x29\\x80\\xf8\\xba\\x8b\\xcb\\x70\\x64\\xaf\\xc0\\x4d\\x5c\\x46\\x82\\xc1\\x02\\x9b\\x10\\xa6\\xd4\\x5f\\xe6\\xec\\xd7\\x04\\x24\\x5f\\xaf\\x59\\x8c\\x46\\x59\\x59\\x7c\\x5d\\x68\\xa1\\x92\\xcc\\x1c\\xd4\\xfa\\x45\\xe8\\x4b\\x54\\x9e\\x8e\\x5e\\x67\\xda\\xa8\\x79\\xae\\x5a\\x52\\x0a\\x6b\\x55\\x50\\x51\\x98\\x76\\xa5\\x62\\xac\\x49\\xc6\\xdb\\x0a\\xa7\\x6e\\xc6\\x9b\\xb6\\x4d\\xd6\\xb5\\xe1\\xa3\\xaf\\x2e\\x13\\x1e\\x72\\x2e\\x7c\\xdd\\x05\\xbe\\x34\\xb5\\xfc\\xc6\\x25\\x9a\\xa1\\x24\\xcc\\xf8\\x14\\xcf\\x5b\\x50\\x0d\\x17\\x6b\\xe2\\x8e\\xbc\\x40\\xbb\\x21\\xf0\\x3e\\x24\\xcc\\xc1\\x31\\xe0\\xf4\\x1d\\xaa\\x1c\\xa0\\x2e\\x6b\\x00\\xc9\\xc5\\x3f\\xad\\x12\\x48\\x61\\x4e\\x94\\x0d\\x4b\\x23\\x77\\x60\\xab\\x75\\x69\\xa7\\x67\\xb7\\x51\\x5d\\xd2\\xd6\\x23\\xe5\\x7a\\x28\\x41\\xb7\\xd2\\x44\\x1c\\xf4\\x30\\x49\\xe4\\x69\\x8d\\x2f\\x9c\\x9e\\xae\\x7b\\x29\\x10\\xf6\\xad\\x65\\xed\\xf9\\xcb\\x2b\\xdb\\xd9\\xb2\\x9f\\x60\\x6e\\x0d\"},\n{{0x9b,0xfa,0x60,0x92,0x3a,0x43,0xed,0x0c,0x24,0xe2,0xf1,0x2f,0x5b,0x86,0xa0,0x71,0x63,0x29,0xf9,0x3d,0x4d,0x8d,0x3e,0x06,0x23,0x80,0x02,0x89,0x32,0x78,0xc1,0x9a,},{0xfb,0x1c,0x00,0x68,0x77,0x81,0xb5,0x5b,0x89,0x3d,0x6b,0x2f,0x4f,0x49,0xcf,0x5f,0x73,0xd2,0x90,0x3c,0x31,0x6d,0x1e,0xee,0x75,0x99,0x1d,0x98,0x3a,0x18,0x68,0xc0,},{0x55,0xf2,0x02,0xef,0xb2,0xa5,0x7b,0xe8,0xb4,0xe4,0xfd,0x89,0x4d,0xcc,0x11,0xa4,0xfc,0x5f,0x82,0x76,0x61,0x8e,0xf5,0xcd,0x34,0xa4,0x49,0x5a,0xdb,0x01,0x6a,0x29,0x8e,0x64,0x80,0xa3,0x5c,0xfc,0x53,0xed,0xb2,0x5f,0xf1,0x49,0x9f,0xc5,0x32,0xa3,0x30,0x61,0xcc,0x01,0xa2,0x50,0x45,0x8a,0xa5,0xe4,0xf7,0xf1,0x6f,0x51,0x44,0x0d,},\"\\xa9\\x90\\x28\\xb0\\xf4\\xa3\\xaa\\x5e\\x79\\xab\\xef\\x6c\\x0d\\xf4\\xa7\\x83\\xef\\x47\\x0f\\x1a\\x29\\xba\\x51\\xeb\\xa0\\x0f\\x62\\x14\\xe8\\x40\\xfe\\x19\\xe5\\xb6\\xdc\\x60\\x21\\xab\\x59\\x9b\\xb2\\xee\\x36\\x99\\x57\\x60\\x15\\xd7\\x9a\\x79\\x39\\xaf\\x82\\x35\\x35\\xb6\\x30\\xe3\\x93\\x8c\\x72\\x3f\\x6e\\x0b\\x92\\x29\\xd4\\x6b\\xb3\\x37\\x9a\\xcd\\xba\\x58\\x7c\\x23\\x85\\x67\\xe3\\xd8\\x9b\\xc3\\xbd\\x35\\x19\\xb7\\x27\\xfc\\x69\\x4f\\xff\\x11\\x18\\xbf\\x22\\xc8\\xbc\\x8b\\xc8\\x2c\\x4d\\xf7\\xf5\\xad\\x38\\xde\\x05\\xfe\\x9f\\x76\\x29\\x99\\xec\\xaa\\x79\\x5f\\x3a\\xe6\\x30\\xa9\\xa3\\x16\\xd2\\x6d\\xce\\x9f\\x15\\x68\\xff\\xa3\\xf2\\x2b\\x02\\x95\\x21\\x40\\x20\\xb3\\xd3\\xf5\\x33\\x7c\\x14\\x95\\x68\\x19\\x22\\x18\\x13\\x2a\\x90\\x70\\x92\\x79\\xc0\\x1d\\x23\\xba\\xef\\xa6\\x69\\xe1\\xc4\\xe4\\x20\\x38\\x17\\x3f\\x13\\x19\\xc2\\x12\\xda\\x14\\x4f\\x1c\\x4e\\xa4\\xc5\\x2c\\x00\\x5c\\xbc\\x0b\\x5b\\xc2\\x83\\xe7\\x44\\x83\\xa0\\xdc\\xa6\\x92\\x79\\xde\\xb1\\x7a\\xe5\\xb2\\x9c\\xfa\\xfa\\x7d\\x00\\x63\\xf4\\xe1\\xbc\\x93\\x53\\x7e\\xfd\\x93\\x7e\\x58\\xa8\\xac\\xa7\\x37\\x22\\x8f\\x93\\x7f\\xf2\\xa7\\x41\\x89\\x0e\\x96\\xc5\\x72\\x5d\\xa1\\x1b\\x45\\xc4\\x13\\xa9\\xbb\\xb4\\x18\\x0a\\x41\\x99\\x87\\xbb\\xf0\\x46\\xbf\\xd3\\x46\\x29\\x5d\\x62\\xf0\\x81\\xc7\\x6d\\xaf\\x2b\\x0e\\x1e\\xb4\\xf6\\x71\\x2f\\xee\\xbe\\x6f\\x0a\\x92\\xe3\\x58\\xe7\\xdd\\xb8\\x58\\x96\\x50\\x7c\\x34\\x0a\\x01\\xf6\\x8d\\x1b\\x0f\\x08\\x57\\x78\\xb7\\xc4\\x4b\\x01\\x4a\\xa6\\x67\\x3e\\x50\\x17\\x96\\x95\\x9a\\x17\\xa6\\x88\\xdb\\x09\\x59\\x05\\x84\\x88\\xa7\\x11\\x25\\x72\\xf2\\x3c\\xf9\\xcd\\xb5\\x3b\\x5e\\xb4\\xb4\\x5f\\x59\\x53\\xba\\x0c\\x0c\\x69\\x0f\\x86\\xbd\\x75\\xe8\\x9a\\x04\\x7b\\xeb\\xaf\\x84\\x7c\\x1d\\xfc\\x34\\x5a\\x4f\\x3c\\x7d\\x3b\\xee\\xc9\\x8b\\x84\\xb0\\x21\\x90\\x03\\xe8\\x19\\xf5\\xc2\\xad\\xb4\\x5f\\x87\\x17\\x90\\x3d\\x1f\\x5b\\xd5\\xd7\\x19\\x14\\xc5\\x6f\\xca\\xbc\\x7a\\x29\\x0f\\x9c\\x41\\x69\\x9c\\x95\\x58\\x4d\\x6a\\x3a\\x16\\x34\\x0c\\xb1\\x7b\\xaa\\x1f\\xc5\\xe5\\x46\\x7a\\xf7\\xac\\x32\\x21\"},\n{{0x6e,0x3a,0xf4,0x5e,0x66,0xe2,0x28,0x90,0xc3,0xf3,0xc9,0x34,0xf5,0x23,0xa4,0xd6,0x94,0x27,0x97,0x6e,0x6e,0x52,0x62,0x5f,0x8b,0xad,0x55,0x89,0x93,0x96,0x32,0x19,},{0xe0,0x97,0x36,0x4e,0x76,0xff,0x9f,0x2e,0x1d,0x16,0x7f,0x6b,0x20,0xc1,0xbc,0x58,0x30,0x08,0x5e,0x7e,0xc9,0x93,0xc1,0x38,0xf8,0xb1,0xb2,0x17,0x56,0x37,0xe7,0x41,},{0x26,0xba,0x56,0x2e,0x8a,0x40,0x65,0x70,0x82,0x07,0xc2,0x5e,0x23,0x9b,0x78,0x0a,0xee,0x38,0x79,0x4c,0xf9,0x83,0xa3,0x7a,0xcb,0xb9,0xd5,0x57,0xa6,0x5c,0xee,0xd3,0xc0,0xda,0x47,0xd1,0x7f,0x3e,0x8b,0x8f,0x4e,0xeb,0x1b,0x65,0xa2,0xc1,0x82,0xea,0x6f,0x29,0x62,0x3b,0x63,0xbb,0x0f,0x1c,0x72,0x59,0x26,0x83,0xb1,0x26,0xb9,0x01,},\"\\x5c\\xfc\\x2f\\x4b\\x55\\x9f\\x82\\x05\\xb3\\x91\\x02\\x08\\x76\\x17\\xf4\\xd8\\x6c\\x7c\\xe6\\xcb\\x25\\x1e\\x5f\\x89\\x60\\x1d\\xfc\\x88\\xed\\x28\\xe8\\xd7\\xa6\\x70\\xec\\x00\\x87\\xd2\\xea\\x5d\\x89\\x30\\x21\\xc7\\x04\\x4d\\xa2\\x89\\x9a\\x22\\xd7\\x76\\xfe\\x90\\x17\\x0e\\x51\\xc2\\x03\\x25\\x06\\x90\\xd3\\x7a\\x29\\x45\\x55\\xe7\\x4a\\xf9\\x23\\x4c\\xbf\\x1a\\xd8\\xf2\\x2c\\xee\\x89\\x74\\x82\\x8a\\x0d\\x09\\xe9\\x55\\x4b\\x71\\xee\\x3b\\xcf\\x88\\x0a\\xb9\\x83\\x25\\xf7\\x06\\x27\\x21\\x94\\xeb\\x2e\\x80\\xc7\\x01\\xd4\\x41\\xb5\\xf8\\x66\\x85\\x61\\xb8\\x88\\x49\\xf8\\x27\\xaf\\x70\\x3a\\xb0\\x95\\x41\\x05\\xfd\\x3c\\x54\\xb3\\xf6\\xec\\x54\\x93\\x59\\x6d\\x0e\\x3b\\xc6\\x78\\x18\\x04\\x83\\x10\\xc4\\xa3\\xe0\\xc5\\x56\\xbc\\x80\\x67\\x5f\\x20\\x1f\\x9b\\xb9\\xc6\\x53\\x8a\\x41\\xd9\\x9a\\xa4\\x0c\\x88\\x6f\\xc4\\x31\\x46\\x72\\x18\\xd8\\x19\\xc2\\x3e\\x78\\x49\\x8a\\xed\\x06\\x13\\xfa\\x6f\\x97\\x3e\\x22\\x11\\xdf\\x9f\\xb8\\x7f\\x44\\x11\\x6f\\x3f\\xe4\\xc2\\x6d\\x6c\\xb2\\xfa\\x33\\x4c\\x87\\xf7\\x8c\\x08\\xca\\x8c\\x9b\\x90\\x41\\xd8\\x3a\\x12\\x30\\x67\\x7e\\x0a\\xf7\\x88\\x59\\x8a\\x42\\xe4\\x4c\\xfd\\xf6\\x96\\x4a\\x4e\\xe8\\x0e\\x38\\x40\\x2b\\xa6\\x7c\\x73\\xa5\\x81\\xe5\\x52\\xba\\xa2\\x28\\x24\\x25\\xcb\\x2c\\xa1\\x7c\\xa9\\x2e\\xdf\\xbf\\x98\\x29\\x91\\x02\\xfb\\xa7\\x61\\xb9\\xb7\\x1a\\x54\\x52\\x14\\x1b\\xb9\\xc1\\x8d\\xd9\\x5f\\xeb\\xc2\\xa7\\x82\\xde\\x9c\\xee\\xc0\\x8b\\xd2\\xee\\x3f\\x7f\\x0c\\x1b\\xd8\\x94\\x6d\\xba\\x99\\xcf\\x9e\\xa0\\x86\\xab\\xaf\\xd3\\x7c\\x9c\\xa6\\x02\\x13\\xf0\\xde\\x17\\xc6\\x1f\\xf9\\xc3\\x91\\xc9\\x81\\x8e\\xd5\\xcd\\x85\\x71\\x77\\x8b\\x7d\\xcc\\x13\\x22\\x49\\x62\\x38\\x6f\\xb8\\xca\\x14\\xf8\\x61\\xe9\\x9f\\x3b\\x18\\xed\\xac\\x8a\\x5f\\x13\\x0f\\x7b\\xfc\\xd4\\x5d\\x04\\x5d\\x0f\\xf3\\x4c\\x81\\x57\\x2a\\x51\\x23\\x63\\xd6\\x53\\x0f\\x93\\x81\\x3e\\x5f\\xb1\\x0e\\x9c\\xb8\\x33\\x8a\\x7f\\x93\\x80\\x04\\x91\\x00\\x6f\\x44\\x63\\xe8\\x9f\\x0e\\xd4\\x53\\x0e\\x5f\\x12\\xdf\\x67\\x4f\\x59\\x89\\x04\\x78\\x0a\\xd0\\x81\\x2b\\x1e\\x35\\x21\\xfc\\xd0\\xf8\\x3e\"},\n{{0x5f,0x1f,0x27,0x18,0x44,0xd9,0xed,0x5a,0x6a,0x6f,0x20,0x9a,0x21,0x40,0x8d,0xae,0xa4,0x70,0xf6,0xfd,0x53,0xba,0x64,0x79,0xd7,0x40,0x71,0x05,0xb7,0xde,0x4d,0x65,},{0x60,0x85,0xd7,0xfb,0x5a,0x9b,0x2e,0xd8,0x06,0xc1,0xfd,0x30,0xa2,0xaf,0xde,0x76,0x09,0x61,0xf7,0xa3,0x6b,0x48,0xf4,0x87,0x52,0x46,0xe6,0x15,0xa2,0xbd,0x99,0x28,},{0x31,0x9b,0xb4,0xde,0xb2,0x17,0x81,0x12,0x24,0x1b,0x3f,0xb8,0xf4,0x6e,0x10,0x5c,0x3b,0x8e,0x4e,0xf7,0x21,0xeb,0x20,0x0d,0x76,0x2e,0xf3,0x63,0xe2,0x71,0x6f,0x2a,0x89,0xf8,0x0b,0x5b,0x9e,0x89,0x97,0x08,0x90,0xa0,0x98,0x92,0xad,0x6a,0x58,0x80,0x8b,0x47,0x7e,0x94,0x3b,0x3c,0xfa,0x77,0x77,0x4a,0x36,0x45,0xbc,0x74,0x5f,0x03,},\"\\xee\\xd6\\xb4\\x47\\x5d\\xc2\\x63\\xbd\\x22\\x07\\xfe\\x9d\\x41\\xd4\\x82\\x82\\xb7\\x13\\xf6\\x80\\xf2\\xe0\\x37\\x38\\x4f\\x18\\xb4\\xbf\\x22\\x43\\x47\\xf5\\xe4\\xc4\\xb0\\x60\\xb8\\x08\\xd4\\x12\\xea\\xab\\xcf\\x73\\x3d\\xc3\\x9a\\x40\\xc6\\xbd\\xa0\\x50\\x5c\\xe7\\x1f\\xa8\\x23\\xbd\\x1b\\x17\\x94\\x84\\x76\\x78\\xdc\\x03\\x4e\\x79\\x99\\xc1\\x63\\x69\\x34\\x0b\\xc6\\x0c\\x64\\xd0\\x9b\\xb9\\x18\\x7b\\x2e\\x32\\x60\\x55\\xa0\\x53\\xf8\\xe5\\x05\\xea\\x41\\x96\\x86\\x14\\x71\\x62\\x2d\\xb0\\xe4\\x6f\\x0f\\x89\\x54\\xd8\\xa1\\xf0\\x73\\x32\\xda\\x4d\\x8a\\xc5\\x57\\x12\\x62\\x60\\x09\\x91\\x2f\\x8a\\x15\\xa9\\xcd\\x63\\xa7\\x4a\\x03\\xc9\\x2f\\x24\\x6c\\xb6\\x3c\\xc7\\x3f\\x92\\xe5\\x1d\\xad\\x1b\\xc9\\x71\\x5b\\x1e\\xd3\\xfe\\x5f\\x2e\\x1b\\x29\\x59\\xb9\\xb7\\x1e\\x0e\\x37\\x36\\x0e\\xb2\\x95\\x36\\xcf\\x79\\x71\\x47\\xfa\\xb1\\x08\\x64\\xd6\\x14\\x6c\\x36\\xb8\\x23\\x35\\xa0\\xce\\x93\\x14\\x08\\x47\\x9c\\x7e\\xde\\x48\\x4f\\xf7\\x3e\\x2d\\xbf\\xff\\xc6\\xc9\\x22\\x7e\\x16\\xd7\\xa2\\x3f\\x4d\\x90\\xf1\\x55\\x84\\x51\\x4c\\x39\\x59\\x4e\\x17\\xbf\\xbb\\x29\\x5d\\xe9\\xd6\\x2a\\xda\\xdb\\x58\\x9d\\xbb\\xe0\\xb0\\x6d\\xc8\\xda\\xc5\\xb3\\xbf\\x51\\x7b\\x24\\xc1\\x83\\x7b\\x39\\x47\\x2a\\x6d\\xd3\\x89\\x31\\xff\\xbb\\xff\\x5b\\x76\\x36\\x38\\x80\\x5b\\x4e\\x22\\x32\\x1f\\x7a\\xfe\\x92\\xcd\\xf5\\x02\\xfb\\x63\\xd1\\x09\\xdd\\xcd\\x9e\\x40\\x51\\xad\\x6f\\x45\\x59\\x85\\x32\\xbe\\x17\\x95\\x23\\x71\\x08\\x51\\xd3\\x93\\x1e\\x88\\x7d\\x02\\xc3\\x45\\xc7\\x9c\\x48\\x9f\\xc1\\x06\\xa4\\xae\\x16\\x2f\\x7d\\xf7\\x1a\\xb9\\x0b\\x75\\x1d\\xa7\\x03\\x8a\\x6d\\xf7\\x61\\x6c\\xfc\\x11\\x88\\x7e\\x21\\x06\\x8f\\xb9\\xe3\\x3b\\xe5\\x66\\x40\\x2b\\xe5\\x04\\xf3\\xfc\\x27\\x42\\xb8\\x81\\x50\\x9b\\xd4\\xfe\\x6a\\x0f\\xc7\\x22\\x64\\x98\\x83\\xf8\\xcb\\x65\\x55\\x98\\xa1\\x5a\\x1d\\x4c\\x22\\x9d\\xd8\\x6b\\x5c\\xae\\xb7\\x11\\xa0\\x28\\xde\\xfd\\x43\\x11\\x54\\xbb\\xa4\\x6b\\x48\\x17\\x2a\\x4d\\x8c\\xbd\\x45\\xbc\\x90\\xaa\\xf8\\x74\\xb6\\x08\\x5f\\xa2\\x84\\xf5\\xfe\\xd6\\x55\\xad\\x6f\\xa1\\x7d\\x67\\xb3\\xb9\\xa7\\x96\\xfa\\x3e\"},\n{{0x04,0x8a,0xc9,0xec,0x3e,0xcb,0x30,0xa3,0xb1,0xbf,0xda,0x9b,0x3b,0x79,0xa4,0x8c,0x07,0x93,0xb4,0x90,0x87,0x9e,0x3c,0x8a,0x5e,0x23,0xee,0x2b,0xab,0xcd,0x9b,0x7c,},{0x94,0x6c,0x18,0x6f,0xea,0xfc,0x35,0x80,0xa5,0x8d,0xdd,0x52,0x6f,0xf2,0x29,0xc0,0x47,0x20,0x25,0x0f,0x4c,0xf6,0xbd,0xe0,0x27,0x1e,0xef,0x9b,0x12,0xb1,0xc3,0xf3,},{0x2e,0xcf,0x5b,0x8a,0x59,0xa8,0xe2,0x7d,0x25,0x89,0x0a,0x2a,0xa3,0x2f,0x4a,0x06,0x73,0x27,0x5d,0x53,0x9b,0x17,0x4a,0xfa,0x7b,0x2c,0xeb,0xf2,0xe7,0x62,0x80,0xdf,0xfc,0x33,0x8e,0xde,0x85,0xac,0x8f,0x61,0x40,0x39,0x56,0x0e,0x28,0x06,0xd9,0xe1,0xe3,0xcf,0x9c,0xce,0x2c,0xeb,0x78,0x74,0xff,0xe1,0xa7,0xe8,0x0c,0xde,0xf4,0x0b,},\"\\xd6\\x8b\\xe8\\xef\\x7b\\x4c\\x7a\\x42\\x89\\xf2\\xb1\\x8b\\x16\\xad\\xe9\\x7f\\x4e\\x4f\\xa1\\x64\\x52\\x97\\x6a\\xfb\\x58\\x16\\x93\\x38\\x0c\\xc5\\x4d\\xe3\\x8a\\x07\\x58\\x7f\\x32\\xe2\\xd4\\x54\\x9f\\x26\\x59\\x5f\\xee\\x23\\x93\\xbd\\x06\\x2e\\x9b\\x00\\xba\\xe7\\x24\\x98\\xe4\\x14\\x8c\\x8b\\x88\\x2a\\x88\\x40\\xe1\\x5b\\x58\\x5c\\x82\\xb5\\xc0\\xde\\xfb\\x23\\x35\\x18\\x40\\x99\\x16\\x61\\x5d\\xeb\\x3a\\x55\\xa5\\xf8\\x4e\\x6b\\x3a\\xab\\x93\\x84\\x4d\\xe3\\xb1\\xe4\\xd8\\x6e\\x09\\xf8\\x89\\xac\\x71\\xc3\\x24\\xeb\\x12\\xd0\\xfb\\xd8\\x61\\xcc\\x31\\x22\\x95\\x40\\xe8\\x43\\xa3\\x4f\\x8d\\x5b\\xe4\\x7c\\x0e\\xc0\\xd2\\x3d\\xf4\\x3e\\x06\\x81\\x3f\\xca\\x30\\x94\\x39\\x90\\x4c\\x16\\x7d\\x10\\x43\\xc0\\xdc\\xd4\\x44\\xb0\\x04\\xbe\\x1f\\xf2\\x7b\\x78\\x62\\xb0\\x0e\\xba\\x94\\x33\\xb9\\x4b\\x0f\\xcd\\xc6\\x75\\x21\\xda\\x0c\\x1d\\x53\\x58\\x63\\x6c\\x78\\xf5\\x30\\x43\\x11\\x64\\xdd\\xe2\\x0a\\x1c\\xf1\\x64\\xf5\\x1e\\x29\\xb8\\xe6\\x3e\\xac\\xde\\xcc\\x86\\x9b\\x41\\x39\\x2c\\x66\\x76\\x64\\xd9\\x16\\x80\\xd9\\xac\\x51\\x6a\\xf5\\x48\\xf0\\x9e\\x60\\x56\\x4e\\x81\\x4e\\x36\\xe0\\xb5\\x63\\xdb\\xae\\x55\\xc6\\x27\\xff\\xc1\\x41\\x58\\xa5\\x6d\\x8e\\xb3\\x60\\x9e\\x17\\x43\\x81\\xb2\\x1d\\xe4\\xba\\x82\\x34\\x44\\x66\\xdd\\x57\\x7f\\x4d\\x11\\x03\\xc4\\x3c\\x27\\xfb\\x83\\xcb\\x83\\x3d\\x87\\xaf\\xdf\\x74\\x12\\xb4\\x09\\x09\\x09\\xb1\\xdd\\xe2\\x64\\xda\\xdd\\xce\\x96\\x7f\\x49\\x6b\\xf6\\xf1\\x71\\x12\\xbf\\x35\\x1e\\x41\\x7d\\xb5\\x95\\x3b\\x13\\xb8\\xf0\\xfc\\xcc\\xbf\\x30\\xf5\\xbc\\xf3\\x76\\x86\\x1c\\x12\\xef\\x20\\xee\\xc8\\x9e\\xd2\\x3c\\xf3\\x84\\xee\\x78\\xdc\\x6e\\xb4\\x0f\\xd5\\x81\\x1a\\x7b\\x23\\x92\\x7c\\x13\\xe7\\xdc\\x5d\\xa3\\xa9\\x21\\xb8\\x83\\xa9\\xb2\\xb1\\x15\\x59\\x70\\xfb\\x0d\\xa7\\xd2\\x99\\x3d\\xcd\\xfd\\x43\\x43\\x64\\x2a\\x9d\\x5a\\x63\\x47\\xe4\\x3c\\x19\\x3b\\x57\\x93\\xe4\\x45\\x3a\\xc1\\x53\\x7a\\xa3\\xd0\\x4d\\xc9\\xf7\\x74\\xe8\\x40\\x93\\x48\\x81\\xd7\\x8a\\x39\\xba\\x25\\x04\\x38\\xc5\\x07\\x25\\x0e\\xed\\x2f\\x6e\\x07\\xcc\\x95\\x3f\\x78\\x3d\\x6b\\x72\\xb1\\xcc\\x61\\x99\\x81\"},\n{{0x2f,0x05,0x7d,0x20,0xb1,0x67,0x85,0x31,0x61,0x1f,0x48,0xf0,0x03,0xb7,0xd2,0x2e,0xba,0x5d,0xbb,0xd7,0xe2,0xdd,0x41,0xb7,0xc7,0x9d,0x09,0x07,0x1f,0x85,0xe9,0x93,},{0x62,0x0f,0xc4,0xea,0xa3,0x4d,0x78,0x7d,0xf6,0x75,0xcc,0xbf,0x7e,0x89,0x32,0x04,0x82,0x8d,0xb9,0x2e,0xad,0x17,0xa1,0x16,0x5a,0xc7,0xfa,0x1a,0xb4,0x27,0x19,0xd8,},{0x30,0xdf,0x7b,0x0b,0x1c,0x04,0xfb,0x1e,0xfa,0x35,0x17,0xe9,0x28,0xd6,0xd5,0x7c,0x2c,0xa0,0xd0,0x7f,0x4e,0x04,0xff,0xb1,0xf0,0x8b,0x47,0x92,0xc5,0x93,0x7d,0xd2,0x71,0xcc,0xab,0xdc,0x00,0xdc,0xe8,0x50,0xaf,0xe5,0x0a,0xf5,0x99,0x0f,0x22,0x4e,0x84,0x20,0xa6,0x81,0xd9,0x5f,0x9f,0x7f,0x51,0x5a,0xfe,0xc1,0x02,0xef,0xd1,0x0e,},\"\\x6e\\x35\\xf6\\xea\\xa2\\xbf\\xee\\x06\\xea\\x6f\\x2b\\x2f\\x7a\\xb1\\x5f\\xa9\\x7c\\x51\\x80\\x95\\x8a\\xf2\\xe9\\x0a\\xf9\\x18\\xad\\xfb\\x3d\\xb8\\x32\\x3f\\x44\\x7c\\x7b\\xf2\\x6d\\xc5\\x34\\x99\\x7c\\x38\\xb7\\xfc\\x97\\x7f\\x64\\x2d\\xe2\\x88\\xcd\\xf2\\x53\\x07\\x1c\\xac\\xf3\\x56\\x4e\\x3b\\x8e\\xd6\\xdc\\xe5\\x7d\\xdf\\xba\\x9f\\xf7\\x83\\xba\\xd2\\xe7\\x6d\\xf1\\x24\\x82\\x8f\\xc1\\x03\\x1a\\xcf\\xad\\xf0\\x1a\\x44\\xd4\\x1b\\x42\\x16\\x1a\\xd9\\x06\\x03\\x01\\xc1\\xaf\\x19\\x28\\xb9\\xe5\\xb7\\x3b\\x9b\\xd2\\x1c\\xac\\x60\\xa8\\x42\\xb5\\x04\\xdc\\x3c\\xc3\\x11\\xc5\\x22\\xe3\\xbb\\x04\\x8b\\xf2\\x21\\x44\\x4f\\x53\\xce\\xb0\\x8e\\x77\\xe9\\x48\\x59\\x0e\\x94\\xed\\x98\\xf1\\xb6\\x04\\xcb\\x9e\\xad\\xc9\\x3b\\xbe\\x74\\x31\\xc1\\x14\\x9b\\x23\\x19\\x3f\\xf9\\x3e\\x85\\x69\\xf1\\x13\\xe1\\x68\\x4d\\x89\\x76\\xec\\xae\\x6f\\x09\\xe0\\x10\\x36\\x14\\xbe\\x41\\x8a\\x47\\x2e\\xf5\\x5b\\xb8\\x89\\x0d\\x72\\xb3\\x41\\xcd\\xd7\\x50\\x5b\\x50\\xa4\\x55\\x22\\xab\\x63\\xed\\x79\\x1c\\xe8\\xf8\\x2f\\xed\\xdd\\x7a\\x62\\x0a\\x4f\\x6f\\xb1\\xd2\\xfb\\x0e\\xd0\\xc4\\x56\\x0d\\x78\\x44\\x6d\\x83\\xb3\\xd1\\xb1\\xbb\\x56\\xb3\\x66\\xd1\\x96\\x02\\x0d\\x06\\x24\\xb1\\xfb\\xdb\\x75\\xce\\x73\\x5d\\xd4\\x3e\\x8e\\x8d\\xf1\\x63\\xc4\\x4e\\x23\\x69\\x93\\xdc\\xa3\\x41\\xf5\\x13\\x2d\\x82\\x5d\\x0a\\x4e\\x39\\x3a\\x19\\xd3\\x8f\\x61\\xe1\\x1e\\x0c\\xf3\\x92\\xcb\\x9b\\x64\\x6e\\xa2\\x3c\\x58\\x09\\x98\\x24\\xdd\\x8d\\x9f\\xbe\\x26\\xa4\\x9e\\x33\\xb2\\x3d\\xf8\\x06\\x07\\xab\\xf1\\x97\\x15\\x79\\x9c\\x19\\xac\\xc7\\x22\\xed\\x9b\\xcf\\x94\\xa0\\xc2\\x9a\\xd2\\x4b\\x78\\xb0\\xb0\\x35\\xb3\\x24\\x1c\\x64\\xcd\\x86\\xed\\xea\\xc8\\x10\\xe6\\x67\\x45\\x69\\x4b\\x5e\\xb1\\x62\\x50\\x60\\xed\\xf2\\xd9\\x49\\xde\\x0d\\x34\\xf5\\x22\\xdf\\x2d\\xc6\\x0a\\xe6\\x94\\xa1\\x93\\xf3\\xb8\\x2c\\x1d\\x6f\\x83\\xa0\\xcb\\xb8\\x40\\xf4\\x6c\\x49\\xa3\\xd7\\xd1\\xcf\\x06\\xde\\xaf\\x96\\xc6\\x4f\\x8f\\x9e\\x17\\xbd\\x9a\\xd5\\x12\\xae\\x63\\x09\\xc4\\x86\\xd9\\xe2\\xa7\\x8d\\xce\\xec\\xa4\\x73\\xa0\\x42\\x1d\\xd1\\xb6\\x43\\xc7\\x87\\x54\\x27\\x1b\\x53\\xce\"},\n{{0x3a,0x3d,0x27,0x97,0x0f,0xe2,0xac,0xb6,0x95,0x1e,0xdd,0x5c,0xa9,0x0d,0xda,0x0f,0xc6,0xdd,0x22,0x9c,0x0a,0x56,0xdf,0x6e,0xb1,0x1a,0x9c,0x54,0xd2,0x42,0xdb,0xbf,},{0x56,0x4f,0x0d,0xc3,0xdc,0x47,0x20,0xe6,0x8e,0x44,0xdd,0x16,0x71,0x1e,0x04,0x9e,0x61,0x12,0x00,0x00,0x98,0xfa,0x62,0xa1,0xb9,0x8c,0x28,0x80,0x42,0xf7,0xc3,0xbd,},{0x22,0xeb,0x8e,0xa0,0x50,0x73,0x49,0xb6,0xa0,0xac,0xe2,0x5c,0xf9,0x18,0x0c,0xb0,0x8e,0x03,0x57,0xb0,0x45,0x02,0x90,0x5f,0xbe,0x69,0xb4,0xe2,0x1b,0x2b,0xd9,0x4e,0x22,0xcf,0xbd,0xb8,0x51,0xae,0x71,0x6a,0x5c,0x25,0x3c,0x70,0xd5,0xe2,0xb2,0x4e,0xa7,0x8f,0x35,0xbc,0x21,0x32,0x92,0x54,0x3d,0x94,0xe1,0x41,0x10,0xb2,0x41,0x06,},\"\\x43\\x74\\xf6\\x1c\\x2c\\xd8\\x8a\\x3b\\x89\\x72\\x24\\x9b\\xfa\\x79\\xb3\\x6a\\xb6\\x9e\\x3e\\xd4\\x84\\xcc\\x60\\xe5\\xd9\\x54\\x1f\\xa7\\x68\\x6c\\xf4\\xee\\xd1\\x21\\x0c\\x5d\\x0d\\xcf\\x42\\xdd\\x25\\x97\\x25\\x01\\x90\\x91\\x93\\xca\\x76\\xae\\x6e\\xb7\\xf4\\x71\\xd8\\xbd\\x0d\\x5f\\xb5\\xa6\\xb4\\x31\\xbc\\x3d\\xe0\\xe0\\x31\\x8d\\x50\\x51\\x45\\x24\\xde\\x87\\xc4\\xb8\\x30\\x05\\xdf\\xb4\\x12\\x45\\xfb\\x1a\\xf7\\x9b\\x84\\xa9\\x7b\\x83\\xd3\\xca\\xc7\\xad\\x7a\\x53\\x36\\x4e\\x2e\\x9b\\x21\\xc9\\x7b\\x76\\x9b\\xdc\\x57\\xf0\\x70\\x31\\x16\\x16\\x83\\x80\\xf3\\xcc\\x88\\x36\\x89\\xeb\\x4a\\x7f\\xa3\\xb2\\x6d\\xbe\\x12\\xbc\\x28\\xf8\\xc4\\x03\\x81\\xaf\\x64\\xdf\\x4b\\x53\\x61\\xd1\\x74\\xcf\\x75\\xac\\xbd\\x46\\x42\\x87\\x40\\xb0\\xd1\\x32\\x2d\\x32\\xbb\\xe9\\x48\\x45\\x21\\x59\\x66\\xae\\x58\\x87\\x77\\xa8\\xc0\\x53\\x36\\xe3\\x52\\x30\\x6d\\x49\\x27\\x8d\\x32\\x8e\\x49\\x6d\\xb6\\x5e\\x9e\\xcf\\x6c\\xe6\\x40\\x5e\\xd1\\xc8\\x93\\x49\\x0b\\xc4\\x8c\\x13\\xa1\\x34\\xe1\\xfb\\x6e\\x80\\xde\\xbe\\x6d\\x32\\xfc\\xe6\\xef\\x74\\x78\\x3c\\x8d\\x77\\x98\\x0a\\x44\\x1a\\x26\\xae\\xb4\\xfd\\x83\\xcc\\x85\\x53\\x52\\xce\\xdc\\x18\\x8f\\x52\\x79\\xce\\x21\\x1f\\x74\\x4a\\x40\\xb2\\x3c\\xe7\\xff\\x24\\x43\\x7a\\x1d\\xd3\\x37\\x3e\\xc5\\xb2\\x90\\xda\\x1f\\x94\\xf4\\x3a\\x07\\xa3\\xff\\xea\\x5b\\x5f\\x67\\xb5\\x2c\\x19\\x61\\x85\\xbc\\xe9\\xe9\\xa8\\x58\\x25\\x7f\\xcd\\x7a\\x8e\\xba\\xf9\\x04\\x0e\\xd0\\x91\\xfa\\xce\\x5a\\x15\\x5a\\xa4\\x47\\xfa\\x15\\xe1\\x21\\x22\\xd2\\x5e\\x8f\\xc3\\x6e\\xae\\xe2\\x13\\x7c\\x7b\\x3a\\xa3\\x0b\\x7e\\x3f\\xf6\\xcc\\x86\\xb6\\xdc\\xb9\\xea\\xf4\\x9c\\x95\\x76\\xf0\\xf4\\x62\\x00\\x84\\x39\\xcb\\x1a\\x3a\\xba\\x01\\x3e\\x89\\x7a\\x0f\\xaf\\x99\\x4c\\xb7\\xd5\\x9e\\xde\\x57\\x74\\xbb\\x14\\x47\\x74\\xf7\\x3c\\xa3\\x0e\\x64\\x14\\xa7\\xcc\\x7c\\x74\\xb2\\x0c\\x51\\xa1\\x40\\x4d\\xdc\\x41\\x9e\\xf7\\x62\\x45\\x93\\xe9\\xbc\\xfb\\x37\\xc0\\xa7\\x62\\xea\\xb6\\x8f\\xac\\xa5\\x86\\x34\\x43\\xe1\\x6e\\xdb\\x75\\x9d\\xbc\\x87\\x88\\x73\\x2b\\x9e\\x4f\\x59\\xc1\\x11\\x92\\xc3\\xfc\\xc8\\x72\\xaf\\x55\\xf3\\x2d\"},\n{{0x06,0xd4,0x98,0x31,0x8d,0xa4,0x56,0x24,0x2b,0x9c,0x3b,0x9a,0xb6,0xd5,0x32,0xa1,0x28,0xfc,0xe0,0x44,0xf5,0x38,0x82,0x68,0x2e,0x92,0x62,0x14,0x9c,0x16,0x52,0x88,},{0x41,0x35,0x17,0xaa,0x63,0x20,0x0a,0x17,0x17,0x32,0x09,0xa4,0xb3,0xe7,0x8a,0xb9,0x38,0x3c,0xb4,0xe3,0x9e,0xfd,0x67,0x94,0xc4,0x6a,0x2d,0x13,0xfa,0xfa,0x99,0xc0,},{0x82,0x50,0xf7,0x6d,0xc5,0x99,0xc5,0x12,0x87,0x87,0xe4,0xf6,0xd3,0xda,0x23,0x17,0x33,0x30,0xce,0x33,0x20,0xdb,0xa9,0x59,0xbd,0x71,0x4c,0xc8,0xcc,0x07,0xc6,0x79,0x45,0xd6,0x3e,0x75,0x66,0x2c,0x07,0x5e,0x26,0x74,0x60,0xab,0x7b,0xf5,0x61,0xf2,0x4f,0xaa,0xe3,0xb4,0x1d,0xbf,0x67,0x68,0x99,0x19,0x1e,0x3b,0x02,0xb5,0xaf,0x0a,},\"\\x3f\\xe3\\x0e\\xcd\\x55\\x07\\x7a\\x6e\\x50\\xdf\\x54\\xbb\\x1b\\xf1\\x24\\x8b\\xea\\x40\\x63\\xe3\\xfa\\x75\\x5f\\x65\\xfc\\xd1\\x15\\x9e\\xe0\\x46\\xef\\xd0\\xeb\\x5f\\x2f\\xbb\\x38\\xb5\\xc0\\x09\\x47\\xc9\\x7d\\xc8\\x79\\xb3\\x6b\\x9e\\x53\\x61\\x92\\x28\\x60\\x86\\xd0\\xdc\\x12\\x05\\x36\\x10\\x38\\x61\\x74\\xa7\\xc5\\x6f\\x22\\xa8\\x5b\\x73\\xff\\x20\\x8c\\x59\\x44\\xf3\\x93\\x23\\x6c\\x32\\x41\\x58\\x09\\xda\\x03\\x6e\\x73\\xca\\xd8\\xfc\\x3c\\x30\\x37\\x80\\x64\\xa7\\x6a\\xfa\\x93\\x0a\\x3b\\xaa\\xe9\\xaa\\x35\\x70\\x61\\xa8\\xc5\\xe8\\xe7\\x56\\xa9\\xce\\xcf\\x94\\xb7\\x2d\\xf4\\x3f\\xac\\xd8\\x8f\\xa4\\x9c\\xb4\\x94\\x8c\\x63\\x68\\x31\\x8a\\x6b\\x1e\\x5c\\xff\\x52\\xe5\\x87\\xec\\xdf\\xae\\xfd\\xb6\\x90\\x81\\xf2\\x8c\\x2d\\x13\\xbf\\x8e\\xab\\x81\\xdb\\xaa\\x5e\\x37\\x28\\xc4\\x31\\x7f\\xb7\\x93\\xdd\\x19\\x6b\\xca\\x0f\\xe5\\x4a\\x6c\\x24\\x2c\\xf2\\x6e\\x2d\\x12\\x9b\\xa0\\xd8\\x2a\\x2c\\x3a\\x45\\xbc\\x8d\\x1d\\xfd\\x6f\\x54\\xf8\\xda\\x4f\\x51\\x89\\xc9\\x1a\\xc2\\x14\\xfd\\xab\\xf4\\xc5\\x97\\x38\\x1b\\x2e\\x5c\\x40\\xcc\\x71\\xfa\\x70\\x51\\xcf\\x2e\\xa9\\x39\\x06\\xa3\\x7d\\x57\\xdf\\x12\\xd5\\xc7\\xe5\\xcd\\x77\\xc9\\x07\\xe4\\x42\\x56\\x63\\x15\\xba\\xe5\\x1a\\x22\\x22\\xd6\\x2e\\x3f\\x42\\xd1\\x76\\x78\\x82\\x63\\x7d\\x66\\xa1\\xd5\\x30\\x5a\\xb4\\x01\\x0a\\x0e\\x49\\xc5\\x7d\\xef\\x69\\xdc\\xea\\x83\\x9e\\x1b\\x76\\xa4\\x11\\x35\\xba\\x95\\x2c\\xc4\\x24\\x95\\x0e\\x8d\\x3a\\xac\\x19\\xe1\\xd9\\x3d\\xe7\\x75\\x7c\\x15\\xff\\x99\\x97\\xb3\\xd2\\xa8\\x61\\x3c\\xd9\\xa1\\x64\\x78\\x1d\\x1b\\xe3\\x31\\x79\\x9f\\xa6\\x10\\x9c\\xef\\x61\\x43\\x05\\xa1\\x95\\x8f\\x62\\x90\\x3c\\x8c\\x9e\\xa0\\xb2\\x3b\\xa7\\x06\\xd4\\x9c\\x54\\xba\\xcc\\xc1\\xe6\\x3c\\xb4\\xbf\\x14\\x78\\x5f\\xc7\\xb0\\x62\\xa9\\x80\\x03\\x49\\xbd\\xb0\\xbb\\x92\\x72\\x60\\xb6\\x77\\xb6\\x0f\\x10\\xe6\\x2c\\x87\\x80\\xf3\\xeb\\xb5\\xeb\\x6f\\xf0\\x36\\x02\\x63\\xd4\\x57\\xab\\x52\\xfd\\x11\\x25\\xc9\\xce\\x04\\x6a\\x95\\xd8\\x9d\\x28\\x73\\x50\\xc8\\x04\\xcf\\xd4\\xff\\x2b\\x2d\\xdd\\x18\\xa9\\xe1\\x35\\x19\\xf2\\x0b\\x4d\\x1e\\x05\\x1a\\xf6\\x24\\x64\\x0f\"},\n{{0x8e,0x8e,0x1d,0xb5,0xb1,0x10,0x2e,0x22,0xa9,0x5c,0x47,0xaf,0x36,0x61,0x46,0x9f,0x00,0x0a,0x33,0xf1,0x3b,0x8b,0x87,0xb1,0x15,0xd2,0x45,0x2a,0x41,0x1f,0x6f,0x39,},{0x56,0xd7,0xb3,0x16,0x9a,0x95,0xc2,0x29,0x98,0xec,0x93,0x79,0x25,0xbd,0x7c,0xad,0x13,0xcc,0x65,0x80,0x8c,0xd5,0xd3,0x4a,0x6c,0x4d,0xa8,0x70,0xea,0xf3,0x23,0x64,},{0xf6,0xee,0x5e,0x13,0xcf,0xaa,0x36,0x2c,0x89,0x71,0xd5,0xa4,0xa8,0x79,0xa7,0xe3,0x69,0x66,0x52,0x5c,0xcd,0x86,0xc5,0xa4,0x8c,0xba,0x08,0xd9,0x13,0xec,0xe1,0xa7,0x9c,0x4c,0xd1,0x46,0xb8,0xe9,0xc6,0x51,0x25,0xfb,0xad,0xf1,0x7b,0xac,0x1c,0xab,0xcd,0xe8,0xfd,0x17,0xcf,0xd6,0x8f,0xa1,0xf9,0xc4,0x4e,0xa6,0x1c,0x08,0xa4,0x05,},\"\\xb2\\x46\\x34\\xfb\\xdd\\x1b\\x76\\x61\\x31\\x5d\\x9d\\xc1\\x53\\xba\\x90\\xd6\\x6a\\x88\\x62\\x2a\\x41\\x58\\xf8\\xbc\\xff\\x25\\xba\\x9c\\x29\\xe6\\x5f\\x29\\x7f\\x8e\\x60\\x31\\x18\\x00\\xb7\\x33\\x1b\\x69\\xfc\\x20\\xc9\\xf8\\x5b\\xb7\\xc1\\x84\\xbd\\x40\\x86\\xb3\\xa9\\xf9\\xa2\\x71\\x02\\xb6\\x23\\x62\\xbd\\xb4\\xfa\\x5b\\x20\\x15\\x94\\x25\\x0f\\xc6\\x28\\xfd\\x2e\\x0e\\x0d\\x1b\\xe0\\x3d\\xcf\\x81\\x8c\\x60\\x94\\xc4\\xc2\\x91\\x21\\xcb\\x2b\\xf6\\xd9\\x08\\xed\\x8a\\xab\\x42\\x7c\\x37\\x71\\xc0\\xc9\\x5f\\x0a\\xc1\\x46\\x9a\\x08\\x10\\xb6\\x03\\xa4\\x70\\x28\\x2e\\x59\\x80\\xa6\\x07\\x29\\x19\\x7f\\xe6\\xc2\\x0e\\xf6\\x81\\xcd\\x1b\\x96\\x93\\x2d\\x20\\x58\\xf8\\x96\\xea\\x74\\x16\\x42\\x2a\\x7e\\x54\\x1f\\x22\\x4a\\x5f\\x04\\x25\\x30\\x80\\x74\\x1c\\x5d\\x4e\\x3e\\xb0\\x39\\xdb\\x6b\\xa0\\x51\\xb4\\xca\\x54\\x17\\xce\\x8a\\xfd\\xc7\\x02\\x14\\xba\\x4d\\xcc\\x85\\xb6\\x23\\xd1\\x1e\\x68\\x1c\\x60\\x09\\xae\\xe4\\xe6\\x13\\x0a\\x83\\xed\\xd0\\xd2\\xc9\\x9f\\xb0\\x64\\x7e\\x11\\xed\\xe7\\x30\\x1a\\xe5\\x6b\\x59\\x90\\x4e\\xf7\\x02\\x57\\x32\\xcd\\xe0\\x38\\x80\\x1e\\xc7\\xe8\\xd9\\x0a\\x9a\\x1b\\xba\\x04\\x7f\\xe6\\x28\\x35\\x1b\\x3b\\x89\\xd0\\xbc\\x5a\\xe6\\x65\\xa7\\x00\\x89\\x1f\\x09\\xeb\\xee\\xc0\\x55\\x91\\x84\\x2a\\xdf\\xcc\\x25\\xad\\xc3\\xc7\\x1c\\x1e\\xbc\\x4a\\x31\\x2e\\x54\\x71\\xbe\\x67\\x25\\x3b\\x0e\\x94\\x28\\xb0\\xca\\xe3\\x76\\x45\\xa0\\xf7\\xec\\xb8\\x9d\\xd7\\x9f\\xbd\\x9b\\xe2\\x87\\x54\\x33\\x66\\x7a\\xe0\\x7d\\x74\\xa7\\x98\\x3c\\x4c\\xea\\x60\\x1e\\x72\\xe9\\x75\\xc2\\x1d\\xf9\\x93\\xe7\\xfa\\x22\\xa9\\xfa\\xbd\\x45\\x45\\x5d\\x45\\xe3\\x70\\x31\\x55\\x8e\\x13\\xa7\\xa4\\xf5\\xf4\\x97\\xea\\x78\\xfb\\x73\\x99\\xf8\\x83\\x8c\\x0f\\xd5\\xde\\x4e\\xbb\\x66\\xdb\\x29\\x0f\\x43\\xa4\\x86\\x7d\\x50\\x53\\x09\\xf1\\xc1\\xbc\\x27\\xe9\\xfa\\xbc\\xbb\\xa7\\x13\\x02\\xfc\\x12\\x04\\x71\\x5c\\xe3\\xfc\\xb0\\x90\\x5b\\xfa\\x41\\x1c\\x9d\\x1c\\x9a\\xb4\\xa3\\x99\\x54\\xe5\\x0b\\x8e\\x0c\\xf7\\x36\\xc1\\x02\\x89\\x56\\x3b\\xdf\\xa9\\x67\\x55\\x3c\\x36\\xcd\\x9e\\x55\\x5b\\xc8\\xcc\\x56\\xbe\\x59\\x48\\x47\\xde\\x9f\\x26\\xf9\"},\n{{0x38,0x84,0xb8,0xb7,0x9a,0xbf,0xd3,0xbe,0x6c,0x13,0x98,0x5e,0xb8,0x59,0xab,0x74,0x3f,0x15,0x7c,0xd9,0xde,0xb8,0x1b,0x2f,0xe9,0x7e,0xa4,0xd6,0x17,0x3e,0x46,0xf5,},{0xbd,0x7f,0xd9,0xa8,0xde,0xf1,0x3a,0x54,0x2e,0xd2,0xf2,0xfb,0x04,0x88,0x86,0x88,0x5b,0xa9,0xb5,0xce,0x59,0xcb,0x70,0x19,0xfb,0x54,0x66,0x79,0x86,0xee,0xbc,0x26,},{0xf4,0x20,0x6f,0xcd,0x34,0x50,0x24,0x41,0xd5,0x4a,0x73,0x32,0x3f,0x33,0xa5,0xdb,0xb4,0xc9,0x85,0x57,0x31,0x9f,0x21,0x24,0x6f,0x26,0x0f,0xfb,0xbe,0x58,0x44,0x88,0x6d,0xb5,0x67,0xf4,0xb6,0x3c,0x47,0x94,0x3d,0xbb,0x78,0xfc,0x35,0x65,0x7d,0x7c,0x04,0xd4,0xfe,0xb0,0x42,0xff,0x85,0x36,0xf6,0x72,0x92,0x5c,0x31,0x9e,0xfb,0x09,},\"\\x12\\xad\\xaf\\xe3\\x0e\\xaf\\x2b\\x9c\\x72\\x03\\xca\\x5d\\x44\\xb9\\x7f\\xfe\\xd4\\xbf\\x65\\x17\\xa4\\x99\\x88\\xe4\\xe6\\x76\\xc8\\xe3\\x14\\xad\\xbd\\xbe\\x23\\xd8\\xf2\\xd3\\xe2\\xb0\\x81\\xa7\\x02\\x4f\\xa5\\x25\\xab\\x5a\\xae\\x26\\xe6\\x00\\x57\\xc1\\x01\\xe8\\xf3\\x68\\xd3\\xad\\xdb\\x93\\x76\\xc4\\x68\\x2c\\x1f\\x42\\x24\\xd7\\xf1\\x49\\xa8\\x47\\x4b\\xb9\\xa8\\xf6\\x63\\xef\\x21\\x0e\\x95\\x72\\xce\\x82\\x9d\\xa3\\x88\\xd8\\xaa\\xe7\\x2a\\x46\\x71\\x41\\xad\\xc1\\x53\\x47\\x3b\\xe3\\x65\\x3b\\xaa\\xa6\\x4b\\x5b\\x1e\\x2e\\x30\\x68\\x3f\\x6f\\x06\\xda\\xc2\\x78\\x4d\\x5b\\xbf\\x0d\\x08\\x2a\\xab\\x47\\x30\\x5e\\xd8\\xa8\\xef\\xd0\\x88\\x6c\\xe6\\x3a\\x17\\x93\\x15\\x22\\x5d\\x1e\\x4d\\x4f\\xfc\\xf1\\xf2\\x4a\\xc2\\xf4\\x64\\xcf\\x5e\\xd3\\xa8\\xb6\\xd3\\x99\\x84\\x54\\xf1\\xc0\\x2c\\xdb\\xf0\\xa4\\x44\\xee\\x2b\\x59\\xdd\\xbe\\x0a\\x17\\x4a\\x0d\\x93\\x7f\\xa6\\x28\\x65\\x08\\x8a\\xc6\\x47\\x49\\x99\\x57\\xd2\\x81\\xc6\\x94\\x98\\x03\\xa5\\xfb\\xdf\\xdd\\x0d\\xd9\\xe9\\x1b\\x69\\x76\\x86\\x1f\\x3c\\x5f\\x21\\x26\\xf3\\x9a\\xac\\x93\\x5b\\xe0\\x9f\\x4b\\x97\\x15\\xbd\\x4f\\x0d\\x5c\\x55\\xdf\\x73\\xa6\\xb9\\xf2\\xc0\\xad\\x26\\xce\\x49\\xd8\\x22\\xbf\\x85\\xbf\\xa2\\x34\\x6f\\x31\\x65\\xb0\\x38\\x59\\xa7\\x1c\\x3d\\x2a\\x7b\\x86\\xdb\\x6e\\x9f\\x2e\\x5d\\x7b\\x16\\x9a\\x91\\x0e\\xeb\\x7e\\xf3\\x8f\\xbd\\xfb\\xbe\\xc4\\x3a\\x9a\\x25\\xf0\\x4b\\xc3\\xac\\xfd\\x3b\\x06\\x91\\x54\\x2a\\xb6\\xde\\x9d\\xb6\\xf0\\x30\\x58\\xf9\\x58\\x40\\x24\\xf9\\x91\\x8e\\xde\\xcd\\x90\\xfb\\xb8\\x57\\x35\\xd6\\xdc\\xec\\x5b\\xd5\\x93\\xae\\x63\\xe2\\xcc\\x96\\x55\\x35\\x99\\xa3\\x10\\xf8\\xf2\\x00\\x9b\\xa9\\x53\\x71\\x19\\x6b\\x4d\\x5b\\x80\\xe7\\x55\\x96\\x37\\xf2\\x29\\x26\\x77\\x8b\\xe5\\xe1\\xcc\\xef\\x51\\x26\\xe2\\x44\\x3f\\xa9\\x39\\xc2\\xa5\\x3d\\xdd\\xb0\\x49\\x61\\xee\\xfd\\x34\\xe5\\x38\\xcd\\x8d\\x7f\\x0b\\xec\\x2b\\xff\\x1e\\xf0\\xd3\\xa4\\xbd\\xd3\\x58\\x31\\x76\\x37\\xf4\\x2d\\x59\\x55\\x38\\xc1\\x12\\x22\\x51\\xa9\\x4e\\x96\\x3d\\x1f\\x81\\xe7\\xb9\\xae\\xb1\\x64\\xf9\\x5d\\xa9\\xa4\\xed\\x75\\x29\\xb8\\x45\\xeb\\xc9\\x61\\xb2\\x7b\\x5c\\x19\"},\n{{0xec,0xd5,0x19,0xf2,0x87,0xad,0x39,0x50,0x52,0xb0,0xb3,0x0d,0xea,0xc3,0x41,0xd2,0xa9,0xdf,0x13,0xd6,0x56,0x7c,0x89,0x1c,0x81,0x3a,0x0c,0x9c,0xa5,0x2e,0x87,0x1e,},{0x8e,0xe9,0x4c,0x58,0x8e,0x0b,0x34,0x35,0x85,0xfc,0x67,0x48,0xfd,0x1b,0x54,0xb5,0x77,0x0c,0x64,0xe9,0x93,0x7a,0x56,0x35,0x7a,0x48,0xd4,0x4a,0xe2,0xf5,0x18,0x24,},{0xe8,0xf5,0x1b,0xe7,0x3f,0xc4,0xe0,0x23,0x5a,0xa1,0x53,0xa2,0xe1,0xb3,0x54,0xe9,0xc5,0xd2,0xd3,0x3a,0x11,0xae,0x0e,0x33,0x34,0x78,0xde,0x1d,0x8e,0x6c,0x44,0x56,0xd2,0xe2,0x50,0x82,0x4c,0x32,0x46,0xca,0x0e,0x8d,0x6a,0xe3,0xe1,0x66,0x77,0xa9,0x73,0x44,0x14,0x41,0x08,0xc1,0x3b,0x95,0x9e,0x1d,0xaf,0x51,0xcf,0x0f,0xe5,0x01,},\"\\xaa\\x71\\xbe\\x5f\\x55\\x7e\\x10\\xc9\\xfb\\x5f\\x09\\x1a\\x3a\\x27\\x44\\x53\\x94\\x7c\\x07\\xa0\\xe2\\x5b\\x26\\xf9\\x50\\x92\\x24\\x54\\x1d\\xff\\x76\\xf4\\xd9\\x6e\\xff\\xd0\\xd5\\xa4\\x1d\\x31\\x9b\\xc9\\x32\\x1a\\x86\\x66\\x7d\\x55\\xcf\\x49\\x43\\x2f\\xb5\\xc3\\xe7\\x15\\x38\\x8f\\x3f\\x10\\x6c\\x91\\x74\\xb1\\x61\\x0c\\x8f\\x30\\x75\\xd5\\x93\\x1c\\x29\\x00\\x99\\x38\\x5c\\xe9\\x24\\x9e\\x23\\x51\\x28\\xe9\\x07\\xc5\\x33\\x90\\x03\\x6f\\xbf\\x5d\\xa9\\x68\\xf8\\xd0\\x12\\x33\\x69\\x58\\xde\\x90\\xc5\\xe8\\xe6\\xb1\\x01\\x6a\\xd4\\x3f\\xb5\\x7c\\x8e\\x28\\x8d\\xaf\\xe1\\x4e\\x90\\xe6\\x4b\\x63\\x79\\x1e\\x5c\\xbe\\x55\\x7e\\x02\\xdf\\x8a\\xc9\\x37\\x06\\x42\\xa7\\x1f\\xaf\\x85\\x10\\x75\\xe5\\x56\\x5f\\x6f\\x9a\\x26\\x7f\\x4f\\x6b\\x45\\x4c\\xe4\\xc5\\x47\\x48\\x10\\xb8\\x04\\x84\\x4d\\xda\\x38\\x39\\x29\\x39\\x71\\x97\\x93\\x24\\x6a\\xa4\\x74\\x54\\xb9\\xb0\\xe8\\x2e\\x98\\x03\\xc0\\x99\\x35\\xd0\\x02\\x7f\\x39\\x95\\xcc\\xa9\\x71\\x30\\x69\\xbb\\x31\\x02\\x7f\\x7b\\x2a\\xf1\\x2f\\xe5\\xfe\\xec\\x7e\\xeb\\x06\\x84\\x3d\\x82\\x96\\xec\\x56\\x82\\x26\\x2a\\x07\\xda\\xe7\\x47\\xed\\x7b\\xc8\\x21\\xec\\x17\\x01\\x8d\\x89\\x9f\\xd1\\x67\\xb3\\x6a\\x7e\\x37\\x73\\xb4\\x27\\x49\\x9d\\x99\\xdc\\x58\\x3b\\xbe\\x4b\\x42\\x9a\\xfa\\x6a\\x26\\x59\\x39\\x53\\xf9\\x43\\xe4\\x67\\x3b\\xdd\\x0d\\x2a\\x84\\x42\\x56\\x13\\x16\\x03\\xcd\\x09\\x03\\x25\\x6f\\x33\\x4d\\x4f\\x8e\\xc8\\x2d\\xe1\\x15\\xb6\\xca\\x53\\x38\\xc7\\x5c\\x8b\\xaa\\x44\\xb4\\xba\\x96\\x3c\\x7c\\x78\\x51\\x0d\\x8d\\xe9\\xb2\\xa5\\x85\\x2f\\x42\\xf3\\x46\\x3c\\x68\\x5f\\xb3\\xa6\\xda\\x61\\xa8\\xe0\\x89\\x26\\x62\\xd6\\xa2\\x50\\xfc\\xaa\\x6f\\xef\\x74\\xd4\\x50\\xfc\\x45\\x7b\\x98\\x71\\xd0\\x8b\\xb5\\xbe\\x30\\x11\\x29\\x4a\\xc8\\x88\\xfc\\xe2\\x15\\xd5\\x35\\xc3\\xb1\\xa4\\x3b\\xb4\\x7e\\xfe\\x3a\\xd2\\x5d\\xa1\\x59\\x19\\x1a\\xed\\x55\\x19\\x54\\x69\\xc5\\x90\\x93\\xff\\xb2\\x4f\\x65\\xd6\\x0c\\x40\\x20\\xbf\\xbe\\x64\\x7f\\xf5\\xdb\\x7a\\xb8\\xa0\\x1d\\x5e\\x48\\x7b\\x0b\\x1b\\x64\\xef\\x25\\xda\\x15\\x6d\\xb1\\x42\\xe6\\xad\\x87\\x2a\\x4d\\xc1\\xee\\x9b\\xa6\\x68\\x46\\x52\\x65\\x37\\x9e\"},\n{{0x19,0x3f,0x3c,0x63,0x0f,0x0c,0x85,0x5b,0x52,0x9f,0x34,0xa4,0x4e,0x94,0x49,0x70,0xf4,0xa6,0x97,0x2e,0x6c,0x38,0x59,0x35,0x9c,0x2e,0x0c,0x87,0x62,0xba,0x9e,0xaf,},{0x32,0x56,0xf2,0xc8,0x2e,0x7c,0x80,0x12,0x01,0x21,0x01,0x40,0x56,0x9f,0xaf,0x18,0x50,0x7e,0x60,0x33,0x8c,0x2c,0xc4,0x11,0x8b,0xb1,0xce,0x60,0x5b,0x0e,0xbe,0x61,},{0xb1,0x25,0x10,0xac,0x5f,0x2f,0x6d,0x33,0x36,0x0c,0xdd,0xc6,0x72,0x91,0xd6,0xc2,0x70,0xfd,0x9e,0xe6,0x2d,0xc0,0x86,0xb3,0x8d,0x93,0x2d,0x26,0x47,0x3f,0xe9,0xa2,0x4e,0xfb,0xd4,0x24,0x88,0x67,0xea,0x7e,0x91,0x5a,0x30,0xc5,0xbf,0xb3,0xb8,0xb1,0x9a,0xa0,0x1a,0xa2,0xfe,0xbf,0x0d,0xac,0x6c,0xfd,0x66,0x38,0xa2,0xba,0x7e,0x0c,},\"\\x98\\x62\\x3f\\x65\\x16\\x98\\x08\\x5b\\xde\\x02\\x76\\x2e\\x8c\\x33\\x21\\xf1\\x4d\\xa1\\x61\\x9b\\x5c\\x3f\\x7c\\x1a\\x56\\x8e\\x8c\\x26\\xff\\x0c\\x62\\xfd\\xcc\\x41\\x24\\x75\\x91\\x2e\\xb8\\xe8\\xc4\\xb0\\xd3\\x09\\x18\\xb8\\xff\\xee\\xf3\\x50\\x93\\x15\\xe5\\x8d\\xa3\\x59\\xcd\\xc2\\xf2\\x6b\\xeb\\xfb\\x57\\x03\\x95\\x3b\\xe1\\x6b\\x8f\\x3b\\xeb\\x1e\\x54\\xa1\\xab\\xee\\x0a\\xeb\\xe2\\x4e\\x64\\xdb\\xe8\\x73\\x40\\x2e\\x15\\x6f\\x37\\xdf\\xc1\\x68\\xea\\xf8\\xa1\\x14\\xce\\x08\\xa6\\x79\\x5d\\x3f\\x64\\xf5\\x15\\x1e\\x9a\\x8b\\x82\\x75\\xcc\\x7b\\x49\\xa6\\xb8\\xd8\\xa6\\x6b\\x6d\\x4b\\x76\\x32\\xef\\x80\\x74\\x0d\\xc1\\xc1\\xb0\\xa3\\x8d\\x1a\\x28\\xf7\\xc1\\xb2\\x9f\\xa4\\x45\\x41\\xc1\\xaa\\xd3\\x54\\xd4\\x59\\x0c\\x23\\x1d\\xae\\x68\\x7a\\x2a\\x8f\\xed\\x09\\xe8\\xc1\\xeb\\xbf\\xcc\\x38\\xf3\\x47\\xbf\\x06\\xd9\\x45\\x77\\xe4\\x9a\\xd1\\x39\\xf7\\x10\\xed\\x8b\\xb1\\xfd\\x07\\x66\\x3c\\x03\\x20\\x84\\x6f\\xbb\\x45\\x5a\\xb8\\x37\\xef\\x96\\x4a\\xe7\\xd4\\xec\\xee\\xa4\\x5f\\xd7\\xbd\\x8d\\x50\\x9f\\x82\\x1e\\x6e\\xb0\\x27\\x49\\x4e\\xfd\\x8d\\xd8\\xe9\\x92\\xb8\\x86\\x98\\xee\\xc2\\xeb\\xc5\\xe0\\x30\\x25\\xbe\\x78\\x9c\\x18\\x01\\x3f\\x20\\x1f\\x77\\xaa\\x2d\\x34\\xf5\\x68\\x64\\x60\\xe4\\x3f\\xb4\\x89\\xe0\\x87\\x76\\xf9\\x8b\\xcd\\xe2\\xce\\xeb\\x9d\\x4f\\xaf\\xdf\\xfe\\x03\\x75\\x60\\x43\\x71\\xec\\x32\\xf4\\x6b\\x81\\xfe\\xc4\\x74\\x38\\x29\\x08\\xe9\\xd2\\x50\\xa0\\xba\\x27\\x80\\xa7\\xd6\\xdf\\x40\\x7b\\xd2\\xb1\\xeb\\x12\\x67\\x48\\xd7\\x25\\x11\\xb9\\xb0\\x69\\xeb\\x1c\\xd4\\x42\\x70\\xf2\\x9f\\xe8\\x4b\\x9a\\x71\\x77\\x51\\x83\\x1d\\x04\\xc2\\x81\\x8e\\x40\\x8f\\x22\\x78\\x93\\x76\\xc6\\x1c\\x2c\\xa4\\x5e\\x32\\xe7\\x88\\xea\\xd3\\xa7\\x53\\x6b\\xf0\\x9d\\xa8\\xaf\\x47\\x03\\x90\\x2f\\x55\\x16\\xa0\\x20\\xd8\\x92\\x63\\xe9\\x37\\x01\\xa2\\x56\\x5e\\xef\\x12\\x70\\x41\\x89\\x25\\xf3\\x5a\\x28\\x8e\\x32\\x7b\\xab\\x62\\x8a\\xc2\\xf0\\x24\\x8c\\xfb\\xca\\x34\\x82\\xe2\\x65\\xd1\\x62\\x1c\\xc3\\x43\\xc3\\x1f\\x65\\x49\\x3f\\x06\\x4b\\xad\\x0d\\x76\\x02\\x46\\x07\\x15\\xfa\\x48\\x6f\\x29\\x42\\x63\\x46\\xaf\\x53\\xe3\\x33\\xb7\\x5f\\x59\\x05\"},\n{{0xa8,0x8a,0xd0,0x04,0x8d,0x38,0xc4,0x4c,0xeb,0xe7,0x35,0xea,0x38,0x02,0xca,0x57,0x6e,0x37,0x12,0x1c,0x7d,0x4d,0x76,0x0d,0xfd,0x88,0xde,0x16,0x63,0x06,0x4a,0xbb,},{0x14,0xdd,0x8b,0xb3,0x06,0x80,0x3e,0x5a,0x75,0x8e,0xd6,0x8a,0xd2,0x1d,0x07,0xd8,0x81,0x61,0xd5,0x0f,0x1c,0x74,0x71,0x37,0x77,0xda,0x12,0x09,0xaf,0xba,0xea,0x0b,},{0x13,0x41,0xa1,0x48,0xda,0x45,0x93,0xc8,0x8e,0xbc,0x5a,0x58,0x82,0x1e,0xef,0x77,0xf9,0x21,0x86,0x39,0x0f,0xf6,0x33,0xe7,0x62,0x07,0x08,0x4e,0x78,0x74,0xcc,0xf0,0xeb,0x1f,0x9e,0xc7,0x0a,0x3a,0x3f,0x96,0xb5,0x89,0x34,0xbc,0xb0,0x61,0xff,0x92,0x01,0x24,0xf7,0xe5,0x80,0xfa,0x2b,0x0b,0x27,0x95,0x83,0xad,0xf9,0x23,0x2d,0x0c,},\"\\x2c\\xe8\\xbc\\xa2\\x61\\x78\\x91\\x3b\\x16\\x76\\xe9\\x0f\\xfe\\xfd\\x94\\x5b\\xc5\\x61\\x98\\x26\\x60\\xe2\\xa7\\x5d\\x48\\x2f\\xf3\\x0a\\xab\\xa1\\xba\\x43\\xf8\\x2d\\x2e\\x6b\\x90\\x9e\\xc1\\x0f\\xc0\\x97\\x89\\xff\\x5c\\xf3\\x2a\\x51\\x80\\xb6\\x01\\xea\\x80\\xfa\\xde\\xce\\x6d\\x7e\\x7b\\xae\\xef\\x48\\x1d\\xc6\\x97\\x9e\\x2f\\x65\\x8a\\xe0\\xf6\\xd8\\xe4\\x16\\xb9\\x32\\x98\\xf7\\xd3\\x40\\x31\\xbb\\x76\\xf7\\x16\\xed\\x99\\x1a\\x16\\xd0\\x9a\\x58\\x2e\\x58\\xba\\x40\\x03\\xac\\x17\\xbe\\x8b\\x44\\x69\\xe1\\xa8\\x89\\xb2\\xfb\\xb2\\x28\\x9e\\x98\\xaf\\x1c\\x6d\\x5b\\xbe\\xe7\\x77\\x56\\x71\\x3c\\x07\\x78\\xb0\\xdc\\x44\\x6a\\x1f\\x6c\\x48\\xc4\\xd4\\x08\\x18\\xec\\x79\\x99\\x05\\xf0\\x69\\xbc\\x95\\x34\\x16\\x57\\xca\\x5d\\x02\\xb7\\xa5\\x39\\xa1\\x3a\\x02\\xcd\\x03\\x76\\xa5\\x0e\\x83\\x43\\xc0\\xdc\\x20\\x34\\x6d\\xe5\\x27\\x5b\\x1d\\xcd\\x4a\\xd7\\xaf\\x72\\x51\\x31\\xac\\x75\\xe9\\x54\\x82\\x5d\\x30\\xea\\xa5\\x7a\\x68\\xbb\\x98\\xdf\\xc4\\x1c\\xaf\\xe5\\x71\\x05\\x56\\x64\\x7b\\x38\\x7d\\x9b\\x7f\\xd4\\xe4\\x76\\x51\\xe5\\x13\\x80\\x50\\x79\\x8f\\x6d\\x40\\xf4\\xee\\x71\\x20\\xb5\\x8f\\x74\\xda\\x94\\xd7\\x3c\\xac\\xbf\\xd3\\x93\\xd1\\x34\\x73\\x88\\xee\\x00\\xb7\\x9b\\x8d\\xbf\\xeb\\x57\\x81\\x41\\x21\\xbd\\xda\\x60\\xc6\\x27\\xdc\\xe1\\x47\\xd4\\xd5\\x68\\xd7\\x90\\x52\\xe9\\x7b\\x9a\\x5f\\x3e\\xb5\\x40\\x7c\\xc4\\x64\\x61\\xa5\\x5e\\x18\\xa9\\x60\\xd8\\x09\\x4a\\x5f\\xea\\x48\\xb6\\x93\\x75\\x29\\xcc\\x4e\\xc9\\x19\\xcd\\xbe\\xdf\\x91\\x85\\x45\\x6d\\xc0\\x0e\\x8d\\x98\\xad\\x15\\x37\\xee\\x10\\xa0\\x57\\xf4\\xee\\xc4\\xb8\\x1d\\xc6\\x03\\x92\\xfc\\x91\\x88\\xd3\\xe5\\x61\\x78\\x59\\x65\\x09\\x2e\\x44\\x31\\x7f\\x2a\\x48\\xe3\\x66\\x05\\xfc\\x58\\x3f\\xc1\\x73\\xb0\\x5d\\xb9\\xdc\\xbc\\x75\\x57\\xd0\\x64\\x87\\x39\\x0f\\xbb\\xba\\x77\\xaf\\x3a\\x01\\x4e\\x1a\\xc3\\x51\\x39\\xca\\xa1\\xc5\\x3a\\x8d\\x17\\x34\\x7f\\x17\\x8e\\x1c\\x54\\xd0\\xf5\\x2b\\x40\\xe9\\x10\\x42\\xc9\\x3e\\x7e\\x48\\x1d\\x79\\x2e\\x28\\x8f\\xc2\\x7e\\x4c\\x2f\\xcf\\x11\\x1f\\xe9\\x7d\\x9e\\x23\\x37\\xd2\\xfc\\x1c\\x30\\x98\\xf0\\x66\\x84\\xa3\\x1d\\x55\\xeb\\xf3\\x62\\xc0\\x27\"},\n{{0x3f,0x59,0xd6,0xa0,0x18,0xf5,0x0a,0x82,0x21,0x17,0xe5,0xb4,0x73,0x60,0x9e,0x30,0xcd,0x64,0x92,0x0c,0xa1,0xc2,0x75,0x0d,0xcb,0x09,0xea,0xab,0x80,0x7a,0x3e,0xac,},{0x45,0x7d,0x0e,0x59,0xc1,0x1f,0x34,0x8f,0x3b,0xfb,0xdd,0x3f,0x32,0x7d,0xe7,0x8c,0x0a,0x75,0x77,0xc0,0xae,0xef,0x42,0xd4,0xc1,0xe5,0x67,0x00,0xd1,0x08,0x80,0x8b,},{0xd7,0x42,0x5e,0xa1,0x94,0xa6,0x71,0x5c,0x45,0x2e,0xc4,0xf6,0xd6,0xc7,0x6e,0x6d,0xd3,0x74,0xd3,0xca,0x7a,0xe7,0xa1,0x19,0x95,0xd0,0x2b,0x94,0x2d,0x4a,0x31,0x87,0x0d,0xd7,0x34,0xc1,0x2f,0xca,0x89,0xa8,0xeb,0x02,0x13,0xeb,0x13,0x9c,0x14,0xa8,0x7a,0x6a,0x33,0xe8,0x18,0x60,0x3b,0x2e,0x31,0x30,0x23,0xfa,0x58,0x73,0x7d,0x0e,},\"\\x7d\\x10\\x3a\\x6c\\x6b\\xa2\\xd0\\x90\\x87\\xee\\xf2\\x25\\x4c\\x1c\\x90\\x3f\\x06\\x76\\x95\\xa5\\x4c\\x45\\x15\\xe4\\xd1\\x3b\\xc1\\xfb\\xfb\\x54\\xd6\\xe7\\xa1\\x67\\x34\\x9c\\x14\\x80\\x99\\x76\\xda\\x04\\xa7\\xe5\\x8d\\x96\\xb4\\x0a\\xac\\x3b\\x2b\\xdd\\x14\\xb9\\xb5\\x03\\x22\\xbb\\x11\\x64\\x5f\\x05\\xe5\\xe9\\x78\\xbc\\x7f\\xbd\\x02\\x49\\x2e\\xf8\\x8f\\x87\\xd6\\x68\\x28\\x0f\\xd7\\x08\\x37\\x32\\x07\\xff\\x67\\x0f\\xcd\\xa9\\x7d\\xf8\\x48\\x5d\\x5e\\x46\\xdc\\x3b\\xd0\\x43\\x47\\xf4\\xd7\\x52\\x7e\\xab\\x27\\x18\\xf7\\xd9\\x3d\\x13\\x2b\\xa7\\x75\\x82\\x18\\x89\\x4e\\x75\\xa7\\xde\\xab\\xe6\\x93\\x33\\x5b\\xa0\\xdc\\x73\\xbf\\x26\\xc2\\x88\\xbf\\xe9\\xbe\\x8a\\x73\\x6d\\x75\\xe5\\xe0\\xea\\xa7\\xbb\\xe8\\xd0\\xb7\\x7a\\xbd\\xd5\\x14\\x6e\\x0f\\xc9\\xb3\\x0d\\xb9\\xf0\\x7c\\xf4\\xbf\\x36\\x26\\x0a\\x1f\\x41\\x41\\x03\\x31\\xf8\\xb4\\x7c\\x6b\\x38\\x33\\x8c\\x6d\\xc9\\xe8\\x01\\xff\\xe1\\xd5\\x85\\xf9\\xb7\\xfc\\x31\\xe9\\x77\\x8b\\xca\\x30\\x27\\xc2\\x32\\xc0\\x74\\xcb\\x18\\xe5\\xb7\\x29\\x97\\x00\\x5f\\xfe\\xee\\x4b\\xf3\\x7c\\x8f\\x87\\x4b\\x1b\\x24\\x6a\\x63\\x45\\x41\\x5d\\xac\\xac\\xa7\\x07\\x5a\\x60\\x44\\x3a\\xc3\\x31\\x92\\x36\\xe2\\x3c\\xf6\\xb7\\x54\\x47\\x40\\x80\\x70\\x52\\x11\\x49\\x84\\xb8\\xd8\\xf7\\xe8\\x57\\xdc\\xc6\\xfa\\xec\\x88\\x69\\xcf\\x96\\xb9\\x97\\xdf\\xa9\\xaf\\x91\\x84\\xad\\x62\\x3f\\x1d\\x90\\xb8\\xca\\x75\\x9b\\x44\\x8e\\xab\\xfc\\xe1\\x8c\\x17\\xcf\\xdf\\x9a\\x3e\\x33\\x12\\xe6\\x3e\\x5f\\x08\\x4c\\xea\\x90\\x4c\\x1c\\x90\\x99\\x13\\xcc\\x4b\\x19\\xd0\\x44\\xa3\\x72\\x00\\x34\\x97\\x3c\\x73\\x84\\x94\\x9b\\xd6\\xf9\\xba\\x92\\x56\\xf9\\x8c\\xd3\\x94\\xc5\\x66\\xda\\x83\\xc3\\x11\\x80\\x10\\x9f\\x16\\xd1\\x03\\x47\\xb7\\xe3\\xe9\\xdd\\x6b\\xe3\\xbd\\x3c\\x77\\xff\\x1a\\x79\\x96\\xa0\\x78\\xdc\\xf8\\x9d\\xcd\\xce\\x2d\\x1b\\x61\\x56\\x95\\xf4\\xcc\\x9f\\x8f\\x4f\\x2a\\x08\\x80\\x46\\x41\\xbc\\xa8\\x26\\x62\\xce\\x88\\xfa\\xa5\\x31\\x45\\xb6\\xa4\\x59\\x55\\xae\\xc8\\xcc\\x2a\\xf8\\x1c\\xcc\\xb5\\xd7\\xc6\\x4f\\x9e\\xce\\x1c\\x99\\x83\\x32\\x64\\x84\\xa1\\xe5\\xec\\xe4\\xce\\x36\\x54\\x4d\\x63\\x73\\x5f\\x77\\x76\\xf2\\x1a\\x20\"},\n{{0xa1,0x21,0x2b,0x34,0xdb,0xca,0x63,0xb7,0x09,0x36,0x12,0xd0,0x5d,0xab,0x7b,0x4c,0xc8,0xf7,0xb6,0x76,0xa9,0x34,0xad,0x01,0xf6,0x59,0x85,0x1b,0x3b,0xb4,0x4e,0x4e,},{0xba,0x2f,0xcc,0xea,0x9a,0x08,0x05,0x91,0xbe,0x71,0x26,0x8d,0x7e,0x95,0x1f,0x25,0x0d,0xed,0xc0,0x04,0x16,0xe5,0xf3,0xf9,0x08,0xdb,0x6c,0xc5,0x71,0x25,0x49,0x25,},{0xfa,0x93,0xed,0x65,0x95,0xbc,0x95,0x8d,0xc0,0x42,0xce,0x16,0x45,0x16,0x7b,0x79,0xe8,0xf6,0x73,0x4c,0x46,0xf8,0x0f,0x63,0x1f,0xd5,0x48,0x49,0x08,0xf5,0xe5,0x1a,0x22,0x42,0x7e,0xe6,0x86,0xf5,0x64,0xff,0x98,0x2f,0x6e,0xf4,0xd2,0xca,0x1f,0x0c,0xa5,0x62,0x49,0x10,0xcd,0xd6,0x3c,0x11,0xa3,0xc2,0xb1,0x6d,0x40,0x97,0x3c,0x07,},\"\\x07\\xc3\\x7c\\x46\\xbe\\x3c\\x68\\xd0\\x56\\x89\\x57\\x7a\\xa6\\x4a\\x93\\x2b\\x90\\x64\\x46\\xb2\\x9b\\xaf\\x12\\xf6\\x17\\x4a\\x6b\\x42\\xbb\\xae\\xfd\\x1f\\x1f\\x37\\x3e\\x0b\\xcc\\xc4\\x73\\xdd\\xfc\\xee\\x1a\\x7f\\x21\\xb9\\x6a\\x62\\x60\\xef\\x0a\\xa1\\xf2\\xd8\\xb2\\x95\\x9e\\x71\\xd1\\x2c\\x95\\x33\\x58\\xa2\\x77\\x4c\\xc5\\xe6\\xf3\\x79\\xa3\\x13\\xe4\\x35\\xed\\x69\\xdf\\xd6\\xd4\\xa5\\x9a\\xde\\xe3\\xcc\\x7e\\xc4\\xba\\xcb\\xdb\\xb3\\xfe\\xe5\\x43\\x0b\\x73\\xf6\\x05\\x1a\\x60\\x96\\xc6\\x0e\\x9b\\xc9\\x2c\\xc8\\xfa\\x05\\x9f\\xac\\x2a\\x93\\xef\\x70\\x07\\xd6\\x4f\\xbe\\x50\\x06\\x49\\x64\\xd5\\xa0\\xad\\x60\\x11\\x75\\xcd\\x9c\\xab\\xa4\\x53\\xf9\\x10\\x3b\\x25\\x48\\x55\\x45\\xd3\\x01\\xf0\\x3c\\x5f\\x9f\\x94\\x78\\xbd\\xf9\\xd4\\x14\\xbf\\x1d\\xca\\x3b\\x1c\\x1d\\x9d\\xaa\\x99\\x71\\xf9\\xe6\\x17\\xfb\\xfa\\xf5\\xb0\\x2a\\x7f\\xbd\\x5d\\x4f\\xb8\\x94\\xc0\\x97\\x5c\\x54\\x59\\x2b\\x49\\xa0\\xfc\\x85\\xdd\\x08\\x53\\xf3\\x0c\\x51\\x50\\x2d\\x98\\xfc\\x1a\\xb8\\x5a\\x17\\xcc\\x58\\x96\\x1a\\xae\\x97\\x64\\x57\\x0b\\xa5\\xcb\\xdb\\xc9\\x6d\\xfc\\xeb\\x8d\\x11\\xda\\x53\\x36\\x4b\\x40\\x25\\xfe\\x0b\\x8b\\xa8\\xa3\\x53\\xad\\x23\\x68\\x67\\x20\\x16\\x9f\\xe9\\x73\\x43\\x2f\\xfe\\x29\\x1a\\x4b\\x11\\xde\\xdd\\xa0\\xaa\\xc7\\x9a\\x5e\\x42\\x62\\x0a\\x64\\x58\\x7d\\x20\\x59\\xe7\\x87\\x01\\x3b\\x40\\xce\\xec\\x59\\x92\\x08\\xf6\\x6e\\xd0\\xca\\x6e\\x1b\\xe9\\x09\\x2e\\xc2\\x7d\\xb2\\x16\\xee\\x6d\\xad\\xfe\\xbc\\x21\\x70\\x5b\\xc4\\xa8\\x5a\\xee\\x57\\x7e\\x57\\xd2\\x39\\xaf\\x58\\x6e\\xfe\\xec\\x22\\xcf\\x38\\xd1\\xcf\\xb3\\xcd\\x74\\xdd\\x0d\\x9a\\x33\\x81\\xaa\\x81\\xe6\\xa2\\x97\\xe3\\x9b\\x81\\x91\\x37\\xad\\x27\\xd4\\x75\\xe2\\xbf\\x54\\xaa\\x42\\x6d\\xc2\\x9c\\x4c\\xa8\\x17\\x6d\\xf3\\x43\\x13\\x7a\\x2d\\x79\\xd1\\x2e\\xf9\\xaa\\x7b\\xe1\\xcf\\x67\\x75\\xe5\\xd8\\xa4\\x43\\x0a\\x85\\xc3\\x3d\\xb6\\x1c\\xd2\\xf3\\x51\\x87\\xb4\\xf6\\xea\\x9e\\xbd\\xd7\\x53\\xd1\\xc4\\xef\\x72\\x47\\x11\\x59\\xff\\x07\\xb7\\x78\\x70\\x90\\x64\\x96\\x24\\x9d\\x42\\x78\\xe3\\xf3\\xca\\x6b\\xcb\\xf3\\x7a\\x26\\x5b\\x89\\x65\\x39\\x19\\x0f\\x9a\\x31\\xf1\\xe7\\xb4\\xb6\\x5c\\xd1\"},\n{{0xd9,0x68,0x20,0x86,0xfe,0x7d,0xda,0x30,0xb8,0x71,0x11,0x06,0x01,0x93,0xd8,0x47,0x56,0x6a,0xb9,0x4c,0xfd,0x9c,0x97,0xab,0x6b,0x43,0xe7,0xa8,0xd3,0xf7,0x93,0x82,},{0x8b,0x0b,0x13,0x72,0xd8,0x87,0x33,0xef,0x72,0x33,0xf6,0x37,0x97,0x90,0xd1,0xe4,0x6e,0x1e,0x07,0xe9,0xd3,0xfb,0x8b,0x0b,0xe2,0x52,0xed,0x04,0xc5,0xfa,0x16,0x3d,},{0x17,0x93,0xe4,0x97,0xeb,0x52,0x1c,0xa7,0x4e,0x35,0xd1,0x4a,0x63,0x86,0x8c,0xbe,0x94,0x99,0xda,0x2f,0x21,0xb4,0xeb,0x52,0x60,0x34,0x0f,0xca,0x3c,0x1f,0xec,0xa7,0x8d,0xbe,0x5b,0x14,0xac,0x10,0xf3,0xfa,0x76,0xfa,0x2e,0x71,0xe4,0xc9,0x14,0x61,0xaa,0x75,0x97,0x7e,0x5e,0x70,0x79,0x26,0x70,0xef,0x7f,0xf0,0xe6,0xa2,0x87,0x08,},\"\\xe8\\x81\\x4b\\xe1\\x24\\xbe\\x3c\\x63\\xcc\\x9a\\xdb\\x03\\xaf\\x49\\x3d\\x44\\x2f\\xf2\\x0d\\x8b\\x20\\x0b\\x20\\xcd\\x24\\x93\\x67\\xf4\\x17\\xf9\\xa9\\xd8\\x93\\xfb\\xbb\\xe8\\x5a\\x64\\x2b\\xe2\\x70\\x1d\\x1d\\x1b\\x3c\\xd4\\x8a\\x85\\xcf\\x58\\xf1\\x59\\xa1\\x97\\x27\\x31\\x43\\xa5\\x78\\xf4\\x2e\\x8b\\xcc\\x8b\\x62\\x40\\xf9\\x32\\x71\\x90\\x05\\x38\\xff\\xc1\\x87\\xc0\\xaf\\xc8\\xdb\\xcc\\x49\\x2b\\xcd\\x67\\x9b\\xaa\\xef\\x3a\\xf5\\x08\\x84\\x34\\xa9\\x45\\x86\\xf9\\x4b\\x49\\x97\\x0b\\xba\\x18\\xf5\\xea\\x0e\\xbf\\x0d\\x27\\xee\\x48\\x2a\\xa8\\x3a\\xd0\\xdd\\x0e\\xe6\\x09\\xdf\\x59\\xd3\\x7f\\x81\\x8b\\x2c\\x8d\\x7c\\x15\\xf0\\xf6\\xf5\\x44\\xdd\\x4c\\x7e\\x7c\\xb3\\xa1\\x67\\x24\\x32\\x4f\\x77\\xd5\\x89\\x48\\xf8\\x47\\x5a\\x60\\xd5\\x3e\\x5b\\xd5\\x10\\xc1\\x71\\x37\\xc9\\x9e\\x1c\\xfa\\x51\\x5a\\xf9\\xbc\\x85\\x56\\x9d\\x21\\x2a\\x21\\x19\\x07\\x29\\xf2\\x81\\x7d\\xe8\\xc4\\x69\\x15\\xe0\\x21\\xdf\\x70\\xff\\x6d\\x60\\x21\\x5f\\x61\\x4f\\xc2\\x11\\x39\\x90\\x4d\\xf3\\xb2\\x92\\xb7\\x49\\xdc\\x4d\\xea\\x02\\x51\\x8b\\x62\\xd1\\x58\\x62\\xc9\\x2d\\x2a\\x4c\\x99\\x67\\x01\\xcd\\xec\\xae\\xd8\\x4a\\xb6\\x28\\xee\\x98\\x4f\\xc1\\x11\\xee\\xcb\\x59\\xe4\\x84\\x44\\xef\\xc0\\xd4\\x56\\xe2\\xc8\\x52\\x51\\x84\\x41\\xc3\\xdb\\x76\\x30\\xdd\\xd5\\x15\\x62\\x49\\xa2\\x87\\x30\\x98\\x38\\x38\\xae\\x59\\xac\\x4c\\xc7\\x11\\x0f\\xd6\\xde\\x68\\x10\\x1e\\xa5\\xb2\\xff\\x69\\xfd\\x36\\x4e\\x3c\\x94\\x48\\xde\\xfe\\xfe\\x17\\x5b\\xcb\\xe1\\x17\\xcc\\x11\\xb4\\xff\\x75\\x49\\xc3\\x3e\\x10\\x25\\xb6\\xb5\\x92\\x04\\x8a\\x8e\\x31\\x96\\x9e\\x81\\x8d\\xcc\\x18\\x8b\\xb1\\x9d\\x7a\\x24\\x40\\xa3\\xba\\xba\\x4e\\xb1\\xb8\\x1c\\x45\\x67\\x9d\\xb4\\x6b\\x31\\xbc\\xde\\x77\\x76\\x75\\x7d\\x99\\x31\\xec\\x20\\x63\\xfc\\x6f\\x1f\\xcd\\x76\\x1e\\xcc\\x57\\xa7\\xd0\\x30\\xa8\\x5e\\xa2\\x73\\xef\\x18\\x25\\xb0\\x50\\x92\\xab\\x96\\x45\\x35\\x9a\\x44\\x4f\\xf7\\xd1\\x66\\xb5\\x75\\xfa\\xc2\\x98\\x30\\x8d\\x9f\\xaa\\x68\\x46\\x3d\\x1d\\x0f\\x7b\\x7d\\xf8\\xa5\\x1c\\x68\\x15\\xd3\\x71\\x59\\xad\\xc0\\xb5\\x93\\x22\\x4a\\x81\\x83\\x21\\xd7\\x21\\x9f\\x09\\x68\\x6c\\xfc\\x95\\x22\\x59\\x71\\x8d\\xfc\"},\n{{0xb5,0x2b,0x24,0x9a,0x7a,0xea,0xe0,0xfb,0xd9,0x4f,0xfc,0xf9,0xa9,0xfd,0xe1,0x0d,0xe6,0x1c,0x3f,0x4c,0xbd,0xa1,0x4b,0x28,0x9f,0xe0,0x1f,0x82,0x70,0x73,0x34,0xca,},{0x73,0x51,0x63,0xbf,0xcf,0xd5,0x4f,0x9d,0x35,0x2e,0x1c,0x2f,0x3c,0x01,0x70,0xc9,0x5c,0x18,0x42,0xcc,0xc7,0x42,0x16,0x23,0xae,0x04,0x96,0x98,0x0c,0xee,0x79,0x1c,},{0x6f,0x48,0xa9,0xf7,0xf0,0xfa,0x19,0x2b,0x66,0xd1,0x21,0x75,0xa3,0x33,0x61,0x23,0x03,0xe1,0x80,0xb9,0xfa,0xb1,0x8e,0xda,0xbe,0xbc,0xdf,0x66,0x74,0xfd,0xfc,0xc5,0x36,0x07,0x08,0x9b,0xf9,0x80,0xce,0x35,0x89,0x4c,0x2f,0x9b,0xab,0xdc,0x44,0x38,0x66,0x7a,0xb3,0x29,0x7a,0x62,0x48,0xec,0x02,0x69,0xfa,0xa9,0x9c,0x72,0x48,0x07,},\"\\x1d\\x44\\x5e\\x8e\\xe3\\x6f\\x6e\\x10\\x64\\xee\\x12\\x81\\xe6\\xb4\\xa4\\xce\\xc5\\x0a\\x91\\xc2\\xb6\\x67\\xc8\\x30\\x5d\\x1e\\x9a\\x5f\\x7b\\x73\\xa3\\x44\\x58\\x82\\x58\\x1f\\xb0\\xc1\\x1e\\x64\\xf6\\xee\\x92\\xe8\\x11\\xf9\\xf2\\xd6\\xc5\\x9c\\x63\\x44\\xbe\\x76\\x91\\xd1\\x16\\xdd\\xa4\\x93\\xca\\xde\\x51\\xc0\\xce\\x77\\x37\\x2b\\x61\\xa7\\xc4\\xfb\\xb6\\x33\\x40\\x13\\x33\\xcb\\xf7\\x13\\x72\\xad\\x2f\\x04\\x4e\\x99\\x2a\\xc0\\x35\\xf5\\x87\\x9c\\x05\\x30\\x04\\xf8\\x22\\x3f\\x23\\x7a\\x24\\xa4\\x09\\xb7\\x89\\x4f\\x6a\\xd5\\x18\\xe0\\x46\\xb8\\xa8\\x4c\\x3f\\x4c\\x62\\x60\\xe6\\x16\\x9f\\xd9\\x44\\xd5\\x7f\\xbc\\xf9\\xba\\x27\\x75\\xf2\\xd6\\x0e\\xd7\\x72\\xc4\\x6c\\xcd\\x63\\xc8\\x50\\xb8\\x0d\\x58\\x7c\\x52\\x08\\xdf\\xb1\\xa2\\x58\\x78\\xc0\\x2d\\xec\\xe3\\xe6\\x02\\xe9\\x63\\x2f\\xc3\\xc2\\xc7\\x9b\\x25\\xab\\x41\\x03\\x4c\\x6e\\x26\\xb8\\x69\\x25\\x53\\x57\\xa6\\x86\\x78\\x1d\\xfe\\x6e\\x64\\x4b\\xeb\\xa9\\xb6\\x27\\xda\\x1f\\xcb\\x5e\\xc0\\xbe\\x49\\x7c\\xf1\\x88\\xe1\\xef\\x1a\\xf0\\x60\\x1b\\xf1\\x6b\\x29\\x11\\xfd\\x9f\\xf3\\x4f\\x0e\\x97\\xac\\x95\\xa7\\xfe\\x2c\\xf9\\x0e\\xa6\\xce\\xd3\\x3c\\xcb\\x0e\\xd1\\xef\\x2d\\x41\\x60\\xef\\xb0\\x7c\\x59\\x1a\\x5c\\xb1\\x6c\\x70\\xca\\x16\\x94\\xfb\\x36\\xf2\\xca\\x19\\xeb\\xa5\\x2b\\xe3\\xd4\\xad\\x89\\x5a\\xbc\\xad\\xa4\\xb3\\x6f\\x02\\x61\\xd6\\x5f\\x59\\xe0\\xcf\\xd2\\xa6\\x14\\x8a\\x88\\x92\\xdd\\xbb\\x45\\x81\\x0d\\xb3\\xbf\\x4a\\x9e\\x26\\xe9\\x2c\\x15\\xea\\x26\\x18\\xcf\\xee\\xb4\\x62\\xd8\\x62\\x8f\\x25\\x4f\\x54\\xd2\\xaf\\x27\\x11\\x3b\\xab\\x4f\\x9a\\x7d\\x06\\x79\\x18\\x11\\x94\\x2b\\xdc\\x32\\xf8\\x45\\x92\\x2d\\x7b\\x2d\\xdb\\xa9\\x59\\x14\\x09\\x28\\xf8\\xc2\\x8d\\x98\\xb4\\x4e\\x1d\\x19\\xb9\\x7f\\xd3\\x9c\\xc0\\xf9\\xa5\\x23\\x6d\\x34\\x9f\\xc8\\x35\\xac\\x49\\x21\\x92\\x46\\x2e\\x40\\xac\\x62\\x9b\\xeb\\xff\\xd2\\xeb\\xa7\\x2d\\x27\\x88\\xb2\\x44\\xbb\\x77\\x7a\\xd0\\xf7\\xb7\\xf9\\x6f\\x23\\x41\\x23\\x99\\xfc\\x1d\\x87\\xa1\\xd0\\x87\\xba\\x08\\x90\\x27\\xea\\xbb\\xc0\\x5e\\xda\\xfe\\xe4\\x33\\x79\\xe8\\x93\\x29\\x13\\x31\\xb4\\x60\\xbf\\xa7\\x33\\x2e\\x08\\x42\\xec\\x25\\x73\\x39\\x3d\\xe9\\x53\\x06\"},\n{{0x78,0x2a,0x93,0xef,0xe0,0xef,0x06,0xcb,0x25,0x34,0x33,0x0e,0xfd,0x0e,0x96,0x84,0xe9,0x96,0x9b,0x52,0x58,0x12,0x3e,0x49,0x02,0x39,0xbf,0x24,0xbf,0x9f,0x65,0x23,},{0x94,0x2f,0xa1,0x40,0x6e,0xe2,0x68,0x3e,0x29,0x37,0x7e,0x49,0xf7,0xba,0x75,0x7c,0xf5,0x0e,0xf0,0x72,0x37,0x07,0xd4,0x40,0x3d,0x28,0x62,0x25,0x70,0x45,0xde,0x87,},{0x93,0xe7,0x40,0x5a,0x40,0x44,0x51,0x01,0x66,0xc8,0xac,0x26,0x4c,0xe3,0xb5,0xba,0x66,0x65,0xd6,0x8b,0xad,0x45,0x87,0x12,0xdc,0x93,0xc2,0xc3,0x90,0x56,0x8d,0x74,0x02,0xef,0x7d,0x57,0xf5,0x49,0xb8,0xa1,0x04,0x2f,0x7f,0x69,0xa6,0x79,0xaa,0x85,0x5f,0x34,0xf8,0x01,0xd5,0x7d,0x79,0x89,0x5d,0xeb,0x8d,0xea,0xdb,0x35,0x23,0x08,},\"\\x46\\xa4\\xe3\\x19\\xa6\\x70\\xac\\x99\\x39\\x94\\xa5\\x33\\x00\\xc3\\xf7\\x91\\x44\\xc2\\xf7\\xfe\\xc1\\x11\\x6e\\xee\\xb3\\x62\\x1c\\x76\\xac\\x35\\xda\\x79\\xdb\\xff\\x6e\\x18\\x9c\\xa9\\xdb\\xfc\\x9a\\xbb\\xda\\x05\\x48\\x47\\xb2\\x97\\x1b\\x02\\xfa\\xce\\xbb\\xe9\\x26\\xd4\\x69\\xeb\\x0a\\x86\\x03\\x89\\xac\\x74\\x41\\x62\\xbf\\x6f\\xb1\\x3b\\x42\\xcb\\x9b\\xb8\\xc9\\xd7\\x26\\x07\\x13\\x8e\\x78\\x00\\x12\\x1e\\xe0\\xcd\\x63\\x3e\\xd5\\x35\\xc7\\xae\\x5f\\x40\\x60\\xbb\\xdd\\x27\\x1c\\x9d\\x11\\x0a\\xbf\\xf5\\xe0\\x60\\xea\\x6e\\xe8\\x38\\x90\\xb1\\xe9\\x2a\\x92\\x56\\xd7\\xb2\\xba\\x98\\x2a\\x31\\x14\\xbb\\x6d\\xef\\xfe\\xe2\\x69\\x6f\\x0a\\x2f\\x9c\\x21\\xaa\\xa5\\xb2\\xde\\xfa\\x11\\xaa\\xb7\\x07\\x6d\\xe6\\xe5\\x7e\\x86\\xf2\\x84\\xbb\\x67\\xf5\\xa4\\x9e\\xe6\\x85\\x92\\x10\\x32\\xc9\\x5b\\x74\\xe7\\xe3\\xea\\xc7\\x23\\xf1\\x75\\xaf\\x08\\x2c\\x85\\x8e\\x0d\\xfa\\x01\\x72\\x8c\\x38\\xfb\\xbb\\x4c\\x83\\x58\\x1f\\x81\\xac\\xe6\\xc6\\x3c\\x6b\\xda\\xac\\x56\\x20\\xeb\\x9a\\x56\\x8e\\x7e\\xbb\\x7b\\x72\\xb3\\xd1\\xa1\\x64\\xef\\x52\\x4e\\x7b\\x9f\\x00\\x79\\x9a\\xb0\\x86\\x71\\x59\\x76\\xc1\\x4d\\x0d\\xf6\\x5f\\x7b\\x96\\xbf\\x9e\\xbc\\xda\\x7f\\xee\\xef\\x11\\x34\\x22\\x00\\x1a\\x03\\xa7\\x63\\x3d\\xf5\\xe4\\x99\\x39\\xa1\\x21\\xdb\\x89\\x9d\\x9b\\x8a\\xc2\\xdb\\x4f\\xad\\x0c\\x30\\xcf\\x0b\\x8b\\xdb\\xc9\\xe9\\x80\\x2a\\x79\\x7c\\x82\\x38\\xe4\\x65\\x11\\xff\\x24\\x06\\x8c\\xad\\xcf\\xf2\\x44\\x8c\\xc0\\xbf\\xf9\\x27\\x69\\x22\\x33\\x48\\xd4\\x5d\\x6b\\x6f\\x2c\\x8f\\x15\\x93\\x38\\x8c\\x0b\\xbb\\xf4\\x4b\\x6d\\xdb\\x50\\xb9\\x8c\\xd7\\xf0\\x9c\\x73\\x0f\\x7d\\xe4\\xd0\\x08\\x15\\x6c\\xb3\\xcd\\xe0\\xca\\xb3\\xad\\x0a\\x58\\xa8\\x39\\x54\\xe2\\x34\\xa0\\xa8\\xa0\\x4b\\x57\\x3c\\x9a\\x8e\\x9b\\x92\\x9e\\xd3\\x8b\\x8b\\x22\\x8b\\xf5\\x5a\\x3c\\x6e\\x2c\\x6b\\x51\\xf6\\x82\\x65\\x2f\\xbb\\x70\\x8e\\x74\\x64\\x0e\\x33\\x13\\xe1\\x7b\\x46\\x94\\xd7\\xfd\\xf0\\x11\\x1f\\x90\\x60\\x8c\\x1b\\x5a\\xf4\\x22\\xdc\\xde\\xca\\xd9\\xdd\\xb7\\xf5\\x0d\\x1b\\xf5\\xbc\\x63\\x78\\xcc\\xaf\\xfc\\x32\\x01\\xe6\\xc7\\x87\\xb4\\x8c\\x44\\x3b\\xa2\\x40\\xd9\\xd5\\x0f\\xf6\\xc0\\xe9\\xdf\\x7f\\x1a\\x5b\"},\n{{0x6f,0xe7,0xbc,0xf7,0xa6,0x84,0x42,0x3d,0xe1,0x07,0x6f,0xd7,0x6d,0xa7,0x83,0x42,0x33,0x73,0xb3,0x81,0x32,0x9e,0xfd,0x61,0x57,0x42,0x4e,0xc4,0xb2,0x65,0x5a,0x94,},{0x77,0x40,0xe9,0x1a,0xfe,0x45,0x32,0x4f,0x8b,0xb9,0x90,0xca,0x2a,0x34,0x12,0x79,0xdd,0xaf,0x23,0x2c,0x3b,0xb4,0x15,0xf1,0x78,0xb6,0x09,0x2f,0xba,0x19,0x5f,0xec,},{0x99,0x14,0xcc,0x50,0xfe,0xf0,0x93,0x5e,0xfb,0x89,0xb3,0xd6,0x4e,0x3c,0x1c,0x34,0x12,0xae,0xd6,0x59,0xb9,0x01,0x66,0x22,0x2c,0x0d,0x13,0xec,0x1c,0xe3,0xa6,0x8a,0xe6,0x28,0x1b,0x7e,0xfd,0x9d,0x4e,0xc6,0x4b,0x82,0xe7,0x3e,0x14,0x47,0x9f,0x03,0xfb,0xac,0x8f,0xa3,0xab,0xdb,0x41,0xea,0x42,0x15,0xc4,0xa4,0xd4,0x94,0x9d,0x09,},\"\\x0b\\xaf\\x0a\\xd4\\x40\\x61\\x2b\\x4c\\x5a\\x13\\x6c\\x3a\\x42\\xbe\\x1c\\xa2\\xb7\\xc3\\x19\\x86\\x2a\\x44\\xa9\\xfd\\x50\\xc4\\xee\\x73\\x54\\x1c\\x5e\\x64\\x57\\xef\\xa8\\x18\\x25\\xb6\\xdd\\x4a\\x72\\x19\\x4a\\x29\\x68\\x68\\x8b\\xd4\\x9e\\x5a\\x8f\\x4c\\x04\\xdb\\xaf\\xc2\\xe7\\x88\\x4c\\x0c\\x70\\xc2\\x08\\xd4\\xe9\\x54\\xcd\\x16\\x75\\xda\\x8e\\x74\\xc6\\x5c\\x49\\x7c\\xf9\\xdc\\x69\\x42\\x49\\x65\\xbd\\xcb\\xa5\\xde\\x52\\x93\\x6f\\x92\\x5f\\x62\\xe2\\x01\\xf9\\x95\\x05\\xd3\\x77\\x7b\\xeb\\x3c\\x2e\\x08\\xb2\\xec\\x9a\\x87\\x3e\\x5a\\x9c\\x21\\xfb\\x4a\\x2f\\x3e\\x86\\x1f\\x3c\\xf4\\xd6\\xb5\\xdc\\xd1\\xc8\\x8b\\xcd\\x91\\x63\\x53\\x9a\\xc6\\x2c\\xd0\\x65\\x9f\\x4e\\xf2\\x32\\xc2\\xce\\x57\\xfc\\x77\\xf9\\x02\\x85\\xeb\\x35\\x01\\x69\\xed\\xc6\\xa8\\x06\\xff\\x50\\xf6\\x1c\\x7e\\x0b\\xee\\xeb\\xec\\xec\\x63\\xbf\\xc9\\xd3\\x98\\x3f\\x5b\\xb4\\xb2\\x61\\xc7\\x46\\x47\\x1f\\xcb\\xf2\\x89\\x2c\\x61\\x08\\x97\\x0b\\x68\\xdb\\x5e\\x43\\xc4\\x50\\x4d\\xda\\xe2\\xd0\\xff\\xff\\xa2\\x8b\\x67\\x59\\xae\\x11\\x28\\xe1\\x6f\\x66\\xd4\\x92\\xad\\x61\\xe3\\x72\\x2c\\x96\\x0f\\x88\\x69\\x2b\\xe8\\x1a\\x9f\\x41\\x28\\x90\\xff\\xa3\\x46\\xe7\\x02\\xc8\\x67\\xdf\\xa2\\x59\\x70\\x3b\\x73\\xf5\\x25\\x07\\x4f\\x32\\x27\\xc4\\x9c\\xec\\x1b\\x64\\x5a\\x10\\x3b\\xd4\\x47\\x1f\\x33\\xf9\\xf1\\xba\\xc3\\x27\\xd7\\x91\\x78\\x61\\xd0\\xad\\x91\\xab\\xee\\x60\\x22\\x2e\\xa2\\xa3\\xc8\\xca\\xc0\\x52\\xae\\x9a\\x2c\\xbd\\x90\\x85\\x5d\\x73\\x3d\\x53\\x19\\x13\\x3f\\x95\\x41\\xbd\\x0b\\x61\\xf0\\x99\\x52\\x68\\x35\\x1e\\x28\\x63\\xc1\\xca\\x2c\\xa5\\x1e\\x3c\\x97\\x63\\x83\\xf5\\xc4\\xc1\\x1f\\xf4\\x10\\x03\\x6f\\xd5\\x1d\\x5a\\xc5\\x6b\\x02\\x3c\\xe9\\x02\\x9c\\x62\\x0f\\x22\\x55\\x70\\x19\\xad\\x9b\\x42\\x64\\xed\\x4d\\x71\\xb4\\x34\\xf4\\xa4\\xd1\\x7a\\x7d\\x57\\x69\\xfa\\x1e\\x14\\xa6\\x9f\\x7a\\xe4\\x19\\xcc\\xf5\\x94\\x7f\\x8c\\x76\\x82\\x69\\x71\\x16\\xc2\\x40\\x5f\\x5a\\x19\\x59\\xc5\\x4b\\x48\\xf0\\x87\\x2f\\x59\\x6e\\xd4\\x59\\x64\\x48\\x8d\\xde\\xc1\\x2b\\xdb\\x63\\x6d\\x0b\\x34\\x9e\\x74\\x9e\\xb6\\x60\\x92\\xff\\x45\\x11\\xfb\\xa5\\x9b\\x59\\x62\\xcb\\x93\\xcc\\x85\\x51\\x5c\\xc8\\x6a\\xb0\\xc6\\xb2\"},\n{{0xdd,0xa4,0x8a,0x0d,0x15,0xa2,0x9e,0xba,0x9a,0x76,0x30,0x5d,0x36,0x0e,0x46,0x6e,0x72,0xd8,0x04,0x0e,0xfe,0x2e,0x89,0xc0,0x4b,0x64,0x61,0x31,0x5a,0x9b,0x8b,0xf4,},{0x4f,0x5c,0xc3,0x6a,0x80,0x94,0x16,0xb5,0x8e,0x15,0xd2,0x4c,0xc5,0x79,0x68,0xcb,0x57,0x3b,0x76,0xad,0x90,0x88,0x7a,0x8e,0xf3,0x6c,0xde,0x7e,0xca,0x40,0x0f,0xcc,},{0xce,0x71,0xbc,0x82,0xd5,0x31,0xd0,0xf9,0x3b,0x57,0xbf,0xdc,0x2f,0x73,0x16,0xcf,0x40,0x4e,0xe0,0x9a,0xf8,0x8f,0x33,0xbf,0x80,0x6c,0x7c,0xad,0x6b,0x8f,0xfa,0x36,0x62,0x36,0xba,0x74,0xe7,0x5c,0x15,0x09,0x6d,0xda,0xa6,0xe3,0xa6,0x2a,0x8f,0x5e,0xb1,0xc8,0xc3,0xf6,0xb6,0xc9,0x4a,0x6a,0x34,0x9f,0xc7,0xc0,0xcb,0xfb,0x19,0x0d,},\"\\xf5\\xac\\x19\\xb8\\x1f\\x21\\x11\\xa0\\xdb\\x0a\\xe3\\x0d\\x15\\x13\\xed\\x34\\x3e\\x7f\\x57\\xf7\\xf7\\x7d\\x65\\xb8\\xac\\x7c\\xe3\\xa6\\x01\\x17\\x4b\\xae\\xd9\\xbf\\xa1\\x36\\x03\\x59\\x76\\xf5\\x16\\xd5\\xa8\\x70\\xf4\\x5d\\xb1\\x91\\x9f\\x1e\\xb1\\xcb\\xec\\xbe\\x88\\xec\\x32\\xd1\\x91\\xe9\\x24\\x88\\x21\\xa7\\xe7\\x68\\x1f\\xe3\\xab\\xec\\x11\\x58\\x4b\\xdb\\x33\\xde\\x1b\\x4c\\xa9\\x48\\x91\\xeb\\x66\\xdc\\xb8\\x53\\x9a\\xc4\\x11\\x63\\x73\\x6c\\xcf\\xd6\\x9a\\xbb\\x83\\x81\\x4d\\xd3\\x8c\\xd6\\x03\\x81\\x31\\x87\\x28\\x05\\x2a\\x25\\xcb\\x66\\x54\\x71\\x05\\x86\\x50\\xcc\\xc7\\x57\\x56\\xdb\\xee\\x68\\x8a\\xb8\\x26\\xec\\xad\\x4a\\xd5\\xa7\\xdb\\x57\\xe8\\xf6\\x5f\\x1b\\x64\\xab\\xff\\x82\\xdd\\x53\\x33\\x4b\\x79\\x7a\\xc4\\x02\\x28\\xdd\\x81\\x7f\\x23\\x9d\\x3e\\xe8\\x04\\xa1\\x9a\\xea\\xc8\\xcf\\xe3\\x3e\\xb6\\x57\\xec\\x9c\\xe9\\x23\\xd6\\xb3\\x88\\x91\\x4c\\xfb\\xa2\\xe7\\x2b\\xfc\\x2b\\xc3\\xd6\\xf9\\x85\\xc0\\xd9\\x75\\x34\\xdb\\x95\\x8e\\xed\\xe5\\x7b\\x16\\x49\\x1f\\xfb\\x75\\x5c\\x1a\\x58\\xd7\\x8a\\xb3\\x77\\xfa\\xec\\x0d\\x31\\x18\\x18\\xe8\\x99\\x26\\x0e\\x3e\\xbd\\x1c\\xcd\\x29\\x24\\x6f\\xa8\\x2d\\x0b\\x76\\x62\\x2b\\x2c\\x4b\\xc5\\x2f\\x54\\x9f\\xee\\x72\\xa3\\x0f\\x55\\x4f\\x33\\x1f\\x36\\xd2\\xa7\\x4d\\x99\\x9e\\xc1\\x0a\\x08\\x29\\x4f\\x00\\x2b\\x43\\x61\\xe5\\x90\\x27\\x9c\\x2f\\xb1\\xbd\\xa4\\x31\\x2c\\xcb\\x24\\xd7\\x52\\x82\\xce\\x7c\\x06\\x1a\\x0c\\xa5\\x52\\x0c\\x74\\xf6\\xf6\\x33\\x3b\\x18\\xc4\\xb5\\x41\\xcb\\x6c\\x51\\xe0\\x15\\x75\\xba\\x80\\x51\\x2f\\xfa\\x7c\\xe0\\xac\\xcd\\x22\\xd1\\x40\\x27\\xc5\\x3a\\xba\\x1f\\x74\\x37\\x83\\x5f\\x11\\x14\\xd6\\x8e\\x3a\\xcf\\x3f\\xf8\\xde\\x94\\xc8\\xe4\\xef\\x6d\\x3a\\xb3\\x12\\xc9\\x1d\\x02\\x97\\x01\\x57\\x50\\x8f\\x54\\xa5\\x81\\x6f\\x46\\x7a\\x21\\x4e\\x9b\\x12\\x84\\x30\\x02\\x89\\xe6\\x5f\\x36\\x5a\\x61\\x0a\\x8e\\xa2\\x84\\x66\\x6c\\xfe\\x55\\x18\\xe4\\x35\\xbc\\xcd\\x21\\x62\\x75\\x01\\xc7\\x25\\xf0\\xb8\\xeb\\x57\\x25\\xe0\\xe0\\x6e\\x0c\\xef\\x5d\\xb2\\x01\\xb4\\x8e\\xc9\\x1e\\xbf\\x87\\x8d\\xd5\\x7c\\xe8\\xda\\xc7\\x33\\x48\\x48\\xa1\\xbc\\x82\\xc1\\x8b\\x06\\x59\\x55\\xe4\\xf5\\x9b\\xe3\\x39\\x85\\x94\\xdc\"},\n{{0xec,0x57,0xb9,0x41,0xad,0xf3,0xca,0x13,0xe7,0x7a,0x78,0x05,0x77,0xcf,0xd0,0xdf,0x5b,0x49,0xed,0xc8,0x53,0x51,0x05,0x2d,0xa3,0x4e,0x99,0xf8,0xa9,0xbf,0x32,0x08,},{0x28,0x59,0xc0,0x71,0x97,0x8a,0x04,0xb7,0xf5,0x40,0x7b,0x6d,0x22,0x40,0x1a,0x78,0xef,0xd0,0x39,0x4b,0xb9,0x66,0xb9,0xa0,0x4d,0xa6,0xb5,0xef,0x81,0x9d,0xe3,0xfa,},{0x11,0x8e,0x14,0x62,0x12,0x6b,0x45,0xb8,0xc6,0x80,0x35,0x23,0x75,0x5c,0x56,0xdf,0xc4,0xe1,0x23,0xe4,0xac,0xbb,0x66,0xba,0x0b,0xa6,0xfe,0x3e,0x05,0x3d,0xa4,0x11,0x9f,0x57,0x19,0x29,0x5e,0x0c,0x82,0xac,0x64,0xd7,0xc5,0xcb,0x1a,0xc8,0x98,0xdf,0x26,0x3d,0xdf,0xd3,0x60,0xf3,0x00,0x8d,0x91,0x01,0x8b,0x26,0xf6,0xa1,0x73,0x0a,},\"\\xd2\\xbc\\xbd\\x1b\\xc3\\x61\\xab\\x32\\xc6\\x6d\\x72\\xfd\\x48\\xa8\\xe2\\x27\\xdc\\x6b\\x8d\\x6b\\x15\\x08\\x48\\xba\\x71\\x5f\\xf4\\x7d\\xd3\\x5c\\x8e\\x49\\x38\\x1b\\xb4\\xe2\\x93\\x3f\\x42\\xcd\\x26\\xb7\\x5b\\x14\\xd9\\xc0\\x03\\x92\\x82\\xb6\\x2b\\x85\\x56\\xaa\\xa1\\x1c\\xd6\\x91\\xe8\\x28\\x38\\x2b\\xe3\\x06\\x88\\x9f\\xc9\\x20\\x51\\x37\\xb1\\x69\\xd3\\xbf\\x17\\xb7\\xf3\\x76\\x93\\xfc\\xe2\\x86\\x03\\x9f\\x03\\x80\\x9d\\x7d\\x9d\\x98\\xc8\\xfd\\xe4\\x6f\\x11\\x01\\x94\\x2a\\x27\\x9c\\x51\\x67\\x06\\xf5\\x01\\x91\\xa9\\x11\\x2f\\x6a\\x24\\x63\\x0e\\x1a\\x26\\xc3\\x21\\xe4\\x6c\\x9c\\xcc\\x85\\xb6\\xef\\x94\\x2f\\x35\\x3a\\x64\\x2b\\x9e\\x7e\\xf9\\x98\\xc0\\xfc\\xe2\\xd3\\xa7\\x5b\\x99\\x9e\\xeb\\x77\\xf3\\x1f\\x9b\\x08\\x13\\xa9\\x7e\\x30\\x14\\xc3\\xa8\\x6e\\x25\\x58\\x73\\x46\\x21\\xa3\\x06\\x6d\\xae\\x35\\x84\\x50\\x31\\xe3\\x56\\x65\\xf1\\x92\\x29\\x07\\xdb\\xb7\\x39\\x78\\x6a\\x8b\\x76\\x58\\xab\\x60\\x27\\x6f\\x2d\\x92\\x1d\\x1a\\x51\\x23\\x0f\\xc7\\x4d\\x19\\xe8\\x01\\x84\\xa4\\xf1\\x0e\\x9e\\x83\\x4a\\xbc\\x9a\\x36\\xc4\\x29\\x72\\x6b\\xc0\\x55\\xdc\\x8c\\x06\\x3f\\x0e\\xca\\x9c\\x61\\xa8\\xa9\\x70\\xbd\\x4b\\xb5\\xf4\\x24\\xee\\x4d\\x04\\xbf\\xc2\\x95\\xe3\\xbb\\x1f\\x34\\xbe\\xcb\\xd9\\x92\\x0f\\xe2\\xe7\\x7f\\xcf\\x36\\x76\\x3f\\x32\\xfc\\x9c\\xfd\\x5e\\x46\\x59\\x79\\xc1\\x67\\xca\\xbf\\x5a\\x12\\x44\\xb4\\x91\\xfc\\x06\\xb8\\x94\\x64\\x19\\x04\\x6b\\xa5\\x16\\xc5\\xb2\\x33\\xc4\\x14\\xdd\\xef\\xb6\\xda\\x04\\xf2\\xe1\\x3d\\xaf\\xf7\\xa9\\xa0\\xc0\\x2a\\x51\\x8e\\xde\\x57\\xad\\x95\\x21\\xde\\x64\\xed\\xdf\\x6f\\x49\\xa9\\x67\\x0f\\x63\\x2d\\x3f\\x7d\\x42\\x42\\x52\\x07\\xd0\\x53\\x60\\x4f\\xe3\\x9d\\x13\\xb9\\xf5\\x2c\\x8b\\xc2\\x92\\xb0\\x07\\x6e\\xa4\\x2a\\x56\\x00\\x56\\xdf\\x25\\xde\\x51\\xad\\x35\\x88\\x1d\\x08\\x54\\x32\\x24\\xd7\\xfa\\x5d\\x70\\xb8\\x60\\x3e\\xf2\\x3c\\xe0\\x63\\x39\\xd6\\xcd\\x09\\xe2\\x2a\\x95\\x74\\x9e\\x50\\xdf\\xbd\\x3b\\x8a\\xd6\\x9f\\xd3\\x04\\x96\\xb9\\x84\\xd1\\xc0\\xa1\\x99\\xc8\\x59\\x48\\x05\\xf3\\x8b\\xa4\\x46\\x31\\xa2\\xc5\\x9e\\xad\\xc6\\x55\\x4d\\x19\\xf9\\xbc\\x98\\x36\\x6d\\xfd\\xec\\x2a\\x12\\x1d\\x0e\\x48\\x14\\xd2\\xcd\\x3f\\x58\\x71\"},\n{{0xcb,0xfd,0x91,0xd7,0x69,0x5c,0x1f,0x27,0x0f,0x69,0x24,0x6a,0xb3,0xdf,0x90,0xed,0xb2,0x14,0x01,0x10,0x1c,0xa7,0xf8,0xf2,0x6c,0x6d,0x00,0xf4,0xdc,0xb7,0x23,0x3e,},{0x51,0x38,0x79,0xcf,0x79,0xd2,0xf4,0x6d,0xf4,0xb8,0x5a,0x5c,0x09,0x49,0xeb,0x21,0x16,0xab,0xf9,0x81,0x73,0x5a,0x30,0x31,0x64,0xcb,0xd8,0x5a,0xdf,0x20,0xb7,0x52,},{0xf3,0x36,0x13,0x7d,0xfe,0x6f,0x42,0xa6,0x66,0x9b,0x55,0xf7,0x4b,0x80,0xb3,0x03,0x5a,0x04,0x03,0x67,0xf9,0x06,0x56,0xfc,0xef,0x0a,0x64,0x4c,0x52,0x27,0x2d,0xdc,0x39,0x27,0x3c,0xd7,0x72,0x60,0x10,0xeb,0xcd,0x8a,0x30,0xa0,0x52,0x01,0xab,0x70,0xb8,0xff,0x97,0xd0,0x28,0x8a,0x2c,0xb9,0x4c,0xbc,0x49,0x02,0x06,0x47,0x39,0x0b,},\"\\x26\\x4a\\x93\\x3f\\x7d\\x0a\\xec\\xba\\xc1\\x3e\\xef\\x64\\x4b\\x0b\\x53\\xdd\\x53\\xa1\\x28\\x09\\x04\\x10\\x0d\\xbc\\x1a\\xb8\\x7b\\x51\\x14\\x89\\x98\\xf9\\xda\\x0b\\x3a\\x0a\\x63\\x37\\xf5\\xe3\\x48\\x6c\\x2b\\x7e\\x54\\x8d\\x21\\x12\\x59\\x39\\x7a\\xaa\\x19\\x4e\\xe4\\x69\\x5b\\xf9\\x8c\\x2d\\x5f\\x44\\x87\\x69\\x9f\\x73\\x97\\xe5\\xd3\\xa7\\xe6\\xd5\\xf6\\x28\\xfb\\xd0\\x54\\x97\\xc5\\x56\\xa5\\x0a\\x4d\\x05\\xe2\\xb7\\x12\\xcd\\xbc\\x35\\x10\\x68\\xe4\\x2a\\xf1\\x95\\x38\\x90\\x1b\\x88\\x25\\x31\\x0e\\x34\\x3e\\x1a\\x17\\xa1\\x86\\x7d\\xde\\x0e\\xb4\\x7d\\xda\\xb4\\x56\\xd3\\x16\\xf3\\x52\\x15\\x54\\x93\\x7b\\xf8\\x08\\xae\\x4e\\x4b\\xc1\\xc3\\xc5\\xb4\\x75\\x6e\\x4a\\x16\\x5a\\xd9\\xe8\\x82\\x7f\\x53\\x16\\xf7\\x48\\xca\\xc6\\x99\\x8e\\xd2\\xd2\\x10\\x4f\\x26\\x84\\x07\\xc1\\x35\\xe6\\x2f\\x26\\xa9\\x22\\x46\\x0e\\xab\\x6d\\x85\\x16\\x39\\xa0\\x0e\\x5f\\x08\\xb3\\x47\\x65\\xea\\x02\\x44\\xf4\\x75\\xbb\\xfe\\xac\\x18\\x3e\\x3b\\x5b\\xd1\\xaa\\xb7\\x98\\x52\\x27\\x98\\xa0\\x8e\\xc6\\xbf\\x22\\x57\\xd4\\x69\\x2f\\x5b\\x03\\xcd\\xd0\\xa2\\x13\\x3d\\xe9\\x70\\x60\\x3e\\x32\\x51\\x47\\x5a\\xad\\x8d\\x93\\x4a\\xf6\\xb2\\xbf\\xc7\\xa6\\x50\\xb9\\x1b\\xde\\xc1\\x43\\xf8\\xad\\x25\\x4c\\xfa\\x50\\x6b\\xbf\\xf2\\x8a\\x03\\xbe\\xb6\\x59\\xef\\x5e\\x5d\\xdf\\xfe\\x76\\xe2\\x32\\x30\\xc4\\xcc\\xd4\\x63\\x10\\xb3\\x7d\\xd9\\x1f\\xa6\\xaa\\x68\\x16\\x7f\\x62\\xa5\\x5c\\x8a\\x69\\xf9\\xed\\x1e\\xc6\\xcd\\xb1\\x44\\xdd\\x81\\xab\\x0b\\xcb\\xd6\\x26\\x43\\x42\\x0b\\xca\\xe6\\x78\\x69\\xf6\\x4c\\x0b\\x16\\x9f\\x3c\\xdf\\x3c\\x90\\x58\\x95\\xb7\\xd3\\x5b\\x6f\\xaf\\xda\\x25\\xcc\\xf2\\x3c\\x3d\\x10\\xde\\x32\\xe7\\xf2\\x71\\xe3\\x00\\xd3\\x95\\x97\\xda\\x8f\\x84\\x37\\x22\\xef\\x08\\x36\\x4a\\x5f\\x7a\\x10\\x5b\\x96\\x55\\x17\\x2d\\xf7\\xc8\\x2d\\x73\\x74\\xf9\\x82\\x64\\xc9\\xcd\\xcc\\xb4\\x96\\xf2\\xe1\\x0f\\xd8\\x26\\x2f\\xb1\\xa9\\xa9\\x96\\x5b\\x0b\\x84\\x1a\\xc0\\xd0\\xe9\\xc1\\xa3\\xd9\\x49\\x3e\\xa7\\xaa\\x60\\x02\\x05\\xb8\\xf9\\x00\\xbe\\x0d\\x7a\\xbb\\x4d\\x98\\xa0\\x65\\x83\\xd2\\x29\\x5c\\x27\\x63\\x18\\xbe\\x28\\xd4\\x21\\x98\\x2d\\xed\\xd5\\xbf\\xc3\\x3b\\x88\\x65\\xd9\\x4e\\xf7\\x47\\xd6\\x26\\xaf\\x99\"},\n{{0x51,0xa4,0x19,0x7a,0xb7,0x68,0x6f,0x82,0xf6,0x00,0x3a,0x0c,0x32,0xf3,0x9d,0x0f,0x2e,0x47,0x55,0x5f,0x4e,0x9f,0x8d,0xee,0xe7,0x5b,0xcb,0x1b,0xd1,0xef,0x69,0xe5,},{0x06,0x38,0x6d,0xf8,0x6b,0x61,0xf1,0xf8,0xf4,0xdc,0x45,0xb7,0x3e,0xda,0xa8,0x41,0x92,0x09,0x68,0xbb,0xd1,0x31,0xcc,0x5c,0xa1,0xc5,0x29,0x4e,0xee,0xd5,0xc8,0xba,},{0x2c,0x07,0x29,0x69,0xff,0x47,0x19,0x21,0x2a,0x12,0x19,0x38,0xb5,0x06,0xc6,0x02,0x99,0x5b,0x4d,0x02,0xa2,0x2e,0x61,0x98,0xd6,0xe8,0x7d,0xd6,0xae,0x07,0x62,0x25,0xac,0x70,0xbb,0x25,0xef,0x8c,0x0e,0xe8,0x1e,0xb6,0xfe,0x95,0x3d,0xf6,0xb1,0x81,0x59,0x49,0xe8,0xed,0x05,0x06,0xcb,0x01,0x2e,0x87,0x3c,0xd3,0x6c,0xd0,0x9b,0x0a,},\"\\x2a\\xed\\xb7\\xe8\\x2f\\x1f\\xe4\\xce\\x46\\x9a\\xda\\x48\\x34\\x5d\\x00\\x6d\\x1b\\x3b\\xff\\x40\\xeb\\x21\\x86\\x7f\\x51\\xfc\\xe9\\x65\\x64\\x0c\\x40\\x9e\\xc1\\x3a\\xd4\\xd5\\x2f\\x89\\x1b\\xd7\\x90\\x66\\xd6\\xb4\\xd9\\x44\\xca\\x86\\x8d\\x89\\x86\\xd2\\x42\\xb5\\x7e\\xcc\\xc4\\xc4\\xa4\\x88\\x29\\x1b\\x15\\x9c\\x8d\\xe4\\x39\\x2b\\xe4\\xb8\\x6f\\xeb\\xaa\\x75\\xea\\xc5\\xd2\\x2d\\x3c\\x4f\\x8d\\x6b\\xef\\x79\\xad\\xb9\\xb9\\x2b\\x49\\x14\\xd5\\xea\\x07\\xc7\\xf0\\x21\\xe2\\xc2\\x9f\\x58\\xd0\\x7b\\xe8\\xa0\\x84\\x10\\x0b\\xc1\\x52\\xd5\\x1c\\xa8\\x97\\xd7\\xc1\\x31\\x64\\x4d\\x08\\x95\\x32\\x2e\\x94\\x40\\xa8\\x33\\x9e\\x1a\\xa3\\x90\\xa7\\xf4\\xfc\\xb5\\x1d\\xdf\\xb6\\xdf\\x48\\xaa\\xf5\\x67\\x63\\x37\\xd8\\x7d\\xdd\\x85\\xb1\\xd9\\x25\\xe1\\xa9\\xc2\\x9f\\xe0\\x81\\x8f\\x51\\x4e\\xf7\\x2f\\x74\\x7a\\x67\\x49\\x46\\x47\\x69\\x07\\xa7\\xca\\x99\\xe9\\xdb\\x8d\\x20\\x96\\x41\\x05\\x7a\\x7f\\x44\\xa3\\x17\\xb9\\x09\\x74\\xbc\\x86\\xf9\\x61\\x7a\\x96\\x8a\\x76\\xa6\\xb8\\x38\\x7c\\xf5\\x85\\x3e\\x60\\x81\\x90\\xc1\\xa7\\x9f\\x1e\\x1d\\x68\\x6e\\x0d\\xe2\\x2d\\xb6\\xcd\\x9a\\xeb\\x85\\x32\\xc5\\xc8\\x5c\\xc9\\x0b\\x5a\\x01\\x85\\x79\\xf2\\x8e\\x50\\x2a\\x77\\x0a\\x4e\\xc6\\x75\\x26\\x3d\\x0d\\xd7\\x81\\xb4\\xfa\\x53\\xc9\\xdb\\xf8\\x09\\x8d\\x57\\xb3\\x3a\\xe2\\xaf\\xba\\xeb\\x3e\\x68\\x26\\x6a\\xd9\\xaa\\xb7\\x17\\x4b\\xa6\\x8c\\x64\\x79\\x88\\x39\\x92\\x67\\x0c\\xcf\\x3e\\x5a\\xc6\\xa1\\x7e\\x65\\xe3\\x1e\\x1f\\xdc\\x85\\xe2\\x69\\xc8\\x09\\x35\\xef\\x57\\x4f\\x20\\xd2\\x39\\x56\\x84\\x86\\xe7\\xd9\\x4a\\x4f\\x72\\x4a\\xb7\\x00\\x60\\x98\\xb2\\x4f\\x3f\\x61\\x58\\x76\\x91\\x43\\x5c\\x7f\\x29\\xce\\x4e\\x5c\\xa7\\x1b\\x2b\\x18\\x74\\x55\\x64\\x33\\xa3\\x58\\xc8\\xc5\\xef\\x3c\\x88\\x08\\x43\\x03\\x0c\\x2d\\x13\\xd5\\x1b\\x78\\xc9\\xbf\\x1a\\x88\\x24\\xe6\\x2e\\x11\\x18\\x44\\x39\\x6f\\x5a\\xf2\\xe2\\x5c\\x31\\x26\\xef\\x36\\x26\\xe2\\x6e\\xfa\\xfa\\xcf\\x99\\x83\\x0a\\xa4\\x12\\x12\\x33\\x2f\\x37\\x8a\\x16\\x72\\x33\\xa0\\xb4\\x22\\x13\\xaf\\xe3\\x6d\\x83\\xdc\\x45\\x82\\xa7\\x96\\x93\\xb9\\xd5\\x71\\xa5\\x77\\x12\\xa0\\x8b\\x85\\x66\\xd3\\x61\\xac\\x90\\x26\\x47\\xaf\\xc8\\x86\\x60\\x3e\\x24\\x28\\x3e\\xfb\"},\n{{0xb1,0x11,0x9c,0x36,0x11,0x8b,0x7a,0x06,0x5a,0x19,0x5b,0xfb,0x8b,0x79,0xa5,0xc2,0x87,0xe0,0x9b,0xd2,0x87,0xc2,0xda,0xac,0x5e,0x6b,0x01,0x16,0x4c,0x5d,0x73,0x7f,},{0x88,0xf2,0x18,0xec,0xba,0x99,0xe7,0x70,0xed,0x21,0x4a,0x8d,0x01,0xa9,0x2a,0x10,0x40,0x0a,0xca,0xf1,0xf6,0xee,0xd4,0x20,0x06,0x7e,0x13,0x6e,0xe2,0xc0,0xc6,0x70,},{0x24,0xec,0x1e,0x54,0xfc,0x7e,0x72,0x2d,0x37,0x55,0x1d,0x02,0xcf,0x13,0x5d,0x33,0xf5,0xd3,0xff,0x53,0x57,0x73,0xe0,0x29,0x91,0xee,0x85,0xff,0xd3,0xaa,0x29,0x99,0x7f,0x9c,0x46,0x44,0x70,0x19,0x7f,0xee,0x81,0xdc,0xe1,0x10,0x60,0x9f,0x87,0x0b,0x27,0xc1,0x8d,0xfb,0xcf,0xd9,0x32,0x05,0x48,0x52,0x5e,0x93,0x14,0x8e,0x22,0x05,},\"\\x88\\x16\\xb1\\xeb\\x20\\x6d\\x5f\\x6d\\xcc\\x2e\\x4c\\xc3\\x91\\xd2\\x32\\x09\\x00\\x6d\\xe9\\x35\\xe3\\x18\\x15\\x2e\\x93\\xfc\\x8c\\x2c\\xf0\\x8e\\x26\\x43\\x2b\\xad\\x9a\\xdb\\x32\\x03\\xd8\\x98\\xdf\\x0a\\x2e\\x7f\\x1f\\x83\\xdc\\x2f\\x3e\\xd3\\x20\\x5b\\xec\\x8e\\xfc\\xfd\\x31\\xad\\xc1\\xac\\xa5\\x75\\x5d\\xb9\\xbd\\x4e\\xfe\\x54\\xcc\\x17\\x07\\x30\\x77\\xde\\x4a\\x3f\\xdd\\x11\\x99\\x6e\\x84\\xb6\\xa0\\x52\\xf0\\x34\\xb4\\x10\\x99\\x22\\x6c\\x9c\\x27\\x2e\\xae\\x12\\x52\\x8f\\x16\\x58\\x1b\\x91\\xb8\\x12\\x85\\x0c\\x20\\x71\\x44\\xdb\\xff\\x3e\\x85\\x0c\\xca\\x84\\x8e\\xc2\\xb1\\xdd\\x16\\x47\\x44\\xd7\\xb5\\x93\\x37\\xd7\\xe3\\xef\\xef\\x00\\x81\\x62\\xe6\\x80\\xbd\\x4a\\x08\\x99\\xce\\xd6\\x0b\\x17\\x1f\\x8c\\xbe\\xb4\\x8c\\x51\\x58\\xdf\\x6c\\xbf\\xdb\\x26\\x24\\x08\\x81\\xbd\\x58\\xeb\\xb8\\xb6\\xa0\\x79\\x58\\x72\\x79\\x67\\x9c\\xb5\\xad\\x82\\xf3\\x71\\xb5\\x3c\\x80\\x13\\x80\\x4c\\x35\\x59\\x6c\\x88\\x7e\\x43\\x6d\\x23\\x92\\x6f\\x99\\x4e\\x09\\xd9\\x8f\\xbb\\x8c\\xe2\\x70\\x41\\x74\\xef\\x38\\xb6\\x82\\x62\\xa7\\xf1\\xa7\\x12\\xda\\x0e\\xf0\\xde\\xc6\\x39\\x60\\x68\\x14\\xb3\\xbd\\xca\\xf2\\x53\\xff\\x31\\xc4\\x8e\\x8a\\x75\\x2c\\x11\\x1b\\xd7\\x10\\x10\\x31\\xcc\\x3d\\x38\\xef\\xb0\\xc9\\xc7\\xf1\\x9c\\x59\\x08\\x15\\x84\\xa0\\xe0\\x15\\xee\\x7c\\x75\\xb1\\x0a\\x4c\\x51\\xff\\x54\\x3a\\x30\\xe5\\x2d\\x5f\\x94\\xd8\\x18\\x8c\\x6b\\x08\\xe9\\xdf\\x1e\\x84\\xa4\\xe2\\xc8\\x07\\x17\\x0a\\xc1\\x24\\xa7\\x71\\xb9\\x94\\x65\\xa0\\xd3\\x8b\\x1f\\x1c\\x63\\x30\\x40\\x3c\\x82\\x54\\x35\\x82\\xc5\\xbb\\x61\\xb2\\x20\\xde\\x1b\\x9e\\x0e\\xf6\\x9b\\xda\\xe2\\x60\\x23\\x18\\x1b\\xa4\\xcc\\x07\\x7a\\x5f\\x0d\\x42\\x57\\x32\\xac\\xe1\\x32\\xae\\x0c\\x6f\\xf0\\xbb\\x18\\xba\\xea\\x83\\xe8\\x87\\x7a\\xfb\\xe6\\x50\\xfe\\x0b\\xd0\\x20\\x93\\xf0\\x0a\\x7b\\x53\\x65\\x72\\x8d\\xcb\\x66\\xfb\\xb8\\x81\\xf5\\x92\\x94\\x50\\x58\\xa5\\xb3\\x50\\x66\\x5a\\xf9\\x1c\\x55\\x7a\\x54\\x72\\x50\\xad\\x29\\x5e\\x68\\xb4\\xfb\\x72\\x45\\x7c\\xfb\\x9d\\x5e\\xa1\\xa7\\xb2\\xa3\\x9c\\x9a\\xb7\\xd7\\xac\\xe0\\xaf\\x5d\\x51\\x66\\x9c\\xb6\\xc2\\xc4\\xc0\\x7b\\x22\\x56\\xd1\\x0e\\x5f\\xfc\\x6b\\x97\\xc6\\x60\\x00\\x63\\x13\\xc4\\xeb\\x8d\"},\n{{0xcb,0xb5,0x87,0x51,0x4e,0x0a,0x34,0xff,0xc3,0x4c,0xbc,0x04,0xf2,0x8c,0x9b,0x4f,0x64,0x65,0xf1,0xeb,0x22,0x5c,0xca,0x19,0xb8,0x64,0x87,0x6d,0xae,0xf3,0x7d,0x7f,},{0x6b,0x70,0x5d,0x46,0x77,0xd2,0xd8,0x49,0xb6,0x74,0x4b,0x1e,0xbe,0xd1,0x67,0xdb,0xcb,0xf6,0x45,0x92,0x4b,0x1f,0xf2,0xe6,0x36,0x07,0x94,0xbd,0xd0,0xe0,0x97,0x88,},{0x12,0x74,0xd6,0xf3,0x56,0xeb,0x64,0x14,0x72,0xb6,0xb9,0xe5,0xb3,0xce,0x65,0xd2,0x65,0x4e,0x6c,0xb8,0x7d,0x3a,0x83,0xfb,0x49,0xd0,0xf7,0xda,0x9c,0x44,0xbe,0x2b,0x53,0x26,0x04,0x46,0x5f,0x60,0x89,0xd6,0x80,0xd2,0xd9,0x4b,0x0e,0xdd,0x2b,0x6b,0x2b,0x80,0x5c,0x5e,0x84,0xc3,0x79,0xef,0xc0,0x59,0x67,0x3d,0x31,0x00,0x7a,0x09,},\"\\xbd\\xf7\\xd1\\x7c\\x70\\x67\\x96\\xef\\xd3\\x48\\x95\\x59\\xb5\\x27\\xb1\\xc0\\x58\\x4b\\x90\\x22\\xc9\\xcb\\xda\\x3a\\xac\\x51\\x46\\xda\\x34\\x0d\\x9c\\xea\\x69\\xf9\\x16\\x03\\x7c\\xd2\\x1b\\x3e\\xb1\\x10\\x43\\x48\\x88\\x0f\\xd5\\xc5\\xb7\\xc6\\x5f\\xf8\\x20\\xf7\\x49\\x93\\x46\\x01\\x69\\x51\\xcb\\x71\\x5d\\x8d\\xf2\\xb4\\x1c\\x88\\xcd\\x3c\\x66\\x10\\x54\\x58\\xb7\\xb5\\x90\\xc2\\x1c\\x1a\\xe2\\xf6\\xea\\x9d\\xde\\xa7\\x47\\x0f\\x25\\xe0\\x20\\x27\\xd1\\x71\\xe0\\xe5\\x74\\xa2\\xbb\\x21\\x64\\x2f\\x8f\\x9d\\xa5\\x08\\xe2\\x1d\\x8e\\x73\\x35\\xb5\\xac\\xe5\\x93\\x52\\x99\\x40\\x7b\\xd1\\xb0\\x1b\\xdd\\x14\\x23\\x13\\x3e\\xf0\\x45\\x23\\x4e\\x70\\x1f\\x55\\x54\\x94\\x34\\xad\\xe9\\x4a\\x60\\xbe\\x1e\\x14\\x06\\xca\\x5c\\x75\\x8c\\x36\\x79\\x9c\\xe1\\x70\\x30\\x84\\x47\\x6e\\x48\\x4f\\xb1\\x74\\x05\\x30\\xae\\xe8\\x42\\x66\\xd0\\x7a\\xdf\\xb4\\xcc\\x68\\x9f\\x32\\x65\\x13\\x3a\\x59\\xcd\\xf9\\x92\\xfb\\xb9\\xa4\\xb1\\x2d\\xef\\xbe\\x24\\x1d\\xdb\\xf6\\x5d\\x12\\xb2\\xfb\\xdd\\xfc\\x05\\xaf\\x0f\\xb8\\xde\\x42\\x08\\x07\\x75\\xba\\xd2\\x9c\\x6b\\x04\\x59\\x84\\x1c\\xbb\\x64\\x8a\\x9a\\x95\\xe4\\x8d\\x6e\\x36\\xac\\x51\\x44\\x80\\xa3\\xde\\xb4\\xb3\\x65\\x54\\xd8\\xda\\x62\\x08\\x08\\xae\\x9d\\x47\\x32\\x97\\x10\\xd2\\x0a\\xaa\\x6e\\x5d\\x7f\\x54\\x7d\\x81\\xad\\x30\\xf8\\x4c\\x0e\\x3d\\x23\\x9c\\xde\\x5b\\x16\\x9d\\x9d\\xdf\\x29\\x48\\x32\\xd6\\x7a\\x80\\x60\\xba\\x32\\x9c\\x4e\\xf3\\x9b\\xe9\\x4a\\xc4\\x64\\x34\\xdd\\x21\\x85\\x93\\x1d\\x12\\x31\\xf9\\xb6\\xdf\\x87\\x8a\\x5a\\xf0\\x83\\x1e\\x0e\\x9d\\x8a\\x08\\xd0\\x80\\x69\\xde\\xd6\\xa9\\x61\\xef\\x7f\\x39\\xfa\\xd5\\x01\\xff\\xd1\\x7d\\x6d\\x9b\\x7c\\x65\\x46\\x53\\xc1\\xf5\\x8f\\xce\\xe1\\xa6\\xcd\\x80\\x3d\\x2a\\xef\\x16\\x6c\\x78\\xef\\x55\\x14\\xa3\\x27\\x6d\\x69\\x98\\xdc\\x7c\\x09\\xa3\\xfa\\x98\\x2e\\x42\\x7c\\x78\\x5a\\xa6\\xa9\\xe2\\x56\\xf7\\xba\\x72\\xd5\\xa6\\xba\\x33\\xeb\\x46\\xf1\\xf9\\xfe\\x9b\\xe2\\xbf\\xc1\\x41\\x09\\xf6\\x47\\x73\\xc0\\x0c\\x06\\x3b\\x4d\\x5c\\xb4\\xf4\\xf8\\xa0\\xbe\\xca\\x92\\xa9\\xa0\\x16\\xc4\\xf5\\x40\\xfe\\xea\\x9c\\x3a\\x31\\xe3\\x13\\xbb\\xcb\\xc2\\xff\\x5e\\xca\\x99\\x67\\x85\\x7f\\x5f\\x8a\\x90\\x9a\\x29\\xd7\\xf2\\x0d\"},\n{{0x8b,0xde,0x3f,0xf6,0x1a,0x16,0x99,0x5a,0xb9,0xd5,0x39,0xf6,0x05,0x32,0x19,0x08,0x1b,0xca,0xea,0x1d,0x45,0x8e,0xc3,0x36,0x84,0xfc,0x1c,0x01,0xfb,0x56,0x5b,0xfa,},{0xcd,0x9d,0x78,0x2a,0x35,0x6e,0x84,0x7b,0x7a,0x04,0xc8,0x85,0xa9,0xb0,0x90,0x7c,0xc3,0x3b,0xa9,0x7a,0xd5,0x39,0x0d,0x4e,0xa5,0xfe,0xe5,0xeb,0x19,0x8d,0x08,0xb3,},{0x74,0x64,0xdf,0x0b,0x67,0xeb,0x90,0xb4,0xb7,0x3f,0xf0,0x82,0xad,0x0d,0x60,0xeb,0xfe,0x06,0x60,0xda,0xe9,0x70,0x69,0xb5,0x2c,0x37,0x27,0x22,0x3b,0xf7,0x0e,0x29,0xe4,0x87,0x11,0xa2,0xbb,0xb4,0x38,0xf5,0xf8,0xd8,0xa3,0x3b,0xb9,0xc4,0x8f,0xe7,0xb6,0x28,0xfa,0x8a,0x54,0x2f,0xf0,0xb5,0xae,0x36,0x26,0x9d,0x40,0x07,0xa5,0x05,},\"\\xa1\\xf4\\x0e\\xc5\\x80\\x7e\\x7a\\x27\\x06\\x9a\\x43\\xb1\\xae\\xbf\\xf5\\x83\\xef\\x03\\x70\\x28\\xc0\\x2c\\x85\\x95\\x25\\xeb\\x8f\\xa4\\xc3\\xba\\x95\\xa9\\x01\\xff\\x3a\\xed\\x78\\xc4\\xf8\\x77\\x52\\xfb\\x79\\x55\\x22\\xf5\\xbf\\x71\\x5b\\xe7\\xe3\\xde\\xfa\\xc1\\x0f\\xcf\\x17\\xe3\\xfa\\x5c\\x54\\xb2\\x00\\x89\\xa4\\x72\\x33\\x33\\x27\\x25\\x2e\\xc9\\x45\\x71\\x8f\\xb4\\x55\\xe3\\xf2\\x7c\\xcf\\xde\\xf8\\x23\\xd1\\x2d\\x40\\x6e\\x62\\xa4\\xae\\xba\\x3c\\xb9\\xd1\\xc6\\x1b\\x2b\\x17\\xe4\\x9e\\x20\\x0a\\x84\\x18\\xf9\\x35\\xf2\\x6e\\xeb\\x57\\x60\\x2c\\x7a\\xa3\\xb3\\xa2\\x4f\\x7e\\x62\\x38\\xd3\\xe0\\x8d\\x2d\\x60\\x9f\\x2e\\xad\\xa0\\x33\\x2b\\xc8\\xcb\\x12\\x91\\x6c\\xb0\\x3b\\x0d\\x4f\\x9c\\xd6\\x02\\x00\\x25\\x86\\xd3\\xe4\\xcc\\x7e\\x0e\\x03\\x81\\xc0\\x45\\xad\\x2e\\x1e\\xe2\\x82\\x98\\xae\\x7f\\xcf\\x0c\\x10\\xf2\\x12\\x80\\x85\\x65\\x29\\x6f\\x15\\x8d\\x2c\\x32\\xe8\\xcb\\x28\\x15\\x65\\x81\\xaf\\x52\\xbf\\xc3\\x47\\x0c\\x3c\\x95\\x82\\x13\\x8d\\x22\\x55\\xe8\\x42\\x6d\\x64\\x8c\\xa2\\x37\\xd7\\xaa\\xd2\\x85\\x6f\\x17\\x16\\x38\\x55\\x82\\x41\\xd8\\xae\\x3f\\x62\\xba\\x92\\xdb\\x59\\x65\\x68\\xed\\xee\\x3e\\xc0\\xef\\x37\\x0f\\x83\\x62\\x6a\\xa0\\x44\\x5a\\xf0\\x8f\\x96\\x78\\x63\\x66\\x0e\\x8f\\xba\\x5a\\x41\\xc8\\xe8\\xed\\xe1\\xc9\\x60\\x51\\x4a\\x14\\x68\\x7a\\x4a\\x81\\xe7\\x76\\xae\\x0e\\x8e\\x77\\x7f\\xb0\\xf2\\x50\\xd5\\x1a\\x83\\xb5\\x5f\\x8c\\x1f\\xfd\\xd7\\x8d\\xf3\\xbd\\xc9\\x7f\\xf1\\x77\\xaf\\xec\\xa0\\x46\\xc7\\x2d\\x72\\xaf\\x92\\x4a\\xd0\\xd0\\xab\\x2b\\xfc\\x11\\xb7\\xf4\\xab\\xde\\xd5\\x1c\\x39\\x87\\xa8\\xbb\\x94\\xd6\\x40\\xc8\\x71\\x0e\\x5f\\xc9\\xa4\\x19\\x0e\\x8a\\x00\\x83\\x63\\xd7\\x41\\x9c\\xea\\x17\\xc4\\x0d\\xea\\x20\\xea\\x51\\x56\\x02\\x9f\\x3d\\xeb\\xf0\\x52\\x41\\x91\\x8f\\x54\\xaf\\x50\\x39\\xe2\\xc4\\xcf\\x2c\\xa2\\xe1\\x39\\xf6\\x0e\\x45\\xcc\\x65\\x59\\x5c\\xdf\\x54\\xa6\\x7d\\x92\\xb6\\xac\\x66\\xfc\\x0c\\x5a\\x29\\x04\\x95\\xca\\x57\\xb0\\x7e\\xf5\\x75\\x0d\\x05\\xf5\\x7d\\x87\\xd0\\xc2\\x28\\xf7\\xe4\\xe1\\x5a\\xd0\\xba\\x01\\x78\\x73\\x0f\\x95\\x1c\\x69\\x75\\x83\\x48\\x1c\\x66\\xcb\\xfc\\xd4\\x80\\x32\\x54\\x4a\\xa8\\xd5\\x09\\x08\\x30\\x4b\\xd8\\x19\\x40\\x30\\x87\\x06\"},\n{{0xda,0x59,0xbb,0xc5,0x23,0x40,0x4f,0x07,0x64,0x6a,0xdd,0x79,0x08,0x29,0x49,0x77,0xe4,0x66,0x45,0xbc,0x8a,0x38,0xba,0xd2,0x80,0x96,0x41,0xa2,0x3d,0xe3,0xb1,0x5a,},{0xb2,0x2c,0x0f,0x21,0xaa,0x1c,0x2d,0x45,0xf4,0xb2,0xe5,0x6c,0xc9,0xb5,0xe0,0x2f,0x9e,0x31,0xa2,0xea,0xa3,0x67,0xec,0xb4,0x82,0xf8,0x74,0xcb,0xd8,0xe9,0xfe,0x34,},{0x14,0x72,0x45,0x9c,0xbb,0xae,0x2c,0xf2,0x1c,0xe4,0x4a,0x15,0xba,0xe9,0xfc,0x85,0xdc,0xa4,0x0b,0x81,0x82,0xda,0x7d,0x52,0xcb,0xf5,0x6e,0xd5,0x38,0xd1,0x8e,0x03,0x47,0x7c,0x14,0x0a,0x3d,0xdd,0x0e,0xfb,0xa4,0x3c,0x96,0xaa,0x92,0xf5,0xf9,0xbc,0xdf,0x34,0x81,0x28,0x6c,0xe7,0x62,0xa7,0xe2,0xbd,0x1e,0x77,0x9b,0xa9,0x9b,0x0d,},\"\\x09\\x71\\x06\\xc3\\x62\\x4d\\x77\\x4d\\xde\\x25\\x51\\xe0\\xc2\\x7e\\x19\\x50\\x4e\\x65\\x18\\xcc\\x86\\x36\\x9a\\xb2\\x6f\\xf8\\x10\\x96\\x9e\\x7d\\xe2\\x4a\\xbc\\x68\\xb4\\xb5\\x3f\\x11\\xd9\\x45\\xd4\\x9e\\xf0\\x78\\xeb\\x4f\\x6b\\xa6\\xbf\\x25\\x7f\\xf7\\xb6\\x08\\xaf\\xdc\\xb3\\x0a\\x5c\\x59\\xa7\\x56\\xfd\\x77\\xa6\\xc1\\x24\\x7f\\x6f\\x2a\\x41\\x10\\x0d\\x99\\xfc\\x52\\x06\\xaf\\x3b\\xcc\\x6d\\xe1\\xd3\\xe4\\x96\\x8e\\x28\\xfb\\xa0\\x12\\x3f\\x60\\x45\\xa1\\xb5\\x4d\\x69\\x3a\\x42\\xbd\\xfa\\x07\\x1b\\x2b\\x91\\x4b\\x3c\\x3c\\x0c\\x29\\xb2\\x59\\x3d\\x07\\xe8\\xbd\\xc8\\x6c\\xa4\\x2a\\xc5\\x55\\xb7\\xdc\\xd9\\x43\\x9d\\xf9\\xfb\\xd4\\xbb\\xec\\x73\\x0d\\x63\\x27\\xbf\\xae\\x4f\\xc4\\x1e\\xd4\\x98\\xb4\\xf0\\x4a\\x0e\\xb1\\x4c\\xee\\x60\\x82\\x83\\xaa\\xa6\\xe6\\xaa\\x46\\x67\\x6b\\xc8\\x8a\\xed\\x5d\\x99\\x39\\x03\\x7a\\xad\\x49\\x15\\x66\\x1a\\xf9\\x4b\\xb5\\xf6\\xe6\\x53\\xa2\\xca\\xc1\\x23\\x28\\x70\\x73\\x27\\x0e\\x0b\\x13\\xfd\\xa1\\xdd\\x48\\x71\\xaf\\x6a\\x92\\xf9\\x92\\xf5\\x39\\xdf\\x88\\x17\\x12\\xfe\\xfb\\x03\\x85\\x40\\xd4\\x11\\x91\\x12\\x3b\\x6b\\x3b\\x4b\\x6f\\xf8\\x7f\\xfc\\x92\\x9a\\x6b\\xe5\\x3c\\x6c\\xef\\x02\\xf4\\x8f\\x2f\\x0c\\xf2\\xfe\\x64\\xa4\\x5f\\xd6\\x60\\x25\\xcc\\x2d\\x7e\\xe5\\x5e\\xbe\\x23\\x16\\xc0\\x00\\x85\\x56\\x61\\x16\\x5e\\x2a\\x5b\\xa4\\x1a\\xfc\\x20\\x97\\x95\\x7b\\x6f\\xe4\\xc5\\x52\\x21\\x20\\x4b\\x6f\\xc1\\xf3\\x17\\xdd\\x3b\\xa1\\x3c\\xac\\x39\\x92\\x40\\x26\\xbd\\xb6\\x6b\\xe4\\x54\\x22\\x68\\x87\\x56\\x31\\xd2\\x77\\xf2\\x10\\x10\\x7a\\x33\\x76\\x7f\\x6d\\x95\\x96\\xe2\\x57\\x42\\xd7\\xa9\\x0e\\xa7\\x91\\xea\\x4b\\xc9\\xee\\x84\\xa6\\x7f\\xd3\\x28\\xb8\\x0f\\x79\\x1e\\xde\\x96\\xd8\\x96\\x63\\xe9\\x37\\xf0\\xb7\\x55\\xba\\xa9\\xd5\\x2b\\xda\\x21\\x0c\\xee\\x1d\\xb3\\x39\\xff\\x1d\\x3c\\x4b\\x00\\x0b\\x65\\x3b\\x9b\\xde\\x33\\x80\\x49\\xaf\\x84\\x36\\x4e\\x21\\x77\\xf8\\x0d\\xd5\\x1e\\x2a\\x16\\x72\\xee\\x55\\x5d\\x63\\x17\\x58\\x9f\\x6f\\x1d\\x5a\\xbe\\x6c\\x28\\x77\\x35\\x8b\\xf9\\x4b\\x0b\\x80\\x8f\\xf8\\x57\\x36\\x3f\\xbf\\xbe\\x32\\xe9\\x73\\x37\\xe4\\xb8\\xa8\\xc2\\x21\\xa9\\xe7\\x59\\x62\\xa8\\xdc\\x9b\\x5a\\x3d\\x7c\\xa5\\xf9\\xc9\\xb6\\x1c\\x73\\xc1\\x46\\x9a\\x72\\xbd\"},\n{{0x40,0xea,0x82,0xda,0x41,0xfd,0x15,0xb0,0x6f,0xfe,0xb9,0x9c,0xd6,0x16,0xdc,0x6b,0xc8,0xc1,0xb2,0x14,0x77,0xea,0x23,0x94,0x66,0x08,0x8e,0x28,0x49,0xbf,0x10,0x16,},{0x59,0x10,0xe5,0x80,0xbf,0x41,0x2c,0x31,0xa8,0x74,0x51,0xd9,0xdd,0xf3,0x2b,0x3a,0xb7,0x13,0xf9,0xe4,0xa2,0x2c,0x59,0x0c,0x64,0x1c,0x14,0xa5,0xdf,0xbb,0xe0,0xd7,},{0xd2,0x98,0xfc,0xc9,0xa8,0xec,0xb7,0x6a,0x98,0xd4,0xa7,0x1d,0xfb,0x01,0xd2,0x76,0xab,0x2d,0x96,0x70,0xa9,0x5b,0xab,0x34,0xcf,0x1d,0x83,0x64,0x51,0x6d,0x1e,0xbd,0xb2,0x39,0x03,0x46,0x02,0x15,0x30,0x71,0x25,0xaf,0xd0,0x9c,0x75,0x8e,0x98,0x1a,0x45,0x2d,0xa9,0x5c,0x0a,0xc2,0xc0,0xb9,0x58,0xc6,0x91,0x7e,0x68,0x74,0x19,0x0d,},\"\\xa0\\x6c\\x4e\\x02\\xb8\\x3a\\xb7\\xe1\\x91\\xad\\x81\\x8c\\xb8\\x18\\x7b\\x52\\xa8\\xda\\x00\\x4f\\xe8\\x38\\xdb\\x33\\x3c\\x4e\\x02\\x54\\x8d\\xb6\\xbd\\xf7\\x91\\x44\\x46\\x42\\xe5\\x7f\\xdb\\xc8\\x59\\x4e\\x59\\xd7\\x02\\x32\\x80\\xbb\\xae\\x82\\x98\\x6f\\x39\\x98\\x05\\x43\\x4b\\xb0\\x72\\xc8\\xa2\\x7a\\x2d\\xcd\\x5a\\xa6\\x2f\\x06\\x5b\\xc5\\x8b\\x06\\x21\\xfc\\xd3\\x65\\xf6\\xcd\\xbf\\x4d\\x57\\xd5\\x77\\xd9\\x11\\x50\\x30\\x1f\\xa4\\x8f\\x18\\x2f\\x87\\xe8\\xdc\\xa7\\xce\\x45\\xa7\\xd6\\x48\\x45\\xff\\x43\\x4d\\x1b\\xab\\x05\\x34\\xcc\\xc8\\x3a\\xa0\\x97\\x4e\\x88\\xb3\\x8f\\xc2\\x50\\x8c\\xef\\xcb\\xbc\\x82\\x13\\x5b\\x73\\xb3\\x84\\xc8\\x0e\\xcc\\xb8\\xa0\\x9e\\x28\\x73\\xcc\\x07\\x12\\x90\\x21\\xd8\\x1c\\xe1\\x29\\xa9\\xdf\\x65\\xe6\\x13\\x41\\x0a\\xf9\\x50\\x19\\x7d\\xbf\\x9a\\xfc\\x28\\xed\\xc4\\xe6\\x5c\\x3e\\x84\\xda\\x40\\xd2\\xef\\x84\\x1b\\x88\\x6b\\xc4\\x47\\x19\\xa5\\xd5\\x9d\\xb2\\xc6\\xdc\\x77\\x64\\x01\\xc8\\x95\\xe2\\xb3\\xc8\\x37\\x83\\xd7\\x81\\x7b\\xba\\x68\\xba\\xff\\x59\\x47\\x0d\\x60\\x15\\xbb\\xa8\\xd9\\x75\\xf0\\xeb\\x71\\x2f\\x3b\\x89\\x02\\x91\\x28\\x05\\x52\\x3a\\xa7\\x1c\\x90\\x49\\x9d\\xe6\\x89\\xd3\\x1a\\xe4\\x4e\\x21\\x0b\\x84\\x46\\xf2\\x48\\x47\\x27\\xcc\\x49\\x1b\\x92\\xa8\\xe8\\xb1\\x99\\xd6\\x28\\xe1\\xdf\\x79\\xa2\\x8c\\x56\\x1e\\x5a\\x7d\\x88\\x2e\\x30\\x78\\x7d\\x08\\xfb\\x2d\\x51\\x96\\xba\\x61\\x19\\x63\\x09\\xb3\\xbf\\x0c\\x58\\x24\\xa3\\x54\\x8c\\x70\\x00\\x03\\xfe\\x99\\x13\\xbe\\xfe\\x12\\x22\\x31\\x50\\x01\\x26\\x85\\xe9\\x07\\x20\\xe9\\xec\\x6b\\xc4\\xdb\\x60\\x74\\x25\\xae\\xc5\\x31\\xc4\\xfa\\x36\\x08\\x6d\\x3b\\x9b\\xe3\\x91\\xa3\\xf0\\x46\\x35\\xa8\\x07\\x7a\\x44\\x7a\\x16\\xa6\\xfd\\x89\\xaf\\xbb\\x9a\\x72\\xd0\\xd3\\x55\\xcb\\x0b\\x22\\xd5\\x62\\xf4\\x3f\\x59\\xd4\\xe3\\x71\\x28\\xb3\\xe2\\xd9\\x06\\xc8\\xae\\x23\\xd0\\xaa\\x59\\x9c\\x70\\xd3\\x77\\x8a\\x07\\x6c\\x1a\\x39\\x72\\x8f\\x1d\\x69\\x37\\xbd\\x48\\xb9\\x78\\x74\\x08\\x50\\x56\\x61\\x38\\xd3\\x48\\x52\\xb6\\x30\\x75\\xe8\\x9a\\x8e\\x22\\x80\\xed\\xba\\x6f\\x4e\\xe8\\xf6\\x15\\x11\\xe9\\xb7\\x68\\xe9\\x5c\\x78\\xd1\\x97\\xb6\\x93\\xb1\\x09\\xe8\\x88\\x18\\xb4\\x86\\xa9\\xdf\\xdb\\x74\\xb4\\xc5\\x55\\x0a\\xcd\\xfb\\xd5\"},\n{{0x28,0xbb,0x81,0xa1,0x7d,0x45,0x84,0x75,0x4d,0x52,0x81,0x8c,0xd0,0xf1,0xf2,0x1b,0xaa,0x77,0x7e,0x69,0x58,0x44,0xa1,0x51,0x22,0xac,0x05,0x34,0x4d,0xdd,0xc0,0x27,},{0xd5,0xf6,0x1d,0x51,0x99,0x44,0xd1,0x3b,0x84,0xbf,0xa7,0xcd,0x67,0xcb,0x0b,0xea,0x4e,0xf2,0x28,0x1e,0xfa,0x46,0x1f,0x22,0xad,0xe4,0xba,0x88,0x2d,0x11,0xb2,0x52,},{0x9c,0xe4,0x5a,0x07,0xdb,0xd2,0x8d,0x3f,0x6f,0x1b,0x35,0x63,0x0a,0x3f,0xd5,0x6f,0x1d,0x54,0x8f,0x84,0xff,0xb1,0xc6,0xae,0x64,0xb2,0x14,0x98,0xae,0x38,0xe5,0x96,0x91,0x6e,0x77,0xf7,0x99,0x05,0xe6,0x09,0xfb,0x1a,0xe0,0xda,0x36,0x13,0x8a,0x80,0xf2,0x42,0x12,0x21,0x67,0x06,0x80,0x92,0xcc,0x60,0x57,0x96,0xc5,0x66,0x9e,0x06,},\"\\x92\\xe8\\x4c\\x7a\\x55\\xb0\\xbe\\xa0\\x3e\\x17\\xcf\\xb6\\x5f\\x70\\x85\\xce\\x3f\\x44\\x5b\\x15\\x42\\xba\\xe9\\x97\\xde\\x5f\\x09\\x2a\\x24\\xff\\x24\\x33\\x80\\x28\\x6d\\x13\\x70\\x91\\xa5\\x98\\xf3\\x5e\\x6d\\xae\\x1a\\x1c\\x64\\x8f\\x5a\\x49\\x4c\\x81\\x9d\\xfb\\x24\\x06\\x52\\xff\\x90\\x83\\x81\\xf3\\x2d\\x70\\xbc\\x51\\x31\\x00\\xac\\xa1\\x6f\\xe7\\x22\\x02\\x95\\xb1\\xc7\\x18\\x35\\xf1\\x6d\\x93\\x10\\xa9\\xd2\\x7a\\x04\\xa9\\x80\\xac\\xe2\\x97\\xd5\\xaf\\x3f\\x7c\\xb7\\xc7\\x8b\\x24\\x99\\x7c\\xcb\\x41\\xf5\\x4e\\xcb\\xab\\x50\\x7e\\xb7\\x3e\\xa6\\xa3\\xed\\x47\\x0e\\x49\\x59\\x05\\x09\\xf5\\xd1\\xe6\\x03\\x2a\\x26\\x05\\xdb\\x87\\xf4\\xa9\\xb9\\xec\\x91\\x60\\x25\\x83\\xf1\\x4e\\x2f\\xe1\\xbd\\xb9\\x00\\xec\\xb8\\x97\\x11\\x96\\xb5\\x5c\\x0d\\x43\\x34\\x89\\xf2\\x6b\\xe9\\xca\\x15\\x7c\\xbd\\x56\\x57\\x28\\x87\\xba\\x85\\x9f\\x39\\x67\\x4a\\x8e\\x0c\\xa0\\x8f\\x2d\\xbb\\x0f\\x27\\x07\\x35\\x51\\xd0\\xb1\\x99\\x06\\x85\\x17\\x8b\\x1a\\xe9\\xe7\\x88\\x54\\x99\\x14\\x3d\\x9d\\x72\\xc8\\x57\\x1d\\x11\\xe0\\xd8\\x5b\\xf5\\x8d\\xf9\\x4e\\x2a\\x74\\xd9\\xb6\\x84\\x65\\x57\\xf9\\x12\\x5c\\xa0\\x94\\x4c\\xe5\\x71\\x8d\\x2c\\xba\\xe1\\x67\\x2b\\xa0\\x2b\\x84\\x7c\\x17\\xa6\\xf6\\xb4\\x45\\x63\\x4d\\x2f\\x01\\x75\\xa7\\x5c\\xf6\\x88\\x3c\\x62\\xe5\\xb5\\x21\\xc5\\x71\\x41\\xf2\\x18\\xb2\\xfb\\x09\\x94\\xb3\\x72\\xa7\\x16\\xc4\\xa2\\x17\\x43\\x4b\\xea\\xb7\\x57\\x40\\xb8\\xe9\\x1c\\x62\\x21\\x87\\xd0\\x3c\\x85\\xda\\x00\\x1e\\x00\\x24\\x73\\x12\\xa4\\x65\\x22\\x5f\\x5d\\x6a\\xf2\\x32\\x06\\x4a\\x42\\x7d\\x30\\x18\\x70\\x0d\\xed\\x77\\x4b\\x90\\x26\\x77\\x7a\\x52\\x75\\xfc\\x04\\x75\\x46\\x06\\xc8\\x66\\x00\\x29\\x7b\\xf7\\xb7\\x1a\\xaf\\xf8\\xb9\\xa7\\x46\\x67\\x7a\\x36\\x62\\xf3\\x75\\x0e\\x81\\xb5\\x01\\x66\\xf6\\x23\\x70\\x00\\x05\\x1f\\xfa\\x15\\x86\\x8d\\xef\\xdf\\x09\\x00\\x57\\x72\\x2a\\xe2\\x29\\x96\\x4a\\x4e\\xa0\\x85\\xe0\\xdb\\xc0\\x4c\\xe1\\x99\\x77\\x22\\xc5\\xbb\\x65\\xd2\\xb4\\x7e\\xcb\\x74\\x6f\\xd8\\x3a\\x9f\\x6a\\x69\\xc8\\x15\\x45\\xa9\\xb5\\x02\\xf5\\xe7\\x6d\\x31\\x30\\xc5\\xaf\\xcb\\x1c\\x9a\\xf9\\x9d\\x91\\x87\\x40\\x83\\x7c\\xe8\\x9d\\x7c\\xd2\\x13\\xfe\\xf2\\xfd\\x06\\x2c\\xe8\\x85\\x0f\\x69\\x65\\x9e\\x4a\\xd3\\x27\"},\n{{0x24,0xbf,0xd4,0xfc,0x45,0xd5,0x09,0x35,0x85,0x67,0x81,0x01,0xcf,0x56,0x3a,0xb8,0x01,0x1f,0xd6,0x43,0x0d,0xe1,0x55,0xf2,0xa4,0x25,0xf0,0x63,0x3e,0xe3,0xb7,0xcd,},{0x9c,0xf5,0xc5,0xfc,0x0c,0xcf,0xae,0xb2,0x8a,0x08,0xba,0x67,0x70,0x7b,0x18,0xdc,0x84,0xea,0x06,0x98,0xff,0xbd,0xbc,0x16,0x9a,0x09,0xc2,0x81,0x23,0xe6,0xc2,0xac,},{0xdc,0x93,0x5b,0x60,0xfd,0xe4,0x43,0x59,0xaf,0x8f,0x50,0xed,0x7f,0x91,0x9f,0x48,0x3c,0xe3,0xf2,0x4e,0x23,0x20,0xc5,0x5b,0xa9,0x2f,0x3e,0x76,0x17,0xc1,0x9b,0xfb,0x54,0x70,0x19,0x03,0xff,0x18,0x3b,0x42,0xcb,0xed,0xfe,0xf0,0x87,0x5f,0x42,0xb1,0x28,0x75,0xd3,0x6a,0x0a,0xee,0xc7,0x3f,0xfd,0x09,0x50,0x9d,0x92,0xb2,0x8b,0x0d,},\"\\xba\\x54\\x12\\x8f\\x45\\xbe\\x20\\x01\\xdb\\xb0\\x60\\xd5\\xdc\\xc4\\x71\\x44\\x99\\x74\\x15\\xd4\\x29\\x4f\\x6e\\xba\\x8d\\xce\\xba\\x4f\\x6c\\xf2\\x23\\x46\\x83\\xc4\\x26\\x5f\\x88\\x03\\x22\\x05\\x29\\x6e\\x9b\\x27\\xd6\\x85\\x06\\x23\\x2d\\x57\\xb6\\x88\\x40\\x76\\x48\\xf8\\x7c\\xeb\\x34\\x20\\x52\\xbd\\xe9\\xd0\\x06\\x55\\x42\\xff\\x17\\x15\\xc9\\x42\\x02\\x7e\\x67\\x48\\x2a\\xf4\\xbc\\x27\\x8f\\xf7\\x19\\x66\\xfb\\x3f\\x62\\xa2\\xa5\\x32\\x3c\\xb1\\xb4\\xba\\xe1\\xe7\\xb8\\xfe\\xdc\\xbc\\x73\\xea\\x05\\xb4\\x07\\x64\\x21\\xb0\\xb4\\xfa\\xe8\\xbc\\x33\\x37\\x41\\x6a\\x17\\xfe\\x12\\x4e\\x7e\\xe4\\x65\\xeb\\xb3\\x8d\\x87\\x92\\x30\\x64\\x29\\xd8\\x27\\x9a\\x1b\\xd5\\x4c\\x37\\xbe\\xe8\\xf9\\xc8\\x5e\\xeb\\xe3\\xaf\\xd1\\xf6\\x44\\x89\\xd4\\xe5\\x3a\\xc5\\xf5\\x06\\x57\\xbb\\x6f\\xfb\\x97\\x12\\x07\\x44\\xb7\\x5d\\x47\\xc6\\x22\\x6d\\x5a\\x9c\\x9c\\x26\\x4e\\xe3\\xe6\\xa6\\xde\\xd0\\x50\\x62\\xca\\x10\\x06\\x66\\x91\\x18\\x45\\x45\\x50\\x01\\x09\\x19\\xc2\\x63\\x3c\\xf0\\x86\\x95\\x03\\x45\\xe5\\x14\\xaf\\x38\\x43\\x14\\x8e\\x5c\\x64\\x35\\x2e\\x69\\x03\\x7d\\xfe\\x60\\xd4\\xa8\\xea\\xb3\\xeb\\x8c\\xb5\\x4b\\xd3\\x9a\\xf2\\xf3\\x53\\xd5\\xde\\xd2\\xe2\\xbc\\x8b\\x11\\xc0\\x9f\\x61\\x2e\\x12\\x8c\\x6e\\xfa\\x41\\xf6\\xeb\\x2c\\x95\\x80\\x87\\xbe\\x34\\xc6\\x33\\x5a\\x43\\x00\\x5d\\x11\\xa9\\xd3\\xb5\\xa5\\x29\\xc2\\xd1\\xb0\\x64\\x2f\\x77\\xaf\\xdd\\x8c\\x6b\\x1d\\x6f\\xb2\\xa9\\xdc\\xb6\\x5f\\x42\\xf4\\xec\\xa8\\xea\\x9a\\x05\\x40\\x58\\xbe\\x86\\x13\\x66\\x76\\x10\\xe3\\xee\\xd8\\xd1\\xdf\\x07\\x39\\xec\\xa1\\x71\\x95\\x41\\x17\\x98\\x9d\\x1b\\x12\\x18\\x9a\\xb5\\x79\\x04\\xaa\\x96\\x0b\\x0c\\xa8\\x55\\x41\\x74\\x63\\x85\\xef\\xa9\\x85\\xbe\\x9d\\x97\\xb5\\xa9\\x02\\x99\\x89\\xa9\\xc7\\x14\\x98\\xdf\\xab\\xdb\\x81\\x36\\x81\\xf5\\x7e\\x27\\x6b\\x64\\xdb\\x49\\x1b\\x8f\\x08\\x2a\\x88\\x51\\x45\\x46\\x9a\\x53\\x1b\\x7f\\x9f\\x04\\xca\\x0a\\x2c\\x2f\\x8d\\xff\\x20\\xcc\\xb9\\x9c\\x28\\x61\\xf5\\x4e\\x5e\\xaf\\xa9\\x62\\xcc\\x53\\xea\\xf1\\x8d\\x3d\\x5e\\x50\\xd3\\x37\\xaf\\x48\\x5f\\x19\\x97\\x5f\\x05\\x93\\x07\\x00\\xa8\\xa7\\x25\\x3f\\x11\\xf1\\x84\\x13\\x0d\\x0a\\xee\\x70\\x96\\x9d\\x96\\xfe\\x08\\xf2\\x16\\x95\\x1d\\x9d\\xce\\xd5\\x23\\x88\"},\n{{0x2f,0xc2,0xf9,0xb2,0x05,0x0a,0xd7,0xd1,0x39,0x27,0x3e,0x93,0xe2,0xa0,0x45,0x1c,0x7b,0x5c,0xce,0x57,0x59,0x9a,0xa6,0xb0,0x8d,0x3e,0xdc,0x5b,0xb0,0x75,0x90,0xc8,},{0xff,0xe5,0xa1,0x78,0x80,0xd7,0x18,0xcc,0x79,0x88,0xc2,0xfd,0x98,0x25,0xb0,0x3b,0x93,0x45,0x0a,0xc1,0xde,0xb8,0xfb,0xd1,0xf1,0xbf,0x3b,0x8f,0x87,0x80,0x59,0x54,},{0x7a,0xff,0x16,0x2a,0x3c,0x0d,0x28,0xdf,0xf4,0x17,0x15,0xa9,0x74,0xaf,0x07,0xec,0xac,0x21,0x32,0xfc,0x18,0xbc,0x43,0xa1,0x98,0xfe,0x66,0x46,0x59,0x05,0x0d,0xa1,0x9a,0xe2,0x27,0x58,0xd5,0x2c,0x9c,0xbb,0x94,0xf1,0x35,0x8b,0xb0,0x26,0x10,0xa8,0xa3,0x51,0xc2,0x11,0x62,0x79,0xe7,0x24,0x5a,0xdf,0x69,0x67,0x5d,0xfd,0x36,0x0a,},\"\\xdc\\x12\\x97\\x99\\x0c\\xc0\\x27\\xd5\\x6d\\x1f\\xee\\x26\\x5c\\x09\\xbc\\xf2\\x07\\xa9\\x58\\x3e\\x6b\\xab\\x8d\\x32\\x47\\x82\\x28\\xe0\\xbc\\x30\\x5b\\x98\\x18\\x15\\x4c\\x33\\x8c\\xee\\xc3\\x4b\\x04\\xc4\\xad\\xe7\\xac\\x61\\xdc\\xb0\\x9b\\xfa\\xc8\\xad\\xe0\\x0d\\x1f\\x29\\xde\\x31\\x70\\x60\\xb8\\xa4\\xda\\xf1\\x98\\x7d\\xe4\\x09\\xca\\x2c\\x3f\\xe4\\x38\\x00\\x88\\x07\\x3c\\xcf\\x48\\x5e\\x9a\\x69\\x51\\x6b\\x5b\\xbb\\x41\\x30\\xf2\\x0b\\xe6\\x9b\\x2d\\xd6\\xa9\\xb4\\x65\\x15\\x9c\\xca\\x1a\\xc8\\x8b\\x32\\x8b\\x80\\xc5\\x1b\\x66\\xaf\\x7f\\x4c\\x50\\xf6\\x22\\x87\\x72\\xf2\\x87\\x34\\x69\\x3c\\xe4\\x80\\x5a\\x41\\x63\\xdf\\xf1\\x4b\\x4d\\x03\\x98\\x11\\xee\\x3f\\xce\\x65\\x93\\x54\\x44\\xa6\\xea\\x9a\\x72\\xd7\\x8b\\x91\\x5c\\x9c\\x3b\\x76\\x6c\\x60\\xb7\\xe0\\x32\\x9e\\x43\\xc9\\xc5\\x7e\\xde\\x94\\xb9\\x15\\x25\\xce\\x5a\\x07\\x5a\\x72\\x97\\x21\\x97\\x72\\xef\\x3c\\x02\\x96\\x49\\xb5\\x86\\xa9\\x5a\\x73\\xbb\\xdf\\x16\\xd8\\xfc\\x20\\x36\\x8d\\xe4\\xba\\x44\\xde\\x10\\x64\\xbe\\x58\\x26\\xb3\\x76\\xbe\\x31\\xa8\\x6c\\xa4\\x78\\xa5\\x2e\\xfb\\x98\\xf1\\xfa\\x33\\x31\\x57\\x71\\x9b\\xd6\\xe0\\xda\\x80\\xed\\x68\\xd0\\xef\\xea\\xfe\\xe5\\xa1\\x3b\\xcc\\x3b\\x45\\x75\\x25\\x25\\x8f\\x1f\\x7e\\x03\\x1f\\x7b\\x40\\x3a\\x46\\x15\\x06\\x92\\x7b\\x1e\\x6c\\x7d\\x4a\\x0c\\x8d\\x84\\xb5\\xf3\\xdd\\x0e\\xb8\\xbd\\xb1\\x3e\\xdc\\x2b\\x51\\x4a\\x81\\xd0\\x88\\xeb\\x07\\x7a\\x52\\xc8\\xa8\\x31\\x86\\x1f\\xee\\xe8\\x11\\x0e\\x41\\xa3\\x25\\xdc\\xe2\\x06\\xb2\\xd6\\x7d\\x25\\xf9\\x0e\\xf5\\x7e\\x0f\\xde\\x70\\x9f\\x3e\\x5a\\x39\\xc0\\x4e\\xed\\x31\\xe5\\x7c\\x19\\x3b\\x28\\x3e\\x2d\\xa7\\x27\\x9e\\xe3\\xf1\\xee\\xd4\\x82\\xb3\\xbb\\xcd\\x37\\x39\\x02\\xc1\\xdf\\x81\\x1a\\xc3\\x3e\\x1d\\xe0\\x64\\x29\\xe8\\xf8\\x44\\x3f\\x60\\x20\\x19\\x65\\x0b\\xdc\\x2e\\xe8\\xd7\\xf6\\x50\\x03\\x6a\\x7a\\x22\\xb8\\xfd\\x88\\x51\\x75\\x11\\x22\\x9c\\x72\\x9a\\x32\\x69\\xb3\\xa3\\xe8\\xfc\\x72\\xb0\\x1b\\x5a\\x4b\\x3e\\x33\\xf5\\x27\\x2f\\x3a\\xd2\\x16\\x29\\xd0\\x8b\\x1f\\x71\\x79\\x35\\xe9\\xe1\\x04\\xad\\xd2\\xf0\\xf2\\x03\\x34\\x32\\xbe\\xc8\\x2e\\x21\\x21\\xd9\\x8c\\x9c\\x1a\\x58\\xe0\\xda\\xba\\x25\\x53\\x6a\\x1b\\xe8\\xe5\\x08\\x83\\x47\\xf4\\xa1\\x4e\\x48\\xd8\\xe3\"},\n{{0x8a,0xfe,0x33,0xa0,0xc0,0x8a,0xa3,0x48,0x7a,0x97,0xdf,0x9f,0x01,0xf0,0x5b,0x23,0x27,0x7d,0xf0,0xbb,0x7e,0x4c,0xe3,0x95,0x22,0xae,0xc3,0xd1,0x78,0x16,0xe4,0x67,},{0xd0,0x04,0x37,0x0e,0x6e,0xdc,0x34,0xb3,0xe8,0x81,0x86,0x67,0x21,0x6f,0x5b,0x22,0x6b,0x0f,0xf7,0x5a,0x58,0x48,0x4c,0x86,0x16,0xe1,0xa8,0x66,0x44,0x4c,0xab,0x57,},{0x63,0xa8,0xae,0xac,0x02,0x5f,0x2d,0xde,0x9a,0x73,0x28,0x6e,0x56,0xc2,0xd6,0x2d,0xcb,0x79,0xa2,0x41,0xba,0x0b,0x2e,0x2d,0xba,0xca,0x87,0x52,0xed,0x2f,0xc8,0xcc,0x7a,0xb8,0xe6,0x60,0x0b,0x67,0x64,0x5f,0xb5,0xe8,0x18,0xa4,0xe8,0x2c,0x29,0x18,0x0a,0x6b,0x2c,0x3f,0x58,0xd0,0x99,0xcb,0x63,0x5c,0xe5,0x2b,0xdc,0x15,0x70,0x04,},\"\\x86\\xfb\\x74\\x1f\\x1b\\x97\\x08\\x92\\x91\\x95\\x03\\x1a\\xa1\\x64\\x5f\\xb7\\x09\\xa8\\xae\\x32\\x3f\\xff\\x85\\xe5\\x47\\x01\\x94\\x45\\x2e\\x11\\xb7\\xb1\\x27\\x91\\x94\\xb5\\xe2\\x42\\x7c\\xe2\\x3e\\x1d\\x74\\x9c\\x3d\\xdf\\x91\\x0b\\x01\\x7e\\x4f\\x2d\\xff\\x86\\xdb\\xe4\\x82\\xc9\\x1b\\xd9\\x94\\xe8\\x49\\x3f\\x2e\\x68\\x24\\xbb\\xa3\\xbc\\x7d\\x7a\\x84\\x5f\\x21\\x7a\\xe9\\x76\\x0b\\x3c\\xd0\\x02\\x26\\xd9\\xff\\x26\\x16\\xd4\\x52\\x75\\x1a\\x90\\xc3\\xd0\\xd3\\xc3\\x6d\\x4a\\xb4\\xb2\\x52\\x0f\\x67\\x28\\x81\\x71\\xbd\\x3a\\x34\\xb2\\xea\\xca\\xe8\\xd4\\x4c\\x1e\\x15\\x3d\\xda\\x1f\\x90\\xbc\\xd3\\x59\\x5d\\xad\\x37\\x71\\x3b\\x8d\\x34\\x01\\x56\\xea\\x90\\xa4\\xe1\\x35\\x95\\x1b\\xa7\\x16\\x9a\\xc1\\x75\\x57\\x8b\\x81\\xe9\\x7a\\x54\\x1a\\xb9\\xbf\\xb7\\x63\\x28\\x79\\x8d\\x7d\\x63\\x1c\\x14\\xdf\\x2a\\xd6\\x13\\xe9\\xc6\\xe1\\x14\\x7a\\x0e\\x84\\x06\\x2d\\xdb\\xa0\\x35\\x85\\x9d\\x46\\xba\\xde\\x5f\\xad\\xd9\\xb3\\x2b\\x43\\xda\\xd4\\x83\\xc6\\xb8\\x02\\x3b\\x32\\x39\\x1e\\x51\\xef\\x15\\x20\\xc6\\x8c\\x61\\x91\\x32\\x6c\\x49\\x44\\x23\\x08\\x0c\\x62\\x3d\\xc4\\xad\\x0a\\xa0\\x74\\x74\\x8d\\x82\\x6c\\x29\\x64\\x4c\\x38\\x98\\x6a\\x77\\x00\\x2f\\x0c\\xab\\x90\\x68\\xe6\\xc9\\xec\\x73\\xcc\\x2e\\x0c\\x58\\x4b\\x80\\xe0\\xbc\\x37\\x57\\x21\\xf7\\xa8\\xfc\\x35\\x31\\x7a\\x5e\\x24\\x0e\\x8c\\x66\\x09\\x2f\\xb6\\x30\\x5b\\x01\\x2c\\x70\\xe1\\x7a\\xea\\xff\\x13\\x38\\x6d\\x5e\\x28\\xd0\\x64\\x30\\xca\\x58\\x5b\\x0c\\x85\\xb2\\x74\\xe7\\xfc\\xbb\\x63\\xe3\\x42\\x3a\\x98\\x25\\x79\\xe5\\xa6\\x4a\\x02\\x62\\xc4\\x19\\x08\\xe5\\x5d\\xbe\\x43\\xda\\xc1\\xe5\\xcc\\x1b\\xb7\\x29\\x8b\\xe4\\x28\\x72\\x0a\\x12\\xe3\\xb0\\x72\\x55\\x9e\\xc2\\x67\\x5d\\x45\\x7a\\xaf\\x8f\\x13\\x25\\x2e\\x28\\xaa\\xd6\\x3c\\x15\\x13\\xf5\\xf2\\x39\\x56\\x4d\\x36\\x3c\\x85\\x05\\xff\\xa4\\xe5\\x0f\\x66\\x48\\xc1\\xcb\\x82\\xbb\\xa8\\x52\\xbf\\xf0\\xac\\xb0\\x30\\xcb\\xe7\\x3f\\x05\\x9d\\xd8\\x7b\\xbd\\x73\\x18\\xc5\\x58\\x6e\\x70\\x86\\x18\\xa4\\xf4\\xc9\\xf3\\xbe\\xc3\\xf4\\xf0\\x7c\\x60\\x9e\\xeb\\xb2\\x4b\\xa8\\x78\\xc6\\xbf\\x1e\\x4f\\x2d\\x0f\\xd1\\x45\\x0a\\xb9\\x4e\\x31\\x75\\x52\\x17\\x78\\x6f\\xb1\\x51\\x82\\x76\\x0f\\xfb\\xe5\\xa2\\x67\\xcb\\xe9\\x98\\xa4\\xff\\x90\\xa2\"},\n{{0x6d,0xc7,0xcc,0xf3,0x29,0x37,0x8e,0x81,0x31,0xb6,0xde,0xfc,0xd8,0x93,0x70,0x30,0x10,0x68,0x94,0x63,0x36,0xb0,0xb7,0x62,0xac,0x5e,0xa5,0x14,0x87,0xdb,0xd3,0x9e,},{0x04,0xe9,0x0d,0x27,0x5e,0x79,0xdf,0x5f,0x2b,0x6e,0xf4,0xa3,0x15,0x05,0xaa,0xc0,0x5a,0x69,0x45,0x9b,0xaf,0x2c,0x58,0x1b,0x3c,0xe3,0xdb,0x29,0xf0,0xf1,0xfc,0x14,},{0x04,0x50,0x9d,0xb0,0x03,0xa1,0xa6,0xed,0x3f,0xbc,0xec,0x21,0xac,0x44,0xec,0x10,0xcc,0x06,0xd7,0x9f,0x27,0x14,0x96,0x08,0x82,0x17,0x03,0x16,0x27,0x5d,0xf8,0x04,0x23,0xa1,0xc1,0xa1,0x12,0xd8,0x81,0xfc,0x24,0xd2,0x81,0x25,0x26,0x07,0x90,0x58,0xaa,0x8b,0x60,0x8b,0xfc,0x6b,0x5e,0x57,0x63,0x22,0x40,0xc6,0x36,0xd6,0xeb,0x00,},\"\\x20\\xce\\xbb\\xe9\\x84\\x01\\xac\\x89\\x34\\xc3\\xe6\\x5a\\x57\\x38\\xcb\\x0e\\xc0\\xcd\\xc7\\x5f\\xdb\\x09\\xdc\\x96\\x31\\x28\\x94\\xb1\\x87\\xc0\\xa4\\x6d\\x2c\\x38\\xf4\\x85\\x5b\\xe3\\xee\\xcc\\xdc\\xdc\\xc5\\x6d\\x92\\x6a\\x8c\\x08\\xce\\x6e\\x74\\x8e\\x2a\\x85\\x8f\\x53\\x53\\x2e\\x7e\\x5f\\xc5\\xf7\\x01\\x4c\\x8c\\x6f\\x86\\x31\\x0c\\xc2\\x6e\\xfe\\xf3\\x0a\\xe5\\x25\\xa5\\x15\\x79\\x40\\xab\\x53\\x5e\\xd8\\xe4\\x03\\x11\\x2b\\x08\\xe3\\x5e\\x2b\\xb3\\xdd\\x91\\xa9\\xae\\x8f\\x77\\x2d\\x2a\\xff\\x37\\xd8\\xc4\\x0d\\x2b\\x5c\\xc8\\x87\\xa6\\xf1\\x50\\x50\\xa0\\xf5\\xbc\\xf0\\x36\\x0c\\x3a\\x9d\\x12\\xd5\\x91\\x86\\x55\\xed\\xc3\\xc1\\x3c\\x86\\xba\\x6f\\x4a\\x2f\\xa3\\xbf\\xcd\\x40\\x5e\\xd3\\x8f\\x87\\x1c\\xf7\\xdf\\xf0\\xf7\\x5d\\xaf\\x2c\\x32\\x10\\x84\\xee\\x9f\\xa8\\x12\\x11\\xad\\xb1\\x05\\xb2\\x5c\\x22\\x88\\xf0\\xf2\\xf7\\xf9\\x3e\\xf6\\x56\\xb2\\xde\\x19\\x01\\x22\\xe7\\xa4\\xbf\\xd4\\xa1\\xbd\\x98\\x93\\xa8\\x48\\x5b\\x50\\x9f\\xf0\\xbc\\x46\\xcc\\x96\\x10\\x51\\xc1\\xdb\\x5a\\x12\\x49\\x0c\\x7e\\x74\\x19\\x22\\xcc\\xc0\\xa6\\x65\\x49\\x64\\x70\\x27\\x6f\\x69\\xc7\\xb7\\x70\\x98\\xc1\\xe6\\x70\\xaf\\x6b\\x9f\\x85\\x12\\x52\\x99\\x68\\x75\\xeb\\x80\\x35\\xa8\\x17\\xfa\\x9b\\xe0\\x7f\\x2b\\xe0\\xbb\\xb1\\x20\\x25\\xe0\\x56\\x54\\x14\\xc8\\x17\\xe9\\x42\\x1a\\xc7\\x00\\x37\\x38\\x93\\x86\\x2f\\x24\\xcb\\x16\\x5f\\x9a\\x27\\x1a\\x64\\xfd\\x23\\x05\\xc6\\x67\\x2c\\x46\\x76\\x7f\\x8f\\x07\\x5b\\xe5\\xd2\\xd4\\x07\\x9b\\xfa\\xdc\\x39\\x56\\x28\\x8b\\x02\\x15\\x60\\x53\\x11\\xb5\\xbf\\x32\\xf0\\x03\\x7b\\x7c\\x5a\\xd5\\x02\\x01\\x3e\\x82\\xae\\x34\\x19\\xd9\\xd8\\xf3\\x9c\\x54\\x5b\\x58\\x88\\xf4\\x71\\x06\\xc9\\x4d\\x5f\\xd6\\x08\\x4d\\x26\\x03\\x4a\\x99\\xf5\\xdc\\xbf\\x26\\xa8\\x4e\\xb4\\xee\\x14\\x9c\\x62\\xa0\\x41\\x0d\\x8c\\x70\\x7b\\x1a\\x9b\\x07\\x1f\\x74\\xed\\x23\\x93\\x25\\x85\\x07\\x2c\\xe6\\xcb\\xd3\\x3d\\x4d\\x54\\xee\\x91\\x79\\x16\\xf5\\xdf\\xc6\\x4d\\x26\\xa4\\x98\\x01\\x84\\x38\\xb4\\x55\\x73\\x93\\x45\\xdd\\x60\\xae\\x0f\\x47\\x50\\x62\\x59\\x15\\xcc\\x82\\x9a\\xb6\\x82\\x2d\\x6f\\x05\\xf6\\xd2\\xbd\\xa0\\xa7\\xbf\\x56\\x01\\xe9\\xa2\\xed\\x6d\\xe9\\x60\\x37\\x1d\\x17\\xe6\\xf4\\x37\\x09\\xc9\\x67\\x8c\\xa7\\x43\\xad\\xfb\\xdb\\x45\"},\n{{0xcc,0xae,0x07,0xd2,0xa0,0x21,0xfe,0x3e,0x6e,0xe2,0x38,0x36,0xa7,0x11,0xb9,0x7b,0x04,0xe0,0xa4,0x41,0xf1,0x69,0x60,0x75,0x72,0x73,0x1c,0xb0,0x8c,0x26,0x94,0x88,},{0xa3,0x22,0x65,0xe5,0x32,0x8a,0x4f,0x49,0xcf,0x06,0xb4,0x67,0xa9,0x8b,0x9f,0x9d,0x5b,0x99,0x7b,0x85,0xdf,0xb7,0x52,0x3c,0xa6,0xa0,0xa1,0xd6,0x27,0xd3,0x28,0x91,},{0x0e,0xec,0x75,0x41,0x05,0x44,0x7f,0x97,0xd4,0xa9,0xcd,0x24,0x6c,0x7e,0xed,0xe3,0xfd,0x06,0x90,0x18,0xf0,0xd0,0x1a,0x41,0xdf,0xab,0xca,0x3e,0x90,0xa7,0x41,0x83,0x5e,0xa4,0xa9,0xd6,0x82,0x34,0x22,0x67,0xb2,0x50,0xfc,0x1c,0x8c,0x54,0x7c,0x89,0x63,0x2d,0x9f,0x68,0x9a,0xf5,0x36,0xc7,0x92,0x90,0x04,0xde,0xd0,0xd9,0x6f,0x09,},\"\\xa4\\xbf\\x82\\x97\\xd0\\xdc\\x5e\\x4c\\x92\\xbd\\x00\\xad\\x5b\\x9c\\x09\\xb1\\x23\\x8b\\x50\\x3d\\x61\\x91\\x16\\xef\\x74\\x26\\x03\\x78\\x34\\x9a\\x92\\x82\\xb4\\x1f\\x3f\\x46\\x76\\xa6\\x21\\x5e\\x3c\\xe6\\xd0\\x22\\x38\\x48\\x0a\\x96\\x04\\x3b\\x29\\x42\\xb3\\xfe\\xed\\x12\\x62\\x0b\\x1f\\xa9\\x7f\\x77\\x03\\xb3\\xeb\\x68\\x3c\\x16\\x01\\xbd\\x2f\\x51\\x82\\x5c\\x45\\x0d\\xf4\\xfd\\x1f\\x33\\xb0\\xbf\\x9c\\x23\\xc0\\x32\\x23\\x78\\x9e\\x06\\xe2\\x4c\\xf1\\x36\\xd3\\xb5\\x57\\x40\\x3a\\x66\\x98\\x1f\\x4b\\x77\\x7d\\xcf\\xe8\\x90\\xd2\\xba\\x96\\xda\\x4a\\x47\\x42\\xae\\xed\\xdd\\x6a\\x61\\x1d\\x05\\xfc\\x21\\x56\\x94\\xa5\\xd8\\x9a\\x5d\\xe6\\x76\\x0b\\x1d\\x94\\x15\\x15\\x50\\x44\\xc0\\x49\\xcb\\x02\\x29\\x1a\\x15\\x14\\xfa\\xa2\\xe7\\x7d\\x2a\\xe3\\x3d\\x44\\x58\\x5b\\xda\\xc6\\x36\\x5b\\xf4\\x81\\xd9\\xc9\\x78\\x33\\x93\\x7e\\xab\\x63\\x6e\\xd6\\x57\\x42\\xa0\\xd5\\x97\\x3b\\x24\\xd5\\x40\\x89\\xb2\\xda\\xf0\\x84\\xd5\\x41\\x47\\x65\\x10\\x5e\\x4e\\xca\\x14\\xaa\\xad\\xd1\\x05\\x33\\x38\\xa8\\x47\\x05\\x05\\x23\\x2e\\x4a\\xc6\\x33\\x34\\x5c\\x5c\\xde\\xe1\\xe4\\x65\\x3d\\x1d\\x93\\x58\\x3a\\xf1\\x18\\x54\\xb1\\xd9\\xb6\\x5f\\xc2\\x02\\x81\\x83\\x8c\\x56\\xdf\\x11\\x48\\xf3\\x5c\\xcf\\x9b\\xfe\\x2f\\x3f\\x80\\xab\\x73\\xf5\\xb7\\x91\\xcb\\xed\\x2d\\x92\\x06\\x44\\xcf\\x03\\x16\\xf0\\xcb\\x5d\\x36\\x62\\xb9\\x12\\x06\\x47\\xda\\x56\\xaf\\xbe\\xb4\\x7a\\x95\\x29\\x53\\xbc\\x1a\\x37\\xde\\x85\\x7e\\x4b\\x39\\xfd\\x92\\xb6\\x32\\xb8\\x51\\x59\\xf4\\x6c\\xd0\\x5b\\x6a\\xbc\\x23\\x38\\xd4\\x63\\x2d\\x48\\xe9\\xa1\\x78\\x86\\x0d\\xe8\\xf6\\x5d\\x9b\\xc2\\x3f\\x24\\x50\\x7b\\x7c\\x56\\x29\\xe0\\xbd\\xaa\\xc0\\x67\\xc4\\x76\\xc9\\xc3\\x94\\x1d\\x86\\xf7\\x88\\x94\\x4d\\x74\\x48\\x52\\xa6\\x1d\\xa7\\x16\\xf9\\x5f\\x3b\\x04\\xf0\\x78\\x3a\\x56\\x29\\x41\\xbc\\xdd\\xa4\\x39\\x59\\x0f\\xd1\\x86\\xb2\\xa8\\xeb\\xf1\\x9a\\x5a\\x7e\\x4f\\x4a\\x3a\\xaa\\xb7\\xa8\\x7a\\x43\\x45\\x24\\xfb\\xc9\\x79\\x9c\\x99\\x31\\xeb\\x8c\\xe4\\xe3\\x4e\\x99\\xb6\\x08\\xca\\xc9\\x4a\\xb7\\xe7\\x44\\x95\\x66\\x8d\\xf1\\x36\\x18\\x5f\\x48\\x7d\\x9f\\xbc\\xb6\\x60\\x5a\\xd7\\x25\\x34\\x54\\x03\\xec\\x57\\xf3\\xf6\\xdb\\x36\\x4a\\x87\\xf3\\x8f\\xea\\x4b\\x4c\\x27\\x15\\x52\\xe9\\xf2\\xe4\\xa1\\xbe\"},\n{{0xdb,0x5d,0x5f,0x41,0xfd,0xdd,0x67,0x68,0x70,0x97,0x47,0xab,0x82,0x39,0xbb,0x4f,0x42,0xa3,0x1d,0x34,0xb4,0xfa,0x88,0x82,0x4d,0x94,0xbf,0x78,0xd3,0x14,0x92,0x64,},{0x03,0x85,0x8c,0xe6,0xb2,0xd2,0x40,0x79,0xee,0xad,0x66,0xca,0x0d,0xfe,0x77,0x2e,0xcd,0xa9,0xaf,0x4d,0x46,0xbc,0x9b,0x5e,0xdf,0xdc,0x28,0x6b,0x95,0xfe,0x97,0x16,},{0x5b,0x3d,0x0d,0xa7,0x10,0x23,0x55,0x48,0x6b,0xe4,0xd6,0x9c,0xfd,0x65,0x88,0x6c,0x9d,0x9c,0x87,0x38,0xb2,0x93,0xca,0xfb,0x23,0xb2,0x10,0x4b,0xfd,0xac,0x8d,0x7d,0x01,0x29,0x8e,0xeb,0x18,0xfd,0xe3,0xde,0xd6,0x49,0x1d,0x41,0xb4,0x19,0xcc,0x66,0x37,0x52,0xc4,0xe6,0x7d,0xbe,0x89,0x86,0x83,0x3d,0x20,0xe4,0xef,0x34,0x18,0x0b,},\"\\x67\\xee\\x03\\xde\\x45\\xc3\\xe7\\x03\\x0d\\xb5\\x24\\x6e\\xe5\\xb5\\x1b\\xf2\\x98\\xbb\\xa3\\xe4\\xd0\\x93\\x49\\x37\\xfc\\x12\\xd9\\xa6\\x29\\x60\\x4c\\x53\\xc0\\x70\\xe3\\x0d\\x61\\x19\\x99\\xa9\\xcd\\xda\\xf2\\xd9\\xac\\xda\\x6a\\x9f\\x67\\x20\\x2b\\x35\\x23\\x69\\xd4\\x82\\x60\\xee\\xbc\\xe0\\xe7\\x8e\\x4d\\x5a\\xe5\\x4f\\x67\\x75\\x21\\xf8\\x4a\\x7b\\xe0\\x01\\x7f\\xab\\x27\\x8b\\x2b\\x57\\x27\\x5e\\xfc\\x5f\\xa5\\x7c\\x61\\x71\\x86\\xfc\\x1b\\xa4\\x9e\\xdf\\xbd\\x33\\x08\\x63\\x48\\x78\\xd8\\x64\\xf2\\xda\\x15\\x83\\xca\\x8d\\x56\\xce\\x9f\\xae\\x77\\xc4\\x62\\x03\\x9a\\xbc\\x32\\xd0\\x53\\x9c\\x0a\\x60\\xb7\\xbb\\xba\\x50\\x29\\xe9\\x32\\x9d\\x27\\x56\\x83\\xd9\\xc4\\xce\\x77\\xd0\\xb9\\x08\\xad\\xe9\\x8b\\x0e\\x32\\xb4\\x42\\x0d\\x9a\\xee\\x2c\\xc1\\x0e\\x4b\\xe9\\x22\\xf9\\x57\\x25\\x82\\xdd\\x89\\x67\\x14\\x1c\\x1d\\x40\\x2e\\x21\\x5f\\x20\\xae\\xe0\\xa8\\x90\\xe2\\x36\\x8e\\x40\\x6d\\xea\\x11\\xbd\\x11\\x17\\x7f\\x2e\\x03\\x8a\\xa2\\xf1\\xa0\\xdf\\xf5\\x1a\\x12\\x8d\\x95\\x5d\\x5e\\x5f\\x8d\\x5d\\x00\\x09\\xaa\\xa8\\x24\\x40\\xa9\\x68\\x64\\xd6\\xc6\\x97\\xf9\\x10\\xd1\\xdf\\x23\\x0f\\x46\\x7f\\x0e\\x02\\xa2\\xe0\\x2b\\xf9\\xe4\\x5d\\xa9\\x5f\\x25\\x54\\x10\\xcc\\x5a\\xab\\x8d\\x85\\xf4\\x49\\xa5\\xde\\x99\\xaa\\xbd\\x44\\xfd\\x76\\x3e\\xc1\\x46\\x29\\xf3\\xdb\\xab\\x1a\\x24\\x7b\\xff\\xb7\\x17\\x46\\x48\\xe4\\x3b\\x9f\\xb1\\xeb\\x0d\\xf5\\xe4\\x10\\x9b\\x7a\\x88\\xe0\\x55\\x12\\xb2\\x08\\x65\\xba\\xd3\\x9f\\x9e\\xa7\\x9d\\x52\\xf5\\x18\\x8e\\x7c\\xa5\\x19\\x44\\x05\\xbf\\xb1\\xa0\\x97\\x27\\x61\\x7f\\x3f\\x6c\\x88\\x19\\x20\\x08\\xed\\xbc\\x0c\\x65\\x85\\xdb\\xf2\\x61\\xf1\\x49\\xdf\\xfb\\x59\\x3d\\x42\\x71\\x6e\\x5a\\x57\\x77\\xf5\\x46\\x2b\\xee\\xb1\\xe9\\xa5\\x6a\\x2c\\x76\\xe6\\xcb\\x73\\x51\\x17\\xcc\\x11\\x83\\xa3\\x8d\\x1e\\x00\\xb3\\x03\\xd1\\x74\\xaa\\x9c\\xf5\\xc7\\x31\\xb2\\xc7\\x0e\\xdd\\x79\\xcc\\x5d\\xc9\\x6f\\x40\\x18\\xf1\\xd7\\x1d\\x71\\x98\\xbb\\xb7\\xd1\\x34\\xcd\\x2f\\xf8\\xc1\\x5f\\x9a\\x04\\x28\\x0d\\xb2\\x6a\\x8f\\xa9\\x99\\x7e\\xb8\\x6b\\x13\\x3c\\x02\\x2e\\xda\\x15\\xd8\\xad\\x5e\\x77\\xcc\\x9f\\x62\\x61\\x59\\x60\\xba\\xc2\\xf9\\xbb\\xc3\\xeb\\xbd\\x19\\x8f\\x72\\xc5\\x72\\xb9\\x71\\x56\\xfa\\x7f\\xa2\\x29\\xa9\\x80\\x14\\xe1\\x70\"},\n{{0x7f,0x04,0x8d,0xfc,0xc2,0x65,0x0c,0xda,0x59,0x49,0x1d,0x4c,0xe2,0xb2,0x53,0x3a,0xec,0xc8,0x9c,0xc4,0xb3,0x36,0x88,0x51,0x94,0xb7,0xad,0x91,0x7d,0xb5,0xcd,0x14,},{0x08,0x00,0x1b,0x5d,0x40,0x95,0x8b,0xcb,0x27,0x0b,0xee,0xa9,0xba,0xba,0x33,0x87,0xe3,0xa4,0xb9,0x00,0xfc,0x42,0x27,0x56,0x57,0xc6,0xc6,0x91,0xa2,0xe2,0x64,0xf2,},{0x58,0x33,0x70,0x97,0x1d,0x24,0x65,0x2a,0xd2,0x13,0xc4,0x26,0x15,0x91,0x19,0x38,0xfa,0x9a,0xa3,0xd9,0xb7,0x19,0x69,0x40,0xe6,0xeb,0x08,0x15,0x12,0x00,0xc7,0xb6,0x72,0x9d,0x1e,0xff,0x8f,0x4f,0x09,0x04,0x07,0x4d,0xab,0x3d,0xdd,0xa6,0xaf,0x1e,0x4e,0x56,0x2b,0x7d,0x62,0x20,0xc1,0xa5,0x62,0x68,0x3b,0xea,0xb2,0x68,0xf8,0x0e,},\"\\x91\\x75\\x19\\xcd\\xb3\\x35\\x19\\x68\\x0b\\xca\\xe0\\x4f\\xaa\\x79\\x07\\x71\\xce\\x7d\\x13\\x97\\xc3\\x45\\xf1\\xb0\\x3d\\xd7\\x62\\x57\\x76\\xf3\\xf1\\x95\\x80\\x99\\x32\\x61\\x8b\\x1c\\x64\\xac\\xd9\\x3a\\xd0\\x00\\xea\\xd0\\x96\\x54\\xa3\\x3d\\x14\\xf7\\x48\\xb4\\x6b\\x67\\xaa\\xe0\\xff\\x12\\xdf\\x3c\\xc1\\x63\\x28\\x0f\\x47\\xce\\xdc\\x16\\xa8\\x57\\x90\\x34\\xe4\\x98\\x84\\x29\\x67\\x72\\xec\\xbd\\xbb\\x71\\xca\\x29\\xc1\\x66\\x23\\x35\\x33\\xc8\\xde\\x54\\x01\\x2b\\x41\\x2c\\xa1\\x3c\\xc2\\x58\\xf7\\xc5\\x46\\x5d\\x83\\x42\\x2f\\x52\\x4e\\x4c\\x05\\xf8\\x06\\x31\\x34\\x78\\x31\\x9f\\xd1\\x43\\xcf\\x50\\x88\\xe6\\x98\\x37\\x69\\x7d\\x36\\x15\\xd8\\x0a\\x7f\\xa7\\xe7\\x44\\x3f\\xca\\x65\\xe7\\x53\\xac\\x1b\\x11\\xd8\\xef\\xf3\\x47\\x66\\x36\\xae\\x02\\xd7\\xa2\\x0f\\x4b\\x23\\x88\\xda\\xd6\\x84\\x00\\x2f\\x5c\\xe9\\x57\\xca\\xdd\\xd2\\x05\\x3d\\x0e\\xd5\\x33\\x13\\x2a\\x81\\xca\\x19\\xbb\\x08\\x0b\\xd4\\x3b\\xe9\\x32\\x02\\x8c\\xb5\\xf6\\xb9\\x64\\xf0\\x08\\xb5\\xb1\\xc1\\xc5\\x99\\x3b\\xc9\\xb5\\x48\\x5b\\x22\\xbb\\xef\\x70\\x1f\\x0a\\x26\\xa3\\xe6\\x75\\xea\\x31\\x12\\x2b\\xba\\xe9\\x1d\\x86\\x4b\\x54\\xd8\\x95\\xaf\\xdc\\x79\\xca\\x58\\xd4\\xfe\\x44\\x92\\x13\\x35\\x3b\\x14\\x9f\\x31\\x43\\xb5\\x14\\x4d\\x74\\x7c\\x5b\\x46\\x97\\x47\\x9a\\xe6\\x85\\x28\\x48\\x53\\x84\\x04\\x4a\\xa2\\xc9\\x9b\\xa4\\xb1\\x7b\\x18\\x4e\\x94\\x98\\x22\\x69\\xbd\\xe2\\xde\\x0b\\x17\\x70\\x5d\\x0b\\xfc\\x46\\xd6\\x90\\x6a\\x90\\xed\\xef\\xe8\\x91\\x95\\xde\\x6b\\xb8\\xf3\\xfb\\x6a\\x37\\x41\\x86\\xc7\\xcd\\x08\\x6d\\x13\\xd1\\xb3\\x52\\x5a\\x39\\x94\\xdc\\x80\\x20\\xe1\\xa0\\x05\\x54\\xac\\x8a\\x82\\xd6\\x04\\x7c\\x5b\\xff\\x5e\\x7f\\x12\\x45\\x0f\\x48\\x65\\xda\\x16\\x1e\\x1a\\x02\\x1f\\xd9\\xbe\\x8b\\xd3\\x3a\\x32\\xbb\\x54\\xa4\\xdd\\xf8\\x74\\x51\\x2e\\x74\\xb5\\xcf\\xd3\\xfc\\x3c\\xd9\\xac\\x11\\xed\\xd8\\x78\\x43\\x36\\x68\\xe3\\xfc\\xc7\\x82\\xb9\\x7b\\x6d\\x90\\x5a\\xdb\\x0e\\xbe\\xc4\\x2c\\x92\\x54\\xac\\x90\\xf3\\x58\\x22\\xc0\\x0f\\x97\\xff\\x3f\\x0c\\x7c\\x39\\xed\\x3c\\x7c\\xb3\\x92\\x0f\\x56\\x08\\xbb\\x45\\x83\\x8b\\xb2\\x42\\xa5\\x2a\\x86\\x37\\xd7\\xce\\xcd\\xcf\\x48\\x9f\\xa1\\x83\\xb4\\x54\\x51\\xc6\\xc9\\xfc\\xbb\\xbf\\x91\\x4f\\x5f\\x7e\\x6b\\x22\\x3b\\xcb\\x46\\x75\"},\n{{0x9f,0xeb,0x3d,0xf8,0x8c,0x49,0x4a,0x99,0x84,0x9c,0x6f,0xca,0x19,0x42,0x01,0x47,0x7a,0x2f,0xa7,0x56,0x4e,0x29,0xfb,0x06,0xcb,0x44,0xc1,0x15,0x4e,0x8c,0xea,0x3a,},{0xc3,0x56,0x28,0xca,0x6e,0xe2,0x8e,0xc1,0xc2,0x39,0xdd,0xc5,0xbb,0xa2,0xa9,0xe0,0x9e,0x48,0x46,0x81,0x6b,0x14,0x3c,0x74,0xdf,0xa2,0xae,0xc1,0xf6,0x25,0x51,0xb6,},{0xa1,0xc2,0x60,0x78,0x35,0xbe,0xc1,0xa1,0xd8,0x78,0x72,0xfd,0x8e,0xe4,0x88,0xd0,0xae,0x9e,0xd2,0x3d,0x49,0xfd,0x67,0x86,0xfc,0x49,0x96,0x72,0x5e,0x49,0xb3,0x26,0x21,0x18,0xba,0xbb,0x48,0x34,0x87,0x7c,0x7f,0x78,0xfb,0xea,0xc0,0x2d,0xf4,0x0a,0xb0,0x91,0xb8,0xb4,0x20,0xdc,0x99,0x51,0x38,0x1e,0x3b,0xcd,0xa0,0x67,0x05,0x02,},\"\\x95\\xfb\\x75\\x81\\xbd\\x25\\xff\\xd4\\x42\\xc3\\xae\\x38\\xa1\\x9b\\xea\\x73\\x49\\xc7\\xb7\\x68\\x3b\\xa6\\x76\\x7e\\x14\\x8f\\x0a\\xfc\\x15\\x37\\x3f\\x67\\xc1\\x6d\\x47\\x17\\x81\\x20\\x2e\\x6d\\xa8\\x05\\x4e\\xd7\\xfb\\x9e\\xe2\\x04\\xcc\\x0f\\x63\\xc2\\x10\\xa6\\x70\\xa5\\xf9\\xce\\xd4\\x29\\x45\\x88\\x19\\x63\\x30\\xd3\\x1b\\x8e\\x83\\x92\\xbe\\xf6\\xb4\\x8f\\xe3\\xc9\\x20\\x78\\xfa\\xe1\\x12\\x84\\xb4\\xc3\\xba\\x20\\xd9\\x37\\xe2\\x71\\x9d\\xe7\\xbf\\x67\\xc0\\x06\\x69\\xad\\x23\\xe6\\x13\\x84\\xeb\\xdf\\x8c\\x6e\\x60\\x73\\x54\\x28\\xc0\\x84\\xfe\\x21\\x7f\\xdb\\x47\\x09\\xcc\\xb6\\x08\\x3f\\xc0\\xae\\x4a\\x05\\x27\\x3e\\xef\\x73\\x90\\x23\\xd3\\x4b\\xb7\\x3f\\x66\\x2d\\xac\\xdf\\x11\\x0b\\x6d\\xbd\\x3e\\x74\\xfc\\x14\\x91\\xe8\\xc9\\x65\\x96\\x07\\x5f\\xae\\x5c\\x36\\xaa\\xbe\\x2a\\x0a\\x53\\x05\\x2b\\xf7\\x7c\\x44\\x62\\x43\\x80\\x63\\xaa\\x7b\\xc0\\xc5\\x0a\\xb9\\x20\\xc9\\xeb\\x28\\x86\\x71\\x56\\x0c\\xa5\\xba\\x7a\\xf4\\x4a\\x53\\xdb\\x2e\\x2f\\xf4\\x3c\\xa5\\x60\\x69\\xea\\x55\\x17\\xcb\\x21\\x4e\\x76\\xfa\\xa5\\x3d\\xbd\\xa1\\x00\\x00\\x3c\\x4f\\x61\\x75\\x41\\x40\\x41\\xbe\\x74\\xde\\x22\\xce\\x15\\x5d\\x22\\x81\\xb6\\xf4\\x03\\x5b\\xe3\\x98\\x41\\xaf\\xdb\\x96\\xdd\\x89\\xaa\\x80\\x8e\\x68\\x65\\xba\\xe6\\x2d\\x6b\\xed\\xd9\\x19\\xd3\\xe8\\x65\\x10\\xb9\\xfa\\x5f\\xed\\xd1\\x97\\x7c\\x41\\x31\\xb2\\xb8\\x6e\\x0f\\x48\\xd7\\x21\\x5e\\xb1\\x3d\\x54\\x98\\xca\\x5d\\x23\\x68\\xf8\\x18\\x95\\xed\\x85\\x5a\\x52\\x71\\x24\\x65\\x7e\\xc9\\x53\\x9e\\xfe\\x3b\\x24\\x99\\xa3\\xb0\\xb3\\x38\\x26\\x2f\\x26\\x34\\x0e\\x22\\x55\\x4c\\x79\\xf4\\xfa\\xd2\\xb4\\xe4\\x19\\xc7\\x0b\\xc1\\xa2\\x10\\x7d\\x20\\x64\\x56\\xb6\\x36\\x87\\x81\\xbe\\x4b\\x5e\\x2c\\x54\\xda\\x42\\xd3\\x36\\x04\\x0f\\xb7\\xba\\x49\\xc3\\x2d\\x75\\x23\\x21\\xad\\xcd\\x92\\x98\\x6e\\x78\\xbe\\xdb\\x22\\x6c\\xea\\xc5\\x02\\x92\\x08\\x9b\\xb5\\x79\\x02\\x7f\\x70\\x22\\x17\\x74\\x5a\\xfe\\x06\\xa5\\xbe\\x13\\x6b\\x39\\x98\\xa3\\x60\\x4c\\x9f\\xf2\\xac\\xd6\\xfa\\x3f\\x3f\\x71\\x63\\x3d\\x31\\x02\\xfb\\xf0\\x30\\x47\\xc5\\x48\\x6f\\x84\\xc4\\xdc\\x24\\x47\\xd8\\x63\\x79\\x63\\x83\\xd5\\x5f\\x08\\xc9\\x81\\xfd\\x4d\\xd7\\xdc\\x1c\\xb7\\x2b\\x8b\\xa4\\x43\\x5a\\xf6\\xab\\xdd\\x74\\xe6\\xf6\\xe6\\x79\\x8f\\x1a\\xe2\"},\n{{0xbf,0xf6,0x89,0x55,0xdd,0x6a,0xe0,0xe8,0xba,0x85,0xab,0x0d,0x0c,0xda,0xf0,0x4a,0x9f,0x5b,0xef,0xd5,0xef,0x60,0x14,0xf4,0x99,0x94,0xa7,0x83,0x63,0xdc,0x17,0xf7,},{0x0a,0xd9,0x49,0x3a,0xf8,0x0b,0x15,0xf0,0x7a,0x52,0x1c,0xcd,0x67,0x4f,0xe9,0xe5,0x21,0x2a,0x4a,0x28,0xc1,0x7c,0x74,0xf6,0x60,0x5f,0xfe,0xf7,0x8a,0x4a,0xed,0x72,},{0x93,0x19,0xee,0xf7,0x40,0x63,0x3a,0xda,0x1a,0xf0,0xe1,0x37,0x64,0x4c,0x61,0xfb,0x3e,0x11,0xba,0x4b,0x01,0xd3,0xc6,0xf2,0x53,0x92,0xdc,0x93,0x67,0x87,0x2a,0x23,0xbe,0x56,0x31,0x0d,0x31,0x2e,0xfc,0xb9,0x1b,0xdb,0xab,0x78,0xa7,0x5e,0x57,0x6e,0xbe,0x90,0x81,0x97,0x24,0x15,0xf5,0x62,0xdb,0x41,0xba,0xf5,0xe2,0x33,0x8b,0x07,},\"\\xd8\\xf5\\x65\\x0a\\xa3\\x58\\x1c\\x4d\\x39\\xbd\\x1b\\x8a\\xfc\\x96\\xc1\\xad\\x7c\\x4b\\xf7\\x23\\x42\\x6f\\x9d\\x7f\\xab\\xd1\\xa5\\xc8\\xac\\x1d\\x2f\\xe5\\x4a\\x97\\x1f\\xac\\x76\\x5e\\x05\\xaf\\x6e\\x40\\x7d\\x72\\x69\\xba\\xb6\\x61\\xb3\\x43\\x22\\x92\\xa4\\x84\\xf9\\x52\\xc1\\x10\\x95\\xbb\\xd2\\x0a\\x15\\xd7\\x7c\\x41\\xf8\\xf3\\x73\\x1a\\x50\\x4d\\x51\\x8e\\xe1\\x0c\\xd0\\x06\\xc9\\x6e\\xe5\\x73\\x72\\xde\\x5b\\xea\\x34\\x8e\\xc8\\xba\\x15\\x91\\x62\\x17\\x0c\\x63\\xe9\\x70\\xf1\\xc7\\xa3\\x46\\x5a\\x3d\\x59\\x2e\\x1d\\x56\\xc6\\x54\\x0f\\xbd\\xb6\\x02\\x28\\xe3\\x40\\x90\\x96\\x46\\x32\\x0c\\x95\\xf2\\x56\\x98\\xcd\\x48\\x96\\xbd\\xff\\x58\\xe2\\x56\\x1e\\x3b\\x3d\\x9a\\x73\\xb8\\x97\\x47\\x91\\x2a\\x1c\\xf4\\x67\\xd6\\x3e\\x41\\x45\\x5f\\xda\\x77\\x47\\x7f\\x46\\xfe\\x69\\x37\\xbb\\x0e\\x79\\xd9\\x2c\\xcd\\x52\\xe8\\x2d\\xba\\x90\\x8a\\x05\\xa5\\x7c\\x7e\\xcf\\x49\\x55\\x4a\\xb4\\x4c\\x0b\\x71\\x8e\\x3b\\xdd\\x5f\\xc0\\xbf\\x70\\x70\\xd9\\xc5\\x8f\\x86\\x05\\x91\\xc1\\x8b\\xca\\x8b\\x3a\\x9a\\x14\\x8a\\x06\\x54\\x8e\\x0f\\x01\\x60\\x2b\\x1e\\x6f\\x68\\x60\\x37\\xc9\\x4f\\xf7\\x32\\xe1\\x55\\xd5\\x2d\\x5b\\x0b\\x44\\x70\\x3b\\x3d\\x11\\x16\\x3e\\x3f\\x56\\xe3\\xb9\\xc1\\xb8\\x64\\x76\\xe4\\xdc\\xbf\\xc5\\x3f\\xa0\\x59\\x84\\xe8\\xc7\\x5d\\xd2\\x18\\x43\\xcf\\x96\\xf9\\xe4\\x94\\xab\\xba\\xe7\\x18\\x4a\\xa4\\x27\\x36\\x63\\x3e\\x38\\x11\\xae\\xff\\x40\\x2b\\x2f\\xcb\\x7d\\x7f\\x70\\x2e\\x44\\x72\\x41\\xe2\\x2a\\x58\\x84\\x2f\\xd6\\xd0\\xc0\\x3d\\x33\\xff\\x5b\\x8c\\x79\\x22\\x00\\xe1\\x73\\xda\\xa7\\xb2\\x17\\xe4\\xb2\\xf4\\x43\\x3e\\x6c\\x02\\x0a\\xcc\\xe5\\x01\\xb9\\x32\\x3a\\xa0\\x24\\x11\\x44\\x43\\x4b\\x08\\xe9\\xd2\\x46\\x91\\x39\\xff\\x67\\x34\\x22\\x08\\x90\\x05\\x46\\x20\\x0f\\xd9\\x71\\xa6\\x5d\\xbd\\x6d\\xb6\\xc2\\x1e\\x3e\\xf9\\x17\\x2a\\xbb\\xa1\\xea\\x9e\\xa2\\xa2\\x49\\xad\\xdf\\x1a\\x1e\\xaa\\x3c\\xe1\\x19\\x38\\xb1\\x3e\\x30\\x91\\x3c\\xd0\\xda\\xd4\\x91\\xfc\\xbb\\x32\\x85\\xea\\x37\\x8b\\x8e\\xf9\\x22\\x7f\\x3f\\xa8\\x0b\\x58\\x6e\\xcf\\xea\\xe1\\x37\\x06\\x6f\\x84\\x48\\xac\\xdf\\xb7\\x8d\\x6d\\x3e\\x9e\\xf4\\xa6\\xb3\\x62\\xdf\\x42\\x41\\xad\\x9a\\xe2\\x53\\xb8\\xe1\\x59\\x7d\\x65\\x6e\\x00\\x0c\\xea\\x44\\x7a\\x02\\xfa\\x49\\x33\\x32\\x86\\x09\\xbb\\xa0\"},\n{{0x1b,0xa9,0x19,0xc0,0x66,0xbb,0x56,0xe6,0x40,0xc3,0x33,0x59,0x68,0xe1,0xd1,0xb5,0xbc,0xc0,0x93,0x38,0x3e,0x2d,0x7c,0xf8,0xb5,0xff,0xf5,0xc6,0x1e,0xc4,0x7a,0x77,},{0x80,0x4c,0x90,0xbd,0xc2,0xb3,0x61,0x8b,0x01,0xf0,0x75,0xe0,0x41,0xfa,0x97,0x1b,0x83,0xc5,0xb6,0xcf,0xa3,0xb6,0xb3,0x97,0x4f,0x3f,0xa4,0x35,0x99,0xbe,0xac,0xab,},{0x50,0x3e,0xb7,0xed,0x6d,0xe1,0xb7,0x76,0xc9,0x52,0xf2,0x55,0xbb,0xd4,0xbc,0xfb,0x0e,0x48,0xbc,0x70,0xc2,0xcc,0x2f,0x1f,0x72,0xbf,0x68,0x81,0x47,0x90,0x40,0xc4,0x75,0x24,0xec,0x54,0x2a,0xe1,0x3f,0x60,0x05,0xca,0x50,0x16,0xb5,0x8b,0x73,0x6a,0x50,0x89,0x8d,0xd0,0x56,0x9d,0x4d,0x38,0xad,0x29,0x86,0x30,0xd6,0x8a,0xdb,0x0b,},\"\\x87\\xc5\\xc7\\x5d\\x8a\\xd0\\x7d\\x52\\xac\\xd7\\x81\\xd1\\xbb\\x95\\xf7\\x8c\\x70\\xe2\\x1c\\x2d\\xd6\\x6f\\x7a\\xa4\\x42\\x34\\x15\\x2f\\x98\\x23\\x4d\\x12\\x83\\x58\\xa8\\xae\\xe9\\x8e\\xa9\\x03\\xa7\\x7b\\x44\\x1d\\xb1\\x44\\x7a\\xe6\\xff\\x34\\x32\\xdd\\xd4\\x57\\x0f\\x7f\\x58\\x03\\x61\\x22\\xc1\\xfd\\xcc\\x93\\xcb\\x21\\x57\\x37\\x39\\xc1\\x9c\\xca\\xa4\\x11\\x50\\x8e\\x08\\xde\\x26\\x06\\xf3\\xd8\\xf2\\xdb\\x89\\xdf\\x6a\\x44\\xa4\\x61\\x33\\xd5\\x70\\x18\\x46\\x26\\x27\\xe2\\x2f\\x57\\xef\\x36\\xd1\\xde\\x02\\x4d\\xe3\\xd4\\xae\\x41\\xb7\\x52\\xdf\\x48\\x21\\x15\\x59\\x34\\xb4\\x47\\xb2\\xef\\xfe\\x51\\x24\\x87\\x52\\x1b\\xe0\\x35\\x68\\x32\\xa7\\x4c\\xe0\\xe2\\xd8\\x30\\x1b\\x79\\xf9\\x31\\x75\\xe8\\xb6\\xb9\\x61\\xb1\\xdf\\x63\\x7d\\x8a\\xca\\xdc\\x88\\x45\\x43\\xc6\\x86\\x4f\\x80\\x25\\xec\\xec\\xec\\x7c\\x6e\\x4f\\xe0\\xfe\\xcf\\xc4\\x0d\\xcd\\x95\\xe8\\xd6\\xab\\x93\\xce\\x25\\x59\\x53\\x84\\x43\\x6b\\x59\\x8b\\x73\\xc7\\x4b\\x03\\xd4\\x9e\\xd5\\x00\\x2c\\x0f\\x85\\x8c\\xfd\\x9d\\x0d\\xf6\\x1e\\xde\\x93\\x7c\\xc4\\x16\\x59\\xd6\\x70\\x8b\\x96\\xfc\\x5a\\xaa\\xde\\xe1\\x09\\xe2\\xa6\\x88\\x46\\xba\\xf2\\xc2\\x46\\xdf\\xcf\\x3d\\x27\\xc2\\x8b\\xd1\\x37\\x1e\\x35\\xfc\\x94\\x12\\x63\\x14\\x42\\xee\\x75\\xf3\\x8c\\x6e\\x49\\x58\\x07\\x0a\\x74\\xf6\\xe6\\xa2\\x20\\xf7\\x5c\\x72\\x80\\xea\\xb4\\x73\\x7d\\x97\\xe3\\x78\\x82\\xf3\\x62\\x48\\x11\\x67\\x5f\\x16\\xca\\xf6\\x0c\\xb9\\x44\\xbc\\xe9\\x2e\\x75\\x88\\x4c\\x56\\x48\\x3c\\x61\\xf2\\x6b\\x63\\x71\\xb1\\xb5\\x12\\x37\\x62\\x1a\\x06\\x54\\x3e\\xb4\\xab\\xea\\x7b\\xec\\xc4\\xfc\\x31\\xdb\\xb5\\x47\\x5b\\x3d\\xeb\\x9b\\xb3\\xc8\\x99\\x23\\x87\\x10\\x48\\x30\\xc6\\x07\\x2a\\xfe\\x1a\\xf2\\x44\\xbf\\x68\\x1a\\x40\\x32\\x9c\\x9b\\x37\\x77\\x2b\\x09\\xc5\\xe8\\x8e\\x78\\xf7\\xdf\\xfb\\xc0\\x45\\x49\\xff\\xa1\\x3b\\x41\\x44\\xdd\\xfa\\x53\\x8f\\xc4\\xb3\\x30\\x05\\x40\\xad\\x83\\x02\\x15\\xe2\\x5f\\x11\\x44\\x6d\\x28\\x9f\\x33\\x12\\x2c\\x2c\\x88\\x0d\\xe3\\xda\\x71\\xc4\\x53\\xd7\\xe8\\x8f\\x7c\\xa4\\xea\\x3d\\x12\\x55\\xe8\\x2f\\x4b\\xc9\\xe5\\x53\\x3d\\xc4\\x01\\xc3\\x30\\x40\\xe1\\x69\\x40\\xb2\\xcf\\x9c\\xf2\\x1f\\xea\\xca\\x1c\\x2c\\x6c\\x33\\x33\\x7c\\xf7\\x5e\\x18\\x84\\xb4\\x83\\xbf\\x80\\x15\\x36\\xd3\\x04\\x08\\x91\\x15\\xa0\"},\n{{0x9b,0x36,0x24,0x7c,0x17,0x71,0x0e,0x95,0x26,0x1a,0x7d,0x70,0x2f,0x57,0xfe,0x81,0xf2,0x97,0x11,0x17,0xa5,0x0c,0x87,0x92,0x01,0x93,0xb3,0x86,0xd4,0x94,0xca,0x97,},{0x29,0xae,0x39,0xf2,0x73,0xe3,0x5f,0xb3,0xf6,0x11,0xda,0x09,0x16,0x00,0x65,0x0e,0xfb,0xc4,0xfc,0x4d,0x1e,0x7b,0x4c,0x76,0xac,0xed,0x5a,0x83,0xf8,0x26,0x34,0xf3,},{0x03,0x59,0x70,0xa6,0x72,0xe9,0x3f,0x87,0xeb,0x42,0xcc,0x39,0x6f,0x6e,0xa7,0xe1,0xb3,0xdd,0x5c,0x59,0x51,0x57,0x28,0x26,0xd1,0x07,0x5a,0x15,0xc2,0xd7,0xe4,0x54,0xdf,0x19,0x5b,0x51,0xaa,0xe8,0xdc,0x61,0xef,0x7a,0xb8,0x95,0x48,0x5f,0x64,0xe5,0x98,0x95,0x73,0xd9,0x8a,0x06,0x2e,0x67,0xae,0x73,0x56,0xfe,0x5c,0x9e,0x3b,0x0f,},\"\\xe8\\xd9\\xd5\\x3b\\xa2\\x7e\\x98\\xed\\xd5\\x5d\\xf3\\xc6\\xb2\\x45\\xea\\xcd\\xdc\\x8a\\x40\\xe3\\xef\\xb0\\x07\\xbc\\x91\\x8e\\xc5\\xa8\\x69\\x17\\x8a\\x17\\x0b\\xb4\\xa6\\x35\\xb7\\xf8\\xf7\\x42\\xe3\\x7a\\xd4\\x5d\\x14\\xa7\\x43\\x44\\xa6\\xb5\\x22\\x83\\x0a\\x52\\x21\\x06\\xeb\\x96\\x0d\\xaf\\x19\\x2d\\xc1\\xe0\\xfd\\x70\\xf1\\x61\\x60\\xe1\\x22\\x51\\x68\\x92\\xd0\\xe2\\xab\\xd0\\xd4\\xae\\x0f\\x0d\\x2e\\x5a\\xdc\\xc9\\x9a\\xd5\\x53\\x02\\xe2\\x51\\xb3\\xe7\\xa4\\xd0\\xcb\\x33\\x77\\x4a\\x49\\x70\\x49\\x90\\x5c\\x33\\xde\\x1f\\xbb\\xc1\\xad\\x2b\\x6c\\x64\\x52\\x95\\xfe\\x41\\x6b\\x4d\\x12\\xb2\\x32\\xef\\xe0\\xa3\\x3c\\xd2\\xad\\x87\\x32\\xeb\\xa1\\xc3\\xcb\\x0e\\xae\\xb0\\xb2\\xa5\\x7f\\xa0\\x3e\\xc5\\x67\\xca\\x29\\x21\\x0b\\xf6\\xff\\x95\\x42\\xa7\\x66\\xf4\\x96\\xfe\\x68\\x05\\x8a\\xa9\\x83\\x80\\x6c\\xbe\\x7a\\xb1\\x0a\\x47\\x92\\x0b\\xac\\x82\\x48\\x81\\x8e\\x54\\xa4\\x15\\x51\\xc9\\xa0\\x95\\x9e\\x89\\x94\\xca\\xc6\\x0f\\xc8\\x68\\xad\\x48\\xb5\\xa2\\x4d\\x5f\\x24\\xa7\\xa5\\xa3\\xfd\\x90\\xb8\\x47\\xe8\\x17\\xad\\x3d\\xd5\\xd0\\xd6\\xf8\\xde\\x2d\\x20\\x4f\\x64\\x24\\x83\\xbd\\x53\\x58\\x5a\\x92\\xef\\x92\\x54\\x15\\xa9\\xb3\\x8f\\xbb\\xf0\\x7f\\xc0\\xf3\\x5e\\x70\\x75\\x69\\xcf\\x48\\x8b\\x20\\x54\\x53\\xce\\x54\\x33\\xeb\\xa6\\xfd\\xe8\\x78\\x1a\\xf7\\x2b\\x52\\xbf\\xbc\\xab\\x85\\xea\\xd3\\x85\\xd9\\xd3\\x17\\x5e\\x21\\xad\\x33\\x73\\xad\\x53\\x5c\\xf0\\xe3\\x57\\xed\\x6b\\x53\\x83\\xef\\x38\\x29\\xa9\\xd5\\x09\\x5b\\x87\\xdc\\x9a\\xad\\xbe\\x0c\\xa7\\xab\\xad\\xf3\\x3e\\xc3\\xb6\\xff\\xd6\\xeb\\x94\\xaf\\xdc\\xc1\\x2e\\x8d\\x66\\xa6\\xfc\\x05\\xac\\xf9\\x73\\x68\\xdb\\x0f\\x69\\x56\\x5d\\xcd\\x8f\\xef\\x4d\\x1e\\x49\\xd7\\xdd\\x4a\\xc0\\x53\\xc2\\x18\\xf5\\x24\\x0c\\x81\\x2d\\x4e\\xbb\\xa4\\x40\\xdc\\x54\\xca\\xcd\\xdb\\x1c\\x39\\x32\\x9e\\x5b\\xd0\\xc3\\xc8\\x0d\\xc3\\x25\\x9a\\x80\\xf0\\x59\\xf9\\x46\\x79\\xaa\\x07\\x94\\xca\\x01\\x15\\xcc\\x62\\xaf\\x25\\xe1\\x24\\xcb\\x8a\\x9d\\x41\\x60\\xea\\xce\\x6d\\x22\\xc7\\xb1\\xc4\\x45\\x44\\xf8\\x11\\x42\\xa1\\x9e\\xbb\\x02\\xa9\\xbd\\xa6\\x42\\x9c\\x50\\xe7\\x83\\xdb\\x4a\\x07\\xf0\\x21\\x9e\\x85\\x7c\\x8d\\x3c\\x56\\x55\\xa5\\x82\\x83\\x1c\\x8e\\xab\\xc3\\xf1\\x9b\\x59\\xad\\x8d\\x2c\\x71\\x4a\\xde\\xaf\\x40\\x39\\xd5\\xcf\\x70\"},\n{{0x6f,0xed,0xe7,0x39,0x6c,0x46,0x20,0x33,0x18,0x9a,0xcd,0x23,0xd2,0xf9,0xd0,0x2b,0x68,0x89,0x8d,0x35,0xf3,0xa0,0x1a,0x79,0x8f,0xc2,0x4d,0x48,0x8d,0xe9,0x3a,0x78,},{0xb3,0x40,0x62,0x06,0x0b,0x2c,0x20,0x07,0x6a,0x98,0xfe,0xa9,0x39,0xb3,0xb3,0xa5,0x04,0x51,0xa5,0xf4,0x9f,0x83,0x51,0xc0,0xad,0x75,0x91,0xdb,0xbe,0xbb,0x13,0x0f,},{0x88,0xa8,0x3e,0x20,0x12,0xd2,0x09,0xca,0x03,0xb8,0xeb,0xf6,0xde,0x5b,0xb7,0xef,0x4c,0xcb,0x5e,0x3d,0xf5,0xca,0xc7,0x89,0x54,0xaa,0x69,0x49,0x30,0xe4,0xde,0x82,0x54,0x4e,0xf5,0x08,0x3c,0x48,0x92,0xdb,0x9f,0x05,0xd7,0x7b,0xf6,0x3f,0x4f,0xdf,0xce,0x15,0xa4,0xd1,0xc3,0xf8,0x5b,0xae,0x80,0x77,0x06,0x2b,0xec,0x0e,0x7b,0x07,},\"\\x5a\\xbc\\xc1\\x4b\\x9d\\x85\\x78\\xde\\x08\\x32\\x1d\\xe0\\xd4\\x15\\xe3\\xd4\\x0e\\x9d\\xe3\\x1e\\x18\\x88\\x13\\x74\\x75\\xce\\x62\\xbc\\x6f\\xbe\\xe8\\xfd\\xd0\\x3b\\x9d\\x47\\xc7\\xb8\\x8b\\xbc\\xeb\\x80\\x44\\x44\\x49\\x0b\\xf6\\xa3\\xcc\\xb7\\xa2\\x73\\x26\\x1e\\x24\\x00\\x4e\\xa6\\x7c\\xef\\xa3\\xd5\\xd1\\x73\\x57\\x6d\\x01\\xe3\\x8f\\x76\\xc1\\xe0\\xe5\\x15\\x08\\x3c\\x97\\xe7\\x99\\x14\\xac\\xf2\\xbe\\x41\\x60\\xef\\x93\\x60\\xbb\\xe9\\x86\\xb3\\x6e\\x9f\\xf9\\x33\\x46\\xb0\\xe7\\x06\\x91\\xd9\\x34\\xe4\\x7f\\x8a\\x50\\x3f\\xa9\\x33\\xab\\x2a\\x50\\x42\\x69\\x47\\xcd\\xa8\\xe8\\x10\\xc9\\xeb\\xe3\\xb3\\x69\\x82\\xf0\\x9a\\xee\\x60\\x92\\x73\\x9f\\xa2\\x35\\x8b\\x61\\x3c\\x7f\\x12\\x9d\\xb0\\xdc\\xbe\\x36\\x8b\\xee\\x52\\xf2\\xf7\\xf1\\xdf\\xe3\\xd2\\x43\\x46\\x05\\xb5\\xaf\\xcf\\x25\\x60\\x71\\x71\\x7d\\x92\\x4f\\xd0\\x80\\x3b\\xbd\\x0d\\xd1\\xf9\\x55\\x5c\\xe8\\x34\\xda\\xc7\\x81\\xdf\\x4c\\xc7\\xaa\\x19\\xe7\\xf1\\x1d\\xa9\\xfb\\x99\\xcb\\x9e\\x6b\\x9e\\x1e\\x6f\\xb4\\xf7\\xe8\\xdc\\xb2\\x23\\x6c\\x28\\xae\\xb6\\xcb\\xc5\\x5a\\x13\\x0e\\x03\\xc1\\xb1\\x7a\\x99\\x1c\\xca\\x1b\\x79\\x4e\\x6c\\x13\\x73\\x2d\\x5b\\x0a\\x66\\xf6\\xeb\\xa8\\x60\\xec\\xb9\\x85\\x55\\xaa\\x4c\\x21\\x8d\\x11\\x2b\\x11\\x6b\\xce\\x23\\x82\\x95\\xde\\x14\\x27\\x41\\xf6\\x87\\xbe\\x0b\\x24\\x87\\xf5\\x8f\\xfc\\x5c\\x12\\xa0\\xa5\\x19\\xf1\\xe2\\x37\\x93\\x24\\x2e\\xf8\\x57\\xed\\x39\\x8a\\x20\\x69\\x9d\\x43\\x51\\x45\\x3f\\xc2\\xf0\\x92\\x76\\x2a\\xbd\\xe3\\x4f\\x4d\\xa2\\xdb\\xe0\\xce\\x2a\\xab\\xaf\\x6b\\xc4\\xc0\\x15\\x9f\\x3f\\xe1\\xae\\xa1\\x6a\\x03\\x6f\\x7e\\xae\\xcd\\x62\\x95\\x38\\xf3\\xe0\\xee\\xd8\\x3c\\x9a\\x4d\\xc1\\xab\\xc2\\x38\\xf9\\x0d\\xaa\\xf4\\x89\\xfd\\x61\\xb3\\x4d\\x93\\x7b\\x6f\\x46\\x07\\xa7\\x88\\xba\\xa8\\x20\\x61\\x94\\x3d\\xba\\xb2\\x6c\\x1d\\x38\\x4d\\x8d\\x49\\xf9\\x93\\x48\\x80\\x0b\\xf3\\x61\\xf8\\x71\\xf5\\xd6\\xcd\\xa1\\x8f\\x68\\x99\\x18\\xce\\xc3\\x1a\\xd1\\x58\\xf1\\x86\\x3d\\x13\\xff\\xac\\x54\\x05\\xc1\\x62\\xc3\\x2d\\xe0\\x6e\\x32\\x99\\x4c\\xc4\\x10\\x6f\\x95\\xbb\\x4f\\xff\\xdb\\xef\\xe7\\xd6\\x29\\xec\\x77\\x97\\x39\\x46\\x09\\xfd\\xbf\\xea\\xdb\\x46\\x92\\x73\\x70\\xa1\\x1f\\xb3\\x84\\x71\\x54\\x0f\\x95\\x1b\\x93\\xc6\\xeb\\x23\\x86\\x68\\xdc\\x00\\x6c\\x21\\x66\\x0b\\xa2\"},\n{{0xd5,0x59,0x58,0x01,0x34,0xab,0x05,0x0a,0xca,0x44,0x6e,0xa7,0x75,0x0e,0xf6,0xb3,0x71,0xd9,0x2d,0x76,0x45,0xec,0x76,0x35,0xfe,0x78,0x51,0x10,0x0b,0xc4,0xe5,0x1e,},{0xde,0x50,0x20,0xcd,0x21,0xa8,0xb3,0x23,0x39,0xde,0xcb,0xed,0xff,0x24,0x66,0x4d,0x95,0x80,0x32,0x63,0x27,0xae,0xdf,0x09,0xc5,0xec,0x6b,0x3f,0xe5,0x40,0x52,0x26,},{0x6f,0xcb,0x1a,0xc9,0x29,0x0a,0xb7,0x67,0xd5,0x9b,0x59,0x8c,0x9a,0x24,0xec,0xdb,0x6c,0x05,0xbb,0x02,0x3e,0xc3,0x60,0x14,0xa4,0x0d,0x90,0x8e,0xf0,0xdc,0x37,0x8a,0x45,0x28,0xb3,0x76,0x0d,0x88,0x9a,0x79,0x17,0x4e,0x21,0xca,0xe3,0x5d,0xf4,0x5d,0x42,0x7b,0xa6,0xea,0x81,0x2b,0xdd,0xca,0x16,0xe3,0x5a,0x69,0xb5,0xe7,0x9f,0x0a,},\"\\x68\\x42\\xe3\\x19\\x0a\\x11\\x0e\\xee\\x96\\xc5\\x07\\xd4\\xbc\\xb4\\xc5\\x48\\xc3\\xa0\\xed\\x7b\\x1a\\x8e\\xd7\\x7d\\xd9\\x3b\\x38\\x61\\x3b\\x23\\xc7\\x3e\\x83\\x0b\\x20\\x5e\\x62\\x65\\x19\\x21\\xad\\x82\\x96\\xb0\\x8d\\x1e\\x10\\x08\\xad\\x78\\xf2\\x99\\x6e\\x3c\\x7f\\x38\\x03\\x2e\\x46\\x7c\\xff\\xec\\xd7\\x7b\\x85\\x25\\xe2\\x43\\xce\\xc0\\x21\\xf8\\x52\\x96\\xaf\\xd5\\x45\\xd7\\xbe\\x1a\\x62\\x56\\x8b\\xb0\\xcf\\xcd\\xb9\\x0d\\x61\\x4e\\xd7\\x98\\xbf\\xb7\\xef\\xc6\\x55\\x32\\x68\\x16\\xa6\\x10\\x82\\x25\\x1d\\xf0\\x16\\x13\\xaa\\xc8\\x8e\\xfc\\xea\\x1e\\x0e\\xa2\\x96\\x1b\\x8f\\x92\\x1e\\xbe\\x15\\x58\\xde\\xe8\\x33\\x74\\xa0\\x11\\x3a\\x78\\xc5\\x58\\x57\\xce\\x20\\x55\\xbb\\x2c\\x48\\xba\\xdb\\xd3\\xd8\\xf4\\xcb\\x19\\x73\\x4d\\x00\\xd0\\x60\\x4b\\x61\\x90\\x73\\x02\\x0d\\x72\\xa9\\x9a\\x19\\x23\\xe6\\x16\\x0a\\x09\\x94\\x65\\x67\\xfd\\x4b\\xda\\x66\\x44\\x2e\\xf5\\xa7\\x36\\x07\\x86\\xd1\\x78\\xda\\xe4\\x49\\x22\\xf3\\x50\\xce\\x2e\\xdc\\x6a\\xf7\\x3d\\x1b\\xd8\\x0d\\xc0\\x3e\\xc3\\xca\\x70\\x05\\xf4\\x10\\x9d\\x10\\xc6\\xd4\\xf7\\xd8\\xfa\\x61\\x73\\x51\\x10\\xf8\\xdb\\xae\\xdf\\x91\\xa0\\xba\\xd7\\xd7\\xfb\\x5c\\x04\\xd7\\x06\\x37\\x3c\\x15\\xc6\\x45\\x06\\x3f\\xf4\\xb4\\xfb\\xd2\\xd5\\x59\\xb0\\xaf\\xad\\x43\\x2d\\x4c\\x49\\x6c\\xd8\\xab\\xfe\\xa2\\x86\\xfa\\x67\\x5d\\xc0\\x76\\x72\\x6e\\xc5\\x22\\xb3\\xa3\\xc2\\xf4\\x7a\\xec\\xc5\\x39\\xf4\\x8a\\x79\\x21\\x69\\xc4\\xcc\\x8c\\xd4\\x1c\\xd2\\xcb\\x6b\\x63\\xdd\\xbc\\x19\\x37\\x3a\\xc9\\x69\\x1c\\x2b\\xc2\\xf7\\x8f\\x22\\x60\\x3d\\x55\\x13\\x71\\x5a\\x16\\xd4\\x57\\x4e\\x7a\\xcc\\x4b\\xea\\x6d\\xcd\\x8c\\xa7\\xf1\\x98\\x65\\xa4\\x9d\\x36\\x64\\xa2\\x10\\xdf\\xad\\x29\\x07\\x74\\xb1\\x0b\\x71\\x88\\xf2\\x55\\xb3\\xbe\\x4d\\xc8\\xfa\\x86\\xf8\\xda\\x3f\\x73\\xa4\\xe7\\xc9\\x29\\x95\\x1d\\xf3\\x0f\\xe6\\x6a\\x17\\xc8\\xce\\xe2\\x3e\\x4f\\x2e\\xd2\\x06\\x3f\\x0b\\x02\\xab\\x40\\x37\\x2c\\xbe\\x54\\xb9\\xa7\\x08\\xdf\\x7c\\x48\\xa0\\x65\\x66\\xd3\\x9b\\x19\\x43\\x4c\\x6c\\x76\\x69\\x87\\xb3\\xeb\\xb0\\x06\\x75\\xf4\\x4c\\x4b\\x3c\\x1e\\x9f\\x45\\x04\\xe7\\xa9\\x27\\x05\\x89\\xc0\\xd0\\xf4\\xcb\\x73\\x42\\x35\\xa5\\x8e\\xf0\\x74\\xcf\\x9d\\xec\\xf3\\x60\\x1a\\xee\\xca\\x9f\\x1d\\x8e\\x35\\x6c\\xb2\\xdb\\x5f\\xce\\x79\\xcb\\xc3\\x61\\x43\\xf3\\x4b\"},\n{{0x9d,0x4c,0xe9,0x75,0x54,0x78,0x76,0x63,0x6f,0xea,0x25,0x43,0x7c,0x28,0x80,0xc9,0xaa,0x8e,0xe6,0xb2,0x70,0xd1,0xb2,0xda,0x19,0x7c,0x8d,0x7f,0x95,0xe7,0xdc,0xcc,},{0xbd,0xe4,0x99,0x3c,0x03,0x04,0x77,0xc3,0x58,0x90,0xaa,0xe8,0x2b,0xb5,0x08,0x7e,0x91,0x4e,0x64,0xb9,0x4f,0xfc,0x64,0xe2,0xd7,0xa5,0xa7,0xc9,0x19,0xe2,0xd9,0x02,},{0xbe,0x17,0x44,0x4c,0xd4,0x65,0xa8,0x7a,0x97,0x1d,0xf8,0x4e,0xb1,0x02,0xf9,0xc7,0xa6,0x26,0xa7,0xc4,0xff,0x7a,0xea,0x51,0xd3,0x2c,0x81,0x35,0x3d,0x5d,0xbc,0x07,0x39,0x3c,0xa0,0x3d,0xb8,0x97,0xd1,0xff,0x09,0x94,0x5c,0x4d,0x91,0xd9,0x8c,0x9d,0x91,0xac,0xbd,0xc7,0xcc,0x7f,0x34,0x14,0x4d,0x4d,0x69,0xeb,0x04,0xd8,0x1f,0x0c,},\"\\xea\\x0f\\xa3\\x2a\\x4a\\x28\\x88\\x11\\x30\\x1b\\x9e\\xe5\\x33\\xfa\\x35\\x1f\\xdf\\xbf\\x6b\\xc1\\xd0\\x55\\x5a\\x74\\x02\\x76\\x7a\\x3a\\x91\\x98\\x55\\x8f\\x74\\xbb\\xa7\\x03\\x18\\x57\\x99\\x5b\\x9f\\x32\\x62\\x26\\xf1\\xdd\\x5d\\xf1\\x07\\xb0\\x63\\x42\\x20\\x3e\\xb8\\xd4\\x0c\\x5f\\x1d\\xc9\\x5b\\x4f\\x3f\\x88\\x97\\x5a\\xa2\\x4a\\xf8\\x76\\x9e\\x26\\x70\\xc4\\x66\\x71\\xbe\\xbb\\x7a\\x0f\\x1b\\x75\\x68\\x72\\x9a\\xee\\x47\\x7e\\x89\\x88\\xaf\\x9c\\x74\\x9f\\x32\\x02\\x70\\x81\\x71\\xfd\\x94\\xb3\\x37\\xae\\x67\\xed\\x21\\xa6\\xc4\\x41\\x74\\x01\\x4b\\x0b\\x0e\\xb5\\xba\\x71\\xc2\\x77\\x97\\x8d\\x48\\x8c\\x24\\xc4\\xa7\\x84\\x13\\x09\\x84\\x6b\\x4e\\x30\\xa4\\xfb\\xbc\\xfc\\x45\\x07\\x8d\\x7e\\x14\\x01\\x41\\x14\\xb1\\xac\\x64\\xf7\\xc3\\x3c\\x9a\\xc2\\x5e\\xa5\\x62\\x6c\\x2c\\x81\\x9f\\xba\\xa2\\xa4\\xde\\x8a\\x2b\\xf5\\xf1\\x36\\x5d\\x6b\\x70\\x40\\x7e\\x80\\x94\\xf9\\x91\\x97\\xce\\x1f\\x0c\\x35\\xe1\\x1a\\x98\\xfb\\xe3\\x72\\x41\\x4e\\xa2\\x06\\x4a\\x3a\\x12\\xd1\\xcd\\x5c\\x8d\\xf8\\xfc\\x0e\\x79\\xf5\\xb7\\x70\\xb5\\x8f\\x47\\x7f\\x91\\x97\\x6c\\xa0\\x13\\x98\\x95\\x12\\x0e\\x24\\x6b\\xaa\\xb5\\xa0\\x26\\xf2\\xd3\\x9c\\x68\\x7d\\xc0\\x78\\x83\\x34\\xb5\\xc6\\x26\\xd5\\x2c\\xde\\xbe\\x05\\xea\\xf3\\x08\\x64\\xb4\\x13\\xee\\xbd\\xc5\\x58\\x1e\\xf0\\x0d\\x43\\x92\\x76\\xe5\\x2f\\x47\\x9c\\x9c\\x05\\xb1\\x16\\x39\\x58\\x26\\xb6\\x04\\x90\\xb3\\xce\\x70\\x0c\\xc0\\x02\\x7f\\x61\\xe4\\x6c\\xa2\\xf6\\xfb\\xc2\\xc9\\xde\\x2e\\x80\\x08\\x06\\x55\\x0a\\xfb\\x06\\xd4\\xa0\\x8e\\xac\\x7a\\x75\\x8e\\x24\\x58\\x2a\\x4d\\x6d\\x42\\x8b\\x43\\x3d\\x36\\x5f\\xc3\\x1d\\x44\\x44\\x60\\x7a\\xfb\\x64\\xf1\\x5e\\x37\\x07\\x94\\x00\\x5a\\x3a\\x22\\x44\\xe6\\x66\\xd5\\xd4\\xc3\\x8a\\xd2\\x00\\x9c\\x76\\x9a\\x51\\xcd\\xbf\\x73\\x8d\\x23\\x59\\x42\\xf4\\x12\\xd0\\x7f\\xee\\xb7\\x3b\\x36\\x57\\xd0\\xb0\\xc9\\x1c\\xb5\\x94\\x0b\\xad\\x6a\\x70\\x6e\\x14\\xed\\xcd\\xc3\\x42\\x25\\xb1\\xc1\\xf3\\x8b\\x1a\\xbe\\xcb\\x2a\\xdc\\xaf\\x81\\x91\\x55\\xa9\\x4f\\xe1\\x90\\xfd\\x55\\x68\\x22\\xd5\\x59\\xd9\\xc4\\x70\\x85\\x4d\\x3a\\x43\\xbf\\xb8\\x68\\xda\\xdd\\x6e\\x44\\x3d\\x98\\xee\\x87\\xe4\\xd8\\x28\\x4f\\x5c\\xf3\\xa6\\xda\\xfa\\xf2\\x95\\xb9\\x02\\x83\\x6c\\x64\\x05\\x11\\xe6\\x10\\xae\\x7d\\x0c\\xb1\\xb1\\xd3\\xd6\\x07\\x9f\\xe6\"},\n{{0x02,0x73,0x86,0x82,0x32,0xf5,0xbe,0x48,0x59,0x2c,0xfa,0x05,0x13,0x4e,0x8d,0x55,0x54,0xed,0x1f,0x9a,0x57,0xbc,0x7e,0x39,0x82,0xa3,0x30,0xc5,0x7e,0x5a,0x7f,0x3a,},{0xf1,0x72,0x20,0x87,0x82,0xdb,0x66,0xd4,0x66,0xcb,0xe4,0xf4,0x41,0x7f,0x6f,0xc4,0x77,0xb7,0x34,0x9f,0x2a,0x98,0xdb,0x56,0xc0,0x3a,0x47,0x22,0x75,0x46,0xbc,0x5a,},{0x15,0xe8,0xd8,0xdc,0x7d,0x5d,0x25,0x35,0x9d,0x6a,0x10,0xd0,0x4e,0xe4,0x19,0x18,0xa9,0xc9,0xdf,0x4c,0x87,0xbe,0x26,0x9f,0xa8,0x32,0x43,0x4d,0x53,0x01,0xdb,0x02,0x24,0x81,0xbf,0xa3,0x95,0xa3,0xe3,0x46,0x6f,0x95,0x54,0xce,0xee,0x05,0x32,0xa8,0x18,0x3a,0x0d,0x05,0x50,0xe7,0xd1,0xab,0xe9,0x9f,0xc6,0x94,0xc6,0xff,0x93,0x01,},\"\\xf7\\xa1\\xd4\\x61\\x4c\\xc6\\x4a\\x3b\\xc4\\x8f\\x00\\xc6\\x27\\x63\\x04\\xf3\\x4d\\x4d\\xfd\\x15\\xe0\\x61\\x7b\\x93\\xcc\\xef\\x12\\x6c\\x5c\\x63\\x8c\\x9d\\x99\\x53\\xaa\\xbb\\x7d\\xf4\\x2d\\xf4\\xe0\\xaa\\xa7\\xea\\xc9\\x6a\\x4b\\x38\\xc7\\xba\\x75\\x8d\\x86\\x0c\\x90\\xd0\\x5e\\x3d\\x14\\xe4\\x79\\xe5\\x45\\xf3\\x19\\xb0\\xe5\\xa8\\x5a\\xd8\\xf0\\x99\\x1b\\x43\\xd6\\xe4\\x9c\\x24\\xfa\\x06\\x0e\\x3e\\x5d\\xf9\\x5c\\x98\\xd9\\x45\\x1a\\xb8\\x33\\xe1\\x2a\\xa9\\x7f\\x40\\x46\\x11\\xbb\\xa3\\x59\\x49\\x62\\x65\\xa6\\xdb\\x11\\x91\\x7d\\x0d\\xa5\\xc6\\xa7\\x02\\xd0\\xb1\\x02\\xde\\x36\\xdd\\x0c\\x98\\xdf\\x5b\\x54\\x80\\x6c\\xe6\\x26\\xbb\\x96\\x37\\x44\\x75\\xf6\\x8a\\x60\\x60\\xeb\\x35\\x0a\\x7d\\x2a\\xae\\x32\\x04\\xb3\\xdf\\xdf\\x9f\\x1e\\x31\\xbe\\x81\\xf7\\x17\\x0f\\x8a\\x1b\\x93\\x85\\x41\\x3f\\xf8\\xf6\\x88\\x1e\\x10\\xc1\\xe8\\xda\\x4c\\x88\\xaf\\xb5\\x06\\x39\\xab\\x44\\x88\\x7a\\xca\\x2a\\xbe\\xec\\xed\\xf1\\x10\\xd2\\x95\\x8c\\x13\\xfd\\x33\\x90\\xd1\\xb9\\x6a\\x76\\x2d\\x16\\xce\\x19\\x69\\x20\\xce\\x85\\xf6\\xc4\\x15\\xbe\\xd5\\x45\\xb1\\x44\\x53\\x02\\xa6\\xf0\\x01\\xeb\\x8d\\x00\\xe9\\x7c\\x75\\x18\\x87\\x86\\x8d\\x48\\x1a\\x0b\\x1e\\x4d\\xfa\\x04\\xb6\\xf7\\x61\\x08\\x6e\\xe8\\xe6\\x97\\xb0\\x19\\xe0\\x17\\x10\\x4b\\xaf\\xb9\\x8f\\xca\\x24\\x2e\\x33\\x4c\\x6f\\x18\\xf1\\xdb\\x5b\\x6f\\x29\\x5f\\x05\\xc5\\x59\\x36\\x1c\\x68\\x31\\xda\\xbc\\x42\\xc2\\x11\\x07\\x03\\xf9\\xd1\\xf6\\x4e\\x12\\xdd\\xf2\\x6a\\x86\\x79\\x85\\x4e\\x9f\\x8e\\xf8\\x47\\x9e\\x1f\\x12\\xc3\\x54\\x47\\xaa\\xc0\\x2e\\xa7\\xf2\\x42\\xe5\\x86\\x32\\xcf\\x2f\\xd0\\x63\\xfe\\x66\\x50\\x70\\x44\\x5b\\x80\\xf3\\xdc\\x6a\\x33\\x03\\xbb\\xa9\\x6e\\x05\\xfa\\x88\\xee\\xc2\\x01\\xc5\\xc2\\xd0\\x0c\\xa8\\x1b\\x8d\\xa6\\x96\\x9d\\x0a\\x4d\\xd0\\x48\\x3b\\x34\\x77\\xd3\\x25\\xa7\\x1f\\xac\\xd6\\xfa\\x22\\x09\\xb4\\x8c\\xb4\\xf6\\x52\\x5d\\xa7\\x3c\\x9c\\x05\\xb2\\xd9\\x78\\x9b\\x01\\x44\\x8e\\x15\\x27\\xe5\\x6a\\x09\\xa9\\xbc\\x61\\x36\\xd9\\x83\\x72\\x43\\xc2\\x07\\x7b\\x92\\x5b\\xbb\\x93\\x3f\\x8f\\xb1\\xda\\xac\\x96\\x33\\x98\\xc5\\x80\\x2a\\xed\\xa3\\xbb\\xca\\x8a\\xe3\\xb8\\xf4\\xa9\\xa8\\x71\\xf7\\xea\\x8e\\x2c\\x0c\\xe8\\x98\\xc5\\x66\\x21\\x7b\\x5c\\x06\\xff\\x55\\xff\\x9f\\x4f\\xe7\\x83\\x98\\xae\\x79\\x73\\x64\\x1e\\xaf\\xb5\\x21\"},\n{{0x33,0x6a,0x83,0xb5,0x5a,0xbf,0x4c,0x02,0xe2,0x5e,0x54,0x03,0x29,0xb5,0x27,0x58,0x43,0xc2,0xec,0xb8,0xdf,0x69,0x39,0x5b,0x5a,0x5e,0x24,0x1b,0xd0,0xd8,0xc1,0x0d,},{0xdd,0x60,0x56,0x98,0x44,0x57,0x0c,0x9f,0x0a,0x82,0x64,0x3f,0x44,0x64,0x78,0xb5,0xac,0x6f,0xc5,0x42,0x21,0x42,0x31,0xa7,0xca,0x65,0x6a,0x92,0xb5,0xfd,0xaa,0x54,},{0xd2,0x63,0xf5,0x6d,0x59,0xcb,0x9b,0x28,0x96,0xa9,0x47,0x26,0x7c,0x2e,0xd7,0x8a,0x94,0x5b,0xac,0x5a,0xbd,0xbf,0x3c,0x14,0xdc,0x3a,0xd0,0x92,0xb2,0x30,0x8c,0xb9,0x31,0x5c,0x46,0x49,0x42,0xa0,0xa2,0x0b,0x20,0x24,0x51,0x1d,0x76,0x6e,0x85,0xc9,0x36,0x49,0x9a,0x14,0x9c,0xd0,0xbb,0xb2,0x09,0x15,0x0a,0x16,0x43,0x26,0x52,0x00,},\"\\x9a\\xfe\\xe8\\xab\\x48\\x20\\x10\\xe2\\x92\\x64\\xb4\\x06\\xd9\\xb4\\x94\\x53\\xd1\\xce\\x6d\\x55\\x09\\x39\\x07\\x21\\x82\\x86\\x3e\\x46\\x65\\x28\\x4a\\xb0\\x5d\\x86\\x25\\x8e\\x06\\x23\\xb1\\x87\\x54\\xc4\\x78\\x52\\x38\\xf6\\x97\\xf0\\x75\\xad\\xfb\\x9e\\x1d\\x31\\xa4\\x2e\\x85\\x93\\x4e\\xc0\\x71\\xdd\\xdd\\xec\\xc2\\xe6\\xc2\\xf6\\x13\\x34\\xa7\\x95\\x26\\x78\\x8b\\x49\\x52\\x19\\x07\\x16\\x90\\x6d\\xde\\x17\\xfb\\xa5\\x56\\xee\\xa4\\xc8\\xb5\\x97\\x27\\x51\\x4f\\x6f\\x56\\x15\\xa1\\x9c\\xa3\\x6d\\xa3\\x58\\xfa\\xe6\\xa6\\xc5\\x4f\\x7f\\x4b\\x7a\\x92\\x9e\\x31\\xba\\x7c\\xc7\\x1b\\xde\\x78\\x82\\xfa\\x9f\\xfd\\x87\\x30\\x01\\x36\\x40\\x9c\\xaf\\x3c\\xa6\\x4e\\xef\\xea\\x61\\x6a\\xed\\x58\\xda\\x5d\\xfb\\xf2\\x8b\\x66\\x8e\\xc1\\xcc\\xcf\\xfc\\xef\\x6e\\x2e\\x14\\xf8\\x10\\x9e\\x9c\\xbf\\x76\\xcf\\xa4\\x14\\xf9\\x1a\\xc0\\x0f\\x48\\xe9\\x3e\\xad\\xa3\\x85\\xdd\\x3d\\x5c\\x16\\xe1\\xa3\\x9e\\xa3\\xdd\\x55\\xc7\\x61\\xfc\\xa3\\x61\\xb4\\x28\\xf5\\x16\\xc0\\x5e\\x69\\x4f\\xe5\\xc3\\xc3\\x45\\xcd\\x94\\x45\\x71\\x87\\xa8\\xe6\\x04\\xb2\\x00\\xa1\\xa0\\xf9\\x37\\xae\\x89\\xf4\\xd6\\xb5\\x42\\x1d\\xff\\xcf\\x7c\\xa1\\x5f\\x2e\\x2c\\x25\\x37\\x8a\\x41\\x13\\x23\\x3f\\x76\\x13\\xf4\\x57\\x0a\\xa4\\xb9\\x09\\xa9\\x13\\x5e\\xae\\x4c\\x7b\\x9e\\xad\\x45\\x80\\x07\\xae\\x17\\x12\\x6a\\x11\\xd1\\x45\\x25\\x8a\\xf9\\x56\\x3d\\xb2\\xf7\\xe8\\x92\\x54\\x31\\x87\\x8b\\x0e\\xec\\xa8\\xaf\\xfc\\x01\\xac\\x59\\x13\\xbf\\x5b\\xac\\x4f\\xa3\\xa8\\x57\\xc5\\x4c\\xc8\\x90\\x6d\\x6a\\xf7\\x7d\\xe6\\xb9\\x32\\x6b\\x65\\x06\\x15\\x10\\x99\\xe8\\x7e\\x99\\xb1\\xe8\\x19\\xc6\\xfb\\xe0\\x82\\x68\\x8f\\x34\\xb8\\x03\\xd5\\x88\\xe4\\x16\\xd8\\x53\\x16\\x97\\x65\\xd6\\x2f\\x7e\\x0b\\xdf\\x72\\xc5\\xcd\\x66\\x66\\x9a\\x03\\x35\\x56\\x23\\x36\\x73\\x5e\\x7e\\xfb\\x73\\x4a\\x2f\\xad\\xa3\\x27\\xf8\\x58\\xbe\\xc6\\x02\\xd0\\xda\\x08\\xeb\\xa4\\x47\\x9e\\x7f\\x6d\\xc4\\xde\\xf6\\xe4\\xeb\\xdb\\xb7\\x30\\xee\\x91\\xa3\\x34\\x45\\xca\\xdc\\x9d\\xf5\\x2c\\x82\\x5a\\xd3\\x61\\x49\\xce\\xfb\\xc5\\x1a\\xb1\\x02\\x03\\x35\\x30\\x81\\x4b\\xaf\\xa7\\xe8\\x79\\x61\\xb0\\x63\\x67\\xff\\x89\\x6f\\x08\\xae\\x33\\x4a\\x9b\\x1a\\xad\\x70\\x3d\\xa6\\x86\\x70\\x6c\\x11\\xa0\\x49\\x43\\xea\\x75\\xe1\\x29\\x92\\xdc\\xf6\\x10\\x6e\\x37\\x20\\x77\\xcd\\x03\\x11\\x02\\x9f\"},\n{{0x88,0x40,0x91,0x72,0x61,0x8b,0x49,0x03,0x93,0xdb,0x27,0xd9,0x60,0x17,0x1c,0xbc,0x18,0x7e,0xaf,0x4d,0xd8,0xb3,0x20,0xb3,0xd2,0xf8,0x24,0x98,0x00,0x43,0x71,0x8f,},{0xce,0x2e,0x7c,0x58,0x39,0xef,0x56,0x32,0xa1,0x23,0xdc,0x37,0x3d,0xc1,0x4b,0x1f,0x05,0x05,0x76,0x6e,0x96,0x75,0x40,0x76,0x04,0xca,0x7c,0xf5,0x4e,0x8d,0x44,0xb2,},{0x93,0xb6,0xe2,0x9d,0x63,0x94,0x5d,0x5c,0x42,0x73,0x87,0xd0,0x06,0xc7,0xf0,0xb0,0x19,0x56,0xa9,0x5f,0xc0,0x43,0x6e,0xd4,0x2b,0x46,0xd0,0xf1,0x7b,0x5b,0xb1,0x93,0xea,0x8c,0x0e,0xbb,0xf3,0xd6,0xd1,0x3b,0xb5,0x39,0xe3,0x5c,0x91,0xf3,0xf0,0xf9,0xfa,0x34,0x14,0xa0,0x22,0x3c,0x90,0x60,0xba,0xc8,0x36,0x53,0xc6,0xfc,0xd9,0x06,},\"\\xfb\\x3e\\x82\\xf1\\x1b\\xc2\\x86\\x26\\x7e\\x12\\x38\\x17\\xad\\x88\\x64\\xe0\\x77\\xd9\\xf7\\xa8\\xe7\\xa1\\x63\\xac\\x7e\\xea\\xf9\\x3d\\x55\\xdd\\x11\\x1d\\xe8\\x08\\x3b\\x66\\xb5\\x3c\\xe7\\xbc\\x77\\x1f\\xc5\\x07\\x1a\\x2d\\x7a\\xc2\\xf8\\x5d\\x6f\\xc6\\xad\\xcf\\xce\\xc4\\x46\\xe1\\x6a\\xa1\\x04\\x6d\\xf3\\x72\\x09\\xad\\x7a\\x29\\xcf\\x96\\x65\\xb4\\x39\\xa5\\x4d\\x6f\\x8d\\x94\\x2f\\x89\\xbd\\xaa\\x56\\xf2\\xf1\\x12\\x60\\xcc\\x95\\x99\\x30\\x38\\xb0\\xe8\\xfb\\xdb\\x32\\x14\\xf1\\x42\\xe6\\xc9\\x0b\\x61\\xa1\\xd2\\xb1\\x42\\x07\\x62\\x06\\xaf\\x30\\xac\\x35\\x78\\x4a\\x6d\\xc1\\x5a\\x1e\\x79\\x25\\x1a\\x8c\\x77\\x31\\xa1\\xc5\\x39\\x78\\x03\\x8f\\x8d\\x76\\xd7\\x0c\\x6c\\x1c\\xdf\\x52\\x9f\\xbd\\xb8\\x4d\\x15\\x07\\xdc\\xff\\xdd\\x42\\x87\\x3d\\xfa\\x6a\\x8f\\xe6\\xbd\\x6f\\x7f\\xd2\\x9c\\x80\\xe4\\xb2\\xf9\\x33\\xd2\\xb6\\xc9\\xe6\\x2c\\x94\\x57\\xe6\\x65\\x47\\x26\\x55\\x05\\x9b\\x63\\xb6\\x18\\xe2\\xa9\\xa8\\xe5\\xb9\\xe4\\x1c\\x36\\x46\\x17\\x3a\\x89\\x2b\\x8e\\x6d\\x4b\\xca\\xd6\\xa6\\x2a\\x6f\\xcc\\xd3\\x45\\x58\\x90\\xb5\\x8e\\xc2\\x68\\x1a\\x95\\xcc\\x97\\x76\\xa9\\xfc\\xe8\\x3c\\x54\\xa9\\xef\\x31\\x2a\\x33\\x19\\x59\\xc7\\xef\\x3f\\x79\\xee\\x57\\x6e\\xb7\\xb7\\x94\\x69\\xc9\\x23\\x4b\\x1e\\xae\\xf6\\x09\\x88\\x47\\x08\\xfe\\x4b\\xb0\\xef\\xac\\x66\\x2d\\xa8\\x71\\xba\\x61\\xdd\\xab\\xb3\\xfc\\xbd\\xeb\\x8f\\x63\\x56\\x57\\xdd\\x9a\\x5d\\x73\\x11\\xe6\\x39\\xa8\\x24\\x85\\x8b\\x9a\\x98\\x68\\xd3\\xf9\\x38\\x4d\\xa6\\x12\\xc7\\xf2\\xe7\\x71\\xa4\\x6b\\xd2\\x62\\x4c\\x99\\xea\\x2b\\x6c\\xcb\\xca\\x99\\x6c\\x1d\\x9c\\x37\\x55\\x54\\xf2\\xa5\\x51\\x61\\x9c\\xe6\\xd5\\xe6\\xe4\\xd6\\xb8\\x44\\xa4\\xdb\\xea\\x83\\xba\\x73\\x23\\x31\\xfc\\xf4\\x65\\x72\\xc1\\xfb\\x0e\\x25\\x7c\\xe1\\x04\\x1b\\x26\\x5d\\xf0\\x2e\\x69\\x0a\\x92\\x81\\x4b\\xbf\\x3b\\x5e\\xca\\xc6\\x9e\\xe9\\x98\\x76\\x6a\\x02\\xb0\\xd2\\xf9\\x08\\xb3\\xc1\\x5f\\x95\\x26\\x99\\x61\\x6f\\x2c\\x07\\xd5\\x89\\x19\\x89\\x89\\xe6\\x05\\x6c\\x16\\x31\\x9a\\xab\\x6c\\xf8\\x77\\x19\\x02\\xc0\\x78\\x04\\x6a\\x88\\xb2\\x57\\x0c\\x13\\xbc\\x5e\\xde\\xba\\x2e\\xd1\\xe3\\xba\\x13\\x1d\\xaf\\x94\\xe6\\x89\\x18\\x62\\xbb\\x3d\\xe7\\xd1\\x06\\x3f\\xe4\\x05\\x30\\x7a\\x5c\\xd9\\x75\\x69\\x3e\\x9d\\x58\\xe1\\x7c\\x69\\x0e\\xee\\xf4\\xa2\\x60\\x3c\\xaf\\xc6\\x8c\\x2b\"},\n{{0xe5,0x71,0x18,0x9b,0x5c,0xd9,0xe7,0x88,0x30,0x2d,0xe3,0x91,0x9d,0x85,0x0c,0x22,0x7d,0xcb,0xb6,0x15,0x02,0x2e,0x56,0x8b,0xda,0xeb,0x37,0xac,0x5b,0x29,0x39,0xc5,},{0xed,0xda,0x89,0x0f,0x42,0xdd,0x5f,0xbc,0x73,0x16,0xa5,0xfa,0xdf,0xbe,0xc3,0x85,0x56,0xf2,0x3f,0x51,0xb8,0xef,0xd2,0x62,0x54,0x37,0xf6,0xb5,0x06,0x9f,0x1e,0xe5,},{0x7f,0x79,0x7a,0x31,0x71,0x5d,0x7c,0x35,0x6f,0x8f,0x1f,0x78,0x37,0x00,0xaa,0x99,0x74,0xbb,0x93,0x6d,0x66,0x16,0x61,0xad,0x96,0x8c,0x7c,0xde,0x1a,0xc9,0xe7,0x67,0xbe,0x56,0xa2,0xdd,0x49,0xb9,0x23,0x0e,0x90,0x11,0x0c,0x67,0xc0,0xed,0x18,0x7c,0xb7,0xe7,0x5c,0x30,0x53,0xec,0xe8,0x44,0x98,0x4d,0x29,0x6f,0x0d,0x85,0xcb,0x07,},\"\\xb6\\x2c\\x86\\x7a\\xd6\\x22\\x74\\x35\\xbf\\xa6\\xda\\xb8\\x30\\x68\\x4e\\x38\\xd1\\x96\\xe1\\xf8\\x61\\xaa\\xde\\x0f\\xd6\\xa7\\x69\\x9b\\x6d\\x60\\x90\\x1f\\xef\\xb2\\xd7\\x99\\xc3\\x5c\\x6f\\x3d\\x8b\\xb9\\x4d\\xee\\xe8\\x34\\x40\\x39\\x81\\x86\\x6b\\xab\\x84\\x94\\x6a\\xe9\\x47\\x6c\\x75\\xe9\\xf1\\xd3\\x60\\x2b\\x42\\xcb\\x2d\\xb4\\x37\\xbf\\xf3\\x3a\\x77\\x58\\x22\\xf0\\xd6\\xa2\\x57\\xd4\\xb7\\x54\\x00\\xeb\\xa5\\xb8\\xab\\xb3\\x14\\xb7\\x1f\\xc6\\xb4\\x6f\\x8a\\x34\\xe8\\x61\\xa9\\xa6\\x2a\\xbf\\x33\\xde\\x84\\x82\\xf6\\x3f\\x9d\\x71\\x69\\xe7\\x73\\xa2\\xdc\\xeb\\xee\\x03\\x70\\x5d\\xac\\x11\\x7f\\xd1\\x49\\x9b\\x68\\xe7\\x41\\x4f\\x51\\xff\\x94\\x37\\xf2\\x53\\xa1\\xd9\\x90\\x1e\\xc3\\xb0\\xbb\\xa8\\x69\\x65\\xa1\\x93\\x83\\x65\\x54\\x87\\xb5\\x80\\x10\\xf8\\x04\\x90\\x9d\\xe1\\xff\\xb2\\x21\\x2c\\x02\\x52\\xdd\\xd9\\xbf\\x2a\\x56\\xac\\x46\\xbd\\x59\\xc0\\xc3\\x4d\\xd5\\x9e\\x46\\x59\\x8b\\x6b\\xab\\xd4\\xe5\\xf3\\xff\\xfd\\xe5\\x5e\\x48\\xda\\xb0\\x39\\x8c\\x22\\xaf\\x9e\\x26\\xba\\xdd\\xf7\\x72\\x75\\xe5\\xf0\\x17\\xb3\\x5a\\x9b\\x8f\\x84\\x35\\xf9\\x63\\x19\\x36\\xb3\\x91\\xcb\\x95\\xd7\\xad\\xf3\\x5d\\x1d\\x85\\x45\\xa0\\xfd\\x06\\x64\\x12\\xd5\\x08\\x96\\x7b\\xbe\\x9a\\x20\\x24\\x5a\\x26\\x9e\\x3b\\xe2\\x77\\x71\\x17\\xe7\\x5f\\xba\\xc1\\x70\\xdb\\xa3\\x52\\xbe\\x69\\xb2\\x54\\xd3\\x53\\xb3\\xb2\\xcb\\x3b\\x7e\\x21\\xb7\\x21\\xaa\\x9f\\xe0\\x44\\xf8\\x91\\x6b\\x4b\\x2a\\x6f\\x8c\\x28\\xf8\\xab\\xe6\\x6a\\xc9\\x2b\\x91\\x32\\x3a\\xc7\\x3a\\xfd\\x93\\xdf\\xbe\\xea\\xee\\xf2\\x6d\\x19\\xbd\\x9f\\x67\\xe9\\x9d\\x48\\xcd\\x2a\\xd2\\xd3\\xe5\\x5e\\x45\\xd2\\x4d\\x54\\xb5\\x0f\\x44\\xa3\\x9b\\x90\\xe2\\x42\\xeb\\xe9\\xb4\\x2b\\xeb\\xdb\\x23\\x0c\\x47\\x0b\\xdf\\xde\\x1b\\xc7\\x72\\x1c\\x31\\x20\\x00\\x84\\x77\\x39\\x3d\\xcc\\x2e\\x15\\xfd\\x22\\xb2\\x51\\xfe\\xb0\\xe1\\x8b\\x02\\x88\\x3c\\x07\\x8a\\xee\\x4f\\xb7\\x60\\x65\\x5a\\x67\\x1d\\xc7\\xb8\\xaa\\xdb\\x9a\\x56\\x24\\x20\\xa3\\xc2\\xef\\xa2\\xd3\\x42\\xe1\\xe0\\x09\\x9d\\x95\\x1b\\x42\\x24\\x29\\x84\\xf5\\x94\\xe6\\x91\\x4f\\xe2\\x82\\xb1\\xee\\x12\\x87\\x35\\x98\\x4e\\xf9\\x3a\\x66\\x9e\\x6e\\xcb\\xa2\\x6c\\x9f\\xcb\\x9f\\x09\\xf0\\x92\\x56\\x64\\x56\\x17\\xf1\\x39\\x2d\\x35\\x90\\x89\\x17\\xcb\\x8d\\x29\\xe0\\x89\\x7c\\x75\\x03\\xcd\\xdd\\x5d\\xe1\\x95\\x96\\x86\"},\n{{0x37,0x17,0x44,0xab,0x63,0xc1,0x15,0x61,0x39,0x29,0xa3,0x43,0x70,0x9b,0xb0,0x19,0xb7,0x35,0x7d,0xff,0x72,0xd2,0xa1,0x49,0xf1,0xd0,0xf7,0x1d,0x3a,0x20,0x1e,0xfe,},{0xe5,0x8a,0xbf,0xad,0x4a,0x13,0x85,0x9f,0x0a,0xcb,0x05,0xd0,0xe4,0x7d,0x59,0x63,0x8f,0x7b,0x1b,0x49,0x36,0x10,0x0b,0x98,0x8d,0x61,0xe6,0xe7,0x0e,0x22,0x66,0x7d,},{0x5e,0xae,0x4a,0xc7,0x2a,0xf0,0x17,0x4a,0xb2,0x56,0x52,0x7b,0x7c,0xd3,0x37,0xa0,0xe5,0x48,0x2e,0x61,0x5a,0xf0,0x68,0xdb,0x21,0xda,0xe3,0x5a,0x64,0x64,0x07,0x42,0x60,0x4d,0xf7,0x3f,0xd4,0xca,0x02,0xed,0x95,0x15,0xa5,0x60,0x8d,0x73,0x19,0x52,0x30,0xfa,0xdc,0xa7,0xb4,0x26,0xf0,0x2a,0x2f,0xbf,0xd0,0x20,0x61,0xaf,0x36,0x00,},\"\\xc2\\x19\\xde\\x1e\\x8d\\x7a\\xd8\\xdf\\x08\\xc4\\x93\\x77\\x39\\x6f\\xe7\\xc1\\xf2\\xd5\\x7b\\xd2\\x17\\x06\\x33\\xa0\\x0d\\x70\\x8f\\xaa\\xde\\xe1\\x80\\xce\\xba\\x92\\x84\\x9a\\x77\\x78\\x50\\x6c\\xbb\\x36\\x68\\x75\\xbf\\x91\\x24\\x70\\x18\\x94\\xce\\xcd\\xb3\\x38\\x51\\x47\\xd0\\x67\\x18\\x43\\x92\\x2a\\x64\\x9a\\xff\\x7c\\x43\\x5e\\xb5\\xa9\\xc7\\x49\\x27\\x50\\x30\\x72\\xd0\\x06\\x79\\x78\\x71\\x6d\\xc8\\x0b\\xe1\\x54\\x5a\\x2d\\xbf\\x5a\\x1c\\x38\\x53\\x6e\\x12\\xbd\\x77\\x20\\xc1\\x96\\x5d\\x38\\x03\\xa4\\xe8\\xaa\\x55\\x76\\x51\\x92\\xa1\\x3b\\x70\\x5c\\xa1\\x05\\x9d\\xed\\x0e\\x80\\x63\\x62\\xfc\\x5b\\xbe\\x6c\\x76\\xa1\\xc9\\x67\\x4b\\xb8\\x53\\x79\\x0f\\x7e\\x90\\xaf\\x00\\x75\\x3e\\x00\\x43\\x6d\\xa4\\x8c\\xd0\\x82\\xea\\xd6\\x4f\\xdd\\xb6\\x89\\x89\\x01\\x62\\x08\\x2f\\x84\\x82\\x92\\x4f\\x33\\xac\\xd6\\x04\\x64\\x0f\\x69\\x92\\x73\\x52\\xb4\\x3f\\x64\\x40\\x2d\\x27\\xa8\\x83\\xfa\\x6b\\x72\\xaa\\x70\\xd2\\x41\\xdf\\xfa\\xa1\\x70\\x1a\\x25\\xcf\\x10\\x79\\x35\\x82\\x60\\x79\\x38\\x75\\xf7\\x6a\\x29\\x78\\xe9\\xf9\\xf9\\xd6\\x86\\x34\\xeb\\x3f\\x5f\\x01\\xbd\\xe1\\xce\\x49\\xe5\\x92\\x12\\x52\\xf9\\x49\\xf0\\x82\\x79\\x5e\\x4e\\xaf\\xed\\x7b\\xe5\\xb4\\x9a\\x9f\\x95\\xed\\xbb\\x4a\\x13\\x53\\x2e\\x3f\\x3b\\x3b\\xe6\\x2e\\x26\\x52\\x23\\x12\\x53\\xa2\\x0c\\x1d\\x54\\x77\\xe8\\xf4\\xbc\\x57\\xed\\x76\\xfa\\x19\\xea\\xf0\\x3a\\x11\\xbb\\xa4\\x29\\xb6\\x49\\x6c\\xe7\\x62\\x46\\x17\\x0e\\x04\\x3b\\xc1\\x4f\\x2d\\x2f\\x70\\x3d\\x96\\x8f\\x1d\\xeb\\x09\\x38\\x87\\x15\\xc3\\x7c\\xb4\\x75\\x2d\\xa8\\xd4\\x64\\xe3\\x48\\xe0\\x31\\x3c\\x89\\x93\\xe2\\x41\\x33\\xa7\\xc5\\x45\\x28\\x4e\\x3c\\x9c\\x90\\x7d\\x01\\xb2\\x60\\xc4\\x88\\x3f\\x9c\\xb3\\xe3\\xdc\\x5b\\x6f\\x7f\\xb6\\xd7\\x55\\x36\\x36\\x5f\\x21\\x32\\xea\\xed\\xda\\xb5\\x70\\xe7\\x27\\x3a\\xfa\\xc0\\xbf\\xf5\\xc9\\xfc\\x0b\\x82\\x0f\\x20\\x78\\xe0\\x33\\x60\\x52\\xe1\\xfe\\x7b\\xde\\xc8\\x66\\x74\\xd0\\x99\\x8e\\xc7\\x8d\\xa1\\xc3\\xf3\\x47\\x51\\xf8\\x86\\x72\\x76\\x95\\xf3\\x5e\\xca\\x13\\x04\\xb1\\x47\\x34\\x76\\x6a\\xb0\\x5c\\x11\\x86\\x30\\x6d\\xed\\x9d\\xb3\\xee\\xf6\\x5d\\x3c\\x04\\x56\\xcd\\xae\\x81\\x81\\xaf\\xee\\x04\\xb2\\x96\\xc6\\x72\\x2a\\x88\\xc7\\xef\\x30\\x88\\xd2\\x6f\\x7f\\xe7\\x4b\\xc8\\x9c\\xf5\\x28\\x5c\\x68\\x8f\\x02\\x7b\\x7e\\x68\\x60\\x04\\x86\\xaf\"},\n{{0x49,0x8b,0x6e,0xe6,0x49,0x2d,0x53,0x23,0x1b,0x35,0x32,0xd1,0x93,0x57,0x8b,0xa7,0x5d,0x6a,0x89,0x4e,0x2e,0x53,0x00,0x34,0xe2,0x1a,0xb8,0xad,0x8d,0x2c,0x0d,0x1f,},{0xd1,0x24,0x66,0x5b,0x28,0xfa,0xcd,0x2d,0x17,0x94,0x6a,0x04,0xdf,0xe3,0xd1,0x29,0xa4,0x56,0x1a,0x2b,0x24,0xeb,0x32,0x6d,0x84,0xb6,0x2b,0x42,0x2e,0x44,0xdb,0xcf,},{0x11,0x2f,0x5c,0x6d,0x3b,0xcb,0x3d,0xd9,0x93,0x46,0xd3,0x2a,0xd6,0x9c,0xbf,0xac,0x3e,0x65,0x3b,0xef,0x29,0xc6,0x8a,0x33,0xf4,0x32,0x31,0xf6,0x6c,0xea,0x1d,0x0a,0x19,0x54,0x27,0xd6,0xe1,0x0c,0x0e,0x77,0xc5,0xd5,0x5f,0xe2,0x79,0x42,0x87,0xee,0x32,0xe5,0xe2,0x2b,0xaf,0xbb,0xd8,0x05,0x2a,0xd3,0x60,0x6b,0x90,0xf9,0x45,0x05,},\"\\x04\\x98\\xa5\\x9b\\x87\\xcd\\xae\\x28\\x69\\x55\\x47\\xe1\\x08\\x63\\xbc\\xe8\\x04\\xd9\\x7d\\xe0\\xac\\x80\\x08\\xf3\\xd5\\xfb\\x65\\x2c\\x17\\x57\\x41\\x9f\\xdc\\x9e\\x0f\\x97\\x36\\xf4\\xc5\\x9a\\x34\\xf2\\x1c\\xfc\\x74\\x59\\x9f\\xa7\\x88\\xfc\\xc1\\x0c\\x67\\x30\\xc7\\xdf\\x8c\\x3d\\x2c\\x1b\\x6a\\x78\\x6d\\x12\\x30\\xb6\\x55\\x85\\x71\\x9d\\x1c\\xb5\\xc4\\x90\\x35\\x9b\\x94\\x43\\x5d\\x6d\\xd6\\x71\\xf5\\x4d\\x6e\\x9a\\x19\\xb9\\xb5\\xaa\\xad\\x7e\\x0f\\x23\\x3f\\x87\\x97\\xdf\\x99\\x78\\x28\\xd8\\x8c\\xd9\\x2e\\xf0\\x89\\xef\\x7d\\xbf\\x1e\\x95\\x27\\x78\\x94\\xa2\\xf7\\xc2\\xfd\\x0c\\x8e\\x4d\\xfd\\xfa\\x6d\\x3d\\x14\\x58\\x9f\\xf0\\x19\\x16\\xdb\\xf9\\xdd\\xd8\\x11\\xc2\\xf5\\xe0\\x1e\\x94\\x29\\x89\\x90\\xa1\\x45\\xa6\\xcf\\xc2\\x68\\x95\\x61\\x4c\\x7c\\x96\\x3f\\xef\\x30\\x8a\\x4e\\x38\\x56\\xc3\\x2d\\xd3\\xe3\\x59\\xbc\\x56\\xd2\\xcc\\xa4\\x96\\xad\\x19\\x9f\\xf1\\xa5\\x68\\xd6\\x43\\x0a\\xc5\\xcd\\x20\\x8e\\x0e\\x2d\\x07\\x80\\x3c\\xa5\\x23\\xe0\\xd8\\x13\\xad\\x37\\x33\\xab\\x50\\xbd\\xca\\xdc\\xb9\\x88\\xae\\xe7\\x58\\xea\\x50\\x43\\x9b\\xf3\\x8e\\xe6\\x49\\x99\\x76\\x04\\xf1\\x51\\xc6\\x02\\xc8\\x29\\x00\\xa8\\x20\\x5d\\x8f\\x6f\\x67\\x0c\\x86\\x84\\xbf\\x5a\\xbb\\x5f\\x75\\xff\\x29\\xa3\\x7e\\xb9\\xbf\\x81\\x05\\x19\\x9f\\xbb\\xfb\\x47\\x07\\xe1\\x62\\xe6\\x4c\\x71\\x52\\x70\\xf8\\x53\\xe6\\x48\\xb0\\xaa\\x26\\xfe\\xa0\\xf6\\xdb\\x56\\x28\\x96\\xbf\\x42\\x4a\\x9f\\xfc\\xb2\\x92\\xfa\\xe8\\x5b\\x76\\xce\\xfb\\x8b\\xd5\\xa4\\xb3\\xce\\x1f\\xb3\\x9b\\xd2\\xa5\\x0d\\x0c\\x9e\\x6d\\x93\\x3e\\x16\\x7f\\xf6\\x29\\xb8\\xa4\\x94\\xf2\\xa9\\xb7\\x74\\xeb\\x30\\x3c\\x78\\x1e\\xa0\\x2a\\xff\\x1a\\x8a\\xfa\\xdc\\x24\\x65\\xcc\\x61\\x69\\x68\\x01\\x5e\\xd6\\xa5\\xa3\\x3c\\x31\\x20\\xb9\\x45\\xed\\x53\\x51\\x98\\x1e\\x32\\xfb\\x9f\\xb9\\x6b\\x22\\x12\\xdc\\xf8\\xfe\\x9a\\xc5\\x6e\\x3c\\xf4\\x1d\\xc5\\x24\\xf8\\x00\\x63\\x10\\x20\\xb0\\x25\\x91\\x91\\x78\\xce\\x07\\x4e\\xef\\x07\\x8d\\x68\\x42\\x01\\x2a\\x27\\x6e\\xfa\\x62\\x8d\\xb5\\x40\\x58\\xd1\\xeb\\x5b\\x5b\\x70\\x5f\\x1e\\x18\\x18\\xd2\\xdf\\x51\\x64\\xba\\xab\\xb0\\xc6\\x19\\x56\\xec\\xdb\\x8c\\x70\\x6e\\x56\\x2f\\xc4\\xfd\\x64\\x05\\x28\\x70\\x53\\x0a\\xe4\\x25\\xb2\\x21\\xf8\\x9d\\xd6\\xf9\\x0d\\xab\\x88\\x2e\\x76\\x3e\\x7a\\x7f\\xfa\\x14\\x1b\\xba\\xa8\\xbf\\x7a\\x3f\\x21\\xb0\"},\n{{0xce,0xfc,0xfc,0xd1,0xcf,0xf4,0xd8,0x91,0x07,0x49,0x27,0x91,0x31,0x83,0x0b,0x1d,0xa1,0x9d,0xfc,0x52,0x45,0xf7,0x8c,0xa6,0x8b,0x8c,0x3c,0x1b,0x62,0x2b,0x45,0x51,},{0x1d,0x39,0x4a,0xbd,0x1b,0x4e,0xd1,0xae,0xdf,0x96,0x6a,0x60,0xef,0xd3,0xff,0x88,0x21,0x40,0xa7,0xe5,0x6b,0x42,0x83,0x74,0xec,0xb4,0x43,0x28,0x9a,0x9c,0x7f,0x00,},{0x7d,0x83,0xff,0x66,0xec,0x79,0x30,0x7b,0x1c,0x0c,0x09,0x3f,0xda,0x39,0x68,0xa9,0x6c,0xf6,0x04,0x4f,0x5c,0x80,0x28,0x88,0x58,0x40,0x18,0x84,0x5e,0x7c,0xaf,0x2a,0x13,0x5a,0xc6,0xf1,0x67,0x7e,0x84,0xd2,0x2e,0x45,0x8e,0x22,0x7e,0x4f,0x93,0x02,0x09,0x91,0x9b,0xc1,0x1b,0x12,0xf7,0xaa,0xf2,0xb8,0xc9,0x43,0x02,0xd6,0x42,0x00,},\"\\x5e\\xc9\\x4e\\xd0\\x6f\\xc1\\x25\\x7a\\xe9\\xc1\\x83\\xce\\x56\\x27\\x12\\x07\\xac\\xa3\\x7a\\x23\\xfd\\xb4\\xb0\\xe7\\x4a\\xc9\\x30\\x7a\\x1b\\xb1\\x12\\xe0\\x5e\\xd5\\xa5\\xd0\\x47\\xc9\\x31\\x09\\xe2\\xe5\\x94\\x77\\xb0\\x33\\x78\\x34\\x64\\x22\\xde\\x36\\x71\\x4c\\x29\\x61\\xbb\\x97\\x36\\xa5\\x13\\xca\\x36\\x71\\xc6\\x03\\xa6\\x8c\\x2b\\xe7\\x31\\x7b\\x1b\\x52\\xa0\\x76\\xda\\xe2\\xaf\\xf7\\xbc\\x88\\xcd\\x5e\\xea\\x0a\\xa2\\x68\\xfa\\xaa\\xda\\xe5\\x39\\xc9\\x38\\xbb\\x4f\\xd4\\xb6\\x06\\x9b\\x19\\x45\\xeb\\x6a\\xf0\\xc9\\xe6\\xc8\\xaa\\x5e\\xe4\\xa4\\xaf\\x37\\xe9\\x0c\\x67\\xe2\\x48\\xe8\\xd2\\x7b\\xd7\\xf9\\x58\\x9c\\x4d\\x30\\xe9\\x05\\x65\\x1b\\xaf\\x45\\x36\\x4f\\xa0\\x49\\x95\\x7e\\xa5\\xd9\\xb7\\x14\\x6c\\xa6\\x82\\x04\\xe5\\xe9\\x73\\xd0\\xf1\\xc9\\x1a\\x1c\\x4b\\xde\\xd6\\x61\\x15\\x02\\x8a\\x71\\x11\\x4f\\x0f\\x4f\\x85\\x1b\\xd1\\x15\\xfa\\xeb\\x95\\x4e\\x3f\\x71\\xa0\\x14\\x70\\xb2\\x48\\x1a\\x00\\x98\\xd9\\x9f\\x9d\\x74\\x89\\x8c\\x8b\\xa0\\x28\\x7c\\xc7\\x83\\x41\\x55\\x21\\x41\\x73\\xd1\\xfc\\xba\\xfc\\xfe\\x9b\\x08\\x25\\x03\\x84\\x43\\x94\\x76\\x05\\x58\\x83\\x83\\x38\\x16\\xc9\\x52\\x4c\\xfd\\x57\\x44\\xaa\\xa2\\x59\\xdb\\x7e\\xbd\\x3a\\x6a\\xa2\\x0b\\x5a\\x65\\x46\\xda\\xde\\xfd\\x14\\x06\\x68\\xeb\\x0e\\xcc\\xb5\\xf6\\x68\\xdb\\x9f\\xc6\\x29\\x83\\xdf\\x98\\x08\\x50\\xc9\\xd1\\x98\\x82\\xa1\\x75\\x50\\xd5\\xdc\\xa3\\x54\\x2c\\xd3\\x60\\x03\\xa0\\xd0\\x3c\\xff\\xb0\\x45\\x75\\xa3\\xe8\\xe1\\xd0\\x70\\x15\\xc7\\xb3\\x0e\\xca\\x91\\x15\\xcd\\x2b\\x72\\xe4\\x6d\\xfd\\xdf\\x6a\\x4d\\xda\\x1f\\xaa\\x2d\\xbd\\xc8\\x90\\x00\\xd4\\x33\\xf6\\xec\\x9a\\xdc\\x46\\x14\\x6d\\x93\\x9f\\x32\\x12\\x1b\\x99\\xb2\\x89\\x83\\xd9\\x8b\\x9d\\xde\\x8c\\x3f\\x6e\\x57\\x79\\xf2\\xb0\\x70\\x0c\\xb0\\x23\\xdb\\x13\\xde\\x65\\x6e\\x0a\\xed\\x1d\\xa2\\xd5\\xc6\\xba\\x26\\x52\\x34\\x36\\x48\\xad\\x42\\x0f\\x6a\\xb9\\xe5\\x5a\\x97\\x48\\x2a\\x1a\\x22\\xb3\\xbc\\x2e\\xe5\\x98\\x62\\x9a\\xba\\xd9\\x54\\x7e\\xdb\\x5f\\xf7\\x90\\x99\\x05\\x64\\xbd\\x87\\x1f\\x81\\xb2\\x4b\\x12\\xf2\\xbf\\x8d\\xbd\\xfe\\x7a\\x88\\x37\\x5f\\xad\\x9c\\xcb\\xd9\\xfc\\x0b\\xa1\\xd3\\xbb\\xa5\\xe3\\xc4\\x81\\x3c\\x18\\xa0\\x34\\x8a\\xad\\x83\\xfb\\x1b\\x82\\x68\\x90\\x54\\xd9\\x9b\\x46\\x00\\xdd\\x17\\x60\\xd0\\xdc\\xce\\x44\\x75\\x74\\x67\\xbe\\xc1\\x94\\x64\\x06\\xd5\\x30\"},\n{{0xd1,0x07,0xcf,0x26,0xf5,0x27,0xdb,0x71,0xa2,0x06,0xe4,0x1d,0x17,0x95,0x53,0x21,0x01,0x32,0x25,0xbb,0x20,0xf9,0x3e,0x12,0xdf,0x3d,0xc7,0x39,0x9e,0x72,0x0c,0xa3,},{0x18,0x6b,0xf4,0x53,0xc9,0x5d,0xc0,0xa2,0xfd,0x58,0x9a,0x78,0xe2,0xc8,0x00,0x40,0xb3,0xf6,0xdd,0xf9,0xa6,0xf8,0x68,0x1d,0x14,0x60,0x36,0xcf,0x21,0x46,0xe8,0xfc,},{0x80,0x71,0xd9,0x7f,0x32,0x4f,0x10,0x35,0x8f,0x13,0xac,0x8c,0x61,0xd4,0x24,0xb4,0xf3,0x00,0xdd,0x04,0x19,0x57,0x1c,0x39,0xe4,0x0d,0x99,0xae,0xa5,0xf0,0x31,0x40,0xe6,0x2a,0xb4,0xc9,0x71,0x27,0xab,0x33,0xe9,0x82,0x69,0x96,0x6a,0xe1,0xd4,0x55,0x7e,0x45,0x9b,0xf7,0xf5,0x97,0xb3,0x13,0xf3,0x51,0xa2,0x01,0x22,0xf0,0x66,0x0e,},\"\\x78\\xeb\\x9e\\x13\\x78\\x99\\x28\\xa7\\x4f\\x36\\x01\\x41\\x72\\x8e\\xde\\x98\\x38\\x96\\x85\\xc8\\x36\\xb9\\x1f\\xaf\\xbf\\x1a\\x7e\\x8c\\x19\\xcf\\xbe\\x21\\xbd\\x3c\\x3d\\x6c\\x6e\\xd8\\x3c\\x40\\x9e\\xf6\\x93\\xf1\\xd7\\x35\\xda\\x3f\\xa4\\x66\\x49\\x7e\\x19\\xf3\\x8e\\x30\\xfb\\xa2\\xa1\\x02\\x37\\x85\\x45\\x90\\x70\\xe6\\xe9\\x2c\\x1c\\xb7\\xc9\\xbd\\x0c\\x9b\\xa6\\x12\\x20\\x15\\x78\\x66\\xc3\\xbe\\xd2\\xb0\\x1e\\x6e\\x6b\\x9b\\x8d\\xd3\\xf0\\xc4\\x7c\\x02\\xf1\\x81\\x34\\x6a\\x0a\\x9b\\x9b\\x5d\\x3d\\x7e\\x18\\xa9\\x4d\\x69\\x56\\x85\\x5e\\x16\\xe8\\xea\\xaa\\xab\\x71\\xb1\\x03\\x02\\xf3\\x5b\\xd8\\xfb\\x1f\\x9b\\x58\\x47\\x30\\x41\\x60\\x32\\x49\\x26\\x64\\x5b\\x05\\x82\\xc2\\xf2\\xf1\\x53\\x3a\\x24\\x28\\x14\\x61\\x51\\x42\\x41\\xdb\\x28\\x50\\xef\\x31\\xc5\\x76\\x3b\\x2e\\x3d\\x4f\\xb1\\x8f\\xc6\\xd8\\xc1\\xd7\\xe5\\x2f\\x7c\\x13\\x39\\x2c\\x17\\xe2\\x70\\x19\\xff\\x60\\x00\\x8e\\x43\\x1f\\x17\\x14\\x37\\x0b\\xc0\\xef\\xd9\\x45\\x2a\\x61\\xf5\\xc5\\x64\\x88\\xd9\\x1a\\x18\\x50\\x37\\xf1\\xf6\\x47\\xf7\\x2f\\xa7\\x85\\x01\\x0d\\x5d\\x78\\xf0\\xa1\\x15\\x87\\xcc\\xf6\\x6b\\x80\\x88\\xe0\\xe6\\x35\\xff\\xf3\\x77\\x41\\x93\\xb2\\xed\\xef\\xfd\\x92\\xd6\\xe8\\xa0\\x32\\x11\\x28\\xae\\x64\\xcd\\xb8\\x62\\xe6\\x31\\xe2\\xee\\x5b\\xa0\\xda\\x44\\xbb\\xd5\\x89\\xdc\\x39\\x2b\\x5a\\x11\\x3b\\x86\\xa7\\x27\\xa8\\xdd\\xb6\\x98\\xa3\\x34\\xcc\\x66\\x8b\\x39\\xb1\\xcd\\xe1\\x99\\xb8\\x88\\x37\\xca\\x5f\\x00\\xf5\\x53\\xf8\\x9c\\x62\\x28\\x34\\x27\\x36\\x41\\xd3\\x9b\\xc1\\x0c\\x6a\\x24\\xe1\\xeb\\x42\\x58\\x75\\x42\\xf0\\x3f\\xc1\\x62\\x75\\x24\\xed\\x6b\\x74\\x93\\x91\\xf1\\x10\\x28\\x70\\x6c\\x42\\x36\\x44\\x25\\xb2\\xca\\xf2\\x01\\x80\\xe1\\xb8\\x02\\xc7\\x44\\xb4\\x9b\\x7b\\xcd\\x9b\\xf7\\xb1\\x5c\\x23\\xa0\\xbf\\x1c\\x69\\x65\\x96\\x0d\\x34\\x15\\x54\\xe1\\x96\\x6b\\x6e\\xf8\\x2f\\xcf\\xbb\\xe4\\x1d\\x1e\\x09\\xd7\\x41\\xe3\\x09\\x25\\x44\\x46\\x77\\x7f\\x13\\xc2\\x9a\\x67\\xb8\\xbd\\xeb\\xc5\\xf7\\xf0\\x4d\\x16\\x0d\\x60\\xe3\\x32\\xe3\\xd0\\x44\\x1a\\x0f\\x2f\\x7b\\x19\\x2c\\x3e\\x2b\\xdf\\x6d\\xad\\xec\\x2a\\x42\\x4f\\x88\\x66\\x98\\x06\\x23\\x6e\\xe0\\x4d\\xea\\x69\\x2b\\xd8\\xbb\\x6f\\x91\\xca\\x06\\x82\\xec\\xe3\\x49\\x14\\x25\\x75\\x35\\x8b\\x9b\\x7b\\xe7\\x06\\x00\\xb3\\xcb\\x81\\xe1\\x45\\x6b\\xa0\\x79\\x9f\\xdc\\x01\\xff\\xd6\\x86\\x23\"},\n{{0xaf,0x7e,0xa8,0xe4,0x1c,0x89,0x37,0xa4,0xec,0x47,0x5a,0xd8,0x13,0x71,0xa1,0x71,0xd3,0xd0,0xf9,0xfd,0x75,0x19,0xa0,0x4c,0x75,0x1e,0xd4,0xad,0x8f,0xf8,0xfe,0xf9,},{0x15,0xdf,0xc7,0x15,0x85,0xba,0xc7,0x1e,0xf2,0x0f,0x37,0x49,0x87,0xc5,0x55,0xa3,0xf2,0xf0,0x7d,0x6b,0x9c,0x78,0x70,0x66,0xc1,0x0d,0x63,0xcf,0x06,0xe0,0x2a,0xb0,},{0xc0,0xf1,0x73,0x91,0x67,0x27,0x4b,0xf9,0x18,0x31,0xc7,0x4b,0xeb,0x64,0x5a,0xf7,0x90,0x45,0x9b,0x28,0xbb,0x3f,0x21,0x32,0x53,0x65,0x13,0x0f,0x40,0x9a,0xcb,0x66,0xdf,0x1d,0x22,0x37,0x59,0xa9,0x75,0x8e,0x08,0xfd,0x72,0x53,0x73,0x74,0x84,0xe2,0x85,0xa6,0xfb,0x47,0x40,0x4a,0xbe,0x2e,0xba,0x5e,0xf2,0x49,0xfd,0x02,0x5c,0x0a,},\"\\x05\\xf2\\x26\\x3f\\x02\\x45\\xec\\xb9\\xfa\\xeb\\x14\\xe5\\x7a\\xca\\x43\\x66\\x68\\x30\\x8c\\x81\\x25\\xdf\\x31\\x16\\xc4\\xee\\x20\\x50\\x1d\\x0c\\xde\\x70\\x1b\\x36\\x6e\\x2b\\x50\\xa1\\xc5\\xed\\xf4\\x84\\x14\\x4c\\xe1\\x6b\\xfb\\x1f\\x7d\\x26\\xdc\\x42\\x75\\xea\\x97\\x32\\xe2\\x64\\xba\\x4d\\x4a\\x36\\x2b\\x40\\x27\\x5b\\xa4\\x73\\x77\\xdb\\xc3\\x32\\xcb\\x65\\xe2\\xf4\\xc8\\x85\\x38\\x94\\xaa\\x87\\x8a\\x4c\\x17\\x5d\\xc5\\xb3\\xb2\\xa7\\x57\\xff\\x3c\\x8d\\x7d\\xe6\\x60\\x97\\x3b\\x89\\xda\\xdf\\x07\\x6e\\x2e\\x4f\\xc7\\x62\\x39\\xb7\\xbc\\x75\\x2a\\x22\\x9d\\x44\\xe0\\x00\\xce\\xb6\\x67\\x10\\x4c\\xb0\\x74\\x6b\\xfc\\xf5\\x9d\\x69\\x60\\x3a\\xe7\\xfc\\x1b\\xcf\\x11\\xd2\\xe3\\x3f\\x61\\xdc\\x49\\x7e\\xc1\\xb0\\xbd\\x5e\\x4f\\x1d\\xbe\\xf4\\x35\\xf2\\xf2\\x91\\xf3\\x0b\\x00\\xa8\\x5e\\x83\\x39\\x46\\xc8\\xb1\\x04\\x84\\xe4\\xab\\xd7\\xd6\\x0b\\xdb\\xb1\\xfe\\x6d\\xff\\x58\\x07\\xa5\\x3b\\xb8\\x93\\x82\\x15\\x30\\x13\\xb7\\x0c\\xa0\\x8e\\xfc\\x91\\xb7\\xe9\\xfc\\x5b\\x5d\\xbb\\xb6\\xaf\\x12\\x3b\\x57\\xbe\\x2e\\x14\\x0f\\xc4\\x71\\xa4\\x5d\\x89\\xfa\\x82\\x84\\xcc\\x27\\xe0\\xa1\\xfe\\x77\\x1f\\x55\\x59\\x8b\\xbd\\xcf\\x06\\x8d\\x50\\x6d\\xad\\x0a\\x59\\x21\\x79\\xce\\xca\\x39\\xee\\x95\\x26\\xf9\\xe4\\xfe\\x47\\xbf\\x2b\\xb1\\x4f\\xb1\\x48\\x6a\\x67\\x7d\\x4d\\x7b\\x99\\xa5\\x20\\x54\\x56\\x76\\xa0\\xf1\\xfa\\x80\\x90\\x49\\xaa\\x24\\x14\\xae\\x7b\\x81\\x7d\\x9a\\x03\\x6e\\x5c\\x15\\x78\\x86\\xe8\\x34\\x1d\\x4e\\x81\\x9c\\x09\\x2a\\x3b\\x48\\xb3\\x60\\x6b\\x03\\xac\\xb7\\x27\\xc6\\xc2\\x21\\x7d\\x0a\\xf3\\x01\\x21\\x54\\x6a\\x94\\xaf\\x6b\\x49\\xca\\xa2\\xa8\\xc9\\xb1\\x78\\x6f\\xa0\\xc2\\xa5\\x24\\xec\\x7a\\x02\\x3e\\x92\\x4b\\x5f\\x8a\\x89\\xa5\\x37\\x80\\xc7\\xf8\\x78\\x1c\\x5b\\x8e\\x86\\x94\\x30\\xca\\xa0\\xe6\\xd0\\x43\\x79\\x67\\xe3\\xae\\xd4\\x4f\\x45\\xc9\\x01\\xcb\\xcf\\x10\\x26\\xfb\\xbd\\x4e\\x3d\\xd9\\xa0\\x91\\xec\\xf8\\xb3\\x4f\\x7d\\xd5\\x03\\x8e\\x54\\x3d\\xc7\\xeb\\x6a\\xd5\\x49\\x4e\\xfb\\x14\\x5c\\xf6\\x3e\\xc0\\xd3\\x55\\xbb\\x8e\\x17\\x2f\\x45\\x5d\\x8a\\x6b\\x13\\xda\\xca\\xad\\xdb\\xc5\\x6e\\x47\\xde\\x3c\\xf7\\x62\\xa1\\xa7\\x38\\xef\\x09\\x2f\\x14\\x36\\x68\\x04\\x67\\xb5\\xcd\\x82\\xe9\\xe3\\x6e\\x2d\\x2b\\x68\\x42\\xb3\\xbd\\x5d\\xce\\x77\\x18\\x0d\\xda\\xf0\\xb6\\x43\\x37\\x8e\\x69\\x85\\x99\\xdd\\x47\\xf5\\xcd\\xbb\"},\n{{0x0c,0x57,0xcb,0xfc,0xeb,0xde,0x10,0xed,0xe0,0x2d,0x1c,0xb0,0x1d,0xf3,0x60,0xd4,0x1f,0x2e,0x66,0xa5,0x04,0x43,0xd5,0x8b,0x5d,0x4f,0x08,0x28,0xc9,0xa1,0x8b,0xb7,},{0xc4,0xd7,0x61,0xba,0x18,0x99,0x71,0xb9,0x46,0x2c,0x61,0xbf,0x46,0xa7,0x65,0xf8,0x8e,0x2e,0xca,0xa5,0xbf,0x22,0x11,0x22,0x0a,0xfb,0x00,0xac,0x65,0x7f,0x7c,0xe5,},{0x8a,0xf7,0xbb,0xe0,0x1b,0x8a,0xb9,0x39,0x51,0xd1,0x6f,0xca,0x05,0xa9,0xc9,0x67,0xd1,0xc5,0x2c,0x97,0x4b,0xea,0x15,0x1e,0xa7,0x2e,0x4c,0xeb,0xaa,0x20,0xcc,0x78,0x3b,0xb6,0x1d,0x8d,0x69,0x38,0x5c,0xac,0x5b,0xc6,0xd7,0x2d,0xbd,0x16,0x2b,0xee,0xf1,0xfc,0xb5,0xdd,0x0e,0x0a,0x08,0xb4,0x8c,0xa0,0xb9,0xf6,0xd9,0xa9,0x88,0x0c,},\"\\x33\\x77\\x03\\x24\\x3a\\xb5\\xb4\\xe4\\xd3\\x48\\x1e\\xe8\\xdd\\x1f\\x44\\x94\\x50\\x71\\x74\\x41\\x26\\x58\\xa9\\x39\\x88\\xb5\\xc3\\x04\\x03\\xa7\\xb7\\xed\\x85\\x22\\xce\\xb4\\x6f\\xa1\\xee\\x02\\x75\\x3a\\x87\\x4e\\xf0\\x67\\x5d\\x39\\x7c\\x57\\x5d\\xa0\\xb0\\x8c\\xaa\\x8c\\xee\\x33\\x93\\x78\\x4d\\x0f\\x0d\\xb8\\x45\\x98\\x37\\xaf\\x90\\xb9\\x05\\x6d\\xf4\\xe3\\x8e\\x41\\x7f\\x3a\\xd2\\xeb\\x1a\\x10\\x0e\\xf2\\x07\\xce\\x2c\\xa6\\xc6\\x10\\x01\\x80\\x21\\x66\\x1e\\x30\\x70\\x99\\xf2\\xb7\\xc4\\xae\\x87\\x59\\x91\\x14\\x0b\\xdd\\x3f\\x0f\\x99\\xad\\x2c\\x5d\\x55\\xaa\\xcb\\x84\\xcc\\x1c\\xdc\\xd5\\x79\\xe0\\x80\\x72\\xb6\\x95\\x1f\\xd4\\x5e\\xd2\\x89\\xac\\x9f\\xf7\\xf0\\x98\\x6a\\xc8\\x8a\\x4f\\xbb\\x9d\\xc9\\x20\\x3d\\x9b\\xaf\\x18\\x0c\\x90\\xed\\xf9\\x37\\x25\\x8c\\x9d\\x0a\\x6d\\x48\\xe2\\x20\\xf7\\x2d\\x25\\x0c\\x7f\\x2c\\x77\\x7e\\xaa\\x7f\\xb9\\xfa\\x11\\xd5\\x0a\\x57\\x98\\x77\\x2f\\x9f\\xd9\\x76\\xb0\\x05\\x99\\xf1\\xf0\\x27\\x6f\\x3a\\x2e\\x4d\\x98\\x8a\\xe9\\x21\\x25\\x46\\x7a\\x8d\\xed\\xb7\\xa1\\x6f\\x9e\\x3a\\x56\\xe8\\xd0\\x06\\x62\\xb3\\xeb\\x67\\xa3\\x5b\\x9b\\x60\\xe7\\x3b\\xd9\\x35\\x07\\x7e\\xe2\\x38\\xdf\\x8f\\x6e\\x83\\x3b\\x9a\\x55\\x23\\x38\\x68\\x26\\xc1\\xf2\\x91\\x7b\\x1c\\x3e\\xc9\\x8e\\x0a\\x5f\\xde\\x89\\xc4\\x8b\\x1d\\x44\\x6d\\xa5\\xd0\\xc8\\x85\\xfe\\xf0\\xe3\\x74\\xbf\\xf3\\x0a\\x99\\x7c\\x7b\\xaf\\xd5\\xe7\\x43\\xc8\\x5d\\x0c\\x6a\\xaa\\x6e\\xf1\\x0a\\x06\\x12\\x11\\xa2\\x32\\x7c\\x6d\\x84\\xeb\\x74\\x7a\\x56\\xe9\\xbf\\x60\\xfc\\xd5\\xb5\\x53\\xb7\\x98\\x83\\x4d\\x0c\\x5c\\xca\\xdb\\x9d\\x4b\\x54\\xe7\\x23\\x7d\\x12\\xc6\\x79\\xc1\\x93\\xa2\\x87\\xbb\\x2f\\x51\\x1c\\xd4\\xee\\x2a\\x2d\\x85\\x49\\xb4\\x4b\\x21\\xc1\\x1f\\xbe\\x57\\x23\\x38\\x1c\\x6c\\x5f\\x78\\x46\\x87\\xfd\\x90\\xce\\xbc\\x5b\\x49\\x5a\\xf9\\xe4\\x14\\xf2\\x96\\x1b\\x06\\xa1\\xc8\\x43\\x3b\\x9a\\xa3\\x29\\x2b\\xcf\\xf4\\x24\\x1c\\x22\\x71\\x67\\xf8\\xd1\\xde\\x05\\x4b\\xa3\\x3a\\xd8\\x1d\\xa3\\xeb\\x3e\\xc6\\xe4\\x0a\\x6e\\x26\\x85\\x4a\\xf3\\x49\\x54\\x01\\x71\\xb7\\x5d\\x75\\xfb\\x9a\\x8d\\x12\\x93\\x78\\x27\\xfd\\x59\\x4d\\x31\\x7b\\x7a\\x8d\\x9f\\x1c\\x2f\\xca\\xbd\\xa5\\x63\\x75\\x56\\x8c\\x3e\\x9e\\x51\\x4c\\x2e\\xff\\xfc\\x38\\x78\\x36\\x3d\\xcf\\xad\\x9f\\xd9\\x54\\x36\\xb0\\x22\\xe8\\x77\\x2a\\x88\\xcb\\x71\\xe8\\x03\\xbf\\x90\\x38\\x19\\x62\"},\n{{0xfe,0x71,0x72,0x27,0x83,0x64,0x19,0x4b,0xcf,0xef,0xb4,0x78,0x31,0x42,0xb7,0x9f,0x59,0xd5,0xfd,0x97,0x8b,0x1e,0x47,0xc3,0x14,0xd7,0x8d,0x4c,0xb3,0xf6,0x1c,0x8a,},{0x2e,0x82,0xcc,0xe4,0x79,0x10,0xc7,0xe2,0xa7,0x9b,0xc1,0xf4,0x19,0xdc,0x3c,0x3d,0xf5,0x4f,0x23,0x29,0x1f,0xc8,0x19,0x3e,0x82,0x58,0xcc,0xd2,0xfd,0x38,0xd5,0x48,},{0xf6,0xc2,0xa4,0x29,0x6b,0x9a,0x34,0x07,0xc6,0xd7,0xa5,0x67,0x9d,0xae,0x86,0x66,0xb5,0x03,0xd1,0xa1,0x7e,0xac,0xf7,0x1d,0xf4,0x93,0x79,0x1b,0x8f,0xf0,0xc0,0xaa,0x8e,0xed,0x36,0xb3,0x27,0xa2,0x9a,0xb7,0x82,0x8f,0x46,0xf2,0x2d,0xe8,0x68,0xb6,0x28,0xb1,0xcf,0xd5,0x01,0xe8,0x59,0x9f,0xa3,0x16,0x93,0xb1,0x5f,0x61,0x08,0x0f,},\"\\x23\\x50\\x94\\x51\\xa0\\x59\\x96\\x9f\\x2b\\x4b\\xdf\\xce\\xe5\\x38\\x89\\x57\\xe9\\x45\\x6d\\x1f\\xc0\\xcd\\x85\\x7e\\x4f\\x4d\\x3c\\x25\\xa4\\x15\\x5d\\x5e\\xe9\\x1c\\x20\\x53\\xd5\\x58\\x06\\x2e\\xea\\x68\\x27\\x95\\x0d\\xe8\\x63\\xbc\\x9c\\x3d\\xf9\\x67\\x2c\\xde\\x8b\\xa7\\x41\\x74\\x4e\\xbb\\xdd\\xb4\\x5e\\xc1\\xf4\\x28\\x45\\x70\\xfd\\x0a\\xac\\xd0\\x7e\\xa5\\x8c\\x58\\x1b\\xe2\\xaf\\xc9\\x5a\\xe4\\x44\\xe6\\x78\\xed\\xc2\\xa0\\x24\\x39\\xf3\\x87\\xce\\xc9\\x82\\xea\\x3a\\x44\\x81\\x4a\\x8a\\x30\\x2b\\xb3\\xbf\\xe8\\x22\\x8d\\x58\\xde\\x03\\x9d\\xeb\\xdf\\x7c\\x2a\\x7e\\xdd\\xb4\\xe7\\x1c\\xa4\\x74\\xf9\\x4f\\x7e\\x2b\\xd8\\x9d\\xc6\\x5b\\x16\\x10\\x73\\x3c\\x91\\xff\\xf8\\x9b\\xd4\\x99\\xf4\\x01\\x54\\xa6\\x19\\x8f\\xdf\\x5e\\xc7\\xad\\x37\\x22\\xd9\\x25\\xb2\\x92\\x19\\x6c\\x42\\x94\\x99\\x07\\x5b\\xe0\\xc5\\xb6\\xda\\x9c\\x09\\x0c\\x07\\x91\\xa7\\x01\\x9e\\xb5\\xe7\\x36\\x6b\\xe6\\xce\\x58\\xab\\x2f\\x04\\xfe\\xcd\\x91\\x27\\xc4\\x27\\x18\\x04\\x7b\\xf4\\x70\\x30\\x69\\x15\\x21\\x31\\x2c\\x08\\x77\\xaa\\x3f\\x36\\xcc\\x5f\\xbc\\x9c\\xaa\\xe0\\xfd\\xe3\\x94\\x5d\\x2a\\x86\\x8e\\xe2\\x50\\x2a\\x38\\x33\\x20\\x8e\\xb8\\x50\\xa1\\x63\\xcf\\xcb\\xf6\\xda\\x9e\\xe6\\xad\\x9f\\xe0\\x67\\xfe\\x24\\x19\\x86\\xfe\\x44\\x36\\xd6\\xae\\x4e\\xdc\\x61\\x56\\x19\\x38\\xe2\\xa3\\x3f\\x4a\\x33\\xdb\\x63\\xf6\\x9d\\x3f\\x1a\\x88\\x50\\xed\\x40\\x02\\x88\\x69\\x16\\x41\\x03\\x48\\x8f\\xb7\\x95\\xcd\\x82\\xca\\x06\\x7f\\xe1\\xb4\\x89\\x7c\\xaa\\x49\\xa7\\xca\\x9a\\x80\\xf3\\xa8\\x15\\x1f\\xd1\\x3b\\xbb\\x7f\\xf3\\x50\\xe8\\x57\\x9f\\x56\\x5d\\xc1\\xc4\\xa9\\xca\\x93\\x8d\\x27\\xb1\\x5b\\x3f\\x85\\x8e\\xf4\\x5d\\x3d\\xd7\\x8b\\x2c\\x35\\x86\\x35\\x35\\x63\\x15\\xf5\\x5a\\x97\\x52\\x8e\\xcf\\xec\\x5d\\x11\\xa5\\xb7\\x21\\x50\\x31\\x07\\xfa\\xa4\\x06\\xc1\\x70\\x34\\xe6\\x01\\x47\\x4b\\x3b\\x60\\xcf\\x48\\x69\\x2e\\x26\\x92\\x61\\x15\\x8f\\xc3\\x53\\xd4\\xdf\\x42\\x74\\x38\\x13\\x57\\x79\\x0b\\x77\\x56\\x08\\x7b\\x00\\xcc\\x79\\xe3\\xb9\\xd2\\x8a\\x3f\\x24\\x39\\xfe\\xbf\\x19\\x9e\\x64\\xa8\\xb3\\x7c\\x91\\xb5\\xa4\\x33\\x4e\\x33\\x54\\xe8\\xfa\\xf3\\xa3\\x61\\xe8\\x56\\xc5\\x4b\\xda\\xa4\\x3b\\xfd\\xcd\\x6e\\xe6\\xc9\\xf9\\x67\\x95\\x88\\xf6\\x06\\x99\\x50\\x83\\x23\\x48\\xaa\\xcb\\xa2\\xbf\\xee\\xba\\xca\\xa2\\x07\\x1d\\xdc\\x7d\\x77\\x89\\x8e\\xf0\\xf6\\x87\\x93\\xcd\\x25\"},\n{{0xa9,0x51,0xe4,0xe6,0xba,0x9f,0x1f,0x0b,0x35,0x48,0x31,0xc9,0x86,0x94,0x24,0x48,0xfa,0xed,0xe3,0x7e,0x11,0xb0,0xf2,0x47,0xda,0x27,0x06,0xdc,0xee,0xf7,0x3a,0xc7,},{0x30,0x36,0x20,0x14,0x97,0x4b,0xf7,0x5c,0x84,0x95,0xc2,0xe2,0x71,0xe7,0x13,0xd5,0x73,0x84,0x38,0x4d,0x0a,0x5d,0xa8,0x8e,0xde,0xea,0x79,0x27,0x9c,0x0c,0x58,0xec,},{0x02,0x78,0xc8,0x6a,0x15,0x20,0x8d,0x9b,0xe5,0xb1,0xe1,0x57,0x47,0x61,0x86,0x1b,0x8a,0xf7,0x2a,0xe0,0x8d,0x40,0xcd,0xcb,0xec,0x35,0x4e,0x65,0xa9,0xc3,0xd0,0xa0,0x6b,0x5f,0xcb,0xb2,0x97,0xd0,0x9b,0xef,0x39,0x74,0x62,0x39,0x59,0x86,0xc3,0x09,0x3e,0xeb,0x22,0x64,0x4c,0x00,0x3c,0x30,0x78,0x17,0x8c,0xdf,0x67,0x4e,0x99,0x0a,},\"\\x20\\x57\\x7d\\xca\\xc8\\x91\\x74\\x88\\x5e\\xed\\xb0\\x62\\x48\\x9c\\xd5\\x12\\xfa\\x72\\x86\\x3e\\xc5\\x43\\x8e\\x31\\xe9\\x58\\x78\\xb7\\x5c\\xe2\\x77\\x2a\\xee\\x62\\x90\\xa0\\xba\\x3c\\x8f\\x64\\x2c\\x1d\\x0e\\xf5\\x5d\\xa8\\xd5\\xbc\\x14\\x84\\xf8\\x3b\\xb9\\x87\\x6c\\x7a\\x8c\\x0b\\x6b\\x60\\x9b\\x94\\xd1\\x12\\xa0\\x6f\\xc8\\x3c\\xe8\\xd2\\xc1\\xe0\\x8e\\xd6\\xc7\\x35\\xe5\\x7b\\x24\\x4a\\xad\\x6e\\xcf\\x70\\x75\\x36\\x3d\\x56\\x5b\\xa4\\x78\\x65\\x69\\x5c\\x84\\x23\\x51\\x09\\x09\\xe0\\xa3\\xdb\\x4b\\x61\\xed\\x7a\\xa6\\x7a\\x74\\x71\\x33\\x1e\\x83\\xa0\\xc5\\x8b\\x82\\x20\\xa6\\x24\\x5f\\x65\\x66\\x15\\x49\\xc1\\xa1\\x2d\\x4c\\x0d\\x50\\xc3\\x26\\xfb\\x94\\x91\\x7c\\xbd\\x07\\xbe\\x51\\xe8\\x3f\\xe8\\xbb\\x3e\\x46\\xca\\x01\\xb0\\xa2\\x60\\xda\\xaf\\x1d\\x6a\\xbe\\x37\\x03\\xd6\\xa9\\x25\\x11\\x3b\\xb4\\xd5\\x7e\\xa1\\xa4\\x8b\\x4c\\x7d\\xbd\\xaa\\x03\\xee\\xa8\\x14\\xa4\\xb5\\xf0\\x2e\\x1d\\xfb\\x54\\x5c\\xc6\\x23\\xfe\\x17\\xa3\\xbb\\x18\\xe4\\x37\\x3f\\x5f\\x7e\\xc2\\xfb\\x52\\x17\\xd2\\x3e\\x4f\\xed\\x54\\xa7\\x72\\xe1\\x13\\x23\\xe7\\x30\\xaa\\xd7\\xef\\xca\\x8c\\x46\\x44\\x00\\xe7\\x67\\x90\\x55\\xfc\\xc1\\x25\\xa8\\x76\\xef\\x7b\\x8b\\x9d\\xe1\\x86\\xe2\\x29\\xa7\\xab\\xf1\\x91\\xd0\\xc5\\x6d\\x91\\x81\\x5f\\x67\\x87\\x2e\\x95\\x7b\\xfb\\xc7\\x63\\x4a\\xac\\x40\\x35\\x76\\xa5\\x8f\\x42\\x7b\\xdb\\xb3\\x0e\\x8c\\x4b\\x6f\\xc6\\xc4\\x47\\x74\\x10\\x24\\xeb\\xb5\\x03\\xa5\\xa9\\x02\\x51\\x24\\xa4\\x88\\x7f\\x82\\x5a\\x43\\xee\\x94\\x0f\\x21\\x0a\\x1b\\xd5\\xae\\x4f\\x67\\x32\\xd6\\x0f\\x95\\xf2\\xb8\\x32\\x01\\xc4\\xc6\\xdf\\xe2\\x79\\x41\\x2d\\x75\\x02\\xa5\\x21\\x1f\\x8f\\x48\\xf8\\x00\\xdb\\x30\\xfc\\x37\\x76\\xc4\\xed\\x3a\\x38\\xbb\\x46\\x34\\x82\\x2c\\x98\\xa6\\xd6\\xdd\\x32\\x33\\xbe\\x60\\xe4\\x2c\\xca\\x45\\xa3\\x16\\x3c\\xc8\\x4e\\x9e\\x8d\\xa6\\x47\\xc0\\x71\\x1b\\xc4\\xc6\\xcc\\xd6\\x5a\\xa1\\xe9\\x72\\xc0\\x74\\x04\\xd1\\x03\\xe7\\x4b\\xcc\\x31\\xa7\\xe2\\xc3\\xee\\xa5\\xac\\x92\\x57\\xab\\x42\\x89\\x47\\xab\\x3d\\xd3\\xfb\\x15\\x3d\\x90\\x69\\x4a\\x40\\x73\\x37\\x3c\\x4d\\xd9\\xce\\xb1\\x31\\x15\\x4f\\xe8\\x77\\x47\\x3f\\xd9\\x96\\xf4\\x24\\xf3\\x3e\\x31\\x6e\\x4e\\xb0\\x2b\\x8c\\x75\\x13\\xbe\\x69\\x98\\xe5\\x16\\xcb\\xba\\x54\\xd9\\x4c\\xd0\\xa4\\x35\\xe0\\xff\\xcc\\x2c\\x0a\\x8e\\xf7\\x2b\\x63\\x0e\\xc2\\x47\\x81\\x06\\x6a\\xa5\\xef\\xb9\"},\n{{0x38,0xa9,0xb2,0xd4,0x9b,0xa8,0xb8,0x2f,0x30,0x1a,0x57,0x72,0xce,0xa0,0xef,0xc2,0x21,0x84,0x55,0xc8,0xb2,0x18,0xb2,0x2c,0xba,0xa2,0xaa,0xd2,0xd7,0xad,0x3b,0x35,},{0x9d,0xf5,0xea,0x1f,0x78,0xf8,0x10,0xa5,0x21,0x77,0x46,0x02,0xbb,0xba,0x49,0x42,0xf0,0x45,0x92,0x38,0x96,0x6c,0x8b,0xcd,0x21,0x90,0x0a,0xfb,0xf3,0xd8,0x42,0x93,},{0xe1,0x9e,0x62,0xac,0x53,0x9a,0x9c,0xa2,0x51,0xd1,0x2d,0x4c,0x71,0x05,0x5b,0x0a,0x3f,0x58,0x1d,0x19,0xf2,0x68,0x2e,0x67,0x24,0x04,0xc7,0x8a,0xc1,0xf1,0x2b,0xbe,0xfc,0x91,0x51,0x92,0x76,0xa5,0xcb,0xe1,0x6f,0x52,0x0c,0xf7,0xa7,0xf6,0x87,0xa2,0x40,0xf0,0x32,0x91,0x57,0xc5,0x9f,0x50,0x02,0x6a,0x58,0xdc,0xdc,0x50,0xfc,0x08,},\"\\x17\\x78\\x16\\x7c\\x49\\xb3\\xa4\\x4d\\x4a\\x5b\\xa8\\x38\\xb7\\x38\\x85\\x53\\xb1\\xe1\\x3d\\x36\\xea\\x4f\\x86\\xd3\\x02\\x42\\xe1\\xa8\\x22\\xa3\\xbb\\xaf\\xf5\\xce\\xa6\\x3e\\x2a\\xe2\\xa4\\x63\\x5b\\xe2\\x36\\xfe\\xf2\\xb8\\x13\\x5d\\x14\\xfb\\x62\\x1c\\x0b\\xb7\\x73\\xc9\\xc1\\x77\\x53\\xf8\\x09\\x26\\xeb\\x55\\xd0\\xf1\\x15\\xbd\\x09\\xa8\\x85\\xd8\\x44\\xb8\\x18\\xc9\\xf0\\x44\\x89\\xa3\\x31\\xbb\\x5e\\x03\\x2b\\x8e\\x58\\xcd\\xa3\\x69\\x49\\xc5\\xa8\\xd0\\x8b\\x55\\xbb\\x8d\\xe9\\x65\\xe1\\xf9\\x0d\\x3b\\x9c\\xfe\\xec\\xfc\\x6a\\xd9\\xa4\\xee\\x5c\\xb4\\x04\\x7e\\x94\\x50\\xac\\xdc\\x64\\x64\\x01\\x66\\xa8\\xc0\\x69\\xea\\x84\\x9a\\xeb\\xdd\\xac\\x1a\\xe4\\xaf\\xec\\x91\\xdd\\xd1\\x7f\\xa5\\x55\\x3f\\xa8\\x7c\\x56\\xf7\\xe5\\x1e\\xc1\\xcd\\x6b\\x5c\\xc2\\x33\\x51\\xd0\\x57\\xa4\\xce\\x4a\\x89\\x23\\xc8\\xae\\x6a\\xc7\\xa8\\xaf\\xdc\\xc0\\x88\\x1c\\x0e\\x74\\xeb\\xb0\\x24\\xef\\x72\\x96\\x16\\x2c\\xb9\\x3c\\x68\\xe5\\x0b\\xbb\\x07\\x4e\\x65\\x1a\\xc8\\x7d\\xac\\x9e\\xa5\\x9d\\x4c\\x3f\\xbf\\x0f\\xe3\\x79\\xf3\\xe9\\x7a\\x24\\x56\\x6e\\xca\\xe5\\x43\\x03\\xbc\\xfb\\x6f\\x0c\\xc9\\xf1\\x5f\\x66\\x39\\x43\\x0e\\x66\\xb1\\x9a\\x42\\x78\\x49\\xfd\\xff\\xf8\\x33\\xdf\\x02\\x68\\x9e\\x9d\\xe4\\x40\\x06\\xc9\\x03\\xc5\\x59\\x18\\x34\\x59\\xb9\\xf4\\xa9\\x7f\\x54\\xa0\\xf2\\xa2\\x8d\\xf7\\xb0\\xe9\\xde\\xed\\xa8\\x23\\x9d\\x7b\\x51\\x69\\x77\\xf5\\xe7\\xd6\\x97\\x1b\\x45\\x02\\xe9\\x88\\x5f\\x75\\x0a\\xf8\\xd1\\xa6\\x66\\x9e\\x25\\xe7\\x7d\\x5f\\x32\\x7c\\x77\\xc8\\x7a\\x86\\xe0\\xa1\\x87\\x2b\\xc9\\x6a\\x76\\x06\\x0f\\x5f\\x8a\\x0c\\x40\\xcc\\x97\\x3b\\xfc\\x7f\\xe6\\xed\\x9b\\xca\\x78\\xf8\\x84\\xe6\\xa2\\x82\\x8b\\x94\\xd4\\x89\\xd3\\x2a\\x0f\\xd3\\x37\\xe6\\x9d\\xb8\\x3f\\xb8\\x78\\x9a\\xfd\\x4e\\x8e\\xf5\\x4c\\x22\\xa7\\x8c\\x25\\x87\\x46\\x8b\\x9a\\xe0\\x71\\xba\\xe3\\xb2\\x02\\xd3\\x18\\x3a\\xd5\\xf0\\xf8\\xe8\\x42\\xe5\\xa8\\xde\\x85\\xbf\\xff\\x49\\xe0\\x3c\\x83\\x81\\xbc\\xa7\\xfd\\x42\\x78\\xdd\\xcc\\xaf\\x01\\x34\\xfb\\x55\\x93\\xa3\\x95\\xa7\\x7a\\x5c\\xbd\\x43\\x45\\x93\\xbc\\x4a\\xd0\\xff\\x4b\\x84\\x00\\xec\\x67\\x4c\\x4e\\xca\\xf1\\xd5\\x77\\x54\\xbe\\x0c\\xb2\\xfa\\x9a\\x64\\x41\\xa9\\xab\\xad\\x7b\\x42\\x19\\x7a\\xd8\\x2e\\x50\\x82\\x7e\\x4a\\x42\\x45\\x57\\x3a\\x8f\\x0e\\xf8\\x7f\\x58\\x22\\x8a\\x28\\x67\\xf4\\xb3\\xb8\\x34\\xb6\\x63\\x50\\x37\\x94\\x0a\"},\n{{0x9a,0x17,0x17,0x87,0x36,0x89,0xa0,0x3c,0x11,0x2d,0xd6,0xb4,0xd7,0x6a,0xe7,0x3b,0x89,0xb4,0x16,0xa5,0x98,0xce,0xec,0x20,0x9e,0x27,0x96,0x1e,0x7b,0xb1,0xee,0x8a,},{0xee,0xca,0xd1,0xe0,0xe4,0xb8,0x63,0x29,0x18,0x81,0xa8,0xc2,0x41,0xdb,0x9c,0xcf,0xff,0xe4,0xe5,0x5d,0x8b,0x5a,0x42,0xf3,0x07,0xb4,0x43,0x6a,0xcd,0x06,0x49,0xa6,},{0x1a,0xf8,0xbe,0x09,0x55,0x38,0x96,0x58,0x00,0xd8,0xef,0xf6,0xd7,0x23,0xd0,0x28,0xd6,0x5d,0x0e,0x9c,0x6e,0xb5,0xe9,0xd1,0x25,0xbb,0x3b,0x17,0x83,0xf1,0x1e,0xf7,0x07,0x9a,0x49,0xa8,0x07,0xe2,0x7e,0xf1,0x26,0x0b,0xe2,0x6a,0x3b,0x23,0x1d,0x03,0xb2,0xae,0x15,0x1e,0x49,0xf6,0xf1,0x89,0xf1,0x5b,0x1c,0x83,0xea,0xb0,0x1c,0x02,},\"\\xe2\\x65\\x80\\x47\\x09\\x01\\xa0\\x7a\\xb0\\x93\\x1a\\xa2\\x38\\x29\\x80\\x2c\\xe0\\x4d\\xa5\\x9f\\xdc\\x2f\\x77\\x3b\\xc5\\x67\\xf1\\xe6\\x5b\\x4f\\x2e\\x2d\\x4a\\x1a\\x6a\\xec\\x1f\\x54\\x15\\x8a\\xdf\\xce\\x9b\\x09\\x97\\x90\\xb5\\x03\\xa1\\x3d\\x22\\x09\\x7a\\xe2\\x3e\\xbc\\xcf\\x92\\x3f\\x3b\\xb1\\x98\\x6d\\x6e\\x49\\x11\\x1a\\x8c\\xf0\\xd4\\xeb\\x82\\x36\\xbf\\xe0\\xd7\\xc9\\xe9\\x3a\\x5e\\xfc\\x7f\\xeb\\x8e\\x6a\\x9c\\xd1\\xb8\\xd9\\x21\\xef\\xa2\\x1e\\x44\\x9f\\xf4\\x9e\\x06\\xc1\\xcc\\xfe\\xa3\\x1f\\x93\\xe0\\x33\\xc3\\xc2\\xa5\\x4d\\xdb\\x0f\\x65\\x3a\\x09\\xfb\\xd1\\x8a\\x70\\xb5\\x63\\x15\\xf1\\x93\\xe7\\xbe\\x56\\xe5\\x16\\x8f\\x59\\x56\\x38\\x21\\xd4\\xbc\\x3b\\xbb\\x0e\\xaa\\x20\\x48\\x28\\x6b\\xbe\\xee\\x5a\\xa3\\xf3\\xe7\\x53\\x6c\\xf2\\xb7\\x50\\xfd\\x32\\x26\\x02\\xbb\\x38\\x47\\xce\\xca\\x39\\xb7\\x54\\x74\\x32\\x2d\\x76\\xb1\\xde\\x80\\xfa\\x2e\\xad\\xba\\x15\\x2d\\x6f\\x8f\\x02\\x0d\\x4d\\x93\\x1c\\x53\\xf0\\xa2\\x80\\x12\\x24\\xd3\\x5d\\xeb\\x6e\\xc1\\x3b\\x01\\x48\\x73\\xe6\\x89\\x90\\x36\\x07\\xde\\x96\\xd9\\xb7\\xa7\\x43\\xa8\\x87\\xd2\\xf4\\x8d\\xaf\\x2e\\xd2\\xee\\xfb\\x20\\x2a\\xbf\\x60\\x82\\x79\\x69\\x81\\x12\\x3b\\x96\\x6e\\x93\\x6d\\xcf\\x34\\x83\\xe2\\xd2\\x4d\\x69\\x4e\\xcb\\x86\\x5f\\xbe\\xb6\\x96\\x9f\\x34\\x70\\x27\\xfb\\x8b\\x17\\x5d\\x24\\xa4\\xc0\\x45\\xc0\\xbb\\x4a\\xb5\\xe0\\x2d\\xdc\\xbe\\x77\\xd4\\x75\\x6c\\x46\\xd1\\x37\\xb0\\x94\\x47\\x3a\\x02\\x30\\x7a\\x10\\x83\\x40\\xac\\xad\\x9d\\x03\\xba\\xe8\\x40\\x3a\\xf1\\x99\\xcb\\x75\\xca\\xe3\\x16\\x2f\\x38\\x15\\x81\\x3c\\xc6\\x8b\\xf2\\xa5\\xe4\\x99\\xe5\\x94\\x92\\x11\\x49\\xf3\\xbb\\xd2\\x14\\xda\\x51\\x37\\xe7\\x56\\x52\\x15\\x59\\xdc\\x80\\xd9\\xa4\\xb7\\x4a\\x0f\\x49\\x43\\x02\\x2c\\x7c\\xd5\\xfc\\xa4\\x23\\x15\\xe0\\xbc\\xee\\xae\\x90\\x69\\x61\\x5c\\xe6\\x7a\\x04\\x38\\x24\\x12\\x31\\x3a\\x31\\xd6\\x7b\\x34\\x6c\\x32\\x9a\\xd8\\x2e\\x74\\x2c\\x0a\\x6c\\xe0\\xa6\\xa0\\x24\\x54\\xc1\\x13\\xe5\\x20\\x22\\xf3\\xcc\\x03\\xfd\\xa6\\x91\\xeb\\xdf\\xe1\\x4c\\x53\\xc8\\xce\\x5c\\xa9\\xb9\\x32\\xca\\x1a\\x38\\x6e\\x3e\\xb4\\xe9\\x0a\\x4d\\xc6\\xe8\\xad\\x85\\x33\\xb5\\xaf\\x1a\\xae\\xf5\\x00\\x31\\x28\\x65\\x5c\\xa6\\x4f\\x67\\xfc\\xd9\\x7c\\x6a\\xc8\\x03\\x00\\x24\\x04\\x90\\x0b\\xc0\\xfa\\xe9\\x84\\x63\\xbc\\xc3\\x14\\x09\\xf9\\x98\\x17\\x48\\x78\\x9a\\xde\\x2d\\x07\\x78\\x3b\\xc3\\x2b\"},\n{{0x43,0xbd,0x92,0x4d,0xb8,0x15,0x60,0x08,0xc6,0xb3,0x99,0x4a,0x81,0x30,0xd4,0x27,0xd5,0x14,0xdb,0x8a,0x61,0x3b,0x84,0xdf,0xb0,0xb8,0xe0,0xde,0x6a,0xc3,0x06,0x76,},{0x1b,0x34,0x61,0xc2,0x69,0xd5,0xb0,0x06,0x2d,0x5d,0xf6,0xfa,0x65,0x4a,0x25,0x86,0xf6,0x47,0xa0,0x68,0x42,0x18,0xa0,0x6e,0x5e,0x2f,0x7b,0xad,0xfb,0x39,0x41,0x31,},{0xd2,0xa0,0x5d,0x88,0xd9,0xd5,0x43,0xd9,0x4d,0x57,0xec,0x88,0xae,0x55,0x68,0x17,0x50,0xf2,0x0b,0x9b,0xe9,0xc1,0xe9,0x18,0xcd,0xaf,0x45,0x77,0x67,0xf2,0x94,0x8d,0xd6,0x29,0xe9,0x4f,0x06,0x8e,0xdc,0xf3,0xd9,0x92,0x7e,0x33,0x02,0x34,0xba,0xdc,0x3a,0x02,0xfa,0x5a,0xd3,0xd9,0xd8,0x5e,0x94,0x8c,0xb0,0xb0,0xcb,0x3c,0xd7,0x0a,},\"\\x61\\x84\\xe6\\x48\\x0c\\x42\\xe9\\x6c\\xc8\\x77\\x26\\x9b\\x16\\x37\\x15\\x45\\xff\\x95\\x23\\xc4\\x5e\\xa8\\x8e\\x76\\xa1\\x34\\x8c\\x68\\xae\\x7f\\x31\\x8b\\x08\\x8f\\xe4\\x61\\x09\\x28\\x23\\x91\\x85\\xb6\\xb5\\x5b\\xfa\\x0f\\x43\\x64\\x4c\\x4a\\x4c\\x97\\xc5\\x6e\\xd7\\x7d\\x08\\xb1\\xf4\\xaa\\xd2\\xf4\\xaa\\x06\\x99\\x94\\xab\\xec\\xa9\\x6b\\x7b\\xf8\\x1b\\x80\\x64\\xea\\x43\\x50\\xd8\\xa8\\xb0\\x22\\x97\\xa5\\x13\\x08\\xb6\\x1c\\x57\\xc8\\xf1\\x87\\x3c\\x6f\\x97\\x00\\x7a\\xca\\x31\\x80\\x42\\x9e\\x73\\x0a\\x66\\x43\\xf2\\x87\\x33\\x54\\x7b\\xcf\\x7b\\x9a\\xdf\\xe3\\x27\\xe8\\x57\\x36\\xbd\\x04\\xaf\\x7f\\x1d\\x9f\\x4f\\xb8\\x4a\\x7f\\x3a\\xff\\xdf\\x4e\\x22\\xb5\\x74\\xec\\xb4\\xbc\\x88\\x36\\xb1\\x0b\\x84\\x53\\xae\\xaa\\x5c\\x1b\\xf1\\x32\\x24\\x8b\\x82\\x6c\\xc5\\x23\\x0f\\x75\\xe0\\x75\\xfa\\xc9\\xf0\\x37\\x56\\x11\\x36\\xe0\\x06\\x43\\xd0\\x82\\x53\\xe7\\xad\\x65\\x2f\\x70\\x2c\\x0d\\x15\\xb6\\xd7\\xd4\\x8a\\xa6\\xf8\\xe9\\xb5\\xf5\\xcc\\x14\\x6e\\x3f\\x15\\x6f\\xb2\\x52\\x27\\x51\\xc3\\x71\\x00\\x41\\xbd\\x92\\x2f\\x37\\xa5\\x03\\x77\\xe0\\x28\\xb0\\xc4\\xe4\\xbc\\x34\\x65\\xd7\\xc8\\x4a\\xf6\\xa5\\xfb\\x42\\x7a\\xcb\\x3b\\x41\\x37\\x8b\\x10\\x2b\\xda\\x46\\xd8\\xf6\\xf2\\x03\\xa5\\xff\\xcf\\x39\\x5d\\x43\\x5e\\x93\\x45\\x8a\\x0b\\x0a\\x4c\\x2e\\x77\\x82\\xfa\\xfe\\x11\\x9f\\x76\\x9f\\x67\\x05\\x8c\\x66\\x77\\xf6\\xd1\\x0d\\x9c\\xf5\\xcb\\x87\\x48\\xe1\\x80\\x57\\x98\\xed\\x23\\x3f\\x6f\\x93\\x0e\\xee\\x0e\\x50\\x75\\xbc\\x58\\xb9\\x7a\\xf9\\x17\\x7f\\xda\\x75\\xd5\\x37\\x08\\xbe\\xb0\\x4d\\xc4\\xf1\\x9a\\x43\\xe7\\x68\\x07\\x46\\x09\\xf1\\x40\\x65\\xf4\\x8f\\xda\\xd5\\x07\\x7c\\xe1\\x09\\xba\\xcc\\x35\\x71\\x74\\xa6\\xb7\\x95\\x6f\\x6e\\x7f\\x32\\xe3\\x84\\x15\\xbe\\x52\\x63\\x70\\xfa\\x58\\xc3\\xc0\\xb3\\x1f\\x51\\xe6\\xcd\\x4b\\x2c\\xf2\\x7f\\x8b\\xcb\\xc2\\x12\\x59\\xd9\\xe5\\xc3\\xb5\\xc2\\x94\\x6a\\x9f\\xc1\\xb0\\x0d\\x9d\\x15\\xc3\\xb7\\xd8\\x0b\\xfd\\x9d\\x05\\xdb\\x91\\xd2\\x49\\xd3\\xe4\\x2d\\x89\\x56\\x68\\x20\\x44\\x54\\x8d\\x83\\xbd\\xa8\\xd5\\xcc\\x92\\x12\\x44\\x2f\\x30\\xb4\\x5c\\xf4\\xae\\xad\\x80\\xcc\\xe9\\xb3\\x51\\x2c\\x39\\xc5\\xc7\\x37\\xd3\\xf8\\xd7\\x47\\xaf\\xba\\xb2\\x65\\xaf\\x5e\\xee\\xf8\\xca\\x93\\x62\\xec\\x76\\xe9\\x43\\xb0\\xa0\\xd7\\xa3\\x9f\\x3d\\xb1\\x1e\\xca\\x14\\x45\\x8a\\x7b\\x59\\x2e\\x5e\\x4f\\xf2\\x27\\x5d\\xd4\\x8b\\x28\\x53\"},\n{{0x8f,0xb0,0x86,0x20,0x6d,0xd9,0x5a,0x26,0x21,0xf5,0x98,0x56,0x0c,0xcb,0x28,0x1f,0x82,0x73,0xc8,0xfc,0x72,0xe2,0x36,0x11,0x08,0x9b,0xaa,0xc8,0x9d,0x3c,0x3c,0x78,},{0x20,0x27,0x6e,0xf4,0x79,0xf4,0xd4,0x52,0x3a,0xb7,0x74,0x20,0xd4,0x24,0xe8,0x81,0x9c,0x33,0xc8,0x37,0x79,0xed,0x80,0xc7,0xf6,0x66,0xe8,0xf4,0x40,0x3f,0x94,0xd7,},{0xa9,0x30,0x5e,0x00,0x16,0x00,0xd5,0x97,0xd0,0x5e,0xf6,0x71,0x69,0x9b,0xf0,0x9f,0x0d,0xcc,0x0c,0x44,0x47,0x5d,0x3c,0xa3,0x1e,0x7f,0xf1,0xbf,0xfe,0xdc,0x0c,0x67,0xda,0xa1,0xf3,0xb7,0x6a,0x03,0x59,0x48,0xc5,0x9c,0xd8,0x7f,0x82,0x45,0x3a,0x40,0x95,0x0a,0x1c,0x97,0x03,0xc2,0xe7,0xd9,0x28,0x0e,0x73,0x03,0x96,0x6d,0xa3,0x01,},\"\\xf0\\x29\\x03\\xed\\x42\\x66\\xe8\\x49\\xa4\\x48\\x52\\x05\\x95\\x4f\\xff\\xa8\\xa1\\x08\\xc3\\x23\\xb7\\xe3\\xf8\\x43\\x31\\x04\\x35\\x14\\xe4\\x85\\x56\\xab\\x01\\x94\\x97\\x23\\x3a\\x5a\\x12\\x7b\\xff\\x3c\\xd7\\xc9\\x70\\x86\\xbe\\xce\\xf5\\x38\\xb3\\xf3\\x39\\xd7\\xd0\\x6e\\x53\\x2d\\xc7\\x32\\x5e\\x59\\x7a\\xe3\\x57\\xf8\\x16\\xde\\xa4\\x2a\\x6a\\x22\\xc7\\x9d\\x22\\x07\\x4a\\x2e\\x1a\\xd8\\x02\\x3c\\x42\\x4b\\x7e\\x09\\x6e\\x5a\\xd8\\x89\\x7b\\x05\\xef\\x7d\\x00\\xd3\\x0a\\x04\\xaa\\xf2\\x98\\x1e\\xdd\\xff\\x2b\\x34\\x7f\\x1e\\x27\\xe2\\x0a\\xab\\xbe\\x7e\\x7a\\x95\\x44\\x97\\x8e\\x09\\x2b\\x00\\xcc\\xe4\\x20\\xab\\xa0\\x61\\x87\\x37\\x4f\\xfb\\xb3\\x7b\\x4c\\x22\\xd7\\x5f\\x04\\xe5\\x75\\x90\\xf6\\x10\\xa2\\x73\\x47\\x28\\x6c\\x29\\x83\\x12\\xa6\\xc9\\xb1\\xbd\\xf2\\x4f\\xbd\\xa8\\x51\\x3c\\x4f\\x83\\x56\\xcc\\xf7\\x57\\x06\\x8f\\xfc\\x11\\xbc\\x65\\x11\\x37\\x83\\xa5\\xdd\\xe7\\x72\\x2f\\xaf\\x4c\\xeb\\x19\\xfb\\xb6\\x2f\\x40\\x70\\x2e\\x2c\\x6e\\x6a\\x8b\\xb4\\x9e\\xf4\\x04\\x46\\x45\\x0c\\x4c\\x59\\xa2\\x99\\x09\\x44\\xda\\x47\\x44\\xf6\\xee\\x77\\x0b\\x93\\x0c\\x24\\x66\\x69\\x81\\x3c\\xe5\\xa9\\xf5\\xa4\\x7d\\xd8\\x03\\x88\\x98\\x1b\\xfc\\xc3\\xa5\\x6b\\x5b\\xe2\\xc4\\xc7\\xe6\\x59\\xa2\\xe9\\x18\\x2d\\xec\\x0a\\xaa\\xfe\\x90\\x31\\xaa\\x39\\x54\\xd4\\xfe\\x7c\\x43\\x11\\x96\\xa5\\x61\\xa5\\xb7\\x8e\\xab\\xa6\\x4f\\x3d\\xb1\\xb5\\x86\\xc5\\x3b\\x16\\xf6\\x79\\xa8\\x49\\x21\\xa6\\x42\\xc2\\x60\\xe4\\x65\\x3a\\x61\\xde\\x10\\x8e\\xbd\\xe6\\xf7\\x05\\x3a\\xfa\\x2c\\xb3\\xf3\\x66\\x8e\\xde\\x12\\x10\\x20\\xdd\\x1b\\xac\\xe8\\x41\\x8a\\xeb\\xac\\x3a\\x5b\\xd5\\x14\\x2f\\x10\\x5a\\xc2\\x6f\\xe4\\x9e\\x5f\\xb1\\x40\\xc1\\x9b\\x22\\xd5\\x4a\\x62\\x91\\xdf\\xc9\\x54\\x67\\x02\\x47\\x88\\x16\\x46\\x87\\x4d\\xef\\xad\\x81\\x49\\x95\\x51\\x9f\\x62\\x60\\xe9\\x77\\x4a\\x8d\\x18\\x5c\\x37\\x88\\x1b\\x4f\\x25\\x43\\xc4\\xb6\\x3f\\xbf\\x19\\x85\\x01\\x6a\\xb4\\x1c\\x4d\\x72\\x8c\\xbc\\x90\\xb3\\xab\\x87\\x62\\x67\\xbe\\xd4\\x1d\\x0c\\x09\\x02\\xf6\\xb5\\x0e\\x8f\\xa9\\x06\\xfc\\x47\\x88\\xf7\\xb8\\x20\\x46\\x73\\x06\\xe0\\xfe\\x9e\\x03\\x6a\\x0a\\x00\\xf8\\x04\\xf9\\x1c\\x3c\\xa7\\x18\\xb9\\x5f\\xf6\\xd9\\xe2\\x20\\x4b\\xc3\\x16\\x1b\\xf7\\x0f\\xcc\\x17\\xb2\\x96\\x4b\\x56\\xbc\\x61\\x2e\\x29\\x40\\x2d\\x96\\xf5\\x09\\x86\\x51\\x4b\\xc7\\xd8\\x31\\xd5\\x8e\\x42\\x79\\x37\\x86\\xd5\\x80\\x6f\"},\n{{0xaf,0xa1,0xb8,0x46,0xc2,0x10,0xb5,0x23,0x00,0xe9,0x76,0x96,0xf8,0x1b,0x8e,0xa7,0x74,0xd1,0xdf,0x12,0xe6,0x12,0x52,0x7c,0x55,0x74,0x7f,0x29,0xc1,0x93,0x73,0x96,},{0xb6,0x09,0x56,0x6b,0xbd,0x19,0x47,0xbd,0x7a,0xfa,0xce,0xb1,0x43,0x89,0xe8,0x36,0x22,0x71,0x69,0x21,0x5f,0xab,0x66,0x85,0x1a,0xa5,0xd7,0x0d,0x6e,0x2e,0x3b,0x89,},{0x98,0xb0,0xc6,0x31,0x3c,0xec,0xaf,0x7c,0x82,0xcb,0xde,0xb3,0xd0,0x28,0x06,0x41,0xc6,0x1a,0x06,0x0f,0x65,0xe5,0x63,0xaa,0x93,0xce,0x18,0x30,0x0a,0x9b,0x58,0x27,0x2d,0xc8,0x68,0x0b,0x48,0x5e,0x8c,0xd1,0x1c,0xf8,0x0f,0xdc,0xa8,0x68,0xfa,0xb3,0x65,0x37,0x83,0x84,0xa1,0x42,0x72,0x7f,0x2f,0x84,0x4f,0x87,0xcf,0xdf,0x19,0x05,},\"\\x4c\\xac\\x1b\\x1f\\x4b\\xd4\\x82\\x84\\xdc\\xc9\\xaf\\xc8\\xb5\\x95\\x5b\\x64\\xb4\\x36\\xdb\\x70\\x4b\\x03\\x35\\xd9\\x75\\x5c\\xc1\\xf9\\x74\\x77\\xf8\\xd3\\x23\\xcb\\x64\\x10\\xef\\x14\\x6a\\xb8\\xa9\\xef\\xb9\\x52\\x6d\\x8b\\x62\\xe3\\xbb\\xad\\x1f\\x72\\x95\\xf4\\x7b\\xa9\\xf0\\xde\\x95\\x8f\\x8e\\xc9\\xb7\\x7a\\xb4\\x22\\x32\\x43\\x7e\\xd9\\x74\\x85\\x64\\x44\\xcd\\x22\\xe2\\x0b\\xe3\\x5e\\x91\\x81\\x3b\\xff\\x4b\\x01\\x6f\\x81\\x0d\\x0f\\x61\\xd8\\x9f\\x6b\\x61\\x4d\\xb3\\x3f\\x34\\xbd\\x09\\x98\\x5b\\x59\\x3f\\xe3\\xe0\\x6e\\x06\\x5b\\x7b\\xc6\\xcd\\x39\\xd5\\x5c\\x2c\\xfb\\xec\\x7b\\x6d\\x59\\xc0\\xb3\\x7d\\xd1\\xd0\\xd3\\x51\\x35\\xab\\x1d\\x1b\\x04\\xf2\\xf3\\x0c\\x2f\\x04\\xf4\\xba\\x2b\\x36\\x58\\x27\\x38\\x08\\x1c\\xf5\\x91\\x90\\xf5\\x28\\x36\\x3d\\xb9\\x44\\xed\\x61\\x29\\x31\\xd1\\xd5\\x14\\xc6\\x21\\x4f\\x9a\\xb9\\x2a\\xbb\\x18\\x33\\x92\\x61\\x83\\xac\\x52\\xfb\\xa2\\xa4\\x55\\x1e\\x20\\xe4\\xc0\\xac\\x95\\x9a\\x49\\xdd\\xb1\\x67\\xa3\\x81\\xe0\\x24\\x1d\\x40\\xc0\\x86\\xe9\\x0e\\x52\\xac\\xa0\\x17\\x25\\x89\\x75\\xdb\\xab\\x2b\\xa4\\x51\\xee\\x53\\x9a\\x71\\x8f\\x07\\x6a\\x58\\x70\\x9c\\x66\\x97\\x41\\x8d\\x9c\\x6f\\x13\\xe4\\xd3\\x91\\x36\\x8b\\xf0\\xe8\\xbd\\x8f\\x29\\x32\\xdd\\x95\\xce\\xaf\\x7a\\xac\\xa1\\x24\\x11\\x47\\xd3\\x41\\xa3\\xac\\xd0\\x8d\\xc3\\x29\\x05\\x48\\x35\\x72\\xb8\\x9a\\x80\\xcc\\x47\\x23\\x14\\x68\\xab\\x8d\\xe3\\x59\\xdd\\x52\\x5a\\x62\\x57\\xcf\\x19\\x6c\\x2e\\xcb\\x82\\xfa\\x8a\\x78\\xaa\\x3a\\x85\\x1c\\x7c\\x96\\xca\\x25\\xbf\\x7c\\xa3\\xdc\\xf3\\xca\\x21\\x45\\x3d\\x0d\\xfd\\x33\\x23\\xd5\\xa4\\x22\\xde\\xc8\\x43\\x16\\x10\\x2f\\x68\\x4c\\x35\\x9f\\x22\\x6b\\xb5\\x37\\x79\\xc0\\xb9\\x95\\x09\\x39\\x28\\x1e\\xf7\\x9a\\x58\\xc0\\x11\\x99\\x3e\\xac\\xe0\\x85\\x49\\x7a\\xfa\\x4d\\xaf\\x64\\xc9\\x68\\x7b\\x0a\\x11\\xaa\\x11\\x6c\\xfa\\x7b\\x03\\x93\\x62\\x41\\xa5\\x56\\x7b\\x64\\x6e\\x7e\\x42\\xe9\\xfb\\x59\\x24\\x05\\xb8\\xfa\\x3c\\x0a\\x82\\x1f\\xc3\\x12\\x1b\\x45\\xb1\\x75\\x3c\\xec\\x9a\\x83\\x94\\x7d\\x21\\x1a\\x45\\x49\\x9b\\xd6\\x37\\x90\\xb8\\x7f\\x01\\x47\\x2f\\xe5\\x66\\xd8\\x76\\x96\\xef\\xed\\xbb\\x74\\xed\\x00\\x04\\x8c\\x38\\x4b\\xa7\\xf0\\x27\\xb3\\xaa\\x42\\x98\\xdc\\x41\\x10\\x34\\x9f\\xed\\xf5\\x2a\\x96\\xcd\\x05\\xd0\\x8b\\xd6\\x35\\x77\\x1e\\xd4\\x51\\x07\\x38\\xd8\\xf0\\x7a\\x60\\x21\\x24\\x4d\\x19\\x03\\x57\\x9a\\x3e\\xa7\\x39\"},\n{{0xc8,0x59,0x13,0xa6,0x87,0x78,0x77,0x13,0x10,0x01,0x62,0x3c,0xcd,0xa9,0xcd,0xc1,0x2b,0x9d,0x40,0x43,0xb8,0xa8,0x37,0x93,0xc4,0x46,0x96,0x63,0x2c,0xd6,0x42,0x1c,},{0x9c,0xc6,0x7c,0x69,0x48,0xf7,0xbf,0x6e,0x55,0x6d,0x08,0x49,0xd3,0xb8,0xd2,0x03,0x45,0x7a,0x7b,0x61,0x54,0x9b,0x36,0x68,0x1d,0x75,0x4f,0x1d,0xc0,0x84,0x1e,0x96,},{0x01,0xfc,0xcf,0xdb,0x1f,0xb6,0x88,0x8b,0x03,0x10,0xa9,0x13,0x17,0x0f,0x7e,0x36,0x68,0x16,0xda,0xeb,0xe7,0x65,0x0d,0x72,0x51,0x3d,0x95,0x06,0xe6,0x6f,0x7d,0x62,0x20,0x8a,0x49,0xec,0xe0,0xaf,0x18,0x71,0x49,0x7f,0x45,0x41,0xef,0x60,0x5b,0xde,0x71,0x1c,0x9e,0x0a,0x12,0x05,0xef,0x48,0xf2,0x6c,0x03,0xdc,0x1a,0xd4,0xaf,0x03,},\"\\x91\\xb5\\x00\\x9e\\x83\\xd0\\xf6\\x10\\x33\\x99\\xc2\\xd3\\xfe\\xec\\x00\\x84\\x97\\x3a\\x30\\x5b\\xf4\\x17\\x6e\\xc7\\x82\\x53\\x75\\x60\\x47\\x2d\\xb1\\x87\\xa1\\x1b\\x4d\\xcb\\x4b\\x2f\\xfb\\x7f\\x06\\x44\\xfe\\xb3\\x94\\xb2\\x8e\\x5b\\xfe\\x97\\x24\\x7c\\x4a\\x4a\\x23\\x1c\\xf6\\xe9\\x16\\xbf\\x99\\x34\\x4c\\xcd\\xa8\\x8a\\x7f\\x5d\\x83\\x1d\\x6d\\xe3\\xd5\\x63\\xdd\\x10\\x2e\\xae\\xb1\\x08\\xc5\\xbd\\xce\\x44\\xe0\\x63\\x2d\\x17\\xe6\\xfa\\x55\\xb1\\x80\\x67\\xdf\\x2f\\xa8\\xd2\\x00\\xa9\\x86\\x9f\\x6a\\xff\\x92\\x0c\\x51\\xd4\\x6a\\x1c\\xed\\x2d\\x90\\x3b\\x1d\\x9b\\x6b\\x07\\x5f\\xac\\xbf\\x91\\xcd\\x05\\xeb\\x41\\xad\\x81\\x1a\\x8e\\xf4\\x0d\\x91\\x18\\x26\\x10\\x12\\xc7\\x2b\\x89\\x79\\xf1\\x51\\x53\\xdb\\xb8\\x56\\x12\\x93\\xda\\x9f\\x8b\\x77\\xc8\\xff\\x14\\xf7\\x53\\x87\\x53\\x6f\\x00\\x36\\xd1\\x71\\x3a\\x72\\xce\\x8c\\x35\\xb1\\x06\\x2f\\x2c\\x67\\x32\\xae\\xbf\\x32\\x93\\x67\\x99\\xb5\\x1c\\x2c\\xbc\\xd6\\x57\\x24\\x13\\xe7\\xdf\\xaa\\xb8\\x64\\x1a\\x02\\xc1\\x50\\x23\\x73\\x81\\xcf\\x7a\\x14\\xe2\\x2c\\x74\\xc6\\xc2\\x00\\x09\\xde\\x7d\\x3b\\x7e\\x69\\xcd\\x1b\\x45\\x84\\xac\\x2c\\x01\\xba\\xba\\xf9\\x73\\xc5\\x6b\\x38\\x14\\xbb\\x00\\x89\\x72\\x0e\\x41\\x96\\x81\\x06\\xcf\\x26\\x50\\x9d\\x4a\\xa5\\x46\\xfc\\xad\\x55\\x34\\xaf\\x30\\x3f\\xfc\\xa4\\x2b\\x16\\xae\\x6c\\x93\\xee\\x06\\xbc\\x3c\\xac\\xe1\\x2e\\x4e\\xc7\\x18\\x84\\x4b\\xd3\\x0d\\x22\\x24\\xcc\\x48\\x6d\\x10\\x6d\\x1c\\x45\\x6b\\xfa\\x16\\x5e\\xa0\\x12\\x0f\\xab\\x3d\\xf2\\xc5\\xab\\x3a\\x52\\x3b\\xbf\\xa7\\x89\\xde\\xed\\x44\\x03\\x2a\\xb0\\xbe\\x86\\xeb\\x7c\\xc0\\x9c\\xdb\\x7c\\x07\\xaa\\x94\\x8d\\xd5\\x27\\x7c\\x3d\\xf1\\xd9\\xd1\\x84\\x35\\x67\\xde\\xc8\\x4f\\x92\\x88\\xe0\\x85\\xb0\\x5a\\xe4\\xb8\\xaf\\x2c\\xea\\x5d\\x9a\\x18\\x4d\\x50\\xbe\\xf8\\x55\\x50\\xc8\\x36\\x61\\x3d\\x5d\\x3a\\xf5\\xf9\\xc2\\x92\\x8e\\x6a\\x89\\x66\\x0f\\xa6\\x27\\x19\\xeb\\xff\\x77\\x3e\\x46\\xb7\\x7e\\x34\\xbc\\x04\\x70\\xda\\x4d\\x2c\\xdb\\xc7\\x07\\x1d\\xa7\\x58\\xc4\\xd3\\x9f\\xe6\\x52\\x01\\xc8\\x8a\\xaa\\x8e\\x66\\x03\\xd0\\xbb\\xe7\\xc3\\xe9\\xb2\\xd9\\xe4\\x1b\\x63\\x46\\x82\\x09\\x2f\\x14\\x73\\x41\\xad\\x6d\\x66\\x7f\\x20\\xc6\\x4e\\x81\\xa6\\x8d\\x62\\x94\\x67\\xa5\\x4d\\xd8\\x6e\\x1c\\xe1\\x2c\\x56\\x0a\\x6f\\x9b\\x64\\x51\\x2d\\x6f\\x38\\x86\\xcb\\xb9\\xf3\\x7c\\x37\\xeb\\x39\\x85\\xc8\\xac\\x38\\xdd\\x66\\x82\\xf4\\x8f\\xe1\"},\n{{0xfa,0x1e,0x11,0xdc,0x83,0x64,0x20,0x8d,0x8e,0x1c,0xb6,0x6a,0x36,0x1b,0xe7,0xe8,0x4c,0x5e,0x36,0x81,0x66,0x58,0x7d,0x4f,0xdb,0x06,0xac,0xed,0x7f,0x62,0xe1,0x7c,},{0x4d,0x8e,0x6f,0x4b,0x34,0x15,0xdf,0x6c,0xed,0xab,0xfb,0x29,0x5c,0x19,0x84,0xfd,0x41,0x99,0x23,0xc6,0xac,0x41,0x76,0x4e,0x32,0xd2,0x2d,0xaf,0x37,0x2c,0x50,0xfc,},{0xe8,0x57,0xdb,0x08,0x7e,0x28,0xd6,0x75,0x0b,0xf5,0x4e,0x53,0x79,0x72,0x51,0xd8,0x43,0x99,0x89,0x57,0x6c,0x12,0xda,0x2d,0x9c,0x81,0x1a,0x14,0x87,0x7c,0x3b,0xd4,0x6c,0x4e,0xfa,0xb8,0x61,0xa1,0x0e,0xeb,0xe7,0xda,0x04,0xc0,0xb0,0xb4,0x45,0xc7,0xa3,0x90,0xa5,0x0c,0x13,0xde,0x36,0xf3,0xa3,0xc7,0xae,0x01,0x57,0x02,0x2c,0x0e,},\"\\x29\\x4e\\x63\\xba\\xcc\\xcb\\x80\\x1b\\xbf\\x04\\xc1\\xf1\\x9d\\x0a\\xee\\x16\\xf5\\x65\\x0a\\x6e\\x8e\\xea\\x6f\\xe4\\x11\\x10\\x66\\x3e\\xc0\\x15\\x32\\xbd\\x49\\x60\\xa5\\x27\\xf1\\x5e\\xca\\x4a\\xf2\\xf4\\xe6\\xb7\\xb0\\xfc\\x34\\x0c\\xf9\\x7a\\xa2\\x34\\xe9\\x2c\\xf7\\xd6\\x9d\\x50\\xe4\\x00\\x9c\\x24\\x96\\xe3\\xed\\x4d\\x9a\\xff\\x00\\x0f\\x9e\\x18\\x52\\x75\\xb8\\x17\\xd2\\x6a\\x0b\\xab\\x69\\xb7\\xf7\\xee\\x1e\\xa3\\x0d\\xae\\xc8\\xbc\\xee\\x38\\x7a\\xe4\\x6b\\x4b\\x29\\x9c\\x27\\xbd\\xc0\\x6e\\xea\\x63\\xf2\\x4d\\xbe\\xe9\\x55\\xa6\\xc0\\x96\\x90\\x37\\xee\\xf9\\x1c\\x34\\x32\\x1e\\x3c\\x5c\\x97\\x2f\\xde\\x99\\x31\\x83\\xb7\\xd2\\x3f\\x6e\\x01\\x9c\\x3e\\x0c\\xac\\x75\\x89\\xae\\x4a\\x15\\x21\\xaf\\x87\\xea\\x42\\xdf\\x8c\\x22\\xc2\\x27\\x0e\\xc2\\x3d\\x6d\\x14\\x0f\\x9c\\xf6\\xd4\\xd5\\x2f\\xac\\x1b\\x9d\\x6c\\x89\\x39\\xef\\x81\\x31\\xcb\\x62\\xa0\\x35\\xc5\\x26\\x15\\x38\\xbc\\xdf\\xd6\\xdb\\x41\\x9a\\x55\\xef\\x9f\\xe5\\xd7\\xa5\\xac\\x44\\x57\\x9d\\xe7\\x00\\x85\\x8d\\x74\\xa3\\x43\\x48\\x44\\xf2\\x83\\x42\\xc5\\x65\\x89\\x27\\x22\\xe2\\x7f\\x40\\x7d\\x7f\\x17\\xb7\\x4a\\x59\\x34\\xbe\\x91\\x5b\\x20\\xc2\\x40\\x06\\x43\\x23\\x5f\\x8a\\xb5\\x79\\x5f\\x32\\x4e\\x33\\xc5\\x06\\x44\\xa0\\x40\\x33\\x54\\x2c\\xb3\\x81\\x6d\\x77\\x0f\\xa8\\x99\\xe7\\x31\\x1c\\x14\\x30\\x1c\\x1b\\xd0\\xf5\\xaa\\x60\\xa2\\xeb\\x31\\x65\\x68\\x0c\\x72\\x0e\\x1e\\xfa\\x80\\x96\\xfc\\x25\\xd2\\x77\\x92\\x75\\xf1\\x84\\x2b\\x2d\\xb5\\x3b\\x4d\\xa0\\xad\\x3e\\x59\\xc0\\x75\\x40\\xc2\\x84\\x60\\xce\\xc1\\xfd\\xd3\\xcd\\xb7\\xa3\\x47\\x8b\\x91\\xa9\\xca\\xf9\\xac\\x89\\x1c\\xdf\\x3a\\xea\\xee\\xca\\x9a\\x96\\x56\\xac\\x13\\x07\\x25\\x99\\x22\\xfc\\xa7\\x4c\\x5c\\xc6\\x9f\\x7e\\x25\\xc6\\xbf\\x58\\x79\\x73\\xa4\\xb7\\xd3\\xe3\\xac\\x06\\x35\\xb0\\xdb\\x22\\xa0\\x09\\x3a\\x79\\x07\\x68\\x81\\xc7\\x17\\x36\\xee\\x1d\\x4d\\x45\\xf8\\xed\\x2d\\x29\\xa0\\x67\\x1a\\x64\\xe6\\xca\\x2f\\x7a\\x5e\\xf4\\x04\\xb1\\xed\\xeb\\x84\\x20\\x34\\xf5\\x71\\xb6\\x99\\xbc\\x59\\xe5\\xa3\\x7d\\xf0\\x20\\x54\\xe8\\x48\\x2b\\xf1\\xe7\\xb7\\x7d\\x8e\\x83\\x97\\xda\\x15\\xd8\\x9d\\x73\\x55\\xa5\\xdc\\xe8\\x6b\\x16\\x83\\xa9\\xac\\x4e\\x40\\x6c\\x08\\xa9\\x4a\\x6e\\xb0\\x0e\\x5a\\xe1\\x6d\\x96\\x72\\x29\\x72\\xe5\\xc5\\x0c\\x7b\\xee\\x4a\\x84\\xd0\\x69\\x7b\\xbe\\x67\\xce\\xb7\\xef\\x29\\x5f\\x06\\xaa\\xea\\x5a\\xbb\\xa4\\x44\\x66\\xbe\\x0f\\x67\"},\n{{0x24,0xa9,0x14,0xce,0xb4,0x99,0xe3,0x75,0xe5,0xc6,0x67,0x77,0xc1,0xed,0x20,0x43,0xbe,0x56,0x54,0x9d,0x5e,0x50,0x2a,0x84,0x47,0x10,0x36,0x40,0x42,0xba,0x9a,0xcb,},{0x20,0xd2,0x1e,0xe7,0x64,0xb1,0xf3,0x5f,0x94,0x56,0x82,0x00,0xd6,0x3b,0xd5,0x82,0x8a,0xca,0x8c,0x5d,0x3e,0x90,0x47,0xd2,0x3f,0x47,0x8b,0x92,0x52,0x95,0xfa,0x2e,},{0x3a,0xe0,0xcc,0x7b,0xca,0x8d,0x73,0xbe,0x83,0xa9,0xb8,0x09,0xb1,0x33,0x38,0xc1,0x27,0x06,0xaa,0xef,0x75,0xc4,0xd1,0xa4,0x78,0x17,0x8f,0x9d,0xc5,0x65,0x51,0x4c,0x75,0x29,0xe2,0x98,0x04,0x3e,0xa7,0x8d,0x21,0xa5,0xa0,0x9d,0xd0,0x4f,0x10,0xae,0x87,0x44,0x1e,0x56,0x86,0xa9,0x33,0xc9,0x2c,0x75,0x54,0x84,0x27,0xad,0x3a,0x03,},\"\\x3f\\xf9\\xf6\\x6f\\xa2\\x64\\x6e\\xc6\\x6a\\x1b\\xf9\\x33\\xc2\\xb4\\xcc\\x0f\\xbf\\x91\\x2b\\x4d\\x6d\\xb5\\x05\\x34\\x25\\x7f\\x97\\xd0\\x1e\\x69\\x8d\\x05\\x48\\x57\\x47\\xde\\x25\\x44\\xe9\\xf5\\xa4\\xa4\\xa0\\x75\\x38\\x8c\\xf4\\x40\\x0a\\xb8\\x9b\\x03\\x53\\xce\\x86\\x19\\x82\\x02\\xdb\\x3a\\x90\\x37\\x67\\xb8\\x79\\xa2\\xaf\\x9d\\xaa\\x15\\x58\\x43\\x11\\x1a\\xf1\\x5a\\x2b\\xc3\\x5e\\xfe\\x41\\xbc\\xc9\\x2c\\x82\\x07\\xe0\\x01\\x13\\xb0\\x4f\\x13\\x03\\x00\\x79\\x49\\xff\\xb6\\xce\\x8d\\xf4\\xb0\\xb3\\x42\\x48\\xfe\\xdf\\x5d\\x9c\\xb2\\xce\\xe9\\x4b\\x81\\x2e\\xd5\\x8e\\xce\\x2a\\x0c\\xe0\\x45\\x4c\\xf1\\x4c\\x20\\xe4\\x9e\\x09\\xfe\\x66\\x4d\\x6e\\x25\\x76\\x2e\\x87\\x89\\x59\\x32\\xcd\\x5c\\xd3\\x2e\\xb6\\xa3\\xab\\xb3\\x8e\\xe1\\x63\\x07\\x8c\\x13\\x3e\\x93\\x58\\x87\\x91\\xdb\\xf6\\xaf\\x49\\x9a\\x31\\xea\\x44\\x53\\xbb\\xcc\\x7a\\x85\\xe4\\x06\\xc9\\x84\\x8a\\x66\\x40\\x52\\xf1\\x11\\x13\\xfb\\xb4\\xff\\xa7\\x60\\xde\\xe4\\xc2\\x61\\xe3\\x96\\x94\\x24\\x91\\x11\\x9d\\xa2\\x9a\\x33\\x58\\x2f\\x82\\x1d\\x41\\x25\\xe0\\xb4\\x16\\x2f\\x28\\xbe\\xb0\\x66\\x03\\x1a\\x65\\x2d\\x05\\x74\\x9a\\xa7\\x24\\x4d\\xd4\\xf3\\xd3\\xbb\\x15\\xd2\\x68\\x32\\x8d\\x6a\\x02\\xfc\\xe2\\x50\\x18\\x15\\x25\\x7f\\x8a\\xd5\\xaf\\x4e\\xcb\\xe7\\xcb\\x8a\\xe9\\x66\\x1e\\x34\\x4f\\x90\\x72\\x31\\x87\\x91\\xf3\\xe8\\x59\\x09\\x11\\x21\\xe0\\x8a\\xef\\xca\\x89\\x82\\xea\\xaf\\x66\\x25\\x9d\\x9d\\xe4\\xf4\\x6a\\x31\\xe7\\x16\\xdc\\x03\\x3d\\x0f\\x95\\xd1\\xfa\\x93\\x6b\\x6c\\x60\\x79\\xb1\\x37\\xdd\\x11\\x58\\xd1\\xde\\xf1\\x13\\x01\\x8c\\x73\\xf8\\xeb\\xb9\\x80\\x7e\\x0f\\x74\\x15\\x40\\x4e\\xa9\\xc7\\x85\\x44\\xac\\xe7\\xce\\x46\\x3c\\xd1\\xd1\\xc5\\x7e\\x31\\xf4\\x09\\x1b\\xc0\\x91\\x80\\x4c\\xbc\\xdd\\xad\\x0e\\x15\\xa4\\x0c\\xa9\\x1a\\xcb\\xe1\\xc6\\x22\\x4e\\xd1\\x3c\\xaf\\xb4\\xdf\\x2c\\x84\\xac\\x9f\\x0c\\x3c\\x9b\\x54\\x60\\x07\\xd9\\xdd\\x6e\\x52\\x4c\\x46\\x70\\x72\\x56\\x3d\\x4a\\xc0\\xd7\\x00\\xcc\\x1b\\xf3\\x0f\\xeb\\xb3\\x34\\x31\\x3d\\xae\\x57\\x61\\x74\\x5e\\xc0\\xa5\\xe9\\xe8\\x81\\x50\\x25\\x95\\x8f\\x00\\xfa\\x2e\\x58\\x06\\x0d\\x7e\\x9a\\x5f\\x2b\\x72\\x7f\\x48\\x69\\x9f\\x92\\x9c\\x84\\x59\\x93\\x08\\x92\\x57\\x3f\\x78\\x4f\\xef\\x56\\x92\\x51\\x8b\\x5c\\xa2\\x68\\xe2\\xa7\\x3e\\xbe\\xad\\x6e\\xbd\\xeb\\x7e\\xc2\\x4e\\xac\\x92\\xaa\\x7d\\xcb\\x41\\xb5\\x98\\xbd\\x6e\\xff\\x36\\x32\\xd0\\x69\\x72\\x62\\x91\"},\n{{0x55,0x32,0xe0,0x9b,0x93,0x7f,0xfd,0x3d,0x5f,0x4c,0x1d,0x9f,0x1f,0xfc,0xde,0xd2,0x6e,0xe7,0x4d,0x4d,0xa0,0x75,0x26,0x48,0x44,0x69,0x0b,0xd9,0xc8,0x61,0x39,0x94,},{0x50,0x93,0x96,0x9f,0x37,0x7b,0xec,0x3e,0x35,0xf5,0x9e,0xfd,0xa0,0x1a,0xb4,0x18,0x6c,0x5d,0x2a,0x36,0x74,0x0c,0xf0,0x22,0x67,0x5e,0x01,0x09,0x6b,0x1a,0x3f,0x0a,},{0xd5,0x27,0xff,0x0d,0x4a,0x21,0x9d,0x61,0xf4,0x18,0x12,0x12,0x06,0xa5,0x4a,0xe4,0x98,0x58,0x54,0xa3,0x10,0x48,0x27,0x44,0x48,0x6e,0x4d,0x13,0x0a,0x7d,0xe9,0x7c,0x31,0x9d,0xf8,0x37,0x2c,0x82,0x82,0x8c,0x93,0x6e,0x6a,0x8a,0xfd,0x9c,0x5d,0xe1,0x82,0x85,0x73,0xd8,0x26,0x1a,0xe9,0x36,0x5b,0x8f,0x23,0x76,0x76,0x18,0x24,0x02,},\"\\xad\\xd4\\xd7\\xa9\\xce\\x3f\\x63\\xd1\\xf9\\x46\\xe8\\x67\\x90\\x65\\x54\\x5d\\x8c\\x7b\\xf0\\xa2\\xcc\\x3a\\x4c\\x00\\xb8\\xf1\\x42\\xf0\\x94\\x5a\\xe3\\x62\\xc4\\xc9\\x46\\x2a\\x75\\x76\\xa4\\x05\\x9d\\x57\\x86\\x16\\x62\\x88\\x4b\\xd8\\x0b\\x96\\xd9\\x0d\\x27\\x9a\\x95\\x2e\\xda\\x95\\x2d\\x37\\xd4\\xf9\\x5c\\xf0\\xd7\\x0d\\xa9\\x8f\\x4f\\xba\\xca\\x39\\xe1\\x69\\xf9\\xd9\\x45\\xd4\\x1f\\x87\\x23\\x97\\xbb\\xdd\\x57\\x01\\x45\\x43\\x03\\xd7\\x7d\\x31\\xe8\\x63\\x48\\x27\\x1d\\xa4\\x0a\\x1b\\x8f\\x1e\\x57\\xc3\\x6f\\xcd\\x80\\x3e\\x14\\xfa\\x17\\x71\\x6c\\x56\\x31\\xef\\xa0\\x1d\\x3a\\x79\\x5d\\xc2\\x0b\\x2b\\xde\\x36\\xab\\x73\\xff\\x6a\\x2d\\x53\\x3b\\xc1\\x5c\\xce\\x22\\x32\\x87\\x13\\xc3\\xc9\\xcc\\xd0\\x72\\xc3\\xe4\\x50\\xd7\\xf2\\x2c\\x0c\\x9f\\x94\\x91\\x97\\x52\\xcb\\xfe\\x45\\xee\\x65\\x5d\\x1b\\x53\\x67\\x65\\x93\\xcd\\xb4\\x48\\x70\\x41\\x02\\x63\\x1c\\xaa\\xa9\\x76\\x95\\x2e\\xaa\\x1f\\x6c\\x2e\\x87\\x65\\x64\\xe4\\x20\\xf0\\xc6\\x46\\xa0\\xf8\\x83\\x65\\xf7\\x64\\x15\\xb4\\x08\\x5f\\x60\\xa3\\x38\\xb2\\x9c\\x51\\x63\\x3e\\x54\\x0f\\x0b\\xf3\\x2d\\x40\\x87\\xe7\\xd0\\xfb\\x68\\x5b\\xe8\\x8c\\x75\\x95\\xdc\\x53\\x1c\\x99\\xb4\\x89\\x58\\x45\\x60\\xad\\x82\\x34\\xb1\\x8e\\x39\\xa1\\x07\\xcf\\x5d\\x84\\x2d\\xab\\xd4\\x21\\xe7\\x7d\\x26\\xea\\x5e\\x0f\\x14\\x05\\xce\\x35\\xfe\\x79\\x27\\x14\\xeb\\x4e\\xe1\\xa8\\x01\\x76\\x48\\xac\\x1a\\xe7\\x39\\xa3\\x3d\\x7b\\x1e\\x08\\x91\\x05\\xd1\\xe5\\xad\\xd2\\x7a\\x62\\xce\\x64\\x15\\x45\\x70\\x34\\x0a\\xf9\\xeb\\x14\\xe7\\xfd\\xfc\\x2f\\x9a\\x2c\\x2f\\xcf\\xcd\\xac\\x3c\\xc4\\x22\\x77\\x63\\xf4\\xd6\\x29\\x49\\x74\\x79\\xf8\\x49\\x21\\x6e\\x5d\\x90\\xec\\x16\\xdf\\xa3\\x6b\\x72\\x51\\x7f\\x7b\\x54\\x86\\xba\\xee\\x7f\\xda\\x44\\x50\\xc3\\x52\\xcf\\xfb\\xba\\xe7\\x39\\x26\\xc8\\x43\\x22\\x4f\\x8c\\xe4\\x4b\\x38\\xda\\xe5\\x3f\\x3e\\xad\\x21\\x89\\x0b\\x52\\xa7\\x80\\x10\\x75\\x29\\x16\\x84\\xfd\\x59\\x10\\xed\\x86\\xad\\x33\\xe8\\xa0\\x07\\xf6\\xc3\\xf8\\x5c\\x16\\xb2\\x09\\x29\\x37\\x40\\x18\\x4f\\x58\\x90\\x87\\x4d\\x43\\x1c\\xd4\\xe0\\xea\\x40\\x87\\xc4\\x9c\\x34\\x71\\xd7\\x89\\xc8\\x13\\xc6\\xdc\\x9a\\x78\\x69\\x93\\x63\\xa1\\xd8\\x71\\x97\\xd3\\xb9\\x2c\\x02\\x86\\x68\\x93\\x11\\x82\\x3f\\x4d\\xf2\\x2c\\xe8\\x03\\x5e\\x75\\x73\\x2c\\xde\\xa7\\xf5\\x62\\x1f\\x67\\xdb\\x0e\\x2a\\x4c\\xa6\\x61\\x61\\x93\\x22\\x1c\\x0a\\xa3\\xd6\\xde\\x50\\xd8\\x52\\x82\\xee\"},\n{{0xeb,0x36,0x51,0x10,0x09,0xd3,0x7a,0x9c,0x46,0xc4,0xd1,0x37,0x4d,0x0b,0xbd,0x0d,0x99,0x81,0xe7,0x8c,0xee,0x7d,0x18,0x8c,0x5a,0xab,0x98,0x3e,0xc2,0x39,0xe1,0x0c,},{0xb1,0xcc,0x21,0x2b,0x45,0x21,0xbb,0xe7,0xb1,0x9a,0x76,0x93,0x87,0x8a,0x55,0x84,0x40,0xee,0xc3,0x62,0x05,0xd8,0x43,0x9d,0x04,0x0a,0x46,0xa9,0x90,0x2f,0xbf,0x55,},{0x9f,0x58,0x37,0x24,0xde,0x55,0x2e,0xae,0x82,0xf2,0x54,0xac,0x6e,0x2e,0xd4,0x83,0xec,0x1a,0x07,0x34,0x62,0x66,0x73,0x5c,0x49,0x09,0x20,0x69,0x0c,0x1e,0x3f,0xb2,0xa9,0xe9,0xa3,0x41,0x94,0xed,0x64,0x73,0x73,0x3b,0x30,0x0d,0x4f,0x23,0xc9,0xae,0xc0,0xda,0x5a,0x20,0x22,0x05,0x4c,0xa4,0x38,0x85,0xa1,0x5a,0x29,0x84,0x32,0x0e,},\"\\xba\\x24\\x66\\xe5\\x6c\\x1d\\xf7\\x7f\\x22\\xb6\\xf0\\x24\\x1f\\xc7\\x95\\x2a\\xe9\\xbc\\x24\\x75\\x64\\x19\\xa9\\x44\\x6d\\xd2\\xb4\\x9e\\x2c\\xb9\\xdf\\x59\\x4e\\x5b\\x6c\\x77\\xa9\\x5a\\xa5\\xfb\\xd9\\xdc\\x57\\xfe\\xc8\\x39\\x62\\xc7\\x75\\x1e\\xeb\\xb4\\xba\\x21\\x82\\x53\\xf9\\x16\\xa9\\x22\\xa5\\x13\\x96\\x63\\xe3\\x20\\x3e\\x3b\\xe4\\x82\\xbe\\x37\\x9c\\xa1\\x51\\xc4\\x63\\xd9\\xad\\xa2\\x14\\x46\\x13\\x5f\\x35\\x69\\x94\\xfa\\x54\\x49\\xf0\\x84\\x47\\x8f\\x5b\\xb4\\xf5\\xba\\x61\\x45\\xc5\\x15\\x8e\\xb7\\xb1\\xc4\\x3c\\x32\\xeb\\xea\\x25\\xe0\\x9c\\x90\\x0f\\x01\\xef\\x91\\xe9\\x2f\\x88\\xc0\\x3c\\x76\\x50\\x4a\\xce\\x96\\x46\\x01\\x6f\\xfc\\x27\\x89\\x55\\x9d\\x0f\\x3c\\xc9\\xd0\\x0f\\xb6\\x1b\\xdc\\x6a\\xf7\\xd3\\x94\\x0f\\x30\\x2e\\x58\\x8e\\x04\\xf7\\x9f\\x7b\\x3d\\x4b\\x91\\xa5\\xd1\\x93\\xa4\\xf8\\x22\\x2b\\xfe\\xb6\\x9b\\xf0\\x34\\x7d\\x98\\xad\\x81\\xef\\x99\\xd1\\x30\\xeb\\xc7\\xb3\\x6b\\x07\\x83\\x39\\x4e\\xea\\x92\\xa3\\x8d\\xdd\\x5e\\x74\\x80\\xd2\\xad\\xd4\\xe4\\xde\\xf5\\x3e\\xb9\\x9c\\x44\\x9b\\xff\\x94\\xe4\\x71\\x8b\\x09\\xf2\\xea\\x9b\\x1f\\x2b\\x88\\x65\\x94\\xa9\\x5c\\x33\\xa6\\x9e\\x03\\x33\\x15\\x4e\\x44\\x0a\\xb3\\x4b\\x7b\\x6c\\x11\\x34\\xd8\\x17\\x9b\\x6f\\x0c\\x56\\x25\\x1a\\x9a\\xd8\\xe1\\xb6\\xb0\\xf9\\xb8\\xa5\\xc9\\x70\\x81\\xa7\\xf8\\xfd\\x05\\xd0\\xb0\\xaf\\xfc\\x82\\xdb\\xdd\\xc8\\xb0\\xc0\\xab\\x7e\\x83\\x3f\\x30\\x06\\x26\\xd4\\xb9\\x73\\xb3\\xf6\\x0f\\xea\\xc5\\x55\\x71\\xe8\\x9c\\xda\\x0f\\x2b\\x44\\x1e\\xd2\\xfa\\xa6\\x69\\xa7\\x0d\\x55\\x6c\\xb4\\x8f\\x9b\\x1d\\x1c\\xbc\\xe3\\x2e\\xde\\x5d\\x16\\x6b\\x11\\x43\\xe2\\x64\\xb1\\x1e\\xa3\\x27\\x68\\x1c\\xb5\\x59\\xed\\xd1\\x3c\\x36\\x4b\\xd2\\xba\\xf1\\xfd\\x54\\xbb\\x78\\x18\\x07\\xbd\\x59\\xc8\\x68\\xb0\\xe4\\x79\\x5a\\x77\\x9e\\x67\\xf0\\xbd\\x0d\\x14\\xb5\\xa6\\xb9\\xe4\\x40\\xb5\\x7a\\x58\\x23\\x32\\x8b\\x59\\xaf\\xfb\\xd0\\x27\\xed\\xa7\\xdd\\x78\\x50\\x79\\xc5\\xf0\\x2b\\x5e\\x32\\x89\\x0b\\x03\\x87\\x30\\x98\\x6a\\x39\\xa5\\xa9\\x83\\x4a\\x3f\\xed\\x86\\x8b\\x6f\\x45\\xcb\\xdd\\x28\\xac\\xb2\\x70\\x9a\\xff\\x55\\x62\\x63\\x86\\x4f\\x9a\\xe1\\xe7\\x57\\xb3\\x27\\x8c\\x28\\x8d\\xbe\\x29\\x32\\x82\\x57\\x12\\x77\\x3e\\x43\\x1f\\x7c\\x29\\x32\\x98\\x57\\xfd\\xae\\xa7\\x98\\xed\\x93\\x92\\x08\\x93\\x63\\x14\\x02\\xe6\\xb1\\x3b\\xab\\x62\\xb4\\x85\\x54\\x61\\xed\\xb9\\x46\\x20\\xf2\\xd1\\x75\\x18\\x65\\xf4\\x45\\xc4\\x66\"},\n{{0x7d,0xbc,0x81,0x90,0x2e,0x4e,0xaa,0xb3,0x07,0x75,0x40,0xf5,0x59,0x99,0x5c,0x38,0x74,0x03,0xca,0xc3,0x06,0xd4,0x86,0xe9,0x59,0xc5,0xeb,0x59,0xe4,0x31,0xc0,0xa8,},{0xe0,0x30,0x66,0x13,0x90,0x82,0xf6,0x13,0x44,0x8b,0xdb,0xc2,0x7f,0xe5,0x3a,0xa3,0xf8,0x89,0x94,0xc3,0x1d,0xdc,0xe0,0x02,0xe3,0x6b,0xbb,0x29,0x63,0xdf,0x3e,0xc8,},{0x5b,0x7f,0x65,0x2f,0x08,0xf2,0x29,0xfd,0xa1,0xb0,0xbd,0x75,0x93,0x77,0xb3,0xfb,0x72,0x6c,0x1b,0x9c,0x9a,0x10,0xef,0x63,0x42,0x6d,0x35,0x2d,0xd0,0x86,0x9b,0xd5,0x4d,0x87,0x6c,0x30,0x92,0xf1,0xcd,0x41,0x1c,0x37,0x57,0xd3,0xc6,0xb6,0xea,0x94,0x2a,0xa7,0x0c,0x3a,0xae,0xb4,0x21,0x7a,0x4c,0x73,0x64,0xd1,0x8e,0x76,0xe5,0x0f,},\"\\xdf\\xf7\\x98\\xb1\\x55\\x7b\\x17\\x08\\x5a\\x06\\x34\\x37\\x1d\\xed\\x5d\\xdf\\x7a\\x5a\\xcb\\x99\\x6e\\xf9\\x03\\x54\\x75\\xe6\\x82\\x63\\x36\\xf6\\x4a\\xd8\\xb8\\x4b\\x88\\x2e\\x30\\xba\\xde\\xc2\\xb4\\xa7\\x11\\x99\\x87\\x52\\xf4\\xa1\\x57\\x4b\\xc1\\xf8\\x9d\\x43\\x25\\xcf\\x2b\\x39\\x86\\x10\\x44\\xdd\\x03\\x69\\x1e\\x71\\xd0\\x77\\x68\\xb5\\x93\\x3a\\x30\\x52\\xcc\\x7c\\x81\\xd5\\x71\\xa9\\xde\\x06\\x1d\\xc1\\x90\\x26\\xc2\\xf1\\xe7\\x01\\xf2\\xdc\\xf2\\x6a\\x88\\xd3\\x40\\x1b\\xc9\\x9f\\xb8\\x15\\x59\\xdc\\xa7\\x6d\\x8a\\x31\\xa9\\x20\\x44\\xa2\\x73\\x58\\x7d\\x62\\x2a\\x08\\xd1\\xcc\\xe6\\x1c\\x8f\\x94\\x8a\\x34\\xde\\xd1\\xac\\xb3\\x18\\x88\\x1c\\x9b\\x49\\xf6\\xf3\\x7c\\x30\\xa6\\x5d\\x49\\x5b\\x02\\xd5\\x42\\x9e\\x7a\\xb4\\x04\\x0d\\x8b\\xeb\\xeb\\x78\\x79\\x4f\\xf7\\x36\\xd1\\x51\\x10\\x31\\xa6\\xd6\\x7a\\x22\\xcd\\xf3\\x41\\xb9\\x80\\x81\\x1c\\x9d\\x77\\x5f\\xb1\\x9c\\x64\\x78\\xf0\\x5e\\xd9\\x84\\x30\\x10\\x3e\\xa2\\x4c\\x0f\\x41\\x4d\\x4c\\xc0\\x7d\\x86\\x0b\\x72\\xdc\\x54\\x2f\\xf2\\x2d\\x83\\x84\\x5a\\x42\\xf8\\xba\\x45\\xca\\x7f\\xf3\\xaa\\xb0\\xb1\\xe7\\xde\\x2b\\x10\\x94\\xde\\xac\\x08\\xd1\\x6e\\xee\\x01\\x96\\x9f\\x91\\xbc\\x16\\xfe\\xc2\\x9c\\xcc\\x06\\x1c\\x54\\xdb\\x53\\x45\\xba\\x64\\x84\\x2d\\xac\\xc9\\x9e\\xe7\\x72\\x94\\x68\\xd8\\x0a\\x3f\\x09\\x55\\x83\\xd8\\xe8\\x01\\x24\\x08\\x51\\x9d\\x58\\x2c\\xc3\\xff\\x9a\\x2e\\xb7\\xae\\xba\\xa2\\x2d\\xb8\\x1f\\xfc\\x78\\xee\\x90\\xef\\x4e\\xc5\\x89\\xdc\\xce\\x87\\x11\\x8d\\xab\\x31\\xa6\\x32\\x8e\\x40\\x9a\\xd5\\x05\\x9a\\x51\\x32\\xc8\\x2d\\xf3\\xce\\xfe\\x2e\\x40\\x14\\xe4\\x76\\xf0\\x4c\\x3a\\x70\\x18\\xe4\\x52\\x67\\xec\\x50\\x18\\xec\\xd7\\xbf\\xf1\\xdd\\xa9\\x26\\x7e\\x90\\x66\\x6b\\x6b\\x14\\x17\\xe8\\x9d\\xda\\xcb\\x50\\x85\\x94\\x3b\\xef\\xc7\\xad\\x2f\\x4d\\xf5\\xf1\\xee\\x0a\\xf9\\x43\\x1a\\xee\\xb6\\xb2\\x4a\\x55\\x15\\xb9\\x3d\\xbc\\xf6\\x86\\x40\\xf7\\xda\\xf8\\xc9\\x61\\xe5\\x67\\xd7\\x53\\x49\\x00\\x20\\x5c\\x3d\\xf2\\x18\\x4b\\x6a\\xc2\\xda\\x96\\x1c\\x4c\\x1d\\x2b\\xc4\\x9b\\x4e\\xa9\\x6b\\x81\\x54\\xff\\xd4\\xef\\xff\\xdc\\x5e\\x55\\xa7\\x11\\x9c\\xb8\\xaf\\x42\\x9e\\x85\\x10\\x5d\\xff\\xd4\\x1f\\xe4\\xa2\\xeb\\xba\\x48\\x16\\x8a\\xa0\\x5f\\xa7\\xdf\\x27\\xc4\\x29\\x87\\x35\\xff\\x86\\x8f\\x14\\x96\\xbe\\xb4\\xb2\\xed\\x0b\\x89\\x80\\xc7\\x5f\\xfd\\x93\\x9d\\xdd\\x1a\\x17\\xe4\\x4a\\x44\\xfe\\x3b\\x02\\x79\\x53\\x39\\xb0\\x8c\\x8d\"},\n{{0x91,0xb0,0x95,0xc8,0xa9,0x99,0xe0,0x3f,0x3e,0xd7,0x49,0xcd,0x9f,0x2f,0xaa,0xcc,0x00,0x76,0xc3,0xb4,0x77,0xa8,0x7a,0xb5,0xcc,0xd6,0x63,0x17,0x38,0x76,0x74,0x46,},{0xda,0xd1,0x74,0xd3,0x59,0xda,0xec,0xca,0x9c,0x6b,0x38,0x9b,0xa0,0x96,0x45,0x2a,0xb5,0xca,0x91,0xe6,0x38,0x3c,0x6d,0x04,0x2a,0x28,0x4e,0xce,0x16,0xba,0x97,0xb6,},{0x64,0xee,0x9e,0xfd,0xb0,0xc2,0x60,0x1a,0x83,0x5f,0x41,0x85,0x20,0x64,0x1e,0x43,0x6c,0x7d,0xd4,0x7c,0x33,0x3d,0x9f,0xc3,0x0c,0xfb,0xb9,0xe3,0x90,0xfe,0x76,0x45,0x30,0x65,0x47,0x08,0xb4,0x0b,0x03,0x58,0x18,0x99,0xa9,0xac,0x87,0x0e,0xfd,0x76,0x6f,0xfb,0xb4,0x63,0x71,0x52,0xf8,0xff,0x27,0x79,0x64,0xfe,0x35,0x42,0x52,0x09,},\"\\x9b\\x0d\\x8b\\x00\\x29\\x98\\x52\\xd6\\x8b\\xbf\\x49\\x7f\\xe6\\x03\\x96\\x1a\\x48\\x54\\x66\\xa9\\x9a\\x54\\x84\\x00\\x5d\\xb7\\x3d\\x4e\\x4b\\xad\\x81\\x4e\\x85\\x74\\xef\\xd5\\x4d\\x64\\x8b\\xd5\\xc9\\x1a\\xe8\\x48\\x3c\\x54\\xb2\\xf9\\x98\\xb0\\x2e\\x1a\\xbd\\x6f\\x40\\x1a\\x25\\x52\\x68\\x43\\xa5\\xf2\\xa2\\x3a\\x97\\xbd\\x58\\x9d\\x1f\\x7e\\x1a\\xb1\\x49\\x15\\xb1\\xe3\\x59\\xa3\\x96\\xd3\\x52\\xc3\\x60\\xae\\x65\\x84\\x32\\x5a\\xe4\\xbb\\x7d\\x62\\x4f\\x61\\x25\\x5c\\x5c\\x7b\\xf0\\xa6\\x7a\\xca\\xb4\\x6c\\x3b\\x57\\xb3\\x45\\x34\\xc0\\xee\\x84\\x31\\xd2\\x60\\x57\\x66\\x06\\xcb\\xd8\\x4d\\x8d\\x18\\x39\\xe7\\x3d\\xa6\\xfe\\x4b\\x0b\\x8b\\x78\\xf0\\xf9\\x58\\x82\\x7c\\x2f\\x1d\\x93\\xba\\x7a\\x34\\x6d\\xcc\\x75\\xcb\\x56\\x3d\\xff\\xde\\x26\\xf9\\x97\\x59\\x8e\\x8b\\x5c\\x2f\\x16\\x17\\xc6\\xfe\\xfc\\x9b\\xe4\\xb2\\x8b\\x54\\x01\\xb0\\x00\\x64\\x13\\xa2\\x51\\x69\\x0d\\x12\\x03\\xaa\\xae\\x4f\\x6d\\x8a\\x3f\\xb2\\x1f\\x24\\x00\\x9a\\xb3\\xbf\\xf1\\x37\\x37\\xa8\\xa7\\xe6\\x64\\x6c\\x02\\x73\\x2d\\x9e\\xc5\\xa4\\xa5\\x10\\x46\\x9e\\x2d\\x29\\x9e\\x4c\\xc1\\xad\\x64\\x80\\xa4\\x82\\xaa\\x95\\x6f\\x89\\xdd\\xcc\\xcc\\x64\\xa1\\x36\\xfb\\x15\\xb8\\x76\\xb6\\xec\\xd8\\x8c\\x7c\\x86\\xa4\\xdf\\xc6\\x0e\\x66\\x62\\x07\\xc6\\x04\\x16\\x7d\\x16\\x34\\x40\\xca\\x9a\\xb9\\xcf\\x87\\xa5\\xe0\\xf7\\xbb\\xc5\\x51\\x7d\\xe4\\xde\\xe8\\x76\\xc0\\x37\\xf8\\xcc\\x9d\\x95\\x9c\\x8f\\xf5\\xdb\\xe9\\x44\\xff\\x54\\xcd\\x91\\xa7\\x71\\xe2\\x92\\x31\\xf8\\xb5\\xf1\\x7d\\x61\\xde\\x90\\x4c\\x95\\x5f\\xe2\\x02\\x5d\\xc5\\x2e\\xd4\\x80\\xfb\\x3c\\xc9\\x0f\\x23\\x24\\x59\\xc6\\x07\\xef\\x7e\\x2a\\xdb\\x52\\xc7\\x48\\x2b\\xec\\xd6\\x7a\\xd2\\x14\\x9a\\x41\\x28\\xf9\\x84\\x03\\x8b\\x58\\xaa\\x90\\x17\\x67\\x82\\x39\\x36\\x04\\xaa\\xc7\\x4c\\x18\\x20\\x9a\\x3d\\x6a\\x78\\x63\\x0c\\x01\\x95\\x5a\\x7c\\xec\\xe5\\xda\\x83\\x84\\xda\\x3b\\xaf\\x63\\xaa\\x2d\\xdf\\x59\\x63\\xfa\\xe0\\x5b\\xa3\\xb8\\x1c\\x6a\\x03\\xd8\\x6a\\x00\\xef\\x78\\xed\\xb4\\x18\\x4f\\xdc\\x89\\xb1\\xd6\\xbf\\xeb\\x31\\x0f\\xd1\\xb5\\xfc\\xce\\x1e\\x21\\x95\\x24\\xa3\\xcf\\xb2\\xe9\\x72\\x57\\x7f\\x06\\xb1\\xdd\\xde\\xba\\x00\\x86\\x5d\\xae\\x49\\x79\\x00\\x0c\\x00\\x8a\\xd9\\x9f\\x3b\\x63\\x8c\\xce\\xb8\\xe8\\xc7\\xa0\\xf9\\x98\\xd3\\x4d\\x92\\x14\\x3d\\x81\\xc0\\xe1\\xc0\\x96\\xa9\\x25\\xce\\xba\\x65\\xc4\\x30\\x03\\xee\\x18\\xd4\\x94\\xd0\\x03\\xe9\\xc6\\x1f\\x77\\xd6\\x57\\x59\"},\n{{0x8c,0x56,0x8b,0x31,0x0a,0xce,0x7d,0x1f,0x0e,0xde,0xce,0xfd,0x60,0x3a,0x88,0x40,0x00,0x54,0x4c,0x79,0x25,0x65,0xd4,0x81,0xc3,0xd3,0xe0,0x6e,0x2d,0x82,0xca,0x96,},{0x5f,0xa6,0xe2,0x67,0xc7,0x66,0x73,0x68,0x41,0x41,0x10,0x72,0xd1,0x98,0x3d,0x19,0x00,0xac,0xf0,0x1d,0x48,0xc3,0xce,0x11,0x77,0x0b,0x26,0xf7,0x8d,0xa9,0x79,0xf7,},{0xde,0xbd,0xd8,0xe5,0xd3,0x11,0x2f,0xd7,0x7b,0x39,0x4a,0xa0,0xe3,0x6e,0x94,0x26,0xba,0xc9,0x1d,0xf1,0x26,0xfa,0x9c,0x31,0x7c,0xea,0x7c,0x9d,0x45,0x95,0x7c,0xdd,0x96,0xa4,0x5a,0xe3,0xad,0x76,0x04,0x13,0xee,0x12,0x05,0xaf,0xd7,0x1a,0x29,0xf9,0xc3,0xcb,0x58,0x6c,0xd2,0xd7,0xcd,0x1e,0x93,0xbc,0x16,0x52,0xfc,0x34,0xdc,0x04,},\"\\xb5\\x9f\\x5f\\xe9\\xbb\\x4e\\xcf\\xf9\\x28\\x95\\x94\\x72\\x1f\\x26\\x47\\x04\\x7b\\x0d\\xa5\\xe0\\xe4\\x94\\x1b\\xbe\\x57\\xc5\\xb7\\x22\\xb4\\x76\\x72\\x3f\\x0a\\xc5\\x97\\x0b\\x41\\x11\\xf8\\x93\\xbc\\xaa\\x41\\x1f\\x28\\xfc\\xeb\\x4f\\x58\\x5a\\x2a\\x71\\x87\\x01\\x8a\\x90\\x4b\\x70\\xef\\x8f\\xe1\\xf6\\x56\\x9a\\x54\\xd0\\x0a\\xda\\x37\\xb6\\x9c\\xb5\\xe9\\xc9\\xd2\\x6c\\x16\\xa9\\x03\\x51\\x81\\x48\\xe0\\x4a\\x1b\\x93\\x6a\\x32\\x32\\x9c\\x94\\xee\\x1a\\x8f\\xb6\\xb5\\x91\\x89\\x2c\\x3a\\xff\\x00\\xbf\\x6e\\x44\\xdd\\x0a\\x76\\x2b\\xab\\xe8\\x9d\\x70\\x60\\xc1\\x7b\\x90\\x39\\x0d\\x23\\xbf\\x9d\\x36\\x0a\\x29\\x3b\\x83\\x08\\x38\\x30\\x86\\x91\\x6e\\x11\\x82\\xb1\\xba\\x43\\x36\\xf0\\x01\\xb8\\xd2\\x0d\\xea\\xe9\\xa0\\x29\\xf7\\xe8\\x53\\x97\\xa9\\xae\\x5c\\xf3\\xca\\x10\\xc7\\xf3\\x87\\x55\\x88\\xb8\\xff\\xab\\xb0\\x63\\xc0\\x0c\\xa2\\x6f\\x58\\x0f\\x69\\xed\\xc5\\x27\\xa1\\xac\\xcf\\x4f\\x41\\x39\\x7b\\x33\\x76\\x6b\\xcf\\x6d\\x55\\xeb\\x8d\\xe0\\x81\\xa4\\x8c\\x98\\x1d\\x05\\xc0\\x66\\x61\\x7b\\x80\\xd8\\xf6\\xf5\\xe6\\x0e\\x59\\xdd\\x9b\\x93\\x0b\\xc4\\xd0\\x45\\x86\\x40\\x3b\\xb8\\x68\\xdf\\x75\\x93\\x3b\\xdd\\x86\\x23\\x0e\\x44\\x70\\x36\\xc1\\x75\\xa1\\x0d\\xe9\\xbb\\x39\\x95\\x3d\\xcb\\x19\\x66\\xa1\\xf1\\x19\\x12\\x07\\x8e\\x35\\x8f\\x48\\xc5\\xb2\\x09\\xa6\\x36\\xc7\\xf7\\x83\\xf4\\xd3\\x6a\\x93\\xad\\x2c\\xc2\\xe3\\x24\\x45\\x19\\x07\\x8e\\x99\\xde\\x1d\\x51\\x58\\xb3\\x96\\x1e\\x0f\\xc5\\xa4\\xf2\\x60\\xc2\\x5f\\x45\\xf5\\xe8\\x58\\x5e\\x60\\x1d\\xb0\\x8b\\xa0\\x58\\xd2\\x90\\x9a\\x1b\\xf4\\x99\\x5f\\x48\\x13\\x46\\x0d\\x36\\x95\\x03\\xc6\\x87\\x36\\x85\\xeb\\xcd\\x33\\x30\\xa1\\x30\\xb7\\x5f\\x23\\x65\\xfb\\x2a\\x5a\\x34\\xea\\x63\\xd9\\x58\\xa2\\xa8\\x67\\xe9\\x05\\x52\\xd2\\xce\\xc8\\xc3\\x90\\x08\\x4b\\xe0\\xc1\\x08\\xb0\\xfd\\x2d\\x83\\xcb\\x92\\x84\\xdb\\x5b\\x84\\x2c\\xbb\\x5d\\x0c\\x3f\\x6f\\x1e\\x26\\x03\\xc9\\xc3\\x0c\\x0f\\x6a\\x9b\\x11\\x8e\\x1a\\x14\\x3a\\x15\\xe3\\x19\\xfd\\x1b\\x60\\x71\\x52\\xb7\\xcc\\x05\\x47\\x49\\x79\\x54\\xc1\\xf7\\x29\\x19\\x9d\\x0b\\x23\\xe5\\x38\\x65\\x40\\x3b\\x0a\\xd6\\x80\\xe9\\xb4\\x53\\x69\\xa6\\xaa\\x38\\xd6\\x68\\x5a\\xbd\\x39\\x7f\\x07\\xfb\\xca\\x40\\x62\\x7e\\xca\\xf8\\xd8\\xd3\\x01\\x33\\xa6\\xd9\\xd5\\xaf\\x00\\x91\\x92\\x75\\x1c\\x9c\\x45\\xf7\\x7c\\x0b\\xc0\\x11\\x26\\x88\\x00\\xbf\\x55\\x25\\x12\\x73\\x0e\\x69\\x97\\x3c\\x5b\\xf3\\x62\\xab\\x16\\x48\\x94\\xbf\"},\n{{0x3d,0x09,0xaf,0xce,0xe3,0xc4,0x32,0xfd,0xfb,0x6b,0xdc,0xea,0xd5,0x4e,0x3d,0xa5,0xb1,0xb4,0x16,0x5c,0x50,0xd6,0xd3,0x10,0xb7,0xfa,0xd7,0x87,0xb4,0x44,0xd6,0x80,},{0xb0,0xd9,0x02,0x8c,0x4d,0x14,0x87,0xd2,0x93,0xed,0x58,0x5a,0x76,0xbc,0x94,0xff,0xfb,0xaf,0xe2,0xc6,0x5d,0x98,0x0c,0x49,0x4e,0x14,0x1e,0x48,0x10,0xa3,0x5c,0xb9,},{0x89,0x73,0x9f,0xe4,0x41,0xca,0x0c,0xed,0x08,0xa6,0xeb,0x57,0x96,0xe9,0xbd,0xda,0x0e,0x74,0xfb,0x47,0x35,0x28,0xfd,0x49,0x07,0xed,0xb6,0x59,0xaa,0xb4,0x4d,0x33,0x43,0x22,0x90,0x46,0x71,0x63,0x68,0xfa,0xf8,0x8e,0x85,0xc1,0x64,0x4a,0xf6,0x6f,0xf2,0xdc,0xaf,0x0b,0x17,0xac,0x93,0xca,0x13,0x81,0x9f,0x3f,0x24,0x1d,0xd3,0x00,},\"\\x76\\x71\\x65\\xca\\xae\\x0e\\x57\\x8f\\x16\\x53\\x7e\\x17\\x50\\xbe\\x7d\\xe8\\x7a\\x78\\x9a\\x51\\xff\\x2d\\xe1\\x18\\x38\\xf5\\x64\\xe2\\x58\\x0b\\x23\\x91\\x36\\x2d\\x28\\x68\\xa5\\xa4\\x70\\x8a\\xf1\\x5d\\x2e\\x2d\\xb7\\xb9\\xbe\\x39\\xc1\\x6a\\xdc\\xc1\\x20\\x0b\\x34\\xe6\\xb4\\xd4\\x02\\x7d\\xdf\\xfc\\x1a\\x2a\\x35\\x95\\xe2\\x9e\\x85\\x5e\\xc5\\x26\\x1b\\x20\\xbd\\x55\\xc4\\x28\\xb0\\x13\\x09\\xba\\xdb\\x59\\xe2\\xca\\x3e\\xdb\\x96\\x7f\\xc2\\xf4\\xba\\xc0\\x72\\x9d\\xdf\\x54\\xfb\\x6c\\x20\\x05\\x7b\\xdd\\xa9\\xe7\\xaf\\x7c\\xbf\\xc0\\x92\\xfb\\xa8\\x65\\xfd\\x32\\x75\\xb9\\xd3\\xbc\\xb0\\xc3\\x46\\xb9\\x51\\xd1\\x70\\xac\\x9a\\xa6\\x50\\xa8\\x6d\\xf4\\x98\\x55\\xd4\\x8a\\x1b\\x37\\xce\\x56\\xc9\\xf2\\x73\\x89\\xf5\\xc8\\xb1\\x5f\\x5c\\x2c\\x90\\x0c\\x4f\\x10\\x7c\\x06\\x4f\\x60\\x3e\\x4f\\x86\\x7e\\xf2\\xe9\\xc1\\x0a\\x1b\\x74\\x21\\x0e\\x6b\\x89\\xbb\\x01\\x17\\x93\\xaa\\x85\\xde\\xd4\\x3b\\x51\\xb7\\x49\\xba\\x7f\\x70\\x28\\x7b\\x6b\\xc1\\xb8\\x94\\x34\\xdb\\x8b\\x8c\\x8b\\x5d\\x73\\xb2\\x14\\xb4\\x1e\\x36\\xb5\\x28\\x00\\x5b\\xfb\\xfe\\x00\\x2e\\x21\\xb1\\x00\\x6f\\xb9\\xd2\\x4b\\xab\\xd7\\x21\\x06\\xd0\\x93\\xe3\\xc7\\x09\\x3b\\x31\\x38\\xae\\xa7\\x19\\xd6\\x94\\x79\\x08\\x46\\x47\\x49\\x8c\\xd6\\xc9\\xbb\\xb7\\x44\\x50\\x9c\\xd7\\xda\\x8d\\xd6\\x1a\\x62\\x71\\x00\\xf0\\x3c\\x21\\xe7\\x50\\xac\\xb3\\xfc\\xf4\\x63\\x1d\\x7c\\x0f\\x61\\x81\\x54\\xd2\\xe5\\xfa\\x66\\x56\\xfb\\x76\\xf7\\x4c\\x24\\x79\\x50\\x47\\xbb\\xce\\x45\\x79\\xeb\\x11\\x06\\x43\\xfa\\x98\\xe1\\xf7\\x76\\xca\\x76\\xd7\\xa2\\xb7\\xb7\\xb8\\x67\\x81\\x73\\xc7\\x73\\xf4\\xbe\\x7e\\x18\\x2f\\xd2\\x4d\\xd7\\x62\\x91\\xac\\x67\\xd9\\xf2\\x6a\\x28\\xc5\\xe3\\xcb\\x02\\x5c\\x68\\x13\\xa3\\x78\\xb3\\x83\\x22\\x46\\x42\\xb4\\xae\\xfa\\xd0\\xc7\\x6a\\x65\\x79\\x51\\x7b\\x8f\\x36\\x07\\x97\\xdd\\x22\\x61\\x3e\\xe6\\x82\\xb1\\x79\\x38\\x19\\x50\\xfb\\x71\\x60\\x9a\\x5f\\xb5\\x49\\x4d\\x2d\\x57\\xdc\\xb0\\x0f\\x26\\xd1\\xe7\\x29\\x56\\xf4\\xd6\\x67\\x28\\x30\\xe0\\x5c\\x01\\xb3\\x77\\x96\\x77\\xc0\\x7e\\xa0\\x09\\x53\\xc6\\xb8\\xf0\\xdc\\x20\\x4c\\x8d\\xbd\\xcc\\xb3\\x81\\xbc\\x01\\xb8\\x9c\\x5c\\x26\\x1d\\xb1\\x89\\xab\\x1f\\x54\\xe4\\x6b\\xc3\\xed\\xc4\\xde\\x5a\\xd4\\xf0\\xeb\\x29\\xc0\\xa1\\x20\\xe4\\x37\\xcd\\x8f\\x37\\xac\\x67\\xd4\\x8c\\x7f\\x0e\\x73\\x02\\x78\\x70\\x8f\\x02\\xb5\\x4a\\xee\\x62\\xb7\\x29\\x52\\xbc\\x1c\\x0e\\xb4\\x37\\xca\\x8b\\xd5\\x65\\x54\\x37\"},\n{{0x41,0xc1,0xa2,0xdf,0x93,0x69,0xcd,0xc9,0x27,0x16,0x4a,0xa5,0xad,0xf7,0x75,0x71,0x36,0xab,0xe5,0x13,0x95,0x60,0x42,0x66,0x33,0x4c,0xc5,0x46,0x0a,0xd5,0x68,0x3e,},{0x40,0x55,0x78,0x34,0xcc,0xe8,0xe0,0x43,0x58,0x0a,0x42,0x72,0xa8,0x80,0x4d,0x4f,0x92,0x6e,0x88,0xcb,0x10,0xd1,0xdf,0x0c,0x5e,0x28,0xb9,0xb6,0x7e,0x1b,0x63,0xda,},{0xb8,0xb2,0x75,0x2a,0x09,0x71,0x96,0xc2,0x89,0x84,0x9d,0x78,0xf8,0x11,0xd9,0xa6,0x2f,0xc7,0x67,0x27,0x8f,0x0c,0x46,0x62,0x8b,0x52,0x1f,0x62,0xed,0x27,0x59,0xd7,0x44,0x62,0xa1,0x75,0xda,0x22,0x40,0x3f,0x15,0x02,0x04,0x45,0xca,0xe0,0x6d,0xa3,0xed,0x61,0xcc,0xa6,0x20,0x3b,0x70,0x06,0x36,0x2a,0x0e,0x19,0x89,0x63,0xd2,0x0e,},\"\\xb6\\x4b\\x14\\xba\\x77\\xd2\\x39\\xe6\\xf8\\x1a\\xbe\\x06\\x0a\\xcc\\xef\\x85\\xf0\\x44\\x2b\\x65\\x0c\\x44\\x01\\x5e\\xfc\\x43\\xa0\\xaa\\x2b\\xa1\\x0b\\xf4\\x8d\\x30\\x18\\xb1\\x95\\x3d\\xdf\\xff\\xbc\\xda\\x5b\\xf3\\xbb\\xe0\\xb6\\xb3\\xe4\\xb0\\xd9\\xa3\\x2c\\x6b\\x72\\x5b\\xbb\\x23\\x1e\\x0a\\x27\\x04\\x47\\x1e\\xe8\\xbc\\x1d\\x59\\x4f\\x5c\\x54\\x22\\x6f\\x5d\\xd9\\xdf\\xa1\\x63\\xcf\\xc1\\x45\\x2c\\x61\\xf9\\x3e\\x4f\\x81\\x39\\xab\\x4c\\xe4\\x47\\x6f\\x07\\xec\\x93\\x36\\x61\\xea\\xe9\\x1b\\x6d\\x50\\x0b\\xf5\\x08\\xac\\x63\\xe4\\xba\\xaf\\x1f\\xfc\\x8f\\x00\\x07\\xd8\\x02\\xe0\\x05\\xf1\\xb4\\xfc\\x1c\\x88\\xbe\\xe4\\xd5\\xe9\\xe7\\x63\\x84\\xf5\\xa7\\x04\\x3b\\xd6\\x60\\xcc\\xe7\\x1f\\x3b\\x67\\xf0\\x1f\\x6a\\xb8\\x44\\x29\\x85\\x31\\xaa\\xc7\\x3a\\x39\\xd0\\x45\\x37\\x00\\x88\\x85\\x50\\x05\\xa0\\x9c\\x6d\\x04\\x23\\x8e\\xa4\\x78\\xdf\\xac\\xad\\x1e\\x6b\\x22\\xb2\\xbe\\x4c\\x46\\xb0\\xd5\\x9b\\x1e\\xba\\x1f\\x06\\x0b\\xf7\\xda\\x5d\\x15\\x66\\xcf\\x1f\\xdb\\x5c\\x54\\x3a\\x33\\x92\\x6a\\xf6\\x3f\\x01\\xa0\\xdb\\x86\\xe1\\xa6\\x71\\x1c\\x47\\x3d\\xc7\\x95\\xab\\x28\\x3c\\x8d\\x93\\xfa\\xcf\\xb5\\x70\\x1f\\xa2\\xf2\\xf6\\xbb\\x99\\xf9\\xb7\\xe3\\x74\\x9b\\x07\\x1d\\x58\\x60\\x7b\\xe4\\x4a\\x70\\x89\\xbc\\xb5\\x03\\xec\\x14\\x95\\xb5\\xfe\\xed\\xb3\\x99\\x96\\x1f\\xd3\\x67\\x7d\\x74\\x93\\xea\\xa3\\xb3\\xe9\\xcc\\x5e\\x36\\x42\\xf4\\x0d\\x47\\xde\\x9b\\xfe\\xe7\\xc2\\x0b\\x0e\\x51\\x9c\\x4e\\xb4\\xa4\\x0f\\x4d\\xa4\\x46\\xed\\x6a\\xc7\\xaa\\xca\\x05\\x3e\\x75\\x9c\\x97\\xda\\xbe\\x0a\\x8e\\xc2\\xf5\\x8e\\x7f\\x2f\\x9b\\x20\\x72\\x76\\x2f\\x9f\\x79\\x4a\\x6a\\x4e\\x36\\x06\\x0b\\x88\\x72\\xbd\\x2c\\x18\\xd0\\x6a\\x85\\xc2\\xc1\\x41\\xa7\\x82\\x93\\x77\\x3e\\xe8\\xcf\\xbf\\x15\\x4b\\x99\\x30\\xcd\\x39\\xda\\x31\\xb4\\x97\\xe7\\x37\\xa7\\x75\\x0c\\x90\\xa1\\x3f\\x5a\\xaa\\x14\\x7c\\xd0\\xdc\\x43\\x11\\xf2\\xe3\\x49\\x41\\x25\\x2e\\xf1\\x98\\xb0\\xc1\\xf5\\x08\\x27\\xe5\\x6c\\x9f\\x16\\xf5\\x95\\xac\\xed\\x6d\\x2a\\x69\\x34\\x65\\x31\\x49\\x5a\\x64\\x99\\x77\\x4d\\x36\\x07\\x66\\xca\\x9b\\xe5\\xed\\x88\\x81\\xc0\\xdb\\x26\\xed\\x7c\\x5e\\x6f\\xf3\\xa4\\xf9\\xb7\\x3c\\xd8\\xb6\\x54\\x64\\x0d\\xc9\\x6b\\xf4\\x3b\\xd4\\x26\\xa0\\xf2\\x8c\\x9b\\x25\\xfa\\x70\\x4d\\x62\\xff\\x02\\x88\\xfc\\xce\\xff\\xaa\\xeb\\xd3\\xea\\x30\\x97\\xbc\\xbb\\xd7\\x78\\x42\\x0e\\xbc\\x52\\x0a\\x41\\x77\\x30\\xa1\\xb5\\xb3\\xb8\\xc9\\x6c\\xda\\x9f\\x4e\\x17\\x7d\"},\n{{0xa0,0x06,0x11,0x48,0x94,0x67,0x12,0x2c,0x4c,0x16,0x4b,0xfb,0x6a,0x61,0x6e,0x6a,0x61,0x9b,0x9f,0x83,0xc4,0x36,0x72,0x06,0xb8,0x5d,0x3f,0xbe,0xc3,0x8c,0xd6,0x2c,},{0x57,0xab,0x58,0xba,0xbb,0x41,0xdc,0x0d,0xa0,0xbc,0xd5,0x06,0x05,0x9a,0xac,0x9f,0x46,0xec,0xa9,0x1c,0xd3,0x5a,0x61,0xf1,0xba,0x04,0x9a,0x9a,0xc2,0x27,0xf3,0xd9,},{0xc7,0x71,0xba,0x0a,0x3d,0x3c,0x4a,0x7b,0x06,0x4b,0xd5,0x1a,0xd0,0x5c,0x9f,0xf2,0x7f,0xd3,0x26,0x61,0x0f,0xbf,0xa0,0x91,0x83,0x03,0x9e,0x5e,0xdf,0x35,0x47,0x2d,0xde,0xd8,0xfc,0x22,0x75,0xbb,0xcc,0x5d,0xf1,0xbf,0x12,0x98,0x60,0xc0,0x1a,0x2c,0x13,0x11,0xda,0x60,0x2f,0xba,0xff,0xc8,0xb7,0x9c,0x24,0x9c,0x9c,0xc9,0x55,0x02,},\"\\x34\\xdb\\x02\\xed\\x75\\x12\\xbf\\x8c\\x67\\xd3\\x59\\xe7\\x20\\x3a\\x2e\\xa4\\x41\\xe2\\x0e\\x72\\x97\\x66\\xc1\\x5a\\xa0\\x0f\\xa2\\x49\\xa3\\x51\\x8f\\xc2\\x9e\\xf8\\x90\\x5a\\xa5\\xb4\\x67\\x09\\x58\\xc6\\xa4\\x60\\xd7\\x7b\\x3a\\x80\\xef\\xcb\\x47\\x38\\x59\\xbb\\xaf\\xf8\\x62\\x22\\x3e\\xee\\x52\\xfe\\x58\\xac\\xfd\\x33\\x15\\xf1\\x50\\xf3\\xc6\\xc2\\x7f\\xf4\\x8f\\xca\\x76\\x55\\x2f\\x98\\xf6\\x58\\x5b\\x5e\\x79\\x33\\x08\\xbf\\x59\\x76\\xba\\xd6\\xee\\x32\\x7b\\x4a\\x7a\\x31\\x32\\x14\\xb9\\xae\\x04\\xb9\\x65\\x1b\\x63\\xcd\\x8d\\x9f\\x5b\\x3b\\xec\\x68\\x9e\\x0f\\xd0\\x00\\xdd\\x50\\x17\\x70\\xdd\\x0e\\x99\\xb8\\xf9\\x9e\\xaf\\xa0\\x9c\\x39\\x6a\\x24\\x5a\\x4a\\x96\\xe5\\x68\\x96\\xa2\\x9b\\x24\\x19\\x0b\\x1e\\xf1\\x10\\x63\\xf3\\x9b\\x63\\xee\\x3a\\x58\\x6b\\x07\\x62\\x7d\\xd3\\x50\\x0c\\x4e\\x17\\x0b\\x83\\x5d\\xc0\\xec\\x23\\x6f\\xa5\\xa3\\x5c\\x44\\x18\\x47\\x07\\x56\\x5c\\x4a\\x50\\x66\\x2d\\x8d\\xbc\\xcf\\xff\\x7f\\x9a\\x7a\\x68\\xd0\\x21\\xb4\\xaf\\x64\\xd5\\x32\\xb7\\xc3\\xd2\\x74\\x74\\x18\\xc2\\xd7\\x17\\xbb\\x6a\\xca\\x6b\\x58\\x74\\x7a\\xe4\\xdd\\x56\\x41\\xd8\\x26\\xf7\\x9a\\x8a\\x31\\x5c\\x38\\x21\\x1a\\x53\\x8a\\x92\\x9e\\x5b\\x45\\x1f\\x62\\x3f\\x4f\\xcb\\xbc\\xac\\xdb\\x86\\xc8\\x75\\x2e\\xa1\\x3a\\x61\\x7a\\xb4\\x14\\xab\\x65\\x3e\\xb2\\xe6\\x8d\\x54\\x20\\xdf\\x7c\\x6d\\xf9\\x24\\x38\\x16\\x8d\\xcf\\x9c\\x06\\x65\\x81\\xdf\\xe7\\xb2\\xc4\\x68\\x19\\x4a\\x23\\x70\\x7d\\xe4\\x65\\x9b\\xd6\\x7e\\xb6\\x34\\xff\\x02\\x47\\x41\\xc5\\xfc\\x86\\x98\\xfd\\x4d\\xc4\\x1f\\xe5\\xdf\\xc6\\x29\\x9b\\x7a\\x08\\xe6\\xff\\xca\\x37\\x10\\x9c\\x02\\x10\\xc8\\xf9\\x4e\\xa2\\xd3\\xdd\\xc9\\x77\\xff\\xc0\\xb3\\x79\\x4f\\xe6\\xba\\x43\\x37\\xc7\\xaa\\xb4\\x34\\xa6\\x8a\\xc6\\x65\\x48\\x4e\\xa8\\x24\\x3a\\x84\\xb7\\x9a\\xa1\\x81\\xee\\x6a\\xb5\\xaa\\x37\\xa3\\x2d\\x87\\x97\\x25\\xed\\xc0\\x18\\xf8\\x55\\x21\\x81\\x81\\x6d\\x7d\\x27\\x2c\\xa8\\x81\\x8a\\x7b\\x92\\xe6\\xee\\x44\\x54\\xd1\\xf7\\x82\\x8d\\xd8\\xaf\\xba\\x1a\\x79\\x03\\x64\\xb4\\xff\\x28\\xd8\\x4e\\x02\\x85\\x97\\x35\\x3e\\xbb\\xef\\x24\\x83\\x7b\\xc3\\x19\\xe1\\xae\\x8f\\x2b\\x0b\\x6a\\x85\\x1b\\x48\\x9c\\x3e\\x17\\x0e\\xef\\x53\\xe0\\x65\\xf7\\x03\\x26\\x53\\xcd\\x6b\\x46\\xd8\\xe5\\x7e\\x4e\\x11\\x1b\\x78\\x9b\\xa9\\x50\\xc4\\x23\\x0a\\xba\\x35\\xe5\\x69\\xe0\\x66\\x15\\x40\\x34\\x07\\xbc\\xe0\\x36\\x9a\\xaa\\xb4\\xea\\xfa\\xef\\x0c\\xae\\x10\\x9a\\xc4\\xcb\\x83\\x8f\\xb6\\xc1\"},\n{{0xde,0x16,0x34,0xf3,0x46,0x0e,0x02,0x89,0x8d,0xb5,0x32,0x98,0xd6,0xd3,0x82,0x1c,0x60,0x85,0x3a,0xde,0xe2,0xd7,0xf3,0xe8,0xed,0xd8,0xb0,0x23,0x9a,0x48,0xcf,0xaf,},{0x9d,0xc1,0x46,0x5b,0x33,0x83,0xf3,0x7d,0xe0,0x0e,0xa2,0xd3,0xc7,0x0f,0x2c,0x8f,0xac,0x81,0x5f,0x01,0x72,0x02,0x9c,0x3f,0x57,0x95,0x79,0xc9,0x84,0xa5,0x89,0x5e,},{0xd2,0x05,0x06,0xeb,0x84,0x69,0x23,0xa0,0xb1,0x6f,0xf8,0x2f,0xb2,0xc3,0x92,0x3b,0x00,0xc1,0xb3,0xbc,0xc6,0xe2,0xf6,0x48,0x2f,0xba,0x24,0x80,0x75,0x21,0xe8,0xe0,0x22,0x3f,0x69,0x2e,0x62,0xea,0xc9,0x93,0xf4,0x98,0xf6,0x71,0x02,0xa0,0x4f,0xd1,0xac,0xf9,0xc7,0xe3,0x88,0x8d,0x85,0x7c,0x9a,0x08,0x0b,0x8a,0xf6,0x36,0x10,0x06,},\"\\xd1\\x0c\\x3e\\x4d\\xe7\\xfa\\x29\\x89\\xdb\\xa8\\x75\\x37\\xe0\\x05\\x93\\xd0\\xee\\xd4\\xd7\\x5e\\xe6\\x58\\x46\\xda\\xb1\\x49\\x8b\\x47\\x49\\xd6\\x4f\\x40\\xe3\\x4b\\x59\\x11\\xc5\\xce\\x3b\\x53\\xa7\\xe3\\x7d\\x2d\\x02\\xbb\\x0d\\xae\\x38\\xed\\x96\\x2a\\x4e\\xdc\\x86\\xc0\\x02\\x07\\xbe\\xe9\\xa8\\xe4\\x56\\xec\\xca\\xe8\\xbd\\xf4\\xd8\\x7a\\x76\\x74\\x60\\x14\\x20\\x1a\\xf6\\xca\\xff\\xe1\\x05\\x66\\xf0\\x8d\\x10\\xda\\xaf\\x07\\x71\\x60\\xf0\\x11\\xfe\\xac\\xa2\\x5b\\x9c\\x1f\\x6e\\xca\\x9f\\xc5\\x33\\x14\\xa8\\x05\\x47\\x95\\x17\\x54\\x35\\x55\\x25\\x25\\x7d\\x09\\xa7\\xfd\\xad\\x5b\\xc3\\x21\\xb7\\x2a\\xa2\\x8d\\x1e\\x02\\xd8\\x69\\x6d\\x4f\\x9e\\xb0\\xad\\x3b\\x21\\x96\\xf8\\xbc\\xfa\\xeb\\x1d\\x61\\x48\\x28\\x7a\\x3f\\xae\\xfe\\xf9\\x1a\\x7a\\x3e\\x06\\x09\\xc2\\x8c\\xe5\\x9d\\x0c\\xa1\\x4d\\x0b\\x30\\x50\\xdd\\x4f\\x09\\x6b\\x7b\\xc2\\x51\\x39\\x88\\xba\\x21\\x21\\x28\\xd5\\x02\\x6d\\xaa\\xa7\\x18\\x88\\x46\\xdb\\x21\\xc5\\xc1\\xd1\\x79\\xab\\x94\\x87\\xc1\\xa5\\xbd\\x34\\x65\\x88\\x12\\x7c\\x20\\x39\\x8d\\x36\\x2d\\x4c\\x75\\x9c\\xfa\\xb2\\xa6\\x77\\x75\\x0b\\x9e\\x45\\x67\\x6a\\x1e\\x7e\\x09\\x2e\\xf0\\x2e\\xdb\\xf2\\x78\\xfb\\x19\\xa5\\x8e\\x9b\\xf6\\xc9\\xe9\\x96\\xe2\\x4e\\xda\\xd7\\x3f\\x3c\\xe3\\x1f\\xa0\\x4b\\x6d\\x85\\x33\\x43\\x6b\\xf8\\x0b\\x4b\\x2f\\x80\\x5e\\xd9\\x1e\\x7f\\xcd\\xa3\\xbc\\x2b\\xab\\x3b\\x2b\\xb1\\x57\\x15\\x8a\\xf0\\xea\\x8e\\x3f\\x07\\x31\\xdf\\xad\\x45\\x9d\\x2e\\x79\\xb6\\xd3\\x71\\x5f\\xe7\\xbf\\x1e\\xaf\\xc5\\x39\\x75\\x93\\x20\\x88\\x57\\xe5\\x7b\\x7f\\xeb\\x2f\\x73\\x87\\x94\\x3a\\x8e\\x09\\x13\\x47\\x0c\\x16\\x1a\\xef\\x4f\\xe2\\x05\\xd3\\x63\\x7f\\x23\\x17\\x7f\\xf2\\x63\\x04\\xa4\\xf6\\x4e\\xba\\x3f\\xe6\\xf7\\xf2\\x72\\xd2\\x34\\xa6\\x72\\x06\\xa3\\x88\\xdd\\xd0\\x36\\x6e\\x89\\x4e\\xaa\\x4b\\xb0\\x5d\\x73\\xa4\\x75\\xf1\\xb3\\x4c\\xa2\\x22\\xbb\\xce\\x16\\x85\\xb1\\xb5\\x6e\\x03\\x4e\\x43\\xb3\\xc4\\x0e\\x81\\xff\\xf7\\x96\\x82\\xc1\\x9f\\x32\\xaa\\x3f\\x2a\\x89\\x5c\\x07\\x09\\xf9\\xf7\\x4a\\x4d\\x59\\xd3\\xa4\\x90\\x29\\xec\\xfc\\xb2\\x83\\x08\\x2b\\x06\\x7f\\x1a\\x0d\\x95\\x05\\x75\\x0f\\xd8\\x67\\x32\\x19\\x99\\x48\\x42\\x49\\xef\\xa7\\x25\\xf5\\x2c\\x94\\xc7\\x59\\x62\\x06\\xa9\\x11\\xf3\\xf5\\x05\\xd6\\x3f\\x03\\x13\\x25\\x4b\\xd4\\x45\\xf0\\x5b\\xe3\\x99\\x6b\\x58\\xfe\\x18\\x19\\xaf\\x87\\x35\\x2e\\x7f\\x0a\\x2c\\xa3\\x20\\xd9\\xcc\\x00\\xa5\\xfe\\x77\\xad\\x41\\x64\\x0d\\x50\\xbe\\x84\\x36\"},\n{{0xc7,0x38,0xef,0x5f,0x09,0x35,0x28,0x1b,0xa6,0x25,0xfa,0x40,0x14,0xd4,0xa4,0xd0,0xbe,0x7e,0x28,0xfe,0xd7,0x79,0xa9,0xcf,0x65,0x8e,0x21,0xdb,0xa4,0x3c,0xeb,0xc1,},{0x95,0x79,0x9f,0xaf,0x70,0x6d,0x19,0x5e,0x54,0x4c,0x76,0xca,0xfd,0xdf,0x09,0xd0,0x2d,0x1b,0xea,0xfc,0x42,0xc9,0xd6,0xc9,0xea,0xd4,0xc1,0x84,0x55,0x87,0xd3,0x9e,},{0xf4,0x43,0x71,0xe6,0xc3,0x39,0x16,0x39,0xd4,0x57,0xed,0x14,0x64,0x81,0x84,0x80,0x94,0x11,0xe8,0x0a,0x32,0x01,0xf8,0x81,0x16,0x70,0xe5,0x00,0xfc,0xad,0x92,0xf3,0x00,0xaa,0xbf,0x7f,0xc6,0x8e,0x44,0x01,0x91,0xe8,0x81,0xd6,0xc3,0x47,0x4e,0xfd,0x6d,0x28,0xf0,0x9d,0xc4,0x43,0x12,0xfc,0xfc,0xb8,0x27,0x01,0xba,0x3c,0x29,0x0a,},\"\\x16\\x8d\\x0b\\xc5\\x59\\x8b\\xe0\\x2f\\x54\\x43\\xbf\\xe7\\xdf\\xb8\\x82\\x99\\x85\\xca\\x5d\\x28\\x2a\\xf9\\xcf\\x1b\\x14\\x82\\x60\\x2f\\x24\\x3d\\x48\\x6b\\xd8\\x2b\\xa0\\x39\\xa0\\x75\\x09\\x09\\xe9\\xb3\\xc7\\xd4\\xd5\\xf8\\xb8\\xba\\xf4\\x57\\x18\\xaf\\x03\\x11\\x85\\x4f\\x4d\\x1c\\x78\\x37\\xf3\\x1d\\x8e\\xe6\\x8d\\x35\\x58\\xe7\\xe5\\x1e\\x0c\\x64\\x6a\\x4a\\x63\\x75\\x96\\xee\\x90\\x05\\x7b\\x01\\xed\\x0a\\x17\\xda\\xa3\\x95\\x0b\\x81\\xab\\x47\\xae\\x8b\\x94\\xc1\\x7d\\x40\\x74\\x69\\x13\\xc4\\x6b\\xa1\\x47\\x8b\\xfc\\xa5\\x1b\\x16\\x76\\x28\\xfc\\x3e\\xe1\\xe2\\x2f\\x2f\\x19\\xd6\\xd8\\xda\\xf9\\x3d\\xf6\\x54\\x0c\\xed\\xb7\\xa8\\x59\\xd1\\xa2\\xba\\x59\\x11\\xba\\x71\\x76\\x6e\\x8b\\x7f\\xce\\x0c\\x0e\\x86\\x63\\x61\\x6d\\x01\\x80\\x69\\x7d\\x78\\xce\\x30\\x40\\xd4\\x38\\x13\\x19\\x82\\xf3\\xf8\\x11\\x2a\\xcc\\xa2\\x9a\\xe5\\x3e\\x53\\x9f\\xf8\\xc9\\xec\\x41\\x06\\xd1\\x32\\xf4\\x02\\x01\\x85\\x18\\x30\\x84\\x85\\xf2\\xaa\\x6c\\x9e\\x8d\\x1e\\x62\\xfe\\xd6\\x0c\\xb2\\x49\\x45\\x7d\\xb3\\x3c\\x6f\\xd1\\xfe\\x07\\x44\\x53\\x61\\xf0\\x81\\x94\\xa2\\xb5\\xa0\\x57\\xcb\\x03\\xcc\\x75\\x4e\\x5c\\x7d\\x4a\\x7e\\xea\\x53\\xa7\\xf7\\xd2\\x07\\xca\\xcc\\xa5\\xe6\\x8c\\xaf\\xa9\\x69\\xa3\\x52\\x1d\\xbb\\x81\\x03\\x99\\xa1\\x7f\\x32\\x8e\\xe7\\x67\\xcf\\x55\\x92\\x6b\\x2b\\xd5\\xf0\\x29\\x54\\x9d\\x3b\\x46\\x45\\x79\\xc4\\x26\\x55\\x26\\x53\\x98\\x47\\x2e\\x1c\\x77\\xcc\\x8d\\xd9\\xaf\\xf1\\x87\\xf7\\xac\\x34\\xdd\\x45\\x6a\\xce\\x99\\x9a\\x73\\x6e\\xcc\\xa6\\xd4\\x05\\xd4\\x92\\x2c\\x77\\x9c\\x60\\x0c\\x47\\xb8\\x4c\\x9c\\x1d\\xf5\\xe5\\xf8\\xed\\x3b\\x28\\x11\\xd3\\x51\\x33\\x91\\x13\\xf8\\x45\\x3c\\xca\\x4c\\x44\\x11\\x68\\x8c\\xb0\\x38\\x82\\x58\\xeb\\xbd\\x18\\x72\\xb8\\x36\\x10\\x04\\x22\\x49\\x49\\x4e\\xd5\\x60\\xd4\\xcd\\xa6\\xa6\\x84\\x55\\xd9\\x57\\xe8\\x06\\xdd\\x0b\\xdd\\x83\\x00\\x4c\\x4c\\xa8\\x07\\x74\\xb8\\xa0\\xa1\\x66\\x58\\x66\\xf1\\x70\\x85\\x01\\x4e\\xad\\xb3\\xea\\xe7\\x38\\x2f\\xa8\\x70\\xde\\xb2\\x9d\\xd8\\xc9\\x31\\xb5\\x30\\x19\\x62\\x57\\x40\\xe2\\x83\\x92\\xf3\\x85\\x75\\xc0\\xe2\\xa9\\xe5\\x04\\xfc\\x35\\xbd\\x95\\xdf\\x56\\x43\\x9a\\x89\\x82\\x30\\xa2\\x39\\x8c\\xd2\\x22\\x5c\\x76\\x6e\\xf3\\x6f\\x12\\xae\\x7e\\x49\\xb3\\x0a\\x9c\\x0a\\xad\\x46\\x9d\\x58\\x95\\xbb\\xf7\\x21\\xcc\\x0f\\xf5\\x1d\\x84\\x0c\\x80\\x2d\\x4a\\x7e\\xef\\xba\\x84\\xfe\\x52\\x05\\xa2\\xc2\\xf1\\x40\\x11\\x92\\x2d\\xde\\x56\\x14\\x56\\xf7\\x9e\\x61\\x61\"},\n{{0x5f,0xea,0x38,0x73,0x9c,0x61,0xca,0x83,0xbf,0x7b,0x4a,0xd1,0x75,0xa2,0x11,0x76,0x27,0xb9,0x71,0xa6,0x34,0xa3,0x05,0xa8,0x4f,0xa5,0x7f,0xec,0xb8,0x03,0x56,0x24,},{0xdd,0xd1,0x4b,0x0f,0xc0,0x67,0x68,0xd5,0x10,0x4c,0x50,0x76,0x4b,0xfd,0x3b,0x95,0x23,0x52,0xa3,0x40,0x07,0xc5,0x0d,0x5d,0xdd,0x22,0x4f,0xf5,0x1a,0xfc,0xdf,0x9c,},{0xf4,0xe2,0x74,0x82,0x3f,0x2c,0x39,0x6f,0x3a,0x32,0x94,0x86,0xaa,0x64,0x10,0xc5,0xff,0x19,0x26,0x6f,0x07,0x70,0xfd,0x04,0xfb,0x14,0xa7,0x60,0x2d,0x2b,0x69,0xa4,0xa2,0xb0,0x09,0x28,0xe9,0xe1,0xd9,0x23,0x89,0xf8,0x03,0x33,0x59,0xed,0x6f,0xb2,0x14,0x64,0x67,0xaa,0x15,0x4c,0xba,0x59,0x7d,0xec,0x6a,0x84,0x17,0x3f,0x8d,0x07,},\"\\x10\\x13\\xc6\\x0a\\x73\\x95\\x35\\x49\\xe5\\xed\\x10\\x5b\\xde\\xa1\\x50\\xb9\\x1e\\x60\\xec\\x39\\x20\\x0d\\x43\\x72\\x13\\x04\\xbf\\xc8\\xec\\x43\\x9d\\x39\\x60\\x96\\x13\\xc2\\xd8\\x78\\x04\\x4a\\x9d\\xa0\\x1b\\x26\\xd8\\x6d\\x6d\\x65\\xdb\\x93\\xd9\\x1a\\x13\\x7e\\x9c\\x48\\x08\\xa9\\x7d\\x4e\\xf2\\x86\\xa9\\x03\\xf3\\xf1\\x38\\x2c\\xc6\\xd1\\x29\\x42\\x16\\xb9\\xfa\\xfc\\x01\\x3c\\x86\\xb9\\xff\\x68\\xb5\\x5a\\x50\\xea\\x37\\x66\\xe6\\x1d\\xc1\\xce\\x38\\x34\\x8e\\x91\\xd6\\x2c\\xe7\\x32\\xc1\\x52\\xd7\\x66\\xb9\\x33\\x5c\\x68\\xd6\\xca\\xd7\\x7b\\xe2\\xb4\\xa0\\xcd\\x50\\xb9\\xa1\\xec\\x63\\x2b\\xa5\\x56\\x48\\xa6\\xe7\\xe1\\x1a\\x14\\xc0\\x68\\x53\\xc0\\x2a\\xec\\x48\\x09\\xbd\\x14\\x7a\\x5d\\xdd\\x9f\\xbc\\x3b\\xe9\\xf0\\xc8\\x15\\x8d\\x84\\xab\\x67\\x95\\xd7\\x71\\xb4\\x2b\\x18\\x14\\xa1\\x7a\\x3c\\x7a\\x6c\\xa0\\xf4\\xa8\\xf7\\xb3\\xa0\\xdb\\x1c\\x73\\xba\\x13\\xb1\\x64\\x00\\xdf\\xec\\xbd\\x03\\xd2\\x16\\x65\\x0e\\x4d\\x69\\x70\\x4a\\x70\\x72\\x46\\x44\\x4d\\x57\\x91\\xfa\\x27\\x37\\x52\\xf5\\x9c\\xb5\\xae\\x9f\\xd4\\x16\\xa5\\x18\\x66\\x13\\xd6\\x6a\\xfd\\xbd\\x1c\\xe6\\x91\\xa8\\x7b\\xd7\\xd8\\xb6\\x71\\x90\\xe9\\xac\\x68\\x70\\x62\\xa0\\x80\\xd2\\xec\\x39\\xfe\\x76\\xed\\x83\\x35\\x05\\x82\\x51\\x87\\x28\\x39\\xe8\\x5e\\xb6\\x2f\\x18\\xec\\xe1\\x87\\xca\\xba\\x55\\xb5\\xf7\\xd5\\xed\\xca\\xde\\x01\\xcd\\xc5\\x43\\xcc\\x67\\x7e\\x50\\x23\\x8b\\x89\\xc5\\x63\\x5a\\xd5\\xc8\\xfc\\x22\\x0f\\x5e\\x0b\\xe1\\xbc\\x66\\x7d\\x20\\x98\\x97\\x53\\xa6\\xd6\\x16\\xfa\\x69\\xf8\\xb1\\x29\\x40\\xb8\\xca\\x9e\\x2c\\x48\\x57\\x71\\x32\\xd8\\x69\\x1b\\x05\\x37\\x79\\xa1\\x52\\xcb\\xac\\xff\\x3b\\x8b\\x1b\\xd7\\xaf\\x69\\x2e\\x56\\xc7\\x3b\\xba\\xe4\\x63\\x47\\x76\\xcf\\xc2\\x13\\xc9\\x9b\\x9a\\xe4\\x58\\xdf\\x1b\\xef\\xc8\\xc8\\x77\\x74\\x26\\x64\\xb0\\xa0\\xbb\\x1f\\x69\\x15\\xc8\\xda\\xe3\\xb3\\xf5\\x5d\\xd7\\x5a\\xba\\x6a\\x3b\\xcc\\x41\\x76\\xb4\\xe3\\xba\\x03\\xd0\\xc1\\xc0\\x4c\\x3c\\x64\\x08\\x77\\x8b\\x2b\\x8e\\x5a\\x8a\\x3e\\xb5\\x2e\\xd3\\x2a\\x74\\x28\\xc0\\x0a\\x98\\xa5\\x89\\xd8\\xca\\x93\\x90\\xa2\\x10\\xf4\\xa7\\xac\\x00\\x4f\\xa1\\xfe\\x4c\\x6d\\xa6\\x94\\xf1\\x22\\x76\\xe3\\x20\\xb4\\x1b\\x0b\\x59\\xf7\\x5d\\x26\\x4a\\x39\\x6d\\x45\\x0b\\x63\\x1a\\xb3\\x53\\xf1\\x61\\x27\\x09\\xe7\\xa2\\xe6\\xa5\\x0d\\x01\\xcb\\x11\\x0e\\x53\\x04\\x05\\x46\\xdd\\x3b\\x1e\\x11\\xd2\\x57\\x32\\x81\\x3a\\xa7\\x6b\\xe5\\xe8\\x1f\\xcf\\x7a\\x57\\x73\\xf6\\x81\\x5b\\xbd\"},\n{{0x60,0xf9,0xa1,0x4c,0xce,0x5d,0x43,0xfd,0x9a,0xab,0x4e,0xe8,0xcc,0x83,0x79,0xd5,0x75,0x94,0x91,0x52,0x69,0x3b,0xf2,0x9a,0x67,0x90,0xb0,0x35,0xe4,0x2a,0x44,0xde,},{0xbd,0x4a,0x70,0x74,0x0d,0x5a,0xca,0xbe,0x49,0xf9,0xa2,0x15,0x20,0x82,0xfa,0x20,0x25,0x33,0x0e,0x64,0x40,0x43,0x7f,0x1d,0x04,0x7f,0x31,0x3d,0xe4,0x90,0xdc,0xa5,},{0x72,0xf5,0x4b,0xb8,0xbd,0xd1,0x7e,0x9e,0x42,0x2c,0xd3,0x39,0x63,0x1d,0xd3,0x9f,0x57,0x35,0x50,0x15,0xd4,0xcb,0xd1,0x5a,0xca,0xb7,0x54,0x2e,0xfd,0x78,0x4a,0x32,0x1c,0x1f,0x61,0x25,0x76,0x4c,0x0d,0x15,0x40,0x45,0xb3,0x2e,0x70,0xdc,0x2e,0x03,0xfb,0xfe,0x11,0x17,0x46,0x8a,0xc3,0xe7,0x31,0x27,0xb5,0xfa,0xc8,0xd4,0x21,0x02,},\"\\xdd\\x7f\\x44\\xf9\\xeb\\x72\\x8a\\xb4\\x8d\\xe5\\x4e\\xcd\\xe6\\xb6\\x18\\x4b\\xd5\\xdd\\xd8\\x70\\x75\\x45\\xa0\\x12\\x9f\\x2e\\x90\\x59\\x05\\xb5\\x5d\\x3e\\x7f\\xd5\\x7e\\x28\\x48\\x5d\\x25\\x81\\x48\\xf6\\x60\\x5e\\x23\\x77\\xd5\\xb2\\x67\\xd2\\xea\\xf4\\xcd\\x4b\\x46\\xe4\\x54\\x96\\x22\\x19\\x86\\x82\\x32\\xb6\\xf4\\x1f\\x88\\xa7\\x97\\xf9\\xcd\\xd5\\xc3\\x9a\\xda\\x51\\xa6\\x41\\x21\\x4f\\xb9\\xdb\\x2c\\x2a\\x9b\\x5a\\x5b\\x16\\xe3\\x03\\x57\\x53\\x18\\xb6\\x25\\xcc\\xa9\\x70\\xb7\\x43\\x48\\x72\\x79\\x02\\xa1\\xcf\\x26\\x8b\\xd1\\x6e\\x10\\x71\\x13\\x16\\x1c\\x8c\\xbc\\x99\\x30\\x3c\\x2b\\x9f\\x23\\x55\\x41\\xa7\\xb3\\x1e\\x43\\x31\\x20\\xfe\\xba\\x14\\xfe\\xbe\\x4b\\xcb\\x0f\\x5b\\x93\\x6c\\x7e\\xdd\\xdd\\x0e\\xcf\\xc7\\x2c\\x8d\\x38\\xf6\\x4c\\xdb\\x6c\\xfc\\x29\\x10\\xbc\\x29\\xa5\\x21\\xc5\\x0a\\x51\\xab\\xcb\\xc2\\xaa\\xbf\\x78\\x9d\\xe8\\x22\\xcb\\x04\\xf5\\x72\\x8f\\xee\\x15\\x3d\\xd5\\x50\\x1b\\x2d\\xb5\\x9c\\x59\\xf5\\x0c\\xab\\x17\\xc2\\x92\\x16\\xd6\\x69\\x51\\x01\\x9e\\x14\\x5b\\x36\\xfd\\x7e\\x84\\x1b\\xfb\\xb0\\xa3\\x28\\x55\\x4b\\x44\\xdd\\x7e\\xf5\\x14\\x68\\xc3\\xd5\\xb7\\xd3\\xa1\\xf7\\xb9\\xde\\xf5\\x8d\\x8c\\xf9\\xd9\\xbc\\xaf\\xe9\\x2c\\x86\\xcf\\x6d\\x61\\x19\\xe9\\x8d\\xba\\x6f\\x38\\xea\\x57\\xe3\\x22\\xdd\\xc9\\xc2\\x19\\x8d\\x4b\\xbc\\x3b\\x94\\xea\\x13\\x29\\xdb\\x0d\\x45\\x8e\\x01\\xc7\\x08\\x1b\\x33\\x92\\x5a\\x3e\\x28\\x7f\\x59\\x9a\\x85\\x8c\\x50\\xc3\\xa8\\xf1\\x8c\\xc2\\xaa\\x63\\x4d\\xf6\\x3e\\x7f\\x10\\xe4\\x03\\xad\\xea\\xb2\\xf4\\x1d\\xb5\\x57\\x87\\x90\\xc3\\xb4\\xf0\\x41\\xa8\\xb7\\xa4\\xf6\\x9c\\xd6\\xe0\\x62\\x15\\xdf\\x82\\x01\\xae\\x5b\\x3e\\x1d\\x1d\\x25\\xa0\\xa3\\x9b\\xfc\\x3d\\x04\\x1a\\x2f\\x98\\x21\\x3e\\xf4\\x14\\x12\\x45\\x79\\x2a\\x76\\xf0\\x6d\\x4d\\xe2\\x5f\\x64\\x67\\xa0\\xe5\\x6f\\x2f\\x5c\\xf6\\x94\\x00\\xd2\\x21\\x17\\xde\\x7b\\x46\\x14\\x95\\x54\\xb7\\x0c\\x75\\xb9\\xf9\\x94\\x84\\xa4\\xf6\\xf0\\x35\\xad\\x3f\\x10\\xe3\\x75\\x3c\\xb1\\x4f\\x4f\\x39\\x8d\\xcf\\x6a\\x64\\xd1\\x0c\\xf6\\xc4\\xfa\\xc0\\x7c\\x91\\x19\\x3c\\xc0\\xf5\\x4f\\x0d\\xe5\\x8c\\x63\\x43\\xe9\\xca\\xaa\\x6b\\x4f\\x47\\x5e\\xf9\\x1a\\x59\\xe0\\x83\\xf9\\xf2\\x11\\xf5\\xbc\\x8e\\x7e\\x45\\x16\\xb4\\x5c\\xf0\\x6b\\xf5\\x0b\\xeb\\x8f\\xc4\\xab\\x57\\x9d\\x86\\xd4\\xa4\\x19\\x0e\\xea\\xc7\\x48\\xd0\\x6e\\x08\\x52\\xc4\\xb9\\xba\\x8c\\xfc\\x50\\xdd\\x0a\\x03\\x7a\\x7b\\xad\\x7f\\xad\\x55\\xaf\\x30\\x9a\\x5f\\x13\\xd4\\xc9\\x1e\\xd3\\xe0\"},\n{{0xa3,0x90,0x53,0xc5,0xc5,0x8b,0xf3,0x1d,0x46,0x2b,0x27,0xa6,0x20,0xb0,0xb3,0x7b,0x80,0x52,0xc6,0xb1,0xc4,0x10,0x2b,0x61,0x45,0x66,0x3a,0xa1,0x5e,0x97,0x87,0x18,},{0x36,0x42,0xac,0x2a,0x32,0x80,0xdc,0xe5,0x2a,0xd8,0xdf,0xcf,0xd3,0x70,0x94,0x36,0xed,0xc4,0xe7,0xe4,0xae,0x1b,0x45,0x2d,0x9b,0x22,0x07,0x80,0xb0,0x86,0x79,0xfa,},{0xf7,0x38,0x3e,0x96,0x6c,0xb2,0x30,0x9d,0xee,0xdf,0x86,0x01,0x00,0x18,0x3a,0xae,0xfa,0xc6,0x72,0xca,0x16,0xd5,0x41,0x9c,0xd6,0x42,0x2c,0xa7,0x0e,0x16,0xb3,0x97,0x6f,0x5f,0x16,0x5a,0xfc,0x27,0x86,0x11,0x7c,0x86,0x82,0x34,0xba,0x11,0x09,0xed,0xe0,0x31,0xf8,0x97,0x9b,0x50,0xe5,0x67,0x35,0x8b,0xd4,0xf8,0xbd,0x95,0x82,0x02,},\"\\xf6\\x55\\x40\\xd3\\xab\\xeb\\x1e\\xe5\\xea\\x98\\x70\\x62\\xc1\\xb5\\x79\\x51\\x6d\\x3c\\x29\\xc3\\x9c\\xbc\\x6b\\x09\\xd6\\x0e\\x18\\xfe\\x27\\x4c\\x2b\\xef\\xe0\\xf5\\xfe\\x7d\\xbd\\x57\\xc2\\xd5\\x83\\x52\\x29\\xbb\\x75\\x4e\\xc4\\x34\\x13\\x94\\x76\\x57\\x76\\xd6\\xa9\\x17\\x8c\\x4e\\x6a\\x31\\x2c\\xd7\\x4b\\xdb\\xac\\xa0\\xe8\\x82\\x70\\x62\\x8c\\xd8\\x41\\x00\\xf4\\x72\\xb0\\x75\\xf9\\x36\\x92\\x83\\x01\\x22\\xf0\\x0f\\x9b\\xd9\\x1a\\xc5\\x82\\x83\\x6c\\x8b\\xfa\\x71\\x4a\\xa4\\x8e\\x97\\x70\\x03\\x55\\x6e\\x1b\\x69\\x6d\\xf3\\x28\\xef\\x58\\x4f\\x41\\x3f\\x8a\\xb6\\x14\\x76\\x06\\x99\\xc4\\xd1\\x47\\xc3\\xee\\xa1\\xda\\x04\\x35\\x83\\x5c\\x9b\\xf7\\xad\\x54\\x60\\x6f\\x02\\x13\\xeb\\x74\\xa1\\xb4\\x76\\x14\\x15\\x06\\xae\\x2c\\xd1\\x24\\xcd\\x51\\xd6\\x6e\\x7e\\x7e\\x57\\x95\\x60\\x57\\x63\\x05\\xc5\\xfb\\xe8\\x43\\x0b\\xe3\\xeb\\xeb\\xaa\\xcb\\xa3\\xf9\\x98\\x9d\\xd7\\xd1\\x99\\xf5\\xa4\\x55\\xa5\\x0c\\xdb\\x37\\x55\\x03\\x7e\\x1a\\x70\\x67\\x4a\\x4f\\xef\\x40\\xb4\\xa3\\xaa\\xf7\\xbd\\x3c\\x95\\xb1\\xab\\x41\\xbb\\x20\\x62\\x11\\xc3\\xa1\\x27\\x6d\\x3e\\x37\\xd8\\xa3\\xa5\\xc3\\xd5\\xd0\\xf3\\x6e\\xf5\\xb4\\xf3\\xde\\x26\\xb7\\xf2\\x0f\\x6b\\x29\\x00\\x71\\x6d\\xcc\\x22\\xab\\x73\\x4e\\xba\\xf1\\xe8\\xd0\\x00\\x20\\xe5\\xf0\\x19\\x55\\x16\\x53\\xb9\\xc2\\xf7\\x0a\\x40\\x38\\xdf\\xb2\\xf1\\x2d\\x25\\xd6\\xd8\\x4e\\x79\\x07\\x3a\\x65\\x48\\xfe\\x15\\xe4\\x82\\x8f\\xe5\\xde\\x83\\xac\\x3d\\x8d\\x98\\xb7\\xda\\xf9\\x27\\x10\\x48\\x2c\\x37\\xf7\\xbd\\x24\\x31\\xa8\\x11\\x4c\\x61\\x37\\x65\\x7b\\xb1\\x77\\x88\\x2d\\x8a\\x3c\\x76\\xba\\xbf\\x1c\\x67\\x1a\\x70\\x55\\x36\\x5f\\xe9\\x08\\x66\\x16\\x7a\\x2d\\x1d\\xbc\\x87\\x0b\\xe8\\x3b\\x36\\x01\\xf0\\x9d\\x4a\\x31\\x7a\\xe2\\x54\\xca\\xc9\\xf9\\x8d\\xcc\\x7a\\xea\\xd9\\x22\\x4c\\xd9\\xc9\\xd8\\xa2\\x00\\xab\\xc8\\x0a\\x2d\\xd1\\x08\\xaf\\x28\\xfd\\x46\\xad\\x70\\x80\\xae\\x74\\x1b\\x50\\x05\\x4b\\x9b\\x9a\\x92\\x01\\xef\\xb7\\x83\\x8b\\xc4\\xc5\\xc2\\xcc\\x3d\\x76\\xba\\x0f\\xcc\\x49\\xc4\\x6e\\x79\\x2c\\x26\\x29\\x2b\\x7d\\x03\\x12\\xaf\\xf9\\x55\\xa9\\xf8\\xed\\xf0\\xc6\\x96\\xa7\\x0a\\x61\\x4f\\x35\\x53\\xad\\x38\\x69\\xbf\\xde\\x48\\xd2\\x6a\\x4d\\x36\\x7b\\x6c\\xec\\x05\\x7e\\x62\\xa4\\xe5\\x48\\x55\\x4b\\x48\\xb5\\x3e\\xcd\\xa7\\x90\\xba\\x7a\\x0a\\xb2\\xe3\\xde\\x58\\x7b\\xdc\\x22\\xb0\\x2f\\x59\\x47\\x63\\x4d\\x73\\x09\\x9f\\x54\\x7d\\xb2\\x2e\\xc1\\xbb\\xf8\\x23\\x43\\xf9\\xa2\\xca\\x38\\xbc\\xe4\\xeb\\x59\\xbe\"},\n{{0xe0,0xc2,0x9d,0xf4,0xde,0x45,0xc4,0x75,0x39,0xe0,0x89,0x6b,0x3a,0x59,0xbc,0x3d,0xe6,0xb8,0x02,0xfd,0x14,0xdb,0xdc,0x9f,0x25,0xe7,0x17,0xac,0x82,0xc3,0x28,0xf3,},{0xa6,0x90,0x02,0xb0,0xf5,0xef,0x35,0x4c,0xe3,0xb2,0xd6,0xb8,0xd8,0xba,0x70,0xab,0x77,0x84,0x32,0xb2,0x2f,0x14,0x4d,0xc9,0xc2,0xeb,0x92,0xd9,0x9d,0x99,0xdd,0x2a,},{0xbb,0x3b,0x8c,0x5c,0x27,0x59,0x1f,0xd8,0xb9,0xc5,0xba,0x48,0x9d,0x6b,0x6e,0xe5,0xb0,0xfb,0x4a,0x7b,0x0d,0xe5,0x1f,0x16,0x39,0xaf,0xc6,0x73,0xd0,0xe5,0xf7,0x5e,0x31,0x3a,0xa7,0xe1,0xd0,0x00,0x90,0x81,0xdb,0xca,0x74,0x35,0xb6,0x87,0xcc,0xd1,0x2f,0x64,0xf7,0x4a,0x38,0x6e,0x77,0x2b,0x9e,0x24,0x78,0x1b,0x92,0x5c,0x8c,0x0c,},\"\\x6a\\x37\\xcb\\x4c\\x74\\x9c\\x58\\x35\\x90\\xc8\\xd8\\x49\\xbc\\xe3\\xfa\\x65\\x7f\\x10\\x00\\x91\\x90\\xca\\xd9\\xbe\\x41\\xed\\xe1\\x9b\\xf2\\xfd\\xb3\\xc5\\x62\\xa6\\x10\\x1f\\x27\\xbd\\x37\\xf2\\x23\\xca\\xb1\\x3c\\xed\\x24\\x5a\\x1c\\xed\\xf8\\x52\\xf5\\x51\\xf8\\x57\\xaa\\xd9\\x72\\x7f\\x62\\xc9\\x67\\xc0\\xa9\\x21\\xdf\\x11\\x6f\\x48\\xa8\\x0a\\x60\\x40\\xb3\\xc7\\x23\\xab\\x5c\\xb5\\x94\\xc4\\x50\\x7a\\x3d\\x20\\xcd\\x60\\x51\\x4e\\x22\\x16\\x4a\\x82\\xb7\\x4f\\x19\\xdc\\xfd\\xd8\\x3c\\x57\\xbc\\x36\\x52\\x37\\x55\\x17\\x41\\x4a\\xf5\\xd1\\x8e\\x0a\\x64\\xcc\\xab\\x36\\x69\\x97\\x68\\xd0\\x7c\\xf4\\x0b\\x70\\x63\\xa8\\x3e\\x43\\xd5\\xf6\\x07\\x96\\x4b\\x1b\\xf0\\x84\\x0a\\x45\\xad\\x50\\xab\\xf8\\x3d\\xbc\\x84\\x9f\\x40\\xe5\\xb4\\xcf\\xb6\\xa3\\x34\\x7b\\x29\\xfe\\xc5\\x07\\x74\\x04\\x6a\\x4b\\x50\\x04\\x10\\x32\\xaa\\x4d\\x56\\x7e\\x85\\x64\\xb3\\xee\\xd1\\x64\\x20\\x40\\x68\\x2d\\xd8\\xae\\x7d\\x71\\x79\\x28\\x6c\\xf6\\xe1\\x85\\x3d\\xc8\\x7d\\x27\\xc3\\xe9\\xe6\\x0f\\xa4\\x7c\\xf8\\xcb\\x2d\\xa0\\x18\\x1d\\x53\\xee\\xc4\\x06\\x14\\xb0\\x73\\x31\\xa4\\xfb\\x70\\x28\\x08\\x6d\\x0b\\x1c\\xe2\\xe1\\x11\\x5b\\x73\\xa1\\x62\\xc5\\x27\\xbd\\xd7\\xca\\xb5\\x33\\x5b\\x86\\x3d\\x10\\x8b\\xe0\\x47\\xbd\\xbc\\xa1\\x12\\xcc\\x6e\\x77\\x6b\\xb4\\x53\\xc3\\x17\\x31\\x43\\x88\\xbb\\x96\\x53\\xef\\xb4\\x44\\x4b\\xf5\\xcf\\x1e\\xc8\\xda\\x23\\xb7\\x11\\xba\\x71\\x79\\x6c\\x0a\\xe0\\x2b\\xa1\\xdc\\xc8\\x38\\x45\\x50\\x78\\xc3\\x89\\x7f\\x07\\xe9\\xe1\\x3b\\x76\\xe4\\x92\\x74\\xc2\\xe2\\x07\\x50\\x6b\\x00\\xa0\\xb5\\x58\\x88\\x3a\\xa1\\x22\\xb6\\x67\\xdb\\x9d\\x67\\x05\\x08\\x60\\x6a\\x3f\\x54\\x32\\x06\\x36\\xcd\\x19\\xf9\\x73\\x91\\x7f\\xb1\\x87\\x5f\\x43\\x63\\xe2\\x20\\xf1\\xe1\\x23\\x98\\xcc\\x6a\\xfd\\x79\\x09\\x47\\x43\\x33\\x84\\x56\\x81\\x3a\\x58\\x26\\xad\\x3f\\x1a\\xba\\x7c\\xd7\\xbe\\xab\\x1f\\xe1\\x83\\x85\\x9c\\x0c\\xc9\\xef\\x40\\xa5\\xea\\xb9\\x12\\xca\\xf5\\x15\\xa8\\xd4\\xc3\\xb9\\x3d\\x64\\x1b\\x7a\\xb3\\xe7\\x6b\\x16\\xc1\\x29\\x71\\xac\\xe8\\x8f\\xf3\\x3e\\x5a\\x1e\\xd9\\xb4\\x4e\\x45\\xdb\\x8f\\x30\\x85\\xdb\\xf0\\x70\\xb2\\x56\\xb0\\xd7\\x51\\x2e\\xe1\\x06\\x94\\x32\\x60\\x3d\\x73\\x09\\x5d\\xb8\\x74\\x9c\\xa5\\x47\\x96\\x3b\\xd7\\x1a\\x8a\\x68\\x4a\\xb8\\x51\\x6b\\x14\\x6c\\x41\\x87\\x17\\x63\\x86\\xaf\\xdf\\x6c\\xb1\\x36\\x8a\\x3d\\xd8\\xfc\\xb2\\xcf\\xff\\x77\\x05\\x6a\\xaf\\x78\\x23\\xf8\\x00\\xb2\\x66\\xac\\xce\\x72\\xbf\\x64\\x3c\\x6d\\x0c\\x28\\xf0\\xab\"},\n{{0x19,0x8b,0x5f,0xd1,0xc0,0x38,0x27,0xe0,0x99,0x4a,0xd5,0xbf,0xee,0x9b,0x5b,0x7b,0xe9,0x96,0x6c,0x9c,0x3a,0x26,0x7e,0x4d,0x74,0x30,0x34,0x37,0x67,0x40,0x3c,0x67,},{0x66,0x82,0xc6,0xf1,0xa8,0x66,0xb4,0x9b,0x2f,0x8e,0xe9,0x7f,0x2e,0x53,0x2f,0xa9,0x16,0x66,0xbf,0x38,0xda,0x1b,0x4d,0xd6,0x55,0x43,0xa1,0x77,0x77,0x94,0xcb,0xee,},{0xf4,0x54,0xf3,0x5b,0x18,0x53,0x8f,0x87,0x7e,0x5d,0x61,0x4a,0x76,0xb5,0x27,0x6a,0x27,0xfc,0x0b,0x43,0x3f,0x21,0x5d,0xc4,0xe9,0x63,0xb3,0xf0,0x47,0x69,0x4c,0x78,0x0c,0x51,0x5c,0x6e,0xf6,0xfe,0x2d,0xb4,0xb0,0x09,0x00,0x9b,0xc2,0x73,0x3a,0xec,0x4f,0xd4,0x6e,0x61,0x53,0x57,0xcc,0x0b,0xcc,0x9f,0x1f,0x7f,0xc2,0x1e,0x3c,0x02,},\"\\x3f\\xda\\xa1\\x5c\\x46\\xf2\\x51\\x43\\xdb\\x97\\x20\\x79\\xd7\\x01\\x3c\\x7f\\x69\\xa1\\x36\\xf4\\x5f\\x3f\\x6b\\xa2\\xce\\xd8\\xb8\\x28\\x46\\x8e\\xb3\\xda\\xa6\\xb5\\x0b\\x4f\\x8d\\x33\\x80\\xfe\\xc6\\x4a\\x03\\x43\\xbe\\x11\\x6f\\x6f\\x83\\xb6\\xee\\x64\\xcc\\x4c\\x1b\\x1d\\x08\\xd5\\x4f\\xd4\\x20\\x29\\xe4\\x28\\x5c\\xfc\\x6c\\x6d\\xd5\\xcd\\x18\\x1a\\xb5\\x33\\xff\\xcd\\x41\\x1f\\x23\\xa1\\x00\\x3d\\xa9\\x4e\\xc9\\x34\\x0e\\x2e\\xc7\\x11\\x99\\xd6\\x78\\x54\\x0d\\x51\\x82\\xe1\\x39\\xff\\xcb\\xc5\\x05\\xa1\\x70\\xb8\\xf0\\x7f\\x4a\\x7e\\x69\\x4c\\xa9\\x2f\\x58\\x32\\x0c\\x0a\\x07\\x85\\x64\\xce\\x9d\\xe9\\x9b\\x0f\\xa8\\xe6\\x6b\\x0d\\x82\\x2e\\x46\\x7a\\x5a\\xeb\\x83\\x56\\x79\\x96\\xa4\\x8b\\x89\\xdb\\x25\\xca\\xde\\x64\\x57\\x79\\x4e\\x54\\x14\\xd6\\x7e\\x9d\\x4a\\xb7\\xcd\\x6c\\xc2\\x05\\x8b\\xb7\\xa5\\x13\\xab\\xd7\\x09\\xf4\\xca\\xf2\\x4b\\xb6\\x7c\\xe1\\xc0\\x3a\\xb6\\x2d\\xbd\\xfe\\x30\\x9e\\xc7\\xdb\\x0f\\xa3\\xea\\x7a\\xae\\x82\\x36\\xf2\\x59\\xb9\\x22\\xd4\\x53\\x61\\x15\\xa6\\x3b\\xc8\\x9a\\xcb\\x20\\x51\\xd0\\x9e\\x73\\x1c\\xbb\\x0d\\xf1\\x57\\xd9\\xd3\\x45\\xbd\\x91\\x09\\x97\\x3c\\x2b\\x59\\x4f\\x14\\x8e\\xfc\\x6f\\x33\\x77\\xde\\x51\\x63\\xb7\\xf6\\x98\\x69\\xff\\xef\\x85\\x3e\\xae\\xfe\\xb4\\x02\\xe2\\x35\\x29\\x59\\x4f\\xbd\\x65\\xca\\x05\\xfe\\x40\\x62\\xc5\\x29\\xd8\\xe3\\x21\\xab\\xc0\\x52\\x00\\xca\\xc1\\xe8\\x39\\xe8\\x7b\\x1f\\xd3\\xfd\\xf0\\x21\\xd6\\x8c\\xbb\\x3a\\x41\\x42\\xb6\\x9c\\xc3\\xaf\\x6f\\x63\\x2e\\xdd\\x65\\xb8\\x3f\\x5a\\xa4\\xcb\\x17\\xda\\x5b\\x6b\\xa3\\xfc\\x03\\xed\\xb1\\x7c\\x2a\\x3c\\xb5\\xb0\\x48\\x36\\xe7\\x66\\x0e\\x63\\xc8\\xa0\\x48\\x3e\\x24\\x39\\x83\\x37\\x1d\\xfa\\x98\\x39\\xf9\\x16\\x4a\\xd4\\xda\\x0d\\x59\\x53\\x65\\x5e\\x3a\\x95\\x18\\xe1\\x36\\xda\\x74\\x57\\x37\\xc7\\x92\\x43\\xc3\\x55\\xfc\\x12\\x5c\\xbd\\xcc\\x76\\xae\\xc9\\x22\\x16\\x84\\x6c\\x45\\x74\\xf4\\xf7\\xf2\\x98\\xbc\\xde\\x54\\xfd\\x24\\x44\\xad\\x30\\x25\\x95\\x5c\\x10\\x03\\x15\\xde\\x5a\\x4e\\x27\\xc3\\x33\\xa0\\x02\\x84\\xb2\\xf7\\x02\\xfd\\xd3\\xde\\x22\\xac\\x6c\\x24\\x0d\\xbc\\x14\\xbf\\x71\\xe6\\x2d\\x13\\x1b\\x62\\xf2\\xdb\\x99\\x24\\x73\\xf2\\xf9\\x13\\xf6\\x0c\\x91\\x6e\\xcf\\x57\\xdf\\x5f\\x3f\\x02\\x1f\\xb3\\x30\\x83\\x43\\x95\\xb7\\x94\\x72\\xca\\xff\\x19\\xfc\\xfa\\x0a\\x27\\x17\\x95\\xc7\\x6d\\x69\\xb4\\xdb\\x3f\\x85\\xb8\\xd2\\xe5\\xc3\\x44\\x19\\x65\\x48\\x4d\\xcc\\x39\\xab\\xa5\\x9b\\x70\\x12\\x74\\xf7\\xfc\\x42\\x52\\x46\\x85\\x60\\x69\"},\n{{0x43,0x92,0xf7,0xd4,0xfb,0xd6,0x8f,0xe1,0x54,0xe4,0xba,0x38,0xad,0x52,0x07,0x61,0x2a,0x06,0x48,0x55,0x60,0x56,0xc3,0x9a,0xc1,0x16,0xad,0x46,0x8f,0x89,0xbd,0x2d,},{0xcb,0xea,0xef,0x41,0xac,0xac,0x02,0xbf,0x1f,0x78,0x0c,0xe9,0x34,0xaa,0xbd,0x63,0x13,0x64,0xb3,0x69,0x56,0x7b,0xe1,0xbe,0x28,0xe3,0x90,0x6f,0x9d,0xb1,0x20,0xfa,},{0x86,0xe7,0xcc,0xf0,0x6e,0x79,0x36,0x2d,0x40,0xcd,0xb7,0xfb,0x75,0xa9,0x89,0x78,0xbb,0xd3,0x34,0xa1,0xdb,0x75,0x90,0x36,0x7d,0x60,0x84,0x9b,0xd5,0x3e,0x2f,0xb1,0xa4,0xbd,0xae,0x59,0x0d,0x1f,0x47,0xb5,0x49,0x0d,0x87,0x02,0xe7,0xc1,0xa8,0x72,0x68,0xb8,0xee,0x9d,0xb6,0x12,0xde,0x7b,0xdc,0x2e,0x38,0xfa,0x6d,0xeb,0x7e,0x05,},\"\\xcf\\x17\\x09\\xdc\\x9a\\x08\\x67\\xee\\x90\\x87\\x21\\xb1\\x36\\xcb\\x93\\xa8\\x42\\x29\\xe8\\x3b\\x46\\x20\\x47\\x77\\xca\\x81\\x94\\xd0\\x8b\\x7a\\x3c\\xa9\\xc9\\x12\\xeb\\x24\\x3e\\x5b\\xda\\xbf\\xee\\xd3\\x52\\x34\\x9d\\x20\\xbe\\x80\\x1b\\x72\\x2a\\xf0\\x89\\x22\\x38\\xe7\\x2e\\xdf\\x19\\x0e\\x63\\x61\\xf5\\x75\\x72\\x78\\x1a\\xd3\\xc2\\x59\\x0b\\x19\\x73\\x57\\x64\\x1c\\x80\\x53\\x83\\xba\\xa1\\xd4\\x97\\x2f\\x76\\xc6\\x54\\x48\\x53\\x2c\\x11\\x08\\x34\\xa0\\xba\\xa8\\xf4\\x88\\x63\\xe1\\x66\\xb7\\x06\\x65\\x37\\x08\\xcd\\x40\\x57\\xd3\\xa4\\xf9\\xfc\\xb2\\xce\\xb4\\x12\\x00\\x01\\x27\\x7d\\x38\\xc4\\x38\\x47\\xd8\\x22\\x82\\x2b\\x77\\x7c\\x2b\\xb4\\xda\\x40\\x15\\xa1\\xc2\\x4d\\x41\\x6d\\x50\\x62\\xa8\\x71\\x84\\x91\\xd8\\x55\\xaa\\xa5\\xdb\\xf5\\x57\\x9c\\x16\\x4d\\x8e\\x52\\x4a\\x9f\\x2f\\xa3\\xf2\\x2e\\xb0\\x98\\x61\\xff\\xe6\\xad\\x65\\x9f\\xe3\\x6e\\xb4\\x04\\x31\\x22\\x2c\\x22\\xd7\\x13\\x7a\\x6c\\xab\\xca\\x8d\\xb7\\x86\\xe3\\x9d\\x81\\xf6\\x61\\xaf\\xde\\x4e\\x39\\x58\\x9b\\x4d\\xb4\\xd3\\xc5\\x1c\\xa5\\x35\\x90\\xa1\\x4e\\x11\\x5d\\x0a\\xfc\\x3a\\x87\\x7b\\x83\\x9a\\x96\\x38\\xbe\\xce\\x80\\xc3\\x2c\\x19\\xe5\\x1b\\x75\\x32\\x02\\x48\\x45\\xf7\\x6c\\xfe\\x9b\\xfb\\x2a\\xc0\\x51\\x30\\xf6\\x75\\x8b\\xf7\\xfe\\x99\\x3a\\xa9\\x3a\\xa2\\x72\\xe4\\xe6\\xbd\\x0c\\x75\\xc1\\x40\\x99\\xd4\\x3e\\x65\\x2a\\x22\\x3e\\x5b\\xcd\\x64\\xc3\\x62\\xd4\\xb8\\xf4\\xb9\\x5e\\x01\\x6f\\x93\\x50\\xc7\\xfa\\x74\\xe6\\x53\\x52\\x5d\\x08\\x01\\x15\\x58\\xb2\\xc6\\xe9\\xbf\\x4f\\xdf\\x9d\\xbd\\x5e\\xf9\\xb0\\x9b\\xbc\\x84\\x6a\\xfc\\x2b\\xcb\\xc8\\x6c\\x4c\\xcc\\x31\\x5f\\x6d\\x1c\\xcd\\x48\\x9b\\x0c\\xf8\\xed\\x0d\\x93\\xf2\\xf5\\x32\\xa4\\x26\\x26\\x5c\\x59\\x0b\\xa3\\xa5\\x90\\x23\\x34\\x7d\\x81\\x9d\\x9b\\x28\\x1e\\xf8\\x53\\x10\\xb0\\x53\\x16\\xd4\\x6c\\x8a\\x8c\\x03\\x65\\xd0\\x68\\xa8\\x70\\x86\\x64\\xea\\x4d\\x77\\xac\\x0c\\xd1\\x50\\xa6\\x5a\\x56\\x58\\x6b\\xab\\xd3\\x4b\\x74\\x36\\x5b\\xb8\\xfe\\x3e\\x61\\x87\\x26\\x22\\x84\\xd6\\x44\\x32\\xe4\\xc8\\x1e\\xa4\\xc0\\xe5\\x7c\\x1d\\x71\\xae\\x98\\x0c\\x7f\\x4d\\x1d\\x87\\x10\\x32\\xe1\\x88\\xbb\\xf9\\xd1\\x75\\x8c\\xdc\\x1d\\xff\\x98\\x9f\\x2d\\x12\\x88\\xfe\\xf4\\xe2\\x05\\xe9\\x9e\\x7c\\xbf\\x2c\\xc3\\x24\\xb8\\xc9\\x30\\x46\\xf4\\x76\\xc5\\x9d\\x3d\\x0a\\x59\\xdb\\x6f\\xe3\\x73\\x82\\xdc\\x79\\xc5\\xec\\x16\\x05\\x6a\\xb3\\x93\\x4a\\x52\\xf7\\xd2\\x88\\x0d\\x04\\x71\\xa3\\x77\\xb6\\xa8\\xae\\x84\\xd5\\x6a\\xc2\\x2d\\x1d\\x54\\x55\\x1c\"},\n{{0x0b,0xea,0x98,0xab,0xe7,0xd6,0x3f,0x15,0x83,0x90,0xee,0x66,0x8a,0xa0,0x50,0xe8,0x4a,0x25,0xd2,0x89,0x3e,0x49,0xfc,0x83,0xf0,0x79,0xf9,0xbb,0xa6,0xa5,0x5a,0x75,},{0x22,0x19,0x2e,0xc0,0xd3,0x2e,0xf9,0x83,0x56,0x65,0xa6,0x1b,0xc8,0x8b,0xcf,0x4e,0x16,0x04,0x63,0x79,0x21,0x15,0x2c,0x11,0x6a,0xf5,0x03,0x36,0x5b,0xf6,0xbe,0x42,},{0x7e,0xb3,0x13,0x9b,0x88,0x0f,0xdf,0x66,0x37,0x6a,0x20,0x90,0x81,0x88,0x40,0x04,0x97,0x67,0xc8,0x37,0xf3,0xad,0x00,0x36,0xb1,0x41,0x66,0x70,0x52,0xb3,0x36,0x09,0x81,0x7c,0xa5,0xe2,0x40,0xed,0x8c,0xdf,0x3c,0xcf,0x3a,0xee,0x29,0x27,0x45,0x34,0x59,0x4d,0xb0,0xb4,0xcc,0xc5,0xc6,0xe5,0xbb,0xa3,0x28,0x0b,0x87,0x3f,0x29,0x01,},\"\\xc1\\x78\\xe3\\x8d\\x4e\\x83\\xed\\x2b\\xe5\\x7c\\xe1\\xc3\\xab\\x64\\x25\\x3a\\x81\\x71\\xe6\\x10\\x00\\x81\\x81\\xfb\\xfc\\x6d\\x75\\x22\\x69\\xf7\\xf1\\xc5\\xa9\\xec\\x62\\xcb\\x27\\xf1\\x9a\\xd9\\x9c\\xe1\\xf5\\x11\\x6a\\x36\\x3d\\x96\\xfd\\xc5\\xa4\\x2f\\x35\\x8b\\x6d\\xbe\\x7c\\xab\\xdf\\xc9\\xf6\\x07\\x18\\xe4\\x01\\x2c\\x1b\\xb1\\xf8\\x42\\xc5\\x56\\x08\\x11\\xba\\x83\\x74\\xa0\\x63\\x77\\x47\\xff\\x92\\xea\\xc2\\x1c\\xa6\\x5d\\xde\\xaf\\x43\\xe9\\x98\\x9b\\x7d\\xe2\\xd4\\x32\\x52\\x0a\\xfe\\xe3\\x64\\xec\\xfb\\xa4\\xda\\x66\\x9a\\xd4\\x89\\x3d\\x0b\\xf6\\x9f\\x9f\\x81\\xe7\\xdf\\x69\\x65\\x7b\\xe2\\x2b\\x92\\x06\\x97\\x45\\xf2\\x16\\xc2\\x42\\xcc\\xd4\\x6d\\x02\\xd3\\x56\\x16\\xe1\\x6c\\x75\\x5e\\x0e\\x37\\xf9\\x61\\xa6\\xf3\\x63\\x77\\x52\\x53\\x4f\\x6d\\xfa\\xb8\\x80\\x5a\\xb7\\x59\\xa0\\x32\\xa4\\xe7\\xe4\\xc8\\x19\\x53\\x32\\x5a\\x2f\\x68\\x6b\\xb6\\x9a\\x02\\x9c\\xe4\\xe0\\x3b\\xec\\xb3\\x60\\x56\\x37\\xc5\\xa6\\x5b\\x52\\xe3\\x31\\xc2\\x6c\\x92\\x6e\\xd4\\x71\\x1a\\x50\\x4d\\x37\\x33\\xbb\\x53\\xc9\\x7b\\x80\\xea\\xfe\\x4e\\x75\\xdd\\xd9\\xf4\\x15\\x36\\x28\\x88\\xc3\\xd4\\xd3\\x7b\\xae\\x0e\\x63\\xfa\\x11\\xbf\\x75\\x56\\x66\\x43\\x7d\\x72\\xf5\\x8c\\x91\\xd7\\xa2\\xf8\\xcb\\x61\\x9b\\x76\\x20\\xa0\\x70\\xb2\\x6b\\x18\\xb4\\xd5\\x01\\x84\\xc5\\x81\\x87\\x12\\x11\\x0e\\x36\\xd3\\xe2\\x83\\x0f\\x6a\\x85\\x76\\xba\\x57\\xf9\\xcc\\xcb\\x8f\\xff\\x40\\x28\\xbf\\x8e\\xf9\\xcb\\x81\\x48\\x25\\xbb\\xca\\x82\\x7d\\x64\\x95\\x47\\xbf\\x6f\\x2b\\xef\\x93\\x17\\x04\\xca\\x7f\\x6d\\xf1\\x5f\\x78\\x01\\x55\\xed\\x46\\xea\\xa7\\xca\\x7d\\x72\\xe2\\x24\\x34\\xca\\x04\\x83\\xbf\\xb2\\xf7\\x90\\x2d\\xc7\\x87\\xf6\\x17\\xeb\\x9b\\xd4\\x1e\\xd4\\x52\\x0a\\xdf\\xd4\\x30\\x94\\x8c\\x71\\x08\\x05\\xa7\\x3c\\x1b\\xa5\\x49\\x2e\\x96\\x48\\x4c\\x4b\\xaa\\x7d\\xa2\\x4c\\x74\\x35\\xc4\\x6a\\x05\\x2b\\xf3\\x51\\x5d\\x33\\xe4\\x2d\\xce\\xf5\\x17\\xca\\xa4\\x5f\\x36\\xc8\\x79\\x12\\x10\\x78\\xc6\\x88\\xdd\\x10\\xd7\\x66\\x56\\xa1\\x19\\x76\\x2b\\x6a\\x83\\x41\\x36\\xfa\\x1f\\x8a\\x64\\x32\\x24\\xb9\\x22\\x4c\\x54\\x3c\\xf0\\x47\\x0b\\x3f\\x8e\\xe0\\x17\\xd6\\x20\\xdb\\xdc\\xc8\\x4d\\x98\\x51\\x54\\xe9\\xd1\\xae\\x80\\xe5\\xf1\\x43\\x87\\xb8\\x8a\\x0f\\x6a\\x5c\\x35\\x90\\x5a\\xa5\\x7f\\xb3\\xab\\xeb\\x0e\\xa6\\xec\\xcd\\xdb\\x00\\x44\\x74\\x63\\x3c\\xc4\\x83\\xb5\\x6b\\x8a\\x8e\\x20\\xe8\\xf2\\xe0\\x9e\\x97\\x9a\\xa0\\x98\\x93\\x08\\x78\\x75\\xc6\\xb1\\x17\\xb5\\xf1\\x38\\x47\\xad\\x8f\\xc0\\x56\\x04\\xc4\"},\n{{0xc2,0x58,0x78,0xb0,0xd1,0xe0,0x92,0x5c,0x8f,0x5f,0x04,0xa1,0xe5,0x79,0x90,0x80,0x96,0x3c,0x41,0x3a,0x13,0x99,0xc1,0x18,0xaf,0xb1,0x68,0x7c,0x79,0x7f,0x48,0x39,},{0x13,0xac,0x2c,0xad,0x41,0x90,0x8c,0x25,0x5f,0x67,0x1f,0x93,0x93,0x4a,0xe5,0xd7,0xbe,0x32,0x53,0x46,0x72,0x5c,0x8b,0x40,0xdc,0x39,0xea,0x80,0xd7,0x0d,0xdf,0x34,},{0x06,0xf5,0x51,0x98,0xb4,0x19,0x19,0x14,0xb7,0x43,0x06,0xf3,0x8e,0x38,0x13,0x16,0xea,0xc4,0x0b,0x5b,0x5a,0xdb,0x8a,0x31,0x24,0x64,0xf6,0x71,0x75,0xec,0xf6,0x12,0xe0,0x14,0x7b,0x1c,0xef,0x46,0xc2,0x51,0x87,0x50,0xa5,0x60,0x6b,0xb0,0x3b,0xc6,0x46,0x7b,0xb9,0x32,0x15,0x14,0xf6,0x9d,0xcb,0xeb,0xce,0x8f,0x69,0x05,0x80,0x02,},\"\\x68\\x56\\xcc\\x71\\x44\\xb6\\xbd\\xdc\\xc4\\xb5\\x89\\x54\\xd1\\xa2\\xe7\\x10\\x1d\\x65\\x84\\xb5\\xd5\\xe7\\x19\\xa0\\xae\\xa0\\xfb\\xbd\\xf2\\x21\\xc2\\xa2\\xaa\\xcb\\xac\\xdc\\x40\\x20\\xc5\\xc8\\xce\\x68\\x1f\\xf7\\x38\\x1a\\xcd\\x60\\x7b\\x0f\\x52\\x39\\x69\\x23\\x35\\x70\\x06\\x55\\xbe\\x2d\\x94\\xc5\\x3d\\x7b\\x51\\x48\\xe9\\x2a\\x2b\\xc1\\x63\\x38\\xc2\\xf4\\xc1\\xa7\\xd1\\xc5\\x95\\xaf\\x62\\x2c\\x24\\x0c\\xe5\\x79\\xa5\\xe0\\xf5\\xb6\\x51\\xbf\\x56\\x25\\x18\\xce\\xc8\\xaa\\x2c\\xe4\\xb4\\xaa\\xdb\\x1f\\x2f\\xda\\x6c\\xf6\\x29\\x5b\\xc3\\x78\\x03\\xb5\\x37\\x7d\\xab\\x65\\xc9\\xb9\\xa2\\x94\\x9f\\xdd\\x49\\xbf\\x9d\\xdc\\x8f\\x96\\xd2\\x60\\xff\\x95\\x1b\\xf8\\xe8\\xcc\\xf9\\x82\\x7e\\x68\\x69\\xc4\\x4b\\xfd\\x97\\x33\\x58\\xce\\xfd\\xb0\\x10\\xdb\\x5e\\x1f\\xe5\\xdb\\xd9\\xf5\\xd2\\xb2\\xca\\x39\\x3c\\x17\\xd4\\x46\\xf6\\x37\\x05\\x9e\\x69\\x2d\\x7a\\x91\\xaa\\xdc\\xc7\\x68\\x9f\\x5f\\x9e\\x1b\\x30\\x52\\x17\\x5d\\x9b\\x6b\\x20\\x8f\\x90\\x26\\x78\\x7f\\xdb\\x66\\x78\\x3f\\x45\\x37\\x2a\\x24\\x94\\x6b\\x1b\\xd1\\x68\\x7b\\xf0\\xcf\\xcc\\x81\\x74\\xeb\\xe4\\xd3\\x2e\\x43\\x28\\x4f\\xc7\\x8d\\x78\\x44\\xde\\x0f\\xa2\\x2e\\x20\\x65\\xe0\\x75\\x28\\xba\\xab\\xaf\\x01\\x5c\\xb3\\x4d\\x62\\x9c\\x35\\x96\\xad\\x04\\x0d\\xe3\\x1c\\x56\\x20\\xeb\\x26\\x6d\\xef\\xa7\\x53\\x3a\\xc0\\x40\\x19\\x98\\xe5\\x67\\x3a\\x75\\x43\\x65\\x04\\x7d\\xeb\\xfc\\xf7\\xe1\\x37\\xa2\\x0d\\x16\\xcd\\xd6\\xa5\\x52\\x19\\x82\\xf4\\x44\\xcf\\xc3\\x42\\x93\\x97\\xc6\\x41\\xbd\\x7e\\x74\\xa7\\x70\\xbb\\x11\\xfc\\xb2\\x94\\x83\\xe3\\x37\\xba\\xe5\\x16\\x9e\\xe8\\x2d\\xa9\\xa9\\x1a\\xdf\\x3a\\xf6\\x7c\\xd8\\x14\\xc2\\x82\\x5d\\x29\\x01\\x8e\\xf0\\x35\\xea\\x86\\xf8\\xde\\x4c\\x75\\x63\\xaa\\xf6\\x6e\\x0c\\x75\\xd1\\x7c\\xa6\\x8f\\x49\\xf0\\x75\\x8e\\xc2\\xd9\\xc5\\x17\\x9d\\x01\\xaa\\xed\\x7d\\x45\\x15\\xe9\\x1a\\x22\\x2b\\x0b\\x06\\xfb\\xde\\x4f\\x07\\xa7\\xd9\\xdf\\x2d\\xe3\\xbc\\xae\\x37\\xca\\x2c\\x84\\x60\\xc2\\xa6\\xb3\\x74\\x9e\\x9b\\xda\\x36\\xd0\\x8e\\x66\\xbc\\xc3\\x56\\xb3\\x90\\x43\\x4b\\x4a\\x18\\xcf\\xa4\\x5a\\xf5\\x57\\xdc\\xa3\\xd8\\x57\\xff\\x3a\\xd3\\x47\\xcf\\xb0\\x7e\\x23\\x58\\xc2\\xac\\xfd\\x5c\\xd5\\x3b\\x3b\\x0e\\xa2\\xa4\\x1e\\xe5\\xc0\\x80\\x2f\\xd4\\x73\\xdb\\x5f\\x30\\x52\\x63\\x34\\xda\\x41\\xeb\\x4b\\xc7\\x51\\x83\\x83\\x89\\x8a\\x0b\\x75\\x07\\xad\\x4c\\xa2\\x89\\xd6\\x6c\\x5e\\x2e\\xb7\\x5c\\xf2\\x55\\xdf\\xf3\\x12\\xcb\\x1e\\x04\\xee\\xbe\\xb4\\x7f\\x29\\x30\\xb9\\x0d\\x5e\\x00\\x2e\\xb0\"},\n{{0x0b,0x2e,0xc6,0x27,0x63,0xf6,0x87,0x59,0x31,0x35,0xda,0x19,0x61,0xef,0x29,0xa2,0x88,0x08,0x96,0x96,0xd9,0x44,0xb2,0x65,0xa5,0xf9,0x68,0x93,0xcd,0x2d,0x82,0x25,},{0xc1,0xe2,0x34,0xfa,0x8b,0xc9,0x6d,0x26,0x8e,0x7a,0xad,0x02,0x8b,0x03,0xf0,0xa9,0x11,0xb6,0x97,0x71,0x5d,0xb3,0xa2,0x1c,0x2f,0xc7,0xdf,0x48,0xec,0xda,0x88,0x75,},{0xff,0x70,0x1f,0x34,0xb3,0x59,0x4d,0xe3,0xb8,0x00,0x45,0xf4,0x29,0xe5,0xe3,0x2d,0xd8,0x8d,0x60,0x51,0xd4,0x19,0x5f,0x16,0x85,0xbe,0x78,0x37,0x66,0xe8,0x01,0x19,0x36,0x8f,0x56,0xb3,0x74,0x97,0x25,0xb9,0x13,0xf1,0x22,0x3f,0x87,0xfb,0x0f,0xb2,0x4d,0x9d,0xfa,0x08,0x41,0xd6,0xa0,0xe2,0xeb,0x1f,0xdd,0xf7,0x75,0xc2,0xd2,0x05,},\"\\xa8\\x34\\x34\\xc6\\x86\\x93\\xd5\\xfc\\xed\\x91\\xbd\\xa1\\x02\\x13\\xfc\\xd5\\x0c\\x48\\x92\\x0b\\x90\\xce\\xe9\\xb7\\x3a\\x9c\\x61\\x08\\x1a\\x09\\x74\\x93\\x3f\\x4f\\xdb\\x0a\\x67\\xe6\\x71\\xf8\\x35\\x1b\\x0e\\xd5\\xec\\x0f\\xe7\\xb5\\xfb\\x0c\\x87\\x58\\x6f\\xe5\\x82\\xff\\xb1\\xbf\\xa2\\xdb\\x5f\\xce\\xdd\\x33\\x02\\x42\\x82\\x34\\xb2\\xbb\\x0e\\x72\\x6d\\xed\\xf4\\x5b\\x13\\xa7\\x0c\\xd3\\x5a\\xb3\\xe2\\x99\\xd1\\x3f\\x34\\x50\\x35\\x08\\x27\\x8c\\x44\\x58\\xee\\xa5\\xb7\\x35\\x1b\\x05\\x83\\x6b\\xda\\xd5\\xb0\\x5f\\x60\\xe4\\x45\\xfc\\x65\\x73\\x7a\\xe2\\x7d\\x2e\\x52\\xdf\\x9c\\x39\\xe5\\xda\\x02\\x86\\x39\\x2d\\x08\\xff\\xf7\\xec\\xb7\\x06\\x68\\x20\\xfc\\x90\\xfc\\x8a\\x44\\xd5\\x61\\x65\\x61\\xc5\\x0b\\x52\\x71\\x47\\x02\\x30\\x2b\\xca\\x58\\x74\\xde\\x85\\xdb\\xa0\\x45\\x04\\x5f\\x9f\\x0e\\x60\\x4e\\xb8\\x6d\\x6d\\x7f\\xbd\\x77\\x5f\\x72\\xea\\x49\\x3b\\x2c\\x4e\\xf7\\xc3\\xbe\\x16\\xdb\\x2c\\xa7\\xe4\\xd8\\xbd\\x79\\xeb\\x20\\xcf\\xb5\\xf0\\xf6\\xf0\\x53\\x36\\xb7\\x5c\\xc8\\x6d\\x21\\x9f\\x3b\\x8f\\x2e\\x91\\xba\\x7d\\x52\\xb6\\x4f\\xdd\\x6a\\x66\\x64\\xf0\\x4f\\x2f\\xba\\xb7\\x58\\xcd\\xf9\\x84\\x16\\x86\\x91\\xc3\\x2f\\x53\\xe8\\x61\\x6b\\x49\\xf7\\x6a\\xb7\\xb1\\x92\\xb9\\x00\\x90\\x30\\x82\\xcc\\x89\\x65\\x6a\\x97\\x05\\x80\\x4c\\xc9\\xb9\\x28\\x8a\\x3e\\x42\\x17\\x09\\x84\\xf8\\xdc\\x45\\x4e\\x08\\x64\\xb9\\x34\\x16\\x72\\x68\\x6a\\x17\\x8c\\x06\\x00\\x50\\x17\\x8a\\x36\\xc6\\xd9\\x06\\xb2\\xce\\x07\\x0d\\x8f\\xaa\\xac\\xd9\\xa5\\x8c\\x79\\x4a\\x5e\\xa4\\x10\\x8b\\x4a\\x48\\x5c\\x65\\x81\\x1c\\x2d\\xca\\x2e\\xe7\\xbb\\x10\\xbf\\xff\\xf7\\x5d\\x45\\x86\\xb9\\x90\\xf4\\x37\\x63\\xa1\\x6f\\xbc\\x0b\\x48\\xae\\x1f\\xaf\\xb0\\x8a\\x9a\\x36\\xfa\\x43\\x26\\x84\\x5d\\xba\\x5b\\xa2\\xfb\\xd3\\x2b\\xbf\\x66\\x50\\x5c\\x5e\\x86\\x57\\xed\\x01\\x07\\xe3\\xe1\\x61\\x44\\xef\\x31\\xfa\\x6a\\xae\\x72\\xe7\\x74\\x09\\x74\\x83\\xf5\\x48\\x0a\\xa4\\x55\\x40\\x56\\x8f\\xd0\\x8c\\xba\\x0d\\x57\\x77\\x68\\x00\\x4f\\x58\\xae\\x9b\\x95\\xbe\\x37\\x4e\\xd7\\xf0\\x29\\x9f\\xe7\\x21\\x27\\x5e\\x47\\x6e\\x0b\\x9a\\xb7\\x2d\\xc0\\x6e\\xa3\\x28\\x38\\x4e\\x39\\xbf\\x3a\\xc3\\x31\\xc6\\x25\\x48\\x43\\x12\\xcd\\x9b\\x06\\xb1\\x5a\\x29\\x54\\xd3\\x3e\\x7a\\xab\\xa6\\xbe\\x22\\x61\\x88\\x6c\\xa8\\x11\\xdb\\x96\\xb1\\x14\\x3d\\x06\\xdd\\x6e\\x0f\\x3c\\xba\\x7a\\x1a\\xe9\\xb9\\x4e\\xaf\\x67\\x77\\x1b\\xb2\\xd2\\x4e\\x2f\\x94\\xde\\x9c\\x47\\x0f\\xcd\\xe7\\xbf\\xdb\\x32\\xf4\\x10\\x19\\x8b\\x5a\\xa9\\x69\\x8e\\x32\"},\n{{0x89,0x60,0xd7,0xbe,0xe8,0xc6,0xb3,0x9c,0xa5,0x93,0x4d,0x7c,0xdd,0xd1,0x6f,0x16,0xb3,0x66,0x3e,0x6e,0x03,0xe8,0x33,0xc0,0x57,0xe2,0x18,0x1e,0x45,0x97,0xcb,0x68,},{0x43,0x40,0x90,0x95,0xd4,0xf5,0x0f,0x5e,0xdd,0xbd,0x5c,0xd4,0xd2,0x01,0x22,0x98,0xcb,0x41,0xa4,0x0e,0x99,0x49,0x2d,0x5a,0x2d,0xb0,0x8b,0xe5,0x37,0x7e,0xa1,0x83,},{0x72,0x13,0xdd,0x4a,0x79,0xfd,0x54,0xde,0xc0,0xc5,0x48,0xef,0x42,0xe6,0xca,0xe0,0x15,0xbe,0x77,0x80,0x2b,0xf5,0x15,0xcd,0x25,0x82,0x76,0x8f,0x72,0xf5,0x63,0xeb,0xb2,0xda,0x36,0xaf,0x4a,0xae,0xac,0x56,0xbb,0xff,0xc9,0x93,0x2c,0x2e,0x24,0xec,0x95,0xda,0xff,0x00,0xa5,0xf7,0xa0,0xac,0xab,0x9c,0x8b,0xd3,0xc2,0x3b,0xb4,0x0c,},\"\\x30\\x8d\\x84\\xc7\\xa5\\xf7\\x86\\xe5\\x63\\xe5\\xc1\\xea\\x57\\xaa\\xb5\\xe5\\x55\\xc0\\x09\\x97\\x74\\x9d\\x15\\xae\\xe3\\x54\\x39\\xef\\xa6\\x45\\xda\\x2c\\x39\\x67\\x70\\x31\\x15\\xc6\\xc6\\x3e\\xd7\\xf9\\x47\\x85\\xc5\\x47\\x8f\\x38\\x46\\x7b\\x86\\xe7\\x62\\x6e\\x8f\\xff\\xa4\\xd5\\x1a\\x2d\\xc4\\x5e\\x6d\\xf2\\xa3\\x5c\\xec\\x99\\x55\\x5e\\xab\\xc9\\xf7\\xa9\\x3e\\x2e\\x2b\\x68\\x94\\x59\\xb4\\xe0\\xc9\\x2b\\x35\\x15\\x62\\xc4\\x17\\xb1\\x99\\x71\\x13\\x75\\x4e\\xa5\\x9e\\x4a\\x91\\x51\\x07\\x28\\xff\\x30\\x71\\xa2\\xbb\\xd1\\xf4\\x65\\xa6\\x87\\xf6\\x7d\\xae\\x95\\x56\\x15\\x03\\x1a\\x8a\\xd5\\x51\\xfe\\x73\\x8a\\x26\\x0b\\xbc\\x44\\x6b\\x48\\xdc\\xa1\\xd9\\x79\\x05\\x1a\\xb5\\x84\\x08\\x32\\xe1\\x9d\\x47\\x3b\\x66\\x62\\x17\\xa9\\x18\\x39\\x80\\xd6\\xb2\\x7e\\x3d\\x3c\\x76\\xd9\\x36\\x65\\xba\\x23\\x93\\xe6\\xab\\x1a\\x42\\xc3\\x90\\x4d\\x40\\x25\\x93\\x2d\\x60\\x1a\\x20\\x2a\\x59\\xa4\\xc4\\x9f\\xdb\\x77\\xf0\\xe0\\x28\\x68\\x24\\x7d\\xe5\\xaf\\xdf\\xaa\\x1b\\x89\\x42\\x08\\xac\\x00\\xd7\\x7c\\x6b\\xb5\\x4c\\x6b\\x2a\\x73\\xa4\\x76\\x57\\xe4\\x4c\\x85\\x13\\x79\\x63\\xb5\\x75\\x21\\xaf\\x20\\x97\\x62\\x48\\xeb\\x26\\x14\\x82\\x14\\x7c\\xdf\\x7a\\x14\\x5c\\x36\\x43\\xe2\\x9e\\x05\\x88\\xbf\\xda\\xe6\\xa0\\x82\\x90\\x48\\x53\\xce\\x5a\\x10\\xd2\\x49\\x70\\xeb\\xdf\\xb7\\xf5\\x9d\\x5e\\xfd\\xd6\\xa5\\xe7\\xe0\\xd2\\x87\\x97\\x1c\\x84\\x6a\\xcd\\x54\\xd8\\x4d\\xd4\\x54\\x68\\xa4\\x11\\x0b\\xab\\x6e\\xf8\\xd9\\xa5\\xb4\\xb2\\x42\\x67\\x88\\x90\\x0b\\x7e\\x1a\\xdf\\xe0\\x62\\x43\\x44\\xf9\\x8f\\xe5\\x9e\\xf8\\xa1\\xe6\\xc4\\x05\\xb3\\x44\\xeb\\x97\\xbb\\x20\\x47\\x73\\x74\\x4b\\x6a\\x2d\\x8c\\x6e\\x65\\xd1\\x7c\\xea\\x07\\xde\\x03\\xb7\\xf0\\xfe\\x49\\xf1\\xa5\\x5c\\x33\\xd5\\xf1\\x5c\\xe5\\x5d\\xf7\\xc9\\x56\\x1b\\x25\\x1c\\x6a\\xc8\\x07\\xa9\\x25\\x53\\xe1\\xce\\x91\\x70\\x12\\xdc\\xcf\\xd6\\x9e\\x7d\\xbd\\x03\\x8c\\x7e\\xee\\xca\\xe9\\x86\\x23\\xf1\\x8f\\xbb\\x65\\x0e\\x22\\x18\\xa0\\xbc\\x0f\\xff\\x43\\xa7\\x5a\\x11\\x64\\x48\\xbb\\x73\\x62\\xf5\\x27\\xee\\x6b\\xc8\\xe1\\x07\\x61\\xcc\\xcf\\x9b\\xcf\\xc0\\xd0\\x00\\xf2\\x12\\x7b\\x4c\\xc1\\x92\\x11\\xd0\\x95\\xa0\\xbd\\xaa\\x4e\\x4b\\xe4\\x51\\x9e\\x6c\\x84\\x45\\xea\\xb9\\xb3\\x14\\x4a\\x45\\xca\\xb9\\x99\\x61\\x35\\xbf\\x7f\\x75\\xa7\\x8d\\x22\\x27\\x59\\x00\\xf4\\xce\\x1f\\x0a\\x9e\\xac\\x13\\x63\\x64\\x10\\x30\\x62\\x89\\x3d\\xad\\x43\\x90\\x42\\x2b\\x77\\xe5\\xf5\\xd1\\xd9\\x4d\\x70\\x29\\xc6\\x09\\x7b\\x35\\xca\\x64\\xa7\\xa4\\x76\\xfc\\xc7\"},\n{{0xef,0x6b,0x9b,0x51,0xfd,0x4f,0x85,0x86,0xca,0x62,0x65,0x8e,0x04,0x2f,0xc0,0x9a,0x83,0xb9,0x43,0x03,0x35,0x26,0xff,0xc3,0x26,0xc6,0x5e,0xb3,0xa5,0xfb,0x59,0x4b,},{0x1d,0x6e,0xec,0xe8,0x05,0xe0,0x88,0x78,0x21,0x87,0x6b,0x7e,0xd6,0xed,0x5b,0x07,0x14,0xd6,0x46,0xfb,0xec,0xda,0x38,0x76,0x4f,0x94,0xc8,0x15,0x5e,0x61,0xd0,0x04,},{0x71,0xd1,0x71,0x07,0x1c,0xd0,0xfe,0xa1,0xc6,0xa9,0xcf,0xad,0x1f,0x7f,0xd8,0x35,0xe8,0x5f,0xf9,0x06,0x77,0x8b,0xc6,0x34,0x5a,0x4d,0xec,0x43,0x13,0xec,0xc2,0xbf,0xf7,0x55,0xa7,0x17,0xeb,0xd9,0x12,0xa5,0xe0,0x28,0x40,0xac,0x07,0x38,0x42,0xf9,0xbf,0xca,0xa5,0x89,0x13,0xe2,0x60,0xe3,0xc7,0x33,0x93,0xd3,0x66,0x85,0xc7,0x0e,},\"\\xa8\\xf3\\xf1\\x96\\x65\\xde\\x23\\x90\\xd5\\xcc\\x52\\xb0\\x64\\xb4\\x85\\x12\\x73\\x67\\x74\\x86\\xd8\\xf5\\x56\\x3b\\xb7\\xc9\\x5f\\xa9\\x4d\\xb3\\x35\\x61\\x61\\xee\\x62\\x22\\x21\\xf1\\x0c\\xbb\\x1f\\xa1\\x95\\xaa\\xc7\\x23\\x1e\\xa7\\x16\\xd7\\x4b\\x46\\xb3\\x7b\\xc8\\x5a\\x70\\xdb\\xa3\\xdf\\xaa\\x16\\x75\\x21\\x7b\\x35\\x11\\x99\\xe7\\x4a\\x97\\x10\\x28\\xf7\\x29\\xb7\\xae\\x2b\\x74\\xae\\x8c\\x6b\\x3a\\x06\\x79\\xc3\\xe3\\x29\\x68\\x02\\x84\\x4a\\xd5\\xbb\\xa3\\x43\\xf6\\xf9\\xf7\\xc4\\x66\\x1b\\x4a\\x29\\xb4\\x4f\\x17\\xe8\\x9e\\x11\\x4f\\xb2\\x20\\xe9\\x84\\xcd\\x98\\x0e\\x94\\xc3\\xd2\\xbf\\x98\\x73\\xe0\\x60\\x5c\\x92\\x30\\x17\\x44\\xa3\\x03\\x5e\\xf0\\x46\\xba\\xd2\\x66\\x6b\\x5c\\x63\\xeb\\xec\\xf9\\x3c\\xc1\\x40\\x29\\x19\\x46\\xc0\\xfa\\x17\\x03\\x40\\xce\\x39\\x50\\x92\\xde\\xed\\x79\\x84\\x13\\x52\\xfb\\xfe\\xe0\\x3a\\x92\\x7e\\xb4\\x58\\xf2\\xa6\\x33\\xed\\x32\\x71\\x65\\x2f\\x5b\\x0f\\x99\\x60\\xcd\\xf9\\x01\\x5d\\x56\\xfd\\xab\\xd8\\x9e\\xe7\\x1e\\x25\\x9a\\xf6\\xeb\\x51\\x4b\\x4c\\x1b\\xd4\\xa6\\x66\\xf5\\xb5\\xa3\\x5c\\x90\\xf3\\x5b\\x14\\x94\\x57\\xaf\\x29\\x44\\xdd\\x0a\\xa8\\xd9\\xb5\\x42\\x28\\x3a\\x7e\\x54\\x12\\xb7\\x75\\xe4\\x21\\xd2\\x12\\x6f\\x89\\xbe\\xbc\\x3c\\xa3\\x7f\\x73\\x07\\x16\\x21\\xf1\\x32\\x1e\\xee\\x52\\xe9\\x69\\x04\\x86\\xa3\\x3c\\xd7\\xff\\x9c\\x99\\x67\\xfb\\x65\\xee\\x4e\\x90\\x7b\\x6b\\x85\\x22\\x11\\x47\\x3d\\x21\\xe9\\xd9\\x1a\\x93\\x36\\x2a\\xc7\\x61\\x76\\x0e\\x8c\\x7b\\xbe\\xa4\\x86\\xc3\\xd6\\x05\\xf9\\xe1\\x1b\\x86\\x13\\x68\\x19\\xa7\\xab\\x3f\\x32\\xf1\\x3f\\xfc\\xa1\\x68\\x17\\xfe\\xd1\\x97\\xff\\x88\\x0b\\x4d\\x6d\\x9a\\x80\\x8f\\x7f\\x87\\x87\\x63\\xa0\\x45\\x72\\x8d\\xf7\\x2f\\xaa\\xa9\\x63\\xe4\\xcb\\x1c\\x09\\xcc\\x2b\\x2d\\xa9\\x20\\x28\\x0c\\x83\\x66\\xb7\\xd1\\x8b\\xf8\\x97\\x2d\\xf1\\x6c\\xc2\\x34\\x48\\xfb\\xe6\\xb2\\xe6\\xe1\\x6c\\xbb\\xf0\\x74\\x51\\x29\\x85\\x40\\x53\\x18\\x96\\x37\\xce\\x11\\x5d\\x23\\x98\\x43\\x3c\\x15\\xd6\\xf1\\x16\\xa2\\x05\\x33\\x48\\x24\\xaf\\x28\\x2f\\xa7\\x58\\x49\\x4c\\x47\\x86\\x8e\\xa8\\xf4\\xdf\\xad\\xc7\\x05\\xe8\\x61\\xaa\\xd2\\xeb\\x8e\\xf3\\xdb\\xbe\\xd2\\xa4\\x56\\x9e\\x15\\x83\\x4a\\x76\\x0c\\xce\\x0c\\xbb\\xc8\\x4b\\x28\\x9e\\x77\\x9b\\x98\\x83\\x46\\xb9\\x06\\x9c\\x74\\x4c\\x97\\xab\\x2b\\xf4\\x2b\\x08\\x6d\\x2f\\xb0\\xa4\\x11\\xf5\\xce\\x99\\xf0\\x81\\x9a\\x30\\x86\\xb4\\xfe\\x9d\\x96\\xc7\\xc9\\x90\\x8d\\xce\\x28\\xdf\\x1d\\xdd\\x30\\xf3\\x50\\x1d\\xda\\xf7\\x81\\x10\\x73\\x4f\\x9d\\xcd\\xfe\\xc3\"},\n{{0xba,0xd4,0x7c,0xd4,0xbd,0x89,0x84,0x90,0x67,0xcc,0xe1,0xe6,0x3c,0x3d,0x91,0xe9,0xb7,0x87,0xae,0xa8,0x58,0x4e,0xdb,0x07,0xf3,0x45,0x1e,0xf6,0x7e,0x7b,0xd7,0x9b,},{0xab,0x0c,0xe9,0xba,0x1d,0x29,0xbd,0xfb,0x85,0xa0,0xe6,0x6b,0x76,0xb5,0xe2,0xe0,0x5f,0xf7,0x32,0x56,0x9e,0x43,0x75,0xcc,0xd7,0x50,0x98,0xe9,0xe7,0x1d,0x17,0xbf,},{0xe5,0x72,0x4a,0x1d,0xd4,0x63,0xa9,0x7d,0x12,0x22,0xc5,0x18,0xc4,0x92,0x5d,0x32,0x22,0x02,0xd1,0x0f,0x04,0xcd,0x07,0x8e,0x77,0x1e,0x0f,0xb3,0x95,0x1d,0xbc,0x14,0x93,0xa2,0x34,0x46,0x07,0x54,0xc3,0xaa,0xe3,0xdf,0x93,0x00,0x8d,0xbb,0xfb,0x31,0x0c,0x99,0x59,0x2b,0xed,0xe7,0x35,0xa4,0xae,0xab,0x03,0x23,0xa1,0x21,0x0d,0x0e,},\"\\xb5\\xa6\\x1e\\x19\\xe4\\x86\\x3e\\x0b\\xb5\\xf3\\xfa\\xb6\\xc4\\x97\\x0d\\x87\\x85\\x96\\x89\\x55\\x21\\xfa\\x1e\\x7f\\x67\\x8c\\xaf\\xa2\\xde\\x53\\x32\\x2f\\xd4\\x58\\xa9\\x8a\\xa6\\xe3\\x58\\x05\\x42\\x9f\\x65\\x12\\x91\\xb9\\x5b\\xd9\\x95\\x0e\\x15\\x5f\\x3a\\xda\\x0b\\x60\\x91\\x59\\xa4\\xab\\xda\\x59\\x90\\xc0\\x4b\\xc2\\xe7\\x64\\x42\\x2f\\xb4\\x9e\\xf4\\x2f\\x12\\x52\\x9f\\xf6\\xf6\\xa8\\x20\\x29\\xff\\x01\\x85\\x66\\x2e\\x65\\x8f\\x83\\xc5\\x46\\xee\\xd0\\x9f\\x06\\xb5\\xa6\\x8e\\x85\\x7c\\xda\\xd0\\xeb\\x9e\\xc4\\xee\\xcb\\xfd\\x88\\xf3\\x4b\\xc8\\x09\\x90\\xf8\\x64\\x4a\\x9b\\xfd\\xde\\x1d\\x9f\\x3a\\x90\\xd5\\x57\\xa8\\xb8\\x28\\xd5\\xce\\x06\\xa6\\x4e\\x3b\\x23\\x85\\x82\\xbb\\x4c\\xbe\\xba\\x30\\xed\\xc4\\x9e\\x81\\x22\\xc5\\x5e\\x95\\xba\\xdc\\xf5\\x02\\xcc\\x56\\x78\\x69\\xc0\\x9e\\x9f\\x46\\xc6\\xff\\x3f\\x68\\x78\\x98\\x6b\\x1d\\xe0\\x0b\\x72\\xa1\\x85\\x80\\x46\\xfc\\xd3\\xa6\\xe9\\xcd\\xaf\\x5b\\x07\\x3c\\x56\\xf2\\x02\\x50\\x63\\xa2\\xd1\\x78\\xbd\\x4c\\x1e\\x8c\\xbc\\x1e\\x6e\\x67\\x1a\\xa9\\x7f\\xb2\\xcb\\x4c\\xc8\\xa6\\x2c\\x20\\xbe\\x41\\xc7\\x76\\x37\\x2c\\x8e\\x7b\\xe6\\x3b\\x48\\x2e\\x6c\\x63\\xfa\\x85\\xd7\\xcf\\xfb\\xc1\\xb2\\x82\\x0b\\xae\\x1f\\xc1\\x28\\x34\\x3a\\x1e\\x20\\xfc\\xf1\\xbc\\x35\\x02\\xee\\xe8\\x13\\x58\\xcc\\x9a\\x74\\xc7\\x2a\\xf6\\x35\\x30\\xf9\\x6a\\x25\\xa6\\x04\\x64\\x8f\\xf5\\x70\\xdf\\x1e\\xb8\\x9d\\x1f\\xdd\\xba\\xb2\\x86\\x79\\xba\\x2e\\x9b\\x41\\x97\\x7e\\x9a\\x9c\\x1c\\xae\\xcd\\xbf\\xc3\\x61\\xa1\\xdd\\x05\\x5e\\xc5\\x16\\x20\\xa9\\xbb\\xdb\\xba\\xf7\\x18\\xc9\\xcc\\x13\\x6d\\x20\\x07\\x71\\x03\\x99\\x53\\x6d\\x13\\x33\\x24\\x85\\xec\\x38\\x87\\x97\\x85\\xe0\\xc9\\xce\\x99\\x15\\xa8\\x02\\x51\\x37\\x39\\x90\\xa5\\x9b\\xce\\x44\\x03\\x26\\x03\\x1a\\xb1\\xb4\\x58\\xbf\\xa5\\xb8\\xa4\\x79\\x3d\\xa4\\xee\\x11\\xab\\x7a\\xf2\\x0d\\xe2\\xa1\\x18\\xc9\\xae\\x52\\x1a\\x41\\x7b\\x68\\x20\\x7f\\xc8\\x85\\xe1\\x09\\xd8\\x46\\x3e\\x9f\\x02\\x27\\x87\\xcc\\x73\\x0d\\xb0\\xb1\\xfa\\xae\\xd2\\x57\\xbe\\xd9\\x01\\x71\\x08\\x85\\xb7\\x4e\\x99\\x4f\\x54\\xf6\\xf2\\xae\\xb6\\x4f\\x0f\\x60\\xb5\\x9e\\xfb\\xf2\\xe3\\xbb\\x65\\x15\\x42\\x46\\x03\\xa1\\x13\\xc0\\xb8\\xa3\\x1b\\xa3\\xc1\\xe9\\xa9\\xb8\\x11\\x8c\\x87\\xec\\x69\\x49\\xb7\\x5f\\x49\\x62\\x7e\\xa7\\xb1\\x32\\x88\\x89\\x39\\x11\\x04\\xd4\\xf4\\xa3\\x89\\x2c\\xf0\\x0f\\x26\\xa7\\x3c\\xda\\x2a\\x40\\xf9\\xb7\\x15\\x7a\\xfc\\x40\\x66\\x7f\\x4a\\x04\\xf6\\x47\\xdb\\xf9\\x39\\x06\\xb8\\x4c\\x9a\\x35\\x16\\x4e\\x1b\\xc9\\x02\"},\n{{0xca,0xba,0x8e,0x05,0x33,0x11,0x3a,0x4b,0xe1,0x73,0x40,0x8b,0xa8,0x3c,0x0d,0xb7,0x42,0x60,0x80,0x2f,0x91,0x86,0xc3,0x91,0x40,0x26,0x55,0xac,0xde,0x60,0x15,0xcb,},{0x2d,0x7b,0xef,0x61,0x64,0xc2,0x79,0xfa,0x10,0x28,0xa9,0x78,0x8e,0x3e,0x8e,0xe8,0xac,0x15,0xed,0xcf,0x92,0xa5,0x85,0x50,0x62,0x95,0x23,0x10,0xb4,0x68,0x45,0x47,},{0xec,0x35,0xec,0x32,0xc8,0xa4,0x00,0x88,0x27,0xe1,0x78,0x49,0x2b,0x3b,0x8b,0xee,0x22,0xa4,0x95,0x4f,0xc6,0xb2,0x5f,0x4f,0x22,0x5d,0xd7,0xed,0x23,0x69,0x89,0x00,0xde,0x81,0x56,0x75,0x6a,0x8e,0xdc,0x35,0xc5,0x1d,0x10,0xf8,0x2b,0x83,0x0a,0x2a,0x65,0x96,0x76,0xea,0xc9,0x11,0xf9,0x60,0x24,0x47,0x66,0xe0,0xc3,0xc6,0x07,0x05,},\"\\x24\\x13\\xa3\\x2b\\xca\\x5c\\xe6\\xe2\\x30\\xe5\\x65\\xeb\\x85\\x84\\x93\\xd5\\xd0\\x4e\\x6d\\x2e\\x2a\\x7a\\xb1\\xf8\\x9a\\x3b\\x42\\x33\\x11\\x67\\x6b\\xfa\\x93\\xc6\\x7d\\xaa\\xfd\\x1c\\xfc\\x71\\x09\\xe0\\x40\\xba\\xc5\\x2c\\xbf\\xe0\\x7c\\x28\\x28\\x0b\\xb6\\xac\\xf6\\xe3\\xa3\\x10\\x73\\xda\\xb2\\x96\\x53\\x78\\xdd\\x77\\xf6\\x1f\\xe9\\x24\\x71\\x35\\xc1\\xa6\\x31\\xb7\\x9a\\xd6\\x68\\xc9\\xea\\x1c\\xd4\\x11\\x2d\\x8d\\x3a\\x06\\x4c\\xc2\\x1d\\xf3\\x2a\\xea\\xc7\\xdd\\x71\\x8b\\x09\\x1f\\xb6\\x91\\x5b\\x8b\\xc0\\x63\\xbb\\x58\\x15\\xc3\\x76\\xe0\\x14\\x76\\x31\\x2a\\x2e\\x54\\x33\\x41\\x7a\\x7a\\x93\\x15\\xd6\\x59\\x99\\xb0\\x2f\\xf4\\x64\\xa4\\x74\\xa5\\x97\\xe5\\x39\\x88\\x77\\x36\\x70\\xec\\xa4\\x6a\\x6e\\x26\\xcf\\x96\\xe9\\x48\\x8e\\x9e\\x63\\x44\\xbc\\x78\\x3d\\xdf\\xb5\\x35\\xe7\\x6b\\xb3\\xb9\\xa6\\x03\\xff\\x4c\\x59\\xc7\\xdb\\xe2\\xd8\\xb6\\x19\\x8d\\x5b\\x24\\x49\\x0b\\x4e\\xa9\\x6c\\x95\\x95\\x9f\\xfb\\xf3\\xd8\\x21\\x8e\\x76\\x0d\\xaf\\x20\\xe0\\x1e\\x2f\\x36\\xc8\\x4b\\xb0\\x97\\x11\\x5a\\xbd\\xde\\xe9\\x2b\\xed\\x82\\xd1\\x6b\\x15\\xa9\\xe1\\x92\\xe9\\x89\\x3a\\xc6\\x38\\x46\\x1d\\xf5\\x07\\x20\\x7b\\x0c\\xf5\\x95\\x88\\x4d\\x8a\\x99\\xfb\\x9c\\x70\\x45\\xf9\\xbf\\xf7\\xb7\\x3f\\x00\\xca\\x3f\\xd5\\x95\\xa5\\xce\\xc2\\x92\\xad\\xb4\\x58\\xbd\\x94\\x63\\xbe\\x12\\x04\\xd0\\x16\\x78\\xd2\\xf4\\x38\\x9b\\x87\\x20\\x11\\x5f\\xa5\\x97\\xc4\\x02\\xb4\\xff\\x69\\x4b\\x71\\xce\\x4f\\x3d\\x33\\x0d\\x5e\\x2f\\x3c\\x3a\\xd6\\xd9\\x6a\\x9b\\x34\\x39\\x23\\x0f\\xc5\\x3a\\x44\\x79\\x4c\\xda\\x59\\x55\\x57\\xc4\\x06\\xca\\x15\\x89\\xbc\\x7b\\xe8\\x1e\\x2d\\x79\\x63\\x60\\x33\\x25\\x3f\\xa7\\xbd\\xd6\\x00\\xc6\\x7f\\xc5\\x59\\x36\\xbd\\x96\\xce\\x04\\x28\\xc3\\xeb\\x97\\xba\\xd1\\xde\\x0a\\x5f\\xbb\\x9b\\x67\\x51\\x57\\xde\\x5f\\x18\\xbc\\x62\\xa7\\xc2\\x2c\\x94\\x83\\xe2\\x80\\x2e\\x67\\x9b\\x5b\\x8f\\x89\\xdb\\x0f\\xc3\\x7f\\x7c\\x71\\x50\\xad\\x5a\\xc8\\x72\\x2c\\xeb\\x99\\x9b\\x24\\x35\\xe6\\x99\\x72\\x17\\x09\\x23\\x36\\xef\\x1c\\x8a\\x22\\x92\\xda\\xb9\\xa4\\x6f\\xf8\\xa9\\xe1\\x0d\\x33\\x55\\x76\\x5c\\xac\\x9d\\x65\\x98\\x77\\x0f\\x4f\\x01\\xea\\x63\\x91\\x25\\xfd\\x03\\x16\\x09\\xdd\\x1a\\x50\\x7d\\x96\\x28\\x0c\\x7d\\x01\\xa3\\xee\\x98\\x7e\\x9b\\x21\\x0e\\xc8\\x74\\x4c\\xd4\\x8c\\x74\\xf8\\xaf\\xee\\x96\\x1e\\x8e\\xf2\\x21\\xf8\\x26\\xa1\\xfe\\x6e\\x7d\\xf0\\xcb\\x15\\xad\\x7c\\x7e\\xf4\\xa9\\x1f\\x9d\\x0f\\x4c\\x2e\\x1b\\xde\\xa6\\x35\\xd2\\x75\\xfa\\xc8\\xc4\\xbc\\x06\\x01\\xf4\\x90\\xdb\\xdb\\xc7\\x34\"},\n{{0x9b,0xf3,0xfb,0xc7,0x30,0x8b,0x46,0xf6,0x03,0x6b,0xad,0xe0,0xc3,0xca,0x19,0x9f,0xac,0x66,0x2b,0x07,0xf1,0x03,0xbf,0x75,0x18,0x1d,0x52,0xba,0x6a,0x58,0xbe,0x05,},{0x2f,0x6a,0xc6,0xfc,0x33,0xbc,0x06,0x0c,0x1d,0xc3,0xcb,0x9d,0x1a,0x2b,0x91,0x15,0x84,0x5a,0xdd,0xb1,0x6c,0x4b,0x84,0xbe,0x37,0xed,0x33,0xad,0xb3,0xb3,0xd3,0xa8,},{0x0c,0x31,0x36,0xe0,0x1f,0x9b,0xcd,0x99,0xe1,0x0d,0x3d,0x12,0x4b,0x0c,0xdb,0x07,0x72,0xbe,0xc1,0x8a,0x86,0x4b,0xe8,0x1b,0xd1,0xda,0xa4,0x4d,0x81,0x8c,0x3d,0x47,0x0d,0xfa,0xa8,0xab,0x6e,0x9a,0x76,0x1c,0xf0,0x3f,0x93,0xef,0x9c,0xc7,0x82,0x91,0x09,0x6e,0xd6,0xd1,0x0c,0x08,0xfa,0x2f,0xba,0x3b,0xac,0x04,0xdd,0xe2,0x0f,0x0c,},\"\\xd6\\x5e\\x36\\xa6\\xa3\\x81\\x95\\xec\\xb9\\x1d\\xe3\\xc8\\x48\\xb5\\x1f\\x63\\x92\\x45\\xfa\\x2b\\xab\\xa8\\xa6\\xf8\\x59\\x47\\x15\\x9d\\xec\\x0e\\xd3\\xfa\\xe8\\x0c\\x5a\\x0f\\x8c\\x66\\xff\\x24\\x79\\x3c\\x89\\xc0\\xc6\\x87\\x54\\x3b\\xc6\\x33\\x54\\x7a\\x1f\\x37\\xf7\\x30\\xd9\\x70\\x12\\xeb\\xbd\\xc7\\xac\\x33\\x9c\\x48\\x90\\xc0\\x85\\x6b\\xbf\\xe2\\xba\\x29\\xb2\\x5a\\x7a\\xa6\\xb0\\x89\\xc0\\x33\\xfe\\xcb\\x76\\xdb\\x62\\xdd\\x3c\\x00\\xf6\\x42\\x1b\\x9e\\x76\\xdd\\x0e\\xa3\\x66\\xeb\\x2d\\x4a\\x05\\x2e\\xe6\\xcc\\x73\\x6e\\x38\\x19\\x19\\x1d\\x5a\\xd7\\xa6\\x6d\\x2b\\xe0\\x42\\xcc\\x65\\x39\\xe5\\xf3\\x56\\x52\\xb1\\x55\\xa7\\x27\\xf3\\x88\\x8d\\x93\\xf9\\x3a\\x91\\x02\\x59\\x8f\\x75\\x38\\xa9\\xab\\x7c\\x77\\x7e\\xec\\x79\\x42\\x6a\\x60\\x75\\xd6\\xf3\\x8d\\x64\\xc4\\x85\\x52\\x0f\\x64\\x13\\xff\\x4d\\x35\\x8a\\x8a\\x9c\\xbd\\xab\\x01\\xad\\xf4\\xdb\\x02\\xad\\xae\\xa2\\x64\\x94\\xd1\\xf5\\xd6\\x17\\x63\\x7f\\x27\\x7f\\x8b\\x0e\\x6e\\x7e\\x61\\xe2\\xee\\xcc\\xdd\\x33\\x7d\\xe2\\xba\\xf0\\xca\\x26\\x4c\\x14\\xc8\\xcb\\x83\\x68\\x00\\x0b\\x9c\\x71\\x43\\x85\\xf4\\x13\\x73\\x7d\\x68\\x16\\xe2\\x12\\xca\\xe2\\xae\\xcf\\xff\\xc3\\x2f\\xd1\\x6d\\x46\\xc3\\xec\\xee\\x6a\\xb0\\x74\\xc0\\xd7\\x68\\xbd\\xfe\\x99\\xb8\\x6c\\xbb\\xc8\\xdf\\x9c\\x47\\xcd\\x58\\x6d\\x46\\x58\\x71\\x26\\x8d\\x4a\\x9d\\x1c\\x87\\x72\\x36\\xab\\x78\\xf8\\x85\\x9c\\x11\\x4e\\x25\\x1c\\xab\\xc4\\xbe\\x0f\\x8b\\xc2\\x5d\\x14\\x8c\\x5f\\x54\\x3e\\x29\\x07\\x45\\xd1\\x18\\x03\\xe4\\x9f\\x5b\\x53\\x19\\x3f\\xe3\\x99\\x69\\xc0\\x39\\xb3\\xf2\\x49\\xb3\\x2f\\x2b\\x85\\x98\\xb6\\xac\\xf4\\xed\\x64\\xd5\\x75\\x2b\\xb7\\x72\\xff\\x4e\\xe0\\x0c\\xe0\\xf8\\x5e\\xcb\\xb4\\xcf\\xc4\\xce\\x07\\xda\\xf2\\x80\\x98\\x68\\xc2\\x90\\x3b\\x78\\x1e\\x12\\xa2\\x74\\x10\\x5f\\x06\\x18\\x10\\x29\\xe4\\x7f\\x2b\\xfb\\x21\\xf4\\x94\\x80\\xaa\\x1e\\x44\\x47\\x15\\xc0\\xb9\\xff\\x07\\xea\\xd8\\x89\\x75\\xd9\\x35\\x85\\xd2\\xff\\x42\\x48\\x32\\xa9\\x78\\x3d\\x94\\x90\\x6a\\x60\\xf8\\x77\\xae\\x1c\\x85\\xff\\x15\\x31\\x7b\\xad\\xca\\x1e\\x61\\x31\\x74\\x33\\xc7\\xce\\x96\\x27\\x9b\\x67\\x8e\\xc9\\xd1\\x74\\xdd\\x08\\x70\\x08\\x0b\\x23\\x41\\x54\\xf6\\x26\\xa5\\x34\\x62\\xcf\\xd5\\x47\\x84\\x2e\\xab\\x87\\x05\\x60\\x5b\\x8e\\xe8\\x85\\x72\\x9e\\xe7\\x8d\\x18\\x33\\xaa\\x43\\xf5\\x5a\\xc2\\x27\\x31\\x98\\x9f\\xde\\xda\\x7d\\xc5\\xfa\\x9c\\x01\\x98\\x5f\\x26\\x61\\xe6\\xc7\\x32\\x6d\\x34\\x6e\\x6d\\xb2\\x7e\\x6f\\x92\\x1f\\xae\\x7c\\x93\\xa2\\x17\\x0e\\x10\\xdd\\x0c\\x46\\x0b\\xdc\"},\n{{0x64,0xe8,0x93,0x04,0xa3,0x35,0xe9,0x03,0xcb,0x36,0xc0,0xbd,0xf1,0xa6,0x41,0x2e,0xf3,0x68,0x46,0x80,0x06,0xb7,0x3d,0x3d,0x2d,0x61,0xcb,0x03,0x0c,0xc5,0xf8,0xd1,},{0xa1,0x80,0xef,0x3a,0x66,0x1c,0x3c,0x47,0x9d,0x5f,0x69,0x80,0x7c,0x90,0x27,0x48,0xe3,0x5e,0x7f,0x72,0x51,0x21,0xe3,0x7a,0x5d,0x91,0xb8,0xbe,0xc8,0x8d,0x83,0xa6,},{0x92,0xeb,0x44,0x54,0x81,0x40,0x01,0xec,0xfc,0x18,0x02,0x5d,0x64,0x21,0xf6,0x46,0x45,0xa5,0xbc,0xbb,0x5c,0xb8,0xfd,0x85,0xc1,0x4d,0x77,0x26,0x17,0xc5,0x03,0xe8,0xbe,0x7d,0x3b,0xcf,0x11,0x7f,0x5e,0x68,0x01,0xd1,0xc3,0xb9,0x6f,0x90,0x90,0xa6,0x6d,0xdc,0x67,0xf8,0xcf,0x8f,0xf0,0xf1,0xc1,0x25,0xb1,0x6b,0x15,0xe2,0xce,0x07,},\"\\x2f\\x51\\x07\\x4d\\x98\\x1b\\xda\\xfa\\xfb\\x02\\xa4\\x0f\\xe8\\x26\\xc4\\x5f\\x31\\x71\\xc1\\xb3\\x18\\x4d\\x8c\\x26\\x0b\\x82\\xb8\\x41\\x1f\\xc6\\x25\\xcb\\x02\\xcc\\xfe\\x75\\x5d\\xc2\\x9d\\xc7\\x89\\x5b\\xf7\\x59\\xe6\\x1b\\x24\\x50\\xda\\x1a\\x65\\x6a\\x38\\xd4\\xf7\\x0d\\x2e\\xe7\\x48\\xc5\\x18\\xc6\\x42\\x03\\x06\\xe5\\xf0\\x1e\\xc7\\xa0\\xff\\xe0\\xe9\\xdc\\xeb\\x93\\xf6\\xc0\\x77\\xb1\\x26\\x62\\x88\\x15\\x84\\xf9\\x8c\\xe6\\xab\\x94\\x5f\\x87\\xfc\\x6d\\x12\\x3c\\x45\\xd6\\xcd\\xfd\\x82\\x37\\xa1\\xce\\x36\\x35\\xb6\\x23\\xa7\\x9d\\x02\\x0d\\xf4\\x4c\\x74\\xb8\\x9a\\xc1\\x4a\\x32\\x1f\\xbf\\x33\\xa8\\xc0\\xa2\\x55\\x9f\\xea\\x1c\\x2b\\x15\\x60\\x76\\xb8\\x13\\x90\\x8f\\x84\\x2e\\xbe\\x4c\\x2b\\x94\\x90\\x89\\xe5\\x2b\\x1a\\xe4\\x0d\\xc6\\xe4\\xb2\\xab\\xbc\\x43\\x9a\\x0b\\xf7\\x23\\x69\\x67\\x9a\\xab\\x6f\\x4c\\x00\\x01\\x8b\\xe1\\x47\\xf7\\xc0\\xa6\\x7b\\x96\\x79\\xee\\x88\\xa5\\x38\\x19\\xc4\\x9f\\x7b\\x67\\x5e\\x30\\xa8\\xb5\\xaf\\x39\\x66\\x1e\\xe8\\xdb\\x21\\x01\\x04\\x11\\x29\\x49\\x68\\xf8\\x8e\\x5d\\x60\\x4d\\x0d\\x88\\xd7\\x6a\\x7e\\x48\\x64\\xfa\\xd3\\xa5\\x6f\\x5f\\x62\\x4b\\xa1\\xb3\\x4e\\xa9\\xcb\\x72\\x08\\x50\\xaa\\xd3\\xbd\\x4f\\x0a\\x88\\x2a\\x7d\\x25\\xfb\\xec\\x2b\\xb7\\xca\\x86\\xda\\x61\\x6d\\xa9\\x6c\\x15\\x62\\xc6\\xd6\\xa1\\xab\\xcc\\x64\\x1e\\x1b\\x58\\xb2\\xc1\\x78\\xe1\\xc3\\xbc\\x8a\\x3b\\x36\\xec\\x9e\\x14\\x4d\\xd2\\xe7\\x5b\\x0b\\xc8\\xc0\\x8c\\xcb\\x0d\\x6e\\x34\\x27\\xb0\\x32\\x2b\\x3d\\x6a\\xb9\\x3f\\x3f\\x60\\xb9\\xcc\\x5b\\x61\\xda\\xd0\\x23\\x85\\xa1\\x49\\x49\\xf9\\xb8\\x7a\\x8e\\x3a\\xf1\\xe0\\xe0\\xfa\\xb7\\xa9\\xa9\\x28\\xc7\\x53\\xfc\\x61\\x10\\x44\\x4a\\xf7\\xcc\\xaf\\x80\\x27\\xed\\x64\\x1b\\x9e\\xd8\\x7f\\xa5\\xd8\\xe1\\xf7\\x6c\\xae\\x46\\x5d\\x57\\xa7\\x0d\\xad\\x9e\\xbf\\xdd\\x3c\\xe7\\x57\\x6a\\xc4\\xde\\x89\\xd9\\x8f\\x42\\xe2\\x82\\xad\\x87\\xad\\x6a\\x50\\x42\\x57\\x7c\\xbb\\xbc\\x4d\\x95\\x1e\\x2a\\x86\\x76\\xfe\\xdc\\x8c\\xb1\\xb1\\xbd\\xf7\\x6c\\x3a\\x38\\x84\\x63\\x85\\xa8\\x5a\\xa2\\x47\\x06\\xc2\\x0a\\x8b\\x38\\x46\\x5f\\xe2\\xae\\x0e\\x41\\xf7\\x8e\\x61\\x4b\\x8e\\x96\\x42\\xfe\\x24\\x71\\xa9\\x01\\x57\\x47\\xdb\\x97\\x6e\\x0c\\x78\\x48\\xc2\\x3f\\xf3\\xf4\\x17\\xcb\\x05\\xa8\\xd5\\xef\\x40\\x13\\x0a\\xdf\\x85\\x5c\\x99\\x8a\\x62\\x10\\x4d\\x7e\\x2f\\xb7\\xc0\\xf9\\xaa\\x2a\\x49\\x60\\x75\\x62\\x3c\\xed\\x2c\\x0f\\x7e\\xec\\x10\\x14\\x7f\\xf9\\x60\\x8a\\x8a\\x04\\x2e\\xf9\\x81\\x17\\x45\\x9b\\x93\\x83\\x7f\\xd1\\xb8\\xd5\\xef\\x03\\x97\\x8e\\xad\\xa7\\x4c\\xac\"},\n{{0x6f,0x63,0x43,0x87,0xca,0x2c,0x0c,0xb1,0x67,0xa7,0x40,0xd6,0xaf,0xd8,0x9e,0x2a,0x28,0xf5,0x30,0x71,0x84,0xe8,0x1c,0xba,0x3c,0x03,0x70,0x46,0xa5,0xed,0xe2,0x3c,},{0x01,0x1f,0x2a,0x9a,0x11,0x1c,0x38,0xf3,0x49,0x0c,0xad,0x16,0x85,0xbe,0x78,0xec,0xee,0xdc,0x6f,0xac,0x4a,0x32,0x21,0x30,0x1c,0x69,0xc8,0x4b,0x1e,0xc7,0xb3,0xa7,},{0xfd,0x17,0xc6,0x18,0xcd,0xbb,0x5d,0x45,0x9e,0xa2,0xac,0xa8,0x86,0xf0,0x51,0x2c,0x62,0x32,0x51,0x28,0x4a,0xae,0x3a,0x83,0xeb,0x5d,0x7f,0x60,0xda,0x1d,0x9b,0x2b,0xa0,0x83,0xc4,0x55,0xa5,0xe2,0x58,0x3a,0x3c,0xba,0x73,0x6e,0x7b,0x96,0x1b,0xa1,0x9c,0x1c,0xc8,0xdd,0x90,0x74,0x5d,0xa8,0x2a,0x15,0xdf,0xc6,0x62,0xe8,0xe1,0x0d,},\"\\x86\\x5c\\x20\\xa9\\x4a\\xc3\\xf2\\xe3\\xbd\\x5c\\xb8\\x5b\\xec\\x9d\\x33\\x72\\x66\\x71\\xfe\\x01\\xf9\\xc5\\x37\\x01\\x7d\\x59\\xc8\\xd5\\x10\\x6e\\x43\\x36\\x0b\\xf7\\x6f\\xc0\\x61\\x86\\x70\\x59\\x80\\xc8\\xa8\\x7b\\xa3\\x63\\x3a\\x4a\\x17\\x04\\x26\\xec\\xc0\\xde\\xfb\\x6d\\xb2\\x67\\x0f\\x5f\\x59\\x25\\x33\\x77\\x4c\\xda\\x50\\x05\\x2a\\xe5\\x97\\xd4\\x8d\\xea\\xcc\\x26\\x37\\x06\\x3b\\xfd\\x51\\x9f\\x2e\\x79\\xba\\xc8\\x17\\x75\\xbe\\xcc\\xb1\\xab\\x2f\\x5b\\x39\\x71\\x2e\\x2e\\x82\\x94\\x69\\xb7\\x5a\\x2d\\x2d\\xbd\\x08\\xaa\\x6d\\x24\\x72\\x34\\x04\\xb2\\x5e\\xb9\\x48\\xa4\\x83\\x4c\\x55\\x24\\x6c\\x80\\x79\\xa8\\x2e\\xc6\\x43\\x54\\xe8\\xc2\\x38\\x8f\\x8c\\x5a\\x61\\x6b\\x3c\\xdc\\x37\\x1e\\x62\\x63\\xfa\\xbc\\x9f\\x60\\x99\\x21\\x9e\\x86\\x15\\x85\\xfe\\x82\\xa6\\x7d\\x61\\x0d\\xd1\\xeb\\x5c\\x81\\xc9\\x6b\\x5c\\xb3\\x54\\xa6\\x89\\xfd\\x8a\\xac\\x8d\\xb7\\x6c\\x43\\x3f\\x0c\\xb0\\xb3\\x1c\\xf1\\xd8\\x55\\xb6\\xa3\\x0a\\x3d\\x2a\\x21\\x2e\\x9b\\x4f\\x7d\\x7a\\xfe\\x61\\x99\\x51\\xf9\\x8d\\x2f\\x1b\\xa2\\xc1\\x01\\x08\\x5b\\xa8\\x1f\\x49\\xb3\\x60\\x37\\xcd\\x64\\x57\\xa7\\xea\\xa8\\xf4\\xf3\\xbe\\xdf\\x68\\xd0\\x9f\\xc9\\xfa\\x25\\xa9\\xd7\\x54\\xdb\\x65\\x36\\x02\\x85\\x41\\x2d\\x1a\\x6d\\xa5\\x37\\x88\\x90\\x5f\\xcf\\x4e\\xfa\\x8a\\x80\\xcd\\x86\\xca\\x48\\xb8\\x45\\x63\\x3d\\x8c\\x31\\xc2\\xae\\x06\\xf1\\x6c\\x4c\\x6b\\xbb\\xe9\\xcd\\x1a\\xfb\\x59\\xe1\\x01\\xbe\\x50\\xe0\\x35\\x35\\xdd\\x8a\\x65\\xe4\\x5b\\xba\\x46\\xd4\\x5c\\xb1\\x4b\\xad\\xfc\\x8e\\x93\\xab\\x52\\x67\\xf4\\xe4\\x92\\xab\\x1f\\x9a\\x95\\xe6\\x1f\\xca\\xb8\\x1c\\xbf\\x2b\\xd8\\x67\\xa3\\xec\\x7b\\x4b\\xaa\\x18\\x9a\\x0f\\x08\\x56\\x70\\x75\\x59\\x61\\x29\\xdc\\xf9\\xff\\x1c\\x50\\x2d\\x32\\x79\\xe8\\xaa\\x6c\\xe5\\x6e\\xaf\\x13\\x45\\x82\\xa9\\xe4\\x30\\xa5\\xaa\\x8c\\xa1\\x0c\\x3d\\xa8\\xbc\\x79\\x3d\\x02\\x56\\xad\\x19\\xae\\xa7\\x14\\x9f\\x0e\\xa7\\xea\\x95\\xfa\\xcf\\xac\\x1c\\x5c\\xfd\\x29\\xd7\\xa3\\xfe\\x1a\\x41\\x79\\x75\\x73\\x9e\\x14\\xda\\x8e\\xdc\\x81\\x99\\x00\\x47\\x2c\\xa8\\xc6\\x97\\x16\\x32\\x8e\\x8a\\x29\\x9f\\x97\\x4e\\xdf\\xf7\\x41\\xaa\\xbc\\x1c\\x07\\x4a\\x76\\x1b\\x3e\\xc8\\x76\\x1d\\xda\\x2e\\x7e\\xed\\x7a\\xf3\\x3e\\xf0\\x04\\x09\\x84\\x9d\\x41\\x54\\x97\\xc5\\xed\\x5d\\xfa\\xa2\\x25\\x9a\\x31\\xd0\\x76\\x39\\x81\\x70\\xb2\\xd9\\xd2\\x10\\x20\\x8b\\x4a\\x4c\\x7d\\xb8\\xc6\\x26\\xd1\\xc5\\x33\\x56\\x2a\\x1f\\x95\\x48\\x9f\\x98\\x19\\xe4\\x98\\x5f\\xc4\\xe1\\xd1\\xa7\\x07\\xbe\\x5e\\x82\\xb0\\x05\\x48\\x1d\\x86\\x37\\x7f\\x42\\x4e\"},\n{{0x4b,0x2e,0x1a,0xe6,0x0f,0xa5,0xd3,0x83,0xba,0xba,0x54,0xed,0xc1,0x68,0xb9,0xb0,0x5e,0x0d,0x05,0xee,0x9c,0x18,0x13,0x21,0xdb,0xfd,0xdd,0x19,0x83,0x95,0x91,0x54,},{0x36,0xc0,0x20,0xb1,0x85,0x52,0x34,0x56,0x19,0xef,0x88,0x37,0xeb,0x8d,0x54,0x94,0x84,0x0e,0x85,0xf4,0x68,0x09,0x34,0x3b,0x4d,0x6f,0x40,0x61,0x25,0xda,0x55,0x7d,},{0x22,0x20,0x11,0x9e,0x83,0xd6,0x9a,0x6a,0x3e,0xed,0x95,0xfa,0x16,0x6d,0x1d,0x11,0x28,0xa3,0xf2,0x32,0xca,0x1b,0x78,0xbc,0x94,0xb4,0xd4,0x76,0xc4,0x77,0x94,0x43,0x61,0x4b,0x87,0x72,0xaa,0x22,0x32,0xcb,0x07,0x20,0xa0,0x55,0xeb,0x71,0xd8,0x40,0x7f,0x3a,0xb1,0x9b,0xaa,0x1d,0x96,0x2c,0x05,0x2c,0x84,0xc0,0xbd,0x58,0x96,0x08,},\"\\xfa\\xb9\\x8b\\x2b\\xbf\\x86\\xae\\xb0\\x50\\x86\\x81\\x2a\\x4b\\x00\\x49\\xa1\\x04\\x2a\\xbb\\x76\\xdf\\x9c\\xd2\\x90\\x87\\x55\\x70\\x63\\x03\\xef\\xed\\xb1\\xad\\x21\\xe8\\xbc\\x8d\\x75\\x62\\x34\\x9e\\x1e\\x98\\xce\\x0d\\x75\\x2f\\x4b\\x3d\\x99\\xe6\\x77\\x36\\x8b\\xd0\\x8c\\x78\\xfe\\x74\\x25\\xec\\x3b\\x56\\x0e\\x38\\x3b\\xd4\\x2a\\xf6\\x49\\x98\\x86\\xc3\\x5a\\xdd\\x80\\xa5\\x82\\x8b\\x61\\xd6\\x64\\x4d\\x7d\\xc4\\x43\\xba\\x2c\\x06\\xf9\\xba\\xd2\\xec\\xcb\\x98\\x3d\\x24\\x45\\x8f\\x6a\\xda\\x1b\\x10\\xbb\\x5b\\x77\\x17\\x2c\\x5c\\xdd\\x56\\xd2\\x73\\xd1\\xe4\\x10\\x10\\xb2\\x5c\\xf4\\x8a\\x7d\\x58\\xd7\\x25\\x57\\x02\\xac\\x12\\xf2\\xa6\\xfe\\x29\\x18\\x46\\x63\\x95\\xf4\\x60\\xd1\\x52\\x36\\xd0\\x35\\xae\\x94\\x10\\xca\\x86\\xc4\\x60\\x51\\x28\\x29\\x9f\\xaa\\xf0\\x90\\x15\\xf1\\xad\\xee\\x77\\x68\\xee\\x1a\\x8f\\x8c\\xa0\\x6d\\x10\\xdd\\x7f\\x95\\xc4\\x6f\\xa1\\x02\\x53\\x06\\x5f\\x9d\\x6f\\x90\\x29\\x59\\x08\\x80\\x9f\\xd7\\x79\\x57\\x1b\\xe2\\x9e\\x0a\\xe6\\x6e\\x0b\\xcb\\xde\\xb7\\x91\\x3d\\x2b\\xbb\\x76\\xac\\x30\\x2f\\x34\\x52\\xc5\\x5e\\xf1\\x99\\xa4\\x8e\\xce\\xb0\\xe3\\x59\\x6c\\x7b\\x4c\\x03\\x86\\xda\\xe7\\x10\\x1e\\xa2\\x44\\xa3\\x3c\\x4c\\xdc\\x83\\x06\\x72\\xdf\\x83\\x65\\x5b\\x35\\x33\\x80\\x52\\x30\\x7b\\x94\\xd2\\x23\\xca\\xb1\\xaf\\x69\\xe0\\x7f\\x78\\xe5\\x8c\\xbb\\x0c\\xb3\\xc5\\x35\\x1e\\x3a\\x6b\\x0c\\x4a\\x92\\x7f\\x75\\x62\\xc5\\x98\\xd2\\xd3\\xdf\\x90\\x56\\x9f\\x61\\xdb\\x1a\\x3c\\xb0\\x14\\x0b\\x56\\xea\\x02\\xcf\\x77\\x45\\xfb\\xee\\xc2\\x02\\x86\\x73\\xd6\\x7f\\x1e\\xc5\\xf7\\xda\\xf9\\x71\\x5f\\x75\\x4a\\x9d\\x8e\\xd4\\x6a\\x7a\\x63\\xef\\x72\\x2e\\xe0\\xd5\\x89\\x93\\x31\\xb6\\x3c\\x97\\x4f\\xa8\\x80\\x42\\x94\\x35\\x76\\x7f\\x96\\x25\\x4e\\xf4\\x6c\\x99\\x68\\xf3\\xfe\\xda\\xaf\\xea\\xf3\\xe8\\xf4\\x56\\x34\\xb5\\x4f\\x5e\\x0a\\x5f\\xc2\\xd2\\x37\\x3a\\xb9\\xe9\\x8d\\x9a\\xcf\\xe3\\x69\\x7e\\x64\\x2a\\x18\\xe0\\xdf\\xd9\\xfb\\xc2\\xf0\\x94\\x86\\x6d\\x40\\x1f\\x0a\\x4c\\xa2\\xa4\\x56\\xed\\xf6\\xa1\\xa7\\x7b\\x9c\\x29\\x6c\\x39\\x22\\x06\\x7e\\xb3\\xd5\\xa5\\xca\\x0a\\x77\\xf4\\x30\\xe4\\xc8\\x61\\x1d\\x8f\\x05\\xa1\\xba\\xac\\x16\\x35\\xef\\x7b\\xa8\\x3d\\xfc\\x69\\xd3\\x01\\x94\\x98\\x56\\xbe\\x4d\\x2c\\x8a\\xb6\\x1d\\xe2\\x9c\\xf3\\x92\\x50\\xc5\\x79\\x4c\\xbf\\x57\\x50\\xcd\\xa9\\x5d\\x04\\x68\\xaf\\xa2\\xb7\\xf2\\x3d\\xba\\x4e\\xf5\\xf5\\x29\\x5a\\x3b\\xf4\\x14\\x00\\x18\\xb7\\xed\\x06\\x18\\x84\\x44\\x4f\\x5b\\xb1\\xb7\\xd2\\x39\\x31\\x2d\\xd7\\x39\\x99\\x95\\x36\\xc6\\x84\\x45\\x6e\\xa0\\x6b\"},\n{{0xb2,0x16,0xce,0xbf,0x87,0x80,0x24,0xc2,0x0d,0xfc,0x86,0xce,0x4b,0x37,0xbd,0xc4,0x7a,0xa2,0x8f,0x29,0x20,0x3b,0x5b,0x44,0x92,0x50,0x65,0xd9,0x93,0xa2,0x59,0xfe,},{0xc3,0x6e,0xdb,0xb6,0x25,0x4a,0x91,0x3f,0x08,0xfe,0x25,0x9e,0x23,0x87,0x80,0x63,0x8f,0x72,0xec,0x0b,0x30,0x07,0x26,0x4b,0xcc,0x60,0xa9,0xe8,0x1e,0xe9,0x29,0x8f,},{0xb7,0x38,0x9e,0xe7,0x8d,0xd9,0x76,0x3f,0x9d,0x28,0x92,0x91,0x2e,0xdc,0xbe,0x3e,0x8a,0x23,0x6b,0x8b,0xdc,0x25,0xf4,0x4b,0x9c,0xfd,0xc8,0xc4,0x7c,0xd5,0x81,0x68,0xab,0x56,0xeb,0x04,0x02,0xa5,0xbd,0x75,0x2a,0xc8,0xf4,0x97,0x8d,0x2e,0xa2,0xb6,0x5d,0x2f,0xa8,0x52,0x65,0x96,0x6b,0x9f,0x57,0x22,0x7e,0xf4,0xa5,0x9a,0xe0,0x09,},\"\\x9c\\x87\\x17\\xcc\\x86\\xfe\\x02\\x48\\x0b\\xfd\\x9e\\x92\\x2b\\xd7\\x6b\\xff\\xee\\x21\\x70\\xc4\\xcb\\x1b\\x13\\xdf\\x83\\x4a\\xc0\\x1d\\x45\\x00\\x60\\x86\\x29\\x7f\\x1b\\x8a\\x26\\xf2\\xba\\x67\\x4d\\x33\\xe1\\xd1\\x62\\xf1\\x93\\x67\\xfe\\xba\\x97\\x35\\x2b\\x7d\\xf2\\xe7\\x5b\\x30\\x9d\\x4b\\x6f\\x8b\\x07\\xcc\\x0e\\xb6\\x77\\x7e\\x81\\xe2\\x68\\xe0\\x2d\\x07\\xf2\\xa0\\x8f\\x8f\\x39\\xd5\\xa8\\x32\\x0b\\xfc\\x01\\xfc\\x8c\\x92\\x27\\xd2\\xcf\\x05\\xe1\\x28\\x91\\xff\\x4d\\xe8\\x85\\xa1\\xc9\\x33\\x71\\xa0\\x91\\x0b\\xa5\\x33\\x92\\xaf\\xf9\\xba\\x2e\\xed\\x9a\\x20\\x55\\x97\\x7e\\xc4\\x15\\x7b\\xd6\\x5b\\x34\\xdf\\x79\\x37\\x2f\\x4d\\x50\\xed\\xbc\\x48\\x92\\x43\\x53\\xcf\\xa1\\x69\\x23\\x19\\xd8\\x8a\\x7a\\x5b\\xb7\\x26\\x25\\x4c\\x20\\x92\\x91\\xe9\\xb1\\xd2\\xc1\\xa6\\xc8\\x23\\x63\\x98\\x10\\x9c\\x59\\xed\\x42\\xa0\\xac\\x9e\\x76\\x33\\xc5\\x20\\x73\\x4e\\xcc\\xfe\\xa4\\xfe\\xa9\\x5a\\x47\\xa8\\xf0\\xa0\\x68\\xb4\\x27\\x50\\x00\\x43\\x9c\\xc9\\x7c\\x57\\x87\\x1e\\x10\\x5c\\xc0\\x79\\x0e\\x9d\\xcc\\x9c\\x25\\xd5\\xaf\\x70\\x63\\xff\\xd0\\x5c\\x4f\\x37\\x80\\xe7\\xbc\\xa4\\xc4\\x56\\xd0\\x17\\x0d\\xa7\\x09\\xfc\\x6c\\xb3\\xfa\\xa7\\x2b\\xdc\\xf5\\x62\\x90\\x8a\\xe9\\x34\\x0a\\xef\\x4d\\x0c\\x8b\\x91\\xf0\\xfb\\xcc\\xbc\\xf1\\xcd\\x89\\x8b\\x1c\\x71\\x6f\\x4f\\x14\\x74\\xc3\\xaa\\x31\\x62\\x42\\xab\\xdf\\x63\\x68\\xe5\\x7a\\x24\\x7f\\xf2\\xfd\\x5c\\xe2\\x3d\\x18\\x7f\\x69\\x4f\\x11\\xe3\\x8d\\xfb\\xfb\\xc3\\xd9\\xdb\\x20\\x90\\x3b\\x4e\\xbb\\x44\\x9b\\x90\\x49\\xee\\x02\\x0f\\x6e\\x2f\\x50\\x8e\\x8b\\x2b\\x16\\x5b\\xad\\x74\\x64\\xdb\\xdd\\x17\\x8c\\xbd\\x42\\x32\\x33\\x76\\x5d\\x37\\x1e\\x7a\\xe1\\xc3\\xe8\\x78\\xcd\\xb5\\xb8\\x24\\xb2\\x0c\\xb3\\x09\\x86\\x7c\\x0e\\x47\\x3c\\x06\\x7e\\x67\\x44\\x00\\x85\\x27\\xb6\\xbc\\x07\\x6d\\x07\\x7f\\x48\\x67\\x62\\x2a\\xee\\xd1\\xc2\\x53\\xdb\\xde\\x7c\\x6a\\x76\\xc7\\x01\\x59\\x62\\xfb\\x73\\x39\\x16\\x98\\x60\\x0b\\xb3\\x18\\xff\\xa7\\xb0\\x13\\x6e\\xe4\\xcc\\xb0\\x7d\\xaa\\xf0\\x1f\\x40\\xff\\x9c\\x19\\x4f\\x98\\x68\\x1f\\x9f\\xae\\xf8\\xb6\\xf9\\xe9\\x9f\\x95\\xdf\\x00\\x80\\xda\\x89\\x66\\xa8\\xba\\x7a\\x94\\x74\\xc5\\x37\\xb9\\x2d\\xf9\\x79\\x9e\\x2f\\xd1\\x6f\\x78\\x8d\\xad\\x7a\\x7b\\xcc\\x74\\x52\\x26\\xe1\\xe6\\x37\\x1f\\x52\\xeb\\xcd\\xbd\\x14\\x40\\x44\\xdd\\xfe\\x63\\x2d\\xfc\\x0a\\x43\\xd3\\xa4\\x50\\x92\\x31\\x70\\xeb\\xc7\\xae\\x21\\x9e\\x50\\xe0\\x78\\xa5\\x11\\xbc\\x12\\xef\\x14\\xcd\\x14\\xb5\\x30\\x9f\\x38\\xab\\xd6\\x5d\\xb2\\xb2\\xa7\\xaf\\x22\\x43\\xb2\\x29\\xc9\\xfd\\x2e\"},\n{{0xaf,0xce,0xce,0xa9,0x24,0x39,0xe4,0x4a,0x43,0xed,0x61,0xb6,0x73,0x04,0x3d,0xcb,0xc4,0xe3,0x60,0xf2,0xf3,0x0c,0xd0,0x78,0x96,0xcd,0xa2,0x0c,0xb9,0x88,0xd4,0xe3,},{0xd2,0x31,0xf6,0x92,0x35,0xa2,0xe3,0xa1,0xdd,0x5f,0x6c,0x2a,0x9a,0xaf,0x20,0xc0,0x34,0x54,0xb9,0xa2,0x9f,0x4e,0x3a,0x29,0xab,0x94,0x68,0x9d,0x0d,0x72,0x3e,0x50,},{0xa6,0x55,0x45,0xcf,0x3d,0xf4,0x56,0xb2,0x8d,0x83,0xa6,0xd9,0x4c,0x03,0x6a,0x19,0xd0,0xd2,0x9f,0xb0,0x65,0xed,0xc2,0x7e,0x5e,0x93,0xa1,0xf4,0x02,0x79,0x89,0x7e,0x1c,0x6f,0x25,0x95,0x9a,0x72,0x5a,0xba,0xbc,0x87,0xcf,0x2a,0xe7,0x27,0xf3,0x46,0x7b,0x79,0x57,0x0e,0x90,0x27,0x11,0x91,0x71,0x91,0xd9,0xcb,0x0d,0x2d,0x66,0x0c,},\"\\x0b\\x05\\xf8\\x9e\\xbb\\x33\\x97\\x94\\x76\\x87\\xaf\\xbe\\xf0\\xed\\xe8\\x7c\\xf3\\x81\\x06\\x76\\x27\\x70\\x37\\x52\\x1d\\x95\\x2a\\x3b\\xbb\\xbd\\xc8\\x56\\x59\\x88\\xa0\\x95\\xd8\\xd4\\xf6\\xf5\\x9b\\xe5\\x72\\xd3\\xd8\\x21\\xdd\\x78\\x99\\x77\\xef\\x77\\xa2\\xfd\\x71\\x10\\xce\\xee\\xd9\\xf3\\x75\\x6e\\xd8\\xe1\\x88\\x26\\x7b\\x97\\xa3\\x0e\\xf8\\x95\\x7c\\x78\\xae\\xa3\\xa2\\x96\\x3d\\xec\\xa6\\x18\\x60\\x54\\x5e\\x0c\\x40\\x82\\x48\\x81\\xeb\\xb1\\xdb\\x10\\xf6\\x07\\xe1\\x0d\\xdb\\xdd\\xce\\x40\\x0e\\xa2\\x36\\xba\\x47\\x45\\xaa\\x99\\xa0\\x56\\x41\\x97\\x67\\x66\\x78\\x9e\\xd0\\xda\\x7d\\xb5\\x5f\\xda\\xb4\\x59\\xeb\\xd4\\xb4\\x41\\xa6\\x28\\x2f\\x7c\\xfd\\x5a\\x20\\xea\\x06\\xef\\xfa\\x33\\x59\\x55\\xe5\\xfd\\x29\\x18\\x16\\x71\\xbc\\x92\\xc0\\x00\\x52\\xf7\\xf7\\x5c\\x39\\x27\\x7c\\x9a\\x43\\xb7\\x87\\xac\\x9f\\xb1\\x51\\x6e\\x99\\x62\\x32\\xa5\\x09\\x77\\x4d\\x1d\\xc2\\x1d\\x8c\\x05\\x13\\xf7\\x84\\x4b\\x0a\\x5b\\x5f\\x18\\x95\\x75\\x81\\xf9\\x90\\x44\\xa1\\x42\\x23\\xcc\\xda\\x8a\\x28\\x4d\\xe1\\x2f\\xd4\\x24\\x26\\x5f\\xe5\\x7b\\x27\\x02\\x15\\xf8\\xfa\\x9f\\xf2\\xbe\\xa5\\x17\\x93\\x4e\\x48\\x00\\xa4\\x7d\\x34\\x6f\\xb6\\xc3\\x61\\xcf\\xba\\xbe\\xff\\xab\\xd9\\xc4\\x16\\x4f\\x45\\x15\\x6e\\x24\\x5c\\x97\\x7e\\xdb\\x47\\x36\\x42\\xc3\\x94\\x0b\\xe5\\xad\\x6f\\xd1\\xa7\\x11\\x9a\\x7b\\x18\\xe9\\x8d\\x6d\\xc8\\x43\\xe0\\xd2\\x54\\xc9\\x3d\\x01\\x46\\xd1\\x8e\\x5c\\x62\\xed\\xe1\\x49\\x0f\\x89\\xa6\\x05\\xeb\\x45\\x4f\\x97\\x47\\x78\\xcf\\xae\\x20\\x93\\x2e\\x95\\x47\\x7b\\xd0\\x3b\\xcd\\xb9\\x7d\\x5b\\xcb\\x76\\x33\\x59\\x42\\xe9\\x2e\\xe6\\x68\\xf2\\x31\\xe6\\x9c\\x57\\x0a\\xc5\\x44\\x6d\\x0f\\x77\\x40\\x66\\x73\\x7f\\xdf\\x49\\xf1\\x0c\\xeb\\x1b\\x52\\xd6\\xd8\\xa4\\x63\\x98\\x46\\xa3\\x37\\x3a\\x7c\\x6f\\x3b\\x4b\\x31\\x59\\xfe\\x2e\\x7a\\xf7\\xee\\xe2\\xf0\\xdf\\x17\\x2d\\x94\\xd2\\x55\\xd0\\x17\\x65\\x1d\\xa3\\x00\\x90\\x05\\xe5\\xea\\xc3\\x17\\x6c\\x09\\x38\\x9e\\xe4\\x0d\\x70\\x38\\x3b\\xd3\\x71\\x17\\xec\\xa0\\x83\\x59\\x8a\\x18\\x01\\xf5\\x92\\xd0\\x57\\x18\\x6e\\x56\\x8e\\x24\\x7c\\x25\\x2b\\xe4\\xb1\\x4f\\x72\\x3a\\xb7\\xdd\\xb9\\x7a\\xe9\\x76\\x8c\\x26\\x82\\xfd\\x63\\xac\\xc3\\x00\\x77\\x9f\\xe0\\x4e\\x2b\\x88\\x87\\x47\\x51\\x34\\x6c\\x9e\\x0f\\x97\\xa2\\xa2\\x16\\x77\\x2f\\xf9\\x62\\x5c\\x33\\xbd\\x7e\\x29\\xfe\\xd8\\x00\\x3a\\x08\\xdb\\xd3\\x3b\\x5d\\x17\\x89\\x9c\\x94\\x3c\\x25\\xe9\\x5a\\xd7\\x54\\xfb\\x63\\x2e\\x04\\x7c\\x11\\x2a\\xf7\\xf7\\xce\\xba\\x72\\x36\\x2e\\x1a\\x3d\\xdd\\x29\\x35\\xaa\\xf7\\xf8\\x18\\xa2\\x7c\"},\n{{0xb8,0x34,0xc6,0xe0,0xfa,0xcb,0xff,0x58,0x0d,0xd3,0xb2,0x37,0x53,0x95,0x9a,0x4c,0x21,0x54,0xc2,0x19,0x52,0x1b,0x3d,0x27,0x03,0x5d,0x07,0x1f,0x65,0x99,0xbd,0x02,},{0xd1,0xc3,0x84,0x71,0x5e,0x3b,0x3d,0x02,0xc1,0x3e,0x09,0x06,0x05,0x53,0x4c,0x7d,0xb7,0x40,0xda,0x2a,0xa5,0x60,0xf5,0x32,0x00,0xa3,0xce,0xd8,0xbe,0xae,0x8c,0xf8,},{0x0f,0x19,0xb7,0x06,0x6d,0x57,0x92,0x32,0x8a,0x98,0x00,0xd9,0xd4,0xf8,0xf6,0x7d,0x5b,0x08,0x9b,0x54,0x12,0x26,0xa1,0x67,0xda,0xcd,0x43,0x9f,0xa4,0x85,0xb0,0x02,0x5a,0x5d,0xc7,0xf2,0xc7,0xe2,0x3f,0xc4,0xa5,0xc6,0x86,0x9e,0x76,0x19,0xd3,0x56,0x39,0x97,0x00,0xc9,0x36,0x50,0xe8,0x9c,0xd2,0x5b,0x90,0xfb,0x99,0x25,0xe3,0x04,},\"\\x6c\\xf1\\x47\\xb1\\x60\\x55\\x28\\xa3\\x6b\\xe7\\x57\\x16\\xa1\\x4b\\x42\\x0b\\xcf\\x06\\x7c\\x03\\xf1\\xcf\\xe9\\xc4\\x40\\x2f\\x14\\x98\\x7f\\xbf\\xc9\\xd3\\xec\\xc3\\xcc\\xf4\\xf8\\xd2\\xd0\\x3a\\x55\\x90\\x0b\\x8d\\xc7\\x9a\\xf3\\xb6\\xe7\\x74\\x36\\xf6\\x9b\\x14\\x17\\xad\\x4b\\x68\\xfd\\x44\\xe5\\xe3\\x33\\xed\\x90\\xea\\x79\\x43\\xfb\\xd1\\x12\\x26\\x09\\xec\\x8f\\xf6\\xbb\\x25\\xe4\\x2e\\x99\\x14\\xf5\\x92\\x0f\\xc7\\x2c\\x4d\\x01\\x3b\\x6a\\x96\\x85\\xc9\\x96\\xfb\\xd8\\x35\\x2a\\xaf\\xb1\\x84\\xc2\\x2d\\x9e\\x47\\x87\\x1a\\x52\\x80\\xe4\\xab\\x7d\\xd6\\xa5\\xcf\\xd1\\x0a\\x59\\x94\\xa2\\x00\\xf6\\x70\\xe0\\xb6\\x22\\xa9\\x39\\x4d\\x47\\x93\\xd0\\xa4\\x20\\xe7\\xd8\\x80\\x6c\\xb1\\x27\\xc7\\xac\\x69\\x0d\\x45\\xa2\\xe9\\x41\\x66\\xce\\xa6\\x72\\xbc\\xd9\\x82\\xb0\\xe9\\xba\\xad\\x56\\x31\\x2d\\x25\\x70\\xdd\\xde\\x7e\\x0b\\x9e\\x7f\\x47\\x13\\x6f\\x04\\x81\\xd0\\x0f\\x66\\xa2\\xaa\\xca\\x4d\\x1b\\x09\\xd7\\xce\\x6c\\x5a\\x98\\xa7\\x6b\\x68\\xcd\\x97\\xd5\\x79\\x39\\x68\\xd6\\x67\\x07\\x3f\\x82\\x17\\xf9\\x05\\x47\\x35\\x34\\x0f\\x9b\\x14\\x9c\\x0d\\xce\\x84\\x5b\\x09\\x9e\\x88\\xd0\\x70\\x96\\x80\\xf0\\xf7\\x76\\x03\\xff\\x0a\\x23\\x31\\xc5\\x58\\xfc\\x36\\xd5\\xf2\\x4d\\xa9\\xa6\\x2d\\x69\\xaf\\x51\\x90\\xd2\\x1b\\x5c\\x85\\x7a\\x1e\\x08\\xf0\\x14\\xc6\\xd4\\x56\\x46\\x86\\x65\\xa7\\xf8\\x45\\xc6\\x6f\\x91\\x11\\xf9\\xc0\\x98\\xc6\\x89\\x40\\xef\\xcd\\x87\\xb6\\x57\\x07\\x0c\\xb9\\x16\\x4b\\xc9\\x74\\x3a\\xce\\xb7\\x43\\x9a\\x0d\\x01\\xc0\\x06\\x2a\\x11\\xaf\\x2e\\x11\\x34\\x93\\x97\\xf5\\xd1\\x52\\x87\\x2b\\x13\\xc5\\xab\\x32\\xf5\\x1c\\xc5\\x8f\\x14\\x75\\xec\\x82\\xac\\x67\\x15\\x61\\xdc\\xbd\\x34\\x3c\\xfb\\x3c\\x5f\\x78\\xd0\\xfc\\x73\\x05\\x3c\\x60\\x04\\xb0\\xa4\\xca\\x3f\\x20\\x43\\xff\\x4b\\x0c\\x54\\x27\\x5c\\x4f\\xcb\\x9c\\xad\\xc6\\xba\\xab\\xe5\\x7b\\x1d\\x5a\\xcd\\x53\\x1e\\x97\\x2e\\xf9\\x33\\x51\\x36\\xcd\\x1d\\x65\\x51\\x2b\\xa1\\xf5\\xb6\\xcc\\xc4\\xb6\\x6b\\x42\\x50\\xaa\\xfa\\x29\\x67\\xdd\\x42\\x11\\xa2\\x74\\x2e\\x0f\\x17\\x7d\\x8f\\x40\\x63\\x89\\x9f\\x61\\x81\\x5c\\xbe\\x6d\\x8f\\xbf\\xcd\\xf7\\x48\\x12\\xbd\\x40\\xcc\\x10\\x08\\x4e\\x46\\xa9\\x9a\\xc1\\x28\\x05\\x8e\\xaf\\x16\\xa4\\x9a\\x24\\xb6\\xae\\x22\\x8e\\xcf\\x01\\x09\\xc5\\x2d\\xfc\\x06\\xe3\\x7d\\x6a\\x33\\x3b\\xcb\\x24\\xab\\xa3\\x12\\x16\\x4c\\x6c\\x02\\x90\\x48\\x5d\\x25\\x12\\x80\\x53\\x8c\\xe9\\x54\\x1c\\x09\\x16\\x64\\x0e\\x36\\xd6\\x92\\x9d\\xcd\\x95\\x88\\xeb\\x99\\x57\\x7f\\x5f\\x6d\\x82\\xbc\\xbb\\x19\\x88\\x26\\x26\\x7e\\x49\\xf5\\xda\\xff\\x2c\\x0d\"},\n{{0x22,0x69,0xa5,0xd8,0xf7,0xac,0x2c,0xd9,0x04,0x8f,0x5f,0x49,0xe3,0x49,0xe5,0xc4,0x35,0xa1,0x59,0xb3,0x19,0xfe,0x3b,0x30,0xbf,0xac,0x8d,0x0d,0x50,0x59,0x43,0xf4,},{0x1c,0x81,0x79,0x43,0xdc,0x39,0xc2,0x4b,0x01,0xda,0x38,0xa4,0x87,0xb1,0x75,0x48,0x24,0x60,0xc6,0x09,0xe4,0x72,0x63,0x49,0xa9,0xaa,0x7a,0xea,0x9b,0xc0,0xfb,0x34,},{0xbe,0x0f,0xb3,0x30,0x8a,0x07,0x6a,0x61,0xa4,0xa9,0x2a,0x97,0xf6,0xac,0x55,0x32,0x71,0x90,0xe1,0x34,0x1d,0x6d,0xd4,0x10,0xd8,0x6b,0x41,0xbd,0xaf,0x2d,0x33,0x74,0x09,0x3e,0xf7,0x20,0xbd,0xb7,0x7f,0xeb,0x70,0x14,0xe0,0xf7,0x7d,0x3b,0x80,0x96,0x23,0xc7,0xca,0x53,0xe2,0xae,0x4b,0x09,0x71,0x13,0xe9,0x6d,0xb7,0x7a,0x2d,0x08,},\"\\x71\\x53\\xd4\\xd9\\xe6\\x41\\xaa\\x61\\x92\\x0d\\xb0\\xff\\x4b\\xd5\\x37\\xa6\\xd6\\x13\\x0a\\x39\\x65\\x54\\xcc\\x94\\x53\\x76\\x98\\xf9\\xca\\xd1\\x6b\\x99\\xee\\xbe\\xfa\\x5f\\x27\\x76\\xf2\\xfe\\xaf\\xf6\\xbd\\x9a\\x69\\x04\\x12\\x0c\\x67\\xe0\\x88\\x3f\\x6b\\x96\\xbb\\xbb\\x19\\x5e\\x95\\xae\\xc7\\x53\\xb6\\x99\\xba\\xb3\\xd0\\x39\\x44\\xc1\\x3c\\x72\\xfc\\x84\\xe3\\xf2\\xcb\\xf6\\x29\\x6f\\x64\\x55\\x49\\x11\\x1c\\x93\\xfa\\xe1\\xa7\\x59\\xbf\\xcd\\x16\\xfc\\x09\\xe6\\x0b\\xb9\\x78\\x55\\x35\\xad\\x27\\xda\\x24\\x4e\\xf2\\xf8\\x57\\xf2\\xde\\x99\\xa6\\xe9\\x21\\x88\\x89\\x0e\\x45\\x2c\\x7f\\x5b\\x9e\\x3a\\x4b\\x96\\x8e\\x11\\x74\\x3b\\x6f\\xc7\\xfa\\xf1\\x27\\x5e\\x53\\x60\\xa5\\x46\\x89\\x41\\x79\\x78\\x94\\xd7\\x70\\xfa\\x7d\\xa3\\x64\\xa3\\x37\\x30\\x22\\x39\\xfe\\x83\\xae\\x0b\\x0d\\x08\\x4a\\xa1\\x2a\\xcd\\xc6\\x34\\x62\\x52\\x4e\\x0e\\xb1\\x0f\\xef\\xe8\\x1b\\xa9\\x6f\\x71\\xf2\\x75\\xf3\\x44\\x9a\\x3f\\x8d\\xb2\\x1d\\x58\\x74\\x9a\\x38\\x85\\x3d\\x39\\xb0\\xad\\x8e\\x69\\x89\\x1b\\xd2\\x04\\xdf\\xca\\x8f\\x6c\\x23\\x9d\\xc9\\xa0\\xac\\x27\\xf5\\x4d\\xb4\\x23\\x8d\\x47\\x06\\xdf\\x11\\xd6\\x07\\x36\\x9d\\xc7\\xf7\\x04\\xda\\x1d\\x39\\xf2\\xe8\\x2a\\xf8\\xc2\\x83\\xd2\\x20\\xc1\\x24\\x31\\xf5\\x6d\\x80\\x30\\x69\\xb4\\xac\\xb7\\x70\\x81\\xc0\\x31\\xae\\x33\\x19\\xfc\\x77\\xfc\\xa7\\x84\\x50\\x97\\xfd\\x72\\x7a\\xd0\\xd0\\x80\\x89\\x5b\\xba\\x23\\xe8\\x73\\xd2\\xde\\xf8\\xcd\\xc2\\x16\\xc3\\xee\\xd6\\x1b\\x08\\x76\\x1b\\xb9\\xeb\\xce\\x02\\x82\\xcf\\x50\\x2a\\xaf\\x6c\\xe7\\xe8\\xc0\\x58\\x63\\x79\\x58\\xc3\\xea\\x1b\\x72\\xfe\\x6e\\x8d\\xf8\\xd3\\x7a\\xc0\\x55\\xdb\\x69\\x92\\x58\\x7f\\xab\\xbd\\xc4\\x67\\xf5\\x24\\x75\\x64\\x4f\\x91\\x88\\x63\\xaf\\x62\\x04\\x92\\xf3\\x46\\x80\\xf2\\x05\\x6c\\xbc\\xab\\x75\\xe2\\x32\\x36\\x26\\xc0\\x94\\x75\\x9c\\x0e\\x0e\\x99\\xef\\x19\\x75\\x95\\x27\\x25\\x06\\x46\\xad\\x76\\x01\\x20\\xba\\x38\\x66\\x99\\xd5\\x39\\x34\\xf9\\x56\\xb8\\xbb\\xc7\\x39\\x5b\\xb4\\x96\\xce\\xb2\\xdd\\x22\\x3c\\x7b\\x50\\x1b\\x92\\xd3\\x6a\\x95\\xf8\\xf0\\xa0\\x2e\\xb5\\xba\\x4d\\xdd\\xf1\\x66\\xb9\\xb9\\x5b\\x4a\\x59\\xe7\\x2a\\x30\\xc6\\x3c\\xf2\\x1e\\x60\\x85\\x75\\x19\\x23\\xd5\\x4b\\x30\\x28\\x1e\\x52\\xa0\\x96\\x18\\xe6\\xf0\\x23\\xba\\x0a\\x21\\x67\\x5e\\x7f\\x98\\x9b\\x89\\x91\\x58\\x8c\\x96\\xc2\\xb5\\x6a\\x78\\xf5\\xd2\\x94\\x5a\\x7b\\xae\\xb6\\xa0\\xc1\\xbb\\xd5\\xd9\\x5a\\xf3\\xee\\x83\\x0f\\x58\\x09\\xc7\\x94\\xa1\\x5a\\xb4\\xb5\\xf8\\x9d\\xd2\\xbe\\x2d\\xfd\\xcd\\x8f\\xe0\\x52\\x0f\\xda\\x2b\\x3f\\x02\\xa1\\xac\\x01\\x55\"},\n{{0xe9,0x65,0xb3,0xf2,0x57,0x35,0x66,0x85,0xc9,0x8b,0x42,0xb9,0x64,0xa2,0x53,0xfc,0x49,0x53,0x99,0xcc,0x94,0xb0,0x99,0xc2,0x44,0x5f,0xc8,0x1c,0x75,0x9c,0x68,0xe5,},{0x68,0x9f,0x54,0x10,0xc8,0xe0,0xf4,0xd3,0x7b,0xc0,0x7c,0x85,0xd7,0xcc,0xe6,0xc9,0xb6,0x36,0x01,0xf9,0xbd,0xaf,0xec,0xaa,0x44,0x8a,0x5e,0xed,0x64,0xaf,0xc8,0xc6,},{0x8d,0x2b,0xc4,0xe1,0xcd,0x25,0x6a,0xad,0x8a,0x15,0x1d,0xec,0x01,0x0d,0xc9,0x3a,0x5e,0x5c,0xca,0x58,0x29,0x8d,0xec,0x49,0xcb,0xc9,0xc4,0x71,0x7b,0x5c,0xfb,0x54,0x60,0xd4,0x30,0xbe,0x72,0x6b,0x0f,0x30,0x2c,0xbd,0x92,0x6b,0xee,0xa1,0x9a,0xa3,0xc9,0x3a,0xeb,0x45,0x2a,0x44,0xf6,0x00,0x7a,0xf4,0x9a,0xdf,0x2f,0x05,0xbb,0x04,},\"\\x6f\\x20\\xa9\\xad\\x27\\xe3\\x0d\\xac\\x76\\xb3\\x0d\\x4c\\x19\\xa5\\xbd\\x6d\\xfd\\x6d\\x04\\x92\\x13\\xf4\\xbe\\xcd\\xd9\\x63\\xd7\\x2b\\x8b\\x2d\\xad\\x68\\x7b\\x00\\x38\\x08\\x20\\x1d\\x50\\xf7\\xdd\\x6e\\x59\\x9e\\xf5\\x8c\\xeb\\x60\\x68\\xc5\\x45\\xed\\x99\\xb9\\xe7\\x63\\xf9\\xb0\\xec\\x1d\\xb5\\xfc\\xbd\\x7d\\x49\\x0a\\x12\\x1e\\xce\\xc6\\xbb\\xa1\\xeb\\x5e\\xdb\\xd6\\xde\\x85\\x36\\x47\\x07\\xc5\\x5e\\x30\\x0c\\x8b\\x16\\xbb\\x25\\x30\\xf7\\x08\\x98\\x13\\x66\\x89\\xc9\\x88\\x59\\x1d\\x53\\x91\\xd9\\xcc\\x34\\x7d\\x79\\x31\\x06\\x1a\\x9b\\x76\\x96\\xe2\\xc9\\xf3\\x5b\\xc0\\xd3\\x04\\xa8\\x1c\\x2c\\xf9\\x54\\xd9\\xc3\\xa8\\x8a\\x22\\xe1\\xd6\\x7b\\xbe\\x0a\\x85\\x30\\x84\\x77\\xf6\\x29\\x18\\xc2\\x5d\\xb5\\x04\\xe4\\x76\\x2f\\x0e\\x3b\\x42\\x46\\x00\\x79\\x08\\xac\\x70\\x17\\x79\\x00\\x6b\\x77\\xd7\\x25\\x10\\xed\\xc6\\x9e\\x17\\xd0\\xf6\\x39\\x4c\\x77\\xe5\\x55\\x18\\x75\\xa4\\x46\\xf8\\x12\\x33\\x41\\x5d\\x0a\\x91\\xa0\\x46\\x0b\\x51\\xc4\\x13\\xd6\\x44\\xe8\\x50\\xf8\\x55\\x72\\x81\\xc4\\x66\\x99\\xe5\\x3b\\x22\\xa7\\xc7\\x3b\\x06\\x8e\\xa3\\x86\\x52\\xcf\\xf3\\xb0\\xa7\\xb8\\xba\\x30\\x97\\x1e\\xab\\x18\\xfd\\xbb\\xd8\\x73\\x9e\\xe1\\xee\\x0c\\xd5\\xcb\\xfb\\x7d\\x5d\\x41\\x75\\x7b\\x63\\x31\\x27\\x1f\\xb7\\x80\\x97\\x51\\xe2\\x03\\x51\\x3c\\x99\\x70\\xf6\\x6d\\x91\\xbc\\x0c\\xe0\\x62\\xf4\\xfc\\xb2\\x8b\\xe0\\xa6\\x99\\x86\\x7b\\x79\\x59\\x4c\\x64\\x58\\xa0\\xd3\\x07\\xac\\xac\\x91\\xf4\\x13\\xc4\\x61\\x58\\x77\\xdc\\x53\\xe1\\xb0\\x18\\xda\\x5c\\xfc\\xe1\\xb6\\x3f\\x40\\xbe\\x1e\\x55\\x27\\x4c\\x43\\x74\\xcd\\xfc\\x21\\x52\\x44\\x99\\xa6\\x83\\xa2\\x31\\xad\\xef\\x77\\x9d\\x19\\x21\\x44\\x0e\\x5d\\x3f\\xdb\\xd5\\x03\\x3d\\xc9\\x83\\xcf\\xc9\\x31\\xab\\xe6\\x38\\xc3\\x5d\\x5a\\x95\\x86\\x9e\\x9f\\xe3\\xd9\\x3e\\xb9\\x0b\\xd1\\x86\\x1f\\x85\\x5c\\xe1\\xf6\\x08\\xb7\\xbc\\xad\\x6b\\x5e\\x1b\\xd9\\x7e\\xdc\\x95\\xed\\x5d\\xdc\\xbc\\xb7\\x15\\xd9\\x19\\xf5\\xff\\x77\\xdf\\x2d\\xa4\\x38\\xf7\\xa3\\xa9\\x82\\x86\\xdb\\xd5\\xb6\\xe0\\x43\\xfc\\x73\\x72\\xf6\\x97\\x04\\xf0\\x9d\\x86\\x55\\x30\\xf4\\xf0\\xed\\xd3\\x30\\x0f\\x18\\x5b\\x6d\\x73\\xd8\\x71\\x6d\\x32\\xd3\\x2b\\x1c\\x9a\\xc2\\xdd\\xf4\\xf9\\x02\\xd3\\xf2\\x16\\xd3\\x5a\\x33\\xf3\\x68\\x09\\x5d\\xed\\x10\\xbe\\x94\\xbb\\x53\\xd6\\xf2\\x56\\x56\\x0f\\xac\\x2f\\x4a\\xf0\\xed\\xf5\\xc5\\xc7\\x02\\x14\\x37\\x77\\x12\\x6e\\x7d\\xe3\\x2d\\x07\\x49\\x39\\x32\\x66\\x21\\x29\\xba\\x0e\\x7f\\xc7\\xcf\\xb3\\x6f\\xd2\\xca\\x53\\x16\\x46\\xe8\\xcd\\x22\\x11\\x85\\x4f\\xc5\\x10\\xaf\\x3b\\x1e\\x8c\\xaf\\xde\\x7a\"},\n{{0xbc,0x3b,0x1e,0x0b,0xf8,0xd6,0x9e,0xa5,0xb4,0xcb,0xbf,0x10,0xbb,0x33,0xfc,0x95,0x5a,0xdc,0xbe,0x13,0xfc,0x20,0xaf,0x8a,0x10,0x87,0x2c,0xe9,0xdf,0x39,0xd6,0xbd,},{0xac,0xcd,0x26,0x28,0x15,0x59,0x19,0xbb,0xc7,0xf9,0xd8,0x6f,0x91,0xda,0xfe,0xc3,0x5c,0x71,0x1a,0x78,0xc7,0x9a,0xd3,0x60,0xed,0xdb,0x88,0xfa,0x8a,0x18,0x0b,0x2d,},{0x6e,0xf7,0xf0,0xe9,0x1f,0x2c,0xc6,0x71,0x5f,0x8e,0x5a,0x98,0x57,0x4b,0x44,0x00,0xc2,0x61,0xa6,0x43,0xe0,0x54,0x5f,0xf2,0x67,0x47,0xf8,0xe1,0x73,0x98,0x99,0xd7,0x66,0x40,0xb6,0x45,0x1c,0x43,0xc1,0xd0,0x3a,0x47,0x75,0xb5,0x4f,0xcf,0x9b,0xce,0x18,0xed,0x3f,0xcc,0xad,0x33,0x8b,0x77,0x64,0x02,0x4f,0xdf,0xa2,0xde,0x82,0x01,},\"\\x4c\\x73\\xe0\\x4a\\xbe\\x08\\x19\\xde\\x1f\\x84\\xd7\\x05\\x41\\xeb\\x1b\\xb6\\x1c\\x4f\\x42\\x92\\x0e\\x1f\\x2d\\x1d\\x9e\\x62\\x81\\xa8\\xa2\\xe8\\xb3\\xeb\\x45\\x53\\x7d\\x83\\x96\\x90\\x27\\xf9\\x9e\\xf0\\xea\\x27\\xca\\x08\\x5b\\x13\\xf9\\xdb\\x48\\x0f\\x00\\xc0\\x2f\\x3f\\xd7\\x42\\x9d\\xd5\\x67\\x70\\x89\\x53\\xbb\\xf3\\xb9\\xe8\\xe2\\xc6\\xac\\x4d\\x32\\x1f\\xf8\\xf9\\xe4\\xa3\\x15\\x47\\x23\\x08\\x5a\\x54\\xe9\\xc9\\x57\\x3c\\xc7\\x35\\x0c\\x09\\xf8\\x97\\x3f\\x94\\x8b\\x08\\x73\\x03\\x73\\x59\\x7a\\x5f\\xd0\\x34\\x98\\x21\\xae\\x0a\\x3c\\xd6\\xc8\\x49\\x92\\xb1\\x89\\x12\\x8f\\x34\\x90\\x98\\x7e\\x1e\\x9a\\xd4\\xf6\\x57\\x4c\\xa5\\x38\\xfd\\xfd\\x83\\x28\\x4c\\x1e\\xb0\\x95\\x3f\\x24\\xc0\\x8f\\x74\\x93\\x2d\\x43\\x64\\xdb\\xbe\\xf9\\x22\\x54\\x24\\x40\\xda\\xe8\\x04\\x24\\xa9\\x2e\\xae\\xf2\\x7c\\x18\\x89\\xbd\\x08\\xc4\\x4f\\x9d\\xf0\\x3a\\x3a\\xf3\\x0d\\xff\\xb4\\x8f\\xae\\x44\\x5e\\x62\\x5f\\x4d\\x92\\x65\\xcf\\x38\\x7a\\x1d\\xa3\\x5f\\xe4\\xc2\\x31\\x50\\x45\\x35\\xdb\\x72\\xea\\x81\\xa1\\x86\\x80\\x5f\\x85\\x6e\\xbe\\x6a\\x6a\\x65\\x24\\x14\\x32\\x53\\x0f\\xe6\\xc9\\x60\\xc5\\xf9\\xbe\\x6c\\x22\\x95\\x70\\x60\\x30\\x4e\\x9d\\xd8\\xef\\xbc\\x1e\\x48\\x2e\\x7d\\xdb\\xd8\\xaf\\x03\\xbf\\x23\\x82\\x89\\x9c\\x98\\x6d\\x91\\x66\\x11\\xe4\\xf2\\x7a\\xe5\\x2f\\x81\\x7e\\xf0\\x1b\\x6a\\x14\\x1f\\xe4\\xf6\\x85\\xd9\\x4d\\xc8\\xcd\\x52\\x83\\x00\\x43\\x93\\x45\\x87\\x70\\x4c\\x1e\\x64\\x2e\\x8f\\xe5\\x6b\\xe6\\xd6\\xb8\\x5b\\xf4\\xa6\\xfe\\xb2\\xb6\\x85\\x8f\\x1f\\x00\\x7f\\x99\\xd3\\x9e\\xa0\\x4c\\x9f\\xe5\\xfa\\x7e\\xf1\\xb9\\x1f\\x49\\x5e\\xd0\\xe7\\xfa\\x42\\x13\\xdd\\x68\\xce\\xa4\\x2b\\x67\\x29\\xf9\\x50\\x31\\x90\\x7e\\x27\\xc4\\x40\\x98\\x09\\x43\\x86\\xfa\\xbf\\xb0\\x4a\\xb9\\xb4\\xde\\x3d\\x68\\x61\\xde\\x46\\x23\\x12\\xc5\\x9b\\x27\\xc7\\x6f\\x7b\\x6a\\x4f\\xc7\\x1e\\xa0\\xd5\\xda\\xf6\\xb7\\x32\\x05\\x21\\xa6\\x7e\\x5c\\xb3\\x75\\x04\\x97\\x6a\\xd7\\x3d\\xae\\x2d\\x64\\x9f\\xeb\\x75\\xe2\\xea\\xdd\\x34\\x01\\xa7\\xf2\\xf3\\x6e\\x16\\xdf\\xbf\\xbd\\xb2\\xaf\\x57\\x16\\xcb\\xa1\\xbc\\xe2\\x0c\\xd4\\x7c\\xe1\\xc1\\xd7\\xbe\\x00\\x69\\x70\\x01\\xfb\\xbe\\xb4\\x91\\x5a\\xa6\\xe5\\x39\\x3b\\x5a\\xb2\\x0e\\x0f\\x31\\xf5\\x11\\x91\\x49\\xa2\\xcb\\x4c\\x4d\\x45\\x2c\\x81\\x56\\x11\\x3a\\xc7\\x82\\x4f\\x84\\xf0\\x9a\\xeb\\x81\\x20\\x2e\\x8d\\xd3\\xda\\xc0\\xaa\\x89\\x39\\x9b\\x5a\\x38\\xb1\\xe2\\x18\\x30\\x19\\x60\\xa3\\x7d\\x52\\x63\\x2e\\xea\\xef\\xe3\\x68\\x74\\x55\\x46\\x42\\x88\\xeb\\x17\\xd9\\xe1\\x9a\\x3a\\x72\\xed\\x9d\\xe3\\x2c\\x17\\xbe\\x79\\xa3\\xb9\"},\n{{0x10,0x71,0x8f,0xa6,0xe2,0xd7,0xf6,0xed,0x38,0xfd,0x66,0xcb,0x6d,0xbf,0xa0,0x87,0xe8,0xf1,0xe8,0xa8,0xa2,0x4f,0xab,0x58,0xd7,0x9d,0x79,0x54,0xb8,0x72,0x0c,0x3e,},{0x87,0x0d,0x4f,0x66,0x6d,0x06,0xfd,0xa9,0xf9,0x51,0x1b,0x58,0x60,0x2e,0xec,0x05,0x0d,0x75,0x4e,0xa6,0xd8,0xe7,0x9c,0xdd,0x19,0xf6,0x01,0xc4,0x77,0xdf,0x1a,0xa0,},{0xe1,0x65,0x91,0x86,0xf1,0xf7,0x6f,0xe4,0x3a,0xc8,0xa1,0x17,0x03,0x36,0x0f,0xbe,0xff,0x53,0xb5,0xe5,0x7b,0x59,0x74,0xaa,0xa0,0x8e,0x25,0x75,0x57,0x9c,0x27,0x08,0x4c,0xf6,0x80,0x2e,0x7c,0x20,0x63,0x47,0x31,0x44,0x75,0xb6,0x03,0x19,0x74,0x94,0xe7,0xd6,0x1f,0xe4,0xb1,0xee,0x7b,0x78,0xe1,0x8d,0x94,0x46,0x93,0x52,0xdf,0x0c,},\"\\x41\\x25\\x9b\\x6e\\xef\\x13\\xd6\\xff\\xe3\\x3c\\xdd\\xe7\\x99\\xb9\\x95\\xc4\\x0b\\xe7\\x82\\xcf\\x97\\x84\\x40\\xb6\\x6b\\xe5\\x1c\\x44\\x05\\x82\\xab\\xd4\\x2f\\x52\\x66\\x96\\xbb\\x3c\\xb9\\x22\\x65\\xb1\\xed\\x0e\\x4b\\xba\\x76\\x4c\\xae\\x28\\x39\\x83\\x0a\\x25\\x26\\x35\\xdc\\x80\\xce\\x5f\\x73\\xd5\\x21\\xb3\\xd6\\xff\\x03\\xac\\x30\\xe1\\x98\\xad\\x20\\x56\\x7e\\x75\\xa3\\x4f\\xa8\\x25\\xeb\\xf9\\x84\\x15\\x08\\xda\\x84\\xcd\\x67\\x42\\x36\\xca\\x7b\\x43\\xde\\x35\\x64\\xc9\\x4a\\xb0\\x79\\x40\\x8f\\xd9\\x41\\x37\\xce\\x3f\\x90\\xa5\\xdd\\x5d\\x3a\\xc3\\x9a\\x05\\xec\\x86\\x71\\x5a\\x8f\\x02\\x5e\\x45\\x39\\xa7\\x64\\x0a\\xb8\\x88\\x36\\xf4\\xef\\xba\\xbd\\x5e\\x16\\x52\\xc4\\x9e\\xa2\\x16\\x13\\xac\\xfe\\x34\\x3a\\x88\\x0e\\xe5\\xa4\\x2f\\x2f\\x91\\x34\\xef\\x4e\\x37\\x16\\xb1\\x6d\\x13\\x4a\\x9c\\x4c\\x71\\xc3\\x9b\\x3c\\x1a\\x85\\x7d\\x3c\\x89\\x43\\x97\\x83\\xee\\xf1\\xed\\xd7\\x1b\\xf4\\x49\\x2d\\x05\\xfd\\x18\\x67\\x3a\\x52\\x42\\xff\\x41\\x87\\xb9\\xde\\x47\\xad\\x49\\x68\\xda\\x49\\xdb\\xa5\\xa6\\x09\\x2e\\x95\\xea\\x27\\xdd\\xfc\\x74\\x48\\xdc\\xf5\\x97\\x2d\\x9d\\x22\\x8d\\x63\\xe5\\x29\\x1b\\xa6\\xe6\\xfb\\xd0\\x7e\\x32\\x41\\xf9\\x36\\x6c\\xa4\\x97\\x6b\\xb0\\x4b\\x22\\xd0\\x1f\\x0d\\xba\\xe7\\x94\\xfa\\x9c\\x1d\\x90\\x29\\xf8\\x8a\\x83\\x60\\x2b\\x0e\\x0e\\xc5\\x5e\\x22\\xc3\\x7b\\x20\\x11\\x25\\xca\\xdb\\x53\\x41\\xef\\x73\\xf6\\xda\\x1a\\xbb\\xe2\\xb1\\xc4\\x75\\xf0\\x75\\x03\\x45\\xb1\\xbe\\x42\\x59\\xd8\\xc2\\x85\\x31\\xff\\xe7\\x78\\x86\\x67\\xc4\\x10\\xda\\xc3\\x39\\x91\\x8c\\x86\\x9b\\x00\\xab\\x80\\xf2\\x0b\\xf7\\x99\\x0d\\x36\\x6f\\x9b\\x3d\\x5e\\x8e\\xb2\\xf4\\x8d\\x7e\\xd0\\xe6\\x4b\\x85\\xdc\\x9f\\xe3\\xbb\\x99\\x8b\\x1e\\xec\\xd1\\x23\\x1e\\x90\\x2d\\x2d\\x15\\x2e\\x09\\xda\\x2d\\x25\\x92\\xbd\\xb3\\x2c\\x8c\\xd2\\xe2\\xc4\\x89\\x49\\x6b\\x29\\x80\\xc0\\x3d\\xbb\\x09\\xec\\x7f\\x8a\\x4e\\xa2\\xc7\\x02\\x0f\\x2a\\x0f\\xaa\\x65\\x7c\\xd6\\xce\\xd4\\x8d\\x6d\\xa2\\x78\\x64\\xcf\\x5e\\x97\\xee\\xa9\\xb3\\xc2\\xf0\\xf3\\x4a\\xbf\\x8d\\x87\\xbd\\x2a\\xde\\xb6\\x0c\\x72\\x72\\xfc\\x43\\x06\\xd9\\x55\\xbd\\xc8\\x02\\x3d\\x7d\\x3d\\xc2\\xf3\\xda\\xfe\\x9e\\xbe\\x8a\\x8d\\x13\\x89\\x65\\xa7\\xf6\\xce\\x93\\x51\\x7c\\xd2\\x09\\x96\\x63\\xf6\\x7c\\x34\\x55\\x21\\x76\\xdd\\xb5\\x95\\xac\\x6e\\xa5\\x60\\x9f\\xeb\\xcf\\x24\\xc7\\xd6\\x9d\\x41\\x27\\x09\\xe5\\x78\\x67\\x0a\\x21\\xac\\x8a\\xfc\\xcb\\x8b\\xf2\\xb1\\x8f\\xf3\\xaf\\x7d\\xe2\\x1d\\xc7\\x1d\\x50\\xd6\\x0d\\x37\\xb6\\xed\\x72\\x9d\\xb0\\x4b\\xef\\xf7\\xd3\\x4b\\x29\\x20\\xd8\\x75\\x51\\xce\\x15\"},\n{{0xc1,0xd4,0x72,0x4c,0x6c,0xb1,0xbc,0x67,0x23,0xb2,0xb4,0x30,0x34,0x27,0x8b,0x3c,0x5b,0x48,0xfe,0xd7,0xf8,0xa3,0xcc,0x23,0x18,0x03,0x3e,0x75,0x52,0x04,0x73,0x51,},{0xc2,0x7e,0x39,0x2e,0x7c,0x36,0x64,0xb9,0x06,0x1e,0xa7,0x6d,0x25,0x75,0xdd,0x7c,0x41,0xea,0xf1,0xda,0x3a,0x65,0xf3,0xa9,0x86,0xe0,0xa5,0x7f,0x6c,0x40,0xc1,0x7e,},{0xd3,0x7a,0x6e,0xc8,0x2e,0xd4,0x5c,0xa9,0xb4,0x85,0x5d,0xe9,0xcb,0x94,0x25,0x64,0xe8,0x83,0xff,0x70,0xa7,0x9b,0x8e,0x71,0x2d,0x5f,0x60,0x4e,0xc8,0x97,0x4d,0xe5,0x36,0x3a,0xc8,0x49,0xcb,0xab,0x28,0xe7,0xae,0xef,0xf2,0x8e,0xd3,0xf2,0xd1,0x4b,0x60,0x8b,0x31,0x46,0xc2,0xef,0xe0,0x73,0x5a,0xd8,0x15,0xc7,0xd7,0x5a,0x1a,0x01,},\"\\xde\\xee\\x99\\xd7\\xa7\\x7d\\x43\\x00\\xc1\\x7a\\xec\\x1a\\xb3\\x23\\xc5\\x71\\xc6\\xe9\\xe7\\x3a\\x43\\x49\\x1a\\x3c\\x78\\x88\\xb7\\x6f\\xc0\\x3e\\xc4\\x3d\\x07\\xaf\\x42\\xa0\\x5a\\x2a\\xa3\\x22\\xd0\\x0c\\x85\\x60\\xac\\xef\\x31\\x41\\x06\\xb1\\x0b\\x9b\\xd1\\x26\\x54\\x35\\x7f\\xfa\\x26\\xf2\\x39\\x00\\x50\\xda\\x63\\xd6\\x68\\xc9\\xe2\\xdf\\x54\\x8f\\x87\\x63\\x9e\\x09\\x6a\\x35\\x85\\x3f\\x82\\xe7\\x61\\xfd\\x71\\x1d\\x2a\\x26\\x54\\x38\\xf5\\xd4\\xdb\\x5e\\x32\\x77\\x57\\x08\\x15\\x0d\\xa6\\xcb\\x68\\x6a\\x2b\\x4c\\xa2\\x11\\xd7\\xf0\\x0d\\xc0\\xab\\xcb\\x2c\\xa1\\x50\\xe7\\x91\\x11\\x6a\\x10\\xa5\\xef\\xcf\\xf3\\x51\\x4d\\xab\\x8e\\xd8\\x0a\\x70\\x92\\xc3\\xa0\\x15\\x15\\x2c\\xb2\\x5d\\x9f\\x86\\xec\\x0d\\x1c\\xa6\\x7d\\xda\\xb4\\x4d\\x64\\xee\\xb1\\xf9\\x31\\xbf\\xab\\x2a\\xb1\\x88\\x95\\x6c\\x74\\x3d\\xb4\\x81\\x48\\x08\\xc5\\xcd\\xe1\\xb0\\x74\\x5b\\x3e\\xdd\\x34\\x0e\\xb0\\x3f\\xfc\\xc8\\x0a\\x78\\xf3\\xdb\\x31\\x0f\\x4f\\x5c\\x20\\x00\\x9f\\xc0\\x27\\x9c\\x2c\\x1b\\xcb\\x3c\\xed\\xf9\\x90\\xbd\\x0e\\x20\\xc6\\xf9\\xfb\\x75\\x15\\xad\\x6e\\x93\\x3b\\x07\\xe9\\x9d\\xa6\\xac\\x32\\xb9\\x71\\x41\\x18\\x7e\\xf6\\x3b\\xdb\\x10\\x62\\xe3\\x72\\x20\\xa4\\xdc\\xd4\\x19\\xd6\\x24\\x4c\\xdc\\xc3\\x4e\\xa4\\x1d\\x0b\\xcb\\xc3\\x13\\x8b\\x1d\\x54\\xae\\xfc\\x01\\x90\\xe3\\x0b\\x18\\x7d\\xb0\\x73\\xaa\\x7d\\x6c\\xfe\\x04\\xbd\\x3f\\xd2\\xac\\x00\\x31\\x3e\\x3d\\xdd\\x64\\xa1\\x81\\x93\\x5c\\xa4\\xb8\\xb2\\xa8\\x5d\\x36\\xbc\\x27\\xd9\\x7b\\x76\\x26\\x76\\x7b\\x93\\xee\\x38\\xde\\xf8\\xb6\\xb2\\xc8\\xda\\x9b\\x00\\x26\\x36\\x14\\x34\\x2f\\xaa\\x9d\\x3e\\x73\\x8d\\x27\\x13\\xc4\\x5f\\xfb\\xee\\xf8\\xc8\\x4b\\xcd\\xbc\\x8d\\xa4\\x30\\x9c\\x84\\x45\\x53\\x0f\\x5c\\x61\\x7d\\xc8\\x66\\x25\\x1f\\x54\\x89\\x50\\xa1\\x4f\\x07\\x5a\\xa3\\x11\\x7f\\x96\\xe4\\x1f\\x89\\x9d\\xbe\\x73\\x40\\xb1\\xd9\\x0a\\x13\\x52\\xd3\\xb8\\xfb\\x41\\xb7\\x9f\\x16\\xa8\\x2b\\xc2\\xe4\\xa1\\x93\\xb8\\xa7\\x23\\x24\\x00\\x99\\x6b\\x73\\xb1\\xfc\\x00\\xb2\\xec\\x1c\\x66\\x75\\x77\\xf8\\x28\\x24\\xd3\\x9f\\xb7\\xf6\\xe7\\x69\\x2d\\xcd\\x97\\xb1\\xd8\\xce\\x94\\x08\\x3c\\xa1\\x97\\xe9\\xa5\\xd4\\x0f\\xad\\xff\\x0b\\x9a\\xc5\\x7e\\x9d\\xe7\\x61\\xc1\\x56\\xe6\\xd3\\x1d\\x52\\xc3\\x32\\xd5\\x13\\xe9\\xf5\\x86\\x97\\xdc\\xbd\\xd8\\x0a\\x5e\\x42\\xc5\\x51\\x70\\x2c\\x3d\\xe7\\xbe\\xcc\\xc3\\xdb\\x84\\x5b\\x1a\\x04\\xc8\\xcb\\xd4\\x16\\x95\\xea\\x74\\x28\\xab\\xba\\x89\\xe0\\xdc\\xe3\\xe3\\xd9\\xe7\\x02\\x30\\xae\\x91\\x47\\xc2\\xb8\\x85\\x59\\xdc\\x69\\x5d\\x68\\x09\\xa5\\x1c\\xcb\\xc1\\xdd\\x9e\\x08\\x9c\\x58\\x5f\"},\n{{0x37,0xc0,0x70,0xd4,0xa5,0x3b,0x13,0xbe,0x76,0x06,0x35,0x11,0x0d,0x1b,0xd4,0xf0,0x19,0x20,0x22,0x5a,0xfa,0xbe,0xc5,0x76,0xfa,0xae,0xc9,0x10,0xf2,0x92,0x6d,0x1a,},{0x0a,0xa8,0x5f,0x2a,0xb1,0xdf,0xf8,0x95,0xd1,0xfa,0xd0,0xc1,0x19,0xf2,0xbf,0x57,0x12,0x6a,0xab,0x60,0x1c,0x52,0x8d,0x37,0x69,0x8e,0x97,0x70,0x2d,0x35,0xf5,0x25,},{0x9d,0xa6,0x0c,0xc4,0xa6,0x4d,0x07,0xde,0xe1,0x34,0x6b,0xd3,0xd3,0x01,0x09,0x95,0xce,0x27,0x38,0x20,0x8a,0xb3,0x5b,0x34,0xc2,0xa8,0xfd,0x17,0x87,0xae,0x3a,0x1e,0x20,0x7f,0xe7,0x84,0x52,0x51,0x54,0xfa,0xe4,0xf5,0x79,0x4c,0xd8,0x50,0x30,0x45,0xfe,0xa8,0x5c,0xf7,0x7f,0xd9,0x2f,0x6a,0x70,0xcd,0x0c,0x5a,0x52,0xc0,0x81,0x0e,},\"\\x10\\xc6\\x46\\x44\\x7f\\x81\\xad\\x94\\xd0\\x15\\xd8\\x6d\\x0d\\x98\\xb2\\x45\\x2d\\xca\\x60\\xa4\\x7a\\xb3\\x52\\x64\\x03\\x5e\\x33\\xa0\\x94\\x2b\\x95\\x4e\\x3e\\x23\\xb9\\x1d\\x81\\x23\\xb8\\x59\\x3c\\x6a\\xf7\\xc8\\xd3\\xec\\xd2\\x90\\xe0\\xe5\\xee\\x36\\xfd\\x4e\\x53\\xb7\\xbe\\x63\\x3a\\x6c\\xf0\\x27\\xa5\\xac\\x3f\\x0f\\x67\\x9e\\xb1\\xbd\\xd2\\x10\\xa3\\x8e\\xa6\\xe4\\x8b\\x05\\x58\\xe3\\x03\\x01\\x0a\\xf4\\x74\\xe7\\xf6\\xdf\\x2a\\x4e\\x45\\x76\\x99\\xfc\\x38\\xe3\\x69\\x38\\xb0\\x5f\\xfc\\xaa\\x1b\\x69\\x4e\\x32\\xf3\\xd1\\xb2\\xcc\\x5d\\x00\\xcf\\x25\\x6f\\x12\\x18\\x4c\\x87\\x3e\\x51\\x90\\x89\\xec\\x1d\\xf1\\x5b\\x0d\\xc7\\x6e\\x7b\\xfe\\x90\\x78\\x0d\\xf5\\x81\\x36\\xfe\\x59\\x7f\\xce\\x89\\x4c\\xa5\\x63\\xe0\\x8e\\xfa\\x0f\\x2d\\x4d\\x20\\x8b\\xed\\xe9\\xa8\\x74\\x88\\x28\\x73\\xd2\\x51\\xba\\xf0\\x19\\xfe\\x46\\xd1\\xd6\\x50\\x4b\\x3b\\xcd\\x24\\x3b\\x79\\x53\\x51\\xf3\\x4d\\x2e\\x76\\x06\\xaa\\x97\\x55\\x28\\xee\\x50\\xd5\\x9e\\xfb\\x6e\\xe6\\x99\\x2a\\x89\\xb2\\x42\\x69\\x56\\xc2\\xca\\x42\\x47\\xe0\\xdf\\x01\\x29\\x85\\x29\\x83\\xe9\\x76\\x7a\\x8e\\xed\\x1b\\xc7\\x33\\x5f\\xfc\\xa8\\xd0\\x28\\x9f\\x04\\x80\\x7f\\x67\\xca\\x7d\\xa9\\x71\\xf5\\x8d\\xb8\\xb9\\xbc\\x9f\\xdb\\xe4\\xf8\\x3c\\xfe\\x9a\\x00\\xf1\\xca\\x58\\x47\\x98\\xbc\\x71\\xd8\\x51\\xff\\x7c\\xd6\\xc5\\x1b\\x89\\x90\\xaa\\xba\\x4d\\x38\\xb4\\x16\\xb9\\x22\\x40\\xdf\\xb7\\x0e\\xe3\\xc1\\x2b\\x5e\\x73\\x10\\x57\\x76\\x2e\\xf9\\x08\\x23\\xfb\\xf6\\x83\\xca\\x06\\xd0\\x5c\\x20\\xd3\\xae\\x2b\\x97\\xa8\\x3e\\xbe\\x70\\xae\\x17\\xaf\\xff\\x9d\\x16\\x60\\x9d\\x54\\x6d\\x8d\\x3c\\x74\\xbc\\x28\\x18\\x84\\x89\\x4f\\x3d\\x49\\xe0\\x83\\xf1\\x0a\\xe7\\xc1\\x1c\\x1d\\xca\\x0e\\xff\\xef\\xcf\\xa6\\xe0\\xf1\\x53\\x50\\x81\\xfa\\xc3\\xa2\\x81\\x9f\\xd2\\xe3\\x26\\x55\\x27\\x18\\x2a\\xe9\\xd3\\x91\\xb2\\x32\\xbb\\x75\\x42\\xe6\\x84\\x55\\xcd\\x26\\x77\\x60\\xdb\\x65\\x2d\\x19\\xe2\\x2f\\xb2\\xed\\x11\\xcd\\x13\\x05\\xba\\x8d\\x98\\xc1\\xeb\\xf2\\xd1\\x96\\x9b\\x24\\xd6\\x4f\\x3e\\x31\\x9a\\xf7\\x4e\\x09\\x20\\x06\\xd2\\xa3\\xff\\x74\\x48\\x72\\xa2\\x0e\\xbf\\x18\\xd1\\x77\\x48\\xab\\x71\\x10\\x80\\x50\\x96\\xea\\x13\\x6b\\xce\\x2f\\x96\\x8b\\x20\\x5e\\x65\\x0b\\x80\\x3c\\x53\\x1d\\x06\\x77\\x5a\\xe5\\xce\\xea\\x28\\xbb\\x92\\xe9\\xa0\\xed\\xec\\x89\\x51\\xce\\x20\\x09\\xa8\\x8e\\xe1\\xb6\\x4d\\x9b\\x9e\\x89\\xf6\\x90\\x51\\x20\\x33\\x84\\x21\\x0a\\x10\\x2a\\x44\\xd2\\xd6\\x70\\x31\\x73\\xb6\\x85\\x07\\xdc\\xea\\xdd\\x3b\\xf6\\x51\\x0d\\xf2\\xa5\\xce\\xfd\\x9c\\x80\\xe4\\xf3\\x85\\xb2\\xf9\\xe6\\x21\\x58\\x13\\xed\\x32\"},\n{{0x11,0x26,0x49,0x6a,0x58,0x2c,0xe5,0x8d,0x3d,0x61,0x8d,0xd8,0xa3,0x93,0x35,0x47,0xaa,0x7a,0x8a,0x30,0xfb,0x54,0x06,0x3b,0x8d,0xfd,0xd3,0x16,0x71,0xc6,0xc7,0x3d,},{0xe1,0x02,0x29,0xc6,0x23,0xfa,0x8a,0xd8,0x98,0x2c,0x3e,0x4c,0x36,0xff,0x52,0xdf,0x0f,0x21,0x9b,0x57,0x91,0x5b,0x6e,0x98,0x0e,0x5f,0xe7,0x2e,0xa0,0x96,0x2e,0x22,},{0xb3,0x0e,0xb5,0x6c,0xa9,0xb1,0x20,0xbf,0x84,0x9a,0x3a,0x9d,0x56,0xaf,0x03,0x3d,0xe8,0xa5,0x90,0xc9,0xe1,0x24,0x0c,0x1e,0x36,0xdb,0xc6,0xcf,0x0a,0x71,0xb7,0x8a,0x11,0xec,0x14,0x3f,0xb9,0x95,0x9a,0x8f,0x25,0xb5,0x77,0x11,0xd6,0xa9,0x0a,0x67,0xe0,0x1b,0xe3,0xa4,0xda,0x2b,0x69,0x39,0x48,0x69,0xbb,0x8d,0x64,0xb8,0x7e,0x0f,},\"\\x6a\\x4b\\x52\\xd7\\x30\\xdd\\xab\\x82\\x9b\\x2a\\x17\\x95\\x90\\xcb\\xd4\\xc3\\x72\\x49\\x8e\\x9f\\x43\\x99\\x77\\xc0\\xa1\\x0d\\xc1\\x3c\\x0a\\xe1\\x73\\x6e\\xaa\\xff\\x06\\x33\\x71\\x43\\x4f\\xd0\\xda\\x80\\x36\\x0e\\xc5\\x89\\x06\\x07\\xd2\\xfa\\xe1\\xc9\\xa2\\xe1\\xab\\x0b\\x7f\\x3d\\x66\\x7f\\x5b\\x1b\\x9c\\x41\\x8f\\x18\\xb1\\x0c\\x9e\\x6f\\xd6\\x69\\xd3\\xeb\\xec\\x16\\x8e\\xfe\\xf4\\x41\\x63\\xe5\\x77\\xa2\\xeb\\xd0\\xf2\\xcb\\x76\\x8f\\x80\\xc2\\x31\\x88\\xe8\\x60\\x69\\xe4\\xd1\\x0f\\x41\\x03\\x06\\xce\\xdd\\x7a\\x34\\x1a\\x61\\xe0\\xf4\\xf3\\xbc\\x25\\x04\\x1b\\xc2\\xf9\\x22\\xed\\x07\\x3e\\x1e\\x2f\\x1b\\x70\\x9c\\x57\\x9d\\x10\\x63\\x0f\\x33\\x07\\x17\\x54\\xd7\\x07\\x89\\x4a\\x1c\\x62\\x19\\x0d\\xe1\\x88\\x82\\xc5\\x64\\xdc\\x4c\\x01\\xdc\\x54\\x5d\\xd8\\x96\\x64\\x04\\xed\\x78\\xfa\\x32\\x67\\xa9\\x46\\x9f\\x63\\xb6\\x12\\x0a\\xbb\\x65\\xf9\\xb3\\xba\\x3e\\xee\\x28\\xd7\\x9c\\x2e\\xb4\\xe7\\x02\\x0c\\xc6\\x98\\x7d\\xfc\\x5c\\x29\\x67\\x2f\\x8c\\x0f\\xa3\\xe6\\x90\\xd5\\x84\\xfe\\x00\\x0c\\x64\\xf3\\x52\\x61\\x01\\x79\\x62\\x1b\\xfd\\x5f\\xf3\\xeb\\x30\\xd1\\x8f\\x1a\\x02\\x50\\x41\\x6d\\xb9\\x3b\\x1c\\x1e\\x93\\xcf\\x8a\\x36\\x46\\x51\\x75\\x60\\xd1\\xcc\\x8f\\xff\\x82\\x2b\\x51\\xef\\x27\\xb2\\x00\\xe9\\x87\\xb5\\x92\\x39\\x07\\x53\\x45\\x3e\\xf1\\x38\\xbd\\x3d\\x29\\xdb\\x7c\\xb1\\xb5\\xf4\\x5e\\x47\\x95\\xb8\\x9c\\x53\\xf4\\x97\\x04\\x19\\x27\\x52\\x23\\x7c\\x6a\\xb2\\x74\\x84\\x9f\\x95\\x94\\xee\\x97\\x77\\xf6\\xef\\xe7\\x04\\x83\\x12\\x9d\\x06\\x7f\\x97\\x19\\x9d\\x9a\\xe3\\x60\\x90\\x70\\x38\\x64\\xf7\\xca\\x47\\x50\\xa6\\xf3\\xb6\\xff\\x83\\x82\\x4c\\x91\\x04\\x84\\x39\\x4d\\x1e\\x2e\\xce\\xba\\x18\\x44\\x6f\\xe4\\xe9\\x94\\xce\\x07\\x43\\x3a\\x74\\x0d\\xdd\\x05\\xf0\\xe3\\x96\\xd4\\x82\\x89\\x4e\\x6f\\x14\\xac\\xf7\\xb9\\x7b\\xae\\x6c\\x7e\\xb8\\x87\\x03\\x03\\x9f\\xa7\\x85\\xd6\\x0a\\x3a\\xf7\\x8b\\x13\\x24\\x3a\\x4f\\x88\\xdd\\xe1\\xd9\\x98\\x61\\x7f\\x2e\\x3f\\xa7\\xea\\xfc\\x2f\\x43\\x5d\\xd4\\xac\\x1e\\xa9\\xc2\\x38\\x40\\x7a\\xa0\\x9b\\x4e\\xea\\x8e\\xd4\\x34\\x92\\x7b\\x40\\x66\\x74\\xac\\x27\\x04\\x58\\xcf\\xb3\\xbf\\x29\\xc3\\x47\\xf9\\x45\\x59\\x61\\x31\\x79\\xb9\\x50\\x21\\x92\\x32\\x1b\\x88\\xe9\\xaf\\x0a\\x90\\xe9\\xa4\\xab\\x9e\\xdd\\xaa\\xe3\\x82\\xe3\\x73\\x4d\\x14\\x15\\xeb\\xe3\\x24\\x99\\xc3\\x4e\\x6f\\xde\\xaf\\x15\\xb0\\xd9\\x78\\x79\\x85\\xe0\\x8d\\xfe\\x49\\x54\\x60\\xc5\\x4f\\x67\\x43\\xd8\\x1f\\xf1\\x68\\x81\\xe5\\xe3\\x0c\\x51\\xf4\\xb0\\x92\\x37\\x37\\x83\\xf1\\x24\\x23\\xc3\\xe1\\xae\\x85\\x91\\x13\\x0a\\x26\\x99\\x80\\xca\\xa1\\xcb\\x5c\"},\n{{0x9c,0x16,0x7a,0xff,0x3b,0x1b,0x78,0x8f,0x13,0x3d,0x42,0x2d,0xe8,0xca,0x9a,0x64,0x31,0x64,0x09,0xf9,0xe3,0x5b,0xfe,0x22,0x03,0x2e,0xc4,0x17,0xae,0x9a,0xbc,0x6d,},{0xef,0xb5,0x34,0xf0,0xd4,0x7c,0x06,0x8e,0x77,0xb2,0x8a,0x90,0x6d,0x95,0xad,0x8d,0x21,0x3a,0x4d,0x4f,0xc1,0xc7,0x05,0x42,0xf0,0x1e,0x59,0x6d,0x57,0xb5,0xf0,0x19,},{0xc9,0xae,0x67,0xfd,0x64,0x15,0xdc,0xba,0xb2,0x92,0xfa,0xb3,0x94,0xca,0x6c,0x3b,0x7d,0x90,0xca,0x24,0x4d,0xc6,0xa7,0x76,0x4e,0x74,0xfd,0x20,0x2b,0xf4,0xb2,0x90,0x5b,0xd2,0x03,0x0e,0x6b,0xeb,0x91,0x4c,0x3c,0x23,0x8d,0xb3,0x71,0xb1,0xcb,0xa6,0xd9,0x26,0x1a,0xa3,0x92,0xec,0x87,0x1a,0x4b,0x8b,0x12,0xfe,0x9c,0x1c,0x97,0x0e,},\"\\x68\\xac\\x0f\\xc2\\xb6\\x07\\xba\\x38\\xe3\\x77\\xfa\\xe8\\x45\\xc8\\x08\\xc8\\xf9\\xfa\\x61\\x4e\\xb1\\xf3\\x11\\x58\\xa9\\x62\\x0a\\x93\\x7d\\x3e\\x30\\x1e\\x85\\xac\\xaa\\x69\\x14\\x4b\\xc3\\x49\\xa3\\x9d\\xfb\\x58\\x20\\x41\\xc4\\xa1\\x97\\xae\\x99\\xb4\\xd4\\xd5\\x9b\\x7a\\x2c\\xa3\\xd1\\x62\\x28\\xb5\\x59\\x1c\\xbf\\x57\\xc1\\x8a\\x78\\x1e\\xfd\\x19\\x19\\x3c\\x47\\xb1\\x6c\\x60\\x23\\xa3\\xa8\\xba\\x3d\\x66\\x8f\\x05\\xa3\\x7f\\x1e\\x83\\xb0\\xd7\\xfe\\xbd\\xd1\\x0f\\x63\\xe4\\x8e\\xf7\\xa2\\x0e\\x01\\x5b\\x1c\\x67\\x25\\xd4\\xc3\\x00\\xa9\\x86\\xc6\\x0e\\x3a\\x11\\x54\\x69\\xc8\\xe5\\x2b\\xa0\\x5b\\x51\\xc0\\x5d\\x0a\\xf4\\x0d\\x89\\xfd\\x9e\\xd7\\x6f\\x36\\x95\\x0a\\xee\\x3c\\x78\\x19\\x89\\x8a\\x90\\x3c\\xfe\\x03\\x61\\xa9\\x1c\\x69\\x10\\x0b\\x49\\x51\\x41\\xe8\\x6e\\xe7\\x9d\\x63\\xd1\\x74\\x03\\xfb\\x1a\\x16\\x29\\xef\\x63\\xcb\\x7e\\x9d\\x27\\x20\\xcb\\xff\\xf0\\x00\\x2b\\x19\\x0b\\xcd\\xc2\\x67\\x94\\x12\\x4d\\xd3\\x8d\\x42\\xbc\\xaa\\x71\\x75\\x40\\x5e\\xb0\\xbb\\xcf\\x8e\\x37\\xd6\\x5d\\x05\\xa3\\x71\\x95\\xb4\\x79\\x37\\x1f\\xa2\\xbb\\xbb\\x16\\x7d\\x91\\xce\\xe8\\x82\\x35\\xdd\\x72\\xea\\x88\\xfc\\x73\\xce\\x3c\\xe4\\x3d\\x33\\xb7\\x15\\xf2\\x5f\\x19\\x2e\\xc2\\x15\\xda\\xc1\\x24\\x89\\x9c\\x5e\\x75\\x86\\xe8\\x63\\x40\\xd8\\xcb\\xe5\\x37\\x35\\xde\\xfb\\xe0\\x2e\\x4c\\xc9\\xfd\\xe6\\x9f\\xb9\\x79\\x4d\\x1d\\xb7\\x2b\\x98\\xc0\\xf1\\x97\\x66\\xee\\x51\\x38\\xbb\\xfa\\x78\\x90\\x9a\\xa2\\x99\\xb4\\x91\\x3c\\x49\\x9d\\xea\\xf5\\x4b\\x48\\x41\\xd5\\x04\\x48\\x29\\x98\\x49\\x36\\x70\\x0d\\xcf\\x92\\xf3\\x65\\x42\\xb2\\xfc\\x7e\\x86\\x44\\x1b\\x99\\x25\\xf5\\xd0\\xb7\\x8c\\x17\\xa8\\x5c\\xfc\\xfc\\xb2\\x0b\\x0f\\xd7\\x51\\x34\\x9c\\x27\\x46\\x3a\\xbd\\xe4\\xd2\\x7d\\xf7\\x42\\x65\\x28\\x87\\x13\\xf9\\x6d\\xea\\x01\\x3b\\x94\\x55\\x21\\x80\\x8b\\x49\\x96\\xb1\\xb2\\xdc\\x03\\x38\\xb6\\xd2\\x36\\xef\\xd6\\xd2\\xb2\\x7d\\xaf\\xda\\x46\\xec\\x5f\\xa3\\x2b\\x96\\x5e\\x8b\\xb5\\xe8\\xbb\\x61\\xbd\\x96\\x6e\\xde\\xb7\\x74\\x68\\x1e\\x0e\\xa8\\xc1\\x7b\\x8c\\x99\\xfa\\x7d\\x66\\x0f\\x0f\\x66\\xc9\\xbc\\x6d\\x95\\xcb\\xd7\\xdc\\x09\\x47\\x24\\x09\\x8e\\xb0\\x51\\x91\\xb5\\x3a\\x3d\\xf6\\x56\\x6b\\x9c\\x90\\xe0\\xd7\\xdf\\xf2\\x94\\x38\\x48\\xb6\\x1a\\x20\\xd4\\x8c\\x22\\xb6\\xd3\\xc9\\x58\\xe2\\x93\\xd7\\x09\\xc8\\xf4\\x81\\x10\\x23\\x0f\\xf5\\x19\\x18\\x56\\x28\\x77\\xda\\xf6\\xd9\\x20\\xc8\\x5a\\x82\\xe0\\x7c\\x45\\x1f\\xe7\\xae\\x97\\x59\\xc0\\xa7\\x7e\\x97\\xbb\\x29\\x8b\\x5d\\x05\\x92\\xa4\\x1d\\x08\\xf6\\x7a\\x4e\\xd5\\xa1\\xbb\\x41\\xe9\\x37\\xb6\\xa6\\x8a\\xeb\\x38\\xfd\\x5b\\xe9\"},\n{{0xe9,0x94,0x88,0x05,0xeb,0x34,0x1b,0x28,0x67,0x47,0x9c,0x66,0x8f,0xd3,0x53,0x2c,0x30,0x99,0x41,0xc0,0xad,0x4c,0xb2,0xe5,0x42,0x31,0x75,0x6e,0x6a,0x1b,0xde,0xcb,},{0x54,0x47,0xa8,0xe3,0x4d,0x6a,0x64,0x00,0x02,0xd8,0xd6,0x0b,0xcf,0x1d,0xdc,0x71,0x1e,0x4c,0x46,0x5c,0x94,0xc3,0x4b,0x50,0xbd,0xef,0x35,0x89,0x60,0xff,0x81,0xf1,},{0xd3,0xdc,0x62,0xd6,0xce,0x9c,0x76,0x6f,0x2a,0xba,0xf9,0xa7,0xfb,0xe0,0x9d,0x6b,0xdb,0x07,0xa4,0x74,0x7b,0x56,0x08,0x0d,0xb0,0x9b,0xeb,0x4a,0x4e,0x80,0x4a,0x70,0xd7,0xdd,0xf4,0x11,0x94,0x75,0xc7,0xbe,0x83,0x4f,0x31,0x95,0x6f,0x4a,0x71,0xda,0xd0,0x29,0xcd,0xf2,0x36,0x3d,0xd0,0x36,0x5c,0xe2,0x2d,0xc2,0x7f,0x07,0x80,0x03,},\"\\x91\\xcf\\xfd\\x7e\\xb1\\xcf\\x6b\\xd4\\x75\\x6b\\xce\\x6a\\x30\\xaf\\x9d\\xfb\\xa2\\x6d\\xdd\\x1c\\xce\\x03\\x94\\xc1\\x94\\xa3\\xe3\\x9c\\xc3\\xd1\\xcb\\xc2\\x21\\xb7\\xeb\\x70\\xbe\\xa1\\x8d\\x29\\xc2\\x67\\x45\\x71\\x76\\xa3\\xc9\\xe5\\x3c\\x18\\xe4\\x7d\\x10\\xa6\\x7c\\x46\\x45\\x05\\x19\\x77\\x02\\xe6\\xb2\\x47\\x0d\\x38\\x86\\x9d\\xb5\\x17\\x4b\\x15\\x8f\\x99\\x92\\xe4\\x43\\x5d\\x02\\x24\\x6f\\x54\\x02\\x58\\xde\\xdd\\x3c\\xe3\\x3d\\xf5\\x82\\x55\\x5a\\x68\\x1f\\xb7\\x6e\\xca\\xcc\\xb1\\xc2\\x98\\x9b\\x17\\x7e\\x3b\\x7e\\x45\\x4a\\xaa\\x52\\x9d\\xe5\\x9b\\xf5\\xa0\\x31\\x23\\xd5\\x71\\xdf\\x2e\\x7f\\x7c\\xb8\\x30\\x80\\x5c\\x58\\xb7\\x4a\\x65\\x3b\\xac\\x0e\\x5a\\x88\\x8e\\x08\\xdc\\x22\\x36\\xd6\\xcd\\x49\\x6a\\xa0\\x6d\\x0d\\x67\\xcf\\x3b\\x33\\x5e\\x21\\x8c\\x49\\xde\\xda\\xd8\\x2f\\xc1\\xbe\\x9e\\xf2\\x0c\\xac\\x61\\x90\\x5c\\x30\\xeb\\x13\\x2d\\x73\\x9b\\x16\\xca\\x8a\\x8c\\x90\\x66\\x19\\xc0\\xe0\\xd8\\xb3\\x39\\x85\\x32\\x7e\\x36\\xf3\\xd4\\xb8\\xfd\\xa3\\x87\\xc1\\x86\\xcc\\x50\\x44\\x31\\x04\\xdb\\x76\\x1f\\x7f\\xf9\\x30\\x12\\x70\\x20\\x4a\\x71\\x3e\\x58\\x90\\x21\\x01\\xfa\\xd0\\x00\\xce\\x93\\x16\\x47\\xc5\\x77\\xfd\\xec\\x14\\x8d\\xca\\x95\\xcd\\xc0\\x89\\x18\\xeb\\xed\\x03\\x7c\\x60\\x33\\x2f\\xad\\xf0\\x88\\xf0\\x36\\x08\\x3e\\xbc\\x92\\xe1\\x73\\xb7\\xdd\\xcc\\x30\\xc4\\x93\\xf2\\x7e\\x69\\xcd\\x17\\xa2\\x0d\\x30\\xb7\\x8f\\x83\\xa7\\x2e\\x4f\\x5a\\x74\\x7d\\x86\\xd9\\x6c\\x5e\\x1b\\xb7\\xa4\\x38\\x16\\x62\\x04\\x01\\x3e\\x21\\x64\\xd6\\xaa\\xbc\\x0d\\x56\\x2f\\x54\\x01\\x5c\\x36\\x5c\\x80\\x44\\x56\\x07\\x14\\x5e\\x56\\x92\\xee\\x34\\xf6\\x35\\x30\\x77\\xfa\\xb7\\x45\\x2d\\x88\\xce\\x3e\\xb0\\x1d\\x2b\\x37\\x97\\xdc\\x91\\xb3\\x41\\xa3\\xa7\\x26\\x30\\x15\\x16\\xba\\xae\\x18\\xe8\\x51\\xf7\\x4d\\xfb\\xdf\\x08\\x66\\xbb\\x23\\x76\\x86\\x7d\\xe5\\x52\\x31\\xe3\\x62\\xc4\\x72\\xc5\\x21\\x16\\x54\\x4c\\xd4\\xf8\\x1e\\x93\\x57\\x1c\\x4e\\xc8\\x20\\xe7\\xe6\\x53\\xf4\\xe2\\x1b\\xe0\\xa9\\x42\\x57\\x6c\\x9d\\xe9\\x1e\\x7d\\x12\\x51\\x68\\x3d\\x85\\x9d\\xe4\\x48\\xf8\\x22\\xdc\\xf3\\xd2\\xcf\\x55\\xed\\xe2\\xf9\\xc7\\x1b\\x60\\x63\\xd1\\x37\\x30\\x61\\xf8\\xf5\\x93\\x6b\\x69\\x8d\\x13\\x84\\xe6\\x54\\x59\\xea\\x2b\\xc2\\x6e\\xc9\\x67\\x75\\xef\\x42\\x52\\x07\\x43\\x2d\\xda\\x0a\\xc1\\xfe\\x28\\x52\\x6c\\x5e\\x45\\x59\\x34\\x9c\\x3d\\x8d\\xf9\\x91\\x82\\x30\\xf4\\x04\\x46\\x83\\xcc\\x2c\\x1b\\x85\\x8d\\x14\\x1a\\xb8\\xd0\\x80\\x5b\\xb9\\x33\\x60\\x67\\x52\\x2a\\xa8\\x9c\\x81\\x0f\\x3e\\xaa\\x7a\\xc2\\xd8\\xdd\\x28\\xc3\\x75\\x12\\x25\\xa1\\x9e\\xce\\xc8\\xbc\\xca\\x52\\x43\\x99\\x46\"},\n{{0xb0,0x17,0x53,0xef,0xa7,0x3b,0xb3,0xde,0x7a,0xa7,0x78,0xbe,0x7a,0xfc,0xbf,0xf6,0x6a,0x5d,0x3e,0x2c,0x2f,0x8b,0x5a,0xa2,0xb0,0x48,0x84,0x40,0x50,0x99,0x69,0x65,},{0xd0,0xcc,0x6c,0xf1,0x09,0xc9,0x99,0xfb,0xf6,0xd1,0x6f,0x47,0x1f,0xaf,0xd0,0x23,0x2b,0x0a,0x68,0xd4,0xc4,0x64,0x06,0xec,0x75,0x45,0xdb,0xab,0xa8,0x19,0x41,0x58,},{0x16,0xb7,0x42,0x12,0x27,0xae,0x09,0x13,0x06,0x85,0xcb,0xb1,0xa0,0xc6,0x0a,0xa5,0x7a,0x5e,0x1a,0xfe,0x1b,0xbe,0x6b,0xac,0xea,0x0c,0x28,0x1b,0xcc,0x89,0x98,0xe6,0x82,0x4a,0x77,0x2c,0x32,0x08,0xa6,0xb6,0xb4,0xd2,0x36,0x69,0x55,0x05,0xc9,0xbe,0x82,0x70,0x0c,0xf9,0x3a,0x78,0x39,0x85,0xa3,0x9e,0x16,0xe3,0x77,0xa7,0x41,0x0e,},\"\\x68\\x4e\\x61\\x2f\\x27\\xee\\xad\\x0d\\x34\\x84\\x4c\\xc8\\x1b\\xa9\\x11\\xc2\\x8a\\xaf\\x6d\\x66\\xe7\\x12\\x29\\xe8\\xcc\\x34\\x62\\xf7\\xc7\\xa0\\x50\\xda\\xa3\\x0c\\xb7\\x44\\x71\\x15\\x0f\\x07\\xda\\xd4\\x59\\xb5\\xa9\\x13\\x58\\x47\\x6c\\x05\\x98\\x25\\x5d\\x8a\\x64\\x2d\\xd7\\xc0\\x80\\x28\\x11\\xbd\\x88\\xe4\\xca\\xc5\\x97\\xef\\xe4\\x1e\\xbd\\x96\\xcd\\x0f\\x3b\\x5c\\xe7\\x2d\\xb4\\xbe\\x1a\\x3d\\xbd\\x6b\\x84\\xf5\\x44\\x6e\\x3d\\xa6\\x00\\xd3\\xb1\\xd2\\xb4\\x60\\xa0\\x09\\xbd\\x31\\xca\\xcd\\x98\\xa9\\x15\\x18\\xce\\x33\\xe9\\xa7\\x03\\xd4\\x04\\x28\\x87\\x36\\xcc\\xc4\\x31\\x03\\xfc\\x69\\xe6\\x79\\x74\\xf3\\x16\\x52\\xfa\\x3d\\xad\\xef\\x33\\x37\\xf6\\xc8\\x97\\xa3\\xd2\\x01\\x30\\x3c\\x8f\\x03\\x59\\x7b\\x4a\\x87\\xc9\\x8f\\x29\\x1c\\xcd\\x58\\xa3\\xf1\\xe8\\x98\\x33\\x2a\\xa5\\x99\\x3b\\x47\\xfc\\xb5\\xdd\\xaa\\x1c\\x08\\x68\\xb6\\x43\\x74\\x2d\\x0e\\x4a\\x4b\\x9c\\xd4\\x27\\x03\\x8b\\x3b\\x74\\x99\\x9b\\xc8\\x9a\\xc3\\x48\\x4c\\x0c\\xa1\\x3f\\x25\\xaa\\xe8\\xe7\\x8a\\xe1\\xcc\\xee\\x62\\x18\\xac\\xca\\xb8\\x1a\\x4f\\x69\\x4f\\x53\\x24\\xa3\\x47\\x62\\x9d\\x49\\xb5\\x5e\\x40\\x37\\x50\\x4a\\x9a\\xcc\\x8d\\xf5\\x8c\\x68\\x41\\xdd\\xdc\\xd4\\xfc\\x43\\x47\\xf7\\xb6\\xf1\\xfd\\x9d\\xe0\\x56\\x45\\x77\\xe6\\xf3\\x29\\xed\\x95\\x1a\\x0a\\x6b\\x91\\x24\\xff\\x63\\xe2\\x2e\\xb3\\x6d\\x3a\\x88\\x63\\xbc\\x1b\\xf6\\x9c\\xea\\x24\\xc6\\x05\\x96\\x7e\\x7d\\x89\\x48\\x95\\x3f\\x27\\xd5\\xc4\\xc7\\x5f\\x08\\x49\\xf8\\x72\\xa3\\xe3\\xd1\\x6d\\x42\\x2f\\xa5\\xa1\\x1e\\x1b\\x9a\\x74\\xdf\\x6f\\x38\\xb9\\x0f\\x27\\x7d\\x81\\xfc\\xe8\\x43\\x7a\\x14\\xd9\\x9d\\x2b\\xef\\x18\\x9d\\x7c\\xac\\x83\\xdd\\xc6\\x13\\x77\\xed\\x34\\x8b\\x3c\\x4f\\xc0\\x9e\\xc2\\xb9\\x00\\x59\\x25\\xd0\\x4a\\x71\\xe2\\x6d\\x64\\x16\\x67\\xbd\\xf5\\x49\\x29\\x43\\x31\\xc6\\xea\\x01\\xcd\\x5c\\x0b\\xd1\\xb6\\xa7\\xec\\xfd\\xa2\\x0b\\x0f\\x19\\x29\\x58\\x2b\\x74\\x69\\x7c\\xb2\\x62\\xc3\\x92\\x7d\\x6b\\x22\\x3f\\x4b\\x5f\\x30\\x43\\xaa\\x6e\\xb4\\x57\\x1a\\x78\\xe9\\xda\\x11\\xc2\\xb3\\x6f\\x64\\x55\\x25\\x80\\xca\\xa7\\xb5\\xfa\\x6b\\x90\\xf9\\x29\\xe0\\x16\\x2e\\x60\\x8d\\x12\\x40\\xd7\\x24\\x2c\\xd2\\xf4\\x70\\x25\\xc0\\x3d\\xeb\\xe0\\x59\\xb1\\xdc\\x94\\x77\\x02\\x32\\xbc\\x67\\x65\\x14\\x84\\x80\\xbb\\x1d\\x9f\\x50\\xda\\x1e\\xe6\\x44\\x8c\\xf9\\xc8\\x8b\\x19\\xdd\\x45\\x99\\x32\\xc0\\x6e\\xd8\\x11\\xc4\\xa6\\x4a\\x12\\xd5\\x93\\x8b\\xd1\\xc7\\x57\\xbc\\xfa\\xea\\xee\\x89\\x33\\xfe\\x5f\\xff\\x21\\x76\\x3d\\xe7\\x40\\x48\\x2b\\xcf\\x1b\\xa5\\x9a\\xfd\\xc8\\xfc\\xf8\\x73\\xc3\\xd5\\x07\\xbb\\x39\\x4e\\x32\\xe4\\x5f\\x73\\x65\\x19\"},\n{{0x4f,0x4b,0x20,0xd8,0x99,0x36,0x6f,0x2f,0x23,0xee,0x62,0x8f,0x22,0x9b,0x23,0x6c,0xf8,0x0f,0x43,0xba,0x18,0x31,0x77,0xc9,0x7e,0xe3,0x48,0x29,0x54,0x6f,0x17,0x42,},{0xc9,0x45,0x76,0x64,0x1f,0x4a,0x89,0x3c,0xdf,0xce,0xe7,0xb3,0x9f,0xc2,0x19,0x29,0xb8,0x6b,0x34,0x99,0x76,0xd7,0xb0,0xa4,0x6d,0x39,0xa5,0x88,0xbc,0xfe,0x43,0x57,},{0x0f,0x80,0xff,0x5d,0x17,0x48,0x8f,0xe2,0x6f,0x93,0xc5,0x43,0xb0,0x4e,0xd9,0x59,0xb5,0xf0,0x64,0x3f,0xc6,0x1c,0x7f,0x2c,0x3b,0xc6,0x01,0x32,0xba,0x9c,0x62,0x10,0xc8,0xb2,0x50,0xea,0x5e,0x84,0xd0,0x7b,0x01,0xde,0x68,0xbc,0x17,0x44,0x14,0xee,0xeb,0x31,0xfd,0xc2,0xba,0x68,0x23,0xe2,0x31,0xe3,0x12,0xa9,0x1e,0xde,0xdd,0x02,},\"\\xdb\\x8e\\xf0\\x2e\\x30\\x33\\xe6\\xb9\\x6a\\x56\\xca\\xb0\\x50\\x82\\xfb\\x46\\x95\\xf4\\xa1\\xc9\\x16\\x25\\x0d\\xd7\\x51\\x73\\xf4\\x30\\xa1\\x0c\\x94\\x68\\x81\\x77\\x09\\xd3\\x76\\x23\\x34\\x6a\\xe8\\x24\\x5b\\x42\\xbd\\xa0\\xda\\x6b\\x60\\x46\\x2c\\xcf\\xdf\\xc7\\x5a\\x9a\\xb9\\x94\\xe6\\x6c\\x9a\\xb9\\xfe\\xcd\\xd8\\x59\\x96\\x10\\x91\\x0a\\xff\\xe4\\xf1\\x02\\x15\\xcb\\x28\\x0b\\xf8\\xf9\\xf2\\x70\\x0a\\x44\\x47\\x96\\xda\\xe9\\x3e\\x06\\xc6\\xbe\\xa7\\xd8\\xb4\\xfe\\x13\\x01\\xba\\xa7\\x9c\\xce\\xc7\\x69\\x36\\x8f\\xeb\\x24\\x42\\xc7\\xde\\x84\\xf0\\x95\\xe6\\xb3\\xbf\\xf6\\x3d\\x38\\x8c\\xba\\xfb\\x2b\\x98\\x09\\xdc\\x38\\xe9\\xb1\\x2e\\xbd\\x03\\x9c\\x0a\\x57\\xf4\\xd5\\x22\\xe9\\x1e\\xc8\\xd1\\xf2\\xb8\\xd2\\x3a\\x4a\\x0a\\xe0\\x59\\xaf\\x85\\x39\\x3b\\xb0\\xa1\\x5f\\x74\\x91\\x10\\xf6\\x77\\x4a\\x1f\\xd7\\x31\\xa6\\xec\\x21\\x3e\\x4f\\xf4\\x35\\xda\\xab\\x54\\x6d\\x31\\xed\\x9e\\xc3\\xb6\\xd8\\xcc\\x2e\\xda\\xce\\xbf\\x4f\\xac\\xc5\\x56\\x65\\x56\\xee\\xa9\\x2e\\x5b\\x3f\\x25\\x42\\x23\\x9b\\x25\\xe2\\x80\\x12\\xdd\\x4e\\xf4\\x00\\x72\\xee\\xbf\\x83\\xed\\x2a\\x25\\x51\\x81\\xf3\\xa4\\x42\\x18\\x9d\\x68\\xc6\\xc6\\x09\\xf4\\xdf\\xdf\\x3d\\xb7\\xd6\\x7d\\x08\\x7a\\x2f\\xcd\\x6d\\x2d\\xc5\\x0b\\xbf\\xed\\x8b\\xfb\\xbf\\xcb\\x74\\xd3\\xc4\\x1f\\x02\\xa8\\x78\\x65\\xb1\\x3b\\x8e\\xfc\\xf5\\xc3\\x58\\x12\\x57\\xbe\\x0a\\xa9\\x13\\xf6\\x0c\\x37\\x05\\x27\\xbd\\xe1\\x1a\\x47\\x5c\\x13\\x6a\\x17\\xc5\\xee\\xfe\\xb0\\x3f\\x5b\\xff\\x28\\x69\\x3e\\xd8\\x41\\xe8\\xed\\x1f\\x7c\\x29\\x10\\x2f\\x55\\x99\\xdd\\x44\\x40\\x09\\xbc\\xea\\x6a\\x92\\xd5\\x57\\x41\\x52\\x45\\x8e\\x0c\\xaf\\x8a\\x36\\xaa\\x72\\xb5\\xdc\\x49\\x08\\xa6\\x46\\x1c\\x9b\\x74\\x14\\x53\\x00\\x5c\\x8f\\xbc\\xc6\\x81\\x13\\xae\\x18\\x42\\x08\\xee\\x14\\xb8\\x35\\x48\\x0c\\x6e\\xfa\\xfe\\xd1\\x8a\\x76\\x00\\x0b\\x38\\xe5\\x85\\x82\\x90\\xf4\\xd5\\x1f\\x52\\xf0\\x96\\xcb\\xe4\\x90\\xe1\\xeb\\x5c\\xac\\xb2\\x26\\xec\\x49\\x5a\\x55\\xa7\\xfa\\x45\\x78\\x43\\xd5\\x7f\\xab\\x67\\xf8\\xbe\\x7e\\x20\\x93\\x34\\x78\\x5b\\xdd\\x66\\x5d\\x7b\\x63\\xe4\\xda\\xf5\\x7b\\x6e\\x78\\x92\\x8b\\x60\\x3c\\x8c\\x0f\\x9b\\xc8\\x54\\x64\\x73\\x3b\\x61\\x27\\x3e\\xf9\\xe2\\xb8\\xa0\\xcd\\x7c\\x3b\\xf8\\xee\\x0a\\x68\\x72\\xe3\\x4d\\x5a\\x27\\xa6\\x25\\xe3\\x5e\\xaf\\x7f\\xf5\\x44\\x0b\\x8b\\x14\\x1a\\xf7\\x04\\xdf\\x70\\xc9\\xc1\\x86\\x23\\xbd\\x11\\x20\\x95\\x13\\x19\\x25\\x05\\x10\\x5c\\xd7\\xbc\\xfa\\x5f\\x0d\\x91\\x9d\\xa7\\x06\\x94\\x8f\\xbe\\x1f\\x76\\x1f\\x31\\x58\\x46\\xaa\\x3b\\x48\\x13\\xdd\\x9b\\xa3\\xd8\\x1b\\x92\\x04\\xe5\\x40\\x9c\\x03\\x82\\xb6\\xeb\"},\n{{0xd2,0xe0,0x1d,0x25,0x78,0xb6,0x25,0xa7,0x06,0x0a,0xab,0xc2,0x57,0x65,0xf1,0x68,0xc6,0x80,0xce,0xf7,0x67,0xaa,0x97,0xca,0x0e,0x5e,0xb3,0xd6,0x67,0x47,0x4b,0x2a,},{0x19,0x1a,0xc2,0x23,0x57,0x54,0x24,0xaa,0x35,0x4b,0x25,0x5b,0x81,0x2d,0xd3,0x02,0x5d,0x70,0xed,0x82,0x9e,0x08,0x26,0xc0,0x16,0x29,0xf9,0xdf,0x35,0x45,0x08,0x2b,},{0x87,0xa0,0x10,0x39,0x4a,0x9f,0x2c,0x90,0x4e,0xff,0xef,0xca,0x9f,0xb4,0xd5,0xce,0x13,0x79,0x33,0x01,0xa4,0x92,0x5b,0xa5,0x1d,0xb1,0x19,0x12,0x3a,0x4d,0x73,0x0a,0xbf,0x76,0x4c,0xe0,0x65,0xe4,0x8d,0x90,0xa7,0x9d,0x90,0x7d,0x72,0x54,0xc4,0x0c,0xc3,0x58,0x98,0x7a,0x46,0x94,0x9e,0x92,0x8b,0xbb,0x3c,0xd0,0x85,0xdf,0xab,0x06,},\"\\x20\\xd5\\xdd\\x69\\x9b\\x28\\x53\\x30\\x2a\\x68\\x17\\x09\\x4d\\x5e\\xa5\\x12\\xbd\\xf8\\x53\\x45\\x04\\xcb\\x28\\x9c\\x60\\x24\\x67\\x41\\x07\\x40\\xec\\x7e\\xb8\\xea\\x64\\x42\\xc8\\x0f\\x14\\x59\\x35\\x06\\x8f\\x91\\x22\\xfd\\xf4\\xa3\\x9f\\x20\\x10\\xf3\\x3d\\xb5\\x5b\\x81\\x4d\\x97\\xbf\\x2e\\x58\\x72\\x32\\x9f\\x11\\x26\\xd4\\xeb\\x95\\xb8\\x06\\xca\\x19\\x73\\x11\\x31\\x65\\xb1\\x16\\xbe\\x87\\x16\\x37\\x1f\\x81\\x33\\x17\\x79\\xdc\\x79\\xa5\\xcb\\x39\\x42\\x08\\x1a\\xb5\\xf2\\x07\\xf6\\xb5\\x3d\\xb0\\xe0\\x03\\x81\\x07\\xd6\\x3c\\xa9\\x77\\x08\\x18\\x19\\x82\\xdc\\xb5\\xf3\\xb9\\x30\\x10\\xec\\x6e\\xdf\\xb2\\xcf\\xd3\\x1c\\xab\\x00\\x09\\x0b\\x3c\\x38\\x51\\x5f\\x97\\x81\\x76\\x96\\x86\\xcb\\x17\\xab\\x81\\xd5\\x4a\\x8b\\x77\\x57\\x54\\xd4\\x2f\\xba\\xd0\\x86\\xb8\\x0b\\x28\\xd6\\x36\\xf7\\x8b\\x7e\\xb7\\x7e\\xd9\\xca\\x35\\xb6\\x84\\x3a\\x51\\x0f\\x0a\\xd0\\xac\\x1b\\x20\\x26\\x7a\\x00\\x03\\x01\\xb3\\xc7\\x07\\xa2\\x0f\\x02\\x14\\xd5\\x9b\\x5b\\x81\\x99\\xc2\\xf9\\xee\\x25\\xd3\\x20\\x60\\xac\\xe3\\xe0\\xf2\\x59\\x46\\x50\\x41\\x6a\\x00\\x71\\x6c\\xd3\\xf9\\x86\\x04\\xa5\\xe1\\x04\\xb3\\x33\\x10\\xfd\\xae\\x94\\xc3\\x14\\x01\\x3c\\xdc\\xa5\\xba\\x24\\x14\\x40\\x9e\\xb7\\xf1\\x90\\x13\\x94\\xf0\\x07\\xd6\\xfa\\x0a\\x29\\xdb\\xe8\\xec\\x3d\\xf9\\x8c\\x39\\x3c\\x8d\\x72\\x69\\x58\\x77\\xcc\\x9b\\xaf\\x49\\x1e\\xf3\\x0e\\xf7\\xdb\\x33\\x71\\x60\\x8c\\xa9\\x7c\\xc6\\x21\\x56\\x25\\x20\\xee\\x58\\x1d\\x5d\\x1c\\xdb\\xc7\\x82\\x32\\xd6\\xc7\\xe4\\x39\\x37\\xb2\\xcc\\x85\\x49\\xe6\\xf1\\xe0\\x8d\\xf5\\xf2\\xea\\xc8\\x44\\xfe\\x0f\\x82\\x2b\\x24\\x83\\xad\\x0a\\x5d\\xe3\\x3b\\xe6\\x40\\x89\\x49\\x0e\\x77\\xd6\\x98\\x00\\xfa\\xe2\\x58\\x9e\\xe5\\x87\\x12\\xac\\x15\\xa3\\xf1\\x9e\\x6f\\xfd\\xbc\\xa4\\x2f\\xe1\\x89\\x4e\\x88\\x9b\\x94\\xc0\\x4b\\x04\\x24\\x0d\\xaf\\xb0\\xb2\\x73\\x0c\\x23\\x6b\\x8c\\xce\\xb2\\xcb\\x97\\xaf\\xd1\\xd5\\x15\\xdc\\x19\\xd1\\x06\\x7f\\xd4\\xab\\xa8\\xce\\x29\\x7f\\xd6\\xd1\\x10\\xb3\\x5a\\x21\\xbd\\x3c\\x07\\x5c\\x57\\x7d\\x93\\xfe\\x1d\\xf7\\x7d\\x64\\x8f\\x71\\x19\\x49\\x20\\x99\\xb0\\x17\\xaf\\x44\\xeb\\xa0\\x9c\\x80\\x7f\\x11\\xa4\\xc3\\xf4\\xa1\\x1a\\x2f\\xff\\x30\\x6a\\x72\\x8b\\xa7\\x89\\x83\\x32\\x3c\\x92\\xa2\\xfd\\x5f\\xcc\\x80\\xc1\\x8d\\x42\\x34\\x26\\xf8\\x23\\xa7\\x3f\\xe0\\x40\\x94\\x95\\x52\\x84\\x29\\x3f\\x5f\\x6b\\x3c\\xa4\\xff\\x10\\x80\\xdb\\xb1\\xe4\\xc6\\xf7\\x4c\\x1d\\x93\\x5e\\xd2\\x1e\\x30\\x09\\x4c\\x7d\\xe3\\x36\\xb8\\x2d\\xd8\\x20\\x0b\\x0d\\x65\\x95\\x83\\xc5\\xbf\\xd5\\x47\\x0f\\x9d\\xb3\\x42\\xe7\\x0e\\xc4\\x00\\x07\\x42\\xc5\\x64\\x0a\\x21\\x4e\\x3c\\x2e\"},\n{{0x7c,0xd7,0xec,0x99,0xdd,0x03,0xae,0xde,0x1f,0xf1,0x07,0x3e,0xc2,0xca,0x70,0x10,0x27,0x6e,0x94,0x7e,0x2a,0xa9,0xb0,0xe6,0x5f,0x87,0x7e,0x4c,0xcf,0x1b,0x3a,0x14,},{0xe4,0xc3,0x9d,0xbe,0x94,0x93,0x17,0x6b,0x82,0x13,0xf1,0x42,0x2a,0x9d,0xe7,0xc7,0x4f,0xb6,0xa5,0x91,0x90,0xfc,0xdb,0xf6,0x37,0xc7,0xad,0x5e,0xe1,0x65,0xc0,0x4f,},{0x6f,0x99,0x20,0x27,0x70,0x96,0x45,0x35,0xe4,0x83,0xa0,0xee,0x01,0xa5,0x29,0x44,0x2e,0xb3,0x21,0x30,0x3f,0xa8,0x05,0xd4,0x75,0x60,0x4d,0x7f,0xc7,0x28,0xa9,0x10,0x3f,0xb7,0xb5,0x58,0xb9,0x55,0xf4,0xd0,0x37,0x19,0xee,0xfa,0xa3,0xb7,0xed,0x5b,0x0d,0xa7,0x57,0x10,0xbb,0x98,0x78,0x7f,0x5c,0x22,0x82,0xed,0x66,0xe9,0xf6,0x0c,},\"\\xa6\\x03\\x4a\\xa3\\xc2\\x48\\x49\\x23\\xe8\\x0e\\x90\\xe5\\xa8\\xe1\\x74\\x83\\x50\\xb4\\xf2\\xc3\\xc8\\x31\\x9f\\xaf\\x1a\\x2e\\x32\\x95\\x15\\x0a\\x68\\xe1\\xee\\xca\\x1b\\xc8\\x49\\x54\\xcc\\x89\\xd4\\x73\\x1a\\x7f\\x65\\x12\\xaf\\x01\\x46\\x4f\\xdb\\xce\\x5d\\xf6\\x8e\\xe8\\x06\\x6a\\xd9\\xa2\\xfd\\x21\\xc0\\x83\\x5a\\x76\\x55\\x9c\\xa1\\xc7\\x44\\x9a\\x93\\x3b\\xcb\\x15\\xaf\\x90\\x22\\x3d\\x92\\x5f\\xf6\\x1c\\xd8\\x3e\\xb9\\x35\\x69\\x83\\x47\\xa5\\x70\\x72\\x70\\x9a\\x86\\xb4\\xe5\\xa7\\xa6\\x26\\xe0\\x7a\\x3f\\x2e\\x7e\\x34\\x1c\\x77\\x83\\xa5\\x40\\xf8\\x4a\\xa7\\x3e\\x91\\x7e\\x86\\x7b\\xb8\\x0b\\xac\\xe6\\x25\\x47\\x05\\xa9\\xd1\\xa1\\x18\\x5d\\xe5\\x6e\\x1a\\x4e\\x78\\xaa\\xf5\\x39\\xe7\\x49\\xb8\\xf7\\x65\\xbd\\x05\\x2c\\x4c\\xd1\\x5b\\x63\\x8b\\xf8\\xec\\xf8\\x7d\\x98\\x14\\x60\\x6f\\xed\\x5a\\x69\\xf4\\xda\\xe9\\xda\\x47\\xf3\\x80\\x6d\\xd9\\x0b\\xe6\\x4f\\xcc\\xd3\\x36\\x5c\\xbe\\x9e\\x01\\xc5\\x88\\xfe\\x65\\xd6\\xb6\\x03\\x28\\x07\\x40\\x96\\x2a\\xa8\\xdd\\xb9\\x5a\\x3f\\x4f\\x67\\x4c\\x03\\xbc\\x40\\x43\\x09\\x2c\\x54\\x45\\x95\\x56\\x82\\x70\\xa2\\xc2\\xa8\\xaa\\x06\\xe3\\xf6\\x7c\\x31\\x99\\x8c\\x50\\xb9\\xa5\\x8a\\xca\\xd0\\x06\\x90\\xd3\\x84\\x81\\x14\\xcb\\x19\\x32\\x93\\xc8\\xac\\x21\\x01\\x6f\\xd9\\x96\\xf5\\xc6\\x42\\x14\\x06\\x4f\\x82\\x16\\x7b\\x2c\\x92\\x0c\\xd8\\xa8\\x39\\x75\\x58\\x52\\xac\\x77\\xc3\\xd9\\x05\\x26\\xdd\\x3a\\xdb\\x96\\x83\\x7c\\xf4\\xe7\\x26\\xf3\\x4b\\xd0\\x29\\x55\\xcb\\xac\\x5b\\x82\\xc9\\x2c\\xf4\\xaa\\x8b\\x54\\xbb\\x6e\\x43\\x6d\\xae\\x9b\\xf8\\x93\\xef\\x05\\x0c\\x6f\\x13\\x5a\\x7e\\x62\\xfc\\xd8\\x34\\xda\\xc1\\xd2\\xbe\\x8b\\x8e\\x59\\xd6\\x96\\x13\\x18\\x11\\x70\\x1c\\x43\\x18\\xbb\\x6e\\x9b\\x5a\\x20\\xbe\\xc6\\x56\\xfd\\x2b\\xa1\\x92\\xe2\\x73\\x2f\\x42\\x29\\x63\\xbe\\xd4\\xa4\\xfd\\x1e\\xc9\\x32\\x63\\x98\\xdc\\xe2\\x90\\xe0\\x84\\x8c\\x70\\xea\\x23\\x6c\\x04\\xc7\\xdb\\xb3\\xb6\\x79\\x21\\x44\\x0c\\x98\\xd7\\x27\\x53\\xf6\\xa3\\x32\\xea\\xad\\x59\\xfd\\x0f\\x57\\x74\\x29\\x23\\xfb\\x62\\x5f\\xef\\x07\\x0f\\x34\\x22\\x5e\\xa0\\x6c\\x23\\x63\\xd1\\x23\\x66\\x6b\\x99\\xac\\x7d\\x5e\\x55\\x0d\\xa1\\xe4\\x04\\xe5\\x26\\xb5\\xb2\\x29\\xcb\\x13\\x0b\\x84\\xb1\\x90\\x3e\\x43\\x1c\\xdb\\x15\\xb3\\x37\\x70\\xf5\\x81\\x1d\\x49\\xfb\\xd5\\x0d\\x60\\xa3\\x47\\x4c\\x0c\\x35\\xfc\\x02\\x1d\\x86\\x81\\x81\\x9e\\xc7\\x94\\xcc\\x32\\xa6\\x34\\xbc\\x46\\xa9\\x55\\xaa\\x02\\x46\\xb4\\xff\\x11\\x24\\x62\\x3c\\xba\\xfb\\x3c\\xb9\\xd3\\xb9\\x2a\\x90\\xfd\\xe6\\x48\\xe4\\x14\\x63\\x61\\x92\\x95\\x2a\\x92\\x29\\x1e\\x5f\\x86\\xef\\xdd\\xb8\\x9c\\xa0\\x78\\xae\\xa7\\x71\\x7f\\xc7\"},\n{{0xe3,0xca,0x37,0x13,0xa2,0xfd,0x41,0x2a,0xd5,0x33,0x6b,0xc3,0x56,0xb7,0x7b,0xe0,0x27,0xd5,0xb7,0x08,0x15,0xb3,0xac,0x2a,0xec,0xd8,0x34,0x0e,0xf5,0xf8,0x89,0xb1,},{0x1d,0x51,0x6c,0xb8,0xbe,0xf1,0x16,0xa0,0xc1,0xb6,0x92,0x90,0x09,0x93,0x3f,0x6e,0xb6,0x2c,0x23,0x05,0x07,0x45,0xfe,0x7e,0x8d,0x3c,0x63,0x16,0x23,0x77,0x81,0x11,},{0xb3,0x85,0x7e,0xa6,0x1b,0xaa,0x9e,0x62,0x83,0x8c,0x4e,0x3a,0x99,0x65,0x02,0xd3,0x36,0x4f,0xe1,0xec,0x59,0x42,0x58,0x35,0x50,0x73,0xdd,0x10,0xe4,0x97,0xc6,0x00,0xbe,0xfb,0x1f,0x8f,0x23,0x3f,0xd6,0xe3,0xb2,0xc8,0x7f,0x10,0xdc,0xb7,0x26,0x1a,0xaf,0x34,0x81,0xbf,0xd0,0x90,0x26,0x05,0xac,0xcc,0x90,0x0f,0xef,0x84,0xd4,0x07,},\"\\xdd\\x99\\xba\\xf2\\x95\\xe0\\x13\\xee\\xd1\\x07\\xba\\x8a\\xf8\\x11\\x21\\xaa\\xf1\\x83\\x5a\\x3c\\xca\\x24\\xf8\\xe4\\x64\\xb4\\xcf\\xca\\xa3\\xc7\\xbf\\xfe\\x6f\\x95\\x36\\x01\\x6d\\x1c\\x8c\\xf3\\x75\\x03\\x8c\\x93\\x27\\xe8\\xe2\\x1b\\x00\\x40\\x66\\xf5\\xea\\xc0\\xf7\\x6a\\x3e\\x8e\\xdf\\xb0\\x7b\\xe8\\xbd\\x2f\\x6b\\xc7\\x9c\\x3b\\x45\\x6d\\xe8\\x25\\x95\\xe2\\xc2\\x10\\x5b\\xb1\\xb0\\xaa\\xba\\x5e\\xee\\xe1\\xad\\xef\\x75\\x21\\x67\\xd6\\x33\\xb3\\x22\\xeb\\xf8\\xf7\\xcd\\x5f\\xbf\\x59\\x50\\x8f\\xdb\\xdb\\xec\\xf2\\x5e\\x65\\x7a\\x9c\\x70\\x50\\xaf\\x26\\xa8\\x0a\\x08\\x5b\\x08\\x17\\xc6\\x21\\x7e\\x39\\xac\\xd5\\x4c\\xb9\\xfa\\x09\\x54\\x0f\\xc7\\xbd\\xc5\\x22\\x6d\\x6a\\x27\\x6d\\x49\\x2c\\xc8\\xa3\\xdf\\xfc\\x2a\\xbc\\x6d\\x0b\\x9f\\xb0\\x8c\\xbc\\xcd\\xd9\\x43\\x2e\\x44\\x98\\x21\\xa5\\xdc\\x98\\xcf\\xb3\\xa4\\x18\\xe5\\x39\\xc8\\x90\\xfe\\x5a\\x04\\x46\\xb9\\xf8\\x1d\\x30\\x67\\x00\\x92\\x7a\\xde\\x61\\xcf\\xdc\\xc0\\x62\\x4f\\x13\\xb5\\x84\\x07\\x48\\x77\\x46\\x04\\x80\\x57\\x31\\xd9\\x2e\\x77\\xd5\\xde\\xf6\\x6b\\xe4\\x4c\\xc8\\x17\\x94\\x6f\\x1c\\xd7\\x58\\x19\\x6c\\xf4\\x80\\xf9\\x9e\\x71\\x17\\x83\\x5c\\x4c\\x87\\xcb\\xd6\\x40\\x77\\xa5\\x62\\xa8\\x0c\\xf1\\x1d\\x8c\\xa6\\x5b\\xe7\\xa9\\x4d\\x92\\xb9\\xdd\\xae\\xa9\\x97\\xe9\\x3f\\x14\\x48\\x57\\x7e\\xd6\\xd8\\x43\\x6b\\x2f\\x31\\x44\\x69\\x2c\\x1f\\xd7\\xd2\\x8a\\x03\\xe9\\x27\\x4b\\xc9\\xe8\\x66\\x9d\\x85\\x75\\xf5\\xde\\x20\\xcf\\xbd\\xbc\\xb0\\x4e\\x9f\\x39\\xf3\\x45\\x1d\\x70\\x48\\x37\\x5e\\x26\\x98\\xe7\\x22\\x84\\x6c\\xb4\\xf2\\xd1\\x9a\\x81\\x0c\\x53\\xd4\\xc1\\xa6\\xc3\\xb7\\x70\\xfb\\x40\\x2d\\xf0\\x53\\x0e\\x7b\\x29\\x07\\x22\\x3f\\xd0\\x89\\x9e\\x00\\xcb\\x18\\x8c\\xa8\\x0c\\x15\\x31\\xb4\\xe3\\x7f\\xba\\x17\\x6c\\x17\\xa2\\xb8\\xf5\\xa3\\xdd\\xc7\\xa9\\x18\\x8d\\x48\\xff\\xc2\\xb2\\x72\\xc3\\xda\\x9c\\x9b\\x89\\xdf\\xe5\\x3f\\x2f\\xe7\\xe3\\x67\\x2f\\x91\\xd1\\x18\\x18\\x49\\x1a\\xce\\x14\\x0a\\xdc\\xae\\x98\\x50\\x2e\\x11\\x4f\\x4b\\x35\\x2b\\x90\\xe2\\xe7\\xfb\\xd3\\x33\\xb2\\x45\\x9e\\x7f\\x15\\xdd\\x07\\x64\\xc9\\xc3\\x4e\\x4c\\xb7\\xcc\\x09\\x55\\x00\\xcd\\xa0\\x35\\xe8\\xe2\\xe4\\xe3\\xc8\\xfd\\x5d\\xf5\\xf3\\xaa\\x57\\x9a\\x73\\x5d\\xd8\\xa9\\xf1\\x9e\\xf3\\x36\\xfa\\x97\\x11\\x14\\xe4\\x66\\x18\\x73\\x4a\\x4c\\x13\\xd3\\x0c\\x81\\x12\\x8c\\xa2\\x1d\\xef\\x47\\x33\\x01\\x03\\xd2\\x3d\\x80\\xff\\xe6\\x74\\x21\\xa6\\xcc\\xf9\\xf3\\x6a\\x93\\xf0\\x56\\x03\\xc5\\x99\\xee\\x10\\xb0\\x34\\x51\\xf3\\x6b\\x21\\x33\\xc1\\x87\\xa7\\x9a\\xd9\\xe6\\xfd\\xfb\\xb1\\x25\\x95\\xab\\x73\\xbb\\x3e\\x2e\\x2e\\x43\\x03\\x0f\\xd3\\x7e\\x59\\x1c\\xf5\\x5d\"},\n{{0x29,0xa6,0x3d,0xcd,0x48,0xa3,0x51,0x77,0x14,0x11,0xfd,0xdc,0xab,0x46,0xbb,0x07,0x1e,0x91,0x49,0x85,0x76,0xe8,0xd0,0x2f,0x8b,0x60,0x44,0xf5,0xbd,0xd3,0xed,0x90,},{0x39,0x23,0xfd,0xcc,0x2a,0x9f,0xe5,0xca,0xbf,0x6e,0x99,0x32,0xe4,0x6d,0xbd,0x2b,0x7f,0x36,0x32,0x50,0x0f,0x9d,0x95,0x55,0x2d,0xb2,0xb0,0x45,0xbc,0x41,0x16,0x6f,},{0x12,0xbf,0x62,0x95,0x93,0xe2,0xca,0xad,0xc9,0x10,0xec,0x40,0xbf,0xe2,0xb7,0xa6,0x25,0x14,0x12,0x6b,0x16,0xba,0x3a,0x43,0x8d,0x88,0xe2,0xd2,0x1f,0x59,0x5a,0xae,0xe8,0xab,0xfa,0x4a,0xf2,0xec,0x87,0x03,0x61,0xd0,0xea,0x04,0xdf,0xc8,0xc6,0xa3,0x30,0xfb,0x28,0x41,0xc2,0xd8,0x21,0x1a,0x64,0xfa,0x1e,0x7e,0x7d,0x27,0x38,0x00,},\"\\xff\\x18\\xca\\x0c\\x20\\x4c\\x83\\x86\\xa4\\xaa\\x74\\xec\\x45\\x73\\xc7\\xb6\\x92\\x16\\xb3\\x14\\x70\\xda\\xed\\xd9\\x6a\\x4f\\x23\\x02\\x11\\x6c\\x79\\x55\\xd7\\x2d\\xac\\xc8\\x8e\\x37\\x14\\x55\\x0c\\x09\\xe6\\xf7\\xb9\\xa8\\x58\\x62\\x60\\xdc\\x7e\\x63\\xda\\x4c\\x63\\x3b\\xae\\x01\\x62\\xe1\\x16\\xe5\\xc1\\x79\\x7b\\x78\\xd8\\x7d\\x47\\xff\\xee\\xa3\\xd7\\x81\\x9d\\xf9\\xc8\\x52\\xf0\\xff\\x30\\x93\\x6a\\x10\\x5d\\x3a\\xf5\\x53\\x1a\\x8f\\x89\\x54\\x97\\x11\\xc1\\x4c\\x2d\\x3e\\xe1\\x15\\x64\\xe7\\xc8\\x52\\x5b\\xd5\\x88\\x64\\x00\\x97\\x62\\xa0\\x55\\x41\\xd8\\xe0\\x7a\\xd8\\x41\\xa5\\x5a\\x6a\\x9a\\x00\\x7e\\xf2\\x09\\xcc\\xec\\x4b\\x56\\x40\\xba\\xbe\\x35\\x65\\x1b\\x61\\xdf\\x42\\xde\\x4d\\x91\\x0e\\xe7\\x3a\\x93\\x3c\\x0b\\x74\\xe9\\x95\\x75\\x7e\\x84\\xa9\\x9e\\xb0\\x34\\xf4\\x18\\x07\\x18\\x3c\\x90\\xca\\x4e\\xa8\\xd8\\x4c\\xdb\\xa4\\x78\\x61\\x3c\\x8e\\x58\\x7c\\xb5\\xf8\\xfb\\x6a\\x05\\x50\\x81\\xda\\x6e\\x90\\x22\\x0d\\x5d\\x86\\xe3\\x4e\\x5f\\x91\\xe4\\x88\\xbd\\x12\\xc7\\xa1\\xa6\\xb3\\xc9\\xfc\\xe5\\x30\\x5e\\x85\\x34\\x66\\x58\\xef\\xfa\\x81\\x0d\\x0e\\x8a\\x2a\\x03\\x9d\\xb4\\xa4\\xc9\\x49\\x65\\xbe\\x40\\x11\\xf9\\xd5\\xe5\\xda\\x26\\x62\\x33\\xe6\\xc4\\xe1\\x8e\\xd4\\xf8\\xa2\\x5a\\x57\\xe4\\x0a\\x59\\x1c\\x7e\\xd5\\x90\\xc0\\xf8\\xb1\\xa1\\x19\\xc7\\xc9\\x74\\x7f\\x69\\x1b\\x02\\x19\\x6c\\xd1\\x8e\\x69\\x45\\x21\\x3f\\x1d\\x4c\\x8c\\x95\\x79\\xc6\\xe0\\xa2\\xac\\x45\\x92\\x41\\x28\\xd6\\xd9\\x2c\\x8e\\x4c\\x66\\x06\\x53\\x20\\x35\\x3d\\x48\\xd1\\xd5\\xe1\\x31\\x94\\xd9\\x05\\xf8\\x37\\x07\\x8f\\x8d\\xac\\x0b\\x68\\xcf\\x96\\xae\\x9e\\x70\\x55\\x4c\\x14\\xb2\\xfa\\x29\\xb1\\x96\\x30\\xe4\\xb0\\xf5\\xd2\\xa7\\x67\\xe1\\x90\\xef\\xbc\\x59\\x92\\xc7\\x09\\xdc\\xc9\\x9a\\xa0\\xb5\\xaa\\xf4\\xc4\\x9d\\x55\\x13\\xe1\\x74\\xfd\\x60\\x42\\x36\\xb0\\x5b\\x48\\xfc\\xfb\\x55\\xc9\\xaf\\x10\\x59\\x69\\x27\\xbc\\xfa\\xd3\\x0b\\xac\\xc9\\x9b\\x2e\\x02\\x61\\xf9\\x7c\\xf2\\x97\\xc1\\x77\\xf1\\x92\\x9d\\xa1\\xf6\\x8d\\xb9\\xf9\\x9a\\xc6\\x2f\\xf2\\xde\\x3b\\xb4\\x0b\\x18\\x6a\\xa7\\xe8\\xc5\\xd6\\x12\\x39\\x80\\xd7\\x59\\x92\\x7a\\x3a\\x07\\xaa\\x20\\x8b\\xee\\xb7\\x36\\x79\\x5a\\xe5\\xb8\\x49\\xd5\\xda\\xe5\\xe3\\x57\\x37\\x10\\xaa\\xa2\\x4e\\x96\\xd5\\x79\\x1e\\x27\\x30\\xd0\\x27\\x0f\\x5b\\x0a\\x27\\x05\\xba\\x51\\x5d\\x14\\xaa\\x7e\\x6f\\xa6\\x62\\x23\\x75\\x37\\x7f\\x9a\\xba\\x64\\xd0\\x25\\x69\\xa2\\x09\\xd3\\x3d\\xe6\\x86\\xe0\\x89\\xec\\x60\\x11\\x8e\\x48\\x14\\xff\\xc6\\xc0\\x77\\x8c\\x64\\x27\\xbc\\xe2\\xb6\\xb8\\x44\\xcf\\xcd\\x5a\\x7c\\xed\\x0e\\x35\\x30\\x3f\\x50\\xa0\\xdf\\xe5\\xdf\\x5d\\xde\\x1a\\x2f\\x23\"},\n{{0xc7,0x18,0x8f,0xdd,0x80,0xf4,0xcd,0x31,0x83,0x9e,0xc9,0x58,0x67,0x1e,0x6d,0xd0,0x8b,0x21,0xf9,0xd7,0x52,0x8c,0x91,0x59,0x14,0x37,0x34,0xf9,0x4b,0x16,0x98,0x83,},{0x01,0x97,0x52,0xff,0x82,0x9b,0x68,0x59,0xb9,0x05,0x8d,0x00,0xc2,0x79,0x5e,0x83,0x56,0x55,0x44,0x06,0x75,0x75,0x3f,0x37,0xe8,0x5e,0xb7,0xbc,0x58,0x39,0xc4,0xca,},{0x35,0xc1,0x70,0xdd,0x0c,0x6d,0xc2,0x92,0x0a,0x59,0x57,0x75,0xd8,0xe2,0xdd,0x65,0x24,0x3e,0x9c,0x1b,0xf9,0x6e,0xf4,0x27,0x79,0x00,0x1e,0xd4,0x5f,0x01,0xb7,0xdf,0xeb,0xd6,0xf6,0xa7,0xdc,0x2d,0x38,0x6e,0xf4,0xd2,0xa5,0x67,0x79,0xeb,0xe7,0x7f,0x54,0xe5,0xae,0xcf,0xda,0x2d,0x54,0xa0,0x68,0x47,0x6b,0x24,0xdb,0xd7,0x8b,0x0c,},\"\\x4a\\xf5\\xdf\\xe3\\xfe\\xaa\\xbe\\x7f\\x8f\\xcd\\x38\\x30\\x8e\\x0b\\xd3\\x85\\xca\\xd3\\x81\\x1c\\xbd\\xc7\\x9c\\x94\\x4e\\xbf\\xe3\\xcd\\x67\\x5c\\xf3\\xaf\\xbe\\xf4\\x54\\x2f\\x54\\x29\\x75\\xc2\\xe2\\xa6\\xe6\\x6e\\x26\\xb3\\x2a\\xc3\\xd7\\xe1\\x9e\\xf7\\x4c\\x39\\xfa\\x2a\\x61\\xc5\\x68\\x41\\xc2\\xd8\\x21\\x2e\\x2b\\xd7\\xfb\\x49\\xcf\\xb2\\x5c\\xc3\\x60\\x9a\\x69\\x3a\\x6f\\x2b\\x9d\\x4e\\x22\\xe2\\x09\\x9f\\x80\\xb7\\x77\\xd3\\xd0\\x5f\\x33\\xba\\x7d\\xb3\\xc5\\xab\\x55\\x76\\x6c\\xeb\\x1a\\x13\\x22\\xaf\\x72\\x6c\\x56\\x55\\x16\\xce\\x56\\x63\\x29\\xb9\\x8f\\xc5\\xdc\\x4c\\xbd\\x93\\xce\\xfb\\x62\\x76\\x88\\xc9\\x77\\xaf\\x93\\x67\\xb5\\xc6\\x96\\x59\\xe4\\x3c\\xb7\\xee\\x75\\x47\\x11\\xd6\\x65\\xc0\\x03\\x2a\\xe2\\x29\\x34\\xf4\\x4c\\x71\\xd3\\x11\\x78\\xef\\x3d\\x98\\x10\\x91\\x28\\x74\\xb6\\x2f\\xa5\\xe4\\x02\\x0e\\x6d\\x5d\\x64\\x58\\x18\\x37\\x32\\xc1\\x9e\\x2e\\x89\\x68\\x5e\\x04\\x64\\xe9\\x1a\\x9b\\x1c\\x8d\\x52\\x51\\xe2\\x4e\\x5f\\x91\\x81\\x3f\\x50\\x19\\xa7\\x40\\xa0\\x4b\\x5d\\x91\\xcb\\xb8\\x30\\x9e\\x51\\x61\\xbb\\xa7\\x9d\\xca\\xb3\\x82\\x39\\xa0\\x91\\xf5\\x0e\\x09\\x9f\\xf8\\x19\\xe3\\xa7\\xb5\\x20\\x5f\\xe9\\x07\\xcd\\xfe\\x9c\\x0d\\xc3\\xee\\x85\\xe3\\x2d\\x7b\\xcd\\x3c\\xe0\\x26\\x35\\xe2\\x05\\x83\\x88\\x03\\x1e\\x31\\x7f\\xbf\\x22\\xab\\x9f\\x39\\xf7\\xf7\\xe3\\xcd\\x1a\\x11\\xa9\\xc1\\xf4\\x5f\\x4e\\x1e\\x42\\xd2\\x53\\x6c\\x12\\x2c\\x59\\x18\\x37\\x91\\x18\\x47\\x10\\x8c\\xea\\xfd\\x99\\x08\\x13\\xc2\\xb6\\x34\\x4c\\xff\\xc3\\x4b\\xe3\\x71\\x61\\xdd\\x81\\x56\\x26\\x90\\x0e\\x8f\\xcb\\x85\\xc2\\x1a\\xfb\\x4f\\x6b\\xe8\\xad\\x01\\x51\\x6a\\x31\\xc2\\xa6\\x58\\x03\\x15\\x85\\x7c\\x6a\\x21\\x67\\x35\\xca\\x99\\x10\\x09\\xdb\\xc2\\xea\\x50\\x34\\x16\\x07\\x47\\xa8\\x69\\xd5\\xca\\xdb\\x0b\\x47\\xff\\xbd\\x5d\\x3a\\xc9\\x7f\\xdd\\x05\\x26\\xca\\xe6\\xea\\xa3\\x5c\\xff\\x7a\\x16\\xea\\xf4\\xfb\\x95\\x0c\\xa3\\x15\\x11\\x34\\x6f\\xea\\x61\\x41\\x99\\x9a\\x3f\\x75\\x4e\\x62\\x81\\xcf\\xba\\x15\\xe8\\xa8\\x26\\x93\\x2c\\x58\\x9c\\x5d\\x24\\x7c\\x90\\x9d\\x94\\xb4\\xea\\xb7\\xeb\\xcb\\x09\\x07\\x76\\x48\\xaf\\x06\\x5c\\x2d\\x86\\x61\\x1e\\xb5\\x88\\x45\\x3e\\xd7\\xc2\\x47\\x80\\xd7\\x3c\\x68\\x9c\\x87\\x44\\xaf\\xd5\\x33\\xa8\\x6d\\x9e\\xe9\\xe3\\x36\\x57\\x32\\xcb\\xd0\\xc3\\x51\\xe4\\x36\\xf8\\x98\\xb7\\x04\\x32\\x92\\x09\\x7e\\x03\\xe6\\x08\\x1a\\x23\\xac\\x86\\x5e\\x19\\xdc\\x88\\x58\\x96\\x9b\\x99\\x9d\\x01\\xfa\\x65\\xef\\x20\\x0c\\x3f\\x26\\x9c\\x81\\x8e\\x30\\xb9\\x36\\x5e\\xcc\\x68\\x3b\\xcf\\xe6\\x9c\\x20\\x3b\\x4e\\x0a\\xb6\\xfe\\x0b\\xb8\\x71\\xe8\\xec\\xaa\\xae\\x82\\xd3\\xac\\xd3\\x5d\\x5b\\x50\"},\n{{0x38,0xba,0x06,0x21,0x70,0x4d,0x21,0x55,0xfc,0x2f,0x78,0x55,0x51,0x96,0x57,0x5d,0xe0,0x6d,0x80,0x25,0x5c,0x35,0xe9,0xdc,0x96,0x5b,0x6f,0xe9,0x6a,0x4d,0x53,0x89,},{0x43,0x88,0xf7,0xf6,0x8a,0x9e,0xff,0xbc,0x36,0x6e,0x42,0xd9,0x07,0x01,0x56,0x04,0xda,0xce,0xd1,0x72,0x7c,0xd1,0xd8,0x9d,0x74,0xad,0xcc,0x78,0x9f,0xd7,0xe6,0xe1,},{0x42,0xbe,0xd6,0xa9,0x87,0x86,0xf6,0x64,0x71,0x5f,0x39,0xbb,0x64,0x3c,0x40,0x5a,0xe1,0x75,0x00,0x56,0x46,0x0e,0x70,0x04,0x69,0xc8,0x10,0x38,0x95,0x04,0xc5,0x1c,0xff,0xd9,0xe1,0xa9,0x4c,0x38,0xf6,0x92,0xfb,0x31,0x62,0x65,0x31,0x6d,0x8f,0x4d,0xc3,0xad,0x1c,0xdd,0x8a,0x6d,0x59,0x91,0xef,0x01,0x0c,0xd1,0x48,0x9d,0x7c,0x09,},\"\\xed\\x4c\\x26\\x83\\xd6\\x44\\xb0\\x5b\\x39\\xb0\\x48\\xef\\x1f\\x8b\\x70\\x25\\xf2\\x80\\xca\\x7e\\x8f\\xf7\\x2c\\xb7\\xed\\xa9\\x93\\x29\\xfb\\x79\\x54\\xb7\\x00\\x40\\x07\\x05\\x27\\x5f\\x20\\xb8\\x58\\xcf\\x7e\\x34\\x9a\\x35\\x10\\x66\\x5b\\x63\\x06\\x09\\xc5\\xe2\\xe6\\x20\\x69\\x26\\x3a\\xb9\\xc5\\x5e\\x41\\x23\\xa5\\x64\\xdc\\xa6\\x34\\x8c\\x8a\\x01\\x33\\x20\\x75\\xe7\\xa5\\xbe\\xc9\\xc2\\x0a\\x03\\x80\\x79\\x57\\xfe\\xfa\\x91\\x0e\\x60\\xc3\\x5a\\xe5\\x79\\x77\\x8c\\xe2\\xce\\x42\\xe6\\xa6\\x9a\\x1b\\x64\\x76\\x81\\xe4\\x3e\\xc4\\xb6\\x3b\\xd5\\xfb\\xef\\xab\\xb3\\x17\\x12\\xcb\\x3d\\x64\\x19\\xea\\xd7\\x8d\\xd4\\x1c\\x8a\\x92\\xaa\\xce\\xb6\\x3c\\xbf\\xa8\\x9d\\x2a\\xf3\\x96\\x06\\xde\\x01\\x0a\\x39\\x7e\\x30\\x20\\x53\\xa6\\x15\\xc1\\x6e\\x5e\\x95\\xad\\x99\\x35\\xc0\\x79\\xa0\\xb8\\x10\\x31\\x25\\x78\\x94\\x71\\xa1\\xe3\\x57\\x4f\\x42\\x9b\\x29\\xe4\\xd2\\x25\\xc7\\x72\\x3f\\xbb\\x3c\\xf8\\x8c\\xbd\\x73\\x82\\x3d\\x9f\\x0b\\x6c\\x7d\\x05\\xd0\\x0b\\xde\\xb0\\xfb\\x0a\\xd3\\xd7\\x13\\x20\\x33\\x18\\x3e\\x21\\xf6\\xc1\\xe8\\xd8\\xe4\\xc0\\xa3\\xe4\\xf5\\x2f\\x50\\x01\\xda\\x68\\x71\\x71\\x34\\x5c\\x6d\\xc8\\xb4\\x2c\\x42\\xa6\\x0d\\x1f\\x1f\\xfa\\x8f\\xe3\\xe7\\xbc\\xec\\xe5\\x9a\\x03\\x58\\x78\\xf9\\xd4\\xd8\\x11\\x27\\xe2\\x24\\x96\\xa4\\x9b\\xfc\\xf6\\xbf\\x8b\\x46\\xa8\\x0b\\xd5\\x62\\xe6\\x52\\x55\\x07\\x1f\\x9d\\x11\\xa9\\xeb\\x04\\x81\\xf4\\x62\\x6d\\x4d\\x71\\xff\\xc3\\x8a\\xfe\\x6e\\x35\\x8a\\x4b\\x28\\x91\\x79\\xcb\\xce\\x97\\x64\\xd8\\x6b\\x57\\xac\\x0a\\x0c\\x82\\x7e\\x8f\\xf0\\x78\\x81\\x33\\x06\\xa1\\xd5\\xfa\\xdd\\x32\\xb4\\x6a\\x1f\\xbc\\xd7\\x89\\xff\\x87\\x54\\x06\\x3e\\xec\\xfe\\x45\\x31\\x3b\\xeb\\x66\\x01\\xc3\\xa3\\x01\\x0e\\x8e\\xb9\\x7c\\x8e\\xff\\xbd\\x14\\x0f\\x1e\\x68\\x83\\x11\\x09\\x2d\\x27\\x3c\\x4d\\xef\\xca\\x47\\xda\\x6f\\x1f\\x08\\x25\\x74\\x46\\x76\\xf9\\xa2\\x80\\xb6\\xc2\\xa8\\x14\\xfa\\x47\\xfa\\xbc\\x19\\x80\\xd0\\xb3\\x7f\\x08\\x7a\\x53\\xca\\x87\\x78\\xf3\\x9f\\xfb\\x47\\x4f\\xf5\\xf1\\x17\\x1b\\x44\\x2c\\x76\\xdd\\x00\\x8d\\x92\\x18\\x2f\\x64\\x4a\\x71\\x4a\\x0f\\x01\\x1e\\x21\\x5a\\x78\\xb9\\x7a\\xf3\\x7b\\x33\\x52\\x0e\\xbf\\x43\\x37\\x2a\\x5a\\xb0\\xcf\\x70\\xdc\\xc1\\xdc\\x2f\\x99\\xd9\\xe4\\x43\\x66\\x58\\xf8\\xe0\\x7c\\xdf\\x0b\\x9e\\xa4\\xdd\\x62\\x24\\xc2\\x09\\xe7\\x52\\x1b\\x98\\x1e\\xe3\\x51\\xc3\\xc2\\xdf\\x3a\\x50\\x04\\x05\\x27\\xfc\\xd7\\x28\\x04\\x17\\x60\\x46\\x40\\x5d\\xb7\\xf6\\x73\\x4e\\x85\\xc5\\xd3\\x90\\xf5\\x20\\xb0\\xc0\\x8d\\xcb\\xfa\\x98\\xb8\\x74\\x24\\x80\\xd5\\xe4\\x6f\\x9b\\xe8\\x93\\xf6\\xd6\\x61\\x43\\x40\\xf8\\x16\\x16\\x11\\xd5\\x05\\x3d\\xf4\\x1c\\xe4\"},\n{{0xae,0x33,0x1f,0xc2,0xa1,0x47,0x59,0xb7,0x3f,0x1c,0xd9,0x65,0xe4,0x85,0x14,0xe1,0x2b,0x29,0xf6,0x3b,0x06,0xcc,0xfc,0x0a,0xd4,0x9f,0x36,0x82,0x0e,0x57,0xec,0x72,},{0x08,0x80,0x3d,0x48,0x23,0x8e,0xda,0x3f,0x9c,0xeb,0xb6,0x28,0x53,0x01,0x21,0xde,0x00,0xf0,0xf0,0x46,0x8c,0x20,0x2d,0x88,0x52,0x8b,0x8b,0xce,0xc6,0x87,0xa9,0x03,},{0x75,0xf7,0x39,0x08,0x88,0x77,0xe0,0x6d,0xc5,0x6d,0xae,0xc8,0xf1,0xe4,0xd2,0x11,0xb7,0x54,0xe3,0xc3,0xed,0xbf,0xa7,0xed,0xa4,0x44,0xf1,0x8c,0x49,0xb6,0x9c,0x5a,0x14,0x2d,0xb4,0x5a,0x0a,0x76,0x50,0xe4,0x7d,0x10,0x55,0x0b,0xa6,0x81,0xff,0x45,0xdd,0x44,0x63,0xc4,0xac,0x48,0xbf,0x44,0xb7,0x30,0x34,0xbd,0x56,0x59,0x22,0x0e,},\"\\x57\\x16\\x00\\x33\\x90\\xe4\\xf5\\x21\\x65\\x98\\xa0\\x3d\\x7c\\x43\\x0d\\xbf\\x49\\x5e\\xe3\\xa7\\x55\\x7b\\x58\\x06\\x32\\xba\\x59\\xf1\\x51\\x98\\xb6\\x18\\x0a\\x42\\x46\\x9c\\x23\\x7d\\xb5\\xbc\\x81\\xf2\\x9c\\xfa\\xab\\x0a\\xff\\x3c\\x99\\x66\\x30\\x9a\\xb0\\x69\\x58\\xc9\\xd7\\x12\\x6a\\xdd\\x78\\xe3\\xb3\\x24\\x59\\xff\\x8a\\x0e\\x0b\\xde\\xf8\\x74\\xb5\\x8e\\x60\\x83\\x66\\x8f\\x38\\xad\\x7d\\x63\\xaa\\xe1\\xf1\\x2e\\x26\\xa6\\x13\\x34\\x8f\\x9f\\x03\\xea\\x5d\\x20\\x5f\\x04\\x5d\\x78\\xcc\\x89\\x02\\xd4\\x7f\\x81\\xe8\\xb5\\x22\\x93\\xe7\\x0e\\x86\\xc9\\x80\\x3d\\x4d\\xac\\xea\\x86\\xc3\\xb6\\x74\\x58\\xae\\x35\\x79\\xbc\\x11\\x11\\x3b\\x54\\x90\\xbc\\xf3\\xe1\\xcd\\x4e\\x79\\x79\\xc2\\x64\\xd8\\x35\\x16\\x1f\\xd5\\x5e\\xfe\\x95\\x3b\\x4c\\x26\\x39\\x5d\\xd9\\x2c\\xa4\\x93\\x09\\x20\\xe9\\x04\\xfa\\xdc\\x08\\x89\\xbb\\x78\\x22\\xb1\\xdf\\xc4\\x45\\x26\\x04\\x84\\x0d\\xf0\\x24\\xdb\\x08\\x21\\xd2\\xd5\\xe9\\x67\\x85\\xa5\\xc3\\x7d\\xbf\\xd2\\xc3\\x75\\x98\\x32\\x83\\xe9\\xb5\\xb4\\x3a\\x32\\x07\\xa6\\xa9\\xb8\\x33\\x94\\x83\\x29\\xd5\\xde\\x41\\xe4\\x50\\x08\\xbc\\xba\\xd4\\x93\\xde\\x57\\x54\\xdd\\x83\\xde\\xcc\\x44\\x0e\\x51\\x66\\xed\\xaa\\xe0\\x20\\x8f\\x00\\x0c\\x5f\\x6d\\x9c\\x37\\x21\\x53\\x20\\x9e\\x5b\\x75\\x78\\x11\\x6f\\x89\\xcf\\x2f\\x8b\\x10\\x04\\xd1\\x30\\x7e\\xa7\\x9e\\xd3\\x74\\x80\\xf3\\x19\\x4a\\x7e\\x17\\x98\\x3a\\x23\\x04\\x65\\xcc\\xc3\\x0f\\xcc\\x1a\\x62\\xd2\\x80\\xfb\\xba\\xcc\\xf0\\x06\\xdc\\x4d\\xee\\x0e\\xa7\\x96\\xb8\\x1a\\xcc\\xc6\\x1a\\x06\\x3e\\x2c\\x08\\x3d\\xae\\xc0\\x39\\xbd\\x9a\\x64\\xa7\\x70\\x24\\xaf\\x82\\xec\\x1b\\x08\\x98\\xa3\\x15\\x43\\x29\\xfd\\xf6\\x16\\x73\\xc3\\x6e\\x4c\\xc8\\x1f\\x7a\\x41\\x26\\xe5\\x62\\x90\\xe4\\xb4\\x56\\x81\\x9b\\xde\\xbf\\x48\\xcb\\x5a\\x40\\x95\\x5b\\xab\\x29\\x7c\\x2b\\xbc\\xb0\\x18\\xad\\xbf\\x24\\x82\\x86\\x60\\xa5\\xd1\\x2a\\x06\\x13\\xbf\\x3c\\xcb\\x5e\\xeb\\x9a\\x17\\xfb\\x0a\\x05\\x47\\xdb\\x8d\\xa2\\x4d\\x2e\\xfb\\x87\\xba\\x1b\\x84\\x31\\x42\\xa7\\x5e\\x4c\\xa0\\xb0\\xa3\\x33\\xe4\\xa1\\x4f\\xab\\x35\\xa6\\x26\\x69\\x32\\x9c\\xa8\\x75\\x3f\\x01\\x6a\\xc7\\x0c\\xd9\\x97\\xe8\\xbc\\x19\\xee\\x44\\x8a\\xea\\xf0\\xf4\\xbf\\x3c\\xe5\\x23\\x05\\x50\\x57\\x8a\\xb6\\x4c\\x19\\x01\\x94\\x46\\xce\\x2d\\x9c\\x01\\xa0\\x3d\\x88\\x9a\\x99\\x09\\x86\\x0a\\xef\\x76\\xf0\\x67\\xc5\\x0b\\x61\\xc3\\xd0\\xf1\\x2c\\xc8\\x68\\x6f\\x5c\\x31\\xbf\\x03\\x2a\\x84\\x10\\x15\\xcf\\xef\\xf1\\xcf\\xda\\xe9\\x4f\\x6b\\x21\\xda\\xe9\\x41\\xb3\\x35\\xdc\\x82\\x1f\\x32\\x84\\xce\\x31\\x50\\x8f\\x5d\\xb5\\xc4\\x48\\xff\\xaa\\x37\\x73\\xe9\\xbe\\x1a\\x4c\\x85\\xa1\\xc5\\x8b\\x00\\x9f\\xa3\"},\n{{0x82,0x43,0x5f,0x39,0x79,0x01,0x06,0xb3,0xaf,0x72,0xf9,0x1f,0x14,0xc9,0x28,0xd2,0x46,0x5f,0x98,0xcd,0xd1,0x00,0x84,0xc4,0xa4,0x4d,0x19,0xaf,0x71,0xa1,0x92,0x7c,},{0xc5,0x2a,0x92,0x64,0x6f,0x5a,0xdb,0x21,0xc6,0xdd,0xe0,0xde,0x58,0x78,0x68,0x37,0xf8,0xa3,0x41,0x4c,0x09,0xae,0xdf,0xc2,0x7c,0x81,0x22,0x18,0xa7,0xe7,0x23,0x9e,},{0x1d,0xaa,0x44,0xef,0x06,0xd4,0xc1,0x0d,0xdb,0x48,0x67,0x84,0x23,0xc5,0xf1,0x03,0xa1,0xb5,0x68,0xd4,0x2b,0x20,0xcc,0x64,0xaf,0x11,0x0f,0xce,0x9d,0x76,0x79,0xa2,0xde,0xe4,0x12,0xb4,0x98,0x05,0x85,0xc2,0x6c,0x32,0x0d,0xba,0xa6,0x01,0xc4,0x72,0xde,0xfc,0x3c,0x85,0x41,0x5d,0xae,0xcd,0xd6,0xd2,0xd9,0xea,0xca,0xc8,0x5e,0x07,},\"\\xf3\\xd6\\xc4\\x6a\\xc5\\x24\\x8d\\x53\\x86\\xb6\\xb6\\x84\\x62\\x59\\x7d\\x64\\x70\\x39\\xf5\\x44\\xbb\\x01\\xac\\x2d\\x10\\x67\\xda\\xaa\\xa3\\x97\\xd2\\xdb\\xaf\\x12\\x5a\\x1c\\xf8\\xfd\\xf2\\x80\\xa6\\xaf\\xec\\x32\\x4d\\x53\\x11\\xf5\\x43\\x68\\x8a\\x15\\x6c\\x84\\x98\\x19\\xbb\\x04\\x6b\\x91\\x1c\\x42\\xea\\x3c\\xa0\\x1b\\x99\\x80\\x8c\\x4d\\x1f\\x3b\\x8b\\x15\\xda\\x3e\\xfe\\x2f\\x32\\x52\\x3e\\xc3\\xb0\\x9c\\x84\\xb4\\x8c\\xff\\xd1\\x3c\\x17\\xc9\\xe2\\x6c\\x91\\x2d\\x9c\\x3e\\x93\\x46\\xdf\\xae\\x3f\\xd0\\xc5\\x6c\\x88\\x58\\x78\\x07\\x82\\xf6\\x1a\\x4c\\x4d\\xbf\\xff\\x1e\\x9c\\xb4\\xb3\\x62\\xcd\\x80\\x01\\xf9\\xcd\\xfe\\xb1\\xa7\\x20\\x82\\xdc\\xe9\\xc9\\xad\\xe5\\x2e\\xff\\xc9\\x74\\x46\\x88\\xac\\x0b\\x86\\xc8\\x82\\x66\\xb5\\x3d\\x89\\x5c\\x17\\xea\\xd9\\xe8\\x9e\\xd8\\xd2\\x4d\\x40\\x64\\x2f\\x3a\\xd3\\xb9\\xbf\\x9b\\xbc\\x4d\\xda\\x79\\x66\\xef\\x83\\x28\\x28\\x9f\\xb3\\x1e\\x17\\xc8\\x1f\\xd0\\x28\\xef\\x1b\\xd9\\xa1\\xd4\\xc7\\x92\\xe8\\x6e\\xc2\\xdb\\xdc\\xe3\\xf9\\x37\\xee\\xcc\\x3e\\xeb\\x51\\x88\\xd3\\x25\\x94\\x19\\x19\\xbb\\xf7\\x5b\\x43\\x88\\xe2\\x39\\x95\\x07\\xa3\\xd7\\xfb\\x38\\x75\\x02\\xa9\\x5f\\x42\\x1c\\x85\\x82\\x6c\\x1c\\x91\\x76\\xc9\\x23\\xe3\\x16\\x31\\x0a\\x4b\\xa4\\x5c\\x8a\\x5e\\xf7\\x55\\x7c\\xf8\\x7b\\x77\\x02\\x0b\\x24\\xf5\\xba\\x2b\\xfd\\x12\\x28\\x10\\x95\\x66\\x30\\x7f\\xea\\x65\\xec\\x01\\x50\\x19\\x69\\x12\\x17\\xbc\\xe6\\x9a\\xee\\x16\\xf7\\x62\\x49\\xc5\\x8b\\xb3\\xe5\\x21\\x71\\xcf\\xef\\xd5\\x25\\x4e\\x5e\\x0f\\x39\\x71\\x69\\x18\\x6d\\xc7\\xcd\\x9c\\x1a\\x85\\xc8\\x10\\x34\\xe0\\x37\\x18\\x3d\\x6e\\xa2\\x2a\\xee\\x8b\\xb7\\x47\\x20\\xd3\\x4a\\xc7\\xa5\\xaf\\x1e\\x92\\xfb\\x81\\x85\\xac\\xe0\\x1d\\x9b\\xf0\\xf0\\xf9\\x00\\x61\\x01\\xfc\\xfa\\xc8\\xbb\\xad\\x17\\x1b\\x43\\x70\\x36\\xef\\x16\\xcd\\xae\\x18\\x81\\xfc\\x32\\x55\\xca\\x35\\x9b\\xba\\x1e\\x94\\xf7\\x9f\\x64\\x55\\x55\\x95\\x0c\\x47\\x83\\xba\\xb0\\xa9\\x44\\xf7\\xde\\x8d\\xf6\\x92\\x58\\xb6\\xaf\\xe2\\xb5\\x93\\x22\\x17\\x19\\x5d\\xa2\\x45\\xfe\\xe1\\x2a\\xc3\\x43\\x82\\x4a\\x0b\\x64\\x03\\xdf\\xe4\\x62\\xd4\\x3d\\x28\\x8d\\xb3\\x1f\\x99\\x09\\x7e\\xc3\\xed\\xc6\\xe7\\x65\\x47\\xa3\\x74\\x2f\\x03\\xc7\\x77\\xef\\xb1\\x58\\xf5\\x8d\\x40\\x53\\xfa\\x6c\\xc8\\xd6\\x8b\\x19\\x6a\\xf4\\xf9\\xde\\x51\\x6f\\xd9\\xfb\\x7a\\x6d\\x5d\\x9e\\xe4\\xa8\\x9f\\x9b\\x9b\\xce\\x1e\\x4d\\xee\\x35\\x7a\\x1e\\x52\\xc0\\x54\\x4c\\xfb\\x35\\xb7\\x09\\x2d\\x1a\\xa5\\xa6\\xf7\\xf4\\xc7\\x60\\x26\\x10\\xe9\\xc0\\x0e\\xf5\\xb8\\x76\\x1b\\xc7\\x22\\x79\\xba\\x22\\x8a\\x18\\xb8\\x40\\x0b\\xd7\\x6d\\x5b\\x2b\\xfd\\x7c\\x3c\\x04\\xaa\\xc4\\x43\\x6d\\xae\\x2e\\x98\"},\n{{0x1b,0xea,0x77,0x26,0xd9,0x12,0xc5,0x5e,0xc7,0x8b,0x0c,0x16,0x1a,0x1a,0xd3,0xc9,0xdd,0x7b,0xc3,0x29,0xf8,0x5d,0x26,0xf6,0x2b,0x92,0xe3,0x1d,0x16,0xd8,0x3b,0x48,},{0xc9,0xdd,0xb4,0x21,0x06,0xcc,0xef,0x4e,0x0e,0xf4,0x79,0x45,0x51,0xd2,0x1d,0xf9,0x4a,0x63,0x06,0x87,0x2f,0x23,0x16,0x63,0xe4,0x7e,0x24,0x1f,0x77,0xcc,0x3e,0x82,},{0xf9,0xb0,0x45,0x17,0xbd,0x4f,0xd8,0xef,0x90,0xf2,0x14,0x0f,0xc9,0x5d,0xc1,0x66,0x20,0xd1,0x60,0x2a,0xb3,0x6c,0x9b,0x16,0x5f,0xff,0x3a,0xba,0x97,0x8d,0x59,0x76,0x71,0x10,0xbb,0x4e,0x07,0xa4,0x8f,0x45,0x12,0x14,0x47,0xac,0x0c,0x1a,0xba,0xc5,0x85,0xd3,0x91,0xd4,0x04,0x20,0x41,0x89,0x86,0x28,0xa2,0xd2,0xdc,0xc2,0x51,0x0d,},\"\\xb1\\x12\\x83\\xb1\\xf0\\xce\\x54\\x9e\\x58\\x04\\x73\\x0a\\xc3\\x20\\x7a\\xc0\\x03\\x32\\xd2\\xaa\\xcf\\x9c\\x31\\x0d\\x38\\x32\\xd8\\x79\\xf9\\x63\\x4b\\xd8\\xa5\\x8a\\xdf\\x19\\x9e\\x4b\\x86\\x3b\\xb1\\x74\\x81\\xd2\\x8a\\xcb\\x2d\\xa0\\xe1\\x55\\x7b\\x83\\x36\\xa4\\x00\\xf6\\x29\\x56\\x25\\x03\\x1d\\x09\\xe4\\xdf\\x4d\\x31\\x9b\\xbc\\x1e\\x8f\\x6e\\x92\\x32\\xd2\\x30\\x53\\xbb\\x3f\\xfa\\xc4\\xfe\\x2c\\x70\\xce\\x30\\x77\\xfc\\x00\\x60\\xa5\\xcb\\x46\\x92\\xa1\\xcf\\x0b\\x3e\\x62\\xfe\\x45\\x48\\x02\\xae\\x10\\xb8\\x3d\\xed\\x61\\xb6\\xbf\\x45\\x4c\\xa7\\x5e\\x4c\\xda\\xd5\\x53\\x2f\\x20\\xb7\\x06\\x54\\xf1\\x2b\\xa9\\x06\\xf0\\x03\\xa8\\xb9\\xe9\\x86\\xf1\\x5a\\x39\\x41\\x9d\\xeb\\x2e\\xa1\\xea\\xd7\\x59\\x82\\x90\\xee\\xeb\\xf9\\x25\\x2b\\x0c\\x27\\x60\\x5a\\x7a\\x73\\xa6\\xab\\xeb\\xb4\\x22\\x71\\xd7\\x1a\\x3c\\x19\\x7a\\x46\\xbc\\xc8\\xdb\\x11\\xd9\\x24\\x28\\x42\\xf3\\x78\\x36\\x4a\\x37\\xee\\xca\\xa3\\x4e\\x98\\x21\\x35\\xbe\\x34\\x18\\x2c\\x69\\xca\\x8e\\x6e\\x3c\\x8c\\x90\\xe1\\xb4\\xb2\\xb4\\x75\\x81\\x5a\\x17\\x83\\x77\\xae\\x01\\x65\\xa7\\x64\\xc8\\xba\\x28\\x89\\xb5\\xab\\x29\\x09\\x49\\xd8\\x48\\x7a\\x88\\xe0\\xd3\\xd2\\xbc\\x7e\\x25\\x20\\x17\\x6a\\xa6\\xff\\x9f\\xf0\\xc4\\x09\\xff\\x80\\x51\\x5f\\x4f\\x0b\\x83\\xc5\\xe8\\x2c\\x23\\xfd\\x33\\x26\\xcd\\xd6\\xb7\\x62\\x52\\xe7\\xfd\\xdc\\xd6\\xe4\\x77\\x09\\x78\\xcd\\x50\\x3e\\xd2\\xd6\\xb4\\x80\\x10\\x11\\x67\\xd3\\xf1\\x91\\xfe\\xd8\\xd6\\xd7\\x4d\\x74\\xa2\\x00\\x7d\\xb1\\x09\\x2e\\x46\\xa2\\x3d\\xde\\xcd\\xdc\\xdb\\x98\\x46\\x64\\x04\\x7b\\x8d\\xd7\\xcc\\x8a\\x57\\x6e\\x1a\\x80\\x6f\\x52\\xcb\\x02\\x7a\\x94\\x80\\xa9\\x5c\\xc4\\x4b\\x1e\\x6f\\x2e\\x28\\x6e\\x9b\\x7a\\x6b\\xf7\\xb3\\x96\\xfa\\x54\\x96\\xb7\\xa5\\xb1\\xc0\\x3d\\x9c\\x5c\\x27\\xda\\x1a\\x42\\x99\\x0d\\x10\\xb1\\x2f\\xb8\\x64\\x0e\\x15\\x96\\xf2\\x6b\\x36\\x6d\\x27\\x0b\\xa6\\x4f\\x99\\xaf\\xff\\xe3\\xfe\\xce\\x05\\xa9\\xb0\\x25\\x4b\\x20\\x8c\\x79\\x97\\xcd\\xb5\\x12\\xfc\\x77\\x52\\x79\\x54\\xa1\\xcb\\x50\\xfd\\xab\\x1c\\xc9\\xa4\\x51\\x62\\x74\\x1f\\xd6\\xf9\\xd3\\xfd\\x5f\\x2e\\x38\\x28\\x53\\xd7\\x33\\x5d\\xba\\x1e\\x6b\\x29\\x59\\xdd\\x86\\xe1\\x25\\xe6\\x7b\\x53\\xdc\\x8e\\x45\\x3c\\x81\\x0b\\xc0\\x1b\\xf2\\x0b\\xce\\x7b\\x61\\x8d\\xd5\\xd1\\xed\\x78\\x41\\x06\\xee\\x06\\xa3\\xec\\xaf\\x6b\\x3b\\xee\\x0b\\x56\\x83\\x3b\\x0b\\x81\\x31\\x39\\xc5\\xa6\\x96\\x00\\x0a\\x44\\x9c\\x97\\x90\\x6a\\x2f\\xbd\\xdc\\x2d\\x9d\\xe9\\x40\\x6e\\xa2\\x82\\xac\\x4e\\xe5\\xef\\x8b\\xf3\\x85\\x4c\\x74\\xa6\\xb7\\x17\\x3d\\xd2\\xf7\\x9c\\x7a\\x12\\x6f\\x3c\\x7b\\x04\\x33\\xfd\\x4e\\xa2\\x6e\\x87\\x7a\\x14\\x83\\x1d\\xd4\\x15\\xa1\\x9d\"},\n{{0xd0,0x1a,0x0e,0xad,0x9d,0x69,0x48,0x33,0x28,0x3b,0x9c,0xd7,0x29,0x9a,0x7b,0xd7,0x5f,0xa9,0x0b,0x1d,0x2d,0x78,0x84,0xe4,0x55,0x7b,0x33,0xc9,0x98,0x77,0x2a,0x68,},{0xa0,0xf7,0x57,0x47,0x9b,0xa6,0x27,0xef,0xef,0x95,0xd6,0xec,0x7a,0x93,0x1d,0xfa,0xc4,0x37,0x3d,0xf3,0x3d,0xaa,0xf4,0xdd,0xc4,0xec,0x68,0x94,0xc8,0x26,0x1e,0xd7,},{0x9a,0x0f,0xf7,0xf3,0x51,0x74,0xec,0x3f,0x66,0xd2,0x2a,0x6f,0x06,0xdf,0x60,0xe0,0x9c,0x8f,0x62,0x3a,0x5a,0xca,0x81,0x0e,0x23,0xa8,0x8d,0x0e,0x6a,0x31,0xcb,0x6f,0x1c,0xe1,0xc1,0xf9,0xdc,0xcc,0x9e,0x14,0x84,0xb6,0x8d,0xd0,0x04,0xac,0x53,0x59,0x7e,0x29,0xad,0x6a,0xb7,0x2e,0x8c,0xe2,0xb7,0x5a,0xd5,0xb8,0x0e,0xb8,0x48,0x03,},\"\\x76\\x27\\x53\\x4e\\x9a\\x83\\xd1\\xe4\\x06\\xab\\x94\\x8d\\x30\\xd1\\xda\\x9c\\x6a\\x5d\\xb0\\x8e\\x0f\\xeb\\x7f\\xc5\\xba\\x5c\\xbf\\x76\\x84\\x9e\\xe8\\xad\\xd4\\x84\\x7e\\xf5\\xca\\x5a\\x0d\\xae\\x41\\x1a\\xca\\x09\\x74\\x51\\xcb\\x4c\\x2b\\x49\\x8c\\x94\\x70\\x97\\x40\\x70\\x07\\x64\\x0d\\xc1\\x9e\\xd9\\x38\\xe3\\xb9\\x1b\\xf5\\x1c\\x95\\x81\\x16\\x8d\\xf8\\x60\\xbd\\x94\\x75\\x16\\x68\\xda\\xbd\\x72\\x1d\\xc7\\x39\\x98\\x40\\x0b\\xe2\\x0c\\x9a\\x56\\x3d\\x50\\x51\\xef\\x70\\xe3\\x54\\x6f\\xee\\x67\\x33\\x12\\xb5\\x2a\\x27\\x40\\x41\\x05\\x7e\\x70\\x84\\x8e\\xb7\\xc5\\xa2\\x16\\x44\\xc9\\x7e\\x44\\x8a\\xbd\\x76\\x40\\x20\\x7d\\x7c\\xda\\xfc\\xf4\\x5d\\xa6\\xdf\\x34\\x94\\xd3\\x58\\x5b\\x0e\\x18\\xac\\x5a\\xc9\\x08\\x1c\\xb7\\xa4\\x07\\xa3\\x9a\\x87\\x77\\x05\\xcb\\xaf\\x79\\xa0\\x1b\\x91\\x5f\\x73\\x6e\\xb0\\x25\\xc5\\x8b\\x4b\\x5d\\x80\\x7f\\xb7\\xb7\\x56\\x6c\\x59\\x69\\x78\\x7c\\x1d\\x6c\\xa4\\xeb\\xa9\\x7d\\x50\\x9e\\xf7\\xfb\\x35\\x50\\xd2\\x1d\\x37\\x7e\\xce\\xff\\xcf\\x0e\\xb6\\x68\\x18\\x95\\xad\\xbd\\x24\\x6e\\xe7\\xbf\\x3c\\x93\\x5a\\x00\\x64\\x78\\xb8\\x32\\xec\\xe4\\x6d\\xe6\\x11\\x8b\\x17\\xe4\\x66\\xa2\\x7f\\xc2\\xa4\\x4a\\x89\\x6b\\xaa\\xe2\\x72\\xf9\\xec\\xf0\\x18\\xc6\\x5c\\xb5\\x0c\\xfb\\xfc\\x8d\\x26\\x09\\x94\\xa1\\x8a\\x83\\x2d\\x97\\x19\\x28\\xc4\\x49\\x67\\x57\\x24\\x58\\x51\\x31\\xc8\\x71\\x53\\x3c\\x98\\x97\\xd8\\xf8\\x0f\\x9c\\x04\\x16\\xb7\\x18\\x78\\x6b\\x10\\xfe\\xa8\\xeb\\x5b\\xd8\\x13\\xa2\\x69\\xa1\\xb6\\x77\\xb7\\xa2\\x50\\x7a\\x44\\xb7\\x13\\xd7\\x05\\x08\\x65\\x30\\x99\\x5e\\x59\\x33\\x5d\\xdc\\x28\\x55\\xe8\\x47\\xe4\\xf4\\xdb\\x06\\xc9\\x1f\\x1d\\x54\\x02\\x3d\\x8a\\x10\\xf6\\x9f\\x9e\\x61\\xbd\\xce\\x4b\\x68\\x6f\\xb6\\x17\\xbd\\x50\\x30\\xe7\\x55\\xca\\xdb\\x1f\\x64\\x4e\\x1d\\xdd\\x91\\x61\\x9b\\x96\\xec\\xd6\\x05\\xb0\\x01\\x98\\xb9\\xa6\\xed\\xdb\\x5a\\x84\\xeb\\xd3\\x69\\x2b\\x66\\x59\\x79\\x76\\x66\\x37\\xc6\\x77\\x37\\x8c\\x1c\\x77\\x04\\x1f\\xd4\\xa6\\xb3\\x55\\x5c\\x1d\\xc8\\xa8\\x3f\\xe9\\x01\\x3b\\xb6\\x10\\x6c\\xc1\\x8a\\x2b\\x03\\x7c\\x93\\x77\\xb7\\xa1\\xa5\\xa5\\xd0\\xdc\\xc5\\x49\\x18\\xea\\xad\\x7e\\x32\\xc8\\x80\\x76\\x7b\\x26\\xfd\\x2e\\xa2\\xd6\\x8b\\x04\\x05\\xf5\\xe0\\x74\\xf5\\x5a\\x19\\xd8\\xa3\\x9f\\xfb\\xb7\\xdc\\x32\\xfa\\xee\\x6a\\x7f\\x95\\x32\\xae\\xc8\\xa0\\x77\\x6c\\x3f\\xf8\\x3a\\xe3\\xa4\\x62\\x77\\x38\\x49\\x6a\\x37\\x1e\\xb9\\xe0\\x90\\xb7\\x4e\\x0e\\xdd\\xec\\xfc\\xd4\\x1b\\xed\\x0c\\x0c\\xe5\\x81\\x27\\x52\\x43\\x47\\x2d\\x26\\xda\\x8c\\x99\\x8e\\x4b\\x6d\\x6b\\x44\\xfc\\x88\\xba\\x2a\\xb5\\x46\\x42\\x22\\x54\\x17\\x12\\x02\\x94\\x41\\x78\\x05\\x74\\x2b\\xdb\\x33\\xb7\\xb1\\x22\"},\n{{0xdf,0x64,0x89,0x40,0xb5,0x78,0xbc,0x31,0xd2,0xa6,0x52,0x96,0x5f,0x30,0x39,0x1c,0xaf,0x06,0xd5,0xf2,0x51,0x59,0x9a,0x73,0x7c,0xe1,0x0b,0xe5,0x5f,0x4a,0x9d,0x0d,},{0x27,0xde,0x92,0x04,0x19,0xc1,0x86,0xb0,0x1b,0xe5,0x42,0x79,0xfb,0x8f,0x9b,0xe4,0xbb,0x4b,0x2c,0xad,0x75,0xca,0x7e,0x8f,0x79,0x2b,0xfa,0x7b,0xb9,0x7c,0x7f,0x41,},{0x62,0xbc,0x99,0x1c,0x45,0xba,0x9b,0x26,0xbf,0x44,0x01,0x16,0x26,0x41,0x62,0xc3,0x4c,0x88,0x59,0x78,0x85,0xe9,0x60,0x50,0x83,0xc6,0x04,0xb5,0xf5,0xd8,0xfa,0x6f,0x66,0x2b,0xa2,0x14,0xf7,0x6e,0x6c,0xf8,0x4e,0x5e,0xc0,0x4d,0xf1,0xbe,0xef,0xc5,0xf2,0x5d,0x3a,0x3b,0x72,0xf9,0x8b,0x50,0x69,0x83,0x19,0x16,0xa6,0x32,0x96,0x01,},\"\\x1a\\xe5\\x20\\xbe\\xeb\\x4a\\xd0\\x72\\x2b\\x43\\x06\\x7f\\xa7\\xcd\\x28\\x74\\xab\\xcf\\x34\\xdd\\x92\\x37\\xb4\\x47\\x8e\\xae\\x97\\x72\\xae\\xa2\\x97\\xa6\\x7f\\xb7\\x9b\\x33\\x07\\x02\\x04\\xba\\xee\\x44\\x0b\\x9c\\x87\\xe2\\xfb\\xcb\\xeb\\x76\\x80\\x1d\\xdd\\xea\\x5e\\x45\\x30\\xd8\\x9e\\x11\\x58\\x31\\x79\\x93\\x9a\\x00\\xa3\\x2f\\x81\\x13\\x32\\xc5\\x22\\x91\\xcc\\x7a\\xc9\\x1e\\x5a\\x97\\x0c\\xd5\\xaa\\x70\\x8b\\x1d\\xa2\\x6b\\xe9\\xfe\\x43\\x2a\\x9b\\xbd\\xa1\\x31\\x9e\\x31\\xe4\\xbc\\xc9\\xf1\\x66\\x6a\\x05\\xb5\\xc0\\x5b\\x87\\x6b\\xfd\\x1f\\x76\\x66\\x87\\xcc\\xea\\x4e\\x44\\x82\\xe9\\x24\\x32\\x9a\\xfa\\xce\\x5e\\xe5\\x2e\\x98\\x79\\xfd\\x69\\xb7\\x6e\\x0f\\x7e\\x45\\x2e\\xc4\\x71\\x3b\\xff\\x21\\x6d\\x00\\xc8\\x25\\x99\\xd2\\x7c\\xa4\\x81\\xf7\\x3a\\xae\\x13\\x6f\\x08\\x75\\xc8\\x8a\\x66\\xb1\\xb6\\xf3\\x4c\\x50\\x52\\x3a\\xb6\\x02\\xe9\\xd4\\xeb\\xb7\\xee\\xb9\\xe0\\x43\\xa6\\x5e\\x41\\x89\\x9d\\x79\\x75\\x2a\\x27\\x9d\\x2e\\xd4\\x69\\x93\\x92\\x6f\\x36\\x21\\xe7\\xc3\\x2c\\x9a\\x9b\\x3b\\x59\\xd8\\xdd\\x57\\xbe\\xca\\x39\\x28\\x54\\x34\\xde\\x99\\x1c\\xbd\\x2d\\xfc\\xbc\\x5c\\xa6\\x2a\\x77\\x79\\xf4\\x75\\xd0\\xce\\xf2\\xf3\\xe5\\x62\\xf2\\x9a\\xcd\\x47\\x4f\\x3c\\x99\\xec\\x5b\\xd8\\xde\\x01\\x10\\x1b\\xed\\x2e\\x0c\\x9b\\x60\\xe2\\xd7\\x0f\\xd4\\x32\\xc8\\x92\\xfc\\x66\\xf8\\xd4\\x61\\x9a\\x91\\x1b\\x56\\x25\\x16\\x3e\\x9a\\x42\\xbf\\x9e\\xa3\\x85\\x86\\xd8\\xe7\\x64\\x00\\x15\\x64\\xd3\\x35\\x41\\x12\\x25\\xfc\\xb0\\xa0\\x6d\\xc2\\xa8\\x2d\\xa0\\x77\\x9a\\x3c\\x44\\x4e\\xb7\\x86\\x42\\x01\\xb4\\x3e\\xbb\\x72\\xb9\\x21\\xf3\\x4d\\x3c\\x13\\x08\\x9d\\xf2\\xf4\\xfa\\xc3\\x66\\xff\\x1e\\x3c\\x0b\\x96\\xf9\\x3d\\x2b\\x4d\\x72\\x6a\\x5c\\xe4\\xd6\\x91\\x6d\\x82\\xc7\\x8b\\xe3\\x54\\xa1\\x23\\x0c\\x2c\\xf0\\x41\\x8c\\x78\\xa1\\x91\\x3e\\x45\\x4f\\x64\\x8c\\xc9\\x2c\\x8d\\xd0\\xe1\\x84\\x64\\x5f\\xe3\\x78\\x1d\\x26\\x3c\\xff\\x69\\xf5\\xc6\\x0b\\x1e\\xbb\\x52\\x00\\x5a\\x8b\\x78\\xa5\\x15\\xc7\\xe8\\x88\\x6f\\xfe\\x05\\x4d\\xab\\x42\\x8e\\x2e\\x22\\x1d\\x9d\\x76\\xaf\\xf4\\x26\\x54\\x16\\x8d\\x83\\x3b\\x88\\x17\\x82\\x93\\xe1\\xfe\\xdd\\x15\\xd4\\x6c\\xd6\\x09\\x48\\x31\\x29\\xc4\\xd2\\xd8\\x44\\x32\\xa9\\x9d\\x31\\xff\\xe9\\xbd\\xb5\\x66\\xf8\\xc7\\x5c\\xe6\\x5e\\x18\\x28\\x8e\\x4d\\xf8\\xc1\\x67\\x31\\xa0\\xf3\\xfd\\xde\\x1c\\xca\\x6d\\x8e\\xde\\x04\\x35\\xff\\x74\\x36\\xca\\x17\\xd0\\xae\\xb8\\x8e\\x98\\xe8\\x06\\x5c\\xbc\\xbf\\xd0\\xff\\x83\\x04\\x3a\\x35\\x7c\\xd1\\xb0\\x82\\xd1\\x70\\x3d\\x46\\x18\\x81\\x87\\x2c\\xdf\\x74\\x1e\\x4f\\x99\\xbd\\x14\\x67\\x45\\xba\\x70\\x39\\x74\\xbe\\x40\\xf5\\x79\\xbf\\x5c\\x4d\\xba\\x5b\\xdb\\x8c\\x94\\x1b\\xce\"},\n{{0xc8,0xac,0x23,0x45,0x58,0xaa,0x69,0x81,0x6b,0x36,0x8b,0x77,0xb7,0xcc,0xcb,0x5c,0x8d,0x2a,0x33,0xec,0x53,0xae,0xef,0x2c,0xe2,0x28,0x71,0x43,0xbd,0x98,0xc1,0x75,},{0x53,0x64,0xba,0xf1,0xfd,0xb2,0xc6,0x38,0x40,0xb3,0x0d,0x40,0x31,0xcf,0x83,0xa2,0xe1,0x8e,0x62,0x07,0x93,0xba,0xe5,0x9d,0x10,0x35,0xc0,0xed,0xe5,0x5e,0x52,0x8b,},{0x32,0x25,0x03,0x61,0xdf,0x6e,0xd2,0x83,0x48,0x5f,0x95,0xf3,0xd3,0x57,0xa4,0xf1,0xc3,0x3a,0x8c,0xf9,0x16,0x58,0x32,0x7c,0xd4,0x53,0xd4,0x9c,0x95,0x36,0x65,0x51,0x08,0x70,0xaa,0x45,0x4c,0xfa,0x3b,0x83,0x24,0x52,0x20,0xa8,0x27,0xd0,0xec,0x74,0x77,0xf9,0xec,0xeb,0x79,0xc4,0xa2,0x9f,0x30,0x1f,0x95,0x3c,0xc8,0xca,0xac,0x07,},\"\\xce\\x48\\x8d\\x26\\x97\\x5c\\x1c\\x93\\x28\\xb4\\x7f\\xa9\\x2e\\x19\\x56\\x13\\x30\\x04\\x1b\\x23\\xa0\\xe5\\x7a\\x4b\\x8b\\xca\\x89\\xeb\\x5f\\x61\\x5e\\x73\\xdd\\x7f\\xae\\x69\\xc2\\x38\\x0e\\x32\\x12\\xf9\\xb7\\x33\\x41\\xc3\\x56\\xdb\\x75\\xa6\\x25\\x6d\\x7a\\x20\\xa9\\x7f\\x75\\x9d\\x4c\\xba\\x71\\x97\\x17\\x8e\\xa7\\x24\\xdd\\x93\\x29\\x49\\x36\\x0e\\x96\\xc5\\x0a\\x4b\\x3b\\xa5\\x5a\\x95\\x33\\x72\\xc3\\x97\\xb0\\x96\\x9c\\x2b\\x14\\xd3\\x60\\x9e\\x0a\\x85\\x2d\\x48\\x4d\\xf7\\x0e\\xaa\\xb1\\x12\\x49\\xeb\\xeb\\x32\\x37\\x92\\x1f\\x0a\\x39\\xa5\\x5d\\x7d\\xcc\\xfe\\xf2\\x05\\xd9\\x4e\\xc8\\x0d\\x9e\\x1f\\xd6\\xa2\\xc1\\xef\\xd2\\x98\\x44\\x10\\x1d\\xfe\\x2c\\x5f\\x66\\x8a\\xdb\\x79\\x75\\x91\\x5d\\xed\\xd0\\x86\\x50\\x0c\\xee\\x2c\\x1e\\x23\\x3e\\x8e\\x48\\x85\\x5c\\xc1\\xa6\\xf2\\x87\\xd6\\x3d\\xce\\x10\\xad\\xdd\\x13\\xca\\xc7\\xb7\\xa1\\x87\\xef\\xe4\\x7e\\x12\\xd1\\xc3\\x5b\\xb3\\x97\\x40\\x52\\xb2\\x3a\\x73\\x66\\x8d\\x3e\\x4c\\x87\\xdb\\x48\\x41\\xaf\\x84\\x6e\\x80\\x86\\x72\\xc4\\x3d\\x0a\\x15\\x22\\xe2\\x96\\x5f\\x08\\x39\\x51\\xb2\\xb2\\xb0\\xc4\\x09\\x54\\x8e\\xe6\\x18\\x2f\\x0c\\x98\\x50\\x51\\x4c\\x9e\\x6c\\x10\\x2f\\x54\\xba\\x41\\x24\\xc9\\x2a\\x90\\x27\\x4f\\x40\\x58\\x91\\xe6\\x62\\xf5\\xeb\\xb3\\x77\\x1b\\x85\\x78\\x31\\x56\\xe9\\xe5\\x83\\x67\\x34\\xd0\\x9d\\x1b\\xaf\\x5b\\x21\\x34\\xc9\\x31\\x62\\xee\\xc4\\xbe\\x03\\xbd\\x12\\xf6\\x03\\xcd\\x27\\xbe\\x8b\\x76\\xac\\xcc\\x6e\\x8b\\x8b\\xac\\x02\\x0c\\xba\\x34\\x79\\x65\\x1c\\x9f\\xfa\\x53\\xce\\x4e\\xb7\\x7a\\x77\\x31\\x3b\\xc1\\x26\\x5d\\xda\\xb8\\x03\\xef\\x7a\\x65\\x63\\xba\\x6f\\x79\\x9d\\x1e\\xf3\\x0e\\xf5\\xa0\\xb4\\x12\\x96\\x5f\\xda\\xc0\\xb9\\xda\\xb8\\x42\\xc7\\x8e\\xe2\\xcc\\x62\\x8e\\x3d\\x7d\\x40\\x61\\xe3\\x4e\\xde\\x37\\x97\\xe1\\x54\\xb0\\x6e\\x8c\\x66\\xce\\xbd\\xf2\\xde\\xd0\\xf8\\x1b\\x60\\xf9\\xf5\\xcd\\xda\\x67\\x5a\\x43\\x52\\x77\\xba\\x15\\x24\\x55\\x7e\\x67\\xf5\\xce\\xfa\\xfc\\xe9\\x29\\x29\\x1d\\xce\\x89\\xec\\xb0\\x8a\\x17\\xb6\\x7a\\x60\\xc5\\x82\\xb4\\x87\\xbf\\x2f\\x61\\x69\\x62\\x66\\x15\\xf3\\xc2\\xfe\\x3b\\x67\\x38\\x8b\\x71\\x3d\\x35\\xb9\\x06\\x66\\x69\\x96\\x0d\\xe4\\xdb\\x41\\x3c\\xd8\\x52\\x8e\\xe5\\x6e\\xd1\\x73\\xe9\\x76\\xa3\\xc9\\x74\\xac\\x63\\x3a\\x71\\x34\\xcc\\xe3\\x83\\x19\\x73\\x5f\\x85\\x7b\\x7d\\x71\\xba\\x07\\xf4\\x77\\xef\\x85\\x84\\x8a\\xa8\\xf3\\x9e\\x11\\x81\\x18\\x77\\x9e\\xd8\\x7b\\x4f\\x42\\xaa\\x35\\x8a\\x89\\xf7\\xec\\x84\\x4a\\x45\\x1e\\x7e\\x8f\\xc0\\xaf\\x41\\x8b\\x85\\xbc\\x9b\\xf2\\xf2\\x6d\\x1e\\xa1\\x37\\xd3\\x35\\xec\\x7e\\xe7\\x57\\xb7\\x0a\\xe2\\xfd\\xd9\\xcc\\x13\\x49\\x32\\xf0\\xe5\\x42\\x5b\\xf3\\x7f\\xb9\\x15\\xe7\\x9e\"},\n{{0x2c,0x47,0xf2,0xb8,0xb9,0xd2,0xce,0xe9,0xe6,0xf6,0x54,0xbc,0x24,0x65,0x8f,0x9e,0xaf,0x43,0x9c,0x23,0xbe,0xaa,0x0a,0x79,0xbf,0x35,0xcc,0x8c,0xd2,0xde,0xba,0xf4,},{0x44,0x4a,0xf2,0xf3,0x4f,0xd3,0x2e,0x5a,0x19,0xf6,0x1f,0x87,0xd0,0x3e,0x10,0x76,0x27,0xa3,0xee,0xb8,0xbd,0x94,0xd2,0xfa,0xea,0xa3,0x48,0xb0,0x5d,0xea,0x19,0x80,},{0x85,0x54,0xb0,0x1d,0x09,0xed,0x86,0xe6,0x13,0x95,0xb9,0x1a,0x2b,0x1e,0xe1,0x87,0x15,0xc4,0x2f,0x9c,0x7e,0x7f,0x07,0x00,0xd7,0x9f,0xf9,0xfb,0x57,0x81,0x29,0x3d,0x61,0xc5,0x58,0xdd,0x5b,0x43,0x1c,0x93,0x71,0x8d,0xcc,0x0f,0x98,0xfb,0x65,0x2b,0x59,0x6f,0x18,0xc3,0x0f,0x82,0x21,0x5e,0x8e,0x63,0xe4,0xf6,0x56,0x8c,0x88,0x00,},\"\\x04\\x4c\\x8f\\xaa\\x8c\\x8a\\xaf\\x9f\\x2b\\x81\\x86\\xa6\\xb9\\xb3\\x38\\x47\\xec\\x7b\\x45\\x24\\x23\\xb2\\x2a\\x91\\x74\\x3d\\x2e\\x59\\x7e\\xcc\\x1e\\x1e\\x22\\xae\\x60\\x05\\x3e\\x9e\\xe6\\x23\\x3b\\x04\\x4e\\x77\\x59\\x20\\xe4\\xe3\\xd6\\x67\\x19\\x90\\x13\\x25\\xcf\\xdd\\x39\\xbb\\x53\\x2f\\x8a\\xa4\\x69\\xaa\\xb4\\x2e\\x96\\x08\\xc2\\x12\\x60\\xc0\\x4c\\x27\\x41\\x3a\\x7a\\x94\\xe4\\x66\\xf6\\x3c\\x49\\x52\\xe9\\x0e\\xf9\\x0c\\x12\\x81\\x4b\\x34\\x51\\xb1\\xca\\xd7\\xda\\x91\\x47\\xf8\\x40\\x92\\x20\\xf6\\x49\\x8c\\xc0\\xa6\\x7f\\xef\\x4b\\xc0\\x4f\\xc0\\x6e\\x1d\\x89\\x8a\\x55\\x15\\x59\\x1e\\x8b\\xe0\\xc4\\x3d\\x75\\xa6\\xfe\\x42\\x5b\\x7c\\xbe\\xfb\\x1b\\x91\\xb1\\xbd\\x78\\xb5\\xbe\\xc7\\x82\\x90\\x56\\x98\\x2e\\xfd\\xc5\\xbe\\x24\\xaf\\x66\\x78\\x00\\x6a\\xdc\\x6f\\x04\\x46\\x20\\x2e\\x7e\\xc3\\xa2\\xd6\\x97\\x9c\\xb0\\xdf\\x7e\\x25\\xd7\\x42\\x33\\x91\\x4d\\x9c\\x58\\xb8\\x1c\\xf5\\x5b\\xe0\\x69\\x67\\xd3\\xa5\\x95\\xc1\\xb9\\x67\\x28\\x69\\x99\\x4c\\xfb\\xa6\\x71\\x62\\x83\\x3a\\x21\\x43\\xaa\\x91\\xcc\\x93\\xac\\xda\\xfa\\x5b\\x45\\x20\\x8d\\xf3\\xe8\\x8c\\xcc\\x01\\xa2\\xa4\\xd2\\x20\\xe3\\x60\\x09\\x8d\\x91\\x54\\xd2\\x25\\xa7\\xca\\x5f\\x2f\\x1e\\x52\\xb1\\x00\\x3d\\x10\\x66\\x50\\xa7\\x7b\\x28\\x3b\\x95\\xe4\\xba\\xf1\\xe7\\x33\\x6f\\xa9\\xa7\\x47\\xa2\\xb3\\x82\\x3d\\x36\\x09\\x10\\x41\\x2e\\x76\\xdb\\x72\\x5c\\xe1\\xab\\x1e\\x1d\\x18\\x9d\\x0d\\x3a\\xbe\\xf8\\x2d\\x76\\x66\\xbc\\xf1\\xb7\\x66\\x69\\xe0\\x64\\x3b\\x44\\xf7\\x4e\\x90\\xce\\xaf\\xa0\\xc8\\x37\\x1b\\x57\\xc5\\x8f\\x3b\\x37\\x0a\\x54\\x7c\\x60\\x95\\x8f\\x0f\\xcf\\x46\\x1b\\x31\\x50\\xf8\\x48\\xc4\\x70\\xfa\\x07\\xe2\\x9b\\xf5\\xf0\\xd4\\xb5\\x9e\\xfa\\x5a\\xb0\\xd0\\x34\\x1e\\x04\\x51\\xd0\\xab\\xb2\\x9d\\x74\\x14\\xcd\\xdc\\x46\\xcc\\x6d\\x74\\xcf\\x3d\\xc2\\x33\\xd0\\xd1\\x70\\x73\\x87\\xbd\\x8c\\x77\\x80\\xff\\x78\\xe5\\x46\\xfb\\x77\\x29\\x4d\\x58\\xa5\\xdd\\xa5\\xf0\\x5c\\x12\\x97\\xe3\\xd1\\x77\\x11\\x56\\xd2\\x85\\x63\\x5b\\xf7\\xec\\xed\\xb3\\x8a\\x9e\\x5e\\x77\\x44\\x98\\x04\\xf3\\x89\\x9e\\xa4\\x6a\\x50\\x26\\x6b\\x25\\x5a\\xeb\\x52\\xd1\\x8e\\x0f\\xa1\\x36\\xe5\\x35\\xcc\\x90\\x26\\xf6\\x78\\x55\\x2f\\xa3\\xee\\x21\\x46\\x08\\x1d\\x99\\x96\\x85\\xe2\\x4b\\xf7\\x80\\x7c\\xc4\\x7c\\x13\\x04\\x36\\xc5\\x44\\xd3\\x5b\\x4b\\x87\\x5b\\xd8\\xaf\\xa3\\x12\\xce\\x3a\\xe1\\x7c\\xf1\\xc7\\xf5\\xea\\x1e\\xce\\xcb\\x50\\xf9\\x53\\x44\\x72\\x0c\\xec\\xf0\\x88\\x43\\x4f\\xf8\\xe0\\xba\\x04\\x4e\\xc1\\x9c\\x98\\xad\\xa7\\x78\\x21\\x16\\x30\\x4c\\xbe\\xac\\x1c\\x3e\\x35\\xf5\\xa4\\xf4\\x43\\x13\\x35\\x4d\\xc9\\xa4\\x0e\\xce\\x5a\\x0f\\x9a\\xd3\\xa2\\x02\\x5a\\xce\\xf2\\x62\\xc5\\x67\\x9d\\x64\"},\n{{0x88,0x7f,0xdb,0x48,0x70,0x68,0x1d,0x4f,0xb0,0x6a,0x93,0x62,0x59,0xf7,0x5c,0xae,0x05,0x17,0xf5,0x01,0xaf,0x64,0x6b,0xc0,0x7a,0x4d,0x72,0xbe,0xe7,0xfb,0x1c,0x73,},{0xc7,0x62,0xeb,0xd4,0x8b,0x2c,0xe0,0x2d,0x06,0x38,0x4e,0x38,0x55,0x4b,0x82,0x5a,0xd3,0x22,0xeb,0xea,0x74,0xd2,0x59,0xdf,0x15,0x47,0xa4,0xd5,0x47,0xce,0x00,0x24,},{0x41,0x0a,0x5a,0xf3,0xc5,0x9b,0x7c,0x6b,0xdb,0x21,0x4b,0x16,0x6c,0xb7,0x9d,0x96,0xf8,0x30,0xcf,0x98,0xbf,0x52,0xda,0xd7,0xb6,0xff,0x29,0x79,0xc9,0x7f,0xea,0x4f,0xed,0x5e,0xf7,0xd3,0xd4,0x9f,0x03,0x09,0x72,0x79,0xb9,0xa0,0x99,0x22,0x6e,0x2a,0x08,0xdd,0x30,0xc6,0x07,0x86,0x25,0x4e,0x2d,0xa8,0xde,0xe2,0x40,0xbf,0xc3,0x08,},\"\\xc5\\xdc\\x77\\x9f\\x3f\\x3f\\xac\\x06\\xdd\\x28\\xe5\\xa6\\x7e\\x0e\\x52\\x4a\\xf5\\xb5\\xdc\\x3b\\x34\\x40\\x96\\x57\\xb6\\x3d\\xfa\\xce\\x94\\x71\\xe9\\xa4\\x1e\\x11\\x32\\x17\\x5a\\x0b\\x56\\x9c\\x8f\\xea\\x9d\\x2e\\xef\\x2c\\xf5\\xd5\\x96\\x2c\\x7e\\x0b\\x61\\x45\\xa9\\xe7\\xa0\\xc1\\xaa\\x33\\x77\\x20\\x44\\xf9\\xc3\\x99\\x8c\\x5a\\x8c\\x48\\x86\\x45\\x8b\\x4e\\x58\\x6f\\x93\\x07\\x60\\x83\\x61\\xf5\\x11\\xe7\\xab\\x50\\x92\\xac\\x41\\xec\\x76\\xe0\\x58\\x6e\\xf5\\xb9\\xc2\\x36\\xfc\\xf5\\xca\\x2f\\xc8\\xdd\\x6a\\xae\\xb7\\x89\\x36\\x7f\\x2e\\x7c\\x99\\x09\\x32\\x55\\x5d\\xc5\\x22\\x61\\xe4\\x4e\\x49\\x42\\x34\\x98\\xb5\\x24\\x41\\x91\\x83\\xb6\\xc1\\xf1\\xd4\\x2c\\x45\\x46\\x4e\\xcc\\xb0\\xc2\\xf7\\xe2\\x51\\x77\\xfe\\x5c\\xd4\\x63\\x50\\x2b\\x40\\x3e\\x06\\xd5\\x11\\xfc\\xf9\\xdc\\xb6\\x40\\x12\\xe0\\xf2\\x0b\\x34\\xc2\\xea\\x7c\\x00\\x4d\\x9e\\x48\\x4a\\x7e\\xd8\\x1f\\x32\\x60\\xc4\\x1c\\x8b\\x19\\x53\\x52\\x9f\\x47\\xf7\\x1e\\x86\\x78\\x43\\xcc\\x3c\\x33\\x2a\\xd0\\x36\\x6a\\x63\\x81\\x7e\\xd1\\x2d\\xd4\\x73\\x0d\\x3d\\xfd\\xbd\\x75\\x72\\xb9\\xff\\x79\\x80\\x45\\x94\\x0d\\xd1\\x9f\\xad\\x0c\\x8a\\xea\\x0b\\x4a\\xb6\\x1c\\x40\\x16\\xde\\x32\\x79\\x9c\\x73\\xaa\\x2b\\x92\\xd2\\xc2\\x5e\\xe9\\xb7\\x2d\\x46\\xfe\\x8f\\x06\\x93\\xc5\\x87\\x75\\xef\\xb0\\x5e\\x9e\\x17\\xa5\\xc3\\x46\\xa8\\x12\\x65\\xd3\\x5b\\xe6\\x9a\\x22\\xd0\\x95\\xde\\x18\\x60\\x66\\xa5\\xc6\\xd8\\xc0\\x7a\\x3d\\x38\\xd0\\x02\\xa1\\x0e\\x5e\\xfd\\xb8\\x66\\xda\\x4a\\x9b\\xdd\\x54\\xf5\\x09\\x26\\x61\\xb6\\xc2\\xd7\\x43\\xf5\\xae\\xaa\\x4c\\x6c\\x31\\x8f\\xb5\\x93\\x23\\x90\\x30\\x57\\xe4\\x9c\\x23\\x7b\\x45\\xf6\\x75\\x42\\xa4\\xf2\\x7c\\xaf\\x65\\xb5\\x7c\\xfc\\xf8\\x8b\\x71\\x20\\x3d\\x43\\xd7\\xf9\\x53\\x22\\x16\\x0f\\x95\\xc2\\x32\\xdd\\x10\\xab\\xb1\\x13\\xb7\\x21\\xdd\\xba\\x22\\x26\\xb0\\x63\\x22\\x9b\\xb4\\x41\\x02\\x33\\x6b\\x10\\xbf\\x16\\x56\\x55\\x11\\x61\\x24\\x97\\x86\\xd4\\x54\\xf4\\xe0\\x90\\x9d\\x50\\x00\\x17\\xf6\\xc7\\x56\\x4f\\x73\\x3c\\x83\\x1a\\xf4\\xe5\\xec\\x94\\xdf\\xd3\\xbf\\x8f\\xf5\\xf3\\x02\\x1b\\x70\\xa5\\xca\\x5d\\x28\\xc6\\xdf\\xb8\\xa2\\xc1\\x8a\\x1a\\x66\\x2a\\x33\\x35\\x9f\\x26\\x4d\\x16\\x96\\x98\\xc1\\xab\\x55\\x78\\x3f\\xac\\xa7\\x3b\\xd6\\x8c\\x0f\\x79\\xd1\\xd0\\x4a\\xe0\\xec\\xdb\\x52\\xae\\x76\\x18\\x92\\xc0\\x24\\x93\\xff\\x35\\xf3\\xd8\\x4f\\x66\\xe2\\x36\\xfc\\x58\\x13\\x4a\\xd6\\xa7\\x7d\\x92\\x25\\x49\\x05\\xd7\\x73\\x90\\x0d\\x9d\\xdf\\x26\\x54\\xc7\\x0b\\x46\\xf3\\x41\\xda\\xcb\\x47\\x93\\xca\\x51\\xee\\xde\\x45\\x53\\x3e\\xae\\xeb\\x6e\\x33\\x23\\xbc\\x3e\\x6c\\x85\\xa7\\x94\\x06\\x51\\xc4\\xf6\\xf9\\x81\\x91\\xc6\\x18\\xc8\\x91\\xea\\x4e\\x22\\x0e\\xa4\"},\n{{0x88,0xb3,0xb4,0x63,0xdf,0xc3,0x0d,0x01,0x5e,0xef,0xbb,0xbd,0xd5,0x0e,0x24,0xa1,0xf7,0x27,0x77,0x75,0xbc,0xef,0x14,0xa6,0xbe,0x6b,0x73,0xc8,0xc5,0xc7,0x30,0x3e,},{0xf2,0xb6,0x28,0x4c,0x93,0x0d,0x4a,0xd3,0x2d,0x0a,0xc7,0x19,0x04,0x0e,0xe7,0x88,0x6b,0x34,0x72,0x2e,0xdf,0x53,0xda,0x80,0x1a,0xcb,0x5f,0x93,0x19,0x69,0xe1,0x19,},{0x82,0x5a,0xff,0x71,0xf7,0x93,0x03,0xbf,0x45,0x92,0xbd,0x8d,0xa4,0xd7,0xd9,0x43,0x7f,0xf2,0x67,0x97,0x6f,0x74,0x64,0x37,0x65,0x59,0x88,0xdd,0xcf,0x29,0x37,0x94,0x65,0xa3,0xb4,0x8c,0x9f,0xb0,0xf3,0x1c,0xef,0x03,0xe6,0x36,0x88,0x61,0xc3,0x69,0xb4,0x36,0x4f,0xb8,0xe4,0xb0,0xc7,0x2e,0x26,0xa9,0xa9,0xdd,0xed,0x1c,0x25,0x04,},\"\\x17\\xc3\\x17\\xfa\\x6b\\xc9\\x0c\\x55\\x32\\x32\\x8f\\x02\\xcc\\xfb\\x6c\\x09\\x9e\\x6f\\xe1\\x00\\x01\\x74\\xf2\\xaf\\x3a\\x3a\\x93\\x09\\x42\\x85\\x06\\x71\\x7c\\x5c\\x43\\x35\\xbd\\xd7\\xc3\\x67\\xff\\x4e\\x44\\x8a\\x9c\\x04\\x75\\x03\\xaf\\xba\\x68\\xfd\\x8f\\x79\\x87\\x23\\x7b\\xe7\\xf7\\xfb\\xdc\\x6d\\x73\\xf2\\x4c\\x64\\x21\\xca\\xb4\\x22\\xb3\\xfb\\x25\\xf6\\x7b\\x2d\\x71\\x04\\x2e\\x71\\x57\\x0d\\xf2\\xaf\\x37\\xbf\\xe5\\xc1\\x14\\x21\\x1f\\xd5\\x52\\x4b\\x6c\\x1c\\x6c\\xc5\\x2f\\xab\\xc3\\xcd\\x7f\\xb4\\x64\\xcd\\x58\\x0b\\xb7\\x40\\x71\\xcb\\x30\\x0f\\x8c\\x9f\\x8a\\x46\\x20\\x8e\\x5a\\xa5\\xdd\\xfe\\xa5\\xfe\\x90\\x69\\x7a\\xa2\\xf1\\x4c\\x60\\x79\\x50\\xc9\\x8f\\x23\\x12\\xa9\\xe1\\x6e\\xf6\\x34\\x6a\\x8f\\xd1\\x29\\x23\\x27\\x33\\x82\\x7e\\x15\\x01\\xa6\\x60\\xc7\\x7c\\x29\\xc5\\x6d\\x2f\\xdd\\x1c\\x55\\x97\\xf8\\xbc\\x89\\xaa\\xef\\xe3\\x71\\x37\\x34\\xfe\\x82\\x85\\x82\\x01\\x89\\x1a\\x11\\x47\\xef\\xaf\\x1d\\x78\\xa4\\x71\\xf9\\x20\\xde\\xfc\\x88\\x03\\x44\\x55\\x3e\\xb7\\x16\\xcc\\xe3\\x26\\x0e\\x86\\xa1\\xbc\\x0b\\xe2\\x83\\x73\\xa6\\xa0\\x66\\x11\\x6e\\x8e\\xcb\\x10\\xa0\\xc4\\xa7\\x0c\\xa2\\xb5\\x36\\x4e\\x11\\x9f\\x84\\xae\\xc6\\x0d\\xec\\xed\\x3a\\x4e\\xff\\x1f\\xe6\\x88\\xc5\\xe3\\xe2\\x51\\x47\\x0a\\xb5\\x16\\xfa\\x96\\x4a\\x4b\\x6f\\x28\\x36\\x8d\\xd1\\xe2\\x83\\x59\\x79\\x34\\x06\\x4d\\xc0\\xc5\\xb5\\x69\\x10\\x62\\xcb\\x2e\\x26\\x7b\\xd1\\x5f\\xd4\\x22\\xbc\\xfe\\xfb\\x83\\xcc\\xef\\x7a\\xa9\\xa2\\x27\\x5e\\xf5\\x7e\\x47\\x31\\x49\\x98\\x8c\\x15\\x78\\xfd\\x18\\x70\\x8d\\x2f\\xf6\\x9f\\x8e\\x59\\x80\\xaa\\x82\\x6a\\x82\\xca\\xb7\\xd8\\xb9\\x2b\\xb5\\x3b\\xdd\\x46\\xdb\\x04\\x6e\\xcd\\xfc\\x8c\\xd7\\xae\\x5c\\xe4\\x4f\\x3c\\x5b\\x8c\\x05\\x65\\xb5\\xd3\\xc0\\x72\\xc7\\x6b\\x95\\xce\\x90\\x0a\\xc3\\xee\\x55\\x10\\xdb\\x0e\\x75\\xd3\\xa4\\x15\\x0a\\x98\\xf3\\xcc\\xcc\\xc6\\x9e\\x93\\x0c\\x6b\\xa7\\x41\\xdb\\xb0\\xeb\\x9f\\xb3\\x19\\x68\\x71\\xba\\x20\\x6a\\x58\\xe0\\xda\\xe3\\x9c\\x8d\\x6b\\xb7\\x2a\\x82\\x39\\x9c\\x4b\\x7b\\x9d\\xa3\\x85\\x77\\xac\\x17\\xff\\x15\\x24\\xd6\\x53\\xc0\\xbf\\x33\\x67\\x93\\x23\\xca\\x7e\\xef\\x4e\\x92\\x28\\x72\\x90\\x31\\x56\\x0e\\xd8\\xf2\\xe5\\x19\\x3c\\x64\\x0b\\x2f\\x5e\\x60\\x80\\x75\\xa2\\xed\\x61\\x42\\x8d\\xfc\\xcd\\xc0\\x00\\x50\\xba\\x4b\\x99\\xed\\x6d\\x15\\x36\\xd5\\xac\\x1e\\x93\\x96\\x74\\xb4\\x1d\\x16\\x31\\x2a\\xe5\\xb0\\x7d\\xef\\x1b\\xf5\\x35\\x89\\xbe\\xd4\\x40\\x06\\x02\\xee\\x11\\xb8\\x50\\x33\\x0f\\x38\\xaa\\xd3\\x3e\\xf0\\x41\\x70\\xa3\\x90\\x5c\\x28\\xb5\\x0e\\xcc\\x57\\xdc\\xcf\\x4f\\x29\\xd0\\xc0\\x0f\\x71\\x3d\\x32\\xff\\xc8\\x57\\x95\\x65\\x88\\xa6\\x32\\x6b\\x95\\x49\\xed\\xb0\\xe4\\xfe\\x61\\x85\"},\n{{0x42,0x7d,0x6e,0x42,0x39,0x17,0x89,0x68,0x31,0x60,0x1b,0x8f,0x4e,0x21,0x56,0x1d,0xb6,0x10,0x85,0x71,0xbe,0x00,0x9e,0x29,0xdc,0xa4,0x9a,0x59,0x60,0xff,0x31,0x4b,},{0x8d,0x9e,0x63,0x60,0xfd,0xef,0x24,0x99,0x75,0xdf,0x27,0xb3,0x10,0x6a,0x71,0x12,0x05,0x87,0x72,0x2d,0xf3,0x27,0x0a,0x85,0xa1,0x3a,0x8c,0x3b,0xb8,0xc9,0x80,0x9e,},{0xd1,0xc9,0xa0,0x1c,0x56,0xe3,0x39,0x60,0xf4,0x9d,0xf3,0x7e,0xab,0x96,0x3b,0xc5,0xa9,0x9f,0x25,0xc6,0x00,0x44,0x6c,0xe2,0xca,0x48,0xd9,0x13,0x9d,0xa5,0x73,0x3b,0x71,0x8f,0xbf,0x1a,0x98,0x73,0x93,0xf6,0xe5,0x82,0x3c,0x2d,0x13,0x0c,0x7c,0xe6,0x0e,0xa3,0xdb,0x35,0x43,0xc8,0x85,0x4e,0xf1,0x2b,0x98,0xd3,0x3a,0xdd,0xe7,0x05,},\"\\x9c\\x2c\\xc7\\xf2\\x46\\x2e\\x09\\xc4\\xc5\\x8c\\x27\\x09\\xab\\x42\\x59\\x88\\x5a\\x4e\\x88\\x7d\\x9f\\xa5\\x31\\x88\\x15\\x05\\xaa\\xf2\\x03\\xc1\\x63\\xfb\\x3a\\x0d\\xc0\\x28\\xf4\\xad\\xa6\\x06\\x70\\x63\\x8d\\x4a\\x97\\x27\\xa3\\x90\\x83\\xbe\\xdb\\xac\\xed\\x58\\xed\\xb7\\x79\\xe1\\xce\\x6c\\xcd\\xfb\\x42\\x8c\\x36\\x2b\\xb1\\xdb\\x0c\\x10\\x53\\x00\\x6b\\xd8\\xf4\\xbe\\xf8\\x9a\\x1a\\x9d\\xe0\\x1c\\x77\\x4e\\x35\\x7f\\x91\\x0e\\x5c\\x39\\xb2\\x24\\x77\\x55\\x5e\\x5f\\x7c\\x04\\x98\\xb5\\xb2\\x8f\\x36\\x9e\\x5d\\x3f\\xa4\\x2a\\xb3\\x60\\xe4\\xf4\\x51\\xc6\\x9f\\x81\\xba\\x0f\\x3c\\xce\\xd4\\x3a\\x55\\x9d\\xb6\\x00\\x10\\x42\\x78\\xf8\\x68\\x79\\x6b\\x2c\\x91\\x1b\\x3b\\x03\\x2b\\x72\\x9f\\x4b\\x22\\xac\\x14\\x9d\\xc4\\x67\\xa0\\xca\\xe4\\x8d\\x19\\xe9\\xd9\\x85\\xb4\\x2b\\x62\\x54\\x9d\\xe1\\x71\\xff\\x56\\x6e\\x1d\\x1e\\x9b\\xb8\\xe5\\x6c\\xfd\\x1a\\xe8\\xf7\\xbd\\xdc\\xfd\\x8a\\x23\\x41\\x82\\x7d\\xbe\\x89\\xc8\\x82\\xab\\x3e\\x49\\x83\\x39\\xff\\x68\\x1c\\x7d\\xc1\\x10\\x4d\\xe7\\x38\\xb4\\x80\\x31\\x69\\x43\\x10\\x9f\\x70\\x3d\\x47\\x1a\\xb8\\x6e\\x4c\\xa4\\x28\\x7e\\x4c\\xd7\\x4c\\x31\\x2f\\xf7\\xd0\\x37\\x39\\x56\\x06\\xfb\\x25\\xf8\\x71\\xe7\\x27\\x70\\x78\\xa7\\x87\\xd0\\x2f\\x31\\xcc\\x9e\\x81\\x5b\\xe8\\x60\\x0a\\x7c\\x47\\xc6\\xfd\\xd8\\x23\\x31\\xae\\x9c\\x49\\x6a\\x54\\x7b\\xdb\\x23\\x5b\\x8a\\x56\\xd5\\x32\\x59\\xe6\\x29\\x61\\x24\\xa3\\x2c\\x3b\\x62\\x5d\\x20\\x24\\x19\\xd0\\x64\\xb9\\xa4\\xe8\\x3e\\xfa\\x87\\xf1\\x35\\x37\\xb4\\xf5\\x13\\xb9\\x16\\xa8\\x4f\\xc8\\x66\\xd8\\xa8\\x99\\x80\\x4c\\x78\\x33\\xea\\xa0\\x19\\xe0\\xd7\\xe0\\xe8\\x07\\x5b\\xd6\\xb5\\xcb\\x6f\\xfc\\x76\\x64\\x79\\xf3\\xf6\\xe2\\x0e\\x48\\x1e\\x6a\\xb2\\x7b\\xd8\\x08\\xad\\x90\\x6c\\xdc\\xc7\\x82\\x74\\x30\\xe3\\x12\\xf7\\x40\\xf2\\x75\\xdd\\xf5\\x1d\\xd8\\x32\\x48\\xfa\\x05\\x7c\\x43\\xc9\\xcb\\x77\\x55\\x7b\\x2f\\xd9\\xc2\\xd5\\x28\\x24\\xff\\x9e\\x14\\x6d\\xea\\xc1\\xe6\\x69\\x1d\\x45\\x02\\x13\\xbc\\x59\\x0a\\x49\\xbe\\xc7\\x2d\\x52\\xe3\\x8f\\x6b\\x4d\\xc6\\xcc\\xa9\\x51\\xee\\xf2\\x18\\x4d\\x24\\x25\\x03\\x1a\\xd5\\x9b\\x24\\x2e\\xff\\xa6\\x8b\\x6c\\x72\\xc5\\x4c\\x9d\\xfd\\xb4\\x19\\xc0\\x2e\\xb4\\x3e\\xf3\\xf3\\x4d\\x33\\x8d\\x2a\\x9d\\xd0\\x3a\\x78\\xcf\\xdd\\x01\\x40\\x98\\xe2\\x49\\x25\\x9e\\x77\\x28\\x2e\\x0c\\x3f\\xc1\\x01\\x0b\\x02\\xa6\\x7f\\xf8\\x51\\xe9\\xcf\\xd9\\x74\\x9c\\x1c\\xd8\\xf0\\x6c\\xf4\\x62\\xe6\\xad\\xe9\\x95\\xac\\x46\\x6f\\xab\\x5c\\x79\\x5e\\x9e\\xff\\x13\\xe5\\x5b\\x43\\x50\\xb9\\x4c\\x73\\x16\\xaa\\x49\\x8d\\xf9\\xfd\\xee\\x99\\x58\\x04\\x77\\x93\\xe3\\xbb\\xb8\\x9f\\xb8\\x1d\\xa8\\x5f\\x4b\\x9d\\x43\\xe4\\xb0\\xd4\\x3b\\x38\\x1b\\x94\\xcd\\xc9\\xa9\\x9d\\x06\"},\n{{0xbe,0x93,0x52,0x09,0xf6,0x2d,0xea,0x60,0x12,0xec,0xda,0x6a,0x61,0x56,0xcd,0x16,0x6a,0x4d,0x76,0x11,0x50,0xde,0xed,0x45,0x68,0x16,0xea,0xf0,0xce,0x78,0xa7,0xf6,},{0xd3,0x9a,0x89,0xaf,0x72,0x29,0x39,0x48,0xb1,0x34,0x21,0xfb,0x88,0x3b,0xbe,0x37,0x2a,0xf9,0x08,0x9c,0x22,0x4d,0x42,0xb9,0x01,0x97,0x9f,0x7e,0x28,0x04,0xe1,0xc0,},{0x08,0xe0,0x98,0xa7,0x49,0xfc,0xe6,0xd1,0x23,0x54,0x39,0x58,0x78,0xa8,0xbe,0x35,0xfe,0x9e,0xdf,0x72,0x68,0x4d,0xd8,0x28,0x12,0x24,0x89,0x9b,0x1c,0xae,0xa4,0xed,0x68,0x77,0x85,0xdf,0xf5,0x5a,0x19,0x98,0x9e,0x03,0x63,0x6e,0x16,0x66,0x38,0x6f,0x22,0xc3,0xf4,0x43,0xec,0xf6,0xfd,0x34,0xd5,0x99,0xff,0x3e,0xc2,0xfa,0xf1,0x01,},\"\\x11\\x7f\\x42\\x7c\\xb6\\x81\\x50\\xca\\xfc\\xfa\\x46\\x2c\\x42\\x20\\x61\\x41\\x42\\x7c\\x4d\\xce\\xa1\\xc8\\xea\\xcc\\x2d\\x30\\xbe\\xd1\\xe9\\x02\\x07\\xd5\\xae\\x30\\x5e\\x1f\\xc1\\x6c\\x54\\xe4\\xc5\\x4c\\xc6\\x87\\x8c\\xdb\\xed\\xc9\\xf5\\x1f\\xe1\\x84\\x61\\xec\\x37\\xc5\\x57\\xb1\\x15\\xd1\\x3c\\x86\\x82\\xc4\\xe1\\x5f\\x50\\x52\\x96\\xa1\\x76\\x0e\\x1e\\x75\\xf5\\xab\\x27\\xa5\\xc1\\x5a\\x13\\x57\\xd2\\xc8\\xc4\\x0d\\xd5\\x35\\x5f\\x7c\\x82\\xfe\\xa5\\xd2\\x7e\\x28\\x87\\x63\\x58\\xc1\\x2e\\x91\\x13\\xee\\x29\\x83\\xea\\x6f\\x09\\xc6\\x4e\\x06\\xe2\\x97\\xdd\\x96\\xb3\\x4d\\x9b\\x5e\\xd4\\x9f\\xc4\\x7a\\x88\\x39\\x54\\x9c\\x66\\xb0\\x02\\xfe\\x94\\x5e\\x8f\\x94\\xe7\\xd2\\x31\\x5c\\x50\\xca\\x4d\\xc0\\x98\\xbe\\x4b\\x32\\x89\\x81\\x2f\\xbe\\xa9\\x6b\\x47\\xce\\x60\\x45\\x40\\xbd\\xe0\\xe5\\xab\\x0b\\x1b\\xc0\\x36\\xbe\\x9b\\x6a\\x95\\xe0\\x9c\\x81\\xe8\\x98\\x64\\x0c\\x8f\\x05\\xd6\\x0a\\xd9\\x42\\x18\\xd0\\xe6\\x6c\\xeb\\x85\\xa2\\x6b\\x78\\x29\\x22\\x20\\xbf\\xd0\\x61\\xdd\\x07\\x35\\x12\\x92\\x3b\\x90\\xc7\\x9d\\xcf\\x5a\\x19\\x35\\xfa\\xfe\\x8e\\x01\\xef\\x8b\\xf8\\x1b\\x4d\\x37\\xc5\\xa5\\x71\\xb5\\x0c\\x42\\x1f\\x9b\\xd2\\x19\\x4b\\xef\\x35\\x86\\xfc\\xb8\\x58\\x48\\x77\\xbb\\x7e\\x04\\x81\\x65\\x5b\\x05\\xc7\\xb6\\x43\\xb1\\xe4\\x5b\\x04\\x03\\x62\\x72\\x84\\x18\\x52\\xe3\\x19\\x40\\xef\\x8f\\x3b\\x6d\\x4f\\xeb\\x5d\\xf0\\x79\\xd1\\x76\\xf9\\x79\\xc1\\x8a\\x11\\xa6\\x6d\\x12\\x14\\xe5\\x2f\\x68\\x7e\\x90\\x63\\xc1\\xc2\\xb7\\x27\\x7b\\x68\\x5d\\x5c\\x72\\xad\\x56\\x9f\\x78\\x73\\x83\\x8f\\x91\\x02\\x57\\xa0\\x53\\x13\\x1c\\x83\\xeb\\xce\\x86\\xe6\\x9d\\x73\\x63\\x62\\xbe\\xbc\\x96\\xbb\\xfa\\x35\\xfc\\xba\\x1c\\xb5\\x27\\xe7\\x48\\xe5\\xf5\\x79\\x92\\x9f\\xd4\\x0c\\x56\\xb1\\xa5\\x1a\\x22\\x2e\\x86\\x33\\x02\\x70\\x5c\\x86\\xf7\\xb5\\x4e\\xbf\\xbb\\x94\\x82\\xf7\\xe2\\x80\\xf7\\xbe\\xc8\\xca\\xf3\\xa6\\xb5\\x67\\x1a\\xc3\\x0c\\xd1\\xbe\\x52\\x92\\x88\\x79\\x7c\\x01\\x3c\\xe5\\x6b\\xd1\\x86\\xde\\x7d\\xfc\\x18\\x28\\x69\\x14\\x25\\xc1\\x47\\xc5\\x17\\x4a\\x29\\x0d\\x80\\xcb\\xd5\\x9c\\x19\\xda\\x7a\\xdf\\x77\\x91\\x88\\x82\\xa7\\xb2\\xa9\\xa6\\x4e\\x6d\\x76\\xb4\\x8b\\x92\\xf2\\xa2\\x66\\xee\\xe6\\xe2\\x51\\xd2\\xe8\\x17\\x65\\x2b\\x88\\xb5\\x02\\xde\\x73\\x99\\x78\\x2d\\x75\\x29\\xa8\\x1d\\x0a\\x36\\x39\\x96\\xb9\\xdf\\x68\\xb1\\x5a\\x76\\x30\\x90\\x4c\\x8c\\x24\\x60\\x81\\xfa\\x4f\\x09\\x29\\x9f\\x15\\x75\\x79\\x58\\xe0\\x89\\xa9\\x01\\xc3\\x56\\x46\\x15\\xc0\\xf7\\xcf\\x27\\x52\\xb8\\xb9\\xe5\\x21\\x33\\x8d\\x83\\x6e\\x3d\\xae\\x4c\\xe2\\x37\\x46\\x42\\x25\\x3c\\x4c\\x98\\x31\\x97\\x4e\\x5d\\x8c\\x28\\x42\\xf4\\x90\\x07\\xb7\\x17\\x75\\x09\\x3d\\xfe\\x57\\xf4\\x44\\x92\\xf0\"},\n{{0x68,0x18,0xc6,0x0b,0xb6,0x43,0x9a,0xc2,0xee,0xe2,0xd4,0xe1,0x28,0xe9,0xd8,0x69,0x1d,0x4a,0xd5,0xd3,0x63,0xfe,0xd7,0xd6,0x57,0x7a,0x62,0xb6,0x56,0x99,0x94,0xa4,},{0x73,0x45,0xec,0x11,0xbc,0xcc,0x05,0x6f,0xc4,0xef,0xfa,0x3e,0x4e,0xf6,0x70,0x99,0x6a,0xa2,0x6a,0x1b,0xb1,0xb8,0x33,0x91,0xba,0xbc,0x39,0xa1,0xa5,0x96,0x01,0xf9,},{0x15,0x05,0x96,0x7a,0x27,0xb9,0xf8,0x6e,0x92,0x42,0x44,0x40,0x02,0xa1,0xe3,0x19,0x7d,0x74,0xdd,0xcd,0x89,0x65,0x9e,0xc5,0x14,0x02,0x02,0xaa,0xc7,0x94,0xb8,0xad,0xc1,0x93,0xe7,0xd3,0x0f,0x33,0x82,0x64,0x29,0x90,0xf6,0xfe,0xd7,0xa9,0x99,0xca,0xc8,0xc6,0x1e,0xaa,0x39,0xb7,0xd9,0x08,0x16,0xf1,0xd7,0x38,0x74,0x4b,0xe1,0x01,},\"\\xb2\\xae\\x65\\x8b\\x3c\\x13\\xc3\\xcd\\xeb\\x1d\\xc9\\x93\\xb0\\xf4\\x5d\\x63\\xa2\\xea\\x9a\\xbd\\x0b\\x7a\\x04\\xf1\\xf5\\xce\\x59\\x32\\x80\\x6c\\x2c\\xa9\\xb7\\xa2\\x04\\xfb\\xf8\\xd0\\x66\\xb7\\xf0\\xfe\\x6a\\xe0\\xd1\\xda\\x68\\xc8\\x85\\xee\\x11\\xf6\\xf6\\xdb\\x7e\\x83\\x20\\xa2\\xea\\x65\\x0b\\x53\\x38\\x51\\xcd\\xd9\\x9d\\x90\\x3a\\xa0\\xb3\\xfa\\xa3\\xc9\\x50\\xf7\\x02\\xf0\\x4e\\x86\\xb4\\xee\\xb3\\xa1\\xc7\\xbc\\x85\\x4b\\x25\\x14\\xfa\\x5b\\x47\\x66\\xd3\\x75\\xb4\\xf1\\xad\\x61\\x07\\x53\\x78\\xdd\\x92\\xfd\\x62\\x6c\\x2b\\x47\\xe0\\x13\\x83\\xea\\x72\\x98\\x79\\x59\\x26\\x2c\\x56\\x28\\x62\\xb4\\x5b\\x75\\x57\\x67\\x14\\x13\\xb6\\x66\\x14\\xbc\\xc9\\xf7\\xbd\\xb9\\xee\\x46\\xcb\\xed\\x89\\x65\\xbf\\xa5\\x05\\x31\\x50\\x90\\xc7\\x20\\x4b\\xea\\x89\\x17\\x5b\\xe5\\xf2\\x08\\x02\\xe3\\xde\\xdd\\xcb\\xd8\\xdd\\x64\\xcf\\xef\\x7e\\xe6\\xa6\\xe3\\x86\\x0c\\xe1\\xe5\\x79\\x9d\\xf5\\xd8\\x10\\xd5\\xec\\xf3\\x2e\\x61\\x5d\\x16\\xdf\\xf8\\x7a\\xbd\\x4a\\x63\\x6e\\xa1\\x7a\\xa4\\xec\\xe5\\xb6\\xb2\\xc0\\x46\\xb6\\x5b\\x5a\\xf7\\x49\\x86\\x2b\\x45\\x79\\x0c\\x39\\x17\\x68\\x20\\xb3\\x69\\x01\\xbe\\x64\\x9c\\xf4\\x16\\x9d\\xf7\\xe9\\x23\\x95\\x6d\\x96\\x06\\x49\\x50\\xc5\\x55\\xf4\\x5a\\xcb\\x94\\x50\\x7c\\xfd\\x0c\\x3b\\x33\\xb0\\x80\\x78\\x5e\\x35\\xc0\\xd2\\xb0\\xad\\xdc\\x4c\\x0a\\xd3\\xfb\\x21\\x6a\\xc2\\xe6\\x01\\xc9\\xc7\\xe6\\x17\\xda\\xbd\\xa3\\x33\\xda\\xe6\\x03\\xcc\\x9d\\xb1\\xfc\\x62\\xae\\x4e\\x0e\\x45\\xe3\\xcc\\xdd\\x16\\x6a\\x67\\x81\\xe2\\x43\\xb7\\xda\\xa1\\x38\\x80\\x66\\x32\\xf5\\x38\\x84\\x4e\\xe3\\xd1\\x40\\xb7\\xa8\\xbb\\x2b\\x54\\x01\\x00\\x77\\x8c\\x45\\x8e\\x06\\x61\\x70\\x70\\x5e\\x5f\\xb2\\xc8\\x80\\x29\\x09\\x8b\\x99\\x2c\\x39\\xbc\\x9f\\xf6\\x33\\x0b\\xfc\\xfe\\x77\\x52\\x32\\x0e\\x6e\\xa0\\x94\\x9d\\x2c\\x87\\x1a\\xed\\xc1\\x87\\xbe\\x27\\xfe\\xf7\\xdb\\x5f\\x72\\xa6\\xa7\\x73\\xed\\xde\\x0d\\xc5\\x2a\\xe2\\xed\\x93\\x1c\\xb2\\x68\\x17\\xb8\\x5b\\x15\\x45\\x89\\x4d\\x92\\x29\\x8a\\xaf\\x87\\xcc\\xbc\\x78\\x3e\\x8d\\xd6\\xd1\\x64\\x93\\xf5\\x6e\\xad\\x2b\\xa8\\x52\\xee\\x9c\\x7d\\x10\\x07\\x44\\x06\\x44\\x0d\\x2a\\x27\\x9a\\xbc\\x87\\x4f\\x15\\x46\\x8d\\xd6\\x6a\\x71\\x7b\\xac\\xe3\\x7b\\xe7\\xb7\\x05\\x5d\\xd9\\x68\\x1f\\x8b\\xe8\\x13\\x29\\xee\\x7a\\xf9\\x7e\\x3a\\xbc\\x43\\x4a\\xc1\\xc9\\x3a\\xec\\x58\\x2f\\x23\\xfd\\x1e\\xc0\\xfa\\x5a\\xaf\\xcf\\x7b\\xfb\\xda\\x00\\xff\\xa9\\x7a\\xe3\\x17\\xae\\x91\\x8d\\x34\\x9d\\x21\\xa7\\xf4\\x61\\x91\\x42\\xba\\x23\\xda\\xce\\xf7\\xb3\\x90\\xae\\x26\\xa1\\x7e\\x2e\\x29\\x62\\xae\\x27\\x00\\x53\\x76\\xb7\\x2d\\x4d\\xa9\\xe2\\x97\\x96\\x53\\xa6\\x63\\x25\\xa1\\x46\\x17\\x63\\x8d\\xbe\\x1a\\x55\\x40\\xb6\\x83\\xac\\x00\\x17\"},\n{{0x6d,0x1d,0xa5,0xb4,0x83,0xe6,0x4b,0x03,0x65,0x99,0x0f,0xf0,0x93,0x81,0xfb,0x17,0x02,0xfd,0x8e,0xc3,0xa1,0xa3,0x69,0xcd,0x52,0xe4,0xc5,0x67,0x13,0xa3,0x14,0xa5,},{0x08,0x05,0x5c,0x26,0x1f,0x26,0xe0,0x2a,0x65,0x8f,0x66,0xd9,0xba,0x01,0xfc,0xde,0x53,0xe9,0xad,0xe3,0xed,0xc6,0xbf,0x81,0x5e,0x4a,0x68,0x02,0xe1,0x67,0x7a,0xb3,},{0xa5,0xb8,0xb4,0x4a,0x91,0x44,0x4c,0x64,0x37,0x4b,0x52,0x3c,0xb4,0xdc,0xb0,0xce,0xf4,0xce,0x52,0x40,0x8b,0x98,0x12,0x6d,0x7e,0x1a,0xe8,0xbd,0xc2,0x8c,0xf5,0x14,0x70,0xce,0x4e,0x25,0x3e,0x0b,0xe6,0x2b,0xd6,0x8e,0xbf,0x5f,0xa6,0xbc,0xe1,0x58,0x5e,0xcc,0xfa,0x92,0x56,0xc0,0x73,0xee,0x03,0xe5,0x4c,0x52,0x5b,0xbe,0x2d,0x0a,},\"\\x79\\xa2\\xc3\\x70\\x55\\xf1\\x89\\xf3\\x24\\x7f\\x1f\\x8c\\xea\\x19\\xb2\\xea\\x40\\xd8\\x58\\xdb\\x1f\\x5d\\x13\\x92\\xee\\x6d\\x41\\x1c\\x78\\x02\\xee\\x23\\xde\\x52\\xad\\x02\\x81\\x17\\x25\\xa9\\x4d\\x76\\x67\\x5d\\xa8\\x9a\\x96\\xb5\\xd0\\x7a\\xbc\\xee\\x23\\x3a\\x1a\\x2e\\x1f\\xa3\\x24\\xff\\xf9\\xe7\\x8a\\x4c\\x19\\x61\\x47\\xf8\\x57\\x0b\\x0b\\x13\\x71\\x3d\\x96\\xaa\\x5d\\x75\\x0a\\x15\\xd7\\xcd\\x16\\x2e\\x7b\\xa2\\xe7\\x53\\x33\\x60\\x7d\\xd6\\x98\\xeb\\x47\\x73\\xc7\\xe9\\x1f\\x76\\x68\\xff\\x8b\\x62\\xf0\\x46\\x40\\xeb\\x12\\xec\\xf1\\x22\\xfc\\xe6\\xb8\\x32\\xe0\\xd0\\xdf\\x92\\x8e\\xef\\xd2\\xc2\\x00\\x23\\x64\\xaf\\x6b\\xb5\\x52\\x91\\xd3\\xf5\\x49\\x29\\x08\\x5b\\xe3\\x38\\x34\\x2f\\x09\\xda\\x73\\xe2\\x79\\xc8\\x7c\\x83\\x24\\x55\\x58\\x19\\xed\\x57\\xe7\\x8d\\x7a\\xc4\\x09\\x51\\xd3\\x3f\\x65\\xb9\\x4a\\xa1\\xe5\\x55\\xe9\\x2a\\x06\\x3d\\x11\\xf1\\xff\\x7b\\x12\\x69\\x43\\x41\\xe3\\xfe\\x44\\x49\\x33\\xd0\\x1a\\xa3\\x67\\x53\\xed\\x3c\\xdd\\xa8\\x90\\xbd\\xf9\\x5a\\x82\\x05\\xb5\\xd8\\x93\\x22\\x19\\x91\\xc7\\x95\\xad\\x0a\\x4a\\x94\\x6f\\x58\\xd4\\x0a\\x45\\x34\\x51\\xaf\\x21\\x4f\\xd4\\x65\\xe2\\x8d\\x3e\\x2f\\x0a\\x56\\xaa\\x56\\xde\\xf8\\xdc\\x04\\xaa\\xd3\\x57\\x13\\xab\\xfc\\x8b\\xd7\\x85\\x6d\\x5a\\x9d\\xc3\\xf6\\x0a\\x3f\\x2b\\xd3\\xe6\\x36\\x6f\\x1f\\x24\\x4e\\x94\\x1d\\x6a\\xea\\x89\\x2f\\x6a\\x88\\x93\\x1f\\xe1\\xc3\\x13\\xe0\\x90\\x78\\xe9\\x0b\\xc6\\x39\\x2d\\x49\\x05\\x33\\xc9\\xea\\x3f\\xf6\\xde\\xaf\\x3a\\xad\\xfa\\x8d\\xfd\\xc4\\xe9\\x0f\\x64\\xaf\\x47\\x58\\x9e\\xa6\\x5a\\x87\\xac\\xd2\\x19\\x96\\x02\\x35\\x1d\\x3a\\xfc\\x21\\x03\\x19\\x6e\\x03\\x94\\xed\\x52\\x3a\\xa7\\x99\\xd3\\x1e\\x11\\xd3\\x4f\\xff\\x54\\x6d\\x44\\xf4\\x36\\xb3\\x48\\x59\\xf9\\xcf\\xbc\\x9c\\xe4\\x03\\xde\\x5a\\x98\\x30\\xec\\x3d\\x45\\x3f\\x0d\\x45\\x97\\x0f\\x57\\x2c\\x14\\x4f\\x19\\x1b\\x2f\\xbb\\x2d\\x0e\\xa6\\xcc\\x9c\\x8e\\x24\\xd9\\xc0\\xb2\\x18\\x3b\\x27\\x80\\x72\\xeb\\xb0\\xbe\\x2d\\x70\\xd0\\x37\\xfd\\x2e\\x8e\\xc1\\x8d\\xc4\\xc9\\xb2\\x1a\\xbd\\xc6\\xa4\\xce\\x8d\\x46\\x68\\xa2\\x20\\xee\\xbd\\x69\\x34\\xf0\\x4b\\xaf\\x0e\\x88\\xa4\\x88\\xd2\\xdf\\xc7\\x35\\xa7\\xc5\\xa7\\x0d\\xbb\\x01\\x66\\xa2\\x1a\\xe0\\x11\\xfc\\x6e\\x7d\\xa1\\x0f\\xc3\\x20\\x33\\x62\\x71\\xd9\\xee\\xad\\x51\\x0a\\x6f\\x70\\x32\\xf2\\x29\\x66\\x92\\xbe\\x50\\x80\\x21\\xbc\\x98\\xc1\\x70\\xbe\\x42\\x35\\xf7\\xce\\x31\\xf2\\xbc\\xd6\\x34\\x11\\x63\\x68\\x33\\x76\\xae\\x2c\\x56\\x62\\xcb\\x47\\x70\\xc9\\x6e\\x01\\x8e\\xf1\\xbf\\x47\\x91\\x33\\x19\\xc9\\xa0\\x9b\\x9e\\x96\\x5a\\xb5\\xc3\\xe9\\x7b\\xbc\\x75\\x6a\\x56\\x66\\xb4\\x56\\x7f\\x2c\\xff\\x2d\\x0c\\x3a\\x6a\\x40\\x26\\x15\\x8c\\xb9\\xf9\\x0f\\x95\\x00\\x56\"},\n{{0x51,0x46,0xf5,0xb7,0xf1,0xba,0xa1,0x9f,0xc8,0xcd,0x78,0x5c,0x89,0x6e,0x0f,0x90,0xf9,0xf6,0x59,0xb7,0x7b,0x1b,0x9b,0xb4,0xad,0xca,0xb5,0xa6,0x26,0x72,0x05,0xe4,},{0x68,0x8a,0x8d,0xe6,0x4e,0xff,0x33,0xba,0x6b,0xbe,0x36,0xcd,0xd6,0xa3,0x84,0xbb,0x67,0xb3,0xf4,0x26,0x36,0xdb,0x23,0x4f,0xf5,0xef,0xe0,0xb3,0x17,0x43,0xc7,0xe6,},{0x4b,0xdb,0xd7,0xc6,0x4f,0x13,0xe2,0x78,0xc2,0x39,0x69,0xe7,0xeb,0x38,0x6b,0xbe,0x49,0x9d,0xbd,0xef,0xc3,0xff,0x4e,0x30,0xcf,0xac,0x5c,0xf8,0x6f,0x21,0x6c,0x24,0xc9,0xe6,0xcd,0xe2,0x0e,0x52,0x9d,0x14,0x7f,0xb7,0xea,0x08,0xf2,0x59,0x3a,0xd5,0x09,0x03,0xb5,0xed,0xbf,0x86,0xb4,0xd2,0x8f,0x2e,0xb3,0x2e,0xf1,0x37,0xf0,0x0c,},\"\\x97\\xbd\\x99\\xf5\\x18\\xee\\x07\\x88\\xd5\\x76\\xd9\\x9c\\x04\\x3b\\x44\\x9d\\xfc\\x24\\x2a\\xc5\\xee\\xae\\xc3\\x44\\xa1\\x94\\x32\\xb3\\x45\\x96\\x2e\\xc4\\x12\\xce\\x55\\x36\\x2b\\x3b\\x85\\x1d\\x98\\x11\\x9f\\xce\\xb9\\x32\\x83\\x47\\xf6\\xfc\\xc6\\x8d\\xbf\\x56\\xa2\\x81\\x4d\\xb0\\x9e\\x93\\x85\\x84\\x3a\\x93\\x11\\x89\\xea\\x3e\\x72\\xda\\x9d\\x79\\xa4\\x56\\x93\\x05\\x3c\\x03\\x57\\x01\\xdc\\x55\\x51\\x24\\x0f\\x95\\xb3\\x03\\xfb\\xa1\\x6f\\x89\\xaa\\x53\\xa4\\x38\\x82\\xb0\\xf1\\x38\\x12\\x02\\xc7\\x8f\\x9c\\x74\\x19\\x89\\x9f\\x23\\x51\\xec\\xa9\\x5e\\x20\\xbf\\xee\\x76\\x35\\x1c\\x48\\xd0\\x04\\x99\\xf5\\x91\\xda\\x56\\xa9\\x95\\x24\\xbb\\x74\\xfe\\x1c\\x83\\x4e\\xe9\\x10\\x77\\x13\\x9f\\x1e\\xdf\\x67\\x31\\x5c\\x07\\xa3\\xfd\\x97\\xf8\\x0b\\x7c\\x27\\x6b\\x6c\\xf6\\xb5\\xcc\\x36\\xbe\\x36\\x3b\\x73\\x12\\x17\\xf6\\x31\\x9f\\x51\\x29\\xba\\x7b\\x14\\xd0\\x54\\xc8\\xd8\\x1d\\x8e\\x3a\\x3f\\x3b\\xe6\\x2a\\xc3\\x1f\\xf6\\x2d\\xf6\\xa3\\xb2\\xee\\x25\\x96\\x96\\x9b\\x99\\x17\\x04\\xb3\\x1c\\x68\\x99\\x97\\xab\\x46\\x28\\xbc\\x26\\x60\\xc6\\x78\\x72\\x13\\x2e\\x85\\xda\\x0c\\x4f\\xcf\\x56\\x79\\x65\\xf1\\x25\\x4a\\x8f\\x43\\x26\\x92\\xa1\\x7b\\xb8\\x6c\\xb3\\xc1\\xdc\\xba\\xac\\x93\\x95\\x52\\xf0\\x9e\\x50\\xec\\x5b\\x0d\\xe2\\xef\\x85\\xe0\\xac\\x25\\x3a\\x41\\x65\\x65\\x5d\\xb5\\xb5\\xc4\\x98\\x03\\x82\\x1d\\x85\\x9c\\x60\\x96\\x1e\\x06\\x1d\\x58\\x27\\x8b\\x82\\x7d\\xd4\\xd3\\xbc\\x47\\xf1\\xc2\\x2d\\xe0\\x94\\x90\\x6b\\xdb\\xbf\\x3b\\xad\\xbd\\xde\\x22\\xba\\x24\\x25\\x58\\x55\\xeb\\x86\\xd1\\xd7\\xf3\\x70\\x82\\x05\\x93\\x11\\xdc\\x07\\x28\\xeb\\xea\\xf2\\x6c\\x44\\x73\\xba\\xd1\\xfa\\x9e\\x61\\x4b\\x53\\x3b\\x81\\x1b\\x6b\\xcb\\x06\\x50\\xc0\\x6d\\x87\\x9a\\x52\\x45\\x78\\x8f\\x34\\x01\\xb4\\x61\\x97\\x30\\x07\\x74\\xa9\\xaa\\x73\\xcd\\x97\\x8c\\x05\\x30\\xc8\\x1a\\x53\\xbd\\xb3\\xfc\\x93\\x24\\x14\\xb3\\xe3\\x04\\x40\\xdc\\x12\\x74\\x41\\xef\\xf1\\x60\\x5e\\x7f\\xd9\\xac\\x8c\\x63\\x2e\\x82\\xbf\\x1b\\x45\\x3d\\x4f\\x33\\xa5\\x7e\\x4b\\x67\\xb0\\xb6\\xfc\\xf6\\xed\\x55\\x55\\xb5\\xf5\\xa3\\x00\\xa1\\x4a\\x00\\xd0\\x38\\x5a\\x33\\x75\\x05\\x25\\xb0\\x0e\\xdb\\x31\\x2c\\x6b\\xfd\\xd6\\x4e\\xdd\\x3b\\x53\\x16\\xd1\\x9f\\x95\\x8c\\x51\\x76\\x34\\xf0\\x13\\xb0\\x08\\x93\\x6d\\x34\\xe9\\xb5\\xe1\\xe9\\x28\\x3a\\x5f\\x0f\\xd7\\x78\\x33\\x77\\xc0\\xe5\\x09\\x06\\x41\\xbb\\x9d\\x33\\x8c\\xf3\\x13\\x3a\\xcd\\x0b\\x97\\x1e\\x53\\x79\\x04\\xf1\\x7a\\xf9\\x29\\x11\\xaf\\xad\\x72\\xee\\x97\\xf9\\xa8\\x28\\x3a\\x16\\xa7\\xe2\\x6a\\xb4\\x28\\x41\\x6c\\x10\\x17\\xda\\xe9\\xb1\\xa9\\x9c\\x4c\\x33\\x20\\xad\\x16\\x3b\\xdc\\xfc\\x32\\x8b\\xfa\\xf9\\xb8\\xd5\\xd7\\xd2\\x6d\\x41\\xd1\\xef\\x21\\xa5\\x20\\x8f\\x01\"},\n{{0x5e,0x6f,0xda,0xc9,0x35,0x1a,0x63,0x7b,0x99,0xf3,0x3a,0x26,0x4e,0x12,0x87,0x69,0x7e,0x2a,0xba,0xb0,0xcc,0xa1,0x66,0x21,0x79,0x24,0x84,0xf5,0x60,0x6f,0x44,0xc1,},{0x57,0xe5,0xf8,0x8a,0xcd,0xdc,0x8c,0xde,0x7d,0xd0,0x7a,0x31,0x46,0xfb,0x1d,0x4f,0x7a,0x9b,0x63,0x83,0xa8,0xf6,0xb2,0xb8,0xd9,0xb0,0x7e,0xbc,0x3f,0xc4,0xdd,0x20,},{0x98,0x7e,0x32,0xe0,0x0a,0x8a,0x16,0x32,0xf4,0x7b,0x50,0x31,0x94,0x35,0x5c,0x98,0x0c,0xb2,0x2a,0xde,0xb3,0x26,0xb4,0xe3,0x11,0x5e,0xca,0xb0,0x4b,0x70,0x4d,0x18,0x6c,0xd9,0x2e,0x3c,0x3a,0xc7,0xb4,0xe2,0x93,0x6c,0xbd,0x07,0xcb,0x79,0x4e,0xc0,0xcf,0xe9,0x1a,0x97,0x87,0x2f,0xf2,0xb4,0x13,0x76,0xf5,0xf1,0x8f,0x55,0xb8,0x05,},\"\\x4d\\x6c\\xd3\\xbc\\x2f\\x86\\x26\\x6b\\x8b\\xb1\\xb6\\x1d\\x0e\\x1c\\xaa\\x9b\\xd2\\xd4\\xa1\\x80\\x36\\x1a\\xef\\x3a\\x18\\xd3\\x90\\xb1\\x0f\\x7e\\x86\\x0f\\x69\\x7e\\x24\\x7e\\xb6\\xc3\\xe5\\x1d\\x3b\\x97\\x6b\\xf0\\xca\\x18\\x3d\\x01\\xa6\\x98\\x80\\xf1\\x5c\\x94\\xb8\\x75\\x66\\x8c\\xa3\\x0d\\xad\\xa0\\x89\\x5b\\xed\\xd4\\xd7\\x05\\xa0\\xe0\\x33\\x04\\xd0\\x63\\xde\\xa8\\x7c\\x7f\\xde\\xc9\\x8b\\x89\\xc0\\x6f\\x13\\x0d\\xd5\\xbd\\x58\\x6b\\x54\\xd9\\xba\\x73\\x78\\x26\\xbb\\x40\\x5c\\xd8\\xac\\x8b\\xbc\\x95\\x00\\xac\\xda\\x3c\\x07\\x46\\x1d\\x00\\x94\\x40\\xaf\\x0b\\x25\\x31\\xe7\\x2f\\x3f\\xf5\\x01\\x6a\\xe2\\xd8\\x6d\\x69\\xb8\\x7f\\xb2\\x73\\xd1\\xe8\\xdd\\x5f\\x6a\\x26\\x4b\\xee\\xbb\\x2f\\x88\\x59\\x96\\x74\\x1f\\xfd\\xa2\\x77\\xa0\\xfb\\xf8\\xef\\x08\\xf8\\x1f\\x22\\xee\\x59\\x61\\xd9\\xd3\\xfc\\x93\\x83\\x62\\xe1\\xca\\x12\\x00\\x4a\\x91\\xd9\\xb5\\xf7\\xa6\\x83\\x3a\\x6c\\x22\\x95\\x5a\\xc0\\xcd\\xa3\\x39\\x06\\x71\\x91\\x0c\\xbd\\x51\\xe6\\x85\\xfe\\x09\\x59\\x73\\xe4\\x15\\xfc\\x2d\\xb8\\xad\\xf1\\x0b\\x14\\x7e\\xc7\\x08\\x0c\\x3b\\x8e\\xbd\\x07\\xd2\\x1b\\xb9\\x55\\x6d\\xa8\\x54\\x30\\xa2\\x68\\xee\\xd8\\x48\\x6b\\x1e\\x31\\xc9\\x43\\x13\\xb0\\x16\\x49\\xfe\\x91\\xb2\\x22\\xf8\\x5a\\xde\\xe1\\x5e\\xb7\\x77\\x07\\xd7\\x8f\\xfc\\xb6\\x60\\x92\\x65\\x44\\xd3\\x3b\\xe9\\x99\\x4a\\x29\\x76\\x20\\xdc\\x7a\\xed\\x97\\xf3\\x92\\x63\\x90\\x53\\xf3\\x88\\xb0\\xb3\\xaa\\x3b\\xd0\\xac\\x5b\\x03\\x3c\\xb4\\x14\\xbe\\x52\\x0b\\x43\\xdf\\x68\\x26\\xb9\\x76\\x89\\x0d\\x0c\\x53\\xb9\\x7b\\x6c\\x92\\xe7\\xd1\\xa1\\x57\\x3d\\x0c\\x74\\x94\\xd7\\x47\\xe0\\xca\\xd9\\xbd\\x8e\\xa5\\x38\\xd6\\x2a\\xd5\\x98\\x01\\xad\\x07\\x16\\xf1\\x70\\x19\\x3e\\x30\\x09\\xd9\\x95\\x9c\\x55\\xd2\\xff\\x64\\x79\\x9b\\xd9\\x59\\x35\\x9a\\xbb\\x94\\xca\\x97\\x23\\xb5\\xff\\xc2\\x4c\\x95\\x07\\xf8\\xc5\\xfd\\x6e\\x88\\xea\\xae\\x7a\\x70\\xad\\xd8\\x4d\\x74\\x4c\\xcf\\x8b\\x98\\x36\\x37\\x88\\xf0\\xbf\\xb1\\xa0\\x25\\x22\\x02\\x57\\x51\\xe5\\x34\\x71\\x0d\\x40\\xa2\\xd3\\x8a\\x79\\x11\\x94\\xeb\\xa2\\x93\\xfd\\x20\\x46\\xcc\\x14\\xdd\\x38\\x76\\xd1\\x68\\xfc\\x6e\\x23\\x6c\\xbe\\x14\\x6d\\x63\\x69\\xd2\\x25\\xbf\\xa6\\x7e\\x53\\x97\\x98\\x65\\xf7\\x88\\x73\\xa9\\xfc\\xf0\\x3c\\x18\\x6f\\xa8\\x52\\x1f\\x0a\\x55\\x45\\xac\\xce\\xe8\\x0d\\x1e\\x55\\x10\\x72\\x21\\xe2\\x1f\\x0f\\x22\\x91\\xc1\\x43\\xde\\x02\\x3e\\x88\\xd7\\x33\\x0c\\xc8\\x7d\\x4c\\x51\\xff\\x29\\xa3\\x09\\x06\\x05\\xe9\\x73\\x94\\x90\\xc1\\xdc\\xee\\x71\\x34\\x95\\xf2\\x31\\xc2\\xa3\\x6b\\x11\\xab\\x23\\x55\\x47\\xfb\\x63\\x28\\xf7\\x47\\x33\\x6d\\x9b\\x1e\\xf2\\x5a\\x8a\\xb9\\x9c\\xed\\xa9\\x57\\xb2\\xdc\\xce\\xe4\\x07\\x5b\\x0d\\x03\\x38\\x1b\\x94\\xae\\x18\\xd0\\x41\\xea\"},\n{{0xfc,0xff,0xf0,0x93,0x2d,0xc8,0x6e,0xa5,0x90,0x2a,0x8d,0x33,0x07,0x33,0x29,0x96,0x0c,0xd8,0x18,0x8a,0x07,0x5d,0xd0,0xbc,0xdf,0xa8,0x38,0x2c,0x20,0xb0,0xe7,0x8f,},{0x0c,0x92,0x05,0xa9,0x0b,0xbe,0x7f,0x2d,0x50,0x5e,0x17,0xfa,0x3d,0x08,0x0b,0x52,0x2a,0x1d,0x7a,0x15,0x2c,0xad,0x2d,0x85,0xd3,0x1b,0x34,0xa0,0x47,0x1c,0x0d,0x4c,},{0x37,0xdd,0xd8,0x3f,0x98,0xb0,0x57,0xb7,0xcb,0x32,0x08,0xa8,0x32,0xc5,0x8a,0xa9,0x06,0x94,0x56,0x3c,0x23,0x54,0x8d,0x43,0x22,0x91,0x38,0x0b,0x73,0x59,0x13,0x01,0xf2,0x74,0xb0,0x4c,0xee,0x2e,0xf7,0x8c,0x06,0xd9,0x6c,0x3d,0x9b,0x7c,0x17,0x52,0x1a,0xae,0x1a,0x8c,0xa5,0x0d,0x34,0x7c,0x09,0xc3,0xcf,0x70,0x3b,0xc8,0x83,0x0b,},\"\\x3d\\x4b\\x76\\x12\\x23\\x73\\xe2\\x12\\xa3\\x46\\xd1\\x9a\\x66\\xbb\\xfc\\x4b\\x62\\x32\\x92\\x64\\x9b\\xd0\\xce\\x5c\\xf6\\xbb\\x13\\x56\\x48\\xbd\\x01\\xdb\\x74\\x03\\xb3\\xd0\\xbd\\xd1\\x69\\x7f\\xf4\\xe6\\xe9\\x08\\x90\\x41\\x16\\x75\\x4d\\x37\\x0c\\x40\\xd7\\x00\\xcd\\xb6\\x64\\xc4\\x6a\\x91\\xdd\\x84\\xa3\\x58\\xb9\\xd2\\x38\\x14\\x43\\xe6\\x0f\\x2c\\x3f\\x56\\x40\\x26\\x1b\\x6b\\x85\\x8b\\xa8\\xf8\\x28\\xb0\\x97\\x1f\\x41\\x22\\xb2\\x02\\x88\\xa2\\x6b\\xa2\\x09\\x0b\\xa1\\x4f\\xd2\\x76\\x36\\x0c\\xc6\\x86\\x79\\xcd\\x84\\x19\\xae\\x19\\xc6\\xd4\\xdc\\x7b\\x66\\x14\\xc0\\x6d\\xf5\\xe5\\xc0\\x51\\x0e\\x2c\\xb6\\x86\\xde\\x0e\\xbd\\x75\\xe5\\x21\\x0a\\x21\\x55\\x62\\x58\\x9b\\x28\\xc9\\xcc\\xc7\\xd2\\x72\\xb9\\x8b\\xd4\\xbf\\x93\\x49\\x5e\\xfe\\x4f\\xc5\\xb7\\x8d\\xef\\xec\\xfb\\xca\\xa9\\xfe\\x12\\x6b\\xad\\x30\\xe8\\x9b\\x3a\\x38\\x9b\\x42\\x56\\xf6\\xa4\\x8a\\x76\\xc3\\x45\\xde\\x5a\\x36\\xa1\\x44\\x9f\\x08\\x34\\x5b\\x9a\\x5e\\x6a\\x00\\x1d\\xa1\\xff\\x9c\\xd4\\x33\\x70\\x93\\x48\\xe9\\xae\\xfb\\xc7\\x8b\\xa5\\x2d\\x3a\\xb3\\xb4\\x69\\x86\\x93\\x5e\\xba\\x8e\\xcf\\x81\\xed\\xc4\\x3c\\x5b\\x2e\\x3b\\x5e\\xb3\\x8d\\x9a\\x16\\x5e\\x9e\\x7f\\x72\\xf6\\x17\\x60\\x54\\x63\\xbe\\xdb\\xa9\\x73\\xeb\\xfd\\xcd\\xf2\\xb0\\x88\\x9c\\x71\\x41\\x2f\\x8f\\x85\\x0c\\x7a\\x3b\\x55\\x18\\xec\\xd8\\x9d\\x2e\\x25\\xc0\\xc1\\xc3\\x0f\\x08\\x5a\\x0f\\xfe\\x54\\x0e\\xf9\\xc0\\xe8\\x8f\\xc7\\xec\\x4a\\xf1\\x94\\x8a\\x4e\\x6f\\x7a\\x6e\\x25\\x6b\\x30\\x7a\\x11\\x27\\xb7\\x1b\\xa6\\x86\\xef\\xea\\xdc\\xa0\\xe4\\x86\\x09\\x47\\xcf\\x67\\x4f\\xce\\xd6\\xca\\xf7\\x31\\x0c\\xcb\\xaa\\x8d\\x90\\x47\\xda\\xed\\x30\\xfd\\x55\\x85\\xd4\\x1d\\xde\\xae\\x4d\\xf2\\xfe\\xd4\\xb6\\x22\\x80\\x32\\xc3\\xe4\\xae\\x23\\x80\\xe8\\x7e\\xc6\\xcd\\x72\\xe4\\xd7\\x4b\\x8b\\x4c\\x38\\x13\\xfb\\x04\\x33\\x89\\x39\\x1e\\x9c\\x13\\xf7\\xd3\\x3c\\x3a\\xab\\x5a\\x78\\xfc\\x4c\\x6a\\x63\\x4c\\x61\\xa7\\x0f\\x02\\xa9\\x40\\x54\\x8d\\xa1\\x77\\xc6\\x5d\\xf6\\xab\\x17\\xcd\\x96\\x83\\xf3\\x7e\\xa8\\x21\\xc7\\x40\\x88\\x9d\\x82\\xe8\\x8c\\x83\\x4e\\x7d\\x5d\\xc1\\x16\\x62\\xea\\x78\\xb1\\x3c\\x6a\\x4b\\x62\\x18\\xd3\\x17\\x84\\x21\\x9a\\x47\\x67\\x59\\x5b\\x1a\\x56\\x21\\x65\\x25\\xcd\\x68\\x93\\x8b\\x22\\xbd\\xb1\\xf8\\xc5\\xa7\\xf1\\x70\\x1a\\xfe\\xb9\\x61\\x88\\x8e\\x2e\\x0e\\xc0\\xc8\\x38\\xcd\\x62\\x0c\\xb7\\xdd\\x8a\\x14\\x93\\xa0\\x2c\\xd5\\x6b\\x54\\x51\\x25\\xe4\\x70\\x0c\\x08\\x89\\xfa\\x26\\x44\\xe6\\x44\\xa3\\xaf\\x53\\x1d\\x1c\\xd6\\xbc\\x95\\xe5\\xdf\\x91\\x75\\xf1\\x37\\xf2\\x84\\x08\\xcb\\x69\\x9c\\x7a\\xe6\\x6f\\x65\\xd1\\xd2\\x93\\x0f\\xac\\x57\\xca\\x8a\\x60\\xe6\\x31\\x1a\\x40\\x78\\x48\\x8c\\x9e\\xa4\\x04\\x94\\x8a\\x9d\\xeb\\xeb\\x9d\\x5e\\x10\"},\n{{0xa1,0xe4,0xfc,0xfd,0xe0,0x44,0xf1,0xbb,0x0e,0x7b,0xbc,0x63,0x1a,0x83,0x1a,0x8d,0x07,0xe9,0x0a,0xe0,0x8a,0x96,0x6a,0xd6,0x27,0xb6,0x20,0xb1,0xe2,0x8c,0x42,0xcf,},{0x25,0x56,0x0f,0x31,0x16,0x8b,0xd4,0xb7,0x25,0x52,0xed,0xed,0xd0,0x8b,0xb6,0xbf,0x79,0xa9,0x40,0x63,0xc1,0xf1,0xe1,0xd3,0x04,0x86,0x9d,0xd1,0xce,0x04,0x9b,0x95,},{0xc8,0x00,0x15,0x27,0xbd,0x90,0x2c,0x15,0xc3,0xdd,0x5a,0xe1,0x81,0x80,0x52,0x5b,0x5e,0x82,0x02,0xbe,0x66,0x71,0x1f,0x82,0x88,0x5c,0x82,0x22,0xa1,0x5f,0x06,0x00,0x92,0xa2,0xa6,0xe2,0xf7,0xd7,0xe9,0x80,0x31,0x12,0x09,0x19,0x1b,0x32,0xb8,0xad,0xe4,0x8d,0x3e,0xa9,0x8c,0xf2,0x45,0xf0,0xfa,0xd6,0x2c,0x00,0x9c,0x5a,0x71,0x08,},\"\\x8c\\x14\\x54\\xd4\\xe0\\x8a\\x14\\x01\\x64\\x6b\\xf7\\xa8\\x85\\x9e\\x8a\\x14\\x5e\\x85\\xee\\xeb\\x40\\xdb\\x38\\xff\\x01\\x69\\x70\\x96\\x41\\x21\\x2c\\x81\\xb6\\x73\\x90\\x74\\x9c\\x01\\xa7\\x98\\x07\\xf3\\xcc\\xad\\xbb\\xd2\\x25\\x6f\\x36\\xff\\xc1\\x80\\xcf\\x9b\\xa4\\x4b\\xf4\\xa7\\x61\\x2d\\x44\\x1c\\x23\\xb2\\xe2\\x5d\\x33\\xc4\\x8a\\x73\\xe1\\x6c\\xe3\\x57\\x56\\x27\\x58\\xad\\xb0\\x05\\x53\\xc3\\x14\\x2f\\xb8\\x17\\x6b\\x6a\\xe8\\xfb\\x61\\x0a\\x60\\xf9\\x23\\xb0\\x91\\x18\\x14\\xb1\\x0f\\x56\\x79\\x93\\x6c\\x36\\x77\\xb7\\x0e\\x84\\x6e\\x21\\x8f\\x58\\x75\\x67\\xf2\\x01\\x9c\\x7d\\x28\\x2a\\x10\\x7f\\x3c\\xc8\\x47\\x63\\xad\\xae\\xc8\\x89\\x93\\xc0\\xcc\\x50\\x03\\xe7\\x7a\\xf6\\x0d\\x67\\xdb\\x53\\xf8\\xcb\\x72\\x7a\\xa6\\x67\\x2d\\xe0\\x04\\x49\\x8c\\x3b\\x3e\\x22\\x2a\\xa7\\x08\\x2d\\x91\\xf9\\x8a\\x1a\\x06\\x83\\x74\\xc5\\x10\\xff\\x53\\xa5\\xe5\\x59\\xcb\\xe2\\xd6\\xc7\\xc3\\x44\\x2d\\x72\\x38\\x90\\x7c\\x81\\x1d\\x58\\xaa\\x7f\\x5a\\x46\\xb8\\x31\\x12\\x44\\xf0\\xdb\\xe1\\xb9\\xc0\\xe9\\x44\\xdd\\xa1\\xd8\\x01\\x08\\x64\\x94\\x9c\\x59\\x39\\x6c\\x6b\\x34\\x6a\\x11\\xf3\\xaa\\x86\\x6d\\x6b\\xce\\xad\\xfc\\x90\\x90\\x38\\xd2\\x2e\\xfb\\xc8\\xf1\\xda\\xc8\\x10\\xa9\\xf2\\xfa\\xfc\\xce\\x7c\\x03\\x89\\xeb\\x0a\\x56\\xc0\\xf6\\x8c\\xae\\x24\\xae\\x3d\\xdb\\xdf\\xf7\\x11\\x6d\\x2f\\xad\\xeb\\x9b\\x0e\\x75\\x09\\x53\\x6f\\xdc\\x3b\\x83\\xe7\\x13\\x54\\xda\\x6a\\x1a\\xed\\x16\\x88\\x74\\x90\\xdc\\x2f\\x4d\\xf5\\x7b\\xba\\xa7\\x24\\x45\\x28\\xfa\\x30\\x94\\xb9\\x9e\\x86\\x75\\x81\\xac\\xef\\x90\\x62\\x70\\xb2\\xcf\\x4d\\xed\\xa6\\xb8\\xfd\\x9d\\xbb\\x79\\xad\\xd7\\xbe\\xa8\\xf8\\x6f\\xcb\\x1f\\x64\\xdf\\xd5\\x0e\\x38\\x5b\\x42\\x09\\xec\\x0b\\x1a\\x9f\\x6d\\x2e\\x51\\x90\\x68\\x29\\x7a\\x2b\\x5c\\x40\\x5c\\x21\\x6b\\x4a\\x2e\\xd9\\x83\\xff\\x69\\xc5\\x9b\\x53\\x0e\\xff\\xa6\\x0c\\x03\\x67\\x05\\x12\\x67\\xdd\\x2b\\xbd\\x1e\\x86\\xa9\\xab\\x5a\\x11\\x4d\\xd4\\xf6\\x9b\\x54\\x0b\\xfa\\xbf\\xe9\\x7c\\x04\\x03\\xb8\\xfc\\xbb\\x27\\x62\\x57\\x61\\xed\\xa3\\xe2\\xad\\x8e\\x62\\x5c\\xfe\\x4b\\x61\\x5b\\x70\\x25\\x53\\x1a\\x49\\x89\\x18\\xc2\\x4e\\x02\\xa0\\x0e\\x79\\x7b\\xba\\xfd\\x14\\xf9\\xd3\\xf6\\x82\\x7e\\x39\\x00\\x63\\xc4\\x36\\x08\\x06\\x88\\xd0\\x37\\xa6\\xe2\\x99\\x3c\\x56\\xd3\\xa8\\xe9\\x5f\\x37\\x5c\\x10\\x04\\x0b\\xf0\\x4f\\x03\\x0c\\x97\\x26\\x23\\xd9\\xe3\\x80\\x1c\\x13\\xb4\\xec\\x8d\\x01\\xcf\\x18\\x38\\x55\\xf5\\x93\\x5f\\x10\\xdd\\xb2\\xc5\\x4c\\x51\\xc8\\x0c\\xbe\\xd0\\xc2\\x4d\\xb5\\x6e\\x1e\\xd1\\x48\\x93\\x1d\\x89\\x16\\x1c\\x5e\\xa3\\x7c\\x2f\\x97\\x87\\xf8\\x8e\\xf7\\x33\\x0e\\x5d\\xcd\\x0e\\x43\\xd8\\x1b\\xfc\\x8b\\xf2\\x3d\\xdf\\x79\\x83\\xcc\\x1d\\x73\\x38\\x43\\xa3\\x3c\\xcb\\x39\\x5d\\xfc\"},\n{{0xbe,0xd1,0xbb,0xca,0xe1,0x86,0x43,0xd6,0xf6,0xaa,0xc3,0x4f,0x3d,0x9b,0x6a,0x14,0x78,0x39,0x4d,0x02,0xb9,0x31,0xcf,0xf0,0x06,0xd8,0x5f,0x21,0xb7,0xdb,0xc7,0x47,},{0x4f,0x52,0x8b,0x38,0x18,0x5a,0x42,0x4c,0x6f,0xde,0xce,0x46,0x51,0x1a,0x0c,0x29,0xb7,0xc0,0x4b,0x32,0xeb,0x04,0x83,0xab,0xb5,0x2d,0x5f,0x8e,0xb6,0xb3,0x52,0xeb,},{0x0f,0xc9,0x9d,0xd3,0xb9,0xa0,0xe8,0xb1,0xfc,0x6e,0x63,0x5a,0xf5,0xc6,0x40,0x06,0xb6,0x72,0x00,0xfe,0x95,0x8f,0x53,0xcc,0xe1,0xb9,0xb0,0x91,0xa4,0xe7,0x06,0x69,0xb5,0x93,0xf1,0x55,0x94,0xbc,0x08,0x42,0xe5,0x57,0x62,0x59,0xf9,0xa6,0x85,0x9a,0x0d,0xb2,0x2d,0x74,0x0f,0x9f,0x80,0x24,0xb5,0xba,0xf1,0xef,0x6f,0x95,0x8c,0x05,},\"\\xff\\x7c\\x64\\x13\\xe6\\x18\\xa0\\x56\\xde\\x40\\x1e\\xe1\\x0c\\x40\\xad\\xe3\\xd7\\xc0\\xe6\\x86\\x14\\x95\\xd9\\x7c\\x26\\x89\\xec\\x6a\\xbb\\x69\\xdd\\x2a\\xe7\\x01\\xfd\\xca\\xc8\\xf0\\x83\\x31\\xea\\x5c\\x5f\\x5d\\x80\\x5b\\x57\\x89\\xee\\x5e\\x24\\x1f\\xf4\\xac\\x8b\\x96\\x0f\\x4f\\x2b\\x9f\\xef\\x6a\\x72\\x7f\\xad\\x86\\xdc\\xd4\\x32\\xde\\x9f\\xad\\x6b\\xa4\\x5e\\x00\\xaa\\x36\\x87\\xb0\\xce\\xeb\\x2c\\x0d\\x43\\x0b\\x7d\\x5f\\xde\\x63\\xb4\\xf6\\xb9\\x82\\xc4\\xf9\\xe0\\x3c\\x43\\x0a\\xba\\xd9\\x04\\x4d\\x06\\xdc\\x49\\xe8\\x9d\\xf4\\x81\\x40\\x5d\\x8f\\xeb\\xbb\\x06\\x53\\xe9\\x68\\x69\\x48\\xaa\\xd2\\xd9\\x07\\x25\\x44\\xdf\\x94\\x24\\xfd\\x48\\x7f\\x4e\\x24\\xba\\x7f\\x24\\x55\\xdd\\xec\\x41\\x05\\x82\\x8c\\x39\\x81\\xbd\\xdb\\xb1\\xb7\\xfb\\xdb\\xac\\x15\\x59\\x03\\xe9\\x60\\xfc\\xd9\\x4c\\x07\\x16\\xe7\\x36\\xf5\\x19\\x86\\x7f\\xbc\\x52\\xc5\\x12\\x60\\xf5\\x71\\xd7\\xed\\xcb\\x08\\x1a\\x23\\x55\\x0a\\xd8\\xc7\\x0b\\xb2\\x68\\x86\\x4a\\xb2\\x76\\xaa\\x2c\\xc2\\xdb\\xf6\\x23\\x83\\xbb\\x66\\x03\\x0e\\xbe\\x94\\x35\\x41\\x74\\xcc\\xec\\x2d\\x2a\\x90\\x75\\x78\\x55\\x64\\x44\\x50\\x7c\\xbf\\x84\\x88\\xbb\\x23\\xc6\\x24\\x23\\xa3\\xa9\\x8d\\xa7\\xcc\\x96\\x8f\\x59\\x9d\\x3d\\xc8\\x4d\\xca\\x3a\\xfa\\xd7\\xf1\\x4e\\xc3\\x06\\xe1\\xdb\\x53\\x41\\x43\\x21\\x6a\\xa2\\x2a\\xd1\\x80\\x74\\xc7\\x19\\x57\\x08\\x05\\xea\\x46\\xbc\\x86\\xb7\\x1a\\x8f\\xf5\\x8e\\x41\\xe7\\x3c\\xb2\\x9a\\xd5\\x75\\x0f\\xcf\\xc9\\xa1\\xc5\\x42\\x92\\xb6\\x4b\\x47\\xec\\x95\\x38\\xf5\\x38\\x16\\xe3\\x6e\\xd0\\xd0\\xc1\\xae\\x5e\\xad\\x06\\xd4\\x77\\xaa\\x97\\x5e\\xce\\xba\\xf6\\x2d\\x90\\x23\\xb7\\x7e\\x50\\xe7\\xb6\\xd4\\xab\\xda\\xa4\\x85\\xea\\x34\\xec\\x76\\x6b\\xeb\\x1d\\x9b\\xa0\\x3c\\x9c\\x06\\x71\\x86\\xe2\\xe3\\x82\\x66\\xc6\\xe2\\x53\\x1e\\x97\\x48\\x02\\x14\\x63\\x8a\\x2b\\xb3\\x14\\x31\\xac\\x20\\x86\\x79\\x71\\x55\\xfc\\x77\\x5b\\x3a\\xad\\x8d\\x5a\\x0b\\x90\\x4c\\x38\\x1e\\xdd\\x0c\\x6b\\xc2\\x3c\\x66\\xa1\\x90\\x49\\x55\\xed\\x45\\x0a\\x9c\\xbd\\x16\\x45\\x9c\\x32\\xf5\\xca\\x35\\x4b\\xbc\\x2d\\xa7\\xb1\\xa4\\xd8\\x14\\xf1\\xb8\\x71\\x0a\\xad\\xb2\\xcc\\xc4\\xf3\\x97\\x75\\x8b\\x7e\\x9d\\x91\\xf3\\xa9\\x1e\\x58\\x25\\xab\\x86\\x82\\xff\\x5e\\x41\\x70\\x2e\\x07\\x84\\x1a\\xc7\\x69\\x8c\\x3d\\xa9\\xf5\\x58\\xed\\xd0\\x1f\\x86\\xce\\x2c\\x50\\x6b\\xf4\\xc2\\x14\\x9a\\xc9\\xc1\\x95\\xa5\\x9c\\x7d\\xd7\\xd4\\xec\\xf9\\x3c\\x90\\xb4\\x42\\x3b\\x43\\x50\\x58\\x8d\\x41\\x67\\x2c\\xed\\xc8\\x51\\x0a\\x7a\\xd5\\x3b\\x4b\\x7e\\xdc\\xaf\\x23\\xe4\\x3e\\x05\\x66\\x9d\\x27\\xa1\\xfe\\x97\\xb7\\x87\\x30\\xd3\\xfc\\x06\\x0b\\xd4\\xed\\xd9\\x87\\x2c\\xff\\xb9\\x62\\x85\\x35\\x1b\\xef\\x14\\x8e\\xf7\\x83\\xab\\x39\\x21\\x16\\xbd\\x7b\\x90\\x7b\\xad\"},\n{{0xc7,0x18,0x82,0x3f,0x43,0xdb,0x22,0x17,0xc6,0x6a,0xb2,0x89,0x97,0x04,0x16,0x5d,0x20,0x85,0x73,0xde,0x60,0xf3,0x3b,0xc0,0xb9,0x33,0x8d,0x88,0x0f,0x19,0x3f,0xb5,},{0x29,0x40,0xb8,0x79,0xb6,0x3f,0x2c,0xb1,0xf6,0xe3,0xef,0x9c,0x9d,0x33,0x3b,0xa9,0x17,0x70,0xfe,0x18,0xcc,0x5a,0x34,0x7f,0xdf,0x12,0xb0,0xef,0xc5,0xca,0x2e,0xc9,},{0x4c,0x9c,0xdb,0x1a,0xd4,0x65,0x09,0x56,0x0d,0x87,0x1d,0x30,0x89,0xaf,0xb8,0x73,0x46,0x48,0x20,0x1b,0x10,0xac,0xc9,0x53,0xe8,0xb6,0x1f,0x2c,0xce,0x2d,0xba,0xe0,0xfb,0x9b,0x86,0x8a,0xc9,0x57,0x43,0x2b,0x72,0x22,0xdb,0xf7,0xe4,0xcf,0x0b,0xc7,0x53,0x09,0xbe,0xa3,0x60,0xb2,0x63,0xab,0xbd,0xe1,0x88,0x53,0x2d,0xda,0x25,0x04,},\"\\x05\\x0e\\x68\\x77\\xf6\\x5e\\xc7\\x26\\xee\\xc7\\x01\\x86\\x3f\\xab\\x14\\x0b\\x99\\x4a\\xa1\\xe9\\x2a\\x48\\x7d\\xb1\\xa1\\x87\\x01\\x31\\x20\\x57\\xdb\\x44\\xbf\\xde\\x70\\x91\\x1e\\xc2\\x6e\\xaa\\x28\\x63\\x2d\\x03\\x79\\x4d\\x54\\x5d\\xfc\\xb2\\xae\\xd4\\x34\\x0c\\xab\\x7d\\x09\\x25\\x95\\xcd\\x59\\xed\\x23\\x99\\x40\\x43\\xf5\\x0b\\xa6\\x96\\xe9\\x80\\x2b\\xd6\\x49\\x90\\x12\\x13\\x97\\x28\\x64\\x57\\xae\\x69\\xd7\\x6c\\xb8\\xe3\\x4d\\x7c\\x1a\\xb2\\x45\\xcb\\x07\\xb1\\xb4\\x08\\xf2\\xbb\\xbf\\xdf\\x33\\xa1\\xbd\\xd5\\x59\\x63\\x67\\x02\\xc9\\x18\\xf9\\x82\\xc2\\xac\\x02\\x21\\xf7\\xf9\\x4d\\xb9\\x1e\\xde\\xfc\\xe2\\x81\\x18\\x25\\x9f\\x89\\xd9\\x94\\xda\\xd5\\xbb\\x01\\x3c\\x67\\x8c\\x1c\\x33\\x8b\\x65\\x39\\x6b\\x15\\xe8\\x89\\x9c\\x16\\x99\\x21\\xf2\\x78\\x85\\x9c\\xe0\\xc8\\x56\\xd8\\x89\\xb8\\xc6\\x34\\x18\\xeb\\xc5\\x73\\xd2\\xd6\\x25\\xd5\\xb5\\x93\\x88\\x39\\xf2\\xb1\\x69\\xb6\\x91\\x6d\\x8e\\x40\\xdd\\xe7\\x0d\\x3b\\x72\\x88\\x7a\\xd2\\x47\\x8e\\xf6\\xfb\\x12\\x84\\xfa\\x0e\\x4f\\xc5\\x24\\xe3\\xc6\\xfa\\x1d\\xd2\\x2b\\xa6\\xb8\\x1d\\xef\\x82\\x79\\xf3\\x82\\xbc\\xb4\\x50\\x48\\x85\\x1b\\x17\\xcd\\x65\\x9d\\x59\\x40\\x9f\\x57\\x1f\\xa8\\xa9\\x20\\xa2\\x09\\x34\\xd9\\xdb\\xe1\\x02\\x2d\\x63\\x58\\x40\\x96\\x54\\x00\\x24\\x0f\\x87\\x0a\\xce\\xff\\xd5\\xdb\\x7c\\x7d\\xf0\\x8a\\xf8\\x9e\\x47\\xe1\\xb9\\xe2\\x0b\\xb9\\x9f\\x96\\xab\\x07\\x3e\\xdf\\x53\\x69\\x4c\\x74\\x82\\x89\\x0e\\x36\\x31\\x34\\x02\\x17\\xe6\\x87\\xab\\x27\\xc9\\x84\\xb6\\x08\\x25\\x16\\x94\\x57\\xd4\\x35\\xa5\\x40\\x9a\\xd8\\xe4\\x2d\\xa0\\xaa\\x63\\xe2\\x0c\\x2b\\xc6\\x7b\\xd8\\xb9\\xa2\\x67\\xf3\\x96\\x73\\xa7\\x7f\\x7f\\x31\\x36\\xdc\\x5c\\xb2\\xd2\\x49\\x48\\xdb\\xe7\\xbc\\xd7\\x12\\x93\\x18\\xc6\\x8c\\x6f\\xe9\\x5d\\xd4\\xdd\\x4f\\xe9\\x42\\x28\\x68\\x31\\xea\\x53\\x35\\x2f\\xbb\\x25\\x2a\\x12\\x88\\xbc\\xd8\\x38\\x92\\x13\\x56\\x78\\x5d\\x07\\x21\\x34\\xcb\\x82\\x0f\\x62\\x79\\xcc\\x71\\x46\\x1f\\x43\\x1b\\xe9\\xd3\\x01\\x47\\x24\\x32\\x1c\\x92\\xfd\\xc5\\x76\\x32\\x01\\x37\\x70\\x5c\\xff\\xb2\\xc2\\x36\\x64\\xb7\\x05\\xe9\\xbe\\x60\\xae\\x1a\\x19\\x0f\\x3e\\x34\\x84\\xf7\\x00\\x58\\xe7\\x02\\x40\\x7b\\x05\\x6d\\x7f\\xe5\\xd3\\x1c\\xee\\x9c\\x2a\\x6a\\xc6\\xea\\xda\\x35\\x16\\xab\\xc5\\x51\\x72\\x56\\xdf\\x12\\x43\\x78\\x0a\\x03\\xbb\\x00\\xba\\x00\\xce\\x24\\x80\\x76\\xee\\xca\\x6f\\xee\\x91\\xd5\\xef\\x9e\\xb9\\x07\\xb8\\x01\\xaf\\x09\\x7f\\x3e\\x9e\\xb2\\x56\\xbd\\xcd\\xe8\\x1e\\xfe\\x4b\\xaf\\x81\\x89\\xb0\\x39\\x9e\\x36\\xf1\\xea\\xa3\\xab\\x62\\x66\\x17\\xcf\\x3b\\x47\\xdd\\x89\\xca\\xf6\\x9c\\x64\\xc5\\xb8\\xf6\\x8b\\xd9\\x17\\xfe\\x03\\xe4\\x66\\x85\\x38\\x46\\x0a\\x1b\\xe8\\x8d\\x9a\\x84\\x6c\\xef\\x39\\x93\\x46\\x27\\xd4\\x74\\x73\\x4f\"},\n{{0x25,0x43,0xd1,0x66,0xc9,0xf5,0xf7,0x42,0x7f,0xf3,0x03,0x4f,0xfa,0x81,0x03,0xcb,0x11,0x7b,0xf4,0x72,0x33,0x1a,0x73,0xd9,0xa2,0xf1,0xbc,0x0a,0x02,0xa6,0xff,0x1b,},{0x42,0x67,0x8c,0xf3,0x85,0x70,0x21,0xaa,0x55,0x67,0x70,0x6d,0xb0,0x31,0xe7,0x92,0x71,0x5c,0xca,0xf8,0xab,0xb0,0x2a,0x04,0x2b,0xad,0x17,0xdb,0x3d,0x5f,0xa1,0x03,},{0x20,0xea,0x93,0x68,0xa2,0xcc,0xd0,0x8b,0xf9,0xcb,0xf4,0x8d,0x4a,0x2f,0x7d,0x03,0xf0,0xdb,0x08,0xa5,0x4b,0x87,0x67,0x9c,0xda,0x03,0xe2,0x96,0xaf,0x9e,0xf3,0x78,0xbe,0x9b,0x8f,0x04,0xb4,0x06,0x5b,0x00,0x9d,0xa6,0xdb,0x01,0x6f,0x3d,0xf9,0xdb,0x64,0x82,0x58,0x73,0xe2,0xfb,0x4d,0xe3,0x04,0x49,0x91,0x5c,0xd7,0x3c,0x46,0x09,},\"\\x74\\x6d\\x7a\\xbf\\x0b\\xfb\\x26\\x62\\xc2\\x5a\\xb5\\xc5\\xe4\\x61\\x2c\\x30\\x6f\\x16\\xd1\\x3e\\x44\\xd0\\xdb\\x39\\x4a\\x00\\x15\\x67\\x6c\\xe6\\x09\\x78\\x4f\\x03\\x23\\xda\\x1d\\xfa\\x94\\xd2\\xb2\\xf1\\xf6\\xe0\\x24\\x44\\xa9\\x36\\xd0\\x19\\xb1\\x43\\x02\\x1f\\x73\\xc7\\x9d\\xf9\\x30\\x9e\\x7b\\xdf\\xf3\\x9d\\xae\\xec\\x4c\\xac\\xa0\\x0c\\xba\\x4e\\xf3\\x1c\\x83\\x10\\xc1\\xa0\\x8e\\xf4\\xb3\\x6f\\x81\\xc3\\x77\\x84\\x6b\\x5b\\x90\\xac\\xd4\\x11\\xaa\\x67\\x1e\\xd7\\xaf\\x27\\x8a\\x24\\x22\\x9b\\x78\\x93\\xc1\\xb4\\x15\\xd7\\x98\\x88\\xd7\\x63\\x7f\\x5c\\xb5\\xc9\\xc6\\xc6\\x31\\xae\\x5f\\xfa\\x29\\xf1\\x34\\x0e\\x44\\x40\\x96\\xab\\x53\\x36\\x17\\xfd\\xcb\\x80\\xff\\x81\\xda\\x0a\\x7c\\x6c\\x14\\x2e\\xe0\\xfe\\x5e\\xa8\\x2f\\x68\\xcc\\x3e\\xa3\\x8b\\x56\\xf2\\x72\\xb0\\xd8\\x0f\\xd5\\xf4\\xf5\\x5c\\xa9\\x34\\x8c\\x16\\x18\\x81\\x43\\x58\\x13\\xc3\\xfa\\x9f\\xff\\x66\\xa2\\xee\\x6d\\x5b\\xd3\\xed\\xba\\x0d\\x2f\\x9a\\xa7\\x4b\\x1c\\x44\\xbf\\xd0\\xe6\\x46\\x78\\xd3\\x71\\x51\\x24\\x96\\x3a\\xc5\\x75\\xff\\xb0\\x9e\\xe1\\x64\\x37\\xda\\x48\\x4b\\x3b\\xa5\\x8e\\x5a\\xeb\\x8e\\xd8\\xc5\\xc0\\xf4\\x7b\\x59\\x90\\x8f\\xe5\\x80\\xf3\\x7e\\xc1\\xde\\x26\\x6b\\x29\\x5d\\x6b\\xe8\\x5e\\x62\\x35\\x8e\\x9b\\xbd\\xc7\\x89\\x64\\xfb\\x83\\x7e\\xea\\x29\\xfd\\xb7\\xde\\x86\\xcc\\x56\\xf4\\x8b\\xd9\\xa3\\xe6\\xe2\\xbe\\x51\\xd8\\xa1\\xdc\\xff\\x3c\\xa4\\xd5\\x6e\\xa9\\x34\\xc6\\x82\\x77\\x2b\\xca\\xfb\\x51\\x49\\x7b\\xe5\\xd0\\xf2\\xa2\\x3d\\xd4\\x97\\x0c\\x02\\xc4\\x4c\\x09\\xad\\x89\\x7b\\x42\\x41\\xac\\xd7\\xd6\\xab\\x12\\xd8\\xf0\\x0c\\x9a\\xad\\xc3\\x34\\xb4\\x31\\xfe\\xc5\\xbb\\x69\\xa2\\x85\\xb7\\x55\\x0a\\x63\\x9e\\xce\\x96\\x95\\x26\\x82\\xb7\\x33\\x4b\\x68\\xc6\\x51\\x52\\xe8\\x93\\xb1\\xc8\\x10\\x0c\\x69\\x4d\\x8c\\x5c\\xfe\\x26\\xac\\x03\\xc1\\xf3\\x91\\x4e\\x65\\xc8\\x4f\\x0e\\x77\\x72\\x90\\xc7\\x6f\\x6a\\xcc\\xe3\\x40\\xbf\\xf6\\x6d\\xa7\\x22\\x0f\\x73\\x17\\x5e\\x94\\xaf\\x52\\xf9\\xf1\\x9e\\x61\\xf8\\x0d\\xc1\\xf3\\x57\\x16\\xb3\\xf4\\x8d\\xfa\\x50\\x25\\xc9\\xeb\\xef\\x73\\x82\\xe0\\x55\\x83\\x0f\\x5b\\xbf\\x15\\xc6\\xf6\\xa9\\x50\\x32\\x90\\x9c\\x89\\x2c\\x0f\\x89\\xc8\\xc1\\x5f\\xc3\\xea\\x40\\xa2\\x0e\\xe1\\xa4\\x52\\x9b\\x52\\x19\\x51\\xdf\\x44\\xd9\\xd7\\x9d\\x74\\xe0\\xc4\\xc2\\xe0\\xfe\\xd8\\x49\\xb8\\x78\\x52\\x06\\xdb\\xe6\\x2b\\xfa\\x2c\\xa2\\x10\\x87\\xa9\\x12\\xe9\\xb1\\x84\\x55\\x16\\x59\\xcd\\x8a\\x58\\x7e\\x95\\xb0\\x43\\x17\\x19\\x25\\x96\\xbb\\x0b\\x7f\\xc9\\xf7\\xbb\\xb6\\xee\\x04\\x9c\\x8b\\x02\\xfd\\xd7\\x58\\xb4\\xe7\\x98\\x82\\x07\\x3b\\x71\\xea\\xab\\x18\\xaa\\x29\\x37\\x01\\xc1\\x7d\\x55\\xf9\\xec\\x46\\xc5\\x2d\\xe1\\xe8\\x86\\xb6\\x75\\x0f\\xb0\\xfb\\xcd\\x64\\xf4\\x56\\x8a\\x21\\x0a\\xe4\\x51\\xe9\"},\n{{0x85,0xe0,0xa8,0x0f,0x3b,0x30,0xc2,0x01,0x99,0xd9,0xc1,0xec,0x66,0x2e,0x39,0x2f,0xdf,0x15,0x46,0x37,0x73,0x43,0xf1,0x24,0x71,0xdb,0x2a,0x03,0x10,0xa7,0x05,0xbd,},{0x54,0x0a,0x3a,0x1d,0x83,0x67,0x2e,0x49,0x50,0x34,0xcf,0xf4,0x08,0xe1,0xfb,0xe8,0x2e,0x53,0x8f,0x09,0x17,0xe8,0xa1,0xc7,0xd1,0x7a,0xab,0x58,0xe0,0x43,0xd3,0xc6,},{0x18,0x5e,0xf2,0x24,0x6a,0xba,0x2b,0x1a,0x56,0x80,0x32,0xc7,0xdf,0x93,0xc6,0x67,0x79,0x9b,0x8a,0x52,0x1a,0x6f,0x97,0x32,0x1e,0xad,0x58,0x66,0xb4,0xcb,0x9c,0x65,0xb6,0x4a,0x1c,0x40,0xb9,0xb6,0xa9,0x10,0xe7,0x42,0xdc,0x32,0xa7,0xe6,0x6d,0x11,0xea,0x45,0xdb,0xea,0xac,0xae,0x9f,0x09,0x51,0x1b,0x81,0x01,0xf8,0xaf,0x0c,0x0c,},\"\\xd2\\x80\\x2f\\x15\\x96\\xf8\\x38\\x3b\\x64\\xed\\xbd\\xc5\\x94\\x06\\x0b\\xff\\x0e\\x70\\x13\\xd5\\xb7\\xc8\\x5d\\x83\\x0f\\xae\\x11\\xae\\xb3\\x4d\\xd5\\x94\\x95\\x9d\\xa6\\x24\\xe0\\x44\\x47\\x4c\\x54\\x09\\xc0\\x05\\x96\\x73\\xbd\\xc6\\x1a\\x67\\x1e\\xf5\\xb0\\xb8\\xa2\\x6f\\x30\\x10\\x0b\\x3b\\x73\\x96\\x8d\\x8e\\x4d\\x83\\xa7\\x2f\\x25\\xb5\\x13\\x44\\x8d\\x2f\\x6b\\x6a\\x44\\x75\\xfd\\xf8\\x9e\\x31\\xca\\x92\\x68\\xa3\\x07\\x05\\xaf\\x3f\\x64\\x9e\\x3f\\xe0\\x1d\\xde\\x0c\\xf4\\xb2\\x9e\\xc2\\xda\\x54\\x36\\x44\\x4a\\xf0\\x91\\xd6\\x27\\x30\\xac\\xd4\\xca\\xb6\\x08\\xf0\\xdf\\x26\\xf0\\x88\\xc6\\xb9\\xb9\\x67\\x37\\x94\\xf0\\x74\\x7d\\xab\\x2c\\xe1\\x90\\xf9\\x05\\x92\\x00\\x9f\\xdc\\xe5\\x46\\x4b\\x36\\x61\\xb7\\xe8\\x62\\x0b\\xad\\x65\\x50\\x9a\\x6c\\x75\\x2b\\x72\\x7a\\x8d\\xc8\\xd3\\xef\\xa5\\x84\\xfd\\xe0\\x27\\x2c\\x45\\x1d\\x65\\xa9\\x3b\\xec\\xe4\\xf5\\x9d\\x87\\xdc\\x6f\\xbe\\xb4\\x51\\x40\\x1e\\x3e\\x2e\\x00\\x3c\\x6a\\xca\\x7b\\x3d\\x3f\\x92\\x71\\x91\\x50\\xc6\\x77\\x8f\\x01\\x5a\\xff\\x2a\\x59\\xbf\\xbf\\x2e\\x91\\xb2\\x1b\\x0a\\xd6\\x87\\x75\\x36\\xeb\\x54\\x56\\x70\\x59\\xf5\\x87\\xf5\\x4d\\x4e\\x2a\\x6f\\xe1\\xfd\\xcd\\xd6\\xa7\\xfd\\xcb\\x85\\x15\\x57\\x5b\\xcc\\x37\\x05\\xd7\\x78\\x59\\x35\\x2f\\xa0\\xb0\\x44\\x16\\x6e\\x3c\\x31\\x88\\x46\\xa5\\xdf\\x33\\x56\\x30\\x03\\xcb\\x20\\xbc\\x94\\x2d\\x30\\x39\\x10\\x93\\xe8\\xd5\\x83\\xe8\\xe6\\x4d\\xec\\x57\\x0e\\xe1\\xc4\\x13\\x87\\x62\\xf6\\x48\\x38\\x98\\xd3\\x2e\\x20\\x32\\xbd\\xe9\\xbb\\xe0\\x7e\\xc2\\xc3\\xeb\\x47\\xd9\\x68\\x76\\xf0\\xfc\\x0f\\x02\\x4d\\x75\\x3c\\xeb\\x34\\xff\\x84\\x80\\xb4\\xcf\\x57\\x62\\x30\\xbb\\x82\\x63\\xdd\\x80\\xee\\xac\\x66\\x2e\\xba\\x31\\xd8\\xa6\\x1f\\x30\\x9e\\x17\\x5f\\x4c\\x01\\x43\\xe2\\x8a\\x85\\x2b\\x1c\\x30\\x61\\xce\\x78\\xef\\xbd\\x16\\xa2\\x87\\x3d\\xd2\\x81\\x98\\xa4\\x6e\\xc0\\xa8\\x00\\xb3\\x0d\\xc8\\xa9\\x3b\\x8d\\xbb\\x81\\xa7\\x30\\xde\\x45\\x0b\\x86\\x4d\\xea\\x76\\x80\\xe5\\x09\\xd8\\x00\\xe8\\x23\\x29\\xc2\\x61\\xb0\\x7e\\x72\\xaa\\x80\\xee\\x16\\xec\\x37\\x5d\\xdb\\xbb\\x6f\\xe3\\xd8\\xd4\\x7b\\x0e\\x3c\\x5a\\x9f\\x23\\xc4\\xd2\\x0b\\x72\\x4c\\x1d\\xf5\\x98\\x35\\xd8\\x30\\xdd\\x22\\xd1\\x04\\x03\\xd8\\xf1\\x5c\\x10\\x2c\\x4b\\x37\\x69\\xc4\\x16\\x66\\xc3\\xab\\x8c\\x7e\\x80\\xb9\\x40\\xd0\\xbb\\xb5\\x86\\x52\\xd1\\x0a\\x3f\\xfe\\x8d\\x44\\xdf\\x10\\x12\\xa3\\xdd\\xc4\\xe1\\xc5\\x18\\xd4\\x90\\x19\\xf7\\xc5\\xd3\\xd9\\xf9\\x5e\\xd9\\x3a\\x31\\x97\\x46\\xd1\\xe5\\x43\\xff\\xa6\\x9e\\xdb\\x49\\xbb\\x34\\x39\\xf8\\xa3\\x25\\xac\\x6a\\x0c\\xb4\\xed\\xd6\\x5b\\xa6\\x00\\x80\\xa0\\x44\\x7c\\x67\\x4f\\xaa\\x72\\xd8\\xae\\xbd\\xb5\\xd2\\x54\\x4f\\x2f\\x2d\\x84\\x7c\\x72\\xc2\\xdf\\xa6\\x05\\x7a\\x69\\x0a\\xdc\\x5c\\x44\\x1a\"},\n{{0x82,0xa2,0xc6,0x49,0x3f,0x11,0xba,0x80,0xe4,0xb8,0xb3,0xb4,0x38,0x41,0xbe,0x97,0x0e,0x2a,0x10,0xa9,0x4d,0x22,0x49,0xd8,0xac,0x6f,0x54,0x14,0xcf,0x5a,0x3c,0xb5,},{0x4c,0x2e,0xe0,0x1c,0xde,0xa0,0x7d,0xb3,0x63,0x5f,0x5d,0x4c,0x10,0x82,0xb9,0x2f,0x29,0x8d,0xeb,0x17,0xd0,0xf9,0x05,0xdf,0x71,0xb6,0x6f,0xb2,0x27,0x4e,0xae,0x99,},{0x68,0xa9,0x1d,0x4f,0x8d,0x24,0x1c,0x1d,0xef,0xbd,0x5c,0xa9,0xe9,0xe1,0xed,0x82,0x74,0x41,0x95,0x06,0x75,0x1c,0x96,0x79,0x47,0xb1,0x0d,0x50,0x11,0x8b,0xbf,0xab,0xc7,0x65,0xff,0xd7,0xb3,0x1a,0x01,0x67,0xc4,0xfd,0x8b,0x11,0x75,0x33,0x24,0x12,0xdf,0x19,0xd8,0xaa,0x1a,0x90,0x95,0x90,0x86,0x13,0x20,0x92,0x3d,0xbc,0xb2,0x04,},\"\\x09\\x85\\x4d\\x13\\x68\\x49\\x50\\x41\\x9e\\x0b\\xb1\\x64\\x64\\xe0\\x99\\x88\\x90\\x5c\\x02\\x17\\x18\\x3a\\xa1\\xe4\\x8a\\xdb\\x14\\x7b\\xfc\\xc2\\xeb\\x57\\xc2\\x30\\x0b\\x0d\\xfc\\x39\\xd4\\x89\\x66\\x55\\xa5\\x7a\\xe2\\x04\\x15\\x40\\x8b\\xb5\\xf2\\xc2\\x38\\x01\\x39\\x55\\xf0\\xa4\\xfc\\x78\\x2e\\x0c\\x99\\x3f\\xe4\\x2c\\xb0\\x8c\\xd8\\xcf\\x41\\x5c\\xcb\\xd6\\xcf\\x1c\\xee\\x2e\\x80\\x97\\xf0\\x4e\\x8f\\x09\\xae\\x5d\\xa5\\xf4\\x15\\xb1\\x6c\\x2c\\xb3\\x0c\\xb2\\xab\\x66\\x52\\xba\\x50\\xeb\\xbc\\xae\\x4a\\x59\\xe3\\x1f\\xe1\\x1e\\x7e\\xf3\\x69\\x9c\\xa9\\x0a\\xaf\\xa5\\x86\\xbb\\x24\\x2c\\x89\\xcd\\x2e\\x33\\x2b\\x2b\\xfa\\x2f\\x81\\x42\\xac\\xca\\xf4\\x36\\xf8\\x9b\\x64\\x53\\xbb\\x48\\x05\\xa1\\xe7\\xf3\\xab\\x62\\x70\\xf0\\xda\\xf8\\x93\\x89\\xe7\\x17\\xd1\\xb7\\x01\\x75\\xec\\x57\\x07\\xc8\\xf5\\x12\\xc4\\x0a\\xb9\\x24\\xc4\\x57\\xe9\\xf0\\x91\\x47\\x91\\x75\\x0d\\xc2\\x92\\xbb\\x27\\xd6\\xf6\\x3b\\xa8\\xcc\\xf5\\x4b\\x90\\xd3\\xeb\\xa7\\xf1\\x9e\\xb3\\x00\\xd9\\xeb\\x8f\\x3b\\x72\\x03\\x2b\\xa9\\x30\\x37\\xf5\\x52\\xb4\\x09\\xb5\\x80\\xa5\\xf6\\x51\\x16\\xfa\\xff\\xe0\\xfd\\xfd\\xc6\\xdb\\x38\\x81\\x38\\x6c\\x3c\\xbc\\x16\\xb6\\x7e\\xb2\\x57\\x63\\xd7\\xae\\x3a\\xac\\x0b\\x85\\xaa\\x1e\\x9a\\xa2\\x2e\\x49\\x59\\x60\\x9d\\x43\\x81\\xe4\\xb6\\xd7\\x15\\x9f\\xf3\\xe3\\xb2\\xd3\\x7b\\x64\\x0f\\x88\\xcf\\xbe\\x4f\\x8a\\x77\\xf8\\x01\\x64\\x57\\x22\\x8b\\xa6\\xd3\\xaf\\x5c\\x4e\\x33\\x12\\x5d\\x48\\xbc\\xfc\\xf3\\x67\\x8c\\x16\\x3b\\x69\\x8e\\x52\\xe8\\x56\\x17\\xab\\x1a\\x75\\xff\\x20\\xc6\\x90\\xab\\x07\\x15\\x5e\\xe7\\x57\\x59\\x85\\x78\\x07\\x2d\\x4a\\x09\\xdf\\xc6\\xc6\\xc0\\x94\\xec\\x04\\x85\\x67\\xd5\\x13\\xce\\x2b\\x18\\x34\\xe1\\x63\\xdf\\x15\\x45\\x31\\x9d\\x80\\x61\\xe0\\xe5\\x7f\\x58\\xef\\x04\\x1b\\x7b\\xff\\xc4\\x96\\x6a\\xc1\\x66\\x03\\x31\\xb9\\x7a\\xbb\\xc9\\x7b\\xe2\\x1a\\xe2\\xbc\\x58\\xc6\\xc3\\x27\\x4a\\x8a\\xda\\xd5\\xfd\\x2c\\x3b\\xc1\\x6b\\x92\\xe1\\xf8\\xde\\x87\\x7b\\x6a\\x26\\xf0\\xc6\\xab\\x71\\x62\\xe8\\xaa\\xb9\\x3a\\xf8\\xd8\\x59\\x18\\xc1\\x3d\\x3e\\x23\\x5a\\x27\\x37\\x48\\xc6\\x2f\\x0d\\x22\\xcb\\x1c\\x93\\xe1\\x34\\xa4\\x95\\xb1\\xb5\\xef\\x8f\\x1a\\x11\\x34\\x51\\x2d\\x53\\xb7\\xa2\\x11\\x26\\x31\\x77\\xf7\\xa6\\x0b\\xdf\\x47\\x46\\x91\\xf2\\x24\\xa3\\xb5\\xba\\xc4\\x00\\x6d\\xb3\\x45\\xca\\x67\\x25\\xf5\\xee\\x70\\x3e\\xca\\x0d\\xea\\x10\\xd7\\x12\\x67\\x6f\\x63\\xef\\x3e\\x53\\x7e\\x63\\xab\\xd2\\x60\\x8c\\xb4\\xfb\\xe2\\x00\\xe1\\x5f\\x18\\x20\\x91\\x53\\x49\\x60\\x72\\x90\\x80\\x44\\xc9\\x5a\\x4e\\x9c\\x53\\x56\\xaa\\xe8\\xed\\x5f\\x09\\x59\\xea\\xc0\\x91\\xe2\\x27\\xa0\\xb8\\x1f\\x58\\x03\\x27\\x6b\\x3b\\x3b\\xf4\\xb6\\x86\\x5a\\x55\\xfc\\x67\\x82\\xf6\\x2e\\xa6\\xd6\\x39\\x90\\xf9\\xbe\\xfe\\x01\"},\n{{0xe5,0x5b,0x34,0x3a,0x0f,0xa1,0xfb,0x74,0x71,0x89,0xcb,0x00,0xdb,0xc3,0xa6,0xaa,0x2d,0xcf,0x5b,0x86,0xe5,0x7d,0x76,0x93,0xf3,0x07,0x42,0x03,0x89,0x76,0x11,0x53,},{0x23,0xa1,0x44,0x60,0xea,0x98,0x3c,0xf9,0x97,0xc7,0x82,0xeb,0x45,0x82,0xab,0x3c,0x8a,0xa6,0xdd,0xe5,0x33,0x25,0xb9,0x77,0xb7,0x8e,0x33,0xd2,0xdc,0x5f,0x27,0xaa,},{0x07,0x26,0x6c,0x18,0x65,0x0e,0xcf,0x06,0x32,0xe2,0x25,0x62,0x4e,0xc4,0xc9,0x7f,0xc3,0x87,0xdc,0x37,0x46,0x87,0xa6,0x19,0x56,0xdc,0xcc,0xe7,0x28,0x94,0xee,0x13,0x8a,0xab,0xc8,0x0c,0xfc,0x90,0xc9,0xee,0xa6,0xdd,0x4c,0x59,0xaf,0x45,0x02,0xee,0x29,0x63,0x5a,0x92,0x88,0x07,0x86,0x67,0x8b,0x14,0xa3,0x93,0x1a,0x69,0xf9,0x07,},\"\\x36\\x28\\x9b\\x5e\\xaf\\xf2\\xa8\\x5a\\x7c\\x6d\\x57\\x5b\\xd1\\x5e\\xa5\\x94\\xb2\\xfd\\x85\\x10\\x87\\x4a\\x46\\x9b\\x52\\x10\\x91\\x63\\x69\\x6d\\x85\\xb6\\x8c\\x5b\\x21\\x1d\\x29\\x64\\xef\\xdc\\x66\\xe6\\x25\\xab\\xe8\\xaa\\xfe\\x4c\\xd9\\x22\\x0c\\xdb\\x34\\x11\\x07\\xff\\xa8\\x27\\x6e\\xd4\\xb3\\x70\\xfe\\x37\\x6c\\x14\\x82\\x68\\x71\\x67\\xdb\\xc8\\xf7\\xb2\\x05\\xa3\\xf3\\x30\\x1a\\x16\\x64\\xd9\\x07\\x28\\x77\\xd9\\xf9\\x8b\\x8f\\x69\\x83\\x13\\x01\\xdf\\x99\\x94\\x71\\x7f\\xc8\\x89\\x69\\x24\\x23\\x91\\xd9\\xb0\\x51\\x7d\\x6e\\xfb\\x27\\x17\\x01\\xea\\xb3\\xf4\\xa9\\xb1\\x20\\x42\\x13\\xe8\\xcd\\x13\\xf9\\xd0\\x99\\x04\\x8b\\x82\\x07\\x56\\x2f\\x2e\\x4e\\xbc\\x65\\x3c\\xc6\\x5e\\x9d\\x55\\x12\\xd6\\x5b\\x41\\x02\\x2c\\x79\\xb4\\xeb\\x37\\x29\\x87\\x69\\xae\\xaa\\x6e\\xfe\\xd6\\x9e\\x9a\\x8c\\xb4\\x45\\xc7\\x01\\x22\\x74\\xde\\x62\\xf5\\x09\\xf4\\xe4\\x81\\x4a\\xdc\\xbf\\x44\\x53\\xb4\\xfa\\xb8\\x5d\\x7c\\x8f\\xd8\\x45\\xe0\\x08\\x30\\xef\\x5b\\x7b\\x1e\\x63\\xc6\\x76\\x13\\x98\\x4c\\xae\\xfe\\x91\\x5a\\x54\\x8e\\x18\\xe5\\x05\\x62\\x2c\\xb2\\xb3\\x92\\x99\\xf4\\x27\\xf4\\xd8\\x39\\x83\\xba\\x2a\\xa0\\x0d\\x53\\xbe\\xe1\\xf5\\x9a\\xec\\x83\\x18\\xc5\\xea\\x34\\x5d\\x29\\x42\\x52\\x36\\x97\\x92\\x76\\x2a\\xdd\\x3e\\x56\\xfc\\xfa\\x6e\\x77\\x97\\xf0\\x28\\xc7\\x99\\x47\\x90\\x45\\xed\\xb2\\xe2\\x05\\xeb\\x6d\\xd6\\xca\\x04\\xee\\xe5\\x6f\\x94\\x96\\xd2\\xbf\\x26\\x09\\x93\\x57\\xc9\\x73\\x83\\x5b\\x99\\x36\\x02\\x49\\x11\\xe4\\x65\\x5d\\x3e\\x22\\xc8\\x11\\xc8\\xd4\\xdb\\xd1\\xb0\\x4f\\x78\\x97\\x3f\\x07\\x75\\x23\\xa3\\x89\\xb6\\xf2\\x8f\\x6f\\x54\\x21\\x61\\x42\\xcb\\x93\\xe3\\x3d\\x72\\xb4\\xa5\\x05\\x2d\\x27\\xe4\\x91\\x1e\\x41\\xe6\\xce\\xc7\\xbe\\xbe\\x1b\\x0a\\x51\\x13\\xe6\\xb7\\x0b\\x47\\x9d\\x2a\\xbe\\xed\\xf6\\x9b\\x75\\x64\\xe5\\xa5\\x73\\xb3\\x52\\xd1\\x6c\\xec\\x89\\x07\\x01\\xbb\\x38\\x3d\\x3f\\x66\\x56\\xed\\xa0\\x89\\x2f\\x8c\\xcc\\x70\\x94\\x0f\\x62\\xdb\\xe5\\x28\\xa6\\x5e\\x31\\xac\\x53\\x88\\x26\\xc1\\x38\\xac\\x66\\x52\\x4e\\x33\\x16\\x37\\xba\\x2d\\x37\\x73\\x03\\x58\\xe6\\xc7\\x32\\xcf\\xf8\\xfe\\xe9\\x40\\xaf\\xd2\\x2c\\x39\\xae\\x38\\x1e\\x5d\\x88\\x26\\x73\\x9b\\x23\\xfd\\xc1\\xb8\\x0a\\xea\\x5a\\x62\\xa2\\xcf\\x0f\\xf1\\x52\\x5e\\x44\\x6c\\xf3\\x10\\x46\\x19\\x50\\x51\\xd5\\x85\\x03\\xee\\xd1\\xbe\\xfd\\x79\\x3e\\xea\\xe1\\xd5\\xd1\\xb6\\x2a\\x5c\\x98\\x45\\x15\\x7a\\x09\\x5c\\xdc\\x08\\xa1\\xd7\\x7b\\xa4\\x7e\\x84\\xa5\\xa7\\x39\\x98\\x0f\\x0f\\x5b\\xe7\\xaa\\xec\\x9a\\x21\\x5b\\x20\\x4b\\x4b\\xb7\\xcb\\x1b\\x38\\x6d\\xed\\x58\\xd7\\xaa\\xf7\\x28\\x53\\x41\\x90\\x7c\\x63\\x33\\x6e\\xe3\\xe6\\xef\\x07\\x7a\\xd1\\x11\\xb9\\x74\\xe7\\x50\\x4b\\xd9\\x89\\xf5\\x66\\xfd\\xa1\\xb1\\xb5\\x9a\\xba\\xa9\\x1c\\x78\\xbb\\x40\"},\n{{0x39,0x73,0x03,0x8f,0xa2,0xef,0x6a,0x27,0x8d,0x3c,0x1c,0xff,0x9a,0x22,0x56,0x69,0xe4,0x65,0xa6,0x9d,0x07,0x50,0x50,0x3d,0xe7,0x48,0xc0,0x02,0xdb,0xf9,0x27,0x8a,},{0xc7,0x5e,0x77,0xc7,0x81,0x49,0xd9,0xd2,0xdb,0xc2,0x63,0xdd,0xf8,0xac,0x4d,0x65,0x4d,0x1f,0xf4,0x55,0xcb,0x18,0x97,0xe1,0xc3,0xce,0x31,0xb9,0x4c,0xfe,0x32,0x10,},{0xfc,0x0c,0x54,0x53,0x83,0x9e,0xa9,0x92,0x96,0xff,0xfa,0x50,0x1d,0x58,0x36,0x66,0x28,0xdf,0x89,0xf6,0x16,0x76,0x69,0x42,0xd5,0x04,0x0a,0x05,0x60,0x56,0xda,0xb1,0x8b,0x44,0x05,0xc0,0x4a,0xbf,0x90,0x59,0xc3,0x08,0x68,0xd7,0x9c,0x93,0x6c,0xcc,0xc8,0x4c,0x4f,0xbd,0x6f,0xd3,0x0b,0x60,0xf8,0xbc,0xbd,0x7a,0x66,0x40,0x42,0x02,},\"\\x33\\x92\\xe0\\x2f\\x3c\\x84\\x66\\x1e\\xaf\\x81\\xa5\\xff\\x04\\x35\\x7f\\x21\\x2e\\x92\\x36\\x1c\\x5c\\x22\\x07\\x39\\xd9\\x6b\\x4d\\x3d\\x9c\\x22\\xd1\\x8d\\xf4\\x8b\\xe6\\xb5\\x51\\x26\\xf5\\x81\\x60\\x1f\\xfe\\x0d\\xa6\\x3f\\x38\\xe1\\x9c\\xbb\\x12\\x72\\x6c\\xa0\\xa6\\xaa\\x32\\x55\\x67\\xa0\\x03\\xa7\\x84\\x9d\\x06\\x78\\x39\\x92\\xeb\\x9e\\xb9\\x28\\x53\\x29\\x7d\\x72\\x28\\xdb\\xa9\\x80\\xb2\\x50\\xbb\\x11\\x0f\\x63\\xd0\\xb8\\x46\\x70\\xe5\\xec\\xb3\\x19\\xcb\\xfd\\x61\\x27\\x8f\\x1f\\x4c\\xab\\xf1\\xfc\\xb3\\xf7\\x01\\xf1\\x2f\\x6e\\xf8\\xd3\\xcc\\x42\\x82\\xfc\\xbe\\x58\\x9e\\xb5\\x65\\x95\\x03\\xa2\\xdd\\xd8\\xbb\\xa3\\x8e\\x5e\\xff\\x09\\x2d\\xfa\\xf5\\x39\\xfd\\x80\\x4f\\x21\\xf7\\x3a\\x90\\xad\\xf5\\x69\\xa0\\x0b\\xf9\\xd2\\x5a\\x9a\\xd3\\xa6\\x33\\x09\\xcc\\x60\\x93\\x14\\x24\\x71\\xa4\\x78\\xf0\\xb8\\x99\\x22\\x86\\xde\\x02\\x3c\\x68\\xef\\xd4\\x99\\x87\\xec\\x27\\x0b\\xd9\\x46\\xf6\\xdb\\x48\\xf6\\x84\\xf1\\xc2\\xad\\xee\\xe2\\x6d\\x68\\xdc\\xe9\\x5a\\x55\\xe4\\xcb\\x27\\xbc\\x60\\x52\\x30\\x80\\xdf\\x6b\\xa2\\xb1\\x99\\x99\\x6b\\x1f\\x1d\\xa6\\x92\\x0d\\x15\\x59\\xf7\\x9b\\xfd\\xe9\\xfa\\x1a\\x02\\xde\\xae\\x14\\x80\\xc7\\x6f\\x94\\x7f\\x9d\\x21\\x3f\\xc4\\x3b\\xb2\\x88\\x0a\\x1b\\x4d\\x03\\xbb\\x14\\xf5\\xb0\\x44\\xa0\\xfd\\x83\\xce\\x04\\x92\\xf4\\x9c\\xa3\\xaf\\x25\\x21\\x1b\\x86\\xfa\\xa5\\x73\\x5a\\xd7\\xfe\\xaf\\x31\\xa1\\xa7\\x49\\x1e\\x70\\x8b\\x41\\x82\\x9d\\x68\\xe3\\x24\\x14\\xf6\\x83\\x52\\xb7\\x1d\\x1c\\xd2\\x3c\\x8e\\x12\\xfb\\x02\\xda\\x71\\x14\\x84\\xf6\\xef\\x97\\x52\\x8a\\x00\\xd2\\x4f\\xcf\\x91\\xd4\\xe0\\x6e\\x9b\\xad\\xae\\x9a\\x44\\xdb\\xdb\\x3f\\x77\\x80\\x41\\x76\\x8d\\x86\\x37\\x04\\xd7\\x36\\x81\\x04\\x00\\xe7\\xf2\\x93\\x1e\\xfb\\x85\\xc8\\x72\\x4a\\x59\\x34\\x26\\xaa\\x2a\\xf1\\xec\\x5b\\x66\\x4f\\x85\\xc2\\x25\\x48\\x96\\xfd\\xcf\\x31\\x6d\\xb0\\x92\\x4e\\x11\\xaa\\xe8\\xd6\\x83\\xe9\\xa0\\x21\\x92\\x9d\\x0a\\x9d\\x6f\\xec\\xb4\\x59\\x4b\\x1b\\x3f\\xbc\\x16\\xb1\\x76\\xd2\\x9d\\x1e\\xfb\\x18\\x19\\xa4\\xa4\\x23\\xfb\\xe0\\xca\\x05\\x59\\xc5\\x7e\\x9e\\x54\\x49\\xf1\\x4b\\xce\\x91\\x36\\x0d\\xaf\\xda\\x6a\\x42\\x7c\\xe4\\xa0\\x99\\x3d\\xd0\\x30\\x82\\xdd\\xee\\x06\\x65\\x33\\xf6\\xd3\\xbd\\xa5\\x66\\x0f\\x42\\xfd\\x77\\x57\\x69\\x0d\\x67\\x05\\x98\\xec\\x70\\x96\\xf4\\x75\\xa0\\x1a\\x51\\x99\\x50\\x34\\x1a\\x83\\x1f\\xc9\\xa2\\x81\\xc0\\x94\\x7a\\x86\\x3f\\x1f\\x6e\\x03\\xbb\\xa7\\x74\\xde\\x77\\xad\\xc2\\x3f\\xbe\\x52\\x5c\\xae\\x6c\\xcc\\xe4\\x7a\\x0e\\xc4\\x97\\x9e\\x8b\\xec\\x86\\xf3\\x32\\xfc\\x6a\\x57\\x36\\xe3\\xb9\\x8f\\xb3\\x32\\xe9\\xe8\\x24\\x4e\\x68\\xa1\\x00\\x45\\x5e\\x64\\x99\\xba\\x8d\\xba\\xe9\\x8b\\x92\\xba\\x3d\\x9c\\x6b\\x4f\\xf9\\x80\\x34\\x3e\\x4c\\x8e\\xf4\\xd5\\xa4\\xaa\\xcf\\x8b\\x1a\"},\n{{0xc7,0x1c,0xc1,0x0a,0xd2,0xd4,0x43,0xe0,0x25,0xad,0x06,0x25,0x68,0x6b,0x12,0x35,0x03,0xe5,0x90,0x19,0x3a,0x2b,0xc8,0xcc,0x57,0xa7,0xb9,0xb4,0x15,0x8d,0xe6,0xcb,},{0xfc,0x06,0xac,0xaa,0xb5,0x3a,0xd0,0x8e,0x97,0x62,0xdd,0x11,0xcd,0x21,0x22,0xb3,0x15,0x99,0xbd,0x25,0x98,0xce,0x6f,0x24,0x87,0x95,0xe7,0x32,0x21,0x9c,0x2f,0xc7,},{0x2e,0xb3,0x3b,0xc2,0xd5,0xde,0xb7,0xf3,0xa2,0xdc,0xc3,0x77,0xb0,0xc6,0xa8,0x62,0x13,0x4b,0xf3,0x19,0x1e,0xc4,0x0f,0xc1,0x28,0xac,0x28,0xab,0xf2,0x31,0x6e,0xf1,0x40,0x16,0x49,0xb8,0xf4,0xcf,0xa1,0xa9,0x36,0xde,0x79,0xb5,0x32,0xdc,0x04,0x3b,0x6d,0x36,0x02,0x4b,0x4c,0x37,0xbb,0xa2,0x92,0x90,0xac,0x9f,0x44,0x9b,0xa6,0x0d,},\"\\x2e\\x08\\x46\\x53\\x6d\\xc6\\xcc\\xe1\\x9c\\xcf\\x82\\xdc\\x2d\\x0c\\xd2\\x1b\\xd4\\xe1\\xca\\x7b\\xc3\\x17\\x06\\x7a\\xf8\\xd9\\x0e\\xe4\\x81\\x8c\\x85\\x18\\xbc\\x3e\\xf9\\x60\\xce\\x11\\x2a\\x41\\xd2\\xb9\\x97\\x9a\\x28\\x2a\\xe1\\x3d\\x70\\x6a\\x00\\x5e\\x00\\x34\\xf0\\x6b\\x39\\xff\\x4b\\x0a\\x5a\\xfa\\xed\\x70\\xb5\\x61\\xbc\\xce\\xb1\\xbb\\xd2\\xec\\x19\\xf9\\x74\\x48\\xea\\xed\\x4b\\xe6\\x20\\xe3\\x6a\\x96\\x2d\\x87\\x8c\\x6f\\x80\\x17\\x2b\\x9f\\xad\\x43\\xee\\xd0\\x7f\\xf9\\x3d\\xb9\\xb9\\xca\\x22\\x62\\xd5\\xa3\\xc2\\x29\\xc5\\x4e\\x30\\xa4\\x5e\\x73\\x66\\x08\\x92\\xf0\\x48\\xe3\\x63\\xf3\\x71\\x44\\xed\\x19\\x21\\xf7\\x29\\x92\\xb4\\xd0\\x15\\x29\\x87\\x0c\\xfe\\x37\\x3b\\x7e\\x7c\\xbe\\xda\\xf9\\x69\\x26\\x9f\\xb7\\x0a\\xa7\\x83\\xd1\\xe7\\x44\\x17\\xc7\\xba\\xe0\\xfe\\x03\\xd9\\x51\\xfd\\xb8\\xc7\\x1c\\x62\\xe9\\xbe\\x7f\\xdd\\x5d\\x23\\x3e\\x39\\xf4\\x6f\\xed\\x05\\x7e\\x49\\xb6\\xf3\\x40\\x68\\x45\\x91\\x48\\xda\\x3d\\x42\\x41\\x61\\xad\\x2c\\x86\\x95\\x08\\x60\\x2e\\x9c\\x0b\\xb3\\x0b\\xfb\\x88\\xac\\xd5\\xf4\\xdf\\xdf\\xfd\\x47\\x35\\x03\\xcd\\xfe\\xda\\xbc\\x44\\x42\\xb7\\x43\\xbe\\x07\\x5e\\x7c\\x6f\\x61\\x0e\\x64\\xff\\xc2\\xe5\\x31\\x87\\x74\\x5c\\xd7\\x19\\x65\\x8f\\xc6\\xe6\\x2a\\x5b\\xe5\\x18\\x43\\x7c\\x5b\\xd6\\xa4\\xfe\\xba\\x94\\xae\\x3f\\x44\\xf2\\xf2\\x93\\x08\\xe8\\x31\\xfe\\xef\\xed\\x67\\x69\\x09\\xce\\x5e\\x80\\xc8\\x4c\\xbd\\xca\\xc4\\x7e\\x47\\xd2\\x7c\\x97\\x12\\xa0\\x1f\\x6b\\xc5\\xda\\xed\\xc0\\x2e\\x64\\x14\\x40\\x7e\\x91\\x1c\\x0a\\x5a\\x53\\xe5\\x32\\x8a\\x5a\\x5f\\xd9\\xf0\\x40\\xaa\\x7f\\xb7\\x0b\\x79\\xb3\\x1c\\xd1\\xb6\\xfd\\x9b\\xd5\\x02\\x90\\x40\\xbd\\x22\\xae\\x22\\x2f\\xd2\\xf6\\x87\\x0d\\x07\\xf4\\x35\\x32\\x26\\x39\\xcf\\x31\\x93\\xca\\x57\\x09\\xb8\\x82\\xb0\\x7a\\x58\\xf9\\x52\\xa9\\x96\\x3e\\x56\\x8f\\x8c\\x5a\\x58\\x4a\\x6b\\x9e\\x27\\x5c\\x5c\\x07\\x95\\x7a\\x4d\\x2c\\xda\\xa9\\xf1\\xeb\\x44\\x4e\\xd1\\x22\\x4b\\xac\\x65\\x63\\xb2\\xf9\\x27\\x3e\\x80\\x30\\x1d\\x44\\xd5\\x0a\\xe3\\x83\\xb5\\x97\\x21\\x3b\\x00\\xda\\x5b\\xf2\\x7e\\x5d\\x1f\\xe2\\x40\\xcc\\x3b\\xb6\\x5a\\xa5\\x03\\x0d\\x65\\x1b\\x6b\\x5b\\x31\\x76\\x1d\\x53\\xce\\x0c\\x6d\\x74\\xa1\\x5d\\xad\\x54\\x79\\xf3\\x1c\\x91\\x5c\\xcf\\x44\\x66\\x59\\x85\\x3b\\x89\\xa5\\x1a\\x28\\xee\\x89\\x76\\x85\\x35\\x53\\xfd\\x2e\\x02\\xfe\\x72\\x43\\x53\\x8d\\x00\\xb4\\xed\\x07\\xd8\\xb8\\xa8\\x0b\\x5c\\x16\\x5c\\xd4\\x63\\x41\\xff\\xd8\\x16\\x3c\\x55\\x57\\x02\\x66\\x3a\\x4e\\x6a\\xb2\\x95\\x2b\\x7e\\x74\\x43\\xd0\\xf6\\xb1\\x23\\xb6\\x94\\x67\\x21\\xaa\\x63\\xe8\\x7b\\x11\\x55\\xec\\xa8\\xa6\\xa1\\xbc\\x9f\\xd2\\x5c\\x67\\x62\\xe5\\x27\\x42\\xc8\\x6b\\xca\\x1b\\xa9\\xd8\\x37\\x04\\x15\\x24\\x4f\\x0e\\xdf\\xdb\\xe0\\x93\\x2b\\x5c\\xa0\\x61\\x15\\x09\\xc9\"},\n{{0x0a,0x4f,0x5e,0x16,0x70,0xf1,0xe2,0x4b,0xfa,0x37,0xb7,0x3c,0x99,0x43,0x30,0xb3,0x6e,0x7d,0xaa,0xf9,0x30,0x16,0x1b,0x78,0xa4,0xa8,0x48,0x66,0xff,0x25,0xe3,0xd5,},{0x9d,0xcb,0xba,0x90,0x39,0x81,0x59,0x4c,0x7b,0x67,0x7e,0xa8,0x00,0x20,0x01,0xd6,0x64,0xcf,0xf7,0xce,0x8e,0x5c,0xfa,0xe5,0x88,0x40,0xcf,0x74,0xaf,0xf0,0xd3,0xa9,},{0xdc,0xf3,0x53,0xb2,0xb9,0x9a,0x4e,0xf4,0x5f,0x3f,0xdf,0x65,0x28,0x63,0x2e,0x8a,0xbd,0xc4,0x33,0x34,0x24,0x76,0xa8,0xc2,0xb3,0x79,0x00,0x40,0x4a,0x4e,0x33,0x3d,0x38,0x78,0x14,0x23,0x57,0x57,0xef,0x7a,0xd0,0x38,0x58,0xa0,0xf3,0x5d,0x46,0x15,0xe8,0xab,0xa4,0x84,0xfd,0x64,0xf1,0x11,0x2e,0xc1,0xb1,0xae,0xd2,0xcb,0x64,0x0e,},\"\\xf4\\xb0\\x5b\\x3e\\xfd\\xcb\\x1d\\x5c\\x07\\xda\\x95\\x0c\\x46\\x56\\x55\\x28\\x44\\x0b\\xb4\\x88\\x35\\xee\\x4c\\x13\\xf4\\x3d\\x7a\\x16\\x18\\xde\\x11\\x9e\\xbb\\xb2\\x59\\xea\\x74\\x80\\xa5\\x04\\x81\\x74\\xfa\\xec\\xc1\\x05\\x5b\\x32\\xdc\\x01\\xac\\x71\\x56\\x34\\x43\\x21\\xe8\\xeb\\xa6\\x98\\xf3\\x02\\xee\\x16\\x43\\xb5\\xf0\\x4b\\x8e\\x7e\\xcc\\xa6\\x3b\\x91\\x56\\x1c\\xe3\\x51\\x4a\\xbe\\x78\\x51\\xb6\\xfb\\x17\\xfc\\x94\\x3b\\xdc\\x94\\xda\\x30\\x8c\\x8e\\x47\\x69\\xfe\\xc2\\x0f\\xad\\xf4\\xfa\\x8e\\x7f\\x62\\xb6\\xff\\xb5\\xf1\\x70\\xd6\\x44\\xed\\x29\\x35\\x5e\\xbd\\x22\\xcb\\x3a\\xa1\\x48\\x6b\\x1e\\x36\\x7c\\x72\\x9d\\xd3\\xf7\\x9b\\xcd\\x40\\xff\\xd0\\x8a\\xf2\\x8c\\xeb\\xc8\\xd7\\x76\\xe1\\xa4\\x83\\xe9\\x11\\xd7\\x9b\\xc6\\x13\\xe0\\x9c\\xc6\\x21\\xca\\xde\\xb0\\x34\\xdd\\x6f\\x72\\x37\\x47\\x71\\x98\\x51\\x27\\xf7\\xa3\\xa1\\xaa\\x78\\x6a\\x52\\x3a\\xe6\\xe3\\x4e\\xe4\\x33\\xdc\\x30\\xc3\\x75\\x98\\x7c\\xff\\x50\\xbd\\xcb\\xc9\\x97\\xfc\\xd5\\x1c\\x94\\x56\\x7a\\x67\\xae\\xfb\\x6e\\xf5\\xed\\xf9\\xbd\\xd6\\x59\\x64\\xd4\\x64\\xbe\\x9e\\xbd\\xfb\\x88\\xc0\\xe2\\x31\\xb0\\x7f\\xf6\\x40\\x5c\\x00\\xf8\\x25\\x31\\xe9\\x61\\xbf\\xc5\\xea\\xd2\\x66\\xbc\\xc0\\x87\\x18\\x87\\x8c\\xaf\\xb1\\xd3\\x75\\x36\\xf1\\x83\\xe4\\x8b\\xf3\\x8d\\x3f\\x6b\\xe9\\x00\\x25\\x2d\\x1f\\xb4\\x19\\xe6\\xa2\\xac\\x58\\x96\\x03\\x9f\\x63\\xc3\\x14\\x01\\xff\\xf9\\x32\\xce\\x98\\x14\\xb0\\x85\\xab\\x20\\x41\\x69\\x72\\xa2\\xb3\\x51\\xc8\\x15\\xa6\\x2d\\xe5\\x09\\x67\\x46\\x28\\xb0\\xd3\\x56\\x6f\\xc9\\xc2\\xe0\\xa9\\x23\\x7b\\x93\\xf9\\xbb\\xb2\\xde\\xed\\xf0\\x2b\\xff\\x83\\xbf\\x6d\\x86\\x8b\\x63\\x99\\x32\\x6d\\x48\\x09\\xd0\\x41\\x9f\\x31\\xb2\\xf3\\xa4\\x81\\x28\\x5b\\x94\\x07\\x8b\\x47\\x06\\x1c\\xe9\\x1d\\xad\\x58\\x3d\\xd5\\xb1\\x3b\\xd0\\x10\\xfb\\x30\\xf2\\x49\\x5b\\xb7\\x04\\x20\\x18\\x3a\\x93\\x01\\x59\\xe4\\xdb\\x19\\x3d\\xf6\\xac\\xd1\\x24\\x42\\x3e\\x03\\x9a\\x67\\xf1\\x56\\x88\\xae\\xc5\\x0c\\x59\\x27\\xfb\\x27\\x18\\x22\\xaa\\xa6\\x6f\\x29\\x4b\\xc8\\x05\\xd3\\xbc\\x7c\\x83\\x41\\x87\\x8a\\x54\\x10\\x09\\xf3\\x0d\\xa9\\x9f\\xcc\\x00\\x85\\x07\\x9c\\xe7\\xfc\\x55\\xe0\\x01\\x16\\x85\\x56\\x2a\\xbd\\xb3\\xa9\\x47\\x1f\\xfd\\xe6\\x17\\x63\\x00\\xef\\x5b\\x31\\xe0\\xdf\\x60\\x9a\\x54\\xa1\\xee\\x66\\x24\\x07\\x0d\\xa9\\x9c\\x87\\x76\\x89\\x1f\\xdf\\x6a\\xa7\\x8b\\x4d\\x55\\xb1\\xf5\\xda\\xdf\\xc0\\x61\\xad\\xd5\\xaf\\x00\\xfd\\x3a\\xde\\xdb\\x44\\x8c\\x55\\x9b\\xff\\xf2\\x04\\x06\\x80\\x43\\xa5\\xd1\\xd6\\x21\\x47\\x48\\x62\\x8c\\x3e\\xbc\\x5f\\x02\\x24\\x32\\x6c\\xa1\\x8e\\xf0\\x48\\x42\\x5d\\xa9\\x30\\x01\\x33\\xfb\\x69\\x5d\\x4f\\x26\\x31\\x65\\xac\\x22\\xf3\\x61\\x9d\\x40\\x5a\\xf2\\x71\\xa7\\x1a\\x9a\\xfb\\x19\\x8b\\xf6\\x31\\x24\\x1d\\x34\\x59\\xb9\\x53\\x98\"},\n{{0xb8,0x55,0xc8,0x18,0x05,0xc7,0x08,0x74,0x10,0xe6,0x9f,0x96,0xb0,0x24,0x02,0x71,0xdc,0x76,0xc1,0xe4,0xad,0xe3,0x8c,0x6a,0x92,0x78,0xe3,0xc9,0x4f,0xbe,0xa2,0x56,},{0x6a,0xdb,0x02,0x5a,0x40,0x26,0x0f,0x56,0x98,0x84,0xb8,0xca,0xb3,0x75,0x2b,0x4f,0x25,0x5c,0x37,0x3e,0x2b,0x42,0x4b,0x62,0x87,0xeb,0xb5,0x10,0xfa,0x06,0xff,0xf0,},{0x3c,0xaa,0x81,0x32,0x73,0xe7,0x53,0x54,0x2f,0xfb,0xfe,0xb2,0x1b,0xc3,0xe2,0xcf,0x8c,0xa7,0xd9,0x20,0xfa,0xac,0x7c,0x49,0xdc,0x2a,0xa9,0x91,0x17,0x68,0xc7,0xad,0x43,0xb3,0x8b,0x02,0x36,0xdb,0x27,0xf3,0xee,0xae,0x0b,0x12,0x06,0x00,0x1e,0x66,0x5a,0x60,0x70,0x78,0xc5,0x22,0xed,0x7a,0x9d,0xc4,0x68,0x85,0x34,0x63,0x59,0x00,},\"\\x85\\xa9\\xbd\\xb7\\x0a\\x6c\\x75\\x28\\x97\\xe4\\x3a\\x91\\x10\\x6e\\xe9\\xa9\\x9c\\x2c\\xa9\\x4f\\xf7\\xb4\\x46\\x1a\\x44\\xa3\\x91\\x74\\xc1\\x7e\\xcd\\x99\\xdf\\x46\\xee\\xcd\\x81\\xc3\\xf5\\x25\\x13\\xdc\\x9d\\x54\\x7d\\xad\\x37\\x21\\xc6\\xd5\\xee\\x1f\\x8f\\xac\\x0b\\xa5\\xaf\\xb3\\x68\\x70\\x44\\x73\\x9e\\xd5\\x35\\xb8\\x44\\x00\\x87\\x04\\xc0\\x9f\\xe1\\xe5\\xd7\\x85\\xd4\\xc9\\xc3\\xd0\\xb0\\x58\\x89\\xb9\\xc2\\x0f\\xc3\\xfd\\x68\\xdf\\x12\\xdb\\xeb\\x2c\\x34\\xf6\\xf7\\xec\\x1c\\x6f\\xb7\\xfa\\x81\\x1f\\xf8\\x46\\xb5\\xa6\\x1f\\xa5\\xfe\\x55\\x37\\x9e\\xe6\\x3a\\xbc\\xd3\\x73\\xfe\\xd0\\x02\\x54\\xeb\\xd0\\x6b\\xc8\\xb2\\x2f\\x7f\\xbf\\x2f\\x72\\x7a\\x5f\\xad\\x88\\x51\\x41\\x59\\xe2\\x6d\\x78\\xdf\\xdb\\x09\\x57\\xf6\\xef\\xaf\\x51\\xa8\\xe8\\x0b\\x58\\x5e\\x83\\x8b\\x96\\x21\\xd0\\x51\\x07\\x4a\\x4f\\x58\\x67\\xb4\\xae\\x2f\\x2f\\xf6\\xd6\\x2b\\x85\\xbc\\xce\\xc0\\xb4\\xaa\\xa4\\x79\\x16\\x37\\x38\\x8c\\x09\\x01\\xfd\\x49\\xdc\\xcc\\xce\\x72\\x04\\x85\\x9f\\x81\\xee\\xfc\\x63\\x9f\\xed\\x92\\x28\\x04\\x56\\xe6\\x9a\\x15\\x09\\xb4\\xb1\\xbd\\x76\\x24\\x44\\x7d\\x86\\x2c\\x45\\xa0\\xc8\\xb0\\xc5\\xbb\\x2c\\x4c\\xa5\\x12\\xcb\\xc0\\x37\\xf5\\x1b\\x78\\x09\\x82\\xb1\\x83\\xa5\\xca\\xfa\\x15\\x29\\x75\\x85\\xc9\\x47\\xa2\\x5b\\xe8\\xc2\\x24\\x0e\\xbf\\xb6\\x86\\x8e\\xce\\x5e\\xa2\\xaa\\xb2\\xc2\\x39\\xc8\\x37\\x54\\xc7\\xd5\\x94\\xb3\\x72\\x5a\\xce\\xef\\x34\\x4b\\xa7\\xe6\\xae\\xf4\\x9f\\x7f\\x31\\x3b\\x0a\\xe8\\x2c\\xca\\xca\\xd3\\x87\\xa6\\xe9\\x33\\x7f\\x05\\xf8\\xc7\\x99\\xef\\xe7\\x82\\x9b\\x27\\xb4\\xd5\\xb2\\x01\\xfd\\x5a\\xe5\\x83\\x43\\x51\\x69\\x07\\x59\\xf3\\xea\\x17\\x5f\\xd4\\x74\\x1b\\xe2\\x28\\xd8\\x07\\xfb\\x54\\xdf\\x4a\\x74\\x10\\x38\\xfa\\xee\\x47\\xed\\xf1\\xf5\\x61\\x65\\x25\\x98\\x60\\x1f\\x27\\x15\\x5f\\xc5\\x0d\\x9d\\x50\\x11\\x43\\x37\\x11\\xc1\\x06\\xd4\\xb6\\x07\\x85\\xa5\\xcc\\x93\\xb3\\xfd\\xd1\\xda\\xd7\\x0c\\x0c\\x8e\\xaa\\x33\\xf1\\x51\\x2e\\x35\\xa5\\x41\\x74\\x5e\\x37\\x6c\\x15\\x16\\x7f\\xa8\\xf6\\xb3\\xb2\\xc4\\xc3\\xa3\\x66\\xfc\\x41\\x49\\x7d\\x29\\x73\\x57\\x81\\x6a\\xe7\\x95\\xa8\\x04\\xc9\\x80\\xe7\\xcb\\xfb\\x0c\\x74\\xd8\\x83\\x5d\\x92\\x9a\\xe3\\xbb\\x52\\xba\\xb1\\x29\\x64\\x56\\x6d\\x74\\x6b\\xd2\\xc1\\xd1\\x32\\xb6\\x23\\x3f\\xa3\\x4f\\x75\\xe2\\x68\\xed\\xee\\x77\\x5e\\xb3\\xce\\x13\\x2e\\x6b\\xeb\\x2e\\x8d\\x71\\xf0\\xc8\\x76\\x29\\x91\\xcd\\xe4\\xe2\\x6f\\x71\\x43\\x9d\\xfa\\x83\\x97\\x8f\\x99\\x56\\x03\\x86\\x1b\\xc0\\xb1\\xd9\\x06\\x0b\\xbc\\xca\\xcc\\xf8\\x6f\\x87\\x45\\xad\\x96\\x99\\x4d\\x5d\\x00\\x7d\\x52\\xe8\\x3a\\xa5\\xe6\\x94\\x12\\x96\\x4b\\xdb\\xfb\\xe4\\x78\\x0a\\xaa\\x8d\\xe4\\x1b\\xe1\\x29\\x8a\\xbb\\xe9\\x89\\x4c\\x0d\\x57\\xe9\\x7f\\xca\\xcc\\x2f\\x9b\\xbd\\x63\\x15\\xd3\\xfc\\xd0\\xea\\xf8\\x2a\"},\n{{0x95,0xb9,0xc8,0xa6,0xef,0x80,0xeb,0xd5,0xcb,0xd4,0x7a,0x04,0xca,0x54,0x38,0x73,0x73,0xdf,0x4d,0x67,0xa2,0xb4,0x75,0x59,0x77,0x65,0xac,0x89,0xfc,0xf9,0x3e,0x93,},{0xf2,0xc9,0x47,0xb1,0x8a,0xdc,0x3e,0xa6,0xa2,0x3f,0x7a,0xbc,0xa3,0x64,0xb9,0x85,0x3a,0xe8,0x5a,0x2b,0x0c,0x8c,0x26,0xf0,0xd3,0x17,0x3c,0x27,0x32,0xc3,0xc7,0xff,},{0x2c,0x8b,0xf5,0x43,0xe2,0xa3,0xe0,0x04,0x15,0xee,0x4f,0x10,0x7b,0x2f,0x5a,0x66,0x87,0x17,0x6f,0x5d,0x52,0x11,0x17,0x75,0x9c,0xeb,0x56,0x17,0x51,0xbc,0xc7,0x7d,0x9b,0x08,0xa6,0xa6,0x31,0xf6,0x44,0x7c,0xd9,0x01,0xde,0x96,0x69,0x9a,0xeb,0xb1,0x68,0xbf,0x97,0x50,0x0d,0xc5,0x4a,0x05,0x43,0xef,0x14,0xe4,0xb5,0xa0,0x81,0x06,},\"\\x78\\x55\\xbc\\x39\\x26\\x30\\xcc\\xf5\\x31\\xd3\\x06\\x16\\x06\\xdd\\xfc\\x81\\xa0\\xfd\\x92\\x94\\xc5\\x47\\x91\\xb5\\xf9\\x55\\x9b\\x68\\x27\\x25\\x4a\\xa1\\xf2\\x5c\\x54\\x0b\\x7d\\x7d\\xf3\\xec\\x9c\\xdf\\x14\\x25\\x66\\x29\\xdb\\xcf\\x9b\\x72\\x5f\\xeb\\x34\\x12\\xeb\\xf3\\x5f\\x0e\\xf9\\x37\\x9e\\x41\\x31\\xcc\\x77\\xe0\\xf0\\xfb\\x6f\\x74\\x59\\xa7\\x38\\x36\\x1a\\x99\\xae\\x4c\\xcb\\x2b\\x60\\xa9\\x9f\\xe9\\x2b\\xd6\\xc3\\xa5\\x3d\\x6f\\x45\\x4e\\xe9\\x00\\x5b\\xce\\xc5\\xae\\xdc\\xfa\\x82\\x34\\x73\\x92\\xef\\xcf\\x11\\x75\\xe5\\x78\\x39\\x6a\\x8d\\x80\\x0d\\xab\\xa0\\xf4\\xc2\\xcf\\x4d\\x49\\x13\\xb0\\x52\\x86\\x20\\xe3\\xba\\xa0\\xf6\\xd8\\x6e\\x06\\x28\\xe4\\x7c\\x0c\\xa2\\x6d\\xf3\\xb0\\xc7\\x88\\xc4\\xe1\\x65\\x57\\xf7\\xfc\\x28\\xdf\\x82\\x0c\\x12\\xfb\\xb6\\xff\\xbf\\xec\\xb9\\x82\\x9d\\xdb\\x65\\xef\\x8d\\x63\\xe9\\x0d\\x68\\xfc\\x71\\x94\\xb5\\xb8\\x85\\x91\\x3f\\x08\\xed\\xee\\x84\\x56\\x76\\x47\\xff\\xa3\\xf0\\xd0\\xd3\\x25\\xd0\\x82\\x60\\x0c\\xe7\\x1a\\x23\\x45\\xc7\\x7d\\x65\\xbd\\x96\\x25\\x20\\x03\\xe5\\xc1\\x25\\xa7\\x18\\xa0\\x73\\x70\\xc3\\x1b\\x57\\x08\\x07\\x5c\\xf1\\x83\\x7c\\x69\\x25\\x63\\x5c\\xc6\\x8d\\xd1\\xb7\\x51\\xe4\\x0a\\xb6\\x08\\xb0\\xd9\\xd8\\x85\\x2c\\x18\\xd3\\x06\\x92\\x19\\xef\\x80\\x7b\\x76\\xd2\\x88\\xf9\\x2c\\x29\\xa9\\x3e\\x3d\\x75\\xb5\\xb2\\xe5\\x36\\x81\\x67\\x1d\\x3a\\xe0\\x14\\x5a\\xc0\\x3c\\xca\\xd3\\x16\\x2e\\x44\\x70\\x3b\\x04\\x01\\xd3\\xeb\\x16\\x7c\\xd8\\xdd\\xc1\\xe1\\xa5\\xa3\\x26\\xb7\\x28\\xb1\\xe0\\xc0\\x0a\\x94\\xd8\\x6d\\xe6\\x13\\x52\\xa6\\x61\\xe4\\x08\\x97\\x17\\x5d\\x28\\xd3\\x41\\xe4\\xd1\\xd9\\x96\\x2e\\x35\\xf4\\xde\\x18\\xa5\\x40\\x17\\x61\\x1a\\xd0\\x53\\x59\\xce\\x08\\xb9\\x7b\\xfe\\xdb\\xfb\\xe3\\x99\\x2e\\xd5\\x8e\\xd4\\x0f\\x51\\x7a\\xab\\x01\\xc0\\xfe\\xfe\\x8b\\x63\\x64\\x3d\\xa1\\xa4\\x54\\x15\\x27\\x30\\xbf\\x99\\xaf\\x87\\x40\\xad\\xf9\\x8a\\x77\\xb8\\xd7\\x3a\\xdb\\x08\\xe6\\x09\\xe0\\x0c\\xe9\\xb1\\xcc\\xdf\\xef\\x3e\\x9a\\x9b\\x05\\xaa\\x56\\xe0\\xbc\\x79\\xb6\\xbb\\xba\\x80\\xdd\\x8e\\x46\\x1a\\xf7\\xcb\\x20\\x28\\x92\\xd8\\x9b\\x2d\\x05\\xa4\\x45\\x8a\\xb3\\xfa\\x54\\xb4\\x74\\xb8\\xf8\\xf5\\x81\\x79\\x5d\\x6c\\x27\\x39\\xe5\\x9d\\x0f\\xe0\\x62\\x40\\x0b\\xae\\x2d\\x2d\\x53\\x4b\\x34\\x0b\\xb8\\xe2\\x61\\x57\\x77\\xa9\\xa5\\x61\\x5b\\xb2\\xcf\\x43\\x7b\\xa5\\x25\\xe0\\x0e\\x70\\x38\\xf2\\x2a\\x57\\x88\\x2a\\xc5\\x20\\xb3\\x33\\xe7\\x5c\\x3c\\x92\\xa8\\xb9\\xf0\\xe3\\x7f\\x67\\x1c\\x94\\xb1\\x5d\\xd8\\x18\\x2a\\x08\\xd7\\xc1\\x43\\xe9\\x4e\\x92\\x62\\xb3\\xcc\\x55\\x44\\xc2\\x94\\xf5\\xf3\\x35\\xc2\\xb2\\x8a\\xc1\\x19\\xfe\\xa0\\x0f\\x96\\x34\\xdb\\x06\\x39\\x93\\x98\\x8b\\x5f\\x15\\x05\\x79\\xc7\\xcc\\x25\\xb6\\xa1\\xfb\\x0d\\xde\\x94\\x80\\x4f\\xa6\\xef\\x66\\xff\\x79\\xfb\\x91\\x07\"},\n{{0xb7,0x86,0xcc,0xfb,0x58,0x6d,0x43,0xb8,0xc4,0x6b,0xb9,0x7b,0x96,0xc9,0x18,0x73,0x1b,0xc2,0xcc,0x11,0x92,0x77,0xf1,0x23,0x67,0x1e,0x30,0x14,0x81,0x58,0xd2,0xed,},{0x90,0xc7,0x00,0x46,0x00,0xf3,0xdc,0xe4,0x09,0xfd,0xea,0xdc,0x8e,0xd0,0x18,0xf9,0xea,0x26,0x3f,0x75,0x16,0x0a,0x74,0xab,0x54,0xf4,0xc2,0x39,0x9a,0x90,0xca,0x78,},{0x52,0xba,0x96,0x58,0xa1,0xa0,0xb3,0xe9,0x8e,0xd5,0x20,0x9e,0x39,0x3e,0x42,0x00,0x66,0xa3,0x7d,0x37,0x14,0xda,0xa7,0x3d,0x5c,0x67,0x1d,0x33,0x07,0x5a,0x5f,0x57,0x27,0xfe,0x4e,0x08,0x1e,0xe0,0xfa,0x3c,0x21,0x33,0xdc,0x95,0x3a,0x2d,0xa6,0x20,0x29,0x13,0x71,0xf0,0x0c,0xcb,0x57,0xd8,0x79,0x2e,0xb5,0x96,0xa2,0xff,0x81,0x01,},\"\\xba\\xbf\\x48\\xbd\\x55\\xea\\x91\\xbd\\x0c\\x93\\xb9\\x70\\x24\\x1b\\x52\\x9d\\x9d\\xb4\\x3d\\x49\\x27\\xfe\\xa5\\xf1\\xa1\\xf7\\x08\\x2d\\xd6\\xcb\\x50\\xa5\\x2b\\x09\\x4b\\x31\\x29\\xfc\\xd9\\x03\\xa4\\x4f\\xec\\x8b\\xfd\\xb5\\xc8\\x6c\\x00\\x2a\\x2a\\x45\\x28\\x87\\xca\\x25\\xa6\\x0e\\xce\\xb5\\xe1\\xf9\\xf5\\xc9\\x3d\\xc5\\x94\\x23\\xc7\\xaf\\xe7\\x47\\xc6\\xbf\\x40\\x7c\\xac\\xad\\xec\\xcf\\x5d\\x78\\x79\\x70\\xcb\\x06\\x17\\xbb\\x3c\\xfe\\x7f\\xd1\\x75\\x63\\xd3\\xa0\\xdc\\x91\\x63\\x1f\\x71\\xb8\\x4b\\xe2\\x4a\\xe8\\x00\\x11\\x37\\x50\\xf0\\x31\\xd0\\x1f\\xd0\\x53\\x64\\xb4\\xf2\\x7f\\x86\\xf8\\xdc\\x3a\\xd7\\x40\\x7e\\x1a\\xe9\\xe7\\x68\\x15\\x4e\\x3d\\xde\\x58\\xe8\\x67\\x12\\x9e\\x24\\x74\\x54\\x7b\\x40\\x82\\x17\\x96\\x48\\x44\\x85\\x8d\\x05\\x6b\\x31\\xc3\\x74\\x99\\x1b\\x7f\\x16\\x1f\\x52\\xf0\\x88\\xb8\\x06\\xe0\\xf3\\x13\\xd6\\x8a\\x15\\xc5\\x40\\x1e\\xd5\\x5b\\x2b\\x77\\xde\\xea\\x58\\x6c\\xb0\\x54\\xdc\\xd7\\x1a\\xf2\\xab\\x6a\\xb1\\x1e\\x84\\xb3\\x0c\\x53\\x93\\x45\\xde\\x3e\\xb4\\x3f\\xb7\\xb3\\xa3\\xb4\\x89\\x87\\xc3\\xbf\\xa7\\x06\\x55\\xd5\\x99\\xf2\\xe3\\x1d\\x12\\xad\\x23\\xcc\\x96\\xe8\\x6d\\x38\\x0b\\xfd\\xa8\\x12\\xfe\\xff\\x3d\\xd3\\x02\\x42\\x92\\x91\\x69\\x07\\x02\\x28\\x91\\xe1\\x19\\xbf\\xc3\\xed\\x9c\\x25\\x54\\x6c\\xd1\\x9f\\xc9\\x92\\xd8\\xa6\\x1e\\x60\\x59\\xca\\x3c\\xe7\\x80\\x2a\\xf1\\x11\\x87\\x56\\x62\\x0b\\x87\\xa7\\x24\\x2b\\xd8\\x38\\x97\\xc9\\x4d\\xd5\\xa3\\x6e\\xd4\\x0f\\xc0\\xf3\\x4c\\x2c\\x93\\x11\\x0b\\x37\\xd1\\x7d\\xd9\\x6a\\x22\\x06\\x25\\x90\\xbc\\xdb\\x54\\x67\\x42\\xef\\x72\\x18\\xad\\xcc\\xc5\\xad\\x28\\xf4\\xfc\\xe6\\xec\\xf7\\x05\\x83\\x5f\\x41\\x13\\xd8\\x2e\\xa5\\x33\\x90\\x3a\\xec\\x8c\\x38\\x20\\xfe\\x4b\\x47\\x15\\xf3\\x7e\\x20\\xce\\xbc\\x1e\\x71\\x51\\x9a\\xa0\\xb2\\x40\\xb4\\x84\\x0a\\xa4\\xfd\\xcf\\xb5\\x24\\x67\\xfe\\xdd\\x8f\\x4d\\x1f\\x9b\\xc3\\x3e\\xe1\\x14\\xf3\\xef\\x85\\xf5\\xfd\\xb0\\x9c\\xa8\\x84\\xaf\\x38\\x8a\\xd3\\xad\\xf8\\x4c\\x79\\x3f\\x38\\x6e\\xfe\\x6f\\xf8\\xa4\\x6e\\xd8\\x1e\\x5d\\x45\\xa3\\x7c\\x25\\xcd\\x80\\xf2\\xd7\\x36\\x3f\\x43\\xae\\x45\\xe3\\x77\\x2c\\x0d\\xf8\\x9f\\x11\\x44\\x79\\x39\\x80\\x6c\\x09\\x6e\\xf9\\x33\\xa1\\x39\\x44\\xf0\\x89\\x0d\\x88\\x7c\\x2e\\x5b\\xbb\\x6b\\x12\\xea\\x95\\x0b\\x09\\xb8\\xfe\\x42\\x52\\x89\\x37\\x73\\x52\\xf3\\x5f\\x84\\xcc\\x4d\\xcd\\x4d\\x7a\\x44\\x94\\x89\\xfa\\x92\\x51\\xc0\\x31\\x13\\x48\\x92\\x25\\x80\\x9c\\xdf\\x3c\\xb6\\x34\\x75\\xf1\\x0d\\x34\\x17\\x09\\x37\\x1c\\x6f\\xd4\\xbb\\x7a\\x94\\x94\\x83\\xd1\\xbc\\x2b\\x31\\xdd\\xf4\\xd9\\x63\\xa0\\x7d\\xe7\\xea\\x5c\\x3f\\xee\\x9a\\x0e\\x33\\xf0\\x76\\x9f\\x2f\\xaa\\x40\\x61\\x2a\\x54\\x69\\x74\\xbd\\xe0\\xb7\\x33\\x91\\x79\\xe4\\x12\\x4a\\x44\\x7b\\xd4\\x28\\x79\\xcc\\xda\\x5c\\x8a\\xd1\\x81\\x9c\\x53\"},\n{{0xdd,0x1a,0x97,0x74,0xf7,0x58,0x4d,0x85,0x89,0xb1,0x9f,0x92,0xab,0x69,0x39,0xac,0x48,0x56,0x02,0xfe,0x16,0x44,0xce,0xe2,0xf6,0xf3,0xcd,0x60,0xfb,0xd5,0x84,0x00,},{0x4b,0xea,0x7d,0x0b,0x0f,0x4b,0xd5,0x90,0xf9,0xe3,0x57,0x9f,0x0c,0x5f,0xa4,0xce,0xf4,0xd6,0x0a,0x49,0xd2,0xc4,0x37,0xa0,0xaa,0xea,0xd9,0xd4,0x3a,0x73,0xd4,0xa3,},{0x19,0x59,0xbd,0xe0,0xa6,0x97,0xa6,0x39,0x93,0xec,0x47,0xd1,0x58,0x22,0x37,0x39,0xfe,0x65,0x87,0x1f,0xa0,0x58,0x70,0xd7,0xde,0x0d,0x38,0x08,0x65,0x91,0x20,0x2a,0x51,0xb1,0x74,0xd1,0xc6,0x18,0x28,0x08,0xc6,0xce,0x62,0x63,0x1d,0x81,0xdb,0xa3,0x4e,0xbe,0xd4,0xaf,0x2f,0x29,0xb0,0x6c,0x00,0xa5,0x7a,0x3c,0xb6,0x66,0x36,0x06,},\"\\xe5\\xdc\\x3e\\xd2\\x6c\\x1f\\x69\\x3c\\xf8\\x52\\x46\\x5a\\x05\\xe3\\x04\\x8b\\x50\\x5d\\xb5\\x11\\x6d\\x9e\\x31\\x59\\x22\\x05\\xa9\\xc3\\xd4\\x72\\x0b\\xc1\\x0b\\x6c\\x20\\x63\\x9a\\x0e\\xe2\\xf0\\xe1\\x47\\x22\\x5b\\x5b\\x19\\xea\\x51\\x1c\\xfb\\xa0\\xc2\\x1a\\xac\\x10\\x71\\x5a\\x2f\\x23\\x2f\\x10\\xc2\\xc8\\xaa\\xd4\\x11\\x12\\xb6\\xb0\\x12\\xe7\\x5a\\x41\\x55\\xf8\\xc6\\x92\\x62\\x53\\xca\\x2b\\x4d\\xdb\\x7b\\xfe\\x7f\\x86\\xe9\\x0a\\x53\\xdb\\xc0\\xcb\\xa8\\x9e\\x48\\x5c\\xec\\xa8\\xfd\\x26\\xe5\\x0c\\x7f\\x28\\x2a\\x25\\x35\\x73\\xcb\\x0a\\x8f\\xa8\\x8c\\xc4\\x46\\x23\\xe8\\x2e\\x8f\\xa2\\xed\\xb6\\xcb\\xc7\\x53\\x8a\\xc9\\x2c\\x11\\xe4\\xc5\\xb1\\xea\\x5f\\x68\\x96\\x6d\\x15\\xd9\\x3c\\x34\\xf3\\x96\\xd2\\x75\\x72\\xf8\\x64\\x38\\x2a\\xb7\\x6a\\x7b\\xe6\\x5a\\x55\\x7b\\x13\\x97\\x66\\x36\\x8a\\x20\\x7d\\x98\\xbc\\x0c\\x20\\x92\\x63\\x70\\xde\\xa2\\x70\\x48\\x16\\x03\\x63\\xed\\x85\\xf4\\x09\\x9e\\x7c\\xd6\\x6d\\x12\\xd0\\x98\\x8c\\xfc\\x9e\\x2f\\x16\\xaa\\x56\\x5f\\x8f\\x33\\xb3\\x9e\\x97\\x8c\\x05\\x87\\x37\\x1f\\x92\\xdb\\x50\\x56\\x31\\x75\\x64\\x41\\x1b\\xd8\\xa3\\xb6\\xfe\\xa0\\x9d\\x34\\x87\\xaa\\xf7\\x34\\x03\\x49\\x18\\xff\\xed\\x1c\\x9f\\xba\\x7b\\xde\\xc6\\xfe\\x68\\x87\\x6f\\xc7\\x36\\x0c\\xc5\\x62\\x9b\\x92\\x10\\x40\\x27\\xfe\\x57\\x59\\xc5\\xab\\x36\\x53\\x54\\x75\\x1e\\x79\\x69\\x11\\x6c\\x3b\\x9a\\x21\\xb1\\x52\\x33\\x0a\\x96\\xa9\\x38\\x1a\\xf7\\x30\\xd1\\x78\\x22\\xd7\\x8a\\xd6\\xea\\x86\\x00\\x06\\x91\\x5b\\x5c\\xab\\x44\\x7a\\x75\\x93\\x72\\xe0\\x5d\\x49\\x5e\\xbb\\x32\\x8e\\x75\\xd2\\x48\\xda\\xa0\\x2f\\x5d\\x2e\\xb9\\x78\\xd2\\x71\\x0c\\xf1\\xc5\\xfb\\x82\\x48\\x76\\x77\\x0e\\x32\\xca\\x6d\\xe2\\xc7\\x30\\x56\\x48\\x92\\x41\\x5b\\xcb\\x53\\xe5\\x98\\x1d\\x70\\x7a\\xdd\\x96\\x1c\\x5f\\x37\\xfd\\xaf\\xa1\\x39\\x9a\\xf8\\xae\\xa9\\x60\\x45\\x8d\\x2c\\xa3\\x10\\x55\\x3f\\x7c\\x98\\x66\\xcc\\xbe\\x8e\\x9d\\x88\\xe0\\x8a\\x44\\x68\\x72\\xea\\x66\\xfc\\x30\\x8c\\x82\\x45\\x14\\xb7\\xda\\xce\\x03\\x34\\xdb\\x73\\x5e\\x6f\\x14\\xc8\\x5b\\x5e\\x61\\x9a\\x5d\\x60\\x56\\x48\\xa8\\x81\\xe8\\x76\\xc7\\x8d\\xbe\\x06\\x57\\x23\\x3d\\x4f\\x7f\\x3b\\xfd\\xdf\\x63\\xb4\\x45\\x31\\x1d\\x6a\\xbc\\x47\\x63\\x47\\xec\\x4f\\xb4\\x3c\\x89\\x46\\xf9\\xd1\\x7c\\x36\\x93\\x81\\xd1\\xc5\\x64\\xff\\xcf\\xe2\\xdc\\x7b\\x47\\x26\\xfd\\x57\\x38\\x7f\\x0b\\x44\\xdb\\x8e\\xf9\\x5a\\x0b\\x4e\\x32\\xa7\\xbe\\xdf\\x31\\x9e\\x53\\xa9\\xe7\\x12\\x6c\\x28\\x11\\xf9\\x82\\x9d\\x1f\\x4a\\xe9\\xab\\xd9\\xd5\\xf4\\x2e\\xfe\\xf2\\x07\\x5f\\x47\\x05\\x1c\\x63\\xa4\\xf8\\x20\\x20\\x40\\xec\\x47\\x23\\x68\\x63\\x82\\xc6\\x03\\x31\\x27\\xc1\\xfb\\xff\\xf4\\xbc\\x82\\x37\\x35\\x08\\x75\\x2d\\x43\\x1d\\xc4\\x73\\xf5\\x2d\\xde\\xab\\x03\\x42\\xdc\\x4f\\x54\\x47\\xf8\\xf2\\x57\\x38\\xef\\x65\\xd7\\x85\\x56\"},\n{{0x66,0xf5,0xea,0x8c,0xdb,0x95,0xee,0x1a,0x75,0xe3,0x24,0x67,0xd7,0xc8,0x3c,0x59,0x44,0x77,0x42,0xc8,0x5d,0xdd,0x49,0x9c,0x43,0xc0,0x86,0x73,0xe1,0x49,0x05,0x3a,},{0xa8,0xad,0x04,0xb9,0xc1,0x44,0xb9,0x7f,0xe8,0x67,0x37,0x4d,0x4f,0xe5,0x7d,0x7e,0xc0,0xc2,0x49,0x18,0x3e,0x43,0xbd,0xfb,0x5d,0x52,0x64,0x4e,0x7f,0xbe,0x1d,0xf3,},{0xec,0x5c,0x7e,0x83,0x92,0xfa,0x8b,0x61,0xbc,0x82,0x96,0x81,0x86,0x6e,0x45,0xac,0x8b,0xe4,0xb5,0xb7,0xb6,0xa8,0x22,0xc1,0xbc,0xd0,0xf2,0xcc,0x2c,0x8c,0x44,0xc3,0x3c,0xf8,0x3f,0xa4,0x2d,0x43,0xa2,0xf1,0x88,0x41,0x41,0xb4,0xa5,0x9a,0xaf,0xf4,0x7f,0x9b,0xe0,0x7e,0x63,0x2e,0x20,0x18,0x75,0x93,0x24,0xea,0xc9,0xd1,0x49,0x00,},\"\\xc0\\xd0\\x1d\\xce\\xb0\\xa2\\xd1\\x71\\x91\\x10\\x18\\x79\\xab\\xb0\\x93\\xfb\\x07\\x75\\x71\\xb5\\x21\\xbe\\x7b\\x93\\xa1\\x17\\xc6\\x96\\xc0\\x87\\x2f\\x70\\xea\\x11\\x39\\xab\\x62\\x83\\x29\\xee\\x56\\x55\\xfc\\x0a\\xa7\\x7e\\x81\\x11\\xd2\\xfc\\x88\\x47\\x48\\xc1\\xf2\\x67\\xb9\\xeb\\x09\\xdc\\x26\\xf5\\x7f\\xc4\\x02\\xd6\\x1b\\xa3\\x6f\\x63\\xf4\\xd5\\x89\\xaa\\xe6\\x3c\\x76\\xee\\xee\\x15\\xbf\\x0f\\x9e\\x2d\\xcd\\xe4\\xe4\\xe3\\xe7\\x8f\\xc6\\xc2\\x9e\\x3a\\x93\\xf3\\xff\\x0e\\x9a\\x6e\\x0b\\x35\\x66\\x45\\x95\\x38\\x90\\xde\\xbf\\x62\\xdb\\xea\\xf4\\x90\\x51\\x78\\xd4\\xf0\\xa5\\xa5\\x92\\xc1\\x92\\x94\\xee\\xba\\x7c\\x21\\xcf\\x8f\\x1b\\xb3\\xf4\\x51\\x21\\x87\\x37\\x6d\\xe7\\x2f\\x11\\x36\\xa4\\x8a\\xc2\\xdf\\xaf\\x32\\xd0\\xf3\\x7d\\xe0\\x64\\x59\\x25\\x92\\xb6\\xe1\\xbc\\x0c\\x51\\x2c\\xf4\\xd2\\xd8\\x5d\\x16\\x79\\x78\\x53\\xa8\\x09\\x33\\xb0\\x9c\\x2f\\x7b\\xfb\\x9e\\x54\\xa6\\x9e\\x51\\xa8\\xe4\\x23\\xa9\\x1c\\x3e\\x5f\\xde\\xb4\\x79\\x05\\x33\\xe8\\x7a\\x4b\\x1c\\x0e\\x0e\\x23\\xa9\\xdb\\x95\\x73\\xac\\x17\\xab\\x6e\\xc7\\x01\\x4d\\x8b\\x7c\\x44\\x86\\xe1\\x57\\x25\\xf8\\xd2\\x64\\xee\\xa3\\x05\\x0e\\x83\\x5a\\xe0\\xac\\x44\\x9d\\xb3\\x34\\x50\\x2a\\x6d\\x97\\x35\\x8f\\xa8\\x59\\x10\\x6a\\xd0\\xf6\\xf4\\x29\\x5f\\x23\\x44\\x92\\x0a\\xdf\\x93\\x55\\xa6\\x94\\x9d\\x8d\\x14\\x5c\\x25\\x62\\x8a\\x46\\xa1\\x04\\xca\\x09\\x9b\\xd9\\xdd\\xe9\\x41\\x11\\x9c\\x83\\x82\\x0c\\xdc\\x2c\\xb2\\xd0\\x97\\x22\\x69\\x49\\x01\\x04\\x3c\\x37\\xcf\\x0a\\xe8\\x79\\xbe\\x20\\x30\\xd0\\x37\\x31\\x58\\xb9\\xc4\\xb0\\x71\\x82\\x98\\xbe\\x45\\xf6\\x30\\xf6\\xfc\\xdc\\x19\\x0f\\x7b\\x29\\x26\\xd8\\x76\\x55\\xa1\\x8b\\xb7\\x97\\xac\\x50\\x75\\x7f\\xcd\\x36\\x55\\xc9\\xe4\\x1d\\x51\\x63\\x29\\x3d\\x9a\\x13\\xd9\\x84\\xf5\\x91\\xf7\\x5b\\x7e\\x4e\\x5c\\xad\\xb6\\x4c\\x4c\\x9f\\xdf\\xef\\x76\\xca\\xb6\\x93\\x81\\xd0\\xf6\\x0b\\x48\\x3f\\x80\\x4b\\xb3\\xb3\\x33\\x64\\xdf\\x8c\\xff\\xac\\xb3\\xc9\\xb1\\x3f\\xf4\\xc8\\xd8\\xd4\\xea\\x40\\x76\\x6a\\x7d\\x42\\xd8\\x25\\x6c\\x6b\\x1c\\x11\\xc1\\x91\\xda\\xba\\x1b\\x8e\\xf2\\x15\\x93\\xe4\\x7b\\x18\\x85\\x8e\\xc1\\x9d\\x81\\x73\\x58\\x67\\x8d\\x85\\x48\\xff\\x15\\x35\\xd5\\xfc\\xf4\\x41\\x4b\\x6a\\x11\\xd3\\x4a\\x37\\x42\\xf8\\xd7\\x14\\x9f\\xa6\\x81\\x38\\x3a\\x94\\x08\\x88\\x7f\\x1c\\x0a\\x98\\xed\\x52\\x1e\\x72\\x79\\x32\\x77\\x82\\x4d\\x6f\\x74\\x6d\\x49\\xb6\\x3d\\x44\\x4e\\x31\\x2e\\x6d\\x9b\\x98\\x66\\x11\\x25\\x81\\x96\\xa5\\xb0\\x12\\xb8\\x8f\\xaa\\x29\\xf9\\xa6\\xc6\\x7e\\xd2\\x5d\\xf8\\x7b\\x2d\\xbf\\x0d\\xbd\\x2d\\xc3\\x08\\x0c\\x5b\\x8d\\x15\\xa3\\x7d\\x34\\x72\\x90\\x98\\xed\\x0d\\xe9\\x2d\\x75\\x80\\x74\\x29\\xb2\\xca\\xe5\\xd7\\x28\\x3c\\x4e\\x5c\\x9b\\xd1\\x96\\xd1\\xad\\x43\\x6c\\x7c\\x34\\xf3\\xc9\\x46\\x6e\\x5c\\xb3\\x19\\x6b\\x44\\x3f\\x4b\"},\n{{0xed,0x25,0x58,0xe5,0xc5,0x67,0x84,0xbc,0xfb,0x4f,0x4d,0xde,0xa3,0xc0,0xdf,0xbe,0xf8,0xd9,0x6f,0xf1,0xca,0xbf,0x15,0x8e,0xc4,0xab,0xe6,0x0a,0xff,0x66,0x99,0x9e,},{0x1e,0xdc,0x99,0x10,0x12,0xac,0x6f,0x88,0x8f,0xa7,0xe6,0x04,0x57,0x77,0xe9,0xba,0x1d,0x4c,0x03,0xc4,0x02,0x92,0xd2,0xda,0x6b,0x72,0x2b,0x4a,0xd0,0xa3,0xed,0x74,},{0xab,0x9e,0x01,0x16,0x65,0x24,0xfd,0x28,0x8e,0x5c,0x68,0x9e,0x56,0xd7,0x30,0xd4,0x98,0x30,0x00,0x55,0x10,0x30,0x49,0x33,0x34,0xa3,0x98,0x4e,0x22,0x23,0xdc,0x9f,0x7a,0x5b,0x91,0x0c,0x61,0x76,0x0c,0x61,0x57,0x99,0x0a,0x4c,0x33,0x5e,0x34,0x8e,0x3a,0x7b,0xc8,0x22,0x3e,0x09,0xc1,0x0c,0x5e,0x52,0x0c,0x8d,0x61,0xaf,0xf5,0x00,},\"\\x2c\\x64\\x33\\xe9\\xbf\\xbf\\x4c\\xfd\\x4e\\x07\\x1f\\x15\\xce\\x6b\\x12\\x9d\\x78\\x0a\\x4b\\x3d\\xe0\\x14\\xfa\\xc0\\x34\\xe0\\xd4\\x4e\\xf7\\x72\\xe2\\xc8\\xb0\\xd6\\xa3\\x48\\x1d\\x7b\\x3d\\xde\\xb2\\x37\\x63\\x26\\x73\\x55\\x33\\x13\\xde\\xac\\x1e\\xfa\\xfe\\x37\\x02\\xa7\\xa4\\x41\\x1e\\x12\\xbd\\x34\\x1e\\x8d\\x8e\\x96\\xc5\\x9c\\x5e\\x30\\xc3\\x68\\x07\\xa8\\x38\\x5a\\x53\\x8e\\x9b\\x66\\x90\\x7d\\x6a\\x52\\x84\\x00\\xbd\\x9f\\x95\\xee\\xdc\\x52\\x16\\xb2\\x8f\\xd7\\x43\\x7d\\x8f\\x4a\\x02\\x9f\\xdb\\xdc\\x7c\\x93\\x8e\\x4e\\xb9\\x81\\x2f\\xec\\x05\\xea\\x69\\x32\\x29\\x62\\x9a\\xce\\x6a\\xcc\\x7a\\xf6\\xba\\x4c\\x23\\x8e\\x77\\x22\\xf3\\x12\\xf7\\x89\\x6b\\x00\\x49\\x22\\xf7\\x06\\x7e\\xde\\x10\\x6f\\x8e\\x70\\x15\\x4d\\x78\\x3f\\xb4\\x12\\x91\\xf3\\xc7\\xe2\\xe4\\x82\\x60\\x45\\xb5\\x74\\x1b\\xcb\\x4a\\x88\\x38\\xf8\\x7a\\x32\\xe0\\x04\\x97\\x04\\xe9\\xb5\\x32\\x34\\xc2\\x24\\xff\\x89\\x8a\\x75\\x6e\\x52\\x91\\x34\\xc1\\xa9\\xbf\\x50\\xfd\\x02\\x98\\x19\\xb2\\x23\\x8b\\x60\\xb2\\xae\\xc1\\x12\\x8f\\x34\\xd2\\x1f\\x9d\\x66\\x98\\x3b\\xed\\x39\\x86\\x59\\xd8\\x08\\xb6\\x7a\\x2e\\x50\\x1b\\x5a\\x1f\\x25\\xf7\\x1f\\x0f\\x0c\\x1e\\xb2\\xfe\\xa0\\xab\\x42\\xd8\\x2f\\xf3\\xbc\\x93\\x58\\xbb\\x20\\xc2\\x75\\x20\\xc1\\x44\\xcf\\x21\\x16\\xf4\\xa4\\x9c\\xbc\\x61\\x99\\x4d\\x2d\\x71\\x05\\x46\\x69\\x4c\\x4f\\x60\\x2d\\xc4\\x06\\xe0\\xb0\\xc2\\x7e\\x5f\\x5e\\x64\\x66\\x7e\\x95\\xc2\\xec\\x9d\\xf2\\xd6\\x52\\x9c\\xf5\\x36\\x22\\xea\\x10\\xb9\\x56\\xb3\\x45\\xec\\x55\\xb6\\xc3\\x9a\\x1e\\x6e\\xd8\\x8a\\xe6\\x6e\\x5b\\x45\\x71\\x79\\x42\\x5d\\x1a\\x84\\x90\\x37\\xb0\\x7c\\x46\\xcf\\x5f\\x36\\x33\\x01\\x09\\x58\\x37\\xce\\x81\\x1b\\xff\\x49\\x60\\xbf\\x9c\\xbd\\x15\\x20\\x1c\\x1b\\x67\\x40\\xbd\\x70\\x10\\x21\\x40\\x74\\x4c\\x33\\x27\\xac\\xa9\\xd6\\xd6\\xd1\\x54\\x93\\x67\\x98\\xac\\x38\\x1f\\xa6\\x39\\xdb\\x43\\x6e\\xe8\\x16\\x56\\x67\\xd5\\x38\\xa6\\xc7\\x4a\\x23\\x3c\\x12\\x4b\\xf6\\x04\\xfd\\xad\\x51\\x98\\x4c\\x41\\x70\\xb8\\x20\\x0d\\x2d\\xf7\\x3c\\x29\\xbb\\x1e\\x37\\x6a\\xff\\xc3\\x14\\xdd\\xe3\\xe8\\x6a\\xf9\\xd2\\xc2\\xe6\\xc3\\xa6\\x52\\x4d\\x32\\x1b\\xce\\x93\\xe2\\x1f\\xc9\\x65\\x56\\x4f\\xaf\\x77\\xd0\\xcd\\x1a\\xcc\\xb4\\xd7\\x62\\x94\\x85\\xf5\\x64\\xc7\\x9f\\x4d\\x8a\\x2f\\xde\\xfb\\x46\\x54\\x54\\x02\\x8c\\x6d\\xd1\\x42\\x80\\x42\\x80\\x53\\x70\\x74\\x33\\x63\\xbb\\x18\\x47\\x6a\\x3f\\x23\\x20\\xdb\\x25\\x89\\xc7\\x21\\x33\\xcf\\x5e\\x29\\xda\\xfb\\x7d\\x07\\xaa\\x69\\xa9\\xb5\\x81\\xba\\xb5\\xa8\\x3f\\x40\\x3e\\xef\\x91\\x7a\\xfa\\x14\\xb7\\x64\\xc3\\x9a\\x13\\xc0\\xc5\\xea\\x70\\x19\\xd2\\xfd\\xfb\\xd7\\xf3\\xf7\\xd4\\x0e\\xb6\\x3b\\x2a\\x08\\x4d\\xa9\\x21\\x89\\x5f\\xe4\\x8f\\x4f\\xd5\\x94\\x01\\x7f\\x82\\x56\\x9b\\x46\\x7a\\xb9\\x01\\x16\\x9e\\xb5\\xda\\x9c\\x40\\x17\\x1d\\x5f\"},\n{{0xb7,0x27,0x98,0xb8,0x11,0xe2,0x33,0x84,0x31,0x25,0x6d,0x24,0x80,0xfe,0x7a,0x36,0x63,0xac,0xec,0xbb,0xe6,0xe6,0xc1,0xb9,0x19,0x1e,0x9d,0x9a,0x22,0x44,0x79,0x40,},{0xce,0x49,0x1d,0xaa,0xd2,0x96,0xb5,0x57,0x27,0xb0,0x95,0x13,0xdf,0x02,0xba,0x59,0x28,0xa3,0x71,0x73,0x7c,0xd3,0x58,0x41,0xe5,0xf7,0x35,0xac,0xab,0x7c,0x5d,0xf8,},{0xdc,0xfc,0x6f,0xd4,0x77,0x99,0xfe,0xc7,0x72,0xc2,0x09,0x9b,0x3c,0x64,0x37,0x24,0x6c,0x3a,0xd0,0x72,0x29,0xfc,0x74,0x0e,0x05,0x31,0x1a,0x20,0x6b,0x18,0xb0,0x2e,0xcd,0xb0,0x26,0xc9,0x26,0xf4,0x9c,0x65,0x52,0xe3,0x47,0xfd,0x35,0xdf,0xde,0x06,0xcb,0x63,0x9a,0x79,0x7c,0x50,0x61,0x2f,0x98,0xe2,0x47,0x8a,0x92,0xaa,0xf6,0x09,},\"\\xa5\\xd4\\x62\\x98\\xb0\\x79\\x06\\x10\\xae\\xdc\\x09\\x70\\xfe\\xa2\\xa7\\x07\\x50\\x81\\x84\\x72\\x66\\xf2\\x2f\\x12\\x47\\x8b\\x93\\xd7\\xe6\\x74\\xc6\\xc5\\x17\\xf3\\xc1\\x4e\\xd0\\x61\\x26\\x9d\\x17\\x0a\\xc3\\x1e\\x2a\\x64\\xf9\\x75\\x4a\\x56\\x5b\\xac\\x1d\\xd9\\x75\\x73\\x22\\xc1\\x11\\x32\\xe7\\xbb\\xee\\x5f\\x32\\x81\\x8e\\x0e\\x30\\x63\\xab\\x64\\xe5\\x52\\xd0\\x9b\\x0f\\xd1\\x75\\x76\\x39\\xb9\\xb9\\xd1\\xc7\\x70\\x01\\x6b\\x67\\x74\\x65\\x87\\x2b\\x66\\x9d\\xd4\\x8b\\xe0\\x38\\x66\\x57\\x51\\x67\\x4d\\xd2\\xf4\\x0a\\x96\\x6a\\x26\\x74\\x8f\\xd3\\xe5\\xdb\\xfd\\x92\\x26\\x5e\\xb9\\x36\\xf5\\x5b\\x09\\x42\\x86\\xc0\\x10\\x62\\x99\\x04\\x34\\x7c\\xb4\\xc5\\x26\\xe3\\x77\\x47\\x0a\\xa9\\x6e\\x81\\x69\\xa6\\xf2\\x11\\x63\\x38\\x07\\xa5\\x00\\x30\\xe7\\xff\\x68\\xe3\\x89\\x11\\xb3\\x55\\x5e\\x72\\x8e\\xd8\\x59\\x0b\\x2d\\xc4\\x5f\\xea\\x69\\x94\\x5c\\xc0\\xc9\\xa3\\xd3\\xe6\\xc9\\x54\\xb3\\xe8\\x01\\x06\\xa5\\xc9\\x1d\\x3d\\x22\\xe8\\x9e\\x8c\\x0e\\x1d\\xe9\\x02\\x05\\x8e\\x9c\\xd0\\xf8\\xce\\x80\\x6e\\xac\\x4f\\x89\\x3e\\xe0\\x42\\x99\\x00\\xfb\\x54\\x87\\xb8\\xfd\\x36\\xdb\\xdc\\xb3\\x4f\\x2d\\x54\\xfc\\x6c\\xc7\\x4a\\x92\\x39\\x51\\xb8\\x63\\xda\\x70\\xf1\\xb6\\x92\\xbf\\x04\\x38\\x48\\x43\\x66\\xcd\\x85\\xee\\xb8\\x80\\xb2\\x79\\xf8\\xfc\\xa9\\xd3\\x24\\x2c\\x55\\x83\\x30\\xf1\\xca\\x57\\xc6\\xa5\\x86\\x08\\xcd\\xbc\\x07\\x73\\xe1\\x60\\x82\\xbc\\xa9\\x64\\xdd\\xc4\\x03\\x47\\xda\\x8a\\x36\\xb2\\xa9\\x32\\x8c\\x2f\\x46\\x60\\x9e\\x09\\x2f\\xd6\\x4b\\x41\\x34\\xee\\xe1\\xd0\\x99\\x81\\x3e\\x12\\x46\\x48\\x9e\\x8e\\xe5\\xb1\\x9b\\x3d\\x3b\\x89\\x1c\\x28\\xf3\\x0b\\x38\\xb6\\xa2\\x8e\\xc1\\xd3\\xe9\\xb0\\x05\\xde\\xc9\\xc6\\x3f\\x8b\\x98\\x13\\xbc\\x1d\\xe4\\xaa\\xf9\\x95\\xf1\\x77\\x9d\\xde\\xd1\\x5c\\x7a\\x43\\x0d\\x70\\xca\\x46\\xe7\\xca\\xfd\\x4e\\x9a\\x54\\x38\\x04\\x44\\x6a\\xb0\\x80\\x7d\\x64\\xf2\\x55\\xe2\\x01\\xef\\x42\\x8a\\x47\\x4d\\xae\\x8a\\x0a\\x75\\x02\\x1b\\x62\\xad\\x39\\x88\\xff\\xb8\\x1c\\xd8\\x22\\x1b\\x24\\x30\\x85\\xa0\\xad\\x04\\x6f\\xdc\\x16\\xc6\\x7f\\x17\\xb9\\xf8\\x18\\x20\\x09\\x59\\x53\\xa5\\xb9\\x8a\\xcb\\xdf\\x93\\xeb\\xcf\\x80\\xbc\\x9c\\x99\\xaf\\x5f\\xbf\\xfa\\xcb\\x61\\xa9\\x25\\x1c\\x5a\\xaf\\xdb\\x22\\xb1\\x12\\x9b\\xfc\\x60\\xc9\\x8e\\x0f\\x17\\x52\\x63\\xbd\\xf9\\x3d\\xc9\\xa0\\x8b\\x8e\\xfc\\x2e\\x8c\\xda\\xf0\\xf8\\x3d\\x6c\\x49\\xec\\x90\\x16\\x45\\xea\\xc5\\xa4\\xff\\x63\\x38\\x5a\\x6f\\x1a\\xf2\\x07\\x18\\x97\\x66\\x2a\\x37\\x22\\x19\\xc9\\x30\\x1f\\x54\\x5a\\x2e\\xbb\\x8f\\x59\\x17\\xdb\\x7f\\x29\\xca\\x13\\xfc\\x86\\x1a\\xf3\\x8d\\x90\\xc3\\x5c\\x03\\xac\\x91\\x84\\xc1\\x22\\xe5\\x7b\\x05\\x7c\\xde\\x42\\x6f\\xd7\\x6d\\xca\\x79\\xe2\\x5e\\x64\\xdb\\xb4\\x1c\\x84\\x14\\xa0\\x45\\x0d\\xa4\\x90\\x5b\\x90\\x2a\\xe9\\x8d\\x2d\\xa4\\xba\\x79\\x28\\x01\"},\n{{0x1f,0xe7,0x32,0x7e,0xa9,0x07,0xd3,0xff,0x17,0x9b,0x11,0x78,0x11,0xd3,0x01,0x93,0xfc,0xba,0x4c,0x34,0x7b,0x90,0x65,0x7f,0xee,0xd9,0x8d,0xee,0xec,0xda,0x9a,0xc9,},{0xee,0xf3,0x01,0xb1,0x6f,0xd7,0xbf,0x3c,0x7b,0x64,0x0b,0xf5,0xee,0x87,0x00,0xac,0x5a,0x87,0x16,0x9e,0xab,0x5f,0x56,0x01,0x5b,0x3f,0x49,0x9d,0x95,0x5e,0x07,0xeb,},{0x9c,0x7f,0xdb,0x53,0xfd,0x60,0x6b,0xc7,0xc9,0xc2,0x23,0xfe,0x94,0x31,0xe1,0xad,0x00,0x95,0x46,0xd0,0x00,0x98,0x81,0x2a,0x49,0x51,0x97,0xf2,0x54,0x1e,0x87,0xf8,0xd6,0xf5,0xda,0x22,0xec,0xef,0xcb,0xb7,0xda,0x56,0x66,0x2a,0x73,0x09,0xd1,0x0a,0x6c,0x4a,0x4f,0x7f,0x29,0x92,0x78,0xd5,0x1b,0xbd,0x11,0xe0,0xcc,0x1b,0x87,0x09,},\"\\x19\\xa8\\x32\\xf2\\x6f\\xbb\\x02\\x39\\xf0\\xd9\\xd2\\x6a\\x2e\\xbd\\xed\\x24\\x03\\xc2\\xa4\\x06\\xdd\\x1f\\x68\\x31\\x8d\\x67\\x7a\\xfa\\x64\\xf3\\x50\\x43\\x31\\x6a\\x5e\\xfd\\x72\\x97\\x83\\xc7\\xf9\\xd1\\x8c\\x09\\x82\\x46\\x14\\x65\\x20\\x91\\x88\\x6c\\xc9\\x54\\xbe\\x9f\\x93\\x12\\xd4\\x58\\x6b\\xf3\\x6f\\x30\\x35\\xac\\x70\\x34\\x38\\xb0\\xcf\\xe3\\xde\\xc5\\x07\\x78\\x13\\xc7\\x10\\xd1\\x44\\x75\\x61\\xab\\x61\\x57\\xbc\\x7a\\xd5\\xea\\xb5\\xb0\\xc0\\xaf\\xdc\\xc9\\xdb\\x77\\xe6\\x6f\\xa8\\x07\\x13\\x66\\x82\\x9c\\x50\\x10\\x96\\xc3\\xd3\\xa9\\x38\\x21\\x8a\\x6e\\x42\\x07\\x10\\x9d\\x1e\\xb8\\x1f\\x7d\\x88\\xbd\\x6f\\xbb\\x2a\\xef\\xb1\\xad\\xef\\x35\\x94\\xaa\\xe5\\x7c\\x46\\xb7\\xb9\\x84\\xdb\\x94\\x68\\xcd\\x96\\x2c\\x61\\x84\\xfb\\x97\\x6f\\x0e\\x2a\\xa8\\x41\\x52\\xde\\xb1\\xc7\\x6a\\xea\\x75\\xae\\x48\\x84\\x42\\x94\\x3a\\x80\\xba\\x7d\\x98\\xa2\\x8c\\xb8\\x64\\xb5\\xe8\\x7c\\xdb\\x28\\x4a\\xd6\\xe8\\xd7\\xaa\\xdc\\x6b\\x75\\xd6\\x9d\\x3b\\xd3\\x45\\x78\\x3b\\x3e\\xbb\\x67\\x6f\\xf9\\x5d\\x7b\\x41\\x91\\xe5\\x99\\x85\\x1c\\x96\\x28\\x83\\x5c\\x7c\\x01\\x19\\x7e\\x7c\\x8f\\x86\\xf9\\xc8\\xfb\\x49\\xfe\\x3e\\x28\\x45\\x8b\\xa9\\xb0\\x23\\x62\\x19\\xbd\\x46\\xc2\\x8d\\xf6\\x53\\x24\\x96\\x99\\x4a\\xc9\\xba\\x73\\x3c\\x01\\x05\\xa0\\x2a\\x26\\x9a\\x2b\\xe8\\xb7\\xcb\\x40\\x07\\x4b\\x88\\x16\\x02\\xef\\x92\\x47\\x05\\x2d\\xe9\\xd6\\x37\\x08\\x91\\x88\\xbd\\x4c\\x18\\x5c\\xca\\xe2\\x58\\xa2\\xae\\x98\\x56\\xa2\\xcb\\xf8\\x45\\x11\\x17\\x68\\x3c\\xe3\\x41\\xf8\\x09\\x6e\\x1d\\x91\\xe8\\x74\\xc5\\xcb\\x8a\\x4e\\x09\\x39\\xeb\\x77\\x37\\x3a\\x9a\\x0e\\xb7\\x91\\x64\\x5b\\x8f\\x54\\x60\\x47\\x2d\\x66\\x9d\\x80\\x14\\x68\\x1a\\x5e\\x77\\x87\\x06\\xcb\\x55\\x66\\xbb\\xd4\\x72\\x7d\\x17\\x16\\xb2\\x3c\\x62\\x0d\\x22\\x8b\\x5d\\x4d\\xc2\\xb3\\x52\\xb4\\x23\\x93\\x1f\\x8a\\x7e\\x8f\\xb5\\x9e\\xda\\xd8\\xae\\x42\\x45\\x87\\x29\\x86\\x1a\\x98\\xe0\\xc8\\x50\\xa7\\x7e\\xd6\\x55\\xe7\\xfc\\xfe\\x4f\\xe3\\x6f\\x97\\x72\\xdf\\x1a\\xc3\\xc6\\x43\\xad\\x31\\xdb\\x56\\x30\\xd5\\x71\\xdf\\x9f\\xcc\\x9c\\x50\\xde\\x76\\x22\\x10\\x84\\x11\\x96\\x2b\\xbf\\x72\\xde\\xfb\\xf4\\x9e\\x99\\x70\\x59\\xc7\\x31\\x1b\\xd9\\xdd\\xd5\\xb3\\x38\\xa9\\x85\\x19\\x38\\xd3\\x7e\\x7a\\x26\\x21\\x08\\xa2\\x91\\xe2\\x01\\x68\\x03\\xbb\\xef\\xf4\\xf9\\xc7\\x76\\x12\\x5c\\xeb\\x7e\\x72\\x72\\xb5\\x1c\\x7c\\x33\\x46\\x1d\\x80\\x89\\xf8\\x40\\x8d\\x8d\\xda\\x92\\x50\\x6d\\x50\\x02\\x08\\x4d\\x4f\\x41\\x4d\\x8a\\x4d\\x28\\xd3\\x69\\x4c\\x88\\x63\\x0e\\x31\\x80\\x19\\x90\\xd9\\x52\\x71\\xce\\xf4\\x7a\\xa5\\xc2\\x63\\xf9\\x7b\\x7d\\xac\\xa1\\x78\\x87\\x01\\x43\\x63\\x29\\xb5\\xbf\\xaf\\x72\\x65\\x3c\\x16\\x6d\\xb0\\x87\\x70\\x81\\x30\\xc5\\xc0\\xd7\\x8c\\xc4\\xe9\\x06\\x4f\\x86\\x06\\x80\\x27\\x1a\\xfe\\x4c\\x40\\x98\\x53\\xc2\\xfa\\xd6\\x75\"},\n{{0x5f,0x9d,0xcd,0x93,0xfb,0x14,0x06,0x10,0xb0,0xe2,0x11,0xb3,0x9a,0xdd,0xb1,0xeb,0x87,0xba,0x97,0x80,0x48,0x77,0xaf,0xbc,0xc3,0x81,0x38,0x8c,0xad,0x65,0x08,0x45,},{0x18,0x2a,0x23,0x7d,0x87,0x8c,0x58,0x19,0x33,0x33,0x2b,0x41,0x78,0xb6,0x7e,0xc4,0x08,0xb3,0x19,0x4d,0x44,0xe4,0xe6,0x93,0x92,0xef,0x80,0x0b,0x26,0x7c,0x29,0x49,},{0xc1,0x91,0x5e,0x05,0x2b,0x66,0x47,0x97,0xe0,0xd5,0xfa,0xad,0xc7,0x8f,0x2a,0x00,0x9d,0x6f,0xbc,0xfd,0xe0,0x3f,0x3a,0xaa,0xd5,0x9b,0x9f,0x45,0x88,0xe7,0xfc,0x3b,0x21,0x99,0x0c,0x52,0x08,0xd3,0xd7,0x6b,0x4a,0xa9,0x5b,0xd9,0x34,0xe8,0x8d,0x3c,0x98,0xc5,0x91,0x93,0x0a,0x59,0xde,0x2a,0x05,0x67,0x01,0xd9,0xf7,0x57,0x74,0x00,},\"\\xc3\\x8b\\x87\\x4d\\x3f\\xf0\\x10\\xff\\xf1\\xa6\\x61\\x3b\\xfa\\x13\\x42\\x57\\xb2\\x48\\x33\\xcb\\x53\\x6d\\xe3\\xe7\\x49\\x92\\xc3\\xcb\\x01\\xfe\\x3b\\xbd\\xee\\xd9\\x7d\\xc3\\xc4\\x59\\x6f\\xa4\\x40\\x61\\x44\\x2b\\xd3\\x1a\\x9d\\x4a\\xa8\\xc8\\x1e\\x34\\xad\\x98\\x88\\x71\\x82\\x06\\x63\\x55\\x09\\xb1\\x33\\xb1\\xba\\x69\\xcb\\x1a\\xa0\\xe7\\x5c\\x7a\\x18\\x93\\xc0\\x80\\x16\\x1d\\x26\\x15\\x2a\\xce\\xf4\\x0f\\x6e\\xf4\\x21\\x0e\\x95\\x2a\\x49\\x82\\x8b\\x5c\\xdd\\xe8\\x04\\xbc\\xb5\\x36\\xcd\\xc3\\x49\\xa8\\xe8\\x31\\xb4\\xb6\\x9d\\x37\\x85\\xa7\\x6b\\xd9\\xfb\\x27\\x08\\x05\\x65\\x97\\x2d\\x0b\\x8f\\xbd\\x16\\xf3\\xf9\\x60\\xa6\\xbf\\x3b\\xa0\\xc5\\xb9\\xc4\\x04\\x96\\x7e\\xc1\\xaf\\xfe\\x59\\xb8\\xc4\\xec\\xc6\\x50\\xfd\\xde\\x1c\\xb0\\x6b\\x70\\x59\\x5a\\xd4\\xd3\\x25\\xda\\x0f\\xab\\x4c\\x55\\x40\\xa7\\xa8\\xd5\\xeb\\xea\\xcc\\x4e\\x99\\xbd\\x0d\\xc9\\x6b\\xde\\x82\\xf2\\xbd\\x7d\\x95\\x86\\x30\\x84\\x65\\xe5\\x5b\\x1c\\xc3\\x88\\xd7\\x50\\x48\\x6b\\xdd\\x5c\\x72\\x64\\xd5\\x4f\\x56\\x14\\xd4\\x87\\x26\\xd9\\x9e\\x44\\xd7\\x77\\x8d\\x9e\\xd0\\x32\\x39\\x58\\xab\\x98\\x58\\xe2\\xb2\\x5d\\xf2\\xbf\\x99\\x4b\\xa3\\xe6\\x25\\xe2\\x80\\x3b\\x6c\\x69\\x31\\xe7\\xa9\\x92\\x6f\\x1e\\x61\\xed\\x86\\x24\\x03\\xce\\x39\\x2a\\xb8\\x3b\\x7d\\x1b\\x66\\x08\\x5d\\xcc\\x06\\xd8\\x2d\\xbf\\x17\\x6d\\x01\\x6d\\x9f\\x44\\xcd\\xcb\\x50\\x72\\xd0\\x04\\x59\\x1e\\x92\\xd0\\x45\\x9e\\xf0\\x5a\\x51\\xb8\\xf5\\x4b\\xa1\\x72\\x51\\xe1\\x66\\x21\\xeb\\xb7\\x53\\xe5\\xb1\\x59\\x0c\\x02\\xd2\\x1e\\x40\\xf4\\xb7\\x5e\\xee\\x46\\x02\\x86\\x0b\\x97\\x41\\xfb\\xbc\\x0d\\x2e\\x38\\x5b\\x8d\\xac\\xa8\\x3c\\xce\\x68\\xc3\\x4a\\x99\\xbd\\xe6\\xa6\\x0d\\x13\\xba\\x64\\x34\\x7d\\x0a\\x38\\xd6\\x4b\\x2a\\xde\\x25\\x0f\\x38\\x85\\x2c\\x4e\\xda\\x2e\\x2e\\x4f\\x30\\x3c\\x3d\\xe1\\xa8\\xa9\\xd4\\xab\\x33\\x00\\xc9\\xe6\\x36\\x22\\x87\\x9f\\xc8\\x53\\x7f\\xfc\\x63\\xb1\\x85\\x61\\xfa\\x1f\\xff\\x65\\x53\\x12\\x41\\x51\\x5a\\x62\\xbb\\x9b\\x08\\xb8\\x0a\\xf3\\x76\\x67\\xa6\\x01\\xae\\x04\\x17\\x17\\x93\\xcc\\x83\\xb1\\x1a\\xdf\\x9c\\x30\\xca\\x9f\\x4d\\xab\\xc7\\xb4\\x01\\xe1\\x6a\\x18\\x14\\xcf\\xc7\\x50\\x24\\x8c\\xc2\\xf7\\x7e\\x03\\xf9\\xc4\\x33\\x44\\x65\\xff\\x6a\\x2c\\x83\\xcb\\xb5\\x6d\\xb4\\xb7\\x34\\x75\\x10\\x43\\x83\\x2c\\x40\\x00\\x97\\x2e\\xe3\\x23\\x2f\\x92\\x9f\\x23\\x33\\x7e\\xba\\x5e\\x65\\x1e\\x34\\xcb\\xdd\\xfe\\x68\\xba\\x21\\x9b\\x63\\x2e\\x7a\\xcd\\xbd\\x46\\x30\\xa0\\x31\\xbf\\x16\\x89\\xfb\\xbc\\x7f\\xbb\\xb2\\x10\\xdb\\xf2\\x5e\\xe8\\x7e\\x2e\\xf2\\xb3\\xcb\\xaf\\x8d\\x9e\\xbd\\x8f\\xc9\\x2c\\x3a\\x58\\xd3\\xc0\\x5b\\x13\\x85\\xa7\\x6c\\x87\\x79\\x1d\\x7c\\xd3\\x74\\x1b\\x71\\xb6\\xc3\\x29\\xde\\x9a\\x9d\\x75\\x08\\xa0\\xc1\\x56\\xa9\\x52\\x1a\\x90\\x20\\x56\\x30\\x99\\xa8\\x2b\\x87\\x70\\xae\\x9a\\x94\\x4a\\x7e\\x94\"},\n{{0x92,0x5e,0xbe,0x04,0xc6,0xea,0xc4,0x9b,0x26,0x73,0x8d,0x6c,0x13,0x00,0xf3,0x1f,0xd4,0x82,0x84,0x78,0xcb,0xe9,0x7d,0xab,0x18,0xbb,0x88,0x96,0x42,0xe1,0xe1,0x10,},{0xcd,0x72,0x31,0xb6,0xeb,0x74,0xe1,0xfe,0x9f,0x92,0x6f,0x00,0xd8,0xde,0x2c,0x51,0x3d,0x49,0x64,0x05,0x25,0xb0,0x79,0x5c,0xab,0x89,0x3d,0x0c,0x89,0x29,0xe3,0xe0,},{0x2c,0x4d,0x69,0xbe,0xd5,0xad,0x8b,0x95,0x84,0xd8,0x49,0xcf,0x3d,0xf2,0xba,0xc7,0x22,0x82,0xb5,0xf3,0x0d,0xe2,0x66,0xb1,0x4f,0x53,0x3c,0xa9,0x6e,0x95,0x50,0xc4,0xb8,0x54,0xc1,0x54,0xbd,0xc1,0x7a,0xa8,0x80,0xcf,0x00,0x1a,0x64,0x54,0xff,0xaf,0xaa,0x2e,0x50,0x17,0x8d,0xe2,0x12,0x16,0xed,0x12,0x6b,0x63,0xf7,0x7f,0x2d,0x02,},\"\\xe6\\xc0\\xba\\xd2\\x3a\\x92\\xae\\x8b\\x1d\\x85\\x77\\x82\\x88\\x15\\x7a\\xc6\\xc6\\x17\\xc6\\x33\\x63\\x34\\x1d\\x77\\x78\\x70\\x34\\x1b\\xb1\\x0a\\x8d\\x3d\\xfc\\x89\\xbe\\x4f\\x55\\xad\\x4f\\x64\\xe8\\x3b\\xf2\\x49\\x9b\\x69\\xfd\\xf7\\x21\\x74\\xd2\\x84\\x4e\\x6b\\xd2\\x89\\xda\\xaa\\x03\\x5f\\xec\\x5b\\xf7\\xcf\\x45\\x52\\x21\\x19\\xdc\\x7a\\x8c\\x81\\x1d\\x79\\x57\\x8c\\x5b\\xb0\\xf6\\xd3\\x4d\\xb5\\x07\\xad\\x1f\\xb6\\xdb\\xff\\xf9\\x97\\xb7\\x9d\\xac\\xfb\\x3d\\xa5\\x0a\\x41\\x5e\\x35\\x0c\\x99\\x8c\\x0a\\x02\\x80\\x0a\\xa5\\x0f\\xfd\\xfe\\x5f\\x42\\x76\\xd8\\xe6\\xbb\\x82\\xeb\\xf0\\x47\\xfe\\x48\\x71\\x1d\\xaf\\x7a\\x89\\x3b\\xdc\\x75\\x37\\xbd\\xae\\xdf\\x3d\\xcb\\x4d\\xec\\x5d\\x24\\x58\\x68\\x11\\xf5\\x9b\\x25\\xb1\\x9e\\x83\\xca\\x61\\xe5\\x59\\x2f\\xed\\xc0\\x8c\\xa5\\x44\\x73\\xce\\xa2\\xec\\x12\\x1b\\xaa\\x0e\\x77\\xfb\\x2d\\x9d\\x76\\x56\\x57\\xde\\x67\\x98\\x0e\\xd5\\x7f\\x2f\\x17\\x78\\x58\\xb6\\xde\\xcf\\x84\\xff\\x90\\x21\\x2d\\x96\\x47\\xf4\\x1e\\xed\\x9b\\x9d\\x0e\\xa3\\xd8\\xd6\\x21\\xe4\\xbb\\x40\\x41\\xac\\xc5\\x14\\x6e\\x96\\xdf\\xcf\\x14\\xea\\x96\\x2d\\x30\\xc8\\xcc\\xb3\\x9e\\xa2\\xbe\\x95\\x8c\\x9b\\x87\\x74\\x45\\x1b\\xfe\\xb7\\xdd\\xce\\x71\\x6e\\x94\\x92\\x3c\\xc8\\x5f\\xbd\\x3a\\x31\\x30\\x78\\x0e\\x2b\\x3b\\x2b\\xb7\\x6d\\xa5\\x34\\x19\\x12\\xa4\\xe9\\x94\\xca\\xfa\\x19\\xbb\\xa1\\x97\\x32\\xf2\\xea\\x40\\x2d\\x71\\xd3\\xd8\\xa9\\x69\\x67\\x9b\\x9d\\x10\\x42\\x43\\xd9\\x83\\x9c\\x69\\xee\\x9e\\x95\\x5e\\x1c\\x60\\x44\\x97\\x88\\xd1\\xf4\\xf6\\x65\\x1f\\x4b\\xc9\\xb9\\x4d\\x73\\x52\\x2e\\xc0\\xcf\\x72\\xca\\xcf\\xcf\\x19\\xf1\\xf0\\x3a\\xd6\\x23\\x21\\x04\\xb5\\x5c\\xbb\\x8b\\x5b\\xb1\\xe2\\x13\\x44\\x71\\x3d\\x48\\x27\\x42\\xd6\\xab\\xc5\\xa9\\x57\\x17\\x4f\\x62\\x3b\\x84\\x95\\x27\\x2c\\xc1\\xe2\\xb8\\x31\\x5e\\x5c\\x80\\xf9\\x47\\xf5\\x00\\xc8\\x3d\\x85\\x44\\xf7\\xcd\\x4f\\x65\\x34\\x89\\x49\\xef\\x44\\x20\\xd7\\xfc\\x83\\x1f\\xa4\\xae\\x2e\\xe1\\x8d\\xbb\\xa6\\x14\\x92\\x5c\\xe1\\xd7\\x67\\xc1\\x77\\xa6\\x26\\xc4\\x52\\x7a\\x81\\x54\\xb5\\x72\\x92\\x18\\x6b\\x04\\x4c\\xbf\\x92\\x89\\x42\\x53\\xb0\\x0f\\xd9\\x34\\x3f\\x9e\\x69\\x7b\\x14\\x12\\xeb\\xa4\\x35\\x97\\xeb\\x72\\xa6\\x69\\xaa\\xa2\\xd7\\x7e\\xac\\xb9\\x68\\xc2\\x0f\\xe1\\x95\\x05\\xa3\\x80\\x74\\x15\\x86\\x21\\xb6\\x06\\xf7\\x7d\\x97\\xbc\\x6e\\xbe\\x50\\xe7\\x58\\x92\\x93\\xdb\\x27\\xfc\\x7d\\xfe\\x63\\x1a\\x4b\\xee\\x83\\xb2\\x26\\x82\\xa7\\x73\\x28\\xc3\\x6d\\x9d\\x7d\\x1d\\x89\\x1d\\x65\\x21\\x7c\\xc4\\x78\\x64\\xf6\\x80\\xdc\\x8b\\x5f\\xd1\\xa0\\x1a\\x0f\\x7c\\x34\\x43\\x0f\\x77\\x06\\x0b\\x69\\x1a\\x1a\\xd2\\x13\\xd2\\x28\\x68\\xe6\\x1b\\xbd\\x38\\xf4\\x3f\\x0c\\x8b\\x4d\\xa6\\x8a\\x58\\x31\\x86\\x66\\xc0\\x99\\x76\\x61\\x70\\xc2\\xdb\\x76\\x6a\\xaf\\x41\\x7f\\x55\\x6c\\xc9\\xa0\\xa3\\x93\\x4e\\x9f\\xce\\xf1\"},\n{{0x4d,0xd3,0xb4,0x78,0xeb,0xdc,0x59,0x47,0x2b,0xab,0x14,0xa8,0xcd,0xd0,0xc2,0xfd,0xac,0x57,0x23,0xee,0x04,0xdd,0x89,0x17,0xc7,0xcf,0xe7,0xa5,0x36,0x48,0x5c,0x77,},{0x5b,0xcc,0xb3,0x7e,0x68,0xc2,0x34,0xbe,0xad,0x49,0x33,0x7d,0xe2,0x08,0xaf,0xba,0xf6,0x11,0x81,0x1d,0x96,0x58,0x59,0xa0,0x6d,0x31,0x30,0x12,0x47,0xd6,0x6a,0xcf,},{0x57,0x88,0xe7,0x9e,0x84,0x3b,0xde,0x9e,0xf1,0x1a,0x9d,0xfa,0xc9,0x70,0x19,0x6a,0x56,0x7c,0x63,0x08,0xc3,0x48,0xe5,0x17,0x4b,0x38,0x77,0x95,0x04,0x6d,0x59,0x0a,0x47,0x49,0x1f,0xd7,0x1d,0x97,0xae,0xaa,0x78,0xc1,0x61,0x59,0x71,0xb8,0x34,0x90,0xe8,0x59,0x28,0x20,0xf9,0x59,0x2a,0xc7,0x62,0x69,0xb9,0xd2,0xba,0x70,0x29,0x01,},\"\\x1c\\xdb\\xd2\\x85\\x56\\xec\\x44\\xe8\\x70\\x5a\\xfd\\xa9\\x2b\\xd5\\xa5\\x3f\\x95\\xd8\\xfe\\x8b\\x0f\\xfe\\x46\\x33\\x73\\x63\\x33\\x16\\xc5\\x22\\x74\\xc1\\x1e\\xdc\\xd6\\x15\\x51\\xe3\\x19\\x9e\\x49\\x4d\\xff\\x6d\\x90\\x6a\\x73\\x9e\\x7b\\x32\\x43\\x03\\xfc\\x47\\x82\\x7e\\x56\\xde\\xf0\\xbd\\xcc\\x46\\xb8\\x16\\x01\\x7c\\x71\\x23\\x05\\x37\\x02\\x63\\xba\\xbd\\x2c\\x71\\xbe\\x47\\x8f\\x41\\xce\\x30\\xb1\\xdf\\x63\\xbe\\xdd\\x3b\\x2e\\x6a\\x51\\x9c\\x53\\xdf\\x51\\x58\\x52\\xc4\\x13\\x7b\\xc1\\xac\\xa4\\x9b\\xf4\\xc4\\x63\\x1f\\xd6\\x56\\x46\\x57\\xd1\\x1c\\xd8\\x3e\\xa7\\x3c\\xc3\\xd0\\xcf\\x9e\\x3b\\x3c\\x3e\\x7c\\xa9\\x9b\\x4f\\x12\\xa9\\xc9\\xb6\\x7c\\x87\\x98\\x14\\x8e\\x0a\\x0d\\xc1\\xef\\x8b\\xf5\\x86\\x42\\xa1\\x4f\\x97\\xa5\\x72\\x13\\x55\\x14\\xc1\\x0b\\x19\\xaa\\xbe\\xc2\\x5a\\x9c\\x6b\\x35\\xaa\\x40\\x34\\xa5\\x7a\\xae\\x1b\\x6d\\x05\\xbd\\xe2\\xb6\\x33\\x0f\\x25\\x1d\\x78\\xdb\\x09\\x93\\xf0\\xca\\x4c\\x26\\x38\\x6e\\x34\\x89\\xa2\\x09\\x28\\x33\\xb8\\xac\\xbb\\xc4\\xf4\\x91\\x7f\\xd3\\x09\\x3d\\xf5\\x82\\xff\\xf7\\x1e\\xce\\x21\\x9d\\x36\\x72\\x45\\x55\\x82\\x60\\x9c\\x0d\\xb8\\xd9\\x6a\\x70\\xfc\\x8a\\xed\\x67\\x98\\xde\\x54\\xbf\\xb2\\xb3\\xee\\x6c\\x5d\\x32\\x8d\\xb1\\x63\\x59\\x3f\\x58\\x01\\x9f\\x38\\xf3\\x39\\xfd\\x37\\x53\\xf8\\x96\\xa4\\xa2\\xcc\\xa8\\xc1\\x40\\x0a\\x77\\xea\\x39\\x19\\x35\\xf3\\x4e\\x26\\x39\\xc5\\x60\\x86\\x08\\x10\\xbb\\xbe\\x4b\\xe1\\xd1\\x6e\\x01\\x2c\\x11\\x49\\x0a\\xa8\\x4f\\x29\\x64\\xc8\\x77\\xc2\\x93\\xb3\\x00\\xf4\\x3d\\x37\\x9f\\x3e\\xba\\x9a\\xf3\\x91\\xde\\xe5\\x10\\x85\\x6a\\x4d\\xdc\\xf7\\x6e\\x0a\\x0a\\xe0\\x6a\\x6a\\x7c\\x0f\\x9c\\x5e\\x3f\\xa1\\xb8\\x35\\x4f\\xe8\\x97\\x7b\\x4e\\xa3\\xb2\\x06\\x61\\x49\\x1f\\xa4\\x61\\x3b\\xa6\\x2f\\x55\\x6d\\x5d\\x5d\\xa8\\x21\\x3d\\x01\\x21\\xde\\x2c\\x87\\x25\\xdf\\x0a\\xae\\x04\\x8a\\xc8\\x91\\xab\\xbc\\x06\\xbd\\xce\\xf3\\xc3\\xef\\xfd\\xf5\\xa3\\x17\\x49\\x47\\x6f\\x81\\x4d\\xb9\\x45\\x79\\x45\\xf0\\xd9\\x1e\\x14\\x08\\x00\\x56\\xbe\\x92\\x1a\\x16\\xaa\\x96\\x4a\\x92\\x98\\x22\\x1b\\x15\\x75\\x94\\x97\\x3e\\x32\\x96\\x99\\x93\\x31\\x0c\\x87\\x07\\xe1\\x9f\\x31\\x43\\xab\\xc4\\xfd\\xa7\\xc8\\xad\\x01\\x60\\xac\\xf0\\x31\\xab\\xa6\\x52\\x80\\x1a\\xa8\\x1a\\x01\\x6b\\x31\\x37\\x03\\x9e\\x27\\xd6\\x73\\x8d\\x02\\x80\\x0a\\x93\\xa8\\x6f\\x9f\\x55\\x85\\xc5\\x18\\xdf\\xa9\\xe7\\xd8\\xac\\x72\\x7f\\x37\\x43\\x7e\\x56\\xd2\\x78\\x83\\x86\\xe1\\x16\\x53\\xa0\\x4e\\x16\\x51\\x69\\xf9\\x03\\x97\\x2a\\x01\\x48\\x47\\x51\\xe7\\xcb\\x38\\x63\\x25\\x90\\xec\\x80\\xd5\\xfc\\xe4\\x54\\x16\\x01\\xa0\\xe0\\x95\\x78\\x5a\\x9e\\xe8\\xd3\\x59\\xed\\xf2\\x6b\\x99\\x46\\xe7\\x98\\xda\\x59\\x98\\xcb\\xb7\\x36\\xf9\\x4e\\xb7\\x13\\x46\\x3f\\x79\\xf5\\x61\\x75\\x9b\\xbc\\xb4\\xc4\\xac\\x69\\x3c\\xab\\xf2\\xe1\\xe0\\x36\\xb2\\xd0\\xb0\\x87\\x9a\"},\n{{0x07,0x4d,0x92,0x18,0xc1,0x21,0x7e,0x75,0x82,0x3c,0x90,0xe0,0x10,0x48,0x4c,0x2a,0xdb,0x88,0xec,0xcc,0xd2,0xbd,0xf0,0x12,0x0a,0xa3,0xed,0xff,0xcf,0xcb,0xd4,0xbf,},{0x37,0x35,0xad,0x19,0x19,0x03,0x3d,0x16,0x17,0xb8,0x5b,0xda,0x04,0xb1,0x61,0x21,0xda,0x1d,0x86,0x1b,0x40,0x41,0x54,0xfa,0x96,0x1d,0x49,0x46,0xe5,0x5e,0xcd,0x83,},{0xb1,0xf7,0x1c,0x3b,0xd1,0xb6,0xbe,0xc4,0x33,0x37,0xe2,0x6d,0xee,0x65,0x5a,0x8d,0x5f,0x4a,0x8d,0xad,0x84,0xa5,0x11,0x84,0xb7,0x75,0xb6,0x86,0xfa,0xd3,0x1d,0x80,0x29,0xe3,0x87,0x69,0x27,0xf9,0x57,0x6e,0x90,0xc3,0x62,0x48,0x75,0xfc,0x00,0x29,0xa5,0xc1,0x0a,0x8a,0x0a,0xf7,0x5d,0x7a,0x88,0x0c,0x68,0x44,0xa4,0xa8,0x3a,0x00,},\"\\x6b\\x5a\\xa4\\x0e\\x91\\x67\\xbf\\xdb\\x84\\x7d\\xaa\\x7d\\x27\\x86\\xe2\\x8e\\x75\\x33\\xe1\\xd6\\xac\\x53\\xbe\\xb6\\xf6\\x9b\\x59\\x53\\x79\\x5a\\x2b\\xf5\\x9b\\xbf\\x7d\\x14\\x19\\x26\\x96\\x8f\\x50\\x96\\x9b\\xad\\x74\\x2a\\x4f\\xb5\\x79\\xd3\\x25\\x0f\\xb1\\xbe\\x4c\\x57\\xeb\\xf4\\xf9\\x11\\x2c\\x70\\xcd\\x9f\\x72\\xa0\\x0d\\xb1\\xc8\\x89\\x6f\\xe2\\xb5\\xbd\\xa7\\xc7\\x03\\x0f\\x49\\x7c\\x0b\\x00\\x1e\\xa2\\x5b\\xa0\\xd4\\x47\\xf0\\x8c\\x36\\xdb\\x8b\\x90\\x7c\\x2f\\x2a\\xbb\\xbb\\x62\\x0d\\x3e\\x8a\\x2c\\x66\\xe4\\x17\\x12\\x85\\xad\\xca\\xad\\xd1\\xc1\\x4f\\xe2\\x39\\xbc\\x59\\x5f\\x09\\x83\\x96\\xaa\\x87\\x80\\xff\\xb8\\x0f\\xe1\\x44\\x6a\\x07\\x00\\x1e\\xc2\\x34\\xd8\\x2a\\xbd\\xcd\\x81\\x00\\x79\\x39\\x15\\xb0\\xb3\\xf8\\x0d\\x84\\xe2\\x0e\\x51\\xea\\xbc\\x79\\x78\\x06\\xf3\\xbe\\x81\\x08\\xa4\\xf4\\x37\\x55\\x0b\\x06\\x69\\x40\\x50\\xa8\\x29\\x31\\xac\\x40\\xc0\\xa4\\x89\\x77\\xed\\xf6\\xce\\xd2\\x42\\x8d\\x7c\\xfe\\xa8\\x20\\x55\\x06\\xde\\x86\\x40\\x80\\x65\\xd1\\xa1\\x98\\x70\\xfa\\x33\\xa7\\x08\\x10\\x37\\xb3\\xee\\x44\\x91\\xb6\\xe7\\xf3\\xd1\\x0b\\x14\\xa3\\x0c\\x20\\x91\\x59\\xa1\\xc8\\x12\\x31\\xa3\\x5f\\x03\\x65\\xb4\\x7d\\x3e\\x0d\\xa0\\x4a\\x32\\xc9\\x5d\\x98\\x33\\x3c\\x44\\xf5\\x72\\xcd\\xaa\\xa9\\x05\\xd0\\x69\\x19\\x7f\\x6e\\x86\\x1b\\x5d\\xfc\\xdf\\xb9\\xdb\\x6c\\x7b\\x0d\\x0c\\xb0\\x0f\\x37\\xc9\\x16\\xa1\\xc4\\xc0\\xb8\\x98\\x5b\\x09\\xf3\\x34\\x09\\x5e\\x12\\x83\\xed\\xfd\\xd4\\xe6\\x2a\\x29\\x41\\x09\\x9a\\x2b\\x69\\x36\\x96\\x60\\x4d\\x99\\x43\\x11\\xe3\\xd5\\xf6\\x10\\x66\\x83\\xe1\\xd7\\xa1\\xc7\\xe5\\x3d\\xf7\\xb7\\x90\\x94\\x7a\\x9a\\x80\\x1a\\x0c\\xcd\\x48\\x43\\x95\\xf6\\xcb\\xfd\\x9c\\xa4\\xd9\\x80\\x4f\\x18\\xd5\\x2b\\xb0\\xf9\\x46\\xd1\\xa8\\x9f\\x97\\xa6\\xfb\\x06\\x80\\xa8\\xc4\\xc0\\x57\\xb6\\x06\\x2b\\x2b\\x9d\\xe7\\xc0\\x37\\x48\\x79\\xb8\\xa6\\xa6\\xd2\\xc1\\x0a\\xef\\x78\\x05\\x08\\xeb\\x28\\xbb\\x56\\x9a\\x08\\x35\\x09\\x44\\xc8\\x2f\\x6e\\xf2\\x8d\\xb2\\x30\\x4d\\xb6\\x97\\xc3\\xae\\x1a\\xf4\\x3a\\x50\\x0b\\x0b\\x97\\x48\\x03\\xe9\\xf4\\x6e\\xa2\\xa0\\x2e\\x85\\xed\\x27\\xdd\\xa6\\x16\\xd2\\x4d\\x6d\\xb3\\xcc\\x4f\\x5a\\xed\\x82\\x40\\xb1\\xae\\xa3\\xdc\\xf6\\x9d\\xee\\x5f\\x14\\xf9\\x5e\\x6e\\x72\\x98\\x7b\\xbe\\x61\\x89\\xbc\\x20\\x45\\xf0\\xd7\\x83\\xa7\\xb4\\x7b\\xfc\\x19\\x83\\x0b\\xc7\\xf4\\xe7\\x98\\xab\\xe9\\x02\\x45\\xfb\\xd4\\x3f\\x37\\xc3\\xf0\\x36\\xd1\\xcb\\xf1\\xe7\\x3d\\xcb\\x1d\\x9d\\xaa\\x87\\x37\\x9b\\x11\\x06\\x97\\x34\\x81\\xa2\\x15\\xc1\\xf4\\xf4\\x6c\\x16\\x03\\xa5\\xd5\\xcd\\x97\\xb7\\x07\\x6f\\x1f\\x5d\\xc7\\x89\\xaa\\x6a\\x71\\xe7\\x2e\\xf5\\x4e\\xd3\\x28\\xa4\\xab\\x64\\x34\\x05\\x39\\xff\\xd1\\x64\\xd0\\xec\\x64\\x5f\\x32\\x2d\\x1b\\xc3\\x71\\x12\\xdc\\x08\\xd8\\xc8\\x07\\x9d\\x19\\xd3\\x7a\\xbb\\x23\\x53\\xf4\\x8b\\x5c\\x49\\x2f\\x80\\x6e\\xd2\"},\n{{0xd2,0xea,0x2d,0xff,0x7a,0xf0,0xba,0x2a,0x6b,0xed,0x7f,0x6c,0xc6,0x8c,0x0d,0xf6,0x64,0xa6,0xb1,0x0c,0xe8,0x01,0xc4,0x2e,0xd5,0xbb,0xe6,0x17,0xbc,0xc8,0xb8,0x4a,},{0xab,0x44,0x70,0x63,0x44,0x02,0x6e,0xd3,0x5e,0x21,0x98,0x29,0x64,0xf7,0xb4,0xdb,0xbb,0xe2,0x07,0xfd,0x27,0xc4,0x67,0x99,0x70,0x1c,0x19,0xa4,0xd8,0x8d,0x1d,0x72,},{0x9a,0xbd,0xb9,0xdd,0x2a,0xb7,0x7b,0x6f,0x5e,0x1b,0x91,0xba,0x0b,0x61,0x3f,0x5f,0x36,0x0e,0xfb,0x50,0x0d,0x3f,0xe9,0x92,0x90,0xef,0x7c,0xa1,0x4b,0xd2,0xb3,0x30,0xf4,0x05,0xa4,0xf7,0xdc,0xda,0xef,0x49,0x23,0xd3,0x11,0x1d,0x40,0xbf,0x03,0x20,0x35,0x33,0x86,0xf6,0x34,0xb4,0x0d,0xe6,0xf0,0x4d,0xe9,0x19,0x0a,0xd5,0x1c,0x08,},\"\\x03\\xab\\x5d\\xae\\xbc\\x6e\\x70\\xd3\\x52\\x97\\x79\\x32\\xa0\\x31\\x07\\x87\\x9b\\xd5\\x5d\\xaf\\xd0\\xc6\\xba\\x7a\\xd9\\x69\\x7a\\x17\\xb1\\x27\\xb3\\xa7\\x4a\\x3e\\xae\\xba\\xbd\\x0f\\x8e\\xee\\xbf\\xc0\\x48\\x3d\\x63\\xfe\\xdd\\xe5\\x2d\\xeb\\x46\\xa3\\x75\\x24\\x49\\xc9\\xc4\\x49\\x5c\\x51\\xa1\\xc9\\x1f\\x57\\xe3\\xad\\x2e\\x6d\\x01\\xa1\\x3d\\x0c\\x47\\x0c\\x52\\x91\\xb8\\xe9\\x12\\x28\\x83\\x40\\x97\\x0f\\xbb\\x85\\x78\\x7b\\x8b\\x37\\x6d\\x72\\x17\\x52\\x50\\xe8\\xcd\\x90\\xc0\\x78\\x88\\xbf\\xef\\x5e\\xbf\\x50\\x86\\xc8\\xff\\x2a\\xbc\\xdd\\x12\\xd2\\x14\\xb9\\xc4\\x5d\\x12\\x08\\x73\\xb4\\x60\\x2e\\x57\\xa6\\xaa\\xb0\\xb8\\x28\\xd1\\x08\\x4d\\xff\\xaa\\x36\\x51\\xee\\x35\\x66\\x26\\x95\\xb7\\xf3\\x43\\x3f\\x4a\\xb5\\x30\\xc2\\x9a\\xc6\\xcc\\x5b\\xb4\\x3e\\xcc\\xd1\\xb6\\x89\\x8b\\x9e\\xf7\\xae\\xc6\\xd5\\xae\\xc6\\x8d\\x5c\\x11\\x14\\xbb\\x5d\\xf7\\x82\\x09\\x66\\x59\\x4c\\x99\\x4d\\x64\\x08\\x91\\xb8\\xf2\\xdc\\x5d\\x25\\x63\\x8d\\xe4\\x35\\x49\\xd8\\x6d\\x34\\x30\\x6f\\xf3\\xf5\\x74\\x57\\x51\\x16\\x40\\x5b\\x9e\\x8e\\x28\\x6e\\xe0\\xcd\\x97\\x8a\\x76\\x00\\x2c\\x44\\x35\\xfe\\xaa\\xc6\\xe8\\x4e\\xae\\x16\\x54\\xf3\\x39\\xa5\\x67\\xd8\\xd0\\x4f\\xcf\\xa3\\xeb\\x6a\\x04\\xb9\\xad\\xc6\\x66\\x02\\x13\\x00\\xe9\\xee\\x59\\x72\\xb3\\xdf\\x5d\\x4d\\x0d\\xd4\\xbf\\x79\\x21\\xdc\\x98\\xde\\x82\\xce\\xf2\\xd1\\xb1\\xd6\\x1b\\x79\\x7f\\xc9\\x96\\x8e\\x11\\x84\\x84\\xc4\\x13\\x42\\x41\\x6d\\xdc\\x6a\\xdc\\x4e\\xe5\\xd6\\x87\\xd9\\x4a\\x40\\xce\\x57\\x2f\\x42\\xa2\\x04\\x86\\x68\\xc1\\x75\\xcf\\x7b\\x1f\\x24\\xc4\\xef\\xd0\\x20\\x55\\x4f\\xc6\\xf6\\x42\\xe1\\x4a\\x57\\xba\\xec\\x23\\xe9\\x5c\\x25\\x14\\x30\\x6d\\x0a\\x6d\\x33\\x64\\x88\\x41\\x49\\x7e\\xac\\x48\\xea\\xbd\\x96\\xd0\\x47\\x31\\xba\\xb0\\x8b\\xf5\\xea\\x9d\\x43\\xe0\\xcf\\x9a\\x37\\xfa\\xaf\\xa7\\x32\\x86\\x9d\\x68\\xe7\\xd5\\xfe\\x69\\x54\\xf8\\xa3\\x19\\xef\\x55\\xda\\x1e\\x17\\x8e\\x43\\xe8\\x4a\\x3b\\x9a\\xa3\\xad\\x00\\xc2\\x9b\\x1d\\x16\\x11\\x63\\xdf\\x4b\\x79\\xf2\\x88\\xe9\\x39\\x1d\\x70\\xa2\\xf8\\x81\\x3d\\x66\\x62\\x2e\\x8a\\xc3\\x33\\xfa\\x6a\\xa5\\x31\\x1e\\xab\\xec\\x38\\x3b\\xa4\\xcc\\x12\\x28\\x15\\xde\\x00\\x88\\x77\\xef\\xbe\\x6e\\x12\\xc3\\x22\\xc9\\x75\\x43\\x4a\\xfa\\xd1\\x73\\xeb\\xe2\\x42\\x03\\xd9\\x16\\xd5\\x75\\x78\\xbd\\x2b\\xca\\xcc\\x78\\xf6\\xe2\\x56\\x45\\x13\\xf8\\xd1\\x13\\xa8\\x33\\xc2\\xc2\\x26\\xeb\\x97\\xba\\x2e\\x23\\x36\\x1a\\x5d\\x02\\x66\\x4a\\xb3\\x77\\xf9\\x64\\xc4\\x30\\x0b\\xe2\\xd7\\x7b\\x62\\xd9\\x24\\x08\\x23\\xa0\\x98\\x84\\xdf\\x30\\x7e\\xff\\x3b\\xe5\\x66\\x4d\\x72\\xd1\\x1a\\xd5\\x13\\xe1\\xbc\\x56\\x10\\xdb\\xfd\\x10\\x09\\xdb\\x39\\xf0\\xcb\\xfe\\x47\\x05\\x55\\xec\\x1b\\x56\\xb8\\x71\\x67\\x07\\x93\\xd3\\xb7\\x04\\xfb\\x06\\xee\\x95\\x0b\\x1a\\xd2\\xa4\\xd7\\x29\\x7c\\xa5\\x8b\\xba\\xd8\\x10\\xc3\\xfa\\xd4\"},\n{{0x7a,0x60,0xcd,0xf1,0x87,0x04,0x60,0xde,0x8a,0xe7,0x78,0x11,0x76,0xd5,0x12,0x7e,0x71,0x20,0x7f,0xaf,0x2f,0x21,0x0b,0xd4,0xdc,0x54,0x73,0x85,0xb6,0x67,0xf2,0xf2,},{0xea,0xd6,0x7a,0x9c,0xf3,0x4d,0x0f,0xf1,0x4e,0x79,0xaf,0xa4,0x6f,0x2d,0xc9,0x96,0xe9,0xac,0x0e,0x3e,0x07,0x63,0x22,0xfb,0xb4,0x00,0x97,0x67,0xb1,0x33,0xf0,0x1b,},{0xb2,0xe0,0x81,0x42,0xbd,0xd6,0x2b,0x78,0x65,0x92,0xc0,0x91,0xf5,0xfe,0x6a,0x9b,0x7f,0x30,0xce,0x13,0x4c,0x3b,0x23,0x6f,0xbc,0x6d,0xfe,0x67,0x34,0xf8,0x82,0x70,0xac,0x58,0xf6,0xd7,0x4b,0x4f,0xd9,0x9c,0x22,0x45,0x1c,0xa4,0x65,0xa4,0x2c,0x00,0x6d,0xb2,0x5a,0xf2,0x15,0xed,0x24,0x1a,0xf1,0x18,0x96,0x27,0xc6,0x05,0x0f,0x00,},\"\\x9d\\xc0\\x23\\xa5\\x25\\xd0\\x1b\\xa3\\x51\\x37\\x98\\xb7\\x38\\xc7\\x91\\x62\\x92\\x6e\\xbc\\xcc\\x0a\\xdf\\x1e\\x57\\xac\\x47\\xc2\\x0d\\xea\\x6c\\xe1\\x37\\x5c\\x3d\\x2a\\xaa\\x17\\x33\\xb7\\xf0\\xc3\\xbd\\x94\\x5c\\x33\\x5f\\xf3\\x57\\x61\\x12\\xbb\\xdc\\x10\\xb6\\x78\\x3b\\xa6\\x54\\xe8\\xc6\\x10\\x47\\xf2\\x77\\x3a\\xa2\\x29\\xbf\\x84\\x69\\x22\\xa8\\x9c\\x6a\\x73\\xd5\\xf1\\x05\\x1e\\x8d\\x96\\xed\\x36\\xd7\\xd6\\x74\\x7e\\x06\\x3a\\x7a\\xc6\\x02\\xf1\\x9f\\xc5\\x2e\\x02\\x1a\\x4b\\xbc\\x28\\xb0\\x35\\x14\\xfb\\xd5\\x1c\\x7b\\x3f\\xd6\\x59\\xf1\\x2d\\x54\\x7d\\x05\\x92\\xdd\\x09\\xf8\\x73\\xc9\\xec\\xc6\\x43\\x9c\\x7e\\x93\\x1a\\xd0\\xe4\\x85\\x6b\\xe3\\x1c\\x60\\x5d\\xef\\x2e\\xd9\\xb5\\xd1\\x3c\\x59\\x42\\xb2\\xf3\\x25\\x39\\x7d\\xac\\x6c\\x97\\x60\\xe9\\xb1\\xbb\\x0c\\x06\\xf7\\x13\\xcb\\x92\\x0c\\x23\\x4b\\xcc\\xfe\\xe9\\xf0\\xb8\\x5d\\xd0\\x20\\xf7\\x98\\x8f\\x3b\\xe1\\xcc\\x66\\xe9\\xe5\\x1b\\xab\\xe2\\xfe\\xe2\\x37\\xeb\\x84\\xec\\x7e\\xff\\x94\\x09\\xaa\\x91\\xc1\\x94\\xe3\\x0d\\xb1\\xe0\\x65\\x01\\x59\\x55\\xde\\x97\\x46\\xbb\\xa0\\x3f\\x7e\\xdf\\x9a\\x58\\x75\\x12\\x40\\x9a\\x41\\x61\\xfa\\x77\\xea\\x62\\xcc\\xf4\\x31\\x60\\x2d\\xcd\\xcf\\x36\\x5e\\xd6\\xbf\\x0a\\xed\\xdd\\x32\\xf7\\xc8\\x44\\xe3\\xa3\\x4d\\x26\\x6e\\x28\\x38\\x2f\\x40\\x62\\xfd\\x4d\\x6f\\x82\\x14\\x25\\x21\\x04\\xd6\\x43\\xa9\\xbf\\xd8\\x07\\x17\\x16\\x37\\x1c\\xcb\\xb5\\x4c\\x8c\\xc8\\xdb\\x79\\xad\\xd6\\x5b\\xcb\\xce\\xa0\\xd0\\x80\\xd8\\x40\\x28\\x03\\xfe\\x23\\x2d\\xf7\\x0f\\x76\\x57\\x72\\x47\\xa6\\x3d\\x55\\x83\\xbb\\xd5\\x64\\x27\\x67\\xbc\\x63\\xf3\\xc5\\xa7\\xbb\\x3a\\x47\\xeb\\x12\\x98\\x4e\\x45\\x41\\xf4\\x1f\\xdb\\x55\\x86\\x9a\\x08\\xfa\\xde\\x66\\xc2\\x0f\\x69\\xa5\\xa9\\xde\\x25\\xf6\\xb3\\x6b\\xa1\\x8a\\xce\\x5b\\x4a\\xc3\\x36\\xbb\\x2a\\x8e\\xbf\\x63\\x0a\\xd0\\x3e\\x8b\\xb8\\x73\\x1d\\x01\\xe8\\x4b\\x91\\xd0\\x24\\xd1\\x17\\x45\\x9a\\x74\\x89\\x2e\\x93\\xd5\\x3b\\x61\\xe6\\xb8\\x06\\x8e\\x4f\\x04\\xb4\\x18\\x1f\\x03\\x87\\xb4\\x56\\x7c\\xcd\\x45\\xe1\\xb8\\x71\\x8a\\x2d\\x7d\\x78\\x78\\x72\\xf3\\xdc\\xf8\\x7a\\x15\\x93\\x5a\\xd7\\xda\\xaa\\x74\\x4e\\xd6\\x8a\\x28\\x66\\x6a\\x51\\xa1\\x0d\\x39\\xfc\\x13\\x9c\\xdf\\xe9\\xa6\\x87\\x30\\x76\\xf7\\xc4\\x25\\x00\\x9c\\x38\\xfa\\xee\\x13\\x5e\\x51\\x32\\x07\\xb0\\x6e\\x7b\\xa3\\x56\\x85\\xf5\\x07\\x2d\\xa3\\x4b\\x60\\x45\\xb5\\x7c\\xd5\\xd1\\xb1\\xa1\\xfd\\xf0\\x17\\xb8\\xaa\\x8e\\xbd\\x27\\x52\\x2b\\xc9\\x5e\\x47\\x90\\x87\\x34\\xe4\\x17\\x22\\xa7\\x67\\x90\\x5c\\x5e\\xcc\\x30\\xc7\\x24\\x81\\xb6\\xc1\\x2b\\xf4\\xac\\xe9\\x4d\\x5b\\xb3\\xa3\\x15\\x56\\x91\\xb7\\x07\\x5b\\x40\\xeb\\xf5\\x96\\x8f\\xdd\\x90\\x3d\\x8f\\xd3\\xcc\\x50\\xb8\\xd6\\x46\\x48\\x59\\xb1\\x0f\\x75\\x51\\x32\\xc6\\xd9\\xb6\\xda\\xd1\\xd6\\xf1\\x4c\\x41\\x85\\xb2\\x64\\xd3\\x49\\x7a\\x4e\\x54\\x98\\x77\\xfe\\x94\\x6e\"},\n{{0x33,0x79,0xd2,0x5c,0x11,0x17,0xcf,0x80,0x2e,0xc7,0x9c,0x06,0x57,0x5d,0x18,0xe6,0xbe,0xce,0x4c,0x70,0x93,0xdd,0x43,0xfd,0xee,0x03,0x68,0x5c,0x70,0xb2,0xfa,0x9f,},{0x85,0x25,0x15,0x6f,0xe2,0x9f,0xc2,0xfb,0xf6,0x61,0xba,0x50,0x18,0x2b,0xe2,0x0c,0x89,0x98,0xd9,0x41,0x49,0x3d,0x59,0x33,0xdc,0xa4,0xd8,0xb4,0x1f,0xb4,0x42,0xd5,},{0x4c,0x36,0xbf,0xc8,0x1e,0xef,0x00,0xb9,0xcb,0x3a,0xb5,0x14,0xc6,0xd4,0x51,0xb9,0x93,0x36,0x1e,0x09,0xa4,0xbe,0x4b,0x50,0x40,0x92,0x6f,0xeb,0x0e,0x0d,0x9b,0x52,0xf0,0x3d,0xe4,0x68,0xe7,0xba,0xd8,0x3f,0x37,0x91,0x54,0xbf,0x2c,0x43,0x7a,0x71,0xf7,0x54,0xf3,0xf4,0x07,0x98,0xee,0xeb,0xd6,0x2e,0x55,0xf2,0xbe,0x77,0x14,0x03,},\"\\x7a\\xcd\\xb3\\x9f\\x12\\x26\\xbd\\x3a\\xbf\\xfa\\x50\\x35\\x0a\\x14\\x97\\xd7\\x61\\xf8\\xf0\\xaa\\xef\\xbf\\xbb\\xbb\\x92\\x5f\\xf5\\x63\\xe3\\x89\\x76\\xaa\\x17\\x2d\\x40\\x7b\\x61\\xff\\xdf\\xb1\\xcd\\x53\\x8a\\x4c\\xd0\\x00\\xb5\\x78\\x18\\xa0\\xbc\\x92\\xc0\\xe0\\xcd\\x0a\\x5a\\xbf\\xcf\\x57\\x83\\x00\\xf5\\xf4\\xe6\\xce\\xfa\\x26\\x72\\x75\\xd1\\x78\\x45\\xda\\x70\\x66\\xfd\\x4e\\x18\\x01\\x00\\x27\\x96\\x0c\\xd3\\x95\\xe6\\x82\\xad\\x71\\xaf\\x34\\x9b\\xbd\\xad\\x5e\\xba\\xa0\\xf1\\x1a\\x77\\x61\\xe1\\x9e\\xa1\\xbe\\xf6\\x61\\x07\\x43\\x16\\x4b\\x17\\x14\\x14\\x53\\xb4\\x72\\xae\\x2c\\x8f\\x36\\xce\\x6b\\x08\\x0f\\x1c\\x07\\x45\\x35\\x24\\x54\\xce\\x5a\\xea\\xe1\\x1c\\x9d\\x75\\xde\\x3c\\x08\\x00\\x42\\x65\\xfc\\x4c\\xa8\\x0d\\x33\\xb2\\x6e\\xae\\x14\\x00\\xdf\\xd8\\x97\\x7b\\xf7\\x23\\xa6\\x16\\xda\\xeb\\x6d\\x42\\x19\\x90\\x10\\xb7\\x3e\\x19\\x3a\\xb7\\x2a\\x58\\xbd\\xd2\\x48\\xa7\\xf4\\x11\\x1c\\xa5\\x0c\\x1d\\xe6\\x46\\xbf\\xea\\x7b\\x4d\\x5b\\xaf\\x0f\\x93\\xdd\\x97\\x3e\\xe9\\x36\\x49\\xe2\\x1e\\xc0\\xc6\\xc4\\xfc\\xca\\x8c\\xd6\\xff\\x69\\xdf\\x76\\x16\\x12\\x02\\x1d\\x85\\xff\\x1f\\xb2\\xa9\\x53\\x37\\xda\\x48\\x05\\xa7\\x6d\\x34\\x7e\\xe7\\x1e\\xf1\\x9c\\x0d\\xff\\xb5\\x9f\\x15\\xf6\\x50\\x29\\x3a\\xbb\\x97\\x21\\x05\\x3f\\x74\\x06\\x90\\x5a\\xe6\\x83\\xf9\\x6c\\x83\\xa3\\xa7\\x44\\x7b\\x1a\\xfb\\x14\\xe1\\x20\\x8c\\x63\\x9f\\x37\\xa9\\x75\\x0b\\xa2\\x1d\\xa5\\x55\\x2c\\xc2\\x04\\xea\\xc4\\x53\\xca\\x03\\x62\\x82\\xf7\\xe0\\x96\\x10\\x93\\xc3\\x9e\\xc1\\x18\\x13\\x8d\\xcf\\x71\\xcf\\x2d\\x28\\xfb\\x96\\xa2\\x49\\x62\\xb5\\x2d\\x33\\x93\\xf8\\x80\\x65\\x3b\\xcb\\xa2\\xc9\\xb9\\xd5\\x7b\\x77\\xc5\\x22\\xf4\\x21\\xfc\\xf5\\xad\\x75\\xfb\\xa9\\xcf\\x33\\x89\\xb1\\x23\\xaa\\x97\\x52\\x17\\x13\\xff\\xf8\\x84\\x67\\xde\\xb8\\xc8\\x99\\x1d\\x4b\\x57\\xc1\\x43\\x81\\x70\\x53\\x7c\\xb5\\x0c\\xdc\\xc6\\x57\\xe5\\x0e\\x5c\\x48\\x0e\\x12\\xc0\\xd4\\x49\\x39\\xb6\\x39\\x99\\x44\\xe7\\xc7\\x1e\\x18\\x6c\\x2a\\xbb\\x81\\xfc\\x57\\x34\\x88\\x36\\xd5\\xe5\\x7b\\x72\\xb2\\x24\\xa6\\xb7\\x1b\\x6c\\xaf\\x72\\x1a\\xca\\x73\\x47\\x8c\\xb6\\xcf\\x5f\\xb8\\x90\\x71\\xae\\x3a\\x39\\x82\\x02\\xdb\\xb3\\x8c\\x30\\x81\\x25\\x63\\xbb\\x9a\\x23\\x40\\x66\\x57\\xa9\\x56\\xd3\\x05\\xa3\\x44\\x9a\\x60\\xcc\\x86\\x41\\xb6\\x21\\x75\\xa7\\x17\\x0c\\x23\\xbd\\x5a\\x25\\xf0\\xf1\\x2e\\x15\\xa7\\xed\\x91\\xfa\\xda\\x6a\\x4a\\x2f\\x0e\\x7b\\x15\\x5a\\x3d\\x64\\x85\\xec\\x03\\xce\\x6e\\x34\\xdf\\x7e\\x21\\x62\\x40\\xbb\\x28\\xa2\\xdd\\x73\\x2f\\xf7\\x90\\xd2\\x28\\x6e\\x20\\x0b\\x33\\xc2\\x9a\\x31\\xa5\\xe1\\x9a\\xd2\\xcd\\x02\\x97\\x4b\\xad\\xc4\\xbc\\x22\\xde\\xb7\\x50\\x4c\\x15\\x24\\x1f\\xc1\\x06\\x0c\\x8a\\xce\\xf4\\xfb\\xb2\\x5e\\xc7\\x60\\x2f\\xce\\x36\\xa2\\x7b\\xb8\\x7b\\x6e\\x64\\x23\\xe6\\xb4\\xf6\\xe3\\x6f\\xc7\\x6d\\x12\\x5d\\xe6\\xbe\\x7a\\xef\\x5a\"},\n{{0xef,0x38,0xc3,0xfc,0x74,0xf0,0x54,0xae,0x43,0xe8,0xd2,0x9d,0x6b,0xa6,0xdc,0x80,0xb5,0xaf,0x84,0x82,0x70,0xd4,0xaf,0x58,0x84,0x4d,0x24,0xbc,0xf9,0x87,0x41,0x4e,},{0x0a,0xe1,0x47,0x8b,0x05,0xfb,0x32,0x99,0x65,0xea,0x0f,0xa9,0x28,0xdc,0xbe,0x81,0xa0,0xbd,0xbb,0x6f,0xf6,0x6c,0x81,0x16,0x71,0x63,0x5e,0x43,0x88,0x88,0x80,0x51,},{0x1d,0x3a,0xc6,0xb6,0xbf,0x18,0xab,0x53,0x09,0x14,0x87,0x99,0x48,0x5b,0x27,0x6d,0x20,0x40,0x1c,0x6a,0xf5,0xf9,0xb2,0xf6,0x03,0x23,0x95,0xa3,0xc2,0xf4,0xb6,0x73,0xb7,0x14,0x0c,0x07,0xcc,0x26,0xf4,0xfc,0x56,0xa5,0xee,0x00,0xb0,0x74,0x6b,0x2a,0x80,0xda,0x6f,0xda,0xd1,0x7e,0xdd,0x11,0x49,0x20,0x10,0x1d,0x2c,0x89,0xc3,0x0e,},\"\\xbf\\x29\\x0d\\xb3\\xdd\\xa8\\x76\\x39\\x37\\xae\\x4c\\x83\\x74\\x67\\x05\\x32\\x72\\x95\\xc2\\xc2\\x48\\x06\\x8f\\x5a\\xb8\\x5c\\x8b\\x5d\\x75\\x6f\\x4e\\x3e\\x34\\x06\\x2b\\x55\\x49\\x38\\x72\\x61\\x47\\x6b\\xcb\\xd1\\xe7\\x33\\x19\\x90\\xf1\\x19\\x10\\xd1\\x1f\\x94\\x60\\x7c\\x2b\\x71\\xf6\\x5b\\x77\\x1a\\xac\\xab\\xdc\\x10\\xf4\\x2a\\xe9\\x18\\xdd\\x25\\x94\\xac\\x71\\x05\\x1c\\x85\\xb3\\x30\\x77\\x9c\\x47\\xaf\\x00\\xa5\\xb9\\x81\\x91\\xb5\\x6c\\xbc\\xf7\\xef\\xe4\\x1a\\x27\\xe8\\x7c\\x67\\x71\\x68\\xc8\\xab\\xe9\\x49\\x6e\\xb2\\xe7\\xab\\xbd\\x0b\\x16\\x04\\x28\\x6e\\xd1\\xa1\\xb1\\x8d\\x26\\x4d\\x73\\x3d\\xe8\\x7d\\x0d\\x3f\\x80\\x55\\x52\\x8c\\x4d\\x42\\x6d\\x7f\\x8e\\x6e\\xd0\\x24\\xa7\\x41\\x40\\xab\\xd3\\x54\\x00\\x79\\x62\\xa2\\xa9\\x7a\\x5c\\x2f\\xf9\\x76\\x54\\x6a\\x8d\\x1a\\xc4\\x92\\x4c\\x09\\x22\\x3d\\x34\\x8d\\xdc\\xd8\\x71\\x0a\\x37\\x99\\xf9\\x1b\\xb8\\x70\\xb3\\xf4\\x6d\\x51\\xf1\\xe7\\xf6\\x89\\x2d\\x6b\\x08\\xb9\\x91\\x74\\x8a\\x03\\x7a\\x86\\x7e\\xcc\\x39\\xee\\x8d\\x64\\x62\\xa7\\x61\\x44\\x88\\xed\\xd3\\xc2\\xba\\x61\\x5c\\xa2\\xe3\\x78\\x54\\x88\\x94\\x41\\xb1\\x3d\\xc8\\x35\\xc3\\x6b\\x38\\x65\\x3f\\x65\\x98\\x61\\x6f\\x35\\x78\\x3e\\x2e\\x15\\x83\\x84\\xbb\\x93\\x1c\\x90\\x1b\\x70\\x3a\\xcb\\x39\\x91\\xfb\\x7a\\xa5\\xba\\x69\\xd9\\xa5\\xbd\\x05\\x70\\x24\\x29\\x61\\xa7\\x1a\\x52\\x47\\x03\\x15\\xe9\\x82\\xe3\\x41\\xa6\\x1c\\x64\\xa6\\x19\\xbd\\x16\\xfe\\x81\\x19\\xaa\\xe0\\xd7\\x50\\x3c\\xe7\\xd7\\xe9\\x26\\x14\\x6b\\x91\\xc2\\x89\\x2f\\x13\\x16\\x69\\xd1\\xe3\\x9e\\x5b\\x75\\xe9\\xc7\\x24\\x52\\x61\\x80\\x99\\xa5\\x7d\\xc2\\xee\\x37\\x7b\\xe6\\x58\\x75\\xee\\x01\\xbb\\x88\\xed\\x52\\x6f\\xc3\\x94\\xe2\\xf5\\xc8\\x12\\x7a\\x5f\\x69\\x12\\x5e\\x67\\x38\\x5e\\xf9\\x4b\\x1f\\x33\\xad\\x52\\x62\\x9d\\x72\\x0e\\x31\\xc0\\x2a\\xe0\\xb5\\x82\\x33\\x9f\\xf0\\xf0\\xbb\\x07\\xff\\x2b\\x03\\x0f\\x48\\xfa\\x7b\\x69\\x27\\x16\\x50\\x1a\\xd7\\x77\\x3a\\xd3\\x15\\x12\\x04\\xa2\\xa5\\x40\\xfa\\x94\\x36\\xbd\\xd4\\x20\\x2a\\x15\\x73\\x09\\xec\\x36\\xce\\xcb\\xe5\\x8b\\x33\\xef\\xf5\\x57\\xfd\\x33\\xe0\\x3f\\xd3\\xeb\\x19\\x00\\x9b\\xd7\\xa2\\xde\\xa9\\xef\\xee\\xf8\\x78\\x55\\x67\\xaa\\xb2\\xa4\\xc9\\x8b\\xd1\\xf2\\xa8\\x10\\x11\\xb3\\x43\\xa9\\xf2\\x0c\\x44\\xc5\\x77\\xa4\\x52\\xfd\\x54\\xba\\x21\\x02\\x9d\\x47\\x06\\x81\\x3b\\x29\\x87\\xc7\\x6b\\xb2\\x42\\xab\\x26\\x20\\x84\\x3c\\x22\\x60\\xb6\\x69\\xad\\x35\\x8e\\xfe\\xe7\\xf9\\x83\\x0d\\xc9\\xc7\\xd4\\x78\\xa2\\xde\\x4a\\x2c\\xf8\\xc4\\x3d\\xa7\\x70\\xe2\\x88\\xe2\\xed\\xbb\\x6d\\x73\\xbc\\xf2\\xec\\xb0\\x23\\xde\\x6b\\x2d\\xcc\\x6b\\x16\\x6e\\x87\\xa3\\x85\\xeb\\x0a\\xdc\\x30\\x56\\x65\\xc5\\xbf\\xa5\\x7f\\x25\\x0f\\xe2\\x23\\xad\\x7f\\xf4\\x51\\x8d\\xe3\\x9c\\x79\\xe8\\x7d\\xc1\\x01\\xa9\\xfa\\xa6\\x82\\x1a\\x74\\x44\\x2b\\xfc\\xfd\\xf0\\xa9\\xe6\\x3a\\x50\\x9e\\x2a\\x2e\\x76\"},\n{{0x7e,0x7b,0x39,0xaf,0x69,0x38,0x0c,0xf4,0x46,0x60,0xe2,0xc1,0xff,0x30,0x83,0x34,0xe8,0x25,0x0f,0xee,0xb8,0x8b,0xe0,0xd4,0x3a,0xab,0xe5,0xe6,0x8b,0x8e,0xf1,0x71,},{0xcc,0xef,0x9d,0xae,0xd9,0x25,0x23,0x53,0x3d,0x4a,0x2d,0xab,0x6d,0x24,0x19,0xf6,0xd0,0x86,0x04,0xdb,0x64,0xce,0x37,0xe3,0x29,0x04,0xac,0x77,0xb9,0xb4,0xa0,0x1c,},{0x10,0x62,0xa2,0xdc,0x9c,0xd5,0x37,0x96,0x75,0xc0,0x4f,0x5e,0x21,0x33,0x8d,0xcf,0xb7,0x7d,0xfb,0xab,0xce,0xdd,0x62,0xb2,0x60,0x71,0x00,0xd7,0x64,0x9a,0x05,0xe8,0x08,0x71,0xe9,0x61,0x23,0x21,0x4f,0x80,0xf4,0xf7,0x3b,0x0d,0x9b,0x06,0xe2,0xd3,0x1f,0x56,0x11,0x9c,0xea,0x69,0xda,0x23,0x47,0xda,0x84,0xa2,0x75,0xb7,0xb2,0x07,},\"\\xd4\\xa3\\x97\\x6d\\xbf\\x83\\x20\\x18\\x56\\x67\\xb5\\xa8\\x23\\x66\\x40\\xf2\\xeb\\xc9\\xe4\\x5e\\x6d\\x5f\\x2a\\x8d\\x92\\x99\\x79\\x27\\xdd\\x9b\\xc5\\xdb\\x95\\xf4\\x46\\x34\\xbd\\x65\\x4e\\xef\\xec\\xe1\\x0d\\x99\\xd9\\x2b\\x46\\x71\\x57\\x91\\x64\\x50\\x04\\xac\\xcc\\x6d\\x14\\x0f\\x32\\xa1\\xc8\\x72\\xe5\\x4a\\xa9\\xa7\\x49\\x3a\\xf9\\x45\\x88\\xb7\\xbb\\x40\\x0d\\x94\\xd4\\x58\\xd4\\x32\\x92\\x30\\x7c\\x5a\\x1a\\x38\\x82\\xa1\\xc8\\xa6\\xa7\\x8d\\x9a\\x94\\x5f\\x79\\xd6\\x4b\\x32\\x94\\xa2\\x8c\\x3d\\x59\\xd8\\x20\\x22\\xb0\\x09\\xcc\\x4d\\x2d\\xa9\\x3a\\x16\\xb0\\x71\\xc9\\xab\\x8e\\xe9\\xa3\\x66\\x3d\\x72\\xed\\x34\\x4f\\x15\\x1d\\x68\\xc6\\x66\\xa4\\xb4\\x96\\x52\\xd9\\x7a\\x46\\xd1\\x42\\xa4\\x74\\x11\\x27\\xf3\\xc5\\x7f\\x15\\x51\\xc4\\x09\\x76\\xcd\\x13\\x81\\xa8\\x2a\\xea\\xe7\\xbc\\x5a\\xdb\\x39\\x87\\x20\\xeb\\x43\\x3f\\x08\\x99\\x48\\x7e\\xd2\\x37\\x84\\x46\\xb1\\xa8\\xdc\\x6a\\x33\\xfc\\xd4\\x53\\x7a\\x05\\xfb\\x60\\x3e\\xc0\\xa9\\x0a\\x27\\x53\\x23\\x00\\x24\\x2b\\x20\\x00\\x10\\x86\\x21\\xb6\\x5a\\xb0\\x00\\xbc\\x06\\x38\\x15\\x30\\xf6\\x90\\xd7\\xe5\\x6f\\x81\\x60\\x4d\\xac\\xff\\x19\\x10\\x71\\x50\\x40\\x41\\x0a\\xa1\\xf9\\x44\\xc9\\x2d\\xd9\\xbb\\xaa\\x5b\\xd0\\x8e\\xa0\\x0c\\x84\\x42\\xdf\\x94\\xf0\\x85\\xeb\\x3d\\xe9\\x73\\x35\\xb6\\x00\\x5e\\x6f\\x84\\xf8\\x23\\xd4\\x34\\x70\\xab\\x1c\\x67\\xda\\x12\\xad\\x44\\x99\\x36\\xc6\\xb5\\x5f\\x9f\\xfd\\x20\\x3d\\xfd\\x6e\\x3f\\x33\\x30\\x9e\\x8a\\x99\\x45\\xa5\\x93\\x20\\xe6\\x67\\x34\\xc7\\x9c\\x48\\x14\\xdb\\xa5\\xa1\\xc1\\x40\\x95\\xc6\\x29\\x25\\xa1\\xe1\\x73\\x3e\\xfd\\x94\\x81\\x7a\\x25\\xef\\x9e\\x47\\x9d\\xd9\\xcc\\xde\\x6c\\xa8\\xad\\xb7\\xa8\\x05\\x3c\\x1b\\x55\\x13\\x46\\x97\\x50\\x4a\\xf8\\x05\\x3d\\x59\\x5b\\x84\\x46\\x40\\xb6\\x1e\\x93\\x16\\x80\\x75\\x46\\x84\\x50\\xeb\\x5d\\xe0\\x35\\x86\\x97\\xc1\\x04\\xaf\\xa6\\xa3\\x79\\x6a\\x50\\x9c\\x26\\xb4\\xc2\\x77\\xc2\\x3f\\xff\\x42\\xdf\\x14\\x6d\\xe5\\x5e\\x95\\xd0\\xd4\\xb8\\x0a\\x7a\\xa1\\x77\\xd9\\x92\\x27\\xec\\xb2\\xa0\\x59\\x4d\\xee\\xde\\xbb\\x9c\\xaf\\xb1\\xa4\\x58\\xac\\xa8\\x07\\x2c\\xc7\\xd7\\x7c\\x71\\x75\\xf6\\x10\\xca\\x30\\x0e\\xfd\\x7a\\xf9\\x38\\x83\\x46\\x49\\x8c\\x22\\x99\\x15\\x64\\x50\\x0e\\x0b\\x0a\\xa4\\xd2\\x94\\x6f\\x18\\xe6\\xf5\\x37\\x5a\\x84\\x82\\x86\\xf3\\x69\\x54\\xc1\\xca\\x22\\x68\\x4c\\x69\\x28\\xc2\\xa2\\x5c\\x7f\\xe2\\x1a\\xba\\x4a\\x71\\x11\\xd7\\xe0\\x5b\\xc8\\xd7\\x0b\\x3d\\xcb\\x4f\\x6a\\xae\\xc0\\x64\\x84\\x5e\\xef\\x55\\x25\\xf8\\x50\\x24\\xc2\\x57\\x0f\\x3b\\x78\\x69\\x8c\\x4b\\xce\\xc0\\xd7\\x1a\\xad\\x53\\x78\\xd8\\x81\\x9e\\x1f\\xac\\x44\\xee\\x41\\x63\\x70\\x21\\x2d\\xba\\xaa\\xe5\\x4d\\x2a\\xf2\\x93\\x9b\\x82\\xcb\\xaa\\xe7\\xf4\\x2f\\xf4\\x85\\xd4\\x5b\\x3a\\xcc\\x21\\x09\\x0f\\x5b\\xa4\\x1e\\xc0\\xda\\x30\\x9e\\x52\\xef\\x28\\x38\\xd1\\xde\\x47\\x1e\\x0b\\x7c\\xf9\\x85\"},\n{{0xa9,0x04,0x8a,0xf0,0xc2,0x0a,0x12,0x5f,0x5d,0x39,0xc5,0x0f,0x22,0xb8,0x05,0xae,0x74,0x2c,0xf6,0x4f,0x1f,0xe8,0xdf,0xbe,0x8d,0xfd,0xaa,0x51,0x1a,0xaa,0x57,0x6f,},{0x15,0x86,0x55,0xdb,0x94,0xb1,0x5c,0xa7,0x29,0x83,0x87,0x7b,0x6d,0xb2,0x31,0xa5,0x84,0x3d,0xf5,0xdb,0xca,0x28,0x10,0xa7,0xe4,0x96,0xfb,0x59,0xab,0x71,0x04,0xca,},{0x18,0xa3,0x12,0xb2,0x0d,0x86,0xac,0x33,0x9a,0x58,0xef,0x2b,0x85,0x2d,0x46,0x7c,0x23,0xbb,0x2c,0xb1,0x22,0x7c,0xb1,0x53,0x38,0xaf,0x07,0xfd,0x04,0xb9,0xa7,0x11,0xe8,0x56,0xee,0x5b,0x2c,0x82,0xe3,0x66,0xc1,0x7f,0x86,0x17,0x13,0xd1,0x08,0x8c,0x1b,0x21,0x44,0xd1,0xc3,0x7d,0x05,0xbd,0xc0,0x0d,0x73,0x96,0x73,0x85,0x20,0x00,},\"\\x8e\\xef\\x2d\\x9f\\x5d\\x59\\x70\\x99\\x59\\xc9\\x24\\xf8\\x7c\\x22\\x78\\x97\\x67\\x39\\x3a\\x15\\x5d\\x5c\\x87\\xde\\x48\\x8c\\xef\\x50\\xb7\\xbf\\x7d\\xa8\\x70\\xe3\\xad\\xc3\\x00\\xae\\xe6\\x60\\x3b\\x2e\\xf0\\x87\\x64\\xd9\\x9d\\x9e\\x77\\x51\\xe5\\xdc\\xe9\\x2a\\xaa\\x71\\xaa\\x18\\xa6\\x9c\\xc8\\x23\\x13\\x4e\\x85\\x52\\xd9\\x59\\xa0\\xdb\\xb4\\x11\\x17\\xe0\\xa5\\x93\\xc3\\x18\\x33\\xb6\\xec\\x21\\x72\\xdd\\xaf\\xaf\\x78\\x48\\xdd\\xd1\\x8d\\x28\\xd0\\xd4\\xed\\x33\\x23\\x7e\\xc8\\x04\\xf6\\x59\\x38\\xae\\xd8\\xe8\\xa3\\x28\\x0d\\x42\\xe3\\x53\\xd0\\x1b\\xe0\\x18\\x7b\\x13\\x01\\xf8\\x3d\\x89\\x84\\x90\\x67\\xb0\\x4a\\x90\\x31\\xf7\\xe0\\xf3\\x3e\\x34\\x16\\x24\\x0c\\x53\\xd9\\x26\\x5e\\xd0\\x66\\x39\\x59\\x97\\x1f\\x41\\x7c\\xb5\\xf2\\x10\\xcd\\xc5\\xae\\xbc\\xb5\\xe1\\xdb\\x7d\\xfb\\x82\\xdf\\x43\\x58\\x76\\xa6\\xe9\\x8f\\x41\\x5b\\x0d\\xf8\\x69\\xf0\\xd8\\x85\\x15\\x35\\x37\\x56\\x45\\xee\\xf7\\x0f\\xae\\xc7\\x44\\xee\\x0d\\xc3\\xac\\xbc\\xb0\\x40\\xf6\\x8d\\x50\\x2c\\x2c\\x62\\xc8\\xdb\\x45\\xeb\\xe5\\x48\\x54\\xa4\\xb3\\x6f\\x43\\xfe\\xb4\\x9a\\x6d\\x1c\\x2c\\x2e\\xa7\\x99\\x14\\xa7\\xc2\\x3c\\x60\\xba\\xaa\\x67\\xcb\\x47\\xb2\\x17\\x8e\\x12\\xdc\\xe7\\x6b\\x00\\x4c\\x87\\xb7\\xb8\\x34\\x6e\\xfa\\xdf\\x38\\x0b\\x9e\\x1e\\x41\\xf6\\x31\\x48\\xda\\x51\\x78\\x1d\\x75\\xce\\xc0\\x40\\xe4\\x26\\x88\\x20\\x21\\x1f\\x3c\\x46\\x25\\x01\\xd8\\x08\\x99\\x89\\x4e\\x79\\xd6\\x18\\xde\\x42\\x46\\x1d\\x78\\x5a\\xea\\xce\\x53\\xae\\x14\\xb7\\x9d\\x33\\x50\\x1e\\xd5\\x62\\x9b\\xbd\\xd0\\x71\\x28\\x15\\x6d\\xb0\\x72\\x5f\\x5b\\x4b\\xed\\x59\\x3a\\x95\\x29\\x47\\x83\\x03\\x84\\xf6\\x1d\\xf0\\x0e\\xe0\\xaa\\x09\\x90\\x99\\xc3\\xcd\\x97\\x65\\xa9\\xc1\\xc7\\xe8\\xa6\\xa8\\x34\\x30\\xb8\\xd9\\x86\\x7c\\x8e\\x17\\x92\\x0a\\xd0\\xff\\x64\\xd8\\xcd\\x2f\\xf5\\xf1\\x14\\x38\\x8c\\xe6\\xd4\\x3e\\xec\\x17\\x15\\xd0\\x35\\xf0\\x22\\xfa\\x97\\x96\\x9e\\x1a\\x5d\\xd9\\xf5\\x8d\\x89\\x6b\\x17\\xc1\\x22\\x1c\\x9e\\x6c\\x85\\x55\\x59\\x72\\x35\\xee\\xda\\x6e\\xc4\\x1b\\x0c\\x11\\x76\\x12\\xb0\\x0c\\x5f\\x0e\\xd1\\x81\\x6b\\x05\\x73\\x63\\x58\\x27\\x07\\xa8\\xaa\\x0d\\x98\\xd4\\xd4\\xbe\\x5e\\x8f\\xa3\\x2d\\x6c\\x9d\\x27\\x82\\x21\\xef\\x30\\x67\\xb8\\xba\\x15\\x16\\xd9\\xe0\\x51\\xd2\\xf6\\x8b\\x7d\\x1b\\x15\\x1f\\x74\\xa3\\x53\\x4e\\x78\\x12\\xc0\\x51\\xe5\\xf2\\xb6\\x3b\\x30\\x35\\xf8\\xe5\\x70\\x3b\\x5f\\x68\\xfd\\x2d\\x65\\xbb\\x75\\x65\\xe8\\xaa\\x67\\xbf\\xd2\\xa1\\x2c\\xaf\\x0b\\xc5\\x48\\x11\\x97\\xa9\\xff\\x89\\xd7\\x7d\\xf7\\xa0\\xe9\\x65\\x5e\\xf0\\x29\\xb4\\x3d\\xd9\\x06\\xd0\\xb8\\x88\\xe3\\x13\\xae\\x9d\\x1c\\x7e\\x93\\x68\\xa0\\x13\\x52\\xd0\\x0c\\x66\\x80\\xdd\\x0f\\x1f\\x57\\x4a\\x58\\x77\\x34\\x8a\\x7e\\xa2\\xc0\\xb9\\xe8\\xe2\\x72\\x75\\x10\\xbf\\x0c\\x9e\\xf7\\x44\\xf3\\x69\\xeb\\x3c\\x6c\\x4f\\xc1\\x6a\\xde\\xb6\\xe1\\x94\\x5b\\xe8\\x28\\x7d\\x0f\\x30\"},\n{{0xf8,0xc9,0x18,0x3f,0x23,0x10,0x5f,0xad,0x0c,0x6e,0x51,0x03,0x35,0x8b,0x58,0x32,0x88,0xf9,0xff,0x6c,0x7d,0xfc,0x91,0x10,0x6d,0x07,0x98,0x7f,0xf6,0x9c,0xe1,0xeb,},{0x4c,0x79,0x62,0x8c,0x95,0x8c,0xde,0x0c,0xc3,0xcf,0x68,0x60,0x95,0xb8,0xa2,0xf4,0x4b,0x71,0x93,0xc6,0x16,0xf5,0x1b,0x21,0xb6,0x70,0xb0,0x38,0xce,0x6f,0x67,0xff,},{0xc6,0xa8,0xbc,0x7a,0x0d,0x5c,0x61,0x85,0xb6,0xec,0xd6,0x03,0x3e,0x42,0x32,0x1d,0x5c,0x87,0x1b,0xf8,0x89,0xbe,0x72,0xbd,0x54,0xcc,0x00,0x83,0xed,0x60,0xa4,0x70,0xb2,0xcc,0x0f,0xb4,0x68,0x2c,0x89,0x4c,0x75,0xb0,0xdf,0x95,0xf1,0xec,0xfb,0xba,0x2d,0x5a,0xce,0xf3,0xe1,0xaa,0xfe,0x54,0xb9,0xf7,0xe8,0x03,0xa1,0xd0,0x15,0x0a,},\"\\xb1\\xd6\\x05\\x95\\x32\\x3f\\xf3\\xc8\\x44\\x87\\x41\\x90\\xe1\\x83\\x6e\\x41\\x01\\x40\\x9c\\xbc\\xea\\xe2\\x8d\\x5d\\xa8\\x1f\\xad\\x29\\x8f\\xe4\\x7f\\x6b\\xdf\\x44\\x74\\x5b\\x7c\\xd0\\xd3\\x71\\x31\\xc3\\xec\\x36\\x5b\\x92\\xf5\\xa1\\xa6\\x9c\\x09\\xfe\\x2d\\x9e\\x81\\xda\\x10\\xcf\\x19\\xd8\\x5f\\xf5\\xff\\x26\\xf9\\xe7\\xdb\\x9f\\x07\\x93\\xb2\\x5a\\xb2\\x6e\\x6a\\x74\\xf4\\x4e\\xb8\\xc4\\xf0\\x78\\xeb\\x7a\\xd1\\x8e\\x65\\xa1\\x62\\x10\\xd5\\xc8\\x44\\xd3\\xce\\xf7\\x5f\\x1d\\xaf\\x44\\xee\\xe5\\x58\\xf9\\x0e\\x52\\x4a\\x03\\x2b\\x6c\\xae\\x6c\\x8d\\x23\\x36\\x7c\\x28\\xce\\x1c\\x75\\xfc\\x25\\xac\\x87\\x43\\x39\\x77\\xd5\\x97\\x53\\x3c\\x92\\xae\\x65\\xf2\\x91\\x3a\\x18\\x90\\x7a\\xc7\\xd9\\x54\\x3d\\xf2\\x41\\x27\\x74\\x39\\x43\\xfe\\xfd\\x9c\\xf8\\x3e\\xd8\\x33\\xf6\\x3e\\xc8\\x36\\x72\\x33\\xd8\\x97\\xbf\\xa1\\x2d\\x46\\x6d\\x2c\\x4a\\x9a\\xd7\\x0d\\x5a\\x67\\x2f\\xc1\\x07\\x75\\xea\\x2d\\x20\\x4e\\x63\\x6d\\xe7\\x01\\x07\\x88\\xda\\x27\\x1d\\xf0\\x38\\x81\\xa2\\x5c\\x8d\\xfa\\x5a\\xf7\\x3e\\xe5\\x59\\xf8\\x1b\\x52\\x9b\\x35\\xaa\\x12\\x7f\\xdc\\x0e\\xe8\\xfd\\x36\\x9c\\x7a\\x04\\x36\\x62\\x39\\x86\\xaa\\x64\\x07\\xfa\\x67\\xa1\\x42\\x0c\\x46\\xf3\\x21\\x1a\\xb8\\x4f\\x84\\x46\\x6d\\xd5\\x8b\\xb7\\x95\\x08\\xa1\\xfe\\xb0\\xa5\\xa5\\xdc\\x3b\\xb0\\xc1\\xb2\\x48\\x09\\x82\\x62\\xa0\\x64\\xf3\\x7b\\xb2\\xf0\\x19\\xe2\\x90\\xc6\\x0a\\xfa\\xa1\\x20\\x66\\x51\\xa2\\x69\\x7c\\xaa\\xcc\\x3e\\xcc\\x02\\xec\\xfc\\x07\\x7f\\x27\\x2e\\x8f\\x75\\xce\\xa7\\x1c\\x3b\\xc3\\x35\\x6d\\x2b\\x58\\x07\\x27\\x6f\\x19\\x55\\x00\\x1c\\xfe\\x10\\xa6\\x17\\x16\\xb4\\x08\\x2b\\xd6\\xf8\\x4c\\xae\\x4b\\xb0\\xd9\\xa4\\xb7\\x5a\\x4b\\x57\\x62\\xf8\\x10\\x79\\xf1\\x9d\\x7d\\x19\\xea\\xff\\x86\\x31\\xc9\\x24\\x88\\x5b\\xd3\\xa6\\x4e\\x12\\x9f\\x4c\\xf6\\xb7\\x9c\\x7a\\x98\\x29\\x66\\x55\\x11\\xe9\\xd8\\x5c\\x74\\x5e\\xb2\\x2c\\x1b\\x7c\\xb2\\xa1\\x7a\\x49\\xb6\\x28\\x5c\\xce\\x37\\xb3\\xde\\x41\\x59\\x40\\x32\\x83\\x23\\xef\\xe2\\x4a\\x1a\\x07\\xee\\x87\\x46\\x8f\\x65\\x10\\xe4\\x2d\\xd2\\x06\\xfe\\x7f\\x09\\xe3\\xd4\\x33\\xfb\\x52\\x15\\x6a\\xe3\\x48\\x38\\x31\\x15\\x64\\x88\\x63\\xe4\\x5b\\xf6\\xa3\\x71\\xb1\\x7e\\x70\\xe1\\x9f\\x96\\x27\\xd7\\xf0\\xa5\\x8b\\x95\\xc6\\xa4\\x78\\x8d\\x5f\\xd7\\x86\\x2f\\x16\\x12\\xc0\\x34\\x73\\x25\\xb7\\x97\\x65\\x1b\\xe3\\x0c\\x3e\\x1e\\x60\\xea\\x4a\\xe6\\x0b\\x57\\x45\\xa3\\x8b\\x6a\\x9d\\x4e\\xb4\\x93\\x5d\\x6f\\x3c\\xb8\\xd7\\x1a\\xd3\\xf3\\x9a\\xdd\\xa5\\xe4\\x2e\\x22\\x19\\xde\\x0d\\x38\\x19\\x09\\xc9\\xcd\\x31\\x7d\\xd4\\x37\\x94\\x21\\xa2\\xa8\\x42\\x68\\xa7\\xea\\x71\\x80\\xa6\\x4c\\x12\\x9b\\xe1\\xe5\\xe8\\xfc\\xbb\\xf5\\xed\\x65\\x9e\\x9f\\x7e\\x76\\x3c\\xe8\\x4f\\x63\\x0d\\x54\\x07\\x95\\x4f\\x9f\\x75\\x57\\x50\\xa6\\xdb\\xf9\\xf7\\x66\\x07\\x17\\xde\\x8e\\x2a\\xdc\\x1e\\x9a\\xc9\\xee\\x31\\x65\\x4d\\x18\\x37\\xce\\xe3\\x97\\x95\"},\n{{0x16,0x08,0x9a,0x1b,0x93,0x2f,0x8d,0x14,0x99,0x56,0x88,0xb4,0x8d,0xd8,0x41,0xed,0xae,0x3d,0xa5,0xcf,0xd2,0xcb,0x16,0x55,0x53,0x06,0xf3,0xfe,0x8b,0xd3,0xed,0xb9,},{0x9e,0xcd,0x9f,0xdd,0x7e,0x0b,0x92,0x3d,0xef,0xf5,0xd8,0x87,0xb2,0x42,0x58,0x5d,0x9d,0x41,0xcd,0x2c,0x7c,0x10,0xf9,0xc3,0x45,0xb3,0x9f,0x63,0x3f,0x4a,0xb9,0x03,},{0x78,0x78,0xab,0x74,0x1e,0xba,0xe2,0x74,0x7c,0x78,0x97,0xcb,0xb1,0xd1,0x05,0x48,0x2f,0x37,0xbe,0x2f,0x5f,0x91,0x79,0x52,0x32,0xcd,0xfb,0xcc,0xc5,0x26,0x60,0x89,0x18,0xe2,0x75,0x6d,0xdb,0x75,0x36,0xb3,0x68,0x0c,0x16,0x2c,0xf8,0xa1,0xef,0x38,0xa3,0x41,0xb9,0x36,0x2b,0xfe,0x5d,0x46,0x8b,0x4b,0xce,0x21,0xdf,0x23,0x4f,0x0f,},\"\\x58\\x50\\x02\\x32\\x38\\x8d\\x9a\\xa4\\xb5\\xfa\\xf8\\x5b\\x02\\x33\\x24\\x7e\\x71\\x7f\\xd1\\x68\\x40\\xde\\x9b\\xfd\\x0e\\xf8\\x6e\\x01\\xe6\\x13\\x02\\x77\\x55\\x13\\xe2\\x24\\x12\\x5e\\x0d\\x20\\x42\\x0e\\xa9\\x49\\xf6\\xc2\\x64\\x25\\xf7\\x00\\x77\\x91\\x1f\\x97\\x11\\x31\\x0c\\xd6\\xfd\\x8b\\xff\\x27\\xcd\\xea\\x11\\x48\\x0c\\x73\\xe8\\xf8\\xb3\\xc3\\x76\\x41\\xe7\\xe8\\xdd\\x86\\x07\\xc1\\x64\\x02\\x18\\xfe\\xc8\\x0a\\x02\\x09\\x28\\xb9\\x3d\\x4d\\x55\\x7e\\xbe\\x82\\xec\\x0b\\xb1\\x75\\x38\\x86\\x7d\\x2c\\xb1\\x4d\\x44\\xd3\\xea\\x72\\x7f\\xdd\\x52\\x82\\x0b\\x0d\\xa9\\x44\\xde\\x21\\xcd\\x5d\\xa3\\x03\\xd7\\x76\\xfe\\x99\\xcb\\xc2\\x64\\x83\\x65\\xe6\\xa0\\xa9\\x8d\\x4d\\xb1\\x50\\x84\\x26\\x61\\x76\\x8b\\xe8\\x4c\\x68\\x50\\x7a\\x5c\\x45\\xd2\\x07\\x84\\x0b\\x03\\x35\\x37\\x78\\x6c\\xb2\\x1d\\xad\\xad\\x5f\\xba\\xb9\\xc5\\xcf\\xc1\\xe3\\x54\\x7d\\xe5\\x50\\xd3\\x13\\x63\\x1d\\xd4\\xfb\\xb7\\xca\\x8f\\x71\\x93\\x86\\x27\\x60\\x8d\\x2e\\xbf\\x65\\x5d\\xb4\\x32\\x5a\\xbf\\x3e\\xd5\\x04\\xdc\\x18\\x30\\x58\\xf9\\xde\\x1e\\x44\\x93\\x12\\xd9\\x04\\xc8\\x46\\xa1\\x84\\xa0\\x28\\xf3\\x64\\xc0\\x28\\xb2\\x7e\\xb4\\x94\\x64\\x27\\xe3\\x1c\\x21\\xe1\\x05\\x1d\\xf3\\x64\\xd4\\x99\\xf4\\x77\\xbf\\x51\\xe7\\xa8\\x89\\x31\\x83\\xe5\\xec\\xf7\\x7d\\x51\\x3a\\x1a\\x76\\xb1\\xa6\\xfd\\xfb\\x16\\xbe\\x90\\xd7\\x4b\\xe4\\xc4\\x34\\x5a\\x4f\\x9f\\x87\\xee\\x44\\x1a\\x10\\x22\\xd6\\x7e\\xe8\\x44\\x78\\x9f\\x21\\xb0\\xc3\\x1a\\xdc\\xc0\\xd9\\x56\\x63\\xcd\\xfb\\x40\\xa8\\x95\\xb9\\x22\\xdc\\xe8\\x06\\x9b\\x93\\x2c\\x80\\x2f\\xd3\\xab\\x1e\\xf0\\xce\\x6b\\xff\\xdc\\xc5\\x65\\x3b\\x1c\\xd5\\x25\\x7e\\x19\\xa0\\x95\\x16\\x87\\xe5\\x45\\xfa\\xf4\\xaa\\x66\\x06\\x5a\\x55\\xc4\\xb4\\x19\\x1e\\x34\\xe8\\x04\\x7d\\x6a\\x4a\\xb5\\x2d\\x1b\\x06\\xc3\\x69\\xa4\\x26\\xca\\x2d\\x16\\xb5\\x1a\\x02\\x71\\xf2\\x7f\\x8d\\x74\\x4c\\x71\\x1f\\xce\\x3a\\xad\\x9d\\x4a\\xc0\\x38\\xee\\x70\\x0e\\x4e\\x97\\x1b\\x21\\xca\\x48\\x9f\\xf2\\xb8\\xc7\\x78\\xa3\\x72\\x1a\\xdf\\x47\\xc1\\xae\\x5a\\x41\\xb9\\xa2\\x7f\\xa7\\x42\\xfd\\x0f\\x18\\x16\\x4e\\xf3\\xc2\\x6b\\x8a\\xe7\\xd1\\xfa\\x29\\xb7\\xc0\\xcc\\x46\\x83\\xbe\\x65\\x02\\x5c\\x96\\x53\\x7a\\x12\\xd5\\xfc\\xeb\\xbd\\x05\\xe9\\x30\\xc3\\x69\\x3e\\xbb\\xba\\x0a\\x78\\xad\\xf5\\x9d\\x8a\\x3b\\x59\\x8a\\x34\\x8e\\xaa\\x9f\\x47\\xca\\xf5\\x31\\xfe\\x44\\x96\\x52\\xdb\\x5b\\x20\\xd6\\x89\\x94\\xe3\\x5a\\xfe\\xc2\\xc2\\x57\\x09\\x05\\x5a\\x1d\\xe2\\x60\\x82\\xe3\\x91\\x2d\\x49\\x7c\\x64\\x77\\x20\\xa3\\xf8\\x73\\x62\\x14\\x56\\xe6\\xa5\\xb9\\xeb\\x61\\x3a\\xcb\\x43\\xb6\\x6d\\x47\\xd0\\xb9\\x54\\xc6\\x9e\\x8f\\xbf\\x2c\\x5e\\x63\\x4c\\x48\\x6e\\x57\\x24\\x93\\x0e\\x0b\\x56\\xa5\\x16\\x94\\x0c\\x8c\\xb0\\xe7\\x75\\x27\\x4d\\xef\\xf9\\x7c\\xbb\\x77\\x59\\xce\\x90\\xa2\\xb9\\x3e\\x9e\\xfa\\xa6\\x24\\xe6\\xb3\\x8a\\x39\\x84\\x9d\\xca\\x1d\\xf6\\x12\\x73\\x6f\"},\n{{0x94,0xd5,0x09,0x15,0x14,0x4c,0x7e,0x7d,0xd0,0xf8,0x5f,0xef,0x87,0xed,0xdc,0x22,0x06,0xc1,0x56,0x9e,0xd1,0x43,0x1c,0x8c,0x5a,0x15,0x3e,0x32,0xe1,0xcb,0x2f,0xb7,},{0x3b,0xb0,0x98,0xcf,0x16,0x0f,0x3a,0xec,0x31,0x70,0xb5,0x7d,0x6a,0xdd,0x4f,0x56,0x73,0x92,0x70,0xe4,0xb3,0xa8,0xef,0x79,0x66,0xec,0x30,0x61,0x9b,0x29,0x91,0x02,},{0x59,0xa1,0xce,0x55,0xf5,0xa6,0xba,0xdc,0x1b,0x93,0x91,0x26,0x36,0x20,0x54,0x2c,0xfc,0xae,0x87,0xa0,0xf2,0xb9,0x50,0x22,0x50,0xcf,0xe4,0xbd,0xcb,0xf7,0x6c,0x46,0x19,0x77,0xc3,0x34,0xa4,0x8d,0x91,0x6e,0xde,0xbd,0x56,0xc2,0x1c,0xe2,0x17,0xc3,0x5a,0x64,0x44,0xcf,0xbf,0xd3,0xb1,0x1a,0x3d,0x48,0xfa,0x2e,0xdb,0x6e,0xb4,0x0f,},\"\\x4d\\x91\\x5f\\x27\\x33\\x2d\\xd7\\x50\\x51\\x71\\x9a\\x24\\xae\\x8d\\x0e\\x9c\\x30\\xda\\x79\\x09\\x99\\xe2\\x2d\\x9b\\x58\\x7e\\xf2\\x03\\x21\\xbe\\xe4\\xc0\\x7d\\x0a\\x12\\x49\\x4f\\xfe\\x59\\x9f\\x47\\xf9\\x69\\x25\\xf5\\xd9\\x25\\x17\\xfc\\x3e\\x5f\\x04\\x1d\\x0c\\x70\\x9f\\x2a\\x97\\x83\\x12\\x5e\\xec\\xa6\\x65\\x29\\x97\\x20\\x1c\\x42\\x9a\\xa6\\xf1\\xce\\x2f\\x07\\xa0\\xd4\\xa0\\xa1\\x8c\\xf2\\x0b\\x3e\\x9a\\x4f\\x76\\x63\\xea\\x52\\x62\\xca\\xd8\\xf9\\x49\\x41\\x1b\\x05\\xff\\x5c\\x5e\\xdd\\x7b\\x30\\xb2\\x17\\xd7\\x5d\\x8c\\x86\\xc9\\x4e\\x5f\\x92\\xc1\\x67\\x34\\x37\\x4e\\x8c\\xea\\xd6\\x1b\\x0b\\x27\\xbb\\x4b\\xf5\\xf4\\x3a\\x31\\x3c\\x1d\\xd5\\xb8\\x3e\\x0e\\xa9\\x33\\xb6\\xca\\xdf\\xed\\xd7\\xa6\\x4a\\xa5\\xdd\\x5b\\x5d\\x02\\xc6\\x95\\xea\\x20\\xe0\\x91\\xfd\\xaa\\x72\\xef\\x4e\\x7c\\xa4\\x0f\\x38\\x39\\x5b\\xe8\\xbf\\x7a\\x25\\x5c\\x6d\\x06\\xa6\\x32\\xd7\\xd7\\x85\\xd9\\xe0\\x47\\xf2\\x32\\xaa\\x50\\xfa\\x14\\x52\\x9f\\x98\\x6f\\x9e\\xf9\\xd7\\xb5\\x80\\xa0\\x39\\x65\\xb0\\x15\\x47\\x88\\x82\\x2a\\x22\\x5b\\xb5\\xab\\x34\\x38\\xb8\\x9a\\x5c\\x28\\x74\\x4a\\xb0\\xbc\\x0b\\x20\\x14\\xe5\\x79\\x6a\\xcb\\x49\\x35\\xa8\\x1b\\x02\\xa0\\x46\\x32\\xac\\xb8\\x8c\\xaa\\x7e\\x39\\xe0\\x69\\xc7\\xc8\\xe1\\x75\\x82\\x91\\x09\\x4a\\x53\\xe3\\x62\\xfc\\xed\\xaa\\xa5\\x83\\xec\\xa7\\x66\\xef\\xeb\\xf6\\x9b\\x38\\xe8\\xcd\\xe9\\xce\\x58\\xe0\\x12\\xc6\\x0e\\xc8\\x8e\\x8c\\x42\\xbe\\xad\\xfa\\x83\\x8c\\xfe\\x44\\x0f\\xa0\\xc0\\x1d\\x65\\x9c\\x96\\x34\\x57\\x6d\\x7d\\x7a\\x2d\\x3a\\x04\\x4f\\x99\\xc6\\xe4\\x26\\x3d\\x4c\\x0b\\x37\\x4a\\x38\\x8a\\x2a\\xcf\\x38\\xef\\xf2\\x9c\\x77\\x7e\\x9d\\xaa\\x60\\xd5\\x98\\x03\\x5a\\x7d\\x9e\\xdf\\x67\\xa5\\x02\\xc3\\xf5\\x73\\x20\\x7b\\x11\\x9c\\xac\\xac\\x3f\\xa7\\x1e\\x2a\\x02\\x07\\xc6\\x01\\xcc\\x0d\\xd6\\x37\\xef\\x56\\x2b\\xac\\xc3\\x5c\\x57\\x04\\x27\\x38\\xf1\\xf5\\x58\\x15\\xa5\\x26\\x80\\x82\\xcd\\x6a\\x50\\x82\\x92\\xfa\\x29\\xe3\\x4e\\x96\\x45\\xd8\\x7a\\x1a\\x2b\\x6e\\x58\\xad\\xb7\\xf4\\xa5\\x7f\\xbb\\x53\\xe9\\x21\\x3e\\xf3\\xdc\\x87\\x3f\\x29\\x39\\x62\\x58\\xa1\\xea\\x54\\x6f\\xb5\\x95\\x2c\\xe3\\x43\\xce\\xe9\\xbb\\xb9\\x0c\\x1c\\xda\\x72\\xc6\\x5a\\x7c\\x8e\\x40\\x31\\x2b\\x32\\x8e\\x23\\x19\\x20\\xc2\\x33\\x07\\x7d\\xca\\x34\\xd0\\x4f\\x9d\\x89\\xda\\xa9\\xa2\\xf4\\x34\\x59\\x16\\x5f\\xd1\\x02\\xff\\x56\\x43\\xc7\\x17\\x52\\x30\\xb3\\x9e\\xc7\\xc3\\xc4\\x75\\x65\\x0e\\xf1\\x31\\x60\\x9d\\x32\\x20\\xf5\\xa2\\x94\\xa4\\x03\\xb1\\xe1\\xc4\\x2c\\xfa\\x16\\x2c\\xd4\\x26\\xf0\\xae\\x43\\xfd\\x6b\\x7a\\xb5\\x47\\xa6\\x2b\\x7d\\x5f\\x84\\x74\\x03\\xc4\\xe5\\x98\\x79\\x53\\x87\\x71\\x58\\xcf\\xde\\xe2\\x3c\\x04\\xf7\\x51\\xc7\\xc8\\x6d\\x07\\x8e\\x82\\x4c\\xa6\\x3b\\x5e\\x65\\x54\\x3e\\x97\\x8b\\x6b\\x0c\\xc6\\x89\\xef\\x66\\x44\\x12\\xb0\\x1b\\x8f\\xf1\\x65\\xe7\\xdb\\xde\\x3c\\x09\\x9b\\xf4\\xf3\\x4e\\xbd\\xdc\\xb4\\xc4\"},\n{{0x0d,0x81,0x92,0x6f,0x51,0x3d,0xb4,0xb2,0x5d,0xfa,0x1e,0x52,0xb5,0xdc,0xa6,0x78,0xf8,0x28,0xa6,0x1c,0x7c,0x91,0x3c,0x82,0x82,0x47,0xc2,0xeb,0x04,0x22,0xb7,0xd1,},{0x0f,0x32,0x41,0x1e,0xf9,0x1d,0x4e,0x4b,0x69,0x41,0xdf,0xca,0xab,0x14,0x2e,0xf3,0xbe,0xc1,0x60,0x98,0x39,0x93,0xa5,0x26,0x2c,0xcf,0x27,0xfa,0xdd,0x2a,0xf8,0x90,},{0xe0,0xcb,0x6c,0x71,0xeb,0xf8,0xd7,0x05,0xe5,0x0c,0xad,0x9f,0x0b,0x8c,0xba,0x3e,0xcf,0x4b,0x9e,0x37,0x93,0x40,0x00,0x92,0xaa,0x5b,0x12,0x1e,0x7d,0xbb,0xc8,0xbe,0xa7,0x1d,0xf2,0x95,0x28,0xca,0x9b,0x47,0xab,0xf8,0x7c,0x19,0x8a,0x8d,0xc4,0xe1,0x4d,0x51,0x80,0xce,0x93,0x2d,0xd2,0x11,0x4a,0x3c,0xda,0xa5,0x55,0x2c,0xc2,0x05,},\"\\xa9\\x38\\x37\\x52\\x2f\\x7e\\xc2\\xe9\\x3a\\x2e\\x4b\\x4c\\x8b\\x46\\xde\\x92\\x6a\\x81\\xad\\xa2\\xd2\\x48\\xbc\\xd3\\x3b\\x39\\xb6\\xc9\\x5f\\xb6\\x2a\\x61\\xdb\\xbe\\xda\\x1a\\xa8\\x5a\\x21\\xd9\\xb9\\x6a\\x08\\x51\\x0d\\x8d\\x3a\\x65\\x8c\\xf3\\x20\\xa1\\x09\\x28\\x69\\x59\\x99\\xd2\\xc0\\xd6\\x05\\xc7\\xf9\\x5a\\x12\\xf5\\x6a\\x87\\x18\\x50\\x7d\\xb0\\xf4\\x97\\xe3\\xea\\xd6\\x13\\x13\\x2a\\xb0\\x92\\xcb\\xf1\\x9d\\x22\\x60\\x35\\x86\\x30\\x35\\x8d\\x9b\\x26\\xe6\\x8d\\x50\\xdd\\xae\\x37\\xc8\\xaf\\x0b\\xb7\\xd2\\x74\\x1f\\xd2\\x92\\x9c\\x21\\x27\\x9a\\x78\\xd1\\x0e\\x2c\\x5f\\x3c\\x5b\\xf4\\xa4\\x2a\\x36\\x17\\x03\\x6d\\x54\\x74\\x36\\x47\\x76\\x5a\\xfd\\x8c\\xd9\\x10\\xf8\\x1b\\x38\\xce\\xd7\\x23\\x90\\x63\\x0e\\xe6\\x89\\x44\\xa3\\x7d\\x29\\xc2\\xfe\\xca\\xda\\x1c\\xc5\\x9e\\xc5\\x44\\x07\\x5b\\xdb\\xc1\\x4c\\x63\\xc6\\x23\\x4b\\x88\\x40\\x49\\x00\\x0c\\x27\\xc7\\x34\\x06\\x03\\x56\\x04\\xfc\\xa8\\x76\\x0b\\x49\\xa5\\xe2\\x10\\x9e\\xf9\\x12\\x85\\xad\\xc4\\xec\\x48\\xc8\\x19\\xd6\\x2d\\x94\\x8f\\xac\\xa9\\x0f\\x62\\xcf\\xae\\xf0\\xb0\\x7d\\x6f\\xe5\\x76\\xd7\\x62\\xbf\\xd0\\xee\\xf9\\x4c\\xf6\\xb5\\x33\\x2c\\x4d\\x42\\x25\\x11\\x60\\x7f\\x2f\\xac\\xc7\\xac\\x04\\x6a\\x59\\xb9\\x61\\x7e\\x83\\x83\\xd1\\x02\\x9c\\xc9\\x1a\\xc5\\x92\\xb5\\x20\\x84\\x41\\x30\\x32\\xbe\\x84\\x1b\\xaa\\x9b\\xf9\\x62\\x51\\xa6\\xbd\\xa6\\x71\\xd4\\xcd\\x4b\\x12\\x5d\\xa6\\x58\\xa4\\xe5\\xa5\\x0f\\x44\\x28\\xee\\xbf\\x26\\x14\\xfb\\x0c\\xe5\\xfe\\xbe\\x80\\xf7\\x21\\xa5\\xf4\\xc0\\x32\\x55\\x06\\xd2\\x7a\\x8d\\x31\\xe3\\x3d\\x86\\x25\\x38\\x70\\xdd\\x63\\xc0\\x8e\\xdc\\x73\\x02\\xb2\\x80\\xe9\\xb9\\xbd\\xc2\\x8b\\xee\\xf0\\x5c\\x7d\\xcb\\x30\\xd4\\xc1\\x62\\xe9\\xbe\\x83\\x2e\\x1c\\x78\\x5e\\x37\\x55\\x12\\x18\\x42\\x1e\\xec\\x85\\x2c\\x42\\x98\\x21\\x3b\\x2f\\x27\\xf8\\xf8\\xc7\\x06\\xd3\\x91\\xb9\\xc6\\x9a\\x56\\xdb\\x7c\\xe5\\xd8\\x15\\x48\\xfc\\xa5\\xfe\\xd4\\x56\\xf2\\xd8\\xaf\\xd0\\xb7\\x5f\\x79\\xf8\\x58\\x68\\x31\\x6f\\x4a\\x09\\x21\\xf0\\xc6\\x63\\x99\\x26\\x51\\x6b\\x3c\\x3e\\x52\\xa9\\xcb\\x22\\x55\\x45\\x46\\xef\\x70\\xe1\\x4c\\x77\\xec\\xbd\\xcd\\x5c\\x0d\\x59\\xa8\\x17\\x69\\xb3\\x0d\\x5d\\x13\\x1f\\x2f\\xb4\\x49\\xc9\\x96\\xb8\\xde\\x8a\\xc7\\xf8\\x08\\x4f\\x84\\x99\\xe1\\xa5\\x6f\\x7c\\xd2\\x9d\\xb6\\xaa\\xef\\xcc\\xae\\x8a\\x60\\xe7\\x56\\x16\\xa1\\xf7\\x02\\xc3\\xbc\\x8d\\xea\\xa1\\x00\\x4a\\x8d\\xae\\x03\\x92\\xa5\\x9c\\xee\\x54\\x81\\x0c\\x6e\\x94\\x0e\\xee\\x25\\xfb\\x2e\\x5d\\x57\\x32\\x67\\x04\\x4b\\x89\\x3f\\xfd\\xe3\\x78\\xfe\\x75\\xac\\x26\\x13\\x37\\x3d\\x84\\xa0\\xca\\x81\\x87\\xaf\\x4a\\x33\\x58\\xe5\\x0a\\x99\\x4e\\xd0\\x33\\x67\\xde\\x64\\x5e\\x10\\x39\\x0f\\xea\\x4c\\x33\\xbb\\x1a\\x6c\\x0c\\x39\\x85\\x8b\\x8d\\xb4\\xa6\\x9f\\xe8\\x94\\xa4\\x22\\x3d\\x45\\xaf\\x69\\xb3\\x6c\\x61\\x17\\xc4\\xdc\\x25\\xde\\x49\\xa6\\x30\\x17\\x00\\x2b\\xa9\\xae\\x55\\x1e\\xf9\"},\n{{0x6c,0x8c,0x53,0xb5,0x6b,0xbc,0xb4,0xc0,0xa2,0x5d,0xc4,0x0c,0x18,0x24,0x0b,0x6a,0x5c,0x75,0x76,0xb8,0x9d,0xde,0x45,0xef,0x13,0xfb,0x15,0x8e,0xa1,0x7f,0x8e,0xd9,},{0x23,0x8e,0x51,0xd6,0xa4,0x4f,0xa7,0xac,0x64,0x26,0x88,0x01,0x26,0x1e,0xa3,0x5b,0x62,0x63,0x8a,0x00,0x6c,0xc4,0x52,0xbd,0xdb,0x9f,0x16,0xfc,0x58,0x03,0x06,0x0c,},{0x4b,0xf1,0xe7,0xd4,0x9c,0xd4,0xd5,0xc3,0xc1,0xfd,0x4a,0x4b,0xc4,0x8f,0xf6,0xb6,0xe5,0x2f,0xd9,0x51,0x0a,0x41,0x18,0x12,0x29,0x69,0x96,0xe4,0xfe,0xc5,0x6b,0xe4,0x45,0x14,0xc5,0x67,0xd1,0xd3,0x34,0x77,0xbd,0x5d,0xc0,0x83,0xc3,0x95,0x8b,0xd9,0x5b,0xfe,0x59,0x9c,0x15,0x3f,0x21,0xae,0x26,0x25,0x29,0x67,0xb7,0x32,0x60,0x03,},\"\\xb6\\x0d\\xf2\\x94\\x4b\\xa0\\x15\\x75\\x98\\x02\\xd3\\xc5\\x87\\xbc\\xfe\\xbe\\x52\\x1a\\x7e\\x77\\xb9\\x98\\x5b\\x76\\x1c\\x96\\x76\\x45\\x4d\\x24\\xa6\\x64\\xaf\\x0b\\x0d\\x44\\x22\\x5a\\x55\\x75\\x12\\xe1\\xc1\\xcd\\x7d\\xd8\\x33\\x5c\\x8f\\x6a\\xdf\\x92\\x8e\\x18\\xf8\\x9f\\xd5\\xee\\xdf\\x6f\\x41\\x1d\\xcd\\xaf\\x99\\x69\\x12\\xe8\\xc3\\xe2\\x3d\\x1c\\xb9\\x5e\\xca\\x4b\\x9e\\x24\\xe7\\x53\\x9c\\x3b\\x98\\xbf\\x3d\\x07\\xec\\x25\\x13\\x92\\x09\\x6c\\x19\\xac\\x53\\x74\\xdc\\xba\\x52\\x61\\x32\\xb6\\xd9\\xbb\\x8f\\x6c\\x85\\x9c\\xe9\\x85\\xd5\\x84\\xc7\\xbb\\xa5\\xb0\\x2a\\x81\\x03\\x4b\\x6d\\x8b\\x52\\x1b\\xd2\\x80\\xe5\\x0d\\x77\\xda\\xa2\\xb2\\x41\\x3e\\xd6\\x79\\x83\\x4f\\x81\\x61\\xd5\\xd0\\x57\\x3b\\xdd\\x47\\x6a\\xc3\\xcd\\x0a\\x3a\\x7d\\x8d\\xb4\\x53\\x34\\xe8\\x9c\\x00\\xab\\x66\\xbc\\x36\\x8a\\x07\\xb4\\x23\\xe2\\x46\\x43\\x46\\x36\\x27\\x2a\\xa4\\xe4\\x63\\x7a\\x53\\x06\\xb2\\xc3\\x39\\x79\\x92\\x78\\x1f\\x30\\x23\\x8d\\xe7\\x9e\\xc1\\x04\\xac\\xc7\\x20\\x0d\\xef\\xad\\x96\\x08\\x83\\xd3\\x91\\x44\\x3e\\x70\\xef\\xbd\\x22\\xf1\\xcf\\xce\\xec\\x51\\x12\\xfe\\x9e\\x8e\\x13\\xbb\\x94\\x1c\\x08\\x34\\x68\\xdd\\x71\\xff\\xca\\x97\\x6c\\xd5\\x1c\\xe1\\x61\\x79\\x31\\x10\\xef\\x00\\xaf\\xf5\\xee\\x2c\\xcb\\x77\\x06\\xa5\\x12\\xb8\\x5b\\xeb\\x94\\xac\\x49\\xd1\\x9a\\xfb\\x63\\x33\\x65\\x5c\\xf3\\xae\\xa5\\x35\\xa6\\xf9\\xc7\\x5e\\x03\\x48\\x41\\xe7\\x63\\xc5\\xa2\\x49\\xb4\\x70\\x4e\\x1b\\xe7\\x8b\\x0e\\xca\\xc6\\x80\\x2c\\x34\\x3c\\x1b\\x7e\\x7b\\x57\\x70\\xde\\x4c\\x93\\xa3\\xa7\\x9c\\x46\\xe6\\x83\\x5d\\xa8\\xae\\x5d\\xb3\\x83\\x8e\\x17\\x96\\xb5\\x64\\xa4\\x80\\xa4\\xf2\\x90\\xb6\\x0a\\x1c\\x63\\xa7\\x25\\xff\\x3f\\xef\\x43\\x4d\\x2a\\x0b\\x3d\\x89\\x31\\x97\\x87\\x42\\xb5\\x25\\xc8\\x3b\\xae\\x67\\x94\\xae\\x64\\x19\\x37\\x94\\xb3\\x70\\xc2\\x89\\xba\\x35\\xed\\x79\\xd3\\x70\\x72\\xa8\\xdc\\xfc\\xad\\xb4\\x6d\\x5f\\xfa\\xee\\xba\\x1b\\xfd\\x4f\\x87\\xd7\\x66\\xb5\\x04\\xe6\\x2b\\x4a\\xcd\\xd7\\x74\\x46\\xe7\\x9b\\xa9\\x94\\xd6\\xdb\\xf4\\x76\\x5e\\xbd\\x74\\xb0\\x36\\x51\\x00\\xda\\x56\\x16\\x2c\\x36\\xfe\\x5a\\x95\\x07\\x7f\\x6b\\x42\\x65\\xe8\\x17\\x96\\xb4\\xa5\\x74\\x43\\x78\\x29\\x70\\xb9\\x6c\\xb4\\x56\\x9b\\xa9\\x85\\xc5\\x5f\\xe3\\xa7\\x18\\x38\\x0b\\xca\\x39\\xf1\\x66\\x24\\xf8\\xe4\\x7c\\xc6\\x3c\\x1b\\x6f\\xa1\\xbd\\xe1\\xae\\xba\\x9c\\x51\\xf9\\x4b\\x70\\x2b\\x13\\x10\\x8c\\xc1\\x48\\x1d\\x42\\xe6\\xfa\\x98\\x1e\\x3e\\xbf\\xe0\\x64\\xd2\\xdc\\xa7\\x42\\x0c\\x74\\x59\\x57\\x92\\x31\\x2a\\xe3\\xfb\\x91\\x01\\xd4\\xb6\\x6d\\x99\\x16\\xdf\\xd6\\xc1\\x3a\\xe8\\x83\\xe6\\x61\\xc6\\x28\\x22\\x8b\\xe9\\x79\\x4c\\xf6\\x03\\x45\\x07\\x6d\\xb2\\x61\\x84\\xb6\\x17\\xe2\\x72\\x29\\x8c\\xd4\\x18\\x3f\\x27\\xbd\\x52\\xd4\\x05\\x10\\xbb\\x01\\x5d\\x20\\x97\\xd4\\xcc\\x76\\xe7\\x6c\\x0a\\x62\\xbb\\xfd\\xaf\\x53\\xc7\\x26\\x87\\x75\\xbb\\xfb\\xdb\\x88\\x70\\xeb\\x9b\\xab\"},\n{{0x69,0xb3,0x20,0xfb,0xd4,0x77,0x40,0x30,0xa2,0x97,0x67,0xa0,0xcc,0x15,0x50,0xd1,0x0b,0x74,0x9b,0x44,0xd6,0x19,0xd4,0x1d,0xce,0x11,0x46,0xf7,0xac,0x80,0xa7,0x55,},{0xdc,0x50,0x8a,0x79,0xc6,0xb8,0xab,0x86,0x6c,0xd1,0x17,0xa5,0xa8,0x4d,0xd9,0xd9,0x31,0xfd,0xa4,0x50,0xbe,0xc2,0x93,0x35,0x34,0x4d,0x0d,0x21,0x92,0x16,0xd6,0x5e,},{0x69,0x7d,0x4d,0x89,0x7e,0x0e,0x2c,0xc0,0x2b,0xc1,0xc2,0xdd,0xa5,0x7f,0x0d,0xda,0x62,0x0b,0x37,0xe8,0x61,0x82,0x2b,0xb7,0xf1,0xa7,0x01,0x93,0x5e,0x95,0x9e,0xa0,0xd8,0x45,0x3f,0x74,0x6f,0xb9,0x2c,0x08,0x7e,0xd6,0x5d,0x98,0x0e,0xea,0x1d,0x6f,0xdb,0xf2,0x3e,0x99,0xb2,0x89,0xaa,0xe0,0xdc,0xbb,0x12,0x8e,0xf8,0x36,0x64,0x0a,},\"\\x21\\x7e\\x33\\xf8\\x86\\x22\\xc9\\x6f\\x8d\\x09\\x2c\\x9e\\x26\\x66\\x4f\\xe9\\xef\\xc0\\xd8\\xd2\\xeb\\x59\\xa0\\x36\\xfa\\x46\\x4c\\xee\\x65\\xce\\x44\\x89\\xca\\xf9\\x03\\xdc\\xe1\\x7a\\xfa\\xfb\\xc4\\xf1\\x8d\\xc9\\xbb\\xfd\\x6c\\x1a\\x4b\\xe7\\xb8\\x34\\x85\\xa6\\xca\\x94\\x7d\\xef\\xb1\\xd3\\x51\\x25\\xd0\\x77\\x39\\x62\\xa3\\x44\\xa3\\x8b\\x6d\\xca\\x9a\\x40\\xc3\\x1c\\x1c\\x4e\\xb2\\xd7\\xf6\\x81\\x8f\\x97\\x8e\\x57\\x3d\\x66\\xb9\\x90\\x92\\x1b\\x92\\xb7\\x77\\x47\\x1a\\x4f\\x6f\\x05\\x47\\x7e\\xbc\\x35\\x3a\\xce\\x1d\\x86\\xb0\\x0c\\xc2\\x51\\x77\\x7a\\xaf\\x6a\\xf3\\xaa\\x11\\x79\\xbf\\xf7\\x8d\\xf5\\x04\\x8e\\x5e\\xf2\\x99\\x68\\x67\\x0e\\x53\\x54\\x83\\x56\\x8d\\x6b\\xb1\\x6d\\xa8\\x29\\x56\\x8f\\x81\\xc7\\x99\\xb9\\xaf\\xd4\\xaa\\xd6\\xef\\x08\\x52\\x52\\xc0\\xce\\x3a\\xc0\\x1a\\xc2\\x1a\\x9e\\xa6\\x9b\\xd5\\x8e\\xad\\xc6\\x69\\x68\\xf5\\x5d\\xee\\x38\\x6b\\x65\\x3f\\x33\\x34\\xef\\xc3\\x98\\xef\\x3c\\x37\\xa3\\x8c\\xe9\\x3b\\x21\\xf1\\x07\\xcc\\x54\\xde\\xc2\\x6f\\x53\\xfe\\xe5\\x60\\x4e\\xb0\\x9a\\x36\\xaf\\xe6\\xb6\\x65\\xb6\\x32\\x4a\\x84\\xc7\\xda\\x7b\\x7d\\xd0\\x1d\\x92\\x78\\xe4\\x72\\xf1\\x5a\\x5c\\xe9\\xff\\x0f\\xd9\\x3d\\x0a\\xa0\\x60\\x4d\\xd2\\xdf\\x8d\\x5b\\xf6\\xa9\\x12\\x73\\x4e\\xc5\\x1d\\xe7\\x7f\\x0c\\xe0\\x99\\xba\\x11\\x67\\x02\\x10\\xa6\\xa2\\x06\\x10\\x6b\\x0e\\xde\\x2d\\xed\\x85\\x8a\\x6b\\xc4\\x11\\xe7\\x61\\x3e\\x6f\\x80\\xe1\\xaa\\x52\\xc3\\x23\\xe3\\x0f\\xa8\\x49\\x95\\x1c\\xc9\\xb7\\x76\\xe4\\xcc\\x58\\xc9\\x0c\\xfc\\x8f\\x44\\x2d\\xf6\\x41\\x51\\xa7\\xfd\\x4a\\x3d\\xd6\\x1a\\x43\\x36\\xda\\x21\\xd0\\x39\\x44\\x63\\x5d\\x3f\\xd6\\x67\\xbe\\x74\\x1e\\xf4\\x5b\\x1f\\x7c\\xb2\\x76\\xd9\\xf4\\xde\\x81\\x07\\xde\\x64\\x58\\x2f\\x79\\x17\\xc6\\xea\\xb3\\x8e\\x0a\\x88\\x90\\xa4\\xbe\\xe4\\x8b\\xc9\\x26\\x17\\xa3\\x61\\xcc\\x7b\\x1d\\x25\\xe0\\x89\\x45\\x3c\\xe0\\xa5\\x25\\x44\\xf8\\x68\\xdc\\xb3\\x24\\x9d\\xe7\\x61\\xe7\\x9d\\xf6\\x3e\\xfa\\x07\\x94\\xe3\\xc4\\x61\\x8c\\x55\\x47\\x53\\xee\\x28\\x1c\\x52\\xac\\x8a\\xd7\\x8d\\x53\\x38\\xf0\\xda\\xc3\\x60\\xa7\\x69\\x38\\x1b\\xb4\\xa3\\x9f\\x19\\x0b\\x88\\x7b\\x47\\x23\\x80\\x6a\\xc4\\xa4\\xf2\\xff\\x30\\x4b\\xc6\\xf9\\x33\\x7a\\xb5\\x4c\\x86\\x6e\\x6b\\xa5\\x1d\\xf5\\x0c\\x43\\xea\\xb5\\x2e\\x2b\\x39\\x79\\x4c\\x99\\x17\\xe0\\xc3\\x14\\x33\\xf0\\x36\\x81\\xd2\\xf1\\xd9\\x3a\\x04\\x36\\x01\\x8c\\xaa\\xae\\x20\\x20\\x6a\\x34\\x58\\xad\\x6c\\x03\\x7a\\xcb\\x51\\x1e\\xf1\\x28\\xf6\\xdc\\xd0\\x53\\x05\\xf0\\x70\\x49\\xa1\\x3b\\x6c\\x6c\\x3c\\x5b\\x81\\x70\\xf1\\x58\\xc8\\xf1\\x2d\\x46\\xe1\\x60\\x93\\x1b\\xa1\\x8b\\xd5\\x9a\\xe1\\x29\\xec\\x07\\xa0\\x65\\x5f\\xa4\\x82\\xeb\\xbd\\x3b\\x85\\x0d\\x36\\xb8\\x32\\xbb\\xb7\\x75\\xf5\\x38\\xe3\\xc1\\xb3\\xa4\\x3e\\xcf\\x94\\xca\\x63\\x0c\\xa1\\x5d\\x50\\x28\\x13\\xee\\xd3\\xe3\\x5e\\x8f\\xd2\\x3d\\x2a\\xb6\\x38\\x60\\x04\\x27\\xd1\\x59\\x7c\\xb2\\x9d\\xa2\\xa5\"},\n{{0x66,0xda,0x8b,0x25,0x4a,0x37,0x06,0x73,0x78,0xf6,0x81,0x38,0xaf,0xed,0xd6,0x64,0x96,0x59,0x6a,0x05,0x85,0x52,0x4c,0x71,0x6b,0xde,0x2b,0x31,0x24,0xc3,0xe7,0xd1,},{0x85,0xbd,0xe2,0x8a,0x92,0x2a,0xb5,0xee,0xaa,0x4a,0x62,0x94,0x52,0x1a,0x2c,0xca,0xc0,0xef,0x23,0x03,0xdc,0xdf,0x8c,0x7f,0xee,0x22,0x8f,0xb4,0x55,0x20,0x12,0xe7,},{0x40,0x82,0xa5,0xbc,0x73,0x0f,0xb5,0x4b,0x6b,0xd0,0xbc,0xd2,0xa0,0x44,0xed,0x5d,0x3d,0x32,0x7d,0xc1,0x9c,0xea,0xc8,0x82,0x5e,0x62,0x9b,0x9e,0x64,0x23,0xcb,0x1c,0x61,0x42,0x36,0xf0,0x97,0xa6,0xb7,0x3d,0x47,0x39,0x47,0xcb,0x81,0xc4,0xe2,0x70,0x85,0x2e,0xe5,0xf1,0x3a,0x5b,0x03,0xdc,0x18,0xe1,0xc9,0xc2,0x7a,0x9a,0x68,0x02,},\"\\x3f\\xae\\x36\\x63\\x88\\x37\\xd0\\xed\\xc8\\xdc\\xee\\x51\\x7e\\x43\\xc4\\x88\\xed\\x57\\xfa\\x6c\\x98\\x53\\xa7\\x45\\xaa\\xed\\xfb\\x10\\x9e\\xc1\\x40\\x9f\\xb8\\xa2\\xfe\\x51\\xd2\\x3e\\x0d\\xd9\\xfb\\xfd\\x94\\xf9\\x1c\\x18\\xe6\\x11\\x4d\\x80\\x89\\x01\\xbf\\x61\\x7d\\x26\\x67\\xce\\xeb\\xd2\\x05\\xc5\\xc6\\x6f\\x5d\\x75\\x34\\xfd\\x2e\\xc3\\x3d\\xbf\\xe5\\x80\\xad\\x91\\x9f\\x50\\x42\\x04\\xea\\xf2\\x42\\xaf\\x87\\x00\\xb1\\x38\\xcf\\xbe\\x0f\\x37\\x29\\x19\\xc0\\x6b\\x86\\x1a\\x27\\xd7\\x20\\xd0\\x9d\\xf2\\x0f\\x4f\\xb7\\xb7\\x48\\xe7\\x18\\xb0\\xfc\\x48\\x6d\\xbd\\xfc\\xb6\\x94\\xcb\\x3f\\x14\\x20\\x03\\x5a\\xc1\\xbe\\x55\\xd3\\x1f\\x30\\xf9\\x97\\xa0\\x43\\xd0\\x47\\x08\\xa5\\xc5\\x42\\xee\\x37\\xc0\\xf7\\xfe\\x0b\\x32\\x11\\xd1\\x8a\\x87\\x03\\x3d\\xcb\\x15\\xc7\\x9e\\x66\\x81\\xc4\\x97\\x05\\x93\\xd3\\x2a\\x13\\xc4\\x8f\\x0a\\x3a\\xf8\\xbf\\xc1\\x36\\xe0\\xf9\\xb5\\x6a\\x12\\x3b\\x86\\xc4\\xc6\\x40\\xb6\\x50\\xcb\\x7d\\xee\\x9a\\x89\\xe8\\x2a\\xee\\xee\\x77\\x3b\\x5c\\xb0\\x32\\xfc\\xa4\\x1c\\x20\\xc4\\x07\\x32\\x8b\\xfe\\xd2\\x92\\x44\\xe4\\x60\\x55\\xa8\\x31\\x14\\x61\\x4d\\x3d\\xb5\\x65\\x81\\x60\\x4b\\x11\\x5f\\xba\\x14\\xf6\\x18\\xe1\\x02\\xa1\\xe1\\x6c\\xb0\\x36\\xea\\x69\\xdf\\x92\\x75\\xb9\\x77\\xa0\\x85\\x81\\x18\\xc9\\x1a\\x34\\xb9\\xa8\\x51\\x9b\\xd0\\xda\\xc3\\xb6\\x14\\x34\\xea\\x08\\x8f\\x38\\x1b\\xa0\\x8b\\xc1\\x58\\x31\\x89\\xa4\\xa7\\xc8\\xb6\\xad\\x18\\xf7\\x32\\xd7\\x4e\\xff\\x3a\\xce\\xf4\\xb6\\x90\\x4d\\xf5\\x8c\\x64\\x69\\x43\\x21\\x51\\x37\\x2d\\xf9\\x32\\x7a\\xe7\\x1a\\x0f\\x35\\x6c\\x94\\x46\\x8d\\xcf\\xc2\\xe4\\xa5\\xc0\\xe4\\xec\\x0b\\x16\\x6d\\x90\\xcd\\x46\\x5f\\x92\\x60\\xeb\\xd6\\xa7\\xa6\\x2c\\xe6\\xc7\\x15\\xbc\\xc7\\x15\\xbe\\x0c\\x7e\\x1f\\x28\\xc4\\x45\\x60\\x12\\xd3\\x31\\x77\\xa7\\xd4\\x11\\x3c\\x9a\\x5a\\x22\\xac\\xfa\\xf2\\xd6\\xb6\\x33\\x09\\x07\\x8f\\xc1\\xb1\\xba\\xa8\\xf3\\x6c\\x7e\\x86\\x6c\\x1f\\x97\\x2a\\x65\\x00\\xa5\\xee\\xa7\\x92\\x01\\x65\\x1a\\x73\\x05\\x20\\x8b\\x6c\\x93\\xc4\\x92\\xbc\\x77\\xca\\xcb\\xc9\\x9c\\x9c\\xde\\xd1\\x79\\xe6\\x64\\xa2\\xf4\\xe1\\x69\\x38\\xcc\\x26\\xfc\\xa8\\xb4\\x33\\xeb\\x80\\x12\\xf7\\xb3\\xad\\x19\\xba\\x1f\\xb8\\x58\\xfe\\x4a\\x00\\xfb\\x3d\\x1f\\x8f\\xd0\\xed\\xdf\\x0c\\x37\\xdc\\xdb\\x2e\\x5d\\x35\\xc2\\x54\\x6f\\x22\\xe8\\xc0\\xf8\\xce\\x90\\xe2\\xdf\\x8a\\xbf\\x24\\x82\\x7a\\x01\\x9b\\x2c\\x33\\xfc\\x59\\x0b\\xbe\\x71\\x2f\\x01\\x92\\x87\\x00\\x2b\\xc2\\x21\\x7c\\x0d\\xc0\\x93\\x1d\\xc8\\xed\\x8f\\x50\\xbb\\x44\\x2f\\x8b\\x2d\\xe2\\x78\\x57\\x36\\x2c\\xe5\\xa9\\xfd\\x97\\xf0\\xfd\\x1b\\x2b\\x92\\x51\\xca\\xd2\\xa4\\xac\\xa1\\xa9\\x4d\\xe2\\xe9\\x53\\x90\\x2d\\x72\\x28\\x14\\x24\\x07\\x44\\x3b\\x1d\\x51\\x71\\x07\\x64\\x8a\\x7b\\xab\\x83\\x07\\x49\\x87\\xd0\\x97\\x8b\\xc6\\x1d\\x41\\x9b\\xc8\\x45\\x91\\xc9\\x69\\xc3\\xd6\\xf4\\xe8\\x6f\\xc4\\x73\\x87\\x37\\xbc\\x05\\x58\\x75\\x5c\\x11\\x0a\"},\n{{0x27,0x65,0x48,0x29,0x0f,0x3e,0x0f,0x90,0x05,0x15,0xdc,0x63,0x36,0x6c,0x03,0xfe,0x0f,0xc6,0xee,0x13,0x0c,0x21,0xfb,0x60,0xa4,0xdf,0x9c,0xf4,0x64,0x79,0x7c,0xda,},{0x7e,0x2a,0x35,0x78,0x00,0x0a,0x08,0x7e,0xdc,0xc9,0xe9,0x4f,0xde,0x50,0x9f,0xc4,0xbe,0x05,0xca,0x0d,0xd0,0x90,0xdf,0x01,0xae,0x11,0x21,0x12,0x35,0x36,0xf7,0x2a,},{0x88,0xa1,0x46,0x26,0x1a,0xd1,0x11,0xc8,0x0f,0xa4,0x29,0x95,0x77,0xe7,0x10,0xf6,0x85,0x9c,0xf0,0xd1,0xca,0x80,0xe5,0x12,0xa5,0x52,0xc7,0x25,0xb8,0x38,0x40,0x37,0xee,0xcf,0x64,0x65,0xce,0x97,0x58,0x5c,0x9d,0x66,0x0a,0x41,0xab,0x91,0x04,0xe5,0xf7,0xc9,0xb2,0xf8,0xec,0x6f,0xb2,0x1f,0x1d,0xdd,0x50,0xd6,0x5b,0x9b,0x66,0x0e,},\"\\xf0\\xdb\\x44\\x2d\\xe2\\x9a\\x7a\\x1d\\xed\\x55\\x0d\\x12\\x00\\x02\\xcc\\x12\\xab\\xff\\xf9\\x8b\\x1f\\x57\\x6d\\x65\\xbd\\xe1\\x6d\\xea\\xba\\x68\\x7e\\x4e\\x0b\\x0d\\x5a\\x87\\x48\\xd7\\x50\\x3d\\xa2\\x96\\x9c\\x64\\xd6\\xa7\\xc2\\x8d\\x27\\xb6\\xc9\\x3a\\xd2\\x57\\xce\\x32\\xec\\xda\\xee\\x37\\x5f\\x43\\xff\\xf9\\x7c\\x43\\x2d\\x45\\x3f\\x71\\x96\\xc7\\x09\\xc3\\xbd\\xfb\\x73\\x88\\xd4\\xd8\\xea\\xf1\\x39\\xf1\\x82\\x94\\x0c\\xe1\\x7b\\x45\\x52\\xe2\\xd2\\x0a\\xed\\x55\\x57\\xba\\x4d\\x2a\\xcb\\xf8\\x45\\x73\\x0c\\x0a\\x66\\xb4\\x5b\\x40\\x95\\x0b\\xaf\\x6a\\x94\\x64\\x37\\xaf\\x6c\\x9e\\x3b\\x33\\xa7\\x9e\\x04\\xdc\\xea\\xe5\\x7c\\x2a\\x54\\x95\\x42\\xea\\xbd\\x21\\x6b\\xf1\\x39\\x48\\xd4\\x1f\\xfb\\x94\\x83\\xfe\\x29\\x80\\x1f\\xc8\\xc1\\x78\\x28\\x40\\xde\\xeb\\x3f\\xb4\\xda\\x31\\x92\\x78\\x5b\\xca\\x13\\xed\\x0a\\x9e\\xff\\x57\\xd6\\x13\\x6b\\xaf\\xbf\\x9d\\xec\\x69\\x7b\\x83\\x24\\x47\\xb2\\xb6\\xe7\\x30\\xfa\\x7f\\x99\\x95\\xba\\xc6\\xb7\\x83\\x2e\\xaa\\x09\\x90\\x5e\\xe4\\x9d\\x46\\x5a\\x5e\\xe4\\x50\\xf5\\x2d\\x1a\\x6d\\x36\\x4c\\x61\\x81\\x44\\xe8\\x86\\xe8\\xef\\x63\\x3d\\xc7\\x9d\\x0a\\xf8\\x93\\xd1\\x6b\\x3e\\xed\\xa0\\xfe\\xfe\\xfd\\x87\\x59\\xf2\\xa0\\xda\\x19\\x30\\x17\\x0d\\xd1\\x9e\\xb7\\x8f\\x0d\\x7a\\x7b\\x74\\x51\\x54\\x03\\x37\\x5a\\x95\\xbd\\xbc\\xce\\x01\\x8b\\xc1\\xed\\xb0\\x8d\\x89\\x7b\\xb7\\x98\\xa9\\x5e\\x7e\\x86\\xa5\\x2a\\xf3\\xd9\\xb8\\xa4\\xa1\\x4b\\x03\\x71\\xd6\\x34\\x98\\xdc\\xb2\\x01\\x62\\x48\\xeb\\xd0\\xbe\\x80\\x0e\\x9f\\x21\\xd5\\x49\\xe5\\xe0\\xe7\\xb4\\x89\\x5c\\xa5\\xcb\\x72\\x5a\\x0c\\xab\\x27\\xda\\x8a\\x8b\\x12\\x99\\xbe\\x38\\xa4\\x26\\x09\\x00\\xae\\x10\\xdf\\x5b\\xab\\xa1\\x1a\\xe2\\xba\\xb7\\x17\\x9d\\xd8\\x45\\x39\\x69\\x42\\x9c\\xcc\\x4d\\x41\\x60\\x55\\xf2\\xbc\\xb9\\x3c\\x1c\\xac\\x6d\\x7e\\x80\\x4c\\xf8\\x12\\xdf\\x14\\x62\\xf2\\x2e\\xe9\\xe8\\x33\\xa9\\x76\\x9e\\x8e\\x67\\x75\\x50\\x40\\x2c\\x40\\x94\\xdf\\x21\\x2f\\xd2\\xc5\\xfc\\xc0\\x9a\\x72\\xc7\\xce\\x00\\x77\\x51\\x00\\x73\\x09\\x0d\\x0e\\x63\\xdb\\x63\\x7d\\x43\\xd4\\xc2\\x1f\\x86\\x19\\xd3\\x4d\\xa5\\xdb\\x08\\x03\\x3f\\x68\\x6c\\xe8\\xb8\\xa0\\x82\\x12\\x22\\xf9\\x54\\x34\\xac\\x4e\\x6f\\x70\\x30\\x94\\xed\\xde\\xd6\\xfb\\x1b\\x84\\x6e\\x97\\x96\\x50\\x97\\x9d\\x3c\\x77\\x45\\x3f\\x40\\xf7\\xfe\\xe7\\xc3\\xe8\\x8a\\x96\\xfd\\x1d\\x70\\x2e\\x81\\xc2\\xa4\\xf3\\xf3\\x75\\x3c\\x79\\x64\\x84\\x2d\\xfd\\x9d\\x39\\x58\\xa7\\x43\\xda\\x06\\x3d\\x1d\\x64\\x8e\\x51\\xb2\\x10\\xa2\\x8e\\xd2\\x48\\x7f\\x14\\xd5\\xf1\\xbc\\x6f\\x33\\x9b\\x2d\\xd1\\x7a\\x66\\x1c\\x39\\x73\\x6d\\xa9\\x9e\\x4a\\x4f\\x07\\x36\\x03\\x42\\xd2\\x37\\xe3\\x81\\x3e\\xa3\\x99\\x8d\\x66\\xeb\\x31\\xa2\\xd7\\x08\\xaf\\x06\\x5c\\x32\\xb9\\x27\\xf7\\x57\\xc3\\x7a\\x80\\x06\\x60\\x67\\x4e\\x97\\x17\\xba\\x58\\xf2\\x80\\xeb\\x2a\\xa4\\x64\\xfa\\x74\\x40\\x21\\x08\\xa5\\xd5\\x66\\x2e\\x8d\\x0f\\xea\\xf3\\x29\\x68\\x7a\"},\n{{0x97,0x2c,0x06,0x16,0x55,0x6e,0xf2,0x2c,0x21,0x48,0x68,0xfd,0xd8,0x22,0xc5,0x57,0x39,0xe1,0xf9,0x6a,0x93,0xae,0x83,0x51,0x2a,0xfd,0xa9,0xca,0x7a,0xa7,0x4c,0xd2,},{0x9e,0x1c,0x6d,0x41,0x07,0xf8,0xab,0x81,0x61,0xc5,0xdb,0x5b,0x88,0xa3,0x7c,0xa1,0xde,0x9f,0x4e,0x29,0x13,0x67,0xab,0xb1,0xef,0xc8,0x4f,0x83,0xf7,0x07,0x69,0x53,},{0x54,0xdd,0x06,0xfb,0xb3,0xd7,0xc6,0x3f,0x8c,0xda,0xf7,0x83,0xc2,0xd7,0xba,0xc1,0x6b,0x4c,0x82,0x6e,0x2d,0x1b,0x18,0x07,0xc8,0x4e,0x04,0x9f,0x64,0xe2,0x71,0xb2,0x1c,0xfa,0x3e,0x37,0xc3,0x44,0x26,0x02,0x87,0x80,0x5d,0x71,0x88,0x06,0xb6,0x2c,0x56,0xb4,0x7f,0x6d,0x5c,0x50,0x81,0x25,0xc9,0xfb,0x5d,0x5e,0xa3,0x5f,0xd5,0x01,},\"\\x86\\x89\\xe2\\xf9\\x5c\\x8f\\xd5\\x0d\\xc4\\x46\\x64\\xa1\\x8f\\xb1\\xa9\\xf2\\xc8\\xf3\\xee\\x73\\xc0\\xf9\\x58\\x7e\\xe2\\x8b\\xfa\\x35\\xc9\\x23\\x1c\\x75\\xbf\\xd3\\xd9\\x53\\x41\\x74\\xe5\\xad\\x3f\\xa9\\xf0\\x92\\xf2\\x59\\x94\\x2a\\x0f\\xf0\\xba\\x2c\\xa2\\xcb\\x59\\x04\\x3d\\x19\\x2c\\xa8\\xe3\\xc8\\x86\\x9b\\xed\\xd2\\x35\\x4c\\xbc\\x5a\\xc7\\x82\\xd7\\x27\\xc0\\xb6\\x94\\x07\\xf6\\x8d\\x13\\x26\\xdf\\x65\\xa6\\x0c\\x4d\\x32\\xf8\\x7f\\x19\\xa1\\x0f\\x3d\\x76\\x5f\\xf9\\x23\\x43\\x4f\\x55\\x11\\xd1\\x34\\xd3\\x97\\xc4\\xfe\\xf6\\xbb\\x19\\x53\\xab\\xfc\\xe6\\x08\\x27\\xc3\\x59\\xaa\\x4b\\x54\\xf9\\x12\\xaa\\x8b\\x17\\xb8\\x3d\\xcc\\x7e\\x3b\\xcb\\xc5\\x05\\xba\\x04\\x6f\\xe5\\x7c\\x16\\xda\\xcf\\x4e\\xe2\\xfa\\xd5\\x38\\xbc\\x06\\x81\\x7c\\x9b\\x9d\\x8d\\xbc\\x5f\\x9d\\x9b\\xbf\\x9f\\x4a\\x93\\x4f\\x14\\xa4\\x2c\\x29\\xe0\\xe2\\xf3\\xa4\\x9f\\x46\\xb2\\x0e\\xe7\\x6c\\xfe\\x20\\xde\\xa1\\xe9\\x74\\x50\\xeb\\x6a\\x8f\\xda\\x04\\x81\\x68\\xdd\\x82\\x78\\x10\\x20\\x7f\\x00\\x5a\\x3c\\xaa\\x93\\xca\\x11\\xf4\\xee\\x60\\x8a\\x7a\\x93\\x55\\x49\\x43\\x13\\xae\\xc8\\xd7\\x07\\x5a\\xfc\\x94\\xc7\\xcc\\xcc\\x75\\xc2\\x31\\x9b\\xb4\\x58\\xc0\\xce\\x37\\x3e\\x9d\\x00\\x7f\\x75\\x3b\\x33\\xb5\\x27\\x93\\xd5\\x84\\x96\\xb2\\xd2\\x5c\\xd1\\xdc\\xd7\\x83\\x2a\\xac\\x5d\\xdb\\x38\\xf4\\xdb\\x19\\xc4\\x27\\x21\\x9e\\x1a\\x04\\x20\\xea\\xd4\\x7b\\xa9\\x5a\\xb6\\xd8\\x9c\\x65\\x93\\x90\\x41\\xcc\\x73\\x4c\\x08\\xeb\\x6b\\x47\\x6c\\xaf\\x7f\\xc7\\x6c\\x59\\x8d\\x94\\x7f\\xf4\\x44\\xb1\\x07\\x70\\xf6\\x29\\x45\\xae\\x65\\x04\\x4f\\x78\\x09\\x82\\x99\\xe2\\x62\\x6b\\x63\\x8a\\x73\\x28\\xd1\\xb7\\xda\\xa5\\x88\\x9e\\x8d\\xb9\\x4b\\xbf\\xf2\\xde\\xd6\\x2e\\x14\\x46\\x37\\x60\\x22\\x7c\\x3f\\x32\\x6e\\xd4\\x93\\x56\\x5d\\xdf\\x0a\\x17\\x61\\xb8\\xe4\\xbb\\x7d\\x24\\x10\\xfa\\x0f\\xdb\\xf3\\x56\\x84\\x39\\x7e\\xef\\xea\\x95\\x89\\x58\\x89\\xa0\\xa9\\xdf\\xfc\\x5e\\x02\\xc0\\x92\\x38\\x3b\\x7c\\xe7\\x4d\\x2d\\x90\\x93\\x99\\x16\\xf2\\x6b\\x71\\xaf\\xd2\\x65\\xf8\\xbe\\xc7\\x4f\\x0d\\xe2\\x47\\xc9\\x64\\x39\\x05\\x58\\x3d\\xf3\\xce\\xe2\\x35\\x37\\xd6\\xb5\\x68\\xc8\\x33\\x8c\\xe5\\xfe\\xe4\\x2f\\x7d\\xd1\\x5d\\xad\\x52\\x47\\xf0\\x09\\xac\\xbf\\xd5\\xd7\\x69\\xb6\\x36\\x69\\x59\\xcd\\x0a\\xe1\\x50\\xf5\\x8f\\x7c\\x80\\xfa\\x10\\xd9\\x89\\xed\\x90\\x11\\x93\\x72\\xe5\\xfe\\xa5\\xda\\x48\\xa4\\xe8\\xea\\x9c\\x72\\x78\\x75\\xdc\\x4a\\x20\\x05\\xb0\\xdc\\x2e\\x3f\\x69\\x7c\\x0c\\xe0\\xa4\\xbd\\xb2\\xf7\\x50\\xc0\\x4f\\xbc\\x0c\\x27\\xd0\\x2d\\xd8\\x28\\x6e\\x54\\xc9\\xc3\\x95\\x9b\\x6f\\xfb\\xdb\\x1d\\xe2\\xaf\\xfe\\x9e\\x78\\x26\\x51\\xe5\\x16\\x8a\\x50\\x0a\\xfe\\xd0\\x37\\xb3\\xe1\\x79\\x0d\\xdd\\x59\\x38\\x51\\xa6\\xa6\\xcc\\xca\\x9f\\xff\\xb4\\xa9\\x9e\\x27\\xdf\\x43\\x81\\x88\\x71\\x53\\x6a\\xb0\\x4f\\x14\\xa0\\x6a\\x1c\\x7c\\xb4\\x7b\\xed\\x62\\x41\\xce\\x74\\x30\\xad\\x3e\\x64\\x0a\\x72\\x67\\x52\\xfa\\x06\\xa9\"},\n{{0xe0,0x40,0x5d,0x37,0x89,0x3e,0x89,0xf5,0x38,0x11,0xd6,0xd4,0x46,0xe1,0xf1,0x93,0xf5,0x1a,0xfa,0x1b,0xbb,0xa7,0x25,0xf9,0x5e,0xb4,0x80,0x33,0x42,0x4a,0x25,0x09,},{0x45,0x10,0x4d,0x59,0x5e,0x44,0x3e,0x8c,0xe6,0x54,0xde,0x9d,0x65,0x50,0x54,0xbf,0x0a,0x99,0xd3,0x56,0x13,0xd7,0x7d,0x57,0x45,0x4c,0xa2,0xd1,0xc8,0x99,0xb5,0x17,},{0x77,0xdd,0xd4,0x91,0xca,0x66,0x2e,0xbf,0xfb,0x12,0xf7,0xf4,0x92,0xd7,0xfb,0xc1,0xa1,0xb4,0x47,0xf6,0xc8,0x59,0x98,0xf2,0xf7,0xcc,0x9a,0xdc,0xe6,0x7d,0xe6,0x3b,0x6e,0xeb,0xd0,0x81,0x17,0x84,0x5a,0x03,0x02,0xf7,0x34,0x97,0x14,0xba,0x9d,0xb2,0xaf,0x58,0x04,0x8b,0x85,0x83,0x7d,0x76,0x60,0xec,0x3d,0xeb,0xee,0xe2,0xd0,0x0f,},\"\\xdf\\x58\\xc4\\xfd\\x07\\x02\\xa2\\x0f\\xaf\\xa3\\xd1\\xd4\\xfe\\x7d\\x85\\x93\\x8b\\x12\\x0f\\xc1\\x1e\\x8d\\x41\\xb6\\x01\\xf0\\xe6\\x0e\\x42\\x23\\x6a\\x49\\xf1\\x26\\x81\\x3b\\xd5\\x12\\xee\\x71\\x35\\x90\\x61\\xe1\\x3e\\xb3\\x14\\xd4\\x17\\xf5\\x6d\\x6d\\x56\\x02\\x85\\xfa\\x89\\x91\\x21\\x32\\x84\\xc4\\x2b\\xc2\\xce\\xf2\\xdc\\x93\\x7b\\xdc\\x0b\\x5e\\x9d\\xc2\\x26\\x9a\\xfa\\xb3\\x2d\\xb3\\x0e\\x68\\x49\\x85\\x59\\x51\\xcf\\xbc\\x53\\xec\\xfa\\x01\\x64\\x38\\x63\\xe0\\x32\\x89\\x95\\xfe\\x85\\x0c\\x0d\\xb5\\x54\\x21\\xbf\\xa5\\x64\\x60\\x1b\\x8c\\x9d\\xb7\\x55\\x2c\\x7e\\x6a\\xa7\\xad\\xfa\\x15\\xa5\\x80\\x21\\xa8\\x42\\x66\\xe9\\x59\\x5c\\x65\\xfc\\xa4\\xa1\\x5f\\xa7\\x0f\\x55\\xf5\\xd2\\x12\\xc9\\xe2\\x77\\xff\\xb8\\x30\\xf4\\xca\\xd1\\x86\\x1f\\x3f\\x49\\x5a\\x9d\\x67\\x2f\\x56\\x91\\x31\\x06\\x39\\xc1\\x2d\\xcd\\x07\\xe3\\xef\\x17\\xa2\\x37\\x50\\xbc\\xb4\\x6b\\x7a\\xd7\\xea\\xc4\\x62\\xeb\\x51\\x22\\x25\\xf3\\xbe\\x7e\\x32\\xf8\\xf4\\x98\\x7a\\x11\\xdf\\x34\\x11\\x66\\x06\\x2b\\x43\\xc6\\x3a\\xb8\\x58\\xa6\\x00\\x49\\x76\\x67\\xfb\\xb8\\x8e\\x93\\xc7\\xe2\\xe0\\xaa\\xb4\\x1c\\x09\\xc0\\x23\\xeb\\x90\\x2e\\xc3\\xba\\xf6\\x79\\xe2\\x5b\\x96\\xe1\\x06\\x92\\x1a\\x91\\x4f\\xd5\\xde\\x20\\x0a\\x47\\x88\\x9d\\xe2\\x3e\\x7b\\x65\\xd0\\xcc\\xdf\\x0c\\x29\\x03\\x64\\x67\\xa1\\x21\\x0c\\x00\\x30\\x30\\x9a\\x2d\\x04\\xec\\x25\\x6d\\x5a\\x4d\\x8b\\x97\\xd4\\x6a\\x3e\\x15\\xf3\\x45\\xb6\\x67\\x17\\x08\\x03\\xcd\\xac\\xf6\\xcb\\x48\\xad\\xd0\\xa1\\x34\\x62\\xdd\\x30\\xfa\\x06\\x2b\\xd4\\x56\\x66\\x41\\xda\\x07\\xd7\\xf6\\x1e\\x06\\x36\\x86\\xed\\xd9\\x6b\\xfe\\x8f\\x97\\xb9\\x86\\xb7\\xc0\\xe4\\x42\\x49\\xcd\\x2d\\x73\\x17\\x47\\x29\\x99\\xb8\\xee\\x4e\\xa8\\x0c\\x90\\x2f\\x3b\\x18\\x89\\x36\\x71\\x2e\\x89\\xd8\\xbf\\x02\\xce\\x8a\\xe7\\x7b\\x6b\\x31\\xab\\xb0\\x63\\x20\\x65\\x45\\x5d\\xdd\\x9f\\x9d\\x1c\\xd9\\x53\\xa4\\xa4\\x9a\\xac\\x1a\\x15\\x16\\x9e\\x68\\x7d\\x4f\\xd3\\xf7\\xc2\\xed\\xfb\\x3a\\xab\\xc3\\xb6\\x61\\x55\\xf7\\xd3\\x15\\xf8\\xa2\\x94\\xfa\\xdd\\xff\\xdb\\x49\\x51\\x36\\x7a\\x0c\\xb8\\x70\\x75\\x9e\\x85\\xa8\\x38\\xaf\\x66\\xba\\x3f\\xc1\\x03\\xda\\x2b\\xab\\xc3\\xf3\\x81\\x69\\x6e\\xf8\\x88\\x2d\\x85\\xa8\\x27\\x8d\\x5f\\xac\\x3a\\x72\\xf1\\x6e\\xb1\\x19\\xee\\x99\\x00\\xb1\\xfd\\x98\\x6c\\x2a\\x9f\\x94\\xee\\xd8\\xe0\\xd4\\xf2\\x73\\x69\\x7e\\x43\\x63\\xa9\\x75\\xff\\x6a\\x7b\\x80\\xd5\\xb4\\xec\\x53\\x55\\xbf\\x63\\xb4\\x2b\\x71\\xcd\\x48\\x42\\x40\\x1d\\x38\\xb5\\xe0\\x0c\\xc9\\x7b\\xfd\\xa4\\x0e\\x45\\x66\\x53\\x68\\x3b\\xc8\\xe6\\xda\\xde\\x7d\\xcf\\x98\\x5a\\x97\\xb0\\xb5\\x77\\x6c\\x4d\\x72\\xca\\x13\\xa1\\x47\\x4e\\x4e\\xb2\\xec\\xcf\\xcd\\x42\\x87\\x86\\xdd\\xd0\\x24\\x6d\\x73\\xa6\\x37\\x7a\\x79\\xcb\\x8d\\xa7\\x20\\xe2\\x26\\xc1\\x94\\x89\\xbd\\x10\\xce\\xdd\\xe7\\x4b\\x49\\xfa\\xc2\\xcf\\xa2\\x07\\x12\\x9c\\x6a\\x10\\x8a\\xa1\\x64\\xbe\\x9d\\x80\\x9c\\x4d\\x31\\x14\\x73\\x60\"},\n{{0x57,0x56,0xe7,0x52,0xdf,0xf6,0x9e,0x3e,0xed,0x84,0x8e,0x4a,0x49,0xc7,0xa8,0xba,0xca,0x12,0x15,0x4f,0x94,0x31,0xde,0xc3,0x56,0x26,0xef,0x8d,0x75,0xa4,0x45,0x14,},{0x59,0x10,0xef,0x00,0xa5,0xb3,0x54,0x14,0x3c,0x46,0x56,0x1d,0xa6,0x2c,0x41,0xaa,0x13,0xd2,0x9c,0x18,0xdc,0x61,0x53,0xbf,0x8e,0x50,0x2e,0x01,0x14,0x00,0x77,0x28,},{0x81,0x57,0xd8,0x33,0x4d,0xed,0x1a,0x32,0x69,0x9b,0x35,0x0a,0xc0,0xd4,0x12,0x00,0x28,0xcd,0x8e,0xf8,0x18,0x94,0x48,0x93,0x48,0x50,0xe5,0x0e,0xe4,0x99,0x9d,0x8f,0xa2,0xcd,0x25,0x76,0x46,0xd9,0x2f,0xba,0x5d,0x66,0x2a,0x82,0x3e,0x62,0x20,0x8a,0xb4,0xfb,0xe0,0x17,0x14,0xa8,0x48,0xa0,0xb9,0x0b,0x55,0xad,0xcd,0x24,0x69,0x02,},\"\\xeb\\x21\\x90\\xa3\\x21\\x9c\\x79\\x2b\\x66\\x66\\xb2\\x75\\x27\\x33\\xad\\x9f\\x86\\xfc\\x39\\x01\\x55\\xc4\\xb4\\x38\\xbe\\x19\\x69\\x59\\x38\\x3b\\x25\\xf3\\xa7\\x49\\x53\\x0d\\x5a\\x4b\\x15\\xeb\\xe2\\xc1\\x8d\\x99\\x17\\x8e\\x6d\\x45\\xbb\\x4a\\xa2\\x12\\x0f\\x95\\xa3\\x52\\xe0\\x40\\x6c\\x63\\xac\\x86\\x72\\x48\\xd9\\xef\\xba\\x12\\x42\\x31\\x06\\x48\\x73\\xc8\\x2f\\xe9\\x95\\xdd\\x03\\x1c\\x7c\\xbc\\x7d\\x15\\xec\\x19\\x1f\\xbb\\x6c\\x47\\x4d\\xc4\\xc7\\x77\\xe8\\xf4\\x57\\x84\\x1e\\xb4\\x62\\x48\\x41\\xc1\\x52\\xd1\\x5e\\xde\\x26\\xe7\\x84\\x79\\xa6\\xa2\\x5f\\xfa\\x33\\x55\\x63\\xf1\\x06\\x4e\\xf0\\x95\\x58\\xb9\\x10\\xe2\\x60\\x84\\x18\\x82\\x0f\\x49\\x55\\x4b\\x67\\x0c\\x6b\\xab\\x34\\xd1\\xd6\\x09\\x84\\xde\\xa5\\x0e\\xd6\\xa3\\x75\\xf4\\x5a\\x74\\xbe\\xad\\xfb\\x04\\xbd\\x93\\x00\\xbd\\x59\\x4e\\x2e\\x20\\xea\\x5d\\x30\\x52\\xbb\\x7d\\xdc\\x51\\xa9\\x49\\xa0\\x04\\x79\\x72\\x68\\x2e\\xbe\\x66\\xd3\\x8a\\xac\\x62\\x92\\x72\\x70\\xde\\x42\\x15\\x0d\\x58\\x22\\x1d\\x03\\xb8\\xac\\xe3\\x58\\x99\\x33\\x48\\x7b\\xf2\\x3d\\x29\\xc5\\xc2\\xc8\\x43\\xae\\xfa\\x2e\\x1c\\xa2\\x2f\\x9d\\x16\\x80\\xf8\\x0c\\x76\\x6d\\x14\\x3c\\xe5\\xec\\xef\\x25\\x3a\\x74\\x5c\\xb7\\x1e\\x72\\xf6\\x50\\x4a\\xd9\\x11\\xf7\\xcb\\x4a\\x81\\x9c\\xd0\\x74\\x86\\x3a\\x92\\x70\\x69\\x29\\xa3\\x14\\x2f\\x8d\\xb7\\xac\\x16\\x41\\x02\\xac\\x2c\\xa0\\xd2\\xe1\\x9a\\x72\\x5e\\x1b\\x5f\\x81\\xf4\\x43\\xc7\\x3e\\x04\\x84\\xf2\\x6a\\x45\\xa3\\xae\\xf8\\x4f\\x1f\\x3f\\xa0\\x4a\\x4a\\xc6\\x95\\xd2\\xda\\xb6\\xef\\xba\\x45\\x6a\\x28\\x1a\\x39\\x73\\xcc\\x18\\x6e\\x68\\x0a\\x66\\xdf\\x52\\x1a\\x4d\\x1f\\x9e\\xdf\\x4d\\xfb\\x27\\x4a\\x42\\x70\\x97\\xbf\\x86\\x32\\x81\\xcf\\xb0\\xed\\x80\\xf8\\xd7\\x67\\x66\\x38\\xd6\\xcd\\xac\\x93\\x78\\x43\\xef\\xbc\\xfc\\xe9\\x1d\\xe1\\xdf\\x6c\\x52\\xb5\\x94\\x57\\x1b\\x93\\x15\\x60\\x0e\\x4b\\x65\\x52\\xde\\xfb\\x84\\x37\\xa8\\x07\\xba\\x21\\x29\\x8e\\x3d\\x97\\x22\\x12\\xba\\x31\\x46\\x92\\x91\\x7f\\x40\\x07\\x53\\x11\\xac\\xd0\\x09\\x39\\x52\\x41\\xb9\\xf1\\xb2\\x56\\xc5\\x15\\x73\\x5d\\xc6\\x74\\xf8\\xe8\\x66\\xd1\\xee\\xb4\\xc3\\x28\\x54\\x8a\\xee\\x71\\x23\\x1c\\x4c\\x9d\\x5b\\xd2\\x2e\\x39\\xde\\x88\\xd1\\x9f\\xab\\xf4\\x9f\\x0b\\x98\\x69\\xcb\\xf8\\x35\\x21\\x4b\\x15\\x52\\x2a\\x93\\xd3\\xa5\\x00\\x7b\\x11\\xf0\\xb5\\x0e\\x52\\x28\\xd4\\xee\\xbb\\x45\\x71\\xb3\\x5d\\xa8\\x4f\\x4f\\x68\\x7e\\x3f\\x43\\x79\\x3d\\x54\\xf3\\x82\\x5b\\x37\\xa5\\x09\\xea\\x56\\x4b\\xdf\\x21\\x7f\\xf4\\xad\\xf6\\x84\\x7b\\xbe\\xa4\\x31\\x6a\\x1d\\xbc\\xc7\\x44\\x8e\\xcd\\x53\\x63\\xea\\xab\\xc1\\x28\\xde\\xcf\\x05\\x4e\\xe1\\xa0\\xee\\x2d\\x87\\x19\\x79\\xf8\\xa6\\x3b\\x26\\x92\\xb0\\x9f\\x6e\\x98\\x6a\\x13\\x8e\\x7f\\x68\\xf6\\x0a\\xa4\\x26\\xa1\\xc9\\xb0\\x1a\\x49\\x02\\xe1\\x3b\\x17\\xbc\\x83\\x12\\x41\\x0c\\x28\\xbe\\xd2\\x9b\\x60\\x1b\\x0f\\xc9\\xf3\\xbc\\x2d\\x22\\x3f\\x87\\x52\\x51\\x10\\x0f\\x86\\x9c\\x6b\\x58\\x44\"},\n{{0xb9,0x04,0xac,0xb1,0x9e,0x5c,0xf8,0x72,0xd3,0x64,0x0c,0xd1,0x8d,0xdf,0x3c,0x0b,0x66,0x57,0xe0,0x11,0x7c,0xe6,0x59,0xdb,0xf5,0x02,0x59,0x01,0x5d,0x3f,0xbf,0x32,},{0xe0,0x4a,0x8a,0xa5,0x6d,0x18,0x18,0x48,0x3b,0x10,0xd0,0xa7,0xc9,0x19,0xe1,0xd5,0xd8,0x00,0x1e,0x35,0x51,0x0e,0x1e,0xc6,0x2f,0x71,0x14,0xdb,0xe8,0x1a,0xe0,0xbe,},{0x9a,0xaf,0x8a,0xc9,0x71,0x40,0xd5,0x50,0x8d,0x58,0xf5,0xac,0x82,0xb7,0xfd,0x47,0xe6,0xb1,0xf6,0x8a,0x7c,0x78,0xa2,0xac,0x06,0xf0,0x41,0x6e,0xf8,0xe9,0x91,0x95,0x3f,0x62,0xc4,0x7f,0xd5,0xfb,0xc6,0xc1,0xe0,0x1b,0xae,0x1c,0x92,0xa3,0x3e,0xf5,0x2b,0x7e,0xfa,0x5f,0x17,0xbb,0x86,0x33,0xbd,0xc1,0xae,0xeb,0xce,0x31,0x8f,0x0f,},\"\\x83\\xf4\\x12\\x4d\\x5a\\xf9\\x55\\x13\\x9b\\x1b\\xc5\\x44\\x1e\\x97\\xc5\\xfa\\xc4\\x91\\xb4\\xea\\x91\\x14\\x07\\xe1\\x54\\x20\\xa0\\x34\\x7e\\xd7\\xfa\\x1f\\x88\\x19\\xe3\\x6c\\x8e\\xd5\\x74\\x0c\\x99\\xd4\\x50\\x5a\\x78\\xb6\\x19\\xd5\\x60\\x74\\x9a\\xf5\\x0b\\x05\\x73\\x51\\x08\\x16\\xd6\\x13\\x22\\xcd\\xa9\\x76\\xa5\\xd4\\xca\\x32\\x05\\xf5\\xf0\\xe6\\x0e\\x75\\x9a\\x5d\\xf1\\xa0\\xbd\\xf3\\x6d\\xfe\\x97\\x17\\x90\\x6a\\xc5\\x7c\\xbf\\xc9\\x70\\xab\\x43\\xb6\\xfa\\x18\\xe6\\xc0\\x00\\x6c\\x84\\xfc\\x72\\x54\\x47\\x0a\\x0b\\x77\\x47\\x27\\xbf\\x5f\\x8e\\x67\\x94\\x23\\xa5\\x31\\xe4\\x1c\\xb5\\x31\\x0f\\x9b\\xcb\\xf5\\xa5\\x44\\x5e\\xbc\\x39\\xfb\\xd9\\x09\\xce\\x11\\xe9\\x7b\\xc2\\xf6\\x6a\\x4a\\x1b\\xb6\\xc2\\xf1\\x67\\xf2\\xc6\\xe8\\x0e\\xb9\\xb8\\xb7\\x2d\\xf3\\xe8\\xcf\\xd4\\xe5\\x14\\x48\\xdc\\x14\\xc0\\xb8\\x37\\xf2\\x94\\x96\\x93\\xd1\\xd0\\x54\\xc8\\xf9\\x5b\\xff\\x7f\\x1e\\x36\\x45\\x67\\xd0\\x34\\xf2\\x22\\x3e\\x15\\x94\\x77\\x2a\\x43\\xdc\\xfe\\x05\\x97\\xfd\\x6d\\x13\\x3b\\x3f\\x2e\\x96\\xff\\xc5\\x66\\x7d\\xd5\\x92\\x8f\\x23\\xec\\x3c\\x75\\x0f\\x84\\x59\\x93\\xa3\\x4e\\x97\\x76\\x15\\x9a\\x68\\x30\\xd6\\xfd\\x90\\x13\\xee\\x7a\\xea\\xa1\\xfc\\xcd\\x69\\xb9\\x6d\\xf2\\x84\\x70\\x4f\\xd0\\x88\\x88\\xb1\\x5b\\x64\\xe2\\xe9\\x0d\\x57\\x8c\\x5c\\xfc\\x0f\\x95\\x69\\x3f\\x6a\\xb6\\x5c\\x69\\x47\\x44\\x6a\\x85\\x7c\\x02\\x9c\\x7c\\xa6\\x60\\x80\\xb7\\x54\\xc7\\x73\\x4b\\x78\\x99\\x8a\\xbe\\x9b\\x7c\\xc6\\xef\\xd0\\x9a\\x44\\x18\\x19\\x4d\\x88\\xb3\\x4e\\xc6\\xc3\\x3a\\xf6\\x30\\xdb\\x81\\xde\\x5b\\x99\\xfe\\x65\\xaa\\xc8\\xb7\\x33\\x62\\x37\\x91\\x19\\xc7\\x00\\xd1\\x07\\xed\\xfc\\x19\\xf2\\x70\\x76\\x04\\x68\\xee\\x8e\\x5f\\x15\\x5d\\x9a\\x34\\x7e\\x57\\xb5\\x93\\x0f\\x32\\x7a\\x8d\\x11\\xc6\\x67\\x4d\\xdd\\x02\\x0f\\x9e\\x7d\\x9b\\x76\\x1d\\xba\\x5b\\x83\\xa8\\x73\\x02\\xf1\\x83\\x3e\\x5a\\xbd\\x49\\x52\\x6d\\x66\\x39\\x1e\\x5b\\xf0\\xe3\\x5b\\x44\\x53\\xd6\\x30\\xbf\\x7d\\x0a\\xdb\\xfe\\x50\\x1a\\xef\\x81\\xe6\\xc5\\x93\\x8f\\x92\\xcb\\x75\\x2f\\x5f\\x14\\xd2\\x80\\x6f\\x90\\xae\\x15\\x46\\x05\\x1c\\xcc\\x7f\\x91\\x3c\\x5d\\x6a\\x38\\xff\\x3b\\x7b\\x9a\\x23\\x66\\x2e\\xf1\\xf0\\x08\\x08\\xed\\xb2\\xfa\\x31\\xec\\xba\\x5c\\x8d\\x33\\x87\\xe8\\x75\\x41\\xcd\\x06\\x16\\xed\\xbf\\x3a\\xaa\\x35\\xa5\\x37\\x92\\x28\\x61\\xf4\\x4c\\xbd\\x9f\\x99\\x2b\\x82\\x46\\xd9\\xc6\\x4c\\x41\\x98\\x81\\x70\\x1a\\xb4\\x3f\\x7f\\xd4\\x64\\x21\\x0d\\x80\\x2b\\xa6\\x56\\xd9\\x5c\\x0f\\x24\\xa3\\x45\\x99\\xb2\\x0b\\x1e\\xc2\\x00\\x11\\x48\\x5c\\xfc\\xb3\\x18\\x6b\\x7b\\xcf\\x69\\xd7\\x45\\x81\\xa7\\xa3\\xee\\xd6\\x13\\x4c\\x4e\\xec\\xd6\\x55\\x74\\xa4\\x32\\x0d\\x9c\\x57\\xa8\\x49\\xc4\\xe7\\x8c\\x8a\\x5c\\xe8\\x25\\x05\\x00\\x4a\\x54\\xf1\\x9d\\x4b\\xdc\\x82\\x23\\x40\\x1b\\x34\\x94\\x6b\\x7d\\x66\\xe4\\x7e\\x63\\xcf\\x9d\\x0f\\x57\\xd0\\x94\\x54\\x91\\x38\\x4b\\xc6\\x86\\x8c\\x4b\\x47\\x86\\x90\\xe5\\x50\\x02\\x1d\\xf1\"},\n{{0x8a,0x35,0x01,0xb7,0x69,0x53,0x60,0x3c,0x90,0x33,0xe3,0xbc,0xbf,0x3e,0xc3,0x78,0xd2,0x57,0x01,0x1a,0x6c,0x50,0xb8,0x97,0x62,0xd4,0x91,0xea,0xa7,0x2c,0x5e,0x0d,},{0x77,0x8f,0x20,0x19,0xdc,0xd8,0xdb,0xb8,0x6c,0x67,0x37,0xcc,0x8d,0xc1,0x90,0xc5,0xa0,0x4c,0x50,0xb5,0xbf,0x45,0x88,0xbc,0x29,0xfa,0x2a,0x47,0xaf,0x25,0x26,0x72,},{0xa8,0xa3,0x09,0xba,0x52,0x12,0x5e,0x76,0xa4,0xa6,0x1e,0xb4,0x3f,0xd4,0x13,0x5c,0x41,0xab,0x11,0x79,0x9b,0x91,0xcc,0x54,0xff,0xc9,0xc6,0xa2,0x0f,0x05,0x0c,0xc5,0x95,0xb2,0x81,0x43,0xc8,0x74,0xbd,0xb9,0x28,0xbe,0xed,0x26,0x1d,0x9c,0x0f,0x12,0xaa,0x19,0x2e,0x66,0x40,0xbf,0xda,0xd5,0x4b,0xa0,0xd4,0x78,0x42,0x6b,0xce,0x09,},\"\\xe6\\x09\\xf1\\x22\\x4a\\x6a\\x45\\x11\\x40\\xcb\\xc0\\x25\\x4d\\x43\\x2c\\xe5\\xfd\\xdd\\x08\\xa8\\xe9\\x12\\xf8\\x1c\\x41\\x2f\\xdf\\xd5\\x18\\x2f\\xf6\\xac\\x2f\\x13\\xc5\\x76\\xc8\\x14\\x5b\\x15\\xf2\\x5b\\x40\\x9d\\x85\\x3f\\x91\\x44\\x09\\xe4\\xe0\\x2c\\xef\\xc3\\x9d\\x9b\\xef\\x4a\\x2a\\x06\\x04\\x98\\x57\\x0b\\x2d\\x3a\\x28\\x38\\xc9\\xb0\\xb8\\xe3\\xaf\\x4f\\xc3\\x7e\\x19\\x15\\xf8\\x04\\xa8\\x01\\x88\\x58\\x5b\\x30\\xb6\\x8a\\x3f\\xfb\\x2e\\x96\\x0c\\x73\\x20\\xe8\\x27\\xd2\\xfe\\x36\\xe6\\xa3\\x28\\xcc\\x6e\\x78\\x06\\x34\\x8a\\xdb\\x0b\\x77\\x3b\\x78\\x4d\\xe5\\x29\\xbb\\x6f\\x64\\x75\\x1b\\x21\\x05\\x85\\x94\\x94\\xfd\\x49\\xdb\\x0b\\xc7\\xf6\\x2d\\xf4\\x6b\\x9d\\x7c\\xe6\\x76\\x97\\x5c\\xc5\\xf4\\x38\\x56\\x49\\x84\\x36\\x81\\x2e\\x04\\xf2\\x6f\\xb8\\xb8\\xab\\x7e\\xba\\x12\\xf1\\xd5\\x67\\x22\\xeb\\x82\\xeb\\xfa\\xfa\\x47\\x35\\x97\\x7a\\x26\\x68\\x1c\\xb0\\x3f\\xa4\\xbc\\x69\\x51\\xab\\x9c\\xbd\\xf7\\x87\\xe3\\x27\\x8f\\x2f\\x57\\xf2\\x9e\\x12\\x09\\x5f\\x8c\\xa2\\xa1\\x78\\xcf\\xa7\\x57\\x13\\x37\\xf0\\x27\\x42\\x37\\x66\\x9f\\x97\\x65\\x7d\\x4b\\xad\\xb3\\x94\\x36\\xd7\\x86\\x49\\x25\\x80\\xfd\\x55\\xd8\\x6b\\xe3\\xa0\\xcd\\x17\\xd1\\x60\\x57\\x01\\x7b\\xaa\\xae\\xa0\\x0c\\x1e\\x14\\x55\\x21\\x59\\xbc\\xab\\xc0\\xe6\\x66\\xba\\xd3\\x41\\x8e\\x4e\\xc1\\x3b\\xfe\\x16\\x3b\\xe2\\x56\\xf0\\xc8\\x9b\\xc2\\x34\\x4a\\x8d\\xdf\\x99\\xca\\x81\\x60\\xb1\\x89\\x87\\x5a\\xd3\\x22\\xd9\\x0f\\x58\\x13\\x25\\x28\\x1d\\x53\\x89\\x96\\x5c\\x0a\\x7b\\x7b\\xca\\xe2\\x29\\x4a\\x3c\\xbe\\x35\\xa4\\xe4\\xe8\\x3b\\x54\\xc4\\x27\\x63\\x53\\x96\\x0f\\xad\\x11\\x85\\x32\\xd4\\x9b\\x70\\x76\\xf2\\x5a\\xd1\\x90\\xab\\x56\\x94\\x91\\x4f\\x71\\x08\\xb0\\xab\\x69\\x69\\xa1\\x91\\x28\\xfb\\x0a\\xef\\x00\\xe6\\x5a\\x04\\xfc\\x83\\x2d\\x07\\x69\\x61\\x67\\xb9\\x34\\x2b\\x35\\x5e\\xc5\\x77\\x37\\xca\\x37\\xcb\\xff\\x3b\\xb3\\x19\\x31\\xcb\\x58\\x71\\x2a\\x4c\\x46\\x89\\x52\\xc6\\x45\\x9d\\x56\\x7a\\x26\\xe7\\x95\\x01\\xe4\\xe3\\x1b\\x1b\\x09\\x53\\x53\\x76\\x32\\x02\\x9e\\x9b\\x49\\x0f\\x72\\xe5\\xa6\\xe0\\x57\\xdd\\xb4\\xb3\\x17\\x56\\xfd\\x97\\x04\\x21\\x8b\\x1b\\x8f\\x4d\\xcb\\x54\\x30\\xc0\\x25\\x04\\x2f\\x47\\x16\\x9b\\xfc\\x7c\\x80\\xd7\\x1c\\xab\\x8c\\xa0\\x7f\\x34\\x0a\\xfa\\x00\\x8a\\xbb\\xe2\\xe3\\xa0\\xab\\xe1\\x41\\xda\\x8d\\x41\\xca\\x6b\\xd6\\x9d\\x36\\xfd\\xb1\\x1a\\x41\\xce\\x0b\\x72\\xfa\\xbc\\x00\\xd9\\x7e\\xa6\\x05\\x27\\x00\\x10\\xb2\\x59\\xdf\\x8e\\x10\\xdd\\x22\\xdc\\x17\\xc1\\x39\\x90\\xa0\\x5f\\x02\\x33\\xe3\\xca\\x85\\x6b\\x40\\x97\\x1c\\xb3\\xe2\\x1c\\x8b\\x39\\x50\\xb1\\x3f\\xc8\\x4e\\x1f\\x26\\x6c\\x2a\\x6f\\xbe\\xce\\x88\\xd5\\x97\\x25\\xc3\\xcf\\xb2\\x22\\x5d\\xbc\\x1e\\xe9\\x5b\\x68\\x6d\\xb7\\x04\\xfc\\x93\\x7b\\x76\\x6f\\x0a\\x9b\\xfe\\x95\\xa4\\x2b\\x90\\x10\\xf1\\x22\\x9c\\x61\\x0d\\x7e\\xde\\x09\\x57\\x12\\xc8\\xf0\\xf1\\xfb\\x00\\x47\\xc0\\x40\\xa8\\x70\\x30\\x6c\\xd8\\xdc\\x74\\xc4\\xda\\x51\\xbf\"},\n{{0x42,0xb5,0x36,0x52,0xd0,0x8b,0x5d,0x76,0x6e,0x66,0xad,0x8f,0x3e,0xbf,0x69,0x3c,0xfd,0x77,0x90,0x7c,0xad,0xd9,0x8b,0x54,0x66,0xdf,0x77,0xdf,0xa2,0xc6,0x37,0xad,},{0x88,0x46,0x3b,0xb8,0xa4,0xb6,0x38,0x8d,0x92,0x4c,0xb8,0x62,0x09,0x83,0x41,0x95,0x43,0x5d,0x79,0xd7,0x7f,0x8c,0x02,0xf4,0x6b,0xbd,0x16,0xd8,0x2e,0xfe,0x42,0xb3,},{0x30,0xc4,0xb9,0x9e,0x68,0xec,0x33,0x51,0x30,0x8f,0xbc,0x76,0xd9,0xca,0xf0,0xaf,0x62,0x21,0xb5,0x96,0xb7,0x01,0x7f,0xe1,0x0c,0xc6,0x33,0x02,0x3b,0xa9,0x7f,0x02,0x38,0x96,0xfe,0x32,0x2b,0xaa,0x34,0x76,0x60,0x61,0x0e,0x05,0xfa,0x49,0x3d,0x21,0x8f,0xa3,0x60,0xf1,0x8d,0x93,0xe2,0x75,0xd1,0xef,0xf6,0x66,0xb6,0x3d,0xb2,0x04,},\"\\x9e\\xe9\\x13\\xc7\\x4e\\xe3\\xc5\\xe8\\xc9\\x0d\\x64\\xb8\\xae\\x3a\\x60\\x04\\x9f\\xc7\\x65\\xe1\\x76\\x06\\x0b\\xcd\\x1c\\xd0\\x9f\\x0e\\xda\\x60\\xbf\\x23\\xba\\xdb\\x8a\\x1c\\xaa\\xc3\\xd6\\x6e\\xbc\\x52\\x68\\x14\\x6e\\xe4\\xa5\\x4e\\x1e\\xb2\\x31\\xed\\x25\\xef\\xf9\\x5b\\x90\\xa6\\xe9\\x83\\x37\\xa5\\x40\\xa3\\xf4\\x84\\x49\\x79\\x4a\\x48\\x73\\xbf\\xc2\\xe8\\x47\\x28\\x96\\x6b\\xb7\\xc6\\xff\\x67\\x6a\\x2f\\xf5\\x73\\x11\\xc1\\xc2\\x5e\\x15\\xfb\\xf3\\xd4\\x0e\\x9f\\x25\\xab\\x5d\\xb9\\x1f\\xdd\\xb7\\xa0\\xae\\x43\\x6c\\x8e\\xc0\\x70\\x75\\x4b\\x6d\\x74\\x3a\\xa1\\xd6\\x04\\x8f\\xb5\\xbd\\x7f\\x5b\\x8e\\x4c\\xca\\xd2\\x03\\x28\\x38\\x95\\x30\\xf1\\x13\\x74\\xa4\\x89\\xb1\\xd5\\x05\\x31\\xa3\\x9c\\x9b\\x32\\xb4\\x03\\x69\\x62\\x60\\x06\\xd2\\x64\\xa9\\x9e\\xec\\x4f\\xac\\x13\\x41\\xf4\\xe7\\x46\\x79\\x45\\x7b\\x41\\x8e\\x6b\\xbf\\xba\\x23\\x3f\\x1c\\xa1\\x58\\xf7\\xb2\\x9d\\x40\\xd5\\x03\\x01\\xf9\\xd9\\x25\\x36\\xfd\\xc5\\xc2\\x3f\\xe5\\xde\\xe4\\xd6\\xdf\\x0e\\xbf\\x13\\xdf\\xa3\\x75\\x4a\\x14\\xc8\\x56\\x00\\x9a\\xde\\xa1\\xdd\\xa4\\x09\\x30\\x4c\\x1f\\x60\\xd2\\x53\\x30\\xfb\\x10\\x95\\x79\\x47\\xa0\\x05\\x08\\xf2\\xfd\\x76\\x42\\x2e\\xac\\x69\\x4c\\xc3\\x9f\\xa8\\xae\\x7f\\xcc\\x77\\xa0\\x2f\\xd9\\xee\\x5f\\x91\\x0d\\x93\\xe8\\xaa\\xc6\\x8f\\x14\\x5d\\xd8\\x78\\x87\\x6b\\xa8\\xed\\xa0\\xa4\\x9f\\xcb\\x20\\x9c\\x34\\xea\\x22\\x0d\\x4d\\x06\\x05\\x54\\x6f\\xc4\\xa8\\x09\\xba\\xf0\\x10\\xd5\\x33\\xe4\\x5d\\x17\\xb0\\xe1\\x6a\\x46\\xe9\\x1e\\xa6\\xfe\\xc2\\xcd\\xc5\\xa8\\xb3\\xec\\x50\\x14\\xb2\\x5e\\x92\\xd8\\xe5\\xc9\\x28\\xab\\x06\\x99\\x3d\\x4f\\xe2\\x3a\\xc8\\xd4\\x5c\\x89\\x03\\x78\\xdd\\x13\\x3f\\x00\\xed\\xb9\\x37\\xc0\\x71\\xf7\\x5c\\xfc\\x13\\xa4\\x02\\xe3\\xe4\\x29\\xa8\\x48\\x65\\x2a\\x17\\x5c\\x9b\\x6f\\x6e\\xac\\x86\\xf6\\x18\\x8a\\x44\\x48\\xa9\\x6c\\xe2\\x87\\x2e\\x5f\\x65\\xf9\\xbd\\xb8\\x71\\x66\\xc9\\xb8\\x7a\\x7e\\x95\\x8e\\x80\\xbb\\x65\\x66\\xe3\\xfc\\xf8\\x71\\x19\\x0c\\xf4\\xa8\\x67\\xe6\\x12\\xcf\\xc1\\xe4\\x37\\x1d\\x2b\\x73\\xd2\\xa0\\xad\\x0a\\xa4\\x00\\xba\\x69\\xe6\\x63\\x36\\x23\\x3b\\x0f\\x3c\\x52\\xb8\\xa6\\x8b\\xca\\x05\\x12\\x56\\x01\\x25\\x50\\x46\\xe6\\xf4\\x9d\\x68\\x8d\\x2d\\xb8\\x5c\\x7b\\x82\\x12\\x70\\x51\\x6e\\x3c\\x06\\x13\\xf3\\xf2\\x3f\\x9c\\x57\\xcb\\x4c\\x87\\x14\\x28\\x5c\\xdf\\x95\\xe1\\x06\\xa3\\xb5\\xaf\\xca\\xeb\\x81\\xb7\\x2f\\x34\\x3e\\x87\\xbd\\x92\\xf1\\x58\\x1d\\xcf\\x9a\\xa9\\x0a\\x02\\x4f\\xa4\\xa1\\x04\\x80\\x59\\xe3\\x0d\\xe8\\xff\\x0d\\x16\\x79\\x4d\\xcd\\x74\\x5d\\x2b\\x2d\\x53\\x4c\\x52\\x0f\\x82\\x78\\x53\\x86\\x74\\xa9\\x34\\xc6\\xf1\\x4a\\x84\\x28\\xe3\\xda\\x01\\x8a\\x36\\xe4\\x5a\\xa5\\x82\\x7c\\xf4\\xb1\\x52\\x84\\x34\\x6f\\xd6\\x93\\x63\\x14\\x92\\x19\\xbb\\x0d\\x1b\\xc9\\x27\\xd8\\xd1\\x93\\xc4\\x82\\x69\\x2f\\x97\\xdc\\x88\\xd8\\xed\\x33\\x7d\\x0c\\x9d\\xc9\\x9c\\x7a\\x5e\\x11\\x1d\\xce\\xd4\\x22\\x50\\xd5\\x80\\xe2\\x06\\x92\\xbb\\x7b\\x88\"},\n{{0x14,0xcf,0xe0,0x0f,0xa7,0x19,0x0a,0xe8,0x10,0x88,0x8a,0xe2,0xbb,0xd0,0xff,0x64,0x12,0xcf,0x1f,0xd4,0x08,0xa3,0x08,0x29,0x43,0x83,0xa1,0x94,0x53,0xb5,0x90,0x73,},{0x4e,0x61,0xaf,0xe8,0xc1,0x74,0xb6,0xee,0x1a,0x29,0xfa,0x09,0xcf,0x87,0xb4,0x00,0x81,0x39,0xf1,0x07,0x0b,0xc8,0x53,0x1b,0x6d,0x06,0xf5,0x4c,0x95,0x62,0xa4,0xf3,},{0xf7,0x85,0xa4,0x6f,0x69,0xbb,0xd0,0x99,0xfa,0x01,0x11,0x24,0xba,0x90,0x32,0xc1,0x89,0x74,0x2c,0x9e,0x00,0x1d,0xbb,0x87,0x81,0xd8,0x22,0x33,0x45,0xa9,0x56,0x9d,0xc1,0x44,0xca,0x69,0x4d,0x90,0x24,0x5e,0x0e,0x51,0x3e,0x88,0xab,0x02,0x3f,0x7f,0x0f,0x99,0xb7,0x41,0x61,0x59,0x75,0x8d,0xd0,0x34,0xe7,0xa8,0x9c,0xff,0x36,0x00,},\"\\xbc\\x66\\xf8\\x01\\xda\\xa8\\x29\\x85\\x8e\\x74\\x02\\x93\\xd4\\xd2\\x18\\x7b\\x8e\\x1a\\x5a\\xfb\\xa5\\xfd\\x67\\xb1\\x09\\x56\\xc6\\x53\\x46\\xac\\xa9\\x44\\x29\\xd3\\x2e\\x4c\\xfb\\x35\\x84\\xab\\x0e\\x00\\x5d\\x0d\\xd7\\x42\\x78\\x1d\\x47\\xe8\\x94\\x47\\xc4\\xe1\\xd8\\x1b\\xf7\\xe6\\x15\\x4f\\x8f\\x73\\xaf\\x03\\x36\\x1a\\xd5\\x6e\\xa3\\xc0\\x60\\x00\\x75\\x4b\\x9f\\x32\\x7d\\x4e\\xde\\xac\\xc4\\xd3\\x48\\xaf\\xb5\\x48\\x23\\xe1\\xc9\\xd4\\x9c\\xd8\\xff\\x2b\\x19\\xf4\\x20\\x21\\xb4\\x0d\\x58\\x0c\\x39\\xce\\x3d\\x24\\x36\\x61\\xb8\\x54\\x21\\xfe\\xc9\\x15\\xba\\x9d\\xd2\\x76\\x2f\\x85\\x0b\\xd2\\x08\\xfd\\xbf\\x20\\xff\\xab\\xa5\\x6a\\x46\\x86\\x60\\xf1\\x7c\\x00\\xfb\\x1c\\x0f\\x4e\\x85\\x27\\xa5\\x09\\xdd\\x4e\\xec\\x13\\x36\\x0c\\xf6\\xe3\\xca\\xc5\\x42\\xb8\\x75\\x18\\x2f\\x2a\\x7c\\xe7\\xbe\\x0a\\x33\\x30\\x2f\\xe2\\x6d\\x36\\x29\\x62\\x93\\x84\\xe3\\x5c\\x06\\x78\\x9d\\xe6\\x34\\xe9\\x0e\\x96\\x4f\\xbd\\xa8\\xcb\\xba\\x98\\x11\\x1e\\x22\\xe8\\xd0\\x76\\x26\\x84\\x26\\x6a\\xab\\x76\\xae\\xba\\x4a\\x38\\x07\\x78\\x69\\x68\\x14\\xa1\\xe3\\x11\\x94\\x3c\\xb3\\x50\\x58\\x92\\x64\\x0c\\x44\\xe3\\xaa\\xc4\\x53\\x0c\\x50\\xac\\x60\\x4a\\x8d\\x2c\\xcc\\x7c\\xea\\xbf\\xfe\\xa4\\xaa\\x3d\\x7f\\x48\\xa6\\x6d\\xcd\\x75\\x88\\xb8\\x02\\x09\\xdb\\xc1\\x73\\xf0\\xc6\\x63\\xe8\\xfc\\x87\\xa3\\x6e\\x89\\x2e\\xc9\\xa3\\xff\\x8f\\x60\\xd2\\xe0\\xd8\\x70\\x4e\\x5b\\x6c\\xbb\\x87\\x32\\x75\\x15\\x1a\\xd4\\xcc\\x00\\x57\\x16\\x50\\x31\\x90\\x50\\x39\\x65\\x1c\\xa1\\x0a\\x95\\xc6\\xfd\\xa3\\xb2\\x78\\x27\\xa6\\x57\\xef\\x9a\\x5f\\xc3\\xeb\\x5b\\x53\\xca\\xc6\\x1d\\xda\\xf5\\xa4\\x17\\x04\\xc8\\x78\\x57\\x0c\\xbc\\x3c\\x41\\xc4\\x75\\xb1\\x17\\xc0\\x5e\\xab\\x0b\\xb1\\x96\\xbc\\xb7\\xc4\\x33\\x34\\xde\\xbd\\x64\\xb9\\xe3\\x74\\x50\\xd2\\x3f\\x5c\\x10\\x16\\x1e\\xc5\\xab\\x4f\\xcc\\xd7\\xcf\\x30\\x8e\\x2a\\x99\\x95\\xcc\\x9e\\x57\\x8b\\x85\\xe8\\x28\\x5a\\x52\\x08\\xb9\\xef\\xd4\\x2a\\xf9\\xcf\\x2a\\xc2\\xb3\\xb7\\x46\\x42\\x54\\x88\\x9a\\x21\\x87\\x31\\x7e\\x32\\x49\\x97\\x09\\xb9\\x13\\x95\\x3a\\xd4\\x6f\\x1c\\x23\\xe1\\xb6\\xb5\\x6f\\x02\\x4c\\x4a\\x7d\\x48\\x46\\x11\\x92\\xc0\\x1c\\x56\\xc5\\x4c\\x56\\x47\\x91\\xec\\x0a\\x67\\xb6\\x1a\\xcb\\xf9\\x57\\xe6\\xd0\\xd7\\xda\\x80\\x53\\xed\\x13\\xa4\\x18\\x93\\xd7\\x67\\xfc\\x57\\x37\\xcd\\x19\\x55\\x53\\xda\\x5d\\x5b\\x07\\x06\\x5f\\x47\\xd7\\x2a\\x35\\xc4\\x2b\\x00\\x1e\\xb6\\xdb\\xd0\\xf8\\xe7\\x7a\\x4b\\x76\\xa6\\x26\\x61\\x92\\x64\\x7f\\x41\\x55\\xea\\x11\\xbd\\x12\\x37\\xba\\x77\\xc8\\x7c\\x62\\xbf\\x4b\\x01\\x14\\x9f\\xc5\\x8b\\xc2\\x8f\\x0b\\x5a\\x28\\x64\\x85\\xd3\\x71\\x7d\\x32\\x39\\x64\\x04\\x62\\x18\\xe7\\x0c\\x7e\\x38\\xb7\\xd5\\xe7\\x4b\\xa6\\xb1\\x2b\\x02\\x2f\\x18\\x19\\x7d\\x92\\xc1\\x3b\\xca\\x89\\x33\\x5c\\x85\\x6c\\xbc\\x57\\x56\\xaa\\x3b\\x64\\xec\\x1f\\x46\\xe3\\x96\\xb1\\x16\\x1c\\x87\\x1c\\xd2\\xdf\\xde\\xd1\\xa4\\xec\\x91\\x92\\x74\\x29\\x37\\xc0\\x70\\x45\\x31\\xc7\"},\n{{0xac,0x0f,0x7f,0x04,0x18,0xde,0x67,0xe3,0x48,0xfa,0x6d,0x56,0x86,0xc4,0x6d,0x21,0xca,0x72,0x62,0x2e,0xe6,0x9e,0xaa,0xbe,0x00,0xd5,0xc9,0x07,0x5a,0x34,0xf1,0x79,},{0xfe,0xab,0xde,0x08,0xf0,0x0a,0x2b,0x68,0x2b,0xce,0x9d,0x45,0x99,0x0b,0xf4,0x5a,0xfc,0x95,0x83,0x39,0xdc,0x44,0x10,0x6d,0xad,0x33,0xb2,0xc4,0x90,0xef,0x70,0x90,},{0x75,0x91,0xcf,0x82,0x57,0xbe,0xad,0x39,0xa1,0xad,0x3b,0xa1,0x91,0x8d,0x51,0x8e,0x67,0x24,0x35,0x6b,0xf6,0x25,0xa5,0x73,0xea,0xe5,0x01,0xd1,0xaf,0x94,0x6c,0x13,0xc2,0x90,0xcb,0x63,0x15,0x6e,0xc9,0xd3,0x62,0x72,0x6e,0xe5,0x0b,0x39,0xfc,0x0a,0x7a,0x2b,0xbd,0x69,0xd4,0xa8,0x1b,0x75,0x93,0x2a,0x90,0xf8,0xc7,0xac,0x7d,0x03,},\"\\xe8\\xd0\\xe8\\x32\\x53\\x35\\xe0\\xf3\\x5a\\x85\\x46\\x7b\\xee\\xd1\\xe1\\x1c\\x6a\\x20\\x78\\xc3\\x5a\\xe4\\xa4\\xa1\\x05\\x43\\xed\\xe4\\x0c\\x17\\x12\\xbc\\x95\\x20\\x12\\xd2\\xf8\\xfe\\xc1\\x05\\xae\\xf7\\xc6\\xc6\\x5b\\x36\\x34\\xb4\\xa7\\x4b\\x22\\xb4\\x98\\xb9\\x13\\x50\\x7d\\x1f\\x6c\\xfd\\xe8\\x38\\x58\\xe6\\x83\\x0c\\x0a\\xf4\\xf4\\x64\\xa6\\x89\\x9d\\x5c\\x4e\\x27\\x9a\\xff\\x36\\x75\\x4c\\x21\\xda\\x80\\xa1\\xbb\\xd1\\xdc\\xf4\\x62\\x20\\x37\\x5b\\x1e\\x11\\x2a\\x5a\\x72\\xf1\\xab\\x6e\\x8f\\x64\\x19\\x42\\xf6\\x6d\\x9b\\xbd\\xbb\\x17\\x9c\\xf0\\x13\\x9e\\xa8\\xde\\xb0\\xf4\\xb8\\x14\\xf5\\x0c\\x51\\x33\\x29\\xa1\\xa0\\xe2\\x67\\xc4\\x43\\x3a\\x23\\x31\\x82\\xbc\\x4a\\x2a\\xcb\\x2c\\x6d\\x4f\\x00\\xb2\\x40\\x94\\xd3\\xbd\\xc0\\xeb\\x81\\xcf\\x37\\xd3\\x82\\x60\\xc2\\x10\\x7d\\xd9\\x49\\x06\\x13\\xd2\\x76\\xee\\x1f\\x72\\x26\\x6c\\x6e\\x4a\\xcc\\xa5\\x24\\x98\\x11\\xa0\\xf8\\xa7\\xda\\xe6\\x6a\\xed\\xb7\\x5c\\x3d\\xf4\\xc8\\xca\\x3c\\xb5\\xd9\\xc5\\x67\\xba\\x54\\x1e\\xe5\\xa9\\x14\\x0c\\x50\\x58\\x72\\x72\\xaf\\x34\\x53\\x0a\\xb8\\xb0\\x8b\\x9e\\xc0\\x32\\xea\\xc0\\x60\\x39\\xe6\\x92\\x63\\x0e\\x2d\\x55\\x4d\\xf7\\x7c\\x1a\\x03\\x88\\xb3\\xca\\xaa\\x3b\\xe3\\x75\\x4a\\x84\\x96\\x1f\\xb2\\x99\\xe4\\x02\\x22\\x71\\x58\\xce\\x36\\x3e\\xac\\x26\\x47\\x8d\\x47\\x97\\x75\\xe5\\x68\\x5a\\xdb\\xf8\\x28\\xbb\\x35\\x5e\\x3c\\x89\\xcc\\xe2\\x41\\x50\\x3c\\x15\\x36\\x64\\x32\\xba\\x94\\xcd\\x3c\\xd9\\x54\\x79\\x14\\x4b\\x63\\x6e\\x0d\\xe7\\x0b\\x3f\\x16\\xd1\\xa3\\xca\\x51\\x8e\\x39\\x90\\x09\\xa4\\xc2\\x47\\xa7\\xf9\\x63\\x67\\xc7\\x14\\x66\\x08\\xaa\\xcc\\x00\\x14\\xfc\\x35\\xb8\\x4a\\xf9\\x93\\x3f\\x09\\xba\\xbb\\x89\\x93\\x7a\\xbb\\x8c\\xed\\x11\\x18\\x91\\x34\\x3d\\xdb\\x79\\xf6\\x0b\\x78\\x89\\x8a\\xb5\\x93\\x8f\\x8b\\xa3\\x81\\x4b\\xd8\\x00\\x26\\x05\\xb1\\xdf\\xd2\\x97\\xfa\\x07\\xc4\\x75\\xa0\\xd4\\xf8\\xf4\\x45\\x1a\\xcd\\x70\\x7d\\xe8\\xaf\\x6c\\x0e\\x88\\x18\\x83\\x3a\\x3a\\xbe\\x5c\\x96\\xd1\\xa8\\xc6\\xc9\\x6e\\x2c\\xb6\\x33\\x28\\xeb\\xa4\\x4d\\xd1\\xd3\\x46\\x84\\xe4\\x12\\xf2\\x88\\xe0\\x65\\x20\\x9d\\x11\\xeb\\x80\\x94\\xd2\\x2e\\x4c\\xc8\\x02\\x62\\x9c\\xcb\\xa3\\x39\\x26\\xbf\\x1a\\xd3\\x6a\\x62\\x85\\x13\\x8a\\xbe\\xe0\\x5c\\x5a\\x39\\xa4\\x75\\xf3\\xfd\\xd0\\xb3\\xec\\x8c\\x37\\x0c\\xd9\\x57\\xa8\\x37\\x9e\\xc2\\xcd\\xaf\\x03\\xe8\\x95\\xc1\\xba\\x12\\xb4\\x49\\xd6\\xcd\\x8b\\xe0\\xf3\\x5d\\x99\\xe2\\xb7\\xfb\\xaa\\x92\\xdd\\x54\\xe6\\x4e\\x7c\\x35\\xce\\xb8\\x8a\\x71\\xa6\\x80\\x52\\x7c\\xb3\\x73\\xaf\\xe1\\x4c\\xdd\\x15\\x8a\\x0b\\x90\\xbf\\x2d\\xae\\xc8\\x0d\\x2e\\xdb\\xdc\\x31\\x28\\xcd\\x6b\\x63\\xfa\\x53\\x2a\\x1c\\x27\\x8c\\xdf\\xe0\\xf8\\xeb\\xb4\\xab\\xba\\x5e\\x1a\\x82\\xbc\\x5c\\x3f\\xed\\x15\\xc5\\x79\\x5b\\xd9\\xff\\xb5\\x76\\x08\\x2c\\xc4\\x79\\xfa\\x1b\\x04\\xc5\\xc5\\xaf\\xca\\xd2\\x69\\xa0\\xf1\\xad\\xdf\\xe7\\x60\\x42\\xc3\\xa8\\xf1\\xf2\\x53\\x77\\xb6\\xcb\\x72\\xec\\x16\\x14\\xeb\\x63\\x83\"},\n{{0xb5,0xa7,0xc7,0x67,0x93,0x63,0x80,0xb3,0xe9,0x87,0x51,0xca,0xfd,0x3e,0xa8,0x9b,0x38,0x8a,0x32,0xcf,0x82,0x8b,0x32,0x1c,0x5b,0xd0,0xcc,0x8d,0xd8,0x5b,0xaf,0x00,},{0xbe,0x7f,0xa6,0x5f,0x1f,0x6b,0xe5,0x10,0x27,0xf8,0xb8,0x48,0xdb,0x7a,0x8c,0x40,0x49,0x61,0xbf,0x1e,0x21,0xa2,0x3d,0xf2,0x3b,0xb8,0xce,0x05,0x85,0x0c,0xda,0xa1,},{0x60,0xe4,0xd2,0x3f,0x1f,0x08,0xfc,0xe4,0x66,0xc9,0x91,0x5d,0xde,0xd9,0x32,0x56,0xb5,0x2b,0x32,0x7e,0x5f,0x81,0xfb,0xb3,0x1d,0x1d,0x10,0xd3,0x21,0xc3,0x90,0x36,0x6e,0xf0,0x01,0xfd,0x75,0x9a,0xa9,0xd0,0xa5,0x51,0x62,0xd5,0x36,0x4d,0x91,0x8b,0x48,0xc7,0x32,0x7e,0x77,0xcf,0x53,0x58,0xbc,0x43,0x19,0xe3,0x25,0xcd,0xd6,0x08,},\"\\x6b\\x67\\xc7\\x95\\xd6\\x6f\\xac\\x7b\\xac\\x84\\x42\\xa6\\xc0\\x99\\x2c\\xb5\\x75\\x88\\x43\\xb3\\xe3\\x93\\x9e\\x3c\\x27\\x6c\\x6e\\x90\\x08\\xda\\x82\\x00\\x76\\x77\\xbf\\x9e\\x67\\xe9\\xac\\x5a\\x1a\\x0f\\x48\\x6b\\xea\\xc0\\xd8\\x56\\x19\\x1f\\xae\\x25\\xa1\\x27\\x39\\x2b\\xed\\x46\\x9b\\xc7\\x8d\\xeb\\x0c\\x4b\\x89\\x3f\\x67\\xf1\\x71\\x6d\\x83\\x50\\x90\\x77\\xe4\\xa1\\xbf\\xd4\\x13\\x6d\\x03\\x15\\x2d\\xcc\\x3b\\x76\\xd9\\x52\\x49\\x40\\xa6\\x06\\x4c\\x66\\x9f\\xbf\\x51\\xf6\\xb9\\x10\\x34\\xb6\\xd5\\xf2\\x89\\x86\\x78\\xa1\\x3a\\x24\\x70\\xf6\\x64\\x1e\\xc8\\x02\\x45\\x7c\\x01\\x02\\xc3\\xeb\\xf6\\x34\\x5c\\x32\\x7e\\x74\\x1b\\x80\\x64\\x4b\\x3a\\x99\\xbf\\x72\\xb5\\x9a\\xb8\\x01\\x6f\\x35\\xd2\\x51\\x88\\xa0\\x85\\x75\\x0d\\xc0\\x60\\xe5\\xa8\\xd5\\x24\\xae\\x21\\x3f\\x07\\x8f\\x28\\x8c\\x7b\\x34\\xbc\\x41\\xf3\\xce\\x35\\x6b\\xf2\\xda\\xfd\\xd2\\xe0\\xdb\\x4f\\xb8\\xd7\\xc2\\xc3\\x19\\xf9\\x90\\x60\\x05\\x97\\x17\\x02\\xe4\\x9c\\xa6\\x2e\\x80\\x50\\x54\\x0d\\x41\\x21\\xd2\\x42\\xf2\\xee\\xab\\x1b\\xd1\\x34\\xe6\\x0b\\xf1\\x1b\\x3e\\xc7\\x1f\\x77\\x65\\xa9\\x7c\\x0e\\x09\\x84\\x55\\xe5\\x9d\\x22\\x35\\xd6\\xb3\\x7e\\x7c\\x9f\\x5b\\x21\\xfa\\x11\\x2c\\x3b\\xa3\\x9e\\x4e\\xa2\\x00\\x61\\x4f\\x58\\xdf\\xb3\\xeb\\x7b\\x83\\x6f\\x0b\\xec\\x1d\\xdd\\x43\\x8d\\x14\\x22\\x45\\x0a\\xe7\\xde\\xd1\\xdf\\x9d\\x71\\xe5\\xd9\\xbc\\x8f\\xa3\\xb6\\xe6\\xf7\\x84\\x46\\xce\\x7c\\x79\\xd0\\xbc\\xfb\\x1c\\x2d\\x26\\xc6\\xfe\\xce\\x68\\x68\\x2d\\xff\\xc6\\x0a\\x9c\\x6e\\x0a\\xd0\\x5f\\x2a\\x09\\xf2\\x1d\\x75\\x23\\x25\\x1c\\xb0\\xc3\\xd0\\x8e\\xfb\\xbf\\x8a\\xc1\\x63\\x39\\xd7\\x17\\x02\\x4d\\x67\\x60\\x24\\xc1\\xee\\x3c\\x1f\\x62\\xc5\\xae\\xab\\x7f\\xff\\x93\\x7c\\x57\\x45\\x4d\\xf7\\xbd\\x96\\xf9\\x84\\x4a\\x2a\\x39\\x99\\x58\\x41\\x8a\\xaa\\x6f\\x18\\x48\\xbe\\xbf\\x7b\\xf1\\x29\\x2c\\x24\\xeb\\x5c\\xd8\\xea\\x56\\x34\\x0c\\x5b\\xeb\\x26\\x88\\x02\\x4a\\x69\\x53\\x27\\x5b\\xe6\\xef\\xd1\\xb7\\x1b\\xa8\\xbe\\x6e\\xb7\\x7f\\x0c\\x65\\xa7\\xc5\\x11\\x1b\\x96\\xc4\\xc1\\xf3\\x9c\\xb7\\xaa\\xf8\\x3f\\xda\\xae\\x8d\\x14\\x8d\\x7a\\x8a\\xf4\\x0a\\xe9\\xe6\\x51\\x91\\x9f\\x7c\\xe2\\x8c\\x8b\\x2b\\x6e\\x45\\xe4\\xd3\\xd5\\x6f\\xdd\\x54\\xd0\\x0c\\x24\\x12\\x79\\x0c\\xbd\\x6f\\x80\\xe1\\x08\\x19\\xe0\\xb8\\xf3\\x7c\\x84\\xfa\\x00\\x49\\x88\\xad\\xaf\\xcc\\xbb\\xc2\\x1c\\x63\\xd6\\xbf\\x2e\\x73\\x2d\\x9d\\xd6\\x3b\\xd4\\x9b\\x04\\x12\\xb9\\x67\\x4e\\x1e\\x88\\xf6\\x14\\x2f\\x7f\\x86\\x7f\\x1f\\x26\\x89\\x1b\\x22\\x43\\x04\\x23\\xce\\xc4\\xdb\\x91\\xb6\\x1c\\x2a\\xbc\\x5c\\x8f\\xbd\\x46\\xb8\\xb9\\x35\\x96\\xfc\\x51\\x60\\x68\\x31\\x36\\xe2\\x11\\x29\\x82\\x27\\x96\\xeb\\x5e\\xa0\\x88\\xe0\\xa7\\xd8\\x12\\x1b\\x25\\x57\\x2e\\x3e\\xc3\\x77\\x43\\xd1\\xff\\x6d\\x8d\\x1c\\x35\\x36\\x43\\x9a\\x10\\xe8\\x4a\\x66\\x5f\\x2c\\x75\\xee\\x73\\xcd\\xc6\\xff\\xac\\x4c\\xc2\\x87\\x24\\x46\\x9f\\x79\\x70\\xb4\\x75\\x07\\xdf\\x3e\\x1b\\x14\\xd4\\x77\\xae\\xc2\\xbb\\x20\"},\n{{0xe1,0x36,0xf3,0x98,0xa6,0x05,0xd1,0x34,0x57,0x84,0x8c,0xea,0xd0,0x7c,0x72,0x86,0xf4,0x2e,0x2f,0x28,0xdf,0x8c,0x12,0x8a,0x3d,0x0b,0xb7,0x2b,0x29,0xaa,0xcc,0x19,},{0x6a,0xa5,0x04,0x5a,0x66,0xf7,0x72,0xa5,0x71,0xfe,0x3e,0x42,0xd1,0x17,0xef,0xcd,0xf6,0xc4,0x95,0x91,0x99,0x61,0x86,0x01,0x2f,0xa9,0x8f,0x7c,0x48,0xe0,0xcd,0xa7,},{0x75,0xa4,0x5c,0x6b,0x95,0x66,0x89,0x98,0x29,0xb4,0x1e,0xe5,0x17,0xb7,0x04,0x5a,0x47,0x3a,0x4f,0x7a,0x26,0x41,0x43,0x9b,0x5d,0x7c,0x56,0x73,0xe0,0x0d,0x8f,0x5c,0x06,0x6f,0x12,0x91,0xf8,0x5d,0xea,0xda,0x05,0x02,0xbd,0x16,0xe9,0x70,0x9f,0x82,0x7d,0x47,0x51,0xf2,0x87,0x38,0x62,0xe8,0x21,0x9e,0x57,0x74,0x6a,0x19,0xa9,0x00,},\"\\xd3\\x28\\x57\\x9d\\xe4\\xc5\\x37\\x2f\\x3b\\x38\\x2c\\x48\\x01\\x1b\\x2d\\x4c\\x60\\x29\\xf9\\x04\\xf3\\xa3\\x3e\\x07\\xd0\\x83\\xd7\\xe2\\xb0\\x37\\x56\\xaf\\x2c\\x4c\\x97\\xa2\\xd6\\x6c\\x10\\xec\\x41\\x54\\xd8\\x74\\x79\\x20\\x42\\xb6\\x46\\xe4\\xaa\\xe5\\x10\\x1d\\x50\\x1b\\xd1\\xbf\\x6f\\x51\\x17\\x51\\xd0\\xaa\\xf8\\x21\\xcd\\x7c\\x0b\\x3e\\xe6\\xd0\\xd7\\xc6\\x90\\xa2\\x77\\x7f\\xe1\\x6b\\xdc\\x7e\\x49\\xb7\\xda\\x4b\\xbb\\x4c\\xce\\x3b\\x61\\x8e\\xe9\\xb6\\xf2\\xe3\\xa1\\x92\\x40\\xcd\\xb7\\x07\\x33\\xb9\\x84\\xb1\\xc9\\x40\\xec\\x66\\x96\\x0b\\x72\\x8c\\xbb\\x87\\x4b\\x80\\x64\\x31\\x23\\x72\\x2d\\xb9\\xdb\\xbe\\x88\\x32\\x20\\x08\\x93\\x1b\\x1c\\x89\\x4e\\xf5\\xd2\\x10\\x99\\xe6\\x3e\\x7c\\x65\\x00\\x7a\\xcd\\x61\\x78\\x4d\\xb4\\x99\\x4a\\x2f\\xb4\\x0c\\x3e\\xfe\\x9c\\x47\\xfa\\xd6\\x37\\x63\\xdd\\xe0\\x6f\\xa0\\x17\\xa2\\x6b\\x82\\xe7\\x1b\\x9d\\xaa\\xbc\\x4f\\xf0\\xf6\\xc7\\x9b\\x8c\\xa7\\xcc\\xb4\\xdc\\x20\\x31\\xbe\\xf1\\x08\\x73\\x67\\xc7\\x08\\x69\\x74\\xa0\\x05\\x66\\xde\\x41\\xa7\\x1e\\x11\\xd9\\x93\\xab\\xe4\\x33\\x56\\x98\\x92\\xb8\\xf7\\x5d\\x76\\x37\\x99\\x32\\x45\\xc8\\x84\\x47\\x8a\\xbe\\x3f\\x95\\xf4\\x4b\\x0a\\x4b\\xbe\\xde\\xfe\\xf8\\x90\\x6b\\x75\\xe0\\xd3\\x40\\x20\\xae\\x53\\x64\\x55\\xb0\\xe0\\x6f\\x9b\\xfe\\xe1\\x1e\\xc9\\xb8\\x60\\x4b\\xac\\x2c\\xc6\\xeb\\xe0\\x8c\\x8f\\xd5\\xf5\\xcc\\xcc\\xcb\\xc1\\x61\\x7b\\x7c\\xf6\\x9a\\x3c\\x51\\x2e\\x1f\\x0b\\xdb\\x58\\x5d\\xf5\\xe1\\x27\\x43\\x06\\x1f\\x7c\\x20\\x53\\xbc\\x37\\x14\\x43\\x61\\xc0\\xb3\\x5f\\xd3\\x9d\\x56\\xb1\\xef\\xaf\\x92\\xc6\\x10\\x36\\x01\\x93\\xec\\x20\\x59\\x8b\\x82\\x85\\x80\\x50\\xa6\\xd9\\x9e\\x08\\x2b\\xce\\xfd\\xbd\\x53\\x18\\xee\\x5e\\xfb\\x3b\\x26\\x0f\\x32\\x76\\xf3\\xc7\\x3f\\x9c\\x24\\xce\\x0c\\xda\\x33\\xc7\\xac\\xc5\\x0c\\xa5\\xdd\\x61\\xbd\\xb8\\x5d\\x79\\x38\\x25\\xf6\\x73\\x2a\\x6e\\x33\\x0c\\xe6\\x72\\xac\\x44\\xfe\\x6b\\x2b\\x9a\\xfe\\x6e\\x2e\\x96\\x5c\\x02\\xd2\\xa1\\xfe\\x0b\\x57\\xcb\\x1b\\x31\\x7c\\x1d\\x31\\x3e\\xfd\\xc3\\x56\\x49\\x2f\\xe8\\x96\\xfd\\x14\\x9d\\xae\\x51\\xc9\\x5c\\xcd\\xbb\\x7d\\x11\\xf7\\xd6\\x10\\xe0\\xc6\\xe2\\xfd\\x3e\\x57\\xfc\\xfe\\xf1\\xc5\\x7c\\x71\\x19\\xa0\\xaf\\x6c\\x78\\x21\\xfe\\xcd\\xb8\\x9d\\x80\\x30\\x2b\\x49\\xfa\\xd4\\x17\\x43\\xf3\\xd2\\xd7\\xa0\\x75\\x15\\x4b\\x31\\x43\\xe5\\x1a\\xeb\\x94\\x7d\\x4b\\x5e\\x8b\\x7e\\x4c\\xa8\\x6f\\xec\\x3e\\x80\\xbd\\x9a\\x78\\x6e\\x4e\\x46\\xed\\x1e\\x6e\\x9f\\x7e\\x0b\\x63\\x52\\x66\\xd9\\xfa\\x09\\x7a\\xa9\\xe2\\x0f\\x32\\xe3\\xd2\\x77\\x2d\\x7c\\x1f\\x00\\x8b\\xcd\\xd3\\xf9\\x2c\\x72\\x83\\xc5\\x77\\x90\\xc3\\x62\\x2c\\xba\\xd3\\xca\\x35\\x80\\x3c\\x45\\xc8\\x69\\xdc\\x37\\x7f\\xf3\\x6b\\xd7\\xc0\\xe6\\xf1\\xbb\\x89\\x2f\\x73\\x29\\xa6\\xe0\\x8d\\xf1\\xdb\\xeb\\xc8\\x1d\\xc7\\xb1\\x15\\xf8\\x52\\xe3\\x6a\\xe5\\xd9\\x28\\x72\\x5f\\xa7\\xc6\\xfb\\x9f\\x28\\xb0\\xfb\\x39\\x4f\\x9e\\x38\\xfd\\x87\\x62\\x5c\\x5f\\xa2\\x3a\\xab\\xa4\\x70\\x54\\xe8\\xcf\\xea\"},\n{{0x97,0xb6,0x70,0x2e,0x24,0x68,0x05,0xdb,0xcf,0xc7,0xfa,0x42,0x4a,0x8c,0xaa,0xbc,0xf2,0x62,0xd4,0x66,0xa0,0x5e,0x0d,0xd2,0xd4,0xe7,0xc3,0x74,0xd5,0x7d,0x52,0x51,},{0xa7,0x16,0xc3,0xd5,0xce,0x78,0xf4,0xd9,0xc5,0xbe,0xe3,0x44,0x7d,0xda,0xf4,0x88,0x1c,0x98,0x6e,0xfd,0xf6,0x67,0xac,0x89,0x77,0xb4,0xfb,0x69,0xb5,0xa7,0x11,0x0a,},{0x90,0x00,0x55,0x41,0xdc,0xc1,0xd7,0xab,0x83,0x7f,0x4d,0xe5,0x39,0x3f,0xad,0xd6,0xa9,0x2b,0x26,0xa7,0xd9,0x3a,0xf3,0xf6,0x69,0xe0,0xf1,0xbf,0xd6,0x21,0xcb,0xd0,0x0c,0x8a,0x23,0x05,0x6d,0x2d,0xa6,0x78,0x65,0x57,0xc8,0x28,0xa4,0x9b,0xe1,0xe4,0x02,0x1d,0x99,0x31,0x12,0x35,0xac,0x0d,0x4d,0x56,0xee,0xfc,0x7c,0x95,0x36,0x05,},\"\\xea\\xa8\\x6c\\xf7\\x6f\\xcb\\x65\\xc6\\xf9\\xfc\\x20\\x8a\\xc3\\x6f\\x28\\xb2\\x00\\xd3\\xb4\\x03\\xac\\xa7\\x32\\x07\\x46\\x1d\\x8d\\x96\\xaf\\xa2\\x46\\xd7\\xc6\\x9d\\x17\\xa7\\xa9\\xbf\\x77\\xf0\\x55\\x43\\x56\\x3a\\x7d\\x3e\\xca\\x1d\\x40\\x79\\xe2\\x29\\x38\\xab\\xa1\\xf6\\xe9\\xe0\\x4b\\x49\\xfb\\xc8\\xed\\x6f\\x63\\xb5\\x99\\x73\\x0d\\xe9\\x97\\x98\\x31\\xc0\\x2f\\x8c\\xba\\x61\\xe5\\x55\\x60\\xd7\\x11\\x0d\\x4c\\x6e\\x61\\x67\\x97\\x06\\xa7\\x15\\x5d\\x5a\\x67\\x3c\\x54\\xd1\\x6f\\xe4\\xd2\\x28\\xc2\\xec\\xa7\\x54\\x6f\\xaa\\x13\\x39\\xf2\\x6d\\x7a\\x0b\\xb4\\xee\\x33\\x96\\x11\\xaf\\xde\\xc9\\xa6\\x8f\\x5f\\xf5\\xb5\\xd2\\x03\\xb6\\x00\\x53\\x3a\\xd5\\xa3\\xb3\\x68\\xc8\\x5d\\xa1\\x15\\x63\\xf0\\x98\\xcc\\x26\\x87\\x1e\\x7f\\xa9\\x9a\\xef\\xd3\\x8c\\xc2\\x61\\x51\\xdb\\x3b\\x0b\\xae\\x38\\xdb\\x6a\\x87\\xb6\\x78\\x9e\\x58\\x40\\xb1\\x08\\x84\\xaf\\x51\\x1f\\x3e\\xcb\\x3e\\xcb\\xf9\\x4f\\xf8\\x6f\\xdb\\x90\\x55\\x05\\xa8\\xc3\\x4b\\x2a\\xa6\\x1f\\xf2\\xec\\x9e\\xc8\\xfe\\xbd\\x1d\\xfe\\xd0\\x96\\x5b\\x6f\\xc5\\xb9\\xf8\\x86\\x9d\\xc3\\xa4\\x75\\x59\\x97\\x4a\\x88\\x22\\x99\\x67\\x06\\xda\\xef\\xbc\\x6c\\x5b\\xf9\\x84\\xce\\x06\\xb0\\xd3\\x2b\\x31\\xcf\\x9d\\x8a\\xd1\\x36\\xae\\xd4\\xb0\\x52\\x58\\x6d\\xce\\x70\\x73\\xb7\\x67\\xb2\\x34\\xe4\\xa3\\x7b\\xeb\\xbc\\x39\\x3d\\xd2\\xe0\\xf7\\xd1\\x55\\x17\\x35\\x48\\xc3\\x8a\\x15\\x83\\xef\\x94\\xe0\\xaa\\x84\\xe7\\xfc\\xe0\\x4f\\xcc\\x9b\\x4e\\x30\\x0a\\xd0\\x99\\x44\\x9a\\x49\\x23\\x2a\\xbd\\xcf\\x3d\\x1a\\x6e\\x6f\\xca\\xb6\\x96\\xf5\\x99\\x6f\\x9b\\xd1\\xb9\\x48\\x5d\\x07\\x47\\x55\\xac\\x5b\\x42\\x97\\xfe\\xe3\\x12\\x4c\\x7c\\x03\\x97\\x6a\\x40\\xd5\\x70\\xbe\\xae\\xc2\\xfa\\xc9\\x92\\x33\\x9f\\x88\\x5f\\x74\\xd4\\x0e\\xd4\\xac\\x87\\xa4\\xf4\\x0c\\xef\\xbc\\x48\\x64\\xf4\\x4c\\x36\\x83\\xaa\\x8f\\x10\\x26\\xe2\\xc3\\x7a\\xef\\xfc\\xeb\\xfd\\xfe\\x24\\xdd\\x0b\\x01\\x9c\\x36\\xa7\\x98\\x88\\x20\\x30\\x04\\xb2\\xad\\x83\\xe8\\x92\\x21\\xf3\\xf6\\x36\\xf4\\x55\\xbb\\x64\\xe1\\x7d\\x17\\x54\\xc7\\xc6\\xdd\\x7f\\xc0\\x9a\\x0d\\x65\\xdd\\xdd\\xed\\x46\\x22\\xfc\\x4f\\x9f\\xba\\x07\\x2b\\x45\\x10\\x34\\x35\\xe1\\x02\\x20\\xa5\\x86\\xf1\\x52\\x26\\xd2\\xeb\\x37\\x7f\\x40\\x64\\xd3\\xff\\x37\\xcb\\xb4\\x70\\x5a\\x1f\\xaa\\xf5\\xb3\\x48\\xf8\\xc0\\xef\\x7f\\xd1\\x56\\x4d\\x42\\x86\\x88\\xf5\\x8f\\x33\\x92\\x96\\x7c\\xf3\\x96\\xa8\\xff\\x2f\\xd9\\xe7\\xb5\\x17\\xb7\\xd6\\xa5\\xed\\xe7\\x44\\x03\\x73\\xd8\\xcc\\x1a\\x83\\x99\\x00\\xe8\\x4d\\x42\\x25\\x42\\x83\\xd9\\x69\\x9c\\x7c\\xa3\\x7e\\x47\\x76\\x92\\xa3\\x49\\x40\\x08\\xb8\\x04\\x44\\xc5\\xcf\\x61\\x4c\\xbb\\xc1\\x69\\xbf\\xb9\\x29\\x63\\x03\\xc6\\x45\\xe2\\xce\\x28\\xd1\\x68\\xdc\\x6c\\xba\\xef\\xae\\x9c\\x73\\x19\\x1f\\x57\\x15\\x1a\\xa4\\x73\\x00\\x9d\\x29\\xe1\\x80\\x0b\\x10\\xf4\\xc4\\x98\\x60\\x9b\\xa1\\x15\\x20\\x98\\x5c\\x78\\x09\\x20\\x58\\x69\\x6f\\xdb\\xca\\x9c\\x02\\x0e\\x2d\\xfb\\x8a\\x04\\x3a\\x3d\\xe8\\xe4\\x52\\xd5\\x8c\\xd1\\xad\"},\n{{0xd1,0x52,0x8c,0x14,0x06,0xa6,0xe4,0x94,0xa0,0x2f,0x63,0x53,0x05,0xfa,0x74,0xd7,0x45,0xc6,0x93,0x27,0xfd,0x31,0xb7,0xd2,0xc2,0x62,0x3d,0xe2,0xc0,0x30,0xed,0x85,},{0x0c,0xfe,0x36,0x9c,0xf9,0x3d,0xaf,0x6d,0x53,0xef,0x02,0x8d,0xdb,0x9f,0x00,0x04,0x43,0xb0,0x97,0x2f,0xe2,0x53,0x2f,0x83,0xa4,0x1c,0xe6,0x57,0xc1,0x83,0x6c,0xa3,},{0xb8,0x39,0x9b,0xc3,0x32,0x6c,0xba,0x0a,0x93,0xa4,0x24,0x97,0x16,0x8b,0xf5,0x7f,0x91,0x06,0xee,0x43,0xd3,0x9b,0xf0,0xfc,0x86,0x68,0x51,0x99,0xdc,0x6e,0x0a,0x13,0xb9,0xc7,0x24,0xef,0x17,0xe7,0x88,0x2a,0xf8,0xc2,0xeb,0x70,0xf6,0xc9,0xe4,0x2d,0xfa,0x2f,0xbf,0x0c,0x1c,0xb5,0x00,0x2b,0x58,0xf1,0x08,0x66,0x19,0x73,0x3e,0x02,},\"\\xab\\xb3\\x67\\x3f\\x3f\\xa1\\x7a\\x33\\xa7\\xaf\\xf7\\x6e\\xac\\x54\\xe7\\x68\\x7c\\x04\\xbc\\x84\\xf7\\x66\\x65\\x1a\\x8b\\x24\\xba\\x22\\x94\\x79\\x08\\xb0\\x4c\\xa4\\x59\\xfe\\xb9\\x8a\\xce\\x7c\\xab\\x1e\\x74\\x33\\xa6\\xa6\\xbe\\xff\\xd8\\xd9\\x50\\x4e\\x29\\x91\\xda\\xa0\\x64\\x4d\\x61\\xb8\\xb2\\xe4\\x54\\x48\\xf5\\x4d\\xf8\\x81\\x3f\\x50\\xc4\\x18\\xb4\\x8f\\x49\\xe1\\x03\\x4e\\x85\\x1c\\xbe\\xc3\\xef\\x0a\\x18\\x50\\xef\\x72\\x67\\x33\\xaf\\xaf\\x68\\xe1\\xa4\\x61\\x04\\x16\\x51\\xc1\\x38\\xd5\\x4e\\x4e\\xf7\\x81\\x87\\xaf\\x9a\\x73\\x42\\xf7\\x12\\x87\\x27\\xf9\\x03\\xbf\\x4f\\xc5\\xef\\x3e\\x40\\xc6\\x4e\\xc2\\x6f\\x89\\x2f\\x59\\xad\\xd9\\x8f\\xe3\\x94\\x76\\x5a\\xaa\\x7d\\x09\\xca\\xe8\\x1b\\x9f\\x69\\x9a\\x9d\\xd8\\xbf\\x2e\\x2f\\xe8\\xe1\\xec\\x78\\xfc\\x88\\x4e\\xaa\\x0d\\x2d\\xbd\\xbf\\xb8\\xc1\\x68\\x83\\x3e\\xe0\\xd2\\x18\\x03\\xcc\\x35\\xdc\\x62\\x8d\\x7c\\x07\\xe0\\x44\\x04\\xfb\\x60\\xe8\\xc4\\x90\\xa8\\xdd\\x34\\xed\\xbc\\xba\\xaf\\x80\\xcc\\xda\\xe3\\xf7\\xd3\\x73\\x9e\\x0e\\x89\\x70\\x23\\xee\\xb5\\xb1\\xa8\\xc0\\x0a\\x96\\x73\\xc5\\x92\\x58\\x24\\x0d\\xdd\\x44\\x20\\x65\\x0f\\xe5\\x77\\x1f\\x7e\\x28\\xcb\\x23\\x99\\xf5\\xe1\\xe0\\x2a\\xd0\\xb6\\x43\\x2d\\x9b\\x49\\x60\\x8f\\xcf\\x0b\\x1c\\x0d\\x7c\\x41\\x2a\\x44\\x52\\x55\\xb8\\xba\\xdc\\x53\\x21\\xc2\\x4c\\x1a\\xc9\\x2c\\x79\\xa0\\xba\\xcc\\xb9\\xde\\xff\\xed\\x02\\xd1\\x2f\\x55\\x36\\xcd\\x59\\x5d\\xc6\\x60\\x83\\xb3\\x3a\\x36\\x03\\xa9\\xd1\\x6e\\xce\\xa2\\xbf\\x38\\xc4\\xf2\\xaa\\xf5\\x70\\xf3\\x0d\\x21\\x16\\x2b\\x2e\\xfd\\x7e\\x4d\\x5e\\xbf\\x1e\\xca\\xe9\\x58\\x8e\\xee\\x36\\xdd\\x9d\\x3d\\x8e\\x3b\\xe7\\xbc\\x6d\\x4b\\xc2\\x18\\x56\\x22\\xf1\\x1d\\x1d\\xa7\\xc4\\x9c\\x93\\xe6\\x23\\xac\\x56\\xfe\\xe7\\xe3\\x70\\x6d\\xb8\\x31\\x3c\\xf9\\x26\\xbe\\x92\\xe5\\xc8\\xa5\\x39\\xfd\\x16\\xb0\\xf4\\x38\\xda\\x8e\\x51\\xa5\\x1f\\x2d\\x27\\x64\\x03\\x56\\x12\\x4e\\xf7\\xbe\\x2f\\x91\\xff\\xa1\\x79\\x6a\\x91\\xb1\\x23\\x01\\x93\\x4d\\xde\\xf0\\xc7\\x93\\x8a\\x7a\\x45\\xf3\\x6f\\x53\\xb6\\x32\\x2d\\x9c\\x8f\\x9d\\x27\\x5e\\x1c\\xd2\\xc0\\xf1\\x29\\xf8\\xab\\x8d\\x74\\x15\\x5b\\x5d\\x9e\\x5c\\x15\\xc0\\x15\\xb0\\xb0\\x00\\x03\\xb2\\xbd\\xdf\\xa0\\xbc\\xfc\\xc6\\x93\\xa1\\xdf\\xcb\\x4f\\x53\\xda\\xec\\x12\\x6d\\x16\\x69\\xf3\\x3f\\x39\\xad\\x05\\x51\\x9e\\xf7\\xc5\\xce\\x40\\xe6\\xf4\\x57\\x3c\\x24\\x7a\\x32\\xc4\\xa0\\x16\\x28\\x31\\x35\\x2f\\x6d\\x55\\x8f\\xf5\\x83\\x6a\\x53\\x17\\xdb\\xc4\\x51\\x5b\\x3d\\xf2\\x69\\xa8\\xac\\x76\\xd6\\x43\\x6f\\x26\\x4b\\x64\\x56\\x1e\\x79\\x68\\xb5\\x82\\x21\\x08\\x48\\x7b\\x04\\x5c\\x92\\xd6\\xc6\\x14\\x2a\\x1c\\x28\\x55\\xb3\\x8b\\xee\\xbd\\x64\\x25\\x65\\x12\\x3c\\xc8\\x27\\xcb\\x18\\x31\\x19\\x9e\\x6f\\x12\\xa7\\xe4\\x23\\x68\\x56\\xb9\\x4d\\xad\\x73\\x8f\\x69\\xd1\\x10\\x6e\\x77\\x35\\xd7\\x11\\xf7\\xc6\\xa3\\xa3\\x37\\x80\\x41\\xfc\\x7a\\x21\\x10\\x3b\\xbf\\x86\\x69\\x07\\xd4\\xed\\xdd\\xaf\\xa0\\xe7\\xf1\\xbb\\x5f\\xfd\\x41\\xa6\\x0d\\x64\"},\n{{0x51,0x23,0x40,0xf9,0x61,0xf1,0x42,0xd1,0x91,0x5e,0x85,0xfe,0x4f,0xa0,0xf5,0x51,0xf8,0x08,0x92,0xe7,0x5a,0xcc,0xce,0x7c,0xd1,0x86,0x9e,0x6e,0x2c,0x9e,0x80,0x15,},{0x0c,0xa0,0x26,0x04,0xfa,0x87,0xe2,0xc2,0x05,0x06,0x25,0x1f,0x07,0x92,0xcd,0x21,0x25,0x85,0x6f,0x0a,0xb1,0x6d,0x66,0x3f,0x28,0x11,0x96,0x3b,0x1f,0x2d,0x81,0x72,},{0x6b,0xb4,0xd9,0x75,0xaf,0xae,0xf4,0x1e,0xa9,0xef,0x08,0x5a,0x68,0xc5,0x68,0xa0,0x5d,0xa3,0x7e,0xf2,0x1d,0xad,0x46,0x4e,0xd8,0x6a,0xc0,0xd4,0x08,0x0e,0x7d,0x01,0x29,0xfb,0x02,0x31,0x31,0xec,0xa5,0xf7,0xad,0xb2,0x58,0x6a,0x18,0xbe,0x40,0x56,0x2f,0xa2,0x76,0x4c,0xa8,0x07,0xe6,0x70,0xa0,0x59,0x6a,0x5c,0x54,0x7b,0xc0,0x01,},\"\\xaf\\x37\\xb2\\xc7\\x58\\x7a\\x8d\\x5b\\xc8\\x95\\xcd\\x35\\x77\\x46\\xab\\x03\\x55\\x2a\\x0a\\x56\\x1a\\x29\\x3d\\xc7\\x16\\x4e\\x39\\xb6\\xa1\\x33\\x3a\\x92\\x0b\\xb6\\xda\\xca\\x60\\x06\\x67\\x6e\\x99\\xbb\\x7e\\x92\\x8f\\x9e\\xa3\\x91\\xe5\\x48\\x02\\xa8\\xd3\\x15\\x96\\x28\\x9f\\xb9\\xbf\\xe3\\x00\\x00\\xcf\\x52\\xeb\\xf0\\xc1\\x24\\xa5\\x89\\x5b\\xce\\x33\\x98\\xc1\\xbf\\x53\\x56\\xbe\\x82\\x61\\x9b\\x8d\\xdc\\x15\\xa7\\x7c\\xa9\\x22\\x49\\x4b\\xdb\\x04\\xf5\\xc2\\xe1\\xb6\\xe8\\xff\\x77\\xae\\x74\\x9f\\xaf\\x2b\\x8a\\x41\\xd8\\x22\\xc1\\x7c\\x06\\xdf\\xb7\\xa5\\xf9\\x43\\x4d\\x8b\\xd7\\x15\\xec\\x87\\x78\\xe8\\x0b\\x81\\xd2\\xe8\\xd0\\x62\\x98\\x74\\x86\\x90\\xc6\\x55\\x52\\x83\\xc9\\x8b\\xb9\\xb1\\x9b\\x92\\x46\\x66\\x7b\\xc4\\x10\\x46\\xff\\x98\\xc2\\xc3\\x5d\\x16\\x1e\\x1f\\x4d\\x69\\xd2\\x54\\xec\\x5a\\x07\\x6f\\x25\\xbd\\x5c\\x7e\\x2c\\x98\\xca\\x3c\\x09\\xd8\\x08\\x33\\x96\\x2c\\xf9\\x66\\x02\\x87\\x88\\x40\\x96\\xeb\\x30\\xc4\\x6c\\x54\\x17\\x41\\x06\\xaf\\x4e\\x29\\x79\\xa1\\x12\\xf3\\xe8\\x94\\x4e\\xaa\\xf7\\x66\\x9c\\x40\\xd5\\xaf\\xb9\\x1a\\x02\\x4a\\xbb\\xeb\\x14\\x66\\x4e\\x30\\x89\\x03\\xe4\\xd2\\x6d\\x70\\x09\\x44\\x6e\\xe2\\xe8\\x30\\xab\\x5e\\xca\\x0d\\xbb\\xc5\\x13\\xfb\\x4e\\x04\\x35\\x1d\\xf2\\xf6\\x74\\x18\\x64\\xfb\\x23\\x71\\xb2\\x50\\x2b\\xe4\\x3d\\xc1\\x5f\\xc0\\x44\\x31\\xff\\xf5\\xeb\\x8d\\x4b\\x68\\xd7\\x24\\x62\\xae\\x32\\x2e\\x57\\xba\\x2d\\x4a\\xdd\\xdf\\x15\\xa1\\x90\\x2c\\x21\\x13\\xae\\xbd\\x3b\\x5d\\x61\\x29\\x17\\xc1\\xbb\\x73\\xe7\\x08\\xad\\x54\\x18\\xe7\\xd4\\x5e\\x4b\\x72\\x80\\xfc\\x88\\x96\\xab\\x80\\x85\\x3f\\xf5\\xf8\\xe9\\x8f\\x26\\x55\\x3f\\xc7\\x8e\\x30\\xb3\\xb0\\xd7\\x27\\xbf\\x6d\\x06\\x4a\\x8f\\x32\\x88\\x87\\x68\\xc5\\x1e\\xbb\\x61\\xb2\\xc6\\x00\\xb4\\x02\\x8a\\x77\\x06\\x0f\\xeb\\xbb\\x02\\xeb\\x3d\\x20\\x17\\x80\\xe7\\x45\\x66\\xc8\\x6a\\x34\\x03\\x18\\x36\\xbc\\xe9\\xea\\xda\\x81\\xe5\\xd0\\xf3\\x39\\x60\\xcb\\x2d\\xf0\\x8a\\xff\\x3c\\x97\\x49\\x21\\xfc\\x9b\\x7d\\x3a\\xa7\\xc8\\x1e\\x9c\\x67\\x1e\\xd6\\xd3\\x3e\\x7a\\xe5\\xed\\x03\\xa5\\x41\\x7d\\x7e\\x5c\\xd6\\xfa\\xac\\x91\\xb5\\x4b\\x8f\\x79\\x2f\\x48\\x28\\x3c\\x60\\x64\\x7d\\xe3\\xda\\x81\\x6c\\xa9\\x75\\x6c\\x5b\\xfe\\x1b\\xb8\\xb5\\x97\\x9e\\x57\\x54\\x01\\xbd\\xa3\\x4e\\x9c\\xbc\\x4d\\x77\\xe7\\x11\\xd6\\xb7\\x3b\\x82\\xda\\x19\\xda\\x47\\x3b\\x55\\xe8\\xe7\\x2d\\x34\\x1b\\x2d\\x85\\x03\\xe4\\x86\\x09\\xbe\\x0f\\xe2\\x91\\x44\\x4c\\x28\\x36\\x69\\xe5\\xde\\xad\\xea\\xf5\\x2a\\xa8\\xec\\x48\\xda\\x83\\xf5\\x32\\x8c\\xc0\\x99\\xfb\\x41\\xf8\\x2b\\xec\\xdd\\x58\\xd0\\x4b\\x1d\\x66\\x20\\x3d\\x73\\x7b\\xed\\x06\\xcf\\x21\\xc9\\x78\\x19\\xac\\x13\\xed\\x71\\x1c\\xa2\\x17\\xa5\\x7c\\xf7\\xd8\\x0f\\xf0\\x82\\xaa\\x1a\\x1c\\xf8\\xfe\\xa5\\x55\\xcd\\x2e\\x47\\xe4\\xdd\\xab\\x5e\\x3f\\x99\\x41\\xad\\x4f\\x77\\x5f\\x49\\x41\\x9d\\xca\\xdb\\x5b\\x00\\x4b\\x68\\xca\\xf4\\x5b\\x27\\xef\\x49\\xba\\x14\\xfb\\x52\\xb0\\x9f\\x1b\\x18\\x5b\\xe9\\xf9\\xc7\"},\n{{0xb1,0xb6,0x36,0xe9,0x57,0x57,0x4c,0x21,0xa9,0x57,0xa4,0x5b,0xd1,0x95,0xc6,0xf9,0xfe,0x4c,0xc1,0xc5,0x7e,0x84,0x13,0x4d,0x39,0xb4,0x2e,0x1a,0x84,0x32,0x9e,0xdb,},{0x95,0xe7,0x7b,0x15,0xdd,0xa4,0x7c,0xaf,0x69,0xb7,0x28,0x88,0xdd,0x69,0x96,0x1b,0xac,0xbe,0xc3,0xbc,0x75,0x35,0x30,0x03,0xe8,0xbf,0xf0,0xa4,0x3d,0xdf,0x4b,0x7a,},{0x76,0x3c,0x7d,0x0d,0x46,0x87,0x8e,0x5c,0x7e,0xcf,0x71,0x04,0xfc,0x1f,0x22,0x30,0xe4,0x61,0x78,0xa2,0x7c,0x75,0xf1,0x96,0x16,0x9c,0x02,0x79,0xed,0xb0,0x1c,0x28,0xfc,0xde,0x3b,0x0d,0x5b,0x86,0x35,0xcf,0xe3,0x39,0xfb,0x23,0x27,0x74,0xb2,0x20,0x6d,0xab,0x8a,0x46,0x0c,0xe4,0x17,0xab,0xf4,0x90,0xbb,0xfa,0x78,0x5c,0x02,0x05,},\"\\xe2\\x5d\\x32\\x9c\\xad\\x83\\x64\\xd2\\xde\\xc2\\x43\\x73\\xe9\\x2d\\x9d\\x50\\xfc\\x7a\\xbe\\x8f\\xdc\\x3d\\x0b\\x4e\\xe5\\x7e\\x1c\\xfa\\x5b\\x7c\\xd5\\x8c\\x23\\xbe\\x91\\x8f\\x05\\x17\\x9b\\xa8\\x41\\xb6\\x1e\\x18\\x00\\x34\\xca\\x7e\\x74\\xd4\\x9b\\x0a\\x1a\\x2c\\xeb\\xb4\\xbe\\x65\\x34\\x4c\\x91\\x3c\\x46\\xd3\\x26\\x52\\x33\\x6e\\x6b\\xda\\x4e\\xfa\\x3f\\x58\\x73\\x0d\\x39\\xa6\\x33\\xa1\\x4c\\xa3\\xd9\\xa6\\x2a\\xbb\\x0a\\x73\\x98\\xcc\\x29\\xaf\\xf9\\x16\\xee\\xea\\x2e\\x7c\\xaa\\xc8\\x08\\x45\\x56\\x2f\\x73\\xd4\\x03\\x0f\\x9c\\xab\\x0b\\xf1\\xc6\\x40\\x7f\\x54\\x01\\x51\\x3e\\xf8\\x7f\\xe6\\xdc\\x09\\x9d\\xbc\\x5d\\xfc\\x33\\x52\\x91\\x1c\\x07\\xaf\\x6c\\x52\\x3b\\xef\\x4c\\xca\\x78\\x37\\x96\\x59\\xe8\\x80\\x3f\\x58\\x59\\x04\\xee\\x6e\\xf6\\xfd\\xe7\\x73\\x66\\xd9\\x6d\\x2c\\xcf\\x24\\x8a\\x53\\x20\\xd9\\xb8\\x29\\x8b\\x2a\\x73\\x36\\x38\\x79\\x10\\x7a\\x02\\xb4\\x7f\\x57\\x21\\x3a\\x85\\x20\\x3a\\xbb\\xca\\x5a\\x41\\x95\\xf8\\xaf\\x3e\\x35\\x93\\xed\\x2f\\xa3\\x50\\x4b\\xb7\\x6a\\x3e\\x1b\\xe2\\x4b\\x66\\xd3\\x55\\x66\\x29\\x32\\xcb\\x67\\xdc\\x88\\x50\\x3a\\xfa\\xf7\\x62\\xbf\\xf7\\x41\\xba\\x1c\\xac\\xe9\\x7a\\xc5\\x8b\\xaf\\xad\\x5d\\x36\\xc3\\xaa\\x02\\xe0\\xcb\\xe2\\x0e\\x5f\\x3d\\xc8\\x09\\x2c\\x51\\x2e\\xaa\\x9c\\x49\\x43\\x47\\x4a\\xad\\x41\\x99\\x00\\x76\\x72\\x1a\\xd3\\xf5\\x3f\\xb0\\x8a\\xc2\\x29\\x82\\xed\\x9b\\x15\\xc7\\x51\\xa9\\xe2\\x33\\x82\\xf6\\xa6\\x9c\\x72\\xe6\\xe2\\x44\\xe0\\xeb\\x68\\x1e\\x6d\\xd2\\x28\\xd3\\x77\\x4f\\xcc\\xb3\\x7e\\xb6\\x23\\x2f\\x82\\x5d\\x16\\x9a\\x2a\\xc8\\xb7\\xe1\\x8a\\x42\\xcd\\xaa\\x4f\\x2c\\xf0\\x58\\x90\\xbb\\x0c\\x59\\x8c\\xf8\\xc3\\x1f\\x82\\x9e\\xf8\\xca\\x24\\x35\\xbd\\xcc\\xeb\\x0e\\x61\\x93\\xad\\xa7\\x84\\x1e\\xe6\\x92\\xf3\\x0a\\xed\\xf8\\x8b\\x62\\x73\\x11\\xb1\\x38\\xac\\x78\\xb3\\x91\\x3e\\x06\\xf7\\xc3\\x21\\xca\\xfb\\x39\\xd9\\x01\\xdf\\xe1\\x74\\x30\\xb1\\xa2\\x0b\\xc4\\x37\\xa5\\x55\\xa5\\x78\\xfa\\x31\\xe4\\xb6\\x80\\x79\\x54\\x45\\x6b\\xd4\\xb0\\x4d\\x5d\\x88\\x79\\x87\\xbd\\xf0\\x4e\\x0f\\x14\\xaf\\x31\\x41\\xb2\\x4c\\x3a\\x7b\\x9a\\xc7\\x5a\\xa3\\x2e\\x2f\\xcd\\x21\\x71\\xa1\\x26\\x09\\xe1\\x5e\\x73\\x09\\x4f\\xd0\\x92\\x21\\xb4\\xd2\\x70\\x90\\xe7\\x32\\x19\\xb6\\x48\\xbc\\xaa\\xbf\\x38\\x07\\xc9\\x28\\x0b\\x6c\\x4a\\xd7\\x50\\xa4\\x68\\xbe\\x0e\\x1a\\xd3\\xe6\\xe6\\x30\\x16\\xcb\\x5c\\xec\\x3a\\xad\\xdc\\x56\\x89\\xc2\\x95\\x5a\\x2a\\x8d\\x5b\\x89\\x84\\xd7\\xc4\\x43\\x76\\xfd\\xd9\\x4d\\x3f\\x5f\\xf1\\x29\\x8f\\x78\\x17\\x2b\\x56\\x59\\x13\\x70\\x4e\\x90\\xe5\\xac\\x03\\x8c\\xb1\\x72\\x0e\\x19\\xb0\\x80\\xf8\\x1b\\x53\\xd6\\xa4\\x5d\\x45\\x28\\x53\\x07\\x11\\xb6\\x3d\\xfe\\x1e\\x47\\x81\\xc2\\x4d\\x74\\xae\\xb2\\xbd\\x8a\\x73\\xfd\\x2a\\x99\\x3c\\x5b\\x08\\x91\\x39\\x21\\x96\\xac\\x32\\xc5\\x23\\x69\\x99\\x60\\xd8\\xb2\\x3e\\x01\\x66\\x4c\\xf9\\x02\\x1d\\x93\\x92\\x80\\x50\\xca\\xf9\\x7f\\xb9\\x85\\x55\\x45\\x80\\xe3\\x33\\x36\\xa4\\x56\\x32\\x47\\xdf\\x59\\xef\\x6c\\xae\\x53\"},\n{{0x10,0xca,0x41,0x3d,0x70,0xeb,0x3d,0xb6,0xe3,0x37,0xf0,0xf1,0x1a,0xbc,0x07,0x5c,0x95,0x85,0x9e,0x82,0x5f,0x87,0x61,0x76,0x07,0x69,0x52,0xd2,0xf1,0x88,0x80,0x30,},{0x50,0x28,0xba,0x38,0xaf,0xec,0xc2,0x42,0x63,0x5f,0x6e,0x35,0x3d,0x5f,0x4a,0xfd,0x12,0x3f,0x86,0x0a,0x04,0x25,0x22,0x0e,0x96,0x65,0x52,0xa0,0x57,0x88,0x08,0x23,},{0x6a,0xec,0x02,0xdc,0x6b,0xdf,0xcb,0x67,0xf0,0xef,0xc1,0xfd,0x31,0xe2,0x3e,0x69,0xe3,0x71,0xab,0x38,0x02,0x50,0x5b,0x32,0x01,0xa9,0x5d,0xd5,0x25,0x41,0x7e,0xd1,0xa1,0x28,0xdb,0x4e,0x18,0x2c,0xb3,0x7c,0x28,0xf6,0x28,0x06,0x66,0x70,0x99,0xa8,0xad,0x48,0x0b,0x0a,0xc9,0xe9,0x4c,0x2a,0x7d,0x5a,0x0e,0x96,0xe2,0xa7,0x36,0x0d,},\"\\xea\\x7f\\xaf\\x79\\xf6\\xff\\x5d\\x78\\xa8\\x23\\xa7\\x54\\x34\\x71\\x34\\xf1\\xb3\\xc3\\xe9\\x1c\\xe5\\x18\\xfd\\xd6\\x33\\xfe\\xb4\\xf0\\x5d\\x12\\x5f\\x05\\xcb\\x54\\x33\\x6e\\xf5\\x60\\xe9\\x2d\\xeb\\x68\\x51\\x12\\xa5\\xff\\xcd\\x3d\\xfd\\x39\\x64\\xb2\\x75\\x8c\\xe4\\x78\\x5f\\x6a\\x34\\xbf\\xeb\\x39\\x78\\x4f\\x0a\\xee\\x55\\x95\\x5a\\xeb\\xd1\\x2d\\xdd\\xa6\\x41\\xd0\\x57\\x69\\xf7\\x44\\x02\\xf7\\x06\\xda\\xd2\\x01\\xc4\\x4c\\x91\\x08\\x1c\\x7d\\x7f\\x65\\xe7\\xaa\\x42\\x46\\xde\\x6d\\xc3\\xed\\x64\\x96\\xd1\\x0f\\x4a\\x41\\x20\\x60\\xd4\\x93\\xba\\xc9\\xae\\xd5\\xbe\\x4f\\x6d\\x74\\x22\\x9e\\x3c\\x55\\xeb\\x68\\x76\\xe3\\xbb\\x2e\\xd4\\x1f\\xa4\\x50\\x4b\\x66\\x70\\xdd\\xa8\\xc7\\x98\\xf6\\xda\\xa2\\x80\\xd1\\xaa\\x72\\x02\\x11\\x74\\xf6\\xc0\\x1a\\xec\\x49\\xb3\\x21\\xd8\\x7f\\x53\\xac\\xbc\\xad\\xcc\\x46\\x07\\xd5\\xb1\\xe4\\x5d\\x63\\xfc\\x48\\x1a\\x6d\\x90\\x57\\x6c\\x87\\xc1\\x88\\x0b\\x2e\\x8f\\xf3\\xe5\\x90\\xa9\\x6b\\xee\\xe1\\x80\\x47\\x68\\xc7\\x56\\xbe\\xb8\\x6b\\xf1\\xde\\x8a\\xdc\\x40\\x8b\\x1b\\x8d\\x66\\x6f\\x74\\xba\\x28\\x63\\x08\\x22\\xf9\\x2d\\x18\\xb0\\x56\\xae\\x37\\xce\\x02\\x93\\xee\\x61\\xb9\\xe8\\x0f\\x33\\xac\\x26\\x96\\x71\\xbd\\x62\\xa4\\x05\\x9b\\x24\\xf7\\xc1\\xa4\\x40\\x80\\x74\\x40\\xd5\\xd5\\x38\\xa6\\x54\\x58\\xad\\xc8\\x15\\x87\\x24\\xb2\\x5c\\x12\\x12\\x7a\\xa0\\x34\\x9e\\x55\\xf6\\xe5\\x5b\\xc9\\x20\\x78\\xfd\\x1e\\xf2\\x74\\xc2\\xaa\\x79\\x19\\x05\\x76\\x6b\\xe3\\x94\\xa2\\x62\\x8f\\x7b\\xbd\\x1a\\x32\\xda\\x5e\\x48\\x74\\x46\\xbb\\xef\\xae\\x88\\xfa\\x6c\\xf3\\xf7\\xb4\\x99\\xf1\\x31\\xfa\\x19\\x31\\x3d\\x13\\xb2\\x80\\xad\\xca\\x50\\xf7\\x78\\x02\\xd1\\x73\\x31\\xb3\\x81\\x68\\x3b\\x5e\\x7e\\xda\\xb9\\x94\\x73\\xed\\xd3\\x1d\\x77\\x44\\x34\\x88\\x21\\x41\\x35\\xfd\\x6f\\x26\\x44\\x50\\x93\\xe9\\xe2\\xaf\\xf7\\xd7\\xe8\\x92\\x33\\x7f\\xdc\\x87\\x79\\x06\\x5d\\x4d\\x97\\xd6\\xd6\\x73\\x57\\x67\\x94\\x95\\x8d\\xbf\\xa6\\xc5\\x0b\\x1b\\x13\\xac\\x39\\x60\\x7c\\x1e\\x66\\xef\\x96\\x29\\x76\\x10\\x71\\x15\\x5f\\xbc\\xa6\\xf3\\x6e\\xb0\\x2c\\xee\\xae\\x16\\x36\\x7f\\xea\\xc0\\x74\\x76\\x90\\x8c\\x84\\x7c\\x9a\\x53\\x3e\\xf6\\x8c\\x94\\x31\\x1f\\xa0\\x89\\xff\\x28\\xfb\\xd8\\x78\\x09\\xb0\\xd3\\x87\\x6b\\x43\\x1d\\x9a\\x18\\xb2\\x02\\xf9\\xa4\\x04\\x9a\\x05\\x77\\xb8\\x17\\x76\\x10\\xdd\\x02\\xe5\\xc5\\x20\\xec\\xa9\\x55\\xe8\\x03\\xc3\\xad\\x4f\\x50\\x97\\x6f\\x7c\\x2e\\xa8\\xaa\\x3e\\xe4\\x83\\x6a\\x19\\x85\\xdf\\x0a\\x4f\\x16\\xef\\x46\\x98\\x15\\x95\\x41\\x98\\x97\\x99\\x35\\x60\\xaf\\x82\\x65\\x1c\\x2b\\x49\\x4e\\x68\\x0b\\x37\\x80\\x2e\\x75\\x37\\xef\\x68\\xa5\\x75\\xc3\\x4f\\x85\\x88\\x06\\x3e\\xe0\\x19\\x72\\x06\\xd9\\xa3\\x2b\\xb4\\x89\\x0e\\x7c\\x21\\x6a\\x4d\\x33\\xfe\\xca\\x36\\xb5\\x49\\xe5\\x32\\xfe\\xa6\\x85\\x56\\xe7\\x54\\x0a\\x4f\\xb1\\x69\\xd4\\x9f\\xc5\\x53\\xb2\\xe6\\x70\\x0a\\xe4\\x2d\\x9a\\x51\\x6e\\x68\\x16\\x0a\\xcf\\x6b\\x27\\x0c\\x77\\xca\\x5e\\xc2\\x6e\\x5a\\xd5\\xdc\\x75\\xc2\\xc3\\x93\\xe2\\x99\"},\n{{0x1f,0x0a,0x10,0xa2,0xcb,0x11,0x19,0x17,0xb9,0xa6,0x7a,0x2a,0x1f,0x38,0xfb,0x86,0xf8,0xed,0x52,0x60,0x7d,0x1d,0x65,0x3a,0x45,0x7d,0x7f,0x47,0x18,0xd9,0xa7,0xde,},{0x70,0xc0,0x75,0xb2,0xe9,0x4c,0x4c,0x02,0xf4,0x5e,0x73,0x04,0x4f,0x24,0x39,0x97,0x41,0xb1,0x61,0xfe,0xb6,0xf6,0x9e,0xab,0x63,0x54,0x17,0x28,0x2a,0x4a,0x93,0x68,},{0xa4,0x24,0x5a,0xa3,0x39,0x5e,0x7b,0xad,0xa2,0xbc,0xdf,0x16,0x03,0x14,0x7c,0xc5,0xf3,0xf0,0xba,0x91,0xf4,0x0f,0xda,0xd8,0xf6,0xd3,0x71,0xc3,0xeb,0xef,0xb4,0xc1,0x50,0x1d,0x07,0x87,0x5b,0x57,0x6f,0x40,0x79,0x78,0x06,0xa4,0x84,0xc7,0xa3,0xf7,0x05,0x69,0xe2,0x32,0xb0,0xc9,0x9d,0x29,0xca,0x23,0xa2,0x33,0xb6,0x8e,0xdb,0x0c,},\"\\x4f\\x6a\\x43\\x4b\\xd5\\xfc\\x77\\xf0\\xf1\\xb7\\x04\\x9c\\x91\\x85\\x3c\\xcb\\xd8\\x94\\x39\\x96\\x2a\\x60\\x78\\xa6\\x74\\xb8\\x67\\x54\\x3b\\x6b\\x7d\\x10\\x55\\x2e\\xc1\\x75\\x8c\\x52\\x83\\x04\\x2b\\xd6\\xb4\\xce\\xa8\\x8c\\x95\\x20\\xdb\\x04\\x74\\x6f\\x08\\x9c\\xf3\\xa2\\x60\\xfb\\x0f\\x33\\x85\\x8e\\xfd\\x6f\\x68\\x0d\\xe5\\xb7\\x2d\\x98\\x76\\x32\\x4b\\xa5\\x90\\x29\\x91\\x38\\xf8\\x5a\\x76\\xf5\\xbe\\x0e\\x05\\xe8\\x85\\x9c\\x02\\xb2\\x35\\x12\\x55\\x9c\\x8b\\xea\\xfc\\x9c\\xfe\\x90\\x1b\\x28\\x3e\\x15\\xd1\\x6c\\x79\\x2e\\xb0\\x3b\\x92\\x88\\x0f\\x6f\\xf9\\x7a\\xa3\\x8e\\xee\\xad\\x3f\\x4f\\xd6\\xc0\\xa9\\x21\\x43\\x23\\xaa\\x39\\xa1\\xc1\\x65\\x15\\xe3\\x0d\\xbd\\x08\\xb8\\x33\\xee\\x40\\xa8\\x14\\xa2\\x88\\x09\\xc8\\x70\\xe1\\xd0\\xa6\\x2c\\x37\\x93\\x2d\\x54\\x08\\xfc\\x6a\\xfc\\x63\\xe7\\x9a\\x65\\x5c\\x5f\\xe3\\xd4\\x02\\x6e\\xf0\\x9e\\x02\\x99\\xfb\\xde\\x5a\\xb3\\x4f\\xce\\xab\\x14\\x13\\x0d\\xc4\\xbe\\x00\\x7e\\x8e\\x64\\x44\\xd7\\xaa\\xae\\xc6\\x2c\\x87\\x3d\\xf7\\x7e\\x80\\x10\\x74\\x3c\\x31\\xe8\\x75\\x7f\\x1e\\xae\\x9e\\xdb\\x55\\x97\\xa1\\xb5\\xd8\\x4b\\xd7\\x7a\\xe7\\x64\\x2e\\x1a\\xca\\x99\\x87\\x3a\\x15\\x2f\\xfd\\xe0\\x68\\xa8\\xe4\\xad\\x92\\x40\\xb9\\x03\\x33\\x27\\x95\\xe4\\x0b\\xb3\\x28\\x65\\xe5\\xce\\x03\\x43\\x07\\xa6\\xc9\\xfe\\x33\\x9a\\x1c\\x93\\x77\\x0d\\xf5\\xca\\x46\\x32\\x9f\\x6b\\x09\\x41\\x97\\x85\\xcb\\xf2\\x84\\x7b\\x0c\\x68\\x32\\x83\\x71\\x23\\x85\\x3a\\xd9\\x52\\x65\\x32\\x65\\xc5\\xb5\\x74\\x0d\\x19\\x4e\\x00\\xf2\\x3f\\x9e\\x96\\x67\\x91\\xf0\\x05\\xf8\\xbf\\x55\\xc3\\x88\\xc2\\xbe\\x9e\\x21\\x53\\x89\\x25\\xf8\\x55\\x5e\\x0d\\xbd\\x83\\xbe\\x07\\x3d\\xf7\\x65\\xaf\\x49\\x40\\xe5\\x9a\\x37\\x90\\xb9\\x83\\x6b\\xab\\x79\\x09\\xe5\\x67\\x6f\\xbf\\x1c\\x21\\x26\\xfe\\x22\\x6d\\x78\\x1a\\x44\\x33\\x0c\\xc0\\x1d\\x32\\x83\\x0f\\xf8\\xae\\x00\\xb9\\x79\\x2e\\x39\\x8c\\x2c\\xbb\\x4f\\xb8\\x3a\\x10\\x05\\xc2\\x45\\x54\\x9a\\x89\\x06\\x3f\\xbe\\x06\\xc6\\x2a\\x48\\xda\\xc4\\x3c\\x51\\x01\\x24\\x99\\x94\\xe9\\x5e\\x37\\xf2\\x4c\\x1d\\x8b\\x3b\\xc6\\x73\\x53\\x8c\\x46\\x05\\x5f\\x80\\x0d\\xb1\\xc0\\xf9\\x56\\x86\\x9b\\x6b\\x29\\x7d\\x99\\x0f\\x44\\xf0\\x5b\\x50\\xc7\\xad\\x6b\\x85\\x6f\\x46\\x21\\x28\\x58\\x47\\x1d\\xd0\\xd3\\x93\\x72\\xb0\\xdb\\x75\\x15\\x73\\xdd\\xb6\\xb5\\xb5\\x6b\\xa0\\x1e\\x37\\x1c\\x78\\xfe\\x58\\xdc\\xd1\\xbe\\x53\\x11\\x2a\\x6a\\x73\\xda\\x9a\\x6b\\xac\\x75\\xd3\\xc3\\x9a\\x1a\\x70\\x5a\\x36\\xf6\\x40\\xfc\\xfa\\xd8\\xcd\\x04\\x07\\x75\\x94\\xd5\\x96\\x85\\xf6\\xe3\\x0d\\xe7\\x1d\\xfd\\x4a\\x44\\xc4\\xe7\\xc0\\x4d\\x6e\\xc7\\xc2\\xe8\\xbe\\x12\\x78\\x5b\\xb0\\x5b\\x29\\xb3\\x91\\x51\\xd3\\x29\\xf5\\x87\\xfd\\xc3\\x81\\xc2\\xdf\\x0c\\xef\\x73\\xfe\\x0e\\x3f\\xd9\\x20\\x8d\\x7c\\xcb\\x6e\\x08\\xd0\\x2f\\x42\\xd1\\xfe\\xed\\x27\\x56\\x1d\\x5e\\x32\\x3a\\xa1\\x48\\x62\\x4e\\x55\\x2a\\xbe\\x87\\x53\\x2d\\xe1\\x5b\\x7f\\x42\\xc2\\x2c\\x98\\xe4\\x05\\x25\\xb1\\x74\\x7c\\xbd\\x75\\x8b\\xfb\\x26\\xfd\\x3e\\xed\\x3b\"},\n{{0x7f,0x05,0xba,0xac,0xf1,0x67,0x58,0x3c,0xf2,0xfe,0x95,0x62,0xa5,0x06,0x99,0x1e,0xd9,0x87,0xf6,0x8f,0xfb,0x71,0x56,0x7c,0x7c,0xcc,0xe3,0xfc,0xc5,0x9b,0x78,0xb0,},{0x0d,0xec,0x39,0x52,0x85,0x2b,0x96,0xfd,0x75,0x58,0x7e,0x97,0x74,0x3f,0x9e,0x41,0xc0,0x9f,0xbe,0x6b,0xa9,0x81,0xbf,0xce,0xb4,0xeb,0xb8,0x89,0x2d,0x98,0x6a,0x16,},{0x0d,0xee,0xd2,0xdf,0x82,0xac,0xf4,0x52,0x9c,0x40,0x8a,0x02,0x93,0x1f,0x67,0x6b,0xec,0x5c,0xb7,0xad,0xe8,0x4e,0xbd,0xcd,0x57,0x8f,0x70,0xf9,0x71,0x38,0x2c,0xf3,0x11,0xbb,0x83,0x09,0x73,0x00,0x45,0x6a,0x55,0x8b,0xc4,0xc0,0x9d,0x89,0x83,0xff,0x13,0x49,0x3f,0xd6,0x11,0xeb,0x66,0xc0,0x43,0xbf,0x01,0x9b,0xad,0x6f,0x33,0x02,},\"\\xa2\\x7d\\x1e\\xab\\x05\\x15\\x09\\x20\\xde\\xd1\\xb1\\xc2\\x57\\x8a\\xf5\\x82\\xb2\\x94\\xf7\\x83\\x7f\\xe4\\xfb\\x1a\\x31\\x69\\xc2\\x5e\\xfb\\x70\\x63\\x4b\\xa6\\x6c\\x7e\\x29\\x91\\xb3\\xe7\\x5c\\xc5\\x12\\x48\\x26\\xa0\\x3e\\x05\\x72\\x59\\xb5\\xcb\\x70\\x62\\x28\\x78\\x0c\\xbc\\x82\\x75\\xc3\\x39\\xf8\\x34\\x0e\\x40\\x2a\\x66\\x50\\x32\\xa4\\xab\\x65\\x78\\x27\\xb1\\xc3\\x48\\x1f\\x75\\x66\\xd3\\x69\\x73\\x5b\\x82\\xdb\\x76\\x28\\xc0\\x22\\xb2\\x12\\x73\\x0d\\xb1\\xe4\\x7c\\x9b\\x2d\\x9b\\xc4\\xd8\\x1b\\x23\\x42\\xd8\\x9c\\x6e\\xaf\\xc3\\xe0\\xb6\\xde\\x50\\xd4\\x84\\xcc\\xef\\x11\\x23\\x8c\\x8e\\x2d\\x24\\x0d\\xd5\\x95\\xdc\\xef\\x8b\\x2f\\xc5\\x7b\\x54\\xff\\x9a\\x8a\\x74\\x11\\x1f\\x61\\xf8\\xa6\\x52\\xf2\\x0e\\xa0\\x12\\xc1\\xad\\xe3\\xe2\\x80\\xec\\xde\\x29\\x4c\\x0e\\x35\\x71\\x71\\x90\\x16\\x2e\\xc6\\xa2\\x26\\x5e\\x7e\\x6f\\x3f\\x07\\x04\\xcf\\x8a\\xb1\\xa0\\x3e\\x5c\\xc9\\x53\\xe2\\x92\\x62\\x91\\xcc\\xd4\\xb0\\x59\\x0d\\x5c\\x20\\x56\\x8f\\x94\\xf9\\xff\\x0f\\xe2\\xab\\x78\\xcf\\x9a\\xe2\\xc3\\x8b\\xcd\\x49\\x1e\\x51\\x8f\\x23\\xe9\\xb6\\x36\\xf8\\x80\\x61\\x5f\\xc5\\x60\\x78\\xe5\\x12\\xd7\\x57\\x7e\\x09\\x49\\x7c\\x11\\x83\\x45\\x3d\\x50\\x81\\xfd\\x47\\x37\\xf2\\x80\\xec\\x5e\\x26\\x7c\\x45\\x86\\xb7\\x8b\\x70\\xff\\xfd\\xfd\\x73\\x0d\\x80\\x9d\\xf5\\x60\\xf2\\xe3\\x77\\x21\\x91\\x84\\x7b\\xbc\\x3f\\x60\\x4f\\xb7\\xf8\\xca\\x49\\xee\\xd3\\x18\\xb5\\xe7\\xd1\\xf2\\xb8\\x3a\\x10\\xda\\x0c\\x85\\x94\\xb3\\x39\\xb6\\x87\\x1a\\x57\\x72\\xdd\\x64\\x16\\x8e\\xcc\\x27\\xe2\\x40\\xa4\\x5c\\x76\\x72\\x5e\\x7d\\x55\\xbe\\xf3\\x7e\\x13\\x5e\\x3d\\x9e\\x0e\\x34\\xe3\\x6c\\x16\\xe3\\x4d\\x77\\x45\\x9a\\x55\\x2f\\x40\\x74\\xd0\\x67\\xa3\\x1a\\x3e\\xd2\\xa4\\x8c\\xde\\xa4\\x89\\x5b\\x10\\xbd\\xf1\\x65\\x6f\\x4b\\x7a\\x41\\x3c\\x6a\\x08\\x8c\\x64\\x9f\\xc9\\xd7\\xbc\\x56\\xab\\xf6\\x44\\x35\\x49\\x12\\x14\\x19\\x2a\\x66\\x70\\xcb\\x8b\\x9c\\x91\\x7f\\x8e\\x1b\\xc7\\xb2\\xcf\\xce\\x78\\xd2\\x8f\\xbc\\x3a\\xfc\\x2a\\x50\\xe9\\x82\\x13\\xe7\\xe0\\x26\\x37\\x8e\\x4e\\xa7\\x11\\xd1\\x51\\xad\\xaa\\xa7\\x19\\xbe\\xb8\\x97\\x46\\x56\\xc1\\x0e\\xbc\\x7d\\xe4\\x6b\\x19\\xec\\x82\\x95\\x1e\\xf4\\x6a\\x8c\\x68\\xe7\\xf4\\x36\\xe1\\xb3\\xeb\\xed\\xb2\\xd0\\x9b\\x05\\x75\\xc9\\x91\\x4e\\xad\\x27\\x96\\xb5\\x3e\\x00\\x61\\xe2\\x12\\x99\\x4a\\xc5\\x02\\x6a\\xea\\x81\\xec\\x37\\xc8\\x13\\x78\\xf4\\xcc\\xfc\\x46\\x77\\x00\\x08\\x79\\x68\\x59\\x7d\\xa3\\x8f\\xed\\x52\\xfa\\x48\\x09\\x3a\\xe4\\xba\\x10\\x66\\xc3\\x1e\\x3c\\x7d\\x85\\x08\\x09\\x5b\\xb4\\x5c\\x28\\x01\\x20\\xf4\\xaa\\x69\\xa2\\x4f\\x3e\\xfe\\xf1\\xf7\\x67\\x98\\x5a\\xa1\\xa3\\x0e\\x14\\x08\\x56\\xf7\\x6d\\x15\\x20\\x73\\x28\\x78\\x48\\x7b\\xe5\\x3f\\x71\\x2d\\xbd\\x7d\\x77\\x9e\\x31\\x51\\x01\\x58\\x8f\\xd7\\xdb\\xdb\\x13\\x2f\\x92\\xc2\\x75\\x75\\xac\\x14\\x86\\xf1\\x76\\xc7\\x90\\x66\\x1b\\x01\\x48\\x39\\x4e\\x92\\xff\\xa3\\xae\\x6f\\x8a\\xfb\\x2f\\xaa\\x2b\\x7f\\x4f\\xbd\\x0a\\xd9\\x1e\\x75\\x9a\\x70\\x2b\\x3c\\x70\\x2b\\x4d\"},\n{{0xd0,0x0c,0x21,0x64,0x26,0x71,0x0d,0x19,0x4a,0x3d,0x11,0xcf,0xc9,0x0a,0x17,0xa8,0x62,0x12,0xe7,0xa0,0xe5,0x4b,0xaa,0x49,0xb0,0x16,0x9e,0x57,0xff,0xf8,0x3d,0x61,},{0xcf,0xe6,0xae,0x89,0x03,0xc6,0xc7,0x01,0xaa,0x30,0x46,0x95,0xc6,0x51,0xbf,0xd8,0x50,0x33,0x1f,0x9a,0xd4,0x81,0x63,0x3a,0xe3,0x70,0xc8,0x6d,0x7b,0xd1,0x3f,0xb9,},{0x15,0xc4,0x5c,0x19,0x42,0x97,0xe8,0x87,0x02,0x9f,0x49,0xd8,0xbd,0xf9,0xd6,0x10,0xdd,0x8c,0x34,0x79,0x9e,0x1e,0x92,0x30,0x26,0x9e,0x7a,0x58,0x92,0x89,0x38,0xcf,0x39,0x6a,0x02,0xcd,0x42,0x20,0x54,0x90,0x39,0x1e,0x1c,0x64,0x35,0x3f,0xb0,0x6b,0x9f,0x8e,0x9b,0x81,0x8a,0x9a,0x36,0x1c,0x20,0x4a,0x38,0x69,0x95,0xbf,0x3b,0x03,},\"\\x82\\xf9\\x78\\x41\\xb3\\xba\\x22\\xdd\\x9a\\x44\\x50\\x83\\x7e\\xa7\\xbf\\x8d\\x27\\xa9\\x73\\x14\\x70\\xca\\xbb\\x0c\\x20\\x78\\x03\\x4b\\xf2\\x4e\\x4c\\x1a\\x62\\x90\\xc0\\x3f\\x40\\x02\\xb8\\x6f\\xa0\\x9f\\x07\\xb5\\x20\\x9f\\x1f\\x53\\xd0\\xec\\xf4\\xd9\\xe9\\x22\\x3b\\xec\\x12\\x5a\\x95\\x45\\x51\\xfe\\x8b\\xff\\x71\\x8f\\x5e\\x26\\x48\\x68\\xe2\\x07\\xf7\\x01\\x19\\x4e\\x41\\xde\\x39\\x97\\x1f\\xd3\\x85\\xf4\\x9a\\x4b\\x4a\\xdd\\xa9\\x11\\xeb\\xa5\\x52\\x59\\xfc\\x68\\x36\\x65\\x32\\x73\\xf6\\x56\\xf4\\xaf\\x60\\xb2\\x06\\x64\\x95\\x6d\\x4f\\x21\\x35\\xd9\\x0d\\x09\\xe9\\x03\\x7d\\x53\\x66\\xa0\\x25\\x34\\x44\\xe0\\x22\\xc7\\x21\\x2a\\xf5\\xfd\\x4f\\xcc\\xd7\\x42\\x37\\xd2\\x88\\x53\\x38\\xe2\\xfd\\x72\\x15\\x22\\xde\\x67\\x63\\xc2\\x54\\x90\\x28\\xc6\\x23\\xb9\\xcf\\x38\\x7d\\x23\\x4a\\xb5\\xe7\\xfc\\xbe\\x5a\\x47\\xc6\\x85\\xb7\\x9e\\x75\\xa5\\x7b\\x09\\x57\\x40\\x82\\xa0\\x22\\x21\\xdf\\x64\\xa2\\xe8\\x41\\x61\\x80\\x87\\xe7\\x22\\xa2\\x1b\\xac\\x1b\\xa4\\xf0\\xd7\\xd8\\x7b\\xdc\\x51\\x0a\\xaa\\x8f\\xbd\\x10\\x75\\x7f\\x6c\\x02\\x9c\\xa8\\x20\\x37\\x1f\\xc7\\x4c\\x3b\\xc5\\x0b\\xd8\\x98\\xc5\\x5d\\x81\\x67\\xf7\\x3a\\xda\\x37\\x7a\\xec\\xc9\\x16\\x29\\xd6\\x4c\\x36\\x0c\\x2c\\x24\\x1c\\x5c\\xb4\\x2e\\x3a\\x51\\x8c\\x5d\\xab\\xf0\\xf4\\x18\\xb2\\xa7\\xf3\\xd8\\x2e\\xef\\xd9\\x20\\x26\\xd3\\x1e\\x8b\\x81\\x60\\x35\\x8e\\xae\\x82\\x1f\\x73\\x0e\\xca\\xfe\\x7a\\xce\\x64\\x7b\\xff\\x87\\x41\\xde\\x2f\\x6a\\x13\\x1d\\x11\\xc9\\x69\\xe9\\x78\\x7c\\xfe\\x6a\\x2f\\xab\\x37\\xbf\\x8d\\x1c\\x7f\\x4a\\x2f\\x36\\x4d\\x2f\\x1a\\x76\\xef\\x04\\x6c\\x18\\x43\\xe6\\x3e\\xc0\\x0c\\xf7\\x92\\x0f\\xfa\\xae\\x56\\x1e\\x73\\x70\\xb7\\x19\\xfc\\x16\\xfc\\xeb\\xca\\x3c\\xfd\\xfa\\xba\\x43\\xf4\\xf0\\x90\\xc4\\x6f\\x47\\x73\\x03\\xa6\\x60\\xee\\x88\\xdd\\x4e\\x89\\xbf\\x14\\xb9\\xf8\\x04\\xb6\\xfd\\x49\\x5c\\xb1\\x41\\x27\\x53\\x47\\x4a\\x05\\x6a\\x0d\\x89\\x31\\xcd\\x9c\\xcb\\xd6\\x4f\\x8f\\xcc\\x7a\\x31\\x23\\x46\\x7c\\x5d\\x47\\xf6\\x90\\x67\\x9e\\x88\\x71\\x28\\x80\\x93\\x73\\x4f\\xd6\\xa1\\x32\\x60\\x38\\x65\\x81\\x56\\x41\\x36\\x96\\x59\\x4c\\x13\\x4d\\x73\\x88\\x7f\\x34\\xee\\x67\\x60\\x9a\\xe8\\xff\\xb3\\x26\\x6c\\x16\\xd8\\x7f\\x15\\x34\\x5a\\x47\\x6f\\x72\\x95\\x0c\\x15\\x87\\x96\\xa8\\x8b\\xbb\\x44\\x4f\\x1a\\xa8\\x09\\xca\\xd8\\x75\\xb8\\x5f\\xb9\\x15\\x1a\\x0e\\x2e\\xef\\x2e\\x00\\xe8\\x0d\\x6b\\x7a\\x9b\\xa4\\x06\\xc0\\x51\\x9e\\xff\\xdd\\x94\\x12\\x62\\x32\\xfd\\xf6\\xf1\\xe7\\xb9\\xbb\\xc0\\x36\\x2a\\xa7\\x75\\x16\\xfd\\xf9\\x39\\xe7\\x90\\x6a\\xab\\x01\\x30\\x71\\x28\\xcf\\x82\\x4c\\x10\\x2c\\x09\\xb9\\x29\\xc9\\xb2\\xd7\\xaf\\x8f\\x85\\xb7\\xd7\\xf9\\xa8\\x38\\xb2\\xae\\xd0\\xc6\\x97\\xe8\\xbd\\xfe\\xe6\\x6e\\xe0\\x16\\xbb\\x1b\\xf3\\x5e\\xff\\x6b\\x2f\\x7e\\xf4\\xb9\\x1b\\x1f\\xc0\\x4f\\xac\\x9f\\x11\\x6e\\x2e\\xdf\\xf4\\x0f\\x95\\xc1\\x5b\\x77\\xc3\\x1e\\xe5\\x22\\xf3\\x93\\x7c\\x7f\\xa0\\x04\\x7d\\x62\\x25\\xe0\\xc8\\xe5\\x5e\\x27\\x8c\\x81\\x03\\x91\\x1f\\xea\\xb2\\xb7\\xf4\"},\n{{0xdd,0x12,0x39,0x72,0xe6,0x28,0x58,0x4a,0xcc,0x46,0x29,0x3b,0x8e,0x4c,0xe2,0xb2,0xdd,0x46,0x9c,0xc4,0xed,0xe1,0x4e,0xf3,0x95,0x21,0xcf,0x08,0x37,0x35,0x85,0xb3,},{0x35,0x22,0xf7,0xae,0x59,0x6e,0xed,0xb2,0x17,0x03,0x5d,0x95,0x39,0x5e,0x44,0x8d,0xbd,0x6f,0xfb,0xf4,0x25,0x85,0xea,0xeb,0x30,0x70,0x26,0x54,0x1c,0x78,0xa6,0x51,},{0x89,0x65,0xa8,0x89,0xd5,0x4c,0xd8,0x07,0x6d,0x35,0xbc,0x2e,0x12,0xb0,0x09,0xd5,0x6b,0x07,0x04,0xc8,0x94,0xf9,0x12,0xa0,0xd1,0xd3,0x07,0x20,0xc2,0x32,0xfe,0x44,0x04,0xbf,0x30,0x09,0x54,0x1e,0x8f,0x32,0x83,0xe8,0x9e,0xa8,0x6f,0x67,0x8a,0xfb,0xdf,0x1c,0x21,0xc9,0x24,0xb2,0x3a,0x52,0xb4,0xca,0x6d,0x63,0xf4,0x8f,0xc2,0x03,},\"\\x2b\\x28\\x57\\xf4\\x52\\x80\\x17\\x3e\\x2e\\x0e\\xf9\\xd5\\x94\\xe6\\x08\\x3f\\x1d\\xc7\\xa6\\x54\\x92\\x97\\x5b\\x83\\x7d\\xef\\x6c\\xad\\xd8\\xc8\\x54\\x50\\x31\\xee\\x9d\\x68\\x36\\x9a\\x93\\x93\\xcc\\x7b\\x79\\x2f\\xeb\\x98\\x04\\x0b\\x21\\xf1\\xeb\\x84\\x66\\x5f\\x87\\x85\\x37\\xce\\x41\\x2e\\x9d\\xb6\\x80\\xd2\\x9f\\xbd\\x8f\\xfc\\x77\\x31\\xea\\xe9\\x1a\\x20\\xb4\\x75\\x48\\x99\\x62\\x04\\xfb\\x06\\xad\\x74\\x0e\\x78\\xf0\\xfc\\x59\\x0b\\x67\\x91\\xdc\\x7a\\x0f\\x26\\x59\\x28\\x6c\\xc1\\x6d\\x02\\xc5\\x11\\x7b\\x56\\x58\\x36\\xb4\\xb8\\x73\\x8c\\xf4\\x0e\\x28\\x5c\\x69\\xc5\\x0e\\x41\\x29\\x11\\x29\\x23\\x67\\x35\\x2d\\xfd\\xae\\xd9\\x98\\x2d\\x0f\\x89\\x9a\\x23\\xc0\\xab\\x51\\x81\\x2b\\x3e\\xc6\\x78\\xf6\\x88\\x2e\\xa4\\x27\\xcd\\xc9\\x3a\\xb4\\xb2\\x48\\x24\\x37\\x70\\x54\\xaa\\x25\\xd8\\x22\\x46\\x65\\x33\\x40\\x07\\x8c\\xf1\\x1d\\x14\\xa5\\x1f\\x0e\\x68\\x6d\\x7e\\x01\\x8b\\x36\\x74\\x16\\x68\\xfc\\xe7\\x45\\x8d\\x16\\x92\\x93\\x36\\x1d\\xd1\\x6b\\x3d\\xeb\\xbe\\xd1\\x9e\\x1b\\xef\\x7c\\x36\\x93\\x4e\\x20\\xf3\\x3a\\x09\\xad\\x3e\\x82\\xb5\\x3a\\xb4\\xe9\\x4c\\x25\\x5d\\x04\\x18\\x98\\xb9\\x77\\x37\\xdf\\x99\\x58\\x4a\\xf1\\x4e\\x40\\x40\\x58\\xd0\\xc9\\x3b\\xca\\xe7\\xbb\\xbc\\x06\\x39\\x5a\\x2a\\xef\\xbd\\xef\\xa7\\xb2\\xed\\x17\\xce\\xbd\\x15\\x13\\xfa\\x39\\x0f\\xe9\\xa9\\xb0\\xce\\x68\\xce\\xcc\\x2b\\x9e\\x12\\x9b\\x7a\\x29\\xf4\\x9b\\x6d\\x18\\xc2\\x8b\\xac\\xd3\\xaf\\x39\\xdc\\x39\\xca\\x97\\x2f\\x0e\\x0d\\x06\\x85\\x5d\\x57\\xc2\\xb5\\xfc\\xac\\x2f\\x79\\xcb\\x8c\\x05\\x79\\x9e\\x4f\\x65\\x73\\x46\\x68\\xda\\xd6\\xaa\\x7a\\x43\\xa1\\x18\\x56\\xe2\\x3b\\x1e\\x73\\x2d\\x00\\xe5\\xfe\\x38\\x85\\xb7\\xda\\xd4\\x2e\\xc1\\x8a\\xc8\\xe0\\x96\\xa0\\x80\\xf7\\xd5\\x50\\x70\\xfd\\xcf\\xf6\\x07\\xbc\\x0b\\x85\\x2d\\x8a\\x08\\x0d\\x2a\\x74\\x05\\xd5\\x94\\x14\\x69\\x5f\\x2e\\xb7\\xfb\\x0a\\xca\\x23\\xc8\\x63\\x57\\x42\\xf8\\xae\\x57\\xf1\\x37\\x80\\x31\\x6e\\x28\\x08\\x72\\x37\\x4e\\x69\\x29\\x59\\x8d\\x02\\x8a\\x33\\xc0\\x5d\\x83\\x1c\\xda\\xbd\\x02\\x94\\x93\\xc3\\xcc\\x85\\x9f\\xff\\x1a\\x67\\xd5\\x62\\x16\\xf0\\x2a\\x22\\x95\\x66\\x53\\x65\\x88\\x7a\\x35\\x0a\\x80\\xaf\\xaa\\x0c\\x36\\x7a\\x74\\xd3\\x70\\x1a\\xe8\\x8f\\x59\\xd8\\xa9\\xd3\\xa1\\xdc\\xe0\\xcf\\xd2\\xea\\xbe\\x2a\\xf5\\x06\\x5a\\x1c\\x7f\\xca\\x4a\\xad\\xcf\\x8e\\x51\\xe7\\x56\\x12\\xa1\\x37\\x1b\\x4d\\xc8\\xff\\xc0\\xc0\\xb9\\xc4\\xfa\\xdb\\x2f\\x08\\x1e\\x2e\\x03\\x2d\\x96\\x81\\x8e\\x55\\x73\\x7a\\xdd\\xe3\\xe1\\xac\\x12\\x1f\\x56\\xcc\\x86\\xfb\\x58\\xa0\\xa5\\x82\\x69\\x2f\\x62\\xce\\x58\\xac\\xce\\x17\\xaa\\xfe\\xc7\\xbc\\xb7\\xe4\\x4f\\x83\\x92\\x58\\xcd\\x4a\\x85\\x1f\\xc0\\x13\\x44\\xee\\x9f\\x1b\\xd0\\x3e\\xb9\\x43\\x44\\xf4\\x77\\x86\\x93\\xc1\\x71\\xdd\\x28\\x92\\xb2\\x42\\x6a\\x88\\x29\\xab\\x0c\\xfe\\x33\\xa7\\xd4\\xa3\\x6e\\xb4\\x01\\x7f\\x7f\\xcf\\xd2\\x41\\x34\\xab\\x8a\\x45\\xf2\\x37\\x17\\xcd\\x13\\x8a\\xa6\\x00\\x01\\x72\\xe3\\x7b\\x40\\x64\\xdc\\x9b\\x6d\\x1e\\x1e\\xf3\\xaf\\x84\\x97\\x1d\"},\n{{0x33,0x35,0xea,0x92,0x81,0x17,0xcf,0xee,0xfb,0xee,0xae,0x14,0x60,0x03,0x88,0x1b,0xdc,0x88,0x89,0xd6,0x58,0x0e,0xed,0x13,0x52,0x37,0x08,0x20,0xad,0x1f,0x58,0x4f,},{0xcb,0x20,0xd4,0xfd,0x75,0x61,0x84,0x80,0x13,0x11,0x1c,0x3e,0x97,0x61,0x7f,0x34,0x18,0x1d,0x2e,0x7f,0xbc,0xf1,0xbb,0x2a,0x2c,0xd2,0xe8,0xc1,0x77,0x5b,0x8b,0x03,},{0xf7,0xc3,0x9f,0x92,0x47,0xd2,0x2f,0x01,0x89,0x99,0x24,0x7f,0x0e,0x00,0x05,0xcd,0x63,0x07,0x6c,0xcf,0x2f,0xee,0x41,0x63,0x42,0x1f,0x86,0x40,0x7a,0x41,0x69,0x8c,0x40,0x58,0x16,0x64,0x73,0x51,0xc0,0x4e,0x93,0xb5,0x44,0x15,0xb6,0x2f,0xc0,0x3f,0xc8,0xc2,0x5e,0x20,0xf7,0x54,0x1d,0xab,0x03,0x19,0x7d,0xc9,0x00,0xb2,0x9c,0x0c,},\"\\x0f\\xa7\\xf6\\xa6\\xfc\\xa9\\x81\\x42\\x9b\\x57\\x2a\\x67\\x04\\x87\\x1b\\xed\\x14\\x0d\\xab\\x93\\xee\\x19\\x92\\x00\\x6e\\x9a\\x3b\\xb2\\xe6\\xcc\\x9a\\x09\\xd4\\xc9\\xcf\\x17\\x06\\x6b\\x32\\xff\\x7e\\xf5\\xb6\\xb2\\xe7\\x91\\x11\\x78\\xed\\x74\\x62\\xc4\\xc1\\x75\\x60\\x31\\x71\\xca\\x61\\x36\\x68\\xb3\\xbe\\x19\\x3d\\x94\\xc3\\x52\\x1e\\x58\\x89\\x13\\xb5\\x94\\x8b\\x55\\x0b\\xe9\\x9d\\x82\\xd9\\x66\\x19\\x7d\\x71\\x0a\\xcf\\xd9\\x59\\x14\\xcf\\x3e\\x19\\x75\\x36\\xe8\\x3e\\x68\\x23\\x0d\\xc3\\xd6\\x7e\\x67\\xdc\\xdb\\xde\\xe0\\x4f\\x0d\\x9c\\x48\\x02\\x37\\xec\\xd2\\x8f\\x74\\x33\\x8d\\xb5\\xf3\\xf6\\x97\\xd3\\xd0\\x7f\\xf3\\x36\\x13\\xbb\\xce\\x54\\x2a\\xcc\\x9a\\x7f\\xed\\x5d\\x12\\x49\\x0b\\x9b\\xfe\\x1d\\x10\\x95\\x40\\xf8\\x63\\x80\\x0d\\xd3\\x56\\xda\\x84\\x1a\\x45\\xa3\\xcd\\x8a\\x08\\xa9\\x45\\xbf\\xa3\\xaa\\x98\\xe1\\x71\\x23\\x12\\xc4\\xc0\\xf0\\xd9\\xdd\\x64\\xf6\\xef\\xcf\\x73\\x6b\\xd9\\x7d\\xea\\xfc\\xa9\\xdc\\xaa\\x3f\\x06\\xd8\\x7f\\x2e\\xd7\\x2a\\xeb\\x6a\\x94\\xf3\\x28\\x00\\x00\\xc4\\xbf\\x72\\x8a\\x01\\xc1\\x86\\x2d\\xaf\\xd9\\xfc\\x5c\\x7d\\x5a\\x46\\xec\\x7d\\x3a\\x87\\xaf\\x59\\xa1\\x1d\\x87\\xf7\\xff\\x84\\x40\\x7d\\x37\\x01\\x0e\\x1d\\x94\\x6c\\xf2\\x25\\xd6\\xb3\\xb1\\xed\\xee\\x2e\\x8b\\xbf\\x1e\\x07\\x9e\\x47\\xfb\\x1f\\x66\\x66\\x93\\x94\\xfb\\xf2\\xfa\\x68\\xfc\\x56\\xfc\\x89\\x82\\x0a\\x68\\x09\\xc2\\x51\\xdd\\x62\\xf5\\xb8\\x65\\xc5\\x47\\xb1\\x4f\\xbd\\x3a\\x19\\x50\\x42\\x44\\xff\\xbc\\x7e\\x52\\x40\\xf8\\x8d\\x43\\x60\\xf9\\xca\\xca\\xaf\\x5f\\x82\\x43\\x3d\\x33\\x44\\xfc\\xae\\xe0\\xac\\xde\\xb7\\xbe\\xb9\\xc0\\xb3\\xc7\\x69\\xea\\xc9\\x20\\xef\\x4f\\x09\\xab\\xc2\\xa2\\x09\\x55\\x12\\x04\\x59\\x43\\xec\\xcc\\x53\\xb1\\xc0\\x3e\\xd2\\x4e\\x56\\x7f\\x3d\\x7a\\x71\\x97\\x7c\\xab\\x98\\x40\\xce\\x89\\x8e\\xe5\\x8e\\xd5\\xc7\\x3f\\x6a\\xde\\xa8\\x23\\x39\\x4c\\x5c\\x8e\\x36\\x58\\xa6\\xbf\\x5a\\xcb\\xbf\\x00\\x55\\x99\\x2c\\x31\\x2c\\x26\\xc7\\x9c\\x5c\\xfb\\xea\\x38\\x60\\xb8\\x76\\x4a\\x6d\\x8f\\xfe\\x44\\x91\\xf8\\xa5\\xb8\\xa2\\x15\\xe0\\x11\\x7a\\x9a\\x68\\x16\\x4a\\xee\\x25\\xf8\\xc0\\xbb\\x38\\x11\\x95\\xb2\\x40\\x0b\\xcb\\x46\\x44\\xeb\\xce\\x1c\\xde\\x5a\\x9a\\x26\\x58\\x2c\\xab\\x9d\\xc7\\xf4\\x3c\\x33\\xea\\xe3\\x50\\xdb\\x65\\xaa\\x7d\\xd2\\x2a\\x07\\x9b\\xdd\\xdc\\xf5\\x6d\\x84\\x8d\\xeb\\x0c\\xfa\\x50\\xb3\\xbd\\x73\\x2d\\x9d\\xa9\\xe8\\xd8\\xab\\x79\\xe9\\x34\\x69\\xde\\x58\\x02\\xb6\\xdf\\xf5\\xac\\x2a\\xa8\\x48\\x2b\\xb0\\xb0\\x36\\xd8\\xf9\\xd5\\x95\\xb8\\xea\\xd9\\x4b\\xb8\\xd7\\x41\\x8e\\x2e\\xa4\\x31\\x92\\xef\\xcb\\xfc\\x05\\xc4\\x67\\xbd\\xe0\\xa8\\x68\\xa5\\x16\\xa7\\xc1\\x4a\\x88\\x9b\\x72\\xc5\\xb7\\x3e\\x7d\\x85\\xc2\\xba\\xe9\\x02\\xe4\\xe6\\x8d\\x1f\\x3c\\xea\\xb2\\xb2\\x77\\x3a\\xf5\\xbb\\xae\\xe6\\xa0\\x0d\\x08\\x06\\x3e\\x78\\x33\\xcd\\x4e\\x29\\x53\\x47\\xe5\\x8f\\x5d\\x1b\\x33\\x97\\xf6\\x40\\xc1\\x59\\xcc\\x60\\xa6\\x74\\xa2\\x27\\xb4\\xcd\\x8c\\x10\\xf1\\xdb\\xae\\xd5\\x16\\xcc\\xac\\xdd\\x29\\x5f\\x11\\xb0\\x81\\x47\"},\n{{0x32,0xa1,0x88,0x3e,0xff,0x57,0xa3,0xa7,0xec,0xdb,0x31,0x02,0x21,0xee,0x83,0xc4,0xde,0x92,0xb7,0x22,0x15,0x96,0x13,0xec,0xf8,0x16,0xe3,0x82,0x43,0x7b,0x60,0xb9,},{0x82,0xdd,0x1a,0x03,0xe5,0x85,0x20,0x62,0xba,0x4a,0x8b,0x6b,0x3b,0x93,0xc5,0xe9,0xc4,0x3f,0xf6,0x99,0x5b,0xd2,0xaa,0xc7,0x26,0x06,0xfa,0xc8,0x58,0x02,0xc6,0x82,},{0x83,0x09,0xcb,0xe7,0x2f,0x80,0x4b,0xd9,0x52,0x1d,0xef,0x5d,0xad,0x4d,0x8b,0xc1,0x38,0x86,0xb1,0xd4,0xf6,0x62,0xc9,0xbb,0x5b,0x97,0xba,0x47,0x90,0xf4,0x4b,0x80,0x1f,0x31,0x95,0xea,0xd0,0xd4,0xdd,0xb6,0x60,0x81,0x8e,0xcb,0xf9,0xa6,0x83,0xca,0xcf,0x85,0xf1,0xdc,0xc9,0xe8,0x2c,0x09,0x11,0x6d,0x73,0x36,0x58,0x09,0x1a,0x00,},\"\\xed\\x2b\\x12\\x3b\\x5d\\xd7\\xf5\\xe7\\x18\\xe0\\x26\\xc7\\x9c\\xfa\\x61\\x11\\x92\\x49\\x02\\xd1\\x89\\xa4\\x06\\xef\\x2b\\x2e\\x56\\xa9\\xee\\x55\\x73\\xa7\\x6d\\xdd\\x1d\\x06\\x29\\xeb\\xcd\\xec\\xf2\\xaa\\xa7\\x4e\\x84\\xfc\\xd0\\x20\\x8f\\x14\\xee\\xa2\\xe1\\x71\\xe7\\xc8\\x60\\x8b\\x81\\x8f\\xef\\xf4\\xdb\\xea\\x52\\xdb\\x35\\x42\\x27\\xd0\\x23\\x25\\x0b\\x1f\\x01\\xcb\\x4c\\xc8\\xc5\\x21\\x32\\xa9\\x8d\\x4a\\xcf\\x55\\xa5\\x4f\\xee\\x81\\xe0\\x94\\xae\\xd6\\x6f\\xa0\\xd6\\xb6\\xa2\\x00\\xb6\\xb8\\x74\\x14\\x40\\x22\\x78\\x53\\x8b\\x90\\x52\\x9a\\x8c\\x60\\x3d\\x92\\x7e\\xdd\\xda\\x97\\xbc\\x4b\\x8c\\xb9\\x5d\\x04\\xb5\\x33\\x7f\\xa2\\x2c\\xea\\xfc\\x8b\\x34\\x0c\\x46\\xfe\\xf6\\x71\\x98\\xd1\\xfd\\x98\\xd8\\x9c\\x65\\xcd\\x08\\x9e\\x23\\xf5\\x3d\\xbd\\xca\\x96\\x77\\x98\\xb5\\xcd\\x92\\x32\\x05\\xad\\x51\\x1e\\xdf\\x70\\x6f\\x12\\x25\\xf4\\x64\\x8c\\x98\\x5e\\x00\\x9e\\xf8\\xa2\\xf6\\xa0\\x11\\x7c\\xdb\\xe1\\x4e\\x75\\x31\\x2d\\x8a\\xc1\\xf0\\x3d\\x04\\x6b\\x37\\xcd\\xee\\x7d\\x69\\xc0\\xf2\\x5c\\xcf\\x18\\x14\\x5a\\x68\\x8a\\x8b\\x3c\\xa8\\x87\\x5f\\xe8\\xd9\\x0b\\xaf\\x86\\xd4\\x39\\x69\\xe4\\xd6\\x10\\x21\\x4f\\x1a\\xc5\\xdb\\xba\\x87\\xa1\\xef\\x10\\x37\\x7e\\x40\\xd7\\x80\\x6f\\xd9\\xd2\\x34\\x57\\xfc\\x9d\\xf2\\x98\\x99\\x23\\x9f\\xd1\\xd2\\x78\\x84\\x96\\x81\\xa9\\x43\\xad\\x9c\\x91\\xfd\\x1b\\xbd\\x92\\xb7\\x3c\\xb1\\x77\\xa8\\x78\\xf9\\x05\\x9e\\xe0\\x7a\\xf7\\xa8\\x73\\x16\\x13\\xe3\\x3d\\x59\\xdf\\x3d\\x97\\x79\\x60\\x79\\xd5\\x63\\x1e\\xd8\\x5e\\xb2\\x24\\x51\\x06\\xa5\\xff\\x6a\\x2b\\xca\\x40\\xdf\\x5c\\x6e\\x87\\x47\\x3b\\x2c\\x08\\xc2\\x21\\x2f\\x56\\xfc\\x29\\x33\\xa9\\x69\\xa3\\xc9\\x58\\xd3\\x7c\\x53\\x43\\xba\\x27\\x60\\xc8\\x13\\xa7\\xa5\\x16\\x5d\\x23\\x1c\\x5f\\xea\\xae\\x62\\xb7\\x55\\xdf\\x49\\xfe\\xca\\x80\\x04\\x1a\\x65\\x35\\xf7\\xe0\\x3b\\xc4\\x8e\\x5f\\x27\\xf9\\xbe\\x26\\xef\\x53\\x67\\x3e\\xb7\\xc3\\x7a\\x2b\\x64\\x74\\x4a\\x6c\\xf1\\x7e\\x88\\x77\\x34\\xae\\x01\\x0b\\xf4\\x0e\\xea\\x03\\xcd\\xa2\\x12\\xf5\\x12\\xfb\\xa0\\x58\\x59\\x47\\x17\\x96\\x40\\xbc\\xc4\\x54\\x4b\\x8d\\xeb\\x4e\\xad\\x12\\x9b\\xc3\\x32\\x28\\x00\\xad\\xf9\\x88\\x18\\xf9\\x95\\x74\\xbe\\xfd\\x9b\\x00\\x16\\xd4\\xee\\xc8\\x1a\\x8e\\x78\\xdc\\x3a\\x2a\\xf1\\x3c\\xab\\x01\\x64\\x9a\\xe2\\xe3\\x3d\\x51\\x6b\\x9d\\x42\\x08\\xad\\x66\\x13\\xd8\\xe2\\x78\\xc3\\x93\\xba\\xa8\\x82\\x34\\x0e\\xf4\\x61\\xff\\x4f\\x94\\x42\\x3d\\x55\\xcf\\x3c\\xed\\xd2\\xa6\\xb5\\x6e\\x88\\x36\\x55\\x31\\xdd\\x29\\xd6\\x82\\x73\\xad\\xbf\\xe3\\x69\\x40\\x2e\\x6a\\x7c\\xee\\x05\\x3d\\xa1\\xf1\\x00\\x54\\x00\\x91\\xa0\\x09\\x29\\x25\\x29\\x83\\x44\\x90\\x24\\xb1\\xc3\\x39\\x11\\x10\\x65\\x00\\x82\\xf0\\xe7\\xdf\\xdd\\xb8\\xed\\xc2\\x04\\x2f\\x3c\\x17\\x13\\xc6\\x94\\x4b\\xa5\\x14\\xee\\x74\\x07\\xd3\\x2b\\xf0\\x6c\\x85\\x8e\\xfe\\xc4\\x2a\\x78\\xbe\\xe9\\x77\\x46\\xe5\\xb4\\x87\\x91\\x41\\xa1\\x3d\\x9f\\xc5\\xcb\\x12\\x3b\\x78\\x32\\x73\\xb8\\x4d\\x57\\xad\\x35\\x26\\xb7\\xda\\x3c\\x68\\xb8\\x39\\xef\\xd2\\x3f\\x5f\"},\n{{0x22,0xec,0xef,0x6d,0xab,0xe5,0x8c,0x06,0x69,0xb8,0x04,0x66,0x49,0x73,0xe4,0x57,0xc0,0x5e,0x47,0x77,0xf7,0x81,0xc5,0x25,0x22,0xaf,0x76,0xb9,0x54,0x81,0xa9,0x14,},{0xd4,0x78,0x40,0x10,0xef,0x04,0x03,0xed,0xdc,0x5a,0x62,0xd5,0xd4,0x5b,0xb2,0x43,0xb8,0x0b,0x4b,0x9d,0x69,0xc3,0x9c,0xa3,0x87,0xc6,0xf5,0xcb,0xa0,0x28,0x64,0x0f,},{0x5d,0x0d,0x2a,0xf6,0x78,0xb3,0xd1,0xb6,0x77,0x51,0x6d,0x08,0xa7,0x9a,0xaf,0xd3,0x6e,0xc6,0x7c,0x14,0xca,0xf5,0xbc,0xda,0xae,0xaa,0xcc,0x51,0xa1,0x4f,0xb8,0x05,0xcf,0x29,0x04,0xe8,0x72,0x1d,0xb2,0x71,0xb2,0x0d,0xf7,0x09,0xbe,0xe1,0xa4,0xfb,0xfe,0x62,0x56,0x50,0x73,0xb2,0xa7,0xe9,0x42,0x72,0x44,0x61,0xf9,0x27,0x93,0x0d,},\"\\xc5\\x35\\xc1\\x3d\\x77\\x9f\\xc0\\x98\\x59\\x73\\xd6\\xbc\\xd5\\x52\\xd8\\x17\\x34\\xe9\\x2b\\xdf\\x10\\x99\\x4b\\x00\\xcd\\x4d\\x53\\xce\\x36\\x5f\\xad\\x8c\\x7c\\xfa\\x96\\x20\\x6a\\xdb\\x62\\xd4\\x56\\x7b\\xe5\\xe4\\x66\\x31\\x32\\x38\\x53\\xe3\\x8c\\xe4\\xbd\\xc1\\x6d\\x7b\\x8f\\x63\\x2a\\x3a\\xd9\\xe0\\x26\\x19\\xef\\xf3\\x71\\x74\\xea\\xc3\\xf0\\xbf\\x2f\\x7a\\x75\\x17\\xd4\\xb8\\x2d\\xe6\\xaa\\x1a\\xf0\\x06\\x38\\x19\\xd5\\xe1\\xf9\\x27\\x8f\\xb4\\xf2\\x4c\\x8c\\xc0\\x02\\xaf\\xb1\\x5f\\x33\\x4c\\x04\\xfa\\xdb\\x00\\x30\\x30\\x13\\xc0\\x16\\x67\\xf4\\x93\\x2a\\x6c\\x4b\\x97\\xd3\\x9c\\xd4\\xa4\\x59\\x85\\x06\\xc0\\xbd\\x74\\x0e\\xa9\\xf1\\x16\\x96\\x35\\x7d\\x7d\\x17\\xfe\\x4d\\x75\\xf9\\xd7\\x42\\x41\\xa7\\xaf\\x71\\xf9\\xd8\\x69\\xef\\x6c\\xd6\\x95\\x68\\x7c\\x03\\xfc\\x34\\xad\\x65\\xa6\\x8a\\x48\\x88\\xa1\\xa7\\x41\\x26\\xcb\\x55\\xcf\\x7d\\xa9\\xcb\\x4a\\x67\\x17\\xf6\\xeb\\x88\\x48\\x40\\x89\\xd2\\xc5\\x18\\x9a\\xe3\\x81\\xf2\\x5e\\x7b\\x3b\\xc3\\xb2\\x3d\\x0c\\x9d\\x9f\\x9c\\xdb\\xbe\\xec\\xfd\\x1e\\x72\\xa0\\x5e\\x67\\xbb\\x48\\x3a\\x97\\x64\\xd9\\xfc\\x75\\xad\\x69\\xe4\\xab\\x12\\x70\\xfb\\x40\\xf3\\x95\\x8f\\xea\\x4d\\xa5\\x59\\xb4\\x39\\x80\\xb2\\x46\\x81\\x31\\x3e\\x85\\x91\\xe6\\x85\\x46\\xa3\\xbf\\x76\\xee\\x34\\xb3\\x39\\x70\\x92\\x95\\xa8\\xd4\\x6f\\xb2\\x43\\x2d\\xda\\x2f\\x22\\x18\\x12\\xdf\\x69\\x28\\x95\\xe6\\x7c\\xb2\\x9c\\xbf\\x6f\\xf4\\x50\\x2b\\x43\\x9a\\x4e\\x9e\\x43\\x63\\x9e\\xc0\\x67\\xbc\\x90\\xae\\x81\\x4a\\x29\\x3a\\x7b\\xd4\\x69\\x68\\xe6\\x56\\x78\\x76\\x42\\x30\\x0a\\x0f\\xf2\\x69\\x7e\\x33\\x13\\xf6\\xa4\\x18\\xd3\\xd1\\x2a\\x5f\\x7c\\x51\\xa4\\xc5\\x7b\\x63\\x38\\x5f\\x2d\\x2a\\x21\\xd5\\xd1\\xd7\\x63\\xfc\\x8d\\x1b\\x93\\xc1\\x34\\x35\\xf9\\xe4\\x7e\\xe7\\xa4\\x25\\x98\\x0a\\x6a\\xe6\\xf1\\xa9\\xd0\\x07\\x60\\x74\\x76\\x78\\x3c\\x6d\\x0c\\x78\\x87\\x38\\x0f\\x86\\x8c\\x65\\xb3\\x82\\xd4\\xcc\\x8c\\x04\\x47\\x8b\\xbd\\x79\\xa1\\xd9\\xa9\\x64\\xb7\\x81\\x71\\xd6\\xbc\\xf0\\xb8\\xee\\xc5\\x0a\\x06\\xa4\\xea\\x23\\x4d\\x1c\\x23\\x46\\x5d\\x3e\\x75\\xb8\\x8b\\xc5\\x40\\xda\\xde\\x74\\xed\\x42\\x67\\x5b\\x07\\xf7\\xcf\\x07\\x82\\x11\\xe9\\x07\\xf8\\x6d\\x0d\\xc4\\xb9\\x78\\x62\\x3d\\x9f\\x08\\x73\\x8a\\xf9\\x28\\x69\\x5e\\x54\\x2e\\xc2\\x98\\x0e\\x55\\xa1\\xde\\x49\\xe2\\x52\\x47\\xfa\\x0a\\x09\\x67\\x81\\x18\\xe3\\x93\\x0b\\xc4\\xd2\\x4b\\x32\\x14\\xd6\\xdc\\xfb\\x6e\\xbd\\xf4\\x90\\x6c\\x92\\x8d\\xeb\\x37\\xbb\\x9b\\xa2\\x9c\\x8d\\xe1\\xbb\\x94\\x18\\xdb\\x71\\x8b\\x28\\x53\\xba\\x57\\xad\\x8c\\xae\\x46\\x77\\xad\\xdf\\xd1\\x8b\\x6c\\x7e\\x8c\\x24\\x26\\x21\\xb3\\x5c\\x7f\\x0e\\xfe\\x8d\\xd5\\xeb\\x26\\xff\\x75\\xfd\\x57\\x48\\xb1\\xd7\\x83\\xf6\\xd6\\x8a\\x7d\\x9d\\x56\\xda\\x2c\\x1a\\x97\\x8a\\xc2\\x5f\\x84\\xfb\\xb2\\xbe\\x55\\x68\\xd9\\x1e\\x70\\x93\\x82\\x21\\xc1\\x02\\xae\\xe6\\x04\\x09\\xbc\\xbe\\xc0\\xc8\\x2e\\x12\\xdd\\xb4\\x25\\xee\\xb6\\xec\\xd1\\x15\\x51\\xec\\xd1\\xd3\\x3d\\xda\\xe8\\x71\\xae\\x0c\\x8f\\x24\\xd0\\xd1\\x80\\x18\\x73\\x2b\\x5e\\x0e\"},\n{{0x8d,0xe8,0x63,0x30,0xb2,0x56,0x09,0x5e,0x11,0x14,0xb6,0x52,0x9b,0xed,0xce,0x18,0x2c,0x16,0x6f,0x67,0xa9,0x15,0x39,0xce,0xbc,0x4b,0xec,0x25,0xad,0xd7,0xa4,0xa9,},{0x33,0xcb,0x05,0x4b,0x55,0xbb,0x79,0x0a,0xc0,0xf3,0xaf,0xdd,0x9a,0x6e,0x7c,0x05,0x0e,0xfe,0x90,0x06,0xc2,0x4f,0x60,0xb8,0x04,0x4f,0xd0,0x8a,0x5c,0x10,0x6c,0x11,},{0x6d,0x01,0xd2,0x37,0xdd,0x2b,0xb4,0x18,0x8d,0x29,0xbf,0xde,0xc3,0x87,0x97,0x6a,0x71,0xbe,0x7a,0xdf,0xbf,0x9e,0x23,0x63,0x9b,0x21,0x6d,0x0a,0xa0,0xc1,0x19,0x32,0x23,0x5e,0xdc,0xcb,0x3b,0x42,0xad,0xcd,0xb6,0x29,0x1a,0x0d,0x29,0x9a,0xed,0x64,0x8d,0xe8,0xb1,0x95,0x79,0x49,0xb9,0xd1,0xcf,0x2e,0x50,0x49,0x30,0x30,0xa4,0x0f,},\"\\x39\\xe6\\x1e\\x0e\\xcc\\xec\\x92\\x9c\\x87\\xb8\\xb2\\x2d\\x4f\\xd1\\x8a\\xea\\xbf\\x42\\xe9\\xce\\x7b\\x01\\x5f\\x2a\\x8c\\xac\\x92\\xa5\\x24\\x48\\xa4\\x2f\\xed\\x4c\\xba\\xdc\\x08\\x5b\\xbb\\x4c\\x03\\x71\\x2a\\xe7\\x2c\\xfc\\xb8\\x00\\xb9\\x78\\x35\\x06\\x69\\xb0\\x99\\x00\\x84\\xf2\\xda\\xb7\\x6e\\xca\\x60\\x6d\\x1a\\x49\\xfc\\x55\\xc5\\x29\\xe1\\xe7\\xda\\xdf\\x39\\x12\\x2d\\xd5\\xbd\\x73\\x38\\x93\\x85\\x8b\\x05\\x23\\xef\\x62\\xdf\\x4f\\x13\\x4c\\xf6\\xc2\\x6e\\xed\\x02\\xfd\\xbc\\xb3\\x0c\\xe4\\x74\\xb1\\xad\\xa3\\xf0\\x60\\x76\\x9f\\x93\\x4b\\xbe\\x68\\x6c\\xce\\xbd\\x60\\x88\\x3e\\xce\\xc9\\xce\\x3f\\xfb\\x8a\\xc4\\xa0\\x67\\x8c\\xdc\\x5b\\x00\\x5a\\xe3\\xdb\\xa7\\xe4\\xfe\\x8b\\xc0\\x45\\x73\\x99\\x57\\xd8\\x49\\xf6\\x9c\\x14\\x74\\x05\\x7b\\x42\\x8c\\x54\\x25\\xf3\\xcc\\x25\\x16\\xe8\\xbb\\xe3\\xbe\\x81\\xaf\\xd4\\xe7\\xb5\\x75\\xab\\xe8\\x8c\\x87\\xf2\\xf0\\x3b\\x56\\xf6\\x9f\\x9e\\x3b\\x61\\xb3\\x78\\x81\\x20\\xda\\xa4\\x95\\xef\\x0e\\x50\\xeb\\x97\\x0a\\x64\\x5c\\x13\\xd2\\x13\\xc7\\xcf\\xb7\\xd0\\xad\\x55\\x5c\\x92\\x0a\\x1e\\x5d\\xbc\\xb4\\x67\\x97\\xd9\\x39\\xfe\\x04\\x01\\xf5\\x47\\xbf\\xd1\\x75\\x43\\x22\\x1a\\x53\\x01\\x0d\\xe0\\x1f\\x25\\xb6\\x45\\x19\\xc8\\xf0\\x39\\x63\\xe4\\xb9\\xca\\x58\\xb0\\x11\\x36\\x27\\xc0\\x5b\\x96\\x08\\xee\\xaa\\x7b\\x9a\\xe6\\x30\\x5c\\x96\\x18\\x81\\x60\\x00\\x0e\\xe3\\xa7\\xad\\xe9\\x6e\\x0b\\x4b\\xde\\x9d\\x0e\\xd6\\xa0\\xce\\xd7\\x65\\xd7\\x86\\x84\\x0a\\x48\\x17\\x5a\\x6e\\x09\\x0a\\x38\\xaf\\x6a\\xde\\xaa\\x14\\x86\\xa9\\xcb\\x5c\\x8c\\x8c\\x92\\x23\\xee\\x0a\\xe4\\xc6\\xc0\\x26\\x91\\xa3\\x54\\x7e\\x32\\x58\\x2a\\x5b\\x70\\x59\\xd2\\xee\\x66\\xfa\\x9c\\xd9\\x65\\x61\\x5c\\x31\\x5b\\x47\\x6f\\xd8\\x61\\x27\\x9c\\xd1\\xdd\\x76\\x07\\x74\\x3f\\xc5\\x56\\x12\\x96\\x31\\x2f\\x11\\xe4\\x65\\xca\\x40\\xbc\\xe3\\xcf\\x0b\\x1f\\x1d\\x5a\\x30\\xaf\\x60\\x87\\xde\\x4d\\xe9\\x6c\\xe4\\x39\\x65\\xa4\\x6c\\x4f\\xcc\\xa1\\x5f\\x28\\x11\\x49\\xb5\\xc1\\xa0\\xc8\\x8f\\xdb\\xf2\\x74\\x09\\xa1\\x34\\xed\\x4f\\x1f\\xb7\\x30\\xfa\\x19\\x18\\x16\\xea\\x78\\x4d\\x98\\x6c\\xc9\\xec\\x4b\\x69\\x44\\x02\\xde\\x1d\\xcc\\xa9\\xcc\\xc6\\x4f\\xbd\\x07\\xb0\\x7e\\x54\\xe9\\x31\\xde\\x82\\x7a\\x84\\x24\\x60\\xca\\x0b\\xf6\\xb0\\x4e\\xbb\\x57\\x1f\\xa7\\x77\\x87\\xe3\\x88\\x4b\\xe2\\x2f\\x1e\\x40\\x2c\\xf2\\xb8\\xa9\\x6a\\x5d\\x39\\x77\\x0e\\xc4\\xa8\\x43\\x03\\x61\\x42\\xa0\\xbe\\x97\\x0b\\xb1\\xab\\x16\\x5a\\x63\\x74\\xdc\\xf4\\x3d\\xeb\\x8b\\x98\\x30\\xb2\\xc4\\x9d\\xb9\\xcd\\xfe\\x4b\\x52\\x42\\xe3\\x6f\\x95\\xe0\\xc3\\xe0\\x77\\xe8\\xd2\\x38\\xfa\\x6a\\x8a\\xc0\\xd5\\x86\\xbf\\x61\\xb8\\x24\\x8f\\xb3\\xa7\\x9a\\x27\\x0a\\xb2\\x2b\\xe8\\xa9\\xda\\x05\\x5f\\xf3\\xd5\\xbb\\x2d\\x1c\\xa9\\xbc\\x25\\xf7\\x01\\x4b\\x96\\x40\\x77\\x19\\xde\\x34\\x4c\\x3e\\x73\\xb8\\xc1\\x14\\xf7\\x92\\x07\\x5a\\x5c\\x22\\xfd\\xd4\\x16\\x15\\x4d\\x34\\x94\\xec\\x3f\\x02\\xfb\\x11\\x2e\\xe5\\x73\\x7f\\x70\\x70\\x4c\\x1b\\x6b\\x07\\xea\\xcb\\xf9\\x45\\x62\\xca\\x7b\\x90\\xdd\\x84\\xd9\\x8c\\x3e\\xdf\"},\n{{0xba,0xb5,0xfa,0x49,0x18,0x7d,0xa1,0xca,0xb1,0xd2,0x91,0x90,0x00,0x19,0xe6,0xcb,0xaf,0xec,0xcd,0x27,0xbf,0x7e,0xcb,0xf1,0x26,0x2a,0x70,0x05,0x16,0xe7,0xc2,0x9f,},{0xf6,0xfb,0x19,0x85,0xec,0x59,0x1f,0x69,0xe3,0xba,0xc8,0x07,0xb2,0xea,0xbf,0x26,0x39,0x90,0xcd,0xfa,0x09,0xb1,0x78,0x09,0xe4,0x8e,0x38,0x5d,0xa0,0x65,0xec,0x21,},{0xe3,0x16,0x03,0x8d,0x6a,0xa1,0x5b,0x1c,0x1b,0x61,0xc1,0xa1,0x6b,0x36,0x90,0x4f,0xe8,0xa2,0x89,0xc8,0xd6,0x02,0xbe,0xcc,0x51,0x4d,0x99,0x22,0x00,0x86,0xb2,0x67,0x85,0x9f,0x5b,0xf6,0xe9,0xc0,0x86,0x35,0x59,0xac,0x62,0x3a,0x56,0xd7,0x53,0x23,0x44,0xe8,0xd2,0xf2,0x8b,0x3f,0x9d,0xf9,0x20,0x89,0x70,0x8b,0x1b,0x05,0x90,0x08,},\"\\x5c\\xf8\\xff\\x58\\x7e\\x52\\xcc\\xcd\\x29\\x84\\xf3\\x47\\x91\\xee\\x68\\x43\\xe7\\x70\\x17\\xc3\\xb5\\x5a\\xd4\\x5c\\x44\\x45\\x09\\x65\\xb7\\x5d\\x83\\x6e\\x78\\xfb\\xd7\\xa1\\xd1\\x72\\x9e\\xff\\x6d\\x6d\\x34\\x0a\\x90\\x3f\\x3c\\xf1\\x7d\\x9e\\x2a\\xec\\xaa\\xff\\x2a\\x32\\x1f\\xcd\\xde\\x0a\\xbc\\xfb\\xbc\\xbc\\xc0\\x9f\\x40\\x86\\xf8\\x12\\xc4\\x6e\\xfb\\x01\\xb7\\x83\\x43\\xaf\\xbe\\x48\\x30\\x9f\\x91\\x74\\x78\\x45\\x5f\\x32\\x00\\x0c\\x6a\\x69\\xf7\\x9f\\xe2\\x11\\xb9\\x9f\\x03\\x7f\\x59\\x56\\xd7\\x22\\x75\\xa7\\xfe\\x7b\\x45\\x29\\x6b\\x5f\\x73\\x9a\\xa4\\x51\\xff\\x05\\x75\\xbc\\x70\\x58\\x85\\xaa\\x56\\x31\\xb0\\xd0\\x85\\x0b\\xc2\\xb1\\x2c\\x41\\x92\\x43\\x5a\\xe5\\xd2\\xf5\\x2b\\xc5\\x43\\x86\\x49\\x7c\\x4a\\x24\\xb8\\xb6\\xdb\\x51\\x6b\\xe0\\x9d\\x8c\\xcf\\x1e\\xca\\x78\\x5b\\xde\\x97\\xe9\\xbe\\x1a\\xc0\\x64\\xf0\\x94\\xe2\\xaf\\xcc\\x30\\x7c\\x0e\\x06\\xb4\\xc5\\x64\\xcd\\x9a\\x9a\\x95\\x30\\x5b\\x37\\xb8\\x1f\\x43\\x46\\x11\\xdc\\xa5\\x5c\\xaa\\xa0\\x31\\xe8\\x84\\x95\\xd5\\xdc\\x5a\\x04\\xff\\x5f\\xaf\\xdf\\x0a\\x82\\xa0\\xc0\\x3a\\xff\\x1b\\xfb\\xf4\\xff\\xeb\\xae\\x71\\x82\\x4e\\x35\\xe7\\x51\\xb0\\x92\\x70\\x00\\x76\\x69\\x86\\x0b\\x58\\x00\\x35\\x65\\x9e\\x23\\xac\\xe7\\x6b\\x3b\\x36\\x9f\\xa3\\x06\\xf2\\xbe\\xd9\\x57\\x99\\xfa\\xfa\\xbc\\x2e\\x69\\xc1\\x41\\xbe\\xb0\\xba\\xca\\xc7\\xea\\xa3\\x47\\xe7\\x7b\\xe5\\xaf\\x3f\\xcd\\xbe\\x7b\\x36\\x4a\\x7f\\x9a\\x66\\xd5\\xe1\\x7a\\x07\\xdf\\x62\\x02\\xfd\\x98\\xc1\\x4b\\xfe\\xe2\\xca\\x6f\\x07\\x45\\x65\\x1f\\x0c\\x85\\x50\\xf9\\xff\\xff\\xca\\xfb\\x96\\xff\\xb3\\xf1\\x03\\xe6\\x52\\xe7\\x8f\\x53\\x91\\x6c\\xd6\\xf1\\xdd\\x05\\xb3\\xfe\\x99\\xb3\\x42\\x01\\xb0\\x7e\\xac\\x26\\x52\\xf5\\x25\\x35\\x71\\xfd\\x38\\x22\\xc6\\x95\\xd2\\x65\\xc7\\xdf\\xdd\\x6c\\x6b\\x14\\xa8\\x0b\\x6e\\x87\\x18\\x3e\\x6e\\x03\\x2e\\x5f\\x24\\x01\\xcd\\x23\\x8c\\xdd\\x37\\x69\\xbb\\x6e\\x39\\x08\\x23\\x43\\x8f\\x56\\x73\\xea\\x9a\\x47\\x9e\\x5c\\x63\\xfe\\x07\\xa0\\x7f\\x4e\\x14\\xf5\\x77\\x57\\xc4\\xd7\\xd2\\x2b\\x35\\xd7\\x1c\\x44\\xea\\xad\\x48\\x73\\xc8\\xec\\xa6\\xf6\\xb2\\x1d\\xcf\\xa9\\x55\\x20\\xff\\x96\\x14\\xab\\xf7\\xa0\\xe1\\x88\\x53\\x09\\xf2\\xce\\xd3\\xbc\\xdf\\xc3\\x19\\x36\\x3a\\x2d\\xa4\\x6d\\xed\\x79\\xa5\\xcc\\x7b\\x6f\\x69\\x38\\x3f\\x94\\xab\\x35\\xc2\\x50\\x62\\x9c\\xb9\\x15\\xd6\\x67\\xb6\\x28\\x11\\x86\\x75\\x48\\x95\\x80\\x3e\\x4b\\x95\\xe7\\x41\\x82\\x89\\xa6\\xac\\x3b\\xcd\\xb6\\xe1\\xe7\\xf6\\xf1\\xdc\\x38\\xe7\\x7d\\x28\\x19\\x14\\xcc\\x40\\x4f\\x97\\xcf\\xf1\\x4f\\xb2\\xc4\\xfd\\x81\\x41\\x2d\\x10\\x1c\\x1b\\xfb\\x36\\x8c\\xe5\\x93\\x11\\xe8\\x92\\xa8\\xb9\\xcd\\xca\\x86\\x93\\x6f\\x3b\\xca\\x7e\\xc7\\x91\\x63\\xed\\xdf\\x1c\\xee\\x68\\xf4\\x9f\\x1e\\xba\\xa2\\x7e\\xc5\\x0f\\x49\\x0d\\x61\\x60\\x1c\\xa3\\x5f\\x8d\\x6e\\xd2\\x66\\x05\\x4a\\xeb\\x9b\\x19\\x9f\\x93\\x3b\\xff\\xd6\\xe0\\x05\\x0f\\x26\\x1b\\x4e\\x13\\xd5\\xeb\\xfe\\x2c\\xaa\\x65\\x57\\xc3\\x2d\\xde\\xae\\xeb\\xc2\\xa1\\x1f\\x0a\\xa2\\x33\\x24\\x0d\\xa1\\xc7\\xe4\\x0f\\x76\"},\n{{0x74,0xca,0x12,0x2a,0xb6,0x0d,0xe5,0x0c,0xdc,0x04,0xa8,0xe2,0xed,0xa4,0x5d,0x96,0x31,0x06,0x1b,0xf1,0x87,0xd3,0x16,0xbe,0x5b,0x7c,0xc0,0x6f,0x02,0x0c,0x48,0x3e,},{0x78,0x7d,0xef,0xd4,0xfb,0x24,0xa3,0x99,0xbd,0x2a,0x4e,0x76,0xdf,0xf7,0xd6,0x03,0xed,0x0a,0xcb,0x32,0x69,0x81,0x3e,0x4d,0xf6,0x90,0xbb,0xf5,0xb2,0xbc,0x69,0x6e,},{0xbc,0xb4,0xb8,0x50,0x69,0x60,0x11,0x99,0x7e,0xb5,0xdf,0xe1,0x43,0xf1,0xa3,0xd5,0x62,0x8e,0xf1,0xa5,0x40,0x76,0x91,0xee,0x48,0xc7,0x9d,0x69,0xab,0xe4,0xd5,0x33,0xf8,0x17,0xad,0x73,0x13,0xb5,0x79,0x5e,0x46,0xe5,0x95,0xf3,0xae,0x3a,0x91,0x65,0xb1,0xb6,0xfd,0xda,0xe8,0x61,0x64,0xff,0xcb,0xa3,0x76,0x24,0x98,0x37,0xf6,0x09,},\"\\xa8\\x0b\\x46\\x07\\x9f\\xa7\\x75\\xf8\\xc1\\xa1\\x9f\\xa0\\x82\\x9b\\xe6\\x66\\xbd\\xfd\\xca\\x07\\x9c\\xad\\x43\\xd7\\x0e\\x08\\x42\\x18\\x3b\\xc0\\xdb\\x95\\x46\\x8a\\x53\\x9f\\x0d\\xb2\\xae\\xa3\\xab\\x9c\\x70\\x73\\xb4\\x5d\\x22\\x8a\\x9b\\xde\\x23\\x28\\x97\\xa6\\xeb\\x6f\\xc9\\xed\\xf7\\x36\\x5e\\x71\\x01\\xba\\x97\\xc4\\x46\\xa5\\x19\\xa3\\x64\\x9c\\xf5\\x27\\xc8\\xa6\\xde\\x72\\x51\\xb9\\x28\\x06\\x81\\x5a\\xc2\\xfa\\x00\\x82\\xef\\xf7\\x5e\\x25\\x82\\xcb\\xca\\x7e\\x1e\\x4d\\xa2\\xa4\\x46\\xea\\x23\\x3e\\x7c\\xf7\\xce\\xdf\\xb0\\xe2\\x39\\x8e\\xb6\\xe1\\x1b\\xba\\xef\\xe3\\xf7\\xec\\x89\\xf5\\xd7\\x3d\\xd3\\x4b\\xd4\\x7f\\xbc\\xb4\\xd7\\xb2\\x2f\\x2a\\xae\\xe3\\x73\\x78\\x56\\x51\\x84\\x11\\x35\\xcd\\x86\\x61\\xa7\\x01\\xb2\\x10\\x84\\xa3\\x16\\xde\\xac\\x30\\x74\\xe2\\x4a\\x2e\\x35\\xa0\\x33\\x0f\\x7d\\x14\\x79\\xb9\\x32\\xf2\\x85\\x27\\x7c\\x18\\xa4\\x41\\x78\\x72\\x24\\xfb\\xbe\\x46\\xc6\\x2e\\x83\\x4a\\x18\\x51\\xed\\x23\\x79\\x98\\xd4\\x8d\\xce\\x20\\xba\\x11\\x4d\\x11\\xe9\\x41\\xbe\\x29\\xd5\\x6d\\x02\\xf7\\x37\\x0c\\x8f\\x6d\\x6d\\x7e\\x50\\x24\\x8d\\xcd\\x8e\\xc8\\x9d\\x3b\\x22\\xf4\\xf5\\x87\\x78\\x12\\x9f\\xaf\\xd4\\xbb\\x92\\xed\\xe1\\x77\\x14\\xbf\\x02\\x2a\\x5b\\xf9\\x2b\\xe4\\x79\\xf1\\x8e\\x63\\x85\\x2e\\xcd\\xcf\\x8c\\x42\\x11\\xf5\\x30\\xdd\\x30\\xf7\\x9c\\xbf\\x4b\\xfa\\x57\\x37\\xf0\\xba\\xd3\\xb0\\x10\\x60\\x67\\xf4\\x13\\x27\\xc3\\x18\\x9e\\x6f\\x20\\x6f\\x0d\\x4f\\x3c\\x70\\x4b\\xf2\\xbd\\x0b\\x16\\x1f\\x01\\x8f\\xd2\\x1c\\xdd\\xfb\\x41\\x8b\\xac\\x4d\\x52\\xef\\x02\\xc4\\x1c\\x87\\x92\\xe4\\x13\\xb0\\x4f\\x08\\x36\\xce\\xa1\\xf8\\x6c\\x92\\xe5\\xd5\\x70\\x3b\\xee\\x2b\\x5c\\x58\\x99\\xe2\\x85\\x99\\x20\\x24\\xf6\\x4e\\x0d\\x16\\xc6\\x0a\\xd0\\xfd\\x92\\x54\\x79\\x32\\xd0\\xc5\\xcb\\x98\\xd8\\xda\\x22\\xfe\\xeb\\xdb\\xba\\x8d\\x1d\\xe1\\xe7\\xe9\\xbb\\x21\\x9a\\x92\\xeb\\x6c\\x1c\\x69\\x8d\\x3b\\x33\\xa3\\x7f\\x9b\\x81\\x97\\xd2\\x6b\\x55\\x0f\\xeb\\xd2\\x60\\x1e\\x7a\\x64\\x3e\\xa7\\xe1\\xd9\\xe4\\x48\\xae\\x03\\x7f\\x62\\x9a\\x30\\x6c\\xe4\\x17\\xae\\xb7\\x9f\\x2e\\x3c\\xa4\\x4d\\x8d\\xb3\\x84\\x8a\\x81\\x1f\\x18\\x46\\x81\\x1c\\xbc\\xb8\\x74\\xf8\\xaf\\x09\\xe0\\xfd\\x01\\x73\\xcf\\x17\\x5f\\x30\\x41\\x15\\x47\\x6b\\xf2\\xc6\\xc2\\xd2\\xf3\\x32\\xeb\\xa5\\x34\\xf4\\x6a\\xae\\x80\\x1c\\x26\\x92\\xc2\\xd2\\xfa\\xdd\\xfe\\xac\\xc0\\xf1\\xda\\xce\\x44\\x0a\\xbc\\x2a\\xe5\\xe5\\xa4\\x9d\\x57\\x8f\\xd7\\xf9\\xde\\x2a\\x84\\x1a\\xd6\\xb6\\x76\\x9c\\x32\\xb1\\x44\\xce\\xea\\x16\\xd0\\xf3\\xc0\\xcb\\x3a\\x8e\\xe6\\x94\\xc3\\x8c\\x28\\x07\\x35\\x95\\x09\\x6c\\x81\\x37\\x62\\xcc\\x2c\\x5e\\xc4\\xb0\\xd8\\xd7\\x23\\xdd\\x66\\x08\\x53\\x27\\x8f\\xc7\\x2f\\xd6\\xbd\\x9d\\x12\\x72\\x93\\x3d\\xd2\\xa3\\x8e\\xd9\\xd0\\x4b\\x13\\x90\\xff\\xe4\\xb2\\x94\\xa6\\xff\\xfa\\x72\\x1e\\xe3\\xbb\\xa3\\x3a\\x03\\xa1\\x49\\xc4\\xa0\\x34\\x52\\x65\\xc0\\x1c\\xe0\\x15\\xe9\\x4d\\xb4\\x19\\xcf\\xf7\\x04\\x98\\x52\\xee\\x00\\x00\\x48\\xa8\\x57\\x58\\xf6\\xd7\\xb1\\xc5\\x9c\\x50\\x89\\xee\\x01\\x8e\\xd0\\x9b\\x52\"},\n{{0x65,0xee,0xa9,0xff,0xb7,0x56,0x12,0xbd,0xe1,0xd9,0xba,0x3e,0xa4,0xfb,0x5e,0xda,0x0a,0xa6,0xf2,0x55,0x6a,0xb1,0x5b,0xf1,0x81,0x7c,0xee,0x3b,0x95,0xbb,0xba,0x12,},{0x5b,0x39,0x36,0xdc,0x74,0x9b,0x6b,0x92,0x39,0xf1,0x57,0x98,0xac,0xca,0xfd,0x88,0x4c,0x36,0x59,0xee,0x01,0xb2,0xd1,0x7d,0x74,0xfc,0x7d,0xa7,0x82,0x74,0xe7,0xe6,},{0xba,0xa7,0x11,0x31,0x55,0x35,0x8c,0x92,0x4f,0xed,0x57,0x48,0x8a,0x65,0x67,0xf8,0x72,0x38,0x50,0xa9,0xf5,0xc0,0x3a,0x0d,0x7d,0xe8,0x5f,0xcc,0xd8,0xfb,0x4d,0x17,0xd7,0x75,0x35,0x23,0xb0,0x0c,0x0d,0x8a,0xdb,0x88,0x4d,0xc0,0xc8,0xa7,0xa4,0x4d,0xc2,0xa6,0x00,0x83,0xaa,0x5b,0x3c,0x5b,0x94,0xa8,0xd8,0x80,0xf2,0xa9,0x4d,0x09,},\"\\xc0\\x69\\x36\\x32\\x3c\\xe3\\x25\\x3c\\xac\\x5a\\xb4\\xf6\\xb8\\x32\\x70\\xcd\\x4c\\xfe\\x85\\xd0\\xbf\\x8b\\xac\\x1e\\x1b\\x8d\\x5f\\x0b\\x15\\x3f\\x54\\x1c\\x8e\\x8e\\xd9\\x5f\\x28\\xd5\\xc8\\x5a\\x23\\x15\\xcd\\x93\\x1b\\x7c\\xf3\\xed\\xae\\x50\\xf9\\x28\\x30\\x59\\x91\\x62\\x80\\x4b\\x13\\x63\\xd3\\xac\\x0d\\xa0\\xab\\xd0\\x97\\x51\\x02\\x3b\\xdd\\xc1\\x62\\x88\\x94\\x4e\\x61\\x6d\\x21\\xd9\\x12\\x71\\x97\\x8b\\xb7\\x82\\xd3\\xeb\\xed\\x7f\\xa6\\x12\\x84\\xc7\\x49\\x0d\\x27\\x59\\x3c\\xa8\\xa3\\xd5\\xb4\\x75\\x62\\x33\\x07\\x01\\x0a\\xbc\\x1f\\xbf\\x79\\x3a\\x81\\x6a\\xaa\\xb5\\xe0\\x92\\x4d\\xec\\x79\\xd6\\x04\\x98\\x96\\x5c\\xf7\\xf8\\x0a\\xb5\\x9f\\xc0\\x29\\xf7\\x82\\x16\\x67\\x55\\xb7\\x2b\\x86\\x90\\x75\\x43\\x4a\\xb6\\x06\\xcc\\x87\\x0a\\x7c\\x0b\\xc8\\xbf\\x29\\xae\\xe0\\x33\\xfa\\x9c\\xc1\\x22\\xed\\x7c\\x8e\\x06\\x9b\\x54\\x7d\\xba\\xe2\\x59\\x01\\xb9\\xe2\\x49\\xb4\\x1f\\xea\\x0b\\xf8\\xda\\xf3\\x82\\x68\\x66\\xbc\\xae\\xd2\\x75\\x3b\\x5e\\x91\\xae\\x93\\x7e\\x71\\x7b\\x50\\x8a\\x0a\\xcf\\x4c\\x3b\\x06\\x1f\\xf0\\xcb\\x9c\\xfd\\x38\\x0e\\x24\\x94\\x50\\x09\\x51\\xa6\\x62\\xfd\\x49\\x28\\xfc\\x5f\\xca\\xf6\\xc1\\x8e\\x84\\xb1\\xd3\\x78\\xe4\\x9b\\xd9\\xd5\\x96\\x86\\xd0\\x87\\xeb\\xd5\\x52\\xd0\\x7f\\xa9\\xba\\x81\\x6f\\xa5\\x40\\x2c\\xa9\\xe7\\x25\\x2a\\x64\\x8d\\x10\\x6c\\xfe\\x6c\\x43\\x1c\\xc2\\xa0\\x53\\xe2\\x29\\x46\\x37\\xcd\\xb9\\x9d\\x96\\xab\\xe6\\x89\\xed\\xab\\xc5\\xca\\x07\\x0f\\x77\\xc1\\xec\\xd1\\xd5\\x2d\\x53\\x85\\x28\\x9f\\x17\\xce\\xd7\\x68\\xc3\\x97\\x16\\x71\\xb9\\xc0\\xb2\\xf8\\x55\\xb8\\x46\\x1c\\x1e\\x74\\x6c\\x7b\\x38\\xf7\\x78\\x96\\xb8\\x5a\\xfb\\xbe\\xdd\\x08\\x37\\x5f\\xe9\\x22\\x98\\x46\\x14\\xdd\\x84\\x9f\\xe2\\xcb\\x89\\xae\\x71\\x49\\xdc\\xd1\\xd3\\x7f\\x49\\x36\\xe6\\x7b\\x14\\x40\\xbe\\x72\\xe0\\x09\\x39\\x8b\\xe6\\xf0\\x83\\xbf\\x96\\x11\\x48\\x0b\\x59\\x2f\\xe2\\xf0\\x11\\x8e\\x25\\x3d\\xb5\\xd2\\xe9\\xe4\\xb4\\x54\\x1c\\x11\\xda\\x00\\xf7\\x16\\x1a\\x73\\x6e\\x5f\\x0b\\xb9\\x34\\x20\\x8e\\x3e\\xf4\\xe0\\xb9\\xa5\\x22\\x58\\x20\\x3f\\x06\\x0d\\x18\\xa1\\x95\\x15\\x9e\\x5e\\x26\\x8a\\xa2\\x80\\x53\\xc8\\x34\\xf7\\xbd\\x5d\\xb9\\xbd\\x71\\xf5\\x07\\xd9\\x13\\x70\\xb3\\xff\\xca\\xbb\\xd4\\xac\\xb3\\x07\\x1d\\x3f\\x6d\\x52\\xc3\\x49\\xac\\xf3\\x50\\x95\\x34\\x8c\\xeb\\xf5\\xa8\\x6f\\x8c\\x59\\xdd\\xc9\\x65\\xef\\xf6\\x10\\xac\\x42\\x58\\x04\\xc0\\xe2\\xf6\\xbe\\x42\\x85\\x3f\\x5b\\x46\\x43\\x4a\\x2c\\x31\\xd9\\xac\\x99\\x53\\x9b\\xfd\\xc0\\x4e\\xcf\\x2f\\xef\\xd0\\x45\\x98\\xfa\\x63\\xc1\\x39\\xff\\x6c\\x6d\\x88\\x41\\x0e\\x73\\xbd\\x32\\x8c\\xc4\\x34\\x9a\\xb4\\xbb\\x86\\xf2\\xe2\\xed\\x7c\\x73\\xde\\x96\\x52\\x0e\\xf7\\x73\\x0e\\xf3\\x83\\x45\\xe0\\xf9\\x72\\xa8\\x4c\\x53\\x88\\x10\\x36\\x87\\xe6\\x8c\\x50\\xf9\\xd8\\xc9\\xaf\\x90\\x3b\\xc6\\x32\\xd4\\x32\\x04\\x06\\x2a\\x4f\\x50\\x2e\\x21\\x4c\\x07\\x05\\x9c\\x2c\\xbe\\xf7\\x2a\\x54\\x11\\x0d\\xbf\\x73\\xe4\\x25\\x40\\x2d\\x17\\xe9\\x78\\xec\\x19\\x9b\\x51\\x8c\\xec\\x03\\x10\\xbf\\xbf\\x7d\\x9a\\xd3\\x00\\x43\\x4a\\x4a\"},\n{{0x08,0xda,0xbd,0x4e,0x5c,0x11,0x9e,0xa9,0x07,0xce,0x45,0xf0,0xa7,0xaf,0x9e,0x62,0xc0,0xc3,0xf1,0xc9,0xec,0x61,0xad,0x10,0x56,0x7d,0x79,0x36,0x28,0x54,0xc5,0x57,},{0x94,0x54,0x06,0xb8,0x5d,0x7b,0x32,0xe0,0xb1,0xab,0x12,0x00,0xb9,0x42,0x22,0xde,0x1a,0xaa,0x68,0x62,0x4c,0x60,0xbb,0x47,0x16,0xb0,0xbc,0xe9,0xdf,0x00,0x57,0x71,},{0x33,0xad,0xbf,0xcd,0x4e,0xd4,0xfa,0x67,0xc5,0x8b,0x5c,0xb5,0x9e,0x16,0x98,0x71,0x48,0x69,0x78,0x12,0x66,0x0b,0x35,0x31,0xff,0x6a,0x21,0xc7,0x49,0xb9,0x60,0x16,0x60,0xba,0xee,0xe2,0x48,0x9b,0x82,0xb4,0xcd,0xe1,0x32,0xb6,0xe6,0x2f,0x2f,0x90,0xd8,0xf9,0x92,0x78,0x60,0xaa,0xad,0x25,0x28,0x1d,0x03,0xeb,0x17,0xa9,0x52,0x0f,},\"\\x6c\\x47\\x19\\xa5\\xa2\\xa6\\x89\\x48\\x35\\xc4\\xac\\x1e\\xd6\\x91\\x59\\xe5\\xeb\\xb5\\x69\\x2a\\xd8\\xea\\xad\\xa4\\x39\\xf7\\x9e\\x96\\x68\\x4b\\x36\\xce\\xcf\\xb4\\x4b\\x89\\x01\\x56\\x31\\x66\\x3e\\x06\\x44\\xf6\\xc7\\xab\\x71\\x39\\x89\\xd7\\x42\\xda\\x27\\x42\\x72\\x53\\x31\\x8a\\x52\\x43\\x2d\\xfa\\xb2\\x12\\x1d\\x1e\\x92\\x33\\xea\\xd7\\x19\\xe2\\xc8\\x6a\\x6b\\xe0\\x73\\x63\\xd0\\x02\\x17\\x3f\\x20\\x54\\x46\\xca\\x95\\xfc\\x17\\xb2\\x46\\x35\\x82\\x7f\\xe3\\x15\\xf2\\x22\\x40\\x8e\\x45\\xe8\\x33\\xf2\\x9f\\xf0\\x8f\\xf3\\x1d\\xac\\x58\\x3a\\x4b\\xec\\x70\\x76\\xd5\\xcc\\x78\\xcf\\xc9\\x44\\x51\\xcb\\xf4\\xf7\\xe2\\xfc\\x5b\\x5e\\xd8\\x07\\x0f\\x4e\\xf8\\x08\\xbe\\x1d\\x8a\\x68\\x0e\\xcd\\xff\\x59\\x01\\x0f\\x39\\xb1\\xde\\x80\\xbe\\xf1\\x71\\x9f\\x1e\\x21\\x8e\\x0c\\xe0\\xa1\\xe3\\x93\\xa5\\x66\\xc5\\x17\\x64\\xd2\\x37\\x0d\\x95\\xa6\\x11\\x91\\xd8\\xf7\\xaf\\x74\\x0d\\xc2\\x08\\xfa\\x78\\x31\\xb2\\x10\\x67\\x05\\x12\\xcd\\x73\\x76\\x6e\\x60\\x9e\\x9b\\x78\\x00\\x21\\xeb\\xb2\\x0c\\xc8\\x79\\x0d\\x8d\\xa5\\xf1\\x0f\\x5b\\x6a\\x11\\x4a\\x1d\\xb8\\x8f\\x66\\x76\\x65\\x01\\x80\\x2d\\x9c\\x36\\x6e\\xa3\\xfa\\x6f\\x1b\\x1e\\x1e\\x8b\\x04\\x20\\x94\\x34\\x13\\xcc\\x6f\\xea\\xb2\\x8c\\x6b\\x68\\x3c\\xd2\\xb3\\x33\\x06\\x9c\\x89\\x51\\xbc\\x45\\xe8\\xa1\\x3b\\xd5\\x22\\x57\\x83\\x51\\xc8\\x82\\xf7\\xc3\\x42\\xfe\\x43\\x31\\xb9\\x21\\xf5\\x33\\xc9\\x2e\\xc0\\x4a\\x49\\xb2\\x92\\xbc\\x56\\x9d\\xdc\\xef\\xca\\xb5\\x72\\x7f\\x9b\\x56\\x25\\xb1\\x67\\xa9\\x02\\xdc\\x89\\x6d\\x8b\\xc7\\xd8\\xe9\\x99\\x20\\xf5\\xdb\\x8d\\xd7\\x67\\x83\\x9c\\x43\\xe3\\xcd\\xf9\\x47\\x08\\x0d\\xec\\x95\\x42\\x14\\xa6\\xfb\\xbe\\x04\\x87\\xa2\\xf3\\x2c\\xd1\\x7a\\x6b\\x00\\x03\\x70\\xbd\\x41\\x44\\x84\\xfb\\x73\\xc5\\x10\\xea\\x01\\x24\\xc6\\xcf\\x0f\\xe5\\x6c\\x08\\x46\\xa7\\x9b\\xfc\\x59\\x77\\x9d\\x3b\\x07\\xa1\\xbd\\x2c\\x7f\\xb7\\xe2\\xd0\\x03\\x9f\\x0b\\xd2\\x1c\\x8a\\x30\\x8f\\xb0\\xf5\\x8f\\xdb\\xf9\\x4e\\xfa\\x08\\x57\\xac\\x3b\\xdd\\xdd\\x86\\xd5\\x76\\x3e\\x20\\x5e\\xe1\\xb2\\x21\\xf0\\x60\\xce\\xdb\\x8b\\xc0\\x5f\\x03\\x1b\\x60\\x6c\\xc7\\x4d\\xad\\xc5\\xdb\\x04\\x23\\x27\\x48\\x86\\x5a\\x73\\xd6\\xcc\\xdd\\xb4\\xd5\\xe9\\x30\\xd5\\x28\\x34\\x8c\\x5b\\xe9\\x08\\x8b\\xfe\\x34\\x45\\x84\\x87\\xa6\\x7b\\x19\\xa1\\x8e\\xca\\x25\\xc0\\xd3\\xfb\\xe2\\x19\\x5e\\xb9\\x17\\x07\\xb6\\x5d\\x91\\x61\\xea\\x93\\xed\\xdd\\x64\\xa6\\x34\\xb2\\x32\\x80\\x19\\x5f\\xdb\\x0d\\x13\\x88\\xf6\\x99\\x8e\\x18\\x58\\xa4\\x5b\\x88\\x69\\x99\\xb8\\x44\\xe6\\x79\\x5d\\x83\\xd3\\x18\\x37\\xe4\\x41\\x1f\\x71\\x69\\x92\\x26\\xde\\x1b\\xa0\\x24\\x56\\x08\\x00\\x0d\\xcf\\x22\\x3d\\xd1\\x83\\x59\\xb7\\xc6\\xd4\\x59\\xa6\\x5d\\xbe\\x66\\xc9\\x0f\\x5c\\xb8\\xc0\\x91\\x22\\x18\\x7a\\x30\\x46\\xa1\\x6d\\xd1\\x79\\xc3\\xf4\\x37\\x3e\\x57\\xcf\\x5e\\xe0\\xea\\xb6\\xa2\\x12\\xcc\\x9e\\xd8\\xb5\\x4b\\xf3\\x7f\\x1d\\x27\\xfb\\xd7\\x98\\x48\\xe4\\xec\\x1f\\x56\\x72\\x43\\xab\\x87\\x40\\xa0\\x51\\x49\\xd9\\x60\\x2e\\xad\\xa9\\x20\\xa4\\x6d\\x61\\x0d\\x3c\\xc8\\x23\\xb5\\x64\\x98\"},\n{{0xe0,0xf7,0xd0,0x08,0x24,0xc5,0xf3,0x70,0x1e,0x55,0x17,0xa4,0xab,0xc1,0x3e,0x2f,0x2c,0x0b,0x13,0x8c,0x83,0x69,0x77,0x84,0x3b,0xbd,0x1e,0xef,0xfa,0xbd,0x96,0x8a,},{0x52,0xfd,0xda,0xe3,0xe0,0x18,0xa6,0x84,0x73,0xb3,0x16,0x8d,0x07,0x64,0xcf,0xe2,0x74,0xdc,0xc8,0x34,0xc9,0x0a,0x91,0xfb,0x4f,0xe7,0x4b,0x93,0x9d,0xd2,0x38,0xb1,},{0xcc,0xdf,0xe1,0x8a,0xd6,0xd0,0xb6,0x5d,0x08,0x6d,0x63,0x2f,0x83,0xcc,0x46,0xff,0x3b,0x3f,0x2c,0x07,0xbb,0x8e,0x76,0x9d,0x0f,0xb4,0xe8,0x2d,0xf8,0xa3,0x87,0x3f,0x9a,0xee,0x35,0xfd,0xd1,0x8a,0x57,0x83,0x60,0x31,0x80,0xa9,0x5c,0x9f,0x74,0xce,0xd9,0xdb,0x51,0x46,0xaf,0xcf,0xbb,0xdd,0x40,0xdf,0x29,0xe0,0x42,0x01,0x20,0x0c,},\"\\xb3\\x9e\\x3a\\xc7\\x5a\\x22\\x1a\\xdc\\xce\\xd0\\x9a\\x85\\x91\\xac\\x5e\\x2f\\xe1\\x5d\\xfe\\xd5\\xb9\\x19\\xcb\\xaf\\x14\\xc6\\x5e\\xb7\\xcd\\x93\\x08\\x6d\\xde\\xe3\\xf7\\x47\\x25\\x47\\xe6\\x6d\\xdc\\x70\\x06\\x2b\\x97\\x62\\x97\\xd1\\xa3\\xc1\\x70\\xee\\x52\\x5c\\x9c\\x53\\xba\\x93\\xa4\\xc4\\xfd\\xb2\\x35\\x72\\xb7\\xca\\x6e\\xd1\\x38\\x53\\xe7\\x0d\\xb1\\xd7\\x2e\\xde\\xb9\\x94\\x4b\\xbc\\x35\\x4a\\x52\\x0e\\x77\\xae\\x59\\x1f\\x31\\x80\\x92\\xef\\xd5\\xe6\\x6d\\x9c\\x09\\x81\\xc4\\xa4\\xbd\\xa9\\x8a\\xa4\\xe5\\x90\\x45\\xff\\x9c\\x4b\\x4c\\xa3\\xac\\xb2\\xff\\xd8\\x93\\x20\\x1c\\x70\\xb3\\x4a\\x77\\xf2\\x4e\\xda\\x54\\x54\\x9d\\xc8\\x4a\\xd1\\x34\\xa3\\x55\\x32\\x55\\x38\\x15\\x88\\x8a\\xe3\\xdd\\x9e\\x24\\x1e\\xc4\\xeb\\xbf\\xf8\\x6f\\x8c\\x1e\\x8a\\xdb\\xaa\\xc4\\xb9\\x1a\\xfd\\x18\\x22\\x8c\\xbb\\xd5\\xdd\\x80\\x5a\\xca\\xbf\\x0a\\x1e\\x29\\x0c\\xe5\\xdd\\xa0\\x25\\x1a\\xdf\\xb3\\x7c\\xb7\\x14\\xc1\\x39\\xb5\\xa3\\x24\\x2d\\x88\\xc6\\x44\\x84\\xa3\\x76\\x55\\xcc\\x8f\\xcb\\xec\\xff\\xa9\\x7f\\xbd\\x14\\xd6\\x4d\\x51\\x2b\\xf8\\xf6\\x30\\x5f\\x89\\xc5\\x09\\x22\\xde\\x54\\x16\\x92\\x15\\x8f\\xb5\\x47\\xfd\\x53\\x9f\\x1e\\x58\\x77\\xcc\\x64\\x94\\x95\\x16\\x63\\x32\\xea\\x2b\\x68\\x5c\\xfa\\x3f\\x60\\x20\\x19\\xdf\\x2a\\xb2\\xc2\\x5e\\xd9\\x6b\\x68\\x74\\x5e\\x9a\\xe8\\x9c\\x94\\x8d\\xa1\\x1a\\xd8\\xa8\\x30\\xdf\\x8b\\x00\\xf2\\xe6\\x68\\x19\\x2d\\xad\\xf2\\xc5\\x62\\x0d\\x35\\xc6\\xe8\\x1a\\x28\\x53\\xf8\\x41\\xe3\\x75\\xa0\\xd9\\xfc\\xa2\\xd2\\x96\\xef\\xce\\x2a\\xc3\\x8d\\x40\\xb0\\x30\\xb5\\x75\\x60\\xae\\x6e\\x83\\x41\\x33\\x9b\\x3d\\x3c\\x2d\\x06\\x11\\x64\\x12\\x43\\x19\\x59\\x86\\x88\\xfc\\xa6\\x18\\xfc\\x64\\xc9\\xe8\\xf5\\xf8\\x31\\x09\\x7a\\x05\\x3a\\xf1\\x9d\\x7d\\xbd\\x61\\x21\\x8d\\x92\\x67\\x42\\xc2\\xe9\\xa4\\x2a\\x79\\xcc\\x1b\\x14\\x89\\x12\\x72\\x2d\\x8c\\xd5\\xca\\x79\\x3a\\x1a\\xd7\\x3b\\x5f\\x14\\x1b\\x41\\x80\\x9c\\x2f\\xc0\\x53\\x0b\\x76\\x30\\xe8\\x03\\x90\\xc6\\xb3\\x38\\xc7\\x18\\x68\\xda\\xcc\\x59\\xbf\\x46\\x3f\\xfc\\x48\\x90\\x16\\xbf\\x67\\xf9\\xc9\\xd5\\x55\\x3c\\x1e\\xde\\x17\\x15\\x28\\x13\\xfe\\x0b\\x26\\x4b\\x65\\xdc\\xa1\\xb2\\xb3\\x8e\\x4b\\x80\\x9f\\x8c\\x97\\x25\\xac\\x5b\\x1d\\x8d\\x2e\\x56\\xbe\\xc9\\x64\\x9f\\xe5\\x5c\\x75\\x83\\xff\\x23\\xb0\\x43\\xd6\\xf3\\x76\\x86\\x28\\xf1\\xf0\\x51\\x63\\x37\\x82\\x4a\\x5a\\x56\\xb4\\x09\\x52\\x0a\\x6a\\x6c\\xb7\\x7e\\x4f\\x5f\\xc2\\x0b\\x9f\\x68\\x99\\xe0\\x0a\\xb2\\x2d\\xb1\\x0d\\x18\\x2f\\x09\\xb8\\x1e\\x94\\xf3\\xad\\x56\\x8a\\x0b\\x81\\x24\\x4d\\xf3\\xf1\\x85\\x5c\\x6e\\xf2\\x22\\xa4\\x1a\\x51\\xb6\\x2a\\x46\\x49\\xbb\\x82\\x69\\x0a\\xb6\\x5f\\xac\\xac\\x0d\\x81\\xd6\\xfe\\x02\\x60\\x11\\x70\\xa8\\xdb\\x62\\xcb\\xc5\\xec\\x99\\x55\\xd7\\x71\\x1a\\x1c\\x39\\x65\\x6a\\x9f\\x6e\\x1f\\xb6\\xbc\\x18\\x3d\\x9b\\xea\\x15\\x03\\x53\\x1f\\x17\\x36\\x27\\x68\\xbb\\x84\\x1f\\x9d\\x21\\xf1\\x3a\\x2c\\x99\\x1e\\x55\\xdf\\xf7\\xf2\\xb3\\x36\\xe2\\x9e\\xb2\\x95\\x07\\x63\\x8b\\xdc\\xad\\x7b\\xb3\\x1c\\x69\\xe9\\x09\\x20\\x7e\\xba\\xbc\\xc6\\x53\\xff\"},\n{{0x6a,0xcd,0x93,0x9e,0x42,0x22,0x26,0xcc,0x54,0x43,0xd4,0xaa,0xbf,0x58,0xc1,0x1a,0xf6,0x50,0xcb,0x40,0xb9,0x64,0x8b,0x4d,0xa3,0x8b,0x92,0x7b,0xff,0x9a,0x58,0xdb,},{0x4c,0x0b,0x91,0x75,0x6b,0x9e,0x20,0x6f,0x78,0x63,0xb1,0x55,0xff,0xc5,0x50,0x9b,0xb5,0x24,0x77,0xce,0xac,0xd0,0x1c,0xa0,0x11,0x43,0x51,0x53,0x67,0x86,0x46,0xcc,},{0x79,0x99,0x58,0x77,0xed,0x24,0xc7,0x91,0x68,0x4f,0x29,0x84,0xbd,0xf9,0x60,0x9c,0x3f,0x7b,0x57,0x6c,0x57,0xd1,0x62,0xee,0x62,0x2d,0x4c,0xe8,0xf3,0x6d,0x9c,0x55,0x73,0x16,0x9d,0x88,0x01,0x21,0x6f,0x1c,0x46,0xff,0xe2,0xf6,0xe2,0xc0,0x90,0x48,0xe4,0x7d,0x4b,0xeb,0x99,0x7e,0x9a,0xbc,0x4a,0xbb,0x12,0x9f,0x9b,0x79,0x69,0x0a,},\"\\x82\\x50\\xd5\\x31\\xcf\\x2b\\x66\\xaa\\xc2\\xb3\\x78\\xd5\\x4b\\xc5\\x7f\\xd3\\x29\\xad\\x5a\\x41\\x4a\\x59\\x92\\x55\\x89\\x8b\\x3c\\x3b\\x45\\xbf\\x9c\\x0d\\x2c\\x77\\x54\\x75\\x66\\xb6\\x60\\xee\\xcc\\x76\\xa6\\x95\\xa2\\xd6\\x08\\xab\\xf1\\x1a\\x5f\\x6d\\xb3\\xe6\\x07\\xfd\\x5a\\x21\\x71\\x4b\\x0f\\xad\\x5d\\x81\\x4c\\x01\\x5e\\xbf\\x48\\xbb\\x73\\xad\\x75\\xda\\x9c\\x03\\xc4\\xaf\\x54\\x89\\xe7\\x82\\xb6\\xbf\\x79\\x08\\xa1\\xbd\\x52\\x8d\\x7c\\xe7\\x88\\xa1\\x8b\\xa3\\x52\\x8e\\x35\\x37\\xaa\\x7b\\xbf\\x75\\xf6\\x52\\x4b\\xbd\\x19\\xa5\\x30\\x4b\\xa2\\xa4\\xa3\\xee\\x58\\xc4\\x1f\\xec\\x31\\x32\\xee\\x65\\x01\\x64\\x12\\x15\\xef\\xf7\\x46\\xd7\\x80\\x0c\\x4d\\x33\\xf5\\x2b\\xe8\\x35\\x7e\\x0e\\xe7\\x58\\x04\\x1d\\x91\\xcf\\xe4\\x3c\\x60\\xc3\\xce\\xdc\\x09\\xb0\\xd4\\x6d\\x4c\\xfb\\x9a\\xe2\\xa0\\x23\\x9b\\x6f\\x33\\xc6\\x94\\x1c\\xff\\x35\\x37\\x26\\x70\\xee\\xf5\\xc8\\x85\\x9a\\xb6\\x5b\\x6e\\x9f\\x7e\\xbc\\xe3\\x2f\\xa1\\x5a\\x9a\\x47\\x7a\\xec\\xdc\\x96\\x83\\xa1\\xe3\\x3a\\x1e\\xdc\\xdc\\x90\\xd4\\x20\\xa3\\x1e\\x78\\xc1\\x53\\xd2\\x60\\x20\\x87\\x1d\\xaa\\x4f\\xff\\x28\\xac\\xc3\\xf1\\x1a\\x72\\x06\\x78\\x88\\x06\\xb6\\xfa\\x02\\x34\\x68\\xea\\x5a\\x3d\\x18\\x6d\\x10\\xf0\\xdd\\x56\\x77\\x96\\x66\\x3b\\xa3\\x7c\\x83\\x2f\\xe7\\x5a\\xae\\x7d\\xcc\\xeb\\xf3\\x19\\xf9\\x36\\x00\\xc4\\x6a\\x22\\xf5\\x72\\x23\\x81\\x2d\\xdd\\x0a\\x68\\xd7\\x6b\\xaf\\x5e\\x27\\xa9\\xfc\\x8b\\xd6\\x8c\\xc1\\x0b\\x5b\\x51\\x51\\xd6\\x2b\\x41\\xf9\\x34\\x8e\\x21\\xb7\\x15\\x35\\x2f\\x26\\x30\\xb6\\x17\\xf8\\x13\\xb0\\xc2\\x89\\x96\\x28\\x59\\x04\\xcf\\x29\\x4e\\x9c\\x28\\x56\\xb1\\x7b\\xa3\\x5f\\x9a\\x82\\x19\\x8b\\x82\\x14\\xa0\\x35\\xe2\\x89\\x6d\\x65\\x68\\xbe\\x42\\x39\\x2c\\xce\\xf3\\x2c\\xd4\\xeb\\xfe\\xeb\\xf1\\x2b\\xe0\\x12\\x52\\x06\\xbb\\xe8\\x93\\x36\\xd3\\xe7\\x62\\x99\\x1d\\xfa\\xb6\\x8f\\xc9\\x9d\\xc1\\x64\\x9b\\x89\\x13\\x83\\xdb\\x31\\xfa\\xb6\\x49\\xe6\\x28\\x82\\x3f\\x45\\x98\\xcb\\x63\\x6a\\x38\\xfe\\x1d\\xf7\\x3e\\x68\\xd7\\x42\\x5f\\xc5\\xd2\\xeb\\x55\\xa0\\xfd\\x1b\\xc9\\xf5\\xce\\xaa\\xbd\\x6d\\xd4\\x1f\\x23\\xe4\\xf0\\x86\\xc6\\x92\\x63\\x3d\\xc3\\xc4\\x61\\x9a\\x97\\xab\\x0e\\xad\\xa1\\x71\\xf8\\x4a\\xdf\\x20\\xec\\xc8\\xec\\xd4\\x7c\\x51\\xcc\\xa3\\xe5\\x9d\\xd8\\x09\\xb0\\xae\\xaa\\x73\\x0d\\xf9\\x4b\\xe3\\xba\\xcf\\xd8\\xee\\x88\\x8b\\xba\\x9d\\x57\\x08\\x50\\x65\\x2c\\xd4\\xd5\\xe6\\xc5\\x52\\xa5\\x7e\\x9f\\x48\\xa2\\xb0\\x6a\\xac\\xdc\\x70\\x8d\\x84\\xa3\\x76\\xfb\\xc6\\xc9\\x4b\\xa6\\xbf\\x64\\xa5\\xf0\\x18\\x80\\x0a\\x7c\\xc8\\x51\\x24\\x5a\\xed\\xb2\\x03\\x78\\xb3\\x29\\xac\\xeb\\xb2\\x97\\x7c\\x13\\x98\\x08\\x2b\\x3a\\x0e\\x5e\\x2a\\x9c\\x24\\x84\\xfa\\x30\\x1d\\x30\\x37\\xa8\\x22\\x4d\\xdc\\xc0\\x95\\xb1\\xdb\\xd8\\xa2\\x31\\x5b\\x55\\xbf\\x33\\x18\\xc2\\x78\\x10\\xef\\xc3\\xd8\\xe2\\x5f\\xa7\\xa8\\x78\\x9b\\x73\\xa4\\xf5\\x50\\x59\\x08\\x0b\\x08\\xab\\xb3\\x69\\x9b\\x7b\\x86\\x26\\xcb\\x2a\\x78\\x0d\\x97\\xcc\\x1c\\xa8\\x03\\x28\\x51\\xba\\xf4\\xed\\x8b\\x64\\xfc\\x43\\x30\\x86\\x5f\\x84\\xcc\\xb1\\x2a\\x3d\\xae\"},\n{{0x4d,0xef,0xf6,0x47,0xcb,0xc4,0x5e,0xca,0xed,0xc3,0xf7,0xdd,0xf2,0x2c,0x16,0x7a,0xf2,0x4e,0x3d,0x63,0xda,0x22,0xb0,0xe6,0xa5,0xb8,0x43,0x9c,0x0f,0x3b,0x19,0x34,},{0x0c,0x27,0xc9,0xd7,0x7a,0xc8,0xc7,0x25,0xbb,0x06,0x63,0x93,0x3a,0xb3,0x0d,0x1a,0xad,0x09,0xcb,0xcf,0x2c,0xd7,0x11,0x6c,0x60,0x85,0xa8,0x49,0x9f,0x70,0x14,0x02,},{0xdd,0x54,0x89,0xfd,0xe4,0xba,0x87,0xd1,0x17,0x3d,0x4c,0xee,0x06,0x82,0xaf,0xdd,0x4b,0xad,0x80,0xdd,0x77,0x0e,0xa7,0xd0,0xdc,0xeb,0xaf,0x21,0xac,0xc6,0x1d,0xd6,0x32,0x4a,0xca,0x29,0x5e,0xd0,0xe2,0x3a,0x91,0x5e,0xcf,0xda,0xd5,0x0f,0x17,0x5e,0xbc,0x51,0x6f,0x1b,0xe5,0xb6,0xd8,0x7d,0x90,0xbb,0xe3,0x86,0x22,0x49,0x53,0x02,},\"\\xd6\\x20\\x1e\\xbc\\x21\\xce\\xc1\\xe9\\xbc\\x28\\xf9\\x57\\xc9\\xd0\\x29\\xcc\\x38\\xf9\\xe8\\x5e\\x06\\xdf\\xc9\\x0b\\xf2\\x97\\xe6\\x1f\\x2b\\x73\\xb4\\x07\\xd9\\x82\\xa6\\x6b\\x91\\xe9\\x4a\\x24\\xe9\\x1d\\x06\\xab\\x8a\\x5c\\x07\\x9d\\x0f\\x69\\xbe\\x57\\x88\\xea\\x8f\\xea\\xce\\xbd\\x91\\x72\\x91\\x19\\x22\\x33\\x86\\x2e\\x6a\\xcd\\xa1\\xe8\\xcf\\x9a\\x48\\xbf\\xfb\\x54\\x91\\xdd\\x65\\xaf\\x54\\x1b\\x6c\\x72\\xaf\\x68\\x1a\\x81\\x82\\x3d\\x98\\xa0\\xab\\xee\\xb6\\xba\\x9f\\x95\\x46\\x5b\\x84\\x11\\xf9\\x9e\\x11\\x9c\\xd2\\x84\\x79\\xda\\x98\\x42\\x59\\xbd\\xf8\\x6c\\x9f\\xef\\x3c\\xca\\x34\\xe2\\x24\\x69\\x1f\\x18\\x3c\\xf0\\x95\\x03\\x77\\x27\\xda\\x9c\\xad\\x29\\xf2\\x42\\xf8\\x3e\\xb4\\xf7\\x36\\xe2\\x7f\\xdf\\x67\\x01\\x8d\\x71\\x1b\\x74\\xc4\\x5b\\x29\\x55\\xa6\\xa7\\x6e\\xc1\\x53\\x30\\xdf\\x5b\\xad\\x80\\x30\\xc6\\xb3\\xa8\\x8d\\x72\\xf2\\x84\\x47\\x65\\x2a\\xc8\\x90\\x2b\\x5b\\x76\\xcb\\xf6\\xb9\\x45\\xce\\xab\\xfe\\xc0\\x4a\\x9b\\x8c\\xb3\\x0f\\x43\\xd9\\xeb\\x77\\x3e\\x67\\x05\\x59\\x4f\\x0d\\xe1\\xb7\\x0f\\x1a\\x20\\xc9\\x9f\\xc4\\xb1\\x22\\x1f\\x8c\\x81\\xb0\\xbc\\x30\\xda\\x12\\xcd\\x5d\\xea\\x8f\\x4d\\x90\\xf1\\x3a\\x81\\x1a\\x2c\\xc1\\x1a\\x96\\x84\\x6a\\xaf\\xb4\\xc4\\x2a\\x00\\xe9\\xae\\x7d\\xa2\\x56\\xa0\\xd2\\x2b\\x19\\x8a\\xfc\\x25\\xcc\\x10\\x41\\xd2\\x4e\\x05\\x6c\\xf3\\x87\\x60\\x1d\\x7b\\xf7\\xeb\\x31\\x82\\xd6\\x05\\xfe\\x5e\\x63\\xb1\\x8d\\x53\\x1a\\x5f\\x84\\xe5\\xdb\\xd0\\x18\\x4a\\x76\\xc6\\xc4\\x67\\xa8\\x26\\x3a\\x98\\xb5\\xc0\\x05\\xfc\\xb2\\xaa\\xf9\\x89\\xf5\\xcb\\xd0\\xa9\\xd9\\x03\\xfc\\xfc\\x60\\x9d\\x6e\\x57\\xd9\\xc4\\x39\\x02\\x1c\\xea\\x93\\xe4\\xc4\\xe9\\x91\\xf1\\x93\\xca\\xf3\\x24\\x37\\x70\\xb3\\x25\\x78\\x74\\x80\\x76\\xb7\\xf4\\xcb\\x97\\xf1\\x7c\\x17\\xa7\\x9b\\x82\\x25\\x3c\\x24\\x23\\xdb\\x69\\x8c\\xd0\\xa3\\x3a\\xb3\\x3b\\xb0\\x9b\\x0b\\x08\\xcb\\x8c\\xea\\xdc\\xa1\\xe2\\x9c\\x5d\\xe2\\xfc\\x12\\xb2\\x40\\x7b\\x6c\\xc5\\xaf\\x5a\\xe9\\x76\\xdd\\x3e\\xc6\\x30\\xd8\\x33\\x9b\\x7d\\xd1\\x1f\\xa3\\x4c\\xaa\\xc1\\x50\\xc7\\xc4\\x79\\x1d\\x8c\\x42\\x7b\\x0a\\xd9\\x2e\\x05\\x29\\x06\\x7a\\x88\\xd5\\x20\\x11\\xe1\\xe0\\xa1\\x82\\x99\\xb9\\x69\\x89\\x6f\\x8b\\x83\\x60\\xf7\\x5c\\x45\\xc4\\x96\\xda\\x47\\xb0\\x9b\\x45\\x0f\\x98\\x22\\xbc\\xbc\\xd4\\x3f\\x42\\x93\\xc5\\x16\\x80\\x2b\\xf7\\x47\\xc4\\xab\\xee\\xdf\\xaa\\x3e\\x79\\xcb\\x91\\x03\\xd3\\x77\\x0f\\x56\\x07\\xb7\\x75\\x16\\xe5\\xb1\\xce\\x0f\\x64\\xb6\\xee\\xc7\\xbe\\xc3\\xc6\\x47\\xc0\\x06\\x95\\x6d\\xc5\\x5b\\x6c\\x79\\xf6\\xaf\\xb3\\x9d\\x1f\\xc3\\xec\\xf1\\x1b\\x97\\x4b\\x44\\xae\\xdb\\x72\\xae\\xd1\\x31\\x66\\x35\\x08\\x3c\\x21\\x24\\x50\\x2e\\x5c\\x72\\xd8\\x6e\\xca\\xb6\\xac\\x90\\x24\\x3e\\xb3\\x9a\\x6a\\xa9\\xcb\\x94\\x80\\xda\\x38\\xe1\\xed\\xb8\\xd2\\x8f\\xf9\\x09\\x24\\xc0\\x5d\\x5d\\x21\\xaf\\x5a\\xf9\\x59\\x57\\xb8\\x02\\x07\\x81\\x37\\x87\\x11\\xa2\\x9d\\x09\\x20\\xac\\xad\\x8c\\xcb\\x39\\xa3\\x11\\x69\\x32\\x78\\xc9\\x90\\x0b\\x47\\x0d\\xa2\\xbd\\x4c\\x12\\xa0\\x1d\\x73\\x96\\x26\\x44\\x01\\x7b\\x60\\x34\\x71\\x3b\\x2a\"},\n{{0x5a,0x19,0xbf,0x6c,0x94,0x1f,0x39,0x4e,0x93,0xbd,0x36,0x25,0xfb,0x81,0xcd,0x9d,0xa8,0x1c,0x90,0x20,0xb1,0xc5,0x31,0x25,0x7a,0x7b,0x59,0x57,0xbb,0x07,0x92,0x11,},{0x20,0xe8,0x69,0x9d,0x08,0x7c,0xe5,0xe8,0x15,0x1d,0x28,0x05,0x3d,0xce,0x66,0xc2,0x3f,0x28,0x08,0x1f,0x35,0xbd,0x26,0x81,0x9b,0xbe,0x85,0xd3,0x8a,0x09,0xd7,0x02,},{0x2a,0x2f,0xd6,0x05,0x4e,0xf4,0xe7,0x9b,0x72,0x19,0x1a,0x0c,0xcb,0xd2,0xb1,0x8a,0xeb,0xab,0xe8,0xb9,0xa7,0x18,0x61,0xde,0xd9,0x8b,0x7c,0xdc,0xb6,0xa6,0x25,0x53,0x28,0xbc,0x1a,0xec,0xb0,0xc9,0x33,0x57,0x21,0xa9,0xa9,0x6e,0xe4,0xb5,0xb4,0x3f,0x90,0xd3,0x22,0xec,0xf8,0x35,0xf7,0x8b,0x26,0x4d,0xae,0x6e,0x38,0x7b,0xfb,0x04,},\"\\xf7\\x21\\xca\\x3a\\x32\\xc1\\xe8\\x1c\\x9c\\x6f\\x46\\xd5\\xe1\\xfb\\x50\\xe7\\xce\\x2f\\x4e\\x70\\x93\\x33\\xca\\x2b\\x55\\x0d\\x52\\x13\\xb6\\x77\\x3d\\x67\\x0c\\xa5\\x9a\\x2b\\x50\\x86\\xa4\\x43\\x84\\x3a\\xc5\\x08\\x13\\xb2\\x44\\xc9\\xc9\\xfa\\xc6\\xd1\\x19\\x69\\x89\\x27\\x81\\x35\\x12\\xc8\\x4f\\xe3\\x0a\\x89\\x55\\x30\\x10\\x13\\x8f\\x91\\xe8\\x17\\x6f\\x5c\\xf2\\x57\\x89\\xd7\\x28\\x1d\\xdb\\x83\\xa2\\x46\\x70\\x5d\\xcc\\xb9\\x99\\xc4\\xcd\\x0a\\xe2\\x19\\xc6\\x45\\xf6\\xd7\\x1d\\x45\\x1a\\xe1\\xf8\\xd2\\xf9\\x89\\x1a\\xf8\\xcc\\xce\\x03\\xf4\\x38\\x55\\x9f\\xb8\\x36\\x67\\xb8\\x07\\x7f\\xbe\\x43\\x5a\\x74\\x4a\\xf0\\x19\\xd6\\xd1\\x39\\x9f\\xd2\\x13\\x7f\\x5a\\xfb\\x8e\\xf3\\xf4\\x7b\\xcf\\x73\\x5e\\x7c\\x9e\\xd8\\xa5\\x4b\\xa0\\xc1\\xc6\\x56\\xb6\\x65\\x0b\\xb3\\x0a\\xdb\\x1d\\x57\\xec\\xd2\\x07\\x46\\x39\\x49\\x42\\x31\\xa2\\xe9\\xe2\\xf9\\x85\\xed\\x84\\x22\\xee\\x03\\xcb\\x3f\\xd7\\x38\\xc7\\x35\\xa1\\xb8\\x28\\x06\\x04\\x74\\x60\\xed\\x84\\xf7\\x46\\x8c\\x3c\\x64\\xb3\\x5d\\xb0\\x6b\\xc5\\x8d\\xe4\\xbb\\xa4\\x63\\xe6\\x38\\xa9\\x41\\x33\\xdf\\x10\\x6a\\xc4\\xf4\\x70\\x36\\x1c\\xcd\\xe4\\x41\\x57\\x29\\x9d\\x22\\x5b\\x17\\x79\\x88\\x91\\xba\\xf5\\x92\\x19\\x86\\xa2\\xba\\xe3\\x26\\xdd\\xa0\\xb8\\x96\\x17\\xc6\\x77\\xbd\\x14\\x08\\xba\\x27\\x48\\xba\\xa6\\x7c\\x8a\\x2c\\x5a\\x96\\x9b\\xc0\\x0c\\xb4\\x0d\\xbf\\x49\\x0e\\x07\\xe2\\x2c\\x91\\x3a\\xfd\\xde\\x63\\x04\\xa0\\x7f\\xc9\\xe6\\x08\\x46\\x99\\x24\\x56\\xbf\\xb0\\x66\\x3a\\x09\\xde\\xf6\\x8d\\xef\\x67\\xa1\\x6d\\x29\\xe9\\x8c\\x7b\\x55\\x35\\x18\\x48\\xa8\\xcf\\x92\\x31\\x0c\\x74\\x63\\xc4\\x75\\xf2\\x49\\xc6\\xf7\\x55\\x7f\\xd0\\xd7\\x55\\xca\\x88\\xf8\\x77\\x84\\x7f\\xe0\\x76\\x57\\x56\\xac\\x34\\xa2\\x3f\\x78\\x40\\xd9\\x5c\\x3d\\x29\\x4e\\x66\\x3b\\xb1\\x51\\x8b\\x75\\x92\\x7c\\x41\\x07\\x57\\xe0\\xf5\\xc0\\x7c\\x5a\\x7f\\xb2\\x15\\xdc\\x72\\x07\\x43\\x3e\\xbf\\x79\\x1e\\xdf\\xce\\xc9\\x0e\\x93\\x0f\\x8e\\x3b\\xa9\\xdb\\xbb\\x98\\x54\\x13\\xc2\\x23\\xbe\\x87\\x87\\x3b\\xd3\\x23\\x99\\x75\\x81\\x80\\x4d\\x88\\x96\\xda\\x38\\x6a\\x6e\\x91\\x20\\x05\\x0a\\x0e\\xae\\xd3\\x12\\x40\\xaa\\x17\\xc7\\xb6\\x69\\x4c\\x30\\xcb\\xcc\\x3c\\x69\\x56\\xa6\\x82\\x0f\\xc9\\xab\\x21\\x87\\x55\\x33\\x96\\x3d\\xc3\\xb0\\xd8\\x83\\x58\\x27\\x12\\x76\\xc6\\x05\\x65\\x28\\x91\\x0d\\xd9\\x89\\xae\\x0c\\x33\\x0d\\x17\\x98\\xf7\\xd8\\xe7\\xd1\\x18\\x4b\\x84\\xa8\\x14\\x34\\x32\\x5b\\x8c\\x30\\x2e\\xdf\\x60\\x1d\\xc5\\xe6\\xf8\\x47\\xfb\\xac\\xbd\\xee\\xff\\x78\\xc6\\x62\\x1d\\x1d\\xaf\\xdc\\x23\\x9b\\x18\\xb8\\xc1\\xaf\\xdc\\xb4\\xb9\\xda\\xbd\\x5d\\x3a\\x92\\xa9\\x32\\xea\\x15\\x99\\x54\\x6e\\x62\\x5f\\x96\\xd6\\xec\\x6f\\xb1\\xcc\\xcb\\x76\\xb4\\x76\\xb3\\x30\\xac\\x59\\x25\\x9c\\x63\\x4f\\xac\\x9b\\x3f\\xa7\\xde\\x7a\\xe7\\x05\\x37\\x73\\xb5\\xbe\\xfa\\x00\\x1b\\x04\\x92\\x9f\\x74\\xb7\\x12\\x41\\xe1\\xb2\\x57\\x69\\x6d\\x65\\xa2\\x6c\\x1b\\x4a\\xc8\\x6b\\x7b\\x1f\\xbd\\x69\\x57\\xfb\\x9b\\x95\\x08\\x4c\\xe7\\xd7\\x00\\x90\\xf5\\x5d\\x44\\x53\\x46\\x94\\x30\\x5e\\x91\\x76\\x9a\\x82\\x94\\x13\\x04\"},\n{{0xb5,0x06,0xc0,0x1d,0x69,0x74,0x6e,0xb4,0xbc,0x63,0x58,0x72,0x0e,0x43,0x8a,0xd3,0x30,0xc8,0x8b,0x60,0x5a,0xad,0x65,0x2f,0x47,0x99,0x57,0x3a,0xb0,0xa1,0xaa,0xf9,},{0x7a,0xc8,0xb6,0x88,0x63,0xbd,0x69,0x15,0x15,0x83,0x78,0x9d,0x86,0x4a,0x73,0x57,0xe3,0xa0,0x45,0xfa,0x86,0x52,0x2a,0x9d,0xaa,0x6e,0x26,0xfb,0x79,0xed,0x6d,0x23,},{0x17,0xa1,0x9d,0x26,0x91,0xb7,0xb0,0x46,0xd7,0xb1,0x96,0x69,0xad,0x73,0x14,0x0d,0xb9,0x2f,0x0c,0x97,0x8c,0x7f,0x61,0xbc,0x38,0x67,0xd9,0x2c,0xa9,0xd4,0x75,0x80,0xa0,0x38,0x0b,0x59,0x01,0xba,0xd8,0x2a,0xf4,0x5f,0x67,0x6f,0x74,0x28,0x73,0x01,0x98,0x0f,0x71,0x87,0x1a,0x42,0x26,0x1d,0xbe,0x08,0x02,0x95,0x03,0x36,0xe6,0x0b,},\"\\xf7\\xfc\\x18\\x06\\x6e\\xd0\\x4b\\x30\\xe6\\x33\\xd9\\x86\\x5d\\xa3\\x21\\x4b\\xec\\xa6\\x0b\\xd7\\x96\\x01\\x9c\\xd7\\xec\\xc9\\x18\\x66\\xf9\\xef\\x24\\x46\\xc1\\xfa\\xb0\\x6d\\x86\\x51\\xbe\\x7f\\x10\\x1a\\xec\\x7b\\xb8\\x4e\\xe2\\x1e\\x71\\xad\\x02\\x02\\x15\\xfc\\xfb\\x36\\xf2\\xd1\\x1e\\x45\\x79\\xac\\x39\\xf8\\xe2\\xb1\\x29\\x0e\\x38\\x96\\xd5\\x22\\xbc\\xf5\\x13\\xaa\\xa0\\x67\\x71\\xf8\\x6e\\xe2\\x28\\xcf\\xf3\\xa2\\x0a\\x1f\\x10\\xc5\\x64\\x33\\x95\\x89\\xbb\\xa9\\x60\\x53\\x44\\xc0\\xa6\\xe6\\x82\\xad\\x5b\\xa4\\x0d\\x10\\x41\\x94\\x1b\\xc4\\x6f\\x98\\xb9\\xd0\\x9c\\xa1\\x7f\\x8f\\x04\\x4e\\x98\\x3b\\x8a\\x49\\x08\\x93\\x3d\\xf2\\x26\\x3c\\xf7\\x88\\x11\\xc2\\x4c\\x8f\\x48\\x14\\x35\\x4f\\x6f\\x4c\\x68\\xb7\\xee\\x7b\\x78\\x30\\x82\\x93\\xbf\\x78\\xfd\\x0f\\xf1\\x22\\xf0\\x95\\xc1\\x4a\\x73\\xa5\\x97\\x97\\x17\\x2a\\xe0\\x5c\\xfc\\xec\\x19\\x56\\x3e\\xb1\\x8d\\x2b\\xc5\\x30\\x0e\\xd4\\xbf\\x6b\\xdc\\x44\\x3e\\xa9\\xb8\\xbc\\x1c\\xbe\\xde\\x94\\xca\\xb9\\x05\\xed\\xa5\\xa6\\xa9\\x31\\x59\\x7d\\xe4\\x02\\x14\\x6f\\xac\\x9c\\xf8\\xcd\\x6a\\x8d\\x10\\x46\\x69\\xf9\\x13\\xfa\\x83\\x40\\x01\\xca\\x4d\\x09\\x0f\\xb7\\x94\\x9d\\x31\\x09\\xa6\\x3c\\x05\\x49\\xb0\\x3f\\x15\\x1b\\x71\\x17\\xc4\\xf4\\x69\\x74\\xba\\x59\\xc6\\x82\\x96\\xed\\xfd\\xde\\x76\\x92\\xee\\x43\\x2a\\xce\\xf7\\x61\\x06\\x47\\xe0\\x95\\x78\\x65\\xe6\\x2c\\x1a\\x0c\\xf0\\x56\\x59\\x82\\x3a\\x55\\x45\\x2d\\xd5\\xe4\\x71\\xb3\\x1c\\x5a\\x49\\xab\\x05\\xb5\\xaa\\xfd\\x5a\\x0e\\x53\\x0e\\x89\\x6b\\x58\\xcc\\x52\\x2e\\xcf\\x19\\xe5\\x2e\\xc8\\x2f\\xa1\\x47\\xf9\\xe3\\x85\\x17\\x4c\\x7e\\xc3\\x3d\\x1d\\x9b\\x86\\x93\\x4a\\xeb\\x4f\\x6c\\x57\\x00\\xf7\\xd5\\xeb\\x33\\xff\\x73\\xc9\\xfc\\x6a\\xa4\\x7d\\xf5\\x1e\\x09\\x22\\x9e\\x6a\\xe8\\x94\\xe8\\x6c\\x81\\x8b\\xef\\x06\\x5f\\x82\\x59\\x71\\xa4\\xcb\\x90\\xad\\xfe\\xfb\\x31\\xeb\\xd9\\xd1\\xb7\\x94\\x22\\xdc\\x98\\x68\\xf9\\xf7\\x4e\\x7a\\x32\\xcd\\x40\\x71\\xef\\xb6\\x9b\\x27\\x23\\x3e\\x6e\\x5c\\x60\\xde\\xdc\\xd5\\x32\\x1c\\x03\\x0a\\x46\\xcd\\x26\\xf5\\x60\\x2c\\xac\\x74\\x7e\\xe4\\xb5\\x22\\xd8\\x57\\xa3\\x32\\x1a\\x03\\xf4\\x03\\xa6\\x00\\x62\\x50\\x40\\x63\\x61\\xe4\\x88\\x15\\xaf\\xba\\x77\\xce\\x08\\x90\\x34\\x41\\x84\\x5b\\xa8\\x72\\x25\\xd8\\xb2\\x40\\x46\\x74\\x5d\\x40\\x65\\x64\\x5a\\x1b\\x98\\x41\\x0c\\xac\\x48\\xd1\\x37\\xcb\\xbb\\x8a\\xb1\\xeb\\xa5\\x0d\\xa9\\xc2\\x31\\xe9\\xac\\xf3\\x22\\xa6\\xdb\\xec\\x0e\\xf4\\x16\\xa4\\x46\\xc3\\xb6\\x10\\xd9\\x35\\x69\\xfd\\xf4\\x5a\\xa6\\xcd\\xc1\\xb6\\x40\\xd8\\xf3\\x01\\xd7\\x86\\x93\\xb2\\x82\\x6c\\xc6\\xed\\x46\\x85\\x68\\xad\\x9a\\x0f\\x94\\xaa\\x9b\\x9f\\xb9\\x2f\\x7e\\x78\\xd4\\x84\\xfd\\xf5\\xd8\\xd4\\x5c\\x99\\x1e\\x28\\x07\\x4d\\xcd\\xd6\\x80\\xd3\\xb1\\xf1\\x89\\xef\\x6b\\xdc\\x32\\x0e\\xe6\\xe6\\x4d\\xd1\\xf8\\x0d\\x92\\x64\\xd8\\x30\\x42\\xd2\\xc4\\x3d\\x83\\x58\\x1e\\xf0\\x39\\x4b\\x1b\\x5d\\x1f\\x69\\xf3\\xbb\\xbf\\x04\\xb7\\xc8\\x08\\xba\\x34\\xc1\\x58\\x0f\\x16\\xf7\\x65\\x37\\xb6\\xa7\\xeb\\xd0\\xa1\\x90\\x8b\\xe9\\x49\\x4d\\x3f\\xca\\xa9\\x87\\x1d\\xb1\\x57\\x50\"},\n{{0xe1,0xcc,0xb8,0x0a,0x26,0x2f,0xf8,0xaf,0x1e,0xda,0x07,0x5c,0x97,0x2c,0x8e,0x94,0x1e,0x77,0xce,0xf5,0x7b,0xdb,0x0a,0x82,0x57,0x2c,0x28,0x20,0x0b,0x49,0x3c,0xa3,},{0x3d,0x37,0xe2,0xa5,0x02,0x7e,0xff,0xde,0xe0,0x7f,0xa5,0x11,0xe4,0x23,0xb2,0xbc,0x56,0xed,0xce,0xa0,0x75,0xb4,0x16,0x49,0x76,0x67,0x25,0xc6,0xb3,0x0a,0x10,0xf4,},{0xfd,0xa3,0x4b,0x65,0x2b,0x79,0x74,0x6f,0x89,0x7e,0x22,0x2d,0x37,0xb7,0x7a,0xa2,0x50,0xd0,0x2c,0x52,0x7c,0x48,0x33,0xdf,0x80,0xea,0x41,0xd5,0x21,0x89,0xd5,0x07,0x00,0xe1,0x28,0xb7,0x8e,0xe8,0x14,0x9c,0x9b,0x19,0xf3,0xab,0xf7,0x55,0xac,0xef,0x53,0x48,0xf5,0xfb,0xaf,0x1c,0xeb,0x41,0xc0,0x38,0x90,0x6a,0xc5,0x94,0x60,0x01,},\"\\xcf\\xdc\\x54\\x97\\xb0\\x23\\xaf\\xa6\\x2a\\x7f\\xe5\\x92\\xca\\xa9\\x2b\\x87\\x5c\\x77\\x05\\x74\\x78\\x34\\x00\\x2f\\x77\\x84\\xff\\x16\\x61\\x89\\x39\\x88\\x15\\xd4\\xe8\\xa7\\xa0\\x03\\x8e\\x1f\\xda\\xdd\\xde\\xba\\x51\\x05\\x73\\x27\\xad\\x19\\x60\\xe8\\x59\\xce\\xe5\\x65\\x26\\xbb\\xb4\\x12\\x7b\\x6a\\x5f\\x90\\xd0\\x4d\\x08\\xb1\\x5e\\xee\\x66\\xc9\\xcc\\xf8\\x8b\\x4b\\x7d\\x1e\\xe9\\xd3\\xb8\\xb8\\xc6\\xf4\\x2d\\xb3\\xc3\\x4e\\x59\\x04\\x8a\\x15\\xc6\\x04\\x1f\\x14\\x2c\\x40\\x79\\x36\\x8b\\x7b\\x11\\xe2\\x99\\x70\\x11\\x8b\\x99\\xe5\\x67\\x0a\\xe3\\x1f\\xcc\\xfd\\xff\\x13\\x99\\x14\\x2e\\xe0\\x6b\\x2e\\x3e\\x2b\\x3c\\x97\\x07\\xdd\\x64\\x11\\x97\\x86\\xe2\\xfa\\xb4\\x7e\\x0b\\xad\\x2c\\xc8\\xb5\\x58\\xd9\\x63\\xbb\\x48\\xa4\\x9a\\xd2\\xc6\\x37\\xdd\\x35\\xb2\\x5d\\xb5\\x4b\\xc5\\xa2\\x63\\x02\\x22\\xfa\\x2a\\xce\\xce\\x9c\\xe1\\x2a\\xb0\\x81\\x30\\x77\\xf7\\x65\\x9f\\x50\\x74\\x42\\x9c\\xa6\\xb4\\x94\\x33\\x10\\x32\\xae\\x79\\x2a\\x59\\x9c\\x42\\x5e\\xe2\\x97\\x45\\x1d\\xcf\\x5e\\xe1\\x95\\x29\\x03\\x12\\x74\\x2e\\x64\\x7a\\x77\\x95\\xb8\\x4d\\xcc\\x66\\x4d\\xda\\xe2\\xa1\\xfb\\xf8\\xc4\\x54\\x8a\\x37\\xfd\\x82\\xd8\\x10\\xe2\\x14\\x5f\\x01\\xdf\\x1a\\x6d\\x3b\\xcc\\x42\\xa9\\x1a\\x10\\x76\\x8e\\x09\\x1f\\x3d\\x69\\x32\\x9a\\x7b\\xad\\x6c\\x07\\x2c\\xac\\x6d\\x89\\xaf\\xa3\\x1c\\x02\\x90\\x56\\xd6\\xb6\\x22\\x12\\x16\\x5c\\xeb\\xcd\\x49\\xac\\x67\\x2e\\x38\\x30\\x26\\x7a\\xf9\\xf2\\x8e\\xa3\\x19\\xbd\\x04\\x2f\\x6c\\x59\\xde\\x47\\x01\\xe5\\x82\\x48\\x73\\x6c\\x8d\\x97\\x6a\\xcf\\x93\\xb9\\x9d\\x2f\\x46\\x47\\xa5\\x47\\xd3\\x92\\x44\\x7a\\x48\\xda\\xc1\\x11\\x81\\xe1\\x6b\\x15\\x01\\xa9\\x4c\\x93\\x16\\xe5\\xa6\\x7c\\x99\\x0b\\x35\\x81\\x0b\\x4c\\xda\\x04\\x73\\xa6\\xa4\\xe5\\x76\\x14\\x21\\x58\\x68\\xe2\\xe0\\x02\\xc6\\x05\\x8b\\x42\\xe4\\xee\\xec\\x84\\x13\\x9d\\xc1\\x9e\\xdf\\x5f\\x80\\xae\\xef\\xfa\\x4f\\x5b\\x07\\xe8\\xfd\\x23\\x13\\x9e\\xdd\\xa3\\x18\\x99\\xeb\\xe6\\xfe\\xe7\\x86\\x43\\xce\\x68\\x6b\\x29\\x63\\xa3\\x20\\x72\\xbd\\x3b\\x3b\\xba\\x68\\x48\\x5a\\x05\\xc2\\xcc\\x04\\x56\\xc3\\xda\\x50\\xc7\\xc8\\xc6\\x51\\xa3\\x06\\x6d\\x13\\xa3\\x66\\x0b\\xd4\\x7a\\xb6\\xdf\\xec\\x49\\xe0\\x15\\x57\\xa6\\x74\\x28\\x96\\xaa\\x4b\\xc6\\x36\\x3a\\x79\\x7d\\xba\\xd1\\xa4\\x09\\xcd\\x4a\\x50\\x91\\x1e\\x70\\xea\\x00\\x7a\\xf8\\xe9\\xb1\\xbb\\x7e\\x3a\\xb5\\x62\\x15\\xa5\\x75\\xc9\\x0f\\x73\\x9c\\x2d\\x48\\xb3\\xb3\\x46\\x94\\xb5\\xac\\xdf\\x07\\x98\\x0a\\xe5\\x28\\xde\\x06\\x21\\xed\\xfa\\xc8\\xb8\\xfa\\x84\\x95\\x4d\\x56\\xdb\\xb4\\xd0\\x30\\x82\\xb9\\x84\\xf1\\x3e\\x5d\\xbe\\x9c\\x71\\x12\\xff\\x97\\x16\\xf5\\x50\\x53\\x06\\x46\\x62\\xce\\x0f\\xb8\\x1e\\xa3\\x5f\\x98\\xfd\\x2c\\xd5\\x11\\x37\\xa4\\x6f\\x64\\xe0\\xc1\\xca\\xf4\\x4e\\x54\\x07\\xdc\\x96\\x17\\x60\\xb2\\x59\\x7f\\x7f\\x92\\x00\\x61\\x7d\\x47\\x13\\x40\\xcf\\x15\\x17\\x6c\\x3d\\xa8\\x80\\xfe\\x4e\\x0e\\x93\\xa7\\x2f\\xb9\\x49\\x26\\xfa\\xed\\x86\\x5d\\xfd\\xc7\\x72\\xe1\\x85\\x29\\x2c\\x1e\\x36\\xb1\\x21\\x17\\x81\\xc3\\xe9\\x38\\xe3\\xd4\\xf2\\x4e\\x29\\xaf\\x51\\x7a\\x37\\x96\\x83\"},\n{{0x4f,0xc5,0x12,0xef,0xd8,0x6e,0x3a,0x63,0xb3,0x95,0xea,0xff,0x1b,0xa0,0x11,0xe1,0x59,0x0f,0xb9,0x32,0x6a,0xd3,0xff,0xed,0xe7,0x87,0x6d,0xcc,0x3e,0x9f,0xab,0xdc,},{0x26,0xc2,0xa2,0x2f,0x9b,0xfa,0xd9,0x06,0x06,0xdc,0x61,0x3f,0xf1,0x07,0x02,0x1f,0xcd,0xdb,0xec,0x72,0x37,0x06,0x66,0x60,0xb4,0x88,0x96,0x43,0x49,0xe0,0xc8,0x28,},{0x82,0xc8,0x24,0xa7,0xd1,0x13,0x9e,0xc7,0x3a,0xe1,0xd0,0x23,0xad,0xf6,0x28,0x11,0x44,0x1e,0x96,0x82,0x87,0xf1,0xa5,0x80,0xb8,0x59,0xcd,0x66,0xcb,0x33,0xb5,0x8e,0x40,0x9b,0xde,0xb2,0xa8,0x74,0xbf,0x4c,0x23,0x61,0x0b,0xd4,0x4f,0x69,0x31,0x47,0xf2,0xf7,0xc2,0x9d,0x44,0x3a,0x90,0x50,0x84,0xf3,0xea,0xaf,0xd9,0x33,0x0e,0x04,},\"\\x07\\xcd\\x1e\\x9b\\xfa\\x38\\xa7\\xd8\\x85\\x34\\x65\\xa9\\x3c\\x77\\xab\\x4f\\x30\\xfa\\xf9\\x14\\xe4\\x8b\\xc4\\x76\\x3b\\xa0\\x7b\\xf9\\x6b\\xa8\\x08\\xc1\\xf5\\x9a\\xd4\\xce\\x9b\\x7d\\x92\\x1f\\xbb\\xc7\\x79\\x65\\x9d\\x7c\\xa3\\x6e\\xdb\\x7d\\xd3\\xac\\xf7\\xa2\\x94\\x52\\xa8\\x45\\xb4\\x9f\\xb6\\x54\\x3a\\x3b\\x6c\\x5c\\x1c\\x29\\x3a\\xff\\x61\\x84\\x85\\xa1\\x0e\\xea\\x60\\xee\\x96\\x49\\xac\\x9d\\x48\\x1e\\x69\\x49\\x96\\x7d\\x39\\x38\\xb5\\x2f\\xe0\\x9c\\x36\\xb9\\xad\\xe0\\x75\\x81\\xdb\\x4e\\xb5\\x42\\xa9\\x7f\\x5a\\xc8\\xac\\x73\\xd3\\xee\\xa1\\x84\\x72\\x25\\x56\\x76\\x0c\\xf4\\x83\\x09\\x05\\x64\\x55\\x30\\x61\\xb9\\x0a\\x0b\\x6d\\x2d\\xff\\x47\\x07\\xbe\\x76\\x39\\x37\\xa1\\x05\\x94\\xa8\\x2b\\x76\\x6b\\xb2\\xcf\\x6d\\xaa\\x52\\xfa\\x8d\\x7b\\x48\\xf3\\x21\\x27\\xc4\\x31\\xad\\x9a\\xae\\xd3\\xbf\\xde\\xb9\\x9a\\xd4\\x21\\x18\\xa1\\xb4\\xde\\x7b\\x99\\x21\\x34\\xed\\x9c\\xda\\xd0\\xb5\\x29\\x6d\\x19\\x7a\\x48\\x5e\\x49\\x3e\\xcf\\xec\\xa3\\x65\\x3a\\xd2\\xce\\x0f\\x92\\x41\\xaa\\xbc\\x09\\x6d\\x7c\\x4b\\xa6\\x03\\xba\\x7d\\xdd\\x07\\xa8\\xb2\\x57\\xfe\\x52\\x32\\x76\\x41\\x70\\x73\\xa6\\x5f\\xa4\\x43\\x42\\x56\\xfd\\x1f\\x23\\x9e\\xc1\\xde\\x5d\\xa1\\xa0\\xa8\\xc5\\xe6\\x86\\xee\\x14\\xd9\\xdf\\xa4\\x38\\xc5\\x3b\\x99\\xc9\\x54\\xaf\\xab\\x2f\\x79\\xe6\\x0b\\x71\\x26\\xf2\\xcb\\x58\\xa2\\x6e\\x29\\x0d\\xa1\\xdc\\xcf\\xc3\\x01\\xf2\\x39\\x74\\x8e\\xde\\x7b\\xcf\\x1b\\xb7\\xcc\\xb4\\x72\\x0e\\x69\\x2f\\x57\\xe5\\x3e\\x6f\\x59\\x07\\x53\\x99\\xe1\\x08\\x0a\\xc8\\xaa\\x9a\\x61\\xa5\\x68\\xc4\\xc5\\x69\\xd3\\x6e\\x76\\xa2\\xd7\\x27\\x1f\\x2c\\x44\\xde\\x4e\\x36\\x3a\\x8c\\x91\\x6a\\x4e\\x44\\x6b\\x02\\x7b\\x64\\x39\\x2e\\x90\\xce\\xab\\xf6\\xb6\\x07\\x1b\\xc4\\x7a\\x13\\x79\\xb6\\xaa\\x63\\x44\\x76\\x3b\\x2a\\x0e\\x7f\\xf7\\xc4\\xa2\\x7b\\xff\\x31\\x06\\x72\\x1c\\x25\\x3e\\x4c\\x1d\\x67\\xc3\\x7f\\xa3\\xd7\\xc1\\xec\\xd0\\x55\\xb8\\xe9\\x29\\xd5\\x2a\\x8e\\x45\\xed\\x89\\xfb\\x18\\x0f\\x74\\xb5\\x52\\xfe\\x06\\xf0\\x66\\xc7\\xe4\\x31\\x8c\\xa2\\xf9\\x15\\x94\\x6e\\x83\\x20\\xd5\\x80\\x65\\x61\\x47\\x2f\\xb8\\xff\\x7f\\xa8\\x07\\x2d\\x8e\\x6f\\xd1\\xce\\x63\\xcf\\x87\\x38\\x2f\\x7b\\x94\\x04\\x54\\x0c\\x1d\\x40\\x6c\\x70\\xb2\\x26\\x85\\x36\\x77\\x09\\x26\\x45\\xce\\x99\\x69\\x22\\xe7\\x34\\x5d\\xc0\\x7f\\xb7\\x33\\x9f\\x9a\\x54\\xff\\x07\\x35\\x2d\\xd2\\xb9\\x93\\x06\\x3c\\x2c\\x83\\xd1\\x28\\x1a\\x4f\\xd1\\x78\\xe5\\xa5\\xf8\\x0a\\x5b\\x33\\xc2\\x29\\xd0\\x57\\x83\\x67\\xd4\\x41\\x92\\xe9\\xa4\\xd2\\x1e\\x97\\x34\\xd3\\xbd\\xa0\\x83\\xb7\\x0f\\x47\\x10\\x3f\\xd1\\x25\\x17\\x70\\x21\\xdf\\x3e\\x53\\xd7\\x99\\x86\\xef\\xea\\x2d\\xc0\\x4f\\x02\\xc0\\xac\\x27\\x87\\x88\\x31\\x9e\\xf3\\xa9\\x13\\x2e\\x62\\x32\\xea\\x6d\\xb3\\x9c\\xa5\\x87\\x08\\x55\\xf9\\x59\\x2f\\xff\\x6c\\x20\\x9a\\xd2\\xf1\\xc2\\x9d\\xd1\\x68\\x55\\x28\\x98\\x97\\x9e\\xcf\\xf8\\xc8\\x11\\x27\\x24\\x8f\\x83\\x10\\x51\\x53\\x00\\x65\\x61\\x29\\xd9\\xb7\\xac\\xbb\\x7e\\xd1\\xe4\\x6b\\xc9\\x8c\\x04\\xd1\\xa3\\x5b\\x18\\x91\\x37\\x38\\xe9\\xdd\\xe4\\xd2\\xb0\\x65\\xf4\\x18\\x42\\x42\\xd8\"},\n{{0x0b,0x7d,0xfa,0xd0,0x5b,0xa6,0x65,0x11,0x1e,0x16,0x81,0xbd,0xc0,0xbc,0x8b,0xa9,0x73,0x76,0x7c,0xb8,0x58,0x77,0x02,0x0a,0x2d,0xbf,0x91,0x83,0x25,0x57,0x1d,0x9f,},{0x95,0x05,0xd9,0xe8,0x6d,0xce,0xf5,0x6c,0x9d,0xb7,0x6f,0x28,0x62,0xb9,0x0e,0x1f,0x27,0x73,0x20,0x2f,0x17,0x50,0x40,0x5e,0x7e,0xe5,0xae,0xd0,0xfc,0x54,0xf8,0xb9,},{0x41,0x5a,0xdb,0xb2,0xf2,0xb9,0x84,0x05,0x77,0xfd,0x18,0x41,0xf9,0xaa,0xe2,0x52,0xaf,0xe8,0xf5,0xa7,0x22,0x36,0x01,0x7d,0x50,0xdb,0x22,0xd2,0x28,0xcd,0xee,0x9f,0x5b,0x3e,0x8f,0xe9,0xa1,0x7a,0x4d,0x4e,0x98,0xb7,0x34,0x13,0x81,0xe8,0xd8,0x62,0x5c,0xdc,0xea,0x95,0x6d,0x25,0x3b,0x74,0xe0,0x2d,0xac,0xb8,0x49,0x20,0xa0,0x09,},\"\\xc4\\x3f\\xd3\\x4b\\xb1\\x42\\x4c\\xca\\x4e\\x4d\\xfb\\xa7\\x5c\\x28\\xbe\\x80\\x18\\x44\\x44\\x6c\\xa0\\x89\\x02\\x08\\x85\\xc7\\x48\\x38\\x25\\x47\\x16\\x4a\\x9d\\x4a\\x7f\\x95\\x70\\xd3\\xd1\\x71\\xad\\x69\\x81\\xab\\x50\\xee\\xee\\x08\\xa4\\xa6\\xc6\\x6d\\x76\\x99\\xd2\\x3e\\xdb\\xe1\\xfa\\xaf\\x44\\x66\\x0c\\x72\\xf4\\x55\\x2d\\x87\\xd2\\x65\\xac\\xe8\\x79\\x28\\x23\\x47\\x4b\\x90\\xa5\\xd7\\xf7\\x40\\x1d\\xeb\\x93\\x77\\x62\\x7f\\x60\\xb0\\x36\\xb3\\x6e\\x04\\x4e\\xb7\\x6b\\xf1\\x32\\xfd\\xdf\\xcc\\x0e\\xf5\\x70\\x4a\\x63\\x3d\\x84\\x5e\\x96\\x2b\\x47\\x51\\x7f\\x0b\\xaa\\x34\\xd3\\xd6\\xe9\\xa8\\xb9\\xf8\\x16\\x8b\\xcd\\xc8\\x4c\\x6d\\x2b\\x30\\xc6\\xf3\\x43\\xe7\\x53\\x57\\xf7\\xf2\\xc0\\x03\\x9b\\xd2\\x54\\xb2\\x44\\xd3\\x6c\\xd6\\x16\\x75\\x58\\x1f\\xb8\\x34\\x57\\x0e\\xd4\\x11\\x3a\\x78\\xe6\\x06\\xf1\\x45\\xa1\\x11\\x99\\x2c\\x2c\\x6b\\x61\\xc4\\x26\\x76\\x28\\xec\\x87\\xcd\\x88\\xc3\\x6a\\x3c\\x84\\x70\\x6e\\x44\\xae\\x96\\xa9\\x6e\\x0c\\x84\\x80\\x31\\x85\\x46\\xd6\\xea\\x6a\\x6d\\xf1\\x8a\\x2b\\x4f\\x19\\xf8\\x36\\x0c\\xfb\\xce\\x4e\\x9d\\x1c\\xf1\\x01\\x1f\\xfe\\xa5\\x63\\x3a\\x66\\x61\\x9a\\xa4\\xa6\\x5c\\xf6\\x9b\\xe4\\x45\\x96\\x17\\x94\\x5e\\x43\\x59\\xa9\\xd4\\x32\\x60\\xca\\x1a\\x20\\xf4\\xed\\x7c\\x1a\\xe5\\xff\\xff\\x3b\\xd9\\x22\\x94\\xea\\x70\\xab\\xba\\xe0\\x38\\x5b\\x09\\x35\\xcd\\x1c\\x0e\\xb5\\x18\\x30\\x29\\xc5\\x85\\xa0\\x29\\x4b\\x79\\x99\\xe3\\x2e\\xf7\\xa2\\x90\\xfc\\xb0\\x95\\x67\\x5d\\xc4\\xf6\\x01\\xe8\\xf2\\xc9\\x6f\\x35\\xb7\\x34\\x9a\\x37\\x05\\x75\\x09\\xf4\\xec\\x70\\xc9\\xf5\\x0f\\x60\\x11\\xf1\\xf5\\xe6\\xb0\\x61\\xc0\\x91\\xd1\\x1c\\x0e\\xd5\\xde\\xc8\\xec\\xe8\\x81\\xaa\\x34\\x05\\x08\\xf6\\x96\\xd9\\xe9\\xcc\\x72\\x98\\xe6\\xbc\\xcd\\x7c\\x21\\x0e\\x2c\\xe0\\xde\\xd8\\x35\\x92\\xa3\\xcf\\xa1\\x3e\\x80\\x78\\xfd\\xb3\\x25\\x8b\\x39\\xf1\\xd1\\x1c\\xdf\\xe0\\x96\\x70\\xc1\\xe6\\x0a\\x39\\x10\\xa4\\xff\\xf5\\x1c\\x6c\\x7f\\x7d\\x66\\x24\\xf4\\xc9\\x3d\\xf8\\x88\\x8c\\x52\\x6f\\x48\\x4f\\x9b\\x13\\xe0\\xa7\\xf6\\x29\\x64\\x78\\x39\\x78\\x68\\x4e\\x29\\x26\\x79\\x80\\x0e\\xd5\\xeb\\x28\\x0e\\x28\\x7c\\x7e\\x63\\x9e\\x85\\xfa\\xa5\\x3f\\xba\\x2f\\xa2\\x04\\x5c\\xe2\\x7d\\x8f\\xb3\\x08\\x36\\x07\\x26\\x55\\x0d\\xf9\\x75\\x2d\\xb3\\x05\\xf8\\xf0\\x66\\x47\\x97\\x0d\\x01\\x46\\x91\\x99\\x9a\\xfa\\x97\\xb6\\x19\\x3f\\xfc\\xc6\\xd5\\x32\\xf4\\xfa\\x69\\xe1\\x33\\xa1\\xd1\\x0f\\x30\\x47\\xfc\\x00\\x38\\x1f\\x49\\x97\\xbb\\x84\\xe5\\xb6\\xcd\\x60\\x28\\xc6\\x21\\x32\\xcf\\xc0\\x24\\xbf\\xeb\\x98\\x03\\x01\\xf2\\x95\\x12\\xbb\\xd1\\x09\\xd0\\x89\\xac\\xe1\\x82\\xcf\\x9c\\x2f\\xfa\\xb1\\xb1\\x7e\\xb0\\x0b\\x6e\\xb4\\x6a\\xe1\\x98\\xda\\x99\\x3f\\x5e\\xfe\\x7c\\x1d\\xc2\\x2d\\x25\\x04\\x7c\\x1e\\xe5\\x24\\x65\\x17\\xe7\\xf5\\x75\\x8f\\x99\\x6a\\xbd\\x83\\xf1\\x3d\\xa2\\x2c\\x13\\xdd\\x20\\x5e\\xe1\\x91\\xb5\\x5a\\xfd\\x48\\x31\\xef\\x07\\x8b\\xb6\\xea\\x07\\x3a\\x62\\x5b\\xc9\\x7c\\x81\\x29\\x61\\x60\\xbb\\xf2\\x55\\x9b\\x27\\x5c\\xc3\\x7c\\xcf\\x01\\xb9\\x1f\\xd8\\x7d\\x4d\\x99\\xa3\\x67\\xaa\\x99\\x78\\xda\\xdd\\x06\\x89\\xf8\\xa6\"},\n{{0x78,0x18,0x8d,0xf8,0xc7,0x54,0x78,0x56,0x21,0xe2,0x7a,0xe5,0x8e,0x10,0x0d,0x50,0x80,0xe1,0x6e,0x0a,0x15,0xe2,0x77,0x05,0x1f,0x95,0xf0,0x80,0x90,0x0e,0xc0,0xd3,},{0xa1,0xbd,0xee,0xe9,0x8b,0x07,0x57,0xba,0x9c,0x2d,0x84,0x09,0xb8,0x74,0x24,0xe6,0x4e,0x42,0xf9,0x93,0x2a,0xcf,0xa9,0xbc,0x71,0xfb,0x3f,0x8c,0xa0,0xe1,0x1d,0x52,},{0xb9,0x41,0x14,0xed,0xa4,0x6c,0xcf,0xc2,0x2a,0x44,0x71,0xa6,0x4d,0x79,0x08,0x92,0xe5,0x9c,0x5d,0x50,0x56,0x18,0xeb,0x0e,0x70,0x13,0x92,0xc7,0x09,0x61,0x3e,0x2d,0x50,0x3a,0x5c,0x2b,0x66,0x60,0x1e,0x63,0x6a,0x3c,0x1c,0x7d,0x49,0xb1,0xac,0x79,0x8d,0x90,0x89,0xb0,0xf9,0xcc,0xd0,0x57,0x9b,0xb9,0x06,0x34,0xd0,0xbd,0x75,0x0e,},\"\\xcf\\x70\\xcc\\xa5\\x7f\\xeb\\x1b\\xee\\xfe\\x98\\x5a\\xd5\\xaf\\x9d\\x43\\x48\\xd3\\xa4\\x6a\\x63\\xde\\x10\\x75\\x38\\x1f\\xb3\\x63\\x9a\\x04\\x4f\\xd6\\xe6\\x09\\x1f\\x5d\\xb9\\xc9\\x4d\\x39\\xbe\\x0f\\x13\\xad\\xe6\\xd9\\xa0\\x74\\xe6\\x7b\\xa7\\x06\\xb3\\xa8\\x80\\x62\\x95\\xf6\\xb6\\x54\\x86\\x57\\x28\\xc5\\x8c\\xa6\\xe9\\x41\\x9d\\x5d\\x04\\x3f\\x21\\x10\\x81\\x4b\\xbf\\x36\\xfc\\x40\\x70\\xe4\\xd9\\x45\\x49\\x65\\xc2\\x51\\x20\\x2c\\xa3\\x95\\xef\\xe3\\xfd\\xbd\\x54\\x4f\\xeb\\x18\\x7e\\x34\\xca\\x3c\\x80\\x79\\x51\\x79\\x55\\x2f\\xce\\x9a\\xa8\\x04\\x43\\x0e\\x5b\\x6c\\x86\\x85\\x34\\x1e\\x91\\xd5\\x88\\x9f\\xbf\\x3f\\x98\\x19\\x04\\x62\\x0f\\xfe\\x70\\x13\\xf5\\x3b\\x93\\x9e\\x17\\x44\\x3d\\x61\\x4e\\x7e\\x6b\\xb5\\x7a\\xd6\\x74\\xf3\\xb4\\xb0\\x01\\x63\\x05\\x26\\xcf\\x73\\x02\\xa7\\xd0\\xaf\\xe7\\xdc\\x24\\xd6\\xda\\xde\\xf6\\xfe\\xba\\x3f\\x96\\x97\\x3a\\xa5\\xb8\\xd6\\x27\\x52\\x62\\xe4\\x30\\xa8\\x2f\\x67\\x86\\x96\\x97\\x1a\\x8b\\x60\\xe3\\x8d\\x3b\\x2b\\xcc\\x17\\x0d\\x5b\\xc2\\x03\\x02\\xa3\\x9c\\x59\\x6d\\x27\\xfe\\xe3\\x9e\\x5d\\xa5\\xb1\\x0e\\xa9\\xf3\\x82\\x29\\x9e\\x19\\x81\\x97\\x17\\xa7\\x18\\xd3\\x7d\\x15\\x5f\\x13\\x92\\x31\\x82\\xb5\\xb7\\xa1\\xc5\\x4c\\xa1\\x09\\xb2\\x2c\\xa8\\xe8\\xb2\\x6c\\xa5\\xca\\x3f\\x3b\\x90\\x62\\x21\\x94\\x61\\xba\\xce\\x97\\xe8\\x90\\xc9\\x4e\\x41\\xca\\x3d\\x84\\x58\\x7f\\xbd\\xf6\\xe2\\x40\\xc3\\x5c\\xca\\xb7\\x1d\\x58\\x47\\x7d\\x28\\x16\\x8e\\x93\\x37\\x26\\x86\\xd4\\x2a\\xad\\x32\\x4a\\x3f\\x16\\xaf\\xe0\\xe9\\xb8\\x9e\\xe2\\x0e\\x48\\x5f\\xe6\\xc8\\x64\\xb5\\x01\\x3b\\xa8\\x83\\x99\\xee\\xaa\\x15\\x98\\x35\\xa8\\xb2\\xbb\\x2f\\x25\\xf5\\x79\\xca\\x3b\\xae\\x67\\x5c\\x63\\xda\\x1b\\x50\\xd9\\x9d\\x4e\\xd9\\x78\\x69\\x2e\\x56\\x00\\x23\\x3f\\x38\\xab\\x7e\\x7a\\x5a\\xe0\\xfb\\xf8\\xc0\\xb6\\x9c\\xc3\\x8b\\xd3\\x0e\\xab\\xd9\\x77\\xef\\xa0\\x5e\\xe2\\xc8\\x35\\x14\\x30\\x2b\\xd4\\x0c\\x4b\\xdc\\xe7\\xa4\\x11\\x0a\\xfb\\xb6\\x57\\x9c\\x62\\x0e\\x97\\xf8\\xcf\\x2e\\x9b\\xab\\x2d\\xcc\\x7c\\x33\\xf1\\x96\\xe5\\x7f\\xe7\\x61\\xa0\\x50\\x12\\x28\\x94\\xb7\\xa7\\x5a\\x92\\x95\\x31\\x99\\x6d\\xda\\xad\\x78\\xde\\x1d\\x4d\\x92\\x4c\\xd9\\x3a\\x61\\xdf\\x22\\x77\\x76\\xbc\\x1c\\x39\\xfb\\xb8\\xde\\x1c\\x44\\x38\\x86\\x8b\\x6a\\x3a\\x2c\\xd9\\x4c\\x07\\xb2\\x9e\\x3f\\x6b\\x23\\xcc\\x7e\\x0b\\x63\\x68\\x90\\x09\\xd9\\xd0\\xba\\xe1\\x60\\x6b\\xaf\\xc7\\xa8\\x08\\xf2\\xd2\\xfa\\x25\\x62\\xb8\\xdc\\x09\\x38\\x42\\xc0\\x1f\\xdb\\x84\\x0d\\xa4\\x86\\x0a\\xce\\xd3\\xfc\\x52\\x5c\\xa3\\x34\\xed\\xcf\\x65\\x94\\x8b\\xc4\\x16\\xf9\\x8c\\x45\\x0f\\x00\\x12\\xa6\\x10\\x7d\\xd7\\xf8\\xed\\xe4\\x0e\\x1c\\x48\\xc9\\xe8\\xa5\\x65\\xa8\\x10\\xb9\\xcf\\xd2\\x03\\x56\\xdb\\x19\\xf1\\xdb\\xde\\x59\\x89\\x21\\x33\\x2e\\x0d\\x81\\x3f\\x0c\\xb8\\x76\\x84\\x37\\x03\\x88\\x77\\x2f\\xf3\\xcb\\xfc\\xbf\\xa2\\x99\\xc1\\x98\\xc9\\x7b\\xfb\\x96\\x17\\x76\\x8a\\x05\\x16\\x1f\\x41\\x69\\xff\\x5d\\xe5\\xd9\\xf4\\x00\\x62\\x09\\x0f\\xb8\\x82\\x98\\x4d\\x9d\\x5c\\x7a\\xa7\\x8e\\xdd\\xcb\\x96\\x34\\xe4\\x66\\xb8\\x85\\x3d\\x51\\x2b\\x4a\\x54\\x6d\\x74\\x23\"},\n{{0x73,0xcb,0x02,0xb0,0xbf,0x26,0xa0,0x15,0xda,0x1d,0xc3,0x01,0xfc,0x12,0x5d,0x7e,0x6c,0x30,0xb6,0x3c,0x9e,0x6e,0xee,0x9e,0x06,0x5d,0x4e,0x84,0x71,0x32,0xc3,0x25,},{0xac,0x9e,0x3d,0xd2,0xce,0xb9,0xb2,0x3e,0x74,0x8c,0x04,0xba,0x75,0x77,0xfe,0xdf,0x7c,0xea,0xb9,0xed,0x87,0xdc,0x43,0x0b,0x5f,0xe2,0x2e,0xac,0x50,0x95,0x0e,0x0d,},{0x1a,0x5d,0xd4,0xc8,0x91,0xc8,0xe1,0x32,0x57,0x01,0x87,0xc2,0x3b,0x9a,0x1e,0x4b,0x26,0xf0,0x54,0x60,0xe8,0x75,0x67,0x38,0x19,0x39,0x6d,0xf5,0x61,0xc8,0xaf,0x0e,0x48,0x33,0x3b,0x62,0xc7,0x77,0x29,0xd4,0x9f,0xc4,0x0e,0x17,0x4a,0x7f,0x3c,0x21,0xf8,0x5e,0xf4,0xd3,0x39,0xce,0xb8,0x0b,0xd2,0xe0,0x37,0xd8,0x03,0xaf,0x56,0x0e,},\"\\x0a\\x2b\\x61\\xba\\x35\\xe9\\x6e\\x58\\x19\\xb8\\x8b\\xfd\\xb2\\x8b\\x7c\\xe0\\x2e\\x64\\xae\\x9c\\xf5\\x72\\xb2\\x1f\\x13\\x55\\x2c\\x0d\\xb1\\x0f\\x39\\x60\\xd4\\x4b\\xa3\\x47\\x2f\\x43\\xab\\xc4\\xe6\\x29\\x5b\\xdf\\x79\\x0b\\xd9\\x33\\xba\\x39\\x75\\xfd\\x44\\x65\\xfa\\x3e\\x2f\\xe2\\xdb\\x02\\xb6\\x37\\x77\\x52\\x22\\x3d\\xec\\x98\\xfc\\xb2\\x40\\x4f\\x3a\\xba\\x43\\x26\\x5a\\x6f\\xa7\\x97\\x6b\\x6c\\x6c\\xb6\\x86\\x8b\\x88\\x1b\\xd6\\xf3\\xd2\\x5c\\xd9\\xd6\\xf7\\x0e\\x51\\x2f\\x80\\x89\\xc8\\xef\\x26\\xfd\\x58\\x24\\x50\\x53\\x77\\x9e\\x59\\xc4\\x72\\x5a\\xef\\xa2\\x64\\x67\\xc9\\xf5\\x00\\xe1\\x7f\\x3e\\x15\\x73\\xf1\\xa8\\x55\\xe9\\xb8\\xb2\\x19\\x25\\xea\\x05\\x27\\xf3\\xce\\x8d\\x88\\xfb\\x54\\xa4\\x7a\\xbe\\xed\\x14\\xf3\\x99\\xcc\\x2d\\x9f\\x1f\\xe5\\x46\\x65\\xfa\\xe0\\xa8\\xf0\\xc6\\x88\\x72\\xa6\\x00\\x04\\x6d\\x1d\\xc3\\x63\\x97\\xd3\\x10\\xce\\x39\\x3f\\xce\\xaf\\xe8\\x7c\\x17\\xeb\\xe1\\x22\\xfd\\xb5\\x43\\xae\\xa7\\x10\\x85\\xba\\xec\\x98\\x27\\x3f\\x41\\xac\\x96\\x69\\x8c\\x15\\x0c\\xf9\\x11\\xd0\\xe5\\xde\\x23\\x92\\xd8\\x48\\x41\\xd0\\x12\\x76\\xae\\xfb\\xfe\\x99\\x95\\xe1\\x0a\\x6d\\x46\\xef\\xdc\\x26\\x78\\xd4\\x56\\xc9\\xf3\\x6b\\x2e\\x10\\x11\\x4d\\x11\\x87\\xe7\\xac\\xa7\\x39\\x03\\x7e\\xa5\\x1f\\x85\\xfd\\x62\\xa2\\x94\\x29\\xba\\x52\\x9c\\xdd\\x8a\\xd9\\x13\\x47\\x49\\x74\\x87\\xed\\x7e\\x87\\x09\\xd4\\x77\\x6e\\xf6\\x86\\x70\\x79\\x2d\\x06\\x15\\xbc\\x96\\xda\\x51\\x78\\xd6\\x06\\xdb\\x63\\xe4\\xe5\\xcb\\x17\\x2a\\xcf\\xbc\\x1c\\xbe\\x20\\x26\\x93\\x50\\xf1\\xb6\\x05\\xf3\\x5d\\xcd\\x47\\x91\\x35\\xbd\\x30\\xfb\\x4b\\x5a\\x39\\x17\\x6c\\xff\\x74\\x4d\\xdb\\xb3\\x06\\xc9\\xe7\\xb4\\x16\\x7d\\xe0\\x37\\x9a\\x61\\x66\\xbe\\x5a\\xaa\\x74\\xd7\\x15\\x7f\\xac\\x95\\x7d\\x88\\xdc\\x57\\x59\\x7c\\xfe\\xf2\\x3e\\xb5\\x10\\x8b\\x3c\\xe5\\x3f\\xc6\\x32\\xda\\xd1\\xb9\\x72\\xa2\\x9d\\xa5\\xde\\x32\\xd2\\x0d\\x8e\\xce\\xde\\x67\\xff\\x00\\xda\\x4a\\x08\\xa0\\xcc\\x1a\\x98\\xbe\\xe7\\xa9\\x4e\\x3c\\xb3\\x2f\\xee\\x94\\xae\\x25\\xa4\\x13\\x54\\x47\\x02\\xc3\\x7b\\x3e\\x17\\x78\\xa0\\x70\\xcd\\xd4\\x84\\x0b\\xd3\\x9f\\x5f\\x45\\x79\\x51\\x92\\xa8\\x67\\x86\\x38\\x76\\xed\\x0d\\x13\\x0d\\x46\\xe2\\x91\\x39\\x35\\x08\\x28\\x09\\xf7\\xe1\\x5a\\x49\\x67\\x10\\xf2\\x55\\xd7\\x83\\xda\\x3d\\x01\\x6a\\x65\\x4c\\x15\\xff\\x5d\\xf9\\x07\\xa3\\xcc\\xaf\\x37\\xcf\\xe1\\x1c\\x8c\\x3d\\x49\\x65\\x07\\xd6\\x76\\x0c\\x05\\x38\\x20\\xf0\\xf5\\x94\\xc3\\xd0\\x1c\\xa2\\x69\\x17\\x8a\\xca\\x52\\x5a\\xb2\\x82\\x1e\\xf5\\x5f\\x92\\xd8\\x5f\\xe6\\x85\\xea\\x34\\x47\\x2e\\xd1\\x39\\x81\\x71\\x06\\x4d\\x74\\xa4\\x22\\xec\\x91\\xd1\\xa6\\x70\\x61\\x8f\\xc9\\xf3\\x24\\x24\\xbc\\xb1\\x1a\\x77\\xf6\\xfb\\x4e\\x2f\\xef\\xd2\\xc4\\xe8\\xa7\\x3c\\x45\\x28\\x86\\xe9\\x31\\x66\\x4d\\x1a\\x83\\xbd\\x92\\x73\\x29\\xc0\\x4d\\x25\\x0b\\x83\\x52\\x1d\\x7d\\xc1\\x3c\\x91\\xce\\xe1\\xec\\x05\\x0e\\x11\\xd4\\x2a\\x4b\\x0c\\x8c\\x06\\x9b\\x61\\xc4\\x42\\x2d\\x3a\\x49\\xc0\\x7e\\xff\\x29\\x05\\xb7\\xbc\\x7f\\x4a\\x5b\\x43\\xe6\\xb0\\xd6\\x1d\\xfb\\x50\\xe4\\xee\\xa2\\xe9\\x0d\\x29\\x8a\\x78\\x1d\\x05\"},\n{{0xdb,0x05,0x60,0x63,0x56,0xba,0xcf,0x23,0xaf,0xf6,0xcd,0xdd,0x42,0xb2,0xc6,0x94,0x35,0x2b,0x5a,0x0f,0xec,0x56,0x0a,0xff,0x54,0xd9,0xbd,0x97,0x10,0xef,0xe0,0x6a,},{0x32,0xa5,0xc7,0xcc,0x49,0x09,0x78,0x6b,0x48,0xa5,0x3f,0x31,0x09,0x3f,0x54,0x9a,0x9f,0x17,0x30,0xca,0x66,0x90,0x38,0x3f,0xdb,0x5f,0x14,0xc2,0x66,0x6e,0x31,0x32,},{0x53,0x09,0x9b,0x76,0x6a,0xdf,0x29,0x44,0xb6,0x82,0x13,0x74,0x84,0x2c,0x25,0xd6,0xe6,0x7b,0x0c,0xcd,0xe9,0xc6,0x37,0xfe,0xcb,0x11,0xb8,0xb8,0xb0,0x72,0x03,0xe3,0x07,0x57,0x32,0x80,0x5f,0x4f,0x14,0xae,0xae,0x73,0xbd,0x62,0xe3,0x08,0xb5,0x88,0x7d,0x68,0x9e,0x29,0xcd,0x89,0xb2,0x3a,0x47,0x69,0x43,0x11,0x07,0x17,0xb1,0x00,},\"\\x1b\\xc9\\xc2\\x83\\x3f\\x37\\xcd\\xf1\\x35\\x6f\\xad\\x16\\x67\\x68\\x64\\x27\\x17\\x70\\x1b\\x38\\xa0\\xab\\x0c\\x2f\\x58\\x1a\\x26\\xd2\\x22\\xd6\\x5c\\xce\\xe4\\xbf\\x0f\\x6d\\xfe\\x64\\xd3\\x3b\\xc0\\x23\\x9f\\x71\\xd4\\xb8\\x26\\x44\\xb0\\x16\\x25\\xa1\\xa3\\x5f\\xe7\\x98\\x67\\x62\\x39\\xe0\\xca\\x77\\x9e\\xf2\\x31\\x38\\xee\\xbe\\x3b\\xd1\\x9d\\xe2\\xd8\\xf7\\xc1\\x5b\\x4d\\x96\\xf1\\x3e\\x51\\xbc\\x63\\x3b\\xea\\x5d\\x61\\x22\\x5b\\xca\\x1d\\x63\\x39\\xba\\x53\\xe8\\x1f\\x7d\\x8d\\x24\\xc5\\xd6\\x0f\\x04\\xce\\x8c\\x72\\x67\\x61\\xd2\\x64\\x58\\x4f\\x1c\\x7e\\x5b\\x5b\\x69\\x92\\x45\\x6c\\x1c\\x76\\x89\\x2d\\x63\\x52\\x11\\x1e\\x3b\\x92\\x6f\\xe0\\x25\\xc0\\x00\\x9d\\xb6\\x7c\\xe0\\xdd\\xc7\\xf7\\x64\\xe0\\xc9\\xad\\xb0\\x48\\x1b\\xc2\\x79\\x54\\x84\\xd9\\x63\\x73\\xa9\\x62\\xa7\\xb7\\x4a\\x55\\x96\\xf5\\x27\\xa7\\x34\\x76\\x49\\x8c\\x78\\x23\\xdf\\xfa\\x6c\\x85\\x43\\xb0\\x79\\x71\\xb5\\xaa\\x27\\x1c\\x12\\x25\\x5e\\x09\\x18\\xdd\\x73\\xf5\\x0c\\x30\\xc9\\xa8\\x5a\\xc7\\xc2\\x99\\x3d\\xd6\\x55\\xda\\x59\\x43\\x12\\x63\\xf5\\x91\\x4b\\xe7\\x06\\x37\\x4b\\xe9\\xc0\\x75\\x85\\xc2\\x87\\x13\\x28\\xb4\\xdb\\xc3\\x94\\x01\\xc9\\x57\\x07\\x38\\x7e\\x6e\\x06\\x9d\\x44\\xb9\\xd8\\xfb\\x05\\x8f\\x22\\xe3\\x15\\xaa\\x0d\\x5b\\x4f\\x11\\x68\\xfc\\x10\\x79\\x62\\xb0\\x64\\xf7\\xd8\\x45\\xaf\\x8e\\x21\\x31\\x95\\x1d\\x1c\\xd6\\x6d\\xc8\\x4d\\xba\\x46\\xd2\\x00\\xaf\\x4f\\x4c\\x5f\\x51\\x22\\x1b\\xc9\\xb2\\x19\\x69\\x42\\xf8\\xb4\\x0e\\x7d\\xdb\\xc9\\xae\\xb3\\xd9\\xaf\\xc0\\x71\\x25\\x95\\x13\\x13\\x5a\\x01\\x6f\\x28\\x66\\x09\\x9f\\xa1\\x0f\\x4c\\x3b\\x73\\x50\\x0b\\xd5\\x5c\\x47\\x7b\\x24\\x15\\xe1\\x0a\\x27\\x9b\\xa1\\x10\\xd2\\x94\\xf3\\xdd\\x18\\x42\\x17\\x7d\\x0b\\x4b\\xfb\\x17\\x34\\xdd\\x0c\\xcb\\x7e\\x39\\x4b\\x43\\xd1\\x6f\\x0b\\x75\\x48\\x36\\x22\\x80\\xf4\\x34\\x76\\x4d\\xa5\\x7f\\x19\\xed\\x3e\\x30\\x2e\\x53\\x70\\xfb\\xa4\\x96\\x64\\xc2\\x30\\x05\\x74\\x33\\xcc\\x64\\x7e\\xb2\\x7c\\xd2\\xc7\\xc1\\x8c\\x7d\\x66\\x90\\x6f\\x08\\x82\\x46\\xc2\\x2f\\x7f\\x79\\x03\\x99\\xde\\xb4\\xc5\\xfb\\xb9\\x06\\x18\\x17\\x69\\xbe\\xf5\\xaf\\xbe\\x8a\\xd1\\xf5\\xde\\x55\\xbe\\x58\\x8f\\x52\\xf6\\x9c\\x54\\xd4\\xef\\x5a\\x96\\x9a\\x0d\\x99\\x5c\\x27\\x40\\x7b\\x23\\xed\\xd9\\x24\\x3d\\x24\\x99\\xfd\\xf2\\x94\\x73\\xb1\\x95\\x5c\\x84\\xb3\\xf7\\xcb\\xdc\\xd8\\x1b\\x76\\x56\\xec\\x0b\\xe9\\xe0\\xfd\\xb3\\x38\\x13\\x56\\x96\\x0f\\xd0\\xca\\x70\\xe7\\xea\\x74\\xb6\\x46\\xfc\\xd3\\x13\\x94\\x8e\\x6d\\xdb\\x47\\x60\\x94\\x76\\xfb\\x6f\\xa4\\x84\\x2f\\xa7\\x88\\xa0\\xd5\\x7b\\xe3\\xb0\\xa6\\xca\\x18\\x19\\xf7\\x16\\x14\\x76\\x00\\x43\\xec\\x49\\x04\\x88\\x19\\x39\\x96\\x8a\\x43\\xb5\\xd1\\x92\\x8f\\x84\\xa5\\x91\\x90\\x93\\xbc\\x38\\x41\\x58\\x81\\x71\\xa9\\xcd\\x39\\x0f\\x8f\\xcd\\x61\\x53\\x8b\\x54\\xe6\\xef\\x99\\x77\\x05\\x73\\xe1\\x98\\x6d\\x15\\x0f\\xa9\\x6b\\x7a\\x07\\xe1\\xd1\\x94\\xaf\\x1c\\x0b\\x40\\x55\\x00\\xac\\xb3\\xd1\\x0e\\x3b\\xe6\\x47\\xc8\\x98\\x62\\x00\\x6f\\xa7\\x85\\x83\\xe7\\x61\\x66\\x84\\x29\\x20\\x16\\x0e\\xb5\\x7f\\x0b\\x2a\\x6e\\xdf\\x19\\x3c\\x44\\xc5\\xee\\xac\\xf4\"},\n{{0x1d,0x13,0x9b,0x1a,0xd0,0xc3,0xaf,0x1d,0x5b,0x8b,0xe3,0x1a,0x4e,0xcb,0x87,0x8e,0xc6,0x67,0x73,0x6f,0x7d,0x4f,0xa8,0x36,0x3a,0x98,0x09,0xb6,0xd1,0xda,0xbf,0xe3,},{0x24,0x28,0xcf,0x1d,0xeb,0x20,0xfb,0xad,0x1f,0xdc,0x66,0x5d,0x82,0x5b,0x61,0x41,0x22,0xdf,0x10,0x1f,0xbe,0x14,0x73,0xa7,0x99,0x96,0xba,0xf6,0x96,0x74,0x34,0xb8,},{0xdd,0x64,0x5e,0x51,0xed,0xab,0x04,0xdb,0x31,0xe3,0x31,0x72,0xcf,0x27,0xac,0xee,0xed,0xcc,0x04,0x63,0xa9,0x63,0x91,0x4a,0x0e,0xac,0x8e,0xfd,0x5a,0x34,0x34,0x1f,0x6b,0xbc,0x52,0xe0,0x42,0xba,0xaf,0x3b,0x40,0xc8,0x9a,0x57,0xef,0xb6,0x45,0x74,0xe6,0x96,0x77,0xfc,0xe9,0x55,0x24,0x6c,0x1f,0xc0,0xf2,0x69,0xef,0x81,0x90,0x00,},\"\\x8d\\xf2\\xd2\\xdf\\x9b\\x98\\x4d\\xa8\\x44\\x33\\x48\\x6a\\x81\\x3c\\x98\\xc5\\x97\\x3a\\x69\\x6c\\x11\\x62\\x46\\x10\\xb2\\x3a\\xa4\\x38\\x08\\x34\\x64\\xf6\\x5a\\x76\\x79\\x66\\x15\\xb7\\x28\\xc2\\xed\\x4e\\x60\\x71\\x58\\x55\\xaf\\xc2\\x39\\x45\\x0d\\x5b\\xc0\\x91\\x1f\\xf2\\xa8\\x52\\x30\\x20\\x5c\\x6f\\x13\\x49\\xba\\x5b\\xd8\\x7e\\xa6\\xf7\\x20\\xdb\\x6b\\xa7\\x0b\\x77\\x42\\x17\\x88\\xe0\\xc6\\x54\\xae\\xbc\\x23\\x07\\x4c\\x5f\\x41\\xd2\\x29\\x07\\x72\\x14\\x0d\\x98\\x1a\\x6b\\xc4\\xfe\\x70\\x9a\\x26\\x8e\\x64\\x17\\x2a\\x02\\x6b\\x27\\x01\\x18\\xb4\\xdb\\x51\\xab\\x6a\\x13\\xc9\\x9b\\x06\\x31\\x86\\xd8\\xd5\\xb3\\x38\\xe9\\x77\\xed\\xdc\\x6b\\xb5\\xfd\\x7d\\xd5\\x7d\\x98\\x45\\xa3\\xc3\\xfe\\x76\\x17\\x7d\\x57\\x38\\xdc\\xa1\\x6a\\x8f\\x91\\x02\\x85\\x75\\x00\\x17\\x4f\\x23\\xff\\x4c\\x3b\\xf3\\xc8\\x53\\x6f\\x11\\x58\\x0e\\xf8\\x51\\x4a\\x40\\x9f\\x5b\\xbc\\x9c\\x02\\x96\\xf1\\x2e\\x34\\x78\\xd4\\x08\\x7f\\x95\\xef\\xaa\\x6c\\x63\\x60\\x71\\xd2\\x11\\x57\\xbf\\x11\\x77\\x4b\\xbf\\xe7\\x69\\x33\\x06\\xca\\x72\\x13\\xda\\x47\\x13\\xeb\\xaa\\xab\\x35\\x54\\xed\\xf0\\x80\\x11\\xa5\\xff\\x73\\xda\\x12\\x03\\x75\\xae\\xd1\\x96\\x28\\x67\\x0f\\x28\\xab\\x24\\xb6\\xf5\\xd5\\xa1\\xd5\\x70\\x48\\x0f\\x65\\xd3\\xc1\\x52\\xbf\\xf1\\xb4\\x7b\\xf0\\x66\\x69\\x29\\xcb\\x7c\\x99\\xd9\\x03\\x3f\\xaa\\xe8\\x53\\x4f\\xc3\\x5d\\xa7\\x30\\xb8\\x11\\xeb\\xcc\\x25\\xae\\x10\\xa1\\x95\\xaa\\xb1\\x2c\\x32\\x6a\\xa4\\x5b\\xf8\\x05\\xc6\\x2d\\xd4\\xcd\\x5f\\x86\\x86\\x23\\xc0\\x4a\\x8e\\x1c\\x6a\\xa7\\x2f\\x1e\\xa4\\x40\\x0c\\x60\\x86\\x7d\\xff\\x62\\x2f\\x31\\x64\\x34\\xf1\\xec\\x89\\x50\\x3c\\x6f\\x9f\\x65\\xc1\\x37\\xb4\\x94\\x4c\\xbc\\xb3\\x5f\\x08\\x6c\\x74\\xcc\\xea\\xfa\\x22\\x42\\xac\\xca\\x6f\\xfe\\x61\\x1c\\x4b\\x55\\x87\\xf5\\xb7\\x5f\\xfa\\xd3\\x49\\xf0\\x0b\\xf9\\x6e\\x4a\\x58\\x0a\\x87\\x5b\\x92\\x65\\x40\\x69\\xb6\\x2e\\xea\\xc0\\xbf\\x78\\xe5\\xae\\xdd\\x71\\x86\\x9e\\xe0\\x5b\\x9a\\x94\\xe1\\xc9\\x8e\\x35\\xa9\\x78\\x00\\xa4\\xa2\\x12\\x20\\xb0\\x39\\xcd\\x5e\\xbb\\xb7\\x56\\xd4\\x0b\\x40\\x42\\xe2\\xc8\\x4a\\x2a\\xe9\\x81\\x82\\x51\\x1d\\xae\\x8e\\xd3\\xb8\\x9f\\x4f\\xa0\\x0f\\xb8\\xed\\x94\\x63\\x16\\x45\\x97\\x10\\x05\\x2a\\xd4\\xc0\\x2f\\x63\\xdf\\x05\\xd3\\xbb\\x1a\\xce\\x33\\x67\\x21\\x51\\xbd\\xf5\\xda\\xb4\\x6c\\x7b\\x58\\x3d\\xb3\\x73\\x89\\x9d\\x4f\\x03\\x5b\\x6c\\x11\\x12\\x58\\xb4\\xe5\\xa9\\xe7\\x07\\xa1\\x1d\\x21\\x5e\\x44\\xe6\\x8e\\xf1\\xa6\\xf0\\x53\\x80\\x9a\\xa5\\x1b\\xd9\\x02\\xe1\\x3c\\xa9\\x9c\\x1b\\x1c\\xec\\xc8\\x3b\\x9c\\x23\\x5c\\x71\\x0e\\x79\\x7d\\x2b\\x1a\\x24\\x9b\\x2e\\xa0\\x79\\xb5\\xc1\\x67\\x4e\\xd7\\x16\\x9f\\x1b\\x6e\\x67\\xf1\\xac\\x77\\xf8\\x6b\\x74\\x32\\x98\\x96\\x93\\x35\\xa7\\x72\\x44\\x0f\\x7f\\xbf\\xa7\\x25\\x13\\x50\\x0d\\x84\\x16\\x61\\x14\\xa8\\xfd\\x54\\x13\\x94\\x64\\xd4\\x2b\\x99\\x55\\x30\\xd3\\x23\\x70\\xb6\\x9b\\xff\\xc7\\x58\\x9d\\x6d\\xcc\\x97\\xe0\\xbf\\x17\\x85\\x6c\\xc3\\xbf\\x41\\x64\\xdb\\xec\\xcc\\x8a\\x88\\x1d\\x41\\x4d\\x6a\\x62\\x02\\x92\\x76\\xc5\\xf8\\x13\\x7c\\x0b\\x3c\\x68\\xbc\\x8f\\x4b\\xd4\\xe7\\xcf\\xf6\\x5e\\xf2\"},\n{{0x4d,0x22,0xe3,0x31,0xe0,0xcf,0x6f,0x6a,0x27,0x2d,0xb4,0xd2,0x06,0x87,0xff,0xb0,0x59,0xf1,0x22,0x5d,0x81,0xe4,0x11,0x23,0xb8,0xc8,0x9b,0x07,0x4d,0xe7,0x6a,0x3b,},{0xb1,0xe4,0xcf,0xae,0xad,0xd6,0x7b,0x12,0xd7,0xb9,0xdb,0xfc,0x0f,0x88,0xed,0xd0,0x37,0x3f,0x9a,0x88,0xc7,0xfa,0x33,0xfb,0x7f,0x2b,0x1e,0x47,0x5e,0xcc,0xb6,0x1b,},{0xc3,0x66,0xb8,0x02,0xf6,0x82,0xfc,0xd7,0x05,0x25,0x26,0x4f,0xb1,0xa3,0xcb,0xcd,0x0e,0xe3,0x5e,0xcf,0xf5,0x97,0x7c,0x2a,0x55,0x4d,0xa9,0x39,0x22,0x9f,0x17,0x81,0x9a,0x96,0x1e,0xa7,0x4c,0x3d,0x7a,0x78,0x81,0xac,0x5c,0x1f,0xa1,0x6b,0xf9,0x84,0xd9,0x45,0x6a,0x13,0x88,0xd3,0x46,0x3c,0x44,0x94,0x42,0x9b,0x1d,0xc4,0x54,0x02,},\"\\x9c\\x8e\\x3f\\x5b\\x4d\\x70\\x40\\x30\\xe1\\xba\\x71\\xf0\\x2e\\xfc\\x4b\\x87\\xd6\\xff\\xfb\\x55\\xbc\\x3d\\x8d\\x03\\x81\\x8f\\x91\\x56\\x24\\xfc\\xf7\\x01\\xc5\\x4a\\xdf\\xaf\\xa2\\xb6\\x94\\xb8\\x77\\x51\\xcb\\x9f\\x69\\x91\\x8c\\x0f\\x05\\x0f\\x4c\\x10\\x5d\\x5c\\xcb\\x40\\x10\\x0b\\x28\\xdf\\xd4\\xf4\\x11\\xd5\\x91\\xc1\\x20\\x19\\x17\\x6a\\xc2\\x01\\x6b\\xfb\\xfd\\xf0\\xdd\\xf1\\x1d\\xb8\\xa7\\xe3\\x9a\\xa7\\xb9\\xe2\\x16\\xf6\\x67\\xc0\\xa1\\x5f\\xb9\\x77\\xea\\xa9\\xba\\x3b\\xc4\\x55\\xcc\\x58\\x94\\x5f\\x3e\\x94\\x4b\\x8a\\xc2\\xfb\\xf4\\xd2\\x4f\\xe7\\xe1\\xe6\\x19\\xcd\\xbe\\xee\\x3e\\x5e\\x12\\xa9\\xa5\\x27\\xd2\\x8f\\x5f\\xd7\\xcf\\xd9\\x22\\x0f\\x13\\x08\\xd8\\x97\\xb6\\xd4\\x31\\x4a\\x5a\\x01\\x87\\x86\\x4a\\x2d\\x62\\x1c\\xf1\\xb2\\x84\\x42\\x61\\x24\\x7b\\xf5\\x20\\xba\\xfa\\x9b\\xf2\\x26\\xe1\\x15\\x68\\x1e\\xcd\\x77\\x42\\x79\\x80\\xcd\\x12\\xb0\\x8c\\x35\\x9c\\xec\\xd1\\xde\\x3f\\x55\\x45\\xf8\\x07\\xf8\\x1e\\xd7\\x63\\x02\\xff\\xd6\\x47\\x7f\\x89\\xb9\\x58\\xcd\\xf1\\x29\\x54\\xcf\\x70\\xc1\\x42\\x53\\x29\\x93\\x83\\x16\\x47\\xea\\xca\\xb0\\xb4\\x80\\x7b\\xfd\\xad\\xb4\\x38\\x9d\\x7d\\xff\\x2c\\x4e\\xf0\\xef\\x5a\\x5c\\x61\\xd0\\xdf\\x76\\x2e\\x2e\\x90\\x80\\xa7\\x18\\x1c\\xec\\xd0\\x6a\\x53\\x19\\x9f\\x0d\\xfe\\xf7\\x02\\x62\\x7a\\xde\\xcf\\x5f\\xcd\\x9b\\x3e\\x68\\xc7\\x23\\x33\\x16\\x17\\x27\\xf8\\x71\\xc7\\xd1\\xc4\\x30\\x51\\xff\\x1c\\x92\\x1f\\xd5\\x3b\\x64\\x22\\x38\\xb9\\x78\\x80\\xd6\\x4e\\x25\\xfa\\xc5\\x12\\xab\\x95\\x4b\\xed\\xbc\\xa5\\x40\\xf5\\xb2\\x00\\x91\\xec\\x72\\xe6\\x7f\\x88\\x77\\x0a\\xfc\\x32\\xf2\\x12\\x5c\\xa0\\xda\\x4f\\xe8\\x7b\\x56\\xaa\\xc9\\x17\\x7f\\x1f\\x4f\\x67\\xc8\\x51\\x72\\x5c\\x5e\\x8a\\xfe\\x64\\xf6\\x64\\x79\\x98\\x33\\xfd\\x79\\x10\\x0b\\x77\\xea\\xd2\\x58\\x38\\x87\\x9f\\xff\\x47\\x47\\xaa\\x0d\\x56\\x72\\xec\\x0a\\x94\\x34\\x81\\x34\\xbd\\xbd\\x4b\\xb3\\x9b\\x0c\\x67\\xa0\\xcd\\x30\\x60\\x2e\\xdf\\x4f\\xec\\x6f\\x7a\\xf0\\xcc\\x2b\\xda\\xe1\\x26\\xce\\xa8\\x42\\xdf\\xaa\\x43\\x91\\xdc\\x5d\\xde\\xa9\\x38\\xe1\\x79\\x21\\x68\\x24\\x0c\\x2d\\x8b\\x25\\x35\\x2f\\x9f\\x3a\\x64\\x42\\x35\\xce\\x36\\xfe\\xfe\\xb6\\x99\\x2a\\xd8\\x8e\\x28\\x7a\\xd2\\xd8\\x5b\\xd8\\x50\\x39\\x6f\\xc2\\xe5\\x17\\xa1\\x52\\x09\\xf5\\x92\\x0a\\xc9\\x8c\\x53\\x2b\\x1f\\x4d\\x86\\x9b\\xeb\\x08\\xbb\\x03\\xcf\\x7c\\x91\\xaf\\x3f\\xfc\\xed\\x68\\xd5\\xfb\\xfe\\xf8\\x6f\\xf9\\x4e\\xce\\x6e\\x2e\\xad\\x34\\x84\\xce\\x08\\x0d\\xb1\\x7b\\xbe\\x40\\xf1\\xdb\\x43\\x2e\\xc1\\x65\\x0e\\xd2\\x4f\\xdd\\x25\\x0f\\x33\\x45\\x74\\x5c\\x9b\\x7b\\x91\\x98\\xc9\\x10\\x9a\\x37\\x26\\x1f\\xc5\\xec\\xbb\\xb1\\x2f\\x83\\xa0\\xe1\\x22\\x0a\\x18\\x67\\xd4\\x5f\\xdd\\xfe\\xa8\\x1d\\xcf\\x75\\xf4\\xec\\x7f\\xdb\\x52\\x50\\xe5\\x77\\x54\\xd6\\xde\\xa2\\x70\\xb6\\x28\\xa7\\x95\\x30\\xec\\x28\\xb6\\x19\\xbc\\xa9\\x49\\x3e\\x63\\x05\\xcf\\xc4\\x41\\x4c\\x1c\\x1d\\xe3\\x38\\x9e\\x89\\x01\\x97\\xc8\\x5f\\x28\\x40\\x4f\\x3f\\xa9\\x6a\\x1e\\x2f\\xd9\\x20\\x6b\\x47\\x2e\\x8a\\x0a\\x0d\\x32\\xaf\\x55\\x60\\x6b\\xb0\\x83\\xf7\\x6a\\x19\\xb8\\xea\\xe3\\x47\\x9a\\xe5\\x1d\\x98\\xa9\\x9a\\x62\"},\n{{0xa5,0x22,0x8f,0xf9,0xbb,0xb6,0xf2,0x32,0x32,0x7e,0xb8,0xd8,0x79,0xd7,0xf8,0xb2,0x77,0xca,0x72,0xba,0xe1,0xf9,0xa9,0xd0,0xe2,0x60,0xdd,0x90,0x57,0x1d,0xb4,0xf9,},{0xd8,0x2f,0x6a,0x69,0x74,0xf5,0x1c,0x88,0x08,0xd9,0xd6,0x17,0xf4,0xce,0xc2,0xd8,0xa3,0x7e,0xb1,0x1a,0x14,0x23,0x7c,0x9a,0xb9,0xcf,0x11,0xeb,0xc8,0x0f,0xf6,0xc0,},{0x97,0x65,0x0f,0xae,0x3f,0x59,0xca,0x76,0x47,0x7f,0x25,0x47,0x16,0x77,0x49,0xc5,0x83,0x02,0x48,0x88,0x32,0x25,0xe3,0x54,0xff,0x46,0xc7,0xe3,0x81,0x96,0x52,0x20,0xd9,0xbe,0xf2,0xc2,0x05,0x7c,0x7d,0x19,0x90,0xf0,0x8b,0xca,0x4c,0xfd,0xe8,0x77,0xff,0xf2,0xb4,0xaa,0x81,0x3d,0x9c,0x4b,0x84,0xfb,0x79,0xec,0xed,0x81,0xef,0x05,},\"\\x1d\\xf7\\xa6\\x83\\x5e\\x33\\x10\\x98\\x3e\\xe7\\xec\\x73\\x11\\x25\\xf5\\xb5\\xcf\\x11\\x7a\\xf0\\xe3\\x6b\\x36\\x85\\xbf\\x54\\xac\\xe1\\xc4\\x8c\\x46\\x30\\x05\\x60\\xa4\\x5e\\x9f\\x9b\\xdd\\x96\\xa0\\xbc\\x4d\\x14\\xe8\\x9d\\x4b\\x57\\x21\\xa2\\xca\\xff\\x66\\x18\\xb1\\x82\\xed\\xb1\\x20\\x2f\\x3d\\x0c\\x5d\\x11\\x8d\\x09\\xb6\\x18\\x12\\xc0\\x10\\xe8\\xb1\\x96\\x34\\x45\\x41\\xcd\\xee\\xfe\\x5f\\xd1\\xf9\\x61\\xc5\\xdd\\x75\\x45\\x95\\x55\\xab\\x72\\xef\\x2a\\xa7\\xa7\\x59\\xa4\\xf3\\xad\\x3c\\xae\\xd4\\x4f\\x4c\\x9a\\x8e\\xf9\\x5b\\x76\\xed\\x9a\\x99\\xb5\\x5d\\xd8\\xa2\\x60\\xba\\x08\\x01\\x0d\\x29\\xff\\x81\\x9f\\x2a\\xf3\\x51\\x3c\\x1a\\x64\\x0d\\x6c\\xcd\\xde\\x49\\x99\\x20\\x5f\\x9f\\xca\\x88\\x57\\x11\\x5d\\x8b\\x5d\\xb9\\xf7\\x0a\\x62\\xe5\\xee\\xa0\\xd5\\xaf\\x06\\x5d\\xe1\\x53\\xf2\\xed\\xed\\xee\\xc6\\x3e\\x15\\xc8\\xe0\\x9a\\x92\\x58\\x21\\x82\\xac\\x07\\xd8\\x1c\\xa6\\x3c\\xa4\\xaa\\x59\\x7a\\x22\\x20\\xe7\\x04\\x81\\x95\\x7d\\x41\\x52\\x64\\xe2\\x58\\xbc\\x26\\x3e\\x1c\\xc3\\x6e\\x53\\x47\\x8a\\xac\\x5c\\xa0\\x16\\x94\\xcc\\xb0\\x9b\\x4f\\xfd\\x84\\x73\\x99\\x72\\xc7\\xdc\\xcf\\x3d\\xef\\xea\\xfd\\xed\\xe1\\x62\\xab\\x6c\\x58\\xa1\\xdf\\x27\\x37\\x1e\\x3f\\x54\\x93\\x06\\x7f\\xc9\\xe2\\x06\\x7e\\x57\\x96\\x23\\xc0\\x09\\xfc\\x82\\x5e\\xef\\x0e\\x01\\x0f\\xd1\\xcc\\xf2\\xa8\\xd3\\xfb\\xbb\\x31\\x56\\xf9\\xdf\\xde\\x0c\\x7c\\xbb\\xaf\\x84\\x33\\x09\\x85\\x17\\x49\\x1b\\x78\\xdb\\x96\\x98\\x61\\x4e\\xa4\\x0e\\x0b\\x1e\\x6a\\x1e\\x36\\xb9\\x00\\x45\\x3a\\x16\\xea\\x27\\x6f\\x34\\x42\\xbb\\xd2\\x7a\\x7e\\xcb\\x98\\x15\\x11\\xf5\\xc9\\x20\\x9e\\xb0\\x96\\xe2\\x85\\x88\\xb6\\x5b\\x96\\xb5\\x01\\x88\\xc0\\x38\\x1f\\xf7\\x12\\xbc\\x06\\xb2\\xc6\\x55\\xcc\\xa0\\x75\\x1c\\x09\\x5d\\x80\\x16\\x25\\x15\\x85\\x85\\x1e\\x67\\x74\\x34\\xdc\\x3e\\xfd\\x08\\x7a\\x12\\x68\\x0f\\xc2\\x2e\\x5b\\x83\\x10\\xa1\\x0e\\x32\\xca\\xac\\x9b\\x71\\xc8\\x76\\xee\\xd3\\x1e\\xf0\\x9f\\x7f\\xa0\\x12\\xba\\x08\\xdf\\xd2\\xad\\x68\\xc1\\xe1\\x47\\xf5\\x05\\x98\\xe5\\x50\\x46\\x7e\\xf9\\x9f\\x29\\x5a\\x31\\x8f\\xaa\\x50\\x7e\\xbe\\x77\\x6c\\xe5\\x5c\\x4d\\xa1\\x64\\x32\\x3c\\x30\\xa5\\xe7\\x2d\\xbe\\x02\\x7c\\x3c\\xcf\\x96\\xc7\\x01\\x97\\xa6\\xfb\\x1b\\x74\\xaf\\x13\\x3a\\x8b\\xe2\\xb0\\x3c\\x1b\\x99\\xfd\\x25\\xb3\\xce\\xd5\\x1f\\xe3\\x88\\x20\\x21\\xa3\\xaf\\xd9\\x22\\x9f\\x64\\x1b\\xc6\\xca\\xd4\\xe1\\xd3\\xcb\\x6e\\xd9\\xb6\\xb6\\x8a\\x25\\xf1\\xe1\\x39\\x72\\x89\\x98\\x1f\\x78\\x92\\x4b\\xff\\x24\\xc8\\xde\\xe6\\xa1\\x8a\\x04\\x21\\xfa\\x32\\xae\\x3a\\xb6\\x0a\\x0d\\x93\\x3a\\x6a\\xf4\\xff\\x70\\x48\\x74\\xb0\\x9b\\x07\\x39\\xe2\\xf2\\x9d\\x8f\\x25\\x2d\\x79\\x05\\x5f\\x89\\xd3\\xbf\\xf1\\x0a\\x22\\xc5\\x4a\\xc3\\xd8\\xaf\\xee\\xce\\x81\\x83\\x53\\xa6\\xab\\xe2\\xb7\\xfb\\x8e\\x8e\\x0d\\xa5\\xb7\\xac\\x1c\\xfc\\x98\\x5d\\xf9\\x75\\x80\\xb1\\x82\\x11\\xa4\\xe3\\xed\\xff\\x95\\xaf\\xdd\\xa0\\x61\\x54\\x7d\\x3a\\xe0\\x40\\x6d\\x32\\x86\\xcd\\x30\\x5b\\xdf\\xd2\\xc3\\xab\\xf8\\xf7\\x4a\\xf9\\xa0\\x34\\x20\\xe5\\xb0\\x3f\\x82\\x5e\\x9c\\x53\\x90\\x7e\\x13\\xa5\\x81\\x21\\x74\\xbe\\x42\\x89\\x86\\x45\\x14\\x9d\"},\n{{0xc0,0x4d,0xc0,0x9f,0x11,0x9d,0x67,0x0f,0xb1,0xea,0xe0,0x13,0x6f,0xcc,0x06,0x08,0x5f,0x29,0x0f,0x4a,0xd1,0xaa,0x1f,0xfc,0x9c,0x16,0x0e,0xa5,0xcf,0x47,0xf0,0x9d,},{0xff,0x49,0x8c,0xe8,0xc9,0xdb,0x78,0x67,0xf6,0xd0,0x27,0x64,0x52,0xa4,0x66,0x72,0x48,0x87,0xe6,0x17,0x2f,0x66,0x81,0x67,0x1b,0x8a,0xe0,0x35,0xf5,0x86,0x5e,0xa3,},{0x4b,0xd1,0x9f,0x3d,0x9c,0x51,0x16,0xec,0x6a,0xe0,0x02,0x4d,0x0f,0x24,0x6d,0x2c,0xe2,0x50,0xd9,0xe0,0x63,0x4a,0x23,0x2b,0xa0,0x6f,0xd3,0x56,0x6a,0xed,0x55,0xcb,0xe5,0x9f,0x12,0x33,0x2c,0xba,0xd6,0x5d,0x43,0x49,0xa9,0xd2,0x2e,0x7d,0x6e,0x46,0xd2,0xfb,0xdc,0x71,0xd5,0xc8,0xf9,0xda,0x15,0xdf,0xbf,0x17,0xba,0x22,0x51,0x07,},\"\\x1e\\x42\\x29\\x7f\\x8a\\xee\\xf2\\x9a\\x84\\x2e\\x0e\\x21\\xf5\\xdb\\xae\\x06\\x8e\\x2c\\x9d\\xda\\xa6\\xfd\\x34\\x8e\\x48\\x88\\x1f\\x0d\\x42\\xc5\\x0b\\xf0\\xec\\xf1\\x70\\x6b\\x94\\xa5\\xd1\\x98\\x17\\xca\\x02\\xd8\\x3e\\x9a\\xb2\\xf9\\x9d\\x8b\\xfa\\xaa\\x5c\\x85\\xad\\x39\\xa1\\x50\\xb2\\x25\\xad\\x3e\\xaf\\xa0\\x67\\x81\\x5b\\x74\\x67\\x2f\\xe0\\x26\\xc3\\xcc\\xc6\\x77\\x25\\x54\\x40\\xb6\\x84\\xa7\\x6e\\x12\\x8c\\xa2\\xcc\\xc4\\x29\\xf1\\x52\\x57\\x7d\\x25\\xb6\\x9f\\x40\\xdb\\x58\\x2d\\x49\\x47\\x9a\\xfa\\xe6\\x80\\x71\\x2d\\xc0\\xfd\\x1f\\xe1\\x41\\x88\\x39\\x68\\x7c\\xa6\\x0c\\xdd\\xe9\\x74\\x14\\x04\\x62\\xf9\\x61\\x48\\x29\\x5d\\xf1\\xce\\x43\\xa9\\x77\\x35\\x1c\\x77\\xf2\\xf0\\xb0\\x9a\\x6b\\x26\\xd6\\xfe\\x96\\x5f\\xce\\xae\\x17\\xd7\\xb8\\x62\\x03\\x71\\x40\\x24\\x28\\x54\\x4f\\xdf\\x91\\x69\\x0b\\x44\\xe9\\xaf\\xc2\\xe9\\x08\\x8c\\x83\\xca\\x48\\xdc\\x85\\x76\\xf6\\x28\\x72\\x47\\x98\\xdc\\x90\\x32\\x31\\x74\\xc4\\x49\\x96\\x59\\x65\\x02\\xa3\\x5d\\xf8\\xb9\\x82\\xc5\\x70\\xa6\\xcb\\x51\\xb9\\xa1\\x97\\xd4\\x31\\xaf\\x33\\xf0\\x2b\\x80\\x01\\x15\\x67\\xfe\\x50\\xcf\\x45\\xac\\x11\\x1b\\x3d\\x55\\x6f\\x8c\\x8c\\xe5\\xae\\x8c\\x99\\x72\\xf2\\xa9\\x93\\x6b\\x1a\\x01\\x2b\\x9c\\x33\\x9e\\x30\\xc9\\x73\\x12\\xb6\\x5e\\xa5\\x9c\\x10\\x0f\\x79\\xd7\\x95\\xb8\\xa2\\x4b\\x31\\xa0\\xa9\\x7d\\xc2\\x5c\\xce\\xd6\\xb8\\xff\\x5a\\xe1\\x45\\x33\\x9a\\x04\\x8c\\xa1\\x2a\\x57\\x90\\x17\\xfa\\xe8\\xd5\\xcb\\xcb\\x61\\xd5\\x2e\\x31\\x4d\\xd7\\xc2\\xe7\\x20\\x10\\xc4\\x72\\x17\\xb1\\xd0\\x68\\x78\\xbf\\x28\\x18\\xca\\x18\\x8e\\x8e\\x30\\x79\\x60\\xc1\\x68\\x9d\\x7d\\xfc\\x02\\x02\\x97\\x3c\\xd2\\x9f\\x2f\\x7b\\xa7\\x43\\x46\\x9e\\x68\\x5e\\x0e\\x70\\x4b\\x04\\xba\\xca\\x4f\\xab\\x54\\x88\\x44\\x8a\\x92\\x2e\\xab\\xf4\\x0b\\xe5\\x81\\xc1\\x99\\x4d\\x74\\xd1\\x3a\\x36\\x6c\\xe8\\x57\\xfb\\x40\\xa6\\xe0\\x5d\\xa8\\x55\\x36\\x94\\x17\\x2c\\xc3\\xfd\\x28\\x06\\x2f\\x53\\x82\\x50\\xaa\\x8c\\x11\\xf6\\x81\\x39\\xe7\\x9c\\xd1\\x19\\x1b\\xa3\\x31\\x4b\\x5c\\xea\\x08\\x64\\x43\\x7e\\xd2\\xe4\\xb6\\xfb\\xd7\\x5b\\x9d\\xed\\x09\\x87\\xb4\\x1c\\x20\\x2a\\x58\\xec\\x02\\x54\\xd9\\xd3\\x71\\xa7\\x95\\xf1\\xdb\\xec\\xdd\\xac\\x11\\x2b\\xe8\\xd0\\x9e\\x2d\\x7b\\x9c\\xa5\\x75\\x2f\\x40\\x6c\\xff\\xb9\\x11\\xca\\x36\\x45\\x0b\\xc0\\x5f\\x1e\\xc1\\xca\\x3c\\xa8\\xd3\\x51\\x24\\xd1\\x28\\x6c\\x55\\xf1\\x0f\\x61\\x33\\x4e\\x46\\xec\\xe4\\x18\\x3b\\x92\\x21\\x9a\\x9d\\xcd\\x0e\\x5e\\x78\\xef\\x2a\\x76\\xcf\\xe9\\xa9\\xab\\x37\\x95\\xdf\\xdc\\xb4\\x4f\\x63\\xd4\\x5f\\x5f\\x48\\xff\\xb4\\x15\\x61\\x33\\xad\\x2e\\x99\\x50\\x88\\x4c\\x5b\\xbd\\x2c\\x1c\\xb8\\x72\\x9e\\x40\\xa8\\x78\\x7f\\x78\\x49\\x69\\xfa\\x88\\x0c\\x07\\xff\\xcc\\x97\\xd5\\xc0\\xd2\\xd4\\x88\\x08\\x5e\\x91\\x16\\xd7\\x10\\x7c\\xd5\\xdb\\x16\\xce\\xcc\\xde\\xad\\x55\\x02\\x5e\\xea\\x2e\\xde\\xe9\\x3c\\x1b\\x10\\x64\\x27\\x61\\x8e\\xe0\\x9d\\xc3\\xda\\xd1\\xe0\\x56\\x76\\xa2\\x36\\x80\\x69\\xc8\\x04\\x5c\\x3e\\xbc\\x6c\\x67\\xaf\\xa5\\x2d\\x59\\x39\\x82\\x48\\xef\\xcf\\x15\\xe9\\x04\\xc7\\x14\\x23\\x04\\xff\\x61\\x97\\x1f\\x4d\\x9b\\xf6\\x46\\x0c\\x1d\\x64\\x17\"},\n{{0x67,0x91,0xbd,0x74,0xd3,0xb4,0x62,0x0e,0xf5,0xf1,0xff,0x56,0x40,0x64,0x32,0xc2,0x6a,0xb6,0x46,0xf6,0xd5,0xe9,0xdd,0xa6,0x84,0x2e,0xd6,0x90,0x52,0x27,0x53,0x92,},{0xda,0x99,0x15,0xa7,0x55,0x2f,0x11,0x0f,0xae,0xa1,0x2d,0x47,0x92,0x0a,0x09,0x60,0x14,0x43,0xd4,0x00,0x0a,0x9c,0x7e,0x21,0x8d,0x5b,0xa7,0x2b,0x74,0x98,0x9f,0xa6,},{0xb1,0xe8,0xd4,0x81,0x06,0x5b,0xd5,0x12,0x1b,0xb3,0xbf,0x56,0x96,0x00,0xbc,0xc2,0x6d,0xf4,0x0c,0x49,0x9f,0xba,0xa9,0x54,0xb3,0x9a,0x61,0x9d,0xc4,0x0b,0x95,0x90,0xc3,0x17,0x56,0xb8,0xb6,0x3f,0x86,0x01,0x51,0x69,0x4b,0x95,0x76,0x5d,0x69,0x7b,0x2e,0x1a,0xde,0x08,0x06,0xe9,0x2a,0x06,0xc4,0xa5,0x59,0xe9,0x0f,0xcf,0xa5,0x06,},\"\\x36\\xa2\\x0e\\x66\\xbb\\x29\\x15\\x51\\x61\\xad\\x85\\xee\\xfe\\x89\\x3b\\x53\\xac\\x5a\\xde\\x16\\x5f\\x08\\x9a\\x77\\x19\\x0b\\x0c\\x23\\x9d\\xec\\x8a\\x20\\x16\\x85\\xb0\\x76\\xb4\\xde\\xd4\\xa1\\x0a\\xa4\\x59\\xb9\\x80\\xa8\\xcc\\xa4\\x7d\\x5f\\x8d\\xe4\\xd2\\xa6\\x62\\xe4\\x46\\xd5\\xf7\\xfb\\x70\\xed\\x9b\\xe0\\x5d\\xb1\\xcc\\xea\\xdd\\x13\\x0b\\x33\\x46\\xd9\\x40\\x9f\\x9d\\x6e\\xf5\\x28\\x24\\xc7\\x64\\xac\\x6f\\xb1\\xcd\\x15\\x6d\\xbd\\x6a\\x47\\x3a\\xe7\\x22\\xd0\\xeb\\xb2\\x56\\x38\\xc5\\x12\\x65\\xa2\\x2f\\xeb\\xbb\\x14\\x96\\x7d\\x6d\\xd8\\x25\\x3c\\x1d\\x03\\x88\\x95\\xc6\\x73\\x7f\\x06\\x7c\\x8f\\x73\\xc3\\xc1\\xcb\\xe6\\xcd\\xa4\\x36\\x96\\x32\\xd7\\xf4\\xc9\\xac\\xeb\\xe8\\x7d\\x05\\x71\\xc8\\x1a\\x58\\xcf\\xd7\\x2c\\xce\\x4a\\x5c\\xf5\\x3a\\x1e\\x75\\x25\\x9f\\x4c\\x99\\x3e\\x67\\xef\\xc8\\xd9\\xc3\\x57\\x6c\\x43\\xaf\\x04\\xa5\\xca\\xf3\\x3d\\x85\\x6f\\x7f\\x27\\x55\\xd3\\xa9\\x75\\xab\\x2b\\x68\\x5c\\x6f\\x65\\x68\\x0c\\xba\\x9a\\xc8\\x79\\xf3\\xa8\\xc9\\xa4\\x76\\x5b\\x87\\x9c\\x0a\\xde\\x1e\\x4b\\xd0\\xd4\\xa7\\x0b\\xb6\\xf9\\x2b\\x24\\xd4\\x29\\xdc\\x74\\x6c\\xc7\\x8f\\x84\\x81\\x1f\\x07\\x6f\\x32\\xc6\\x1e\\x35\\x85\\xcc\\x8a\\xad\\xe9\\xb0\\xca\\x15\\x22\\x4b\\xfb\\xfe\\x18\\xbe\\x10\\xa3\\x36\\x43\\x60\\x0f\\x66\\x12\\xbf\\x01\\x3f\\x0e\\xfc\\xca\\x83\\x72\\x46\\xa0\\xee\\x5b\\x03\\xc0\\x2f\\x15\\x73\\x62\\x4c\\x4a\\x44\\xa9\\x0f\\x9e\\x42\\x3d\\x4e\\x56\\x06\\x1a\\x71\\xd0\\x14\\x4f\\x5a\\x88\\x7a\\x8c\\xd4\\xa9\\xd6\\xf2\\x47\\x90\\x4e\\x26\\x79\\x59\\x51\\x95\\x9d\\xa1\\x21\\xc8\\x3c\\x6c\\x94\\x1e\\x2b\\x6b\\x9a\\xb7\\x62\\x09\\xff\\xe9\\x17\\x85\\x91\\xea\\xd6\\x82\\x30\\xb9\\x4a\\xe9\\x7d\\xf5\\x8f\\x9f\\x17\\x24\\x28\\xc9\\x50\\x67\\x59\\x8a\\xc5\\x82\\xff\\xb9\\x50\\x84\\x0d\\x82\\x66\\x30\\xc4\\x62\\x5f\\x5d\\xea\\xdd\\xec\\x13\\x05\\x20\\x3b\\x4d\\xb6\\xb9\\x45\\xf9\\x91\\xed\\x7c\\xd3\\xd6\\xfa\\xbc\\xa5\\x1e\\x21\\x66\\xad\\xad\\x0a\\xad\\x51\\x17\\x33\\x6d\\x52\\xd5\\x94\\x22\\xf0\\x13\\x5c\\x8f\\xa8\\xcd\\xd0\\x88\\x4b\\xe7\\x35\\x86\\xbf\\x28\\x4e\\x5d\\xdd\\xdb\\xcb\\x95\\xb4\\x11\\xf9\\x85\\x68\\x52\\x6f\\xbe\\x71\\xa5\\x59\\x2b\\x56\\xad\\x5a\\x73\\x45\\xf2\\x87\\x4d\\xb1\\xd5\\x7b\\xea\\xb4\\x3e\\x8c\\xc6\\x95\\x47\\x52\\x06\\x29\\xf0\\xee\\x76\\xdb\\xf4\\x32\\xa3\\x76\\xfa\\xd2\\x8b\\xfc\\x77\\xe1\\x4d\\x84\\x0f\\x0c\\x02\\xd4\\x78\\xf1\\xe2\\x33\\x7c\\x23\\xb8\\x9e\\x73\\xe5\\x27\\x91\\x08\\xb5\\x60\\x9b\\x18\\xe8\\x0d\\xb0\\xde\\x11\\xcf\\xa9\\x4e\\xcf\\x72\\x39\\xbc\\xff\\x59\\xc5\\x41\\x18\\xe4\\xed\\xe4\\xfb\\xfc\\x08\\x23\\xae\\x54\\x60\\x16\\xf7\\x74\\xc5\\x21\\x98\\xa9\\x63\\xb5\\x54\\x5a\\x34\\x89\\xb8\\x9d\\xf7\\x62\\x6f\\xd1\\x1e\\xd4\\x65\\x8d\\x71\\x5a\\x46\\x57\\x99\\x40\\x35\\xd4\\x03\\xb3\\x37\\x0d\\x14\\xee\\xd9\\x71\\x8d\\x59\\x8d\\xb6\\x75\\xf0\\x42\\x59\\x2f\\xea\\x89\\x05\\x65\\x44\\xb3\\x2e\\x5b\\x9c\\x80\\x62\\x82\\x8a\\xaa\\x3c\\xf5\\x9c\\xb4\\x76\\xad\\x36\\xdb\\x1d\\xaa\\x24\\x82\\x22\\x7a\\x9b\\x7a\\xfb\\xc1\\x53\\xce\\x93\\x25\\x3d\\x1b\\x39\\xda\\x95\\xeb\\x96\\xf8\\x31\\x28\\xff\\x25\\x54\\xa5\\x47\\xe3\\x4e\\xea\\x4a\\x00\\x00\"},\n{{0x23,0x4c,0xe4,0xd3,0x9b,0x5e,0xba,0xbe,0x9a,0x2c,0x1e,0x71,0x97,0x0d,0x71,0x81,0x38,0xdc,0xb5,0x30,0xcf,0xd2,0x96,0x02,0x34,0x27,0xd8,0x92,0xbf,0x88,0xf8,0xa4,},{0xcb,0x73,0x93,0x0d,0xb4,0x21,0xf6,0xd2,0x45,0x36,0x83,0x7b,0xd0,0xbf,0xf6,0xfa,0x75,0xbb,0xd1,0x41,0xc9,0x8a,0x40,0x5d,0x42,0x44,0xa3,0xc4,0x24,0x55,0x07,0x79,},{0xf6,0xd0,0x60,0xed,0x7d,0x18,0x27,0x3f,0x18,0xf7,0xa6,0x9c,0xd1,0xd8,0x12,0x6e,0x47,0x8e,0x88,0xa1,0xd7,0x29,0x4f,0xf6,0x04,0x08,0x46,0xd4,0x61,0x07,0xc3,0xe4,0x1a,0x42,0x3b,0xab,0xb2,0x41,0x71,0x39,0xfe,0x58,0x7d,0x29,0x10,0x27,0x1a,0x35,0x7f,0xe5,0xbf,0x57,0xc9,0x2e,0xe3,0xa7,0xb7,0x75,0x33,0x72,0x9d,0x0a,0xc2,0x0d,},\"\\x77\\x73\\x0c\\xf8\\xc8\\xf9\\x6b\\x91\\x87\\x90\\x2a\\xcf\\xf9\\xff\\x0b\\x21\\x74\\x6c\\xca\\xf0\\xa3\\x82\\xa7\\xb3\\x43\\xd1\\xc7\\x20\\x27\\xae\\x3c\\x31\\x68\\xa7\\x3a\\x6b\\x8f\\x49\\xbc\\x87\\x98\\x14\\x1e\\x15\\xc2\\x73\\x2b\\x6a\\x6b\\x3f\\x75\\x7f\\x8a\\x8e\\x86\\xc7\\xa4\\xba\\xcb\\x39\\x55\\x1c\\x54\\x87\\x4d\\x6b\\xf7\\x16\\x89\\x7e\\xe4\\xaf\\x13\\x25\\x3a\\xa5\\xbb\\x79\\xa1\\x92\\x10\\x4f\\x44\\xdc\\xb3\\xde\\x96\\x07\\x45\\xa8\\xe6\\xaa\\x98\\x80\\x52\\x4a\\x62\\x9f\\xb5\\x10\\xa4\\xce\\x4c\\xbd\\xa7\\xe2\\x95\\x7d\\xff\\x1d\\x62\\xe7\\x05\\x60\\x6a\\x2c\\xc8\\x4f\\x91\\x85\\x0b\\xea\\xac\\x5e\\x58\\x46\\xe1\\x42\\x0b\\xc9\\x1d\\xcd\\xd2\\x42\\x7b\\x69\\xcf\\xa4\\x6a\\xe3\\x8a\\x4f\\xef\\x41\\x46\\xea\\xe3\\x5f\\x9c\\x22\\xe9\\x67\\xcb\\x14\\xa1\\xaf\\x9c\\xab\\xf8\\x3b\\x18\\x04\\x65\\xbe\\xd6\\xef\\x2c\\xda\\x38\\x2a\\x84\\xd9\\x99\\x4a\\xad\\x65\\x5d\\x89\\x52\\xe0\\xfb\\xb0\\xf9\\x6f\\xc8\\x08\\x9f\\x2e\\x74\\x89\\x49\\x7f\\xac\\xdc\\xd6\\x56\\xa8\\xa4\\x51\\xb9\\x28\\xc1\\x1e\\x7a\\x40\\x75\\x07\\x2a\\xaf\\xbf\\x17\\xd8\\xf1\\x05\\x4c\\x91\\x96\\x28\\x8d\\xed\\x3a\\xe2\\x1f\\x9a\\xfd\\x58\\x10\\xa1\\x00\\xd8\\xe4\\xd8\\x4c\\x4a\\x35\\xa9\\x8b\\x30\\xd3\\xe1\\x85\\x24\\x43\\x8d\\xd4\\x40\\x2d\\xfd\\x8e\\x76\\x75\\xf0\\x9d\\x08\\x0c\\xd9\\x15\\xf1\\x4a\\xf4\\x37\\x2f\\x7c\\xe5\\x83\\x84\\x97\\x2d\\x5d\\x11\\x10\\x79\\x65\\x1b\\x2a\\xcf\\x39\\xd2\\xa1\\x67\\xc6\\xa0\\x0b\\x2b\\x17\\xce\\x0b\\x26\\x87\\x91\\xbd\\x2b\\xe5\\x17\\x8f\\xe0\\xf8\\x2d\\x64\\xda\\xcd\\xde\\x37\\x7a\\x1e\\x8b\\xe9\\xe7\\xd8\\xdf\\xc8\\x2b\\x08\\x64\\x45\\x37\\xbd\\xc8\\x70\\xc5\\x81\\x92\\x86\\xfd\\x51\\xf6\\x79\\x2d\\xc5\\xf6\\x7b\\x54\\xbe\\x33\\x6d\\x44\\xd5\\x4f\\xeb\\xf8\\x1b\\x8d\\xf8\\xde\\xc5\\xd8\\x68\\x6d\\xb1\\x2f\\x16\\x4d\\x0e\\x8f\\xf1\\xaa\\x2c\\x16\\xba\\xcc\\x98\\x06\\x01\\x0e\\xc8\\xe9\\x11\\x96\\x59\\x7e\\xf0\\x6a\\x4c\\xf1\\x70\\x7d\\xef\\x50\\x67\\xa0\\x48\\x89\\xd8\\xe4\\x8a\\x9b\\xc2\\xc0\\xbe\\xf6\\x64\\xf5\\xac\\xd1\\xb4\\xf5\\xbc\\x2d\\xa7\\xda\\x43\\xdc\\xb5\\xf9\\x63\\x24\\x5b\\xa5\\x52\\xfd\\x49\\x30\\x01\\xd8\\x70\\xa9\\x51\\x7a\\x17\\x9c\\x2f\\x0d\\xe8\\x5b\\xe0\\xc6\\x82\\xd0\\x57\\x48\\x8e\\x35\\xc7\\x81\\x6f\\xf4\\xba\\x52\\x9a\\xef\\xd7\\xc6\\x60\\x91\\xf2\\x06\\xf5\\xf4\\xd7\\x5c\\xac\\x8b\\xd2\\x09\\xec\\x2f\\xa5\\x5b\\xe7\\x4a\\xf2\\x31\\xe2\\xf3\\x89\\xdc\\xc2\\xd6\\x68\\xbf\\x69\\x5e\\xd2\\x67\\xc3\\x59\\x4b\\xad\\x9e\\xfc\\x00\\x21\\x7c\\x7a\\x0e\\x9e\\x7b\\x6a\\x56\\xa3\\x30\\x79\\xa3\\x0e\\x73\\xc3\\x73\\x3f\\x2d\\x24\\xef\\xec\\xdd\\xe8\\x7f\\x72\\xf9\\x48\\xd2\\x77\\xd6\\xb6\\xd5\\xb0\\x35\\xb4\\xc5\\x31\\x80\\xd2\\x3d\\x66\\xcc\\x0f\\xf1\\x7c\\x15\\xdd\\x46\\x85\\x85\\xe3\\x89\\xd9\\x1a\\x4c\\x97\\xfd\\x80\\x11\\x0b\\x21\\x8a\\x0b\\xf7\\xa5\\xe0\\x35\\x3f\\x46\\x09\\xd2\\xcf\\x01\\x8a\\x06\\x55\\x71\\x00\\x1c\\x78\\x88\\x55\\x5e\\xed\\xbd\\x36\\x22\\xc3\\xb1\\x76\\x9c\\xd1\\x3f\\x33\\x37\\x47\\x72\\xaa\\x6c\\x8a\\x8f\\x58\\x81\\x02\\x01\\x7d\\x4e\\xe4\\xe5\\x0d\\xcb\\xbd\\xb1\\xd6\\x10\\xc3\\x26\\x70\\x93\\x4a\\x6d\\x9e\\x6d\\x9b\\x78\\x4b\\xbf\\xe7\\x18\\x62\\xbb\\x38\"},\n{{0x10,0x3d,0x11,0x8c,0x7d,0xd6,0x5d,0x07,0xe8,0xd5,0x58,0x2e,0x45,0x04,0x2a,0x75,0x79,0x24,0x17,0xc6,0x92,0x00,0x1e,0xe6,0xbd,0x9a,0x92,0x7b,0x2b,0x3d,0x90,0x16,},{0xb4,0x5c,0xc9,0x45,0x14,0xa6,0xad,0x67,0x24,0x96,0xcd,0x4e,0xb9,0xfd,0xaf,0xc1,0xd4,0xa1,0x67,0x07,0x2c,0x68,0x74,0xdc,0x8f,0xf1,0x6d,0x76,0x1f,0xb6,0x69,0x86,},{0x2f,0xaf,0xc1,0x3c,0x43,0xaf,0xe5,0x05,0x43,0x72,0xb9,0x23,0xd2,0x4f,0x29,0x2b,0x28,0x3a,0xfc,0xa3,0xac,0xa3,0xb3,0xe4,0x32,0x38,0x06,0x84,0x96,0x17,0x13,0xc8,0xd2,0x3e,0x86,0xb3,0x58,0x04,0x95,0xdf,0xba,0xe4,0x24,0xb7,0x67,0xe4,0x79,0x5a,0x0f,0x92,0x2f,0x71,0xb5,0x0f,0x5d,0x7a,0x36,0x9a,0xb8,0xc6,0xe8,0x80,0x42,0x0c,},\"\\x5a\\x8e\\xe0\\x79\\x18\\x6b\\x51\\xcf\\x46\\x29\\x83\\x4d\\xe0\\xc6\\xbd\\x73\\x34\\x85\\x50\\x39\\xa7\\x63\\x1d\\x68\\x87\\x65\\x2a\\x77\\x28\\x99\\x59\\x72\\xe3\\x62\\xc1\\xc4\\x09\\xf0\\x84\\xf5\\xaa\\xf2\\x98\\x6a\\xe3\\xf5\\x36\\xbe\\x00\\x70\\xc4\\xba\\xf4\\x59\\xef\\x60\\xa0\\x15\\xef\\x9d\\x70\\xdf\\xa3\\xea\\x96\\x71\\x1c\\xbb\\x18\\xe9\\x2a\\xf5\\x0c\\x52\\x7d\\x7e\\xd4\\x57\\x87\\x7a\\x07\\xab\\x83\\x72\\x15\\x18\\xc8\\x9f\\x7a\\x86\\x41\\x91\\xb1\\xe9\\x74\\x33\\xb7\\xc6\\xcd\\x63\\x4a\\x83\\x2e\\x19\\x89\\x1e\\x76\\xc6\\x21\\x22\\xa4\\x9d\\xbf\\xfd\\x83\\x49\\x8a\\xa4\\x16\\xac\\xcc\\xb7\\x73\\x7f\\xe7\\x5f\\x4f\\xb2\\xc3\\x53\\x28\\xe6\\xf6\\xec\\xec\\xaa\\xa4\\x2e\\x43\\xdb\\xa5\\xbc\\x96\\x89\\x67\\x3d\\xab\\x96\\xf0\\xbe\\xfa\\x3c\\x83\\xeb\\x41\\xd4\\xd8\\x87\\xb3\\xa1\\x17\\xd0\\x55\\xe3\\x0b\\xb8\\x7f\\xbe\\x7c\\x71\\x94\\x72\\xf6\\xc7\\xa4\\xcc\\x45\\xf6\\x28\\xf5\\xfa\\xdd\\xc4\\x8c\\xa3\\x44\\xf7\\x7b\\x73\\x3c\\x0e\\x3b\\x9f\\x50\\x79\\xdb\\xd0\\x7a\\xf3\\xa3\\x84\\x7a\\xf1\\x41\\x71\\x9c\\xca\\x2f\\x6a\\x76\\x65\\x52\\xb4\\x5d\\x0f\\xdc\\xdb\\x98\\x68\\xf2\\xc7\\x62\\xb6\\xd4\\x93\\x3b\\xa1\\x08\\x36\\xf9\\x5b\\xff\\x71\\xcb\\x88\\x04\\x00\\x24\\xc9\\x05\\x34\\xc4\\xd7\\xa9\\x5a\\x23\\x03\\xb0\\x4c\\x29\\x61\\x01\\x2a\\xf5\\x8b\\xc7\\x84\\xa9\\x63\\x27\\xbb\\xfe\\xd0\\x39\\xd0\\x80\\x2a\\x05\\x26\\x2d\\x8e\\x66\\x3b\\x78\\x50\\x8e\\x92\\x50\\x8b\\xc1\\xf2\\xea\\x2b\\x9b\\xe7\\x58\\x0b\\xde\\x10\\xa4\\xd6\\x63\\xd0\\xd2\\x5b\\x0e\\x97\\x3b\\x8c\\x5d\\xed\\x59\\xde\\xbf\\x19\\xbb\\x04\\x4a\\xff\\x1c\\x60\\xc7\\x0e\\xa1\\xae\\xfe\\x85\\xf6\\xd1\\x5c\\x2c\\x1b\\x84\\x75\\x3b\\x59\\x57\\x6a\\x49\\x47\\x3d\\x65\\xaf\\x3e\\xd9\\x41\\xa3\\xd5\\x14\\xb5\\xc4\\x52\\x2c\\x14\\x1b\\xdb\\xee\\xd9\\xcb\\x33\\x96\\x95\\xb2\\xe0\\x2d\\xc0\\x70\\x00\\x86\\x7f\\x1b\\xf8\\xed\\x8c\\xfd\\x3b\\x1a\\xfe\\x68\\x8f\\xbc\\xa8\\x0e\\x2f\\x9b\\xa5\\xc0\\xb1\\x88\\xa1\\x9a\\xda\\xff\\x66\\x86\\xca\\x0f\\xf0\\xed\\xd4\\x44\\x66\\x12\\x91\\xfa\\x27\\xca\\x1f\\xc5\\x29\\x42\\x9a\\x5d\\x8f\\xf7\\x9e\\xd2\\x02\\x7c\\x60\\xff\\xe3\\xb2\\xc0\\x3f\\xb8\\xa6\\x6a\\x39\\x85\\x41\\x7b\\xa4\\xac\\xe7\\xd1\\x4f\\xd0\\xe2\\x37\\x1e\\xdf\\x5d\\x71\\xbc\\x02\\xb9\\x05\\x27\\x67\\xc7\\xf7\\x2c\\x4e\\x6f\\x3f\\x30\\xe0\\x63\\x82\\x76\\xb9\\xc4\\x20\\xaa\\x43\\x33\\x09\\x5d\\x31\\x31\\x30\\x33\\x09\\x05\\x82\\xe3\\xac\\x4d\\x9f\\xd3\\x20\\x31\\x20\\xba\\x25\\x14\\x97\\x3a\\xb9\\xd1\\xc7\\xfc\\x42\\x29\\x01\\x16\\xb5\\x1d\\xae\\x9f\\xd5\\x79\\x41\\x0a\\xe0\\x78\\xed\\x32\\x0a\\x5a\\x1b\\x49\\xaa\\x7b\\x5f\\xef\\xcd\\x75\\x63\\x95\\x21\\x3a\\xf8\\x64\\x1e\\x29\\xb0\\xeb\\xb5\\xb8\\x3e\\x37\\x80\\xe5\\xd1\\x0e\\x9d\\x3d\\x11\\x99\\x81\\x48\\xf6\\xc6\\xf8\\x6c\\x4d\\x4e\\xb2\\x52\\xe2\\x8c\\x70\\xfa\\x3a\\x55\\xc4\\x3d\\x4d\\x7f\\xaa\\xfc\\xbc\\xdd\\x45\\xad\\x26\\x37\\xf2\\x15\\xe8\\x15\\x49\\xeb\\x8a\\x4c\\xde\\x47\\x15\\xb7\\x10\\x72\\x07\\x50\\x3a\\x79\\x59\\x50\\x60\\xb8\\x3a\\xce\\x8f\\xeb\\x67\\x3b\\x99\\x79\\x68\\x46\\x9d\\xd9\\xb4\\xad\\x6a\\x7e\\xa8\\x1c\\x6e\\x61\\x81\\x00\\x33\\xf3\\xed\\xfc\\x13\\x7d\\x97\\x42\\x09\\x57\\x5c\"},\n{{0x47,0xee,0xe2,0x02,0x4d,0xbe,0x09,0x95,0x3e,0x98,0x1f,0x69,0x86,0x52,0x0f,0x66,0x60,0x82,0xaa,0x9e,0xf4,0x89,0x2d,0xfd,0xfb,0xdb,0xd2,0x50,0xd2,0xa1,0xdf,0x28,},{0x9f,0x13,0xcd,0x8e,0xbf,0x50,0x80,0x34,0x79,0x75,0x15,0x9f,0x36,0x02,0x96,0xa7,0x16,0x40,0x14,0xd8,0xd0,0x69,0xe8,0x31,0xda,0xb0,0x33,0x26,0x07,0x99,0x7c,0xde,},{0x5d,0xef,0xae,0x0e,0x17,0x3e,0xcc,0x18,0xd5,0xf0,0x1e,0xc9,0x29,0x1b,0xe1,0x60,0xd5,0xea,0xbf,0xf6,0x3f,0xd5,0x42,0x3f,0x2b,0xc6,0x6e,0x3f,0x64,0x08,0xc1,0x96,0x35,0x35,0x02,0xdc,0xef,0x21,0xef,0xfa,0x4b,0x9c,0x14,0xbf,0x27,0xb6,0x87,0xd1,0xb6,0xe8,0x6b,0x2a,0x20,0x5a,0x89,0xeb,0x35,0xc3,0x76,0xa3,0xa3,0x25,0x69,0x0d,},\"\\xc1\\x33\\xf0\\x33\\xcf\\x3b\\xec\\x6c\\xd1\\x92\\x12\\xea\\x47\\xdb\\xec\\xb1\\x3f\\x2c\\x60\\x18\\xf9\\xe0\\x87\\x8a\\xc8\\x84\\xbf\\xb5\\x75\\xc0\\xf5\\xd3\\xfc\\x5b\\x49\\x99\\x58\\x0e\\xb8\\xac\\xbc\\xaa\\xc8\\x3a\\xe9\\xac\\x9b\\x44\\x3e\\x6d\\x1c\\xff\\x44\\x9c\\x36\\x89\\xb4\\x33\\xd5\\x09\\x00\\xb2\\xe8\\xb7\\x1d\\x00\\xe1\\x19\\xc8\\xb8\\x75\\x09\\x4b\\xda\\xb9\\x16\\xad\\xaa\\xb7\\x5b\\xcc\\x85\\x29\\x59\\xd8\\xd7\\x59\\x79\\x5b\\xbd\\x6b\\x36\\x0e\\xe4\\x84\\xaf\\xe4\\x7b\\x1a\\xd2\\x83\\x91\\xf2\\x5a\\xfb\\x8d\\x4e\\x3a\\xfe\\x0c\\x5b\\x60\\x04\\x98\\xa1\\x28\\x33\\xfe\\x2a\\x1a\\x54\\x83\\xdf\\x94\\x0b\\x17\\x3b\\xa0\\xd9\\xd8\\xc4\\xd1\\x32\\x1f\\xa4\\xb7\\x33\\x33\\x4b\\x0f\\x6d\\x87\\x8a\\x0e\\x5a\\x76\\xf4\\xf1\\x80\\xac\\x11\\x9a\\x82\\x08\\x2a\\xcb\\x14\\x88\\xe4\\x9b\\xbc\\xa7\\xa0\\x36\\x9c\\x19\\x1b\\xd6\\xd0\\xc5\\xd4\\x45\\x65\\x68\\x21\\xa9\\x9c\\xcb\\xc9\\x45\\x94\\x9e\\xca\\x81\\x36\\xcc\\x6e\\x12\\x7d\\x9d\\xe9\\x2e\\xf6\\x4f\\x17\\x4a\\x6c\\x04\\xc8\\xb5\\xe5\\x24\\x95\\xf0\\xdd\\x67\\x4b\\xb5\\xca\\x12\\x8a\\x92\\x09\\x96\\x8f\\xd4\\x50\\xdc\\xe3\\x19\\x91\\x3f\\xd6\\xa3\\x0c\\x33\\x82\\x79\\x81\\x63\\xe6\\x58\\x5f\\x58\\xef\\x20\\x8b\\xe4\\xd0\\xc6\\xa2\\x51\\x3a\\x75\\x23\\x88\\x39\\x7a\\x4a\\xe4\\x44\\x83\\x8c\\x84\\x66\\xdb\\xc3\\x6f\\xbc\\x36\\xae\\x08\\xbe\\xc8\\x8e\\xed\\xa1\\x31\\xc1\\x4d\\x06\\x36\\x6b\\x67\\x31\\x51\\x45\\x41\\x00\\xde\\xa1\\x11\\x81\\x50\\xfb\\xe4\\x41\\xb1\\xe7\\x82\\x6e\\x54\\x5d\\x98\\x68\\x24\\x2e\\x89\\x9f\\x5e\\xa5\\x3e\\x43\\x4c\\x37\\x93\\x6c\\xe6\\xfd\\x06\\x14\\x62\\x83\\xe8\\xfb\\xd5\\x36\\x48\\x0d\\xe5\\x5a\\x16\\x10\\x2c\\x44\\x75\\x4b\\xc5\\x54\\xd5\\xbc\\x2d\\xe2\\xf2\\x5e\\x19\\xe5\\x67\\xa0\\x23\\xdf\\x46\\x40\\xe7\\x4f\\xf3\\xa4\\x9e\\x4d\\xd3\\x0e\\x0e\\x25\\x58\\xb3\\xdb\\xc2\\xaa\\xb9\\x2f\\xdd\\x5e\\x79\\x42\\x5e\\xcb\\xc4\\xc6\\x99\\xfe\\x1f\\x16\\x19\\x65\\xf1\\xd0\\xb4\\x5d\\x8b\\xda\\xb5\\x2e\\xc9\\xbf\\x7a\\x69\\xd8\\xaa\\x0b\\xd1\\x71\\xe7\\x55\\xce\\x7b\\x8d\\x07\\x18\\xf7\\x26\\x7a\\xfb\\x73\\x3e\\xfc\\xa5\\x4b\\x21\\x3e\\x6f\\x5a\\xda\\xb4\\xc9\\xd7\\x6c\\x86\\x7f\\xcb\\x69\\xae\\x05\\xc7\\x4b\\xd2\\x15\\x16\\xcf\\x34\\x2c\\x61\\x61\\xf6\\xfc\\x9e\\xcc\\xac\\xf9\\x70\\xeb\\xce\\x54\\x0c\\xd8\\x92\\xbc\\x10\\x6c\\x6b\\xd5\\x63\\x61\\x02\\x98\\xb7\\x09\\x68\\xf0\\x91\\xbc\\xc6\\xe1\\xf7\\xab\\x4a\\x5b\\x2c\\x63\\x74\\xa1\\x90\\x3f\\x4d\\x3a\\xd5\\xe1\\xbd\\x86\\x43\\xa9\\xc2\\xf8\\x78\\xc3\\xd7\\xa4\\xdc\\x49\\xef\\x31\\x97\\xed\\xbc\\xda\\x7b\\xb9\\x1e\\x7e\\x06\\x60\\x60\\x87\\xd4\\xe9\\x81\\xbf\\xab\\x93\\xa6\\x02\\x49\\x77\\x96\\x2e\\x45\\x26\\x25\\x17\\xf3\\x38\\xb6\\x85\\x7e\\xec\\x21\\x58\\xa2\\x97\\xb2\\xaa\\x91\\x52\\x4b\\x67\\x7a\\x21\\xaa\\xc5\\x7b\\xe0\\xb6\\x3a\\x80\\x74\\xfe\\x54\\xe7\\xa9\\xdc\\x70\\xc5\\xa5\\xc3\\xde\\x72\\x8b\\x9c\\x17\\xec\\x12\\x12\\xab\\x11\\x30\\xeb\\x17\\x62\\x2c\\xd7\\xb2\\x2a\\xb6\\xeb\\xa9\\x18\\x5e\\x8d\\x67\\xbe\\x6c\\x47\\xa2\\xe5\\xad\\xc6\\x63\\xd4\\x64\\x2c\\xc1\\x20\\x22\\x2e\\x29\\x9f\\xe1\\x34\\xfd\\x7f\\xcd\\x00\\xad\\xab\\xcf\\xaa\\x64\\x2f\\xe2\\xe0\\x8d\\xd5\\x2e\\x2c\\x3f\\x32\"},\n{{0xb6,0xc8,0x8b,0x4c,0x90,0xfd,0x19,0xa1,0x49,0xd3,0x81,0x67,0x19,0x53,0xb9,0xb1,0x6d,0x42,0x8f,0x63,0x61,0xcf,0x50,0x3a,0x11,0x04,0x77,0xe2,0x97,0xf8,0xd2,0xf8,},{0x8e,0xbf,0xb0,0x84,0xf9,0x97,0xb2,0xea,0x79,0x32,0xa2,0x35,0x3b,0x2c,0x8b,0x16,0xbd,0x82,0x5e,0x1a,0xf5,0x87,0xa8,0xeb,0xc5,0x1a,0x6c,0x45,0xae,0xa3,0x43,0xae,},{0x74,0x47,0xa2,0x01,0x81,0xb0,0x2c,0xf1,0xb6,0xad,0x52,0x95,0x69,0xce,0x43,0x7c,0x2a,0x05,0x08,0x11,0x6f,0x50,0x20,0x5c,0x41,0xe6,0x37,0x8b,0x74,0xfe,0x2f,0xc5,0x36,0x30,0xaa,0x0d,0xc4,0xb8,0x0c,0x31,0xcb,0x26,0xc8,0xf0,0x9b,0xf8,0xfa,0xb2,0x7e,0x3a,0xbc,0x8f,0x1f,0x60,0x4a,0x5e,0xc0,0x66,0x31,0xa8,0x4f,0x6f,0x2e,0x06,},\"\\x7f\\x4b\\xf4\\xf5\\x21\\x73\\xef\\xf0\\x72\\xf8\\x18\\xd0\\xaa\\x97\\xe6\\x93\\x5d\\x8b\\xac\\xcf\\x48\\x39\\x66\\x32\\x53\\xb2\\x41\\x4f\\xe6\\xb1\\xf3\\x4c\\xf4\\x3a\\xb1\\x20\\x15\\x5a\\x1a\\x3a\\xea\\x7b\\x48\\x19\\xdd\\xd1\\x03\\x16\\x73\\xb8\\xa7\\xa6\\xbd\\x0b\\x9d\\xda\\x4a\\xde\\xfe\\x69\\x2a\\x56\\x16\\x2c\\x64\\x61\\x80\\x79\\x42\\x64\\xc5\\x12\\x21\\x15\\xeb\\x90\\xa6\\xd3\\x05\\x4f\\x08\\x43\\x02\\xdc\\xe3\\xd8\\x36\\xac\\x3d\\xe8\\x20\\x63\\x8b\\xd8\\x9a\\x86\\xbf\\x0a\\x4c\\x01\\x54\\x7c\\xfd\\xc5\\x43\\xd6\\x76\\xfe\\x16\\x39\\xef\\x72\\xc5\\xb8\\x45\\xc4\\x94\\xe0\\x78\\x14\\xce\\xc8\\xa4\\x7d\\x03\\xdf\\x73\\xbe\\x4e\\x33\\xc0\\x5a\\xfe\\x9a\\x19\\x0d\\xda\\x04\\x33\\x60\\x49\\x6b\\xe4\\xcf\\x3a\\x63\\x19\\xda\\x9a\\xb0\\x64\\x81\\x67\\x7f\\x1a\\x43\\x74\\xd6\\x0d\\x3d\\x3b\\x63\\x94\\xf8\\x84\\x3c\\x86\\x9b\\x0f\\x41\\xa1\\xe8\\x1c\\x2b\\x1a\\x54\\xbf\\x5a\\xac\\xbd\\x98\\x20\\x7c\\x8d\\xba\\xcb\\x36\\x42\\x2a\\x3a\\xa0\\x13\\xd5\\xe8\\x49\\xe0\\x44\\xaf\\x92\\x85\\x45\\xc0\\x46\\x09\\x7c\\xaf\\x14\\x9d\\x97\\x02\\x15\\x11\\x5d\\xea\\x0b\\x5a\\x85\\x40\\x1f\\xf6\\x72\\xe0\\x2e\\xd4\\x0b\\xd0\\xf5\\xa4\\x40\\xcd\\x56\\x49\\x40\\x53\\xc8\\x96\\xc3\\xbd\\x32\\x60\\x63\\x49\\xf7\\xcb\\xe7\\xec\\xe2\\xa2\\x23\\x0c\\xf2\\x36\\xda\\xc5\\x9f\\x78\\x17\\x96\\x5f\\x3f\\xa8\\x0f\\xb4\\x8a\\xa3\\x0b\\x0b\\x19\\xef\\xa9\\xa9\\x65\\x91\\x64\\x6b\\xd2\\x5e\\x67\\xc1\\x85\\xf7\\x7e\\x21\\xd6\\x63\\x0b\\x28\\x8d\\x4e\\x55\\x14\\x6b\\x2a\\xbc\\x15\\xe9\\x50\\x88\\xd9\\x36\\x08\\x07\\x75\\x61\\x81\\x54\\xbb\\xdd\\xa1\\x15\\x70\\x2a\\x2a\\xfd\\x6f\\xd5\\xf5\\x6b\\x92\\x3e\\x18\\x88\\x33\\xec\\x44\\x89\\x44\\xd3\\x02\\x83\\xe3\\x37\\x25\\x42\\x42\\xc5\\x81\\x2d\\x72\\x45\\xa4\\xe9\\x26\\x70\\xbc\\xe3\\x54\\x6e\\xfa\\xed\\x22\\xd2\\x74\\xe1\\xe6\\x04\\x8b\\x5a\\x0f\\x01\\xef\\xbf\\x89\\x5d\\xc4\\x24\\x94\\xba\\xf1\\x74\\x71\\x85\\xcb\\x1a\\x4b\\x88\\xfd\\xf1\\xe6\\x09\\x9b\\xaa\\xbc\\x6a\\x5a\\xb5\\xa2\\x72\\x7b\\x1e\\x24\\x87\\x89\\xd1\\x70\\xca\\xa2\\x44\\x96\\x71\\xa8\\xf6\\xe0\\x94\\xc1\\x13\\x32\\xea\\x0a\\xc2\\xaf\\xe8\\x81\\x32\\xc6\\x44\\xff\\x88\\x3d\\x0c\\x49\\x9a\\xd7\\x6a\\x93\\xdf\\x47\\x2f\\xa0\\x13\\xea\\xa2\\x7a\\xb4\\xda\\xd6\\x79\\xd2\\x51\\x1b\\x50\\x49\\xc4\\xe9\\x8b\\xaa\\x2e\\x7b\\x00\\xa5\\x34\\x89\\x1e\\x29\\x02\\x65\\xed\\xb0\\x76\\xf7\\xdc\\xa8\\xe6\\xfe\\xf3\\xf4\\x33\\x03\\x4a\\x16\\x57\\x5f\\x0e\\x53\\xda\\x45\\x77\\xe6\\xb1\\x3f\\x0c\\xb0\\xd7\\x85\\x87\\x0d\\x0d\\x09\\x8d\\x5d\\x80\\xf4\\x13\\xa2\\x68\\xba\\x84\\xe0\\x43\\x1a\\x78\\x69\\x23\\x77\\x13\\x78\\xcd\\x57\\xb8\\x19\\x22\\x58\\xe2\\x63\\x3c\\xdb\\xe0\\x3c\\xc3\\x16\\xa0\\x95\\x09\\x70\\x52\\x6f\\xd3\\xe0\\x93\\x76\\xbc\\xef\\x0d\\x03\\xb7\\x07\\x4e\\x59\\xa5\\xa8\\x4f\\xc6\\x4e\\x79\\x5a\\x81\\x21\\x56\\xd9\\x60\\x56\\x76\\x50\\xbb\\x1e\\x14\\x24\\xb3\\xcc\\x9a\\x4d\\x99\\xd5\\x7b\\xa8\\x58\\xdd\\x1a\\x0c\\xad\\x35\\x32\\xe9\\x98\\x14\\x6e\\x79\\x26\\x40\\x45\\xe2\\x8e\\xbb\\xfd\\x75\\xa4\\x26\\xb0\\xbb\\x85\\x1a\\x24\\x4a\\xd6\\xbe\\x7b\\xd5\\x76\\x5a\\xf4\\x93\\xdf\\xc4\\x4e\\xe3\\x78\\xcd\\x04\\xda\\xf3\\x91\\x7e\\xef\\x2a\\x62\\x06\"},\n{{0x79,0x49,0xa9,0x47,0x2f,0x72,0x5c,0xe7,0xc6,0x8d,0x7e,0xa8,0xfc,0x16,0xe1,0x3d,0x9e,0x0e,0x0a,0x58,0xf5,0x8c,0x24,0xf9,0x22,0x8c,0x88,0xe8,0x02,0x64,0x09,0x0d,},{0xa3,0x70,0xf8,0x28,0x33,0xf8,0x8b,0x4f,0x5f,0x53,0x10,0xb9,0x18,0xe6,0xaf,0x93,0xbb,0x72,0x4b,0xfb,0xdf,0x3c,0x02,0xc5,0x03,0x78,0x0b,0x2c,0x83,0xab,0x6c,0xc6,},{0xe0,0x28,0x98,0xcc,0x7c,0x30,0xee,0x01,0x64,0x82,0x47,0x49,0x7b,0xe8,0xa9,0xc6,0x37,0x85,0x93,0xdc,0x88,0x20,0xbf,0x7c,0x17,0xff,0xcd,0x18,0x11,0x8a,0xf0,0x98,0x79,0xa7,0x69,0xf5,0x39,0xdd,0x92,0x37,0xe9,0x68,0x21,0x16,0x66,0x34,0x99,0x8f,0x94,0x6d,0xa6,0x5e,0x6d,0xba,0xd8,0x27,0x15,0x11,0x66,0x9e,0x2d,0x6c,0xad,0x02,},\"\\x95\\x53\\x86\\xb9\\x2d\\xd6\\xbf\\x92\\x60\\x1b\\xf8\\x1e\\x84\\xd2\\x51\\x44\\xb5\\xfc\\x0b\\xcd\\x7d\\x23\\xc7\\x6e\\x7d\\xeb\\x5f\\x5b\\xa6\\x31\\x6b\\xb6\\x1a\\x5d\\x8e\\x74\\x18\\x5b\\x01\\x29\\x67\\xf0\\xa4\\x43\\x8b\\x53\\x16\\x96\\xde\\xb4\\xb8\\x10\\x10\\x89\\xe0\\xc0\\x48\\x2a\\xdf\\x13\\xc0\\x61\\x31\\x91\\xb9\\x77\\xf7\\x7b\\x04\\x19\\x81\\x41\\x47\\xf5\\xda\\x64\\xa1\\xd3\\xbe\\xb1\\x27\\x5b\\x98\\x49\\xd1\\x29\\x7b\\xa8\\x53\\x2a\\xe0\\xa6\\x47\\xa8\\xac\\xe3\\x95\\xae\\x0e\\xd0\\x0f\\x67\\x34\\x8c\\x5e\\xe5\\xea\\x19\\xb5\\xf1\\xc5\\xbd\\x2e\\x62\\x28\\x18\\xe8\\xad\\xcb\\xa3\\xc1\\x7c\\x27\\x98\\x7e\\x4e\\x3d\\x6d\\x91\\x0a\\x56\\xc7\\xe5\\x14\\x9d\\x3f\\x55\\x74\\xfc\\x06\\x00\\x9b\\xf4\\xdd\\x3e\\x37\\xcf\\xe3\\xeb\\xda\\x2c\\x21\\x16\\xd3\\x66\\xdd\\x88\\xce\\x5e\\xa7\\x2a\\xb3\\x87\\x49\\x05\\x85\\x44\\x3b\\x08\\x6e\\x8a\\xa3\\x8d\\x11\\xd3\\x82\\x0b\\x72\\xc6\\x58\\xe4\\x63\\xcd\\xb5\\x9c\\x53\\x93\\x01\\x1d\\x4a\\x8f\\x4c\\xb6\\xa1\\x95\\x22\\x93\\x04\\xe7\\x62\\x39\\xfa\\x5e\\x8c\\x2c\\xbe\\x0f\\x39\\xdc\\xad\\x13\\x8a\\x0e\\xcb\\x3c\\x51\\x57\\x9e\\xc9\\xa1\\x20\\xa5\\x16\\x07\\xee\\xfe\\xbf\\xa5\\x9a\\x44\\x62\\x0e\\xa5\\xb1\\x91\\x60\\x87\\xea\\x33\\x85\\x33\\xfc\\x13\\x2f\\xf2\\xe4\\xa4\\x3d\\x05\\x2f\\xd0\\x8b\\x6b\\x1b\\x24\\xfb\\x67\\x2f\\x73\\xc9\\xb9\\xba\\x20\\xb7\\xc1\\xc4\\x1e\\xa2\\x4d\\x91\\x2d\\xe9\\xb5\\x55\\xb6\\xe5\\x68\\x2b\\x97\\x06\\x08\\xff\\x22\\x9a\\xd3\\x08\\x6f\\x43\\x1f\\x9b\\xe1\\x90\\xec\\x39\\x22\\x4b\\xa2\\xed\\x8a\\xcb\\x4c\\x8e\\xac\\x85\\x82\\xe2\\x3a\\xaa\\x79\\x82\\x7c\\x44\\xe2\\x48\\xc5\\xba\\x09\\x2d\\xda\\xc0\\xf2\\xf7\\x96\\x84\\xaa\\x93\\xfc\\x06\\x10\\x73\\xe1\\x82\\x1a\\x56\\xaf\\xb9\\xbf\\xec\\x95\\x2d\\xf2\\x71\\x9a\\x9c\\x7a\\x40\\x3e\\x6a\\x93\\xf7\\xa6\\x56\\xd7\\x4b\\x61\\xc1\\xd1\\x90\\x83\\xf8\\xd3\\xf1\\x9e\\x65\\x9f\\xa2\\xb7\\x18\\xe0\\xbd\\x04\\xb6\\x93\\xd6\\x3d\\xaf\\xb8\\x6a\\xdb\\xee\\x5d\\x87\\xc7\\x5b\\x7d\\x12\\x91\\x22\\xf1\\x78\\xa0\\xe6\\x69\\xeb\\x03\\x5c\\xa4\\xd8\\xeb\\x45\\x39\\x7f\\x18\\x51\\x26\\x4e\\x2c\\xf0\\xa0\\xcd\\xd3\\x07\\x20\\xc5\\xe1\\x39\\xcd\\x6a\\x57\\x3f\\x1f\\xa2\\x41\\xca\\xe9\\x42\\x58\\x05\\xac\\x79\\x60\\x3e\\x8d\\xe3\\x50\\xef\\xdb\\x0b\\x9b\\xc9\\x5b\\xa7\\xb0\\x85\\xc1\\xed\\x92\\xc1\\x2a\\xcf\\x53\\xf5\\xd4\\xa1\\x13\\x75\\x98\\x00\\x8f\\x2a\\x36\\x72\\xc8\\x4e\\x5f\\x76\\x9a\\x25\\xc7\\xa4\\xa1\\x65\\x79\\xd8\\x62\\x88\\x77\\x49\\x72\\x60\\x6e\\x4e\\x7d\\x85\\x26\\x3a\\xd2\\x17\\xe0\\xdb\\xcf\\x34\\x3f\\xe5\\x54\\xc1\\x09\\xc5\\xd9\\x40\\x9b\\x79\\x39\\x07\\x3a\\xc5\\x5a\\x03\\x42\\x0f\\xec\\x28\\x9b\\x11\\x4a\\x5c\\x54\\xc2\\x0b\\x45\\xea\\x69\\x93\\x85\\x33\\xad\\xe7\\xb3\\xae\\x85\\xe1\\xa7\\x83\\xdd\\x97\\x89\\x7c\\x3a\\xe8\\x25\\x41\\x83\\xcc\\x54\\x04\\x5c\\x2a\\x18\\xec\\xbe\\x52\\x16\\x91\\xf2\\x61\\x9d\\x9b\\x8f\\x1f\\xb3\\x47\\xca\\x05\\x5a\\x7b\\x0b\\x4c\\x24\\xf6\\x4d\\x17\\x73\\xe0\\x14\\x16\\x44\\x1e\\xfe\\x15\\x99\\x23\\x21\\x7a\\x84\\x87\\x4b\\x9c\\x4e\\xc2\\x65\\xcd\\xaa\\xb6\\x43\\x90\\x80\\x68\\x49\\x78\\x12\\xc1\\xaf\\x15\\xc1\\x88\\x07\\x1e\\x78\\xf5\\x97\\xfe\\xdf\\xce\\x91\\xc5\\xd4\\xc6\"},\n{{0xd6,0x8a,0x5e,0x3c,0x47,0xee,0xdb,0x30,0x99,0xdf,0xfc,0x80,0x4c,0xf1,0x9c,0x5e,0x74,0xbf,0x7b,0xf5,0xf0,0x1f,0x54,0xd4,0xd9,0x1d,0x75,0x74,0xf3,0xd3,0xdc,0x7c,},{0x46,0x46,0x7f,0xe9,0xce,0x3a,0xcf,0xd0,0xd7,0x43,0x46,0xbe,0x21,0xc4,0x62,0x16,0xdb,0x81,0xae,0xce,0x6c,0xe0,0x30,0x8f,0xb8,0xdc,0x63,0x86,0xfc,0x34,0x46,0xcf,},{0x89,0x6f,0xc3,0xca,0xba,0x7f,0xd3,0xfc,0x28,0x5d,0x5e,0xdd,0xdd,0xc0,0x12,0x0c,0xd4,0x6d,0xa7,0xc6,0xef,0xab,0xe6,0x6b,0x15,0x0b,0x00,0x27,0x60,0xb8,0x41,0x4a,0x89,0xac,0x9e,0x7f,0x1f,0x7b,0x7c,0x7b,0x33,0x59,0x8f,0x61,0xf4,0x57,0x18,0xe4,0xff,0x4a,0xc3,0x68,0xff,0x12,0x96,0x14,0xb4,0xfe,0x92,0x19,0xf2,0x37,0xb0,0x09,},\"\\x59\\x6c\\x03\\xd0\\x87\\x3f\\x57\\x2f\\x45\\xc3\\xb1\\x6f\\x0e\\xf4\\xb5\\x2a\\xd2\\xbf\\x59\\xec\\x76\\xd3\\xc0\\xe5\\x34\\xd6\\x2c\\x1f\\x84\\x16\\x4d\\xda\\xa4\\x25\\xfb\\x85\\xc9\\x54\\x84\\x85\\xb7\\x06\\x46\\x77\\xe9\\x9d\\x04\\xc3\\x9b\\x6e\\xba\\x04\\xc9\\x66\\x39\\x7b\\xa6\\xa5\\xf4\\xeb\\xaa\\x69\\xa2\\x41\\xdf\\x95\\xa6\\xe4\\x45\\x02\\x50\\x9d\\x63\\x50\\x55\\x7e\\xbf\\xea\\x60\\x26\\x4b\\x62\\xad\\x7f\\x74\\xd1\\x6e\\x5d\\x25\\xd4\\x59\\x70\\xcf\\xeb\\xeb\\x33\\xe7\\xb1\\xba\\xc3\\x34\\x8d\\xd0\\x3a\\x8e\\x99\\x13\\x3b\\x26\\xbb\\xfd\\x7a\\xa7\\x22\\xc2\\x58\\x7f\\x72\\xd5\\x52\\x6e\\x98\\x0d\\xa9\\xee\\xbd\\xf1\\x08\\x21\\x1d\\xae\\x50\\xbb\\xe8\\xc6\\x5f\\x9a\\xbe\\xe6\\x9a\\x1b\\xbf\\x84\\xc0\\x3e\\x40\\x44\\x8b\\xab\\xad\\x03\\xd3\\xcf\\x3b\\x7d\\xe4\\x88\\x7d\\x2b\\x47\\x73\\x77\\x02\\x79\\x64\\x82\\xd2\\x26\\x5c\\x56\\x6b\\x0f\\x62\\x3b\\x53\\xc8\\x67\\x1b\\xd3\\x71\\x9e\\xde\\xc0\\xff\\xd5\\xf4\\x9b\\x49\\xb0\\x72\\xc1\\x56\\x4a\\x57\\xf9\\xba\\xb6\\xb9\\x2d\\x1f\\x06\\x8d\\x75\\x66\\x39\\xa4\\x33\\x14\\x52\\xe6\\x1a\\xa7\\xb2\\x18\\xa8\\x8b\\x9d\\xb7\\x7a\\x19\\xfb\\x82\\xf1\\x3e\\x98\\x68\\xed\\xb7\\x98\\xd5\\xbe\\xec\\xa5\\x5d\\x1a\\xb0\\x95\\xb3\\x16\\x22\\x5f\\x3f\\x63\\x90\\xf8\\x95\\x78\\xf0\\x16\\x04\\x28\\x74\\x7b\\xcd\\x21\\xbe\\x6a\\xe1\\xd8\\x69\\x91\\xb4\\x8e\\xf8\\x0d\\x56\\x92\\x50\\x85\\x8f\\xeb\\xf3\\x27\\x6b\\xd5\\xde\\x3d\\xb6\\x5a\\x24\\x5c\\x8b\\xdc\\xf1\\x48\\x8c\\x48\\x25\\x96\\x89\\x45\\x78\\x6b\\xed\\x63\\xf3\\xd1\\x3f\\x14\\x09\\x36\\x3b\\x94\\x85\\x60\\x47\\x68\\x58\\xb3\\x96\\xbc\\xe5\\x88\\xe4\\x0b\\x31\\x1d\\xdf\\xc2\\x2a\\xd6\\x22\\xca\\x7d\\x1e\\x69\\x56\\x14\\x64\\xdd\\xa5\\x00\\x9e\\x63\\x8a\\xa5\\xec\\x9f\\x4c\\x03\\x92\\x93\\xaa\\xec\\x75\\x00\\x1f\\xfc\\x68\\xa7\\xcb\\x3a\\xe0\\x18\\x74\\xdc\\x7f\\x39\\xd7\\x50\\x27\\xf5\\x9a\\x28\\x96\\x5f\\xc1\\x95\\x30\\xc0\\x75\\x2f\\xe9\\x9b\\x15\\x3d\\xa7\\xc0\\xe5\\x42\\xbd\\xa7\\x6c\\xa1\\xe1\\x0b\\x7e\\xa1\\x58\\xef\\xb4\\xd8\\x21\\xfb\\xc6\\x5e\\x72\\x71\\xad\\x99\\x41\\x09\\x53\\x15\\x44\\x7a\\xbc\\xad\\x08\\x80\\xa0\\x07\\x5d\\xd0\\x4b\\x13\\x25\\xc7\\x26\\x33\\xac\\xbc\\xb2\\x61\\xfc\\xb4\\x07\\xc2\\x64\\xa3\\x4d\\x70\\xbf\\x1f\\x04\\x4f\\xee\\xad\\x06\\x9a\\xf5\\xa8\\x7d\\xd3\\x52\\xf4\\xbd\\x81\\x10\\xfa\\x17\\x8a\\xdb\\xd8\\xdb\\xf2\\x3c\\x6b\\x57\\x5c\\xdd\\x5d\\xf2\\x2c\\xc9\\xa5\\xcd\\xd3\\x7d\\x9c\\x8f\\xaa\\xb8\\x1a\\x4c\\xb3\\xfb\\x5c\\x4f\\xe7\\xff\\x62\\x9d\\xba\\xa9\\xfc\\x06\\xb8\\x0c\\x1f\\xb6\\x91\\xc2\\x86\\x55\\x95\\x5c\\xfe\\x5c\\xa4\\x41\\x49\\xb1\\x50\\xb3\\xcf\\x14\\x0d\\x9a\\xca\\xcb\\x14\\x31\\x3a\\x72\\xc8\\x40\\x98\\xde\\x72\\xba\\xcc\\x02\\x72\\xd7\\x9e\\xd6\\x61\\x7f\\x72\\xde\\xc8\\x8e\\x19\\xb8\\x44\\x25\\x49\\x2a\\x42\\x9e\\xc6\\xd2\\xec\\x08\\xb8\\x63\\x46\\xdf\\xbf\\x20\\xea\\x2a\\x36\\x19\\xe7\\x7b\\x6a\\xc6\\x42\\x30\\xeb\\xe2\\x5f\\xa0\\x06\\x7a\\xbb\\x5f\\x33\\xee\\x49\\xad\\xc7\\xc4\\x4b\\xda\\x70\\x46\\xd7\\xf2\\x24\\xf2\\xe7\\xa4\\x89\\x56\\x83\\xfc\\xa8\\x68\\x4e\\xd6\\xa0\\x31\\x84\\x4f\\x57\\x86\\xbc\\xda\\x48\\xb5\\x04\\x23\\x94\\x48\\x7b\\x52\\x40\\x2a\\x09\\x90\\x77\\x88\\xa1\\xe1\\x40\"},\n{{0x31,0xe8,0x2b,0xc1,0xcc,0x5c,0xed,0x21,0xcd,0xc8,0xbf,0xc2,0xdb,0xbb,0x97,0x6b,0x08,0x78,0x0a,0xfc,0x69,0x44,0xaf,0x7e,0x88,0xe5,0x0e,0x67,0x87,0x4d,0x84,0xf1,},{0x8d,0xf9,0x77,0xe2,0xb0,0x40,0xac,0xeb,0xd3,0xda,0xfd,0x67,0xb8,0x7f,0x92,0x16,0xe8,0xc3,0x71,0xbe,0xce,0xd6,0x18,0xfe,0xf3,0xa4,0x96,0xd6,0x51,0xa5,0xd7,0xb5,},{0x24,0x07,0x02,0xac,0x6c,0x68,0xd5,0x97,0xd2,0x22,0xda,0x94,0x9d,0x0c,0x47,0xd1,0x6b,0x39,0x0a,0x47,0x7d,0x1f,0xb5,0x79,0xe9,0xd8,0x94,0x8a,0xdf,0x9b,0x3b,0x6a,0x7f,0xd4,0x45,0x8a,0xe6,0x38,0x5b,0x7e,0x2b,0x68,0x4a,0x05,0xb5,0x5c,0x63,0xfa,0x6c,0xd0,0x87,0xbb,0x90,0x11,0x3c,0xba,0xb8,0xe4,0xaf,0x14,0x2f,0xcf,0x81,0x0e,},\"\\x69\\xd4\\x61\\xb6\\xb7\\xa8\\x66\\xe9\\x4c\\xd5\\x9a\\x5a\\x23\\xbb\\xa4\\xa1\\x27\\x66\\x02\\xf0\\x42\\xba\\xa8\\x50\\xd5\\xb2\\x92\\x49\\xd6\\x74\\x3a\\xda\\x04\\xd3\\xd9\\x38\\x21\\x9a\\xbb\\xc2\\x2a\\xda\\x66\\xa1\\x77\\x81\\x97\\xf7\\x0b\\xf8\\x0b\\x59\\x7a\\x8b\\x4a\\xe0\\x0b\\xdb\\x87\\x68\\x12\\xd3\\xab\\x4e\\xc0\\x11\\xdf\\x73\\x34\\x1c\\x85\\x05\\x3e\\xeb\\xcc\\x2d\\xf0\\xac\\xfc\\x21\\x54\\x82\\x83\\xb5\\x53\\xec\\xde\\x01\\x54\\x82\\x8e\\xd5\\xaf\\x47\\x57\\x19\\x85\\xf8\\x97\\x67\\xb0\\x05\\xb6\\x22\\xc9\\xe7\\xc0\\x79\\xdd\\xe6\\x94\\xe4\\x9d\\xc0\\x55\\x0c\\x79\\x18\\xcc\\x51\\x5c\\x27\\x4d\\xbd\\x9c\\x54\\x69\\xd2\\xf1\\x8e\\xcd\\x90\\xde\\x66\\x4e\\x03\\xca\\x41\\xe5\\x3b\\xe2\\x0b\\x96\\xe2\\x5a\\xf4\\x0c\\x54\\xab\\x0f\\x7c\\xbe\\x9e\\x05\\xca\\x3f\\xa5\\xa3\\x7c\\x1a\\xa8\\xeb\\xfb\\x64\\x44\\xa3\\x2c\\x49\\x6e\\xfc\\x68\\x15\\x7c\\x69\\xf3\\x58\\xc1\\x5f\\x6a\\xc0\\x9d\\x46\\xef\\xef\\x9a\\x68\\x5d\\xf7\\xe8\\xdd\\x63\\xb3\\x04\\xbd\\x3c\\x63\\x8c\\xcf\\x53\\x2f\\xe9\\x01\\xf1\\x1c\\xf9\\x7c\\x5b\\x1c\\xbe\\xd3\\x3c\\x70\\x63\\x7c\\x72\\x1b\\x02\\x89\\xad\\xf6\\xbb\\x6d\\x87\\xc3\\x04\\x79\\xfa\\x92\\x6e\\x04\\x30\\x74\\x30\\x2b\\x76\\xf1\\x15\\x7d\\x0a\\x81\\xde\\xc4\\x93\\xe8\\x7a\\x3c\\x64\\x3e\\x7a\\x20\\xb7\\xa4\\x15\\x25\\xa3\\x8d\\xb0\\x4e\\x78\\xda\\xe5\\xe7\\x79\\x70\\x66\\xbf\\xae\\x2c\\xf4\\x48\\xa4\\x47\\xe9\\x00\\x4c\\xce\\x8e\\x41\\xf0\\x98\\x79\\x91\\xfa\\xd3\\x03\\x11\\xdd\\xaa\\x45\\x9a\\x26\\x44\\xf4\\xb9\\x41\\xc0\\x68\\xc0\\xd6\\xc0\\x77\\x1a\\xfc\\xf4\\x2b\\xf9\\x13\\x9a\\x68\\x4d\\xa2\\x98\\x48\\x6e\\xcf\\x67\\x52\\x3b\\xf8\\x50\\x9a\\x45\\xba\\x5c\\xb8\\xb3\\x86\\x4a\\xd2\\x2c\\x0c\\x6a\\x82\\x8c\\x6d\\xb7\\x2e\\x37\\x1d\\xe4\\x10\\xb4\\x7d\\xac\\x49\\xae\\x9d\\x3b\\x57\\x02\\xb1\\x73\\x9b\\x8d\\x76\\x0c\\xe9\\x86\\x11\\xc0\\x7d\\x88\\xdf\\x5f\\x04\\x68\\x38\\x08\\xa2\\x1a\\xfc\\x2e\\x61\\x71\\x3f\\xc2\\xc0\\x25\\xcb\\x25\\xfc\\xc4\\xee\\x94\\x18\\x41\\x08\\x3b\\x22\\xf6\\x1e\\x26\\x56\\xfb\\x3b\\x8d\\xad\\x41\\xc2\\x62\\xc8\\x9d\\x2f\\x17\\x61\\x03\\x09\\xf2\\xd5\\xc2\\x95\\x89\\xa2\\xdf\\x61\\xe5\\x51\\x49\\x89\\x50\\x32\\xca\\x98\\x1e\\x45\\x57\\xe1\\x30\\xa2\\x37\\xfc\\x08\\x26\\xfc\\x87\\x25\\x29\\x86\\x1b\\xbb\\x83\\x28\\xd6\\x73\\xf3\\x9b\\x58\\xb7\\x3d\\x06\\x0e\\xc5\\x96\\xbf\\x22\\xe7\\xee\\x08\\x1f\\x44\\xe9\\x2c\\x02\\xa5\\x67\\x76\\x79\\x52\\x0e\\x2a\\x2b\\x4d\\x22\\xc7\\x7f\\x2b\\x21\\x2d\\x5a\\xaf\\x05\\x0b\\xf2\\xc1\\x41\\xe3\\xe2\\x8b\\x85\\x71\\xd4\\x32\\x19\\x37\\x42\\x62\\x35\\xc7\\xa6\\x46\\xd6\\x47\\xe3\\xef\\xe1\\x83\\xc2\\x7b\\x74\\x92\\x56\\x5e\\xca\\xcd\\x7f\\x43\\xc6\\x7a\\x74\\x45\\x3f\\x47\\x80\\xe8\\x87\\x11\\xba\\x2d\\xd4\\xa3\\x94\\x1b\\x12\\xdd\\xd3\\x90\\x92\\x70\\xfb\\x3d\\xeb\\xd4\\x22\\x43\\x6a\\xb6\\x16\\x6f\\x08\\xc9\\x9c\\x88\\x6c\\xc0\\xe8\\xe3\\xce\\xcd\\x06\\x42\\xe4\\x42\\x85\\xb8\\x86\\x4a\\xa4\\x16\\x94\\x3c\\x5a\\x18\\x69\\x74\\xf4\\x64\\x53\\x5a\\x87\\x0a\\x01\\x28\\x61\\xbc\\x2e\\x58\\x71\\x49\\xca\\xe9\\x71\\x62\\x4e\\x61\\xc3\\x1d\\x8a\\x50\\x7e\\x3a\\xd8\\x27\\x73\\xe7\\x23\\xbc\\xb7\\x5d\\xf5\\x4b\\xef\\x84\\x7a\\x40\\x7b\\xcb\\x7b\\x1d\\x57\"},\n{{0xcc,0x56,0xbc,0x7c,0xdf,0xa6,0x11,0x92,0x4e,0x72,0xb0,0x7f,0x68,0xab,0xc6,0xca,0x5b,0x85,0xff,0x8b,0xba,0xcd,0xff,0x40,0x6e,0x51,0xba,0x72,0x0d,0x09,0xa8,0x66,},{0x5f,0xfe,0xe2,0x21,0xab,0x4d,0x0f,0xe6,0xf4,0xc9,0x34,0x6c,0x5e,0x5a,0x4b,0x8a,0x63,0x6a,0x6a,0x0b,0xad,0xce,0x96,0x67,0xbe,0x73,0x9f,0x4c,0x9e,0x67,0x33,0xc1,},{0x9b,0x86,0xa1,0x92,0xb6,0x4f,0x4f,0x04,0x4f,0xfb,0xf8,0x7b,0x41,0xc7,0xee,0x52,0xf7,0xa7,0x21,0xaa,0x32,0x0e,0x7b,0xad,0x64,0x25,0x99,0x59,0x90,0x31,0x5c,0xdd,0x50,0x2b,0xe4,0xe1,0x11,0x60,0x19,0xd1,0x31,0xa9,0x21,0x8d,0x19,0x61,0x4a,0xd9,0x55,0x43,0xb1,0x88,0x9a,0xf0,0xa9,0x7e,0xd4,0xd2,0x56,0xdc,0x33,0xd7,0x6e,0x08,},\"\\x08\\x83\\x04\\xf2\\x2e\\x1a\\x28\\x60\\x62\\xde\\xfb\\xeb\\xb1\\x82\\x7a\\x64\\xb7\\x6a\\x14\\xe8\\x70\\x15\\xe7\\xf6\\x46\\x17\\x87\\x77\\xab\\xa7\\x97\\x04\\x68\\x8d\\x7b\\xf3\\x2e\\x1e\\xfa\\xc9\\x7a\\x9f\\xc3\\x39\\x81\\x0e\\xbd\\x3d\\xf9\\x3e\\x4e\\xa0\\x24\\x68\\x69\\x53\\xed\\x91\\xfa\\x6d\\x2a\\xb6\\xe0\\x7e\\xc7\\x81\\x1a\\x6d\\x91\\xca\\x91\\xb0\\x98\\xdb\\x47\\x25\\xdf\\x65\\x84\\x6a\\x95\\xb8\\x08\\x63\\x5a\\x8d\\x0c\\x5f\\xe5\\xac\\xe2\\x5f\\x07\\x80\\xe8\\x96\\x17\\x7b\\xc1\\xbb\\xa1\\xcd\\xb4\\x44\\x92\\x51\\xc0\\x1b\\x48\\x2f\\x02\\x38\\x62\\xf8\\x8e\\x07\\x2e\\x79\\xcd\\xe5\\xdb\\xd6\\xc1\\xd9\\xad\\x9c\\x07\\xc6\\x06\\xf5\\xdf\\x85\\xa6\\xec\\xa2\\x96\\x6c\\xbf\\xe0\\xa1\\x67\\x39\\x68\\x11\\x2f\\x26\\xa3\\x17\\x05\\x3f\\x16\\x7f\\x61\\x1a\\xf2\\x97\\xef\\xa8\\x02\\xe0\\xa9\\x4b\\x3e\\x1f\\x33\\xa2\\x7b\\x73\\xe5\\x59\\x7a\\xbb\\x22\\x41\\x15\\xeb\\xe7\\x5e\\x29\\x4a\\x1b\\xcd\\xcd\\x97\\x92\\x55\\xb0\\xa8\\x02\\x65\\xc0\\x89\\xaa\\xa7\\xd6\\xbe\\xd2\\xe3\\xd0\\xc9\\x18\\xf5\\x6f\\x4a\\x55\\xf4\\x48\\xd8\\x63\\x36\\x5c\\x6c\\x58\\x46\\xfb\\x9b\\x2b\\x9b\\xb5\\x5f\\x6b\\x7c\\x6d\\xff\\x58\\x47\\xb7\\x1b\\xfd\\xd4\\xbb\\x5b\\x9b\\xb2\\xe4\\x24\\x9b\\xc0\\x24\\x3a\\x02\\xab\\x4d\\x22\\xba\\x78\\xa4\\x3d\\x18\\x21\\x95\\xae\\xd7\\x8f\\xec\\xe8\\x4c\\xb1\\xdd\\xae\\xb9\\xef\\xf6\\x81\\x56\\x04\\x5b\\x29\\x32\\xe6\\x38\\xd7\\x73\\x1d\\x0e\\x8b\\x4c\\x9c\\x8c\\x38\\x3b\\x0d\\x6d\\x39\\x2d\\x21\\xfc\\x64\\x07\\x62\\xc8\\x7d\\x36\\x92\\xb1\\x81\\x0b\\xcc\\x4a\\x42\\x39\\x2f\\xf1\\x3d\\x45\\x16\\x9e\\xcb\\xf0\\x13\\x50\\x55\\x09\\x31\\x05\\x09\\x8c\\x86\\x9b\\x68\\x88\\x7e\\x93\\x4e\\x2b\\x9d\\xa5\\x23\\x2a\\xc6\\xc9\\x37\\x38\\x00\\xf7\\x0b\\x64\\xec\\x64\\xa4\\xaa\\x0c\\xa0\\x44\\xc0\\x77\\x7c\\xa3\\xa3\\xac\\xaa\\x13\\x8c\\x14\\x24\\x96\\x72\\xa5\\x5b\\x24\\xdd\\xfe\\x4d\\xc3\\x57\\x57\\x32\\x41\\xe1\\x4a\\xd0\\xac\\x16\\x47\\x5a\\x8e\\x38\\x67\\x88\\x6d\\x41\\xee\\xa3\\x5f\\xe7\\x93\\x2b\\xa9\\xae\\xaa\\x0c\\x86\\xc9\\xeb\\x6d\\xb7\\x80\\x80\\x49\\xad\\xe7\\xb5\\xcc\\x1a\\x40\\x82\\x2c\\x66\\xde\\xa9\\x3a\\xd2\\x2d\\x44\\xb9\\xe4\\x29\\x04\\xb5\\xb8\\x36\\x84\\xae\\x29\\x31\\xfe\\x36\\xc6\\x08\\xff\\x70\\x96\\xf1\\xb0\\x9f\\x81\\x1b\\x02\\x67\\x28\\x04\\x40\\x6e\\x08\\xed\\x9e\\x77\\x45\\x67\\x6c\\xe0\\x47\\xf0\\xf7\\xf6\\x47\\x08\\xe4\\x9b\\xb7\\x87\\x54\\x72\\x0b\\x8a\\xa2\\x26\\xf5\\x55\\x6a\\xbf\\x05\\xb5\\x65\\x84\\x64\\x52\\x92\\xda\\xd0\\x8e\\x24\\x73\\x63\\x9a\\x8c\\xe5\\x47\\x5e\\x0c\\xe9\\x19\\x2f\\x8b\\xa2\\xdd\\x32\\xce\\x14\\xc9\\x19\\x75\\xab\\x60\\x2f\\x7c\\x13\\x53\\x8c\\x52\\x95\\x2d\\x03\\x96\\x15\\x8c\\x7c\\xc6\\xb9\\x42\\xbe\\x7d\\x92\\x3e\\xeb\\x52\\x3a\\x73\\xb5\\xb4\\x11\\x96\\x6d\\x14\\xac\\x96\\xe5\\xb0\\x96\\xa5\\x29\\x32\\xa4\\x16\\x29\\x2e\\xcc\\xdd\\xb9\\x10\\x71\\xc8\\x85\\x60\\xe7\\x0e\\xcd\\x4f\\xe2\\xfe\\x24\\xd5\\x23\\xfa\\xfc\\xb9\\x8e\\x40\\x21\\x50\\x2f\\x41\\x90\\xa0\\x51\\x5e\\xdc\\xb2\\x40\\x19\\xea\\xca\\x09\\xec\\x26\\x15\\xa9\\xbf\\xde\\xb6\\x0e\\xb3\\x54\\xc8\\x4a\\x1f\\x3c\\xec\\x7f\\xfd\\x7e\\x65\\xa5\\x51\\x5d\\x47\\x95\\x9a\\x4c\\x4e\\xc4\\x8d\\x80\\x21\\xb1\\x75\\x4a\\xe2\\xbf\\x84\"},\n{{0x7a,0x57,0xf2,0xdd,0xa0,0xad,0x03,0x38,0xab,0x9a,0x13,0xc9,0xa3,0x49,0x7e,0x9c,0x75,0x23,0x8c,0x15,0x31,0x58,0x97,0x89,0x22,0x7c,0xd2,0x74,0x9b,0xc6,0xe9,0x50,},{0x6f,0x73,0x8d,0xc5,0xe7,0xd9,0xe2,0x40,0xc9,0xf4,0xd0,0xc0,0x6a,0x5e,0x02,0x17,0x47,0x56,0x8b,0x69,0xa7,0x5d,0x50,0x7a,0x2e,0x0b,0xe7,0xea,0x61,0x35,0x26,0xc5,},{0x98,0x91,0x23,0x76,0x1d,0x93,0x56,0x32,0x78,0xfd,0x0a,0x78,0xae,0xd6,0x4e,0x2d,0xe6,0xf4,0xa7,0x00,0xfc,0x9a,0x70,0xd2,0x18,0x77,0x48,0xac,0x06,0xd9,0xc2,0xc3,0x77,0xd1,0x99,0x5f,0x89,0xc7,0x72,0x7f,0xe2,0xf1,0x20,0x78,0x4e,0x41,0x71,0xc4,0x2d,0x63,0x53,0xac,0x3d,0x4e,0x3f,0x62,0x0c,0x63,0x9c,0x75,0x78,0x6c,0x46,0x0a,},\"\\x8c\\x85\\x75\\xa1\\x1d\\x2f\\xf2\\xc2\\x38\\xe4\\x19\\xcc\\xb0\\x06\\x33\\xd0\\x4e\\x8b\\x8b\\xd7\\x74\\x29\\x01\\xd5\\x88\\xdd\\x6a\\x2f\\x00\\xaa\\x12\\xf0\\x8a\\xe4\\x1d\\xca\\xa9\\x33\\x8f\\x8c\\x47\\xe9\\x53\\x12\\x19\\x2c\\xf6\\xb2\\x45\\xa0\\x0c\\xe6\\x88\\xa0\\x29\\xda\\x56\\xdd\\x1b\\x1d\\xeb\\x0d\\x34\\xb5\\x41\\x4f\\xe1\\xc2\\x1d\\x6b\\x63\\xd0\\x6b\\x85\\x34\\xac\\xe8\\xe8\\x66\\xc9\\x33\\xfd\\x7c\\x5a\\x65\\xed\\xa9\\x5a\\x17\\x37\\xa9\\xec\\xdb\\x17\\x85\\x91\\x49\\xac\\x69\\x69\\x51\\xb8\\x2c\\x23\\x0e\\x82\\x75\\xe9\\x6d\\xd0\\x2f\\xd4\\x55\\xea\\x67\\x53\\x79\\xe6\\x7b\\xa6\\x34\\x84\\xb6\\x28\\x38\\x31\\xfe\\x3f\\xfe\\x52\\xd6\\xec\\x49\\xb7\\x09\\x10\\x67\\x05\\xc9\\xd1\\x9b\\x85\\x9d\\xe9\\xfd\\x20\\x08\\x87\\xcb\\x44\\xd8\\xfd\\xfe\\x69\\x61\\xfa\\x4c\\xa2\\x34\\x09\\x44\\xc7\\x64\\xc7\\x04\\x49\\x12\\x08\\x25\\x7e\\x73\\x54\\x82\\xaf\\x8c\\xb6\\x90\\x41\\xdd\\xe6\\x85\\x24\\x1d\\x3f\\xbf\\x46\\xfd\\xa0\\x57\\x24\\x8b\\x89\\x87\\xbe\\x1f\\x80\\xb5\\x4e\\xb5\\x40\\x09\\xf3\\x24\\xdc\\x45\\x0e\\x88\\x6e\\x79\\xf9\\x12\\x58\\x5b\\x91\\xc9\\xdf\\xaf\\xe9\\x01\\x22\\x62\\xc4\\x71\\x40\\x3b\\x1e\\x8b\\x5c\\x31\\xfc\\x53\\x75\\xa1\\xdd\\xf9\\x9b\\x68\\xed\\xf9\\xed\\x70\\xaf\\x85\\x94\\xf7\\xd8\\x4b\\x2c\\xc4\\x91\\x1f\\xe9\\x05\\x00\\xc6\\xee\\xbf\\xba\\xc0\\x85\\x55\\x35\\x50\\xe3\\x5b\\xd2\\xe5\\x25\\x14\\xe9\\x79\\xe7\\x24\\x1e\\x9f\\x8e\\x34\\xcd\\xf8\\x51\\x3a\\xbe\\x72\\x51\\x0d\\xff\\x3c\\xfe\\xc7\\xe2\\xbc\\x64\\x88\\x64\\x1c\\xfd\\x0a\\x65\\xae\\x0e\\x09\\xeb\\xe9\\x9b\\x15\\xb2\\x9d\\x45\\xea\\x67\\xa5\\x7a\\xad\\x55\\x4d\\x4f\\x8b\\xfc\\xe1\\x38\\x6a\\xce\\x22\\x88\\x39\\xe3\\xa8\\xa5\\x34\\x14\\x0e\\xec\\x3d\\x37\\xd5\\x1b\\xe3\\x61\\xf5\\xea\\x18\\x83\\x73\\x9f\\x56\\x61\\x5f\\x75\\xb0\\x55\\xa0\\x6a\\x91\\x47\\x1b\\xe9\\x8b\\xc9\\x45\\x37\\x83\\xc3\\x58\\x38\\x2b\\xd0\\x55\\x5a\\xe9\\xeb\\x0b\\xdc\\xd6\\x66\\x29\\xa6\\x11\\xfc\\x1a\\x11\\xc6\\x53\\xc8\\x22\\x14\\x58\\x7d\\xec\\x12\\xba\\x12\\x0e\\x25\\x13\\x07\\x0f\\xe6\\x9e\\x98\\x2f\\x7a\\x80\\xad\\x15\\x9f\\x6a\\x32\\x5d\\x97\\x7d\\x01\\xd0\\x50\\xd1\\x16\\xa6\\x2a\\x4f\\x8a\\xca\\xb6\\xc3\\xd6\\x9f\\xf6\\xc8\\x78\\x21\\x3c\\x60\\xa9\\x48\\x45\\xca\\xe1\\x06\\xde\\x6c\\x5d\\x6f\\xe2\\x50\\x8d\\x94\\x56\\x5b\\x7b\\xa7\\x5d\\x58\\xd1\\xad\\x47\\xd7\\x6a\\x20\\xde\\xfa\\x75\\x68\\xcb\\x7f\\xd6\\x6f\\x57\\xcf\\x37\\x74\\xa2\\x1d\\x3f\\xfa\\x7d\\x8a\\xa6\\xd8\\x6d\\xc2\\x84\\xb7\\x0e\\x0f\\x17\\xe7\\x63\\x0b\\xfc\\x10\\xcd\\x1f\\xc9\\xa8\\xd9\\xc5\\x92\\xd3\\x9f\\x24\\xa7\\xb5\\xc8\\xe8\\xaf\\xf3\\x53\\x57\\x7e\\x6a\\xc9\\x00\\x86\\x90\\xc7\\xa1\\x59\\xa7\\xe8\\x3b\\xe5\\xa6\\xae\\x8f\\xca\\x96\\x44\\xbd\\xdf\\xa3\\x7a\\x92\\xb0\\x70\\x55\\xf9\\xfa\\xc9\\xfa\\x97\\xfb\\x3e\\x8f\\x5f\\x4d\\x91\\x7d\\xda\\x5c\\x6d\\xc6\\xea\\x34\\xb6\\x4d\\x30\\x24\\x05\\xbc\\x38\\x06\\x2e\\x07\\xce\\x93\\xa1\\xa8\\x8a\\xed\\x5f\\xba\\xf9\\x95\\xa0\\x9b\\x45\\xb2\\x8a\\xd4\\xa6\\xb2\\x73\\xde\\xc1\\x41\\x3c\\x54\\x04\\x52\\x9d\\x82\\x5b\\x5e\\xdc\\x2e\\x27\\xa3\\x90\\xeb\\x7e\\x8c\\x2b\\x43\\x90\\x5e\\x11\\x6d\\x88\\x7a\\xb5\\xfb\\x99\\x3d\\xfe\\x15\\x0e\\xbd\\xcf\\x81\\x7a\\xe6\\x2e\\x03\"},\n{{0x32,0xef,0x6d,0x78,0x9a,0x1e,0xa3,0x93,0xf1,0xbf,0x9f,0x11,0xde,0x34,0xf5,0x7d,0x65,0x3c,0x4e,0x77,0xd5,0x1e,0x60,0x50,0xfe,0xf4,0xe8,0xd7,0xbf,0x18,0x3d,0xb5,},{0xc1,0xaa,0x18,0x1e,0x62,0x0f,0x60,0x52,0x5c,0x2b,0x17,0xda,0x8d,0x29,0x0b,0xae,0x5d,0x33,0x9e,0x17,0xea,0xbc,0xea,0xb5,0x8c,0xd7,0x6a,0xe0,0x66,0xf4,0x11,0x79,},{0x88,0xf3,0xa6,0xe0,0xbb,0xaa,0x3e,0x06,0x0b,0xc9,0xd9,0x1f,0xe2,0x96,0x8c,0x61,0x12,0x6b,0x20,0x31,0x7f,0x59,0x84,0x2e,0x4a,0xe4,0x87,0x11,0xcd,0xba,0xf6,0x2c,0x6c,0x02,0x07,0x40,0x5d,0x1c,0x48,0x49,0x95,0x02,0x71,0xf0,0xaa,0xa7,0x59,0x30,0x91,0x10,0x9e,0x47,0x8d,0x13,0xf3,0x56,0x96,0x4f,0x7d,0xba,0xb7,0x29,0xaf,0x00,},\"\\x11\\xa9\\xc3\\xc1\\xba\\x7c\\xfb\\x61\\xad\\x10\\x33\\x05\\xc2\\x58\\x86\\xde\\x9f\\x88\\x15\\xc6\\xc2\\x1f\\x17\\xa8\\x73\\x3a\\x02\\x4f\\x94\\x97\\xda\\x05\\x40\\xdb\\x36\\x03\\xa6\\x71\\xaa\\xe8\\x37\\xdb\\xbb\\xa1\\x9e\\x19\\xf8\\x2d\\xdf\\xc8\\xaf\\x85\\x59\\x80\\xa7\\x01\\x25\\xfc\\x61\\xcd\\x7f\\xfd\\x10\\x77\\x7e\\x36\\x6e\\x5e\\x95\\x69\\x92\\x7a\\xf0\\xf2\\x45\\xd4\\xf3\\x9b\\x3f\\xd0\\xf4\\x58\\x79\\xc2\\x53\\x40\\x14\\x12\\x85\\x5e\\x57\\x61\\x90\\x5e\\xd6\\xef\\x31\\x8b\\x6a\\x06\\xea\\x6e\\x9f\\x90\\x6f\\x9b\\xd0\\x16\\xbc\\xb6\\x94\\xa0\\xdf\\x65\\xa0\\x16\\xbd\\xfe\\x84\\x5a\\x09\\xf2\\x3e\\x50\\x86\\xc5\\xaa\\xf3\\x75\\xef\\xeb\\x86\\xda\\x51\\x23\\x9d\\xdc\\x35\\x0b\\xac\\x0c\\xdb\\x03\\xb8\\x74\\xdb\\x15\\x07\\xe6\\xad\\x4e\\x2c\\x9f\\x46\\x02\\x8c\\xa2\\x38\\x83\\x63\\x54\\x14\\x93\\xb6\\xcb\\x92\\xc1\\xdf\\xca\\xa3\\xef\\xd6\\x8c\\x6b\\x4e\\x91\\xef\\xb4\\x67\\x51\\xd2\\x3f\\x4c\\x48\\xa9\\x73\\xf0\\xa5\\xc7\\xc6\\xfe\\x2a\\x12\\x69\\xd2\\xa6\\x9e\\x9f\\xc4\\xab\\x8b\\xa3\\xb9\\x2f\\x79\\x64\\x49\\xba\\x3d\\xc7\\x02\\x45\\xed\\x50\\x5c\\xc0\\xee\\xee\\x16\\x36\\x64\\x7a\\x68\\xc7\\x67\\x9d\\x0b\\x6d\\x65\\x1b\\xba\\x35\\xc2\\x9b\\x81\\x47\\x8d\\x17\\xca\\x36\\x85\\x70\\x7a\\xd6\\x16\\xe6\\xe5\\x60\\x43\\x81\\xf8\\x4e\\xe5\\x2b\\x25\\xad\\x02\\xfc\\x0d\\xfb\\x85\\x43\\x2e\\xfb\\x1f\\xec\\xd0\\x90\\xc0\\x2a\\xd0\\x02\\xc1\\x85\\x7f\\xce\\xd8\\x8f\\xdf\\xb2\\xff\\x26\\xdd\\x0f\\x50\\x18\\xfb\\x47\\xd8\\x13\\x58\\x1f\\x65\\x08\\xca\\x63\\x7c\\x73\\x65\\x17\\x7c\\x51\\x3d\\x1e\\xe0\\x58\\x79\\xa6\\x5c\\x5b\\x67\\x6b\\x3a\\xa8\\x73\\xa1\\x93\\x5c\\x54\\x37\\xea\\xdc\\xb6\\x6d\\xfb\\x05\\x2a\\x5e\\x7c\\x3e\\x81\\xd4\\x4b\\x3d\\xaf\\x69\\x8f\\x42\\x24\\x4e\\xe2\\xee\\x4b\\x6e\\xd2\\xb7\\xe6\\xe5\\x6e\\x61\\xff\\x9c\\xb4\\x5e\\x71\\x9f\\xd7\\x46\\x19\\x8b\\xf2\\xa7\\xde\\x6d\\x25\\xaf\\x3b\\xc6\\xc7\\xb0\\xed\\x8a\\xbe\\x3c\\xb3\\x89\\xaf\\xd8\\x4f\\xfa\\x2a\\x23\\x0d\\x93\\xbc\\x0c\\x29\\xd5\\xa9\\x41\\x9c\\xbf\\xf1\\x1b\\x78\\x83\\x32\\x99\\x21\\x48\\x0b\\x58\\x44\\x65\\x5d\\x99\\x6c\\x7c\\xab\\x29\\xdf\\xb2\\xa3\\x92\\x7b\\x82\\xba\\x7c\\x30\\x6c\\x45\\x77\\xb6\\xf8\\xb5\\xdb\\xe2\\xaf\\xaf\\x9b\\xf1\\x4a\\x8f\\x95\\x54\\xcd\\x01\\xa6\\x9a\\x99\\x1b\\xf2\\x12\\x82\\x8d\\xe1\\xe6\\x31\\x72\\xe8\\x33\\xde\\x06\\x69\\x8c\\xdb\\x3b\\x28\\x71\\x63\\x80\\x31\\x45\\x72\\xbf\\x5b\\xcf\\xd3\\x4e\\xf5\\x2a\\x6f\\xad\\xda\\x87\\xba\\xbe\\x6b\\xac\\xdb\\x20\\xce\\x63\\xc7\\x25\\xcb\\x0f\\xf6\\x1f\\xe3\\x0c\\x1b\\x51\\xdb\\xda\\x2c\\x26\\x25\\xf9\\x9d\\xfe\\xb0\\x29\\xa3\\xe5\\x8c\\xba\\x7d\\x01\\x90\\x51\\x11\\xca\\xf4\\x2f\\x27\\x02\\x5e\\x72\\x0e\\x18\\xee\\xb0\\x7d\\xae\\x91\\x55\\xc5\\x5a\\xa3\\x00\\xe2\\x2e\\xb5\\xe9\\x4d\\xc7\\xa0\\xa8\\x4e\\xe6\\x7d\\x91\\xa9\\x60\\xae\\x08\\xca\\x63\\x2d\\xbb\\x17\\x37\\xfc\\x9a\\x43\\xdb\\xcf\\xb3\\xa8\\x79\\xeb\\x9f\\xbf\\xfd\\x72\\x99\\x33\\x8e\\x26\\x4b\\xc1\\x23\\x7a\\xb6\\xa5\\xbc\\x2a\\x26\\x3c\\xfa\\x99\\xe8\\x54\\x44\\x39\\xd9\\x63\\x31\\x63\\x9f\\xe9\\x40\\x8e\\x54\\xa3\\x50\\x61\\x0f\\xf0\\x1d\\xe3\\xf8\\x57\\x99\\xad\\xeb\\x73\\xd8\\x2b\\xe9\\x38\\x07\\x4d\\xea\\x85\\x8e\\xa6\\x36\\xb6\\x3a\\xbd\"},\n{{0x0a,0x55,0x25,0xa4,0x59,0x8f,0x60,0x99,0x2f,0x86,0xba,0x1a,0xb9,0xee,0xe6,0xe2,0x67,0x56,0x22,0xf9,0x43,0x28,0x4f,0xc0,0x55,0x3e,0x44,0x46,0xac,0x5a,0x4c,0x53,},{0xdb,0x60,0xd7,0xea,0x29,0xf8,0xd6,0x0d,0xad,0x33,0xd0,0x2e,0xc5,0xf4,0x22,0x32,0x05,0x7b,0xd1,0xc4,0xbd,0x61,0x80,0xa2,0x42,0xcb,0x7a,0xb6,0xf4,0x42,0x67,0x81,},{0x8f,0xa6,0xb0,0xae,0xac,0x71,0x13,0x2a,0xd8,0x82,0x97,0x58,0x68,0xf1,0xbd,0xb8,0xc1,0x1f,0x1a,0x6c,0x1b,0x9c,0x54,0x59,0x4e,0x0e,0x46,0x28,0x6e,0xa6,0xc9,0xa5,0xd6,0xd5,0xb0,0xea,0xea,0xca,0x9a,0xe3,0xaf,0x74,0xe7,0x23,0x26,0xb3,0xb6,0xf2,0xea,0xa8,0x93,0xc0,0xec,0x42,0xa4,0x9c,0x56,0xef,0x51,0x4f,0x75,0xc7,0x7f,0x01,},\"\\xf7\\x87\\x32\\x1b\\x42\\xc0\\x8d\\x40\\x52\\x44\\x9a\\x48\\x85\\x93\\xd8\\x85\\xb4\\xe0\\xc3\\x4a\\x5d\\x64\\x14\\x9f\\xa8\\xb9\\xc8\\x5e\\xe5\\x4b\\xcb\\xec\\xb5\\x09\\x09\\xb2\\xa8\\x6b\\x88\\x25\\x8a\\x10\\xe0\\x7e\\x8f\\x8c\\x2d\\x06\\x8a\\x89\\xfb\\x16\\x5a\\x6a\\xce\\x7e\\x64\\x99\\x8b\\xa5\\x7d\\x89\\xd9\\xbf\\x2b\\x8b\\x38\\xa1\\xf6\\xd8\\x36\\x4a\\xee\\x05\\xce\\x33\\x48\\xbe\\xd4\\x8b\\x88\\xc2\\x47\\x3b\\xf5\\xf2\\x66\\x5f\\x51\\xca\\x07\\x3a\\x53\\x05\\x35\\x8e\\xaa\\xd4\\x36\\x5d\\x58\\xb8\\x3b\\xc9\\x81\\x4e\\x25\\xf5\\x4c\\x37\\xcd\\x9b\\x68\\xa8\\x08\\xa5\\x7d\\x6c\\x2d\\x7d\\x7b\\x6d\\xeb\\x5f\\xe2\\x0f\\x4f\\x96\\xfe\\x72\\x5f\\x8d\\xe6\\x5c\\x29\\xa4\\xf1\\xcc\\xef\\xd7\\xc2\\xc6\\xf2\\xfc\\x01\\x16\\xd5\\x86\\x76\\xac\\xbc\\x58\\x69\\x1c\\x79\\xc2\\xb0\\x06\\x78\\x5a\\x09\\x75\\xa3\\x1d\\x8d\\x3c\\x94\\x91\\x61\\x59\\x6a\\x06\\x8a\\xaf\\x22\\x26\\xab\\x84\\x25\\x50\\xe9\\xc0\\xb2\\x61\\x0a\\x29\\x53\\x1d\\x1f\\x3f\\x7f\\x00\\x82\\x6b\\xb6\\xc7\\xdb\\xe0\\x4e\\x28\\xae\\x1b\\x9f\\xf6\\xf8\\x88\\xa4\\x9d\\x82\\x81\\x2f\\x45\\x2e\\x1b\\x32\\x74\\x0b\\x23\\x4d\\xdd\\x96\\x42\\xe1\\x8f\\x32\\xad\\x9a\\x9a\\xf7\\xf8\\x95\\x25\\x28\\x67\\x4a\\x2c\\xda\\x25\\xb4\\xf7\\xba\\x86\\x70\\x07\\xff\\xa7\\xf7\\x8f\\x16\\x3d\\xb8\\xf3\\x69\\x14\\x95\\x6b\\xfa\\xec\\xd5\\x0f\\x6d\\x1a\\xf4\\xee\\x13\\x32\\x75\\xa8\\xea\\xab\\x94\\xbb\\xc0\\xae\\x52\\xb6\\xd9\\xb2\\x83\\x26\\x34\\x23\\x2e\\xc0\\xe8\\xb5\\xf8\\x02\\x2d\\x3e\\xf1\\xea\\xd9\\xb7\\x9e\\xf9\\xa1\\x65\\x64\\x27\\x71\\x94\\xf2\\x38\\x0d\\x90\\x21\\xe1\\xf1\\x7b\\x18\\x4b\\x8d\\x3a\\x7a\\x34\\xd1\\x51\\x39\\xa3\\x9c\\x77\\x28\\xc2\\x2e\\x1a\\x3a\\x67\\xa2\\x7a\\x6c\\xa4\\xb8\\xa8\\xa0\\x63\\x6c\\x60\\x54\\xd0\\xf7\\x41\\xf0\\x46\\x67\\x36\\x19\\xfc\\x6b\\x07\\x0e\\x62\\xff\\x48\\x62\\xf5\\x9d\\x26\\x90\\x07\\xf3\\x43\\x13\\x39\\x63\\x7a\\x89\\xf5\\x64\\xc0\\xdb\\x3d\\x9b\\xcf\\xcd\\x19\\xfc\\x25\\x13\\x8a\\xc6\\x6d\\x47\\x4d\\x80\\xf4\\xad\\x79\\xf6\\xd1\\xe7\\x84\\x44\\x08\\xe8\\x80\\x34\\xee\\xaf\\xf4\\xa7\\x90\\x33\\x8d\\x54\\x6b\\xfc\\xd7\\x42\\x4c\\x11\\x9e\\x21\\x1f\\x36\\x3c\\xb8\\x9c\\x88\\x87\\x49\\x34\\x6a\\x89\\xd3\\x2f\\x02\\x3b\\xb6\\xb0\\x36\\x6a\\x1e\\xde\\x43\\x25\\x03\\x2a\\xa3\\x5f\\x52\\xe9\\xdf\\x93\\x8a\\x50\\x27\\xeb\\xee\\x96\\x88\\xae\\x48\\x0d\\xde\\x1a\\x9c\\x9b\\x42\\xd1\\xa9\\xc0\\x8f\\x71\\x92\\x23\\xdf\\xae\\x1c\\xfc\\xd4\\x9d\\xd1\\x05\\x3a\\xaa\\x38\\x1c\\x24\\xcc\\x9c\\x7a\\xbf\\xcf\\x8f\\x6d\\x86\\xd6\\xaf\\x72\\xee\\xf0\\x53\\x04\\x41\\x2f\\x3d\\xb2\\x58\\x5a\\xa9\\xe0\\xf3\\xa4\\xf1\\xb6\\xd7\\x10\\xd0\\x2a\\xb1\\x1d\\xb1\\xfc\\x90\\xad\\x4d\\xe2\\x5d\\x04\\x29\\x9f\\x31\\x29\\xc2\\x12\\xe9\\xcb\\x73\\xc0\\x04\\x79\\x53\\x45\\x5b\\xf9\\x8e\\xc8\\xfd\\x26\\x74\\xe4\\x7b\\x94\\x99\\x57\\xde\\xed\\xa0\\x18\\xba\\xdc\\x9f\\x2f\\x68\\xa1\\xb1\\x8e\\xf5\\xc5\\x83\\xb0\\x95\\xe0\\x8d\\xd9\\x06\\xda\\x5f\\x22\\x0d\\xa0\\x29\\xb9\\xc4\\x00\\xe3\\xca\\x91\\xc7\\xcb\\xd8\\x7f\\x34\\x30\\xc7\\x42\\x33\\x7f\\x61\\xcf\\x54\\x74\\x5b\\x06\\x22\\xbc\\xb9\\x07\\x62\\xc6\\xba\\xfe\\xf8\\x7e\\x1e\\xc8\\x88\\xc3\\x64\\xfa\\xd6\\x46\\xc3\\x3a\\xcc\\x22\\xaf\\x54\\x38\\xb8\\x4c\\xd5\"},\n{{0x2d,0x5d,0xdf,0xfa,0x2e,0x58,0xc9,0x04,0x51,0xea,0x05,0xde,0x47,0xb8,0xc4,0x92,0x34,0xe2,0x6c,0xed,0x54,0x85,0x4e,0x3a,0xce,0xf1,0x1d,0x8e,0xe6,0x85,0x2d,0xa7,},{0x7b,0xfd,0x1c,0x8a,0x4a,0x0b,0xbb,0x46,0x06,0xd2,0xe5,0xbc,0x09,0x0f,0x56,0xb2,0x0d,0x58,0xf2,0x20,0x4b,0x6a,0xed,0x83,0x1d,0x3d,0xf4,0xd4,0x06,0xb4,0x76,0x05,},{0xce,0xd9,0xd6,0x10,0x10,0x33,0x9c,0x47,0x1d,0xdf,0x9f,0xef,0xca,0xa8,0x2d,0x1e,0xab,0x3a,0x2e,0x0e,0x60,0x27,0x85,0x53,0xb4,0xdd,0x9f,0x39,0x5b,0xe5,0x81,0x49,0xc9,0x15,0x94,0xe5,0x61,0x8b,0x0b,0x10,0xbf,0x3a,0xab,0x94,0xf1,0x59,0xb5,0x30,0xf6,0x44,0x63,0xee,0xd6,0x6f,0xa2,0xac,0xe5,0x4f,0xd9,0x25,0x72,0xa0,0x6a,0x0e,},\"\\x4f\\x1c\\x5b\\x4e\\x6f\\xac\\x3b\\xaa\\x3e\\x90\\x10\\xf3\\xbf\\x29\\x3c\\x77\\x9e\\x61\\xfd\\x7b\\xbe\\x05\\xa5\\x86\\xf5\\xaa\\xf0\\x80\\x26\\x37\\x16\\x27\\xa2\\x09\\xac\\xd1\\x88\\xaf\\xb2\\xdb\\xe0\\x31\\x15\\x47\\x94\\x05\\x59\\x71\\x16\\x40\\xf7\\x8a\\xea\\x9a\\x62\\x81\\x89\\x62\\xf4\\x45\\xa8\\xe7\\xed\\x6f\\xe6\\xc5\\xf4\\x91\\x62\\xe7\\x43\\x5d\\x1b\\x62\\x5b\\x88\\xba\\x39\\xda\\xb0\\xad\\x56\\xfd\\x2c\\x0a\\xd6\\x51\\x26\\x61\\x36\\x2b\\xf7\\x8a\\xfe\\x5a\\x14\\x16\\xb6\\x47\\xf3\\xb8\\x8a\\x05\\x6c\\x9e\\x72\\x89\\xc9\\xb0\\xcc\\x3a\\xfb\\x43\\x40\\x21\\x98\\x56\\x34\\x93\\xe7\\x37\\xb1\\xda\\x05\\x25\\x06\\xb6\\xc9\\x30\\x6d\\x75\\xad\\x66\\x93\\xdb\\x6d\\x15\\x71\\xf9\\x6f\\x6f\\x52\\x99\\x0c\\x4d\\xf1\\x96\\x65\\xa6\\xbb\\x63\\x07\\x3f\\xdd\\x9f\\x55\\x59\\x68\\x96\\xa2\\xe9\\xc2\\x62\\x2f\\x2b\\x0c\\x2c\\xc9\\x9d\\xdd\\x1b\\x64\\x9f\\xb0\\x31\\x80\\x58\\xd7\\x47\\x94\\xe3\\x8e\\xc6\\x57\\xeb\\xc8\\x2a\\xbd\\x5b\\xed\\xf8\\xb3\\xf4\\xbb\\xa3\\xbb\\x6c\\x99\\x35\\xfd\\xf6\\x82\\x65\\x02\\xb7\\x69\\x04\\x6b\\x36\\xd9\\x6d\\xc6\\x95\\xd7\\xc8\\x54\\x04\\x28\\x4d\\x2a\\x2a\\xb7\\xfc\\xf3\\xb0\\x2f\\x68\\xa1\\x49\\x3d\\xd3\\x83\\xca\\x63\\x39\\xfa\\xc1\\xcd\\xe4\\x7f\\x53\\xc5\\xe0\\x26\\xd0\\x86\\x9f\\xaf\\xfe\\x40\\xab\\xdb\\x98\\x19\\x52\\x30\\xf1\\x7d\\x0c\\xfa\\xa5\\x33\\x31\\x5a\\xfd\\xbf\\xe7\\xd1\\xaf\\xc3\\xa6\\x15\\xb4\\xf7\\x50\\x90\\x23\\x3a\\x50\\x3f\\x88\\x61\\xe3\\x23\\x74\\xe1\\xea\\x95\\x57\\x67\\x42\\x31\\xd9\\xd7\\x37\\xd4\\x77\\xb3\\x3f\\xf8\\x2a\\xc0\\xb2\\xc0\\xba\\x93\\xc1\\x1f\\xb5\\x23\\xe6\\x13\\x61\\x8e\\xd3\\x70\\x52\\x4a\\x60\\xf4\\xd4\\xc8\\x36\\x94\\xc0\\x33\\x60\\x6d\\x1d\\x06\\x9d\\x54\\x4d\\xcc\\xd3\\x90\\x0c\\x37\\xa3\\xb3\\x36\\x3e\\xfb\\xcf\\x66\\x97\\xf9\\xf7\\x62\\xb3\\x3b\\x12\\x94\\x58\\x39\\x53\\xfc\\x53\\x77\\x3e\\xf5\\x67\\x26\\xee\\xb4\\x70\\xeb\\xe9\\x21\\x49\\xb7\\x36\\x48\\xa1\\x61\\x61\\xd4\\x94\\x12\\x0a\\x31\\x8b\\xfb\\x08\\x0c\\xc3\\x8e\\x49\\x96\\xf4\\xb2\\x63\\xff\\xe7\\x8c\\x78\\x77\\xfe\\x13\\xc2\\xfc\\x55\\x21\\x9f\\x44\\x26\\x0e\\x8f\\x25\\x3b\\xdd\\x37\\x9d\\x87\\x0e\\x6c\\x91\\x04\\x8b\\x1d\\x8d\\x4e\\x88\\xb8\\x82\\x18\\xb2\\xb0\\x49\\xfe\\xf5\\x3b\\x2a\\xe1\\xf8\\xc9\\x21\\xed\\x2b\\xcb\\x43\\x46\\x69\\xe3\\x97\\x5d\\xcc\\x3f\\xe4\\x52\\x0c\\xa8\\x02\\x48\\x42\\xf7\\xff\\x2b\\xa1\\xe2\\x2c\\xfe\\xb5\\xd4\\xc9\\xe4\\x35\\xea\\xda\\x60\\x1f\\xf1\\x83\\xb2\\x63\\x64\\xee\\xe1\\xfa\\xa5\\x9d\\x19\\xe6\\xaa\\x4f\\x09\\x75\\x23\\x84\\x96\\xa7\\x09\\xe4\\x6b\\xf6\\x83\\x36\\xb0\\x68\\xbd\\x80\\xb3\\x46\\xf1\\x1f\\xaa\\x38\\x17\\xa0\\x7d\\x1c\\xbd\\x84\\x38\\x2b\\x21\\x02\\x98\\x6f\\x29\\x5a\\x13\\x98\\x07\\x7b\\xa2\\x91\\xd6\\xb5\\xf5\\xbd\\x86\\x0e\\xc6\\x17\\x72\\x73\\x46\\x8f\\x0e\\xe0\\xf2\\x59\\x1b\\x57\\x5c\\x43\\x66\\xe1\\x89\\xb2\\x24\\xe9\\xff\\xa3\\x5b\\xc7\\x8a\\x4a\\xa8\\xc0\\x69\\x54\\xfe\\x33\\xd0\\x80\\xff\\xc0\\xb2\\x3e\\x20\\x9f\\xd0\\xe7\\x94\\x21\\xf1\\xbd\\xe8\\x18\\xa8\\x68\\x90\\xcf\\x17\\x22\\x36\\xdb\\x21\\x16\\x57\\xd1\\x00\\x31\\x19\\xfe\\x91\\xd4\\xe2\\x7c\\x52\\x4c\\xcc\\x11\\xfa\\xde\\x0a\\x25\\xf5\\x7a\\x7a\\x1d\\x67\\x7e\\x1d\\xa0\\xb9\\xc0\\x43\\xd0\\x2f\\xca\\x38\"},\n{{0x4d,0xf5,0xe1,0x1d,0xec,0x80,0xec,0xd8,0x82,0x83,0x75,0x54,0xfa,0x31,0x35,0xb9,0xd5,0x02,0x9d,0xf4,0x20,0x27,0xaa,0x3b,0x3c,0x92,0x92,0x46,0x32,0x9f,0xee,0x96,},{0xef,0xd9,0x28,0x89,0x8f,0xa1,0x44,0xc2,0xd1,0xc8,0x33,0x4f,0xa2,0xe6,0xb5,0xb6,0xa3,0x25,0xa7,0x10,0x2a,0x2c,0x34,0x4a,0x14,0x55,0x41,0xee,0x9a,0x6c,0x04,0x6d,},{0x62,0x54,0x5e,0x6c,0x07,0x80,0x1f,0xde,0x95,0xb4,0x61,0xe2,0xe7,0x53,0xc4,0xb6,0xc8,0x4c,0x25,0x12,0x4e,0xb3,0x30,0xa2,0x72,0x59,0x89,0xd5,0xe3,0x40,0xdc,0xef,0x0c,0x74,0x56,0xd4,0xc7,0xc6,0xa1,0x78,0xa2,0x21,0xb6,0x32,0x83,0x48,0x25,0x3d,0xb7,0x87,0xa9,0xe5,0x51,0x0a,0xb9,0xcc,0x27,0x85,0x15,0xae,0x3e,0x58,0xfb,0x01,},\"\\xfb\\xd6\\xf3\\x71\\xb4\\xc8\\xb1\\x52\\xc9\\xce\\x0c\\x63\\x96\\xa7\\x7c\\x0f\\xe4\\x80\\xbc\\x02\\x00\\x7f\\x33\\x6a\\xc5\\x8f\\xd4\\xad\\xdd\\xa9\\xd6\\x98\\x55\\xac\\x9e\\x93\\xa4\\x5d\\x3e\\x35\\x0f\\x41\\xff\\x50\\x2a\\xa1\\xd8\\xfe\\x15\\x9c\\xe8\\x9b\\x06\\x48\\x02\\xa0\\xa1\\x89\\x0f\\x6a\\x40\\xa7\\xef\\x57\\xc6\\xe5\\xe5\\xed\\x04\\x02\\x80\\xdf\\x07\\xe7\\xf4\\x8f\\xe8\\x19\\xbe\\x63\\x17\\x67\\x10\\x75\\x7c\\xb6\\xe4\\x40\\xb4\\xf7\\x8b\\x57\\x59\\xdc\\xe0\\x28\\xbf\\x58\\x5b\\x3c\\x3f\\xec\\xa1\\xcf\\x59\\x81\\xda\\xda\\xdf\\xd2\\x7e\\xa1\\x24\\xaf\\x45\\xef\\x63\\x85\\x42\\xa8\\x61\\x7f\\xf4\\x9f\\x94\\x70\\xac\\x22\\x85\\x94\\x3c\\x7c\\x3b\\x11\\x63\\xb9\\x03\\x95\\x5a\\xb9\\x9b\\x6e\\xab\\x17\\xf4\\xd4\\x9f\\xfa\\x87\\x20\\x7a\\xbb\\xfc\\x11\\x1c\\x4b\\x91\\xf5\\x41\\x3d\\xfc\\x9b\\xea\\x31\\x84\\x3d\\x11\\x5d\\xde\\xb1\\xda\\x40\\xb4\\x5f\\x58\\xf4\\x7c\\x41\\x7b\\x5e\\x77\\xd5\\x81\\x89\\x34\\xe7\\x30\\xeb\\xa9\\xc4\\x55\\x7b\\xbf\\x48\\xcb\\x7f\\xd4\\xe6\\x64\\x55\\x8a\\xf4\\xfb\\x44\\xee\\x3d\\x94\\xc1\\x6e\\x88\\x36\\x31\\xf3\\x84\\x76\\xf4\\x83\\x7d\\xb9\\x4d\\x54\\x12\\x2f\\xa1\\x34\\xca\\x51\\xa5\\x25\\xaa\\xd5\\xe2\\x4b\\x76\\x01\\x8f\\xee\\x9a\\x2e\\x8f\\x60\\xe2\\xbb\\x48\\xd2\\x4a\\xb8\\xb1\\x46\\xf8\\x4f\\xfa\\x98\\x20\\x12\\x0e\\x7c\\x50\\xd4\\x5c\\x0c\\xfb\\xe3\\x5c\\x8c\\x31\\x41\\x9b\\x07\\x8e\\x90\\x71\\x2c\\xfe\\x93\\x4c\\x3b\\xe3\\xa9\\x4f\\xf2\\x15\\x88\\x73\\xae\\xfe\\x34\\xdc\\x6e\\x36\\x90\\x2b\\x16\\x75\\xe1\\xa4\\x7c\\xb6\\x08\\xdf\\xe9\\x60\\xfb\\x4d\\xa8\\xd2\\xa8\\x49\\x0c\\xc3\\x8e\\xba\\xdc\\x73\\xa1\\x00\\x3c\\x49\\x41\\xfd\\xa8\\xfa\\xe9\\x44\\xa1\\xde\\x8e\\x3b\\x10\\xef\\x6d\\x9e\\x67\\xce\\xec\\x74\\x59\\x77\\xd3\\x33\\xac\\x9e\\x71\\x21\\x41\\x21\\xed\\xe8\\x89\\x22\\x95\\xe2\\x77\\x99\\xf2\\x06\\x67\\x5a\\x9d\\x54\\xac\\x12\\x15\\x9d\\x3a\\x1f\\x95\\x4f\\xd0\\xee\\xff\\xbd\\x30\\xa3\\x19\\x04\\xfb\\x2e\\xee\\x77\\xa8\\xaa\\x9d\\xc4\\xcc\\xbb\\xe2\\x85\\x10\\x96\\x14\\x6a\\x4c\\xe0\\xe8\\x1f\\xb9\\xc6\\x24\\x98\\xdb\\xd8\\x3b\\xf8\\x3b\\x55\\x02\\x9a\\x5e\\x90\\x00\\x86\\xb9\\x53\\x1c\\xe3\\x24\\x7a\\x98\\xf8\\x65\\x4e\\xfd\\x8f\\xe7\\xa8\\x36\\x43\\x1f\\x75\\xda\\xf0\\x86\\x8f\\x01\\x08\\x32\\x6e\\x23\\x02\\x6d\\x2d\\xb4\\xa7\\x21\\x24\\xec\\x4e\\x39\\xd4\\xbb\\xf3\\xd8\\x46\\xc9\\xf5\\x1c\\xa3\\xcc\\x31\\xeb\\x1d\\x02\\xc2\\xba\\x32\\x1e\\x46\\x19\\xf2\\xb6\\x59\\xc0\\xbf\\x0f\\xe5\\xc1\\x9b\\x21\\x3f\\x3c\\x79\\x12\\x4f\\x36\\x43\\xf7\\x4d\\xd0\\xff\\x9c\\xe5\\xd2\\x77\\x27\\xbe\\x6c\\x69\\x58\\x15\\x9c\\x16\\x44\\x04\\xf4\\x33\\x01\\xfe\\x17\\x42\\xe2\\x79\\xde\\x9e\\xfd\\x44\\x1e\\x73\\xe4\\xea\\x7a\\x84\\x25\\x87\\xa7\\x9d\\x11\\x5d\\x36\\xec\\xa9\\xc0\\x3c\\x90\\xff\\x0d\\x14\\x74\\x74\\x10\\x9f\\xc2\\x0a\\x91\\xd7\\xb3\\xcc\\x22\\xeb\\xcb\\xb8\\xc7\\xf7\\x1b\\xd6\\x1e\\x8c\\xae\\x47\\xc5\\x05\\x0c\\xec\\x1d\\x48\\x49\\xa1\\xd4\\xa8\\xe7\\xa6\\xf8\\x45\\x54\\x84\\x37\\x70\\x6c\\x25\\x33\\x1c\\x9e\\x57\\xc2\\xcc\\x6d\\xa1\\x17\\xf2\\xe5\\xa0\\xf4\\xb3\\x68\\xc4\\xcb\\x20\\x62\\x65\\xc4\\x17\\x8e\\x06\\x55\\xff\\x67\\x5f\\xfc\\x1d\\x4c\\x58\\xec\\xeb\\x9e\\xdb\\x4d\\xa3\\xad\\x2c\\x5f\\x62\\xcd\\x13\\xab\\x48\"},\n{{0x85,0xd3,0x23,0x30,0xe2,0xe0,0x73,0xa4,0x60,0x30,0xca,0x0e,0xe2,0xdf,0x2f,0x8e,0xb8,0x74,0xa9,0xfd,0xdf,0x56,0x24,0xc8,0x03,0x17,0x75,0x11,0x1f,0x11,0xee,0xa2,},{0x6e,0xa7,0xde,0x2e,0xd5,0xea,0x5c,0xdf,0x50,0xbf,0xff,0xee,0x77,0xf7,0xbd,0x2f,0xcc,0x21,0xd4,0x86,0x66,0xbb,0x1f,0x48,0x90,0xc7,0x6a,0x69,0xcc,0x7b,0xa4,0xe8,},{0x41,0x43,0x63,0xfe,0xad,0x6e,0x59,0xa3,0x43,0x8c,0xe5,0xa3,0xa2,0x77,0xd6,0x2b,0xdd,0x00,0xfa,0x2e,0xfa,0xc6,0x46,0x3d,0xd1,0x3f,0xcd,0xde,0xd9,0x3a,0x7f,0x10,0x8a,0xe1,0xf5,0x28,0xff,0xc8,0xff,0x4e,0xca,0x33,0x1d,0xab,0x91,0xae,0x5b,0x14,0x16,0xe2,0xdd,0xb7,0x3b,0x6d,0xaf,0x85,0x3b,0x03,0xc8,0x1e,0x99,0x36,0x56,0x0a,},\"\\xae\\x61\\x07\\xf3\\x8f\\xf9\\x4e\\xd0\\x32\\x79\\x03\\xcb\\xaf\\x6c\\x3e\\x3a\\x34\\x98\\xc4\\x7a\\xbb\\x29\\x89\\xa8\\xb3\\x7b\\x3a\\x19\\xdf\\x88\\xc6\\xde\\x79\\x0a\\xcc\\xb4\\xb7\\x25\\x81\\x77\\xb9\\x15\\x1d\\x1f\\xe0\\x40\\x63\\x57\\x7d\\x3c\\x3a\\xcd\\xb4\\xc9\\x29\\x96\\x8a\\xfd\\xad\\x6f\\x25\\x2a\\x67\\xed\\x4c\\xa8\\x9d\\x06\\x0f\\x1a\\x46\\x53\\x98\\x3f\\x7a\\xb5\\x8d\\xdb\\x93\\xe2\\x87\\x8f\\xba\\xb0\\x63\\x7d\\xbb\\xeb\\x95\\xd2\\x5c\\x59\\x86\\x83\\x9d\\xe2\\x74\\x8d\\x9f\\x34\\x02\\x7a\\xee\\xbf\\x1d\\x9e\\xb9\\x36\\xcb\\x67\\x70\\xe0\\x8d\\x45\\xb8\\x09\\x5b\\xac\\x9c\\xbb\\x71\\xdb\\x14\\xe8\\xa3\\x42\\x22\\xb1\\xf2\\x23\\x7b\\x9f\\x0b\\xc9\\x76\\x6a\\x23\\x1a\\x6d\\x10\\x27\\x99\\xf7\\xc0\\x81\\xd5\\x00\\xfb\\xea\\xde\\x60\\x3c\\xdc\\xdd\\x7d\\x5b\\x96\\x5f\\xba\\xce\\x4b\\xe5\\xc2\\xcd\\x93\\x2d\\xcf\\x5f\\x6e\\xd3\\x17\\x22\\xf4\\x1d\\x5a\\x36\\x3b\\x34\\xba\\xbf\\x3f\\x63\\x6f\\xb3\\x03\\x82\\x4a\\xa7\\x01\\xdf\\xe1\\xd3\\xe4\\x12\\x63\\x07\\x8c\\x1e\\xbb\\xdc\\xb1\\xf7\\x3f\\x12\\x45\\xb8\\x3e\\x3f\\xa7\\x0a\\xb8\\xe3\\xf1\\x41\\x3e\\x6b\\x06\\xbd\\xae\\x02\\x2b\\x71\\x4d\\x60\\xa4\\x01\\xd5\\x74\\x80\\xdc\\x64\\xe7\\xaa\\xc6\\xd3\\xde\\x85\\xfc\\x94\\xd8\\x53\\xca\\x13\\xb7\\xe6\\x74\\x15\\x57\\x9d\\x5c\\x67\\x21\\x23\\xa5\\xaf\\x19\\x4b\\xee\\x14\\xae\\x35\\xdc\\x27\\x24\\xff\\x20\\x9f\\x11\\x66\\x63\\x86\\x61\\xf8\\x81\\xb1\\x19\\x4a\\xa4\\xe3\\x1b\\x42\\xa5\\x27\\x96\\x47\\x81\\x59\\x15\\x04\\xba\\x76\\x10\\x3f\\x97\\xb7\\xf5\\x52\\x03\\x15\\x47\\x3e\\xc9\\x4b\\xb0\\x17\\xa1\\x66\\x67\\xb2\\x2a\\x85\\x76\\xa7\\xcc\\x2a\\xc0\\xb7\\x75\\x63\\x03\\xc7\\x56\\xf0\\xdd\\xaa\\xe9\\xd0\\x18\\x9e\\x6c\\x8d\\xe3\\x49\\xf9\\x19\\x57\\xc7\\x2a\\x52\\x9e\\x9f\\x7e\\x9b\\x94\\x56\\x52\\x48\\x40\\xba\\x02\\x34\\x4f\\x55\\xad\\x3c\\x11\\xa0\\xb2\\x59\\x90\\x14\\x39\\xf2\\x65\\x5a\\xb9\\xf8\\xc6\\xc8\\xe8\\xe9\\x60\\xc0\\x57\\xd9\\xc7\\xda\\xfe\\x42\\x5c\\x75\\xd4\\xa3\\x3b\\x80\\x1d\\x45\\x47\\xcd\\x05\\x51\\xa6\\x80\\x2a\\x80\\x05\\xdd\\x72\\x42\\x47\\x64\\xdc\\xf5\\x7e\\x4a\\xa2\\x22\\x90\\xea\\x4f\\x5b\\xaa\\xc5\\x1d\\x79\\x39\\xc0\\x53\\x42\\x88\\x2e\\xe1\\x43\\x80\\xef\\x2d\\x47\\x04\\xb4\\x19\\x49\\xb2\\x28\\x2a\\x1e\\x1a\\x3f\\xa7\\xdd\\xea\\x9f\\xe8\\x3b\\x9f\\xc5\\x1d\\x4e\\xef\\xa2\\xeb\\xac\\x72\\x2e\\x4c\\x0a\\x7c\\x59\\x9b\\x69\\x25\\xf0\\x1b\\x8a\\x20\\x66\\xdc\\x0c\\x26\\xf9\\x21\\x96\\xf4\\xf5\\x03\\xe8\\x87\\xc1\\xe6\\xef\\xb0\\x93\\xf1\\x53\\x13\\x87\\xbd\\x88\\xc6\\x91\\x99\\x7b\\x9b\\x89\\xe3\\xcd\\xf7\\xda\\x12\\xd3\\x73\\x41\\x83\\xa4\\xb6\\x12\\x6b\\xe9\\xe0\\x77\\x47\\x04\\xb5\\x29\\x65\\x9b\\x55\\x48\\xf1\\xb8\\x75\\x12\\xcc\\x18\\x78\\xca\\x4e\\xf5\\x59\\x90\\xb4\\x83\\xc9\\xaf\\x6a\\xa9\\x76\\x35\\xf4\\xf0\\x79\\x49\\x72\\x70\\x65\\xab\\xf2\\x1e\\x21\\xe3\\x29\\x90\\xb1\\xa7\\xd0\\x7d\\x74\\xe0\\x2d\\x9b\\x07\\xec\\x63\\x99\\x31\\xbf\\x9e\\x2c\\xa3\\x94\\x1f\\x2b\\xa6\\xb5\\xef\\x14\\xdc\\xc2\\xa2\\x47\\xd2\\x11\\x7e\\x9c\\xb4\\x1e\\xfa\\x3f\\xcc\\xa2\\x47\\x16\\x64\\x14\\x52\\xbe\\xed\\x2f\\x92\\x65\\x7c\\x2f\\xb7\\x31\\xf0\\xb9\\x4e\\x8c\\x89\\x2a\\x81\\xbb\\xa9\\x1f\\x63\\x9d\\xf4\\x37\\x96\\xac\\xd3\\x01\\x3a\\xc0\\x44\\xf6\\x08\"},\n{{0x66,0x59,0x0d,0x36,0x99,0x84,0xc6,0xf5,0xad,0x3a,0x89,0xc7,0x8d,0xdf,0xca,0x10,0xa0,0xa7,0x65,0x79,0x95,0xdc,0x01,0x88,0xb6,0xb5,0x7a,0xc3,0x16,0x47,0x31,0xa4,},{0x98,0x87,0x3a,0xb1,0x33,0x46,0xee,0x48,0x67,0x7c,0x4f,0x86,0x12,0xdb,0x31,0xeb,0xd1,0x3d,0xb5,0x8b,0x2b,0x03,0x4f,0xd1,0x55,0xaf,0xa8,0x72,0x0f,0x4e,0x93,0xe8,},{0xf0,0xdb,0x63,0xa1,0xbc,0x76,0x24,0x16,0x1c,0xa0,0x06,0x38,0x53,0xb2,0xde,0xe4,0x5f,0xcc,0xd2,0x24,0x71,0xe0,0x12,0x36,0x6f,0x86,0x8a,0x4a,0x9c,0x74,0x65,0x4e,0x13,0xf1,0xa3,0x15,0xad,0x83,0x91,0x6e,0xbf,0xb8,0xdc,0x31,0xa4,0x20,0xf8,0x3c,0xf6,0x45,0xc4,0xc9,0xd1,0x6b,0xb4,0xd5,0xd9,0x9d,0x23,0xc7,0xb4,0x3e,0x23,0x00,},\"\\x2e\\xc1\\xc6\\xb0\\x82\\x97\\x37\\x83\\x2c\\x9c\\x79\\x8a\\x92\\xeb\\x49\\x0b\\x23\\xd3\\x34\\xc3\\xbb\\xe6\\x27\\xcb\\x58\\x2d\\x17\\xa9\\xe4\\x29\\x60\\xef\\xcd\\xc7\\xd3\\x47\\x50\\xe0\\xb4\\xaa\\x86\\x4c\\x20\\x4f\\xb8\\xd6\\x2b\\x47\\x99\\x2e\\x91\\xdb\\xfc\\xfd\\x69\\xf5\\x1d\\x93\\x7d\\xc0\\x6c\\x48\\xc0\\xad\\x43\\xe8\\x59\\x83\\x71\\xcd\\x0e\\x3b\\xbc\\xe4\\x16\\xbf\\xd4\\x4b\\x09\\x44\\xb9\\x93\\xaa\\x29\\x93\\xfd\\xea\\x48\\x71\\x34\\xcd\\xe4\\x22\\x77\\x72\\x3e\\x06\\x83\\xec\\x98\\xe6\\x95\\x95\\xe9\\xb7\\xb1\\x4c\\x8c\\xf9\\x61\\x7a\\x1e\\x30\\xdd\\xb8\\x06\\x0e\\xac\\xba\\x48\\xd8\\x82\\x53\\xb1\\x65\\x33\\x61\\x08\\xde\\x0c\\xb0\\x2f\\xf2\\x0f\\x54\\x24\\xb5\\x67\\x83\\x08\\x69\\xc9\\xb4\\x32\\x9c\\x99\\x45\\xf0\\xbf\\x2f\\x3c\\x7a\\xcd\\x1e\\x77\\x43\\x58\\x93\\x0c\\xd8\\x90\\xfd\\x9c\\xb8\\x64\\xd9\\x50\\x93\\x5a\\xd8\\xa4\\xa3\\xbe\\xcc\\xae\\x8f\\x83\\x3f\\x63\\x56\\x19\\x13\\x71\\xc3\\x26\\x33\\xdc\\xf8\\x82\\x70\\x9b\\x0d\\x98\\xbd\\x80\\x7b\\x38\\x3a\\xed\\x8d\\x7b\\xb0\\x97\\xb6\\xe2\\x62\\xef\\x70\\x0c\\x9d\\x76\\x8f\\x4b\\x56\\x90\\xe3\\xa1\\xa8\\xf2\\x17\\x55\\xd6\\x58\\xdb\\x2d\\x1b\\xfd\\x2f\\x70\\x71\\xe0\\xca\\xec\\x7c\\x2c\\x53\\x81\\xc5\\xef\\x5c\\x2c\\x22\\x81\\xc6\\xbc\\xed\\xc8\\x67\\x39\\x0b\\x90\\xf3\\xb2\\x7b\\x0f\\x0f\\x64\\xa3\\x36\\x58\\x57\\x8a\\x5c\\x0d\\x66\\xe2\\x11\\xe6\\xff\\xf6\\xe8\\x64\\x88\\xac\\xf8\\x2b\\xc0\\xf5\\xe2\\x66\\x4b\\x83\\x69\\x90\\x46\\x03\\x7c\\x0d\\x33\\xd3\\x40\\xff\\x98\\xed\\x62\\x63\\x35\\x4c\\x24\\x27\\x31\\x36\\xff\\x0e\\x4f\\x0f\\x23\\x3a\\x6c\\x82\\x54\\xfc\\x0c\\x90\\x76\\x43\\x30\\xe3\\xb1\\x05\\x7b\\x1e\\x66\\x6d\\x5e\\xcd\\x5a\\x2e\\xfe\\xaa\\x6a\\x10\\x5b\\xfc\\x85\\x84\\x31\\xb8\\x8e\\xd7\\xfe\\x55\\x1e\\xb3\\x2a\\xc0\\xaf\\x27\\xc6\\x6a\\x98\\x03\\xa3\\xbc\\xf8\\x76\\x34\\xc6\\x6c\\x70\\x66\\xdd\\x01\\x97\\xa3\\xcb\\xd2\\xd6\\xf4\\xe6\\x5c\\xfd\\xb8\\xf3\\xda\\xf9\\xf3\\xca\\x5c\\x4f\\x4e\\x0a\\xdd\\x45\\xf5\\x54\\x1a\\xa1\\x8d\\x04\\x1f\\x70\\x6e\\x4f\\xa8\\x7c\\x34\\xe9\\xa2\\x23\\xd8\\x85\\x72\\xeb\\x50\\x08\\x3e\\xe8\\xc7\\xc4\\x75\\xdf\\x56\\x8b\\xc7\\x3b\\xd0\\x8c\\x0f\\x0d\\xea\\xa3\\x74\\xaf\\xb1\\xc1\\x78\\xd0\\xdd\\xdb\\x23\\x6e\\x15\\xa8\\xbc\\x23\\x85\\xed\\x3f\\x52\\xb8\\x76\\x1e\\x63\\x78\\x87\\x40\\x7a\\x20\\xae\\xc3\\xe9\\x9e\\xc8\\x30\\xda\\xe3\\x16\\x7e\\xf0\\xcd\\xb3\\xf3\\xff\\xd2\\x00\\xd8\\x3b\\x75\\xb7\\x49\\x69\\x0b\\x9e\\x25\\xe2\\x17\\x1d\\x07\\x2c\\xa5\\x6f\\x71\\xba\\xec\\xd2\\x1f\\x7d\\x45\\xa1\\x2c\\x91\\xb2\\xc0\\xfb\\x3f\\xea\\x3b\\x15\\x8e\\x54\\x64\\x82\\x84\\xbb\\x00\\x95\\xb3\\x62\\x44\\xb0\\xb1\\x21\\xf9\\xf1\\x38\\x4c\\xe9\\x00\\x43\\x65\\xe7\\x77\\x2f\\xa3\\x08\\x28\\x25\\x0f\\x51\\x98\\x5f\\x1b\\x17\\xb2\\xd2\\xf8\\x0a\\x33\\xe8\\xfc\\x6d\\x85\\x65\\xea\\x15\\xcd\\xaa\\xcd\\x42\\xa8\\x7b\\xd7\\xc9\\x40\\x8b\\x1f\\xe1\\xc7\\x70\\x66\\x5b\\xdd\\xed\\x75\\x4b\\xc2\\xff\\x2e\\xf9\\x1b\\x97\\x3a\\x86\\xb9\\x9f\\x10\\x59\\xc6\\xf2\\x27\\x24\\x6a\\x69\\x8b\\x38\\x54\\x15\\x09\\xdd\\x54\\x49\\xfc\\xe6\\x0d\\x38\\x62\\x24\\x18\\x3b\\x7d\\xce\\x1b\\x38\\x84\\xf7\\xba\\xe1\\xc2\\xe4\\xeb\\x59\\x45\\x10\\xb5\\xca\\x58\\x52\\x79\\xd9\\x04\\x1d\\xf8\\x81\\x7b\\x06\\x19\"},\n{{0x41,0xcf,0x07,0x1f,0x48,0x42,0xec,0xd4,0x94,0x19,0x1b,0x8c,0xf2,0x8c,0xc0,0x92,0x31,0x85,0xef,0x1b,0x07,0x45,0x8a,0x79,0xa5,0x9a,0x29,0x6d,0x35,0x49,0x82,0x2e,},{0x6d,0xc8,0xe4,0x46,0xdb,0x1d,0xa3,0x53,0xb5,0x8d,0x0c,0x45,0xd8,0xb4,0xd8,0x16,0xba,0x59,0xe2,0x5b,0xb6,0x80,0x71,0x2d,0x62,0xd6,0xd3,0xdb,0xf7,0x8d,0x06,0x98,},{0x41,0x05,0x2b,0xc4,0x17,0xb2,0x4d,0xc4,0x83,0x83,0x96,0x6a,0xf0,0x14,0x3f,0x9c,0x0b,0xa8,0x5b,0xbe,0xfb,0xda,0xf7,0x91,0xb1,0x6a,0x4d,0xad,0x1f,0x57,0x0e,0xb8,0x07,0x03,0xc0,0xa2,0xcd,0xeb,0x2f,0x7a,0xd6,0xdc,0xd3,0xfa,0x7b,0xdb,0x5c,0x22,0x5e,0x86,0x9c,0xd8,0xfb,0x27,0x8d,0xff,0x06,0x67,0xd3,0x8a,0xcc,0xf3,0xdb,0x08,},\"\\xda\\xeb\\x5f\\x0e\\x84\\xf1\\x59\\x0b\\xca\\x2b\\x9d\\x97\\x19\\xef\\x5d\\x1c\\xfa\\x79\\xe0\\x58\\x34\\x46\\x33\\x2f\\x18\\xe9\\xe4\\xfe\\xb0\\xb1\\xf1\\x53\\x40\\x29\\x7a\\xc9\\xad\\x67\\x24\\xc8\\x5b\\xb1\\x65\\x58\\xea\\x54\\xeb\\x5d\\x70\\x2a\\x47\\x24\\x8b\\xad\\xc6\\x25\\x2a\\x80\\x43\\x71\\xb7\\x4c\\xfe\\x10\\x62\\xd1\\xdb\\xa1\\xec\\x68\\xfd\\x1d\\x4d\\xd0\\x29\\xcb\\x55\\x03\\x4b\\xbf\\x61\\x06\\x82\\x51\\xef\\xf3\\x98\\x36\\x36\\xf6\\xde\\xbd\\x57\\x27\\xbe\\x91\\x99\\x3b\\x3e\\x4d\\x0a\\xbc\\x96\\xec\\x19\\x64\\x21\\xa4\\x7b\\x78\\x93\\xf8\\x39\\x86\\xd6\\xc0\\x32\\x3f\\x0d\\x19\\xaa\\xf2\\xcd\\xe9\\xd3\\x56\\x5c\\x10\\x4c\\x9d\\x31\\x76\\xec\\xb5\\xed\\x5e\\x17\\x3f\\xee\\x52\\xb5\\xa0\\xc4\\x2b\\x6a\\xb2\\xfc\\xb1\\xcc\\xba\\x96\\x49\\xc2\\xc6\\x7c\\x52\\x0e\\x9b\\x96\\xce\\xa6\\x93\\xdf\\x3e\\x58\\x60\\x9a\\xd6\\xa0\\xbd\\x52\\x2e\\xfa\\xaf\\x03\\x85\\x8d\\x24\\x5d\\xd0\\xa3\\x8f\\x84\\xa2\\xfb\\x10\\x20\\xf4\\xdd\\x97\\xc3\\xae\\xef\\x0e\\x24\\x47\\x7d\\x30\\xd2\\x56\\x70\\x1e\\x90\\x0b\\xef\\x26\\xa8\\xa6\\x26\\x9a\\xb6\\x60\\xd7\\x42\\x93\\xa2\\xbf\\x1d\\x20\\xc2\\xcf\\xae\\xbb\\x7c\\x28\\x20\\xf5\\xf5\\xb0\\x74\\x53\\xbb\\x69\\xee\\x76\\x9b\\x52\\x39\\x15\\x39\\xf0\\xc6\\x06\\xd2\\x2e\\xb3\\x92\\x3e\\xe6\\xf5\\xa1\\xd4\\x60\\x50\\xaf\\x90\\xf0\\x11\\xf8\\x51\\xac\\xe7\\x63\\x27\\xd3\\xd1\\x8c\\x48\\x17\\x0a\\x9a\\x25\\xb0\\x4b\\x77\\x0f\\xd9\\x38\\xef\\x8a\\x30\\xb7\\xbd\\x03\\x39\\x1d\\xd3\\x6c\\x51\\x6b\\x62\\xf0\\xcb\\x78\\x67\\x07\\x40\\xe0\\x0e\\x69\\x59\\x5c\\x41\\x8d\\x96\\x72\\x53\\x82\\x0b\\x75\\x4c\\x4f\\xd6\\x66\\xe3\\xcc\\xe1\\x6e\\xe0\\xc9\\x41\\x83\\xbb\\xea\\x70\\x6f\\xe2\\x98\\xe1\\xc9\\x9d\\xdb\\x82\\x12\\x17\\xed\\x90\\x08\\xcc\\x8e\\x8b\\x83\\xbc\\x8b\\x81\\x99\\x15\\xb0\\x7b\\x14\\x6f\\xe7\\x45\\x02\\x4a\\xc3\\xc4\\x61\\x16\\xcb\\x4c\\xce\\x5e\\x32\\xec\\x5d\\x75\\x24\\xa2\\x38\\x8d\\x9f\\xe2\\x97\\xeb\\x02\\x81\\x1a\\xf4\\x54\\x6f\\xcd\\x58\\x60\\xe1\\x4c\\x0d\\x13\\xf0\\x3d\\xd7\\x5a\\x42\\x49\\x61\\x59\\x00\\x07\\x8a\\x3c\\x35\\x8c\\x53\\x42\\x96\\x2b\\xc1\\xbe\\xac\\xf6\\x8c\\x24\\x68\\x21\\xa4\\x59\\xab\\x53\\x21\\xec\\x9f\\x57\\x4f\\x49\\xd1\\x03\\x89\\xf4\\x0f\\x14\\xdd\\xfc\\x85\\x13\\xff\\xe3\\xde\\xaa\\x73\\x36\\x03\\x5a\\x67\\x5f\\xa5\\x85\\x8b\\x49\\x0c\\x5d\\x24\\x77\\x80\\x06\\x4a\\xdb\\xaf\\x75\\xa7\\x63\\x35\\xee\\xc9\\xab\\x91\\x87\\x71\\xb0\\xb1\\xdf\\x51\\x47\\x64\\x2a\\xef\\x4a\\x16\\x6a\\xb1\\x72\\xed\\x60\\x1f\\xed\\x21\\x0f\\x6c\\x0c\\xff\\xd9\\x18\\x69\\xf7\\x49\\x0b\\x57\\xe7\\xc6\\x52\\x41\\x86\\x3e\\x7e\\x8c\\x0a\\x26\\xeb\\xa6\\x3b\\x53\\x42\\xd0\\xfd\\x82\\x14\\xac\\x73\\x1e\\x1c\\x43\\x8d\\x01\\x77\\x11\\x5f\\x6a\\x19\\xe0\\x93\\x5c\\x7a\\xf6\\xbc\\x7d\\xbe\\xb7\\x55\\x11\\xd9\\xbd\\x8e\\x63\\xe3\\xe2\\xf4\\x7a\\xb0\\xdd\\x1c\\xed\\xd7\\xb1\\x80\\xd7\\x4a\\x4b\\x44\\xd4\\x61\\x19\\x7a\\xef\\xdd\\x36\\x20\\x46\\x51\\x66\\xa3\\x9b\\x45\\x39\\x50\\x43\\xce\\x88\\x74\\xcd\\xd7\\x2c\\x60\\x2b\\xd3\\xd2\\xee\\xcb\\xad\\x34\\x66\\xb5\\xcb\\x1a\\xa4\\x1a\\xe9\\x2a\\x8a\\xfe\\xf2\\xd7\\x64\\xce\\xc0\\xc4\\x49\\xd2\\x7e\\xfa\\xc4\\x37\\x93\\x8f\\x28\\x0b\\xea\\x9c\\x50\\xa5\\x82\\xe5\\x7c\\x27\\xf9\\xb3\\xde\\x87\\x2f\\x0c\"},\n{{0xa2,0xc8,0xe1,0x61,0xa8,0xd9,0xd6,0xe8,0x88,0xc3,0xd0,0x9b,0x0b,0x97,0x27,0x37,0x30,0x7a,0x2c,0xbd,0x2a,0xcd,0x7c,0xcd,0x80,0x4d,0x24,0x31,0xac,0x6c,0x58,0xd2,},{0x3a,0x32,0x57,0x75,0x88,0x67,0x32,0xde,0xca,0x40,0x68,0x57,0xa8,0x05,0x60,0x10,0xaa,0xea,0x28,0x75,0x54,0x5b,0xa6,0xf3,0xdf,0x30,0x75,0x45,0x71,0x38,0x69,0x92,},{0x56,0x0d,0x01,0xb9,0x4d,0xf1,0x1d,0x83,0x34,0x77,0x52,0xff,0x51,0xb3,0x54,0x5e,0xf5,0x5c,0x56,0x32,0xae,0x7c,0x8e,0xfb,0x11,0xaa,0xdd,0x83,0x12,0xde,0xf7,0x25,0x62,0xe8,0xf5,0xd7,0x5e,0xce,0x10,0xad,0x46,0xbc,0x96,0xc8,0x60,0xde,0xec,0xe3,0x9e,0x63,0x4a,0x5f,0x50,0x65,0x4d,0x4c,0xdb,0xa8,0x4a,0x8e,0x6f,0x70,0x24,0x0a,},\"\\x83\\xa3\\xbe\\xbc\\xac\\x5f\\x28\\xc5\\x43\\x3e\\x3c\\x4f\\x1e\\x7b\\xf5\\xd2\\xe4\\xdc\\xd2\\xf5\\xe5\\x9d\\xbe\\xe0\\xa8\\x3b\\x07\\x02\\x57\\x15\\x35\\x07\\x46\\xf8\\x56\\x75\\xf1\\xdf\\xea\\x37\\x4a\\xa7\\xd7\\x94\\x28\\x7b\\x89\\x2e\\xf9\\x09\\x7f\\xf6\\xd2\\xe1\\x22\\xf0\\xa6\\x56\\xfb\\xa0\\x79\\x8c\\xdc\\xfc\\xb3\\x64\\x5d\\xfc\\xfd\\x78\\x8c\\x74\\x0c\\x0f\\xd0\\x45\\x20\\xe7\\xa0\\x6a\\x02\\xa0\\x58\\x29\\x63\\x0a\\x2b\\xf0\\xcd\\xfe\\x2e\\xcc\\xa0\\x09\\xec\\x44\\x04\\x99\\x46\\xbb\\x1d\\x23\\x26\\xdd\\xd6\\x1d\\x7e\\xc6\\x40\\xbf\\x69\\xeb\\x44\\xfb\\x23\\xcc\\x1f\\xf4\\x78\\xc5\\x70\\xc7\\x5d\\xb7\\xe7\\x66\\xe3\\x5b\\x7c\\x43\\xdb\\x73\\x68\\x0d\\x14\\x07\\xa9\\x43\\x99\\xfb\\x62\\x1b\\xaf\\x38\\x45\\x74\\x5c\\x1c\\x4e\\xd0\\xb9\\xf0\\xb4\\x85\\xbe\\x2d\\x53\\xc5\\x68\\x54\\x5d\\xdf\\x18\\x77\\x5a\\x83\\x7a\\x05\\xd9\\xc9\\x15\\x7b\\x08\\x4e\\x8c\\xd0\\x1f\\xc3\\x24\\xf0\\x7f\\x11\\x68\\x77\\xe4\\x07\\x5d\\xba\\x24\\x32\\xc8\\xa7\\x75\\x2e\\x9e\\x93\\x95\\x86\\xad\\x93\\xf0\\xc0\\xaa\\x5e\\xda\\xc9\\x4b\\x8d\\x82\\xe5\\x44\\x99\\x97\\xb1\\x5b\\x8c\\x89\\x61\\x58\\x9c\\x44\\x28\\x21\\xaa\\x83\\xb6\\x02\\x39\\xec\\x5f\\x15\\x8c\\x3f\\x5e\\x9e\\xc5\\xbe\\xa5\\x11\\x5d\\x5f\\xed\\x61\\x91\\x8e\\x8f\\xcd\\x5b\\xce\\x61\\xc7\\x77\\xf2\\x0b\\x6b\\xfe\\x80\\x3a\\x69\\xc6\\xfc\\x79\\x4a\\xb8\\xc5\\x7d\\xf2\\x71\\xda\\x86\\x38\\x72\\xa6\\x13\\x35\\xb1\\xfa\\x29\\xf4\\x60\\x8f\\xf0\\x37\\xf7\\x12\\x06\\x98\\x09\\xca\\x64\\x2a\\x03\\x07\\xc7\\x9a\\xa9\\x2e\\x10\\xcb\\x89\\x3a\\x29\\xd1\\x72\\x01\\xa0\\xb6\\xd1\\xb4\\x6a\\x72\\x12\\xb3\\xba\\xec\\x97\\x03\\xc0\\xb0\\x39\\x2b\\xa6\\xb7\\x6e\\x5c\\x9c\\x10\\xf8\\x35\\x99\\xb8\\x1e\\xa2\\x22\\x83\\xf9\\x54\\x7a\\xac\\xda\\xa7\\xf3\\x08\\x96\\xd1\\xff\\x73\\x1e\\x11\\xfb\\x9e\\x56\\xad\\x06\\x03\\x04\\x17\\x11\\x98\\x05\\xba\\xb6\\x35\\x21\\x49\\x6c\\x3b\\xb9\\x2a\\x12\\xf5\\xe5\\x5a\\xfc\\xf6\\x0e\\xd4\\x21\\x77\\x37\\xf3\\x04\\x6b\\x16\\xca\\x50\\x66\\x57\\xa6\\xd6\\x96\\xd7\\x5a\\x6d\\x8e\\x18\\xe9\\xef\\xe2\\xb0\\x8c\\x8b\\x1f\\xa0\\x72\\x82\\x38\\xe2\\x7c\\xfb\\x32\\x21\\x66\\xee\\xe4\\xee\\x76\\x96\\x8b\\x77\\x7b\\x50\\xee\\x6a\\x2b\\x80\\x4e\\x1e\\x9b\\x46\\x01\\x66\\x20\\x13\\x2b\\x65\\x88\\x71\\x8d\\x97\\x8c\\xa2\\xc0\\x02\\x69\\x79\\xc4\\x00\\xd3\\xc5\\x33\\x67\\x51\\x21\\x0f\\x0b\\x00\\xd2\\x69\\xec\\x8f\\x4e\\x2f\\x95\\x59\\xe1\\x80\\x33\\x2d\\xd2\\x70\\xe5\\x0c\\xc9\\x46\\x5c\\x55\\x58\\x93\\x63\\x55\\x52\\x1b\\xc3\\xc9\\x56\\x0f\\xc1\\x9e\\xc1\\x42\\x42\\x12\\x1e\\x6b\\xb2\\xff\\xf8\\xf5\\x03\\x37\\xfc\\x26\\x4a\\xcf\\x1a\\xc1\\x70\\x43\\x28\\x33\\x4b\\x3b\\x52\\xcb\\xa9\\x6d\\x93\\x03\\xb1\\xb5\\xdb\\x85\\x9d\\xae\\x31\\xd8\\x0f\\x17\\x11\\xfb\\xa2\\x51\\xe1\\x0b\\x4d\\x12\\x21\\x28\\xf9\\xfa\\xff\\x68\\x72\\xd0\\xc0\\xb8\\x1e\\xef\\x59\\x54\\x1f\\x83\\x2b\\x0a\\x9d\\xf3\\xa4\\xcd\\xd5\\x91\\xc8\\x77\\x36\\xb1\\xae\\xcf\\x24\\x2c\\x27\\x5a\\x10\\xc3\\xfd\\x67\\x83\\x9d\\xad\\x4e\\xf3\\x99\\xb9\\x49\\x4e\\xcd\\x77\\xf7\\xba\\x5b\\x5d\\x4f\\x2c\\xa3\\x04\\xe5\\xb2\\x29\\x21\\x30\\x7c\\xb1\\x8f\\xa6\\x4a\\xa3\\xd0\\x1c\\x44\\x11\\xc8\\x36\\x9c\\xce\\xde\\x46\\x5e\\xe3\\x69\\xee\\x63\\x7d\\x43\\xd2\\x88\\x26\\xbf\\x60\\xdd\\xde\"},\n{{0xd3,0xd1,0x88,0xb3,0x90,0xba,0xcc,0xd9,0x50,0x24,0x52,0x61,0x46,0xb8,0x2b,0x91,0x84,0xe1,0x97,0xe4,0x6a,0x93,0x40,0xa0,0xe6,0xec,0x18,0xbf,0x75,0xbe,0x7f,0xc5,},{0xd8,0xf7,0x94,0x94,0x8a,0xa6,0x98,0x61,0x00,0x21,0x4e,0x9b,0x7b,0x90,0x24,0x42,0x08,0x06,0xb4,0xc6,0x78,0x46,0xd5,0xbd,0x50,0x61,0x13,0xb3,0x53,0xa2,0xea,0x3d,},{0x16,0x97,0x6b,0x26,0x7d,0xe9,0x6e,0x38,0xdd,0xdc,0x84,0x78,0x07,0x5f,0x6b,0xdd,0x71,0x59,0xe5,0x63,0x34,0xb2,0xd2,0xd1,0x92,0x09,0x46,0x29,0x4f,0x33,0xcd,0x6b,0x7f,0x9c,0x50,0xf8,0x05,0x7f,0x49,0x6c,0xab,0x5d,0x94,0xbb,0x4d,0xca,0x26,0x2f,0x9f,0x0f,0xdf,0x9b,0x1b,0x64,0x74,0x1f,0x4b,0x72,0x2d,0x32,0xef,0xa8,0x22,0x03,},\"\\x5e\\x65\\x65\\x8e\\x42\\x03\\x75\\x43\\x3f\\xd7\\xc1\\xf6\\xbe\\x67\\x88\\x41\\xe5\\x81\\x04\\xf1\\x0b\\x4c\\x67\\x63\\x59\\xd8\\x4f\\xce\\x79\\x92\\xf5\\xc5\\x75\\x57\\xd7\\x38\\xf8\\x30\\xb5\\x05\\xfa\\x0c\\x2b\\x9e\\xab\\xf8\\xd1\\xa9\\xf8\\x1f\\xe8\\xf3\\x15\\xd6\\x62\\xe2\\xb8\\x4c\\xe9\\x52\\x99\\xeb\\xf4\\xe5\\x03\\xb5\\xe1\\xf7\\xf8\\xcd\\xb6\\x68\\xae\\x73\\x3f\\x3d\\x0c\\xdd\\x4c\\x74\\x2a\\xb5\\xf2\\x72\\xbe\\xa4\\xf1\\x8d\\x18\\x3e\\x89\\x23\\x84\\x76\\x62\\xf9\\xa3\\x9c\\xd4\\xb1\\x4e\\xc7\\x6d\\x11\\x03\\x2f\\xe5\\x73\\xc2\\x62\\x01\\xae\\xf6\\x66\\x01\\xce\\xc6\\x83\\xe3\\x4b\\x89\\xaf\\xd9\\x64\\xe9\\x87\\x80\\x1c\\x70\\x6a\\x85\\xe2\\x7b\\xab\\x33\\x70\\x1c\\xd1\\x09\\xbc\\xf0\\x7b\\x27\\xca\\x67\\xf0\\x22\\xc4\\x94\\xa0\\x4c\\xbe\\x5a\\x9c\\x6d\\x63\\xaa\\xd9\\x36\\xcd\\xf1\\xa1\\x80\\xfd\\x05\\x86\\x51\\x98\\xb9\\x6f\\x06\\xa7\\x8d\\xa9\\x57\\x99\\xd3\\xaa\\x4d\\xf3\\xb1\\x70\\x03\\x3c\\x69\\xe8\\xfb\\x04\\x28\\x8c\\x35\\x46\\x55\\x3b\\x57\\x9c\\x0a\\xe3\\x93\\x80\\x62\\xd3\\xd8\\x42\\x1c\\xfa\\x66\\x26\\x85\\x29\\xbe\\xc0\\x27\\x1e\\x53\\xb4\\xee\\x7d\\x09\\x9e\\x71\\x48\\xa8\\x02\\xdf\\x80\\xfe\\x5e\\xed\\xee\\x1c\\x90\\x3a\\xe8\\xed\\x4d\\x64\\x0e\\xad\\x76\\x12\\x62\\xdd\\x40\\x14\\xf2\\x5f\\x93\\x97\\xba\\x3f\\x1c\\x08\\xd8\\x3a\\x3c\\x48\\x5c\\xfb\\x55\\xf8\\x99\\x19\\xaa\\x97\\x2d\\x6b\\x7e\\x77\\x11\\xbe\\x9e\\x30\\xc1\\xeb\\x96\\xa0\\xc3\\x84\\x53\\x09\\xfb\\x23\\xdb\\xc7\\x5b\\x69\\x91\\xdd\\x6e\\x48\\xcd\\xde\\x90\\xe0\\x4f\\x22\\x8e\\x8c\\xcf\\x3b\\xa2\\x3f\\x27\\x47\\xcf\\xb9\\xd3\\x38\\x1a\\x93\\x05\\xf8\\x16\\xf2\\x6c\\xdd\\xe4\\x1c\\x02\\x20\\xfa\\xd2\\x28\\xff\\x6a\\x8b\\x09\\x5c\\x77\\xb6\\xba\\xe8\\xfa\\x33\\x68\\x14\\x27\\x24\\xbf\\x1f\\x5e\\x0f\\x6f\\xbc\\xa5\\x32\\x0c\\x21\\x5b\\x6b\\xa8\\x6b\\x91\\xe3\\xa8\\xac\\xf7\\x50\\xe9\\x3f\\xa7\\xea\\xa6\\x5c\\x4f\\x78\\x5e\\xf8\\x42\\x1a\\x19\\xc1\\xe2\\x7b\\xc2\\x4b\\x42\\x8e\\x08\\xa9\\x02\\x42\\xab\\xac\\x9b\\xd4\\xaa\\x03\\xc6\\x56\\xf8\\xf4\\x6d\\xc4\\x0b\\x36\\x15\\x2c\\x1b\\xd0\\xde\\xf1\\xac\\xfc\\x0d\\xa1\\x0a\\x2f\\xa1\\xdc\\x3d\\xa7\\xac\\xe5\\xa8\\xfd\\x76\\x22\\x7b\\xb1\\xa6\\x02\\x39\\x0f\\xe5\\x7a\\xfd\\x32\\xef\\xe2\\x81\\xf2\\xea\\x6b\\x2e\\x4d\\x25\\x45\\xcb\\x88\\xd2\\x30\\x8d\\x72\\x69\\x1c\\x9a\\x52\\xb4\\xca\\x25\\x23\\x1a\\x01\\x07\\xf2\\x5d\\x11\\x7c\\xc9\\x35\\x39\\x76\\x21\\xc6\\x83\\xbd\\xc8\\xf2\\x2e\\x81\\x03\\x40\\xf2\\xcb\\xac\\x4c\\xea\\xa3\\x46\\x86\\x65\\x26\\x18\\x79\\xf0\\x07\\x42\\x00\\x74\\x3e\\x0d\\xe5\\xf3\\xe5\\x83\\x08\\xb9\\x8b\\x04\\xb8\\xc7\\x14\\x8a\\x4e\\x00\\x4e\\x66\\x7e\\x83\\x2b\\x00\\x84\\xb5\\xf2\\xbd\\xc6\\xfd\\xc9\\x59\\xf2\\xfc\\x28\\xa8\\xd3\\x1d\\x9a\\x9e\\x78\\xe5\\xd5\\xf9\\xc0\\xb1\\x19\\xe5\\xff\\x1f\\x68\\xf7\\xc0\\xda\\xf0\\xc0\\xf1\\x69\\x47\\xcc\\xa5\\xb7\\xce\\xd0\\x96\\x01\\xe2\\xeb\\xed\\x28\\x2e\\xf2\\xbf\\x8f\\xe9\\xa2\\x7e\\xd2\\x7f\\xc5\\xbc\\xda\\x8a\\xed\\x6c\\x71\\xbe\\xe3\\xe7\\x75\\x10\\x04\\x47\\x26\\x89\\xbb\\xf6\\xd9\\xd0\\x79\\x52\\xa2\\x42\\xff\\x87\\x0d\\x7c\\x3f\\x5e\\x1f\\xfc\\x2c\\x1f\\x40\\xfc\\x9a\\xb7\\x57\\x9b\\x39\\x2b\\x55\\x4f\\x3d\\xc5\\x88\\xc0\\x3a\\xb9\\x57\\x43\\x1f\\xe5\\xd0\\x2c\\xbc\\x71\\x1a\\xd4\\x89\\xfe\"},\n{{0x61,0x91,0x7a,0x97,0x5c,0xb7,0xec,0x56,0x4c,0x70,0x8a,0x56,0x53,0x88,0xc5,0x72,0x36,0xa6,0x6b,0x69,0x7d,0xcd,0x5a,0x7f,0x10,0xba,0xe6,0x71,0x57,0x2a,0xc7,0xf0,},{0xec,0xc0,0xf0,0xb9,0x92,0x76,0xe5,0x28,0xf8,0x2b,0x42,0xf2,0xef,0xce,0x85,0x79,0xf8,0x3e,0x63,0x8c,0x6a,0xce,0xfd,0x07,0x28,0x28,0xc0,0x4e,0x43,0x4f,0x55,0xaf,},{0x6a,0xbb,0x3e,0x37,0x7b,0x5c,0x80,0xb7,0x4f,0x77,0x21,0x9c,0x1a,0x9e,0x09,0x6f,0xba,0x0e,0xb6,0x89,0x90,0x81,0x7a,0xcf,0xf1,0x2d,0xba,0x7f,0x61,0xc7,0x7c,0xcf,0x59,0x5f,0xb6,0x60,0x85,0x52,0x00,0x3c,0xea,0xd0,0x6c,0xa1,0x31,0x7c,0x9c,0xd5,0x1a,0xc4,0x72,0x4b,0x29,0xf4,0x09,0x21,0xfb,0x92,0x84,0x33,0x76,0x87,0x64,0x01,},\"\\x6e\\x97\\x0e\\x0b\\x1c\\x92\\xa7\\xf4\\x96\\xa8\\x2d\\x8a\\xe8\\x0c\\xfd\\x0c\\xce\\xf1\\xd2\\xc7\\x99\\xd4\\x17\\x28\\xf3\\x5d\\xdc\\xd6\\x03\\xb4\\x21\\xc2\\xa5\\xab\\x3b\\x48\\x9e\\x78\\xf4\\xb6\\x22\\x97\\xde\\x43\\x7c\\x5a\\xd1\\xa9\\x68\\x3f\\xf8\\x7f\\xa2\\x8e\\xb3\\xcc\\x38\\xce\\x24\\x2a\\xf5\\x94\\x19\\xf9\\xfd\\x43\\xfc\\xaa\\x54\\xfc\\x39\\x89\\x92\\xf8\\xc8\\xe3\\x1f\\x2b\\x33\\xdc\\xcc\\xd0\\xee\\x11\\xba\\x7b\\x38\\x8e\\x8d\\x2a\\x36\\xea\\xd0\\x67\\xc6\\xbe\\xce\\xd5\\x89\\x0a\\xb7\\xd4\\xa9\\x4f\\x55\\xda\\xb9\\x21\\x28\\xa0\\xf8\\x14\\xc0\\xe6\\x89\\x71\\xdf\\x57\\xbd\\x50\\x78\\xa7\\x40\\x31\\x75\\xc7\\xc2\\xfd\\xd4\\xa5\\x24\\x47\\x15\\x3a\\xb3\\x74\\x56\\x72\\x9a\\xee\\x33\\xe5\\xfc\\x93\\xdb\\x8e\\x7f\\x48\\x03\\x09\\x87\\x5e\\xcf\\x6d\\xb0\\x7c\\xe7\\xf3\\xca\\xc5\\xde\\x49\\xe3\\x61\\x27\\x5c\\xa5\\x0b\\x6b\\x71\\x9f\\x4b\\x71\\x5b\\x3e\\x30\\x86\\x3c\\xbb\\x3b\\x71\\x64\\xba\\x9e\\xb9\\x6e\\xf3\\x30\\x4b\\x19\\xad\\x4d\\x74\\xdc\\xe4\\xbd\\x25\\xe7\\x7b\\xbb\\xbe\\xff\\x1e\\xe7\\xd1\\xfb\\x55\\xb9\\xc4\\xf7\\xfc\\x4c\\xd9\\xbd\\x55\\x10\\x8a\\xfc\\xf9\\x9c\\x1a\\x41\\xcd\\x6f\\x6b\\x1a\\xdb\\x29\\x7b\\x10\\x6c\\x8b\\xa2\\x4e\\x31\\x34\\xf8\\x7d\\xd8\\xef\\xe5\\xcf\\x85\\x49\\x22\\x91\\xb9\\x4d\\x66\\x00\\x95\\x8c\\x28\\xb9\\x12\\x2f\\xe6\\xe0\\x1b\\xd3\\xe3\\x29\\xe4\\x2d\\x19\\x26\\xb8\\x9f\\x7a\\x8c\\x40\\xa4\\x98\\x67\\xe5\\xaa\\x3a\\xd7\\x49\\xbd\\x98\\xda\\xe7\\xd0\\x06\\xb4\\x53\\x60\\x9e\\x7d\\xae\\x26\\x36\\x4d\\x91\\x72\\xbe\\x72\\x83\\x33\\x01\\x21\\xed\\x2b\\x40\\x27\\xe0\\x88\\x51\\x18\\x74\\x3a\\x6e\\xa0\\xcb\\x7d\\xc2\\x74\\x09\\xa9\\xb2\\x82\\x0b\\xcc\\x24\\x2e\\xa1\\x0a\\x00\\x93\\x7b\\xf8\\x49\\x20\\x1e\\x0f\\xb6\\x19\\x94\\x21\\xf1\\x63\\xe9\\x79\\x4f\\x2d\\xd4\\xb3\\x32\\x01\\x4a\\x09\\xd3\\xee\\x80\\x71\\xda\\x78\\x77\\x47\\xf9\\x90\\xf5\\x17\\x99\\x19\\x02\\x7d\\xdf\\xf7\\xca\\xb0\\xf5\\x5e\\x9a\\xfa\\x8e\\xcc\\xb1\\x6c\\xc2\\xdd\\x3c\\xbb\\xea\\xd7\\xff\\x7e\\xc8\\x18\\xc2\\x53\\x39\\x3f\\x74\\x87\\x41\\xf5\\x54\\x07\\xf7\\x40\\x8e\\xe3\\x3a\\x42\\xae\\x2d\\x6e\\xcb\\x3f\\xb6\\x00\\xa7\\x1f\\x30\\xab\\x63\\x06\\x06\\xe5\\x53\\xb4\\x36\\x78\\xe5\\x98\\x54\\xf3\\xa2\\x94\\x7b\\xcf\\x4e\\xa0\\xfc\\xfe\\xdc\\x31\\x4d\\x83\\x70\\xd1\\x26\\x63\\x95\\xfd\\xa3\\xc9\\x10\\x5e\\x97\\x59\\x52\\xf6\\x0e\\x30\\x86\\xbb\\x82\\x48\\x15\\x13\\xd6\\xfe\\x8a\\xdb\\x4f\\x95\\xef\\xb9\\xa9\\x5b\\x66\\xd4\\x80\\xd2\\xbb\\x17\\x10\\x78\\xcf\\x40\\x68\\x4a\\xc6\\x9a\\x78\\x9c\\x7f\\xb7\\xfa\\x42\\x53\\x33\\xd7\\x05\\xdb\\x00\\x06\\x67\\x55\\xdf\\x72\\x8d\\xe0\\x2d\\xf2\\x5b\\xae\\x34\\xf1\\xd7\\xd4\\x9c\\xaf\\xfc\\x51\\xe9\\xba\\x2b\\x10\\xb9\\x8f\\xe4\\xcd\\x9d\\x22\\xb7\\x76\\x4e\\xd9\\x31\\xed\\xb5\\xf0\\xb5\\x54\\x49\\x6e\\x99\\x53\\x91\\xe0\\xaf\\x0b\\x8d\\x1c\\x7a\\x82\\x95\\xa8\\xd1\\x5a\\x7c\\x65\\x56\\xd2\\x9c\\xb1\\x9e\\x08\\x55\\xca\\x50\\x5a\\xd0\\x1d\\x2a\\xa3\\x09\\x28\\xa8\\x4b\\xc4\\x89\\x59\\x57\\x6d\\x81\\x2d\\x9b\\x27\\xb8\\xe8\\x88\\x79\\xfa\\xa2\\x80\\x6c\\x08\\x41\\x36\\x0e\\xcd\\x0f\\xe8\\x3f\\x5b\\x84\\x8f\\xc1\\x2f\\x65\\x8f\\x1e\\x7f\\x40\\xe5\\x61\\xc2\\xe7\\x8d\\x3b\\x01\\x25\\x21\\x0a\\x92\\x06\\x1c\\x2d\\xb2\\x1b\\xa6\\x60\\xe8\\x60\\x8f\\xf5\"},\n{{0x7b,0xa2,0x5f,0x27,0x97,0xa2,0x83,0x6f,0x37,0x9d,0x6b,0xbc,0xbe,0x9a,0xbf,0x4f,0x2d,0xef,0x5e,0x52,0xf7,0x2b,0xd9,0xe0,0xb0,0x06,0x57,0x10,0x22,0xfa,0xc2,0xf3,},{0x6c,0x2e,0xd4,0xe8,0xc0,0x12,0x4d,0x5d,0x05,0x40,0x79,0x6d,0x39,0x45,0xd1,0xde,0x71,0xaa,0x69,0x69,0xe6,0xab,0xea,0x0f,0x1b,0x0e,0x6f,0xc4,0x29,0xc7,0x04,0x6f,},{0xf1,0xf5,0x90,0xa9,0x07,0xba,0x98,0x0e,0xb0,0xd6,0x48,0xab,0x4d,0xed,0x5f,0x92,0xfa,0xf7,0xcb,0x85,0x1d,0x81,0xd8,0x58,0xa7,0x8f,0xa6,0xb7,0x7c,0xbb,0xe1,0x2f,0x64,0xd2,0x0d,0xf5,0x27,0x71,0xa7,0xd5,0xe5,0x39,0xa1,0x52,0xd7,0x31,0xe1,0x90,0x3d,0x42,0x11,0xfd,0xcf,0xef,0x9a,0x48,0xb4,0x6c,0x8f,0xd5,0x39,0x4c,0xa0,0x09,},\"\\x17\\x1a\\x34\\x09\\x87\\x80\\x97\\xb3\\xb2\\x2b\\x2c\\x00\\x66\\x0b\\x46\\xe5\\x42\\xc2\\x16\\x4c\\x00\\xbb\\xee\\x54\\x55\\x48\\x37\\x94\\x0e\\x70\\xf0\\x3d\\xa9\\x91\\x6a\\x40\\xf9\\xbd\\xe8\\x28\\x8f\\x45\\xe4\\x7b\\xef\\x7f\\xfe\\x4e\\x55\\x7c\\xd4\\x47\\x40\\x45\\xe7\\x40\\xfd\\x95\\x9d\\x98\\x4f\\x4e\\xc8\\x1d\\xa8\\x8d\\x44\\xa3\\x73\\xc1\\xed\\xa0\\xcf\\xc6\\xb0\\x8e\\x35\\x13\\x73\\xd3\\xb8\\x2a\\xb0\\x90\\x2d\\xf8\\x06\\x3f\\xd9\\x08\\xe7\\x03\\xe0\\xcb\\xec\\x41\\x0a\\xb5\\xcd\\xfe\\xaa\\xe0\\x01\\x88\\xce\\x2a\\xd4\\x2b\\x8b\\xf0\\x4f\\x7d\\xaa\\x5f\\x0e\\xe3\\x33\\xa6\\xf9\\x31\\x1b\\x4a\\xd9\\x81\\x09\\x52\\xd5\\xd5\\xa6\\x4b\\x20\\xf3\\x7e\\x84\\x54\\x15\\xfc\\x3c\\xdd\\x61\\x6f\\xeb\\xec\\x50\\xdb\\x29\\x6f\\xb3\\xf3\\xbb\\x7f\\x6b\\x36\\x6b\\xbe\\x52\\xe4\\x89\\x7a\\x05\\x61\\x7b\\xf7\\xc9\\x81\\xa6\\x2e\\xdc\\xbb\\xbe\\x5d\\xa4\\xc3\\x9c\\xaf\\xa8\\x69\\xaa\\x2b\\x27\\x34\\xe6\\xcf\\xed\\x90\\xed\\x8b\\xe7\\x59\\x49\\x39\\x0e\\xe4\\x45\\x66\\x89\\x24\\x55\\xb8\\x90\\xcf\\x56\\x8b\\x94\\x5a\\xab\\xb7\\x58\\xd3\\x85\\x4b\\xe6\\x53\\x9f\\x3b\\x86\\xbf\\x01\\xd1\\x88\\xe4\\x8c\\xf2\\x62\\x6a\\x0d\\x7d\\x38\\x17\\x03\\xbe\\x6e\\xd1\\x29\\x0d\\xfb\\x94\\x7b\\xc2\\xe0\\xf8\\x3d\\xbc\\x58\\x70\\x30\\x80\\xd7\\xf5\\xb9\\xef\\x19\\xae\\xf9\\x30\\x90\\x8f\\x68\\xf0\\xc8\\x00\\x10\\xa9\\x40\\x1b\\x30\\x3a\\x9f\\x6d\\xa8\\x05\\xbb\\x8a\\x0e\\xd0\\xf3\\x94\\x13\\xee\\xfe\\xdf\\x91\\x9f\\xfd\\x8e\\xa6\\x39\\x1b\\xf9\\x5d\\x42\\x29\\x60\\x4e\\x49\\x45\\x7b\\x8e\\x23\\xbe\\xc6\\x11\\x48\\x4c\\xc7\\xf9\\x83\\x2d\\xd9\\x5b\\xdc\\x3a\\xd1\\x77\\xc0\\x50\\xf4\\xab\\x63\\x3d\\xcd\\xb3\\xe6\\x91\\xf5\\x90\\x28\\x73\\xb3\\x8c\\xb0\\x72\\x0b\\x91\\x13\\x35\\x7f\\xe0\\xcf\\xb9\\x8a\\x68\\xcc\\xcb\\x5d\\x5f\\x08\\x09\\xd5\\x9a\\x37\\x5c\\xf7\\xb5\\xa2\\x75\\xd4\\x3c\\x4c\\x34\\xff\\x68\\xe4\\x48\\x52\\x6e\\x8e\\x1a\\xad\\x44\\xe2\\x00\\x08\\xa2\\x32\\xaf\\xbc\\xf5\\x32\\xa4\\x2b\\x50\\xa0\\x25\\xa1\\xb2\\xee\\x4e\\x07\\x7e\\xb0\\x12\\x5a\\x59\\x3d\\x51\\xa2\\x00\\xec\\x20\\xd8\\x72\\xc0\\x58\\x38\\xad\\x36\\xaa\\xae\\xec\\xcc\\x3e\\xd9\\xef\\x41\\xf6\\xd1\\x22\\x67\\x02\\x17\\xd5\\xc0\\x8f\\x6e\\x13\\xc1\\x72\\x19\\x45\\x89\\xac\\xc3\\xc5\\x9f\\x7e\\xf7\\x90\\xc7\\xc8\\x5a\\xa6\\xd5\\xeb\\x69\\xd4\\xc8\\x9a\\x72\\xf5\\xe7\\xc9\\x24\\x69\\x85\\xc1\\xac\\x0c\\x5d\\x19\\x7f\\x76\\xa7\\x3e\\x37\\x74\\x83\\x9d\\x4a\\xa2\\x09\\x6a\\xca\\x19\\x0a\\x30\\xf4\\xaa\\xc5\\x40\\x57\\xb6\\x4f\\x35\\x8e\\x0e\\x06\\x40\\x0c\\x0d\\xf2\\xf8\\x76\\x41\\x2d\\x34\\x48\\x4c\\x43\\x44\\xf4\\xd7\\xc8\\x66\\x51\\x7d\\x3e\\xfb\\xa4\\xa9\\x0f\\xa7\\x14\\x4c\\x9b\\xa5\\xdb\\x33\\x61\\xdb\\x57\\x69\\x40\\x3e\\xc8\\x16\\x26\\xa5\\x11\\xf9\\x3e\\x30\\xf8\\x58\\x6e\\xad\\xfc\\xaf\\xd9\\xa3\\x6e\\xcf\\xf8\\xd2\\x4b\\x42\\x07\\x9a\\xda\\x8e\\x57\\x9a\\xc3\\x08\\x51\\x17\\x7b\\xce\\x90\\x38\\xb0\\xe1\\x30\\x00\\x72\\xd6\\x8e\\xfd\\xd7\\x23\\xf6\\x35\\x50\\x64\\x84\\x32\\x75\\x81\\x5a\\x66\\xb9\\xd7\\x3a\\x12\\x99\\xaa\\x59\\xa1\\x81\\x2f\\x64\\x52\\xfb\\x41\\x15\\xea\\x2b\\x1f\\x9f\\xf4\\xa9\\x96\\x90\\x59\\x6e\\x3f\\x20\\x22\\xd8\\x1e\\xd8\\x74\\xdd\\x67\\xe6\\x18\\x9c\\xa0\\xe6\\x8b\\x93\\x04\\xe9\\x93\\xa9\\x5b\\x66\\x66\\x5e\\x0d\\x07\\x4c\"},\n{{0xd1,0xe1,0xb2,0x2d,0xe5,0xe0,0x4c,0x9b,0xe4,0x65,0x1d,0xd7,0x39,0x95,0xa3,0x66,0x6c,0xb5,0x35,0x2c,0x65,0xac,0x7b,0x70,0x51,0xb3,0x66,0xfe,0x1a,0xc0,0xc3,0x10,},{0x12,0xfe,0x56,0xf1,0x01,0x2d,0x5c,0x12,0xf1,0x35,0xed,0x59,0x82,0xf3,0x82,0xae,0x5f,0x11,0x43,0xbc,0x90,0xe8,0xcb,0x8c,0x93,0x05,0x17,0x54,0x55,0x1e,0xe9,0x0a,},{0xab,0xaa,0xb4,0xfa,0x6a,0xeb,0x0a,0x0b,0x34,0xee,0x0d,0x61,0x3a,0x0a,0xf0,0x49,0xed,0xb4,0xce,0xdb,0xfe,0x9d,0x3b,0xeb,0xe9,0xc0,0x06,0x18,0xb1,0x15,0xb9,0xd1,0xfa,0x52,0x4e,0xc3,0x49,0x5e,0x13,0x30,0xb0,0x93,0x61,0x81,0xea,0xbb,0x14,0x29,0x9f,0xac,0xcc,0x40,0xea,0xa8,0xcc,0xa5,0x7e,0xd3,0x24,0xb7,0xa6,0x42,0x0c,0x0e,},\"\\xc7\\xf2\\x18\\xb5\\xaa\\x7a\\xae\\x17\\x99\\x62\\x5a\\x56\\xc4\\xd7\\xd7\\xb0\\x26\\x37\\xe5\\x72\\xf1\\x41\\x1a\\x61\\x22\\xf1\\x13\\x79\\x1a\\xa3\\xc6\\x28\\xe8\\x19\\x60\\x2f\\xb4\\xf0\\x33\\x5a\\x61\\x23\\x01\\x3f\\xa6\\x4e\\x9f\\xdc\\x4e\\x4a\\xe4\\x97\\xbd\\x16\\x9c\\x2f\\xa7\\x7b\\xc2\\x36\\x12\\x97\\x17\\xf4\\x62\\x88\\x6b\\x41\\x08\\x93\\xfa\\x78\\x09\\xcb\\xfd\\xc8\\x92\\x22\\x3b\\x40\\xee\\x04\\x1e\\xbd\\x4e\\xc7\\xdd\\xab\\x55\\xbe\\x60\\x81\\xa1\\x64\\x66\\x43\\xa9\\x12\\x0b\\xaa\\x46\\x28\\x9a\\xcb\\xa1\\x5b\\x3b\\x48\\xaf\\x3b\\x7a\\xde\\xcd\\x69\\xf4\\x3e\\xed\\xe7\\x9d\\x9b\\x19\\x57\\xe1\\xd8\\xc3\\x12\\x9e\\x0f\\xa0\\x57\\x9d\\x3d\\x39\\x53\\x70\\x46\\x1b\\x0e\\x12\\x55\\xc9\\xca\\xa9\\x4e\\x47\\x25\\x60\\x1c\\xb9\\xd0\\xe2\\xd6\\x02\\x44\\xd1\\x5b\\x64\\xe1\\xf7\\xbc\\x90\\x15\\x59\\x0a\\xd0\\x99\\x1f\\x12\\xf8\\x26\\x73\\x11\\x20\\x6e\\x9e\\xb5\\xd1\\x6a\\xdd\\x0b\\xa5\\x21\\x8f\\xce\\x5f\\xff\\xe1\\xc9\\xce\\x5f\\xfe\\x1f\\x73\\x11\\x32\\xf4\\xb1\\x2c\\xac\\xb0\\x2f\\x97\\x45\\x17\\x10\\x84\\x6b\\x7f\\x82\\x4f\\x4f\\xa9\\xe0\\x89\\x19\\x26\\x64\\x69\\x78\\x9c\\x00\\xce\\x0d\\x94\\xd3\\x8f\\xa8\\xfe\\xc3\\xf5\\x1f\\x2f\\x88\\x6e\\x9d\\xb0\\x9b\\x80\\x44\\x70\\xb1\\x9e\\xc9\\xe8\\x06\\x63\\xf1\\x55\\xb4\\x98\\x4d\\x2b\\xbd\\x0b\\x2c\\xe9\\x93\\x02\\xe0\\x6c\\x64\\x44\\x4b\\x69\\x6e\\x31\\x29\\xfc\\xef\\x34\\xc3\\xdd\\x00\\xf7\\xab\\x5b\\xed\\xa7\\x47\\xa3\\xfc\\x63\\x39\\x19\\x2b\\x74\\x0f\\x35\\x69\\xb6\\x7d\\xbd\\x6f\\xfa\\x39\\xe2\\x71\\xfa\\xa4\\x00\\xd9\\x61\\x6b\\xff\\x86\\xec\\x49\\xa6\\x59\\xde\\xf2\\xe7\\xf5\\xd4\\x51\\xf2\\xa2\\xb3\\x5e\\x66\\x2a\\x6e\\x7c\\xc2\\x2f\\x1e\\x5c\\xdc\\xde\\x8a\\x59\\x98\\x81\\x35\\xb7\\xe7\\x65\\x62\\x74\\x3c\\x1e\\x6a\\x09\\x99\\x01\\xb3\\xef\\x97\\xcb\\xff\\x23\\xf2\\x09\\xbd\\x70\\x88\\xc2\\xf0\\x32\\x45\\x27\\x9a\\x1d\\xc7\\x8d\\xdd\\xc1\\xbb\\x0c\\x1d\\x35\\x10\\x03\\x57\\x88\\x21\\x26\\xb3\\x28\\xd3\\xd9\\x4e\\x08\\x71\\xb6\\x0b\\xe2\\x53\\xfd\\x1b\\x6e\\xcf\\x03\\xc1\\xdb\\x73\\x1d\\x9e\\xed\\x0e\\xdf\\x2b\\x26\\x43\\x23\\x07\\x80\\xa4\\xd6\\x6e\\x99\\x17\\x9a\\xad\\x1b\\x82\\x40\\x2e\\x55\\xf6\\xd7\\x85\\xeb\\xc8\\x0f\\x8d\\xd2\\xfd\\x2b\\xeb\\x09\\xf3\\x10\\x35\\xdf\\x62\\xc1\\x7f\\x42\\x8e\\xd0\\xb2\\xd5\\x65\\x08\\xdb\\x31\\xe6\\xd2\\xdd\\x5f\\xb6\\x9e\\xbe\\xee\\xa3\\x25\\x70\\x70\\xcf\\x2f\\xe6\\x7d\\x42\\xd2\\x88\\x16\\xa5\\x5d\\xba\\xe0\\xb1\\x85\\xdb\\x44\\x21\\xbb\\xfd\\xae\\xfc\\x79\\xc0\\x8c\\xdc\\x1a\\xcc\\xf7\\x16\\x42\\x56\\x2e\\xc7\\x00\\x36\\xda\\x2b\\xba\\xfa\\x4a\\x89\\x19\\x54\\xc4\\xee\\x40\\x49\\xb5\\x5c\\x64\\x0e\\x91\\x93\\x0e\\x39\\xe3\\xef\\x10\\x18\\xdc\\x16\\x47\\xf2\\x69\\x42\\xc6\\xdb\\xdf\\x4d\\x56\\xe4\\x1e\\xb2\\xc8\\x98\\xc8\\x21\\xfa\\xc1\\x7c\\xc2\\x73\\xe8\\xe4\\xaa\\x56\\x08\\xa8\\x12\\xcf\\x4b\\x82\\xf9\\x60\\x19\\xc2\\x52\\xd5\\x6e\\x78\\x05\\x29\\x8c\\xcb\\xe8\\xce\\x40\\xb0\\xbd\\x0f\\x93\\x3b\\x88\\x4c\\x0f\\xaf\\x97\\xa9\\x58\\xb2\\x04\\x08\\xb8\\xa5\\x29\\x7c\\xce\\x55\\x27\\xb2\\xca\\x21\\x28\\x06\\xe7\\x2a\\x32\\x64\\x45\\x7a\\x7f\\xac\\x86\\x62\\xb8\\x2c\\xa2\\x33\\xe1\\xc7\\x75\\x8d\\xc6\\xe4\\xf1\\xb9\\x99\\x58\\x63\\xf2\\x5f\\x74\\x7b\\xce\\xe4\\x3b\\x63\\x9b\\x1f\\x8f\\x20\\x26\\xd2\\xd2\"},\n{{0xdf,0x29,0x4e,0x47,0x7b,0x1b,0x91,0xc5,0xac,0x5b,0x98,0xc3,0x30,0xd2,0x22,0xd7,0xcd,0x2d,0x53,0xe7,0xd0,0xbc,0x0c,0xa4,0x03,0xdf,0x4e,0xc7,0x53,0x27,0xa2,0x74,},{0x5f,0x0b,0xd2,0x2f,0x2f,0x18,0x96,0xd1,0x56,0x3b,0x4f,0x69,0x40,0xc7,0xdf,0x89,0xef,0xc2,0x58,0xc0,0xff,0x6c,0x2f,0xcd,0x67,0x4d,0xaf,0x4f,0x59,0xfc,0xdb,0x60,},{0x99,0x45,0xab,0x73,0xb5,0x85,0x62,0xb3,0x55,0xda,0xbc,0x4e,0x2b,0x6b,0xe7,0xe0,0x5f,0x37,0xf8,0x95,0x71,0x44,0x0c,0xcc,0x32,0xc1,0xa9,0x47,0x37,0x09,0x5b,0x78,0x66,0x74,0x7d,0x21,0x00,0x70,0x00,0xa0,0xf0,0xe3,0x51,0x11,0x4b,0x88,0xe0,0x13,0x8b,0x55,0xdf,0x44,0xfe,0x72,0xeb,0xe9,0x59,0x14,0x10,0xe7,0x07,0xfa,0x9d,0x02,},\"\\x3e\\x42\\xd6\\x68\\x40\\x96\\x30\\xcb\\xb8\\x48\\x12\\xac\\x7f\\xf1\\x15\\x4f\\x70\\xfc\\xa8\\xbd\\xff\\x3f\\x1a\\x04\\x0f\\xa3\\xaf\\x86\\x8a\\xa1\\xc4\\xe9\\x15\\x08\\xb1\\xae\\xfd\\xf5\\xc3\\xa8\\xb4\\xb0\\x77\\xa4\\xd1\\x62\\xd2\\xc0\\x5b\\xd3\\x64\\xfb\\xbe\\x8c\\x5a\\x08\\x31\\x4c\\x2e\\x07\\xdf\\xfb\\xd6\\xe8\\xdd\\x2e\\x08\\xa0\\xdc\\xc9\\x6e\\xa9\\x2d\\xdd\\x4c\\x97\\xf7\\x9d\\xb9\\x42\\x5a\\x6c\\x6b\\x34\\xc4\\x60\\x43\\xd0\\x9a\\x68\\xb7\\x68\\x72\\x36\\xa9\\x18\\xd2\\x1a\\x56\\x16\\x10\\xa1\\x3a\\xc5\\xe4\\x46\\xe0\\x88\\x1b\\xb2\\x6c\\xc8\\xe2\\x8a\\xad\\x16\\x54\\xf8\\x67\\xad\\x82\\xae\\x33\\xf8\\xf7\\xa7\\x8a\\x65\\xbe\\x57\\x69\\x94\\x75\\x51\\x6a\\x1a\\x87\\x46\\x84\\x3e\\x93\\xa1\\xa2\\x94\\x35\\x46\\x24\\xfa\\xc0\\x4d\\x45\\x2c\\xcf\\xbe\\x4f\\xdd\\x92\\xa9\\x51\\xaa\\xa0\\x7d\\x26\\x67\\x6d\\x5c\\xb0\\x77\\xa5\\x00\\x0d\\x43\\x9c\\x12\\x42\\x76\\xc0\\xdb\\xcf\\x86\\xe7\\xaa\\x15\\x3c\\xc2\\x4b\\x5a\\xff\\x67\\x7c\\x6b\\xad\\xc2\\x61\\xc2\\x89\\xf4\\xa4\\xae\\x51\\x9b\\x2e\\x2f\\xff\\x31\\x2f\\xbf\\x0f\\x5b\\x4c\\x46\\x98\\xf6\\xae\\xdd\\x8f\\xcb\\x1d\\x23\\x48\\x94\\x2d\\xe3\\xfb\\x73\\xba\\x27\\xf6\\xdb\\x14\\xc2\\xf0\\x91\\x80\\x35\\x6e\\x5f\\xca\\xe1\\xad\\xf6\\x5e\\x22\\x42\\x5f\\x8c\\x27\\xf1\\x9e\\x98\\x94\\x83\\x50\\x6e\\x5d\\xf5\\x7a\\x1b\\x61\\x3a\\x22\\xe3\\x45\\x03\\x8b\\x3e\\xa9\\x1c\\x0f\\x78\\xff\\xff\\x46\\x38\\x3f\\x38\\xc7\\x22\\x25\\x35\\x8a\\x34\\x57\\x0d\\x6f\\x66\\x4a\\x17\\x45\\x4a\\x15\\x16\\x13\\xf0\\x1c\\xba\\x77\\x7f\\x62\\xec\\x83\\x18\\x75\\xec\\x5e\\x27\\xd2\\x57\\xf1\\x80\\xb6\\x36\\x6c\\xb1\\x83\\x10\\x7c\\x40\\xf5\\x0b\\x01\\xb2\\xb9\\xbf\\x91\\xb3\\xb5\\x54\\x9e\\xd9\\x31\\xa3\\x53\\x7a\\xa4\\x16\\x89\\xf7\\x2b\\x25\\x7a\\x6a\\xa3\\x9c\\xdc\\x6f\\xce\\xdf\\x14\\x39\\x83\\xbe\\x5b\\xff\\xe3\\xae\\x2b\\x29\\xf8\\x2f\\x88\\x21\\x22\\xd6\\x6a\\x79\\x25\\xf5\\xa7\\x10\\x82\\x6c\\x0d\\xad\\xb7\\xe4\\xfa\\x4e\\xc0\\x79\\xba\\x2e\\x76\\xda\\xda\\x43\\x3f\\x30\\x77\\xcb\\x1e\\xf7\\x46\\x13\\xfc\\x5d\\xbf\\x82\\x58\\xb6\\xda\\x7c\\x73\\xc8\\x66\\x37\\x24\\x57\\xed\\x50\\x0f\\x97\\xf9\\x90\\x7e\\x1f\\xc2\\x63\\x53\\xc7\\x0b\\xa3\\xbd\\x9c\\x36\\x15\\x1d\\x46\\x86\\x5d\\x2c\\x65\\x98\\x65\\x62\\x48\\x5c\\xf8\\x42\\x1f\\xeb\\xbe\\x77\\x7c\\x73\\xe6\\xcd\\x00\\x26\\xd6\\x6d\\x35\\x12\\x8b\\x9f\\x8f\\x33\\x26\\x4a\\xeb\\x56\\xbd\\x3e\\x4b\\x8d\\x1f\\x52\\x66\\x41\\x1e\\xf3\\xb2\\x3b\\x76\\xb3\\x6d\\x4c\\x9d\\xf3\\xc5\\x12\\xfd\\x56\\x0c\\x2b\\xe5\\x2a\\xc5\\x23\\xc1\\x93\\x77\\xad\\x2a\\xdc\\x0e\\x8c\\x30\\x9c\\xf5\\xbb\\xf7\\x2d\\x9e\\xb8\\x5d\\x65\\xa9\\x48\\x47\\xd4\\x97\\xd8\\xd1\\x02\\x42\\x4f\\xb8\\x43\\x81\\x66\\x6e\\xcb\\x1c\\x35\\xa3\\x72\\x5d\\x7d\\x9e\\x92\\x84\\xfd\\xeb\\xb6\\xb3\\x62\\xaa\\x6a\\x9c\\x6f\\xb3\\x7a\\xba\\x87\\x35\\x7f\\x57\\x4c\\x0e\\x63\\xb4\\x49\\x7d\\x49\\x8f\\xfb\\xb7\\xd0\\x69\\x2d\\x78\\x4b\\x4b\\x18\\xce\\x9f\\x91\\x50\\xc1\\x46\\xd3\\xd1\\x8c\\x38\\x2e\\xda\\x04\\x93\\x8c\\x69\\xd0\\x77\\x8f\\x29\\x02\\xd5\\x23\\x5a\\x56\\x52\\xb9\\x7c\\xef\\x6d\\x5f\\x60\\xda\\x6b\\xd7\\xed\\x4f\\xf9\\x7c\\xd9\\x4d\\x49\\x39\\xca\\xca\\x3b\\x6b\\xaa\\x3c\\xfd\\xac\\x04\\xcd\\xa9\\x55\\x96\\xf4\\x67\\xcb\\xc6\\xcb\\xcd\\x92\\x64\\x16\\x77\\x43\\xea\\xc1\"},\n{{0x70,0xc6,0x85,0x9f,0x08,0xcf,0x42,0xb4,0xbd,0xa9,0xeb,0x62,0x97,0x9d,0xff,0xb7,0xcb,0x08,0xeb,0x3d,0xab,0xe9,0x3f,0xe9,0x4b,0x01,0x38,0x46,0x17,0xcf,0x67,0x30,},{0x40,0x1c,0x9e,0x20,0x33,0xe2,0x25,0x9f,0xb6,0x38,0x3b,0x3e,0x8b,0x9e,0x17,0xb3,0xf2,0x06,0x27,0x46,0xbb,0xe6,0x48,0xcf,0x48,0x45,0x16,0xdb,0x0f,0x2f,0x1b,0x06,},{0x0f,0x03,0xa4,0xf1,0x5c,0x33,0x9b,0x4f,0x7b,0x88,0xb4,0xe2,0x1a,0xd9,0xe3,0xd6,0xbb,0xf3,0xef,0xfb,0x7b,0x67,0x8f,0xfa,0x50,0x0d,0x47,0x38,0x3b,0x71,0xa7,0x45,0x4f,0x62,0x90,0x7b,0x56,0xf5,0x9f,0x9b,0x9a,0xf6,0xd5,0xb2,0xa0,0xfc,0x1c,0x73,0x7a,0x64,0x10,0x51,0x95,0x08,0x98,0x99,0xf5,0x7a,0x2c,0x9d,0xba,0x50,0x9e,0x0a,},\"\\xdd\\x06\\x09\\xea\\x15\\x99\\x21\\x39\\x5d\\x11\\xfb\\x2d\\xa8\\xea\\x4f\\x74\\x7d\\x7f\\x74\\xb5\\x80\\x52\\xe0\\x1c\\xad\\x40\\xa2\\x71\\xfa\\x0b\\xbe\\xed\\x91\\x02\\x0f\\x4f\\x0c\\x08\\x46\\xc4\\xf0\\x77\\x78\\xa6\\xaa\\x76\\x8e\\xb5\\x17\\x12\\x29\\x4e\\x9e\\x1f\\x32\\xa6\\x02\\xb1\\x52\\x51\\x4f\\x5e\\x6d\\x39\\xf9\\xe0\\x8f\\x7a\\x78\\x12\\xbd\\x90\\x0c\\x10\\xa9\\x14\\x69\\xe4\\x7e\\x8a\\x78\\xe5\\x4c\\xd4\\xbd\\x7c\\xfe\\xde\\xde\\xc1\\x71\\xef\\x37\\x3f\\x1c\\x4f\\x9b\\xbc\\x2c\\x81\\x40\\x2f\\xb1\\x4e\\xd0\\xbf\\xac\\x8d\\x04\\x3f\\x11\\x7d\\x61\\x24\\x52\\x1a\\xfa\\xe0\\x91\\x6a\\x51\\x0d\\x56\\x8a\\xcf\\xa3\\xaa\\x33\\x01\\xbc\\x97\\x9a\\xc2\\x8d\\x55\\x1d\\xbb\\xea\\x6c\\xea\\xc4\\xc2\\x12\\xaa\\x8c\\x84\\x92\\xb3\\x61\\x3a\\xe7\\x39\\x5d\\xd4\\x12\\x5f\\xc4\\xc2\\x5d\\x5b\\x4d\\x99\\x23\\x08\\x21\\xd4\\xb1\\x7e\\xc2\\xee\\x6b\\xe7\\xd6\\x04\\x19\\x5a\\x21\\x54\\x33\\x3b\\x97\\x35\\x26\\x58\\x0c\\xa7\\xef\\x9e\\x30\\xc6\\xc1\\xdd\\x42\\xef\\x2a\\xfe\\x42\\xb1\\x1b\\x1a\\xa4\\x9b\\x9c\\xca\\xba\\xca\\x17\\x09\\x1e\\xeb\\x38\\x0e\\xc5\\xe3\\x4a\\xd1\\xe3\\x82\\x7c\\xc6\\x0d\\xac\\xf1\\x44\\x28\\x6c\\x78\\x92\\x59\\x0b\\xd2\\x67\\x1a\\x8d\\xc5\\xf3\\xa7\\x02\\xc1\\xde\\x7c\\xd3\\xb4\\x2c\\x1b\\x15\\x0b\\x09\\xc3\\xe5\\x8e\\xf6\\x94\\x3b\\x45\\xd8\\x9d\\x41\\xdf\\x36\\x1f\\x1d\\x5c\\x25\\x56\\x55\\x91\\xb6\\xac\\x8d\\xea\\xa7\\x36\\x76\\x53\\x1f\\x6e\\x5a\\xbe\\x58\\x04\\xb0\\x09\\x7f\\x8d\\x45\\xea\\x29\\x39\\x17\\x73\\x33\\xca\\xce\\xf1\\x2e\\x4b\\x71\\xfe\\x49\\x36\\xba\\xfe\\x00\\x74\\x7a\\x89\\x30\\xbc\\xea\\x55\\xb8\\xfd\\x84\\xa0\\x1f\\x6d\\xf8\\x4e\\x7a\\xcb\\x93\\x1f\\xc7\\xc0\\x1d\\xdf\\xd6\\x3d\\xee\\xc3\\xad\\x3e\\x69\\xdf\\xa2\\xb7\\x35\\x50\\x58\\x3d\\x57\\x47\\xee\\xe9\\x6c\\x55\\x36\\x36\\x87\\x97\\xe2\\x47\\xf2\\x3f\\x53\\x7d\\x79\\x07\\x9a\\xb6\\xda\\x31\\x41\\x02\\xc7\\x44\\x3d\\x41\\x96\\x0e\\x3a\\x3d\\x8c\\x35\\x9c\\x4a\\x4e\\xc6\\x26\\xfc\\xc4\\x4e\\x11\\x0e\\xa7\\x44\\xd4\\x17\\xaa\\x85\\x0d\\xb8\\xec\\xdb\\xfe\\x34\\x0a\\x96\\x2d\\xb0\\xd8\\xc5\\x7d\\xc5\\x17\\xbe\\x8b\\x40\\xd1\\x4d\\xe9\\x7b\\x1e\\x9e\\x04\\x26\\x44\\x7f\\xde\\x0a\\x04\\xe5\\x06\\x79\\xc5\\x3b\\xa1\\xaa\\x3c\\xdc\\x38\\xc7\\xed\\xe6\\xdb\\x6c\\x05\\x4b\\x1e\\x9c\\xe7\\xde\\xad\\xaf\\x93\\xeb\\xdd\\x47\\x07\\x91\\x53\\x5f\\x3e\\xcf\\xab\\xf3\\x41\\x63\\x55\\xf7\\xa1\\x8a\\x38\\xaf\\xe6\\xbf\\xe5\\x07\\xef\\x08\\xc4\\x37\\x3a\\x4a\\x69\\xde\\xe1\\xfc\\xb6\\x5b\\x16\\x31\\xa0\\xde\\x14\\x88\\x64\\x9d\\x0b\\xb2\\x67\\x9a\\x9a\\x45\\xf6\\x78\\x20\\xb2\\xa4\\xa1\\xe5\\xa5\\x48\\x07\\x2d\\xa7\\x03\\x2d\\x17\\x25\\x55\\xe7\\x88\\xcc\\x98\\x60\\xeb\\xb3\\xc0\\xc3\\x59\\x49\\x37\\x51\\xb0\\xc2\\xc9\\x50\\xa7\\xfc\\xf4\\x80\\x3c\\x14\\x7f\\x93\\x40\\xfc\\x93\\xd8\\x5f\\x1e\\xfa\\x57\\xb3\\x90\\x81\\xb9\\x2d\\x93\\x47\\x3f\\xd2\\x35\\x16\\xc4\\x95\\x0e\\xd4\\xb2\\x9a\\x2e\\xd3\\xa0\\x42\\xae\\x3d\\x92\\xa1\\xe5\\x2c\\xb7\\x09\\x63\\x6f\\xc7\\x27\\x2f\\xd7\\x47\\x20\\x8b\\xee\\x2b\\x16\\xd1\\x91\\xe4\\xc6\\xde\\xb2\\x76\\x72\\xaa\\x34\\xe4\\x39\\x14\\xcf\\xf2\\x05\\x5c\\xa4\\xee\\x8b\\xa3\\xe1\\xdc\\x58\\xa6\\x79\\xc7\\xf7\\xde\\xe2\\xc1\\xd5\\x3e\\x28\\x75\\x09\\x70\\xf5\\x7d\\x85\\xea\\xb1\\xc2\\x6b\\x89\\xbb\\x73\\xe0\\xb1\"},\n{{0xc5,0x96,0x29,0x61,0x81,0x5b,0x57,0xcd,0x16,0x24,0x03,0xce,0x08,0xe4,0x10,0x5d,0xdb,0x8a,0xae,0x2d,0x3f,0x53,0x3f,0xb4,0x9c,0xc2,0x36,0xb5,0xff,0x50,0x4d,0x6e,},{0xdb,0xad,0xe7,0x22,0x36,0xba,0x12,0xd4,0x97,0x7b,0xa4,0x6c,0x36,0x4b,0xb6,0x9a,0x88,0x7f,0xf4,0x02,0xde,0x91,0xd4,0x7a,0xfa,0x9b,0x93,0xc9,0x5b,0xe7,0x1e,0x7e,},{0x81,0x01,0xba,0xef,0x00,0x4e,0xb6,0xf5,0xad,0x4d,0xe0,0x97,0x9f,0xf3,0x6d,0x34,0x39,0xb8,0x21,0x2b,0xdc,0x92,0x89,0x42,0xe4,0x31,0x91,0x5b,0x3f,0xd1,0x8b,0xc2,0xad,0x67,0xb2,0x6f,0x18,0x94,0x1d,0xcb,0x16,0xd2,0xc2,0x91,0x91,0x42,0x1e,0x77,0x9f,0xed,0x62,0x2f,0xd9,0xf5,0x82,0x64,0x4e,0xaa,0xdb,0x3f,0xe5,0xc0,0x98,0x03,},\"\\x4a\\xe4\\x14\\x8d\\x79\\xca\\x94\\x25\\x59\\x2a\\xa2\\x40\\xbd\\x15\\x34\\x24\\xa3\\xbf\\x4a\\xe2\\x73\\x95\\x87\\x2c\\xe5\\x72\\x8a\\xc7\\x61\\x35\\x96\\xa7\\x7d\\x5c\\xe8\\x56\\x5d\\x8d\\x6e\\x1b\\x59\\x35\\xb3\\x90\\x6c\\xaf\\xe1\\xff\\x88\\x8e\\xbc\\x98\\x15\\xe0\\x4a\\x62\\x4d\\xfc\\x4c\\x69\\x07\\xb8\\x5f\\x6f\\x1a\\x0d\\xbd\\xdf\\xf6\\x2e\\x91\\x51\\x22\\x0d\\x47\\x44\\x62\\xcb\\x9f\\x13\\xd8\\x9d\\x3a\\x93\\xa0\\x0b\\xa2\\xb6\\x0f\\x7e\\x7c\\xa6\\x3d\\xa1\\x7a\\x63\\x79\\xd6\\x73\\x55\\x1e\\x79\\x0b\\x59\\x11\\x72\\x7c\\x90\\x6d\\xc9\\x4f\\x86\\xd8\\x27\\x75\\x46\\xc1\\x56\\x4a\\x45\\x57\\x3a\\x77\\x43\\xbb\\x8a\\x13\\x8c\\xde\\x87\\xb3\\xb2\\xf2\\x8e\\x5e\\x24\\x59\\x40\\xa5\\x1e\\x7c\\x45\\x8c\\xf8\\xc5\\xf0\\xa7\\x02\\x75\\x96\\x25\\x53\\xe0\\xd2\\x39\\x0d\\x17\\x1d\\xb4\\x4c\\x2f\\x7a\\x5c\\x9e\\x9f\\x93\\xb9\\x0f\\x7a\\x5f\\x54\\xf1\\x91\\xb0\\xd8\\x75\\xba\\xd7\\xe0\\xbe\\xb9\\x80\\xc2\\xa3\\x36\\x5c\\xd7\\xb9\\x20\\x87\\x24\\xf4\\x65\\x44\\x18\\x11\\x7e\\x16\\xef\\x71\\x34\\xe3\\xe2\\x79\\x4b\\x6f\\x9e\\x80\\xec\\xab\\xec\\xa3\\x25\\x4e\\x70\\x4c\\x21\\xb7\\xad\\x30\\xc5\\xde\\xe0\\x17\\xea\\x25\\x33\\xfc\\xd9\\x42\\x51\\xe5\\x5a\\xe7\\x5a\\x8c\\xc6\\xdb\\x66\\x74\\xb3\\x9c\\x88\\xca\\x42\\x00\\x60\\x43\\xd6\\xbd\\x9b\\x00\\xec\\xf6\\x4c\\xea\\xfe\\xeb\\x40\\x2b\\x1f\\x22\\xfd\\x89\\x1f\\x2d\\x11\\xc5\\x15\\xc1\\xab\\xa6\\xa2\\xd4\\xc0\\xbd\\x21\\x81\\xa4\\x8e\\x43\\xfd\\x1c\\x0a\\xf9\\x1f\\x9b\\x7b\\x7d\\x37\\xf3\\xdc\\xd9\\xe4\\xc0\\xa7\\x59\\x74\\x84\\x67\\xd3\\x48\\xa8\\xb1\\x16\\xdf\\x6a\\x4e\\xac\\xf1\\x78\\xae\\xcc\\xcd\\x30\\x66\\xe9\\x2d\\xca\\x45\\xda\\x7a\\x3e\\x31\\x9f\\x37\\x71\\xeb\\x34\\x90\\x02\\x21\\x93\\xc5\\xb6\\x52\\xf0\\x45\\x68\\x7e\\x17\\x05\\xf2\\xe5\\x69\\x1c\\x13\\x4b\\xe4\\x00\\x63\\x53\\xd7\\xec\\xd0\\xe9\\x18\\xd5\\xde\\x0f\\x3b\\x87\\x80\\x9f\\xca\\x4a\\xcf\\xab\\x94\\xe1\\x14\\x8f\\xf7\\xcf\\x07\\xf7\\xcf\\xd0\\xc7\\x45\\xdd\\x2b\\xe0\\x1a\\x24\\xa5\\xe0\\x69\\x28\\x06\\x98\\xbc\\x3f\\x54\\x00\\xa6\\xdc\\xd0\\x8e\\x44\\x59\\x5c\\x03\\x88\\xe4\\x48\\x33\\x76\\x8f\\xc4\\x91\\x04\\xee\\x11\\x5b\\xdc\\xb0\\x2b\\xfb\\xda\\x17\\x9d\\x16\\x4c\\xe9\\x69\\x93\\x66\\x29\\xf2\\x33\\x56\\x01\\xb5\\x6f\\xe8\\xf7\\x85\\xcc\\xa3\\x80\\x5f\\x04\\x03\\x87\\x2c\\x62\\xf7\\x3c\\x3c\\xe8\\x05\\x63\\xd0\\x70\\xe9\\x76\\xd8\\xec\\xc5\\x11\\x24\\xe2\\xca\\xce\\x7e\\xe1\\x86\\x99\\x04\\x7c\\xb0\\xf8\\xfb\\x8d\\x9c\\x59\\xb8\\xa6\\x0d\\x12\\xc0\\x8a\\x09\\xfc\\xe5\\x8f\\xd9\\x2c\\xd3\\x6d\\xb6\\xa8\\xe8\\x9d\\x11\\x8c\\xf8\\x8a\\x92\\xdc\\x8a\\x26\\x00\\xbd\\x95\\xf5\\xa8\\xe8\\x5d\\xb5\\xcd\\xbb\\x24\\x9c\\xa8\\x12\\xca\\x20\\x9c\\x76\\x18\\x05\\x1c\\x45\\x64\\xa3\\xa0\\xe1\\x92\\xb7\\xe4\\x59\\x92\\x45\\x6c\\x87\\xd1\\x74\\x12\\xc1\\x1a\\xde\\xad\\x52\\x6a\\xb8\\xdb\\x21\\x45\\x2f\\x74\\x71\\xd1\\x7f\\x2e\\xbc\\x90\\x01\\x54\\x50\\xed\\xf4\\xf0\\xa4\\x4f\\xb2\\xf4\\x90\\x5f\\x74\\xd7\\x02\\x75\\xcc\\xd8\\x9b\\x93\\xa6\\x50\\x47\\x3c\\x02\\xa7\\xda\\x0c\\xbc\\x67\\x91\\x5c\\xeb\\x7a\\x1e\\xa5\\x9f\\xa8\\x88\\x44\\x72\\xdc\\x91\\x7e\\xe9\\xd2\\x46\\x33\\x9c\\x59\\x26\\x84\\x3e\\xcf\\x53\\xfa\\xfd\\xc5\\x6a\\x69\\x56\\x01\\xa2\\x76\\xc2\\x3a\\x84\\x3e\\x4d\\x30\\xf8\\x9c\\x97\\xc9\\xee\\xe6\\xdf\\xc7\"},\n{{0xde,0xe6,0x86,0x6c,0x78,0x74,0xc1,0x27,0x02,0x9e,0x96,0xe0,0x25,0xbf,0xfd,0x35,0xfc,0xfd,0xf4,0xdc,0x36,0x96,0x6c,0x15,0xee,0x62,0x93,0x36,0x80,0x13,0xd3,0x79,},{0x08,0xc9,0x4d,0xa3,0x51,0xbb,0x2b,0xee,0x72,0xe6,0xe1,0x96,0xbe,0x74,0x88,0x07,0x58,0x37,0x62,0xc5,0x29,0x6e,0x05,0xb1,0xe5,0x29,0xc4,0x7c,0x6b,0xba,0xce,0xc6,},{0xb7,0x8e,0xbd,0x6d,0x65,0xb1,0x75,0xd4,0xbb,0xd3,0xd9,0xa2,0x08,0x2a,0x0e,0xfe,0x6e,0x99,0x1c,0xb2,0xe4,0x03,0x52,0x1e,0xec,0xe0,0x0f,0x41,0x8f,0x2e,0x95,0x6b,0x66,0x90,0x78,0x80,0x65,0x8b,0x9e,0x8e,0x47,0x69,0x96,0x53,0xd1,0x59,0x13,0x23,0x80,0xd9,0xce,0x11,0x09,0xaf,0x9c,0x27,0x57,0xda,0xf4,0xcd,0xf1,0x8c,0x9c,0x0a,},\"\\xf1\\xaa\\x19\\x77\\xf5\\x31\\x1b\\x53\\x8b\\x94\\x0a\\xe4\\x42\\xa3\\xab\\xc8\\x9a\\xac\\xcd\\xcd\\x0a\\x79\\x38\\x0a\\x24\\x25\\x8d\\x4a\\x9f\\x1c\\xe6\\x38\\xfc\\x2f\\x5b\\xa2\\xe5\\x3f\\x8e\\x1f\\xa6\\x17\\x6f\\x17\\x8d\\x90\\x24\\xa7\\x78\\x94\\xc2\\x8c\\xad\\x42\\xd6\\x29\\xc7\\x93\\xd6\\x8a\\x02\\xbe\\x94\\x11\\xb5\\x27\\xac\\xad\\xae\\x7e\\x5c\\x38\\x51\\xba\\xbb\\x45\\xb5\\xfe\\xce\\x32\\x9e\\x29\\x03\\x4c\\xd4\\x25\\x71\\x08\\x37\\x27\\xf3\\x5a\\xec\\xad\\x7c\\x9b\\xe5\\x95\\x4e\\xc6\\x4e\\x8f\\x6e\\xca\\xb7\\xcc\\x05\\x90\\xe5\\x41\\x56\\xa4\\xe1\\xa4\\x53\\x03\\x84\\x9f\\x78\\x97\\xe7\\x2c\\xf2\\xfb\\xcd\\x84\\xf5\\x6c\\x72\\xf9\\x41\\xdb\\xb0\\xb0\\x9a\\x32\\xe6\\x38\\x6f\\xbe\\x18\\xa4\\x3b\\xb9\\xbd\\x8b\\x79\\x3e\\x4b\\x9e\\xdd\\x53\\x21\\x03\\xea\\xb5\\x4d\\x62\\x71\\x17\\xd2\\x81\\x39\\xb6\\x4e\\x60\\xfb\\x0b\\x81\\xd0\\x90\\x01\\xbb\\x24\\x04\\xd9\\x25\\xe2\\x65\\xba\\xbd\\xc6\\x9f\\x96\\xb1\\x35\\xe9\\xe6\\xab\\x7f\\xeb\\xb1\\xed\\x30\\x75\\xd6\\xaa\\x2a\\xbd\\x2b\\xbf\\x9b\\x65\\xfa\\x9b\\x3b\\x71\\x91\\xef\\x37\\xb6\\x33\\x60\\x59\\x10\\xee\\x88\\xf6\\x6e\\xad\\xa7\\x9f\\x00\\xf5\\x36\\xd3\\x80\\xb8\\x2f\\x2f\\x4b\\x59\\x85\\x11\\x2d\\xe0\\x04\\xa5\\x66\\x03\\xf4\\x43\\x6d\\x8f\\xf3\\x00\\xf4\\x2b\\xf5\\xac\\xdc\\x7a\\x4b\\xf1\\xea\\x9d\\x41\\x96\\xc4\\x80\\x49\\x5b\\xac\\xb0\\x06\\x76\\x30\\xfc\\xc0\\x00\\xb4\\xf2\\x79\\xdd\\x3f\\x30\\xf3\\x53\\x27\\x60\\x92\\xd1\\x52\\xc3\\xf4\\x3e\\xfd\\xc0\\x41\\xde\\xaa\\x0b\\xc5\\xaa\\xab\\xa7\\xf8\\xbb\\xd8\\x5e\\x69\\xc1\\x37\\x42\\xd6\\x78\\xdb\\xb6\\x53\\x60\\xaa\\xf7\\xb5\\x48\\xa0\\x44\\xc0\\xec\\x60\\xa5\\x7a\\xf6\\x50\\xbc\\x31\\x97\\x3f\\x83\\x2f\\x96\\x12\\x65\\xbc\\x23\\x18\\xf8\\x07\\x75\\xaf\\xd5\\x1f\\x55\\x19\\x4c\\x42\\x42\\x3f\\x7b\\xf4\\xe0\\x05\\x2f\\x98\\xcb\\x20\\x69\\x13\\xff\\xea\\x48\\x86\\xec\\xd2\\x7a\\x41\\x79\\xb1\\x37\\x73\\xf9\\x47\\x50\\x2e\\x18\\x1b\\xf1\\xa1\\xf2\\xc6\\x2c\\x6f\\x08\\xc2\\x03\\x59\\xf0\\x6d\\xf2\\xb1\\x81\\x27\\x04\\x3b\\x10\\x70\\xd0\\x19\\x4e\\xf5\\xe5\\xbf\\xd3\\x7d\\x22\\x79\\x84\\xcf\\xb1\\x09\\x89\\xf2\\x1c\\x71\\xad\\x0f\\xe3\\xb8\\x12\\x27\\xd3\\xa7\\x17\\x89\\x45\\x5e\\xda\\x38\\x3c\\x22\\xf4\\xd2\\xfc\\xc7\\x25\\x79\\xf4\\x65\\xe0\\x66\\xf3\\xd3\\x8b\\xef\\xc0\\x24\\xef\\xef\\x6c\\x2e\\x32\\x96\\x49\\xce\\x43\\x4d\\x62\\x73\\x67\\xa9\\x00\\xd0\\x7f\\xe6\\x23\\x42\\x35\\xc8\\x46\\x56\\xea\\xc5\\xdd\\x0d\\x78\\x8c\\xf4\\xcb\\x31\\x87\\x18\\x24\\xd6\\x6a\\xe4\\xbc\\x89\\xed\\xeb\\xa1\\xb3\\x67\\x01\\x29\\x84\\x53\\xe8\\xda\\x1e\\x69\\xcf\\xb8\\x68\\x09\\x5c\\x3b\\xe6\\xed\\x21\\x82\\xda\\x1c\\xff\\x49\\x05\\xaf\\xd2\\x07\\x31\\xac\\x1e\\xd9\\x84\\x16\\x47\\x37\\x90\\x3c\\x7d\\x8b\\xb0\\xad\\x16\\xae\\xcf\\x2f\\xae\\x33\\x74\\x04\\xfe\\x35\\x66\\x45\\x15\\xd9\\x3b\\x70\\x1e\\x2f\\x87\\x86\\x64\\x45\\x4c\\x0d\\xec\\xd1\\xc6\\x55\\x8a\\xda\\xce\\x3c\\xdb\\x22\\x75\\x07\\xa5\\x16\\x06\\xf0\\xa5\\x4d\\xf8\\xdf\\xaa\\x42\\x02\\x05\\xdd\\x57\\xc6\\x52\\x42\\xff\\x24\\xa4\\x05\\xef\\x85\\xc9\\x2d\\x60\\x28\\x86\\x93\\x2b\\x35\\xfa\\xbe\\x9c\\x3b\\xce\\xbf\\xc6\\x23\\x56\\x39\\xe8\\x73\\xfc\\x2d\\xd0\\x84\\xc5\\x2c\\xd6\\xa7\\x41\\x3b\\x83\\x1d\\x1c\\xc9\\x99\\x31\\x37\\x3a\\xab\\xd8\\x47\\x62\\x0e\\xb6\\x9b\\xb0\\xfa\"},\n{{0x52,0x36,0x23,0x55,0x59,0x95,0xba,0xaf,0x2a,0x27,0xad,0xcb,0x1e,0xba,0xfa,0xa8,0x02,0xd2,0x3e,0xf7,0xab,0xfa,0x97,0x75,0xf2,0xc9,0xbf,0xa0,0x7d,0x64,0xe0,0xac,},{0xd3,0x4d,0xea,0xe6,0x52,0x3e,0x61,0x9d,0xd1,0xbf,0xc8,0xf3,0xc4,0xca,0x4b,0x78,0xb3,0x68,0xc0,0xf7,0x20,0x03,0x5e,0x14,0x4c,0x3f,0x2f,0xc1,0x05,0xd4,0xce,0x21,},{0xb1,0x87,0x17,0x29,0xfe,0xc8,0x3a,0xea,0x0a,0xaa,0x47,0x2b,0x70,0x0a,0xcd,0x09,0x48,0x13,0xfb,0x7d,0x57,0xb9,0x09,0xe0,0xea,0xaf,0x21,0xee,0x93,0x18,0x47,0xad,0xde,0xdd,0x2b,0xe8,0x53,0x3d,0x0c,0x30,0x5c,0xb9,0xcf,0xe5,0x08,0x0e,0x76,0xc2,0x80,0x8b,0x6e,0x51,0xc9,0x82,0x62,0x90,0xdd,0xb7,0xb9,0x4b,0x6f,0x7d,0x58,0x0b,},\"\\x05\\x53\\xe6\\x9e\\xf2\\x11\\x65\\x2d\\x62\\xbf\\x28\\x1b\\xfb\\xdd\\x37\\xbe\\x22\\x76\\x9d\\x81\\x97\\x46\\x36\\x1c\\x7d\\x65\\xdd\\xd0\\xfa\\xd6\\x77\\xcc\\x04\\x38\\xb3\\x01\\xd1\\x51\\x45\\x78\\xe0\\xda\\x58\\xe5\\x5f\\x72\\x9f\\xa8\\xe6\\x6d\\xde\\xb7\\xf9\\x73\\xa8\\x18\\xd2\\x4e\\xd8\\xfe\\x02\\x7b\\x84\\x91\\x17\\x9d\\x07\\x77\\x3f\\xb5\\xd2\\xbb\\x96\\xaa\\x85\\xd6\\xb3\\x75\\x04\\x54\\xe5\\x0d\\xe9\\x1f\\x9b\\x88\\xae\\xe8\\xaa\\x68\\xe6\\xbb\\x53\\xed\\xc6\\x66\\x77\\xb4\\x1e\\x60\\x1a\\x46\\xab\\x4b\\xb1\\xe6\\x56\\xe7\\xfa\\x5f\\x01\\x79\\x93\\x36\\x80\\xa6\\xec\\x95\\x04\\x27\\x5e\\x7a\\xdf\\x7a\\x32\\x48\\xe6\\x3a\\x0f\\xc9\\xc1\\xea\\x5a\\xe9\\x6c\\xd0\\xc6\\x5a\\x89\\xa7\\x7c\\xec\\x2b\\x1f\\xd8\\xf4\\x53\\x7e\\x82\\xc1\\xc4\\x88\\xa6\\x9a\\x0e\\xf6\\x4f\\x58\\x73\\x4d\\x9e\\x73\\x47\\x8e\\x1d\\x1f\\x12\\x31\\x14\\xef\\x66\\x08\\x5e\\x0b\\xa3\\x19\\xcb\\x81\\x0b\\x66\\xaf\\x96\\xd1\\x30\\x8b\\x1a\\x2b\\xd9\\x2b\\xa2\\xc2\\x65\\xaa\\x30\\x9e\\xcd\\x55\\x57\\xd4\\x02\\xc3\\x80\\x2c\\xae\\x8d\\x7e\\x95\\x00\\x7f\\xe6\\x10\\xc2\\xaa\\x75\\xfc\\x66\\x19\\x6c\\x3f\\xad\\xfe\\x99\\x7d\\x6d\\x59\\x98\\xe1\\x8d\\x26\\x0e\\x9d\\xa3\\x1d\\xa9\\x21\\x8c\\xba\\xd1\\x03\\xcb\\xfc\\x2c\\x75\\x47\\x76\\x5d\\x67\\xe8\\x1f\\x24\\xac\\x83\\x02\\x2e\\xf5\\x1c\\x6c\\xc5\\x08\\x64\\x36\\x6a\\x35\\xf6\\xb9\\xb9\\xaf\\x94\\xe8\\x4c\\xaa\\x9f\\xd3\\xd7\\x67\\xc8\\x31\\xf0\\x96\\x7a\\x61\\x46\\x2f\\xbc\\xfc\\xc8\\x03\\xf1\\x2e\\x37\\x39\\x03\\x9a\\xcd\\x5d\\xbe\\x93\\x66\\xf0\\x5a\\x33\\xdb\\xea\\xf3\\x60\\xe2\\xdd\\xcb\\xe5\\xc4\\x43\\xf8\\x0e\\xf2\\xad\\x62\\xe0\\x3c\\x1d\\x5b\\x70\\xcd\\xea\\xb4\\xa7\\xdd\\x41\\x55\\x30\\x64\\xc8\\xd1\\x52\\x70\\x9d\\xef\\xf8\\x20\\x76\\xb9\\x07\\x11\\x92\\x37\\x6f\\x51\\xd4\\xc2\\xc7\\x1a\\x84\\xe8\\x9f\\x2d\\x94\\x01\\x32\\x0c\\x2e\\x45\\x9b\\x3e\\x24\\x3c\\xca\\x7c\\x26\\xfd\\x09\\x8c\\x26\\x4a\\xc8\\x8e\\xf6\\x38\\x92\\x1d\\x98\\x0b\\x0a\\xe9\\xe5\\x12\\xd3\\x72\\x03\\x7d\\x81\\xad\\xc4\\x81\\x26\\xd7\\xc9\\xe4\\xb5\\xaf\\xa5\\x7e\\xc2\\x65\\xd4\\x01\\xb9\\x65\\x3e\\x92\\x8a\\xfb\\x7d\\xff\\x9b\\x48\\xe2\\x95\\xe4\\x70\\xd6\\xb5\\x2e\\x88\\xb3\\x9d\\x0a\\x40\\xcb\\x8e\\xba\\x24\\x9f\\x8b\\x13\\xd8\\x11\\x13\\xdb\\x1d\\x3e\\x01\\xef\\x75\\xc7\\x22\\xf2\\x69\\x48\\x8e\\x96\\x3c\\xc8\\x18\\x27\\x04\\xf8\\xca\\x01\\x8e\\x73\\xdc\\x07\\x14\\xe9\\xa9\\xfc\\x79\\xbc\\x43\\x63\\xc2\\x8c\\xb3\\x98\\x43\\x74\\xf7\\x3b\\x2a\\xa8\\x78\\x6e\\x74\\xe0\\x15\\x95\\x07\\xa2\\x98\\x83\\xfe\\x0e\\xd1\\xc6\\x00\\xf5\\x25\\x88\\x5f\\x2f\\x10\\xea\\x00\\x6c\\x39\\xe5\\x9b\\x92\\x5b\\x76\\x5b\\x1e\\xde\\x53\\x42\\x57\\xa1\\xf4\\x0f\\x28\\x46\\x58\\x4f\\x06\\x97\\x46\\xb5\\x2f\\x56\\x00\\x43\\x0a\\x28\\x63\\xd7\\x93\\x60\\x95\\xfb\\xc2\\x2a\\x6a\\xda\\x67\\x4d\\x41\\xb3\\x74\\xe2\\xb8\\xb9\\xa1\\x9f\\xa7\\x12\\xb5\\x94\\x45\\x33\\xbb\\x6d\\x6e\\xc4\\x3b\\x89\\xd4\\x97\\x1b\\x70\\x20\\x5a\\x6a\\xcd\\x72\\xa8\\x99\\xda\\x12\\x61\\x82\\x04\\xdb\\x0c\\x3e\\x82\\x67\\xb8\\x45\\x79\\x16\\x93\\xe0\\xae\\x6a\\x35\\xf1\\x4d\\xa1\\xf8\\xf4\\xdd\\x17\\x4b\\xce\\x03\\x18\\xfb\\x5a\\x00\\xf6\\x72\\xed\\xe4\\x23\\x04\\xcf\\x04\\xa6\\x27\\x60\\x57\\x75\\x90\\xf2\\x7e\\x2d\\xfa\\x6e\\x5e\\x27\\x95\\xd6\\x60\\x53\\xb3\\x0a\\xf7\\xf1\\xbf\"},\n{{0x57,0x5f,0x8f,0xb6,0xc7,0x46,0x5e,0x92,0xc2,0x50,0xca,0xee,0xc1,0x78,0x62,0x24,0xbc,0x3e,0xed,0x72,0x9e,0x46,0x39,0x53,0xa3,0x94,0xc9,0x84,0x9c,0xba,0x90,0x8f,},{0x71,0xbf,0xa9,0x8f,0x5b,0xea,0x79,0x0f,0xf1,0x83,0xd9,0x24,0xe6,0x65,0x5c,0xea,0x08,0xd0,0xaa,0xfb,0x61,0x7f,0x46,0xd2,0x3a,0x17,0xa6,0x57,0xf0,0xa9,0xb8,0xb2,},{0x90,0x3b,0x48,0x4c,0xb2,0x4b,0xc5,0x03,0xcd,0xce,0xd8,0x44,0x61,0x40,0x73,0x25,0x6c,0x6d,0x5a,0xa4,0x5f,0x1f,0x9f,0x62,0xc7,0xf2,0x2e,0x56,0x49,0x21,0x2b,0xc1,0xd6,0xef,0x9e,0xaa,0x61,0x7b,0x6b,0x83,0x5a,0x6d,0xe2,0xbe,0xff,0x2f,0xaa,0xc8,0x3d,0x37,0xa4,0xa5,0xfc,0x5c,0xc3,0xb5,0x56,0xf5,0x6e,0xdd,0xe2,0x65,0x1f,0x02,},\"\\x2c\\xc3\\x72\\xe2\\x5e\\x53\\xa1\\x38\\x79\\x30\\x64\\x61\\x0e\\x7e\\xf2\\x5d\\x9d\\x74\\x22\\xe1\\x8e\\x24\\x96\\x75\\xa7\\x2e\\x79\\x16\\x7f\\x43\\xba\\xf4\\x52\\xcb\\xac\\xb5\\x01\\x82\\xfa\\xf8\\x07\\x98\\xcc\\x38\\x59\\x7a\\x44\\xb3\\x07\\xa5\\x36\\x36\\x0b\\x0b\\xc1\\x03\\x0f\\x83\\x97\\xb9\\x4c\\xbf\\x14\\x73\\x53\\xdd\\x2d\\x67\\x1c\\xb8\\xca\\xb2\\x19\\xa2\\xd7\\xb9\\xeb\\x82\\x8e\\x96\\x35\\xd2\\xea\\xb6\\xeb\\x08\\x18\\x2c\\xb0\\x35\\x57\\x78\\x3f\\xd2\\x82\\xaa\\xf7\\xb4\\x71\\x74\\x7c\\x84\\xac\\xf7\\x2d\\xeb\\xe4\\x51\\x45\\x24\\xf8\\x44\\x7b\\xaf\\xcc\\xcc\\xec\\x0a\\x84\\x0f\\xec\\xa9\\x75\\x5f\\xf9\\xad\\xb6\\x03\\x01\\xc2\\xf2\\x5d\\x4e\\x3b\\xa6\\x21\\xdf\\x5a\\xd7\\x21\\x00\\xc4\\x5d\\x7a\\x4b\\x91\\x55\\x9c\\x72\\x5a\\xb5\\x6b\\xb2\\x98\\x30\\xe3\\x5f\\x5a\\x6f\\xaf\\x87\\xdb\\x23\\x00\\x1f\\x11\\xff\\xba\\x9c\\x0c\\x15\\x44\\x03\\x02\\x06\\x58\\x27\\xa7\\xd7\\xaa\\xae\\xab\\x7b\\x44\\x6a\\xbc\\xe3\\x33\\xc0\\xd3\\x0c\\x3e\\xae\\x9c\\x9d\\xa6\\x3e\\xb1\\xc0\\x39\\x1d\\x42\\x69\\xb1\\x2c\\x45\\xb6\\x60\\x29\\x06\\x11\\xac\\x29\\xc9\\x1d\\xbd\\x80\\xdc\\x6e\\xd3\\x02\\xa4\\xd1\\x91\\xf2\\x92\\x39\\x22\\xf0\\x32\\xab\\x1a\\xc1\\x0c\\xa7\\x32\\x3b\\x52\\x41\\xc5\\x75\\x1c\\x3c\\x00\\x4a\\xc3\\x9e\\xb1\\x26\\x7a\\xa1\\x00\\x17\\xed\\x2d\\xac\\x6c\\x93\\x4a\\x25\\x0d\\xda\\x8c\\xb0\\x6d\\x5b\\xe9\\xf5\\x63\\xb8\\x27\\xbf\\x3c\\x8d\\x95\\xfd\\x7d\\x2a\\x7e\\x7c\\xc3\\xac\\xbe\\xe9\\x25\\x38\\xbd\\x7d\\xdf\\xba\\x3a\\xb2\\xdc\\x9f\\x79\\x1f\\xac\\x76\\xcd\\xf9\\xcd\\x6a\\x69\\x23\\x53\\x4c\\xf3\\xe0\\x67\\x10\\x8f\\x6a\\xa0\\x3e\\x32\\x0d\\x95\\x40\\x85\\xc2\\x18\\x03\\x8a\\x70\\xcc\\x76\\x8b\\x97\\x2e\\x49\\x95\\x2b\\x9f\\xe1\\x71\\xee\\x1b\\xe2\\xa5\\x2c\\xd4\\x69\\xb8\\xd3\\x6b\\x84\\xee\\x90\\x2c\\xd9\\x41\\x0d\\xb2\\x77\\x71\\x92\\xe9\\x00\\x70\\xd2\\xe7\\xc5\\x6c\\xb6\\xa4\\x5f\\x0a\\x83\\x9c\\x78\\xc2\\x19\\x20\\x3b\\x6f\\x1b\\x33\\xcb\\x45\\x04\\xc6\\xa7\\x99\\x64\\x27\\x74\\x1e\\x68\\x74\\xcf\\x45\\xc5\\xfa\\x5a\\x38\\x76\\x5a\\x1e\\xbf\\x17\\x96\\xce\\x16\\xe6\\x3e\\xe5\\x09\\x61\\x2c\\x40\\xf0\\x88\\xcb\\xce\\xff\\xa3\\xaf\\xfb\\xc1\\x3b\\x75\\xa1\\xb9\\xc0\\x2c\\x61\\xa1\\x80\\xa7\\xe8\\x3b\\x17\\x88\\x4f\\xe0\\xec\\x0f\\x2f\\xe5\\x7c\\x47\\xe7\\x3a\\x22\\xf7\\x53\\xea\\xf5\\x0f\\xca\\x65\\x5e\\xbb\\x19\\x89\\x6b\\x82\\x7a\\x34\\x74\\x91\\x1c\\x67\\x85\\x3c\\x58\\xb4\\xa7\\x8f\\xd0\\x85\\xa2\\x32\\x39\\xb9\\x73\\x7e\\xf8\\xa7\\xba\\xff\\x11\\xdd\\xce\\x5f\\x2c\\xae\\x05\\x43\\xf8\\xb4\\x5d\\x14\\x4a\\xe6\\x91\\x8b\\x9a\\x75\\x29\\x3e\\xc7\\x8e\\xa6\\x18\\xcd\\x2c\\xd0\\x8c\\x97\\x13\\x01\\xcd\\xfa\\x0a\\x92\\x75\\xc1\\xbf\\x44\\x1d\\x4c\\x1f\\x87\\x8a\\x2e\\x73\\x3c\\xe0\\xa3\\x3b\\x6e\\xcd\\xac\\xbb\\xf0\\xbd\\xb5\\xc3\\x64\\x3f\\xa4\\x5a\\x01\\x39\\x79\\xcd\\x01\\x39\\x69\\x62\\x89\\x74\\x21\\x12\\x9a\\x88\\x75\\x7c\\x0d\\x88\\xb5\\xac\\x7e\\x44\\xfd\\xbd\\x93\\x8b\\xa4\\xbc\\x37\\xde\\x49\\x29\\xd5\\x37\\x51\\xfb\\xb4\\x3d\\x4e\\x09\\xa8\\x0e\\x73\\x52\\x44\\xac\\xad\\xa8\\xe6\\x74\\x9f\\x77\\x78\\x7f\\x33\\x76\\x3c\\x74\\x72\\xdf\\x52\\x93\\x45\\x91\\x59\\x1f\\xb2\\x26\\xc5\\x03\\xc8\\xbe\\x61\\xa9\\x20\\xa7\\xd3\\x7e\\xb1\\x68\\x6b\\x62\\x21\\x69\\x57\\x84\\x4c\\x43\\xc4\\x84\\xe5\\x87\\x45\\x77\\x55\\x53\"},\n{{0x03,0x74,0x9c,0xa2,0x04,0x58,0xa3,0x5a,0x37,0xa8,0xd7,0xa2,0x6f,0x95,0x9f,0x0d,0x59,0xf6,0xdc,0x99,0x73,0xfa,0x36,0x3c,0x1f,0xf8,0xca,0x4e,0x63,0x8c,0x2c,0xd3,},{0xea,0xeb,0x94,0xf4,0x06,0xbd,0xe6,0xa7,0xcf,0x8b,0xde,0x2a,0xdf,0x30,0x81,0xf8,0x37,0x5b,0x87,0xd9,0x33,0x5d,0x49,0x6c,0x71,0xd0,0x42,0xcd,0x2e,0xaa,0x16,0x6c,},{0x78,0xa3,0x87,0x7e,0x02,0xbd,0xfd,0x01,0x5e,0x7f,0x86,0xa3,0x27,0xa4,0x8c,0xc3,0xa5,0x23,0x0b,0xbd,0xb1,0x24,0x3f,0x1a,0x8c,0xf2,0x27,0xf7,0x8a,0xb5,0xe7,0x68,0x0d,0xe3,0x01,0xa9,0x15,0xdc,0x11,0xb3,0x36,0xfb,0x5f,0x65,0x66,0x84,0x8b,0x42,0x50,0x0a,0xdb,0x5d,0x67,0x39,0x69,0x12,0x2b,0xa8,0xf0,0x05,0x3c,0xd3,0x06,0x0b,},\"\\xee\\xf5\\xce\\xeb\\xd0\\x44\\x5e\\x9c\\x91\\x81\\xaf\\xf9\\xc6\\xf2\\x66\\x01\\x28\\xfc\\xfb\\x63\\x69\\x1a\\x42\\xcf\\xa4\\x43\\xd6\\xa6\\x49\\xef\\xc5\\xfa\\xd8\\xc2\\x08\\x03\\x76\\x3e\\xe9\\x7d\\x1d\\xba\\x08\\xe6\\x3e\\x08\\xa2\\x61\\x6d\\xa0\\x50\\x77\\x48\\x9f\\x2f\\xa2\\xc5\\x6b\\x75\\x34\\xf9\\x40\\x26\\x19\\x25\\x1f\\xdf\\x9c\\x32\\x0d\\xe7\\xaf\\x10\\x9e\\x2f\\xd8\\xb2\\x56\\x5c\\xe8\\xa7\\x52\\x4c\\x94\\x05\\xec\\x0f\\x8f\\xca\\xa7\\x14\\x9a\\x6d\\x21\\x0e\\xfd\\xe8\\x3b\\x11\\x1c\\xf8\\x2d\\xc0\\x83\\x5c\\xf9\\x4f\\x20\\xcd\\xb0\\x21\\xb7\\x3b\\xd2\\x62\\x66\\x65\\x55\\xe6\\xd6\\x27\\x07\\xb4\\x6e\\xe4\\x2f\\xa9\\x00\\xb4\\xf4\\xf7\\x05\\xde\\x33\\xd3\\xdb\\xdc\\x68\\xa8\\x8d\\x1a\\x4d\\x0a\\xe9\\x33\\x56\\x6d\\xb6\\xc6\\x23\\x7e\\xc8\\xab\\xe1\\x02\\x4d\\xac\\x4b\\x7f\\x46\\xd4\\x07\\xbe\\x16\\x59\\x4d\\x90\\x46\\xc7\\x31\\x2d\\xda\\x66\\x14\\xd9\\xbc\\xdb\\x01\\xfb\\x83\\x24\\xfc\\x62\\xb8\\xee\\xaf\\x0a\\xbc\\x23\\xcd\\x57\\x0e\\x30\\x4f\\xca\\x08\\xe8\\x8c\\x73\\x5e\\x5d\\x31\\x59\\x24\\x09\\xce\\xb5\\x83\\x86\\x2e\\x6b\\x0a\\x76\\x77\\x29\\xf7\\x55\\x6f\\xa2\\xc0\\x53\\x64\\x4d\\x36\\xc8\\x33\\x7c\\x02\\x74\\xe7\\x49\\x20\\x29\\x82\\xfb\\x4a\\x17\\x1a\\xca\\xc1\\x96\\xc0\\x2b\\x7f\\x16\\xa8\\xda\\x49\\x07\\x1c\\x8a\\xb8\\x07\\x6d\\xd5\\xd3\\xab\\xad\\xfe\\x3a\\xf8\\x2c\\xa8\\x5d\\xa0\\x2d\\xcc\\x1c\\x4a\\x6f\\x2e\\x19\\x30\\xbe\\xe2\\x00\\x9e\\xee\\x0d\\x97\\x1e\\x40\\xdd\\x12\\x17\\x5c\\x8d\\x00\\x69\\x4f\\x03\\x25\\xa3\\xb3\\x13\\x3c\\x0d\\x0b\\xd3\\x82\\xa5\\x19\\x4f\\xb2\\x14\\x22\\xce\\x67\\xc7\\x8a\\x5a\\x6e\\x15\\x37\\xe3\\xb9\\x7d\\x5e\\x20\\x4e\\x5d\\x19\\x56\\x96\\x39\\x0f\\x77\\xd1\\x90\\x24\\xc1\\xbf\\x6b\\x51\\x25\\xa0\\xcd\\xbf\\x7b\\x98\\x80\\x03\\x61\\x81\\xc9\\x8e\\x1a\\xc2\\xe5\\x16\\x5b\\xd4\\x96\\xcf\\x99\\x74\\x51\\xa1\\xc1\\x21\\x02\\xe6\\x69\\x46\\xb1\\x67\\x6a\\xbd\\x4c\\xbd\\xd2\\xc1\\x16\\x73\\xf4\\xf2\\xcd\\x5f\\x3c\\x9a\\x43\\x4d\\x74\\x7f\\xa0\\x5b\\x40\\xfb\\xc7\\x22\\x68\\xb4\\xeb\\x28\\x42\\xe4\\x74\\x1f\\x51\\xb7\\x70\\x9b\\x6a\\xcc\\xc4\\x7f\\xca\\xf7\\x0d\\x9c\\x1c\\x4c\\x35\\x86\\x71\\x19\\xd8\\x1c\\xb3\\xff\\x1f\\x16\\x08\\x11\\x33\\xf1\\x65\\x9a\\xed\\x85\\xf6\\x3b\\xc9\\x01\\x98\\x9e\\x26\\x17\\xfc\\xce\\x15\\x3c\\x29\\x78\\xd7\\x08\\xfd\\x02\\x44\\x9a\\xe4\\xd5\\x38\\xd1\\x22\\xdd\\xb8\\x52\\x7c\\x0a\\x76\\xa1\\x02\\xee\\xff\\x6e\\xdb\\x65\\xdb\\xa2\\x98\\xd3\\xc2\\x17\\xf6\\x55\\x18\\x14\\xed\\xde\\xec\\xe1\\xae\\xf5\\xf3\\x71\\xa5\\x4f\\x12\\xbf\\xfd\\x6b\\x49\\x61\\x81\\x9a\\x0f\\x24\\x4f\\xf0\\xd7\\xd8\\x69\\x4c\\x14\\x42\\x2d\\xe9\\x82\\x2c\\x13\\x17\\x9e\\x4e\\xeb\\x81\\x59\\x50\\x79\\xb9\\xdd\\x2a\\xd1\\xe7\\xc3\\x9b\\xd3\\x03\\xcc\\x44\\xae\\x3f\\x36\\x34\\x88\\x15\\x77\\xa2\\x66\\xfd\\x6b\\xb7\\x91\\x78\\x12\\xb9\\x99\\xdc\\x80\\x9d\\xc0\\x9c\\x3d\\x70\\x19\\xda\\xcd\\x28\\xe4\\x30\\x13\\xa2\\xf9\\xe4\\xf9\\x4b\\xb0\\xbf\\x71\\x24\\xef\\x09\\x17\\x83\\xf7\\x96\\x39\\x7f\\x64\\x63\\xbf\\x1e\\xfb\\x39\\xcd\\x46\\xf3\\x79\\x0a\\x1d\\x9b\\x6a\\x7c\\x30\\xf1\\x49\\xb5\\xe6\\x6c\\x29\\x37\\xe3\\x9c\\xb9\\x74\\x4d\\xdc\\x66\\xab\\x56\\x1b\\xad\\x4e\\x6f\\xa8\\x53\\x4d\\x69\\x88\\x38\\x22\\x64\\x3d\\x63\\xd8\\xbd\\x7b\\x18\\x16\\x21\\xa2\\x67\\xe9\\x55\\xe7\\x58\\xd1\\x79\\x2b\\x44\"},\n{{0x53,0xcb,0xd6,0xf6,0x8c,0xee,0x27,0xb9,0xf7,0xbc,0x05,0x9b,0x80,0x3b,0x44,0x79,0x49,0xbb,0xc9,0xc5,0xd5,0xa3,0x86,0x52,0xd7,0x78,0x9c,0xa1,0x54,0x20,0xde,0xa1,},{0x61,0x16,0x99,0x0b,0x53,0x31,0xe2,0x16,0x5f,0x82,0x74,0x3f,0x01,0xd8,0xe7,0xbd,0x5d,0x70,0x88,0xb3,0x01,0x59,0x83,0x3f,0xa7,0xb9,0x39,0xcf,0xb1,0xcc,0x04,0xd7,},{0xd8,0x25,0x04,0x40,0x5f,0xf1,0x6b,0xa6,0x44,0x3d,0xc4,0x82,0x36,0x72,0x63,0xa8,0xe2,0x00,0x36,0x0a,0xca,0xaa,0x83,0xfc,0x4e,0x4b,0x72,0xbd,0x24,0x9f,0x16,0x10,0x3e,0xc7,0xe5,0xa7,0xe9,0xca,0x17,0x19,0x8f,0x88,0x8e,0xac,0xa1,0x6b,0x74,0x0c,0xc3,0xf5,0xc3,0xb7,0xb6,0x17,0xa3,0x4b,0x94,0x91,0xc3,0xed,0x76,0xaa,0xb3,0x0d,},\"\\x30\\x6f\\x8e\\x1d\\xf0\\xa4\\xca\\x78\\xbd\\x77\\xe8\\xe1\\x19\\x1c\\x94\\xde\\xaa\\x82\\x64\\x83\\x55\\xc2\\xae\\xcb\\x7e\\x82\\xfc\\x56\\xd6\\x4c\\x50\\x46\\x19\\x24\\x7e\\x7c\\xf8\\x94\\x33\\x28\\xd1\\x1f\\x3d\\xb4\\xb1\\xdc\\x14\\x8e\\x8e\\xf6\\xf6\\xc3\\xbc\\x35\\x59\\x69\\x66\\x2a\\x28\\x1a\\x65\\x57\\x63\\x91\\x24\\x2b\\x7b\\xd5\\xa6\\x2f\\x8f\\xa7\\xac\\xb6\\x04\\xe3\\xa3\\x44\\xae\\x1a\\x9d\\x73\\x2a\\x25\\x43\\x15\\xf3\\x1a\\x04\\x64\\xc1\\xe6\\x58\\x74\\x62\\xd2\\x92\\x12\\xc4\\x0e\\x5e\\xcf\\x06\\x1e\\x26\\x9a\\xa0\\xb9\\x03\\x90\\xba\\x41\\x04\\x07\\x21\\x68\\x4b\\xf2\\xaa\\x95\\x82\\xd8\\x30\\x66\\x22\\x1d\\xb6\\x0d\\x0f\\x7a\\xe2\\xf1\\x49\\xa3\\x6e\\x16\\x95\\x27\\x04\\xfb\\x1f\\x3a\\x98\\x2e\\xac\\x6b\\x45\\x83\\x66\\x5c\\x63\\xe5\\xa8\\x99\\x6f\\x24\\xa5\\x66\\xdd\\x50\\x6a\\x33\\xd4\\xec\\x8a\\x02\\xb2\\xbd\\x34\\xb7\\x14\\xc7\\x45\\x00\\x0c\\x01\\x28\\xa3\\xc8\\x9d\\x94\\x25\\x06\\xd1\\x2f\\x4b\\xeb\\x90\\x0e\\x29\\x03\\xcd\\xb3\\x4b\\x35\\xca\\x9b\\x6d\\x3a\\xd9\\xb3\\x50\\xac\\x99\\xf4\\x1d\\xb3\\xac\\xfe\\x7f\\xe5\\x5a\\x28\\xc0\\xf0\\x06\\xb8\\x44\\xc9\\xdc\\x48\\x53\\xfd\\x98\\x53\\x5a\\xda\\x79\\x41\\x6d\\xca\\x5f\\xee\\x58\\x03\\xa2\\xd9\\xf5\\xd6\\x8e\\x6b\\x80\\x53\\x9f\\xf3\\x02\\xe9\\x73\\xf2\\x4e\\x9b\\xc8\\x8b\\x7c\\x41\\x94\\x11\\x7d\\xdb\\x9f\\x93\\x2b\\x32\\xd5\\xec\\x74\\x86\\x8a\\x13\\x63\\x1e\\xce\\x68\\x81\\x4b\\x93\\x14\\x21\\xdc\\x89\\x02\\x49\\x57\\x03\\x41\\xf4\\xb4\\x23\\xe8\\x6e\\x8e\\xe0\\x81\\xb2\\x27\\x02\\xf6\\x49\\xa6\\xc7\\xa0\\xb7\\xbd\\xf5\\xfb\\x75\\x62\\x02\\xbd\\x10\\xb0\\xbb\\x22\\x15\\xc7\\xd6\\x59\\x7e\\xff\\xd8\\x52\\xf0\\xb8\\x9a\\xbe\\xc1\\x5e\\xa8\\x22\\x57\\x68\\x9d\\xf8\\x1e\\x33\\x82\\x54\\xf9\\x3e\\x81\\xcb\\xf0\\x61\\x72\\x9d\\x48\\x3e\\xb5\\xcf\\x64\\x98\\x05\\xd7\\x8e\\xd8\\x92\\xdd\\x0b\\xd2\\x48\\xca\\x1e\\x25\\x2b\\xea\\x51\\x84\\x7e\\x1e\\x82\\xd3\\x9a\\xf5\\x80\\x50\\xdc\\x4a\\xfb\\xf9\\x11\\x5a\\x3a\\x60\\x49\\x3e\\x8c\\x0b\\xa2\\xe8\\x6e\\x08\\x98\\xcd\\x0d\\x43\\x08\\x91\\xb9\\xeb\\x0a\\x40\\xf8\\x74\\x31\\xe2\\x5f\\x41\\x53\\x8a\\x03\\x0f\\x88\\x4f\\xab\\x36\\xad\\x11\\x16\\x5d\\x26\\x7e\\x8d\\xd9\\x4d\\xcb\\x05\\xb9\\x3a\\x5a\\xe7\\x79\\x69\\x43\\x0e\\x18\\x10\\x13\\x4e\\x15\\x72\\x51\\xb9\\x82\\xdf\\x34\\x3d\\xff\\xae\\x61\\x23\\xa9\\x9a\\xa0\\x56\\x2d\\x5d\\xf7\\x24\\x08\\xf1\\xa6\\xe2\\x9c\\x40\\x59\\xa5\\xa8\\xaa\\xa4\\xe6\\x21\\x52\\x8f\\xc6\\x3a\\x9c\\xbe\\x1f\\x4c\\x0f\\xef\\x25\\xfe\\x3f\\x8e\\x18\\x15\\x77\\x74\\x09\\x7a\\x9d\\x91\\x02\\x0a\\x90\\x06\\xb6\\xc8\\x60\\xec\\x1e\\xe1\\x0d\\x52\\x1d\\x20\\x3a\\x1f\\x8b\\xb8\\x25\\x61\\x29\\x6f\\xaa\\xd4\\xb2\\x20\\x3d\\xa5\\x3b\\x20\\x7a\\x45\\x9b\\x29\\xc1\\x8b\\xc0\\x64\\x93\\x32\\xb1\\x80\\x7c\\x13\\xca\\x61\\xac\\xfa\\xf9\\x07\\x79\\xfe\\xbb\\xc7\\xf3\\x24\\x21\\x64\\x79\\x7e\\x6f\\x57\\x2c\\xb1\\x5a\\x9b\\xe5\\x88\\x73\\x43\\x45\\x5e\\x26\\xb9\\x10\\xc8\\xbe\\xfe\\xe4\\x2a\\xeb\\x04\\x7f\\x9a\\xbe\\x6b\\x37\\x50\\xdb\\xd7\\xde\\x99\\x20\\x2a\\x0b\\xb5\\x76\\xce\\x14\\x89\\xe6\\x1c\\x1f\\x5d\\x27\\xc6\\x79\\x2e\\x63\\x21\\x8e\\xdb\\xfd\\xb9\\xb3\\xdc\\x51\\x5b\\x42\\x54\\xd8\\x2c\\x85\\x9e\\x52\\xce\\x6b\\xd7\\xad\\x29\\x6d\\xd0\\xe3\\x70\\x9d\\x4c\\x46\\x63\\x62\\xf9\\x02\\x65\\xe9\\x9d\\xa7\\xd0\\xb7\\x01\"},\n{{0x8b,0x65,0x74,0xf6,0xd7,0x39,0x69,0x81,0xe2,0x23,0xa4,0x83,0x7b,0xc3,0x39,0xc3,0xfd,0x65,0x94,0x19,0x84,0x5a,0x21,0x21,0xbf,0x85,0xbe,0x2e,0x69,0x5d,0x86,0x0d,},{0xe3,0x81,0x1a,0xca,0x70,0x63,0x4f,0x5a,0x9c,0xe4,0xb5,0x92,0xa1,0x7b,0xb5,0xcf,0xda,0x53,0x44,0x24,0x22,0xe2,0x03,0xcd,0xa9,0x50,0x4c,0x9d,0x65,0xb2,0x63,0xe8,},{0x2f,0xd0,0x90,0x54,0x75,0xa2,0xce,0xc3,0xe7,0x6f,0x99,0x09,0xb8,0xaf,0xd8,0x3b,0xeb,0x8d,0xae,0xfa,0x77,0xaf,0xcd,0xa3,0x4c,0xb4,0xf1,0x17,0x28,0xef,0x15,0xfc,0x9c,0x1d,0x7f,0x6f,0x6a,0xff,0xfc,0x28,0xf3,0x87,0x4f,0x91,0x3e,0x17,0x98,0x0f,0x0e,0x8e,0x3d,0x5a,0xd2,0x39,0x51,0xdf,0x2b,0x32,0xef,0xaf,0x62,0x19,0xce,0x0d,},\"\\xa4\\x8a\\xac\\xc0\\x49\\x5f\\xa0\\xf1\\x25\\x9b\\x27\\x86\\x5d\\x3d\\x75\\xdc\\x52\\xc2\\xc8\\x28\\xea\\x8c\\x4c\\x2a\\xd7\\x85\\x77\\x07\\x2f\\xef\\x72\\x70\\xf6\\xa4\\xd5\\x82\\xbb\\x7b\\x96\\x2f\\x4c\\x3f\\xd1\\x49\\xa6\\x0a\\x06\\xbc\\x8e\\xfd\\x29\\x70\\xef\\x03\\x14\\x8d\\xdf\\x61\\x98\\xb9\\xb6\\x95\\xa6\\x9f\\xad\\xb5\\x34\\x09\\x51\\xcb\\x75\\x39\\x8a\\xc5\\x1a\\x4f\\xd5\\x54\\x30\\x37\\x8c\\xd5\\xda\\x88\\x85\\x21\\x0b\\xfd\\x21\\x46\\xf9\\x5c\\x62\\x76\\x32\\xfe\\x8b\\xe0\\x6d\\xe0\\x1a\\x7c\\x27\\xb8\\x9d\\xee\\xfd\\x67\\xef\\xc6\\x9c\\x9b\\x5c\\x62\\xb3\\x81\\x08\\xf7\\x76\\x22\\x91\\x43\\xda\\xe6\\x60\\xc1\\x0c\\xbe\\xa3\\xcd\\x4f\\x7e\\xe5\\x3d\\xc3\\x69\\x2e\\xd0\\x11\\x77\\xe4\\xa6\\xf7\\xe4\\x24\\xb5\\x66\\x6f\\x7f\\x49\\x5f\\x2a\\x65\\x60\\x2c\\x7d\\x08\\xc5\\xd5\\x72\\x23\\x4a\\x56\\x7c\\xb6\\xc3\\x8a\\xfd\\x79\\xca\\xb5\\xc4\\x03\\x6d\\x62\\x63\\x7a\\xef\\xab\\x55\\x88\\x76\\x9a\\x44\\x8a\\xb4\\xc6\\x5e\\x24\\x55\\x4b\\xd4\\x15\\x80\\x50\\xe0\\x9e\\xb5\\x8f\\x99\\xab\\x40\\x77\\x7b\\x03\\x56\\x70\\x9b\\x7c\\x02\\x5a\\xe5\\xae\\x54\\x22\\xac\\xf8\\x74\\x44\\x93\\x1a\\xe4\\xd9\\xa8\\xb3\\xd9\\x44\\x76\\x88\\x11\\x28\\xba\\x1e\\xb7\\x32\\x8f\\xaf\\xc7\\x5f\\x6b\\x9d\\xac\\xc9\\x6d\\x3b\\x64\\x87\\xdd\\xef\\x7c\\x59\\x26\\x2d\\xca\\xda\\x42\\x6a\\xac\\xb1\\x39\\x22\\x93\\x54\\x11\\x56\\x62\\x35\\xe0\\x58\\x37\\x26\\x22\\xd8\\x85\\xbd\\x0c\\xc0\\x49\\x58\\xdc\\xfb\\x17\\xe0\\x8f\\xcd\\x7f\\x14\\x7e\\x20\\x15\\x6c\\x8e\\x26\\xaf\\x85\\x53\\x0f\\x55\\x11\\xa6\\x8d\\xb4\\x3d\\xaf\\xc4\\xe6\\xa2\\x3f\\x66\\x7d\\xf3\\x74\\x3e\\xed\\xd7\\x1a\\x3f\\x07\\xf7\\x6f\\x94\\xd1\\x68\\x8a\\xfc\\x84\\x63\\xbf\\xa5\\xa4\\x39\\xae\\x31\\x14\\x69\\x94\\x8e\\x74\\x47\\x06\\x4f\\x0b\\x05\\x06\\xf3\\x67\\x19\\xc1\\x34\\x66\\xa1\\xb9\\x87\\x76\\xd9\\x67\\xec\\x58\\x20\\x8b\\xa6\\x74\\x03\\x73\\x03\\xdf\\xc6\\x19\\x0d\\xa7\\x83\\xff\\x27\\x30\\x3b\\x86\\xb5\\xfc\\x32\\x11\\xf0\\x1c\\x91\\x5e\\x83\\xa6\\xad\\x01\\x21\\x44\\x79\\x11\\xcb\\xe1\\xcf\\x69\\x6f\\x61\\x8f\\x60\\x23\\x66\\x43\\xf2\\xe9\\x4e\\x15\\x5d\\xb6\\x57\\x18\\x29\\x44\\xc1\\xa4\\x3b\\xdc\\x7b\\xd5\\xea\\xf3\\x48\\x1f\\xe1\\x28\\x40\\x92\\xcb\\x37\\x89\\xa8\\x92\\xbd\\x79\\xa1\\x11\\xfd\\x41\\x01\\x43\\xcf\\x91\\xae\\x33\\x28\\x60\\xb1\\xd2\\x9a\\xa0\\x41\\xd1\\x77\\xb5\\x0d\\x6c\\xc2\\xb9\\x66\\x0d\\x32\\x8c\\x0f\\x23\\x0a\\x35\\x15\\xe6\\xa0\\xd6\\x88\\x70\\x9c\\x0c\\xd3\\x47\\xad\\x2f\\xf3\\x2d\\x61\\xd1\\xe1\\xe9\\xba\\x76\\xf8\\x1e\\x87\\x3a\\x6c\\x42\\x0f\\x17\\x07\\xf3\\x84\\x1d\\xb5\\x19\\x6c\\xb5\\x3f\\x50\\x6f\\x00\\x06\\x35\\x2c\\x7c\\x44\\xc0\\x80\\xf3\\x09\\x68\\x01\\xa5\\x7a\\x49\\xcf\\xe8\\x42\\x05\\xbd\\xd7\\xa9\\x80\\x1f\\x84\\x3c\\xf2\\x6b\\x95\\x58\\xa2\\xdb\\x78\\x8e\\xf1\\xb2\\x37\\x91\\x5d\\x58\\x7b\\x9b\\xa9\\x77\\x98\\x90\\xf6\\x1f\\xdc\\x91\\xe0\\x3e\\x4f\\x4c\\xdb\\xef\\xe4\\x17\\xcc\\x22\\xd5\\x22\\xa8\\x6a\\xdd\\xdb\\x53\\xf3\\x74\\x74\\x50\\xab\\x62\\xb5\\x76\\x56\\x5d\\xb3\\x2e\\x0c\\xd4\\x42\\x76\\x54\\x7d\\x9a\\x16\\x65\\x3c\\x27\\x96\\x59\\xdd\\x4d\\x17\\xec\\x04\\x82\\x7c\\x53\\x3e\\x33\\x39\\x0f\\xe9\\x4f\\x79\\x35\\x09\\x25\\x6d\\xb6\\x75\\x31\\x73\\x6a\\xb3\\xfc\\xee\\x2a\\x30\\x1a\\xc3\\xf0\\xa2\\x4d\\x3b\\x10\\x8d\\x7e\\x75\\xc3\\x2a\\x5a\\xba\\x36\\xd6\"},\n{{0x29,0xb2,0x88,0x1b,0x8c,0xaa,0xdb,0x33,0x6e,0x78,0x80,0xc5,0x10,0xb8,0x00,0x85,0xf4,0xb1,0x22,0x18,0x60,0xb3,0x01,0xeb,0x45,0x25,0x65,0x07,0x52,0xa6,0xd2,0x89,},{0x0c,0x5c,0x44,0xed,0x29,0xd2,0x1b,0xca,0xde,0xe2,0x1c,0xbd,0xe6,0x1a,0x9c,0xdb,0x6d,0x59,0x36,0x00,0x9b,0xa2,0xf5,0xb2,0xe7,0x77,0xc9,0x24,0xdd,0xfb,0x67,0x51,},{0x99,0xe9,0x96,0xe8,0x5a,0x49,0x4f,0x19,0x80,0xcb,0x07,0xde,0x9c,0xa6,0x16,0x5e,0x7d,0xe1,0x04,0xd3,0x9f,0xe3,0xc3,0x22,0x67,0x35,0xc5,0xda,0xa5,0x69,0x51,0x6f,0xca,0xf1,0xb6,0xe4,0xdf,0xad,0x0d,0x38,0x9b,0x6d,0xb0,0xec,0x8a,0x8f,0x20,0xdd,0x2c,0x60,0x26,0x56,0xb5,0xe7,0x61,0xc8,0xf3,0xa6,0x55,0x83,0x82,0x15,0x19,0x09,},\"\\x19\\x74\\xa2\\xe2\\xb4\\x79\\x49\\xf4\\x67\\xa9\\x31\\xd1\\xd9\\xdd\\x5c\\xe1\\x16\\xe9\\xf5\\x03\\x0a\\xd0\\x9a\\x8c\\xc7\\x28\\xd1\\xae\\xb1\\x48\\xbb\\xf9\\xac\\xf5\\x98\\x74\\xda\\x80\\xe7\\x08\\xd5\\x3c\\x66\\x8f\\x2f\\x14\\xd7\\x52\\x20\\x71\\xe9\\x09\\x80\\x84\\x27\\xb2\\xab\\x5a\\x05\\xf8\\xb9\\x4f\\x21\\x50\\x5c\\xd2\\x6a\\xbc\\x53\\x45\\x89\\x78\\xc7\\x84\\xd4\\x79\\xea\\x6d\\xab\\x10\\x5c\\x4f\\x79\\x84\\xa0\\xfb\\x97\\x90\\xe5\\x06\\x24\\xf4\\x73\\x4b\\x55\\x19\\x05\\xaa\\x5f\\xfa\\x60\\x18\\x4c\\xd2\\x01\\xcf\\x2b\\x26\\xc9\\x79\\x5d\\xa6\\xe7\\xe0\\x8d\\x6a\\x0b\\xc7\\x72\\x24\\x00\\xfe\\xf9\\x4f\\xc2\\x10\\x38\\xbe\\x89\\xd3\\x4b\\xcd\\x14\\xc4\\x27\\xb8\\x5b\\x68\\x66\\x73\\x71\\x96\\x15\\x2d\\x4e\\xeb\\x66\\xd0\\x5b\\x24\\x5a\\xe8\\x4b\\xdc\\x77\\x87\\xc1\\x4a\\x8b\\xec\\x2e\\xea\\x53\\x60\\xf0\\x42\\x43\\x3d\\x70\\x79\\x44\\x67\\xd4\\x73\\x93\\xb9\\x37\\x57\\xf3\\x31\\xcf\\x2b\\x53\\xc6\\x60\\xd7\\x1c\\x29\\x58\\x2a\\xee\\xa7\\x9b\\x12\\x52\\x7a\\x28\\xb0\\xc5\\xe1\\x10\\xdf\\x6f\\x85\\x4e\\xea\\xd9\\xa2\\xb0\\x0d\\x42\\x54\\x2c\\xa8\\x27\\x6b\\xb8\\xbf\\x98\\x8b\\xaa\\xb8\\x56\\x59\\x96\\xfe\\xe5\\x0c\\xf3\\x1b\\x24\\x59\\xc4\\xc5\\x0a\\xb4\\x75\\x26\\x5e\\x83\\xe2\\x28\\x5d\\x43\\xfe\\x1f\\x75\\x2a\\x55\\xb2\\xdb\\xc4\\x9f\\xca\\x04\\xa8\\x10\\xf0\\x41\\x3b\\xf6\\xbd\\x81\\xb7\\x9a\\xc6\\x4e\\xe1\\xf8\\x9b\\x97\\xbd\\x7d\\x26\\xd6\\x25\\x12\\x27\\x3e\\x24\\xa6\\xba\\xb2\\xd5\\xf7\\xd2\\x22\\x6b\\xaa\\xab\\x7b\\x11\\x12\\x09\\xbb\\x03\\x73\\x3d\\x8a\\x60\\xdf\\xa3\\x1a\\x51\\x6f\\x4a\\x8c\\x76\\x99\\xd8\\x28\\x5c\\x10\\x65\\x15\\x9a\\x6c\\x73\\x31\\xc1\\xde\\xfb\\x47\\xa3\\x0e\\xf5\\x85\\x8c\\x50\\xb7\\xd0\\x45\\x12\\x4a\\x09\\x81\\x3d\\x1c\\xfd\\xa5\\xc9\\xcc\\x3b\\xb5\\xbf\\xae\\x73\\xc9\\x84\\x19\\x7f\\x8f\\x85\\x7f\\x18\\x6c\\x41\\xab\\x87\\xfb\\x79\\x62\\xb6\\x31\\xf4\\xd0\\x07\\xcf\\xbe\\xe2\\x21\\xfc\\x65\\x72\\x78\\x4a\\x55\\x11\\x94\\xc1\\x97\\x77\\xb0\\x8e\\x6b\\x59\\x67\\x57\\xe7\\xcb\\xa7\\xa0\\xe2\\x7f\\xe4\\x53\\xf9\\x0d\\xc5\\x9c\\xc0\\x8c\\x64\\x72\\x43\\x1c\\x02\\x0e\\x8d\\xd0\\x91\\x75\\x90\\xe7\\x9c\\x1f\\x20\\x73\\x83\\xaf\\xb3\\x90\\x76\\xad\\x24\\xda\\x8e\\xe5\\x24\\x86\\x73\\x94\\x53\\xa2\\x59\\x0e\\x51\\xbf\\xc8\\x9b\\x13\\xc2\\x03\\x3c\\xfa\\x5f\\x89\\x03\\xcb\\xe9\\x96\\x1a\\x85\\x98\\xba\\x55\\x62\\x32\\x86\\x9d\\xfa\\xb4\\xd5\\x6e\\xdf\\x4f\\x05\\xe8\\xb7\\x7d\\x05\\x87\\x18\\x95\\xe6\\x3b\\x53\\x51\\xf7\\x6c\\xb2\\xd2\\xc8\\x38\\x5c\\x10\\x9d\\x73\\x06\\x19\\x2a\\x25\\x44\\x6e\\x4d\\x62\\xdc\\x7d\\x62\\x4f\\x0c\\x66\\x73\\x98\\x6b\\xe0\\x62\\x8b\\x2c\\x2d\\x73\\xeb\\x94\\x1d\\x35\\xa3\\x43\\x30\\x90\\xf5\\x9b\\x28\\xa5\\x97\\x9d\\x56\\xdb\\xc9\\xfd\\x69\\x73\\xf6\\x36\\x47\\x64\\x2c\\xd9\\x03\\xb0\\xcf\\x7a\\x6a\\xcd\\x33\\x0d\\x87\\xe2\\x29\\x27\\x10\\xde\\x99\\xe0\\xc1\\x79\\xca\\x78\\x92\\x9c\\xca\\xec\\xfa\\xed\\xbf\\x27\\x42\\x41\\x4f\\x17\\x6b\\x60\\x90\\xc0\\xd5\\x9a\\x9d\\xb7\\x81\\xc9\\x96\\x7e\\x28\\xfa\\x4e\\x77\\xd2\\xa0\\x82\\xe4\\x2f\\x52\\x16\\x91\\x67\\xe9\\x2d\\x4f\\xdd\\x82\\xe2\\xcc\\x05\\xdd\\x91\\x84\\xc7\\xdf\\xee\\x49\\x0a\\x23\\x7f\\xda\\xd4\\xdf\\xeb\\xc0\\x18\\x68\\xe0\\xa4\\x35\\x3a\\x29\\x54\\xd0\\x90\\x92\\x84\\x61\\x82\\x1a\\x7a\\x84\\x8d\\x1b\\x60\\x81\\x7f\\xc3\\xbd\\xef\\xa1\"},\n{{0x42,0xaf,0xe8,0x9d,0xac,0x83,0xe7,0xd3,0x89,0x96,0xc0,0xdb,0xce,0x0c,0x98,0x74,0xc0,0x09,0x27,0xba,0xbd,0x77,0xca,0x8c,0xea,0xc3,0x4e,0x56,0x44,0x74,0x28,0x2b,},{0xa4,0xc5,0xf5,0xe3,0x80,0x3f,0x0a,0x03,0xd5,0xc1,0xc9,0x06,0xca,0xec,0x9c,0xc6,0xd2,0x85,0x14,0x07,0xf1,0xca,0x29,0xf7,0x2a,0x45,0xf2,0x33,0xe6,0x65,0x62,0x44,},{0x4f,0xba,0x2d,0x6c,0xc1,0xb7,0x19,0x3d,0x35,0x62,0xf8,0xc8,0xbf,0xe6,0x90,0x5c,0x82,0x9d,0xb2,0x65,0xa5,0x42,0x7c,0x5c,0x26,0x57,0x14,0x78,0x5b,0x83,0xf6,0x95,0x14,0xc5,0xe3,0x0e,0x28,0xb5,0x66,0x84,0xc8,0x2d,0xae,0x26,0x37,0x58,0x1b,0xf3,0xf4,0xef,0x27,0x14,0x20,0xbc,0x7e,0x60,0x10,0x61,0x3a,0x38,0xfa,0x10,0x1a,0x0d,},\"\\xe7\\x10\\xa1\\x63\\xad\\x28\\x85\\xae\\xb7\\x65\\x8e\\xb3\\x74\\xf1\\x18\\xb7\\x68\\x42\\xec\\x36\\xef\\x3b\\x01\\x0c\\x3c\\x6b\\x95\\x59\\xe8\\xb1\\x60\\xc2\\x62\\x8d\\xed\\x0b\\x85\\x11\\xeb\\x49\\x07\\x18\\x0d\\xa4\\xb6\\x21\\xe9\\xaa\\x4a\\x32\\x22\\x88\\x88\\x8a\\x1c\\x09\\x13\\x0f\\x69\\xf8\\x90\\x59\\x7a\\x92\\x93\\xe7\\x4f\\x92\\x89\\xbd\\xaa\\x5c\\x91\\xb6\\xfd\\x24\\xaa\\x04\\x4a\\xb9\\xfc\\xb3\\x40\\x2f\\x7a\\xbc\\x48\\xd2\\xab\\x7b\\x38\\x80\\xa0\\x48\\xda\\xa4\\x48\\x64\\x5a\\xd2\\xec\\xb5\\x5b\\x3c\\xae\\xe2\\xd6\\x8a\\x8b\\xed\\xb5\\xd1\\x86\\x5d\\x5e\\x21\\x1d\\xe3\\x9b\\x0e\\xaf\\x22\\xe5\\xda\\xf1\\x0f\\x71\\x68\\x20\\x3a\\xa1\\x5b\\x85\\xaa\\x47\\xbb\\xd3\\xcc\\x41\\x69\\xcb\\xc1\\xfe\\x80\\xb4\\x70\\x0b\\x62\\x58\\x71\\xed\\xab\\xcd\\x4f\\xe7\\x4a\\x3e\\x96\\x55\\x69\\xce\\x24\\x5c\\xfc\\xde\\x42\\x09\\xcc\\x8a\\xbc\\xd6\\x79\\x7d\\x44\\x18\\x5b\\x4f\\x96\\xc0\\x18\\x1b\\xbd\\x27\\x00\\x87\\x83\\xe9\\x35\\x8a\\x53\\x94\\xfe\\x3a\\x34\\xa0\\x68\\x71\\xd3\\x79\\xda\\x35\\xb2\\x0b\\xb5\\x7e\\xef\\x9e\\x55\\x24\\xee\\x79\\x12\\xa6\\xf4\\x1b\\x4a\\x1f\\x68\\x4c\\x39\\x19\\xcf\\xcd\\xc0\\x0f\\x45\\x80\\xba\\xf9\\xe0\\x9d\\x31\\x6c\\xef\\xa0\\xf4\\x65\\xdc\\xa5\\xd8\\xee\\xc5\\x14\\xe9\\x5e\\x5a\\x57\\xbb\\xcd\\x27\\xe4\\x1f\\x81\\x19\\xb2\\x64\\xae\\x14\\xa3\\x19\\xd8\\xc3\\x85\\x9b\\xab\\xf1\\xf4\\xa6\\xb6\\xb7\\x7e\\x44\\x2c\\x86\\x1d\\x6e\\xe2\\x8a\\xd1\\x2b\\x82\\x36\\x2e\\x90\\xdb\\x0c\\x36\\x72\\xb0\\xe0\\xd9\\xff\\x58\\x14\\x6f\\xd1\\x59\\xaa\\x8f\\xa9\\x9d\\xc7\\x55\\xfc\\x85\\xb9\\x0c\\xf9\\x41\\x92\\x79\\xc0\\x62\\x4b\\x93\\xe7\\x5e\\xda\\x0e\\xf7\\xc0\\x96\\x95\\xae\\x93\\xbd\\x72\\x82\\x41\\x93\\x77\\xb7\\x6c\\xa8\\xbd\\xc0\\x52\\x1c\\xfe\\xe6\\xf6\\xd7\\x29\\xc3\\xad\\xff\\x89\\x46\\x87\\xb1\\x77\\xef\\x19\\x52\\x9a\\x6b\\xda\\xce\\x70\\xb6\\x85\\xc6\\xd7\\xa5\\xd7\\x4a\\x08\\xe2\\xa9\\xe7\\x24\\x03\\x59\\x75\\xc8\\x0d\\x18\\xcb\\x36\\x94\\x70\\xde\\x72\\x99\\xcb\\xd6\\xb0\\xa2\\x7c\\x92\\x32\\xc7\\xea\\xba\\xc8\\x6d\\x50\\x93\\xa6\\x5f\\xfe\\x0b\\x40\\xd4\\x0b\\xef\\xe8\\x0b\\x68\\xcd\\x9d\\xce\\x1e\\xa1\\xe6\\x57\\xe4\\x5e\\x9c\\x49\\x9d\\x0b\\x69\\x0f\\x74\\x45\\x5f\\xb4\\x70\\x96\\xed\\x8c\\x18\\xd1\\x51\\x7f\\x90\\x44\\x29\\x01\\xa6\\xc4\\x10\\xb7\\xf6\\x41\\x5f\\x20\\xae\\x48\\xc5\\x8a\\xde\\x8d\\x67\\x5b\\x6c\\x05\\x8d\\xf1\\x6a\\xe7\\x69\\x8f\\xce\\xae\\x95\\xaa\\x77\\x1b\\x4c\\xd8\\x8a\\x0b\\x3f\\x22\\xc5\\x1f\\x98\\xc7\\x1c\\x1e\\xb4\\x6b\\x26\\x4b\\xf9\\x7a\\x30\\x0e\\xcb\\x1f\\xd2\\x62\\x26\\xad\\x8e\\x87\\xa0\\x58\\xcf\\x3e\\x70\\x8e\\x26\\x0f\\x56\\x6b\\x68\\x53\\x14\\x04\\x51\\x33\\xf4\\xa5\\xe8\\xfb\\xc3\\x45\\x61\\xb9\\xa0\\xf1\\xff\\x93\\x39\\xf5\\x52\\x31\\x07\\x6b\\x73\\x6b\\x6e\\x11\\x52\\x43\\x19\\xa2\\x72\\xbd\\x44\\x53\\xa0\\xaf\\x14\\x93\\xda\\xa0\\x91\\x67\\xe8\\x46\\x43\\xd2\\x07\\xa0\\x2f\\xee\\x98\\xfb\\x22\\x3b\\x01\\xa9\\x9a\\xa5\\xce\\xf2\\xb7\\x00\\x1e\\x47\\x0f\\x6f\\x94\\xa5\\xdc\\x20\\x8e\\xdf\\xc0\\xcb\\x8c\\xf3\\x11\\x4a\\x91\\x96\\x00\\xf0\\x61\\x17\\x2f\\x0e\\xfe\\x03\\x90\\x36\\xbf\\x4d\\xdd\\xbf\\xd0\\xd4\\x5f\\x91\\x44\\x3b\\xf2\\x6f\\x8e\\x15\\xed\\x7d\\xb8\\xe5\\x5f\\x08\\x6a\\x4a\\x45\\x83\\xf4\\xbd\\xa0\\xf5\\x56\\x28\\x4d\\xcf\\x71\\x29\\x2f\\xe7\\x0f\\xca\\xa8\\x25\\x9b\\x9f\\xaf\\xf3\"},\n{{0x10,0xf0,0x09,0xaa,0x88,0x7d,0x91,0xce,0xd8,0x09,0xaf,0xe1,0x92,0xd7,0x8e,0x47,0x99,0xd9,0x03,0x77,0x62,0xf4,0xa9,0xd3,0xa4,0x29,0xfd,0xe0,0xf3,0x9f,0x7b,0x7a,},{0xcf,0x51,0x16,0xb9,0x21,0x21,0x2e,0x9b,0x78,0x82,0x9a,0x02,0x63,0x46,0x36,0x91,0xc6,0xfb,0xcc,0xdc,0x0c,0x11,0x8b,0xe1,0x41,0xc9,0x6f,0x8c,0x88,0x05,0x3d,0xd3,},{0xc3,0x7b,0xb7,0xb7,0x3b,0x11,0x05,0xbe,0x08,0x6f,0xf3,0x07,0x69,0x72,0x07,0x72,0x62,0xdf,0x4d,0x73,0x32,0xf6,0x08,0xc7,0xb2,0xb9,0xd9,0x78,0xd4,0x74,0xcb,0xbc,0x27,0x10,0x46,0x08,0x00,0x35,0xf3,0x96,0xee,0x36,0x47,0x9b,0x7a,0x67,0x11,0xc6,0x8e,0x25,0x61,0xc7,0x41,0xc0,0xec,0x5f,0xc9,0xec,0xa1,0x73,0x4e,0x81,0x1f,0x04,},\"\\x2e\\xdf\\x14\\xd6\\xcd\\x56\\x89\\x6e\\xea\\xa7\\x70\\x21\\x1c\\x49\\x84\\xbe\\xd8\\x0e\\xca\\x8d\\x65\\x34\\xd5\\xd5\\x10\\x88\\x4f\\x55\\xf1\\x1f\\x99\\xff\\xa9\\xf8\\x9b\\x58\\x6f\\xfe\\x7b\\x1e\\xc7\\xea\\xab\\x6a\\x9d\\xc1\\xa2\\x4a\\x3e\\xe3\\xc7\\xa6\\xab\\x44\\xad\\xe9\\x91\\x78\\x83\\x26\\x4e\\xde\\x2f\\x13\\x61\\xbe\\x7d\\x7a\\x38\\x17\\xf2\\x9d\\xec\\x95\\x81\\xc3\\x19\\xf1\\x8f\\x95\\xd5\\xbe\\x26\\xd9\\x11\\x8b\\xe6\\x78\\x34\\x00\\x37\\xa6\\x8a\\xbf\\xc5\\xef\\xbb\\x9a\\x3f\\x3f\\x38\\x78\\xaa\\xe3\\x72\\x1f\\xfe\\xf5\\xbb\\x6a\\x26\\xc7\\xb1\\xa3\\xa5\\x6d\\x2b\\xda\\x6c\\x6e\\x86\\x0e\\xb4\\x1f\\xd8\\xd8\\x37\\x11\\x74\\xd9\\x1c\\x74\\xc5\\xeb\\x67\\xc3\\x85\\x5c\\x63\\x0d\\x64\\x1d\\x2e\\x57\\x1a\\x9a\\x51\\xc6\\x40\\x2c\\xfe\\x18\\x42\\xce\\xf3\\x89\\x80\\xcb\\x8d\\x0a\\x64\\xbc\\xc8\\x9b\\xe3\\x18\\x9e\\x68\\x11\\xf4\\x7e\\x8f\\x4d\\x00\\x63\\xa5\\xb1\\x60\\x1f\\x44\\xfd\\xa2\\x0c\\x1c\\x4c\\x2f\\xc4\\x9c\\xbe\\x27\\xa4\\x13\\x7d\\xc4\\x63\\x8c\\x2a\\xd2\\xd0\\xa5\\x47\\x47\\x47\\x22\\x9c\\x56\\x8e\\x38\\x05\\x43\\x1f\\xa3\\x6e\\xeb\\xa7\\x85\\xf7\\xb9\\x78\\x44\\xb5\\xe3\\x19\\xfa\\x6a\\x09\\xcc\\x5a\\xe8\\x40\\x34\\x74\\xbb\\x91\\xdd\\x89\\x6c\\x1e\\xc2\\xba\\xc7\\x3d\\x2e\\x50\\x5e\\xfc\\x62\\xbd\\x50\\x2b\\x5c\\xeb\\x08\\xd1\\x6e\\x83\\x2e\\xc5\\xdc\\x4f\\x98\\xb5\\x1b\\x9d\\x07\\x38\\xb9\\xfb\\x28\\xf3\\xab\\xe8\\x96\\x6b\\xf2\\x23\\x75\\xa0\\xb2\\x2c\\x47\\x1a\\x9e\\x58\\xe3\\xfd\\x70\\x0d\\xe1\\x5c\\x52\\x96\\x37\\x3c\\x1b\\xc9\\xd4\\x64\\x0e\\xb7\\x81\\x6e\\x1d\\xc9\\xc8\\xce\\x86\\x19\\xa8\\x11\\x83\\x00\\x9e\\xc9\\x74\\x87\\x1e\\x8f\\x0a\\x97\\x72\\xed\\xe0\\xa6\\x38\\xb3\\x57\\x4b\\xf7\\x5d\\x8f\\x55\\x98\\x7f\\x3c\\xfa\\x6f\\xec\\x68\\x97\\x0b\\xfe\\x00\\xb2\\x3b\\x59\\xfb\\x5b\\xf4\\x99\\x6e\\xa5\\xd7\\x70\\x4f\\xcf\\x2e\\xff\\xcc\\x0f\\xd7\\xf3\\xd8\\xe6\\x05\\x60\\x08\\x09\\x7f\\x26\\xca\\xff\\xd5\\x41\\x5a\\x28\\x2a\\x27\\x6a\\x9b\\x26\\x45\\xe5\\xca\\xb1\\x29\\x68\\x87\\x2e\\xb0\\x52\\xf4\\xd7\\xc1\\x0c\\xc7\\xc2\\x1d\\x51\\x61\\x81\\x8b\\xb4\\x4c\\xc8\\x56\\xb0\\xde\\x76\\x9d\\x55\\x9c\\x55\\xdf\\x64\\xad\\x9a\\xdc\\x16\\xc0\\xac\\x65\\x83\\x8f\\x66\\x0d\\xa8\\x13\\x86\\xb7\\x0b\\x93\\x52\\x5e\\xc2\\xf4\\x0f\\x6f\\x63\\xf8\\xea\\x5d\\x48\\x30\\xb9\\x64\\x6c\\x46\\x18\\x3b\\xb4\\xe6\\xf2\\x70\\x47\\xbd\\xa2\\xa5\\x46\\xbd\\x34\\xbd\\x4d\\xb5\\xfb\\x88\\xfd\\x8a\\xb7\\xc7\\x5f\\x65\\x2e\\x15\\xd5\\xaa\\xa6\\xb4\\x6a\\x8a\\xcf\\x6e\\x44\\x8b\\xf2\\xdd\\x64\\xde\\xe3\\xc1\\x05\\x64\\x7c\\x7f\\x83\\xad\\x20\\x0d\\x80\\x97\\xc4\\x44\\xa1\\x58\\xd8\\x5a\\x54\\xf0\\xe5\\xdb\\xb1\\x2b\\x43\\xde\\x94\\x3a\\xf1\\xa8\\x18\\x56\\xac\\x96\\x9f\\x52\\xa0\\xbd\\x45\\x43\\x81\\xbd\\x26\\x50\\x41\\xa2\\x69\\x1d\\x1a\\x4a\\x0d\\x81\\x9f\\xa7\\x90\\x92\\xc8\\x80\\x35\\x21\\xfa\\x53\\x68\\x9a\\xb8\\x52\\xf1\\xfb\\xab\\xe0\\x0c\\x94\\xb7\\xf6\\x82\\xd1\\x21\\xcf\\xf5\\x43\\x91\\x32\\x25\\x29\\xc8\\xd5\\xad\\x7b\\xbb\\x98\\xea\\xfe\\x30\\x0a\\xb9\\x22\\xf1\\xc8\\x92\\x40\\xa1\\xe6\\x33\\xcf\\x56\\xa7\\xb0\\x2f\\x74\\xa2\\x92\\x14\\xe5\\x69\\xa0\\x57\\xbd\\x58\\x5e\\x40\\x4d\\x7c\\xd5\\x35\\x20\\x41\\x45\\x6e\\x6c\\xf9\\x0c\\x15\\x34\\x2e\\x02\\x56\\x70\\xf4\\xfc\\xcd\\xf9\\x87\\x83\\xb6\\x85\\x32\\x14\\xca\\xc3\\xfa\\x80\\x8a\\x66\\xc2\\x7b\\x65\\x3c\"},\n{{0x45,0x78,0xc6,0x5a,0x7c,0xa4,0x8f,0x27,0x74,0x05,0x0a,0x7b,0x0c,0xe7,0xa4,0xfd,0x5a,0xd4,0xe6,0x96,0xb2,0xb8,0xaf,0x23,0x96,0x16,0x4a,0x1c,0x7e,0x1b,0x7b,0xd7,},{0x15,0xbf,0x9d,0xbd,0x3b,0x81,0x73,0xe6,0xf0,0x3d,0xcf,0xd5,0x75,0xd9,0x09,0x84,0x5f,0x03,0x8e,0xaa,0x09,0xc5,0xd9,0x08,0xfe,0xf9,0x08,0xa9,0x74,0x58,0xb3,0xef,},{0xa1,0xc2,0x42,0xb4,0x5e,0x94,0xfd,0x18,0x0f,0x05,0x4c,0x71,0x01,0xe5,0x5b,0x39,0x65,0x68,0xf4,0x83,0xdb,0x6f,0x0d,0xfc,0x41,0x68,0xb6,0x9b,0x59,0xd3,0x85,0x81,0x4c,0x19,0xeb,0x30,0x75,0x23,0x7d,0x1f,0xbb,0x1f,0xee,0xbb,0xfe,0xa5,0x0c,0x56,0x81,0x3c,0x8c,0x39,0xc2,0x27,0x52,0xe0,0x2d,0xb7,0xe5,0x7f,0x3e,0x3f,0xbf,0x0d,},\"\\x50\\x6f\\x32\\xb9\\x68\\x14\\x24\\x3e\\x4d\\xd8\\x87\\x0a\\x8f\\xd6\\x0d\\xde\\xf0\\x9b\\xb8\\xc5\\x63\\x15\\x10\\x70\\xd9\\xbc\\xb2\\xb1\\x60\\xa3\\xea\\xbd\\x71\\xa0\\x44\\xd7\\x1e\\xc9\\x3f\\xba\\x95\\x28\\x8e\\xd6\\xfe\\x1a\\x7b\\x92\\x16\\x51\\x60\\x43\\x07\\xd6\\x5a\\x45\\xec\\x5d\\x3f\\x26\\x31\\xac\\xe4\\x0e\\x58\\xd5\\x3c\\x72\\xe5\\x26\\x88\\x6e\\x16\\x97\\x2f\\x6e\\x0d\\xb9\\x4d\\x57\\xb5\\x56\\x34\\xfd\\x39\\xd5\\x5e\\x9b\\xb7\\xf2\\x12\\xaf\\xab\\x00\\xf7\\x74\\x64\\x09\\x26\\x7e\\x8d\\x56\\x5f\\xf5\\xc2\\x25\\x73\\x33\\xc3\\xd0\\x41\\x52\\x17\\x4f\\xe1\\x2d\\xe6\\xa5\\x7b\\xea\\x05\\x7d\\xc2\\x19\\xe2\\xfb\\xa5\\xf1\\x91\\xed\\x81\\x41\\xc0\\x18\\x96\\x9d\\xe1\\x94\\x72\\xd6\\xaa\\xf7\\x63\\xf1\\x9e\\xc5\\x54\\x70\\x2b\\xb3\\xdc\\xbe\\x13\\xca\\x9b\\x23\\xb2\\x41\\x8c\\x99\\xe7\\x18\\x38\\xa8\\x8c\\xf4\\x54\\x72\\x8c\\xf9\\x20\\x8a\\x16\\xc8\\x4e\\xa3\\x98\\x29\\xb4\\xba\\x9b\\x4c\\x77\\xe1\\x76\\x11\\x2b\\xfe\\x1b\\xf3\\x5f\\x95\\xc4\\x02\\x8c\\x7d\\xb8\\x0b\\x36\\xfa\\xa2\\x9d\\x2b\\x89\\xe9\\xe8\\x62\\xf3\\x10\\x00\\x06\\x5f\\x13\\x9b\\x3d\\xa7\\x7d\\x9d\\x86\\x85\\x30\\x57\\x4b\\x7e\\x39\\x1e\\xd9\\x7b\\x34\\xf8\\x78\\x16\\x4f\\x6b\\x8d\\x87\\xb4\\x06\\xc7\\xdc\\x78\\x60\\xa5\\x17\\x5f\\x92\\x0e\\x5a\\x62\\xdc\\x1f\\xc8\\x2e\\xd8\\x45\\x25\\x43\\xb1\\x07\\x36\\x0d\\x35\\xd2\\xb4\\xc4\\x23\\x9e\\xab\\x46\\x6d\\x32\\xbf\\xda\\x34\\xf5\\x10\\x37\\xa6\\xfa\\xe7\\x6f\\x6d\\x8b\\x83\\xe8\\xf7\\xf4\\x89\\xdd\\x4c\\x1b\\x49\\xc3\\x8f\\x53\\x57\\x6e\\x62\\x17\\x2c\\x17\\xde\\xe3\\x66\\x5f\\xde\\x8c\\xbf\\x01\\x5a\\xf9\\x66\\x5b\\x0f\\x1d\\xa2\\xfb\\x77\\xb1\\x34\\xf0\\x4b\\xe2\\x71\\xe4\\x02\\xf3\\x15\\x37\\xc2\\xfc\\x05\\xc2\\xf9\\xb6\\xfc\\x3f\\xfe\\x47\\xde\\x33\\x69\\x13\\x38\\x67\\xc6\\x9d\\x10\\xe7\\xf5\\x37\\xba\\xe4\\x56\\x7d\\x46\\x8e\\x0f\\x2e\\xd8\\x06\\xfe\\x33\\x5f\\x93\\x9c\\x75\\x99\\x4f\\x36\\x3c\\xe3\\xb7\\x0d\\xaa\\x7d\\x5b\\xd2\\x31\\x7c\\x83\\x38\\x51\\xfd\\x8c\\xc9\\x72\\x51\\xec\\x41\\x90\\x23\\xd9\\xd0\\x17\\x4d\\x84\\xd5\\x60\\x9a\\x69\\x18\\xa1\\x74\\x0e\\xb1\\xe3\\x09\\xbd\\x12\\x73\\x66\\xde\\xb9\\xc5\\xab\\x12\\x99\\x2e\\x99\\x02\\xe0\\x15\\xfe\\x58\\xd6\\xad\\xbf\\x52\\xd2\\x2a\\x76\\x0a\\xcd\\x63\\xe1\\xed\\xd8\\xf1\\x38\\xe9\\xfb\\x01\\x37\\x18\\x86\\x01\\xe1\\x97\\x8e\\x7d\\x04\\xfb\\x2a\\xda\\x2b\\x2a\\xee\\x12\\xf4\\x9f\\x28\\x36\\xc6\\x84\\x2d\\x88\\xcf\\x48\\xc8\\x66\\xe3\\xd3\\x3f\\xcd\\x26\\x9c\\x27\\x5c\\x89\\xc2\\x5e\\x36\\x69\\xca\\x90\\xde\\x7b\\x67\\xa7\\xe7\\xa3\\x82\\xcb\\x7e\\xfa\\x47\\xe9\\xc2\\xbf\\x76\\x57\\x1c\\x79\\xa2\\x50\\x85\\xef\\x02\\x04\\x87\\x15\\x2f\\x06\\xbf\\xa1\\x33\\x01\\x5a\\x1b\\x8f\\x1c\\x0f\\x6a\\x9f\\x0e\\xae\\x1b\\xa6\\x2b\\xf1\\x04\\xf1\\xc1\\x6a\\xc1\\x4e\\x1e\\x96\\xc4\\xeb\\xdf\\x06\\x1e\\x0c\\xc7\\x10\\x1d\\x38\\xda\\x7e\\x9e\\x09\\x94\\xda\\xf0\\xf3\\x22\\xaa\\x3c\\xfe\\xf9\\x1b\\x61\\x6c\\x2d\\x00\\x06\\x89\\xab\\x18\\xed\\x45\\x26\\x8d\\xcd\\x27\\x50\\x94\\xf6\\x56\\xba\\x3c\\xf5\\x15\\x26\\x10\\x24\\x74\\x1f\\x74\\x44\\xab\\x7f\\xc4\\xde\\xcc\\xe1\\x67\\x56\\x03\\x2a\\x1b\\xe2\\x70\\xff\\x0b\\x03\\x17\\x54\\x2b\\xa0\\x26\\x62\\x26\\x0a\\x37\\x6f\\xc9\\x12\\xcb\\xb0\\x29\\xca\\xc5\\x45\\x15\\xf5\\xa5\\x51\\x36\\x4f\\x6a\\x99\\xff\\xad\\x0b\\x9c\\xbc\\xd0\\xe6\\x93\\xb7\\xa5\\x21\\xcb\"},\n{{0xc2,0x1e,0x70,0xc4,0x6e,0xde,0x66,0xe6,0x8a,0x88,0x73,0xbb,0xc6,0x4b,0xa5,0x12,0x09,0x30,0x3a,0x0a,0xc4,0xfc,0x49,0xb1,0xd8,0x3e,0x81,0x93,0xad,0x46,0xc0,0x37,},{0x9f,0xbf,0x80,0xa4,0x25,0x05,0xd2,0xc9,0x52,0xf8,0x9f,0x45,0x58,0xc3,0xe6,0xd1,0x87,0xa7,0xbc,0x1e,0xf4,0x46,0xb2,0xe3,0x73,0x23,0x43,0xc1,0x3b,0x33,0xd2,0x00,},{0x0a,0xe3,0x43,0xbb,0x84,0xe3,0xa2,0x99,0x07,0x8e,0x24,0x34,0xba,0x22,0x00,0x22,0xf3,0x16,0x0f,0x96,0x8a,0xc0,0x44,0x82,0xbf,0x8c,0xad,0x13,0xb4,0x23,0xf2,0x67,0x0f,0x01,0xfb,0x5f,0x7b,0x32,0xc5,0x97,0x52,0x0f,0x84,0x60,0x7e,0x0f,0x79,0xc0,0x75,0xfa,0x70,0x78,0xe6,0xe6,0x9d,0x3c,0xec,0x31,0x92,0x65,0xd4,0x66,0x08,0x0b,},\"\\xf5\\x5a\\xa5\\x70\\xce\\x4f\\xc9\\x5f\\x73\\xf5\\x17\\x20\\xd2\\x54\\xe4\\x69\\x5f\\xcd\\xc8\\x1a\\xaa\\x04\\x01\\x30\\xc7\\x68\\x7f\\x03\\x9b\\x8b\\xa5\\x9e\\xd8\\x57\\xce\\xb2\\x9c\\x12\\x10\\x25\\xa8\\x57\\xfe\\xac\\xb4\\xa0\\x1f\\x38\\xe0\\x11\\x78\\x31\\x0a\\xe6\\xe3\\x5c\\x99\\x8e\\xbf\\x89\\xdd\\x79\\x05\\x7b\\x4a\\xfc\\x6d\\xb3\\x40\\x60\\x1c\\x81\\x70\\x3c\\x87\\xa8\\xc4\\x0e\\x5c\\xeb\\xb0\\x44\\x1d\\xf7\\x8a\\x6d\\xe1\\x3a\\x44\\x7c\\xb0\\x16\\xc6\\x5e\\x74\\x1b\\xb7\\xdf\\x30\\x4d\\x83\\x05\\x6b\\x72\\xc6\\x82\\xc7\\x31\\xfa\\xc0\\xa0\\xc7\\x0b\\x78\\x11\\xca\\x14\\xa5\\x01\\x54\\x61\\x30\\x99\\xc2\\xc4\\x37\\x52\\x1c\\x40\\x4b\\x63\\x61\\xde\\x36\\x21\\xf8\\xea\\x56\\xb0\\x8e\\xbf\\xdb\\x07\\xb4\\xf2\\xbb\\x8b\\xa2\\xec\\xc1\\x64\\x33\\x6d\\xa8\\xef\\xc9\\x42\\x76\\x6e\\xf0\\xc7\\x4d\\xfd\\x3b\\x49\\xe0\\x87\\xe9\\xa2\\x7a\\xe5\\x4a\\x7a\\x2b\\x98\\x28\\x1b\\x9a\\xf9\\x3d\\xc1\\x1a\\xa2\\xf0\\x92\\x24\\xab\\x5a\\x73\\x0f\\x02\\x18\\xf4\\xa6\\xe1\\xea\\x48\\x85\\xa7\\x7f\\xbd\\x93\\xa1\\xc5\\x82\\x77\\xd9\\xe0\\x1b\\xe7\\x3a\\x25\\xcd\\xa9\\x18\\xfc\\x27\\xdd\\xdb\\x45\\x3a\\x5d\\xa6\\x90\\x2a\\xd0\\x2b\\xa0\\x57\\x75\\xc6\\x7e\\x07\\xbe\\xa4\\xdf\\x86\\x91\\x34\\x66\\x74\\x43\\x65\\xc1\\x32\\x6e\\x0a\\xb5\\xe1\\x25\\x4c\\x17\\x96\\x74\\x47\\xd5\\x91\\xba\\x5e\\xd1\\xb6\\x3a\\x42\\x54\\x3b\\x87\\xfe\\xd4\\x14\\x59\\xa0\\x89\\xbc\\xea\\xff\\x21\\x98\\x02\\xa8\\x7a\\x87\\x2a\\x76\\x3e\\x69\\x23\\x33\\xce\\x1c\\xc7\\x39\\x78\\x25\\x08\\x4b\\x2b\\x83\\x1e\\x93\\xd8\\x0d\\x67\\x37\\xf3\\x29\\x80\\xf2\\xf3\\xae\\x82\\xc6\\x21\\x90\\xfe\\x3f\\xa7\\x00\\xc5\\xb7\\x32\\x9d\\x6d\\x50\\x04\\x2b\\xdf\\x83\\x1f\\x37\\x54\\x8f\\xcc\\x80\\xb1\\x1f\\x57\\xcf\\x20\\xf6\\x7a\\x3b\\xb6\\x51\\xa7\\xbe\\xff\\xcc\\x48\\xb7\\x0d\\x17\\xeb\\x60\\xf7\\x25\\x9c\\xc5\\x3b\\xf7\\xff\\x60\\x80\\xeb\\x2b\\xd0\\x92\\x3b\\x04\\x83\\xaa\\x30\\x65\\xa8\\x95\\x5f\\x01\\xd2\\x3b\\xa8\\x09\\x51\\xe0\\xae\\xfd\\x2a\\x93\\x72\\x19\\x15\\x72\\xbc\\x52\\x91\\x6a\\xa2\\x2a\\x2a\\xec\\x39\\x37\\x67\\xfa\\xfd\\x08\\x68\\x39\\xe2\\x36\\xfe\\x04\\x60\\xce\\x6d\\x63\\x9c\\x7c\\xe6\\x9f\\xe7\\xf9\\xd3\\xaa\\xd2\\x13\\x05\\x73\\x44\\x35\\x70\\x44\\x3b\\xe6\\xba\\xb9\\x3a\\x06\\xa5\\x4b\\x8a\\xc2\\x9b\\xf3\\x3f\\xf9\\x94\\x9b\\xc9\\x21\\x58\\xe6\\x92\\x4b\\x6b\\x68\\xec\\xda\\x5f\\x6f\\x3a\\xaf\\x42\\xb3\\xd2\\x2d\\xf6\\xd5\\xe6\\x7d\\x5c\\xb3\\xab\\x71\\xeb\\x8e\\xe0\\xb0\\xe6\\x67\\x32\\xe1\\xda\\xca\\x6c\\xd6\\x0d\\x9a\\xa7\\x43\\x05\\xfc\\xd5\\x70\\x07\\x6d\\x22\\x8d\\x44\\x6d\\x5e\\xe5\\x42\\xb1\\x04\\x88\\xbf\\x8a\\xa9\\x88\\xf4\\x51\\xfa\\xeb\\xe7\\x4a\\xb6\\x69\\xd6\\x04\\xd9\\xdd\\xb1\\x51\\x06\\x62\\x0e\\xa0\\x2e\\x8d\\xb3\\x8c\\xe6\\x39\\xb5\\x74\\x78\\x12\\xbb\\x90\\x48\\xee\\x8b\\xf7\\x2b\\x1a\\x95\\x1a\\x05\\xdf\\xfa\\xc9\\x54\\x17\\xcb\\x43\\xb0\\x6d\\xce\\x61\\xee\\x3d\\xa6\\xf2\\x83\\x2e\\xe8\\x3b\\x2e\\x72\\x88\\xdd\\xd6\\x2e\\xeb\\x58\\x93\\xf7\\xf2\\xf6\\xc8\\x09\\x0d\\x99\\xe3\\x36\\xc9\\xf9\\x06\\x9e\\x18\\x15\\x98\\x58\\x41\\xbd\\xd5\\x05\\xb5\\xf8\\x3d\\x89\\x5e\\x87\\x95\\x93\\xda\\xde\\xe7\\x2c\\xeb\\x97\\x65\\x69\\x9b\\xf8\\x0b\\xd0\\x6a\\x5c\\x55\\x33\\x1b\\x25\\x45\\x52\\x7d\\x0c\\x7c\\xae\\xce\\x96\\x58\\x4c\\xe3\\xec\\x7f\\xe0\\x22\\x60\\xf2\\x0b\\x8a\\x1c\\x06\\x35\\x76\\x3f\\xf4\"},\n{{0xf2,0xc1,0x05,0x77,0xf7,0xdf,0x77,0xf0,0xc1,0x15,0x7a,0x8c,0x33,0x1a,0x7b,0xd2,0xae,0x63,0x86,0x67,0x0e,0xb6,0x5f,0x0f,0xae,0x12,0x23,0x31,0x69,0x0f,0x82,0x8a,},{0x0d,0x4c,0x34,0x0f,0xc2,0x31,0xaa,0xfb,0x3b,0x6f,0x74,0xb8,0x9b,0xce,0xf7,0xee,0xaa,0x0b,0x04,0xf2,0x93,0xec,0x85,0x44,0x24,0x7b,0xfc,0x3f,0x2d,0x57,0xc1,0xe0,},{0x60,0xb7,0x03,0x11,0x5a,0x32,0x2a,0xb8,0x92,0xc2,0x76,0xbf,0xd1,0x8f,0x70,0xa9,0xeb,0x0c,0x73,0x23,0xe2,0xc0,0xa6,0xeb,0x5f,0xc7,0xe3,0x30,0xb0,0xbc,0x3b,0x07,0xa5,0x78,0xa0,0x82,0x84,0x62,0x64,0xf0,0x32,0xc6,0x19,0x1d,0x04,0x0b,0xd9,0x8e,0x5d,0x5a,0x4d,0x4f,0x07,0x6f,0xb9,0x06,0x2a,0xcd,0x36,0xbe,0xa4,0x0c,0x91,0x02,},\"\\x38\\xea\\x1e\\x02\\x8a\\x49\\x3d\\x1c\\x60\\xec\\x70\\x74\\x9f\\x14\\xd4\\x36\\xeb\\x3a\\x2b\\x2d\\xe5\\x4f\\x21\\x3d\\x01\\xa6\\x45\\xb5\\x80\\x43\\x0e\\xcd\\x8e\\xce\\x6b\\x55\\x69\\xcc\\x01\\x7a\\x49\\x43\\xe5\\x59\\x5c\\x5e\\xd6\\xe4\\x8c\\x94\\x43\\xf2\\xfa\\x5e\\xb2\\x22\\x7f\\xfe\\x56\\xd2\\x11\\xf2\\x69\\xbc\\x8f\\x6f\\xa9\\xee\\x8c\\xd5\\x6f\\x6b\\x84\\x70\\x53\\x92\\x08\\xaf\\xe2\\x9a\\xb0\\xa1\\x95\\x04\\x4d\\x95\\x7b\\x31\\xf9\\x3e\\x18\\x4a\\x9c\\xbe\\xf1\\xa1\\x4e\\x14\\xf8\\x08\\xbb\\xf5\\x89\\xac\\x77\\x70\\x08\\x4f\\x99\\x8e\\x1b\\x25\\x4d\\xa5\\x9c\\xa6\\xd3\\xe6\\x2e\\x7b\\xe1\\x79\\x07\\x16\\xd2\\x56\\x0f\\x01\\x5f\\x39\\x9c\\xbb\\xce\\x48\\xcf\\xd0\\x39\\x1e\\xad\\x19\\x93\\x44\\x6f\\x6b\\x24\\x93\\x97\\x7d\\x93\\xd7\\xb0\\x9a\\x07\\xa7\\x9a\\x59\\xce\\x15\\xdc\\xe7\\xa1\\xda\\x9c\\x64\\x6f\\x45\\xaf\\x2c\\xca\\xd5\\x5b\\xa1\\x58\\xe6\\x38\\xc4\\xa3\\x0c\\x5d\\x30\\xe9\\xac\\x6e\\x3a\\x33\\x39\\xc2\\x43\\x42\\x6d\\x86\\x49\\x1b\\x2d\\x92\\xda\\xc1\\x47\\x8e\\x8d\\x74\\xff\\x0b\\xf1\\x49\\xbd\\xb5\\xe0\\x9e\\x3f\\xb6\\xb8\\x26\\x2e\\xb0\\x68\\x79\\x81\\x55\\x4a\\xe2\\xcb\\x47\\x19\\x63\\x39\\x07\\x9d\\xa0\\xa1\\xa5\\x72\\x39\\xc1\\x9b\\xf7\\x81\\xf6\\x2f\\xda\\xf4\\xe3\\x15\\x60\\xa8\\x43\\x17\\xef\\x03\\x04\\x92\\xcf\\x1b\\xb1\\x30\\x5b\\xa8\\x51\\x8e\\xba\\xf2\\xb4\\x34\\xd3\\x64\\x16\\x72\\xc8\\xf6\\xea\\x2d\\xef\\xa6\\x96\\xdc\\x7e\\x4f\\x39\\xef\\xc0\\x8d\\x28\\x8d\\x1c\\x96\\x6a\\x6c\\x71\\x48\\xc0\\x12\\xee\\xc4\\x39\\xf7\\xe1\\x2d\\xba\\xb5\\xb8\\x7c\\xfa\\x44\\xc9\\xae\\x19\\x00\\xf8\\x38\\x6f\\x24\\x44\\x4e\\x10\\x92\\xb2\\x3a\\x27\\x4c\\x13\\x8e\\x95\\xc6\\x61\\xe9\\x37\\x7e\\x8a\\xd2\\xd1\\xfc\\xaf\\x19\\x39\\xec\\x9a\\x63\\x2a\\x87\\x3f\\x7e\\xad\\xbe\\x68\\x7b\\x4a\\x03\\x3b\\x92\\xa4\\x77\\xf2\\xe0\\x2e\\x9e\\xd9\\x2c\\xe4\\xf9\\x5c\\xf1\\x70\\xb3\\x90\\x15\\x18\\xa0\\x62\\x14\\x3e\\x56\\xdb\\x05\\x4d\\xf4\\xe4\\x43\\x15\\x44\\x78\\x5a\\x6d\\xfa\\x24\\xee\\xc0\\xf0\\xde\\x7a\\x69\\x9c\\xcf\\x28\\x6d\\xad\\xfa\\xd8\\x59\\x03\\x61\\x22\\x50\\x76\\x4f\\x25\\xcd\\xea\\x81\\x27\\xd0\\x07\\x8d\\x55\\x48\\x25\\xea\\x6e\\x73\\x71\\xc4\\x38\\xbc\\x46\\xf2\\x9f\\xb8\\x93\\x7f\\x8d\\x9a\\x39\\xcf\\x88\\x49\\x05\\x2d\\x43\\xec\\xbf\\xf6\\xc4\\xa3\\x76\\x2a\\x5f\\x40\\x0c\\x15\\x14\\xe8\\x5e\\x91\\x38\\x4f\\xef\\x9b\\x40\\xf4\\x31\\x4e\\x22\\x3a\\x9d\\x68\\xc5\\x26\\xac\\xc7\\x02\\x27\\xd6\\x2b\\x8b\\x63\\x7a\\x34\\x2d\\xf1\\x13\\xd3\\x18\\x20\\x2c\\x51\\xed\\xd3\\xc1\\xef\\xd1\\xff\\x20\\xb1\\xff\\x07\\x8b\\x32\\x06\\x8e\\x79\\x4d\\x92\\x81\\x33\\x03\\x7f\\x1e\\x3a\\x34\\x68\\x9e\\x62\\x9e\\x43\\xfd\\x2b\\x8e\\x88\\xea\\xb5\\x0d\\x7e\\x7a\\xb0\\x64\\x70\\x14\\xab\\x5e\\x4a\\xd5\\x82\\x00\\x65\\x67\\xef\\xf7\\x2b\\x5a\\xf2\\xda\\xc5\\x36\\x89\\x2c\\xcc\\x87\\x1f\\x8a\\x80\\xb5\\xcb\\x79\\xd9\\x0b\\xcc\\x6b\\x77\\xd4\\xcd\\x08\\xf8\\x76\\x18\\x4e\\xf5\\x8c\\x06\\x4a\\xe4\\x30\\xbb\\x79\\xa6\\xb9\\xe9\\x6b\\x0a\\xd8\\x73\\x68\\xaa\\x83\\x8a\\x8d\\xcc\\xff\\xac\\x0c\\xd8\\xce\\x9e\\xa0\\xd0\\xec\\x4c\\x4b\\x0f\\x42\\x67\\x34\\x16\\x65\\x9c\\x98\\x49\\x92\\xcf\\x53\\xb1\\xe4\\x45\\x43\\x10\\x07\\x64\\x0d\\x47\\xec\\xe2\\x6d\\xee\\x4a\\x29\\x43\\xaa\\x70\\x97\\xdd\\x35\\x6c\\xff\\x47\\x54\\xf2\\x1a\\xc0\\x7f\\x6b\\x3f\\x73\\xc4\\x69\\x05\\x55\\x12\\xf3\\x7a\\xba\"},\n{{0x04,0x1a,0x97,0x90,0x6b,0x59,0x56,0xb9,0xd3,0x40,0xf2,0xe0,0xd7,0xa1,0xdc,0xbf,0xef,0xe6,0x63,0xe9,0xbb,0x40,0x26,0xf8,0xcc,0x1a,0xe7,0xe2,0xa1,0x4d,0xe2,0x7e,},{0xf3,0x82,0xd3,0x2e,0x88,0xc3,0xa7,0x2c,0x7c,0xad,0xda,0xfc,0xf8,0xaa,0x69,0x9e,0x21,0xdb,0x7a,0x6b,0xf4,0xed,0xd6,0xe4,0x9a,0x00,0x5a,0xad,0x70,0x2e,0x6a,0x79,},{0xa2,0x3f,0x03,0x2e,0x66,0x92,0xa0,0xe8,0xbf,0xee,0x5b,0x2d,0x30,0xb4,0x14,0xcb,0x16,0xc3,0x5a,0xd0,0x8d,0xa3,0x1f,0x69,0x6d,0x46,0x1a,0x02,0x85,0x78,0x22,0xc4,0xef,0x35,0x7f,0x0c,0xcf,0x31,0x02,0x5a,0x4d,0xc9,0x5c,0xed,0x30,0xa9,0x94,0xf4,0x1e,0xdd,0x1d,0x08,0x7a,0xfc,0xaa,0xf3,0xe8,0xe8,0x75,0x70,0x83,0x20,0xf8,0x0c,},\"\\x71\\xa7\\x59\\x57\\x41\\x15\\x44\\x97\\x5a\\x48\\xcf\\x10\\x3a\\xa1\\xf8\\xe2\\xad\\x15\\x24\\x44\\x59\\xcd\\xc0\\xe3\\x36\\x96\\x6e\\xb8\\xb2\\x6c\\x97\\xf2\\x16\\x9e\\x5d\\x78\\x53\\x70\\x37\\xef\\xc0\\x77\\xe8\\x6f\\x06\\xe0\\x5e\\x9c\\x1d\\xc3\\x41\\x82\\x88\\xc0\\xa2\\xbe\\x6b\\xa3\\x4b\\x3a\\x04\\xab\\x20\\xba\\xe7\\xf3\\x62\\x10\\x94\\xb8\\x7d\\x78\\xa7\\xea\\xcb\\x86\\x4d\\x40\\x78\\xcb\\x4e\\xfc\\xba\\xc5\\xad\\xd9\\x37\\xa2\\xc6\\x01\\x2e\\xe1\\xa8\\xb2\\x56\\xcc\\x27\\x6b\\x65\\xd5\\xe9\\x2b\\x4d\\x00\\xb9\\xb1\\x1f\\xad\\x88\\x49\\x91\\xde\\xc4\\xc1\\xcb\\x9d\\xce\\x18\\x63\\xc8\\xb0\\xa2\\x10\\x16\\x1a\\xe6\\xb3\\xf8\\xbf\\x9c\\xc4\\xdc\\xe4\\xad\\xfd\\xc8\\xed\\x57\\xd8\\x3e\\x95\\xab\\x9d\\xd2\\xd9\\x26\\x58\\xdf\\xbd\\x3a\\xfa\\x99\\xe3\\xf8\\x95\\x1e\\x2a\\xd7\\x4a\\x14\\x8f\\x6f\\x59\\x7e\\xb2\\xc9\\x45\\xc1\\xf1\\xb9\\x44\\x61\\xae\\x07\\x45\\x48\\x1f\\xd0\\xed\\xf8\\x38\\xc6\\x28\\x60\\x35\\xe3\\x6f\\x01\\x12\\x38\\x87\\x5d\\xbb\\xa2\\x28\\x9d\\x3d\\x6a\\x39\\x42\\xa7\\xf9\\x55\\x4c\\x64\\x43\\x05\\x24\\x4d\\xdb\\x77\\xc1\\x17\\xcb\\x4b\\x56\\x23\\x77\\x29\\xdd\\xe4\\x28\\xb8\\xbb\\x42\\xdf\\x9c\\xe2\\x9e\\x14\\x4d\\xfc\\x96\\xcf\\x6c\\x67\\x67\\xb1\\xee\\x6d\\x05\\x3c\\xe4\\xf8\\xbb\\x20\\x56\\xab\\x78\\x10\\xaa\\x13\\x68\\xa8\\x91\\x0f\\x2f\\x69\\xe0\\x61\\xc1\\x9d\\x88\\x47\\x18\\x4f\\xed\\x53\\x4f\\x98\\x75\\x8d\\x70\\x3a\\x76\\x88\\x5f\\x91\\xeb\\x75\\x2a\\x21\\x95\\x4a\\x10\\xc6\\xf6\\xb4\\xda\\x10\\x46\\x4d\\xed\\x36\\xb0\\x00\\x89\\xf6\\x62\\x91\\x54\\x21\\xbf\\xda\\xd4\\x96\\x75\\x36\\x89\\xcc\\xd0\\x3b\\x62\\x40\\x21\\x08\\x07\\x61\\xe6\\x81\\x76\\xb1\\x06\\x97\\xda\\xc8\\x78\\xe4\\xc3\\xdb\\x2f\\xd0\\xb2\\x8c\\x65\\x53\\x35\\xd9\\x80\\x16\\xf1\\x9f\\x26\\x5b\\xb0\\xb2\\x43\\x4c\\xb4\\x63\\x78\\x44\\xd9\\x1e\\xd0\\xce\\x05\\xed\\x25\\x91\\xfd\\x99\\x89\\x65\\xf8\\x3f\\x31\\x97\\xd1\\x0e\\xef\\x44\\x88\\x50\\xe7\\x92\\x03\\x27\\x24\\x70\\x1d\\xa3\\x05\\xcb\\x6d\\x79\\x46\\x69\\x48\\x3f\\xc3\\xdc\\x6f\\x68\\x6b\\x18\\x3e\\x29\\x99\\x13\\x0c\\x8f\\xc0\\x05\\x8d\\xca\\xbb\\xc9\\x18\\x8f\\x26\\xb2\\xd6\\x3e\\xbd\\x6c\\xb1\\xe1\\x8a\\x09\\x7c\\x77\\x04\\xa5\\x9b\\x5e\\x18\\x7e\\x01\\x42\\x59\\x3b\\x70\\x83\\xf7\\x40\\x0a\\xfa\\x9b\\x1b\\xf0\\xc1\\xcc\\x6c\\x35\\x6b\\xc4\\x33\\x4a\\xf7\\x72\\xe6\\x71\\x53\\xb4\\x5b\\x33\\x1b\\x99\\x09\\x20\\xc2\\x4e\\xed\\xe2\\xc6\\xe3\\x23\\x70\\x3f\\x52\\xec\\xd6\\x07\\x35\\xb2\\x3b\\xf2\\x2b\\x81\\xee\\x77\\x59\\x27\\xc3\\x7e\\x53\\xda\\xd7\\x59\\x6e\\xa6\\x5a\\x73\\xbb\\x96\\x77\\x5f\\x3b\\x87\\xc8\\xb3\\xc0\\x88\\xec\\x69\\x5b\\xc3\\xa7\\x50\\x2c\\x0c\\x51\\x0f\\x02\\x0b\\xf9\\xac\\xa3\\xcb\\xb7\\xa2\\xc0\\x11\\xc6\\x7f\\xf2\\x7d\\x63\\x4c\\xaf\\x1d\\xcf\\xc5\\x8e\\x5e\\x39\\x7e\\x66\\x58\\x25\\x22\\x72\\x01\\x1c\\x8f\\xfd\\xd6\\x42\\x30\\xa9\\x32\\x41\\xff\\xf6\\x83\\x72\\xc4\\xba\\x85\\x38\\x2b\\xbb\\x22\\x93\\x09\\x65\\x29\\x22\\xdb\\x68\\x83\\x66\\x31\\xe5\\x5b\\xe6\\x9a\\xb6\\xad\\xb8\\xe4\\x33\\x53\\x57\\xfc\\x92\\x3e\\xfe\\x15\\x4a\\xfc\\xc2\\x22\\xd6\\x0d\\x07\\xf5\\x69\\x90\\xa3\\xe5\\xa2\\x14\\xb2\\x27\\xae\\xcf\\xf2\\xcd\\x1b\\xb6\\xf0\\xc7\\x9f\\xf5\\x45\\xf7\\x0a\\x61\\x61\\x41\\xa9\\xd5\\x3f\\x92\\x2a\\x02\\x44\\x3f\\x7d\\x2a\\x46\\x89\\xc3\\x5b\\x09\\x5d\\xd3\\x94\\xd5\\x0b\\xf4\\x9f\\x96\\x80\\xa5\\xf7\\xd9\"},\n{{0x4b,0xc5,0xe0,0x5a,0xa0,0x03,0xa4,0x49,0x2f,0x4b,0xad,0x10,0x2a,0x53,0x90,0xf7,0xce,0xba,0xb3,0xd3,0xec,0xa9,0x15,0x21,0x42,0xad,0x5e,0xf7,0xd8,0x40,0x30,0xae,},{0x67,0x51,0xd3,0xad,0x8b,0xb6,0xc6,0x4d,0x6a,0x17,0xd7,0xe4,0x47,0xa2,0x7d,0xa2,0x2f,0x5f,0x04,0x03,0xf4,0x37,0xba,0xc9,0x44,0x9f,0x13,0xcc,0x85,0x3d,0xd8,0x40,},{0xa2,0x4f,0xee,0x11,0xf7,0xec,0x6d,0xa3,0xe9,0xdf,0xaf,0x6c,0x85,0x8a,0xc0,0x04,0xb4,0x53,0x1a,0xbd,0x1c,0x9d,0x3b,0xb6,0x4f,0x40,0xdd,0x24,0x7f,0x00,0x35,0x93,0x50,0xe4,0x3b,0x2d,0x4b,0x8f,0xbe,0xc5,0xf6,0xb2,0x41,0xec,0xf9,0xf1,0x10,0x14,0x85,0xcf,0x41,0x87,0x35,0xb0,0x5f,0x71,0x20,0x18,0x33,0x5b,0x20,0x06,0x83,0x08,},\"\\xa8\\xf7\\x94\\xdb\\x17\\x95\\x66\\x7d\\x28\\xd2\\x4b\\x70\\xac\\x22\\x00\\xa6\\x23\\x9a\\x34\\xe2\\x43\\x8c\\xed\\x1d\\x03\\xf9\\x7e\\xd4\\x8b\\xeb\\x4d\\x6b\\xea\\x67\\xc1\\x43\\x38\\xf7\\x73\\x64\\x19\\xdc\\xd2\\xa2\\xa7\\x97\\x37\\x26\\x57\\x2e\\x6a\\xfe\\x7e\\xdf\\xef\\x22\\xc9\\x9b\\xe8\\xb0\\x69\\xf0\\x4f\\x6d\\xc6\\x1a\\x13\\xb3\\x43\\xc6\\xe5\\x85\\xab\\xad\\x22\\x14\\xd8\\x5c\\x36\\xf0\\x29\\x96\\xfa\\xbb\\x46\\xbb\\x91\\xb5\\x17\\x6a\\xc7\\x08\\xe4\\x9a\\x0b\\x05\\x30\\x17\\x04\\x8f\\xbb\\x55\\x45\\x3f\\x2b\\x82\\x08\\xd6\\x67\\x8d\\x1a\\x8c\\xf6\\xa1\\xee\\x9a\\xd7\\xa9\\x1e\\x38\\x03\\x25\\x63\\x5d\\x1e\\x23\\x6a\\x6c\\xa1\\xd6\\xcc\\x7f\\x6b\\x59\\xf2\\xa2\\xbf\\x18\\x4f\\x5e\\xe4\\x51\\xd6\\x79\\x9f\\x69\\xba\\x11\\xa0\\xcd\\x6b\\xc0\\x4b\\xe8\\xa3\\x51\\xa8\\x0e\\x72\\x5b\\x5f\\xc4\\x56\\x3e\\x45\\xbd\\x47\\x49\\xec\\xbc\\x45\\x20\\x52\\x29\\x10\\x5b\\x9d\\xe7\\x32\\x61\\x49\\x85\\x27\\xf3\\xd4\\xec\\xfb\\xb5\\x83\\xff\\x53\\x27\\x53\\xd0\\x7c\\x38\\x52\\x6b\\xb4\\x82\\xd1\\x71\\xa2\\x61\\xb9\\xcf\\x89\\x90\\x6a\\x7d\\xea\\x8c\\xbd\\x7e\\x72\\x6b\\xa3\\x1e\\xa6\\x88\\x03\\xa6\\xb0\\x04\\xf6\\xdc\\xd1\\x9e\\x67\\x19\\x50\\x46\\x37\\x38\\xcc\\xa7\\x8b\\xb0\\xdf\\xfa\\x3d\\x64\\x57\\xe4\\xae\\xca\\x65\\x7e\\xc6\\x49\\xb9\\x7e\\xe3\\x0e\\x97\\xc8\\xcb\\xe6\\xce\\x43\\xc2\\xaa\\x9a\\x69\\x95\\x8e\\x9d\\xc8\\x81\\xe4\\xaa\\x7b\\x32\\x78\\x07\\x4e\\x78\\x7a\\xce\\x5f\\xb6\\x01\\xd7\\xfa\\xf7\\xca\\x51\\x03\\xec\\xbb\\xd3\\xbd\\x55\\x4e\\xb1\\xb0\\x66\\xf8\\x29\\x6d\\x2c\\xc5\\x7e\\x8c\\x8a\\x32\\xe9\\xc0\\xe6\\xa9\\x26\\x96\\x4d\\x6d\\xf2\\xd8\\x64\\x58\\x64\\xb3\\x22\\xc3\\x22\\xf1\\xca\\x80\\x73\\xce\\xdf\\x2b\\x55\\x67\\x11\\xa7\\xa2\\x0b\\x77\\xc0\\xa1\\xed\\x27\\x7a\\x9a\\x6c\\xa2\\xc0\\x71\\x54\\xe8\\x63\\xfe\\xf5\\xa4\\x04\\xe3\\xe8\\x9f\\x0d\\x7f\\x30\\xf2\\x18\\xec\\x4d\\xe7\\xa5\\x3a\\xeb\\x9c\\x41\\xee\\xaa\\xf6\\xce\\x74\\x96\\x49\\xc9\\x99\\x8f\\xd6\\x2b\\xcb\\xa2\\x87\\x23\\x38\\xe1\\x9c\\x94\\xe5\\x9d\\xd5\\xe2\\xdd\\x77\\x6f\\x53\\x71\\x9d\\x21\\x74\\x69\\x76\\x93\\x2e\\xf1\\x1a\\xbf\\x7a\\x32\\xae\\x6b\\x07\\x44\\x66\\x5d\\x0e\\x0c\\xe5\\x13\\x95\\x5a\\x9e\\x68\\x53\\x1d\\x8e\\xe4\\xde\\x9a\\x8d\\x35\\xdd\\xfb\\x88\\xeb\\x5a\\x48\\x6a\\xd6\\x31\\x37\\xe8\\x89\\x2f\\xd7\\xc6\\x89\\xd4\\xf9\\xe7\\x02\\x1b\\x11\\x73\\xbb\\x37\\x52\\xa5\\xee\\xcf\\x29\\x92\\xe3\\xfd\\x46\\x42\\x26\\x3c\\x7b\\x3d\\x81\\x5c\\x29\\xb4\\x66\\xab\\x69\\x28\\x5f\\xfe\\x4b\\x8d\\xaf\\xcb\\xf3\\xd0\\x1d\\x63\\x55\\x53\\xab\\x75\\x75\\xa7\\xa3\\x47\\x1e\\xdc\\x7b\\xe4\\x12\\xd3\\xd0\\x1e\\x6f\\xe8\\xe3\\xcd\\xc3\\xfa\\x04\\xd2\\xa7\\x59\\x93\\x81\\xe2\\x2b\\xba\\x49\\xc5\\x53\\x9d\\x79\\xc6\\x2b\\x52\\xbb\\x0e\\xca\\x33\\xf7\\x42\\x55\\xe4\\x1a\\x95\\x26\\xa8\\x92\\x89\\xb1\\x5f\\x18\\x50\\xd9\\xaf\\xa8\\x7e\\x6b\\x6f\\xa1\\x27\\x10\\x1c\\x1a\\x6d\\x88\\xd4\\x33\\xe0\\xc8\\x6a\\xa6\\x0b\\xba\\x8f\\xe7\\x10\\x0e\\xd6\\x1d\\x5a\\x9d\\x00\\xa0\\x07\\x64\\x51\\x3e\\xb1\\xc7\\xf5\\xf5\\xc3\\xb3\\xef\\xc4\\x53\\x2a\\x36\\xb4\\x07\\xfe\\x2d\\x17\\xcf\\xb4\\xe6\\xfc\\xd6\\x04\\x9c\\xff\\x3a\\x35\\x56\\x23\\xa3\\xa4\\x13\\x90\\xea\\x48\\xf4\\x21\\x20\\xd8\\x97\\x94\\x91\\x11\\xbe\\x3d\\x16\\x9b\\x2d\\x2e\\xf4\\x5b\\xdb\\x89\\x4f\\xe2\\x0b\\x1a\\x95\\xef\\x66\\x14\\x94\\x27\\xa9\\xd8\\xf8\\x0a\\x9b\\x2e\"},\n{{0xa3,0xbe,0xd9,0xfe,0x23,0x54,0xbd,0x28,0x60,0x14,0x9a,0x3d,0xb7,0x5a,0x85,0xb1,0x29,0xcf,0x83,0xe9,0xd7,0x3e,0x63,0x17,0xba,0x70,0x54,0x52,0x19,0x33,0xf8,0x96,},{0x5a,0xc0,0x3b,0x4f,0x13,0xd9,0x1d,0x06,0x6b,0x2c,0xe3,0x59,0xe9,0xbb,0x1d,0xfb,0x6b,0xfa,0x5a,0xfa,0x38,0x2f,0xd1,0xcc,0xd7,0x2a,0xef,0x11,0x76,0x07,0x9f,0x89,},{0x33,0xbc,0x1e,0x0b,0xf1,0xb4,0x93,0xe0,0xcf,0xb7,0xea,0x40,0x48,0x0a,0x14,0x23,0xe0,0x91,0xf7,0x14,0x57,0x45,0x01,0x31,0x73,0x78,0x7d,0xf4,0x7a,0x10,0xdb,0x24,0xc1,0x65,0xd0,0x05,0x96,0xfa,0xb7,0x0e,0x68,0xc9,0x4c,0x10,0x4e,0x8a,0x74,0x07,0xcf,0x69,0x5c,0xd3,0xfb,0xe5,0x85,0xb5,0xb1,0x76,0xb8,0x5c,0xcc,0xa4,0xfd,0x08,},\"\\xdb\\x85\\x38\\x08\\x68\\x6d\\x6d\\x21\\xf4\\xc5\\x7b\\x54\\x1e\\x5a\\xd6\\x33\\x94\\xd4\\x65\\xe6\\x00\\x78\\x64\\x3c\\xab\\x1e\\x06\\x5c\\x9f\\x30\\x6c\\x50\\x00\\x78\\xf0\\xcc\\x41\\xef\\x0f\\x95\\x42\\xb5\\xfe\\x35\\x6a\\xec\\x47\\x77\\xef\\x8a\\x95\\x55\\x4c\\x97\\xb6\\xa4\\x40\\x99\\xe9\\xbd\\x64\\x04\\xfb\\x0b\\x2e\\x41\\xf9\\x19\\x14\\xb0\\x74\\xd1\\x22\\x37\\xcd\\x44\\x2e\\xbd\\x40\\xb5\\x1b\\x8b\\xc8\\xbb\\xe4\\x37\\xa2\\xc5\\x33\\x32\\xd2\\xbe\\xb2\\x28\\x1b\\xf7\\x32\\x4a\\x0c\\xf5\\xb7\\x41\\xbb\\xf9\\x8d\\x1e\\xb9\\x85\\x8b\\xe9\\x26\\xe9\\x15\\xa7\\x8e\\x8d\\x31\\x4b\\x41\\x44\\xf3\\xd2\\x0d\\xfc\\x6c\\xb7\\xf4\\x8c\\x23\\xaf\\x90\\xf8\\x71\\xc6\\xcd\\xa9\\x08\\x45\\xa4\\x1a\\xff\\x17\\x07\\xa8\\x7b\\x4e\\x55\\x16\\xf1\\x8e\\x8b\\xd7\\x68\\x3c\\xfd\\x74\\x07\\x08\\x03\\xe8\\x88\\x33\\x8c\\x9a\\x18\\xf7\\x92\\xc8\\xd3\\xa7\\x04\\x17\\x0f\\xf9\\x82\\xbf\\xfc\\x9e\\x8e\\xc9\\xea\\x5d\\x1a\\x62\\x59\\x2f\\x16\\x88\\xd4\\xf2\\xb0\\x1e\\x11\\xf9\\xf8\\x87\\x74\\xc4\\x7a\\xc1\\xd5\\x8f\\x69\\x0b\\xcf\\x28\\x8c\\xf8\\xa4\\x73\\xd3\\x50\\xa8\\x23\\x9d\\xf9\\xd3\\xa6\\x28\\x81\\xda\\xdd\\x33\\x85\\x31\\xfd\\xce\\x76\\x15\\x80\\x7c\\xe9\\x65\\x49\\x6d\\x6f\\x35\\xd6\\xc0\\x42\\xf0\\xce\\x7f\\x21\\xef\\xe5\\xce\\x64\\x25\\x18\\x59\\x41\\xed\\x56\\x36\\xb8\\xae\\x91\\x3a\\x75\\xd2\\x1a\\xb9\\xdb\\xdb\\x3c\\x3b\\x66\\x87\\xa4\\x5e\\x04\\x49\\x38\\xa9\\xf1\\xc1\\x3a\\x33\\x0e\\xa9\\x76\\x1e\\x28\\x3e\\x61\\xd4\\xa3\\x20\\xe1\\xf5\\x59\\x88\\x2f\\x34\\xb6\\x07\\xfe\\xfe\\x32\\xc3\\x43\\x17\\x4a\\xbc\\xdc\\x77\\xb0\\x65\\xa9\\x29\\x04\\xb4\\x2d\\x96\\x1d\\xb8\\xed\\x91\\x6c\\x01\\x46\\x4f\\xfd\\x43\\xf9\\x3c\\x10\\x77\\xf1\\xdf\\x7e\\xe6\\x50\\x31\\xcf\\xe0\\x5d\\x78\\x0d\\x01\\xd0\\x8e\\xe0\\x36\\xf2\\x2a\\x2b\\x05\\x12\\x19\\x3b\\x0c\\x0f\\x38\\x01\\xe0\\xa0\\x20\\x8e\\xef\\x24\\x5c\\x9e\\x51\\x93\\x52\\xd2\\xb0\\x09\\x63\\x82\\xf2\\xcb\\xa0\\x6e\\xb2\\xa0\\x1d\\xac\\xf6\\x19\\xea\\xbb\\xc8\\x83\\xc5\\xd4\\xf2\\xfd\\x7c\\x34\\x23\\x17\\x9c\\x0f\\x5f\\xfd\\xaf\\x8c\\xaf\\xff\\x5c\\x46\\xb3\\x4a\\x09\\xc3\\xc5\\x0e\\x29\\x49\\xc0\\x60\\x00\\x20\\x7d\\x70\\xd3\\x7d\\x65\\xa7\\x43\\x07\\x5f\\xdc\\x2b\\xe6\\x2d\\x41\\x2a\\xa6\\x3e\\x36\\x37\\x06\\xca\\x90\\xe6\\xef\\x44\\xe1\\x52\\xea\\x4d\\xc5\\xc2\\x89\\x3e\\xcd\\x08\\xd7\\x96\\xd4\\x1f\\x17\\x22\\x54\\xc3\\xd1\\xd1\\x4b\\xb0\\x67\\xb5\\x3a\\x08\\x97\\xbb\\xd7\\x3c\\x99\\x54\\xd9\\x64\\x8b\\x2a\\xf1\\x0d\\x9c\\x27\\x03\\xe3\\x8b\\x6c\\x62\\x46\\x9f\\x6f\\x95\\x8a\\x1c\\xa0\\xa3\\x20\\xc1\\x23\\x39\\xe9\\x0c\\xf7\\x68\\xc8\\x7b\\x47\\x38\\xc2\\x19\\xf8\\x09\\x3b\\xff\\x4c\\x2c\\xfd\\x29\\x45\\x9f\\x6d\\x32\\x81\\x34\\x93\\x78\\xe9\\x15\\xa3\\xb0\\xe7\\x24\\xc7\\x4d\\x2b\\xd7\\xa8\\x51\\xac\\x7c\\x6b\\x48\\xe8\\xaf\\xc7\\x12\\x4f\\xdc\\xbc\\xab\\x5f\\xf8\\x0d\\x1d\\xee\\x30\\xa6\\xc0\\x24\\xcb\\x43\\x31\\x97\\x23\\x66\\xeb\\xab\\x26\\xbb\\xb9\\xf6\\x08\\xca\\xac\\x7e\\x51\\x91\\x4d\\xf0\\x58\\xb9\\xb3\\x74\\x5d\\x98\\xc5\\xd2\\x7e\\x97\\x10\\x54\\x75\\xec\\x01\\x73\\x77\\xe6\\x31\\x61\\x98\\xec\\xe4\\xec\\x59\\x09\\xf0\\x4f\\xc2\\x7e\\x7b\\x38\\x2e\\x66\\xad\\xb6\\x2a\\xc8\\xa9\\x77\\xf3\\x76\\xfd\\x5d\\xae\\x43\\x4f\\xb5\\x51\\x75\\x24\\x9c\\xa1\\xab\\x6b\\xb0\\x2d\\xec\\x06\\x96\\xf0\\x89\\xbe\\x34\\x54\\x88\\x7a\\x0c\\x32\\x36\\x1d\\x17\\x2b\\xd2\"},\n{{0x88,0xa2,0x4f,0x0d,0xf3,0xae,0x29,0x14,0xdf,0x79,0xda,0x50,0xec,0xf8,0xec,0xb4,0x2f,0x68,0xc7,0xba,0xad,0x3b,0x6c,0x3a,0x2e,0x0c,0xc9,0xc2,0x5d,0x09,0xd1,0x42,},{0x12,0xe6,0x60,0x3f,0x71,0x3b,0x23,0x05,0x35,0x85,0x68,0x71,0x00,0x18,0x68,0x5e,0x14,0x15,0x53,0xc4,0x75,0x91,0x39,0x6f,0xb4,0x25,0x9e,0x42,0xdc,0x53,0xb9,0xc9,},{0x17,0x07,0xcc,0x00,0x91,0x86,0xbf,0x3f,0x03,0xf7,0xbb,0x9e,0x3c,0xd4,0xcf,0x6b,0x73,0x7b,0x7a,0x6b,0xaa,0xde,0x7f,0xc6,0xc3,0xff,0x5c,0x12,0x25,0xdb,0xb2,0xba,0xf5,0x4f,0x47,0xc8,0x5e,0xaf,0xa1,0x32,0xc3,0x1e,0xac,0xa0,0x3e,0x6a,0xec,0x14,0x47,0x73,0x3f,0xac,0xd3,0x71,0x49,0xb7,0xc6,0xcf,0x0c,0xd4,0x1f,0x61,0x14,0x04,},\"\\x65\\x4e\\x9e\\xdc\\x69\\xfe\\x63\\x4c\\x23\\x08\\xba\\x8c\\x46\\xa9\\x55\\xe8\\x82\\x45\\x62\\x86\\xea\\xe3\\x59\\x3c\\xae\\x73\\x9c\\x44\\x86\\x6c\\x0d\\xe9\\xed\\xcb\\xbf\\x0d\\xb1\\xc4\\x41\\x49\\x66\\x84\\x67\\x70\\x9d\\xc9\\x70\\x62\\x98\\xdd\\x2e\\xac\\x33\\x01\\xda\\xba\\xd5\\xbd\\x8e\\x93\\xc5\\xe8\\xa9\\x3f\\x19\\x4e\\x0f\\xc1\\xd9\\xf3\\x76\\xc1\\x44\\xc2\\x93\\xae\\xfd\\xa0\\x86\\xb2\\x21\\x8f\\x2e\\x9d\\xfd\\x7c\\x2d\\xc5\\x2b\\xa3\\x3e\\xb2\\x29\\xdc\\xf7\\xbb\\x68\\xce\\x0f\\x87\\x6c\\x5f\\xd4\\xe8\\x1a\\xfd\\x80\\x16\\x9f\\x73\\xcf\\x26\\x4e\\x5d\\xc0\\xce\\x16\\xe1\\xb8\\x76\\xcd\\x11\\xc7\\xad\\x89\\x05\\x8e\\xe0\\x82\\x0c\\x40\\x00\\x5d\\x01\\xf1\\x19\\xf8\\xbe\\x6f\\x1a\\xfb\\xe2\\x4c\\xa4\\xae\\xdc\\x18\\xe9\\x78\\x96\\x82\\x7c\\x3e\\xd6\\x7f\\xc4\\x56\\x30\\xe7\\x90\\x3b\\x7f\\xee\\x9c\\x99\\x0e\\x36\\x19\\x37\\xbf\\x4e\\xa0\\xa4\\xd8\\xd1\\x6c\\xf6\\xd9\\xcf\\x03\\x81\\xe9\\x06\\x5e\\x36\\x25\\x14\\x8f\\x8a\\xe0\\x49\\x1a\\x03\\x41\\xd0\\xff\\x9f\\x72\\x7b\\xe1\\xf3\\x10\\xca\\x1e\\xc3\\xf0\\x10\\x4a\\xa0\\x54\\x32\\x17\\x84\\xdd\\x24\\xd5\\x3c\\x98\\x5b\\x28\\xd4\\x40\\x82\\xf8\\xe1\\xc1\\x08\\xa4\\x41\\x09\\x63\\x8f\\xf5\\x11\\x6e\\xdd\\x85\\xae\\xb8\\x6b\\x6e\\xa5\\x12\\xa1\\x9b\\x60\\x2e\\xdd\\x9d\\x21\\x10\\x70\\xd0\\x44\\xaf\\x5b\\xed\\xb6\\xc8\\x52\\x7b\\xa3\\x49\\x1e\\x34\\x5b\\xac\\xc1\\x30\\xb3\\x69\\x60\\x28\\x2a\\xe7\\x37\\xb8\\x5c\\x76\\x92\\x74\\xf0\\xf7\\xc5\\x88\\xf4\\x0e\\x66\\x25\\xb2\\x36\\xbd\\xc1\\xa3\\xb8\\x73\\x20\\x46\\x0e\\xee\\xad\\xa2\\x78\\x12\\x4b\\x56\\x68\\x87\\x4f\\x39\\xf5\\x9c\\x2e\\x6a\\xa2\\x08\\xc3\\xb6\\xa9\\xb8\\x45\\xc4\\xd0\\xa2\\x7a\\x05\\x46\\x78\\x6f\\xa1\\x3e\\x51\\xcc\\x98\\xb7\\x3f\\xd7\\xee\\x32\\x7b\\x62\\x15\\xec\\x6b\\x62\\x9f\\x4c\\xc7\\xe4\\xbd\\x3c\\x0a\\x3d\\xb7\\x8a\\x21\\xff\\xfe\\x24\\xc7\\x04\\x38\\x71\\x6b\\xc3\\x7b\\x8d\\xa7\\xc5\\xff\\x7c\\x36\\x88\\xa9\\x03\\x39\\xc2\\x2e\\xb5\\x0b\\x7c\\x2c\\xd3\\x6b\\x68\\x83\\x1f\\xd5\\x93\\x91\\x75\\x68\\x9b\\xd3\\xe2\\x2c\\x38\\x81\\xaf\\x33\\x7e\\xe1\\x44\\x35\\x70\\x9e\\x35\\x10\\x40\\xef\\x3d\\xa9\\x55\\x72\\x4e\\x51\\xc2\\x4a\\x5e\\x2c\\x09\\xf8\\x91\\x80\\x83\\x93\\xfb\\xf8\\xef\\x7f\\x1f\\x5f\\x02\\x98\\xde\\xeb\\xdc\\xd8\\xd6\\x66\\xcb\\xcf\\x3e\\x86\\x6c\\x71\\x89\\x99\\xab\\x6b\\x1f\\xee\\xc9\\xc4\\x7e\\x02\\xe7\\xd6\\x35\\x40\\xf8\\x99\\x63\\xd5\\x42\\xc5\\xd0\\x1f\\xb6\\xfc\\x30\\x76\\x89\\x68\\xae\\x81\\xb2\\x0c\\x35\\x4b\\x40\\x00\\xc1\\x32\\x77\\x47\\x64\\xd6\\xd4\\x43\\xad\\xd6\\x4f\\x6d\\xd7\\x48\\xf5\\xfb\\x5b\\x7f\\x6e\\xba\\x40\\x1d\\xb4\\x31\\x8b\\xe9\\x93\\x98\\x9f\\xcc\\x25\\x77\\x96\\x1f\\xa5\\xad\\x31\\xf6\\xa2\\xa9\\xd6\\xa7\\x55\\x28\\x58\\x65\\xcd\\x5d\\xc3\\xa8\\x8c\\xfb\\x5a\\xba\\x7d\\x92\\x3b\\xaf\\x78\\xb5\\xd1\\x31\\xb4\\xc2\\x14\\xdf\\x55\\xb6\\x17\\x1f\\x45\\x20\\x9e\\x21\\xca\\x66\\x45\\x49\\x0d\\x3a\\x36\\x44\\xdd\\xa6\\xdc\\x92\\x9c\\x7c\\x40\\x95\\x76\\xd3\\x71\\x64\\x75\\x5e\\xf8\\xaa\\xf3\\xdc\\xd4\\xd2\\x27\\x75\\xee\\x7d\\xea\\x0e\\x56\\x5b\\xd5\\x47\\x27\\x92\\x1c\\x64\\x9b\\xc5\\x1f\\x20\\xc1\\xf6\\x8c\\x1f\\xde\\xac\\x45\\x5c\\x67\\xd7\\x1a\\x1c\\xb8\\x83\\x7f\\x46\\x91\\x44\\x8b\\xf0\\xbf\\x04\\x4a\\x46\\xf1\\x68\\x5f\\xbe\\x22\\xb1\\xe0\\x18\\x77\\xf7\\x47\\x7d\\x34\\x99\\x40\\x8c\\x4c\\x31\\x65\\x10\\xce\\x2e\\x55\\xb9\\x80\\x05\"},\n{{0x18,0x4d,0x0c,0xe2,0xe9,0xdb,0x7f,0x25,0x7a,0x8b,0xf4,0x64,0x6d,0x16,0xd2,0xc5,0xef,0xc2,0x70,0x2c,0xed,0x02,0x6b,0x69,0x06,0xd3,0xc8,0xc0,0x11,0x8f,0x22,0x61,},{0xe9,0xda,0xb8,0xfd,0x9d,0x94,0xdc,0x9b,0x24,0xcc,0x79,0xc6,0x35,0xcc,0x57,0xce,0x66,0x51,0x89,0x82,0xba,0x3e,0x24,0x47,0x24,0x07,0x41,0xba,0xc0,0x73,0x0e,0xc5,},{0xb1,0xe3,0xbf,0x5f,0xa7,0x4d,0x7e,0x44,0x2c,0xed,0x9a,0x98,0xd9,0x27,0xd8,0xc4,0x5e,0x0e,0x64,0xd8,0x74,0xf8,0xea,0x59,0x20,0xa3,0x60,0xa4,0xbf,0x42,0xd8,0x3c,0xe1,0x8a,0x92,0x4a,0xc7,0x96,0xe1,0xa7,0x7d,0x1b,0x02,0x08,0x29,0x4b,0x50,0xf8,0x22,0x17,0x7f,0xdb,0xdd,0x45,0x8c,0x74,0x35,0x6f,0xcf,0x6b,0xd7,0x94,0x51,0x06,},\"\\x6a\\x9b\\x87\\x6b\\x0b\\xf4\\x18\\x9b\\x3c\\xc1\\x5f\\x9e\\xb4\\xfb\\xe7\\x93\\x2b\\x55\\x77\\x89\\x2a\\x22\\x20\\x0c\\xe1\\x07\\x15\\x68\\x53\\xd6\\xd3\\xca\\x36\\x3f\\x02\\x5a\\xd7\\xa2\\xd8\\x62\\xaa\\xdc\\x74\\x2d\\x94\\x15\\xbd\\x8d\\x1f\\xca\\x13\\xc9\\xdc\\xa3\\x58\\x60\\x44\\xe5\\x5a\\x8c\\xf5\\xde\\xe1\\xce\\x56\\x45\\x76\\xe3\\xe8\\xe3\\x65\\x54\\x05\\x46\\x50\\x1b\\x34\\xca\\x67\\x5c\\xf2\\x00\\xe0\\x77\\x1a\\x81\\x8c\\x73\\xd3\\x7f\\xcd\\xa8\\xcb\\x15\\xe4\\x8d\\x5a\\x0b\\x9e\\xa3\\xbe\\xec\\x0f\\xf6\\x61\\x0b\\x2a\\x8a\\x21\\x4c\\xa4\\xf7\\xef\\xac\\x0e\\x71\\x38\\x10\\x52\\xd9\\xbf\\x3c\\x00\\xc3\\x29\\x59\\x34\\x74\\xeb\\xd0\\xa6\\x87\\xa0\\xb4\\x1d\\x14\\x4b\\x5e\\x7a\\xb1\\x41\\x2b\\x97\\x0a\\x74\\xba\\xba\\x4d\\x27\\x4b\\xb0\\xdb\\xfd\\xb0\\x2b\\x11\\xf7\\xf6\\x39\\x64\\xba\\x6f\\x3b\\xa0\\xad\\x23\\x34\\x1d\\x08\\x3b\\x91\\xa4\\x30\\x82\\x39\\xe3\\x3d\\x50\\x82\\x43\\x96\\x12\\x65\\x88\\xde\\x72\\xa2\\x39\\x0c\\x1c\\x0f\\xc0\\x67\\x47\\xc2\\x87\\x72\\xf6\\x30\\xbf\\x4d\\x14\\x3f\\x7a\\x11\\x59\\xf0\\x28\\xc0\\x93\\x40\\x48\\x94\\xe6\\xd1\\x6f\\x63\\x46\\x35\\xd4\\xfc\\x33\\x0f\\x3d\\x7a\\x73\\x13\\xef\\x75\\x6f\\x5d\\x49\\xd8\\xf6\\x20\\x5e\\xb1\\xc7\\x92\\xa9\\x49\\x5d\\xa1\\x31\\xb4\\x33\\x45\\xa0\\x09\\x0c\\x12\\xca\\x56\\xe6\\xad\\xac\\x5b\\xe0\\xcb\\xca\\xc3\\x60\\x9d\\x69\\xf7\\x24\\x15\\xf6\\xc3\\x7f\\x3c\\xfb\\x2c\\xf7\\x6b\\x3e\\x65\\xf3\\xc9\\x3a\\xc9\\x2b\\x63\\xf2\\xba\\xa4\\x66\\x24\\x90\\x75\\xbc\\xa6\\x9d\\x4c\\x1d\\x1f\\x3a\\xde\\x24\\xab\\x31\\xef\\xfc\\xb9\\x04\\x69\\xc2\\x4b\\xb4\\x10\\xab\\x47\\x23\\xe1\\xb7\\xe1\\xc8\\x8b\\x3a\\x36\\x43\\x35\\x63\\xf7\\x1a\\x99\\xaa\\xd5\\x8f\\xe8\\x05\\x68\\xf9\\xc1\\x02\\xda\\x89\\xba\\xd9\\x79\\x63\\xe7\\x7d\\x66\\x22\\x48\\x31\\x66\\xf3\\xae\\x26\\x1f\\x32\\xa5\\x2a\\x86\\x10\\x1e\\xbd\\x64\\x5f\\x61\\x42\\xc9\\x82\\xe2\\xcd\\x36\\x25\\xcf\\x8b\\x46\\xb9\\xb2\\x89\\x12\\x46\\x92\\x0f\\x69\\x7f\\xca\\xed\\x39\\x7c\\xb9\\x22\\xc2\\x74\\x94\\x51\\x67\\xa0\\xe6\\x19\\xb0\\xb5\\x06\\x37\\x76\\x06\\xdb\\x04\\x57\\x83\\xb0\\xb8\\x8e\\xa0\\x4e\\x93\\x2d\\x21\\xff\\xc0\\x64\\xa1\\x2a\\x40\\xeb\\xe9\\xb4\\x80\\xf1\\xa2\\xc7\\xdd\\xd3\\x95\\xa9\\xb1\\x5e\\xfd\\xc4\\x95\\xc9\\x71\\x4f\\x36\\xfa\\x99\\x6f\\x79\\xf8\\xeb\\x8e\\xfa\\x52\\xd9\\x9a\\x24\\xab\\xfe\\xf4\\x3b\\x32\\xa2\\x37\\xc5\\xbc\\x00\\x18\\xda\\x3b\\x16\\x2f\\x59\\xb8\\xd3\\xd4\\x74\\xe2\\xce\\x08\\xfa\\x80\\x24\\xc5\\x8a\\xcc\\x0a\\x99\\xff\\x61\\x4e\\x6c\\xd7\\xfd\\xd9\\xca\\x4e\\x8f\\x41\\xa1\\x44\\x9a\\xa6\\x18\\xd0\\x33\\x37\\xe8\\xa3\\x74\\xd5\\x60\\x55\\xb2\\x07\\xa9\\xdb\\xe6\\x9f\\x59\\x48\\xf9\\x01\\xca\\x7d\\xb0\\x41\\x0f\\x01\\xaa\\x37\\x3d\\x9e\\x02\\x27\\x62\\x35\\x99\\xbc\\x21\\x28\\x45\\xb0\\x06\\xe9\\x42\\xfa\\xbc\\x58\\x2c\\xd7\\x26\\xdb\\x5c\\x44\\x3e\\xb2\\xdf\\xfb\\xc9\\xe3\\xe7\\xf0\\xe5\\xcb\\x67\\x44\\xf7\\xad\\x71\\x60\\x50\\xfd\\xf2\\xc6\\x0c\\x7c\\x77\\xc2\\x53\\xab\\x74\\x5d\\xb9\\xc8\\x55\\x26\\x55\\x68\\x3e\\xa7\\xea\\x68\\x0a\\xa4\\xaf\\x34\\xdf\\x13\\x25\\xc2\\x9b\\x88\\x74\\xb6\\x1b\\xe2\\x3d\\xe4\\xff\\xba\\x25\\x42\\x4f\\x46\\x19\\xec\\x68\\x2c\\x26\\xb3\\xa6\\x7b\\xda\\x9b\\xc4\\xc9\\x4b\\x79\\xa9\\xfc\\x4d\\x82\\xd3\\x40\\x49\\x5b\\x43\\x7a\\x1c\\xbd\\x6b\\x60\\x30\\x7c\\xfc\\xb1\\x00\\x26\\xf9\\x64\\xa0\\x17\\x62\\x3e\\x33\\xdb\\xf2\\x33\"},\n{{0xd0,0x2b,0xbf,0x70,0xd5,0x13,0x51,0xe3,0xb4,0x7a,0xd8,0xe5,0xed,0x26,0x3d,0xbf,0x55,0x6d,0x14,0x98,0xfa,0x9b,0xd5,0xdb,0xd9,0x9f,0xb4,0x26,0x90,0x09,0xdc,0xed,},{0x8c,0xe4,0xb5,0x9f,0x94,0xce,0xd6,0xec,0x96,0x14,0xd6,0x7d,0x30,0x66,0xd9,0xd3,0xa0,0xdf,0x7a,0x46,0xb3,0x7b,0x4c,0x17,0x25,0xef,0x1e,0x57,0xbc,0x68,0xa0,0xd1,},{0x6e,0x7c,0x66,0xac,0xc9,0x54,0xff,0xd9,0xdd,0x4c,0x1c,0x63,0x35,0xab,0x4f,0xe7,0x9d,0xbb,0xed,0x78,0x2c,0x4a,0x47,0xec,0x30,0xd8,0x48,0xd8,0xbb,0x2b,0x4f,0x10,0x69,0xdc,0x62,0xe5,0x22,0xa1,0xe8,0x01,0x7f,0x54,0xa6,0x34,0x5e,0x17,0x28,0xc0,0x73,0xaf,0x64,0x47,0x85,0x6d,0x8c,0x1e,0xd3,0x58,0x78,0xb5,0x71,0xe5,0x23,0x0d,},\"\\x55\\x45\\x60\\xf7\\xa7\\xfd\\x1a\\xe7\\x75\\x8a\\x2f\\xce\\x7d\\x78\\x0f\\x6b\\x3f\\x04\\x3d\\x3a\\xf8\\x9d\\x4f\\x19\\xef\\x57\\x3c\\x34\\x99\\x75\\x54\\xdf\\x24\\x3f\\xaf\\x2a\\xaa\\xb6\\x5b\\x2a\\xfd\\xd2\\x86\\x10\\xd4\\xa5\\x1e\\x9a\\x4b\\x46\\x4d\\xb6\\xdb\\x09\\xeb\\xf7\\x3b\\x7d\\x24\\x05\\x4c\\xc9\\xb1\\x28\\x14\\xbb\\x29\\xee\\x99\\xe1\\xa7\\x3b\\xd6\\x03\\x89\\x83\\x60\\xf9\\xdc\\xf0\\x1e\\x67\\x08\\x36\\x28\\x6f\\x82\\x36\\xed\\x8c\\xef\\x07\\x5f\\x3d\\x56\\x33\\x12\\xc1\\x6c\\x73\\xfc\\x37\\xee\\xdf\\x25\\x2f\\x8f\\x42\\xd3\\x0a\\x13\\xe7\\xfb\\xa3\\xb1\\x65\\x23\\x8c\\x7f\\x81\\xea\\xae\\xb5\\x31\\x90\\xf3\\xec\\x3b\\x5d\\x63\\xf0\\xee\\x03\\xe3\\x98\\x7e\\x39\\x0d\\x1d\\x81\\xe8\\x27\\x7e\\x9f\\x6c\\x1e\\xe6\\xec\\x4e\\xc3\\xfa\\x0d\\x72\\x0e\\x9f\\x53\\xf9\\xc2\\x6f\\x04\\xaa\\x2e\\xd2\\xb5\\xef\\x31\\x60\\x89\\x59\\x99\\xea\\xce\\x29\\xcf\\x5d\\xc2\\x54\\xad\\x71\\x10\\x6b\\xb7\\xe8\\xbc\\x29\\xa5\\xb1\\xd2\\x41\\x25\\x93\\xd0\\x81\\x94\\xe8\\x8e\\x16\\x59\\xa7\\x31\\x59\\xa2\\xa2\\x20\\x33\\xab\\x06\\x6e\\x8d\\x3d\\x8c\\x3b\\xc8\\x6b\\x7b\\x01\\xde\\x81\\xa8\\xc6\\x60\\x47\\xb0\\x7f\\xe2\\x4e\\xd2\\x40\\x31\\x8b\\xa3\\x7b\\xa3\\xef\\xb6\\xcf\\x63\\x26\\x04\\xca\\x4f\\x44\\x6a\\x75\\xfd\\x8e\\x70\\xc4\\x53\\xf0\\xc6\\x0e\\xe1\\x6e\\xca\\xf5\\x24\\xe7\\x03\\xf4\\x7d\\xf5\\xc2\\x82\\xca\\x32\\x89\\xb3\\xaf\\x61\\xde\\xe4\\x70\\x9e\\xe0\\x85\\x32\\x3b\\x1e\\x5c\\x8a\\x6b\\xc0\\x76\\x62\\x01\\xc6\\x35\\x03\\x14\\x46\\x89\\x1f\\x34\\x94\\xe9\\xdb\\x20\\xdd\\x4e\\x9e\\x08\\x38\\x24\\x9a\\x67\\xe1\\x38\\xd1\\x3e\\xe2\\xc9\\x6f\\x61\\xe7\\x71\\x06\\x15\\x42\\xaa\\x16\\xef\\x20\\xd8\\x1e\\x3a\\x0f\\x4e\\x45\\x21\\xa6\\xcd\\x6c\\x92\\xfc\\x26\\xfe\\xef\\x03\\xb6\\x6c\\x70\\xe0\\x35\\xca\\xfc\\xc1\\x9c\\x96\\xfb\\x9d\\x82\\x91\\x8f\\xe1\\x97\\x78\\x0e\\xff\\x0e\\xda\\x6e\\x25\\x12\\xc5\\x6e\\x2a\\x73\\xd7\\x70\\x32\\xb7\\x68\\x91\\x9b\\xea\\x97\\x72\\xf5\\x98\\x9c\\x8b\\x6c\\x65\\xc3\\xd1\\xe9\\x7a\\x21\\x80\\xcc\\x3a\\x37\\x57\\x9d\\xa7\\x0c\\xe9\\x80\\x6a\\xc1\\x28\\x5a\\x3e\\xab\\x41\\x5c\\x06\\x07\\xd8\\x8c\\xb8\\x65\\x42\\xea\\xb9\\x0b\\x9d\\x2d\\x67\\xfa\\xff\\xfc\\xad\\x23\\xa7\\x14\\x00\\x0e\\xe5\\x9e\\xd6\\x8c\\x95\\x6e\\x81\\xc4\\x45\\x42\\x88\\x82\\xf9\\x7a\\xf7\\x4d\\xb3\\x62\\xe4\\x5c\\x0d\\x1b\\xd8\\x85\\x6e\\xed\\x16\\x6e\\x4a\\xec\\x4b\\xfd\\xf9\\x5e\\xad\\xb2\\x51\\xe2\\xa1\\xef\\x80\\x48\\x52\\xa9\\xea\\x77\\xd3\\x45\\x77\\xfe\\x70\\x83\\x1a\\x92\\x8b\\x10\\x1b\\x60\\xac\\x61\\x3e\\x7b\\xa2\\xe6\\xba\\x0a\\x94\\x01\\x3a\\x64\\xc2\\xf8\\x21\\x9f\\xd3\\x0b\\xff\\x40\\x90\\x99\\x66\\x7a\\x78\\x6f\\x99\\x32\\x7b\\xb0\\x3e\\x2f\\x21\\x87\\xf4\\x45\\xb4\\x6b\\xee\\xda\\xb6\\xd3\\x25\\xaf\\xd9\\x04\\xe3\\x95\\x43\\xe9\\x3f\\x4b\\x6c\\x54\\x43\\x24\\x9d\\x74\\x4b\\x2d\\x1a\\x43\\xe1\\x41\\xe4\\x76\\x8b\\xd4\\x0a\\xab\\xe4\\x05\\x72\\x44\\xe1\\xea\\xdd\\x9d\\xae\\xc1\\x75\\x71\\x9e\\x51\\xa0\\x93\\xac\\xe3\\x2f\\xe8\\x2b\\x2e\\xac\\xb5\\xec\\xb0\\xda\\x6c\\x1f\\xfe\\x98\\xc8\\xce\\xe7\\x88\\x6e\\x30\\x16\\x70\\xdf\\xf8\\x71\\x13\\xef\\xed\\x42\\x82\\x47\\x1a\\xfb\\x6b\\x8a\\x0f\\xdb\\x50\\x5e\\x2e\\x8e\\x7d\\xbc\\x1a\\x08\\xa2\\x2e\\x96\\x80\\xbd\\x09\\x8b\\xf1\\x27\\x58\\x02\\xbd\\xb4\\x59\\x41\\x3a\\x3b\\x23\\x7d\\x77\\x13\\xa1\\xbb\\xf5\\x97\\xe6\\xad\\xf2\\xb6\\x0e\\xaf\\x82\\x37\\x91\\xb3\"},\n{{0xaa,0x0f,0xda,0xe2,0xa5,0xa4,0xc9,0xc0,0x45,0x21,0x91,0x30,0x04,0xcd,0x89,0xef,0xbc,0x88,0xb2,0xda,0xdf,0x5a,0xbb,0x24,0x6f,0x3c,0xa7,0xf6,0x92,0x35,0x44,0xaf,},{0xbf,0xfc,0xb1,0x7c,0x35,0xc1,0x30,0x4c,0xdd,0x9d,0x62,0x4f,0xf6,0x9b,0xee,0x60,0xec,0x7c,0x9e,0xc3,0x27,0xd1,0x23,0x50,0xd7,0x0f,0xac,0x12,0xb4,0x7c,0xc2,0x5c,},{0xf9,0x37,0x29,0x89,0x69,0xca,0x34,0xd9,0x75,0x84,0x44,0x89,0x07,0x35,0x8b,0x0f,0x47,0x84,0x1f,0x30,0x23,0xaf,0xc7,0xef,0x76,0x81,0x52,0x1c,0x5b,0xe0,0xf5,0xe5,0x62,0x8a,0x8f,0x60,0x7e,0x2f,0x31,0x63,0x6e,0xf6,0x36,0x46,0xb0,0xe9,0x89,0x8a,0x72,0xad,0x35,0x57,0x06,0xd2,0xc8,0x06,0x0f,0xbc,0x64,0x0e,0xfb,0x3d,0x66,0x05,},\"\\xb1\\x41\\x84\\xcf\\xdc\\x4a\\x5f\\x0c\\x7f\\x83\\xf9\\x4a\\x83\\x2f\\x58\\x85\\x07\\xe2\\xd7\\x2a\\x89\\x32\\x98\\x70\\x07\\x85\\x71\\xd2\\x08\\xa0\\xc4\\x96\\x0c\\x2f\\xdc\\x4c\\x23\\x6c\\xf8\\x82\\x29\\x98\\x1d\\x12\\xb1\\x0a\\x1b\\x68\\x84\\xc8\\x65\\x0d\\xda\\xf1\\xd4\\xb2\\xeb\\x98\\x15\\x75\\xb1\\xe0\\x19\\xfe\\x3f\\x60\\x42\\x36\\x76\\xf8\\x85\\x6a\\x99\\x2c\\xce\\x36\\xd6\\xd0\\xa3\\xd0\\x26\\x63\\x1c\\x8c\\x1e\\x1f\\xfe\\x34\\x13\\x4b\\x29\\x6f\\x40\\x84\\x2b\\x6d\\xf4\\xf8\\x6f\\x83\\x3e\\x01\\x75\\xba\\xe5\\x0e\\x86\\xbf\\x85\\x6d\\x1e\\xe7\\x99\\x25\\xf4\\x34\\xb8\\xbf\\x2c\\x84\\x51\\x9f\\x1f\\x5d\\x25\\x38\\x60\\x49\\xce\\x3c\\xa6\\x17\\x77\\xe3\\x0b\\x70\\x0a\\x60\\x2d\\x39\\x52\\x50\\xb6\\x0f\\xc6\\x4a\\xc6\\xf8\\xdb\\x02\\x7e\\x8d\\xa8\\xb9\\x55\\x0f\\x24\\xed\\x11\\xa1\\x1d\\x9f\\x9f\\x9c\\x5e\\x0a\\xf1\\x45\\xb8\\x65\\x97\\x51\\xac\\x6b\\x55\\x86\\x1f\\x63\\x88\\xa6\\x43\\x36\\xb3\\x1e\\xfe\\x45\\xc0\\x80\\x2d\\x76\\xa5\\x34\\x86\\xa8\\x1e\\xba\\x07\\x31\\x4b\\x4d\\x96\\x1c\\x14\\x1a\\xb3\\x4e\\x2f\\x76\\xed\\xac\\x0e\\x6d\\xe3\\x14\\x22\\xdf\\x79\\x2a\\xf0\\x81\\xe7\\x69\\xc7\\xed\\x05\\xda\\x9a\\x5a\\xf2\\xfd\\xf3\\x6f\\x14\\x17\\x69\\x90\\x8b\\x70\\x09\\x37\\xf0\\xe1\\x06\\x8c\\x13\\x1f\\x17\\x6e\\xb9\\x6c\\x67\\xaf\\xdb\\xe7\\x8f\\x40\\xd8\\x60\\x07\\xfb\\xcd\\x47\\xe4\\x9e\\x2e\\x4c\\x4c\\xe0\\x49\\x93\\x6a\\xdf\\xf1\\xce\\x3e\\xac\\x42\\xb9\\x6b\\x34\\x29\\xb5\\x62\\x6b\\x1a\\xa6\\x2a\\xcd\\xe0\\x7f\\x45\\xa1\\x3c\\xe1\\xbd\\x21\\x1f\\x32\\xbd\\x7e\\xfe\\x47\\x90\\xc8\\x37\\x1e\\xbf\\x87\\xc1\\x64\\x47\\x7a\\x5c\\x9f\\xa3\\xe7\\x8c\\x2f\\x88\\x07\\x7b\\x09\\x73\\x44\\xcf\\xfa\\x03\\x1c\\x44\\x29\\xc7\\xf4\\x2d\\xca\\x07\\x73\\x78\\x50\\xee\\x7a\\x76\\x9b\\x36\\xd0\\xf0\\x62\\x5a\\xdf\\x12\\x0e\\xa2\\x3f\\xf4\\xe3\\x93\\xa4\\xfd\\xcb\\x65\\x58\\xdb\\xf9\\xb2\\x66\\xa0\\x32\\xe3\\xb0\\x59\\x9b\\x9d\\x66\\x92\\xfc\\xeb\\xd8\\x15\\xa3\\x89\\x76\\x07\\x85\\x63\\x25\\xfc\\xd0\\x11\\x5d\\xc3\\x10\\xdb\\x3a\\x87\\x92\\xfb\\xeb\\xd3\\x99\\x49\\x4c\\x83\\x71\\xe5\\x85\\x72\\x7b\\x3d\\x63\\x24\\x14\\x49\\x68\\x93\\xd0\\x38\\x13\\xba\\x1f\\x99\\x66\\x1b\\xce\\xb9\\xdc\\x18\\xec\\x5d\\xc2\\x7f\\x52\\x67\\x03\\x18\\x68\\x77\\x69\\xfc\\x67\\x8d\\xdc\\x7e\\x40\\x22\\x7c\\x20\\x05\\x22\\x01\\x3f\\x5c\\x0e\\xec\\x0e\\x47\\x81\\xe6\\xfc\\x15\\x3a\\x0c\\x2f\\x4f\\x3f\\x95\\xe5\\x17\\xc8\\x41\\x99\\x24\\xab\\x39\\x99\\x2a\\xf8\\xc1\\x94\\x65\\x05\\x7f\\x13\\x44\\x86\\x69\\x6b\\xa7\\xfd\\x46\\x51\\x76\\x8b\\x4e\\x74\\x9e\\xf3\\x6f\\x02\\x44\\x46\\x17\\xcf\\x97\\xf0\\xa4\\x23\\xe4\\xc1\\x3b\\x7b\\x66\\xba\\x2b\\x6c\\x45\\x68\\x78\\xb0\\xb5\\x0c\\xe2\\xee\\x5e\\xc5\\x64\\xed\\x88\\x54\\xf7\\x82\\xaa\\x1d\\x1c\\x6a\\xa7\\x60\\xf2\\x52\\x2c\\x7d\\x97\\xb9\\xb1\\xab\\xe0\\xba\\x81\\x09\\x59\\xd7\\xaa\\x40\\x3a\\x99\\x37\\x5a\\xa3\\xe3\\x9a\\x11\\x5d\\x1f\\xc6\\xfe\\xdd\\x00\\x2f\\x38\\x30\\xa5\\x0a\\x83\\x7d\\xc7\\x20\\x32\\x9e\\xc0\\xc7\\x3d\\x5b\\xfd\\x50\\x03\\x85\\xc7\\x36\\x83\\x82\\x87\\xe1\\x92\\x01\\x52\\x5d\\x18\\x9c\\x3a\\x08\\x4c\\xd5\\xa3\\xf3\\x59\\x87\\x5e\\x3b\\x83\\x25\\x28\\x9c\\xed\\x18\\xb6\\x3b\\x00\\xff\\x9c\\xd0\\x70\\xc3\\xe6\\x74\\x44\\xbd\\x3d\\x83\\x46\\x17\\x40\\x85\\xcc\\x45\\x13\\x5c\\xaa\\x0c\\x67\\xb3\\x22\\x6e\\x4a\\x52\\xe9\\xa1\\xc5\\x5a\\xed\\x7e\\xc5\\xfa\\xde\\x6b\\xf1\\x6c\\x19\"},\n{{0x71,0x62,0xfe,0xf0,0xac,0xa4,0x97,0x4b,0x09,0x4a,0x6a,0x08,0x05,0x43,0x95,0xf8,0x77,0xff,0x94,0x33,0xf1,0xe3,0x3e,0x20,0xe8,0x8e,0xaa,0x90,0xf9,0x38,0x99,0x7d,},{0xa2,0x80,0x64,0x0f,0x13,0x9f,0x45,0xc3,0x5a,0x48,0x71,0x53,0x7e,0xef,0xe6,0xef,0x9d,0xb0,0x2d,0xe7,0x85,0xee,0x9f,0xd5,0x4f,0x80,0x5f,0xb5,0x7d,0x37,0x46,0xef,},{0xae,0x16,0x1c,0xce,0x95,0x40,0x33,0x84,0xb6,0x5c,0x6b,0xc9,0xb3,0x93,0xeb,0x07,0x25,0x64,0xc3,0x5f,0x3a,0x6c,0x04,0xfa,0x51,0x7a,0xb0,0x68,0xbc,0xd2,0x37,0x67,0xcc,0x0c,0x8e,0xdd,0x92,0xb1,0xa1,0x3a,0xe9,0xa9,0xce,0x48,0x64,0x13,0x7f,0xb8,0x9c,0x1f,0x37,0xb7,0x48,0xcf,0xc9,0x13,0x4b,0x67,0x41,0xba,0x1b,0x22,0x28,0x0d,},\"\\xc9\\x0f\\x45\\x0b\\xda\\x1c\\x6e\\xfd\\x8d\\x12\\x78\\xde\\xbd\\x7a\\xe0\\x3e\\x2e\\xac\\x27\\x40\\xa5\\xa9\\x63\\xfc\\xf9\\x6c\\x50\\x4e\\x31\\xd4\\xd6\\xfc\\xc5\\xe2\\xb5\\x2a\\x25\\x18\\xd2\\x74\\x1c\\x55\\xe9\\x59\\x18\\x67\\xb2\\x42\\x32\\x28\\xf9\\xc1\\x9f\\x33\\xc6\\xf3\\x87\\x05\\xc6\\x20\\x36\\xd4\\x80\\xff\\x53\\xdf\\x12\\x07\\x7e\\x38\\xfd\\xb0\\x73\\xc6\\x73\\x10\\x5d\\xa1\\xe1\\x16\\x19\\xba\\x53\\x21\\xa7\\x1b\\x5f\\x49\\x93\\x23\\x4a\\x11\\x94\\x8e\\xa1\\x10\\xcf\\xa2\\x42\\xbc\\x23\\xfa\\xc9\\xaa\\xe4\\x62\\x60\\x6e\\x39\\x64\\x1c\\xa7\\x14\\x7e\\xeb\\xba\\x1e\\xec\\x55\\x3f\\xce\\x94\\xe5\\x3e\\x4e\\x01\\xb0\\x73\\xdd\\x78\\x0a\\x2f\\xf6\\x78\\xb3\\x15\\x72\\xca\\x11\\xee\\x08\\x77\\xe7\\x56\\xbc\\xdb\\x66\\x53\\xe5\\xe1\\xb4\\xcb\\xfb\\x56\\x9a\\x9d\\x60\\xe3\\xee\\x33\\x61\\x82\\xdc\\xb9\\xb2\\x5d\\x1b\\xe6\\xdb\\xf9\\xb5\\xc7\\x14\\x6d\\x77\\x55\\x85\\x83\\x4c\\xab\\xde\\x02\\x78\\xae\\xe5\\xd5\\x7c\\x85\\xe9\\x83\\xf8\\x4d\\x88\\x33\\xa9\\xe1\\x5b\\xcc\\x11\\x19\\x8e\\x1c\\x1d\\xa6\\xba\\x59\\x28\\x21\\x29\\xf1\\xdb\\x96\\x6f\\x54\\x60\\xc8\\xfb\\x65\\x30\\xfb\\xc3\\xa9\\x8a\\x31\\xfc\\x0f\\x4e\\x9b\\x33\\x73\\x66\\xee\\xc1\\xdc\\xe1\\x08\\xc8\\x26\\xd4\\x90\\x45\\xab\\xfa\\x12\\xee\\x88\\x79\\x7f\\x08\\xf0\\x68\\x3f\\xef\\x77\\xed\\xaa\\x35\\x43\\xb9\\x1c\\xb1\\x18\\xe4\\x24\\xd9\\xc4\\x08\\xda\\x54\\x74\\x31\\x12\\x51\\x07\\xd9\\xb0\\x74\\x4c\\x24\\x43\\xce\\x99\\x17\\xe1\\xe3\\x28\\xd8\\x18\\x50\\xba\\xbb\\xc9\\x4d\\x92\\x0a\\x1d\\x06\\xe5\\x24\\xdb\\xb6\\xc2\\x3d\\xd8\\x2e\\x17\\x87\\x82\\x2d\\x71\\xc4\\xcd\\xc4\\x09\\xae\\x85\\xba\\x4d\\xeb\\x58\\x1f\\x93\\x47\\x48\\xf7\\x5e\\x7a\\x76\\x9b\\x9d\\x68\\xc4\\x58\\x9e\\x59\\x4e\\x65\\xcb\\x6c\\x8f\\x49\\x03\\xff\\xba\\xbd\\x5a\\x32\\x6e\\x89\\x44\\x1a\\x54\\x2f\\x8a\\xc2\\x64\\xcc\\xc6\\x4e\\x95\\xa8\\x98\\x2a\\x71\\x0b\\x6c\\x56\\xff\\x7d\\x10\\x91\\x6a\\xfc\\x40\\x9e\\xa8\\xa4\\x1b\\x74\\x67\\x9d\\xd6\\xa7\\x66\\xf5\\x9c\\x52\\xb9\\x30\\x5b\\xa7\\x33\\xb1\\x3c\\x9e\\x81\\x1e\\xe1\\x30\\x83\\x92\\x5f\\x42\\x00\\x68\\x2b\\xd0\\x5d\\xea\\x33\\x95\\x32\\x52\\x29\\x70\\xaa\\x14\\x9d\\x00\\x4a\\x2e\\xa2\\x0f\\xf4\\x61\\xe9\\xec\\x0f\\x3b\\x62\\x56\\x5c\\x1a\\x10\\x62\\x59\\xc8\\x36\\x60\\x5c\\xc2\\x7c\\xad\\xc9\\x51\\x5c\\xb9\\x97\\x9e\\x89\\xaf\\x28\\x7c\\x02\\x7d\\x75\\xed\\xbf\\x87\\xd5\\xcf\\xf6\\x3a\\x7f\\xec\\x9b\\xd1\\x0e\\x78\\x77\\xab\\x9b\\xf8\\x68\\xd7\\x34\\xbd\\x3a\\x23\\x74\\xce\\xf7\\x02\\x5c\\xc4\\xda\\xb7\\x10\\xe2\\x54\\x80\\x66\\x85\\xa1\\x36\\xec\\xd0\\x3e\\x36\\x77\\x03\\x46\\x51\\x3a\\x15\\x14\\x5b\\x89\\x0e\\xee\\xf4\\x7b\\x80\\xea\\x08\\xe4\\x6c\\x81\\xd2\\x02\\xe5\\x33\\xe9\\xa0\\x6a\\x38\\xa6\\xf7\\x6e\\xf5\\x7a\\x9c\\x73\\x6e\\xc7\\x8d\\x00\\xb8\\x08\\xe3\\xff\\xd9\\xc7\\x9b\\x9d\\xc7\\xa2\\xe5\\x89\\x90\\x76\\x56\\xc9\\x32\\xab\\x8a\\x8b\\x57\\xda\\x1a\\x49\\x5b\\xa7\\x45\\x20\\x15\\xe7\\x92\\x4b\\x52\\x69\\xab\\x1f\\x67\\xbd\\xb4\\x3a\\x35\\x83\\x14\\x87\\xab\\x90\\x02\\xf5\\x2d\\x78\\xb1\\x34\\xcd\\x37\\x51\\x92\\x5a\\xaa\\xb0\\xb4\\x5c\\x8e\\x6b\\x0f\\x2b\\xf0\\xcc\\x9a\\x46\\x59\\x31\\x71\\x08\\xfb\\xa9\\x13\\x6a\\xab\\xb0\\x92\\x1a\\x58\\xfb\\xb9\\xb5\\x0e\\x51\\x24\\x3f\\x9b\\x53\\x18\\x47\\xdc\\x96\\x57\\xe9\\x6f\\xba\\xf7\\xaa\\x69\\x8f\\xe6\\xfe\\x44\\xf9\\x05\\x90\\x14\\x4c\\x70\\x33\\x72\\x50\\xc5\\x8b\\xc5\\xdd\"},\n{{0xde,0xa1,0x80,0xc9,0x1b,0x53,0x3a,0xaf,0x73,0x6b,0xc5,0xd3,0xc8,0xe4,0x74,0xd5,0xe5,0xd4,0x75,0xb7,0x5b,0x92,0xcd,0xe6,0xbd,0x1d,0x10,0xf3,0xb8,0xf5,0x5a,0xd4,},{0x30,0xb2,0x0f,0xb3,0x20,0xb0,0x0e,0x77,0xc4,0xe0,0xa8,0xeb,0x37,0x30,0xaf,0x3c,0x0b,0x1c,0x5f,0x5e,0xd9,0xee,0x2b,0x05,0x62,0x70,0x7e,0x4f,0x55,0xc4,0x93,0x8b,},{0xd0,0x83,0x33,0x3f,0xb8,0x4e,0x79,0xc9,0xb3,0x3e,0x55,0xe8,0x19,0x2d,0x57,0x1f,0xfc,0x8d,0xc5,0x07,0x45,0xb6,0xb5,0xfd,0xd8,0xc4,0x4d,0x92,0xa6,0x3f,0xd1,0x78,0xc4,0xe5,0x7c,0x2a,0xb3,0xa1,0x21,0x1c,0x0b,0xa2,0xd3,0x9d,0xa3,0x0b,0x06,0x62,0x9d,0x8d,0x1c,0xc1,0xd9,0xf2,0x59,0x32,0x63,0xd5,0x24,0xfa,0x5a,0x2e,0xbc,0x03,},\"\\x60\\x61\\x44\\xb7\\xd4\\xf9\\x6b\\xef\\x7f\\x11\\x2b\\x6d\\x41\\xbc\\xb5\\x00\\xd2\\x13\\x6c\\x13\\x4c\\xed\\xa2\\x20\\xe2\\x4d\\x0f\\x15\\x24\\xec\\xa1\\x2c\\x30\\xf2\\xb1\\x02\\xc7\\xf3\\x78\\xd6\\xbb\\xa2\\x59\\xc5\\xb4\\xa5\\xef\\x8e\\xc9\\x30\\x9d\\x5c\\x8d\\xa7\\xe8\\xd2\\xde\\xd3\\x79\\x2a\\xee\\xea\\x21\\x08\\xf7\\x7d\\x66\\xb2\\x30\\x45\\x93\\x8e\\xd6\\x47\\x51\\xf2\\x0d\\x48\\x32\\x6b\\xe2\\xfb\\x99\\x62\\x8c\\xfb\\x18\\x73\\xd7\\xdd\\x27\\x58\\x1c\\x10\\x5e\\xc1\\x32\\x49\\xa9\\x52\\xa5\\x07\\x84\\xb8\\xb3\\x4c\\xb3\\xb2\\xc1\\xa0\\x04\\xfa\\x8b\\x62\\x8a\\x07\\x67\\xfa\\x9a\\xbf\\x05\\x8d\\x95\\x5d\\xf8\\x5d\\x13\\x4a\\x0f\\xc7\\xf4\\xb7\\xd7\\xfb\\x0c\\x8d\\x31\\xbc\\xe3\\x45\\xdd\\x0a\\x42\\x82\\x14\\x5a\\xfb\\x2f\\xf1\\x97\\x51\\xf2\\xcc\\x3a\\x1c\\xae\\xa2\\x42\\xba\\xaf\\x53\\x87\\x49\\xbf\\x38\\x80\\x00\\xe3\\xdc\\x1d\\x73\\x93\\x59\\xdf\\xeb\\xae\\x64\\xae\\x1e\\x10\\xfb\\x6f\\xc1\\x7c\\xc9\\xfb\\x95\\x05\\x35\\xc2\\xde\\x12\\x95\\x87\\xa8\\x68\\x59\\xb7\\xbe\\x36\\xdf\\xe9\\xb6\\xc1\\x14\\x1b\\x25\\xe0\\x91\\x5c\\x8d\\x4a\\xa1\\xcc\\xea\\xe7\\x04\\x6b\\x3d\\x7c\\xfa\\x94\\x0b\\xc9\\x8d\\x4d\\x69\\xfc\\x5a\\x30\\xdd\\xe1\\xde\\xe4\\x2f\\xb5\\x27\\x22\\x81\\xbf\\x8f\\x8e\\x7f\\x3e\\x1a\\x04\\x39\\x7f\\xb4\\xf3\\xad\\xef\\xc5\\x75\\x32\\xdd\\xbd\\xe3\\x68\\x33\\xa6\\x76\\xe6\\xf3\\x9c\\x82\\xaf\\xf6\\xbf\\x48\\x32\\xec\\x97\\x1e\\x03\\xbe\\x38\\x29\\xc0\\x2a\\x20\\x3c\\x82\\xd9\\xeb\\x8c\\x16\\x30\\xee\\x96\\x93\\xf4\\x5d\\x26\\xf5\\xf5\\x1a\\x31\\x03\\xca\\x64\\xd4\\x68\\xec\\xea\\xc1\\xb2\\x9a\\xf4\\xc4\\x2e\\xb2\\x16\\xd7\\x6e\\xc8\\x99\\x48\\x36\\xb4\\xbe\\xc7\\x64\\x89\\xca\\x50\\x70\\x68\\x0c\\x2c\\x2e\\xb4\\x57\\x21\\x0a\\x77\\xc4\\x7f\\xdc\\xbf\\x60\\x01\\x72\\x07\\x3a\\x53\\xf1\\x45\\x3b\\xb5\\xc8\\x04\\x39\\xc8\\x82\\xf0\\x73\\x6d\\xe4\\x06\\x37\\xb4\\xf5\\xab\\x1f\\x76\\x1f\\xf3\\x55\\xc6\\xe9\\xbd\\x4a\\xbd\\xe7\\x56\\x0d\\x5f\\xc1\\x13\\xc8\\x30\\x15\\x9a\\x1b\\x77\\xc4\\xe8\\x7b\\xc2\\xc6\\x98\\x80\\xa4\\x0c\\x58\\x05\\xec\\xc8\\xaa\\xaf\\x57\\x57\\x5b\\xcc\\xd8\\x17\\x7f\\xc6\\xb8\\x35\\x69\\x23\\x3c\\x0f\\x5c\\xa2\\x23\\xac\\x40\\x13\\xca\\x10\\x6c\\xac\\x28\\x54\\x70\\x6a\\xea\\xd7\\x14\\xfa\\x29\\xf2\\x86\\x0a\\x5f\\x97\\x53\\x26\\x8a\\x36\\x71\\xd9\\xf5\\x9c\\xde\\x60\\x48\\xcf\\x0b\\x89\\x86\\x05\\x0f\\x7f\\x54\\x9e\\x4f\\xd7\\x55\\x7f\\x2f\\xc3\\xfc\\xdc\\xcd\\xdc\\xef\\xda\\x58\\x6a\\x64\\xb3\\x00\\x6e\\x58\\x25\\xf2\\x7c\\xa3\\x16\\x87\\xca\\xf6\\x63\\xbd\\x90\\xa0\\x5b\\x11\\x52\\xd7\\xc8\\x8d\\x7f\\x10\\x51\\xa9\\xd7\\x91\\x74\\x86\\x51\\xd8\\x88\\xa6\\xa1\\x2f\\x22\\xd6\\xc8\\xc3\\xf7\\x8c\\x2b\\x86\\xea\\xf5\\x39\\x4b\\x4e\\xf7\\xee\\xfb\\x89\\x79\\x7b\\x25\\xe5\\x42\\xdc\\x93\\x10\\x2d\\x02\\x1a\\x1d\\x0b\\xed\\x6a\\x7d\\xcd\\xd8\\x10\\x2b\\x8f\\x04\\x30\\xa0\\xbc\\x21\\xd9\\x04\\xa3\\xc9\\x34\\x6c\\x01\\x83\\x43\\xdd\\x99\\x37\\xcb\\x35\\x25\\x00\\x07\\xa2\\x84\\x82\\x5d\\xb0\\x8e\\x9a\\x11\\xfe\\xe3\\x1c\\xff\\x7a\\x31\\x4c\\x48\\xc4\\x2d\\x8b\\x31\\x4a\\xcc\\x27\\x82\\x2a\\xf0\\x3d\\x19\\x54\\xc7\\xcc\\x8b\\xf9\\xad\\x4e\\x9e\\x98\\xf4\\xad\\x4e\\xfb\\x35\\x52\\x88\\xda\\xa8\\xc9\\x0d\\xe9\\x03\\x7e\\x64\\xa7\\x86\\x1f\\x5e\\xe4\\x3a\\xda\\x9f\\x0f\\xcc\\xde\\x34\\xd0\\xbc\\xf5\\x02\\x88\\x55\\x0f\\x70\\x0f\\x21\\x5a\\x79\\x44\\xa5\\x38\\x0e\\x2a\\x8e\\x3f\\x04\\xf2\\xb4\\xf5\"},\n{{0x9d,0xaf,0x6d,0xbb,0x7f,0x76,0x29,0x66,0xe7,0xa5,0x7c,0x2e,0xc1,0x99,0x6e,0x9f,0x5b,0x55,0x5b,0x98,0x66,0xb8,0xe3,0x1d,0xea,0xab,0x43,0x56,0xeb,0x13,0x81,0x6e,},{0xf0,0x21,0xb5,0x5a,0x36,0xd9,0xfb,0xfb,0xf2,0x97,0x8b,0xc0,0xdf,0x73,0x6b,0x28,0x9c,0x82,0x41,0xd6,0x43,0x53,0x09,0x84,0x1a,0x13,0x4b,0x07,0xd4,0x7c,0xe4,0xed,},{0x49,0xb6,0xbc,0x46,0xb7,0xab,0xb5,0x69,0x4d,0xa9,0x42,0x15,0xef,0xc4,0xb3,0x0e,0xea,0x04,0xae,0x2e,0x73,0xeb,0x2d,0xa8,0xe8,0xc9,0xef,0x9b,0xe2,0x22,0x24,0x98,0xb1,0x7e,0x13,0x93,0x96,0x46,0xc2,0x9e,0x32,0xd6,0x45,0x58,0x46,0x40,0x64,0x15,0x90,0xb1,0xbb,0xdb,0xfe,0x24,0xf3,0x6c,0x6f,0x69,0x4b,0xf8,0x72,0x38,0xee,0x04,},\"\\x54\\x45\\x23\\x90\\x0d\\xaa\\x67\\x78\\xc0\\x39\\x1a\\xe4\\x04\\x4a\\x51\\xc0\\xc4\\xa5\\xe4\\x44\\x13\\x3f\\xbd\\x77\\x47\\xd5\\x39\\xa7\\x44\\xfa\\x60\\xab\\x5d\\xc5\\x4e\\x18\\x19\\xdc\\x8e\\x56\\x89\\x9c\\x56\\xef\\xd7\\xef\\x3d\\xa3\\x41\\x79\\x0e\\xcc\\x49\\x64\\x5e\\xf3\\x25\\xc6\\x56\\x8a\\xe9\\x71\\xd3\\x0d\\x21\\xbb\\x7f\\x23\\x46\\x4f\\x46\\xa2\\x4b\\x80\\xd4\\x9b\\xb9\\x3c\\x6e\\x91\\xde\\x79\\xb2\\x43\\x31\\xd0\\x70\\x7f\\x43\\xd0\\x66\\x5d\\x01\\x97\\x74\\x3a\\xdf\\xf6\\x90\\xd6\\x15\\xa1\\xc9\\x25\\x87\\x77\\xfc\\x47\\xd0\\x21\\x71\\x42\\x42\\x6a\\x47\\x34\\x89\\x2e\\xb6\\x22\\xab\\x8e\\x50\\xbb\\x12\\x8e\\xc3\\xa8\\x95\\x26\\x6a\\x38\\x61\\xa3\\x97\\x68\\xbc\\x76\\x09\\x6f\\x58\\x1f\\xd0\\x82\\xdf\\x9b\\x72\\x23\\xe8\\x5a\\x8a\\xfb\\xdb\\x5c\\xaa\\x49\\x22\\xaf\\x2a\\x01\\x4b\\xf8\\xa5\\xcd\\x11\\xe5\\xc5\\xea\\x93\\xe9\\x1c\\xd4\\x6d\\x5a\\x1b\\x99\\xb8\\x5a\\x26\\x70\\xe3\\x21\\xde\\x2e\\x32\\x25\\x5a\\xfd\\x67\\xfe\\x2c\\x37\\xfd\\x93\\x2c\\xac\\xa2\\x2d\\x24\\x1f\\xaf\\x4c\\xce\\xfe\\xff\\x58\\xd6\\xbd\\x04\\xcf\\xaf\\x11\\xde\\xdd\\x29\\xc8\\x71\\x9f\\xfc\\xb0\\x2e\\xf6\\x5c\\x5d\\x3e\\xb7\\x8b\\x4f\\xc0\\xd1\\x70\\xa2\\xe3\\x43\\x2c\\xc8\\x12\\xf0\\xd0\\x41\\xd9\\x76\\x0c\\x13\\xc1\\x2f\\x7c\\x7f\\x2f\\x84\\xfe\\x5e\\x0f\\x70\\x0c\\x10\\xb1\\xa6\\x9c\\xa4\\x66\\xa7\\x0b\\xde\\xff\\x8d\\xbe\\xc7\\xd3\\x18\\xfb\\x09\\xdd\\xd8\\x27\\xef\\x61\\xca\\xa6\\x91\\x0b\\xbc\\x06\\x1c\\xbd\\xa2\\xb5\\x27\\xef\\x2e\\x59\\xed\\x4c\\x17\\x22\\x99\\x72\\xf8\\x95\\x67\\xd7\\x05\\xde\\x92\\x31\\x92\\x4b\\x41\\xbb\\x6e\\x7c\\x01\\xfe\\x85\\x42\\x64\\x47\\x4f\\xa7\\x6b\\x1f\\x88\\xcd\\x57\\xea\\xc3\\x11\\x17\\x1a\\xf1\\x03\\xd2\\x30\\x78\\x42\\x4a\\x12\\x67\\x5f\\x2f\\xa3\\x6c\\x2d\\xe0\\xbf\\x53\\xc2\\x95\\xfe\\xeb\\x31\\x57\\xde\\x95\\x89\\x22\\x98\\x6e\\x32\\x51\\x3d\\xfa\\x33\\xb3\\x5e\\x15\\xc3\\x94\\xa1\\x1c\\x0f\\xcc\\x55\\xb8\\x2d\\x6d\\xd0\\x59\\x7c\\xdd\\xd2\\x7e\\xde\\x7d\\xe1\\x29\\x85\\xa6\\x16\\xe6\\x40\\x26\\xbe\\xfb\\x5d\\x69\\x04\\x82\\xb3\\xff\\x22\\xc0\\xdd\\x21\\xf2\\x7a\\x08\\x6d\\x37\\xa0\\x49\\x9e\\xa3\\x6f\\xe2\\xc4\\xb5\\xa9\\x59\\xd1\\x0e\\x9a\\x61\\x0c\\xab\\x1f\\xe0\\xd2\\x8c\\xf1\\x01\\x3d\\xca\\xe6\\x3d\\x8f\\xde\\xe0\\xec\\xbd\\x8b\\x4e\\x19\\xd5\\xd0\\x40\\xe2\\xfa\\xd7\\xd0\\x41\\x3a\\x38\\xe8\\xc4\\xe7\\x35\\x52\\xad\\x46\\x04\\x7b\\x5b\\xbd\\xd1\\x5c\\x09\\xcc\\x0d\\x34\\xe4\\x8b\\x91\\xfd\\xba\\xe2\\xa9\\xd1\\x62\\xd4\\xb2\\x1e\\xe2\\x0a\\x1e\\xf5\\x35\\xea\\x88\\x35\\x95\\xbc\\x49\\x51\\x69\\x2a\\x67\\x16\\x34\\x54\\xc7\\x36\\x7f\\x13\\x4b\\xf6\\x45\\xd4\\x8f\\x99\\x69\\xe3\\xd4\\xf0\\xf9\\xea\\xf4\\x14\\x4c\\xe9\\x80\\xa0\\xa2\\xe3\\x34\\x2c\\x74\\x6c\\x2b\\xdc\\x3c\\xcd\\xc2\\xf8\\xa7\\xda\\x57\\xa0\\xe8\\x02\\x87\\x82\\xd3\\x0a\\xf5\\x85\\x7d\\x9e\\xfb\\x37\\x66\\x6d\\xf6\\x5d\\x7c\\xc3\\x84\\x71\\x66\\x61\\xe6\\x1f\\xf5\\xc0\\x97\\x52\\x59\\x5e\\x94\\x11\\x2c\\xa1\\xa8\\x40\\xd6\\xe4\\xf6\\xec\\x0e\\x55\\x49\\x4c\\x5b\\x44\\xf7\\xc0\\xf0\\xd4\\xa9\\x9c\\xd7\\x09\\x05\\xbf\\x84\\x85\\x56\\x17\\x48\\xf4\\xdc\\x0f\\xd7\\xa4\\x4a\\x1b\\x13\\x91\\x13\\xc3\\x8a\\x1e\\x8e\\xb5\\xc7\\xa2\\x0f\\x3e\\x95\\x2e\\xae\\xa8\\xce\\x38\\xb2\\x07\\xc2\\x8e\\xd9\\x72\\x71\\x8f\\x03\\x1f\\x47\\x7c\\x62\\x07\\xce\\x43\\x3c\\x51\\x5f\\x5a\\xc2\\x84\\x0f\\x49\\x74\\xf1\\xf1\\x69\\x89\\x62\\x6c\\x76\\xbc\\x98\"},\n{{0x71,0x86,0xf8,0xd1,0x68,0xd9,0xdd,0xf1,0x7e,0xdb,0xaf,0x0e,0x7b,0x1a,0xbc,0xb2,0x6d,0xa3,0xe4,0xc0,0x27,0x2d,0x98,0x79,0xc7,0xfd,0xff,0x64,0x21,0xc4,0xea,0x50,},{0x96,0xb4,0xa6,0x56,0x23,0x20,0x29,0xfc,0x1b,0x83,0x64,0x70,0x3c,0xbe,0xa7,0xa5,0xd7,0x38,0x75,0x18,0xa8,0x8c,0xed,0x1a,0x91,0x5e,0xc8,0xd8,0x86,0x84,0x81,0x32,},{0xa9,0xc0,0x49,0x9f,0xc2,0x16,0xa1,0x45,0x32,0xd7,0x36,0x36,0x5c,0x63,0x55,0xf9,0x38,0xf8,0xd8,0x19,0x4f,0xa1,0x13,0x28,0x48,0xf8,0x3e,0x49,0x04,0x54,0xd4,0xbb,0xf6,0x92,0x69,0xf1,0x22,0x59,0xfc,0x6c,0x07,0x4c,0x10,0x15,0xe4,0x25,0xe4,0xf4,0xf2,0x7c,0x02,0x9c,0x93,0x33,0x49,0x51,0x36,0x1a,0x35,0xad,0x11,0x76,0x54,0x0e,},\"\\xa3\\xe6\\xcb\\x6b\\x84\\xcc\\x5c\\xf1\\xfb\\x1a\\x84\\x8b\\x4b\\x8e\\xa7\\xcb\\x7c\\x87\\xe0\\x44\\x57\\x50\\xc6\\x1f\\x9a\\xa5\\xd7\\x7d\\xed\\xdf\\x94\\x94\\x63\\xec\\xd3\\x9b\\xfc\\x71\\xf2\\x61\\x0c\\x2a\\x94\\x24\\x84\\x7f\\xb7\\x6f\\x84\\xc5\\xda\\x1f\\xa1\\x0e\\xf7\\x18\\xa3\\x45\\x66\\xce\\xc1\\xb3\\xe8\\x99\\xe7\\x25\\x2e\\x8d\\x4d\\x34\\x60\\x16\\x49\\x8f\\xf1\\x19\\x97\\x27\\x50\\x06\\x16\\x60\\xba\\xed\\x31\\x28\\x27\\x58\\x31\\x81\\x07\\x3d\\x1d\\xc7\\x4b\\x76\\xc4\\x30\\xca\\x30\\xd4\\x09\\xe4\\xe8\\x43\\x9c\\x0f\\xc4\\x8c\\x00\\x68\\x06\\x29\\xd4\\x3a\\xe2\\xa7\\x7d\\x69\\x22\\x8f\\x7f\\x8a\\x12\\x53\\xaf\\x15\\xbd\\x2c\\xb6\\xbb\\x1c\\x16\\x96\\x55\\x0c\\x4c\\x79\\x0f\\x44\\x98\\x69\\x63\\x0a\\xb9\\x2b\\x9c\\x11\\xcd\\xe1\\xf9\\x61\\xaa\\x21\\x03\\xec\\x23\\xf7\\xd9\\xf0\\xfe\\x9c\\x3c\\x41\\x32\\x58\\x2e\\xfa\\x79\\xa6\\x6a\\xe3\\x42\\x6e\\x51\\x05\\xb8\\x0b\\xfe\\x5e\\x04\\xdc\\x8b\\xb1\\xe3\\x8a\\x31\\x10\\xcd\\x72\\x98\\x4b\\x3e\\xf0\\x2a\\x0c\\xa6\\x2a\\xb6\\x38\\xcb\\xcf\\xbc\\x8a\\x6b\\x59\\x3d\\x26\\x13\\xdc\\x06\\xec\\x86\\xfe\\xe3\\x4f\\x65\\x18\\xd4\\xa3\\xfb\\xdc\\x15\\x72\\x37\\x17\\x45\\x64\\xda\\xeb\\x66\\x74\\xcd\\xc3\\x4f\\x4d\\x65\\x37\\xcf\\x81\\xd8\\xaa\\x9b\\xdd\\xbf\\x3a\\xed\\xa3\\x12\\xda\\xae\\xee\\x33\\x6f\\x9e\\xd8\\xbf\\xf8\\x1e\\x29\\x4b\\xc7\\xd4\\x4d\\x25\\xcd\\x78\\x70\\x72\\xe6\\xcb\\x41\\x4b\\x65\\xfb\\x7a\\x84\\x6f\\xc0\\x65\\x36\\x7b\\xa8\\xe3\\x7b\\xef\\xfd\\xf0\\xb7\\xba\\x8f\\x98\\xcd\\xf1\\xeb\\x87\\x0f\\x4e\\x8b\\x71\\x30\\xfa\\x34\\x29\\xd2\\xe2\\x4b\\xce\\x59\\x94\\xda\\xf1\\xaa\\x65\\xe5\\xf6\\x03\\xb6\\x31\\x05\\x3d\\xc5\\x10\\xb2\\xf0\\x97\\xe8\\x6e\\x9b\\x9b\\x55\\x23\\x02\\x75\\x79\\x68\\xd0\\x13\\x6e\\xe6\\x75\\x4c\\x42\\xa3\\x2c\\x99\\x0a\\xdd\\x9c\\xb5\\x29\\xbc\\x89\\x75\\x1d\\xfa\\x4e\\x5e\\x3a\\x0b\\xad\\xaf\\x4c\\xc4\\x0b\\x6a\\x09\\x50\\x7f\\x9f\\xcd\\x24\\xc3\\xca\\x72\\x25\\x95\\x99\\xc6\\xee\\x58\\xd8\\x57\\xb3\\xa1\\x89\\xe0\\x48\\x90\\x2e\\x88\\x5a\\x36\\x07\\x42\\x60\\x93\\xcb\\x0f\\xab\\x43\\x7c\\x0f\\xb0\\xed\\x2f\\x1e\\x96\\xe9\\x44\\x1a\\x7e\\x95\\x4f\\xe3\\xef\\x76\\x46\\xe2\\x6a\\x39\\xa0\\x70\\x33\\xd0\\xa1\\x55\\x5d\\xfe\\xed\\x9a\\x6f\\x57\\x79\\x4a\\xf3\\xa2\\xab\\xf0\\x05\\x7e\\x9f\\x85\\x3a\\xe5\\xc3\\x01\\x38\\xfd\\x80\\xe2\\xf2\\x9c\\x2f\\x4a\\x93\\xad\\x31\\x45\\xda\\x10\\xa3\\xe3\\x1c\\xe9\\xff\\x97\\x86\\xac\\x65\\xd8\\x60\\x37\\xd9\\x8b\\x7a\\xa6\\xd1\\x1d\\xe8\\x80\\x00\\x10\\xe1\\x33\\x86\\x9e\\xb6\\x7a\\x50\\x39\\xb9\\xb8\\xfe\\xb6\\xef\\x90\\x3d\\x0c\\xc7\\x46\\x41\\x26\\x07\\xda\\x72\\x5c\\xe2\\xdc\\x6a\\x35\\x21\\x09\\xdb\\xc6\\xa5\\xe4\\x0b\\x17\\x0c\\x23\\x05\\x0b\\xc4\\xfb\\x1e\\xfa\\x0c\\x34\\xfe\\xc0\\x0e\\xae\\x32\\x19\\xc2\\x90\\x40\\xe8\\xf5\\x97\\x8c\\x93\\x84\\xee\\x91\\x5d\\x8c\\x93\\x98\\xdd\\x12\\x0d\\x5c\\x3c\\xba\\x38\\xf8\\x52\\x6b\\x06\\x19\\x7c\\xb2\\xc2\\x61\\xde\\xc7\\xd7\\x26\\xae\\x13\\x0f\\x9b\\xee\\x17\\x26\\x17\\x00\\xe9\\x99\\x31\\xfa\\xc4\\xb4\\xdc\\xa0\\xf7\\x58\\x70\\x1a\\xcb\\xf3\\x70\\x7d\\x47\\xdf\\x53\\x21\\x13\\x0e\\xc1\\x0b\\xb3\\xb1\\x30\\x78\\xc4\\xdc\\x5d\\xe3\\x47\\x0f\\x15\\x8b\\x57\\xdb\\xeb\\x87\\x8b\\x3a\\x85\\x24\\xe0\\xed\\x2c\\x95\\x47\\x54\\x5f\\x0f\\xdd\\xf1\\x31\\x25\\xe4\\x5b\\xb2\\x3d\\x6a\\x7b\\x38\\x3a\\x18\\x7f\\x4c\\x5d\\x54\\xa7\\xb4\\xc8\\x3d\\x59\\x57\\xf2\\xcd\\x7e\\x6f\\xbc\"},\n{{0xe8,0x6e,0x8c,0x62,0x56,0x6e,0x15,0x75,0x3b,0xd5,0x57,0x7e,0xaa,0xe7,0xf2,0x41,0x05,0xb7,0x40,0x55,0xa2,0x56,0x29,0x58,0x07,0x08,0xbf,0xc8,0x3a,0xeb,0xf0,0x6c,},{0x8c,0x8c,0xe8,0x82,0xd5,0xf7,0x65,0x86,0xd8,0xdd,0xcc,0xc5,0x57,0x9b,0xcc,0x1c,0xdf,0x4c,0xfd,0x71,0x62,0x30,0x4c,0xb1,0x0e,0x76,0x96,0x02,0x6e,0x70,0x7f,0x17,},{0x54,0xd2,0xfd,0x44,0xac,0xf9,0xe2,0x09,0xbc,0x7e,0x43,0x33,0x72,0xbd,0x73,0x07,0x4d,0x07,0x80,0x6a,0x77,0xc6,0xce,0x22,0x8e,0x9b,0xe9,0x94,0x41,0x8b,0x00,0xc7,0xec,0xbc,0xb7,0xac,0x00,0x6c,0x29,0x4a,0xec,0x9d,0xe6,0x68,0x57,0x2a,0xdd,0x51,0x7c,0x06,0xb4,0xeb,0x4f,0xe2,0xff,0x35,0x23,0xbf,0x04,0x3d,0xf4,0x4d,0x3d,0x0d,},\"\\x12\\xfa\\x63\\x1b\\x0e\\x48\\x2e\\x9b\\x9d\\x63\\x3e\\x94\\xb8\\x2d\\x8a\\xb4\\x36\\xfe\\x54\\x8e\\x5b\\x95\\xda\\x92\\x62\\x46\\x23\\xd1\\x3f\\x2c\\x70\\xda\\x77\\x5b\\xa1\\x36\\xc5\\x22\\x9c\\x16\\xa0\\xc7\\xa6\\xfa\\x91\\x4b\\x2f\\xed\\xa5\\x64\\xe1\\x72\\x19\\xe4\\x73\\x70\\xf9\\x51\\x5b\\xb1\\xd5\\x9d\\xe6\\xe9\\x58\\x62\\x04\\xd9\\x43\\xdc\\x56\\x0d\\x73\\xe2\\xe7\\x57\\xf7\\xeb\\x39\\xbb\\xc7\\x11\\x1b\\xb4\\x6b\\xc6\\x43\\xc1\\x3f\\x60\\x21\\x12\\x73\\x9b\\xec\\x77\\x8d\\x7d\\x4f\\x49\\xd0\\x92\\x56\\x3d\\x68\\xf5\\x77\\x6e\\x43\\x0e\\x3b\\x0b\\xf2\\xdc\\x1b\\x01\\xbe\\xb3\\x04\\x01\\x96\\xda\\x63\\x02\\x90\\x8b\\xfe\\x91\\xe0\\xfc\\x38\\xe0\\x4c\\x15\\x0e\\xf9\\x07\\xdc\\x73\\x6c\\x44\\x5f\\xf2\\x1f\\xdb\\xd2\\xdc\\x1e\\xac\\x0a\\x0f\\x5d\\x00\\xa3\\x0a\\xf0\\x28\\xaf\\xe2\\xff\\x61\\x16\\x2b\\x75\\x8c\\x7d\\xa9\\xa7\\x76\\x66\\x6a\\x11\\x23\\x59\\x43\\x1c\\x48\\x85\\x6a\\x87\\xca\\x82\\xd3\\xdd\\x1c\\x8a\\xf3\\x76\\x59\\x86\\x35\\x43\\x2b\\xf8\\x91\\xbe\\xcb\\xc3\\x3a\\x8f\\xda\\x44\\xce\\x88\\x3e\\xa8\\xaf\\x4a\\xd8\\xb9\\x1a\\x92\\x61\\xce\\x76\\xb9\\xe9\\x39\\xc4\\x61\\xfa\\xc5\\x3a\\xe0\\xf0\\x76\\xe8\\x2d\\x87\\x9a\\xac\\xe8\\xf3\\x8f\\x12\\x0b\\xc9\\xb0\\x4d\\x81\\x25\\xed\\x24\\xbc\\xd7\\x79\\xd9\\xd2\\x43\\x86\\xb1\\xdd\\x20\\x17\\xeb\\xee\\x81\\x97\\x37\\x6e\\x8c\\x36\\xfa\\x3a\\xef\\x8c\\x1e\\x71\\x3e\\x2b\\x8b\\xce\\x49\\x66\\xd8\\x48\\x88\\x68\\x1b\\xa7\\x84\\x95\\xfb\\xd1\\xd6\\xcc\\xa5\\x86\\x26\\xe6\\x85\\x4c\\xda\\x60\\x6b\\x83\\xd6\\x29\\x3d\\x01\\xe8\\xe3\\xe1\\x3b\\xbf\\x4a\\xac\\x85\\x1d\\x9a\\x1e\\x00\\xd0\\x02\\x4e\\x26\\x99\\x3b\\x0b\\x30\\x91\\xbe\\x7e\\x80\\x61\\xbc\\xbb\\x3c\\xbb\\x23\\x02\\xce\\xab\\x96\\x89\\x7a\\x8e\\x1f\\xf3\\x67\\xec\\x86\\x25\\x69\\x3c\\xf3\\x15\\x34\\x12\\x4a\\x9d\\x5d\\x72\\x5b\\xca\\xe0\\x01\\xd6\\x7b\\xc2\\x11\\x1d\\x0a\\xb8\\x11\\x1f\\xa1\\xd2\\x4e\\x4e\\xd0\\x6d\\x63\\x58\\x3c\\xe6\\x90\\xf2\\xa0\\x46\\x26\\xd7\\x91\\xd2\\x9e\\x3e\\x31\\x5a\\x41\\x5b\\xf2\\xe8\\x53\\xa5\\xf2\\x97\\x4c\\x83\\x3a\\x3f\\xe2\\xe2\\x90\\x9c\\xf6\\x69\\xc7\\x3c\\x1f\\x59\\x39\\x2d\\x30\\xc3\\x7f\\x3b\\x9c\\x5a\\x3d\\xdc\\xfd\\x75\\x62\\x1f\\xda\\x36\\xe4\\xba\\x2f\\x16\\x14\\x78\\x58\\xf6\\xf2\\x06\\xb9\\xa1\\x40\\xf1\\xdd\\xc1\\x46\\x6c\\x9a\\x53\\xed\\x73\\xf8\\x24\\x90\\xbc\\x95\\x32\\x2c\\x95\\x5f\\x61\\xd1\\x1c\\xb5\\x1d\\x5e\\x8a\\x58\\xc6\\xb3\\xcb\\x0f\\xdf\\x04\\x19\\x76\\x32\\x01\\xbe\\xea\\x93\\xa8\\x51\\x2b\\x14\\x05\\x24\\x5b\\xfc\\x38\\x41\\x55\\xad\\xc5\\xce\\x77\\x8a\\xa7\\x4d\\x00\\xa3\\x22\\x72\\x64\\x65\\x11\\x9a\\xf7\\x95\\x01\\xf0\\x40\\xdd\\x0a\\x7a\\x84\\x06\\x00\\x01\\xca\\x89\\xd2\\xfe\\x5e\\x9c\\xf9\\x77\\x9a\\x54\\x7e\\x3e\\xbd\\x3b\\xf8\\x64\\x29\\x90\\xa3\\x69\\x0e\\x2b\\x2c\\x3e\\x54\\xcb\\x7e\\xee\\xea\\xbc\\x24\\x2b\\x4d\\xd9\\x92\\x74\\xc4\\x25\\xa8\\x67\\x93\\x1c\\x92\\x9c\\xa7\\x08\\x08\\x60\\x1c\\x39\\x08\\xcf\\xd7\\x88\\x86\\x7d\\x68\\x7d\\xc3\\x66\\xe9\\x76\\x35\\x0c\\x9e\\x70\\x58\\x4b\\xd3\\x90\\xd6\\x7e\\xeb\\x7c\\xfe\\xa2\\x6c\\x42\\x68\\x6d\\x3d\\x96\\x20\\xf6\\x2f\\x64\\x10\\x4e\\xf4\\x1e\\xd1\\xd1\\x30\\xd7\\x9e\\x32\\x59\\x38\\x48\\x62\\x96\\xb7\\xab\\x2d\\x2a\\xdb\\x78\\x52\\x67\\x43\\xe4\\x00\\xac\\xb2\\xb7\\xaf\\x09\\x62\\x8d\\x68\\xcf\\x94\\x75\\x10\\x16\\x25\\xc2\\x0e\\x1d\\xc0\\x51\\xd7\\x3c\\x99\\x7c\\x95\\x2e\\x12\\x81\\x2c\\x80\\x5b\\x68\\xff\"},\n{{0xa5,0xca,0xb2,0x72,0x7e,0x2f,0x13,0x1a,0x4d,0x63,0xfa,0xce,0xe7,0x99,0x33,0x66,0x63,0x93,0x0a,0xa0,0x7a,0xfd,0xa6,0xbd,0x5a,0x8e,0x98,0x5a,0x02,0xde,0xb1,0xea,},{0xac,0x35,0x5f,0x95,0x26,0x0f,0xbf,0xea,0x77,0x8c,0x55,0xb5,0xaf,0x8b,0x3f,0xd1,0xf2,0x4d,0x26,0x93,0xda,0x35,0xde,0x4e,0xe5,0x08,0xa2,0x7e,0xd3,0x50,0x39,0x1f,},{0x13,0x8c,0x7a,0x8e,0xca,0x5b,0x5c,0x37,0x15,0x88,0x13,0x84,0x3c,0x9a,0x90,0x4e,0x5f,0x53,0x0a,0xd9,0x71,0xee,0x43,0x2a,0x44,0xf3,0x44,0xf8,0xc6,0x4b,0xbf,0xaf,0x10,0x2f,0xf4,0x1d,0xaa,0x5c,0xf7,0x22,0xa4,0xbc,0x66,0x40,0x58,0x87,0x59,0xb8,0xf3,0x6f,0x9c,0x05,0x9e,0xab,0x93,0x6c,0xc4,0x5e,0xd4,0x79,0x63,0x94,0xa0,0x02,},\"\\x48\\x34\\x39\\x15\\x4d\\xd5\\xe5\\xd1\\x09\\x85\\x7c\\x24\\xd1\\xc4\\xe7\\xfb\\xbe\\xfd\\x2f\\x38\\x65\\x1d\\xa8\\x12\\x89\\xf2\\xad\\x3d\\x61\\x54\\x30\\x65\\x38\\xb8\\x2a\\xc7\\xdb\\xa9\\x21\\x0e\\x74\\x07\\x76\\xed\\xe4\\xcc\\xf5\\x1d\\x4f\\x63\\x09\\x4b\\x03\\xe4\\x6a\\xd3\\xaa\\x3c\\x31\\x94\\x7d\\x8c\\x36\\xce\\x6f\\x94\\xe8\\x52\\x96\\xbd\\xed\\xcc\\x1e\\xad\\x62\\xea\\xa1\\x44\\x1e\\xcd\\xe0\\xa2\\x25\\xd0\\xbf\\x02\\xed\\xca\\xcf\\x86\\x50\\x14\\x89\\x9a\\xf6\\x6d\\x98\\x08\\x04\\x0c\\x2d\\x02\\x00\\x0a\\x0f\\x5c\\xe4\\xf1\\x68\\x3c\\x1a\\x49\\x52\\x76\\xd9\\xc4\\xd7\\x28\\xc9\\xec\\xd6\\xf0\\x78\\xdb\\x8a\\x0c\\xfc\\x26\\x71\\x87\\x23\\x85\\x62\\xab\\x1a\\x1e\\xa2\\x81\\x3f\\xb4\\xf1\\x2e\\x87\\x8e\\x1b\\xa1\\x43\\xf4\\xd0\\x6a\\x3b\\xc8\\x10\\x0c\\x35\\x50\\x11\\x8d\\x69\\xda\\xe6\\x7b\\x55\\xed\\x69\\x2a\\xcf\\x94\\x44\\xda\\xa5\\xc3\\xe3\\xc0\\xa9\\x8e\\xe2\\x8c\\xf1\\x72\\xde\\x0c\\x58\\x4c\\x9f\\x2e\\xc9\\xbb\\x6e\\x9b\\x57\\xf5\\x72\\xa8\\x6f\\xf8\\x72\\x9f\\x65\\xf4\\xc6\\x5b\\x7f\\xea\\xcc\\xaa\\x21\\x72\\x0e\\xd7\\x9e\\x90\\x61\\x8b\\xca\\xfb\\xfd\\x95\\x33\\xda\\x85\\x23\\x2b\\x45\\x08\\x83\\xaa\\x91\\x9f\\x82\\x7f\\x04\\xc4\\xa9\\x7b\\xf5\\x13\\x90\\xd4\\xf8\\x56\\x9c\\x19\\x17\\x26\\xf4\\x4f\\x7e\\x39\\xfb\\x3d\\xb7\\x3b\\xfc\\x41\\x5b\\x6f\\xfc\\xa8\\xb9\\x1a\\xca\\xad\\x69\\x23\\x85\\x72\\xf1\\x4b\\x49\\x98\\x5e\\xa0\\x3c\\x98\\xd7\\xb1\\xd4\\x4b\\x3a\\x65\\x54\\x76\\x5b\\x19\\xab\\xf9\\xb2\\x52\\x74\\xe9\\x7e\\x46\\x34\\xe4\\xb0\\xf9\\xe8\\x02\\xeb\\x6f\\x74\\x3f\\xff\\x95\\x07\\x57\\xee\\x01\\x3a\\x69\\x88\\x22\\x18\\x81\\xa7\\x44\\x3f\\x1f\\x32\\xbc\\xcb\\x00\\x7e\\x99\\x37\\x9c\\x7c\\xa4\\xf9\\x06\\xd5\\xfe\\x11\\xcb\\x12\\xf6\\x6b\\x53\\xa3\\xd2\\x1a\\xc9\\x47\\xbe\\x0c\\x81\\x50\\xbc\\xd0\\x4f\\x1c\\x81\\x6b\\x3f\\x0c\\x07\\xc5\\xfb\\xc0\\x90\\x5a\\x71\\x36\\x95\\x68\\x49\\xda\\x03\\x83\\x6d\\xae\\xc2\\x5c\\x3e\\x1a\\x06\\xec\\x3a\\xeb\\x20\\x56\\x48\\x17\\x6f\\x89\\xf4\\xa2\\x91\\xfa\\xc4\\xf1\\xd3\\x89\\x9f\\x56\\xc9\\x06\\x5e\\xeb\\xb8\\x76\\x8b\\x84\\xb3\\x1b\\x7c\\xc0\\x31\\x08\\xbd\\x08\\x88\\x33\\x8d\\x17\\x74\\x99\\x49\\x70\\x29\\x2d\\x93\\x50\\x31\\xfe\\xa3\\x35\\xd9\\xe7\\x90\\x8f\\xe0\\x25\\x48\\x89\\xc0\\xb1\\x71\\xcf\\xe0\\xaf\\x2e\\x6f\\xde\\x7a\\x5e\\xa3\\xde\\x1f\\xdc\\xda\\xe5\\x37\\xb6\\x31\\x31\\x19\\xc2\\x7f\\x77\\x20\\x24\\xef\\x36\\xe4\\x5c\\x8b\\x89\\xf2\\x6c\\x93\\xd9\\xee\\xa1\\x37\\x25\\xe1\\x2d\\x81\\x0c\\xf9\\x82\\x4a\\xea\\x04\\xcb\\x80\\x2d\\xa7\\xe4\\x58\\xe8\\x42\\xca\\x37\\x5e\\x36\\x71\\x34\\x6e\\x00\\x89\\xde\\xc5\\x71\\xbe\\x16\\x9b\\x0d\\x90\\x96\\x6b\\xf3\\x68\\xfe\\x36\\x98\\xfd\\x3e\\x72\\xbf\\x16\\x24\\x9d\\xd9\\x00\\xaf\\x6d\\x29\\xff\\xa4\\x83\\x51\\x36\\x0f\\x12\\x24\\x17\\x14\\x58\\x5f\\x7a\\x9b\\x4c\\x7b\\xaf\\xc9\\x52\\x22\\x67\\x35\\xde\\x14\\x62\\x74\\x3d\\x78\\xab\\xad\\x0f\\x67\\x11\\xf2\\x49\\x5f\\x33\\x13\\xad\\x4e\\x0b\\xa2\\x16\\xb0\\xde\\xa5\\xdc\\x15\\x16\\xa9\\x54\\x9f\\x7d\\xfc\\xfe\\xb9\\x3e\\x59\\x1a\\xbe\\xda\\x5e\\xa3\\xc7\\x04\\x59\\x06\\x52\\x3b\\x40\\x86\\x8c\\xa5\\x73\\x5d\\x6a\\x33\\x71\\xc3\\xc2\\x94\\xc1\\x11\\x26\\xd0\\x97\\xf4\\xc7\\x08\\xe9\\x04\\x64\\xc1\\xad\\x91\\x42\\xfa\\x0b\\xed\\xf0\\x7d\\xfc\\x5f\\x4c\\xb6\\x7d\\x6e\\xd8\\x0f\\x1b\\xfe\\x72\\x68\\x3c\\xfb\\x2a\\xd6\\x65\\x30\\xdc\\x43\\xd7\\x02\\x3f\\x37\\x90\\xff\\x42\\xd9\\x5b\\xd8\"},\n{{0xcb,0x63,0x19,0x61,0x37,0x79,0xa4,0xef,0x66,0xbe,0x14,0x14,0x4b,0x28,0x40,0xad,0x01,0x67,0xc0,0x3f,0x3b,0x8d,0x04,0xff,0x59,0x2c,0xd1,0xd2,0xd7,0x22,0xe3,0x30,},{0x18,0xeb,0x03,0xf0,0xa3,0x34,0xb0,0x80,0xe1,0xaf,0x43,0x99,0xd8,0x37,0x6d,0x83,0xc5,0x33,0x31,0x6d,0xc6,0x87,0xcf,0x34,0x1f,0x0a,0xfa,0xb4,0x50,0x96,0x52,0x99,},{0xc1,0xb3,0x99,0xcd,0xc1,0x98,0xe9,0xa1,0x59,0xe6,0x84,0xfc,0x26,0x68,0x6d,0xe6,0x60,0xda,0x54,0xcf,0xe3,0x12,0xca,0x73,0x45,0xdf,0x0c,0x7d,0x15,0xa3,0x57,0x43,0x01,0x44,0x10,0xbd,0x2f,0x6c,0xd1,0x1e,0xef,0x33,0xa8,0x9b,0x3d,0x15,0xcb,0xc1,0x7c,0x7a,0x35,0x89,0x37,0xfd,0x99,0x72,0x05,0x05,0x1f,0x92,0x57,0xc2,0x56,0x09,},\"\\x87\\x4a\\x6c\\x81\\xd6\\xdb\\x71\\x33\\xa7\\x91\\x69\\x76\\x0c\\x84\\xd3\\x6e\\xea\\x3d\\x42\\xea\\x08\\x92\\xb7\\xc8\\xdd\\xe8\\x44\\xa3\\xa6\\xb6\\x0a\\xa9\\xf2\\x66\\x07\\x26\\xc9\\xc4\\xdd\\x26\\xa0\\x1f\\x4e\\xd0\\xdc\\x1c\\x53\\xba\\x60\\x05\\x46\\x3f\\x7e\\xa6\\x4a\\x1e\\xc6\\x39\\x53\\xbc\\x3d\\x81\\x05\\x2a\\x2f\\x10\\x84\\x38\\x9a\\x77\\x06\\xdf\\x74\\xed\\x41\\x36\\x08\\x2a\\xb5\\xc6\\xe8\\xc7\\xf4\\x11\\xdf\\x9d\\x3a\\x0f\\x3c\\x40\\xf5\\xa6\\x0e\\x2d\\x21\\xa8\\x54\\x8e\\x7a\\x25\\xde\\xe3\\x40\\x30\\xb3\\xc3\\xe7\\x5c\\xaa\\x93\\xdd\\xaa\\x9c\\x19\\x0c\\xb6\\xde\\xda\\x24\\x13\\xd5\\x4e\\x37\\x3d\\x43\\x53\\xdb\\xa4\\x3d\\x39\\x49\\x1a\\x2f\\x56\\xc8\\xb3\\x6d\\x45\\x01\\x6f\\x77\\xd7\\x47\\x16\\x91\\x63\\x45\\x39\\xe7\\x6c\\x4f\\xb4\\x19\\x13\\x47\\x2b\\x0a\\x23\\x05\\x4f\\x54\\x8f\\x54\\xb1\\xe7\\x10\\x9c\\x8b\\x65\\x21\\xb5\\x7a\\xe9\\x81\\xd0\\x50\\x31\\x6a\\x33\\xc4\\x9c\\x71\\x16\\x26\\x8d\\xcc\\x4b\\x78\\xc2\\xba\\xe5\\x3a\\x3a\\xe4\\xdd\\x17\\x8b\\xb8\\xb7\\x6b\\xb3\\xbe\\xfe\\x19\\xe4\\x1a\\x2c\\xf1\\x2c\\xeb\\xb7\\x11\\x68\\xf9\\x71\\xf2\\x02\\x46\\x1c\\x63\\xf7\\xd6\\xee\\xf1\\x07\\xf5\\xb1\\x03\\x0e\\xdd\\x4e\\x75\\x00\\x9e\\x91\\x16\\xc3\\xcd\\x0e\\x8b\\xdd\\xc2\\x99\\xb4\\x1f\\x1a\\x45\\xe7\\x84\\xef\\xa6\\x46\\xda\\xda\\x64\\x06\\x8e\\x92\\x48\\xec\\x98\\x8f\\x23\\x26\\x34\\xad\\x3d\\x5a\\xab\\x19\\x56\\x0e\\x83\\x0a\\x5b\\xd6\\x65\\x45\\x7c\\x94\\x29\\x5e\\x1a\\xf0\\x16\\x0f\\xbc\\xe2\\x72\\xef\\x48\\x45\\xdd\\xf0\\xc4\\xf2\\x4d\\x97\\x6f\\x51\\x86\\x90\\xea\\x1f\\x82\\xff\\x4d\\xfa\\x48\\x13\\x64\\x1a\\x67\\x59\\x8e\\xa9\\x84\\x01\\xe0\\xff\\x10\\xa0\\xe5\\x82\\xe2\\xb9\\x08\\x67\\xb4\\xe6\\x23\\x2c\\x34\\xea\\x49\\x9c\\x16\\x99\\x09\\xa4\\x41\\x26\\xf3\\x77\\xd8\\xcc\\x1c\\x11\\x90\\x58\\x66\\x34\\x0e\\xfd\\x1e\\x7b\\x07\\x7d\\xc7\\x45\\x6d\\x59\\xc9\\xb9\\x6a\\x12\\x4a\\xac\\x3b\\x33\\xbb\\x22\\x74\\x41\\xbb\\x7a\\x52\\xe6\\xc3\\x14\\x0d\\x7a\\x4f\\x67\\xca\\x05\\xbb\\xc9\\x3c\\x93\\x77\\x5b\\x92\\x91\\x19\\xa2\\x24\\xed\\x8f\\x39\\x00\\x58\\x20\\xf4\\x20\\xcc\\x6c\\x53\\x0e\\x61\\xe2\\x0a\\xdc\\xa0\\x1e\\x93\\x9c\\xc0\\x31\\xdf\\x49\\xcd\\xb1\\xec\\x8f\\xf4\\x93\\xc9\\xef\\xbc\\xad\\x34\\xc5\\x71\\x08\\xef\\xd7\\x64\\x55\\x89\\x66\\xfb\\x14\\x70\\xb0\\x74\\x5e\\x69\\x66\\x19\\x1a\\x9a\\x9e\\x44\\x58\\x1b\\x09\\xfa\\xf4\\x69\\xf9\\x51\\x53\\x72\\x03\\xd9\\x26\\xbc\\x8a\\x55\\xd0\\x80\\xa8\\x05\\x18\\x1d\\xd7\\x29\\x6e\\xd2\\x0a\\x81\\x82\\x68\\xf7\\x55\\xea\\xa6\\x6b\\x08\\x22\\x42\\xf4\\xd0\\x20\\xf7\\xcd\\x67\\x20\\x89\\x04\\x84\\xc0\\x1c\\x75\\x7f\\xe3\\x5d\\x87\\xb5\\xbc\\x90\\x6d\\xea\\xcc\\x2e\\x30\\x71\\xde\\x46\\x01\\xbc\\xf0\\xdd\\x6b\\x83\\x7c\\x43\\x31\\x06\\x04\\x7f\\xd8\\xec\\x9b\\xd0\\xe9\\x8c\\x9e\\xe8\\x06\\xf7\\xec\\x8c\\x5a\\x10\\xea\\x21\\x36\\xf1\\xf9\\x0f\\x90\\x0b\\x85\\x3f\\x95\\x3f\\x00\\xb0\\x76\\xbd\\x1e\\xbd\\x92\\x9d\\x08\\xa3\\x8b\\xec\\x68\\xd8\\x66\\x43\\x50\\x47\\xbc\\xb6\\x72\\x1e\\x06\\xb6\\x40\\x85\\xdc\\x05\\x58\\xc1\\xfa\\x85\\xa2\\xc8\\x3b\\x0c\\xaf\\x4c\\x81\\x60\\x84\\xf1\\x0a\\x4c\\x58\\x85\\x29\\x5b\\xca\\x15\\xff\\x7c\\x18\\xe5\\x96\\xc6\\x2c\\x92\\xee\\x99\\x21\\xa2\\x7c\\x29\\xd1\\x95\\xbd\\x28\\x22\\x13\\xff\\x36\\x60\\xb6\\xe7\\x54\\x6b\\x4e\\xaa\\x77\\x7c\\xe3\\x9f\\xc5\\xd2\\x04\\x84\\xc7\\x1e\\xd6\\xca\\x06\\xf9\\xb7\\x7a\\xb1\\xd8\\x72\\x39\\x3a\\xb2\\xd1\\x02\\x55\"},\n{{0xb2,0x98,0xad,0xf3,0x8a,0x67,0x08,0xf8,0xd1,0x8f,0xf1,0xed,0x96,0xbf,0xba,0xb4,0x21,0x54,0x0d,0x09,0x6c,0x4e,0x43,0x51,0xb9,0x22,0x09,0xb5,0xe6,0xaa,0xab,0x65,},{0x77,0x0e,0xdf,0x42,0xb8,0xa0,0x39,0xc6,0xca,0xb9,0xba,0x65,0xeb,0xfb,0x13,0x5a,0xbc,0x2d,0xa3,0x14,0xa4,0xc3,0x09,0xf4,0x6a,0x8f,0x32,0x5b,0x52,0xd0,0x65,0x93,},{0xe5,0x5f,0x8d,0x30,0x41,0x22,0xdc,0x17,0x5c,0xf0,0x27,0x46,0x74,0xfc,0x9d,0xed,0xfe,0xc2,0xb5,0xf8,0xa2,0xee,0xb1,0xe3,0xe7,0xf8,0xe0,0xdf,0xba,0x0d,0xac,0x2d,0x32,0xf4,0xe7,0x04,0xce,0x91,0xcd,0x59,0x91,0x84,0x13,0x3c,0x3b,0xf1,0x06,0x3d,0x2f,0xae,0x63,0xd7,0x3a,0xcc,0x57,0x72,0xd7,0x18,0xd8,0x11,0x83,0x31,0x86,0x02,},\"\\x9d\\xf4\\xd5\\xd7\\x56\\x5d\\x2c\\x05\\x22\\x62\\xdd\\x34\\xd6\\x00\\x7d\\x86\\xd9\\xc0\\xf0\\x7c\\x70\\x89\\xaf\\x61\\x19\\xe3\\x04\\xf4\\xd8\\x01\\x1d\\x7e\\xaa\\xd7\\x7b\\x3e\\xf7\\x0c\\xc2\\x80\\x84\\x7d\\x59\\xf2\\x97\\x20\\x2b\\x7e\\x18\\x61\\xae\\xf3\\x34\\xbf\\x38\\xde\\x14\\x74\\x0e\\x80\\x73\\xc9\\x55\\xa8\\x51\\xd2\\xcf\\x3d\\xad\\xc3\\xed\\xce\\x15\\xbe\\x49\\x0e\\xaa\\x84\\x5b\\xa5\\x53\\xfc\\x6e\\x87\\x46\\xe5\\x29\\x15\\xe6\\x55\\xaf\\x4b\\x86\\xc6\\x29\\xd4\\xc5\\x22\\x78\\x36\\x35\\xd4\\x64\\xa2\\x82\\x57\\x77\\xd8\\x9d\\x70\\x97\\x67\\x7e\\xf0\\xe5\\xee\\xae\\x38\\x53\\x7e\\xcb\\x65\\x6e\\x3b\\x28\\xdd\\x07\\x35\\x8f\\xd9\\xfb\\x2c\\xd4\\x62\\x51\\x72\\x86\\x65\\x9a\\xef\\xc7\\x9d\\x37\\x4d\\x1d\\x13\\xed\\x93\\x96\\x7c\\x53\\x0c\\xde\\xa4\\xf3\\x14\\xa0\\xf9\\x1d\\x62\\x89\\xb4\\xc7\\xa4\\x27\\x9b\\x6f\\x4c\\x4a\\xbc\\xa3\\x33\\x57\\xf6\\x9e\\xd8\\x4b\\x91\\x19\\x63\\x7a\\xdb\\x7c\\x18\\xe6\\x94\\xcb\\x3c\\x56\\xe7\\x36\\x37\\xda\\x91\\x07\\x35\\xd4\\x3c\\x38\\xaa\\x80\\x86\\x67\\x5a\\x06\\xad\\x37\\x0e\\x57\\x26\\x88\\x1d\\xa5\\xe1\\xa1\\xdc\\x61\\x44\\xd6\\xa6\\x2a\\xff\\x7f\\xb0\\xc3\\x52\\xd8\\x8d\\xc9\\x71\\xa3\\xd7\\x2d\\x30\\x71\\xe1\\x4b\\x47\\x42\\x53\\x56\\xaf\\x1b\\x01\\x92\\x33\\x53\\x82\\x61\\x45\\x1a\\x99\\xa6\\xcf\\x4a\\x07\\xce\\x9a\\xb1\\xc3\\x99\\x0d\\xe6\\xab\\x8d\\xe2\\x11\\x6c\\x75\\x61\\x05\\xc5\\x12\\xb7\\xa3\\xee\\xb3\\x15\\x7b\\x15\\x8b\\x32\\x1e\\x44\\x4e\\x80\\x6d\\x89\\x0b\\x38\\x90\\xed\\x9d\\xdc\\x86\\x9f\\x17\\x11\\x72\\x3b\\xb9\\x9a\\x72\\xbd\\xb9\\x23\\xd1\\x31\\xba\\x4e\\xdb\\xfb\\xb6\\xda\\xe9\\x9a\\x5c\\x7b\\x32\\x8d\\x31\\x0d\\xf9\\xa6\\xd1\\xdc\\xd8\\x59\\x18\\x96\\x28\\x33\\xe8\\x9e\\x20\\xf5\\xc5\\xe6\\x33\\x3a\\xc8\\x61\\x09\\x4a\\xe9\\xe7\\x99\\xc8\\x64\\x1b\\x9b\\xae\\xa1\\x1a\\x2e\\x0e\\xc2\\x34\\xbe\\x59\\x30\\xe0\\x28\\x80\\x85\\x9c\\xde\\xc0\\xd9\\x78\\x23\\x7c\\xbe\\xa5\\xc7\\xc3\\x2c\\x11\\x1b\\xaf\\xdd\\x4b\\xfb\\xff\\xe4\\xfb\\x34\\x85\\xef\\xfe\\xcd\\x51\\xbd\\x19\\x5a\\x71\\x40\\x4c\\xa5\\xb5\\x9a\\xfa\\x25\\x2d\\x7b\\x5f\\xf9\\xd0\\x30\\xf4\\x8c\\x6f\\xaa\\xdb\\xdb\\xa9\\x18\\xf2\\x1a\\x0c\\xd3\\x9a\\xf5\\x69\\x66\\xdc\\xcf\\xa2\\x5f\\xb5\\xa5\\xcf\\x9a\\x4b\\x26\\xa7\\xf5\\x44\\x1d\\xf6\\xe3\\x20\\xe3\\x4b\\x27\\x39\\x3d\\xe2\\xec\\xfb\\xd6\\x9a\\x15\\x94\\x90\\x9a\\x6c\\x68\\x5e\\xc6\\x45\\xfc\\xf3\\x04\\x8d\\x01\\x48\\xfa\\x38\\xd3\\xe8\\xa6\\x4d\\xc3\\xc2\\x1a\\xe4\\x4d\\xa7\\xe4\\x6a\\x5e\\xa7\\x93\\x6c\\x2b\\xa0\\x83\\x68\\x9a\\x78\\xca\\x3a\\xc6\\x0b\\x87\\xbe\\x6d\\x23\\xea\\x40\\xf5\\x96\\x15\\x83\\x74\\x28\\x42\\xe3\\x75\\x25\\xa4\\x9c\\x5f\\xe8\\xfd\\x15\\xd7\\xb0\\xc9\\xe8\\xfc\\xcd\\x07\\x93\\x6d\\x19\\x53\\x82\\x12\\xf7\\x37\\x3d\\xbb\\xf3\\xdf\\x7d\\x46\\xad\\xf9\\xd9\\xf5\\xdb\\x09\\x52\\x4c\\x65\\xb8\\x83\\xae\\x6f\\x6c\\xef\\xa2\\x4b\\x19\\xec\\x48\\xce\\x28\\xcf\\xa7\\x34\\xd9\\xbd\\x6e\\x77\\x83\\x7d\\x1a\\x14\\xd6\\xa1\\x9d\\x34\\x5b\\xfb\\xea\\x55\\x9e\\x7e\\x6b\\xfb\\x71\\xdd\\xad\\x83\\xcd\\x8d\\xee\\xab\\x68\\x7f\\xe7\\x3c\\x05\\x74\\x88\\xf8\\xf2\\xb3\\xe2\\xe2\\x6d\\x13\\x00\\x9f\\x4d\\x23\\xe6\\x61\\x9a\\x23\\xc0\\x69\\x2a\\xf7\\x66\\x69\\x21\\x7d\\x5e\\xbd\\x46\\x08\\x5b\\x39\\x88\\x90\\xe5\\xc9\\x1f\\xdb\\x4d\\xb5\\xba\\x40\\xe7\\x77\\x3d\\x51\\x8d\\x3c\\xf0\\x0c\\x0a\\x5b\\x5a\\x4b\\x0f\\x1b\\x85\\xd6\\x29\\x16\\xa5\\x9e\\x56\\x07\\xb7\\xb1\\xeb\\x80\"},\n{{0xe9,0xcf,0x16,0xd6,0x96,0xf6,0x3b,0x59,0xe5,0xe2,0x5c,0x9e,0xe2,0xd7,0x5b,0xb0,0x5e,0xd2,0xba,0xa5,0x91,0xa7,0x55,0x7f,0x9f,0xb1,0x29,0xcf,0x98,0x3d,0xe0,0xba,},{0x6d,0x1a,0xe3,0x85,0xe8,0x0a,0x39,0x55,0xe8,0xd0,0xc5,0x93,0xa8,0x1f,0x43,0x1c,0xd4,0x32,0x67,0x1e,0x78,0xcd,0xba,0xfe,0x83,0xfe,0x58,0xdb,0xcd,0xb9,0x85,0x60,},{0x81,0x12,0xac,0x37,0xea,0xfb,0x74,0x9d,0x3f,0x4a,0x1e,0xa1,0x48,0x43,0x79,0xdf,0x3e,0x38,0x3b,0x01,0x9c,0x12,0xde,0x85,0x15,0xe3,0x49,0xe4,0xf6,0xf9,0x98,0x63,0x2e,0x30,0x96,0x83,0x47,0xa1,0xd1,0x5b,0x09,0xda,0x2e,0xb8,0x00,0xb0,0x3d,0x81,0x9d,0x20,0x2b,0xd1,0x0a,0x6a,0x46,0x3b,0xb0,0x2b,0x36,0x6d,0x68,0x55,0xfe,0x0e,},\"\\xa1\\x0f\\xea\\x8f\\xc9\\x3e\\xcc\\xfe\\x2a\\x6b\\x78\\x26\\x07\\x95\\x63\\xad\\xf8\\xaa\\x9a\\x66\\x64\\x44\\x93\\x22\\x00\\xcc\\xa9\\x44\\x7d\\xd0\\x27\\xc5\\xc7\\x20\\x4e\\xa6\\x2b\\xf8\\xf5\\xe2\\xe3\\x91\\x45\\xac\\x39\\x48\\xab\\x3f\\x31\\x86\\x88\\x7b\\x30\\xbc\\x60\\x23\\x30\\x24\\xb4\\x83\\xf3\\xf5\\x19\\x03\\x6a\\x3e\\x94\\xc8\\xd7\\x51\\x0a\\x85\\x3a\\xc6\\xe2\\x0c\\x6e\\x52\\x6e\\xe3\\xcd\\xb7\\x6d\\xe6\\x63\\xf6\\x73\\x05\\xad\\x80\\xdf\\x23\\x42\\xc8\\x50\\x1b\\x4f\\x4a\\x8e\\xe3\\x66\\x5a\\x79\\x8f\\xc4\\x37\\xdd\\x81\\x4e\\x4e\\x47\\xe7\\xa4\\x66\\x89\\x0e\\x0f\\xfa\\x8f\\x51\\x0f\\x3e\\x6e\\x19\\xc9\\xc9\\x69\\xf7\\x0a\\x76\\xe5\\xcf\\x30\\x54\\xd1\\x7d\\xe4\\x59\\xac\\x8e\\xe9\\x95\\x50\\xbd\\x38\\x31\\x9f\\x36\\xe4\\x33\\x43\\x4a\\x92\\x6a\\xd6\\x8b\\x96\\x1e\\x0c\\xa1\\x0a\\xdd\\x4b\\xa9\\x92\\xb3\\x65\\x06\\x60\\xa2\\xc3\\xc2\\x6f\\x5d\\x74\\x0a\\x31\\xaf\\xb7\\x76\\x3f\\x54\\x2f\\x72\\x3b\\x8a\\x3c\\x92\\xd8\\xae\\x92\\xa5\\x67\\x76\\x4e\\xfc\\x70\\x53\\x03\\x12\\xba\\xab\\xdd\\x3f\\xbb\\xd5\\x27\\xfe\\x0f\\xcb\\xca\\x3f\\x6a\\x70\\x64\\xcd\\xde\\x18\\x56\\xe9\\x7a\\xb7\\x86\\xaf\\x7d\\x70\\x22\\xa9\\xd4\\x6a\\x33\\x8e\\x8e\\x17\\x54\\xaf\\xd9\\xad\\xac\\x85\\x6a\\x38\\xde\\x2a\\x4c\\x97\\x66\\xde\\xe8\\xdb\\xc7\\x09\\xb0\\x67\\x1a\\x6a\\x6e\\x6e\\x1e\\x5d\\x12\\x07\\x4d\\x22\\x24\\x5c\\xd7\\x3b\\xee\\xeb\\x1b\\xd8\\xec\\xfc\\x1e\\x85\\xa2\\x1b\\xde\\x25\\x3f\\x7c\\x46\\x5a\\xbc\\x1f\\xea\\xa9\\x61\\xc0\\xff\\x5c\\xff\\x2d\\x89\\x64\\x72\\xae\\x17\\xab\\x84\\x88\\xe3\\x3f\\xfe\\xfd\\xb7\\x2c\\x10\\x5e\\x20\\x4f\\x94\\x4a\\xda\\x51\\xee\\x13\\x98\\x1a\\x13\\x6c\\x0f\\x38\\x42\\x6e\\x3e\\x49\\xb0\\xe9\\x18\\x41\\xc3\\x27\\x94\\xd5\\x2f\\x13\\x35\\xdf\\xa6\\x37\\xf1\\x51\\xc7\\xe4\\x0f\\x9b\\x83\\x0a\\xed\\x53\\x9a\\xc5\\x73\\x1b\\x81\\xcd\\xe3\\x26\\x4d\\x22\\xbe\\xad\\x31\\xa6\\xcc\\x68\\xd1\\xa7\\x31\\x43\\xb5\\xba\\x48\\x16\\x13\\x92\\x32\\xf3\\xf7\\xf9\\x79\\x83\\xf4\\xec\\xba\\x64\\xc4\\x95\\x53\\xbe\\x9d\\x6d\\x94\\x3f\\x91\\xdf\\xe0\\x3d\\x1e\\xe8\\x61\\x8c\\xd4\\x0d\\x2f\\xb7\\x23\\x8a\\x31\\xd1\\xbc\\x38\\xe7\\x6a\\x55\\x1f\\x9e\\xee\\x22\\xe7\\x3a\\x27\\xd7\\xa4\\x8b\\x40\\x87\\x72\\xea\\x72\\xc3\\xed\\x63\\x7b\\xb4\\xb1\\x68\\xf9\\xd7\\xae\\xad\\x94\\xea\\x03\\xbc\\x11\\x10\\x99\\x01\\xc8\\x89\\x92\\x7d\\x51\\xcd\\xac\\xf9\\x62\\x12\\x59\\x62\\x55\\x99\\x79\\xd3\\xe4\\xc8\\xe3\\xb5\\xae\\x58\\x2f\\x2d\\xba\\xd4\\x99\\x88\\x02\\x85\\x6c\\x4d\\xf6\\x9e\\x8f\\xb5\\x49\\x17\\xe2\\xf3\\x6b\\xb6\\x7a\\x19\\xa2\\x6e\\x9a\\x9a\\x94\\x85\\xbc\\xe9\\x8d\\xbf\\xff\\x0d\\x2b\\x02\\xb9\\x37\\x7a\\x91\\x37\\xa7\\x34\\xe5\\x7b\\x5c\\xe6\\x65\\x05\\x30\\x17\\xe9\\x92\\x67\\x7a\\x1a\\xa0\\x79\\x24\\x0d\\x2c\\xf9\\x63\\xcd\\xf9\\xbf\\xea\\x8d\\x46\\x00\\x91\\x23\\x2d\\xaf\\x89\\x80\\x1f\\xd7\\x51\\x71\\xa6\\x19\\x5a\\x5c\\x04\\x68\\x15\\x91\\x4b\\xe1\\xf6\\x28\\x68\\x78\\x3d\\x6f\\x2c\\xf2\\x8a\\xf9\\x37\\x8d\\x6c\\x68\\x93\\xe7\\x5d\\xe6\\x41\\x11\\x1c\\x68\\x47\\x27\\xef\\xfa\\x31\\xb8\\xbc\\x9b\\x0a\\x01\\xdb\\x9c\\x9e\\x81\\xcc\\xd8\\xf4\\xd4\\xe8\\x75\\xd4\\xbd\\x90\\xd2\\x53\\xf5\\x89\\x89\\xa8\\xa5\\x2a\\x20\\x3a\\x77\\xa4\\x96\\xd6\\x97\\x98\\x6b\\x03\\x1e\\x9f\\x69\\x9b\\xc6\\xa1\\x6c\\xd5\\xf9\\xc3\\x60\\x18\\xeb\\xda\\xa3\\x6b\\xad\\x0e\\x01\\x4f\\x4c\\xf3\\xb4\\xb7\\x46\\x17\\x1b\\xf8\\x93\\x14\\xe8\\xb7\\x2c\\xbd\\x47\\xcc\\x61\\x6a\"},\n{{0x23,0x8a,0x6d,0x49,0x79,0x32,0x1a,0x14,0xa9,0x97,0x23,0x6f,0x45,0x85,0x04,0x6c,0xf7,0xa0,0x5c,0x0a,0xdc,0x6b,0xa1,0xfd,0xb1,0x9e,0xc2,0xa3,0x2f,0x62,0xbe,0xeb,},{0x0b,0x4b,0xa6,0x74,0xe4,0x01,0x66,0x5b,0x67,0x90,0xcf,0xda,0x08,0x07,0x04,0xcd,0x90,0xe2,0xf3,0xd3,0xef,0xab,0x25,0x3e,0xd8,0xdc,0xfb,0xd1,0x8e,0x40,0x67,0x89,},{0x29,0x42,0xf7,0x08,0xc0,0xed,0xe4,0xcb,0x0d,0xde,0xf1,0x3b,0x85,0xd7,0x1d,0x72,0x13,0xe0,0x38,0x3d,0xd2,0x94,0xf5,0x34,0x13,0x5f,0xd6,0x9c,0xaf,0xbc,0xfc,0x0e,0x33,0x09,0x0a,0x2a,0x0c,0xa3,0xfa,0x57,0x2c,0x72,0xcd,0xf5,0x59,0x2d,0xe9,0x03,0xb1,0x58,0x44,0x95,0xab,0x63,0x99,0x81,0x50,0xf2,0xb3,0x93,0xa3,0xb3,0x40,0x0c,},\"\\x97\\xcd\\x61\\x9a\\x22\\x51\\xed\\xa9\\x16\\x64\\x64\\x31\\xd4\\xcd\\x15\\x98\\xc2\\xd4\\x4d\\x06\\xaf\\x3e\\x48\\xbd\\x18\\xe3\\xde\\x7f\\xb4\\xbd\\x4f\\x78\\xe0\\x0a\\x69\\xee\\xab\\xde\\x3f\\x82\\x06\\x5c\\xfe\\xe6\\xcd\\x71\\x1f\\x07\\xd2\\x26\\x37\\x16\\x1f\\xf6\\x85\\xf6\\x5a\\x7d\\xdf\\x54\\x55\\x31\\x97\\xfd\\x31\\xc5\\xc6\\xb7\\x1d\\x9e\\x36\\x5a\\x94\\x1d\\xce\\x4c\\x3e\\x22\\x5d\\x19\\xcc\\x63\\x3a\\x7e\\x12\\x86\\x2c\\xd2\\x3e\\xbb\\x7c\\x74\\xa7\\x04\\x85\\x0f\\x76\\x1a\\xc0\\x24\\x1b\\xe5\\x17\\xce\\x7c\\x36\\x09\\x36\\xce\\x07\\x25\\x0d\\x9f\\x2e\\xb2\\x78\\x71\\x15\\xee\\xc3\\x77\\xe1\\x13\\x4d\\xc0\\x8f\\x44\\xeb\\x0a\\x2a\\x2a\\x27\\x16\\xf0\\x01\\x44\\xa4\\x9f\\x01\\x2a\\x57\\xb3\\xcd\\x06\\xef\\xeb\\x3f\\xae\\x92\\x0f\\x28\\x5c\\xff\\xd9\\xa4\\x01\\xa0\\xb9\\x86\\x59\\x4e\\x17\\xb2\\xc9\\xc8\\xfd\\xab\\x83\\x5d\\x9f\\x3f\\x5d\\x47\\x4b\\xe7\\x33\\xc1\\x92\\x5e\\xe6\\xf0\\x93\\x86\\x71\\x10\\x66\\xc3\\xfc\\xd6\\x45\\xee\\xb0\\xfb\\xe7\\x05\\x41\\x69\\xeb\\x70\\x9d\\x4a\\x3f\\x0d\\x16\\xf2\\x8a\\x1f\\xf5\\x06\\x6c\\x84\\x2b\\xc6\\x3e\\x35\\x9e\\x92\\x48\\x5b\\x38\\x75\\x7f\\xf4\\x6c\\x27\\xf7\\x9d\\x0c\\xdc\\xf0\\xe1\\x6e\\x97\\xe3\\xc7\\xb7\\xe2\\x17\\x8d\\xff\\xd2\\x70\\x28\\x2d\\xd6\\x12\\x05\\xd5\\x85\\x4d\\x84\\x1f\\x0e\\x3f\\xc0\\xe4\\x82\\xcc\\x1e\\xe4\\x85\\x52\\xcf\\xe6\\x58\\x93\\x5b\\x54\\x27\\xc3\\x66\\x23\\x0a\\xef\\x79\\xae\\xf4\\x02\\x1d\\x6f\\xab\\x5f\\x18\\x75\\xcc\\x84\\x9e\\x32\\x1a\\x75\\x50\\x0e\\x9e\\x1b\\xa5\\xdd\\x59\\x6b\\x43\\x8c\\xf8\\x8b\\x23\\x5b\\x01\\xa6\\x76\\x25\\xc4\\xbf\\x84\\xd0\\x72\\x4a\\xe6\\x88\\x0a\\x37\\x85\\xe3\\x3b\\xd9\\x23\\x5f\\xd0\\xf5\\x98\\x18\\x04\\xd2\\x1c\\xbd\\x63\\x3c\\xb1\\x80\\xf3\\x44\\x56\\x46\\x02\\x07\\xa2\\x90\\xa2\\x54\\xd9\\xfe\\x61\\x06\\x3d\\x40\\x63\\x4c\\xa3\\x87\\x2f\\x09\\x35\\xfa\\x28\\x32\\x87\\x95\\xca\\x41\\xb0\\x06\\xa2\\x11\\x1f\\xc5\\x93\\x2b\\x1e\\x77\\x9c\\xe9\\x66\\xcc\\x47\\xad\\xb7\\xc0\\xdd\\x98\\x73\\x33\\xba\\x75\\x29\\xa1\\xa4\\x99\\x6c\\xe9\\xf5\\x6e\\x05\\x19\\x81\\xfe\\x1f\\x55\\x3e\\x57\\x8f\\x43\\xc3\\xba\\x94\\xbe\\xac\\xc9\\x3c\\x3e\\x73\\x96\\x67\\xc7\\xa7\\xc6\\xfa\\x27\\xe1\\xe0\\x81\\x69\\x5d\\x20\\xba\\x70\\x5c\\x3f\\x10\\xb2\\x0d\\xf5\\x30\\xcb\\xb0\\xec\\xb8\\x74\\x56\\x50\\x11\\x09\\x68\\x70\\x19\\x31\\x84\\x52\\x78\\x5d\\x38\\xe7\\x66\\xb3\\xcd\\x35\\xb0\\x07\\xd7\\xe3\\xcf\\xe0\\xb2\\xcc\\xa8\\xaa\\x6e\\xf7\\x39\\x55\\x99\\xdc\\xb9\\xc4\\xd2\\x8b\\xcc\\x35\\xc7\\x6d\\xfc\\x35\\x34\\x3c\\xb1\\x34\\x8b\\xa3\\xe9\\x62\\xf1\\x0e\\xe8\\x6f\\x86\\xf5\\xb6\\xd4\\xca\\xe2\\xe8\\xc2\\xb1\\x85\\xe3\\xea\\xa1\\xae\\xb8\\x7b\\xcf\\xcf\\x2f\\xb7\\x6c\\xc7\\xfc\\xc6\\x89\\x50\\x71\\xb1\\x68\\xe8\\xb7\\xf6\\xca\\xa0\\xfd\\x63\\x98\\xe7\\x78\\xcc\\x07\\x91\\x2f\\xf5\\xd6\\xe6\\x10\\x21\\xa8\\xa5\\x9a\\xe0\\x35\\x21\\x60\\xf5\\x6d\\x54\\x88\\xfe\\x2f\\x2a\\xcc\\x94\\x03\\xda\\x9a\\x9f\\xfc\\x66\\x1c\\x1e\\x9d\\xc5\\xbe\\x88\\xc4\\x20\\xdb\\x0f\\xd7\\x7d\\x84\\x5d\\xc8\\xdd\\x9d\\x8e\\x58\\xf9\\x96\\x1b\\x79\\xaf\\xc6\\x86\\x24\\xba\\xa8\\x6a\\xa6\\x43\\xa8\\xa3\\xc7\\xed\\xf7\\x1d\\x55\\x3c\\xc0\\xd3\\x22\\x4a\\x60\\x69\\xec\\x67\\x4f\\x52\\xda\\x29\\xa1\\xcb\\x60\\xc4\\x19\\x23\\x01\\xa2\\x43\\x47\\xa8\\xaa\\x83\\x26\\x26\\x9e\\x0a\\x14\\x78\\x0c\\x95\\x83\\xcd\\xff\\x51\\x59\\x27\\xfd\\x5b\\xef\\x52\\x8f\\x9d\\x23\\x78\\x7a\\xeb\\x80\\x3d\\x70\\xeb\\x91\\x6b\"},\n{{0x59,0xd5,0x01,0x39,0x3d,0xc5,0x99,0x97,0x23,0x81,0x07,0x06,0xfa,0xd7,0xd6,0xef,0xd1,0x63,0xc4,0x47,0x10,0xc7,0x41,0xc1,0x85,0xc2,0x7e,0x04,0x25,0xe3,0xc0,0x5b,},{0x82,0x65,0xd4,0x3c,0xfb,0x07,0x35,0xb5,0xd7,0x25,0x0f,0xcf,0x0f,0xcb,0xd1,0x54,0xbf,0xc0,0xee,0xcb,0x13,0xb7,0xad,0x93,0xb6,0xb0,0x29,0x40,0x58,0x8b,0x84,0x3b,},{0xe6,0x46,0xf1,0x64,0xcf,0xed,0x8c,0x2e,0x06,0x07,0x10,0xdc,0xfb,0xc3,0xe9,0xfa,0x5e,0xb3,0x96,0x37,0x68,0x13,0x19,0x01,0x84,0xe3,0x46,0xf5,0x2b,0xb0,0xba,0x57,0x46,0xcc,0xb6,0xb5,0x95,0x22,0xb1,0xaf,0xf9,0x83,0x0f,0x2f,0x98,0xb9,0xe5,0xda,0xfc,0xd8,0x32,0x07,0x78,0x83,0xc4,0x4e,0x8a,0x35,0x38,0x8f,0x71,0x8b,0xf4,0x0c,},\"\\x56\\x4e\\xd2\\x2c\\x17\\x2f\\x5c\\x3a\\xfb\\xb0\\xb9\\x5a\\xd2\\xfc\\x64\\xe4\\xbe\\x6d\\x4d\\xb1\\xeb\\xb8\\xd3\\x99\\xc4\\x3a\\x5e\\x16\\x04\\x8e\\x7f\\x87\\x32\\x18\\x1e\\x5d\\x0e\\xed\\x8e\\x63\\x8e\\xf2\\xa5\\x5a\\xa0\\xd7\\xb6\\x81\\xfe\\x02\\xbb\\x54\\x23\\xaf\\x94\\xbd\\x35\\x2d\\x3c\\x2d\\xde\\xc0\\xf8\\x47\\x60\\xa4\\x11\\x2b\\x4f\\xe0\\x17\\xcf\\xbc\\x50\\x2f\\x95\\x43\\xcf\\xa4\\x1f\\xb2\\xaa\\xe7\\x5a\\x3a\\x08\\x1f\\x8c\\x49\\x90\\x33\\xd1\\xfa\\xe5\\xd9\\xc5\\x0c\\xb4\\x4d\\xbc\\x63\\x60\\x5a\\x54\\x39\\x8f\\xbf\\x07\\x98\\x52\\xeb\\xa8\\x6f\\x2f\\xdf\\xc2\\x72\\xd0\\xc4\\x17\\x9d\\x7c\\x13\\xcb\\xc1\\xc2\\xa3\\xda\\x0b\\x82\\x84\\x5c\\xf1\\xa4\\x6e\\xbb\\xe3\\x1e\\x79\\xb6\\x00\\x97\\x33\\xc7\\xbf\\xe7\\xaa\\x4f\\x9f\\xfd\\x71\\x9c\\x77\\xdc\\x7d\\x74\\x8e\\x49\\x2e\\x14\\xee\\x5e\\x41\\x79\\xbf\\xa9\\xe6\\x49\\xcf\\x0d\\x89\\x53\\x41\\x86\\x38\\x5e\\xe9\\x94\\x10\\x05\\x1d\\x66\\x56\\xe6\\x23\\x43\\x8c\\xc7\\xb2\\xe7\\x07\\xe4\\x8c\\x84\\x91\\x55\\x49\\xae\\x8d\\x67\\xa3\\x06\\xc6\\x7b\\x10\\x6b\\x7a\\x25\\xf4\\x5f\\x8e\\x10\\xdd\\x7d\\xd3\\xea\\xac\\x31\\xf1\\x05\\x22\\x57\\xeb\\x6a\\x75\\x76\\xb6\\x85\\xcb\\x9e\\x6c\\x1c\\xd0\\xd7\\x3c\\x7a\\x3c\\xed\\x5a\\x8d\\xd2\\x73\\x08\\xae\\x00\\xf9\\x5e\\xab\\xda\\xe9\\xd1\\xc4\\xaa\\x89\\x34\\xe2\\x42\\x4c\\x93\\x28\\xa5\\x22\\x8f\\x4f\\x82\\xdd\\x4a\\x66\\x55\\x6d\\x82\\x17\\xc5\\xa2\\x2b\\x2b\\xeb\\x86\\xa2\\xa4\\x34\\x13\\xee\\x5e\\x10\\xf8\\x83\\xf2\\xcd\\x6c\\x2e\\x87\\x49\\xb5\\x50\\x88\\x42\\xec\\xae\\x5f\\xfc\\xcb\\x79\\x6d\\x96\\x33\\xe8\\x7e\\xf4\\xa9\\x6c\\x0d\\xf7\\xef\\x47\\xb2\\x83\\xd0\\x96\\x72\\x3b\\xa3\\x13\\x5b\\xad\\x75\\xb2\\xe1\\x9e\\xc0\\x4f\\x70\\xa4\\x78\\x42\\x8a\\xd5\\xd0\\xaa\\xc0\\xdd\\x2a\\xb9\\x90\\x59\\x13\\xe7\\xe5\\xad\\xe4\\x08\\x80\\x1d\\x5d\\x3c\\x54\\xd9\\xcf\\x7b\\x8f\\x0f\\x0c\\x5e\\xb0\\x54\\xc1\\x47\\x5c\\xc2\\x10\\xa2\\xc7\\x98\\xd8\\xbd\\x89\\x93\\x2f\\xf9\\xf3\\x60\\x42\\x18\\x58\\x05\\x3a\\x70\\x7b\\x8b\\xbd\\x32\\x05\\x5c\\x44\\xb2\\x07\\x12\\xa2\\x67\\x8a\\x9a\\x6a\\xf9\\xe3\\x6d\\x04\\xdc\\xff\\x44\\xf4\\x31\\xcf\\x19\\x30\\xcd\\x18\\xfc\\x93\\x5d\\x22\\x67\\x77\\x5c\\x69\\x09\\x67\\x25\\xed\\x89\\xa2\\x91\\xdd\\x60\\xe2\\x1a\\xc0\\xb0\\x12\\x87\\x34\\x07\\x29\\x92\\x82\\x3e\\xf8\\x7b\\x5e\\xfa\\x6c\\xc5\\xb0\\x50\\x17\\x7f\\x55\\xf4\\xce\\xc9\\x2a\\x08\\xa6\\x5b\\xca\\xdc\\xab\\x9a\\x41\\xc3\\x60\\x86\\x37\\x0b\\x7b\\x9d\\xd6\\x29\\x8a\\xc7\\xb0\\xae\\x6a\\x09\\xc9\\x71\\x0a\\xbb\\x46\\x76\\xa8\\xfc\\x87\\xa3\\x65\\x12\\x90\\x14\\x4b\\x6b\\x30\\xef\\x4f\\x6f\\xbe\\x5b\\x9a\\xd2\\x52\\x37\\xfe\\x06\\x05\\xe3\\xb9\\xf1\\x8a\\x77\\x18\\xac\\x9f\\xca\\x6f\\x32\\x5e\\xa5\\x5f\\x49\\xa8\\x07\\xfb\\x80\\xa2\\x40\\x2a\\xe1\\x34\\x23\\x08\\x0d\\x32\\x77\\x58\\x64\\x90\\x23\\x79\\x8d\\x57\\x28\\xe0\\xdc\\x64\\xac\\x88\\xa6\\xe2\\x94\\x5d\\xbb\\x3e\\x3f\\xfa\\x9f\\xdb\\x4c\\x7b\\x58\\xfb\\xa3\\xf5\\xfb\\xd6\\x7c\\x68\\x6b\\x29\\x71\\xbb\\xd8\\xba\\x4d\\x27\\x5d\\x57\\x3e\\xb7\\x96\\xeb\\x91\\x46\\x77\\x5d\\x8c\\xdc\\xd5\\xfd\\x3e\\xb5\\xa8\\x8e\\xa5\\xa9\\x30\\xec\\x32\\x44\\xe6\\xa3\\x7c\\x81\\xf6\\xa2\\x55\\x4e\\x5b\\xa7\\x87\\xf0\\xe4\\x53\\x19\\xfe\\x4b\\x8a\\x2f\\xfb\\xfe\\xd5\\x07\\x70\\xe7\\x82\\x7b\\x3e\\x7b\\xc2\\xb4\\x4c\\xe5\\x12\\xae\\x60\\x51\\xb6\\xf9\\xf1\\x39\\x31\\xea\\x6a\\xcc\\x09\\x6b\\x8d\\xcb\\x01\\x96\\xbe\\x42\\x24\\x84\\xdb\\x5f\\xcb\\x29\\x9d\"},\n{{0x83,0x9f,0xb1,0x32,0xe6,0x92,0x50,0xca,0x1a,0xd9,0x45,0x10,0x08,0x7f,0x92,0xce,0x06,0x87,0x69,0x21,0x3a,0x19,0xb2,0xa6,0xc8,0x94,0x90,0xf1,0xf5,0x78,0x80,0x7a,},{0xeb,0x58,0x66,0x19,0xb4,0x4a,0x15,0x37,0x9a,0xcc,0x46,0x21,0xa2,0xac,0x71,0xea,0x58,0x97,0x00,0x26,0xc2,0x8e,0x24,0x09,0xfc,0x1b,0xa2,0xbd,0x8b,0x23,0x6d,0x1d,},{0x66,0x43,0x7b,0x6b,0xc0,0x5e,0x75,0xdd,0x16,0x26,0xc3,0xc4,0xff,0x1f,0x72,0xe6,0xdb,0x38,0x1b,0xa1,0x59,0x09,0x48,0xf8,0xf1,0x6a,0xd4,0xd6,0x6e,0x59,0x91,0x65,0x9a,0xa8,0x44,0x05,0x56,0x8c,0xfb,0xc0,0xa7,0x7c,0x02,0x5e,0x59,0xe4,0x3f,0xd5,0x3a,0xb9,0xff,0xab,0xba,0x7b,0x25,0x8f,0x78,0x79,0x62,0x39,0xf9,0x0d,0x45,0x01,},\"\\xc5\\x72\\x32\\xfe\\x32\\xf1\\x1e\\x89\\x4b\\x43\\x7d\\x40\\x45\\x62\\x07\\xcc\\x30\\x6d\\xb4\\x81\\x69\\xb2\\x0e\\x07\\x81\\x10\\x3a\\xff\\xe8\\x02\\xf5\\xaa\\xbe\\x85\\x82\\x95\\x2c\\xa8\\xe9\\x57\\x45\\xe9\\x94\\x0d\\x53\\x5e\\x00\\xff\\x65\\xab\\x3c\\x64\\xbe\\xd3\\xd1\\x17\\x3a\\x0f\\x3d\\x70\\xce\\x4e\\xbe\\x2b\\x50\\xd0\\x48\\xbb\\x47\\x16\\x4d\\x2a\\x2c\\xd9\\xd9\\x5a\\x10\\xcf\\x0d\\x07\\x3e\\xd1\\xc4\\x1b\\x3d\\xe3\\x33\\x52\\x8e\\xe3\\x29\\x68\\x22\\x3a\\x0d\\x84\\x7c\\xad\\xbb\\x5b\\x69\\xf3\\x82\\x16\\x4e\\x9a\\x28\\xd2\\x3e\\xc9\\xbd\\xe9\\xa8\\x28\\xe8\\x77\\x1c\\x9e\\xb4\\x92\\x20\\xaf\\x54\\x18\\x55\\x08\\xaa\\x07\\x3a\\x83\\x91\\x95\\xf1\\x03\\xbc\\x2f\\x32\\xfe\\x04\\xf9\\x51\\xca\\x45\\xbf\\xbf\\x30\\xd2\\xfb\\x81\\x14\\x05\\x6a\\x73\\x6a\\xdd\\xf2\\x7e\\xcd\\x9a\\xf0\\xf6\\xe5\\xe9\\x7e\\x57\\x73\\xc4\\xfa\\x90\\x22\\x68\\xc3\\x2a\\x15\\x14\\x10\\x95\\x5f\\x3c\\x76\\xaa\\xe2\\x55\\x54\\x9e\\x0f\\x03\\x3f\\x89\\xe1\\xa7\\x8f\\x26\\x5c\\xba\\xb6\\xbe\\xb7\\x51\\x6d\\x4b\\xad\\xc4\\x9c\\xda\\x45\\x88\\x31\\x62\\x25\\xb4\\xc8\\x5e\\xa9\\xfa\\x99\\xc7\\xd6\\x76\\x6e\\x94\\x90\\xc4\\x9d\\xe5\\x9d\\xa7\\x17\\xf6\\x67\\x65\\x35\\x30\\x07\\x1d\\xd2\\xf0\\xc5\\x3e\\x31\\xd8\\x76\\x81\\x56\\xfe\\xb0\\x8f\\xaf\\x00\\xdb\\x0a\\x04\\x53\\x3d\\xf9\\x79\\x57\\xa8\\x4a\\xa4\\x6a\\xeb\\x7e\\x36\\xc0\\xb0\\xbe\\x69\\x01\\x89\\x46\\xf1\\x53\\x8a\\x6a\\xea\\x71\\xdf\\x53\\x6f\\x14\\x42\\xc2\\x44\\x4a\\x43\\xa0\\x43\\xd0\\x46\\xab\\xde\\x1a\\x78\\x2b\\x0f\\x4f\\x5c\\x6a\\xa7\\x20\\xaa\\x60\\xaf\\xed\\x94\\x7c\\x0c\\xee\\x47\\x7d\\xbe\\xc0\\x05\\x57\\xb3\\x72\\x12\\xd9\\x33\\x57\\xca\\x2b\\x6b\\x6f\\x82\\x71\\x5b\\xa0\\xe4\\x84\\xf6\\xda\\xf2\\xd0\\xb7\\xa9\\x8c\\x03\\x35\\x19\\xce\\x38\\x26\\x35\\x86\\x79\\x6d\\x5d\\x31\\xcb\\x2b\\xc3\\xd1\\x12\\x5b\\xc0\\xcc\\xd3\\x29\\xa5\\xc2\\x1f\\xd2\\x7a\\x21\\x8d\\xed\\x60\\x7a\\x0e\\x75\\x15\\xb5\\x71\\xf1\\x92\\xc3\\x3f\\x5f\\xba\\x51\\x4a\\xfe\\x4d\\x45\\x81\\x00\\xf3\\xcc\\xba\\x3f\\x38\\xeb\\x43\\x0b\\x4f\\xc8\\x8f\\xae\\xf9\\x99\\xfa\\x71\\xee\\xe4\\x88\\x22\\x89\\x03\\xbe\\x29\\xf2\\x4d\\xf8\\x1d\\xc9\\x11\\x04\\x4e\\x92\\x4c\\xda\\xa0\\x17\\xcc\\x7d\\x87\\xe5\\x6a\\x6c\\xba\\x87\\x60\\x85\\x9b\\xd6\\x3d\\xd2\\xd4\\xf5\\x81\\xb9\\x55\\xec\\x92\\x4a\\x49\\xaf\\xb4\\x7c\\xa0\\xd6\\x3e\\x78\\x26\\xfd\\xc7\\x12\\xb4\\x94\\x3b\\x73\\x9e\\x18\\x57\\x75\\x5a\\x33\\xc6\\x50\\x36\\x75\\xfd\\xde\\xae\\x06\\x27\\x06\\xe3\\x4f\\x74\\x4f\\xd9\\x32\\x64\\x8a\\x56\\x08\\xce\\x60\\x8a\\x61\\x99\\x57\\x83\\xf3\\x33\\x9c\\xa3\\xfe\\x10\\x7e\\x19\\x72\\x74\\x4b\\xf6\\xd4\\xed\\xaf\\xbf\\x47\\xce\\x02\\x1e\\x05\\x82\\x1f\\xb1\\x24\\xc7\\x08\\x39\\x30\\xe6\\x8e\\x6f\\x5c\\x32\\xd2\\xd9\\xfc\\x4a\\x88\\x4c\\x0b\\xc8\\x84\\x04\\xe4\\xcf\\xe3\\xc1\\xa2\\x42\\x0d\\x41\\x82\\x3a\\x38\\x5f\\xb3\\x28\\x8d\\xb6\\x5c\\x89\\x54\\x5f\\x6e\\x73\\xf0\\xd8\\x00\\x4b\\x2b\\xa1\\x2a\\x4e\\x07\\x72\\x75\\x23\\xef\\x08\\x56\\x70\\xda\\xff\\xaf\\x41\\xc2\\x8a\\x4c\\x11\\x57\\xbd\\xd2\\x45\\xe6\\x87\\x50\\xdd\\x20\\x0e\\x02\\x3a\\xf9\\x0c\\x67\\x56\\x1e\\x0f\\xe4\\xba\\x34\\x0c\\x43\\x3f\\x75\\x5e\\xef\\xab\\xd4\\xb0\\x39\\xbf\\xc3\\x23\\xdc\\x11\\xad\\xb7\\x5a\\xec\\xc4\\x48\\xa8\\x69\\xc7\\xf2\\xa5\\x8b\\x9d\\x86\\x17\\xc6\\x4b\\x8f\\x89\\xfc\\x58\\x3f\\x8c\\x94\\x8e\\x2d\\xf0\\x25\\x1a\\x6c\\x7d\\x8c\\x73\\x8c\\x3b\\x5a\\x42\\xb7\\x49\\xad\\x5e\\x8e\\x98\\x6b\\xd8\"},\n{{0xad,0xc1,0xe5,0x6c,0x3a,0xc9,0x4e,0x6c,0xda,0x04,0x11,0xcb,0xc3,0xce,0x2a,0xf1,0x28,0xd1,0x85,0xa2,0xa2,0x73,0xbd,0xb2,0xaf,0x8d,0x7e,0x50,0xfb,0x96,0xb5,0x26,},{0x5d,0xcf,0xec,0x1f,0x91,0x12,0x75,0x15,0x64,0xec,0xb6,0x07,0x15,0xeb,0xb2,0xc5,0x17,0xb5,0xec,0x37,0xb2,0x53,0x4f,0xd6,0x32,0x99,0x24,0x42,0x9b,0x7f,0xd5,0xc5,},{0xf0,0x2e,0x5d,0xbc,0xb6,0x87,0x04,0xaf,0xad,0x03,0xac,0xa8,0x10,0x61,0xdb,0xdb,0x99,0x85,0x70,0x04,0x9f,0x10,0xce,0x65,0x0e,0xc7,0xa2,0xef,0xf1,0x5c,0x79,0x3d,0xdf,0x5a,0x27,0x2c,0xb6,0x83,0xc2,0x2c,0x87,0x25,0x7c,0x59,0xbd,0xef,0x39,0xef,0xea,0x79,0xbd,0x67,0x95,0x56,0xea,0x15,0x05,0xed,0x00,0x36,0xcb,0x46,0x04,0x0c,},\"\\xd4\\xf9\\x59\\x47\\x4e\\x0b\\x89\\xe2\\xdc\\xd0\\x20\\x66\\x98\\x4f\\x88\\xd7\\x39\\xdd\\x11\\x34\\xa3\\x33\\x09\\xf0\\xa8\\xb7\\x80\\x2e\\xaf\\x01\\x33\\x03\\xc1\\x35\\x15\\xdf\\xeb\\x46\\x1e\\xa3\\xd2\\x48\\xe9\\x98\\xb9\\xa4\\xe5\\x4d\\xae\\x5b\\x00\\x19\\x0a\\x45\\xe7\\x0d\\xc6\\x7e\\x98\\xf3\\xd4\\xcf\\x90\\x6c\\x21\\x4d\\x4f\\x63\\x6d\\x29\\x52\\x92\\x5e\\x22\\xb1\\xa8\\x6a\\x1a\\xab\\xb3\\xa8\\x92\\xa9\\xf8\\xed\\x45\\x4f\\x39\\xc6\\x3d\\x35\\xb7\\x1e\\x87\\xa2\\xda\\x55\\xa8\\xe1\\x67\\xac\\x83\\xa8\\x66\\xad\\x16\\x7a\\x17\\xae\\xd1\\x83\\xc0\\x85\\x18\\xc1\\x5e\\x6b\\xe3\\x48\\x58\\xb4\\xce\\xe2\\xb8\\x42\\x73\\x14\\x76\\x0f\\xff\\xdd\\xd5\\x92\\x38\\x54\\xb1\\x74\\x7f\\x79\\x6e\\x1a\\x52\\x49\\xfb\\x30\\x44\\x89\\x4e\\xd6\\x46\\x82\\x9f\\x65\\x43\\x16\\xee\\x52\\xf4\\x01\\x0c\\x8d\\xd3\\x21\\xfa\\x1d\\xec\\x39\\x7e\\x50\\x14\\x5e\\xd9\\xe3\\x16\\x86\\xfd\\x52\\x03\\xf7\\x23\\x3b\\x8d\\xa7\\x80\\xac\\xaa\\x91\\xee\\x0b\\x5b\\x47\\x20\\x78\\x66\\xaa\\xd8\\x5f\\x83\\x7e\\x03\\xb4\\xe6\\xf6\\xde\\x8c\\x04\\xac\\xaf\\xd7\\x07\\xbd\\xc1\\xdd\\x45\\x50\\x0a\\xb5\\x64\\x80\\x1b\\xee\\x9a\\x58\\xec\\xe3\\x60\\xd0\\x04\\x82\\x8b\\xaa\\xf5\\x23\\xe2\\xf5\\xab\\x69\\x32\\x6a\\x03\\xaa\\xbe\\x01\\x08\\x78\\xfd\\x43\\xff\\xaa\\x56\\x87\\x22\\x44\\xd7\\x68\\x1f\\x16\\x18\\xe6\\x23\\xe3\\xd4\\x74\\xc7\\x3a\\xf8\\xb0\\x80\\xa6\\x18\\x21\\xa5\\x74\\xef\\x2f\\xd7\\x52\\xd2\\x3b\\x60\\x5e\\xc5\\x21\\xc1\\x9c\\x15\\x50\\xde\\x98\\x0c\\x09\\x4d\\x05\\xe0\\x23\\x8f\\x3e\\x00\\x8e\\x6b\\x19\\x5a\\xbf\\xdd\\x40\\x28\\xee\\x1e\\xe1\\xd6\\xc6\\x6a\\x76\\xf1\\x78\\xf0\\xb4\\x31\\xe4\\xaf\\x44\\xdd\\xcc\\xfc\\x52\\x90\\xed\\xff\\x36\\xec\\xe6\\x3e\\x83\\x85\\x56\\x70\\x13\\xf4\\x3a\\x2a\\xeb\\xb6\\x7e\\x3e\\xf4\\x06\\x30\\x8c\\x20\\x48\\x8a\\x76\\xd5\\x8a\\x21\\x4f\\x31\\x39\\xd9\\x83\\xb1\\x9a\\xfb\\x12\\xe3\\x28\\x36\\x07\\xfd\\x75\\x10\\x7b\\xd3\\x1f\\xeb\\x62\\x56\\x17\\x4b\\x7a\\x18\\xae\\xca\\xc9\\xf8\\x56\\x25\\x82\\x01\\x8b\\x0e\\x6d\\xe4\\x05\\x35\\xe3\\x5b\\xef\\x2b\\x56\\x25\\x53\\x88\\x51\\x29\\x39\\x75\\x62\\x90\\x0d\\x34\\x17\\xf9\\x8c\\xdd\\x1e\\x29\\xd7\\x31\\xff\\x48\\x93\\x3f\\x29\\x52\\x95\\x81\\x63\\xba\\x67\\xd5\\x95\\x61\\x81\\x1b\\x83\\x77\\x2b\\xd0\\x57\\x10\\xb6\\xe3\\xcc\\x04\\x34\\x60\\x99\\x37\\x50\\x72\\x23\\xab\\xb7\\x1a\\x6a\\x8c\\x83\\x8f\\xec\\xdb\\x1d\\x2d\\x37\\xc9\\x5d\\xc8\\x06\\xf6\\x5f\\x3f\\x96\\x63\\xd9\\x9f\\x06\\xe6\\xc0\\xf3\\xc3\\x2e\\x95\\xaf\\x1d\\xd7\\x08\\xe8\\x11\\x08\\x63\\x6a\\x26\\xb9\\x68\\xe9\\x83\\x39\\xc7\\x41\\x28\\xb6\\xcf\\x67\\x13\\x35\\x88\\x4a\\xc7\\x2f\\x75\\xb6\\x37\\x19\\x5e\\xa9\\xec\\xa0\\x53\\x60\\x89\\x96\\xc3\\x2e\\xd4\\x45\\x41\\x0f\\x67\\xfa\\x10\\x4b\\x39\\xf0\\xfd\\xf3\\xc9\\xb5\\xc6\\x15\\x7b\\x76\\x80\\x37\\x56\\xb2\\x7f\\x4c\\x3b\\xa1\\xb4\\x7f\\x32\\x85\\x76\\x24\\x8e\\x9b\\xc5\\x3e\\x7b\\x8a\\xb0\\xb2\\xed\\x97\\xc2\\xf9\\x99\\x8b\\xcc\\x7d\\xfe\\x39\\xe2\\x64\\xaa\\xd3\\x0c\\x6c\\xfe\\xf2\\xb5\\x55\\x3f\\xfb\\x5a\\x69\\x9a\\xa4\\xbd\\x0e\\xab\\xe4\\x38\\xce\\x05\\x22\\xcc\\x91\\xfe\\x4e\\x72\\xbf\\x7e\\xac\\xba\\x47\\x71\\xcc\\xf6\\x3a\\x37\\xaa\\xfc\\xad\\xbf\\xbf\\x99\\xdd\\x76\\xb8\\x5b\\x80\\xee\\x07\\x5d\\x3a\\x7d\\x1a\\x90\\xa5\\x5b\\x77\\x29\\xa5\\x41\\x6e\\x5b\\xe6\\x96\\xbf\\x9f\\xb7\\xf3\\x15\\x8c\\xfd\\xb5\\xcf\\xda\\xcd\\xde\\x81\\x72\\xee\\x1a\\xb9\\x48\\x6e\\x24\\xcc\\xea\\xd2\\x9b\\x45\\x7a\\xcf\\x43\"},\n{{0xdb,0x89,0xdf,0x6a,0x23,0xd8,0x90,0xb7,0xf0,0x02,0x60,0xe8,0x1f,0x4a,0xd9,0x8f,0xd0,0x94,0x40,0x36,0x51,0x31,0xe8,0x5e,0x22,0xc7,0x95,0x1a,0x18,0x7b,0x02,0x18,},{0xc9,0x67,0x63,0x67,0x2e,0xe4,0xa2,0xcc,0x5a,0x93,0xb6,0xa6,0x83,0xdf,0x9b,0x5d,0xe4,0xd9,0x38,0x6a,0x79,0x08,0x35,0x68,0x1d,0x12,0x17,0xd1,0x92,0x96,0xbd,0xc8,},{0x80,0xb7,0xfc,0x8b,0x6a,0xe6,0xee,0xce,0x81,0x66,0xb7,0xea,0x53,0x4c,0xb5,0xb2,0x14,0xc9,0xea,0x99,0x73,0x92,0x1e,0xd0,0x5d,0xe4,0x0c,0x78,0xe1,0x4f,0x16,0x2b,0x09,0xe9,0x78,0xca,0x6d,0x86,0xee,0x43,0x4d,0x98,0x4b,0x8b,0x00,0x70,0x40,0x9d,0xd2,0xad,0x11,0xb5,0x31,0x78,0xe2,0x39,0xda,0xb5,0xbc,0x39,0xc7,0xba,0x46,0x0d,},\"\\x54\\xc1\\xc5\\x11\\x1e\\x08\\xc9\\x82\\x45\\xba\\x4f\\x13\\x18\\xba\\x1d\\xb1\\xdc\\xc7\\x4d\\x14\\xa5\\xc9\\x8a\\xb9\\x68\\x9c\\xba\\x1c\\x80\\x2c\\x68\\xbc\\xfc\\x81\\xfd\\x87\\xff\\xc6\\x1c\\xaa\\x94\\x2f\\x66\\xd7\\xe5\\x15\\x7f\\x65\\x53\\x8c\\x7e\\x7b\\x33\\x17\\x04\\x84\\xb4\\xb6\\x54\\x3f\\x36\\x20\\xff\\x29\\x63\\x8b\\x64\\xd4\\xda\\xe7\\xb0\\x22\\x21\\xcf\\x77\\x83\\xf1\\x87\\xec\\x42\\x31\\xe6\\xb6\\x94\\x6d\\x82\\x76\\x20\\x74\\xf0\\x9c\\x32\\x78\\x1c\\x2f\\x38\\x46\\xde\\x3e\\x82\\x17\\xf6\\xe1\\xb6\\xe0\\xd2\\xb5\\x59\\x5d\\x74\\x2e\\x2c\\x4e\\x32\\x5a\\x28\\x41\\x92\\x40\\x44\\xdf\\xcf\\x12\\xb4\\x79\\xeb\\x69\\xf1\\xbb\\xd4\\x0e\\xab\\xdd\\xd1\\xff\\x54\\xa9\\x18\\x4d\\x36\\x6d\\xff\\x9d\\x8f\\x2d\\x86\\x3e\\x37\\x8a\\x41\\xf1\\x0c\\xd1\\xda\\xe9\\x22\\xcd\\x7f\\xbb\\x2a\\x54\\x4e\\x47\\xea\\xbf\\x47\\xca\\x0a\\x38\\xab\\xba\\x34\\x45\\x49\\x19\\xbb\\x9a\\x4e\\xf0\\x44\\xbf\\xb9\\x7b\\x70\\x8c\\x2f\\x74\\x28\\xd6\\x8f\\x9c\\x57\\xc0\\xee\\x7e\\x79\\x25\\xf7\\xa2\\xb5\\xc6\\xe7\\xdf\\x82\\xbb\\x26\\x80\\xc8\\x62\\xdc\\x7c\\xc6\\x8b\\x0f\\x54\\x53\\x0e\\x64\\xaf\\xe2\\x76\\x3d\\x9c\\x7b\\xaf\\x45\\xcc\\x6f\\xe6\\x12\\xd1\\xf7\\x82\\x77\\x39\\xc4\\x41\\x13\\x98\\x88\\x8f\\x73\\x67\\xc3\\xd4\\x37\\x79\\x07\\xac\\xc0\\x6a\\x06\\xf9\\x3f\\x88\\x72\\x26\\x79\\x8f\\x48\\xaa\\x54\\x64\\xf6\\x01\\xc2\\xc1\\xed\\xda\\x77\\xed\\xfe\\xb9\\xb9\\xb5\\xd5\\xf9\\xcb\\x6f\\xed\\x37\\x90\\x05\\x47\\x47\\x7f\\xca\\x1d\\x09\\xab\\x52\\xd6\\x3e\\x49\\x1f\\xeb\\x12\\xfd\\x6d\\xc8\\x05\\xa7\\x8c\\xee\\x3b\\xaa\\xde\\x43\\x52\\x98\\x20\\x61\\xde\\xa5\\xa2\\x65\\x3d\\xb8\\xe7\\x60\\x77\\x72\\xe8\\x34\\xb3\\xa5\\x05\\xc1\\x6d\\xd6\\xe7\\xc7\\x1b\\x91\\x1e\\x84\\x2e\\xba\\x92\\x5d\\x77\\xa3\\x3c\\x5c\\x57\\xce\\x11\\x84\\x09\\x80\\x78\\xca\\x2e\\x6a\\x3f\\x69\\xaa\\x6a\\x14\\x63\\x9d\\xc9\\x7b\\x4b\\x30\\xc9\\x9d\\xc4\\xfa\\x3e\\x2c\\xf6\\x3c\\x70\\x1c\\x30\\x6c\\x5e\\x25\\x3c\\x51\\x13\\x85\\x4c\\x18\\x5e\\xbc\\x8b\\x47\\x98\\xf6\\x8d\\x1f\\xd7\\x80\\x05\\x4d\\x3e\\xed\\x2f\\x39\\x4c\\x45\\x43\\x04\\x96\\x6b\\xdd\\xbd\\x12\\x28\\x08\\x34\\xec\\x9b\\x40\\xc1\\xe9\\x8b\\xc2\\xd9\\x8f\\x48\\x45\\xf6\\xeb\\x44\\xf2\\x53\\x15\\xee\\xdb\\x3b\\x79\\xff\\xca\\x41\\x80\\xc1\\xbd\\xdd\\x97\\xd0\\xc9\\xaf\\xfb\\xac\\x58\\x81\\x49\\x37\\x68\\x26\\x80\\x07\\x6f\\xe5\\xa3\\xba\\xbb\\x65\\xd2\\x8f\\x25\\x17\\x03\\x6c\\x0c\\xfb\\x42\\xf0\\x29\\x3e\\xb2\\xac\\xb1\\x39\\x49\\xfe\\x91\\xe0\\xad\\x06\\x78\\xaa\\x24\\x3d\\x77\\x34\\xa8\\x9d\\x99\\x78\\x70\\xbf\\x9a\\x6a\\x58\\x4e\\xd6\\xe6\\x28\\x16\\x3e\\x39\\xd8\\xaa\\x61\\x0d\\x46\\xb9\\x28\\x5b\\x9e\\x1d\\xd7\\xe8\\xf8\\x07\\xfd\\xf5\\xca\\x2b\\xbf\\x6d\\xe5\\xe5\\xe6\\x8a\\xf7\\xcb\\x7e\\xbd\\x43\\xec\\xce\\x22\\x7c\\xd7\\x0c\\x7b\\xf4\\xee\\x14\\x33\\xed\\xfc\\xfe\\x88\\x66\\x14\\x67\\x0c\\xdd\\x19\\x63\\x43\\xfb\\x91\\xe1\\x54\\x16\\xd2\\xf6\\xac\\xba\\xe3\\xea\\xdc\\x03\\x02\\x31\\xee\\x9d\\x2e\\xcc\\x52\\xa8\\x8c\\xe8\\xdc\\x7d\\x09\\x8e\\x7f\\xac\\x77\\x68\\x5b\\x4e\\xb5\\x40\\xe3\\x01\\x93\\x07\\x14\\x32\\x21\\xb8\\xef\\x77\\xf3\\x63\\x2c\\x89\\x3d\\x55\\x6e\\x0b\\xb7\\x43\\xa1\\x96\\x3e\\xc1\\x58\\x86\\xc8\\x54\\x5e\\x87\\xc9\\x5c\\xc8\\x25\\xf2\\x00\\xd0\\xf3\\xcf\\x4f\\x55\\xa3\\xd6\\x60\\xa5\\x36\\xa2\\x3a\\xef\\xcc\\x42\\x8a\\x43\\x20\\x34\\x85\\xee\\x84\\x34\\x2f\\x5c\\x00\\x1e\\xe8\\x40\\x4e\\x75\\x90\\x17\\x00\\x62\\x82\\xab\\x8b\\xa8\\x90\\x3e\"},\n{{0x00,0xe6,0xbb,0x17,0xaf,0x3c,0x2d,0xf6,0x52,0xb3,0x4f,0x9a,0xbe,0x19,0xf9,0x90,0x19,0x07,0x42,0x33,0x68,0x6c,0x71,0x14,0xe3,0xa0,0xed,0xf0,0x83,0x09,0x93,0x4f,},{0x7b,0x82,0x32,0xa6,0x6c,0xec,0x2f,0x91,0x5a,0xaa,0x79,0x51,0xd2,0x9d,0x2b,0x9e,0xe9,0x3d,0x32,0x1d,0x15,0xb2,0x03,0xc5,0x1e,0x61,0xe8,0xce,0x83,0xd1,0x87,0xf8,},{0x04,0xb3,0xb8,0x50,0x1e,0x39,0x6c,0x4a,0x78,0x8e,0x14,0xac,0x49,0xf6,0x17,0x4c,0xdb,0x5c,0x85,0x5e,0x65,0x12,0x03,0xcf,0x68,0xd1,0xef,0xa8,0x9a,0xa5,0x86,0x78,0xd4,0xd1,0xf3,0x03,0xa9,0x87,0x7a,0x37,0x86,0xd2,0x03,0xc3,0x55,0xb0,0x9d,0x52,0x86,0xc1,0xca,0x0d,0xf0,0x4a,0x89,0xaa,0x06,0xcc,0x3f,0x9d,0x0f,0xd3,0x05,0x04,},\"\\x06\\x32\\x81\\xe4\\x1e\\x8b\\xa9\\x70\\x3e\\xd0\\x9e\\xf3\\xbf\\x0e\\xa4\\x6e\\x4c\\xab\\xdd\\x6e\\xbd\\x76\\x9d\\x05\\xdc\\x04\\x5d\\x4f\\x99\\x0d\\x69\\xfc\\x55\\x41\\x30\\xa4\\xe6\\x1a\\xa2\\x1e\\x2d\\xe4\\xc9\\x2d\\xb4\\x8a\\x20\\xa3\\x7b\\x17\\x47\\xa7\\xea\\xc5\\xeb\\xb2\\x73\\x5a\\x89\\x38\\x19\\x7f\\x13\\x9f\\xad\\x14\\x97\\xb3\\x51\\xad\\x06\\x4c\\x0f\\x18\\xf8\\xfa\\xf1\\xfe\\x11\\xf6\\x39\\x79\\xa6\\x99\\x68\\xe2\\x4c\\xf9\\x1e\\x58\\xa3\\xab\\x03\\x26\\x69\\xe4\\xef\\xee\\x27\\x4f\\x96\\xb5\\x8b\\xe7\\xd9\\xe3\\x91\\xf3\\x6f\\xcf\\x07\\x09\\xb2\\xcb\\x2d\\x22\\x69\\x4a\\x6c\\xeb\\x17\\x24\\x69\\x45\\xeb\\xb3\\xbc\\x7f\\x0f\\x03\\xbf\\x0b\\x08\\xdc\\x96\\x26\\xe3\\xe7\\x15\\xc9\\x91\\x67\\x1d\\x53\\xeb\\xb9\\xae\\x83\\xa7\\xd0\\x8d\\x44\\xf6\\x36\\x35\\xc4\\x0f\\x8d\\x48\\x17\\xf5\\x8d\\xe9\\xeb\\x77\\xcb\\x25\\xb2\\xac\\xd6\\xde\\xf9\\x69\\xab\\x56\\x9e\\x97\\x4a\\x8a\\xda\\xc1\\x1a\\x86\\xb5\\x8f\\xe6\\xc1\\x00\\x67\\x49\\x9f\\xc9\\x14\\xdf\\xf5\\x69\\x02\\xcb\\xc3\\x93\\xa7\\x1c\\xc2\\x5e\\x8f\\x05\\xc0\\x3c\\x94\\xf1\\x3b\\x84\\xa2\\xb0\\x1a\\x58\\xc1\\x0d\\xbc\\xbb\\x60\\xeb\\xce\\xe4\\x87\\xf5\\x29\\x17\\x74\\x66\\x29\\x99\\x25\\xda\\x50\\xe2\\xda\\x5b\\x55\\x57\\xf0\\xae\\xee\\x3f\\xd7\\xf4\\x7b\\x5c\\x2e\\x3f\\x84\\xce\\xfa\\xb4\\x67\\x96\\x91\\x39\\x4d\\xd1\\x22\\x30\\x3b\\xb7\\x69\\xaf\\xb3\\xad\\xfe\\x83\\x58\\xb0\\x2b\\x67\\x92\\x73\\xb3\\x5a\\xbd\\xc6\\x40\\x25\\x76\\xcc\\xce\\x5e\\x10\\x44\\x2a\\x13\\x7e\\xf9\\x45\\x69\\x39\\xb2\\x89\\xef\\x4e\\x41\\x7b\\x1c\\xc6\\x23\\x9f\\x7c\\xee\\xdd\\x68\\xf1\\xa8\\x26\\x41\\x80\\xe0\\x68\\xb4\\x96\\x6f\\xd6\\x7f\\x2b\\xad\\x6e\\xdd\\x8b\\x4a\\x1e\\x8d\\x2b\\x54\\x2d\\xaf\\x26\\xdb\\x83\\x1f\\x1f\\xb5\\x1e\\xb8\\x6f\\xfa\\xde\\xcc\\xd9\\xac\\x3d\\x66\\x4f\\x34\\x6e\\x7d\\x04\\x6c\\x33\\xa5\\x72\\x84\\x1e\\xa8\\x33\\x4e\\x7f\\x2f\\x41\\x7a\\x05\\x71\\x2a\\x9e\\x33\\x4e\\x48\\x7f\\xd3\\xae\\x17\\x54\\x55\\x16\\x2f\\xe8\\xf4\\x9c\\xc0\\x26\\xa6\\x40\\xc6\\xcf\\x93\\xcf\\x58\\x87\\x50\\x52\\xf4\\x1c\\xc9\\x82\\x06\\x15\\x65\\x3e\\xa2\\xd0\\x84\\xc8\\x96\\xea\\xfe\\x5a\\xd4\\x72\\x55\\x79\\x65\\x30\\x84\\x99\\x4f\\x95\\x6d\\x5c\\x94\\x59\\x0a\\x24\\x09\\x58\\x1b\\x6f\\xc8\\x6e\\x40\\xaa\\x58\\xbf\\x6e\\x60\\x57\\xa6\\xf9\\x0a\\xf3\\xb8\\x7a\\xea\\xf3\\x29\\x94\\xa5\\x5a\\x54\\xf7\\x9b\\xdf\\x3d\\xbb\\xf5\\xce\\x0f\\xf8\\x12\\xe4\\x86\\xb0\\x54\\x5d\\x9e\\x9c\\x2b\\x0b\\xce\\x0d\\x4c\\x36\\x47\\xb1\\x82\\x72\\x62\\x49\\x88\\x34\\xe1\\x98\\xa3\\xec\\x70\\xf3\\xb0\\x3d\\x6a\\xad\\x2c\\x49\\xeb\\x80\\xb5\\xe2\\x05\\x14\\x39\\x22\\x5f\\xd9\\xce\\x94\\x68\\xd6\\x9a\\xf7\\x0a\\x26\\x2e\\xe3\\xb8\\xb6\\x2a\\x8e\\x5b\\x41\\x34\\x6d\\xa3\\x01\\x2f\\xfb\\x45\\x81\\x6b\\x7b\\xec\\xb0\\xe7\\x9a\\x60\\xbf\\xf7\\x16\\x36\\xa3\\xe4\\xbb\\x1b\\x35\\xca\\xf1\\x95\\xf5\\x51\\x17\\x28\\x0f\\x78\\x72\\x17\\xb3\\xca\\xa2\\xe7\\x93\\x72\\x6f\\xc5\\xa7\\x4d\\x11\\x60\\xdc\\xad\\x86\\x89\\x04\\xc1\\x97\\x38\\x11\\x34\\xed\\x8c\\x3d\\xb3\\x75\\x0b\\x75\\x56\\xf6\\x9c\\xcc\\xe1\\x8b\\x77\\x38\\x8b\\x58\\xc5\\xb8\\x11\\x3e\\x59\\x0a\\xd6\\xea\\xc5\\xb9\\x1e\\xce\\x5a\\x67\\x05\\x02\\x5c\\x80\\x35\\x3c\\xeb\\x1e\\xd8\\x4a\\xaa\\x1c\\xc4\\x8a\\x41\\x6b\\xc0\\x16\\xae\\xf1\\x73\\xbb\\x80\\xb2\\xba\\x28\\xc5\\x79\\x60\\xc6\\xb0\\x11\\xb6\\xb4\\x95\\xa3\\xf3\\x31\\x1e\\x79\\xfe\\x46\\xbd\\xb6\\xa4\\xc3\\x81\\xfb\\x9d\\xc4\\x62\\x8b\\x0a\\x83\\x02\\x35\\x58\\xf1\"},\n{{0xfb,0xdd,0xf6,0xe6,0x1e,0x20,0xd8,0x06,0xe5,0x59,0x17,0x75,0x6d,0xe6,0x0d,0x0c,0x9a,0x99,0x97,0x6f,0x64,0x67,0x16,0xff,0x2f,0xf1,0x31,0x2c,0x54,0xdd,0x97,0x1d,},{0xac,0x53,0x8f,0xab,0xad,0x43,0x80,0xe6,0x0e,0x97,0x71,0x26,0xe7,0x69,0x5e,0xed,0xa5,0x41,0x7d,0x85,0xf7,0xd2,0x3d,0xb2,0x1b,0xd0,0xad,0x11,0x11,0x16,0xf0,0x5d,},{0x8c,0x9b,0x77,0xaa,0x0f,0x1c,0xf5,0x2e,0x8f,0x7a,0x91,0x8b,0x21,0xb4,0x68,0xe6,0x23,0x35,0x91,0x1b,0xc5,0x93,0x06,0xb3,0x0c,0xe7,0x7b,0xf6,0x92,0xc1,0x10,0x59,0xb0,0xee,0x9c,0x5d,0xaa,0xf6,0x83,0x9b,0xb8,0x13,0x73,0xc6,0x1d,0x28,0xd0,0x72,0x70,0x2b,0x59,0x5e,0x4d,0xce,0x28,0xcb,0x99,0x38,0x22,0xb2,0x48,0x13,0x04,0x0b,},\"\\x3e\\x99\\x53\\xca\\x55\\xd0\\xcd\\x23\\x3b\\x98\\x83\\x3e\\xb1\\xbc\\x79\\xd3\\xb5\\x5f\\x18\\xc8\\xfa\\x1c\\x42\\x02\\x7b\\xca\\x25\\x57\\x91\\x53\\xb5\\x5d\\xa0\\xc5\\xa1\\x78\\xb8\\x38\\x69\\x56\\xd9\\xa5\\x41\\x83\\xb2\\x4c\\x91\\xdc\\x4b\\xe9\\x94\\x84\\x72\\x37\\xd3\\x66\\x6a\\x0a\\x01\\x30\\xfe\\x19\\x92\\x4b\\xc0\\xee\\x50\\x89\\x6c\\x35\\xa2\\xe1\\x6a\\x29\\xe2\\xe2\\xac\\xf1\\x80\\xbd\\xd9\\x37\\x93\\x54\\x68\\x7f\\x0e\\xce\\x68\\x82\\xd2\\x6e\\x98\\x0e\\x68\\x66\\x98\\x04\\x3b\\xb1\\xb0\\x12\\x13\\xaa\\x64\\x4a\\x4f\\x8d\\x61\\xf9\\xb6\\x13\\xe6\\x2e\\xaa\\x35\\x76\\xce\\xa0\\xb0\\xb8\\x3f\\x05\\xce\\x25\\x58\\xff\\x63\\x56\\x49\\x5c\\x45\\xed\\xe4\\xa8\\xf6\\x5b\\x81\\x4a\\xb8\\xa7\\x30\\x94\\x03\\xdf\\xd4\\x3c\\xbe\\xa9\\x08\\x93\\x93\\x9b\\x78\\x00\\xaa\\x00\\x23\\x2b\\x5f\\x6b\\x77\\x14\\xeb\\xdc\\xd8\\xbc\\xf3\\x4a\\x5a\\x7e\\x82\\x2a\\xc7\\xb1\\xb0\\x99\\xac\\x61\\x5f\\x13\\x5f\\x8c\\x35\\x1d\\xc4\\x1a\\xe5\\xf6\\x6d\\x5f\\x9c\\x26\\x00\\x45\\x4c\\xa0\\x1c\\x00\\x9b\\xa6\\xde\\x04\\x16\\x2a\\xe5\\xf1\\xf2\\x70\\x89\\x3c\\xa3\\x90\\x7a\\xff\\x7f\\x78\\xe0\\x33\\x96\\xe3\\x2b\\x62\\x2f\\xf3\\x40\\x53\\x7b\\xf1\\x23\\xe5\\x59\\x95\\xe9\\x20\\x96\\x09\\x33\\x0b\\x2e\\xee\\x51\\x12\\x74\\x84\\xa4\\x0e\\x25\\x07\\x00\\x82\\x3f\\xeb\\x0b\\xc9\\x7b\\xb5\\x09\\xff\\x73\\x26\\x75\\xde\\xc3\\x2e\\xcb\\x63\\x5e\\xd9\\x2c\\x7d\\x78\\xfe\\x30\\x50\\x20\\x0c\\xf1\\xd9\\x41\\xd6\\xb3\\x88\\x80\\x0a\\x84\\x19\\xd9\\x6a\\x59\\x5e\\xce\\xd5\\xec\\x4e\\xfd\\xcb\\x6f\\x98\\x7f\\x54\\x72\\xa5\\xc4\\x30\\x58\\xd3\\xa3\\xa7\\xbb\\x56\\xd7\\x98\\x03\\x65\\xed\\x43\\xdb\\xc2\\xbe\\x48\\xf1\\xd1\\x8c\\xe7\\x6a\\x89\\x18\\x54\\x26\\xfd\\x5c\\x69\\xdf\\x7e\\x92\\x91\\xab\\x78\\x23\\xc2\\x3a\\x76\\x94\\x1e\\xd3\\x83\\x6a\\xac\\x7b\\x58\\xc0\\xd5\\xfb\\x6b\\x63\\x6c\\x42\\x47\\x1a\\x4d\\x17\\x03\\x51\\x6f\\x03\\xe9\\x35\\xf3\\x1f\\x19\\x54\\x50\\xe5\\x37\\xb2\\xa0\\x7d\\x54\\x5b\\xa4\\xb6\\x8a\\xfb\\x06\\x38\\xc6\\x5b\\xb0\\xff\\xaa\\x0c\\xfd\\x69\\xd7\\x10\\x48\\x19\\x79\\x66\\x19\\xd4\\x83\\xa0\\x24\\x5b\\x4f\\xd9\\x01\\x7f\\x62\\xa7\\xd3\\xa5\\xfc\\x3b\\x72\\x89\\xd7\\x57\\x35\\xf2\\x87\\xca\\x0a\\x95\\x1a\\xd5\\x83\\x44\\xb2\\xab\\x7d\\x7d\\xf8\\xdb\\xd7\\x92\\x2a\\x5a\\xbb\\x8d\\x7c\\x2e\\x79\\x14\\x7e\\x6d\\x36\\xee\\x31\\xf9\\x30\\x47\\x3b\\x07\\x27\\xdc\\xfd\\x58\\xd6\\x44\\xd7\\xd7\\x0a\\x0e\\xd3\\x1c\\xa6\\xa1\\x3e\\xd9\\xdb\\xd2\\x24\\x49\\x2e\\xfd\\xa1\\x9e\\x4f\\x8e\\xed\\x46\\x18\\x0f\\xe7\\x50\\xf0\\x7b\\xbe\\x8e\\x99\\x85\\x4d\\x13\\xf5\\x8b\\xa9\\x68\\xce\\x38\\x59\\xd6\\x11\\x89\\xcd\\x2b\\x66\\x7f\\x3b\\x2d\\x06\\x65\\xb5\\x74\\xc4\\xba\\xc1\\x9d\\x9e\\x37\\xe5\\xb7\\xa8\\x0e\\xb3\\x34\\xe3\\x68\\x10\\x53\\x0a\\xa5\\xd1\\x76\\x63\\x93\\xf8\\x11\\x5a\\x52\\x09\\x0c\\x91\\x82\\x34\\x28\\xc8\\x97\\xa5\\xf3\\x5e\\x12\\xa8\\xaf\\x2c\\xd4\\xfb\\x13\\x90\\x7c\\xa6\\x60\\x3a\\x4f\\x76\\xf5\\xc2\\xe0\\x23\\x74\\xa8\\xdc\\x3a\\x47\\xc1\\xbe\\x6f\\x1d\\x1c\\x8e\\xbc\\x59\\xb3\\x6d\\x1c\\xfa\\x0a\\xb2\\x3e\\x9b\\x0a\\xe9\\xb0\\xe6\\x37\\xee\\xed\\xb9\\xc6\\x6b\\xea\\x62\\xdc\\x63\\x0c\\xde\\xfa\\x71\\x82\\x39\\x61\\x7e\\x31\\x18\\xe5\\xb6\\xde\\xb7\\xc2\\x94\\x47\\x52\\x82\\xe8\\xab\\xe2\\x4f\\xd5\\xa5\\x4b\\x78\\x6f\\xff\\x90\\x28\\xc5\\xa0\\x33\\x38\\x4e\\x4b\\xc8\\x01\\x4d\\xec\\x8d\\xa1\\x00\\xa9\\x4b\\x17\\x8e\\xf8\\x8e\\xc3\\x57\\xb6\\x6d\\x2b\\x90\\x98\\xab\\x64\\x79\\x16\\x96\\xb1\\xa6\\x6b\"},\n{{0x8a,0x55,0xe7,0x7b,0xb0,0xc8,0x74,0x0b,0x8c,0x2e,0x8d,0xdf,0xdf,0xdb,0x40,0xf2,0x7e,0x45,0xfe,0x81,0xfe,0x45,0x71,0x11,0xbf,0x1c,0x87,0x30,0xea,0xb6,0x16,0xb4,},{0x9f,0xf1,0xfd,0x0c,0x50,0xeb,0x24,0xf9,0x9f,0xe2,0xf7,0x71,0x1d,0x52,0x87,0x2d,0xfc,0x90,0x03,0x80,0xdd,0xdc,0xdb,0x86,0xfe,0x6f,0x4a,0x5f,0x35,0x0a,0x87,0x43,},{0x8a,0xae,0xba,0x53,0x5c,0x51,0x1c,0x31,0xd3,0xf8,0xe9,0x5c,0xb0,0x77,0xa9,0xa7,0xec,0x7d,0x08,0x44,0x1e,0x53,0x42,0xa6,0xab,0xe0,0xbf,0x2a,0x5d,0x7f,0xc9,0x30,0xb4,0x3d,0xac,0x3d,0x1e,0x8e,0xf2,0xcb,0x03,0x45,0x52,0xeb,0x4d,0x08,0x39,0xbc,0x8b,0xf2,0x94,0x55,0x1d,0xd2,0xd8,0x0c,0x53,0xfd,0x62,0x79,0x35,0x1a,0xc2,0x0c,},\"\\x20\\xfb\\x41\\x4e\\x26\\x4a\\x95\\x47\\x84\\xf1\\x12\\xba\\xce\\x7e\\x04\\x74\\xb3\\x9c\\xb3\\xc9\\xe5\\x3d\\xee\\x0a\\x21\\xf4\\xcf\\x6d\\x4a\\x99\\xb9\\x34\\x7d\\xdf\\xfb\\xe2\\x81\\xa6\\xc2\\x30\\xa7\\x5d\\x63\\xa7\\x2f\\xd0\\x5f\\x6d\\xb5\\x3e\\xa7\\x01\\x4e\\xf7\\x70\\x9d\\x18\\xff\\x97\\x0f\\x48\\x5f\\xe8\\x3b\\xa1\\xd3\\x71\\x47\\x33\\x8a\\xde\\xd6\\xda\\x4c\\xfd\\xac\\xc1\\xe6\\x9d\\x2f\\x3e\\x0e\\xf3\\x62\\xf4\\x7b\\x5b\\xcf\\xb7\\x8a\\x1e\\x17\\x9e\\xb5\\xc5\\xb1\\x06\\xc8\\xd8\\x2a\\x0a\\x0b\\x29\\x0d\\xf0\\x75\\xab\\x27\\x43\\x69\\x29\\xcd\\xe6\\x56\\xf0\\x23\\x09\\xf9\\x57\\x50\\xeb\\x67\\x65\\x83\\x26\\x2e\\x5f\\x2f\\x69\\xf0\\xff\\x72\\xa8\\xe0\\x57\\x26\\x63\\x82\\x26\\x92\\x05\\x31\\x87\\x40\\xbf\\xe0\\x6b\\xf5\\xc2\\xcb\\x45\\x33\\x90\\x8e\\xf9\\xf9\\xf2\\x86\\x9a\\x75\\xb9\\x53\\x35\\x79\\x82\\x0e\\x3b\\xc0\\xca\\xff\\xd6\\x46\\x17\\x1c\\x82\\x86\\xc3\\xa4\\xab\\xa1\\xff\\x09\\x15\\xd9\\x36\\x11\\x20\\x5e\\x23\\x0f\\x39\\xff\\x4c\\x4c\\xaf\\x3f\\x33\\x3e\\x75\\x3f\\xce\\x2b\\x71\\x21\\x3e\\x53\\xd6\\x08\\x41\\x5e\\xe1\\x7f\\xd4\\x82\\x12\\xee\\xdd\\x88\\x40\\xf3\\x37\\x10\\x1e\\xf0\\xd0\\xb6\\xf7\\xbe\\x4b\\xff\\xc0\\x6e\\xee\\xfe\\x80\\x66\\xdd\\x27\\xa0\\x54\\x1a\\x46\\x88\\x31\\xac\\xdd\\xc4\\x90\\x2e\\x2f\\xef\\xef\\xbe\\xd1\\x9c\\x30\\x8e\\x56\\x21\\xe0\\xbf\\x46\\xbc\\xd5\\x38\\xaa\\x13\\xfa\\xf0\\x4d\\x38\\x07\\x59\\xc0\\xe1\\x07\\xe9\\x12\\x00\\x18\\x39\\xdf\\xd0\\xb6\\x35\\x44\\x0e\\x96\\x38\\xf5\\x37\\x7c\\xa8\\x45\\x0f\\x35\\x0c\\x01\\x12\\x9e\\xe3\\x37\\x64\\x41\\x5c\\x53\\xcb\\x2f\\xfb\\xf9\\x68\\xdf\\x78\\xb7\\x42\\xfd\\x06\\x65\\xe7\\x8a\\x34\\xab\\xf4\\xde\\xcd\\x1f\\xd3\\x86\\x28\\x9a\\x13\\x64\\xe6\\x45\\x55\\xee\\xc5\\x8b\\x0a\\xf9\\xa4\\xcd\\x6b\\x36\\xd1\\xd5\\xc6\\x11\\xa2\\x84\\x6d\\xfb\\x55\\x89\\x34\\x4b\\xbb\\xb0\\x25\\x60\\x24\\x1b\\x74\\xb9\\x93\\xa2\\x5b\\xef\\x50\\xfb\\x1e\\x73\\x19\\x08\\x6e\\x6a\\x23\\x98\\x63\\x00\\x83\\x4e\\xd2\\xdb\\xa9\\x8a\\x16\\x87\\x21\\xc2\\xf7\\x84\\xdf\\xb8\\xd3\\x80\\x0d\\x06\\xa0\\x54\\xae\\xf1\\x4d\\x17\\x72\\xb6\\xc5\\x74\\xaf\\x25\\x63\\xd1\\x93\\xef\\x2e\\x51\\xbd\\xc6\\x2d\\x2a\\xbc\\xe2\\xee\\xbe\\xad\\xa7\\x92\\x03\\x49\\x8e\\x66\\x86\\xc2\\x87\\xf3\\x7b\\xd8\\x8a\\xeb\\x16\\x6f\\x7d\\xff\\xc3\\xe6\\xad\\x02\\x94\\x11\\x7e\\xf6\\xee\\x9d\\xa8\\x47\\x9e\\xd8\\xa1\\x6f\\xe9\\xbe\\x24\\x6d\\x26\\x68\\x04\\xf2\\x96\\x58\\xdb\\x75\\xe7\\xa0\\x87\\x3b\\xe7\\x1d\\xc7\\xd4\\x07\\xe3\\x9f\\xab\\xd6\\x6f\\x98\\x8b\\x45\\x74\\x77\\x42\\x7f\\xad\\x81\\x30\\xf0\\x9a\\xb6\\x65\\xf1\\x59\\x7c\\x90\\x46\\xe7\\x37\\x3a\\xf9\\xa8\\x35\\x2a\\x86\\x83\\x0c\\xb9\\x2a\\x80\\x44\\x88\\x70\\x0f\\xe6\\x89\\x19\\x24\\xfe\\x2a\\x72\\x01\\x73\\x3d\\x95\\xe5\\x91\\xee\\x0a\\x1f\\xef\\x1c\\x26\\x36\\x07\\x8d\\x37\\x0e\\x7a\\xd3\\xb6\\xa9\\x44\\xfe\\xd2\\xcf\\x2b\\x30\\xab\\xa2\\xd5\\x6f\\x34\\x95\\xb2\\x84\\x9c\\x03\\xbb\\x61\\x4f\\x48\\xbc\\x4e\\x50\\x7c\\x39\\x5a\\x6c\\x35\\xd3\\xee\\xd4\\xc7\\xbe\\x8e\\x68\\x0f\\x2d\\x45\\xa3\\x10\\xb1\\x87\\xeb\\x88\\xcf\\x0e\\x8e\\xd4\\xde\\x7d\\x37\\x24\\x6a\\x50\\xa6\\x36\\x7b\\x97\\xee\\x37\\x84\\x32\\x2c\\x0b\\x71\\x13\\x1a\\x28\\x31\\x98\\xda\\x48\\x04\\xde\\x75\\x1d\\xcf\\x70\\xc4\\xba\\xd0\\x0d\\xd9\\x8d\\x87\\x3a\\x69\\xdd\\x1a\\x09\\xcf\\x69\\xdd\\xfa\\xd7\\xae\\x60\\x35\\x00\\xb6\\xa4\\x62\\x25\\x80\\x98\\xd8\\xb6\\x6b\\x85\\x29\\x35\\x94\\xe2\\x08\\x82\\x9b\\x52\\x28\\xfa\\xe2\\xfa\\xfc\\x39\"},\n{{0x16,0x3b,0x0c,0xb6,0xa1,0x2e,0x8f,0x07,0xb0,0xc2,0x9d,0x6a,0x63,0xf6,0xa6,0x52,0xce,0x49,0x72,0x70,0xb5,0xe4,0x6f,0xcf,0x83,0x3c,0x99,0xbd,0x84,0x3f,0x8c,0x64,},{0x68,0xa3,0x5d,0xe4,0xba,0x6f,0x0f,0x82,0xec,0xf4,0xb1,0xe0,0xdf,0x8e,0x24,0xcb,0x4f,0x18,0xf2,0x10,0x3f,0xf0,0x4d,0xc1,0xb5,0x33,0x39,0x91,0xb6,0xd3,0x14,0xba,},{0x17,0x73,0x8f,0x57,0x26,0x55,0x07,0x80,0x65,0x1d,0x60,0x19,0x9f,0xda,0x39,0xd9,0xc4,0x76,0x8d,0xb5,0x91,0x7e,0x32,0x39,0x36,0x31,0xc5,0x4a,0x41,0x9d,0x59,0xf1,0x8e,0xf9,0x60,0xdd,0xd4,0x39,0x38,0x0d,0xab,0xc3,0x14,0x76,0x1b,0xd0,0xcd,0xb5,0x7c,0xce,0x48,0x1e,0x61,0x09,0xfe,0xd0,0x95,0xde,0xa6,0xe8,0x65,0xaa,0x67,0x0b,},\"\\x56\\xa1\\x60\\x3f\\x72\\x5b\\xe0\\x76\\x13\\x05\\x8c\\xdb\\x3a\\xcd\\xc5\\x23\\x54\\xe3\\xbb\\x1f\\xf2\\xbe\\xd1\\x3f\\x89\\x51\\x75\\xb1\\x5c\\x8c\\x5a\\x90\\xff\\xbe\\x46\\xb1\\x1a\\x06\\xcf\\xe3\\x62\\xda\\xdf\\x73\\x23\\xc9\\x40\\x41\\x72\\x55\\xaa\\x7a\\xa5\\x43\\x12\\x10\\x3e\\x71\\x46\\x3d\\xaa\\x0b\\x5c\\xda\\xeb\\xd0\\xbe\\x72\\x3c\\x73\\x22\\x73\\xe3\\xc3\\xf5\\xbf\\x7a\\xa3\\x51\\x9d\\x69\\xdf\\x6f\\x47\\x70\\xda\\xa1\\xdf\\x82\\x80\\xbb\\x3c\\xd2\\xc7\\x14\\xac\\x03\\x02\\x00\\x54\\x65\\x79\\xf5\\x6c\\x60\\xb9\\x1a\\xe1\\x1f\\x4c\\xf8\\x74\\xa3\\x5f\\xc5\\x9b\\x35\\x4b\\xed\\x80\\xf5\\x6e\\x11\\xa6\\xcd\\x62\\xa8\\x8c\\xe6\\xb4\\xf6\\xbf\\x39\\xd6\\x4c\\xe3\\xd8\\x04\\x09\\x82\\x5f\\x90\\x16\\x2c\\x3d\\x96\\xd1\\x0e\\x47\\x86\\x07\\x36\\x5f\\x7a\\x24\\x1e\\x71\\xaf\\x98\\x00\\x42\\xfe\\xc2\\xd6\\x88\\x91\\xe0\\xc8\\xa3\\x7c\\x58\\xec\\x4e\\x60\\x0f\\xd5\\x81\\xe7\\x90\\xb0\\xaa\\xe8\\xe0\\x9f\\x35\\xd4\\xcc\\x18\\x76\\xdf\\x43\\x4b\\x80\\xee\\xe0\\x53\\x69\\xf8\\x48\\xfc\\x49\\x30\\x57\\x7d\\x16\\x84\\x27\\x58\\x88\\xf3\\x25\\x9c\\xb4\\x73\\x76\\xc5\\x16\\x9c\\x99\\x37\\xf8\\x55\\xa9\\x6a\\x9e\\x74\\x8a\\xd0\\xa6\\x9a\\xe4\\xab\\x2f\\x2f\\x17\\x44\\xa3\\x92\\xf9\\xac\\xc6\\x20\\x99\\x75\\xb7\\x84\\x98\\x4c\\xb1\\x2f\\x98\\x29\\x2c\\x36\\xa5\\x32\\x21\\x99\\x4a\\xbc\\x56\\xf9\\xa6\\x6d\\xae\\x45\\x60\\xb7\\x93\\x56\\xff\\x47\\xe1\\x28\\xc0\\x79\\x6a\\x7f\\xb0\\xe0\\xbb\\xc9\\x60\\x0a\\xf4\\x8e\\x49\\xea\\xa9\\x42\\x7c\\xf6\\xeb\\x66\\x20\\xb1\\x0c\\xd2\\xc0\\x85\\xb0\\xb3\\x42\\x00\\x4d\\x5b\\x0d\\x3e\\xdc\\x11\\xd2\\x92\\x42\\xa4\\x63\\x87\\x80\\x76\\x2c\\x9d\\xc6\\x06\\x9b\\x66\\xbd\\x84\\x97\\x3b\\x50\\x11\\x96\\x1c\\xe5\\x6d\\xb5\\x8b\\xda\\xf4\\x8e\\x6b\\xe1\\x2a\\xb9\\xad\\x24\\x41\\x62\\x97\\x00\\x4d\\x02\\x91\\x4b\\x95\\x9f\\x54\\xe0\\x92\\xf8\\xcd\\x43\\x65\\xfa\\x6a\\xb7\\x8d\\xdb\\xff\\x4c\\xe8\\xda\\xd4\\xe2\\xf5\\x3a\\x05\\xc0\\xcc\\x49\\x9b\\xfb\\x47\\x81\\x4a\\x27\\x13\\x55\\x1d\\xcd\\x19\\xd4\\x47\\xf6\\x27\\x57\\x6e\\xa4\\xea\\x4b\\xbd\\xa8\\xba\\xe1\\x8a\\x64\\x65\\xce\\xd7\\x47\\xea\\x17\\x18\\x0b\\x00\\x9f\\x01\\x21\\x21\\x60\\x48\\x2b\\x04\\x33\\xaa\\xc6\\x8e\\x67\\x64\\x4d\\x00\\xf4\\x1f\\xdf\\x99\\x90\\xb9\\xe1\\x11\\x17\\x63\\x4d\\xeb\\x13\\x9b\\x1a\\x40\\xad\\x3f\\xce\\x42\\x99\\xa1\\x7f\\xe1\\xdd\\x22\\x53\\x01\\xc7\\xf8\\xd8\\x01\\x0a\\x79\\x6d\\xc7\\x9c\\x13\\x30\\x7d\\x3f\\xf9\\x92\\xa8\\x8b\\xe6\\x64\\xd4\\xc8\\x86\\xd6\\x8c\\xa9\\xe4\\x47\\x0c\\xfb\\xe6\\x3e\\xbf\\xfc\\x42\\x40\\x10\\xe3\\x72\\xb6\\x92\\x2a\\xa9\\x5c\\x80\\x1d\\x1e\\x94\\x06\\xda\\x4b\\xc1\\x88\\xca\\x82\\x06\\x64\\x05\\xbc\\xdb\\x3e\\xaf\\xc9\\x37\\x62\\x9b\\x32\\x63\\xdc\\x7d\\x50\\xee\\x52\\x78\\xcc\\xec\\x6f\\x11\\xd5\\x51\\x7f\\x56\\xbc\\x26\\x9c\\x87\\x36\\x91\\xe7\\xeb\\x53\\xfa\\xef\\xf0\\x75\\x64\\xab\\x46\\xb4\\x03\\xf1\\x5d\\x9e\\x0e\\x69\\x24\\x86\\xee\\x09\\x8e\\x7b\\x51\\xb4\\x28\\x13\\x46\\x9b\\x82\\x35\\x04\\x22\\x33\\xca\\x3f\\x9c\\x4f\\x8f\\xf2\\x4a\\x57\\x1f\\x47\\xe0\\xad\\xf9\\x14\\x4a\\xea\\x48\\x8a\\x2d\\x2d\\xd0\\x01\\xe3\\x1f\\xc9\\x61\\xe0\\x5c\\x3e\\x85\\xf0\\xd9\\x81\\x40\\x7c\\x87\\x31\\x58\\xbb\\x0d\\x35\\xba\\xfe\\x4b\\x60\\x42\\x2e\\x67\\x55\\x1e\\x97\\x01\\x65\\xce\\x3f\\xc5\\x99\\xd0\\xfc\\xc9\\x2b\\x16\\xac\\x36\\xa9\\x2b\\x2c\\x1d\\xc6\\xb3\\xf0\\x33\\xfe\\x31\\x0c\\xd1\\x96\\xda\\x04\\xa4\\xe6\\x39\\x03\\x11\\x77\\xcd\\x27\\xd7\\xc2\\xfb\\xec\\x65\\xa0\\x0b\"},\n{{0x8c,0x83,0x93,0x81,0xb6,0xa7,0xce,0x26,0x49,0xc1,0xea,0x46,0x4a,0xe3,0xc2,0xd3,0xfd,0xb1,0xec,0x66,0x6d,0x7b,0x4b,0xe4,0xe2,0xa9,0x41,0xab,0x6d,0x65,0x57,0xa7,},{0x5c,0x72,0x4a,0x30,0xc6,0xfb,0x32,0x81,0x53,0x43,0xa8,0x0d,0xde,0xe6,0xee,0xe5,0x44,0x51,0x64,0x18,0xea,0x95,0xe1,0xba,0xc8,0x0a,0xfc,0x80,0x40,0xd6,0x3f,0xc6,},{0x5d,0x21,0x10,0xd1,0xd2,0xf3,0xed,0xd6,0x83,0xbd,0xfd,0xbe,0xa3,0xff,0xa7,0xcf,0x55,0x28,0xa4,0x0b,0x8b,0x3d,0x8d,0x8c,0x9b,0xfd,0x22,0xae,0xac,0x28,0xba,0xd4,0x71,0x66,0x6e,0x06,0x2f,0x7d,0x38,0xce,0xda,0x8b,0xb3,0x73,0x97,0xa1,0xc5,0xc3,0xf7,0x33,0xb5,0x37,0x96,0x70,0x45,0x70,0x64,0x78,0x43,0x7d,0x4d,0x18,0x7a,0x0a,},\"\\xcb\\xcf\\x89\\xc3\\x54\\x89\\x64\\xc3\\x8d\\x70\\xfd\\x8f\\x68\\xe8\\xec\\xe3\\x6c\\xc3\\x97\\x55\\xc9\\x71\\xd1\\x4d\\x7e\\x05\\x6f\\x39\\xb0\\x23\\xef\\x16\\x6d\\x17\\xf2\\x43\\x85\\x22\\xf0\\x10\\xd6\\xd8\\x35\\xd8\\x86\\xe7\\x1f\\x47\\x4c\\x67\\x27\\xa4\\x22\\x1f\\xd0\\x3a\\x75\\x74\\x57\\x82\\x89\\xed\\x54\\x93\\xac\\x4c\\x09\\x47\\xe3\\xf4\\x28\\xd8\\xfe\\x06\\x40\\x06\\xa2\\x56\\xce\\xf2\\x18\\x11\\xd7\\x26\\x78\\xf5\\xdf\\xc6\\xba\\x66\\xac\\x29\\xec\\xd1\\xb3\\x2f\\xf5\\x55\\x7c\\xb0\\x8c\\x5f\\x13\\x05\\x59\\x21\\x7a\\x04\\x13\\xb7\\x59\\xc2\\x4d\\x83\\x38\\x8a\\x2b\\xb9\\xb2\\x9b\\x6b\\x91\\xd1\\xf3\\x10\\x1e\\xd6\\x25\\x21\\x1e\\x4d\\x73\\x80\\x51\\x93\\x47\\x8c\\xf9\\x95\\x39\\x6c\\x10\\xb1\\xc5\\xaf\\xfa\\xcb\\x00\\x89\\x9d\\xa0\\x4e\\x3c\\xce\\x19\\x3b\\x49\\x4e\\x2a\\x93\\x3c\\x4e\\xeb\\xe0\\xa3\\x7b\\xfb\\x8f\\x1b\\x83\\x71\\xbd\\xe5\\xfd\\xa0\\x9e\\x80\\x4e\\x94\\x0f\\x34\\x48\\x96\\xa5\\x29\\x46\\x7a\\xde\\xe4\\x5a\\x8f\\xeb\\xf8\\x5a\\xb0\\x36\\xca\\xb8\\x80\\x14\\x3b\\xe4\\xf5\\x9b\\x77\\x41\\xd8\\xe4\\x50\\x27\\x8b\\x06\\x36\\x55\\x78\\xd4\\x0b\\x19\\xdc\\xec\\xc6\\xe1\\xee\\x3d\\xa3\\x4a\\xb2\\x90\\x13\\xfa\\x3a\\xf7\\x72\\x92\\x72\\x96\\x21\\x10\\xe3\\x85\\xab\\x9a\\x02\\x2f\\xae\\x41\\x46\\xf8\\x97\\x16\\xf7\\xba\\xb9\\xd3\\xdc\\x68\\x2f\\x4f\\xac\\x77\\x36\\xd3\\xe0\\x89\\x73\\xc6\\x85\\xbb\\xb2\\x75\\xbb\\xf8\\xf2\\x17\\x41\\x9e\\x5c\\xae\\x02\\x19\\xeb\\xa5\\x16\\x6a\\x5d\\xe1\\xb1\\x1e\\x3f\\x9a\\x90\\x8b\\x8a\\xc7\\xe6\\x5b\\xcd\\x62\\x3f\\x8c\\x18\\xbb\\x02\\x4f\\x60\\x5d\\xcb\\xac\\xda\\x79\\x0d\\x83\\x62\\x95\\x74\\x44\\xa9\\x5c\\x13\\x0a\\x37\\xee\\x9d\\x56\\x3d\\x0c\\xbb\\x4c\\xb2\\xb0\\xff\\x71\\x59\\x1d\\x93\\x90\\xb6\\xc8\\xfc\\x28\\x75\\x3a\\x0e\\x40\\x2d\\x64\\x87\\xcf\\xac\\x60\\x71\\x35\\x92\\x7d\\x89\\x26\\x75\\x12\\xb3\\x4f\\x87\\x70\\x57\\xd9\\x27\\x1b\\xcc\\xc0\\x24\\xdf\\xed\\xcc\\xc6\\xc3\\x2e\\xdf\\x75\\xc8\\xb7\\x55\\x1c\\xdf\\x80\\x15\\x4e\\xe8\\xe0\\x8a\\x0c\\xc4\\x30\\x44\\xe1\\x03\\x6b\\xae\\x01\\x7e\\xb4\\x8b\\x65\\x02\\xc7\\xa9\\xd6\\x0c\\x8b\\x37\\x0c\\xf3\\x79\\x9c\\x46\\x4f\\x96\\x4a\\x69\\xee\\x65\\x95\\x01\\x22\\x3e\\x78\\x9a\\x64\\x97\\xb6\\x34\\x96\\xdf\\x1a\\xda\\x2e\\x80\\x8d\\x24\\x34\\xfc\\x8b\\xb9\\x79\\x4e\\x5e\\x2a\\x20\\xbb\\xf4\\xd6\\x92\\x5c\\xb3\\xc5\\xbb\\x14\\x84\\x2f\\x19\\x20\\x09\\x05\\xba\\x93\\x54\\xe0\\x0d\\xc3\\x3c\\xff\\x5b\\x42\\xd4\\xe9\\xd9\\x66\\x8b\\x34\\xe6\\x61\\xd4\\x4b\\xef\\x76\\xfe\\xfe\\x2e\\xd5\\x1f\\x94\\x42\\x3a\\x93\\x3a\\xc9\\x4f\\x15\\x23\\xbf\\x37\\x82\\x3a\\x23\\x8d\\x61\\x6c\\x6b\\x17\\x97\\x34\\x41\\xe3\\x5f\\x94\\x05\\xa0\\x4d\\x99\\xea\\xa8\\xf5\\x04\\x53\\x4c\\x8b\\x5f\\xa5\\xe8\\xe3\\x35\\xc7\\x43\\xbc\\xf2\\x1f\\x5d\\x49\\x2b\\x71\\x12\\xe0\\x0f\\xd8\\x64\\x2c\\xb1\\x2b\\xfe\\xc8\\x49\\xdf\\x62\\x12\\x0d\\xbb\\x06\\xbf\\xc2\\x94\\x6a\\x56\\x01\\xe2\\x5b\\xe7\\x50\\x11\\xc6\\xf0\\x0c\\x65\\xd3\\x5f\\x44\\xa4\\x6a\\xf9\\xe4\\xf7\\x80\\x9e\\x57\\x89\\xa3\\xa6\\x1b\\xa0\\xa3\\xb2\\x13\\x89\\x04\\x97\\x29\\x6c\\x81\\xe4\\x2e\\x88\\xf0\\xec\\x0f\\x5d\\xef\\xc1\\xf5\\xd3\\x9f\\xf2\\xa4\\x8b\\x7e\\x30\\x26\\xc9\\xe5\\x47\\x20\\x2e\\xdc\\x7e\\xb7\\x38\\xc3\\x4a\\xd3\\xa1\\x5d\\x37\\x3e\\xf8\\x2a\\x4c\\x1d\\x18\\x1f\\x28\\x5a\\x98\\xbd\\x33\\x14\\xc2\\xc1\\x94\\x7c\\x9e\\x2c\\x60\\xac\\xa5\\x17\\x50\\xee\\x7f\\x94\\x3c\\xaf\\x0c\\x4e\\x1e\\x5c\\x7d\\xf7\\x29\\x1e\\x97\\x3b\\x1f\\x93\\x6b\\x73\\x70\\x76\\x19\"},\n{{0xaa,0xbb,0xb2,0xef,0xed,0xb5,0x99,0x42,0x4a,0x5f,0x3e,0x08,0xf9,0x0f,0xa8,0x82,0x6c,0x5c,0x92,0x17,0x0b,0xe5,0x01,0xa1,0x18,0x1f,0xe8,0xe8,0xdf,0x97,0x4e,0x0e,},{0xce,0x73,0x19,0xef,0x88,0xb2,0x42,0x42,0x06,0x66,0xca,0x69,0x7b,0xa8,0x50,0x1d,0x27,0x4e,0xc4,0xa5,0xdc,0xf8,0x44,0x59,0x66,0x08,0xb9,0xdd,0x5a,0x8a,0x3a,0xcd,},{0xa0,0xb1,0x9c,0xfa,0x6c,0x80,0xde,0x77,0xbf,0xcd,0x32,0x10,0x30,0xbf,0x8c,0x03,0x89,0x3e,0x2b,0x21,0xac,0xe6,0xc6,0xba,0x1f,0xf7,0x40,0x8e,0x6f,0xf0,0x7d,0x84,0x7e,0x6b,0x2b,0x68,0x8d,0x4f,0xd5,0x1a,0xa9,0x32,0x70,0x1d,0xb6,0x40,0x2e,0xf2,0x23,0x22,0xe6,0xe9,0xfc,0x7e,0x32,0x0a,0xbb,0x4d,0x24,0xe1,0xac,0xc6,0xcf,0x06,},\"\\xfc\\xc1\\x5c\\xc5\\x79\\x70\\x56\\x9e\\x9c\\xcf\\xa5\\xa7\\x78\\xfc\\x7a\\xed\\x71\\x97\\x8a\\x3f\\x56\\x24\\x57\\x7b\\x6f\\x57\\xfa\\x3f\\x16\\x7e\\xa2\\x23\\xef\\x31\\x76\\x4c\\x48\\x8d\\x05\\x9d\\x06\\x53\\x1d\\x01\\x6b\\xcb\\x17\\xd5\\x44\\xd4\\x69\\x77\\xaa\\x24\\x1f\\x8e\\x07\\xaf\\x47\\x87\\xa0\\x81\\x0f\\x98\\xd7\\x66\\x46\\x0c\\x08\\x41\\xad\\x81\\xb8\\x8f\\x4d\\x5d\\x81\\x64\\x48\\x5a\\x12\\x58\\xa9\\x46\\x22\\xc5\\x49\\x24\\x28\\xd6\\xd5\\x75\\x94\\x37\\x15\\x76\\x6c\\x2b\\x0a\\x86\\x5b\\xed\\xba\\x16\\x7d\\x5d\\x34\\x0e\\xdb\\x57\\x9c\\x47\\xaa\\x32\\x45\\x9b\\x8f\\xc9\\x8a\\x79\\xbb\\x0b\\xed\\x1c\\x96\\x0b\\x4c\\xcb\\x7f\\x2d\\x4b\\x56\\x81\\xa2\\xa7\\x0d\\x50\\x5b\\x85\\xb8\\x1e\\x3d\\x99\\x67\\x27\\x14\\xe4\\xea\\xb4\\x1f\\x3a\\xb0\\xca\\x87\\x4f\\x41\\x71\\x86\\xfe\\xb6\\x9e\\xd1\\x3f\\xb9\\x11\\xf4\\x9d\\x15\\x84\\x75\\x8b\\x2d\\x18\\xb4\\x67\\x3e\\xdf\\xae\\x49\\x5e\\x68\\xda\\xd5\\x13\\xa7\\xac\\x0d\\x47\\xb2\\x75\\x3c\\xb4\\xed\\xa7\\x8f\\xb4\\x31\\xf0\\x4d\\xda\\x8f\\xe8\\x03\\x0d\\x7b\\xb4\\xe8\\xdb\\xcc\\xb9\\x69\\xd7\\xf5\\x80\\xd9\\xc1\\xef\\x93\\x5d\\x07\\x4d\\x7a\\x41\\xd1\\xf8\\xb9\\xdc\\x45\\xc9\\xa2\\xe4\\x10\\x6a\\x55\\x29\\xa9\\x8b\\x95\\x52\\x9a\\xb0\\xed\\xea\\x0b\\x57\\x22\\xdd\\x68\\x6f\\x5a\\x7f\\x3c\\xd8\\xfb\\x26\\x24\\xab\\x26\\xc4\\x2d\\xf1\\x1f\\x51\\x0a\\x10\\x3d\\x8a\\x92\\x98\\x30\\xad\\x85\\xf5\\x21\\x24\\xe3\\xd5\\x82\\x7b\\xa6\\x0b\\xfb\\xcd\\x73\\x6c\\xb6\\xc5\\x90\\xee\\x77\\x7e\\xad\\x7a\\xa2\\x22\\x4d\\x7a\\xe4\\x6d\\x25\\x7a\\x90\\x40\\x72\\x47\\x96\\x0c\\x9c\\xb0\\x38\\x60\\xae\\xaa\\x7f\\x54\\xc1\\xa8\\xe1\\x11\\x60\\xd1\\x1b\\xb4\\x73\\x06\\x5e\\x19\\xb7\\x07\\x21\\xc8\\xf0\\x72\\xe1\\x90\\x9d\\x53\\x9e\\x9a\\xc9\\x41\\x85\\x90\\x4b\\xbb\\xfe\\x54\\x87\\x37\\x54\\xae\\x1c\\xa7\\xbc\\xed\\x6f\\x40\\x56\\x1a\\xf4\\xb5\\x05\\xf0\\x3a\\xc9\\x72\\xa6\\xf0\\xbf\\xa7\\x3b\\x5f\\x83\\x2f\\xe2\\x3b\\x89\\x8b\\x2b\\xbb\\x05\\x74\\xa6\\x66\\x2e\\xe9\\x3b\\x3b\\x36\\x0d\\xa1\\xec\\x7e\\x83\\x8e\\xb2\\xc7\\x7c\\x7c\\xb7\\xfc\\x16\\x4f\\x7c\\x46\\x27\\x01\\x04\\x89\\xc8\\x58\\x90\\x07\\x52\\xc9\\x2d\\x9d\\x75\\xad\\x54\\x71\\x67\\xe4\\xbd\\xd1\\x1a\\x07\\xd2\\x8b\\x65\\x1a\\xa3\\x0f\\x16\\xa8\\x50\\xe0\\x60\\xdd\\x28\\x82\\xfb\\x82\\x09\\x19\\xa3\\x98\\xe8\\x05\\xeb\\x63\\x69\\x9f\\x4f\\xf5\\x95\\xf9\\x91\\x52\\x47\\x31\\x64\\x1e\\xce\\x25\\xfb\\x3f\\x8e\\x89\\xad\\xa5\\x01\\x19\\x2b\\x1e\\xdd\\xae\\xcb\\xac\\xc8\\xb8\\x98\\x52\\x8f\\x2d\\x5b\\x33\\x12\\x69\\x4f\\x5e\\xc2\\xdc\\x91\\x42\\xe1\\x51\\x3f\\x77\\x7a\\x5c\\x83\\x34\\x09\\xc1\\x71\\x63\\x3f\\xf9\\xfa\\x26\\x09\\xd0\\x49\\x7f\\x5d\\xf4\\xfb\\xf4\\x8e\\xf2\\xb7\\x7d\\x55\\xe2\\x55\\x19\\xd2\\xee\\x79\\xb5\\xfe\\x9d\\x8f\\xa4\\x60\\x00\\xde\\xcd\\xb4\\xf2\\x5d\\xfb\\x3f\\x2b\\xaf\\xb1\\x9f\\xbe\\x2c\\xbd\\xac\\x00\\x2a\\x35\\x9a\\x95\\x4b\\xc6\\x9b\\xdf\\xe2\\xfb\\x36\\xad\\xfd\\x9a\\x15\\x09\\xf3\\xe3\\xa4\\xc6\\xb1\\xf3\\xf3\\x6e\\x7c\\xf8\\x0d\\x58\\x3d\\x44\\x0f\\xf2\\xa1\\x44\\x64\\x30\\x98\\x97\\x4d\\x71\\x49\\x3e\\xcb\\x64\\x17\\xc0\\xb8\\x06\\x5b\\xd2\\xc2\\x1c\\x1e\\x34\\xaf\\x09\\x24\\x3f\\xb4\\x9e\\x9d\\x35\\x29\\x7e\\xb0\\xa5\\x2d\\x56\\xdd\\x27\\x0f\\xea\\x6d\\xc5\\xc0\\x80\\xa0\\x55\\x99\\xf7\\x85\\x81\\xe9\\x0f\\xd8\\xcc\\x4c\\xd1\\x1a\\x50\\x5e\\xdd\\xe8\\x4b\\x89\\x2d\\x89\\x53\\xbd\\xbb\\x23\\x79\\xd3\\x3a\\xad\\x64\\x65\\x8a\\xe2\\x06\\x07\\xdd\\x35\\xb0\\xbf\\x3a\\x26\\x37\\xd2\\x0c\\x3f\\x86\"},\n{{0xc2,0xe0,0x74,0xfa,0xa2,0x34,0xe9,0x9a,0xb2,0x0a,0xdb,0xbe,0xae,0x11,0xb8,0x10,0x97,0x23,0xb7,0x08,0xc5,0x45,0x86,0xdf,0x65,0x2b,0x40,0x2c,0x35,0xcd,0xd1,0x27,},{0x5e,0x52,0x4e,0xce,0x1c,0x69,0x6e,0x70,0x5a,0x35,0x14,0xdd,0x00,0x82,0xb8,0x40,0x79,0x5a,0x59,0xc3,0x6a,0x96,0xcb,0xc4,0x82,0xbf,0xf5,0xab,0x4e,0xf5,0x15,0xd1,},{0x65,0x7c,0x38,0x26,0xb3,0x48,0x3f,0xd4,0x2a,0xb6,0xdf,0x86,0x9d,0x1b,0x77,0xa8,0xc4,0xdf,0x67,0xa6,0xa5,0x90,0xc7,0xc6,0x77,0x29,0x69,0xe3,0xdf,0x33,0x12,0xae,0x06,0x54,0xfb,0x83,0x84,0x7a,0xf2,0x21,0x93,0x5a,0x05,0x12,0x29,0x16,0x36,0xec,0x05,0x95,0x70,0x08,0x79,0xeb,0xdb,0xa8,0xa1,0x46,0x7c,0x53,0xd4,0x0c,0x23,0x06,},\"\\x31\\x29\\x03\\x38\\xe4\\x6d\\x1c\\xc2\\x5c\\xe9\\x9c\\xba\\xcc\\x40\\x16\\x03\\x41\\xb7\\x85\\x82\\x3c\\x82\\x3c\\x4a\\xb9\\xba\\xee\\x3b\\x61\\x25\\x79\\xf1\\xc0\\x11\\x71\\x67\\x96\\xe5\\x6e\\x26\\x93\\xf6\\xdd\\xad\\x43\\x92\\x2a\\xa7\\x84\\x7c\\xbb\\x41\\x48\\x10\\x16\\x51\\xbb\\xe6\\x2d\\x50\\xbe\\x90\\x82\\x5e\\x8e\\xab\\x77\\x7a\\xa4\\xb8\\x02\\x6d\\xc5\\x38\\x5a\\x97\\xd3\\xdf\\x76\\x16\\x01\\x91\\xf9\\x22\\xcd\\xd2\\xf0\\x7b\\xa5\\xf8\\x5e\\x95\\xf4\\x5d\\xb2\\x29\\x28\\xf9\\x07\\x34\\xff\\x52\\x0c\\x44\\xdc\\x8f\\xe3\\x90\\x3b\\x4c\\x51\\xcd\\x23\\xe0\\x64\\xf0\\x1c\\x82\\x9e\\xc7\\x4f\\xbf\\xfe\\x25\\xfd\\x0d\\x36\\x9d\\x27\\x65\\x74\\x0f\\x43\\x85\\x6b\\xd7\\x39\\x8a\\x19\\x11\\xad\\x74\\x98\\x36\\x16\\x0f\\xd9\\x8d\\x04\\xb2\\x8e\\xe8\\x7e\\x11\\x1d\\x40\\x71\\x8b\\x5a\\x16\\x6f\\x05\\xc9\\xa4\\x71\\xa4\\x15\\x66\\x55\\x70\\x69\\xf7\\xa1\\x4d\\xe9\\x88\\xbb\\xbf\\x67\\x77\\x52\\x1f\\xcb\\xa6\\xdd\\x65\\xde\\x4c\\x06\\x67\\x4a\\x11\\x85\\x3a\\xf8\\x3a\\xcc\\xb7\\x0f\\xb3\\x28\\xdd\\x8f\\xd6\\x10\\x5a\\x7d\\xf5\\x26\\x9c\\x9f\\xae\\xc8\\xd9\\x00\\x14\\x7e\\x92\\x8d\\x97\\x0c\\x36\\xcd\\x83\\x4b\\xd6\\x05\\x4f\\x70\\x65\\x0d\\xfa\\xce\\x94\\xb7\\x62\\x9d\\x16\\xe3\\x70\\x3d\\x76\\x6c\\xe7\\x63\\x8d\\x0a\\xd1\\xe1\\x7b\\x77\\x46\\x9b\\x95\\x8d\\x2b\\xa2\\xa1\\xe6\\x31\\xa1\\x63\\x5e\\xfd\\xcb\\x00\\x6e\\xbc\\x6e\\x5d\\x8b\\x9f\\xaf\\x7e\\x5f\\xb9\\x89\\xdc\\x08\\x96\\xc5\\x61\\xa2\\x6f\\x3c\\x25\\xf0\\x55\\x71\\x6b\\x36\\x71\\x38\\xea\\x5d\\xa1\\xf8\\x1d\\xc7\\x2c\\xff\\x7a\\x55\\xaf\\xae\\xe5\\x83\\x9e\\xf5\\xaa\\x82\\x2b\\x29\\x70\\xaa\\x18\\xa8\\x98\\x21\\x63\\xbf\\x5e\\xed\\x1b\\x67\\x7c\\xca\\xac\\x12\\x24\\xff\\x6c\\x6c\\xf2\\x56\\x37\\x47\\x80\\xae\\x65\\x80\\x3b\\xf5\\xc6\\xe2\\x3c\\x80\\xba\\xcd\\x76\\xec\\x3e\\x2d\\xdd\\x3a\\xb7\\x19\\x97\\x50\\x64\\x48\\xe1\\x9d\\xb1\\x98\\xef\\xad\\xc9\\xf7\\x57\\x49\\x1f\\x1b\\x09\\x72\\xc8\\x2d\\xb2\\x94\\x10\\xe1\\xe8\\xbb\\x67\\xbb\\xb2\\x3d\\x53\\x56\\x3b\\x88\\x07\\xe5\\xe0\\xc2\\xe3\\x2e\\xe5\\x96\\xb5\\xb4\\x40\\x23\\x28\\xf9\\xe1\\x79\\xe9\\xce\\x85\\x6d\\x3b\\xd1\\x99\\xd5\\x8d\\xe6\\xc5\\xc2\\x52\\xe7\\xa6\\x12\\x4d\\x81\\xfc\\x9e\\xea\\xf2\\x3d\\x34\\x7d\\x2a\\xb8\\x89\\x17\\xaa\\x68\\x44\\x50\\xdd\\x58\\x30\\x35\\x16\\xc1\\xa4\\xd2\\xbd\\xcd\\xde\\x22\\x0c\\x9a\\xe3\\x79\\x0f\\x29\\x8d\\x7d\\x38\\x4b\\x70\\xc2\\xfe\\x25\\x88\\x07\\x84\\x8f\\xc3\\x53\\x20\\xb5\\x78\\xb3\\x35\\x03\\xb7\\x5f\\x38\\xa1\\xdf\\x63\\x0b\\xd3\\x3e\\x6a\\x85\\xa4\\xdd\\x4d\\xf9\\xf6\\xe5\\x5a\\x6e\\x68\\x67\\xc7\\x38\\x01\\xe5\\x93\\xe1\\xd5\\x91\\xdb\\x89\\xba\\x9a\\x9a\\xf0\\xfc\\x29\\x2e\\x06\\xfb\\x51\\x5a\\xc8\\xa5\\xe8\\xe3\\x43\\xa8\\x21\\x33\\x55\\x75\\xba\\x48\\xfb\\xaa\\xe3\\xfb\\x12\\xde\\xea\\xae\\xe6\\x0f\\x4b\\x3d\\x31\\x7e\\xc0\\xa5\\x54\\xdd\\xd4\\x25\\xc8\\x49\\x32\\xc2\\x7a\\x7a\\x12\\xf2\\x9d\\x63\\x71\\x51\\x07\\x83\\xbd\\x75\\xe6\\x0e\\x2f\\x6d\\xa2\\x00\\x52\\x06\\x9e\\xd7\\x1e\\x69\\x5a\\x94\\x31\\x82\\x19\\x3c\\xb6\\x85\\x1a\\x7d\\x2f\\xa3\\xc6\\x66\\xc1\\x93\\x02\\x80\\x15\\xac\\x8b\\x7e\\x7d\\xaa\\x6c\\x52\\x04\\xf7\\x7a\\x62\\x32\\xb8\\x8b\\x4a\\xbf\\xfc\\x53\\x62\\xfd\\xe7\\xde\\xc3\\x6b\\x9d\\x45\\x48\\x80\\x84\\x92\\x83\\xb1\\x15\\x63\\x39\\xea\\x2e\\x8c\\x3b\\x10\\xe5\\x1b\\xfa\\xbd\\xf7\\x25\\x78\\xc7\\x26\\x41\\x9a\\x38\\x54\\x2c\\xf8\\x64\\x9d\\xf9\\xa0\\x90\\x9f\\x58\\x2d\\xeb\\xad\\x5f\\xd8\\x9d\\x8c\\x81\\xf8\\x3d\\x9e\\x42\\x3e\\x75\\x03\"},\n{{0xb9,0xda,0x4e,0x6a,0xf0,0x7e,0x39,0x8a,0xb4,0xd2,0x17,0x52,0xa3,0x2c,0x8f,0xfa,0x9b,0xe0,0xc3,0x10,0xd3,0x50,0x59,0xfb,0x66,0x1b,0xd7,0x3a,0xfa,0x97,0xe2,0xa8,},{0xf8,0x62,0x80,0x3c,0x96,0xcc,0x42,0xad,0xc8,0x25,0x28,0x84,0x54,0x72,0x30,0xb9,0x70,0x04,0x7b,0x7e,0x5d,0xa9,0x96,0x26,0x0c,0xcc,0x02,0x40,0xab,0x71,0xa6,0xec,},{0x62,0x5e,0x1f,0x42,0xc8,0x74,0x34,0xa2,0x5d,0x62,0x2d,0x80,0xd1,0x25,0x32,0x80,0x6a,0xfb,0x25,0x09,0x33,0x24,0x49,0xe6,0x96,0xb6,0x5e,0x1e,0x58,0x88,0x50,0x8f,0x11,0xc4,0xac,0x25,0xf5,0x9b,0x8d,0x94,0xd0,0xbf,0x27,0xe4,0xc8,0xd1,0x86,0x70,0x07,0xc4,0x08,0xda,0x57,0x30,0x82,0xdc,0xf1,0x9d,0x15,0xa9,0xd5,0xcc,0xcb,0x0c,},\"\\x6b\\x95\\xaf\\x0e\\xeb\\xb6\\xa0\\x8a\\xfa\\xda\\xa1\\x96\\x21\\xf7\\x6a\\x83\\x9b\\xe8\\x08\\x51\\xc6\\xdd\\x31\\x5e\\x82\\x76\\xf5\\x01\\x99\\x5d\\x4c\\xe6\\xd1\\x34\\xdf\\x5e\\x79\\x8e\\xd5\\x17\\xa2\\xf0\\xe6\\x2a\\xa1\\xd6\\xc9\\x8c\\x36\\xef\\x14\\xbb\\x1e\\x5d\\xdf\\xc9\\x8d\\x5a\\x7f\\xcc\\x81\\x14\\x0a\\x13\\xc2\\x0d\\x2c\\xa0\\xc4\\xb4\\x0e\\x6e\\x6a\\x03\\xee\\xd8\\xc8\\x99\\xf9\\xd1\\xf7\\x92\\x46\\x81\\x52\\x19\\x9f\\x4b\\x95\\xa4\\x32\\x66\\x89\\x47\\xa5\\x1d\\x7b\\x8e\\x10\\x4d\\x8d\\x1f\\x12\\xaa\\xcd\\x96\\x7e\\x08\\xb0\\x8c\\x41\\xc3\\xc8\\xca\\x3f\\xee\\xda\\xa5\\xb8\\xb6\\x3b\\xce\\xc0\\x61\\x38\\x64\\xd9\\x53\\xd8\\x11\\x43\\xec\\x81\\x42\\x5b\\xde\\x29\\x16\\x4a\\x08\\x76\\xf2\\x3f\\x37\\xac\\x9a\\xc9\\x47\\x36\\x72\\xce\\x11\\xa0\\x8b\\xd5\\x47\\x6f\\x6f\\x66\\xd6\\x65\\xe9\\xad\\x61\\x7e\\x34\\xeb\\x32\\xee\\x56\\xff\\xa4\\x59\\xf2\\x0d\\x1b\\x93\\x53\\xd7\\x82\\x12\\x98\\x54\\x57\\x50\\xc6\\xef\\xf3\\xe7\\xd4\\x07\\x3d\\xc3\\x18\\x5e\\xde\\x03\\x91\\xcc\\xe0\\x57\\x5f\\x8b\\xa6\\x37\\xd8\\x00\\x06\\x8d\\x9d\\x7e\\x54\\x03\\xba\\x70\\x38\\xd2\\xdb\\x77\\xda\\x14\\x47\\x84\\xf2\\xe8\\xea\\x76\\xae\\xdf\\xe5\\x21\\xe7\\xdc\\x6a\\x67\\x4e\\xde\\x35\\x57\\x95\\x95\\x99\\x3f\\xb2\\x0d\\x44\\xb4\\x05\\x27\\x83\\xf5\\x6c\\x8c\\x0b\\xbd\\x04\\x40\\xb6\\x9e\\xab\\xde\\x84\\x46\\x8d\\xd1\\x3c\\x67\\x1f\\xb1\\xbb\\xd5\\xcb\\x02\\x2c\\x2a\\x4f\\xcf\\x35\\x42\\xd8\\xb3\\xbb\\x51\\x8e\\x5a\\xde\\xbd\\xdc\\x84\\xe7\\x14\\xb1\\x3b\\xe5\\x2c\\x56\\xb2\\x82\\xb4\\x2a\\xc0\\x89\\x2a\\x54\\x59\\x28\\x1b\\xe7\\x16\\x07\\x29\\xf4\\x11\\x2c\\x7d\\x99\\xdf\\x9b\\xe5\\x43\\x4f\\x82\\x3a\\x9c\\xe0\\x50\\x17\\x89\\xde\\x1d\\x55\\x0a\\xd5\\x0b\\xb1\\x8c\\x8d\\x89\\xa3\\x36\\x68\\x27\\x0b\\xff\\x7b\\x91\\xff\\x11\\x8f\\x5c\\xd9\\x90\\x9a\\xdd\\xde\\x90\\xc0\\x24\\xa3\\xad\\x71\\x39\\x15\\x17\\x46\\x74\\xf2\\x8a\\xaa\\x9f\\x94\\xa3\\x22\\xba\\xa5\\x43\\x73\\x8e\\xda\\xb4\\x97\\x33\\x12\\xb5\\xbf\\xa1\\x21\\x55\\xde\\xbc\\xee\\x16\\x3c\\xfe\\x2b\\x04\\xac\\x9c\\x12\\x2a\\xc8\\xa4\\xe1\\xbc\\x41\\x8c\\x14\\x95\\x5d\\x96\\x10\\x45\\x5b\\xd9\\x45\\xe9\\x79\\x3b\\x91\\x62\\x67\\xc9\\xc5\\xf9\\xe5\\x3a\\xc0\\x45\\x18\\x92\\x6e\\xc9\\x8e\\xcb\\x84\\xa4\\xf0\\x44\\x5d\\xcb\\x12\\x36\\xc7\\x6c\\x3a\\x67\\x8c\\x69\\xab\\xe4\\xe9\\x2c\\x22\\x97\\x1d\\x62\\x21\\x72\\x01\\xa1\\xbd\\xf0\\x5c\\x04\\xdf\\x84\\x20\\xa3\\xde\\x6a\\x91\\x7a\\x85\\xe7\\x1e\\x2b\\x97\\x25\\xe7\\x7b\\x52\\x29\\x15\\xd4\\xc9\\x94\\x60\\x77\\x63\\x7c\\x2d\\x88\\x13\\xf0\\x10\\xb9\\x49\\x1c\\xf0\\xed\\xdc\\x3d\\x46\\x68\\xcc\\x0f\\x8b\\xc8\\xa6\\x83\\x57\\x9b\\xe5\\x43\\x93\\x4d\\xa2\\x85\\x3a\\x16\\xf5\\x71\\x57\\x24\\xf7\\x79\\x81\\x9f\\x44\\x43\\x9e\\x1d\\xeb\\xca\\xa4\\x27\\x0d\\x9b\\x85\\x94\\xba\\x4c\\x86\\xe1\\x06\\x3b\\x3c\\xe4\\x79\\xd7\\x1a\\x54\\x09\\xbe\\xf2\\x7e\\xf4\\xe5\\xc1\\xd1\\xc9\\x6e\\x8b\\xe1\\x38\\x65\\xaf\\x7b\\xb4\\x3f\\x09\\x16\\x2c\\xcb\\xc8\\x3a\\x2c\\xa9\\xe9\\xb8\\xa2\\x32\\x4e\\x6d\\x99\\x65\\x75\\xee\\xfe\\xd3\\x7e\\xf4\\x99\\x08\\x18\\x57\\x38\\xb8\\xea\\xe4\\x3f\\x8a\\xdc\\xa3\\x30\\xc9\\x9b\\xc6\\x6c\\xc1\\xfd\\x52\\xc5\\x30\\xd7\\x37\\x1c\\x60\\x86\\x9c\\xe4\\x2c\\x19\\x7d\\xca\\x0a\\xd1\\x28\\xb8\\x5f\\x61\\xc8\\x75\\x8f\\x0d\\x54\\x2f\\x3d\\x32\\x98\\xb6\\x5e\\x93\\xc6\\xe8\\xa6\\x8f\\xa0\\xe9\\xa1\\xd5\\xe8\\xc5\\xfe\\xc8\\x05\\xb8\\x3a\\xff\\x43\\x90\\xe1\\x15\\xeb\\x64\\xf3\\xf0\\x78\\xa0\\xb9\\xb6\\x6c\\x27\\x38\\x43\\xfc\\x6c\"},\n{{0x14,0x3f,0x7b,0x42,0x47,0xd5,0x49,0xf6,0xb7,0xc0,0x91,0x72,0x66,0xc5,0x0f,0x96,0x2c,0x28,0xa2,0xea,0x24,0x76,0x2f,0x53,0x7a,0xa0,0x6a,0xd1,0x5e,0x40,0xb3,0x5a,},{0xc9,0x95,0x9f,0x90,0xa2,0xd5,0xfe,0xac,0xba,0xe2,0xc4,0xc8,0x03,0xde,0xd5,0xde,0xab,0x86,0x98,0x76,0x37,0x06,0x43,0x37,0xaa,0x2a,0x0b,0x0d,0xde,0xf2,0xfd,0x86,},{0xc1,0xcf,0xae,0x58,0x51,0x57,0x13,0xea,0x72,0x8c,0xfa,0x09,0x09,0x0e,0x89,0x42,0xf8,0xdf,0x18,0x62,0x1b,0xa7,0x09,0x0e,0x3a,0x33,0x76,0xc3,0x80,0x27,0x75,0xa1,0xec,0xaf,0x43,0x6b,0x18,0x49,0x78,0x04,0x1e,0xbb,0x75,0x22,0x6f,0x97,0x0d,0xf7,0x1d,0x6a,0xd3,0x53,0xc0,0xfb,0x46,0x50,0x23,0xf9,0xe2,0x98,0xf6,0x4a,0x70,0x02,},\"\\xe2\\x74\\x20\\x23\\x47\\xa0\\xd0\\x57\\xa4\\x8b\\xf2\\xa1\\xf6\\xe9\\xf6\\xcb\\x42\\x56\\x07\\x9d\\x80\\x03\\x74\\x09\\x3c\\x02\\x0c\\xbf\\x52\\x0e\\x5f\\xa2\\x7f\\xe9\\x96\\xff\\x07\\xf3\\x3a\\xd3\\xb2\\x1f\\x74\\xab\\x0c\\xd9\\x3c\\x86\\x47\\x5f\\xf3\\x7c\\xf6\\x22\\xd3\\xf9\\xfa\\x4d\\x13\\xbc\\x99\\xf0\\x13\\xe8\\x50\\x2b\\x24\\xe4\\x6c\\xc8\\x7c\\x47\\xe6\\xb2\\xc3\\x66\\x2b\\x50\\xe9\\x79\\xa0\\xf3\\x45\\xb7\\x84\\xff\\x21\\xa8\\xa4\\xd9\\x2a\\xdc\\x65\\xe8\\x6e\\x33\\xb4\\xdb\\xe1\\x7f\\x52\\x8c\\xcd\\xf5\\xb4\\x86\\x46\\x64\\xba\\x94\\xff\\xdb\\x7c\\x7d\\x24\\x12\\xb4\\x38\\xe6\\xe4\\x3f\\xa9\\x66\\x81\\x47\\xee\\x33\\x28\\x22\\x4d\\x1f\\x52\\xa3\\xf5\\xb5\\x43\\x59\\xb4\\xf7\\xfe\\xf6\\x9a\\xf8\\xf8\\x67\\xb4\\x78\\xf1\\x30\\xa1\\x47\\xbe\\xa4\\x2e\\xd3\\x98\\x03\\xbc\\xbc\\x25\\x57\\xbc\\xa8\\xc3\\x99\\x9f\\x1d\\x24\\xf0\\xa6\\xb0\\x3c\\x98\\x84\\x60\\x11\\xf9\\xec\\x74\\xf6\\x66\\x41\\x7b\\x95\\x02\\x0e\\xb1\\xfb\\x2f\\xb8\\x8b\\x63\\x12\\xe5\\x00\\x8c\\xff\\x03\\xe2\\xd7\\x7a\\x26\\xaa\\x53\\x2d\\x17\\x80\\xb5\\x07\\x7f\\x9e\\x8b\\x82\\x86\\x74\\x45\\x5d\\x6b\\xc9\\x57\\x97\\x5f\\x7b\\x2a\\x50\\xe7\\xfd\\x7c\\x16\\x12\\xce\\x02\\x36\\x2e\\xfa\\x4c\\x55\\x5a\\x1e\\xef\\x68\\xec\\x34\\xa5\\xc0\\x06\\xa6\\xda\\x00\\x8a\\x31\\xd4\\x19\\x3d\\xc2\\xcc\\x64\\x76\\x85\\xad\\x3c\\xfa\\x3b\\xd7\\xc5\\x60\\xb7\\xae\\xd4\\x5f\\x0f\\x1a\\x3d\\x1b\\x5b\\x36\\x22\\x68\\xde\\x53\\x28\\x57\\x05\\x5a\\xb9\\xd1\\xd5\\xd8\\x58\\xd9\\xae\\x9a\\x75\\x9a\\x51\\xbb\\x94\\x78\\xe8\\xf0\\xee\\x93\\xc9\\x84\\xb5\\x76\\xb8\\xb4\\xab\\x46\\x02\\x80\\xbe\\x3d\\xe2\\x05\\xa3\\x2f\\x1d\\xc3\\xd5\\x72\\x92\\x3f\\xb2\\x13\\xac\\x15\\x12\\xd8\\x0e\\xb5\\xad\\x5c\\x18\\x94\\x4b\\xe7\\x7f\\xc1\\x7d\\xef\\x13\\xa6\\x1b\\xbd\\x31\\xbc\\x71\\xac\\xc2\\x3d\\x25\\x0e\\xc5\\x89\\x4e\\xbc\\x21\\x4c\\xfe\\xc0\\xc1\\xb9\\x06\\x51\\x6d\\x32\\xd8\\x36\\xad\\xc8\\x38\\x80\\x2e\\x8d\\xe3\\x0d\\xd7\\x6d\\xf6\\xe6\\x1c\\x1b\\xc4\\x38\\xb6\\x8d\\x2b\\x02\\x5a\\x84\\xf2\\x11\\xfa\\xcf\\x3f\\x13\\x84\\xd2\\x61\\x2d\\x0f\\xae\\xf5\\xd1\\x71\\x31\\xcf\\xe0\\xcf\\xe8\\x33\\xfe\\x95\\x0e\\x47\\x9b\\xc2\\x9c\\xbe\\x7f\\xd6\\xda\\x0c\\xce\\x30\\x7c\\xf0\\xb1\\xbd\\x92\\xc8\\x0e\\x87\\x8e\\x43\\x2f\\x63\\x6e\\xa0\\xcd\\x42\\x48\\x0c\\x07\\xe8\\xb8\\xe5\\x7e\\x69\\xb2\\xf9\\x38\\xb7\\x81\\x20\\xf6\\xaf\\x4a\\xbe\\xbf\\x7d\\x4b\\x05\\xca\\xcd\\x6e\\xed\\x85\\x44\\x91\\xc0\\x29\\x75\\x5c\\x4e\\x66\\x33\\x89\\x93\\xed\\x2a\\xc2\\x5d\\x19\\xa0\\xc5\\xb4\\x0f\\x5e\\x32\\xc8\\xa8\\xb1\\xbc\\xe3\\x69\\x71\\x81\\x86\\xc9\\x1d\\x60\\xed\\xff\\x24\\xa8\\x37\\x7a\\x99\\x69\\x75\\x75\\x99\\x06\\x7d\\xd3\\x12\\x63\\xa0\\x6d\\x6a\\x61\\x15\\x47\\x81\\xf2\\x96\\x11\\xab\\x81\\x2f\\xf8\\x2e\\x81\\x37\\x39\\x64\\x62\\x63\\x70\\x4c\\xd6\\x04\\x63\\x57\\xa2\\x3c\\x04\\x5e\\x24\\x07\\xb7\\xa8\\x95\\x08\\x25\\x93\\x91\\x31\\x4f\\x2f\\xbe\\xe4\\x9a\\xef\\x08\\x55\\xc6\\xe5\\xe6\\x3d\\x91\\x2a\\x19\\xdf\\x15\\xb1\\x1e\\xce\\x34\\xe2\\x76\\xdc\\xb8\\x8b\\xf2\\xf2\\xe4\\x75\\x63\\x58\\xf3\\x4a\\x0e\\xe3\\x95\\x2b\\x68\\x6f\\xcd\\x17\\x57\\x8a\\x88\\x41\\x76\\xd3\\x4e\\xa2\\x91\\x6c\\x5d\\x9f\\xcd\\x00\\xeb\\x9e\\x0a\\xa9\\xf2\\xcf\\x0f\\x16\\xe2\\x56\\x4b\\xfd\\x28\\xb6\\xab\\x59\\x68\\xb8\\x44\\x8f\\x06\\x83\\x20\\xe4\\x18\\x71\\x60\\xf8\\x66\\x57\\x81\\xb1\\xe2\\xed\\x9d\\x04\\x9e\\x1b\\x54\\xa7\\xd7\\x27\\x20\\xff\\x9d\\x4f\\x07\\x30\\x51\\x99\\x6a\\x9d\\xb6\\xf0\\xc6\\x82\\x1c\\x42\\x4f\\xa5\\x1d\"},\n{{0x0d,0x1f,0xe9,0xd8,0xb9,0xa2,0xf0,0x4c,0x22,0xbb,0xb0,0xed,0xea,0x38,0x33,0xa0,0xce,0x43,0x33,0x93,0x47,0x53,0x1f,0xdb,0x67,0xed,0x51,0x3a,0x13,0xd3,0x6b,0x39,},{0x67,0xc4,0x9f,0x41,0x0f,0x48,0x53,0x29,0x3d,0x0c,0x4d,0x39,0xf4,0xc1,0xb3,0xd6,0xc6,0x10,0x3c,0x5c,0xfe,0x20,0xa9,0xa5,0x9b,0x53,0x93,0x20,0x43,0x51,0x73,0x69,},{0xb0,0x57,0x25,0xe7,0x37,0x1e,0xd0,0xa9,0x1e,0xbc,0x89,0xf3,0xc3,0x0b,0xaa,0x99,0x18,0x37,0x63,0xed,0xb4,0xce,0x34,0xfe,0x90,0x1a,0xf3,0x73,0x1e,0x00,0x1c,0xc5,0x4f,0x28,0x71,0x18,0x91,0x5e,0x90,0x36,0x5d,0x91,0xac,0xa8,0xfe,0xb1,0x70,0x87,0x69,0xf9,0xf1,0xd6,0xee,0xf5,0xaa,0x11,0x3b,0xee,0x00,0xb5,0xef,0xab,0x27,0x04,},\"\\x64\\x21\\x7a\\xc8\\x41\\xfd\\x4d\\x64\\x59\\xbf\\xc4\\xa4\\x9b\\x88\\x01\\xd6\\x92\\x9b\\xf1\\x9b\\x40\\x8e\\x8a\\x53\\x79\\x0c\\xeb\\x51\\xec\\x34\\x1f\\x9b\\x46\\xa3\\x51\\xe8\\xc2\\xe5\\x9d\\x88\\x7e\\x1e\\xac\\xcb\\x91\\x42\\x31\\xcd\\xca\\x1d\\x3e\\x5c\\x47\\xd1\\x66\\xb4\\xcd\\xb9\\xb5\\x8c\\x01\\x3c\\x59\\xa3\\xbd\\x28\\x3a\\xd1\\x0f\\x6b\\xd6\\x2c\\x0f\\x15\\xf7\\x64\\xce\\x14\\xf3\\xb2\\x65\\xf5\\x37\\xc6\\x3e\\x73\\xb6\\xc4\\xfa\\x65\\xe0\\x6c\\xe1\\xe1\\xf4\\xae\\x0d\\x11\\x48\\x9d\\xd2\\x60\\x2f\\x95\\xfc\\x40\\x2b\\x77\\x12\\x05\\x2a\\xbc\\x84\\xbd\\xc7\\x78\\xc1\\x9f\\x10\\x00\\x1b\\x4e\\x0d\\x5f\\xbe\\x46\\x30\\x90\\xe8\\x3e\\xf4\\x38\\xfe\\x06\\x8f\\x3b\\xb6\\xfb\\xc2\\xc1\\x39\\xaf\\x06\\x78\\xed\\x2a\\x11\\xfa\\xa1\\xb9\\xe4\\x9a\\xaa\\x46\\x20\\xab\\xfc\\x08\\x43\\x9f\\xbf\\xe2\\xc6\\x18\\x40\\x76\\x9e\\x5f\\xda\\x26\\x77\\xf8\\xe2\\xf0\\xa1\\x45\\x64\\xf9\\xf5\\x04\\x23\\x2a\\x9f\\xc0\\xd9\\xda\\x47\\x1e\\x67\\xfb\\xc5\\x74\\xc3\\xd5\\x6d\\x2a\\xeb\\x93\\x7a\\x58\\x6e\\xd5\\x58\\x35\\x56\\x30\\x8a\\x99\\x8e\\xb1\\xdc\\x47\\x6a\\x01\\x4f\\x5a\\x08\\x22\\x8d\\xbe\\xd9\\x5a\\x12\\x08\\xbc\\x1d\\x1f\\x5d\\x76\\xb4\\xe8\\xd0\\xb2\\x43\\x4b\\x99\\x5a\\xd4\\x58\\xe4\\x29\\xee\\x61\\x42\\xa0\\xc9\\x71\\x76\\x8c\\xc4\\x0c\\x40\\xbc\\xb0\\x8e\\x96\\x03\\xf0\\x96\\x11\\x47\\x44\\x71\\xb3\\x85\\x9d\\x7f\\xd5\\x84\\x21\\x9f\\x02\\x65\\x7b\\x43\\x0e\\x9e\\x56\\x95\\x5b\\x34\\x67\\xac\\x56\\xff\\x2e\\xab\\x22\\xcc\\x49\\x84\\x89\\x03\\x6a\\x57\\x41\\x20\\xe2\\xdb\\x76\\x9a\\x3b\\x21\\x50\\x03\\x89\\x14\\x2c\\x78\\xa8\\x7d\\x06\\x9f\\x0e\\x25\\x76\\xca\\xfd\\xa8\\xcd\\xdd\\x79\\x15\\xa9\\x22\\x87\\x73\\xd2\\xac\\x9a\\x07\\x5c\\xb3\\x87\\xf2\\xa8\\x98\\x61\\x72\\x13\\xb2\\xcc\\x50\\x59\\xd1\\x19\\x41\\xbc\\x4f\\xe5\\x86\\x41\\xe7\\xc1\\x75\\x02\\x67\\xe5\\x3e\\x99\\xc4\\x21\\xcb\\x4c\\xf2\\x1d\\x09\\x8c\\xa2\\xd1\\xf4\\x16\\x44\\xf7\\x90\\x89\\x83\\xeb\\x17\\x4a\\x23\\xa7\\x81\\xcf\\x15\\xef\\x38\\xeb\\x91\\x16\\xed\\xa4\\x12\\x3a\\x15\\x22\\xf5\\x3b\\x81\\xfb\\x73\\x68\\xe8\\x07\\x5f\\xb8\\x38\\x59\\xd2\\xcf\\x98\\xd9\\x21\\x53\\x5a\\x70\\x9f\\xaf\\xa9\\x87\\x3c\\x4a\\x03\\x9a\\xae\\x68\\x2f\\x7e\\x62\\x86\\xb8\\x99\\x25\\x7c\\x09\\x24\\x01\\x6c\\xa5\\xbf\\x6d\\x31\\x69\\x09\\x92\\x11\\xa9\\xa4\\xa6\\x74\\x5c\\xdd\\x31\\x98\\xf1\\x33\\x7f\\x60\\x92\\x82\\x27\\xce\\x3c\\x7d\\x60\\x96\\x0b\\x53\\xde\\xdf\\x01\\x1a\\x89\\x40\\xf5\\xc4\\x68\\x20\\x7a\\x38\\x94\\xbb\\x08\\x72\\xb3\\x33\\xcc\\xde\\xc9\\xd5\\xec\\xd9\\x11\\xec\\xbb\\xb9\\x6c\\x9b\\xc4\\xbd\\x48\\x75\\x32\\x0e\\x4d\\x3e\\x9c\\x02\\xd9\\xdc\\x76\\x10\\x9e\\xc4\\x5e\\x61\\xd1\\xcf\\x5a\\xc7\\x29\\xf2\\xe3\\x4a\\x96\\x47\\xb9\\x5b\\xce\\x70\\xb0\\xc6\\x33\\x17\\x1a\\xda\\xf0\\xdf\\xdb\\x5a\\xfb\\xa4\\x03\\x5b\\x3c\\xce\\x8c\\xb7\\x14\\x1a\\xd1\\x42\\xbb\\x7a\\xdd\\x4f\\xc3\\xf9\\x61\\xd4\\x2d\\x72\\x03\\x75\\x4a\\x4e\\x31\\x32\\x21\\xd4\\x87\\x83\\x1e\\x32\\x94\\x7d\\xa9\\x11\\x38\\xab\\x64\\x8b\\x59\\x52\\xef\\x69\\x56\\xe2\\x7a\\xa5\\xd2\\xc1\\x75\\x79\\x4b\\xf8\\x1e\\xf2\\x77\\xfa\\xa6\\xb9\\x05\\xe1\\x45\\x02\\x86\\x68\\x87\\xd8\\x78\\x80\\x60\\x6e\\x81\\xb2\\x7a\\xf0\\x1b\\xb2\\x63\\xec\\xf2\\xc5\\x82\\x05\\x85\\xea\\x6c\\xe8\\xd8\\xb3\\x91\\xd8\\x6f\\xce\\xda\\xdc\\xd1\\x1f\\xdb\\xb5\\x66\\xfd\\xf1\\x47\\xf4\\x02\\x01\\x0f\\xc3\\x5f\\x51\\x57\\xe0\\x36\\x14\\x6b\\x37\\x36\\xc8\\xa4\\x33\\x59\\x12\\x7c\\x26\\x1f\\x6b\\xf0\\xca\\xd3\\xbd\\x8a\\x34\\xcb\\x15\\x09\\xf7\"},\n{{0xc1,0x0b,0x5a,0xc6,0x05,0x5a,0x1d,0xdb,0xca,0x28,0x55,0x2e,0x5c,0x72,0xeb,0xd0,0x52,0x78,0xc9,0x22,0x39,0xb2,0xfc,0xd0,0xc1,0x35,0x36,0x51,0xa8,0xe5,0x59,0xa0,},{0xb2,0x18,0x3e,0x1b,0x00,0x81,0x6d,0x29,0x30,0x5f,0x74,0x68,0xe7,0xe4,0x5e,0xed,0x3f,0xd8,0xf2,0x3c,0x15,0xb3,0x05,0xf9,0xfd,0xa9,0x3e,0x81,0x2d,0x65,0xbc,0x27,},{0x8a,0x9a,0x32,0x17,0xfd,0xf0,0x64,0x3a,0xaa,0xa5,0xc8,0xfb,0x2a,0x88,0xa5,0x56,0x39,0x88,0x59,0xb8,0xfe,0xef,0xbc,0xb4,0x8c,0xcd,0x88,0xe5,0x85,0xa1,0x67,0xc9,0x4d,0xbb,0x5c,0x0c,0xad,0x24,0xd1,0x5b,0xca,0xbb,0xc1,0xed,0xb2,0x1f,0x02,0xa8,0xc4,0x57,0xc5,0x61,0x20,0xa3,0x23,0x4a,0xc3,0x35,0x77,0xb9,0xaf,0x2d,0xdc,0x01,},\"\\x35\\x94\\x90\\x5f\\x9e\\xa4\\x64\\x61\\x5f\\x41\\xb8\\x7a\\xbb\\x9d\\x16\\x73\\x37\\xf2\\x9d\\x45\\xd9\\x7f\\x7a\\x14\\x64\\xec\\x9f\\x2e\\xe5\\x0f\\x90\\xf2\\xe6\\x73\\x39\\x87\\x4d\\x3f\\x20\\x93\\xbe\\x92\\x26\\x10\\x77\\x01\\xec\\x1a\\xab\\x94\\x1c\\x4e\\x05\\x9f\\x1b\\xb2\\x6c\\xe8\\x6e\\x14\\x8d\\x1d\\x9f\\x0d\\xa2\\xa2\\xa0\\xf9\\x82\\x9a\\x36\\x4f\\xb4\\xf1\\x3f\\x58\\xb9\\x60\\xd0\\xf8\\xd7\\x23\\x23\\x28\\x3c\\x44\\x90\\xef\\xdf\\x57\\x87\\x86\\x45\\x89\\x0f\\xf7\\xbc\\x50\\x65\\xda\\xd6\\xe5\\x1d\\xd1\\xe5\\xb9\\xa5\\x07\\x51\\x50\\x97\\x8b\\x33\\x67\\xf1\\xba\\x84\\xe4\\x5f\\xf1\\xf1\\x27\\x6c\\x57\\x6e\\x4b\\xc7\\x2b\\xe8\\xaa\\x8e\\x40\\x5f\\xc2\\xb2\\x7f\\x81\\x46\\xb9\\x99\\x84\\x5f\\xaa\\xa0\\x59\\x5d\\x3c\\xb7\\x0e\\x5d\\x37\\x12\\xed\\x54\\xa0\\xfb\\x3e\\x32\\x2d\\x45\\x38\\x0b\\x5d\\xe3\\x60\\x9b\\x96\\x7b\\x95\\x9b\\xca\\x5a\\x58\\x3c\\xc5\\x20\\xcd\\xcb\\x7b\\xcb\\xb8\\x29\\xaa\\x25\\xd7\\x93\\x20\\x95\\xec\\xb3\\x03\\x92\\x3c\\x25\\x60\\xaf\\xc3\\xfd\\x73\\x24\\xb7\\xb7\\xac\\xd0\\x89\\xa9\\xf0\\x0c\\x03\\xa7\\x3d\\x04\\x3d\\xc0\\xcf\\x0b\\xa0\\xd8\\x41\\x1e\\x2b\\x1b\\x18\\xd2\\x1d\\x2a\\x32\\xa7\\x26\\xa5\\x30\\x59\\x14\\x0f\\x78\\x4f\\x7c\\xed\\xf2\\xf3\\x3c\\xec\\x66\\xfe\\x4a\\xd5\\xcc\\x9e\\xac\\xcb\\xe4\\xae\\x10\\x03\\x6a\\xc3\\x52\\x3b\\xac\\x70\\x0a\\x11\\x3a\\x98\\xb5\\x98\\xe6\\xdf\\x03\\x04\\xc6\\xfa\\x32\\x12\\xac\\xc0\\x4c\\x4e\\x3c\\x7f\\x66\\x87\\x36\\x2e\\xf8\\x6d\\x61\\x7c\\x6d\\xd4\\x83\\xf8\\xd8\\x0c\\xea\\x66\\xd1\\x95\\x11\\x27\\x42\\x8a\\x61\\xc1\\xe1\\x55\\xa6\\x85\\x0b\\xb2\\xaf\\xb7\\xf9\\x1c\\x82\\xd7\\x3e\\xb2\\xb0\\x54\\x3e\\xe8\\xfc\\x1f\\x38\\xe1\\xdc\\xdb\\x3c\\x50\\x3d\\xdc\\x9b\\xa0\\x81\\x24\\x56\\xa5\\xce\\x2e\\x11\\xd5\\x56\\x48\\x7a\\x64\\x69\\x74\\xa7\\xbb\\xf8\\x6e\\x80\\x6c\\x58\\xc6\\x8c\\x42\\x69\\xa7\\xc9\\xbb\\xca\\xc0\\xff\\xef\\x98\\x35\\xb3\\x3d\\xc4\\x49\\xa7\\x54\\x79\\xec\\xd2\\x3f\\x6d\\x14\\x9c\\x1e\\x5e\\xa8\\xb6\\x92\\x08\\xff\\x36\\xe5\\xfb\\xd6\\x82\\x95\\x55\\x03\\x18\\xbf\\xa0\\xd3\\xb1\\xd6\\xc1\\xad\\x42\\x70\\xbc\\xab\\x09\\x04\\xae\\x53\\x49\\x1f\\x9b\\x1c\\xa5\\x02\\xe0\\x12\\xee\\xd7\\x7c\\x42\\x7d\\x49\\xa0\\x96\\x2f\\x10\\x55\\x12\\x5d\\xd7\\xb5\\x37\\x33\\xd8\\x52\\x89\\x34\\xb5\\x58\\x0d\\xd5\\xfd\\x5b\\xbe\\x85\\x49\\x78\\xba\\xe3\\xd2\\x5b\\xb4\\xae\\x94\\x4e\\x90\\x65\\xe8\\xe2\\xe0\\x79\\x46\\x51\\x8a\\x6f\\x54\\x8e\\x36\\xe0\\x56\\xbe\\x82\\x4d\\x9e\\x02\\xa7\\xa3\\xea\\xad\\xd3\\x79\\x29\\xf5\\x81\\x01\\xcb\\x18\\x53\\xbe\\x3d\\x75\\x47\\xf5\\x8f\\x49\\xe3\\x8b\\x01\\x8a\\x74\\x8d\\x3f\\x19\\xc4\\x85\\x82\\xab\\xbd\\xbe\\x95\\x3a\\x8a\\x25\\xba\\x9d\\x36\\x5d\\xea\\x83\\x59\\x35\\x89\\x9c\\x19\\xfb\\x0b\\x51\\x90\\x6a\\xa9\\x72\\xc5\\xac\\x45\\xe9\\x9c\\x40\\xb3\\xb7\\x6e\\x35\\xd3\\x27\\xe3\\x21\\xe8\\xae\\x23\\x06\\xa6\\xeb\\x3d\\x8c\\xb6\\xec\\x2f\\xa5\\x39\\x9a\\xdd\\x19\\xea\\x00\\x28\\xa0\\x17\\x92\\xc0\\x8e\\x27\\xc1\\x6c\\xf4\\xf8\\x5a\\xaa\\xae\\x72\\xf9\\x86\\xb0\\x99\\xf9\\xeb\\xe4\\xad\\x0b\\x25\\xd0\\x6d\\x3d\\xe4\\x4a\\x8b\\xfa\\x52\\x84\\x4b\\xe4\\xa9\\x39\\x44\\x83\\x3c\\xe2\\xad\\xd5\\x1b\\xb5\\x54\\xb3\\x56\\xa7\\xdc\\x49\\x74\\x8d\\xd4\\x5a\\xe7\\xec\\x9e\\x8d\\xb4\\x26\\xc9\\x7a\\x25\\xda\\x5e\\xdd\\x3b\\x62\\x1e\\x4a\\xdb\\xde\\x48\\x19\\x7a\\x33\\x14\\xde\\x1c\\x50\\xf4\\xd6\\x00\\x20\\x27\\xdd\\x75\\x19\\xdd\\xe3\\xe1\\x57\\x29\\xe4\\x86\\x95\\x5a\\xc4\\x0d\\x9d\\x66\\x87\\x6f\\x90\\x66\\x8c\\x68\\x9d\\x8a\\xb5\\x98\"},\n{{0x06,0x1b,0xdd,0xab,0x28,0x0b,0x0f,0xdc,0xb2,0x6b,0xfd,0x9a,0x0f,0xc7,0x21,0xf6,0x8f,0x88,0x34,0x3b,0x5d,0x39,0x83,0xa1,0x6b,0x6d,0xfa,0xa5,0xe7,0x69,0x69,0xf3,},{0x81,0x55,0x78,0xbb,0xa6,0xe7,0x07,0x0e,0xbd,0xec,0xa1,0x17,0x56,0x8b,0xd7,0x7e,0xbf,0xf9,0xe1,0x4c,0xb8,0xbc,0x20,0x0c,0x32,0xbd,0x87,0xdb,0x1f,0xb3,0x7d,0x6c,},{0xb8,0x32,0x97,0xcc,0xdd,0x6d,0x00,0x98,0xeb,0xf5,0xd1,0x32,0xd1,0x74,0xde,0x19,0x58,0x31,0x1a,0x76,0x6b,0xcc,0x4d,0xa1,0x5f,0x86,0x4d,0x80,0x1f,0x38,0xe0,0x9d,0x61,0x3e,0x7a,0xa8,0xc3,0x36,0x30,0x27,0x35,0xd7,0x5b,0xe4,0x16,0x6d,0x73,0xb0,0x18,0x4b,0x0e,0x0b,0xc5,0xef,0x39,0xed,0xbc,0xcb,0x6e,0x0e,0x61,0xaf,0xeb,0x0c,},\"\\xee\\x76\\xb4\\x0c\\xd4\\x29\\xea\\xc7\\xbc\\x12\\x83\\x9c\\xa2\\xf7\\xcd\\x31\\xf1\\xe0\\x09\\x8a\\x39\\xc5\\xfc\\x19\\x80\\x5b\\xe0\\x33\\x1f\\x44\\x79\\x9e\\x31\\x8d\\x12\\x57\\x1f\\x06\\xe2\\x99\\x37\\x53\\xa3\\x68\\x5c\\xd2\\xa9\\x6b\\x23\\x01\\xe2\\x00\\x24\\x20\\x9a\\xdc\\x5a\\xdf\\x74\\x79\\xff\\x90\\xc4\\x77\\xc3\\x69\\x5a\\xbb\\x99\\xbd\\x28\\x57\\x9d\\xbc\\x78\\x31\\xa1\\x92\\xbe\\xed\\x0c\\xe1\\x7b\\x03\\x8b\\x20\\x76\\x48\\x00\\x65\\x3a\\xf7\\xaf\\x02\\x4e\\x2a\\x10\\x4e\\xd0\\xf3\\xe5\\x2d\\x4b\\xbd\\x3e\\x10\\x9c\\xf1\\x26\\x29\\x1f\\x49\\xb0\\xa2\\x1b\\xe4\\x33\\xc1\\xc5\\xa2\\x58\\x9e\\xa5\\x72\\x99\\x7f\\x63\\xd2\\xbb\\x39\\x72\\xd5\\x32\\xbe\\x35\\xa0\\x47\\x1e\\xf0\\x57\\x3d\\x79\\x5c\\x07\\x2b\\x6a\\x86\\x85\\xb9\\x5e\\x47\\xb0\\x9e\\xa9\\xf4\\x75\\xd9\\x3b\\xf1\\x2b\\xbd\\x77\\xb7\\xd2\\xbf\\x5d\\x5b\\xdd\\xf0\\xae\\x02\\x37\\x53\\x71\\xd1\\xd7\\x99\\xea\\x92\\x04\\xbe\\x38\\x9e\\x6a\\x8e\\x5d\\xee\\xdc\\xd4\\x92\\x02\\xe9\\x2d\\xf7\\xc3\\xe7\\x61\\xf9\\x2e\\xf8\\xd7\\x9f\\xa7\\x38\\xd2\\xc5\\xbc\\x28\\x0e\\xd3\\x28\\x79\\x83\\x2f\\xf2\\xb0\\x26\\x42\\x45\\x89\\xcd\\xbd\\x52\\xd1\\x5b\\x60\\xf2\\xaa\\x35\\x26\\xb8\\x98\\x84\\x9a\\x34\\xa8\\x5f\\xf1\\xc4\\x7d\\xc6\\x55\\x4b\\x85\\xac\\x76\\xaa\\x79\\x35\\xcb\\xf3\\xf7\\xbc\\x80\\xad\\x00\\x91\\x92\\xa8\\x75\\xca\\x20\\x9b\\x40\\xfe\\xb0\\x47\\xcc\\x44\\x69\\x68\\xf9\\x70\\xda\\x47\\xb8\\xcd\\x67\\xda\\x7e\\xb4\\xe5\\x4a\\x0e\\x5a\\xb2\\x0c\\xb3\\x5b\\xc6\\xfb\\x7f\\x13\\x30\\x7c\\xe6\\x7e\\xb6\\x20\\x4a\\x67\\xce\\x9b\\xb1\\xd1\\x39\\xc1\\xb4\\xbd\\x5d\\xbe\\xd5\\x80\\x10\\xc8\\x7b\\xf8\\x31\\xe6\\x52\\x2e\\xe1\\x82\\xda\\xd9\\x45\\x80\\x4b\\x76\\x7c\\x4d\\xf2\\x55\\x4f\\x15\\xb9\\xe9\\xaf\\xd2\\x59\\x9e\\xf2\\x58\\xc6\\x7a\\x22\\xca\\xeb\\x92\\xa5\\x79\\x88\\x00\\x6b\\xbc\\x72\\xc1\\x04\\xfa\\xc7\\xe5\\x41\\x3c\\xd3\\xd3\\xb8\\x02\\xc8\\x3e\\x63\\x9e\\xaf\\xe2\\x12\\xa3\\x8b\\xb7\\xef\\x77\\x9a\\xf1\\xa9\\x4e\\xe1\\x37\\xf6\\xc6\\x06\\x67\\xbc\\x48\\xf2\\x7b\\xf4\\xa2\\x22\\x41\\xbc\\x44\\xbb\\x60\\x33\\x83\\x62\\x39\\xbd\\x6e\\xaf\\x3e\\x2e\\x22\\x31\\x87\\x84\\x1e\\x46\\x41\\xb0\\xf4\\xe9\\xff\\x8d\\x5a\\x41\\xdd\\xbe\\xab\\xb4\\x13\\x8f\\x6b\\x58\\x5a\\xce\\x0f\\xb6\\xb5\\x3d\\xc3\\xc9\\xed\\xc0\\x37\\x3b\\x60\\x47\\xf2\\x7d\\x83\\x5e\\x8e\\x24\\x66\\x44\\xfd\\x83\\x2c\\xcf\\xe0\\xdf\\x25\\xc3\\xd7\\xda\\x18\\x7c\\x9f\\xa0\\x54\\x20\\xd4\\x34\\x55\\xf2\\xd0\\x8b\\x57\\x19\\x29\\x38\\x6b\\x59\\xc6\\xe0\\xe1\\x0a\\x35\\x60\\x1d\\xa8\\x99\\xb1\\xb4\\xdc\\x3d\\x95\\xb6\\x7d\\xd9\\xa8\\x38\\x18\\xb0\\xa3\\x18\\xbf\\xdd\\xa0\\x64\\x64\\xb4\\xa4\\x2d\\x3c\\xb9\\x85\\xf3\\x0e\\xc9\\x7d\\x6a\\x2a\\xf1\\x32\\x91\\x15\\x5d\\x60\\xce\\xc5\\x7c\\xbd\\x58\\xd5\\xcf\\xcb\\x35\\xc1\\x85\\x35\\xe8\\xd2\\x99\\xb5\\xb0\\x07\\x59\\x08\\x92\\xea\\x94\\x9d\\x1b\\x13\\x7a\\x62\\xb3\\x9a\\x43\\x6c\\xd7\\xe5\\xb9\\xf8\\xd1\\xb6\\x93\\x8d\\xba\\xa6\\x2c\\x22\\x68\\xd4\\x59\\xc6\\x22\\x0a\\x3e\\x6f\\xcb\\xf8\\x0b\\xa0\\x11\\x8a\\xcd\\x23\\x42\\x56\\x3f\\xbd\\xbc\\x1f\\x7c\\x9d\\xba\\x7e\\xa2\\xc0\\x72\\xaf\\xc8\\xae\\x21\\x28\\xe3\\xeb\\xca\\x06\\x44\\xff\\xd8\\x16\\x3e\\x80\\xa1\\xa5\\x57\\xd9\\xd3\\x90\\x34\\xcc\\xd9\\xdb\\xd1\\x2c\\x88\\x55\\xa6\\xf9\\x16\\x5b\\x08\\x01\\x83\\x9c\\xf6\\xe0\\x7a\\x9f\\xba\\x4c\\x64\\xd9\\xc0\\x99\\xe1\\x54\\x10\\xe2\\x90\\xe6\\x77\\x03\\x1b\\x65\\xcf\\x7d\\xeb\\x00\\x79\\xbd\\xad\\xc5\\x73\\xcc\\x05\\x6d\\x76\\x66\\xd9\\x5d\\x03\\x3a\\x0b\\x6b\\xdb\\xa7\\xec\"},\n{{0x2c,0xab,0x5b,0xf5,0x5f,0xfa,0x91,0x4e,0x9a,0xd0,0x76,0x22,0x19,0x0d,0x34,0x3e,0xc5,0x5c,0x13,0xcd,0x91,0xb3,0x88,0xcb,0x75,0x00,0xff,0xe0,0x6d,0xf7,0xc1,0x80,},{0xb6,0x1e,0x43,0x2b,0xb9,0x7c,0xba,0xe3,0x88,0xa2,0x57,0x8a,0x74,0x84,0x99,0x8e,0x00,0xe9,0xad,0x3d,0xdf,0xd6,0xca,0xb8,0xd3,0xa5,0xfc,0x5b,0xa0,0x43,0x07,0xc8,},{0x4c,0xf0,0x8f,0x4f,0xab,0xbd,0x06,0xdc,0xcb,0xcc,0xe2,0xa7,0xa5,0x94,0x1f,0xe9,0xaf,0xdd,0xc4,0xd2,0xd0,0xbc,0x80,0x80,0x2e,0x93,0xb1,0x2c,0xb1,0x35,0xd3,0xac,0xf6,0x51,0x1e,0x0f,0xe4,0x11,0x3c,0x5e,0x3c,0x55,0x41,0xb2,0x7d,0x3a,0x21,0x50,0xa7,0x57,0x74,0x2a,0xc6,0x5f,0x95,0xa9,0xce,0x66,0x73,0xff,0x0c,0xd2,0x1c,0x0f,},\"\\x2c\\x2d\\x04\\xdc\\x3a\\xd1\\x98\\x23\\x59\\xec\\xd5\\xbc\\x3e\\xe0\\x35\\xf3\\x49\\x8e\\xed\\xff\\x61\\x04\\xa9\\x3c\\x60\\x2a\\xf2\\x17\\x9a\\xeb\\x2c\\xb1\\xf4\\x1c\\x5c\\xdb\\x0a\\x77\\xb1\\x24\\xf9\\x46\\xaa\\x8a\\x82\\x4a\\xa3\\x07\\x6c\\x2e\\x1a\\xcf\\xd4\\x8f\\x68\\x07\\x0b\\x26\\x27\\x6a\\x65\\x6b\\x4a\\x47\\x58\\xab\\x15\\x1a\\x6a\\x9c\\x41\\xbd\\x74\\xe0\\x9b\\xbd\\x9a\\xdc\\xce\\x1e\\x87\\xa0\\xa8\\x0d\\x17\\xfd\\x92\\xe8\\x5e\\x4b\\xda\\x47\\x2c\\x98\\x8b\\x6b\\xb1\\x18\\x3b\\x7e\\xe5\\x9a\\x09\\xd8\\x05\\x70\\x46\\x6d\\xb9\\x0d\\xd3\\x74\\x95\\x79\\xc4\\xeb\\x19\\xab\\x75\\xfc\\x15\\x2e\\xcd\\xcd\\x68\\xcd\\x10\\x78\\xef\\x06\\xe5\\x93\\xc7\\x35\\x16\\xfa\\x82\\x91\\x48\\x1a\\x66\\x7d\\x3f\\x95\\xbf\\xeb\\x14\\x4b\\xab\\x59\\xd6\\xdd\\xc7\\x3a\\x27\\x95\\xc1\\x01\\x7e\\x09\\x53\\x6b\\x31\\x62\\xe4\\xbc\\x58\\xf8\\xea\\xd3\\x89\\x57\\x01\\x8c\\xfe\\xc7\\x2b\\xad\\xbf\\x22\\x81\\x9a\\xb0\\xb4\\x06\\xc6\\x47\\x30\\xfc\\x73\\xfd\\x9e\\xe6\\x1f\\x74\\x18\\x7e\\xda\\x91\\xed\\x4e\\x79\\x93\\xe6\\x68\\x84\\xaf\\x43\\xef\\x4c\\x6b\\xf7\\xf7\\xc3\\x79\\xe8\\xf0\\xf6\\x3d\\xcb\\x80\\x41\\xe2\\x6b\\x8b\\x82\\x92\\xb6\\xb6\\xd1\\x90\\xe4\\xad\\xf4\\x30\\xfa\\x82\\xdd\\x74\\xc5\\x73\\x85\\xb9\\x19\\xc4\\x46\\xdb\\x37\\xb5\\xe8\\x76\\x7e\\x4a\\x0c\\x95\\x01\\x3b\\xe8\\x9b\\x2b\\xc4\\xe9\\xfd\\x62\\x75\\x4a\\x84\\x44\\x18\\x40\\x09\\x68\\xae\\xd2\\xdd\\x32\\x8d\\x7b\\x1d\\xc9\\x1e\\x1a\\x2b\\x30\\x09\\xdc\\x7a\\xd1\\x40\\xa0\\x68\\x6f\\x67\\x31\\x68\\xa6\\x0e\\x88\\xd8\\x0c\\x52\\x0f\\xc2\\xdc\\xfc\\x56\\xca\\x9d\\x4b\\x0c\\x88\\x85\\x90\\x99\\x23\\x07\\x14\\xde\\xc8\\x3d\\x26\\xb4\\x63\\x05\\x54\\xdc\\xb9\\xc4\\x90\\x18\\x95\\xf7\\x8f\\x38\\x34\\xb0\\x97\\x66\\xb6\\x7a\\x46\\x5d\\xe8\\xc9\\x49\\x00\\x65\\xbf\\x56\\x83\\x39\\x24\\x33\\x99\\xfd\\xc9\\xd5\\x10\\x03\\x24\\x66\\x7c\\x5a\\xb2\\x8f\\x35\\xc0\\x0f\\x61\\x25\\x63\\x8e\\x61\\xda\\xb7\\x0d\\x1e\\xec\\x48\\x95\\x1d\\xe0\\xfb\\x3f\\x7b\\x23\\xd3\\xcd\\x98\\x24\\x37\\xc6\\x34\\x73\\x41\\x5b\\xef\\x37\\x4a\\x66\\x32\\x96\\xf2\\x98\\x6b\\x1a\\xe9\\x57\\x9b\\x9f\\xfc\\xe7\\x1e\\xc3\\x5e\\xec\\xa1\\x16\\xd1\\x94\\xf8\\xfb\\xa9\\xa4\\x5a\\x91\\xba\\xe2\\x7a\\xc4\\x55\\xdb\\x71\\xa6\\xb0\\x1a\\x72\\x9d\\x0c\\x13\\x5f\\xcd\\xcb\\xc2\\x3e\\x50\\x4a\\x29\\x43\\xc0\\x0a\\xa4\\x20\\x70\\x51\\x9d\\x9c\\xd7\\x7a\\xe6\\x75\\x4f\\x31\\xeb\\x46\\xa3\\xe5\\xbe\\x9e\\xeb\\x3f\\xc8\\xd3\\x1f\\xf1\\x82\\xda\\x9b\\x08\\x7b\\xe3\\x46\\x2c\\x84\\x59\\x12\\x6e\\x86\\x29\\x09\\x23\\x2f\\xd5\\xf2\\xd8\\x9c\\x01\\x81\\x59\\x57\\x61\\x1e\\x6a\\xe7\\xca\\xa9\\x8b\\x60\\x53\\x77\\x6a\\x77\\x15\\xc2\\xf9\\x3c\\xcf\\x03\\x08\\x87\\x03\\x0c\\x56\\xc2\\xb8\\x22\\x6d\\xae\\x29\\x77\\x99\\x5a\\x6d\\x3f\\x1e\\x9d\\x79\\x11\\xa9\\xc9\\xd2\\xa3\\x03\\xf0\\xe0\\x1f\\x32\\x33\\x8e\\xfd\\xaf\\x8e\\xe6\\x3f\\xc4\\x1b\\x25\\x39\\x9c\\xff\\xd0\\xb3\\x5f\\x7e\\xe5\\x67\\x6b\\xd8\\xfd\\x3d\\xa2\\xcb\\xee\\x4a\\xe2\\xea\\x98\\x08\\xd7\\xe7\\x35\\x83\\xd9\\x94\\x33\\x99\\x31\\x46\\x67\\x4a\\x40\\x40\\xf4\\x2f\\x63\\xd1\\xb3\\x13\\x5c\\xc7\\x97\\xa8\\xd8\\xf0\\xb8\\x85\\x73\\xa3\\x28\\x90\\x69\\x6c\\xac\\x94\\x39\\xd1\\xe1\\x5d\\x19\\x6d\\x90\\x90\\xb6\\x2b\\x6d\\xb7\\xe6\\x3c\\x96\\x47\\x2d\\x94\\x6e\\x66\\x8c\\xbd\\xa1\\xf4\\xdb\\x88\\x93\\x00\\xcd\\xcc\\x25\\xe8\\x4c\\x9f\\x38\\x57\\xd1\\xd9\\xe5\\x32\\x41\\xcf\\x62\\x5f\\x39\\x09\\xaf\\x1c\\x8a\\xaf\\xf4\\x30\\x9f\\x68\\xf6\\x54\\xb7\\xa1\\x5b\\x67\\x71\\x1c\\x5b\\x7f\\x9d\\xe7\\x67\\x75\"},\n{{0xdd,0x7b,0x59,0xa3,0x3d,0x97,0x0b,0xef,0x62,0xe0,0xe2,0x1a,0x7b,0x6e,0x4c,0x30,0x96,0x06,0x86,0xf1,0x7f,0x49,0xaf,0xdb,0x4a,0x9f,0x4e,0x80,0x8e,0x35,0x5c,0x7f,},{0x53,0xa0,0xe5,0x72,0x77,0xd9,0xbb,0xee,0xcf,0x99,0xc4,0xd1,0x38,0xfd,0x66,0xfa,0xfc,0xae,0xc7,0xbc,0x5f,0x56,0x7f,0x83,0x20,0x80,0x0c,0x4e,0x58,0x4f,0xf8,0x2e,},{0x87,0x29,0x4d,0x22,0xd4,0xad,0x0d,0x08,0x14,0xe2,0xd6,0xd5,0xfa,0xf5,0x57,0x49,0xe9,0xb3,0x98,0x03,0xb4,0xd4,0xb7,0x87,0x9e,0x60,0xb7,0x77,0xc1,0xfc,0x41,0x58,0x4f,0xe1,0x51,0x35,0xba,0x11,0x23,0xff,0x5f,0x20,0x0d,0xb3,0x5a,0x34,0x68,0xdd,0x4d,0x58,0xda,0xd7,0x7b,0xd9,0x6e,0xe2,0xb8,0x88,0xa5,0xa8,0xb1,0x8c,0x32,0x04,},\"\\x75\\x58\\x03\\x67\\x93\\x05\\x18\\x16\\x8b\\x0a\\x76\\x4d\\x09\\x58\\xbe\\xc4\\xfc\\x46\\xcf\\x59\\x19\\x99\\xeb\\x37\\x37\\xe4\\x2a\\x02\\xea\\x72\\xd2\\x10\\xda\\xad\\x53\\xe5\\x4a\\x7c\\x2c\\x13\\x4a\\x6d\\x47\\x83\\x37\\xd2\\x63\\x33\\x68\\x54\\x81\\x70\\xed\\xef\\x0d\\x85\\x17\\x9f\\x30\\x23\\xe1\\x50\\x38\\x68\\xa6\\xe5\\xe2\\x77\\x5e\\x41\\x2a\\xc0\\x5f\\x05\\x89\\xd4\\x2a\\x37\\x7e\\x75\\xaa\\x6b\\x8f\\x52\\x20\\xa7\\x69\\x9a\\xe8\\xaf\\xf0\\x10\\x94\\xec\\x46\\x9d\\x63\\x61\\xd3\\xe8\\xf3\\x86\\x15\\xed\\xcd\\xa4\\xd2\\xd5\\x28\\x9a\\xcf\\x73\\xdb\\x64\\x56\\x98\\x57\\x80\\xc9\\x2e\\x07\\xf6\\x2c\\x77\\xa9\\x09\\xfb\\x6e\\xf5\\x98\\x82\\x20\\x62\\xbd\\x57\\x2b\\xf7\\x05\\x8d\\xcb\\x83\\x5e\\xf3\\x44\\x3d\\x3e\\x47\\xb5\\xc6\\x03\\xd9\\x27\\x36\\xdd\\x1d\\xf2\\x6b\\xe4\\xb9\\x28\\x3b\\x76\\xe3\\x21\\xd5\\x5c\\xe2\\xb6\\x38\\xcd\\xe2\\x25\\x77\\xca\\x59\\xc9\\x63\\xc2\\x47\\x95\\x56\\xc5\\x75\\xcc\\xb0\\xd6\\xd1\\x8c\\x80\\x4e\\x2e\\xb0\\x1f\\xf5\\x35\\x81\\xeb\\x04\\x0f\\xfd\\x2c\\xc4\\x67\\x60\\x73\\x7a\\x74\\x67\\x2e\\xa6\\xbf\\x78\\x05\\x8a\\x6a\\x0a\\x1f\\x5e\\xbf\\x56\\xde\\xcb\\xf9\\x4b\\x54\\xaf\\xb2\\x3c\\x11\\xd3\\x41\\x79\\xbf\\x09\\x76\\xb4\\x15\\x80\\x17\\xd4\\x07\\xc9\\x5a\\x40\\x1f\\xa6\\xf9\\x62\\x4d\\x77\\x13\\x5e\\xae\\x81\\x41\\xeb\\xea\\x9f\\x35\\xd5\\xf5\\x1b\\x3d\\xed\\x99\\x5c\\x7f\\x70\\xc0\\x25\\xb0\\x94\\xad\\xef\\x2b\\x07\\x1f\\x97\\x11\\x55\\xd7\\x79\\x6d\\x61\\x3a\\x55\\x0d\\x09\\xe7\\xf4\\xdf\\xc3\\x45\\x17\\xb3\\xf8\\xfa\\x43\\x93\\x28\\x6a\\x2b\\x22\\x80\\x17\\xda\\xf2\\xe0\\x15\\x38\\x7e\\x13\\x52\\x7f\\x63\\x66\\x1d\\x3c\\x13\\xe7\\x8e\\x90\\xfb\\x29\\x55\\xee\\xe3\\x45\\x73\\x91\\x19\\xb7\\x91\\xf0\\x5b\\x07\\xc8\\xf4\\x2a\\x43\\x6e\\xfc\\xad\\x1e\\xc5\\xea\\x10\\xf3\\x08\\xf8\\xe2\\x3c\\xa9\\x8b\\xc6\\x5a\\x5f\\xd9\\x39\\x3e\\xfa\\xaf\\xe5\\xcd\\xef\\xba\\x81\\x05\\x81\\x70\\xcc\\x54\\x93\\xc0\\x0c\\xed\\xf2\\x54\\x09\\x74\\x35\\xd2\\xe2\\xfd\\xe5\\x5f\\x86\\x6b\\xb8\\x2d\\xbd\\xfb\\x91\\x54\\x34\\x49\\x74\\x86\\x63\\x59\\x16\\x7b\\x46\\x6c\\xaa\\x90\\x9b\\x91\\x53\\x0c\\x9c\\x7e\\xe8\\xc5\\x3f\\xa9\\x01\\x64\\xbb\\xd0\\xb1\\xfa\\xdb\\xdc\\xd0\\x81\\x27\\xf1\\x9b\\xe5\\x03\\x30\\x71\\x51\\x8d\\x3c\\xf1\\x0a\\xe6\\xbd\\x6f\\x98\\x27\\xe1\\x20\\x6f\\x5e\\xc0\\x95\\xc1\\x98\\x61\\x70\\xe8\\xd5\\xd8\\xe7\\x2e\\x57\\xd4\\x22\\x87\\x01\\xdf\\x2a\\x48\\xc9\\x54\\x87\\x30\\x56\\xcf\\xdf\\xba\\xaf\\xb1\\x0e\\x46\\xa0\\xc1\\xf1\\x44\\xb1\\xa0\\xea\\xcd\\xd2\\xcb\\x66\\xbb\\x91\\x2a\\xc4\\x71\\x78\\x7d\\xab\\xe4\\x83\\x53\\x85\\x91\\x20\\xb0\\x34\\x03\\x56\\x7c\\x41\\x5d\\xdb\\x88\\xfc\\x0d\\x7f\\xba\\x40\\x69\\xbb\\xfe\\xf4\\x06\\xee\\xd7\\x24\\xa1\\x1a\\xbc\\x04\\x1e\\x8e\\x7b\\xeb\\x66\\x3d\\x0d\\xc9\\x9d\\xce\\xf3\\xac\\x6a\\x14\\x90\\x07\\xb4\\x2d\\xd1\\xf2\\x2a\\x77\\xdd\\x52\\x90\\x18\\x14\\x32\\x51\\x72\\x22\\x4a\\x27\\x78\\xf3\\x66\\xfb\\x9e\\xb0\\x2c\\x81\\x2b\\x84\\x2a\\x42\\x84\\x25\\x61\\xc6\\x8f\\x2a\\xc2\\x31\\xc2\\x6c\\xe9\\xe8\\xb1\\x9a\\xe9\\x1e\\xbf\\xad\\x3c\\x0e\\x9f\\x66\\x36\\x3a\\x13\\xec\\xd8\\xb8\\x97\\xa3\\xd0\\x0a\\x26\\xd2\\x57\\x64\\x8d\\x56\\xc6\\x74\\x74\\x41\\xca\\x1c\\x6e\\xe9\\x9f\\x08\\xdd\\xad\\x25\\xd1\\x16\\xdf\\xad\\xab\\x03\\x83\\x00\\x0d\\x3d\\x72\\x25\\xcf\\x2e\\xff\\x70\\x76\\xb2\\xad\\xab\\x95\\x22\\x29\\x25\\x55\\xf3\\x19\\x32\\x06\\x78\\x60\\x00\\xd4\\x2c\\xa3\\x4d\\x70\\x8d\\xc0\\x42\\x84\\xa9\\x4d\\x17\\x4c\\xc9\\x2f\\x10\\x2e\\xfd\\xdf\\x31\\x48\\xc2\\x99\\x69\\x16\\xd4\"},\n{{0xd8,0x80,0xd2,0xfb,0x06,0x26,0x2f,0x57,0xab,0x87,0x78,0xe3,0x3d,0x16,0xb4,0x73,0x06,0x09,0x78,0xa6,0x54,0x9c,0xdb,0xcd,0x55,0x86,0xba,0x81,0x05,0xf5,0xac,0xa8,},{0x0d,0xe4,0x86,0xd2,0x11,0x5f,0xaf,0x2d,0x54,0x72,0x66,0x77,0x2e,0x43,0x0f,0xd9,0x72,0x7b,0xdc,0xac,0xe6,0xec,0xbf,0x2f,0xe2,0x3a,0xb6,0x0f,0x7b,0x52,0x54,0xb1,},{0x4c,0x00,0xa7,0x16,0x68,0xd3,0x21,0x3c,0x29,0xc7,0x04,0x1c,0x5a,0x03,0x7e,0xdf,0x13,0xc6,0x51,0x4b,0xd0,0xeb,0xc8,0x80,0xc9,0x09,0xca,0xff,0x15,0x06,0xa4,0x5d,0x27,0x80,0x9f,0xb7,0x4e,0x66,0x02,0xea,0x2a,0xad,0x0f,0x84,0x28,0x31,0xb7,0x4f,0xb3,0xd6,0x90,0x0c,0xcc,0x52,0x06,0x52,0xda,0x28,0x36,0x8f,0xd9,0x0c,0xa3,0x0e,},\"\\x11\\x47\\x43\\xe8\\x2a\\x09\\x93\\xce\\xc9\\x70\\x50\\x67\\xab\\xd7\\x7c\\x16\\x8b\\x53\\x67\\x7e\\xde\\x5c\\x15\\x9f\\xad\\x36\\xf0\\x6f\\xc1\\xa1\\x4a\\xcd\\x77\\xf8\\x83\\x79\\x9e\\xd9\\x88\\x3f\\x99\\x15\\xae\\xa6\\x38\\xec\\x17\\x41\\xf3\\xf4\\x21\\x58\\x55\\xfb\\x5b\\x07\\xdf\\x37\\x93\\xbb\\xe5\\xb5\\x68\\xeb\\x35\\x94\\x39\\x1a\\x9e\\xf5\\x72\\x7f\\xab\\x93\\xe5\\x74\\x69\\xb3\\x7d\\xe1\\x25\\xb1\\xe9\\xf2\\xe6\\xfe\\x2c\\x3d\\x1a\\x10\\xec\\xf8\\x7b\\x6c\\x0a\\x66\\x5c\\x6d\\x46\\x0a\\x17\\x0e\\xef\\xb9\\xbf\\x71\\x6c\\xd8\\xfa\\xea\\x97\\x64\\xf5\\x79\\xff\\x34\\xeb\\xfa\\x9c\\x4c\\xfb\\x34\\x70\\x6d\\x8d\\xd7\\xc9\\xeb\\x1d\\x10\\xb2\\xdf\\x46\\x0a\\x46\\xbb\\x57\\x89\\x43\\x0b\\xf4\\x49\\x15\\x8b\\x58\\x24\\xf2\\xa3\\xa7\\xb9\\x18\\xb3\\x3a\\xcf\\x2d\\x9e\\xbe\\x90\\x21\\x6d\\x1b\\x7c\\xbf\\x4a\\xf7\\x70\\xc5\\xdb\\x95\\xfc\\x62\\xff\\x3a\\x3c\\x38\\x5c\\x3a\\x82\\x17\\x85\\x3b\\x73\\x46\\x63\\x4a\\xaf\\x30\\x60\\x72\\x88\\xdb\\x0c\\x48\\x3b\\xd4\\xc2\\x22\\xeb\\x33\\x2c\\xb8\\x9d\\xc4\\xa2\\x17\\xe6\\x33\\x4a\\x26\\x84\\x13\\xa3\\x90\\xbb\\x37\\x1a\\xec\\x35\\x5f\\xbe\\x4c\\x73\\x6f\\x7d\\xa7\\x5f\\x9c\\x88\\x75\\x41\\xa2\\xb7\\xd0\\xda\\xc0\\x18\\xb6\\x13\\x8f\\x02\\x1e\\x77\\x26\\x6d\\xde\\xce\\x84\\x68\\x45\\x2a\\xda\\x39\\xf5\\xe6\\x3d\\x02\\x09\\xb9\\xd6\\xda\\xbf\\x97\\x54\\x13\\x25\\x6d\\xca\\xa1\\x5a\\xc1\\x4b\\x60\\x68\\xe1\\x77\\x05\\x6c\\x7b\\xf0\\xf0\\xf7\\xc8\\x84\\xa3\\x40\\x20\\x32\\x29\\x8c\\xd5\\x59\\xa6\\x31\\x20\\x39\\x40\\x06\\x32\\x32\\x7f\\x9c\\x0e\\x76\\x3e\\x52\\x79\\x8c\\xb1\\x77\\xda\\x44\\x75\\xe4\\xb2\\x40\\x5c\\x15\\x7c\\xa4\\x27\\x74\\x11\\x08\\xd3\\x3e\\xd0\\xb7\\xa3\\xf5\\x34\\x38\\xce\\x6b\\x72\\x5c\\x6d\\xd5\\x81\\x4a\\xf5\\x1c\\xfa\\x45\\xdb\\xce\\xd5\\x57\\xf7\\x26\\xdb\\x13\\x0d\\x55\\xcd\\xe7\\x53\\x3b\\xc2\\x09\\x2d\\x6b\\x69\\x9c\\x2c\\x87\\x0a\\xf2\\x82\\x73\\x1e\\x18\\xd6\\x51\\xae\\x85\\xb3\\xdb\\x4b\\xa0\\x28\\x53\\xf8\\xc8\\x7f\\xd5\\xe3\\xab\\x69\\xbc\\x57\\xb0\\x8b\\x81\\xf8\\x3c\\x23\\x9c\\xcf\\x22\\xe8\\x17\\xe2\\xad\\xa4\\xd0\\xad\\x14\\x48\\x7e\\xd1\\x46\\x12\\xc8\\xb0\\x97\\x3e\\xc0\\x65\\x0a\\x55\\xf6\\xbf\\x9a\\xf4\\xae\\x92\\x56\\xad\\x35\\x46\\xa3\\xf6\\x7d\\xd3\\x5d\\x98\\x7e\\xf2\\x19\\x09\\xa9\\x4c\\x50\\xf0\\xef\\x06\\x40\\xe7\\x55\\xb1\\xc4\\xe1\\xa0\\x12\\xaf\\x0d\\x31\\x76\\x6e\\xeb\\x5d\\xf3\\x1c\\xd1\\x04\\xc6\\x4e\\xb6\\x2e\\xb4\\xef\\xb1\\x39\\xcf\\x30\\x57\\x69\\x40\\x1d\\x21\\x3f\\x96\\xa4\\x88\\xd5\\xee\\x7e\\x3c\\xe3\\x2b\\x01\\x92\\xee\\x8f\\x08\\x31\\xbf\\xbe\\x8f\\xe9\\x5d\\xe9\\x56\\x88\\x6b\\x52\\x4d\\x33\\x19\\xb7\\x3f\\xd5\\x6d\\xc6\\x0e\\x9f\\x1c\\x72\\xd7\\x81\\x55\\xa9\\x7c\\x6f\\x43\\x69\\x7b\\x20\\x46\\x6b\\x3e\\x7a\\xeb\\xd3\\x57\\xb9\\x16\\x96\\xe7\\x34\\x8f\\x45\\x99\\xb3\\x4f\\x35\\x91\\xed\\xdf\\xce\\x2a\\x7b\\xd8\\x49\\xab\\x16\\xf7\\xb4\\x3e\\xbb\\x16\\xe2\\x3d\\x6f\\x52\\x10\\xef\\xa3\\x0a\\xb3\\xba\\x8d\\x32\\xc4\\x06\\x62\\xb8\\x66\\x2f\\xd9\\x11\\x54\\x4b\\xc2\\x45\\x8c\\x65\\x69\\xef\\x75\\xa9\\xb9\\xdf\\x6a\\x0f\\x6d\\x80\\xd6\\x58\\xba\\x86\\xb2\\x41\\xca\\x19\\xce\\x9a\\x6f\\xcf\\x01\\xd3\\xda\\xa9\\x5a\\xfb\\x59\\xc3\\xd8\\x9a\\x18\\xb9\\x48\\x62\\x13\\x94\\x32\\x7f\\xc5\\xe9\\x20\\xa7\\x5f\\x98\\xf5\\xe2\\xb3\\xd6\\xc9\\x5f\\xd8\\x52\\xad\\xf5\\x67\\xb6\\xd3\\x7c\\x54\\xd2\\x97\\x08\\x56\\xa5\\x99\\xf7\\x49\\xe2\\xc5\\x5d\\xac\\x7c\\x23\\xe3\\xfb\\x1a\\x63\\xbb\\x4c\\xc4\\x7b\\x8b\\x94\\xf3\\xd5\\x89\\xac\\x4b\\xee\\xf0\\xaa\\xd4\\xe6\\x29\\x2f\"},\n{{0x58,0x58,0x71,0x94,0x1c,0xc2,0x82,0xe3,0x33,0xd5,0x7b,0xbf,0xc3,0xd4,0xae,0xda,0x86,0x2c,0xfa,0x0a,0x37,0x50,0x30,0xcd,0x59,0x4b,0x36,0x92,0x84,0x8c,0x5f,0x00,},{0x4f,0x34,0x38,0x16,0xcd,0x48,0x05,0x0b,0x67,0x8d,0x3a,0xdf,0x70,0x00,0x88,0x77,0xc9,0xfc,0xf5,0xcb,0x66,0x2c,0xc4,0xad,0x2b,0x93,0x86,0x4c,0x02,0x09,0x07,0x07,},{0x29,0x88,0x56,0xe5,0x70,0x18,0x8a,0xef,0xca,0xd8,0x1b,0xb9,0x70,0xf0,0x76,0x96,0x57,0x70,0xc2,0x67,0x62,0xfe,0x29,0xe6,0x55,0x4d,0xc7,0xaf,0xcd,0xb8,0x01,0x72,0x3b,0xf6,0xc7,0x63,0xb4,0xcc,0xd6,0x5f,0x4e,0x15,0xd7,0xd8,0xea,0x38,0xfc,0xf6,0x7e,0xa9,0xd2,0x85,0x90,0xc7,0x92,0x55,0xc1,0xcf,0xeb,0xa7,0xb5,0xe4,0x5a,0x00,},\"\\x65\\x1c\\x10\\x1b\\x3e\\x2d\\xfe\\xf0\\x78\\x3c\\xe9\\xf6\\x1b\\xd0\\xa8\\xbd\\xc9\\x30\\x7a\\xc0\\x48\\x8b\\x9d\\xd7\\x0c\\xd9\\x0a\\x7e\\xd8\\xf1\\x79\\xa7\\x89\\x35\\x55\\x62\\x95\\xb9\\x1c\\xc2\\xb9\\x72\\x11\\xe3\\xb9\\x81\\xb8\\xda\\xfc\\xb3\\xd0\\x6b\\x76\\xd0\\xb6\\xed\\xa7\\xfc\\x61\\x94\\x5c\\x0e\\xe2\\x65\\x2c\\x5a\\xc4\\x54\\x25\\x64\\x96\\xcb\\x82\\xf9\\x8c\\xc1\\xcc\\x92\\xd8\\x18\\x93\\xb1\\x08\\x2b\\x31\\xb4\\x7e\\x6d\\x22\\xa2\\xde\\x60\\x9d\\xe4\\xce\\x8d\\x7c\\xc4\\xf4\\xa1\\x52\\xc4\\x7f\\x41\\x0d\\x7f\\xc3\\x7d\\x38\\xcc\\xd6\\x29\\xa4\\xb3\\x3e\\x62\\x21\\x89\\x60\\x81\\x79\\x7d\\x07\\x53\\xdd\\x4f\\xaa\\x8a\\x8b\\x44\\xd6\\xc4\\x67\\x71\\x66\\xdf\\xb4\\xd5\\x21\\x54\\x46\\x36\\x0a\\x3c\\x28\\xd8\\xf6\\x8e\\x38\\xab\\x54\\x60\\x8b\\x98\\x82\\x1b\\x83\\xc1\\x87\\xb5\\x39\\x3a\\xd8\\x74\\xa7\\x6f\\x4f\\x5d\\x72\\x94\\x93\\xa1\\xfd\\x74\\xcc\\x77\\x19\\xca\\xea\\x99\\x1d\\x22\\x9c\\x5d\\x0c\\x8c\\x4c\\x5f\\x89\\xd8\\xe4\\x34\\x5f\\x4f\\x52\\x21\\x43\\x13\\x41\\x0b\\x8c\\x06\\xb3\\x31\\x5f\\x45\\xed\\x0c\\x2f\\x91\\x38\\xab\\x96\\x6a\\xec\\x0a\\x64\\x5b\\x6d\\xba\\x76\\x38\\x0a\\x53\\x91\\x23\\xe0\\xf3\\x3b\\x97\\xf3\\xd0\\x60\\x39\\x4a\\x30\\x53\\x58\\x1f\\xfd\\xef\\x3e\\x6d\\x36\\x53\\x11\\x66\\xb5\\x53\\xa9\\xdd\\xe0\\x31\\x05\\xc0\\x4a\\xf6\\x97\\xd9\\x5e\\x95\\x21\\x7f\\xd6\\xdc\\x96\\x8b\\xf3\\xb4\\x48\\xd5\\xf3\\xa8\\xe4\\xf5\\xae\\x7e\\xdc\\x30\\xec\\x78\\xb1\\xae\\xa4\\xf0\\xdb\\x18\\x9a\\x94\\x9a\\x12\\x21\\x38\\xcd\\xfb\\x5f\\x96\\x93\\xdb\\x00\\x4b\\xae\\xd1\\xa4\\x21\\xdc\\x44\\x12\\x2f\\x32\\x72\\x87\\xf7\\x27\\xcf\\x98\\x9f\\xca\\xe3\\xcf\\x3b\\xe3\\xe3\\xdd\\x9b\\x9f\\x53\\x50\\x2c\\xf5\\xd9\\xfb\\x18\\x6d\\xe7\\x91\\xd3\\x10\\xd1\\x22\\x86\\x9c\\x9f\\xc3\\xb6\\x95\\xde\\xc1\\x60\\x74\\x77\\xf3\\xe1\\x49\\xe5\\x2b\\x63\\xcf\\xdf\\xb0\\xd9\\x83\\xe8\\x9a\\xf2\\xf7\\x5a\\x8f\\x48\\x98\\x43\\xec\\x05\\xc5\\xea\\x5f\\x0e\\x72\\x1a\\xca\\xb3\\x87\\xc6\\x80\\x25\\xf2\\x0a\\xbe\\x0d\\x27\\xb4\\xce\\x29\\xf4\\xa6\\x4f\\xb7\\xf8\\xe8\\xa3\\x32\\x87\\x3d\\x3e\\xd1\\x21\\xfb\\x49\\x34\\x14\\xb8\\xcb\\x0c\\x00\\xad\\x3a\\xb6\\x16\\xc5\\xbe\\x52\\x41\\x47\\x1a\\xde\\xe9\\xf8\\xf4\\x69\\x74\\xea\\xe8\\x4a\\x4a\\x8c\\xe6\\xfa\\xbb\\x7f\\x5d\\x9a\\x6b\\x75\\xa7\\xe6\\x70\\x45\\x6f\\xcd\\xcd\\x1d\\x98\\x2e\\x8f\\x82\\x7a\\x4b\\xbb\\x69\\xde\\xc7\\xe3\\x05\\x3d\\xfe\\x83\\x5b\\x70\\x30\\x1b\\x7b\\x76\\x3f\\x00\\x04\\xbc\\x90\\x6e\\x14\\x55\\x42\\xf4\\x87\\xb4\\xdb\\xa2\\xed\\x56\\x1b\\xd1\\xa2\\x03\\x06\\x23\\x6a\\xf4\\xb3\\x6e\\x40\\x68\\xe8\\xc0\\x07\\xb9\\x45\\x4f\\x87\\x41\\xa5\\xf8\\xf0\\x79\\xec\\x1d\\xb8\\x83\\x5e\\xb6\\x54\\x42\\x90\\xd6\\xad\\xb5\\x2a\\x70\\xd7\\x67\\x5d\\x85\\xdf\\x4a\\x9a\\x12\\x55\\xbf\\xd9\\x36\\xc3\\x31\\xfe\\x51\\xc0\\x97\\x7d\\x12\\x4b\\x5a\\x50\\x6d\\x29\\xc6\\xee\\xc3\\x3c\\xaa\\x25\\xd8\\xeb\\x28\\x95\\x2d\\x6f\\xfb\\x9d\\x6e\\x3d\\xa8\\x90\\x38\\x2d\\x88\\x87\\x96\\xd3\\x74\\x60\\x7f\\x66\\x43\\xb8\\x9e\\x73\\x26\\xd9\\xed\\xc4\\x9a\\x0f\\x53\\xbd\\xcb\\x8c\\xc7\\x6f\\xfd\\x39\\x3a\\x77\\x06\\x52\\x2d\\x04\\x17\\x00\\x36\\xcc\\xb6\\x63\\x30\\xdb\\xac\\x9d\\xa7\\xe6\\x16\\x8c\\xaa\\x88\\xcb\\x62\\x18\\x1e\\x55\\xa7\\xb6\\xd5\\x21\\xa2\\x11\\x5e\\x23\\xe2\\x02\\xee\\x24\\x80\\xb5\\x87\\xbe\\x45\\x01\\x44\\x79\\x79\\xa8\\xd7\\x36\\xf9\\x01\\x2e\\xcf\\x00\\xe6\\x7b\\x31\\xe8\\x10\\x4f\\x6e\\x7d\\xf0\\x8a\\x96\\x83\\xcd\\xc8\\x9c\\x03\\xa4\\xe3\\x7e\\xe2\\x29\\x28\\xd4\\x5f\\xa1\\x90\\x94\\xe0\\xd6\\xe7\\xb4\\x0b\"},\n{{0x05,0x88,0xac,0xd4,0xe0,0x9b,0xa9,0x02,0x74,0xc8,0xf3,0xd1,0x57,0x5b,0x2b,0xf3,0x64,0xa7,0x76,0x88,0x4a,0x9a,0xeb,0x41,0x03,0x41,0x5e,0x16,0x3b,0xa0,0xbf,0x81,},{0x3e,0xca,0xe6,0x97,0xb4,0x25,0xd8,0x7e,0x34,0xa1,0xd9,0x44,0x09,0x8e,0x3d,0x32,0xe2,0xc1,0xec,0x56,0xc3,0x62,0x7d,0xf8,0x0b,0xa2,0xb8,0xa4,0x3d,0xdc,0x19,0x03,},{0xa1,0x11,0xb9,0x70,0x6d,0x24,0x2c,0xd3,0x6d,0x6e,0x87,0x41,0xcb,0xb0,0x97,0xb9,0xe2,0xff,0xfa,0x40,0xf4,0x3f,0xd6,0xf2,0xd3,0xd9,0x16,0x93,0x66,0x73,0x32,0xb5,0xf2,0xdb,0x5e,0xe3,0xea,0x20,0xb8,0x32,0x91,0xb8,0x40,0x57,0x95,0xb7,0x4d,0x63,0x3d,0x46,0xf4,0x75,0xab,0x7c,0x47,0x61,0x71,0x18,0x53,0x5b,0x80,0x51,0xd9,0x07,},\"\\xf8\\x28\\xf8\\xc9\\xda\\xd2\\x98\\xc5\\xb7\\x19\\xda\\xa8\\x52\\xb1\\x7e\\x76\\x25\\x98\\xa7\\x0f\\x4e\\xcd\\x16\\xa2\\xfc\\x59\\x6e\\xb0\\x26\\x38\\x99\\xe9\\x83\\xd4\\x4e\\xdc\\xc7\\xbd\\x24\\x0c\\xb0\\x76\\x10\\x60\\x0a\\xe9\\x6a\\xac\\x0d\\xfc\\x3b\\xe3\\x87\\xb6\\x16\\x85\\x08\\x99\\xb5\\xcf\\x44\\xe1\\x76\\x7f\\xfa\\xca\\x3d\\xf3\\x81\\x58\\x59\\x84\\x24\\xf8\\x07\\x14\\x14\\xc7\\x04\\xe6\\x0b\\x42\\x2a\\xd7\\x73\\x77\\xfa\\x7f\\x6a\\x8c\\x5d\\x0e\\xbc\\x02\\x35\\xe2\\xd4\\x3a\\x98\\x4f\\x3a\\xdf\\x75\\x9e\\xb1\\x04\\x47\\xf3\\xc2\\xf6\\xb8\\x0d\\x5a\\x11\\xef\\x41\\xd3\\xa0\\x98\\x52\\xc0\\x93\\x2a\\x1b\\x9a\\xc2\\x3e\\x6f\\x40\\xa1\\x67\\xde\\x21\\x04\\x1b\\xec\\x88\\x85\\xf9\\x43\\x3e\\xb8\\x0b\\x95\\xc9\\x78\\x59\\x58\\x04\\x6c\\xdb\\x7b\\xf1\\x47\\xa7\\x99\\x47\\x82\\x3b\\x41\\x49\\xae\\x05\\x21\\xd7\\xe5\\xaa\\xbc\\x15\\x64\\xfa\\x40\\x44\\x10\\x6e\\x2e\\x39\\x2e\\x9c\\x34\\x44\\x57\\xe9\\x92\\x93\\x76\\xea\\x9b\\x42\\x29\\xc6\\xe7\\x73\\x8f\\xe7\\x90\\x08\\xd5\\x54\\xc4\\x29\\x39\\x69\\x14\\xc3\\x63\\x87\\xf5\\x79\\xb4\\x6b\\xab\\x14\\x6f\\x6a\\x95\\x10\\xeb\\x6f\\x8c\\x85\\x55\\x1c\\xbd\\x84\\xc7\\xdc\\x0d\\x0b\\x1c\\x01\\x0c\\xcb\\xa5\\x96\\x3a\\x7f\\x39\\xf1\\x81\\xe4\\x4d\\xbc\\x98\\xe4\\x95\\xaa\\x63\\xc0\\x10\\x59\\xcb\\xe6\\xa9\\x9b\\x07\\xb4\\x49\\xe7\\x75\\x9c\\x9a\\xf9\\xe0\\xf8\\xd9\\x05\\x4a\\x67\\xa3\\x48\\xfa\\x19\\xd7\\xf9\\x1e\\xc0\\xa4\\xd4\\xf2\\xc7\\x02\\x6c\\x3b\\x84\\x92\\x59\\xa3\\x50\\x41\\x7f\\xd8\\x6c\\xab\\x21\\x42\\xe4\\xcf\\xe3\\xc0\\xaf\\xbf\\x25\\x18\\x2a\\x2d\\x52\\xbd\\x2e\\x0b\\xc9\\x20\\xe8\\x50\\x80\\x83\\x2b\\x91\\xb9\\x27\\xb6\\x29\\x48\\xa6\\x7c\\x31\\x7e\\xb0\\x90\\x91\\x46\\x1d\\x49\\x3e\\xea\\x5f\\xfc\\x47\\xbf\\x08\\x55\\x82\\x96\\x82\\x58\\xa3\\xc8\\xdd\\x81\\xa8\\x58\\x27\\x0b\\xdd\\xaf\\xe7\\x92\\x56\\x84\\xa1\\x5f\\xfb\\x51\\xbc\\xfa\\xab\\x93\\x1a\\xfa\\x46\\x5e\\x30\\x90\\xe8\\x6b\\xe4\\x1e\\x35\\x47\\xcb\\xa2\\x34\\xb8\\x5f\\xe7\\xdb\\x70\\x04\\x96\\xa5\\x05\\x00\\x2d\\xf3\\xca\\x4e\\xae\\xc7\\xb9\\x62\\x78\\xc7\\xd1\\xa7\\x7d\\xb8\\x34\\xa9\\x17\\x97\\xbb\\xb8\\x26\\xd0\\x92\\xaa\\x28\\xb4\\x95\\x45\\xed\\x3b\\x1e\\xda\\x23\\xbe\\x11\\xa3\\xf5\\x28\\xb9\\x55\\xcb\\x0c\\x4f\\xa6\\x6e\\x16\\xe9\\x57\\xe5\\x70\\x4c\\xf3\\x19\\xe5\\xf7\\x9c\\xc0\\x9f\\x2d\\x05\\x4e\\x6d\\xaf\\x19\\xe2\\x92\\x6b\\x11\\xe1\\xe4\\x13\\xff\\x82\\x2c\\xa1\\x41\\xf7\\xc3\\xd3\\x85\\xae\\x95\\xdd\\x20\\xb3\\x46\\xe5\\x83\\xcf\\xb0\\xc2\\x29\\xec\\x39\\xcf\\x88\\x9a\\x54\\x19\\xcd\\x37\\xbc\\x18\\x4e\\xf5\\xfb\\x14\\x46\\x22\\x08\\x0a\\x30\\x2d\\x9d\\x77\\x45\\xc4\\x51\\xf7\\xd8\\x82\\x42\\xcc\\x26\\xb9\\x16\\xa3\\x56\\x9a\\xbc\\x7d\\x1f\\x21\\x6d\\x57\\x79\\x7a\\x47\\x2b\\xc6\\x21\\x76\\x17\\x58\\xe8\\x40\\xeb\\x8e\\x29\\xbc\\x8e\\xfc\\xb7\\xaa\\xfc\\x7c\\xf8\\xf4\\xe5\\x93\\x30\\xd3\\x5e\\xe1\\x07\\x49\\x6d\\xec\\x6e\\x71\\x4b\\x1f\\xa4\\x30\\x98\\x37\\xbb\\x47\\xeb\\x3a\\x06\\xb4\\x60\\x4d\\xd2\\x07\\x33\\xcc\\x0e\\xaa\\xc2\\x64\\x9e\\x18\\xc0\\x73\\x42\\xef\\x55\\xd1\\x9b\\x8d\\x03\\x95\\x91\\xac\\x28\\x69\\xac\\xc3\\x4b\\x6c\\x3c\\x1c\\xa3\\xcf\\x26\\x3f\\xf8\\x4c\\xa4\\x3a\\x5f\\x64\\x65\\xba\\x34\\x88\\x8c\\x10\\x90\\x13\\xb3\\x2b\\xfc\\x0d\\x0d\\x15\\xf5\\xa7\\x6c\\xec\\x27\\x0a\\xb3\\xac\\x9a\\x10\\x63\\x31\\x31\\x2f\\x5a\\x0a\\x84\\x28\\x2c\\x3a\\x3d\\x4a\\xea\\x1e\\x7c\\xf5\\x3d\\xbf\\x8b\\x24\\x0b\\xdd\\x11\\x1c\\x34\\xd2\\xa9\\x3d\\xfd\\x12\\x58\\xfe\\x92\\x67\\x13\\x3f\\x75\\x54\\xdc\\xc2\\x1a\\x8f\\x43\\x9c\\x16\\x5d\"},\n{{0x7d,0x14,0x02,0x3e,0xb4,0x8b,0xbd,0x43,0x76,0x49,0xa2,0x41,0x87,0x79,0x05,0xa3,0xc9,0x32,0xf1,0x46,0x40,0xf2,0x9a,0x0f,0xb1,0x34,0x11,0x4e,0x8f,0x33,0xf5,0x82,},{0xea,0x5c,0x11,0xb4,0xb2,0xc5,0xef,0x4a,0xb7,0x06,0xcc,0xa3,0x47,0x50,0x43,0xc9,0x58,0x18,0xeb,0x56,0x5a,0x79,0x7e,0x33,0x68,0x8a,0xfe,0xac,0xd6,0x8a,0xdc,0xca,},{0x31,0x33,0x9d,0xce,0x23,0x33,0x6d,0xf5,0xb2,0xb1,0x93,0x52,0x2a,0xa3,0xdd,0x2d,0x41,0x14,0xa6,0x6a,0xf1,0x65,0x62,0x89,0xc9,0x52,0xbc,0x11,0xc9,0xb2,0x10,0xf7,0x7a,0x54,0xd4,0x61,0x61,0xf4,0xe0,0xc5,0x2b,0x30,0x13,0xe4,0x0b,0x9e,0x9e,0x84,0x27,0xd8,0x51,0x32,0x5b,0xd7,0x1c,0x4d,0x99,0x35,0x3e,0xee,0xd7,0x51,0x08,0x0d,},\"\\x90\\x01\\xdb\\x31\\xf2\\x79\\xbe\\x50\\x53\\x19\\xb8\\xe7\\x2b\\xde\\x11\\x99\\x51\\x29\\x80\\xdf\\x65\\xf0\\xd8\\xa9\\xb4\\x93\\x04\\x67\\x41\\x3a\\x99\\x7b\\x97\\xa3\\x62\\xb5\\x72\\xa4\\xb4\\x4b\\xc9\\x40\\x48\\x7f\\x18\\xb2\\x08\\xce\\x6a\\xc5\\xc6\\x87\\x16\\xd3\\xaf\\x1b\\xce\\xf1\\x70\\x38\\x3b\\x5c\\x4b\\x5c\\x47\\xe4\\x47\\x37\\x72\\x6f\\x93\\x83\\xbc\\x4f\\x14\\x47\\x68\\xbf\\x5c\\xaf\\xb4\\xe9\\xdf\\xe3\\x97\\x61\\xe6\\xed\\x47\\x89\\x71\\xd1\\xc7\\x0e\\x6d\\xab\\x2f\\xd0\\x49\\x9d\\xff\\x92\\x93\\xb2\\x39\\xd1\\x6c\\x96\\x02\\x61\\xc6\\x82\\x18\\xb9\\xf5\\xb1\\xbe\\xe6\\x90\\xf0\\xd2\\x40\\xc1\\xb3\\xdb\\x71\\x1f\\x9e\\x82\\x1f\\x08\\x09\\xbb\\xeb\\x9a\\xaf\\x24\\x9c\\xcb\\x16\\x8c\\x67\\xd9\\x65\\x56\\x2d\\x24\\xf8\\x48\\x51\\x61\\x40\\xbf\\xd9\\xfc\\x05\\x0d\\x4f\\x20\\xda\\x5a\\x17\\x94\\x46\\x8a\\x9c\\x07\\x25\\xea\\x5c\\x66\\x9d\\x5c\\x63\\x0d\\x93\\x10\\xe5\\x74\\x51\\x07\\xda\\xd3\\x72\\x61\\xb5\\xd9\\x1e\\x38\\xe0\\x85\\x12\\xe6\\xf3\\x73\\xec\\x5d\\xca\\xd5\\xca\\x09\\x07\\x29\\x07\\xc8\\xfb\\x7b\\xf3\\xb9\\x26\\xc3\\x33\\x94\\x90\\xb3\\xf5\\x1f\\x76\\x44\\xe7\\x3a\\xe2\\xec\\x01\\xd6\\x1b\\xe7\\xc6\\x52\\x65\\x36\\xb4\\xff\\xd1\\xab\\x68\\x49\\xfe\\x0c\\x2f\\x40\\xd3\\xbd\\xa2\\xa4\\x9e\\x55\\x50\\xb8\\xdf\\x97\\x90\\x81\\xda\\x85\\x16\\x8d\\x0f\\x71\\x58\\x2b\\x90\\x36\\x77\\x52\\x6d\\x1f\\x1b\\x15\\x11\\xe1\\x38\\xb6\\x84\\xfc\\x46\\xaa\\xc8\\xbd\\x80\\xc3\\xde\\xf7\\xee\\x81\\x38\\x19\\x04\\x61\\x80\\x7c\\x55\\x36\\x12\\x5c\\xb0\\xe2\\xc3\\xd0\\x83\\xa1\\x87\\xc7\\x26\\x9c\\xb5\\x31\\xec\\x36\\x78\\x78\\x7b\\x32\\x55\\x5c\\xf0\\x4a\\xb0\\x93\\xc9\\x00\\x2e\\x7d\\x79\\x2b\\x4d\\x93\\x3f\\x2e\\x30\\x70\\xf3\\x9a\\xc8\\xcc\\xf8\\xd5\\xf5\\x45\\x5f\\x12\\x10\\x9d\\x8a\\x8a\\xeb\\x4e\\x21\\x2f\\xad\\x4a\\x70\\xb1\\x47\\xc0\\x4a\\x7b\\x91\\x84\\x60\\xb1\\x31\\x63\\x76\\xe6\\x40\\x20\\x85\\x95\\x17\\xeb\\x7e\\xe3\\x0c\\x29\\x0b\\xe8\\xb8\\xd6\\xf9\\x67\\x39\\x15\\x25\\x6c\\x3b\\x04\\xb9\\xd9\\x05\\x4b\\x52\\x33\\x8e\\x0d\\x36\\x07\\x85\\xe4\\x6a\\x18\\x28\\x44\\xc5\\xc3\\x76\\x6a\\xea\\x8e\\xd3\\x11\\xb2\\xd4\\x81\\xc0\\xb7\\xb2\\x11\\x4e\\x41\\x8e\\xd1\\x7f\\x8d\\xeb\\xf0\\x1a\\x83\\xff\\x37\\x51\\x70\\x24\\xee\\x9e\\x28\\xe0\\xc9\\x0d\\xce\\x6d\\x05\\x9f\\xfe\\xe4\\x13\\xd2\\x7c\\xd6\\x27\\x83\\xa8\\xb8\\xb5\\x01\\x6a\\xd2\\x76\\xe3\\x9d\\xfd\\x8f\\x8f\\x3d\\xdf\\xc4\\x28\\x10\\x18\\x18\\xce\\x50\\x7f\\x00\\x3e\\xb5\\x8c\\x9a\\x5c\\xc8\\xb1\\xaf\\xf0\\x5a\\xab\\x8f\\x0d\\x7f\\x1d\\x1f\\x6d\\x4b\\x87\\x1d\\xbc\\xed\\x1f\\x3d\\x28\\x66\\x23\\x97\\x52\\xfb\\x13\\xf6\\xe1\\x80\\x34\\xbb\\x2b\\x5a\\x66\\x35\\xca\\xa6\\xec\\xc4\\x62\\xe0\\x58\\xeb\\xe2\\xfa\\x65\\x1d\\x3d\\x0f\\x36\\xe2\\x0a\\x31\\xf7\\x65\\xe4\\xb9\\x58\\x27\\x0b\\xd8\\x25\\xc6\\x81\\x8a\\xac\\x1a\\xd7\\x56\\x31\\x35\\xae\\xed\\xf1\\x4a\\x2b\\x6d\\x39\\x8b\\x6e\\x34\\x00\\x84\\x01\\xb2\\x18\\x46\\x18\\x20\\x07\\x1c\\x5a\\xf7\\x78\\x46\\xcb\\x9c\\x32\\x81\\x90\\xc0\\x61\\xd5\\xaa\\x6e\\x0e\\xcd\\xe7\\xef\\x58\\x56\\xb0\\xe6\\x81\\x4f\\x83\\x3f\\x70\\x40\\x96\\xdf\\x08\\x25\\xfa\\x4b\\x46\\xdc\\xda\\xcf\\xa2\\x7c\\xd8\\x7b\\xd7\\xbf\\xef\\xf7\\xf8\\xca\\xe1\\x66\\xa3\\xa0\\x4d\\x43\\x7c\\x7b\\xe7\\x16\\xc4\\x90\\x45\\xc7\\xbd\\x3d\\x13\\x49\\x62\\x7c\\x9c\\xbd\\x04\\xc1\\x5f\\x00\\xa6\\x96\\xe3\\xcf\\xfb\\xb4\\x5a\\xf2\\x91\\x22\\x62\\x7e\\x7e\\xd3\\x3b\\x42\\x49\\x91\\x3b\\xec\\x00\\xf0\\xe2\\x8a\\xa1\\x12\\x98\\xcc\\xe8\\xb6\\x49\\x08\\x1f\\xe3\\xb1\\x69\\xb4\\xaa\\xea\\xca\\x48\\x5b\\xda\"},\n{{0xe8,0x30,0x6b,0xad,0xa6,0xd5,0x5e,0xb1,0x88,0xd9,0xf7,0x5c,0x81,0x5c,0xc9,0x14,0xe9,0x3c,0x9c,0x72,0x22,0x39,0x1c,0x15,0xbb,0xae,0xaf,0x93,0x54,0x43,0x79,0x35,},{0xbf,0x27,0x98,0xb8,0xe5,0x54,0xf5,0x1e,0x22,0x86,0xc3,0x03,0x4a,0x88,0xe5,0x77,0xff,0x23,0xfa,0x32,0xa6,0x72,0x44,0xea,0x82,0x45,0x91,0x2e,0x8b,0xf4,0x6d,0xa4,},{0xcc,0x66,0x27,0x30,0x8e,0x2f,0x42,0x43,0x83,0xfa,0x70,0x59,0x4f,0x57,0x57,0x91,0x60,0x05,0x40,0x02,0x7a,0x27,0x51,0x61,0x9b,0x28,0x3a,0xff,0xea,0xeb,0xc9,0xc9,0xd2,0x9a,0xc6,0xdb,0x28,0x6d,0xd2,0xc1,0xb5,0x96,0x58,0x7b,0x87,0x8d,0x1d,0xf4,0x78,0x1d,0x43,0x6b,0xb5,0x70,0xc1,0xc0,0xf0,0xd3,0x33,0x68,0xdc,0x66,0x52,0x0b,},\"\\xd7\\x04\\x38\\x09\\xc3\\xe3\\xdc\\x00\\xb1\\x7e\\xfd\\x52\\xc9\\x13\\x0b\\x11\\xb7\\x86\\xf1\\xe2\\x57\\xb5\\xe2\\x2f\\x81\\xa7\\xfa\\xae\\x60\\x0b\\xbc\\xdf\\xd5\\x18\\x53\\x7f\\xe8\\x52\\xc6\\x42\\x35\\x97\\x62\\xfb\\x75\\xe8\\xad\\x85\\x92\\x49\\xe6\\xab\\x49\\xce\\x1b\\xb0\\x4f\\x24\\x92\\xf2\\xaa\\xc3\\x54\\x46\\xba\\x6e\\xb0\\x3e\\x76\\xde\\x3a\\xbd\\x2d\\x5f\\xc7\\xe6\\x14\\x68\\x43\\xad\\xd0\\x42\\x86\\x0a\\x4a\\x16\\xb5\\x9b\\xdd\\x7d\\x03\\x83\\x78\\xa3\\x5e\\x1a\\x04\\xb1\\x21\\x7a\\x55\\x71\\x0d\\x93\\x7e\\x2c\\x90\\x32\\x23\\x2e\\xa2\\xcd\\xd1\\xd2\\x5a\\x0b\\xff\\x71\\xef\\x5d\\x3e\\x0c\\x05\\x6b\\x29\\xcb\\x92\\xf6\\xdf\\x69\\x2b\\xde\\x14\\xdf\\xa5\\x0e\\x13\\x2b\\xeb\\xd8\\x9e\\x9f\\x18\\x33\\x88\\x0b\\x65\\x7a\\x78\\x1e\\x94\\xec\\xb6\\x03\\x04\\x17\\x56\\xe5\\x51\\x7d\\x44\\x23\\xc5\\x6f\\xad\\xc1\\x3e\\x2b\\x31\\x80\\x88\\xfe\\xdd\\xf3\\xb5\\xc8\\x3c\\x20\\xb4\\x6f\\xdd\\xbb\\xa9\\x23\\x05\\xe4\\x86\\x06\\xda\\xb7\\x48\\xce\\x38\\x48\\xb8\\x43\\xf4\\x71\\x1f\\x37\\x0c\\x3e\\xc7\\xd5\\xe1\\x9a\\xb4\\xc0\\xac\\x1a\\xe1\\x5a\\xaa\\xf2\\x3d\\x65\\xfe\\xce\\xda\\xbc\\x08\\x04\\x9b\\x9e\\x29\\x11\\x3e\\x57\\x61\\xed\\x9d\\x1c\\x62\\xeb\\x07\\x5c\\xab\\xb2\\x67\\x4c\\xdb\\xe1\\xe3\\xa8\\x89\\xba\\xe4\\xb1\\xdd\\x31\\xb6\\xa5\\xb2\\xea\\x1b\\x8d\\xed\\xcc\\x3c\\x51\\x5e\\xdc\\x44\\x67\\xc3\\x02\\x31\\x17\\x6c\\xd4\\x4b\\xec\\x8a\\x05\\x79\\x51\\xab\\x5c\\xd3\\x9a\\x96\\x23\\xf8\\xaf\\x84\\x73\\xcd\\x27\\xd9\\x33\\x02\\xbf\\x8a\\xa6\\x24\\xc9\\xc3\\xc5\\x79\\x9d\\xa1\\xdc\\x49\\x44\\x94\\xef\\x8f\\xf1\\xdb\\xe0\\x18\\x7e\\xa5\\x16\\x26\\x70\\xb8\\xd0\\x98\\xc3\\xa9\\x49\\x19\\x39\\x8d\\xad\\xf7\\x9e\\x6c\\x24\\x91\\xc4\\x44\\x39\\x2c\\x29\\xcd\\x50\\xd5\\x74\\x35\\x06\\x32\\x90\\x84\\x2b\\xfa\\x0e\\x85\\x30\\xfa\\xeb\\xc0\\x06\\xd6\\xea\\x78\\x01\\x11\\x7e\\x0a\\x3f\\x01\\x9e\\xe2\\x8f\\xb3\\x79\\x22\\x35\\x40\\x2e\\x2f\\x69\\xb8\\x7a\\x43\\xdc\\x22\\x7f\\x9d\\xe3\\x16\\x02\\x97\\x56\\xc3\\x16\\x7d\\x64\\xa3\\xa3\\xf6\\xd7\\x31\\x60\\x33\\x1d\\x5a\\x18\\xee\\xe5\\xb0\\xe6\\xe2\\x2a\\x66\\x3e\\xfd\\xcc\\x8d\\x67\\xaf\\x3b\\xce\\xd0\\x41\\xea\\x84\\x3a\\x56\\x41\\x60\\x3e\\xc7\\x2e\\xfd\\x64\\x4e\\x17\\x3d\\x19\\x9a\\x8c\\x83\\x0b\\x2e\\xa5\\xfe\\xc0\\x37\\x80\\x27\\xc3\\x72\\x25\\xaf\\xcb\\x60\\x4c\\x4c\\xdc\\xf4\\x09\\xbe\\x1c\\x50\\x9c\\x9a\\x37\\x7b\\xe0\\xd0\\x52\\x41\\x07\\xc6\\xd9\\x2b\\x5f\\x09\\xa2\\x9e\\xfb\\x71\\x09\\x29\\x56\\x70\\xbb\\x1a\\x1d\\xd3\\xea\\x00\\x8b\\xb7\\x91\\x85\\xf0\\x9b\\x98\\xf0\\x20\\xc4\\x3f\\x14\\x39\\x68\\x5b\\x96\\xf6\\x19\\x93\\x11\\xa0\\x90\\x87\\x0f\\x0d\\x9b\\x10\\xd4\\x95\\xcd\\x41\\x0a\\xa9\\x5b\\x7e\\x53\\x74\\x9b\\xe3\\xa6\\xc0\\xfb\\xc7\\x29\\xf9\\x6c\\xf8\\x56\\x43\\x97\\xb0\\x9c\\x13\\x51\\x40\\x16\\x82\\x5f\\x72\\xf1\\x4e\\xb9\\x32\\x94\\xd7\\x01\\x0a\\xcc\\xfd\\x11\\xf1\\x7a\\x6a\\xc8\\xf5\\x44\\x26\\x3d\\x60\\x38\\xd5\\xc7\\xdb\\x29\\x48\\x62\\x91\\xb3\\x0e\\xa4\\x9b\\x6b\\x54\\xcf\\x88\\x82\\x6d\\xd2\\x52\\xcd\\x9d\\xbb\\x57\\xd8\\x41\\xb5\\xa4\\xcf\\x70\\x2a\\x32\\x64\\xfa\\xa4\\xdc\\xcc\\x86\\xab\\x14\\xda\\xf1\\x24\\xef\\x3d\\x53\\x35\\xa6\\x87\\x8d\\x06\\x5c\\x6b\\xa2\\x99\\x91\\x04\\x57\\x65\\xee\\x55\\x42\\xcc\\x9f\\x5d\\x9f\\x35\\x4d\\xcd\\x2c\\x6e\\x0c\\xf7\\xff\\x3a\\x30\\xf6\\x49\\xb5\\x91\\x2d\\x97\\x1d\\x63\\x35\\x78\\xf1\\xe9\\xf2\\x63\\x87\\x4d\\x05\\x65\\xc2\\x47\\x30\\x1d\\xcb\\xd1\\x5d\\x76\\x21\\x1a\\xe2\\xd3\\xd5\\x06\\xfc\\x64\\xde\\xb7\\xe0\\x42\\x56\\x5d\\x43\\x8e\\x2b\\xfb\\x24\\x92\\x43\\xb7\"},\n{{0x36,0x3c,0x1e,0xa7,0xc3,0x2e,0xa3,0x28,0xa0,0x55,0xaf,0x7b,0xd8,0xb3,0xbf,0xd2,0x04,0xfb,0x0b,0xbd,0x4b,0xf4,0x2f,0xfe,0x26,0x2f,0x3a,0x5e,0xbd,0x54,0xda,0x55,},{0x7a,0x83,0xec,0xca,0x51,0xef,0x6e,0x5a,0xa0,0x43,0xa5,0xce,0x04,0xd9,0x28,0x8a,0xdd,0x49,0xa2,0x77,0x54,0x8b,0xd3,0x01,0x6b,0x69,0x3f,0xfa,0x79,0xa2,0x2e,0xdc,},{0x5f,0xd1,0xe5,0xf9,0x92,0x2a,0x12,0xf6,0x36,0xb7,0x2a,0x7d,0x62,0x17,0x09,0x1f,0x94,0x8a,0x55,0xbc,0xb1,0x82,0x6b,0x8f,0xca,0xf9,0x9d,0x26,0x41,0x6c,0x7a,0xb1,0x35,0x1c,0x10,0xf4,0x09,0x3f,0xfd,0x8a,0x2a,0xf8,0x69,0x14,0xa0,0xa9,0x81,0x84,0xec,0x7e,0x06,0xd2,0xde,0xe8,0x7f,0xdc,0x0f,0x4a,0x47,0xf8,0xc6,0x3c,0xf5,0x01,},\"\\xc4\\x1c\\x1e\\x1f\\xb7\\x59\\x54\\xa0\\xae\\x0e\\xbc\\x29\\x09\\x0b\\x9f\\xc5\\x33\\xe6\\x93\\xe7\\xc7\\x10\\x5c\\xfe\\x40\\xef\\x52\\x6e\\x4e\\x12\\xa7\\x40\\x52\\x21\\xf2\\x18\\xc7\\xac\\x01\\x9e\\x1d\\x4c\\x92\\xda\\x28\\x53\\xf2\\xd7\\x26\\xaa\\x62\\x27\\x79\\x24\\xdf\\x0c\\x34\\x3f\\xc3\\xd4\\x7c\\xd5\\xa9\\x9a\\x3e\\x27\\x9b\\x26\\xa1\\xb1\\x3b\\x1f\\x2a\\xa3\\x6f\\x7c\\xcb\\x4b\\x54\\xfb\\xef\\x18\\xbd\\x87\\xa5\\x5f\\x1b\\xc4\\x0c\\xe7\\xb2\\x02\\x91\\x45\\xee\\x7a\\xab\\x39\\x17\\x95\\xac\\x68\\xde\\x61\\x99\\xf5\\x05\\x94\\xfc\\x79\\x61\\x1b\\x85\\x13\\x1c\\x14\\x30\\x21\\xf2\\x6f\\xa3\\x58\\xda\\x0c\\x7c\\x6a\\x65\\xdd\\xe0\\x76\\xda\\xb4\\x88\\x67\\x5b\\x72\\x23\\x09\\xe5\\xed\\x97\\x46\\xd1\\x8a\\x89\\x30\\x99\\x06\\xa7\\xa9\\xdf\\x23\\x7d\\xd2\\x7b\\xd5\\x90\\xcc\\xc7\\x7c\\x40\\x2e\\xf6\\xe1\\x9c\\xa6\\x3c\\xc8\\x6b\\x85\\x16\\x03\\x30\\xee\\x6e\\x1f\\x1f\\x47\\xa2\\xff\\x80\\x7e\\xef\\xad\\xc0\\x09\\x63\\x52\\x0a\\x1c\\x60\\x0a\\x3e\\x45\\xaa\\x7f\\xb2\\x55\\x4f\\x47\\xd8\\x97\\xbd\\x86\\xd8\\x1c\\x3b\\x08\\x77\\x10\\x12\\x22\\xfa\\x78\\x50\\xb8\\x0c\\xe3\\xbc\\x06\\xc9\\xe5\\x8c\\x0c\\x96\\xe3\\x2f\\xec\\x85\\x30\\xc9\\xfa\\x1e\\x41\\x63\\xf0\\xef\\x84\\x56\\x95\\x2b\\xf6\\xdd\\x58\\x04\\x5a\\x36\\x3d\\x61\\x88\\x0e\\x9a\\xc9\\x76\\xa3\\x60\\x3e\\xf7\\x7a\\x4c\\x39\\x5e\\x6a\\x07\\xe3\\x42\\xf6\\x02\\x3b\\x8a\\xf1\\x02\\x25\\xcf\\xf2\\x40\\xef\\xc0\\x36\\x6a\\x79\\x9f\\xd8\\x6e\\x9d\\x06\\x20\\x60\\xd8\\x72\\x40\\x33\\xbd\\xf6\\x75\\x88\\xcd\\x73\\xac\\x28\\x4d\\xe4\\xc6\\x94\\x3c\\xf4\\x5e\\xe4\\xf7\\x5f\\x59\\x37\\xd9\\x7d\\x78\\x10\\x5f\\x0b\\xbe\\xce\\x04\\xd3\\xdc\\xb5\\xe4\\x24\\xef\\xf8\\x9b\\x77\\x3e\\x5d\\x6b\\x4f\\x37\\xef\\xa9\\xa0\\x65\\x4c\\xb3\\xef\\x34\\x52\\x78\\xa6\\x2d\\x87\\x6c\\xfe\\xf9\\xa3\\xdc\\xdc\\xeb\\x70\\x81\\x44\\x18\\x77\\xeb\\xd5\\xfa\\x30\\xc9\\xd9\\x54\\xe3\\x68\\x4f\\xa4\\x76\\xa4\\xf4\\x85\\xd4\\x26\\xfd\\x3c\\x8c\\x32\\xbe\\xa0\\xf9\\xcc\\x20\\xb1\\x5e\\x8f\\xdf\\xc3\\xca\\x4b\\x30\\x2c\\x07\\x4f\\x50\\x81\\x32\\xd1\\x5d\\xe6\\x25\\xc1\\x0a\\xe0\\x73\\x78\\x11\\x46\\x3d\\xcc\\x55\\xfc\\xc4\\x01\\x4b\\x20\\x20\\x8f\\xff\\xce\\xfa\\x9d\\xd4\\x52\\x11\\x9b\\x16\\x52\\xde\\x41\\x34\\x8f\\x69\\xf2\\xc4\\x88\\xf5\\xcc\\x18\\x56\\xd6\\xe7\\x8a\\x5c\\xbe\\x3e\\x37\\x3d\\xd4\\x59\\x8e\\x2d\\x39\\xf8\\x76\\xeb\\x94\\xe0\\xb0\\x1b\\x21\\xfa\\x91\\x29\\xef\\x41\\xb6\\x39\\xf4\\xe0\\x5e\\x69\\xde\\xb1\\x83\\x5e\\xd4\\x4b\\x91\\x12\\xa6\\x86\\x2a\\x5b\\xce\\xa0\\x72\\xc6\\xe1\\xb8\\xf0\\xf0\\x58\\xf4\\x6b\\xac\\x2a\\x84\\x5a\\x58\\x2d\\x14\\x8f\\x17\\x76\\x0b\\x9e\\x0a\\x2b\\xa6\\x0b\\xbb\\xf3\\x88\\x4a\\xf9\\x4d\\xd4\\xc7\\xec\\x9d\\xb0\\x8e\\x9a\\x5b\\xcc\\x6d\\xde\\x13\\x46\\x44\\x2e\\xe1\\xf4\\x70\\x7d\\x1f\\x79\\xb6\\x9b\\xa8\\x67\\xf4\\x18\\xdc\\x27\\x91\\x73\\xf7\\x7a\\xdb\\xc5\\x8a\\xb8\\x5e\\xa3\\x93\\xb9\\xdc\\x68\\x26\\x19\\x00\\xc1\\xca\\xa8\\x2d\\x2f\\x50\\x47\\x4c\\x42\\xae\\xc9\\x11\\x31\\x42\\x78\\xc0\\xaf\\xfa\\x2a\\x6b\\x6c\\x36\\xd1\\xff\\x88\\xf3\\xb4\\x9f\\xb2\\xb7\\xc3\\x39\\xd2\\xa7\\xc2\\xb3\\x04\\x9f\\x8c\\x0a\\x08\\xd1\\x6a\\x9e\\x8d\\xf9\\x3d\\x13\\x0d\\xa4\\x84\\xbd\\xba\\x6d\\xbe\\xc5\\x34\\xcd\\x51\\x09\\x7a\\x04\\x82\\x21\\x10\\x6b\\xab\\x48\\xd6\\x7f\\x95\\x1b\\x75\\x05\\xa1\\x48\\x48\\x92\\xb8\\x57\\x79\\xc5\\xa3\\x11\\x17\\x02\\x12\\x4d\\x95\\x7a\\xcf\\x2d\\xc3\\x52\\xef\\x9b\\xa2\\x47\\xbc\\x80\\xe2\\xce\\x96\\x26\\x9c\\xe8\\x5e\\x78\\xb9\\xeb\\xda\\x98\\x90\\x76\\xdd\\x5f\\xf7\\x3e\\x1e\\xb2\\x75\\xe5\\xd7\"},\n{{0xdb,0x22,0x28,0xff,0xff,0xa9,0xd2,0x53,0x4a,0xef,0x91,0x8f,0xb8,0x5b,0x82,0x1a,0xd3,0x60,0xe2,0xd3,0x9d,0xec,0x5a,0xeb,0x2d,0xb0,0xdf,0x02,0x49,0x7f,0x94,0x16,},{0x6d,0x01,0x95,0x77,0x7f,0x81,0x05,0xff,0x52,0x3b,0x79,0xc5,0x9e,0x3c,0x30,0x81,0xfe,0x89,0xdb,0x6f,0x87,0x03,0x3f,0x09,0x4f,0xa5,0xa9,0x40,0xce,0xf8,0x4b,0xb4,},{0x82,0x18,0x9d,0x34,0x0b,0xc1,0x1c,0xea,0xa4,0x00,0x41,0x0e,0x08,0xba,0xe9,0xd9,0x01,0xaf,0x05,0x91,0x25,0xe9,0x53,0x78,0x6f,0x8a,0x04,0x3d,0xdf,0x11,0xf7,0xb2,0xf8,0xe3,0xb6,0x17,0xac,0xcd,0x78,0xe2,0x93,0x9a,0xdf,0xab,0xf2,0xd2,0x47,0x1f,0xaf,0xd6,0xf5,0xbc,0x45,0xb1,0x40,0x75,0xb3,0x28,0xe3,0x4d,0x80,0x75,0xb2,0x07,},\"\\xfc\\x07\\xcd\\x99\\x04\\x0f\\x13\\xe5\\xa8\\x4f\\x94\\x74\\x6d\\x6b\\xb8\\x68\\xf7\\x52\\xb4\\x48\\xb6\\x2d\\x99\\x59\\x3e\\xf2\\x9e\\x43\\xcc\\x82\\x45\\xf0\\x47\\x0f\\x65\\x55\\x2d\\x64\\x32\\x20\\xf6\\x71\\x92\\x85\\xe1\\x5c\\x37\\xa6\\xd1\\x74\\xae\\xf7\\x60\\x88\\xcc\\xda\\x5f\\x88\\x68\\x5b\\x52\\xda\\xe2\\x84\\xc6\\x5b\\x38\\x0d\\xa3\\x45\\xa2\\xe1\\xaf\\x2e\\xd7\\x64\\x80\\xd2\\x69\\xcb\\x93\\x4b\\x43\\x17\\x62\\x0b\\x79\\x2e\\xbb\\x39\\xb2\\xa6\\x78\\x24\\x7d\\x6d\\x81\\x5f\\x2a\\x5c\\xb9\\xaa\\x56\\x0e\\x4b\\xf6\\xde\\xba\\x4c\\x0a\\x0d\\xdc\\x82\\xd0\\xe5\\xa5\\xa6\\x5a\\xcb\\xc4\\x78\\xe1\\xec\\x6b\\x06\\x4d\\x7b\\xb7\\x38\\x8a\\x73\\xf6\\xed\\xa3\\x0b\\x0b\\x6b\\x73\\xdd\\x8f\\x87\\x92\\x63\\xad\\x1a\\x03\\x48\\x67\\x1d\\xcf\\x21\\x1c\\xb9\\x6e\\xd0\\x8e\\xd5\\x2f\\x33\\x17\\xda\\x68\\x18\\x5d\\x6b\\xb2\\x58\\x9d\\xc1\\x1d\\x75\\x5d\\x47\\xa3\\xb6\\xf6\\xa0\\x38\\x6a\\x85\\x94\\xd9\\x57\\x0b\\x2e\\x9b\\x0d\\x4b\\x5e\\x13\\xdc\\xcd\\x9b\\xb7\\xac\\xbe\\xf0\\xab\\x27\\x6a\\x7a\\xeb\\xe1\\x29\\x31\\xbe\\x67\\xf1\\x0d\\xe2\\x67\\xa0\\x29\\x89\\x53\\x01\\xf5\\x66\\x25\\x30\\xad\\x8a\\xb3\\xd2\\x30\\xb3\\xb6\\xd7\\x09\\x3a\\xcd\\xfb\\xf2\\x74\\x75\\x7a\\x90\\x78\\xe2\\x0c\\x23\\xbc\\x82\\x2d\\xef\\xfa\\x61\\x00\\x54\\x86\\x10\\x2c\\x01\\xab\\x82\\xbd\\xc8\\xcd\\xcf\\x1b\\xb3\\x7f\\x9b\\x56\\xd3\\x9e\\x50\\xfd\\x5a\\x68\\x95\\x41\\x6e\\x76\\x7f\\x4e\\x36\\xc1\\xa4\\x17\\x78\\x90\\x81\\x25\\xb5\\xca\\x3f\\x92\\xa9\\x0d\\xa9\\xad\\xdf\\xf1\\x55\\xfb\\x1f\\xd7\\x76\\x88\\x08\\xa8\\x0f\\x20\\x3e\\xd7\\x37\\xef\\x00\\x77\\x63\\xbd\\x2f\\xea\\x9f\\xf2\\x8c\\x84\\xb4\\x35\\x51\\xc9\\xfc\\x43\\x8f\\xfc\\x47\\xfc\\xfc\\xf6\\x4d\\xc7\\x70\\x06\\x13\\xaa\\x8b\\x3a\\xf8\\x63\\x3a\\xe8\\xb6\\x98\\x74\\x37\\xc0\\xaa\\x47\\x81\\xbe\\x1e\\x82\\x13\\x96\\xc5\\x36\\xcb\\x30\\x05\\xd0\\x55\\x49\\xb1\\xcb\\xa7\\x01\\x35\\xaf\\xb7\\xfe\\x30\\x68\\x96\\x1c\\xad\\x3a\\x14\\x63\\xcc\\x0b\\x55\\x60\\x68\\x4e\\x27\\xbb\\xa7\\x7a\\xef\\x41\\x9d\\x82\\x38\\x68\\xe0\\xce\\xba\\xd1\\xf1\\xce\\x0a\\xe9\\x02\\x74\\x4a\\x15\\x2d\\xd2\\x94\\x51\\xa1\\x7e\\x28\\xa8\\x9a\\x71\\x58\\xa1\\x83\\x6e\\xfc\\xe4\\xa3\\xe5\\xc7\\xd1\\xfa\\xa4\\xc3\\x87\\x5b\\xc4\\x6c\\x4d\\x9b\\xe2\\x2d\\x66\\xd3\\x66\\xac\\x6f\\x59\\x53\\x8a\\x00\\xb2\\x75\\xb0\\x2f\\xac\\x6d\\xa7\\x55\\xa8\\x54\\x08\\x19\\x97\\xd5\\xd1\\xd0\\xe6\\xe5\\x68\\xa5\\x95\\x8c\\xf3\\x34\\xc5\\x18\\xcd\\x51\\x7a\\xb9\\xd7\\x3c\\x48\\xd6\\xcb\\xc4\\xae\\x4e\\xea\\x43\\x53\\x11\\x3e\\x7e\\x4a\\x7c\\x05\\x92\\x0e\\x68\\x6b\\xf0\\x7a\\xfb\\xfb\\x8d\\xd2\\xec\\x4f\\x18\\xfa\\x71\\x38\\xe5\\x7d\\x33\\x2c\\xd7\\xa4\\x22\\x8f\\xea\\x73\\xbc\\x09\\x25\\x2f\\x24\\x42\\x72\\x94\\xeb\\xd3\\x64\\x5e\\xe0\\x99\\x6c\\x2e\\x85\\x1a\\x8a\\xa5\\x1a\\x7c\\xd9\\xfc\\x2e\\xab\\x47\\xc0\\xab\\x21\\x3f\\x4f\\x51\\xd2\\x16\\x09\\x1e\\xd0\\x89\\xe4\\x59\\x2e\\x9b\\xb0\\x82\\x8b\\x85\\x8f\\x84\\xf6\\x0b\\x93\\xad\\x84\\xa0\\xa2\\x28\\x27\\xcb\\xd2\\x74\\x14\\xb7\\x81\\x32\\x2a\\x04\\xd3\\x96\\x08\\x28\\xf6\\x38\\xdf\\x28\\x34\\xc7\\xf7\\x83\\x9d\\x70\\xdb\\x12\\x6b\\xee\\x5a\\xf2\\xee\\x75\\x59\\xa8\\xac\\x4c\\x01\\xa6\\xc3\\x91\\x39\\x6a\\xf9\\x3f\\xa0\\x60\\x89\\x40\\x29\\x7d\\xdf\\x89\\x00\\xc5\\xdd\\xb4\\x66\\x34\\x0a\\xe5\\x1c\\x60\\xc7\\xea\\xd7\\x62\\x44\\x7e\\x76\\xd8\\xbc\\xcb\\x57\\x39\\x97\\xcf\\x66\\x14\\xd1\\x88\\xa0\\xb9\\xa2\\xf5\\x6e\\xed\\x9b\\x0f\\x9d\\x46\\x3a\\x19\\x78\\x7f\\x40\\x92\\x58\\x1a\\x65\\xc6\\xbf\\x78\\x1b\\x93\\xc5\\x60\\x87\\xe5\\x4e\\xe1\\x34\\x3a\\xab\"},\n{{0x66,0xb5,0x0f,0x69,0x2e,0x39,0x5e,0xb8,0x33,0x86,0xe0,0x27,0xc8,0x2c,0xe3,0xfd,0xee,0x3b,0xd8,0x99,0xb0,0xd3,0x17,0x9d,0xb0,0x86,0xfb,0xf5,0x24,0xf5,0x74,0x59,},{0x44,0x85,0x36,0xe9,0x82,0x40,0x84,0x37,0xce,0x89,0x67,0x40,0x53,0xe3,0xc5,0x89,0xc9,0x8c,0x09,0x5c,0x60,0x02,0x1a,0x11,0x81,0x78,0xc6,0x26,0x1d,0x88,0x10,0xfe,},{0xbd,0x13,0xf6,0x36,0x2c,0x07,0x07,0x89,0x22,0xf3,0x0c,0x63,0x30,0x75,0x1b,0xf6,0xe7,0xcf,0x42,0xa7,0x69,0x16,0xee,0x65,0x3e,0xb1,0x7a,0xcc,0xff,0x1f,0xbb,0xca,0x35,0x25,0x8c,0x4c,0xbc,0x58,0x2a,0x5e,0x8c,0xc9,0x4f,0xd2,0xc7,0xed,0xeb,0x53,0x76,0x2f,0x1f,0xc2,0x31,0x23,0xd7,0xf4,0xf1,0x45,0x40,0x9b,0x31,0xcd,0x38,0x02,},\"\\x74\\x28\\xa9\\x64\\x21\\x2b\\xcb\\xe8\\xdf\\x7d\\x59\\xe4\\x8e\\x92\\x34\\x80\\xaa\\x0e\\xe0\\x9b\\x91\\x0d\\x04\\xef\\xb6\\x90\\x36\\x62\\xef\\xc3\\x10\\x7a\\xc8\\xfd\\xc0\\xc5\\xf3\\x92\\x72\\x74\\x0c\\xd8\\x77\\xe1\\x6c\\xd7\\x1c\\x54\\x92\\x38\\xc3\\x37\\x22\\x0c\\xe2\\xf6\\xb5\\xa1\\xfc\\x6f\\x7b\\x0a\\x1c\\xd4\\xed\\x21\\xd9\\x38\\x89\\x08\\x1e\\x34\\xfb\\x7f\\xde\\xcf\\x41\\x78\\xbb\\xd4\\x31\\xe6\\x11\\xe5\\x39\\xd9\\x00\\xc3\\xd0\\xac\\x3d\\xc7\\x10\\x7b\\x36\\xb4\\x1d\\x6d\\x0d\\x5d\\x32\\xc1\\x97\\x27\\xf9\\x08\\xb6\\xeb\\x36\\x7f\\xeb\\xb3\\x52\\xa4\\x93\\x58\\x1f\\xf1\\x28\\xb5\\x6c\\x4c\\xaf\\x6f\\xb8\\xe0\\x99\\x81\\xf0\\xd3\\x79\\x57\\xd1\\x28\\x20\\x17\\xfb\\xb8\\x07\\x61\\x4c\\x20\\xf4\\x65\\xdc\\x02\\xb0\\xcd\\x96\\x99\\x83\\xbd\\x5a\\xe1\\xeb\\xf6\\x57\\x8d\\x7f\\xf3\\xce\\xff\\x32\\x0e\\x25\\x56\\x21\\x99\\xde\\xe9\\x34\\x75\\x7c\\xc1\\xf5\\x8d\\x55\\x40\\xc4\\x1a\\xac\\x1c\\xe4\\xf2\\x11\\xf0\\xb8\\xec\\x41\\x07\\x17\\x40\\x30\\xe7\\x02\\xbc\\x6a\\x8a\\x9c\\x85\\xc5\\x05\\xc9\\x31\\x6a\\xef\\xea\\x3e\\x43\\x72\\x24\\x2d\\xe0\\x19\\xb3\\x5e\\x2b\\xd3\\xc5\\xa9\\x56\\x52\\x19\\x71\\xc1\\x06\\xa3\\xad\\xbb\\xc1\\x3c\\xdc\\x4f\\x7f\\x9d\\x3c\\x58\\xb9\\x6a\\x34\\x4b\\x4a\\xc3\\xef\\x6b\\xd8\\xac\\xa6\\xed\\x98\\x76\\xb4\\x3e\\x64\\x97\\xfa\\xf7\\xfa\\x4c\\xf2\\x7f\\xbc\\xb6\\x65\\x73\\x0c\\x09\\x1e\\x13\\xaa\\xf7\\xe9\\xef\\xe7\\xdd\\x10\\xe1\\x4e\\xb1\\x9a\\x92\\x00\\x42\\x42\\x10\\xec\\x8b\\x8f\\xba\\x7e\\x69\\x44\\x4c\\xe1\\xa9\\xe3\\xa7\\xb2\\x6c\\x11\\xf6\\xb7\\x14\\x5b\\x69\\x83\\xa7\\x80\\x57\\x76\\x48\\x40\\x31\\xbf\\xf5\\x2e\\x81\\xae\\x76\\x9b\\x70\\xa2\\x82\\xb0\\x94\\xff\\xb5\\xfb\\x55\\x25\\xdc\\x1a\\x87\\x2e\\x20\\x7e\\x82\\x7a\\x2e\\x11\\xf4\\xec\\xf7\\xb5\\x30\\x8c\\x74\\x8a\\x92\\x78\\xea\\x7b\\xd6\\x61\\x88\\x19\\x44\\x00\\x43\\x0c\\x8c\\xd5\\x96\\xeb\\xb8\\x72\\x21\\xe5\\x36\\xf6\\xaf\\xe1\\xf1\\x50\\x5d\\x6a\\x59\\xf4\\x1d\\x16\\xa2\\xf0\\x14\\xe1\\xcf\\xa5\\x13\\xf7\\xa6\\x97\\x31\\xd7\\xbf\\xdb\\x2a\\xff\\xce\\xfe\\x05\\x37\\xd4\\x2c\\x79\\x6e\\x3f\\xd2\\x7e\\x41\\xb7\\xca\\x72\\x05\\x1b\\xef\\x28\\xbb\\x7b\\xde\\x70\\x10\\xdc\\xfe\\xd8\\xaa\\x16\\xef\\x67\\x6d\\xb6\\xe5\\x20\\xc3\\xce\\xf8\\xd6\\xf5\\x8a\\x9a\\x28\\x13\\xcf\\xf0\\xf7\\x04\\x1f\\x87\\xfb\\xfb\\x84\\x31\\xe0\\x20\\xed\\xe1\\xd4\\xea\\xf1\\x9e\\x23\\xb9\\x83\\x44\\x5c\\x59\\x15\\xb5\\x4a\\xdf\\xb5\\x57\\xfc\\x20\\xd0\\x05\\x8f\\x40\\xf5\\xe0\\x98\\x25\\xdb\\xa8\\xd8\\xf2\\x0c\\x00\\xf4\\x3b\\x3a\\xee\\xbb\\x61\\x57\\xbe\\x32\\xec\\x54\\x62\\x7d\\x5d\\x42\\xab\\x81\\x3c\\xf9\\x7f\\x09\\x5d\\x26\\xdb\\x80\\x36\\xc1\\x2e\\x82\\xcb\\x96\\x3e\\x80\\x01\\x16\\x7e\\x61\\xab\\x39\\x3b\\x4c\\xca\\x75\\x5e\\xce\\xa8\\x69\\x95\\x4e\\x32\\x3f\\xa5\\x26\\x2c\\x5f\\xda\\x3e\\x0b\\xe9\\xa5\\x1e\\x5a\\xf5\\x1f\\xa6\\x44\\x48\\x24\\xfb\\x83\\x7c\\xc6\\x7b\\xe5\\x37\\xa8\\x75\\x69\\xc3\\x0c\\xf0\\x11\\x4d\\x39\\xa0\\x39\\x42\\xde\\x4e\\x1c\\xd5\\x23\\x35\\x5d\\xab\\x1a\\xf3\\x60\\x80\\xa9\\xa9\\xa5\\x48\\xbe\\x1c\\x2a\\x7f\\xbe\\x54\\x33\\x77\\x23\\x15\\xd2\\x83\\xe5\\x15\\x6d\\xf6\\x48\\xbe\\xe4\\xb7\\xdc\\xda\\x74\\xf1\\x59\\x05\\xd5\\x42\\xbe\\x54\\x87\\x3c\\x15\\xc5\\x3f\\xf4\\x2a\\xca\\xbf\\x8c\\x56\\xf2\\x57\\xd7\\x64\\x72\\x2d\\xb4\\xe9\\xc7\\x18\\xe1\\x20\\x98\\xa3\\x45\\x74\\x86\\xa6\\xc9\\x47\\xac\\x2d\\xe0\\xaf\\x53\\xe8\\x2c\\xf9\\x50\\xbb\\x37\\xca\\x29\\xc8\\xda\\xdf\\xa3\\x64\\x6d\\xb4\\x98\\x2a\\xf5\\x72\\xd3\\x9b\\x26\\x8c\\x7f\\x96\\xb0\\x3e\\xf6\\xb6\\x53\\xc8\\x79\\x45\\xf2\\x9b\\xc5\"},\n{{0x55,0x32,0x8b,0xe4,0xb3,0x70,0x82,0x27,0x33,0xff,0x39,0x89,0xa6,0xa3,0x28,0x2d,0x65,0xfe,0x8f,0x20,0x7a,0xb7,0x27,0x0d,0x7c,0x2e,0x72,0x7c,0xa3,0xcf,0xaa,0xc4,},{0x51,0x8e,0x02,0xee,0xf5,0x2f,0x5a,0xae,0xbd,0xe3,0xd1,0x08,0xea,0x79,0xec,0xad,0xfc,0x4d,0x99,0x4c,0xe1,0x95,0x36,0x21,0xe5,0x4b,0x7b,0x3b,0x12,0x1f,0xf8,0xff,},{0xf5,0x8d,0xb1,0x9f,0xd8,0x34,0xe1,0x51,0x94,0xc3,0xc0,0xf8,0xa6,0xa5,0x0e,0xbc,0x4c,0xf0,0x74,0xe8,0x0e,0xa2,0xe7,0x0c,0xda,0xf1,0xe1,0x69,0xbd,0x51,0xeb,0xd0,0x99,0x0b,0xad,0x77,0xc4,0xfa,0x20,0x8b,0x8d,0xd1,0xe2,0xc8,0x57,0x4c,0x01,0xb5,0xf5,0x96,0xc8,0xdf,0xa6,0xbb,0x8e,0x6a,0xe3,0xa4,0x7f,0xf4,0x12,0xe7,0xe2,0x09,},\"\\x6c\\x24\\xc9\\xaf\\xbb\\xf1\\x2d\\xca\\xee\\x6f\\x10\\xe4\\x08\\x92\\x52\\xf2\\xc6\\x0b\\x2a\\xb9\\x3a\\x02\\xc1\\x60\\x2f\\xb5\\xde\\x4c\\xe3\\xbd\\x92\\x3e\\xb0\\x2f\\xe1\\x03\\x9f\\xdc\\x15\\x99\\x6a\\x44\\x69\\x15\\xe7\\x67\\xde\\xe0\\x17\\x6d\\xdd\\xb7\\x8e\\x9d\\x6b\\xbf\\x06\\x96\\x75\\x77\\x5a\\x82\\x9d\\xd8\\x08\\xd3\\x76\\xb0\\xcf\\x79\\x20\\xbf\\x1a\\x66\\xe1\\x30\\x3b\\xa5\\x24\\x19\\x78\\x5f\\x25\\xf2\\x8b\\xb3\\x38\\x99\\xeb\\xde\\x84\\x0c\\x0a\\xb1\\x4b\\x91\\x9a\\x65\\x80\\xcb\\xaa\\xc3\\xa8\\x05\\x62\\x7b\\x9c\\x4a\\x77\\xba\\xa1\\x6f\\x82\\x5a\\x9e\\xac\\x2d\\x6d\\x36\\x41\\x65\\x14\\x93\\x37\\x0e\\x50\\xee\\xe9\\x4c\\x74\\x04\\x97\\x64\\x36\\x56\\x05\\xab\\x4d\\xac\\x1a\\x03\\x02\\x27\\xa3\\x30\\xaa\\x17\\x8f\\x2f\\x8d\\xa3\\x77\\xaf\\x73\\xf0\\xbb\\x04\\x0b\\xac\\x12\\x36\\x6e\\x65\\xe0\\x59\\x10\\x55\\xf9\\xf2\\x3e\\xac\\xa3\\x5e\\x96\\x88\\xd8\\x37\\xa3\\xc0\\xd9\\x9c\\x16\\x8f\\xd8\\x86\\xac\\xc9\\x22\\xcf\\x37\\xa7\\x11\\x8e\\xf8\\xa4\\x4b\\xb0\\xa4\\xfa\\x42\\x88\\x04\\x93\\x09\\xa7\\xdc\\x1b\\xed\\x80\\x62\\x1e\\x10\\x63\\xe3\\xe5\\x92\\xc0\\xfb\\xa4\\x2d\\x73\\x98\\xeb\\x15\\xf7\\x40\\x28\\xac\\x15\\xd7\\xed\\x65\\xa6\\x36\\x8a\\x13\\xb7\\xf9\\x56\\xd1\\x95\\x47\\xeb\\x50\\x6c\\xe7\\xec\\x90\\x73\\x4e\\xb9\\x49\\xcf\\xf1\\xd9\\x8c\\xe4\\x14\\xf1\\x0a\\xdc\\xba\\x8c\\x00\\x73\\x20\\x01\\x87\\x50\\xa7\\x1b\\xd3\\x6d\\x3b\\x6b\\xfd\\x61\\x27\\x05\\x45\\x08\\xe3\\xef\\x65\\xd9\\x98\\x48\\x51\\x4d\\x33\\xd6\\x8b\\x58\\xe3\\xa4\\xb2\\x24\\xf7\\x9b\\x6e\\x34\\xdd\\x48\\x03\\x40\\x46\\x7f\\xe7\\xf0\\x25\\xcc\\x88\\x21\\x3d\\x80\\x8f\\xbb\\x5b\\x91\\xe2\\xe4\\x3c\\xf9\\xd9\\x50\\x64\\x07\\x98\\x65\\x92\\x73\\xd4\\x7a\\x25\\xf1\\xf0\\x13\\x2f\\x68\\x82\\xfa\\xad\\xba\\xfb\\xa2\\x8f\\xee\\x5f\\xa1\\x72\\x72\\xc1\\xa9\\x00\\x11\\x72\\xb3\\xab\\x6f\\xf2\\xc3\\x15\\xf2\\x6c\\x07\\x73\\x44\\x05\\xb5\\xee\\x8b\\x5e\\x4f\\x08\\xe1\\xe3\\xb8\\xae\\xa0\\x19\\x46\\x7f\\xb0\\x71\\x88\\x7f\\x19\\x19\\x01\\xa2\\x1c\\x59\\x76\\xc1\\xca\\x8a\\xaf\\x0a\\x1d\\x4a\\x2e\\x69\\x8e\\x76\\x23\\xe9\\xbb\\xe9\\xca\\x2a\\x67\\xa1\\x53\\xa1\\x6f\\x89\\x5e\\x6d\\xd9\\xea\\x92\\x44\\x41\\xb4\\xbd\\x0b\\x67\\x45\\x52\\xe3\\x98\\xb8\\xd9\\x70\\x34\\x3a\\x9b\\xc7\\x76\\xa3\\xa3\\xfc\\x1a\\x86\\x60\\xc5\\x62\\x5d\\x60\\x81\\xb5\\xd8\\x7f\\x0f\\x8a\\xc9\\xf0\\x7a\\xb5\\xab\\xe7\\x7c\\xdb\\x8e\\x30\\xd2\\xfd\\x1f\\x6f\\x46\\x52\\x5c\\x75\\xdd\\x0d\\xd1\\xca\\x32\\x81\\xcc\\x89\\x34\\x6f\\xb3\\xe6\\xd7\\x38\\x8e\\xbe\\xe1\\x54\\xcb\\x59\\xbd\\x9e\\x95\\xed\\x6a\\x41\\xd5\\xdf\\x66\\x8b\\x59\\xea\\x13\\x78\\x68\\xeb\\x12\\x0b\\x8a\\x2c\\xfd\\xf4\\x67\\x44\\x14\\xfd\\x27\\x96\\x99\\xf2\\x8b\\x5a\\x5c\\xcc\\x2e\\x2f\\xc8\\x02\\xa4\\xc9\\xe0\\xb8\\x5b\\x76\\xf2\\x0f\\x6b\\xce\\x2a\\x49\\x54\\x88\\x6f\\xc4\\x02\\x67\\x0a\\x71\\xef\\xd2\\x61\\xf5\\xdd\\x7b\\xca\\x16\\x88\\x4a\\x28\\x7c\\x62\\x2f\\xd4\\x45\\xf6\\x8d\\x44\\x15\\x1c\\xc0\\x13\\x4b\\x22\\x9d\\xa3\\x8d\\xaa\\xab\\x81\\xb5\\xc9\\x60\\xd5\\x77\\x00\\xca\\x92\\xb2\\x6d\\x0b\\x14\\x21\\x34\\xce\\x94\\xb7\\xbe\\x6c\\x18\\x61\\x0e\\xa2\\x13\\x6f\\x8b\\xa8\\x32\\x9a\\x2e\\x8c\\x00\\x0b\\x8f\\x02\\xfe\\x05\\xbc\\xf7\\x2c\\xb7\\x1f\\x8c\\x72\\x53\\x5f\\xfc\\xd8\\x18\\xe3\\x8e\\x79\\x92\\xa8\\xf0\\xc3\\x2a\\xc6\\x21\\x77\\xd1\\x52\\x2a\\xe5\\x52\\xc6\\x0c\\x1e\\xe6\\x16\\xb7\\x5e\\x4b\\x34\\x42\\xe7\\x96\\x57\\xe4\\xa3\\x33\\xc0\\xb3\\xd7\\x44\\xea\\xf2\\x60\\xd0\\xc3\\x36\\x93\\x16\\x86\\xa6\\xd6\\x68\\xc6\\x4f\\xef\\x44\\x00\\x52\\x35\\x2c\\x2b\\x25\\x8c\\xfb\\x65\"},\n{{0x7d,0xa0,0x5f,0x04,0xe5,0xd3,0x8b,0x98,0x9b,0x83,0xf7,0x2f,0x7a,0xb2,0x6c,0x13,0x87,0x76,0x75,0x8f,0x4f,0x57,0x7e,0x49,0xdc,0x73,0xd6,0x01,0x3f,0xf4,0x37,0x59,},{0xb1,0xde,0x51,0x67,0xf4,0xd3,0x30,0x80,0x4e,0xec,0x9e,0xb5,0x65,0xef,0x40,0x55,0xf1,0xb6,0x4d,0xd9,0x5e,0x1c,0x9b,0x27,0xc6,0x7f,0xfe,0xf9,0x14,0x82,0xcc,0xa8,},{0x05,0xf1,0x17,0xf9,0xbc,0x3e,0xa5,0x5d,0x45,0x5e,0x9e,0xf1,0x35,0xe9,0x2e,0x76,0x65,0xd1,0x80,0x70,0xd8,0xf5,0xe3,0x75,0xdf,0x67,0xbe,0x18,0x17,0xce,0x14,0x35,0x7a,0x55,0xe7,0x01,0x66,0xf3,0x26,0xb7,0x7d,0x85,0x24,0x32,0x27,0xcf,0x67,0xd8,0xf2,0xe0,0xbf,0x84,0x40,0xca,0xbf,0xb0,0x52,0x75,0xb3,0x73,0xf1,0xe1,0x19,0x0e,},\"\\xa6\\xa8\\x61\\xd8\\x94\\x7c\\x5c\\xd6\\xad\\x08\\x19\\x60\\x2e\\x32\\xea\\x76\\x81\\xc8\\xf7\\x30\\x10\\xee\\xe5\\x53\\xe5\\xde\\xfb\\xf7\\x98\\x20\\x98\\xb5\\xf7\\xb3\\x99\\x24\\xbb\\x79\\x59\\xad\\x64\\xc3\\x03\\x26\\xbe\\xd5\\x60\\xbf\\x51\\xe9\\x98\\x3c\\xda\\x5d\\xff\\x4f\\x31\\x1e\\xea\\x24\\xcb\\xe6\\x8c\\x61\\x06\\xce\\xac\\x9b\\x84\\x3a\\xa4\\xe2\\xad\\x1b\\x6f\\x8a\\xe1\\xe4\\xf9\\x68\\x71\\xfc\\x02\\x5b\\xe4\\xa6\\x16\\x38\\x5f\\xf2\\xd4\\xb7\\xf5\\x68\\x29\\xab\\xef\\xaf\\x6a\\xac\\xbb\\x78\\x0d\\x6c\\xbb\\xc9\\x51\\xb6\\xe0\\x5a\\x78\\x7f\\x88\\x5e\\x33\\x25\\x61\\x16\\x65\\xec\\xc9\\x24\\x27\\x4a\\xa5\\x31\\xbc\\x13\\x3f\\x62\\xc7\\x6c\\xb3\\xad\\x14\\x8f\\x3c\\x95\\x79\\xa8\\x15\\xa1\\x42\\x00\\xb7\\x64\\x8d\\xae\\x0b\\x07\\xb3\\x27\\xd3\\xbf\\xcc\\xdb\\x6f\\xe3\\xb6\\xcb\\xd7\\x0e\\xa6\\x5e\\x6c\\x0c\\xc2\\x51\\x6a\\x89\\x66\\x96\\xd0\\x7b\\x2e\\x77\\x71\\x3b\\x0b\\xee\\x3b\\x92\\xfb\\x1b\\x6f\\x75\\xb0\\x82\\x0a\\x5c\\xb6\\x2c\\x5f\\xe6\\x20\\x40\\x03\\x94\\x3e\\x24\\x85\\x71\\x66\\xfb\\xdf\\x57\\x1f\\x11\\x5d\\x45\\xf4\\x2e\\x75\\x90\\x1d\\xf8\\xb1\\x2c\\x32\\x61\\x8a\\xac\\xb0\\xd2\\x42\\x86\\xc8\\xd3\\x03\\x96\\x05\\x1f\\xc2\\x72\\xaa\\x17\\xf4\\xd2\\xd4\\x74\\x61\\x15\\x2a\\xac\\xd3\\xfa\\xa2\\xb7\\xb2\\x08\\x31\\x22\\x78\\xe8\\x09\\x24\\x05\\x92\\xd1\\xd1\\xaa\\x58\\x5c\\x56\\x28\\x0e\\x66\\xff\\xd9\\x2b\\x57\\x17\\xd0\\xcd\\x1e\\xb9\\xfb\\x74\\x01\\xde\\xf8\\x79\\x48\\x7c\\x37\\x4e\\x5c\\x53\\x0b\\x6f\\xeb\\xf9\\x11\\x12\\x25\\x74\\xd2\\x4f\\xe1\\x04\\xb4\\xf4\\x5c\\x7c\\x60\\x1e\\x6c\\x91\\x7d\\x3c\\x18\\x82\\xc1\\xad\\x3c\\x55\\x5d\\x8f\\x2c\\xe9\\x55\\xb5\\xa1\\x0d\\xb0\\xd5\\xa8\\xb8\\xac\\x7a\\x62\\x66\\xb2\\xe6\\xb2\\x7a\\xd0\\xee\\x34\\xf4\\x7a\\xd8\\x57\\x36\\x7d\\x52\\xf7\\x09\\x6d\\x4b\\xac\\xef\\x0e\\x46\\x72\\x54\\x88\\x42\\x4b\\x93\\xb8\\x9a\\xcd\\x42\\x9f\\xfb\\x5e\\xf3\\x3a\\x0b\\x08\\x1d\\xd0\\x94\\x79\\x67\\x91\\x96\\x02\\x3c\\x39\\x67\\xf4\\x4a\\xd4\\x1e\\xb1\\xa2\\x39\\x55\\x27\\xfd\\x3b\\x79\\x76\\x8f\\x1b\\x88\\x5f\\x04\\x29\\xb4\\x95\\xab\\x60\\x52\\x56\\x91\\xbe\\x84\\x65\\x06\\x32\\xa2\\xf6\\x6c\\xb6\\x3a\\xd5\\xbf\\x2f\\x6a\\xe7\\x0b\\x66\\x8c\\x5a\\x19\\x3f\\x74\\x99\\xfc\\x4f\\xc4\\x2c\\xf8\\xcb\\x30\\x8c\\xe5\\x02\\x9a\\x50\\x27\\xba\\xbe\\xf5\\x5d\\x19\\x25\\xec\\xfb\\xa9\\xf2\\x7e\\xb6\\x08\\x16\\x19\\xed\\x0d\\xf8\\x56\\x9f\\xd8\\x0e\\x9d\\xa1\\x04\\xdb\\x39\\xb5\\xb8\\x14\\x0b\\xfe\\xbe\\xbd\\x29\\x08\\x54\\x40\\x06\\x58\\x19\\xde\\xba\\x8d\\x46\\x9a\\xe8\\xb3\\xea\\x6d\\x3b\\xac\\x58\\x91\\xf9\\xa4\\xdd\\xfb\\x7f\\x1f\\x06\\xd1\\x3c\\x31\\xa0\\x7e\\xe5\\x3f\\xb5\\x4b\\xc9\\x7b\\xd0\\x86\\x96\\x39\\x4c\\x38\\xe7\\xf3\\x68\\x0c\\x0f\\x02\\xf9\\x75\\xf4\\x69\\x92\\x11\\x47\\xa4\\x09\\x85\\x90\\x97\\x81\\x3b\\x4c\\x3f\\xa4\\x3d\\x17\\x4a\\xc4\\x02\\xf1\\xa5\\x28\\xcb\\x5f\\xc4\\xb8\\x07\\x51\\x84\\x32\\xef\\xf3\\x34\\x07\\xa1\\x11\\xca\\x3a\\x3d\\x7e\\x9e\\x84\\x13\\x5a\\xba\\xc8\\xa8\\xf5\\x2e\\xa6\\x31\\xc8\\x6d\\x74\\xa1\\xc6\\xe5\\x74\\x9e\\xdd\\x14\\x91\\xc0\\x02\\x4e\\x7d\\xe7\\xfe\\x52\\x85\\x68\\x29\\xb7\\x2f\\xd1\\x3d\\xa6\\x3a\\x1a\\x23\\x43\\x34\\x9d\\xf6\\x62\\xab\\x31\\x63\\x53\\x60\\x32\\x34\\x6e\\x53\\x47\\xf0\\x43\\xff\\xf5\\x28\\xbf\\x67\\x15\\x09\\x22\\xff\\xf2\\x02\\x6b\\xab\\x74\\x2d\\xb9\\xca\\xe7\\xcb\\x2e\\x3c\\x74\\x58\\x07\\x19\\x65\\x2c\\x28\\x44\\x7c\\x5e\\x20\\x98\\x23\\x17\\x97\\xee\\x6e\\xf1\\x23\\x1f\\x57\\x92\\x05\\x4b\\xc3\\x35\\x9a\\x32\\xc8\\x6d\\x2f\\x94\\xf8\\x5f\\xa7\\xd4\\xa7\\x41\\x9d\\xd2\\x41\\xff\\x66\\x2a\"},\n{{0x1b,0x8e,0xc6,0x58,0x80,0xed,0xbf,0x03,0x9a,0x13,0xe9,0x70,0xb1,0x5a,0xa6,0x7e,0x19,0x2a,0xa0,0x2c,0xa6,0x5c,0xff,0x9a,0xda,0x17,0xd4,0x55,0x8f,0x40,0x13,0x7d,},{0x12,0xc1,0x19,0x1e,0x4d,0xe3,0xbd,0x44,0xd0,0x39,0x07,0x01,0x53,0xad,0xb7,0xb5,0x81,0xf6,0x00,0xe9,0xa1,0xdd,0x69,0xaa,0x89,0xf2,0x77,0xc7,0x06,0x9e,0x76,0xf8,},{0xbf,0xf2,0x69,0xa3,0x5d,0x6c,0x8e,0x55,0x2c,0xe7,0x16,0xd1,0x63,0x81,0x81,0xce,0x85,0x83,0xb4,0x5c,0x0e,0xc5,0x93,0xb4,0xe5,0x8c,0x40,0xac,0x76,0xe7,0xf8,0x5c,0xa1,0xda,0xff,0xfd,0x68,0x54,0x1e,0x62,0x3a,0x1e,0x35,0xa7,0xc0,0x97,0x26,0x88,0xb2,0x5e,0xed,0x72,0xf4,0xda,0x57,0xec,0xa1,0x68,0x57,0xa8,0x26,0x3c,0xaa,0x0b,},\"\\x37\\xf1\\x8b\\x7f\\x64\\xc5\\x13\\x34\\x79\\xd6\\xda\\xe3\\xbe\\xf6\\x79\\xcd\\xc2\\x1e\\xce\\x3f\\x5b\\x57\\x9a\\x6a\\x9c\\x3f\\xa2\\xe5\\x9e\\x9b\\xe8\\x7d\\x20\\x09\\xf7\\x4e\\x1c\\xfd\\xac\\xcb\\x1c\\xe3\\x7d\\x00\\x70\\x23\\x69\\xbd\\x16\\x9d\\x94\\xfd\\xcf\\x85\\xaf\\x9f\\xa3\\x21\\x7d\\x27\\xe6\\xed\\x6d\\x1d\\x8e\\x5d\\xf7\\x61\\x5e\\x8e\\x37\\xea\\x55\\xde\\x1f\\xd0\\xb0\\x6d\\x77\\xb4\\xc8\\x3b\\x92\\x9d\\x80\\x58\\x6f\\xa0\\x69\\x4b\\xe7\\x2e\\xc8\\xb3\\x65\\xad\\x2c\\xbc\\xdd\\x2b\\x1a\\xd8\\xcf\\x7f\\x03\\x6d\\xfa\\x4d\\xaa\\x1a\\x90\\x36\\xcd\\xb1\\x20\\x43\\x22\\x27\\xb1\\xf0\\x7b\\x88\\x66\\xb1\\x22\\x12\\x03\\x09\\xeb\\x91\\x4a\\xb8\\x4c\\xdd\\xeb\\xa1\\xde\\xc4\\x8a\\xb9\\x26\\x36\\x72\\x85\\x88\\xfe\\xdb\\x3a\\xaa\\xd7\\xe7\\xdb\\xb2\\xac\\x30\\xe6\\x3c\\x6f\\x5f\\x90\\xfc\\x6c\\xe6\\x2d\\x6d\\x3b\\xd8\\x8b\\x0d\\x5a\\xac\\xfa\\x61\\xde\\x9f\\x32\\x67\\xb3\\x00\\x91\\x7b\\x57\\xa4\\x80\\x36\\xab\\x20\\xc9\\xa0\\x54\\x46\\xb8\\x76\\x74\\x94\\xaf\\x24\\x9e\\x7d\\xe7\\xbc\\x50\\x7a\\x22\\x07\\xcc\\x95\\x6f\\x71\\x84\\x55\\x5a\\x7d\\x5d\\x88\\x83\\xbb\\x4b\\x3e\\x93\\xf2\\xdc\\xfc\\x57\\xb0\\xda\\x86\\x38\\x65\\x8d\\xcd\\xce\\x88\\x5d\\x44\\xd9\\xcc\\x68\\xb1\\xd8\\x17\\x0a\\x36\\x77\\xcc\\x5e\\x50\\xcb\\xf3\\x3d\\x54\\x3e\\xba\\xe4\\x47\\x7d\\x92\\x39\\xcf\\x83\\x38\\x4e\\xc5\\x9b\\x42\\x33\\xe8\\xff\\x33\\x43\\xf0\\x6f\\x30\\x18\\x77\\x72\\x9a\\x53\\xd4\\x20\\xbf\\x01\\xc6\\x2e\\x66\\xab\\x7f\\xe5\\x5d\\xd8\\x7e\\xe8\\x23\\xa5\\x8f\\xcb\\x87\\x87\\x0e\\x1f\\x52\\xe8\\x79\\x17\\x7c\\xd4\\x39\\xc5\\x33\\xf5\\xa2\\x23\\xe5\\xa3\\x43\\x6f\\xe9\\xd6\\x42\\x65\\x48\\xda\\xcf\\xc8\\x6a\\x08\\x46\\xd3\\xed\\x23\\xac\\x04\\x25\\x63\\xe8\\x87\\xff\\x46\\xaa\\xd0\\x05\\xf4\\xe1\\xde\\xe3\\xee\\x0e\\xe4\\xc2\\x7a\\x72\\x51\\x70\\x9a\\xe4\\x0a\\xbc\\x5e\\x25\\x68\\x64\\xe4\\x78\\x5a\\x4e\\xdd\\x8b\\x2a\\xdf\\x1b\\xc5\\xb4\\x01\\x8e\\x28\\xd0\\xb1\\x75\\x86\\x7b\\x02\\xd0\\x52\\xa6\\xe1\\x7e\\x41\\x1a\\x3d\\x8b\\xeb\\x2a\\x42\\x08\\xb7\\x6c\\xc6\\x21\\xfd\\x18\\xbe\\x14\\x8e\\x23\\x5d\\x55\\xaa\\x71\\x27\\x70\\x65\\x57\\xde\\xc0\\x53\\xa1\\x3f\\x1a\\x47\\xdf\\xda\\x40\\x5b\\x3f\\xe5\\xbd\\x28\\xef\\x5d\\x34\\x86\\x19\\xf5\\x1e\\x59\\x5e\\xf5\\x05\\x5f\\x83\\x9e\\xfa\\xf1\\x10\\xe4\\x90\\x16\\x31\\xac\\x31\\xa0\\x2f\\x4f\\x7e\\xe4\\x24\\xa3\\xa2\\xc3\\xe0\\x0d\\x26\\x02\\xd2\\xcc\\x1e\\x49\\x29\\x06\\xee\\xa4\\x20\\xa9\\x26\\x82\\x38\\xac\\x66\\x22\\xa0\\x89\\x74\\xe5\\x73\\x02\\x92\\xe6\\xed\\x51\\x02\\x56\\xef\\xde\\x66\\x7e\\x0d\\x9a\\x0f\\xf2\\x21\\x3f\\x54\\x12\\x0c\\xcd\\x81\\xff\\xaa\\x6b\\x7c\\xc4\\x81\\x41\\xa2\\xb7\\x29\\x85\\x2a\\xf5\\x83\\xd2\\x6a\\xa5\\x1f\\xbd\\xe6\\x7b\\xe4\\xdf\\x14\\xe5\\x20\\xc2\\x25\\x7a\\x73\\xc5\\xc2\\xe3\\xc3\\xd8\\x7d\\xfb\\x25\\x36\\x11\\x75\\xfd\\x18\\xab\\xd7\\xe9\\x9a\\xa0\\x9b\\x85\\xf8\\x8f\\x19\\xc8\\xd8\\x2d\\x45\\x85\\x8f\\x31\\x44\\xc5\\xdf\\xb7\\xa4\\x9e\\xde\\x45\\xb4\\xef\\xd8\\x71\\x05\\x92\\xa3\\x72\\x06\\x36\\xe7\\xe8\\x89\\xc7\\xe2\\x2a\\xd1\\x3b\\x2d\\x44\\xbb\\x7e\\x2b\\x47\\xb2\\x96\\x3a\\x5f\\xa3\\xf2\\x55\\x7b\\x85\\xbc\\x0c\\x69\\x3d\\xe3\\xd2\\x2e\\xf9\\x46\\x4f\\x7b\\x81\\x4a\\x20\\xa4\\x67\\x6a\\xd2\\x6f\\xca\\xa0\\x35\\x44\\xc6\\xaa\\xd4\\x12\\x83\\x09\\x5f\\xcd\\x12\\x10\\xaa\\x8c\\xc0\\x29\\xff\\x5a\\x26\\x00\\x5a\\x89\\x12\\x26\\xc2\\x98\\xe9\\x4a\\x52\\xaa\\x71\\x33\\x91\\x3e\\xc9\\xd2\\x2a\\x5b\\x2a\\xc0\\xbc\\x6f\\x15\\xb2\\x51\\xd0\\xb9\\x38\\x89\\x21\\x3c\\xd1\\xb1\\xe5\\xc6\\xfd\\x08\\xf1\\xa8\\xf5\\xcb\\xd4\\x21\\x53\\x29\\xa3\"},\n{{0xe7,0x53,0x88,0x02,0x6a,0x6a,0x6d,0x6c,0x6d,0x19,0x9e,0x36,0x29,0x93,0xa5,0xb1,0x04,0x49,0x01,0xe1,0x8a,0x76,0xc2,0xfa,0xc7,0x26,0x1a,0x6d,0x1c,0x19,0xa4,0xf3,},{0xb9,0xce,0x14,0x25,0x1c,0x0c,0xdf,0x3b,0xdd,0xb2,0x06,0xdc,0x6b,0x8b,0x2b,0x7f,0x5b,0x7e,0x4d,0xd1,0xbe,0x2c,0xe1,0x86,0x3f,0xf1,0x88,0x06,0xae,0x00,0xf1,0xee,},{0x6d,0x0f,0x83,0xd9,0xc5,0x5d,0x84,0xbc,0xf9,0xa8,0x61,0x47,0xd9,0xb6,0xba,0x9a,0xd5,0x37,0x83,0x2f,0xd0,0xf9,0x9d,0xae,0x7e,0x72,0xc8,0x13,0x9a,0xfc,0xb3,0x0c,0x7b,0x24,0xf6,0xb2,0x92,0xe3,0x2f,0x98,0x47,0x09,0x75,0x51,0xb7,0xfb,0xfd,0x51,0x0c,0x84,0xe8,0x9b,0xe9,0x82,0x54,0x44,0x14,0x57,0xbd,0x08,0xe5,0xf0,0x53,0x02,},\"\\xb9\\x9c\\xdc\\x84\\x72\\x11\\xc0\\x66\\x42\\xdd\\x11\\x1b\\xc5\\xe0\\xbe\\xca\\x53\\xa7\\x4f\\xfb\\xa2\\xe3\\xac\\x93\\xaf\\xb4\\xb0\\x94\\x75\\x18\\xe8\\x32\\x35\\x27\\x33\\x0a\\x4e\\xfe\\xfb\\xe4\\xba\\xfa\\x00\\xba\\xfe\\xcb\\x43\\x4a\\xb1\\xe5\\xb7\\xce\\x65\\x65\\x6f\\x7a\\x4f\\xd8\\x56\\xaa\\x6c\\x38\\x5e\\xd8\\xd7\\xbd\\x62\\x85\\x58\\x0d\\x7d\\xd6\\x08\\x82\\xe6\\x9c\\x19\\xda\\x07\\x69\\x09\\xd6\\x47\\xde\\x09\\x5a\\x80\\xe9\\x8a\\xd8\\x9b\\x81\\x4a\\xad\\xcb\\xbf\\x6f\\x03\\x3c\\x49\\x20\\x2f\\x65\\x6c\\x09\\x10\\x50\\x39\\x59\\xcf\\x97\\xcd\\x0f\\xa8\\x2d\\x5f\\x6d\\x22\\xfb\\xa3\\x38\\x99\\x51\\x29\\x4c\\x4f\\x7c\\xdc\\x21\\xeb\\x82\\x44\\xbd\\x65\\x60\\x63\\x7a\\x5e\\xca\\x62\\xa8\\xeb\\xa1\\xf4\\xa9\\x33\\xd1\\x87\\xa7\\x5f\\x86\\x71\\x16\\x43\\xaf\\x35\\x88\\x31\\xc8\\xc1\\x6a\\x9a\\x0f\\x09\\xe2\\x53\\xb2\\x39\\x5e\\x9c\\xb3\\x71\\x61\\x1e\\xec\\xdd\\x66\\xb4\\xab\\x52\\x1a\\xa9\\x4b\\x3f\\x20\\x23\\x7e\\xae\\x41\\xcd\\x10\\xc5\\xe2\\x1a\\x45\\x2d\\x48\\xe7\\x48\\x18\\x7f\\x35\\x4a\\x67\\xad\\xf6\\x81\\xb0\\xfe\\x61\\xcd\\xae\\xc9\\x4a\\x5e\\xaf\\x01\\x26\\x9f\\xce\\xb5\\x70\\xd5\\x14\\xff\\x3c\\x55\\xff\\x1d\\xba\\x2f\\xd2\\xdf\\x17\\xf8\\x6a\\x8a\\xeb\\x74\\x78\\x38\\x11\\x3d\\xee\\x94\\xa4\\x3b\\x13\\x84\\xcb\\xe1\\x33\\xcd\\xf6\\x42\\x7e\\x8d\\x12\\x2e\\x4e\\x93\\x37\\x04\\xda\\x6e\\x26\\xcf\\xce\\xe9\\x7f\\xe3\\xf6\\x29\\xb6\\x0b\\x91\\xb2\\xdd\\x86\\x38\\x67\\xfa\\x79\\x80\\x1e\\x2b\\x91\\x6e\\xc4\\xc0\\xfb\\x62\\xe0\\x71\\x59\\x42\\x1e\\x65\\x79\\x74\\x30\\x7a\\x1d\\x02\\xf7\\xf2\\xed\\x47\\x24\\xa8\\xb5\\x21\\xa8\\x61\\xf5\\x5f\\x35\\x52\\x1e\\x8b\\x2e\\x1a\\x84\\x90\\x4c\\x42\\x8c\\xfc\\x5b\\x60\\x14\\xbb\\x0f\\x8b\\xa8\\x43\\x4c\\x22\\x09\\xbd\\x40\\xac\\xa3\\x11\\x30\\xdb\\x97\\x74\\x33\\x33\\x59\\x7d\\x23\\x51\\xd5\\xf6\\x81\\x17\\x41\\xf6\\x26\\x88\\x97\\x3b\\xd7\\x73\\xd3\\x02\\x66\\xfd\\x1e\\xfb\\xd8\\x9d\\x47\\xa9\\x64\\xf9\\xd0\\x19\\x97\\x15\\x3d\\x08\\x7d\\x92\\x69\\x66\\x16\\xdd\\x10\\x3a\\x93\\x4c\\xcb\\xac\\x4c\\x1d\\x14\\x2f\\x20\\x75\\xd4\\xe2\\x2c\\x3d\\xa4\\xa0\\xe9\\x73\\xb2\\x38\\x63\\x19\\x62\\x87\\xb7\\x91\\x74\\xfa\\x29\\x75\\x5f\\xc6\\xd9\\xb5\\xe1\\x00\\xac\\xe0\\xa4\\x59\\x75\\xe5\\x03\\xb2\\x54\\xd3\\xf1\\x95\\xc2\\x61\\x71\\x09\\x10\\xfe\\xf1\\x06\\x89\\x2c\\x08\\xbb\\x29\\x6d\\x23\\x0c\\xde\\xa9\\xf5\\xa1\\x1f\\x91\\xac\\xaa\\x6e\\x7c\\x05\\xe9\\x2c\\x28\\x1d\\x2b\\x31\\x55\\xfe\\x44\\x80\\xb0\\xaa\\x5e\\x0d\\xb4\\x1d\\x10\\xe0\\x5c\\xfd\\xef\\xa4\\x36\\x40\\x51\\xcb\\x75\\x5d\\xc7\\x2f\\xfa\\x97\\x8c\\x00\\xb9\\x4a\\x5f\\x21\\x2d\\xc6\\x91\\xf8\\x39\\xb4\\x9d\\xe9\\x7e\\x01\\x39\\xd6\\x5e\\x8d\\x73\\xb2\\xb2\\x89\\xb2\\x6a\\x12\\xc6\\xcc\\xd8\\xed\\xc0\\x4a\\xdb\\x45\\x2a\\xf7\\xff\\x09\\x4a\\xa9\\x01\\xea\\xf5\\x76\\x51\\xeb\\x1b\\x87\\xb8\\x33\\xd0\\xa0\\x9b\\x4a\\x4a\\x64\\x62\\xf4\\x06\\x64\\x62\\x37\\x69\\xe9\\x50\\x79\\xf3\\xc9\\x62\\x85\\x0c\\xc3\\xb4\\x01\\xbb\\x00\\x58\\xb8\\x47\\x5b\\x10\\xc8\\x62\\xf3\\x2f\\x30\\x0a\\x2b\\x14\\x3b\\x3d\\xea\\x26\\x9d\\xdc\\xbe\\xa7\\xbe\\x7d\\xd2\\x42\\x6d\\x0d\\x42\\x04\\xeb\\x66\\xa3\\x9f\\x13\\x18\\x82\\x2d\\xcb\\x9c\\x56\\x13\\x98\\x63\\x7f\\x4a\\xb8\\xde\\x19\\x67\\x68\\xac\\xe7\\x4f\\x34\\x8c\\x01\\x2d\\xd1\\xba\\xbe\\xc1\\x7f\\x53\\x00\\xff\\xe0\\xd7\\xaa\\xae\\xaf\\xef\\x7d\\xb6\\x50\\xa8\\xf2\\xf3\\x09\\xa9\\x79\\x3f\\x52\\xc6\\x85\\xc7\\xe1\\xd5\\x13\\x32\\x74\\x91\\x57\\x84\\x89\\x9c\\x48\\x1d\\x48\\x5c\\x9b\\xd3\\x0e\\x99\\xfc\\xdc\\x97\\xd9\\x6e\\xf0\\x74\\x87\\xda\\x66\\x3b\\xef\\xe6\\x82\\x99\\xdf\"},\n{{0x5b,0x32,0x3f,0xc0,0x1a,0x16,0xc4,0x5d,0x10,0x64,0x66,0x7d,0x2e,0xa4,0xa7,0xea,0x59,0xd2,0x03,0x42,0x56,0x2d,0x12,0xfb,0xc5,0x98,0xd5,0xaa,0x73,0x00,0x68,0x8e,},{0xd4,0x14,0x1b,0x45,0x5d,0x30,0x16,0x42,0xba,0xda,0x28,0x14,0xaf,0xcb,0x16,0x20,0xd5,0xeb,0x56,0xd9,0x2b,0x11,0x85,0xfe,0x5d,0xad,0xef,0x55,0x96,0x25,0xfa,0x71,},{0xe2,0xef,0xf6,0x07,0xf0,0x22,0x7a,0x29,0xd5,0x82,0xd6,0x9f,0x34,0x58,0xac,0xad,0xd3,0x22,0x6f,0xce,0xaa,0xc0,0xab,0xbd,0xae,0xd5,0x26,0x75,0xc5,0x16,0x30,0x07,0x3c,0xd3,0xa9,0x01,0x70,0x7e,0xcf,0x05,0xe8,0x93,0xf2,0xc3,0x6d,0xaa,0xf0,0xcc,0x49,0x01,0x11,0x69,0x46,0xb5,0x77,0x0d,0xc0,0x38,0x12,0x5f,0x6d,0x13,0x1b,0x09,},\"\\xad\\x24\\x66\\x9e\\xf5\\x5c\\x54\\x0a\\x8e\\xd1\\x62\\xce\\x1d\\x28\\xf0\\x17\\x60\\xa6\\x07\\x19\\xa0\\x37\\x73\\x36\\xeb\\x00\\xb1\\xec\\xbe\\x6f\\x61\\x60\\x1c\\xd5\\x64\\xf9\\x2c\\x95\\x68\\x04\\xf9\\xbe\\xd4\\xe1\\x47\\x6b\\x94\\xe5\\xea\\x8c\\xca\\x80\\xcb\\x49\\xa3\\x04\\xef\\x85\\x1f\\x7f\\x67\\x5a\\xbe\\x58\\xe6\\x68\\x1d\\xc0\\x12\\xad\\x55\\xe5\\x1b\\x02\\x1d\\x98\\x28\\x56\\x9d\\x0b\\xcc\\x9e\\x05\\x27\\xa3\\xfc\\x03\\xc8\\x91\\xd1\\x7a\\x90\\xe6\\x33\\x7a\\x1e\\xa6\\x7f\\x2f\\x08\\x81\\x05\\x87\\x69\\x38\\x37\\x08\\x1e\\x4c\\x08\\xa3\\xd7\\x2c\\x53\\x6c\\x21\\x40\\xda\\x20\\x0b\\xa4\\x56\\xc3\\x76\\xf6\\x1d\\x05\\x65\\x1f\\x0c\\x5f\\x39\\x57\\x11\\xf4\\x1c\\x0d\\x6e\\xae\\x98\\xc9\\x06\\x76\\x4d\\x1e\\xbe\\xf3\\xf9\\x04\\x6c\\xb7\\xc8\\x62\\x26\\x40\\xfc\\xaf\\xaf\\xbf\\xb8\\xf6\\x2e\\x1c\\xd3\\x2c\\x66\\xee\\x1c\\x55\\x50\\x94\\x89\\xa5\\x38\\xab\\x61\\x29\\x99\\xe7\\x99\\x7b\\x77\\x9c\\x64\\x22\\xef\\xf1\\x09\\xda\\x4d\\xf8\\x29\\x20\\x93\\x0d\\x8d\\x36\\x3d\\x78\\x30\\x90\\x87\\x95\\xa3\\x88\\x8f\\x25\\xd6\\x67\\xe1\\x4d\\x15\\x5e\\xd4\\x45\\x81\\xbe\\x43\\x0f\\x79\\x73\\xb5\\x74\\xe2\\xbc\\x0b\\x13\\x4c\\xf1\\x39\\xfb\\x4b\\xb0\\x1d\\xbd\\xa4\\x1b\\x67\\xb9\\x81\\x47\\xd8\\x01\\x2f\\x40\\x67\\x7f\\x4b\\x80\\xce\\x4a\\x53\\x4c\\x90\\xad\\xea\\xbf\\x48\\x4b\\x21\\xfa\\x99\\x4b\\x7a\\x17\\x5f\\x8a\\x8b\\x8a\\x40\\x75\\x56\\x44\\x78\\xdd\\xb0\\x50\\x24\\x58\\x0b\\xab\\x03\\x8c\\xd9\\xea\\xa1\\xdf\\xda\\x55\\x2f\\xb3\\x12\\x29\\x42\\x9b\\x61\\x4f\\xa1\\xd8\\x0c\\x52\\x61\\x4e\\x84\\xfa\\xa2\\x21\\x7f\\x26\\x0f\\xf7\\xcc\\xea\\x8c\\x7b\\x06\\xe3\\xd7\\x7f\\xf8\\x74\\xeb\\x81\\xfc\\x85\\x97\\xe5\\xfc\\xdc\\xec\\x95\\x1b\\x5f\\xe6\\x4a\\x1a\\xf8\\x6e\\x73\\x19\\x3a\\x88\\x24\\x69\\xeb\\x3b\\xa3\\xc3\\x82\\x73\\x4b\\x28\\x87\\xb4\\x19\\x31\\x6e\\xa4\\x48\\xaf\\xc2\\x82\\x47\\x8c\\x25\\xf7\\xbc\\xa1\\x84\\x29\\xcb\\xbf\\xfd\\x88\\x71\\x17\\x7c\\x5e\\xcc\\x7d\\x8a\\xa9\\xa1\\xb9\\xec\\x87\\x19\\x2d\\x29\\xa5\\x25\\x39\\xc0\\x81\\xc3\\x59\\x33\\x32\\x44\\x4c\\xbe\\x66\\x87\\x2c\\xf3\\xd0\\xe1\\x97\\x29\\x2b\\x82\\xb0\\xbe\\x5f\\xcd\\x85\\x8c\\xd6\\xca\\x48\\xb5\\x3e\\xe5\\xb6\\x16\\x41\\xbc\\xaa\\xf3\\x1d\\x81\\x9c\\x7e\\x1c\\xed\\xaf\\x9e\\xe6\\xb0\\x7e\\x09\\xca\\xed\\xfb\\x30\\xb9\\x20\\x4a\\x1d\\x4d\\xdb\\x70\\x56\\x0c\\xbe\\x1e\\xb0\\xc0\\xec\\x43\\xf1\\xd1\\x78\\x20\\x1b\\x29\\x08\\x19\\xfc\\xdc\\x92\\xc6\\x3e\\x0d\\xb6\\x0f\\xb8\\x7d\\xff\\x00\\xe5\\x12\\x64\\x8c\\x89\\x58\\xa8\\x47\\xef\\xc3\\x63\\x46\\x07\\x3f\\x1a\\x4f\\x1f\\x23\\x17\\x06\\x0f\\x1c\\x54\\x3e\\x6f\\x01\\xb4\\x24\\x85\\xbe\\xeb\\x56\\xca\\xb3\\xba\\xb2\\x6e\\x6a\\x0c\\xa6\\x93\\x58\\x02\\xc7\\x62\\xb7\\x99\\x15\\x9e\\x32\\x0f\\x36\\xb5\\xe8\\x3d\\x4a\\xca\\x89\\x62\\xaa\\x2c\\x3c\\x2b\\x7a\\x38\\x70\\xe9\\xe0\\x47\\x31\\xf3\\x94\\x8c\\xf9\\x41\\xe2\\x1d\\x50\\x96\\x4e\\x5d\\x63\\x5a\\x35\\xa5\\x3e\\x29\\x98\\x11\\xb8\\xca\\xdf\\xcb\\x44\\x16\\xc5\\x75\\x98\\xa3\\xfd\\x05\\x41\\x09\\x10\\xdb\\xc0\\xea\\x2c\\x78\\xfd\\xb9\\x25\\x74\\x99\\x7d\\x58\\x79\\x62\\x79\\xea\\xaa\\x78\\xb3\\x6d\\xce\\xf1\\xc9\\xa1\\x29\\xee\\xff\\x82\\x39\\x9a\\x26\\xd0\\x08\\xff\\xa3\\xbf\\x04\\x18\\xff\\x7d\\x39\\xb6\\x42\\x7f\\x34\\x18\\x95\\x02\\x4d\\x16\\xe2\\x2a\\x0c\\x62\\xa8\\x2b\\xeb\\xa2\\xe2\\xba\\xc2\\x3d\\xee\\x18\\xcf\\xcd\\x5d\\xb2\\x39\\x7f\\x37\\x8c\\x53\\x67\\x30\\x90\\x82\\xc4\\x4e\\xb4\\x3c\\xed\\xc1\\x52\\x20\\x25\\x3a\\x62\\x32\\x03\\x99\\x66\\x5f\\x71\\x34\\x9c\\xc1\\xb9\\x44\\xf5\\x8c\\x73\\xa1\\x0a\\x0b\\xbf\\xd4\\xca\\xf1\\x28\\x91\\xe3\"},\n{{0xbe,0x1c,0x11,0x2f,0x78,0xcf,0x13,0xae,0xfc,0x5c,0xe7,0xe3,0x37,0x64,0xac,0xa4,0x48,0x1f,0x9f,0x88,0xb0,0x18,0xe1,0x22,0xdb,0x9f,0x8d,0xac,0x14,0x62,0x46,0x05,},{0xae,0x38,0x99,0x36,0xbb,0xf6,0xd1,0x6e,0x3c,0x1e,0xeb,0x64,0x74,0x29,0x89,0x70,0x86,0x6e,0x12,0xec,0x9c,0x1d,0x6a,0xea,0x2f,0xd9,0xdb,0x6b,0x56,0xaa,0x59,0xc4,},{0xf5,0xfc,0x5a,0xcb,0x17,0xe9,0x95,0x7e,0xa3,0x04,0xf1,0x23,0xb6,0x50,0xe1,0x44,0xc9,0xe4,0x37,0x72,0x83,0x50,0x9d,0x43,0x1d,0xa6,0xa2,0xbb,0xd5,0x27,0xbe,0xb3,0x82,0xc9,0xf5,0x87,0x45,0xa3,0xe5,0x6d,0xcc,0x65,0x5b,0xd2,0xeb,0xb7,0xae,0xef,0xc9,0x3e,0xdc,0x3f,0x20,0xd8,0xd3,0xc3,0x79,0x23,0x03,0x1e,0xec,0x0c,0xb4,0x07,},\"\\xd7\\x7f\\x9a\\xee\\xa0\\xfe\\x98\\xed\\x7f\\xb7\\x4d\\x58\\x2a\\x40\\x2b\\xcb\\x79\\x31\\x47\\x4b\\x4a\\x95\\xd5\\x23\\xf3\\xfb\\x76\\x9f\\xb7\\x09\\x7d\\x2b\\xe4\\xc6\\xec\\x10\\x52\\x14\\x01\\x63\\x22\\x25\\x53\\xaa\\x8f\\x4f\\x89\\xe4\\x21\\x73\\x00\\x14\\xec\\x73\\x46\\x97\\x20\\xce\\xa9\\x67\\xf8\\x8b\\x6a\\x48\\xd0\\x2a\\x2d\\xdc\\x1a\\x12\\x1f\\xdf\\xfb\\x8a\\xe1\\x27\\x73\\x8e\\x29\\x3c\\x4d\\x6b\\x1b\\x74\\xad\\x03\\x84\\x4d\\xe6\\xbf\\xe8\\x21\\x50\\x6b\\x3a\\x7a\\x81\\xd1\\x9c\\x37\\xa7\\xf0\\x1c\\xa4\\x81\\x47\\x12\\x19\\xef\\xe2\\xa7\\xb9\\x2c\\x4b\\xd2\\xac\\x07\\x74\\x3b\\x49\\x75\\x69\\x64\\x41\\x71\\x4b\\x84\\xd6\\x3c\\x54\\x9d\\x7a\\x6f\\xb6\\x1f\\x16\\xfb\\xcd\\xb7\\x2b\\x91\\x4d\\x78\\x82\\xd0\\x91\\xf9\\x70\\x6d\\xa3\\x8c\\x1a\\x81\\xa1\\xc6\\xa4\\x0f\\xbe\\xc0\\xd8\\xe2\\x38\\xb5\\xd5\\x6d\\x46\\x0e\\x90\\x9f\\x85\\x47\\x9f\\x7a\\xd8\\xb1\\x19\\xf3\\x54\\x55\\xe3\\x40\\x10\\xca\\xa7\\xe5\\xd0\\x1f\\x38\\xe3\\x01\\xad\\x37\\xe8\\x00\\x5f\\x6e\\xd2\\x9e\\x4a\\x10\\x2d\\xb3\\xf6\\x1d\\x84\\x09\\x3f\\x78\\xc4\\x9a\\x96\\x48\\xc9\\x77\\xbf\\x4d\\x5b\\x68\\x9f\\x71\\xf4\\x06\\xf8\\xad\\x7b\\x9a\\xeb\\x1a\\xe2\\x21\\x33\\xa8\\x4c\\xe1\\xb2\\x78\\xb2\\xcd\\xde\\x46\\x59\\x01\\xb2\\x3a\\x17\\x9d\\x07\\x2a\\x80\\x87\\x9d\\x0a\\x24\\xd2\\xaf\\x19\\x7b\\x32\\x2a\\x07\\xbf\\x5d\\x40\\xee\\xab\\x3a\\xf1\\x21\\x17\\xf1\\x30\\x21\\xdf\\xc1\\x68\\x1a\\xba\\x5c\\x08\\x3f\\x25\\x96\\xe3\\x7f\\x11\\x23\\x42\\x2b\\xbd\\xca\\x3b\\x2c\\x32\\xcb\\x59\\x4f\\x56\\xc3\\x25\\xe0\\xc5\\x64\\xa1\\x73\\x32\\x88\\x05\\x34\\x59\\xc6\\x24\\x88\\x92\\x5c\\xd8\\x0e\\x7c\\x94\\x4d\\xb9\\x98\\xc3\\xc7\\xbe\\x54\\x6b\\xf8\\x9d\\x7a\\x51\\x1c\\xcd\\xba\\x4b\\x80\\x9e\\xee\\x0f\\xc2\\x87\\x3d\\xad\\x72\\xb4\\xcf\\x3b\\xa0\\x51\\x28\\x9b\\xb3\\xf4\\xe9\\x92\\x57\\x32\\xe4\\x5a\\xe7\\x74\\x10\\x58\\xc8\\xfd\\x11\\x59\\x9d\\xd8\\x43\\x92\\x7e\\x3d\\x14\\x59\\x8b\\xb8\\x30\\x52\\xd3\\x35\\x69\\xcf\\xb0\\x2a\\xf0\\xc8\\x8f\\xa7\\xae\\xa4\\xbb\\x46\\x84\\x1c\\xd2\\xdd\\xbd\\xf5\\x98\\x8f\\xcf\\x32\\x5f\\xf1\\x04\\xa5\\xdf\\xc4\\xa3\\x0d\\x26\\x9d\\x2a\\x94\\x97\\x30\\xc3\\x61\\x3b\\xdd\\xd3\\x67\\x3b\\x42\\xf6\\x09\\x0e\\x6a\\x60\\xe4\\xa2\\x53\\x06\\x24\\x63\\xa6\\x5d\\x7e\\x7f\\xc0\\x03\\x0b\\xba\\x76\\x9c\\xa3\\x44\\xbf\\xa9\\xac\\x82\\x3f\\x58\\xcb\\x5c\\xee\\x8a\\x5f\\xc0\\xca\\x37\\x22\\x8d\\xe5\\xa4\\xd9\\x3e\\x0e\\xcf\\x7f\\x10\\x82\\x16\\x59\\xa2\\x26\\x1f\\x7e\\xf1\\x59\\x6e\\xda\\x4e\\x41\\x1c\\xf3\\xc9\\x66\\x9d\\x81\\xde\\x74\\x54\\x7c\\xe4\\xbf\\x83\\x3e\\xb4\\x32\\xf3\\x85\\xce\\x90\\x38\\xfe\\x84\\x8a\\x8c\\x96\\xda\\x7f\\x01\\xfd\\x95\\xbe\\xa0\\x6d\\x1d\\x74\\x7c\\x8a\\xe7\\x36\\x49\\x5b\\xba\\x22\\x85\\xbe\\x5c\\x32\\xaf\\xea\\x44\\x95\\x20\\xcf\\xe8\\xe1\\xce\\x25\\xf9\\x07\\x7e\\xd0\\xec\\x0f\\x65\\x98\\xa9\\xb8\\xf7\\x38\\x6f\\x15\\x35\\x81\\x70\\xcc\\xef\\xc3\\xd5\\xff\\xb0\\x09\\x28\\x81\\x54\\xde\\x87\\x7c\\x24\\x09\\xae\\x5f\\xd8\\xfe\\xf0\\x09\\x3f\\x1c\\x36\\xb3\\xa8\\xf5\\x47\\x43\\x2c\\xd0\\xf6\\x2c\\x40\\x33\\x24\\x2a\\xd9\\x92\\x1a\\x8f\\x11\\xc0\\x0f\\x36\\x6d\\xa9\\x39\\x69\\x30\\xa8\\x0c\\x99\\x7d\\xf4\\x29\\xa4\\xf5\\xf4\\xe4\\x5c\\x7a\\x6d\\x7e\\x02\\xaf\\x03\\x31\\x86\\x75\\x7c\\x73\\xcb\\xe6\\x4d\\x2d\\x4e\\x78\\xea\\xaf\\xe2\\x75\\x39\\x52\\x80\\x35\\xf2\\xcf\\xcf\\x8e\\xaf\\x0a\\x42\\xbd\\x25\\xf8\\x8b\\x2f\\xc6\\x9e\\x42\\x66\\x8f\\xae\\x66\\x77\\xc9\\xac\\x90\\x91\\xd9\\xd1\\x5a\\x41\\xf3\\xac\\xe6\\x5d\\x90\\xa0\\x22\\x98\\x73\\xdc\\xf2\\x54\\x25\\x6c\\xca\\x44\\x9e\\xd4\\xc1\\x7d\\x54\\x35\\xba\\xe4\"},\n{{0xbd,0x85,0x23,0xed,0xa8,0x99,0xb9,0x84,0x23,0x0e,0x32,0x88,0x75,0xb9,0x67,0x2e,0xdc,0x9f,0xcd,0x24,0xea,0x5c,0xc1,0x2d,0x7b,0x57,0x2d,0xa4,0xbe,0x01,0xfb,0x7b,},{0x02,0xb7,0x34,0xeb,0xbe,0x88,0xc1,0x3b,0xfa,0x95,0xa5,0xd9,0x64,0xfc,0x7e,0xf9,0xd3,0x95,0xbd,0x63,0x03,0xf0,0x65,0xdc,0x4e,0xe1,0x7b,0x3a,0xc1,0x54,0x8b,0x7b,},{0xfc,0xfc,0xdb,0x08,0x8d,0xcb,0xd0,0xa5,0x1b,0xd3,0x01,0xe3,0xe1,0x56,0x16,0x71,0x93,0x5d,0x8b,0x6f,0x71,0x9c,0x5d,0x92,0x69,0x06,0x40,0xd3,0xc9,0x1e,0x77,0x5b,0xf4,0x05,0x41,0x32,0xef,0xc0,0x5a,0x21,0x22,0xfc,0x20,0x9d,0xb3,0xc3,0x34,0x32,0x33,0xff,0x8a,0xec,0xeb,0xd5,0x2d,0xaa,0x2b,0x3b,0x21,0xee,0xb1,0x5f,0xd1,0x02,},\"\\x16\\xc2\\x16\\xc9\\xbe\\x9f\\x0d\\x4b\\x11\\x54\\x10\\xbd\\xfd\\x15\\x93\\xc8\\xe2\\x62\\x22\\x1a\\xb9\\x7a\\x2a\\x39\\x5a\\x12\\x19\\x8f\\x95\\xc3\\x02\\x05\\xb0\\x89\\x62\\xd4\\x89\\x31\\x18\\xba\\x9f\\xf9\\x9a\\xb1\\xc7\\xa6\\xe1\\xf2\\xf1\\x75\\x19\\x10\\x70\\xac\\x94\\x53\\x27\\xad\\x6c\\x47\\x0b\\xab\\xf7\\x92\\x8b\\x07\\xdd\\x78\\x8c\\x85\\xb6\\x4b\\x71\\x2e\\x0a\\xae\\x6c\\x0e\\xa2\\x02\\x81\\xe4\\x2f\\xd5\\x61\\xe8\\x3e\\x3f\\xba\\xc6\\x7f\\x14\\x00\\x0e\\xe5\\x6d\\x98\\x1d\\x2a\\x2f\\x0b\\x9c\\xa0\\x0a\\x9e\\xa4\\x7c\\xa2\\xf6\\xfc\\x8d\\xca\\x10\\x35\\xfc\\xeb\\x14\\x2c\\x3f\\x26\\xf2\\x0e\\x3c\\x73\\x22\\x07\\xff\\xff\\x11\\xb7\\x96\\x95\\xbd\\xaf\\xa4\\x15\\x21\\x4a\\x44\\x99\\x30\\x23\\x26\\x60\\x5c\\xf0\\xb8\\xc8\\x2f\\x2b\\x11\\x39\\x2e\\xcc\\x90\\xcd\\x74\\xa7\\xb4\\x11\\xb6\\xd9\\x07\\xa3\\xd5\\xc1\\x30\\xc8\\x79\\xb7\\xcf\\x88\\x0f\\x22\\xbb\\xd7\\xf0\\xe9\\x59\\x33\\x71\\x8e\\x96\\xd7\\xd1\\x6c\\xae\\xa9\\xf2\\xc3\\x9e\\x89\\xb1\\x3c\\xd5\\x22\\x66\\x27\\x36\\x04\\xa9\\x6b\\x51\\xd6\\xe3\\x4f\\x70\\x67\\x35\\xdd\\xd9\\xfc\\xa4\\x4d\\x09\\xcd\\x86\\xbb\\x72\\x17\\x60\\x0e\\x0d\\x34\\xd4\\x16\\xac\\x24\\x9f\\x2e\\x41\\xbd\\x0f\\x4a\\xbc\\xbd\\x25\\x80\\xad\\xae\\x21\\xd7\\xeb\\xa5\\xfa\\x44\\xf3\\x9d\\x78\\x0f\\x17\\xeb\\x85\\xcc\\xbe\\xf5\\x8f\\xef\\x90\\x3a\\x28\\x0d\\x95\\xf8\\xf3\\x21\\x07\\x89\\xfa\\x12\\xe1\\x20\\xe2\\x1b\\x6e\\x8c\\xad\\x91\\x78\\x35\\xbb\\xdc\\xc3\\xb0\\x7e\\x84\\x69\\x39\\x54\\xe2\\x3a\\x94\\xf9\\x9f\\x93\\x7d\\xdb\\x0d\\x4a\\x18\\xd4\\x2c\\x3e\\xa8\\xfc\\xa7\\xd1\\xea\\x6e\\xd5\\x3a\\x00\\x24\\x6f\\x99\\xea\\x52\\x0e\\x64\\x05\\xbd\\x2a\\xa5\\x49\\xb0\\x6e\\x7d\\xa7\\x22\\xc1\\xba\\x74\\xaa\\x1c\\x13\\x6e\\x8e\\xa5\\x8b\\xaa\\xf8\\xd3\\x76\\x58\\x69\\x3f\\x3e\\x0b\\x44\\xf6\\x31\\xdd\\x6d\\x08\\xff\\xdf\\x4f\\x09\\x18\\x9d\\x30\\x35\\xa3\\xf0\\x34\\x68\\xe2\\x96\\x96\\xef\\x05\\xe0\\x2c\\xc1\\xaa\\xbf\\xec\\xbd\\xa2\\x30\\x1b\\x54\\x0c\\xb0\\xeb\\x0a\\x75\\xbc\\xce\\x73\\xdb\\x92\\x73\\xa9\\x16\\x1a\\x98\\xad\\x89\\x8f\\xcd\\x65\\x79\\xfb\\x7e\\x4b\\x32\\x79\\x54\\x4f\\x2e\\x0b\\xd7\\x74\\xdd\\x1a\\x81\\x57\\xda\\xa8\\x8a\\x70\\x32\\x11\\x67\\x70\\x3c\\x60\\xa6\\x08\\xa4\\xb5\\x42\\x16\\x59\\x03\\x75\\xe5\\x97\\xfe\\x21\\xae\\xa9\\x7b\\x52\\x18\\x5d\\x0e\\x37\\xa5\\x3b\\x63\\x88\\xa7\\x07\\xa2\\xbc\\x24\\xac\\xf9\\x44\\x25\\xf8\\x4f\\x3d\\x56\\xbc\\x9f\\x7e\\xe7\\x41\\x2a\\x9e\\x18\\x33\\xad\\x55\\xb7\\xea\\xe6\\xda\\x58\\x16\\x98\\x16\\x63\\x83\\xa2\\xeb\\xa8\\xb6\\xf5\\x39\\x20\\xf5\\x17\\xa5\\xc8\\x0b\\xd3\\xe0\\x3f\\xaa\\xd4\\x08\\x7e\\x3e\\xe8\\xfe\\xc9\\xa7\\x9a\\x01\\xc7\\x79\\x51\\x21\\x33\\xd7\\xb6\\xe5\\xf1\\xde\\xc7\\x66\\x30\\x0d\\xc4\\x05\\xcc\\x21\\xa8\\xc5\\x83\\xfb\\x73\\xbc\\x90\\xcf\\x24\\x38\\x5b\\x08\\x60\\x49\\xd3\\xbf\\x20\\xc3\\x00\\x98\\x3c\\x0b\\x35\\x15\\x38\\xdc\\xcb\\x22\\x7a\\x14\\xfa\\xfd\\x23\\xac\\x4b\\x26\\xbe\\x81\\xa2\\xb1\\x20\\xcf\\x21\\x6f\\xc5\\x83\\x54\\xf9\\xdc\\xbf\\x05\\xf6\\x63\\x39\\xad\\x6d\\xdc\\x2c\\xac\\x14\\x67\\x7b\\x90\\xe2\\x47\\xeb\\xb6\\xc5\\xc2\\x29\\x00\\x7d\\xc6\\x0f\\x37\\x4a\\x06\\xd4\\x04\\xeb\\x23\\xeb\\x1e\\xc4\\x99\\x07\\xc6\\xe8\\x81\\x62\\x9e\\x18\\x67\\x26\\x8c\\xa6\\xff\\xfa\\x59\\xaa\\x3c\\xa8\\xf6\\xc2\\x95\\x16\\x2b\\x95\\x36\\xc2\\xbe\\x22\\xbb\\xe3\\xb7\\x23\\x80\\xef\\x11\\xb6\\x1b\\x35\\x7a\\x62\\x53\\x10\\x0e\\x30\\xa5\\x86\\x81\\x8b\\xa0\\x03\\xfa\\x3f\\xfd\\x1f\\xc9\\x19\\x88\\x1c\\x05\\x02\\x2f\\x94\\x84\\x85\\x98\\xf2\\x17\\xfe\\xa2\\x22\\x50\\x72\\x20\\xd1\\x08\\xa2\\x8f\\xc7\\xbc\\x39\\xa8\\xa1\\x1c\"},\n{{0x33,0xa8,0x5a,0xe1,0x50,0xbb,0xf5,0x52,0xf4,0x16,0x63,0xb2,0x15,0x21,0xc2,0x96,0xd2,0x46,0xdd,0x6c,0xf8,0x19,0x5d,0xf8,0x51,0xc6,0x95,0xbd,0x15,0xf4,0xa5,0x02,},{0xc8,0xc9,0xc4,0x25,0x21,0x00,0x8d,0x5e,0xff,0xf5,0x76,0xc7,0xe4,0xa5,0x60,0x83,0xce,0xd9,0xa9,0x28,0xda,0x6f,0xd5,0xcf,0x93,0xfd,0xa5,0x72,0xa5,0xa2,0xd0,0xc0,},{0xbb,0xe4,0xcd,0x63,0x67,0x6e,0x26,0xd6,0x75,0xa1,0x91,0x15,0x1d,0x30,0xdb,0x72,0xb5,0xb8,0x4d,0x46,0x1e,0xec,0x65,0x64,0xaf,0x86,0x7a,0xb4,0x1b,0xae,0x99,0x31,0x14,0x78,0x85,0x51,0x9e,0xc9,0xd7,0xe6,0xc8,0x18,0x74,0x3c,0x8e,0xf6,0xd5,0x16,0x7b,0x35,0xb4,0x21,0x36,0x3c,0x09,0xb3,0x57,0x36,0x7f,0xe8,0xde,0x44,0x3a,0x06,},\"\\x93\\x7e\\x05\\xf2\\xf1\\xfd\\xbd\\x41\\x73\\x15\\x53\\xe7\\x7c\\xf1\\x81\\xb5\\x07\\x97\\x58\\x94\\x0a\\xee\\x8e\\x92\\x62\\x3f\\xb1\\xd5\\xf0\\x71\\x28\\xb7\\xd7\\xf1\\x7e\\x48\\x42\\x70\\x7a\\x56\\x2c\\x45\\xba\\x69\\x26\\x4c\\x0f\\x73\\x0a\\x82\\x1c\\x7d\\xb6\\xbf\\x82\\x99\\x0d\\xc6\\x51\\x26\\x9b\\x29\\x6c\\x33\\x51\\x79\\x11\\x30\\x53\\xd6\\xf8\\x5b\\xb0\\x96\\xb2\\x91\\x11\\x65\\xfa\\x39\\x00\\xcb\\x10\\x24\\x16\\x48\\x7b\\xa8\\x07\\x86\\x79\\xc6\\xb3\\x36\\xdf\\xf3\\x87\\x63\\xc0\\x8d\\xcd\\x20\\xfa\\x66\\xdd\\xa4\\x5c\\x57\\x5d\\xf1\\x50\\xd8\\x51\\x16\\x5a\\x48\\x04\\x97\\x38\\x30\\xf4\\x36\\xdf\\x60\\xb8\\x13\\x19\\xf9\\xcf\\xb5\\x64\\xc0\\x65\\x28\\x96\\xed\\x5f\\x18\\x49\\xcb\\x33\\x54\\xf5\\x0f\\x00\\x12\\xf2\\x86\\xe8\\xa3\\x0c\\x21\\x35\\x28\\x69\\x34\\x74\\x00\\x4e\\x85\\x04\\x01\\x2b\\x94\\x55\\x60\\xc0\\x74\\xa6\\xa1\\x63\\x43\\x2c\\xf4\\xac\\x4b\\xa7\\x17\\x5c\\xf2\\x60\\x05\\xdb\\x71\\x99\\xee\\x96\\xd8\\x93\\xcd\\x1a\\xad\\x3f\\xdf\\x5d\\x57\\x46\\x0e\\xf0\\x2d\\xda\\x6d\\x3a\\x14\\x08\\x25\\x19\\x6f\\x3f\\x8e\\x2f\\x37\\xda\\x36\\xb6\\xfd\\xad\\x18\\x4f\\x27\\x40\\xf1\\x16\\xde\\x75\\x8a\\x92\\x91\\x70\\x30\\xc5\\xfb\\x80\\xf0\\x26\\x24\\x96\\xd2\\xdf\\x93\\xc7\\xe2\\x76\\xf2\\x5d\\xa7\\xdb\\xed\\x8e\\xb8\\xdd\\x4c\\x56\\x3a\\xba\\x55\\xb8\\x2a\\xf6\\xba\\x3a\\x70\\xca\\x5f\\x85\\x8b\\x44\\xa0\\x33\\xcf\\xb7\\x95\\x60\\x4d\\xde\\xe7\\x46\\xe7\\xc8\\xae\\x79\\xd2\\x72\\xfb\\x9a\\x23\\x41\\xa2\\xa2\\x02\\xdf\\x5e\\xac\\x08\\xde\\x75\\xad\\x80\\xc6\\x58\\x0d\\x92\\xb1\\x69\\xf2\\xe1\\x31\\x88\\x57\\xb1\\xb1\\x42\\x1c\\x30\\xf3\\xdd\\x46\\x10\\x93\\xde\\x2d\\x34\\x5e\\xde\\x74\\x04\\xb7\\x2a\\x45\\x0d\\xe0\\x7b\\x16\\xee\\xe6\\x8c\\xe6\\x28\\x87\\xb6\\xea\\xa4\\x36\\xee\\xe6\\x84\\xbe\\x75\\xce\\x0e\\x1f\\x96\\x26\\x3e\\x8d\\x87\\x36\\xf9\\xba\\x00\\x0d\\x88\\xe9\\xe5\\x86\\x0f\\x32\\x8a\\xe1\\xe2\\xdc\\x73\\x09\\x9d\\x32\\xfc\\xeb\\x1b\\xd2\\xc0\\x12\\x36\\x98\\xa4\\x9b\\xea\\xd1\\x90\\xa0\\x0e\\xc9\\xa6\\xf8\\x71\\x33\\xed\\xdd\\x45\\x31\\x6f\\x65\\xeb\\x0d\\x32\\x9b\\x07\\xb9\\xa6\\x6b\\xb9\\xfe\\x42\\x58\\x8b\\xf7\\xb8\\xd0\\x6e\\xfe\\xc1\\x98\\x6b\\x82\\xa0\\x81\\xed\\x3f\\x68\\x02\\xe9\\xbe\\x73\\x46\\x47\\x84\\x55\\x9a\\x4f\\x2c\\x09\\x7b\\xa1\\x4b\\x0b\\xfd\\x5d\\x7e\\x0a\\xff\\x65\\xcb\\x69\\xab\\xd0\\x3f\\x86\\x16\\xcd\\x7e\\xdf\\x7e\\xc3\\x68\\x21\\x9e\\xdc\\xf8\\x93\\xe9\\xee\\x71\\xda\\xd9\\xf1\\x8d\\x79\\xe5\\x68\\x26\\x5d\\xdc\\x67\\x16\\x22\\x32\\x13\\x23\\x5b\\xb9\\x28\\xe9\\x08\\xde\\xa8\\x27\\x78\\x4c\\xd1\\xaf\\x39\\x6d\\x59\\x0c\\x81\\xf4\\xea\\xcd\\xfc\\xf8\\x9c\\x5c\\xac\\x96\\xfa\\x05\\x00\\x64\\xa2\\x28\\x41\\xea\\x71\\x5f\\x8c\\x89\\xd6\\xd5\\xaf\\xbf\\x59\\x7a\\x4d\\x00\\x5d\\xbc\\x6b\\x13\\x85\\x6d\\x33\\x5b\\x42\\xa9\\xa8\\x2e\\xdc\\xb9\\x49\\x83\\x5c\\xca\\x20\\xb0\\xa2\\x3d\\xe5\\x1c\\xc3\\xae\\xc3\\x55\\x66\\xef\\xf0\\xc5\\xae\\x1a\\xb3\\x75\\x13\\x20\\xd2\\xc3\\x10\\x49\\x52\\x38\\xed\\xa3\\x83\\xc3\\x8a\\x41\\x63\\x15\\x2b\\x88\\x15\\x69\\x0b\\x8f\\xf0\\x15\\x03\\x5d\\x1d\\x00\\xea\\x4a\\x0d\\x6c\\xaf\\x32\\x4b\\xb7\\x1a\\x66\\x4a\\x1b\\xed\\x31\\x48\\x07\\x84\\xa6\\x8f\\x43\\x8c\\xaa\\x35\\x9e\\x8d\\x26\\x73\\xc8\\x57\\xd4\\xb8\\xc0\\xb6\\xc6\\x95\\x84\\x7b\\x86\\x80\\x0e\\xa3\\xd7\\x34\\xb5\\xec\\xc4\\xd5\\x2b\\x50\\x7a\\xc6\\x9b\\x3a\\x67\\x78\\x91\\x60\\x16\\xeb\\xc2\\x31\\x5f\\x44\\xc9\\x0b\\xf0\\xc3\\xe7\\xda\\xe0\\x1d\\x49\\xcb\\xc3\\x03\\x40\\x2b\\xbc\\x63\\x4a\\xe1\\x19\\x1f\\x3f\\x6f\\xd6\\x3d\\x30\\x3b\\x0c\\x0b\\xe0\\x33\\xa4\\x7b\\x90\\xf8\\xd3\\xa7\\x7f\\x0a\\x44\"},\n{{0xba,0x9e,0x68,0x62,0x04,0x97,0x5c,0x3b,0xde,0xd4,0xc1,0xe9,0xf7,0x4c,0x7e,0x4c,0x7a,0x7e,0x3c,0x99,0x81,0xd0,0x1b,0xfc,0xa0,0xad,0x01,0x15,0xc3,0xf0,0xf5,0xc3,},{0x49,0x90,0xfc,0xe6,0x95,0x2e,0x8b,0x7d,0x0a,0xfc,0xf4,0xbf,0x9d,0xba,0x9b,0xce,0x1b,0xc4,0x81,0x5e,0x37,0x51,0x1d,0xa7,0xc2,0xad,0x48,0x92,0x58,0x1d,0xe0,0x3a,},{0xc7,0xd2,0x3a,0x58,0xe2,0xfb,0x2a,0x8d,0x4b,0x8e,0xd1,0xe9,0xea,0xe9,0x1e,0x11,0x29,0xc2,0xaf,0x8b,0xd0,0x5f,0x0b,0xd5,0x72,0xab,0xeb,0xbe,0x0f,0x30,0x82,0x59,0x25,0xf0,0xdf,0x71,0xcf,0xb7,0x21,0x8c,0x68,0x6e,0x55,0x48,0xd9,0x42,0x77,0x10,0xa6,0x90,0x36,0x6b,0xa8,0x55,0x41,0xc7,0x91,0x01,0xa5,0x8a,0x10,0xe8,0xaf,0x0a,},\"\\x46\\xbb\\x48\\x95\\x2a\\xe5\\x8f\\x2b\\xf5\\x8f\\x5b\\xe8\\xdf\\x4f\\x31\\x6b\\x50\\xf3\\x63\\xec\\x84\\xee\\xd8\\xf8\\x2f\\xf4\\xc0\\x4b\\x06\\x92\\xd0\\x3a\\xef\\x26\\xe8\\xe1\\xe6\\xc9\\x54\\x9a\\x22\\x47\\xd5\\x40\\xa6\\xe2\\x2f\\xeb\\x11\\xe5\\x7f\\x4b\\x80\\x8a\\x20\\x97\\xe8\\xa7\\xb6\\xb3\\xb7\\xaf\\x37\\x69\\xe6\\xd8\\x1d\\x64\\x88\\x6e\\x69\\x62\\x37\\x2f\\x4f\\x39\\xe4\\x9c\\xd4\\x6c\\x1b\\x5f\\x73\\x5f\\x38\\x0f\\x7c\\x27\\x7d\\x09\\x97\\x76\\xed\\x1a\\xea\\xa5\\x7a\\x35\\x9c\\x0a\\xa8\\xc7\\x2f\\x40\\xeb\\x91\\xa1\\xbf\\x07\\xea\\x15\\x7f\\x5d\\xdb\\x30\\x40\\x9d\\x6e\\x3a\\xf9\\x89\\x90\\xce\\x7f\\x30\\xaf\\xfd\\xac\\x5e\\x22\\x01\\x06\\x46\\xdc\\xa9\\x6a\\x54\\x00\\x60\\xfc\\x90\\x8a\\x31\\x25\\xb0\\x00\\xad\\x1e\\xd3\\xa0\\xf2\\x55\\xcd\\x34\\xf1\\x5d\\x7d\\xd1\\xfd\\x68\\x1c\\x3c\\x35\\xa1\\xcd\\x65\\x20\\x56\\xec\\xc5\\x26\\x4d\\x39\\xaa\\xf7\\x2a\\x9b\\xb8\\x3a\\x55\\x1c\\xc9\\x34\\x88\\x7a\\xe1\\x07\\xaf\\xdf\\xef\\x06\\x32\\x17\\x27\\x0d\\x95\\x96\\x89\\x14\\x18\\xbd\\x46\\x1b\\xba\\x63\\xde\\x65\\xbe\\x06\\x7b\\x1b\\x78\\x64\\xfe\\x46\\x48\\x4c\\x7c\\x9e\\x96\\x34\\x9a\\x7c\\x03\\xa8\\x0f\\xa0\\x55\\x05\\x0a\\xa1\\x8a\\xce\\x2a\\x44\\xb4\\xa0\\x3c\\x94\\x78\\x24\\x17\\x2b\\x30\\xe2\\x10\\x11\\x15\\x94\\x43\\xca\\x3c\\xef\\xaf\\x69\\x6a\\x7a\\xa8\\xf9\\x80\\x11\\x26\\x0c\\x94\\x36\\xbf\\x48\\x99\\x1f\\x41\\xd4\\xd5\\x07\\xb9\\x6c\\xe7\\x32\\x3e\\x53\\x1a\\xdc\\xf6\\x63\\x47\\xc5\\x5c\\x88\\x55\\x67\\x3a\\x9f\\x2e\\xc8\\x9b\\x5c\\x80\\x24\\x46\\x06\\x17\\xec\\x72\\x71\\x77\\x3b\\x36\\xd6\\x4f\\xc1\\x4e\\xb5\\xd8\\x26\\x52\\xc5\\x3a\\x30\\x31\\x45\\x72\\x27\\x09\\x3d\\x11\\x8f\\xd8\\xeb\\x93\\x84\\xe8\\x02\\x29\\x04\\x1a\\x96\\xa6\\x49\\x34\\x50\\xf9\\x7e\\x67\\x36\\x26\\x3a\\xbf\\x1e\\xcd\\x9e\\x9f\\xb9\\xa4\\xf0\\xf6\\xd6\\x67\\xfa\\x82\\x41\\x51\\x48\\x5e\\xdc\\x37\\xb3\\x4a\\xcf\\x3d\\x8c\\x35\\xf9\\xc1\\xbe\\x48\\xb5\\xe9\\x6a\\x12\\xaf\\x8e\\x2d\\x35\\xc2\\x3a\\x03\\x58\\x0f\\x21\\x1d\\xa6\\x31\\x6b\\x34\\xc5\\x6b\\xee\\x87\\x2d\\x47\\x64\\x1b\\xca\\x77\\xda\\x64\\x0f\\xdb\\xba\\xd5\\xa9\\xad\\x8a\\xb9\\xdc\\x79\\x57\\x91\\x3d\\xa7\\x34\\xad\\x37\\x49\\x2b\\xa4\\xde\\x8c\\xf1\\x36\\xcc\\xcd\\xeb\\x6b\\xa3\\xf1\\xbd\\x3f\\x00\\x3b\\xe7\\x26\\x3c\\x4f\\x2a\\x40\\xc3\\x3f\\x24\\xca\\x33\\x39\\x59\\x6e\\x6c\\x34\\x28\\x33\\x81\\x00\\xeb\\xcc\\x07\\x22\\xd4\\xf5\\x0d\\x30\\xb3\\x3b\\x91\\x2d\\x4e\\x7c\\x1a\\x9f\\xe6\\x5f\\x66\\x58\\xa6\\xf2\\x39\\x14\\x0a\\x62\\xc3\\x26\\x1e\\x10\\x39\\x2e\\xd1\\x93\\x0a\\xa9\\x17\\x65\\x2d\\x3b\\xd2\\xbe\\x4e\\x8a\\x08\\xab\\x97\\xe1\\x45\\xb9\\x20\\xab\\xb3\\x1e\\xe4\\xbc\\xd5\\xa0\\xd7\\x1f\\x63\\x81\\x80\\xf6\\x1c\\x24\\x58\\x23\\xa3\\x99\\xa7\\x34\\xa4\\xdc\\xde\\x09\\x97\\x88\\x02\\x45\\xed\\x71\\xeb\\x9b\\xc6\\x5e\\x3c\\x6f\\xc9\\x5a\\xb9\\x20\\xb8\\x02\\x4c\\x17\\xd4\\x4c\\xed\\x00\\x37\\xd0\\x4a\\x13\\x3c\\x26\\x41\\x78\\x2f\\x1d\\x62\\x2d\\xf4\\x52\\x69\\xb4\\x91\\xd3\\xfa\\x2a\\x12\\x27\\x57\\x9e\\xaa\\x38\\x6d\\xe3\\xe7\\xde\\x7b\\xc4\\x55\\xc6\\xa1\\x54\\xee\\xe5\\x72\\x7f\\xff\\x04\\x37\\xa2\\x00\\x76\\xc5\\xc3\\xb0\\x57\\x7c\\xac\\x5b\\x4b\\x69\\x34\\xe2\\x69\\x38\\x02\\x22\\x46\\x1a\\x60\\xf9\\x54\\xe4\\x89\\x79\\xc0\\x67\\x12\\x17\\xf1\\x6f\\x70\\x27\\x98\\x30\\x34\\x12\\x10\\x93\\x18\\x6c\\x78\\x70\\x5f\\xc2\\x7d\\xc9\\x2e\\x2e\\xda\\x41\\x16\\xa6\\xbf\\x7d\\x23\\xe0\\x54\\x8d\\x62\\xb6\\x7b\\x25\\xc4\\x1e\\xd0\\x61\\x92\\xbc\\x26\\xef\\x13\\x97\\xbf\\x16\\x01\\xf3\\xa6\\xe2\\xa0\\xe7\\xf6\\x61\\xfb\\x05\\x05\\xee\\x38\\x2f\\x27\\xae\\xc2\\x80\\x5a\\x3e\\x21\\x17\"},\n{{0x59,0x07,0xa8,0xc0,0x84,0x04,0x38,0x75,0x23,0x8e,0xdb,0xdc,0xb7,0x83,0x2f,0xbb,0xa4,0xc0,0x5e,0xa3,0xc5,0xf8,0x8a,0x96,0xf1,0xfb,0xf9,0x50,0x40,0x1e,0xc1,0x64,},{0xe2,0xf4,0x95,0x09,0xd1,0x00,0x7f,0x61,0x8e,0xfe,0x4f,0x1f,0xd6,0x7e,0xaa,0x6e,0x2a,0xb1,0x8a,0xfb,0x2d,0xec,0xce,0xd5,0xa0,0xb2,0xba,0x83,0x63,0x78,0x92,0x60,},{0x8c,0x49,0x12,0xc0,0xf8,0x85,0xd7,0x6c,0x91,0x40,0x59,0x50,0x53,0x73,0xa6,0x4b,0xdd,0xd6,0x7d,0xd4,0x68,0x36,0x9a,0xb9,0x18,0xf2,0x3e,0xa2,0x8e,0x04,0xc1,0x91,0x77,0xa8,0xd4,0x61,0x14,0x4f,0x0a,0x8b,0x51,0xd2,0x15,0x17,0x6c,0xb0,0x8b,0xd6,0x53,0x01,0xc3,0xc4,0x62,0x37,0xb6,0x1b,0xb1,0x49,0x8c,0xa7,0x9d,0x4b,0xe7,0x0e,},\"\\x43\\x3b\\x24\\x78\\xe1\\x8f\\xad\\x5c\\xb8\\x10\\x67\\x06\\x1d\\x22\\x55\\x28\\x22\\x97\\x78\\x30\\x78\\x85\\x47\\x54\\x60\\xfb\\xe3\\x13\\x7a\\x5b\\x44\\x02\\x48\\x94\\xdd\\xbe\\x56\\xfa\\x6e\\xd0\\x21\\x49\\x6f\\x07\\x86\\xe4\\x2b\\xc6\\xc2\\xd2\\x79\\x7e\\xa0\\xa6\\xbf\\x35\\x5e\\x88\\x11\\x5f\\xaa\\x55\\xcd\\x92\\xed\\x42\\x13\\x3d\\x9d\\xcd\\xa6\\xb9\\xeb\\xf6\\x3c\\xe4\\xa9\\x94\\xd1\\xa8\\x2d\\x2a\\x49\\x26\\x75\\x58\\xbe\\x54\\x18\\x2a\\x6f\\x85\\x11\\x2b\\xd1\\x2b\\x24\\x7a\\xda\\xcf\\x14\\x05\\xfc\\x7e\\xc7\\xa0\\x15\\xd4\\x3a\\xb4\\x0b\\x82\\xc6\\x77\\xf7\\xf8\\x5a\\x0e\\x48\\x19\\x7c\\x5b\\x96\\x57\\x61\\x99\\xf4\\xc3\\x34\\x3f\\xf7\\x65\\x4d\\x52\\x3a\\x30\\xc4\\x3a\\x05\\x4c\\x3e\\x46\\x44\\x51\\x27\\x80\\x34\\xb7\\xf1\\x96\\xc3\\x66\\x76\\x8c\\x62\\x8a\\xf9\\x4f\\xc0\\xcc\\xfc\\x9a\\x29\\x55\\xf9\\xd3\\x23\\x38\\xb9\\x44\\x78\\x0f\\x8e\\x32\\x70\\x85\\xb1\\x03\\x78\\x18\\x68\\xe4\\xfb\\x79\\xd5\\x61\\x22\\xd7\\xf3\\xf5\\xab\\x30\\x9e\\x5d\\x63\\x4a\\xdd\\x15\\xda\\x38\\x2c\\x0d\\x23\\x58\\xe6\\x47\\x18\\x2b\\xe4\\xde\\x6e\\x9a\\x9e\\x43\\xe6\\xa3\\xa3\\xb8\\x21\\x5b\\x20\\x4d\\x95\\x07\\x61\\x0d\\x46\\x16\\x21\\x00\\x0f\\xb1\\x89\\x37\\x07\\xaf\\x7d\\x25\\x95\\xbf\\xef\\x8a\\x8c\\x5c\\x5c\\xd0\\x8f\\x30\\x9a\\x5f\\xb5\\x5e\\x45\\x51\\x9a\\xea\\x9b\\x84\\x74\\x8c\\xa5\\xc6\\x72\\xbf\\xec\\xd3\\x0d\\x25\\x65\\x12\\x34\\xa3\\xcc\\x31\\x9b\\x43\\xdf\\xce\\xfc\\x1a\\x07\\xb5\\x5b\\x4a\\xca\\x71\\x4c\\x2e\\x7e\\xf9\\x63\\x8f\\xe7\\x88\\x4a\\x77\\xb2\\x22\\x53\\xa0\\x1a\\x22\\x29\\x50\\x0e\\x9c\\xe1\\x0f\\xda\\x73\\xa8\\x43\\xc1\\x9c\\xc0\\x96\\x26\\xd2\\x45\\x6c\\x22\\xa9\\xc9\\x01\\x88\\x1d\\x52\\x1f\\x4b\\x15\\xd2\\xf6\\x13\\xcb\\x46\\x9d\\x30\\x4d\\x57\\x92\\x23\\xbc\\x5f\\xf7\\x38\\x04\\xdf\\x63\\x71\\x51\\x7e\\xba\\xa5\\xb6\\x77\\xea\\x91\\x0f\\xf1\\xa0\\x2a\\x26\\xfa\\xfe\\x48\\xfe\\xf4\\x69\\xed\\x79\\x9b\\xed\\x6d\\x56\\xce\\x96\\x18\\x34\\xa2\\xed\\xc2\\xe2\\x3c\\x0d\\x94\\x26\\xec\\xcd\\xcc\\x93\\x4f\\x4c\\x22\\x0e\\x37\\x81\\x5f\\x7c\\x33\\x4b\\x73\\x83\\x60\\x7d\\x43\\x05\\x20\\x94\\x6a\\x88\\x1a\\x08\\x32\\x5b\\x41\\x64\\x97\\x9d\\x5e\\x82\\xcd\\x81\\x34\\xd7\\x8c\\xec\\x48\\x61\\xc0\\x19\\xf6\\xde\\x30\\x1c\\x1b\\x9a\\xec\\x52\\xbb\\x98\\x20\\x33\\xfb\\x79\\xb2\\xe9\\x73\\x1b\\xab\\x29\\x68\\xbc\\x3f\\x93\\xfa\\x56\\x04\\xb8\\x93\\xc6\\x02\\x8c\\x20\\x4c\\x36\\xbb\\x8c\\x6b\\x07\\x4b\\xe2\\x8c\\x96\\x4d\\x28\\x49\\xb5\\xbb\\x19\\xd7\\xe0\\xba\\x24\\xe2\\x2a\\x20\\x4d\\x4f\\xda\\x83\\xb1\\x01\\x31\\xd3\\x83\\xf1\\x0b\\x13\\x6b\\xd0\\xdb\\xa3\\x9e\\xc2\\x6a\\xf3\\x0e\\x3f\\xfb\\x4d\\xbc\\x0c\\x92\\x1f\\x0c\\xc9\\x91\\x07\\x15\\xd5\\x1c\\x81\\xfe\\x4c\\x62\\x95\\x0e\\x85\\x55\\x49\\xa1\\x7c\\xd7\\x3a\\x09\\xac\\x91\\xe0\\x6d\\x46\\x15\\x18\\x37\\x6d\\x0f\\xcf\\xa1\\x23\\xdf\\x0a\\x83\\x71\\x03\\x45\\x8d\\x9c\\xe2\\x21\\x80\\x8d\\x1f\\x9e\\xf2\\xed\\xc5\\xcd\\x2e\\x68\\x23\\x14\\x5b\\x52\\x48\\x94\\xea\\x48\\x52\\x6d\\x98\\x5e\\xef\\xd3\\xf6\\x06\\x79\\x39\\x95\\x48\\xe1\\xed\\xea\\xdb\\x53\\x95\\xb4\\x3d\\x87\\x04\\x4b\\x2b\\xfe\\x7c\\x60\\x37\\x02\\x9b\\x34\\x6a\\x40\\x22\\x27\\xea\\xb8\\x1f\\x33\\x3e\\x10\\xe7\\x7f\\x1d\\xbc\\x06\\xa2\\x11\\xd4\\x3b\\x82\\x55\\x86\\x76\\xc2\\xdc\\xff\\x90\\x82\\xb1\\xdd\\x53\\x36\\x8d\\xf0\\x02\\xde\\x13\\x29\\xaf\\x30\\x00\\xb1\\x71\\xa6\\x91\\x43\\x89\\xbb\\x80\\xec\\x0c\\x9f\\x3e\\x41\\x2a\\x44\\x1b\\x80\\x0a\\xfc\\xeb\\x04\\x86\\x70\\x9a\\xda\\xc6\\x6c\\xaf\\xee\\xf2\\x48\\x83\\x93\\x31\\xf5\\xd8\\x92\\x19\\x7e\\x25\\x42\\x0f\\x1e\\x37\\xd7\\xc0\\x24\\x7f\\x66\\x9f\\x5f\\xcb\\xf0\"},\n{{0x60,0x20,0xae,0x27,0x3e,0x0e,0x05,0x37,0xba,0xc8,0x81,0xd7,0x54,0x9d,0x92,0x3e,0xb1,0xcc,0x20,0x0d,0x49,0xca,0x65,0xd4,0xbe,0x63,0x5e,0x39,0x17,0x3d,0xf9,0xda,},{0xda,0xaf,0x0e,0x69,0x9a,0x12,0xa9,0x2c,0x16,0xe0,0xde,0xd3,0xeb,0x34,0x50,0xa3,0x63,0x11,0x82,0x45,0x77,0xe3,0x61,0xf0,0x56,0x96,0x60,0x33,0x00,0x16,0x62,0x97,},{0xb1,0xba,0x88,0xfe,0xd7,0xe5,0xf4,0xb7,0x57,0xf3,0xfa,0x4d,0x1e,0xd9,0xb1,0x9e,0x49,0x8e,0x5d,0x2f,0x5e,0x6c,0xd4,0x6e,0x42,0x6f,0xe8,0xf0,0x39,0x88,0x2f,0x1b,0xe7,0x7a,0xc9,0xe5,0xa9,0x26,0x5c,0xbf,0x7e,0x3c,0xd2,0xa9,0xe9,0x92,0x6c,0x18,0x19,0x91,0x43,0x79,0x8d,0xa5,0xbe,0x47,0xa4,0x08,0x64,0x40,0x49,0x6b,0xa0,0x0f,},\"\\x6a\\x80\\x11\\xde\\x09\\xaa\\xc0\\x0d\\xb1\\x6f\\xf7\\xe5\\x5c\\x2d\\xe6\\x7d\\x8c\\x98\\x83\\xfc\\xb2\\x04\\x0d\\xed\\xbc\\x1e\\x32\\x1c\\xab\\xa7\\xbb\\x03\\x69\\x71\\x53\\x01\\x76\\xd1\\xdb\\xba\\xa9\\x27\\x52\\x0b\\xdf\\xcc\\xbe\\xd8\\x84\\x01\\x26\\x04\\x3e\\xdc\\x44\\xcb\\xb7\\xfa\\x35\\x28\\x68\\x0e\\x5f\\x1b\\x56\\x64\\x95\\x1d\\xc9\\x01\\x09\\xae\\xa4\\xb9\\xc3\\x36\\xca\\x04\\x3d\\x82\\x21\\xa4\\xc8\\xd2\\x01\\x16\\x56\\xbf\\x94\\x4e\\xfd\\x36\\xba\\x0a\\x10\\xa4\\xb3\\x89\\x19\\x60\\x55\\x75\\x0b\\x0e\\x38\\x8f\\xb5\\x28\\x70\\xbb\\xec\\x8c\\x55\\x19\\x81\\x31\\x44\\x39\\x45\\xc0\\x9f\\x3a\\xac\\xe3\\xe6\\x91\\x50\\x14\\x37\\x40\\x73\\x26\\x6f\\x34\\x88\\x74\\x42\\xd7\\x4f\\x46\\x8f\\x8d\\x70\\x78\\xbb\\xa0\\xbd\\x81\\x4c\\xd6\\xdd\\x42\\x3c\\x97\\xb5\\x69\\x05\\x58\\x7b\\x15\\x2d\\x1f\\xcf\\xba\\x0e\\xb9\\xfd\\xe2\\x11\\x26\\x91\\xda\\xfa\\xf4\\xf9\\x21\\x56\\x2f\\x24\\x1b\\x62\\x84\\x10\\x01\\x83\\x4f\\x6c\\xe3\\x66\\x85\\xf8\\x2a\\x8f\\xaa\\x3b\\x7a\\xfa\\xd7\\x3a\\x5e\\x59\\xbf\\x5f\\x9e\\x71\\x3e\\x59\\x16\\x3f\\x31\\xdb\\xe6\\x96\\x11\\x8a\\xf3\\x35\\x06\\xd2\\xff\\xea\\x3d\\x9c\\x15\\x56\\xfb\\x15\\x2f\\xd2\\xb3\\x21\\xc3\\x17\\x57\\xd0\\xc3\\xc0\\xf6\\x0e\\xe1\\x13\\xed\\xac\\x02\\xd6\\x7e\\xfb\\xb3\\x03\\xdc\\xe6\\xfa\\x88\\xf7\\xb9\\x74\\x6c\\xa1\\x10\\xe6\\xa0\\xcd\\x09\\x9c\\x08\\x31\\xf5\\x3c\\x55\\xc2\\x8b\\x6c\\x82\\xaf\\x44\\x64\\x56\\xb8\\x42\\xb2\\xc9\\x50\\xa5\\x53\\xee\\x2c\\x76\\x5e\\x97\\x29\\xe6\\xb0\\xc5\\x46\\xbf\\xc2\\x6b\\xd6\\xd4\\x2d\\x06\\xb2\\xed\\x5d\\x4c\\x8c\\xbb\\xc7\\x5f\\x2a\\x3a\\xd8\\x12\\x93\\x95\\x79\\x3d\\x97\\x9c\\x03\\x1f\\xce\\x7e\\x20\\xb3\\x8b\\xd8\\x9c\\x9b\\x62\\x47\\x48\\xb2\\x01\\x34\\x23\\xce\\xba\\xda\\x02\\xcd\\xe2\\x05\\x2d\\xa5\\x66\\x4c\\x6c\\x64\\x26\\xcb\\xfc\\x88\\xf8\\x4f\\xf6\\x02\\xe2\\xe2\\x0d\\xf9\\x67\\x8f\\xbb\\xa5\\x77\\xa4\\xc1\\x34\\x51\\x7e\\xe0\\x50\\x68\\x11\\x51\\x58\\x0f\\x7c\\x5c\\x97\\x87\\xb9\\x6e\\x55\\xc4\\x07\\x5a\\x26\\xf4\\xf8\\xcc\\xff\\xbb\\xb6\\xea\\x18\\xde\\x1b\\x2c\\xc8\\xc4\\x49\\x6b\\x16\\x04\\x27\\x70\\xb7\\xec\\x6e\\xb5\\x42\\x9e\\x7a\\xc1\\x89\\x12\\x32\\xaa\\x4e\\x47\\x46\\x7f\\x4e\\x9a\\x98\\x5d\\x80\\x54\\x7e\\xcc\\x4c\\x6f\\xd9\\xf5\\x97\\x63\\xed\\xe9\\x16\\x71\\xf2\\xaa\\x57\\x36\\xa5\\xd1\\x48\\xe3\\xa8\\xff\\xc8\\x8e\\x61\\x25\\x3a\\x85\\xb0\\x95\\x36\\x54\\x95\\x8e\\xb2\\xd6\\x94\\x01\\xcb\\xea\\xe7\\x75\\xf8\\xcb\\x8c\\x3c\\xa4\\x2d\\x21\\x69\\x3e\\xbe\\x29\\x88\\x38\\xdf\\x94\\xc1\\xd7\\x7b\\x12\\x6a\\x12\\x05\\xcc\\x47\\xd5\\x0d\\x53\\x67\\xb6\\xf2\\x76\\xec\\x8d\\xb6\\xb9\\x53\\x24\\xa3\\x1e\\x8f\\xd2\\xed\\x2e\\x43\\x42\\x0c\\x4a\\xd0\\x2e\\xa2\\x77\\xdd\\x94\\x8a\\x55\\x19\\x3d\\x0f\\x0b\\x4d\\x1c\\xf2\\x83\\x86\\xc7\\x25\\x97\\x5c\\xe5\\xc1\\x2d\\x2a\\x6f\\x35\\x67\\x3c\\xc2\\x2a\\x06\\x94\\xcc\\xa4\\xda\\xf6\\xaf\\xbf\\xd3\\x26\\xd8\\x8c\\x18\\x50\\xf8\\x34\\xc4\\x2f\\xf0\\xe2\\x92\\xba\\x4f\\x13\\xe5\\xef\\x07\\x74\\xa5\\x96\\xd3\\x39\\x04\\xc0\\x26\\x2d\\x31\\xdf\\x2c\\x58\\x4a\\x0a\\x4f\\x45\\x3f\\x6a\\xe4\\xa8\\x8a\\x27\\x5f\\x7d\\xe7\\x9c\\x13\\xae\\x1a\\x73\\x11\\x5b\\xe0\\x2f\\x42\\x5c\\x6f\\x17\\x7a\\x1e\\xc4\\x63\\x9c\\x42\\xa7\\x92\\x80\\x9a\\x2b\\x09\\x19\\xeb\\xd3\\x21\\xe3\\x16\\x00\\x1d\\x5b\\x2f\\x84\\x89\\x4f\\xce\\xbd\\x50\\xa1\\xdc\\xf4\\x4d\\x70\\x2b\\x92\\x45\\x32\\xfc\\x0e\\x4d\\x3f\\x9f\\xf8\\x48\\x6c\\x0e\\xd1\\x80\\xee\\xcc\\x3e\\x09\\xe2\\x27\\x2a\\x94\\xdc\\x7d\\x24\\xa4\\xe8\\x7a\\x93\\x1f\\xe2\\x49\\x5c\\xbf\\x99\\x2c\\x0a\\xae\\x92\\x01\\xe0\\x79\\x62\\x98\\xf9\\x36\\x3d\\xba\\xc4\\x75\\xe8\\xed\"},\n{{0x93,0x2a,0x20,0x0e,0xce,0xe7,0x22,0x3f,0x24,0x14,0x62,0x83,0xa4,0x04,0x8c,0x67,0xa6,0xa2,0xd2,0xfc,0x4b,0xa0,0xf9,0x24,0x8b,0xdf,0xfd,0x82,0xc6,0xcc,0xe3,0xcb,},{0xec,0x9b,0xfb,0x7a,0x6d,0x04,0xe7,0x26,0xfc,0x1e,0xa0,0xc4,0x24,0x61,0x0d,0xcb,0x79,0x67,0xbf,0x15,0xd6,0xd6,0x62,0x68,0x58,0xd4,0x11,0x19,0x8d,0x40,0xe2,0x39,},{0xcd,0x1e,0x4b,0xdf,0x4a,0x3e,0x4a,0x31,0xd6,0x52,0x54,0x33,0x3c,0x8c,0xc4,0x08,0x7e,0x4c,0xc4,0x0b,0x02,0xe2,0xa3,0x47,0xd0,0x9a,0x3d,0xde,0x69,0x84,0x90,0xc0,0x87,0xd7,0x10,0x9a,0xd0,0x20,0x9c,0x53,0xe9,0x87,0x58,0x9c,0xbf,0x3c,0xe2,0x64,0x12,0xa2,0xb0,0x2c,0xb8,0xa3,0xbc,0x93,0xfe,0xc7,0x5a,0xb5,0xd2,0xc3,0x87,0x03,},\"\\xdf\\x95\\x32\\x07\\x04\\x82\\x13\\xaf\\xb8\\xe2\\xaf\\x45\\x2c\\x88\\x9a\\x21\\xca\\x13\\x6a\\x68\\xc9\\x29\\xbd\\xc8\\x24\\xf9\\xa8\\x9a\\xc5\\x96\\xdc\\xb9\\x00\\x19\\xa4\\x6f\\xb6\\x82\\xbc\\xfd\\x96\\x2f\\xcc\\xb2\\x7d\\x00\\xba\\xf8\\xec\\xca\\xf9\\xd9\\xa7\\xd8\\x18\\x3c\\xab\\xd7\\xdf\\xa5\\x06\\xf7\\xba\\xfb\\x49\\x35\\xab\\x04\\x59\\x31\\xff\\x8f\\xae\\xb7\\x16\\x31\\xf9\\xed\\x6b\\xb8\\xf8\\x47\\x3a\\xd6\\x29\\x0d\\x7c\\xf5\\x19\\xdb\\x31\\x0a\\x44\\x42\\xc4\\x61\\x11\\x8f\\x67\\xd1\\xa6\\xd1\\x03\\xba\\xe6\\xf2\\x69\\x7c\\x94\\xb7\\x42\\x6d\\x9e\\x02\\xe3\\xcb\\x95\\x22\\xfd\\x0b\\x44\\xae\\xf6\\x00\\xc9\\x62\\xfe\\xff\\x58\\x73\\xd9\\x8c\\x27\\x90\\x88\\x7b\\x8e\\x88\\xd1\\x60\\x82\\x4f\\x1b\\xba\\x22\\x01\\x76\\x39\\xf8\\xdc\\xe6\\x8f\\x74\\x34\\x80\\xde\\xea\\x1f\\x92\\xaa\\x1f\\xd4\\x13\\x5d\\xd0\\x64\\x57\\xa6\\x0f\\x36\\xb7\\xd7\\xf5\\x17\\xd4\\x0c\\x94\\xc0\\xdd\\xdc\\x2e\\x46\\x58\\x47\\xd9\\x09\\xb9\\xf6\\x82\\x45\\xff\\x2b\\x42\\x1d\\x59\\x19\\x00\\x1a\\xae\\x5a\\xef\\x24\\xe0\\x2c\\x00\\x2d\\xa9\\x07\\xe8\\x60\\x5f\\x16\\x0e\\xa6\\x09\\x6b\\x58\\x0b\\x75\\xce\\xa0\\x22\\xd4\\x02\\xf7\\xf5\\xfd\\xc4\\x64\\xf8\\x7f\\x78\\xc7\\x90\\x6a\\x01\\xe8\\xe4\\x8f\\xb5\\xb3\\x51\\x74\\x61\\x2b\\x48\\xac\\x8b\\xc7\\x50\\xe0\\xf3\\xae\\xb0\\xa1\\x2f\\x7d\\xfc\\x09\\xb0\\x84\\x2c\\x17\\x80\\xa5\\xfd\\x9c\\x54\\xaf\\xb9\\x39\\x9b\\x94\\x08\\xba\\xac\\xcd\\xa2\\x0a\\xfb\\xe3\\xd6\\x82\\x24\\x8d\\x7b\\xf1\\xef\\xde\\xf4\\x90\\x5a\\x31\\x9b\\x0f\\xfb\\x10\\x8b\\x75\\x3b\\x71\\xcc\\x97\\xe9\\xe2\\x1e\\xc9\\xb3\\xdd\\x28\\xce\\xe0\\x39\\xd9\\x41\\x8a\\x11\\x35\\xf0\\xad\\xd0\\x92\\xaa\\x66\\x31\\x2e\\xa2\\x91\\x33\\x00\\xd1\\xcc\\x89\\x16\\x52\\x43\\x02\\xbd\\x3d\\x1b\\x09\\xe6\\xb2\\x9c\\x68\\x57\\xcb\\xdc\\x56\\xef\\x4b\\x3f\\x35\\xd8\\xee\\x67\\x72\\x08\\xef\\xfa\\x84\\x6f\\xdb\\x06\\x6b\\x05\\xeb\\x71\\x7b\\x4d\\x45\\x12\\x0c\\xab\\x72\\xa7\\xdb\\x7a\\x7c\\xa8\\x46\\xe8\\x7b\\x16\\xb6\\x90\\x47\\xeb\\x76\\xd8\\xf1\\x8d\\xa8\\xe1\\x39\\x9e\\xc0\\xa8\\xc9\\xc3\\x28\\xcb\\xe6\\x0e\\x0b\\xf4\\x20\\x44\\xd2\\xeb\\xf2\\x81\\x8b\\x3c\\x04\\x75\\x88\\x45\\x2f\\xcd\\x2b\\x3e\\xfc\\x1e\\x10\\x09\\xae\\x07\\x68\\x87\\x27\\xdb\\x8f\\xb6\\xdf\\x2a\\x2f\\xe7\\x5d\\x1c\\xf2\\x2f\\x32\\xba\\xc0\\x9c\\x82\\xa6\\xa3\\xd7\\xee\\xd7\\xd0\\x05\\x08\\xcb\\xe5\\xb7\\x24\\x60\\xec\\xfc\\xdd\\x3e\\xe9\\x11\\xef\\xe5\\x89\\x8d\\xbd\\x8e\\x4c\\xe8\\x59\\x13\\x26\\xdd\\x15\\x22\\xf9\\xd2\\x55\\xda\\x86\\x1b\\xf9\\xeb\\x2a\\x1d\\x57\\x25\\xd7\\xd5\\xd4\\x27\\x34\\x03\\x41\\x94\\x5e\\x7b\\xca\\x8c\\xf2\\xff\\x8a\\x99\\x74\\x50\\x95\\x3e\\x77\\xd2\\x03\\x68\\x3e\\x4b\\x0d\\xaf\\xc3\\x30\\xe0\\x56\\x72\\xd2\\xec\\xd1\\x3a\\x3f\\x44\\x2d\\xf1\\x37\\x04\\x4e\\x0f\\x55\\x6f\\xfb\\xce\\xff\\xea\\x26\\xcb\\xae\\x26\\xcb\\xa6\\xf2\\x56\\x8c\\xf3\\x9f\\x90\\x84\\x89\\xe1\\xa9\\x2e\\x76\\xaf\\xbf\\x29\\x79\\x95\\xda\\x4b\\x2c\\xb1\\xab\\xc9\\xee\\x1f\\xe4\\xdc\\xa5\\xaa\\x83\\x8b\\x2f\\xbd\\xc1\\x09\\xe8\\x9b\\xef\\x3c\\xe5\\xa3\\x6e\\x5b\\x2f\\x71\\x2a\\xc4\\xc8\\x89\\x43\\x82\\x48\\xfa\\x5a\\x21\\x50\\xca\\xc6\\xc9\\x77\\xb5\\xe0\\x54\\x3f\\x40\\x10\\xb7\\x31\\x47\\x32\\xfd\\x18\\xe7\\xfd\\x59\\x82\\xe8\\x32\\x76\\x51\\x9e\\x78\\x72\\x5e\\x5a\\x5e\\xeb\\x86\\xf4\\x89\\x20\\x84\\xae\\x52\\xda\\x38\\x49\\xc2\\x28\\xc8\\x09\\xed\\xbf\\x69\\xa2\\xcc\\x47\\xc4\\x78\\xd1\\x87\\x19\\xf1\\x11\\xd7\\x37\\x88\\x7c\\x7a\\x2e\\xb3\\x25\\x08\\x98\\xdb\\x34\\xe5\\xe5\\x07\\x6f\\xab\\x9f\\x4a\\x9e\\x6e\\x19\\x29\\xa3\\x48\\x08\\x36\\xde\\xa0\\x7b\\xa4\\xd6\\x3f\\xce\\xfc\\xe5\\x54\\x34\\x30\\xa8\"},\n{{0x5c,0x48,0x3e,0x83,0x7e,0xb0,0x1e,0xd5,0xa4,0xad,0x5d,0xb3,0x79,0x26,0x99,0x82,0x4d,0xf1,0x3e,0x57,0x6b,0xe9,0x67,0xd1,0x21,0x15,0xc8,0x5e,0x02,0x86,0xe6,0x28,},{0xfe,0x1a,0xa8,0xb0,0x69,0xda,0x56,0xe6,0x76,0xef,0x3a,0x57,0xd9,0xbb,0xa8,0x83,0x05,0xea,0x03,0x28,0x08,0xee,0x63,0x52,0x73,0xb3,0x7c,0x5c,0x63,0x5d,0xef,0x4e,},{0xc1,0x7c,0x2f,0xbf,0x8c,0x00,0xbc,0xea,0x30,0x35,0xbf,0x0a,0x62,0xd3,0x02,0x29,0xdb,0x74,0x2c,0xab,0x11,0x99,0x67,0x7c,0x7e,0xb4,0xeb,0x0e,0xf5,0xc7,0xb5,0x1a,0xd4,0x87,0xa4,0x97,0x1b,0x63,0x1e,0x79,0x4a,0x58,0xbb,0x08,0x23,0xcc,0x0f,0xe6,0x26,0x10,0xfd,0xa6,0xa9,0xe0,0x3f,0x8c,0x4c,0x33,0x81,0xcb,0x15,0x4c,0xef,0x0b,},\"\\x58\\xd5\\xe2\\xcd\\x89\\x9b\\xa9\\x85\\x37\\x8b\\x3e\\xc3\\x3e\\x9a\\x86\\x98\\x22\\xb2\\x3d\\x5d\\x89\\x6a\\x28\\xf4\\x24\\xfc\\xd6\\xe4\\xcc\\x28\\xb8\\x0d\\x4a\\xaf\\x2d\\xe8\\x04\\x36\\x7e\\xfd\\xf5\\xe4\\x23\\xb1\\x23\\x4d\\x82\\x1d\\x63\\xac\\x05\\xea\\xed\\x12\\xc7\\x3e\\x8e\\x36\\x08\\xaf\\x0d\\xdc\\xcc\\x83\\x86\\xb7\\xd8\\x42\\xb1\\x2e\\x60\\xd3\\x0c\\xed\\xe3\\x25\\x53\\x94\\x5e\\x78\\x29\\xe9\\xb2\\x3f\\x5c\\xcc\\x2e\\x71\\x03\\xa0\\x8f\\x2c\\xdd\\x9e\\x75\\xa7\\xb3\\x6f\\x5e\\x63\\x72\\x0e\\xf0\\xd4\\x9b\\x25\\x92\\xbe\\xf3\\x74\\x02\\x68\\xc8\\x9c\\x86\\xa6\\xcb\\xdf\\xe2\\x01\\xde\\x0d\\xb9\\x98\\x5c\\xeb\\x19\\x39\\x9c\\x9a\\x1d\\x5b\\xb0\\x58\\x6a\\xf3\\xc8\\xcd\\xf2\\x71\\x32\\x99\\xeb\\x04\\x43\\xa5\\x41\\xa4\\x73\\x84\\x60\\x72\\x43\\xc5\\x4a\\x05\\x91\\x50\\x58\\x36\\x7d\\x3f\\x2d\\xb3\\x80\\xed\\x31\\x7a\\x8c\\x12\\xc7\\xa6\\x3e\\x80\\x9c\\x2e\\x84\\xd4\\xac\\xb9\\xd9\\xee\\xf5\\x4c\\x6f\\x5a\\xf7\\xab\\x59\\xcb\\x91\\x68\\xb1\\x06\\x8f\\x9d\\x2c\\xcd\\x97\\x8f\\xe7\\x21\\xba\\xd6\\x8a\\x66\\x9f\\xfe\\xde\\xa3\\xe9\\x2c\\x76\\xb3\\x2e\\x31\\x66\\x65\\x8e\\xe3\\xbd\\x0d\\xeb\\x1b\\x08\\x41\\x94\\xce\\x35\\xd9\\xa7\\x41\\xc5\\x7f\\xc2\\x24\\x1e\\x68\\xef\\xaa\\x65\\x32\\x0b\\x23\\xa1\\xdd\\x19\\xea\\x8b\\x7e\\xc8\\x1e\\x76\\xf1\\xe9\\x16\\x3f\\x95\\x92\\xee\\xee\\x5a\\xf8\\xec\\xed\\x02\\x72\\xf3\\x35\\x12\\xd0\\xd4\\xca\\x06\\x7f\\x05\\x55\\x1b\\x26\\x53\\x96\\xe1\\x00\\x14\\x78\\x3c\\xac\\xac\\x79\\x43\\x7b\\x19\\x84\\x2d\\xe6\\xab\\x91\\xb9\\xd9\\x23\\xbb\\xeb\\x50\\x33\\x25\\xbc\\x54\\x86\\x9f\\x66\\x3e\\x6e\\xa4\\xae\\x68\\x97\\x70\\x1b\\xe7\\xe1\\x1d\\x16\\xcd\\xfa\\xe0\\xee\\xe8\\x61\\x86\\x20\\x00\\xe7\\xa4\\x16\\x07\\x81\\x54\\x7e\\x42\\x52\\x6a\\xf5\\x1b\\xa9\\x69\\x8d\\x23\\x4a\\xaf\\x51\\x0d\\xa8\\x1a\\x0d\\xbf\\x26\\x43\\x66\\x15\\x3d\\x7a\\x6d\\x5e\\xb3\\xfb\\x08\\xb9\\xbb\\x5e\\xa0\\x65\\xc2\\xf5\\xe5\\xb6\\xbb\\x67\\x9d\\x2e\\x21\\x0b\\x5b\\x40\\xe2\\xbc\\x82\\xf7\\x8d\\xc9\\xab\\x58\\x24\\xb7\\x4a\\xad\\xad\\xd8\\x9b\\xf8\\xa8\\xb7\\x3a\\x0a\\x2f\\x43\\xac\\x74\\x83\\x78\\x92\\x1a\\x73\\xa2\\x52\\x70\\x4a\\x4a\\xdb\\xf7\\x40\\xcb\\x99\\xc1\\xe1\\x59\\x4c\\x37\\xac\\x9a\\xcc\\x19\\xf5\\x23\\x15\\xc6\\xa8\\x46\\xa5\\x7b\\x36\\x12\\x8c\\x64\\xd7\\x67\\xaf\\x44\\xe9\\xc8\\x63\\x05\\xbf\\x18\\xba\\x7c\\xd5\\x26\\x80\\x52\\x3a\\x3b\\x10\\x2f\\xba\\x6f\\xe5\\x55\\x67\\x06\\x9d\\x20\\x47\\xcb\\xdd\\x96\\x05\\xea\\x12\\xc8\\x87\\x7d\\x39\\x9c\\x1e\\x66\\xe3\\x38\\x17\\x73\\x1f\\x50\\xb8\\x4f\\x81\\x7d\\x1f\\x07\\x60\\xa4\\x0f\\x97\\x46\\x86\\x18\\x93\\x41\\x05\\xeb\\x00\\xec\\x50\\xc7\\x6d\\xb3\\xc5\\x3f\\xcf\\x43\\xfe\\x17\\x02\\x90\\x7d\\x9a\\x75\\x6b\\xcf\\x43\\x9f\\x88\\x31\\xd0\\xbf\\xac\\x92\\xe7\\x05\\x8f\\xb1\\x57\\xbe\\x3e\\x59\\x1d\\x37\\xeb\\x34\\x16\\x5e\\x3c\\x6f\\xc6\\x0e\\x72\\x29\\x4c\\x08\\x3e\\x47\\x76\\x26\\xf9\\x00\\x1c\\x1d\\x73\\x7c\\x29\\x03\\x77\\xdf\\xa5\\x8e\\xa4\\xea\\xd3\\x02\\x8f\\xc7\\x62\\xce\\x8a\\x3a\\xfe\\xc2\\xe6\\xe1\\x32\\xc6\\x62\\xdf\\x60\\x34\\xab\\x55\\x4f\\x93\\xef\\xac\\x65\\x7a\\xd3\\x4f\\x61\\x07\\xd3\\x47\\xfc\\x5c\\x5e\\x53\\xf3\\x73\\x3e\\x17\\x8b\\x76\\x01\\x4d\\x2f\\x9b\\xbd\\x06\\xef\\x2d\\xfe\\x60\\xe2\\x08\\x3d\\x88\\x65\\xf7\\xf5\\xb2\\xac\\xc0\\x25\\xd9\\x12\\xe5\\xcf\\x6c\\xda\\x6e\\x79\\x81\\x43\\xe9\\xdb\\xbc\\x70\\xa0\\x21\\x1d\\x8e\\x40\\x03\\xd7\\x8b\\x38\\x3d\\x66\\xa6\\xad\\x29\\x71\\x7c\\xa2\\x4e\\xdd\\xef\\x7d\\xf7\\xcd\\x3a\\x7e\\xf6\\x52\\xab\\xa5\\x48\\x7a\\xfe\\x5d\\x02\\x6c\\x9b\\x10\\x28\\x07\\x29\\x4e\\xb2\\x7d\\x98\\x24\\xee\\xb6\\xb4\\x0f\\x08\\x3d\\xe7\"},\n{{0xb0,0xd0,0xab,0xdd,0x84,0x44,0xe1,0x0f,0x29,0x37,0x54,0xac,0x9f,0x16,0xe3,0x1b,0xdc,0xdd,0x97,0xb7,0x06,0x71,0x28,0xaa,0xe8,0xe4,0xd7,0xf1,0x12,0x89,0xe2,0xcd,},{0x1c,0x78,0xcc,0x01,0xbe,0xa1,0x53,0x52,0xb6,0x3c,0x56,0x97,0xf1,0xcf,0xe1,0x2f,0xfd,0xd1,0x6d,0xdc,0x1d,0x59,0xe7,0x79,0x51,0xb6,0xe9,0x40,0x8e,0xe2,0x28,0xad,},{0x64,0x40,0x8b,0xdd,0x2d,0x0f,0xc8,0x92,0xa5,0xb6,0x2b,0x5a,0xcf,0x8e,0x3b,0x3c,0x73,0xc0,0xb5,0xc4,0xfa,0x2a,0x72,0xe3,0x9d,0xd6,0x08,0xd4,0x93,0x7f,0x93,0x32,0xf7,0x3e,0x14,0xd0,0x8b,0xad,0xc6,0x27,0x01,0x14,0xd1,0xf1,0xa5,0x56,0xcc,0x6e,0xe8,0x48,0x8a,0xbb,0x90,0x7f,0x79,0xae,0x17,0x5c,0x35,0x2e,0x9f,0x11,0xee,0x05,},\"\\xaa\\x27\\x6c\\xc5\\x43\\xfc\\xc6\\x2d\\x70\\xa7\\x04\\x60\\x8d\\x98\\xce\\x51\\xb6\\x45\\xb5\\xc2\\x4a\\x64\\x0a\\x5d\\xf1\\x0a\\x55\\x91\\x41\\x7d\\x10\\x89\\x26\\xdf\\x3f\\x0c\\xe1\\xb9\\x21\\x03\\x33\\x09\\xeb\\x8d\\x86\\x59\\xf4\\x89\\xfd\\x6f\\x79\\xaa\\x1b\\xf4\\x88\\x2d\\x72\\xac\\x69\\xcc\\x58\\xd3\\xbc\\xe0\\xfa\\x89\\xb1\\x64\\x11\\xe9\\x75\\x3e\\xb4\\x0c\\x6c\\x4d\\x59\\x8d\\xc8\\xf4\\xab\\xb0\\xbc\\x48\\xf1\\x37\\x03\\x71\\x32\\x6c\\x9a\\x86\\xbb\\xc2\\xac\\x62\\x14\\x47\\x8e\\x78\\xa3\\x84\\x08\\xbd\\xda\\xfa\\xa9\\x59\\x26\\x00\\xc4\\x9a\\x12\\x9c\\x05\\x39\\x2f\\x8a\\x7d\\x64\\x2b\\x49\\x13\\x7a\\x20\\xf3\\xfe\\x9f\\x11\\xee\\x17\\xcf\\xa3\\xaf\\xd2\\xaf\\x71\\x56\\x5e\\x9c\\x40\\x08\\x0b\\x60\\xcd\\x0d\\xbc\\x37\\x8e\\xda\\x06\\x2c\\x7c\\xbc\\x7f\\xe9\\x72\\xbd\\xe4\\x50\\x9a\\x1d\\xe9\\x5f\\x14\\xdf\\x48\\x2f\\x48\\xaa\\xcc\\x46\\x3c\\xd5\\x94\\xf6\\x6d\\x64\\x8d\\x37\\x94\\x73\\x8a\\xd6\\xab\\x49\\x6e\\x2d\\xa5\\x0b\\x0d\\xb2\\xba\\x7b\\x65\\x91\\x85\\xe4\\x58\\x7f\\x18\\x2e\\x83\\x3d\\xe7\\x50\\xfa\\xac\\xdd\\xf2\\x1a\\xf5\\xe0\\xcf\\x4c\\x9a\\xf3\\x85\\xb0\\x4f\\x7b\\xe2\\x31\\x49\\x8a\\xd0\\xb7\\x42\\xd5\\xa8\\x7c\\x06\\x11\\x5d\\xb2\\x30\\x97\\x3a\\x51\\x42\\x7f\\x20\\x2f\\xa3\\x9a\\xfb\\x98\\x28\\xb5\\xf0\\x3f\\xa3\\x27\\xcb\\xd5\\x2d\\xfe\\xc6\\x6d\\x71\\xea\\x31\\x98\\x65\\xdc\\xf6\\x81\\x0f\\x18\\x58\\x47\\x2d\\x8b\\xea\\x3e\\x44\\x7a\\xdf\\xb4\\xb6\\x07\\x58\\xe8\\x6b\\x48\\x13\\x37\\x09\\x73\\x2d\\x2b\\xcf\\x51\\xc7\\x6c\\xaa\\x84\\x7b\\x65\\x37\\xfc\\xb0\\x5b\\xb8\\xc8\\x7d\\xc5\\xe9\\xfb\\x02\\x2b\\x32\\x60\\xc1\\xd7\\x1b\\x14\\x98\\x59\\xc9\\x66\\x3d\\xbd\\xae\\x6a\\x7b\\xbf\\xd6\\xde\\xb9\\xd1\\x23\\x80\\x9c\\x24\\x14\\x01\\xaf\\x10\\x71\\x9c\\xf9\\x1a\\x6b\\xed\\x16\\x08\\x4c\\x44\\x46\\x07\\x35\\x9e\\xd8\\xf0\\x18\\xdb\\x11\\x15\\x11\\x89\\x2b\\x46\\xbd\\xac\\x6c\\x9c\\x61\\x38\\x41\\xde\\xd8\\x86\\xb9\\xde\\xc0\\x6c\\x01\\xe8\\x04\\x87\\xe4\\x8f\\xbe\\x77\\x8e\\x9e\\x97\\x50\\x8f\\xfd\\xa0\\x57\\x78\\x53\\xaa\\xbd\\xca\\xca\\x8b\\x0b\\xab\\x6c\\xe4\\x15\\x57\\xaa\\xb9\\x63\\x1c\\x96\\xd6\\x09\\x77\\xe3\\x57\\x18\\xb6\\x05\\x95\\x27\\x3f\\xdb\\xa1\\x40\\xf5\\x50\\x0a\\x8d\\x35\\x76\\xf5\\xa9\\xfc\\x8f\\x3c\\xa4\\xc0\\x2c\\x16\\x7a\\xf2\\xe0\\x3d\\x25\\x75\\x0b\\x42\\xad\\xb0\\x3b\\x14\\x17\\xf2\\xb6\\xd2\\x19\\xbe\\x5f\\x84\\x29\\x33\\x1a\\x26\\xa4\\x49\\xb5\\xd4\\xdb\\x2b\\x1a\\x09\\x15\\x2e\\xea\\x2b\\x25\\xd2\\xdf\\x7e\\xf6\\xfe\\x0a\\x32\\xe2\\x5f\\xae\\x79\\x36\\x0a\\x9a\\xee\\x15\\x11\\xfd\\xa8\\x06\\x45\\x50\\x93\\x7a\\x71\\x30\\x97\\x19\\x30\\xc6\\x73\\xbb\\x35\\x8e\\x5f\\x55\\x95\\x1f\\x50\\xb1\\x46\\xd8\\x5d\\x38\\x3f\\x3e\\x01\\xc1\\x51\\xec\\xe6\\xc0\\x6d\\x83\\x67\\x01\\x25\\x32\\x80\\xfd\\xcf\\xf4\\xe1\\x39\\xd3\\x31\\x9a\\xb2\\xe2\\xca\\x71\\xbc\\xc3\\xfa\\x0f\\xaf\\x7c\\x70\\x2c\\x9c\\x60\\x4e\\x56\\x51\\xde\\x4a\\xf5\\x70\\x0e\\x9e\\xde\\x72\\x58\\xb9\\xbc\\x14\\x8d\\x55\\x95\\xcd\\x34\\x17\\x0e\\x3e\\x5c\\xf2\\x92\\x82\\x83\\x90\\x90\\x8f\\xda\\x96\\x1f\\x22\\x30\\xac\\x0b\\x8c\\xac\\x64\\x73\\x97\\x32\\x70\\x6c\\xe2\\xd5\\xe5\\x9a\\xbd\\x6d\\x5e\\x20\\x7b\\xda\\xfe\\xa7\\x4d\\x28\\xd7\\xa7\\x58\\xf2\\x20\\x0e\\x4e\\x00\\xa0\\xbc\\xf0\\x30\\x6a\\x3c\\xab\\xda\\x47\\x02\\x4f\\xab\\xea\\xe4\\x88\\xab\\x5c\\x32\\x37\\x15\\xcf\\x3c\\xa7\\x72\\x0a\\xf9\\xeb\\xbf\\x85\\x82\\xe1\\x15\\x8a\\x09\\x9d\\x73\\x6b\\x56\\x9b\\x9d\\x40\\x29\\x58\\x17\\xea\\x25\\x54\\x06\\x8b\\xef\\x32\\x44\\x2c\\x11\\x1e\\xc8\\x14\\xc6\\xed\\x41\\x59\\x19\\xba\\x73\\x52\\x63\\x34\\xdf\\x30\\xba\\xc6\\x66\\x08\\x4e\\x56\\x01\\xc2\\x28\\x1c\"},\n{{0x49,0x84,0x97,0xfd,0xcc,0x6a,0x10,0x58,0x91,0xe0,0x23,0xff,0x32,0xd7,0x5f,0x7c,0x37,0x48,0xd8,0xc5,0x2d,0x87,0xdd,0x3b,0x27,0x75,0xae,0xfd,0x81,0x60,0xa1,0x43,},{0x2d,0x79,0xae,0x9c,0xee,0x4a,0xc6,0x27,0x5b,0x05,0x74,0x9c,0x43,0x8e,0xbe,0x55,0x2b,0x41,0x3d,0x87,0x3c,0xc0,0x7f,0x14,0xf5,0xfa,0x13,0x01,0x77,0x21,0x4c,0x54,},{0xb0,0xa3,0x6a,0x2c,0x93,0x47,0x56,0x34,0x8e,0xb4,0x7c,0x25,0xa3,0x2c,0x3f,0x2a,0x5d,0xdb,0xd5,0x8f,0xcc,0x72,0xa0,0x8c,0x3c,0xea,0xd1,0xa2,0xd9,0x00,0x33,0x5c,0x30,0x01,0xe3,0x5b,0xfe,0x1f,0x3f,0xb5,0xa5,0x55,0x00,0x9b,0xa8,0xe9,0x68,0x74,0x49,0x4b,0x97,0xe8,0xb0,0x97,0x00,0xed,0xcb,0x1f,0x25,0x84,0xb9,0xd0,0xfe,0x03,},\"\\xbe\\x38\\xbc\\x8c\\xdf\\x46\\x19\\x0e\\x30\\x4a\\xb5\\x3d\\xd2\\x9c\\x2b\\xc4\\x09\\x54\\xfd\\x4c\\x6d\\x2b\\xb9\\x90\\xf9\\x3b\\x2b\\x5c\\x69\\x1f\\xdf\\x05\\x27\\xc2\\x60\\xf5\\x06\\x61\\x87\\xf2\\xd0\\xf3\\x1f\\x43\\xa0\\x8b\\x36\\x0e\\xa1\\xed\\x82\\x00\\x65\\x17\\x64\\xb8\\xfa\\x49\\x59\\x5a\\x15\\x94\\x10\\x9e\\x49\\x67\\x59\\xab\\x66\\x23\\xfa\\x33\\x37\\x8d\\x80\\x0e\\x61\\x17\\xe0\\x79\\xe1\\x3f\\xe8\\x5c\\x81\\xb6\\x3e\\xbe\\x24\\x7b\\x3d\\xf6\\xc1\\x58\\x4b\\xc7\\xcf\\xfb\\xdf\\xa4\\x5f\\x2a\\x2c\\xe7\\xc2\\x37\\xaa\\xaf\\xef\\x8c\\xbc\\xa7\\x0b\\xca\\xbc\\xe0\\xb8\\x47\\xd5\\x51\\xf4\\x6a\\x7d\\x15\\xce\\x2a\\x0d\\x3d\\x54\\x5a\\xba\\xcc\\x59\\x30\\x01\\x0c\\x53\\x64\\x88\\x87\\xd4\\x76\\xe0\\xd1\\x3a\\x34\\xfc\\x1c\\x54\\xdf\\x09\\xd1\\x06\\xed\\x75\\x8d\\xee\\xdc\\x76\\x1d\\x55\\x7a\\x73\\xb2\\xbc\\xdd\\xde\\xfb\\xa4\\xed\\x00\\x59\\x97\\xb1\\x92\\x79\\xb9\\xd2\\xde\\x37\\xd0\\x41\\xfe\\x01\\x3e\\xef\\x05\\xa2\\xe1\\x1c\\x9a\\x23\\x4e\\x87\\xcc\\x0e\\x16\\xc0\\xc6\\xda\\x42\\xaa\\xa5\\xbf\\x99\\x64\\x17\\xbf\\x64\\xe5\\xb7\\x85\\xd6\\x7d\\xc3\\x25\\x47\\xc1\\xf0\\x52\\x17\\x8d\\x69\\x4c\\xf2\\x0f\\x16\\x98\\x58\\x9e\\x7e\\xd4\\x9b\\xe2\\x9d\\xd5\\x9f\\xd5\\xc0\\x1b\\xa1\\xd9\\xf5\\xfb\\x06\\xa7\\x58\\x95\\xb7\\xb1\\xe1\\x58\\x95\\x09\\x7e\\xbd\\xe8\\x4c\\xad\\x63\\x03\\xaa\\x0a\\x86\\xdb\\xc3\\x24\\x74\\x7d\\x97\\x24\\x5d\\x70\\xc5\\x20\\x3b\\xe0\\x1b\\x06\\xcb\\xde\\x06\\xae\\x03\\x72\\x04\\xd2\\x37\\x30\\xcd\\x69\\x61\\x89\\xf7\\xac\\x26\\x7c\\xf2\\x02\\x17\\x99\\x29\\xce\\x54\\x10\\xe0\\xe3\\xad\\xe5\\x13\\xd2\\x20\\x1b\\xfd\\x20\\xfe\\xfa\\x40\\xb4\\x47\\x6f\\x27\\xbf\\x90\\x7c\\x76\\x2e\\xb7\\x26\\x2a\\x5b\\xe1\\x3c\\xfc\\x04\\x7a\\x84\\x6d\\x20\\xa9\\xf2\\x31\\x1b\\x64\\x69\\xb0\\x6a\\xb5\\x45\\xf0\\xec\\x9f\\xc4\\x46\\xea\\x25\\x0c\\xd3\\xb7\\x3a\\x7b\\x6b\\x96\\x0c\\x10\\xca\\x4c\\x2d\\x6c\\x64\\xa1\\x56\\xa1\\x8c\\x9f\\xb8\\x10\\xe4\\x9a\\xfd\\x0c\\x36\\xda\\xab\\x8b\\x8b\\x85\\x66\\x43\\xa4\\xcc\\xaf\\xa9\\xad\\x88\\x6e\\x91\\xe5\\x44\\x53\\x5b\\x8e\\xdd\\xa2\\x7c\\x90\\xc0\\x6a\\xb6\\xbc\\xc5\\x36\\x28\\xbe\\x18\\xd7\\xd6\\x36\\x9c\\xa1\\x80\\x1f\\x91\\xc2\\xe0\\xb9\\x5f\\x36\\xd7\\x02\\xf7\\x72\\x34\\xb4\\x10\\x07\\x19\\xc0\\x59\\x95\\x1e\\x45\\xb1\\xf9\\x16\\x98\\x39\\x34\\xe3\\x2b\\x4d\\x4d\\x8f\\x29\\xc0\\xa3\\x73\\xf8\\xd8\\xf0\\x91\\x8b\\x96\\x78\\x65\\xcd\\x0e\\x4b\\xec\\xa0\\x13\\x27\\xc9\\x9d\\x5f\\xde\\xd4\\xc1\\xa6\\x9a\\xc2\\xd4\\xd9\\xb7\\x8f\\xfb\\x83\\x05\\x67\\x00\\x21\\x04\\x02\\x50\\xcc\\x27\\x73\\x7e\\x75\\xdf\\x75\\x76\\x0f\\xec\\x8b\\x8d\\x30\\xb2\\x45\\x65\\x4f\\x3c\\x12\\xf1\\xf7\\xce\\xa0\\xbc\\xe7\\x8a\\xb3\\x69\\x35\\x78\\xaf\\x3e\\xa6\\x1f\\xfc\\xcd\\xf9\\xba\\xf7\\xc3\\xea\\x65\\xb8\\x8f\\xc8\\x54\\x12\\x81\\x26\\x47\\x67\\x96\\x89\\x2c\\x66\\x3b\\xd1\\x45\\x18\\xc9\\x91\\x86\\x29\\xa1\\x09\\x5f\\x61\\x4e\\x04\\x92\\x44\\x6c\\x3d\\x84\\xb1\\x6e\\xc9\\x4f\\x7e\\xca\\xda\\xeb\\x6b\\x65\\x9b\\xbb\\x48\\x67\\xb5\\x79\\x06\\x17\\x14\\xfd\\x5b\\xb0\\xfa\\xa4\\xad\\x6b\\xe0\\xff\\xb3\\x88\\x8b\\xea\\x44\\x7e\\x4e\\x34\\x38\\xc8\\xf0\\xea\\xe6\\x44\\xfb\\xd4\\x5a\\x38\\x02\\xdc\\x40\\xec\\x45\\x1b\\x21\\x2b\\xd5\\x92\\xda\\xcd\\x4d\\xa9\\x66\\x86\\xdc\\x8b\\x20\\x24\\x25\\x7f\\x25\\xe9\\xc8\\x30\\xbf\\xf7\\x95\\xee\\xe8\\x5d\\x87\\xa0\\x90\\xc1\\xa4\\x23\\x21\\xe7\\x10\\x55\\x57\\x64\\xed\\x82\\x57\\xc9\\x41\\x5c\\x7f\\x22\\x4b\\x53\\x75\\x58\\xce\\xfd\\xc6\\x15\\x12\\x9f\\x28\\x35\\x02\\x67\\xc0\\x1b\\xa0\\x40\\x3e\\x07\\xf5\\xc6\\x06\\x7f\\x91\\xc8\\x5a\\x2c\\x50\\xc8\\x66\\xdc\\x43\\x88\\xaf\\x38\\xd2\\x16\\x02\\x03\"},\n{{0xd9,0x62,0xa6,0x71,0x9e,0x5c,0xc7,0x72,0x4c,0xa4,0xa1,0xd5,0x59,0x53,0x68,0x12,0xb4,0xe2,0x2a,0xa7,0xbc,0xb1,0x3e,0x4f,0xb1,0x72,0x2d,0x28,0xe0,0x45,0x21,0x7c,},{0xa9,0x44,0x59,0x2d,0xbc,0x7d,0x77,0x03,0x9d,0x72,0x02,0x56,0xc3,0xfd,0x34,0x0d,0x34,0xdb,0x89,0x2a,0xb1,0x3e,0x48,0x12,0xd6,0x62,0xe2,0x84,0x0c,0x28,0xb6,0xd0,},{0xdf,0xb9,0xb6,0x35,0xac,0x0e,0xdf,0x83,0xb7,0xb5,0x9d,0x0b,0x84,0x09,0xaf,0x47,0x5f,0x66,0xfc,0x99,0x46,0xaf,0x0b,0x7c,0x63,0xab,0x8c,0xf5,0x92,0x9d,0x47,0x01,0xa1,0xbf,0x66,0x95,0x9c,0xde,0x62,0xfb,0xcf,0x59,0xa4,0x8a,0xb3,0xbb,0xaf,0x0b,0x9a,0x61,0xb6,0xe0,0x0b,0x21,0x81,0xeb,0x93,0x42,0x82,0x07,0x0a,0x5d,0x53,0x00,},\"\\xa6\\xaa\\x7a\\x19\\x0d\\x00\\x3a\\xb1\\x75\\x33\\x2b\\x8f\\x58\\xe7\\xca\\xeb\\x69\\x08\\x54\\xd9\\xdb\\x56\\xdb\\xb6\\x95\\x7b\\x3f\\xb6\\x54\\xe2\\xe0\\xda\\x99\\x1f\\x31\\x54\\x21\\x42\\x04\\x13\\x5d\\xf1\\xe1\\x10\\x43\\x17\\xc9\\xe3\\xc5\\x8e\\xed\\xff\\x1f\\xc6\\x1a\\xba\\x57\\x74\\x4c\\x0c\\x7e\\xf4\\x86\\x00\\x0a\\x70\\xb2\\xc1\\x42\\xeb\\xad\\xdc\\x07\\xab\\x06\\x5e\\x2a\\x85\\x5d\\xaf\\x19\\x8a\\x68\\x03\\xac\\x24\\xef\\x37\\x24\\x48\\x7c\\x13\\x51\\xdd\\xed\\xa0\\x51\\x39\\x13\\x45\\x7d\\x76\\x86\\x0d\\x78\\xa9\\xb6\\xbc\\x3d\\xba\\x66\\xc4\\x0e\\x5f\\xc3\\x49\\xa8\\x73\\xad\\x60\\x65\\xce\\x7d\\x7f\\xdc\\x2c\\xc4\\x83\\xb3\\xae\\xfb\\xf2\\xf0\\x3d\\xd6\\x69\\xbd\\x9c\\xb8\\xf6\\x3c\\xee\\x47\\x78\\x5c\\xac\\xb0\\x9d\\x87\\x2c\\x9a\\xeb\\x83\\xe9\\x86\\x84\\x05\\x25\\x43\\x24\\x03\\x79\\x82\\xe0\\x86\\x13\\x45\\x5d\\x95\\x21\\xd8\\x8e\\xa2\\xfd\\xa0\\x20\\xbe\\x73\\x0c\\xfc\\x8c\\x07\\xcb\\x0b\\x37\\x61\\x4c\\xcb\\xa2\\xfa\\x3e\\xc4\\x98\\xb8\\x15\\xbb\\x5a\\xdb\\x99\\x6e\\x84\\x8b\\x38\\xc0\\x15\\xa6\\xa5\\xc7\\x52\\xeb\\xda\\xc7\\xb9\\xee\\xd8\\xb6\\x96\\x19\\xd8\\xc8\\x46\\xb6\\x6f\\x78\\x16\\xd1\\xdf\\x1e\\xbc\\x21\\x07\\x1c\\xef\\x0b\\x25\\x1e\\x2e\\xab\\x59\\x82\\x7f\\x6d\\x60\\x55\\x08\\x43\\x70\\xfd\\x27\\xc2\\x03\\xe8\\x6a\\x18\\x9f\\x1e\\xe1\\x1e\\x84\\x03\\xab\\xdc\\xbd\\x1f\\x45\\x34\\x1a\\x82\\x05\\x25\\xd8\\x63\\x7d\\xc4\\x84\\xa5\\x18\\x5d\\x65\\x51\\xcb\\x88\\x2a\\x96\\xb9\\x98\\x1a\\x5f\\x1a\\x82\\x1f\\x27\\xb6\\x56\\xff\\xf9\\x0e\\x7f\\x69\\xbf\\x28\\x6f\\x75\\x2f\\x97\\x0f\\xfc\\xa5\\xc5\\x3e\\x08\\x50\\xb2\\x0b\\x94\\xf9\\x43\\x16\\x27\\x09\\x4a\\xce\\xa9\\x12\\xa8\\x80\\xb7\\x49\\xa6\\xf8\\x0b\\xb2\\x06\\xcc\\xaa\\x74\\x6f\\xa7\\x0c\\x83\\x3c\\x9f\\x32\\x30\\x89\\xce\\x05\\x58\\xc9\\xdc\\x20\\x0d\\x57\\x39\\xd1\\xe4\\x99\\x63\\x4f\\x2c\\x16\\xe5\\x4b\\x7f\\x6d\\x78\\x19\\xc4\\x70\\x71\\xb6\\x0b\\xd5\\x4d\\xd0\\xf2\\x73\\xa3\\x19\\x75\\x0f\\xd3\\xc5\\x10\\xa4\\x9a\\xb5\\x6f\\x63\\x0c\\x7c\\xe6\\xd8\\x02\\x3d\\x97\\x86\\x23\\x46\\x85\\x9b\\xc0\\xb4\\xd6\\x05\\x22\\x49\\x69\\x70\\x89\\x03\\x76\\x03\\x01\\x40\\x9c\\x60\\xab\\x25\\x17\\x56\\x11\\xf0\\xbe\\x98\\xb2\\x3a\\x8c\\xd8\\xac\\x53\\x5e\\x35\\x13\\xbc\\x77\\xe1\\x45\\x21\\x93\\xda\\xdf\\x44\\x35\\xe6\\x3c\\x36\\x29\\xb6\\x66\\xa5\\xea\\x4c\\x4b\\xad\\x36\\xea\\xca\\xd2\\x60\\x14\\x04\\xea\\xbd\\x8d\\x9a\\x07\\x95\\x6e\\xc2\\xb4\\xb7\\xbb\\x63\\x36\\xed\\x75\\xb8\\xdf\\x8f\\x16\\xde\\x42\\xc0\\xfc\\xae\\x93\\x65\\x2e\\x3c\\x40\\x7c\\xbd\\x45\\xe8\\xd4\\x13\\xef\\x51\\xe8\\x54\\x2d\\xf6\\x25\\x12\\xee\\x79\\x3e\\x41\\x35\\x8a\\x1d\\xe1\\x92\\x46\\xc6\\x58\\x6b\\x3c\\x14\\x07\\x41\\x04\\x21\\xf6\\xe8\\x65\\xc7\\x5a\\x9f\\x4a\\x6a\\x47\\x88\\xf8\\x4a\\x9c\\x78\\x1d\\x8f\\x80\\x24\\xbf\\xdb\\xe2\\x5b\\xdc\\x7d\\x4b\\x69\\xcb\\xaa\\x77\\x19\\x62\\x8c\\x0b\\x07\\xec\\x2c\\x4a\\x23\\x4f\\xff\\x4a\\xc3\\xd4\\x93\\x5b\\x9c\\xe4\\xc8\\xa1\\x69\\x47\\xab\\xe7\\x95\\x1f\\xf8\\xd9\\xac\\x92\\x15\\xe3\\x38\\xfa\\x0f\\xe9\\x12\\x41\\x76\\xd1\\x7b\\xac\\x1e\\x05\\x59\\x2c\\x43\\x98\\x68\\xae\\x5a\\x4f\\x75\\xfd\\x1e\\xa8\\x2a\\xa4\\x54\\xc2\\x0a\\x93\\x9d\\xed\\xa7\\x29\\xa0\\xe1\\x96\\x46\\xce\\xbd\\x82\\x20\\x49\\xc8\\x25\\xc7\\xe3\\x1c\\x6e\\xfa\\xd4\\x5e\\x30\\x6f\\x2d\\x9f\\x05\\x69\\xe0\\x71\\x73\\x31\\xf4\\x80\\x04\\xc2\\x6e\\xbf\\xe6\\x8f\\x38\\x43\\xe9\\x0f\\x80\\x67\\x03\\x2d\\x21\\xe7\\x86\\xc8\\x53\\x9e\\x01\\xbe\\x3c\\xea\\xc5\\x95\\x4a\\x05\\x46\\xc8\\x4b\\x73\\x4d\\x99\\x94\\x56\\xa7\\xc4\\x5f\\x8c\\xeb\\xaa\\x47\\x8e\\x54\\x80\\x07\\xf9\\xd3\\xaf\\x83\\x6f\\x75\\x4d\\xe4\\x12\\x3f\\x2f\"},\n{{0xe1,0xd1,0x41,0x65,0x18,0x92,0x1d,0x07,0xc8,0xc3,0x9e,0x29,0x73,0xd8,0xea,0x12,0x49,0xca,0xa8,0xbf,0x65,0x9c,0xc3,0x6c,0x79,0x37,0xf8,0x4e,0xce,0x7a,0xd4,0xfc,},{0x48,0xbd,0xcc,0x3f,0x1a,0x5b,0x80,0x58,0xed,0x9a,0x32,0xef,0x1c,0xc4,0x8c,0xf7,0xa8,0xab,0x76,0xa6,0xe4,0x51,0x9e,0x5a,0x82,0x85,0x52,0x41,0xad,0x6f,0xff,0x8a,},{0x42,0x32,0xd2,0xa4,0x81,0x08,0x4d,0x11,0x96,0xdb,0x62,0xf2,0x2d,0xc7,0x4c,0xf2,0xea,0xf2,0xdb,0x0d,0xf0,0x5a,0xd7,0xcd,0xde,0x67,0xbf,0xc2,0x9b,0xff,0x56,0xcd,0xe0,0x19,0xac,0x9f,0x03,0xd8,0x1f,0x18,0x27,0xeb,0x1e,0x3b,0x0a,0xbe,0x02,0x04,0xca,0x7f,0x77,0xfa,0x87,0x4a,0xb5,0x26,0x83,0x54,0xff,0x08,0xbb,0x7f,0x48,0x00,},\"\\x3d\\x26\\x3d\\xe1\\xab\\x91\\xe8\\xdd\\x7b\\x31\\x7f\\x7a\\x27\\xfb\\x60\\xa6\\xe1\\x83\\x8c\\x0c\\x79\\x3b\\x03\\xab\\xbe\\x70\\x82\\xb6\\xbd\\xa0\\xc7\\xc4\\x60\\x62\\x26\\x21\\x92\\xc8\\x8b\\x65\\xc0\\x26\\xc1\\x74\\x58\\x4d\\x29\\x64\\x97\\x10\\x42\\x9a\\xe4\\x4a\\x46\\x14\\x0b\\x4c\\x82\\xc8\\xa0\\xb7\\x4d\\x56\\xa0\\x04\\xf8\\xe2\\xf5\\xc1\\x8f\\x84\\xf0\\x46\\x41\\x53\\x77\\x2f\\x83\\x12\\x63\\x3f\\xc6\\xad\\x28\\xa7\\xd9\\xfb\\x55\\xf7\\xd7\\x8c\\xd6\\x48\\x8c\\xa5\\x81\\x17\\xea\\xf9\\x23\\xfa\\x28\\x87\\x5e\\x2b\\x31\\x89\\x89\\x31\\x85\\xaa\\x3c\\xcd\\x04\\x4d\\x3f\\x11\\x0e\\x2e\\x7c\\xab\\xdf\\x6f\\x81\\x4b\\x9f\\xdd\\x67\\x33\\xbd\\x5f\\x30\\x7a\\x87\\xbc\\x73\\xb6\\x25\\x0d\\x58\\x83\\x93\\x6d\\xeb\\x1d\\xb0\\xe0\\xaf\\x1b\\xe7\\xab\\x32\\x9b\\x5c\\x6b\\xd9\\x35\\xbd\\x8f\\x8d\\xc8\\x88\\xf0\\xd1\\xc4\\x64\\xed\\xbc\\x02\\x3c\\xbc\\x08\\x07\\x53\\xee\\x8f\\x79\\x9f\\x10\\x72\\xba\\xd1\\x14\\x4d\\xfa\\xa6\\x15\\xa5\\x9e\\x2a\\xed\\xc6\\x62\\xe8\\x3c\\xb1\\xf8\\xe5\\x20\\x96\\xa7\\xee\\x48\\x3b\\xf8\\x73\\xb2\\x5a\\x0c\\x04\\xc1\\x85\\x1a\\x0e\\x87\\x37\\x50\\x63\\xaa\\x1a\\x94\\xfa\\x83\\x5c\\x05\\x26\\x40\\x36\\x6b\\x79\\xf7\\x35\\xd3\\x28\\x61\\x97\\xab\\x32\\xeb\\xdb\\x51\\x23\\xf6\\xb4\\x7a\\xd3\\xf4\\x42\\xc4\\x4c\\x53\\x0a\\x68\\xf8\\x51\\x27\\x59\\xe9\\xcf\\x38\\x6f\\xba\\x07\\xb8\\x06\\x4b\\xc8\\xfe\\x83\\xe2\\x45\\x49\\x5e\\xc4\\x5f\\x89\\x38\\xf8\\x25\\x9d\\xc8\\x01\\x62\\x05\\xf7\\x8d\\x39\\x54\\x44\\x2e\\xc1\\xb4\\x45\\xd8\\x3d\\x95\\xad\\x18\\x05\\xa5\\xe0\\xe8\\xb3\\xd5\\x6b\\x87\\x0a\\x20\\xda\\x18\\xd7\\x4f\\x26\\xf5\\x50\\xa9\\xc7\\x53\\x4a\\x41\\x44\\xdc\\xbc\\x1c\\x3c\\xdb\\xbe\\x47\\x0c\\xc1\\x53\\x90\\x50\\x43\\x08\\x8f\\xac\\xf1\\xd3\\x03\\x55\\x9d\\xe4\\x1e\\x96\\xc0\\xab\\x40\\x9b\\xb3\\x6d\\xcf\\x38\\xcc\\x90\\x38\\xa6\\xa4\\x90\\x8d\\xea\\x82\\xa6\\x53\\x19\\x5c\\x16\\xf2\\x90\\xa7\\xc3\\xac\\x48\\x76\\x36\\xcc\\x5b\\xcb\\x18\\xd1\\x5a\\x14\\xac\\x62\\x4c\\x70\\xb6\\xf6\\x46\\x2b\\xf2\\x49\\xe0\\x00\\xce\\xe9\\x24\\x01\\x8b\\xdf\\x7d\\xde\\x39\\x11\\x4c\\xb4\\xf6\\x52\\xe1\\x22\\xe8\\x74\\x4d\\xa2\\x8b\\x05\\x89\\xe1\\x28\\x4d\\x70\\xd9\\xf1\\x06\\xde\\x16\\xd0\\x73\\x64\\x80\\x80\\xe6\\x43\\x7f\\xf3\\x84\\xe6\\x81\\x77\\xd5\\xcb\\x71\\x8e\\x2c\\xe3\\xf1\\x7b\\xa1\\xe9\\x90\\xae\\x3c\\xe9\\x40\\x66\\x01\\x30\\xe9\\x37\\x50\\xb8\\x2e\\x2f\\xb4\\x1a\\xa3\\x69\\x77\\x45\\x68\\xd7\\xcf\\x28\\x67\\x25\\xe3\\xc5\\x8f\\x63\\xe7\\x3f\\x86\\x97\\xae\\xec\\xc7\\x17\\xc5\\xcf\\x1a\\xf7\\xad\\x74\\xf4\\x46\\x29\\x2c\\x90\\x5d\\x84\\xe2\\x2b\\x23\\xd4\\xe0\\xd2\\x60\\x4b\\xff\\x48\\xfe\\xfc\\x40\\xc6\\x20\\x4b\\x5e\\x34\\xc0\\x42\\x29\\x2e\\x53\\xbe\\xc9\\x36\\x01\\x59\\xa5\\xcd\\x97\\xb2\\xdf\\x57\\x86\\xb8\\xf5\\xa2\\x92\\xc0\\xb3\\x9d\\x14\\xa8\\x70\\xa4\\x58\\x8e\\x67\\xbd\\x12\\xb2\\xc2\\xf7\\xa4\\x40\\x84\\x62\\x85\\x1d\\x2a\\xa7\\x87\\x97\\x1d\\x93\\x15\\x19\\x0f\\x42\\xcc\\x58\\x8a\\xf0\\xd2\\xdc\\xd9\\x1f\\x31\\xbb\\x71\\x5e\\x92\\x50\\xf1\\x19\\x28\\x14\\xf7\\xb8\\xa2\\x1f\\xef\\x45\\x17\\xb0\\xcf\\x8b\\xb8\\xa1\\xa1\\xa5\\xf5\\x00\\xee\\x21\\x9d\\xfb\\x46\\x13\\x2e\\xfe\\x8e\\x90\\xbc\\x49\\x09\\x3a\\x55\\x59\\xf9\\x68\\x1b\\x4f\\xb5\\x9e\\x5b\\xa9\\xef\\x3f\\x05\\xd3\\x4e\\xed\\x03\\x4c\\x14\\xd7\\x7e\\xe9\\x5e\\xbd\\x76\\xff\\xa5\\xaf\\x0b\\xef\\xcb\\xa1\\x8f\\xdf\\x93\\x2a\\xf4\\x85\\x45\\x10\\xb7\\x5d\\xb0\\x0a\\x72\\x57\\xb2\\x34\\x88\\x7d\\x49\\x60\\x7d\\xfd\\x16\\x18\\x0d\\xb5\\x16\\xc7\\xa2\\x0c\\xcf\\xca\\xed\\xa6\\xae\\xdf\\xb6\\xa2\\x37\\x7f\\xbf\\x31\\xe6\\x7b\\x51\\x76\\x55\\xdb\\x73\\xca\\x29\\xe1\\x18\\x62\\x4d\\x60\\x80\"},\n{{0x2b,0xf7,0x4f,0x00,0x4d,0x7d,0x0a,0xf7,0x3a,0x83,0xea,0x20,0x8c,0xc2,0x06,0x72,0x3d,0x18,0x8f,0x4c,0xf6,0x07,0xbc,0xad,0x4b,0x69,0x80,0x26,0x8f,0xf2,0x1f,0xa7,},{0x8f,0xdc,0xd9,0x93,0x52,0x43,0x8b,0xeb,0x52,0xf0,0xd1,0x74,0x2b,0xae,0x71,0x84,0x45,0x12,0xdd,0x06,0x85,0xaa,0xf1,0xc9,0x09,0xe3,0x8f,0xc4,0xb5,0xaa,0xb6,0xcc,},{0x3e,0xb5,0xb3,0x39,0xe1,0x91,0xa3,0xb6,0x16,0x85,0x45,0xda,0x5f,0xb0,0xca,0x9b,0xe2,0x09,0x04,0x39,0x19,0xb9,0xc7,0x0a,0x07,0xb4,0xa7,0xa3,0xbf,0x64,0xb1,0x02,0xf6,0xff,0xd6,0xd2,0xb0,0x25,0x59,0xdc,0x68,0x1e,0xd3,0xb9,0xc8,0x22,0x97,0xb2,0x01,0xdc,0x25,0xc4,0x97,0x38,0x80,0xe1,0x55,0xe1,0x3a,0x29,0x42,0x6e,0xb4,0x0d,},\"\\x89\\x8e\\x43\\x03\\xea\\x5b\\xeb\\xd2\\x00\\xa5\\xf7\\x56\\x2b\\xe5\\xf5\\x03\\x26\\x40\\xa3\\xf5\\xcc\\xfa\\x76\\x42\\x92\\x04\\x5a\\x1a\\x36\\x8d\\x02\\xaa\\x59\\x10\\x77\\xd8\\xf3\\x04\\xf7\\x4d\\xbd\\xfc\\x28\\x07\\x34\\x45\\x4e\\xd8\\xc2\\x72\\x7a\\xff\\x39\\x2c\\x10\\x8c\\x52\\x6e\\x52\\x7e\\x67\\x2c\\x53\\x97\\xb2\\xd7\\x7c\\x01\\xf7\\x74\\x1e\\xf8\\xdc\\xc2\\x51\\x0e\\xe8\\x41\\xb5\\x9d\\xd1\\x0f\\x4e\\x1d\\x3a\\xc5\\x01\\xaf\\x7c\\xbd\\xb8\\x5b\\xa3\\x11\\x29\\xc2\\x62\\xfd\\xe1\\xa0\\xc8\\xbc\\x83\\xd6\\xff\\x94\\x4b\\x6b\\xae\\x3f\\xa7\\xfb\\x62\\x58\\x7c\\x68\\x1d\\x8e\\x34\\x29\\x65\\xc5\\x70\\x5f\\xd1\\xa6\\xab\\x39\\xe5\\xa0\\x77\\x0e\\xe7\\x79\\x8d\\x9f\\xb6\\xc0\\x01\\x8a\\x51\\x4d\\x53\\xaf\\x84\\x8d\\xb6\\x04\\x7c\\xd0\\x2d\\xb3\\x52\\xd5\\x56\\x3b\\x53\\x66\\x23\\x73\\xb9\\x71\\x93\\x5a\\x1a\\xc2\\xb7\\xb6\\x36\\x1d\\xac\\x67\\x48\\x77\\x18\\x13\\xf7\\x74\\x93\\x16\\x69\\x49\\x61\\xb9\\x40\\xff\\x38\\x05\\x81\\x1a\\x49\\xfa\\x27\\xa9\\xba\\x45\\x7a\\xd2\\x88\\x48\\xc6\\x97\\x05\\x0e\\x01\\x88\\xd0\\x77\\x3e\\x17\\xfb\\x52\\x19\\x4e\\x19\\x0a\\x78\\x72\\xa3\\x98\\xf3\\x1c\\x0f\\x0a\\xe0\\x65\\x37\\xa2\\x73\\xff\\xb5\\x0c\\x2c\\x81\\x64\\x45\\xab\\x88\\x28\\x11\\x92\\x2c\\x06\\x21\\x55\\x6c\\x46\\xa3\\xa0\\xec\\x40\\xbf\\xed\\xb4\\x11\\xe9\\x0b\\x6d\\xb1\\xdd\\xd4\\xbb\\xeb\\xb5\\x7d\\x10\\xdf\\x56\\x6a\\x63\\xd7\\x26\\xa3\\x33\\x08\\x51\\x4c\\xe3\\xb4\\x99\\xd5\\xe5\\x26\\xc2\\x2b\\x95\\x6d\\x8b\\x99\\x91\\x3d\\xcb\\x13\\xe4\\x37\\xe9\\x47\\xb6\\x66\\xc4\\x1c\\x54\\xd8\\xb3\\xae\\x23\\x56\\x64\\x7e\\x80\\x17\\xab\\x67\\x83\\x86\\xc9\\x27\\x21\\x9a\\xe7\\xbd\\xdc\\x0d\\x82\\x12\\x65\\xf9\\xdc\\x4f\\xf3\\xf8\\xce\\x5b\\xe6\\x0f\\x8e\\x9d\\xef\\xc5\\xca\\x33\\x50\\x68\\xee\\x29\\xfe\\x83\\x04\\x91\\x7b\\x78\\x87\\x84\\xa2\\x38\\x8a\\x32\\x01\\x92\\xf9\\x32\\x5d\\x0e\\x6c\\xff\\xfe\\xa2\\x1e\\x6e\\xaa\\x29\\xe7\\x70\\x7f\\x63\\xa9\\xea\\x4f\\xbb\\x25\\x58\\xe3\\xd0\\x83\\x5b\\xab\\x1f\\x52\\x36\\x10\\x37\\xae\\x59\\xe5\\x03\\xee\\x96\\xb9\\xd7\\x08\\xa4\\x7a\\x3a\\xe4\\xba\\xd1\\x13\\xe2\\xa4\\x60\\xa2\\x69\\xcc\\xf2\\x5a\\x00\\x03\\xcb\\x3e\\x68\\xa5\\x51\\x86\\x4e\\x59\\x84\\x09\\x14\\x79\\x11\\x26\\xf9\\x54\\x78\\x8b\\x25\\xb5\\xaf\\x5a\\xaf\\x58\\x6e\\xbb\\x87\\xfa\\x5f\\x37\\x7b\\x4d\\x7d\\x7f\\x84\\xc0\\x00\\xdd\\x2c\\xb4\\x40\\xe2\\x14\\xd3\\x8d\\x5e\\xcf\\x70\\xf2\\x0e\\x98\\x81\\x82\\x8e\\xda\\xa1\\xdb\\xec\\x37\\x09\\x3d\\xb9\\x60\\x68\\x6c\\xa1\\x23\\xf1\\xec\\xba\\x63\\x36\\xb3\\x7f\\x46\\xcf\\x76\\x5b\\xe2\\x81\\x4b\\x9e\\x67\\x05\\xbc\\x9d\\x6a\\x49\\x31\\x81\\x18\\xc7\\x52\\x9b\\x37\\xc8\\x4e\\xc8\\x8d\\x58\\xa8\\x45\\x3d\\xcb\\x69\\x2c\\x9a\\x36\\x01\\x6b\\x94\\x8e\\xbe\\x6f\\xb2\\xc1\\xd0\\xad\\xf5\\xf1\\x98\\xee\\x30\\x97\\xa6\\xff\\x0b\\x8e\\xeb\\xba\\xd8\\xb0\\x76\\x93\\x30\\xb1\\x86\\x89\\x51\\x6b\\xc0\\xfe\\x66\\x8b\\x0d\\x05\\xe3\\xa5\\x84\\xfc\\xf8\\x9c\\x49\\xdb\\x50\\x1d\\x61\\xc2\\xde\\xf7\\xed\\x37\\x22\\x07\\x01\\x93\\xa5\\xb6\\x83\\xc5\\x08\\x7e\\xf2\\x74\\xce\\x6a\\x19\\x3d\\xd4\\xa3\\x03\\x53\\x6c\\x67\\x93\\x4b\\x46\\x60\\xa8\\x41\\xee\\x1b\\x44\\x6a\\x68\\x92\\xb1\\x4d\\x0b\\x0a\\xa3\\xe9\\x8f\\xdf\\xfd\\x43\\xc7\\x97\\xad\\xd3\\x65\\x83\\xf7\\x4c\\x94\\xd0\\xe2\\xd6\\x8e\\x2d\\xe8\\x18\\xd9\\xaf\\x20\\x05\\x98\\xf0\\xb2\\xbe\\xae\\x16\\x9c\\x8d\\xfb\\xc4\\xd3\\x97\\xe6\\xd1\\xce\\xb6\\xda\\xa6\\xc9\\xf6\\xbb\\xf4\\xf8\\x31\\x1b\\xa2\\x6f\\xfb\\x19\\x4d\\x44\\x21\\x6c\\x51\\x30\\x52\\x67\\x07\\x4e\\x85\\x6a\\x1d\\x6e\\x92\\x27\\x80\\xf4\\x79\\x8e\\x2f\\x22\\x02\\x23\\xff\\xf1\\xdc\\x37\\x0c\\x8e\\x34\\x51\\x4a\\xba\\x42\\xdf\\x51\"},\n{{0xf5,0xf7,0xd5,0xb7,0x3c,0x5a,0x65,0x30,0x1b,0x5b,0x4c,0x67,0x10,0xed,0x12,0xc1,0x6e,0x79,0x03,0x17,0x7d,0xb7,0x92,0xca,0x71,0x5e,0x23,0x38,0x9d,0x05,0xd8,0x3e,},{0x7c,0x47,0x62,0xe9,0x79,0xf0,0xc7,0xe2,0x07,0xbe,0x18,0x43,0xe2,0x66,0x6a,0xca,0x27,0xea,0x89,0xbf,0xf5,0xb6,0x1d,0x57,0x3c,0x98,0x5f,0xc7,0x02,0x5e,0x1e,0x28,},{0x58,0xfb,0x39,0x2f,0x82,0xd5,0xe5,0x2f,0xf0,0x72,0xcc,0x77,0xef,0xe0,0x48,0xf2,0x23,0x52,0x50,0xc7,0x11,0x25,0xee,0x82,0x1c,0x5f,0x3b,0x39,0x3b,0xcf,0x2f,0xa4,0x6b,0xe4,0xc5,0xd8,0xca,0xf1,0x3c,0xb5,0x19,0xef,0xe0,0xc2,0xfa,0xd9,0xee,0x23,0x1a,0xe9,0xb6,0xfd,0x1f,0xd5,0x09,0xc9,0x8c,0x69,0xc2,0xd3,0x6c,0x75,0x3e,0x0e,},\"\\x7c\\x93\\x18\\xd5\\x6e\\x63\\xf1\\x65\\x35\\x43\\x6f\\xa4\\x5a\\xfe\\x27\\x8e\\x74\\xe6\\x18\\x81\\xbb\\x46\\x89\\x97\\xd0\\x41\\x8b\\xc7\\x20\\xb6\\x30\\xda\\xdb\\x81\\x28\\xb4\\xb6\\x5c\\xa6\\xe9\\x21\\xe5\\x01\\x81\\x3d\\xf9\\xfe\\x03\\xb4\\xef\\x0a\\xae\\x80\\x35\\xdd\\x08\\xc5\\xf8\\x20\\xce\\x5d\\xf1\\x2e\\xe1\\x18\\xd9\\xc3\\x6d\\x3b\\x15\\x1a\\x52\\xc3\\xf9\\x6a\\xe1\\xca\\x4c\\x82\\xfd\\x19\\xda\\x66\\x9d\\xdb\\xa9\\x4f\\xeb\\xf8\\xea\\xc8\\xc4\\x2b\\x44\\x7b\\xab\\xc8\\xa6\\x0b\\x36\\xe8\\x03\\x62\\x4f\\x7d\\x20\\x47\\xbd\\x8d\\x8a\\x15\\x36\\x87\\xf1\\x0d\\xc1\\xca\\x82\\x10\\x0b\\x7c\\x87\\xd3\\x23\\x70\\xec\\x8f\\x26\\x71\\xed\\x7d\\x06\\x7c\\xc8\\x05\\x87\\xca\\xb8\\xdb\\x3a\\x71\\xce\\x5e\\x40\\x63\\x27\\xf7\\x63\\xec\\x1b\\x3c\\x16\\x67\\x70\\xa7\\x55\\x36\\x63\\x0c\\x81\\x5f\\xd8\\x26\\x75\\x82\\xd1\\xb5\\x05\\x1f\\x0f\\x82\\x1c\\x02\\x15\\x0b\\x2e\\xef\\x34\\x9b\\x50\\x59\\x03\\x14\\xaa\\x25\\x70\\x79\\x3f\\xa6\\x4a\\x76\\xed\\x2e\\xd8\\x3d\\x2b\\xa1\\xf9\\xb9\\xf1\\x16\\x31\\x54\\x61\\x2b\\x49\\xa6\\x4a\\xd8\\xd5\\x57\\x3c\\x25\\xb1\\xcd\\x37\\xc4\\x1a\\x44\\xe3\\xdf\\x78\\xf1\\x05\\x3d\\x90\\xb0\\x68\\xf0\\xd3\\x7a\\xe0\\x0c\\x4a\\x32\\xb1\\xa3\\xff\\x87\\x4c\\x41\\xda\\x4a\\x70\\x43\\x39\\x2f\\x18\\xef\\xe5\\x51\\x8d\\x76\\xe8\\x8b\\x41\\xce\\xd6\\x9e\\x6f\\x4c\\x01\\x4f\\x06\\xeb\\xc5\\x14\\x6e\\x61\\xe8\\x2f\\xae\\x1c\\x49\\xc3\\x7c\\x39\\x4f\\xea\\x34\\x19\\x9a\\xb8\\x6c\\x11\\xa4\\x46\\x7a\\x37\\x4e\\x40\\x25\\x5a\\x05\\xd4\\x26\\x97\\x14\\x30\\xd5\\x6c\\xdb\\xa2\\x5a\\x21\\xad\\x77\\x9c\\xc7\\xf6\\x2d\\x22\\xcd\\x87\\xb6\\x0f\\x08\\x91\\xbd\\x85\\x6a\\x51\\x7e\\x14\\xb7\\x2a\\x9a\\xc7\\x67\\x2e\\x4e\\x8f\\xb3\\x74\\xa9\\x75\\x8a\\xb0\\xc4\\xe5\\x96\\x4a\\xae\\x03\\x22\\x89\\x73\\xf1\\x73\\xa5\\xd4\\x2a\\xef\\x9d\\xb3\\x37\\x36\\xc3\\xe1\\x8d\\x8e\\xec\\x20\\x4a\\x1a\\x17\\xb9\\xd0\\x45\\x93\\xde\\xa4\\xd8\\x04\\xcb\\xc8\\x1b\\x9a\\xc5\\x45\\x80\\x50\\x49\\x55\\x39\\x99\\x9a\\x99\\x85\\x48\\x7e\\x7c\\xa1\\x1c\\x37\\x58\\x2e\\xf8\\x5c\\x84\\x1e\\x8f\\x06\\x5e\\xa9\\x8f\\xdd\\x6b\\x1c\\x60\\xde\\xa1\\xec\\x28\\x83\\x52\\x15\\x68\\x85\\x6a\\x6e\\xbb\\x27\\x49\\xf2\\x07\\x2e\\xb4\\x34\\x48\\xbe\\x07\\x05\\xed\\x47\\x7c\\xf4\\xb2\\x00\\x48\\x65\\x21\\x7d\\xe5\\xfa\\xdb\\xe2\\xa0\\xf9\\xd6\\xb8\\x4b\\x3f\\xe7\\xf7\\xbf\\x6c\\x77\\x53\\x74\\x96\\x24\\x6e\\xc7\\x96\\xb8\\xef\\x2c\\x04\\xf6\\x8a\\xb5\\xb1\\x4f\\xce\\x0c\\x6d\\x28\\x7b\\x83\\x62\\x27\\xd9\\xf0\\x8f\\xa0\\xee\\x19\\x72\\x2f\\x67\\x98\\xa5\\xd8\\x28\\x0d\\x10\\x7c\\xfc\\x1b\\xd5\\x92\\xd9\\xdd\\xc7\\x24\\xea\\x86\\xfc\\x39\\xdc\\x94\\xa3\\x94\\x01\\x9e\\x3a\\x3d\\xe9\\xe0\\xd1\\xc7\\x35\\xe8\\x62\\xde\\x2b\\xb9\\x52\\x5b\\x5f\\xb4\\xbd\\x12\\x12\\x12\\xbf\\xaf\\xf9\\xff\\x58\\x6a\\xc3\\xc7\\x5c\\x5a\\xce\\x74\\x6d\\x9c\\xa3\\x07\\xf7\\x95\\xff\\x26\\x97\\xf2\\xb4\\x1a\\x63\\x46\\xed\\x23\\x39\\x7e\\xb3\\x88\\x98\\x69\\x1e\\x6f\\x66\\x84\\x16\\x37\\xd0\\xab\\x0d\\x96\\x83\\x09\\xe0\\x19\\x40\\x02\\x30\\x90\\x15\\x41\\x6e\\x74\\x47\\x2f\\xe3\\x24\\x25\\xd4\\x5f\\x07\\xc7\\x71\\x19\\x18\\xb1\\xe5\\x79\\x0f\\x57\\x2c\\xe4\\x44\\x10\\x42\\xd4\\x26\\x03\\x37\\x92\\x29\\x7b\\x5f\\x81\\xe0\\x80\\x9b\\xd9\\x69\\x1f\\x0a\\x50\\x5e\\x32\\x59\\xfc\\x03\\xc9\\xff\\x10\\x7e\\xb9\\xb4\\x87\\x95\\xf4\\x9f\\xb0\\x9c\\x1b\\xab\\x56\\x59\\xd3\\x9f\\xfe\\xcb\\xdc\\xc4\\x03\\xe3\\x80\\x3d\\xc0\\x12\\x43\\x8c\\x2f\\xb3\\x6f\\x68\\x30\\x15\\xc5\\xdf\\x04\\x82\\xcb\\x7d\\x7f\\xc5\\x75\\x73\\x64\\xa0\\xa3\\xc1\\x0d\\x0e\\x12\\x59\\xc0\\x1f\\xcc\\x4d\\xd5\\x49\\x4b\\x52\\x90\\xa6\\x94\\xae\\xa3\\xf6\\xfa\\xe5\\x47\\xac\\x57\\x6f\"},\n{{0x43,0xd4,0xbe,0x6d,0xe9,0xcb,0x00,0x89,0x8e,0x99,0xdd,0xcc,0x2e,0x15,0x30,0x11,0x0f,0xa2,0xcb,0xc4,0x37,0x6c,0x48,0x5e,0x9c,0xa5,0x7f,0xd6,0x55,0x86,0xd8,0xa3,},{0x36,0x32,0xad,0x38,0x9b,0xe2,0xfa,0xb3,0xfb,0xa0,0xd8,0x04,0xbf,0x63,0x45,0xcd,0x32,0x2e,0xdd,0xd6,0xa7,0x5d,0x8c,0x37,0xfd,0x4b,0x5b,0xa1,0xc9,0xc2,0x5e,0x8f,},{0x86,0xae,0x93,0x25,0xf8,0x0b,0x98,0x86,0xc8,0x38,0x1f,0x96,0xa1,0x8c,0x21,0x20,0xe6,0xdb,0x01,0x6a,0x0d,0x6c,0xa2,0x82,0xed,0x93,0xba,0x9b,0x61,0xca,0xec,0x02,0xde,0x88,0xef,0xca,0x8b,0x8e,0x91,0x6a,0x4b,0x16,0xa5,0x85,0x25,0xa2,0xf6,0x8d,0x21,0xe5,0xfb,0xe6,0x7d,0xb4,0xc4,0xd6,0x20,0x95,0x95,0xc4,0xab,0xc3,0x2b,0x09,},\"\\xd9\\xd5\\x5d\\xab\\x0f\\xa6\\xda\\x76\\xb6\\x8e\\x84\\x1c\\x24\\xd9\\x71\\xba\\xc1\\xf7\\x9a\\xf5\\x13\\xd8\\x34\\xe4\\x26\\xa5\\xd0\\x81\\x14\\xce\\x8b\\x54\\xce\\x8b\\x7a\\xfe\\x01\\x6b\\x0f\\xad\\x03\\xee\\x74\\x50\\xc6\\xc3\\x09\\x71\\x73\\x68\\x1a\\x4b\\x2e\\xb9\\xf9\\xc1\\x79\\xa8\\x8e\\x7c\\xc3\\x68\\x13\\xf2\\xf5\\xd1\\x5f\\x79\\x98\\xaf\\xa9\\xfd\\x4e\\x54\\x6c\\x73\\xbb\\x42\\xe7\\xf9\\x52\\x2b\\xe6\\xaf\\xab\\xca\\x8c\\x7b\\x64\\xfe\\xd0\\xe2\\x92\\xe4\\x37\\x5f\\x3e\\x1e\\x5f\\xd9\\xfc\\xb5\\x39\\xf4\\xe5\\xe5\\x43\\xfb\\x6a\\x11\\xa0\\xdf\\x32\\x1e\\x70\\x08\\x4a\\xaa\\xbb\\x70\\xa9\\x95\\x0c\\xee\\xe3\\xd8\\x79\\xc3\\x86\\xef\\xca\\x1e\\x59\\xc3\\xcb\\x7c\\x45\\xb5\\x60\\x09\\x5e\\x7a\\xf0\\x0f\\xf5\\x2f\\x8a\\x1a\\xaa\\x9c\\xcf\\x09\\x2f\\x0b\\xb8\\x06\\xd9\\x76\\x10\\x74\\x2a\\xc5\\x82\\xa3\\xab\\xbe\\xdd\\xf3\\x9f\\x49\\xd2\\x29\\xd3\\x2a\\x11\\x86\\xd0\\x21\\x51\\x8d\\x74\\x72\\x8d\\x13\\xd9\\x62\\x63\\x5d\\x63\\xba\\xa6\\x74\\x3b\\x12\\x6b\\xf4\\x58\\xfa\\x2a\\xc7\\x56\\xfb\\xf8\\x80\\x96\\xc8\\xd3\\x34\\x0c\\x62\\x23\\x90\\x53\\x4a\\x74\\x3f\\x18\\x64\\xd5\\x4d\\xea\\xb5\\xe5\\x53\\x63\\x72\\xce\\x5a\\xc9\\x37\\x62\\x28\\x74\\x14\\xea\\xe1\\x58\\xa7\\x6b\\xf8\\x1d\\xf5\\x41\\x7c\\xf4\\xc0\\x47\\xbe\\x3a\\xc1\\x47\\x5c\\x51\\x7e\\xbd\\x3a\\xc1\\xd1\\xd1\\xbd\\xda\\x11\\xb3\\xf9\\x9c\\x18\\x17\\x3e\\x03\\x0a\\xcd\\x51\\xd2\\xb5\\xcf\\x79\\x51\\x65\\x09\\x41\\x54\\x05\\x07\\x75\\x11\\xbd\\xd9\\xcb\\xe1\\x7d\\x04\\xf4\\x78\\x05\\xe9\\x8d\\x0d\\x14\\x5e\\x60\\xa5\\xd0\\xe0\\xf4\\x53\\xcd\\x9b\\x5c\\x1a\\x24\\xf1\\x2b\\x75\\xe8\\xcc\\x34\\xd5\\xe0\\x06\\x91\\xff\\xac\\xbf\\xf7\\x88\\xfe\\xa8\\x34\\xd9\\xd7\\x79\\xc1\\xe6\\x10\\x29\\x4d\\xce\\x19\\x17\\x0d\\x28\\x16\\x0c\\xff\\x90\\x9b\\xea\\x5a\\x0a\\xa7\\x49\\x40\\x17\\x40\\xea\\x3a\\xf5\\x1e\\x48\\xb2\\x7c\\x2b\\x09\\xf0\\x25\\x44\\x42\\x76\\xc1\\x88\\xc0\\x67\\x1a\\x6d\\xa9\\x4b\\x43\\xd1\\xe5\\x25\\xe6\\xa4\\xa8\\xa1\\xa7\\x3d\\xfe\\xdf\\x12\\x40\\x18\\x46\\xba\\x43\\x06\\x8a\\x04\\x09\\x2b\\x12\\x91\\x22\\x70\\xd2\\xb6\\x0d\\xf6\\x09\\x97\\x79\\x75\\x6b\\x8b\\xbb\\x49\\xec\\xe8\\x2d\\x55\\xf0\\xf8\\xdb\\x1b\\x80\\xfb\\x4b\\x59\\xbb\\xa8\\x60\\xbd\\x18\\xc7\\x5d\\x6c\\x83\\x4d\\x69\\x44\\x2a\\xe0\\x31\\x4c\\xf2\\x39\\x9f\\x53\\x92\\xa3\\xc6\\x72\\x8c\\x63\\xe5\\xc5\\x16\\xc4\\x22\\x2a\\xac\\x60\\xf9\\x16\\xdd\\x63\\xd1\\xd0\\x51\\x7e\\x8e\\xb1\\x0b\\xd0\\xe1\\x5e\\xb9\\x06\\x14\\xde\\xb2\\x96\\x40\\x3a\\xd1\\x5b\\x8c\\x12\\xb9\\xe9\\x71\\xef\\x2f\\x01\\xe5\\x9f\\xc3\\x5d\\x90\\xc5\\x5a\\x8e\\x20\\xe9\\x43\\x7d\\xd4\\x34\\xb2\\x6d\\x5c\\x2c\\x6e\\xc2\\xd5\\x3a\\xce\\xc1\\x7e\\x81\\xe4\\x78\\x31\\xdc\\x2d\\xe8\\x21\\x83\\xd7\\x13\\xb5\\x9a\\x4d\\x1f\\x46\\x96\\x9d\\xdc\\xdd\\xaf\\x27\\xf4\\x4e\\x5a\\x31\\x1a\\xaa\\xc3\\x9c\\x3d\\x5a\\x97\\xbc\\x90\\xca\\xd7\\x12\\xf4\\x6f\\x85\\xe6\\xc8\\xfb\\xf5\\xd5\\x8d\\x8b\\xc3\\xec\\x27\\xd3\\x10\\xa9\\xea\\xf2\\xc3\\x69\\xcb\\x00\\x64\\x97\\x70\\x39\\x0a\\x3f\\x98\\x8f\\x36\\x2e\\xfc\\x15\\x5f\\x56\\xa1\\x46\\xa6\\x26\\x50\\x54\\x7e\\x91\\x53\\x25\\x07\\x01\\xee\\xad\\x1b\\xd0\\x1c\\x89\\x46\\x22\\x72\\xdf\\xaf\\x0a\\x43\\x1a\\xf4\\xbd\\x7c\\x3d\\xb4\\x51\\xad\\xa6\\x03\\x23\\x3f\\xda\\xd3\\xaa\\x89\\x99\\xaa\\x21\\xe2\\xd3\\xa4\\x3b\\x0b\\x56\\xfc\\x6a\\x91\\x24\\xd3\\x35\\x98\\xb3\\x73\\x7f\\x4e\\x5c\\xb2\\x58\\xbe\\xda\\x75\\x6a\\xd2\\xe1\\x7d\\x06\\x91\\xd1\\x5d\\x41\\x6b\\xb7\\xcb\\x07\\xec\\x8d\\x8c\\x7a\\xf5\\xde\\x80\\xe5\\xb9\\x39\\x4e\\x32\\x0c\\x4c\\x6e\\x43\\xef\\xaa\\xe6\\x84\\xad\\x00\\xf6\\xdd\\x20\\xa8\\x75\\x0e\\x95\\x9c\\x2f\\x04\\x20\\x6f\\xc0\\x23\\xaa\\x19\\x0c\"},\n{{0x7d,0x01,0x0d,0x76,0x0f,0x24,0xe5,0xa2,0xde,0x34,0x08,0x9c,0x9f,0xdb,0x19,0xc3,0x3b,0x15,0x5b,0x0a,0x37,0xca,0x45,0x5a,0x5e,0x5b,0x1d,0xae,0x7a,0x07,0x31,0x76,},{0x4c,0x87,0x7b,0x3c,0x49,0x71,0xfb,0xb5,0x51,0x16,0x6e,0x21,0x4d,0x1c,0x76,0x24,0xc5,0x22,0x77,0x90,0x3c,0x59,0xa5,0x62,0xa8,0x0b,0x91,0xa8,0x54,0x83,0xfb,0x47,},{0x55,0x70,0x61,0x38,0x79,0xae,0x22,0x77,0x8b,0xd5,0x4f,0x14,0xfb,0x6e,0x8c,0x02,0x56,0xa7,0x1f,0x3d,0x79,0xc3,0xe5,0xcd,0x8e,0x41,0xae,0xa8,0xcf,0x77,0x3e,0x24,0xd2,0x9f,0x1f,0x1b,0x24,0xf8,0xc8,0x0d,0x29,0x49,0xe8,0x20,0x14,0x65,0xdb,0xde,0x89,0x40,0xb1,0xfa,0xb6,0x48,0x3b,0x08,0x5d,0x41,0x8e,0x25,0x10,0x14,0x20,0x0c,},\"\\x86\\xe2\\x11\\x55\\x72\\xbf\\x4c\\x01\\x3e\\x6b\\x4b\\x04\\xd0\\xb0\\x3e\\x60\\x6e\\xe7\\x0d\\x92\\x9c\\xb8\\xec\\x36\\xf4\\xe2\\xf3\\x55\\xdb\\x3b\\x5e\\x15\\x73\\xd6\\x58\\xd1\\x7b\\xb1\\xa3\\x10\\xc1\\x69\\x89\\xa1\\x6b\\x95\\x58\\x92\\x2e\\xe4\\x93\\xf3\\x59\\x04\\x21\\x03\\xc4\\xdc\\x1b\\x40\\xdf\\xf7\\x70\\x99\\x01\\xfd\\x58\\x30\\x13\\x3f\\x42\\xc4\\x65\\x1e\\xca\\x00\\x8b\\x49\\x9e\\xe4\\xf8\\x4c\\xd4\\xec\\x1e\\xda\\xa7\\x82\\x56\\xed\\xb6\\x2f\\x24\\x02\\x1a\\x00\\x76\\x25\\x69\\x19\\xe4\\xe2\\xce\\x0a\\x5a\\x20\\xf9\\x21\\xc2\\x78\\xcc\\x29\\x91\\x59\\x64\\x4b\\x5e\\x3a\\x3b\\xbd\\x08\\x9d\\xcb\\xbe\\xba\\xd3\\x76\\x6a\\xea\\x77\\xe9\\xf0\\x8e\\xe5\\xf7\\xd4\\xc1\\x9d\\x81\\x70\\xbc\\x3d\\xe1\\xba\\x77\\x9a\\x76\\x99\\x14\\xf9\\x65\\xdb\\xde\\x2b\\x61\\xba\\xd2\\x14\\xc5\\x08\\x18\\x60\\x41\\xf7\\x6c\\x25\\xbe\\x95\\x76\\x56\\xf5\\xcf\\xb7\\x33\\x4e\\xb8\\x38\\xa3\\xcf\\xbc\\x55\\xcf\\xba\\xb6\\x7a\\xdf\\x15\\x52\\x61\\x99\\x41\\xb8\\x35\\xcd\\x3e\\x34\\x10\\x3b\\x18\\xb4\\x91\\x31\\xe8\\x20\\x96\\xf0\\x5f\\x57\\x0b\\x89\\x98\\x04\\xba\\xb8\\xb6\\xcb\\xad\\xdb\\xbc\\x02\\xf9\\xf3\\xb5\\x59\\x73\\x6d\\x99\\xca\\x7b\\x02\\xd3\\x26\\x8f\\xa2\\x73\\x99\\x6f\\xcf\\x05\\x71\\x97\\x7d\\x1c\\xc3\\x00\\x8c\\x4e\\xf8\\x48\\x97\\x0e\\xe3\\x50\\xb1\\x58\\xc4\\x7e\\xc2\\x77\\xad\\xd4\\x74\\x2f\\xa2\\xbc\\xbe\\xa9\\xbd\\x55\\x49\\xc7\\xbc\\xa0\\x38\\x02\\x0e\\xce\\x68\\xf1\\x88\\xc1\\xea\\x3a\\x62\\xdd\\x9a\\x07\\x3d\\x4c\\x13\\x8c\\xa8\\xa9\\xac\\x04\\x08\\xdc\\xfd\\x46\\xe3\\x6b\\xdf\\xf7\\x39\\x88\\xa5\\x8b\\x96\\x17\\xca\\xa0\\x8b\\xd4\\x1b\\xf3\\xe8\\x12\\xe7\\x82\\x4f\\x0f\\x7e\\x81\\x46\\xa4\\x44\\xf3\\x6b\\xf5\\x3a\\x1c\\xd8\\x92\\x03\\x9c\\xcd\\x33\\x5f\\x5a\\x2e\\x79\\x74\\x5e\\xac\\x96\\x14\\x8c\\x2a\\x29\\x99\\x47\\xf1\\xb2\\xe3\\x28\\xa3\\x78\\x9b\\xf1\\x3c\\x6d\\x73\\x50\\x6f\\x3b\\xdc\\x68\\xea\\x48\\xab\\xf0\\x02\\x27\\x0f\\xe4\\xee\\x9e\\xf9\\xed\\x6b\\x10\\xc2\\xfb\\xb4\\xff\\x12\\x75\\xb9\\xd7\\xdd\\x35\\xd8\\xa5\\x2e\\x37\\x17\\x58\\x57\\x4c\\xb4\\x66\\xc5\\x7b\\x5a\\xbc\\x24\\x29\\x76\\xbe\\xfc\\x8d\\x98\\xa0\\x13\\x1b\\x9b\\xb8\\x46\\xb2\\x19\\xe4\\x66\\x91\\x86\\xa8\\x3c\\x05\\x6c\\xd8\\x08\\x06\\x61\\xde\\x16\\xb5\\x1c\\xe5\\x76\\x7b\\x22\\xe9\\xa9\\x32\\x42\\xbf\\x8d\\x32\\x05\\xc6\\x6a\\x67\\x3c\\xe7\\x83\\xd1\\xc0\\xd3\\x7b\\x63\\x00\\xfb\\xf0\\xd6\\x12\\x79\\x40\\xf8\\x8f\\x18\\x19\\xc4\\x50\\xdc\\xc9\\x05\\x43\\xed\\x79\\x4f\\x1f\\xd4\\x4e\\x65\\x39\\xfe\\xba\\xf1\\x9a\\x4c\\xc9\\x88\\x70\\x01\\x4d\\x7c\\xca\\xd7\\x4d\\x18\\x76\\xa1\\x23\\xec\\xd1\\x45\\x51\\x6c\\x74\\x3b\\x4b\\xba\\x62\\xd8\\x21\\xca\\x9a\\x79\\x51\\xe0\\xdf\\xb2\\x3f\\x38\\xd9\\xe3\\xa3\\x65\\xfd\\x83\\x22\\xf2\\xee\\x47\\x99\\xe9\\xff\\x11\\xe1\\xc5\\xc3\\x0b\\x55\\xa3\\x55\\xc8\\xa5\\xde\\xea\\x81\\xa5\\x45\\xe3\\x47\\x05\\xab\\x56\\xd1\\x7b\\x1f\\xa0\\x6e\\xd7\\x64\\x15\\x55\\x67\\x02\\xf3\\x64\\x80\\x82\\x46\\xf8\\x63\\xc3\\x19\\xf7\\x5c\\xdf\\x6b\\xd7\\x48\\x43\\x8d\\x1a\\x2e\\xaf\\x42\\x06\\xc5\\x60\\xbf\\xaf\\xc2\\x35\\x67\\x9a\\xd6\\x04\\x9c\\x1a\\x01\\x52\\x6f\\xcb\\x9a\\x3c\\xe1\\xb1\\xd3\\x9b\\xe4\\xdf\\x18\\xb1\\x5f\\xa0\\xea\\x55\\x27\\x2b\\x17\\xeb\\xde\\xdf\\x6c\\x30\\x49\\x8a\\x8a\\x14\\xf2\\x04\\x2b\\xe1\\xc2\\xcd\\xb0\\x9e\\x9e\\xf3\\x84\\x6d\\x66\\x59\\xa9\\xf6\\xd6\\x73\\xdf\\x9a\\xfb\\x7e\\xde\\xd0\\x4b\\x79\\x3d\\x97\\x31\\xf0\\xac\\xcc\\x41\\x46\\x8d\\xc1\\xf3\\x23\\x6c\\x99\\xac\\xad\\xee\\x62\\x39\\xc3\\x61\\xb8\\xbd\\x7e\\x2d\\x0c\\xfe\\x8b\\xb7\\xc0\\x66\\x87\\xe0\\x8e\\x76\\xb7\\x1a\\xd5\\x7a\\x03\\x61\\x79\\xf2\\x91\\xd0\\x96\\xae\\x2f\\xa0\\x81\\x8e\\xf4\\xbf\\x48\\x66\"},\n{{0xaa,0xaa,0xbb,0x7c,0xe4,0xff,0xfe,0x4d,0xc3,0x57,0x47,0xba,0xea,0x2b,0xc5,0xf0,0x50,0xbe,0xf0,0x6e,0xe0,0xc1,0xfd,0x63,0x2a,0x06,0x7f,0xec,0xe1,0xef,0x4f,0xb5,},{0x82,0x0a,0x24,0x42,0xd5,0xf4,0x5f,0x3c,0x79,0x14,0x78,0xe0,0x98,0xfb,0x3b,0x06,0x8d,0xa5,0x2e,0xc4,0xe8,0xda,0xde,0xc8,0x50,0x65,0xc3,0x56,0x59,0xf4,0x37,0xe0,},{0x05,0x0a,0xe8,0xae,0xce,0xec,0x96,0x27,0xb8,0x01,0x37,0x35,0x7a,0x22,0x96,0x2a,0xc8,0xb4,0x50,0x48,0x66,0x17,0x08,0xd3,0x94,0xd0,0xa5,0x1a,0xad,0xc3,0x81,0xfe,0x85,0x35,0x02,0x3d,0x6e,0x1b,0xda,0x0e,0x72,0xb3,0x49,0xb5,0x0b,0x26,0xda,0x7c,0x3a,0x30,0x85,0xe8,0x1e,0x9d,0xd6,0xcf,0x12,0x78,0x68,0xfc,0x5b,0xae,0xab,0x01,},\"\\xf9\\xd2\\x85\\x97\\xa3\\xe2\\xb6\\x4b\\xa3\\x27\\xac\\x5c\\xd2\\x9f\\x08\\x1e\\x74\\xbf\\x46\\x1b\\x2e\\xb2\\xd3\\xcf\\xd9\\xd5\\xe9\\x21\\x58\\xd2\\x1d\\x1d\\x2a\\x47\\xab\\x50\\x98\\x1c\\xb1\\x9f\\xe3\\xf8\\xc6\\xfe\\x48\\x82\\x49\\xb1\\xc4\\x9f\\xb8\\x97\\xa0\\xfe\\x21\\xab\\x54\\x04\\x41\\x4f\\xd9\\x14\\x87\\x5c\\x22\\x0f\\x1c\\xbc\\x12\\xf5\\xc3\\x8c\\xfb\\xa7\\x9f\\x7a\\xc3\\x03\\xa5\\x23\\x1a\\x37\\x2b\\x02\\xfa\\xd6\\xc8\\x46\\x2f\\x8c\\xc4\\x9f\\x0f\\x64\\x96\\x5b\\x65\\x1d\\xcc\\xef\\x0b\\xb9\\x60\\x82\\x15\\x09\\x08\\x49\\x17\\x7b\\xe4\\x7b\\x2d\\x30\\x72\\x94\\x4d\\x36\\xe8\\x56\\xda\\x18\\x5c\\x7b\\x3a\\x68\\x9f\\x7e\\xde\\xf9\\x88\\x33\\x8e\\x09\\x63\\xed\\x31\\xa6\\xb0\\xa8\\x0d\\x5c\\xb0\\xb1\\xcc\\xcf\\x6f\\x39\\x48\\x37\\xaa\\x6f\\x8b\\x2f\\x3d\\xa5\\xef\\xbd\\xf4\\xd3\\x60\\xd4\\xbf\\x4d\\xd7\\x08\\xce\\x64\\x45\\x58\\x7d\\x94\\x2b\\x79\\x76\\x1c\\xe9\\x51\\xb1\\xbb\\x4d\\x90\\x50\\x70\\x36\\x18\\xa6\\xd9\\x30\\xa8\\x0c\\x69\\x57\\x6f\\xc4\\xaf\\x30\\x6a\\x2a\\x56\\xdb\\xd8\\x84\\xa0\\x5a\\x1e\\x4e\\x9f\\x31\\x36\\xcd\\x0b\\x55\\xae\\x47\\x4b\\xb5\\xd3\\xd0\\xfb\\xc9\\xb0\\x33\\x9c\\xec\\x34\\x4f\\xdd\\x08\\x5c\\x19\\x28\\x10\\x14\\x81\\xc6\\x87\\x94\\xf5\\xc8\\x90\\x13\\x71\\x08\\xce\\xa7\\x91\\xd2\\x1f\\x81\\x68\\x3d\\x3e\\x1a\\x9e\\xec\\x66\\xac\\xe5\\xc0\\x14\\xd8\\x9e\\x69\\x80\\x8e\\x5f\\xa8\\x3d\\x38\\x12\\xee\\x68\\x0f\\x5a\\x99\\x71\\x68\\x1b\\x8a\\xdc\\xd4\\xa1\\x6e\\x9a\\x4c\\x16\\x5b\\x5e\\xf9\\x93\\x2c\\x5e\\xd8\\x25\\x23\\x7f\\xd5\\x03\\x7b\\xcb\\xef\\xe4\\xcb\\x11\\x56\\x4f\\xa7\\x07\\xc8\\xa9\\x32\\x90\\x75\\x14\\x14\\x89\\x1b\\x1e\\xdd\\x33\\x13\\xc6\\x5f\\x8b\\x91\\xc2\\xe9\\x25\\xa3\\xc1\\x2a\\x9d\\x3a\\xa4\\x5f\\xd5\\xa6\\x67\\xb7\\x83\\x93\\xc3\\xe3\\x9d\\xf8\\x8a\\x8f\\x0d\\x11\\x48\\xb5\\x31\\x1e\\x3d\\x87\\xc4\\xa9\\x2e\\x0a\\x3f\\xb9\\x15\\xbc\\x90\\xd5\\x55\\x8d\\x05\\xb4\\x75\\xa8\\x83\\x47\\x78\\xaa\\x94\\x3e\\xa3\\x9b\\x8e\\xaa\\x95\\xad\\x18\\x32\\xe5\\x91\\x6e\\xa3\\x10\\x2d\\x7d\\xe0\\xb8\\x36\\xcd\\xe8\\xf3\\x75\\x9d\\xbb\\x3b\\x9d\\x56\\xea\\x81\\x7b\\x3e\\x49\\xc9\\x83\\x21\\x02\\x77\\xc2\\xc7\\xc5\\xb0\\xdb\\x18\\x74\\x22\\x53\\x2f\\xca\\x98\\xa2\\x8b\\x3b\\x65\\x9c\\x6b\\x81\\x5a\\xc1\\x26\\xfa\\xdb\\xe2\\xf4\\x00\\xc7\\x3e\\x9d\\x2d\\xed\\xcb\\xbd\\x2d\\x3a\\x36\\x5f\\xfa\\xd7\\xe6\\x66\\xc8\\x96\\xe3\\x1e\\x61\\xb3\\x84\\xed\\x3a\\x9f\\xcf\\x12\\x90\\x53\\x8d\\xf1\\x1b\\x94\\x74\\xc6\\x28\\x1c\\xc5\\x92\\xc7\\x1c\\x88\\x08\\x86\\x8b\\x42\\x92\\xc1\\x7e\\xce\\x6b\\x3e\\xdf\\x5e\\x35\\x42\\xa7\\x0b\\x91\\x15\\x93\\xe9\\x3f\\x35\\xec\\xd9\\x72\\x9b\\xd8\\x88\\x0a\\x24\\xea\\xf4\\x1f\\xbc\\x65\\x74\\xdf\\xe1\\x67\\xec\\x2d\\x0e\\x7a\\xb3\\xdf\\x5e\\xc3\\x4b\\x8b\\x55\\xd5\\x48\\xab\\x93\\x73\\x8a\\x2e\\xea\\xf2\\x1c\\x88\\x4c\\x5c\\x85\\x51\\xdb\\x2e\\xdf\\x2b\\x04\\x9f\\x1a\\x2a\\x84\\xfa\\x72\\xac\\x89\\x78\\xa4\\xc2\\x78\\x09\\xf2\\x09\\xc1\\xb2\\x19\\x5a\\xff\\x50\\x4f\\x69\\x98\\x56\\xcc\\x4f\\x22\\xd4\\x4e\\xbd\\xd0\\xfe\\x50\\x37\\x44\\x68\\xd0\\xb1\\x79\\x2e\\x57\\x4b\\x51\\x10\\xa1\\xf4\\xcd\\x0e\\x22\\x1e\\x82\\x4a\\x78\\xdd\\xc4\\x84\\x5f\\xeb\\x46\\xd6\\x6d\\x63\\x3d\\x23\\xcd\\x23\\xf4\\xb6\\xfb\\xe4\\xc8\\xce\\x16\\xcd\\x1a\\xf6\\x15\\x36\\xda\\x5f\\xa6\\x7b\\x10\\xac\\x75\\x55\\xa6\\x8c\\x0e\\x0b\\xdb\\xf2\\xf8\\xd7\\x23\\x09\\xd9\\x95\\x51\\x6b\\x81\\x18\\xbf\\x43\\x83\\x5d\\x0a\\x01\\xc0\\x8f\\xfe\\xba\\x3e\\xa3\\xed\\x05\\xcd\\x2d\\x54\\xf0\\xea\\xbc\\xda\\x05\\xd0\\x03\\x7d\\x52\\xca\\xed\\x3b\\x19\\x37\\x4f\\xaf\\x73\\x99\\x90\\x94\\xf7\\x90\\x55\\x92\\x4b\\xea\\x9a\\xec\\x44\\x70\\x13\\x5f\\x5e\\x8b\\xf1\\x83\\xc9\\xd1\\xc9\"},\n{{0xe9,0x5c,0xc2,0xa4,0xd1,0x19,0x3b,0x75,0x39,0xfc,0xbb,0xea,0xae,0xed,0x98,0x5b,0x6f,0xb9,0x02,0xdd,0x0e,0xfb,0xd6,0x38,0x74,0x57,0x55,0x0d,0x0d,0x6a,0x2f,0xea,},{0x72,0xa1,0xff,0x1e,0x9b,0xb1,0x1c,0x8d,0x88,0x96,0x8a,0x7b,0x16,0x96,0x37,0xad,0xee,0x43,0x8e,0x22,0x63,0xf0,0x06,0xdc,0xa4,0xfe,0x02,0xfe,0x06,0x6c,0xba,0xd3,},{0x1b,0x8d,0x7c,0xc2,0xad,0xf3,0x6c,0xae,0x16,0x31,0x25,0x0c,0x82,0x43,0x1b,0xd8,0x84,0x37,0x16,0x3a,0x63,0x49,0xad,0x96,0xe7,0xa8,0x64,0x44,0x7e,0x9f,0xee,0x75,0x3a,0xc3,0x65,0x5c,0x98,0x35,0xb4,0xd1,0xec,0xbb,0x30,0x6c,0x63,0x8b,0xa5,0x40,0x2a,0xd0,0x2b,0xa6,0xd2,0x25,0xd9,0x68,0x82,0x88,0x9f,0xe8,0xd2,0x04,0xa6,0x04,},\"\\x84\\x26\\x74\\x39\\x20\\x1b\\x05\\x91\\xdb\\x60\\xc0\\xf1\\x7a\\x9c\\x15\\xe4\\x54\\x09\\x29\\x56\\x52\\xd5\\xf5\\x5b\\x87\\xfb\\x35\\x19\\x67\\xc8\\x46\\xa5\\x67\\xf5\\xce\\xba\\xae\\xd1\\x76\\x2b\\xff\\x54\\x85\\xf0\\x48\\x53\\xca\\x92\\x69\\xf4\\x64\\x09\\x4e\\x51\\x2d\\xf1\\xf0\\x2e\\x13\\xe5\\x17\\xb1\\xda\\xa5\\x8d\\x34\\xca\\xa2\\xd5\\xff\\x9f\\x9e\\x79\\xbc\\xaf\\xb4\\xce\\x96\\xe8\\xa0\\x89\\x25\\x8a\\xd6\\x13\\x43\\xb4\\x46\\x62\\x8e\\xbc\\x4f\\x5b\\x2a\\x84\\xd0\\x3b\\x72\\xef\\x3f\\x73\\x85\\x89\\xfa\\x13\\xc4\\x25\\x19\\xa8\\x28\\x29\\x9a\\x3f\\xae\\xc0\\x35\\x03\\x7b\\xc1\\x0b\\x44\\xe3\\xbd\\xfe\\xd9\\xe0\\x87\\x07\\x17\\xcb\\xaf\\x31\\xbe\\xf8\\xb2\\x2c\\x4e\\xa1\\x6e\\x81\\x57\\xfc\\xbc\\x63\\xee\\xfa\\x39\\xed\\x82\\x2e\\xfd\\x42\\x15\\xc2\\x47\\xdd\\xa4\\x87\\x86\\x27\\x7e\\xc0\\x30\\xa8\\x6c\\x0e\\xf4\\x85\\x1d\\x67\\x3c\\xfe\\x75\\x2d\\x06\\x77\\x88\\x3c\\x2c\\x45\\x20\\x38\\x97\\x0c\\x09\\xbd\\x48\\x17\\x14\\xbc\\x3f\\xbe\\xcf\\xa4\\xff\\x2a\\x3c\\x24\\x56\\x95\\xd7\\xec\\xc2\\xf4\\xde\\xc7\\xf5\\xed\\xe0\\x4f\\xf6\\xdb\\x43\\xe2\\xbb\\x91\\xc0\\x66\\xb6\\x49\\xef\\x73\\xfd\\x3b\\xe8\\x60\\xcb\\x83\\xfa\\x80\\xb0\\x74\\x14\\x9f\\x43\\x1e\\xeb\\xb9\\x17\\xec\\x84\\x78\\xda\\x87\\x0c\\x11\\xe3\\x17\\x70\\x38\\x59\\xf9\\xf2\\xf4\\x00\\x8a\\x6c\\x7c\\x75\\x4b\\x06\\xe1\\xf7\\xd2\\x47\\x96\\x89\\xda\\x84\\xe8\\x89\\x22\\xf3\\x82\\x74\\x98\\x5e\\x11\\xce\\x13\\xcd\\xbd\\xb0\\xf2\\xec\\xe6\\x8f\\xb6\\x02\\xad\\xe0\\x3d\\xd5\\x49\\xa3\\x62\\x49\\x1f\\x4a\\x20\\x3f\\xf8\\x07\\x44\\xf6\\x63\\xc5\\x23\\xa0\\x26\\xb4\\x31\\xaa\\xd4\\x5c\\x58\\x29\\xe0\\x29\\xad\\x62\\x56\\xd1\\x27\\x6f\\xd7\\xb7\\xa1\\x2d\\xdb\\xf1\\x72\\x7d\\x9e\\x23\\x3f\\xb5\\x34\\x45\\x73\\x70\\xa4\\x26\\xe5\\x6f\\xb3\\x9c\\xf4\\x04\\xa3\\xec\\xbf\\x0c\\x4b\\x50\\xbb\\x52\\x2d\\xce\\x98\\x1e\\x08\\x30\\xfd\\x84\\x06\\xe6\\xd9\\x72\\x5c\\xeb\\x1d\\xdd\\x3a\\x19\\x47\\x93\\x7d\\x90\\xe0\\x4d\\x76\\x8a\\xe1\\xd1\\x26\\xe2\\xae\\xac\\x21\\xb8\\xc9\\xef\\xc5\\x4c\\x40\\x96\\x1b\\x7f\\x4e\\x9e\\x88\\x02\\x5f\\x7e\\x0b\\x9d\\xe9\\x01\\xeb\\xf0\\x04\\x9e\\x74\\x1b\\x79\\x79\\x97\\xd8\\xdb\\x78\\xe9\\x28\\x3b\\xbb\\x5f\\x90\\xf3\\x5a\\x2c\\x4d\\xee\\x27\\x31\\x42\\xec\\x25\\x8c\\x02\\xad\\x0e\\xcc\\x61\\xcc\\x5c\\x9f\\x12\\x13\\x2d\\xb2\\x8a\\xf4\\x1c\\x1f\\xb7\\x8e\\x52\\x4b\\xe5\\x32\\x7b\\x5f\\xfc\\x35\\x96\\x27\\x79\\xfb\\x11\\xff\\x0c\\x5d\\x3e\\xe0\\xa3\\x1f\\xf4\\x7e\\x73\\xb1\\x72\\x9d\\xfa\\x46\\xe8\\x98\\x6b\\x1b\\x89\\xab\\xc8\\x8a\\xd0\\x6a\\xbd\\x5b\\x6f\\x76\\x6d\\x23\\xab\\xf6\\x42\\x25\\x78\\x94\\xeb\\xdf\\xa7\\x9e\\x63\\x09\\xf1\\x27\\x23\\x74\\xee\\x94\\x33\\x67\\x7b\\xa1\\x3e\\x45\\x1b\\xaa\\x95\\x33\\x0e\\x66\\x0c\\x80\\x52\\xae\\x87\\x2e\\x0e\\x32\\xe2\\xb2\\xd1\\x28\\x6d\\x01\\xa0\\xab\\x58\\x10\\x42\\x4e\\xd8\\xb9\\x40\\x54\\x65\\xbd\\xeb\\xa0\\x3b\\x69\\x83\\x84\\x67\\x6f\\xe5\\xea\\x46\\x4a\\x03\\x44\\x6c\\x4f\\x7c\\xd7\\xb4\\x33\\x12\\xec\\xf1\\x51\\x36\\x04\\x64\\x57\\x1a\\xd2\\x86\\x10\\x58\\x1f\\xba\\xdb\\x94\\x5a\\x1d\\x68\\x18\\x1d\\xeb\\x40\\x3a\\xa5\\x6e\\xba\\x0b\\xb8\\x40\\x32\\x8e\\xee\\x36\\x10\\x3c\\x7d\\xe0\\x73\\xa6\\x87\\x9c\\x94\\x1c\\x75\\x54\\xc6\\xf6\\xf2\\xa0\\x80\\x80\\x9e\\xb0\\xe5\\xbd\\x0e\\x13\\x0f\\x29\\xa2\\x29\\xe9\\x30\\xdb\\x01\\xfe\\xca\\xc2\\xe0\\x36\\xbd\\xf0\\xe0\\x01\\xe2\\xa8\\xea\\x32\\x64\\xf8\\x64\\x9d\\x5b\\x60\\xc2\\x91\\x03\\xf0\\xb4\\x9c\\x24\\xc9\\x7f\\xac\\xaf\\x7e\\x81\\x06\\x9a\\x2b\\x26\\xab\\x3f\\x93\\x3f\\x42\\x7d\\x81\\x27\\x2c\\x6c\\x8b\\x7c\\xd0\\xdf\\xb7\\xc6\\xbb\\xe9\\xc0\\xea\\xab\\x32\\xbb\\xda\\x22\\x18\\xb9\\x62\\x3a\\x21\\x19\\xaa\\xb1\\xf3\\xeb\"},\n{{0x77,0xad,0x0f,0x94,0x2c,0x37,0xf0,0x31,0x3e,0x6b,0x04,0x56,0xda,0xba,0xec,0x81,0xb2,0xd6,0x1f,0x6c,0x11,0x8d,0xdb,0x29,0xea,0xf3,0xac,0x5b,0xf1,0x95,0x04,0xd4,},{0x69,0x2d,0x2d,0xa5,0xa9,0x5f,0x48,0x61,0x1a,0x6d,0xa8,0x9c,0xfb,0x3b,0x35,0x40,0xf6,0xaa,0x0c,0x85,0x0d,0x6d,0x98,0xde,0xea,0x87,0x0e,0x39,0x7f,0xed,0xe3,0x28,},{0x69,0x6b,0xd5,0x52,0xdd,0x01,0xdb,0x80,0xb3,0xd6,0x7d,0x61,0xee,0xb7,0xec,0xc5,0x68,0x78,0x40,0x4a,0xb1,0x19,0x44,0x2a,0x1c,0x74,0x22,0x99,0x2c,0xfa,0x35,0xae,0xa9,0x20,0x82,0x5d,0x2d,0xaf,0xd8,0x92,0xad,0x7e,0xb6,0x82,0x5a,0xd9,0x99,0xae,0xe5,0xc8,0x3b,0x7b,0x50,0x79,0x06,0x53,0x4f,0x91,0xac,0xe7,0x59,0xc5,0x51,0x0c,},\"\\x87\\xe6\\xde\\xad\\x2c\\x85\\x54\\x9e\\x3d\\x8d\\x25\\x88\\xa0\\xa3\\x36\\x06\\x03\\xa6\\x24\\xfb\\x65\\xae\\xbb\\xc1\\x01\\xbf\\x7f\\x1f\\xec\\x18\\xd0\\xb2\\x8f\\xbd\\x5d\\xba\\xee\\xd3\\x87\\x52\\xcd\\xf6\\x35\\x5c\\xe8\\xdc\\x84\\xe1\\x8a\\xc1\\xa4\\x39\\x3d\\x2a\\xb8\\x88\\x88\\x2c\\x4f\\xf1\\xc9\\xc8\\x13\\x7f\\x83\\xbe\\xe3\\x63\\x36\\xbc\\xbf\\xbb\\x72\\xd5\\x04\\x9e\\x0a\\x40\\x08\\x74\\x51\\x4f\\xdc\\x36\\x33\\x04\\x6e\\x89\\x38\\x3d\\xde\\xd9\\x3c\\xa3\\x1f\\xde\\x0d\\x89\\x8e\\x11\\xe9\\x26\\x8d\\x3d\\x5c\\x24\\x06\\x66\\xed\\x55\\x27\\x61\\x3d\\xa7\\x9f\\xb7\\xe4\\x96\\x25\\xb4\\x4c\\xde\\x78\\xb4\\x1c\\x67\\x90\\x2e\\xb0\\x21\\x6b\\x3a\\x7a\\x3e\\x56\\x0e\\x26\\x1d\\x71\\xd7\\x64\\xaa\\xcf\\x15\\x95\\x9c\\x17\\xfc\\xd6\\x17\\x6f\\xb2\\x5e\\x24\\x9e\\xe6\\xbb\\x1b\\x3b\\xd7\\xbd\\x90\\xf6\\x0b\\x0b\\x0f\\xfa\\x03\\x15\\xa0\\x65\\xa2\\x4b\\xba\\xe8\\xf2\\x55\\xbf\\x29\\x8d\\x7e\\x4d\\x44\\xf0\\xb4\\x30\\xc4\\x15\\xb4\\xfb\\x36\\xcf\\xa6\\x62\\x6a\\x83\\xf4\\x9a\\x25\\x67\\xf6\\x24\\x4f\\x40\\xe9\\x23\\xad\\xd1\\xd4\\x9a\\x72\\xf5\\x7b\\x15\\x30\\xf5\\xb3\\x79\\xde\\x3a\\x91\\xc2\\xe9\\xa1\\xac\\x79\\xab\\x37\\xbc\\x3b\\x9b\\xa7\\x3d\\x88\\x28\\x13\\x6b\\xcc\\x87\\xd2\\xc0\\x11\\x90\\xde\\x54\\x57\\xfa\\xcd\\x90\\xf3\\x69\\x55\\x3f\\x7a\\xc5\\x21\\xc5\\x67\\x2b\\x08\\x67\\xdf\\xa8\\xda\\x3b\\x95\\x2a\\xd9\\x5b\\x67\\xda\\xb9\\x9b\\x48\\x20\\x57\\x2f\\x2d\\x4a\\x29\\x8e\\x95\\x18\\x63\\x77\\x79\\x28\\x9c\\x03\\x1b\\x79\\x3d\\xee\\x85\\x9c\\xde\\x7b\\x24\\xad\\xd6\\x49\\xff\\xf8\\x71\\x24\\x8a\\x66\\x02\\xd2\\x51\\x62\\x79\\xda\\x60\\x58\\xcb\\xb6\\x96\\xfa\\x8b\\x1d\\x89\\xa2\\x0d\\x20\\x99\\xe6\\x46\\x44\\x32\\x10\\x48\\x3e\\x5d\\x41\\x34\\xe9\\x28\\xfa\\xeb\\x38\\xa3\\xb5\\x08\\x19\\x9e\\x0d\\x69\\xbb\\x55\\xee\\x34\\x77\\x42\\x05\\xc0\\xa6\\x12\\x05\\xb5\\x0b\\x08\\xfe\\xbe\\xaa\\x40\\x1e\\x6e\\x3a\\x51\\xa2\\xbf\\x98\\xef\\xac\\x78\\xb7\\xae\\x2b\\x85\\x2c\\x53\\x95\\xa1\\x2c\\x40\\xe2\\xc7\\xdd\\x1b\\x20\\x25\\x04\\xb5\\xa7\\xd2\\xf7\\xe4\\xfd\\x4f\\x86\\x10\\x93\\x0d\\x28\\x68\\xcb\\xa8\\x86\\x43\\x39\\xe0\\x41\\xda\\x21\\xc0\\x71\\x5f\\x41\\xb2\\xb2\\x3d\\x14\\xd0\\xb5\\x45\\x48\\x0b\\xc3\\xbd\\x7d\\x72\\x15\\xcf\\x2f\\x81\\x6a\\x33\\x32\\x08\\x1e\\xca\\xa0\\x8c\\x0f\\x8b\\x99\\x52\\x52\\x51\\xf5\\x72\\x31\\xb6\\x75\\x0c\\x2d\\xbd\\x11\\x09\\xac\\x41\\x60\\x48\\x6b\\x76\\x83\\x24\\xb6\\xba\\xc8\\x7e\\xf5\\xa2\\x26\\x44\\x8c\\x43\\x12\\x40\\x32\\x8f\\x42\\xcc\\xa5\\x86\\xbe\\x7a\\xff\\x3c\\xbe\\x76\\x05\\xfa\\x34\\x15\\x14\\xfc\\xcf\\xb9\\x66\\xaf\\x3d\\x45\\x30\\xe8\\xcd\\x90\\x37\\xa1\\x1c\\xe5\\x93\\xc2\\xd3\\x83\\xe1\\x03\\x5a\\x0c\\x2e\\xda\\x09\\x8d\\xe9\\x0d\\x50\\xc5\\x18\\x4a\\x9c\\x01\\xb5\\x7f\\x26\\xb9\\x4d\\xed\\xd1\\x45\\x4c\\x34\\x06\\x37\\xec\\xcc\\xee\\x70\\x62\\x57\\x54\\xa3\\x28\\xc6\\x5f\\x42\\x64\\x5b\\x5e\\x1a\\x56\\x55\\xee\\xf9\\x7d\\xfb\\x1c\\x63\\x08\\xed\\xf4\\x9f\\xa3\\x68\\xd1\\x7d\\x17\\xe0\\x6a\\xdc\\x51\\x2b\\x39\\x73\\xea\\x65\\x2a\\xc4\\x0a\\x99\\x78\\xe1\\xbb\\x1b\\x2f\\x86\\xc5\\xa9\\xff\\xbf\\x60\\xdc\\xc4\\xf6\\xbb\\xc9\\x8a\\x64\\xf4\\xde\\x65\\xe7\\xec\\x61\\x72\\x1e\\xde\\xb0\\xe5\\x23\\x84\\x56\\xf7\\x61\\xd2\\xd1\\x29\\x3a\\xf0\\xde\\x9f\\x79\\x3b\\x11\\xd8\\xca\\xdf\\x01\\xa9\\x43\\x19\\xa0\\x2a\\x42\\x73\\xff\\xc4\\xd3\\xff\\xa7\\xb3\\x4d\\x74\\xfd\\x2e\\x0b\\x10\\x0f\\xca\\x58\\xb5\\x32\\x5f\\x90\\x7a\\x74\\x91\\x93\\xe7\\x51\\xd6\\xc1\\x16\\x68\\x7a\\xee\\x37\\x47\\xb5\\x94\\x60\\xd4\\xef\\x15\\x6e\\x72\\x47\\x6e\\xae\\x1b\\x84\\x55\\xd7\\x6e\\x71\\xb3\\x06\\xb9\\x81\\x29\\xb7\\x2f\\xe1\\xcb\\x5e\\xb4\\x05\\xa7\\xc2\\xf4\\x32\\x7f\\x38\\x62\\xd4\"},\n{{0x29,0x32,0x14,0x69,0xee,0x9f,0x2b,0xb1,0x65,0xa0,0x69,0x64,0x03,0x32,0xb4,0x89,0xbf,0x5c,0x3f,0xab,0x68,0x2e,0x93,0xda,0xe9,0xd8,0x63,0x17,0xbf,0x50,0xc5,0x2c,},{0x96,0xf7,0x30,0xf8,0xef,0x89,0x70,0x26,0x8d,0xba,0x0f,0x75,0x70,0x41,0x0b,0x61,0x88,0xa1,0xa3,0xc8,0x63,0x97,0x74,0x09,0x13,0xd5,0x3a,0xda,0x26,0x2a,0xb8,0x7e,},{0x4e,0x1a,0xff,0x84,0x63,0xbc,0xa1,0xb7,0xde,0xb1,0xd3,0x77,0x3d,0xf2,0xe7,0xa0,0x68,0x64,0x11,0x1b,0x6d,0xc4,0x2a,0x62,0xae,0x98,0xde,0xb2,0x31,0x39,0x43,0xb3,0x15,0x3e,0xe4,0x66,0x96,0xb1,0x5c,0x24,0xef,0xc2,0xa8,0x08,0xaa,0xba,0x81,0xc7,0x8e,0x3d,0xfa,0x4d,0xfb,0x50,0xca,0x9f,0xe8,0x44,0x45,0xea,0x68,0xbc,0x8e,0x0a,},\"\\x9c\\x71\\x2c\\x83\\xd5\\x4f\\x2e\\x99\\x3c\\xa6\\x8a\\x96\\x32\\x84\\x60\\x04\\x49\\x9c\\x51\\x95\\x44\\x8d\\xdc\\x49\\x1c\\x3a\\x0d\\x2e\\x3a\\x66\\x6d\\x6b\\x33\\x09\\x8e\\x48\\x64\\xfd\\xf8\\x6e\\x61\\x9d\\x50\\xf1\\x0b\\x7c\\xc6\\xc3\\x9b\\x3f\\xf2\\x80\\x1a\\x94\\x91\\xf6\\xfa\\x97\\xc5\\xf1\\xc4\\xaf\\xa7\\xae\\xff\\x31\\xd7\\x38\\xf9\\xa7\\x68\\xa7\\x9c\\x73\\xb2\\x55\\x77\\x31\\x0f\\xb0\\xad\\x4f\\xaf\\x85\\x43\\xa0\\x98\\xf8\\x59\\x57\\x1b\\x61\\x48\\xe8\\xb5\\x29\\x26\\x44\\x57\\x57\\xd5\\x54\\x9f\\xd2\\x5a\\x26\\x51\\x85\\x31\\x56\\x63\\x79\\xd1\\xc2\\x74\\xe6\\xc6\\xa9\\xd6\\x41\\x32\\xe4\\xac\\x25\\xac\\x9a\\xf9\\x38\\x1b\\xcb\\x88\\x53\\x32\\x11\\x3f\\x43\\x01\\x4a\\x13\\x9a\\x81\\xf8\\xd4\\x3c\\x8a\\x6a\\xb5\\x4c\\x11\\xa5\\xc9\\x2e\\x06\\x19\\x1c\\x1e\\x51\\xb7\\x57\\xac\\x9f\\x11\\xe3\\xdc\\x15\\xdb\\x44\\x86\\xd1\\x67\\xff\\x9f\\x2d\\x65\\xe2\\x3e\\x6c\\x96\\x22\\x3d\\x9a\\xff\\x8d\\x10\\xd1\\x50\\x2c\\xf3\\xdb\\xce\\x5e\\x35\\x7e\\x6b\\x12\\xdb\\xe9\\xb7\\xe9\\x97\\xc3\\xd0\\xa5\\x07\\xd3\\xba\\xe3\\xcf\\xef\\x1f\\xfc\\x8d\\x05\\x6e\\xf7\\xdc\\x72\\xdd\\xc1\\xc8\\x1e\\x31\\x0a\\xd2\\x05\\xbe\\x16\\xe7\\x7f\\x27\\x38\\x35\\x4b\\x10\\xb4\\x84\\xd3\\x07\\x6c\\x27\\xe6\\xb4\\xf1\\x66\\x38\\x85\\x81\\xf3\\x50\\xbe\\xfe\\x22\\xfb\\xb0\\x82\\xb5\\x41\\x21\\xee\\x59\\xec\\xc7\\xae\\x5d\\xec\\xe8\\x98\\x82\\xac\\xf2\\x6c\\xb7\\x47\\xff\\xaa\\x3e\\x2d\\x05\\xa6\\x96\\xf6\\x0f\\xd9\\xe8\\x29\\xc7\\x09\\xd8\\xf0\\x2d\\xaf\\x53\\x7b\\x23\\x69\\xb8\\x91\\xfe\\x6c\\xcb\\xf8\\xdf\\xcd\\xd7\\xf4\\xa3\\x64\\xb1\\x99\\x85\\xbe\\x7e\\xde\\xc6\\x7d\\xdc\\x1d\\xb7\\x13\\xc0\\xa9\\x0f\\xaf\\xa4\\x88\\x37\\x77\\x25\\x62\\xde\\xac\\xc2\\xd2\\xa0\\xe7\\x89\\xe1\\x8a\\x8b\\x5b\\x3b\\xd9\\xe0\\x83\\xea\\x92\\xff\\xfc\\x31\\x83\\xd5\\xd4\\x14\\x15\\x32\\x59\\xb3\\x3a\\x43\\x29\\xcf\\xc8\\x08\\x24\\xeb\\xcb\\xe0\\x44\\xa7\\xe3\\x3a\\xb8\\xa2\\x4f\\xde\\x54\\xbd\\x95\\x20\\xae\\xa2\\x84\\xb0\\xc4\\xc4\\xfa\\x94\\x27\\xd2\\x51\\xc0\\xdd\\xd0\\x13\\xec\\xdd\\x82\\x90\\xef\\x55\\x65\\xf6\\x08\\x50\\x8e\\x36\\x35\\x89\\xe5\\x29\\xd8\\x4f\\xf0\\xf2\\x6f\\x9e\\xcb\\x03\\x05\\x2d\\x58\\x97\\xfa\\xbc\\x91\\x7e\\x56\\xe6\\x01\\xb6\\x4a\\xbf\\xe5\\xa1\\x7c\\x39\\x50\\x28\\x9d\\x0c\\xdc\\xaf\\x1f\\x60\\x05\\xa9\\xf8\\x10\\x6f\\x43\\xe1\\x7a\\xdc\\xaa\\x2d\\x1e\\x26\\x91\\x66\\x76\\x2f\\x80\\x54\\xde\\x05\\x13\\x5d\\x5d\\x13\\x93\\xd7\\x00\\x0a\\x15\\xb8\\x7b\\xd6\\x88\\x46\\xa8\\x9d\\x5b\\xc2\\x28\\x63\\x32\\x51\\x51\\xaa\\xc8\\x43\\xf7\\x22\\x78\\xae\\x6f\\x4a\\xf7\\x2a\\x4e\\x44\\x9a\\xdb\\x7e\\xae\\x6d\\x43\\x6a\\x1e\\xc7\\xe5\\x8e\\x59\\xb7\\xb8\\xbb\\x9e\\xf0\\xdd\\xaa\\xa0\\x01\\x82\\x6f\\x8d\\xcb\\x44\\x64\\x79\\xde\\xaf\\xd8\\xb8\\xd5\\x42\\x04\\x1c\\x19\\xa0\\x5b\\x1e\\x0e\\xe4\\x7b\\x46\\x40\\x91\\x0c\\x31\\x93\\x0c\\xa4\\xe2\\x0b\\x10\\x57\\x58\\xec\\x75\\xf1\\x95\\x03\\x56\\x94\\x7f\\x62\\x61\\xd0\\x03\\x7f\\xe3\\x07\\x73\\xa3\\xec\\xe6\\xa9\\x6c\\x8d\\x54\\x33\\x33\\x3d\\x82\\x2c\\x27\\x77\\xef\\x7f\\xf8\\xbe\\x60\\x33\\x34\\x5b\\x50\\x55\\xd5\\x8f\\x5e\\xb3\\x72\\x9a\\xf5\\xae\\x88\\x24\\xf3\\x31\\xee\\x07\\x31\\xc8\\x9b\\x20\\xac\\x11\\x8f\\x55\\x04\\x27\\xcd\\x95\\x8a\\x55\\xf6\\xb1\\xa2\\x88\\x8a\\x08\\x7b\\xb7\\xdb\\x55\\xbf\\xc7\\x3b\\x29\\x42\\x9b\\x44\\x48\\xdb\\xe9\\x11\\x9c\\x45\\xa8\\x73\\x39\\xb4\\x49\\x7a\\x69\\xa4\\xcf\\x83\\x3e\\x8f\\x37\\x70\\xcc\\xe5\\xe0\\x1f\\xaf\\x5e\\x73\\xbb\\xaf\\x62\\x76\\x83\\xc0\\xa2\\x8c\\x73\\x05\\x2f\\xbe\\xce\\x20\\x30\\x43\\x38\\x9d\\xfb\\xfd\\x45\\x49\\x5e\\x51\\xda\\xb8\\x6a\\x25\\x2e\\x5b\\xc1\\xb4\\xb7\\xfe\\x28\\x07\\xe3\\xd0\\xe2\\x36\\x3b\\xea\\xb5\\x1c\\x67\\xfb\\x31\"},\n{{0x04,0x65,0x77,0x50,0x49,0x7e,0x68,0x15,0x2c,0x43,0xce,0x34,0xa5,0x8d,0x21,0x06,0xe6,0x4c,0x55,0x7c,0xd7,0xa8,0x4e,0xf0,0x5d,0x9e,0xb8,0x2e,0x6b,0xcb,0x05,0xf5,},{0x3b,0x3a,0x19,0x47,0xb4,0xcb,0xf6,0x0b,0x82,0x6d,0x60,0x9f,0x19,0x2d,0xc2,0x30,0xaa,0x9b,0x9b,0xaf,0x4c,0xd6,0xa6,0x09,0x2e,0x49,0x5f,0x1d,0x2e,0x47,0xad,0x62,},{0x7e,0x2e,0xae,0x5a,0x29,0x3f,0x41,0x83,0x91,0xf6,0xd8,0x5a,0x79,0x94,0xb0,0x7c,0x45,0x22,0x80,0x01,0x7e,0xe6,0x53,0xbf,0x61,0x7a,0x8d,0x5b,0xe2,0x4c,0xbb,0x5d,0x0e,0xfd,0xfb,0x7f,0x7f,0x00,0x13,0x12,0x26,0x0f,0x34,0x4e,0x6f,0xb9,0x15,0xad,0x8d,0x7d,0xe9,0xc0,0x51,0x98,0x27,0xc0,0x57,0x26,0xf9,0xce,0x25,0x45,0xdd,0x0b,},\"\\x29\\x48\\x22\\x7a\\x89\\x0f\\x6f\\x84\\x5b\\x77\\x5e\\x62\\xc5\\x3a\\xf3\\x80\\x50\\x64\\xa1\\x57\\x64\\x46\\xf0\\x85\\xd9\\x0f\\x8b\\x9a\\x5e\\xd6\\x8d\\xf1\\xea\\x39\\x3c\\xe4\\x79\\xc4\\x41\\x41\\x49\\xa9\\xec\\x5a\\x17\\x10\\x36\\x42\\x4d\\xff\\x03\\x44\\xb4\\x95\\x8f\\x61\\x32\\x29\\x8d\\x0e\\x24\\xc9\\x26\\xd2\\x8a\\xd9\\xd7\\x9f\\x98\\xc6\\xe6\\xbc\\xf1\\xc5\\x76\\x76\\x06\\xec\\xd2\\x91\\xc6\\xad\\x47\\xb4\\xf9\\xfb\\x2b\\x02\\x01\\x15\\x5a\\xda\\x62\\x7b\\x7a\\x1f\\xd5\\xb0\\x74\\x19\\x87\\x40\\x83\\x05\\x9e\\xb5\\x2b\\x2f\\x6e\\xc2\\x28\\x18\\xb7\\x82\\x46\\x22\\x8f\\x3f\\xe6\\x35\\x5d\\xfd\\xa7\\x0e\\xbb\\x9b\\xbe\\x73\\x22\\x93\\x78\\x73\\x63\\x99\\x55\\x7c\\xe2\\x4b\\x30\\xbf\\x64\\x5a\\x14\\xe2\\x25\\x6f\\x70\\x01\\x9b\\x33\\x36\\xb2\\x03\\xfb\\x77\\xc6\\xec\\x94\\xa7\\xa2\\x63\\x48\\x88\\xfe\\xea\\xd4\\xd7\\x2c\\x23\\x91\\xe9\\x9e\\x8c\\x8d\\x53\\x3f\\xd8\\xa4\\x2b\\x08\\xc1\\x1f\\x88\\x7a\\xb2\\xde\\xb6\\xeb\\xbf\\xe3\\xd2\\x51\\xde\\x63\\x53\\x6c\\x36\\xcd\\x53\\x42\\x23\\x98\\xe5\\x44\\xcf\\xf8\\x7b\\x07\\xa6\\x33\\x49\\xfc\\x50\\x85\\xdd\\xe9\\x3a\\x1b\\xfd\\x71\\x71\\x13\\x3a\\x20\\x43\\x98\\x1f\\x60\\x75\\x22\\xc8\\x13\\x3c\\x63\\x42\\x8d\\x1b\\x92\\x62\\x6c\\x79\\xb7\\x35\\x8e\\x70\\x21\\xcf\\x1f\\x41\\x2a\\x78\\xaf\\xa7\\xcb\\x3f\\x59\\xff\\xef\\x92\\x79\\x88\\x5a\\x5b\\xdb\\x24\\x66\\xac\\xd3\\x4c\\xd5\\x15\\x80\\x83\\x0b\\x83\\x51\\xeb\\xd4\\x40\\xa9\\x66\\x23\\x90\\x7a\\xd1\\xf4\\xb5\\x62\\x03\\xf5\\xe1\\x59\\xa4\\x29\\xe3\\x54\\x6e\\xad\\x0c\\x01\\x1d\\xbe\\xd0\\x90\\x28\\x71\\x7e\\x3c\\x3d\\xfe\\xd3\\x91\\x97\\x76\\x4d\\x4d\\x24\\x5e\\xf2\\x28\\xb9\\x80\\x44\\x71\\x8e\\xf4\\xd8\\x82\\x2f\\x21\\xb2\\xc5\\x68\\x50\\x38\\x47\\x3b\\xf9\\x3d\\xc0\\x93\\x74\\x51\\xeb\\x02\\xd3\\x1a\\x46\\xc8\\xdc\\x7e\\x94\\xc3\\xe8\\x67\\x8c\\x83\\xb9\\x8a\\x43\\x81\\x8f\\x12\\x5b\\x52\\x8b\\x47\\x6a\\xad\\x31\\xd1\\x58\\x4f\\xfd\\x48\\xf1\\x49\\xe5\\x73\\x6e\\x58\\xf9\\x42\\x05\\xd3\\x88\\x9e\\x56\\x7e\\x4d\\xd1\\xea\\xc2\\xfa\\xc1\\xf8\\xf4\\xdc\\x54\\x0e\\x53\\x22\\x46\\x0f\\xb9\\x40\\xe1\\x2e\\x93\\xc4\\xc9\\x8d\\xed\\x19\\x41\\xc1\\x90\\x4f\\x96\\x7f\\xb4\\x64\\x36\\x84\\xc1\\x9a\\x4d\\x5c\\x44\\x1d\\x60\\xb0\\xe9\\xf4\\x08\\x55\\xe5\\x23\\xfe\\x7f\\x99\\x10\\x76\\x57\\xa6\\x80\\x76\\x27\\x5b\\xf8\\x4b\\x7c\\x69\\xa3\\xf2\\xb3\\x85\\x5b\\xc8\\x02\\x6b\\xa9\\xb0\\x0b\\xc6\\xfe\\x34\\xb9\\x9d\\xa0\\x63\\x17\\x00\\xa6\\x7f\\x52\\xb3\\x4e\\x17\\x96\\x33\\x98\\x87\\xa4\\x83\\x05\\x12\\x1d\\x53\\xab\\x44\\x40\\xfc\\x4b\\x5c\\x9b\\xf7\\x23\\x94\\xd5\\xed\\x37\\x2f\\xf1\\x8c\\xa3\\xf0\\x07\\xbd\\x02\\xdf\\x65\\x1d\\xc3\\xac\\x43\\x82\\x75\\xf1\\xa3\\xe5\\x24\\x22\\xb8\\x6c\\x45\\x86\\x76\\x6a\\x21\\xcd\\x89\\xf8\\x05\\x80\\x5d\\xbb\\x44\\xfd\\x89\\xfe\\x24\\xfb\\x2c\\x0b\\x40\\xd1\\xb7\\x54\\xc3\\x35\\xdb\\xaf\\xfc\\x3b\\x3b\\xb8\\xbb\\x46\\xc7\\x4c\\x36\\x37\\x45\\x04\\x04\\x2d\\x86\\x78\\x92\\x27\\x59\\x98\\x62\\x31\\x2e\\x99\\xca\\x89\\xeb\\x50\\x4c\\xc3\\xd7\\x5d\\x19\\x49\\x5a\\xa8\\x6b\\x20\\xb2\\x73\\x6b\\x12\\x1b\\xb2\\x07\\x5c\\x88\\xed\\x4a\\x3f\\xbd\\xaa\\x6b\\x2c\\x3f\\x76\\xd1\\xff\\x55\\x25\\xd3\\xa2\\x86\\x3e\\x4d\\x83\\xc7\\x2b\\xfe\\x01\\xe1\\x02\\x78\\x80\\x94\\x74\\xe1\\x82\\x2d\\xe2\\xd9\\x62\\x83\\x48\\x93\\x20\\x02\\x96\\x11\\xaa\\x9d\\xff\\xc4\\x82\\x9d\\x66\\x86\\x9e\\x63\\x49\\x4f\\x9a\\xad\\xe7\\x0b\\x77\\xa7\\xb8\\x0f\\xbc\\x93\\xe3\\xde\\x4d\\x93\\x59\\x13\\x75\\x2d\\x04\\x5e\\x13\\xb3\\x12\\xc5\\xd0\\x82\\xf6\\x24\\x2d\\x49\\x85\\xb0\\x53\\xb3\\x78\\x3e\\xb0\\x2c\\x66\\x14\\x96\\x3d\\xc0\\xd5\\x5d\\x4c\\xbe\\x88\\x7b\\xae\\x29\\xcc\\x18\\x97\\x9e\\x5e\\x2e\\xa9\\x45\\xbc\\xd4\\x0d\\x89\"},\n{{0x8b,0xd9,0x90,0x70,0xc5,0x0a,0x9f,0xa4,0x18,0xef,0x7f,0x75,0xc0,0x01,0x29,0x91,0x6a,0x41,0xc8,0x60,0x70,0x96,0x1c,0xcb,0x2b,0x20,0x2b,0xe1,0x8c,0x2d,0x10,0xd7,},{0xdd,0xd7,0x33,0x08,0xfc,0xe8,0xca,0x65,0x52,0xd0,0x39,0x42,0x8c,0x7a,0x1a,0x94,0x92,0x33,0x20,0xa3,0x1c,0x0f,0x58,0x0d,0x3c,0x23,0x52,0x80,0xf0,0x3c,0x18,0x30,},{0xb1,0x4a,0x7b,0x26,0x20,0x12,0xc5,0x90,0x9e,0x21,0xd5,0x87,0xfb,0x4f,0x29,0xa9,0x09,0x3c,0x8e,0x1c,0x29,0x99,0x81,0x6a,0x82,0x11,0x8f,0xef,0xbf,0x10,0xe6,0x8e,0xa8,0x98,0xbf,0x0d,0xa1,0x8e,0xbf,0xd0,0x34,0x1e,0xa8,0xf8,0x2a,0x18,0x44,0xc8,0xe0,0xdd,0x53,0x06,0xe5,0x09,0xb9,0xd0,0xc3,0x5b,0x47,0x3a,0x7d,0x20,0x95,0x07,},\"\\x48\\x5f\\x8d\\x68\\x0f\\x79\\xee\\x2d\\x82\\x8b\\xe7\\xd0\\x18\\xa6\\x5e\\x0b\\x64\\xb0\\xf0\\x18\\x48\\x19\\x86\\x3e\\x71\\x10\\xee\\xa8\\xf2\\x99\\xa7\\x2c\\x4d\\xc8\\x7f\\x8e\\xe8\\xa8\\xae\\xaa\\x81\\xaf\\x91\\xdc\\x71\\xad\\xea\\x79\\xfc\\x97\\x97\\x42\\x1c\\xcc\\x64\\x6e\\x6c\\xd5\\xdd\\x48\\xb4\\xde\\xc1\\xde\\x96\\x86\\x93\\xfb\\xce\\x0d\\x00\\x21\\xa3\\xd9\\x8d\\x38\\xa8\\xbb\\xc5\\x81\\x95\\xe6\\xdf\\xc3\\xb5\\xe1\\x46\\x1b\\x2a\\x59\\x41\\x03\\xe8\\x0a\\x29\\x44\\x1d\\x5a\\xaa\\xf8\\x89\\xe3\\x1c\\xc8\\x65\\x14\\x1f\\x0c\\x6b\\x2c\\x8c\\x81\\xf7\\x21\\x67\\x9e\\xa2\\x39\\x4e\\xc6\\xe4\\x08\\x1e\\xc2\\x03\\xc2\\xea\\x39\\x7d\\x94\\x84\\x75\\x7a\\x7a\\x0e\\xcd\\x53\\xe6\\x52\\xdb\\x9d\\xf1\\x7b\\xea\\x0e\\x32\\xfe\\x8b\\x2c\\xbc\\xe0\\xd1\\xd9\\x7b\\x96\\x1e\\xd7\\x4e\\x8e\\x62\\x2b\\xcd\\xd3\\x55\\x8b\\x7c\\x48\\x69\\x5a\\xdf\\x18\\xaa\\xe6\\x11\\x0e\\xa9\\xa3\\x39\\xb9\\xda\\x40\\x7a\\x9e\\xda\\xf2\\xab\\x08\\x1a\\x68\\x1e\\x18\\x32\\xcc\\x21\\x5b\\x1f\\x08\\xa6\\x7d\\x55\\x9a\\x47\\x44\\xaf\\x7c\\xd5\\x03\\x18\\xc2\\x06\\xee\\x91\\x15\\x75\\x82\\xf8\\x2e\\xb6\\xc0\\xfc\\x29\\x02\\x7b\\x44\\x61\\xc3\\x07\\x33\\xb8\\x16\\x9d\\x14\\x81\\x32\\x2c\\x48\\x60\\x50\\x9b\\xa0\\x96\\xba\\xcb\\x71\\xa5\\x79\\x24\\x67\\x51\\xd5\\x67\\x54\\x0e\\x41\\x43\\x1e\\x14\\xf1\\xb4\\x6e\\xf1\\x6e\\xba\\x27\\x61\\x04\\xbc\\x01\\x65\\x0d\\x5c\\x49\\x26\\xe4\\x7c\\x9c\\x60\\x40\\x78\\x4b\\x04\\x3c\\xd0\\xaa\\x48\\x54\\xef\\xe8\\x79\\x7f\\xd0\\x46\\x2d\\x45\\x39\\xf3\\x80\\x35\\xae\\xf0\\x8b\\x45\\x77\\xc1\\xa9\\x11\\x8d\\x00\\x4b\\x6d\\x01\\x86\\x2f\\x52\\x76\\x77\\x6d\\xfe\\xf1\\x37\\x18\\x64\\xf1\\x55\\xac\\x0f\\x07\\x83\\x89\\xc2\\x05\\xcf\\x05\\x38\\xd8\\x5f\\xa3\\x48\\x24\\x4d\\x7a\\x42\\x29\\x11\\x31\\x0f\\xf6\\xc1\\x01\\x32\\xb1\\x59\\x8b\\xb4\\x45\\xc7\\xe2\\x07\\x7b\\x76\\x3c\\x47\\x3d\\x1e\\x7a\\x61\\xa3\\x8b\\x64\\x92\\x9a\\x64\\x8b\\x60\\xb2\\xe5\\x43\\x54\\x37\\x39\\x22\\x4b\\x40\\xfb\\xf6\\xd8\\x7f\\x10\\x79\\xc3\\x0b\\xc8\\x73\\xac\\x38\\x99\\x1d\\x51\\xb8\\x9e\\x9d\\x26\\x1c\\x4b\\xcc\\xb3\\x75\\x35\\x5c\\x07\\x2c\\x1e\\xa2\\x0e\\x4f\\xf9\\x1d\\x55\\xd9\\xf7\\x54\\x4e\\x90\\xd1\\xc6\\x64\\x6c\\x59\\xaf\\x72\\x42\\x4d\\x8a\\xaa\\x8e\\x0a\\xed\\x07\\xb3\\x88\\x9d\\x4e\\x45\\x0c\\x12\\x09\\x68\\x4c\\xe1\\x38\\xd0\\xc9\\xda\\x07\\x95\\x25\\xf5\\xaa\\x02\\x05\\x0a\\xf5\\x70\\xe4\\x31\\x5c\\x2f\\xa8\\xb0\\x99\\xb7\\x76\\x5b\\xfb\\xb8\\x94\\xfa\\xd3\\x59\\xb8\\xe2\\x48\\x04\\xec\\xe0\\x52\\xac\\x22\\xa1\\x91\\x70\\x53\\x35\\xe9\\x88\\x40\\xa6\\x24\\xe4\\xcb\\xf3\\xa1\\xa1\\xa3\\x27\\x81\\x27\\x85\\xb2\\xc0\\xf5\\xd6\\x38\\x14\\x57\\xb7\\x2f\\xdb\\x63\\x3e\\x81\\x93\\x8b\\xbb\\x54\\xb8\\xc3\\x7c\\xcc\\xb5\\xd5\\x9c\\x58\\x27\\xc7\\x68\\x3a\\x52\\x47\\x54\\x49\\x77\\xe9\\x84\\x44\\x21\\x78\\xd0\\x85\\x29\\x06\\xca\\x6f\\x94\\x5c\\x42\\x29\\xeb\\x08\\xad\\x27\\xe6\\xc2\\x75\\xd7\\xb4\\xec\\x8d\\xc2\\x5f\\xb2\\x81\\x93\\x37\\xe5\\x3e\\xad\\x6c\\x7a\\xa7\\x87\\xf9\\x1a\\x7d\\xc6\\xdd\\xaf\\xd5\\x36\\xee\\xfc\\xbd\\xec\\x2c\\x50\\x16\\x7b\\xe3\\x43\\x06\\xa8\\x2e\\x16\\xd5\\xd5\\x2b\\x3b\\x1b\\xe0\\x08\\xa7\\xa6\\x11\\x27\\x4c\\xe2\\xcf\\x8d\\x62\\xe3\\xb9\\x00\\xc0\\x99\\x43\\xbe\\x70\\xcc\\xc7\\x7b\\x07\\x06\\x37\\xc2\\x50\\x61\\xd6\\x1b\\xe9\\x10\\xee\\xf5\\x0d\\xf1\\x87\\x44\\xc3\\x3e\\x76\\xf6\\x70\\x1e\\x0a\\x8f\\xf6\\x29\\x7f\\xa6\\x7e\\x4b\\x41\\x08\\xc1\\x37\\x56\\x72\\x7a\\x9d\\x74\\xbc\\x9e\\x17\\x98\\x3e\\xec\\x08\\xf8\\x66\\xb7\\xc7\\xff\\xb3\\x7f\\x3c\\xcb\\x01\\x41\\xa8\\x0f\\xef\\xf6\\x32\\x2b\\x2a\\xc6\\x2b\\x84\\xce\\x27\\x97\\xfd\\x98\\xd6\\xff\\x26\\x9a\\x41\\xa0\\xc3\\x84\\x82\\xdb\\x67\\x98\\x62\\xa3\\x8c\\xd2\"},\n{{0x1a,0xf4,0xcf,0x6d,0x24,0xab,0x37,0x82,0x86,0x7d,0x96,0xa1,0xc2,0x75,0xce,0xeb,0x02,0x2c,0x69,0x1a,0x30,0x8e,0x62,0x45,0x66,0x5d,0x61,0x6b,0xf6,0x7c,0x2c,0x32,},{0x19,0xd3,0x17,0xea,0x98,0xd3,0x5b,0xa5,0xfa,0x67,0xc1,0x2e,0xcf,0xb3,0x27,0x50,0xdf,0x27,0x5d,0x7a,0x45,0xb8,0xe2,0x11,0xa7,0xac,0x47,0xed,0xe7,0x71,0x2d,0x9f,},{0x7e,0xb4,0x6c,0xd0,0xde,0x31,0x55,0xb4,0x37,0x47,0xd7,0x32,0xf1,0x04,0x5d,0x8e,0xf7,0x44,0x92,0xad,0x82,0x7a,0x22,0x45,0xbd,0x17,0x10,0x28,0x28,0x44,0x2e,0x43,0xa0,0xce,0x7e,0x8b,0x26,0x8e,0xd7,0xfd,0x8d,0x3e,0x7b,0x28,0xf0,0x72,0x79,0x5d,0xa3,0xe0,0x70,0xf1,0x2b,0xc4,0xe2,0x3e,0xae,0xf5,0x7b,0x85,0x3c,0xee,0x88,0x0a,},\"\\xf4\\x45\\xfd\\xcf\\xe2\\x8c\\x17\\xbd\\x44\\x27\\xae\\xa5\\x67\\x6c\\x0e\\x12\\x80\\x84\\x15\\x97\\xe9\\xd6\\x6d\\xe7\\xd7\\xa7\\x17\\x23\\x11\\x09\\x39\\xbe\\xd0\\x0f\\x4e\\xba\\xf9\\x60\\x3d\\x53\\xc9\\xcb\\xf6\\x27\\x1b\\xe5\\x47\\xaf\\x29\\xb2\\xa0\\x45\\xec\\x41\\x28\\x8a\\x7b\\xb7\\x9d\\x66\\x2d\\xc2\\x10\\xe2\\x15\\x95\\x7f\\xa8\\x46\\x88\\xc9\\x16\\x54\\x3e\\x56\\x17\\xf5\\x60\\xe4\\xd3\\x8f\\x73\\xba\\xef\\xc3\\x7e\\x11\\x91\\x4e\\x47\\xc5\\x15\\x06\\x78\\x51\\xe8\\xed\\x21\\x39\\x3e\\x13\\xdd\\x19\\xed\\x9b\\x73\\xd9\\x89\\x45\\xfc\\x82\\x6a\\x25\\x8e\\x95\\x7d\\xc0\\x83\\xdd\\x8e\\x53\\x5c\\x30\\xa5\\x4b\\x42\\x66\\xdd\\x71\\xd1\\x13\\xce\\x85\\x6b\\x46\\x28\\x2a\\x18\\x03\\x36\\x27\\xa9\\x8e\\x64\\x72\\xcc\\xb4\\x63\\xed\\x3d\\x96\\xfa\\x7b\\x35\\x5d\\x3b\\x2c\\x2a\\x2b\\x60\\x10\\xdd\\x14\\xf4\\xea\\x39\\x65\\xdd\\x87\\xbe\\x1c\\x42\\x9b\\xde\\xa8\\x30\\x0b\\x4b\\x0b\\x44\\x45\\x86\\x35\\xb4\\x97\\x9f\\x5e\\x3e\\x8e\\xb5\\xc6\\x18\\xd4\\xe1\\x3e\\x1d\\x68\\x8b\\xf8\\x8c\\x7e\\x4a\\x3d\\x93\\x8e\\x84\\x33\\x6d\\x67\\xbe\\x68\\xdf\\x34\\x35\\xc5\\xc9\\x90\\x86\\x32\\x1c\\x02\\xe1\\x3b\\x4a\\x12\\x52\\x4b\\x34\\xe4\\x6a\\x0b\\x4d\\x27\\xf3\\x0d\\x7e\\xd4\\xf5\\xce\\xcb\\x36\\xde\\xad\\xf0\\x9e\\x7e\\xfc\\xc7\\x55\\xca\\x66\\x75\\x68\\x29\\x79\\x14\\xc6\\xbc\\x24\\x06\\x27\\xd9\\xd0\\x9a\\xac\\xf8\\x54\\x15\\x41\\x2c\\x06\\x35\\x62\\x34\\x53\\x27\\x8d\\x9b\\xf0\\xe1\\x0e\\xec\\x65\\xfc\\x72\\xaf\\xff\\xfa\\x93\\x92\\xdc\\x78\\x81\\xd1\\xe5\\xc7\\x60\\xa4\\x02\\x80\\xf1\\x6b\\x14\\x75\\x12\\x7b\\x91\\xb6\\x9c\\xcb\\x65\\xdc\\x4b\\x35\\xde\\x10\\xf9\\x43\\x25\\xc0\\xcb\\xe1\\xc4\\x70\\x19\\xa2\\xea\\xf2\\xb4\\xba\\x92\\xd7\\x85\\x22\\x9a\\xac\\xfa\\xd1\\x82\\x6e\\xbb\\xde\\xbe\\xfb\\x7d\\xad\\x4b\\x05\\xf8\\x82\\x43\\xe1\\x5f\\x27\\x97\\x66\\xe3\\x32\\x1d\\xd8\\xdb\\xa6\\x50\\x44\\x4d\\x81\\xfb\\x08\\x78\\x76\\x7a\\x9c\\x63\\x53\\x4b\\xb4\\xba\\x21\\x28\\x5a\\x24\\x16\\xcb\\x8f\\x85\\x6d\\x11\\xa9\\x6e\\x0a\\x8c\\x8d\\xe1\\xe1\\xa7\\x51\\x32\\xf1\\x56\\x4c\\xd9\\x94\\x99\\x56\\x90\\xbb\\xed\\x2e\\xe1\\x54\\x53\\x7f\\xb6\\xf2\\x79\\xfb\\x09\\xc8\\xde\\xa6\\xf6\\xaf\\xab\\xc6\\x28\\x56\\xe3\\xd1\\x28\\xfd\\xfa\\x79\\xfc\\x49\\x76\\x19\\x3b\\xb9\\xb3\\x36\\x86\\x1e\\x47\\xb5\\x6d\\xc2\\x58\\x23\\x93\\xd2\\xe5\\x44\\x65\\x1a\\xc8\\x5b\\xc5\\x8e\\x9e\\x6a\\x94\\xdc\\x4c\\x39\\xc4\\xef\\x72\\x53\\x8a\\x14\\xf8\\x56\\xcd\\x95\\xc3\\xe2\\x79\\x0a\\xde\\xe0\\x3a\\xb2\\xe5\\x2c\\xa0\\xae\\x47\\x1d\\xe5\\x02\\xcb\\x19\\xe6\\x76\\xaf\\x35\\xf5\\xf9\\x3d\\x84\\x0f\\xef\\x96\\x06\\xcb\\xe9\\x2d\\x8b\\xc2\\x50\\x06\\x10\\x5d\\x92\\x34\\x45\\x88\\x83\\x88\\x42\\xc3\\xbe\\x50\\x5c\\x73\\x50\\xe3\\x51\\xb7\\x35\\xe6\\xcc\\x6f\\xb7\\x92\\x75\\xb2\\x7b\\xd9\\xeb\\xd3\\x6b\\xa4\\xd0\\x60\\xac\\xee\\x73\\xb5\\xa3\\x15\\xce\\xff\\xab\\x86\\xd0\\x6f\\x21\\x68\\xa6\\x70\\x65\\x57\\x81\\x96\\xa0\\xed\\x04\\xa4\\xdd\\x71\\xd6\\x73\\x48\\x37\\xdb\\x08\\x38\\x57\\xab\\x1e\\xb5\\xe0\\xee\\xc4\\xff\\xba\\xc9\\x54\\x4f\\x4e\\xc1\\x9b\\xde\\x19\\x4d\\xf8\\x4b\\x1c\\x84\\x83\\x41\\x57\\x4b\\xf1\\x0d\\xae\\xe8\\x5b\\x81\\x78\\x19\\x6f\\xb6\\x08\\x12\\x3a\\x80\\x81\\x71\\xd7\\x3c\\xe4\\x20\\x6a\\xd6\\x52\\x16\\xad\\x1a\\x5c\\xbd\\xe4\\x0b\\x19\\xd6\\xae\\x7f\\x40\\xdf\\x97\\xab\\x84\\x32\\xe2\\xc5\\x3a\\x50\\x4e\\xd1\\x22\\xe2\\x5f\\xb7\\xa5\\x1c\\x14\\x35\\x4a\\xb3\\x92\\x8e\\xde\\xb3\\x9c\\x29\\xeb\\x24\\x6b\\x74\\xa0\\x76\\xf8\\x9d\\x03\\x50\\x4f\\x40\\x1b\\xd1\\x76\\xb5\\xcf\\xfe\\xe4\\xb9\\xdb\\x09\\x7c\\x45\\x76\\x4f\\x51\\xaa\\x37\\x67\\x04\\xb5\\xa7\\xf2\\x10\\xb3\\xf1\\xa9\\x05\\xe2\\x5d\\x67\\x00\\x2f\\x65\\x57\\xeb\\xb7\\x49\\x73\\x7c\\xda\\x31\"},\n{{0x2a,0xac,0xc8,0x19,0x7f,0xf8,0xfa,0xe1,0xc1,0xcf,0x38,0x62,0xe3,0xc0,0x4a,0x21,0x78,0x29,0x51,0xf8,0xe4,0x8e,0x40,0xb5,0x88,0xf8,0xbc,0x74,0x60,0xc3,0x0a,0x03,},{0x9a,0x1b,0x01,0xe2,0x15,0x4f,0x1c,0x36,0xa8,0xe1,0x6b,0x79,0xee,0x7d,0x2d,0x05,0xb8,0x71,0x2e,0x0d,0x27,0xa0,0x61,0xa6,0xd4,0x1d,0x47,0x57,0x78,0xb0,0xdf,0x8c,},{0x64,0x7c,0xdd,0x6c,0x1a,0x67,0x29,0x0e,0x57,0x67,0x6a,0x78,0x11,0x3a,0xaa,0xdc,0xa6,0x9a,0xc5,0x7b,0x99,0x77,0x15,0xc5,0x09,0x89,0x5b,0x8c,0x5c,0x94,0xe8,0x2c,0x0b,0x6a,0xce,0xcc,0xf3,0xba,0x8b,0xd7,0xcf,0x61,0x75,0x2b,0x1b,0x19,0xd1,0x3b,0x49,0xf1,0x5f,0x8b,0xfa,0x04,0x6e,0xb4,0x42,0xa5,0x5c,0xd5,0xba,0xb1,0x42,0x02,},\"\\x5d\\x82\\x75\\x2c\\xe5\\xda\\x31\\x80\\xfa\\xf4\\x78\\x7a\\xed\\xfb\\x19\\x29\\x4b\\x43\\x48\\xa1\\xd9\\x20\\x2c\\x85\\x39\\x83\\x31\\x32\\x3e\\x0f\\x42\\xb0\\x83\\x52\\x27\\xe6\\x8e\\x11\\x56\\xf2\\xd4\\xba\\x2f\\xe4\\x50\\xe6\\xd6\\xef\\x2b\\x92\\xd8\\x9b\\xbb\\xe4\\x09\\x6e\\x12\\xca\\x83\\x97\\xeb\\x2f\\x45\\xe6\\x76\\xf1\\x67\\x3a\\xa4\\x1c\\x95\\x9f\\xcd\\x30\\xd5\\x57\\x88\\x53\\xb5\\xdb\\xd1\\xc0\\xd5\\xb3\\xa0\\xf0\\xd8\\x70\\xec\\xa7\\x1e\\xa1\\x33\\x90\\x11\\x1b\\x25\\x8f\\x65\\x48\\xb3\\x2f\\x37\\xa0\\x5e\\x97\\x44\\xa6\\x56\\xfd\\x77\\x8d\\x65\\x72\\x19\\x65\\xc6\\xd9\\xb3\\x28\\x60\\x0b\\x45\\x70\\x47\\x70\\xe0\\x4b\\x09\\x97\\x90\\xaa\\x78\\x84\\xf0\\x0d\\x7b\\xb7\\x65\\x9e\\x33\\x72\\x10\\xbd\\xc2\\x3e\\xaa\\x71\\xd7\\xb0\\x16\\x03\\x0a\\xca\\x62\\x23\\xb5\\x56\\x9b\\xdf\\xc2\\x90\\x81\\x1a\\xac\\x40\\x95\\x24\\xdc\\xcb\\xf9\\xba\\xbc\\xbe\\x4b\\xf2\\x09\\x46\\xb5\\x44\\x31\\x7c\\xa6\\xf2\\xf9\\x18\\x31\\xc7\\x9f\\xb2\\x73\\xb6\\x40\\x4e\\xb4\\xe6\\x1e\\x1f\\x7b\\x10\\x6e\\xbd\\x0d\\xb9\\xf2\\xb1\\x97\\x4d\\x2f\\x03\\x1b\\xce\\x25\\x80\\x36\\x06\\x55\\x2c\\x34\\x41\\x65\\x5e\\xfc\\xf2\\xc7\\xea\\x52\\xad\\xcb\\x30\\x99\\x3d\\x85\\xf2\\xdd\\xa7\\x96\\x03\\xe9\\x41\\x5a\\x02\\x32\\x45\\xa6\\x6c\\x07\\xa9\\x56\\x93\\x31\\x46\\xf5\\x3c\\x99\\x3c\\x08\\x89\\x18\\x08\\xb8\\x16\\x6b\\x30\\x72\\x1f\\xbd\\x1f\\x8a\\x1b\\x93\\x7d\\x14\\x07\\x0d\\x78\\x6e\\x9e\\xb4\\x51\\xf2\\xab\\x51\\x42\\xf8\\x3a\\x60\\xf3\\x5d\\x76\\xad\\x8b\\x81\\xd6\\xa5\\x7c\\xf3\\x68\\xfc\\x6f\\xca\\xcc\\x0c\\x47\\x58\\x44\\x0d\\x9c\\xd5\\x95\\xb1\\xb0\\x94\\x2a\\x36\\x55\\xe2\\x50\\xda\\x98\\x3b\\x72\\x41\\x54\\x6d\\xcf\\xbe\\x0a\\xe8\\x10\\x77\\x65\\x02\\x95\\x40\\x9f\\xf9\\xe9\\x09\\x77\\xfb\\x99\\x60\\xcb\\xf4\\x0a\\x2a\\xf5\\x17\\x74\\x02\\xba\\x2f\\xaf\\x50\\xdb\\x6f\\x1a\\x73\\x65\\xcf\\x99\\xe9\\x92\\x42\\x9e\\x38\\xdb\\x43\\xea\\x83\\xfd\\xdc\\x95\\xa6\\x48\\x67\\x6c\\x0b\\x16\\xbc\\x95\\x2b\\x15\\xde\\x99\\xd5\\x2f\\x6b\\x52\\x33\\xda\\x4e\\xae\\x19\\x78\\xe8\\xba\\x25\\xe6\\x23\\x5a\\xfb\\xc5\\x11\\xc7\\x6c\\x4c\\x87\\x4c\\x92\\x37\\x92\\x2b\\x1c\\xef\\x08\\x47\\xd0\\x7a\\x80\\x20\\x0c\\xba\\xe3\\xc7\\xc8\\x1f\\xcb\\xd0\\xd1\\x72\\x52\\xed\\x8c\\x61\\xad\\x19\\x54\\xfc\\x86\\x2e\\x1e\\x04\\x44\\x4c\\x32\\x08\\x6f\\xee\\x38\\x0d\\x1c\\x17\\x54\\x13\\x22\\xb9\\xa6\\x0d\\xa6\\x62\\x35\\x2e\\x21\\x0e\\x9a\\xe2\\x15\\xe3\\x53\\x29\\x6d\\xb9\\x22\\x33\\x9a\\xa1\\x7d\\x21\\x73\\xec\\x31\\xf1\\xc5\\x30\\xa2\\x4b\\x1f\\x34\\x8a\\x31\\x57\\x2e\\x14\\x69\\xca\\xac\\x80\\x8f\\x9c\\x76\\xec\\x27\\x31\\x87\\x3b\\x80\\x3e\\xad\\x3e\\x54\\xea\\x24\\xbc\\x24\\x49\\x9b\\x97\\x04\\xb3\\xbd\\xce\\x81\\x38\\x9b\\x9d\\x14\\xd4\\x95\\x27\\xc0\\x4b\\x3b\\xb9\\xe3\\xba\\x6d\\x94\\x6c\\xea\\x58\\xcf\\x78\\x6d\\x4d\\x28\\xb8\\x9b\\x41\\xc5\\x82\\x74\\x03\\x5a\\x86\\x90\\x5a\\xd9\\x57\\x58\\xc3\\x16\\x13\\x66\\xab\\x93\\xda\\x81\\xe6\\xb4\\xc8\\x08\\x36\\x4e\\x08\\x7d\\xae\\xea\\x4c\\x4c\\x5c\\x2a\\xa6\\x87\\x19\\x37\\xc5\\xfe\\xab\\xa2\\x14\\x9f\\x01\\xf7\\x38\\xf4\\x53\\x96\\xe6\\x6e\\xa8\\x06\\x32\\x21\\xe1\\xc8\\x1c\\x05\\x25\\x5b\\xa5\\x64\\xad\\x44\\x0c\\xb5\\xd0\\x7c\\xbd\\x4b\\xab\\x94\\x1e\\xa5\\x93\\x24\\x49\\x30\\xbc\\x5c\\x28\\x9b\\x31\\x65\\xd3\\xec\\x88\\x47\\xeb\\xc4\\xb6\\x74\\xc0\\xa4\\x9f\\x91\\x69\\xad\\xef\\x78\\x6d\\x77\\x67\\xbc\\x8f\\x21\\x3d\\xb7\\xd9\\x5c\\x06\\xe9\\x9b\\xc1\\x1e\\x20\\x00\\x55\\xb6\\x5e\\xb7\\x9a\\xda\\xa0\\x1b\\xcd\\x2c\\x85\\xda\\x43\\xce\\x63\\x70\\xe1\\x2e\\x34\\x9b\\xf6\\xd4\\x75\\x48\\x7a\\xff\\xdf\\x92\\xe2\\x0a\\x3a\\xcd\\xed\\x1d\\x76\\xf9\\xe8\\x3e\\x91\\x9e\\x98\\xde\\xf1\\x95\\x07\\x2a\\x50\\xd0\\xc5\\x71\\xdd\\x25\"},\n{{0xff,0x86,0x21,0x56,0xc7,0xea,0xb6,0x81,0xc9,0x5e,0xff,0xf8,0x00,0x3e,0x00,0xa1,0x4f,0x1f,0x0d,0x50,0x5d,0x55,0x07,0xe6,0xe5,0xb3,0x91,0x79,0xdf,0x9b,0x1c,0xda,},{0xe1,0xb8,0x9f,0xb3,0x11,0x14,0xea,0x46,0x10,0x7f,0xfd,0x03,0x29,0xf1,0x06,0x64,0x28,0xde,0x54,0x70,0x8e,0xdb,0xec,0xf3,0xed,0x9d,0x47,0x08,0xcd,0x14,0x3f,0xe2,},{0x4b,0x81,0x37,0x04,0x2d,0x67,0x84,0x75,0x7d,0x4a,0x9c,0x06,0xbc,0x74,0x32,0xf4,0x80,0x9b,0x1c,0x6a,0x90,0x35,0x42,0x73,0x6d,0x9a,0x57,0x66,0x8c,0x20,0x84,0x5c,0x17,0xd4,0x68,0x55,0x70,0x85,0xc5,0x7f,0xb6,0x32,0x13,0xda,0xd3,0xbe,0x0f,0xa3,0x6a,0x11,0x8f,0x7c,0x1a,0xef,0xf2,0x56,0x2f,0xf4,0xb8,0x88,0x8c,0x26,0x90,0x0e,},\"\\xb3\\xd1\\xdb\\x72\\xa6\\xa9\\x85\\xec\\xd7\\x0a\\x2c\\xff\\x6c\\x18\\xc1\\x79\\xe2\\x17\\xd4\\xf4\\x10\\xfd\\x39\\x34\\x96\\x96\\x85\\x90\\x1b\\xd0\\x71\\xbc\\xe6\\xc2\\xfb\\x67\\x63\\xe1\\x0c\\x6f\\xa1\\x6e\\x75\\xa1\\x17\\x60\\x66\\xb8\\xec\\x81\\xae\\x3a\\x80\\x39\\xe7\\x1d\\xc2\\xcd\\xc6\\x4a\\x40\\xfd\\x62\\xb7\\xce\\xe7\\xbe\\x4b\\xa0\\x33\\x2f\\xe4\\x5d\\x0b\\x60\\x15\\x86\\x52\\xe3\\x3f\\x8d\\x3a\\xff\\x3c\\xb4\\xd6\\xb0\\x21\\x74\\x4d\\x0d\\xd1\\x78\\xb1\\xbf\\x0a\\x1c\\xc1\\xd3\\xfe\\x93\\x21\\xbe\\x28\\x42\\x1e\\xb8\\x82\\x63\\xa1\\x24\\xf4\\x97\\x92\\xd0\\x79\\x47\\x5a\\x8c\\x55\\x5f\\xf5\\x69\\x08\\x73\\x51\\x4b\\x5d\\x48\\x3e\\x53\\x21\\x7e\\x0c\\xbb\\x12\\x86\\x2b\\x85\\x0f\\xe3\\x90\\xc8\\xf8\\x30\\x08\\x08\\x6e\\x64\\x9a\\xc9\\x04\\xb0\\x18\\x35\\x0a\\xb4\\x91\\x57\\xee\\x9b\\xca\\xe6\\xc0\\x7a\\x4b\\x87\\x8b\\x48\\xe2\\x5e\\x98\\x4f\\xbb\\x4d\\x36\\xb6\\x1d\\x68\\x9b\\x13\\x46\\x8a\\x28\\xd1\\xe3\\x87\\xe0\\xe8\\x86\\x57\\xf8\\xc8\\xac\\x95\\x86\\xa6\\xe2\\x6c\\xf9\\x4d\\xff\\x6f\\x82\\x64\\xe3\\xff\\x62\\x58\\x86\\x5c\\x6d\\xcf\\x85\\x7b\\x00\\x14\\x78\\x86\\xe1\\x75\\xdf\\x04\\x32\\xe3\\x2f\\x04\\x40\\x0e\\x29\\x9f\\x21\\x18\\x83\\x12\\xb3\\x2d\\xfc\\x05\\x0e\\x7b\\x7e\\x87\\xee\\xaa\\x0c\\xba\\xac\\x6b\\xe9\\x93\\x7a\\x5e\\x0c\\xc3\\x11\\x13\\xde\\x7c\\x8b\\x23\\x3e\\x1c\\xe8\\xe5\\xd9\\xc5\\x64\\xfb\\xe9\\xf3\\x7b\\xbd\\x41\\x1d\\xf7\\xa5\\xe4\\x4e\\x6c\\x7e\\xbb\\x67\\x6d\\x85\\x89\\x4d\\xcc\\xf4\\x86\\x5e\\x4d\\xda\\x0c\\xad\\xef\\x2b\\xbc\\x55\\x00\\x0b\\x3a\\x29\\xf1\\xf7\\x1e\\xf4\\x46\\x1d\\xdc\\x3b\\x33\\x1d\\x91\\x56\\x65\\x34\\xc5\\xd6\\xd8\\x4c\\x73\\x13\\x76\\x29\\x53\\x20\\xf8\\x0a\\xdc\\x90\\x28\\x8f\\x99\\x53\\x55\\x4f\\xcd\\xf9\\x21\\x3d\\xe6\\xa9\\x05\\x21\\x0d\\x4c\\x80\\x64\\xaf\\x91\\xcd\\x98\\x32\\x5e\\xf9\\x18\\x98\\xd3\\x3d\\x70\\x03\\x82\\x02\\xe3\\x2f\\xb6\\x70\\x9c\\xa3\\xd7\\x88\\xfe\\xcb\\xd1\\xb8\\x41\\xfa\\x4e\\x5e\\x90\\x62\\xd6\\x42\\x67\\xc3\\x5c\\xfd\\x44\\x4f\\xb6\\x9e\\x2f\\x60\\x47\\xf5\\x8b\\x1c\\x2a\\xf4\\xcc\\x7e\\x4c\\xac\\x2f\\x89\\x08\\x88\\x36\\x05\\x92\\x11\\x3e\\x96\\xad\\x3a\\x85\\x7e\\xd0\\x5e\\xaa\\xba\\x6f\\x91\\x53\\xef\\x89\\xb9\\x3e\\x00\\xe8\\x74\\x37\\x33\\xec\\x47\\x2d\\x9b\\x0e\\xec\\x1c\\xd8\\xfa\\x52\\x42\\x5c\\x4a\\x26\\xbd\\x7d\\xf7\\x3a\\x27\\x12\\xbe\\xbe\\x51\\xae\\x3b\\x25\\xeb\\x78\\xdb\\x82\\x14\\x90\\x31\\xfe\\x7b\\x28\\x1a\\xf6\\xcb\\x77\\x14\\xed\\xf8\\x9d\\xe9\\x15\\xf3\\x47\\x0f\\x15\\x3e\\xed\\x7f\\x45\\x62\\x43\\xbb\\x90\\x34\\x2e\\x19\\x0e\\x64\\x7f\\x39\\xe0\\x46\\x88\\x3c\\xe2\\x8a\\x89\\x20\\x03\\x31\\x5e\\xa3\\x79\\x42\\x9e\\x95\\x82\\xa9\\x35\\xeb\\x78\\x96\\x33\\x96\\xd1\\x36\\x84\\x5f\\x86\\xc4\\x66\\xe8\\xfa\\xf2\\x27\\x2f\\x43\\xff\\xef\\xc2\\xad\\xa5\\x60\\x1f\\x8a\\x6b\\x2a\\xc4\\xcc\\x6b\\x92\\x82\\x09\\x17\\xf2\\xe0\\x39\\x3c\\x8f\\xaf\\x98\\x2d\\x6c\\x5f\\x4f\\x23\\x0e\\x27\\xce\\x22\\x78\\xa7\\x23\\x77\\x47\\xfa\\x85\\xa9\\xc8\\x57\\xbf\\x18\\x02\\xc3\\xea\\xe0\\xd2\\x35\\xb5\\xad\\x58\\x49\\x7d\\x66\\xa0\\xd3\\xa9\\xba\\xeb\\xcc\\x41\\x7f\\x18\\x33\\xe9\\xcc\\x44\\x60\\xf9\\x75\\xd7\\x28\\x58\\xcd\\x11\\x8d\\x7a\\xaf\\xaf\\x1c\\x87\\x82\\x97\\xca\\xcf\\x71\\xac\\x75\\x67\\x6d\\xc1\\xb4\\xfb\\x51\\xc1\\x77\\x58\\x10\\xd0\\x35\\x37\\xf2\\xd7\\x66\\x27\\x8b\\x99\\x71\\xbb\\x97\\xd3\\xc4\\x9b\\x51\\xfe\\xb2\\x6d\\x37\\x5e\\x0c\\xb9\\x10\\x95\\x74\\xa8\\x16\\xf8\\x4e\\x76\\xfc\\x7e\\xf0\\x72\\xd5\\x79\\x3c\\x2f\\x65\\xab\\x2e\\xfd\\x90\\x52\\xe6\\xb8\\x56\\x9f\\x28\\x05\\x86\\x1c\\x31\\xa7\\x34\\x4a\\x3c\\x44\\x06\\x9a\\x94\\x32\\x0d\\x27\\x4e\\x27\\x12\\x71\\xea\\xfa\\x3b\\xfe\\x64\\xde\\x75\\x37\\x84\\x6a\\x01\\xe5\\x1f\\xda\\xe0\"},\n{{0x58,0x26,0x19,0xab,0x3c,0xf5,0xa3,0xae,0x77,0x66,0x88,0xbf,0x6d,0xba,0xcb,0x36,0x33,0x0a,0x35,0xad,0x75,0x24,0xe4,0x9e,0xf6,0x63,0x68,0x77,0x64,0xcf,0x6e,0xc7,},{0x20,0x02,0xea,0x0a,0x38,0xa3,0x27,0xe0,0x38,0x4a,0xea,0xe4,0x68,0xdb,0x0f,0x6c,0x85,0x16,0xa6,0x96,0x09,0xaf,0x9e,0xee,0x93,0xe9,0xec,0xb9,0x4b,0x44,0x9c,0x66,},{0xfe,0x97,0x01,0xda,0x1a,0xa8,0x1c,0x55,0xba,0xc3,0x36,0x38,0xf7,0x75,0x54,0x2b,0x80,0x44,0x80,0xf3,0x4b,0x7b,0xfc,0x78,0xda,0x99,0x16,0xe5,0x24,0x6a,0x60,0x4d,0x39,0x0b,0xf9,0x20,0xc8,0x72,0xa7,0x79,0x24,0x24,0x6e,0xe8,0xd0,0x39,0x3b,0x20,0x2e,0x7b,0x25,0xb2,0x48,0x4f,0x65,0x4a,0xc3,0x67,0xcb,0x09,0x25,0xec,0xe3,0x05,},\"\\xca\\x74\\x28\\x4f\\x11\\xc5\\x6e\\x25\\x98\\xd7\\x8a\\x4e\\xcd\\x03\\xb4\\x0e\\x01\\x7a\\x55\\x81\\x76\\x01\\x2b\\x26\\xfd\\xf6\\x95\\xc3\\xde\\x98\\xa7\\x4f\\x8f\\x40\\xa4\\x7d\\x79\\x78\\xed\\xc2\\x4e\\xe8\\x09\\x2b\\xfe\\x5e\\x61\\x59\\x68\\x34\\xde\\xed\\x1d\\x9d\\x34\\xa0\\xf5\\xcd\\xae\\xbe\\x34\\x21\\xaa\\x19\\xe0\\x12\\xde\\x86\\x5b\\x9e\\xe1\\xb7\\x34\\x79\\xb2\\xbd\\x1a\\xc9\\x82\\xf9\\x7e\\xd9\\xc7\\xcd\\x20\\x45\\x9c\\x60\\xfb\\xb1\\x1e\\x1e\\x2b\\x4e\\xac\\x5d\\xb6\\x84\\x4c\\x71\\xd7\\x29\\x49\\x50\\x2b\\xba\\x50\\x3a\\xce\\xc9\\x05\\xad\\xba\\x25\\xf6\\xb1\\x19\\xea\\xf9\\x63\\x9f\\xa8\\xab\\xb3\\x02\\xdf\\xf9\\x93\\x2d\\x85\\x0c\\xc4\\x4c\\x57\\xcf\\x90\\xb2\\xe5\\x8a\\x8b\\x52\\x51\\xc1\\x26\\xa9\\xe2\\x8f\\x5c\\x76\\x1b\\x62\\x80\\xe2\\xcd\\xdd\\x79\\xcb\\xd6\\x8e\\x53\\xff\\x4a\\x62\\x26\\xd3\\xbd\\x4c\\x96\\x1b\\x9b\\x9e\\x43\\x45\\xa2\\x54\\x58\\x62\\xc7\\x97\\x38\\x66\\xf0\\x42\\x0b\\x89\\x8e\\x7b\\xae\\xa9\\x0e\\xa4\\xee\\x00\\x40\\x42\\xef\\x38\\xa1\\xfd\\x95\\x6a\\x72\\xfd\\xf6\\xfd\\x43\\x25\\x7d\\xa9\\xfd\\xb9\\x66\\x80\\xef\\x4f\\xdf\\x9e\\x94\\x3d\\x26\\x5c\\xdc\\xf2\\xe5\\x2e\\x32\\x01\\xd5\\x40\\x8b\\xc6\\xce\\x10\\xe5\\x70\\x0a\\xdf\\x12\\xb5\\x5b\\xa1\\x4a\\xa8\\x29\\xd8\\x69\\x1c\\x31\\xf2\\x4f\\xc4\\xa5\\x1c\\xe6\\xfa\\xa1\\xf3\\xef\\x2e\\xad\\x78\\xe5\\xe7\\x53\\x44\\x6a\\xd3\\xfa\\x4a\\x84\\xc1\\x93\\x97\\x9a\\xeb\\xc8\\x30\\x9b\\xad\\x60\\x81\\x4f\\x48\\x59\\xb9\\x31\\xd7\\x04\\x14\\x76\\x44\\x91\\xc6\\xc9\\xed\\x8d\\xb6\\x73\\xc5\\x43\\xd3\\x51\\x85\\xcd\\x28\\x88\\xaa\\x21\\xc1\\xa9\\x20\\x34\\x27\\xe0\\xac\\x0b\\x1f\\xe3\\x4c\\x0e\\x4a\\x40\\x01\\xe0\\x95\\x6c\\x13\\xcb\\x59\\xa3\\xba\\xf8\\x7c\\x21\\x09\\xa8\\x88\\xa4\\xc9\\xe7\\xaa\\x48\\x17\\x67\\xd8\\x02\\x0f\\xf3\\x5d\\xd7\\xc5\\xcc\\xec\\x7c\\x08\\xe9\\x71\\xa7\\xe2\\x18\\x13\\x8c\\x90\\x54\\x6a\\x7d\\xdf\\x36\\xad\\x11\\x4b\\xe5\\x85\\x57\\x43\\x2c\\x2d\\xdf\\x34\\xce\\xd3\\x37\\x9f\\x70\\xd4\\x40\\x7e\\x58\\x79\\xf9\\x84\\x2f\\x38\\x17\\x17\\x05\\x1b\\x16\\x85\\xaa\\x7a\\xb0\\xad\\x38\\x54\\x1e\\xc1\\x68\\xf5\\x1c\\xb6\\x88\\xf3\\xcd\\x1a\\x01\\x9a\\x33\\x6c\\x9f\\x4f\\x3f\\x82\\xde\\x78\\x5c\\x07\\x48\\x67\\xfd\\xc8\\x80\\x0f\\xc7\\x6f\\xba\\x04\\xc8\\xad\\x8d\\xe1\\x0d\\x2e\\x9b\\x43\\x05\\x81\\xbe\\x44\\xc4\\x1e\\xcc\\x8f\\xc8\\xa6\\x16\\x31\\x43\\x99\\xd1\\x8c\\x64\\x79\\xf5\\x7e\\x57\\x3b\\x22\\xa6\\xee\\x5c\\xe2\\xdc\\xc0\\x89\\x48\\xa0\\xde\\x1f\\x0d\\xd2\\x5b\\x65\\x71\\x5a\\xb1\\x8c\\x70\\xc7\\x62\\xfc\\x3d\\x7d\\x60\\x0c\\xad\\x63\\x22\\x60\\x38\\x50\\x9c\\x19\\xab\\x35\\xb5\\x49\\x3e\\xee\\x73\\xa7\\x03\\x73\\x1e\\xc5\\x35\\xc9\\x0c\\x6f\\x06\\xd9\\x4d\\x3e\\x5f\\x7e\\x51\\xa0\\x9f\\x9f\\x8f\\x42\\xc5\\x01\\xb8\\x50\\x46\\x86\\x36\\x5c\\xee\\xe9\\xe0\\xfe\\x00\\x13\\x29\\xf3\\x03\\x52\\x21\\x46\\x71\\x7c\\x6a\\x12\\x58\\xd0\\xf1\\x57\\xcb\\xea\\x4b\\x5a\\x5e\\x3d\\x13\\xbc\\x90\\x7e\\x95\\xfd\\x6e\\x8a\\x71\\x89\\x6a\\x02\\xc3\\x10\\x6b\\xd2\\x6a\\x51\\x00\\x51\\xf1\\xb3\\x02\\x58\\xab\\x27\\xf8\\x75\\x67\\x3b\\x13\\x37\\xee\\x36\\xb7\\x1a\\x37\\x6e\\x0f\\x9e\\x78\\x09\\xa6\\x7c\\x67\\xd9\\xac\\xc1\\x6c\\x25\\x1d\\xcb\\x8c\\x92\\x6c\\x8e\\x93\\x25\\x16\\xd3\\x8b\\x72\\x33\\xea\\xc6\\x15\\x9c\\x59\\xca\\xd0\\x30\\x7c\\x59\\x0e\\x71\\x31\\xb6\\x22\\x19\\x14\\x5a\\xaa\\x35\\x5b\\xfb\\x4a\\xcb\\x6a\\xf0\\xa5\\x50\\x00\\x06\\xcd\\xd8\\xb8\\x13\\xfe\\x19\\x08\\x60\\x2e\\x08\\x74\\xc9\\x62\\x2b\\xb3\\x76\\x73\\xba\\x1a\\xcb\\xa4\\x14\\x23\\x16\\x67\\xbc\\xc4\\x90\\x7a\\xc8\\x71\\xf8\\x7e\\x6c\\xe3\\xf5\\x91\\xc1\\x91\\x71\\x05\\x7a\\x9f\\x45\\x7f\\x53\\x62\\xae\\xda\\x10\\x5d\\x18\\xfb\\x84\\xf7\\xd0\\xf0\\xa7\\xda\\x7e\\xf8\\xda\\x91\\x14\"},\n{{0x2b,0xbd,0x83,0x0c,0xe7,0xde,0xf3,0xfe,0xce,0xa1,0xec,0xd6,0xea,0x0a,0xe9,0xc9,0xf4,0xfa,0x8f,0xfc,0x3b,0x1f,0x19,0x38,0xc5,0x05,0x05,0x1b,0xab,0x40,0xcf,0x7a,},{0x0f,0xdf,0xed,0x8d,0xe3,0xc1,0xea,0xf8,0x91,0xce,0x37,0xe3,0x4c,0xb4,0xa2,0x44,0x1c,0xbb,0xae,0x08,0x83,0x38,0x3d,0x70,0xde,0x24,0x64,0x85,0x0b,0x4a,0x64,0x2a,},{0x13,0xeb,0xc9,0x79,0xa8,0x87,0x10,0xe3,0xc5,0xf3,0x45,0xcf,0xbb,0x82,0x48,0x13,0xb3,0x08,0xa9,0xd5,0xc6,0xde,0xe3,0x28,0xbf,0xd2,0x35,0xa9,0x7d,0xe7,0xb3,0x26,0xde,0x6c,0x73,0x8f,0x96,0xf6,0x98,0x31,0x94,0x92,0x09,0x99,0x68,0x52,0xdd,0x9c,0x09,0x8d,0x58,0x08,0x41,0x87,0x09,0xf2,0xbf,0x51,0x0d,0x46,0xb7,0xf0,0x36,0x06,},\"\\x5f\\x1e\\xde\\xaa\\x3c\\x0b\\x2a\\x63\\x31\\x1d\\x97\\xf1\\xc5\\x4e\\x7e\\x2f\\x68\\x71\\x70\\xe6\\xb4\\x6e\\x21\\x69\\xcb\\xf5\\x6c\\x66\\xf2\\x31\\xbf\\xc4\\xa5\\x76\\xbd\\x2b\\x84\\x20\\xbf\\x35\\x7d\\x3a\\x90\\xf8\\xf3\\x2e\\xa1\\xad\\x99\\x39\\xb4\\x67\\x25\\x4b\\x66\\xa1\\xdf\\x1f\\x5b\\x4c\\xba\\xc6\\x3a\\x5c\\x27\\x24\\x26\\x0d\\x24\\xd8\\xdf\\x8e\\xdb\\x58\\xae\\x24\\x7a\\x25\\x91\\xe9\\x20\\xb1\\xa4\\x20\\xcf\\x8d\\x85\\x39\\xea\\x57\\xdb\\x0d\\xad\\xff\\x1a\\xd3\\xe9\\x8c\\x31\\x72\\xd0\\x33\\x16\\x3c\\xb4\\x34\\xa7\\x66\\xb0\\xc1\\x18\\xa5\\x6a\\xbd\\xcc\\xe7\\x9c\\x82\\xaf\\x7b\\xac\\x74\\xed\\x0e\\xa0\\x24\\xac\\x4c\\xe0\\x22\\x2d\\x0a\\xa9\\x14\\xf4\\x32\\x09\\x2b\\x1b\\x51\\x78\\x04\\xdb\\x59\\x18\\xa8\\x45\\xe9\\xcc\\xa5\\x5a\\x87\\xdb\\x7c\\x28\\x52\\xf7\\xdd\\x2e\\x48\\x36\\x01\\x85\\xcc\\x44\\x2c\\x79\\x30\\xaf\\xe1\\x5d\\xd6\\x22\\xcc\\x02\\xbc\\xd1\\xee\\x77\\x8b\\x59\\x70\\x5f\\x14\\x33\\x32\\x41\\x58\\x8a\\x52\\x2d\\xe2\\x44\\x07\\xe8\\xe6\\xe1\\x0d\\x5e\\xf3\\xa8\\x8e\\x3a\\x3c\\x44\\x38\\xc1\\x7f\\x75\\x04\\x67\\x4f\\xd7\\xe4\\x18\\xcb\\x2f\\x77\\xad\\x0a\\x56\\xd2\\x38\\x67\\x03\\x15\\x5e\\x9a\\x40\\x1c\\x43\\xdd\\xb5\\x1e\\xad\\x55\\x20\\xaa\\x7b\\xa0\\x38\\xe7\\xde\\x53\\x31\\x41\\x8a\\xd5\\x52\\xbd\\xcd\\x18\\x5f\\x50\\x3a\\x85\\x48\\xf5\\x5b\\x63\\x86\\xe4\\x68\\x7c\\xa5\\x15\\xf7\\xc0\\xee\\xa5\\x70\\x98\\x3b\\xfb\\x24\\xbe\\x16\\xf7\\xb3\\x00\\x3f\\xb7\\x56\\xe3\\x26\\x56\\x2f\\x2a\\x32\\xfe\\x65\\xff\\x84\\x4c\\x39\\x84\\xc7\\x2e\\x40\\xdd\\x49\\xe4\\xf3\\xae\\x8c\\x0f\\x81\\x9a\\x79\\x39\\xb2\\xe7\\x36\\xe3\\x81\\xf5\\x82\\x3c\\xbc\\x61\\xb2\\xed\\x01\\xd9\\xb0\\x5c\\xf8\\xb1\\x46\\x48\\xa4\\x8b\\x0d\\x7c\\xbe\\x88\\x2a\\xc1\\x6c\\xad\\xd8\\xc4\\x2a\\xa2\\xc7\\x02\\x46\\x34\\x7b\\x4d\\x84\\x95\\x36\\xa7\\xac\\x22\\xc7\\x20\\xda\\x3c\\xf1\\x78\\x72\\x5e\\xe5\\x57\\xa9\\x2c\\x25\\xb1\\x2b\\x8b\\x95\\x6d\\x3b\\xf4\\x80\\x2e\\x9e\\x8a\\x15\\xb5\\xab\\x75\\x42\\x35\\xcc\\xa0\\xe5\\xb7\\xe5\\x5e\\x4a\\xec\\xe4\\x5a\\x47\\xe0\\x84\\xce\\x14\\x47\\x44\\x05\\x98\\xef\\x5d\\x4f\\x5f\\xdc\\x2c\\x98\\xa5\\xad\\x13\\x6c\\xff\\xbf\\x87\\xd3\\xcf\\x52\\xf6\\x73\\x8c\\xca\\x79\\x48\\x35\\x60\\x92\\x07\\x8f\\xdf\\x25\\x45\\x77\\xf5\\x59\\x69\\xa0\\xc6\\x52\\x46\\xda\\xc8\\x09\\xa2\\xfc\\xa1\\xf6\\x0a\\x1d\\x92\\x98\\x77\\xb9\\xa6\\x54\\x0e\\x88\\xa9\\xe6\\xe9\\x15\\x59\\x38\\xd2\\x2c\\x68\\x7e\\x63\\xb3\\x87\\x53\\x4d\\x38\\x5e\\x89\\x61\\xe5\\x88\\x67\\x43\\xf9\\x5f\\x4a\\x70\\x80\\xd9\\x16\\x62\\x45\\x17\\xb1\\x53\\x36\\x03\\x0a\\x46\\x71\\x4b\\x16\\x8b\\x83\\xd6\\xf9\\xcc\\xe0\\x60\\x66\\x49\\xc0\\x1f\\x0a\\x1d\\x0a\\x2a\\x53\\xf5\\xe3\\x78\\xf6\\xaa\\x98\\xc3\\x84\\xaa\\xfb\\x3e\\xef\\xdb\\x34\\x21\\xfa\\x3a\\xc9\\x8a\\x0d\\x3a\\x9c\\x02\\x9c\\x23\\x00\\xae\\x02\\x41\\x06\\x7d\\x1a\\x4f\\xc9\\x2e\\x43\\x86\\x88\\xea\\x88\\x9f\\xcb\\x1a\\x1a\\x9e\\x86\\x34\\xb9\\x16\\xc6\\x0b\\xaa\\x0c\\x18\\xbf\\xcd\\x13\\x9b\\xfe\\x30\\x17\\xbf\\xbe\\x16\\x29\\x13\\x43\\xce\\x86\\x05\\xbb\\x78\\x72\\x55\\x8c\\x6b\\x5f\\xd5\\x6d\\xfd\\x22\\x15\\x77\\xed\\xcf\\xfa\\xa8\\xbd\\xa3\\x4d\\x7a\\x11\\xab\\x8c\\xb2\\x78\\x28\\x8e\\x58\\x34\\x84\\x26\\x76\\xfc\\xcf\\xfa\\xa9\\x11\\x1b\\xce\\xd2\\xb3\\x57\\x5f\\xdd\\x49\\x62\\x1b\\x76\\xe8\\xd1\\x29\\xb6\\x17\\x00\\xee\\xab\\x03\\x14\\xef\\x94\\xd5\\x50\\x50\\x6a\\x4b\\x8d\\x1e\\xe6\\x55\\x08\\xd8\\x9d\\x0e\\x99\\xe9\\x33\\x6b\\x41\\xd9\\xf7\\x4a\\xa4\\xd7\\x22\\x11\\x4d\\xe0\\xf3\\x1e\\xcf\\x00\\xb0\\x97\\xf5\\x3c\\x9a\\xca\\x9c\\x7a\\x28\\x5b\\x58\\xa3\\x5d\\x70\\x29\\x8c\\x5c\\x34\\xf7\\x4b\\x4a\\x70\\x53\\x08\\x03\\x31\\x00\\x34\\x9f\\x0c\\x62\\xf9\\xc2\\xeb\\xf7\\xde\\xad\\x0a\\x77\\xb2\\x98\\xeb\"},\n{{0x1a,0x7a,0x3c,0x2f,0x54,0x81,0x13,0x1b,0xe5,0xf8,0x68,0x45,0x6a,0xa2,0xfa,0x90,0xe5,0x6d,0x52,0xcb,0x72,0x1c,0x71,0x84,0xeb,0xff,0x06,0xfe,0xd2,0xfe,0x68,0x5d,},{0x7c,0x2a,0xd0,0xf2,0xa5,0x70,0x55,0x03,0x26,0xfb,0x50,0xa8,0x50,0x83,0x58,0x21,0x67,0x6d,0xe1,0xde,0x12,0x7f,0x6d,0xe1,0x67,0x02,0x99,0xd8,0x14,0xf6,0xe3,0xce,},{0x97,0x61,0x60,0xfb,0x5b,0xbd,0xab,0xe5,0xc8,0x96,0x2f,0x23,0xba,0xba,0xcf,0x0b,0x0a,0xb4,0x1c,0x2b,0xb1,0x3e,0x9c,0x0d,0x44,0x90,0x67,0xb7,0xde,0xcc,0x7d,0xb4,0xe9,0x4e,0x76,0xa7,0x1b,0x9c,0x0a,0xc4,0xd6,0xaf,0x38,0x7a,0x72,0xa8,0xcd,0x73,0xe3,0xbc,0x63,0xb7,0xed,0x65,0x0b,0xee,0xbf,0x17,0x42,0x4c,0x49,0x0b,0xd6,0x0d,},\"\\xc6\\x28\\x34\\xd9\\xd5\\x5d\\x1a\\x44\\x03\\xe9\\x25\\xd0\\xa5\\xb5\\x52\\xda\\x17\\x4c\\x02\\xf4\\xe9\\x45\\xde\\xc3\\x38\\xc1\\xbb\\xb2\\xae\\xb4\\xff\\x40\\x02\\x0e\\xf7\\x0f\\xf5\\x05\\x20\\x5c\\xf8\\x81\\xb6\\x29\\x96\\x0a\\xbd\\x62\\x76\\x4e\\x5a\\x54\\xf2\\xb5\\x10\\x56\\x67\\xb1\\x1c\\x7d\\x5b\\x7a\\x4c\\xcc\\x3f\\x48\\x8b\\xdd\\xdb\\x95\\x8a\\x7b\\xe9\\x54\\x62\\x07\\xe6\\xc4\\x67\\x18\\x97\\xc0\\x53\\x50\\x8e\\x1f\\xd8\\x32\\x22\\x13\\x0a\\x79\\x33\\x97\\x6d\\x2b\\xec\\x61\\x4e\\xd8\\xf9\\xb6\\xa6\\xb9\\xf4\\xef\\xb2\\xa5\\x8b\\x9d\\x00\\x5b\\x94\\x3e\\x42\\xf1\\x71\\xb7\\x09\\xa7\\x31\\x30\\x70\\xcb\\x2e\\x06\\x8d\\xa3\\x9c\\xf9\\x99\\x22\\xb6\\x9e\\x28\\x5c\\x82\\xad\\x97\\xf2\\xd6\\xc7\\x79\\x22\\xca\\xe2\\xb5\\xe3\\x20\\xe8\\x35\\x77\\xc0\\xd0\\x88\\x76\\x1e\\xc8\\x81\\x52\\xc2\\x97\\x49\\x29\\x78\\xa9\\xd7\\xa3\\xff\\x67\\xed\\xe4\\x4c\\x2a\\x70\\x7c\\xf3\\xe2\\x35\\x2e\\x23\\x2f\\x53\\xc8\\x78\\x2b\\xa4\\x89\\x28\\xa9\\x7f\\x8a\\x36\\xb2\\x0a\\x41\\x68\\x16\\xe9\\x45\\x79\\xb9\\xd7\\x25\\x0a\\x29\\xdc\\x84\\x70\\xf6\\x3a\\x70\\x58\\xe2\\xd2\\xa9\\x9d\\x6f\\x0c\\xcb\\x53\\x0d\\xf5\\x96\\x95\\x05\\xef\\x5c\\x78\\x44\\xeb\\x16\\x7d\\x20\\xf4\\x12\\xa5\\x08\\xfa\\xb1\\xf8\\xcd\\x9c\\x20\\xc5\\xeb\\x9a\\x41\\x7a\\x54\\x12\\xb5\\xda\\x6a\\x57\\x13\\x57\\x59\\xfa\\xb1\\x7f\\x63\\x14\\xf6\\x8d\\xf3\\x5b\\x17\\x72\\x42\\x14\\x43\\x67\\x6f\\x31\\x25\\x79\\xaf\\x6b\\x14\\x11\\x53\\x5a\\xda\\x8f\\x76\\x01\\x2b\\x69\\xbb\\xeb\\x60\\xb2\\x89\\x7e\\xe6\\x60\\x7c\\xb3\\x69\\xcd\\xf5\\x2f\\x4f\\x6d\\xdf\\x88\\xcd\\xb2\\x63\\x0d\\x78\\x89\\x6f\\x13\\x61\\xfe\\xa2\\x2a\\xe6\\x34\\x21\\x76\\x96\\xff\\x11\\x4f\\xb4\\x2d\\xbe\\x4f\\x43\\x46\\xf1\\xbe\\x5b\\x57\\xad\\xb3\\x84\\xae\\x7e\\x49\\xb4\\x1f\\x74\\xb3\\x1b\\x9a\\x62\\xbc\\x69\\xdc\\xa1\\x65\\x89\\xc6\\x34\\xeb\\x9d\\x7c\\x6c\\x94\\xf8\\xec\\xe4\\x4b\\x60\\x62\\x8f\\x98\\xe1\\x02\\x4c\\xf3\\x2e\\x3e\\x3d\\xd6\\xdc\\xe5\\x5a\\x12\\x22\\x53\\x2f\\x49\\x0d\\x63\\xe6\\xa2\\x75\\x28\\x1c\\x0f\\x3a\\x6c\\x10\\x18\\x91\\xb8\\xd5\\x7a\\x45\\xde\\x11\\xde\\x35\\xeb\\xb1\\x51\\xc0\\xdc\\xd7\\x5e\\x6c\\x05\\x0b\\x3c\\xd8\\xba\\xba\\xe8\\x45\\xc3\\x9f\\x66\\xc3\\x6c\\x77\\xcd\\xe0\\x5b\\x68\\x3e\\x4f\\xb0\\x10\\x3d\\x93\\xe7\\x65\\x93\\x35\\xc8\\x7f\\xc0\\xe3\\x23\\x5b\\x2e\\x82\\x48\\x8c\\xda\\xbe\\xb5\\xc5\\xc8\\x75\\x80\\x87\\x45\\xee\\xa9\\x2d\\xe8\\x6b\\x8e\\xfc\\xb6\\x3e\\x16\\xd0\\x82\\x91\\x9a\\xee\\x2e\\x92\\x89\\x9c\\xb0\\xbc\\xf1\\xc1\\x42\\x15\\x77\\xa4\\xa0\\xd9\\xdb\\x09\\xee\\x1f\\x9f\\xeb\\x92\\xa5\\x38\\x21\\x03\\xcf\\x7c\\x32\\xcf\\xe4\\x63\\x72\\x5a\\xe4\\x86\\x6d\\xaa\\xfe\\xda\\x05\\x34\\xc1\\x69\\xf8\\xf9\\xbe\\x40\\x4f\\x3b\\xaa\\xe1\\x23\\xfa\\x76\\x8a\\xce\\x46\\x17\\x8d\\x4b\\x9b\\xbc\\x5b\\xd7\\xae\\xec\\x79\\x03\\xb0\\xa5\\xbc\\x57\\x53\\x89\\x86\\xee\\x09\\xe0\\x7e\\x32\\x07\\x7b\\x3b\\x9d\\xe5\\x0d\\xd1\\x96\\x7a\\x37\\x2c\\x38\\x5a\\xc8\\x86\\x28\\x7c\\x18\\x45\\x1a\\x64\\xef\\xb3\\x7d\\x05\\x6f\\x9f\\x41\\x94\\xc0\\x8b\\x1e\\x3e\\xc9\\x70\\x22\\x26\\x7b\\xf0\\x04\\x3c\\x13\\xd2\\x6b\\x9c\\xe1\\xf5\\x39\\x05\\xf6\\xe4\\x1b\\x3d\\x99\\xdc\\x81\\xb3\\x31\\x90\\x9b\\x72\\x26\\x66\\xef\\x24\\x32\\xe6\\xaf\\x8a\\x45\\x31\\x07\\x53\\x12\\x30\\xce\\x4a\\x1a\\xf8\\xee\\xd6\\x26\\xda\\x22\\x3d\\xa7\\x6b\\x46\\x50\\x7e\\x33\\xd7\\xcd\\xbd\\xe0\\x2d\\x41\\x10\\x40\\xc8\\x9a\\x11\\xd9\\x51\\x56\\xed\\x4a\\xc2\\x60\\x5b\\x82\\x69\\x39\\xc6\\xcf\\x87\\x7b\\x4e\\xe7\\x36\\xc5\\xda\\x77\\xcf\\x46\\x50\\xa9\\x99\\x7a\\x3b\\x9c\\xf4\\x6a\\x82\\xba\\x2b\\xc0\\x13\\x33\\xc0\\x44\\x78\\xb5\\xc9\\x2e\\x24\\x98\\xbd\\x00\\x2f\\x01\\x31\\x40\\xae\\xdb\\x30\\x1b\\x95\\x99\\x3d\\x1d\\x75\\x08\\x70\\xd9\\x88\"},\n{{0x19,0x1a,0x1d,0x90,0x32,0x1c,0x7f,0x4e,0x74,0x94,0xbb,0x98,0x29,0x09,0xa9,0xeb,0x40,0xc3,0x34,0x1d,0xd3,0x2a,0xe4,0xd9,0x67,0x50,0xb7,0xd0,0x29,0x66,0xb4,0x0f,},{0x95,0x62,0xd9,0xe2,0x13,0xf1,0x45,0xc4,0x56,0x93,0x5b,0x70,0x31,0xc6,0x80,0x66,0x9f,0x8b,0xbd,0x31,0xa4,0xc2,0xed,0x3c,0x91,0xc4,0x00,0x2a,0x56,0x29,0xe9,0x7b,},{0x74,0xcb,0x02,0x8d,0xc6,0xb7,0x5b,0x37,0xa1,0xda,0xea,0x1c,0xf8,0x84,0x65,0xdb,0x83,0xa0,0x09,0x3f,0xec,0xb2,0x2d,0x99,0xba,0x85,0x5e,0x9a,0xb5,0x9d,0x05,0xcb,0x22,0xc8,0x7d,0x0b,0x09,0xdf,0x7c,0x11,0x62,0x13,0xba,0xa8,0xf1,0x89,0xb2,0x70,0x3f,0xf9,0x53,0xcd,0x20,0x2e,0xb9,0xde,0xa3,0x97,0x6e,0xe8,0x8f,0x5f,0xa7,0x03,},\"\\x85\\x89\\x0d\\xb4\\xe2\\xfb\\xce\\x09\\x3d\\xde\\x5a\\x80\\xbf\\x8f\\xe0\\x9a\\x98\\x4b\\x83\\xa4\\x9b\\x7c\\xcb\\x5d\\x4b\\x06\\xcd\\xaf\\xdd\\xd3\\x82\\xe4\\xb8\\xa8\\xa5\\x05\\x30\\xe8\\x2c\\x20\\x06\\x12\\xc9\\xd7\\xd8\\xa0\\x89\\xbc\\x8a\\xa8\\x45\\xc3\\xcf\\xcc\\x38\\xa6\\x19\\x5d\\x21\\xc2\\x61\\x8c\\x3d\\xba\\x2b\\x57\\x09\\x20\\xec\\xcf\\xcd\\x23\\x6f\\x17\\xf0\\x8d\\x81\\x42\\x68\\xf8\\x82\\x24\\x2d\\xdf\\x07\\x02\\xda\\x87\\x85\\xf4\\x07\\xaa\\x8f\\x86\\xfe\\xcf\\xa9\\x03\\xc4\\x8d\\xa8\\x3f\\x83\\x97\\x77\\xeb\\x6b\\x4a\\x2b\\xbf\\x5d\\xf7\\xa4\\xda\\x53\\x47\\x5a\\xf1\\xff\\xe4\\x4b\\x5f\\xe0\\x07\\x2b\\x8f\\xbf\\x3d\\x26\\xe6\\xd8\\x9e\\xa6\\x7d\\x8a\\xc8\\x45\\x94\\x92\\x89\\x0a\\xda\\x65\\x7e\\xb3\\xdc\\x24\\x92\\xb8\\x8d\\xe1\\x75\\xb4\\xbb\\xa1\\xa5\\x08\\x06\\x4d\\x61\\x96\\x74\\xaa\\xae\\x2a\\xf0\\x9d\\x31\\xa5\\xc2\\x7c\\x8d\\x5d\\x5a\\x29\\xb0\\x37\\x79\\xf4\\x28\\x6b\\x89\\x66\\xce\\x40\\x7e\\x6f\\xf6\\x92\\xfb\\x94\\x25\\x20\\xa9\\x93\\x8d\\x69\\xcc\\x70\\xac\\xb0\\x6b\\x01\\x4b\\x6d\\xfc\\x19\\x83\\x42\\x06\\xcf\\x1a\\xc6\\xc4\\x48\\xae\\x6f\\x07\\x80\\x25\\xb5\\x5f\\x3d\\x82\\x72\\x01\\x26\\x8a\\x92\\xad\\xd9\\xad\\x17\\x8e\\xf7\\x6a\\x29\\x89\\xfe\\xdc\\x6e\\x39\\xf4\\xeb\\xb9\\xf9\\x6c\\x9b\\x83\\x52\\x69\\x4f\\xa5\\x4f\\xa0\\x22\\x01\\x9c\\x0e\\xc0\\x01\\x2d\\x0d\\x76\\x9e\\x23\\x67\\x80\\x3f\\x92\\x5f\\x17\\x5f\\x9f\\xb9\\xcb\\xec\\x4a\\x0c\\x9c\\x1e\\x2c\\x83\\xea\\x57\\xe6\\xa9\\x2a\\x17\\xf5\\x55\\xca\\xb9\\x34\\x27\\x1e\\x72\\xc8\\xcc\\x32\\x15\\xfc\\xb8\\x7c\\x20\\x53\\x9b\\xf1\\x42\\x77\\xb1\\xbf\\xbd\\x6e\\x58\\x80\\xef\\x95\\x3f\\xc7\\x5f\\x23\\xc0\\xdd\\x4f\\xcc\\x1e\\x0b\\xe3\\x40\\xaf\\x94\\x7d\\xe0\\x2e\\x87\\x7f\\xd5\\xc7\\x7d\\xd1\\xdf\\x7b\\x41\\x4b\\x5c\\x0b\\x40\\xc7\\x49\\x56\\xa5\\x45\\xa1\\x15\\xb0\\xc6\\x99\\x3a\\xb2\\x33\\xb7\\xe7\\x2c\\x82\\x2b\\x6b\\x33\\x81\\xbb\\x1f\\xc1\\x08\\x75\\xbf\\xfe\\x3e\\x2e\\xd1\\x19\\x0f\\xa3\\x3f\\xc1\\x5d\\xa0\\x83\\x79\\x4f\\xcc\\x2c\\x5b\\xf5\\xa0\\x79\\x09\\x06\\x3c\\xb2\\x89\\xa0\\x8a\\x2c\\x8a\\x33\\xd3\\x43\\x84\\x2c\\x2d\\x6a\\x3c\\xfa\\x2a\\x16\\xca\\x2e\\xaf\\xca\\xb7\\xea\\x10\\x0d\\x1c\\x71\\x4b\\xaa\\xbb\\x71\\x49\\xf0\\x7e\\x25\\xde\\xe3\\x23\\xe7\\x80\\x75\\x7d\\xfa\\x80\\x16\\xfa\\xa7\\xc0\\x62\\x62\\x22\\xc3\\x65\\xf8\\xf2\\xf6\\x68\\x7d\\x1d\\xed\\x23\\x4f\\x79\\x9c\\xc5\\x0d\\x1c\\xd2\\x6b\\x4c\\xfa\\x40\\x45\\x91\\x70\\x56\\xfc\\x79\\xc3\\xb8\\x8b\\x2b\\x19\\x08\\xe3\\x72\\xdf\\x66\\xda\\xc8\\x73\\x46\\x31\\x64\\x83\\x49\\xbc\\x37\\xfa\\x34\\xb2\\x5f\\xff\\x3b\\x07\\x47\\xb6\\xbc\\x16\\xb9\\x4e\\x3e\\x58\\x95\\xe4\\xbb\\xd9\\x3d\\x47\\x8a\\x6c\\x1f\\x75\\xe4\\xfa\\x30\\xfa\\xa9\\x22\\x04\\x9e\\xd4\\xc5\\x0f\\x12\\xf4\\xb3\\x12\\xa8\\x97\\x4d\\x0f\\xed\\x8d\\x44\\x25\\x5d\\xcb\\x2b\\xf0\\xfe\\xbe\\x47\\xfb\\x3f\\xb8\\xed\\x99\\x03\\xb5\\xba\\x4c\\xa1\\x8e\\x3c\\xc6\\x76\\x2c\\xfa\\x1e\\xaf\\x04\\xdf\\xa9\\x44\\xd4\\x96\\xe0\\xfe\\x8b\\xb7\\xdc\\x04\\x54\\x51\\x39\\x6b\\xfa\\xba\\x54\\x85\\xd9\\xd5\\xf3\\x91\\xa9\\x54\\xc3\\x71\\x42\\x53\\xcc\\xd9\\xb1\\x99\\x64\\xd4\\x28\\x06\\x80\\x72\\x07\\x83\\x03\\x6b\\x3a\\xbf\\xaf\\x28\\x84\\x58\\x3e\\xa5\\xbd\\xbc\\xf6\\x9d\\x08\\x89\\x7a\\xb2\\x88\\x31\\x46\\x35\\xab\\xb4\\xc2\\x96\\x4b\\x71\\xad\\x92\\x91\\xfe\\xb5\\xb6\\x1f\\x80\\xe9\\xb0\\xcc\\x07\\xf9\\x12\\xa8\\xe5\\x59\\x8d\\x55\\x48\\xde\\xfe\\x0e\\xea\\x1c\\x44\\x85\\x73\\x71\\x0a\\xac\\xdd\\xb1\\x52\\xf9\\x3c\\x7c\\x6f\\xd3\\xf7\\xe4\\xed\\x9f\\x74\\x42\\xa6\\xb9\\x00\\xf2\\x3c\\x3c\\x54\\x4c\\xe5\\xc9\\xba\\x5f\\x5e\\x92\\xaa\\xfd\\x11\\xc9\\xff\\x5f\\x79\\xc0\\x8b\\x9d\\x04\\x5f\\xef\\x07\\x97\\x06\\x25\\xf6\\x2e\\x2f\\x43\\x34\\xa4\\xd6\\x64\\xca\\xf7\"},\n{{0x62,0x85,0x63,0xaa,0x3e,0xe2,0xfc,0x61,0x1b,0xcf,0xf7,0x8b,0xfb,0x2a,0x75,0xe9,0xfd,0x87,0x80,0xe8,0x7a,0x93,0x94,0x99,0xa6,0x1b,0xea,0xa6,0xa4,0xb7,0x19,0x13,},{0xda,0x20,0x61,0x6e,0xe4,0xa4,0x1c,0x2e,0xbf,0xdc,0x50,0xab,0x54,0x95,0x3b,0x6d,0x38,0x7b,0x06,0xc6,0xde,0xf7,0x57,0x96,0xb0,0x88,0x09,0x56,0x5c,0x6c,0xf8,0x05,},{0xc9,0xa6,0xaa,0xa9,0xb4,0xe1,0xcc,0xe1,0xb5,0x84,0x45,0x72,0x5f,0x61,0xf5,0x52,0xc8,0xfb,0x45,0x83,0x1f,0x03,0x48,0x27,0x98,0xf0,0x1f,0x66,0x3e,0x99,0x83,0xdb,0x1a,0x82,0xfd,0x33,0xab,0xa3,0xec,0xcb,0x96,0x22,0x64,0x26,0xd5,0x0a,0xe1,0x7c,0xc5,0x12,0x74,0xce,0x18,0xa3,0x88,0x60,0xf4,0x0b,0x2f,0x82,0x36,0x1b,0x5c,0x03,},\"\\x05\\x6f\\xb9\\x54\\xfb\\xe6\\xa6\\x01\\x4f\\xad\\xac\\x1e\\x1a\\x9f\\x56\\xcc\\x08\\xaf\\x37\\x34\\x8e\\xba\\xf6\\x92\\x06\\x83\\x38\\x4e\\xfa\\x47\\x62\\x6c\\xcd\\xdf\\xea\\xd2\\xd5\\xe9\\xe8\\xcf\\xff\\x45\\xf7\\xac\\x63\\xde\\x63\\xf6\\x9d\\x12\\x84\\x8c\\xe3\\xc0\\xef\\x1f\\x53\\x0a\\xde\\x43\\x0f\\x0a\\xfd\\x5d\\x8e\\xcf\\xd9\\xff\\xd6\\x0a\\x79\\x74\\x6a\\x2c\\x5b\\xee\\xdd\\x3e\\x67\\x24\\x99\\x82\\xf8\\xb6\\x09\\x2e\\xe2\\xd3\\x40\\x47\\xaf\\x88\\xa8\\x1f\\xea\\xb5\\xd5\\x2b\\x47\\xd5\\xb3\\xf7\\x6c\\x20\\x41\\x72\\x5f\\x6f\\x81\\x32\\x93\\x05\\x0a\\xaa\\x83\\x4b\\x01\\xa3\\xa5\\x8f\\x69\\xaa\\x4a\\x8c\\xa6\\x1f\\x5b\\x74\\x6f\\x60\\x0f\\x3d\\x45\\x2c\\x62\\x82\\xff\\xdc\\xa4\\x42\\x9b\\x93\\x38\\x96\\x7b\\xa3\\xa7\\x26\\x66\\x90\\xae\\xc7\\x5e\\xbf\\xbf\\x7b\\xe9\\x8d\\x99\\x9b\\x03\\xed\\xdc\\x72\\x92\\x58\\x1b\\x0d\\x69\\xe3\\x0a\\x03\\x51\\xa1\\x51\\xdb\\x70\\x41\\x2b\\x0b\\xfd\\x43\\xd3\\xba\\xa9\\xd4\\x56\\xcb\\x3e\\x0b\\x4f\\xc1\\x9c\\xb0\\x9e\\x6c\\xad\\xcb\\x6d\\x3f\\x3b\\xe5\\x13\\x7c\\xc7\\xa8\\xd3\\x21\\x9e\\xc2\\x03\\x6e\\xc6\\x70\\xed\\x7e\\xc5\\x23\\xb1\\xb1\\xc6\\x87\\xb5\\x46\\x53\\x07\\x88\\x2f\\xe3\\x8d\\x74\\x72\\xd0\\xba\\x87\\xa4\\x71\\x86\\x83\\x09\\xd2\\xf7\\x73\\xff\\x24\\xc8\\x7d\\x39\\xc1\\x6b\\x70\\x8a\\x4e\\xd9\\xaf\\x43\\xf7\\x4c\\x8d\\x85\\xcf\\xe8\\xab\\x54\\x06\\x90\\x7e\\x94\\x1a\\x14\\x97\\x0e\\x20\\x9c\\x29\\xff\\x7e\\xd8\\xa2\\xf9\\x35\\xae\\x41\\x70\\x9f\\x27\\x0d\\x0d\\x08\\x55\\x5e\\xf7\\xaf\\x2e\\xdf\\xe4\\x0d\\xf3\\x99\\x22\\x3c\\x78\\x5a\\x43\\xe7\\xf3\\x69\\x15\\x89\\xe2\\xea\\x4c\\x03\\x6f\\x11\\xd0\\x3d\\x7d\\x1e\\xea\\x14\\xf6\\x20\\x03\\x53\\x25\\xcf\\x2b\\x33\\xba\\xf3\\x86\\x39\\x3e\\x8a\\x97\\x2a\\x7a\\xf6\\xcd\\x9b\\x85\\x43\\xb3\\x2e\\x25\\x33\\xd1\\xfc\\xc3\\x17\\x7f\\xd9\\x6d\\x1e\\x13\\xbf\\x8b\\x68\\xde\\xb2\\x22\\xf9\\x44\\x97\\x26\\x5d\\x3c\\xcb\\x34\\x57\\x51\\xbd\\x5b\\x66\\x90\\x78\\x08\\x19\\x98\\xd6\\x08\\xca\\x5f\\xdc\\x13\\x48\\x39\\xd4\\xed\\x2b\\xeb\\xb2\\x95\\x2f\\xea\\x5a\\x39\\xc6\\xf0\\x33\\xc1\\x55\\x8f\\x69\\x8c\\xe4\\x94\\x6e\\x4f\\x6c\\x08\\xaf\\x87\\x4f\\x27\\x35\\x7f\\x87\\x0e\\xbe\\xeb\\x21\\x99\\x97\\x6f\\xfa\\xef\\xac\\x95\\x1f\\x8e\\x17\\xfe\\x7d\\x08\\x21\\xe1\\xb9\\x2a\\x90\\xaa\\x4e\\x9d\\xef\\xd3\\xfa\\xfd\\xa0\\x52\\xa4\\x44\\x47\\x6d\\xb1\\xce\\x38\\xa9\\xe1\\x76\\xe8\\x41\\x18\\x9a\\xbd\\x8f\\xec\\xde\\x0f\\xbc\\x5c\\xb5\\x5f\\x51\\x1f\\x5f\\xde\\x07\\xea\\x97\\xde\\xb3\\x9b\\x7a\\xa8\\xdc\\x84\\xa3\\x94\\x6a\\x6c\\xf9\\x26\\xd3\\x9b\\x95\\xc1\\x1a\\xf9\\xd6\\x4d\\x98\\xb8\\x07\\xf4\\x70\\x4d\\x0a\\x2b\\xda\\x97\\xda\\xd9\\x88\\x1a\\xda\\x1b\\xf6\\x63\\x63\\x66\\xe6\\x0a\\x52\\x2b\\x48\\x21\\x04\\x78\\x61\\xc7\\xaa\\xe2\\x14\\x6a\\x02\\xee\\xf6\\xb2\\x5d\\x51\\x37\\x1a\\x0f\\x17\\xd2\\x4b\\xc1\\x87\\xdc\\xdd\\x05\\xd5\\x41\\xc2\\xf7\\x22\\x01\\x42\\x79\\x15\\xa3\\x92\\x8c\\xd3\\x78\\x68\\x91\\x03\\xac\\x50\\xb3\\x3f\\x87\\xa4\\x7e\\x8c\\xdf\\xa6\\x87\\xa5\\xf0\\xaf\\x8a\\x56\\x73\\x1d\\xab\\xe6\\x62\\xf4\\xf2\\x83\\x6d\\xe0\\xba\\x8f\\xaf\\xd8\\x6a\\x38\\x54\\xbc\\xa0\\x12\\xd7\\x08\\x8a\\x00\\xb9\\x85\\x4c\\x2d\\x3c\\x70\\x8d\\xdf\\x58\\xfa\\xa3\\x55\\xa8\\x9a\\xfc\\x2c\\x80\\xf3\\xf5\\x33\\x6d\\xa0\\x1d\\x72\\xa2\\x77\\x1a\\x05\\x58\\x13\\xfb\\x35\\x33\\x0f\\x7d\\x2e\\x01\\xb1\\xd1\\x2d\\xaa\\x95\\xed\\x55\\xd3\\xbd\\xc5\\xdf\\x77\\x39\\xcb\\xc3\\xca\\x09\\x7a\\x41\\xb6\\xb2\\xbd\\x7f\\x0f\\xf9\\xdd\\x1d\\x86\\x58\\x98\\x3b\\xa3\\xff\\x79\\x20\\xc1\\x5f\\x29\\x2a\\x1e\\xf9\\xfc\\xad\\xa1\\xc6\\x07\\xec\\xb4\\x5d\\x3a\\x73\\xc9\\xff\\xd4\\x2f\\x3e\\x16\\x02\\x2f\\xdf\\xe1\\x27\\x44\\x92\\x63\\x95\\xf7\\x4f\\xb3\\x11\\x17\\x93\\xfa\\x92\\x81\\x82\\x1a\\x66\\xa0\\x1d\"},\n{{0x91,0x41,0xf7,0x9e,0xd3,0x0b,0xf6,0x00,0x61,0x1a,0x13,0xf3,0x67,0xb4,0x03,0x96,0xf2,0xec,0x83,0x9c,0x56,0x12,0xbb,0xf1,0xe6,0xe4,0x97,0xf8,0x39,0x54,0xbc,0x88,},{0xf1,0x4e,0xda,0x96,0x26,0x40,0xbe,0xcb,0x66,0xc4,0xd1,0xf1,0xa0,0x21,0x11,0x02,0x51,0x91,0x7b,0x8b,0x1d,0x34,0x82,0x82,0x98,0xd3,0x21,0x45,0xba,0xf6,0xe5,0xd9,},{0xcf,0x20,0x2d,0x7f,0x2f,0x9e,0xd1,0x17,0xf4,0x29,0x50,0x2b,0x2a,0x5a,0xff,0x54,0xa7,0xf7,0x51,0xd2,0x17,0x15,0x15,0xa4,0xd2,0x03,0x75,0x34,0x46,0xdf,0x0e,0xba,0xc8,0x69,0x84,0xc8,0x8b,0xd4,0x2b,0xd1,0xfb,0x8d,0xcb,0x40,0x87,0x76,0x72,0x2a,0x38,0xf3,0x2c,0xce,0xb2,0x5f,0x32,0xa2,0x5d,0x73,0x93,0xf1,0x38,0xee,0xdf,0x0a,},\"\\x8f\\xec\\xaa\\x7a\\xe9\\xa3\\xd4\\xa4\\x85\\x1a\\x66\\x36\\x2b\\x36\\x6e\\x16\\x7b\\x9f\\x43\\x00\\xfd\\xab\\x20\\x56\\x54\\x75\\x19\\x87\\xf0\\x85\\xde\\x61\\xbe\\xc9\\x34\\x4a\\xa8\\x6f\\x5e\\x5c\\x64\\x77\\x51\\x4c\\x28\\x04\\xce\\xd7\\xac\\x0c\\xd0\\x62\\x85\\x29\\xa3\\xa1\\x59\\x92\\x36\\xed\\x67\\xbe\\xbe\\x1f\\x2e\\x95\\xaa\\x15\\x1f\\xe0\\xf3\\xb3\\x01\\x1a\\x1d\\x4b\\xe9\\x90\\x1c\\xaf\\xab\\x2f\\x18\\x91\\x90\\x4d\\x4b\\xff\\x01\\x28\\xc1\\xd3\\x5e\\xce\\xcb\\x32\\x2b\\x3c\\xc0\\x1d\\xac\\xc5\\xae\\x3d\\xca\\x69\\x14\\xa7\\xd3\\x4d\\xa8\\xc9\\x65\\x7b\\x95\\x0f\\x89\\xd1\\xd6\\xae\\xc3\\x29\\x9b\\xb6\\x90\\x11\\x10\\x71\\xfa\\x87\\x28\\x27\\x74\\x94\\x3d\\x96\\xa4\\xab\\x7c\\x3d\\x6d\\xe7\\xd1\\xbf\\x11\\x93\\x63\\x06\\x8c\\xc8\\x2d\\x45\\xe4\\xb7\\x64\\x54\\xc6\\x08\\xbc\\x35\\x66\\xb7\\xf9\\xb3\\x85\\xcc\\x7e\\xb3\\x8e\\xe4\\x29\\xaf\\xc2\\xda\\x99\\x66\\x9f\\xc5\\xc1\\xbe\\x82\\x16\\x1a\\x1b\\x0c\\x33\\xf7\\xba\\x9a\\xd4\\x41\\x9d\\x20\\x62\\x97\\x19\\x01\\xdb\\x00\\x3b\\xfa\\x23\\xc4\\x47\\x14\\x99\\x5c\\xb0\\x6b\\xfa\\x96\\x6e\\x50\\x23\\xaa\\x93\\x46\\xfd\\x37\\x5a\\xe2\\xa1\\xe8\\x40\\x84\\x31\\x4d\\xf3\\xf0\\x8c\\xe2\\x08\\x00\\xc2\\xc2\\xad\\xfb\\xb8\\x13\\x66\\xf6\\xb1\\x04\\x24\\x3d\\x62\\xd5\\x04\\x1e\\x72\\x73\\x43\\x3f\\x17\\x58\\x1b\\xf9\\x3f\\x4c\\x61\\x46\\xfa\\x96\\x6f\\x63\\x8a\\xb0\\x7e\\xa1\\x66\\x94\\xa7\\xce\\x30\\x5c\\xc6\\x09\\xa6\\xe1\\x06\\x23\\xff\\x7f\\x6c\\x79\\x16\\xb6\\xe4\\xdb\\xde\\xbb\\x7b\\x52\\xec\\xa7\\xf0\\xd5\\x18\\x7f\\xf6\\x64\\xd7\\xc3\\x70\\xed\\x22\\x88\\x6a\\xa2\\x67\\x13\\x29\\xd9\\x28\\xe0\\xa3\\xbe\\xa3\\xb4\\x71\\x1a\\x12\\x8b\\x9a\\xab\\x90\\x26\\x6f\\x86\\x51\\xd2\\x20\\xb9\\xcc\\x1c\\xbf\\x5b\\x1c\\xe7\\x26\\x59\\x31\\x80\\x36\\x90\\xd3\\x29\\x1c\\x01\\xea\\xd4\\xdb\\xc3\\x32\\x9a\\x97\\xe8\\x5c\\x4f\\xe1\\xd3\\x56\\x60\\x8c\\xc9\\xe6\\x0b\\x05\\xbc\\x14\\x83\\x8a\\x86\\x08\\x27\\x9a\\x00\\x61\\xde\\x28\\xff\\x7b\\x8e\\x81\\xf5\\x9c\\x8a\\x8c\\x55\\x23\\x92\\x4c\\x4c\\x48\\x5e\\x6e\\xa8\\x0a\\xc8\\x17\\x50\\xbb\\x0e\\x41\\x9e\\xfc\\x78\\x58\\xcd\\x4a\\xf5\\x0c\\x8b\\x8c\\x80\\x65\\x0f\\xac\\xab\\x4d\\x82\\x58\\xf9\\xca\\xfa\\x03\\x10\\xa0\\x07\\xcc\\xcb\\xc4\\x18\\x5c\\x82\\xfd\\x14\\x6d\\xf1\\xd8\\x11\\x87\\x9d\\xa3\\x65\\x0d\\x57\\x16\\xf1\\x00\\x4b\\x71\\xd2\\xc7\\xf2\\xbd\\x65\\x03\\xc3\\x54\\x58\\x9f\\x86\\x02\\xc9\\x50\\xa1\\xf5\\x13\\x9f\\x81\\x14\\x60\\x75\\x28\\x80\\xa3\\x41\\x11\\x66\\x30\\xe4\\xff\\x84\\x94\\x8e\\x74\\xa9\\xeb\\x35\\x0d\\x64\\xd8\\x29\\x30\\x02\\x20\\x02\\x33\\xf2\\x09\\xb1\\x7d\\x78\\x89\\x7c\\x7c\\xe6\\xce\\x29\\xe2\\x9f\\x82\\xd4\\xad\\x6c\\x61\\xeb\\x79\\xf5\\x73\\x9c\\xb6\\x68\\xb2\\x1a\\x74\\x55\\x55\\xc9\\x6e\\x19\\x52\\x68\\x45\\xe8\\x2c\\x6e\\xd2\\xb1\\xc6\\xbd\\xd6\\x36\\x4b\\x8f\\xc7\\x9b\\xa9\\xa3\\x2d\\xbd\\x3f\\x8b\\x97\\x5e\\xb9\\x23\\x62\\x39\\x58\\xae\\x0d\\xaa\\x4f\\xfa\\x13\\x92\\x17\\xc0\\x0e\\x02\\x1f\\x93\\x7e\\x9b\\x79\\x1c\\x37\\x99\\x1a\\x35\\xe5\\x23\\x1a\\x19\\x14\\xc0\\x45\\xa7\\x87\\x43\\x2f\\x97\\xb8\\xe2\\x06\\x3d\\xb1\\x05\\xe1\\x4d\\xa9\\x79\\xc1\\xc4\\xcb\\xa7\\x85\\x21\\x0e\\xb0\\x20\\x11\\x33\\x4b\\x23\\x0c\\xfb\\x68\\x31\\x99\\x8c\\xcc\\xe2\\x53\\x86\\xf4\\xf3\\xba\\x0d\\xce\\x20\\x06\\xe9\\xc3\\x94\\x0b\\x4d\\x5a\\x56\\xaa\\xcc\\xdc\\xab\\x02\\x71\\x86\\x89\\x81\\x63\\x60\\xf1\\x88\\x52\\xfd\\x19\\x98\\xa9\\x9f\\xce\\x9a\\x04\\xda\\x3f\\x5e\\x23\\xaf\\x94\\xc6\\xe8\\xa5\\xba\\xdf\\xd3\\x93\\x04\\xb9\\xe2\\xa3\\x76\\xa1\\xf9\\xba\\xc0\\x9a\\x85\\xbd\\x04\\x24\\x76\\xe2\\x6b\\x58\\xec\\x73\\xf1\\x23\\x6d\\x41\\xab\\x4b\\x4e\\x7a\\x54\\xde\\xf9\\xd6\\x6a\\x38\\xf8\\xe5\\x46\\xde\\x7b\\x38\\x8e\\x1e\\x7d\\x66\\x81\\xe5\\xe2\\xa0\\x96\\xf1\\x60\"},\n{{0x69,0x5c,0x96,0x0b,0xbb,0x0d,0xd5,0x7f,0xfa,0x36,0x15,0x1c,0x85,0xde,0x73,0x51,0x54,0xfe,0x5a,0xd5,0xf5,0xfc,0x77,0xd0,0x05,0xa0,0xa3,0x20,0x11,0xde,0xb3,0x0c,},{0x34,0x12,0x5e,0x4e,0x21,0xf7,0x89,0xed,0x0e,0x11,0x80,0xc1,0xf6,0x36,0x9c,0x72,0x1d,0xca,0xe9,0x85,0x9b,0x6f,0x7b,0x04,0xf9,0x57,0xe5,0x10,0x01,0xee,0xde,0x8a,},{0x4a,0xf4,0x1c,0x55,0x4d,0x99,0x08,0x12,0x68,0x6c,0x32,0x9a,0x87,0x5c,0x41,0xee,0x24,0xb4,0xa7,0xfd,0x7b,0x3d,0x4f,0x8c,0x8d,0x52,0x75,0xf2,0xe7,0xcb,0x24,0x2b,0x25,0x8b,0x58,0x58,0xa4,0x66,0xde,0x59,0x5c,0xe2,0xa2,0x17,0x7e,0x35,0x1c,0x7f,0x08,0xc7,0xfc,0x4e,0x0b,0xf9,0x7e,0xc5,0xfb,0x2d,0xcb,0x82,0x52,0xd2,0xc9,0x0a,},\"\\x37\\x06\\x69\\x6c\\x7a\\x90\\x66\\x90\\xd0\\xd3\\xb7\\x1e\\x7e\\x21\\x1c\\x7b\\x06\\x71\\x68\\xf3\\xa8\\xf1\\xed\\x98\\x4a\\x0a\\x5e\\x60\\x78\\x59\\x76\\x62\\xe4\\xe7\\x88\\x9d\\x52\\xdb\\x0f\\x78\\xe0\\xd5\\xef\\x0e\\x5f\\x7a\\x0a\\x0f\\x42\\x63\\xb6\\x84\\x8b\\x07\\x25\\xca\\xa4\\xb1\\xce\\xa6\\x98\\x74\\x09\\x51\\x1c\\x8e\\x5e\\x98\\x2d\\x3f\\x5b\\x82\\xbb\\x56\\xa4\\xa7\\x94\\x71\\x21\\x93\\x7f\\x8e\\x10\\x5c\\x5a\\x14\\xb5\\x3e\\x6c\\x37\\xcc\\x71\\x6b\\x1e\\xba\\x92\\x24\\x21\\x82\\x8b\\x04\\x6f\\x68\\x56\\xc4\\x4f\\xab\\xf1\\x3a\\x75\\x16\\xc6\\x2a\\x5f\\xf9\\x85\\x68\\x45\\x0c\\xee\\x78\\xb1\\x40\\x33\\x50\\x47\\xbf\\x1c\\xa7\\x7e\\x15\\x49\\xa8\\x94\\xfe\\xeb\\x07\\x80\\x45\\xe4\\x64\\x18\\x32\\x25\\x3b\\xf6\\x95\\x48\\x54\\x52\\xec\\x36\\x90\\x65\\xa6\\x00\\x29\\xa6\\xc9\\x07\\x7a\\x37\\x9d\\xb2\\x04\\x85\\xea\\x2e\\xdb\\x6c\\x96\\x95\\x47\\xbb\\x26\\x53\\x28\\x9b\\xc6\\xe8\\x1f\\xfc\\xb8\\x4b\\xdb\\xf7\\x73\\xdd\\xea\\x4b\\x37\\x50\\xe9\\xa7\\x23\\x95\\xd1\\x17\\xf6\\x44\\xb0\\xe2\\x20\\x61\\xd4\\xf3\\xbb\\x7c\\x5b\\x61\\x2e\\x4b\\x70\\x39\\x5e\\x07\\x79\\x51\\x6b\\x46\\x65\\x91\\x16\\x90\\x2f\\xd0\\xfb\\xcd\\x23\\x40\\xee\\xa4\\x5e\\x9c\\x23\\xdb\\x25\\x64\\xa5\\xe1\\x1d\\xc7\\x9e\\x8f\\x4b\\x33\\x2a\\x44\\x3e\\xc3\\x5a\\xad\\x96\\x04\\xfe\\x79\\x12\\x52\\x08\\x82\\x95\\xe8\\x4f\\x65\\xa3\\x07\\x31\\x25\\x50\\xd9\\xeb\\xf6\\x1f\\x36\\x7e\\x4a\\x0f\\x2b\\x56\\x23\\xe5\\x3e\\xf6\\xbc\\x13\\x28\\x25\\xfc\\x24\\xeb\\xee\\x4e\\xbf\\x33\\x8c\\xbf\\xb5\\xdf\\x69\\xb3\\x2d\\x03\\x0d\\x44\\x7c\\x44\\xf3\\x13\\xba\\x96\\xfe\\x07\\xbb\\xfe\\x5b\\x01\\x66\\xea\\xec\\xbc\\x61\\x9b\\xb6\\xb2\\xe5\\x92\\x40\\x10\\xba\\x3e\\xc1\\x50\\xff\\x6a\\x69\\xfe\\xc4\\xde\\xd9\\xc4\\x42\\xf9\\x8c\\x15\\xe7\\x7f\\x31\\x9b\\x48\\x43\\xb3\\xb7\\x48\\xb5\\xd2\\x60\\x89\\xa7\\x6c\\x2b\\x83\\x4f\\xf9\\x3c\\x41\\x3e\\x04\\xca\\x95\\x50\\xcd\\x21\\x1c\\xe2\\xd6\\xa5\\x83\\xd7\\x82\\x57\\x50\\x66\\xdb\\x6d\\xd3\\x3e\\x8d\\x5e\\x83\\x74\\x35\\x5d\\x06\\x8a\\x5e\\xb9\\x6f\\x8b\\x3d\\xa8\\xdd\\xdf\\xb5\\xba\\xf5\\xc5\\x96\\xda\\xaf\\x55\\x6a\\x8f\\x2c\\xb5\\x78\\x1e\\x50\\x42\\x32\\x7f\\x92\\xae\\x06\\x21\\xea\\xe0\\x88\\xb5\\xf0\\x13\\x59\\x2e\\x77\\x87\\x3a\\x81\\xd7\\xe0\\x68\\xd7\\xb8\\x33\\x7d\\xb9\\xf1\\x09\\xa8\\x35\\xb4\\x75\\xe5\\xca\\xf7\\xce\\xa5\\xaf\\x3b\\x4a\\xd6\\xd9\\x0b\\xaa\\xf1\\xc7\\x36\\x55\\xec\\x67\\x67\\x47\\xfc\\xdd\\x41\\x77\\x5b\\x4f\\xbe\\x39\\x24\\xc3\\xf4\\x1d\\x8a\\x73\\x75\\x28\\xd1\\x2d\\x61\\x56\\x65\\x3a\\x22\\x35\\x8c\\x68\\x21\\x42\\x6b\\x2c\\x0a\\x33\\xe1\\x63\\x4c\\x62\\xc7\\xc8\\x38\\x56\\x49\\xbc\\x23\\x3e\\x7d\\xaf\\x94\\x39\\xf0\\x9d\\xb9\\xbd\\x11\\xea\\x01\\xe2\\x8b\\x77\\xec\\xbb\\xc4\\x59\\x0e\\x29\\xfd\\xcf\\x0f\\xdd\\xe1\\x52\\xf6\\x47\\x81\\x32\\xfe\\x4c\\x3a\\x5b\\x45\\xa7\\x30\\x5a\\xf6\\xe3\\x81\\xca\\xdd\\x72\\x49\\x6e\\x66\\xbb\\xb8\\x66\\xce\\xa4\\x7f\\x7e\\x7d\\x7e\\x63\\x34\\x16\\x00\\xaf\\x3f\\x49\\xce\\x9c\\x9e\\x4e\\x37\\x39\\x4d\\xf5\\xdf\\x71\\xdc\\x10\\xcd\\x39\\x1f\\xdc\\xb8\\xa1\\x93\\xdc\\x98\\xfc\\x19\\x05\\x9f\\xa3\\xac\\x23\\x0e\\xc5\\x47\\x6b\\xf9\\x4d\\x85\\x55\\x6a\\xce\\x6e\\x1b\\xa3\\x24\\x21\\xbf\\x59\\xdc\\xbe\\x05\\xc5\\xe1\\x5d\\x34\\xc6\\x64\\x4e\\x27\\xd0\\xa0\\x2b\\xe9\\x7f\\xa8\\x38\\x7e\\xe0\\x37\\x06\\xf2\\x2a\\x8f\\x4b\\x3b\\x40\\x40\\xad\\x7d\\x3f\\x8a\\x86\\x97\\x1a\\x20\\xa0\\x9e\\xc8\\x1b\\x76\\x96\\xd8\\x34\\xc5\\x26\\xb8\\xe5\\x1c\\xb9\\x7d\\x27\\x64\\x3f\\x9a\\xbf\\x5e\\x29\\xff\\xd0\\x33\\x3f\\x95\\xde\\x15\\xd1\\x10\\xc2\\x06\\x4c\\xa4\\x94\\x67\\xc1\\x4e\\xf2\\x27\\xf4\\xba\\xbf\\x1a\\x55\\xe7\\xb1\\xcd\\xa0\\x42\\x9c\\xff\\x25\\x6b\\xe3\\x1c\\xf1\\x16\\x71\\x9a\\x81\\xb9\\xc5\\xfb\\x75\\xfd\\xf6\\x4e\"},\n{{0x25,0xcb,0x17,0xfc,0x33,0xd2,0xbf,0x83,0x84,0xae,0x4d,0xf2,0x0c,0x1f,0xad,0x5c,0x35,0xfd,0x76,0x5a,0xff,0xde,0x04,0xb5,0x25,0x6d,0x4d,0xe0,0x1c,0xa8,0xde,0x14,},{0xb8,0x6c,0xa3,0x12,0xfe,0x59,0x85,0x20,0xc6,0x4b,0xe5,0xc7,0x2f,0x5b,0x23,0x81,0x65,0x07,0xf6,0x9e,0x07,0x0f,0x82,0x8e,0x02,0xd2,0xaf,0xcf,0xe1,0x1b,0xfa,0x01,},{0x8c,0xcb,0x0d,0xbc,0xf7,0xcc,0x03,0xe8,0x3e,0x21,0xc5,0x74,0x74,0xaf,0xd3,0xad,0x88,0x98,0x09,0x7b,0x97,0x2e,0xde,0x17,0x5a,0xca,0xae,0x48,0xe3,0xec,0x17,0xb2,0xdb,0x06,0xfc,0x82,0x77,0x6b,0x07,0x51,0xc0,0xf9,0x56,0xfd,0x71,0x96,0xf3,0xd1,0xc9,0x63,0x21,0xa6,0xcf,0x3d,0x89,0x24,0x15,0xd8,0xf8,0xee,0xb4,0xa1,0x41,0x08,},\"\\x4b\\x4a\\x71\\xcb\\xf8\\xcb\\xaf\\x57\\xa7\\x7d\\x4e\\xa1\\x88\\xa6\\xf9\\x64\\x84\\x0f\\x0d\\x71\\x4a\\x5f\\x38\\xa0\\x95\\xa1\\x3b\\x4e\\x57\\x12\\x97\\xa8\\x8b\\x79\\x24\\x17\\xd1\\x61\\x84\\x42\\x7f\\x90\\xe0\\x43\\xdd\\x8a\\x55\\xb7\\xf1\\xc1\\x3e\\x00\\xdf\\xa6\\x05\\x16\\x44\\x5c\\xbe\\x77\\x06\\x8c\\x79\\xc8\\xc3\\x5e\\xbe\\xac\\x33\\x0c\\x33\\xf1\\x12\\x1d\\x05\\x73\\x1a\\x8f\\x51\\x32\\xd6\\x48\\x00\\x73\\x27\\x46\\x41\\x19\\x5a\\x75\\x20\\x21\\x16\\xff\\xf1\\xc3\\x18\\x81\\x71\\x78\\xfd\\xd7\\x68\\xbb\\xdf\\x10\\x5f\\xa0\\x69\\xc7\\xa3\\xd1\\x43\\xfd\\xf5\\xd1\\x7b\\xfa\\xd7\\xc0\\x62\\x4e\\x52\\x92\\x06\\x8f\\xd7\\xbb\\x6d\\x30\\x3b\\x4a\\x27\\xcb\\x20\\xa4\\xe6\\x18\\x75\\x07\\x67\\x87\\xd1\\x9f\\xa6\\xf7\\x29\\xc9\\x4d\\xc0\\xba\\x9b\\x8c\\x0b\\xfd\\x98\\x66\\xda\\x5c\\xb2\\xe7\\xa2\\xcd\\x2e\\xdb\\xdc\\x95\\xac\\x34\\x9e\\x5e\\x5c\\x21\\x72\\xe5\\xa4\\xcf\\x7b\\xd9\\x0c\\xab\\xe2\\xc6\\xe2\\x24\\x59\\x80\\xbd\\x72\\xd0\\xf6\\xf5\\x47\\x98\\x81\\xe8\\xc4\\xc3\\x54\\xf6\\x8a\\xa7\\x28\\x41\\xd0\\xc7\\x3b\\x98\\x6b\\xa5\\x10\\x21\\x20\\x31\\x61\\x02\\x6e\\xe3\\xd7\\x29\\xdd\\xf1\\xa0\\x49\\xff\\xe9\\xeb\\x25\\x43\\x98\\x02\\xf0\\x30\\x11\\xd1\\x44\\xe5\\x0b\\x02\\xbd\\x4a\\xca\\x5e\\x55\\x06\\xd3\\x2f\\xcf\\x69\\xe3\\x2f\\x54\\x25\\x44\\x79\\x8f\\x4e\\x87\\xf7\\x2b\\xdf\\x24\\x33\\xb1\\xff\\x32\\x59\\x29\\x2e\\x1d\\x90\\x81\\x2c\\xff\\xd7\\x9f\\x6a\\x54\\x32\\x70\\xba\\xf2\\x4a\\x3c\\x39\\xdd\\x35\\x98\\xe1\\xc6\\x61\\x61\\x29\\x22\\x52\\x2f\\x38\\x7d\\x51\\x59\\x76\\x92\\xf3\\x14\\xc4\\xd5\\xac\\x4b\\xf1\\x88\\x3a\\x61\\x46\\x36\\x33\\x6a\\x55\\x44\\xd5\\x9f\\xf4\\x1d\\x1e\\x0d\\xbc\\xf8\\xe6\\x62\\x7e\\x7c\\x80\\x85\\x64\\x63\\x22\\xdf\\xc2\\x0c\\x33\\x2c\\xbd\\xf3\\x53\\x70\\xd4\\x7d\\xca\\xbb\\x80\\x2e\\x17\\xca\\x84\\x78\\x0e\\xec\\x66\\x1c\\x90\\x4d\\x5b\\xfb\\xc2\\x40\\xad\\x6a\\x14\\xa7\\x53\\x3f\\x71\\xa2\\x75\\x00\\xc6\\x1d\\xd3\\xe4\\x73\\x98\\x38\\x87\\xa8\\x68\\x35\\x18\\x7a\\xbb\\x0d\\xf0\\x8f\\xa6\\x2c\\xda\\x69\\xdc\\xe8\\x6e\\x21\\xfa\\x5a\\xe9\\x54\\xc2\\x2e\\xdd\\xb6\\x0e\\xe3\\x13\\x15\\x04\\xa6\\x9b\\x50\\x48\\x6a\\x17\\x76\\x70\\x91\\x88\\x37\\x60\\x63\\x8a\\x29\\xc3\\x80\\x30\\xe1\\xe0\\x5f\\xdb\\x28\\xe1\\x58\\x63\\x30\\x10\\x38\\x5a\\x62\\x06\\x13\\xcc\\x10\\xd5\\xa5\\xf3\\x50\\x95\\x5f\\x4a\\x34\\x7c\\x65\\xed\\xdd\\xb7\\xe2\\x51\\x59\\xda\\x8d\\xcc\\x26\\x55\\x92\\x8a\\xd6\\xf6\\xd8\\xc4\\xc1\\xab\\xb8\\x17\\xd7\\xfe\\xf3\\xba\\xe5\\xde\\x04\\x02\\xed\\xde\\xe7\\xb5\\x15\\x21\\xce\\x28\\x0a\\x66\\xb7\\x96\\x14\\x0f\\x56\\xaf\\x9b\\xc2\\x0e\\x46\\x58\\x75\\xce\\x26\\x28\\xa8\\xa1\\x04\\x77\\xce\\x9b\\x2e\\xac\\xc7\\xd8\\x6f\\x88\\x27\\x24\\x57\\xbf\\xd4\\x43\\xe7\\x12\\x52\\x69\\x96\\x25\\x43\\x80\\xf0\\x13\\x52\\x27\\xe9\\xfc\\x15\\x1c\\x86\\x95\\xe9\\xcc\\x64\\xd2\\x72\\xb2\\x56\\xab\\x95\\xc9\\xa9\\xf5\\x68\\xe9\\x37\\x16\\xe0\\xe5\\x3d\\x29\\x88\\x2e\\x3c\\xe7\\x42\\x61\\x25\\x7a\\x02\\xcd\\x49\\x7c\\x37\\xd7\\x64\\xd9\\x0f\\x7f\\xd4\\x78\\xa1\\x7a\\x89\\x0a\\x8b\\x2e\\xa6\\x1a\\xb8\\x1f\\x68\\x69\\xb1\\x20\\xa2\\xf6\\x48\\x4a\\x88\\xc1\\x51\\x95\\x33\\x91\\xec\\xa4\\x45\\x01\\x53\\x77\\xb3\\xa5\\xdf\\xfe\\x4c\\xfb\\xac\\xfb\\x5b\\xab\\x2c\\x47\\xf6\\x54\\xf7\\x2a\\x9d\\x19\\xcb\\xc4\\xd2\\x95\\x37\\x19\\x84\\x05\\xe3\\xa0\\x4b\\x4b\\xfe\\x11\\xbc\\xdb\\x5c\\x1f\\x30\\xd9\\xac\\x02\\xf5\\x48\\x49\\xc5\\x7a\\xa9\\x6f\\x7b\\x56\\x63\\x61\\x16\\xf2\\xbb\\x6f\\x25\\x83\\xd9\\xaf\\x94\\xc8\\x6a\\xff\\x5c\\x13\\x7f\\x63\\xce\\x54\\xe8\\xf0\\xc2\\x1b\\x6c\\x25\\xc1\\xf0\\x47\\x2a\\x22\\x9c\\x90\\x81\\x7e\\x61\\x62\\xea\\xc7\\x1c\\xcd\\xa3\\x09\\xa1\\x64\\x3b\\xd6\\x31\\x2a\\x52\\x63\\xa2\\xef\\xe6\\x46\\xdf\\xfe\\x79\\xeb\\xd8\\x15\\x7a\\x28\"},\n{{0x49,0xe2,0x4d,0x16,0x99,0x83,0x37,0x26,0xb1,0x8c,0x78,0xea,0x65,0x68,0x40,0x1a,0x97,0x1e,0x1c,0xa3,0x9d,0xd0,0x6d,0x75,0x63,0xac,0x8b,0x42,0x50,0xd4,0xa9,0xf5,},{0x71,0xcf,0x05,0xe9,0x0d,0x30,0x1a,0x6d,0x9f,0xad,0x7f,0x0b,0x38,0xec,0x8b,0xb0,0x44,0xfc,0xfd,0x97,0xc8,0x49,0xb0,0x4c,0x00,0x36,0x25,0xde,0x29,0xbe,0x86,0xbb,},{0xa0,0xb6,0xa2,0xaf,0x15,0xb6,0xbe,0x9e,0x95,0x1e,0xf3,0xf3,0x2c,0xbd,0x1c,0x67,0x02,0xe8,0xe0,0x17,0xfb,0xd3,0x15,0xa3,0xf2,0x59,0x9c,0x3f,0x1a,0x11,0x86,0x5d,0x46,0xe7,0x84,0x59,0xa0,0xd7,0xf7,0xbe,0x04,0x6a,0xae,0x29,0x3c,0xad,0x09,0x13,0x7e,0xc8,0x47,0xe2,0x69,0x28,0x10,0x6d,0x9a,0xa3,0x5e,0x09,0x82,0xb9,0x92,0x02,},\"\\x6d\\x26\\x05\\xf6\\x1e\\x1a\\x04\\xb6\\xae\\x18\\xc2\\xc2\\x5a\\xe1\\x00\\xdd\\x42\\xa6\\x1e\\x66\\x4e\\x2d\\xb5\\xc3\\x4d\\x7a\\xd1\\xf8\\x4a\\xc5\\x07\\x55\\x2b\\x74\\x1c\\x20\\x86\\xc1\\x7c\\x85\\x2b\\xab\\xe0\\x7a\\x91\\xe1\\x29\\xa5\\x06\\xee\\x59\\xed\\xb9\\xce\\x73\\xbe\\x1b\\x1d\\x06\\xd1\\x20\\xec\\x36\\xa1\\xe9\\x4c\\x62\\x81\\x05\\x4e\\x78\\xce\\xb1\\xbd\\xef\\xfb\\xcb\\xf4\\xf0\\x10\\x51\\xed\\x38\\x1b\\xfc\\x8a\\xd1\\x76\\x9f\\x41\\xe2\\x40\\xbf\\x60\\x59\\xd9\\x70\\x4c\\xac\\xec\\x66\\x66\\x11\\xf4\\x1e\\x4d\\xd4\\x38\\xb7\\xf5\\x02\\x42\\xea\\x86\\x75\\x6b\\xb1\\xf8\\x1e\\x59\\x42\\xc0\\x92\\x12\\x9f\\xbc\\x6d\\xe4\\x95\\x5d\\x28\\xdf\\xf3\\x52\\x37\\xdb\\x30\\xe4\\xa5\\x03\\x6a\\x99\\x14\\xc9\\xf8\\x4d\\xbd\\x8c\\xcf\\x82\\xba\\x2b\\x1b\\x3b\\x55\\x54\\xa2\\xb7\\xa7\\x4c\\xb0\\xb2\\xa1\\xe1\\x96\\x33\\x45\\x28\\x6e\\x25\\x8d\\xc8\\xe7\\xd5\\x67\\x18\\x03\\x5f\\x95\\xf3\\x13\\x81\\x1c\\xfb\\xd8\\x52\\xa0\\xf8\\xf4\\x9a\\x29\\xef\\x93\\x3e\\x7c\\xda\\x7e\\xd9\\xc7\\xe8\\xb1\\x62\\xcd\\xba\\x1a\\x82\\x26\\x2c\\xd4\\xdf\\x7c\\xf8\\xea\\x4b\\x58\\x6d\\xb4\\x3d\\xcc\\x1e\\x37\\x64\\x59\\x8e\\x9c\\xa4\\x66\\x73\\x82\\x2b\\xaa\\x2a\\xd8\\x7f\\xb1\\x4b\\x6f\\xdb\\x9e\\x20\\x32\\xd0\\xca\\x51\\xc2\\x6c\\x5e\\xf3\\xd9\\xf7\\x97\\x85\\xfa\\xc2\\x49\\x1c\\xdb\\xf7\\xc3\\x99\\xf3\\xcd\\x17\\x74\\xc1\\xa6\\xb1\\xe4\\xa6\\x7f\\x54\\x36\\xd8\\x0d\\xb0\\x25\\xf8\\xfb\\x64\\x09\\xe2\\x75\\xbd\\x0e\\xd5\\x08\\xb5\\xe0\\x39\\xed\\x2e\\x4e\\xec\\x8b\\x0f\\x4d\\x5b\\xe9\\x9d\\xca\\xfa\\x6a\\x14\\x01\\x25\\x27\\x32\\xa6\\x5b\\x37\\xc9\\x43\\xc0\\x7e\\xf3\\xac\\xbc\\xfb\\xb3\\xdc\\x06\\xda\\xd0\\xa8\\x8f\\x2f\\x5e\\xb5\\x51\\xa3\\x99\\x7a\\xd6\\xc6\\xee\\xd9\\x5e\\xdd\\x9a\\x0a\\xf4\\xa2\\x88\\xd5\\xe4\\x32\\x86\\xb2\\xac\\x07\\x29\\x77\\xc4\\x36\\xb7\\xc5\\xff\\x7a\\xb6\\x1c\\x94\\x84\\xf2\\x57\\xf5\\x8e\\x01\\x0c\\x9b\\x6a\\xd4\\x15\\x81\\xd7\\x42\\xcd\\x19\\x75\\x2c\\xde\\x54\\xd2\\xb4\\x20\\xd6\\x43\\x65\\x4e\\x90\\x96\\xa8\\x1e\\xb9\\xdc\\xf8\\x04\\xc7\\xc2\\xed\\x0e\\x38\\xd1\\x3a\\x5c\\xe3\\x99\\x78\\xcd\\xd0\\x2b\\x25\\x35\\x09\\x45\\xde\\x78\\xfe\\xec\\xc0\\xc2\\xc2\\x2f\\xfd\\x70\\x5c\\x3b\\xa8\\x11\\x32\\x65\\xc7\\xb9\\xa7\\xc8\\xdd\\xb5\\x91\\x78\\xbd\\x21\\xd7\\xf6\\xc3\\x1c\\x6b\\xe2\\xc3\\x67\\x49\\xee\\x0f\\x9a\\xb8\\xbc\\x1d\\xcf\\x5d\\xa5\\xcb\\x2d\\x2d\\x59\\x62\\x35\\x8f\\x71\\xf9\\x6a\\xb3\\x79\\x2a\\x25\\x2a\\x51\\x9e\\x41\\x53\\x51\\xf4\\x3e\\x7e\\x12\\x03\\x5b\\x03\\x28\\xf2\\x82\\x08\\xcf\\x4b\\xe5\\x29\\xd2\\x99\\xaa\\x5c\\x12\\x8c\\x9d\\x5e\\xd5\\x75\\xbf\\x90\\xc5\\x35\\x05\\x69\\xea\\xa6\\xf2\\xd5\\x52\\x1d\\xe1\\x18\\x03\\x09\\xf6\\x86\\xc9\\x7e\\x9a\\xd6\\xfa\\x1e\\xc1\\xdd\\x86\\x27\\xae\\x89\\x51\\x58\\x1c\\xf6\\x04\\xb8\\xb9\\x17\\xc5\\xba\\x43\\x4a\\x63\\x7b\\xe1\\xbc\\x8b\\x79\\xf4\\xac\\xaf\\x77\\x95\\xf4\\xe5\\x1a\\xab\\xdb\\x88\\x50\\x77\\xbc\\x4f\\x3c\\x68\\xfc\\x33\\x18\\xde\\x58\\x23\\xd7\\xe0\\x80\\x4e\\xe9\\x95\\xb7\\x03\\x87\\x95\\x0f\\x79\\x93\\x53\\x68\\x23\\x00\\xd4\\xe7\\x97\\xf3\\xca\\xd6\\x11\\xb4\\xc5\\x62\\xc8\\x64\\x0f\\xf2\\xb3\\xfe\\x29\\x29\\x16\\xa9\\x70\\xfb\\x98\\xc1\\x47\\x5c\\x1f\\x4e\\x27\\xb9\\xb3\\x3c\\xfe\\x0d\\x3a\\xd9\\x32\\xa1\\xeb\\xe6\\xa2\\x7f\\xc3\\xb4\\x46\\x62\\x29\\x54\\xae\\xe1\\x68\\x36\\x68\\xc8\\xbd\\x4a\\x3f\\x90\\x3b\\xe5\\xc7\\x7d\\xfd\\xb8\\xe8\\x91\\x4c\\xed\\xc5\\x1f\\x65\\xfe\\xd2\\xd9\\xc4\\xd0\\x3e\\x13\\xa6\\x68\\xd4\\xc7\\xea\\x5e\\x31\\x88\\x3e\\x1b\\x3d\\xb6\\x43\\x63\\xe2\\xac\\x5c\\xc5\\x4b\\x54\\xce\\x69\\xc6\\xad\\x52\\xf8\\x74\\x99\\x9b\\x5d\\xd2\\xc5\\x78\\x2f\\x03\\xc3\\xd5\\x15\\x05\\xdf\\x53\\x6a\\x1f\\xe0\\xd8\\x60\\xd3\\x3e\\xab\\xed\\x64\\x1a\\x94\\x00\\x89\\xf1\\x29\\x7d\\xd0\\xf5\\x7f\"},\n{{0xf8,0xff,0x97,0x03,0x2a,0x34,0xcf,0x99,0x99,0x08,0x80,0x58,0xaf,0x56,0xff,0x70,0xb6,0xac,0xb2,0xed,0xf7,0x59,0xe1,0x31,0xfa,0xec,0x84,0x40,0xfd,0xec,0xf6,0xc4,},{0x54,0x38,0xb4,0xe3,0x3f,0x1c,0x5e,0xa1,0x12,0xfb,0x1b,0xaf,0xef,0x40,0x59,0xbf,0x09,0x5a,0x11,0x40,0x9b,0x64,0xd4,0x6b,0xfb,0x4d,0x25,0x47,0x3c,0x1c,0x08,0x74,},{0x50,0x9e,0x9e,0xad,0xfe,0x8d,0xde,0x79,0x14,0xac,0x20,0xca,0xfc,0x0b,0x0a,0xf2,0x2b,0x84,0xdd,0x8a,0x21,0x0a,0x48,0x12,0xcd,0x8c,0xae,0x39,0xb0,0xa2,0x72,0xe5,0x3e,0x02,0x24,0x6d,0xc8,0x93,0x9e,0x92,0x26,0x92,0x03,0x36,0xe1,0x40,0xb3,0x15,0x32,0xd0,0x68,0x13,0x7a,0x34,0x16,0x1e,0x59,0x9a,0x86,0x94,0xa9,0x5d,0xdf,0x01,},\"\\xdf\\xb4\\x1f\\xb9\\xd5\\x37\\x02\\xcb\\x2b\\x9e\\x3f\\xfc\\xad\\x4e\\xa6\\x02\\x71\\x6f\\x71\\x8a\\x7e\\xa3\\x3e\\x21\\x84\\x3e\\x2a\\x6c\\x05\\x2c\\x70\\xc6\\xc5\\x14\\x85\\xd7\\x2b\\x53\\xa5\\xbb\\x4e\\x34\\xe0\\x3e\\x3e\\x1d\\x1a\\x52\\x51\\x8e\\xb3\\xe7\\xf1\\x8f\\x2a\\x1e\\x1c\\xaf\\x78\\xac\\xb2\\x11\\x60\\x89\\xbe\\xd4\\xc6\\x17\\x13\\x8e\\x71\\x6a\\x91\\x43\\x1f\\x2c\\xf6\\x44\\xa1\\x21\\x0f\\x6d\\x19\\x20\\xd2\\x85\\x99\\x42\\x64\\xd6\\x46\\x6b\\x0d\\x8d\\x2c\\x62\\x63\\x80\\x44\\x61\\x6f\\x57\\x6e\\xdc\\x7d\\x0d\\x93\\xcb\\x66\\x01\\x31\\xd4\\xbb\\x50\\x87\\x5e\\x15\\x36\\x40\\x12\\x3a\\x96\\xf1\\x5b\\x75\\xa5\\xbc\\xee\\x46\\xd5\\xcc\\x5e\\xb1\\xa4\\x31\\xc5\\x9d\\x2e\\xad\\xdf\\xd5\\x53\\x15\\x02\\xfe\\xb1\\x55\\x1b\\xf7\\x79\\x1c\\xd5\\x98\\x9d\\x17\\xd1\\x02\\x96\\xd0\\x1b\\xa3\\xae\\x3e\\x38\\x4c\\x67\\x45\\x26\\xca\\xb6\\x2a\\x7c\\x24\\xc0\\xff\\x67\\x7d\\xe7\\x1c\\xa1\\x72\\x62\\x1a\\x28\\xa8\\x5e\\x01\\xee\\xfe\\x07\\xf6\\xee\\xf9\\xc3\\xec\\xfd\\x7f\\x94\\x98\\xac\\x42\\xf4\\x6a\\x43\\x71\\x6f\\x61\\x53\\x18\\xa3\\xb2\\x87\\x57\\xc3\\xa1\\x5f\\x4f\\x1c\\x38\\x22\\xae\\x7a\\x75\\xc2\\x03\\xa2\\x98\\x25\\x8d\\x75\\x36\\x38\\xcf\\x42\\x5e\\x15\\xbb\\xc4\\x62\\x02\\xb0\\x93\\xb8\\xe4\\xf3\\xe6\\x70\\xfb\\xb6\\x63\\xdb\\x2b\\x69\\xc8\\xfb\\x0f\\x62\\x50\\x74\\xd8\\x5a\\x44\\xd3\\x50\\xe0\\x42\\xbb\\x1b\\x74\\x02\\x1d\\x19\\x29\\x97\\xa2\\xc2\\x7d\\xd6\\xc8\\x63\\x48\\x41\\xd1\\x00\\xa0\\x34\\x4b\\xae\\xd7\\x50\\xa3\\x9f\\xf5\\xdc\\xd9\\x84\\x8d\\xfc\\xf0\\x9e\\x5c\\x8c\\x47\\x96\\x7b\\x96\\x55\\x6e\\x23\\x32\\xca\\x17\\xd8\\xe4\\x2d\\xd8\\xf3\\x93\\xa5\\x44\\x5a\\x37\\x22\\x44\\x60\\x0b\\x30\\x01\\xb8\\xfe\\x86\\xc4\\x5e\\xaf\\xc6\\xe7\\x38\\xaa\\x7e\\x11\\x7b\\x4a\\x79\\xfa\\x2e\\x6b\\x00\\xf4\\x64\\x92\\x8d\\x18\\x56\\xc8\\x3e\\xcf\\xe8\\x7d\\xd3\\x4d\\x15\\x8f\\x5c\\xb4\\xe4\\xf4\\xd6\\x10\\xf5\\x97\\x17\\xec\\x79\\x0b\\xd3\\xff\\x87\\x20\\x40\\xb6\\x7e\\x8d\\x39\\x39\\xe8\\x04\\xe3\\xb5\\xdb\\x98\\x5a\\x09\\x56\\x21\\xcb\\xcc\\xd6\\x86\\xc0\\x93\\x4e\\xce\\x3e\\x27\\xab\\x2c\\x6c\\xe3\\x3f\\xb5\\x2b\\x11\\x1f\\x48\\xe4\\xf2\\x74\\xbd\\xf3\\x20\\xd0\\xb0\\x23\\x84\\xc8\\x3c\\x49\\xe1\\xa0\\x41\\xbd\\x23\\x19\\x10\\x9c\\x85\\xa0\\x6d\\x80\\x48\\xa9\\x93\\x35\\x7a\\xbf\\xd8\\x11\\xac\\x2f\\x38\\x05\\x9d\\x07\\x7a\\xcb\\xc3\\x6a\\xa9\\x66\\xc0\\x28\\x90\\x37\\x48\\x62\\x5f\\x92\\xe8\\xf7\\x9d\\x51\\xbd\\xa1\\x0f\\x78\\x52\\x29\\x77\\xf7\\x6e\\xc4\\xe8\\x85\\xe4\\x9a\\x46\\xc6\\x8d\\xe0\\x9f\\x3d\\xa8\\xf8\\x6b\\x71\\xae\\x64\\x23\\xbd\\x29\\xde\\xef\\x1c\\xc6\\xa1\\x13\\xea\\xc1\\x15\\xa6\\xcd\\xe2\\xcc\\xd0\\x11\\xfc\\x1c\\x0f\\x0e\\x34\\x27\\xf4\\x3c\\x3e\\x96\\xfc\\x41\\x56\\xed\\xf6\\x2d\\xdf\\xb7\\xb0\\x83\\x6b\\x88\\x8b\\xab\\x3c\\x43\\x45\\x05\\x5a\\x6c\\x41\\x78\\xe9\\xe2\\x28\\x29\\xfd\\x8c\\xfc\\xe3\\x9b\\x0b\\x84\\x44\\xeb\\x26\\x48\\x7c\\xc9\\xdc\\x82\\x60\\x6f\\xea\\xad\\xaf\\x49\\x78\\x69\\x4e\\x65\\x64\\xf2\\x72\\x9c\\x1b\\x13\\xab\\x37\\xc9\\x07\\x2d\\xb4\\xe9\\xde\\x94\\x0e\\xe5\\xf1\\xd0\\x58\\x84\\xae\\x7f\\xd9\\xd9\\xec\\x9c\\xb7\\xde\\x56\\x34\\x76\\x00\\xa8\\x8d\\xea\\x92\\x08\\xa6\\x34\\x19\\xfc\\xe2\\x9e\\xe5\\x00\\x55\\xa3\\x74\\xa8\\xf2\\x2f\\x9a\\xe2\\xbe\\x98\\x05\\xa9\\xf4\\x76\\x15\\xaa\\x59\\x57\\x6b\\x44\\x04\\x2f\\xf1\\x26\\xa8\\x98\\x24\\xe3\\x6a\\xd6\\xbc\\x58\\xe0\\x6b\\xb9\\x0f\\xbe\\xef\\xba\\xe5\\xd6\\xd7\\xd6\\x24\\x30\\xf3\\x73\\xb6\\x29\\x6f\\xbf\\xcd\\x4d\\x66\\x20\\x16\\x83\\x53\\x58\\x3f\\xbd\\x3d\\x5a\\x29\\x2b\\x95\\x72\\x51\\x75\\x34\\xe2\\xfb\\x0b\\xee\\xf2\\xfa\\x98\\xa4\\x64\\xe5\\x91\\x03\\xe7\\xa0\\x42\\x87\\xf1\\x5d\\xad\\x0f\\xac\\x54\\x97\\x0e\\x77\\x15\\x07\\x8d\\x63\\xec\\x26\\x36\\x2f\\x6f\\xba\\xbc\\xdd\\xea\\xf7\"},\n{{0x2e,0x4c,0x39,0x21,0x9f,0xc9,0x2a,0x53,0x8e,0x48,0xe9,0x5f,0xbf,0xcf,0xef,0x30,0xf5,0xa2,0x1b,0x78,0x94,0x0b,0x81,0x05,0x3b,0xda,0xd4,0x60,0x2b,0x4c,0x96,0x90,},{0xf8,0xee,0xd8,0x92,0x17,0x66,0x20,0x43,0x4c,0x7f,0x0e,0xc5,0x3d,0xcf,0xf3,0x98,0x63,0x10,0x9e,0x7c,0xa4,0xd0,0xb3,0xc6,0xc4,0xb5,0x64,0x10,0xbe,0x01,0xe5,0x37,},{0x39,0x45,0x20,0x12,0x2b,0xb0,0xa5,0x64,0x64,0x8a,0x7a,0x8b,0xc8,0xdc,0x73,0x63,0x6c,0x51,0x77,0x46,0xa3,0xc8,0xa0,0x5b,0x90,0x1e,0x72,0x52,0xfe,0xf0,0xe5,0x02,0x3d,0x90,0x99,0x1e,0x31,0x1b,0x53,0x82,0xd4,0x91,0x00,0xe5,0x26,0x33,0xc7,0x0f,0xe9,0xc2,0x6c,0x14,0x50,0xe0,0x60,0x3e,0x6d,0x45,0x22,0x99,0xaf,0x4d,0xae,0x07,},\"\\xc8\\x7d\\x1f\\xba\\x9d\\x94\\xa6\\xa5\\x40\\x89\\x80\\xfc\\x80\\x83\\x98\\x0f\\xd2\\xd2\\x52\\xfa\\xe5\\x40\\xf6\\xee\\xc1\\x9e\\xd6\\x74\\x6c\\x29\\xe3\\x39\\xa1\\xc2\\x9f\\x6f\\x53\\xbc\\x23\\xfd\\x6b\\xfa\\x43\\x85\\x07\\xef\\xf5\\xda\\xf9\\x03\\x40\\x3c\\xda\\x70\\x7b\\x4d\\xc5\\xe8\\x44\\x80\\x5d\\x6b\\x1c\\xeb\\x4a\\xff\\xf4\\xb2\\x32\\xe8\\xe6\\x9d\\x7d\\x27\\x1f\\x3c\\x06\\x7c\\x48\\x54\\xf3\\xd9\\x4f\\x27\\xfe\\x32\\x55\\x81\\xfa\\xca\\x79\\xd1\\xf0\\x2a\\x26\\x29\\x0a\\xd2\\x3a\\xf7\\x11\\x00\\xc1\\x2c\\x09\\x15\\x76\\x47\\xca\\x9d\\xa4\\x3d\\x76\\x90\\xdd\\xcd\\x94\\xdb\\x65\\xe0\\x00\\x98\\x9c\\x87\\x8b\\x75\\xa0\\xff\\x22\\xd2\\xc7\\x09\\x62\\x59\\x4c\\x9b\\x08\\x08\\xf2\\x78\\x46\\xcc\\xac\\x85\\x67\\xbc\\xe5\\xd2\\xe3\\xb7\\x60\\x28\\x09\\xf2\\x3b\\x59\\xcd\\x71\\x8a\\x08\\x05\\xd1\\x08\\xf3\\x1a\\x63\\x2a\\x05\\xb8\\xdf\\xa5\\x03\\x5a\\xb9\\x46\\x1a\\xeb\\xa4\\x16\\x00\\x9d\\x74\\xfd\\xf9\\xe0\\x07\\x20\\x28\\x56\\x89\\x0d\\x2c\\xff\\x80\\xfa\\x24\\x0b\\x97\\x8a\\x48\\x27\\x0f\\xcb\\x2f\\x47\\x36\\x97\\xbc\\xba\\x8e\\x73\\x0a\\x55\\xc2\\x87\\x61\\x91\\x9a\\x23\\xbe\\x41\\xda\\x27\\xff\\xea\\x09\\xe3\\x55\\x9c\\xaa\\xab\\xf9\\x51\\x9e\\xc0\\x8e\\x1f\\xfa\\x86\\x81\\x7a\\xa3\\xe8\\x87\\x4f\\xa8\\x16\\xe7\\x71\\x8c\\x5b\\x2f\\x34\\x49\\x67\\xba\\x1b\\xc2\\x81\\x9c\\x4f\\x04\\x5a\\x97\\xb4\\x05\\x44\\xea\\x61\\xd7\\x17\\x08\\x3c\\xca\\xf1\\x1e\\x9d\\xdc\\x04\\xa3\\x59\\x8e\\xf1\\x81\\xe7\\xbe\\xf4\\xac\\xef\\x45\\xb6\\x55\\x1b\\x47\\x8a\\x0d\\x77\\x31\\xc4\\xf0\\x8c\\xe5\\x80\\x2f\\x78\\x25\\x8d\\x41\\x90\\x17\\x66\\x10\\x76\\xd7\\xd6\\xd2\\xef\\x39\\xe5\\x7c\\xf9\\xcd\\x93\\x97\\xdc\\xc5\\xde\\xbf\\x64\\xab\\x82\\xb6\\x61\\x59\\xf5\\x78\\x31\\x6e\\x74\\xcd\\x49\\xf5\\xad\\x2c\\x6f\\xef\\x83\\xcf\\x08\\x68\\x3b\\x95\\x70\\xa9\\x46\\xad\\x49\\x03\\xdf\\x4e\\x96\\xec\\x00\\x8e\\x14\\xa5\\x01\\xfa\\x93\\x86\\xbd\\xaf\\x2a\\x63\\x99\\x3c\\x6c\\x9b\\xdf\\x23\\x1f\\xd0\\x9e\\xa6\\xf9\\x6e\\xf4\\xd4\\xe2\\x9a\\x3a\\x33\\x27\\xcb\\xf7\\x4e\\xa8\\x31\\x05\\x4e\\x66\\xca\\x86\\x68\\x0c\\x6c\\xe5\\x3b\\x66\\xf9\\x46\\x5d\\x06\\xb3\\xfa\\x07\\x98\\xbb\\x69\\x05\\xae\\x38\\x45\\x59\\x34\\xf2\\xfb\\x7e\\x0b\\xa4\\x72\\x32\\x89\\x89\\xf0\\x01\\x30\\x86\\x71\\xcc\\xcb\\x56\\x6d\\x22\\x2c\\x72\\x16\\x5b\\xb3\\xa7\\x44\\xfb\\x98\\xe2\\x21\\x0f\\x96\\x20\\x68\\x0d\\xf3\\xe3\\xcd\\x14\\xa8\\xbd\\x94\\xb5\\x74\\x5c\\x00\\x16\\xdd\\xa7\\x7f\\x05\\x9f\\x26\\x05\\x3b\\x64\\xcf\\x45\\x23\\xc3\\xd4\\x29\\x11\\x2f\\xb6\\xb3\\x28\\x39\\x8b\\xc6\\x30\\xa2\\xe9\\x06\\xb9\\x5a\\x6c\\x57\\x80\\xcf\\xdc\\x06\\x41\\xbe\\x47\\x51\\xbe\\xbd\\xdf\\x77\\x24\\xdc\\x9c\\x27\\xe7\\x8d\\x60\\xed\\x0f\\xd7\\x36\\xd5\\xab\\xd8\\x89\\x29\\xc1\\x79\\x5d\\x47\\x3a\\xbd\\x2b\\x03\\x20\\xc5\\x40\\x47\\x57\\x28\\x82\\x18\\x67\\xa4\\x09\\xa2\\xff\\x13\\xcc\\x44\\xce\\x35\\xe5\\x98\\x1e\\x9f\\x6b\\x87\\xa2\\x8d\\x4f\\xa8\\xb8\\x67\\x5e\\x50\\x3f\\xae\\xfc\\xa7\\xc1\\xd7\\x98\\x47\\x37\\x87\\x1f\\xe9\\x19\\xac\\x41\\x4e\\xea\\x26\\x5e\\xe3\\x1f\\x9f\\x78\\xf5\\x21\\xf3\\xf4\\xf8\\xd0\\x0c\\x3f\\xb7\\x91\\x71\\xf3\\xc6\\xa5\\xdb\\xf5\\xe1\\xac\\x8b\\xf6\\x3b\\x4c\\x3d\\x8d\\x8b\\xc1\\x21\\x03\\x6e\\x9e\\x55\\xbb\\x70\\x2e\\xa6\\xc8\\x6e\\x92\\x5e\\xc0\\xb9\\x84\\xde\\xd2\\xc7\\x1f\\x3b\\xfd\\x49\\x32\\xe6\\xc4\\x1b\\x58\\x2f\\xd0\\x2c\\xa5\\x9f\\x53\\xce\\x29\\x74\\x45\\x78\\x5c\\xc4\\xca\\xc2\\x47\\xb0\\xb8\\x4e\\x7f\\xa0\\xbc\\xdc\\xf7\\x9b\\x3e\\x4a\\x15\\x5f\\x98\\x78\\xc1\\xf6\\x43\\xbe\\x9c\\x42\\xf7\\xa4\\xf2\\x72\\x60\\x44\\x45\\x05\\xc1\\x84\\x5b\\xd5\\x3b\\x55\\x0a\\x31\\xd7\\x95\\x3c\\xc7\\x38\\x86\\x1f\\x46\\xbd\\xf4\\x87\\x0f\\x3a\\x77\\xac\\xe1\\x91\\xab\\xd6\\x3c\\x45\\xad\\xb1\\x53\\x90\\x9f\\xb5\\x9a\\xb5\\xdb\\x9b\"},\n{{0xf0,0x92,0xe6,0xbe,0x8d,0x2d,0x9a,0xd0,0x69,0xa3,0xe2,0xb9,0x76,0xd2,0x44,0xe3,0x4c,0x15,0xc2,0x8c,0x48,0xd3,0x2f,0x55,0x60,0xa5,0x41,0x85,0xd1,0x50,0x15,0x02,},{0xcf,0xeb,0x3e,0x74,0xe4,0xb5,0xc8,0x35,0x6a,0x81,0x75,0x7b,0x8f,0x1b,0xe4,0xb4,0x29,0xfc,0x18,0xfc,0xaf,0x49,0x7c,0xbf,0x8d,0x8b,0xc0,0x48,0x0f,0xf9,0x78,0xf9,},{0x63,0xcd,0x4c,0x0b,0xa3,0xbe,0x93,0x97,0xcc,0x0f,0x3c,0x1a,0xf3,0x48,0xec,0x4b,0x8a,0x91,0xe4,0x2f,0xee,0x67,0x5d,0xa1,0xd0,0x59,0x00,0xb9,0xa8,0x6c,0x13,0x8f,0x91,0x74,0xeb,0x99,0x6b,0xbd,0xf3,0x1c,0x42,0x95,0xe0,0xc5,0x78,0xac,0x0f,0x9d,0x53,0x76,0x41,0xa2,0xaf,0xd5,0xdf,0xf9,0x3a,0x39,0xc5,0xcd,0x9d,0x3c,0x48,0x0b,},\"\\x2c\\x25\\x5f\\xb2\\x5d\\x45\\xb0\\x86\\xc0\\x71\\xe0\\x3e\\x52\\x5b\\x4d\\x72\\x85\\x78\\xfb\\xb6\\xb0\\xc6\\x0d\\xa9\\x41\\xe6\\xbf\\x2a\\x48\\x98\\xb2\\xd5\\xb6\\x98\\x8c\\x53\\x30\\x27\\x85\\xab\\x7a\\x3b\\xc4\\xbb\\x2c\\x20\\x5a\\xcd\\x27\\xd6\\xa4\\xcb\\xdd\\x1a\\x0c\\x08\\x89\\xde\\xd7\\x84\\x26\\x4c\\xb7\\xc0\\x28\\x89\\xc5\\xc7\\x11\\x3f\\xc9\\x0b\\xbb\\xcd\\x31\\xff\\x00\\x14\\x32\\xc0\\x53\\xf9\\x71\\x07\\x3c\\xf6\\x71\\x2f\\x66\\x7f\\xce\\x46\\x98\\x77\\x6b\\x98\\xcc\\x54\\x44\\xc6\\x92\\xab\\xd1\\x28\\x81\\x98\\xbe\\x5a\\xd5\\x67\\x46\\x09\\xf7\\xe1\\x39\\xad\\x1b\\x9c\\xcb\\x94\\x3f\\x8d\\xfd\\x9d\\x12\\xc5\\x4e\\xce\\xe2\\x78\\x34\\x1b\\x2e\\xe1\\x27\\x79\\x91\\xca\\x62\\xcd\\x3b\\xfe\\x12\\x8d\\x13\\x92\\x96\\x4e\\x95\\x88\\xe2\\xf9\\x7c\\x32\\x17\\x04\\xa3\\xde\\x10\\x61\\x88\\xc5\\xeb\\x33\\x5a\\xa5\\xa1\\x9a\\xcc\\x90\\x67\\xb4\\xa9\\x41\\x29\\xb9\\xd1\\xa6\\x16\\x7c\\x4b\\xbf\\xb5\\x6f\\xb9\\x76\\x84\\xcb\\xbd\\x72\\x0c\\x86\\x86\\x9e\\x00\\x20\\xab\\x07\\x76\\xcd\\xc9\\x95\\x4f\\xeb\\xa8\\x62\\x12\\x4b\\x07\\x3f\\xba\\x8d\\xe9\\xea\\x9a\\x38\\xea\\xcf\\xa0\\x03\\xae\\x4f\\x1c\\xdc\\xbf\\x15\\xc3\\x2f\\xb6\\xb9\\x70\\xc7\\x31\\x15\\xdd\\xff\\xcd\\x4f\\xa3\\xb7\\x18\\x46\\x11\\x0e\\xde\\xc2\\x57\\xfc\\xae\\xd6\\x11\\x36\\x04\\xf7\\x19\\x25\\x72\\x57\\x72\\x64\\xb9\\x90\\x5c\\xa6\\xae\\xd8\\xda\\xec\\x13\\x84\\x03\\xca\\x41\\xaa\\x95\\x42\\x78\\xa5\\x72\\x0b\\x26\\x7b\\x90\\xca\\x16\\x3a\\x9b\\xdf\\x44\\x7e\\xad\\xe8\\xde\\xb7\\x69\\xa3\\xb4\\x92\\x37\\xa7\\x35\\x16\\x97\\x7c\\x28\\x73\\x45\\x55\\xdd\\x23\\x4c\\xa7\\xde\\x49\\x99\\x26\\x1b\\xc7\\x96\\x0f\\x53\\x6b\\xa8\\xa3\\x5a\\xd3\\xd0\\x2c\\x75\\xf1\\xc2\\xbe\\xa0\\xa0\\x61\\x2e\\x7d\\x49\\xc4\\x03\\x97\\xdd\\x6a\\xf5\\xff\\x58\\xba\\xe6\\xa6\\x4b\\x6a\\x77\\xe9\\x81\\xf9\\x2d\\x15\\x9e\\x0b\\x2b\\xd2\\x05\\xab\\x15\\x70\\x52\\xf4\\x70\\x17\\xa3\\xe1\\x8a\\xec\\x94\\x4d\\x04\\x65\\xee\\x00\\x17\\xe9\\x61\\x48\\xa6\\x12\\x9f\\x74\\xd3\\xcc\\xb4\\x89\\xfe\\xa1\\x3a\\x15\\xa9\\xb9\\xac\\xed\\x58\\xc6\\xee\\x0e\\x6e\\x84\\xe0\\x5f\\xda\\xdf\\xae\\x07\\xb3\\x34\\xa9\\x8f\\xc3\\x7f\\x7e\\x51\\x1c\\xd5\\xa4\\x4e\\x9c\\x74\\xe4\\x78\\xd3\\x49\\xe3\\x0e\\x29\\xae\\xb4\\x6a\\x4d\\xf0\\x1e\\x43\\x07\\xfe\\x65\\xe1\\x39\\x4a\\x75\\x8f\\x6a\\xda\\x2f\\xb1\\x20\\x22\\x5c\\xcd\\x50\\xa4\\x90\\x13\\xe6\\xc9\\xf1\\x75\\xaf\\x90\\xf3\\xfc\\x8c\\x57\\xe7\\xa6\\xa9\\x69\\xa9\\x16\\xc3\\xf1\\xaa\\xcc\\x22\\xf3\\xe0\\x1a\\x07\\x0c\\xc4\\x8e\\x6f\\xd8\\x78\\xe2\\xbd\\x07\\x3d\\xf9\\xee\\x6f\\x05\\x9b\\x98\\x56\\x84\\x04\\xfc\\x7e\\xae\\x7d\\x4b\\xf6\\xfa\\x16\\xc0\\xc8\\x03\\xc6\\xbe\\x84\\xe8\\xb7\\x9c\\x67\\xaf\\xfc\\x8c\\x88\\xca\\xbd\\xee\\xbc\\x11\\x34\\xbb\\x23\\x86\\xe2\\x2b\\xa4\\xd2\\xe9\\xe0\\xf3\\xe1\\xab\\x3a\\x0d\\xac\\x7c\\x80\\xdd\\xee\\xd7\\x73\\xcd\\xa0\\xc4\\x1d\\xc9\\xde\\xfa\\x67\\xfe\\xa3\\x77\\x69\\xcb\\x4a\\x1e\\x15\\x22\\xd7\\xe0\\xb3\\xd7\\xc4\\x63\\x8b\\xcd\\x98\\x31\\x53\\xd4\\x78\\xbe\\x5e\\xcf\\x2b\\x6a\\xb1\\xb4\\x01\\x24\\xe4\\x22\\x2b\\x8c\\xaa\\x46\\x47\\xbd\\x50\\xd7\\x4d\\x20\\x39\\x43\\xab\\x20\\x93\\x8d\\x5f\\x27\\xd9\\x08\\xa6\\x73\\x67\\x40\\x46\\xce\\x2e\\xf1\\x8e\\x85\\x8b\\x0a\\x01\\xa7\\xe7\\x53\\x0d\\xed\\x0f\\x8c\\xc8\\x9e\\xf0\\x9b\\x73\\xca\\x59\\x7c\\xf7\\x3a\\xfb\\xc9\\xa2\\x71\\xa4\\xd2\\x3c\\x92\\xfe\\x59\\x18\\x83\\xc4\\x40\\x10\\x9c\\x4e\\xf4\\x16\\x67\\x0b\\x7f\\x2c\\x59\\x05\\xb7\\x7f\\x65\\xf5\\x6d\\x09\\xd4\\x02\\x50\\x35\\x6f\\x9b\\x1d\\xbc\\xaf\\x1e\\xe2\\xc0\\xb6\\x36\\x96\\xf8\\x4d\\x68\\xdd\\xbe\\xa1\\x60\\x08\\x51\\x51\\xa9\\x52\\x62\\x74\\xd7\\xb8\\x46\\xcc\\xeb\\x6c\\x43\\x48\\x09\\x84\\x84\\xde\\x3b\\xb7\\x23\\xae\\x5e\\x85\\x27\\x6d\\xf4\\x9f\\x56\\x34\\x13\\x0f\\xf9\\x05\\x75\\x4f\"},\n{{0x01,0xa2,0x47,0x94,0x3a,0xfe,0x83,0xf0,0x36,0xb6,0xb6,0x0f,0x23,0xd9,0x77,0x74,0xfd,0x23,0x20,0x8e,0xdc,0x31,0xcf,0x3d,0x88,0x20,0xe9,0xdc,0x63,0x66,0x11,0x03,},{0x8c,0x97,0xa5,0x8b,0xe0,0xe8,0x47,0xc4,0x8a,0x6a,0x39,0x87,0xcf,0xe2,0x50,0xa8,0xd7,0xb0,0x7d,0x97,0xf9,0x61,0xf6,0xb7,0xb7,0x9e,0x7d,0x80,0x42,0xb8,0xbd,0x7b,},{0xed,0x2c,0xed,0x1a,0x4f,0xdd,0xb3,0x44,0x2a,0x63,0x73,0x48,0x17,0x9a,0x6a,0x5b,0xee,0xdc,0xb4,0x4c,0x8e,0x98,0x8c,0xa2,0x6f,0x78,0x93,0x6d,0x2c,0x8d,0xb5,0xc5,0x16,0xd5,0x4b,0x8c,0x4f,0x08,0xd9,0x1d,0xd7,0x04,0x2a,0xb6,0xab,0x26,0xd8,0x7f,0x23,0x0e,0xb2,0xb2,0x15,0x6f,0x3c,0xe2,0x99,0x4f,0xce,0x7c,0x2b,0x0f,0x10,0x0e,},\"\\x08\\xd8\\x14\\x95\\xda\\x77\\xf4\\x07\\x25\\x5c\\xc4\\x1a\\x81\\x8e\\xef\\xa7\\x27\\xe2\\xc4\\x7a\\xe4\\x11\\xf4\\xb5\\x41\\xf0\\x1f\\x81\\x1d\\x90\\x6d\\x55\\xfb\\x1e\\x3c\\x9c\\x48\\x4d\\xf3\\x05\\x65\\x36\\x4d\\xe9\\xdc\\xb9\\xfe\\xa0\\xaf\\x66\\x11\\x2f\\xe7\\x5f\\xd1\\x1a\\xe8\\x1d\\x26\\x41\\xb5\\x47\\x58\\x9f\\x8b\\x97\\x4a\\x97\\xe7\\x97\\x6e\\xd6\\x92\\xaa\\xd6\\x40\\xed\\xd2\\x88\\xbd\\x86\\x3d\\x11\\xc4\\xca\\x98\\x36\\xf9\\xd7\\xc1\\x15\\xc3\\xd9\\x88\\x30\\xd6\\x42\\x47\\xcb\\x6f\\x8f\\xb6\\x03\\xc6\\x98\\x11\\x33\\x55\\x2a\\x32\\x04\\x04\\x19\\x61\\xbd\\xd8\\x3e\\x2f\\x9d\\xeb\\xa7\\x70\\xc0\\x39\\x4f\\x9b\\x60\\x2a\\x45\\x35\\x51\\x07\\x49\\x21\\xa3\\xde\\x28\\x32\\x13\\x69\\xd7\\xf8\\xca\\x64\\x0c\\x45\\x10\\x9e\\x8f\\x52\\x2c\\x97\\xed\\x9f\\x35\\xb9\\x27\\x7a\\x35\\x0e\\x29\\x59\\x31\\xb4\\x2e\\x01\\x35\\xe9\\x4a\\x92\\xfe\\xd3\\x63\\xd6\\xca\\xe3\\x92\\xf7\\xc4\\x51\\x99\\x32\\x7e\\x24\\xb4\\xcf\\xa5\\x89\\x8a\\xb5\\x99\\xae\\x7b\\xd5\\x0b\\xd3\\xa0\\x0c\\x0d\\x00\\x7e\\x95\\xfa\\xf8\\xf2\\xae\\x10\\x38\\x02\\xca\\x7e\\x53\\xb2\\x79\\x18\\x4d\\x06\\x90\\x5f\\x57\\x48\\xca\\x8b\\xe1\\xf7\\x2e\\x66\\x8c\\xb8\\x32\\x83\\xdd\\x00\\x40\\x64\\x91\\xf8\\xb9\\xb4\\xe5\\xa9\\xd4\\xa5\\x43\\x8b\\x2f\\xa4\\x37\\x1e\\x0b\\x05\\x68\\x6f\\x87\\x57\\x5b\\xaa\\x79\\x6e\\x30\\x2f\\x08\\xff\\xc4\\x25\\x66\\x27\\x50\\xa3\\x3a\\x0c\\x9c\\xfa\\xa4\\xb4\\xd7\\x04\\x1f\\x92\\x64\\xfe\\xd7\\xbe\\x4f\\x9f\\xde\\x2c\\xac\\x68\\xa2\\x15\\x82\\x36\\xf6\\xac\\x43\\x04\\x7e\\x91\\x1f\\x4c\\x4e\\x8b\\xc6\\x63\\xfd\\xd5\\x05\\x17\\xdf\\xaa\\x8f\\xbc\\xd2\\x19\\xdd\\x7a\\x0e\\x93\\x69\\xf4\\x3d\\x0d\\xd2\\x5b\\x4f\\x0c\\xf9\\x30\\xf2\\x0b\\x7b\\x7c\\x6d\\xb9\\xd5\\xbe\\x0c\\x6e\\x19\\x60\\x94\\x1a\\x3e\\x04\\xd1\\x41\\xc0\\x3e\\x59\\x61\\xaa\\x33\\xe9\\x02\\x44\\x77\\xd5\\x33\\xc9\\x95\\x37\\x87\\x96\\xbf\\x22\\x92\\xad\\xe9\\x22\\x69\\x5b\\x14\\x56\\x9f\\xc3\\x39\\xb3\\xd9\\x08\\x5c\\x63\\xfc\\x6e\\x5b\\xef\\x4d\\x99\\x0c\\x80\\x33\\x3a\\x6b\\x57\\xaf\\x47\\x8f\\x93\\x8e\\x3e\\xe7\\x38\\xb1\\xd1\\x29\\xbd\\x97\\x6a\\xfe\\x68\\x61\\x28\\xbc\\xac\\x08\\xcc\\xbe\\xb0\\x34\\x9b\\x9b\\x53\\x73\\x13\\xbc\\x7b\\xf5\\x91\\xc6\\x5d\\x4a\\x71\\x23\\xad\\x30\\xbd\\xbe\\x14\\x86\\xb4\\x28\\x08\\x47\\x48\\xb6\\x50\\x7f\\x6f\\x5e\\xf6\\x7c\\x26\\xca\\x86\\x2c\\xf7\\x26\\xaa\\xc1\\x40\\xb8\\x61\\xae\\x0d\\xc7\\x4b\\xb3\\xc0\\xb4\\x89\\x78\\x9f\\x17\\x14\\x5e\\x9a\\x85\\x5a\\x3e\\x2b\\x5d\\xaa\\xc4\\x18\\xd8\\x35\\x37\\x33\\x23\\x9e\\xf6\\x9c\\x7b\\x56\\x5b\\x53\\x03\\xeb\\x87\\xbd\\x7f\\x64\\x9a\\xbf\\x40\\xa2\\xf1\\x35\\xa2\\x9e\\xd2\\x7e\\x3b\\xe4\\xc1\\x2c\\xd6\\xdd\\xd2\\xe5\\x41\\x8a\\x99\\x97\\x43\\x83\\x66\\x3f\\x58\\x49\\xbf\\x3c\\xe5\\x53\\x2b\\xf6\\x4a\\x80\\xaa\\x52\\x11\\x91\\xd2\\x53\\x90\\xbc\\x19\\xa4\\x5e\\xed\\x1d\\x3f\\xec\\xa1\\xd9\\xfc\\xc0\\xdb\\x03\\x1b\\xfb\\x48\\xe4\\x50\\xbe\\x3d\\x45\\x93\\x35\\x6d\\x5b\\xa0\\xf3\\x10\\x47\\xb4\\x57\\x74\\x5f\\x21\\xe3\\x2e\\xbe\\xa3\\xca\\x6c\\x35\\xf0\\x5d\\x78\\xd8\\xc3\\x16\\x40\\xb0\\xfe\\xcb\\x94\\x01\\x16\\x56\\x75\\xc7\\xf9\\xcb\\xb1\\x9b\\xc4\\xb5\\x67\\x7c\\x2c\\xce\\xdc\\x4e\\x7a\\xaf\\xb8\\x41\\x84\\xc1\\x91\\x99\\xac\\xa0\\xdb\\x21\\xcf\\x50\\x67\\xdc\\x3a\\xf7\\x69\\xbc\\xc6\\x29\\x35\\x5f\\xf7\\x25\\x7a\\x9e\\xfd\\x71\\xa6\\xa9\\x2d\\x13\\x0d\\x35\\xab\\xee\\x6e\\x70\\x60\\x5b\\x5c\\xab\\x93\\xc0\\x28\\xfa\\xc3\\xaa\\x23\\x44\\xba\\x86\\x1a\\xc1\\xe8\\xce\\x9a\\x4b\\x07\\x0c\\x3d\\xf7\\x40\\xd2\\x8c\\x5e\\xce\\x0f\\x1b\\xc3\\x1c\\x2d\\x7d\\x1e\\x5e\\xcc\\x76\\x10\\x44\\x80\\x93\\x91\\x33\\xa1\\x86\\x60\\xe4\\xa3\\xe4\\x84\\x6b\\x25\\x17\\xbe\\x3b\\x8e\\x7a\\xfa\\xfe\\x07\\x83\\x91\\xd8\\xaa\\x8e\\x5c\\x30\\x13\\x7e\\x85\\xd9\\x4d\\x64\\xa2\\x79\\xfb\\xee\"},\n{{0x91,0xfd,0xef,0xcd,0xbc,0x99,0x0d,0x3e,0x8e,0xeb,0x60,0x17,0x04,0x34,0xda,0x10,0x83,0x1b,0x03,0x08,0x1f,0x6a,0xfd,0x0d,0x7e,0x12,0xb1,0x00,0x11,0xe0,0x2a,0xef,},{0xc5,0x8d,0x3e,0x20,0xb8,0xd4,0x7b,0xa4,0x55,0xb9,0x12,0x57,0x2d,0xc8,0x40,0x81,0x5e,0x3d,0x88,0x5f,0xa5,0x91,0x7d,0x1d,0xa4,0x84,0x08,0xb9,0xa9,0x56,0x40,0x98,},{0x51,0x01,0x12,0x22,0x3b,0x33,0xa5,0xab,0x15,0x64,0xf7,0x53,0x71,0x91,0xcd,0x29,0x2a,0x9d,0xbd,0x5a,0x32,0x3d,0x7a,0xdd,0x05,0x84,0xc1,0xb0,0xad,0x00,0xd0,0xac,0x71,0x99,0xc3,0xfb,0x75,0x8e,0x91,0x3f,0xf3,0xd7,0x16,0xc2,0xe9,0x0d,0xd9,0x0d,0x4e,0x8f,0x59,0x95,0x1e,0x87,0xef,0x8b,0x78,0x21,0x4a,0x51,0x75,0xc4,0xe6,0x08,},\"\\x5b\\x0c\\x1a\\x3a\\x95\\xe0\\xba\\x74\\x74\\x76\\x6c\\x9b\\xad\\xfa\\xe3\\x4a\\xb8\\x60\\xe0\\xa6\\xc0\\x33\\xa2\\x2f\\xba\\x72\\x11\\x27\\xf5\\xbb\\xee\\xe8\\xe2\\xcb\\xde\\x1a\\x1d\\xfe\\xb1\\x8d\\x55\\x1c\\x95\\x99\\x4d\\x21\\xe3\\xeb\\xc6\\x8a\\xfa\\xe6\\x85\\x44\\x4a\\x3a\\x41\\x95\\xbc\\x75\\x55\\x38\\x90\\x3a\\xcf\\xa6\\x71\\x55\\x92\\xdd\\xe2\\x56\\xe7\\xa1\\xb4\\xc3\\x63\\xec\\xa7\\x1e\\xf0\\xf3\\xa4\\x8a\\xe3\\x44\\x2d\\x50\\xd5\\x66\\x1b\\x39\\x40\\x96\\xb7\\xec\\x27\\xbb\\xf5\\x29\\x53\\xf3\\x04\\x0c\\xd2\\x5b\\x78\\xce\\x47\\x55\\x27\\xe0\\xcc\\x59\\xf1\\xef\\x9a\\xe2\\xe0\\x59\\x04\\x31\\x58\\x2b\\x2d\\xf8\\x14\\x14\\x99\\x82\\x9a\\x2c\\x5f\\x7b\\xbe\\x35\\x98\\xe4\\xc9\\x6c\\xc0\\x1e\\xde\\x2f\\x43\\xb6\\x56\\x05\\xb4\\x88\\x59\\x37\\x09\\xc0\\x94\\xb5\\xa0\\x42\\xb2\\x85\\x55\\xfb\\x52\\x27\\xa6\\xd1\\x56\\x37\\x6f\\x3f\\xf0\\x7b\\xd5\\xc8\\xbc\\x68\\x04\\xd3\\x9a\\x32\\x82\\xac\\x59\\x70\\xba\\x08\\xae\\xbf\\x75\\x42\\xb8\\x45\\xf6\\xb5\\xc2\\x38\\xc2\\xce\\x20\\x44\\x3f\\x7f\\x77\\x55\\xd7\\x5f\\xe4\\xfa\\x16\\xb9\\x64\\x4c\\xa3\\xe2\\x1d\\x91\\xa9\\xa8\\x7c\\x68\\x61\\x15\\x74\\x8a\\x16\\xc0\\xae\\x4a\\xe4\\xe1\\x6d\\x1c\\x71\\xae\\x60\\x0b\\x39\\xcd\\x25\\xe5\\x63\\x3b\\x39\\x9f\\xee\\x7f\\xf2\\xe3\\x62\\xbe\\xd2\\x51\\x25\\xc6\\xfd\\x5c\\x7f\\x5f\\xfa\\x2d\\xa2\\x35\\x3f\\xd3\\x5b\\x78\\x4a\\x1b\\x1b\\x03\\x19\\x77\\x47\\x58\\xb7\\x39\\x0c\\x44\\xdc\\xc9\\x2f\\xca\\x42\\x01\\xdf\\xe1\\xa3\\x75\\x69\\xde\\x05\\xf0\\x66\\x4d\\x08\\xb9\\x0d\\x6e\\x2b\\xad\\xc2\\x1b\\x92\\xf9\\xce\\x87\\x21\\x42\\x35\\x7b\\x96\\x15\\x08\\x0a\\xb7\\x65\\x9a\\x24\\x6f\\xf0\\x85\\x2a\\xdb\\x17\\xdf\\xda\\x70\\xcf\\x17\\x54\\x15\\x7b\\x13\\xbc\\x03\\x2b\\x4c\\x5d\\xeb\\x8e\\x10\\x68\\xb4\\x69\\x2b\\x93\\x16\\x5d\\xa3\\x5e\\xfc\\x9d\\xa8\\x6a\\xcb\\xe6\\xf8\\x0f\\x01\\xbb\\xc2\\x6f\\x57\\x5e\\xc5\\xaf\\x5b\\x05\\x0e\\x98\\x28\\xaf\\xde\\x6c\\x3b\\x78\\xe7\\x33\\xeb\\x5a\\x91\\x24\\x92\\xf7\\x65\\xbc\\xad\\x73\\x1b\\x95\\xe3\\xab\\x88\\x96\\xb6\\x17\\x58\\xbf\\x91\\x3b\\x9a\\x15\\x68\\xf9\\xc5\\xb4\\x60\\x33\\xcf\\x45\\xdc\\xc1\\x75\\x0d\\xa2\\x06\\x6c\\x60\\x8d\\xc3\\xd3\\x43\\x73\\x8e\\x84\\x8d\\xc3\\x90\\xcd\\x47\\x44\\x32\\xe9\\x91\\xd7\\xaa\\x2c\\x5b\\x27\\x81\\x42\\x1e\\xfe\\x55\\xe3\\x6b\\x0b\\x42\\xc1\\xf4\\x9a\\xe2\\x77\\x48\\x0b\\x0f\\xc5\\xff\\x68\\x5b\\xb5\\xa3\\x1b\\xe3\\xa0\\xfa\\x44\\x82\\x38\\x16\\x07\\x70\\x37\\x54\\x8a\\x5c\\x9b\\x0e\\x1c\\xc6\\xc6\\x35\\x04\\xa4\\x07\\x57\\x9a\\x36\\x32\\xb3\\xc9\\x6f\\xcd\\x0d\\xe5\\xea\\x1e\\x4d\\x6e\\x87\\xc0\\xca\\xf7\\xb6\\xca\\xe3\\x12\\x0d\\xb8\\xb1\\xf4\\x61\\x5c\\xe6\\xa7\\x5a\\x81\\x65\\x4f\\x39\\x04\\x28\\xb6\\x4c\\x21\\x3e\\x72\\x7e\\xec\\x3a\\xe7\\xf9\\xf4\\x2d\\xb9\\x06\\xf4\\xde\\x1f\\xda\\xdd\\x34\\xa3\\xda\\x2a\\xeb\\x12\\xb4\\xd9\\xa1\\x85\\xf4\\xa6\\x0c\\xb0\\xc2\\x67\\x45\\xf5\\x30\\xb4\\x81\\xfc\\x97\\x6a\\x09\\x3c\\xe2\\x4a\\x30\\x91\\x6a\\xf6\\x05\\xee\\x94\\xb0\\x87\\x85\\x19\\x3a\\x94\\x9d\\x56\\x9c\\x4b\\x7e\\xf5\\x96\\x03\\xbb\\x62\\x43\\x60\\xe7\\xb4\\x08\\xd9\\x8c\\xa5\\x09\\xda\\xf5\\xa9\\x2a\\x6d\\x40\\x15\\xbd\\xb6\\xf9\\x7a\\xd4\\xff\\x0c\\xf0\\x5c\\x8f\\x0c\\xd5\\x47\\x6a\\x93\\x44\\x26\\xa0\\x59\\xf2\\x44\\x44\\x46\\xe5\\x86\\x4f\\x08\\x9e\\x0f\\x06\\x75\\x61\\x59\\x10\\x66\\x2d\\x7c\\x1e\\x79\\xa6\\xc7\\x5f\\xa3\\x14\\xb7\\xba\\x2c\\x64\\x3b\\x0d\\x37\\x65\\x3e\\xef\\xe5\\x93\\x17\\x2d\\x1d\\x33\\x2c\\x8d\\xd6\\x44\\x92\\xea\\xf1\\x04\\xfb\\x19\\x57\\xba\\xa5\\x20\\x49\\x44\\x2d\\x10\\xb5\\x6a\\xf8\\xea\\xe8\\xff\\x82\\xcd\\x8f\\x46\\xa0\\x49\\x4b\\xec\\x2f\\xcb\\x9f\\xad\\xf1\\x0c\\xf7\\x1a\\x6e\\xec\\xd0\\x54\\x7d\\xaf\\xdc\\x7a\\xdb\\xaa\\x45\\x03\\x78\\x3f\\x94\\x3a\\x46\\xb4\\xad\\x0e\\x6d\\xd7\\xf2\\xca\\xb5\\x56\\x17\"},\n{{0xef,0x00,0xb3,0xc1,0x81,0xf6,0x32,0x7d,0x02,0x25,0x67,0x51,0xcb,0x51,0xc2,0xc3,0x6c,0x0c,0x0a,0x78,0x07,0x63,0x40,0x54,0x8f,0x5b,0xc0,0x70,0xd8,0x6d,0x9e,0x26,},{0xdb,0x14,0xcd,0x32,0x58,0x8f,0xd7,0x41,0xe8,0xf4,0x2e,0x51,0x21,0xcc,0x81,0x1a,0xd4,0x50,0x63,0xf2,0x81,0x41,0xe8,0x3c,0x66,0x8f,0x07,0xd9,0x12,0x28,0xf0,0x49,},{0x13,0x9f,0x9c,0xb9,0x9b,0x99,0x5b,0xe6,0x58,0x8c,0xdd,0xb5,0x05,0x16,0x94,0x83,0x8f,0x9d,0x82,0xa6,0x07,0x61,0xfd,0xe3,0x04,0xb0,0x02,0x7f,0xf8,0x65,0x84,0xbf,0x65,0xc7,0x3c,0xc6,0xd2,0x53,0xe5,0x60,0xf6,0x55,0x25,0xdf,0x04,0xbf,0xe1,0x46,0xc8,0x3b,0x42,0x26,0x9c,0xf3,0x78,0x0f,0x8b,0xc3,0x92,0x43,0x78,0x94,0xae,0x01,},\"\\x7d\\x6a\\xbe\\xc7\\xa1\\x1a\\xf6\\x73\\x24\\xce\\x17\\xb1\\xd2\\x0b\\xb4\\x0c\\x66\\x8a\\x21\\x9b\\xc9\\x5d\\xf0\\x5e\\x32\\x5d\\x86\\xf8\\x87\\x95\\xe2\\x64\\xd4\\x54\\xfc\\x5f\\xa7\\xd9\\xc8\\xaa\\xfe\\x77\\xe9\\x0a\\x6a\\xf6\\xb5\\x74\\x53\\xd8\\x5b\\x97\\x0b\\x55\\x2a\\x85\\x6b\\xa6\\x59\\xab\\x31\\xbd\\x8a\\x66\\x0e\\xb7\\xd3\\x58\\x7b\\x45\\x3e\\x5c\\x5f\\xc6\\xb7\\x94\\x72\\xb2\\x6e\\x8f\\xf7\\xdd\\x6d\\xb6\\xbe\\x35\\x72\\x54\\x8b\\x0d\\x75\\x4e\\xd4\\xd9\\x85\\xb8\\xd9\\x96\\x5f\\x88\\xb9\\x52\\xfc\\x4f\\xa3\\xb7\\x61\\xcc\\xff\\xc3\\x53\\x54\\xdb\\x0e\\xb9\\xc5\\xa1\\x71\\x71\\x8a\\x8a\\x55\\x92\\x87\\x02\\x13\\x82\\x7d\\x36\\x91\\xba\\xe7\\xfd\\x9c\\x63\\xf2\\x05\\x03\\xe0\\x43\\x19\\xb5\\xe9\\x53\\x57\\x9d\\xe4\\x7e\\x3e\\xf8\\xe1\\x62\\x85\\x49\\x50\\x3c\\xb4\\xf6\\x87\\x1b\\xa2\\x5d\\xb8\\x73\\x47\\x08\\x0e\\x53\\x1a\\x51\\x7a\\x8b\\x72\\x21\\xe6\\xad\\x84\\xdf\\xf8\\x32\\x56\\xd9\\xab\\x9a\\x43\\x3d\\xe8\\x71\\xb9\\xcb\\x9c\\x50\\x44\\x58\\x9e\\x67\\x20\\x6b\\x31\\x7a\\x52\\x06\\xae\\xba\\x96\\xc9\\x2f\\xd6\\x09\\x40\\x71\\xc6\\x44\\xfe\\x52\\x65\\x8d\\xed\\x92\\x20\\xcf\\x6a\\xbd\\x50\\xe2\\x30\\x5a\\x1c\\x90\\xfd\\x66\\xaa\\xcf\\xb3\\x8e\\xb0\\x5e\\xaf\\xf6\\xca\\x5f\\x85\\xf4\\x29\\xcd\\x57\\x71\\x6e\\xb8\\x77\\x39\\xa0\\x2b\\x64\\xcf\\xfa\\x08\\xc4\\xf6\\x85\\xb0\\x03\\x10\\xb5\\xb4\\x84\\x49\\x20\\xdf\\x21\\x5a\\x9f\\x24\\xa1\\x76\\x13\\xae\\xf8\\x5f\\xec\\x94\\xf5\\x11\\xdc\\x8a\\x42\\x94\\xed\\xdc\\xea\\x11\\xc0\\x8c\\x0b\\x39\\x9a\\x23\\xd9\\x16\\x38\\x3e\\x29\\xad\\xeb\\x98\\xc6\\x5d\\x41\\xc7\\x05\\xa5\\x7f\\x84\\x05\\x20\\xfa\\x80\\x8d\\x7f\\xd2\\x5f\\xdc\\xe1\\x59\\xf7\\xa0\\x84\\xd0\\x62\\x97\\x4b\\x30\\x13\\x2a\\x57\\x12\\x42\\xba\\xff\\x41\\x96\\x24\\x6d\\x6d\\x75\\x7b\\x31\\x2e\\x9d\\x60\\x85\\x53\\xd2\\xdc\\x53\\xb6\\x23\\xb2\\xe9\\x5c\\x75\\x38\\xfb\\xc5\\xde\\xb6\\x2b\\xa7\\x37\\x76\\xd8\\x5e\\x51\\x18\\xfa\\x1a\\x30\\x2d\\x4d\\x07\\x6d\\x99\\xe1\\x00\\xf0\\xdf\\x11\\x9c\\x33\\xfc\\x66\\xcd\\xfe\\x6f\\xd4\\x4d\\x71\\x99\\x7b\\x78\\xc8\\xf7\\x89\\x0c\\x70\\x73\\x46\\x05\\x62\\x20\\xd1\\xe9\\xde\\x88\\xbc\\x17\\x3c\\xf0\\xb7\\x6c\\xb3\\x02\\x87\\x7e\\xc1\\x6a\\xf4\\x6e\\x4c\\x31\\x63\\x9f\\x54\\xee\\xdc\\x16\\xda\\x9d\\x9e\\xb0\\xad\\x95\\xbd\\xa5\\x45\\xdf\\xc4\\xa7\\x32\\xb6\\xda\\x98\\x14\\x13\\x6a\\xb1\\xb9\\x39\\x2a\\x07\\x1b\\x02\\x24\\x73\\xb3\\x49\\x05\\x57\\x69\\x8b\\x77\\xe7\\x44\\x7a\\xc8\\x59\\x0d\\xca\\xf4\\xf2\\x42\\xad\\x3d\\xfb\\xc0\\xdf\\x71\\x6c\\xc0\\xea\\x75\\x36\\x26\\x97\\x3d\\xf0\\x8d\\x93\\x5d\\x17\\x8e\\x33\\x12\\xfb\\xe2\\xa7\\xba\\x9c\\x50\\x93\\xc5\\x3b\\x92\\x55\\xea\\xca\\x29\\xb7\\x25\\x78\\xe3\\xba\\x1b\\xdf\\xaf\\x0c\\x9e\\xce\\x21\\xa5\\xdf\\xf6\\xea\\x42\\x15\\x24\\xf7\\x0f\\xc1\\x90\\x4e\\x9a\\x2c\\xf7\\xc5\\x18\\xbf\\xcc\\x7e\\x36\\x73\\xee\\x87\\xff\\x27\\xe1\\xca\\x2a\\xc3\\x2b\\xcb\\x40\\x91\\xcb\\x34\\xa8\\x2a\\x71\\x56\\x3f\\xf6\\xa6\\xa1\\x5d\\xa0\\xeb\\xd5\\xbd\\x10\\x25\\x6c\\xe9\\x60\\xf4\\xea\\xa7\\xfe\\x35\\xe1\\x28\\x88\\x60\\x50\\xd0\\x49\\xfe\\xc3\\xa4\\xab\\x16\\xd5\\xb0\\xc1\\x07\\x26\\x7e\\xae\\x1a\\xb8\\x01\\xea\\x5b\\x91\\x98\\x38\\x39\\xda\\x1c\\x48\\x8c\\x12\\xf8\\x64\\xd7\\xc3\\xa7\\x7f\\x2b\\x6a\\xe2\\x7d\\x54\\x01\\x09\\xf6\\x8d\\x78\\x36\\x4b\\xb6\\x27\\x18\\x3b\\xd5\\x03\\x91\\x75\\x47\\xaa\\xf3\\xb3\\xa1\\x80\\x9d\\xa0\\x25\\x77\\xb3\\xf0\\x3a\\x9a\\x3f\\x5a\\xf4\\x8c\\x88\\x02\\xe2\\x97\\xc8\\xbb\\x63\\xdb\\x6a\\x86\\xd3\\xea\\x72\\x7a\\x6d\\x71\\x48\\xb3\\xaa\\x44\\x4b\\x8d\\x16\\x8f\\x38\\xc6\\xc8\\xf2\\x40\\x88\\xa4\\x9a\\xf3\\x31\\x77\\xa3\\x44\\xad\\xab\\x2c\\xf6\\xe0\\x8e\\x0c\\xb0\\x37\\x1e\\xd5\\x2b\\xde\\xad\\x13\\x2f\\x77\\xe7\\xae\\x3e\\xe5\\xd8\\xfb\\x17\\xaf\\xc0\\xa0\\xbb\\x73\\x11\\xb9\\x56\\x0b\\x67\"},\n{{0xd0,0x71,0xd8,0xc5,0x57,0x8d,0x02,0x59,0x49,0x93,0x2a,0xa6,0xbf,0x6a,0x80,0xb1,0xcc,0x41,0x2f,0x10,0x6f,0x91,0x57,0x4e,0xe2,0x46,0x54,0xb4,0x45,0xee,0x9a,0x97,},{0x9b,0xcb,0xf7,0xd2,0x21,0x2f,0xb6,0x2c,0xcc,0xf8,0xb6,0xc7,0x68,0x03,0xa5,0xea,0x24,0x40,0x9d,0xa6,0x28,0x7e,0xfb,0xb8,0xb1,0xf0,0xc7,0xb3,0x0e,0xbd,0xd9,0x3e,},{0x0c,0x29,0x7a,0xbe,0x0f,0xd8,0xeb,0xcc,0x6b,0x77,0x19,0x98,0x75,0x5e,0x2c,0x6b,0xe0,0x7c,0x81,0x2b,0x5a,0x80,0x54,0x49,0x57,0x06,0x31,0x70,0xca,0x69,0x43,0x2e,0x72,0xb6,0x0d,0xaa,0xe3,0x22,0x95,0x8a,0x22,0x38,0xcd,0x6a,0x46,0x28,0x94,0xa3,0x87,0xee,0xf6,0x5b,0xf9,0x6f,0x63,0xf5,0x4c,0x08,0x56,0x87,0xa5,0x02,0x75,0x0e,},\"\\x3e\\x8e\\xe7\\x0e\\x51\\xe5\\x6e\\xf5\\x7f\\x6e\\x66\\xb3\\xa8\\x84\\xaa\\x04\\xa7\\xb4\\xd4\\x59\\x9f\\xb9\\xb4\\x39\\x96\\xb3\\x93\\xa8\\x68\\x09\\x35\\x12\\xea\\x74\\x1a\\x0c\\x6a\\x94\\xf4\\x0c\\xe4\\x98\\x62\\xd2\\xfd\\x1f\\x75\\x51\\xf4\\x64\\x7a\\xbd\\x80\\x75\\xbc\\x1b\\x74\\x2a\\xd4\\x0e\\x29\\xa6\\x04\\x61\\x30\\x12\\x24\\xfe\\x8f\\x76\\x92\\xb1\\x47\\x72\\x78\\x2b\\x4e\\x89\\x6b\\x63\\xfe\\x05\\xab\\xd5\\xff\\x53\\x14\\xf9\\xec\\x80\\x75\\xf2\\x8d\\x90\\x8c\\xca\\xaa\\xce\\x5e\\x90\\x5e\\xa7\\xf5\\x7a\\x49\\x1b\\x99\\xb3\\x59\\x1e\\xea\\x54\\xa6\\xb7\\x81\\x91\\x67\\x74\\x9d\\x38\\xa0\\x47\\x62\\x06\\x76\\xa1\\xa7\\xaf\\x11\\xf4\\x85\\xa5\\x5b\\x7c\\x87\\x9e\\x68\\x50\\x38\\x08\\x58\\xc8\\xf4\\x5c\\x0c\\x1c\\xcb\\xd7\\x40\\x6e\\xd0\\x99\\xd8\\x4a\\x74\\x71\\xb9\\x35\\x0c\\x4d\\xdb\\x28\\x47\\x0b\\xf5\\xbf\\x32\\x7d\\x5b\\x3c\\x22\\xd8\\x99\\xb4\\xc6\\x60\\x83\\x9e\\x10\\x4a\\x06\\x22\\xae\\x85\\xc8\\x4a\\xa9\\xfc\\x7f\\x0a\\x2c\\x7c\\xeb\\x6e\\x69\\x1c\\x49\\xc0\\x64\\xb5\\x31\\x34\\x99\\x68\\x3e\\x8e\\x03\\xb2\\x11\\x5e\\xda\\x7d\\xda\\xd5\\x5a\\x49\\xf9\\xfb\\xe6\\x25\\x44\\xf9\\x14\\x51\\x1c\\xfb\\xec\\x6b\\x84\\xdb\\xde\\x7e\\x80\\x90\\x9b\\x45\\xfb\\x10\\x50\\x2e\\x2c\\xaa\\xa7\\x21\\x24\\xfd\\x94\\x56\\xa3\\x87\\x2f\\x95\\x92\\x70\\x7e\\x9a\\x4c\\x50\\x12\\xda\\xa9\\x72\\xea\\xf6\\x5f\\xab\\xe5\\x53\\xde\\xbe\\x82\\x57\\x01\\xef\\xef\\x5c\\x75\\x6b\\xb4\\x65\\xe9\\x66\\xab\\x68\\xdd\\x52\\xf3\\xdd\\x00\\xa4\\x5c\\xf6\\xdc\\x3f\\x19\\xb8\\x6b\\xb0\\xdb\\x4a\\x86\\xe4\\x66\\x98\\x85\\xa0\\x74\\x69\\x6a\\x67\\xd8\\xea\\x21\\x18\\xc7\\x66\\xef\\x62\\x5f\\x8a\\x98\\x02\\x6f\\x9f\\x4a\\x3c\\x5c\\xcc\\xf9\\x84\\x6f\\xdc\\x90\\xed\\x93\\xec\\x7c\\x1f\\x3c\\x70\\x86\\x95\\x4f\\xa2\\xf0\\xa4\\xca\\x96\\xd4\\x01\\x84\\xaa\\x57\\x54\\x55\\x27\\xa1\\xf9\\x65\\xc1\\x1d\\x84\\x3c\\x90\\xc5\\xa5\\xe0\\x8d\\x7c\\x11\\xf2\\xd5\\x61\\x00\\x4e\\x90\\x57\\x48\\x52\\xeb\\x50\\x46\\xaa\\x1e\\xa7\\xb6\\x10\\x09\\xfd\\x5d\\xd7\\xd6\\x24\\x2a\\x8d\\xf5\\x8a\\x9e\\x8e\\x55\\x5c\\x7f\\x4c\\xdc\\x13\\x0d\\x69\\x01\\xbf\\xe6\\x79\\x7f\\xdc\\x6c\\x39\\xbe\\xec\\xfb\\xba\\xb6\\x62\\x5b\\x2e\\x4f\\xb9\\xd8\\x00\\x02\\x76\\xd4\\xa9\\x4f\\xc6\\xfc\\x10\\x51\\xfe\\xff\\xf5\\xad\\xeb\\x72\\x4b\\x87\\x09\\x0d\\xb0\\xa2\\xc6\\x97\\xd0\\x56\\x66\\x4d\\x99\\x1f\\xad\\x80\\xdc\\x80\\xfa\\xb7\\x00\\xb1\\xf1\\xf2\\xee\\x27\\x73\\x4e\\xbc\\x26\\xb2\\xa6\\x41\\xc3\\x2a\\x0c\\x91\\x1b\\x27\\x0a\\xc7\\x6b\\x0d\\xa5\\xc0\\x89\\x14\\x97\\x1c\\x91\\x12\\x46\\x3a\\x70\\x70\\x9c\\x0d\\xda\\xc7\\x91\\x00\\x16\\xf9\\x13\\xf6\\x21\\x00\\x86\\xd7\\x25\\x5c\\xef\\x11\\x95\\x57\\x10\\xf6\\x51\\x88\\x9c\\x83\\x62\\x1d\\xd8\\xa4\\xfc\\xd5\\x36\\x63\\x02\\xd6\\xc9\\xb5\\x6e\\xef\\xcf\\xac\\x85\\xc1\\x4a\\x94\\x78\\xb6\\xd7\\x18\\x07\\x54\\x28\\x80\\x07\\x60\\x51\\x5c\\xab\\x5f\\x3d\\x44\\x55\\xe2\\xb9\\x70\\xdf\\x9f\\xe4\\xbe\\x83\\x83\\xd7\\x04\\x83\\xbb\\xdd\\x75\\x60\\x71\\xf5\\x3b\\x2f\\x9c\\x27\\x5c\\x7c\\x85\\x12\\xd1\\x63\\x51\\x8f\\xe5\\x55\\x83\\x75\\x14\\xc8\\x67\\x76\\xc9\\x47\\xf2\\x9a\\x77\\x57\\x02\\x87\\x44\\x6b\\x69\\xbe\\x40\\xc8\\xd4\\xab\\xbd\\x65\\xef\\x25\\x07\\x24\\x9b\\x5a\\xec\\x33\\xac\\xb7\\xb8\\xbd\\x3f\\x35\\xbc\\x85\\x9b\\xa4\\xe3\\x7b\\xdb\\x49\\xcf\\x91\\x3d\\x93\\x98\\x9c\\x44\\x38\\xd2\\xab\\xcf\\xa3\\x88\\xcc\\x89\\xd7\\x8a\\xc0\\x62\\x70\\x65\\x64\\x92\\xe7\\x52\\x8f\\x29\\xbd\\xfe\\x8c\\xbb\\x9b\\xfa\\x9e\\x73\\xc1\\xda\\x01\\x3f\\xc3\\xce\\x21\\x05\\x65\\x76\\x13\\xff\\x62\\xbb\\x0c\\x3b\\xf4\\xde\\xe3\\xb0\\xd2\\x65\\x9c\\x72\\x6e\\x7b\\xcd\\x9e\\x97\\xec\\xce\\x92\\x47\\xd4\\x60\\x0d\\xfe\\xaf\\x60\\x44\\x4e\\xd8\\x62\\xb0\\x0b\\xa1\\x1e\\x70\\xea\\x88\\xd4\\xf0\\xb6\\xb5\\x39\\xfc\\x9f\\x36\\xbb\\x2a\\x1a\\x9e\\xd2\\xb3\"},\n{{0xe9,0xd4,0x86,0xc2,0x9a,0xe8,0x11,0xb9,0x42,0xe1,0x0d,0x81,0xf0,0xa6,0x71,0x63,0x17,0xb8,0x42,0xc2,0xc5,0xbf,0xde,0xf5,0x5c,0xc4,0x32,0xb7,0xfc,0xae,0xb8,0x18,},{0x43,0xa5,0x2d,0x15,0xb9,0xf7,0x31,0xd7,0x37,0xb1,0xc4,0xdb,0xc3,0x22,0x27,0xa4,0x80,0x96,0x30,0x91,0xd2,0xc6,0x28,0x6f,0x48,0x2e,0xf1,0xe8,0x36,0x70,0x54,0xe5,},{0x65,0x19,0x1a,0xa8,0x85,0xdd,0xab,0x9f,0x67,0x27,0x18,0x79,0x95,0x2f,0xc6,0xaf,0xfe,0x41,0xca,0x20,0xeb,0x3b,0xcd,0x86,0x67,0x31,0x61,0xb0,0x3b,0x53,0x26,0x94,0xd6,0xdd,0x88,0x90,0x8e,0xb1,0xb1,0xee,0xc0,0x03,0xcf,0xcb,0xe6,0x14,0x6b,0x45,0x38,0xe2,0x1d,0xf5,0x59,0x69,0x91,0x2a,0x0d,0x7d,0x88,0x18,0xad,0x79,0x59,0x0d,},\"\\x14\\xfe\\x1e\\xd5\\xbb\\xbd\\x76\\xcc\\x73\\xdc\\x56\\x50\\xbd\\xa9\\x2d\\xe8\\x63\\x26\\xe2\\x4d\\x2f\\x1f\\x62\\x24\\xba\\x85\\x68\\x94\\x4d\\x6f\\xe3\\x44\\x26\\x75\\xdb\\x96\\xf1\\xd8\\x49\\x8f\\x16\\x34\\xff\\x9b\\x6e\\x50\\xcb\\xa9\\xdb\\x4e\\xb0\\xb0\\xb0\\x21\\xb2\\xbe\\xcf\\xce\\x4b\\xef\\x33\\xc4\\xce\\x0e\\x32\\xc8\\xa9\\x83\\x89\\xec\\xa9\\xe0\\x59\\xa6\\x62\\xd6\\xf0\\x37\\xc5\\x4a\\xa4\\x0c\\x76\\xcd\\xee\\xe8\\x56\\x50\\xf0\\x89\\xea\\x56\\xe1\\x38\\x3a\\xb0\\xf5\\xc3\\x6f\\x6d\\x66\\x45\\xff\\x7e\\x87\\x66\\x73\\x01\\xf9\\x44\\xfd\\xc2\\xed\\x35\\xb0\\xd2\\xc3\\x5c\\xb2\\xe4\\xb4\\x56\\x36\\xe7\\x49\\x8e\\x92\\x7f\\x58\\x46\\xb3\\xe1\\xed\\xfb\\xd1\\x60\\xa4\\xae\\xf3\\x32\\x0c\\x34\\x28\\x49\\x6b\\xda\\xaf\\x7d\\x3e\\xd5\\x6e\\xf0\\xb7\\x25\\x4a\\xc5\\x97\\xbe\\x58\\x9a\\x70\\x58\\x44\\x16\\x30\\x0c\\x1a\\xdc\\xfb\\xa4\\xf2\\x2c\\xfd\\x4c\\xd6\\x61\\xe1\\xf5\\x0f\\x15\\x5d\\x17\\x2f\\xa5\\x74\\x8d\\x29\\x6b\\x29\\xcd\\xd7\\xeb\\x81\\x21\\x48\\x3f\\xf1\\xd9\\xfe\\x95\\x3f\\x94\\x51\\xc7\\xc7\\xa5\\x42\\x00\\x72\\x85\\xee\\x72\\x46\\xbc\\x0f\\xde\\xa9\\x38\\x81\\x40\\x29\\xab\\xce\\x05\\x7a\\x0e\\xcb\\x97\\x4b\\x12\\xd3\\x60\\xea\\xb6\\xaf\\xd3\\x07\\x97\\xd6\\x14\\x45\\xad\\x2b\\xac\\x7e\\x52\\xbc\\xe4\\x34\\x63\\x15\\xf7\\x8e\\xb8\\x75\\x42\\xd5\\x95\\x28\\xb2\\xf6\\xc5\\x6d\\x66\\x24\\x1c\\xb4\\x42\\x03\\x3f\\x64\\x3d\\x3d\\x2a\\x67\\xcb\\x63\\x7d\\x8d\\xa9\\x5d\\x4f\\xd1\\x23\\x4b\\x03\\x1a\\x3e\\x51\\x72\\x3a\\x1d\\x26\\xe6\\xf5\\xca\\x07\\x98\\x73\\x21\\xad\\x11\\xa9\\x0f\\xcc\\x1d\\x4e\\x2b\\x0b\\x89\\x66\\x50\\xc3\\xa7\\x51\\x8d\\x56\\x55\\x29\\xbe\\xa8\\x06\\xa0\\x5d\\x44\\x7e\\x08\\xd2\\xa6\\xa3\\xdb\\xf1\\xa3\\x69\\x15\\xb2\\x95\\x7c\\xa5\\xb4\\x0e\\x58\\xb9\\x7a\\xd0\\x36\\x97\\x35\\xc4\\x28\\xbd\\x6d\\x69\\xbd\\x21\\x00\\x44\\xb6\\x51\\x41\\x8d\\x98\\xb0\\x59\\xd9\\x0c\\x83\\xe4\\x60\\x11\\xf4\\x1c\\x03\\x2c\\x56\\x55\\xa5\\xef\\x21\\xac\\x2c\\x8c\\x2b\\xc9\\x4b\\xe0\\x7e\\x45\\x42\\x6a\\x7a\\xe5\\xd4\\x7b\\x45\\xf2\\x7c\\xf4\\x28\\x9c\\xa4\\xdd\\xab\\xe0\\x8a\\x12\\xb9\\x10\\x20\\x7d\\xab\\xb3\\x4a\\x46\\xab\\x75\\xce\\x69\\xb5\\x8e\\x7e\\x17\\x66\\x4b\\xf3\\x35\\x9a\\x8f\\xb6\\x8e\\xb0\\x32\\xc9\\xea\\xa6\\xdf\\x87\\x38\\x29\\xf0\\xe0\\x84\\x85\\x53\\xf7\\x32\\xe1\\xc3\\xc0\\x84\\xb3\\x2b\\x7a\\xf7\\x50\\x74\\xe7\\xbb\\xaa\\x4e\\xb5\\xd7\\xea\\xd7\\xaf\\xf9\\x75\\x80\\x10\\x9b\\x60\\xf4\\xc7\\x92\\xf9\\xe2\\xa6\\x51\\x37\\xb0\\xaa\\x48\\x17\\x5b\\x81\\x15\\xd9\\x13\\x05\\xf4\\xc7\\x7e\\x2d\\x08\\xe7\\xe8\\xd7\\xe7\\x78\\x5c\\x96\\x68\\x42\\xc2\\xe3\\x50\\xfe\\xd4\\xf9\\xe3\\x3b\\xf6\\xe1\\x84\\xc5\\x50\\xb4\\xb0\\x6e\\x95\\x74\\x14\\xed\\xf5\\x2f\\xa0\\x79\\xe8\\x19\\x73\\x45\\x84\\x61\\xfb\\xb9\\xb7\\xd7\\xd3\\x4b\\xef\\x15\\x03\\x57\\xf4\\x32\\xca\\xac\\x3a\\xe9\\xf3\\xdc\\x96\\xeb\\x5a\\x2d\\x12\\x3e\\x09\\xed\\xa1\\x70\\x2e\\x1d\\x10\\x70\\x17\\x7b\\xb2\\x20\\xc4\\x23\\xc0\\x96\\xec\\x24\\x42\\x43\\x85\\xc6\\x79\\xbe\\x02\\xef\\x84\\xd0\\x9e\\xd1\\x02\\xf4\\x9c\\xad\\x3b\\x1f\\xd6\\x70\\x67\\x9a\\x39\\x71\\x4f\\xf1\\xd6\\xe4\\x22\\x8d\\x8d\\x7d\\x0e\\x19\\xed\\x0e\\xba\\x13\\x2f\\x21\\x28\\xd4\\x7b\\xaa\\x56\\x9a\\x8e\\xcb\\x7b\\xd4\\x8a\\x82\\x62\\x82\\xf9\\xcf\\xcb\\xf6\\x0d\\xde\\xce\\xaf\\x1d\\x02\\x13\\x2c\\x8a\\xff\\xed\\x3a\\x03\\xd2\\x34\\x0d\\xeb\\x78\\x7c\\xd6\\x49\\xc5\\x1c\\x6e\\xcb\\x9f\\xf7\\x5d\\x7a\\x7b\\x4e\\xf9\\xb1\\x51\\x39\\xcf\\xea\\x27\\x62\\xab\\x18\\x61\\x51\\x97\\xa6\\xb5\\x1f\\x6e\\x75\\xdb\\xd0\\x45\\x73\\xa2\\x44\\x80\\x94\\xd0\\xcd\\xeb\\x0f\\xe4\\x58\\x58\\x83\\xff\\x9b\\x68\\x82\\x4a\\x04\\xb8\\x3e\\xc9\\x1c\\xf8\\x4a\\xcd\\x6a\\x74\\x46\\xcb\\x1f\\x5e\\xe3\\x7d\\x5d\\xf8\\x0f\\x17\\xcb\\x2b\\xdc\\x3f\\x31\\x22\\xa8\\xfa\\xf7\\x6e\\xbd\\x06\\xcf\\xe8\\x17\"},\n{{0xe6,0xfa,0x10,0xdb,0xb4,0x78,0xe1,0xe3,0x6b,0x35,0xdf,0xeb,0x02,0x50,0xf6,0x3c,0x08,0x51,0x50,0x70,0xae,0x79,0xb2,0x2f,0x04,0x7e,0x27,0x17,0x08,0xd6,0x4f,0x5c,},{0xe0,0x2e,0x1f,0x2b,0xd8,0x79,0x2e,0xf4,0x83,0x48,0x1c,0x6d,0x11,0xf7,0xc7,0xc9,0xdb,0xde,0xec,0xc9,0x85,0x94,0x32,0xe7,0xf2,0x79,0xe9,0xd1,0x73,0xd3,0x11,0x64,},{0xc0,0x3c,0x47,0x03,0x59,0x12,0x7e,0x9d,0xe3,0xaf,0x0e,0x0e,0xd7,0xd3,0xb1,0x9f,0xae,0xe0,0xec,0x14,0x0b,0x79,0xc2,0x99,0xe2,0xcb,0x6d,0xac,0x0a,0x3e,0x7e,0x31,0x41,0x41,0xcc,0x85,0x4b,0x45,0x96,0xce,0x4c,0x51,0xc7,0xb0,0xde,0xc8,0xa5,0xc8,0xcf,0x09,0x36,0x20,0x53,0x61,0xd5,0x36,0x5f,0x4b,0xcc,0x07,0xc4,0x28,0x7c,0x07,},\"\\xad\\x31\\x60\\x75\\x8d\\x8c\\x08\\xa6\\x61\\x52\\x5c\\x95\\x28\\x0a\\x37\\x18\\x87\\x49\\x69\\x85\\x9f\\x1c\\xc9\\x18\\xe3\\x4f\\xec\\x00\\x8a\\xcf\\x23\\xb8\\x89\\x6e\\x8d\\x50\\xc3\\xc0\\x51\\x23\\x31\\xdc\\x89\\x78\\x0f\\x8b\\x10\\xfc\\x34\\x9c\\x67\\x5c\\x4c\\xd8\\x2a\\x5d\\xf8\\x58\\x6b\\x43\\xc8\\x64\\x44\\x8f\\xac\\x00\\xb8\\x47\\xb9\\xc9\\x80\\x54\\xab\\x79\\x3f\\x63\\xc7\\x1a\\xa5\\xe5\\x24\\x8e\\x22\\xd0\\x69\\xbd\\x3f\\x85\\x2a\\x3b\\x8c\\x6e\\x2a\\xc8\\xef\\x86\\x1d\\x90\\xbc\\xd9\\x84\\xbf\\xca\\x87\\x58\\x3e\\x59\\xe9\\xa7\\x46\\x8f\\x29\\xb8\\x08\\xdc\\x2f\\xe5\\x30\\x2a\\x98\\x9d\\x6f\\x2e\\xcd\\xe7\\x58\\x5c\\xd9\\xbe\\x4e\\x4c\\x76\\x1c\\x4d\\x4b\\x3e\\xea\\xf4\\x69\\x9f\\x65\\x56\\xef\\x03\\x9a\\xf2\\xb8\\x0f\\x94\\x07\\x60\\x5a\\xc3\\x97\\x35\\x1d\\xd8\\x55\\x95\\x58\\x44\\x95\\xba\\xa1\\x77\\xb0\\x8c\\x88\\xd2\\xec\\x1f\\xc4\\xe3\\x2d\\x1c\\x0b\\x8d\\x7e\\x7a\\xc5\\x83\\x9d\\xfb\\x92\\x3f\\x09\\xb3\\x23\\xe7\\x8e\\xce\\xb7\\xe9\\x6c\\x06\\x04\\xb0\\x1a\\x19\\xe4\\x9c\\x9b\\xea\\xf4\\xf2\\x5e\\xc4\\xa8\\x4c\\x1a\\x08\\xf2\\x38\\x0e\\xdd\\xc3\\xa7\\xf0\\x12\\x18\\x49\\x59\\xcc\\xd1\\x9e\\xcb\\xba\\xc6\\x5e\\xac\\xa1\\x55\\xce\\xe9\\xec\\xfe\\xc1\\x1e\\x7f\\xee\\x05\\x8e\\x17\\x4f\\xc4\\xed\\x7c\\x67\\x9f\\x2c\\x15\\x63\\x1d\\x4e\\x15\\x27\\xbc\\xdb\\x0e\\x3b\\xb0\\x81\\x5f\\xfd\\xff\\xc0\\xc8\\x56\\xbe\\xf0\\xdc\\x0f\\x5c\\x82\\x37\\xf7\\x09\\x8e\\x26\\xbd\\xb6\\x9e\\x87\\x82\\xd1\\xca\\x51\\x11\\xec\\x3c\\x7e\\xdb\\x42\\x5d\\xff\\x80\\x32\\x02\\x6c\\xba\\x3d\\x2e\\x08\\x1b\\x71\\x31\\x0d\\xb9\\xba\\xda\\xd1\\xad\\x02\\xf1\\xec\\xcc\\x53\\x7d\\x87\\x4c\\xd1\\x8c\\x6b\\xb0\\x12\\x21\\xf7\\x1e\\xe6\\x62\\x50\\xd9\\x4c\\xf8\\xec\\xce\\xaa\\x96\\xd3\\xc5\\x7e\\xea\\x2b\\x0a\\x8e\\xc7\\x24\\x29\\xd7\\x60\\x64\\x88\\xbd\\xf1\\x9e\\xc3\\xbb\\x16\\xe5\\x08\\x67\\xc7\\x93\\x7d\\xef\\x09\\xfc\\x78\\x3f\\x20\\xa2\\xa5\\xec\\x99\\x25\\x3d\\x6b\\x24\\x0d\\xf4\\x67\\x7d\\xd2\\xd5\\x27\\x7b\\x01\\xc5\\xb8\\xe5\\xbd\\x6c\\x7d\\xf0\\x87\\x42\\x05\\xbc\\x8c\\x2f\\xff\\xdb\\xa1\\x31\\x46\\x74\\xd3\\x1c\\x9b\\x2c\\x91\\x99\\x22\\x8e\\x19\\xe0\\x42\\x18\\x34\\xc1\\x65\\x7d\\x06\\x98\\x28\\x69\\x16\\xc7\\xe3\\x92\\xf0\\xab\\xd5\\x54\\x5b\\x96\\x3a\\xc1\\xff\\xa9\\x97\\x21\\x61\\x6c\\x23\\x79\\x6f\\x85\\xc3\\x4a\\x5c\\x66\\x4a\\xe8\\x1d\\x16\\xb2\\x16\\xa5\\xb0\\xcf\\x5b\\xc6\\xb5\\xa9\\x08\\x29\\x72\\x85\\xd6\\x16\\x44\\x12\\x8f\\x88\\x6f\\x38\\xaf\\x9e\\xdd\\x25\\x19\\x3d\\x7e\\xcc\\x77\\xa7\\x99\\x94\\x27\\x8d\\xa0\\x71\\xf5\\x44\\x95\\x93\\x7f\\xee\\xf5\\xa5\\x19\\x57\\x52\\x7c\\x3e\\xec\\x7c\\xb0\\xb4\\xe8\\xaa\\x7a\\x4e\\x85\\x6d\\xef\\xd5\\x7d\\xd9\\x23\\x34\\x15\\x1b\\x98\\x6a\\xa6\\x9c\\xa6\\x92\\x60\\xd1\\xe2\\xd7\\xb5\\x3c\\x05\\x67\\x7e\\xe0\\xd2\\x16\\xb2\\x8d\\x03\\x62\\x52\\xdd\\x30\\x06\\xde\\xbe\\x1b\\x65\\x74\\xa2\\x5e\\x6b\\x19\\xdf\\xb4\\x8f\\xa6\\x43\\x16\\xaf\\x8f\\xd6\\x8d\\x78\\x93\\xb3\\x97\\xe7\\xdb\\x57\\x80\\xab\\x27\\xbf\\x87\\x26\\xff\\xf6\\x05\\xd3\\xb4\\x6d\\x80\\x05\\x95\\xb4\\x62\\x4b\\xee\\x30\\x2c\\x96\\x43\\x26\\x03\\x4b\\x52\\x34\\xd1\\x75\\xdf\\xdc\\xc2\\xce\\x88\\x2e\\x65\\xb3\\xd9\\x3a\\x04\\x38\\xf6\\x92\\xe9\\x69\\x5d\\xe1\\xf2\\x4c\\x70\\xa7\\x9b\\xee\\xd2\\x54\\x15\\xec\\x5a\\xae\\xcf\\x33\\x91\\x95\\x3b\\x2f\\xfd\\x45\\x3a\\x8f\\x04\\x67\\x56\\x1a\\x4a\\x47\\xee\\x14\\x4a\\x43\\xfd\\xff\\x83\\xdf\\x2b\\xea\\x5f\\x66\\xa7\\x22\\xb5\\x2a\\xbe\\x86\\x13\\xf2\\x0c\\x59\\x4a\\xf0\\x98\\x2e\\xb3\\xf0\\x45\\x05\\xa5\\x24\\x61\\xdd\\x03\\x4d\\xa8\\x6c\\x36\\xca\\x16\\x21\\x77\\x05\\xc0\\x48\\x23\\x91\\x1d\\x72\\xa2\\x47\\x69\\x51\\x76\\x33\\x56\\x28\\x86\\xf2\\x50\\xf2\\xcf\\x78\\x8b\\x8f\\x32\\x86\\x4a\\x94\\x74\\xf5\\x7e\\x62\\xe5\\x7d\\xe8\\xfd\\xaf\\x95\\x9a\\x6b\\x72\\x28\\x74\\x40\\xa8\"},\n{{0x05,0x8e,0x36,0x80,0xb8,0xfc,0xc0,0xaa,0x14,0x90,0x08,0x9c,0x11,0x24,0x67,0x7f,0x98,0xd7,0x4b,0x1b,0xfb,0x71,0xee,0x86,0x63,0xf0,0x25,0xf0,0xd9,0x46,0xcd,0x20,},{0xec,0x72,0xce,0x0e,0x82,0xc6,0xa3,0xb2,0x12,0x43,0xd2,0xf0,0x0e,0x9e,0x88,0x3a,0xdb,0xc5,0xcb,0x63,0xb3,0xd9,0x36,0xef,0xa5,0x0c,0x07,0xcb,0x92,0x91,0x48,0xe2,},{0x57,0x34,0xec,0x50,0xa7,0xf8,0x2e,0x48,0x53,0x6b,0xdc,0x43,0x70,0xcf,0xef,0x2e,0x15,0x0a,0x63,0x1d,0xab,0xaf,0x89,0xed,0xcf,0x0f,0xda,0xbe,0x4f,0x58,0x39,0xf4,0xf5,0xfb,0xd8,0xdf,0x8e,0xc4,0xa3,0xac,0xd4,0x0a,0x8b,0xfb,0x96,0x3d,0x18,0x55,0xff,0x92,0x74,0xdb,0xc3,0x31,0x65,0xb5,0xe6,0xd3,0x7a,0x23,0x9d,0xac,0xe9,0x03,},\"\\xe6\\x3d\\x14\\xf5\\xbe\\xa7\\xa1\\xab\\xb8\\xfe\\xe6\\x97\\x74\\x6c\\x22\\x80\\xdf\\xd0\\x62\\x2d\\xe7\\x35\\x72\\x26\\xcc\\x07\\x42\\x72\\x2a\\x32\\x29\\xbe\\x12\\x6b\\x08\\x3e\\x86\\x8a\\xea\\xf0\\x7d\\x2f\\xc9\\x7a\\xdc\\x33\\x42\\x70\\x96\\x74\\x19\\x3c\\xa2\\x81\\x74\\x4e\\x85\\x0e\\xa1\\x54\\x40\\x05\\x0a\\xec\\x93\\x0e\\x45\\xd7\\xa8\\x7b\\x8a\\xc8\\x01\\x5c\\x89\\x67\\xc2\\x00\\x33\\xa5\\x32\\xd2\\x95\\x91\\xb1\\x35\\x58\\x6c\\xe0\\xfd\\xd2\\xe6\\x68\\xb5\\xc8\\x64\\xb3\\xbd\\xe7\\x0c\\x7e\\x71\\x9a\\xd2\\x41\\x93\\x12\\x51\\x86\\x19\\x33\\xff\\xbf\\xa9\\x64\\x83\\xff\\x82\\x85\\x67\\x48\\xc5\\x6d\\xc2\\x6e\\x25\\x7d\\x69\\x2e\\x51\\x34\\xd8\\x2f\\xc7\\x19\\x1c\\x11\\x0d\\x95\\x90\\xd3\\xfc\\x75\\x1c\\xd6\\x36\\xb0\\xc4\\x6f\\x44\\xf8\\x80\\x3e\\x59\\xe2\\xf9\\x3f\\xa0\\xcb\\xe2\\x47\\xa1\\xa6\\x25\\xb4\\xbc\\x2c\\x7b\\x1f\\xdc\\xeb\\x5a\\x2b\\x22\\x59\\x1f\\xa6\\x13\\x7c\\x54\\x04\\xdf\\xec\\x6a\\x69\\x63\\x9e\\x3f\\x63\\x2b\\x59\\x76\\xab\\x9f\\xe1\\xc6\\x3a\\xa3\\xda\\x9d\\x52\\xb0\\x44\\x00\\x8f\\x3a\\xe4\\x4b\\x7c\\x36\\x4f\\x08\\x56\\x64\\x32\\x3a\\x88\\xeb\\x45\\x83\\xe8\\x71\\x40\\xf7\\x63\\x78\\x2b\\xff\\x88\\x19\\xcf\\x74\\x1a\\x87\\x5d\\x50\\x6c\\x92\\x9d\\x34\\xbb\\xd4\\x30\\x07\\xde\\x4b\\x18\\xf6\\x87\\xa7\\x58\\x11\\x11\\x28\\xb1\\xdb\\x86\\xfc\\x5a\\xd2\\xfb\\x9f\\xca\\xd1\\x2c\\x9d\\xd2\\x8f\\xee\\x5a\\xd1\\x0d\\xe0\\x73\\x9f\\x8e\\xfd\\x9b\\xff\\x66\\xf8\\x40\\xb1\\x1b\\x3f\\x91\\xc5\\xe0\\x7c\\x21\\x45\\x2c\\xab\\x24\\x24\\x2b\\x6e\\x32\\x16\\x5c\\xd1\\xe6\\x95\\x72\\xbf\\x21\\x6e\\x86\\x04\\x53\\xda\\xd2\\xfd\\x12\\x9c\\x33\\x37\\x58\\x58\\x0b\\xb7\\xd0\\xf1\\x95\\x09\\x74\\x5e\\x85\\x14\\x63\\xd1\\x27\\xa5\\xf9\\xbe\\x21\\xfe\\x54\\x9c\\xae\\x55\\xd5\\x6b\\x8b\\xea\\x80\\xbf\\xaf\\xda\\xc1\\x0a\\xcd\\x83\\x8e\\xa8\\xaf\\x31\\xc0\\x07\\xdc\\x32\\xbf\\xd7\\x40\\x82\\xd9\\x11\\x0a\\x3e\\x91\\xe6\\x1e\\x03\\x57\\x58\\x7e\\x4e\\xd3\\x28\\x27\\xad\\xe9\\xb6\\x91\\x0a\\x98\\x8c\\x1d\\x3b\\x2d\\xd2\\x2c\\x0e\\xe7\\x6e\\xf3\\x5f\\xe1\\x5e\\x09\\x94\\x04\\xa4\\x5d\\x4b\\x2a\\xca\\xb9\\x12\\x3e\\xcc\\x45\\x55\\x0a\\x40\\xfa\\xf8\\x33\\x6b\\x46\\xc6\\x30\\xa9\\x08\\x03\\x58\\xff\\x8b\\x8e\\x58\\xaf\\x0b\\xcc\\xbd\\x35\\x01\\x0c\\x1e\\xcc\\x12\\x81\\x66\\x55\\xa5\\xec\\xeb\\xa9\\x5a\\xd3\\xf5\\x03\\xa1\\x8e\\xc5\\xbe\\xce\\x3a\\x33\\xf4\\x69\\xdf\\xe9\\x17\\xe1\\xc5\\x5e\\xf1\\xd8\\x1e\\x5a\\x75\\x56\\x1e\\x6b\\xbd\\x99\\xc6\\x53\\xa6\\xd0\\x95\\xb9\\xf3\\x87\\x91\\x1e\\x40\\x33\\x2f\\x62\\x16\\xf9\\x56\\xa3\\x5c\\xf7\\xd9\\x9a\\x9f\\xdd\\x0c\\x44\\xc5\\x1e\\x90\\xa5\\x64\\xf1\\xc3\\x6b\\xf3\\xd4\\x0a\\x7f\\xaf\\x4b\\xa2\\x8b\\x1a\\x12\\x0b\\x32\\x05\\xfb\\xac\\x1a\\x98\\x56\\x92\\x90\\xbe\\x37\\xc5\\x8b\\xbd\\x74\\x5c\\xe0\\xfb\\x74\\x83\\x52\\x70\\xab\\xa2\\x25\\x2a\\xda\\xec\\x15\\x7d\\xc4\\x24\\x61\\x22\\x1a\\x2c\\xff\\x68\\x7b\\x9e\\x65\\xce\\xb5\\x7c\\x2d\\x77\\x70\\x0a\\xea\\x63\\x20\\x48\\x6c\\x5b\\x1b\\xec\\x9c\\xc5\\x3e\\x7e\\xf9\\xe4\\x8f\\xcd\\x1b\\x77\\x83\\xac\\xbe\\x75\\xa6\\xbe\\x02\\x67\\x27\\x88\\x12\\xdb\\xf3\\xd2\\x57\\x6c\\xf7\\xad\\x39\\x11\\x27\\x1a\\xce\\xbe\\x0f\\x2c\\x04\\x60\\x2a\\x08\\x0c\\x8b\\x96\\xc1\\x20\\xfd\\x86\\xfd\\xa2\\x82\\xaa\\x4e\\x1c\\x13\\x1f\\xe9\\x7c\\x90\\x7c\\x15\\x85\\x5f\\x87\\x75\\x5f\\x51\\x1c\\x03\\x7b\\xef\\xad\\x0f\\x56\\xb3\\x9f\\x32\\xa2\\x13\\x3a\\x22\\xf3\\xd5\\xa9\\xbe\\xc3\\x44\\x3f\\x29\\xa6\\x94\\xe9\\x7f\\xe0\\x5e\\x10\\xfb\\x8e\\xf9\\x99\\x13\\x02\\xb9\\xe0\\xd8\\x4d\\x92\\x9a\\x19\\xeb\\x03\\x47\\x1f\\x3a\\x86\\x13\\xd3\\x93\\x68\\xe1\\x58\\x83\\xa7\\xe4\\x97\\x0b\\x53\\xcb\\xaf\\x29\\x29\\xd8\\xde\\x43\\x1b\\x48\\xb4\\x35\\xd7\\x53\\x3c\\xaa\\x2e\\x36\\xce\\xab\\x6c\\xdd\\xb3\\x46\\xe5\\x35\\xe5\\x15\\xc4\\xb3\\xdb\\x76\\xde\\x07\\xd9\\x85\\x54\\x14\"},\n{{0x51,0xba,0x3a,0x4f,0x3d,0x85,0xd1,0x54,0x8c,0x2f,0x24,0x94,0xa3,0x51,0x1f,0x3b,0x95,0x15,0x66,0x3d,0x7e,0x85,0x37,0x0f,0xb6,0x15,0x02,0x37,0xe9,0xbc,0x98,0x0b,},{0x77,0x49,0xde,0x02,0x10,0xbc,0xe0,0x6d,0x48,0xf5,0x9b,0x95,0xae,0xb1,0x52,0x8f,0xd9,0xb4,0xe5,0x2c,0xdd,0xe2,0x2f,0xb8,0x19,0x3b,0xed,0xd5,0xdf,0x12,0x81,0x7c,},{0x16,0xfb,0x29,0x0c,0x91,0x3b,0x20,0xeb,0x1c,0x3d,0x7b,0x79,0x82,0x49,0xeb,0x84,0x59,0xd4,0xbe,0xe8,0x12,0x5d,0xb2,0xb3,0xf1,0xda,0xab,0x8a,0xf9,0xd9,0xa7,0x00,0xed,0x79,0x8a,0xdd,0xd8,0x02,0xdf,0xcd,0x29,0x7a,0x41,0x25,0x93,0xcd,0xa7,0xbe,0x99,0x79,0xa1,0xf0,0x93,0x50,0xe8,0x6f,0x69,0x8a,0xc3,0x38,0x0e,0x34,0x1d,0x07,},\"\\xd1\\x8d\\x0c\\xbf\\xc1\\x6d\\x0f\\x9b\\x67\\xf2\\x53\\x9a\\xd6\\x20\\x7c\\xd9\\x21\\x7a\\xd5\\xed\\x03\\x33\\xcd\\xdb\\x10\\x41\\xe0\\xac\\x2b\\xdd\\x92\\x02\\x76\\x62\\x96\\x52\\xb4\\x9c\\xbc\\x98\\x02\\x59\\x3e\\xc3\\x64\\xea\\x79\\x5a\\xbc\\xd1\\x58\\x20\\x85\\xf5\\x5b\\xc6\\x6c\\x48\\xfd\\x3e\\xed\\xe6\\x18\\xd6\\x36\\x96\\x17\\x10\\x0e\\xae\\xcc\\xc1\\x5f\\x24\\x9d\\x6e\\xee\\x5b\\xb2\\xc4\\x3c\\x01\\xb0\\x62\\x3f\\xe6\\x03\\xce\\xee\\xe4\\x9b\\x40\\xfb\\x7c\\x53\\xfc\\x68\\x47\\x36\\x73\\xc0\\x9b\\x1a\\xc7\\x7e\\xa9\\xbe\\xb7\\xe8\\x53\\x03\\x79\\xa8\\x6d\\x69\\xec\\xd1\\xff\\x11\\x81\\x3f\\xbb\\x88\\xf6\\x92\\xf0\\x5e\\xf1\\x32\\x07\\x42\\xb4\\xfe\\x7e\\x06\\xd5\\xba\\x71\\x65\\x66\\x46\\xcd\\x75\\x00\\xde\\x19\\xbb\\x93\\xd8\\x44\\x53\\x66\\x03\\xf4\\x0b\\xd4\\xae\\xea\\xf0\\xc4\\xdb\\xc0\\xac\\xfd\\x20\\x2b\\x28\\x6b\\x64\\xaf\\xb8\\x3d\\x4a\\x37\\x8d\\xd4\\x5e\\xe3\\xc1\\xdf\\x6b\\x3e\\xf1\\x6b\\x8b\\x1a\\xcc\\xbc\\x04\\x06\\x32\\x50\\xec\\x47\\xb8\\x6a\\xe5\\xa7\\x1d\\x1d\\xab\\x38\\xb5\\xeb\\x80\\xd6\\x63\\xfa\\xa7\\x88\\xf8\\xb5\\x9a\\x75\\x4c\\x0f\\x9c\\x9f\\x6d\\x90\\x62\\x52\\xaf\\x46\\xab\\x1f\\xff\\xed\\x27\\x6d\\x23\\x88\\xdb\\xe7\\x0d\\x96\\xba\\x67\\x47\\xd1\\xfe\\xd4\\xfc\\x0b\\x55\\x29\\x3d\\x5f\\x78\\x7b\\xda\\x0c\\x0d\\xf4\\x6a\\x73\\xf4\\xaa\\x7d\\x29\\xe1\\xc9\\xcc\\x85\\xcd\\x04\\x3e\\x3d\\xff\\xe0\\x57\\x46\\x2c\\xa5\\xfe\\x5c\\x64\\x70\\xe7\\x39\\x27\\x6f\\x8b\\x53\\x4c\\x01\\x72\\xe4\\x60\\xf3\\x40\\x48\\x7a\\x56\\x94\\x68\\xaa\\x58\\x90\\xcc\\x14\\xf2\\x0d\\x67\\xd7\\x9c\\x66\\x1e\\x87\\xfe\\xba\\xc6\\x27\\x59\\x71\\xc3\\x73\\x08\\x07\\xeb\\xf1\\x75\\xe0\\xde\\x10\\x49\\xbe\\xe6\\x7c\\x89\\x5e\\x57\\xb7\\x1a\\xb8\\xa2\\xf3\\xcf\\x36\\x41\\xfd\\x54\\x8d\\x09\\x41\\x4f\\x5f\\xc3\\x02\\x6a\\x0a\\x35\\xf6\\xba\\x95\\x16\\x73\\x94\\x49\\x41\\xcb\\x23\\x6f\\x3d\\x19\\x76\\xdc\\x69\\x07\\x7d\\x95\\x14\\x50\\xe7\\x66\\x03\\x16\\x98\\x8f\\x6f\\x2a\\x6f\\xbb\\xff\\x3b\\x37\\xce\\xaa\\x02\\xfd\\x6f\\x02\\x73\\xbd\\x80\\x31\\x85\\xa1\\x09\\x03\\x9c\\x63\\xf2\\x51\\x9b\\x98\\x3d\\xaf\\x65\\x54\\x25\\x3b\\xed\\x54\\x97\\xc0\\xb0\\xbd\\xaa\\x0b\\xd4\\xa1\\xfa\\xc9\\x00\\x26\\xad\\xe3\\xe4\\x0c\\x55\\x4c\\xff\\x2c\\xcb\\x36\\x99\\x0e\\x71\\x55\\x67\\x08\\xc5\\xc4\\x03\\x92\\x56\\xff\\xc7\\x33\\x7e\\x5f\\xea\\x11\\xf5\\xe9\\x0d\\x3e\\x4d\\x93\\x35\\x91\\x79\\x11\\x6a\\x85\\xc2\\x41\\x36\\xca\\x34\\x83\\x5c\\xd3\\x40\\x12\\xe4\\xd7\\xdd\\xc7\\xb7\\x21\\xc2\\x46\\xc7\\x37\\x00\\xe2\\x76\\xdc\\x2f\\xf9\\xf2\\x77\\x0b\\x43\\xc8\\xe8\\x0a\\x17\\xf0\\x1d\\x32\\x68\\x0b\\xae\\x22\\x8e\\x64\\x23\\xa8\\x80\\xc3\\xfb\\x99\\x6a\\xb8\\xd2\\x21\\xbc\\x62\\x74\\xac\\x5f\\xa7\\x70\\xd2\\x05\\xfc\\x87\\x8f\\xba\\x9b\\xbd\\x77\\x6a\\x3d\\x79\\xed\\x77\\x04\\x89\\x50\\xf3\\x6d\\xc0\\xaa\\x3c\\xcd\\x28\\xe4\\x75\\x6a\\x99\\x19\\x04\\xae\\x05\\x1b\\x8a\\x4b\\x7d\\xe3\\xa1\\xf2\\xad\\x0f\\xb4\\x5a\\x33\\xd0\\xc6\\x82\\x25\\x84\\x1f\\x8e\\xb6\\x5b\\x6a\\x16\\xe9\\x5f\\x89\\x35\\x91\\xe1\\xaa\\x73\\xa6\\x4f\\x0d\\x2e\\xe9\\x38\\xab\\x69\\xad\\xcc\\x8c\\x59\\x51\\x8b\\xec\\x50\\x1c\\x39\\xf1\\x39\\x17\\x4b\\xbb\\x00\\x69\\x9e\\x1a\\x0f\\x0e\\x0d\\x88\\x9a\\xae\\x54\\x3a\\x55\\xe6\\xac\\x56\\xd5\\x20\\x4c\\x1a\\xde\\x1f\\x27\\xd8\\x2a\\x6a\\x95\\xe1\\x4b\\x2d\\x69\\x09\\xdd\\xa7\\xbf\\xaa\\x7f\\x48\\x7f\\xb6\\x19\\x59\\x01\\x4b\\x78\\x79\\x5c\\xb4\\x63\\x9f\\x09\\xf0\\xd3\\x29\\xfe\\xb3\\x5c\\xcf\\x52\\xed\\xc2\\xdb\\x72\\x19\\x14\\xe4\\x23\\x30\\x68\\x89\\xa4\\x83\\xfe\\xe8\\x76\\x36\\x0e\\xe3\\x26\\x33\\x53\\x19\\x07\\x0c\\x56\\x4f\\x3a\\x8b\\x95\\x3f\\x52\\xf4\\x15\\x13\\xa2\\x26\\x08\\x83\\xc3\\x8d\\xd9\\x78\\xa2\\x48\\x60\\x4a\\x41\\xbd\\x4b\\xfc\\x9e\\x84\\x18\\x4d\\xc9\\xe8\\x4d\\x25\\x89\\xf4\\xaf\\xff\\x84\\x17\\x82\\x4c\\xe5\\xad\\xba\"},\n{{0x7d,0xde,0xc5,0x26,0xa4,0x97,0x1d,0x89,0x12,0xa6,0xbd,0x43,0xc6,0x9f,0x92,0xed,0x86,0x44,0x2b,0x15,0xf4,0x2f,0xba,0xbb,0xf2,0xd1,0x7e,0xff,0x98,0x99,0x31,0x61,},{0x0d,0xfe,0xff,0xb2,0x76,0x23,0x09,0xb4,0x73,0x4e,0x4c,0xe2,0x52,0x3c,0xf1,0x86,0x31,0x49,0xf7,0xe1,0x9a,0x7c,0x14,0x7e,0xc0,0x89,0x9e,0x11,0x0c,0xa9,0xd8,0x7d,},{0x9e,0x60,0x3b,0x01,0x5f,0x42,0x87,0x1b,0x78,0xeb,0x27,0x52,0x3f,0xbb,0x7c,0xe9,0x62,0xfc,0xa3,0x2a,0xe2,0x70,0xe8,0xe1,0x2d,0xca,0xdd,0x25,0xaa,0x85,0x2b,0x89,0x1f,0x6f,0xef,0x77,0xb5,0x9a,0x54,0x6c,0x9a,0x7a,0x7c,0xac,0xb5,0x5e,0x1d,0x32,0xad,0xc8,0x05,0xae,0x5f,0x61,0xa6,0x9e,0x67,0x64,0xc7,0xc0,0x82,0x92,0xeb,0x03,},\"\\xe8\\x77\\x4a\\x45\\xd4\\xd8\\xf8\\x6d\\xda\\x5c\\x08\\x80\\x2b\\xa2\\x47\\x2e\\xf3\\xc8\\xd3\\x6c\\x7f\\x38\\x3a\\xc0\\x46\\x12\\xa4\\x64\\x38\\x2e\\x9d\\x6c\\x07\\xd8\\xd3\\x58\\x22\\xc5\\x3f\\x43\\x88\\xf5\\x15\\x36\\x14\\xfe\\xfa\\xf4\\x63\\x74\\x74\\x7b\\x9d\\x4f\\xd4\\x46\\xa8\\x64\\x76\\x9a\\x4c\\xad\\xe8\\x43\\xc1\\xea\\xb8\\x57\\x43\\x19\\x11\\x2f\\x01\\x79\\xd2\\xea\\x9e\\x3c\\x19\\x5d\\xc0\\x68\\xf0\\x69\\x74\\x62\\xb9\\xe0\\x7c\\x87\\x94\\x87\\x0f\\x8f\\xb8\\xff\\xc0\\x81\\xe4\\x58\\x6a\\xfb\\xcd\\xba\\x7a\\x4f\\x59\\x25\\xe9\\xfd\\x9e\\xc9\\x42\\xd8\\x43\\x47\\x33\\xc2\\xdd\\xd5\\xe2\\x9b\\xbd\\xfc\\x73\\x42\\xb9\\x28\\x68\\x71\\x9b\\x54\\x40\\x88\\xa4\\x8e\\xba\\x4c\\x82\\xf1\\x87\\xdd\\xca\\x8f\\x47\\x46\\x25\\xa7\\x1c\\xf6\\xb7\\xaa\\x5f\\x08\\x1c\\x74\\xf7\\x40\\x8f\\x53\\xb7\\x81\\x63\\x6e\\x7e\\x9d\\x29\\xb0\\x7f\\xdb\\x6d\\x9c\\x35\\xe5\\xeb\\x38\\x2d\\xb7\\xa3\\x1a\\x8b\\xa5\\x16\\x91\\x5d\\xf8\\xde\\xe9\\xe1\\xad\\x3f\\x18\\x28\\x43\\x68\\x3e\\x8d\\x1d\\xc5\\xd8\\x66\\x9d\\xbf\\xcf\\x09\\x54\\x1a\\x43\\xc0\\xa0\\x46\\x13\\x38\\x1a\\x5b\\x5e\\x4e\\x71\\xb2\\x3c\\x5a\\xd0\\x9b\\x8e\\xaa\\x51\\xcb\\x93\\x8d\\x0c\\x75\\x2c\\xc3\\xd3\\xa1\\x0f\\x10\\xb4\\x2b\\xe8\\xee\\x7f\\x6b\\xda\\xc8\\x07\\x85\\x68\\x43\\x49\\x46\\xbb\\xf5\\x6d\\xa7\\x0e\\x7d\\x54\\x15\\x7a\\x6e\\xfd\\x48\\x46\\xeb\\x15\\x52\\x78\\xc9\\x4c\\x38\\x88\\x65\\x8a\\x7a\\x2f\\x8e\\xa3\\xba\\xc1\\x47\\xaa\\x89\\x16\\x92\\xae\\x8b\\x23\\xf1\\xaf\\xe7\\x1e\\xcf\\xde\\xca\\xa6\\xc1\\x13\\xb5\\xca\\xaa\\xa1\\x93\\x98\\xc7\\xdf\\xe7\\x3f\\xac\\xb4\\x15\\x5f\\xd6\\xba\\xc1\\x8d\\x5d\\xf2\\x12\\x9e\\x8b\\x29\\x07\\xec\\xee\\x15\\x1b\\xdd\\x14\\x7a\\x7c\\x3e\\x46\\xea\\x72\\x75\\x4d\\xe3\\x2c\\xeb\\x06\\x6d\\x9d\\xb1\\xc2\\x6e\\x80\\xdf\\x36\\x31\\x29\\x2b\\x16\\x17\\x4c\\xfa\\x6f\\x1d\\x9c\\x08\\x28\\xb8\\x49\\xc2\\x2d\\x29\\x65\\x1a\\x73\\xe9\\x10\\xd9\\x27\\x58\\x77\\xf4\\x64\\xce\\x93\\x26\\xc6\\xe4\\xed\\x6b\\x07\\xdc\\xb3\\xa3\\x53\\x63\\xc1\\xaa\\x64\\x72\\xe0\\x2c\\x5c\\xd8\\x55\\xe3\\x8a\\xab\\xe9\\x65\\xac\\xe9\\xf3\\xf5\\xa4\\xf5\\xde\\x03\\x00\\x86\\x94\\xcb\\x90\\xaf\\xe4\\x16\\xc9\\xd4\\x86\\x88\\xde\\x7f\\x75\\xcf\\xe2\\x43\\xff\\x7f\\x41\\xe0\\x59\\x31\\x09\\x34\\x90\\x3d\\xb5\\x68\\x84\\x45\\x08\\x26\\x2c\\x89\\x9d\\xfa\\x75\\x0c\\xd6\\xa2\\x82\\x98\\x24\\xba\\x02\\x7a\\xea\\x1b\\x6d\\x01\\x77\\x72\\x6a\\x34\\x3a\\xdd\\x4e\\xcd\\xc5\\xf7\\xe6\\xe9\\x09\\xab\\x7d\\xe6\\x15\\xef\\x28\\x07\\xf9\\xe7\\xd7\\x1c\\xe2\\xf7\\x8a\\xcf\\xf5\\x7e\\xba\\x79\\xc3\\xf5\\xe0\\x7c\\x8b\\x66\\x1c\\x1e\\x30\\x27\\xf8\\x17\\x6d\\x28\\xbf\\xef\\x76\\x7d\\xd6\\x8d\\x4e\\x5d\\x62\\x8f\\xec\\x0b\\xfe\\x88\\x79\\x93\\x41\\xf3\\x06\\x12\\x87\\x34\\xfa\\xd2\\x02\\xaa\\xfc\\x9f\\x11\\x12\\x3f\\xb3\\xe3\\x63\\xd1\\x0a\\xee\\x0d\\xb5\\xe2\\x7a\\x15\\x70\\xdf\\xae\\xe4\\x7e\\x24\\xda\\x47\\x3b\\x07\\xfe\\xe5\\x9a\\x6c\\x93\\xf0\\x98\\x1d\\xbe\\x32\\x5c\\xd8\\xcc\\x2d\\x2e\\xd7\\xdc\\x17\\x16\\x6b\\x26\\x7c\\x1b\\x11\\x05\\x36\\xf2\\x63\\x6b\\xba\\x34\\x75\\x1a\\x78\\xf7\\xf6\\x29\\x81\\x82\\x44\\x2d\\x83\\xc1\\x23\\xbb\\xee\\x4f\\x50\\xc5\\xb0\\xfa\\xcf\\xf0\\x3e\\x7c\\x55\\x6e\\xd9\\xe6\\x4c\\xa2\\x7c\\x4b\\xca\\x5a\\xb0\\xde\\x0d\\x5f\\x9c\\x2c\\xbb\\x54\\xcc\\x2d\\x94\\x73\\xa3\\x2d\\xf9\\x99\\x39\\x0a\\xc2\\xff\\xee\\xd3\\xd4\\xcb\\xa3\\x49\\x73\\xdc\\xec\\x3f\\xba\\xba\\xfc\\x4d\\x54\\xca\\xe4\\xe7\\xe8\\x5d\\x4a\\x6e\\x8a\\xfe\\x45\\xca\\xcd\\x71\\xe0\\xf2\\xe6\\xd0\\x4b\\x4f\\x9d\\x3b\\xcf\\x43\\xd3\\xfa\\x41\\xe9\\x98\\xcc\\xbe\\xd0\\xf1\\x50\\xd5\\xca\\x1d\\x52\\x72\\x93\\x2d\\x93\\xec\\xa1\\x04\\x95\\xc6\\x83\\x34\\xfa\\x32\\x68\\xf3\\x1d\\xe5\\x22\\xcb\\x12\\xa7\\x44\\x9f\\xfb\\x5c\\xb5\\xe8\\xf1\\x46\\x2c\\xd9\\xb5\\x17\\x70\\xcc\\xaf\\x58\\xb1\\xe0\\xd8\\x2e\\xf9\\x29\"},\n{{0x0b,0x65,0x90,0xdd,0x7c,0x2f,0x15,0xf9,0x4a,0x56,0xe2,0x40,0x16,0x93,0x63,0xc2,0x67,0x32,0x30,0x2b,0x9d,0x44,0x0b,0x53,0x27,0x23,0x00,0x2e,0x15,0x5d,0x02,0xd9,},{0xcd,0x18,0xe0,0x32,0x57,0x7c,0x55,0x76,0xf2,0x23,0xf3,0xe3,0xd8,0xa1,0xfa,0x8e,0x9a,0x87,0x0f,0xef,0x09,0xe9,0x40,0x9f,0xaf,0x40,0xd7,0x14,0x3e,0x52,0xfc,0x44,},{0x64,0x2d,0x81,0xac,0xf3,0x8c,0xf0,0x99,0xa8,0x33,0xa7,0x4f,0x2d,0x80,0xb8,0x54,0x48,0xec,0x2b,0x1a,0x5d,0xdc,0x64,0x47,0x0b,0x21,0x3d,0x54,0xb7,0xbe,0x61,0x33,0x68,0x9a,0x71,0x94,0xf5,0xd8,0x97,0x92,0xe1,0x6e,0x5d,0xf7,0x55,0xa4,0xfd,0x9e,0xf4,0x68,0x9e,0xa9,0x52,0x92,0x6e,0x0e,0x4e,0xcb,0x3b,0xd4,0x81,0xfd,0x91,0x02,},\"\\x71\\xfe\\x0f\\xd5\\x5d\\x5e\\xd1\\x20\\x6f\\x28\\xee\\x16\\xe4\\x19\\xfa\\xb6\\xfa\\x66\\xa2\\x51\\xfa\\x6b\\x06\\x01\\xda\\x26\\x1e\\x42\\x9f\\x55\\xb8\\xd5\\xae\\x3f\\x3c\\x52\\xa1\\x7f\\xe1\\xec\\x73\\x4b\\x81\\x0a\\xb6\\x3a\\xad\\xe4\\x44\\x70\\x39\\xca\\x0a\\xe4\\x68\\x7c\\x24\\x35\\xf5\\x61\\xe4\\x6c\\x5b\\x30\\x97\\x17\\xab\\x31\\xe0\\xf6\\x40\\x76\\xb2\\x16\\x92\\x11\\x57\\x2b\\x74\\xe1\\x8a\\x1f\\x45\\x25\\xa6\\x4f\\xa7\\x17\\xa5\\xed\\xf1\\x49\\x75\\x81\\x29\\xcb\\x04\\x03\\x5e\\x7e\\x20\\xba\\x40\\x05\\xb7\\x48\\x09\\xde\\xc6\\x44\\x50\\x4c\\x24\\x54\\xa7\\x7f\\x99\\xb2\\x0c\\x53\\x74\\xf3\\xce\\xe7\\xd8\\xc6\\xb6\\x8b\\x24\\x3c\\xaf\\xb3\\x00\\x98\\xdc\\xe9\\x04\\x90\\xfd\\xc3\\xb9\\x2f\\x54\\x94\\x8f\\x42\\x46\\x39\\xe1\\x9f\\x8f\\x20\\x20\\xd1\\x55\\x13\\xda\\xef\\xad\\xd9\\xe9\\xb1\\x2a\\x84\\x76\\x1e\\x5e\\xce\\xa0\\x88\\xad\\x56\\x1f\\x06\\x20\\x9f\\xd4\\x42\\x3f\\xcd\\x00\\x3f\\xbc\\xd1\\x87\\x3e\\xa5\\x49\\x63\\xa2\\xfa\\x07\\xc7\\x47\\x6b\\x13\\x88\\xf9\\x01\\x5d\\x9e\\xac\\x30\\x5b\\xea\\x5a\\x3d\\xe1\\x94\\xf5\\x5a\\x17\\xb4\\x2d\\x59\\x9e\\x5c\\xe6\\x2c\\x8b\\x7c\\x19\\xe7\\xe7\\x09\\x61\\x37\\xb9\\xd0\\xa6\\x5e\\x63\\xc1\\xa3\\xb8\\x45\\x38\\xca\\x65\\x36\\x9a\\x20\\xe8\\x82\\x2f\\xff\\x5e\\xcb\\x57\\xfc\\x09\\xb4\\xe6\\x84\\x5b\\x4f\\x24\\xd4\\x88\\x69\\x71\\xac\\x1a\\xc2\\x8c\\x77\\x58\\x0e\\xa5\\x67\\x2a\\xd1\\x4c\\xe4\\x44\\x17\\x19\\xc2\\x14\\x54\\x6d\\x07\\x36\\xcb\\x7a\\xd0\\xbd\\x9f\\xb5\\xb2\\x6c\\x6d\\x9c\\x53\\x6b\\xf8\\xc8\\x57\\xae\\x42\\x57\\x7b\\x36\\x34\\x1d\\x39\\x2b\\x43\\x32\\x3b\\xda\\xe7\\xdf\\xaa\\x49\\x19\\x86\\x87\\x2a\\x23\\xd8\\x27\\xc6\\xef\\x8b\\x57\\xe7\\xd0\\x0f\\xea\\xe3\\x83\\x4c\\x46\\x64\\x00\\xaa\\xd1\\xd3\\x67\\x82\\x39\\x84\\xaa\\x02\\xd2\\xef\\x49\\x29\\x14\\xae\\x11\\x27\\xe7\\x55\\x1b\\x81\\x25\\x59\\x37\\x83\\x05\\xe4\\xfd\\x52\\xd8\\xbc\\x7e\\x41\\x57\\xec\\xca\\x45\\x1f\\x43\\xee\\x9f\\x54\\xc8\\x21\\x53\\xc7\\xdb\\xfa\\xf7\\xec\\x35\\x23\\x87\\x73\\x05\\x1b\\x4e\\x58\\x7d\\xb1\\x36\\x95\\x7e\\xc5\\x71\\x38\\x2b\\x90\\x59\\x0b\\x5d\\x10\\x26\\x02\\x45\\x80\\x96\\x6b\\x72\\x52\\xd2\\xcd\\x3f\\x4f\\x16\\x25\\xc4\\x85\\xba\\x90\\x6b\\xff\\x17\\x59\\x92\\x18\\x89\\x78\\xf2\\xd6\\x27\\x4f\\x3a\\x03\\x17\\x49\\xba\\x7e\\x70\\x2f\\x56\\x54\\x7e\\xdc\\x96\\xec\\x26\\x7b\\x84\\x89\\x28\\x80\\xd7\\x50\\xd7\\x31\\x0e\\xbf\\x6d\\xb2\\x41\\x25\\x3c\\xab\\xe4\\xb2\\x5a\\x97\\x74\\x58\\xc6\\xff\\xc9\\xe3\\x53\\xe6\\x2a\\xdf\\x05\\xe6\\xef\\xc0\\xfc\\x1e\\xbe\\x89\\xf5\\x27\\x70\\x5b\\xcc\\x26\\xb7\\x01\\x28\\x56\\x10\\xd9\\x8a\\xa3\\xbf\\x23\\x87\\x2b\\x69\\x96\\xd3\\xde\\x48\\x0e\\x8d\\x09\\xd7\\x83\\xc4\\xa0\\x8c\\xd3\\x83\\xc9\\x01\\x26\\x35\\xaa\\x68\\x97\\x8b\\x50\\x06\\x81\\x8b\\xbd\\xe4\\x4f\\x29\\x87\\x47\\x9b\\xcb\\x2b\\x71\\x1c\\x1b\\xee\\xed\\x27\\xcf\\x09\\x97\\x0a\\x16\\x4e\\x45\\x4f\\x71\\x08\\x22\\xee\\xf5\\x55\\xc1\\xc7\\xbf\\x9f\\x76\\xd5\\x25\\x4c\\xe2\\x20\\xc9\\xaa\\xa7\\x16\\x84\\x7a\\x24\\x94\\x88\\xf9\\xcd\\xb4\\x4c\\x48\\xf4\\x52\\xab\\x52\\xc4\\x0f\\x6d\\x03\\xad\\xc8\\xbf\\x3f\\x19\\x7b\\x25\\xe3\\xd1\\x27\\x83\\x0e\\x74\\xfd\\x81\\xeb\\x14\\xf7\\x54\\x20\\x5b\\x3a\\x48\\x44\\xc5\\x96\\xb6\\xe3\\xa9\\x93\\x6a\\xd6\\xfd\\x9e\\x80\\xa1\\x63\\x20\\xb3\\x81\\xc3\\xff\\xc7\\xb6\\x9e\\xab\\x54\\x53\\x6f\\x55\\xab\\xe2\\x2c\\x91\\xd8\\x98\\x40\\x8e\\x88\\x0c\\x6d\\xbf\\x0f\\xa5\\x64\\x8d\\x51\\x77\\x72\\xca\\xa5\\x35\\x3b\\x25\\xdb\\x60\\x50\\xd7\\x53\\xfa\\xf1\\x98\\xec\\x1d\\x37\\x5d\\xe0\\xfa\\x72\\x18\\x0a\\x93\\xba\\xb0\\x3d\\xed\\x77\\x16\\xcb\\x87\\x50\\x5b\\x68\\xac\\x6a\\x35\\xe7\\x3d\\x0f\\xcf\\x34\\x45\\x7e\\xff\\x82\\x17\\x89\\x52\\x14\\x2c\\x7b\\xac\\x9d\\xfd\\x87\\x2a\\x9a\\x82\\xf8\\x5b\\x24\\xb8\\x8f\\xa4\\x2d\\x4b\\xe0\\xa0\\xca\\x0b\\x2c\\x70\\xf4\\xc6\\x22\"},\n{{0xc6,0xd9,0xac,0xc5,0x17,0x5f,0xa2,0xb8,0x96,0x5c,0x15,0x8c,0x56,0xba,0x0a,0x5a,0x66,0x6a,0xd2,0xc7,0x40,0xcd,0x5b,0xb6,0x79,0xbb,0xa9,0xb1,0xdc,0x50,0x92,0x84,},{0xf5,0xcf,0xca,0x21,0x1b,0x02,0xfb,0xa7,0x72,0x03,0x47,0x70,0x3b,0xf1,0x63,0x1c,0xb3,0x08,0xfa,0xbc,0xda,0xa6,0x74,0x29,0x52,0x7c,0x5b,0x7b,0x67,0x6d,0xba,0xef,},{0x4d,0x2c,0xe7,0x07,0x09,0x0b,0x0f,0x3f,0x41,0x46,0x2f,0xd7,0x5b,0xd6,0x09,0xa2,0x72,0x4f,0xad,0xfe,0x5c,0xa3,0x90,0xe3,0x13,0xa4,0x2c,0xab,0x42,0x86,0x8e,0xd6,0xe9,0xa8,0x91,0x4d,0xc1,0x39,0x09,0xc0,0xd6,0xf6,0x1e,0x63,0x71,0x29,0x57,0xc7,0x6f,0x3b,0xd8,0xb7,0xf5,0x53,0x49,0x71,0x5a,0x3a,0x31,0x75,0x15,0xc0,0x71,0x08,},\"\\xf2\\x45\\x10\\x0c\\xd2\\xd3\\x16\\x48\\xf5\\xf3\\x51\\xbd\\xa5\\x64\\xc9\\xdb\\x4a\\x35\\x82\\x0c\\xc3\\x0e\\xf6\\x51\\x33\\x7c\\x4c\\xd8\\x88\\x07\\x05\\x69\\xd1\\x17\\xa9\\x34\\xb9\\xc9\\x18\\xe5\\xdf\\x8b\\x37\\x44\\xdd\\x66\\x20\\xcc\\xbc\\x49\\xf6\\xb3\\xe5\\x78\\x2a\\x30\\x33\\x9d\\xbb\\x9c\\xbe\\xd0\\x5d\\xd2\\xb3\\xb8\\xc5\\xbf\\x15\\x46\\xe7\\x0a\\xf6\\x36\\xe6\\x61\\x5c\\x48\\xb2\\xc3\\xc2\\xd1\\x9f\\xe3\\x54\\x20\\xdf\\x53\\x14\\xf6\\x3c\\x48\\x12\\xb5\\x8e\\x82\\xa2\\xa6\\x0b\\x18\\x02\\xf3\\x8e\\x50\\x5c\\xe7\\x48\\x01\\x7a\\xfa\\x97\\x7d\\x3f\\x9b\\x1b\\x6b\\xea\\x21\\x92\\xac\\xec\\x73\\xbd\\xce\\x12\\xd6\\x5e\\x68\\x4d\\xa4\\xd8\\xb4\\x1f\\xa9\\xa8\\x6f\\x11\\x08\\x6e\\xdc\\x2d\\x52\\x96\\xf6\\x7e\\xfc\\x53\\xac\\x84\\x07\\x0f\\xde\\x13\\x69\\x3e\\xb2\\x31\\x8f\\x5a\\x8c\\x3b\\x11\\x7c\\x23\\x34\\x22\\xad\\xcd\\xd3\\x52\\xf3\\x28\\xf0\\xec\\x69\\x9a\\x46\\x50\\xc9\\x3f\\x9b\\x4a\\x7d\\x79\\x5d\\x7f\\xc2\\x62\\x2a\\x03\\xd9\\x9b\\x64\\xf7\\xb3\\xdc\\x31\\x94\\xf6\\xc3\\xb1\\xb6\\x9d\\x99\\x07\\xce\\x09\\x24\\x01\\x07\\x3f\\x47\\xa2\\x8f\\x47\\x99\\xd2\\x29\\x09\\x2a\\x1b\\x07\\x41\\x29\\x95\\x4b\\xe8\\x0c\\xa4\\xa3\\xe6\\x58\\x2e\\xe0\\x5c\\x30\\x2c\\xac\\xb7\\x43\\x1d\\x1c\\xa6\\xa4\\x51\\xaa\\xed\\x72\\x78\\xab\\xc7\\xf7\\x85\\x75\\x24\\x1c\\x2a\\x2e\\xea\\x2e\\x84\\xcb\\xf9\\xa3\\x34\\xdf\\x40\\x21\\x09\\xc0\\x28\\xe3\\x45\\x47\\x3a\\x13\\xaf\\x9b\\x00\\x8e\\x20\\xbc\\x8c\\xf0\\xbc\\xef\\xbb\\x7a\\xa7\\x27\\xec\\x85\\x6e\\x99\\x25\\xb4\\xdd\\xd9\\x9d\\xeb\\xa8\\xf2\\x52\\x91\\x1a\\x59\\x01\\x54\\xb5\\x79\\xa8\\xaa\\xa3\\x1f\\x07\\xdd\\x50\\x25\\xdf\\x5c\\xd8\\xa0\\x9f\\x74\\x29\\x64\\xcc\\x8c\\x36\\x5d\\x8a\\xff\\x4e\\xb1\\xd7\\x9f\\x6e\\x5a\\x07\\xda\\xc5\\xf4\\xed\\xe9\\x2b\\x4e\\x2e\\x61\\xd3\\x4c\\xc2\\xd4\\xf0\\xaa\\xaa\\xb0\\x37\\xad\\x5f\\xdb\\x95\\xde\\x6c\\xd5\\x98\\x4e\\xba\\xf7\\xcc\\xe7\\xf0\\x8d\\x0c\\xa0\\xdb\\xbe\\x48\\x3c\\xe3\\xcb\\x35\\xcd\\x79\\x0c\\xa0\\x42\\x70\\x65\\xa3\\x4d\\xf7\\xf4\\xc2\\xaf\\x86\\xef\\xe9\\xb7\\x65\\x71\\x3a\\xff\\x25\\x7f\\x5c\\x1d\\x54\\x70\\x95\\x27\\xad\\x18\\xac\\x33\\xab\\xcd\\xee\\xdb\\x20\\x80\\x64\\xeb\\xae\\xa4\\x83\\x5b\\xe4\\x94\\x2b\\x8f\\xc6\\x66\\xad\\x1b\\x79\\xb6\\x65\\x13\\x09\\xe5\\xea\\x1d\\xa3\\x02\\xd7\\xfb\\xa2\\xe9\\x9f\\x0e\\x63\\x19\\xe8\\x2b\\x99\\x05\\xa1\\xea\\x48\\x2b\\xa0\\x43\\xb6\\x80\\x0b\\x33\\x0d\\xc4\\x8b\\x33\\x13\\xf5\\x9b\\xb2\\xf9\\xe8\\xa7\\xf0\\x7e\\xb1\\x80\\x0a\\x70\\x27\\x45\\xdb\\x14\\xc6\\x29\\x9a\\x98\\x2d\\xad\\x89\\x79\\x54\\x44\\x5b\\x7d\\x98\\xeb\\x58\\x37\\xfd\\x70\\xbf\\x19\\x0c\\x64\\x95\\x52\\xc8\\xe8\\x6f\\xeb\\x7f\\xf5\\xb3\\xed\\x8e\\x0a\\x06\\x70\\x4d\\x45\\x53\\xa3\\xc2\\xdd\\x74\\xf1\\x8e\\xa8\\x23\\x3a\\xe0\\xa5\\x0d\\x91\\x4f\\xe0\\x8f\\xbc\\xd3\\xa1\\x43\\x5f\\xed\\x56\\xa9\\xf3\\xa7\\xef\\xfa\\x14\\x0f\\xb5\\x52\\xdd\\xd2\\x1d\\xff\\xff\\x7f\\xa4\\x73\\x32\\xdd\\xfc\\x1e\\x53\\x17\\xf4\\x17\\x7d\\x5e\\x2f\\x11\\xa0\\x6e\\xc8\\x4c\\xcf\\xb8\\x9b\\x65\\x4e\\xa8\\x1b\\xd4\\x2d\\x7e\\x07\\xa3\\x87\\x30\\x1d\\x0f\\x40\\x26\\x4a\\xbb\\xf9\\xf9\\x10\\x7b\\x30\\xed\\xe8\\x64\\xcc\\x76\\x90\\xc0\\x6d\\x2e\\x24\\x7a\\x06\\x0b\\xb2\\x24\\x4a\\xd7\\x8e\\xd5\\xc5\\x51\\x5a\\x1a\\x2a\\x61\\x2d\\x61\\xe3\\xd9\\x31\\xe2\\x8b\\xc9\\x39\\xb4\\xd3\\x43\\x5e\\xee\\x4f\\x73\\x31\\xb1\\xf0\\xf8\\x53\\x75\\xd8\\x2a\\xc9\\xa7\\x7c\\x43\\x74\\x00\\x32\\x05\\x17\\x46\\xdc\\x92\\x69\\x45\\x8c\\x14\\x7d\\x18\\x8d\\x84\\x40\\x19\\x54\\xa4\\x89\\xcb\\x4f\\xbf\\x9b\\xf8\\x4b\\xa7\\xd8\\xf1\\x00\\x90\\x3c\\xe6\\x78\\x31\\xb4\\x05\\x4d\\x0f\\x58\\xcd\\x88\\x3d\\x54\\x2c\\x49\\x33\\x10\\x3f\\xf0\\x70\\xcd\\xfc\\x9d\\xbb\\x0f\\xcc\\x31\\xef\\xca\\x46\\x6e\\x77\\xa3\\x3f\\x1a\\x81\\x3d\\xa6\\xdc\\x0c\\x7c\\x31\\x58\\x5e\\x8f\\x4f\\xef\\x1e\\xbf\\x42\\xfb\\xd1\"},\n{{0x7d,0xfa,0xe4,0x16,0x41,0x9d,0x7b,0x0d,0x4f,0xc1,0xf8,0x23,0x84,0x0c,0x3e,0x4b,0xd4,0xad,0xcd,0x4d,0xc2,0xdc,0x17,0xb3,0x86,0x37,0xac,0xed,0xac,0xbd,0xbb,0x45,},{0xbc,0x51,0xd7,0x74,0x59,0x31,0x31,0x7e,0x1e,0x34,0x6e,0x2e,0x7c,0x92,0x03,0x91,0x81,0xb6,0xbf,0x38,0xee,0x2f,0x5a,0x44,0xfb,0xe2,0x33,0x9c,0x4f,0x95,0x2a,0xb9,},{0xda,0x34,0xb1,0x98,0x3e,0x8c,0x55,0xe4,0x1f,0xda,0x8e,0xc8,0xab,0xf2,0x3b,0x36,0x7a,0x0d,0xa6,0x06,0xc8,0xcd,0xbb,0x1e,0x8b,0x57,0xe0,0x34,0x3c,0x05,0x57,0xa5,0xf0,0xe8,0x15,0xe7,0xf2,0x2f,0x86,0x05,0xae,0x93,0xb2,0x7d,0x03,0x77,0x6a,0xc1,0xf7,0xde,0x3d,0x79,0x2e,0xa2,0x93,0x3a,0xc2,0x2d,0x2d,0xc2,0x3b,0x32,0x3d,0x0c,},\"\\xec\\x84\\x3d\\xc4\\xdd\\xa6\\xe9\\x02\\xe9\\xbe\\x31\\xb7\\x0f\\x11\\x76\\x3b\\x75\\x7a\\xb6\\xce\\x73\\x34\\xdc\\x00\\x76\\x4b\\x2d\\x08\\x4e\\x9d\\xaf\\x24\\x84\\x48\\x59\\x84\\xee\\x28\\xa2\\x83\\x0f\\xcb\\x94\\xc5\\x41\\xcb\\x46\\x94\\x40\\x03\\x67\\x31\\xde\\x80\\xff\\x56\\x0f\\x53\\x0c\\x9d\\x9e\\x6e\\x1f\\x7d\\x9c\\x4c\\x5b\\xdf\\x50\\xb0\\x4f\\x54\\x03\\xc2\\x9f\\x76\\xd7\\xe3\\x6e\\x00\\xbb\\xea\\x35\\xdb\\x1c\\xc6\\x0d\\xa8\\xd7\\x76\\x52\\x62\\x66\\xc3\\x32\\x4c\\xe7\\xef\\xec\\x64\\x50\\x85\\x96\\x09\\x26\\x68\\x56\\xd7\\x01\\xa4\\x7a\\x48\\xde\\xe8\\xbf\\x37\\x40\\x95\\x65\\xc7\\xfb\\xfa\\x99\\xa2\\x04\\xe5\\x53\\x0c\\x97\\x1c\\x60\\x5b\\x44\\x30\\x5d\\x5c\\x74\\x67\\x89\\x41\\x14\\x25\\x3c\\xf4\\x3c\\xdd\\xf1\\x8b\\x62\\x96\\xdd\\x25\\x4a\\x4d\\x96\\xac\\x70\\x00\\x91\\x81\\x86\\xdf\\xd4\\xbf\\x45\\x4e\\xd3\\x09\\x74\\xc5\\x53\\xd0\\xae\\x15\\x1a\\xd4\\xcf\\x54\\x0c\\xec\\xaa\\xa0\\xb5\\x94\\x8b\\x09\\x85\\xa9\\xc7\\xb6\\xe7\\x81\\x59\\x32\\xba\\xc1\\x17\\x32\\xfc\\x7d\\x10\\x26\\x7f\\x6b\\xf8\\xf1\\xe7\\xc0\\x8d\\x65\\x0e\\x56\\x7b\\x4e\\xdd\\x15\\xae\\x79\\x58\\x41\\x0e\\x42\\xf1\\xf5\\x37\\xfa\\x73\\x2f\\x72\\x7a\\x26\\x83\\x88\\x32\\x1d\\x53\\x44\\xc4\\xe7\\x8b\\xb9\\xa7\\x4e\\xab\\x9d\\x6a\\xbf\\x96\\x89\\x65\\xc6\\x66\\x93\\xd5\\xf1\\x12\\xdd\\x4c\\x14\\xfd\\xfd\\xd9\\x60\\x05\\xea\\xa6\\x75\\x7f\\xa2\\xcc\\x10\\x13\\xfe\\x43\\x27\\xab\\x09\\x99\\xd1\\x17\\xf3\\xdb\\xf3\\x25\\xb0\\x7c\\xd4\\x54\\xd4\\xb1\\x41\\x99\\x1e\\xf7\\xe2\\x3d\\xb5\\xee\\x24\\xbe\\xda\\x35\\x88\\x4a\\xa3\\x70\\x48\\x08\\x64\\x8a\\xa4\\x3c\\xd6\\x25\\x62\\x59\\xf7\\xd3\\xdb\\x5e\\x05\\x53\\x11\\xf2\\x53\\xe8\\xb5\\x7a\\x4c\\xda\\x5a\\xfe\\x0b\\x0a\\xdf\\xc3\\x64\\xe1\\x60\\xca\\x37\\xe8\\xde\\xc6\\xb9\\x5a\\xa6\\x15\\x2e\\x5d\\x5d\\xa6\\xeb\\x91\\xbe\\x0e\\x44\\xff\\xe8\\xe4\\x95\\x33\\x26\\x7b\\x7e\\xb7\\x95\\xf5\\xf8\\xe0\\xb2\\xc3\\x5b\\x29\\xdf\\xbc\\x87\\x58\\x5f\\x22\\xbd\\x5b\\x90\\x9d\\xfd\\x6a\\x5e\\xdc\\x0e\\x3a\\x9d\\x97\\xb0\\xc4\\xf3\\xad\\xc5\\x1e\\x96\\x99\\x37\\xc0\\x8f\\xd6\\x5f\\x53\\x7a\\xac\\xda\\x8f\\x11\\x27\\x5a\\xf0\\x2c\\x33\\x54\\x54\\x26\\x30\\xf3\\x92\\x0c\\x39\\x3f\\x5c\\x42\\xb9\\xfc\\x63\\x3d\\xe9\\xd9\\x4c\\x72\\xe3\\xf2\\x00\\x02\\x34\\x9a\\xd0\\x41\\x80\\x35\\xb3\\xf2\\x5f\\x02\\xca\\x92\\x8e\\x5b\\x2d\\x40\\xa7\\x7a\\x1c\\x3e\\x56\\x22\\x1f\\x4b\\x9d\\xb0\\xc2\\x5b\\x09\\x6d\\x6e\\x5d\\x0f\\xe7\\x58\\xda\\x2c\\x69\\x05\\x3e\\x8d\\x08\\x6d\\xef\\x4e\\xdc\\x6e\\x34\\x53\\x78\\x3f\\xfc\\x63\\xa4\\x96\\x01\\x22\\xd9\\x23\\x67\\x1a\\x90\\x60\\x08\\xba\\xc1\\x05\\x61\\xae\\x62\\x19\\xd2\\xb5\\x1d\\x53\\x67\\xbf\\x13\\xcc\\xab\\xf5\\x93\\x1b\\x9f\\x18\\x6e\\xb1\\x09\\xba\\xcd\\xe4\\x0e\\x1a\\xf2\\xb5\\x64\\x81\\xe0\\xc6\\xdc\\x6f\\x5c\\x54\\x73\\xf8\\x00\\x1c\\xf3\\x71\\x91\\x9a\\xcb\\x40\\xce\\xc5\\xb9\\x62\\xeb\\xba\\x80\\xe3\\x2d\\x6e\\xba\\xc4\\x80\\x6d\\x04\\xd2\\x47\\x68\\xc2\\xad\\x2e\\x3f\\x92\\xa8\\xcb\\xe4\\x77\\x54\\xf9\\xbf\\x61\\x59\\x53\\x52\\x2b\\x26\\x3d\\xc2\\x49\\x37\\xfb\\xd9\\x32\\xc8\\xc4\\x59\\xeb\\x8b\\x10\\x94\\x43\\xaf\\x6c\\x19\\x5a\\x59\\xfd\\x27\\x21\\xb0\\x12\\x56\\x28\\xf2\\xb8\\x14\\x3c\\xf3\\xc1\\x28\\xbc\\xec\\x13\\x92\\xef\\xd1\\x6b\\x73\\x4c\\x10\\x71\\x6d\\x96\\xba\\x7d\\x1f\\x41\\x39\\x17\\xcc\\xaf\\xa5\\xbf\\x5f\\x83\\xf5\\x24\\xfe\\x84\\x06\\xa1\\x52\\x11\\x5e\\xa7\\x70\\xe1\\x74\\x5e\\x82\\xe8\\xb5\\x1d\\x75\\x2b\\x8b\\xd7\\x85\\xdf\\x48\\xbf\\xc1\\x20\\x41\\xbf\\x87\\x4f\\xc7\\x3a\\xfb\\x42\\xca\\x5d\\x69\\xc6\\x41\\x64\\x79\\xce\\xb4\\xaa\\xa0\\x49\\x2b\\x6f\\xf2\\x1e\\xe1\\x2d\\xb2\\x21\\x3a\\x42\\x86\\xfd\\x56\\x05\\xc9\\x3a\\x7b\\xb8\\xa3\\xb0\\x71\\xb0\\xb2\\x5f\\xb0\\x1d\\x77\\xab\\xbc\\x87\\x71\\x48\\x94\\x70\\xa1\\x07\\xaa\\xda\\xe9\\xf6\\x40\\xc2\\x4d\\xfd\\x53\\x28\\xf6\\x0f\\x4b\\x7d\"},\n{{0x70,0x94,0x16,0x07,0x49,0x97,0xb9,0xc9,0xaf,0x4d,0x37,0xa0,0x11,0x39,0xe8,0xa3,0xf9,0xf2,0xce,0x5d,0x72,0xa5,0x7d,0x80,0x5e,0x82,0x2a,0x81,0x18,0x6d,0x01,0x7e,},{0xae,0xe1,0x10,0xf1,0xf4,0xd4,0x6e,0xa6,0x06,0x49,0xd7,0x86,0xb1,0x50,0x05,0x2e,0x28,0x7a,0x9d,0xa6,0x01,0x22,0xc4,0x7b,0x09,0x08,0xfa,0x8b,0x2c,0xa2,0x8a,0x80,},{0x8e,0x4b,0x41,0xf0,0x97,0xd8,0x36,0x14,0x18,0x4b,0xa7,0xf5,0x2b,0xa2,0xfd,0x9f,0x05,0x65,0xf8,0xa6,0x37,0x21,0xef,0x55,0xf9,0x31,0x62,0x82,0x6b,0x9f,0x0a,0xc0,0x70,0xc0,0xe2,0x86,0x4b,0x5f,0xfd,0x8e,0xcc,0xc1,0x8e,0xfa,0xd1,0x8b,0x2c,0xe8,0x4b,0xe5,0x7c,0x0b,0x4a,0x41,0xc5,0x2e,0x20,0xef,0x37,0x72,0x23,0x77,0xc6,0x0f,},\"\\xed\\xda\\xa3\\x69\\xc0\\xe3\\x1a\\x1f\\xcc\\x1d\\xa4\\x6f\\x65\\x36\\x24\\x42\\xa0\\xcc\\x21\\xc7\\xdc\\xdd\\x5c\\xd9\\x0e\\x0a\\x2e\\xe9\\xf2\\x51\\x10\\x81\\x2b\\xa1\\x14\\x93\\x1c\\x86\\x8a\\x70\\x86\\x07\\xac\\x16\\x08\\x4d\\x79\\x71\\x5d\\x13\\xb3\\x38\\xc0\\x5c\\x6a\\xef\\x73\\x43\\xe7\\xda\\xd2\\x82\\xf9\\x6f\\xe2\\x81\\x93\\x18\\x8f\\x0c\\xc8\\x93\\xc7\\xdc\\xe8\\x05\\xfd\\x3a\\x7c\\xd2\\x68\\xb7\\x28\\x94\\x16\\x0b\\x52\\x45\\xfe\\xd9\\xfa\\x99\\x43\\xb7\\xc8\\x0a\\xdb\\x3c\\x2d\\x1a\\x35\\x3d\\x8f\\x12\\xdf\\x25\\xa3\\x1d\\xde\\x7f\\xa3\\x85\\xbb\\xec\\x35\\x1d\\xa6\\x6f\\x15\\x30\\x32\\xe1\\x77\\x56\\x27\\x3f\\x8d\\x54\\xe9\\xa3\\xb9\\xea\\x25\\xae\\x67\\xd1\\xe9\\xc1\\x8c\\xc6\\x8b\\xe6\\x01\\xe3\\xd6\\x82\\x82\\x81\\x8c\\xe0\\xe7\\xcf\\x88\\xa4\\xd1\\x33\\x64\\x53\\x02\\x17\\x32\\xf0\\x8d\\x9e\\x76\\xcd\\x23\\x63\\x79\\x29\\xb0\\x91\\x1d\\x5f\\x86\\x14\\xf4\\x84\\x2e\\x67\\x0c\\x14\\x28\\x60\\xaf\\xc2\\x65\\xc5\\x01\\x72\\xb1\\x3b\\xfd\\x35\\xad\\x8f\\xc5\\x4b\\x28\\x65\\x7d\\xa3\\x2b\\xac\\x15\\x3b\\xa9\\xaf\\xfc\\x89\\x7a\\xfb\\x3c\\x72\\x1f\\x48\\xca\\xa4\\x62\\x40\\x58\\x57\\x10\\xb0\\xf2\\xd2\\x4d\\x5f\\xf4\\x96\\x5d\\x1d\\x10\\xf1\\xa0\\x7b\\x06\\xab\\xea\\x6a\\x08\\xe1\\xd6\\xf1\\x50\\x0d\\xa1\\x2c\\x43\\x4a\\x6d\\x77\\x8c\\x94\\x10\\x67\\x10\\x80\\x00\\x47\\x5c\\xe8\\x31\\xbc\\xfe\\x2d\\x0a\\xfe\\x40\\xb7\\x41\\x9d\\x07\\x05\\x9b\\xc0\\xcd\\x8d\\xce\\x4b\\xe9\\x58\\x7f\\xf2\\x9a\\xd8\\xbf\\x0b\\x26\\x8a\\xe2\\x3c\\xe0\\xda\\x5b\\xb5\\xbf\\x74\\xff\\x0b\\x2b\\x31\\xb8\\x21\\x12\\xa9\\xfd\\x5a\\xbd\\x9b\\xfd\\x0a\\x90\\xe6\\xf4\\x72\\x35\\x48\\xc6\\xbb\\x2f\\x99\\xdc\\x06\\x1b\\xa3\\x2e\\xba\\x2d\\x53\\xe6\\xbc\\x79\\xbf\\x44\\x1b\\x23\\xfb\\x74\\x60\\xde\\x04\\xe8\\xe8\\xef\\xbc\\xd4\\xd4\\xcc\\x73\\x55\\xde\\x9e\\x3b\\x08\\x61\\xa6\\x81\\xb9\\x83\\x83\\x9d\\x44\\x88\\xe5\\x51\\x75\\x1f\\x23\\xe9\\xa6\\xe2\\xe4\\xd4\\x43\\x27\\x3b\\x9e\\x0f\\xe6\\x4d\\x8a\\xcd\\x1c\\x74\\x8b\\x55\\x59\\x43\\x82\\x23\\xdd\\x21\\xb5\\x18\\x31\\x89\\xe0\\xf3\\xc0\\xe8\\xed\\x41\\x4c\\x03\\x56\\xba\\xb7\\x7a\\x65\\x4d\\xe1\\xa5\\x77\\x14\\x62\\xef\\x14\\x34\\x49\\x70\\xa4\\x91\\x51\\x1a\\x72\\x29\\x14\\xf4\\xa8\\x9f\\x4f\\x1a\\x82\\x7e\\x18\\xcd\\x84\\x47\\x9c\\xc9\\x25\\x92\\xea\\xdf\\x8d\\xe2\\xdf\\x82\\x4b\\x97\\x6d\\xcb\\xd2\\x84\\xa3\\xba\\x64\\xbc\\xdb\\x0d\\xf1\\x5e\\x8f\\x41\\xc0\\xb2\\x47\\x15\\x86\\xb2\\x6a\\x06\\x35\\x3d\\x90\\x50\\x28\\x23\\x5c\\x1c\\x6e\\x5c\\x45\\x87\\x22\\x27\\x25\\xaf\\x08\\x3e\\x11\\xe7\\x9c\\x94\\x3a\\xa4\\x44\\xd4\\xaa\\x41\\x21\\x8d\\x3e\\x97\\x43\\x36\\xe3\\x72\\x81\\x3e\\x99\\xe2\\xb0\\xc5\\xf0\\xae\\x81\\x0f\\xfe\\xd9\\xa7\\xa3\\xd6\\xcb\\x74\\xc5\\x47\\x3d\\x99\\x0a\\x59\\x11\\x32\\x9b\\x8e\\x82\\xec\\x6b\\xf2\\xbd\\x43\\x21\\xbb\\x48\\x73\\x70\\xf8\\x73\\x9e\\x7a\\x2a\\x4a\\x53\\x43\\x08\\x33\\xd4\\x5b\\x9f\\xe3\\xde\\xb9\\x3f\\x79\\xfc\\x6a\\x51\\xd5\\x63\\x69\\x5e\\xcd\\xb9\\x78\\x58\\xd2\\x13\\xda\\x58\\x44\\x34\\xb7\\xc7\\x15\\x46\\xaa\\xe8\\xd9\\x67\\xe1\\xc6\\xd0\\x08\\x2b\\x10\\xd4\\xa7\\x2d\\xe1\\x74\\x2e\\x53\\xc4\\xb2\\xf9\\x2e\\xb8\\xb5\\xc8\\xc3\\x5a\\xb6\\x53\\x5e\\xa8\\x10\\x0b\\x37\\x92\\x4a\\x0a\\x91\\xd2\\xa7\\x28\\xd0\\xf5\\x64\\x24\\x37\\xaa\\x66\\xc8\\x2a\\xb7\\x4b\\x5d\\x07\\x45\\xec\\x08\\xf7\\x70\\x5c\\xb8\\x1f\\xa0\\x79\\xd8\\x9e\\xcd\\xc9\\xaa\\x1f\\x8d\\x7d\\x82\\xdc\\x77\\x46\\xd3\\x46\\x15\\x34\\x3a\\x69\\x25\\xdc\\x31\\x8f\\x35\\x2a\\x2b\\x45\\x01\\x24\\x38\\x42\\x4f\\x90\\x98\\xfd\\xdf\\x6e\\x61\\xfd\\x1f\\x8f\\xb4\\x9d\\xa4\\x0b\\x3e\\xec\\xe8\\x9a\\x1a\\xf1\\x99\\x6d\\xe7\\x0c\\xd1\\x69\\x6c\\xbf\\xd9\\xe3\\x01\\xea\\x5f\\x44\\x37\\xc7\\x1a\\xc2\\xa0\\x32\\x25\\x4c\\x14\\x0a\\x90\\xe8\\x5f\\xb8\\xff\\xc4\\x66\\x7f\\xa1\\x39\\xc1\\xee\\x9b\\xbf\\x12\\xee\\xd9\\x06\\xa9\\x67\\xbc\\x09\\x21\"},\n{{0x3d,0xcb,0x7a,0xe7,0xd9,0xf0,0xf1,0x41,0xf1,0xd9,0xf0,0x78,0x83,0x63,0x5b,0x91,0x3e,0xd2,0x9f,0xb6,0x1d,0x0f,0x74,0x1c,0x9a,0xfd,0x05,0xa2,0x7b,0x04,0x5b,0x06,},{0xae,0x62,0xb7,0xee,0x1b,0x8d,0xb5,0x76,0x4d,0xaf,0xdd,0xd9,0x72,0x4a,0xcc,0x10,0x6d,0x6c,0x0a,0x4d,0x1e,0x85,0xd8,0x90,0x6f,0x75,0x84,0xb5,0x58,0xf5,0x77,0xdf,},{0x09,0xa1,0xe6,0xfe,0xdf,0x97,0x1b,0x3e,0xdb,0xfa,0xef,0xbe,0xb8,0x9a,0xa5,0x39,0xca,0x0b,0x02,0xb3,0x7e,0x7a,0xc4,0xea,0x89,0x20,0xd6,0xd4,0x34,0x8e,0xe0,0xcf,0x9a,0x2d,0x5e,0x96,0xfc,0xe5,0x17,0xc6,0x65,0xe7,0xc3,0x83,0x68,0xba,0xf2,0x49,0x79,0x24,0x9a,0x95,0xb7,0x0e,0xa7,0x43,0x6c,0x00,0x78,0x5f,0x16,0xa3,0xae,0x09,},\"\\x38\\x11\\x6a\\x57\\x26\\x69\\x07\\x0d\\xd5\\x86\\x32\\x18\\xc9\\x1a\\x77\\xa4\\xab\\x47\\x55\\x36\\x88\\x48\\x8c\\x79\\x28\\x38\\x50\\x9e\\x9a\\xba\\x25\\x06\\x7a\\xdb\\x7e\\xa4\\x24\\x98\\x48\\x00\\x9d\\x91\\x4a\\xe9\\x87\\xa6\\x03\\x23\\x48\\xc1\\xc0\\x68\\x1c\\xf9\\x77\\xa9\\x55\\x2d\\xd6\\xbb\\xf4\\xe6\\xff\\x32\\xac\\xc9\\xfa\\x61\\xcb\\xee\\x25\\xa3\\x93\\x07\\x65\\x0f\\x8b\\xa6\\xa7\\xce\\x42\\x1e\\xf2\\xf7\\x1b\\xcc\\xc0\\x95\\x81\\x38\\xf9\\x32\\x4c\\x86\\xbf\\x2e\\x52\\x8f\\xa3\\xe4\\xd1\\xb1\\x9f\\x9f\\x2c\\xa5\\x26\\x84\\x09\\xb8\\xcc\\x19\\xc6\\x2d\\xd9\\x79\\xb8\\x96\\x97\\xe4\\x57\\xed\\x2d\\x98\\xbd\\x20\\x96\\xf6\\x2d\\x3d\\x9e\\x24\\x73\\x88\\x79\\x59\\x27\\x80\\x3e\\x79\\xab\\x71\\xd4\\xf7\\x2f\\x56\\x8e\\x94\\x5a\\x8a\\x16\\x21\\x59\\xd9\\xb8\\x48\\x36\\xe4\\x58\\x56\\x44\\xd4\\x97\\x9f\\x61\\x4a\\xad\\xa7\\x3a\\xd4\\x13\\xa8\\x33\\x91\\xe9\\xcf\\x88\\x0c\\x42\\xac\\x2a\\x98\\x34\\x3b\\x6a\\x82\\xcd\\x2b\\x61\\x58\\x14\\x56\\xf6\\xde\\x5c\\xeb\\x24\\xfe\\x46\\xb7\\x62\\x5d\\x52\\xab\\x2c\\x2c\\x32\\x4a\\xc7\\x47\\x03\\xd1\\x5e\\x15\\xf1\\xae\\xff\\x80\\x55\\xd2\\xf7\\x39\\xf7\\x36\\x3e\\x16\\xec\\x1d\\x78\\xbe\\x2c\\x62\\x99\\x43\\x6c\\x8c\\x8d\\x33\\x6b\\xd2\\x92\\x71\\xa8\\x97\\xa6\\xec\\x93\\x2e\\xd0\\x87\\x25\\xbe\\x21\\xb2\\x8f\\x9a\\xa1\\x4e\\xaf\\x4f\\x71\\x85\\x31\\x54\\xdb\\x14\\x58\\x7c\\x93\\x0a\\xb3\\xeb\\x02\\x27\\xad\\x7f\\xfb\\x45\\xb3\\xba\\xa6\\xa9\\x99\\x49\\x9c\\xc8\\xa6\\xe4\\x5b\\x1a\\xb4\\xd0\\xb3\\x39\\x78\\x2b\\xcd\\x9c\\xfb\\xcf\\x88\\xcf\\x7e\\xae\\x89\\x1c\\xc8\\x41\\xe9\\xc8\\x8a\\x1f\\x6a\\x69\\x1f\\x39\\x48\\xa6\\xbc\\x85\\xba\\x7f\\x46\\x11\\x64\\x2e\\x84\\x22\\x3c\\x3b\\x17\\x89\\x46\\xdd\\xbe\\xdd\\xcf\\xcd\\xef\\x4a\\xe4\\xc4\\xe1\\xa8\\x14\\xb9\\xb1\\xf0\\x2b\\x1e\\xaa\\x82\\x4d\\xb9\\x3f\\x44\\xb2\\x7d\\x14\\x20\\x6b\\x34\\x04\\x65\\xa1\\xce\\xfc\\xf5\\x35\\xc6\\x3e\\x55\\xc4\\x28\\x72\\x24\\x26\\x27\\x33\\xd9\\x8a\\xaa\\xa1\\x54\\xf3\\xad\\x42\\xcd\\x85\\x46\\xa4\\x61\\xce\\x0d\\x46\\xd8\\x86\\xd3\\x46\\x1a\\x21\\x50\\xcb\\x45\\xdb\\xe5\\x64\\x73\\xff\\x63\\xd3\\xdc\\x7a\\x2b\\x95\\x7b\\x82\\x39\\x69\\xf1\\x9b\\x59\\x68\\xe8\\xb4\\x24\\xc8\\x79\\x74\\x19\\x26\\xd8\\x2c\\x63\\x86\\x75\\x3b\\x0f\\xa1\\xf0\\x80\\x28\\x4e\\x55\\x78\\x94\\x23\\x63\\xaa\\xde\\xb2\\x1f\\x8e\\x1e\\x89\\x09\\xfa\\x6c\\x38\\x07\\x64\\x14\\x9b\\xc9\\x15\\xb2\\x28\\x60\\x4e\\xfc\\x56\\xd9\\x2e\\x4b\\xeb\\x72\\x0e\\xdc\\x74\\xc4\\xd7\\x8f\\x92\\x5d\\x6c\\xfd\\xf7\\xba\\x2f\\x14\\xb5\\x62\\x37\\x75\\x81\\x0d\\x2d\\x07\\xbd\\x38\\x8c\\x57\\x3e\\x36\\x52\\x3f\\x21\\x57\\x38\\xe6\\x91\\x14\\xdc\\xf8\\xd8\\x0f\\x17\\x0b\\xfa\\x67\\x6e\\x31\\xfb\\x62\\x6a\\x7d\\x44\\x9e\\xd9\\x66\\x47\\x36\\x34\\x75\\x97\\x0c\\x8c\\x47\\x80\\x97\\x09\\xbc\\xb5\\xe7\\x20\\x0f\\x2a\\x22\\x7c\\x7c\\x8e\\x7b\\x00\\x0f\\x30\\xc0\\xbd\\xe6\\x1d\\x67\\xbd\\x68\\x95\\x36\\x16\\x29\\xa3\\x6c\\x8f\\xdd\\x5a\\x56\\xb8\\x1e\\xfb\\xac\\xf1\\x5c\\x1b\\x35\\x30\\xa0\\x8c\\xde\\xd5\\xb1\\xfd\\x45\\x7f\\xbd\\x2f\\x03\\x04\\x2f\\x56\\xf1\\xb3\\x7e\\xd1\\x5c\\xdb\\x91\\x2f\\xa0\\x29\\x8c\\x27\\x67\\x25\\x08\\x7e\\xe2\\x7d\\x3c\\xf2\\x55\\x0f\\xe6\\xe8\\xa0\\x33\\x0a\\xf4\\x17\\xf4\\xf5\\xba\\xf0\\x36\\x27\\xed\\x67\\xc5\\xf8\\x32\\x33\\x63\\xab\\xac\\x5a\\x1f\\xe3\\x48\\x23\\x18\\x0e\\x3e\\x0e\\x20\\x80\\xf7\\x5b\\xfd\\x91\\xc2\\x07\\xcf\\x6b\\xaa\\x9a\\x22\\x9c\\xf4\\x43\\xdd\\x44\\x2c\\x59\\x02\\xe0\\x67\\x3f\\x32\\x52\\xb8\\x52\\x63\\x46\\x58\\x58\\x72\\xf6\\xcd\\x36\\x60\\x25\\xa5\\x69\\x92\\xb7\\x0e\\xde\\x39\\xbc\\x8d\\x32\\x2f\\x9c\\x22\\xa1\\xdc\\x59\\x9e\\x9f\\x0d\\x52\\x4c\\xb6\\xd2\\xea\\x5a\\xe2\\x87\\x8e\\xf6\\xbe\\xd4\\xb7\\x02\\x80\\x7f\\x1e\\x1e\\x73\\xeb\\xf2\\x90\\xeb\\x6c\\x0e\\xeb\\x85\\xc1\\x37\\x16\\xf6\\x26\\xaa\\x90\\xd3\\x64\\xb4\\x90\\x48\\x37\\xce\\x05\"},\n{{0x29,0x73,0x11,0xdd,0xef,0xfe,0xc9,0xd2,0xbe,0x68,0xef,0x7b,0x2a,0x20,0xfe,0x2d,0x27,0x7e,0x1d,0x8e,0x51,0x64,0x8b,0x03,0x57,0x2a,0xda,0x27,0xec,0x1f,0x9f,0x43,},{0x6a,0x6c,0x28,0xe7,0x61,0x64,0x0c,0x40,0x08,0x33,0x3a,0xae,0x5a,0x33,0x66,0x30,0x2e,0x2f,0x46,0x77,0xa9,0x53,0xba,0x48,0x2a,0xb6,0xfb,0x4a,0x1d,0x70,0xb4,0x47,},{0x4b,0xf0,0xb9,0x2c,0x6e,0xe4,0xea,0xce,0x5e,0x8e,0xb1,0x03,0x70,0xff,0x9d,0x9c,0x68,0xa5,0x74,0x9d,0x59,0x89,0x9d,0x04,0x32,0x7a,0xaa,0x38,0xf8,0xf8,0x25,0xe0,0x32,0xe5,0x97,0x42,0xb3,0x7d,0xe2,0x31,0x07,0xa3,0xec,0xdd,0x3f,0x7a,0x0d,0x08,0x12,0x26,0x14,0xb7,0x8f,0xdd,0x37,0x29,0x3c,0x8d,0x05,0xe2,0x8f,0x5f,0x71,0x08,},\"\\x26\\x52\\xac\\xfc\\x3b\\xdf\\x09\\xa5\\x99\\xec\\x67\\x86\\xbb\\xd9\\x4f\\xe5\\x77\\xcf\\x57\\x8e\\x02\\x63\\xcc\\x68\\xd9\\xf5\\x7a\\x6c\\x83\\x45\\x8f\\x80\\xac\\xd8\\xa7\\x5e\\xf0\\x30\\x40\\xa6\\x35\\x67\\x2b\\x96\\x8f\\xf2\\xaf\\xdb\\x28\\x8d\\x28\\xb9\\x99\\x6f\\x64\\x15\\xb2\\xf3\\x17\\x5e\\x9e\\xa3\\x7a\\xeb\\x05\\xdf\\x81\\x81\\x2e\\x38\\xa4\\xc9\\x76\\xeb\\x92\\x85\\x6c\\xed\\xb9\\x1a\\x26\\x9a\\x46\\xfc\\xa5\\xdf\\x9b\\xd7\\x30\\xfd\\x84\\x45\\x2b\\x4b\\xd9\\x35\\x77\\xc6\\x1f\\x42\\xc1\\x41\\x13\\x97\\x98\\x82\\xa8\\x6a\\x9f\\xe6\\x32\\xe4\\x75\\x6a\\xfd\\x89\\x81\\x6f\\xc4\\x67\\x0a\\x31\\x05\\x03\\xfd\\xaa\\xd2\\xdb\\x76\\x4c\\x37\\x21\\x21\\x3c\\x3e\\x60\\xf2\\x9c\\x26\\x68\\xd4\\xde\\x8f\\x42\\xb0\\x87\\xf2\\x5c\\xd5\\x6c\\x69\\xa4\\xe4\\x8f\\x13\\x4f\\x55\\x98\\xcf\\x14\\x5b\\xe6\\x38\\xa5\\xc2\\x31\\x88\\x63\\x32\\x90\\x61\\x72\\x9a\\xac\\x91\\xda\\x6a\\x19\\x1f\\xd7\\x74\\x88\\x0c\\xf9\\xcb\\x55\\x5e\\xec\\x15\\xb0\\x04\\x4f\\x10\\xe5\\x43\\x3f\\xb4\\x6a\\x9b\\x88\\x92\\xda\\x8f\\x6d\\x24\\xf1\\x42\\x58\\x8b\\x70\\xff\\x0b\\x49\\x20\\x0c\\x50\\x6b\\x88\\xbe\\xd4\\x49\\xad\\x10\\xd3\\xf9\\x2c\\x2b\\xae\\xda\\x6b\\xbf\\x58\\x67\\x6c\\x5b\\xbc\\x67\\xd3\\x1f\\x64\\xfb\\x12\\xe8\\xd5\\xe7\\x88\\x76\\xd5\\xc8\\x49\\xfc\\x31\\x4b\\x2c\\xf8\\x01\\x0c\\x51\\x02\\x04\\xc8\\x63\\x3d\\x0c\\xc3\\x18\\x56\\xec\\x6a\\x11\\x4e\\xa8\\xa8\\x9c\\x48\\x92\\x7b\\x07\\xa3\\x1a\\xb8\\x42\\xc9\\xb8\\x35\\x2d\\x93\\x67\\x34\\x51\\x41\\xa9\\x9b\\x40\\x04\\x9d\\x5c\\x48\\xe7\\xd2\\x7c\\xab\\x42\\x7a\\xde\\xfd\\x1f\\x0f\\xc1\\x13\\x6b\\x35\\x3c\\xb0\\x1c\\x3d\\xef\\x91\\xff\\xfe\\xe8\\xad\\x91\\xe8\\x8f\\x4b\\xb7\\xd2\\x61\\x5c\\x0d\\xcc\\x95\\x34\\x4c\\xd0\\x19\\x50\\x93\\x8e\\xcb\\x14\\xb8\\x44\\x6b\\x56\\xa0\\x6b\\xf2\\xf2\\xf6\\x5f\\xb8\\x73\\x5e\\x8a\\x7b\\xc9\\x6b\\xb4\\x6c\\xe9\\xca\\xc7\\x1a\\x88\\xeb\\x8f\\xda\\x5e\\x69\\xd6\\x9e\\xb2\\x9a\\xa4\\x2a\\x01\\x6b\\x85\\x83\\x89\\x3e\\x9d\\x72\\x77\\xcb\\x13\\x59\\xc5\\x68\\x7e\\xed\\xcd\\x59\\x9d\\x8a\\x46\\xe6\\xc1\\x49\\x63\\x63\\x7d\\xb0\\x4a\\x92\\x9f\\x4b\\xc7\\x93\\x04\\xac\\x2d\\xae\\x73\\x3b\\x3a\\x83\\x9e\\xb7\\x4f\\xbe\\x3d\\xe5\\x04\\x2f\\xd6\\x55\\xea\\xec\\xb1\\x5f\\x39\\xb2\\xfe\\x16\\xda\\xd8\\xa6\\xff\\x8d\\xbc\\x05\\x4f\\xed\\x51\\x28\\x2a\\x85\\x6e\\x9d\\xa6\\x31\\x6f\\xac\\x6d\\xb5\\xd5\\x6f\\x77\\xf1\\x8d\\xa8\\x41\\x2e\\xb3\\x77\\xe5\\xb1\\xb8\\xf4\\xcb\\x13\\x54\\xec\\xfe\\x8f\\xe8\\xfd\\x54\\xe6\\x2d\\x76\\x7a\\x80\\xde\\x04\\xcb\\x76\\x20\\x22\\x9a\\x88\\x31\\xdb\\xc9\\xec\\xd4\\x57\\x8f\\xfa\\x2f\\xf0\\x6b\\x54\\x45\\xe4\\x40\\xd6\\x9a\\xab\\xc9\\x4c\\x47\\xbd\\x17\\xf2\\x2b\\x69\\xf5\\x2e\\xea\\xe5\\xcf\\xcd\\x01\\xa5\\xca\\xfe\\x05\\x80\\x07\\x2a\\xe9\\x16\\x6b\\x95\\x74\\x3d\\x68\\xc3\\x56\\x4c\\x5a\\x7e\\x46\\xf2\\x4b\\xc4\\x8a\\x89\\x8a\\x1a\\xb2\\xeb\\xe6\\x3f\\x36\\x85\\x1d\\x2a\\xac\\xfa\\x0c\\x4f\\x32\\xd9\\x93\\x77\\x1d\\x31\\x4e\\x72\\x5a\\x43\\xd9\\x80\\x5d\\x13\\x71\\xcf\\x72\\x3e\\xf1\\x61\\xd4\\x2e\\x63\\xff\\xca\\x68\\x8d\\x7f\\x0e\\x21\\xef\\x5b\\x3f\\x9a\\x56\\x1a\\x62\\x10\\x70\\x2b\\x85\\xfb\\xd1\\xf8\\xca\\x75\\x38\\x9c\\xc7\\xa2\\x27\\x39\\xba\\xe4\\xde\\xd9\\x37\\x57\\xf1\\x52\\x0d\\xc3\\x88\\x44\\xa1\\xa8\\x8b\\xe8\\xe0\\x96\\x45\\x05\\x91\\x48\\x80\\x7b\\x93\\x37\\x70\\x87\\x8c\\xb8\\xa9\\xad\\x92\\x11\\x31\\x71\\x31\\xe6\\x93\\x24\\x53\\x2f\\xd0\\x27\\x9b\\x83\\x18\\x5b\\x62\\x8f\\xc2\\xf9\\xe2\\x15\\x00\\x38\\x46\\x93\\xfa\\x29\\xf2\\x6b\\xd1\\xb9\\xc3\\x01\\x60\\x13\\x67\\x66\\x5f\\x05\\xf3\\x72\\xda\\xb4\\xe3\\x10\\x77\\x26\\xcd\\x3f\\x63\\x9c\\xa6\\x2b\\xf6\\x3a\\x75\\xf7\\x7e\\xaa\\x75\\xf7\\x13\\x61\\x57\\xad\\xa2\\x37\\x4e\\x65\\xfb\\x4f\\xd3\\x49\\xb4\\x5e\\x25\\x44\\x1f\\xd2\\x1b\\x13\\xe6\\x91\\x13\\x66\\xb9\\x7c\\xfb\\x4d\\x6a\\xd5\\x22\\xb8\\x50\\xad\\xf4\\x0c\"},\n{{0x4d,0xb2,0xb5,0x81,0x44,0xa8,0xd2,0xd0,0xec,0x03,0xbb,0x9b,0xc2,0x9b,0x4c,0xa8,0x93,0x85,0x4c,0x80,0xb6,0x4a,0xfa,0x4a,0xf7,0xa9,0xc9,0x36,0x93,0x5e,0xcb,0x04,},{0xfc,0x5c,0xd7,0x50,0xe1,0x74,0xed,0x71,0x8b,0xd9,0x38,0xfa,0x8e,0xd9,0x9a,0x1b,0x9d,0x55,0x6b,0xa7,0x67,0x0f,0x2a,0x77,0xda,0xf1,0xc7,0x20,0x11,0x37,0x32,0xa5,},{0x42,0x45,0x17,0xaa,0xdd,0x85,0x3c,0xe3,0x98,0x57,0x59,0xa3,0x27,0xe7,0x76,0x0d,0x91,0x56,0xd3,0xb2,0x73,0x45,0x38,0x3f,0x0e,0x4a,0xd6,0x66,0x1e,0xe4,0xa3,0x72,0x4d,0x18,0xd8,0x20,0xf6,0xc5,0x57,0xf8,0x27,0x97,0xbe,0xb6,0x2d,0x2f,0x08,0x54,0x33,0x74,0x4f,0x89,0xa2,0xd8,0x52,0x93,0x79,0x64,0x81,0x86,0x2e,0xf8,0xa4,0x0f,},\"\\xc8\\xd1\\xdb\\xc9\\x36\\x91\\x1e\\x12\\x2c\\xee\\x18\\xf9\\x2b\\x16\\xa3\\x9a\\x2e\\xef\\x08\\x23\\xb2\\x27\\xf8\\x98\\xcd\\xf5\\x84\\x2b\\x93\\xd5\\x9f\\xc0\\x02\\xed\\xb5\\x49\\x8a\\x20\\x87\\x2e\\x19\\x55\\x4e\\xf7\\x39\\x99\\xeb\\x3a\\x7b\\x3e\\x2f\\xdd\\x90\\x70\\xe1\\xef\\xa9\\x22\\x8e\\x9e\\x93\\xb2\\x9a\\x86\\x8a\\xe3\\x79\\x9e\\x4e\\x57\\x23\\x24\\x83\\x6b\\x1a\\xd5\\xaa\\x81\\x2b\\xf0\\x0f\\x84\\x5b\\xc2\\x17\\xeb\\xbc\\x3f\\xab\\xdc\\x4e\\x1b\\x6e\\x51\\xef\\x9e\\xfa\\xc2\\x77\\x0a\\xa0\\xa4\\xa1\\x1e\\xe5\\x2a\\xb9\\x56\\xac\\x64\\x48\\xaa\\x26\\x29\\xcb\\x61\\xdb\\xb1\\xf1\\xed\\xb3\\xbd\\xe9\\x9b\\x48\\x76\\xda\\x39\\x2a\\x6e\\x0b\\x9a\\x0c\\x31\\x84\\x9a\\x58\\x90\\xae\\xa9\\x52\\x2f\\x56\\xd0\\x15\\xa1\\x93\\x50\\x15\\xb9\\x1b\\xf4\\xc6\\xa0\\x01\\x1d\\x23\\x77\\xd6\\x71\\xc3\\xd0\\xd7\\x53\\xc2\\x7f\\x8c\\x76\\xe4\\x05\\xd0\\x23\\x0f\\x1f\\x4b\\x9b\\x88\\xfc\\xeb\\xba\\x1e\\xaf\\x13\\x77\\x72\\x35\\xe5\\x53\\x24\\xb7\\xd3\\xf8\\x1e\\x68\\x61\\x09\\xd9\\x1c\\xe6\\x89\\x53\\x0b\\x90\\xd2\\xc5\\xc7\\x1d\\xd1\\x87\\x72\\xb3\\x85\\xd6\\x2c\\xcb\\xfd\\x2e\\x08\\x9a\\x1b\\x67\\x09\\x83\\xf6\\x0c\\x21\\xc4\\x45\\x5c\\xb9\\xd1\\xa0\\xdc\\xaa\\x74\\xc8\\x74\\xe3\\x52\\x11\\xf8\\x22\\x7f\\xf7\\xc2\\x34\\xdf\\xf8\\x5e\\xc0\\xb0\\x7e\\x36\\x8c\\xfa\\x50\\xa3\\x43\\x57\\x83\\x95\\xa1\\x4c\\x68\\xf1\\xf8\\x9b\\xd4\\xec\\xbc\\x17\\x2e\\xf8\\x05\\xe5\\x83\\x1e\\xc8\\x94\\x75\\xfc\\xc8\\xd6\\x85\\xca\\x92\\x55\\xa7\\x7e\\x3b\\xa3\\xc1\\x47\\x50\\x8e\\xc9\\x2d\\x7b\\xcc\\xe8\\x79\\xaf\\x0a\\xbd\\xd2\\x41\\x6b\\x67\\xb5\\xf5\\x05\\x07\\x33\\x79\\x14\\xf3\\x90\\xbb\\xe0\\xb4\\x50\\xb6\\xa2\\xf1\\x15\\x93\\x72\\xc4\\xbc\\xce\\xa3\\x82\\xce\\x3d\\x6d\\x9f\\xb2\\x51\\x5e\\xcf\\x79\\x30\\x05\\x9a\\x05\\x52\\xb7\\x5f\\x97\\x88\\x62\\xbf\\x97\\xe8\\x32\\x5a\\xf2\\x4d\\x1b\\x8c\\xe9\\x51\\x2b\\xfc\\x7c\\xef\\x88\\x42\\x32\\x04\\x23\\x41\\xd8\\x2f\\x9b\\x5d\\xad\\x2e\\x50\\x2a\\xc6\\xac\\x79\\x5f\\x99\\xda\\xc7\\xfc\\x60\\xe3\\xb8\\x63\\x9d\\x0e\\x15\\x00\\xde\\xad\\x4e\\x78\\xac\\xa1\\x09\\x95\\x7d\\x57\\x7a\\x13\\xc1\\x92\\x5d\\x74\\x03\\xc1\\xac\\xf9\\x89\\xa9\\xde\\x67\\x11\\xe2\\x3c\\x67\\xbf\\x87\\x22\\xf5\\x51\\xb7\\x74\\xca\\xda\\x93\\x1b\\x5f\\xd9\\x73\\x43\\x4e\\x3b\\x71\\x72\\x81\\x98\\x83\\xe7\\x0c\\x52\\x78\\x5e\\x3b\\x49\\xd3\\x23\\xd0\\x56\\x36\\x64\\x11\\x58\\x64\\x0d\\xcf\\x6a\\x4c\\x20\\x0e\\xb2\\xc1\\x3b\\x1b\\xee\\xb2\\xdc\\x36\\x03\\x52\\x47\\x0d\\x15\\x38\\x6e\\x59\\xe6\\xfa\\x60\\x36\\x7e\\x5e\\x7f\\x17\\x2b\\x21\\x15\\x9d\\x5e\\xe7\\xca\\xb0\\xd7\\xf5\\x86\\x82\\x39\\x85\\x8e\\x2a\\x93\\x55\\x04\\x80\\xfe\\x8f\\xb4\\xdc\\xaf\\x4f\\x22\\x4c\\x4b\\x2a\\xd5\\x44\\x87\\x91\\x63\\x2d\\xf3\\x0e\\x8e\\x5f\\xb9\\x98\\xb3\\x5e\\xa9\\xae\\xc8\\xc9\\x34\\xa4\\x40\\x3a\\xef\\x82\\x18\\x7c\\xa1\\xab\\xf8\\x2a\\x34\\x4d\\x00\\xff\\xb9\\x93\\xd9\\xff\\x34\\x61\\xd6\\xfe\\xcd\\xaf\\x5d\\x3b\\x48\\x1e\\x0d\\x31\\x15\\x3d\\xbf\\x6a\\xed\\x28\\x8c\\x8a\\xdd\\x06\\x4e\\x83\\x31\\x55\\x01\\x41\\xbd\\x5f\\x7a\\x7e\\x04\\x7b\\x86\\x07\\xd8\\x46\\xa6\\xbf\\xb7\\x2d\\x68\\x34\\x46\\xa4\\x45\\x11\\x46\\x06\\x25\\x0d\\x8d\\x2d\\x3a\\x8b\\x95\\x08\\xbb\\x07\\xd4\\x62\\x3c\\xdf\\x17\\x88\\xb5\\x49\\x9e\\x9c\\xb9\\xa1\\x37\\x98\\x49\\xbf\\xa1\\x9c\\x9a\\x9f\\x4c\\xd3\\xd9\\x25\\x3a\\xdf\\xfd\\xa2\\x5f\\x47\\xc8\\x11\\xbe\\x83\\x3b\\x02\\xf3\\x32\\x7e\\xbb\\xa8\\x37\\x30\\x19\\x5d\\x61\\x4b\\xae\\x6f\\xe4\\xe7\\xa3\\x83\\x08\\x15\\xd2\\xaf\\x40\\x0d\\x20\\xa9\\x41\\x7a\\x09\\x5e\\x7e\\x8e\\xea\\x10\\x44\\x91\\x7c\\xbe\\x51\\x2c\\x40\\x18\\xd6\\x56\\xe2\\xdb\\x67\\xbb\\x98\\x9c\\x00\\xe1\\xe5\\x07\\x62\\x3e\\x82\\x78\\xd7\\x29\\x92\\x5b\\x84\\xfb\\x5c\\x18\\x6a\\x7b\\xac\\x18\\x9e\\x6d\\x6a\\xb1\\x4f\\xd7\\xb6\\x2f\\xdc\\x63\\x2b\\xeb\\xb5\\xf7\\x7c\\xb5\\xcc\\x2f\\x70\\x7d\\xf4\\x05\\x30\\x99\"},\n{{0xc8,0x20,0x41,0x3c,0x24,0x56,0x74,0x71,0x04,0x66,0x2e,0xf4,0xdf,0xf3,0xac,0x23,0x3a,0xc4,0xb9,0x1a,0x76,0xd3,0xc4,0xea,0x75,0x44,0x90,0xbc,0x9b,0x1e,0x29,0x1f,},{0x89,0x93,0xce,0xa2,0xf7,0xf2,0x80,0x6c,0x77,0xb3,0x98,0x1b,0x54,0xbf,0xa9,0xbf,0x17,0x62,0x15,0x1b,0x41,0x8e,0x5e,0x72,0x53,0x71,0xca,0x2c,0x04,0xd2,0x23,0xee,},{0x7e,0xf7,0x0e,0x4a,0x14,0x95,0x4d,0x50,0x9f,0x11,0x7f,0x4b,0xd0,0x1b,0x22,0x0b,0xcc,0x19,0x2d,0x3b,0x5f,0xdf,0xc3,0x48,0x2f,0xbb,0xc3,0xb6,0x9d,0xc0,0x68,0xa7,0xc4,0x76,0x1d,0x1b,0xeb,0xc2,0x31,0x7d,0x6d,0xb7,0x4f,0x90,0x6a,0x15,0x56,0x42,0xb0,0xa3,0xc6,0x59,0x2b,0xdc,0x72,0xe6,0x4e,0xac,0x6f,0x20,0x3f,0xb7,0x4e,0x02,},\"\\xd2\\x99\\x2f\\x83\\x92\\x4a\\x59\\x48\\x87\\xe6\\xef\\x13\\xf2\\xae\\x80\\x8f\\xc8\\x63\\x9c\\x7b\\x2c\\x99\\x4f\\xaf\\x0f\\x79\\x5e\\x36\\x01\\x6d\\xab\\x77\\x00\\xa0\\xee\\x53\\x01\\x70\\xf0\\xb9\\xfe\\x98\\xab\\x75\\x88\\xce\\x03\\xbc\\x50\\xc2\\xba\\xe6\\x5e\\x05\\x26\\x47\\xe7\\x56\\x73\\x5b\\x35\\xd0\\xb5\\x9c\\x96\\x4e\\x91\\x7d\\x8c\\x83\\xe2\\xf9\\xfe\\xcc\\x4c\\xb0\\x55\\x64\\x28\\x7f\\x0e\\x34\\xc9\\x49\\x40\\x05\\xe2\\x5b\\x1a\\x8b\\x1b\\x94\\x2b\\x54\\xd8\\x90\\x35\\xf1\\xb1\\xc3\\xc9\\x45\\xfc\\xc8\\x4e\\x4a\\x39\\xef\\xa2\\xca\\x50\\x95\\x9b\\x45\\x9a\\xf7\\x4d\\x21\\xb6\\x24\\x2e\\x2f\\x56\\x51\\x8f\\x70\\xe8\\x67\\x92\\x57\\xc0\\x89\\xd2\\x6c\\x3b\\xb7\\x92\\x68\\x7c\\x92\\x33\\x55\\xb2\\xc1\\x8e\\xe2\\x13\\x6d\\x40\\xcb\\xa4\\x5a\\xcb\\x64\\x24\\x0d\\x96\\x67\\xf3\\x9d\\xba\\x36\\x39\\xb6\\x51\\x6d\\x4c\\x49\\x47\\x57\\x3e\\xf4\\xce\\xd8\\x76\\xb5\\xb2\\xea\\x34\\x89\\xea\\xea\\x53\\x9f\\x55\\x7f\\x58\\xda\\x20\\x46\\x91\\xa7\\x6e\\x29\\xc9\\x4b\\x8b\\x05\\x38\\x23\\x2c\\x5f\\x7d\\x0b\\xb0\\xfd\\xd0\\x16\\x91\\x04\\x31\\x35\\x4b\\x3e\\x1e\\x7c\\xe6\\x2a\\xd4\\x36\\x91\\x7c\\xd5\\xc3\\x15\\xa5\\xbe\\x9b\\x97\\x1c\\x80\\xf9\\x7b\\xc9\\xd5\\xc1\\x56\\xff\\xd6\\x4f\\xd4\\xe3\\x1d\\xa5\\x60\\x83\\xe0\\x2a\\x0c\\x8f\\xce\\x55\\x4d\\xb6\\x86\\x74\\xcb\\x62\\x70\\x0b\\xa9\\x51\\x75\\x2b\\x82\\x9b\\x03\\xc5\\x42\\x32\\x74\\x12\\xee\\xc9\\xcc\\xc6\\xa5\\x0a\\xdf\\x47\\xbb\\xee\\x15\\x44\\x66\\x82\\xda\\x2f\\xea\\x42\\x04\\x89\\x36\\xd7\\x63\\x06\\x0c\\xd8\\xf5\\x39\\x65\\x26\\x16\\xdf\\xa8\\x08\\xd6\\x23\\xff\\x77\\x7b\\x41\\x13\\x65\\x2e\\x78\\x9e\\xc0\\x25\\xb8\\x5e\\x04\\xef\\xe8\\xad\\x4c\\x96\\x0b\\x19\\x0b\\xf4\\xa5\\xa6\\x32\\x4d\\x6f\\x57\\xc1\\xad\\x22\\x01\\x8c\\x83\\xcd\\x7e\\x7e\\x09\\x7f\\xc6\\x7b\\x80\\x26\\x9c\\x13\\xb4\\xdd\\x97\\x01\\xca\\x98\\xf9\\x87\\x69\\x58\\xba\\x76\\x89\\xc6\\xf6\\xf1\\x0a\\x73\\x2a\\x64\\xbe\\xf2\\x2e\\x8b\\x98\\xbd\\x30\\x4d\\x5d\\xbf\\x4f\\xb1\\xf9\\xe4\\xca\\x53\\x9a\\x5c\\x4a\\xa6\\x19\\xc4\\x4d\\x6f\\x58\\xf8\\x24\\xb2\\xdb\\xae\\x77\\xb7\\xe8\\x3b\\x56\\xdb\\x5e\\x5a\\xa7\\xb0\\xae\\x9c\\xe1\\xcd\\x10\\xa6\\x9f\\x04\\xa8\\x0f\\x13\\x79\\xeb\\x0c\\x47\\x4e\\x47\\x82\\xdf\\x0e\\x3b\\xa6\\xa1\\x48\\x22\\x6b\\xd1\\xa6\\x62\\xd9\\x5e\\xe2\\xd6\\x7c\\x52\\x07\\x33\\x3c\\xb1\\xd5\\x41\\x76\\xd9\\xe5\\x06\\x45\\x94\\x79\\x02\\x9f\\x31\\xdc\\xac\\xe2\\x69\\x93\\x8f\\x6b\\xc5\\x62\\x78\\x78\\x41\\xdc\\xfe\\x10\\x1f\\x4d\\xb6\\x0b\\xd6\\x60\\x16\\xe1\\xee\\xbb\\x6b\\xfb\\xd9\\xcd\\x83\\x04\\x2d\\xd1\\x37\\x9a\\x46\\x4f\\x40\\x5a\\xaa\\xe3\\xc1\\x18\\x07\\x84\\x8c\\xc4\\xf9\\x5c\\x3c\\xc6\\xfa\\x92\\xab\\x4e\\xa5\\x30\\x58\\x34\\xeb\\x86\\xb8\\x73\\xfa\\x30\\xed\\x1f\\x7f\\x47\\x0b\\xf6\\x63\\xf1\\xa7\\x0c\\xf9\\xe6\\x0a\\xb6\\x80\\xcd\\x1d\\xbb\\xd0\\x3a\\xc0\\x43\\x3b\\x3d\\x4b\\xb4\\x82\\xf8\\xb3\\x44\\xd4\\x6b\\x3a\\xa9\\x34\\xb8\\x63\\x3f\\x57\\x09\\x0b\\xea\\x5f\\xcc\\xca\\x64\\x88\\x79\\x98\\x35\\xf1\\x33\\xf8\\xbc\\xf6\\xe8\\x87\\xca\\x59\\xd1\\x90\\x76\\xd6\\xca\\x19\\xd4\\xe2\\x83\\x49\\x05\\x1e\\x01\\x6b\\x03\\xe9\\xa9\\x20\\xf4\\x12\\x0f\\xb5\\x23\\xd1\\x37\\x1d\\x0e\\x38\\x46\\x73\\x19\\x54\\x3f\\x12\\x7e\\xd9\\x14\\xb4\\x3a\\xd0\\x62\\x22\\x6a\\x53\\x65\\x82\\xdb\\x72\\x8c\\xcd\\x76\\xe9\\x83\\xf1\\x17\\x66\\xa8\\x86\\x3c\\x2f\\x42\\x4f\\x65\\x50\\x8d\\xcb\\x26\\xfe\\x0c\\x5a\\x80\\x0c\\x35\\x09\\x39\\x60\\xa1\\x21\\x97\\x6e\\x30\\x51\\xe2\\xef\\x1a\\x2a\\x99\\xc1\\x2f\\xb7\\xbd\\x8b\\xc0\\x37\\xa4\\x39\\x68\\x68\\x06\\xeb\\x72\\x01\\x7a\\x07\\x1a\\x91\\xb3\\xe3\\x9c\\x90\\xe8\\x6b\\xc3\\x35\\xf9\\xbb\\x54\\x3b\\x12\\x7c\\x98\\x86\\x73\\x8c\\xb5\\x38\\x06\\xb9\\xcb\\x3c\\x25\\x94\\xc7\\xef\\xfc\\x2a\\x59\\x20\\xaa\\x83\\x4b\\xe6\\x5c\\x49\\xf4\\x79\\x64\\xe8\\x9e\\xec\\x74\\x72\\x8d\\xe7\\x71\\xf3\\xd6\\x75\\xde\\x9d\\x1e\"},\n{{0x67,0x69,0xcc,0x8e,0x12,0x56,0x17,0xc2,0x2c,0xe5,0x72,0x37,0xa4,0xfc,0xa1,0x50,0x7f,0x94,0x12,0x34,0x66,0x1d,0xf7,0x43,0x28,0xd0,0x4a,0xb6,0x2e,0xf8,0x6c,0x47,},{0x05,0x11,0x2c,0xa6,0x0b,0xaf,0xf7,0x9b,0x49,0x16,0xc1,0xbe,0xe2,0xb9,0x39,0x0c,0x04,0x7a,0xf0,0x8c,0x35,0xeb,0xb3,0xc3,0x81,0xb9,0x74,0x8d,0x1d,0xd4,0xc4,0xfd,},{0xd3,0x9d,0x85,0x3d,0x2c,0x2c,0x5d,0x21,0xb5,0x87,0x1e,0xa5,0xa7,0x5c,0x04,0x10,0x48,0xd9,0x3a,0x47,0xdc,0x59,0x9a,0x5f,0xdd,0xc0,0x85,0x62,0x85,0xce,0x63,0x6f,0xcd,0xfd,0x85,0x64,0x08,0x3d,0x06,0xff,0x28,0x4a,0x52,0x4b,0xc6,0x33,0xcf,0xdf,0xc3,0xb0,0x37,0x16,0x3d,0x67,0x4c,0xb9,0xbb,0x5b,0xa3,0xbc,0x25,0xbe,0xd0,0x0e,},\"\\x68\\x54\\x89\\x73\\x9b\\x98\\x56\\x47\\x49\\x58\\x7f\\xf1\\xac\\x96\\xba\\x68\\x2d\\xa3\\x0b\\x40\\xa4\\xde\\x24\\xf5\\x4e\\xc8\\xb0\\x83\\xdd\\xa4\\x53\\x33\\x16\\x21\\x67\\xcb\\x3f\\x97\\xb2\\xc7\\x31\\x4c\\xe7\\xa3\\xf3\\xf3\\xd3\\x19\\xcc\\xc3\\x5b\\xb6\\xa9\\xf0\\x07\\x7d\\x56\\x31\\x61\\xe2\\x81\\x46\\x9c\\xf0\\x89\\x68\\xd9\\xdc\\xf7\\xae\\x5f\\xff\\x83\\x0a\\x5d\\xb0\\x0b\\xc3\\x80\\x10\\xe6\\x66\\x2d\\x49\\x4f\\x3c\\x86\\x47\\xc4\\xf7\\x0c\\xe2\\xd2\\x9a\\x9d\\xa8\\x46\\x10\\xa0\\x80\\xb5\\x75\\x9a\\x3b\\x58\\x20\\x52\\xdf\\xde\\x66\\xe4\\xa7\\xfa\\x5f\\xb2\\x7f\\x06\\x50\\x73\\xfe\\x72\\x3d\\x83\\x70\\x1d\\x5b\\xac\\x06\\xca\\x43\\xb4\\x6d\\x1e\\x58\\x09\\x76\\x70\\xc1\\x94\\xa1\\x3a\\xf8\\xb5\\x73\\xa3\\x79\\x1a\\x96\\x61\\x55\\x7c\\xbc\\x04\\x27\\x57\\xab\\x8a\\xdd\\x0e\\xf7\\xcf\\x4f\\x35\\x43\\x5a\\x42\\x12\\x35\\x3f\\xcb\\x3c\\x20\\x3c\\x73\\xdb\\xc9\\xd2\\x68\\x52\\xd0\\xe9\\x17\\x32\\xe3\\x62\\x1c\\xe8\\x28\\x92\\x9c\\xdc\\xa4\\xd9\\x19\\x20\\x48\\x75\\x19\\x22\\xed\\x22\\x5e\\xab\\x29\\x00\\xcf\\xf9\\x71\\xa2\\xa2\\xd3\\x42\\x46\\x36\\x48\\xbb\\xb1\\x94\\x43\\x19\\xa8\\xef\\x6d\\x43\\xdb\\x62\\x48\\x0f\\xbf\\x1d\\x72\\x57\\xd2\\x26\\x94\\x53\\x97\\x93\\xf2\\x5c\\x92\\x79\\x17\\xca\\xab\\x25\\xc1\\x19\\x3a\\x2d\\x2b\\x23\\xbb\\x5c\\xb8\\x56\\x9a\\xef\\xff\\x4f\\x0c\\xa4\\x23\\xd1\\x9b\\xbd\\x46\\xfc\\x5e\\xf7\\x52\\x4f\\xf8\\xcb\\x70\\x6f\\xfc\\x47\\x07\\x65\\x09\\xc0\\x5a\\x81\\x58\\xaf\\x77\\xf9\\x8d\\xf6\\xa9\\xb5\\xcb\\x32\\x44\\xab\\xa4\\xb5\\xc5\\xf9\\xce\\x59\\x7e\\x7d\\x29\\xba\\x07\\x01\\x3d\\xca\\xc1\\x91\\x1b\\x6d\\xe7\\x11\\x3c\\x73\\x6a\\x40\\x05\\xc4\\x59\\x99\\x29\\x79\\x01\\x9a\\x45\\xb2\\xdd\\x80\\x2a\\x07\\x66\\x09\\x09\\xeb\\x4c\\xe2\\x05\\x40\\x81\\x70\\xd8\\x25\\x45\\xda\\xcb\\xa8\\x68\\x6d\\xbd\\xe9\\x27\\xdb\\xc9\\xc7\\xd9\\x62\\x05\\x8e\\x9a\\x95\\xea\\x66\\xb8\\xdf\\xd3\\xea\\x43\\x53\\x57\\xa9\\x3c\\x73\\x94\\x8c\\xd3\\x55\\xf6\\xac\\x65\\x52\\x32\\x3f\\x17\\xc2\\xa6\\x78\\x66\\x2b\\xc0\\xe9\\x72\\x6a\\xd5\\xa5\\x25\\x1d\\xd2\\x76\\x47\\x40\\x4c\\xbf\\xe6\\x1c\\xea\\xaf\\xdc\\xfc\\x08\\xa4\\x75\\xff\\xd8\\x7c\\xb7\\xf5\\x97\\xe5\\x6a\\xc1\\x67\\x04\\x09\\xdd\\x94\\x08\\xae\\x47\\x70\\x42\\x0c\\x6e\\x5e\\x6d\\xd8\\xe7\\x48\\xfe\\x03\\xa7\\x2d\\xc1\\x28\\x03\\xd0\\x27\\x71\\xd9\\x2f\\x47\\xe6\\xe7\\x17\\xcc\\xc1\\x44\\xfc\\x03\\x72\\x75\\xb6\\xf7\\x45\\xdd\\x30\\xda\\x1a\\x45\\xd2\\x9d\\xb6\\xd9\\x07\\x3e\\xee\\x50\\x09\\xcf\\xd5\\x46\\x27\\x33\\x41\\x4a\\x49\\x5f\\x34\\x9d\\xb0\\xb6\\xdb\\xf2\\xce\\xa9\\xcc\\xd5\\x72\\x38\\xed\\x5e\\xe9\\x1a\\xd8\\xbc\\x86\\x17\\x9a\\xd5\\x69\\x5a\\x85\\xa5\\x04\\x84\\xe6\\x17\\x75\\x1d\\xe5\\xef\\x7a\\x7d\\x8a\\x8d\\xb9\\x50\\xa9\\x8a\\x6b\\x7f\\x7d\\xee\\x9d\\x42\\xa5\\xdf\\x69\\x2f\\xcc\\xf5\\x55\\xc9\\x40\\xdc\\x39\\xcf\\x2e\\xac\\x48\\xcb\\x9d\\x15\\xcd\\xa1\\x4d\\xd2\\xa7\\xec\\xc0\\xb7\\x6e\\xbe\\xc6\\x8a\\xd4\\x17\\x7d\\x11\\x17\\xe0\\x77\\x66\\xc4\\x85\\x90\\xd4\\x3c\\xa7\\x66\\x28\\x68\\xeb\\x97\\x90\\xac\\x29\\xf4\\xf2\\x39\\x2b\\x9a\\x93\\xf8\\x97\\x59\\xe7\\xba\\x54\\x6b\\x92\\x5b\\xd8\\x6f\\x80\\x7d\\x8d\\x16\\xc7\\xe6\\x37\\xdc\\xc6\\x66\\xe9\\x05\\x90\\xbf\\x43\\x0d\\x98\\x6a\\x67\\xf1\\xb0\\xc7\\xc2\\xc9\\x49\\x30\\x84\\x58\\x69\\xed\\x8d\\x8a\\xdd\\xe1\\x8f\\xc1\\x88\\x74\\x56\\x88\\x1b\\x4b\\x26\\xb5\\x3d\\xcb\\xa7\\xa5\\x26\\xf0\\xec\\xa1\\x4e\\x8b\\xb6\\x89\\xd6\\x6f\\x0a\\xa1\\xb2\\x53\\xc3\\xdc\\xfc\\xf5\\x95\\x40\\xd5\\xd2\\xf5\\xad\\x61\\x7f\\x52\\xc3\\x09\\x38\\xa5\\xa9\\x2e\\xa3\\x85\\x07\\x7d\\x75\\xaa\\x4a\\xc0\\x7a\\xfc\\x2b\\x35\\xfb\\x8c\\x1d\\x5e\\x78\\xeb\\x29\\x5f\\xc2\\x0f\\xe3\\x7c\\x41\\xac\\x06\\x95\\x9d\\x3a\\x17\\x97\\x84\\x3a\\xd7\\x05\\x6c\\x1b\\x41\\x2d\\xd0\\xb4\\x80\\xaa\\x3b\\x39\\xbc\\xc2\\x05\\x87\\xd9\\xa0\\xfe\\xf9\\x2c\\x6c\\x95\\x0e\\xbc\\x5b\\xb8\\xe1\\x42\"},\n{{0x1d,0xf7,0xac,0xfb,0x96,0x33,0x04,0xe5,0x1e,0xc4,0x71,0xca,0xf1,0x81,0x10,0x25,0x56,0x78,0x3c,0xb7,0xd9,0x1e,0xad,0x30,0xbd,0xc2,0x53,0x4d,0x07,0x8a,0x14,0x88,},{0x05,0xa3,0x1f,0xfc,0x70,0xe4,0xe3,0x56,0x9f,0xc2,0xbe,0x11,0x0c,0x64,0x3a,0xd5,0xf0,0x87,0x91,0x3c,0x7a,0xa4,0x76,0xdc,0xd8,0xd6,0xe4,0xbc,0x7e,0xc2,0x2d,0x24,},{0xb1,0x81,0x93,0x8d,0xe1,0x01,0x42,0xf3,0x24,0x07,0xb4,0xe7,0x86,0xcd,0xdd,0xe9,0x32,0xeb,0x11,0xdb,0xc0,0xbf,0x0e,0x5a,0xc5,0x09,0xfa,0xe7,0xa5,0xbc,0xc3,0x29,0x61,0xfe,0x34,0x48,0xf9,0x12,0xc8,0x50,0x0f,0xc6,0xdb,0x4e,0x1d,0x32,0x62,0xa8,0x3c,0x9d,0xbe,0x76,0x9b,0xb8,0xc3,0xa7,0x61,0x00,0x0f,0xe3,0x6c,0x0d,0x71,0x04,},\"\\xb0\\xc3\\xee\\xb5\\x7f\\x14\\x60\\x6a\\xb7\\xab\\xea\\xb2\\xee\\x05\\x73\\x84\\x3c\\xa2\\x2e\\x6d\\xb2\\xfd\\xf2\\xc9\\x06\\x4c\\xea\\x51\\x98\\xdc\\x58\\x30\\xeb\\x15\\x8d\\xa8\\xe2\\xda\\xa8\\x88\\x57\\xaf\\x8b\\x8e\\xef\\xcc\\xf0\\xc2\\x6c\\x3e\\xc0\\xf3\\x30\\xe9\\x2c\\xff\\x06\\xbc\\x05\\xa2\\x9b\\xfc\\x99\\xf9\\x40\\xb6\\x1f\\x3c\\xfb\\x29\\x64\\xb3\\x37\\x09\\x7a\\x65\\x50\\xa3\\xe9\\xa3\\x28\\xc8\\x5b\\xe6\\xf1\\x60\\xd2\\xc0\\xa5\\x7f\\xf6\\xf1\\xb3\\xc5\\xff\\xcc\\xa8\\x90\\x89\\x42\\x5a\\xb6\\xbe\\x01\\x72\\xe1\\x75\\xba\\xf4\\x0c\\xf1\\x2b\\x24\\xa8\\x15\\xf7\\x0f\\x29\\xa3\\xa4\\xcd\\x0a\\x6a\\x13\\x2f\\x12\\x00\\x97\\x75\\x2f\\x4b\\xc7\\x43\\xed\\xe0\\x8f\\x5f\\x21\\xd4\\x2f\\x28\\x2f\\x76\\x71\\xf7\\x78\\x3e\\x27\\xb2\\xa8\\xe2\\xc1\\x46\\x92\\xf1\\xe0\\xe5\\xde\\x82\\x85\\x5d\\xab\\xf9\\x8a\\x1a\\x63\\x97\\x60\\x06\\xff\\xbf\\xe5\\xf5\\xa5\\x79\\xb4\\x60\\xe2\\x6d\\x06\\xbd\\x54\\x28\\x42\\xa5\\xf9\\x26\\x1b\\xbf\\x26\\x04\\x51\\xd2\\x32\\x1c\\x50\\x89\\x32\\x01\\x3c\\xc6\\xe9\\x04\\xf7\\x9b\\x5e\\x46\\x86\\xd0\\x33\\xe1\\x2c\\x7b\\xbd\\x7e\\xb1\\xc9\\x23\\x79\\xc5\\xec\\x34\\x1b\\xf6\\x45\\x7a\\x3f\\x17\\x26\\x4a\\x7c\\x27\\x8b\\x27\\x50\\x1e\\xca\\xed\\xc3\\x61\\xeb\\xa8\\x44\\x44\\x23\\x42\\xb4\\xb1\\x0f\\xa9\\x4d\\x26\\x58\\x65\\x11\\x6a\\xcf\\x43\\xfc\\xbe\\xc9\\x65\\xd2\\xab\\x4b\\xbb\\xe6\\x14\\xc4\\xf9\\x0a\\xb6\\xb3\\xe0\\xd5\\x38\\x3f\\xa0\\x49\\x88\\xbf\\xbb\\x26\\x03\\x07\\xdd\\xe2\\x2d\\x84\\x09\\x8b\\x63\\x31\\xd1\\x55\\x14\\x1a\\x92\\x7b\\xb7\\x8d\\x66\\x4b\\x34\\x1d\\x2f\\x2a\\x93\\xe2\\x91\\xcf\\x79\\xba\\xae\\xcd\\x26\\x12\\xf6\\xb1\\x04\\xf3\\xfc\\x81\\x37\\x3a\\x7c\\x6a\\x04\\x5b\\x59\\x24\\xbf\\x95\\x0c\\xd5\\x42\\xf7\\xb7\\xac\\xce\\xf3\\xaa\\x7d\\x72\\x5d\\xe0\\x53\\x05\\x5d\\x95\\x1b\\xd7\\x68\\x11\\x13\\x92\\x59\\x66\\x38\\xae\\x09\\x71\\x70\\xf4\\x49\\x2b\\xa5\\x0a\\x46\\x8f\\x8e\\x34\\x77\\x63\\xdb\\x61\\x2d\\x3c\\x7d\\xe7\\xe5\\x64\\x59\\xb2\\x6e\\xe0\\x29\\xc6\\x30\\x82\\x7a\\x35\\x3a\\xee\\x73\\xde\\x68\\xd6\\xd7\\x2b\\x27\\xaf\\xd7\\x5d\\x22\\x16\\x45\\x27\\x94\\x5c\\x72\\x26\\x84\\x4f\\xab\\x15\\xb8\\xdc\\xc9\\x14\\x34\\x9e\\x31\\x41\\xc6\\x13\\x16\\xad\\xc8\\x94\\xde\\xdc\\xdc\\x84\\x39\\x84\\xd9\\xc7\\xfe\\xae\\x39\\xdb\\x33\\x2d\\xc3\\x93\\xe9\\xe8\\x96\\x1b\\xbd\\xe0\\x71\\xc3\\xd2\\x85\\x8b\\x3c\\xb5\\xf3\\x3b\\x16\\x4a\\x15\\x61\\x6c\\x6f\\xe1\\xbb\\xc2\\x4a\\x35\\xf2\\x13\\x36\\xd2\\x61\\xc5\\xd8\\xcf\\x75\\x9e\\x27\\xe2\\x2c\\x91\\x01\\xc4\\xae\\xbd\\xe3\\xe1\\x26\\xcf\\x64\\x6c\\xa7\\xb2\\xe0\\x31\\x28\\x09\\x5c\\x59\\x76\\xbf\\x3f\\x6e\\x49\\x1a\\xf0\\xf0\\xb6\\x40\\xc7\\x31\\x09\\x66\\xac\\x59\\xc5\\x9f\\xbc\\x5b\\xfe\\x05\\x48\\xf8\\x8e\\xe6\\x1a\\xd9\\xec\\x40\\xc1\\xc0\\x6d\\xd2\\x9d\\x79\\x4c\\x44\\xa3\\xea\\x22\\xc3\\xd4\\x76\\x26\\x22\\xec\\x1e\\x8b\\x33\\x3e\\x45\\x07\\x4d\\xb9\\x37\\x41\\xfd\\xa1\\x93\\xc9\\x11\\xf6\\xdb\\x58\\x79\\xe5\\x5e\\xe3\\x6e\\xf6\\x02\\x61\\x4a\\xe6\\x4a\\x5c\\xde\\x9d\\x83\\x06\\xd2\\x2f\\xbc\\x4a\\xe9\\xc8\\x81\\xa5\\x94\\xbd\\xe6\\x79\\x61\\x25\\xfc\\xb6\\x28\\xb9\\xf3\\xb6\\xfb\\x3f\\xfd\\x51\\x1b\\x35\\x3f\\x14\\x6a\\x27\\x27\\x2a\\xfd\\x3e\\x5d\\x28\\xb7\\x7f\\x58\\xa6\\x7f\\x1f\\xd2\\x72\\x85\\xc2\\x5e\\xcc\\x1c\\xcf\\x64\\xe3\\x8d\\x21\\xf3\\xb9\\xff\\x22\\xe0\\x0e\\xe9\\x00\\x62\\x9e\\xf1\\xa6\\x3e\\x71\\x3f\\x25\\x88\\x83\\xdd\\x91\\x1f\\x30\\xc0\\xd3\\x98\\xb7\\x4b\\xd7\\x97\\x14\\x9b\\xe5\\xe2\\x69\\x67\\x22\\xda\\x09\\xd5\\x2d\\x4e\\xbf\\x3c\\x67\\x39\\x29\\xd2\\x98\\xaa\\xc3\\x4c\\xe0\\x5b\\xea\\x08\\xea\\x9a\\x42\\x4e\\x93\\x45\\x9c\\x2e\\xb8\\xfc\\x22\\x22\\xc3\\x1c\\xc1\\x3d\\x80\\x3b\\x90\\xa8\\xa7\\x0b\\xcd\\x0a\\x30\\xc2\\x09\\x21\\x1d\\xc2\\xcc\\xc8\\x5b\\x0b\\xcd\\x45\\x82\\xc6\\x95\\xf5\\x8d\\x80\\xbf\\x6e\\xc4\\x71\\xa2\\x50\\x5f\\x68\\x84\\x7a\\x75\\xf6\\xe9\\x11\\xfd\\x87\"},\n{{0x7e,0xd8,0x7c,0x36,0xdf,0xdb,0xae,0x60,0xc9,0x40,0xa3,0xb3,0x25,0xc1,0x9f,0xde,0xd8,0x14,0xd7,0x6a,0x54,0x48,0x20,0xa3,0x2f,0x28,0x6a,0x5c,0x0a,0xd7,0x1d,0x72,},{0x3c,0x4a,0xc5,0x10,0xb3,0x62,0x22,0xc2,0x52,0xa2,0xdc,0x1a,0xfc,0xb4,0x0f,0xb0,0xeb,0x85,0xbc,0xa9,0x03,0x91,0x19,0x6a,0x58,0x83,0xaa,0x2c,0xc9,0x12,0xb2,0xdf,},{0x57,0x9b,0x38,0x12,0x4b,0xd0,0x59,0x1a,0x59,0x7c,0xc9,0xa3,0x89,0x12,0x7c,0xea,0xf5,0x51,0x56,0x07,0x73,0x63,0xed,0xb8,0x11,0xd0,0xb6,0x55,0x52,0xac,0xfc,0xc6,0x77,0xb2,0x72,0x94,0x21,0x99,0xca,0x25,0xab,0x79,0x0d,0xe6,0xe0,0x84,0x60,0x3a,0xd1,0x05,0x2e,0xc2,0x10,0xcf,0x6f,0xcb,0x14,0x17,0x28,0x90,0x67,0xce,0x3c,0x08,},\"\\x62\\xd3\\x13\\x91\\x2a\\xbb\\xb0\\x06\\xb7\\x77\\x4a\\x67\\x37\\x71\\x4a\\x34\\x99\\x70\\xce\\x04\\x21\\x11\\x2f\\x40\\x04\\x63\\xd3\\xdb\\x0e\\x2f\\x7f\\x12\\x8d\\x7b\\x96\\x93\\x9f\\x43\\xc1\\xe7\\x10\\x7b\\x51\\x18\\xa7\\x7c\\x11\\x96\\x83\\xd8\\x66\\xb7\\xe3\\xd7\\x2a\\xc2\\x1f\\x6b\\x42\\x72\\xb4\\xbe\\x92\\x89\\xb6\\x55\\x6f\\xe3\\x1b\\x60\\x51\\xa0\\xb4\\x2e\\xd5\\xea\\x0c\\xf3\\x47\\x69\\x6d\\x30\\xfb\\x8b\\xff\\x6b\\x8b\\x57\\x27\\x19\\xde\\x19\\xa2\\x31\\xcc\\x85\\x45\\x9a\\x99\\x0c\\x37\\x80\\x1f\\x08\\x37\\x18\\x6c\\xef\\xbb\\x55\\x21\\x56\\x96\\x66\\x96\\x7c\\xd4\\x24\\x3d\\x73\\x07\\xf1\\xb0\\xb2\\x4c\\x8e\\x2b\\x9b\\x69\\x23\\x17\\x30\\x4f\\xbe\\x3d\\xd0\\xa2\\x63\\x65\\x01\\x91\\xb3\\x52\\x16\\xf5\\x29\\x16\\x57\\x3a\\xf9\\x05\\x24\\xf9\\x1d\\xb1\\xa9\\x24\\x71\\xd7\\x58\\xc9\\x2d\\xc6\\xd1\\x4d\\x1a\\x4b\\x26\\xf4\\x1b\\x40\\x40\\x3c\\xa8\\x7d\\xcf\\xab\\xdc\\xa4\\x7b\\x9f\\xc2\\x53\\x35\\x78\\xf1\\x61\\xf3\\xb0\\x19\\x9b\\x5c\\x69\\x8e\\x08\\x07\\x04\\xb2\\x1c\\x9e\\x61\\x52\\x69\\xfc\\xd0\\xd4\\x04\\x39\\xed\\x8b\\xc3\\xbd\\xfb\\xc9\\xaf\\xb4\\x4c\\x11\\xfa\\x89\\x27\\x5f\\x0e\\xaa\\xa5\\xd0\\x8f\\xa9\\x59\\xd6\\x37\\x8d\\x0d\\xb8\\x99\\x10\\xd4\\x8f\\x2d\\x86\\xa1\\xeb\\xfc\\x5c\\xbf\\x10\\xeb\\x2d\\x5a\\xad\\xf5\\x1b\\xbd\\x83\\x44\\xff\\x8b\\xbb\\x5b\\x8a\\xfe\\x05\\xa4\\x50\\x11\\xb5\\xe4\\xb7\\x2e\\xb8\\x64\\xad\\x26\\x3e\\x8a\\x03\\xa6\\xc7\\xf9\\x8a\\xee\\xb3\\x54\\xf7\\x30\\xa3\\x18\\xaa\\x30\\xfb\\x56\\xd3\\x3d\\x80\\x74\\x8c\\x98\\xeb\\xec\\x15\\x87\\x8c\\xcf\\x3c\\xe8\\x22\\xf6\\x9d\\x34\\x56\\x84\\x3c\\x40\\x0d\\xc5\\x6b\\x48\\x1a\\x95\\xe6\\x88\\xb8\\xa4\\x73\\x5b\\xf3\\x84\\x3f\\x58\\x33\\xdd\\xa0\\xef\\xe0\\x9e\\x71\\x75\\xb5\\x67\\xc6\\x61\\x38\\x7a\\xfd\\x2e\\xbc\\x07\\x9a\\x48\\xe3\\x49\\x67\\xec\\x97\\xb9\\x27\\xdf\\xa5\\x81\\x88\\x8f\\x23\\x1a\\x98\\xa7\\xed\\x33\\x10\\x3b\\xfa\\x8e\\x8f\\x9b\\xa6\\x51\\x35\\x27\\x90\\x0b\\x39\\xb8\\x62\\x31\\xda\\x79\\x11\\xa2\\xfc\\x93\\x58\\x88\\xa7\\x5f\\x11\\x29\\x58\\x4a\\xff\\xf2\\x02\\x52\\x49\\xc4\\x18\\x8f\\x09\\x05\\x2f\\x85\\x68\\x77\\x06\\xd0\\x5e\\x29\\x91\\x44\\xd4\\x0d\\xe8\\x89\\x8b\\x7c\\x8b\\x2d\\xfe\\xf0\\xc3\\x70\\x85\\x73\\xd8\\xb0\\x56\\x3a\\x6b\\xd0\\xa5\\x04\\xc0\\xb6\\x74\\x57\\x02\\xb1\\xb5\\x71\\x21\\xc6\\xf0\\x40\\xaf\\xf2\\x71\\x98\\x94\\x8b\\xa6\\x9c\\x21\\x25\\x3a\\x28\\xd3\\x9e\\xba\\x72\\x62\\x19\\xbe\\xda\\x1f\\x82\\x09\\xfb\\x83\\xe9\\xad\\xb0\\x7a\\xd4\\x09\\xfb\\xd6\\xd2\\x55\\x65\\x88\\x9a\\xb4\\x51\\x23\\xf9\\xd9\\x45\\xec\\xd7\\xd9\\xca\\x70\\x28\\xec\\xe0\\x92\\xe3\\x5f\\xbb\\x7c\\xb3\\xf3\\x28\\x12\\x6e\\xfd\\xda\\xc5\\xd8\\x59\\xf2\\xb2\\xc6\\xeb\\x09\\x01\\x33\\x69\\x0e\\x20\\xc1\\x7d\\xea\\xf3\\x88\\x26\\x85\\xf0\\x7e\\x9e\\xd2\\x65\\x3b\\x80\\x3b\\x9b\\x38\\x3b\\x70\\x74\\x8a\\x1f\\xa9\\x2c\\x86\\xf8\\x6d\\x6c\\x47\\xea\\x87\\xb1\\x0b\\x12\\xe3\\x63\\xba\\x50\\x80\\x60\\xf4\\x7c\\xe2\\xa2\\xf3\\xb6\\xa3\\xee\\xfc\\xd4\\xda\\xcf\\xc7\\x1c\\x41\\xf4\\x36\\xfe\\x0c\\x2b\\xc3\\x4d\\x4b\\xaa\\xd4\\x95\\x74\\xe7\\x44\\x3c\\x12\\x6a\\x58\\x9f\\x6e\\xf7\\xbc\\xa4\\x49\\x54\\xf0\\xbb\\x28\\xec\\x71\\x51\\xb0\\x51\\x1c\\x23\\xc6\\xbc\\x42\\xd5\\xe8\\x59\\x83\\xec\\x16\\xbb\\x5f\\x50\\xa3\\x82\\xd6\\x88\\x15\\x0a\\x49\\x60\\x9c\\xbd\\xe5\\x69\\x8e\\x86\\xdc\\xbf\\x02\\x12\\xc2\\x29\\x22\\x99\\xdc\\x4d\\xcf\\x87\\x42\\x9f\\x6c\\xd2\\xee\\xc8\\x09\\x48\\xce\\x86\\x7e\\x25\\xc9\\x45\\x84\\xcd\\xc6\\x4b\\x09\\x90\\x29\\xeb\\x85\\x4e\\xdc\\x26\\xea\\x21\\x42\\x1e\\xff\\x48\\xcf\\x4e\\x41\\xf4\\x9e\\x2d\\x89\\x47\\x8d\\xef\\x06\\xc4\\x2b\\xea\\x22\\x0a\\x13\\x3e\\x50\\xf5\\xc7\\x44\\x64\\xc7\\xe7\\x3f\\xb1\\xc1\\xa7\\x7c\\x50\\x7c\\xf6\\xcd\\xa8\\x5b\\xe4\\x02\\xb7\\xe6\\xd6\\xd2\\x1e\\x81\\x0d\\x6d\\x0b\\x59\\x72\\xb9\\xfe\\x77\\xe5\\x4e\\x74\\xae\\xe1\\xf3\\xbb\\xfd\\x6e\\x7d\\xe6\\xb5\\xc0\"},\n{{0x6a,0x29,0xf8,0x1b,0x8d,0x9a,0xa4,0x8a,0x1b,0x23,0x36,0x4e,0xac,0x8f,0x6a,0x4b,0xdd,0x60,0x7a,0x84,0xcf,0xe8,0xe8,0x8d,0x90,0x17,0x5d,0x80,0x64,0x3a,0x58,0xa8,},{0x4c,0x3b,0xe3,0xa2,0xa8,0x42,0x5f,0xf3,0x1c,0x3a,0x0d,0xb4,0xa5,0x2a,0x0c,0xb1,0x41,0x6c,0xeb,0x48,0xcc,0x3e,0x4c,0x28,0xa4,0xf2,0x28,0x4a,0xb3,0x46,0x07,0x15,},{0xdf,0x09,0xcb,0x9b,0x87,0x8d,0x3d,0xc9,0xe5,0x42,0xdb,0xac,0x28,0x94,0x3e,0x28,0xe4,0x1d,0xce,0xcb,0x92,0xcb,0x7e,0xa4,0x40,0x09,0x88,0x5e,0x46,0x49,0x97,0x43,0x33,0x05,0x61,0xba,0x1d,0x36,0xae,0xdd,0x46,0x76,0x75,0xfd,0xca,0x2b,0xaa,0xa4,0x70,0x1b,0x6f,0xad,0x97,0x9f,0xd8,0x39,0xc4,0x70,0xd1,0x3c,0x82,0xda,0xa9,0x05,},\"\\x78\\x76\\xa3\\xf4\\xeb\\x69\\xbb\\x7e\\x54\\xe9\\xff\\x95\\x4e\\xbd\\x3b\\x10\\xb9\\x3a\\x4c\\x1a\\xfe\\xae\\x92\\xfa\\x03\\xc1\\x03\\xcb\\x63\\x13\\xa2\\x01\\xc5\\xb3\\x3a\\x9a\\x72\\x23\\x75\\x5c\\xb5\\x10\\xe2\\x5e\\xc5\\x82\\xb5\\x4e\\x81\\xb8\\x49\\x56\\xf6\\xc5\\x3f\\x1f\\x08\\xa6\\x3b\\xf0\\xc4\\xa2\\x61\\xaf\\x45\\x0e\\x52\\x3f\\xe8\\xf6\\x1d\\xdb\\x3c\\x0e\\xea\\xb8\\x75\\x10\\x72\\x68\\x88\\x01\\xb2\\xa4\\x73\\xb7\\x1a\\x2e\\x38\\x70\\x8d\\xa6\\x8c\\x2f\\x37\\x92\\x5c\\xb0\\x5a\\x20\\xc4\\x28\\x3b\\x3a\\xf9\\x7b\\x6f\\x0b\\xa6\\x5a\\x54\\x03\\x55\\x43\\x75\\xe2\\x15\\xd9\\xe3\\xaa\\x1b\\x0f\\x9f\\xdb\\x0f\\x84\\x99\\x23\\xed\\xbd\\xaa\\x0a\\xb4\\x81\\xc5\\x45\\xa5\\xdf\\x8f\\x51\\xd1\\xf6\\x8b\\x22\\x35\\x07\\xea\\x0e\\xcc\\xfa\\xeb\\xb5\\xfc\\xcf\\x5e\\x3d\\xfa\\x65\\xa4\\x4e\\xea\\x50\\x45\\x68\\xa8\\x81\\x80\\xa0\\x60\\xbb\\x06\\xc5\\x15\\x57\\xb8\\x1e\\x66\\x7b\\x4b\\x04\\xe3\\x21\\x0f\\xa4\\xc3\\x79\\x87\\x6c\\x49\\xf3\\xe5\\x6b\\xf2\\xbe\\x1c\\xf5\\x19\\xa7\\x41\\x83\\x93\\xd2\\x40\\xdc\\x8a\\x22\\x4c\\x6c\\x38\\xac\\x2a\\xb9\\xd8\\xfa\\xdf\\xc5\\x36\\x20\\x30\\xc7\\x93\\x0c\\x3c\\xe7\\x79\\x5b\\x14\\x7c\\x26\\xc8\\xa2\\x8c\\x65\\x34\\x29\\xd9\\x0a\\x17\\x3a\\x86\\xa8\\xb1\\x8a\\x00\\x9e\\x62\\xae\\xf6\\xec\\xa9\\x5d\\x39\\xbd\\xbe\\x45\\x64\\x77\\x78\\xa2\\x53\\x2a\\x41\\x5a\\xe1\\x9b\\xad\\x23\\x11\\x29\\x12\\x78\\x42\\xfe\\x1d\\x0f\\x11\\xfa\\xb4\\xa1\\xcf\\x0b\\x17\\xe4\\x98\\xcd\\x59\\x52\\xc9\\x39\\xe0\\x90\\x09\\x02\\x87\\xb1\\x44\\x89\\x5d\\xff\\x00\\xce\\xc8\\xd6\\xae\\xda\\xf6\\x24\\x81\\xa4\\x17\\x83\\xe0\\x21\\x08\\x2c\\xe3\\x52\\x06\\x3e\\x62\\x81\\x1f\\xd9\\x99\\x90\\x10\\x4d\\x8a\\x46\\xcd\\xca\\xee\\x2b\\xab\\x45\\x8e\\x52\\x47\\xfb\\x02\\x3e\\x92\\x33\\x30\\xa4\\x28\\xc7\\xbc\\xfd\\x20\\xb0\\x8f\\x52\\x0e\\x89\\x46\\xdd\\x65\\x83\\x47\\x35\\x2a\\xe0\\xc4\\xbe\\x73\\xc3\\xd5\\xec\\xcd\\x11\\x14\\x9f\\x3a\\xb7\\xb8\\x05\\x2c\\xfd\\x95\\xc3\\x5d\\x41\\x64\\x54\\x6f\\x5d\\x8f\\x37\\x75\\x17\\xa7\\xf4\\x32\\xc0\\xd5\\x56\\x3a\\x7b\\xcc\\x7b\\xd1\\x19\\xd3\\x42\\x1d\\xfe\\xba\\xae\\x84\\x45\\x99\\xb2\\x9b\\x38\\x3b\\xb8\\xd5\\xdb\\xf1\\x40\\xd9\\xbd\\x47\\xa0\\x78\\xb7\\xae\\x7c\\x6a\\xa8\\x7b\\x1e\\x29\\x23\\x6c\\x9f\\xcf\\xd6\\x54\\xb7\\xf8\\x09\\x79\\x4c\\xcc\\xb2\\x61\\x58\\x8e\\x18\\xde\\xc6\\xc4\\x04\\x6a\\x93\\x40\\x67\\xd0\\xdf\\xa0\\x37\\x91\\xd0\\x3d\\x83\\xb7\\x18\\xac\\x4d\\x24\\xdc\\xe7\\x85\\xa3\\x02\\x8d\\xe0\\xc9\\x59\\x2d\\xba\\x7c\\x5c\\x58\\x45\\x18\\x4a\\xfc\\x9c\\x0d\\xfc\\xf9\\x40\\x95\\x86\\x0f\\x0e\\xb8\\x02\\xeb\\xea\\x20\\x17\\x8e\\x78\\xb5\\x64\\x2e\\x5d\\xd6\\x1c\\x33\\xb3\\x97\\x69\\x05\\x2d\\x9d\\x85\\x4d\\xce\\x90\\x2f\\x47\\x6e\\x21\\xf9\\x6c\\x65\\x0b\\x46\\x3b\\x7b\\xc3\\xd0\\xff\\x29\\x96\\xb6\\x5c\\x57\\x83\\x1f\\x8b\\x7c\\x0f\\xb9\\x15\\xf4\\xdd\\x72\\x26\\xac\\x95\\x5c\\xbc\\x7d\\xfb\\x03\\xf9\\xb7\\x58\\xdd\\x3e\\x0d\\xfc\\xe2\\xe0\\xe5\\x80\\xc9\\x1a\\x30\\xc7\\x83\\xff\\x56\\x7b\\x17\\xf1\\x2d\\xfd\\x5d\\x31\\x37\\x64\\x6e\\x20\\x01\\x1c\\xdc\\xaa\\xe1\\x11\\x02\\xdc\\x71\\x68\\x86\\xcb\\xf1\\x23\\xc0\\x94\\x88\\xb1\\x73\\x63\\x6a\\xbd\\x54\\xe9\\x62\\xca\\xee\\xc9\\x7d\\x5e\\xb9\\x40\\x68\\x2e\\x70\\x3b\\x73\\x0f\\x61\\x56\\x2c\\xd1\\x4b\\x9e\\x65\\x61\\xb5\\xe9\\x3f\\x60\\xcd\\x0e\\x1e\\x86\\xd1\\xa1\\xb4\\x71\\x9c\\x5b\\x50\\x82\\x42\\xbd\\x6b\\x2d\\x9a\\x54\\x8f\\x59\\xbb\\xb8\\x75\\x07\\x59\\x69\\xef\\x20\\x32\\xf3\\x19\\x6b\\x8a\\xec\\xcc\\x45\\xa4\\x4d\\x9d\\xbd\\xaf\\x87\\x8e\\xd1\\x6f\\x1d\\x85\\x5e\\x89\\x18\\xed\\x65\\xa4\\x5e\\xe5\\xc7\\xfa\\x32\\xa1\\xec\\x69\\x32\\xa1\\x59\\xcf\\xb5\\x0f\\xfc\\x87\\xbe\\x06\\xdf\\xcf\\x72\\x28\\xae\\x88\\x70\\xcc\\xd3\\x57\\xfc\\x65\\x6e\\x33\\xfa\\x4b\\x6b\\x8b\\x7d\\x1a\\x72\\x15\\x55\\x3c\\xab\\xac\\xc7\\x0a\\x39\\xc9\\x80\\xb9\\x71\\xe5\\x1a\\x17\\xed\\x63\\x18\\xb4\\x3b\\x29\\xbb\"},\n{{0xef,0x12,0xdf,0x47,0x9d,0x98,0x3a,0xd9,0x6e,0x8b,0xa6,0x53,0x30,0xb3,0x6d,0x49,0xaa,0xdb,0x98,0x31,0x64,0xe1,0xc0,0xb4,0x52,0xb5,0x60,0xde,0xd1,0xd0,0x8d,0x60,},{0xf7,0x61,0xcf,0x28,0x26,0x92,0x7a,0x7c,0xda,0x8c,0xb0,0x4f,0xaa,0x2c,0x59,0xf8,0x42,0x5a,0x8f,0x7d,0x39,0x8f,0x76,0xe8,0x67,0x02,0x1c,0x95,0x1f,0x07,0x38,0x09,},{0x4c,0x80,0x10,0x86,0x6d,0x91,0x15,0xf0,0x52,0x93,0xb9,0x34,0xca,0xc6,0x81,0x04,0xcc,0x2c,0x34,0x37,0x56,0x8c,0xb9,0xd5,0xc5,0x70,0xb1,0xa8,0xbe,0xe7,0x06,0x60,0x30,0x75,0x53,0x70,0x33,0xbd,0x70,0x8a,0x9c,0x9f,0x3d,0x1e,0x25,0x19,0xa9,0x15,0xb1,0xc4,0xae,0x4c,0xcd,0xdf,0xcf,0x0e,0xd0,0xc0,0x49,0xd3,0x42,0xa0,0x2e,0x02,},\"\\xe5\\x8f\\x34\\xda\\xea\\x75\\x5a\\xc4\\xe4\\x13\\x33\\xd6\\xf0\\xed\\x01\\x35\\xf7\\xdb\\xce\\x50\\x30\\x9b\\xb1\\x95\\x6b\\xc7\\x1a\\xcb\\x12\\xc7\\x70\\x67\\xa6\\x47\\xff\\xd8\\x6a\\xa5\\x87\\x0c\\x0c\\x00\\x07\\xe8\\xf9\\x95\\xa2\\x2b\\x88\\xc4\\x67\\xde\\x22\\x54\\x44\\x54\\x42\\x01\\xc5\\x57\\x49\\x5e\\x25\\x3e\\x33\\x19\\xcc\\x5c\\xa3\\x76\\xd3\\xe7\\xcc\\x1e\\xb4\\x67\\x34\\x6e\\x52\\xad\\x95\\x6a\\x6f\\xa7\\x33\\x72\\x0b\\x17\\x11\\x7b\\x5b\\x75\\x85\\xe4\\xd5\\x59\\x40\\x9a\\xae\\xfa\\x95\\x58\\x0f\\x91\\xe5\\x02\\x01\\x5f\\x49\\x7c\\x5c\\xdc\\xb7\\xd4\\xd5\\x61\\xf5\\x44\\xef\\xa3\\x5c\\x1e\\x2a\\x53\\xb7\\x2b\\xdd\\xec\\xee\\xc2\\xd1\\x05\\x0f\\x17\\x7d\\x48\\x0f\\x68\\x74\\x05\\x66\\x4d\\xfd\\xde\\xc0\\x6e\\xee\\x4b\\xd1\\x47\\xa9\\x12\\xfd\\xbf\\x74\\xf2\\xa9\\x5d\\x1f\\xd1\\xe1\\x12\\x68\\x69\\x4c\\xe4\\xd4\\xec\\x4f\\xff\\xd6\\xdd\\xb3\\x25\\x4d\\x36\\x0f\\x23\\x6f\\xab\\x4d\\x1a\\x17\\xf8\\xd0\\xd1\\xa5\\x11\\xf9\\x44\\x69\\x2f\\x23\\x96\\x39\\xae\\x03\\xd6\\x4f\\xac\\xec\\x65\\x38\\x42\\x7a\\xb7\\x1f\\x71\\x27\\xf4\\xa2\\x76\\xf9\\xbc\\x45\\xbb\\xa6\\x11\\xdf\\xcc\\xe6\\x44\\x6c\\xc1\\x39\\x68\\x97\\x6c\\x8b\\xb6\\xd6\\xfe\\x21\\x06\\xd7\\x05\\x92\\x2d\\xca\\xc9\\x56\\x96\\x6a\\x76\\xd4\\x8f\\x2a\\xff\\x4b\\x86\\x51\\x4e\\x39\\xa6\\x7e\\x16\\x43\\xfc\\xc3\\x21\\x85\\x80\\x24\\xe6\\x93\\x18\\x98\\x33\\xc8\\xad\\x59\\xb4\\xb6\\x25\\x29\\x8e\\xba\\xfe\\x64\\x62\\x6b\\x48\\x0f\\x32\\x6f\\x13\\x40\\x72\\x3c\\xb3\\xd3\\x83\\xf4\\xfc\\xcb\\xfc\\x23\\x7a\\x3f\\x4c\\x4f\\x7e\\xcf\\x0b\\xa4\\x36\\xb3\\x2c\\x2f\\xe3\\x51\\x79\\xda\\x93\\x11\\x1b\\x48\\xcc\\x9e\\xa2\\x42\\x02\\xbd\\xc1\\xb2\\xfb\\x60\\xa4\\x31\\x9d\\xfd\\x98\\x64\\x47\\x0f\\x73\\xf5\\x41\\x37\\x20\\x6e\\x0b\\xf0\\x07\\xf5\\xae\\x88\\xa8\\x87\\x47\\x00\\x8a\\x60\\xf4\\x78\\x9a\\xd1\\x67\\x72\\x4f\\x17\\x9c\\x02\\xb6\\x3a\\xed\\x00\\x25\\x73\\xd2\\x8a\\x6b\\xcf\\x88\\xe0\\x7c\\xe8\\xda\\xea\\x5d\\x5f\\x1a\\xcf\\x48\\x7b\\x4c\\x5c\\x16\\xc2\\xbf\\xe1\\x12\\x31\\xea\\x5e\\xa7\\x63\\xe8\\xf3\\x32\\xcc\\x73\\xda\\x1b\\x2f\\x8c\\x19\\x8e\\xa8\\x17\\x3f\\xd3\\x3d\\x4b\\x2a\\xe6\\x9e\\x5d\\x4d\\x1a\\xad\\xdd\\xf2\\xfd\\x82\\x1b\\x85\\xbe\\x45\\x15\\x19\\x62\\xd1\\xf9\\x9d\\xf8\\x13\\x08\\x61\\x88\\x52\\xad\\x7c\\xf4\\x1d\\x72\\xda\\x08\\xa1\\xb3\\x9d\\xf7\\xd8\\xb9\\x94\\xb4\\xdd\\xff\\x37\\xf9\\xdf\\xe8\\xf3\\x8c\\xe3\\x0e\\x91\\x06\\x1d\\x95\\xd5\\x8f\\x7a\\xe8\\x26\\xb0\\x23\\x85\\x27\\x2e\\xc0\\x9f\\x01\\xa7\\xb3\\xe4\\xb3\\x91\\xd0\\x9b\\xce\\xd6\\x65\\xda\\xd6\\x95\\x05\\xb4\\x19\\xda\\x84\\x81\\xbc\\x37\\x92\\xbf\\x8b\\x8e\\x7a\\xd6\\x4b\\x63\\xf2\\x45\\x66\\x6c\\x8c\\x32\\xfd\\x5c\\x1b\\x1b\\x48\\xc9\\x95\\x1e\\x1c\\x21\\xa1\\xeb\\x5f\\x50\\x7c\\xff\\x13\\x7c\\xfb\\x86\\x2c\\x2c\\xc9\\x87\\x66\\xe8\\x78\\xc9\\x30\\xa0\\x83\\x82\\x8c\\x9d\\x8d\\xb1\\x8b\\xf1\\x67\\x16\\x68\\x5f\\x39\\xd6\\x57\\x2a\\x8c\\xa8\\xb2\\xa5\\x14\\xf7\\x70\\x03\\xd4\\xe7\\x5b\\xc1\\x54\\xae\\xbf\\x14\\x10\\x37\\x78\\xf3\\x65\\xb1\\xc3\\xf0\\x35\\x41\\xdd\\xbd\\x07\\xd6\\xe2\\x3e\\x56\\x76\\x2d\\x97\\x1e\\xb0\\x29\\x83\\xe9\\x3c\\x4e\\x01\\xba\\x4b\\x8a\\x21\\x78\\x92\\x8c\\x43\\x37\\xd3\\x02\\xf3\\x1c\\x9c\\xcb\\x75\\xb2\\x49\\xa8\\x2d\\xc9\\x68\\x21\\xe9\\x5a\\x03\\xab\\x6b\\x77\\x0d\\xf2\\xc3\\xdf\\xdb\\xf1\\xfe\\x97\\x73\\xf8\\xbc\\x1b\\xc5\\xb3\\xaf\\xa0\\x44\\x0b\\x10\\x25\\x78\\xf3\\xd2\\x13\\xc8\\xd0\\x19\\xcf\\xf1\\x24\\xf7\\x5c\\xe4\\xac\\xcc\\x8c\\x66\\x7f\\xeb\\x27\\xc7\\x51\\xa6\\x12\\x00\\x74\\x81\\x31\\x04\\xe0\\xcd\\x07\\x0c\\x9f\\x5e\\x45\\x1d\\xcc\\xff\\x4c\\x80\\xd7\\x11\\x07\\xc9\\x75\\xab\\xfa\\xc0\\x7d\\x4d\\x27\\x0c\\x72\\x7d\\x8a\\x2f\\xec\\x34\\x9b\\x53\\x39\\x68\\xe2\\x71\\x89\\x2d\\x2b\\x62\\xc1\\x25\\xfb\\x79\\x74\\x60\\x3c\\x30\\x5e\\xa3\\xbf\\xa3\\x0f\\xb6\\x10\\xfc\\x5a\\x23\\xeb\\x68\\xa8\\x40\\x64\\x44\\x39\\x1a\\x52\\x13\\x37\"},\n{{0xf7,0x31,0x31,0x7c,0xf5,0xaf,0xfe,0x58,0x70,0x4c,0x4d,0x94,0x97,0xae,0x86,0x0b,0xbf,0x73,0x9d,0x0f,0xd9,0x6b,0x7c,0x02,0xef,0xb6,0x77,0x7b,0x3c,0x85,0x8a,0x19,},{0xd7,0xd6,0x38,0xae,0xcc,0xe1,0x46,0x1e,0x31,0x42,0x55,0xaa,0x29,0xd9,0xa6,0xb4,0x88,0xae,0xa1,0x39,0x6e,0x96,0x82,0x69,0x5a,0x47,0x0e,0xff,0x23,0xf3,0xed,0x84,},{0x2a,0x4f,0xea,0x98,0xf9,0x24,0x01,0x71,0xa1,0x82,0x3f,0x2f,0x69,0x35,0x20,0x62,0x67,0x2e,0x6c,0x6e,0x66,0x52,0xd3,0x88,0xa8,0x77,0x14,0xd6,0x47,0x99,0x5d,0xf7,0x5b,0x6e,0x1e,0xd1,0x74,0x6a,0xf2,0xad,0xf4,0xe8,0x06,0x13,0x5d,0x60,0x75,0x4e,0x60,0xfe,0xa0,0x32,0x12,0x8e,0x35,0xab,0xc1,0xf1,0x61,0x51,0x81,0x12,0x5f,0x0b,},\"\\x16\\xf5\\x1c\\x59\\xe9\\xae\\xfc\\x26\\xb0\\xda\\x5e\\x00\\x85\\xeb\\x2e\\x2f\\x1f\\x85\\x6d\\xef\\x97\\x25\\x76\\x9e\\x3a\\xf1\\x2f\\x86\\x09\\x05\\xae\\x13\\x3f\\x65\\x07\\x4d\\xa7\\x6d\\xbf\\x25\\xc6\\x7f\\x62\\x57\\xd2\\xdc\\x66\\xc0\\x5f\\x9b\\x31\\xae\\x17\\x7b\\x69\\x92\\x9f\\xc1\\x83\\xb5\\x88\\xc5\\x19\\xbc\\xa1\\x47\\x96\\xa0\\x89\\x6d\\x29\\x05\\xfd\\x94\\x2d\\x7a\\xb4\\xa3\\xfd\\x95\\x41\\xa5\\x52\\x9f\\x72\\x9c\\x58\\x51\\x41\\x9b\\x5f\\xbe\\xf7\\xb1\\x34\\xd6\\x76\\x2e\\xb9\\x7e\\x8a\\x95\\x1a\\x8f\\xf5\\x2a\\xa0\\xd7\\xe6\\x74\\x44\\xd0\\x6b\\x07\\xaa\\x55\\xe4\\xeb\\x9a\\xb8\\x92\\xf4\\x7b\\xfd\\x11\\x1d\\xf5\\xb6\\x2f\\x6f\\x3f\\xd1\\xa5\\xed\\x84\\x12\\x5f\\xee\\xbb\\x77\\xda\\x63\\x7c\\x05\\xd5\\x26\\x5c\\xed\\x11\\x3d\\xfe\\x87\\x82\\xdb\\xd1\\xce\\xcd\\x2c\\x6c\\x03\\x2b\\x8f\\xa8\\x85\\x5b\\x3a\\xe7\\x8d\\xe7\\x4f\\xaa\\x5a\\xa2\\x0a\\x76\\x14\\x63\\xc2\\xa3\\x0b\\xe6\\x6b\\xd3\\x8c\\xde\\xc7\\x5f\\x89\\x57\\xcb\\x94\\xc1\\x13\\xa4\\x5d\\x54\\x6d\\xaf\\x47\\x5d\\x89\\xaa\\x14\\x82\\xf8\\xd2\\x80\\x3a\\x23\\xc9\\x39\\x20\\x20\\x15\\xa0\\x8e\\x94\\xb1\\x32\\x72\\x8f\\xbe\\x8f\\x60\\x19\\xd7\\x16\\x8a\\x08\\xa5\\x93\\x01\\x70\\xe5\\x63\\x9d\\x11\\x0e\\x47\\x39\\xdb\\x85\\xe6\\x1e\\x64\\x49\\x59\\x44\\xb5\\x42\\x3a\\x74\\xad\\x5a\\x8a\\x0a\\x51\\x06\\x12\\xec\\xe6\\x55\\xce\\x18\\x86\\x40\\x51\\x52\\x5b\\x90\\x8e\\x0b\\x19\\x29\\x0a\\xbe\\x8b\\x11\\x82\\xc4\\x8c\\x70\\x0d\\x35\\x05\\x15\\xfd\\x34\\x99\\x56\\xe8\\x08\\x73\\x27\\xf3\\x0b\\x6f\\xc3\\xf1\\x31\\xc2\\x14\\x4a\\xbb\\x3f\\x0e\\x9c\\xa3\\x31\\x17\\x2b\\x35\\x06\\x4a\\x82\\x81\\x1a\\x68\\xe2\\xcf\\x36\\xb4\\x3e\\x3a\\xd2\\xe8\\xdf\\xa5\\xb1\\xce\\xf5\\x0e\\x2a\\x60\\x29\\x3f\\xc5\\xf6\\x35\\xc9\\xa9\\x99\\x8d\\x8c\\x1a\\xd2\\x96\\xe7\\xc7\\x8f\\xc0\\x58\\x20\\x22\\xd6\\x30\\x67\\x18\\x6b\\x65\\xe7\\x64\\x82\\x8c\\xc0\\xf5\\xf7\\x63\\x2d\\x5e\\xef\\x86\\x3e\\x6c\\x6d\\x90\\xe3\\x8c\\xcc\\x87\\xd7\\xb7\\x47\\xfa\\xc8\\x49\\x1d\\x63\\x2c\\xf7\\xf5\\x4b\\x9a\\x9e\\xed\\x16\\xee\\xbe\\xc0\\x1b\\x6c\\xc3\\x3d\\x24\\x63\\xf7\\xf9\\x50\\xd8\\x28\\xb5\\x5e\\xe3\\xf7\\x7c\\xbe\\x97\\x4f\\x48\\x94\\x8e\\xb7\\x57\\xae\\xd4\\xe0\\xdb\\xb0\\x0a\\xd9\\x5e\\xe0\\x13\\x23\\x48\\x6e\\xba\\x3c\\x8d\\xa8\\x86\\xed\\x7f\\x57\\xbb\\x40\\x0d\\x63\\xa1\\xb2\\xeb\\xea\\xa2\\xe7\\x0a\\xdf\\x03\\x79\\xe3\\x39\\x30\\x01\\xba\\x62\\x6c\\x0d\\xd5\\x4b\\x7f\\x0c\\x9a\\x25\\xaa\\xe6\\xc9\\x87\\x5d\\x4e\\x76\\x22\\xf3\\xed\\x42\\x8f\\xb3\\x12\\x4b\\x29\\xc5\\xdb\\x9a\\x7e\\xf1\\x6e\\xbd\\xdd\\x68\\x05\\xf0\\x95\\xf5\\xe7\\x69\\x82\\x3c\\x43\\xf2\\x62\\x86\\x8f\\xf4\\x3e\\x3e\\x05\\x25\\x74\\x6d\\x94\\x97\\xaf\\x12\\x4a\\x01\\xdf\\xf6\\x1e\\xc7\\x18\\xaf\\x3b\\x5b\\xb7\\x46\\xfc\\xc0\\x8a\\xeb\\xd1\\x66\\x84\\xd4\\x56\\xae\\x79\\x32\\xff\\x5e\\xd7\\xd6\\xb0\\xf1\\xb2\\x5c\\x7a\\xde\\xef\\x59\\x8b\\x5d\\x58\\x87\\x75\\x90\\xac\\x1d\\xc0\\x59\\x75\\x15\\x67\\x96\\x99\\x87\\x74\\x08\\x1e\\x5b\\x66\\x82\\x2a\\x94\\xa6\\xa8\\x02\\xc3\\xa2\\xcd\\x9f\\x48\\x9e\\x16\\x28\\xaa\\xf4\\x65\\x2b\\xe1\\x18\\x4b\\x0f\\xc7\\xc5\\xee\\x7f\\x97\\xce\\x08\\xb9\\x23\\x3b\\x4b\\x83\\xd9\\x36\\x7b\\xe5\\xf4\\xaa\\xe9\\x78\\x25\\x93\\xa3\\x52\\x65\\x15\\x4d\\xea\\x4c\\x37\\x5c\\x16\\xf0\\xca\\xf6\\xdc\\x45\\x94\\xd2\\xbd\\xbf\\xc3\\x37\\x5b\\xb2\\xa0\\x43\\x2c\\x48\\x2f\\x13\\x94\\x1c\\xe2\\xaa\\xab\\x4d\\x83\\xe7\\x4d\\x11\\x6f\\x5d\\xe4\\xab\\x28\\xf8\\xdc\\x3d\\x1c\\xd1\\x9d\\x27\\x1e\\x56\\xe1\\x03\\x98\\xbd\\x1d\\xf5\\xc8\\x70\\xfc\\xbf\\x93\\xa7\\xd1\\xdf\\x39\\x39\\x54\\x7c\\x10\\x7b\\xfd\\x90\\x64\\x3f\\x6f\\x50\\x01\\xae\\x7e\\x06\\x39\\x7a\\xe1\\xa2\\x71\\xbb\\x82\\xa1\\xf3\\x8e\\x09\\x7b\\xec\\x66\\x74\\x66\\xb8\\x0e\\xe3\\xe5\\x0d\\xd4\\xfc\\x9d\\x5d\\x54\\xf1\\x8f\\xaf\\x7a\\x5b\\x55\\xa8\\x83\\x45\\x94\\xef\\x0c\\xb7\\xe5\\x08\\xbb\\xd2\\x8f\\x71\\xfd\\x34\\x23\\x5b\\xbf\\xd3\"},\n{{0x49,0x8e,0x5a,0x21,0xa9,0xb0,0xc3,0x47,0xba,0x83,0xa4,0x7a,0xc1,0x00,0x69,0x45,0x7f,0x57,0x83,0xc2,0xe1,0xe6,0xe4,0x64,0x00,0x45,0xe5,0x94,0xb1,0xc6,0x93,0x32,},{0xfb,0x39,0x48,0xc8,0x11,0x99,0x56,0x91,0x05,0xcc,0x1b,0x7d,0x9c,0xeb,0x3b,0x41,0xa3,0x43,0xbb,0x00,0x57,0x55,0x38,0x59,0x2e,0x09,0x84,0xf4,0xf4,0x71,0x0a,0xbe,},{0x28,0x60,0x83,0x0c,0xcd,0x1d,0x41,0xd9,0x50,0x76,0x81,0x6a,0x39,0x84,0x24,0xf7,0xb7,0x39,0xc4,0x9f,0xda,0xcf,0x56,0x54,0x52,0x9d,0xa8,0x5f,0xe3,0x56,0x55,0x84,0xf6,0xaa,0xc2,0x61,0x4c,0x63,0xf7,0x74,0xb6,0x1d,0xb9,0x08,0x1f,0x14,0x10,0xfb,0xa8,0xe5,0x0a,0xb3,0xb4,0xc3,0x9d,0xc0,0x63,0x14,0x24,0x3f,0x3f,0x0d,0x8e,0x0f,},\"\\xe4\\xfb\\xea\\x86\\x4a\\xa5\\x11\\x90\\x82\\x66\\x45\\xd2\\xf7\\x72\\xcb\\x0f\\x9e\\xdd\\xd3\\x03\\x44\\x73\\xfa\\x31\\x77\\xc7\\xaf\\x9a\\x5d\\x41\\xe1\\xa7\\x3a\\xd5\\x78\\x4c\\x70\\x96\\x55\\x9f\\xcd\\xdb\\x7b\\x7c\\x85\\x89\\x1c\\xf2\\x4e\\x82\\xc5\\x88\\xd7\\x47\\x74\\xff\\xca\\xc0\\xc6\\xb4\\xee\\xbc\\x2f\\x3f\\xa4\\x3e\\x9d\\x45\\xf2\\x59\\xd6\\x75\\x64\\x03\\x0c\\xfe\\xea\\xb9\\x23\\x6c\\x66\\x5b\\x65\\x0a\\xf0\\xc9\\x2c\\x87\\x51\\x89\\xf5\\xf9\\x38\\x35\\x04\\xb1\\x53\\x60\\xa0\\xb9\\xa5\\xa0\\x0d\\xa3\\x1f\\x63\\x5b\\x96\\xf6\\xc7\\x3e\\xf4\\x7b\\x6b\\x06\\xf0\\x28\\x11\\xd1\\xd1\\x9c\\x2e\\x8e\\x53\\x55\\x0c\\xe2\\x2e\\x42\\xec\\x50\\xa1\\xeb\\x2e\\xa2\\xf4\\xcd\\x03\\xc4\\x42\\xd4\\xaa\\x43\\x68\\x94\\x23\\x8c\\xeb\\x18\\x35\\xfe\\x99\\xb2\\x40\\x35\\x8a\\xa0\\x56\\x2c\\x24\\x96\\x98\\xa3\\xf1\\x23\\xc2\\xc1\\x7e\\x59\\x10\\x10\\xbd\\x6f\\xdf\\xcb\\xd7\\xdb\\xe7\\x0b\\x04\\x52\\x05\\x02\\xec\\xe3\\x7a\\x9a\\x1d\\xfa\\x1a\\xe3\\x37\\x04\\x17\\xb0\\x04\\x21\\x7a\\x5b\\x8f\\xe9\\x90\\x3c\\x9a\\x3b\\x9f\\x4b\\x6d\\x5c\\x46\\xc0\\xed\\x0c\\x53\\x8c\\xec\\x22\\xf2\\xdf\\xcb\\x2a\\x28\\x0a\\x42\\xad\\xc4\\x89\\xcf\\x2e\\x06\\x29\\x12\\xbe\\x99\\x28\\xf0\\xc0\\x60\\x89\\x1e\\x43\\x20\\x91\\x17\\x75\\x26\\xf1\\xb3\\xa9\\x68\\x06\\x9d\\x4a\\x57\\xad\\xe8\\x28\\x55\\x98\\x10\\xae\\x03\\x60\\x68\\x1f\\xf9\\x93\\x29\\xfa\\x0f\\x59\\xe7\\xe5\\x9c\\xdf\\x87\\xf9\\xf3\\x3c\\x40\\xe9\\x70\\x31\\xb9\\xf8\\x1d\\x48\\xfc\\x12\\x28\\x6e\\xfb\\xb3\\xd4\\xe5\\xa6\\x2e\\xf5\\x7b\\xc0\\xd5\\x2d\\x53\\x3b\\x99\\xc5\\x10\\x6a\\xa7\\x9c\\xfe\\x17\\x93\\xa9\\x08\\x51\\x85\\x96\\xc3\\x83\\x48\\x3e\\xc4\\x9f\\xf9\\x8e\\xc5\\x57\\xbf\\xff\\x74\\x90\\xa4\\x6d\\xaf\\x67\\x14\\xf2\\xc2\\xc3\\x2f\\x57\\x93\\x2c\\xa0\\xd7\\x30\\xf0\\x3f\\x38\\x1d\\x69\\xde\\xcd\\xbd\\x9a\\x7a\\x6d\\x4a\\xfc\\x62\\x40\\x65\\x43\\xc8\\xeb\\xe9\\x0a\\xc7\\x6e\\x6a\\xfa\\xbd\\xb8\\x24\\x92\\xa2\\x06\\xa3\\x69\\xe0\\x42\\x86\\xd3\\x13\\xe1\\x11\\x07\\xd8\\xcd\\x9b\\x4b\\xf6\\x8f\\x81\\x5d\\xba\\x4e\\x99\\x0b\\x04\\x9d\\x79\\x21\\x6d\\x36\\x53\\x13\\x83\\x42\\xcd\\x11\\x8b\\x13\\x0f\\x66\\xb0\\x06\\xf3\\xd8\\x9a\\xc3\\xcf\\x89\\x83\\x70\\x48\\xb0\\xf8\\xa6\\x2d\\x94\\x05\\x1d\\x2e\\xab\\x89\\x1a\\xc5\\xf4\\x78\\x88\\x87\\x9d\\x88\\xe5\\x46\\x67\\x6d\\x1d\\xae\\xeb\\x4d\\x17\\x5d\\x3f\\x04\\xa9\\xd7\\x4f\\xfc\\xdd\\x47\\x74\\x60\\x16\\xf8\\x4a\\xd0\\xd1\\x12\\xaf\\xb5\\x9a\\xd1\\x21\\x87\\xe9\\x4f\\x22\\x53\\x5d\\x77\\xe9\\xe0\\x51\\x6f\\xa4\\x21\\x85\\xc1\\x97\\xba\\x77\\x4b\\x39\\x32\\x27\\xf7\\x41\\xfe\\x68\\x27\\x3f\\x42\\x3f\\xb0\\xe0\\xe0\\x47\\x4b\\xfd\\xaf\\x2d\\xa7\\x8a\\xeb\\x1c\\xd5\\xb9\\x8c\\x1d\\xc0\\x83\\x21\\x24\\x74\\x2a\\x47\\x54\\x12\\x5f\\xc7\\x8b\\x19\\xc5\\x59\\xa5\\xb3\\xf7\\x71\\x1e\\x06\\x8c\\x44\\x0c\\xc0\\x46\\x9a\\x1c\\xfa\\x5c\\x18\\x64\\xbe\\x18\\x73\\x5a\\xa8\\xbc\\xd4\\x06\\xc4\\x37\\x1e\\xb8\\x57\\x75\\x4d\\x90\\x8b\\xf3\\x79\\xb9\\x1f\\xcb\\x24\\xe3\\x43\\x96\\xbf\\x87\\xc1\\x9a\\x04\\xa8\\x3d\\x59\\xda\\xe7\\x1f\\x3f\\x38\\x39\\x82\\x9d\\x06\\x22\\x13\\x01\\xef\\x59\\x56\\x96\\xe7\\x19\\xd5\\x6b\\x79\\x52\\x0a\\x0e\\x50\\x99\\x29\\x83\\x3b\\x1d\\x80\\x4a\\x6a\\x0e\\xa4\\x04\\x00\\xbb\\x45\\x02\\x8c\\xe5\\xd3\\x69\\x33\\x88\\x3e\\x17\\x40\\x6e\\x27\\xa8\\x10\\x90\\x57\\xb1\\xa1\\xa5\\xe5\\xda\\x21\\x0a\\x69\\x21\\x99\\x4f\\x46\\x7a\\xb4\\x1a\\xa8\\xf0\\xd8\\x87\\x75\\xa8\\xa8\\xeb\\xb4\\xec\\x77\\xd7\\xc8\\x0e\\x45\\xa7\\xbb\\x42\\x2a\\x4c\\x00\\xc9\\x05\\x83\\x91\\x14\\x65\\xe6\\xb5\\xf0\\xfd\\xcd\\xea\\xb7\\x28\\x71\\xca\\x54\\x2e\\x1d\\x1a\\x2c\\xa9\\x4d\\xf4\\xed\\x2e\\xab\\xf9\\x0d\\xed\\x00\\x45\\x29\\x03\\x24\\xa9\\xff\\xfb\\x30\\x14\\x54\\x70\\x20\\x9f\\x38\\x26\\x58\\x09\\x89\\x34\\x91\\x99\\xdc\\x5a\\xb8\\xd4\\xa2\\x5d\\xf7\\xa0\\x52\\x9c\\xf9\\x14\\x71\\xe3\\x08\\x42\\xab\\xfa\\xcd\\x44\\xab\\x78\\x1d\\xfc\\x13\\x95\"},\n{{0xc2,0x4c,0xbf,0x40,0x1a,0xd0,0x3b,0xd8,0x8d,0xcc,0x7b,0x51,0x9e,0xcf,0x62,0x4d,0xb2,0x22,0x3e,0x99,0x02,0x89,0x30,0x9e,0x1e,0x9f,0x1f,0x8f,0x61,0x27,0xc6,0xc9,},{0xa7,0x46,0x66,0xf3,0x57,0x20,0x9f,0x71,0x89,0x90,0x37,0x88,0xf1,0x07,0x56,0x3e,0x50,0xc0,0x51,0xc3,0xd4,0x0c,0x3f,0x3d,0xad,0x10,0xd3,0xc3,0xcf,0xf1,0xe6,0x78,},{0x58,0x1e,0x6c,0x85,0xae,0xc6,0x23,0xb6,0x2b,0x3d,0x4c,0x9b,0xc9,0xc7,0x77,0x59,0xd5,0x49,0x27,0x22,0xe2,0x52,0xd4,0x4c,0x1f,0x8a,0xda,0x9d,0xa2,0xec,0xc6,0x7c,0x17,0x08,0x32,0x73,0xaa,0x09,0x1b,0xba,0xc0,0x46,0xae,0x63,0xc7,0x88,0x93,0x15,0x2e,0x14,0xd9,0x26,0xc4,0x1a,0xe3,0x5f,0x0e,0x6e,0x39,0x59,0x49,0x6b,0x13,0x06,},\"\\xe7\\xfa\\x35\\x9e\\x6a\\x09\\xb2\\xc5\\x4a\\xab\\xed\\x3b\\xba\\xbf\\xb7\\x28\\x53\\xa8\\x05\\xaa\\xbc\\xf4\\xd1\\x8d\\xda\\xd3\\x9f\\x03\\xf3\\x46\\x01\\xe5\\x5b\\x6c\\xe2\\x63\\xc9\\xa3\\xca\\x6a\\x3e\\x5f\\x14\\x25\\xc8\\x21\\x92\\x8c\\x61\\xe7\\xf7\\x50\\x91\\x9b\\xd3\\xaf\\x32\\xbc\\xb7\\xb9\\x4d\\x45\\x9a\\x7a\\x9a\\x35\\xf6\\x1c\\x94\\x17\\x92\\xe2\\xcc\\x2e\\x43\\x27\\xbe\\xb3\\x44\\xa8\\x41\\xa0\\x7f\\x32\\x06\\x8a\\xf1\\x02\\xb3\\xde\\x61\\xea\\xb6\\x4e\\xf6\\xd5\\xe6\\x90\\x62\\xe3\\x93\\xab\\x5e\\xdf\\x6a\\xc9\\xef\\x7b\\x38\\xd4\\x9a\\x01\\xbe\\xf0\\x00\\x3f\\x42\\x11\\x74\\xc8\\x88\\x59\\x75\\xc0\\x18\\x32\\x89\\x9c\\x31\\x35\\xe7\\xa8\\x6e\\x5b\\x55\\xd9\\xb1\\x32\\x8b\\xb4\\x28\\x9b\\x5c\\x40\\x20\\x0f\\x49\\xe5\\x52\\x3b\\x3c\\x46\\x1d\\xc7\\x17\\x5e\\x14\\x65\\x02\\x22\\x97\\xc3\\xd3\\x80\\xf2\\xb1\\xfe\\xf3\\x9c\\xb8\\x2c\\x00\\xfd\\x16\\x0f\\x44\\x7e\\xb5\\x12\\x63\\xfa\\x25\\xb4\\xdf\\x0f\\xca\\x41\\xec\\x0c\\xa2\\xec\\xe7\\x47\\x22\\x01\\xaf\\x86\\xc3\\x03\\x8c\\x49\\xdf\\x09\\x9a\\x9a\\xef\\xa1\\xf8\\x8d\\x0e\\xdf\\xd1\\x7c\\x0b\\x3c\\x86\\x04\\x66\\x29\\xc0\\x94\\x54\\x05\\x4a\\xa0\\xfb\\x2c\\x69\\x49\\xdd\\x9c\\x13\\x01\\x85\\xdf\\xa5\\xd9\\x03\\x89\\x1e\\x08\\x74\\x2c\\xd0\\x42\\x94\\x03\\xf5\\x7f\\x40\\x52\\x15\\x8b\\x2f\\x40\\x1d\\xa4\\x75\\x68\\x54\\xe4\\xaa\\xf0\\x24\\x22\\x1e\\x37\\x51\\x3c\\xf6\\x77\\xee\\x6a\\x0b\\x15\\x9f\\x50\\x1d\\x37\\x7e\\xa3\\x2e\\xb7\\x1e\\x77\\x80\\x04\\xf2\\x72\\x03\\xcd\\x6d\\x55\\x3f\\xda\\x5d\\x65\\xe1\\x87\\x94\\x77\\x04\\x6f\\x3e\\xa3\\xd1\\xd7\\x5c\\x9d\\x0d\\x30\\x31\\x14\\x56\\x70\\x9c\\xc7\\xf6\\xab\\x68\\xc7\\xb0\\xd5\\x2b\\xe4\\x0f\\x04\\xcf\\x65\\x56\\x55\\x32\\x32\\x85\\x31\\x83\\x29\\xe8\\x4c\\x6a\\x5b\\x07\\xe0\\xce\\xed\\x5f\\x78\\xf7\\xf1\\xfa\\x62\\x29\\xbe\\xf8\\x78\\x79\\x3c\\x58\\x47\\x28\\xab\\xf4\\x51\\x0b\\x7f\\x27\\x79\\x4b\\x59\\x42\\x91\\x62\\x54\\xc5\\x89\\xa0\\x9c\\x8e\\x91\\x1f\\x0b\\x95\\x42\\x11\\xa6\\x36\\x99\\xa7\\x52\\x14\\x7f\\x2a\\x4e\\x1a\\x18\\x95\\x66\\x44\\xbe\\xa2\\xca\\x26\\x92\\xba\\x18\\x22\\x80\\xe0\\x4a\\x72\\xdd\\x89\\xb0\\xd1\\x26\\x85\\x00\\x93\\x8f\\x34\\x7b\\xf4\\x3f\\x2a\\x24\\x2e\\xe9\\xb9\\xa6\\xba\\xac\\x9b\\x35\\x0d\\x65\\x6f\\xb1\\x9e\\xc8\\x34\\xab\\xe3\\x16\\x44\\x40\\xf2\\xd2\\x07\\x1f\\xe5\\xe3\\x2c\\x8e\\x4c\\xf9\\x05\\x53\\x9b\\x83\\x9c\\xee\\xca\\x26\\x20\\xfc\\xb2\\xa0\\x87\\xf7\\x80\\xe6\\xc7\\xf5\\xe0\\x5c\\x50\\x68\\x88\\x25\\x0e\\xa7\\xc8\\x56\\xfb\\x30\\x98\\x32\\x00\\xaa\\x8f\\x78\\xfc\\x17\\x71\\x05\\x4a\\xda\\x0f\\x3f\\xac\\x38\\xae\\x2f\\x33\\xdc\\x4a\\x4f\\x85\\x1b\\x76\\xed\\x74\\x0c\\x09\\x62\\xa7\\x6a\\x4d\\xe4\\x40\\x80\\xdc\\x62\\x0a\\x44\\xad\\x8f\\x23\\xd3\\x46\\x2b\\x79\\x2a\\xb3\\xaf\\xb1\\x9c\\xb8\\xa9\\xf4\\xd9\\xe5\\x9a\\xd7\\x65\\xa7\\x71\\x89\\x9d\\xa8\\xcb\\xec\\x89\\xe5\\x07\\x7e\\x85\\xc0\\xc9\\x31\\x26\\x37\\x6c\\x94\\x1b\\xef\\x1f\\x8b\\xb9\\x92\\xd3\\xa3\\x5f\\x27\\x07\\x25\\x84\\x6f\\xb2\\x52\\xf8\\xb5\\xfb\\xb7\\x56\\x7e\\x40\\x6a\\x1b\\x53\\xb6\\x19\\x76\\x9e\\x63\\x2b\\x2b\\x40\\x87\\xcd\\x4c\\x27\\x6e\\x5d\\x58\\xff\\x2b\\x56\\xe8\\x9e\\xde\\xc4\\x8c\\xe5\\x3a\\x52\\xe3\\x29\\xca\\x15\\x59\\x53\\x8f\\x10\\x90\\x2c\\x01\\xa8\\x5f\\xbb\\x3c\\xd7\\x2e\\x6b\\x82\\x91\\xe5\\xfe\\x63\\x9b\\xee\\x9d\\x47\\xd3\\x4c\\x24\\x9a\\x7a\\x07\\xd7\\xa1\\x42\\x7a\\x01\\xf6\\x3d\\x60\\x98\\x4c\\x45\\x0b\\xef\\x81\\x9b\\x19\\xf6\\x5e\\x26\\x14\\xfd\\x9c\\x2f\\xae\\x7b\\x92\\x31\\xa0\\xbc\\xa4\\x14\\xed\\x94\\xa5\\xee\\x7e\\x66\\x32\\x7d\\x2a\\x99\\xc8\\x48\\x78\\xb7\\xbe\\xe0\\x87\\xe8\\x91\\xf2\\x53\\xfa\\x1f\\xec\\xe3\\x13\\x64\\x8c\\x06\\xc4\\x5d\\xb2\\xd9\\xf3\\xbc\\x85\\x99\\x93\\x7b\\x75\\x2d\\x38\\xce\\x50\\x63\\xd0\\xed\\x9a\\x43\\xec\\x9d\\x40\\x15\\x89\\x3d\\x43\\xbf\\x5b\\x2d\\x1c\\x60\\x47\\x85\\x10\\x46\\x89\\x68\\xb7\\x96\\xf0\\x15\\x37\\x89\\x59\\x54\\x41\\x72\\x2a\"},\n{{0x8b,0x3d,0xcd,0xe4,0xab,0xbf,0x4e,0x62,0x11,0xc4,0xa5,0x1c,0x4b,0x02,0x68,0x00,0xa8,0xa2,0xa0,0x61,0xcb,0x38,0xa2,0xec,0xc7,0xc9,0xcf,0x11,0x3f,0x92,0x70,0xbf,},{0x51,0x45,0x35,0x58,0x0f,0x0d,0xe3,0x59,0xbb,0x0d,0x41,0xf2,0xef,0xdd,0xaa,0x04,0xc2,0xec,0x95,0x01,0x19,0xf3,0x16,0x34,0xb2,0xc1,0xa3,0x2f,0x19,0x5f,0x69,0x68,},{0x4f,0x3d,0x4d,0x22,0x85,0x03,0x01,0x7e,0x74,0xa6,0xbb,0x58,0xaa,0xfa,0xe3,0x5c,0x3f,0x37,0xbd,0xee,0x4f,0xf6,0xbe,0x2e,0x62,0x40,0xb5,0x08,0x2f,0xed,0xdb,0x22,0x27,0x35,0xe1,0x2f,0x31,0xe0,0x56,0xfa,0x68,0x54,0x47,0xe5,0x38,0x48,0x03,0x00,0x7e,0xa7,0x91,0x0e,0x60,0x5c,0x1b,0x78,0x11,0x8c,0xd5,0xac,0xc5,0x87,0xa6,0x06,},\"\\x48\\x14\\x25\\x02\\x7d\\xa6\\x72\\xb6\\xf2\\x6c\\x91\\xb8\\x0e\\x55\\x58\\x2c\\xae\\xf4\\x7b\\xb1\\x5a\\x2d\\xe8\\xfc\\xa8\\x52\\x22\\x17\\x85\\x18\\x0b\\x20\\xa7\\xfd\\x6d\\x49\\x07\\xb5\\x88\\x1c\\xc1\\xd6\\xe3\\x9a\\xb9\\x61\\x2c\\xc7\\x4d\\x69\\x77\\xe9\\x14\\x1f\\x70\\x87\\xbb\\x27\\xab\\x30\\x84\\xa2\\x62\\x85\\x58\\x6f\\x84\\x11\\xdb\\x1f\\x50\\x3a\\xdf\\x52\\xdc\\xb2\\x5a\\xb8\\xff\\xfd\\x2e\\xc1\\x50\\x4c\\x17\\x77\\xb9\\xd6\\xdd\\x4a\\x29\\xe2\\x01\\x9e\\x5c\\xba\\xe1\\xb7\\xeb\\x26\\xf9\\x5b\\xbe\\x07\\xd9\\x0c\\x2f\\x6f\\xb0\\x88\\x4a\\x59\\xa8\\xd5\\x8d\\xde\\x51\\x16\\xed\\xc3\\xbc\\x34\\x9d\\x37\\xc1\\x60\\xb2\\x7b\\xef\\xbe\\x5a\\x5c\\x18\\x1c\\xe7\\x25\\x63\\x92\\x35\\x4d\\x22\\x1b\\x58\\xc4\\x7e\\xb0\\xbb\\x10\\x92\\x9e\\x74\\x21\\x79\\x5f\\x4b\\x7a\\x7c\\x27\\x5e\\xdd\\x08\\xc0\\x88\\x56\\x87\\x72\\xe9\\x93\\x21\\x8d\\xd6\\xf3\\xc2\\xcb\\x4a\\xc6\\x57\\xa0\\xa3\\xf9\\x1f\\x31\\x26\\xb9\\x91\\xad\\xf6\\xcb\\xe7\\xd1\\xb1\\x9b\\x8c\\xd8\\x3b\\xe3\\x60\\x2e\\xd1\\x8f\\x03\\x96\\x33\\xfb\\xd2\\x38\\x7b\\xda\\x69\\xe2\\xcf\\x03\\x87\\xd8\\x64\\x4d\\x97\\xb3\\x03\\xfb\\x00\\x63\\x9a\\xee\\xe7\\xae\\x46\\x3f\\x6f\\xe1\\xa2\\xc4\\xb8\\x9a\\xeb\\xa3\\xe9\\x09\\x4c\\x11\\xfc\\x29\\x11\\x4b\\x20\\x28\\x3f\\x28\\x7c\\x6d\\xd2\\x8c\\xb0\\x98\\xda\\xe8\\xda\\xbc\\x48\\xe8\\x5b\\xb5\\x9c\\x0d\\xc6\\xe7\\x8c\\x95\\x66\\x05\\xcb\\x7c\\xf0\\x69\\x42\\x35\\x3e\\x7a\\x22\\xe9\\x6f\\x80\\xa3\\x7a\\x66\\xf7\\x18\\xd9\\xe4\\xdb\\x8c\\x52\\x45\\x2a\\xa0\\xa3\\x57\\x72\\xe8\\x1b\\xa2\\xb3\\x03\\x20\\x5b\\x41\\x2d\\xd2\\xbf\\xc1\\x5c\\xe9\\xb4\\x36\\xf9\\x9f\\xbb\\x32\\x12\\x6b\\x63\\xce\\x9c\\xb4\\x31\\x99\\xf1\\x57\\xd8\\x17\\x51\\xa7\\xc4\\x93\\x7d\\x13\\xaf\\x4c\\x58\\x29\\x52\\xb5\\xd6\\x06\\xb5\\x55\\xb0\\x46\\xbf\\x1d\\xe0\\x6c\\xf3\\x9b\\x63\\xa8\\x02\\x87\\x37\\x18\\x03\\x60\\x9a\\x38\\x7e\\xe8\\x0f\\x3a\\x5d\\x88\\xb9\\xd6\\x21\\x96\\x50\\xed\\x17\\xd3\\xcc\\x18\\x3b\\x2c\\x70\\xd5\\xeb\\x94\\xe3\\xbc\\x52\\xae\\xa7\\xaa\\x7f\\x53\\xbe\\x0e\\x20\\xb8\\x97\\x2f\\x14\\x3d\\x8e\\x20\\x16\\x2e\\x80\\x3e\\xdb\\x4a\\xa8\\x3d\\x55\\x53\\xfd\\xd5\\x53\\x39\\x8b\\x0f\\xa1\\x76\\xb9\\x59\\xcb\\xa1\\x40\\xd6\\xe9\\x80\\xc9\\x25\\x1b\\x0f\\xa0\\xb6\\x5e\\x90\\x84\\x17\\xf8\\x2f\\x45\\x1f\\xf9\\xf2\\xde\\x6b\\x9c\\xa5\\xe3\\xb5\\xf4\\x1b\\xa4\\x0d\\x05\\xa5\\x4f\\x3d\\xab\\x48\\x86\\xaa\\xcc\\xa0\\x5c\\x9c\\x27\\x98\\x13\\x9a\\x4c\\xb3\\x3e\\x96\\xa9\\x14\\x94\\x74\\x99\\x10\\xa1\\x7c\\xe8\\xb3\\x92\\xfc\\x0f\\xc7\\x76\\x29\\x74\\xd7\\x9d\\x33\\xdb\\x92\\x4b\\xfe\\xf8\\x65\\x5a\\x72\\x37\\x76\\xff\\x87\\xf9\\x50\\xfd\\xc5\\x68\\xb1\\xe5\\x26\\x53\\x45\\x41\\xf5\\x72\\x72\\x3b\\x84\\x06\\x63\\xc1\\x91\\x88\\xc4\\x24\\xf7\\xc4\\x89\\x23\\x5a\\x42\\x4b\\x09\\xfe\\x25\\xc3\\x07\\x27\\xea\\x1c\\xb0\\x49\\x53\\xd7\\x06\\xd6\\x8b\\xfe\\x12\\x10\\x0e\\xf6\\xf6\\x4c\\x35\\xc6\\xb8\\xde\\x67\\xed\\xf0\\xe3\\xad\\x01\\x4a\\x40\\x0e\\x82\\x1e\\xa3\\x40\\x24\\x32\\x19\\x99\\x86\\x7b\\x43\\xc8\\x2c\\x45\\x01\\x84\\xb7\\x8f\\x74\\x25\\xce\\xbd\\x73\\x19\\xdc\\x6f\\x65\\xd3\\x60\\x66\\x5d\\xfb\\xe7\\xc3\\x66\\x74\\xda\\xc3\\xa5\\x4e\\x96\\xda\\x91\\x0c\\x02\\xd3\\x64\\x07\\x80\\xb2\\x2d\\x51\\x2c\\xa0\\xe3\\xca\\x35\\x87\\xb9\\x4e\\xa9\\xfc\\xd7\\xa3\\x1b\\x4a\\xf6\\x9f\\xd6\\x20\\x7c\\x68\\xfe\\xd2\\x5f\\x89\\x92\\x1c\\x1c\\xdc\\xde\\xfd\\x1c\\x09\\x02\\x04\\x49\\x2b\\xff\\x9b\\xbb\\x52\\xe0\\x88\\x85\\x82\\x9d\\x01\\x2b\\xc2\\xdf\\xb4\\xfe\\x8c\\x35\\xe5\\x9c\\xd1\\x3b\\xcb\\x8e\\xad\\x34\\x19\\x3c\\x40\\xb0\\x3e\\xe4\\xd8\\x25\\xee\\x13\\x22\\xff\\x4e\\xf0\\x71\\x27\\x95\\x74\\xcb\\xae\\xe7\\xc0\\x7f\\x14\\xbe\\x60\\x6b\\x9c\\xd0\\xe2\\x61\\x11\\x1e\\xf2\\x0d\\x96\\x81\\xd7\\x6c\\xf7\\x8c\\x89\\xa8\\xc3\\x97\\xd6\\xb8\\xdc\\x77\\x8f\\x49\\x84\\x16\\x6a\\xd5\\xdf\\x3a\\x81\\xaa\\xf2\\xe6\\xde\\x09\\xf7\\x00\\x19\\x5a\\xe2\\xc1\\xd4\\x60\\x96\\x47\"},\n{{0xd4,0xa7,0xa9,0x52,0x4d,0x30,0xa6,0x33,0x7c,0x0a,0x0b,0xe9,0x5c,0xa9,0x05,0x91,0xde,0x98,0x88,0x03,0x8e,0x3e,0x59,0xe1,0xb2,0x5a,0x41,0x81,0xef,0x94,0x66,0x29,},{0x9f,0xc3,0xeb,0xd1,0x39,0xcc,0x5b,0x7c,0x0e,0x05,0xaf,0x47,0xbf,0xf6,0x61,0x9b,0x81,0x28,0x15,0xbb,0x01,0xce,0xec,0x39,0x2a,0x3f,0xf0,0xae,0xc3,0x81,0x1d,0x2c,},{0xd1,0x57,0x88,0xbc,0xd8,0x8d,0x1d,0x81,0xb9,0xe6,0x1d,0x4f,0xe2,0x6e,0xa4,0x9e,0x66,0x81,0x9a,0x59,0xd2,0xae,0x48,0x32,0x32,0x1b,0x81,0x4d,0x50,0x62,0xfa,0xdb,0x87,0x80,0x7d,0xb6,0x85,0x2e,0x1d,0x82,0x95,0xe3,0x1a,0x29,0x1b,0x1e,0x78,0x5d,0x01,0xd8,0x34,0x89,0x5f,0x88,0xf4,0x00,0xdf,0x88,0x32,0xc1,0x60,0x7b,0x5b,0x0c,},\"\\x17\\x19\\x80\\xc0\\x3f\\xdf\\x7a\\x72\\x7b\\xd5\\xba\\xb3\\xba\\x09\\x45\\xe6\\xad\\x5f\\xaf\\x0a\\x7f\\x50\\x6a\\x56\\xd1\\xd0\\xed\\xd9\\xa3\\x06\\xb3\\x15\\x8d\\x84\\x32\\x66\\xd3\\x09\\x1f\\xc1\\xe4\\x22\\x81\\xdf\\x97\\x55\\x9a\\x22\\x01\\xf5\\xbd\\xdd\\xfe\\x68\\x3d\\x0e\\x10\\x28\\xd1\\xd9\\x5b\\x2f\\x31\\x3b\\x48\\x4c\\x39\\x2f\\xfd\\xb1\\xcd\\xf8\\x85\\x08\\xaf\\xde\\x3d\\x6f\\xd2\\xa1\\x28\\x88\\xba\\xce\\xde\\xb7\\x9f\\xf3\\xdb\\x40\\xc9\\xac\\x0e\\xc3\\xfb\\x90\\x1b\\x22\\x86\\x98\\xad\\xf8\\xd8\\x45\\xff\\x4f\\xce\\x10\\xde\\x55\\xd4\\x24\\x36\\xdc\\xe9\\x30\\x97\\x3a\\x34\\xbe\\x05\\xd1\\x40\\x1f\\x33\\x4d\\x4c\\xe8\\xe3\\xa7\\x93\\x79\\x9e\\xaf\\xdb\\x94\\xd0\\xf2\\xab\\x09\\x50\\xb0\\x79\\xe6\\x65\\x3e\\xeb\\x49\\x9f\\xc7\\x44\\x7c\\xcb\\xee\\xed\\x8d\\xbd\\x54\\x56\\x80\\x8c\\xd7\\xa3\\x8f\\x9a\\x15\\xa2\\xa9\\xc7\\x38\\xd6\\x13\\x34\\xca\\xb8\\xce\\xeb\\xbb\\xf4\\xa4\\x81\\x4d\\x94\\xc6\\x18\\x59\\x17\\x87\\x84\\x60\\x4e\\x0c\\x21\\x54\\x59\\x7e\\x72\\xcf\\x58\\x7c\\xd1\\xf5\\xda\\xfe\\x59\\x22\\x05\\x18\\x90\\xe7\\x6d\\x61\\x6d\\x8c\\xd5\\xb0\\x5d\\x64\\x78\\xd0\\x62\\x6e\\xa8\\x3c\\xe8\\x08\\xc4\\x61\\x43\\xe6\\xfb\\x06\\xb4\\x18\\x2d\\x22\\x8d\\xa8\\xf6\\xd4\\x13\\x9e\\xca\\x5b\\x8f\\x3b\\x1b\\x98\\xaf\\x68\\xc5\\x9b\\x4b\\x5a\\x53\\xc1\\x36\\xee\\x90\\x43\\x2a\\xca\\x2b\\xb9\\x15\\x52\\x9d\\x26\\x36\\x79\\x49\\x82\\x62\\x33\\xb4\\x3e\\x55\\x80\\x4b\\x55\\xfc\\x9f\\x21\\x5e\\xb0\\xb0\\xb7\\x92\\x91\\x46\\x5b\\xb3\\x4e\\xda\\xea\\xdf\\xfa\\xbf\\xe6\\xcf\\x41\\xbc\\x07\\xb5\\xdd\\x4d\\x01\\x42\\xf0\\x36\\x1f\\x05\\x8e\\xe1\\xb3\\xb9\\xfc\\xc1\\x96\\xeb\\x9b\\x35\\xb1\\x34\\xbe\\x3d\\x1d\\x23\\x20\\x04\\x48\\x9e\\x8f\\x69\\x93\\xf6\\x25\\xa6\\x30\\x15\\xbc\\xd3\\xf1\\xe8\\x75\\x88\\x32\\x48\\x58\\xcc\\xfb\\x77\\x0d\\xdd\\xd8\\x94\\xbf\\x29\\x7b\\xd7\\x63\\xef\\x58\\x28\\xe2\\x1f\\x5c\\x89\\xaa\\x98\\xcf\\xbc\\x1c\\x08\\x2d\\xd7\\xfb\\xaa\\x43\\x07\\xbd\\xa4\\x0b\\x4a\\x75\\x8c\\xa8\\xf3\\x9f\\x4e\\x4a\\xae\\xd3\\x09\\x04\\x12\\x68\\xdb\\xcf\\x0a\\xf3\\x2d\\xe0\\xd7\\xfa\\x90\\xa5\\x23\\x96\\x3b\\x78\\x0b\\x6a\\x93\\x2c\\xf8\\x94\\x99\\x02\\x5f\\x0e\\x0d\\x04\\x74\\xc7\\x43\\x48\\x94\\x75\\x10\\xe6\\xc5\\xec\\x7c\\x9e\\x05\\x06\\x6e\\xeb\\x4a\\x73\\x52\\x0c\\x3d\\x92\\x7c\\x39\\xac\\x26\\xad\\x75\\x96\\x32\\x5b\\x2c\\xc4\\x7c\\x5e\\x82\\xa7\\x75\\x45\\x5b\\x7a\\xf0\\x31\\x20\\xb1\\xcf\\xbf\\xd6\\xec\\x3f\\xc0\\xc3\\xbe\\x60\\x78\\xb0\\x0c\\xfd\\xf8\\x34\\x2a\\xe8\\xbf\\x14\\x71\\x59\\xf5\\x0e\\x9d\\x56\\x4e\\x2f\\x68\\x30\\x6d\\xae\\x3c\\xae\\xdd\\x10\\x19\\xf3\\x23\\xc4\\x78\\xa1\\xe1\\xf6\\x75\\x98\\xdd\\x83\\x4b\\xd1\\xd1\\xa8\\x73\\x3f\\xd7\\xfd\\xd8\\xa8\\x76\\x52\\x6c\\x53\\x15\\x18\\x93\\x6e\\xdb\\x72\\xd0\\x16\\x56\\xb3\\x44\\xc7\\xd6\\x5a\\xc1\\xce\\xe3\\x7c\\xe5\\x99\\x7b\\xa4\\x8d\\x3f\\x4d\\x06\\x4d\\x88\\x05\\x7e\\xfe\\x9a\\x48\\x2d\\x9e\\x00\\xab\\x5c\\xae\\xb5\\xac\\xa2\\xd6\\x60\\xe3\\x37\\xbd\\x15\\x48\\x73\\x65\\x69\\x79\\x56\\xa5\\xe4\\x7b\\x02\\xab\\xdc\\x30\\xd8\\xe3\\x53\\xfe\\xd4\\xe1\\xac\\x41\\xd2\\xbc\\x21\\x20\\x02\\x11\\x43\\x63\\x59\\x35\\xc6\\x20\\x18\\x6a\\x52\\x2b\\xde\\x54\\xbe\\x04\\x46\\xfb\\xd2\\xdc\\x88\\xb5\\x63\\x04\\xb3\\xa6\\x42\\x27\\xd0\\xac\\xd5\\xf8\\x5a\\x6b\\x67\\x87\\xa3\\xad\\xcf\\x2d\\x7c\\xfc\\x86\\xc6\\x34\\xb4\\xd7\\xab\\x43\\x15\\xb9\\x7d\\xe9\\xe6\\x66\\xcf\\xf3\\xff\\x1b\\x88\\xf3\\x29\\x5e\\x7b\\xab\\x9e\\x9f\\xd4\\x6f\\xaf\\xdd\\xb4\\xf5\\xfa\\xc5\\x1c\\xc0\\x17\\x01\\x29\\xc6\\x51\\xb4\\xef\\x4d\\x39\\x50\\xd6\\x94\\x2f\\xf0\\x20\\xd1\\x66\\x8a\\x52\\x8b\\xde\\x1d\\xa9\\x36\\xc0\\xec\\x1a\\xe0\\x9e\\x84\\xf8\\x20\\x58\\x61\\xff\\xf4\\x91\\x50\\x2a\\x87\\x2c\\x81\\x54\\xa9\\x6e\\x7e\\xa2\\x5e\\xda\\x95\\x5a\\x7f\\xd2\\xe4\\xb4\\xc7\\xa8\\xd2\\x73\\xf6\\x0b\\xc7\\x4f\\xab\\x7b\\x49\\x68\\xca\\x6f\\x75\\xda\\xea\\x50\\x40\\xf8\\x39\\xfd\\x56\\xc2\\xa9\\x80\"},\n{{0xd0,0x8f,0x4b,0xab,0xba,0x3b,0x53,0x65,0xfa,0xf7,0x38,0x79,0x5c,0x9d,0xa4,0x5d,0xb1,0x86,0x2c,0xb2,0x8b,0x93,0xeb,0x66,0x35,0xd1,0x32,0x0d,0xa0,0xf4,0xd9,0x37,},{0xef,0x31,0xb4,0x54,0xf7,0x34,0xe5,0x2b,0x34,0x38,0xee,0x2f,0x1c,0xbc,0x35,0x63,0x1b,0x19,0x69,0xde,0x54,0xac,0x98,0xfe,0x46,0x33,0xf2,0xf5,0x00,0xac,0x87,0x12,},{0xac,0xeb,0xe4,0xc8,0x6f,0xa9,0xfe,0x2c,0x1a,0x5c,0x57,0x6a,0xc0,0x50,0x1e,0x8a,0xb0,0xf6,0x40,0xfa,0x40,0x38,0x05,0x36,0xfc,0xf9,0x50,0x59,0xd5,0x3d,0x4a,0x35,0x55,0xd2,0x20,0xac,0x36,0x35,0x87,0x17,0x5e,0x4b,0xde,0x16,0x3c,0x0d,0x00,0x65,0x0a,0x12,0x96,0x3d,0x46,0x76,0x6c,0x99,0xbb,0x62,0xbf,0x75,0x73,0xe2,0x87,0x0c,},\"\\xa3\\x94\\xd8\\x85\\x4c\\xeb\\x5c\\x43\\xaf\\xee\\x1a\\x48\\x92\\x6b\\xbd\\x66\\x85\\xaa\\x8a\\xec\\xfd\\xcf\\x85\\x41\\x33\\x33\\x39\\x74\\xd6\\x24\\xbf\\x2f\\x1f\\x9c\\x30\\xf0\\x05\\xbb\\xf3\\x4c\\xee\\x3a\\xfe\\x2b\\x29\\x06\\x00\\xee\\xae\\x6f\\x1d\\xd1\\x2a\\x0c\\x34\\x6f\\xbb\\x2a\\xb9\\xc9\\x16\\xc5\\xd5\\xd8\\x0d\\xcd\\x87\\x88\\x78\\x75\\xa0\\xac\\x84\\x76\\x78\\x03\\x9f\\xdc\\xd3\\xa9\\x79\\x35\\x41\\xf5\\xd6\\x75\\x14\\x3a\\x6a\\xba\\xdc\\x3b\\x18\\xf0\\xfe\\xf5\\x10\\x8c\\x19\\xc2\\xdb\\xfb\\x59\\x71\\x0e\\xef\\x98\\x66\\xa4\\xf3\\xf2\\x97\\xa0\\x9e\\xe4\\x8c\\x68\\x03\\x00\\x7d\\xd6\\xba\\x8f\\xd4\\xbe\\x84\\x1c\\xfb\\x10\\xff\\x05\\x14\\xc3\\x0f\\xc4\\xdd\\x49\\xa3\\xcd\\x43\\xbb\\xd1\\x6e\\x46\\x04\\x43\\xa1\\x1a\\xfe\\x64\\x9e\\x90\\x1d\\x63\\xd8\\x9a\\xf5\\x98\\xaa\\x68\\x6b\\x2f\\x60\\x7e\\xc1\\x1f\\x35\\xe1\\x7a\\x79\\x8a\\x42\\x13\\xb7\\x5a\\x38\\x78\\x8d\\xa4\\xf2\\x7c\\xf2\\xb0\\x2c\\xad\\xdf\\xe6\\x1c\\x37\\x29\\xa8\\x7e\\xc6\\xe6\\xb0\\x98\\xf6\\x8e\\x7a\\xed\\x28\\xa8\\x00\\xc4\\x84\\xdf\\xa0\\x13\\x04\\x01\\x20\\x8f\\x98\\x6d\\x79\\x2f\\x54\\x63\\x5a\\xdd\\x28\\x48\\xe1\\x51\\x26\\x2a\\x36\\x5e\\xb2\\x1e\\x27\\x27\\x19\\x1e\\x1f\\x70\\x0f\\x3b\\xf5\\xc7\\x3b\\x0f\\xb4\\xc5\\x46\\xd0\\x04\\x8a\\x15\\x5c\\x18\\x71\\x79\\x20\\xfc\\x04\\x25\\xc8\\xc8\\xfa\\x8f\\x16\\x7c\\x43\\xa2\\x77\\xbb\\x36\\x6e\\x0a\\xd7\\x02\\xc8\\x9b\\xc5\\xaa\\x06\\xfd\\x47\\x09\\x43\\xbe\\x05\\xcb\\x9e\\x32\\x59\\x78\\x72\\x29\\x71\\x4c\\x30\\xa4\\xe8\\x7b\\x00\\xa6\\x33\\xaa\\xf7\\xbe\\x6b\\x58\\x75\\x01\\x0d\\x12\\xe1\\x07\\xc9\\xa5\\x26\\x1c\\xa5\\x62\\xd6\\x70\\x25\\xbe\\xa0\\xfe\\x22\\x34\\x63\\xed\\xb9\\x2e\\xa0\\x1c\\xca\\x92\\xc4\\x4f\\xf2\\x4d\\xa9\\xd8\\xa8\\x0a\\x64\\x21\\xf3\\xd4\\x13\\x5d\\x64\\x7d\\x1b\\xb0\\xfd\\x98\\x8c\\x46\\xc8\\xa1\\x70\\xce\\xb4\\xf3\\x3f\\xff\\x9c\\x0f\\xfb\\x6a\\xba\\xd1\\x09\\x2c\\x84\\xdf\\xad\\x82\\x90\\x89\\x8b\\x24\\x95\\x16\\xa2\\x92\\xe8\\xda\\x96\\xfd\\x51\\xa8\\x10\\x05\\xee\\xcf\\xde\\xbb\\x05\\x93\\x30\\x99\\x27\\x7d\\x07\\x3a\\x48\\x0c\\x3f\\x9e\\xb8\\xaa\\x11\\x96\\x8c\\x4d\\x8d\\xc0\\x78\\x7a\\x9a\\xec\\x3e\\x05\\x27\\xb7\\xfe\\x4c\\x06\\x35\\x41\\x13\\x35\\xa1\\x81\\x16\\x89\\xe8\\x8f\\x6d\\x5c\\xed\\x0d\\x40\\xd6\\xb4\\x8b\\x7f\\x2d\\x99\\x29\\x52\\x93\\x48\\x94\\x15\\x30\\x76\\xa8\\xd3\\x73\\x72\\xfa\\x00\\xd9\\xce\\xfc\\x5c\\xf8\\xc2\\x6a\\xdb\\x5a\\xcf\\x32\\x5a\\x01\\xcd\\x00\\x5a\\xb8\\xd4\\x74\\xa5\\x2d\\x67\\x11\\x40\\x78\\xc6\\x51\\x6a\\xef\\x80\\x4b\\xba\\x19\\xb8\\x87\\xa2\\x8e\\xd5\\xe4\\x6e\\xe9\\x99\\x5e\\x5a\\xd3\\xa8\\x2f\\xb9\\xcd\\x93\\x28\\x34\\x33\\x68\\x09\\x21\\x11\\x4b\\x4d\\x9a\\xf8\\xfc\\xb6\\xb2\\xb5\\x35\\x83\\x9c\\x36\\xde\\x8d\\xf1\\x2b\\x17\\xea\\x6d\\xdc\\xfc\\xb3\\x33\\x4f\\xf4\\x0e\\x6c\\xf0\\x4c\\xcd\\x5c\\xa6\\x40\\x3b\\xa0\\xb6\\x2b\\x4c\\xb7\\x1b\\xbd\\xe9\\x1d\\x8b\\xab\\xda\\x69\\x15\\x2c\\x9c\\x93\\xae\\x76\\x9b\\x55\\x29\\xc8\\xd5\\x2f\\xd9\\xa6\\x90\\x9a\\x15\\xe1\\xa0\\x60\\x1a\\x71\\x46\\x49\\xc9\\x6e\\xc9\\x96\\xc1\\x70\\x6d\\x10\\x21\\xb9\\x74\\x87\\x98\\x0d\\x7b\\x2c\\x2a\\x39\\xbb\\xb0\\xe4\\x70\\xd8\\xe4\\x6a\\xc4\\xaa\\x60\\x9a\\x09\\x22\\xc9\\xbd\\xc0\\x16\\x12\\xea\\xde\\xac\\xcd\\x5f\\xa5\\x23\\xb2\\xa8\\xd0\\xe6\\x2f\\xfe\\x56\\x28\\x16\\x47\\xd6\\x1f\\xff\\xbb\\xc8\\x40\\x53\\x57\\x45\\xd1\\x44\\x25\\x9c\\xc8\\x13\\x00\\xfe\\x99\\xdf\\xbf\\xfe\\xa6\\xb0\\xb9\\xbc\\xd2\\x84\\x73\\x98\\x2d\\x32\\xe9\\x3e\\xd4\\x66\\x34\\xa9\\x98\\x79\\x06\\xd6\\xf4\\x89\\x39\\xd8\\xdf\\xbf\\xb3\\x7d\\x33\\xb8\\x88\\xdb\\x60\\x8c\\xb2\\xff\\xe3\\x9a\\x8c\\xf6\\x7b\\x72\\x64\\x46\\x11\\xc7\\xd3\\x2a\\x4a\\x8d\\xf6\\x12\\x46\\x8c\\xd5\\xe5\\xd7\\x5f\\xbb\\xa7\\x9e\\x63\\x8a\\xa1\\xda\\xa2\\x8c\\x4e\\x0e\\xeb\\x9a\\x63\\x7f\\xf8\\xa0\\x8b\\x65\\xf7\\xa7\\x61\\x24\\x14\\xdf\\x76\\xbc\\x7b\\x0b\\x56\\xb5\\x53\\x7d\\x66\\x6f\\xac\\xfd\\xda\\xf6\\x5a\\xf1\"},\n{{0x8f,0x47,0x4f,0x88,0xcf,0x86,0x3c,0x48,0x54,0x56,0xa5,0xa2,0x15,0x52,0x81,0xff,0x27,0xb2,0x84,0x59,0xf6,0x3b,0xc4,0xf1,0xdb,0x00,0xe0,0x03,0x10,0x64,0xf6,0x49,},{0x43,0x14,0x4a,0x32,0x9d,0x75,0x1d,0x04,0xe0,0x71,0x69,0xb7,0x79,0xee,0x92,0x0d,0xd0,0x29,0xcb,0x44,0x5b,0xf3,0x76,0xba,0x3a,0x66,0x85,0x72,0x18,0x23,0x44,0xa3,},{0xf6,0x1f,0x78,0x07,0xc3,0x3e,0x19,0x6d,0x0f,0xe1,0x82,0xef,0xa4,0xd4,0x51,0x6a,0x98,0x15,0xdd,0xd4,0x49,0x53,0x8b,0xba,0xa6,0xb8,0x6b,0x69,0x01,0xa0,0x5f,0x5d,0xdd,0xa0,0x60,0x1e,0xc9,0x0f,0x39,0xf1,0x55,0x47,0x79,0xdb,0x7a,0x09,0xa6,0x05,0x72,0xef,0xfd,0x4d,0x12,0x8d,0x0d,0x3c,0x2d,0xd4,0xe8,0x83,0x57,0x4b,0xc6,0x0b,},\"\\x84\\x08\\x91\\xd9\\x48\\xec\\x19\\xc8\\xc7\\xf7\\xc9\\xd3\\xc4\\x77\\x53\\x62\\xa5\\x44\\xa0\\xec\\x97\\x45\\x7a\\xb5\\xd1\\x4e\\x12\\x5d\\xc5\\x4b\\x59\\xc8\\xdc\\x9a\\x63\\x5e\\x7b\\xad\\xb6\\xbe\\x73\\xc3\\xa5\\x8d\\xc0\\xe9\\x92\\x9f\\x2b\\x42\\x0d\\x83\\x56\\xd6\\x17\\xc3\\xd4\\x1b\\xfe\\x69\\xb4\\xe1\\x58\\xd4\\xbf\\x08\\xfb\\x17\\xe6\\x88\\xd3\\xcf\\x3c\\x94\\x8b\\x69\\xb3\\x5f\\x0b\\x6d\\xb6\\x62\\x72\\xa8\\xeb\\x2b\\xd4\\x10\\xd6\\x50\\x9f\\x6c\\x82\\x8b\\x6a\\x20\\xd6\\x58\\x6e\\xaf\\x85\\x76\\x01\\xed\\x9d\\x60\\x54\\x79\\x9c\\x25\\x32\\x0e\\xba\\x80\\x77\\xfe\\x1a\\xe2\\x26\\x71\\xb3\\x3a\\x15\\x88\\xff\\x2b\\x23\\x5d\\x3c\\x71\\xa2\\x7c\\xe5\\xc6\\xc6\\x6e\\x18\\x88\\x91\\x98\\xd1\\x16\\x93\\x36\\x76\\xbc\\x4f\\xb0\\x71\\x0d\\xb7\\xff\\x1a\\xc2\\xf2\\x0c\\xe3\\x69\\xbe\\xf5\\x6b\\x43\\xcd\\x1d\\x40\\x6c\\xef\\xda\\xcf\\x00\\xf1\\xf3\\x48\\xb8\\xca\\x7a\\xa6\\x14\\xdb\\x11\\xa3\\xa6\\x40\\xfd\\xb5\\x93\\x89\\xd1\\xa6\\xa3\\x94\\x75\\x5c\\x13\\x3f\\x1b\\x01\\x9c\\x83\\x08\\xca\\x5a\\x95\\x1e\\x73\\xb8\\x10\\xa1\\x80\\xf6\\xff\\x25\\xb2\\x9d\\xbb\\xcc\\xef\\x4c\\x13\\xa9\\x75\\x03\\x39\\x39\\x07\\xa2\\xdb\\xa0\\x96\\xa8\\xce\\x5c\\x86\\xc0\\xee\\x6f\\x97\\xc1\\x44\\x1b\\x8d\\x63\\x31\\xcb\\xa5\\x3b\\x19\\x60\\x6b\\x42\\x1a\\xf5\\x2f\\x65\\xf9\\xc6\\x63\\xe6\\x3d\\x39\\x82\\x71\\x8f\\x94\\x8c\\x6b\\xae\\x96\\x1b\\x8e\\x4b\\xf8\\xcd\\x9e\\x31\\xcd\\x09\\x92\\x8e\\x4e\\x80\\x61\\x65\\x97\\xcc\\xfa\\xdc\\xb8\\xa6\\x14\\x15\\x49\\x33\\xbc\\x37\\x58\\x9c\\x85\\xc7\\x76\\xe3\\x4e\\x5a\\x90\\x66\\x0f\\x59\\xa6\\x5b\\x5e\\x93\\xad\\x43\\x88\\x42\\xf9\\x82\\xd0\\x2b\\x04\\x1e\\x6d\\xbd\\xdf\\x17\\x10\\x99\\xf8\\xdb\\x70\\x99\\x57\\x31\\xa0\\xdb\\x8c\\x46\\x25\\xc9\\xbc\\xa7\\x10\\x80\\x59\\x61\\xfb\\x17\\x6d\\xae\\x81\\x97\\x68\\xfc\\xad\\x7f\\xf9\\xbf\\xce\\x36\\x40\\x3c\\xa7\\xf7\\x83\\xe7\\x61\\x37\\x26\\xd7\\xdc\\x59\\xf2\\x4e\\x24\\x7c\\xf1\\x50\\x68\\xff\\x3b\\x19\\xc7\\x25\\xfa\\xd6\\x5e\\xa8\\xe8\\xa7\\xf7\\x22\\xd5\\x28\\xc9\\x5f\\xce\\xf1\\xc0\\xcc\\x79\\xd1\\x8e\\xf0\\x7c\\xee\\x8b\\x01\\x1e\\xea\\xbd\\x99\\x21\\x63\\x4d\\x76\\xa6\\x1a\\x8a\\x3c\\x89\\x31\\xb8\\x27\\xe8\\x18\\x98\\x81\\xf8\\x1f\\x7a\\x17\\x5f\\x21\\xfb\\x03\\x78\\xb8\\x18\\x8e\\x58\\xbd\\xb2\\x01\\x7b\\xef\\x39\\x0f\\x18\\x00\\xd9\\xd7\\x4f\\x26\\x3a\\x81\\xdf\\x8e\\x67\\x52\\x2d\\x09\\x2e\\x77\\x5d\\x01\\xe0\\x04\\xe7\\xf8\\xd8\\x28\\x1a\\xe2\\xc2\\xfd\\xf8\\xc3\\xa4\\x45\\xf9\\xef\\xf7\\xfd\\xf1\\x3f\\x26\\x1a\\x77\\x3d\\xdf\\x2d\\xd9\\xcc\\x6b\\xa5\\x58\\x5d\\x99\\x0c\\x99\\x5e\\x6e\\xb8\\x9d\\xff\\xd9\\xff\\x0a\\x9d\\xbb\\x76\\xce\\x5e\\x10\\xdd\\x02\\x72\\xd5\\x00\\x14\\x97\\x88\\x13\\x66\\xf5\\xd6\\x36\\xa9\\xcc\\xea\\xa2\\x83\\x22\\x8d\\x3a\\xc6\\x14\\xdb\\x21\\x7a\\xb8\\x91\\xd6\\x68\\x9d\\xbe\\xb9\\x50\\xe1\\x20\\x0c\\x3d\\xe5\\x3b\\xc5\\xda\\x07\\xf1\\xd3\\x63\\xda\\xe9\\xbe\\x6e\\xc3\\x6e\\xda\\x6e\\x68\\x7d\\x26\\x29\\x0f\\x7a\\xbc\\xa2\\x68\\xa7\\xfa\\x03\\xd9\\x31\\x88\\x64\\xed\\xa9\\xa1\\x1e\\x3b\\x26\\x14\\x06\\x05\\x92\\x0a\\xc1\\x3a\\xde\\xc1\\xb5\\x54\\x8c\\x9a\\x7a\\x32\\x15\\xa5\\x87\\x6b\\x7e\\x94\\x1a\\xfa\\x1c\\xb5\\xd7\\xf7\\xf0\\xc1\\x16\\x30\\xcd\\x42\\x9f\\x3b\\x2b\\x37\\xdc\\x76\\xc6\\xcb\\xea\\x4f\\x3b\\x72\\x6a\\xa8\\xa5\\xf8\\xb9\\xf7\\x05\\xb0\\x5d\\x7e\\x94\\x51\\x95\\x6f\\x8a\\xf1\\x3c\\xe0\\xa8\\x59\\x55\\xc7\\x13\\x5d\\x64\\xad\\xe5\\x49\\x6e\\xa5\\x42\\xe7\\x0f\\x8d\\xa5\\xb5\\x73\\xaa\\xf1\\x37\\x08\\x5d\\xc9\\x6c\\x69\\x27\\x09\\x96\\x95\\x67\\x26\\x68\\xb3\\xc7\\xc6\\xf9\\x3c\\x97\\x7a\\x4e\\x8e\\x9e\\x77\\x02\\x95\\xf2\\x0d\\x52\\xdf\\xf1\\x87\\xf8\\xdb\\xb2\\x5e\\xe7\\xe7\\x74\\x02\\x4e\\xb9\\xbe\\x08\\x12\\x1e\\xd7\\x4b\\x6d\\x54\\x62\\xf4\\xbb\\x7d\\xc2\\x00\\x38\\x74\\xca\\xa3\\x1b\\xb7\\x59\\x5c\\xd9\\x3a\\x99\\xeb\\xe1\\xef\\xf9\\x28\\xbb\\x5f\\xcb\\x9e\\x9c\\x89\\xdd\\x31\\xd4\\x87\\xfc\\x0e\\x20\\xbb\\xe1\\x50\"},\n{{0xe4,0x2b,0x30,0xd4,0x9c,0x43,0xc4,0xfa,0xd8,0x3d,0xd5,0x1f,0xdc,0x2a,0x4a,0xc5,0x90,0x13,0x27,0xad,0xd8,0x00,0xb6,0x69,0x72,0xc8,0xc7,0x0b,0xde,0x18,0x0a,0xdc,},{0xf7,0x34,0xaa,0xfa,0xa4,0xdb,0xaf,0x31,0x5c,0x25,0x8c,0xca,0x8b,0xbc,0x1d,0x4f,0x34,0xe8,0x36,0x01,0x10,0x98,0x74,0x22,0x2a,0xa0,0x55,0x89,0xf3,0xa6,0x63,0x5f,},{0xff,0x8e,0x07,0x6e,0x34,0x3c,0x8b,0x73,0xaa,0x45,0x3b,0xfe,0xe9,0xb2,0xba,0xb6,0xd5,0xc2,0xf7,0x4c,0x35,0xe1,0xba,0xd1,0xe5,0x2a,0xe7,0x77,0xd6,0x9f,0x79,0x76,0x40,0x83,0xf9,0x94,0x36,0x8a,0x1a,0xc8,0x51,0xa6,0x41,0xcd,0x24,0x70,0x08,0xa3,0x4f,0x3b,0x60,0x89,0x62,0xf4,0xdd,0x51,0x09,0xac,0x71,0xcc,0xe9,0x78,0xec,0x02,},\"\\x0d\\x49\\x70\\x51\\x86\\x1e\\x22\\xd8\\xa9\\xc6\\x0e\\x5f\\x7d\\xe6\\xc8\\x95\\xcb\\xa3\\x35\\xb2\\xe8\\x2e\\x60\\x21\\x18\\xad\\x83\\x42\\xb4\\xd4\\xed\\xaa\\x80\\xf9\\x5e\\xfb\\xb5\\x9c\\xfd\\xa1\\xfc\\xc0\\x29\\x17\\x25\\x70\\x0e\\x8a\\x81\\xbb\\x12\\xa0\\xb8\\x62\\x3b\\x1f\\xe2\\x89\\x1b\\x8d\\x98\\xf7\\xa8\\x4c\\x59\\xfd\\x92\\xf8\\xa7\\xad\\xfc\\x06\\x50\\x42\\xf7\\xf4\\xfd\\x7e\\x1a\\x79\\xf5\\x5a\\x1d\\x4d\\x5e\\x54\\xe0\\x4e\\x67\\x2f\\x1c\\x9e\\x4c\\x4c\\xd8\\xd0\\x00\\x3f\\x3c\\xd5\\x4b\\x76\\xe2\\x16\\x3d\\xd7\\x37\\xac\\xb2\\xde\\x5c\\x26\\x3a\\xc1\\x02\\xa4\\x8f\\x69\\x6b\\x60\\xca\\xf9\\xbe\\x39\\xc6\\x65\\xcc\\xe1\\xe0\\xf3\\xd4\\x98\\x55\\x3f\\x57\\x90\\x61\\x88\\x9a\\x5e\\xc5\\x60\\x3e\\x4d\\x14\\x1c\\xfd\\xed\\xe8\\xe7\\x31\\x75\\x72\\xcf\\xe7\\x6a\\x0f\\x48\\xe4\\xae\\x06\\x06\\x2c\\x91\\x57\\xb5\\xea\\xac\\x34\\x68\\x93\\x81\\x92\\xdb\\x4b\\x16\\x10\\x5c\\x73\\x64\\xa9\\x44\\x32\\xb2\\x15\\xa7\\x17\\x97\\xfe\\xe1\\x4c\\x3c\\x9c\\xe2\\xf7\\x46\\xed\\x79\\x03\\x02\\xfc\\x41\\xdc\\x49\\x2d\\x37\\xd9\\xef\\x02\\x4a\\xb5\\x1d\\xa3\\xbd\\xaf\\x0f\\x81\\xd9\\xa9\\x30\\xaa\\x0e\\x02\\x5c\\x04\\xfd\\x71\\x02\\x6b\\x6a\\xfe\\xb7\\xed\\x01\\xa9\\x1a\\x1e\\xfd\\x6c\\x39\\xf5\\xe4\\x47\\xc6\\x6d\\xd3\\x8a\\x76\\x56\\xc6\\x13\\xd0\\x21\\x26\\xf3\\x58\\x5d\\xfa\\xa0\\x2d\\xf9\\x30\\x25\\x3f\\x83\\xbd\\x42\\x19\\x64\\x63\\xeb\\xc5\\x0f\\x8c\\xfc\\x94\\x9e\\xd3\\x50\\x39\\x2e\\x61\\xce\\xec\\x13\\x09\\xda\\x15\\xa4\\x32\\xf8\\x0d\\xfe\\x94\\x8e\\x26\\x1c\\xe6\\xd8\\x42\\x1c\\x54\\x59\\xcd\\x21\\xf3\\xff\\xa2\\xed\\xb5\\x00\\x98\\x2b\\x2a\\xbf\\xa5\\x2e\\x82\\x43\\x7c\\xa2\\x30\\xf6\\x09\\x11\\x63\\x20\\xd9\\x89\\x3e\\xb8\\x2a\\x14\\xdf\\x72\\xb7\\x73\\x66\\x67\\x51\\x6f\\xc0\\x12\\xb2\\x8a\\x03\\xc9\\xdd\\x88\\xea\\x43\\x08\\xd8\\xce\\xea\\x44\\xcc\\x60\\x44\\x54\\xcd\\xfa\\x2c\\x79\\x76\\x15\\xbc\\x0a\\x6b\\x3e\\x00\\x89\\xaf\\x0a\\x81\\xbe\\x54\\xd1\\xb1\\x10\\xa1\\x3a\\xb9\\x11\\xb4\\x52\\xc3\\x42\\x80\\x0c\\xee\\x2a\\xd2\\x39\\xa2\\xb1\\x88\\xa7\\xfa\\x87\\x5e\\x94\\x1d\\xaa\\xeb\\xcf\\xc8\\x8b\\x70\\xae\\x4b\\x1c\\x57\\x5c\\xdb\\x6e\\x6d\\x89\\x44\\x81\\x36\\xf6\\x0e\\xe8\\x1c\\x70\\x3c\\x47\\x82\\x2d\\x2c\\x0e\\x50\\xc7\\xf1\\xe8\\xb7\\xfc\\x7e\\xbd\\x80\\x78\\x9f\\xcd\\x7e\\x06\\xc7\\xe5\\x0b\\x5f\\xc8\\xb7\\x76\\xe8\\xb9\\xa4\\xcd\\x59\\x05\\xa2\\x90\\x69\\xbc\\x3a\\x55\\x8d\\x7c\\xab\\xce\\x2a\\xf4\\xf3\\x10\\x76\\x7d\\x5b\\x11\\x7e\\x30\\x76\\xb3\\xa0\\xd5\\x27\\x17\\x55\\x43\\xb2\\xcc\\xea\\x28\\xd5\\xf7\\x16\\xfa\\xc3\\x2e\\xfe\\xd3\\xd2\\xe0\\x27\\x6b\\xe4\\x4a\\x89\\x56\\xfc\\x82\\x40\\xf2\\xdb\\x33\\x97\\x61\\x4f\\x2f\\x2d\\xa0\\x21\\x66\\x69\\x4e\\xc6\\xa7\\xfe\\xec\\x6e\\xce\\x39\\xd7\\x2b\\x64\\xbb\\xc6\\xb4\\x76\\xa4\\xf8\\x4f\\x8d\\x87\\x93\\x80\\xa3\\x84\\x88\\xe4\\xd6\\xe5\\x8c\\xac\\x03\\x90\\xae\\x25\\xa5\\xfc\\xb7\\x3d\\x47\\x41\\x4b\\x4c\\x26\\xbb\\xb9\\xb4\\xcc\\x66\\xe4\\x25\\x94\\xbd\\x56\\xd8\\x41\\xa3\\x60\\x92\\x34\\x91\\xd1\\x17\\xbe\\x2c\\x6e\\xb2\\x32\\x0f\\x3c\\x61\\x75\\xe4\\x4e\\x27\\xb6\\x65\\x3c\\x5d\\xac\\x6f\\xae\\x73\\x60\\x0b\\x67\\x96\\x0d\\xca\\x50\\xaa\\x85\\x5a\\x89\\xe0\\xff\\x51\\x1e\\xa0\\x4f\\x14\\x3e\\x89\\xf1\\xda\\x02\\x84\\x76\\xbe\\x4b\\xf6\\xd9\\x4c\\x80\\xff\\x72\\x63\\x39\\xe8\\xbc\\xfb\\x7d\\xd9\\xf8\\xcf\\x20\\x22\\x59\\xc0\\xac\\xb6\\x27\\x6c\\x28\\x1e\\x38\\x47\\xc2\\xcc\\x8d\\x2f\\xba\\x84\\x43\\x8d\\x2d\\x3c\\x60\\x31\\xf2\\xa7\\xb9\\x5c\\x1d\\x8f\\x9f\\x3c\\xc8\\x6a\\x5e\\xff\\x65\\xcc\\x01\\x1d\\xe9\\x5a\\xd8\\x96\\x85\\x8e\\x1f\\x7f\\x6d\\x6b\\x94\\xbf\\x49\\xdf\\xff\\x5d\\xe2\\xd7\\xfd\\x71\\xef\\x10\\x81\\x34\\x28\\x5f\\x61\\xae\\x47\\x54\\x83\\x44\\x2d\\xc9\\x0b\\xf0\\x13\\xfa\\xed\\xf3\\x77\\x1c\\x47\\xc5\\xb9\\x6d\\xc3\\xcf\\x8e\\x48\\x51\\x00\\x60\\xad\\x8d\\x45\\xfd\\x54\\x61\\x62\\x27\\x80\\xd8\\x69\\xd4\\x61\\x7b\\x57\\xfe\\x3c\\xb5\\xcc\\x02\\x03\\x15\\x3a\\xae\"},\n{{0x5c,0xb5,0x14,0x21,0x74,0x82,0xbf,0x42,0xf6,0x11,0xfc,0xec,0x36,0xa5,0x28,0x68,0x07,0xc2,0xbd,0xbb,0x56,0x96,0x76,0x91,0x35,0x3f,0x54,0x31,0x0e,0x1a,0xd5,0x53,},{0x28,0x06,0x99,0x00,0x3d,0x5d,0x3e,0x1c,0x05,0xad,0x10,0xfb,0x10,0x95,0x9b,0xbc,0x59,0x5c,0xfe,0x21,0x30,0x69,0x96,0x5c,0xd8,0xcf,0x39,0xdd,0x42,0x6a,0x05,0x68,},{0xd5,0x3e,0xe2,0xe0,0xf0,0xfd,0x65,0x7b,0x20,0x52,0x47,0x8f,0xd1,0x5d,0xf1,0xd3,0x8f,0xe0,0xe9,0x3a,0x54,0x83,0xeb,0x4a,0x6e,0x7d,0xe9,0x3d,0x02,0xa4,0xcd,0x54,0x4d,0x8f,0xdd,0xdc,0xea,0x82,0x2b,0x71,0x57,0x6e,0xd0,0x28,0x53,0xd9,0xa6,0xb1,0x4e,0x1a,0x54,0x8a,0xef,0xe9,0x0d,0x92,0xf8,0x83,0x79,0x2b,0x7f,0x1d,0x86,0x09,},\"\\x2f\\x57\\x25\\x8c\\xca\\x79\\x32\\xe5\\x8b\\xed\\x54\\x6c\\xb0\\x04\\x11\\x15\\xbb\\xad\\x23\\xd1\\x83\\x46\\xef\\x7a\\xb5\\xe3\\x11\\x00\\x82\\xb3\\xa9\\x71\\x2f\\x6c\\xbe\\x12\\x70\\xe6\\xdc\\x0c\\xea\\x33\\x64\\xa0\\x6a\\x5f\\x2f\\x28\\x3e\\xc3\\x9b\\x63\\x05\\x8d\\x34\\xd5\\x99\\x79\\x07\\x2f\\xcb\\xbd\\x7a\\x5d\\x0f\\x44\\x2b\\xbd\\xf0\\x82\\xd5\\xbf\\xe2\\x99\\x8a\\xeb\\x51\\xbd\\x26\\x12\\x78\\x03\\xe5\\xc7\\x96\\xc3\\x88\\x43\\x20\\x0a\\xe2\\xf6\\xe6\\x05\\xaf\\x31\\x2f\\x54\\xfd\\xff\\x17\\xed\\x1d\\xfa\\xa8\\x9d\\x28\\xfa\\x67\\xdc\\xe4\\x62\\xde\\x4f\\xe2\\x52\\x68\\x21\\x2b\\x28\\x2e\\x22\\x2a\\x44\\x3e\\x2f\\x31\\xe2\\x69\\x05\\x41\\x71\\xaa\\x73\\xc7\\x19\\xa8\\x96\\xcd\\xb7\\xa5\\x39\\xdf\\xd1\\xd4\\x29\\x91\\x97\\x81\\x97\\xd7\\xc4\\xf2\\xd3\\x0a\\x64\\x1b\\xe3\\x4b\\xf1\\x38\\x0a\\x4f\\x4d\\xc6\\xd9\\xb1\\x01\\x63\\x66\\x36\\xa4\\x96\\xbe\\xb3\\x57\\xe3\\x47\\xc1\\x66\\x65\\x16\\xdf\\x8e\\xb5\\x60\\xa0\\xe0\\xd1\\xe1\\x52\\x9c\\xe3\\x6a\\x60\\xe0\\x0e\\xd2\\x78\\xda\\x38\\x02\\xbe\\x19\\x23\\x42\\x98\\x9b\\xb6\\x11\\xb4\\xe3\\xcb\\xd9\\xc3\\x7e\\x8c\\xce\\x07\\xef\\xc1\\x2d\\x29\\xbe\\xfd\\x7e\\x2f\\x3a\\xdb\\x13\\xd2\\x8f\\x70\\x8d\\x97\\xb6\\x3e\\x10\\x74\\x82\\xc8\\x62\\x95\\x6d\\x7c\\xe8\\xdf\\xc2\\xaf\\x5c\\xac\\x8d\\x51\\x65\\x92\\x67\\xb0\\xbb\\xed\\xdd\\x5e\\xfa\\x41\\x4d\\xde\\xab\\xd1\\x7b\\x23\\xca\\x6e\\x84\\x3f\\xf4\\x9e\\xff\\xc8\\x2a\\x5d\\x07\\xe3\\x6a\\x83\\xb6\\x7c\\x2a\\xd7\\xe4\\x8e\\xb9\\x99\\x0b\\x42\\x1c\\x55\\x58\\x00\\x9b\\xd6\\x93\\x4e\\x86\\xd5\\x4a\\x8a\\x6a\\xc4\\x07\\x87\\x96\\xe3\\x05\\xc7\\xcc\\x81\\x0d\\x3f\\x66\\xea\\x6b\\x95\\x04\\xfe\\x0a\\xe6\\x75\\x7c\\x50\\x4c\\x55\\x52\\x53\\x0a\\x6f\\x8b\\xbb\\x52\\x40\\x9b\\xe0\\x79\\xd8\\xe4\\xa2\\x8a\\x6f\\xd7\\xdc\\x89\\x35\\xf8\\xeb\\x94\\x98\\xad\\xc0\\xf2\\x3d\\x08\\x07\\xec\\x86\\x29\\x5f\\x48\\x98\\xf5\\xd0\\x5e\\x15\\x0b\\xdc\\x43\\xaa\\x8b\\x7b\\xdc\\x89\\x3a\\x0a\\x68\\x4c\\x30\\x63\\x89\\x8b\\x6c\\x95\\xe7\\xd5\\x6a\\x4c\\x10\\x26\\x90\\x43\\x8e\\x9d\\xf9\\x97\\x58\\xa9\\x0f\\x47\\xc6\\x08\\xda\\xcc\\x4c\\xa2\\x40\\x26\\x6f\\xab\\xa3\\x5f\\xa1\\xeb\\x2e\\xaa\\xbe\\x28\\x8d\\x2c\\x2a\\xd5\\x0b\\x6c\\xbf\\x10\\x7c\\x00\\x25\\x75\\xe9\\x1f\\xf4\\x72\\xa4\\x41\\x79\\x40\\x66\\x7b\\xe8\\x18\\x01\\x73\\x85\\x4c\\x93\\xdf\\x84\\x46\\x4b\\xcd\\x31\\x2b\\x7a\\x7a\\xe4\\xdc\\x2b\\x90\\x59\\xfb\\xe6\\xf8\\x3f\\x53\\x80\\x64\\x25\\xbd\\xff\\x03\\x1c\\x6a\\xed\\x6e\\xfa\\xfd\\x9d\\xe8\\xdc\\xd0\\xdf\\xab\\xea\\x8e\\x6f\\xa6\\x81\\xe9\\x91\\x93\\xfb\\x3c\\x64\\x7e\\x44\\x21\\x12\\xc9\\xa2\\x3f\\x59\\x6e\\x65\\x41\\x1d\\x8d\\x6b\\xfc\\x39\\x23\\x00\\x4e\\xce\\x91\\xea\\x6d\\xeb\\x88\\x11\\x11\\xb1\\xdc\\x29\\x94\\x3f\\x57\\x89\\x81\\xee\\x8c\\x3b\\xce\\x85\\x25\\xf7\\x85\\x65\\xf3\\x4b\\x85\\xff\\x20\\x01\\x5f\\xea\\xe8\\x46\\xf9\\x5b\\x18\\x70\\x0b\\xc5\\xcd\\xf1\\x4b\\x2d\\xb6\\xca\\xc6\\x98\\x14\\xd6\\x3d\\x74\\xbf\\x20\\x32\\x93\\x03\\xe5\\xca\\x9f\\x04\\x73\\x1f\\x68\\x81\\xce\\xc6\\xd3\\xab\\xf8\\x7f\\x5e\\xac\\x08\\x73\\x4f\\xaa\\x34\\xcf\\xf4\\xd3\\xcd\\x9a\\x4a\\x11\\xd7\\xb1\\x2f\\x73\\x25\\x3b\\x4d\\xd0\\xa4\\x31\\x78\\xf0\\xd3\\xc1\\x9c\\x0c\\x40\\xd9\\xed\\x91\\x8d\\xd1\\x76\\x46\\xf6\\x16\\xaf\\x79\\xfd\\xf6\\x19\\x42\\x62\\xf0\\xfa\\x4f\\x71\\xb3\\x18\\x7d\\xed\\xca\\x48\\xd9\\xcb\\xcc\\x19\\x93\\x1a\\x15\\x19\\x67\\x74\\x56\\x25\\x6e\\xd3\\x83\\x54\\x56\\x7c\\x3a\\x67\\x57\\x1c\\xdf\\x82\\x17\\x0a\\x2c\\x85\\xbd\\x2c\\x5e\\x68\\xe0\\x5a\\x0f\\x3b\\x93\\x90\\x3f\\x19\\x1b\\x89\\x4f\\x84\\x94\\x6f\\x89\\x00\\x05\\x68\\x05\\x4c\\x1c\\xea\\x9f\\xd0\\xb8\\xbb\\x55\\x01\\x95\\x06\\xc5\\x43\\x41\\xc2\\x49\\x31\\x98\\x45\\x48\\xba\\x45\\x8a\\x4d\\x81\\x30\\x89\\x89\\x6e\\x86\\xa2\\xdc\\x33\\xd9\\x46\\x04\\x00\\x3f\\x35\\x4a\\x7c\\xc9\\x41\\xc7\\x54\\xaa\\xea\\x24\\x25\\x3c\\xbe\\x4c\\xf2\\x14\\x7f\\xfe\\xc5\\xe7\\xb9\\x50\\xcb\\xf2\\x8e\\x28\\x44\\x81\"},\n{{0x87,0xd3,0xba,0x95,0xc4,0x0d,0xf8,0x00,0x69,0xb1,0x79,0x7d,0xdf,0x68,0xe8,0x66,0xe6,0x6d,0x46,0xc5,0x1f,0xde,0x60,0xe7,0x68,0xa9,0xdb,0xc5,0xc9,0x2f,0x57,0xa9,},{0x2b,0x81,0x2b,0x2c,0x9b,0x60,0xff,0x31,0x97,0x5c,0x42,0x9a,0x86,0x73,0x6d,0xcc,0x17,0xa5,0x8d,0x3d,0xc1,0xda,0xa3,0x46,0x23,0xa4,0xbb,0xcb,0xe2,0xcc,0x05,0x81,},{0xfa,0x0d,0x12,0xcd,0x53,0x23,0x6c,0x41,0x08,0x6b,0xea,0x8c,0x0c,0xc6,0x0b,0x77,0x64,0xa3,0xed,0x72,0xbd,0xeb,0x9d,0x1a,0xe5,0xee,0xac,0xb4,0x88,0x11,0xfe,0x52,0x97,0x62,0xa2,0xc6,0xf2,0xbb,0x06,0xd9,0xb3,0x18,0x21,0x8d,0x96,0x8f,0x64,0x44,0x35,0x49,0x7a,0x1b,0xd0,0xd0,0xd8,0xc1,0x61,0x2a,0xb8,0x99,0x6d,0x98,0xd7,0x07,},\"\\xe1\\x12\\x56\\xf8\\x2a\\xd7\\x6f\\x3f\\x4a\\x49\\xd7\\xba\\xd3\\xce\\xd8\\x71\\x8d\\x36\\xd2\\xf2\\xbb\\x3d\\x31\\xbb\\x61\\xed\\xd1\\xec\\xbc\\xee\\x66\\x21\\xfd\\x2e\\xee\\xd3\\xe3\\xde\\xb5\\x97\\xb1\\x49\\xff\\x71\\xb8\\x51\\xf6\\x1c\\x8c\\x68\\x19\\xe1\\x31\\xf9\\xa2\\xaf\\x76\\x73\\xc3\\xf2\\x07\\x02\\xac\\xfd\\xc8\\xb8\\xf9\\x06\\x4b\\x41\\x5c\\x9a\\x3e\\x35\\x56\\x8e\\x37\\x1d\\x74\\x0a\\x38\\x12\\x7c\\x1f\\x27\\xb3\\x91\\xb4\\x5d\\x07\\x04\\x5a\\xea\\xf0\\x0a\\x54\\xe5\\xb7\\xfa\\x54\\x8a\\xfb\\x5f\\x96\\xfe\\xb5\\xf5\\xb4\\x4f\\x60\\xcd\\x17\\x07\\xe8\\xfa\\x95\\x67\\xf7\\x80\\x6e\\x15\\xf6\\xa0\\x1a\\xa0\\x20\\x77\\x73\\x3f\\xe7\\x38\\xb0\\x8f\\x21\\xef\\xbc\\xf9\\x8c\\x19\\xd5\\xb9\\x70\\xe6\\x16\\x3e\\x5f\\xe8\\xf4\\x80\\x0e\\xf9\\xed\\x22\\xa0\\xf9\\xb5\\x12\\x6f\\xf1\\xeb\\x1c\\x7d\\x65\\x01\\x9c\\x8b\\x44\\x03\\x91\\x92\\x70\\x29\\xb8\\x13\\xda\\xb7\\xc7\\xe8\\x63\\xd4\\x82\\x29\\xf8\\xdf\\x85\\x39\\x43\\x45\\xfc\\xc8\\x8a\\x30\\x0f\\x60\\xa8\\xd5\\x16\\xd8\\x77\\xa5\\xa3\\xa7\\xe3\\xc4\\x9a\\x9e\\xb0\\x6c\\xd9\\xf2\\x66\\x5c\\xe2\\xa8\\x90\\x22\\x96\\x2b\\x1d\\x49\\x59\\x2b\\x09\\xc7\\x54\\x3d\\xa8\\x35\\xce\\x63\\xbc\\x9a\\xbb\\x82\\x21\\x45\\x76\\x2b\\x71\\xcb\\xe1\\x50\\x29\\x2c\\xe5\\xc8\\x70\\x4e\\x5a\\xd3\\x4f\\xb4\\x59\\x2f\\x97\\x20\\x44\\xe4\\x3e\\x69\\xf0\\xe1\\x67\\x2d\\x6c\\x83\\xcf\\x25\\xaa\\xc6\\x8e\\xfe\\x3d\\x27\\xaf\\x2a\\xd3\\x42\\x74\\xb9\\xd2\\xb7\\x77\\x42\\xd9\\xc6\\xdf\\xbd\\x57\\xf9\\x2f\\xf6\\x4d\\x3e\\x4c\\x67\\xc5\\x41\\xd8\\x50\\x2a\\x7d\\x03\\x18\\x95\\xaf\\x85\\x31\\x9a\\x4e\\xae\\x2d\\x25\\x43\\x35\\x83\\x5e\\xff\\x11\\xe7\\xa3\\x67\\x1a\\x6a\\x0d\\x21\\xb7\\x2c\\xe1\\xfc\\x2a\\xcb\\xa1\\xa9\\x20\\x18\\x38\\x34\\xbc\\x0a\\x4b\\x73\\xf6\\x39\\xff\\xcb\\x0f\\x6b\\x81\\xcd\\x92\\x0f\\x2e\\x94\\x20\\xd6\\x12\\x16\\x6d\\x56\\x82\\xa0\\x60\\x60\\xea\\x0b\\x6f\\xa6\\x95\\xfe\\xcc\\x77\\x04\\xbb\\xe4\\xb0\\x52\\xaa\\x3e\\xc8\\xf7\\x20\\xf7\\xd4\\xf3\\x2e\\x8a\\xff\\x86\\xb8\\x0b\\x8c\\x1c\\xc1\\x27\\x64\\xa0\\x48\\x74\\x03\\x7c\\x31\\x03\\xe9\\xdf\\xec\\xb8\\xf7\\xab\\xcb\\x0e\\x07\\x3b\\x23\\xe6\\x7c\\xa0\\xa9\\xb1\\xfc\\x72\\x99\\x3a\\xbf\\x31\\xdb\\xc2\\x4a\\x8f\\xee\\x09\\x5b\\x32\\x51\\xc2\\x26\\x26\\xaf\\x5d\\xd1\\xb6\\xd3\\x4b\\xe5\\xea\\x06\\xa0\\x2a\\xe1\\x76\\xc7\\xb8\\xcb\\x9d\\x06\\x35\\x01\\xbe\\x6f\\x61\\x20\\x82\\x88\\x9f\\xdb\\xdc\\xbf\\xad\\xc3\\x3a\\x0d\\x31\\x1b\\x08\\x0b\\x8d\\x64\\xe4\\x9f\\x16\\xb1\\x6d\\xd8\\xed\\xd3\\xb2\\xed\\x11\\x93\\xa7\\x4e\\x5b\\xe5\\x07\\x60\\x9b\\x04\\x27\\x27\\xcc\\xf0\\x8a\\xfb\\x05\\xcc\\x6c\\x50\\x52\\x4e\\xf0\\xe2\\x66\\x46\\x21\\xdc\\x8b\\x05\\xb1\\x5f\\xfa\\x81\\xab\\x6f\\x7e\\x3c\\x8a\\x5b\\xb3\\xea\\xb1\\xf6\\x8e\\x36\\x56\\xc1\\x19\\xd9\\x69\\xe4\\x14\\x4c\\xf3\\x28\\x5a\\xf2\\x3c\\x04\\xdb\\xec\\xc0\\x38\\xae\\xfd\\x91\\x83\\xc4\\xe7\\x24\\x47\\xb2\\xaa\\xa8\\x31\\x5f\\x46\\x96\\xce\\x6d\\x1e\\xf4\\x29\\xba\\x0e\\x5c\\x3d\\x5f\\xfa\\x7f\\x05\\x0b\\xe3\\x9c\\x7f\\x61\\x2f\\x4e\\x10\\xf8\\xef\\x07\\x0d\\xf7\\x2f\\x8a\\xdd\\xbe\\xaf\\x33\\x39\\xc1\\xad\\x8b\\x5f\\xc3\\x9a\\x2e\\xcf\\x29\\xa8\\x7f\\x82\\xe2\\x9a\\x01\\x17\\xba\\xac\\x66\\x25\\xad\\x5c\\x80\\xcf\\xe7\\x59\\xfa\\x1d\\xbc\\xfa\\xa1\\x2b\\x37\\x44\\x77\\xd8\\x0b\\xfc\\xf0\\x67\\x96\\xc3\\x0f\\x2c\\x39\\xcf\\x03\\x03\\xd0\\x0d\\xc5\\x6a\\x32\\xd1\\xd0\\x39\\x59\\x2d\\xdb\\x06\\xc2\\x2a\\xa0\\x68\\x84\\x1c\\x0b\\x46\\xfd\\x48\\xdf\\x8f\\xbb\\x74\\x92\\xcc\\xbc\\x59\\x0c\\x56\\x3c\\x8f\\xec\\xce\\x42\\x63\\xc8\\xc7\\x53\\x92\\x18\\xbb\\x97\\xb3\\x57\\x11\\x53\\x7e\\x98\\x81\\x95\\xdb\\xf5\\xbc\\xd5\\xcc\\xaf\\x06\\xfa\\xf5\\x08\\x47\\x09\\x77\\xa5\\x35\\x8e\\x6f\\x02\\x60\\x83\\x49\\xfb\\xb9\\x9a\\x23\\xfb\\xe3\\x6b\\x8c\\x97\\x15\\x5a\\xdc\\x24\\x6a\\xd7\\xd9\\x3a\\x8c\\x20\\x3f\\x75\\x44\\x6c\\x83\\xc4\\x34\\x2c\\x35\\xba\\x10\\x4e\\xcc\\x67\\xe6\\x69\\xdb\\x4a\\x95\\x46\\x6e\\xe6\\x8f\\x45\\x8a\"},\n{{0x7c,0x27,0xae,0x47,0x07,0x2b,0x0c,0x9b,0x9c,0x2c,0x35,0x1f,0x13,0x27,0x89,0x98,0x95,0xef,0xa5,0x36,0xc9,0xc0,0x67,0xd0,0xe0,0xce,0x8e,0x82,0xe6,0x29,0x27,0x93,},{0xf9,0xfe,0xbd,0x12,0x1e,0x17,0xdb,0x72,0x29,0xb5,0x67,0x09,0x02,0x18,0x49,0xc3,0x5d,0x69,0xfa,0x08,0xb5,0x06,0x20,0xe6,0x67,0xf8,0x42,0xec,0x7a,0xc7,0x82,0xdc,},{0x32,0x71,0x96,0xdd,0xd4,0x3b,0xb6,0x02,0xd0,0x4d,0x19,0x64,0xcc,0xc0,0x59,0xed,0x62,0x7c,0xef,0x0a,0x88,0xd8,0xad,0x91,0xbe,0x49,0x31,0xf1,0x7c,0x25,0x0d,0x55,0x29,0xf5,0x52,0x79,0x4a,0x3e,0x26,0x9d,0x17,0xa6,0x3b,0xd3,0x29,0x33,0xeb,0x5e,0x51,0x9c,0x1d,0x50,0x65,0x74,0x77,0x0a,0xe4,0xa7,0x29,0x64,0xe0,0x6f,0x7d,0x00,},\"\\x15\\x47\\x87\\x6a\\x98\\x8d\\x1b\\xe7\\x14\\xa4\\x2f\\xb9\\x1c\\xb0\\x37\\x63\\xf1\\x91\\x3a\\x89\\x2e\\xcb\\xd4\\xde\\x2c\\xcf\\x83\\x44\\xd2\\x07\\x58\\xb7\\xb6\\xd0\\x02\\x59\\x10\\x1f\\xe9\\x72\\x25\\xb2\\x97\\xf8\\x7b\\xfe\\x22\\x20\\x04\\x32\\x5d\\xb7\\xf6\\x32\\xce\\xaf\\xfb\\xd1\\x34\\xc9\\x6c\\xbd\\x57\\xe9\\x85\\xbe\\xc8\\x43\\x4f\\x81\\xa4\\xee\\x6a\\xf8\\x5c\\x3f\\xad\\xe5\\x0e\\x4c\\x4e\\xf2\\x0c\\xb0\\x39\\x35\\x45\\xe4\\xd4\\xa8\\x6e\\x1f\\xa3\\x9a\\xaf\\x33\\x3f\\xe4\\xde\\xd0\\x54\\xbf\\xc0\\x50\\xa8\\x98\\x3a\\x03\\xdd\\x1e\\xcf\\x2b\\x5e\\x95\\x17\\xba\\xf9\\xe1\\x15\\x21\\x29\\xa8\\xa7\\x59\\x35\\x71\\x1e\\xdb\\x20\\xaf\\x5c\\x8c\\xf9\\xc6\\x94\\xa3\\x3c\\xee\\x45\\x1c\\xd9\\x50\\xb2\\xff\\xf0\\x8e\\x31\\x58\\xc5\\xcf\\xb7\\xb1\\x5c\\xb3\\xe9\\x0d\\x46\\xf4\\x94\\xb6\\xa1\\x08\\xd8\\x88\\x8d\\x5e\\xc2\\x9a\\x33\\xc0\\x66\\x02\\x3b\\x49\\x77\\x09\\xb2\\xd9\\x40\\x1f\\xea\\xf2\\xe7\\x4f\\xf2\\x6c\\x16\\xd3\\x6c\\x39\\xe6\\x51\\x7f\\xf9\\x54\\xbd\\x98\\xbc\\xe7\\x70\\x06\\x71\\x98\\x8f\\x66\\xe8\\x51\\x07\\x64\\x4b\\xa2\\xea\\x00\\x7a\\x13\\x01\\x8c\\x1c\\x14\\x4e\\x3c\\x5b\\xb8\\x0d\\xb9\\x51\\x1f\\xcc\\xa4\\x10\\x1b\\xf4\\x9f\\x8c\\x80\\xff\\x3c\\xa7\\xd2\\x98\\x25\\x7c\\xbf\\xea\\x62\\x9f\\x83\\xd5\\xe0\\x66\\x39\\xd3\\x1f\\x63\\x9d\\xb4\\xb8\\x72\\x6c\\xbe\\x22\\x4d\\x75\\x88\\x29\\xba\\xb1\\x09\\x05\\x17\\x1c\\x9c\\x0e\\xc3\\x70\\xd5\\x80\\x31\\xef\\xe4\\xcc\\x5a\\xe7\\x2a\\x49\\x5a\\xcf\\xf6\\xcb\\x2e\\xd9\\xee\\xc6\\x58\\xba\\x11\\x70\\x88\\xdd\\x3c\\x6e\\xd1\\xdf\\x8f\\x9c\\xb1\\x0b\\xd4\\xfe\\x0e\\x5e\\x8a\\xd9\\xf5\\x03\\x4e\\x34\\x65\\x2d\\x98\\x66\\x8d\\xb1\\x5c\\x85\\x33\\x39\\x3a\\x6e\\x9e\\xc0\\x87\\x0c\\x35\\x66\\x6c\\xe5\\x4e\\xfe\\x2b\\xcb\\x45\\xc3\\x4a\\x72\\x30\\xe6\\xa7\\x00\\x67\\x63\\x49\\xc7\\xb3\\xab\\xf3\\x1d\\xe7\\xb7\\xb0\\x52\\x1f\\x89\\xb3\\x0a\\xc4\\x03\\x4c\\x2a\\x4b\\xa8\\x21\\x8e\\xef\\xdf\\x8d\\x2a\\x5c\\x1f\\x8e\\xd9\\xb7\\x01\\x57\\x9e\\x47\\xaf\\x8a\\x52\\x9a\\x95\\xa1\\xff\\x64\\xd8\\xfd\\xb8\\x85\\xc3\\x68\\x39\\xb4\\xc5\\xf6\\xd7\\x2a\\x99\\x25\\x7e\\x86\\x78\\xdc\\xcf\\x31\\x27\\x54\\xb9\\xd4\\x61\\x9b\\xee\\xce\\xb8\\x25\\x52\\x6d\\xe6\\x22\\xbd\\x96\\x76\\xfd\\x5f\\x35\\x76\\x93\\xab\\xab\\x07\\x8b\\x9e\\x03\\xae\\x21\\xe8\\x7c\\xa1\\x61\\xe7\\x78\\xaf\\x77\\x09\\x6e\\xaa\\xc2\\xd2\\xd3\\x2b\\xfe\\xc8\\xec\\x94\\xaf\\x79\\x65\\xf6\\x1d\\x68\\xef\\x66\\xa4\\x52\\x3c\\x1c\\xc7\\x0c\\x95\\x19\\xb0\\x75\\x0b\\x3c\\x9e\\xed\\x5a\\xeb\\xa9\\xf0\\xa9\\xb7\\xef\\x52\\xcd\\x4a\\x2d\\xe2\\x9b\\x39\\x5b\\x70\\x5f\\xa5\\x3f\\x02\\x8f\\xa7\\x66\\x15\\x9f\\x20\\xe7\\x5f\\x4d\\x38\\x4e\\xc4\\xfd\\x66\\xdf\\x06\\xe7\\x44\\xc9\\x9a\\xc8\\x8c\\xb8\\x49\\xc2\\x85\\x75\\x7c\\xc5\\x57\\xe2\\xee\\xdd\\x86\\x95\\x9d\\xa2\\xc1\\xb8\\x1f\\x5b\\x27\\x15\\xa6\\x51\\x98\\x48\\x90\\x1a\\xe4\\xf8\\x9d\\x09\\x13\\xc8\\xde\\x57\\xc5\\x3d\\xad\\xf2\\xe5\\xe1\\xaa\\x2a\\x9c\\x5f\\x46\\x4f\\xc7\\x61\\x0e\\x8e\\xf5\\xf5\\xcd\\xd8\\x20\\x3a\\x67\\xa9\\x3c\\x33\\xa0\\x6d\\xab\\x35\\x8d\\xc5\\xae\\x23\\xed\\xfe\\xe6\\x33\\x42\\x62\\xf4\\x7b\\x19\\xb1\\x13\\xd6\\xca\\xfe\\xda\\xc1\\xb4\\x39\\x02\\x53\\x9d\\x74\\xfb\\xa2\\x9a\\xaa\\x7b\\xce\\x68\\x88\\x4b\\x72\\x61\\x6a\\x05\\x42\\xc9\\xfc\\x69\\x54\\x7c\\xd1\\x9a\\xe1\\xdf\\x01\\x72\\x3a\\xbd\\xda\\x65\\xe9\\xbf\\xac\\x5d\\xa0\\xd0\\x42\\x40\\xc6\\xa2\\x17\\x5c\\x00\\x62\\xe4\\xe1\\xed\\x8a\\x5b\\x39\\x7a\\xfc\\xd4\\xde\\x38\\xe8\\x62\\x09\\x27\\x2c\\x7a\\x42\\x4b\\x5a\\xe8\\xd5\\xa4\\x0b\\x48\\x4c\\xe1\\xb4\\x70\\x4a\\xf2\\x83\\x16\\x09\\xad\\x0f\\x36\\xe9\\x0e\\x07\\xb2\\xaf\\xed\\x01\\xdc\\x05\\x57\\x4a\\xd3\\x97\\x17\\x23\\xc5\\xb5\\xc1\\xdd\\xd4\\xfc\\x8b\\xd2\\x63\\xbc\\xdf\\x56\\x8a\\xf7\\x5e\\x73\\xd8\\xab\\xd1\\x00\\x8c\\x9e\\xc7\\x12\\xf8\\x0f\\xfc\\x65\\xac\\x34\\xe2\\xa7\\x93\\x04\\xea\\xde\\x1d\\x2a\\x1d\\xff\\xec\\x0e\\x4c\\x98\\xc3\\x58\\x24\\x68\\xf3\\x20\\xbf\\x8f\\x66\"},\n{{0x08,0xed,0xdc,0xb5,0x62,0x5a,0xe1,0x9f,0xfe,0x7b,0x49,0xa7,0xdc,0x82,0x9c,0x89,0x3c,0x75,0x38,0xb0,0x88,0x5e,0x18,0xf9,0x8d,0xb7,0x8c,0x8b,0xeb,0x56,0x9c,0x26,},{0x83,0x47,0x8b,0x1c,0x58,0x57,0x6a,0x0d,0x18,0x34,0xb2,0x8d,0x46,0xfb,0x80,0x51,0x6d,0x6f,0xb6,0xf9,0xf5,0x91,0x69,0x4b,0x44,0x35,0x2e,0xec,0xd1,0xe7,0xe8,0x9a,},{0xec,0xe7,0x53,0x22,0x99,0x51,0x54,0xb2,0x92,0x43,0x7e,0x47,0xd3,0x8a,0x6a,0x70,0xaf,0x37,0xe2,0x02,0x07,0x16,0xfd,0xe4,0x6b,0xfd,0x39,0x3b,0x3d,0x36,0x9b,0xdd,0xb5,0x32,0x53,0xb5,0x56,0x62,0x1c,0xfb,0x34,0xc8,0xa9,0x02,0x54,0xe1,0x32,0xfd,0x28,0xec,0xd0,0x98,0x43,0x34,0x13,0xa2,0x1b,0xd3,0xa9,0x79,0x8c,0xa1,0xf3,0x09,},\"\\x01\\x5b\\x1d\\x3e\\xeb\\x00\\x92\\x9e\\xa8\\x0b\\xd8\\x68\\x7d\\x18\\x28\\x6f\\x0a\\xdf\\xe6\\x45\\xcc\\xf2\\x5a\\x22\\xb5\\x06\\x19\\x21\\xe2\\xa0\\x30\\xfc\\x76\\xd0\\x33\\xfb\\x53\\xd0\\x93\\x7c\\x69\\xb3\\x1c\\x5b\\xe4\\x99\\x13\\xca\\x1f\\x2c\\x3d\\xca\\x12\\x1b\\x2b\\x87\\xc5\\x9b\\x3c\\x84\\xc7\\xae\\x52\\xaf\\x19\\xc6\\xb9\\xfa\\x1b\\xd6\\x75\\xfb\\x6d\\xd8\\xb3\\x29\\xd5\\x66\\x87\\x86\\xdc\\x78\\x83\\xe2\\xd2\\xe8\\x58\\x6f\\xf4\\x12\\x8b\\x90\\xde\\xe8\\x4b\\xe0\\xab\\x54\\xd6\\x81\\x3f\\x7a\\x8c\\x61\\x34\\x75\\x71\\x73\\x98\\x17\\x75\\xde\\x84\\xc4\\xdd\\x39\\xe3\\x36\\xf8\\xa4\\xef\\x8d\\xca\\xde\\xc9\\x43\\xe9\\x0d\\x42\\x1b\\x22\\x9c\\x11\\x78\\x5f\\xcd\\x3f\\xe9\\x63\\x03\\x74\\x58\\xe7\\x6c\\x82\\x0b\\x3b\\xc2\\xc9\\x47\\x60\\x01\\x26\\x2b\\x26\\x1d\\x28\\xb6\\x5b\\x48\\x9d\\x76\\xb4\\xbe\\x23\\x65\\xe4\\xa8\\x0f\\xa8\\x71\\xb0\\xa5\\x3b\\x6a\\x5f\\xb2\\x43\\x68\\x82\\x35\\xac\\xc5\\xf4\\x77\\x4d\\xb1\\x5d\\x47\\xb4\\x2d\\xd6\\xc8\\xd9\\xe1\\x2d\\xcb\\x0b\\x5d\\x98\\x0d\\xab\\x0f\\x3a\\xd8\\xa4\\x96\\xf7\\x6e\\x50\\x06\\xc2\\xca\\x82\\x67\\x5f\\xf1\\x94\\xca\\xf8\\x07\\x0d\\x04\\xbd\\x38\\x4f\\x97\\xe5\\x83\\xe7\\x3c\\xbc\\x4f\\x7f\\x25\\x73\\x10\\xa6\\x1b\\x1c\\x80\\x62\\x32\\x2d\\xce\\x81\\x15\\xf6\\xdd\\x93\\xee\\xe8\\xa9\\x3f\\xfa\\x5c\\xab\\x66\\x34\\x11\\x6e\\x1a\\xb7\\x05\\xfa\\x86\\xc4\\xa8\\xea\\xa5\\x56\\xc6\\xc8\\x9d\\xbc\\xad\\x01\\x04\\x36\\xbf\\xfe\\x45\\x18\\x22\\x49\\x1f\\x1e\\xa8\\x6c\\x20\\x20\\x7e\\x4d\\x12\\xdf\\xa3\\x62\\x61\\x6c\\x58\\x9f\\x97\\x10\\x7e\\xa5\\xd8\\xbd\\x8a\\x72\\x15\\xc6\\x00\\xff\\xc7\\x0b\\x80\\xe2\\xab\\xb1\\x5a\\xcb\\xe4\\xbe\\xcc\\xa2\\x0d\\x72\\x15\\x5a\\xbc\\x3d\\xbe\\x8e\\x37\\xcf\\xd7\\x3f\\x74\\x20\\xf2\\x1c\\x9b\\xcd\\x0c\\x32\\x73\\x51\\x3b\\x50\\x49\\x67\\x08\\x74\\xd5\\x51\\x9b\\x3b\\xc1\\xdb\\x52\\x3c\\x1d\\x7e\\x90\\xc1\\x65\\x96\\x7c\\x4c\\xb2\\x84\\x5a\\x2e\\x8b\\x47\\xb5\\x88\\x92\\x54\\xf5\\x8a\\x9b\\xbb\\x82\\x6f\\x94\\x52\\x1c\\xdb\\xd0\\x41\\x6f\\x5f\\x18\\xff\\x78\\xa3\\xfd\\x0d\\x7a\\xb8\\x97\\x90\\x62\\x64\\x48\\x3c\\xde\\x64\\x2d\\x8e\\x70\\x3f\\xd8\\x2e\\x5a\\xe7\\x0a\\x9f\\x97\\x8f\\x64\\xee\\x80\\x52\\x05\\x54\\x85\\x05\\x28\\x58\\x1c\\xa9\\xa0\\xb3\\x8c\\x19\\x6f\\xd1\\x66\\xda\\xe5\\x87\\x9b\\x3f\\x72\\xf5\\x9c\\xde\\x91\\xcc\\xa2\\xc8\\xbf\\xaa\\x47\\x8b\\x98\\xd6\\x24\\xcd\\x34\\x72\\x44\\x02\\xde\\x57\\x8e\\x57\\x54\\x82\\x5c\\xe2\\x27\\xd2\\x87\\x1b\\x45\\xa5\\x11\\x71\\x49\\x51\\x5b\\xff\\x81\\xa9\\x23\\x24\\x6f\\x3b\\x72\\xd0\\x7b\\xd4\\x58\\x12\\x5c\\x70\\xa1\\x4d\\x87\\xc3\\xfd\\x13\\x39\\x2a\\x3b\\xda\\x65\\x53\\x01\\x6e\\x8b\\x2d\\x07\\xbd\\xe9\\x03\\xcf\\x68\\x7b\\x44\\x5c\\xfd\\x6f\\x76\\x14\\x92\\xeb\\xa4\\x65\\x22\\xad\\xa8\\x4a\\x96\\x15\\xd8\\xda\\x34\\x98\\xb2\\x58\\x06\\x72\\x69\\xb7\\x88\\xe5\\x59\\xb6\\x59\\xd4\\xb4\\x8a\\x87\\xd8\\x80\\xd6\\x37\\x8b\\xe6\\xa8\\x87\\x46\\xf3\\x5b\\x32\\x2b\\x04\\x78\\x45\\xaa\\xdc\\x52\\x3b\\xea\\xff\\x30\\x70\\xf7\\x21\\xc3\\xc0\\x71\\xea\\xa3\\x19\\xb7\\xa4\\x7c\\x1b\\x20\\xd3\\x00\\xdc\\x03\\x21\\x90\\x9b\\x66\\x9e\\x57\\xd3\\x9a\\x1c\\xe2\\xfd\\xbe\\xaa\\xfa\\xc2\\x13\\x50\\xec\\x2d\\x6e\\x6d\\x5b\\x88\\x01\\x86\\xc0\\x28\\xa8\\x61\\x47\\x4d\\x50\\x76\\xa4\\xad\\xc5\\x03\\x2f\\xec\\x91\\x40\\x78\\x7c\\x36\\x80\\x6e\\xf7\\x9c\\x72\\xe3\\xa1\\x9d\\x8c\\x8b\\x70\\xbd\\xaf\\x20\\x72\\x95\\x54\\x2d\\x96\\x82\\x5a\\x5d\\xe7\\xdf\\xe1\\x08\\xef\\x57\\x45\\x99\\xb8\\xf1\\x84\\xc6\\x3a\\x5a\\x13\\x1d\\xb1\\x9b\\x3b\\xe5\\x3f\\x69\\x9c\\x10\\xfc\\x4c\\xa7\\xc6\\x3f\\x35\\x00\\x21\\x1b\\x35\\x6a\\x0a\\xc6\\x64\\xdd\\xfc\\x1a\\x92\\x52\\x59\\x00\\x26\\x39\\x5b\\x47\\x9b\\xe9\\xa5\\xe4\\x75\\x84\\x23\\x56\\x0b\\x65\\xbb\\xce\\x5b\\xba\\xde\\x49\\x3b\\x13\\xd0\\x0c\\xf8\\xc1\\xd3\\xb7\\xe9\\x22\\x13\\x67\\xe8\\xf0\\xea\\xda\\xb6\\xe6\\xd1\\xb5\\xff\\xfd\\xe7\\xb2\\xd7\\x41\\xfc\\x2c\\x83\\x02\\x24\\xff\\xf7\\xff\\x14\\xae\\x5c\\x07\"},\n{{0x22,0x73,0x94,0x2d,0xb3,0xe5,0xd3,0x22,0x1e,0x80,0xd9,0x94,0xfd,0x5e,0x11,0x63,0xaf,0x55,0xf5,0x45,0x5a,0x8e,0x52,0xbe,0x85,0x2d,0xd3,0xad,0xf7,0x62,0xb4,0x40,},{0xbc,0x58,0x67,0x4e,0x99,0x6b,0x6f,0x3e,0x32,0x20,0xb3,0xe9,0x4f,0x00,0x67,0xbb,0x0e,0x9b,0x0d,0x97,0xd9,0xe1,0x05,0x9c,0xf1,0x39,0x97,0xa1,0x93,0xac,0x03,0x2a,},{0x87,0x4d,0xde,0xce,0x08,0xf3,0x0b,0x30,0xf0,0xd4,0xc8,0xb3,0xed,0x7c,0x61,0x51,0x49,0xb8,0xaa,0x74,0x0d,0xaa,0x34,0x7b,0x55,0x95,0x8f,0x1e,0x21,0x19,0x04,0x4f,0x69,0x5a,0x21,0x06,0x96,0x90,0x50,0x64,0x48,0xd8,0xe7,0x35,0x2b,0x90,0x46,0x51,0x1d,0x7f,0x39,0xa5,0x41,0x5b,0xb9,0xc5,0x70,0x50,0xfc,0x17,0x05,0x5c,0x38,0x08,},\"\\x8a\\xa0\\x50\\x9e\\x4b\\x91\\x41\\x86\\xff\\xff\\x07\\xae\\xb9\\x7a\\x04\\xb5\\x46\\x27\\x2d\\xa2\\xf9\\xea\\x7b\\xfa\\x65\\x9a\\x24\\xcb\\x50\\x96\\x6c\\x23\\xeb\\x65\\x42\\xe4\\xf2\\x2d\\xeb\\xe3\\x3b\\x65\\x76\\x92\\x45\\xc4\\xd1\\xb5\\xdc\\xf3\\xe6\\x99\\xc7\\x0c\\x5c\\x2b\\xaa\\xd9\\x73\\x4e\\x9d\\x1e\\xfe\\x54\\x48\\xab\\x71\\xc8\\x94\\x6a\\xec\\xce\\x52\\x68\\xd2\\x6f\\x19\\xcf\\x60\\x5e\\xb3\\xbf\\x38\\xb0\\xb3\\x32\\x26\\x94\\xac\\x0d\\xcb\\x76\\xb0\\xf9\\x46\\x84\\x2f\\x6c\\x5c\\x68\\xd7\\x63\\xfc\\xe7\\x47\\x01\\xbd\\x6b\\x78\\xe7\\x1c\\x8c\\x31\\x42\\xad\\xd4\\xed\\x46\\xe0\\x96\\x9b\\xb9\\x55\\x5b\\xe0\\x36\\x02\\xd5\\x62\\xe4\\xc8\\x9f\\x3a\\x91\\x99\\x40\\xe8\\x83\\xa9\\x69\\x40\\x54\\x2f\\x27\\x79\\xfb\\xf9\\xec\\x0a\\x28\\x5d\\x9d\\x8a\\x72\\x36\\x01\\x46\\xe3\\xff\\xbd\\xb7\\x8d\\x21\\x03\\x16\\x03\\x8d\\x95\\xd6\\xab\\x75\\x71\\x65\\xaa\\x94\\x3c\\x03\\x3e\\xeb\\xb3\\x21\\xc0\\x5a\\x39\\x95\\x69\\xbc\\xf6\\x6b\\x4d\\xdb\\x0b\\x2e\\x0e\\x33\\xc4\\x79\\x3d\\x81\\x7c\\xcf\\xf5\\x7f\\x99\\xb3\\x18\\x9c\\x60\\xd5\\xd7\\xb9\\x41\\x9d\\x1e\\xbc\\x94\\x3a\\x79\\xd4\\xd8\\xc3\\x94\\x56\\x61\\x80\\x59\\x4f\\x55\\x9a\\x80\\x52\\x9c\\xc1\\xba\\x28\\x87\\x7a\\xf8\\xf5\\xc0\\x50\\x3e\\x94\\x3c\\xd3\\xaa\\xd9\\x98\\x11\\x64\\x52\\x72\\xda\\xfb\\x49\\xb9\\xb3\\xe6\\x10\\x7e\\xb5\\xe5\\x18\\x6e\\x16\\x08\\x75\\x71\\x26\\x05\\x3d\\xeb\\xce\\xc7\\x5d\\xd9\\x56\\x5c\\xee\\xa0\\x6a\\x13\\x91\\xa8\\x22\\x6d\\x1f\\x45\\x93\\x79\\x22\\x40\\xcc\\xd9\\x7c\\x67\\xa6\\xc2\\xb1\\x34\\x4c\\x22\\xc9\\x1f\\x42\\x03\\x3a\\xde\\xf5\\x28\\x61\\xf3\\x2a\\x4e\\x07\\x12\\xa9\\x17\\x87\\x9a\\x0b\\x05\\x18\\xb5\\x42\\x4b\\xcd\\xc0\\x54\\xb4\\x4e\\x97\\x2e\\xd2\\x4d\\x01\\x68\\x9f\\x4f\\x27\\xf5\\xf1\\x76\\xf0\\xa5\\x78\\xab\\x2d\\x3c\\x08\\x78\\x27\\x2e\\x8c\\x08\\xc2\\x15\\x82\\x11\\x86\\x54\\x12\\x4d\\xca\\x39\\x58\\x53\\x37\\xc1\\x3c\\x18\\x65\\x81\\x4c\\xaf\\x09\\x96\\xca\\xdf\\xa6\\x5b\\xe5\\x80\\xde\\xe3\\x22\\xeb\\xcc\\xda\\x70\\x4b\\x22\\x80\\x58\\x26\\x04\\x06\\x7d\\xc3\\xc6\\xb1\\xf7\\xd8\\xa2\\x69\\x78\\xa6\\x5c\\xff\\xd1\\xed\\x31\\x96\\xa2\\xb0\\x65\\xfb\\x3c\\xaa\\x79\\xe6\\xb5\\xb6\\x6c\\x13\\xd7\\xbd\\x7d\\x0e\\xc1\\x4a\\x3a\\x4d\\x58\\x41\\x3f\\x21\\x2f\\x47\\x1e\\xca\\xad\\x3a\\x84\\xaf\\x35\\xe5\\x98\\xa8\\x9f\\xb3\\x44\\x7d\\x33\\x24\\xf0\\x20\\xfb\\xf1\\xb7\\x3e\\x2a\\x98\\x6e\\x0d\\xa1\\x6c\\x01\\x83\\xbf\\x92\\xa3\\x98\\xc4\\x19\\xa0\\xf9\\xf3\\x05\\x37\\xbe\\xa0\\xdf\\x8d\\xf2\\xdc\\x53\\xc1\\x54\\xe8\\xea\\x16\\x06\\x89\\xe7\\xbb\\x4d\\x72\\x9d\\xd8\\xab\\x90\\x03\\x14\\x27\\xaa\\x39\\x45\\x86\\x3a\\x85\\xe8\\x96\\x52\\xb9\\x35\\x38\\x05\\x16\\x6f\\x7c\\x0a\\x18\\xc9\\x39\\x95\\x4b\\x27\\x87\\xc3\\x70\\x94\\xf9\\x25\\x12\\x72\\x2e\\x52\\xb0\\xc9\\x76\\xb9\\xe4\\x2a\\xf4\\x03\\x9d\\x2c\\x05\\x78\\xff\\x14\\xfa\\xe1\\xd8\\xc2\\xd1\\x39\\x6b\\xeb\\x2d\\x6a\\xa6\\xeb\\xd5\\x54\\x74\\xa9\\x34\\x98\\x67\\xa0\\x3f\\x3a\\x99\\xd7\\x87\\x80\\x63\\x4a\\xb4\\xb3\\x5c\\xfe\\x1b\\x87\\xa9\\x13\\x32\\x52\\xa6\\x98\\xbc\\x40\\x7d\\x63\\x84\\x28\\x70\\xe2\\x2c\\xcf\\x39\\x33\\x62\\x0a\\xc0\\x42\\x3c\\x3d\\x1f\\x68\\x1d\\xd7\\x3c\\x01\\xd0\\x6c\\x3b\\x94\\x15\\x06\\xc9\\x8e\\xed\\x9b\\x78\\x68\\xe0\\x17\\xb7\\xf9\\x97\\x16\\xb0\\xb7\\x7f\\x11\\x32\\x1e\\x5a\\xb2\\x3d\\xbf\\xcf\\xca\\x93\\x50\\x84\\x5e\\xe1\\x80\\x44\\x4c\\x50\\xff\\x0a\\x9c\\x96\\x5f\\xcb\\xf7\\x77\\x70\\x8e\\x4f\\x34\\xcc\\xc6\\x37\\xc6\\xa0\\x8d\\x85\\x43\\x84\\xf8\\xd3\\xe2\\x51\\x69\\x56\\xc1\\x51\\xd0\\x31\\xbb\\x1c\\xbe\\x71\\x2a\\x5e\\xf9\\xee\\x16\\x61\\x92\\x28\\xbd\\x29\\x6f\\x2a\\xfe\\x58\\x2d\\x99\\x53\\xd5\\x90\\xd1\\x8b\\xb2\\x05\\xf7\\x0f\\x84\\x4c\\x16\\xc0\\xa2\\xd8\\x31\\x80\\x37\\xd4\\x3d\\xd8\\x0f\\x65\\xc6\\xa7\\x53\\xf2\\xa8\\xe2\\x7c\\x89\\xc8\\x3e\\x7e\\xd7\\x0c\\x52\\xf7\\x06\\x2d\\xfb\\xb1\\xf5\\x44\\xaa\\x23\\x6b\\x5c\\x70\\x4e\\x7b\\x39\\xce\\x0a\\x55\\xfd\\x46\\x52\\x80\\x83\\xca\\x61\"},\n{{0xdb,0xfa,0x45,0xab,0xaa,0x55,0x41,0x52,0x38,0xb1,0x28,0x76,0x34,0xd5,0xee,0xc4,0x02,0xda,0xdf,0x62,0x2e,0x27,0x0c,0x04,0xa8,0x91,0x4c,0xed,0x27,0x0a,0x72,0xbe,},{0xc0,0xfe,0x32,0x35,0x81,0xea,0x29,0x67,0x50,0x79,0x7e,0xb5,0x50,0x8c,0xa1,0x9a,0x58,0x3b,0x53,0x7f,0xa7,0xdf,0x45,0x29,0xf0,0x80,0x4a,0x33,0xc1,0xa4,0xbe,0xf4,},{0xa4,0x62,0xa9,0xba,0xa5,0x6d,0xc0,0xf7,0xa7,0x1b,0xf8,0x7b,0x95,0xf4,0x8d,0x64,0x20,0x22,0xd9,0xd1,0x73,0x3e,0xe3,0x68,0x37,0x77,0xa3,0x78,0x22,0x28,0xac,0x85,0xfc,0xd8,0x30,0x26,0xbe,0x4c,0xa9,0x7a,0x34,0x5b,0x08,0x4f,0x50,0x87,0x4e,0x91,0x24,0xe1,0x6b,0xa1,0x7d,0xea,0xd4,0xad,0x85,0xc0,0xe5,0x6f,0x16,0xef,0x18,0x04,},\"\\xe2\\x6e\\x8d\\xcb\\x44\\xe6\\x41\\xfc\\x20\\x08\\x0e\\x95\\x47\\x4b\\xd3\\x9d\\x71\\x6c\\x5a\\xfe\\x5a\\x1f\\xfb\\x05\\x6d\\x1e\\xaa\\xb0\\xc4\\x9f\\x85\\x70\\x71\\x7d\\xb6\\x43\\x7a\\x03\\x22\\x8a\\x9a\\xd9\\xf4\\xbb\\x0b\\x34\\x3b\\x95\\xe1\\x60\\x23\\xc0\\x80\\x7e\\xb2\\xa1\\x51\\x06\\xa6\\xeb\\x12\\xdc\\x76\\x68\\x3e\\x69\\xdd\\xa3\\x36\\x31\\x48\\xc5\\xd7\\xdd\\x97\\x13\\xaf\\x6f\\x87\\xa0\\x94\\x10\\xea\\x8f\\x76\\xb6\\xb7\\x8a\\x11\\x44\\x29\\xbc\\x85\\xf7\\x84\\x81\\x2f\\xca\\x31\\xac\\xb0\\x30\\x95\\x52\\xcc\\x18\\x8c\\x6e\\x96\\x97\\x09\\x3c\\xf4\\x04\\xc6\\xf0\\xf4\\xab\\xe8\\xa1\\x60\\x86\\x73\\xfd\\xfa\\x5e\\xb7\\x8f\\x65\\xfc\\x1d\\x49\\xcd\\xec\\x40\\x94\\xb1\\xbd\\x23\\x4a\\x46\\xe0\\xec\\x62\\xa4\\xb6\\xd3\\x1b\\x82\\x96\\x11\\x54\\x01\\x27\\x87\\x6b\\xff\\x4c\\x17\\x3d\\xe0\\x58\\xcf\\x61\\x00\\x4b\\x01\\x4a\\x7b\\xdf\\x79\\x3d\\xfd\\x6b\\x63\\xc5\\x07\\xd2\\xb2\\x3e\\x0f\\x56\\xbc\\x2f\\xe6\\xba\\xf6\\x37\\xce\\xe4\\x0d\\x18\\x99\\x22\\x95\\xd8\\x48\\xef\\x49\\x8f\\x8a\\x16\\x1b\\xd8\\x7e\\x60\\xc9\\x1f\\x97\\xa9\\x1e\\x9e\\xf3\\xf6\\xd9\\x7f\\x2b\\x2d\\x21\\x04\\xba\\x6f\\xdd\\xd6\\xc6\\x80\\x70\\x62\\x73\\xda\\xe8\\x7e\\x6e\\xec\\x1a\\xf2\\xa4\\x59\\x84\\x98\\x50\\x69\\xe8\\x09\\xe8\\xde\\x32\\xc1\\x28\\x89\\x29\\x9a\\x32\\xd4\\x0f\\x38\\x77\\x45\\x99\\xac\\x33\\x24\\xb7\\xcb\\x0a\\x4e\\xa6\\x32\\xc5\\xf9\\x10\\xad\\x87\\xf5\\xad\\xbf\\xa5\\xc3\\xbb\\x20\\x49\\x82\\x79\\xfd\\x53\\xc1\\xc2\\x67\\xfe\\x0a\\x84\\x77\\x30\\x85\\xda\\x26\\x6b\\x25\\x3c\\xd8\\x53\\xdf\\x7e\\x96\\x35\\x58\\xcb\\x06\\x88\\x07\\x80\\x97\\x34\\x23\\xc5\\x64\\xcd\\x0b\\xcd\\x6b\\x93\\x33\\x4c\\x19\\x59\\x53\\xd7\\xcd\\x89\\x9f\\x8a\\x54\\x7d\\x1a\\x1a\\x0a\\x8d\\xef\\xf1\\x38\\x1b\\x43\\x21\\x57\\x47\\x28\\xcf\\x71\\xb9\\x6f\\xf2\\x09\\xe8\\x99\\xda\\xa8\\xf1\\x3f\\x41\\xb2\\x30\\xe1\\x7b\\xff\\xdf\\xdd\\x2a\\x89\\x43\\xaa\\x5d\\x21\\xe5\\xf3\\x6e\\x1d\\xa0\\x7e\\xdd\\x6c\\xee\\x92\\xdc\\x48\\xb5\\xb2\\xa7\\x58\\x01\\x46\\xa9\\xba\\xf7\\x13\\x95\\x0c\\xe6\\x76\\x25\\x5a\\x89\\xe3\\x4f\\x87\\x87\\x54\\x7d\\x62\\x86\\x8d\\xb1\\x4b\\xa4\\x65\\x94\\xda\\x31\\x0d\\x7e\\x2d\\x9e\\x7c\\x7d\\xbe\\x17\\xdb\\xd7\\x1e\\xb4\\x7c\\x56\\xc5\\x72\\x1d\\xc9\\x6d\\x69\\x64\\x70\\x57\\x37\\x94\\x80\\x94\\x11\\xcd\\xfa\\x27\\x6b\\x05\\x9d\\x00\\x07\\xc2\\x5d\\x74\\xb2\\xa6\\x7d\\x38\\x24\\x6d\\xe1\\x1e\\xf4\\x6d\\xfe\\x26\\x70\\x92\\x6f\\xe4\\xb6\\x36\\x56\\x23\\x1b\\xc7\\x26\\x8b\\xba\\x23\\xf3\\x78\\xe8\\x4a\\x42\\x8c\\x3c\\xbf\\x45\\xcc\\x53\\x96\\x78\\xfd\\x46\\x7c\\xd3\\x3d\\xd0\\x75\\x7c\\xfa\\x02\\x4e\\x54\\xda\\x1f\\xf5\\x4c\\xe8\\x20\\x22\\x9b\\x77\\x8b\\x18\\x4b\\xe1\\xfa\\x2e\\x84\\x68\\xcc\\x19\\x95\\x59\\x40\\x73\\x5e\\xaa\\xa8\\x84\\x02\\x2f\\x64\\x18\\xb0\\xb1\\xf2\\x6b\\xcc\\xf1\\x69\\xf1\\xbc\\xac\\x7d\\x82\\xa3\\x5a\\xb6\\xef\\x84\\x7e\\x1d\\xba\\x53\\x7d\\xca\\xff\\x57\\x25\\x0a\\x8d\\x1c\\x71\\xfa\\xcb\\x13\\x4c\\xd0\\x6b\\x01\\xc4\\x53\\x19\\x13\\x27\\x45\\xdc\\x48\\x88\\x88\\xa1\\xd7\\x76\\x1b\\x84\\x86\\xa3\\x7e\\x69\\x88\\xa1\\x12\\x0b\\xcc\\x16\\x82\\xdb\\xfc\\x89\\x14\\x3f\\xc3\\x5b\\x46\\x93\\x5d\\x8a\\xcf\\x6e\\xf3\\xc4\\x2f\\x0f\\x4b\\xf6\\x79\\xdf\\xd6\\xff\\x44\\xb6\\xad\\xa2\\x6b\\x01\\xa9\\xf8\\x9f\\x37\\x4c\\x7d\\x2e\\xe4\\x8d\\xfe\\x1a\\x41\\x0e\\x89\\x7c\\xdf\\xd9\\x7f\\x62\\x6d\\x26\\x68\\x50\\x28\\x14\\x40\\x07\\x93\\xb3\\xb0\\x7c\\x87\\x20\\xbb\\xdd\\xc5\\x9c\\xb0\\xf9\\xde\\x96\\x4a\\xe0\\x75\\xb4\\xaf\\x3d\\xd4\\xba\\xf6\\xd0\\xe4\\xf9\\x4f\\x29\\x4e\\x81\\x09\\xd6\\x57\\x7c\\x4f\\x8a\\x9c\\x7a\\x5f\\x7d\\x69\\x4b\\xf8\\x8f\\x1a\\x5e\\xa7\\xeb\\xa0\\xa6\\x6d\\xa6\\xc7\\x70\\xc0\\x8b\\x3a\\xbf\\xfc\\x53\\x4d\\xf2\\x19\\xdc\\x3e\\x33\\x23\\xb0\\x22\\xe9\\x6c\\xc8\\x60\\x02\\xb1\\x89\\x18\\x1a\\x1d\\x2b\\x52\\x7d\\x27\\x95\\x0b\\x7f\\x42\\x5a\\x47\\xda\\x40\\x13\\x77\\x8b\\xd0\\x0b\\x71\\x10\\x59\\x22\\x20\\x49\\x21\\xe9\\xdc\\x69\\x2c\\x23\\x3f\\x7b\\xaa\\x04\"},\n{{0xef,0x64,0xe1,0x7a,0x53,0xf7,0xfb,0xca,0xfe,0x3e,0xa4,0x68,0x76,0x84,0xa0,0xda,0xdb,0x18,0xd0,0x37,0x35,0xa4,0x0a,0x53,0xb3,0xed,0xb0,0x49,0x07,0xee,0x61,0x62,},{0x91,0x86,0xe6,0xbc,0x14,0x29,0x61,0xc4,0xd3,0xeb,0x36,0x9e,0x9e,0x11,0x57,0x82,0x92,0xde,0x5b,0x6a,0xf5,0x34,0xd4,0x23,0xff,0x24,0x0f,0xa2,0x6e,0x21,0xa7,0x81,},{0xf5,0x8f,0x39,0x6b,0xa2,0x7e,0x06,0x7a,0x5f,0xe0,0x03,0xe3,0x85,0x58,0x2a,0xe3,0x49,0x0e,0x05,0x95,0x77,0x15,0xd7,0x04,0xda,0x0d,0xa6,0x3a,0x64,0x19,0xd2,0xe4,0xf6,0xdc,0x66,0xb7,0xe8,0x8e,0x42,0x8a,0x6f,0x21,0xb9,0xea,0x20,0x22,0x99,0xa3,0xc3,0x6b,0x24,0x2b,0x0e,0xa0,0x64,0x76,0xff,0x12,0xd0,0xb6,0x58,0x0c,0x04,0x03,},\"\\x68\\x82\\x45\\x6c\\xc3\\xd1\\xad\\x0d\\xaa\\x9b\\x88\\xef\\xf0\\x96\\x9f\\x15\\xe9\\x7b\\x48\\xd0\\x51\\x96\\x7e\\x13\\x90\\x84\\x72\\x25\\xf2\\x6a\\xc2\\x55\\x59\\xf0\\x24\\x6b\\xf7\\xd6\\x83\\xfa\\x28\\xec\\xed\\xad\\x21\\x49\\x1d\\x77\\xbd\\x26\\x96\\xfa\\x83\\x5d\\x0f\\xd1\\x19\\x88\\x4f\\xec\\xe9\\xd8\\x03\\x69\\x1b\\x2f\\xd3\\xde\\x17\\xee\\x08\\x7c\\x74\\x00\\x7a\\x7d\\xe9\\xbc\\x65\\x34\\xbb\\xfe\\x95\\xfd\\x32\\xe9\\x7c\\x37\\x5f\\x4c\\xb6\\x57\\x31\\xaa\\x1e\\x83\\x46\\xbe\\xa2\\x1b\\xe9\\xf2\\xc3\\xdc\\x87\\x4a\\xf0\\x43\\x19\\x06\\xcc\\xbc\\x2c\\x60\\x01\\x27\\xf4\\xd3\\xb0\\x69\\xeb\\x09\\x1d\\x16\\x5e\\xc4\\x53\\xe6\\x72\\xe9\\x3c\\xae\\x8b\\x72\\xf0\\x33\\x71\\xd8\\xb8\\xa8\\x24\\x4e\\xc4\\xec\\x2e\\x09\\xf3\\x1d\\xf4\\x02\\x06\\xa2\\xb1\\xc8\\x4c\\xaa\\x1b\\x99\\x3c\\xc6\\x75\\xfd\\xe1\\xc7\\x9b\\xd4\\xa7\\xd1\\x59\\x74\\xfa\\x29\\xce\\x2e\\x89\\x2c\\x28\\x99\\xcf\\x48\\x2c\\x3d\\x96\\x63\\xf6\\xd2\\xa7\\x97\\x84\\xf4\\x1c\\x1f\\x58\\x66\\xd3\\x7c\\x85\\x46\\xf3\\x57\\xd5\\x64\\xd3\\xc4\\x21\\x8d\\xfa\\x6d\\x20\\xb6\\xc2\\x82\\xb4\\x00\\xfe\\xdd\\xe5\\x24\\x39\\xd4\\x72\\x21\\x2c\\x57\\x67\\xa3\\x5d\\xa5\\x20\\x10\\x32\\xda\\x87\\x30\\x96\\x8b\\x07\\x20\\xe8\\xa6\\x04\\xde\\x6c\\x1b\\xaa\\x3f\\x4e\\x89\\x6a\\xc2\\x61\\x4f\\xb1\\xab\\x6e\\x3f\\x6c\\xf3\\x87\\xa8\\xeb\\x2f\\xf8\\xa9\\x21\\x47\\xab\\x34\\x92\\x38\\x43\\x2e\\x50\\x9d\\x82\\x9c\\xb7\\x5b\\x2c\\x17\\x65\\xc5\\x12\\x21\\x84\\x8e\\x25\\xaf\\xff\\x5f\\x16\\xe4\\xdd\\x0c\\xd5\\xc9\\xf7\\x13\\xc4\\xaa\\xab\\x2c\\xe8\\x36\\xf8\\x49\\x45\\x06\\xb5\\x30\\x9d\\xc2\\xb0\\xae\\x74\\x5b\\xb9\\xc4\\x79\\x80\\x98\\xfb\\x86\\x41\\xd5\\x20\\xa0\\x8b\\x02\\xf7\\x5a\\xd8\\x0d\\xbc\\x2c\\xe2\\x9e\\x89\\x0b\\x4d\\x72\\xa3\\xff\\xb2\\xa1\\xcb\\xd5\\x38\\xe1\\x22\\x9f\\x57\\x9c\\x29\\xae\\x66\\xbc\\xa8\\x5e\\x0f\\xa0\\x8c\\x86\\x47\\xa1\\xab\\xcf\\xe8\\xa4\\x9f\\x5e\\x50\\x8d\\x4d\\x24\\x95\\x55\\x66\\x23\\xd9\\x26\\xce\\x49\\xef\\xa4\\x35\\x0a\\xaa\\xab\\x5c\\xec\\x2c\\xd8\\x85\\xbe\\x1d\\x63\\x47\\x5e\\x3b\\xab\\x7c\\x7c\\xdc\\x8d\\x65\\x61\\x73\\xb8\\xd4\\x56\\x02\\xf4\\xb3\\xd2\\x81\\x24\\x1d\\x17\\x19\\x03\\x27\\xb2\\x4c\\x38\\x36\\xb1\\x93\\x11\\xa1\\x93\\xaf\\x86\\xa6\\x76\\x8f\\x04\\x85\\x2a\\xb0\\x6e\\x67\\xc8\\xea\\xd5\\x91\\xcd\\xcb\\xf3\\x78\\x9c\\x61\\x32\\x09\\xcf\\xe0\\x3f\\x58\\xc0\\x30\\x5f\\x63\\x20\\x3b\\x48\\x7f\\x7c\\x5f\\xc0\\x98\\x87\\x7e\\xc9\\x8a\\x68\\x9c\\x9d\\x35\\xaf\\x81\\xe8\\x40\\x78\\xd6\\x6f\\xe9\\xe4\\xec\\xcb\\xb1\\xcc\\x6c\\x71\\x99\\x1c\\x03\\x01\\x7b\\xb8\\x11\\xf4\\x1f\\x07\\xde\\x68\\xfa\\xd1\\x94\\x14\\x60\\x61\\x32\\x4f\\x3d\\x0e\\xf2\\x17\\xa5\\x4c\\xf3\\x8f\\x7a\\x62\\x5a\\x38\\x86\\x9f\\x67\\xd0\\xb7\\x43\\x1d\\xf9\\x37\\xcd\\xe3\\x49\\xc1\\x75\\xce\\x8b\\x26\\xac\\x88\\xd3\\x9a\\x43\\xe2\\x79\\xb0\\x18\\x76\\x4e\\xfa\\x4d\\xd6\\x27\\xcb\\xf5\\x91\\xf6\\x20\\x9c\\x4a\\x5b\\xb1\\x9e\\xbf\\xa7\\xc7\\x13\\x55\\x92\\xd0\\x2e\\x50\\x1c\\xae\\x5e\\x6b\\x31\\xc9\\x0e\\x72\\xfa\\xab\\x47\\xf7\\xdc\\xed\\x2c\\x48\\xad\\xf8\\x84\\x43\\xb3\\xed\\xe6\\x0c\\xef\\xb0\\xd6\\x37\\x9d\\x69\\x22\\xec\\x43\\x7f\\x08\\x6b\\xad\\x62\\x17\\xd4\\xd4\\xff\\xef\\x18\\xe2\\x25\\x23\\x66\\x4b\\xf4\\xe9\\xca\\x1e\\x65\\xa2\\x8c\\x2a\\x7a\\x60\\xc5\\xf6\\xbc\\x90\\x6b\\x73\\x7c\\x29\\x93\\x5f\\x90\\x97\\x46\\x30\\x48\\x57\\x5b\\xef\\xd1\\xa2\\x54\\x9d\\xc4\\x74\\xb1\\x3e\\x68\\xae\\xec\\xf1\\x66\\x04\\x3e\\x07\\x5a\\xac\\x51\\x55\\x40\\xf8\\x31\\xb4\\x30\\x66\\xce\\xf9\\x32\\xe6\\x3d\\xcd\\x5b\\x37\\xb6\\x15\\x78\\xc3\\x5b\\x09\\xe4\\x5c\\xc2\\xa8\\xde\\xf5\\x71\\x03\\xed\\xfc\\x5f\\x64\\x98\\x31\\xa8\\x96\\x1f\\xe4\\xa4\\xb3\\x72\\x1f\\x1d\\x6d\\xf4\\xea\\x9f\\x03\\x38\\x81\\xb4\\x74\\x30\\x0e\\x0f\\x12\\xcb\\x9c\\xd3\\xba\\xbd\\xcf\\xfb\\xb9\\x18\\xdd\\x9b\\xb0\\xe2\\xf5\\xb2\\x10\\x33\\xe4\\x30\\x23\\xa0\\xd2\\xe6\\x6d\\xa3\\xab\\x0f\\x07\\xee\\x98\\x8b\\x16\\x88\\x9c\\xa5\\xd5\\x1a\\xbd\\xc0\\x5f\\xde\"},\n{{0x33,0x47,0xdc,0x47,0xbb,0x3d,0x2e,0x5d,0x02,0x86,0xac,0x06,0xa5,0x4f,0xd9,0x21,0xc9,0xe9,0x6b,0x68,0x99,0x86,0x2a,0x54,0xe5,0xcc,0x81,0x15,0xd3,0xd0,0xba,0x99,},{0xd0,0x0b,0x64,0x5d,0x86,0xdb,0xb7,0xe5,0x24,0x75,0x7e,0xc7,0x78,0xc6,0x2b,0x7e,0x60,0xd0,0xb6,0x57,0x68,0x83,0x33,0x8c,0x9b,0x67,0xc2,0xc7,0xe4,0x50,0x92,0x68,},{0x9a,0xb4,0x29,0x9b,0x17,0x72,0x93,0x44,0x75,0x0b,0x69,0xdc,0x60,0x37,0x36,0x8c,0x98,0xf4,0x7b,0xe6,0x27,0xfb,0xd9,0xad,0xfd,0x8d,0xb3,0x9f,0x99,0x64,0xdd,0xb7,0xbc,0x92,0xd6,0x74,0xc7,0xbe,0x74,0x07,0x56,0x39,0x6b,0xaa,0xee,0xac,0xbf,0x74,0x94,0x7b,0x61,0x91,0xc6,0xed,0x1f,0x5d,0x32,0xa6,0x3d,0xf3,0x6d,0x54,0x26,0x01,},\"\\xe2\\xf4\\x8e\\xdf\\x9d\\x64\\x33\\x20\\xab\\x99\\x1c\\x8f\\xf9\\xf6\\xaa\\x75\\xfe\\x06\\x6e\\x7d\\x88\\xff\\x1e\\x47\\x2a\\x5a\\xc9\\xc5\\x18\\xde\\x1f\\xb6\\x29\\x83\\xb1\\x00\\x7f\\x64\\x22\\x80\\x91\\x17\\xbd\\xbe\\x8a\\x0e\\x57\\x87\\xf6\\x6b\\xb0\\x57\\xd2\\x7f\\x12\\x9a\\x20\\x0b\\x40\\x57\\x6e\\x17\\x19\\xcf\\x9e\\x98\\xfc\\xb7\\x2a\\xf9\\x4b\\xb8\\x2e\\xe7\\x0f\\x37\\x19\\xa2\\xe2\\xcd\\x9b\\x64\\x77\\x7c\\xea\\x5e\\x44\\x64\\x59\\x87\\x4b\\x74\\xbf\\xbf\\x56\\xb2\\xd2\\x52\\x64\\x00\\x59\\x2a\\x9b\\x45\\xa5\\xcb\\x79\\x80\\x92\\xb6\\x0a\\x81\\xb7\\x1d\\x82\\xf0\\x68\\x5f\\xae\\x7f\\x81\\x0b\\x52\\xd2\\x26\\xad\\xac\\x7a\\xd8\\xa9\\x18\\x3f\\x09\\xfe\\xbe\\xe9\\xd2\\x50\\x46\\xc0\\xfe\\x30\\x66\\x81\\xac\\xe2\\xbf\\xf9\\x1b\\x34\\x82\\xb0\\xbc\\x30\\xb2\\x02\\x1c\\x43\\x41\\x64\\x5d\\x67\\x51\\x34\\xfe\\x30\\x81\\xc5\\x1e\\x5c\\x59\\xe4\\x0b\\x37\\x5a\\x14\\x34\\xf6\\x3b\\x42\\x6e\\x30\\x53\\x0d\\xa9\\x35\\x3b\\xb2\\xa9\\x42\\x32\\x20\\x43\\x4a\\xe5\\x9d\\x7b\\x6f\\xdc\\x14\\x3f\\x49\\x82\\xeb\\x8c\\xfa\\x77\\x51\\xb7\\x5b\\xf3\\xe9\\xc9\\x13\\xc7\\x3b\\x76\\x0b\\x07\\xd3\\x95\\x31\\x0c\\x59\\xf3\\xb7\\x7e\\xbf\\x12\\xed\\x2d\\x7b\\x03\\x59\\x0d\\x33\\x17\\xaf\\x17\\xdf\\x42\\x1e\\x78\\xb0\\x84\\x9f\\xd5\\x6d\\x94\\x5c\\x56\\x96\\xa0\\x40\\xfc\\xaa\\x78\\xa9\\x3e\\xcc\\x16\\xd5\\xac\\x34\\x45\\x06\\x36\\x11\\xf3\\x01\\x3e\\x9a\\x3a\\xe2\\xe1\\xc2\\x70\\xdd\\x01\\xa8\\xff\\xe3\\xe6\\x12\\x6b\\xc1\\xe4\\xc9\\x5f\\x65\\x47\\xa8\\x65\\x1f\\x26\\xb6\\x40\\x4e\\x39\\xee\\x4c\\xe7\\x61\\x89\\x18\\xf3\\xf9\\x37\\xa5\\x25\\x73\\xec\\x27\\x7b\\x77\\x1e\\x91\\xad\\x09\\x6f\\xa1\\x5c\\x7a\\x34\\x0a\\x80\\x9b\\x47\\x03\\x18\\xa4\\x63\\x64\\x23\\xeb\\x48\\x88\\xa1\\x21\\x60\\xc4\\x66\\x3f\\xce\\x29\\x96\\xd6\\x38\\x89\\x6c\\x83\\x9b\\x2c\\x7a\\xd4\\xb3\\xa9\\xb2\\xe6\\xcb\\x71\\xe9\\x12\\xfe\\x39\\xb8\\x43\\xc6\\xe0\\x83\\x2e\\xca\\x22\\xde\\x93\\x8b\\x50\\xae\\x86\\x3e\\x48\\x58\\x2c\\x10\\x85\\x12\\x32\\xf7\\x5e\\x52\\x25\\xb8\\x89\\x6b\\x5a\\x47\\x0f\\x81\\x8b\\x6f\\xa3\\x9e\\xb7\\xbb\\x59\\x03\\x57\\x67\\x86\\x12\\xd2\\x5f\\xe1\\xa4\\x0e\\xa1\\xb9\\xd7\\x1d\\x88\\x09\\x09\\xc1\\xbd\\x4a\\xd1\\x76\\xcc\\x0c\\xef\\xfd\\xce\\xe7\\x09\\x9e\\x78\\x82\\xa7\\xc9\\x07\\xe4\\xbe\\xc7\\x98\\x30\\xc6\\x77\\x1a\\xcb\\x89\\x94\\x4b\\xd5\\x4a\\x51\\x65\\xb3\\x18\\x70\\x91\\x69\\x21\\xb1\\x98\\xac\\xd4\\x43\\x2e\\x7e\\xed\\x8c\\xe1\\xde\\xb3\\x45\\xb1\\x07\\xed\\xa7\\x60\\x26\\x6f\\xcb\\xda\\x3b\\xa5\\x22\\x94\\x00\\xa3\\x03\\x60\\xa4\\x64\\x5c\\xa8\\xdb\\x38\\xc3\\xd5\\xf4\\xa8\\xde\\xf1\\x57\\xbb\\xdb\\xbf\\x2c\\x1f\\xa1\\xdc\\x6b\\x05\\x14\\xa4\\xf5\\xa0\\x36\\x4f\\x92\\x83\\x81\\xb4\\x0f\\x95\\x57\\x9a\\x26\\x46\\x7f\\x22\\x82\\xa8\\xa2\\x55\\x75\\x84\\x02\\xac\\x9c\\xa8\\x0e\\x89\\xb9\\xcc\\x68\\x60\\xa3\\x4b\\xb3\\xf9\\x0c\\x32\\x37\\x65\\x7c\\x21\\x29\\xea\\x48\\xc8\\x52\\xb9\\x25\\x69\\xe8\\x11\\x06\\xbc\\xe4\\x61\\xe2\\x02\\x44\\x54\\x82\\x1a\\x91\\x75\\x92\\xd1\\x99\\x1b\\x5b\\x69\\xf2\\x7b\\xbe\\x01\\x99\\x77\\x52\\x8a\\x2f\\xc0\\x11\\x92\\xc5\\x6b\\x4a\\xea\\x87\\x3c\\xf8\\xc5\\x8d\\xfd\\x7c\\xb4\\xb0\\xe9\\x17\\xe8\\x7a\\x87\\x04\\xc9\\x92\\x82\\x0f\\x98\\xd7\\x74\\x04\\xd3\\xf1\\xd2\\x05\\x0c\\x67\\x43\\xf6\\xe9\\x3c\\xdb\\x51\\xa6\\x1a\\xa6\\xf4\\x5b\\x35\\x1b\\x26\\x46\\x1d\\x13\\x29\\xf3\\x15\\x12\\x72\\xac\\x39\\x62\\x34\\xd0\\xd6\\x7c\\x17\\x8a\\xcf\\x91\\xfc\\x51\\x0d\\x86\\x42\\x9c\\x69\\xa8\\x7f\\xdf\\x10\\x11\\x55\\xda\\x8d\\x94\\xde\\x67\\x22\\x23\\x8a\\x6f\\xb1\\x70\\x16\\x86\\x2b\\x11\\xd5\\x02\\xc6\\x67\\xee\\x9c\\xa0\\xaa\\xbe\\x1c\\x20\\xb9\\x77\\x89\\xf1\\x86\\x7a\\xdd\\x78\\xb8\\xb8\\x7e\\x9a\\xb5\\x19\\x34\\xc0\\xb4\\xa1\\x6c\\x2c\\xbc\\x4d\\x2e\\xfe\\xdb\\x79\\xc0\\x5b\\x23\\xe0\\xcf\\x78\\x92\\x01\\xac\\x75\\xfe\\x07\\x6d\\x31\\x5f\\xcb\\xac\\x20\\xba\\x0d\\x31\\xe4\\xdc\\x61\\x69\\x27\\xd6\\xea\\xb1\\xb1\\xc8\\x7a\\x1c\\x9c\\x77\\x8e\\x4b\\xd2\\x85\\x29\\x58\\x74\"},\n{{0xff,0x15,0xd6,0xe7,0x4e,0x28,0xe4,0x1d,0x05,0xa8,0x66,0x3a,0x70,0x2f,0x03,0x8d,0x5b,0x85,0x78,0xc4,0x27,0x5e,0x77,0x2b,0x73,0xba,0x44,0x0b,0xc5,0xf5,0x5a,0x06,},{0x47,0x47,0xe2,0xe9,0xb8,0x26,0x37,0xb3,0x84,0x4b,0x85,0xf7,0x5b,0x59,0xf7,0x13,0x6b,0x7f,0xdb,0x1a,0x62,0xe7,0xb7,0x0d,0x6a,0xac,0x17,0xb3,0xc5,0x75,0x2f,0x2f,},{0x42,0xc1,0x29,0x5f,0xaf,0xe2,0x6d,0xe3,0xea,0x34,0x92,0x6b,0xf1,0xef,0x80,0xbc,0xaf,0xe4,0x7b,0x21,0xb9,0x0e,0xae,0xd1,0x96,0x35,0xed,0x75,0x38,0xd7,0x67,0xcb,0xf3,0xa1,0xe5,0xde,0xda,0xab,0x82,0xad,0xf7,0x51,0x20,0x37,0x3e,0x92,0x32,0x02,0xf7,0xfd,0xa0,0x82,0x67,0x84,0x29,0x2e,0xba,0x8b,0x23,0x8b,0x6c,0xb8,0x83,0x04,},\"\\xce\\x7b\\xf9\\x72\\x84\\x4f\\x51\\x84\\xae\\x8e\\xac\\x87\\xb1\\x2b\\xe9\\x20\\x2c\\x72\\x39\\x96\\x1d\\xc2\\x3c\\xd4\\x1f\\xf5\\x5b\\x9b\\xfa\\xac\\x0c\\xc0\\x6f\\x3f\\x1d\\xec\\xfa\\x95\\x71\\x09\\x5c\\x8e\\x82\\xb4\\xeb\\x6f\\x8a\\x1c\\x52\\xc8\\xd3\\xde\\xaa\\x61\\xa9\\xaa\\x94\\xe2\\xec\\xd9\\xab\\x5b\\x80\\x63\\xf2\\xda\\x6d\\x80\\x15\\xdf\\x0a\\x51\\x44\\xfa\\x3a\\x48\\xe3\\x05\\xad\\x9f\\x41\\xea\\xa1\\x1c\\x4d\\x74\\x85\\x43\\x74\\xec\\xbf\\x38\\x2e\\x30\\x02\\x57\\x9a\\x9a\\x24\\x9e\\xfa\\x1e\\x1c\\xa0\\x4d\\x33\\x84\\x47\\xd7\\xf2\\x20\\x67\\x03\\xe6\\xca\\xbf\\x5b\\xbd\\x33\\x2b\\x42\\x57\\x3b\\xcb\\xd3\\xb6\\xf7\\x1b\\x7c\\x3b\\xf7\\x3d\\x4c\\x77\\x4a\\xa0\\x1e\\x86\\x68\\x41\\x43\\x28\\x29\\xd0\\x7f\\x96\\xe1\\xf6\\x1a\\x20\\x21\\x6d\\x96\\x8c\\x90\\xe3\\xed\\x11\\xf6\\x63\\xf7\\xd6\\x27\\x16\\x22\\xfe\\xfc\\xf3\\xab\\x68\\xf3\\x44\\x32\\x85\\x15\\xd5\\xcc\\xe2\\xce\\x85\\xe8\\xbf\\x3d\\x1d\\x09\\x04\\x36\\x92\\xe1\\xfb\\x8b\\xbd\\xdc\\x07\\xa4\\xab\\x0a\\x3e\\xef\\x8c\\xa6\\xa4\\x20\\xe7\\x4b\\xff\\x8d\\x3d\\x71\\x55\\x96\\xaa\\x82\\x16\\x82\\x95\\x4f\\xe8\\x96\\x29\\xae\\x27\\xc1\\xbb\\x03\\xb6\\xaa\\x09\\xf3\\x6a\\x39\\xa3\\xe3\\x7b\\xa9\\x81\\x32\\xf4\\xe2\\x38\\x88\\xf9\\xf3\\x35\\xe7\\xbe\\xaa\\x2c\\xb2\\x72\\x7a\\xcc\\x3d\\x27\\x77\\x30\\x9b\\x85\\x29\\x52\\x32\\xe5\\x4d\\xa8\\x8e\\xbb\\x6f\\x10\\x53\\xd6\\xde\\x79\\xac\\x66\\x09\\x85\\x2e\\xb9\\x3a\\x0a\\x35\\xbc\\x1a\\x7b\\xdc\\x22\\xd6\\x28\\xbc\\x86\\x12\\x4d\\x69\\x6c\\x3f\\x98\\x28\\xb6\\xf8\\xb9\\xaa\\xde\\x1a\\x65\\x21\\x61\\x77\\x48\\x6c\\x25\\x2a\\x4b\\x42\\xd9\\x0a\\x4e\\x0f\\xea\\x20\\x93\\x48\\x9e\\x24\\x4d\\x80\\x8e\\xf7\\x02\\x1a\\x97\\xd5\\x60\\x8c\\x0a\\xe1\\xd6\\x63\\xc7\\x75\\xe8\\xbb\\x9e\\x9a\\x73\\x15\\xf1\\xfe\\xb6\\xd1\\x29\\xb5\\xa5\\x41\\xea\\x59\\x29\\xa2\\xc6\\x33\\xb6\\xd8\\xc3\\xc4\\x54\\x41\\x71\\x79\\x46\\xcf\\x87\\x3e\\x9b\\x4c\\x51\\x21\\x80\\x13\\x5d\\x54\\xf0\\x53\\xab\\xe4\\x4c\\x6d\\xf3\\x9b\\x7b\\x06\\x2e\\xf7\\x24\\x01\\x62\\xcb\\xd0\\xb8\\x51\\xaf\\xe5\\xf9\\x15\\x36\\xa9\\x49\\x94\\x18\\xe8\\xbf\\xf4\\x99\\x64\\x73\\xd8\\x05\\xeb\\xc1\\xae\\x48\\xda\\x2d\\x0b\\x12\\x9e\\x8e\\x82\\x52\\xf1\\xd5\\x3c\\x32\\x8f\\x32\\xdb\\x25\\x2d\\xe3\\xbe\\xfb\\xe5\\xf3\\x12\\x80\\x12\\x11\\x43\\xa8\\x00\\x4a\\x4c\\xae\\x63\\x1c\\x82\\x74\\x09\\xe5\\x20\\xe3\\x94\\xcd\\x0f\\x89\\x50\\xcd\\x4c\\x3c\\xf3\\xf3\\xdb\\xd4\\x95\\x2a\\x4d\\xfe\\x69\\x87\\x5f\\x56\\x53\\x89\\x06\\x1a\\xd0\\xa0\\xce\\xe6\\xb6\\xaf\\xf0\\x9c\\xec\\xa2\\x6d\\x99\\x0e\\x89\\x6a\\x2a\\xba\\x9f\\x3b\\x26\\x01\\x5b\\x63\\x42\\x37\\x68\\x68\\x4c\\x03\\xed\\x0d\\xe6\\xce\\xe7\\xac\\x5b\\xbd\\xf9\\xf4\\x85\\xc2\\x27\\x5c\\xd1\\x2a\\xef\\xa8\\xf9\\x07\\xb8\\x51\\xa0\\x2d\\x51\\xc3\\x4f\\x12\\x1b\\x77\\xf3\\xa5\\x6a\\x9e\\xbd\\x1d\\x65\\xff\\xe8\\x9b\\xee\\x38\\x1f\\xf2\\xa7\\x48\\x0e\\x89\\x68\\xcf\\xf2\\x5a\\xc8\\xd0\\x4e\\x14\\x9a\\x9d\\x50\\x27\\xd1\\x4b\\x88\\xf8\\xae\\x26\\x04\\xd2\\xac\\x22\\xac\\x67\\xd1\\x3e\\x90\\xad\\xa6\\x20\\xc2\\x04\\x6d\\x28\\x29\\x93\\x84\\xd0\\x95\\x9f\\xb7\\x6e\\x22\\x58\\x87\\x96\\xce\\x42\\x7a\\xae\\xaf\\x4e\\x2a\\x8a\\xae\\xc3\\xe8\\x7f\\x84\\xcc\\xd0\\x82\\x52\\x4c\\x96\\xd7\\x66\\xee\\xc6\\x6f\\x0b\\xec\\x3e\\x79\\x95\\x58\\x14\\x5f\\x09\\xd3\\x30\\x13\\x4f\\x1c\\x63\\xf3\\x70\\x53\\xcd\\x4b\\xdc\\x1c\\x37\\xfd\\xe9\\x72\\x91\\x85\\x75\\x51\\xf5\\x0a\\xc8\\xe1\\x5f\\x06\\xac\\x1c\\x73\\xda\\xa1\\xe8\\xc5\\xbc\\x92\\x77\\xe3\\xd6\\x9c\\xb4\\x4a\\x32\\x37\\xec\\x57\\xdb\\xbc\\xcf\\xdf\\x66\\x85\\xad\\xa2\\x0b\\x74\\xa1\\xbc\\x6b\\x74\\xab\\x05\\x69\\x0e\\xaf\\x9b\\xd0\\xc4\\xbe\\x17\\x04\\x2f\\x5c\\xd3\\x20\\xcd\\xd6\\x13\\xdc\\x08\\xd2\\x9a\\xf3\\x46\\xaa\\x41\\x91\\xce\\x0b\\x4f\\x85\\xbb\\x2a\\xd7\\xf3\\xba\\xc7\\x38\\xa9\\x37\\x7e\\xc6\\xb8\\x40\\x62\\xcc\\x70\\xfc\\xa9\\xec\\xfb\\xe1\\xf5\\x7f\\xe5\\xb2\\xce\\x7a\\x4f\\x73\\x9c\\x81\\xca\\xbc\\xde\\x04\\x64\\x51\\xdd\\x61\\xce\\x1d\\xbc\"},\n{{0x1e,0xd3,0x7b,0x61,0x0b,0x8b,0x35,0x41,0x7d,0x04,0xe5,0x9a,0xaa,0xda,0xc6,0x88,0xff,0x81,0xf1,0xe5,0x07,0xc8,0x9b,0x4f,0x40,0x01,0x60,0x94,0x19,0x08,0xcb,0x8c,},{0x48,0xe8,0xcb,0xeb,0x12,0x40,0xbd,0xeb,0xf0,0xa2,0xd9,0x29,0x53,0xaa,0x89,0xb2,0x82,0xc4,0x9a,0xab,0x2c,0x38,0xae,0x69,0x04,0x4c,0x51,0x51,0x5c,0x33,0x00,0xd5,},{0x86,0x08,0x81,0x5e,0x10,0x59,0x0d,0x55,0x04,0x87,0x4d,0x89,0x99,0xfd,0x6f,0x09,0x62,0x6f,0x95,0x0b,0xe2,0x0c,0x91,0x2c,0x27,0xc9,0xde,0x6e,0x79,0xb0,0xfa,0xf7,0x77,0xa5,0x33,0xbd,0x5b,0xb6,0x67,0xab,0x51,0x3a,0x49,0x45,0x8e,0xcd,0x67,0x87,0xa0,0x9e,0xc0,0xdf,0x6c,0x9c,0x9d,0x63,0x33,0xc5,0xe3,0xae,0x61,0xea,0x37,0x0a,},\"\\x1e\\x67\\x67\\xdf\\x97\\xdb\\x1c\\xfb\\x40\\x88\\xda\\x7b\\x20\\x0d\\x9f\\x59\\xec\\x8d\\xd4\\x53\\x3b\\x83\\xbe\\x30\\x9f\\x37\\x65\\x00\\x31\\x06\\x57\\x27\\xcd\\x52\\x02\\xce\\xf4\\x84\\x26\\xa5\\xf3\\xa1\\x1d\\x50\\xb3\\x81\\xf8\\xbc\\x22\\xff\\x10\\x18\\x27\\x35\\x9f\\x2d\\x0a\\x61\\x0a\\x4f\\x75\\x54\\x64\\xa0\\xc8\\x91\\xcb\\xd9\\x8d\\x2d\\xcb\\x41\\xd9\\x77\\x9d\\x28\\x8f\\xcf\\x1f\\xea\\x62\\xe5\\x21\\x63\\xae\\x67\\xe9\\x04\\x28\\xb8\\x63\\x98\\xef\\xa2\\x18\\xf1\\xb9\\x82\\x08\\x1f\\xc5\\x13\\x30\\x5f\\xd3\\xe8\\xec\\xe7\\xf9\\xac\\xb0\\xe1\\x0e\\x00\\x1d\\x2e\\xd2\\x99\\xa4\\x8a\\x80\\x87\\x0b\\x3d\\x5d\\x8a\\xb9\\x00\\x63\\x09\\xb3\\x15\\x91\\xca\\xf0\\x58\\x33\\x80\\x07\\x3a\\x2d\\xb6\\x1f\\x45\\x25\\x4a\\xb9\\x65\\xb5\\xe4\\x67\\x2c\\x4b\\xfa\\xa8\\x6e\\x33\\x6c\\x49\\x27\\x85\\x52\\x72\\x9f\\xb2\\xda\\x76\\xff\\xe5\\x02\\xec\\x61\\xe1\\x69\\x6c\\x7f\\xc9\\xef\\x19\\xf7\\xcc\\x2a\\x27\\x75\\xb2\\x97\\x00\\xcb\\x38\\x42\\x94\\x06\\x3a\\x17\\xfe\\xd4\\xfc\\x63\\x5b\\xc1\\x32\\x82\\xa9\\x0d\\xad\\x0c\\x00\\xaa\\xdb\\xcd\\x56\\x9f\\x15\\x6a\\x85\\x4f\\x8b\\xa9\\xe7\\xd6\\x07\\xd2\\x0f\\x2e\\x9e\\x53\\x37\\x98\\x11\\x61\\xd8\\x04\\x64\\x46\\x68\\xd0\\x64\\xfa\\x63\\xdc\\xeb\\x9f\\x58\\x01\\x35\\x3d\\x0a\\xb9\\xf4\\x1d\\x1d\\x8b\\xdc\\x76\\xc1\\x3a\\xb2\\xf0\\x23\\xea\\x01\\xad\\xbc\\x4c\\x81\\x68\\xd9\\x39\\xe9\\x8f\\x64\\xfd\\x89\\x19\\x38\\x4a\\xbe\\x76\\x70\\x92\\x63\\xc0\\xcd\\x7c\\x3e\\xfa\\xdc\\x28\\x01\\xcc\\x4a\\xbd\\x80\\xa0\\x9b\\xb3\\xed\\x6b\\xb7\\x8c\\xd6\\x20\\x96\\x9c\\xd3\\x5c\\x6a\\x3a\\x5d\\x01\\x48\\x5e\\xad\\x4c\\x45\\xeb\\xb6\\xac\\x6a\\x83\\x21\\x2a\\x7c\\x76\\x67\\x54\\x27\\xb2\\x1d\\xa8\\xa7\\xa5\\x04\\x7b\\x30\\xa6\\x10\\x0c\\xda\\x02\\x47\\x6c\\x18\\x6e\\x6c\\xe4\\x0d\\x27\\x68\\xa9\\x42\\xc9\\xf8\\x73\\x05\\xe9\\xd3\\x63\\xb5\\x24\\xc0\\x09\\x4a\\x9e\\x2e\\x29\\xf5\\x85\\x89\\x4c\\x0a\\xdb\\xfc\\xd6\\x06\\x90\\xfc\\x7f\\xb0\\xa9\\xc7\\x17\\xcf\\x43\\xb4\\x84\\xfd\\x45\\x15\\x1b\\x13\\x04\\x16\\x9c\\x26\\x92\\x1d\\xb2\\x27\\x6e\\xc0\\x5a\\xd2\\x2a\\xd1\\x66\\x85\\x4f\\xd2\\xf9\\x40\\x85\\x77\\x8c\\x47\\x0d\\xc4\\x52\\xe5\\xcf\\xa4\\xae\\xe0\\x4f\\xac\\xb7\\x70\\x52\\x6e\\x1f\\x24\\x8d\\x3d\\x15\\xc2\\x72\\x80\\xfd\\xfa\\x1f\\xd2\\xc1\\x04\\x4b\\xcb\\xc8\\x81\\xc3\\xd9\\x98\\x15\\xc9\\x7f\\xbe\\xa4\\x61\\x10\\xbe\\x02\\xda\\xb7\\x74\\xf3\\xa6\\x10\\xe5\\x80\\x2a\\xbf\\x36\\xa4\\x98\\x75\\xc6\\x82\\x63\\x8e\\x0a\\xe4\\xcc\\x82\\x77\\xc5\\xe9\\xaa\\x73\\x07\\x44\\x5e\\x6b\\xbc\\xbe\\x54\\x9e\\xec\\x2a\\x45\\xb1\\x59\\x7f\\x74\\x47\\x10\\x7b\\x62\\xe2\\xce\\xe0\\xa5\\xfc\\x51\\xbe\\xae\\x3e\\x1f\\xe9\\xbe\\xfb\\x18\\x85\\xd9\\xb3\\x0f\\x9b\\x4f\\x1f\\x56\\x20\\x6d\\xee\\x0d\\x67\\x77\\x9c\\x57\\xf4\\x84\\xc8\\xc3\\xc8\\x99\\xa5\\x15\\xa9\\xd1\\xc1\\x0f\\x60\\x59\\x84\\x0c\\x1c\\x73\\xd3\\xf0\\x5b\\xcb\\x88\\x59\\x0c\\x52\\xf7\\xda\\x39\\x18\\x38\\xdc\\x2e\\x73\\x22\\x8f\\x09\\x81\\xc2\\x89\\xa4\\xc2\\x7f\\x0c\\x75\\x7f\\xaf\\x7b\\x3b\\x89\\x14\\x6e\\x33\\xda\\xfa\\x49\\x0d\\x9e\\x0f\\x92\\x75\\xb0\\xcf\\xa6\\xa7\\x71\\x0a\\x73\\x83\\x14\\x59\\x59\\x5b\\xf7\\x32\\x11\\x2b\\x62\\xfc\\x86\\x4c\\xa4\\xc8\\x29\\x78\\x4a\\x3f\\x16\\xee\\xc4\\xe1\\x8f\\x93\\x69\\x18\\xa7\\xb9\\x89\\x16\\x69\\xe9\\x33\\x22\\x3f\\x74\\x5f\\xda\\x56\\x2b\\xc0\\xa4\\xe6\\x1e\\x3d\\x14\\xea\\x45\\xdf\\xc3\\x27\\xe2\\xfc\\x0c\\xdf\\xe6\\xf2\\xf9\\x75\\x46\\xc9\\x0f\\xce\\x82\\xf5\\x22\\x29\\x14\\x80\\x11\\x1a\\x1e\\x6b\\x93\\x88\\x27\\x2c\\x0b\\xe2\\x8d\\x20\\xed\\x84\\xbb\\x84\\xd4\\x9b\\xc1\\x99\\xcd\\x59\\x99\\x48\\xb8\\xf2\\x03\\x9d\\x07\\x82\\x7a\\x3f\\x40\\x75\\xd3\\xa6\\x7e\\xe5\\x72\\xa0\\x13\\x79\\xa3\\x62\\x13\\xfe\\x11\\x6e\\x76\\x8b\\x41\\x14\\xe8\\xa4\\xb3\\x13\\x4c\\x38\\x18\\x96\\x07\\x72\\xd7\\x27\\xb0\\xca\\x6f\\x7c\\x99\\x7c\\xa9\\x98\\x43\\xb7\\xeb\\x02\\xff\\xc0\\x13\\x97\\x1c\\xbe\\x0e\\x6e\\x60\\xd4\\x97\\x73\\xf1\\xe8\\xc0\\xb3\\x06\\x06\\x13\\x1c\\xb1\\x0c\\x3e\\x04\"},\n{{0x84,0x36,0x44,0x78,0xec,0x94,0xbd,0x25,0xc4,0xbd,0xb8,0x2d,0x29,0x62,0x29,0xe6,0xda,0xce,0x2b,0x13,0x59,0xd6,0xd2,0x1b,0xe2,0xb3,0xaf,0xcd,0x7b,0xda,0x19,0xc7,},{0xa1,0x81,0x4f,0x8c,0xe0,0xfc,0x3b,0x23,0x60,0x93,0xa5,0x0f,0x46,0x8c,0x13,0x16,0x21,0x1f,0xe6,0xc5,0x2e,0x23,0x45,0xd9,0xf0,0x76,0x6b,0x36,0x88,0xa0,0x3c,0xad,},{0xb4,0xc2,0x32,0x1a,0xde,0x3c,0x19,0xed,0x4e,0xd4,0xc6,0x39,0xd5,0xa4,0xd6,0xf2,0xbe,0x8e,0x2f,0xb1,0x3b,0xb7,0xbd,0x62,0x5a,0xd6,0xdc,0x87,0xe2,0xc2,0x0f,0x93,0xad,0x6b,0xe7,0xb7,0xe4,0x27,0x11,0xa8,0x78,0xdb,0x9d,0x76,0x05,0x4b,0xfd,0x7b,0xc2,0x5e,0x37,0x74,0xa9,0x3d,0xa1,0x54,0x3c,0x9b,0x4f,0x66,0x33,0xb0,0xbe,0x09,},\"\\x7b\\xb7\\x29\\x3d\\xe5\\x5f\\x05\\x8f\\xb2\\xec\\x22\\xb6\\x87\\x26\\x05\\x43\\xdc\\xaa\\x90\\xf1\\x40\\xb9\\xf4\\x5e\\xdd\\xd4\\xbc\\x22\\xe4\\x09\\x77\\xe0\\x0e\\xd3\\x3c\\xd1\\xef\\x1b\\xba\\x13\\xc1\\xd0\\x99\\x08\\x59\\x00\\x55\\x69\\xa8\\x07\\x67\\xe4\\x86\\x4a\\x2c\\xd2\\x88\\xc8\\x13\\x93\\xe0\\x4a\\xd9\\x71\\x78\\x2e\\x2b\\xc4\\x93\\x10\\x8c\\xbe\\x80\\xda\\xcf\\x0b\\x7b\\x9c\\xd5\\x34\\x98\\x84\\x07\\xa4\\xf9\\x32\\x7e\\xc8\\xe9\\xc4\\x04\\x32\\x84\\xef\\x6e\\xe5\\xa2\\x6a\\x5b\\x41\\x77\\x65\\xd3\\xea\\xbb\\x48\\xa0\\x07\\xe7\\xc7\\xf3\\x29\\x87\\xd7\\x0a\\x13\\x9a\\xc4\\x16\\x78\\xcd\\xf7\\xa5\\x5c\\xb8\\x0c\\xf9\\xdb\\x5e\\xaa\\x45\\xf3\\xde\\x0f\\xbf\\xba\\xdf\\xfc\\x40\\x99\\x63\\x70\\xe4\\x8b\\x1f\\xf5\\xed\\xd9\\x79\\x40\\xe7\\x50\\x79\\x21\\x64\\x83\\x6a\\x4a\\x5a\\xc2\\xe3\\xff\\x53\\xe4\\x8a\\x1e\\x55\\x6d\\xb9\\xad\\x0c\\x5c\\x0b\\x94\\x4f\\x4a\\xee\\x51\\x9a\\x2b\\x0a\\x88\\xbb\\x1c\\x1f\\xc7\\x45\\x45\\x24\\xcd\\x57\\xaa\\x53\\x50\\x98\\x62\\x43\\xd3\\x4f\\xc5\\x8e\\x24\\xe8\\x19\\xec\\x0b\\x85\\x45\\xd8\\xdf\\xcf\\x6b\\x20\\x31\\x14\\x41\\xd3\\xa3\\x5d\\x3e\\x71\\xb3\\xe3\\xec\\xd7\\x88\\x4d\\xda\\x84\\x33\\xa4\\x05\\xe3\\xd9\\x96\\x90\\x00\\xc8\\x20\\xa8\\x9b\\x95\\xd1\\x97\\x84\\x1d\\x98\\xae\\x73\\x4a\\x2e\\x81\\xda\\xf6\\xa7\\xdc\\xf5\\x6c\\xb2\\xfc\\x26\\xf2\\x16\\x5a\\x5f\\x42\\xb8\\x6c\\x7e\\x9e\\x5b\\x11\\x16\\x17\\x00\\xa1\\xab\\x98\\x31\\xf3\\xfa\\xe5\\x8e\\x14\\x20\\x8b\\xe1\\xbf\\x33\\xb5\\x8e\\xcc\\xe8\\x1b\\x0c\\x6b\\x7e\\x02\\xf8\\x8a\\xdf\\x9a\\xb0\\x30\\x26\\x3e\\x2c\\xc9\\xb6\\xe3\\x3e\\xbc\\xa3\\xf4\\x95\\x49\\x2e\\x32\\xbf\\xe3\\x72\\x53\\x7d\\xe6\\xc6\\xb8\\x76\\x44\\x82\\x8f\\x74\\x94\\x2a\\x02\\xb0\\x07\\xf1\\x4c\\x3f\\xc5\\xdb\\xde\\x76\\x33\\x3d\\x36\\xd0\\x76\\x31\\xb7\\xa9\\x92\\x4f\\x71\\x75\\x50\\x04\\x06\\x97\\x92\\x3f\\xa7\\xb9\\x54\\x6b\\xfb\\x02\\x17\\x02\\x4e\\xa3\\xf2\\x52\\xb5\\x15\\xb5\\xd6\\x4a\\x62\\xc4\\x8e\\x02\\x7c\\xef\\x67\\x50\\xbe\\xda\\x49\\xa0\\x24\\x47\\x03\\x9b\\x25\\x0a\\x0b\\xda\\x07\\xdc\\x06\\x24\\x91\\xa6\\x62\\xe2\\x68\\x74\\xc8\\xd0\\x0f\\x80\\xe6\\xcf\\xc8\\xb3\\x0f\\x2c\\x3b\\xf7\\x72\\x0b\\x57\\xf2\\x61\\x5f\\xc4\\x78\\xfe\\xfa\\xa6\\xd3\\x17\\x05\\xb4\\x3c\\x5a\\x54\\xf7\\x58\\x66\\x6b\\x30\\x2a\\x8d\\x34\\x95\\x31\\x31\\x94\\x1b\\x79\\x57\\x73\\x04\\x76\\x79\\x4d\\x0b\\xd9\\xd2\\xdf\\xa7\\x2f\\xd2\\x03\\xf2\\x2d\\xf5\\xec\\x6b\\xba\\xac\\xe8\\xb9\\x39\\x4b\\xeb\\xda\\xea\\xa5\\x61\\x46\\x10\\x11\\xb4\\xfc\\xa6\\x18\\x5c\\x9a\\x38\\x28\\x3f\\x54\\x03\\xfd\\xac\\x32\\x6d\\x1f\\x73\\x4c\\x6a\\x5d\\xed\\x67\\x24\\xd9\\xf3\\x84\\xae\\xbd\\x6c\\xab\\xfc\\xbe\\xc1\\x2a\\xba\\xb9\\x82\\x0d\\x08\\x07\\x32\\x51\\x5e\\x05\\x00\\xcf\\x5d\\x3e\\x2f\\x9e\\xf8\\x0a\\x4d\\x76\\x46\\xa7\\xda\\x9e\\xff\\x41\\x0f\\x50\\x7c\\x69\\x87\\x3b\\x32\\xd5\\x40\\xec\\x32\\xb2\\x83\\xef\\x31\\x79\\xa4\\xc6\\x32\\xb3\\x66\\x57\\x6d\\xff\\x05\\x8f\\xaf\\x8c\\x8c\\x70\\xbc\\x69\\xbe\\x80\\x89\\x82\\xec\\x14\\x97\\xae\\x89\\x11\\xb0\\x01\\x65\\xa6\\x66\\x95\\xf4\\xd3\\xb9\\x87\\xe7\\x39\\x0b\\x5c\\xf8\\x78\\xe3\\x5e\\x67\\x65\\x41\\x28\\x5e\\x4e\\x13\\xdf\\xae\\xb2\\xf3\\x68\\xcb\\x51\\x1b\\x77\\x8b\\x10\\x6a\\x42\\x87\\x78\\xa1\\xb8\\xf2\\xa7\\xd2\\xe0\\x93\\x51\\x9b\\xc9\\xb5\\x18\\x8e\\x38\\xc6\\x79\\x3e\\x96\\xbd\\x0d\\x30\\xe2\\xa3\\xdb\\x9e\\xe1\\x46\\x8c\\x3d\\xc8\\x7c\\xc3\\x65\\xc8\\x10\\xf9\\xdb\\xdf\\x01\\xa4\\xb5\\x14\\x21\\xf6\\xfc\\x8d\\xfd\\xa3\\xa1\\x6e\\x2d\\xa7\\xca\\x71\\x59\\xb6\\x86\\xa5\\xe1\\x67\\x33\\x89\\x37\\x88\\x2f\\xf7\\x15\\xd3\\xe7\\x50\\xd9\\x58\\xfc\\x9e\\x4b\\x1f\\x05\\x53\\x12\\x92\\x99\\xaa\\x84\\x30\\x18\\x3e\\x50\\x6c\\xd7\\xf2\\xb2\\x79\\x07\\x6e\\x0e\\x1c\\xca\\x97\\x49\\xcf\\x12\\x3c\\xe5\\x07\\xfe\\x07\\xdd\\xbb\\xc4\\xdc\\xca\\x6c\\xdb\\x9e\\xf1\\xb8\\x33\\xf6\\x1d\\x4b\\xff\\x00\\xbe\\xc0\\x12\\x15\\x8f\\x43\\x2c\\xeb\\x75\\xb4\\xf2\\xed\\xb1\\xbb\\x84\\xe5\\xeb\\xb9\\x25\\x9e\\x09\\xf9\\x62\\x5c\\xe3\"},\n{{0x00,0xdb,0x37,0xad,0x2a,0x19,0x5f,0x08,0xa0,0x84,0x40,0xd0,0x59,0x25,0x9e,0x53,0x9f,0xeb,0x40,0xb4,0x74,0x92,0x82,0x55,0xe7,0xc9,0x4e,0xbc,0x3b,0x05,0x03,0x8c,},{0x04,0xf8,0x8b,0xf6,0x39,0xe0,0xf7,0x1a,0x57,0xd0,0xd0,0xaf,0xff,0x5f,0xe9,0x7d,0xde,0x38,0x09,0xff,0x28,0xec,0x68,0xeb,0x6f,0xc4,0x23,0xf4,0xfa,0xff,0x43,0x90,},{0xf4,0xd1,0xc8,0x0f,0x5e,0x7b,0x91,0xc5,0xc7,0xa8,0x2a,0x68,0x2d,0x49,0xba,0x6f,0xb1,0x9d,0x40,0x0a,0x29,0x97,0x48,0xa0,0xc9,0x69,0xbb,0x99,0x81,0x69,0x98,0xbe,0x63,0x4e,0x84,0xda,0x78,0x58,0x1b,0x06,0xe3,0x47,0x0e,0xfe,0xc3,0x98,0x04,0xfe,0xd9,0x3d,0x29,0x73,0x9f,0x04,0x39,0xa8,0x09,0x5a,0xc4,0x0d,0x9d,0x38,0x5e,0x04,},\"\\x5a\\x94\\xf7\\x29\\xd3\\x0d\\xd8\\xaa\\xe2\\xa5\\xc8\\xc2\\x85\\x47\\xbf\\x45\\x06\\x29\\x5d\\xc6\\x1b\\xfe\\xad\\x97\\x27\\x74\\x60\\x82\\xd4\\x3b\\x0f\\x81\\x14\\xc8\\xc1\\x8c\\x5e\\xda\\xf2\\xfe\\xc7\\xca\\xe8\\x19\\x35\\x63\\x38\\xf0\\xbf\\x11\\x5a\\x17\\xb0\\x38\\xac\\xfd\\x7c\\x96\\xba\\x62\\x62\\xca\\xbd\\x57\\x10\\xfc\\x0e\\xfb\\x43\\xd1\\x3d\\xf4\\x06\\x5b\\xec\\xbf\\x1b\\x9e\\x27\\x9c\\x03\\xec\\x9b\\xbf\\xed\\x54\\xd9\\xa1\\x3f\\xe0\\x6a\\x55\\xa3\\xbd\\x05\\xc8\\x07\\x85\\x8b\\x41\\xe1\\x8d\\xbd\\xe1\\x3b\\x09\\x07\\xd4\\x03\\x41\\x32\\x26\\x2d\\x9c\\x2f\\x4d\\x2d\\x37\\x6e\\x16\\x09\\xad\\x28\\x0d\\xe2\\x0b\\xa7\\x09\\x84\\x4d\\xbd\\x12\\x95\\x02\\x57\\xf1\\xb0\\x7e\\xf8\\xcc\\x33\\x37\\xc0\\x1a\\x70\\x26\\x93\\xfb\\x4d\\x92\\xd0\\x47\\xe6\\x98\\xc3\\xa6\\xdd\\x46\\xc4\\xa9\\x2a\\x10\\xd4\\xc7\\x80\\xe5\\x2e\\x50\\x25\\xe0\\x9d\\x56\\x53\\x5d\\x7e\\xeb\\x9f\\xe7\\xf0\\x33\\xe6\\xe9\\x26\\x0a\\x68\\xf9\\xd5\\x4b\\x6f\\x37\\xcc\\x06\\x96\\x56\\xe3\\xbc\\xee\\x06\\x92\\x2b\\x34\\x96\\x81\\xa8\\xe7\\x75\\x1c\\xde\\xcb\\xe1\\xec\\xb6\\x63\\xfb\\xc6\\xf7\\xc8\\x61\\xf8\\x53\\xdc\\x31\\x0f\\x33\\xde\\xfa\\x98\\xee\\x34\\x3a\\x68\\x63\\x2e\\xc2\\x2c\\xaf\\xec\\xb7\\xf3\\x21\\x2f\\x81\\xe7\\x0b\\x71\\x84\\x3b\\x9f\\xe8\\xc8\\x6a\\x68\\xb5\\xc8\\x6f\\x03\\x22\\xd3\\x48\\xa7\\x6d\\xa7\\xf1\\xba\\x0c\\xa3\\xcd\\x7b\\x6f\\xd1\\x5f\\xf8\\x92\\x92\\xb3\\xf6\\x36\\xcd\\x08\\xcf\\x62\\x5c\\x74\\xd5\\x10\\x2c\\xab\\xb5\\x71\\xa3\\xdb\\xa8\\x6a\\x1c\\x92\\xf4\\x1c\\x72\\x03\\xb4\\x49\\x42\\xf5\\xa2\\x46\\x25\\xac\\x37\\xd7\\x7e\\x49\\xa5\\x7f\\x11\\x82\\x38\\x69\\x9d\\x80\\x7c\\x25\\x0d\\x5b\\xf4\\x6f\\x7a\\x3c\\xec\\x57\\x79\\xa6\\xe5\\xae\\x1a\\x6c\\xa1\\x60\\xcf\\xf3\\x7f\\xb3\\xb7\\x83\\x88\\xfe\\x9c\\x03\\x0c\\x40\\xe7\\x15\\x46\\x01\\x08\\x1a\\x51\\x7f\\xc0\\xaa\\x18\\x02\\xcd\\x3b\\x84\\x5b\\x94\\x6e\\xfe\\x94\\xaa\\x8b\\x9e\\x03\\xf6\\x8a\\x80\\xde\\xd0\\xdf\\xbf\\xad\\x4d\\xae\\xe4\\x0f\\xa8\\x38\\xc1\\x33\\x84\\x1a\\xe8\\xa3\\xce\\x0d\\x79\\xfa\\x8a\\x2b\\x94\\x34\\xba\\xc5\\xe1\\xda\\x6e\\x0c\\x71\\x93\\xe8\\xde\\xa4\\x35\\xa0\\x3a\\x85\\xf7\\x61\\x84\\xf7\\xeb\\xe2\\xaa\\x74\\x9b\\xe9\\x41\\x31\\x04\\xa1\\x78\\x68\\x9b\\xa6\\xd2\\x7e\\x94\\xfc\\xcf\\x61\\xeb\\x3a\\xba\\x0e\\x6a\\x5a\\x63\\xaf\\x0c\\xa8\\xf0\\x5a\\x35\\xcb\\x63\\x70\\x51\\x94\\xe4\\x4d\\x92\\x93\\xde\\x39\\x29\\xb0\\xd9\\x2b\\xe6\\xf8\\xe6\\x27\\xc3\\x50\\xa8\\x3f\\xc9\\x00\\x0a\\xa9\\x5b\\x93\\x82\\x0b\\xe9\\x79\\x5c\\x80\\xb5\\x66\\x2c\\xd7\\xb3\\x48\\x22\\x32\\x80\\x61\\x35\\x6d\\xc5\\x80\\x57\\x8d\\x1a\\x35\\xb1\\x01\\x40\\xdc\\xd2\\x48\\xe4\\x85\\x31\\x04\\xd2\\xc5\\xb2\\xc1\\x3f\\xf6\\x83\\xdd\\x5c\\x30\\x79\\x4b\\xe4\\xa7\\x68\\x58\\xaf\\x1c\\x0d\\x9a\\xf3\\x47\\xce\\x1d\\xcd\\x97\\x2e\\xe4\\x9a\\xac\\x12\\xbb\\xcd\\x89\\x9c\\x93\\x29\\x87\\x1d\\x3e\\x7a\\x06\\x83\\xd1\\x75\\x77\\x9a\\xfe\\x35\\xf2\\x6a\\x2d\\x24\\x8f\\xd7\\x80\\xea\\x85\\x1d\\xc4\\xba\\x6d\\x21\\xf8\\xa1\\x71\\xaa\\x6c\\xb8\\x69\\x7d\\x9d\\x11\\x21\\x61\\x54\\x03\\x07\\xcd\\x54\\xf9\\x31\\x77\\x5d\\x70\\xb3\\x3d\\x3b\\x6d\\xe1\\x09\\x1f\\xc1\\x75\\x05\\x31\\xc0\\x8f\\xa7\\x0f\\x7b\\xe3\\x8a\\xa1\\x10\\xd6\\x74\\x6b\\xb5\\x65\\xdb\\x7b\\x47\\x0f\\x90\\x08\\x50\\xfb\\xbf\\x1c\\x66\\x2f\\xd6\\x13\\xe4\\xf3\\xa5\\x68\\x95\\x49\\xe3\\x10\\x7e\\x9b\\x0f\\x17\\xde\\xf7\\xa5\\xbd\\x7f\\xd7\\x59\\x6c\\x4d\\x04\\xc7\\xf4\\x8c\\x77\\x9f\\xc3\\x5e\\x09\\x33\\x5e\\x1d\\xf7\\x84\\x08\\x4e\\x55\\xd8\\x55\\x1d\\x1f\\xf4\\x9d\\xe5\\xb3\\x11\\xcd\\x35\\x0f\\x34\\x7a\\x0b\\xd2\\x86\\x3a\\x2a\\x30\\xe6\\xea\\x18\\x3a\\xd2\\xe3\\xee\\xde\\xbc\\x18\\xdd\\x28\\xc6\\xa5\\x96\\xe6\\x93\\xdc\\x33\\x89\\xf7\\xd9\\x0b\\x71\\x3e\\x3a\\x85\\xa6\\x25\\x16\\x30\\x5a\\x70\\x66\\x7f\\xc1\\xfb\\x3c\\xb1\\x0e\\x8a\\x95\\x57\\x50\\x27\\x39\\x43\\xc5\\x68\\xe1\\x07\\x69\\xce\\xf7\\x81\\x99\\xdf\\x44\\x50\\xdb\\xc4\\x90\\xfe\\xf1\\xb3\\x04\\xb0\\x52\\x22\\x1b\\x2d\\xb9\\xc4\\x4f\\xe0\\x03\\x45\"},\n{{0x6c,0xa1,0xa1,0x48,0x2a,0x07,0xf2,0xa6,0xc5,0x7f,0x04,0x11,0x97,0xb3,0x4a,0x51,0x19,0xe6,0x89,0x03,0xcf,0x6d,0xfb,0x51,0x71,0x1d,0x95,0x50,0x97,0x31,0x63,0xc0,},{0x80,0x34,0xa5,0x5e,0x3b,0x6e,0xd7,0x99,0xf4,0x9e,0x2e,0x70,0x3a,0x81,0xf4,0xac,0x02,0x57,0x3c,0x44,0x5d,0x76,0x5e,0x30,0x69,0xbe,0x42,0xf0,0x9c,0xbd,0x18,0xad,},{0xdd,0x9b,0xdb,0xad,0xd9,0xfd,0xc8,0x1c,0xe2,0x30,0x28,0x8c,0x4a,0x06,0x8d,0xf0,0x7e,0x18,0xb4,0xc7,0xcc,0x51,0xc0,0xca,0x48,0x11,0xdf,0xbd,0x04,0x76,0x5c,0x56,0xbc,0x88,0x32,0x40,0xe4,0x6e,0x3a,0x42,0xc0,0x1d,0x8d,0x24,0x24,0xfb,0xc3,0x32,0xb7,0xc5,0xa1,0x7b,0xce,0xb1,0xf6,0xe8,0xda,0xd0,0xbf,0xe5,0x62,0xca,0xd3,0x02,},\"\\x08\\xfd\\x84\\x87\\x50\\x3c\\x3f\\x32\\x96\\xb6\\xf1\\xb6\\x4d\\x6e\\x85\\x90\\x6f\\xd5\\x98\\x6c\\xf9\\xc5\\xd9\\xfa\\x8a\\x59\\xd9\\x2f\\x44\\xe6\\x47\\x0a\\xf3\\x4b\\xcd\\xef\\x33\\x6f\\xfd\\xc8\\x64\\x56\\xec\\x7a\\x7b\\x57\\x61\\xf1\\xad\\xea\\x02\\x73\\x26\\x63\\x0e\\x68\\xab\\xc6\\xb8\\xcd\\x5d\\xdf\\x40\\xb6\\x41\\xa2\\x59\\xad\\x02\\x43\\x21\\xbf\\x3e\\xf9\\x8e\\x76\\x32\\x79\\x71\\x49\\xc4\\x92\\xd5\\x35\\x94\\x75\\x2c\\x55\\x0d\\xfb\\xc4\\xfa\\x6b\\xf4\\x71\\x76\\xf4\\x23\\xa2\\x70\\x56\\x93\\x94\\x7a\\xa9\\x0d\\x68\\xdd\\xc8\\xef\\xb6\\xcb\\x9d\\xbe\\xca\\xfd\\x28\\x30\\xd0\\x4f\\xd9\\x3b\\x1e\\x9e\\x7c\\x12\\xb9\\x3e\\x0d\\x0f\\x3e\\x26\\x34\\x90\\x0f\\x25\\x86\\x0d\\xda\\xdb\\xae\\xce\\x17\\x80\\xff\\x2d\\x3f\\x3d\\x9f\\xb8\\x38\\xfd\\x0d\\x5d\\x66\\xf8\\xaf\\xb3\\x05\\xff\\x1a\\x1a\\xed\\xca\\x2b\\x97\\x4b\\x63\\xe4\\x3f\\x5b\\x3c\\xc9\\xdf\\xed\\x1b\\xcf\\x11\\x99\\x91\\x76\\xed\\x95\\x85\\xac\\x82\\x9b\\xc6\\x79\\x4e\\xf3\\xac\\xd8\\x72\\xe8\\xd2\\xe9\\x26\\x08\\xb3\\x20\\xf8\\x94\\x99\\x6a\\x56\\x2e\\x1e\\xb1\\x77\\xe2\\x1b\\xe5\\x7c\\x22\\xc4\\x1e\\xc2\\x59\\xa3\\xdf\\xf9\\xc7\\xc9\\x49\\x1d\\xb8\\x38\\xd7\\x6c\\xf9\\xb0\\x38\\x31\\x11\\x59\\x8e\\x35\\x7f\\x44\\xba\\xbe\\xbf\\x12\\x1b\\xdb\\x24\\xee\\x9d\\x55\\x7b\\x7d\\x5a\\xf4\\x91\\xa0\\xa0\\x36\\x5c\\x90\\x36\\x1f\\xe4\\xf7\\xe3\\xd1\\x3a\\x17\\xda\\x3a\\x39\\xfd\\x43\\xf6\\x90\\xdf\\xb0\\xb2\\xd8\\x60\\xca\\xb4\\x19\\xf7\\x75\\xab\\x71\\x52\\xcd\\xc8\\xf2\\xaf\\xdc\\x50\\xe8\\xd5\\xda\\x5d\\xa0\\x17\\x06\\xee\\xa2\\xa2\\xff\\xad\\x4b\\xab\\xee\\x8b\\x03\\xda\\x33\\x6a\\x4d\\x84\\x3d\\x9d\\x7e\\x0a\\x93\\xf3\\x6a\\x92\\xe6\\x61\\x0a\\x36\\x8b\\x63\\x13\\x3f\\x05\\xa3\\xfd\\xc5\\x5e\\x3e\\x1a\\x44\\x0b\\x0f\\x87\\xa5\\x33\\x64\\xc1\\xd3\\x72\\x42\\xc5\\x7a\\x10\\x9e\\x6d\\xf6\\x93\\x45\\xb0\\x1c\\x21\\xc1\\x08\\x9e\\x79\\x0a\\x66\\xf4\\xf3\\x38\\x0d\\x3b\\x76\\xff\\xb4\\x20\\xdf\\xe1\\xe6\\x20\\x0e\\xac\\xe5\\x79\\x26\\x5a\\x42\\x7f\\xbd\\x35\\x55\\x14\\xef\\x95\\x3e\\x1a\\x6e\\x96\\x8e\\x37\\x02\\x1b\\x3c\\x6a\\x29\\x0d\\xcd\\x02\\x93\\xda\\x67\\x68\\xda\\xd7\\xc6\\x63\\x11\\x63\\x30\\x51\\xc0\\xac\\xcb\\x0b\\x91\\x65\\x46\\x4d\\xfd\\xdf\\xde\\xd2\\x3b\\xd1\\x3e\\xf9\\x08\\x74\\x4f\\x9c\\x21\\x11\\xdc\\x15\\x31\\x42\\xd2\\xf1\\x05\\x34\\xd8\\x93\\xfe\\x0b\\x54\\x5f\\xec\\x53\\xfd\\xb3\\xb3\\x5b\\x51\\x83\\x98\\xb0\\x2a\\xb2\\x17\\x91\\xfa\\x97\\x7e\\x30\\xcf\\x4b\\x40\\x4e\\x7a\\x29\\x9d\\x37\\x87\\x10\\x8b\\x83\\x6a\\xa0\\xd5\\x9c\\x11\\x4f\\x1f\\x36\\x71\\x9a\\x7a\\xcf\\x85\\xac\\x99\\x4d\\x9c\\xb7\\x23\\x06\\xf2\\x58\\xf7\\x8a\\xc0\\xa3\\xb6\\xc0\\x53\\x43\\xe0\\xb7\\xa9\\xaa\\x72\\x6e\\x52\\x26\\x7e\\xdf\\x97\\xf4\\x97\\x2f\\x76\\x64\\xf4\\x37\\x20\\xad\\x33\\xce\\x6e\\x61\\x54\\x40\\xe3\\x65\\x37\\xcb\\xc5\\x69\\xbd\\x6f\\xf9\\x4f\\xfd\\xae\\xa5\\x1e\\x06\\x02\\x9d\\xae\\x78\\xc5\\xb9\\x15\\xc5\\x37\\xca\\xea\\x6f\\x15\\x04\\x14\\x79\\x79\\xb8\\xaa\\xae\\x0b\\xcd\\x96\\x18\\x43\\x7e\\xbe\\xd0\\xb5\\x5e\\xfa\\xec\\x32\\x0e\\x84\\xc7\\x59\\x59\\xa3\\x7a\\x26\\x0a\\x02\\xd4\\xef\\x1b\\xb6\\x26\\x41\\x52\\x0f\\x1a\\x03\\xdd\\xea\\x8c\\x4c\\x1d\\xe8\\xd7\\xfa\\xc5\\x8d\\xa4\\x08\\xb0\\xab\\x47\\x57\\xa1\\x35\\xf1\\xd0\\x75\\xc9\\xf7\\xc9\\x9f\\xb9\\x9d\\xb9\\x42\\x7c\\xe9\\xb0\\xd6\\x26\\xcb\\x1a\\xc1\\x89\\xad\\x86\\x63\\xd7\\xa7\\x14\\xfb\\x5c\\xd1\\x58\\x5c\\x3b\\xf9\\x9a\\x0a\\xa4\\x6d\\x76\\x39\\x78\\xd0\\xb1\\x2d\\x65\\xc4\\x38\\xbb\\xb7\\x3f\\xea\\xa5\\x1b\\xa2\\x6a\\x45\\x9e\\x7b\\xea\\x25\\x43\\x94\\x66\\xc0\\x86\\x13\\xe4\\x25\\x40\\xc8\\xc6\\xd5\\x43\\x67\\xf2\\x21\\xfc\\xce\\x0c\\x5e\\xb6\\xaf\\x2f\\xaa\\x18\\x1e\\xa2\\x15\\x21\\x80\\x9b\\xe7\\x56\\x49\\xcf\\x8d\\xee\\x76\\x71\\xdb\\x7f\\x94\\x8f\\x34\\x6c\\xbd\\x03\\x02\\xbf\\x9a\\x06\\xea\\xbc\\x72\\xe2\\xe5\\x12\\xb3\\xdf\\x88\\x5f\\x6d\\xaa\\x39\\x8f\\x93\\xe3\\x6d\\xae\\x2d\\x6a\\x04\\x47\\x81\\x21\\xf9\\x77\\x87\\xd4\\xce\\xdf\\xf6\\xdb\\x09\\xaa\\xf1\\x0f\\x27\\xb1\"},\n{{0x27,0x84,0xdf,0x91,0xfe,0xa1,0xb2,0xd2,0x1d,0x71,0x3d,0xe2,0xed,0xc6,0x65,0x24,0x51,0xa0,0xc1,0x59,0x54,0xb8,0x65,0x60,0x62,0xea,0x1d,0xed,0xc2,0x44,0x5b,0x2a,},{0x95,0x56,0xdb,0x53,0x70,0xf8,0xfb,0x3c,0x74,0x78,0xde,0x03,0xd2,0x3d,0xf1,0xcd,0xa9,0x6f,0x27,0x40,0x11,0x8e,0xfd,0xd3,0xd1,0xa9,0xfa,0x4c,0x3b,0xfe,0x88,0x49,},{0x17,0xd1,0x71,0xd9,0x46,0xde,0x35,0x16,0x15,0x84,0x07,0xe1,0x32,0xcc,0x1a,0xce,0xca,0xef,0xd6,0xd0,0x92,0x11,0x2b,0xe6,0x53,0x99,0x95,0x23,0xe2,0x0b,0xd4,0x95,0xf7,0xb7,0xf6,0x00,0xe8,0xd5,0xa6,0x71,0x33,0x0d,0x32,0x69,0x3d,0x60,0x19,0xc0,0x8d,0x2d,0x00,0x3b,0x17,0x6e,0x63,0x19,0xc3,0x53,0x94,0x20,0x0e,0x02,0x7d,0x0e,},\"\\x2e\\x3b\\xc5\\x4d\\xf4\\x16\\x74\\x1d\\xbe\\x79\\x16\\xad\\x25\\xf0\\x4e\\x48\\xd5\\xa9\\xd7\\x7a\\x62\\x3e\\x57\\xf9\\xcd\\x61\\xec\\xb4\\x4f\\x09\\xf7\\x68\\x33\\xeb\\x2a\\x3e\\x9a\\xb7\\xaa\\x89\\xff\\x5d\\x2d\\x56\\x0c\\x07\\x17\\x7d\\x85\\x4d\\x7c\\x49\\xcb\\xef\\x49\\x2b\\x7f\\x4f\\x7e\\x56\\x7d\\xe1\\x27\\x51\\x24\\xe1\\x6c\\xa4\\xa7\\x98\\x01\\x62\\xfa\\x0f\\xd1\\x62\\xa8\\xe5\\xfd\\x6f\\x35\\x61\\x70\\x07\\x03\\x4b\\xce\\xec\\x57\\xc8\\xfa\\xf7\\x66\\x4f\\x4b\\x3b\\xaf\\xfd\\xea\\x8d\\x8f\\xc2\\xba\\x22\\xd5\\x85\\xe9\\xe2\\xd7\\x39\\xf5\\xff\\xc9\\x9b\\x4e\\x0d\\xbe\\x9c\\x36\\x86\\x54\\x7e\\xa0\\x48\\x15\\xa5\\x9c\\x4a\\x25\\xb5\\xf2\\x39\\x06\\x68\\xe4\\x18\\xba\\x0f\\xcb\\xdf\\x4c\\x4a\\x51\\xf3\\x39\\x05\\xc7\\x4f\\xbb\\x83\\x0a\\x19\\xf9\\xbc\\x86\\x36\\xdb\\xaa\\xff\\x20\\x99\\x95\\x44\\x79\\x96\\xd2\\xe5\\xb1\\xc3\\x77\\xb4\\xcb\\x87\\xa4\\xe1\\xef\\xe1\\x2d\\xe3\\x4d\\x33\\x59\\x9f\\xf3\\x97\\xb7\\x40\\x17\\xd7\\x11\\xed\\xd3\\xe7\\x72\\x15\\x5b\\xe5\\xa4\\x40\\x6e\\x74\\xcb\\xe2\\x93\\x1e\\xf5\\x13\\x59\\xaf\\xd5\\x1b\\x5b\\x1a\\x7b\\x3e\\xa2\\x2e\\xe8\\xed\\xa8\\x14\\x76\\xbc\\xc1\\x7e\\xa7\\x68\\x0f\\x6f\\x31\\x04\\x70\\x3b\\x9f\\x2a\\x35\\xcf\\x26\\x27\\xeb\\x74\\x1d\\x1a\\x30\\xaa\\x4b\\xee\\xf6\\x57\\x9e\\xc7\\xd0\\xb0\\x7a\\x4e\\xf3\\x2a\\xbc\\xb4\\xd7\\x56\\x97\\x0f\\x70\\xa3\\x67\\x8e\\x17\\xe6\\xe5\\x73\\x18\\x90\\xae\\xbc\\x8c\\x92\\xb9\\x56\\xd4\\xb3\\xb5\\xfe\\x2a\\xdf\\xd7\\x9b\\x21\\x1a\\x18\\x83\\xdf\\xc8\\xc9\\xa4\\xb1\\xb9\\xc8\\xc1\\xbb\\x26\\x5e\\x1f\\x3d\\xd3\\x92\\x44\\x5e\\xa5\\x9b\\x59\\x0a\\x01\\x95\\x51\\xf8\\x12\\x18\\x49\\xf4\\x35\\xb3\\xac\\x1b\\x29\\x90\\x2f\\xc8\\x39\\x25\\x54\\x05\\x6b\\x93\\x90\\x3d\\x5f\\x26\\x3b\\x3d\\x54\\x08\\x43\\xd6\\xaf\\xa7\\x5a\\x2a\\xd8\\x30\\x4b\\x76\\x90\\xde\\x99\\xa7\\x34\\xc3\\xd1\\x30\\xb6\\x95\\x47\\xb1\\x8b\\x09\\xe9\\x8c\\xbf\\x25\\x27\\x30\\xe4\\xae\\xdb\\x6d\\xc4\\xb5\\x8b\\x22\\x43\\xfe\\x55\\xe8\\x09\\x39\\xd3\\x7b\\x0a\\x59\\xd7\\x22\\x26\\xd8\\xa2\\xcc\\x51\\x53\\x09\\x5e\\x15\\x99\\x4a\\xd6\\x21\\x95\\xaa\\x31\\x0f\\x2a\\x64\\x26\\x67\\x6b\\x66\\x1e\\x47\\xb9\\xfc\\xff\\xfa\\x04\\xd6\\xdc\\x62\\x5f\\x29\\xf4\\x4c\\x7c\\xf6\\x20\\xb3\\x78\\xa6\\x5d\\x23\\x83\\x44\\xb3\\x80\\x44\\x8c\\xd1\\x19\\xcc\\x7f\\x37\\x3f\\x62\\xcd\\xfa\\xd6\\x41\\x49\\x90\\x63\\x53\\xf3\\xa5\\x41\\x07\\xc5\\xdb\\xa6\\x5e\\x3c\\xc4\\x94\\xb0\\x53\\x1f\\x4d\\x64\\x74\\x93\\x63\\xf2\\x30\\x73\\x8b\\x2c\\xfe\\xed\\x98\\x35\\x20\\x22\\x7d\\xd5\\xbc\\x43\\xbe\\x59\\xb3\\x26\\x8e\\x28\\x32\\x16\\xf6\\xe9\\xc7\\x5e\\x0c\\x1c\\x71\\x27\\x2e\\x54\\xfd\\xb2\\x9c\\x78\\x58\\xd2\\x87\\xd1\\xef\\xa1\\x91\\x7b\\xe3\\x7c\\x8e\\xea\\xb5\\xe4\\x4c\\x3a\\xd7\\xb3\\x6e\\x8a\\xc9\\xf6\\x69\\x91\\xeb\\x82\\xa5\\x14\\x8e\\x59\\x72\\x03\\x4a\\xd0\\x1c\\x62\\x61\\x5a\\x45\\x15\\x45\\x79\\xfa\\x50\\x86\\x9e\\x7b\\xe9\\x87\\x6b\\x56\\x56\\xea\\xad\\x2e\\x43\\x02\\x5a\\x62\\xdd\\x13\\x4b\\x61\\x2d\\x8f\\x4d\\x5e\\xbc\\xf8\\x05\\x6e\\x19\\x8b\\x71\\x34\\x38\\xe8\\xe0\\xe3\\x47\\xca\\xfb\\xfc\\xb8\\x9e\\x39\\x4a\\xa3\\x30\\xd4\\xc7\\x88\\xd4\\x9c\\x65\\x8f\\xcf\\xc8\\x0b\\x3e\\x00\\x78\\xf0\\xe8\\xe1\\x9a\\xa9\\xb8\\xfe\\x8e\\xb0\\xba\\xb9\\x3d\\xe7\\x85\\xd0\\x43\\xe0\\xf4\\x75\\xae\\xb6\\x0d\\x62\\xe3\\x8f\\xb1\\xf8\\x38\\x4a\\x00\\xb7\\xa9\\x02\\xda\\xee\\x13\\xd2\\x13\\x62\\x69\\xe5\\x08\\x01\\xb8\\x0a\\x65\\xb2\\xf9\\x13\\xcf\\xe3\\xff\\xb3\\x65\\xd9\\xaa\\x2f\\xd1\\x93\\x72\\xa0\\xb0\\x22\\x56\\x95\\x44\\x4e\\x4b\\xc5\\x48\\x71\\xd1\\x08\\xe0\\x9c\\x7e\\x1c\\x2b\\x42\\xdc\\xbb\\xac\\xce\\x24\\xea\\x5b\\xd5\\xbf\\x1f\\xcf\\x4a\\xc6\\x97\\xa3\\xfe\\x09\\xa5\\x46\\x77\\xb7\\xa8\\xdc\\x8d\\x5e\\xec\\xb8\\x6c\\xc7\\x92\\xee\\x9b\\x6f\\xea\\x2d\\xe1\\x6a\\x47\\x32\\x69\\xfd\\xc6\\x5d\\xbb\\x73\\xc2\\x58\\xc8\\x21\\x44\\x04\\x07\\xc6\\x42\\xf7\\xd3\\xd3\\xf5\\xc7\\x08\\xd5\\x53\\x32\\xda\\x83\\x43\\x10\\x6c\\x19\\xb2\\x30\\xa5\\x14\\x27\\xf3\\xb7\\x71\\x91\\x6a\\xe3\\x68\\x8b\"},\n{{0x4b,0xb7,0x92,0x36,0xfa,0xda,0x31,0x44,0xb6,0x82,0x96,0x49,0x9b,0xa4,0x4a,0xe5,0x34,0x07,0x4c,0xa9,0x4d,0x4b,0x58,0x1e,0x5e,0xdc,0xff,0xfe,0x13,0xb3,0xad,0x19,},{0x0a,0x83,0x99,0xf1,0xe5,0xa4,0x23,0xdc,0xf7,0xb2,0x5b,0x2f,0xb0,0xac,0x9e,0x1e,0x95,0x48,0x14,0x8b,0xea,0x84,0xd0,0x21,0xe0,0x42,0x87,0x60,0xe0,0x5d,0x58,0xbf,},{0x69,0x8f,0xab,0x68,0x51,0x0d,0xb8,0x12,0x1a,0x46,0x5d,0xb7,0x7e,0x4f,0x8b,0x58,0x6a,0xee,0x89,0x58,0x16,0xe6,0x3b,0xbf,0x0b,0xeb,0x24,0x2d,0xb4,0xe8,0x4c,0x15,0x7f,0x4b,0xe2,0x01,0xae,0x65,0x64,0x51,0x7a,0x87,0x0d,0x17,0xf6,0x0c,0x85,0x83,0x70,0xc0,0x1c,0xca,0x17,0x18,0x9c,0xb4,0x18,0x9e,0x81,0x43,0x91,0xd1,0x50,0x0d,},\"\\xad\\x81\\xab\\xf6\\x93\\x7a\\x7a\\xcd\\x7f\\x18\\x37\\xf0\\x4d\\x3f\\x10\\xe7\\x08\\xc6\\x1a\\x5f\\xbe\\xde\\xee\\x4d\\xb7\\x6e\\x15\\x98\\x57\\x03\\x84\\xe6\\xef\\xec\\xe9\\x7c\\x92\\x5d\\x2e\\x5c\\x34\\x88\\xca\\xb1\\x0b\\x5b\\x52\\xb8\\xa5\\x48\\x6e\\x99\\xd8\\xff\\xe8\\x6c\\x19\\x81\\xa1\\xf1\\xd5\\x32\\xdc\\xd4\\xd4\\x89\\xe5\\x54\\x6d\\x86\\x65\\x32\\x98\\xe7\\xa5\\xf9\\x6e\\x81\\x44\\x55\\x2d\\xda\\x8a\\x18\\xe7\\x5b\\x5f\\x73\\x55\\xb1\\x35\\x41\\x62\\x11\\x06\\xe4\\x97\\xe5\\x1a\\x56\\xd8\\x65\\x9d\\x19\\x8f\\xe1\\x00\\x37\\xe2\\x21\\x28\\xaf\\xc2\\x71\\x4a\\x2c\\xb5\\xa1\\x2c\\xc5\\xdb\\x09\\x68\\xa3\\x43\\xef\\x91\\x8e\\x87\\x69\\xdd\\x6a\\x3e\\x5b\\x9e\\x32\\xaa\\xb6\\x6c\\xb0\\x23\\x9e\\xbe\\x4c\\x17\\xf1\\x82\\x18\\xe2\\x52\\xeb\\xa6\\x16\\x2e\\x97\\x70\\x49\\xeb\\xac\\x0b\\x38\\x04\\x8b\\x3a\\xaf\\xb7\\xd4\\xd7\\x22\\x63\\xe9\\x21\\x28\\x99\\xa3\\xbf\\xe0\\xa6\\x9c\\x99\\xe2\\x2a\\xc6\\x1c\\x5e\\x96\\x12\\x45\\x63\\x03\\xd9\\x24\\x58\\xb5\\xc5\\x02\\x91\\x6c\\x34\\xa8\\xee\\x5c\\xd9\\xa5\\x82\\xa5\\x25\\x76\\xb6\\xdc\\x9d\\x7d\\x4c\\x64\\x2f\\x21\\x29\\x98\\xbf\\x33\\x58\\xd4\\xa8\\xc2\\xea\\x67\\x68\\x6e\\x55\\xd4\\x89\\xf6\\xa7\\x6e\\x6b\\x07\\x0e\\x6e\\x99\\x5a\\x74\\x53\\x26\\xc9\\xaa\\x63\\x63\\x0a\\x00\\x33\\xad\\x30\\x72\\x1a\\xa6\\x5f\\xac\\x60\\x4a\\x6e\\x58\\xc7\\x50\\x72\\x1a\\x56\\xca\\x67\\x60\\xc9\\x41\\x34\\xd6\\x11\\xfa\\xb4\\xd3\\x54\\xe4\\xf6\\x6a\\x29\\x67\\x7b\\x1a\\x66\\x66\\x01\\xe9\\xda\\x79\\xf2\\x13\\xf5\\x82\\x03\\x74\\x33\\xc0\\x7f\\x94\\xd5\\xf0\\xde\\x6a\\xa9\\xfa\\xa0\\xb3\\x2f\\x7b\\x02\\x3f\\xb9\\xfc\\x13\\x5a\\x26\\xf9\\x70\\x52\\xac\\x80\\xb3\\x9b\\x30\\x6a\\xed\\x13\\x92\\x6c\\x28\\x54\\x19\\xa2\\x9b\\x20\\xe2\\x37\\x0d\\x8a\\x09\\x5b\\x32\\x25\\x8f\\xa9\\x89\\x34\\x89\\xee\\x21\\x08\\x9c\\x75\\x2e\\xc0\\x62\\xe1\\x20\\x35\\x9e\\x2f\\x35\\x15\\x12\\x82\\x54\\xc8\\x09\\x8c\\xca\\x65\\xa9\\x1a\\x02\\x2d\\xd0\\x57\\xa2\\xc2\\xa1\\xb6\\xb8\\x5d\\x13\\x7c\\x3c\\x96\\x7d\\xcb\\x70\\xaa\\x17\\xa2\\xff\\x4b\\x37\\x67\\x8b\\x38\\x29\\x02\\xf0\\xf9\\x31\\xee\\x74\\x3f\\xc3\\x98\\xac\\x1b\\x8c\\x10\\x46\\x98\\x67\\x30\\x84\\x79\\xe4\\x0d\\x7f\\x2f\\x04\\xa4\\xb0\\x4c\\x44\\x89\\x15\\x84\\x88\\xdd\\xb7\\xbe\\xc5\\xa4\\x7f\\x20\\xff\\x35\\x6d\\x99\\xa1\\xb3\\xe9\\xd0\\xb7\\xfe\\x9b\\x0a\\xd9\\x49\\xf2\\x98\\x96\\x0e\\xfa\\x4d\\x97\\x28\\xf8\\x10\\x1c\\xf5\\x3d\\xa3\\xbf\\xfd\\xd9\\x52\\x4b\\xf4\\x40\\xa5\\x8b\\x32\\x73\\x8d\\x0b\\x62\\x93\\xe8\\x53\\xf4\\x66\\xff\\xd4\\x2c\\x56\\x07\\xac\\x9e\\x35\\x3b\\xa0\\x3e\\xfb\\x57\\x8c\\xc9\\x96\\x3d\\x8a\\xaa\\x9d\\x2e\\x26\\x6d\\x1d\\x2a\\xe9\\x29\\x6f\\x30\\xc9\\xef\\x44\\xec\\x69\\x10\\x30\\xd5\\x96\\xa4\\x01\\xb6\\xce\\xe7\\x2a\\x54\\x0e\\xf3\\xc4\\x2e\\xc0\\x17\\x42\\x66\\xba\\x54\\x01\\xf3\\x54\\xad\\xc8\\xe2\\x54\\x04\\x43\\x7e\\x88\\x8b\\x08\\x28\\x69\\x39\\xbe\\xde\\x30\\x8a\\xcd\\x30\\x32\\x7e\\xbf\\xf0\\x62\\x70\\x09\\x7c\\xc2\\x94\\xf0\\xa0\\xf3\\x9f\\x9a\\xa3\\xc6\\x65\\x85\\xca\\x47\\xe6\\x0c\\x4b\\x8e\\xa3\\x60\\x89\\xeb\\x8a\\x90\\x88\\xbb\\x18\\xb0\\x34\\x31\\x35\\xbb\\x6a\\x45\\x6d\\x2f\\x6a\\x3b\\xf3\\x90\\x72\\x3e\\x78\\xb4\\x2c\\x03\\x7c\\x2d\\xe2\\xe1\\x43\\x2c\\xaa\\xd3\\xa5\\x94\\x02\\x12\\x94\\xd4\\x3f\\x5b\\x15\\xa2\\xe8\\x19\\xdc\\x74\\x8e\\x45\\x1d\\xe4\\x00\\x68\\xc8\\xf0\\x32\\xf1\\x3b\\x47\\x11\\x37\\x70\\x12\\xed\\xcd\\x4f\\x11\\xde\\xc1\\x11\\x1b\\x12\\xeb\\x6e\\x1b\\x00\\x63\\x38\\x18\\x70\\x6d\\x71\\x32\\xd9\\x91\\xce\\x20\\xdf\\x3b\\x92\\x1d\\xb2\\x18\\x5e\\xe2\\x5b\\xb6\\xf5\\x82\\x75\\x76\\xec\\x01\\xad\\x89\\x0f\\x79\\x79\\x3b\\xaa\\x35\\x8c\\x2b\\xbf\\xb6\\xfa\\xad\\x11\\xd8\\xcb\\x0d\\x0d\\x2d\\x2b\\x29\\x81\\xfb\\xf4\\xe3\\x72\\x34\\x9f\\xc6\\xa0\\x1c\\x36\\x07\\x7b\\x59\\x32\\x5f\\x70\\x2b\\x38\\x00\\x59\\xa6\\x5c\\xf2\\xf5\\xea\\x98\\xd6\\xbd\\xc8\\x15\\x20\\x53\\xb8\\x5b\\x28\\xc8\\x1e\\x41\\x3c\\x4c\\xac\\x7e\\x22\\x6c\\x13\\xdb\\x32\\x67\\xd2\\x18\\x30\\xf0\\xe5\\x43\\x11\\x02\\x91\\x70\\x05\"},\n{{0xaf,0xd7,0x65,0xe6,0xaa,0xc0,0x14,0x6d,0x48,0x11,0xef,0x95,0x97,0xbc,0x3f,0x44,0x76,0x3f,0x03,0x37,0x8b,0x7b,0xe0,0x33,0xd6,0xe6,0x4c,0xa2,0x9d,0xec,0xae,0xf9,},{0x6b,0xb7,0x61,0x23,0xd9,0x25,0x89,0x22,0x68,0x6c,0x53,0xfb,0x69,0x17,0xb9,0xa4,0x59,0xca,0xbd,0x30,0xbe,0x8c,0x43,0x97,0x0d,0x80,0xf5,0x35,0x0c,0x2d,0x98,0xef,},{0x3d,0xc9,0x19,0x4d,0x50,0x81,0x14,0x19,0x04,0x9e,0xaa,0x07,0xb6,0x55,0xb7,0xd4,0x06,0x4b,0xcb,0x0e,0x7f,0xb5,0xf9,0xe5,0x32,0x6b,0x5f,0xc8,0x56,0xfc,0x0a,0xb8,0x70,0x59,0x73,0xae,0x10,0x01,0xdf,0x55,0x37,0x39,0x77,0xdd,0xe2,0xd9,0xb8,0x10,0x79,0x55,0x14,0x14,0xad,0xc7,0x1c,0xc8,0x52,0xd4,0x99,0xb0,0xcf,0x82,0x4f,0x07,},\"\\x18\\x3b\\x10\\x92\\xc7\\x90\\x4e\\x47\\xa1\\x42\\x03\\x17\\xa2\\x5d\\x0f\\x59\\x11\\x0a\\xa8\\x4d\\x6b\\x34\\x19\\xad\\x45\\x68\\x65\\xc4\\x3b\\x29\\xe9\\xd1\\xda\\xcf\\x75\\x5d\\x9e\\x5c\\xf9\\x4c\\x55\\x91\\xd5\\xd9\\x12\\xd0\\x5c\\xa9\\xa5\\x2d\\x01\\x5d\\x6e\\x8f\\x5d\\xc9\\x4e\\xfd\\xce\\x0d\\x7c\\xf5\\x65\\x12\\x03\\xb1\\x1e\\x54\\x27\\xa9\\xf6\\x79\\x42\\x9e\\x00\\x41\\x4a\\x48\\xea\\xb1\\x3f\\xd8\\xe5\\x8b\\x87\\xeb\\xa3\\x9d\\x10\\x25\\xd6\\xa1\\x8b\\x2c\\xdc\\xbe\\x14\\x74\\x36\\xdb\\xf3\\x8a\\x1c\\xe8\\x64\\x13\\xae\\x31\\x87\\x65\\xe1\\xbb\\x1d\\xf7\\xe2\\xb3\\xbe\\x97\\xe9\\x04\\x08\\xb1\\x17\\x17\\xcf\\x45\\x9b\\xcd\\x0f\\x3c\\xac\\x58\\xb4\\xa0\\xd3\\x5b\\xff\\xb5\\x33\\xe2\\x0d\\xf3\\x74\\x51\\xc1\\x14\\x01\\xce\\x1d\\xab\\x02\\x05\\x5c\\x7e\\x08\\xc5\\xec\\x46\\x39\\x0c\\xd6\\x17\\xa6\\xb5\\xf2\\x2f\\x65\\x18\\x30\\xa1\\x11\\x2a\\x06\\xed\\xe4\\xc4\\x0a\\xb7\\x95\\x78\\x51\\xd6\\xc6\\x6f\\x17\\x1c\\xd1\\x62\\x41\\x59\\x09\\x00\\xb8\\x52\\xa3\\xd0\\x19\\x95\\x7b\\xe1\\xb7\\xbb\\x7a\\xcb\\x89\\x23\\xf2\\xa3\\x57\\xc3\\x26\\x44\\x56\\xcf\\xca\\x9b\\x42\\x9d\\x71\\xfe\\xcb\\x7e\\xda\\xe3\\x9b\\x25\\x2b\\x4e\\xb6\\x10\\xe8\\xc7\\x18\\x83\\x56\\x99\\x75\\x4b\\x8d\\x41\\x24\\xb4\\x92\\x48\\x8e\\xde\\x62\\x61\\x0c\\xce\\x44\\xb5\\x92\\x18\\x66\\x3b\\x6c\\x96\\x46\\xa1\\x4a\\x84\\x17\\xed\\xdb\\xb6\\xf4\\xfb\\xe5\\xa4\\xbb\\xbb\\x48\\x2b\\x37\\xa4\\x45\\xe3\\xc1\\x6b\\x65\\xa1\\x41\\xcd\\x3e\\x12\\xa5\\xb2\\xc0\\x48\\x1d\\x61\\x4d\\x6d\\x20\\x84\\x79\\xb9\\xb2\\x09\\xb8\\x28\\x85\\x4d\\xae\\x0e\\xa1\\xed\\xed\\x50\\x65\\x55\\xfe\\x18\\xe1\\x85\\x40\\x05\\xcf\\x00\\x1a\\x80\\x77\\x08\\x34\\x98\\xd2\\x7f\\xad\\xf1\\x18\\x28\\x6b\\x53\\xb8\\x97\\x4d\\x69\\xfa\\x28\\x25\\xbe\\x8c\\xa3\\xd6\\x03\\x6a\\x92\\xca\\x52\\xf9\\x1d\\xde\\x6d\\x5b\\x1f\\xfe\\x28\\x88\\xf4\\xd6\\x07\\x79\\xfa\\xd1\\xfb\\x41\\xd8\\xc0\\x71\\x40\\x49\\xaf\\x68\\x1b\\x75\\x5f\\x2d\\x42\\x04\\xee\\xcd\\x09\\xe0\\x77\\x21\\x0a\\x48\\xa1\\x95\\xe7\\x2c\\x80\\xe1\\x27\\xc3\\xd4\\x87\\x50\\x95\\xc6\\x57\\x0a\\x1f\\x78\\x09\\x59\\x07\\x52\\x8c\\xf7\\x74\\x6f\\x31\\xd9\\x71\\x11\\xc6\\xf4\\xcb\\x25\\xb3\\x74\\x12\\x99\\xa7\\x57\\x48\\x22\\xd4\\x6b\\x6e\\x79\\xed\\x23\\xc2\\xfe\\x05\\x7b\\x3a\\xc7\\x29\\x0b\\x46\\x0b\\x16\\x6e\\xe9\\x0a\\x45\\x56\\x2e\\xff\\xed\\xcc\\x6b\\xa8\\xf4\\x79\\x5f\\x73\\x95\\x81\\x8d\\xb5\\x6b\\x6e\\xdd\\x59\\xca\\x2c\\xc4\\xae\\xa1\\x84\\x1f\\xd9\\x56\\x5b\\xec\\xd6\\xc0\\x81\\x04\\xcd\\xee\\x26\\xba\\x9d\\xe2\\x00\\x77\\x3d\\x09\\x1b\\xc7\\x7a\\x57\\xc5\\x47\\xf1\\xa6\\xba\\x0a\\x2c\\xd7\\x17\\xab\\x32\\x56\\x1d\\x74\\x22\\xea\\x72\\x35\\xad\\xb0\\xcb\\x36\\xbf\\x5c\\xbd\\xf8\\x8f\\xca\\xe0\\x66\\x30\\xa1\\x56\\x47\\xd9\\xa3\\x57\\xb4\\xe0\\xe5\\x02\\xd2\\x73\\xf3\\x79\\x6a\\x51\\xe0\\xbc\\x3f\\xed\\xbf\\x7a\\x1e\\x64\\xaa\\xd7\\x22\\xaa\\xc5\\xfd\\x02\\x2f\\xa7\\x9d\\x60\\xfc\\x70\\x73\\x25\\xf1\\x27\\xeb\\x1f\\x03\\x86\\x87\\x95\\xcc\\xdc\\x0b\\x4c\\xb2\\x6f\\x20\\x23\\xd1\\x52\\x15\\x3a\\x97\\xa2\\x60\\xbf\\xf1\\x17\\x45\\xd2\\xe2\\xcc\\x0b\\xf8\\x60\\xd4\\xa6\\xe3\\x58\\xa6\\xd8\\x17\\x6d\\x2a\\xc1\\x78\\xa9\\xae\\x1a\\x2d\\xc7\\x5e\\x8b\\x49\\x04\\x08\\xff\\x7c\\xdf\\x99\\x13\\x29\\xf3\\x3c\\xb0\\xc0\\x5e\\x1e\\x35\\x69\\x25\\x08\\x7e\\x0b\\x8d\\x96\\xa5\\x23\\x51\\xd1\\xd1\\x77\\x68\\xeb\\x13\\x4c\\xdb\\x21\\xa1\\x54\\x6a\\xae\\xdc\\xc6\\x87\\xdf\\xa1\\xb2\\x2e\\x92\\xfb\\x52\\x41\\xa8\\x36\\x77\\xa1\\x53\\x44\\x5b\\x77\\xd5\\xe7\\x03\\x50\\x8e\\x2a\\xbc\\x58\\x8a\\x9f\\x42\\xe5\\xbc\\x71\\x06\\x73\\xe4\\xdd\\x8a\\xd7\\x03\\xfa\\xb2\\xd7\\xdb\\x1e\\xb8\\x42\\x26\\xc8\\x9d\\x87\\x62\\xa7\\x09\\xe3\\xe9\\x13\\x8a\\x1f\\xa7\\x90\\xf2\\x92\\x9b\\xff\\x61\\xbc\\x1e\\xa6\\xe8\\xaa\\x1a\\xd0\\xe3\\x88\\x7d\\x70\\xa5\\x6d\\x4e\\x65\\x47\\xfc\\x60\\x6a\\x50\\xd3\\xbe\\x3b\\xd6\\xdb\\x03\\x66\\x3e\\x00\\xca\\x9e\\x4f\\x24\\xfe\\x8c\\xbf\\xd7\\xd8\\xc9\\x73\\x8d\\x63\\x67\\x55\\x4b\\x7b\\x60\\x1f\\x74\\x19\\x0b\\x59\\x70\\xa3\\x98\"},\n{{0xeb,0x34,0x71,0x45,0xf3,0x39,0xed,0xd8,0x02,0x78,0x5b,0x6f,0xbe,0xcd,0x5c,0xb8,0x08,0x89,0xac,0x7c,0xe4,0xeb,0xad,0x2f,0x67,0x07,0x67,0x65,0xdb,0x93,0x9b,0xca,},{0x99,0x4a,0x45,0x6e,0xad,0xa0,0x30,0x20,0x92,0x1c,0x3d,0x10,0x9c,0x13,0x5e,0xb9,0x61,0xfc,0xd4,0xa0,0xa4,0x00,0xba,0xfd,0x32,0xca,0x06,0x1b,0xbc,0x86,0x25,0x43,},{0xfd,0xbd,0x15,0xe1,0xe6,0x46,0x9d,0xf7,0x20,0xd9,0x55,0x2c,0xb5,0xdd,0x17,0x7b,0xcb,0xd2,0x92,0xfc,0xda,0x83,0xcd,0x93,0xc8,0x8d,0x01,0x14,0x91,0x2d,0xc8,0x70,0x31,0x09,0xba,0xc0,0xd4,0x59,0xac,0xe9,0x95,0x7d,0xf2,0x29,0x3a,0xc1,0x6d,0x40,0xd5,0x14,0x89,0x35,0x56,0x85,0x32,0x99,0xb9,0x7b,0x4f,0xd4,0x13,0x7a,0x3d,0x00,},\"\\x5b\\x8b\\x31\\xba\\xf8\\x84\\x83\\xf0\\x95\\xb5\\xd0\\x2e\\x17\\xd8\\xb7\\xb4\\x6c\\xf4\\x64\\x60\\xe6\\x4c\\x6b\\x02\\xc5\\x6d\\x8d\\xaf\\xe3\\x48\\x23\\x70\\x6c\\xb5\\xc1\\x5f\\x33\\x8a\\xd9\\xb5\\x65\\x86\\xa9\\x49\\x71\\x1a\\xa7\\x31\\x2c\\xc9\\x34\\x50\\xd2\\xfb\\x9a\\xf4\\x61\\x3f\\xc3\\x07\\x93\\xa6\\x31\\xa5\\x5c\\x14\\xe5\\x3c\\x0c\\xb1\\x5f\\x06\\x11\\x63\\x99\\x39\\x8c\\x8d\\xd6\\x18\\x76\\xc6\\x29\\x15\\xf9\\xf9\\xe4\\xcd\\xf8\\xf7\\xd8\\x9a\\xde\\x12\\x9e\\x6d\\xde\\x7d\\x63\\x67\\x1a\\x18\\x63\\xf5\\xda\\x8f\\x42\\xea\\x64\\xc0\\x79\\xec\\xb9\\xa2\\xc1\\xb1\\xdd\\x9a\\xda\\xe6\\x0e\\x96\\xb9\\xcb\\xbc\\x76\\x24\\x53\\x2a\\xa1\\x79\\x75\\xeb\\xa1\\x7a\\x7a\\xf0\\x2b\\xfb\\x21\\x9a\\xac\\x02\\xb3\\xd4\\x30\\x6c\\xd3\\x89\\x33\\xa8\\x50\\x60\\xcd\\x62\\xab\\x51\\x3a\\x39\\x65\\xb0\\x91\\x50\\xa4\\x88\\xc9\\x2b\\xf7\\xca\\xb0\\x48\\x2e\\xee\\x56\\x46\\x3f\\x01\\x39\\x00\\x9b\\x9f\\xbb\\x3f\\xf4\\xec\\xae\\x21\\x1f\\x42\\x8b\\x5b\\xfb\\x88\\x76\\xf0\\x04\\x98\\x3b\\x90\\xc4\\x47\\x84\\x6c\\xa4\\xb7\\x45\\x66\\xe9\\x79\\xbc\\x30\\xc9\\x5e\\x99\\xfa\\xab\\x69\\xa3\\xeb\\xbf\\xe4\\xda\\x60\\x34\\xc8\\x2d\\x63\\xe9\\xc5\\xcc\\xaf\\x84\\x86\\xaf\\x3b\\x5e\\x0d\\x38\\x14\\x22\\x93\\x8b\\x0c\\x22\\xf5\\x16\\x95\\x5b\\xdc\\x36\\x94\\x31\\x73\\xf5\\x83\\x27\\x08\\xa3\\x3c\\xf5\\x2d\\x88\\x75\\xd9\\x7f\\xde\\x58\\x5b\\x49\\x17\\xe4\\xad\\xec\\xdd\\x1e\\x79\\x85\\x67\\x62\\x03\\x3a\\xf2\\x2f\\x25\\x4b\\x50\\xce\\x9d\\x0c\\x70\\x0e\\x77\\xa7\\x31\\x55\\x4f\\xa0\\x11\\x3a\\x0c\\x66\\x66\\x83\\xf3\\xfd\\xb1\\x9e\\x3a\\x42\\x63\\x02\\x23\\x0b\\x63\\xe3\\x3a\\x78\\x5e\\xf2\\x4a\\x92\\x89\\x45\\x5b\\x3b\\x8f\\xc6\\x18\\xff\\xfe\\xf4\\x9c\\x2c\\x6e\\x48\\xfd\\x4b\\xb4\\x22\\xf5\\x04\\x14\\x9d\\xe2\\xb4\\xc0\\x35\\x5c\\x36\\x34\\x08\\xe6\\x6d\\xa8\\x1c\\xbb\\x58\\x15\\x52\\xa4\\x11\\xe3\\x64\\xfe\\x3e\\x4c\\xa9\\x6d\\x70\\x72\\xab\\x07\\x2e\\x75\\x68\\xc1\\x3d\\x35\\xe4\\x1c\\x78\\x25\\xa1\\x3a\\x5c\\x68\\xfb\\x9f\\xb5\\x98\\x8b\\xbb\\xfb\\x9a\\x0b\\x51\\x16\\x57\\x64\\x66\\x0c\\xdf\\xa2\\x41\\x1f\\x3d\\x42\\x16\\x5d\\xa1\\x87\\xc5\\x8e\\xde\\xf0\\x10\\x5a\\x6d\\xb1\\x77\\x42\\x05\\x43\\xe9\\x58\\xd5\\xd5\\xe8\\xa3\\x71\\xf7\\x98\\x70\\x51\\xc4\\xe1\\x78\\x6d\\x01\\x8e\\xb3\\xd7\\x32\\xc2\\x10\\xa8\\x61\\xac\\xaf\\x67\\x1b\\xe9\\x5b\\xb6\\x3f\\xbc\\x88\\xbf\\x8b\\xe7\\xbe\\x53\\x90\\x93\\x9c\\xd9\\xfb\\x2a\\xcf\\x39\\x81\\xdd\\xa6\\x1b\\x78\\x7a\\x7b\\xbd\\x78\\x46\\x8e\\x1d\\x32\\xca\\x46\\xaf\\x8f\\xb3\\x2a\\x18\\x46\\x3c\\x18\\x0f\\x52\\x4b\\xe1\\xda\\x91\\x0d\\xa5\\x50\\x8d\\x42\\xa0\\x05\\x17\\x41\\x22\\x7c\\x9b\\x62\\xde\\x6d\\x19\\xb3\\x3c\\x0b\\xd4\\x80\\x67\\xb0\\x35\\x85\\x9a\\xd9\\xbd\\xc2\\xdd\\xd9\\x7b\\xef\\xca\\x31\\xe6\\x5a\\x88\\x6c\\xfc\\x75\\x3a\\xfc\\x4f\\xf2\\xa7\\x21\\x2a\\x89\\xd3\\x7c\\x04\\x6c\\xdf\\x39\\x99\\xc0\\x51\\xff\\x13\\x96\\xbd\\x99\\xcb\\x54\\x94\\x56\\x39\\xeb\\x64\\x62\\xdb\\x9e\\xce\\x84\\x07\\x7b\\x0b\\x3d\\x6b\\x3d\\xf3\\x95\\x2d\\xd3\\x67\\x56\\xc6\\xda\\xb2\\xab\\xc2\\x5a\\x51\\xbf\\x32\\xc1\\xe9\\xcd\\xd0\\xa7\\x28\\xa7\\x98\\x5f\\x7b\\x7e\\x0d\\x9c\\x1a\\x6f\\x66\\xce\\x12\\x16\\x37\\x3d\\x25\\x2d\\xaf\\x59\\x58\\xf2\\xe8\\x97\\x3f\\xd2\\x68\\xfa\\xd0\\xef\\xe2\\x51\\xce\\x76\\xfe\\x47\\xbd\\x0a\\x4d\\x0c\\x4f\\x10\\x17\\x94\\x9d\\x4c\\x2b\\x16\\x71\\x72\\x18\\xe1\\x49\\x15\\x4e\\xd6\\xfb\\xe5\\x6f\\x86\\xd8\\x2e\\x19\\xef\\x0a\\x91\\x63\\x19\\x12\\xf2\\xa8\\xf3\\xde\\xbb\\x00\\x76\\x6b\\x61\\x77\\x80\\x2f\\x4b\\x2e\\x79\\xf6\\xe7\\xbf\\xa9\\xc6\\x2c\\xfa\\x2f\\x75\\xcd\\xb6\\x04\\x92\\x63\\x0a\\x85\\xc9\\xb4\\x31\\x77\\xd2\\xdd\\x9b\\xa8\\xd0\\x54\\x8a\\xbe\\x24\\x92\\x3a\\xe8\\x44\\x3e\\xea\\xdc\\xd0\\xf5\\x8a\\x7b\\x82\\xdf\\xf5\\x0d\\x88\\x40\\x03\\x88\\x9c\\xb5\\x60\\xf7\\xac\\x53\\xe7\\x10\\xa7\\x55\\x75\\x36\\x24\\x64\\xb1\\xaa\\x43\\xd2\\xa9\\xb2\\x2f\\x2b\\xd2\\x16\\x2d\\x30\\x2f\\xaa\\x74\\x52\\x34\\x4c\\xe7\\xad\\xe9\\x98\\x36\\x87\\xb6\\xc6\\x8e\\xca\\x47\\xdd\\xdb\\x28\\x9b\\x15\"},\n{{0x32,0x08,0x83,0x7d,0x15,0x54,0xb6,0x51,0x1a,0xdd,0xa0,0x9c,0xba,0xe5,0x65,0xda,0x78,0x43,0x9a,0x47,0x2a,0x5d,0x1b,0x10,0x7c,0xe0,0xa9,0xb1,0xd7,0x75,0x7d,0xb7,},{0x9b,0x52,0x5e,0x35,0x36,0x8a,0x92,0x1e,0x3a,0x2e,0x9a,0x35,0xa4,0xde,0x9e,0xa4,0xc4,0x36,0xca,0xba,0x27,0x12,0x3e,0x5c,0x36,0x9e,0x2a,0x6c,0xf5,0xc9,0x0a,0xb6,},{0x70,0x9d,0x1c,0xa9,0xca,0x2f,0x74,0x2a,0xb9,0xdd,0x0b,0x04,0x93,0x35,0xf5,0x44,0xcf,0xfb,0x2f,0x1a,0x36,0x93,0xd5,0xf5,0x3f,0x8b,0xa0,0x83,0xb9,0xb0,0xd8,0x6e,0x52,0x08,0xfa,0x8e,0x1e,0x81,0x56,0xc9,0xcc,0x22,0x42,0x77,0x5a,0xbb,0x7e,0x15,0xaf,0x30,0x85,0x86,0x8e,0xf4,0x57,0x63,0x4e,0x99,0x26,0xc4,0x04,0xec,0xf3,0x0f,},\"\\x43\\x6a\\x3c\\x31\\x76\\x3f\\x93\\xd4\\xd5\\x46\\xc6\\xd1\\xec\\xfb\\x7a\\xe4\\x59\\x16\\xaf\\x75\\x4f\\x83\\x9d\\xcf\\xe9\\x6d\\x6b\\x69\\xc6\\x12\\x14\\xd0\\x16\\xfc\\x84\\x2f\\x56\\x46\\x2a\\x3f\\x07\\xf6\\x61\\xb2\\xe2\\x50\\x5a\\xcf\\xaf\\x48\\x2a\\x0b\\x0f\\x4f\\x55\\x01\\xee\\xc4\\xb2\\xd2\\xd7\\xd4\\x44\\x54\\x4d\\xe0\\x00\\xb9\\x90\\xf4\\x36\\x3d\\x3f\\x98\\x3f\\x5d\\x4e\\x09\\x30\\x97\\x52\\xff\\x57\\x9c\\x73\\x20\\xc9\\x15\\x95\\x1c\\xc3\\xa1\\xe3\\x23\\x8c\\x1b\\xa7\\xa1\\x91\\x30\\xea\\xbf\\x6a\\x37\\xf5\\xf0\\xbc\\x56\\xe2\\x52\\x42\\xf7\\x52\\x06\\x1f\\x3c\\x63\\xac\\xad\\x99\\x2a\\x75\\x01\\xe9\\x67\\xde\\xb9\\x25\\xb3\\x0e\\xd1\\x05\\x43\\x1e\\x58\\x21\\x02\\xfa\\x4f\\x30\\x8c\\x2f\\x06\\x83\\x61\\x2b\\x56\\x68\\x6d\\x52\\xda\\xed\\x69\\x43\\xa7\\x21\\x9f\\x3b\\xee\\xa2\\xe0\\xa2\\x92\\x42\\xe8\\x6d\\x55\\x62\\xff\\xab\\x83\\xb5\\x6b\\x26\\x33\\x26\\x66\\x4e\\x02\\x9e\\x96\\x1e\\x70\\x17\\xd8\\xe8\\x9f\\x5e\\x3e\\x1d\\x10\\xf5\\x93\\x28\\x54\\x55\\x0c\\xe6\\xe5\\xcd\\x76\\x97\\x1f\\xd2\\x35\\xcf\\x9c\\x00\\x27\\xd0\\xcf\\xed\\x33\\x15\\xc2\\xcb\\xf1\\x85\\x08\\x62\\x4d\\x8a\\xcf\\x04\\x7f\\x9b\\x96\\x8f\\x90\\x7d\\x9e\\x6f\\x4c\\xfa\\x5e\\x45\\xc8\\x0a\\x27\\x2c\\x2d\\xbb\\x62\\xc5\\xd4\\x19\\x45\\x80\\xdf\\xab\\xed\\xd8\\x2c\\xb4\\xd7\\x64\\x92\\x34\\x4b\\xe9\\x6c\\xcf\\x5d\\xaa\\xf6\\x1e\\x6b\\x2b\\x55\\xef\\xdb\\x3f\\x65\\x21\\x0a\\x3d\\x6e\\x1f\\x36\\x98\\x87\\xca\\x0e\\xa0\\xd5\\x8c\\x3d\\x14\\x6a\\xe3\\xcf\\x9b\\x00\\x00\\x76\\x88\\x41\\x15\\xfa\\x51\\xb5\\xfd\\x66\\xbe\\xc0\\xcc\\xbf\\x0d\\x29\\x20\\x19\\x6a\\x7d\\x7a\\x38\\x44\\x5f\\xbe\\xd2\\x2d\\xfc\\x75\\x64\\xdc\\x56\\xf6\\x0d\\x6e\\x29\\xe5\\x92\\x48\\x53\\x74\\xc6\\xbd\\x1e\\x5b\\x15\\x93\\x1b\\x69\\xca\\x6e\\xe6\\xb3\\xaa\\x25\\x25\\xc2\\x35\\x85\\xf0\\x92\\x9f\\x31\\xcb\\xd1\\x1f\\xb1\\xa5\\x33\\x02\\x16\\xb9\\x0a\\xe5\\xa6\\x56\\xdf\\x7a\\x07\\x4c\\xec\\x64\\xe5\\x98\\x18\\x4f\\x50\\x3f\\xb2\\x3c\\xc0\\x5e\\x65\\xda\\x9a\\xe7\\xe8\\x44\\x1f\\x40\\xe2\\xdc\\x26\\xb8\\xb5\\x6d\\x2c\\xb5\\x23\\xa7\\xc6\\x35\\xdc\\x08\\x47\\xd1\\xcd\\x49\\x8a\\xbf\\x75\\x6f\\x5a\\x13\\xea\\x14\\xf8\\xfa\\xb2\\xc4\\x10\\xb1\\xa4\\x70\\xf4\\x9a\\xa8\\xdc\\xa4\\xac\\x02\\x56\\xb1\\x18\\x00\\xde\\x0d\\xd0\\xec\\x42\\xb1\\x42\\xc5\\x61\\x12\\x8d\\x35\\x7e\\x78\\x3b\\x12\\xf6\\x1c\\x66\\x8f\\x5e\\x6e\\x06\\xb7\\xb4\\x8b\\x7b\\x22\\x54\\xde\\x5b\\xdc\\x18\\x04\\xb7\\x23\\xd5\\xfd\\x6a\\x0f\\x4b\\xc7\\xc5\\x9e\\x7c\\x50\\x54\\x18\\x26\\x13\\xbb\\xd2\\xfa\\x92\\xb4\\xc1\\xda\\x16\\xbc\\x8c\\x97\\xe1\\x6b\\xcb\\x0d\\xbf\\x8c\\x92\\xb7\\x48\\x99\\xb3\\x7f\\x31\\x87\\x57\\x14\\x0b\\x6c\\x4f\\xd5\\x35\\xe2\\xe1\\xe0\\x57\\x0a\\x50\\x81\\x8c\\xf7\\x8f\\xb9\\x88\\xe1\\xf4\\xce\\x40\\xe7\\x6e\\x8f\\xe3\\xd6\\x97\\xd7\\xa4\\x58\\x50\\xf2\\x93\\xce\\x17\\x0f\\xd8\\xab\\x07\\xcf\\x15\\x34\\xea\\x5f\\xfa\\xd3\\x4f\\x6f\\xcf\\xa4\\x2d\\x0d\\x21\\xa9\\x1d\\xfb\\xfe\\x05\\x97\\xc7\\x3f\\xd9\\xb9\\x76\\x76\\x14\\xeb\\xdf\\xd0\\x2c\\x3a\\xc0\\xc4\\x9a\\xd1\\x0c\\x94\\xbe\\x59\\x69\\xee\\x08\\x08\\xc0\\xa3\\x0b\\x2a\\x1e\\xaa\\x90\\xea\\x43\\xb8\\x57\\x5c\\x30\\x56\\xf4\\x23\\xcd\\x4b\\x6f\\x34\\xae\\x51\\xc2\\x22\\x37\\x65\\xa9\\xea\\x21\\xf6\\x45\\x73\\xc1\\xa1\\x39\\x61\\x32\\x12\\x46\\xe3\\xb5\\x34\\x9e\\xe0\\x48\\xfb\\x62\\xd5\\xfb\\x61\\xb1\\x71\\x43\\x91\\x18\\x25\\x62\\xb9\\x15\\x98\\x36\\x0e\\x5f\\x9b\\xf4\\xac\\x80\\xdb\\x24\\x64\\x32\\xaf\\xb3\\xa4\\x3d\\x34\\x96\\x50\\xde\\x03\\xd3\\x43\\xc2\\xe9\\x7a\\x8e\\xef\\xd1\\xbf\\x30\\xc1\\x0c\\x25\\x86\\x7f\\x53\\x26\\x6b\\xd1\\xf0\\xdc\\x14\\xae\\x1a\\x6b\\xe9\\xef\\xde\\xcf\\xf6\\x7e\\x7d\\x29\\x2c\\x6c\\xdf\\xc9\\x0d\\x80\\xb8\\x86\\x66\\x8f\\x04\\xc2\\xa0\\xf5\\xad\\x7f\\xa1\\x7c\\x17\\x8b\\x6e\\x9b\\x45\\xa1\\x1f\\x4d\\xdf\\xe2\\xd6\\x69\\x60\\xa3\\xf7\\x51\\x35\\xad\\x5e\\xd1\\x54\\xe5\\x13\\xe1\\xa5\\xd1\\x38\\xe7\\x37\\x1e\\x84\\xd7\\xc9\\x24\\x53\\xe6\\xc6\\x2d\\xc5\\x9b\\x8e\\x1f\\xa9\\x3d\\x77\\x3a\\x25\\x40\\xd9\\x1c\\x25\\x7c\"},\n{{0x4e,0xc6,0x82,0x9b,0x43,0x99,0x70,0x56,0xd9,0x96,0x85,0x38,0x9b,0xd5,0x3c,0x52,0x8d,0xe7,0xe5,0xff,0x27,0x15,0xd6,0x5c,0x95,0x66,0x19,0x82,0x6e,0x3f,0xb5,0xb5,},{0x7d,0x92,0x2d,0x57,0xfd,0xb1,0x27,0x92,0x87,0x9a,0xec,0x4e,0x8c,0x65,0x14,0x63,0xec,0xe0,0x64,0x49,0x2c,0x72,0x17,0x53,0xd2,0x2e,0x11,0x55,0x09,0xfe,0xd7,0x06,},{0x15,0x9c,0xa4,0x04,0xf7,0xf7,0x41,0x17,0xc5,0x16,0x3c,0xf4,0x04,0x11,0x09,0x49,0xeb,0x57,0xae,0x2d,0x76,0x62,0xb1,0xff,0x41,0x78,0xcc,0x67,0x56,0xe9,0x0a,0xda,0xea,0xb7,0x1b,0x06,0x4c,0xe1,0xdf,0xf4,0x57,0xb2,0xdb,0xa7,0xe2,0xdc,0x13,0xc2,0x17,0xbc,0xae,0x8a,0x61,0xfc,0xf8,0xce,0x14,0x87,0xa6,0x49,0xc2,0x57,0xff,0x07,},\"\\xed\\x26\\xb4\\x13\\x0d\\x4e\\xbf\\x3f\\x38\\x61\\x49\\x1a\\xa3\\xdd\\x96\\xa4\\xeb\\x69\\x75\\x21\\x73\\xfa\\x6c\\x84\\xca\\x65\\xdf\\xc9\\x91\\xc7\\xfe\\x44\\xe0\\x2b\\xd6\\x16\\x50\\x25\\x2a\\x1d\\x23\\x78\\x66\\x82\\xec\\x38\\xc1\\xfe\\xe8\\x2c\\xc3\\x50\\xdb\\x7c\\x3c\\x39\\x49\\xa1\\xc9\\x35\\xff\\xeb\\xd7\\xba\\xa2\\x4f\\x35\\xa3\\x93\\xfb\\xd2\\x7e\\x7c\\x34\\xc2\\xf9\\xff\\xda\\x60\\xa1\\x8d\\xf6\\x6c\\x3e\\x46\\x5d\\x90\\xed\\x48\\xfb\\xba\\xd3\\xfa\\x79\\x47\\xde\\xe7\\xe6\\x59\\xa3\\xee\\xad\\xb8\\x87\\xf0\\x96\\x3f\\x6b\\xdd\\x76\\xc3\\x6c\\x11\\xae\\x46\\xd0\\x88\\xee\\x50\\xbc\\xa8\\x18\\x7a\\x0a\\x88\\x32\\xdb\\x79\\x84\\xb7\\xe2\\x7c\\xbe\\x6a\\xbf\\x12\\xd2\\xc9\\x4f\\x33\\x7e\\xc7\\x8c\\xb3\\x8b\\x26\\x24\\x1b\\xd1\\xa3\\xd2\\xf5\\xfa\\x44\\x07\\xfd\\xd8\\x02\\x27\\xd2\\xb1\\x70\\x14\\x4b\\x41\\x59\\x78\\xe3\\x72\\x01\\xd0\\xfc\\xf4\\x31\\x74\\xb9\\xd7\\xb2\\x11\\x5d\\x5e\\xb8\\xbc\\xec\\x27\\x6a\\x77\\x5a\\xea\\x93\\xf2\\x34\\x0d\\x44\\x25\\xd3\\x4d\\x20\\x47\\x49\\x4d\\x91\\x7e\\x0d\\xbe\\x37\\x85\\x7e\\x6c\\x99\\x85\\x9b\\x71\\xc9\\x14\\xaa\\xd5\\xe5\\x4f\\x7b\\x2b\\x03\\x3e\\x59\\x4e\\x27\\x2c\\xc5\\xcf\\xe9\\x19\\xf8\\x88\\xe5\\x5c\\xb6\\x15\\x7a\\xff\\xcf\\x35\\x72\\x46\\xd0\\x0b\\x53\\x2c\\xc4\\x71\\xb9\\x2e\\xae\\x0e\\xf7\\xf1\\xe9\\x15\\x94\\x4c\\x65\\x27\\x93\\x15\\x72\\x98\\x53\\xda\\x57\\x2c\\x80\\x9a\\xa0\\x9d\\x40\\x36\\x5f\\x90\\x87\\x5a\\x50\\xd3\\x1c\\xa3\\x90\\x0d\\xa7\\x70\\x47\\xc9\\x57\\xc8\\xf8\\xbf\\x20\\xec\\x86\\xbd\\x56\\xf9\\xa9\\x54\\xd9\\x98\\x8e\\x20\\x6b\\x44\\x4c\\xa5\\xa4\\x43\\x45\\x21\\xbf\\xc9\\xc5\\xf3\\xa8\\xa0\\x61\\x47\\xeb\\x07\\xd1\\x1d\\xfe\\x11\\x71\\xec\\x31\\xff\\x55\\x77\\x15\\x88\\xb3\\x33\\xee\\xe6\\x21\\x5d\\x21\\x6c\\x47\\xa8\\x56\\x6f\\xbb\\x2b\\x18\\x97\\x46\\x46\\xac\\x5a\\x92\\xc6\\x99\\xd7\\x75\\x84\\xc0\\xde\\xfe\\xfd\\x2d\\xfa\\x58\\xfc\\xa2\\x71\\x99\\xe4\\x1e\\xc5\\x8a\\x24\\x63\\x20\\xb3\\x5f\\xaa\\xb7\\x5b\\x97\\x95\\x19\\x24\\x22\\x6d\\xa4\\xab\\x28\\xf0\\x1b\\x47\\x07\\x8e\\x71\\x2e\\x4f\\xd9\\xf7\\x7b\\x25\\x1c\\x96\\x67\\x85\\x8c\\x28\\xe3\\x2e\\xf1\\xcd\\x01\\xfc\\xbe\\x43\\x5c\\x54\\x2d\\xba\\xd0\\xa8\\x4a\\x13\\xcd\\xbb\\x57\\x75\\xe6\\x2d\\x81\\x1d\\xc6\\x90\\xd9\\x55\\x5c\\x37\\xf1\\x5f\\x91\\x76\\x7a\\x56\\x13\\x57\\xdf\\x10\\x6e\\xef\\xe0\\x56\\xe7\\x36\\x06\\x70\\x65\\x0f\\xb8\\x18\\xfc\\x6a\\xdc\\x59\\x97\\x3e\\x9a\\xd5\\xcd\\xcd\\x80\\x98\\x07\\xab\\x56\\x39\\x7f\\x3c\\x13\\x94\\x87\\x32\\xd9\\x8d\\x67\\x6f\\x4a\\x44\\x70\\xa9\\x5d\\x8b\\x51\\x82\\x37\\xe2\\x26\\xf0\\xcc\\x5f\\x47\\x65\\x16\\x4a\\x5c\\x3e\\xf0\\x50\\x71\\x4b\\xe0\\x2a\\x12\\x6b\\xe8\\xf6\\x65\\x46\\x48\\x15\\x81\\xb9\\xe9\\x4a\\x26\\xaa\\xd2\\x4c\\x69\\x3b\\x7f\\xdb\\xc1\\x8a\\xcd\\x3e\\xd7\\xcf\\xc4\\x7d\\x8a\\xb2\\x67\\x45\\xd7\\x8e\\x70\\x1d\\x0c\\xf0\\x5d\\xd8\\x44\\xb5\\xb3\\x45\\xa2\\x9d\\xab\\x68\\x4c\\xbc\\x50\\x92\\xba\\x02\\x2e\\x3c\\x58\\x2d\\xfc\\x04\\x4c\\x31\\x00\\xad\\x02\\x75\\x66\\x97\\xa8\\x49\\x82\\x29\\x15\\xa1\\x6e\\x2a\\x2b\\x81\\x0e\\x68\\x15\\xf5\\x44\\x21\\xd2\\xf3\\xa6\\xff\\xf5\\x88\\xc0\\xd9\\x01\\x3c\\x76\\xf3\\x3e\\x09\\xbe\\xae\\xef\\x60\\xd8\\x77\\x42\\x30\\xe8\\xce\\x71\\x31\\x28\\x9a\\xef\\x2a\\x40\\x68\\x6c\\x81\\x9f\\xb2\\x04\\x0b\\x06\\x12\\x4d\\x3d\\x9a\\xa4\\x19\\xd5\\x67\\x88\\xf1\\x7f\\xa7\\xed\\x9b\\x9b\\x57\\xce\\xaa\\xd1\\x33\\x7a\\x01\\x01\\xbe\\xa0\\x44\\x0c\\xff\\x74\\x5d\\xdd\\x97\\x22\\x05\\x5d\\x1f\\x9b\\xcf\\xb0\\x09\\xce\\x2c\\x2f\\x41\\xa9\\xe7\\xe8\\x68\\x06\\xb8\\x72\\xcd\\xc2\\x05\\x9b\\xc8\\xec\\x68\\xf5\\xee\\x56\\xc4\\xba\\xcf\\x4b\\xbd\\x30\\xea\\x4c\\x71\\x55\\x86\\x4d\\x60\\x0c\\x0e\\x2e\\xee\\x73\\xb3\\x19\\xbd\\xa4\\x37\\x2e\\x9c\\x60\\x3c\\x77\\x2c\\x25\\x89\\x0c\\x76\\x10\\x48\\x99\\x89\\x47\\x5d\\x37\\xa7\\x7a\\x45\\x74\\xa2\\xba\\x55\\xbf\\xd9\\xc9\\xcf\\xd1\\x46\\xfb\\x97\\xe6\\x16\\x5d\\xcc\\x19\\x55\\x9f\\x4f\\x85\\xdf\\xca\\x2f\\x97\\xf3\\x70\\x2e\\xd8\\xfa\\x6b\\x3c\\x2a\\x97\\x41\\x97\\x4a\\xa0\\x7a\\xb6\"},\n{{0xb1,0x50,0xa7,0x89,0x29,0xed,0x1e,0xb9,0x32,0x69,0x21,0x3e,0x1e,0xbc,0x22,0xe2,0xe4,0x0a,0x60,0x1b,0xdb,0x00,0x54,0x99,0xb7,0xbe,0xb0,0x58,0x91,0x7c,0x53,0x40,},{0x28,0x86,0x6b,0x6d,0x1c,0x39,0x3c,0xb0,0x8e,0x46,0x4c,0xf5,0x57,0x14,0x40,0xa6,0x49,0xe5,0x06,0x42,0x38,0x0d,0xdf,0x4f,0xfb,0x7a,0xd1,0x50,0x48,0x5c,0x10,0x8e,},{0x27,0x6d,0xd0,0x96,0x2e,0x6e,0xe6,0x4f,0x05,0x92,0x44,0x1a,0x8a,0xf0,0xe5,0xef,0x8f,0x93,0xbf,0x0b,0xae,0xba,0x20,0x50,0x4b,0x9d,0xb4,0xf9,0x5a,0x00,0xb9,0x39,0xea,0x38,0xde,0xf1,0xc7,0x97,0x86,0x28,0x98,0xca,0xbe,0x9d,0xc4,0x64,0x4f,0x0e,0x67,0x7e,0x87,0xc0,0xa3,0x3b,0x87,0xb6,0xa4,0xd2,0x2a,0x80,0x7d,0x0e,0x1e,0x02,},\"\\x1b\\xf5\\x5d\\x27\\xf9\\xdd\\xe6\\xc4\\xf1\\xc0\\xdd\\xd3\\x60\\xa2\\x5d\\x94\\x93\\xc0\\xff\\xdc\\xa7\\x4a\\x7e\\xd5\\xe5\\xa5\\x14\\xe9\\x55\\x15\\xcd\\xa4\\xaa\\xd8\\xf4\\x5c\\xd6\\xed\\x79\\x01\\xf8\\xf2\\x24\\xa6\\x3b\\x38\\x12\\x1c\\xbe\\xac\\x2f\\x56\\xda\\xe2\\x10\\xdd\\x05\\x37\\x50\\xcb\\x20\\x75\\x14\\xa8\\x89\\x1e\\x24\\x5a\\x5d\\x07\\xe7\\xde\\x78\\xa2\\xe3\\x81\\x44\\x63\\xf1\\x48\\xd2\\xac\\xb7\\xdc\\x71\\xf9\\x95\\xc9\\x29\\x9a\\xd0\\xd6\\x26\\x6c\\xfe\\xfc\\x94\\x26\\x96\\x57\\xfd\\x47\\xcf\\x53\\x12\\xb9\\x2a\\xf2\\x75\\x06\\x51\\xc4\\x79\\x63\\x6c\\x9d\\x36\\xae\\xf0\\x8f\\x7d\\x11\\x95\\xe7\\xfa\\x1b\\xa3\\xab\\xb5\\xdc\\xb9\\x01\\x36\\xb0\\xfb\\x9a\\x37\\x66\\x8b\\x87\\xa2\\xdb\\x88\\xd1\\xe2\\xb6\\x44\\x0d\\x3e\\x6e\\x60\\x1e\\x6d\\x4b\\xc1\\x0c\\xf1\\xcb\\xdf\\x1d\\x61\\x69\\xc0\\xdc\\x2c\\x4a\\xec\\xde\\xb6\\xcd\\xd4\\x56\\x7d\\x42\\x50\\xb2\\xaf\\xa7\\x15\\xb1\\x66\\xc9\\x46\\x7f\\x90\\x7d\\x3f\\xa5\\xa6\\xda\\xf2\\x00\\xb3\\x09\\xc1\\x09\\x37\\x68\\x30\\x49\\x9c\\xaf\\x31\\x49\\x00\\x1c\\xf3\\x33\\x94\\x48\\xca\\x3d\\x76\\x52\\x25\\xd6\\xb3\\xc1\\xcd\\x26\\x7c\\xba\\x93\\x6e\\x7a\\xa4\\x83\\x25\\x39\\x46\\x6f\\xd2\\x0c\\xbb\\x38\\x32\\x3c\\xbb\\x22\\x28\\xa2\\x71\\xf2\\xd2\\x82\\x56\\x1c\\x73\\xed\\x79\\xa1\\xad\\x04\\x69\\x8e\\x27\\xef\\xe3\\x93\\x23\\x5f\\x34\\x56\\xc2\\x95\\x40\\x7d\\xa0\\x96\\x0f\\x00\\x34\\xd8\\xde\\xef\\xd1\\xc1\\x85\\x73\\x6f\\xd3\\xea\\xf1\\xf9\\xa1\\xe3\\x2f\\x09\\x17\\x4c\\x1f\\xe1\\x27\\x20\\xb7\\xc9\\x6f\\xeb\\xdb\\x33\\xe0\\x1b\\x1b\\x6a\\x1c\\x63\\x71\\x50\\x19\\x4b\\xe4\\xff\\xab\\x15\\x9e\\x45\\xb2\\x45\\x85\\x57\\x68\\x46\\xbb\\x64\\x27\\x4e\\xca\\x7b\\x39\\xa3\\xed\\x93\\x57\\xde\\x7b\\x08\\x42\\x13\\x02\\x4a\\x9e\\x85\\x89\\x26\\x36\\x00\\xa2\\x86\\x7c\\x2a\\x7c\\xf8\\xb9\\x90\\x76\\xa1\\x2a\\x07\\xbd\\x7d\\xf8\\xd5\\x27\\x7b\\xb0\\x4a\\xd7\\x2e\\x63\\x9b\\x77\\xea\\xca\\x1e\\xc5\\x8e\\xf9\\x63\\x7e\\x9a\\x23\\x76\\xba\\x87\\x8a\\x45\\x72\\x35\\xa0\\x6f\\x78\\xfd\\xf0\\xe0\\xd9\\x25\\xcb\\x2f\\xd2\\xa3\\x8c\\x77\\x18\\x8f\\x60\\x37\\x2e\\xf6\\x00\\x97\\x92\\x42\\x43\\x99\\xc9\\xb6\\x79\\x28\\xda\\x2e\\x3b\\xa9\\x1c\\xbd\\xe4\\x07\\xe7\\xe8\\x76\\xba\\x98\\x13\\x9e\\xd2\\x2c\\xa3\\xb9\\x83\\xbe\\xde\\x00\\x00\\x52\\x87\\x96\\x44\\x8e\\x4a\\x10\\x55\\xac\\xb2\\xde\\xaa\\x56\\xbc\\x30\\x82\\x54\\xc5\\xbd\\x49\\x8c\\x27\\x5e\\xce\\xdc\\x13\\x57\\xef\\xe1\\xfd\\xa0\\x1d\\x34\\xd9\\x16\\xdd\\x4d\\x86\\x47\\xe5\\x77\\x19\\x95\\xa6\\x53\\xe0\\xf8\\xa5\\x28\\x4c\\xc7\\xbf\\x73\\x15\\x7b\\x33\\x49\\xd5\\x9e\\x6f\\x92\\x0c\\xad\\x6c\\xdd\\x17\\x19\\xf0\\x38\\x02\\x5c\\x43\\x00\\xe0\\x21\\x0c\\xe2\\x49\\xfa\\xf3\\xc8\\x2d\\xe1\\xfd\\x1c\\xda\\xbe\\x61\\xc1\\x4e\\xcb\\x1d\\xf0\\x0c\\x5c\\x46\\x6a\\xa6\\xa0\\x12\\xa9\\xc1\\x0d\\xcf\\xe5\\x9b\\x7e\\x9d\\x3b\\x15\\x5d\\xab\\x6c\\x7b\\x7c\\x16\\x08\\xc1\\xed\\xd5\\x1d\\xbd\\xad\\xf6\\xba\\x58\\x76\\xb5\\xe6\\x0f\\xdf\\x7f\\x19\\xe6\\xef\\x71\\x2c\\xd1\\xa7\\xdd\\x3a\\x06\\x2a\\x65\\x74\\xa7\\x43\\x6b\\x31\\x9e\\xfb\\x94\\x4e\\x42\\x23\\xf5\\x42\\xb2\\x50\\x2c\\x1b\\xa9\\x76\\xbe\\x91\\xe0\\x5b\\x0f\\x85\\xa0\\x9f\\xd7\\x93\\xbe\\xca\\x88\\x33\\x75\\xfb\\x67\\xcd\\x13\\x3f\\x52\\x84\\xd8\\x99\\x84\\xff\\x3c\\xaf\\xa7\\xe1\\x1a\\x9d\\x85\\xe7\\x89\\x32\\x32\\xa5\\x24\\xec\\x54\\xb2\\x0f\\x97\\x5d\\x3c\\x0a\\x11\\x43\\xa0\\xef\\x41\\x17\\x6b\\x70\\x51\\xea\\x91\\xd4\\x0c\\x5f\\x44\\xfd\\x9e\\x10\\x05\\x58\\xbf\\x12\\x12\\xa7\\xb8\\x91\\xe6\\x8b\\x55\\xca\\x61\\xf4\\xbe\\x94\\x52\\x66\\xd9\\xa1\\x00\\x7a\\x14\\xaa\\xeb\\x68\\xc4\\x8e\\x25\\x7f\\x0f\\x46\\x31\\x0a\\xd1\\x64\\x81\\x46\\x7e\\xc1\\x77\\x35\\x35\\xd5\\xfc\\x08\\x49\\x15\\xf5\\xd0\\x04\\xba\\x0d\\xc7\\x59\\x1d\\x21\\x23\\xc6\\x22\\x07\\x90\\x9d\\x84\\xf2\\xb3\\x82\\xf5\\xef\\x12\\x75\\x9a\\x95\\xcd\\x3f\\x51\\x89\\x80\\x6e\\x27\\x39\\x60\\xae\\xe1\\x62\\xc0\\x0f\\x73\\xe7\\xfa\\x59\\x36\\x39\\x57\\x65\\x4b\\xb1\\x91\\x6b\\x57\\x09\\xbb\\x0a\\x9d\\x04\\x05\\x14\\xae\\x52\\x84\\x95\\x1e\\x6b\"},\n{{0x9f,0xc7,0xc4,0x9c,0xb8,0xc4,0xf0,0x97,0x2d,0x6e,0xd9,0x70,0xae,0x2c,0x6a,0xc3,0x37,0xe6,0x75,0x42,0x5c,0xc8,0xdc,0xe7,0x30,0xfc,0x41,0x44,0x43,0x02,0x93,0x5d,},{0x47,0x82,0x52,0x0b,0x06,0xf9,0x33,0x44,0xaa,0x76,0x67,0x80,0xe5,0x44,0x01,0x36,0x3d,0xfd,0x7d,0x96,0x7c,0xc3,0xbf,0x06,0x48,0x8a,0xf9,0x09,0x20,0xa3,0x0f,0x85,},{0x5c,0x78,0x3a,0x86,0x0a,0xa6,0x68,0x18,0x4d,0xd2,0x2c,0x4f,0x9a,0x54,0x6b,0x5e,0xc9,0x6e,0xba,0xd2,0xe4,0xaf,0x00,0xf9,0x68,0xc6,0x88,0x67,0x13,0x54,0xe0,0xcc,0x9b,0x57,0x2c,0x73,0xbc,0x6f,0x19,0x93,0x7a,0x05,0xf1,0xba,0xf3,0x43,0x47,0x63,0x96,0x5c,0x96,0xe1,0x03,0x40,0x7f,0x0e,0xb6,0x42,0xc5,0x64,0x41,0x54,0x29,0x0b,},\"\\x82\\xbc\\x2c\\x70\\x0d\\xb2\\x22\\xa4\\xac\\x91\\x4a\\xa2\\xbe\\x8f\\xa2\\x8e\\x42\\x20\\x67\\xf9\\x4f\\x33\\x44\\xf5\\x36\\x2b\\xeb\\xaa\\xbe\\xd7\\x61\\x2b\\x0e\\x46\\x4a\\x73\\xa6\\xc4\\x56\\x90\\x35\\x64\\xb1\\x53\\x93\\x48\\x51\\x40\\xdd\\x0f\\x3a\\xff\\x90\\xaa\\x6e\\x16\\x61\\xdd\\xf6\\x82\\x85\\x0d\\x04\\x90\\xaf\\xc3\\xd7\\x35\\xde\\xa0\\x5b\\xa4\\x7c\\x85\\xd9\\x7e\\x83\\x35\\x33\\x51\\x4c\\x19\\x8b\\x4c\\xf6\\xe6\\x6d\\x36\\x0e\\xe5\\xbf\\x00\\xe1\\x4a\\x3a\\xab\\x1a\\xd0\\xe7\\xb8\\xab\\x2a\\xac\\xc9\\x64\\xd4\\x28\\x30\\xc7\\x84\\x53\\xdf\\x19\\x55\\xbb\\xed\\x1c\\xd6\\x8a\\xda\\x3d\\xb0\\xec\\xdb\\x60\\x1a\\xd7\\x66\\x7d\\x5c\\x5e\\x2f\\xd4\\x9e\\x36\\xf7\\x32\\x8e\\xaa\\x33\\x7d\\xbd\\x6f\\xf7\\x0e\\x78\\x98\\xa3\\xf9\\x8c\\x15\\x9d\\x04\\x5a\\x24\\x27\\xad\\xe5\\x33\\x3c\\x88\\xfc\\x4a\\xfd\\x38\\x19\\xdc\\x82\\xf4\\xda\\xa3\\xc5\\x23\\xcb\\x57\\xe3\\x5a\\x2a\\x5a\\x72\\x5d\\x63\\xd4\\x02\\xba\\xef\\x51\\xe5\\x1f\\x1e\\xf4\\xf8\\xf9\\xa5\\x95\\xc9\\x37\\x9c\\x9a\\xba\\x87\\x3f\\xb4\\xe7\\x65\\xa9\\x31\\xda\\x09\\x14\\x8a\\xba\\x6e\\xc5\\xb4\\x48\\x59\\xb0\\xe8\\x1f\\xf9\\xfc\\x22\\x95\\x98\\xac\\x9f\\xbd\\xb0\\xbd\\xbd\\xdb\\x56\\x92\\xa5\\x22\\x22\\xdf\\x52\\xea\\x38\\x7b\\xbb\\xf3\\x6a\\xd6\\x4d\\x19\\x46\\xbd\\x28\\x2e\\x32\\x3f\\xf4\\x82\\x2a\\xd9\\xda\\x89\\x7f\\xf7\\x3f\\x01\\xb3\\x90\\xcf\\xe2\\xe6\\x4d\\xe4\\x92\\xd5\\x5d\\xe7\\x7f\\x5d\\x7d\\x00\\x60\\xa6\\x87\\x2a\\x01\\x83\\xcc\\xba\\x61\\x0f\\x53\\x27\\x4c\\xcb\\x29\\xce\\x6d\\xce\\x6a\\x03\\x6c\\x53\\x17\\xa1\\xed\\x2a\\x7c\\x10\\x68\\xc1\\xb2\\x46\\xfc\\x1d\\x58\\x81\\xd0\\x0d\\xe0\\x6e\\xb4\\x01\\xcf\\xf9\\x5e\\x6b\\x69\\x14\\x86\\x99\\xdb\\x13\\xe9\\x4b\\xb5\\xb2\\x80\\x21\\x2d\\xff\\x54\\xc7\\x0e\\x56\\xde\\x23\\x5a\\x5f\\x14\\x00\\xb5\\xbe\\xa5\\x67\\x72\\xd0\\x60\\x17\\x0f\\x1d\\x06\\x57\\x32\\x15\\x61\\xe4\\xb4\\x91\\x07\\xeb\\x96\\xd9\\xb3\\xbc\\x5a\\xdf\\x45\\x1c\\x2a\\x52\\x4e\\xba\\x4d\\xb0\\x03\\xb7\\x7b\\x63\\x2a\\x5d\\x89\\x82\\x7a\\x62\\x24\\xcc\\x79\\x8e\\x09\\x6b\\xa2\\x7f\\xb3\\x3b\\xf6\\x1e\\x3b\\x8e\\xaf\\x18\\xd0\\x01\\xae\\x8e\\xb5\\x2f\\x85\\xc9\\x0d\\x9e\\x12\\x54\\x48\\x03\\xe6\\x7f\\xf0\\x20\\x47\\xe0\\xd2\\x3c\\x22\\xe7\\xf8\\xb9\\x80\\xc0\\x1c\\x3d\\x48\\x24\\xb2\\xa9\\xa1\\x4a\\x2e\\x8f\\x67\\x2a\\x7b\\x0c\\xe0\\x3b\\xdb\\xb3\\xbd\\x56\\xd7\\x54\\xa0\\x96\\x4d\\xb0\\x1c\\xa8\\x99\\xd4\\x88\\x00\\x15\\x08\\x65\\x7b\\x7b\\x02\\x2c\\xcf\\x04\\x2c\\x38\\xfc\\x19\\x49\\xd0\\xe0\\x0a\\xf4\\xd3\\x01\\xd4\\xf0\\x0c\\x3d\\xea\\x20\\xe3\\x08\\xa0\\xf9\\xdc\\xac\\xb4\\x32\\x22\\xb3\\x82\\x41\\x44\\xaf\\x77\\xbe\\x18\\xa5\\x04\\xaa\\x8d\\x26\\x8b\\x8a\\x56\\x00\\x72\\x5e\\x7c\\xc5\\xf3\\xa2\\xe6\\x25\\x6a\\x80\\x74\\xd1\\xae\\xbc\\xa1\\x23\\xea\\x53\\xa0\\x76\\x7a\\x92\\xe1\\x78\\x3a\\x49\\x83\\xc5\\xef\\x3d\\x7d\\xd7\\xf0\\x2a\\xa9\\xd1\\xf4\\xf9\\xaa\\xc6\\xce\\x25\\x45\\x93\\xf0\\x87\\x92\\x01\\x4f\\xb8\\x67\\xea\\xf8\\x79\\xb8\\x8a\\x4e\\xfb\\x18\\xe8\\x9b\\xa1\\x10\\x06\\xad\\x09\\xd8\\x54\\x31\\xcc\\x26\\x57\\x5b\\x53\\x8d\\x8e\\x78\\x90\\x64\\x6c\\x59\\x88\\x64\\x7c\\xc1\\x05\\xd5\\x82\\x90\\x7a\\xe6\\x25\\xe0\\x9c\\xd0\\x89\\xf4\\x72\\x49\\xe8\\x18\\x14\\xda\\x14\\x04\\x4c\\x70\\x14\\xe8\\x0e\\x7a\\x8e\\x61\\x9c\\x7b\\x73\\x5f\\x70\\x16\\x16\\xb6\\xa3\\xc6\\xf4\\x92\\xcd\\xc6\\xed\\x46\\x3e\\x71\\xa3\\xd2\\x22\\x91\\x48\\x2d\\x90\\xa1\\xde\\x6f\\x09\\x7c\\x4a\\xe2\\x54\\x87\\x61\\x84\\xc5\\x62\\xb1\\x65\\x75\\xb9\\xd0\\xd1\\x93\\x13\\xed\\x98\\x86\\x4f\\x49\\xfe\\x2e\\x1d\\x07\\x4a\\x21\\x21\\x1b\\x2b\\x2a\\x6d\\x27\\xdd\\xb2\\x86\\x11\\x52\\x0d\\x5f\\x71\\x23\\x05\\x8f\\xd0\\x07\\xbb\\x01\\x00\\x1d\\xef\\x07\\xb7\\x92\\xbb\\x05\\xbb\\x74\\x1c\\x12\\x9c\\x6a\\x36\\x37\\x6c\\x38\\x53\\xb8\\xbb\\x4f\\x66\\xb5\\x76\\x0c\\x8e\\xb4\\xec\\xc7\\x30\\x6b\\xa3\\xa9\\x0c\\x70\\xda\\x47\\xc9\\x65\\xf6\\xdc\\xcb\\xdb\\x61\\xa7\\xfd\\xa1\\x8e\\xe9\\x67\\xcf\\x8c\\x5f\\x05\\x03\\x11\\x09\\x2d\\x0f\\xde\\xea\\xed\\xd1\\x26\\x5d\\xef\\xdd\\x66\\x0a\\xbe\\x70\"},\n{{0x08,0xbf,0x05,0x9b,0x4d,0xa9,0xaa,0x7f,0xfc,0x70,0x2f,0x5b,0x23,0x04,0xc4,0xf9,0x6c,0xa4,0x9b,0x7d,0xab,0xb6,0xaf,0xb4,0x1d,0xc9,0x1c,0x0f,0x00,0xc6,0x5b,0x78,},{0xa6,0x28,0x9b,0xa2,0x8e,0x80,0xe8,0xd1,0xa3,0x19,0x22,0x3e,0x41,0x65,0xdc,0x0b,0xce,0x73,0x52,0xaa,0xf2,0x42,0xf7,0x0c,0xc9,0x68,0xd2,0x1d,0x77,0x75,0x28,0x32,},{0xe2,0x47,0x65,0x86,0x01,0x37,0x68,0x9a,0xad,0x50,0xeb,0xee,0xfc,0x8d,0x6d,0xb8,0xe9,0x36,0xa4,0xcb,0xa6,0x2c,0xe8,0x7a,0x7f,0x58,0x02,0x09,0x38,0x4a,0x9d,0x7e,0xec,0x90,0x70,0x90,0x5f,0x60,0xad,0x63,0xa7,0xbe,0xfd,0x7c,0x70,0xf0,0xae,0x7c,0x81,0x09,0x16,0x9a,0xee,0x4e,0x51,0x8f,0xce,0xbf,0xac,0xa7,0x23,0xc5,0xb2,0x07,},\"\\xbd\\x4f\\xb2\\x8a\\x1d\\xd0\\x8b\\x07\\xba\\x66\\xe1\\x7f\\x0c\\x4f\\x21\\x85\\x3f\\xef\\xef\\x1c\\x9d\\x20\\xba\\x79\\x77\\xf1\\x54\\x64\\x1e\\xa1\\xa1\\x8b\\xec\\xf6\\xbb\\xb8\\x03\\x88\\x88\\x62\\x94\\xe0\\x75\\x6a\\x3c\\x50\\x8f\\xfd\\xfe\\x90\\xb5\\x1e\\x13\\x56\\xd1\\x12\\xd8\\xcd\\xe5\\xee\\x2c\\xc6\\x33\\x2e\\x61\\xd1\\x69\\xcc\\xc8\\xcc\\x93\\x49\\x94\\xf1\\xbb\\x56\\x0f\\xa4\\x66\\x0c\\x0b\\x0f\\xd4\\xe8\\x14\\x9a\\x22\\x5e\\xd4\\x88\\x3e\\x68\\xfb\\xb6\\x9d\\xa7\\xaf\\x8a\\x52\\x4b\\x17\\x14\\x1c\\xcb\\x76\\xb5\\x0c\\xd8\\xe1\\xb6\\x7d\\x3c\\xe0\\x37\\xde\\xd7\\xdf\\xa5\\x9b\\xc7\\xc2\\x67\\x42\\x26\\xec\\x7e\\x07\\xb7\\x8e\\xa3\\xf7\\x82\\xfd\\xa3\\xe5\\xf1\\xe9\\xca\\xea\\xb6\\x08\\xca\\x38\\x7c\\x30\\x46\\x54\\xf8\\x01\\xd0\\x0e\\x10\\xa7\\xc2\\x9f\\x4b\\x0d\\xa3\\xe5\\xf8\\x95\\x13\\xa9\\x80\\x37\\x71\\x9a\\x1a\\xef\\x4c\\x25\\x06\\xc1\\x77\\xaf\\x54\\x51\\xa0\\x07\\x57\\xa5\\x9f\\x16\\x22\\x9c\\x4f\\x44\\x14\\xdf\\x51\\x58\\x0d\\x48\\x21\\x0d\\xab\\xc9\\x37\\x73\\x70\\xb6\\x06\\x8a\\x88\\xe8\\x1d\\x3a\\xd1\\xbe\\xd4\\x98\\x51\\x55\\xc3\\x60\\x0f\\xf4\\x87\\x68\\xb9\\x03\\x02\\x2f\\xe0\\x2a\\xe4\\x80\\xf2\\xe6\\x32\\x9f\\x0b\\xcc\\x91\\xd7\\x5f\\x5c\\x6a\\x09\\xfd\\xf7\\x7b\\xde\\x90\\x49\\x9f\\x3c\\xa3\\x95\\xcb\\x20\\x06\\x2a\\x09\\x84\\xad\\x6a\\x01\\x41\\xfd\\x01\\xc2\\xd5\\x4d\\xfb\\xb1\\xee\\x58\\x46\\x10\\x64\\x07\\x73\\x43\\x9a\\x16\\x58\\xd2\\xc9\\xf8\\x62\\xf1\\x83\\xbf\\xef\\xb0\\x33\\xa3\\xbe\\x27\\x18\\x12\\xf1\\x3c\\x78\\x70\\x46\\x57\\xe7\\xfb\\x4f\\x85\\x01\\x75\\xfc\\xd6\\x3d\\x3e\\x44\\x05\\xd1\\x92\\x24\\x2c\\x21\\xf2\\x7c\\x51\\x47\\x7f\\x32\\x11\\xa9\\xce\\x24\\x8e\\x89\\x2b\\x42\\xfb\\x6d\\x85\\x82\\x0f\\x41\\xb8\\x97\\x83\\x6f\\x20\\xf8\\x5a\\x13\\x11\\x53\\x4b\\x5c\\x40\\x4f\\x8b\\x7a\\x4a\\x03\\x19\\xbc\\x6c\\xec\\xaa\\x57\\xfe\\x4d\\x4f\\x20\\x60\\x7c\\x99\\xc2\\xdf\\x22\\xfa\\x06\\x76\\xf9\\x9d\\x1b\\xd8\\x78\\x86\\xc9\\x28\\xc4\\x98\\x8c\\x6e\\x78\\xc5\\x7d\\x75\\x83\\x30\\xe6\\x92\\x2c\\xbe\\x03\\xc1\\x03\\x40\\x25\\x3d\\x0d\\xd4\\x83\\x79\\x2c\\xe7\\x5e\\x6c\\xd0\\x9d\\x12\\xfb\\xbb\\x04\\x1f\\x02\\x05\\xe6\\x5a\\xd2\\x5c\\xe7\\xc1\\xb2\\x4e\\x77\\xee\\x8d\\x6f\\x91\\x5e\\x3b\\xc3\\xe1\\x0d\\x09\\xfb\\xd3\\x87\\xa8\\x4b\\xda\\xab\\xfd\\x1c\\xed\\xb5\\x2c\\x0b\\x17\\x33\\xb5\\xf4\\x70\\x88\\xc0\\xd3\\x5e\\x0e\\xf4\\x58\\xc8\\x54\\x14\\xc2\\xb0\\x4c\\x2d\\x29\\xf6\\x3f\\x77\\x58\\x61\\x31\\xee\\x65\\x53\\x0f\\x20\\x9b\\x51\\x8a\\x0f\\x25\\x7a\\x07\\x46\\xbb\\xd5\\xfe\\x0a\\x2e\\x0c\\x38\\x8a\\x6c\\x48\\x0e\\x1b\\x60\\x71\\x4f\\xee\\x1c\\x59\\x41\\xbb\\x4e\\x13\\xf7\\x07\\xea\\xc4\\x87\\xa9\\x66\\x6a\\x72\\x3b\\x57\\x93\\x13\\x4a\\x26\\x8b\\x77\\x59\\x77\\x86\\xc3\\xa3\\x19\\x3b\\x46\\xd3\\x55\\xdd\\x08\\x95\\xfc\\x62\\x16\\xc5\\x36\\xa5\\x42\\xff\\xd7\\xd7\\xb0\\x80\\x10\\xc8\\x6f\\x54\\x7a\\x5d\\xaa\\x38\\x33\\x5a\\x8b\\xfa\\x26\\x55\\xd5\\xf7\\x1b\\x4d\\x88\\x07\\xf5\\x0c\\x85\\x45\\xc5\\x83\\xdd\\x0b\\x69\\x00\\x22\\xee\\x65\\x87\\x3a\\xea\\x3e\\x8f\\x1a\\x56\\x5f\\x3b\\x0e\\x4e\\x02\\x95\\xfb\\x0d\\x32\\x1f\\x5c\\x0b\\x39\\x7f\\x2f\\xd0\\x52\\x8f\\x86\\xa0\\xd1\\xb7\\x07\\xf7\\x37\\xb1\\x75\\xc6\\x9e\\x9e\\x7a\\xe3\\xc8\\x4d\\x4b\\x2c\\xf3\\xa3\\x8a\\x63\\x1a\\xa8\\x03\\x2b\\x3e\\x65\\xbb\\x45\\x28\\xf6\\x6d\\x0b\\xfd\\x34\\x47\\x3e\\xd0\\x10\\x1d\\x2a\\x61\\x25\\x5b\\x21\\x5b\\xc1\\xcb\\xab\\x9a\\x26\\xd2\\xb9\\x69\\x32\\x4b\\x77\\xc8\\xa5\\x46\\x4e\\x5b\\x23\\xdf\\x6c\\x51\\x12\\xf9\\xd1\\x7c\\x58\\x7d\\x95\\x55\\x9d\\xe2\\x12\\xad\\x24\\x1d\\x8b\\x12\\x60\\x50\\xe5\\xfd\\xdf\\xcc\\x83\\x9a\\x7e\\x5a\\xa2\\xfd\\xa1\\xca\\x20\\xc0\\x91\\x0d\\x86\\x34\\x18\\xf1\\x95\\xb3\\x8a\\xdf\\xcc\\x36\\xe9\\x2f\\x23\\x96\\xac\\x31\\x44\\xb5\\x37\\xb3\\x0f\\xbe\\x4d\\xde\\x61\\x49\\x02\\xf8\\x99\\x78\\xb7\\xfb\\x42\\xcd\\x99\\xf1\\x3d\\x99\\xc4\\x5c\\x73\\x4f\\xb8\\x2c\\x32\\x59\\xf9\\x0b\\x88\\xfd\\x52\\xbd\\xcb\\x88\\xf7\\xee\\xec\\xdd\\xe4\\xc2\\x43\\xd8\\x80\\xba\\xc7\\x61\\x4e\\x15\\xcf\\x8d\\xb5\\x99\\x3f\\xfa\"},\n{{0xdb,0xbd,0x0f,0x7e,0xcb,0x64,0x82,0xcb,0x01,0xc4,0xdb,0xdc,0x38,0x93,0xc0,0xdb,0x81,0xe8,0x31,0x35,0x3a,0x5b,0x01,0xcc,0x75,0xd3,0xb1,0x1f,0x2f,0xf3,0xc5,0x9c,},{0x2d,0x4e,0x58,0x8d,0x31,0xa3,0x84,0xb1,0x78,0x58,0xc0,0xd7,0x84,0xf6,0x71,0x2b,0xaf,0xd0,0xb4,0x12,0x04,0xcf,0x8f,0x0d,0x57,0x97,0x3e,0x59,0xc7,0x70,0xd3,0xda,},{0x96,0xc0,0x03,0x61,0xfb,0x71,0xc5,0x23,0x05,0xe1,0xab,0x77,0x07,0xe0,0x46,0x52,0x03,0xeb,0x13,0xdf,0x3e,0x06,0x55,0xf0,0x95,0xfb,0x33,0x19,0x42,0xa4,0x0b,0x15,0x58,0x41,0x43,0xb3,0x70,0xa7,0xdd,0x57,0x61,0xfb,0x03,0xc0,0x75,0xd0,0x4a,0x83,0x48,0x66,0x1c,0xce,0xa9,0xad,0xa5,0x33,0x65,0xb5,0x00,0x08,0x7d,0x57,0xec,0x0c,},\"\\xe0\\xff\\xf3\\x59\\x75\\xeb\\xa7\\x8d\\xa2\\xb0\\xff\\xcc\\x5c\\x1b\\x66\\x36\\x00\\x88\\x8e\\x82\\x55\\xcd\\x20\\x8f\\x6d\\xce\\x7e\\x88\\x95\\x3b\\x71\\x42\\x93\\x73\\x89\\xa3\\x37\\xae\\x82\\xf4\\xcf\\xe3\\x2f\\xcb\\x34\\xf5\\x52\\xa4\\x8f\\xa8\\x89\\x9e\\x1a\\x65\\x9e\\x3e\\xd3\\xd3\\xd2\\x90\\xef\\xc9\\xa0\\xf7\\xde\\xdf\\x33\\xe2\\x1d\\x04\\x8d\\x8d\\x91\\x07\\x57\\x03\\x7b\\x76\\xe8\\xa7\\xee\\x9e\\x4e\\xca\\x30\\xf5\\x29\\xdd\\xc0\\x2c\\xef\\xfc\\x26\\xd6\\x4f\\xda\\x73\\x03\\xcc\\x0d\\x89\\x40\\xe9\\xef\\x59\\xdc\\x98\\x3c\\x12\\xcc\\xd1\\xd2\\x71\\x7e\\x64\\xd3\\x00\\x6a\\xf8\\x2a\\xb1\\x5b\\xb8\\x78\\xbb\\x89\\xd1\\x75\\x8b\\xe4\\x43\\x10\\x42\\x06\\x38\\xb9\\x6a\\x0b\\x5e\\x1e\\x65\\x00\\x9d\\x69\\x39\\x5d\\x02\\x7a\\x5d\\xa4\\xa8\\x5e\\x90\\x1b\\xe9\\xaa\\x2c\\x0b\\x3a\\xcc\\x50\\x8e\\xe1\\x85\\x74\\xc1\\xb2\\xfa\\x9b\\xd5\\xd7\\xae\\x7c\\x7d\\x83\\x07\\x12\\xda\\x5c\\xbf\\x26\\xbe\\x09\\xa3\\x12\\x84\\x70\\xa1\\x2a\\x14\\x90\\x9a\\x80\\xa2\\x66\\x65\\x9b\\xef\\xda\\x54\\x8f\\xd2\\xb2\\x2f\\x24\\xc5\\xfd\\xc2\\x06\\xed\\x3a\\x4e\\x75\\xf5\\x32\\x06\\x82\\xed\\x0e\\x4c\\xe8\\x17\\xd6\\x3d\\x5c\\x7f\\x1e\\xe2\\xb4\\x40\\x64\\x33\\x55\\xbe\\x65\\x42\\xf5\\x9d\\xc6\\xc4\\x5a\\xb1\\x57\\x72\\xf2\\x21\\x9a\\x81\\x2e\\xf7\\x52\\x76\\x42\\x01\\x5b\\xc7\\x5f\\xe4\\x5b\\xa9\\x69\\xe8\\x10\\x0c\\x26\\x8e\\x24\\xce\\xef\\x92\\x05\\xa8\\x3a\\x3f\\x7b\\x5a\\xe8\\x00\\xad\\x06\\xe0\\x95\\xb9\\xb1\\x39\\x21\\x94\\x89\\x79\\x3a\\x7b\\xce\\x84\\xeb\\xeb\\x65\\x4a\\xb6\\x66\\x9e\\x28\\x55\\xcc\\xbe\\xb6\\x94\\xdd\\x48\\x65\\x15\\x05\\xb9\\x59\\xd3\\x2a\\x77\\x02\\x0b\\x86\\x95\\x33\\xe3\\x25\\x6d\\x40\\x68\\x5a\\x61\\x20\\xba\\xb7\\x94\\x48\\x5b\\x32\\xe1\\x16\\x92\\x56\\xfb\\x18\\x8f\\xe7\\x6e\\x04\\xe9\\xef\\xa6\\xd1\\x0d\\x28\\x6a\\xe8\\x6d\\x6f\\x1c\\x87\\xe8\\xfc\\x73\\xad\\x9b\\x59\\xfe\\x0c\\x27\\xee\\x92\\xa4\\x64\\x15\\xb3\\x9d\\x78\\x6d\\x66\\x32\\x5d\\x7f\\xa6\\xfd\\xa7\\x12\\xf1\\x99\\xda\\x55\\x4f\\xc1\\xc8\\x99\\x44\\xa4\\xe8\\x4c\\x19\\x6e\\x97\\x9a\\x80\\x75\\x53\\x71\\x8c\\xb8\\x1c\\x07\\x6e\\x51\\x1e\\x60\\x9d\\x5c\\xac\\x23\\xd8\\xf4\\x5b\\x38\\xb9\\x4b\\xcf\\xcf\\x15\\x8d\\x0d\\x61\\x60\\x22\\x38\\xd5\\x2e\\x3a\\xe8\\x4c\\x81\\x53\\x22\\xf5\\x34\\xf2\\x54\\xe6\\x33\\x89\\xae\\x15\\x5d\\xee\\x2f\\xa9\\x33\\x96\\xf0\\xea\\x49\\x9d\\x5d\\x08\\xc2\\x47\\x59\\x08\\xc6\\x48\\xbd\\xdc\\xee\\x59\\x1e\\x13\\x37\\xe9\\x42\\x1d\\xc5\\xa2\\x57\\xce\\x89\\xcc\\xce\\x4c\\xee\\xa8\\x09\\xd7\\xe8\\x71\\x34\\xe0\\x39\\xdb\\x1b\\xe5\\x98\\x19\\x6d\\x30\\x89\\xfd\\xcf\\xa8\\x97\\x8e\\x02\\xc1\\x55\\x58\\x32\\xda\\x0a\\x72\\xb0\\x8a\\xd0\\x7c\\xdd\\x07\\x26\\x27\\x40\\x9c\\x87\\x39\\x37\\xb0\\xe8\\x35\\x71\\x5b\\xaa\\xf2\\x60\\x8b\\x23\\x95\\x32\\x74\\x67\\xcf\\x69\\xa1\\xcd\\xcc\\xe6\\x37\\x24\\x18\\x38\\x3e\\x7b\\x89\\xc8\\xdf\\x4d\\x53\\x1f\\x58\\x51\\x49\\x50\\x9e\\xad\\x1e\\x41\\xb6\\x62\\x7f\\xea\\x81\\xc7\\x95\\x8c\\xb4\\x9d\\x2d\\x3c\\x3e\\x2f\\xc6\\x91\\xe0\\xb8\\xcf\\x72\\x67\\x9c\\x08\\xb8\\x90\\x46\\x54\\x53\\x1b\\xc4\\x36\\x8f\\xb6\\x17\\xac\\x75\\x57\\xd9\\xdb\\x8d\\x32\\x9d\\x77\\xe4\\x8d\\x8f\\xb4\\xde\\x73\\xab\\xe7\\xcb\\x93\\x88\\x27\\x4a\\xf5\\x85\\xf8\\x75\\xc0\\xda\\xb7\\x93\\xe4\\x35\\x35\\x18\\xbb\\x24\\x69\\x53\\x42\\xaf\\x0f\\x5d\\xf5\\xbe\\x4e\\x9c\\x7a\\xd2\\x15\\xbe\\x90\\xe2\\x55\\x40\\xda\\x34\\x89\\x71\\x7d\\xd3\\xd2\\x92\\x54\\x58\\x5a\\x45\\xc1\\x3e\\x6d\\xcc\\x7e\\x9c\\x8a\\x3a\\x79\\xff\\x75\\x5c\\xbe\\x46\\x5b\\x25\\xe2\\x3a\\x1d\\xa6\\x08\\xe1\\x08\\x4f\\xec\\x83\\xbf\\xf8\\x0c\\xfb\\x74\\x42\\xb1\\x46\\x01\\x87\\x30\\x7a\\xcd\\x75\\xe3\\xf2\\xd1\\x28\\x43\\xa7\\x70\\x94\\xac\\xc3\\x28\\x88\\xfb\\xe5\\xf1\\xfc\\x24\\xc6\\x15\\xd1\\x9a\\x06\\x53\\x91\\xd4\\x17\\x64\\x74\\x64\\x42\\x46\\xb5\\x34\\x3d\\xa7\\x76\\x26\\xa2\\xd4\\x83\\xfe\\x20\\x4f\\x83\\x93\\x28\\x77\\x5b\\x71\\xa4\\xcb\\x56\\x72\\x73\\xe1\\x69\\x64\\x0a\\xf9\\x3d\\xde\\x3e\\xca\\x91\\x16\\xf4\\x00\\xe2\\x3a\\x7a\\xd3\\xd8\\xfc\\x3a\\x28\\xe5\\x65\\xf1\\x25\\xd6\"},\n{{0x74,0x8b,0xb3,0xcd,0x47,0x71,0x37,0xbc,0x88,0x0e,0xa7,0xc6,0x1d,0xf2,0x5c,0x1d,0xac,0x6e,0xbe,0xc9,0xe6,0xc3,0x19,0x3d,0x81,0xff,0xa6,0xf7,0xa8,0x1e,0xc6,0x67,},{0x10,0x6f,0x28,0xcf,0xed,0xf0,0x96,0x45,0x42,0x26,0xb3,0xb0,0x1f,0xc2,0x4a,0xb1,0xc9,0xbb,0xd7,0xf2,0xb0,0x97,0x3e,0x56,0xfe,0x2f,0x4c,0x56,0xa0,0xb1,0x47,0x5b,},{0xe1,0x3c,0xa8,0xe5,0xce,0x7c,0x26,0x80,0x90,0x90,0x8d,0x61,0xcf,0x2f,0x0a,0x3e,0x45,0x72,0x41,0x2b,0xf5,0xad,0xfc,0x5a,0xdd,0xfe,0x88,0x55,0x6f,0x14,0x8b,0x5f,0xcb,0xe3,0xe1,0xbc,0x65,0xff,0x16,0x11,0x7d,0x35,0xc9,0xd5,0xdc,0x3b,0x11,0x71,0x98,0xf8,0x84,0x92,0x5b,0x40,0x35,0xb2,0xc0,0xde,0x6c,0x40,0x2e,0xd4,0x7a,0x01,},\"\\x00\\xde\\x6d\\x99\\x0c\\x84\\x33\\x8a\\x39\\x8f\\xda\\x5f\\x4a\\x2c\\xca\\x73\\x3c\\x56\\xb2\\xa2\\xea\\x39\\x6c\\x2f\\xe6\\x67\\xc2\\x68\\xe3\\x81\\x45\\x87\\x85\\x39\\xbd\\x41\\xbc\\x14\\x0a\\x2c\\xdf\\xe7\\xe1\\x83\\x60\\x41\\x10\\x48\\xcc\\xa6\\x0f\\x35\\xce\\x51\\x09\\x91\\xdf\\x26\\x1c\\xbf\\x66\\x90\\x39\\xd9\\xd2\\x56\\x87\\xa0\\x7f\\xc0\\x47\\x6a\\x41\\xf5\\x0e\\xcc\\xf3\\x81\\x53\\xee\\x6a\\xe9\\xff\\xd3\\x92\\xb2\\xbe\\xc0\\xcc\\x67\\x10\\x1e\\xc3\\x69\\x6d\\x7a\\x2e\\xc8\\xcb\\xd4\\x47\\xb6\\xa6\\xea\\x06\\x3d\\x33\\xec\\x12\\x8a\\xe8\\xb5\\x75\\x77\\xde\\xe1\\x7b\\x97\\x16\\x25\\x63\\xf1\\x5e\\x42\\xb5\\x5c\\xa4\\xbe\\xdb\\xdf\\xb6\\x31\\xa9\\xf6\\x26\\x2f\\x94\\xae\\x35\\xbb\\x35\\xf7\\x95\\xc3\\x5a\\x01\\xde\\xdb\\x46\\x45\\xa7\\x3c\\xfa\\x6e\\xd9\\xee\\x52\\x1e\\x46\\x31\\xfb\\x17\\xbb\\xc0\\x6e\\xe5\\x73\\x16\\xbe\\x52\\x74\\x27\\xc8\\xaa\\x55\\xc6\\x31\\x18\\x74\\x62\\xd4\\xb2\\xc8\\x82\\x2c\\xa4\\xe1\\x8b\\x7a\\x5d\\x4c\\x11\\x4c\\x11\\xdc\\x22\\x06\\x9b\\xc8\\x32\\x65\\x6d\\x5f\\x4d\\x39\\x54\\x87\\x18\\xc5\\x1f\\x5e\\x4f\\xc8\\x28\\xf6\\x0e\\x37\\xf0\\x13\\x07\\x50\\x52\\x65\\xac\\xb2\\x2d\\x5e\\x8d\\x76\\x7b\\x9a\\xa7\\xb8\\x66\\xa1\\x57\\xc6\\x43\\x87\\x3e\\x09\\x08\\x4a\\x1a\\x40\\x4a\\x7b\\xb5\\x8c\\xcc\\x4b\\x5a\\x39\\x0f\\xd3\\x06\\x01\\xc8\\x96\\x93\\x5e\\x35\\x56\\xf6\\x0d\\x2d\\xc6\\xbd\\xff\\xe4\\x7d\\xa0\\xa6\\x87\\xc8\\xec\\xe1\\x24\\x1f\\xf6\\xc0\\x7d\\x77\\x61\\x11\\xca\\x65\\x98\\xfc\\xa9\\x68\\xcb\\x6a\\xfa\\x0a\\x14\\xa3\\x4a\\xb8\\xf5\\x4b\\x95\\xd3\\xd8\\x47\\x3a\\x17\\x4b\\xc7\\x25\\x52\\x3f\\x86\\x74\\xdf\\xb2\\xb1\\x0f\\x87\\x42\\x07\\xfe\\xe1\\xb0\\x8b\\x42\\xda\\x1f\\x58\\x65\\x53\\x05\\xa3\\x59\\x75\\x7a\\xa0\\x25\\x1f\\x14\\x13\\x8e\\xed\\xbc\\x28\\x0c\\xbd\\x38\\x5b\\xf4\\xbb\\xf5\\x53\\x01\\x14\\xcc\\x43\\xb0\\x47\\x47\\x79\\xe2\\x04\\x96\\x2f\\x85\\x60\\xd4\\xaa\\x42\\x3e\\x17\\xe6\\xae\\xca\\xce\\x66\\xc8\\x13\\x78\\x4f\\x6c\\x89\\x8b\\x5b\\x9c\\xb7\\x46\\xa9\\xe0\\x1f\\xbc\\x6b\\xb5\\xc6\\x60\\xf3\\xe1\\x38\\x57\\x4f\\x59\\xb9\\x74\\x54\\x45\\x48\\x6c\\x42\\x2b\\xc0\\x6a\\x10\\xcc\\x8c\\xc9\\xbc\\x56\\x45\\x8e\\xf8\\x5e\\x0e\\x8a\\x02\\x7c\\xb0\\x61\\x7d\\x03\\x37\\xdd\\xda\\x50\\x22\\x0b\\x22\\xc5\\xc3\\x98\\xf5\\xce\\x05\\xec\\x32\\xf0\\x9b\\x09\\x0f\\x7c\\xf6\\xc6\\x0f\\x81\\x8c\\x6b\\x4c\\x68\\x30\\x98\\x3e\\x91\\xc6\\xea\\xdf\\x1e\\xae\\x4d\\x54\\xbd\\xe7\\x54\\xf7\\x5d\\x45\\x0a\\xe7\\x31\\x29\\xf6\\xc4\\xff\\x5c\\x4c\\x60\\x6f\\x7c\\xad\\xbf\\x4f\\x78\\xa1\\x8d\\xb2\\x96\\x1c\\xc8\\xc8\\xdd\\xab\\x05\\x78\\xcf\\xed\\xfc\\xf9\\x5e\\xf0\\x88\\x8a\\xfd\\x38\\x55\\x37\\xd1\\xd0\\xa0\\x76\\x48\\xa5\\xce\\x25\\x22\\xd0\\x63\\x35\\x07\\xd7\\x75\\x93\\xe1\\xa0\\x36\\x6d\\x1e\\xce\\x84\\x3d\\xe6\\x98\\x67\\xd7\\xac\\x44\\x2b\\xa7\\xda\\xd2\\xa9\\x0b\\x59\\xd8\\x98\\x4e\\x4a\\x94\\x6b\\xbe\\x5f\\x17\\x2d\\xa4\\x27\\x63\\x8b\\x2b\\x61\\x20\\x90\\x41\\xff\\xf5\\x0e\\x60\\xec\\x02\\xec\\x2c\\x0b\\x1d\\xc4\\xbe\\x2e\\xdd\\x13\\xe8\\x7b\\x64\\xd1\\xd1\\x66\\x31\\x14\\x57\\x3c\\xf5\\x8a\\x17\\x73\\x9f\\x46\\x3a\\x1c\\x3d\\x6b\\x21\\x23\\x39\\x01\\x83\\xb5\\x05\\xc8\\xee\\xff\\xb2\\x05\\x39\\xbd\\xfe\\xeb\\x40\\x77\\x6d\\x20\\xc4\\x59\\xba\\xc4\\x56\\x99\\x68\\xfc\\xaf\\xe4\\x4e\\xa4\\xcd\\x62\\x4a\\x84\\xbf\\xcc\\xd7\\x87\\x6d\\xd7\\xbf\\x55\\xf8\\x3a\\xc7\\x04\\x0e\\x30\\xf3\\x26\\xdc\\xe3\\x25\\x58\\x8e\\x1b\\xa5\\xbc\\x07\\x90\\x26\\x5d\\xfd\\xba\\x09\\x83\\x9e\\xef\\x57\\x16\\x41\\xe8\\xa1\\x23\\x4b\\x6c\\xfc\\x3a\\x36\\xa8\\x66\\xbd\\x6b\\x92\\xcd\\x71\\xec\\x74\\xe0\\xd4\\xde\\xb9\\xe7\\x4d\\x15\\x82\\x01\\xaa\\x50\\x2f\\x07\\xc8\\xba\\x34\\x8a\\xc2\\x6a\\xaf\\x9b\\x3d\\x07\\x0c\\x9a\\x40\\xb5\\x2a\\x44\\xe9\\x32\\x55\\x2b\\x67\\xa2\\xdf\\x05\\xa7\\xf0\\xf0\\x3c\\x61\\x7b\\x48\\xdc\\x27\\x82\\x36\\x6a\\x23\\x1e\\x0c\\x4e\\x39\\x38\\xa4\\x27\\x4b\\x36\\xaa\\x94\\x50\\xff\\x93\\x6b\\xe1\\x32\\xdc\\xb6\\x92\\x83\\x8d\\x65\\x4c\\x94\\x54\\x2c\\x6e\\x04\\x7a\\x7f\\x78\\xba\\x71\\x19\\x19\\xf9\\x08\\xa1\\x5b\\x30\\xb9\"},\n{{0x39,0x3d,0x44,0xdd,0x0d,0xed,0x71,0xfc,0x08,0x47,0x7b,0xd2,0x5e,0xd0,0xe6,0x62,0x9f,0xa7,0xf8,0x8f,0x08,0x2e,0xbc,0xef,0x09,0x18,0x98,0xe5,0xc9,0xe3,0xd5,0xb8,},{0xc5,0x2a,0x99,0x3b,0x80,0x2d,0x84,0x54,0x0d,0x27,0x54,0x79,0xa1,0xaf,0x5e,0x28,0x7d,0x19,0xea,0x13,0xb3,0x80,0xfa,0x30,0x68,0xd2,0xf2,0xc6,0x8e,0xb9,0x7a,0x09,},{0x84,0xc7,0x16,0xe6,0x0d,0xe6,0x7b,0x02,0x0c,0xc1,0xa6,0xa2,0x4e,0x65,0x49,0xfe,0x56,0xc6,0xd9,0x41,0xa8,0xed,0xea,0xe4,0x07,0x62,0x66,0x66,0xc3,0x1c,0xb6,0x0d,0xee,0x6b,0xe5,0xa7,0x1e,0xbd,0x76,0xba,0xf7,0x1b,0x75,0x11,0x4b,0xcc,0xfd,0x37,0xd1,0x63,0xa9,0x68,0xbb,0xee,0xc1,0xf7,0x69,0x72,0x15,0x12,0x96,0xc4,0x7e,0x07,},\"\\x14\\x2b\\x6e\\x82\\x50\\x13\\x62\\xd5\\x5a\\x04\\xb8\\x9d\\x54\\x1a\\x79\\x68\\x63\\xd7\\x78\\x38\\x40\\xd3\\x4c\\xbd\\xfc\\x51\\x6a\\x3c\\x84\\x77\\x2f\\x92\\x44\\x6f\\x5f\\x0d\\xf4\\xc4\\x5c\\x6e\\x0d\\xc8\\xec\\x1e\\x9b\\xb0\\xff\\x7e\\xc1\\x69\\x6a\\x09\\xcd\\x7a\\xe3\\x4c\\x10\\xf8\\xe6\\x1a\\x9a\\xca\\xbd\\x43\\x03\\xf0\\xa9\\x24\\x72\\x37\\x62\\x1c\\x49\\x0e\\x8d\\x9d\\x0f\\xe4\\x44\\x82\\xc5\\x60\\xd0\\x51\\xb8\\x2b\\x07\\x4a\\xc3\\xd8\\xe4\\x9b\\xb2\\xac\\x71\\x5a\\xc4\\xcd\\xe3\\xd4\\x70\\x9d\\x0e\\xa3\\xaf\\xc5\\x1b\\xfd\\xef\\x4b\\x65\\x67\\x71\\xfb\\xd5\\x5f\\x89\\xda\\x9f\\xa6\\xdc\\xaa\\x62\\xcb\\xae\\x56\\x12\\x08\\xd9\\x8c\\xfa\\x24\\xcb\\x81\\x25\\x2b\\x89\\x5f\\x6a\\x4a\\x92\\xc8\\xe4\\x07\\xaf\\x6c\\x1f\\x1e\\xf4\\x9d\\x8d\\xde\\x15\\x4f\\xbc\\xb1\\xca\\x45\\x7a\\x20\\x4b\\x5e\\xa5\\x43\\x2e\\x4d\\x71\\xfb\\x7e\\xb2\\x4d\\x43\\xf6\\xfe\\x25\\xe7\\xb4\\xc6\\x59\\xb0\\xee\\xbc\\x4c\\xbc\\xc8\\xb3\\xcf\\xde\\x07\\xc8\\xf0\\x7b\\x18\\xa5\\x15\\x70\\xe7\\x16\\x3e\\x33\\xb3\\x17\\xb6\\x13\\x60\\xf9\\xce\\x08\\xd9\\x5d\\xe2\\xc3\\x15\\x6a\\xf1\\xcc\\xc9\\xb5\\x5b\\xcf\\x81\\xea\\xbf\\x3c\\x40\\x43\\x40\\x46\\xbb\\xe8\\x2e\\x02\\x99\\x2a\\x2a\\xc8\\xb3\\xb4\\x25\\x68\\x0a\\x23\\xd9\\x34\\x72\\x6c\\xb1\\xb7\\xbf\\x26\\xce\\xb5\\x2a\\x39\\x02\\x2c\\x00\\xac\\xf4\\x25\\x25\\x71\\x67\\xb8\\x21\\x18\\x5f\\x68\\xe3\\xed\\x17\\x90\\x3d\\x8d\\x22\\x27\\x54\\x98\\xc3\\x9a\\x9e\\x8d\\xf8\\x84\\xec\\x00\\x55\\x8d\\xcf\\xa4\\x3b\\x8a\\x11\\x9c\\x2e\\x85\\x3b\\x9a\\x03\\x18\\xbb\\xea\\x08\\x7f\\x9c\\xec\\x17\\xca\\x49\\xb7\\x08\\x17\\xb8\\xd7\\xc1\\x70\\xa8\\x90\\x6f\\x3e\\xe9\\xe8\\xf8\\xcb\\x27\\xa1\\xd0\\xf5\\x75\\xab\\xfa\\x62\\x7e\\x88\\xf0\\x8c\\xa4\\xb9\\x3c\\x32\\x97\\xc4\\xf3\\x17\\x07\\x2f\\x42\\x1c\\x5e\\x60\\x2e\\x2f\\x83\\x1d\\xfb\\x82\\x55\\x1b\\xdc\\xe8\\xd7\\x12\\x16\\xf0\\x5c\\xf9\\xa2\\x77\\x3b\\x90\\xfc\\x93\\xb9\\xd8\\x55\\xa9\\x1e\\x35\\xad\\xe3\\x32\\xa5\\x06\\x1f\\xdb\\x82\\xb3\\x09\\xba\\xb4\\xf5\\x6e\\x2d\\x58\\x6a\\x84\\xc6\\x74\\x81\\xd1\\x90\\x2c\\x26\\x1b\\x3f\\x97\\xdc\\x30\\xb1\\x84\\x61\\x9d\\xf9\\xfd\\xfc\\x7a\\x32\\x9d\\x06\\x1a\\x41\\xdf\\x33\\x22\\x02\\x13\\x3d\\x8e\\xae\\xed\\xdb\\x4c\\xfc\\xee\\x53\\x53\\x6e\\x07\\xaa\\xd1\\x15\\x53\\xdc\\xf5\\xed\\x1e\\x94\\x9d\\x45\\x35\\x5f\\x9e\\xf4\\x2c\\x78\\x32\\xb0\\xde\\x7c\\x2f\\x15\\x26\\xfb\\xef\\x86\\xb6\\x36\\x49\\xb6\\xb8\\x5a\\xe5\\xca\\x86\\xf0\\xce\\xa6\\xdf\\x9c\\x12\\x6c\\x1d\\x79\\x48\\x9c\\xc3\\xbf\\xc6\\xe8\\xbf\\x03\\x46\\xeb\\x30\\xd0\\x16\\x43\\xc0\\x10\\x15\\x0c\\x5c\\x8d\\x0e\\xb5\\x01\\x0a\\x46\\x11\\x22\\x15\\x13\\x79\\x91\\x08\\x5e\\x57\\x49\\x3b\\x22\\xe8\\x35\\x26\\xb7\\xb1\\x72\\xc6\\xc7\\x34\\x1c\\x40\\x32\\x1e\\x9c\\xeb\\x7c\\x82\\xbf\\xba\\xa4\\x8f\\x3b\\xd8\\xf5\\x13\\x72\\xd9\\x6d\\x47\\x44\\x4f\\xf0\\xd8\\xbb\\x2e\\x5f\\xd2\\x65\\x14\\xeb\\x63\\x91\\x05\\xe3\\x38\\x95\\xfd\\xc4\\x1f\\x6d\\xf1\\xfb\\xfd\\xcb\\x08\\x46\\x6e\\xc2\\xd2\\x17\\xfc\\x99\\xfb\\x01\\x2f\\xe6\\x54\\x0c\\x0c\\x5a\\x59\\x66\\xed\\x3e\\x66\\xfa\\xb1\\x20\\x2a\\xb9\\xda\\xff\\xe8\\xe2\\x7e\\x8f\\x74\\x62\\x82\\x8d\\x66\\x26\\x59\\xea\\x3b\\x2c\\x60\\x8c\\xf6\\x8e\\x30\\xdb\\xac\\x62\\xff\\xd8\\x22\\x9f\\x4a\\x53\\xf5\\x9a\\xe1\\x68\\x33\\xb8\\x1a\\x15\\x91\\x61\\xf1\\x93\\x69\\xf6\\x0f\\x51\\xc4\\x3a\\x21\\x7e\\xfc\\x5e\\xfd\\x6a\\xb7\\xa9\\x1f\\xe2\\x49\\xc7\\xb8\\xa0\\xc1\\x4e\\x9f\\xae\\xa5\\x33\\xde\\x13\\x38\\x49\\xa9\\x24\\x47\\x67\\x6f\\x6c\\xc1\\x8b\\xef\\x4f\\xec\\x7f\\x37\\x31\\x97\\x59\\xce\\x80\\xea\\x3e\\xac\\x18\\xfa\\x2d\\x9f\\xa0\\x23\\x09\\xe1\\xce\\x93\\xac\\x6c\\xf4\\xcd\\x2c\\xb2\\xc9\\x5f\\x1e\\x2a\\xff\\x7b\\x2a\\x88\\x56\\x40\\x5a\\x7b\\x8e\\xba\\xbe\\xb4\\x90\\x6d\\x9b\\x97\\x34\\xda\\x9f\\xb5\\xe5\\xd3\\xf3\\x22\\xbb\\x5b\\x55\\x9f\\xa6\\x1e\\xc8\\xf5\\x15\\xdb\\x90\\x65\\xab\\x4b\\x91\\xa7\\xa3\\x1d\\x5c\\x62\\x50\\x61\\xc2\\xfd\\x2b\\xcf\\xe1\\x7f\\x94\\xbb\\xde\\x47\\x76\\x30\\x2b\\x8a\\xef\\x3d\\x5b\\x52\\xdb\\x3b\\xc7\\x3a\\xe4\\xa3\\x0c\\xc4\\x41\\x7a\\xcb\"},\n{{0x71,0x19,0x36,0x40,0xa0,0xa2,0xb2,0x2f,0xb2,0x2d,0x00,0xa8,0x0b,0x33,0xa5,0x51,0x4f,0x3d,0x10,0x00,0x03,0x4f,0xcc,0xd8,0x85,0xd8,0xea,0x86,0x38,0xf0,0xb0,0xf8,},{0xb1,0xd3,0x6f,0x72,0x3b,0x70,0x86,0xd9,0x23,0x11,0x9f,0x46,0x75,0x9b,0x39,0xfa,0x1e,0x40,0x38,0xc6,0x41,0x8c,0x37,0x9b,0xa9,0x8b,0x58,0x40,0xc7,0xea,0x50,0x68,},{0xa9,0x70,0x2a,0x33,0x95,0xac,0xd2,0x0d,0x75,0x43,0x73,0x09,0x5d,0xc6,0x14,0x45,0x58,0x4d,0x8e,0x57,0x10,0x80,0xe1,0x79,0xad,0xcb,0xa3,0x10,0x6b,0xb0,0x6a,0x7c,0xe4,0xd4,0x60,0xf1,0x26,0x1a,0xef,0x86,0x43,0xab,0x16,0x34,0xf4,0x7c,0x94,0x14,0xa3,0x2e,0x18,0x3a,0x32,0x76,0x91,0xe6,0x58,0x43,0xdd,0x6c,0x05,0x50,0x72,0x07,},\"\\xe0\\x28\\x79\\x48\\xbb\\x85\\xa3\\x98\\xe6\\xaf\\xfa\\x2d\\x25\\xfc\\xff\\x8b\\xdb\\x93\\x26\\xf5\\xd1\\x4f\\xde\\xb6\\x05\\x49\\xf5\\xfb\\xf0\\xc1\\x81\\x6f\\x11\\xcb\\xdd\\x4e\\x90\\xfe\\xa0\\x39\\xdc\\xa6\\x0f\\xaa\\xd1\\x69\\x60\\x03\\xf9\\x15\\x15\\xc9\\xb2\\x72\\x88\\x2c\\x95\\xc9\\xa4\\xab\\x6e\\x27\\x77\\xbd\\x92\\x7e\\x7d\\x84\\x42\\xae\\xa6\\xce\\xa6\\x19\\xc9\\xb1\\x52\\x55\\xfe\\xd6\\x12\\xb5\\xcc\\x31\\x58\\xfc\\x70\\x5b\\xb7\\xa5\\x06\\xf4\\xaf\\xec\\xf4\\xe3\\x4e\\xd5\\x17\\xb2\\xc1\\x2b\\x83\\x62\\x61\\x0e\\x5e\\xa2\\x70\\x48\\x5c\\xcc\\xb3\\xc9\\xaa\\x97\\xec\\xd6\\xcb\\x19\\x63\\x09\\x00\\xf0\\x7d\\x94\\xcb\\x29\\x3c\\xb6\\xe0\\x89\\xa9\\xa7\\x7c\\x01\\x94\\x07\\x3a\\x7f\\x71\\x77\\xb0\\x23\\x0d\\x25\\x76\\x3a\\x2e\\xf9\\x8d\\x47\\x70\\x4c\\xb2\\xc3\\xaf\\x4c\\x3c\\x1b\\x49\\x56\\x31\\xb4\\xa5\\xb2\\x1b\\x2e\\x56\\xbf\\xf2\\xed\\xe0\\x3e\\xa4\\xfe\\x7c\\xf8\\x29\\x17\\x34\\x7e\\x3a\\x9d\\x4d\\xbe\\xef\\x37\\xd1\\xcf\\x17\\x61\\x5a\\xda\\xa0\\xfd\\x17\\x05\\x79\\x69\\x91\\x7d\\x47\\x8d\\x03\\xcc\\xd8\\xf8\\xb8\\x8e\\x5e\\x5a\\xca\\xe6\\x73\\x2a\\x81\\x61\\xdf\\xb5\\xf7\\xd0\\x21\\x23\\xc8\\xd5\\xa5\\x65\\xcf\\x4d\\xd9\\x8d\\xfc\\x9a\\xaf\\x5a\\x33\\x50\\x58\\xa9\\x41\\xca\\x43\\x07\\x3f\\x26\\x59\\x61\\x5a\\x72\\xfe\\x78\\xc1\\x01\\xc4\\x1a\\xed\\x07\\xf3\\xbc\\xf9\\x80\\xb0\\xa5\\xb3\\xfb\\xaf\\xdb\\xbe\\xa9\\x2f\\xd8\\x89\\xcf\\xd5\\x3d\\x40\\x32\\x78\\xbc\\x15\\xa5\\x9a\\xa1\\x40\\xc2\\xd7\\x73\\xb8\\x88\\x9b\\x96\\x3d\\xce\\xa3\\x65\\x36\\x2e\\x42\\x6e\\xf4\\x60\\x98\\x45\\xc9\\xbc\\xe9\\xf8\\xae\\xb5\\x91\\xd1\\xa4\\x69\\xb0\\x72\\xb4\\x12\\x09\\xf5\\xa8\\xb6\\xdc\\x23\\x95\\xad\\x90\\x60\\xeb\\x2e\\x37\\x09\\x78\\xae\\x33\\x11\\xd1\\xcf\\x0a\\x8f\\x20\\x51\\x42\\xd4\\x36\\xba\\xb6\\xb9\\x59\\x43\\xa9\\x7c\\x23\\xe6\\x1b\\xd1\\x4b\\x2d\\x95\\x67\\x2c\\xb9\\x32\\x5e\\x9a\\xb1\\xfc\\x9e\\xee\\xaa\\xcc\\xd5\\x8b\\x9f\\x4a\\xc1\\x55\\x0b\\xde\\xc8\\x44\\x9b\\x03\\x60\\x39\\x49\\x6c\\x5f\\x07\\xa5\\xed\\x64\\xd5\\xd8\\x51\\x71\\x69\\x01\\x44\\xdb\\x5c\\x81\\xc8\\x1c\\xbc\\x4c\\x16\\x71\\x8d\\x52\\xc4\\xdf\\xd1\\x95\\x8c\\xa5\\xc9\\xc8\\xba\\x58\\x2c\\xd9\\xd7\\x06\\xf2\\x7a\\x74\\x74\\x4c\\x3a\\x05\\xbf\\x1c\\xcd\\x51\\xf1\\x09\\x20\\x10\\xd3\\x6f\\x15\\x78\\xb5\\x78\\xae\\x0e\\x9f\\xfa\\x47\\x07\\x90\\x55\\xef\\x94\\xfa\\xbc\\x9f\\xf7\\x2f\\x73\\x8b\\xef\\x68\\x46\\x1e\\xb3\\x40\\x4c\\xce\\xe9\\x53\\xf5\\xee\\x86\\x4c\\x97\\x4c\\xe7\\x0e\\x90\\x37\\xe3\\x38\\x8f\\xba\\xf2\\x88\\x9e\\x13\\x66\\xca\\xa0\\xf6\\x51\\xe2\\x1b\\x33\\x9e\\x3d\\x56\\xb9\\xd9\\x5a\\xc3\\x0b\\x35\\x92\\xa9\\x48\\x91\\x2c\\x90\\xbf\\x54\\x47\\x3c\\xeb\\xc4\\x67\\xb0\\x9a\\x39\\x43\\xdc\\xac\\x48\\x68\\xac\\xb5\\xb3\\x5e\\xa6\\x91\\xef\\xf4\\xd8\\xcc\\x1c\\xda\\x0c\\x6c\\x0a\\x9c\\x16\\x9a\\x4e\\xe1\\x00\\x41\\xf3\\x5f\\x43\\x3f\\xb5\\x3d\\x26\\x06\\x7b\\x29\\x10\\x56\\xb1\\xda\\x69\\xff\\x46\\xfb\\xea\\x1c\\xa7\\x21\\x36\\x59\\xa9\\x90\\xd5\\xd5\\xdf\\x14\\x06\\xb0\\x93\\xda\\x2a\\x33\\xc8\\xdf\\x95\\xab\\x3c\\xe8\\x11\\xaf\\xb9\\xc9\\x8c\\x5b\\xfd\\x7c\\x4e\\x98\\x1b\\x3e\\xa9\\x4e\\xef\\xd2\\xe2\\xfe\\x95\\x70\\x7d\\x89\\xf3\\x07\\xfa\\x76\\x82\\x8b\\x5c\\x67\\x74\\x95\\x0a\\xee\\x80\\x62\\x67\\x14\\x25\\x6e\\x19\\x7d\\xc7\\xda\\x97\\x21\\x58\\xc7\\x68\\xbb\\xee\\x7f\\xbd\\x16\\x9e\\xc1\\x5b\\x4b\\xb7\\xbe\\x72\\x97\\x6d\\xbe\\xd3\\xe5\\x12\\x76\\x6e\\xf2\\x2e\\xf3\\xb8\\x12\\xbc\\xac\\x4a\\xa3\\x11\\x5a\\xfe\\x83\\xd3\\x12\\x84\\xaf\\x8e\\xac\\xea\\x4e\\xe4\\x9a\\xfd\\x42\\xd9\\xc4\\x4f\\xff\\x2d\\x86\\x1c\\x08\\x62\\x9b\\x55\\xda\\xe0\\x0f\\xf6\\x74\\xfb\\x02\\x8e\\x73\\x8b\\x05\\xdc\\xb3\\x8a\\xea\\xa6\\x96\\x3c\\xc3\\xfa\\xaf\\xc7\\xb6\\x92\\x45\\xa2\\xa1\\x22\\xa9\\x6d\\xd2\\xf0\\x3a\\x82\\x4d\\x72\\xb0\\xfe\\x0d\\xd7\\x98\\xdf\\x5c\\x4b\\xb7\\x5a\\x87\\x32\\x4e\\x76\\x4a\\x50\\xa5\\xff\\x52\\x54\\x7a\\xda\\x8f\\x8f\\x88\\xe6\\xf3\\x8a\\xee\\x49\\xd5\\x8d\\xdb\\x01\\x26\\x48\\x85\\x4c\\xd5\\x9d\\x0e\\xc9\\x7b\\xc3\\xd5\\x8d\\x0a\\xd4\\x49\\x1f\\x08\\x59\\x07\\x67\\xce\\xb1\"},\n{{0xbf,0xc9,0x62,0x6c,0x91,0xf3,0x48,0xfd,0xaf,0x46,0x9d,0xef,0x23,0x02,0xe9,0xe3,0x8f,0x90,0x51,0xe7,0x34,0x9e,0x48,0xf8,0x50,0xcf,0x35,0x2a,0x83,0x31,0xa2,0x8b,},{0x4e,0x81,0x93,0x06,0x1c,0x9d,0x65,0xa8,0x2b,0xcb,0x25,0xda,0x08,0x9b,0x4a,0x80,0xba,0x41,0xb3,0xdd,0x2f,0x8e,0xd1,0xdc,0x81,0xe1,0xcf,0xd0,0x3c,0x84,0x91,0x15,},{0x66,0x02,0x42,0xc1,0xdc,0xf3,0x29,0x13,0x69,0xc6,0x5c,0x9d,0x7f,0x89,0x87,0x2e,0xab,0x48,0x22,0x00,0xe3,0x44,0xb2,0x96,0xe3,0x36,0xa0,0xa2,0xe6,0x31,0xfa,0x79,0x60,0x24,0xb6,0xe1,0x11,0x9c,0x27,0xd5,0x22,0x64,0xa4,0x98,0x15,0xdd,0x78,0x19,0x27,0xa7,0xdf,0x46,0x7e,0x88,0xb8,0x01,0xe6,0x84,0xfc,0x60,0x22,0x96,0x25,0x0e,},\"\\x2f\\x11\\xf4\\x0b\\x2a\\x19\\xf6\\x40\\xc0\\x04\\x4c\\x7b\\x13\\x96\\x80\\xc3\\xc3\\xb6\\x9f\\x00\\xff\\x9f\\x6a\\x41\\x86\\xfd\\x7d\\xed\\x56\\x9c\\x1d\\x8c\\x57\\x20\\xf1\\x9d\\xd3\\x5c\\x78\\x16\\xd0\\x8a\\x94\\xc0\\x82\\x04\\xe4\\x76\\x43\\xe2\\x64\\xd4\\x25\\xe2\\x1c\\xef\\xb8\\x31\\x29\\xc9\\x09\\xa3\\xd7\\x8c\\xaf\\x72\\xc4\\x6b\\xf1\\xa7\\x29\\x76\\x5e\\xf4\\xb8\\xca\\x80\\x3f\\xda\\xf8\\x05\\x2f\\xfc\\x6c\\xc4\\xa6\\xb5\\x79\\xa1\\x60\\xb7\\x03\\xb1\\x53\\x55\\xc6\\xfc\\xd3\\xb9\\xa2\\xec\\xbc\\x26\\x7e\\x60\\xdd\\x59\\xf6\\xa2\\xb1\\x94\\x20\\xe5\\x57\\x27\\xa8\\x0b\\x0b\\xb6\\x41\\x67\\xc8\\x3b\\xa0\\xc8\\x05\\xde\\xed\\x49\\x1d\\x93\\xe7\\x23\\xf3\\xb4\\x32\\x63\\xd1\\x74\\x20\\xb8\\x5b\\xe8\\x6c\\x16\\x5c\\x55\\x27\\x79\\xdb\\x96\\x0e\\x0a\\xa9\\xeb\\x4d\\x9f\\x3a\\x16\\x4a\\x5a\\x21\\xfa\\xb3\\xf5\\x09\\xa8\\xf0\\x19\\x9a\\x69\\x43\\xc4\\xb2\\x23\\xcf\\x9d\\xac\\xa7\\xe1\\x10\\xe0\\x56\\xa8\\x1d\\x9c\\xe0\\xe0\\xc0\\x2a\\xc2\\x65\\xee\\xac\\x05\\xec\\xd8\\x44\\x48\\x46\\x8a\\x4d\\x12\\x2b\\x87\\xa3\\xe0\\x4c\\x28\\x37\\xe4\\x3d\\x21\\x27\\x04\\xfd\\x41\\xe7\\xf3\\xd1\\x98\\xa2\\xe7\\x6b\\xec\\xa0\\xe7\\x02\\x9c\\x43\\x2a\\x06\\x54\\xec\\xd4\\x4f\\x98\\x4c\\x5d\\xf0\\x67\\x41\\x96\\x4d\\x83\\x72\\xc8\\x6e\\x16\\x2a\\x8c\\x54\\x18\\x84\\x9b\\x41\\xe5\\x71\\xfe\\xb8\\x3e\\xb4\\x2f\\xbb\\xcd\\xdb\\x8a\\x08\\x21\\x43\\x90\\x9e\\xaa\\x50\\x12\\xb9\\x79\\x93\\x1d\\xc7\\xe3\\xcc\\xcb\\x44\\xc7\\x91\\xe0\\x4b\\x80\\x65\\xee\\x63\\xf0\\x56\\x1d\\xa1\\xbb\\xf3\\x7b\\xf6\\x50\\x34\\x77\\x87\\x9c\\xfb\\xaf\\x6d\\x9d\\x7d\\x9a\\x74\\x75\\x55\\x3f\\x53\\x53\\x5f\\x84\\x7a\\x76\\xdc\\x3b\\x2b\\x7a\\x3d\\x1d\\x47\\x0b\\xbe\\x17\\x12\\x4a\\x88\\xe0\\x3f\\xe9\\x94\\xba\\x10\\xc2\\x42\\x21\\xe3\\x9e\\x3d\\x0f\\xf5\\x3c\\x79\\xe2\\xfa\\xaf\\xa1\\x90\\x12\\xd5\\xef\\x19\\x2b\\xc6\\xd5\\x26\\x0b\\x66\\xf9\\x97\\xb6\\x44\\xcf\\x48\\xd9\\x9f\\x38\\x99\\xd7\\xc4\\x85\\xe6\\x84\\xaa\\x1e\\x6e\\x30\\x85\\x5c\\xf7\\x5c\\x2d\\x80\\xc7\\xa3\\xee\\x43\\x54\\xfe\\x13\\xc6\\x76\\x09\\x1c\\x86\\x67\\x37\\x3d\\x30\\xe6\\x0f\\xf8\\xe0\\x9f\\xed\\xef\\x17\\x5a\\x1a\\x87\\x39\\x5f\\xef\\xa0\\x72\\x2b\\xf6\\xc0\\x1c\\x65\\x55\\xcf\\xf0\\x68\\x89\\x2a\\xfe\\x94\\x86\\xcb\\x1f\\xcc\\x5f\\xb6\\x64\\x1e\\x82\\xd8\\x70\\x79\\xba\\x5d\\x7a\\x9c\\x13\\x93\\x55\\xd6\\xc1\\x4c\\x50\\x7d\\xbd\\x59\\x47\\x24\\xb5\\x53\\x51\\x10\\x09\\x65\\xbe\\x9e\\x5d\\xbf\\xa7\\x70\\x88\\x78\\xc4\\xb2\\x9f\\x4d\\x54\\xc2\\x17\\x74\\x6e\\x32\\x6a\\xb2\\xa5\\x4f\\x99\\xb8\\x81\\xd7\\xda\\x5b\\x11\\xed\\xb0\\x8a\\x6d\\x79\\xd8\\x85\\x69\\x1b\\x1f\\x70\\x85\\x51\\x73\\x10\\xb3\\x09\\xcf\\x9b\\x1b\\x71\\x4a\\xab\\xc5\\xc1\\x7a\\x50\\x9b\\x14\\x0b\\x89\\xb3\\xf9\\xdc\\xee\\x50\\xca\\xb4\\x41\\xbf\\x5a\\xd3\\xbb\\xc2\\x99\\x90\\xf6\\x27\\x40\\x61\\x70\\xa7\\xa1\\x0f\\x2d\\x47\\xdf\\xc9\\x25\\x61\\x54\\xf9\\x62\\x30\\x8e\\x76\\x9a\\x2a\\xb1\\xb2\\xa0\\x0e\\x27\\xe3\\x27\\xf0\\xd1\\xfa\\x16\\x4d\\x1e\\x38\\xea\\xd5\\xce\\xaa\\xe2\\x38\\xba\\x52\\x6f\\x54\\xb8\\x1b\\x45\\xde\\xa6\\xc8\\x97\\x41\\x86\\xb1\\xb6\\x72\\x5f\\xa4\\xc8\\x3e\\x62\\xf3\\xe2\\x54\\xf7\\x29\\x87\\x1b\\xda\\x4d\\xc4\\x44\\xbc\\xe7\\x8f\\x09\\x03\\xfa\\x31\\x8e\\xaa\\xc8\\x22\\xa9\\x55\\x32\\xab\\x01\\x9e\\x9c\\xfc\\x56\\x19\\xe2\\xc2\\x06\\x7f\\x25\\x8f\\x43\\x75\\xd2\\xe0\\x22\\x2e\\xa5\\xbf\\x96\\xa2\\x53\\xa2\\xa3\\xfa\\x9e\\xea\\x02\\xc3\\xee\\xcc\\xb0\\x28\\xc7\\x6b\\xc6\\x0d\\x38\\x29\\x8b\\x95\\xb9\\xaf\\xe6\\x60\\x31\\xb1\\xa2\\xa2\\x61\\x52\\xfd\\xaa\\x7e\\xf4\\xf8\\x37\\xab\\xb5\\x11\\x85\\xdf\\x8b\\x2e\\xf8\\x5a\\xd2\\xc9\\xbe\\x6d\\xfb\\xa7\\x5e\\x37\\xdc\\x7d\\x12\\xe1\\x78\\x7f\\xc5\\x5f\\x86\\x6f\\xd0\\x66\\xf1\\x22\\x91\\xdf\\xf1\\x97\\x6a\\xfc\\x10\\xda\\x91\\x31\\x01\\xe7\\x04\\x95\\xd8\\x78\\x33\\x48\\xd6\\x11\\xb0\\x11\\xec\\x67\\x1c\\x0d\\xa7\\x37\\xbf\\x96\\x2c\\xdc\\xc9\\xe4\\xa8\\x00\\xb5\\x13\\x93\\x5a\\x56\\xd0\\x84\\xea\\x64\\xa7\\xd4\\xe8\\xe9\\x9e\\xe9\\x44\\x0a\\x73\\x61\\x32\\xe4\\x2c\\x90\\x95\\x03\\xc2\\x22\\x4a\\x14\\x1b\\x25\\xce\"},\n{{0x39,0x3b,0x76,0x94,0x82,0x37,0x5b,0x82,0x14,0x27,0xa6,0x6d,0x16,0xe4,0xf5,0x51,0x85,0xb7,0xa3,0xb7,0x33,0x8f,0x1a,0x06,0xf6,0x7c,0xdf,0xa7,0xe3,0x5c,0x54,0x1c,},{0x84,0xaf,0xd7,0x06,0x78,0xff,0xa8,0x5a,0x9f,0x65,0x74,0xcb,0xcf,0xe3,0xb1,0x5d,0x04,0xa9,0xfd,0x15,0x01,0x6f,0xf8,0x55,0x0a,0x98,0x7c,0x4b,0x95,0x1c,0x71,0x22,},{0x31,0xf9,0x8c,0x0a,0x08,0xfd,0xa8,0xe7,0x35,0xb5,0x73,0x66,0xaa,0x1b,0x83,0xb9,0x3d,0xae,0x63,0xb5,0x81,0x0c,0x82,0x1d,0x99,0xcb,0x39,0xdf,0x52,0x1f,0xea,0xc0,0x7f,0x3c,0x41,0x0b,0x27,0xba,0x33,0x07,0x75,0x7d,0x60,0x49,0xf2,0x24,0x54,0xfb,0x6d,0xe9,0xe2,0xc3,0xc2,0x43,0x8d,0x68,0x31,0x90,0x97,0xd1,0x12,0xcf,0xdb,0x07,},\"\\x8a\\xe8\\x05\\x3e\\x03\\xbe\\xbe\\xae\\x54\\x40\\x43\\xb8\\x41\\x4b\\x38\\x53\\x64\\xad\\xd1\\x67\\x37\\x37\\xcf\\x8a\\xb2\\x01\\x93\\xd4\\xaa\\xbc\\x8a\\x78\\xe1\\xd6\\x9b\\x9c\\x7e\\x52\\x72\\x9e\\x69\\x30\\x78\\x06\\xe9\\x27\\xce\\x38\\x07\\xb0\\x7c\\x68\\xc8\\x33\\xc4\\xfc\\xf1\\x6d\\xb1\\x5e\\x7d\\xce\\x60\\x4d\\x17\\x98\\x91\\x5f\\xd4\\x21\\x16\\x89\\xb4\\x86\\x46\\x42\\x50\\x2d\\x38\\xe9\\x1b\\x19\\x97\\xb7\\x18\\x23\\x31\\x8b\\x69\\xab\\xe5\\xbe\\xd6\\xf5\\xe3\\x01\\x5b\\xfb\\x22\\xdf\\x30\\xdb\\x37\\x1f\\x22\\x60\\xc5\\xc2\\x2e\\xba\\x60\\xdf\\x39\\xb3\\xed\\xd3\\xc4\\xd7\\xa1\\xe1\\x11\\xcd\\x9b\\x8a\\xa4\\x6f\\x67\\xbd\\x0c\\xf3\\xa7\\x17\\xaf\\x06\\xec\\x0c\\xe5\\x67\\x02\\x8e\\x06\\xe4\\x79\\x79\\x34\\xad\\x69\\xb1\\xf5\\xbe\\x44\\x0f\\xf3\\x7a\\x8a\\x03\\x4b\\x15\\x33\\xfa\\x94\\x64\\x24\\xac\\x59\\x54\\x00\\xad\\x27\\xd3\\xbe\\x76\\xdc\\x89\\xba\\x9d\\x6c\\x49\\x93\\x9a\\x09\\xf2\\xe4\\x01\\xc8\\xf2\\x0f\\x7f\\x7b\\x4b\\x9e\\x63\\xb9\\xd5\\x52\\x01\\x53\\x4a\\xb4\\xcc\\x7b\\xe8\\x85\\xf0\\x43\\x2a\\x2c\\x66\\x73\\xd2\\xe7\\x65\\x19\\x4d\\xff\\xd9\\xb6\\x09\\x6d\\xd2\\xb2\\x84\\x39\\x18\\x75\\x09\\x59\\xa8\\xdd\\xe4\\xa3\\xab\\x40\\x7e\\xb2\\xf7\\xe1\\xa4\\x9c\\x25\\x97\\xe3\\x08\\x05\\xf8\\x48\\x0d\\xd0\\xcc\\x82\\x72\\xa3\\x20\\xc0\\x0a\\xa2\\xb2\\x10\\xf5\\x76\\xe4\\x25\\x77\\xd3\\xaa\\x41\\x97\\x03\\x69\\x7c\\xa4\\x06\\xd4\\x3a\\x1a\\x4f\\x99\\xb0\\x73\\x36\\x64\\xf6\\xd6\\xb2\\x40\\x3c\\xba\\x1b\\xdc\\xc5\\x1f\\x54\\x1c\\xf2\\x42\\x36\\x07\\x05\\x70\\x54\\x07\\x55\\xc7\\xa8\\x63\\x1f\\xcc\\x2f\\x18\\x93\\x8f\\xa1\\x1b\\xc2\\x91\\x15\\x5b\\x39\\xd7\\xa7\\x62\\xa1\\xff\\x4d\\xca\\x97\\xb4\\x48\\xf7\\x0e\\x2d\\x3d\\xe4\\x47\\xcb\\x08\\xf9\\x18\\xea\\x20\\xcb\\x43\\x3f\\xa1\\x15\\xe3\\x08\\x80\\xc9\\x6c\\x8c\\xf5\\xf0\\xeb\\xbc\\xf4\\x82\\x30\\x9d\\xb6\\xdc\\x1f\\xb6\\x4e\\x17\\xc0\\x4d\\x7c\\xdf\\x7a\\x90\\xf4\\x01\\x4d\\x15\\xae\\x76\\x96\\xb4\\x44\\x23\\xb0\\xba\\x08\\x4e\\xed\\x4d\\x3f\\xb2\\x8c\\x1e\\xfb\\x39\\x82\\x8a\\xca\\x2f\\x40\\xca\\x6d\\xf3\\x42\\xc2\\x0e\\x95\\xf8\\x00\\x6b\\x27\\x67\\xa8\\x3f\\x50\\xc3\\x1f\\xcc\\x15\\x81\\xa0\\x97\\x53\\xe7\\x82\\x91\\xf0\\xd9\\x93\\x1d\\x99\\x2a\\xd3\\x60\\x44\\x73\\xce\\xb8\\x85\\xec\\xbe\\x78\\x57\\xcc\\x52\\xad\\x55\\x85\\x33\\x4d\\x14\\x85\\xd0\\x22\\xe1\\x06\\xb7\\x1c\\x29\\xbd\\xfc\\xf2\\x3e\\xe8\\xa4\\x75\\xdf\\x2c\\x09\\x05\\x32\\x35\\x6a\\x6f\\xfc\\x02\\x23\\x23\\x17\\x98\\x8a\\x2c\\xbc\\xfb\\xc2\\xa3\\x6b\\x4b\\x48\\x3c\\xb4\\x45\\x10\\xe8\\x55\\x99\\xb6\\x12\\x59\\x6b\\x62\\x65\\x72\\xb0\\x99\\x6d\\x8a\\x61\\xc0\\xee\\x3e\\xff\\xf1\\xf7\\xc7\\x1c\\x05\\xfb\\x5a\\x8d\\x8c\\x5d\\x09\\xd9\\x24\\xeb\\xaa\\xc8\\x80\\x04\\x51\\xc9\\xdb\\x24\\x56\\x71\\x0a\\x27\\x9d\\xfe\\x2d\\x22\\xf6\\xae\\xa9\\xde\\x31\\x80\\x1d\\xc7\\x42\\x53\\x43\\x62\\xb0\\xe8\\x10\\xe9\\x9e\\x84\\x1d\\xbb\\x7f\\x0c\\xf9\\xaf\\x1a\\xef\\x54\\x2a\\x52\\xc7\\x76\\xcc\\x51\\xf2\\x87\\x36\\x8f\\xbe\\x6a\\xd6\\x51\\xfa\\xd5\\x78\\x7e\\xf7\\x7c\\x73\\x53\\x5f\\x3d\\xfb\\x36\\x18\\xcc\\x8f\\x0d\\xbb\\x54\\x9d\\xdc\\xa9\\xb9\\xbf\\x91\\x13\\x5a\\x34\\x56\\x00\\x1a\\x46\\x21\\x5a\\xde\\x38\\x8e\\x7c\\xeb\\x9f\\xcd\\xfd\\x0d\\x2d\\x0a\\x03\\x56\\xaf\\xbe\\x2c\\xec\\x1c\\x2e\\x78\\xb4\\xd9\\x98\\xd4\\x55\\x4f\\x46\\x21\\xf1\\x15\\x1d\\xd3\\xff\\xd3\\xba\\x4c\\x0b\\xc8\\x52\\xf3\\x11\\x75\\x8c\\x5d\\xca\\x42\\x5d\\x18\\xba\\x15\\xa8\\xd6\\x7c\\xa4\\x01\\xd0\\xe6\\xcf\\x28\\x0c\\xb8\\x83\\x84\\xa2\\xda\\xd4\\x9f\\xae\\x39\\xba\\x2a\\x77\\xb4\\x67\\xb3\\x23\\x8a\\xa2\\x8c\\xfd\\x13\\x7e\\x5c\\x5c\\x0f\\xf9\\x00\\x0f\\x8b\\x06\\xa2\\x19\\x2e\\x16\\x29\\x20\\x69\\x22\\x65\\xdb\\x24\\xab\\x6a\\xed\\xe5\\x35\\xe3\\x1c\\x20\\x93\\xbe\\x57\\xeb\\xf8\\x80\\x5d\\xf1\\x78\\x89\\x14\\xf3\\xa8\\x84\\xf8\\x84\\x17\\x90\\x15\\x80\\x8d\\xb4\\xd3\\x02\\x0f\\x3e\\x78\\xbc\\x34\\x28\\x5d\\x23\\x37\\x62\\xe8\\x99\\xeb\\xff\\x28\\x42\\x82\\x15\\xe2\\x44\\x40\\x4d\\xe2\\x91\\x72\\x8f\\xbf\\x41\\x24\\xce\\x5b\\x24\\x35\\x26\\x0a\\x8e\\x34\\x11\\x80\\x07\\x5a\\x56\\x51\\xe6\"},\n{{0x26,0xcb,0xc2,0x51,0x0e,0xe6,0xea,0x39,0x0a,0x2c,0xb9,0x48,0xa0,0x15,0xd1,0x31,0xab,0xf4,0xc0,0x95,0x49,0x15,0x62,0x0b,0x78,0x16,0xae,0xcf,0x4e,0x11,0xda,0x6d,},{0x14,0x5e,0x8d,0xd2,0x2b,0x44,0x00,0x28,0x9d,0xaf,0xb6,0x26,0xd9,0x5a,0x94,0xc2,0xf3,0xb6,0x9c,0x65,0x19,0x77,0x17,0xcb,0xdc,0xd8,0x50,0x98,0xc5,0x49,0x21,0x07,},{0x67,0x10,0xd0,0xdd,0x00,0x54,0x5b,0x44,0x4c,0xf7,0x14,0xb7,0x91,0x44,0xfe,0x79,0xf3,0x8c,0xb1,0xc0,0xf5,0xb7,0x42,0x48,0xd4,0xf0,0x1f,0xe3,0x60,0x11,0x7a,0x26,0xff,0xed,0x4a,0x3b,0xf2,0x13,0x23,0xb2,0x8a,0x39,0x3a,0xe9,0xde,0xe0,0x7d,0x69,0xe5,0x83,0xe3,0x16,0xc6,0xa5,0x73,0xd3,0x7c,0x64,0x4a,0x8d,0x62,0xc4,0x05,0x06,},\"\\x9c\\xeb\\xe2\\x4b\\x4f\\x8a\\xde\\x86\\x43\\x0e\\x27\\x9a\\x3c\\x43\\x3e\\x4a\\xe1\\x7e\\x00\\x88\\x52\\xa2\\x4f\\x08\\x69\\x0c\\xbc\\x3d\\x75\\xe3\\xb7\\xf2\\x00\\xda\\x89\\x7c\\x25\\xf7\\x48\\x3b\\x37\\x63\\x7d\\x4b\\xc1\\x10\\x08\\xd9\\x22\\x4c\\xd5\\x81\\xfb\\xc0\\x38\\xad\\xad\\xa0\\x2d\\x27\\x1e\\xd2\\xa5\\xd2\\x85\\xd8\\x43\\xa0\\xf8\\xb7\\x9e\\x37\\x94\\x5d\\xc3\\x5b\\xc2\\x64\\xbe\\xcd\\x80\\x43\\x07\\xe1\\xd4\\x42\\x18\\xa6\\x43\\xe4\\xb5\\x9a\\x93\\x11\\xde\\x98\\x5d\\x24\\xb4\\xc2\\x6f\\xb1\\x46\\x03\\xbe\\x5d\\xba\\x18\\x39\\xee\\x0c\\x8d\\x2e\\xde\\x6c\\xb5\\x0a\\xf6\\x7c\\x80\\x45\\x19\\x03\\x7b\\x1b\\x16\\x63\\x31\\x8c\\xfc\\x6e\\x75\\xd0\\xf0\\x51\\xdb\\xb5\\xd3\\xea\\xf3\\xaa\\xd1\\xf7\\x8e\\xf0\\xcf\\xf4\\x8d\\x5c\\x55\\xb2\\xfd\\x25\\xdb\\x15\\x39\\xd0\\xf0\\x2d\\xae\\x9f\\x25\\x14\\x8a\\x8d\\x33\\x8b\\x97\\x87\\x9b\\xbd\\x39\\xdf\\x96\\x1a\\xa2\\xc3\\x96\\x31\\x5a\\x2a\\x86\\xcc\\x78\\x35\\x81\\xe6\\x7e\\xa8\\x44\\xac\\xfe\\x86\\x45\\x42\\x8a\\x27\\xb8\\xd3\\x2e\\xa3\\x06\\x4e\\x3b\\xf6\\x2d\\xcf\\x58\\x01\\x0e\\xc4\\x34\\x88\\x62\\xfa\\xc2\\x5e\\x3d\\x9f\\xcd\\x4e\\x5d\\x65\\xbe\\x59\\x90\\x5d\\x81\\x6d\\xfb\\x96\\x49\\x92\\xba\\x7a\\xce\\xef\\x8c\\x20\\x75\\xa3\\x12\\xe5\\xff\\xc4\\xf9\\x53\\x0e\\xa2\\x0f\\x77\\xf9\\x3e\\x81\\xcf\\x8a\\x01\\x9d\\xc3\\x94\\x56\\x34\\x36\\x4b\\xab\\xf7\\x97\\x72\\x04\\x5a\\x0d\\xba\\xa7\\x7c\\x47\\xa2\\x2b\\x77\\x22\\x3b\\x70\\x4d\\xeb\\xd2\\xd0\\x03\\xf6\\xa5\\xc7\\xbf\\x6b\\x19\\xcd\\x2c\\x49\\xb6\\x14\\xfd\\x4d\\x47\\xfd\\x25\\x1f\\xe6\\x22\\xcb\\x98\\x17\\x85\\xc1\\x46\\xbd\\xb7\\xc1\\xd2\\xea\\x02\\xb1\\x16\\x92\\x3b\\xf9\\x8a\\x1a\\xfb\\xb7\\x85\\x8a\\xdf\\x2d\\xf9\\x38\\xa7\\x90\\xec\\x1f\\x90\\x74\\xad\\xb8\\xd1\\xaf\\xb5\\x63\\x3f\\xa9\\x61\\xa8\\x47\\x64\\x01\\x0d\\x3b\\xde\\xd1\\xc0\\x33\\xd2\\x5a\\xbd\\xb4\\xb0\\x0f\\xb0\\x5e\\xd7\\x64\\x0f\\xae\\x61\\x87\\x9d\\xf8\\x8f\\x0b\\x09\\xe3\\xab\\xd0\\x57\\xb9\\xa5\\x21\\x08\\xa9\\xbc\\x98\\x5f\\xb7\\x3a\\x5f\\x29\\xd8\\x4d\\x1c\\xa6\\x92\\x1b\\x62\\xf1\\xb7\\x03\\xc7\\xee\\xb4\\x81\\x5d\\x9d\\xd6\\xd0\\x66\\x73\\x8d\\xb1\\x18\\xba\\xf6\\x1b\\x04\\x22\\xf3\\x88\\xf1\\xbf\\xc9\\xe3\\xa9\\xbe\\xd8\\x3a\\x1a\\x72\\x7d\\xcc\\x26\\x6a\\x99\\x88\\x36\\x48\\x46\\x80\\x7f\\x4d\\x55\\x18\\xbc\\x2e\\xdd\\x0e\\xcb\\x34\\x13\\xc2\\x6f\\xd0\\xc7\\x9b\\x75\\xd8\\xcb\\x5b\\xcd\\x85\\xc0\\x6f\\xcc\\xea\\x4d\\x03\\xfb\\x89\\x88\\xdf\\xf3\\xed\\x0c\\xc9\\xdb\\xae\\x78\\xd6\\xae\\x8d\\x5f\\xc4\\x02\\x46\\x17\\xa2\\x3f\\x52\\xbd\\x61\\x53\\x85\\xd4\\xee\\xe0\\x8f\\x91\\x34\\xeb\\x3b\\x25\\x0c\\x8f\\x82\\x2b\\x47\\xd9\\x1e\\x8c\\x4d\\x4c\\x29\\x29\\x80\\x16\\xe6\\xfc\\x81\\xf1\\xf1\\x09\\x92\\x53\\xd7\\x94\\x5e\\x07\\x98\\x95\\x5d\\xa0\\xdd\\xe1\\x4e\\xbb\\x93\\x4e\\xcf\\xae\\xea\\xba\\xe8\\x78\\x83\\xe1\\xcc\\x39\\x80\\x67\\x40\\x0f\\xe4\\x62\\xa2\\xc4\\xe9\\xf2\\x32\\xdb\\x5c\\xdd\\x61\\xeb\\xa9\\x49\\x18\\x8c\\xf0\\x1b\\x23\\x8b\\xe7\\xad\\xa9\\x38\\xf0\\x02\\xdc\\x3a\\xe3\\x1f\\xdf\\xd4\\x25\\xc8\\xd4\\x6e\\xa0\\x32\\x32\\x3a\\xaf\\x20\\xdd\\x3d\\xe2\\x50\\x7d\\x36\\xbb\\x45\\xfb\\xb9\\x1c\\x40\\x96\\x9a\\x9e\\x5d\\xa2\\x0f\\x7f\\x93\\x6b\\x0f\\x4b\\x13\\x7b\\x62\\xfe\\x2b\\xa3\\xa6\\x67\\xbc\\x03\\x62\\xd9\\x3f\\xc5\\x0d\\x3f\\x22\\x95\\xe1\\x67\\xfc\\xba\\xb0\\xfb\\x3a\\x39\\xb7\\xcb\\x02\\x4b\\x57\\x8f\\x94\\x90\\xf7\\x34\\xb2\\x8c\\x9c\\xcf\\x71\\x92\\xf1\\x83\\x94\\x7d\\x5a\\x51\\x3e\\xfa\\x49\\x16\\xe4\\xd8\\x2b\\x2a\\xb4\\xba\\x7e\\xc2\\xff\\xba\\x21\\x3c\\xe8\\x2a\\xd6\\xed\\x3b\\x10\\xe4\\x85\\x53\\xe7\\x33\\xc9\\x40\\xaa\\x9b\\x9c\\xe7\\x13\\x37\\xc6\\xc2\\x80\\x5d\\xfb\\x8d\\xd6\\x61\\x8b\\x6d\\x40\\x90\\xa3\\xd6\\xcc\\x96\\x3e\\xce\\xa2\\x6d\\x1c\\xdc\\x2b\\xf5\\xac\\x99\\x9c\\x11\\x27\\x61\\x68\\xa9\\x31\\xd8\\x16\\x46\\x9d\\x79\\x08\\x3c\\x24\\x08\\x1a\\x50\\xdc\\xbd\\x22\\x27\\x52\\x38\\x52\\x67\\xce\\x1b\\xfc\\x1d\\xb7\\x6b\\x15\\x54\\xad\\x57\\xe3\\x47\\x52\\xb7\\xf8\\x98\\x31\\x47\\xc1\\x16\\xd4\\xa3\\xfa\\xe6\\xf6\\xd5\\x7e\\x65\\x4f\\xed\\xd7\\x37\\x8d\\x2b\\x49\\x89\\xea\"},\n{{0xb1,0xf5,0x9e,0x3c,0x23,0x80,0xd7,0xaa,0x41,0x4d,0x0b,0xf9,0x08,0x93,0xa3,0x8d,0xdd,0xfc,0x29,0x38,0x59,0x30,0x3d,0x16,0xf0,0x0d,0x9e,0xae,0x6c,0xb3,0x45,0x0e,},{0x84,0xe3,0xf5,0xf7,0x2f,0x19,0x09,0x5b,0x0f,0x53,0x38,0x48,0xa5,0xa9,0x1d,0x0f,0x07,0x43,0xb8,0xe3,0xa3,0xe2,0xf5,0x2f,0xcb,0xd7,0xeb,0xe7,0xc5,0xb5,0xa9,0x98,},{0x60,0xaf,0xc1,0xe9,0x91,0xfd,0xd2,0x7c,0xc4,0x72,0xb9,0xac,0xc9,0xd4,0x05,0xb4,0xd2,0xb9,0x13,0x08,0x92,0x90,0xb3,0x11,0xc4,0xfa,0x89,0x1a,0xe2,0xee,0xa0,0x56,0x71,0xfd,0xe7,0xa0,0xef,0x86,0x55,0x7b,0xd8,0x67,0xd1,0xc0,0xb7,0x47,0xca,0xf3,0x52,0x29,0xd6,0xef,0x52,0x8f,0xe3,0xe0,0xd0,0xbc,0xf6,0x30,0x38,0x0e,0xa9,0x0e,},\"\\xc6\\x17\\x4c\\x9a\\xd3\\x68\\x5d\\xd6\\x48\\x63\\x60\\x17\\x83\\x7b\\x8d\\x99\\x22\\x00\\x31\\x9e\\x9a\\x5a\\x0d\\x26\\xd9\\x4d\\x2d\\xa7\\x5e\\x2c\\x3a\\xff\\x46\\xf4\\x2d\\x7b\\x3a\\xba\\x47\\x2b\\x7f\\x86\\x0b\\x0f\\xe1\\xf6\\x95\\x52\\x97\\x31\\xfd\\xc8\\xcf\\x0d\\xa7\\x05\\xd1\\xd0\\x9a\\xca\\xd0\\x4f\\x01\\x08\\x37\\xec\\xef\\x41\\x9d\\x57\\xe9\\xea\\x6c\\xac\\xf1\\x68\\xc5\\x21\\x56\\x96\\xf4\\x71\\xf3\\xca\\xa8\\x97\\x60\\x7c\\x62\\x9d\\x44\\x3d\\xe0\\x99\\xd3\\x17\\x53\\xc2\\x46\\x77\\xd8\\xd7\\x5f\\x4b\\xf1\\x72\\x46\\x81\\x8b\\x58\\xad\\xc0\\x42\\x4b\\x76\\x2a\\x19\\x1e\\xf3\\x9a\\x70\\x76\\xa5\\xad\\x12\\x61\\x4c\\xf5\\x4c\\x47\\xeb\\x09\\x08\\xbb\\x86\\x65\\x18\\xc5\\xfa\\xc1\\xca\\x2d\\x2e\\x5b\\x65\\x75\\x20\\xa2\\xb3\\x69\\x5c\\x6f\\xb3\\x60\\xf1\\x6f\\x4a\\xb3\\x57\\x99\\x8e\\x4c\\x0e\\x97\\x23\\x1d\\x6f\\x89\\xc9\\x68\\xdc\\x29\\xec\\xc1\\xaa\\x91\\xfa\\x0d\\x75\\x43\\xb5\\xd2\\x24\\x7b\\x0d\\x85\\xe4\\x87\\x43\\xab\\x7c\\xc8\\x15\\xcf\\xda\\xa8\\x2b\\xf6\\x8c\\xa6\\xd3\\xe2\\x25\\x0b\\xfd\\xa2\\x70\\x24\\xd6\\x1b\\x47\\x4c\\x6b\\x81\\x54\\xac\\x8d\\x1b\\x5a\\x36\\x20\\x97\\x82\\x51\\x5c\\x16\\x46\\x68\\x0d\\x37\\x06\\x9b\\x8b\\x44\\x12\\xf9\\x51\\xb0\\x25\\xa4\\xd5\\x43\\x62\\x5d\\xd0\\x22\\x90\\xbf\\x03\\xc6\\x73\\x46\\x13\\xf9\\x9b\\x7a\\x4c\\x3a\\xf5\\xc5\\xf9\\xe9\\xac\\x34\\x74\\x46\\x5e\\x64\\x84\\x23\\x01\\x8d\\x40\\xa6\\xad\\xbe\\x88\\xa3\\x30\\x1d\\x3d\\x25\\x9b\\x04\\xee\\x44\\xcc\\x05\\x62\\xee\\x0d\\xed\\x4f\\x5e\\x26\\xad\\x97\\x7a\\xb5\\x63\\x1f\\x85\\x76\\x8d\\xbc\\xe5\\x3f\\x61\\x6c\\x02\\x9a\\x8b\\x8f\\x93\\x3e\\x2a\\x92\\x64\\xb1\\xc8\\x1f\\x51\\x7e\\x9f\\xf5\\x8a\\xb9\\xf4\\x5a\\x23\\xee\\xed\\x42\\x04\\x35\\x8f\\x8f\\xff\\x0c\\x8f\\x97\\x5e\\xf1\\xdf\\xa5\\x77\\x6a\\x5f\\x77\\x93\\xba\\xe2\\xf2\\x81\\xd7\\xb0\\xcb\\xef\\x24\\x0b\\x3f\\xc6\\xbe\\x05\\x88\\x21\\xea\\x2b\\x80\\x0f\\xff\\xe5\\x5a\\x7d\\xe0\\xaf\\xc9\\x3e\\xde\\x9c\\x60\\xc8\\xde\\x00\\x5a\\xbb\\x9a\\x2c\\x88\\xf4\\xe6\\x1e\\x8d\\xeb\\x31\\x70\\xf1\\x07\\x8a\\x36\\xe2\\xd8\\xf2\\xa5\\x82\\x39\\xbd\\xee\\x49\\x6e\\x90\\xd1\\x37\\xd2\\x11\\x0f\\x0a\\xd8\\x57\\xa8\\x8b\\x35\\x27\\x66\\x4f\\x78\\x19\\x39\\xe0\\xb2\\xf7\\x66\\x34\\xff\\x9f\\x6c\\x57\\xe1\\xc4\\x3f\\x58\\x24\\x31\\x71\\xcd\\x86\\x2e\\xf4\\x28\\x45\\x76\\x17\\x2a\\xf1\\xf6\\xc3\\xbd\\x37\\xd5\\xd7\\x4b\\x28\\xa7\\xa9\\x86\\x98\\xbd\\x74\\xe5\\x7b\\xbc\\x14\\x2e\\x67\\xf7\\x03\\xf9\\xd6\\x2c\\xde\\x76\\x1a\\x02\\x26\\x8f\\xec\\xb3\\x43\\xfc\\x01\\x41\\x88\\x36\\x41\\x4f\\x12\\x22\\xca\\x24\\xbc\\xdd\\x69\\xd0\\x05\\x90\\x1d\\xa2\\xa0\\xf9\\x44\\x65\\xe4\\xd4\\xba\\x68\\x89\\x88\\x16\\xbf\\x7e\\x3e\\x4b\\xb7\\x9c\\x8c\\xa5\\x99\\x7f\\xba\\x9a\\x8d\\xf8\\x4f\\xaa\\x2d\\x24\\xb0\\x44\\xc4\\xea\\x61\\x02\\x9a\\x46\\xcb\\xa7\\x03\\x42\\x1e\\x36\\x1d\\xfa\\x52\\xca\\xaf\\xf3\\xbb\\xaa\\xb7\\xfd\\x75\\x3f\\x28\\x56\\xd7\\xc0\\x83\\xae\\xb9\\x76\\x8d\\xa1\\x1d\\x82\\x1e\\x2d\\x30\\x9f\\x7a\\x73\\x5c\\x39\\x96\\x92\\xda\\xc2\\xf2\\x62\\x84\\x6b\\x89\\x1b\\xf6\\x46\\x1a\\xf2\\x3c\\x8c\\x7c\\xe1\\xd4\\xd9\\x03\\x2c\\x3c\\x14\\x0f\\x73\\x9e\\x55\\x84\\xc3\\x6f\\x05\\xea\\xf4\\x34\\x9f\\xf4\\x54\\x5f\\x28\\x3a\\x4e\\x0f\\xea\\x49\\x43\\x0a\\x1b\\x18\\x0d\\x08\\x71\\xe3\\x74\\x2b\\x88\\xcc\\xb5\\x91\\x12\\x4f\\xc4\\x27\\xed\\x67\\x3b\\x5f\\x27\\xb0\\xb0\\xa6\\xf5\\x4a\\xf2\\x2b\\xa4\\xa6\\xd1\\xc6\\xc1\\xdb\\x2a\\x1f\\xca\\xa6\\xd8\\xa0\\x30\\x8b\\x77\\xef\\x2d\\x0c\\x61\\xbb\\xf5\\x1b\\x95\\xf1\\xe8\\xb6\\xab\\xc5\\x04\\x1d\\x97\\xb6\\xb6\\xf1\\xb5\\x69\\xb3\\xf6\\x3c\\xec\\x05\\xcb\\x56\\x7a\\xae\\xa1\\x06\\x72\\x70\\x96\\xee\\x8a\\x9e\\xa8\\x7b\\x88\\x04\\x90\\x1f\\x7e\\x88\\xa7\\x40\\x9c\\x66\\xf1\\x52\\xde\\x9d\\xbf\\xcb\\xe3\\x19\\x52\\xe6\\xfd\\x83\\xb2\\x87\\x7a\\x77\\x5f\\xae\\x42\\x5b\\x38\\x51\\xe0\\xef\\xf8\\x79\\x2f\\xfb\\x38\\x48\\xf8\\x4a\\x65\\xcc\\x31\\x72\\x53\\xb2\\x72\\x47\\x5e\\x71\\x7e\\x49\\xe9\\xc6\\xff\\x6b\\x78\\x59\\xd1\\x1b\\xba\\x7c\\x44\\x28\\xc8\\x2d\\x17\\x89\\xe0\\xdc\\xa5\\xbc\\xad\\xca\\x2f\\xdb\\x25\\x9e\\x98\"},\n{{0xdb,0x46,0x1b,0x9f,0x70,0x7e,0xb2,0xcd,0x77,0x48,0xc4,0x4c,0x99,0x56,0x2f,0x13,0x02,0x39,0x74,0x89,0x35,0x3d,0xf5,0xf3,0x03,0x79,0x7f,0xe0,0xd0,0xb5,0x8d,0xe1,},{0x63,0x51,0x16,0xda,0x8b,0xa5,0xa3,0x6a,0x37,0x77,0x28,0xe2,0x86,0x18,0xe7,0x5c,0x55,0x92,0xae,0xcc,0x18,0xe3,0x40,0x11,0xc4,0xc4,0x25,0x91,0x97,0x0b,0x73,0x66,},{0xdd,0x04,0x9c,0xa7,0x9b,0xeb,0x9e,0xac,0x32,0x5a,0xcf,0x44,0x67,0x2f,0xf5,0x78,0xa9,0x68,0x50,0x2f,0xe1,0xbc,0xf5,0xea,0x19,0xd5,0x2c,0x0f,0x67,0x78,0xc7,0xf1,0xc7,0xbb,0xf7,0x42,0x74,0x79,0x07,0x78,0x6e,0x60,0x81,0x23,0x91,0x1a,0x92,0x07,0x78,0xd2,0xf9,0x59,0x6f,0xe2,0x9b,0xe7,0xcc,0x28,0xfd,0x00,0x9d,0x7c,0x44,0x0e,},\"\\x1a\\x2a\\xc8\\xc1\\xb9\\xea\\x09\\x9b\\x83\\x1a\\x68\\x12\\xd2\\xb4\\x26\\x13\\x09\\x05\\x8e\\xa5\\x88\\x3d\\x70\\xb1\\xc6\\x07\\xb9\\xcd\\x3f\\xdf\\xdb\\x86\\xe7\\x99\\x02\\xb0\\xfe\\x89\\xe8\\x0e\\xa7\\xc4\\x78\\x20\\x76\\x74\\xb2\\xd8\\x03\\xb0\\xb9\\xca\\x14\\x7f\\xfe\\x62\\xe5\\x94\\xf5\\x06\\xc7\\x96\\xd6\\x89\\x97\\xce\\x48\\x2b\\x51\\xa4\\x6e\\x49\\xb4\\xa5\\xd8\\x58\\xcd\\xea\\xe2\\xc6\\xec\\x9b\\x69\\x41\\x98\\xe6\\x82\\x2f\\x0e\\x33\\xed\\x57\\xbe\\xdb\\x03\\x35\\xc7\\x89\\x0a\\x72\\xa7\\xee\\x3c\\x23\\x82\\x3b\\xe7\\x9b\\x7f\\x94\\x71\\xe0\\x33\\xc7\\x9a\\xee\\xd5\\x2e\\x57\\x60\\xfb\\x0c\\xcb\\xb9\\xd3\\x8f\\xde\\xd8\\xb4\\x73\\x83\\xc1\\x91\\x03\\xce\\x44\\x70\\x58\\x34\\xc5\\x9d\\xdd\\x86\\xf7\\x03\\x39\\x48\\x61\\x2d\\x66\\x62\\xf5\\x16\\xce\\x4e\\x39\\x9f\\xf2\\x03\\x63\\xcc\\x72\\x81\\xa6\\x9b\\x2d\\x5c\\x30\\x7b\\x10\\xb7\\x04\\x15\\x01\\x84\\xec\\xe3\\x2f\\x39\\x0d\\x77\\x2c\\xcf\\xa7\\x84\\x83\\xbb\\x77\\xa9\\xfb\\xa8\\x44\\x25\\x36\\x69\\x84\\x17\\x1c\\xc2\\xbb\\x60\\xb0\\xec\\x6c\\x62\\x8d\\x4e\\x90\\x30\\x74\\x6d\\xac\\x1c\\xab\\xca\\x60\\xf0\\x56\\x83\\x81\\x33\\x46\\xa1\\xa5\\xbc\\x14\\x72\\x75\\x49\\x79\\x5c\\x1c\\x92\\x68\\x69\\xe1\\xaa\\x25\\x09\\x3d\\x59\\x1b\\x43\\xe0\\x86\\xe4\\x3a\\x04\\xd1\\x70\\xd9\\x42\\xc4\\x16\\x5e\\x1c\\x5c\\xe7\\x6c\\x3e\\x64\\x97\\x3d\\x91\\x36\\xf9\\x32\\x5b\\xee\\x82\\x16\\x82\\xf1\\x04\\x3e\\x95\\x1b\\x02\\x76\\x7f\\x3f\\xb4\\x58\\xd0\\x24\\x49\\xad\\xd3\\xe8\\xa6\\x6e\\x51\\x6f\\xdb\\x1e\\xd5\\x80\\xe0\\x56\\xe0\\xf7\\x8e\\xe3\\x3f\\xd9\\xee\\x32\\x80\\x91\\x2f\\xae\\x07\\xfe\\x1e\\xa0\\x25\\x27\\xcd\\x00\\x1d\\x6f\\x6f\\x2f\\x89\\xee\\x64\\x9f\\x51\\x74\\x14\\xd5\\x6f\\x57\\x35\\x9a\\x84\\x68\\x91\\xf0\\x22\\x2c\\x32\\x1d\\x7e\\x70\\x81\\x79\\x95\\xa8\\xcd\\x8e\\x94\\x76\\x0b\\x6e\\x74\\x83\\x2b\\xab\\x68\\xd5\\x5b\\xc4\\x64\\x18\\x84\\x22\\x1f\\xd2\\x9f\\x12\\x2d\\x87\\xa9\\xa8\\x68\\xb6\\xa6\\x06\\x0c\\x87\\xb2\\x38\\x2c\\xf7\\xbb\\xdd\\xa4\\xcd\\x6a\\xaa\\x1b\\xbc\\x8e\\x6d\\x63\\x4a\\xb5\\x80\\xc8\\x65\\xf5\\xad\\xd6\\xa1\\xd5\\x4e\\x61\\xa6\\x07\\xdc\\x2c\\x37\\xb0\\x8a\\x8c\\xba\\x6e\\x61\\x0c\\x12\\xcf\\xeb\\xef\\x9c\\x98\\x9e\\xef\\x3b\\x78\\x2a\\xcb\\xd1\\xbc\\xec\\x5f\\x04\\xe8\\x35\\xca\\x10\\x12\\x98\\xb5\\xe9\\xbd\\xd8\\x81\\x3a\\x71\\xb0\\xd4\\x69\\xfc\\xf1\\x27\\x27\\xd3\\xde\\x1c\\x3f\\x97\\xdd\\xbc\\x6a\\xb2\\x65\\x84\\x40\\xdd\\x64\\x21\\x01\\x9b\\xc6\\x8f\\x35\\x6d\\x6f\\x25\\x53\\x68\\x65\\x85\\x1d\\x92\\xd9\\x0f\\xe9\\x96\\x9c\\x3b\\x7c\\x35\\xa2\\xe8\\x8c\\xe1\\x53\\x47\\x6e\\xc3\\x97\\x3a\\xf9\\x35\\x9f\\x16\\x77\\xa4\\xca\\xf1\\xcc\\x48\\x1c\\x71\\xbd\\x90\\x22\\x8f\\xf5\\xfc\\x6d\\xd8\\x3b\\x8a\\x69\\x9f\\xfe\\x51\\x49\\x29\\xf5\\xc9\\x5c\\xb4\\xf0\\x4b\\x00\\xdd\\x18\\xa2\\x87\\x2c\\x41\\x86\\x8d\\x3b\\xeb\\x76\\x49\\x8d\\xdc\\x92\\x34\\xb6\\x3f\\x59\\x9d\\x70\\x71\\x80\\x1d\\xb2\\xc2\\x87\\x8f\\x7b\\xef\\x4f\\xfd\\xdd\\x81\\x32\\x26\\xf0\\x6d\\xb8\\x4e\\xb3\\x02\\x17\\xa7\\x18\\x30\\x82\\xe3\\xc1\\x24\\x2b\\xb6\\xd0\\x1c\\xd3\\xa6\\xce\\x27\\xbf\\xf1\\x6b\\xfb\\xfd\\xd7\\x5b\\x7e\\x51\\x04\\x31\\x2c\\x49\\xc4\\x3a\\xad\\xfc\\xd5\\xb4\\xed\\xba\\x0f\\xf5\\x0d\\x28\\x90\\xca\\x3c\\xd9\\xcc\\xa3\\x3e\\x4f\\xc6\\x94\\xc0\\x57\\xc4\\x7e\\xbe\\x1c\\x20\\xa4\\xad\\x11\\x5f\\x98\\x5d\\xc7\\x44\\x2c\\x6f\\x6d\\xa7\\xbe\\x53\\x0b\\x69\\x02\\x28\\x9c\\xab\\x9c\\xa1\\x39\\xc6\\xb2\\x4c\\xb8\\x0f\\xfd\\xd7\\x82\\x32\\x4e\\x60\\x2c\\x45\\x91\\x0d\\xb6\\x3d\\x8b\\x5c\\x44\\xca\\x29\\xd2\\x7f\\x56\\xdb\\xf0\\x01\\x86\\xba\\x58\\x3c\\x34\\xe1\\x60\\x31\\xdf\\x35\\x75\\x46\\xb3\\xab\\x9a\\x3d\\xd6\\x5e\\x91\\xd7\\x12\\x8c\\x93\\x91\\x95\\xe6\\x46\\xa0\\xf0\\xb8\\x9b\\xf5\\xdf\\x04\\xba\\x23\\x3d\\x6a\\x12\\xa2\\x71\\xf7\\xe0\\x4a\\xa4\\x5c\\xda\\x99\\xb4\\xa5\\x5a\\x21\\xcb\\xbb\\x73\\x85\\x15\\xe3\\x2c\\x56\\xaa\\xc2\\x49\\x62\\x32\\xb1\\x00\\x8a\\x67\\x61\\xc8\\x04\\x5a\\x1f\\xe0\\xf9\\xa3\\x64\\x40\\x47\\xb5\\x96\\x6a\\x58\\xa6\\x00\\x46\\x6c\\x1b\\x1d\\x11\\xdd\\xad\\x5a\\xa5\\x73\\xc4\\x3e\\xbd\\xa8\\x87\\xe1\\x6a\\x05\"},\n{{0xf5,0xc0,0xa7,0xf8,0xf6,0x58,0x4c,0x5d,0x2f,0x2e,0x1d,0x08,0x10,0xe8,0xe8,0x61,0x03,0xe4,0xe2,0xd4,0x5c,0xf9,0xa7,0x21,0xd8,0xc4,0x7f,0x67,0x49,0x33,0x96,0xa4,},{0x3c,0x6d,0x6c,0xce,0x49,0x63,0x31,0x41,0x07,0x86,0x96,0x13,0x1a,0x8d,0x84,0xed,0x82,0x3f,0x30,0x66,0x4b,0x28,0x9a,0xf9,0xdd,0x30,0xc6,0x40,0x7f,0x6f,0x03,0x13,},{0xd4,0xc3,0x0a,0x48,0xc4,0x52,0x3b,0x1f,0x84,0xb1,0x4b,0x65,0x7a,0xf8,0xf8,0x59,0x75,0x5b,0xba,0x63,0x59,0x98,0x8b,0x67,0x5c,0x6d,0x85,0xdd,0xf3,0x54,0x62,0x82,0x0d,0xa4,0x76,0xd8,0x4f,0x6c,0x40,0x2e,0x65,0xb0,0x20,0xd9,0xe8,0xa2,0xc2,0x85,0xc1,0x67,0x08,0xae,0x58,0xd1,0xf8,0xdb,0xc6,0x57,0x82,0xa8,0x98,0xa6,0x65,0x08,},\"\\xd6\\x8a\\xbc\\x60\\x9a\\x7a\\x0c\\xe2\\x56\\x69\\x9e\\xb1\\x70\\x43\\xde\\xfe\\x1e\\xb8\\x22\\xc9\\x70\\x8f\\x65\\x71\\x8a\\x06\\x58\\x1f\\xab\\x21\\x10\\xec\\x2d\\xb0\\x92\\x13\\xbb\\x9e\\x0f\\x36\\x12\\xce\\x4a\\x3f\\x8f\\xdb\\xe7\\x57\\xa9\\xf0\\xeb\\x2c\\x3e\\xba\\x43\\x8a\\x90\\x88\\xb1\\x8f\\x6c\\x5c\\xaa\\xbb\\xe5\\xc8\\x2f\\x7a\\x9a\\xb2\\xfe\\xcf\\x0f\\x58\\x59\\xd1\\x75\\xe1\\x39\\x26\\x30\\x33\\x74\\x24\\x58\\xf8\\x2a\\x6f\\x38\\x75\\x6c\\xd5\\xbc\\xdf\\x9e\\x07\\x36\\xdb\\x2c\\xab\\x20\\xa0\\xcd\\x3f\\x0f\\x1c\\xdb\\xea\\x85\\x56\\xd8\\x49\\x09\\x35\\x8d\\xd8\\xf6\\x9f\\x0d\\xac\\xd4\\x9a\\xbf\\x8a\\xc1\\xbf\\xe7\\x59\\x40\\xd6\\x93\\x9e\\x6a\\x55\\x38\\x5b\\x5a\\xce\\x7c\\xe1\\xfd\\xe1\\x20\\x67\\x9a\\xb6\\xea\\x7a\\x89\\xd1\\x42\\x68\\xd2\\x9f\\xfb\\x46\\xdf\\x10\\x5b\\xf3\\x90\\x92\\x42\\xc6\\x60\\x5f\\x3e\\x3e\\x2a\\xb7\\x44\\x89\\x37\\xd6\\xdb\\x2b\\xa0\\x54\\xc7\\xb1\\x4f\\x43\\x2d\\xb4\\x1d\\xc1\\x8a\\x5b\\x95\\x73\\x36\\xb7\\xf5\\x2d\\x97\\x8e\\xc0\\x3e\\x7d\\x57\\x64\\xe9\\xbd\\x2f\\x4b\\x68\\x95\\x8d\\x93\\x7b\\xf2\\x98\\x23\\xb2\\x7e\\xfb\\x31\\xe2\\x5b\\x43\\x92\\x5c\\x4d\\xac\\xbe\\x67\\x18\\xa6\\x0f\\xea\\x3b\\x32\\x70\\xe7\\xb7\\x6b\\x0d\\xe0\\xe7\\x0f\\x7f\\xa3\\xc1\\x2c\\x21\\x5e\\xf7\\x2b\\x95\\xdc\\x1b\\x52\\x76\\x23\\x81\\x79\\xdf\\xc5\\x2f\\xc4\\x88\\x59\\x64\\x9f\\xa5\\x82\\xd0\\x5a\\x60\\xdf\\x68\\x59\\x9a\\x1c\\xee\\xa6\\x4f\\x64\\x12\\xd3\\xf8\\x49\\x8a\\xe2\\xce\\xdb\\x12\\x42\\x45\\x88\\x3a\\x24\\x0b\\xc0\\x85\\x1f\\x0e\\x32\\x49\\x65\\xbe\\x12\\x04\\x86\\xe1\\xea\\x89\\xa0\\x18\\x2d\\xfa\\x8e\\xab\\xd3\\xb8\\xfa\\x66\\xa9\\x9c\\x51\\x49\\x13\\x89\\xf3\\xc8\\x3a\\x3c\\xdb\\x42\\x67\\xf3\\xe4\\xdb\\xc9\\x8f\\x0c\\x44\\x85\\x6b\\x04\\x4d\\xc8\\x8d\\x90\\xee\\xee\\x84\\x15\\xbf\\x73\\xde\\x17\\x1a\\xfe\\x84\\xbe\\x90\\x35\\xe0\\xdc\\x4c\\x80\\xcf\\x04\\x22\\x46\\x9f\\xe0\\xc9\\xbd\\x1c\\x6a\\xa6\\x54\\xa5\\x9b\\x5e\\x34\\xee\\xd3\\x51\\xcd\\xa2\\x87\\x12\\x69\\xac\\x47\\x8e\\x8d\\x38\\x2e\\x74\\x0e\\x9a\\xc7\\xab\\x4d\\xdc\\x4c\\x0d\\xef\\x0a\\xea\\xb7\\x97\\xb6\\xf1\\xa4\\x27\\xb8\\xe4\\xa8\\x49\\x7a\\x0b\\x97\\x97\\xda\\xdc\\xd3\\x5c\\x41\\x4f\\xd5\\x5b\\x78\\x31\\x30\\xf6\\xcd\\xed\\x38\\xa4\\x4c\\x1a\\x89\\x28\\x83\\x07\\xeb\\x84\\x25\\x48\\x41\\x37\\xa8\\xae\\xdb\\x03\\x0d\\x54\\xb6\\x16\\xa8\\x2e\\x3c\\x5a\\xcf\\xfb\\x08\\xd6\\xcc\\x1a\\x61\\x74\\x5c\\x29\\xaf\\xc6\\x8a\\x0c\\x18\\x38\\xb1\\x39\\x15\\x9c\\x5f\\xa6\\x67\\x4d\\x66\\xb9\\xe3\\x38\\x11\\x5a\\xad\\x4b\\x1b\\x47\\x10\\xaa\\x5d\\x95\\x17\\xbc\\xf7\\xe1\\xcb\\x12\\xd4\\xe6\\xa5\\x1c\\x11\\x78\\x9f\\xdc\\xae\\x9d\\x9b\\xbe\\x78\\xf6\\x9a\\x33\\xe5\\x2d\\xf1\\x83\\x3c\\x87\\x6b\\x02\\x68\\x7a\\x40\\x4f\\xac\\xad\\x32\\x84\\x1c\\xb2\\xd5\\x25\\x54\\xe7\\xb8\\xe2\\x20\\x9e\\x3f\\x88\\xfd\\x94\\x8c\\x1e\\xcf\\x83\\x95\\x7c\\x96\\xf4\\x3b\\x03\\x4b\\xed\\xa6\\xc4\\x76\\x09\\x6b\\xcb\\x09\\x30\\x1a\\xd6\\x1f\\x83\\x67\\xcc\\x43\\xe1\\x56\\x13\\x18\\x62\\xb4\\x2e\\xce\\x28\\x5b\\xec\\x2d\\xcc\\x2d\\x02\\xd0\\x94\\xd0\\x42\\xa1\\x60\\x72\\xeb\\x22\\xab\\x98\\x88\\x01\\x3b\\xe8\\x23\\x71\\x56\\x94\\x00\\xec\\x1f\\x8e\\xc7\\xe7\\x91\\x08\\xc4\\x1b\\x85\\x33\\x65\\x26\\x8f\\xa4\\xcf\\xbc\\x62\\xc4\\xac\\x12\\xcc\\x98\\xd2\\xec\\x38\\xa8\\x7d\\x60\\x85\\x85\\x95\\x67\\xc0\\xf2\\x7d\\x6d\\x43\\x1a\\x04\\x6e\\x88\\xa9\\x81\\x55\\x58\\x66\\x07\\x05\\xfd\\x05\\xeb\\x06\\xc6\\xc0\\x5e\\x5b\\x7d\\x62\\x34\\x7c\\xee\\xe2\\x7d\\xff\\xed\\x71\\x41\\x54\\x0d\\x60\\x8c\\xb9\\x75\\x07\\x5a\\x96\\x44\\xac\\xc6\\x32\\x84\\x39\\xf9\\xfa\\x68\\x2b\\x22\\x6b\\x18\\x61\\x54\\x54\\x90\\x11\\xc3\\xb0\\xf0\\xff\\x4f\\x74\\xca\\xa7\\x1c\\x19\\x44\\xe4\\xcb\\x83\\x6c\\xe8\\x51\\xd9\\xb5\\xd9\\xe7\\x27\\xc5\\x53\\xe3\\xc7\\x23\\xcf\\x98\\xc2\\x73\\xe5\\x67\\x5c\\xab\\x89\\x9b\\xb6\\x6f\\x46\\x33\\xa7\\x6d\\xea\\x35\\x73\\x41\\xf9\\x83\\xc5\\x3d\\x91\\x58\\xad\\x31\\x9a\\xda\\x75\\x40\\x8b\\x41\\xc0\\x6f\\x26\\xb7\\x43\\x5b\\x80\\xdc\\x3b\\xc0\\xaa\\xf2\\x2a\\x83\\x3d\\xde\\xdc\\xd6\\x78\\x5c\\x87\\xd1\\x96\\xb0\\xaf\\x2c\\x9a\\x43\\xd1\"},\n{{0x1a,0xb9,0x46,0xc0,0xc1,0xae,0xbf,0x9c,0xa3,0x7c,0x2f,0x4e,0x2a,0x4b,0x33,0x7d,0x5b,0x1e,0xbc,0xcd,0x24,0x73,0x4c,0x9c,0xb2,0xa1,0x60,0x8c,0x88,0x1e,0x57,0x57,},{0x9a,0xfc,0x63,0xdf,0xce,0x0d,0x48,0x9b,0x40,0x90,0x7a,0xee,0xd6,0xdf,0xfe,0x4c,0xd8,0xef,0x5a,0x6f,0xfa,0x22,0x98,0x95,0x56,0x44,0x5c,0xbf,0x9b,0x35,0x19,0xc2,},{0xbf,0xab,0xde,0xa4,0x18,0x10,0xa5,0x3f,0x8e,0x52,0x7a,0xcd,0x66,0xec,0x10,0x6c,0xe2,0xae,0x1a,0x67,0xff,0x6a,0x9b,0x52,0x2e,0x0f,0x08,0xfb,0xbf,0x12,0x52,0x68,0x2c,0xb3,0xa1,0xdc,0xc8,0x75,0x60,0x19,0x44,0xcb,0x88,0x00,0x0f,0x72,0xe1,0x39,0x07,0x00,0x79,0x03,0xa7,0x7c,0xd0,0xdb,0x03,0x16,0xd4,0x19,0xac,0x38,0xc2,0x04,},\"\\x9b\\xb0\\x71\\xb6\\x2c\\x04\\x06\\x4b\\x0c\\x96\\xe2\\x43\\xdd\\x19\\x8c\\x39\\x71\\x7b\\x25\\xc9\\x94\\x48\\xc2\\xc0\\x02\\xb8\\x4a\\x99\\x20\\x4c\\x5a\\x6e\\x23\\xb4\\xb9\\x12\\x02\\x86\\x75\\xbf\\xdc\\x4d\\xf9\\x3c\\x5b\\x2f\\xb8\\x08\\x81\\xa2\\x3e\\x0d\\x44\\xba\\x18\\xbd\\xe9\\x91\\x21\\xee\\xe8\\x6a\\xdc\\x6f\\x84\\x28\\x19\\xd6\\xeb\\xc7\\xa2\\x88\\x99\\x2d\\xa3\\x28\\x58\\x05\\xa8\\xb8\\xb6\\xfb\\xcd\\x22\\x67\\xb6\\x86\\xb3\\xe1\\xbf\\x79\\x60\\xb4\\x5f\\x24\\x4f\\x85\\x2e\\x82\\x49\\x29\\x44\\xe3\\xd6\\x18\\xbc\\xc4\\x51\\x4c\\x17\\xf7\\x22\\xba\\x49\\xac\\xa7\\xf2\\xf3\\xbb\\x4e\\x91\\xf9\\x40\\xe9\\xce\\xf0\\x15\\x65\\x0c\\x3e\\x40\\xb0\\xc8\\x55\\xa1\\x7c\\x42\\xf1\\x1e\\x3a\\x34\\xac\\xc8\\x52\\x87\\xdb\\xe0\\xf9\\x09\\x3c\\x00\\x37\\x3d\\x50\\xc0\\xb3\\x06\\x4a\\x5a\\x5f\\x2b\\x1e\\x89\\x20\\x65\\x17\\x52\\x82\\x95\\xfd\\x87\\x17\\x03\\xa8\\xe7\\x62\\xb5\\xe7\\x6f\\xb9\\xb7\\x47\\x3d\\x21\\x49\\xb8\\x5b\\x94\\x61\\xf5\\x58\\x7e\\xd7\\xe7\\xfc\\x8b\\x50\\xaa\\x09\\x87\\x6d\\xee\\xb6\\xe2\\x37\\x07\\x85\\x02\\x14\\x2c\\xec\\x6b\\xdd\\xc7\\x01\\x40\\xfe\\x1d\\x1f\\x16\\x58\\xd5\\xd3\\xe9\\x10\\xfd\\x70\\x36\\xa2\\xf9\\x24\\xb4\\x99\\xdb\\x17\\x56\\xf7\\xc8\\xce\\x0d\\x5f\\x0d\\x04\\x5b\\x39\\xbc\\x81\\xc5\\xc2\\xf1\\xa7\\x61\\xf5\\x2f\\xf3\\x93\\xe0\\x64\\x9b\\x8d\\xb0\\xbd\\x88\\x54\\xbd\\x02\\x6b\\xe2\\xc7\\xc3\\xcd\\x63\\x52\\x6b\\xa5\\xa8\\x0d\\x48\\x33\\x5f\\x03\\x38\\x32\\xd6\\x33\\x76\\x07\\x1b\\x63\\x08\\xf0\\x59\\x60\\xcb\\x3f\\xc9\\xfa\\xc9\\x32\\xed\\xd8\\x37\\x6d\\xae\\x51\\xf2\\xc6\\x61\\xf7\\x5b\\x7c\\x6f\\x4a\\xc8\\x56\\x75\\x3a\\xca\\x62\\x06\\x28\\x77\\x60\\x9f\\xc4\\xa0\\xff\\x60\\x67\\x02\\x82\\xc0\\x5e\\x88\\x2d\\x1a\\x03\\x5b\\xf9\\x89\\x0c\\xab\\x29\\x6a\\xc7\\xa8\\xdf\\x24\\x4c\\x56\\xf4\\x90\\x25\\x0f\\x02\\x00\\x54\\xb8\\xaf\\x51\\xbe\\x4f\\xc3\\x18\\xbe\\xba\\x50\\x62\\x32\\xbf\\x45\\xe1\\x7f\\x5c\\x74\\x0c\\xf0\\x9d\\x37\\x51\\x5a\\x8b\\xc8\\x94\\xbc\\x95\\x5c\\x8a\\x46\\x08\\x77\\xc7\\x85\\x4f\\x8b\\xe3\\x63\\xb2\\x19\\x33\\xe1\\x62\\x87\\xae\\x0c\\xb7\\x0f\\x22\\x2d\\x4e\\x36\\xb8\\xb4\\x24\\x97\\x55\\x59\\xbb\\x4b\\xfc\\x8d\\xd1\\xd5\\x1b\\x3c\\x0f\\xaf\\x4a\\x53\\xe3\\x02\\x19\\x6f\\x9f\\xed\\xb5\\x32\\x87\\xd0\\x93\\x15\\xdf\\xff\\xa2\\xbc\\x4b\\x3a\\xcf\\xf1\\x37\\xf9\\xa7\\x6d\\x68\\x56\\x21\\x7f\\x79\\xcb\\xb2\\x54\\x33\\xfc\\x97\\x89\\x9f\\xd6\\x54\\x0f\\x18\\x08\\x8e\\x84\\x41\\x7e\\x48\\x33\\xe4\\xa9\\x1a\\xab\\xa4\\x65\\x8a\\xe9\\xad\\x7f\\x76\\x0d\\xd9\\xc5\\xb7\\x19\\x1a\\x0d\\x3c\\x05\\x54\\x1b\\x83\\xc0\\x25\\xa7\\x99\\x21\\x38\\xe6\\xd1\\x08\\x0d\\xa1\\x4c\\x2c\\x88\\x7c\\x6d\\x67\\x0a\\xab\\x37\\x4d\\x43\\x6c\\x27\\x2f\\x9e\\x96\\xf8\\x5a\\x9c\\x42\\x33\\x79\\xc0\\xd4\\x7c\\x46\\xdf\\x6d\\xe3\\x34\\xea\\x20\\x57\\x15\\x8d\\x33\\x23\\x1e\\x14\\x26\\xa6\\x6d\\x3c\\x70\\x82\\x7a\\xad\\x55\\x11\\xb8\\x46\\xe0\\x3b\\x94\\x92\\x3d\\x5f\\x94\\xba\\xf1\\xf8\\xcf\\x11\\xa8\\x61\\x37\\x3a\\x5b\\x80\\xad\\x5e\\x31\\x7e\\xc2\\xa5\\x29\\xe9\\x4e\\x63\\x6c\\xdc\\x3a\\xa2\\x9e\\x5d\\xac\\x20\\x5a\\x0c\\x13\\xf6\\x8f\\xb1\\x98\\xcf\\x94\\x56\\xe6\\x39\\x0a\\xea\\xd4\\xd9\\x78\\x2a\\x10\\x38\\xf6\\x47\\x8d\\x33\\x9a\\x81\\xba\\xe7\\xaf\\x2a\\x04\\x15\\x1c\\x2f\\x22\\xe8\\xd3\\x9f\\xe0\\x71\\xe1\\xa5\\x21\\x68\\xd5\\x7c\\x84\\xc3\\x62\\x93\\x41\\x3f\\x8e\\x6f\\xf6\\x93\\x4f\\x05\\xe7\\xef\\xad\\x6f\\xa1\\x20\\xc8\\xc1\\xc3\\x8a\\xd1\\x88\\x6a\\x3d\\x00\\xbf\\xc3\\x06\\x45\\x92\\x03\\xc0\\x2c\\xdf\\x4f\\x06\\x65\\x2b\\xc8\\xfa\\x0e\\x8b\\x9c\\xc7\\x79\\xd4\\x3f\\xbb\\x78\\x9e\\x7d\\xad\\x5d\\xc9\\x9f\\x41\\xd4\\xcc\\x58\\x8c\\x1b\\x65\\x42\\x6a\\x4e\\x77\\x38\\x9e\\xdd\\x04\\x97\\x75\\x78\\xf8\\xf3\\x16\\xbc\\xdd\\x94\\x61\\xd6\\x66\\x47\\x2c\\xdd\\x27\\x6a\\xa5\\x69\\x72\\x1c\\x65\\x23\\x22\\x56\\xba\\x1c\\xf0\\xe7\\xf5\\xea\\x55\\x32\\x17\\x29\\xbb\\x0e\\x03\\x86\\xa7\\x7b\\x86\\x55\\x32\\x02\\x46\\x96\\xed\\xde\\xf4\\x85\\xb7\\xd7\\xb2\\x8c\\x15\\x73\\xb9\\x34\\x7e\\x41\\x4d\\x42\\x61\\x99\\x54\\x82\\xe3\\xb3\\x12\\xde\\x13\\x31\\xf8\\x4e\\x75\\x48\\x60\\x7a\\x84\"},\n{{0x04,0xbb,0x88,0x7a,0x8a,0x31,0x84,0xff,0xc7,0xea,0x09,0xc9,0xbc,0x7c,0x1f,0x7c,0x34,0x11,0x55,0x6a,0x7c,0x7c,0x39,0x8c,0xb8,0xb2,0xd9,0x8f,0xfd,0x9e,0xe8,0x66,},{0x6a,0xb1,0xe4,0xae,0x4a,0xa0,0xd3,0x89,0x89,0xae,0xef,0xa8,0x05,0xb5,0x78,0x80,0x6e,0x2e,0x97,0x1a,0xc7,0xac,0x05,0x40,0x99,0x58,0xbf,0xe6,0x00,0x71,0xf4,0xa7,},{0xcd,0x84,0xf5,0x5e,0x5e,0xf4,0x53,0x19,0x24,0xc5,0xa2,0x18,0x1e,0xc8,0x7a,0x64,0x54,0x13,0x88,0xc1,0x05,0x94,0x06,0xbc,0x07,0xd5,0x31,0x57,0xa1,0x68,0xe2,0x03,0xcc,0x8a,0xa0,0xf0,0x06,0x9d,0x53,0xff,0x58,0xa9,0x5b,0x8a,0x8c,0xaa,0xfd,0xad,0x26,0x36,0x3c,0x7d,0x0f,0x80,0x45,0xc4,0x35,0x9e,0x97,0xb4,0x36,0x02,0xc6,0x06,},\"\\xb7\\xab\\x0c\\x81\\x63\\xf4\\x78\\xc6\\xca\\xbf\\x2b\\xbd\\x7c\\xa3\\x7c\\xb0\\x24\\x56\\xd7\\x6e\\x52\\x7e\\xea\\x1b\\x0d\\x26\\xdb\\x24\\x2e\\x37\\x87\\x76\\x32\\x98\\x5a\\x3e\\x3c\\xa4\\x1b\\x52\\xe2\\x1d\\x79\\x01\\x7b\\xff\\x81\\xee\\x55\\x1a\\xd7\\x2a\\xf2\\x77\\xb4\\x10\\xe4\\x2a\\xf8\\x22\\xc6\\x08\\xcd\\x69\\xd0\\x0b\\xf4\\x40\\xb7\\x5b\\x78\\x7a\\x8c\\x91\\x5d\\x70\\xb6\\xc6\\x37\\x6c\\x3f\\x67\\xfa\\x64\\xd6\\x12\\xa1\\xb4\\x49\\xa7\\xe2\\x13\\x4d\\x9c\\x23\\x23\\x01\\x57\\xd5\\x76\\xe0\\x6a\\x66\\xa8\\x42\\x2a\\x61\\x1e\\x2a\\x0f\\x09\\x72\\x86\\xc1\\x99\\xea\\x2a\\x16\\x28\\x61\\x86\\x4b\\xd0\\x35\\x07\\x6a\\xb2\\x0b\\xba\\xe2\\xb4\\x40\\x8a\\x2c\\x64\\x33\\xcb\\x23\\x43\\x3a\\x88\\x9f\\xe6\\x59\\x8f\\x47\\xbe\\x53\\xbb\\xd2\\xc8\\x0f\\x07\\xa8\\xfc\\xcb\\x8a\\xae\\x51\\x11\\x61\\xe6\\x09\\xda\\x4d\\x18\\x0a\\xce\\xa5\\x44\\x81\\x1e\\x94\\x49\\xc5\\xdc\\x22\\x50\\xe3\\xe5\\xa0\\xcd\\x41\\xda\\x33\\xa2\\xda\\x63\\x2e\\x60\\x38\\xbd\\x86\\xf1\\x6d\\x5b\\x7c\\x1b\\xe4\\x9f\\xc6\\xdb\\x49\\x90\\x76\\xca\\x91\\xf7\\xaa\\x02\\x8f\\xe3\\x85\\x29\\x70\\x0b\\x21\\xd0\\x72\\xd2\\xb7\\x5d\\xcc\\x8b\\x43\\x78\\x1d\\x4b\\xc4\\xd3\\xbb\\x58\\x4d\\x9d\\xa0\\x1c\\x3e\\xcc\\x85\\xb1\\xe9\\x3f\\xce\\x04\\x5d\\xad\\xce\\xea\\x51\\x06\\x46\\x8b\\xdf\\xe5\\xf7\\x0d\\x66\\xa4\\xfa\\xd6\\x0e\\x4f\\xb8\\x64\\xec\\x15\\xea\\x50\\xf6\\xcb\\x79\\x72\\x23\\xc8\\xc7\\x56\\xf7\\xa1\\x93\\x1a\\x39\\x46\\x4e\\xbb\\xb9\\x67\\x9f\\x6b\\x01\\x68\\x7c\\x17\\x4e\\xaa\\x32\\xb9\\x68\\xb9\\xcf\\xac\\xe8\\xc1\\x67\\x12\\x0a\\xa7\\xbd\\x02\\x42\\xf0\\x03\\xa0\\xc3\\x77\\x70\\x25\\x51\\xb3\\x0d\\xa2\\x48\\x8e\\xb2\\x94\\x40\\x52\\x93\\x4a\\xef\\x4b\\xfe\\x11\\x5f\\x0a\\xb7\\x40\\x5a\\x3d\\x5f\\xa9\\xbd\\x79\\x6b\\x37\\x17\\x42\\xbc\\x11\\x4a\\x9b\\xf2\\x8c\\x5b\\xd2\\x56\\x26\\x29\\x5c\\xe2\\x61\\xa6\\xa8\\x3e\\xf6\\x0b\\x77\\xd2\\xd3\\x2d\\xd7\\x10\\x5f\\xc8\\x36\\x64\\xaa\\x89\\x76\\x5b\\x3f\\x81\\x91\\xee\\xee\\xd8\\x78\\xf2\\xeb\\xff\\x2f\\xb9\\x76\\x63\\xa6\\x18\\x77\\xc0\\x93\\x93\\x3b\\xbd\\x07\\x31\\xe6\\x37\\x57\\x57\\x1b\\x0e\\x37\\xca\\xc9\\x9e\\xd0\\x1f\\xd2\\x14\\xcb\\xd4\\xfe\\xb9\\x77\\xe8\\x56\\xe0\\xa1\\xa7\\xef\\x0c\\x40\\x8c\\x20\\xe0\\xdd\\xaf\\x1f\\xd8\\xf0\\x28\\xcf\\xa0\\x8c\\x85\\x0f\\xa7\\x09\\x0d\\xca\\x8c\\xdd\\xe0\\xcb\\x69\\x03\\xda\\x18\\xc6\\x29\\x0c\\x66\\xa1\\xc0\\xae\\x0a\\x08\\x4b\\xf2\\x50\\xc5\\x1a\\x9d\\x03\\x5e\\x5b\\x16\\xec\\x61\\x66\\x36\\xaf\\xb9\\xb5\\xbc\\xe3\\x6a\\x77\\x5f\\xe2\\x17\\x5b\\xcc\\x2e\\xe0\\x72\\x20\\x83\\x4e\\xeb\\x31\\xca\\xee\\x50\\xe9\\xf8\\x06\\x3f\\xb1\\xfc\\x84\\x68\\xae\\x25\\xe3\\x96\\x67\\x89\\xa6\\xd8\\xdf\\xfe\\x08\\xa6\\xf7\\xa1\\xe6\\x72\\x6f\\x93\\xae\\x74\\x82\\xde\\x02\\x62\\xbb\\x1f\\x8d\\xe0\\xc9\\x5a\\x99\\xec\\xb9\\x56\\x84\\xd4\\x4b\\x3f\\x1a\\x33\\x2a\\x18\\xd2\\xcd\\x3d\\xcf\\x25\\x3c\\x33\\xd7\\x35\\x52\\x2f\\x79\\x6b\\x65\\x1c\\x9a\\x63\\x3a\\x8e\\xbe\\x95\\xd0\\x2b\\xc0\\x46\\x58\\x25\\xee\\x54\\x1a\\x7d\\x92\\x7b\\xb5\\xb9\\x0a\\x6d\\xb5\\x49\\x9f\\x8d\\x99\\x3a\\xb4\\x04\\xb1\\x65\\x0b\\x75\\xe7\\x92\\xa7\\xc8\\x34\\xeb\\x41\\xf0\\x47\\x01\\x38\\xb0\\xf5\\x78\\xa0\\x4c\\x9b\\xa5\\xad\\x95\\x0a\\xc7\\xc9\\xb5\\xd3\\x28\\xf3\\x40\\x8b\\x64\\x5a\\xd9\\xc6\\xbf\\x19\\x6d\\xd9\\x61\\x44\\x55\\x96\\xbc\\x78\\xf2\\x84\\xb8\\x91\\x4b\\x2a\\x8c\\xf9\\xb7\\xbd\\x3a\\x71\\x6d\\x8f\\x14\\x4b\\xb6\\xb1\\x5d\\x83\\x10\\x23\\x71\\x3b\\x5e\\x41\\xfd\\xa9\\xb5\\x87\\xff\\x9d\\x6c\\xc4\\x3c\\x08\\xd3\\x5a\\x70\\x7f\\x49\\x52\\x83\\xe1\\xac\\xe9\\x60\\x48\\x7e\\x7f\\x02\\xb7\\x54\\x3b\\x68\\xa7\\x31\\xa2\\x9b\\xf3\\xbe\\x14\\xb6\\xe9\\xc3\\x71\\x74\\xa9\\xf4\\x6f\\x56\\x11\\x99\\xdb\\xd2\\x7b\\x46\\xbf\\xe6\\x22\\x43\\xe0\\xc1\\x1c\\x0e\\xdf\\x13\\xb6\\x4f\\x41\\x1c\\x8e\\x8e\\xce\\xd3\\x5d\\x84\\x28\\xf7\\x9f\\x10\\xea\\xcf\\xfb\\x72\\x34\\xe5\\x46\\x41\\x3d\\x1e\\xb0\\xfa\\xd8\\x8c\\x0e\\x93\\x85\\x93\\xb4\\x3b\\x5e\\xe0\\xe4\\x28\\x5d\\x4d\\xdd\\xf5\\x29\\x5d\\xbf\\x1a\\x3d\\xdb\\xe9\\xf4\\x13\\x4d\\xd7\\x6d\\x3d\\xe7\\x04\\x62\\xc2\\xf0\\x4f\\xe0\\xae\\xbd\\xf5\\x9a\"},\n{{0x97,0x76,0xa4,0x67,0xfa,0x14,0x00,0x73,0x54,0x12,0xa7,0x9b,0x49,0x5f,0x9f,0xca,0x07,0x8c,0xe1,0xd8,0x7a,0x85,0x30,0xd8,0x5c,0x26,0x05,0x5d,0x3a,0x39,0x44,0x88,},{0xc7,0xdb,0xe0,0xe4,0x1c,0x0a,0x31,0xc0,0x94,0x27,0x93,0xff,0xd1,0x42,0xd8,0xb9,0x5c,0xc8,0x2e,0x5c,0xaa,0x92,0xa3,0x79,0xba,0x23,0xf6,0x44,0xed,0xf2,0x24,0xda,},{0xe1,0x31,0x7b,0xa2,0xa1,0x23,0xae,0x3b,0x29,0xe7,0xb6,0x0e,0x8e,0x93,0xbe,0xed,0xd7,0xa0,0x84,0x51,0xa0,0x13,0x69,0x5b,0x6d,0xcf,0x35,0x8e,0x40,0x34,0x02,0x6d,0xc7,0x40,0x37,0xaf,0xbd,0xd2,0x17,0xff,0x4b,0x14,0x8b,0x02,0x91,0x38,0xf4,0xbc,0xc8,0xf9,0x83,0x6a,0xbb,0xae,0x7e,0x62,0x76,0xe9,0xe7,0x69,0xdb,0xd8,0xf0,0x07,},\"\\xd7\\x85\\x53\\xa1\\xb7\\x05\\x5b\\x58\\xb2\\x13\\x10\\x1b\\x1c\\x84\\xc5\\x3e\\x16\\x4e\\x39\\xc6\\xe9\\xd3\\x6d\\xb4\\x3f\\x30\\xe1\\x9e\\x2a\\x12\\x5a\\x9a\\x67\\x70\\x9e\\xaf\\xef\\x96\\x4f\\xa5\\xba\\xb7\\x26\\x1d\\xdb\\x3a\\x8a\\x01\\x88\\x45\\x7d\\xfb\\xf5\\x15\\x9c\\x40\\xe5\\x1d\\xa8\\x20\\x84\\x83\\x24\\x57\\x81\\xd7\\x13\\x1e\\x23\\xa8\\xbe\\xe5\\xe5\\x06\\x33\\x18\\x16\\xb9\\xde\\xee\\xfe\\x6e\\x55\\x6e\\x3f\\x0c\\x95\\xc6\\x68\\xd1\\xbe\\xdb\\x7d\\xa6\\x35\\x06\\x54\\x58\\xad\\x20\\x46\\x70\\x12\\xf5\\x9f\\x17\\x13\\x52\\x06\\x80\\x20\\xce\\x3c\\x75\\x87\\x86\\x93\\xf6\\x43\\x7b\\xc4\\xa0\\x9f\\x13\\xb9\\xb0\\xf0\\xcd\\xda\\xf1\\x69\\x1b\\x87\\x2f\\x82\\x00\\x80\\x93\\xeb\\xfb\\xe2\\x33\\xd0\\x31\\x3e\\x72\\xc8\\x63\\x2d\\x7d\\x17\\x93\\xf0\\xb8\\x1c\\x76\\x88\\xf5\\x44\\x70\\x33\\x0f\\x04\\xe6\\x48\\x60\\xe6\\x44\\x6b\\xfc\\x6d\\x96\\xc8\\x75\\x69\\xbf\\x18\\x2f\\x0f\\x43\\x85\\xaf\\x48\\x5d\\x42\\x99\\xca\\xc0\\x4e\\x06\\xba\\x47\\x34\\x65\\x56\\x6c\\x47\\x7f\\x07\\xb9\\xdb\\x27\\x7a\\xb4\\xa9\\xde\\x2f\\xb2\\xde\\xd0\\xa5\\x01\\x1c\\xd0\\x6d\\x67\\x5c\\x08\\x00\\xb3\\x4f\\x55\\xbc\\xf3\\xec\\x72\\xd2\\x1c\\xa1\\x50\\xc8\\xbf\\x23\\x61\\x28\\x7b\\xe8\\x1e\\xfa\\xbb\\x96\\xd8\\x68\\x8a\\x1d\\xee\\x3f\\x43\\x0f\\x06\\xf6\\x37\\xdf\\xd0\\x6f\\x15\\x14\\x64\\xa0\\x5c\\x95\\xf5\\xfe\\x76\\xaf\\x2e\\x06\\xd0\\x12\\x3f\\x69\\x48\\xa2\\x6b\\x3b\\xe8\\x35\\x04\\x5a\\xa2\\x68\\xcc\\x1b\\xe9\\x76\\x69\\x71\\x07\\x77\\x02\\x08\\xa7\\x56\\x8f\\x02\\x5c\\x2d\\x53\\xc7\\x19\\xe5\\x24\\xcc\\x36\\x9d\\x9b\\x4a\\x33\\x7d\\x8f\\xd1\\xef\\x34\\x5b\\x9b\\xca\\x57\\xfb\\xd7\\xb6\\x5a\\x6b\\x99\\x7c\\xad\\x3f\\xce\\x4c\\xf0\\x6f\\x2c\\xa4\\x3e\\xbe\\x29\\x86\\xd0\\x96\\x82\\xd4\\x7c\\x92\\x2b\\x2c\\xb7\\x56\\x9d\\x98\\xde\\x97\\xa6\\x16\\x4f\\x54\\x70\\xee\\xc7\\x1c\\xed\\xa5\\x20\\xcc\\xec\\x77\\x32\\xbd\\x01\\x68\\x9e\\xf8\\x16\\x56\\xe9\\xf6\\xd0\\xc5\\x8a\\x89\\x55\\x58\\xae\\xe8\\x63\\xf5\\x46\\x9e\\x7a\\xb9\\x79\\x15\\xbf\\xe0\\xb8\\x0a\\x06\\x4c\\x65\\x9b\\x18\\x30\\x31\\xf7\\xf1\\xa8\\x6f\\xb1\\x1a\\x9d\\x52\\x8c\\x28\\x15\\xdc\\xaa\\x2f\\x0d\\xec\\x3d\\x21\\xa8\\x82\\xe1\\x06\\xe2\\x04\\x93\\xee\\x0a\\xcb\\x77\\x08\\xea\\xa2\\x91\\x25\\x74\\xae\\x97\\xbb\\x28\\x8b\\x41\\xfc\\x09\\x25\\x05\\x3a\\x29\\xb0\\xbf\\xbc\\x0e\\xba\\xe8\\xd6\\x3c\\xc0\\xb4\\x6e\\x37\\x38\\x04\\x6c\\x5a\\x20\\x25\\x30\\xbc\\xb1\\x5b\\x18\\x7a\\x72\\x85\\x4a\\xa2\\xd8\\xa7\\xa7\\x6c\\x89\\xa8\\x9a\\x5d\\xb4\\x60\\x32\\x07\\x4e\\x1b\\xd7\\xde\\x77\\xef\\x20\\x65\\xa0\\x8f\\x38\\x9d\\x78\\x3c\\xf7\\x59\\xeb\\xd5\\xa6\\x3a\\x44\\xd9\\x19\\xf9\\x48\\xf5\\x60\\xc3\\xe9\\x4c\\x42\\x39\\xe2\\x74\\xe0\\x51\\xa2\\x04\\x85\\xa4\\x30\\xcb\\xd5\\x29\\xf3\\x13\\xd9\\xf7\\xed\\x67\\x9a\\x34\\x18\\x7b\\x24\\xf8\\x41\\x30\\x87\\xa9\\x02\\x1e\\x47\\x31\\x73\\x0f\\x5f\\x46\\x1f\\xc5\\xaa\\xd6\\x65\\x4d\\xfa\\x1c\\x05\\x04\\xd2\\x61\\x24\\x70\\x7e\\x63\\xee\\x57\\xf9\\x31\\xb2\\x78\\x59\\x08\\xf8\\x6b\\x10\\x4b\\x3e\\xcb\\x96\\x00\\x02\\x51\\xd0\\x6c\\xe1\\xfa\\x45\\xe4\\xcd\\x6d\\xf9\\x1a\\xc1\\x5b\\xbf\\x7c\\xa3\\xc3\\xeb\\x8e\\xe0\\x82\\x76\\x12\\xa2\\x9e\\xcb\\x7a\\x36\\xd5\\x47\\x0c\\x40\\x50\\x51\\x82\\xfa\\x9a\\xc9\\x13\\x57\\x0d\\x0c\\x10\\x50\\xd9\\xa4\\x34\\x55\\xcb\\x7b\\xdc\\x17\\xd1\\x69\\x80\\x5f\\x01\\x89\\x56\\xf8\\x54\\xf8\\x91\\x9b\\xbf\\xb7\\x19\\xe1\\x86\\x7b\\x36\\xa6\\x4a\\xab\\xcd\\xb8\\x07\\xf4\\x8d\\xcc\\xc0\\x67\\x2f\\x67\\x88\\x74\\x50\\xb3\\xf3\\xe9\\x58\\xd7\\x84\\x99\\xe0\\xd1\\xab\\x36\\x8a\\xa4\\x94\\x42\\xe5\\xe8\\xa3\\x32\\xbf\\xfd\\x44\\xc1\\x69\\xea\\x67\\x62\\x9c\\x85\\x72\\x4d\\xb6\\xf1\\x58\\x6b\\x6c\\x6b\\x5b\\xe4\\x86\\x4d\\xfd\\x53\\xda\\x7c\\x0f\\x7b\\x8b\\xb3\\x57\\x31\\x16\\xbe\\x50\\x77\\xd3\\x32\\xbd\\x12\\xa6\\x30\\x0f\\x3a\\x68\\xa8\\x98\\x66\\xb4\\x79\\xec\\x2b\\xaa\\x27\\x7f\\x9f\\x56\\xf6\\xe1\\xd4\\x9d\\x74\\x1e\\xb3\\x22\\x03\\x5f\\xf8\\xcb\\x1d\\xe8\\x5c\\x8d\\xc8\\x7a\\xc8\\xe6\\xe4\\xc5\\xd2\\x0b\\xfb\\x6d\\x31\\x7a\\xb1\\x25\\x93\\x0c\\x42\\x60\\x9b\\xe3\\xae\\x82\\x24\\x2a\\x9e\\xf0\\x56\\x88\\x58\\xd8\"},\n{{0x09,0xd8,0x12,0x26,0x97,0x12,0x6d,0xfc,0x7e,0x11,0x68,0x5a,0x04,0x12,0x3f,0xdf,0xb4,0x7c,0xcd,0xdb,0x44,0x99,0xd8,0xa3,0xae,0xf4,0x18,0xcb,0x65,0xae,0xd7,0xa7,},{0xf8,0xdd,0xb1,0xc0,0x0f,0x6e,0x0f,0x4b,0xea,0xa6,0xfc,0x38,0xe5,0xd0,0xa5,0x77,0x5e,0xe2,0x8c,0x80,0xdb,0xde,0x3f,0x0c,0x79,0x30,0xa3,0x3a,0xad,0x71,0x50,0xf3,},{0x18,0xcf,0xaf,0x6d,0xc8,0xe4,0xe8,0x58,0x2b,0xce,0xfe,0x0c,0xdc,0x6f,0xce,0xfe,0x6a,0x4a,0x87,0xea,0x62,0x95,0x85,0xf3,0x7d,0x2f,0xba,0x44,0x6b,0x3a,0xeb,0xd4,0x52,0x42,0x63,0x82,0xda,0x0d,0x49,0x1c,0x39,0xcb,0x7d,0x54,0xd2,0x73,0x00,0x5d,0xc1,0x32,0x12,0x15,0x68,0xd2,0xab,0x67,0x45,0x20,0xad,0xda,0x75,0x23,0x84,0x0d,},\"\\xa0\\xd8\\xd8\\x79\\x8e\\xba\\x22\\xf5\\x67\\x60\\xc3\\x06\\x43\\xe9\\xfc\\x67\\x95\\x54\\x7e\\xa5\\xf2\\xf2\\xbb\\xd1\\x1c\\x03\\x92\\xb2\\xeb\\xf7\\x11\\xac\\xa2\\x2f\\x08\\x24\\x19\\x9f\\xc3\\x18\\x8a\\x45\\xbd\\xff\\xde\\x70\\xec\\xe9\\xab\\x15\\xa5\\xea\\x89\\x62\\x2a\\x58\\x71\\xe0\\xef\\x76\\x85\\xd1\\x0f\\x12\\x74\\xcc\\x19\\x5b\\x4f\\xda\\x81\\xf8\\x79\\xd1\\xe9\\xbf\\x42\\xf8\\x73\\xb2\\x0a\\x85\\x9c\\x23\\x3f\\x9e\\x49\\xad\\xbf\\x05\\x77\\x31\\xe1\\x13\\x35\\xe9\\xb6\\xd8\\xed\\x0e\\x06\\x9e\\x13\\x4e\\xc4\\x61\\xca\\x88\\x90\\xd7\\xb0\\x47\\x3c\\x40\\x5e\\x8a\\x9d\\x95\\xd1\\x57\\x11\\xb1\\x24\\x76\\x10\\x37\\x62\\xc6\\x26\\xd9\\xf2\\xaa\\x5d\\xd5\\x19\\xbd\\x82\\x5b\\x60\\xb3\\x23\\x4e\\xbf\\x65\\x1e\\x0d\\x19\\x33\\x37\\x1c\\x52\\xbf\\xd8\\xce\\x33\\xfc\\x36\\xbb\\xa3\\x28\\xf7\\xf3\\xf2\\xcc\\xc0\\x10\\x00\\xa8\\x99\\x04\\xaf\\x37\\xe4\\xe1\\xe9\\xe1\\x5f\\xff\\xab\\x5c\\x2b\\x0c\\x47\\xf3\\x7c\\xdc\\xb0\\x68\\xdb\\x33\\xac\\x36\\xa5\\xf0\\xd6\\xde\\x12\\x03\\xfb\\xf8\\x94\\x93\\x24\\xbd\\x3e\\xfd\\xa0\\xf9\\x88\\x9d\\xb0\\x0d\\xa2\\x31\\x7b\\x49\\xfd\\x18\\x69\\x99\\xdf\\x7f\\xcd\\xc3\\xcb\\x4e\\x1d\\x18\\xfa\\xa2\\x54\\x56\\x1c\\x25\\x11\\x78\\xb8\\xd3\\x3f\\xdc\\x9d\\xcc\\xd8\\xd2\\xd7\\x21\\xb9\\x3a\\x53\\x6c\\xcd\\x3c\\x0e\\x9c\\x85\\x63\\x37\\xf1\\x95\\xee\\xe7\\xda\\x9a\\x7f\\x6b\\x0a\\x42\\xb7\\xc5\\x41\\xc6\\xa6\\x8c\\x59\\x5b\\xf3\\x47\\x04\\xd9\\xfe\\x3a\\x56\\xd2\\xec\\x84\\x81\\xd5\\x77\\xc9\\x6e\\xcc\\x08\\xb8\\xe4\\x0a\\xcd\\xbf\\x05\\x0e\\x20\\xc6\\x83\\xf3\\x9c\\x41\\x4e\\x8c\\xbf\\xcf\\x4a\\x01\\x52\\x31\\x4c\\x05\\x98\\x7a\\x83\\xbd\\xe3\\x02\\x5b\\x73\\x5c\\xca\\x30\\x23\\xab\\xc5\\xfe\\xb7\\xe0\\x0d\\x02\\x36\\xb4\\xf2\\x4b\\x15\\xe6\\x79\\xdb\\x05\\x2c\\x8d\\x2f\\xdd\\xb3\\xbe\\xf8\\x66\\x3a\\x6d\\xf8\\x19\\xa9\\x81\\x55\\x27\\xa1\\xa2\\xf6\\x0a\\x0f\\xa4\\xe5\\x07\\x8d\\xdc\\x6d\\x43\\x5f\\xe8\\x92\\x87\\xb3\\x0f\\xfd\\xeb\\x5d\\x9a\\xe0\\x5d\\x1a\\x86\\x90\\xfb\\xc7\\x59\\x0a\\xad\\x57\\xd4\\x3d\\x22\\xc1\\x2a\\xce\\x2c\\x81\\x96\\x88\\x8e\\x35\\x4e\\x9f\\x78\\x2f\\x5d\\xbb\\x44\\x14\\x9e\\x83\\xfb\\x8b\\xbc\\x9d\\xa6\\xd8\\x9c\\xe2\\x06\\xc1\\xe2\\xb6\\xb2\\xb2\\x8f\\x93\\x3f\\x3e\\x5f\\xf1\\x17\\x5a\\x31\\xa8\\xff\\x5d\\x31\\xe6\\x5c\\x8b\\x00\\xc5\\xba\\x46\\x22\\x24\\xa1\\xe0\\x9d\\x4f\\x09\\xcb\\x40\\xfc\\x87\\xc3\\x6e\\x7d\\x28\\x5c\\x77\\x4a\\x96\\x97\\x62\\x03\\x65\\x18\\x28\\xe7\\x83\\x62\\x88\\x47\\xac\\x51\\x2e\\x5d\\x1c\\x35\\xb3\\x5b\\x03\\x01\\x71\\xf9\\x23\\x96\\xf5\\xff\\xaf\\xf5\\x85\\xce\\xad\\x04\\xb6\\xae\\x21\\x0d\\x80\\x70\\x7c\\xc6\\x83\\x2d\\x98\\xa2\\x0d\\x3a\\x94\\x76\\x48\\xda\\x26\\x04\\x93\\x7f\\xef\\xd2\\x5a\\x9f\\xe0\\xfc\\x5c\\xac\\x08\\x3d\\xdd\\x7d\\x20\\x75\\x30\\x7f\\x4f\\x38\\x26\\x64\\xf6\\x87\\xdc\\xe8\\xc6\\x55\\xde\\xd9\\xc1\\x2d\\x48\\xff\\x76\\x01\\xdf\\x2a\\x48\\xd3\\x7f\\xe2\\x14\\x97\\x08\\x44\\xc0\\x75\\xf2\\xea\\xb0\\x02\\x05\\x9f\\xc2\\x27\\x1e\\x61\\x7c\\x96\\x57\\xa0\\x1b\\xec\\x1d\\xd3\\x8f\\x6c\\x28\\xba\\x8a\\x61\\x7b\\xd3\\x08\\x51\\xe3\\xf9\\xdb\\xac\\x90\\x44\\x18\\xdf\\x1d\\x02\\x15\\xad\\x45\\xdf\\xc9\\xf0\\x2b\\x5c\\x5e\\x9f\\x9b\\xbc\\x6d\\xe8\\xb0\\x7a\\xf0\\xbd\\x1f\\x7f\\xa8\\x92\\x25\\x44\\xf1\\x2d\\x2a\\x3e\\x1a\\xad\\xff\\x7e\\x9c\\x6b\\x93\\x32\\x0c\\x3a\\x61\\xef\\x33\\xda\\x07\\xeb\\x87\\xb1\\x61\\x7f\\x9e\\x77\\xd7\\x70\\x2e\\x55\\x8b\\xc7\\xd8\\x12\\x2e\\x0d\\xfe\\x2a\\xe8\\x3e\\x83\\x6c\\x5b\\x1a\\x62\\xaa\\x58\\x5c\\x0d\\xff\\xe7\\x16\\xf7\\x46\\x3c\\x0b\\x33\\xda\\x5b\\x1e\\xda\\x55\\x6a\\x1e\\xf1\\xe4\\x50\\x42\\xc7\\x9b\\xdd\\x3e\\xc3\\xcb\\x88\\x63\\xa7\\xbc\\x1b\\x0f\\x7e\\x1c\\x05\\xbd\\x99\\x20\\xf0\\x5b\\x4e\\xda\\x86\\x51\\x77\\x05\\xed\\x07\\xf6\\xdc\\xa7\\xbb\\x00\\xae\\x04\\x56\\xe6\\x78\\x7d\\x9f\\xae\\x8e\\xde\\x4e\\xcd\\x0b\\xc5\\x72\\xeb\\x5c\\xc6\\xd1\\x9e\\x89\\x1f\\x1b\\xcb\\x22\\x9e\\x94\\x09\\xe0\\x65\\x74\\xc7\\xdf\\x05\\x81\\x73\\xcb\\x58\\xc3\\xfd\\xf2\\x0f\\x3f\\xf1\\x7c\\x37\\x05\\xaf\\x62\\xd9\\xb7\\x22\\x5c\\x57\\x43\\xf6\\x00\\x60\\x7f\\x77\\xcb\\xe7\\xd6\\xe7\\x61\\x8a\\xbc\\x79\"},\n{{0x10,0x20,0x1b,0xf0,0x08,0x43,0x67,0x59,0x0d,0xe6,0x74,0xcc,0x0e,0xd2,0x64,0x8e,0xc2,0x5d,0x3b,0xa8,0xdb,0x40,0xd0,0x0e,0xde,0x15,0x33,0x98,0x50,0x8b,0xc1,0x26,},{0xba,0xdb,0xd0,0x5e,0x5f,0x79,0xe3,0x11,0x69,0xf7,0x40,0xba,0x46,0xa5,0x89,0x10,0xa1,0xb7,0x77,0x05,0xaf,0x45,0x71,0x7b,0x2a,0xf8,0x08,0x56,0x45,0x7c,0x58,0xc9,},{0xf1,0xd9,0x96,0x58,0x8b,0x29,0x8f,0x27,0x1e,0x97,0x0c,0xeb,0xd2,0xa1,0xb3,0x39,0x97,0x9c,0xd2,0x9d,0xdd,0xee,0x36,0x45,0xd0,0x7f,0xab,0x8a,0xb4,0x65,0xdd,0xe3,0xe9,0x86,0x67,0xec,0x01,0xad,0x7f,0x1c,0x0a,0x65,0x92,0xe0,0x69,0x7e,0x66,0x5c,0x72,0xfd,0x38,0x14,0xdb,0xe1,0x89,0xed,0x5f,0x4e,0x76,0xc7,0x94,0xe5,0x38,0x09,},\"\\x7b\\xb1\\x47\\x06\\x17\\xd1\\x1e\\x45\\xeb\\x60\\x2a\\x82\\x9a\\xd7\\x73\\xee\\x2b\\xb7\\xe6\\xb8\\x8d\\xa4\\xc0\\x4a\\x72\\x16\\xa4\\x50\\xf8\\x49\\x93\\xa4\\x98\\xcb\\xd3\\xb9\\x25\\x40\\x28\\xf2\\xf9\\x9f\\xc2\\x1a\\x23\\x28\\x8b\\xdc\\x1e\\x15\\x1a\\x72\\xa9\\x13\\x0c\\x3d\\xed\\xda\\x1b\\xbb\\xcc\\xd4\\xe6\\xc0\\xf4\\x8a\\xe9\\xf3\\x53\\x18\\xcb\\xef\\xc9\\x59\\xf4\\x05\\x04\\x5e\\x6e\\x0b\\x5f\\xb2\\xe7\\x38\\xf2\\xb7\\x65\\xbe\\x11\\xb1\\xb6\\xa0\\xf1\\xe8\\x31\\x95\\x49\\xd9\\x5f\\xa8\\xd1\\xdf\\x81\\x67\\xcd\\x4a\\x77\\x17\\xae\\x16\\x36\\xa9\\xdf\\x54\\xd9\\x6e\\xaf\\x2d\\x63\\x23\\x69\\x00\\xfd\\x11\\x33\\x82\\x52\\xa5\\x00\\x8d\\x5d\\x48\\x0e\\x2b\\x1e\\x98\\x61\\xd1\\xf7\\x06\\x88\\xc4\\x7e\\xae\\x46\\x89\\xda\\x01\\xa4\\x7d\\xa3\\xdf\\xb6\\xd2\\xba\\xb3\\xcd\\xf5\\x05\\xee\\x5d\\x80\\x1a\\x15\\x2c\\x26\\x70\\x93\\xd1\\x7e\\x9b\\xf7\\x13\\x7a\\x6e\\xe7\\xb8\\x34\\xd0\\x08\\x55\\x00\\xe4\\x01\\xc1\\x7f\\x32\\x86\\xc1\\x57\\x5d\\x1c\\x01\\x00\\xfa\\x98\\x07\\x63\\x0c\\x4a\\x99\\x06\\x54\\xc1\\xe7\\x1a\\x8b\\x71\\x56\\x27\\xbb\\x13\\xd4\\x42\\xc8\\x4a\\x44\\x98\\x44\\xc4\\x04\\xb8\\x72\\xbf\\xba\\xc7\\x18\\xa4\\x8d\\x0e\\xa0\\x94\\x5c\\x77\\x16\\x6a\\x53\\x13\\x9b\\x0f\\xf0\\x09\\x81\\x34\\x76\\x4f\\x9e\\xcd\\xb8\\x8e\\xab\\xe0\\x7c\\xcb\\x2c\\xce\\xd4\\x95\\x5e\\x08\\x24\\x9b\\x2f\\x57\\x70\\xad\\x41\\xfc\\xcd\\x7b\\x5b\\xb3\\x72\\xe6\\xc3\\x37\\x67\\xe0\\x7f\\x5b\\xe7\\xd1\\x07\\x12\\xde\\x81\\x84\\x1b\\x13\\x4e\\x19\\x3d\\xf0\\x77\\x6a\\x0f\\xc1\\x56\\xff\\x5d\\x0e\\x96\\xf4\\x0a\\x70\\x47\\x53\\xe1\\x14\\x5e\\x9f\\xa0\\x83\\xc4\\xdd\\xee\\xf4\\x41\\x62\\x34\\xf6\\xe1\\xa2\\x38\\x2c\\x8e\\x5b\\x3a\\xd4\\x05\\x45\\x8e\\x89\\xd2\\xf4\\x93\\xa4\\xd7\\xc2\\x9a\\x23\\xde\\x21\\x07\\x48\\x5b\\x7f\\x56\\x35\\x01\\x24\\xe7\\xe0\\xd6\\x95\\xc5\\x22\\xb6\\xde\\x7a\\x92\\x47\\xa2\\x92\\x4c\\xe6\\xf2\\x86\\x32\\x36\\xc1\\x0c\\xc2\\x12\\x64\\xad\\x54\\x59\\x0d\\x31\\x47\\x63\\xea\\x1a\\x19\\xaf\\xac\\xd9\\x0e\\xba\\x95\\x58\\x70\\x40\\x7e\\x8c\\x63\\x65\\xa1\\x43\\xa5\\xc1\\xb9\\xa8\\xbe\\x5e\\x4a\\x4d\\xca\\xdb\\x72\\xe0\\xd4\\x76\\x49\\xbd\\x53\\xab\\xd4\\x6b\\x5c\\x69\\x60\\xea\\xe2\\xca\\xb7\\x73\\x75\\x3c\\xc0\\xe0\\x4e\\x99\\x41\\x4b\\xc2\\xcb\\x30\\xf4\\x8b\\xb5\\x41\\x39\\xd0\\x66\\xe4\\x3e\\x2f\\x0e\\x1a\\x4a\\xe9\\x63\\x85\\x8b\\xef\\x96\\x7d\\xf8\\xc8\\x41\\x40\\xd2\\xd0\\x92\\x02\\xb4\\x06\\xd5\\xd8\\x5c\\xb7\\xa9\\x6c\\xc5\\x7f\\x23\\x3e\\xb2\\x18\\x7f\\xfd\\x02\\xf9\\x4e\\x92\\x29\\x7b\\x5e\\x69\\xd9\\x69\\xd3\\xa5\\x93\\x6e\\xfe\\x49\\x29\\x14\\x4f\\x25\\x8b\\xfb\\x39\\xdd\\x0c\\xe2\\x63\\x59\\xc4\\x54\\x9f\\xc2\\x18\\xa0\\xaa\\x54\\xf3\\x1b\\xd5\\x51\\xb8\\x78\\x1a\\xcb\\xbf\\x61\\xcb\\x3f\\x73\\x2c\\xda\\xf6\\x22\\xc6\\xa6\\x91\\x88\\xcf\\x55\\x7a\\x3a\\x92\\xed\\x15\\x3e\\x69\\x12\\x5a\\x40\\x90\\xac\\x45\\x15\\x36\\xa0\\xe9\\xa6\\x3a\\x41\\x78\\x29\\x10\\xff\\xcc\\xb4\\xe8\\x50\\x02\\x11\\x23\\xff\\xd1\\xf3\\xbf\\x39\\xc7\\x34\\x60\\xa6\\x5c\\xcf\\xe4\\xdb\\xa9\\xbd\\xef\\xb5\\xd5\\xf4\\xda\\x6c\\x46\\x9a\\xa1\\x32\\x2f\\xa2\\x70\\x43\\x23\\x83\\x63\\xee\\x72\\x91\\x86\\x88\\xd7\\xca\\x1c\\x4c\\x29\\x52\\xe4\\x30\\xd5\\x63\\x25\\x6b\\xb8\\x6d\\x35\\x0a\\x35\\xee\\x82\\xe0\\x15\\x04\\x74\\x7f\\x31\\xd0\\x2e\\x03\\xae\\xdd\\xa5\\x46\\xd0\\xf1\\xb2\\xf4\\x51\\xb8\\x70\\x82\\x16\\x02\\xd0\\x0e\\x81\\x90\\x36\\xad\\xe5\\xa7\\xc7\\xfc\\xd2\\x1a\\x6d\\xe6\\xaf\\x35\\xb1\\xf9\\x63\\x2a\\x70\\xaf\\x65\\xdf\\x64\\x45\\xf6\\xfa\\xdf\\xbc\\x0f\\x41\\x67\\x55\\xc8\\x24\\x66\\x40\\xe5\\x6b\\x85\\x6b\\x66\\xdd\\xd9\\x2a\\x60\\xc0\\x35\\x38\\x22\\x1d\\xc8\\xfb\\x14\\x2c\\xe2\\xdb\\xac\\xdb\\x74\\x25\\xf3\\x3c\\xb8\\x5d\\x85\\x0c\\xc0\\x2c\\x31\\x5c\\xfc\\x11\\x1f\\x6f\\x65\\x1d\\xde\\x1b\\xdb\\x67\\xfb\\x20\\x8e\\x1f\\x6b\\xde\\x78\\x4d\\xdc\\xf7\\xbd\\x18\\xc8\\x05\\x1a\\x2e\\x0b\\xbf\\x10\\x18\\xb8\\xf3\\x95\\x36\\xc5\\x89\\xde\\x65\\xea\\xdc\\x6c\\xf3\\x79\\xb7\\x7c\\xad\\x13\\xf9\\x08\\x9c\\xb3\\x23\\xfb\\x2e\\x94\\x3d\\x06\\xcd\\xd1\\x07\\x05\\xc1\\x21\\x13\\x4c\\x65\\x48\\xdc\\x53\\x41\\x5f\\x8c\\x37\\x0e\\xc6\\x90\"},\n{{0xc4,0xaa,0x42,0x52,0x46,0xb5,0x17,0x3f,0x5e,0xf8,0x98,0x15,0x2e,0xca,0x3d,0x09,0x2b,0xb4,0xc2,0xdd,0x02,0x85,0x3f,0xcf,0xc7,0x17,0x83,0x99,0xf4,0xe2,0xf7,0x58,},{0x29,0xb7,0x7a,0x30,0x75,0xf4,0x19,0x24,0x3c,0x0c,0x1b,0xc3,0x96,0x59,0xd7,0x31,0x17,0xac,0x00,0xe5,0x5e,0x8d,0xe3,0x8f,0xe9,0x82,0x9a,0x87,0x9c,0xc5,0xb8,0xa0,},{0x5d,0x85,0x45,0xa4,0xbe,0x3f,0xd6,0xda,0x25,0x78,0xc2,0xec,0xcb,0x64,0x8d,0x83,0xfc,0xfe,0x58,0x71,0x33,0xfa,0x7a,0xe4,0xa1,0xcf,0xca,0x9a,0xe6,0xda,0xa4,0x92,0x59,0xc9,0x52,0x04,0x4a,0x85,0xa2,0x0b,0x6f,0x53,0x24,0xf8,0x27,0xdb,0xa2,0xd1,0xa8,0x38,0x8c,0x40,0xa9,0x28,0xb9,0x50,0x91,0x3c,0x63,0x4f,0xb3,0x09,0x27,0x07,},\"\\x7d\\xf9\\x78\\xa1\\xf4\\x97\\x68\\x38\\xff\\xed\\x74\\x49\\xa4\\xdc\\x13\\x8b\\x60\\x4f\\x4b\\x2a\\x4a\\xe6\\x89\\xce\\x75\\x01\\x8e\\xbc\\xcd\\xab\\x2e\\xaa\\x0b\\x60\\x76\\x8f\\x72\\x08\\x25\\x7f\\x2b\\x28\\xe7\\xaa\\x09\\xbf\\x6c\\x05\\x88\\x8d\\xa4\\x6f\\xd3\\x96\\xd1\\xc8\\x03\\x01\\x17\\x50\\xe3\\x0e\\xb4\\x84\\x87\\x0c\\x88\\x06\\x97\\x76\\x96\\xf1\\x2e\\xbb\\x9f\\xee\\xb4\\xca\\xf9\\x2a\\x02\\xdb\\xaa\\x22\\xbb\\xff\\x63\\xf8\\x42\\xc3\\xba\\x14\\x7b\\xca\\x7c\\x00\\x31\\x42\\x78\\xac\\xd0\\xdb\\x17\\x35\\x69\\xf4\\xe3\\x65\\x27\\x95\\x8e\\xf6\\xf1\\x00\\x2b\\xd3\\xcd\\x01\\xf4\\x07\\xa8\\x65\\x31\\xed\\xcb\\xd9\\xf3\\x1b\\x3a\\x4a\\xb8\\x80\\xa4\\xf5\\xb5\\x2b\\x42\\xd0\\xd4\\xa1\\xba\\x66\\xa2\\x09\\x86\\x51\\xae\\x3e\\x6c\\x91\\x51\\xf4\\x02\\x73\\x28\\x5f\\x7f\\x6a\\x4e\\x81\\x60\\x6b\\xf9\\x80\\xf6\\x89\\x50\\x4b\\x42\\x08\\x0f\\xdb\\x97\\xc7\\x28\\x46\\xfb\\xa9\\x04\\x7c\\x7e\\x66\\x0b\\xa5\\xc6\\xbf\\x12\\x6a\\x9a\\x59\\x9e\\x25\\x71\\xfa\\x13\\x50\\x5a\\xf7\\x58\\x1b\\xfe\\xbc\\x16\\x51\\x3f\\x5c\\x94\\xdc\\x71\\x93\\x7e\\x6e\\x61\\xb3\\xea\\x10\\x93\\x9b\\x02\\xea\\x10\\x85\\x9f\\x32\\xd7\\x91\\x2b\\x9e\\x38\\x06\\xab\\xef\\x61\\x85\\xfc\\xff\\xa6\\x88\\x21\\x47\\x80\\x05\\xcb\\xfc\\x1d\\x63\\x7d\\xd0\\x20\\x42\\x56\\x20\\xa3\\x18\\x07\\x48\\x98\\xbd\\xc3\\x09\\x31\\xc5\\x9a\\xc0\\xc6\\x6c\\x4d\\x12\\x38\\xb0\\x97\\xcd\\x5b\\x17\\x0f\\x08\\x44\\x35\\xd4\\xba\\xe4\\x8a\\x03\\xd9\\x2f\\xd4\\x8f\\xc2\\xca\\xa4\\xff\\xc5\\x05\\xf1\\xbc\\xa5\\x16\\xfb\\xd6\\xe4\\xf8\\x88\\xcc\\xed\\x98\\x2a\\xe0\\xdd\\xb8\\x8f\\xc2\\x8a\\xa6\\x97\\xb7\\x07\\x1d\\x01\\x5b\\x0a\\xcb\\x28\\x09\\xb0\\x1d\\x1d\\x9c\\x7e\\x7b\\x53\\xee\\xe6\\x82\\x4c\\xc3\\x7c\\xce\\x5b\\x69\\x93\\xd8\\x8d\\x83\\xea\\xfc\\x2e\\x92\\x8a\\x6f\\x14\\x7d\\xb6\\xeb\\x80\\xb1\\xa6\\x9f\\x01\\x60\\x5b\\x04\\x6b\\xd2\\xfd\\x1d\\x92\\xc5\\x45\\x9d\\x6d\\x33\\x98\\xa9\\xca\\xa2\\x99\\xdd\\xd0\\xc3\\xba\\x2e\\x08\\x94\\x13\\x07\\xb1\\x20\\xcc\\x13\\x99\\x2f\\x70\\x03\\xac\\xed\\x14\\xa4\\xa4\\xd9\\x23\\xbb\\xb1\\x2f\\xc3\\x93\\xff\\xcf\\x92\\x0b\\x9f\\x6d\\x47\\x75\\xe9\\x4d\\x4a\\x51\\x22\\x67\\xfd\\x26\\xa6\\x99\\x7c\\x60\\x62\\xb4\\xc9\\x90\\x0f\\x98\\x62\\xb9\\xea\\x0c\\x8d\\x7d\\xf1\\x9f\\x05\\xc2\\xb6\\x04\\xaf\\x5b\\x98\\x64\\xfb\\x27\\x54\\xa8\\x07\\x3b\\xbb\\xfb\\x18\\x23\\x3e\\x6e\\x15\\x0f\\x72\\xa5\\x25\\xe3\\xa5\\x76\\x0f\\xcd\\xa7\\xd3\\x2a\\x60\\x03\\x4f\\x95\\x6e\\x3c\\xbd\\x34\\x36\\xc2\\x00\\x83\\x0b\\x3e\\x7a\\x14\\x57\\x12\\x20\\xbc\\xb6\\x27\\xd5\\xa4\\xbe\\x72\\xc2\\x0b\\x23\\x35\\x1b\\x2d\\x92\\x06\\x02\\xa5\\x1c\\x3e\\xb3\\x2c\\x12\\x37\\x03\\x9d\\xfb\\xff\\x43\\xc9\\x87\\xfd\\x85\\x63\\x77\\x7f\\x0e\\x5a\\x39\\xf8\\x14\\x6c\\x16\\x4b\\xdf\\xfc\\xe4\\x4f\\x3b\\x13\\xee\\x74\\xd6\\x4b\\xfd\\xcf\\x98\\x03\\xf0\\x3d\\xd0\\x17\\x2a\\xc4\\xfa\\x4b\\xf6\\xc7\\x83\\x9c\\xb1\\x1f\\x3d\\x34\\xba\\xef\\x0e\\x32\\xb5\\x49\\x42\\xfc\\x4f\\xa3\\x8f\\x47\\x3e\\x29\\x66\\xf4\\x91\\x1c\\x0e\\x80\\xd7\\x69\\x37\\xb2\\x5b\\x76\\x32\\x27\\x5b\\xa8\\x83\\x09\\x63\\x5a\\x60\\xdf\\x13\\x54\\x89\\x20\\x8d\\x3e\\x73\\x4b\\x67\\x2e\\xda\\x7d\\x2b\\xa2\\x15\\x79\\xab\\xa8\\xd8\\x86\\x0e\\xa7\\x64\\xfd\\x67\\xea\\xf9\\xc3\\x8e\\xa7\\x63\\x7d\\x1b\\xad\\x57\\xb2\\xf3\\xd7\\x82\\xb9\\x1e\\x1d\\x5d\\x92\\xac\\x30\\x0b\\xdb\\xa7\\xab\\x91\\x13\\xce\\x91\\x3d\\x0c\\x79\\x3c\\x12\\xa9\\xa7\\x26\\xe3\\xfc\\xab\\x05\\xcb\\x47\\x99\\x77\\x87\\x16\\x40\\x63\\x0d\\x45\\x9e\\x69\\xe8\\x1c\\xa5\\xcf\\x56\\xdd\\xb2\\xa0\\x61\\x1d\\x61\\xd4\\x81\\xc1\\xb8\\xce\\xf3\\x80\\x4b\\xd4\\xe5\\x75\\x4a\\x61\\xeb\\x49\\xb1\\x7e\\xf2\\xb0\\x3c\\x83\\x05\\x7b\\x5d\\x20\\xd8\\x82\\x05\\x8c\\x00\\xf5\\x4b\\x6c\\xca\\x86\\xbe\\x95\\x35\\x0d\\xd7\\xbc\\xb2\\x5e\\x4c\\x1c\\x46\\x58\\xf4\\x52\\x29\\xc8\\xbb\\x9f\\x5c\\xdf\\xcc\\x44\\x79\\x5c\\x97\\x8e\\x33\\x88\\xd3\\x25\\x76\\x01\\x06\\xe5\\x2b\\xe9\\x83\\x4b\\xd8\\x1f\\xfc\\x5c\\x62\\x48\\x6b\\x6f\\x33\\xc2\\x74\\x59\\xdf\\x17\\x8e\\xb9\\x46\\xe7\\xa8\\x2d\\xb9\\xce\\x0d\\x29\\x5b\\x92\\x5b\\xb6\\x12\\x6d\\xd5\\x5c\\x31\\xf4\\x9a\\x68\\xdc\\xef\\xc7\"},\n{{0xf1,0x3c,0xaf,0xde,0x6f,0x39,0xb9,0x63,0xdc,0xa9,0x66,0x26,0x86,0x2f,0x4f,0xbc,0x5c,0x2e,0x00,0xdd,0xf0,0x8b,0xec,0xea,0xc7,0xa6,0xe2,0xfc,0xa9,0xe1,0xcc,0xf7,},{0xc1,0xb0,0x1a,0x91,0xe8,0xee,0x0b,0x9f,0x19,0xa7,0x2e,0x5e,0x7e,0x0a,0xef,0xcf,0xdc,0x44,0xa1,0x57,0x47,0x4e,0x99,0xfe,0xeb,0xd0,0xff,0x55,0x2d,0x73,0xb2,0xac,},{0x6c,0xa9,0xf8,0x0a,0x62,0x50,0x1f,0xaf,0x31,0x9f,0xb8,0x4a,0xf4,0x71,0xf6,0x76,0xae,0x3f,0xff,0x85,0x56,0x5c,0x97,0x98,0x1f,0x14,0x57,0xcb,0xb8,0xc4,0x9f,0x97,0xb2,0x66,0x31,0x6a,0x99,0x2d,0xb0,0xd4,0x2b,0xc5,0x02,0xf0,0x95,0xa5,0xf2,0xd9,0xa4,0xe1,0xcf,0xac,0x0c,0xc9,0x35,0xd3,0x88,0x2c,0x8a,0x3a,0x0e,0xa6,0xe1,0x0e,},\"\\x2b\\xee\\x73\\xb7\\x4f\\x1b\\x76\\x22\\xeb\\x09\\x6a\\x28\\xd8\\x3a\\x81\\x9b\\xce\\xc2\\x2d\\x99\\x99\\xa3\\x20\\x62\\x10\\x3d\\x60\\x4a\\xe6\\xd7\\x8e\\xdf\\x8f\\x89\\x38\\x95\\xd2\\x22\\x0a\\xb7\\x56\\x90\\x41\\x0c\\x58\\xaa\\xb5\\x90\\xa9\\x8d\\xdf\\xf2\\x3a\\x94\\xd2\\x35\\x0f\\x88\\x9e\\x53\\x46\\x42\\x00\\xa5\\x27\\xd5\\x4d\\x62\\x57\\x11\\x07\\xb2\\x7e\\x57\\x4f\\x54\\x2e\\xba\\xc2\\x49\\xb8\\xe2\\xe3\\xce\\x08\\xd1\\xbd\\x27\\xbd\\x8d\\x29\\xf2\\xe6\\x12\\x43\\xde\\xef\\x0e\\x69\\x38\\xe5\\x2e\\xe2\\x99\\x2f\\xf2\\x18\\x7d\\x7a\\x7f\\x52\\x82\\xed\\xd9\\x8f\\xc4\\x98\\x5b\\x61\\x9a\\xcb\\x80\\xaa\\x9d\\x03\\xd6\\xcb\\x84\\xb8\\x21\\x10\\x6f\\x40\\xd6\\xe5\\xf4\\xc3\\x87\\xab\\x0a\\xf6\\xf2\\x06\\x61\\x5d\\x0a\\x17\\x5f\\x7e\\x60\\xee\\x27\\x55\\xae\\xa3\\x46\\x75\\xfd\\xd8\\x23\\xeb\\x24\\x10\\x9a\\x9b\\xd8\\x18\\xea\\x2d\\x9d\\x9b\\xd1\\x99\\xcf\\x8d\\xfe\\x79\\x62\\x4b\\x03\\x72\\xae\\x85\\xe9\\x8c\\x60\\x20\\x02\\x34\\xbd\\x41\\x3f\\x4a\\x62\\xce\\x68\\xa4\\x7b\\x6c\\x9b\\x12\\x85\\x7c\\x0d\\x39\\x9a\\x44\\x8e\\x5a\\x52\\x80\\xe9\\xf2\\x2f\\x9b\\x12\\xea\\x2c\\xd3\\xc6\\x87\\x13\\xe7\\x7d\\x0a\\x11\\xf3\\x62\\x8d\\x8e\\xc5\\xe0\\x60\\x63\\x90\\x31\\xd3\\xb6\\x40\\x02\\x1c\\x9c\\x38\\x80\\x9d\\xc5\\xf4\\x2d\\x2e\\x1c\\x2e\\x23\\x46\\xc8\\x6e\\x24\\xee\\xdc\\x59\\x84\\xa1\\x15\\xa4\\x2d\\xe8\\xde\\x7e\\x35\\xc9\\x91\\x75\\x39\\xe8\\x98\\x85\\xca\\x91\\x6e\\x07\\x2a\\xfd\\x5d\\x46\\x84\\x6b\\x2a\\x93\\x59\\x61\\xc2\\xfe\\x28\\xe9\\xeb\\x3c\\x8f\\x89\\x6b\\x86\\xfc\\x12\\x0c\\xbd\\x3a\\xf2\\xaa\\x13\\x9c\\x49\\x9d\\x29\\xcf\\xc3\\x69\\x9d\\xb7\\x9c\\x14\\x48\\x4e\\x9e\\xc2\\x57\\xa5\\xf6\\x43\\x44\\xb7\\xad\\x1e\\x3d\\xfb\\x34\\xee\\xe7\\x65\\x4c\\x6b\\xf1\\x2f\\xd3\\x8f\\xbb\\xa8\\x0f\\xe1\\x76\\x2a\\xab\\x57\\x11\\x2b\\x3a\\x94\\xe2\\xbe\\xe7\\x90\\x41\\xd1\\xe8\\x84\\x40\\xf8\\x5f\\xb7\\x2d\\xde\\x68\\xd4\\x9e\\x84\\xbc\\xed\\x99\\x8a\\x2f\\x63\\x35\\x44\\x6e\\x4a\\x83\\x5e\\x70\\xc5\\xf8\\x27\\xfb\\x3a\\xd7\\x82\\x3d\\x5f\\xbe\\x3b\\xe5\\xf6\\xec\\x7e\\x43\\x4e\\xe5\\x24\\xcc\\xd9\\xff\\x5b\\x7e\\x72\\xa3\\x2d\\x09\\x1a\\x7e\\x17\\xc8\\xb1\\xae\\x41\\xa1\\xaf\\x31\\x79\\x3c\\xce\\x91\\xd8\\x4c\\x36\\x22\\x67\\x89\\x69\\xc8\\xf5\\x17\\xdc\\x26\\xe3\\xcd\\x61\\xd2\\x44\\x69\\x12\\x28\\x3f\\x93\\x53\\xbb\\x5a\\xd0\\x3c\\x11\\x1c\\x62\\x33\\xde\\x31\\x4c\\x61\\xb8\\x31\\xcb\\xf3\\x8b\\x04\\xfe\\x58\\xcf\\x44\\xf1\\xd2\\xd0\\xb4\\x5f\\x25\\xa6\\xb4\\xe0\\x25\\x68\\x59\\xcd\\x5d\\x83\\x0f\\xac\\x5e\\xc3\\xc8\\xd7\\x63\\x98\\x55\\x9e\\x9b\\x26\\x01\\x0f\\x5e\\x1d\\xa5\\xf2\\x5d\\x22\\x00\\x93\\x54\\x53\\xff\\xac\\x5a\\xea\\x51\\xf7\\xe8\\x1e\\x72\\xec\\x8e\\x5f\\x04\\xd2\\xf8\\x85\\xc7\\xb4\\x5c\\x63\\xf6\\x44\\x56\\xcf\\xe2\\x31\\xb8\\xcb\\x24\\xaa\\x16\\x20\\xa9\\x02\\x63\\x9c\\xa7\\x8d\\xd3\\x91\\xaa\\x4a\\x3d\\x03\\xe1\\x19\\x75\\xc8\\x90\\x7f\\x96\\x4f\\xd5\\x5d\\xf9\\xbb\\xb1\\x40\\xe3\\x8d\\x6d\\xb9\\x32\\x56\\xb4\\xb3\\x9c\\x2b\\x7b\\xcb\\xe3\\x5b\\x11\\x82\\x6b\\xbf\\x8c\\x08\\xf1\\xdc\\xb4\\x8e\\xdc\\x4b\\xfb\\x70\\x46\\x2a\\x35\\xea\\x8c\\xd8\\xcb\\xa7\\x9f\\xab\\x8b\\x4c\\x44\\xe7\\x3b\\xe7\\xec\\xfa\\x11\\x21\\x66\\xf6\\xdc\\xab\\x70\\xd8\\xbb\\x55\\xd8\\xb8\\x42\\x8c\\x2d\\xa7\\x1a\\xac\\xa2\\xfc\\x3d\\x90\\xf3\\xcc\\x5e\\xd0\\x15\\x51\\x35\\x8d\\x60\\x78\\x9b\\x9d\\x57\\x1e\\xfe\\x10\\x89\\x20\\x27\\xfa\\x37\\x40\\x4a\\xaf\\x59\\xec\\x1c\\x2d\\x71\\x11\\xec\\xc3\\x59\\x24\\x67\\xed\\x1d\\x9b\\x8a\\xba\\x8e\\x22\\x9e\\x32\\xd2\\xa0\\x0c\\x19\\xdb\\x71\\x87\\xfb\\xcb\\x12\\x20\\x61\\x96\\x1c\\x1f\\xda\\xca\\x30\\x7e\\x9c\\x9c\\x9d\\xe9\\x72\\xad\\x51\\x40\\x2f\\xa6\\x7d\\xc1\\xc2\\xa4\\x03\\xb3\\xc5\\xe8\\xb1\\xe2\\x46\\x86\\x2d\\x6a\\xd6\\xa4\\x98\\xdb\\x6d\\x76\\x1f\\xb5\\x66\\xf6\\x06\\x59\\x42\\xb6\\x0a\\xd4\\xb4\\x30\\x9d\\x18\\x2b\\xc5\\x15\\x4c\\xfc\\x36\\x86\\x31\\x85\\xa8\\x7e\\x23\\xab\\xaa\\x1d\\x54\\x1a\\xb7\\x63\\xa4\\xa1\\x06\\x6c\\x0a\\x7a\\x8c\\x3d\\x82\\x1a\\xe3\\x2f\\xd3\\x1c\\x88\\x92\\x40\\x10\\x46\\xd0\\xa2\\x0e\\x91\\xa6\\x47\\x79\\xf4\\xbd\\xa8\\x11\\x20\\xaf\\x3f\\xb3\\x48\\x6d\\x3f\\xc0\\xa7\"},\n{{0xc8,0x46,0x34,0x42,0x61,0xa3,0x48,0x65,0x39,0x38,0x34,0xbf,0xaa,0x3a,0x15,0xa3,0xf5,0x3a,0xc9,0xe1,0x38,0x33,0xb0,0xb2,0x87,0x12,0x27,0x81,0xb7,0x9d,0xe3,0x92,},{0xeb,0xad,0xe0,0x22,0x61,0x95,0xae,0x25,0x4b,0x61,0x15,0xe2,0x16,0x96,0xa9,0xc6,0x5a,0x19,0xd5,0xe0,0x40,0x44,0x31,0x31,0xc2,0x2b,0x89,0xf0,0x2f,0x69,0xab,0x78,},{0xd5,0xe4,0x1b,0x47,0xad,0x0f,0x34,0x00,0x70,0x97,0x70,0xed,0x43,0x91,0x9b,0xaf,0xdf,0x24,0x38,0x1b,0x66,0x15,0x44,0xe5,0x1d,0x8b,0x5c,0xee,0x9e,0x97,0xb3,0x67,0x6a,0x4c,0x0f,0xfa,0xeb,0xb2,0xcb,0xd2,0xdb,0x79,0x85,0x32,0xb6,0x5c,0xf6,0x54,0xa5,0xb6,0xc1,0x66,0xef,0x88,0x6c,0xb0,0xfb,0xbf,0x4a,0x4f,0x84,0x4c,0x44,0x0b,},\"\\x5a\\xbd\\x13\\xe9\\x5b\\x6e\\xe1\\xd5\\x51\\x47\\x68\\x28\\x22\\x00\\xa1\\x4f\\x7d\\x1a\\x57\\x1f\\x34\\x68\\xe2\\x2e\\xfe\\xc9\\x93\\x46\\x30\\x66\\xa3\\x7a\\xec\\x83\\x73\\xe5\\xfb\\x49\\x95\\x64\\x19\\x1f\\x32\\x94\\xa9\\xb3\\x0a\\xfb\\x5f\\x1a\\x34\\xd4\\xd8\\x8a\\xbc\\x3e\\x9b\\xc3\\x03\\xc1\\xab\\xa0\\x5b\\xd8\\xfa\\xca\\x90\\xee\\x35\\xd9\\x7a\\xc3\\xdd\\x91\\x06\\xf6\\xfa\\x3c\\xa8\\x1a\\x38\\x10\\xec\\xce\\xfa\\x6a\\x20\\x9e\\xa3\\xf3\\xfc\\x30\\x49\\xdc\\xb1\\xb0\\x03\\xc7\\x28\\xf7\\xf6\\x37\\x4c\\xa9\\x8c\\x58\\x2d\\xe6\\xdb\\x1a\\xf7\\x60\\xf0\\xa0\\x21\\x33\\xca\\x4a\\x01\\x03\\x24\\x30\\x4d\\x26\\xa0\\xe5\\x0a\\xf0\\xd1\\x3c\\x13\\x4d\\xa3\\x4a\\x03\\xa4\\x1e\\x83\\xec\\x8f\\x10\\xea\\x5b\\x85\\x9b\\xec\\x1f\\x51\\xb0\\x1c\\xab\\xb2\\xd1\\x6c\\x1f\\xc5\\x2b\\x05\\x8f\\x8e\\x5d\\xef\\xae\\xde\\x12\\x81\\x71\\xc2\\xe0\\x26\\x90\\x23\\x16\\xf8\\x71\\xb3\\x5e\\x32\\x92\\x65\\x6f\\x0e\\x5b\\x39\\xbb\\xbc\\x81\\xd0\\xc0\\x83\\x0e\\x6a\\xc0\\x1f\\xac\\x9b\\x45\\x39\\xf4\\x7f\\x9a\\xcf\\xbd\\x58\\xb7\\xab\\x9f\\x5a\\x12\\x56\\x00\\xf2\\x51\\xa2\\x71\\xd7\\xbf\\x16\\x7f\\x29\\x54\\xca\\x8e\\x1e\\x0c\\x96\\xe1\\x6b\\x06\\xe8\\x30\\x7d\\xf8\\x8b\\xb8\\xe9\\xd5\\x7d\\x5b\\xa0\\x44\\xf2\\x7f\\x3e\\xaf\\xf8\\x1d\\x9f\\x15\\x05\\x54\\xaa\\x71\\x22\\xfd\\x10\\xd1\\x1f\\x35\\xd2\\xbe\\x2b\\x16\\x24\\xe3\\xe1\\xa1\\xd7\\x7f\\xea\\x4c\\x5c\\x7f\\x8b\\x98\\x3e\\x94\\x5b\\xa8\\xc0\\x8d\\xc1\\x54\\x5b\\x3e\\x6b\\x29\\x73\\xad\\x04\\x1c\\x44\\xd0\\x61\\x7e\\xcc\\xc8\\x71\\xa3\\x82\\x1a\\x9f\\xfe\\xa9\\xdb\\x7c\\x2b\\x0d\\x05\\x5d\\xa5\\x5d\\xe0\\xb3\\x50\\x63\\xe4\\x22\\x5a\\xee\\x6b\\x22\\x5a\\xb2\\xa7\\x90\\x6a\\x8e\\xe3\\x29\\xd1\\xb3\\x97\\x2e\\x0d\\x1f\\x70\\x81\\x7c\\x50\\xcc\\xfe\\x94\\x03\\xd1\\x2a\\xd6\\x2c\\x94\\x92\\x3b\\x9a\\xa2\\xd7\\xf8\\x5a\\x8d\\xda\\x47\\xbe\\x4d\\xce\\xc0\\xdc\\x2b\\x0b\\x58\\xf7\\xac\\x19\\x0a\\xe0\\x57\\x9b\\x9b\\x13\\xbb\\xb8\\xb1\\x6a\\x31\\xb0\\xab\\x4d\\x6f\\x27\\x91\\x25\\x3a\\xb4\\x75\\x1b\\x53\\x6b\\x88\\xd3\\xb4\\x93\\x7c\\xc3\\xa1\\x10\\xaa\\x82\\xa6\\xff\\xed\\x68\\x53\\x52\\x4b\\x66\\xb3\\xef\\xfc\\xd2\\xf6\\x3c\\x6f\\x96\\x45\\xce\\xa1\\x3a\\xa2\\x3c\\xd1\\xc9\\x9d\\x9f\\xfd\\xa4\\xcd\\x3a\\x9c\\x5d\\xf4\\x5e\\xc7\\x47\\x26\\xc3\\x47\\x11\\x28\\xb7\\x08\\x9f\\xbd\\x82\\x69\\x4d\\x2d\\x3f\\x08\\xdc\\x93\\x06\\xc0\\xfc\\x9c\\xe7\\xc8\\x01\\x13\\x8e\\xb1\\xec\\xb7\\x56\\xe5\\x71\\xe9\\x05\\x9b\\x75\\xed\\x03\\xf9\\x2a\\x31\\x50\\x2f\\xbe\\xb5\\xfe\\xc5\\x1d\\xe9\\x35\\x90\\x10\\xc4\\x39\\x7d\\x28\\xb6\\x5e\\x35\\x6e\\x38\\x00\\x1d\\x0d\\x51\\xac\\x96\\x00\\x72\\x8c\\x78\\xb5\\x76\\x6e\\x0f\\x21\\x79\\x38\\xb4\\x10\\xe7\\x85\\xb4\\xc0\\x1e\\x86\\xa3\\x45\\x2b\\xcb\\x38\\x84\\xac\\xa4\\x75\\x40\\x85\\x9c\\xc4\\x9b\\x00\\x0f\\x0b\\x61\\xfd\\xbe\\x72\\x75\\x25\\x74\\xb2\\x7a\\x22\\xd4\\xc4\\x04\\x13\\xa4\\x3b\\x31\\x09\\x24\\xb1\\xbb\\x14\\x0f\\xc9\\xfd\\xaa\\xe2\\x66\\xd6\\x59\\x30\\xe3\\xf2\\x34\\xfe\\x84\\x1d\\x82\\xb2\\x61\\x76\\xff\\x86\\xc5\\xd2\\xbd\\x8d\\x96\\x5c\\x52\\xd7\\x28\\x06\\x4e\\xbd\\xf6\\x8d\\xc8\\xe4\\x83\\x49\\x41\\x80\\x1c\\xca\\x0b\\x2f\\x25\\x6d\\x4f\\x6c\\x3d\\xd1\\x9d\\x35\\xd5\\x36\\x2b\\xbf\\x9b\\x8a\\x3a\\x1c\\x86\\x3e\\x09\\x26\\x89\\xdd\\x28\\x52\\xad\\xd4\\x88\\xbf\\x42\\x68\\x5b\\x11\\xe1\\xe1\\xad\\x57\\x45\\xd0\\x75\\x62\\x8d\\x73\\x1f\\x91\\xcf\\xd7\\x49\\x15\\x9e\\x2e\\x1c\\x83\\x7f\\x4e\\xf8\\x3d\\x80\\xea\\x1d\\xd9\\xbd\\xed\\x5f\\x88\\x01\\x8c\\xe1\\xd4\\xb3\\x37\\x1f\\x95\\x43\\x53\\xf3\\xd8\\x94\\x37\\x00\\x62\\xc0\\x96\\x5d\\x67\\x98\\x6d\\xbc\\x48\\x17\\x15\\xf4\\x2d\\xd2\\xc9\\x16\\x07\\xab\\x8b\\x5f\\x0d\\x89\\xf6\\x6e\\x68\\xd7\\x3d\\x50\\xd6\\x40\\x52\\x4d\\x72\\xe6\\x91\\x34\\xb8\\x87\\x29\\x8e\\x5c\\xd8\\xc4\\xb9\\x05\\xba\\x5e\\xfa\\x0e\\x9d\\x68\\x52\\x14\\xb8\\x42\\xf5\\x0a\\x2a\\x39\\x83\\xa1\\xaf\\x58\\x5a\\xf2\\xca\\x43\\xdb\\xcf\\x02\\xc4\\x08\\x97\\xae\\x2e\\x1a\\xb5\\x1d\\xbc\\xe5\\x70\\x34\\x5e\\x8e\\x13\\x5f\\xb7\\xb4\\xeb\\x0a\\x1d\\x6a\\x0b\\xb5\\xa8\\xa1\\x80\\x7e\\x42\\x5b\\x2d\\x62\\x83\\x60\\x76\\x80\\x58\\xe6\\x1a\\xd1\\xcf\\xaa\\x20\\x99\"},\n{{0xfa,0xaf,0x55,0xd3,0xc2,0x97,0x14,0xb6,0x5c,0x22,0x81,0xe2,0xc2,0x2d,0x61,0x34,0x97,0x1a,0x2e,0x74,0x00,0x8f,0xb9,0x40,0x89,0xa7,0x73,0xee,0xeb,0x44,0x83,0xa6,},{0x39,0x86,0x2e,0xac,0x6d,0xd5,0x2e,0x38,0x1b,0xb3,0x4d,0xc1,0x96,0xba,0x8a,0x37,0x4d,0xcb,0x7d,0xf6,0xcb,0x14,0x0f,0xd0,0xcf,0xa6,0xcf,0xa3,0x9b,0x8c,0x75,0x3f,},{0x5b,0x00,0x83,0xf7,0xa8,0x20,0x61,0xc6,0x5c,0xf6,0xc7,0x56,0x40,0xc8,0x1c,0x28,0xe8,0xd6,0xd2,0xe8,0x7f,0x6d,0x57,0x95,0xc9,0xaa,0x3b,0xb3,0xe3,0x90,0xe9,0x19,0x90,0xe8,0x2d,0xb6,0xf0,0x7e,0x61,0x4f,0x50,0x7a,0x56,0x0a,0xba,0xa1,0xec,0xa6,0x56,0xc6,0x78,0xdd,0xca,0xe8,0x19,0x82,0x51,0xe6,0xaf,0x0b,0x76,0xb8,0x8d,0x0d,},\"\\x94\\xe6\\x61\\xc2\\x52\\x40\\xa8\\x9e\\x82\\x3d\\x7f\\x5d\\xc0\\xe6\\x92\\xed\\xdd\\x13\\x70\\xc3\\x5a\\xc4\\x4d\\x5a\\x8c\\x87\\x98\\xd0\\xc9\\xaa\\xfd\\xf0\\xbb\\xfb\\x54\\x92\\x60\\x56\\x8d\\xba\\x1c\\x69\\x08\\x6b\\xee\\x63\\x6b\\xe8\\xed\\xcc\\xd3\\xcb\\xb2\\x70\\x16\\x24\\x4d\\x54\\xd7\\xed\\x2f\\xeb\\x7f\\xa6\\x46\\x14\\xd4\\x54\\x49\\xd7\\xe0\\x58\\xe7\\x1b\\x30\\x6c\\x22\\xe6\\x91\\x1c\\x2a\\xc7\\x42\\x07\\xba\\xe5\\xa8\\x4d\\x0f\\xc2\\x47\\xbe\\x49\\xd3\\x56\\xe5\\xd4\\x35\\x3b\\xa5\\x58\\x6b\\x6e\\x4b\\x2b\\x97\\xce\\x9e\\x23\\x77\\xb6\\xee\\xd9\\x2c\\x84\\x9e\\x67\\x69\\x44\\xae\\x90\\xdc\\x42\\x08\\xe3\\x00\\xe1\\x9c\\xc9\\x1d\\xc2\\x6b\\xbd\\xd5\\xa3\\x0c\\xfa\\x92\\x81\\xa1\\x5e\\xfd\\x87\\x30\\x66\\xf8\\x5a\\xf3\\xa2\\x6f\\x31\\x06\\x23\\xe0\\x09\\x80\\x48\\x53\\xcc\\x68\\x55\\x90\\x3e\\xa6\\x4a\\x90\\x98\\x97\\xe3\\x15\\xe7\\x3d\\x31\\x29\\x48\\x98\\x0e\\xf6\\x28\\x9d\\xb2\\x1a\\x5e\\xbb\\xec\\x8c\\x8e\\xfe\\x20\\xd1\\xd5\\x3d\\xfa\\xad\\x6d\\x9f\\x42\\x96\\x53\\x2e\\x88\\x7c\\x37\\x35\\x01\\x05\\xa6\\x33\\xab\\xc7\\x73\\x18\\x87\\x51\\xb2\\x8c\\x3a\\x08\\xf1\\xb5\\xee\\x04\\x72\\xde\\x46\\x27\\xe6\\xb6\\x1b\\x68\\x27\\x8d\\xd5\\x1c\\xed\\x6a\\x61\\xec\\xf3\\x88\\x86\\xe4\\x53\\x39\\xdc\\x6c\\x60\\xc3\\x1e\\x85\\x0e\\xf8\\x29\\x6a\\xe8\\x0f\\x9d\\x31\\x70\\x17\\x76\\xeb\\x9a\\xf2\\x16\\x93\\xf4\\xc5\\x2e\\xc0\\x62\\x62\\x57\\x38\\xd4\\xe3\\xaf\\xbf\\x71\\xd1\\xc8\\x1f\\xc4\\x84\\x63\\x60\\x36\\x3e\\xa5\\x41\\xa9\\x76\\x62\\x3a\\x5e\\x4e\\x6b\\x6a\\x67\\x23\\x7e\\x92\\x37\\x17\\x3f\\x1a\\x1d\\x54\\x33\\x02\\x85\\x88\\x85\\x71\\x4c\\x2a\\x59\\x1d\\x0a\\x78\\x62\\x82\\xa0\\x28\\x5a\\x37\\x11\\xf7\\xbc\\x2b\\x63\\xca\\x79\\x87\\xe9\\xae\\x7d\\x02\\x03\\x55\\x55\\xcf\\x3b\\x6a\\xd6\\xf7\\x1c\\xa9\\x8a\\xa9\\x28\\x88\\x3b\\xf8\\x1d\\xd6\\xf8\\x64\\x93\\xea\\xab\\x56\\x37\\xb4\\xdd\\x56\\x9d\\x1e\\xe8\\xde\\x6a\\x44\\xbc\\xed\\xb6\\x2b\\x97\\x06\\xb1\\xdb\\x89\\xe3\\xf0\\x5d\\xf1\\x63\\x10\\x01\\x7d\\x89\\xef\\x3e\\x4b\\xc0\\x99\\xb7\\x21\\xa5\\xc8\\xd3\\x80\\x43\\xd6\\xe4\\xa2\\x2c\\xf0\\x40\\x09\\xc0\\xfc\\xee\\x6b\\xe6\\x99\\x37\\x82\\x99\\x54\\x94\\x1b\\x8b\\x4a\\x1e\\xbf\\x4d\\xae\\xa0\\xd7\\x74\\xd0\\x78\\x2b\\xe1\\x76\\xc8\\xe5\\x91\\x90\\x77\\x56\\xc2\\xcf\\x75\\xde\\xa6\\xf7\\x87\\x7d\\xd6\\x87\\x5b\\x8f\\xe1\\x01\\x2f\\x30\\x50\\xcf\\xb1\\x28\\x9c\\xf0\\x88\\x66\\x7e\\x15\\x22\\xee\\xed\\xc9\\x27\\xac\\x86\\xbf\\xe2\\xc4\\x07\\x43\\x2b\\x4a\\x81\\x3a\\x6a\\x7a\\x55\\x04\\xe9\\x99\\x20\\x6d\\xb1\\x82\\x7e\\x25\\xfa\\xfd\\x70\\xce\\xd3\\x6d\\xb3\\xb2\\x81\\xb6\\xf7\\xb1\\x4e\\xd5\\xba\\xa0\\x57\\x23\\x15\\xa9\\x39\\xc5\\xbf\\x4a\\xbb\\x13\\x3d\\x2e\\x7b\\x16\\xd5\\x2d\\xe2\\x08\\x17\\xaf\\x05\\x5d\\xf5\\xf1\\x41\\x20\\x77\\x34\\x61\\x0a\\x0c\\x6e\\xeb\\xed\\xaf\\xff\\xd9\\xcc\\x9f\\x06\\x9b\\x67\\xf9\\xa1\\xc0\\x45\\x4b\\xe4\\x1d\\x54\\xc1\\x38\\xbe\\x54\\x2e\\x5e\\x38\\xcf\\xe2\\xf2\\x93\\xf7\\xd2\\xd3\\xdf\\x66\\x97\\x7a\\xcb\\x36\\x6a\\x42\\xc1\\x9b\\x31\\x85\\xac\\xfa\\x1b\\x36\\x3c\\x61\\x31\\xa4\\xa8\\x11\\x1c\\x3b\\x1f\\x4f\\xd7\\xac\\x40\\x6d\\x0e\\x69\\x10\\x3b\\xa1\\x5b\\x8c\\x4b\\xf2\\x9b\\xc2\\xed\\x9c\\x45\\xcf\\xd1\\xd2\\x79\\xd8\\xd9\\x31\\x44\\x4b\\x2b\\x18\\x49\\x25\\x2b\\x8a\\x70\\xee\\xd8\\x0f\\xd2\\x60\\xed\\xf5\\xa3\\xc0\\x1b\\x96\\x90\\x16\\x0d\\x23\\x11\\x85\\x1d\\x21\\xc9\\x30\\x2d\\x98\\x59\\x86\\xea\\xee\\xb3\\xae\\x2c\\x07\\xc7\\xc7\\x67\\x20\\x94\\xf9\\x1d\\xb0\\xbd\\x50\\xbe\\x37\\x7e\\x4d\\x1e\\xb0\\x7e\\xe7\\x6a\\xf4\\x9d\\xc1\\x36\\xa1\\x45\\xa1\\x1b\\x17\\x2f\\x08\\x11\\xfe\\x73\\xd6\\x25\\x9b\\xe3\\x70\\xc4\\xdf\\xca\\xb6\\xf1\\x9e\\x4a\\x64\\xb1\\x51\\xd0\\xa6\\xdb\\x80\\x50\\xc3\\xde\\x2c\\xc3\\x25\\xf5\\xc5\\xf6\\x59\\x4c\\xf6\\x24\\x8e\\xb0\\x81\\x20\\x95\\x39\\xe0\\x8c\\xa3\\x42\\x29\\x84\\xe7\\xbf\\x80\\x3d\\xe3\\xa4\\x19\\xb1\\x44\\x23\\xf1\\xe5\\xa5\\x42\\x24\\x04\\x2c\\xe4\\xf0\\x54\\x88\\xa6\\x04\\x4f\\x40\\x42\\xbd\\x64\\x9b\\x1a\\x08\\xce\\x10\\xc2\\x00\\x6e\\xa7\\x6e\\xfa\\xb4\\x64\\x1f\\xef\\x28\\x97\\xef\\xd7\\x24\\xe6\\x05\\x4a\\x3b\\xd1\\xa6\\x9e\\x39\\xa4\\xa5\\xe2\\xd5\\x02\"},\n{{0x6d,0x78,0x55,0xe3,0x0f,0x7a,0x13,0xe2,0x37,0xb0,0x67,0x14,0x43,0x46,0x43,0x4b,0xb4,0xb0,0x51,0x78,0xc7,0xd8,0x8d,0x49,0x2e,0x79,0x02,0x7c,0x4b,0x0f,0x3c,0xdd,},{0x72,0x73,0x29,0x38,0x28,0xef,0xa3,0x49,0x82,0x23,0x92,0xdb,0xba,0xb0,0x78,0x79,0x57,0x7e,0x1a,0x77,0xa6,0xfd,0x6a,0xfe,0x33,0x75,0x3a,0x9e,0xec,0x88,0xc4,0xaf,},{0x0f,0xe2,0x8e,0xad,0xd9,0xe5,0xdd,0x57,0x4b,0x3f,0xaa,0xea,0x81,0x0d,0x44,0x52,0x2c,0x8b,0x1b,0xfb,0xb3,0xe3,0xd5,0x7e,0xd8,0x89,0xfa,0xed,0xec,0x91,0xd0,0xe1,0x4a,0x86,0xb9,0x14,0xc4,0xc7,0x66,0xf1,0xbf,0x9b,0x8f,0x18,0xb0,0xdb,0x89,0x0d,0xb6,0xc1,0xb1,0x25,0xd5,0x78,0x04,0x33,0x36,0x19,0xb1,0xe0,0x72,0x0a,0x33,0x00,},\"\\xf8\\xb9\\x36\\xe7\\x93\\xb0\\x17\\x58\\x0c\\xc0\\xe9\\xcb\\xda\\x2a\\xcb\\x64\\x74\\x50\\x7f\\x4b\\xca\\x3a\\xfc\\x87\\x83\\xec\\x46\\xee\\xb8\\x2c\\xcd\\x4d\\xd2\\x52\\x56\\x76\\xaa\\x6a\\xb5\\xc0\\xdc\\xf7\\xd7\\x5f\\x7e\\x03\\x11\\xe6\\xfe\\x6b\\xf2\\x72\\x63\\xf8\\x57\\x8f\\xeb\\x55\\xc5\\x61\\x2d\\x1f\\x28\\xe8\\x88\\xb7\\x66\\x56\\xc4\\x1c\\xcd\\x8a\\x70\\xb9\\xbc\\x60\\x4b\\x42\\x72\\x4f\\xa2\\xbc\\x41\\x1d\\x44\\xc3\\x1a\\xb6\\x8c\\xe8\\x4f\\x83\\x93\\x39\\x9e\\x34\\xd5\\x40\\x85\\x79\\xc2\\xba\\x29\\x21\\xf2\\xf8\\xd1\\x14\\x87\\xaa\\x7e\\x52\\x55\\x7f\\xee\\xd9\\x67\\x57\\x19\\x9d\\x3a\\xae\\x63\\x77\\x77\\x01\\x54\\xb1\\x7f\\x35\\x77\\xc7\\xac\\x3d\\x8c\\x76\\xcf\\x74\\x61\\xb5\\xe8\\xd4\\x2a\\x71\\x85\\x07\\x8e\\xd4\\xf8\\x62\\xfc\\x57\\x50\\x2f\\x61\\x50\\x75\\x30\\x7b\\x6e\\x10\\x3c\\x77\\xc1\\xf6\\xc8\\xbd\\xa7\\xaa\\x17\\xe4\\x35\\xe2\\x1b\\x94\\x9a\\xf4\\x4d\\xff\\x5a\\xa3\\x0a\\x62\\xda\\x71\\x2f\\xa9\\x96\\x6a\\x61\\x2f\\xfc\\xa1\\x48\\x71\\xfd\\x6f\\x86\\x0b\\x4a\\x96\\x14\\x01\\x2c\\x53\\x69\\x91\\x0e\\x0f\\xfd\\x6f\\x0f\\xbd\\x88\\x9a\\x9c\\x25\\x7c\\x32\\xbd\\xcf\\x90\\xbb\\x80\\x62\\x7c\\xb2\\x72\\xec\\xd4\\x59\\x98\\x97\\x55\\x59\\x55\\xe1\\xfe\\x08\\xcd\\x7e\\xbb\\x21\\xc0\\x71\\xbe\\x0f\\x48\\x98\\x96\\x96\\xcb\\x39\\xaa\\x82\\xad\\x11\\xba\\xa5\\xd4\\xac\\x61\\x3a\\xbf\\x1b\\x6d\\xb8\\xa2\\x0e\\x68\\x68\\x36\\x22\\x28\\x33\\xf8\\xb6\\xdd\\x2f\\x00\\x06\\x22\\x7b\\xe4\\x8e\\x85\\x80\\xdc\\xc8\\xde\\x62\\x0d\\xac\\xb2\\xf6\\x5a\\x69\\x36\\x75\\xd6\\xcb\\x45\\xba\\x5d\\xd1\\xaa\\x70\\xdb\\x76\\xbc\\x64\\x1d\\x4f\\xb5\\x67\\xec\\xbc\\x71\\x11\\x44\\x2e\\x29\\x41\\x58\\xbe\\x57\\x5c\\x71\\xdd\\xc2\\x6e\\x94\\xf4\\x12\\x66\\xa2\\xfd\\x3a\\x0d\\x43\\x57\\x81\\xfc\\x09\\x46\\x48\\xfa\\xdf\\x5f\\x17\\xcd\\x41\\xab\\x89\\x58\\x21\\x89\\x4e\\xc0\\x80\\x6b\\x26\\x2c\\x39\\x35\\x34\\xfe\\x66\\xf2\\x1e\\x37\\x83\\xc1\\x4a\\x96\\xc8\\x8f\\x2e\\x06\\x53\\xfe\\x32\\xe7\\x5d\\xce\\x8a\\x46\\x3b\\xb9\\x7e\\xed\\x6c\\x16\\xf3\\xf3\\x22\\x81\\x69\\xab\\xb5\\xb4\\xbf\\x9e\\xa3\\x27\\x8c\\x1f\\xf0\\xf8\\x6e\\xae\\x71\\x38\\x9b\\x64\\x33\\xac\\xd0\\x97\\xee\\xfa\\x9e\\x6e\\x05\\xf4\\x95\\x5c\\xd5\\x17\\x83\\x0b\\x8d\\x98\\x70\\xcc\\xb5\\x22\\x74\\x15\\xe5\\x0f\\x23\\xf6\\x47\\x32\\x17\\xa7\\x45\\x09\\x64\\x70\\xdc\\xa9\\x3d\\x2b\\x34\\x67\\x3c\\x5d\\x6a\\x57\\xed\\x02\\xc8\\xe0\\xca\\xe1\\x19\\xb3\\xf3\\x29\\xd8\\xab\\x64\\x98\\x49\\x4c\\x29\\x21\\xbb\\x6f\\x49\\x6d\\xd0\\x83\\x81\\xe7\\xd3\\x9f\\x2d\\xb5\\x76\\x3b\\x14\\xa2\\x82\\x1b\\xef\\xcc\\xa0\\xa9\\xfd\\x31\\x25\\x45\\xde\\x68\\xab\\xf2\\x06\\xd1\\x2d\\x8e\\x02\\xe7\\x3b\\xc7\\xe3\\xcb\\x79\\x6e\\x7e\\xe2\\x6c\\xc6\\x3d\\x74\\x1e\\xfa\\xfc\\x53\\x45\\xf8\\x13\\x29\\x51\\xbc\\xfb\\xfd\\xdf\\x63\\x1f\\xb7\\xcb\\x43\\xef\\x35\\xb9\\x45\\x3c\\x93\\x90\\xeb\\x23\\xb1\\xf9\\xd8\\xb1\\xc7\\x2d\\xeb\\xd2\\x4f\\x09\\xa0\\x1a\\x9d\\xc6\\x0e\\xe6\\x81\\x53\\x06\\x18\\x83\\x57\\x78\\x1a\\xf6\\xe1\\x82\\x0a\\xa3\\x5e\\x4e\\xc1\\x21\\xb7\\xca\\x34\\xd7\\xde\\x76\\x11\\xb2\\x46\\xa3\\xe7\\x03\\xed\\x48\\xc7\\xeb\\x03\\xa6\\xfe\\x8f\\x85\\x2e\\xe7\\xd3\\x25\\x45\\xc9\\xd8\\x52\\xd6\\x4d\\x5d\\x75\\x93\\x0e\\x5f\\x1e\\xbe\\x21\\xa3\\x07\\xef\\xa7\\x62\\x2e\\xda\\xce\\xd6\\xd8\\x79\\x02\\x6f\\x0f\\x85\\xa9\\x11\\x20\\x12\\x80\\x37\\x05\\x58\\x22\\x69\\xd3\\x9f\\x14\\x32\\x34\\xdf\\x89\\x09\\xab\\x3d\\x94\\x8e\\x76\\xd3\\xda\\xaa\\x24\\x22\\x6d\\x9a\\xc6\\x01\\xee\\xf2\\x77\\xfd\\x2c\\xfc\\x4a\\x19\\xae\\xdf\\x43\\x87\\xa2\\x16\\x17\\xb0\\x3e\\xc3\\xd3\\x84\\x5a\\x38\\x55\\x4f\\x5e\\x97\\x03\\x6e\\x56\\xec\\x1c\\xe6\\x60\\xdf\\x9c\\x06\\x2c\\x2c\\x99\\x3b\\x77\\xc5\\xba\\x6a\\x6d\\x05\\x23\\x1d\\xae\\x37\\x64\\x18\\x3c\\x3e\\x96\\xaa\\x53\\x9c\\xfb\\x34\\x15\\xfb\\x16\\x3c\\x64\\x5b\\x23\\x03\\xb2\\xd6\\xd4\\xbd\\xa8\\xca\\x6c\\x72\\xbc\\x03\\xd5\\x30\\x5f\\x9b\\x11\\x8e\\x92\\x5e\\x27\\xd2\\x9a\\xb7\\xdc\\xb1\\x96\\x47\\x0e\\x63\\x39\\x63\\x1b\\x23\\x80\\x74\\x4c\\x04\\xd1\\xda\\x34\\x8f\\xc0\\xfe\\x27\\x42\\x77\\xf8\\x2f\\x95\\xbd\\xfb\\x0b\\x64\\xb4\\xcf\\x3b\\x51\\xe5\\x71\\xc0\\xdd\\xb3\\xb5\\x3c\\xa6\"},\n{{0x7e,0xe4,0xe7,0xe9,0x8c,0x6a,0x40,0xf0,0xe7,0x44,0x13,0xf2,0x40,0x39,0xbd,0x22,0x0d,0xf1,0xf8,0xc7,0xf0,0x15,0x52,0x8d,0xbf,0x52,0x84,0xab,0x9f,0x7c,0x82,0xe2,},{0x4d,0x5a,0x80,0x0f,0x9b,0x22,0x07,0x0e,0x01,0x6e,0xe2,0x3a,0xf8,0xa3,0x10,0x90,0x2b,0x36,0x9d,0x58,0x9a,0x84,0x7f,0x34,0x5c,0x2e,0xa2,0x96,0x8d,0x6d,0x09,0x24,},{0xac,0x3b,0xfe,0x3a,0xdf,0x94,0x1c,0x93,0x4d,0x33,0x49,0xc4,0x92,0xde,0x70,0xd5,0x16,0x6b,0xe3,0x89,0xf9,0x55,0xbe,0x87,0xc2,0x88,0x3f,0x41,0xf2,0xda,0x14,0x6c,0x91,0x06,0x51,0xa3,0xb4,0x52,0xc2,0xd7,0x39,0xdc,0x9b,0x53,0x1c,0x57,0x45,0x56,0x5e,0x69,0xd9,0x83,0x59,0xf1,0xd7,0xd9,0x3e,0xbd,0x36,0xd7,0x0a,0xbb,0xf0,0x0d,},\"\\x8f\\xb0\\x13\\x73\\xc4\\x2e\\x69\\x61\\x4a\\xea\\x99\\xaf\\x49\\x32\\x37\\x85\\xf3\\x38\\x61\\xb9\\x4e\\x90\\xf5\\x65\\x38\\x9e\\xbf\\x70\\xe2\\x19\\xf5\\xde\\xc7\\x32\\xe0\\x01\\x0b\\x58\\xf7\\x29\\x05\\x30\\xdf\\x22\\x2a\\xc9\\xc7\\x3e\\x1c\\x2e\\x92\\xa5\\xe6\\x06\\x1d\\xe5\\x59\\x0c\\xaf\\x9c\\x0d\\x50\\x21\\xd7\\x29\\xea\\xa1\\x15\\x41\\xfa\\x1d\\x08\\x21\\x60\\xbe\\xaf\\x61\\x1e\\x7c\\xfd\\xc0\\xeb\\xb3\\x15\\xd3\\x88\\xe5\\x38\\xb4\\xb5\\x02\\x8f\\x9b\\x30\\xd3\\xd9\\x73\\x34\\x7f\\xfd\\x44\\x26\\x3e\\xef\\x08\\x3b\\x81\\xb2\\x1b\\x82\\xec\\xa5\\x75\\x6a\\x49\\x4b\\x1d\\x81\\xc0\\x7d\\xe8\\x49\\x50\\x6d\\x3e\\x3b\\x66\\x87\\x97\\xa5\\xc5\\x44\\x25\\x4d\\x4e\\xbe\\x5c\\xf8\\x17\\x1b\\x39\\xf8\\x72\\x4c\\xbc\\x41\\x89\\x29\\x1b\\x3c\\x53\\xc2\\x1e\\xce\\x49\\xa1\\xd7\\x39\\x56\\x3c\\x65\\xb4\\x90\\x25\\x93\\x56\\x47\\xa7\\x30\\x3a\\xe0\\xef\\x7f\\x6d\\x24\\x55\\x46\\x45\\xa4\\x28\\xdb\\xbb\\x42\\x44\\x9f\\x53\\x99\\xe3\\x6d\\xc7\\x87\\xb7\\xd6\\x95\\x8a\\x02\\xee\\xbb\\xb8\\x36\\xe5\\xe5\\x3e\\x26\\xe4\\x87\\x23\\x9d\\xe9\\x4d\\x1d\\x25\\x0e\\x79\\x43\\xac\\x0e\\x22\\xd9\\x27\\x50\\xa0\\xcf\\x34\\x73\\xbe\\x1a\\x62\\x25\\xcb\\xe7\\x95\\x45\\x04\\x82\\x69\\xf6\\x23\\x7e\\xc9\\xf9\\xec\\x30\\x7e\\x8a\\x34\\xb7\\xbb\\x34\\xcd\\x49\\x06\\xe4\\x31\\x62\\xa3\\x70\\x8f\\x32\\x9c\\x5b\\x98\\x9d\\x7a\\x7f\\xcd\\xe1\\x09\\x9a\\x54\\x25\\x46\\xfe\\x9c\\x33\\x18\\x2b\\xa5\\x1b\\x84\\x3e\\x96\\xd1\\x1c\\x79\\xe9\\x1a\\xd2\\x1f\\x71\\x70\\xe2\\x57\\xfd\\xc2\\x81\\x8e\\x12\\xf9\\x16\\x8a\\x97\\x4c\\x96\\x8a\\x4d\\x27\\x3f\\xa3\\xff\\xa9\\xf3\\x5f\\xf9\\x05\\x98\\x0e\\xaa\\xd3\\x72\\x1c\\xae\\x80\\x2b\\xee\\x36\\x21\\x0b\\x40\\xb9\\x93\\x19\\xbb\\x66\\x99\\x82\\xe9\\x43\\xb2\\x70\\xa4\\xc4\\xd0\\xa9\\x2e\\xcb\\x5b\\xba\\x2d\\xd8\\xb4\\x0a\\xc3\\xd2\\xf0\\x32\\x5c\\x46\\x9d\\x5e\\x9d\\x48\\x3f\\x52\\x41\\x97\\x40\\x10\\xc5\\xc0\\xda\\x33\\x5f\\x16\\xe9\\x62\\x19\\x6c\\x2e\\xf1\\x4e\\xb2\\x4a\\xaf\\xbb\\x31\\x1b\\xfd\\x5f\\xa8\\xdc\\x8d\\x2d\\x61\\xe6\\x87\\x8a\\xd2\\xcc\\xe0\\xdc\\x99\\x39\\xe4\\x45\\x22\\x72\\x3d\\x42\\x7e\\xf3\\x2f\\xb4\\x3b\\x96\\x7f\\x5e\\x44\\xfc\\x66\\x57\\x92\\x79\\x6f\\x8c\\xf9\\x34\\xf0\\x1c\\x32\\x5d\\x63\\xd5\\x83\\xdc\\x3c\\xa9\\xd4\\xfc\\xc7\\x57\\xd9\\x17\\x85\\x80\\xda\\xef\\x53\\xaa\\x3a\\xb2\\x1d\\x2c\\xe4\\x35\\x95\\x5d\\x1c\\x6d\\x47\\x63\\x8c\\x5e\\xdb\\x62\\xff\\x55\\x61\\x69\\x3d\\x1c\\xbd\\x10\\xec\\x9e\\x39\\x9a\\x71\\xbf\\x9d\\xb1\\xc9\\x96\\x9f\\xd5\\x9e\\x4e\\xeb\\x31\\xaa\\x59\\xbf\\x39\\xe9\\xf1\\x84\\x17\\x8d\\xef\\x72\\x46\\xed\\x4b\\x8f\\x4b\\xe5\\xba\\xda\\xa5\\xdb\\x4a\\xf8\\x67\\xf4\\xf2\\xec\\x39\\xa1\\x37\\x04\\x20\\x2c\\x87\\x84\\xfa\\x16\\x8c\\xe9\\x6f\\x9c\\xfa\\xc7\\x10\\x17\\x23\\x62\\x75\\xfd\\x85\\x7c\\xc3\\xc5\\x1a\\x9c\\x7a\\xc2\\x56\\x21\\x5e\\x14\\xb8\\x43\\xf7\\x21\\x4d\\xc9\\xf8\\x24\\xb9\\x1d\\x1a\\x51\\x70\\xd0\\xef\\x1d\\x37\\x69\\x6f\\x93\\xee\\x96\\x6a\\x2b\\x7d\\xec\\xe2\\x2b\\x4f\\x3a\\xfd\\x39\\xc1\\x6d\\x60\\x1e\\x5f\\xf8\\x40\\x8d\\x45\\xc1\\xa6\\xce\\x71\\xf0\\x60\\x97\\x6c\\x5b\\xe4\\xc0\\x42\\xb1\\xb7\\x38\\xdf\\x95\\x80\\xba\\x5a\\xe7\\x78\\x80\\xa7\\x0c\\x0b\\x94\\xf0\\xe1\\xc9\\xf9\\xaa\\x34\\xc0\\x90\\xd6\\x12\\xd5\\x7a\\x9b\\x93\\x1f\\x50\\xa1\\x25\\xfa\\x35\\xce\\x40\\xa2\\xcb\\x7f\\xaa\\xd5\\x30\\xf8\\x09\\x08\\xc7\\x3c\\xb7\\x82\\x58\\xaf\\xd2\\x63\\x13\\x90\\x04\\x1d\\x92\\x61\\x7e\\x9b\\xf6\\x4c\\xe9\\x6e\\x8e\\x4a\\xc7\\xf3\\x12\\x6d\\x8a\\xf8\\xa0\\x4c\\x75\\xff\\xd4\\x38\\x76\\x9d\\xe0\\x6f\\x74\\xc2\\xfc\\x20\\xcc\\x81\\x92\\xda\\x35\\x3e\\x79\\x06\\x12\\x83\\xbb\\xa0\\x8a\\x8d\\x24\\xe6\\xe4\\xe2\\xe8\\x3b\\xa5\\xb0\\x8e\\x42\\x75\\x22\\x60\\x62\\x14\\x8d\\x8a\\x02\\xaf\\xad\\x65\\xb6\\xf6\\x27\\xcf\\xbd\\x29\\xb7\\x1c\\xa1\\x8a\\xee\\x5b\\x1f\\x97\\x16\\x9b\\xf0\\x22\\x8b\\x37\\x6f\\x41\\x06\\xb5\\x0f\\xd9\\x1a\\x38\\xa6\\x62\\x11\\xd6\\x9e\\xbb\\x4a\\x7a\\xf0\\xe1\\xc2\\x21\\x7f\\x1b\\xa0\\x14\\xd1\\xe0\\xcd\\x17\\x50\\x8d\\x58\\x15\\x5d\\x16\\x3d\\xd9\\xde\\x2f\\xe1\\xc6\\x4c\\x7f\\x88\\xd5\\xb5\\x53\\xe9\\xba\\x1e\\x1f\\x25\\x43\\x0d\\x7e\\x12\\x5b\\x07\\xa8\\xc2\\xed\"},\n{{0x1f,0x28,0xd9,0x09,0x1d,0x19,0x6c,0xba,0x3d,0x45,0x52,0xe5,0xa3,0x37,0xa4,0xd8,0xaf,0x3f,0x29,0x5e,0x62,0x9e,0x4b,0xa6,0xfe,0x99,0x70,0x31,0x20,0xae,0x41,0xe0,},{0x81,0x4d,0x34,0xbf,0x28,0xee,0x6d,0x90,0xf0,0x39,0x59,0x90,0x41,0xdb,0x81,0x0f,0x7c,0x9d,0xaa,0x91,0x8e,0x03,0xe9,0x61,0x97,0x41,0x4b,0xc9,0xaa,0x31,0xec,0xdc,},{0x5b,0xe5,0x52,0xfa,0x73,0x1e,0x83,0x67,0x93,0xf6,0xdd,0xa8,0x95,0xdc,0x9b,0x1e,0x2c,0xcd,0x66,0x9d,0xe1,0xc8,0x43,0xe0,0x0e,0xa6,0xfa,0x3c,0x5e,0xbf,0x97,0xa3,0x4b,0x26,0xf1,0xf3,0xac,0x7f,0xf2,0x22,0x5e,0xe4,0xa7,0xe4,0x30,0x07,0x2c,0x13,0xda,0x40,0x66,0xdc,0xdc,0xc0,0x5b,0xa2,0xb5,0xf6,0x1a,0x6e,0x8d,0x21,0x07,0x09,},\"\\xa6\\x94\\x68\\xbc\\x33\\xeb\\xfe\\xf0\\x61\\x5c\\x64\\x3c\\x49\\xda\\xc6\\xe0\\x4f\\xdb\\x6c\\xfb\\x8e\\xc4\\x58\\x57\\xbb\\xb7\\xa2\\x7e\\x52\\x8f\\xd6\\x31\\xfc\\x34\\x11\\xba\\xee\\x65\\xcc\\x1f\\x94\\xfc\\xc9\\x4a\\xed\\x4a\\x43\\x32\\xfa\\x68\\x61\\xe0\\x65\\xe0\\x61\\x63\\x54\\x17\\x09\\xd7\\x97\\x28\\xe0\\x1b\\xe2\\xb1\\x40\\xa0\\x22\\xc8\\x3e\\x7b\\x23\\xb9\\xed\\x2a\\xd2\\x83\\x21\\x69\\xdf\\xc9\\x56\\x90\\x91\\x3c\\xf3\\x72\\x01\\x30\\x65\\x70\\x80\\xc9\\xd5\\xa7\\x82\\x7e\\x56\\x60\\x75\\x74\\x52\\xc5\\xfc\\x3d\\xcd\\x80\\xcc\\x6b\\xe0\\x98\\xc6\\x29\\x22\\x6d\\x54\\x66\\xe0\\x2b\\x97\\x12\\x6b\\xe7\\x4a\\x14\\x52\\xee\\x16\\x81\\x50\\x95\\xde\\xb4\\x2b\\xf0\\x65\\x66\\x71\\x50\\x28\\xc1\\x18\\x25\\x82\\x0a\\x8a\\x23\\xc6\\x0d\\xa2\\xb6\\x8d\\xd9\\xa5\\x5d\\xad\\x2a\\x29\\xa4\\x96\\x44\\x43\\x81\\x7c\\x07\\xd7\\x76\\xb2\\x44\\xb1\\x51\\x86\\x81\\x9a\\x3b\\xbe\\xd4\\x14\\xab\\xf4\\x57\\x9a\\x3e\\xce\\x3a\\x3d\\xc7\\xb1\\x05\\xd0\\xa9\\xdb\\xa3\\x7b\\x9e\\xaa\\x78\\xbe\\x8e\\x46\\xe1\\x69\\x8b\\x59\\xb0\\x94\\x0b\\x01\\xf3\\x8b\\x28\\x3c\\x33\\xa9\\xa4\\xb1\\xd4\\xf8\\x14\\x4b\\x16\\xee\\xb5\\xfc\\x0a\\x7a\\xf0\\xd0\\x81\\x69\\x66\\x45\\xa1\\xea\\xb3\\xa7\\x87\\xcb\\xcf\\x88\\xfa\\xd9\\x3d\\xd6\\xcd\\x46\\xd2\\x95\\xa8\\x79\\xa1\\x77\\x50\\x33\\xa9\\x85\\x63\\x82\\x2e\\xf1\\xf6\\xb6\\x9a\\x58\\x1e\\x49\\x73\\x6c\\x8d\\x70\\x1b\\x44\\x53\\x96\\x93\\x40\\x52\\x1e\\x4a\\xd4\\xbf\\x94\\xb9\\x11\\xb0\\xe2\\xd8\\x6f\\x34\\xee\\xce\\x4a\\x63\\x85\\xff\\x1f\\xe6\\x32\\x20\\xcd\\x3c\\xc5\\x92\\xf3\\x6d\\x6c\\x49\\x1f\\xa1\\x8f\\x7c\\x14\\x04\\x36\\x0d\\x2a\\x77\\x53\\xfe\\x07\\x3e\\x09\\xa2\\xfc\\x42\\xa4\\xbb\\xea\\x55\\xbc\\x96\\xd7\\xf0\\x5c\\x98\\xae\\xd2\\xcc\\x4a\\x9f\\xae\\x8f\\xd4\\xa0\\x19\\x7f\\xf0\\x1f\\xa7\\xf0\\x04\\x6e\\x3c\\x3e\\xb5\\x9a\\xaa\\xbc\\xa3\\x13\\xa4\\xdd\\xaa\\x5d\\x20\\xd2\\x7c\\x2c\\x5f\\x1a\\xc6\\xd8\\x7f\\xd3\\xcb\\x4b\\xd3\\x5a\\x1e\\xc7\\x5d\\x10\\x4f\\x7c\\x36\\x73\\x31\\xa3\\xe2\\x95\\xe5\\x3c\\x4e\\x80\\xba\\xe1\\x4b\\x97\\x92\\xd0\\xd5\\x26\\xf7\\x40\\xd4\\xff\\x03\\x6f\\xaf\\x54\\x87\\x96\\x7f\\xfa\\xbe\\x8e\\x88\\x3d\\x3f\\xb0\\xd1\\x6f\\xaa\\xdb\\x28\\xe1\\x28\\x5d\\xed\\x41\\x57\\x0c\\x0b\\x07\\xc2\\x55\\x9b\\x53\\x1e\\x0f\\x92\\x54\\xef\\x88\\xe5\\xb1\\x0f\\x64\\xf4\\x83\\x9a\\x9a\\x0b\\x6c\\x3c\\x7f\\x1b\\x78\\x50\\xf4\\xad\\x9b\\xf0\\x99\\x9a\\x7f\\x2a\\xe7\\xc4\\x5a\\x65\\x8e\\xa5\\x30\\x36\\xfc\\x70\\x19\\x98\\x42\\xb8\\xe4\\x9e\\x60\\xf9\\x67\\xde\\x1f\\xf3\\xab\\xff\\xf6\\xcd\\x73\\x5b\\x7c\\xd8\\xb8\\xf9\\xe2\\x48\\xf1\\x56\\xf6\\xc6\\x54\\x38\\x69\\xeb\\x99\\x82\\x3d\\xae\\xa8\\x8d\\xeb\\xaf\\x79\\xf0\\x1e\\x65\\x21\\xec\\x63\\xfe\\x72\\x72\\x4e\\xe3\\xc8\\x22\\xb8\\x8b\\x39\\x68\\xb2\\x48\\x52\\x09\\x15\\x83\\xc4\\x9a\\xb3\\xc1\\x5f\\xa1\\xf7\\x9b\\x18\\xd9\\x8f\\x04\\xd9\\xb6\\x84\\x1c\\x9a\\x7c\\xa0\\xde\\x2f\\xcc\\x02\\xf9\\x5d\\xd6\\x49\\x49\\x2e\\x8b\\x56\\xa3\\x1e\\xc1\\xe2\\x44\\x33\\x7a\\xf6\\xaa\\xae\\xde\\x8b\\xf9\\x9f\\xc8\\x14\\xef\\x57\\xc0\\xd5\\xe0\\x8c\\x3c\\x7e\\xcc\\x18\\x97\\x98\\x0a\\xa1\\x69\\xa9\\x92\\x6d\\x20\\x69\\x8d\\xf6\\x93\\x0e\\x21\\x10\\xcb\\x46\\x0f\\x49\\x39\\x01\\x00\\x74\\x10\\x95\\xf8\\xed\\x00\\x41\\x2a\\xe6\\x96\\xd9\\x8e\\xfe\\xfd\\x29\\x0d\\xa5\\xf7\\xd0\\xb7\\x28\\xd2\\x0a\\x1e\\xbf\\xa6\\xbd\\x7d\\x27\\x0f\\x28\\x1a\\x98\\xc7\\xb1\\xe4\\x08\\x43\\x51\\x25\\xaa\\x48\\x3c\\x6b\\x7d\\x63\\x3f\\xf7\\x58\\x8a\\x94\\x16\\x58\\xf6\\x12\\x95\\x44\\xd6\\x29\\x45\\xb9\\xb8\\xaf\\x71\\xa8\\xc6\\x2c\\x0a\\x50\\x07\\x6c\\xb8\\x54\\x1b\\xa7\\xe4\\xbd\\xe4\\xed\\xe4\\x41\\x72\\x2c\\x6e\\xb9\\xdf\\x8c\\xfd\\x06\\x56\\x33\\x9e\\x86\\xd2\\x26\\xab\\xae\\xa0\\x5e\\xa0\\x47\\xf6\\xb8\\x30\\x77\\x01\\xf6\\xc9\\xa4\\x4c\\xc9\\xcb\\x83\\x7b\\x8e\\xb6\\x24\\x45\\x92\\x5e\\x8a\\x88\\x81\\xd2\\x53\\x8f\\xcb\\x2b\\x24\\x9e\\x4e\\xe8\\xb6\\x86\\xec\\xfb\\x49\\xc4\\xdf\\x86\\x40\\x1d\\x24\\x9a\\xac\\x35\\x84\\x1e\\x91\\x40\\x04\\xf9\\x45\\x5d\\x3f\\xde\\x37\\x5d\\x20\\xa0\\x1f\\xba\\x27\\xb1\\x97\\xa6\\x98\\xd3\\x84\\xc7\\x65\\x05\\x10\\x68\\x01\\x62\\x7e\\x83\\x36\\xbd\\x2d\\x76\\xd7\\x61\\xa8\"},\n{{0xc6,0x4d,0xd2,0x0d,0x42,0x62,0x75,0x26,0x19,0x8a,0x22,0x64,0x76,0x90,0xc8,0x95,0xb5,0xb4,0x5b,0x69,0x8f,0x57,0xa6,0x9d,0xfb,0xe4,0x8d,0xbd,0x42,0x6a,0xa4,0x70,},{0x2e,0x01,0xd4,0x04,0x16,0xf7,0x8a,0xcd,0xdb,0x34,0xb8,0x44,0x5e,0xa4,0xfd,0x0a,0xb3,0xfa,0x9e,0x66,0x43,0x04,0x47,0x52,0x21,0x3f,0x07,0xc7,0xf0,0xff,0x43,0xa0,},{0xde,0xac,0xc8,0xc2,0x32,0x18,0x72,0x76,0x76,0xd5,0x40,0xa2,0x3b,0xda,0xd7,0x81,0x02,0x11,0xe6,0xd5,0x7a,0xd2,0x94,0xc3,0x7d,0x4b,0x1c,0x9a,0xf6,0xb3,0x37,0xa5,0x3f,0x78,0x80,0xd2,0xba,0xfa,0x73,0xb3,0x05,0x08,0xc0,0x08,0x42,0x6b,0xf8,0xd7,0xc9,0x65,0xa1,0xf4,0xa4,0x22,0xa1,0xbc,0x7d,0x6a,0xd6,0x22,0x6f,0xd1,0x97,0x06,},\"\\x82\\x1b\\x9f\\x7c\\x16\\x10\\x4b\\x53\\x3b\\xd1\\x27\\x18\\x4f\\xd7\\x2a\\xde\\x09\\x2b\\x13\\xbb\\xd9\\xac\\xee\\xd2\\x9b\\x8d\\x10\\xf1\\x66\\x88\\x92\\x2d\\x16\\x5f\\x89\\x31\\xd5\\x3d\\xf5\\x90\\xfb\\x71\\x3b\\x67\\x4d\\x80\\x5c\\xe0\\xc9\\xd6\\xce\\x6c\\x43\\xba\\x69\\x68\\x19\\x1d\\x12\\xbf\\xa0\\x8a\\x8c\\xe2\\x2e\\x8f\\x33\\x6b\\x2b\\x49\\x1a\\xf2\\x5d\\x1b\\x16\\x06\\xf9\\x30\\xca\\xeb\\xe5\\x22\\x39\\x2a\\x87\\xd4\\x2c\\xe7\\xbc\\x16\\x7a\\xa7\\xb6\\x10\\x59\\x72\\x20\\xaf\\x31\\xa6\\x65\\x35\\x30\\x71\\xe8\\xd9\\xe5\\xf4\\x20\\x78\\xb9\\xc3\\x88\\xbf\\x04\\x02\\x58\\xe2\\x1f\\x9c\\x3a\\xb3\\x8c\\x04\\x27\\x61\\x8b\\x2c\\x28\\xd3\\x43\\x0d\\xf2\\x79\\x21\\xbf\\xc5\\x84\\x87\\xb3\\x46\\x19\\x78\\xbf\\xa8\\xbf\\x58\\x6c\\xfe\\x83\\x58\\xe0\\x92\\xf8\\xf4\\x74\\x66\\xe7\\x62\\x45\\x1d\\x50\\x16\\x4a\\x0d\\x74\\x36\\x0f\\x66\\xb4\\xcd\\x3a\\x35\\x75\\xda\\x01\\xda\\x23\\x75\\x24\\x30\\xc0\\x35\\xda\\x85\\x9f\\x57\\x7d\\xe2\\x22\\x90\\xaa\\xb4\\xed\\x7f\\x34\\xd2\\x67\\x40\\x6a\\xb5\\x47\\xeb\\x44\\x5c\\xc6\\x4d\\xf5\\x30\\x19\\x42\\x7f\\x4e\\xb7\\x2b\\xca\\x55\\x39\\x71\\x53\\xd0\\x1c\\xcf\\x7e\\xc9\\x7d\\x7a\\x96\\x7d\\x9a\\xff\\x46\\x23\\x1d\\x2e\\x20\\x27\\xb3\\x8f\\x3b\\x41\\xbd\\x2c\\xb1\\xb7\\x98\\xa4\\xae\\x88\\xab\\xf4\\x89\\x62\\x16\\xd3\\x15\\xbd\\x53\\x83\\x02\\x42\\x59\\xe5\\x97\\x42\\x80\\x2a\\x91\\x1b\\xad\\xcf\\x84\\x73\\xdb\\x91\\xaf\\x31\\x97\\x33\\x32\\x0c\\xb9\\x52\\x1e\\xf9\\xce\\x43\\x72\\x67\\xb6\\xea\\x17\\xbc\\xaf\\xe5\\xd0\\x90\\x3b\\x12\\x3a\\x35\\xc9\\x88\\xf4\\x98\\x34\\xf6\\x1d\\xd5\\x52\\x64\\x0a\\x32\\x76\\xda\\x26\\xaf\\x17\\xec\\x21\\xa2\\x02\\x96\\x58\\x6d\\xd6\\xf4\\xb3\\x6c\\x7a\\x4f\\x0b\\x89\\x9d\\x70\\xb4\\x2a\\xf8\\x9e\\x29\\x37\\x01\\x32\\xed\\xfb\\x72\\xd6\\x83\\x41\\x94\\xa1\\x60\\x93\\x60\\xb1\\xf1\\xfe\\xab\\x89\\xb9\\x6b\\x8e\\x8f\\x0f\\x68\\x98\\x7c\\x57\\xcc\\xe0\\xba\\xb7\\x68\\x11\\x37\\x18\\xfb\\x17\\x09\\xde\\x2d\\xf3\\x21\\x77\\xd4\\x40\\x85\\xda\\x5e\\xfd\\x9d\\xa7\\x0e\\x1a\\x85\\x8c\\x92\\xf2\\x45\\xac\\xfe\\xe6\\x4b\\x71\\xf3\\xeb\\x16\\xe0\\x4f\\xc1\\x39\\x89\\xe6\\x93\\x37\\x99\\x97\\x01\\xdd\\x73\\xab\\xc2\\x66\\xc9\\xfd\\x4c\\xff\\x91\\xa0\\xfd\\x04\\xfb\\xd8\\xb1\\x3b\\x12\\xe6\\xf4\\x50\\x38\\x57\\x15\\x84\\x8e\\x00\\x7f\\xa0\\xd4\\x63\\x11\\x9f\\xd7\\xde\\x63\\x25\\xb6\\x40\\x04\\x2b\\x65\\x42\\x12\\xe0\\xdb\\x8d\\xa1\\xad\\xeb\\xd2\\xa7\\x58\\x9f\\x77\\xee\\x4f\\x75\\x2d\\x28\\x2c\\xa1\\x11\\x9c\\x43\\x1b\\x17\\xad\\x0a\\x02\\x1e\\xf2\\xbf\\x95\\xe5\\xac\\x47\\x04\\xe6\\x2d\\x70\\x39\\xd0\\xe6\\x51\\xe4\\x56\\xd6\\x0e\\x63\\xba\\xde\\x40\\x1c\\xca\\x77\\xc9\\xa8\\x91\\x63\\x17\\x4d\\x50\\x22\\xd7\\x45\\xab\\xdc\\x76\\xb9\\xff\\xe2\\x54\\x41\\x55\\x23\\x5e\\x30\\x63\\xe6\\xe4\\xae\\xec\\x44\\xed\\x5d\\x8a\\xb4\\x08\\xd9\\x66\\xfe\\xc1\\x20\\x16\\xc1\\x30\\x73\\x0b\\xbc\\x55\\x87\\x32\\x06\\x5d\\xa8\\x00\\xa7\\x0c\\xbf\\xb0\\xfc\\xcc\\xa4\\x5d\\x00\\x28\\xcb\\xfd\\x96\\x32\\xdd\\xb2\\xf0\\xed\\x12\\xed\\xae\\x7b\\x93\\x0b\\x10\\x6c\\x9d\\x12\\x85\\xa4\\xb8\\x70\\xde\\x75\\x07\\x99\\x9c\\x74\\x79\\x3d\\xd4\\x97\\x40\\x87\\x19\\xc8\\x98\\xab\\xe4\\x9f\\x7f\\x33\\xa3\\x3e\\x69\\xb5\\x0f\\xa5\\xaf\\x94\\x80\\x06\\x85\\x66\\xd1\\xfd\\xdf\\x44\\x82\\xd7\\x97\\x04\\xad\\x8e\\xf1\\x1b\\x88\\xb4\\x2c\\xc6\\x9f\\xce\\x8a\\x55\\x7b\\x5b\\xa5\\x10\\xe7\\x08\\xb9\\x37\\x51\\x23\\x03\\x85\\x68\\x27\\x0d\\xe4\\x07\\x23\\x2e\\x95\\x62\\x1e\\x2d\\x04\\x57\\x0b\\xec\\x2c\\x41\\xec\\xcf\\xd8\\x55\\xb2\\x1f\\x0c\\x9b\\xba\\xa2\\x3b\\x5c\\x58\\x15\\xfc\\x88\\x8f\\x7f\\xbe\\xd4\\x82\\xc3\\x20\\xff\\xa1\\xe0\\x63\\xe8\\x7b\\x55\\xbc\\x8f\\x7e\\xee\\xa3\\x74\\x06\\x3a\\x9b\\xe6\\x5f\\x7e\\xd9\\x22\\x5b\\xf6\\xca\\x34\\xcf\\xa3\\x11\\xb7\\x9f\\x3a\\x25\\x8c\\x25\\x2e\\x63\\x45\\xed\\x6a\\xc8\\x47\\x48\\xf4\\x68\\x07\\xa5\\x5d\\x4b\\xa4\\x12\\x66\\x16\\x9c\\xd2\\x62\\xd4\\xf7\\x22\\x79\\xef\\x0c\\xaa\\x77\\xff\\x44\\x93\\x35\\x32\\xbd\\x13\\x74\\x75\\x6c\\x23\\xec\\x85\\xf5\\x5e\\xfe\\x9f\\xc2\\x33\\x1f\\x26\\xf8\\x81\\x62\\x9f\\x80\\xc2\\x69\\x2f\\x7f\\x53\\xe4\\xbc\\x6f\\x22\\xef\\xb4\\x54\\x57\\xa2\\x23\\xf0\\xd1\\xc4\"},\n{{0x0f,0x8e,0x9f,0x35,0x26,0xb4,0xfa,0xea,0x92,0x76,0xf2,0x2a,0x17,0x79,0xe6,0xf8,0x27,0x09,0x80,0x8f,0x6d,0x0c,0x61,0x2a,0xdf,0xe3,0x2a,0x6e,0x8a,0x06,0x10,0x05,},{0xd4,0x8c,0x3f,0x0f,0xde,0xf3,0x82,0xd1,0xd8,0x03,0x13,0xe8,0x46,0xfc,0xa9,0x5e,0x41,0x81,0x76,0xbb,0x5d,0xfa,0x9d,0x39,0x8c,0x1d,0x21,0x24,0x77,0x6f,0x69,0x0a,},{0x2f,0x59,0xa2,0x93,0x60,0x73,0x91,0x38,0x34,0xeb,0x15,0xa0,0xe0,0xbc,0xb9,0xaa,0x80,0x40,0x89,0x46,0x8f,0x24,0xdd,0x1b,0x2d,0x37,0xa1,0x93,0x4a,0xe9,0xba,0x10,0x20,0xff,0x64,0xb7,0x2e,0xec,0x03,0x26,0x8d,0x0a,0x7c,0x01,0x2c,0x4e,0x79,0x63,0x00,0xf6,0xdf,0x7a,0xdd,0xa0,0x1c,0x8b,0xc5,0xe9,0x01,0x5c,0xcd,0xee,0x1a,0x00,},\"\\x0c\\xcd\\x37\\xc4\\xcf\\xd8\\xe7\\x0c\\xa3\\xbb\\x39\\x46\\xd0\\x9d\\x70\\xd0\\xf6\\xa4\\xb8\\x1d\\x6d\\xfb\\x07\\x9d\\x78\\x73\\x74\\x80\\x71\\x58\\x98\\x80\\x92\\x73\\x82\\xf7\\x43\\x6a\\x6e\\xf8\\xf5\\x1c\\x25\\x54\\x73\\xdd\\x01\\xfe\\xb5\\x2c\\x8e\\xdb\\xe4\\xd3\\x25\\x57\\x13\\xe6\\x8d\\x64\\x0f\\x3d\\xcf\\x15\\x8f\\x2b\\xfb\\x9f\\xbe\\xcf\\x71\\xf0\\x71\\x9d\\xfe\\x8c\\xe6\\xb6\\x01\\x28\\x1b\\xa6\\xc2\\x0a\\x56\\xb4\\xf8\\xe7\\xca\\xa4\\xaa\\x9f\\x86\\x8f\\xbf\\xc5\\xe4\\x32\\x1c\\x22\\xd6\\x5f\\x03\\x82\\xc4\\x89\\x6b\\xf9\\xbe\\xbe\\x35\\x46\\x94\\x9e\\x81\\x85\\xa4\\xd8\\x17\\xe4\\x5b\\x5d\\x12\\x93\\x95\\x38\\x21\\xbd\\xd9\\x8e\\xc2\\x59\\xf6\\x4a\\x3d\\xe5\\x38\\x65\\xb1\\x49\\xea\\x01\\xc8\\xf6\\x83\\xec\\xda\\x61\\xda\\x5d\\xc1\\x0e\\x7e\\xbd\\xdd\\xfe\\x74\\x84\\xf5\\xeb\\x10\\x31\\xb7\\x91\\x65\\x87\\xca\\xa3\\x99\\xa0\\x6b\\x6f\\xea\\x4c\\x5e\\x6e\\x0b\\xe6\\x50\\xfb\\xdf\\x06\\xc1\\x03\\x6d\\xf2\\xcc\\x35\\xf6\\x2e\\xa0\\xea\\x71\\x3f\\x52\\x80\\x9d\\x77\\xf4\\x7c\\x2e\\x55\\xc9\\x23\\x92\\x48\\x16\\x80\\xb6\\x33\\x20\\x56\\x22\\x69\\x13\\xb0\\xce\\x88\\xa6\\xc5\\x5a\\x26\\xbd\\xb5\\xb8\\xba\\xb3\\xcf\\x46\\x95\\xa8\\xc5\\x22\\x30\\x2c\\x4e\\xba\\x37\\xd3\\x1f\\xf7\\x7e\\x58\\x30\\x1b\\xcc\\xfc\\x7c\\x7b\\xe8\\x58\\x0c\\x63\\x42\\x68\\x79\\x95\\xf4\\x4a\\xcd\\x19\\x09\\x65\\xae\\x0d\\x7b\\xf0\\x66\\x95\\x92\\xb6\\xad\\x88\\x74\\x3e\\xbb\\x36\\x0c\\x73\\xe0\\x48\\x4a\\x23\\xd2\\xf9\\xe9\\x9e\\x9e\\xb0\\x38\\xdc\\xbd\\x87\\xca\\x9b\\x1a\\x49\\x8f\\x1b\\x2d\\x35\\xfe\\xdd\\x7f\\x8e\\x1f\\x7f\\xd8\\xca\\x52\\x64\\x86\\x91\\x1e\\x07\\x6a\\xea\\xb4\\x87\\x7b\\xba\\xcf\\x37\\x8a\\x28\\x55\\xf9\\xc5\\xac\\x03\\x91\\x30\\xdc\\x69\\x0e\\x17\\x7d\\x67\\xb2\\x44\\xcc\\x8a\\xd0\\x32\\x37\\x9e\\xf7\\x1f\\xe0\\x5e\\x9c\\x86\\x13\\xd8\\xf5\\xd6\\xea\\x3d\\x4e\\x3e\\x47\\x22\\x20\\x29\\xcc\\x00\\x42\\x53\\xbe\\x47\\xf8\\x7f\\xb5\\xe3\\x31\\x4c\\x48\\x98\\x13\\x4b\\x87\\xac\\xf1\\x0b\\x25\\x38\\xba\\xd8\\x97\\xbd\\xc5\\x01\\x2d\\x8f\\x97\\x62\\xc8\\x71\\xb6\\x53\\xd4\\x00\\xfe\\xe0\\xce\\xed\\x5e\\xf6\\xbd\\xd1\\x6f\\xaf\\x3f\\x0a\\xbd\\xbd\\x72\\xcd\\x0a\\x12\\x94\\x05\\x46\\xf0\\x99\\x5f\\xf1\\x4b\\x0f\\x1b\\xd5\\x48\\x56\\xff\\x74\\xc3\\x6e\\xb4\\xf2\\x2d\\x72\\x87\\xae\\xfd\\xc6\\x09\\x99\\x8c\\x1f\\x41\\xbc\\xc3\\xbb\\x3a\\x5f\\xa4\\x92\\x34\\xf4\\xfa\\x8e\\x92\\x9c\\xd0\\xf5\\x54\\xb3\\x15\\x39\\x5d\\xae\\x87\\x3c\\x61\\xca\\x70\\xe0\\x41\\x0c\\x2f\\xd5\\xa1\\x15\\xd2\\xa6\\xff\\x1f\\x1c\\x94\\xb2\\x7b\\xa4\\x50\\xb8\\x19\\x4b\\x21\\xf0\\x95\\xc6\\x1a\\x5f\\x21\\x5e\\x3c\\x84\\xf5\\xd4\\x3f\\x0e\\x73\\x62\\x86\\xd3\\x3b\\x8c\\x47\\x81\\x4d\\xb9\\x79\\xf9\\xdc\\x00\\x91\\x98\\x46\\xbe\\xe6\\x85\\x33\\x7d\\x99\\x55\\x5a\\x24\\x47\\x2e\\x6b\\x00\\xb3\\xf4\\xa1\\x43\\x11\\xa6\\xc7\\xc9\\x04\\xba\\x58\\x89\\xda\\x6c\\x1d\\xdc\\xc1\\x11\\x75\\x80\\xf5\\xfb\\xc4\\x1f\\x2b\\x8a\\x42\\x68\\xcf\\x0e\\x9f\\xa5\\xbf\\x41\\x25\\x34\\xc9\\xe4\\x05\\x2a\\xac\\xb5\\x04\\xcb\\x86\\xe2\\x14\\x7a\\xb8\\x02\\x3d\\x58\\x80\\x0b\\x76\\x3f\\x9a\\xbf\\x9d\\x04\\x40\\x78\\x8a\\x51\\xdf\\xe5\\xcb\\xd4\\x42\\x30\\xba\\x52\\x28\\xf1\\xf5\\x96\\x0e\\xa3\\xa4\\xe4\\x04\\x4d\\x36\\xda\\xf8\\x11\\xcb\\xdb\\xec\\x5d\\x69\\x64\\x63\\xd8\\xe9\\x41\\xf2\\x72\\x17\\x56\\x3b\\xb4\\x4a\\x21\\x18\\xa4\\xf5\\xac\\xd6\\xe7\\x94\\xde\\x17\\xe0\\x28\\xcb\\xde\\xef\\xde\\xf2\\xcb\\xf0\\x3d\\xd3\\x2e\\x78\\x99\\xe6\\x5a\\x1c\\xf8\\x39\\xf5\\xd9\\x0e\\x1f\\x8c\\x36\\x4b\\x57\\x7f\\xe3\\x10\\x53\\x53\\xf6\\x67\\x68\\xdb\\xf7\\xaf\\x0c\\x52\\x1a\\xa8\\xa4\\x9f\\x7a\\x22\\x08\\x2d\\x88\\xf9\\x01\\x49\\x8c\\x90\\xb9\\xd7\\x77\\x7e\\xd2\\xf9\\xf0\\xe8\\xa5\\x52\\xd8\\xa1\\xfa\\x5e\\x96\\x32\\xed\\x85\\x32\\x58\\xc9\\xc2\\x15\\xb6\\xdb\\xb4\\x11\\x1d\\xcf\\xca\\x55\\x4b\\xfb\\xc9\\xbb\\xa2\\x2f\\x88\\xbc\\x55\\x55\\x2c\\x6d\\x86\\x25\\x56\\xd7\\x41\\xda\\xd5\\x9f\\x21\\x5e\\x37\\x28\\x83\\x46\\xca\\x7d\\x7f\\xd8\\xc6\\x5a\\x38\\x0d\\x72\\x0c\\xaf\\xf9\\xef\\xa1\\x49\\xf3\\xfd\\xa2\\x32\\xda\\xa5\\xb1\\x2e\\xf1\\x1c\\x0a\\xf0\\x86\\x2b\\xd0\\x22\\x9e\\x07\\x5a\\x3c\\x6b\\x60\\xef\\x0b\\xbb\\x3d\\xad\\x7f\\x29\\x08\"},\n{{0xfe,0x7c,0xdc,0x79,0x66,0xd0,0xff,0xb9,0xc7,0x6f,0x4a,0x18,0xe7,0xf0,0xbf,0x90,0x69,0x0e,0xb7,0x6d,0xc3,0xd3,0xd5,0x08,0x84,0x64,0x8e,0x2e,0x39,0x37,0xd0,0x20,},{0xa1,0x2e,0xe9,0x81,0x2d,0x6a,0xf6,0xaa,0x48,0x79,0xfa,0x72,0xbc,0x0a,0x69,0x80,0x4e,0xa1,0xa8,0x5f,0x9b,0xc4,0xa2,0x6a,0x5b,0xa7,0xcf,0xbb,0x91,0x4d,0x0d,0xd9,},{0xb5,0x2d,0x03,0xfd,0xeb,0xcd,0x42,0x97,0x37,0xef,0x70,0x92,0x06,0x87,0x21,0x1f,0xbb,0x4c,0x04,0xf8,0x1e,0x35,0x5c,0xec,0x70,0x72,0xc5,0x05,0x41,0x75,0xd2,0xed,0x77,0xf3,0x8f,0x46,0x6f,0x00,0x14,0x22,0xda,0x8f,0xcd,0xf0,0x67,0xdb,0x14,0x51,0x00,0x7c,0xab,0x60,0x7f,0x04,0x9c,0x2e,0x26,0x07,0xb5,0x7d,0x44,0x71,0x3c,0x04,},\"\\xdc\\xb9\\x1c\\xf1\\x55\\x46\\x1a\\x60\\xdf\\x07\\xee\\xc2\\x9d\\x98\\x61\\x6e\\xd1\\x72\\x8b\\x34\\xef\\xa9\\xe1\\xf7\\x44\\x5a\\x91\\x58\\xa8\\xf8\\x8d\\x7f\\xaa\\xae\\x0e\\x24\\x72\\x5a\\xef\\xf2\\x63\\xc3\\xf7\\x4f\\x0c\\x68\\x4f\\x18\\x58\\xf0\\x5b\\x69\\x95\\xd2\\x84\\x6b\\x6a\\x83\\x2f\\x67\\x08\\x5a\\x42\\x76\\xd8\\x66\\x1a\\xeb\\xd3\\xbf\\xcc\\x73\\x18\\x1f\\x1f\\x51\\x02\\x93\\xb6\\xde\\x5e\\x4b\\xb2\\x3f\\xf2\\xdc\\xa1\\xdf\\x60\\x8c\\xb1\\x4a\\xe5\\x22\\xac\\x4b\\x51\\xe1\\xf9\\xb9\\x73\\xab\\x8b\\xaf\\xcd\\x53\\x4e\\x71\\xc5\\x71\\x81\\xb1\\x18\\x96\\xee\\x10\\x61\\xfb\\x36\\x9c\\xa4\\xd2\\x93\\x9d\\x1e\\x57\\x06\\x0d\\x9f\\x4d\\xb0\\xa5\\xc0\\xb0\\x7d\\x52\\x68\\x7f\\x15\\x78\\x17\\xe6\\x3e\\x2f\\xe7\\xeb\\xcc\\x3e\\x7c\\x95\\xef\\xe0\\x5b\\x85\\x99\\x10\\xc9\\x5e\\xed\\xe8\\x6d\\x14\\x39\\x9e\\x61\\x62\\x48\\xa2\\x8c\\x24\\xc4\\x14\\xdb\\xb6\\x93\\xaf\\x9b\\xe4\\x35\\xa3\\xa9\\xcd\\xc3\\x3e\\x0e\\x2a\\x58\\x69\\x18\\xd9\\x1b\\x8a\\x85\\xce\\xdd\\x16\\x12\\xd7\\xc1\\xa2\\x17\\x92\\xbd\\xd4\\x3a\\x91\\x5b\\x15\\x7e\\x04\\xbb\\x3a\\x44\\xec\\xbe\\x23\\xfa\\x49\\xcc\\x55\\xda\\xab\\xbe\\xaa\\x15\\x5a\\x73\\x7f\\x76\\x5b\\x8d\\xdb\\x0f\\x3b\\x15\\xd4\\xec\\xf2\\xce\\xf7\\x05\\x4c\\xa7\\x3e\\xc8\\x7d\\x91\\x75\\x2c\\x2e\\x99\\x19\\x5c\\xdb\\x19\\x58\\x84\\x4f\\x14\\x4e\\xda\\xb8\\x2a\\x97\\x54\\x9f\\xc9\\xce\\xc0\\x8e\\x87\\x11\\xcf\\xf8\\x63\\xb6\\x3f\\xc2\\x31\\xa7\\x7f\\x76\\x2e\\x5c\\xd9\\xda\\x9d\\x59\\x40\\x92\\x52\\xe9\\x9a\\xb0\\x4c\\x42\\xbc\\x57\\x09\\x7e\\x46\\x4e\\x3c\\x6a\\x48\\xd8\\x02\\x41\\xe6\\x32\\x5e\\x3e\\x40\\x94\\x98\\x9b\\x34\\xc0\\xe8\\xb3\\x2b\\x1a\\x78\\x29\\xd5\\x4d\\xf3\\x2a\\x05\\x0e\\xe8\\x7d\\x8f\\x7c\\x4f\\xe3\\xe4\\xf4\\xf7\\x04\\x9d\\x1f\\xee\\xcd\\xbe\\xa6\\x71\\x08\\x35\\x0d\\xb4\\xe8\\xed\\xbe\\x3c\\x3f\\xf8\\xab\\x2a\\x25\\xd1\\x47\\xb1\\xc1\\xc5\\x82\\x1b\\x0f\\x8c\\x21\\x04\\x2d\\x65\\x5d\\xb8\\x31\\x69\\x1f\\x59\\x98\\x3f\\x27\\xd2\\xed\\x1d\\x49\\x06\\xc5\\x44\\xe2\\x4e\\x79\\xbe\\x68\\x65\\x3c\\x9b\\x22\\x9a\\x7f\\xb6\\x1e\\xf5\\x45\\xba\\xb1\\x6e\\x98\\x81\\xcb\\x4d\\x92\\x65\\xe2\\x93\\x59\\x0a\\x0b\\xc2\\xdc\\x86\\xba\\xd2\\x30\\x07\\xff\\x40\\xc9\\x58\\x61\\x92\\x3b\\x49\\x82\\x41\\xc1\\x0d\\x26\\xbf\\x48\\x48\\xf6\\x2b\\xa7\\x38\\x3f\\x64\\x9d\\xc3\\x8a\\xf1\\x84\\x0d\\x0d\\xe9\\x28\\xa9\\xbf\\xee\\x5e\\x11\\xb5\\x14\\x34\\x16\\x3a\\x7a\\xb1\\xed\\x53\\x74\\x15\\xf1\\xe9\\x32\\x85\\xe3\\x69\\x92\\x05\\x72\\x01\\x58\\xf9\\x55\\x7d\\x86\\x41\\xed\\x2b\\xf4\\x85\\xb8\\x21\\x2c\\x8f\\x82\\x66\\x8b\\xac\\x3c\\x22\\x8e\\x69\\x24\\xc1\\x7d\\x0d\\x98\\xf2\\xe6\\xd9\\x23\\x43\\x71\\xc4\\x42\\x5e\\xb7\\x58\\x68\\x9f\\xdb\\x0d\\xc1\\xce\\xa1\\x39\\x4a\\x28\\x62\\xe8\\x7b\\xb3\\x8e\\x62\\x4c\\x34\\x79\\x91\\x68\\x61\\x32\\x78\\x22\\x5f\\xb5\\xe1\\x9c\\x92\\x47\\xad\\xa3\\x55\\x54\\xf2\\xc4\\xad\\xdb\\xb6\\x1d\\x5a\\x50\\x2a\\x70\\x81\\x27\\xd6\\xef\\xbc\\xa8\\xf7\\x35\\x09\\x0b\\xdf\\xdd\\x88\\xdb\\x29\\xfb\\xd1\\x4b\\x69\\xab\\x12\\x62\\xf0\\xc3\\xe2\\x6d\\x26\\x3a\\x59\\xc5\\xae\\x46\\x39\\x06\\x53\\x83\\xd5\\x25\\x0b\\x54\\xcf\\x59\\x2b\\xb7\\xad\\xfe\\xaa\\xe0\\xd2\\xfe\\x81\\x6b\\x63\\x81\\xe8\\x6e\\xa2\\xd1\\xc7\\x18\\x13\\xcb\\xc3\\xd8\\xfe\\x2d\\x31\\xde\\x7b\\x30\\xfb\\x6e\\xc2\\x29\\x4f\\xe4\\x53\\x6a\\x36\\xc6\\xa1\\x83\\x5a\\x71\\x62\\xab\\x4b\\xf8\\x9d\\x19\\x46\\x61\\x19\\x65\\x7b\\x0e\\x46\\x45\\xae\\xf5\\x03\\x50\\x5b\\x4d\\x55\\xdf\\x97\\x7b\\xd2\\xc9\\x0c\\x64\\x40\\x6f\\x49\\x70\\xd5\\xcf\\xf2\\x45\\xb8\\x35\\x32\\x2a\\x6f\\xbe\\x23\\x4e\\x5e\\xfb\\xb5\\xea\\x45\\xe8\\xf0\\xd3\\x97\\x3b\\xe4\\xaa\\xa2\\xaa\\xda\\xab\\x07\\x7d\\x6c\\x9b\\x25\\xbd\\x44\\x94\\x40\\x9e\\x93\\x47\\x9d\\x2d\\x15\\x07\\xf6\\x6b\\xc8\\xbe\\xf8\\x29\\x99\\xa1\\x3c\\x79\\x43\\xb4\\x72\\xb9\\xe6\\x1e\\xc2\\x9d\\xeb\\xef\\xbf\\x22\\x41\\x42\\x3e\\x0f\\xaa\\x42\\xc1\\xa3\\x38\\xa7\\xa6\\x13\\x1d\\xed\\x93\\x5b\\xa0\\x3a\\x28\\x66\\x2e\\x68\\x59\\x33\\x68\\xdd\\xe5\\x4b\\x46\\x2f\\x2a\\x5f\\xb7\\x46\\x18\\x5f\\xf5\\x50\\x3e\\x69\\xba\\x36\\xbf\\x16\\xf7\\x14\\x58\\xcd\\xd0\\x57\\xe5\\xc1\\x72\\x67\\xf6\\x74\\x98\\xd6\\x52\\x86\\x0b\\x46\\x5e\"},\n{{0xf6,0xc9,0xab,0x5e,0xa7,0x5f,0x29,0x4e,0x8e,0x0c,0x07,0xc4,0xc0,0x9e,0xd8,0xee,0xa3,0x11,0x3b,0xdf,0xc2,0xef,0x75,0x9e,0x20,0xa2,0x64,0x57,0x16,0x04,0x10,0x8d,},{0xb1,0x2f,0xf5,0x5b,0xd3,0xec,0x42,0x61,0x0e,0xac,0xea,0x28,0xb3,0x13,0xa1,0x6e,0x19,0xc9,0xe8,0xb4,0x7c,0x2b,0x15,0x17,0x09,0x91,0xbe,0x08,0x8d,0x65,0xcf,0x63,},{0xa7,0xf9,0xd0,0x8b,0xa1,0x41,0x83,0xef,0x24,0x7f,0x2c,0x25,0xfe,0xcc,0x2b,0x83,0xed,0xa6,0xde,0x58,0x02,0x2e,0x46,0x6c,0xe7,0x8f,0xcf,0x50,0xf7,0x1c,0xe2,0x61,0x62,0x44,0x65,0x62,0xee,0xa4,0x5d,0x63,0xa2,0x1c,0x3b,0x22,0x56,0x1f,0xd4,0x68,0x00,0x58,0xac,0xb8,0x25,0x40,0x7a,0x15,0x40,0x8f,0x27,0x13,0x61,0xa1,0x46,0x0f,},\"\\x71\\x62\\x3b\\x39\\x74\\x3e\\x39\\xc7\\xe0\\x86\\x38\\x80\\x6d\\x46\\x8a\\x1a\\x8a\\x6f\\x35\\xc2\\xae\\x38\\x8e\\xef\\xc2\\x73\\x74\\xbb\\x52\\x53\\x88\\x14\\xc4\\xb3\\x6c\\x9b\\x8e\\x38\\x9a\\xd8\\x31\\x83\\xde\\x02\\xa1\\xbb\\xd0\\x32\\x57\\x34\\xe4\\x61\\x87\\x54\\x09\\x23\\x37\\xd3\\xe7\\xdc\\x12\\x56\\x92\\x8e\\x35\\x28\\x87\\x0c\\xa7\\xf0\\x06\\x13\\xa2\\x5b\\x71\\xbb\\x15\\xd1\\xd9\\xea\\xaf\\xf9\\xf2\\x26\\x9b\\x71\\xc1\\x97\\x69\\xe0\\x03\\xce\\x84\\x56\\x14\\xb2\\xec\\x95\\xed\\x28\\xca\\x85\\x5b\\x52\\x21\\xd4\\xcb\\x80\\xa6\\xca\\x94\\x66\\xaa\\x33\\xe2\\x51\\x0d\\xdf\\xf7\\xdc\\xe1\\x86\\x15\\x9d\\xa7\\x0f\\xc8\\xb1\\xfb\\xac\\x12\\xa2\\x6e\\x1f\\xc0\\x94\\x22\\x76\\x89\\x2a\\xd6\\xe9\\xb0\\x03\\xf5\\x69\\x59\\xbd\\x31\\x3a\\xf2\\x89\\xe7\\xa0\\x53\\x2a\\x66\\x4b\\x76\\xb9\\x6b\\x91\\x98\\x54\\xe0\\x65\\x0c\\xb8\\xc5\\x2e\\xc4\\xc5\\xfb\\x50\\x53\\xaf\\x2f\\x0c\\xf8\\xc0\\xf2\\x2a\\x52\\x3f\\x9e\\x2c\\x64\\x19\\xdf\\x8d\\x0b\\x71\\x4e\\xe3\\x77\\x68\\x00\\xeb\\xfa\\x70\\x77\\x60\\x84\\x66\\x7d\\x6d\\xcf\\x54\\x1f\\x14\\xcf\\x16\\x62\\x62\\xe0\\xf6\\x4c\\x42\\x76\\xae\\x28\\x88\\x5e\\x6c\\xfd\\x09\\x7b\\x70\\xc0\\xd6\\x18\\x6e\\xa5\\xdb\\xd0\\x33\\x32\\x3c\\x98\\x76\\x13\\xda\\x08\\x64\\x5d\\xe0\\x72\\x08\\xba\\xe1\\x2a\\x17\\x8d\\x8f\\x7f\\x65\\x0a\\x25\\xaf\\xbd\\x70\\x1c\\x85\\xa1\\xba\\x63\\x9e\\xf9\\xf1\\x21\\xc4\\x0c\\x5c\\x12\\x9a\\x47\\x37\\x34\\x33\\x86\\xa4\\x81\\x83\\xff\\x3c\\x59\\x13\\x89\\xd8\\x9e\\xcd\\xa5\\x26\\xcf\\xfb\\x26\\x74\\xf1\\x7b\\xb1\\xc2\\x30\\x90\\x55\\x4b\\x13\\x40\\x84\\x97\\x96\\xa6\\xd4\\x44\\x46\\x0b\\xb4\\x19\\x42\\x7e\\x93\\xe6\\x58\\x5b\\x0f\\x4f\\x06\\x5a\\xd8\\x7e\\xe6\\xed\\xf5\\x4b\\xe6\\x18\\x8a\\x1d\\xd5\\xac\\xe1\\x36\\x4d\\xef\\xa5\\x61\\xf7\\x4e\\x26\\x76\\x9c\\x9b\\x29\\x1e\\xe7\\x55\\x52\\x76\\x50\\x1c\\x6a\\x49\\x08\\x0d\\xa0\\x92\\x4f\\x37\\x92\\xc2\\xa7\\x28\\xa5\\x20\\x07\\xb1\\xc0\\x7c\\x95\\x57\\x8f\\xed\\xaf\\x40\\x39\\x96\\x23\\x9e\\x9c\\x55\\xa9\\xa4\\x4c\\x3d\\xfc\\xc3\\x7c\\xdf\\x03\\xfb\\x48\\x5d\\xb5\\xa0\\x8d\\xff\\x15\\xa7\\xa4\\xf7\\xb7\\xf1\\x54\\x74\\x2e\\x84\\x31\\x56\\x4d\\xc1\\x7d\\xbd\\x43\\x2e\\x10\\x33\\x7c\\x22\\x76\\xfc\\xfd\\x9d\\x70\\xf7\\xc3\\xd5\\x70\\x39\\x3a\\x0c\\x19\\xf6\\x40\\x51\\xc7\\x3a\\x87\\x0e\\x20\\x55\\x84\\x10\\x65\\x31\\xd1\\xfd\\x2a\\x1d\\xd1\\xc9\\xd0\\xfc\\xe1\\x4f\\xfa\\xaa\\x07\\x7b\\xb7\\xe2\\x60\\x25\\x1e\\xed\\x6c\\x62\\xbc\\x6e\\xdc\\x24\\x22\\x51\\x94\\x40\\xc2\\x24\\x4e\\xba\\x38\\x40\\x46\\xb0\\xed\\xda\\xa6\\xcf\\x2c\\x1c\\x7e\\xee\\xbf\\xcd\\x78\\xfc\\xae\\x18\\xb8\\x22\\x90\\x55\\x2b\\x59\\xc0\\x46\\x3d\\xc4\\x50\\x61\\x8b\\xa6\\x7c\\x77\\x0d\\xec\\x0e\\x22\\x9b\\x84\\x60\\x93\\x6c\\xa8\\x19\\x56\\x2b\\xcb\\x36\\x96\\x9c\\x8f\\xf7\\x0b\\xf1\\x13\\xc1\\x16\\x71\\xe0\\x0b\\x94\\x13\\x55\\xbf\\x01\\xad\\x54\\xb0\\x5c\\xfe\\x2a\\x04\\x8b\\x38\\x72\\x8c\\xbd\\xd1\\xb4\\x98\\x09\\xe1\\xf2\\x07\\xac\\xa3\\x09\\x8d\\x99\\x42\\xee\\xc4\\x7d\\x6c\\x9d\\x41\\x3b\\x37\\xc9\\x14\\xfe\\xdd\\x38\\xac\\xd5\\xff\\xe4\\x96\\xca\\xc7\\x57\\xc2\\xef\\x8b\\x77\\xbd\\x84\\x03\\xd1\\x4b\\x1f\\xc9\\x8a\\x90\\x3f\\xe2\\xb9\\x79\\x46\\x82\\x33\\xa7\\xf2\\xae\\xd6\\xf8\\xd5\\x09\\xd8\\x74\\xe1\\xdc\\xe0\\x51\\x49\\xaf\\x9d\\xf3\\xfe\\x45\\x95\\xc7\\x1e\\x8b\\xc4\\x63\\xde\\xe9\\x38\\x4d\\x5e\\x05\\x05\\xd2\\xa6\\xb0\\xa2\\xb8\\xa1\\xed\\x62\\x16\\xaa\\xae\\x9d\\xcc\\x76\\x02\\x48\\x7a\\x4c\\x08\\x51\\xfd\\xf0\\x96\\x29\\xc1\\xe9\\x91\\x18\\x80\\x9a\\x95\\x44\\xa6\\x57\\x7a\\xf9\\xf9\\x15\\xd1\\xe6\\x5d\\x81\\x62\\x20\\xc4\\x8c\\x84\\x90\\xfa\\x9b\\x70\\xda\\x42\\x2a\\xd6\\x80\\x02\\x23\\xd6\\xd8\\xc3\\x40\\xf9\\xea\\xb2\\xcc\\x7e\\x14\\x93\\x62\\x12\\x4a\\x30\\x0b\\x40\\xcb\\xb8\\xc0\\xa6\\x5d\\xa3\\x01\\xdb\\xba\\x93\\x1b\\xa5\\x64\\xf3\\x59\\x73\\xca\\x8b\\xf2\\xd1\\xed\\xb5\\x6c\\x19\\x46\\x61\\x95\\x5b\\x3b\\x68\\x38\\x1f\\xa1\\x5d\\x4b\\x8d\\xc6\\xad\\xa1\\xa5\\xce\\xbd\\xa3\\xa4\\xcc\\xc5\\x51\\x23\\xe0\\x05\\x7f\\x4f\\x82\\x10\\x41\\x93\\x7d\\xd5\\x49\\x20\\x9c\\x82\\xe1\\x16\\x57\\x0b\\xc9\\x08\\xa2\\x8e\\x32\\x99\\xa9\\x44\\x14\\x43\\x49\\x8f\\x74\\xb3\\xcc\\x88\\xe1\\xa6\\x2d\"},\n{{0x43,0x10,0x3d,0xf0,0x1a,0x48,0xa0,0x3c,0x57,0xf3,0x2f,0x52,0xd7,0x0c,0x68,0x49,0xee,0x44,0x58,0x0b,0x2a,0xb4,0xee,0x72,0xd5,0x48,0xd8,0x48,0x13,0x4f,0x7c,0xeb,},{0xa3,0xcb,0xe0,0xd6,0x4b,0x05,0x60,0xbc,0xb5,0xae,0x00,0x90,0x01,0xe3,0x14,0xd9,0xec,0x90,0x79,0x01,0xdd,0x74,0xa8,0x04,0xa0,0x05,0x90,0x22,0xed,0x9c,0x6d,0x04,},{0x19,0x54,0x47,0xbe,0xb1,0xde,0x4a,0x7e,0x36,0xea,0x89,0xa6,0xce,0x3c,0x99,0xbc,0xc8,0x94,0x11,0xdf,0x5e,0x0b,0x15,0xf7,0xba,0x0b,0x1d,0x11,0x0c,0x45,0x6a,0xbc,0x6b,0x3f,0x5f,0x1d,0xa6,0x10,0x6e,0xd8,0x87,0x86,0x4b,0xa5,0x6a,0xab,0x46,0x6a,0x8a,0x63,0xb3,0x35,0xcf,0xcf,0x4c,0x64,0xd6,0x5c,0x0e,0x6f,0xb4,0x80,0xb4,0x01,},\"\\x73\\x8c\\xbf\\x06\\xd0\\x0d\\x4d\\xcd\\x5e\\x5f\\x24\\x3a\\x1c\\x18\\xdd\\x5e\\xc2\\x02\\x78\\x88\\x46\\x95\\xa1\\xcf\\x3b\\xea\\x67\\xbb\\x5b\\x05\\xdd\\x7e\\x60\\xa2\\xa2\\x4f\\xd3\\x25\\xbe\\x6b\\xf4\\x6b\\x46\\x28\\x73\\xec\\x90\\x7f\\x9d\\xe8\\x8d\\xc2\\xc7\\x62\\x62\\x0b\\x7e\\x0e\\xf7\\x27\\x65\\xd4\\xbd\\xa6\\x62\\x45\\x49\\x93\\xc8\\x28\\xa1\\x74\\x6e\\x9e\\xd8\\xd1\\x9d\\xff\\x43\\xc4\\xc4\\x85\\x27\\xac\\x84\\x5f\\x21\\x86\\xa4\\xad\\x7c\\x1d\\x99\\x2a\\x16\\x24\\x5c\\xd5\\x73\\x07\\x3e\\x09\\x40\\xdc\\xee\\xd3\\x68\\x11\\x0b\\xb5\\xfd\\x0a\\x4c\\x88\\x34\\xce\\x88\\xa7\\x71\\x25\\xb9\\x14\\x73\\x93\\xc8\\xb5\\x8c\\xb1\\x6e\\x5e\\xbd\\xc1\\x82\\x44\\xeb\\xfa\\x48\\xba\\xba\\x46\\x97\\x3f\\xdc\\xd4\\x85\\xb1\\xb2\\xe5\\xf3\\xb0\\xe7\\x09\\x92\\xcf\\x19\\x99\\x58\\x06\\x38\\xd8\\x7f\\x1f\\x5b\\x27\\xc4\\xd7\\xf9\\x1d\\xec\\xf3\\x7d\\xe2\\xe7\\x34\\xe3\\x19\\x55\\x35\\xc6\\x31\\x08\\x2b\\x3e\\xba\\xa8\\xce\\x30\\xa9\\xc2\\xc2\\xdb\\x01\\x6d\\x7d\\x35\\x47\\xe6\\x21\\x61\\x88\\x50\\xe2\\x20\\x40\\x03\\x8d\\x0f\\xe0\\xfa\\xea\\x2f\\x9b\\xf5\\x10\\xb6\\x82\\xc4\\xfd\\x14\\x75\\x0e\\x89\\xb4\\xc1\\x99\\xef\\x0c\\x99\\x05\\x00\\x54\\x3e\\xee\\xab\\x5f\\x0b\\x50\\x7a\\x31\\x31\\x99\\xc2\\xa2\\xa0\\x26\\x2d\\x6d\\x81\\x4c\\xbc\\x09\\x33\\xc5\\x92\\xe2\\x56\\xc3\\xe2\\x9d\\x52\\x4b\\x06\\x6e\\xa5\\xa4\\x54\\x33\\x61\\xa1\\x04\\x50\\xe0\\xaa\\x67\\x5c\\x61\\x40\\x8f\\x30\\x7f\\x26\\xee\\x58\\x96\\x9d\\x63\\x27\\x8f\\x13\\x5b\\x7d\\xcb\\x66\\x6b\\x93\\xf2\\xca\\xcf\\xd8\\x38\\x73\\x47\\x1e\\x97\\x4a\\x28\\x6b\\x09\\x02\\x3f\\x50\\x15\\xfa\\x1a\\xaf\\x18\\xbf\\xbf\\xa5\\xf7\\x43\\x85\\xd0\\xdf\\x6b\\x9a\\xdd\\x51\\x6f\\xfc\\x0c\\x31\\x13\\xe3\\x7e\\x09\\x78\\x38\\x64\\x6a\\xc9\\x30\\x54\\xff\\x4d\\x96\\x02\\x06\\x67\\x44\\xba\\x33\\x96\\x95\\x3f\\xd7\\x81\\x68\\x13\\x01\\x70\\xbb\\x27\\x5c\\x15\\x2b\\xdd\\x36\\x6f\\x73\\x06\\x5c\\x0a\\x7a\\xd7\\xad\\x00\\x75\\x8c\\xb9\\x9a\\x7a\\xc1\\xb7\\x80\\x9d\\x26\\xdf\\xaa\\xc7\\x58\\x46\\x82\\x01\\xee\\xb6\\x0d\\xea\\x36\\x8c\\x33\\xf2\\x57\\xaf\\xe2\\xf1\\xb4\\xc0\\x2e\\x37\\xba\\xfe\\x40\\xf5\\xd7\\xfd\\x40\\xc8\\x7d\\x1c\\x56\\xa0\\xcb\\x28\\xe9\\xd2\\x83\\x69\\xa3\\x92\\x4b\\xce\\xf8\\xb6\\xd9\\x99\\xdc\\xf4\\x29\\x4d\\xd8\\xc4\\x14\\x3d\\x75\\xc6\\xc2\\x5b\\x5a\\x45\\x44\\x48\\x8d\\xde\\x72\\x52\\x48\\xc7\\x8d\\x93\\xc1\\x5b\\x81\\x5b\\x01\\xcb\\xd0\\xf3\\x1d\\x1b\\x00\\xac\\x04\\x83\\x7e\\xf8\\x5b\\x40\\x03\\xfc\\x96\\xd4\\x45\\x7a\\xc5\\xa0\\x23\\x62\\x3e\\x67\\xb6\\x6d\\xa4\\x70\\x0a\\x08\\x59\\xf8\\x3f\\xdc\\xcd\\x3c\\x7a\\xae\\x09\\xde\\x09\\xa0\\x57\\xe0\\x0d\\xb4\\x4a\\x2a\\x6a\\xac\\xaa\\x21\\x74\\x6a\\x49\\xb8\\x22\\x46\\x89\\xa5\\xcc\\x18\\x54\\xba\\x3d\\xc4\\xaa\\x2a\\xa3\\x45\\x24\\xe7\\xa5\\xa8\\x9d\\x11\\xee\\xa3\\x56\\xaa\\xea\\x5e\\xf5\\xfb\\xf5\\x42\\xc9\\x9f\\x54\\x4d\\xb9\\x40\\xf5\\x08\\x68\\x38\\xee\\x2a\\xb2\\x18\\xb8\\xd3\\xf2\\xe1\\x07\\xd0\\xb2\\x9d\\x4b\\x04\\x83\\x0e\\xed\\x79\\xc0\\x76\\x8e\\x02\\xc2\\x84\\x4b\\x3c\\xba\\x32\\x68\\x95\\xf4\\xab\\x38\\xa3\\x99\\x4b\\x83\\xab\\x30\\x60\\x0f\\xf5\\x11\\xcc\\xb5\\x95\\x99\\x2f\\x8c\\xc0\\xd2\\x95\\x48\\x07\\x97\\x2d\\xa3\\x65\\xb0\\x6f\\xbd\\xab\\x53\\x9b\\x2e\\x03\\x59\\x8b\\x34\\xe5\\x3c\\xfc\\xf9\\x39\\x90\\xb9\\x7a\\xac\\x1d\\x32\\x97\\x83\\x36\\x6d\\x45\\x1f\\x97\\x2b\\x8d\\x8a\\x00\\xb6\\xb8\\xec\\xdb\\x37\\x27\\x96\\x44\\xce\\xc1\\x44\\x7c\\x09\\x98\\xee\\x4f\\x70\\x90\\xf3\\x4c\\x9c\\xc8\\x53\\x05\\x90\\xca\\xe7\\x65\\x36\\x0a\\xad\\xb0\\xab\\x31\\x35\\x00\\x49\\x41\\xc9\\x23\\x02\\xcb\\xb2\\xb3\\x50\\xa1\\x4e\\x8f\\x30\\xaf\\x53\\x25\\xc2\\xb4\\x38\\x00\\x5e\\x3a\\x9d\\x45\\x85\\xe6\\x32\\x65\\xc3\\x27\\xba\\x72\\x57\\x54\\xb3\\x32\\x56\\x91\\x7f\\xb9\\x65\\xae\\x9f\\x02\\xed\\x21\\x26\\xb4\\x81\\x47\\x3d\\xc0\\xe9\\x31\\xc2\\x52\\x2b\\xf0\\x0f\\xe6\\xa2\\xec\\x95\\xc7\\x92\\x24\\x7b\\x1e\\x03\\x39\\x61\\x12\\xf7\\x83\\x07\\x0e\\x2f\\xe6\\xc2\\xcb\\x98\\x22\\x50\\xd1\\x3f\\x2d\\x54\\x60\\xc7\\x44\\xfd\\xe4\\x53\\x23\\xe6\\x31\\xcc\\xcb\\x54\\x0c\\xd7\\x25\\xf2\\xc5\\x5a\\x70\\x58\\xf2\\x30\\xe8\\x2b\\x79\\xf3\\x66\\xaf\\xcb\\xb0\\x25\\xb4\\x92\\x55\\x43\\x95\"},\n{{0xf9,0x13,0x9e,0x57,0x9f,0xa9,0x6e,0xbd,0x62,0x87,0xdb,0x3b,0xab,0xcd,0xa6,0x0f,0x92,0xe7,0x31,0x53,0x56,0x6f,0x92,0x4c,0xb5,0xde,0x04,0xde,0x44,0x93,0x48,0x1e,},{0xc0,0x6c,0xe3,0x35,0x53,0x3a,0xf8,0xd8,0xf3,0x37,0xf2,0xb3,0x8e,0x0a,0xaf,0xa2,0xce,0x9b,0x27,0x22,0x3c,0xd9,0xdd,0xc5,0xef,0x32,0x02,0x7f,0x04,0x88,0x9b,0x7f,},{0x05,0x1d,0x8d,0x7f,0x0b,0x68,0xd2,0xee,0xc7,0x2c,0x81,0xad,0xfc,0xfb,0x31,0xae,0x85,0x58,0xf6,0x0a,0xb6,0x3c,0x9f,0x56,0x52,0xa8,0xdf,0x63,0x8f,0x66,0x6f,0x1e,0xbc,0x0c,0x6e,0x0b,0x41,0x19,0x53,0xbc,0xda,0x6b,0x51,0x51,0xb2,0xb9,0x3a,0x39,0xe3,0xc5,0x33,0x0a,0x85,0x73,0xe1,0x68,0x79,0x22,0x72,0xab,0xd3,0x6c,0x81,0x0a,},\"\\xb3\\x30\\x76\\x4d\\xdc\\x62\\x8e\\x4a\\xd6\\x7a\\xa4\\x98\\x2a\\xe8\\x6d\\x45\\x81\\x07\\x1c\\x19\\x3e\\xc3\\xc5\\x8f\\x81\\x3d\\x79\\x21\\xb8\\x4d\\x2a\\x54\\x56\\x2b\\xd8\\x74\\x17\\xae\\x1d\\xe5\\x90\\xa1\\xa4\\x8c\\x4e\\xc7\\xd5\\x56\\xad\\x93\\x1d\\x65\\xc0\\x54\\x3f\\xdf\\x06\\x07\\xc7\\x49\\x85\\x9e\\xe1\\x2f\\x99\\x52\\x02\\x0c\\x19\\x5c\\xf8\\x74\\x60\\x95\\xe1\\x08\\x7c\\xc6\\xc3\\xc8\\xef\\x9d\\x24\\x05\\x25\\x60\\xce\\x81\\x3d\\x61\\x39\\xb7\\xa7\\x5c\\x8f\\x4b\\x8e\\xa3\\x0a\\x9c\\x4a\\xb8\\x88\\xd0\\xa6\\x34\\x1c\\x99\\xab\\xd3\\x5e\\x09\\x03\\xbf\\xe5\\x6c\\x93\\x15\\x23\\x40\\xc4\\x12\\x76\\xd7\\xf2\\x4e\\x09\\x12\\xb1\\x2a\\x4d\\xb3\\xd7\\xee\\x44\\x84\\xdf\\xa5\\x3a\\xfc\\x0b\\x1a\\xea\\x14\\x09\\xd1\\xe0\\x32\\x8a\\xa1\\xc8\\x60\\x41\\x27\\xca\\x2e\\xb1\\xa5\\xe8\\x1b\\xf3\\x1f\\x8c\\x7a\\x51\\xc6\\x05\\x2c\\x53\\x4e\\xfe\\x6b\\x3d\\x0e\\xe7\\x4f\\xf5\\xa9\\xb1\\x1c\\x61\\x57\\xe3\\x64\\x77\\xef\\xa9\\x38\\x2f\\x57\\x51\\xbe\\x8c\\x8c\\x64\\x54\\xc4\\x46\\xd6\\xf8\\xdc\\x7e\\x92\\x95\\x25\\xcc\\x3d\\xe7\\x8c\\xb1\\xba\\x4a\\xba\\x9b\\xd4\\xbe\\x15\\x26\\x10\\x43\\x75\\x82\\xc9\\x65\\xee\\xa4\\x8c\\xbd\\x4c\\xaa\\x6f\\x30\\x8f\\x85\\xf4\\xf8\\xd0\\x06\\xa0\\x42\\xf6\\x19\\x20\\x07\\x62\\xe1\\xbb\\x9b\\xa4\\x22\\xe6\\x54\\x75\\xb3\\x3a\\x94\\x94\\x29\\x8c\\xfb\\xb7\\x5a\\x15\\x2b\\x36\\xd2\\xa0\\x55\\x01\\x80\\x77\\x05\\xb9\\x52\\x76\\x53\\x50\\xcd\\x14\\x14\\x1d\\x35\\xd4\\x98\\x66\\x92\\xd6\\xc3\\xbc\\xfc\\x6d\\x61\\xdf\\x00\\x52\\xa6\\x20\\xaa\\xb8\\xcc\\x13\\x20\\x5e\\x75\\x4c\\x16\\xf9\\x3e\\xca\\x79\\x20\\xbb\\xea\\x51\\x57\\xef\\x11\\x2f\\x0b\\x64\\xc1\\x05\\x4f\\x90\\xa5\\xdd\\xc1\\x75\\xa8\\x9e\\x29\\x24\\x2f\\x57\\x64\\x6e\\x74\\xcc\\x88\\x5e\\x81\\xa1\\xcc\\x14\\x4c\\x3d\\x78\\x2d\\x11\\x52\\xa9\\xe4\\xcf\\xe7\\x6c\\xb3\\xff\\xab\\xe7\\xdb\\xe6\\x03\\xfb\\x38\\x69\\xec\\xa8\\x69\\x96\\x98\\x70\\x9c\\xc8\\x7f\\xc9\\x61\\xc1\\xe2\\x99\\xcf\\xca\\x22\\xe3\\x24\\x2e\\xae\\x78\\x8c\\xff\\x11\\xbf\\xca\\x61\\x02\\x67\\x45\\xf4\\x97\\x62\\x25\\xb2\\x6e\\xe2\\x00\\xc4\\xf1\\x91\\x0c\\x4b\\x83\\xdf\\x5c\\xe4\\x6e\\xf4\\x87\\xd7\\x48\\xd9\\xc4\\xc5\\x02\\x14\\x1b\\x78\\x74\\xca\\xf4\\x1e\\x5a\\x29\\x7b\\x24\\x8c\\x2b\\xac\\x69\\x90\\xa1\\x5b\\x07\\xb4\\xcf\\x81\\x0e\\x59\\x28\\x74\\x42\\xd9\\xa3\\x69\\x6c\\x02\\xe8\\xd7\\x32\\x4d\\x3c\\xf7\\x30\\xdd\\xa5\\x40\\x53\\x6b\\xeb\\x13\\xcf\\xde\\xae\\x61\\x80\\xdd\\x74\\x84\\x83\\x2d\\xfa\\x94\\xe9\\x4a\\xa6\\xcb\\xa1\\x17\\xaa\\xe1\\x72\\x70\\xf4\\x8f\\x93\\xb2\\xf9\\x8a\\xe9\\x58\\x17\\x18\\x16\\x3f\\x44\\x63\\x54\\x6c\\x0a\\xe0\\xf2\\x79\\xc3\\x6b\\x92\\xbe\\xe6\\x6f\\x1c\\xa2\\xd6\\xa4\\xf7\\x26\\xd2\\xdf\\xee\\x0b\\xc1\\x1c\\x1d\\x8a\\x1f\\xa6\\x2c\\x3c\\xc8\\xab\\xa2\\x66\\xb9\\x87\\x59\\x28\\x6c\\x10\\x68\\x48\\x3b\\x23\\x76\\xb4\\x03\\xc8\\x87\\xfb\\xb6\\x57\\xdc\\x0f\\x25\\x5d\\xea\\x90\\xdb\\xd2\\x33\\x08\\xf7\\xe0\\xe8\\x42\\xb4\\x98\\xa8\\xdf\\xc7\\xc9\\xcd\\x5a\\xef\\x0e\\x87\\xd5\\x6b\\xe4\\x0d\\x50\\xfc\\x1d\\xd4\\xc0\\xaa\\x7d\\xee\\x55\\xae\\xbe\\x4d\\x6b\\x6a\\x52\\x05\\x39\\x62\\xb8\\x7b\\x0f\\x2e\\xe0\\x9a\\x90\\x81\\x61\\x55\\x33\\x3d\\x5c\\x57\\xa1\\x47\\x24\\xe0\\x01\\xbc\\x3d\\xed\\x17\\x84\\x3b\\x76\\xe2\\xc4\\x7a\\x17\\x63\\x39\\xc8\\xde\\xfc\\x54\\xb5\\x5b\\x23\\x58\\xae\\x7d\\x01\\xb0\\xf6\\xe0\\x8f\\x31\\x21\\x6a\\xe9\\x03\\x40\\x69\\x41\\x68\\xa5\\xa7\\x9e\\xe8\\x83\\xea\\x78\\x58\\x00\\x7d\\x17\\xc3\\x73\\x59\\xc9\\x9d\\x65\\x97\\xef\\xe4\\x60\\xc1\\xa2\\xf7\\x73\\x8a\\xc3\\x2c\\x5e\\xb5\\xe3\\x9e\\x50\\x0c\\x49\\xc0\\xdf\\xf9\\xc4\\x65\\x9e\\x8c\\x50\\xcc\\x5c\\xa7\\x9d\\x8b\\xa4\\xe5\\x97\\x2d\\x67\\x22\\x54\\x68\\xfb\\xa6\\x41\\x67\\xa6\\xb2\\xc6\\xf3\\x68\\x93\\x5c\\x7a\\x04\\x9d\\x35\\xd3\\x55\\xc7\\x67\\x25\\x20\\xd3\\xc9\\xe4\\xe4\\x3c\\x67\\x1c\\x3c\\xb8\\xde\\xe2\\x59\\x04\\x74\\x95\\xde\\x0f\\x56\\xdd\\x71\\x91\\xd5\\xbd\\x4b\\xbd\\x29\\x51\\x7e\\x36\\x47\\x92\\xff\\x89\\xd3\\x37\\x99\\xb6\\xe7\\x81\\xc2\\x01\\x93\\xf5\\xa3\\x16\\xfb\\x40\\xde\\x74\\xfe\\xe2\\xac\\xc2\\x5e\\x47\\xf5\\x12\\x21\\x4d\\xe3\\xb1\\xe9\\xb3\\x82\\xa8\\x69\\x29\\xc1\\x57\\x3d\\x37\\x24\\xc2\\x50\\x17\\xc0\\xe5\"},\n{{0xc8,0xee,0x95,0x4d,0xb5,0xa1,0x1b,0x29,0x2e,0xd9,0x77,0x64,0xfa,0xe6,0xb2,0x83,0x05,0x1d,0xb5,0x7d,0xcd,0xc0,0xaa,0x0d,0xf5,0x39,0x3b,0xb6,0x0c,0x11,0x2e,0xd3,},{0x5c,0x2f,0x81,0x82,0x4e,0x99,0x75,0xdd,0x7e,0xa3,0x53,0xbc,0x66,0x80,0x7d,0xed,0xc7,0x61,0x03,0x49,0x79,0x4e,0x2f,0xc0,0x8e,0x5a,0x31,0xe0,0x02,0xe3,0xfe,0x07,},{0xf3,0x07,0x7a,0x75,0x10,0x1e,0x12,0x1e,0x5c,0x3e,0x77,0xd8,0xed,0x97,0xb5,0x78,0xd2,0x39,0xbd,0x42,0x18,0x03,0xd3,0x45,0x5b,0x56,0x54,0x40,0x5a,0x4c,0x58,0x6a,0x60,0x92,0xe1,0x3a,0x85,0x29,0xba,0xce,0x46,0x8a,0x30,0x57,0x84,0xb3,0x73,0xe4,0x33,0xfe,0xe4,0xa3,0xdf,0x89,0x56,0xbe,0xfa,0x01,0x2f,0xd8,0xa8,0xee,0xd1,0x0c,},\"\\x7b\\xa3\\xfb\\x56\\x83\\x15\\xaa\\x81\\xe2\\x1f\\x19\\x77\\x80\\xed\\xc2\\xc6\\xea\\x26\\xd8\\xd0\\x6a\\x43\\x78\\x91\\x2f\\xca\\x23\\x01\\xcf\\x1e\\xab\\x3d\\x80\\x3c\\x84\\x69\\xde\\xdd\\xf3\\x76\\x70\\x3d\\xdb\\x7c\\xe0\\x6a\\x77\\xda\\xb2\\x0e\\x02\\x34\\x4f\\xad\\xcc\\x50\\x02\\x2a\\xb3\\xc7\\x13\\xcd\\x03\\xc1\\xda\\xa9\\x3f\\x1c\\x7e\\xa5\\x72\\x62\\x9f\\x61\\x0b\\x5e\\x3c\\x51\\x41\\x1b\\xb8\\xc1\\x96\\x94\\xbb\\xce\\x90\\x3c\\xac\\x47\\x05\\xf9\\xb5\\xdd\\x0f\\x47\\xbc\\x5d\\x0a\\xa3\\x25\\x3f\\x90\\x88\\x70\\x29\\x90\\x27\\xff\\xbd\\x34\\x49\\xee\\xba\\xd4\\x53\\x32\\xb5\\xd0\\xc4\\xf5\\x33\\xdb\\xed\\x18\\xa9\\x9a\\x24\\x98\\xb9\\x16\\x4e\\x24\\x5f\\xb6\\x5c\\x0a\\xfa\\x0b\\x05\\x37\\x03\\xa0\\xcf\\x95\\x94\\x0a\\xc7\\xa0\\x19\\x5d\\x4f\\x70\\x46\\x60\\x9c\\xf0\\x43\\x71\\x33\\x87\\x06\\xb9\\xb1\\x98\\x6c\\x0f\\x11\\x81\\x75\\xd2\\xcd\\xfc\\xe7\\x4a\\x6f\\x88\\x65\\x98\\x25\\x85\\x4e\\x94\\xec\\xe5\\x8f\\x51\\x57\\x63\\x6d\\x62\\x35\\xb7\\x6d\\x32\\x74\\x5a\\x2a\\x81\\xa9\\x67\\x1a\\x8f\\x86\\x02\\x7b\\xa9\\xe0\\x17\\x63\\x88\\x8f\\xc1\\x71\\xce\\xf7\\xc4\\x51\\xc3\\x60\\x72\\xbc\\x74\\x99\\x83\\x9d\\x43\\x1c\\xf1\\x8c\\xd7\\xc6\\xc9\\xfb\\xa3\\xaa\\x71\\x2a\\x05\\x43\\x28\\xcc\\xd6\\x2b\\xe4\\x82\\x0a\\xbd\\x5e\\x78\\x21\\x62\\x76\\x46\\x11\\xd4\\x53\\x9b\\xa2\\xce\\xbd\\xc2\\x09\\xb3\\xf4\\xe4\\xb6\\x9c\\x3d\\x64\\x07\\x3e\\x92\\x0d\\x21\\x52\\x14\\xfb\\x0f\\xda\\x44\\x18\\x5a\\xad\\xa5\\xc3\\x61\\x27\\xa1\\x5b\\xa1\\x5c\\xa2\\x8a\\x3a\\xd0\\x86\\xe9\\xd0\\x33\\x66\\x86\\x9c\\x60\\xc3\\xfb\\xce\\xbd\\x86\\x9d\\x2e\\x40\\x64\\x3e\\x83\\x3f\\x89\\x48\\x03\\xf9\\x80\\xa2\\xda\\x7e\\xa4\\xe5\\x9c\\xe4\\xd7\\xc0\\x6f\\xd2\\xaf\\xf0\\x87\\xee\\x7b\\xcf\\xdd\\xaa\\x3b\\x32\\x81\\x7c\\xe6\\x3a\\x63\\x58\\x7d\\xba\\xfe\\xf3\\x80\\x01\\x3a\\x6f\\x1e\\xe3\\x73\\x4b\\x94\\xca\\x3d\\xf9\\x64\\x4d\\xd0\\x43\\x43\\x02\\xec\\xb3\\x24\\xaf\\xe3\\x5f\\x46\\x5c\\x9c\\x1c\\x93\\x1b\\x27\\x29\\x4f\\xc6\\xee\\x02\\x72\\xde\\x22\\x42\\xae\\x90\\xd7\\xf2\\xe0\\x67\\x02\\x7e\\xf8\\x64\\x2e\\x8f\\x17\\x1e\\xd8\\x80\\xff\\xab\\xce\\x8a\\x20\\xa1\\xb3\\xe3\\x39\\xad\\x4e\\x3f\\x1a\\x90\\x01\\xf2\\x0f\\x90\\x02\\x61\\x88\\xfd\\xe3\\x4b\\x21\\x7a\\x6e\\x26\\xaa\\xff\\x18\\x42\\x2b\\x7f\\x84\\x3d\\x0f\\xdd\\xa3\\x21\\xc3\\x19\\xc7\\x78\\xf2\\x31\\x37\\xf2\\x0c\\xcc\\x1b\\xda\\x18\\x90\\xe5\\xbc\\x91\\x6a\\x54\\x56\\xd0\\x68\\xd3\\x7b\\x5a\\xcc\\x63\\x47\\x72\\x0c\\x56\\xa5\\xa4\\x91\\xbc\\x34\\x8d\\x6c\\x84\\x8a\\x9c\\x8f\\xec\\xfe\\x58\\xc9\\x2b\\x1f\\x30\\x2f\\xe1\\x49\\x19\\x71\\x8c\\xd5\\xe7\\x8b\\x7f\\xd6\\x01\\xd0\\x9d\\xc0\\x1e\\x69\\x04\\x86\\x1e\\x8d\\x68\\xb3\\xc5\\x75\\x35\\xb6\\x13\\x66\\x76\\xcb\\xc6\\xe8\\x39\\xaf\\x0d\\xd7\\x39\\xdb\\x89\\xa7\\xab\\xd9\\x13\\xfd\\xf6\\xb0\\x0e\\x9c\\xa0\\x26\\x02\\xde\\x6c\\xa0\\xaf\\xd0\\x91\\x3d\\x99\\x2f\\xba\\xa8\\xff\\x82\\x2b\\x9d\\x9b\\x09\\xdd\\xa7\\xa2\\x9b\\xe9\\x19\\x10\\xd8\\xfa\\x3c\\xaa\\x2a\\x5e\\x51\\x83\\x46\\xc1\\x67\\xc9\\xf5\\x19\\x41\\xcf\\x73\\x53\\xf3\\xf3\\x4c\\x1d\\xab\\x33\\x48\\x5d\\x0a\\x8c\\x19\\xda\\xf9\\x51\\xfd\\x3e\\xf2\\x0d\\x0b\\x11\\x9d\\x80\\x38\\xdf\\x90\\xc1\\x14\\xa2\\x5a\\x5b\\x93\\xae\\x40\\xec\\x44\\xb9\\xa5\\xd2\\xbc\\x1c\\x65\\x17\\xc6\\x82\\x50\\x0d\\x4c\\xdc\\x19\\x71\\x42\\xbe\\xc3\\xaf\\x82\\x32\\xc0\\x71\\x42\\x8d\\xc5\\x4c\\x0d\\x30\\x45\\x42\\x72\\xe7\\x33\\x6b\\x0b\\x58\\x88\\xa6\\xe8\\xfe\\xcd\\xe8\\x59\\xe2\\xac\\xcb\\x7f\\xb0\\x94\\xac\\xc5\\x4f\\xfa\\x48\\x1f\\x76\\x23\\xd9\\x44\\x69\\x1f\\x04\\xfb\\x36\\x13\\xa9\\x95\\x49\\x80\\xf1\\x7e\\x2a\\xd2\\x17\\x3d\\x68\\xcf\\x0e\\xc1\\xb6\\x7d\\x8a\\x91\\xd6\\xec\\x82\\x94\\x6b\\xcf\\x05\\xcb\\x90\\x68\\x1a\\x71\\x62\\x7b\\x59\\x02\\x38\\x33\\x4e\\x3d\\x5a\\xb9\\xda\\x6a\\x08\\x9b\\xd7\\x26\\x24\\xdf\\x90\\x74\\xcd\\xd2\\x30\\x9e\\x04\\xdf\\xca\\xe0\\x32\\x81\\x2f\\xe8\\x4f\\x9d\\xb8\\x82\\xcd\\xea\\xae\\x69\\xee\\x5d\\xaa\\x5a\\x66\\xff\\x42\\x7f\\xc4\\x52\\xed\\xd0\\x76\\x9b\\x6a\\xab\\xcc\\x13\\x9d\\x0f\\x70\\xaf\\x8b\\x97\\x43\\x0e\\x64\\x4f\\x58\\xa4\\x12\\x87\\xa9\\x3f\\x63\\x1d\\xed\\xa8\\x2c\\xa0\\x71\\x6d\\x79\\x75\\x4c\\x5c\\x50\\x3e\\x52\\xa6\\x65\\xda\"},\n{{0x6d,0xbc,0x55,0x9e,0x4a,0xb1,0x93,0xee,0xbf,0x70,0xc5,0xc3,0x2d,0x79,0x7b,0xe0,0x0b,0x73,0x11,0xe8,0xe6,0x69,0x1d,0xa9,0xaf,0xcc,0x18,0x72,0x91,0xf2,0x50,0x1c,},{0x38,0xa7,0x03,0x44,0x76,0xfb,0x93,0x82,0xf1,0x41,0x77,0x68,0xc4,0x21,0x62,0x95,0x1a,0x26,0x36,0x90,0x2c,0x38,0x98,0xc0,0x29,0xbe,0x27,0x8a,0xb4,0xc3,0x1f,0x31,},{0x31,0xf1,0x6a,0x7c,0xaf,0x2b,0x74,0xf6,0x5e,0x05,0x7c,0x93,0x33,0xa1,0xa2,0x63,0x3d,0xac,0x73,0x46,0x33,0x8f,0x79,0x85,0x10,0x73,0x0e,0xb8,0xd5,0xd3,0x25,0xfc,0x10,0x80,0xdd,0x5a,0xad,0x5f,0xce,0x05,0x34,0xe9,0x54,0x3f,0x3c,0x93,0x58,0x68,0x04,0x46,0x4a,0xf5,0x88,0x6e,0x86,0x44,0x12,0x9c,0x77,0xeb,0xaa,0x48,0x5f,0x01,},\"\\x88\\xee\\x23\\x65\\xf7\\xcf\\x9d\\xe3\\x3a\\xcd\\x53\\x56\\x49\\x68\\xb2\\xdc\\x7f\\x73\\x70\\xb7\\xe7\\x03\\x3f\\x4c\\x66\\x3a\\x88\\xc2\\x5f\\x60\\xf7\\xf7\\x11\\xd6\\x19\\x08\\xeb\\xf1\\xf5\\xbb\\x72\\x83\\x55\\x53\\xc8\\xaa\\x8c\\x8e\\x4f\\xcd\\xec\\xd3\\x79\\x78\\x23\\x82\\x89\\xbf\\x6c\\xa8\\x48\\x76\\xd2\\x28\\x21\\x7a\\x28\\xd8\\x1b\\x0b\\x45\\x7c\\x92\\x2e\\x91\\xec\\xba\\x8d\\x3e\\x1d\\x2e\\x66\\x59\\xc2\\xb0\\xae\\xa0\\x51\\xb9\\xc2\\xe0\\x9c\\x7d\\xfe\\xb5\\x1d\\x30\\xed\\xe7\\x67\\x57\\x03\\x41\\xff\\xac\\x1e\\xcf\\x0d\\xe2\\x0c\\x82\\xd1\\xe9\\xed\\x07\\x75\\xde\\xac\\x72\\xda\\x7c\\x2d\\xec\\x23\\x48\\x65\\xde\\xc8\\x3f\\x67\\x15\\xe1\\xc3\\xc5\\x9d\\xe2\\x03\\x3c\\xc2\\x4d\\x86\\xbc\\x2d\\x31\\xaa\\x16\\x64\\x96\\x86\\xed\\xe0\\xdb\\xbd\\x89\\x64\\xc3\\xa6\\x4a\\x3d\\xca\\x55\\x88\\xd7\\x24\\x8b\\x1f\\x24\\xdf\\x8d\\x75\\xf0\\x9a\\xac\\x62\\xc0\\x78\\x28\\xca\\x43\\x1a\\x3a\\x2d\\x77\\xa6\\x0c\\xc9\\x3c\\xfa\\x34\\x95\\xca\\xbe\\xb1\\x90\\x4e\\xd5\\xb5\\x63\\x98\\x4e\\x8c\\x20\\x77\\x7b\\xac\\x87\\x74\\x10\\x8a\\x64\\xed\\xa5\\x8f\\xb3\\x20\\x24\\x4a\\x3a\\xdd\\x3e\\x3e\\x7a\\x76\\xcd\\x13\\x7c\\xfa\\x4a\\x09\\xb6\\xe6\\xe9\\x30\\x11\\xea\\x0a\\xe6\\x51\\x71\\xaf\\x13\\x07\\x11\\x76\\x6c\\xd2\\x5b\\x3c\\x74\\xec\\x54\\xc0\\xbd\\xfa\\x02\\xb3\\x12\\x0a\\xc2\\x90\\x87\\xeb\\xac\\x98\\x37\\xfc\\xa6\\x5b\\xa9\\x71\\xbc\\x42\\x81\\xdd\\x55\\x7c\\x50\\x0e\\x22\\x5e\\xa6\\x6c\\x3c\\x3f\\xd5\\x22\\x06\\xc1\\x9a\\x9f\\x93\\x95\\x46\\x31\\x69\\xf8\\xc7\\xa8\\x46\\xbd\\x9f\\x83\\x4d\\x7f\\x33\\x7d\\x0b\\x61\\xfb\\x30\\xbc\\xe2\\x94\\xf4\\x78\\xae\\x1f\\x1d\\x97\\x7e\\x45\\x4e\\x43\\x3e\\xe8\\x72\\x9f\\xb0\\x65\\xcc\\xe0\\x3f\\xb2\\xe4\\x35\\xdc\\xbc\\xbf\\xba\\x01\\x53\\x7e\\x7a\\x67\\x62\\xe5\\x5e\\x7e\\xd2\\x25\\x28\\x30\\x37\\x04\\xbe\\xb5\\xae\\x38\\x1f\\x2e\\x18\\x10\\x56\\xf2\\x51\\x33\\x27\\x3c\\xf1\\x7d\\xdf\\x2b\\x06\\xe2\\xd9\\x47\\x7f\\x2c\\x09\\x75\\x5f\\xc8\\xd9\\xc7\\x3c\\xb3\\x31\\x00\\x46\\x8c\\x64\\x13\\x1c\\x68\\x6c\\xac\\x79\\xfd\\x38\\x45\\x01\\xe5\\x0f\\x8b\\x0b\\xee\\x28\\xba\\x39\\x58\\x3f\\x42\\xe4\\xfd\\x37\\x99\\xe2\\x4f\\x60\\xda\\x5f\\xd3\\xc7\\x79\\xaa\\xbf\\x69\\x9f\\xfd\\x23\\x21\\xed\\x04\\x5a\\x85\\xbc\\x64\\x24\\xf6\\x0f\\xdc\\xc4\\x9c\\x1c\\xb3\\x1f\\x24\\x9a\\x42\\x36\\xc0\\x94\\x91\\x76\\x81\\x81\\xb9\\x21\\xf5\\x86\\x02\\xfd\\x41\\x5c\\x1e\\xde\\xb2\\x6f\\x39\\x32\\x4a\\xdd\\xff\\x14\\x77\\x13\\x24\\x73\\x7c\\x67\\x20\\xcc\\x92\\x39\\x1b\\x94\\x9d\\xcb\\x42\\x12\\xbd\\x69\\x31\\xd4\\xde\\x51\\x40\\x1e\\x7f\\x95\\x3b\\x7b\\x03\\x6b\\x22\\x3f\\x0a\\xf7\\xa8\\xe4\\x08\\xb0\\x4e\\xa6\\x35\\xa2\\x3f\\xa0\\x70\\x9b\\xa0\\x42\\xa5\\xd9\\x92\\x95\\x4c\\x09\\xd8\\x58\\x1d\\xcc\\xcf\\x52\\x56\\x8a\\xd2\\x7a\\x1c\\xc7\\x1d\\x18\\xaa\\x27\\x40\\xf6\\x21\\x21\\x2e\\x7f\\x4c\\x5e\\x5e\\x5e\\x5e\\x45\\x32\\xd9\\xa6\\x7e\\xc2\\x77\\x3a\\xc2\\x1c\\x8a\\x4b\\x00\\x2d\\x65\\x24\\xf6\\x18\\x2d\\xd3\\x71\\x73\\x5d\\x2c\\x2a\\xbe\\x6c\\x95\\xc2\\x81\\xc6\\xfb\\x1e\\x97\\x6b\\xc1\\x7e\\x38\\x3f\\xd5\\x2a\\xea\\xaa\\x9f\\xbd\\x4a\\xbb\\x82\\xa2\\xcc\\x65\\x39\\x5f\\x8c\\x2c\\xc7\\xd8\\x18\\x2a\\x0d\\x25\\x0c\\x68\\x5c\\xfc\\xba\\x93\\xa9\\x51\\xee\\x7c\\x50\\x3c\\x6e\\x3e\\xec\\x23\\x6c\\xe3\\x3e\\x08\\x6c\\x61\\x07\\x28\\x73\\x7c\\x1c\\x3b\\x3a\\x24\\x25\\x2d\\xa7\\xf2\\x16\\x72\\xd9\\x28\\xeb\\xda\\x99\\x3a\\x94\\xc4\\x58\\xab\\x99\\x0f\\x5d\\x19\\xd8\\x00\\x23\\xc3\\x6a\\xa1\\x6e\\xaf\\xca\\xb1\\x43\\xf3\\x52\\xe9\\x7d\\x64\\x09\\xf3\\x24\\x99\\x41\\x11\\x9b\\xfd\\x9f\\x5f\\x90\\x84\\x72\\x4d\\x9e\\xba\\xd3\\x83\\xb1\\x0f\\x34\\xd3\\x3a\\xc8\\x30\\xcc\\xe9\\xe5\\xcb\\x8a\\xec\\xee\\x6f\\x40\\x30\\x1c\\xbb\\xe3\\x09\\xfd\\x06\\x15\\x34\\xa7\\xd0\\xc3\\xed\\xaa\\xea\\x02\\xa1\\x71\\xd8\\xb2\\x34\\x9d\\xbe\\xec\\x62\\x85\\x20\\xac\\x33\\x4a\\x5b\\xfe\\x28\\xa9\\xd5\\xf4\\xc0\\xd7\\x40\\xf7\\xc7\\x2d\\x4d\\x72\\xd8\\x9a\\x97\\x32\\x6a\\x03\\x00\\x2d\\x1e\\xf3\\x85\\x22\\xbc\\xd3\\x7b\\x42\\x84\\x7a\\x31\\x4b\\xd8\\x43\\xec\\x88\\xd1\\xf2\\xf9\\xd3\\x9f\\x57\\xf2\\xf1\\xa1\\x3d\\x01\\x40\\xa8\\x84\\x74\\x50\\x44\\x8c\\x88\\x0b\\x3a\\xe7\\x65\\x31\\xe9\\x5c\\x43\\x92\\x97\\x32\\x50\"},\n{{0xc9,0xd4,0x16,0x83,0x0a,0xe2,0x02,0x8f,0x21,0x75,0xd2,0x2b,0x61,0x4c,0x79,0x19,0x8c,0x67,0x0c,0xfa,0xa0,0xe7,0xa3,0x61,0x50,0xef,0x0f,0xee,0x21,0xa9,0x5c,0xe6,},{0x6e,0x3e,0xb4,0xd0,0x18,0x73,0x07,0x2d,0xf9,0x46,0xf1,0x79,0x2f,0x71,0x06,0x33,0x08,0x95,0xe7,0xa7,0x6d,0xd9,0xae,0x27,0xf8,0xa9,0x88,0x03,0x94,0x90,0xfd,0x4b,},{0x47,0xfa,0xad,0x4e,0x65,0x52,0x93,0xed,0xa1,0x56,0xb2,0xa1,0xfa,0xbb,0xfb,0x7e,0x00,0x9f,0xc2,0x90,0xaa,0xfe,0xdb,0xd5,0x65,0x21,0x14,0xa4,0x78,0x53,0xbc,0x77,0xa8,0x23,0x3a,0x2b,0x17,0x9f,0x60,0x54,0x77,0xd7,0x87,0x87,0x8c,0xbb,0x15,0xea,0x61,0x24,0xdf,0x8d,0xc5,0x7b,0x2c,0xe7,0xbe,0x7d,0x18,0xb7,0x16,0x2f,0xb5,0x0d,},\"\\xff\\x9a\\xd4\\x83\\x7c\\xd0\\xbb\\x77\\xd6\\x21\\x0f\\xdd\\xdc\\x75\\x5e\\x6c\\x0f\\x1a\\x73\\xc2\\xbc\\xd0\\x3f\\x7a\\x58\\x69\\xe7\\x34\\x2c\\xfd\\x73\\xcf\\x70\\x86\\xf8\\x65\\x56\\x15\\x60\\x27\\x7b\\xf6\\xc3\\x42\\x1a\\x91\\x2d\\x67\\x65\\x8b\\x1f\\xa9\\x70\\x57\\xc4\\x96\\xf4\\xbe\\x8e\\xdc\\xbe\\x18\\xb5\\xec\\xd0\\x8a\\x1e\\x7d\\xb2\\x52\\x23\\xab\\xda\\x20\\x8f\\xa5\\x31\\xf4\\xb2\\x80\\xaa\\x03\\xb0\\x4b\\x60\\x60\\x34\\x11\\xd3\\x74\\xba\\x7c\\xbb\\x02\\x0b\\xb9\\xa8\\xce\\x4c\\x0e\\x45\\xa7\\xe1\\x32\\x14\\x48\\x43\\xc3\\x1f\\x8b\\x45\\xc5\\x8e\\xb3\\xea\\x85\\x3c\\x2c\\xeb\\x61\\x37\\x6e\\x9d\\xf8\\x1d\\x97\\x78\\xe7\\x21\\xad\\xac\\x77\\xb5\\x03\\x54\\x93\\x7f\\x34\\x37\\x2f\\xcc\\xd5\\x75\\xe8\\x8d\\x9d\\x05\\x8e\\x43\\xdf\\x94\\x2f\\x2c\\x43\\xb5\\x23\\xc8\\x09\\x8e\\x6d\\xd9\\xe6\\xbd\\x21\\xd5\\xa6\\x49\\xb4\\x72\\xd4\\x1e\\x34\\x5f\\xcd\\x5e\\xfd\\xdd\\x49\\xea\\xb3\\x02\\x70\\xcd\\x87\\x88\\x40\\x4f\\x28\\x51\\x6e\\x09\\xd3\\xac\\xc4\\x00\\x48\\xb3\\x9d\\x32\\x46\\xf7\\x57\\xe4\\x82\\xe1\\x45\\x9c\\x62\\x6b\\x79\\x9e\\x04\\xd0\\x67\\x27\\x13\\x73\\x71\\xe1\\x20\\xaf\\xb9\\xfe\\xc3\\x9a\\x25\\xf4\\xe6\\x76\\x4b\\xf9\\x79\\x2f\\xe4\\x92\\xee\\x0f\\x21\\x0b\\x57\\xdb\\x9e\\xbb\\x9e\\x8e\\xf4\\x1b\\x02\\xc7\\xfe\\xe9\\xed\\xd4\\xb6\\x17\\x4c\\x57\\x0d\\xe0\\x20\\xa3\\x91\\x28\\x71\\x33\\xfe\\x8c\\xcb\\x41\\xa8\\x3f\\x91\\xbd\\x22\\x38\\x2b\\x21\\xe1\\xd7\\xeb\\xc2\\xc7\\xe5\\x01\\x8e\\xf5\\x14\\x2d\\x82\\x63\\x7d\\x02\\x62\\x0f\\xbc\\x05\\x69\\xcc\\x09\\xc4\\x4e\\x91\\x11\\x12\\xbb\\xae\\x99\\x06\\x4d\\x68\\xd1\\xc6\\x9e\\x77\\xc9\\x93\\x0b\\x0d\\xe0\\x30\\xc8\\xc1\\xd7\\x48\\xc4\\x14\\x05\\x9d\\x5e\\x29\\x9b\\x7e\\xdc\\x08\\x94\\x06\\x51\\x89\\x4b\\x30\\x3a\\x2b\\x32\\xdd\\x2c\\x36\\x5a\\x06\\x7c\\x97\\x23\\x58\\x55\\x94\\x64\\x4d\\x3e\\xe8\\xde\\x1a\\x51\\xfa\\xea\\x0e\\x65\\x0f\\x21\\x24\\x88\\x5a\\x94\\xcb\\x99\\xeb\\x90\\x3b\\x7d\\x45\\x79\\xbd\\xe5\\x91\\x49\\x7d\\x95\\x39\\x30\\xd3\\x63\\xdd\\xdb\\xda\\xc6\\x27\\xb9\\x7a\\x91\\xf4\\x96\\x82\\xdf\\x8e\\x72\\x50\\xa7\\x07\\x3d\\x38\\x3a\\x7a\\x22\\xcf\\x11\\x3f\\x28\\x58\\xce\\x6b\\x63\\x2a\\x28\\x92\\xc4\\xe8\\x8a\\xa9\\xa0\\xd2\\x89\\xeb\\x57\\x62\\x9b\\x00\\x8d\\x3b\\x1b\\x60\\x81\\xe6\\xfe\\x5d\\x3c\\x0a\\x6c\\x80\\x21\\x89\\xb5\\xf1\\x08\\xe7\\x66\\x31\\x9e\\x15\\xb3\\x3e\\xaa\\x5b\\x8c\\xed\\x40\\x27\\xea\\xec\\x83\\xb4\\xac\\x68\\xb1\\x4b\\x82\\x98\\xbc\\x51\\xcd\\x8e\\xb3\\x80\\x9b\\x7a\\x2d\\x68\\x4f\\xe3\\x2b\\xbd\\x9f\\xab\\x5c\\x91\\x8e\\xeb\\x17\\xcc\\x44\\x4d\\x73\\xf7\\x30\\xd4\\xc8\\xcc\\x05\\x7b\\xd3\\xa2\\xf1\\xf0\\xae\\xbb\\x61\\x63\\x29\\x34\\xe6\\x17\\x02\\x16\\x88\\x29\\xcd\\x7e\\x91\\xde\\x81\\x50\\x96\\x29\\xd0\\x1a\\x8c\\xde\\xfe\\x0d\\x1a\\xc4\\x9e\\x21\\xf0\\xc5\\xfb\\xe1\\xb2\\x24\\x48\\x27\\x26\\x8a\\x0a\\x27\\x35\\x7e\\x15\\x8b\\xd7\\x68\\x84\\xa2\\x1e\\x7f\\x1f\\xac\\x1b\\x62\\x72\\x16\\x6d\\x5a\\x9f\\x64\\xf9\\xb6\\x72\\x98\\x9a\\x87\\x62\\xf5\\x12\\xbf\\x1d\\xf4\\xb2\\xab\\x69\\x97\\x65\\xf2\\xcd\\x83\\x96\\xf4\\x76\\xe7\\xf5\\x99\\x95\\xde\\xe7\\xd8\\x90\\x20\\x7e\\xff\\x0f\\xd2\\x72\\x63\\xec\\x23\\x2e\\x37\\xcf\\xed\\xfe\\x7c\\x44\\x05\\x55\\xd4\\xca\\x74\\xe5\\x2d\\xa2\\x46\\xc4\\xb8\\x37\\x57\\xbe\\xaf\\xd2\\xab\\x2a\\x51\\xef\\xe1\\x60\\xbb\\x02\\xb9\\x8c\\x26\\xd6\\xb2\\xc3\\xf0\\xc1\\xaa\\xcb\\x2f\\x3c\\x34\\xa5\\xb2\\xa3\\xb6\\x6f\\xee\\x17\\x5b\\x78\\x75\\x48\\x07\\x3d\\x8b\\x57\\x77\\xc6\\xbe\\x88\\x0b\\xdc\\x19\\x6b\\x33\\x74\\xa2\\x15\\x4f\\x94\\xd9\\x36\\x0f\\x77\\x55\\xac\\x68\\x15\\xa2\\x8a\\xf2\\x96\\x27\\x1e\\x22\\xa8\\xf2\\x35\\x43\\xc7\\x49\\x55\\xa6\\x09\\x12\\x5b\\x02\\xa5\\x69\\x21\\x80\\x11\\x42\\x02\\x95\\xcc\\xf0\\xd7\\x35\\x69\\x99\\xa5\\xb8\\x95\\xcc\\x88\\x48\\x3f\\xad\\xf7\\x97\\x0c\\xec\\x6c\\x64\\x24\\x0f\\x70\\x79\\xfd\\xb1\\x5f\\xfc\\x5c\\x42\\x27\\xe5\\x39\\x26\\xd2\\x78\\xba\\x0f\\xed\\x3c\\x39\\x93\\xbc\\x86\\x82\\x28\\x23\\xdd\\x58\\x1a\\x32\\xab\\x2e\\x3a\\x07\\xf7\\x94\\x30\\x22\\x4b\\x27\\x4e\\xad\\xd8\\x45\\x59\\x8a\\x7d\\x1d\\x89\\x67\\x6a\\xaf\\x23\\x67\\x77\\x74\\xb7\\xb0\\x58\\x3b\\xcc\\x83\\x59\\x9d\\x15\\x5d\\x14\\xb0\\x9a\\xdc\\xf4\\x9e\\xd5\\x05\\xe8\"},\n{{0x2d,0x27,0x7d,0xd5,0x5f,0x57,0x19,0x5e,0xc0,0x72,0xb4,0x7c,0xb1,0x44,0x8c,0xb5,0x82,0xc8,0x35,0x73,0x9e,0x6c,0x98,0xba,0x71,0xab,0x12,0x8f,0x70,0xce,0x6b,0x79,},{0xdf,0xa9,0x25,0x93,0xef,0x0f,0x0d,0x97,0x4a,0x11,0x37,0x83,0x0a,0xd1,0x38,0x48,0xaf,0xef,0x3b,0x81,0x0c,0x2a,0x21,0xbf,0x77,0x91,0x78,0xce,0x4b,0x3a,0xb9,0x74,},{0x73,0xc1,0x06,0x06,0x49,0xa7,0xc0,0x14,0xed,0x01,0x94,0x58,0x51,0xb5,0x3e,0x28,0x53,0x24,0xe6,0x0d,0x06,0x1c,0x83,0x1d,0xda,0x41,0xf0,0x33,0xb5,0x65,0x83,0x06,0xa1,0xf1,0x12,0x32,0x7a,0xfe,0x93,0xca,0xa9,0x21,0x02,0x07,0x30,0xaa,0xe0,0x06,0x9c,0x9a,0x2b,0x45,0xee,0xf5,0x5c,0xbb,0x4a,0x5a,0x9c,0xd4,0x6c,0xda,0x80,0x08,},\"\\x14\\x54\\x9e\\xdd\\xd5\\xf2\\xb7\\x90\\x5d\\xda\\x19\\xd7\\x4a\\xb2\\x07\\xaa\\xc6\\xfb\\x3e\\x3d\\xf3\\x29\\x5d\\x84\\x52\\x31\\xef\\x3a\\xea\\x6e\\x1f\\x04\\xee\\x03\\x3c\\x90\\x38\\xdc\\xb4\\xbd\\x3d\\x5e\\x45\\x2c\\x54\\x83\\x4d\\x0f\\xf2\\xb7\\xde\\x3f\\x32\\x2e\\x56\\x26\\x94\\x9c\\xd6\\x1d\\x6e\\x89\\x01\\x38\\xff\\x0e\\xa8\\xad\\x84\\x6e\\x8f\\xe8\\x87\\xae\\xe1\\x5f\\xc4\\x8b\\xbe\\x4f\\xba\\x42\\x45\\x5f\\x5c\\x17\\x45\\x7a\\xe7\\x89\\xb4\\x05\\xaf\\x85\\x96\\x11\\xfe\\x1f\\x87\\x46\\x18\\x5a\\x65\\xae\\xf2\\x13\\x4e\\xa4\\xd8\\xf3\\x98\\xd4\\x8d\\xf7\\xc1\\xbb\\xa4\\x30\\x44\\x08\\xae\\x7e\\xfb\\x35\\x29\\x24\\x09\\xd5\\x08\\xdd\\x55\\xce\\x21\\xde\\x8c\\x28\\x16\\x0d\\xc9\\xe8\\x77\\x70\\x0c\\x76\\x3d\\x06\\xb0\\x1b\\x85\\x42\\x05\\x2d\\x7d\\xdb\\x63\\x35\\x54\\xe3\\x58\\x42\\x79\\xc7\\x96\\x93\\x70\\x23\\xc8\\xea\\xc3\\x72\\x77\\xbe\\x2b\\x82\\x04\\xff\\x3e\\x0e\\x10\\x31\\x19\\x0a\\x01\\x01\\x4c\\xf5\\xf5\\xb4\\xd7\\xad\\x99\\x67\\x27\\xf9\\x75\\x31\\xe0\\x35\\x5b\\x87\\xc9\\xe6\\x11\\x52\\x5a\\xad\\x07\\x99\\x58\\xe9\\xaf\\xe2\\xab\\x10\\xe4\\xa3\\xe7\\xa1\\xb6\\xba\\x0a\\xff\\x81\\x5d\\xa2\\xcd\\x81\\xea\\x9e\\xb9\\xf5\\x36\\x98\\x66\\x33\\xf3\\x16\\xdd\\x06\\xc2\\x50\\x3c\\x6b\\x19\\x8d\\xc5\\x93\\x04\\x80\\x7b\\x98\\xb4\\x29\\x35\\xf5\\x1f\\x63\\x7d\\xdb\\x59\\xe2\\x33\\xfe\\xd5\\x66\\x43\\x9c\\x1f\\xe9\\x6c\\xda\\xaf\\xa4\\x9f\\x44\\x12\\xd0\\xc1\\xe6\\x54\\xd8\\xc6\\x90\\x42\\x47\\x0b\\x3a\\x59\\xac\\xb6\\xbf\\x67\\xe4\\x0b\\x38\\xa7\\x70\\x67\\xd5\\x99\\x7b\\x8d\\x35\\xed\\x61\\xd6\\xeb\\x3c\\xc7\\x8b\\x8b\\xdc\\xb9\\x57\\x4b\\x1c\\xed\\x9f\\x6f\\x33\\x9e\\x9e\\x38\\xf9\\x41\\x46\\xef\\x63\\xf0\\x49\\xe6\\xb8\\x02\\xbf\\xed\\x2a\\x51\\xab\\x42\\xe7\\xd4\\x89\\xf3\\x16\\xff\\x4d\\x1c\\xd8\\x98\\xbc\\xf8\\x50\\x56\\x51\\x68\\x74\\x40\\x74\\x9c\\x0f\\xb7\\xa5\\x7d\\xbe\\xff\\x72\\xe6\\x46\\x89\\xfa\\xa4\\x1c\\x07\\xb4\\xad\\xe5\\x99\\x33\\xd2\\xfa\\xc6\\xd5\\x73\\xde\\xb7\\x39\\x54\\x9e\\xb7\\x5f\\x1e\\x6f\\x73\\x85\\xd8\\xc6\\x14\\x28\\x94\\x97\\x3e\\xd6\\x85\\xeb\\x8e\\xd0\\x80\\xc2\\xa4\\x9f\\x3a\\xc6\\x57\\x11\\x61\\xaf\\x96\\x63\\x5a\\xd0\\x57\\xdf\\x14\\x86\\xd3\\x96\\x77\\x3a\\xc8\\x98\\x32\\x10\\x97\\x89\\x86\\xe1\\xbf\\x21\\xa2\\x08\\x06\\xd6\\x67\\xa4\\x8a\\x55\\x5a\\x96\\x32\\x21\\xd5\\x06\\x14\\xa8\\x97\\x6b\\x2e\\xec\\x97\\x51\\x2d\\xb1\\x1a\\x35\\x81\\x94\\x49\\x2a\\xb5\\x45\\x58\\x01\\xba\\xa1\\x4a\\x51\\x1b\\x26\\xeb\\x0c\\x68\\x28\\x9d\\x79\\x05\\x23\\x71\\x2f\\x2f\\xf8\\x70\\x98\\x92\\x69\\x5c\\x4d\\xb9\\xad\\x31\\x0d\\xf8\\xc6\\xee\\x7b\\xd8\\x3c\\x87\\x1f\\x05\\xae\\xc3\\x3b\\x7a\\xd3\\x26\\xf4\\x46\\x69\\x2a\\x42\\xf7\\x22\\x23\\x76\\x24\\x6d\\x53\\x6a\\x32\\x6c\\x4d\\x73\\xeb\\x57\\x2f\\xea\\xda\\x11\\xb8\\xac\\x71\\x14\\xf6\\xcb\\x44\\x4c\\xa2\\x78\\xfc\\xf0\\x7b\\x97\\x0d\\x2a\\xd4\\x65\\x37\\x2a\\x68\\x7d\\x36\\xb7\\xda\\xac\\x47\\x87\\x48\\xec\\x6a\\x93\\x2d\\xa2\\x08\\x43\\x94\\x8e\\xfa\\x39\\x30\\x97\\x81\\x42\\x72\\xe5\\xca\\x1c\\x73\\xe7\\x11\\x97\\x3a\\x52\\x68\\x3f\\x98\\xc0\\x1e\\x55\\x24\\x1c\\x15\\x4d\\x28\\xe3\\x8d\\x3e\\xdf\\xad\\xe2\\x30\\x3a\\x4e\\x7c\\x45\\xc2\\xa7\\xa1\\xc9\\x96\\xee\\x11\\x37\\xaf\\x86\\x4a\\x98\\xb6\\x98\\x09\\xfc\\x92\\x14\\xee\\xa8\\xcf\\x3a\\xfe\\x84\\x2f\\xee\\x3e\\xb9\\xa9\\x32\\x2c\\x3b\\x82\\xfd\\xdb\\x05\\xd4\\xd1\\xa2\\xde\\x09\\xc1\\xce\\x72\\x73\\x44\\x53\\xa8\\xdd\\x3a\\x89\\x20\\xd0\\xd0\\xac\\x96\\xef\\x77\\x8b\\x9e\\x02\\xc6\\xa3\\xf1\\x28\\x72\\xe1\\x7d\\x3a\\x81\\xba\\x75\\xfd\\x23\\x3b\\xaa\\xdb\\xe2\\x16\\xea\\x0a\\x58\\xe9\\xdd\\xa0\\x08\\x40\\x87\\x02\\x08\\xae\\x41\\x35\\x40\\x03\\x0b\\x3c\\x05\\xe5\\xd0\\xb8\\x32\\xdf\\x87\\xc8\\xee\\x7f\\x15\\x34\\x87\\xaa\\x11\\xba\\xd9\\xf1\\x39\\xc7\\xdd\\x4b\\xcf\\x41\\x8f\\x4b\\xcb\\x95\\xbe\\xe8\\x57\\xd0\\xe9\\x60\\x84\\x47\\x23\\x87\\xcb\\x39\\x12\\x7a\\x94\\x71\\x34\\x50\\x19\\x63\\xa7\\x07\\x1b\\xdb\\x34\\xde\\x69\\x61\\xbe\\x2b\\x6b\\x06\\xe4\\x03\\xe7\\x59\\x18\\xe6\\xf6\\x9d\\x08\\x02\\x1c\\xf2\\xa8\\xac\\xb8\\x0a\\x01\\x11\\xf4\\xd5\\x06\\x10\\xc1\\x52\\xd3\\x9c\\x66\\x21\\xc0\\x57\\x8a\\xc6\\x89\\x95\\x9b\\x1c\\xe6\\xf3\\x76\\xf4\\x3d\\x18\\xaf\\x06\\x2e\\x4a\"},\n{{0x42,0x80,0x66,0xc5,0x24,0x45,0x72,0x6d,0x0e,0xa2,0x00,0x7e,0x50,0x46,0x37,0x27,0x4d,0x84,0xee,0x23,0x23,0x25,0xb5,0x05,0xf2,0xc5,0x16,0x35,0x7f,0x80,0x75,0x83,},{0xdd,0x40,0xfe,0x8f,0x67,0xc6,0x65,0x61,0x3b,0x3c,0x45,0x9f,0x6a,0xce,0x8d,0xc2,0x8d,0x34,0xe0,0xe7,0x7e,0x2f,0x6a,0xa0,0x60,0x59,0x28,0x19,0xbe,0x6a,0x9d,0x68,},{0xc9,0x38,0x82,0x9f,0x59,0x8b,0x1f,0xf1,0xb8,0x18,0x33,0x60,0xd2,0x23,0xf4,0x3c,0x59,0x47,0x30,0x60,0x68,0x76,0xa9,0x9a,0x3f,0x31,0xb2,0x06,0x5d,0x04,0xe6,0xf0,0x75,0xd1,0x39,0x6b,0x3c,0x8c,0xff,0xb0,0xe1,0xe2,0xea,0xab,0xda,0x7d,0xa5,0xe7,0x89,0xcc,0xd1,0xc0,0x20,0x83,0x5f,0xe3,0xa7,0x1d,0xcd,0xb6,0xaf,0x03,0x96,0x0c,},\"\\xe2\\x79\\x6c\\x50\\xd9\\x3d\\xf8\\x12\\xbc\\xa4\\x1b\\xf2\\xa1\\xe1\\xdd\\x73\\x7d\\x8c\\xf6\\xf6\\xb4\\xf7\\x62\\x42\\xe3\\x91\\x78\\x18\\x67\\x58\\xcb\\xae\\x08\\x84\\xe6\\x0c\\x6b\\x4a\\xaa\\xdd\\xae\\xc9\\xa8\\x99\\xa9\\x12\\xe5\\xc5\\xb9\\x80\\x4d\\x7b\\x04\\x97\\xba\\xb4\\x45\\x8c\\x58\\x5d\\x4f\\x25\\x92\\x22\\x49\\x8c\\xe9\\xe8\\x0e\\xb6\\xa7\\x97\\x9b\\xbe\\xd6\\xd5\\x2c\\xc3\\x80\\x72\\xf7\\x45\\xcb\\x2c\\x63\\xe6\\x63\\xbc\\x3b\\x9d\\x6c\\xaf\\x01\\x2a\\x60\\x7f\\x6d\\x3b\\x70\\x6e\\x15\\x57\\x57\\x87\\x17\\xec\\xbb\\x97\\x1a\\xeb\\x7c\\x48\\xe1\\xdf\\x95\\x71\\x1c\\x55\\x0e\\x00\\x69\\x93\\xbf\\xfb\\xa9\\x11\\xcb\\x64\\xad\\x52\\xd5\\x17\\xed\\x18\\xbe\\x82\\x36\\x9e\\x81\\x58\\x19\\xd3\\x17\\x59\\x47\\xd4\\xa3\\x5b\\x2c\\xc7\\xb9\\xdc\\x6c\\x10\\x05\\x13\\x26\\xb3\\xf1\\xdc\\x1e\\xdb\\x1b\\x68\\xba\\x01\\x5f\\xf7\\xca\\x1d\\xc3\\x61\\xd8\\x96\\x7a\\xbc\\xff\\xd3\\xc3\\x1f\\x7d\\x6b\\x0c\\xb1\\x39\\x6a\\xe5\\x41\\xf2\\x97\\x59\\xc4\\x13\\x0b\\xe5\\x2e\\xcc\\x11\\xd9\\x92\\x61\\xc3\\x65\\xbf\\x7c\\xde\\xc7\\x81\\x49\\x4c\\x5f\\xa0\\x52\\x6d\\xb4\\xdb\\xbe\\x66\\x0a\\x43\\x2b\\xe5\\x60\\x43\\xc6\\x6e\\xa0\\x7c\\x25\\x62\\x7a\\x5f\\x72\\xb7\\x81\\x23\\xdc\\xf9\\x86\\xff\\x71\\xed\\x1a\\xff\\xd1\\x65\\x9b\\x13\\x93\\xd9\\x62\\x1f\\x71\\x1d\\xfa\\x63\\xea\\xda\\x38\\x34\\x30\\x79\\x70\\x58\\xf1\\x56\\x6a\\x00\\x05\\x2d\\x67\\xba\\x53\\xc1\\x23\\x7b\\x56\\x91\\xde\\x3b\\x03\\x9f\\xd4\\x47\\x6f\\x11\\x51\\xe5\\xed\\x5f\\x5a\\x98\\x67\\x2f\\xa3\\x3a\\x1d\\x85\\x4f\\xa0\\x15\\x66\\xb3\\x32\\x31\\xd4\\x6a\\xcd\\x7f\\x34\\xb8\\x03\\x44\\x79\\x98\\x18\\x53\\x76\\x4d\\xab\\x87\\xf4\\x98\\x44\\xcb\\x62\\xc6\\x3d\\x53\\x6f\\xac\\xa9\\x20\\x44\\x7d\\x8c\\xd1\\xe8\\x11\\x3e\\xdb\\xc8\\x3e\\x4a\\x6b\\x78\\x15\\xe1\\x80\\xcd\\x78\\xb9\\x33\\xd9\\x68\\x7f\\xd5\\xbe\\x99\\xd0\\x51\\x8a\\x44\\x66\\x29\\x89\\xbc\\x64\\x01\\x11\\x24\\xf1\\x87\\xd4\\x39\\x79\\x99\\x4a\\x95\\xe0\\xc9\\x03\\xa0\\x06\\xc1\\xc0\\xbe\\xf1\\xc0\\xf3\\xdf\\x1e\\xb7\\x00\\xf9\\x80\\xc2\\x8c\\x3c\\x1e\\x99\\x7d\\x0c\\x56\\xd1\\x13\\xda\\xe1\\x96\\x88\\x2b\\x05\\x01\\x8f\\xca\\xb3\\x14\\xd8\\x11\\x7f\\xaf\\xba\\xbe\\x77\\x00\\xb9\\x32\\xd4\\x7c\\x57\\x36\\x2b\\x20\\x35\\xed\\xdc\\xe2\\xd2\\xef\\x33\\x64\\x1e\\xa9\\x0c\\x3e\\xa3\\xfe\\xc6\\xea\\x5b\\x87\\xe1\\x61\\x01\\x4c\\x4f\\x82\\x14\\xfd\\x03\\xce\\xbf\\x94\\xab\\xe1\\x22\\x53\\x7a\\x98\\x70\\x32\\x39\\xdf\\x58\\x21\\xc5\\xab\\x63\\x3f\\x98\\x36\\x5c\\xc6\\x36\\xe3\\xf1\\xd2\\xf7\\x4e\\x0f\\xf8\\xf1\\xfe\\xe0\\x6a\\x3f\\x73\\x90\\x7e\\xe5\\x04\\xb3\\x10\\xfd\\x52\\x24\\xad\\x4d\\x05\\xcd\\x23\\xc3\\x56\\xdf\\x8b\\x34\\x64\\x72\\x98\\xc4\\x98\\x28\\x72\\x5b\\xa5\\xfd\\x60\\x61\\x1e\\x82\\x9b\\x63\\x37\\xbc\\xc9\\xdc\\xf8\\xe8\\x97\\x1c\\xab\\x3e\\xe9\\xc2\\x63\\x37\\xd3\\x8d\\xfd\\xfa\\x03\\x6b\\xf6\\x09\\x6b\\x63\\x5a\\xc1\\xbd\\x55\\x25\\xec\\xd3\\x77\\xa1\\x52\\x72\\xa8\\xac\\x9b\\xbe\\xf1\\x33\\x10\\x7a\\x42\\x25\\x8d\\x8b\\x19\\xec\\x69\\xdc\\x42\\x61\\xbe\\x53\\x00\\xa2\\xd2\\xd5\\xca\\x99\\xf3\\x1e\\xfd\\xf2\\x59\\xf9\\xd0\\x79\\x86\\x9a\\x34\\x41\\x37\\x79\\xf3\\x02\\x88\\x24\\xd7\\x47\\x68\\x6c\\x46\\x0f\\xfc\\x49\\x6f\\x20\\x10\\xf4\\x03\\xe9\\x03\\xe2\\x7a\\x87\\xdd\\x07\\x5a\\xe0\\xa7\\xf1\\x68\\x94\\x16\\xd3\\x1b\\xcc\\x15\\xf4\\x90\\xca\\xf9\\x75\\xc4\\x0e\\x71\\x5d\\x54\\x99\\x03\\xe8\\xbc\\x0f\\x7d\\x91\\x41\\xe0\\x20\\xf4\\x10\\xf3\\xca\\x2b\\x2c\\x07\\x97\\xca\\x0d\\xc8\\xd7\\x39\\x2b\\xff\\x24\\x35\\x28\\xc7\\xf3\\xbe\\x13\\x89\\x97\\x18\\x5a\\x4b\\x36\\xf4\\x53\\x76\\xd9\\xfd\\x70\\xba\\x20\\x98\\x9d\\x2d\\x1a\\x91\\x1d\\x4b\\x98\\xd1\\x60\\xd2\\xb8\\xde\\x59\\x2d\\xe2\\xf4\\xc0\\x4f\\x35\\x86\\x0d\\xf3\\x20\\xc5\\x48\\x44\\x0d\\x5e\\x3a\\x34\\x6a\\x14\\xd3\\xa6\\x3f\\xe4\\x85\\xc2\\x88\\x91\\x26\\xb7\\xf4\\x1d\\x55\\xa6\\xeb\\x23\\xd5\\x62\\x0b\\xab\\xf8\\x56\\x4a\\xa7\\x9d\\x15\\x6e\\x98\\x3f\\x36\\xd9\\xed\\x49\\x8d\\xa9\\xca\\x88\\x8d\\x94\\x6b\\x53\\xcc\\x47\\x68\\xa5\\x89\\x2d\\x52\\xd5\\x41\\x52\\x69\\x60\\x28\\x25\\x24\\xba\\x61\\x94\\xda\\x65\\x94\\x1d\\x1e\\xa3\\x0f\\x80\\x6b\\xb6\\xd9\\x7c\\x74\\x88\\xb9\\x3f\\xd0\\xa7\\x70\\xa9\\xb1\\x5e\\xfc\\xd1\\x2c\\x5c\\x46\\x94\"},\n{{0x31,0x45,0xbc,0x68,0xd8,0x29,0x79,0x40,0x8e,0x46,0x57,0xb7,0x75,0xf1,0x50,0xc6,0xd2,0x8a,0x32,0x4d,0x74,0x6e,0xa6,0xde,0x90,0xfd,0x72,0xb1,0x7a,0x25,0x79,0x82,},{0xc7,0x76,0x18,0x6c,0xe4,0x7f,0x30,0xad,0x08,0xfa,0x1d,0x2c,0x61,0x6a,0x36,0x44,0x66,0x5b,0xa5,0x4f,0xf7,0x30,0xfc,0x2f,0x4d,0xb1,0xdb,0xa3,0x8d,0xde,0xed,0xca,},{0x24,0xa4,0x33,0x33,0x76,0x83,0xbc,0x71,0xa6,0xca,0x3b,0xcc,0xd8,0xcc,0x24,0x00,0xc2,0x44,0x64,0xfa,0x67,0x71,0x4b,0x46,0x51,0x5f,0x2a,0x14,0x32,0x71,0x27,0x05,0xd5,0x70,0x61,0x4d,0xb6,0xd2,0x6b,0xbb,0xd3,0xf0,0x26,0x7c,0x14,0x27,0xca,0x1c,0x2f,0x40,0xdc,0x9a,0x6f,0x1f,0xb0,0xf0,0xfc,0x71,0x4a,0x02,0xe2,0x4b,0x47,0x08,},\"\\x2e\\xa8\\xdc\\xe1\\x48\\x7f\\x45\\xd6\\xff\\x8e\\xb8\\x3c\\x54\\xfb\\x7e\\xdd\\x76\\xad\\x6e\\x60\\x8b\\xb8\\xda\\xf1\\xa1\\x82\\x3d\\xa4\\xf4\\xe4\\xe9\\x86\\x31\\x73\\x89\\x7c\\x19\\x7a\\xc6\\x58\\x04\\x82\\x3b\\xca\\x95\\x09\\x1f\\x59\\xe8\\x6d\\x63\\xc1\\x8d\\xbc\\xdb\\x85\\x74\\x3f\\x88\\x93\\xee\\x69\\x4d\\x81\\x56\\x01\\xf8\\xf2\\x2f\\x4d\\x7d\\xf0\\x87\\xf0\\x11\\x4b\\xb2\\x6c\\x37\\x95\\xe1\\xfe\\x4b\\x7f\\x4a\\x8f\\xa3\\x1f\\xd9\\xf4\\xff\\x10\\xfe\\x5d\\xd4\\x52\\xc5\\x4c\\x55\\x78\\xc7\\x52\\xf8\\x88\\x21\\x30\\x76\\xbe\\x46\\x7b\\xa3\\x0d\\x2e\\x2f\\xbb\\xee\\x87\\x7c\\x4b\\xe9\\xb6\\xec\\x4f\\x04\\x02\\x1c\\x00\\x6f\\x92\\x66\\x31\\x19\\x43\\xca\\xb7\\xce\\xa9\\x9a\\x2a\\xce\\xbb\\x69\\xee\\xc3\\xe6\\x18\\xc1\\x31\\xf9\\x74\\x30\\x07\\x5f\\x79\\x75\\xe3\\x9f\\x26\\xd5\\x31\\x51\\x78\\xb6\\x9a\\x1d\\xdf\\x73\\x17\\x61\\x05\\x1b\\x93\\xfb\\x8d\\xf7\\xe0\\xe8\\xb4\\x1e\\x82\\xe7\\xf4\\xf7\\x5e\\x91\\xd6\\xc8\\x90\\xb1\\x4c\\xa5\\x33\\xe0\\x94\\xeb\\x8e\\xa4\\x48\\x6d\\x38\\x71\\x85\\x96\\x6c\\x98\\x29\\x5d\\x3f\\x58\\xb1\\x7e\\xef\\x6c\\xc3\\xb4\\xd0\\x7e\\x93\\xa3\\xd9\\xf4\\x77\\x2e\\xe5\\x2f\\x18\\xa5\\xbb\\x30\\xaa\\x39\\x72\\x85\\x0e\\x65\\x81\\x70\\xbd\\xdb\\x67\\x6f\\x33\\x26\\x6c\\x9f\\xd1\\x0f\\x59\\x90\\xba\\xd8\\x91\\xf0\\xce\\xb7\\x82\\x73\\x6b\\x40\\xf0\\x1b\\xd8\\x65\\x09\\xb0\\x63\\x04\\xa9\\x6d\\x93\\xda\\x23\\x3d\\xbe\\xd1\\x8a\\xfa\\x18\\x18\\xaa\\xf5\\x7a\\xf9\\xbd\\xbc\\x86\\x7b\\x39\\x7f\\xf2\\x35\\xa8\\x3e\\x85\\x72\\x24\\xb1\\x50\\x65\\x22\\x5e\\xec\\x03\\x9d\\xd4\\xe2\\xd6\\x9a\\x04\\xee\\x10\\xbe\\xa0\\x69\\x50\\x41\\xed\\xa5\\x9b\\x05\\x8e\\xc0\\x5f\\x49\\x04\\x8e\\xe3\\x24\\xd1\\x6c\\x4d\\x61\\x07\\xb6\\xec\\xd0\\x48\\x75\\xeb\\x74\\x4e\\x93\\x65\\x47\\x1b\\x4c\\x5f\\xe6\\x61\\x1b\\x26\\x18\\x93\\xf9\\xd2\\xb1\\x28\\xe1\\x35\\xf9\\x2e\\x47\\x41\\x56\\xb2\\x71\\xb3\\xc8\\x2e\\x9a\\x76\\x63\\xda\\xd4\\x95\\x3d\\x30\\xe1\\x0e\\xda\\x08\\x62\\x60\\x7d\\xec\\x33\\x72\\xb3\\x99\\x70\\xf2\\xa8\\x4b\\x12\\xf6\\x0e\\x6d\\xae\\x7f\\x31\\x79\\x90\\x86\\xd3\\x8a\\x7e\\x34\\x94\\x84\\x19\\xc1\\xb0\\x7f\\x44\\xc2\\x15\\x9c\\x86\\xb8\\xc0\\xcf\\xe8\\x74\\x7f\\xc2\\xba\\xd5\\xbf\\x47\\x53\\x56\\xcf\\xe6\\x9d\\xe2\\xdc\\x6a\\xd5\\xa5\\x19\\xfd\\x65\\xc1\\x25\\x64\\x70\\x1c\\x05\\xf7\\xc2\\x77\\xec\\xaf\\xcf\\x4c\\x87\\xb1\\x48\\xdf\\x1f\\x98\\x79\\xa9\\xae\\x44\\x3c\\x55\\xae\\xa5\\x21\\x38\\xc6\\xfa\\x01\\xef\\x0c\\x3a\\xbb\\x5f\\x2d\\xf9\\x0a\\x57\\xab\\x66\\x24\\x17\\x8c\\x73\\x7b\\x54\\x91\\x5b\\x7a\\xa2\\x9e\\xa7\\x8e\\x8e\\x49\\xef\\x5a\\x81\\x6d\\x8a\\x92\\xc2\\xf8\\x1b\\x8a\\x19\\x63\\x27\\x79\\xc8\\x92\\xd6\\x6f\\x75\\x3d\\x51\\x8c\\x41\\xcc\\xcc\\x9e\\x59\\x3e\\x50\\x74\\x26\\x25\\xbc\\xaf\\xa4\\x68\\x80\\x5c\\x37\\xa2\\x1f\\x8e\\x29\\xa6\\x96\\x0d\\xdf\\x5c\\x5e\\x5c\\xa1\\x4a\\x7b\\x05\\x2a\\x7b\\x60\\x15\\x69\\x7a\\x02\\x10\\xed\\x6f\\x01\\x43\\xe6\\xb4\\x84\\xc3\\xf5\\xb3\\xb4\\x72\\x6c\\x60\\x7d\\x07\\xbf\\xb3\\xd5\\x4a\\x09\\xc9\\x80\\x43\\xf2\\x1d\\xcc\\x5c\\xc2\\x0b\\xb4\\x75\\x4e\\x2e\\x5a\\x73\\xb2\\xf8\\x06\\xc2\\x20\\x4b\\x72\\xf3\\x6a\\xb9\\xe9\\x6a\\x62\\xc6\\x27\\x7c\\x0a\\xd6\\x6b\\xe7\\xab\\xff\\xc1\\x63\\xb4\\xe8\\xfa\\xfc\\xef\\xf5\\xe2\\x02\\xe5\\x94\\x3f\\x4f\\x0e\\x6b\\x92\\xb4\\xdd\\xb9\\x53\\xcb\\xb7\\x91\\xf8\\x31\\x66\\x03\\x69\\x38\\xe6\\xc4\\x4a\\xd9\\x1a\\x59\\x6a\\x55\\x73\\x44\\x0f\\xb3\\x07\\x41\\xe6\\x60\\xb6\\xcd\\x5f\\x86\\xff\\xa7\\x46\\xe6\\xe9\\x72\\xb8\\x05\\xc1\\x0b\\x7b\\x7b\\x9a\\x63\\xc0\\x55\\x1d\\xb8\\xeb\\x4f\\x84\\x00\\xcd\\xe2\\x86\\x8c\\x0d\\x0d\\x4e\\xb4\\xcf\\x11\\x7f\\x8e\\xc4\\xab\\x97\\x44\\xfc\\x58\\x79\\xde\\xa7\\xf0\\xef\\x16\\xc2\\x91\\xd5\\x5c\\x17\\xf0\\x8b\\x73\\x1b\\x7c\\x65\\xd0\\xc4\\x41\\xb6\\x3b\\xc8\\xff\\x5e\\x94\\x90\\x4c\\x02\\x6a\\x13\\x61\\xda\\xcc\\x80\\xa9\\x3a\\x9b\\x9f\\xba\\x3b\\x40\\x36\\x17\\xae\\xb9\\x4a\\x56\\x85\\x41\\x84\\x80\\x11\\x95\\x42\\x34\\xae\\xad\\x70\\x0f\\x03\\x4c\\x47\\xc7\\xde\\xf8\\x77\\x90\\x52\\x55\\xf1\\x8b\\xdb\\x9a\\x25\\x7c\\xe5\\xbd\\xcf\\x0e\\x17\\x67\\x0c\\xda\\xaf\\x13\\xb1\\xc7\\xe0\\x9d\\x58\\xf9\\x2a\\x96\\x63\\xaf\\x23\\x9e\\x22\\x07\\x8e\\x18\\x0a\\x23\\xcc\\xb6\\xf6\\x4d\\x64\"},\n{{0x5a,0x25,0xea,0x5e,0x18,0x2d,0x9b,0xf8,0xe9,0x30,0xa2,0x0b,0x6c,0xf5,0x5e,0x24,0xe8,0x38,0x62,0x78,0x9b,0x38,0x39,0xb1,0xce,0x9a,0x71,0xe9,0x38,0xc4,0x2d,0x37,},{0xc9,0x81,0xfc,0x36,0xf1,0xa6,0xd5,0xf7,0xd4,0x51,0xcd,0x5e,0xf3,0x9c,0xd3,0xab,0x02,0x08,0x7f,0xcc,0x6a,0xf2,0x7d,0xd7,0x8e,0xa8,0x27,0x49,0x7e,0x77,0x9e,0x21,},{0xa4,0xf3,0x5b,0x49,0xd7,0xe1,0x98,0xe5,0xd3,0x26,0xe3,0x53,0xfb,0xb0,0x1f,0xa1,0x3b,0x6a,0xe2,0x60,0xd1,0xe4,0x8e,0x30,0xc1,0xb9,0x67,0x73,0x7a,0x5e,0x79,0x93,0x6c,0x97,0xca,0x2b,0xa7,0x99,0xca,0x34,0xe5,0xe7,0x88,0xce,0xa5,0xac,0x8e,0xd1,0x0d,0x5c,0xd1,0x5d,0xae,0x53,0xe4,0x24,0x32,0x32,0x1c,0xc2,0x6d,0xc9,0x98,0x09,},\"\\x21\\x4d\\xd1\\x92\\x7f\\x2c\\xac\\xd9\\x88\\x87\\x14\\x24\\x9b\\x85\\x43\\x46\\x02\\xac\\x78\\x45\\x3b\\x4a\\xf5\\x38\\x6e\\xee\\x39\\x29\\x5d\\x3d\\x5a\\x22\\x67\\x80\\x6e\\xb0\\xcf\\xf2\\xc1\\x32\\xd3\\x64\\xc2\\x42\\x0d\\x04\\xe3\\xf6\\xcc\\x0a\\x96\\x7b\\xf0\\x5a\\x10\\xff\\xcf\\x12\\x17\\xbb\\xf3\\x15\\xe7\\x5b\\x98\\x06\\x0f\\xd4\\x58\\xd6\\x7e\\xba\\xad\\x93\\x80\\xf4\\xad\\xc4\\xdb\\xdf\\x74\\xcb\\xf1\\xc6\\x47\\x92\\x02\\xbd\\xd7\\xfe\\xd3\\xa9\\x46\\x69\\x7d\\xc3\\x84\\x44\\xd8\\x8b\\xfe\\x51\\xd4\\x1d\\x7a\\x9b\\x38\\xda\\x60\\xb8\\x50\\xc5\\x6b\\x48\\xba\\x98\\x4f\\x6a\\x18\\x89\\x51\\x49\\x55\\xc0\\xda\\xdb\\x69\\xa8\\xc7\\x36\\xcc\\x76\\xcd\\xc4\\x9f\\x13\\xf8\\x5a\\x8b\\xfb\\x79\\x28\\xff\\x0a\\x0c\\x0c\\x03\\xf1\\x7c\\x74\\xb5\\xe1\\x06\\x2d\\x75\\x53\\xfb\\xeb\\x9d\\xd3\\xd5\\x08\\x1d\\xe1\\xdf\\xd8\\xa6\\xa9\\x97\\x66\\x97\\xc6\\xa2\\x59\\xbc\\xf7\\xd4\\xbe\\xf1\\xc2\\x1e\\x0a\\xaf\\x32\\x98\\xb0\\x42\\x1b\\x91\\x9f\\xdd\\xfc\\x1d\\xcb\\x3e\\xc6\\x83\\xd8\\x6f\\xf3\\xd4\\x23\\xd7\\x1c\\x8f\\x2d\\x72\\x3a\\x42\\xff\\x68\\xd8\\x2e\\x9f\\x39\\x17\\x49\\xb8\\x29\\x98\\xdc\\xfa\\x11\\x21\\x60\\xf5\\x2a\\x41\\x3a\\x23\\xd9\\x5f\\xc4\\x2c\\x3b\\xd2\\x23\\x84\\xba\\xd7\\x77\\x54\\xa7\\x10\\xd8\\xb9\\xf8\\x4a\\xe0\\xa8\\x02\\xfc\\x46\\x50\\x9e\\x7f\\x2b\\x07\\x07\\x90\\x12\\xb4\\x3b\\xfe\\xea\\xb7\\x19\\xbd\\xe5\\x6f\\x00\\xe5\\x9b\\x8e\\xdf\\x1c\\x47\\x28\\x83\\xb1\\x98\\x5b\\x2f\\xa6\\x99\\xa1\\xae\\x90\\xcf\\x45\\xd7\\xac\\x58\\x0c\\xeb\\x5f\\x27\\x97\\xde\\xf5\\xb8\\xbf\\x4f\\x2b\\x9b\\x35\\x19\\xa7\\x27\\xb9\\xf2\\xcd\\x12\\x56\\xa2\\xf0\\x76\\xed\\x22\\x96\\x49\\x5b\\x5c\\x2d\\xf7\\x88\\x7f\\xf8\\x9e\\x88\\xe2\\x36\\xa1\\x4c\\xde\\x63\\x24\\xf4\\x3d\\x68\\xd9\\x01\\x72\\xb0\\xb8\\x8b\\xd2\\x88\\x03\\xe9\\x99\\xdb\\xed\\xcc\\x50\\x1d\\xb6\\x54\\x54\\x4e\\x17\\x1e\\xc1\\xf9\\xf3\\x2d\\x4d\\x33\\x21\\xd5\\x89\\x39\\x2e\\x03\\xca\\x65\\x9f\\x96\\x75\\x2e\\x1f\\x08\\xa5\\x5d\\xb5\\x53\\xd8\\x66\\x98\\x55\\x41\\xf5\\xbe\\xf8\\x4c\\xe2\\xee\\x32\\x3e\\x17\\xd1\\xf7\\xdc\\x16\\x4b\\x50\\x51\\x5a\\x28\\x7d\\x53\\x05\\xfc\\x28\\xc5\\x98\\x3b\\x9e\\x53\\x98\\xb2\\x40\\x7a\\xe4\\x72\\x96\\xfe\\x4a\\x48\\x1d\\x22\\xff\\xb4\\xb8\\x65\\xa6\\x6b\\x97\\xa6\\xc2\\x79\\x35\\xdd\\x8e\\xb8\\x69\\x94\\xb7\\x9d\\x36\\x83\\x63\\x71\\x3f\\x10\\x1d\\xc3\\x7f\\x42\\x9e\\xee\\x0f\\xee\\x24\\x41\\xc2\\xdc\\x17\\xbf\\x43\\x92\\x4f\\x0c\\x04\\x4f\\x14\\x32\\x90\\xea\\xf3\\xf9\\xee\\x4d\\x94\\x6d\\xbe\\x45\\x83\\x1a\\x0d\\x83\\xc0\\x76\\xe7\\x51\\xc1\\x4f\\x3b\\x1a\\x72\\x67\\xf5\\x44\\x6c\\x18\\x86\\x98\\xd2\\xb4\\x6d\\x87\\xe6\\xf3\\xb2\\x0b\\xb3\\xfd\\xaf\\xe2\\x4c\\xc0\\x96\\xbc\\x31\\x2d\\x86\\x78\\xb3\\x8a\\x80\\xc3\\xf0\\x52\\xa0\\xc9\\x6d\\x5a\\xd8\\x7a\\x5d\\xd8\\xc1\\x33\\xcc\\x9a\\x15\\xbe\\x33\\x57\\x4c\\xd9\\x43\\x08\\xc2\\x4d\\xec\\x1a\\x9b\\xdf\\x18\\x9b\\xa6\\x87\\x19\\x9f\\x72\\xef\\x67\\x09\\x87\\x8e\\x10\\xf8\\x7b\\xd8\\xa0\\x3d\\xc8\\x4c\\x8f\\xa9\\x64\\x20\\x28\\x58\\x98\\xca\\x32\\x11\\xd8\\xb0\\xcc\\xef\\x64\\x01\\x1e\\xc2\\x4f\\x38\\xe5\\x74\\xda\\x34\\xda\\xb9\\xd2\\xf0\\x02\\x10\\x52\\x27\\x89\\x0f\\x92\\x48\\x8c\\x62\\x1e\\x57\\x13\\xe4\\x7d\\xbc\\xb1\\xa8\\x2a\\x6d\\xa6\\x0d\\x8b\\x22\\x01\\xeb\\x29\\xd4\\x94\\x49\\x33\\x60\\xed\\x5a\\x3f\\x4b\\x52\\x25\\xea\\xe7\\x70\\x7e\\xe0\\xb4\\xc0\\x40\\x73\\x05\\xc1\\x67\\x54\\xc7\\xf6\\x30\\xfc\\x85\\xc1\\x3e\\x49\\x17\\x04\\x7b\\xcf\\xf3\\xb2\\xa2\\x93\\xfe\\x95\\x55\\x06\\xc7\\x26\\x4e\\xa6\\x5b\\xf3\\xa9\\xb2\\x5a\\xcf\\x34\\x36\\x00\\xd8\\xfa\\x0c\\x7c\\x1a\\x29\\x0d\\x02\\x71\\x10\\x1b\\x7f\\x40\\xb9\\x6e\\x7f\\xda\\xf2\\x9d\\xef\\x9d\\x93\\x27\\xa5\\xae\\x05\\x44\\x6c\\xb5\\xa6\\xd3\\x22\\x45\\x3a\\x8b\\x09\\x8b\\xcf\\x3a\\xee\\x1f\\x70\\x4e\\x14\\xd0\\x0b\\xe3\\x42\\xb8\\x93\\x4d\\x19\\xe5\\x29\\x21\\x88\\x72\\xea\\x3a\\x2f\\xb2\\x12\\x4b\\x52\\x66\\x7c\\x01\\xfc\\xa5\\x84\\x1c\\x66\\xe1\\xe6\\x4a\\x1e\\x68\\x0e\\x09\\xba\\x18\\x6e\\x04\\xd1\\x05\\x18\\x6c\\xf6\\xeb\\x72\\x8b\\x9d\\x50\\x2a\\x66\\xb8\\x29\\xfb\\xc9\\x92\\xa3\\x88\\x10\\x04\\xec\\xdc\\x80\\xad\\xfd\\x04\\x4e\\xda\\x88\\x0f\\x8a\\xf7\\x2a\\x14\\xfb\\x55\\x0d\\x7c\\xc7\\x41\\x94\\xa9\\x45\\x20\\x7d\"},\n{{0x42,0x33,0x5c,0x30,0xb3,0xf6,0xb3,0x59,0xce,0xf5,0xaa,0xb6,0xa3,0xce,0x28,0x58,0xa1,0x51,0xb7,0xa4,0xfd,0x78,0xd2,0xfd,0x3e,0xe3,0x6f,0xc2,0x9d,0x24,0x94,0x04,},{0x30,0x1c,0x51,0x5a,0x02,0xa4,0xc6,0x6b,0xc6,0x40,0x10,0x80,0xc6,0xca,0x79,0x23,0xb7,0x83,0x1e,0x3c,0x9a,0x72,0xb5,0x5b,0x14,0x02,0x7e,0xb2,0xe7,0xb3,0xb1,0x52,},{0x67,0xb0,0xf1,0x74,0x49,0x03,0x9e,0x8c,0x79,0x7b,0xf9,0x13,0xaa,0xe6,0xe4,0xf0,0xbb,0x99,0xc7,0x4d,0x6d,0x10,0xc9,0x73,0xb9,0x90,0xff,0xe0,0x3e,0x7e,0xe4,0xab,0x5b,0x35,0x80,0x6d,0xb1,0x5a,0x98,0xc0,0x84,0x6a,0x82,0x7e,0x7b,0xcd,0x53,0x9c,0xd3,0xbc,0x09,0xdd,0x11,0x8a,0xb3,0xe5,0x26,0x63,0xa3,0x57,0xb1,0x29,0x91,0x07,},\"\\x6d\\xa2\\x25\\x1e\\x6f\\x55\\x95\\x36\\xb0\\x9b\\xfa\\xfb\\x81\\x60\\xa2\\xe8\\x10\\x2d\\x31\\xf8\\xb5\\x93\\x24\\x08\\x3e\\x52\\x27\\xb2\\x0c\\x3e\\x5c\\x3a\\x06\\xe2\\x39\\x67\\x68\\xdc\\xa3\\xec\\x76\\xdc\\x7f\\xc0\\xeb\\x3d\\x14\\x5e\\x62\\xed\\x07\\xfc\\x1a\\x8b\\x1b\\x2e\\x34\\x70\\x13\\xa0\\x52\\x72\\x74\\xd0\\xb2\\x34\\xfe\\x72\\x50\\x26\\xa9\\xd1\\x28\\xf8\\xdf\\x20\\xdb\\xfa\\x3b\\x65\\x03\\x81\\x8e\\xde\\xbd\\x7f\\x24\\x93\\x40\\x80\\x94\\x5a\\x7e\\x1e\\xa0\\x22\\x73\\xfe\\x48\\xb6\\xed\\x1e\\x83\\xfd\\x16\\x8d\\x79\\x73\\xfb\\xb7\\x94\\x1b\\x40\\x37\\xd3\\xcd\\xa5\\x55\\xe0\\xe8\\x9c\\x2b\\x94\\x3f\\xb1\\xe2\\x07\\x65\\xac\\x7d\\x4f\\xa3\\x77\\x7f\\x35\\xa0\\xa8\\xbc\\x11\\x8f\\x59\\x9c\\x84\\x7b\\xe3\\xfd\\xb2\\xd8\\xe2\\x01\\xae\\x12\\xa3\\x0b\\xde\\xfb\\x03\\x4f\\xf2\\x4e\\x3e\\x2e\\x70\\x1a\\x0d\\x17\\x33\\x73\\x40\\x78\\xbd\\x1f\\x9a\\x69\\xbb\\xc6\\x67\\xe4\\x61\\x21\\x1f\\x2c\\x76\\x9d\\x29\\xdb\\x7c\\x4d\\x62\\xd6\\xb1\\xb9\\x2b\\x56\\xf5\\xf1\\x8a\\x93\\x1a\\x92\\x60\\x64\\xb7\\x8d\\xa1\\x46\\xe1\\x8b\\x48\\x13\\x9b\\x9b\\x39\\x86\\x2a\\xec\\x37\\xbc\\xce\\x12\\xcb\\x78\\x94\\x29\\xe6\\x8e\\xa3\\x81\\x12\\xd0\\xb5\\xcc\\xe3\\x0b\\xd2\\xd2\\x6c\\x5f\\x7f\\xd4\\x15\\xda\\xf7\\xca\\x31\\x7b\\x33\\x68\\xb7\\x61\\x7d\\x45\\x25\\xe5\\xbc\\x97\\xd9\\x46\\x1d\\x5d\\x64\\xf6\\xb5\\xd3\\x18\\xd0\\xbc\\x3b\\x76\\xf2\\x5b\\x06\\x05\\x42\\x69\\x09\\xf2\\xaa\\x0c\\xd6\\x67\\xa4\\xf0\\xe0\\x75\\xb9\\xa9\\xfb\\x2e\\x9a\\x6c\\x82\\x70\\x4d\\x8a\\x9f\\x16\\x66\\x84\\x4e\\xdc\\x32\\xf6\\x3a\\x3d\\x4e\\x0f\\xd9\\xfd\\xba\\x30\\xb5\\x1b\\x33\\x36\\xb9\\x6e\\x9e\\xae\\x39\\x2a\\x34\\x2d\\xe4\\x9e\\x9b\\x5f\\xa0\\xf9\\xb9\\x01\\x71\\xbd\\xe0\\x9c\\xf1\\xe9\\x46\\x49\\x91\\x40\\x00\\x81\\x59\\xeb\\x18\\x65\\x56\\x3c\\x28\\x39\\x4b\\x03\\xa8\\xd7\\xa5\\x52\\x27\\x1b\\x28\\x76\\x68\\x75\\x66\\xb8\\x0f\\xd3\\xbe\\x2b\\x66\\x33\\x2f\\xca\\xd1\\x96\\xca\\xb8\\x52\\x7c\\x56\\xe2\\x15\\x36\\xa1\\x41\\x65\\x2c\\xdc\\x7f\\xa7\\x45\\xb2\\x6a\\x33\\x1d\\x78\\x7b\\x93\\xe5\\xe8\\x16\\xd8\\xd8\\x51\\xa5\\x8f\\x6a\\xc0\\x7a\\x58\\x27\\xfc\\xdf\\x47\\x2e\\x86\\x85\\x43\\x3a\\x40\\xca\\xc0\\xc4\\x9a\\xa5\\x69\\x31\\x9a\\x2e\\x57\\xb4\\x1c\\x99\\x98\\x16\\x5e\\x69\\x72\\x3b\\xa7\\x7e\\x5c\\x04\\x23\\xc4\\xb4\\xca\\x07\\x18\\x7b\\xb7\\x44\\x2e\\x7d\\x31\\xca\\xac\\xb2\\x77\\x00\\xc7\\x1a\\xe4\\x8c\\xd0\\x55\\xed\\x2f\\xe4\\xda\\x36\\x3f\\x44\\x82\\x11\\x24\\xcc\\xa1\\xbf\\x2e\\x63\\xd9\\xb8\\xab\\xd2\\xfa\\x41\\xb1\\x42\\x2f\\x52\\xd5\\x58\\xbc\\x5f\\x11\\x0c\\x86\\x3c\\xc6\\x00\\x86\\x49\\x84\\xed\\x25\\x9b\\x73\\xcd\\xdd\\x57\\x96\\xb3\\x29\\x79\\xed\\xdf\\x76\\xa0\\x7b\\xc5\\x9b\\x73\\x68\\xc4\\x8e\\x12\\x9e\\xcc\\x0d\\x45\\x35\\xdc\\xce\\xe2\\xc3\\xb8\\xe5\\x6d\\xe5\\x0e\\x6f\\x5c\\xc6\\xea\\x51\\x5c\\xd6\\xa0\\xeb\\xdf\\x1c\\xa7\\x9a\\xa2\\x79\\x48\\x21\\xad\\x2e\\x10\\x9e\\xdd\\xa4\\x50\\xc9\\xfc\\x3c\\x84\\xd8\\xc9\\x6b\\xc3\\x8d\\x4b\\x43\\x7a\\x73\\x8f\\x81\\x8b\\x4d\\xdc\\xb6\\x84\\x38\\x3c\\x09\\xb1\\x1b\\x36\\x05\\x2e\\x9d\\x2f\\x76\\xa6\\x1e\\xb4\\xd6\\x20\\x49\\xce\\xd5\\xf6\\x16\\x62\\xc4\\xb9\\xec\\xd2\\x4a\\x67\\xf4\\x51\\x9d\\x46\\x52\\x8c\\x5b\\x2e\\xb2\\x10\\x05\\xf4\\x9c\\x73\\xa3\\x37\\x0c\\x68\\xe3\\x7a\\xc2\\xb1\\x8d\\x48\\x1f\\xa1\\x0f\\x96\\x71\\x4f\\xe0\\x5c\\x16\\x8d\\xf1\\x1c\\xda\\x54\\xf1\\x4f\\x49\\x37\\xe9\\xfc\\xe1\\xf5\\x16\\xc0\\x37\\x1b\\x36\\xa2\\xc0\\xa0\\x50\\xba\\xc7\\xfa\\x51\\x22\\xa6\\xe3\\x5e\\xc9\\xc4\\x04\\x36\\x58\\x5f\\x31\\x6e\\x6c\\x91\\x1b\\xdf\\xd7\\xdb\\x4b\\x80\\xb4\\x30\\x64\\x79\\xb8\\x2a\\x2b\\x24\\x3a\\x52\\xb2\\xd2\\xb6\\x27\\x42\\xed\\x11\\x28\\x27\\x90\\xcf\\x6f\\xdc\\x7c\\x9c\\x82\\x43\\x64\\xcf\\x25\\x63\\x6a\\x85\\x51\\x50\\xbd\\xdb\\xdf\\x7e\\x64\\x0f\\x9f\\x95\\x2a\\x94\\x7e\\xc7\\x97\\x49\\x25\\xe8\\x24\\x50\\x68\\xb2\\x92\\x10\\x1b\\x1f\\x4b\\x20\\x18\\xe8\\x5d\\x07\\x8c\\x2f\\xee\\xf4\\x49\\x23\\x49\\x72\\x9a\\xd4\\xac\\xb3\\x8f\\x1c\\x7c\\x02\\x70\\xb6\\x1d\\x3d\\xfd\\x76\\x36\\xc6\\xcb\\xf1\\x81\\xe4\\xc8\\xa0\\xe6\\x4f\\xa0\\x61\\x32\\x55\\x3c\\x2b\\x9d\\xb7\\x01\\x9e\\x3b\\x3c\\x48\\x5d\\x8d\\x5b\\x7d\\xfd\\x5f\\x51\\x5e\\x4d\\x71\\xed\\xe5\\x35\\xae\\x7f\\x2a\\xae\\xdc\\x23\"},\n{{0xbe,0x6b,0x2b,0xab,0xdd,0xd2,0xdc,0xa1,0xb0,0xe1,0x0d,0x12,0xd2,0x0a,0x9c,0xe2,0x9c,0x67,0x85,0xda,0xc1,0xd6,0x0f,0x2e,0xdf,0xa9,0x4a,0xc2,0x78,0x4b,0xa7,0x66,},{0x39,0x8f,0x22,0xf0,0xef,0xbf,0x8c,0x38,0x35,0x5e,0x47,0x91,0xbf,0x67,0x08,0x98,0x95,0x1f,0xbb,0xd5,0x51,0x8f,0x0e,0x2a,0x60,0x5d,0x46,0x00,0x23,0xf6,0x13,0xf0,},{0x70,0x2a,0xb9,0xac,0xbf,0xa7,0x5e,0xa2,0xad,0xbe,0x4b,0xe2,0xb6,0x84,0x76,0x25,0xae,0xb4,0x09,0xee,0xf9,0x59,0x6f,0xab,0xe3,0x9d,0x2c,0x53,0x3a,0x03,0x43,0x1e,0x5e,0x57,0x95,0x52,0xe8,0xa6,0x4f,0xc4,0xfb,0x7d,0x92,0x6a,0xa8,0xff,0xfe,0x06,0x40,0x69,0x84,0x64,0xc4,0x45,0x4c,0xe3,0x5f,0xe8,0x3f,0xf2,0x63,0x05,0x1a,0x01,},\"\\x5c\\x92\\x95\\x88\\x1b\\x7a\\x67\\x06\\x69\\xb0\\x4c\\xbe\\x0d\\xab\\xd8\\x96\\x93\\xb7\\x7f\\x7c\\xce\\x0d\\x4a\\x33\\xf5\\x2e\\x02\\xeb\\x26\\x95\\x9e\\x71\\x3d\\x9a\\xef\\x5f\\x95\\x44\\x2b\\xdf\\x91\\x72\\x83\\x83\\x32\\x52\\x02\\xaa\\xcc\\xc0\\x37\\x47\\x7e\\x36\\x66\\xfa\\xca\\xf2\\x4e\\xac\\x95\\x34\\x87\\x9a\\xa3\\xef\\xe1\\x8f\\xfc\\x1a\\x5c\\x54\\xe3\\x9c\\x76\\x87\\xd0\\x93\\x7b\\x24\\x71\\xba\\xb3\\x89\\xb6\\x46\\xcb\\xe6\\xb3\\xe5\\xd5\\x96\\x1e\\xa6\\x3b\\xd4\\x52\\xb4\\x74\\x33\\x44\\xce\\x4c\\x79\\x33\\x74\\x52\\x37\\x95\\xc7\\x81\\xee\\x84\\xd5\\x11\\xe2\\x94\\x11\\x19\\xba\\xd1\\xf4\\xa7\\x46\\xed\\x9d\\xba\\x89\\xc8\\xd0\\x75\\x1a\\x64\\x02\\x71\\x86\\x35\\xf6\\xe3\\x1d\\x9e\\x18\\x68\\x1c\\x69\\x56\\xc5\\x37\\x32\\x51\\xd3\\x5f\\x53\\xba\\xa1\\x98\\x7c\\xd4\\x48\\xc9\\x03\\x1a\\x07\\xf3\\x2c\\x80\\x29\\x11\\x9d\\xe3\\xa9\\x16\\x31\\xde\\xde\\x1d\\x93\\x3e\\x0f\\xa3\\x26\\x29\\xaf\\xe1\\xb4\\x2e\\xb5\\x91\\xc2\\x2f\\x87\\x33\\x1e\\x93\\xcc\\x08\\x3c\\x23\\xf6\\x4a\\x6e\\x5e\\x58\\x6f\\xf3\\x1c\\xc0\\x4e\\x42\\x3c\\x56\\xae\\x3f\\x6a\\x73\\x94\\x6c\\x48\\xde\\x4d\\x85\\xab\\x00\\x17\\xba\\x24\\x45\\x6d\\x69\\xb5\\x9d\\xca\\x6d\\x40\\x3b\\x64\\xb0\\x7c\\x40\\xd3\\xb9\\x0e\\x12\\x23\\x21\\x5e\\x3f\\x7e\\x87\\x6c\\x67\\x01\\x11\\x1e\\x37\\xe5\\x17\\x77\\x08\\x87\\x31\\x0c\\xa8\\x56\\xf0\\x09\\xa0\\xd6\\x06\\x54\\x83\\x5d\\x94\\xe6\\x58\\x7a\\x43\\x9d\\xa5\\xdb\\x0a\\x0c\\x37\\xd7\\xc9\\xd3\\x7c\\xa1\\xd7\\x03\\xe1\\xb3\\x22\\x76\\x31\\xad\\xac\\xaa\\x79\\x42\\x1a\\x1c\\x43\\x9d\\x60\\x34\\x9a\\xe5\\x77\\x41\\xb7\\xa8\\xad\\x09\\xec\\x29\\x31\\x23\\x03\\x0b\\xf6\\xba\\xc0\\x68\\x9e\\x53\\x1c\\xa7\\xe7\\x27\\x18\\x22\\x3f\\x9e\\xa4\\x3b\\xec\\xb0\\xee\\x9d\\x9c\\x1a\\xb8\\x45\\xed\\x1c\\xae\\x44\\x3e\\x3c\\x5d\\x4a\\x9b\\x1e\\xde\\x6d\\xb3\\x41\\x7c\\x3a\\xce\\x28\\x11\\x43\\xf4\\x2d\\x85\\xf5\\x99\\xb3\\xb9\\xd3\\xd0\\x5f\\xa0\\xed\\x07\\xc1\\xec\\x35\\xff\\xab\\x03\\x05\\x16\\x8b\\x4e\\x56\\xe5\\x8a\\xfa\\x06\\x17\\xf9\\xa8\\x6b\\x1b\\x5b\\x20\\x1d\\xcc\\xb0\\x72\\xb4\\xce\\xf0\\xbb\\x7b\\x95\\xc5\\x2d\\xae\\xef\\x9d\\x9e\\x74\\x24\\xa5\\xc0\\xf1\\x48\\xf9\\xff\\xe6\\x0a\\x5b\\x23\\xe0\\xff\\x82\\xc7\\x30\\x99\\x2a\\xc9\\xc1\\x7f\\x97\\xf0\\x65\\xcf\\x0a\\xd5\\x37\\x7e\\xac\\xcb\\x31\\xd8\\xbb\\x92\\x3b\\xd2\\x60\\xea\\x11\\x9e\\x6f\\xa9\\xbd\\x69\\x83\\x48\\x2d\\x70\\xd9\\x21\\x91\\x02\\x40\\x2d\\xc6\\xa3\\x49\\x91\\x93\\xd0\\xc1\\xcd\\x3e\\xd2\\xa6\\x69\\x21\\xa9\\x8d\\xf6\\x9b\\x79\\x14\\x13\\xf4\\x97\\x0b\\xbc\\xe0\\x4f\\x63\\x9a\\xf9\\x09\\xc6\\x4f\\x45\\x60\\xdb\\x0a\\xf6\\x00\\x3d\\xc4\\x62\\x19\\xe8\\xad\\x2b\\x37\\x2f\\x8b\\x5f\\x81\\xcf\\xaa\\x04\\x1a\\xb7\\x1a\\x34\\x8c\\x93\\x1e\\x8d\\xfd\\xbc\\x40\\x9c\\x22\\xd7\\xee\\x6e\\x07\\x62\\x6e\\x10\\x4e\\xc6\\xcc\\x7c\\x6a\\x41\\x16\\x17\\x7f\\x93\\xaf\\x16\\xf1\\x24\\xf1\\x96\\xda\\xb6\\x19\\xb6\\xf6\\x98\\xc2\\xd1\\x91\\x85\\x8e\\x96\\x0c\\x2e\\x94\\x7b\\x51\\xf3\\xac\\x48\\x38\\x75\\x9c\\x21\\xfe\\xf7\\xeb\\xae\\x35\\xda\\x24\\xf5\\x5e\\xbd\\xa9\\xb9\\x87\\x9a\\xea\\x17\\xa6\\xd8\\xd9\\x27\\xde\\x48\\x7b\\x17\\x5f\\xd7\\xfa\\xa2\\x14\\x38\\xa2\\x09\\x23\\xdd\\xbb\\xca\\x72\\xe6\\x72\\x69\\x34\\xbd\\x6c\\x21\\xe8\\x11\\x80\\x19\\xf6\\x5b\\x38\\x10\\xa0\\x7f\\xa2\\x7b\\x1c\\xba\\x64\\xd0\\xf3\\x9f\\x0b\\xfd\\x49\\xdc\\xfa\\xfd\\xef\\xe3\\x79\\xbd\\xea\\x82\\xf3\\x1a\\x9c\\x39\\xf7\\xe8\\x1d\\x29\\x43\\x37\\xd1\\x0f\\x1e\\x9d\\x8b\\x50\\xeb\\xa4\\x58\\xce\\x7b\\x75\\x3d\\x36\\x96\\x85\\x38\\x51\\x3e\\xdd\\xb0\\xe8\\x45\\x34\\x41\\x1c\\x4a\\xf3\\xf0\\x21\\x46\\x10\\xee\\x39\\x01\\xa0\\xeb\\xf3\\x16\\x17\\x3c\\xca\\xf1\\x5c\\xd7\\xee\\x49\\x6d\\xbf\\xc2\\x46\\x5e\\xb8\\x34\\xdf\\x62\\x02\\x9d\\x62\\x1f\\xe9\\x11\\x82\\x4d\\x79\\x87\\xdf\\x2d\\x46\\x34\\x6b\\x4d\\xce\\x1e\\xce\\x7d\\x19\\xd5\\x51\\x18\\xc0\\x37\\xc9\\x95\\x51\\x11\\xd0\\x7f\\x1f\\xc3\\x62\\xc7\\x39\\xf1\\xea\\x5b\\x27\\x5c\\x71\\xc0\\xae\\xbf\\x59\\x65\\x5e\\x2d\\xef\\x16\\xe1\\x23\\xb3\\xeb\\x25\\x26\\xc3\\xca\\x5e\\x83\\xcb\\x24\\xd5\\xb6\\x8d\\x7a\\xc4\\x0a\\x67\\x59\\x33\\x84\\xc5\\x63\\xaf\\xe0\\xb5\\x52\\xad\\xaf\\x60\\x80\\x50\\x35\\xbe\\x97\\xb8\\x06\\x76\\xad\\xeb\\x15\\x76\\x52\\x08\\x33\"},\n{{0xb1,0xe4,0x7c,0xa3,0x1c,0x64,0xb6,0x8a,0xaf,0xaf,0xb4,0x43,0x51,0x2e,0x66,0x78,0x7c,0x65,0x92,0xf3,0x34,0xaa,0x78,0xfa,0x21,0x9a,0x3d,0x93,0xc3,0x3a,0x4a,0xb3,},{0x58,0x11,0x9b,0x38,0xe6,0xa1,0x48,0xa9,0x36,0xbc,0x5f,0x92,0xf4,0xf2,0x9b,0x98,0x2f,0xf2,0xcc,0xa6,0x4a,0x5a,0xff,0xa1,0x4c,0xa1,0xb6,0xa6,0x2f,0xe3,0x28,0xc4,},{0xdf,0xac,0x86,0xdf,0x58,0x6e,0xc3,0x4c,0x7c,0xfe,0xa5,0xd5,0xa6,0xcd,0x11,0x40,0xe5,0x0b,0x6b,0xf0,0x50,0xf8,0xe4,0x1a,0x19,0x0e,0xbf,0xd3,0xb1,0x43,0x2b,0x95,0xa5,0x7d,0x56,0x52,0xdb,0xae,0x8f,0x53,0xe0,0x37,0xae,0x32,0x6e,0x7f,0x18,0xcf,0xef,0x7c,0x77,0x9f,0x40,0x34,0x6f,0x7c,0x0d,0x86,0x44,0x61,0x05,0x93,0xf2,0x09,},\"\\x76\\x7e\\xc1\\xb3\\xda\\xf2\\x04\\x38\\x7f\\x3f\\xd3\\xb2\\x00\\x10\\x78\\x1a\\xfb\\x1f\\x38\\xf6\\x14\\x47\\x42\\x13\\x28\\x7f\\xff\\x11\\x30\\x7f\\x5f\\xf5\\xae\\x7e\\xc9\\x45\\xa2\\xb9\\xb4\\x87\\x00\\x49\\xd4\\x53\\x2f\\x8f\\x61\\xc1\\xa7\\xb5\\xf2\\x11\\xfc\\xa2\\xe6\\x7c\\x37\\x4d\\x96\\x21\\x9d\\x8e\\xa9\\xde\\x73\\xf0\\xe3\\x87\\x04\\xfc\\x94\\xc0\\xe9\\xe7\\x2f\\x2e\\x15\\xda\\xba\\x3f\\x88\\xf7\\x49\\xb1\\xed\\x70\\x26\\x60\\xdb\\x1a\\x35\\x2a\\x26\\x67\\xd4\\xdf\\xd4\\xe0\\x0a\\x18\\xef\\xa4\\xc6\\x60\\x9e\\xe9\\xc9\\xa8\\x8a\\xda\\xcb\\xbb\\x98\\x5d\\x3d\\xe8\\xdd\\xd1\\x7d\\x4e\\x4e\\xb7\\xcf\\x74\\xa1\\xda\\x91\\xed\\xb3\\x90\\x85\\x2e\\xa4\\xcb\\x9a\\x42\\x4f\\x7f\\xa2\\x22\\x9e\\x08\\x30\\x33\\xa3\\x40\\x59\\x11\\x7e\\x5e\\xfa\\x7b\\x66\\x13\\xd7\\x5e\\x58\\xb7\\x02\\xc6\\xce\\xe5\\xd0\\x04\\xe8\\x59\\x9b\\x97\\x50\\x3a\\x5f\\x10\\xc4\\xc4\\xe5\\xb9\\x57\\x73\\x71\\xd3\\xd0\\x5b\\x2d\\xfb\\xf7\\xcb\\xef\\xe6\\xd0\\x92\\xd6\\x5c\\xbd\\x40\\x51\\x38\\xd9\\xb0\\x4c\\x51\\x86\\x23\\x59\\x83\\xfa\\xb6\\xd4\\xce\\x85\\xb6\\x36\\x27\\x62\\x06\\xd7\\x4a\\x2e\\xe7\\xdb\\x61\\x64\\xda\\xc4\\x7c\\xce\\x78\\xf5\\x0d\\xb9\\x9a\\xf6\\xac\\x6e\\x70\\x64\\xc1\\x3a\\xab\\x79\\x3b\\xe8\\x7e\\x66\\x28\\x9c\\x94\\xa0\\x9f\\xb0\\xa3\\x1d\\x97\\x97\\x1e\\xdd\\x74\\xea\\x9c\\x0c\\xe8\\x74\\xd2\\xb7\\xd6\\xc4\\xab\\xae\\xff\\x07\\xf8\\x70\\x22\\x51\\x51\\x94\\x6a\\x5c\\x47\\x6f\\x6b\\x97\\x89\\x96\\xb8\\x7d\\x8c\\x98\\x46\\x06\\xc7\\x91\\x28\\x7d\\xa6\\xba\\xd0\\xaa\\x44\\xb0\\x13\\x0b\\xe8\\x86\\x71\\xa5\\x56\\xe2\\xde\\x35\\xc4\\xcb\\x03\\x8e\\xe7\\x81\\x27\\x35\\x30\\xac\\xe0\\xa1\\x04\\xc2\\x78\\x09\\xae\\xe0\\x33\\xc8\\xbf\\x90\\x29\\xd9\\x0f\\xe7\\xba\\x06\\xaa\\xa9\\x4e\\x16\\xa5\\x2c\\x64\\x3d\\xfd\\x92\\xa7\\x62\\x4f\\xbb\\xee\\x77\\xa7\\x15\\x8b\\x2c\\xc1\\x51\\xbd\\x3f\\x61\\xa1\\xa7\\x6f\\x32\\xb2\\x84\\x89\\x30\\x7a\\xcf\\x0d\\xd8\\xc2\\x6c\\xc4\\xad\\xbb\\xb8\\xde\\x43\\x0d\\xb4\\xe4\\xf5\\x83\\x08\\xb6\\xab\\x90\\x45\\x61\\x11\\xde\\xac\\x29\\x78\\x17\\x2f\\xe1\\xfc\\x0c\\xe4\\x98\\x08\\x8a\\xdd\\x4c\\x31\\xc2\\x1f\\x24\\x27\\x90\\x25\\xfe\\xb4\\x8c\\xbb\\x7a\\x92\\x0c\\xff\\x2d\\x28\\x71\\x05\\x87\\xaf\\x52\\xc8\\x44\\xdb\\x8a\\x7a\\xeb\\x7d\\xf1\\x0d\\x43\\x41\\x1a\\x3c\\x8e\\xee\\xbb\\x40\\x6d\\x6e\\xfc\\xb1\\x92\\x48\\x88\\x7d\\x45\\x0b\\x57\\x3d\\x90\\x30\\x5e\\x1f\\x23\\x75\\x3e\\x89\\x05\\x11\\xdc\\xc7\\x7c\\x74\\x0e\\x31\\x6a\\xd7\\xf5\\x2d\\x49\\x02\\x07\\x3d\\xb3\\x99\\x8e\\x4e\\x4a\\xcc\\x4e\\x01\\x88\\x5b\\xd1\\x18\\x8e\\xcd\\x61\\x65\\xae\\xde\\xd1\\xe7\\x78\\x70\\x2b\\x6a\\x6a\\x79\\xa9\\x49\\x99\\x10\\x2d\\xf7\\x20\\x18\\xf7\\x92\\xf8\\xf1\\x62\\x00\\x7e\\x81\\x2a\\xef\\x8f\\x95\\x6e\\x12\\x32\\x82\\xbb\\xdb\\xd0\\xc3\\x56\\x12\\xc2\\xd3\\x47\\x3f\\x94\\x4c\\x6d\\x76\\xbe\\x9e\\x86\\xff\\xfa\\x46\\xcc\\xb1\\xae\\x13\\x50\\x5a\\x4a\\x81\\xf3\\x1b\\x84\\x26\\xb8\\xb6\\x0d\\xe8\\xe8\\xa7\\xc1\\x6d\\x1e\\x16\\x65\\xb2\\x71\\x43\\x46\\x65\\xc4\\x42\\xa9\\xc6\\xa9\\x77\\xce\\x98\\x6f\\x69\\x93\\xb7\\x43\\x9a\\xf0\\x3b\\x40\\x2e\\xea\\xff\\xf1\\x45\\x6d\\x15\\x15\\x26\\xd9\\xc5\\x8f\\x51\\x5f\\xd2\\x48\\x5e\\x0c\\xbb\\x32\\x4a\\x50\\x3a\\x8d\\x49\\x13\\x44\\xcd\\xb2\\xaf\\xf4\\xc4\\x1a\\xa8\\xe2\\xed\\x66\\xe5\\x80\\x83\\xbf\\x0d\\x2f\\xbf\\x48\\x77\\xc8\\x5a\\x4b\\xcd\\x6b\\x9c\\xbb\\x82\\x12\\x42\\xc9\\x41\\x47\\xe5\\xfd\\x8b\\x7d\\xd7\\x92\\xad\\x0a\\x28\\xd4\\x9d\\x41\\x10\\x0b\\x43\\x1b\\xb4\\xd8\\xc7\\x83\\x3d\\x85\\x05\\xdd\\x9e\\x26\\x49\\xf9\\xca\\x70\\x51\\xbe\\x68\\x71\\x2e\\xf3\\x63\\x71\\x02\\x03\\x6b\\x00\\x26\\x49\\x47\\x3c\\xe2\\x59\\x67\\x7d\\x82\\xc6\\x06\\x28\\x95\\xe1\\x61\\x92\\x8b\\x75\\x2f\\x13\\xc9\\x1a\\x45\\x95\\x5e\\x80\\xf0\\x07\\xde\\x69\\x0e\\xdf\\x8a\\x0e\\x5e\\xee\\x44\\x22\\xe1\\x62\\xb9\\xd2\\xb4\\xa9\\x21\\xd3\\xa6\\x48\\x45\\x79\\x3a\\xa2\\x22\\x9e\\x9c\\x23\\x9e\\x57\\xa6\\xb1\\xa9\\x0a\\x52\\x54\\xc3\\x51\\x2f\\x99\\x34\\x53\\x15\\xac\\x7d\\x34\\x57\\xf9\\x15\\x42\\x96\\xc6\\x68\\x22\\xab\\xe1\\x84\\xd6\\x4e\\x57\\x2b\\x9c\\x38\\x49\\x29\\x58\\xe2\\x1b\\x02\\x92\\x67\\x54\\x10\\xe7\\x34\\x8b\\x2b\\x71\\x8a\\x0b\\x75\\x92\\xca\\xee\\x94\\x58\\x1a\\x94\\x8d\\x2f\\x41\\xfa\\x03\\xc6\\x1e\"},\n{{0xfb,0xd5,0x5f,0xa7,0x43,0xc3,0xa5,0x91,0x0b,0x38,0x57,0xdd,0x0b,0x6a,0xa5,0x84,0xf3,0xb2,0x38,0xde,0x05,0x6b,0x76,0xab,0x76,0x17,0xae,0xb5,0x26,0x38,0xfe,0xf6,},{0xa7,0xa1,0x63,0xc4,0x18,0x3b,0xd8,0x4b,0x75,0x6d,0xf3,0xc8,0xaf,0xdf,0xb9,0xcd,0x5b,0x24,0x23,0x52,0xd9,0x49,0x9e,0xbd,0xab,0x90,0x78,0x5c,0x3b,0xd6,0xdb,0x2d,},{0xef,0xfb,0x29,0xda,0x69,0x85,0x97,0x1c,0x20,0x2e,0x24,0x50,0x30,0x1d,0x49,0x71,0x1b,0xed,0x25,0xfa,0xd8,0x5f,0x61,0x99,0xd1,0xeb,0x1e,0x71,0x91,0x4d,0x96,0x4c,0xbe,0x18,0xe3,0x4c,0xc3,0xe3,0x28,0x72,0xcd,0xec,0x02,0x6b,0xd1,0x19,0xa4,0x1c,0x1c,0x07,0xca,0x41,0xe8,0x2a,0xcb,0xa6,0x2f,0xb0,0xa7,0xc8,0x2a,0xed,0x80,0x0c,},\"\\xbf\\x52\\x52\\xb2\\xae\\xca\\x11\\x63\\x77\\x1f\\x76\\x62\\x78\\x76\\x80\\x66\\xf2\\x19\\x71\\x35\\x7e\\xa7\\x99\\x61\\x58\\xa8\\xd6\\xe9\\x08\\xdd\\x59\\xb5\\x99\\x71\\x34\\x9f\\xa1\\x78\\x82\\xcb\\x92\\x24\\xb9\\x72\\xd0\\xff\\xab\\xe8\\x55\\x10\\xdc\\xf2\\x5a\\x9f\\x9f\\x9b\\xde\\xfa\\xd2\\xf4\\xca\\xdf\\xbb\\xda\\xcc\\x1f\\xca\\x9d\\x94\\x8c\\xb5\\x41\\x2f\\x47\\x4c\\xad\\x23\\xb5\\xb9\\x19\\x9b\\xf3\\xc7\\x37\\x06\\x41\\x33\\x9b\\x75\\x0e\\x1f\\x78\\xc2\\xad\\xb4\\x60\\xaa\\x5b\\x21\\xb1\\xfa\\x8f\\x97\\x71\\x4a\\xbb\\x4e\\xd5\\xe9\\xcb\\x51\\xd6\\xde\\x55\\x81\\x66\\x18\\xab\\xd3\\xfd\\x2b\\x28\\x6b\\xc1\\x1c\\x67\\xba\\x01\\x12\\x93\\x73\\xd4\\x35\\xb3\\xe7\\xe3\\x91\\xba\\x37\\x26\\x14\\xda\\x83\\x22\\x87\\x5e\\x46\\xa6\\x75\\xb6\\x45\\x15\\x60\\x24\\xca\\xd2\\xdd\\x13\\xf9\\xa0\\x81\\x61\\x6b\\xf1\\x31\\xa2\\x43\\x58\\x89\\x4e\\x0e\\xfa\\x1d\\x56\\x64\\x8f\\xfb\\x42\\xef\\xb5\\x40\\x31\\xda\\x7f\\x37\\xd1\\x97\\x61\\x51\\x55\\xae\\xdb\\x69\\xc4\\xe7\\x09\\xc8\\xbb\\xbe\\x7f\\xbf\\xcb\\x59\\x83\\x47\\xac\\x5d\\x0c\\x63\\x84\\x07\\x84\\x7b\\x28\\x1c\\xf1\\x16\\x43\\x30\\x97\\xf5\\x66\\x21\\x58\\x71\\x9f\\xcd\\xd3\\x7b\\xeb\\x48\\x92\\x68\\xce\\x71\\xde\\x7d\\x70\\xed\\x92\\x5f\\x74\\x3f\\xc6\\x3a\\x71\\x5f\\x7e\\xee\\x75\\x49\\xfd\\xb9\\x09\\xcc\\x45\\x4c\\x98\\x8b\\x30\\xae\\x4d\\x77\\xd6\\x2f\\x65\\xa0\\x7e\\x2c\\x8f\\x93\\x62\\x38\\x5d\\x02\\x8a\\x60\\x31\\x08\\xc9\\x45\\x87\\x2f\\x5e\\x1a\\x97\\x41\\x98\\x78\\xed\\x49\\x54\\x2e\\x28\\x8e\\xf0\\x7b\\x5c\\x90\\xf5\\xc4\\x15\\x9e\\x16\\x23\\x03\\xd0\\x80\\xf6\\xac\\x2b\\x05\\x8d\\xdc\\xac\\x60\\x74\\x6f\\x9e\\x1c\\x9e\\xc1\\xdf\\x8e\\xda\\x42\\xd6\\x27\\x38\\x58\\x6d\\x3f\\xdd\\x65\\xdf\\x55\\xf4\\x37\\x4f\\x32\\x94\\xe0\\x86\\x8d\\x41\\xef\\x0b\\xb1\\xfd\\x55\\xe0\\xcb\\xf1\\x95\\xbb\\xfc\\xfc\\xde\\x5b\\xdb\\x41\\xfa\\xd9\\xa0\\x47\\x7e\\x4c\\x90\\xca\\x27\\xfa\\x8c\\xf5\\x03\\x36\\x2a\\x33\\xfd\\xec\\xa5\\xa4\\xf0\\xff\\xea\\x26\\xe8\\xd7\\xe1\\x34\\xfa\\xd3\\xb1\\xec\\x3d\\x05\\x60\\x55\\xbb\\xa5\\xe6\\x5d\\x81\\x15\\x3e\\xe8\\x31\\x87\\x3b\\x93\\x8d\\xf7\\xd2\\xc8\\x3c\\x2a\\x52\\xb3\\xc2\\x21\\x82\\x7f\\x96\\x1b\\xd0\\x08\\x36\\x22\\x32\\xd8\\x82\\xa0\\x41\\x2a\\x04\\x7a\\xfd\\xfb\\x85\\x97\\xc8\\x65\\xa2\\xaa\\x2c\\x2c\\xf5\\x18\\x99\\x34\\xa8\\x3e\\xe6\\xb7\\x52\\xa6\\x26\\x94\\x1e\\xdc\\xe0\\xc2\\x0b\\x6f\\x7a\\x69\\xf1\\xcf\\x12\\xf9\\xa3\\x31\\xcd\\xfa\\x9e\\xda\\x24\\xc8\\xde\\xfa\\x76\\x9c\\xcc\\xe2\\xef\\x74\\x6c\\x30\\x7d\\x8b\\xb0\\x48\\x91\\xfc\\xef\\xd4\\x9a\\xf3\\xe6\\xf9\\x69\\x91\\xa7\\xa2\\x0f\\x27\\xb6\\xc0\\xaf\\x12\\x18\\xbe\\x31\\x79\\x1d\\x1d\\x02\\x93\\xe0\\x81\\xb9\\x0a\\xf3\\xb9\\x2e\\xcb\\x17\\x5e\\xc8\\xc7\\x89\\xf7\\xa8\\x64\\x2e\\x04\\x1e\\xc3\\xa6\\x1a\\xae\\xfe\\xf6\\x2a\\x80\\x7d\\x1a\\x50\\x54\\xad\\xf8\\x32\\x3b\\xed\\x94\\x22\\x41\\x62\\x37\\x32\\xa2\\x05\\x1d\\xc0\\x1f\\x9a\\x20\\xa2\\x9a\\xa4\\x8b\\x3f\\xdf\\x26\\x5d\\x0b\\xa6\\xc1\\x38\\xfb\\x57\\x93\\xe2\\x87\\x50\\x02\\xe7\\xde\\x3f\\x5c\\x3f\\xf7\\xe8\\x3a\\xd2\\x7d\\x11\\x1c\\x84\\x8b\\x7e\\x6e\\x2e\\x5a\\xd5\\xf2\\x8e\\xb7\\xc3\\x63\\xf9\\x5f\\x96\\x0c\\xbc\\x42\\x13\\x36\\xce\\x98\\x5f\\x94\\x6b\\x05\\x15\\xb1\\xbd\\xd3\\xa8\\x32\\xc3\\xfe\\x90\\x3f\\x7b\\x44\\xe2\\x0c\\x92\\xea\\x80\\x82\\x6f\\xbf\\x97\\xe2\\xa4\\xfc\\xaf\\x2d\\xb1\\xa0\\x86\\x98\\xdd\\x62\\xed\\xd0\\xa8\\x45\\x89\\xd7\\x46\\x2c\\x44\\x7b\\x4a\\x89\\x6f\\xe0\\x08\\x60\\x04\\x24\\x96\\xbd\\x51\\xb1\\x92\\x5c\\xb7\\x9c\\xc3\\xb8\\x29\\x01\\x6a\\x4c\\x7e\\x62\\x79\\x0f\\x80\\x58\\xc5\\x46\\xf2\\x14\\x5a\\xaa\\xef\\x4d\\x4b\\x1e\\x27\\x3f\\xf6\\x13\\x00\\xf8\\x00\\x8e\\x94\\x6b\\x62\\x2f\\x60\\xe5\\x05\\xf5\\xf6\\x29\\x0d\\x51\\xeb\\x99\\x7d\\x20\\xfc\\x3f\\xbb\\x3e\\x99\\xed\\xd6\\x8f\\xf5\\xcc\\xe9\\xe8\\xc2\\x83\\x88\\x1c\\x36\\x4f\\xf2\\x15\\xcb\\x50\\x04\\x5e\\x60\\xf4\\xa7\\xee\\x45\\xb6\\xc9\\xd8\\x64\\x47\\xf3\\x81\\x41\\xd3\\x42\\xdb\\xc5\\x30\\x8f\\x8c\\x66\\xef\\xc4\\x7f\\x7c\\x45\\xf6\\xd2\\x5e\\x65\\x64\\x30\\x9a\\x86\\x2d\\xb9\\x0f\\x4d\\xf3\\x31\\x78\\x7e\\xcd\\xd8\\x9d\\x3a\\xaa\\x46\\x05\\x3e\\x29\\xf1\\x02\\x62\\x4d\\xdf\\xe8\\x0e\\x8a\\x3f\\x99\\x28\\x7c\\xec\\x19\\xfa\\x83\\xe4\\x4d\\x55\\x7c\\x04\\x41\"},\n{{0x5d,0x66,0xce,0xb7,0xc6,0xe5,0x8c,0xac,0x91,0xe2,0x88,0x27,0x91,0x70,0xe8,0x18,0xe7,0x87,0x18,0x0c,0x6b,0x42,0xdf,0xa1,0x68,0x78,0x7d,0xd0,0x7f,0x80,0x9f,0xa4,},{0xef,0xc9,0xb3,0x5d,0xb8,0x1f,0x34,0x61,0x98,0xa7,0xac,0xc6,0x9f,0x65,0xfd,0xfb,0xf4,0xc2,0x2e,0x68,0xdd,0x76,0x12,0xe3,0xb8,0xec,0x68,0xd3,0x78,0x55,0x3b,0x8d,},{0x6e,0xf2,0x64,0xab,0xf8,0xb0,0xe5,0xc2,0xd7,0x93,0xb2,0xc7,0x52,0x79,0x61,0x4a,0x39,0xc7,0x75,0xeb,0x2b,0xcc,0x08,0x91,0x06,0x7a,0xbc,0x61,0xf6,0xd6,0x44,0xa6,0x9f,0xf8,0xf8,0x14,0xa3,0x05,0x22,0xcc,0xa9,0x05,0x36,0xf0,0x12,0xc6,0x28,0x3a,0x76,0xc3,0x2b,0x89,0xee,0xe1,0xbd,0x9a,0x43,0x36,0xf4,0xfd,0xda,0xc8,0xdc,0x0b,},\"\\x94\\xd7\\x2f\\x6d\\xec\\x4f\\x7c\\x92\\x06\\xb4\\x15\\x10\\xce\\x71\\xa0\\x29\\x55\\x60\\x4f\\x3c\\x5d\\xe8\\xe4\\x47\\xd5\\x87\\x18\\x65\\xa7\\x58\\x98\\xa4\\xd2\\x07\\xa2\\x6c\\xf3\\x3d\\x10\\xca\\xf0\\x5a\\x0b\\x6e\\xd0\\xd3\\x89\\xfe\\xe9\\xed\\x49\\x27\\x50\\x98\\xa8\\x8e\\x1c\\x0d\\x83\\x04\\xe8\\x1b\\x40\\x74\\x21\\x4c\\x7a\\x5c\\xe1\\x57\\xeb\\x26\\x17\\xef\\x04\\xe1\\x32\\x4b\\xa9\\x42\\x12\\x9f\\xaf\\x32\\xc3\\x1c\\xb4\\xaa\\xe4\\xa5\\x91\\x6c\\x75\\x08\\x08\\x72\\x68\\x56\\xf7\\x18\\x0e\\x57\\x97\\xed\\xe4\\x43\\x62\\xd7\\x47\\xd7\\x0c\\xec\\x15\\x9d\\x3b\\x6a\\xce\\xc6\\x3a\\x51\\x4c\\x7e\\xf3\\x1b\\x2e\\xcd\\x16\\xdb\\x7f\\xe6\\x8e\\xa9\\xc5\\xea\\xd9\\xd8\\x70\\x92\\x18\\x00\\x34\\x8f\\x69\\x54\\x12\\xf3\\x09\\x3e\\x61\\x98\\x5a\\x31\\xea\\xdb\\x79\\xb5\\x9d\\x91\\xdd\\x9a\\x37\\xf8\\xd4\\xef\\x7a\\x5d\\xdf\\x22\\x3d\\x4b\\x24\\x77\\x4c\\x2e\\x44\\xe3\\xf2\\x71\\xff\\xb8\\x50\\x0d\\x59\\x53\\x81\\xb3\\xdf\\x2e\\x8e\\x6b\\x79\\xee\\x65\\x53\\x5a\\x51\\x9a\\x43\\xea\\xa5\\xe5\\x2b\\x25\\x6c\\x26\\x43\\x30\\x5e\\x31\\x70\\xcb\\xe5\\x76\\x06\\xa0\\x54\\x5f\\x85\\x86\\x56\\x5c\\xfb\\x75\\xbf\\x5e\\x95\\x64\\xc6\\x2a\\xf0\\x5f\\x15\\xee\\x6e\\x62\\xaf\\xee\\xf8\\xc2\\xc7\\xa9\\xda\\xe2\\x35\\xc9\\xed\\xd1\\xd7\\xc2\\x5c\\xf4\\x9a\\xdc\\x03\\x3e\\xe7\\xb5\\x83\\xf5\\x18\\xbc\\x16\\x8e\\xa4\\x88\\x36\\xb5\\x0f\\xfe\\xdd\\x20\\x32\\xb3\\xf6\\x30\\xcc\\x56\\xda\\xad\\xd5\\x13\\xeb\\xda\\x86\\x48\\x23\\x61\\x0f\\xc6\\x7a\\x72\\xb9\\xa7\\xd8\\x11\\x71\\x05\\xc1\\xc7\\x1d\\x85\\xa9\\x6b\\x1d\\x27\\xa4\\x41\\xfa\\x1e\\x7c\\x6c\\xf8\\x02\\x33\\xa4\\x9f\\xe0\\xe7\\x6a\\x40\\x27\\x8d\\x06\\xe3\\x43\\x47\\xd8\\x7b\\xe7\\x7b\\x98\\xde\\xd5\\xe2\\xa3\\xea\\x1a\\xfb\\x13\\xbe\\xe1\\xe6\\xcd\\x6c\\xa6\\x3b\\xe5\\x4f\\xcf\\x88\\xa2\\x0c\\xcb\\x7a\\x9f\\xc3\\x24\\xbf\\x61\\x43\\x20\\x1b\\x44\\x48\\x3b\\xcc\\x96\\x40\\x33\\xda\\xb7\\x1c\\xf8\\xf2\\xa5\\x91\\xfc\\x05\\x0d\\x57\\x24\\xe9\\x5a\\xa5\\x0d\\x32\\x89\\x6e\\xec\\x0f\\x3b\\x34\\x31\\x1d\\x2a\\x99\\x34\\xe9\\xf8\\x52\\x97\\x7e\\x25\\x3f\\x15\\x30\\x4c\\xae\\x24\\x16\\xc2\\xc4\\xfc\\xd8\\xf1\\xfe\\xcc\\x3f\\x1f\\x64\\xbb\\x79\\x75\\x99\\x29\\xab\\xb0\\xe8\\xe8\\xf5\\xf7\\x29\\x3d\\x69\\x1a\\xf2\\x2a\\xbd\\x3b\\x2a\\x67\\x70\\xb0\\xcf\\x14\\x46\\x08\\xf2\\xd6\\x2c\\xc7\\xe5\\x2b\\xfe\\x33\\x3b\\x2e\\xd2\\xde\\x39\\xb9\\x9a\\xfd\\x37\\xe3\\xac\\xf0\\x7e\\xda\\x37\\xdd\\xf0\\xdf\\x02\\x9b\\xff\\x2e\\xc2\\x25\\x44\\xb6\\x0b\\xd7\\xdb\\x23\\x8d\\xf1\\x97\\x5f\\xfa\\x00\\x75\\xa8\\x2a\\xbd\\x8d\\x6b\\x05\\xb2\\x67\\x18\\x0b\\x87\\x0e\\x21\\xab\\xf3\\x69\\x81\\xae\\x77\\x68\\xde\\x53\\x99\\x3b\\x30\\x4f\\x1c\\x54\\x53\\x87\\x2f\\xdf\\xa8\\xed\\xad\\x45\\xf8\\x00\\x1a\\xa0\\xe7\\x34\\x2b\\x3b\\x58\\xec\\x0f\\x38\\x9d\\xcb\\xc2\\x71\\xfb\\x0f\\x90\\x00\\x62\\x87\\x57\\xab\\xba\\x58\\xc0\\x57\\xe1\\xa0\\x89\\x9f\\x6f\\xaf\\x15\\xf3\\x74\\x0f\\x31\\x43\\xf5\\xc0\\xb7\\xa9\\x15\\x96\\x80\\xde\\x8c\\x55\\x72\\x66\\x44\\x1b\\x3b\\x01\\xca\\xac\\x12\\xec\\x27\\x8f\\x5a\\x10\\x25\\xdf\\x53\\xed\\xb6\\x13\\x4c\\x96\\x66\\x3a\\x96\\x66\\xae\\x3b\\xaa\\x90\\xfc\\x83\\x51\\x11\\xef\\x05\\x1b\\xd9\\x12\\xf6\\x79\\x67\\x44\\x91\\x13\\xb6\\xa8\\x5f\\x71\\xdf\\x8c\\x60\\x37\\x72\\x4e\\xb8\\xfc\\x7d\\x83\\x19\\xbc\\x03\\x85\\xbe\\x9b\\x0e\\x99\\xe9\\x5f\\x9a\\xed\\xca\\xe8\\xd4\\x5a\\x51\\x44\\x76\\xf0\\x5b\\xcd\\x72\\x35\\xc0\\x13\\xeb\\xc3\\xae\\xa9\\x12\\x3c\\x67\\xaa\\x6f\\x3b\\x79\\xc8\\x5e\\xa5\\xdb\\x15\\x9e\\xef\\xad\\xfb\\x75\\xa5\\x0a\\xc6\\xb9\\x5b\\x49\\x6b\\x55\\x72\\x58\\x1a\\x76\\x11\\x2f\\xf6\\xdb\\x26\\x3f\\xc1\\x4c\\x58\\x18\\xaa\\xd5\\xbc\\xa3\\xb2\\xcb\\x3a\\xc8\\x11\\x6d\\x42\\x94\\x82\\x78\\x1e\\x06\\xf6\\x1e\\x75\\x63\\xe6\\x50\\x5e\\x51\\xc8\\xff\\x99\\x8b\\xf8\\x4a\\xed\\xb5\\x20\\x2e\\x2f\\x9f\\xf4\\xc2\\x68\\x98\\x20\\x29\\x6c\\xc6\\x96\\x03\\x09\\x1b\\x8b\\x81\\x8f\\xbe\\xb2\\xaf\\x5f\\x4c\\x57\\x06\\x0d\\x98\\xc1\\xa9\\x04\\x84\\x3a\\x70\\xbf\\x97\\x5b\\x3c\\x3c\\xa6\\x03\\x1a\\x4c\\xad\\x5b\\x4b\\xbf\\xba\\x7e\\x9b\\x47\\x49\\x1a\\xb7\\x40\\xd9\\xeb\\xe4\\x1d\\x76\\x88\\x10\\xcb\\x8c\\xc5\\x1a\\x93\\x7f\\x7e\\x3b\\x22\\xe3\\xcf\\x07\\xce\\xae\\x0c\\xe2\\x08\\x31\\x49\\x5a\\xfc\\xdd\\x8c\\x1a\\x98\"},\n{{0x62,0xed,0x86,0x82,0xbd,0x3a,0xb3,0x96,0x6e,0xba,0x3b,0xff,0xb7,0x75,0xa3,0x18,0xa0,0x3d,0x99,0x93,0x19,0x79,0xe9,0x9f,0xeb,0x2d,0xdb,0xd6,0x94,0x55,0xa0,0xef,},{0xd3,0x2a,0xda,0x17,0x8b,0x3e,0xc7,0x70,0x0c,0x47,0xdd,0x6d,0x36,0x53,0x22,0x03,0x3f,0xe4,0x31,0xc3,0x02,0xb4,0x6f,0x8d,0x58,0x79,0x8e,0xd8,0x33,0x71,0x56,0x6b,},{0x3d,0xa8,0xd1,0x4d,0xc4,0xe7,0x1f,0xe6,0xc3,0x2e,0xde,0x46,0x37,0x88,0xe4,0x1b,0x82,0x6b,0x4e,0x21,0x60,0xba,0x10,0xc9,0x5f,0x1c,0x8a,0x27,0x49,0xaa,0xd8,0xf1,0x2e,0x98,0xae,0x24,0x68,0x30,0x3b,0xaf,0x69,0x08,0xbd,0xb3,0x5e,0xf3,0x8a,0x5e,0xcd,0x77,0x74,0x1e,0x72,0xee,0x3a,0x42,0x7f,0xd9,0x04,0xda,0xe6,0x6f,0xcf,0x03,},\"\\x9e\\xb1\\x3b\\xc7\\xfa\\xcf\\x51\\xa1\\x80\\x54\\x1e\\xc1\\xdc\\x5f\\x5a\\xcb\\x14\\x8c\\x8d\\x5e\\xad\\xcd\\x2c\\x4e\\xf0\\x68\\xbc\\xdd\\x11\\xb3\\x49\\x25\\xea\\xbf\\xaf\\xab\\xfe\\x82\\xa2\\x84\\xbc\\xba\\xee\\x13\\x81\\x15\\x2a\\xf8\\xe5\\xe0\\x9f\\x03\\x7c\\xf1\\xbb\\x64\\x84\\xac\\x18\\xe3\\x73\\x59\\xbf\\xaa\\x4c\\x87\\xaa\\x07\\xd3\\xd1\\x4e\\xd0\\x89\\xb0\\x53\\x91\\x0d\\x1f\\xa4\\x73\\xf7\\xbc\\xe1\\x43\\xe2\\xa5\\x9c\\x4d\\xaf\\x99\\xb6\\xc6\\xe4\\xe9\\x29\\x1d\\x97\\xc8\\x64\\x71\\x2a\\xf3\\xea\\xba\\x53\\xce\\x25\\x17\\xa4\\xf7\\x5c\\xd7\\xec\\xf2\\x78\\xf3\\x4e\\x22\\xb7\\xdf\\xfd\\x08\\x8f\\xa5\\xec\\xad\\xc0\\xdd\\x22\\x13\\x5e\\x42\\xa5\\x36\\xc6\\x84\\xf2\\x19\\x5d\\x31\\x5f\\x69\\x24\\x57\\x1e\\x46\\x3f\\x5c\\xfc\\x11\\xb9\\xf9\\xd0\\x5a\\x7e\\xa1\\x1b\\x98\\xa1\\x69\\xa1\\xe3\\x93\\x60\\x97\\x3c\\x50\\xad\\x45\\xc7\\x49\\x1b\\x57\\x13\\x8e\\xc0\\x50\\xf4\\x3c\\xbd\\x5d\\x17\\xeb\\x3f\\xe0\\x01\\x3e\\x3d\\x28\\xd5\\x26\\x05\\x4e\\x07\\x63\\x31\\x52\\x24\\x6f\\x16\\x55\\x4f\\x30\\x54\\x74\\x9e\\xea\\x68\\x7b\\x9c\\x37\\x1b\\x40\\x9c\\xd3\\xec\\xef\\xb1\\x11\\xa1\\xd6\\x00\\x40\\x73\\x44\\xe6\\xd6\\xec\\x38\\xc6\\x0f\\x6e\\x54\\x5a\\x92\\x38\\x2e\\x46\\xc4\\xd1\\x13\\x12\\x5d\\xbe\\x5b\\x98\\x26\\xe1\\x27\\xf1\\x01\\x81\\xa3\\x5a\\xcf\\xff\\x28\\xab\\x37\\x64\\xca\\x7f\\x23\\x8f\\xf4\\x79\\xfd\\xbc\\x45\\xb7\\xa2\\xad\\x0f\\xf5\\x38\\xc8\\xac\\xd0\\x01\\x8d\\x44\\x70\\xfe\\xbc\\xc6\\xa3\\x07\\x65\\x1c\\xb5\\x83\\x2f\\x32\\x6b\\x19\\x24\\x1b\\xe9\\x86\\x7e\\x4e\\xca\\x6a\\xe3\\x6f\\x0e\\x2d\\x83\\xfd\\x77\\xb9\\x72\\x02\\xb3\\x64\\x71\\x6e\\x36\\xd1\\x89\\x5a\\x36\\x85\\x3e\\x7e\\x76\\xe8\\x8f\\x62\\xdb\\xbf\\x77\\x26\\xc2\\x18\\x05\\x69\\xc6\\x66\\x73\\x83\\x7a\\xd7\\x2f\\xf9\\x36\\xcf\\x0e\\x2f\\xdb\\x9e\\xc6\\xaf\\xcc\\x79\\xf8\\x82\\x9e\\x15\\x7f\\x95\\x22\\x88\\xf4\\xe0\\x0d\\x04\\x10\\xa7\\x22\\x53\\xbf\\x60\\x5e\\xdd\\xce\\xb0\\x14\\x40\\xde\\xe5\\xdd\\x32\\xb5\\xa8\\x03\\x43\\x9f\\x03\\x8c\\x06\\xaf\\x1c\\x90\\xb2\\x7b\\x5f\\xe9\\x84\\x3c\\x27\\xae\\x76\\x60\\x9c\\xbf\\x83\\x28\\x35\\xc0\\xe3\\xc4\\xbb\\x59\\x97\\x6c\\xce\\xde\\x44\\x87\\x86\\xd9\\x1e\\x43\\x8e\\x07\\x75\\xc0\\x6a\\x92\\xd0\\xf0\\xb8\\xdc\\x0e\\xf6\\x82\\x60\\xf7\\xdd\\x9e\\x68\\x71\\xc4\\xd0\\xc0\\xc0\\x94\\x63\\x85\\x26\\x15\\x21\\x85\\x16\\xf4\\xa6\\xde\\xbf\\xdb\\x46\\x27\\x3b\\x28\\x33\\x82\\xcd\\x9c\\xa7\\x44\\xab\\xf9\\xfd\\x43\\x91\\x94\\xb8\\xcf\\x1b\\xdb\\xb3\\x17\\x5c\\xa9\\xc5\\x7a\\x1c\\x37\\x3c\\x41\\xfc\\xe9\\x2b\\xd5\\xfc\\x01\\x2b\\x19\\xa0\\x69\\x8a\\xef\\x37\\xba\\xf8\\x06\\xae\\x09\\xad\\xd8\\xcb\\x97\\x2a\\x9e\\xf9\\xa7\\xa5\\xa9\\xb1\\xfd\\x9a\\x41\\xd8\\x54\\xc3\\x0c\\xca\\x13\\x96\\x14\\x0e\\x20\\xc2\\xb9\\x86\\x54\\xfe\\x6e\\x51\\x1b\\x62\\x6a\\x43\\x91\\x5b\\x22\\xfb\\x2d\\xad\\x74\\x7b\\xa7\\xfe\\x74\\x60\\xd8\\xce\\xbb\\x20\\x06\\xfe\\xa1\\x9b\\x32\\x84\\xb0\\x9c\\x06\\xa6\\xf5\\x2f\\x17\\x9a\\x32\\xbe\\xb5\\x63\\x57\\xb9\\x29\\xa6\\x59\\xf0\\xfe\\x6a\\x26\\xb6\\x97\\x03\\x3d\\xef\\x58\\xba\\x60\\x3f\\x43\\x0f\\x74\\xaa\\x35\\x07\\x09\\x81\\xdb\\x74\\xcc\\xf1\\x91\\x90\\xa1\\xfb\\x05\\x14\\x4e\\xc0\\xa0\\x9a\\x51\\xe5\\x47\\x65\\x06\\x97\\x30\\xb0\\x9a\\x7a\\x23\\x31\\xff\\xb3\\xde\\x2a\\x7e\\x02\\xc5\\xe1\\x84\\xda\\x40\\x13\\xdf\\xe9\\x37\\xc3\\x71\\x11\\x75\\x24\\xf7\\xb2\\x10\\xba\\x60\\xe2\\x69\\x2d\\xcd\\xce\\xf3\\x6a\\xb2\\x27\\xb4\\xc4\\xf0\\x2a\\x9f\\x48\\x89\\x72\\xb8\\x47\\xf0\\xd6\\xb5\\x9d\\x02\\xee\\x54\\xfe\\xde\\x88\\x21\\xdb\\x6c\\xf7\\x31\\xcc\\x8a\\xc8\\x95\\x35\\x0a\\xc5\\xcd\\x4d\\x6b\\xaa\\x3a\\xd0\\x36\\xf0\\x6f\\x20\\xd1\\x0a\\x14\\x0c\\x4a\\xd3\\xd1\\x0c\\xa9\\x85\\x53\\x2e\\x31\\x60\\x46\\x27\\x73\\x38\\x5a\\x2e\\xb5\\xe4\\x64\\xd5\\x28\\xe1\\xe5\\x9c\\x29\\xf6\\x6b\\x3d\\xe5\\x9e\\x9e\\xa2\\x8a\\xf3\\xf9\\x7b\\xfc\\x55\\x89\\x03\\x57\\x52\\xa5\\xa5\\x52\\x3d\\xec\\xd2\\xdf\\xf0\\x1f\\xc0\\x0f\\xf3\\x1b\\x30\\x15\\x2f\\xf5\\xda\\xfa\\x33\\x1c\\x6a\\xb1\\x58\\x73\\xaf\\x41\\xaa\\x96\\x0a\\xac\\xe7\\xd2\\xcb\\x4f\\x95\\xc2\\x3d\\xf4\\x4b\\x9e\\x6c\\x6e\\x2f\\x86\\x78\\x8a\\x87\\x2f\\xd3\\xa5\\xcb\\xe4\\xac\\xc9\\x58\\x10\\xda\\xa0\\x9d\\xcc\\x1d\\xf9\\x33\\x46\\x5e\\xf0\\x40\\xc5\\x3d\\x9d\\x95\\x9f\\x9d\\xad\"},\n{{0x4e,0x57,0xf0,0x31,0x1f,0xff,0x0e,0x5d,0x53,0x88,0x49,0xb1,0x21,0x6f,0x69,0x5b,0x1a,0x52,0x77,0x94,0x17,0x08,0x20,0x4d,0xb2,0xf0,0xc1,0x5b,0x3c,0x73,0xc8,0x2a,},{0xe3,0x37,0x1f,0xe2,0x36,0xad,0x2f,0x6f,0x42,0xf9,0xe1,0xfa,0x4e,0x1e,0xda,0x2c,0x3e,0x29,0xc3,0x6c,0x8a,0xd2,0x21,0x8a,0x3c,0x03,0x79,0x82,0xf0,0xb5,0x79,0xec,},{0x4f,0xdc,0x7b,0x6e,0x28,0x27,0xf6,0x4b,0xa3,0xc0,0x33,0xc7,0xfb,0x6d,0x1b,0x35,0xdd,0x68,0x0f,0x53,0x29,0x99,0xa0,0xd7,0x7a,0xeb,0x27,0x6c,0x31,0xbd,0x9e,0x39,0xc6,0x70,0x97,0x8b,0xe4,0x72,0x43,0xc1,0x13,0x22,0x3a,0x57,0xaa,0x10,0x23,0x31,0x50,0x67,0x8b,0x40,0xdb,0x78,0x59,0x1c,0x04,0xd0,0x8d,0xf5,0x7a,0x70,0xa2,0x09,},\"\\x05\\x2a\\x1f\\x41\\xeb\\xfd\\x4b\\xf6\\x5e\\xfb\\x0e\\xc8\\xe7\\x4d\\xd7\\xb3\\x06\\x5e\\x9c\\x48\\x2c\\x49\\xb9\\x92\\x62\\xe6\\xdf\\xa8\\x40\\x7d\\x9e\\x31\\xed\\x34\\xd2\\x29\\xba\\x41\\xfc\\x49\\xa9\\x4a\\x13\\x09\\xf9\\x90\\xa9\\x9c\\xb9\\x90\\x2f\\xb8\\x4f\\x4e\\xde\\x91\\xbb\\x64\\x71\\x45\\x64\\xa9\\x13\\xd5\\x74\\xd4\\xa3\\xc2\\x86\\xf0\\xa1\\x92\\xa7\\x8c\\xe2\\xd5\\x5a\\xae\\x5c\\x9f\\xb0\\x57\\xff\\x36\\x12\\x00\\x18\\xb2\\xa8\\xb5\\x4d\\x98\\x08\\x55\\x37\\xea\\x64\\xae\\xa9\\x99\\xd5\\x32\\x1c\\x78\\x80\\xb3\\x6a\\xb4\\x30\\x18\\xea\\x2c\\x92\\xa5\\xe6\\x83\\x50\\xd3\\xde\\x85\\x26\\xe2\\xc8\\xbc\\x91\\x41\\xf4\\x34\\x9a\\x18\\xa3\\x4f\\x21\\xde\\x0a\\xbb\\xf2\\x93\\x09\\x87\\x56\\x7f\\x0a\\xaf\\x8e\\xb1\\x91\\x45\\x58\\x0d\\x71\\x30\\x6c\\xe8\\xa6\\x9e\\x79\\xf8\\xee\\xa2\\x6c\\xfa\\x0b\\x8b\\xeb\\x49\\xcc\\x5a\\xa2\\xbc\\x77\\xb7\\x97\\xd4\\xf8\\xd5\\x03\\x26\\xff\\xb9\\x37\\x39\\x9e\\x94\\xfd\\xec\\x85\\xe1\\x92\\xf1\\x27\\x2a\\x80\\xe9\\xa0\\xeb\\xba\\xf5\\xd0\\x1f\\x1b\\x97\\x06\\x08\\x02\\xbd\\x4a\\xf3\\x4c\\x0f\\x7d\\x7e\\x98\\x54\\x3f\\x9d\\x66\\xd6\\x0e\\x0e\\x6b\\xc0\\xbf\\x9c\\x99\\x0b\\xe3\\x1e\\xea\\x19\\x78\\xff\\xd1\\x67\\x33\\xa8\\xab\\xe4\\x95\\x58\\xb3\\xad\\xd0\\xdc\\xe6\\xde\\xfd\\x64\\xdc\\x04\\x3f\\x15\\x19\\xb1\\xe9\\xbe\\x66\\xe0\\x6e\\x41\\xec\\xab\\x16\\x8c\\x83\\x39\\xa8\\x5e\\x0b\\x91\\x38\\x18\\x64\\x4e\\xa7\\xc5\\x33\\x44\\x68\\xfd\\x71\\x96\\xa0\\x1e\\x1d\\x4c\\xe8\\xdd\\x1e\\x7e\\xe3\\x13\\xdd\\x53\\x50\\xb8\\xdc\\xe4\\xf5\\xd7\\xa6\\xac\\x09\\x85\\x7c\\x4d\\x3d\\x0f\\x10\\xa3\\xd9\\x06\\x26\\x09\\x75\\x45\\x92\\xad\\x10\\x77\\xb2\\xe2\\x09\\x6f\\xc9\\xe5\\xb1\\x97\\x8c\\x98\\xb5\\x66\\x0d\\xdf\\x51\\xb4\\x6e\\xde\\x9f\\x9d\\xcd\\x41\\xb2\\xef\\x44\\xe7\\x9f\\x6d\\xaf\\xf7\\xd3\\x62\\x68\\x70\\xe2\\x24\\x3c\\xaf\\xb2\\xf4\\x36\\x79\\x39\\x10\\x9e\\xd9\\xc0\\x14\\x84\\xb7\\x9e\\xaa\\x30\\xa1\\x89\\x1e\\xa1\\x8f\\x98\\x4e\\x16\\x1d\\xcd\\xd1\\xbd\\xa3\\x71\\x34\\xbf\\x67\\x35\\xd2\\xb2\\x14\\x9b\\x48\\x98\\xda\\xcb\\xfd\\xa6\\x1e\\x60\\x02\\xd7\\x2a\\x6f\\xc5\\xd2\\x1f\\x10\\x98\\x21\\x32\\x31\\x13\\x2d\\x56\\xdf\\x68\\xd6\\xa9\\xbf\\xdf\\x4e\\xdd\\xc0\\x52\\x4d\\xb8\\xfd\\x8f\\x24\\x88\\x52\\x04\\x9a\\x68\\x25\\xa5\\xed\\xd2\\x36\\x0c\\x00\\x9a\\xf2\\x4f\\x0a\\x94\\xc5\\x07\\x9d\\xdf\\x6f\\xe7\\x96\\x94\\x5f\\xf9\\x84\\xaa\\xc3\\x64\\x11\\xce\\x80\\xd9\\x87\\xc6\\xed\\x67\\xb6\\xb0\\xdd\\xb6\\xd4\\x17\\xf6\\xe8\\x09\\x99\\x1e\\x72\\x9d\\x14\\x7d\\xd0\\xd2\\x1a\\x09\\x32\\x41\\x36\\x3c\\xf4\\xef\\x3b\\x8e\\x3b\\xa0\\x2d\\x48\\x66\\x33\\xb6\\xb2\\x17\\xf5\\x49\\x3e\\x2e\\x43\\x2b\\x8c\\x2e\\x27\\xd0\\x0c\\x5b\\x56\\xc9\\xb6\\x5f\\x9a\\xed\\x49\\xce\\x93\\xd7\\x7e\\x7d\\x0b\\xf5\\xf9\\x2f\\x92\\xf5\\xbb\\x4b\\x59\\x5d\\x66\\xf8\\x87\\xa4\\x88\\x01\\x33\\xf9\\x70\\x46\\x3a\\xb8\\xb7\\xf3\\xd8\\xc7\\x94\\xc0\\x40\\x6e\\x88\\xe3\\xea\\xb9\\xae\\x65\\xf1\\xa1\\x85\\xd6\\xe3\\x9e\\x2d\\xd6\\xab\\xb8\\xa9\\x3d\\x2a\\xc4\\xb9\\x20\\x83\\x98\\xda\\xb8\\x9d\\xbc\\x07\\xa4\\x1a\\x50\\x26\\x40\\x26\\x41\\x2d\\xa0\\x22\\xb5\\x8f\\x48\\x9d\\x4d\\xba\\x31\\xfb\\x88\\x2f\\xec\\xb1\\xff\\x8c\\xa1\\x82\\x0d\\xda\\x18\\x65\\xaf\\x15\\x51\\xe4\\x6c\\xd6\\x18\\xb4\\x4c\\x4e\\x6e\\xb3\\x03\\x7a\\x93\\x33\\xfd\\xcc\\xef\\x4b\\x89\\x51\\x89\\xe4\\x39\\x0e\\x93\\x14\\x5d\\x26\\x4c\\xa5\\xf4\\x52\\x02\\xa3\\xeb\\x28\\x53\\x59\\x3f\\xee\\xd6\\xc6\\x6d\\xbb\\x28\\x8f\\xf3\\xa3\\xc0\\xfa\\x83\\x2b\\x2a\\xa7\\xe5\\x29\\xb5\\x56\\x88\\x97\\xb3\\x14\\x94\\x02\\xa9\\x07\\xe7\\x41\\xe1\\x01\\x1c\\xe0\\x73\\x1c\\x91\\x5f\\x91\\x44\\x6a\\xa0\\xd5\\xca\\xf0\\x59\\x5f\\x18\\x16\\x43\\x4f\\xa4\\x57\\x6d\\xb3\\xbc\\x31\\xe1\\x0c\\xc2\\xaf\\x33\\xf6\\x13\\xf0\\x3c\\xa7\\xb9\\x49\\x1a\\x0a\\x34\\x05\\x25\\x27\\x1a\\xb5\\x37\\xf6\\x2a\\x11\\xa8\\x4d\\xa0\\x1c\\x7f\\x55\\x81\\xad\\x57\\x38\\xc3\\x72\\xb5\\x33\\x5b\\xab\\x9b\\x2b\\x9d\\xc2\\xfe\\x91\\xe9\\x33\\x30\\x4d\\x94\\x01\\xba\\x8e\\x1c\\xe8\\xdc\\x55\\xc4\\xfb\\x46\\x6b\\x3a\\x8e\\xd7\\xf5\\x3a\\x12\\x2b\\x83\\x81\\xd8\\xf2\\x90\\x47\\xd7\\x26\\x4d\\x06\\xfb\\x51\\xec\\x3e\\x70\\x07\\x1f\\x27\\x36\\xa4\\xe7\\xe1\\x53\\x7a\\x52\\xfa\\x25\\x6a\\x04\\xee\\x86\\xfa\\xd2\\x7a\\xd2\\xd2\\x8a\\x9b\\x36\\x29\"},\n{{0x39,0xf0,0x55,0x6b,0x1c,0x5d,0xca,0xb3,0x87,0x10,0x41,0x81,0xbb,0x30,0x4d,0xe0,0xcf,0x81,0x59,0x20,0xb9,0x72,0xe8,0x71,0xd5,0xf0,0xfb,0x41,0x6d,0x8e,0x61,0x6a,},{0xd8,0x5f,0xb7,0x6e,0x78,0xc3,0xd5,0xbb,0x7c,0xa6,0xb0,0x5b,0x31,0x01,0x91,0x82,0x1a,0x4a,0x7d,0x2d,0x9b,0xdf,0x02,0x29,0x2c,0xc7,0xae,0xa5,0x64,0x2e,0x48,0x19,},{0x01,0x66,0xaf,0xed,0x5a,0x8f,0x7c,0x3f,0x7a,0xd6,0xf3,0xfd,0xd2,0x93,0x8e,0xff,0x00,0x89,0x8e,0xab,0x81,0x5c,0x54,0x55,0xac,0x90,0xfb,0x51,0xf6,0xe1,0x85,0x4f,0x0c,0x07,0x53,0x19,0x4b,0x76,0x29,0x59,0x4c,0xc1,0x27,0x1b,0x00,0x34,0x31,0x22,0x1c,0x57,0x4b,0x0c,0x0d,0x19,0x08,0x2f,0xee,0xda,0x51,0xb0,0x84,0xae,0x5e,0x03,},\"\\xa8\\xd0\\x34\\xe1\\x70\\xfc\\x22\\xb5\\x7a\\x44\\xaa\\x62\\x69\\xed\\x1f\\x01\\xcb\\xa8\\x01\\xf3\\x98\\xdf\\x1a\\xdf\\xe7\\xdf\\x04\\x4d\\x5f\\xa4\\x68\\xbb\\xfa\\x8a\\xf4\\x74\\x9a\\xb5\\x0d\\x24\\xd6\\x2e\\x31\\x3a\\xc0\\xe7\\x3a\\x64\\xb4\\x28\\x2b\\x74\\x62\\x6a\\xf2\\xb4\\xa4\\xb5\\x4c\\x27\\x4e\\x5a\\x6b\\xc2\\x80\\xb6\\xdc\\x25\\xdc\\xfe\\x07\\x81\\x4c\\x9c\\x81\\x6d\\x2f\\x9e\\x36\\xc0\\x5b\\x9b\\xfe\\xdf\\xf7\\xc6\\xb0\\x3c\\xdd\\xeb\\xd4\\x73\\x5e\\x09\\x93\\xd3\\xc3\\xfd\\xc6\\x54\\x04\\x43\\xc6\\x00\\x5e\\x90\\x0b\\x40\\x35\\xe1\\x40\\x8a\\x85\\x01\\x6a\\xa1\\xb8\\x92\\x02\\x99\\x0e\\x5d\\x84\\xed\\x99\\x81\\xc2\\x9b\\x77\\x20\\x6d\\x7c\\x11\\x30\\x52\\xa2\\x02\\x98\\x12\\xc6\\xea\\x13\\xaa\\xe8\\xbe\\x0a\\xca\\x7a\\x33\\x06\\xbf\\x61\\x72\\x42\\x29\\x8e\\x68\\xbe\\xcd\\x0d\\x5d\\x16\\xc8\\x88\\x7f\\xd1\\x95\\x0b\\x77\\x85\\xa4\\x6b\\xb0\\x22\\xb3\\x9f\\x76\\x07\\xcd\\x89\\x13\\x71\\x8b\\x30\\x17\\xfc\\x3f\\x86\\xd6\\x93\\x3f\\x75\\xee\\xc5\\x19\\x1a\\xd1\\xf1\\x98\\x9a\\x8d\\x26\\x17\\x86\\xf5\\x6b\\xe4\\xa9\\x88\\x37\\x0d\\xb8\\x29\\x61\\xa9\\xfc\\xc9\\x53\\x54\\x2e\\x51\\xc2\\xe0\\x86\\xdb\\x0e\\x02\\xb4\\xfc\\x34\\x66\\x94\\xab\\xd9\\x05\\x9d\\x5b\\x11\\x72\\x26\\x47\\x66\\x9e\\x7f\\x17\\xb7\\x45\\xa6\\x0b\\x02\\xf7\\x33\\x9f\\xcc\\x99\\xbc\\x35\\xd5\\x9f\\xd0\\xb9\\x8b\\x60\\xc3\\x14\\xab\\xd4\\xbf\\x8a\\xa4\\xb7\\xea\\xe0\\x9d\\xd0\\x09\\x7a\\xcb\\x91\\x89\\xf0\\x2c\\xf8\\x5a\\x25\\x1a\\xc9\\x2a\\xaf\\x69\\x1b\\x15\\xcd\\x4a\\x33\\xb5\\x8d\\x76\\x63\\xab\\xd0\\xb0\\x44\\x43\\x33\\x04\\x4a\\xf5\\xce\\x20\\xfd\\x71\\xcb\\xaf\\xfc\\x0d\\x29\\x83\\x58\\x19\\xf4\\x92\\x93\\xfc\\x26\\xe7\\xf9\\x78\\x7f\\xc3\\x68\\xc4\\xd3\\x5c\\xae\\x92\\x74\\x7f\\x21\\xca\\x1f\\x3e\\xfd\\x87\\xa0\\xd8\\x10\\x41\\x99\\x41\\x64\\x82\\xd0\\x7b\\xfe\\xc1\\x28\\x1c\\x66\\xf5\\x65\\x28\\x5b\\xf6\\x72\\xd5\\xe7\\x48\\x64\\x00\\x66\\x0c\\x01\\x75\\x55\\xe9\\xfa\\x2b\\xf6\\xa4\\xe7\\x02\\x7f\\x0e\\x7e\\x5f\\x44\\x3e\\xd6\\x58\\xb7\\x5b\\x59\\x06\\x12\\xab\\xde\\x0d\\x80\\xd1\\xa2\\x6c\\xb8\\xbd\\xe7\\x6b\\x99\\x6e\\xff\\x6a\\x74\\xe3\\xda\\xfc\\x59\\xeb\\x1b\\x58\\x4f\\x45\\x97\\xa2\\x39\\xcd\\x83\\x9f\\xa1\\xf1\\xb7\\xbd\\xa1\\xa2\\x4d\\x15\\x0c\\x4e\\x24\\xb9\\x1c\\xec\\x01\\xee\\x53\\xa3\\xac\\x85\\x2a\\x91\\x2d\\xe1\\x95\\xa3\\xc2\\x9d\\xd7\\x07\\x9a\\xa7\\xe8\\x8a\\xa8\\x1e\\x9d\\x31\\xb8\\xfc\\xcd\\x43\\x5e\\xda\\x11\\x3c\\x3f\\x82\\x45\\x8b\\x7f\\x79\\x33\\x57\\x2b\\x77\\x67\\x53\\xc9\\x22\\x40\\xcc\\x03\\x61\\x58\\xa4\\xba\\x0e\\x56\\xef\\xed\\x53\\xec\\xb5\\x3f\\xc0\\x93\\xfe\\xad\\x14\\x34\\x34\\x85\\xae\\x5d\\x91\\x05\\xbb\\x16\\x3f\\x26\\x25\\x14\\xe4\\x8b\\xe7\\x41\\x59\\xc9\\xfa\\xbc\\xb7\\x1d\\x1a\\x42\\x80\\xd9\\xed\\x70\\xd7\\xe4\\x2b\\x75\\xf7\\xfd\\xad\\xd0\\x2d\\x69\\x19\\x8f\\x5f\\x46\\x5b\\xf6\\x04\\xcb\\x42\\x54\\x41\\x7b\\xac\\x37\\x14\\xb3\\xa9\\x9e\\x6f\\x1a\\xce\\xc9\\xe3\\xb3\\xd0\\x97\\xf9\\x72\\xfb\\xc3\\x6f\\x2e\\xda\\x39\\x26\\xd5\\x61\\x12\\xd4\\xe9\\x09\\x7d\\x89\\xbd\\xc3\\x59\\x37\\xb9\\xa3\\x15\\x8e\\x7c\\xdd\\x5d\\xa4\\x01\\xe1\\x80\\xd3\\xed\\xe6\\xb1\\xff\\x02\\x86\\x41\\x92\\xeb\\x72\\x97\\x81\\x53\\x4f\\x49\\x64\\xdd\\xf2\\xaf\\x11\\x80\\x0d\\x8b\\x5b\\x6d\\x01\\xb2\\x09\\xaa\\x33\\x69\\x36\\x6c\\x19\\xa2\\x8c\\x79\\xa8\\x7d\\x21\\x74\\xec\\x22\\xfb\\x14\\x89\\xa6\\x75\\x5c\\x34\\x8a\\x99\\x6d\\x0a\\xa5\\x6e\\x0f\\x60\\xd5\\x8e\\x26\\xbe\\xfa\\x23\\xa8\\x6b\\xef\\x4e\\x35\\x29\\x51\\x2e\\x30\\xa9\\xd1\\xc5\\xe4\\x88\\x50\\x18\\xcb\\x97\\xae\\xb7\\xc9\\x3c\\x5c\\x41\\xca\\xa3\\x42\\x36\\x57\\x5c\\x22\\x6f\\x3b\\x23\\x5e\\xdd\\xba\\x36\\x4e\\x28\\x5b\\x6e\\x35\\x27\\x07\\xbb\\xb3\\xb3\\x39\\xbb\\xf2\\xa6\\x3a\\x9c\\xb9\\xbd\\x33\\x3a\\x77\\xe7\\x9b\\xd5\\x8a\\x48\\xe1\\x4c\\xe5\\x88\\x6e\\xd0\\xcd\\x07\\xc2\\xd1\\x65\\xa8\\x1b\\x5e\\x6a\\x31\\xa8\\xae\\x78\\x06\\xbc\\xf2\\xe0\\xc4\\xec\\x29\\xa9\\x67\\x72\\x5e\\x57\\x7f\\x17\\x41\\xee\\x68\\xf3\\x45\\xf5\\xf7\\xab\\x0f\\xad\\x31\\xc8\\xb4\\xb1\\x8b\\x43\\x1c\\x49\\x77\\xd5\\xc5\\x84\\x00\\x4b\\x45\\xf7\\xcd\\x19\\x61\\xaf\\xfe\\x87\\x38\\xe2\\x4c\\x38\\x26\\x10\\xef\\xe9\\x98\\x35\\x3d\\x7e\\xba\\xf9\\x19\\xb2\\x79\\xbb\\xb6\\x91\\xc3\\x05\\x2b\\x8b\\x2c\\x5f\\x09\\x80\\x8e\\xf3\\xa6\"},\n{{0xba,0xb3,0xff,0x7a,0x44,0x48,0xd8,0xa0,0x3d,0x8a,0xcf,0xdb,0x91,0x3f,0x77,0xfe,0x77,0x80,0x43,0x95,0xc3,0xe5,0x4e,0xc2,0x35,0x11,0x79,0x27,0xe3,0x2b,0x50,0xd5,},{0x54,0x97,0x5e,0x35,0xe5,0xb1,0xd0,0x32,0x3f,0x2d,0x6f,0xb5,0xc6,0x15,0x8b,0xf6,0x65,0x4b,0x08,0x4f,0x76,0xbb,0xdc,0xfd,0x72,0x34,0x92,0x29,0xe8,0xe4,0xa6,0xe8,},{0xd6,0xb4,0x13,0x5f,0xc7,0xac,0xb3,0xd7,0xcd,0xf9,0x87,0x89,0x6d,0x91,0xb8,0xa9,0x0d,0xb5,0x84,0xd8,0x93,0x3a,0x6f,0x30,0x29,0xe3,0x26,0x1e,0xc1,0xc3,0x90,0xcb,0xac,0xfa,0xaf,0xef,0xf4,0x43,0xb6,0xda,0x4f,0xdb,0x1d,0x84,0xc6,0x4a,0x54,0x56,0x0f,0xef,0xfa,0x2f,0x1c,0x7a,0x91,0xbd,0xe9,0x73,0x02,0x22,0x92,0x3b,0x67,0x03,},\"\\xb6\\x47\\xb6\\x7c\\xf0\\x1c\\x2c\\xac\\xc3\\x9d\\xe5\\x96\\x9e\\x19\\x9b\\xe6\\xd9\\x32\\x01\\x67\\xa4\\xce\\xbb\\xf1\\x62\\x59\\x50\\xb1\\xe6\\xb7\\xad\\xf5\\xca\\x24\\xd1\\x34\\x95\\x68\\x86\\x5f\\xbb\\xfd\\x90\\xf5\\x13\\xf0\\x5f\\x79\\xf7\\x0a\\x63\\xa2\\x38\\x73\\xdc\\x7a\\x19\\x5d\\x4b\\x28\\x5a\\x08\\xf3\\x0e\\xe0\\x61\\xd0\\xb8\\xe6\\xb4\\xd6\\xbf\\x9b\\x2e\\xcf\\x2c\\x69\\xf3\\xd5\\xa0\\x7a\\x67\\x30\\x53\\x7c\\xca\\x4a\\x4e\\x4c\\x7e\\xe6\\x84\\x70\\x2b\\xff\\x88\\x3f\\xab\\x8b\\xca\\xf8\\x93\\x11\\xc5\\x49\\x8b\\xcc\\xb5\\xa0\\xf7\\xc8\\xd4\\x9b\\x54\\xf4\\x82\\xff\\xfb\\xca\\x6e\\x7d\\xa2\\x62\\x45\\x2b\\xa5\\x9a\\x57\\xa6\\x87\\x9d\\x81\\xb7\\x3c\\xd7\\xad\\xf7\\x2a\\x3b\\xe2\\x8a\\x37\\x3c\\xd6\\x33\\x10\\x40\\x84\\x61\\xc2\\x1b\\x90\\x7f\\x63\\xe0\\x86\\xb2\\x92\\xff\\x02\\x83\\x3e\\x8a\\x2f\\x46\\xad\\xbd\\x67\\x1d\\x02\\xb0\\x3a\\x69\\xac\\xa2\\xe1\\x1d\\x28\\x7c\\x52\\x2a\\x95\\x45\\x20\\x44\\x2e\\xce\\xfa\\xa9\\x05\\xdb\\xfc\\xc8\\x25\\x4c\\x58\\xc3\\x95\\x4a\\x89\\xbf\\x56\\xcb\\xe0\\x1a\\xd5\\x63\\x19\\x71\\xeb\\x39\\xeb\\x43\\x2a\\x85\\x4e\\x69\\x19\\x29\\xdf\\x7e\\x48\\xb9\\x00\\xca\\x6e\\x74\\x0a\\xcc\\xf5\\x78\\xb3\\x17\\x95\\xb4\\x9a\\x6c\\xa7\\x74\\xbd\\x8b\\x99\\x31\\x06\\xa9\\xc4\\x94\\x8c\\x18\\x71\\x49\\x48\\x31\\x59\\x90\\xa5\\xf1\\x91\\x69\\x24\\x20\\xf2\\x89\\x32\\x8a\\xb7\\x13\\xec\\x19\\xb7\\xea\\x89\\x4d\\x16\\xe6\\x47\\x61\\x00\\x87\\x1c\\xf3\\x16\\x8e\\x4f\\x93\\x5b\\x55\\x05\\xd1\\xed\\x5b\\x0a\\xa2\\x9b\\xe3\\x6f\\xa3\\xa3\\x46\\xac\\x3e\\x76\\xf1\\x43\\xc4\\x6c\\xa6\\x91\\x23\\xb7\\x9c\\x36\\x39\\x9a\\x0d\\x2e\\xd3\\x02\\x77\\x24\\x94\\xad\\xf4\\x42\\xbb\\xaf\\xbc\\x4d\\x01\\x53\\x26\\x92\\xc7\\x85\\x9d\\xf0\\x4d\\x2c\\xa7\\x8b\\xa5\\x5d\\x77\\xfd\\xf3\\xe5\\xad\\x99\\x37\\x86\\xa2\\x4c\\xff\\x21\\x99\\xbb\\x49\\x38\\x78\\x73\\xcc\\x41\\x4b\\x4c\\xf1\\x13\\x7a\\xbb\\x7e\\x94\\xae\\x3d\\xdb\\xf9\\x7f\\x53\\x4a\\x18\\xfc\\x5a\\xe5\\x85\\x23\\xa3\\xcc\\x52\\x28\\x3d\\xc7\\xb0\\x16\\xf3\\x1c\\xd6\\x55\\x79\\x81\\xc5\\x07\\x6c\\x77\\x4f\\x30\\x3a\\x47\\xc4\\x27\\x87\\x0e\\x20\\x7e\\xd8\\xbd\\x66\\x64\\x0f\\xf0\\x92\\xdb\\x50\\x3f\\xa1\\x24\\xbf\\xdc\\xf0\\x20\\x05\\x1d\\xad\\xd1\\x06\\xdd\\x24\\x58\\x40\\xb3\\x19\\x10\\xb8\\xa9\\x06\\x0d\\x59\\x86\\xf0\\x2b\\x60\\xaa\\x5e\\x33\\xb4\\xd7\\x55\\x09\\x12\\xcd\\xc5\\x77\\x6c\\x77\\x2a\\xac\\x93\\xae\\x19\\xc7\\x3b\\x7e\\xcf\\xca\\x38\\x9e\\x62\\x76\\x81\\xa8\\x78\\x1e\\xb4\\x7d\\x84\\xe9\\x34\\x60\\xba\\x89\\x1d\\x3f\\xf6\\xea\\xdf\\x8f\\x2a\\x90\\x3c\\x38\\x34\\x74\\xbe\\xaa\\x42\\xb9\\x0e\\x03\\x22\\x36\\xdc\\xd8\\x98\\xd0\\x2a\\x40\\xef\\xb4\\x4e\\x47\\xea\\xd5\\x2b\\x75\\xb0\\x9c\\x7d\\xa1\\xcd\\x6a\\x2d\\xfd\\x4d\\x1c\\x04\\x52\\xde\\x69\\xf6\\xac\\xac\\x1a\\x68\\xdd\\x78\\xda\\xf9\\x72\\xae\\x26\\x08\\x21\\xe2\\xec\\x52\\x2f\\xb5\\x74\\x9b\\xeb\\xe0\\xad\\xb4\\x52\\xbf\\xa4\\xfa\\xa1\\xe9\\x79\\x11\\xc1\\x29\\x9f\\x16\\x56\\x8d\\x68\\xee\\xf4\\x05\\xf4\\xb1\\xcd\\xac\\xab\\xed\\x59\\xf7\\xb0\\xfb\\xce\\xab\\x71\\x9a\\x34\\xb2\\x99\\xf5\\x8a\\x4a\\xe8\\x15\\x4f\\x98\\xf4\\xd9\\xf4\\xf1\\x40\\xb1\\xf0\\x85\\x00\\x69\\x46\\x72\\x5e\\x7c\\x29\\xbb\\x0b\\xc6\\xcc\\xf2\\x53\\x44\\x97\\xc6\\x1d\\x4c\\x16\\x12\\x62\\x4a\\x61\\xd7\\x0d\\x26\\xc3\\xef\\xb7\\xd7\\xc3\\x51\\x84\\x86\\x57\\xf7\\xf8\\xee\\xbf\\x8b\\x99\\x07\\x47\\x74\\x0e\\x6f\\x91\\x0c\\x97\\xce\\xf1\\x50\\x37\\x57\\x65\\xc8\\xc0\\xb3\\xb4\\x49\\xc0\\xd0\\x9d\\x66\\xf0\\x08\\xe6\\x7c\\xfa\\x76\\xea\\x2b\\x68\\x08\\xb6\\xfe\\x63\\x2e\\xaf\\xe0\\x58\\x7f\\x37\\xe3\\x6b\\xe9\\x8d\\xcb\\x17\\xa3\\xf4\\xa1\\x5b\\x65\\xa9\\xf6\\xfc\\xf9\\x64\\x2b\\x52\\x52\\x20\\x77\\xb1\\xfb\\x4c\\xc3\\xc0\\x8d\\xf4\\xb4\\x67\\xca\\x71\\x6d\\xb1\\x6b\\x73\\x7f\\x78\\x2c\\xdf\\x38\\x71\\x70\\xa5\\xf1\\xf6\\xa7\\xae\\x0a\\xb3\\xf5\\xb7\\xc5\\x85\\xe3\\xb0\\x65\\x5a\\x64\\x56\\xa5\\x03\\x59\\x5c\\xe8\\xea\\xea\\x25\\x37\\x85\\x5e\\x7f\\x0d\\x50\\x61\\xbc\\x29\\xb4\\xe6\\x7d\\xaa\\x82\\x46\\x3c\\x19\\x0e\\x9f\\xdd\\xd5\\x2f\\x83\\x22\\xdd\\xb4\\xe0\\xf2\\x6b\\x68\\x77\\x82\\x28\\xeb\\x57\\xe1\\xa1\\x85\\xb7\\x02\\x5d\\xa1\\x49\\x87\\xd4\\x4b\\xaa\\x76\\x7b\\x22\\xee\\x7f\\x4c\\x84\\x59\\x10\\x32\\xe8\\x8e\\xc1\\x2e\\xb8\\xc5\\xa4\\xb9\\xe1\\x57\\xec\"},\n{{0x48,0x6c,0x7b,0x43,0x6c,0x1d,0x43,0xd6,0xb7,0x03,0x51,0x22,0x83,0xc1,0x66,0xdc,0x86,0x3e,0x5a,0x33,0x80,0x2f,0x4e,0xa6,0x5f,0xc7,0x38,0x77,0x89,0x02,0xd0,0x14,},{0xb5,0xdc,0x94,0x7d,0x64,0x33,0x7c,0xae,0x82,0x12,0x2b,0xd6,0x8c,0xc8,0x08,0x40,0x59,0x6d,0xe3,0xbe,0x56,0xcb,0xd0,0xc8,0x33,0xaf,0x3f,0xaa,0x3a,0xdc,0x37,0x76,},{0x31,0xf9,0x5c,0xbb,0x74,0x63,0xb8,0x75,0x28,0x65,0x42,0x27,0xbb,0x13,0x97,0xbf,0x10,0x65,0xb4,0xf5,0x76,0x80,0x80,0x78,0x20,0x7d,0xfa,0xf0,0x6d,0x12,0x4b,0x41,0xf4,0xc3,0x18,0xf4,0xa9,0x31,0x5a,0x66,0x08,0x5b,0x9e,0x56,0x8a,0x71,0xe4,0x14,0xed,0x94,0x14,0x51,0x73,0x10,0xc6,0x99,0x94,0x6d,0xb0,0xc9,0x76,0x28,0x52,0x07,},\"\\xaf\\x03\\x60\\x53\\x67\\x2d\\xcf\\x3a\\xa2\\x6e\\x28\\xec\\x6a\\xa6\\x42\\xce\\x28\\x4b\\x89\\x6c\\x69\\x88\\x7d\\xfd\\xcf\\x08\\x24\\x51\\x5e\\xb0\\x84\\x8d\\x9d\\x97\\x0c\\xa2\\x72\\xdf\\x77\\xa8\\x6b\\x3f\\xf6\\xdd\\xaf\\x3c\\xba\\xdd\\x3a\\xb6\\x28\\x3b\\xc3\\x7c\\xdf\\x7a\\x56\\x07\\xd5\\xdf\\xc7\\xcf\\x96\\x32\\x92\\x99\\xcc\\x53\\xed\\xbb\\xe6\\x57\\xfd\\xfa\\x2c\\xa2\\x44\\x67\\x05\\x0a\\x0a\\xeb\\x8c\\xff\\xd7\\xd3\\x3d\\x54\\x3e\\xc2\\xc1\\x91\\xcc\\x0b\\xce\\x89\\xac\\x37\\xd3\\x32\\x93\\xb1\\x88\\x8c\\xcb\\x76\\xc2\\x8a\\xdc\\x67\\x1a\\x49\\x35\\xa8\\x46\\xd9\\x07\\xe4\\xad\\xd0\\x11\\x0f\\xeb\\xbe\\xe5\\xae\\xc8\\x0f\\x9d\\x2f\\xf7\\x4e\\x2a\\xf4\\xfd\\xbe\\xbb\\xcf\\x49\\x10\\x5a\\x64\\x69\\xd7\\x38\\x00\\x06\\xb2\\xca\\x44\\x36\\x48\\x14\\x45\\x4e\\x44\\x5e\\x36\\xdc\\x00\\x12\\xf3\\x39\\xc9\\x68\\x54\\xf8\\x36\\x44\\x2a\\x05\\xa5\\x0b\\xec\\x90\\x73\\x27\\xf7\\x4b\\xa9\\xf6\\xfd\\x79\\x0f\\xf0\\xad\\x37\\x83\\xd2\\x97\\xbd\\xcc\\xa7\\x64\\x60\\x78\\x37\\x03\\xeb\\x5f\\x2b\\x1f\\x51\\xb0\\xa7\\x40\\xce\\x7a\\x8f\\x00\\xa3\\x87\\xe3\\x63\\x62\\x70\\xa9\\x71\\xfa\\x8f\\x15\\xb4\\x49\\x67\\x30\\xd8\\x8a\\xdd\\x80\\x7a\\x7f\\x7e\\x98\\x7c\\xd4\\x15\\x95\\xa2\\xe7\\x43\\x5d\\xf5\\x19\\x55\\x76\\xa3\\x5f\\x5e\\x91\\xb2\\xfc\\xfa\\xc9\\x4e\\xd5\\xd7\\x76\\x63\\x78\\x3b\\x61\\xe6\\x67\\x1d\\x34\\x83\\x8b\\x6b\\x56\\x44\\xfb\\xc1\\xc5\\x39\\xfe\\x15\\x9b\\x77\\x92\\xdb\\x96\\x7e\\x83\\x52\\x61\\x8d\\xda\\xca\\x0c\\xde\\x73\\x43\\x7b\\x59\\xe7\\x80\\x1b\\x49\\xeb\\x46\\x09\\xb1\\x05\\x77\\xca\\x26\\x92\\xdd\\x6f\\x9d\\x5e\\x9d\\x4b\\x5e\\x5e\\x62\\xc5\\x91\\x3e\\x7b\\x87\\xe6\\xb3\\x47\\xbe\\x61\\x53\\xb1\\x71\\x99\\xc9\\x16\\xa1\\x3f\\x8a\\x88\\x5b\\x37\\x8e\\xf0\\x9e\\x13\\xca\\xe4\\xd8\\xb0\\x79\\xd7\\xd5\\xcb\\x90\\x94\\x19\\x9b\\x0f\\x20\\x53\\x3c\\x90\\x08\\x3b\\xc3\\xac\\xb2\\x66\\x76\\x97\\xee\\xd2\\x2e\\x36\\x70\\xab\\xb4\\xa5\\x53\\xe9\\x95\\xc9\\xdd\\x95\\x94\\xe5\\x92\\x39\\x1a\\x00\\x04\\xb6\\x55\\x65\\x44\\xf3\\x56\\x12\\xc4\\x97\\x13\\x59\\x57\\x7c\\x47\\x63\\x82\\xca\\x53\\xb3\\xf2\\x62\\xa5\\xe3\\x3e\\xd2\\x6e\\xec\\x80\\x9f\\x4f\\xdb\\xa4\\x89\\x8a\\x11\\x36\\x75\\xcb\\x6a\\xf7\\x17\\xdb\\x62\\x57\\x9f\\x39\\x80\\xb2\\x14\\x63\\xbe\\x02\\x9c\\xb4\\x16\\x0f\\xe5\\xd2\\x57\\xc4\\x6c\\xd6\\x66\\x4f\\x98\\x61\\xac\\x50\\xfe\\x05\\xc1\\x44\\x05\\x7d\\xce\\x2f\\x8d\\xf1\\x53\\x2a\\xa7\\xaf\\x58\\x9f\\x41\\x27\\x06\\x01\\xce\\xf0\\x6b\\xbe\\x4f\\x35\\xc3\\x1c\\x78\\x2b\\xb3\\xcf\\xff\\x7d\\x5a\\xb6\\x4a\\x14\\xec\\x41\\x73\\x61\\xf1\\xd3\\x2c\\xbd\\x38\\xb6\\xbd\\x0e\\x02\\x50\\x5d\\x14\\x16\\x30\\x2b\\x85\\x05\\xae\\x2a\\x96\\xe8\\xd5\\x33\\x9c\\x34\\x6c\\x2b\\x06\\x62\\xd3\\x50\\x25\\x9c\\x50\\xc5\\xe4\\x87\\x95\\x91\\x4e\\x6f\\x88\\xe9\\x7c\\x81\\x1c\\x39\\x3b\\xdf\\x9a\\xec\\x7e\\xf8\\x20\\x47\\xca\\x28\\xee\\x97\\x1c\\x17\\x5c\\x27\\xe3\\x6e\\x10\\x97\\x27\\x96\\x0d\\xdf\\x1a\\x1b\\x97\\x6a\\xb4\\x4f\\x48\\x51\\x60\\x7b\\xd9\\x66\\x80\\x8a\\xc4\\x6d\\x54\\x00\\x31\\x28\\x29\\x7f\\x5f\\x44\\x87\\x10\\x8d\\x6a\\x02\\xe7\\xa1\\x64\\x13\\xd2\\xb7\\x5e\\xcb\\x42\\xfd\\xdf\\xb6\\x69\\xc8\\x01\\xd2\\x3d\\xe5\\x0a\\x6f\\x7b\\xf6\\x58\\xf7\\x53\\xc6\\xb2\\xb3\\xb4\\x7c\\x06\\x40\\x10\\x5d\\x0a\\x80\\x1b\\x32\\xa1\\x94\\x3c\\xdc\\x15\\xc8\\x86\\x55\\x5e\\xb7\\x5b\\xb7\\x92\\x7b\\x93\\xc3\\x5c\\x5b\\xe1\\xf9\\x8b\\x19\\x6c\\xaa\\xc2\\xda\\xd9\\x91\\xb1\\x04\\x4e\\xa8\\x63\\x94\\x4d\\x54\\xd8\\x83\\xab\\xc3\\xc6\\xde\\x66\\xed\\x86\\x8e\\xe8\\x4b\\xcf\\x9c\\x34\\xcc\\xdb\\x80\\xfc\\xd9\\xcc\\x04\\x02\\x74\\x77\\x32\\xcd\\x63\\x0b\\xbf\\xa3\\xbb\\xe8\\xb0\\x38\\xdc\\x1d\\xbd\\xaf\\x43\\x6d\\x9a\\xc0\\x0c\\x02\\xd5\\x28\\xec\\xe2\\xe7\\x91\\xee\\x31\\x2a\\x86\\x8f\\xeb\\x2f\\x58\\x7c\\xa4\\x4d\\xb5\\x73\\x13\\x84\\xfa\\x18\\x31\\x14\\x20\\x61\\xb2\\xea\\xd2\\xb8\\x0c\\x66\\xbd\\x2f\\xa5\\xdc\\xca\\xbe\\x6a\\x25\\xf2\\xa4\\x93\\xfe\\xaa\\xcd\\x23\\x1d\\x2f\\x40\\x96\\x46\\xb9\\x42\\xa5\\x78\\x54\\x5e\\xa4\\xfe\\xea\\x9a\\x73\\x47\\x3f\\x79\\xdc\\xf1\\x3e\\x0c\\x9f\\x1b\\x49\\xfd\\x89\\x12\\xec\\x48\\x73\\x28\\x04\\x5b\\xd0\\xfa\\x22\\x89\\x22\\xee\\x6e\\x97\\x3e\\x61\\xf6\\xe9\\x33\\x65\\x29\\x65\\x78\\xdc\\xc2\\x1c\\x36\\x14\\x79\\xee\\x2d\\x24\\x87\\x9f\\x2e\\x9b\"},\n{{0xa6,0xe6,0xad,0x2c,0x37,0x9c,0x6f,0xcc,0xad,0xb4,0xa4,0x9b,0x23,0x2a,0x91,0x42,0x61,0x8e,0xa3,0x01,0x03,0xc3,0x3c,0x22,0x6f,0xf6,0x28,0xbc,0xfd,0x81,0xf4,0x26,},{0xf7,0xc4,0x32,0x3f,0x5c,0x41,0x9d,0x9b,0x3f,0x34,0xa8,0xeb,0x42,0xae,0x7f,0x1f,0xaa,0x23,0x33,0x07,0x90,0x30,0xc5,0xd6,0x4f,0x9f,0xfb,0x1e,0x9b,0x16,0x00,0x2d,},{0x07,0xd9,0xfc,0x24,0x4f,0xda,0xb0,0x01,0x59,0xeb,0xec,0xc5,0xa0,0x08,0x83,0x45,0x3f,0x08,0x31,0x01,0x71,0x76,0x9d,0x29,0x70,0x01,0xe8,0x77,0x01,0x0e,0x3e,0xce,0xd9,0xfb,0x60,0xec,0x91,0xcb,0x4d,0x88,0xe7,0xba,0x40,0xc5,0x30,0xb1,0xf9,0x23,0x79,0x78,0xcc,0xd9,0x6d,0x5c,0xba,0x9e,0x4f,0xa2,0x7e,0x2a,0x0a,0xd9,0xd6,0x0c,},\"\\x2e\\x85\\x76\\x76\\xa5\\xbb\\x1c\\x6e\\x9e\\x94\\x50\\x7f\\x83\\xc6\\x0a\\x67\\xf5\\x47\\xc5\\xde\\x9e\\x94\\x56\\x6b\\x19\\x7a\\x6a\\xf6\\xcf\\x47\\x52\\xe9\\x3d\\xbd\\xef\\x6b\\x9f\\x66\\xd1\\xfe\\xbd\\x95\\x7e\\x42\\xa7\\xf5\\xad\\x64\\xef\\x1d\\xbc\\xc4\\xfe\\x69\\xae\\x95\\x25\\xd1\\xa4\\xde\\x67\\x05\\x4c\\x88\\xf2\\x9c\\x06\\x47\\xba\\xcf\\x8b\\x82\\xf3\\x21\\xff\\x99\\xfe\\x9e\\xed\\xc9\\x92\\xed\\x34\\xc1\\x17\\x7f\\xc5\\x42\\x12\\x27\\xcc\\xac\\x10\\xfe\\xb9\\xce\\xd4\\x08\\x2f\\x56\\x58\\xda\\x63\\x71\\x47\\x23\\x97\\x97\\x37\\xe7\\xdc\\xbf\\xe2\\xe8\\xb5\\xd5\\x0f\\x91\\xdf\\xca\\x83\\xe7\\xf9\\x5f\\x35\\xd1\\xad\\x8d\\xd5\\x11\\x44\\x50\\x2f\\x3d\\xf6\\x72\\x43\\x26\\x11\\xf0\\xe7\\x66\\xa9\\x0d\\xcc\\x2a\\x57\\x39\\xc8\\x05\\xd9\\x5f\\xe5\\xb0\\x41\\xde\\x9d\\x7f\\xb4\\x7b\\x44\\x04\\xaf\\xc8\\x03\\xa3\\xbd\\x48\\x04\\xc7\\x81\\x7e\\xbc\\x5b\\xdf\\xef\\x8a\\xdd\\x9e\\x25\\x0b\\x50\\x96\\x6c\\xa8\\x93\\x9b\\x22\\xb3\\xc6\\xff\\x93\\x6e\\xaa\\x65\\x9a\\x24\\x0c\\x0c\\x84\\x8b\\x81\\x0a\\xce\\xcf\\x61\\x81\\xe0\\xe4\\xdb\\x8e\\x4c\\xf8\\xfc\\xce\\x7d\\xe5\\x59\\xcb\\xe8\\xaf\\xa9\\xdb\\x84\\x99\\x57\\x09\\x11\\xa3\\x88\\x7e\\x85\\x0e\\x50\\x9c\\xdb\\x70\\xde\\xbc\\x34\\x77\\xd1\\x21\\x75\\x01\\x4f\\x79\\xf8\\x1b\\xa1\\x13\\xd0\\xb7\\xb3\\x35\\x11\\x8f\\x85\\xcf\\x59\\x99\\x6f\\x80\\x67\\x58\\xeb\\x90\\x3c\\xc4\\x50\\xf5\\x2f\\xee\\x10\\x2e\\xfc\\x01\\x44\\x1e\\x9a\\xe5\\xfa\\xe7\\x4c\\x23\\x1d\\xfd\\x85\\xeb\\x6b\\xad\\x17\\xd6\\xb7\\x0e\\x93\\x85\\x84\\xfa\\xcb\\x21\\x72\\xcb\\x03\\xbd\\x5e\\xa0\\x7b\\x7f\\x0d\\x37\\x1f\\xfa\\x35\\x1c\\x0e\\xe4\\xef\\xe9\\xba\\x4a\\x3f\\xd5\\x43\\x87\\x46\\x55\\xe7\\xd3\\x9c\\x53\\xae\\x86\\x32\\x98\\x02\\xe5\\xc3\\x85\\xe9\\x28\\x3a\\x29\\x73\\xca\\xb8\\xcf\\x7a\\xc7\\xff\\x0f\\x91\\xd1\\xd4\\x8b\\x58\\xab\\xfd\\xad\\x65\\x8d\\x81\\x2f\\x07\\x88\\x16\\x76\\xbd\\x22\\x6b\\xfe\\x95\\x7d\\x7d\\xf3\\x0c\\x41\\x30\\xa4\\x48\\x35\\x4a\\x6b\\x94\\x40\\x5a\\x41\\x16\\x50\\xa9\\xc8\\xfc\\x85\\x11\\x55\\xec\\x5a\\x8a\\x3e\\x3b\\x67\\xae\\x0c\\x4b\\x5c\\xb8\\x9b\\xb7\\x3f\\xc8\\x29\\x74\\xbe\\x62\\xda\\x73\\xf0\\xe2\\x30\\x92\\x93\\x7d\\x40\\x5b\\xa4\\xaf\\x6c\\xab\\x94\\x65\\xea\\x43\\xa6\\x25\\x3f\\x44\\x57\\x08\\x2a\\x06\\xac\\x12\\xb7\\x5e\\x88\\xec\\x68\\x44\\x87\\xf9\\x07\\x63\\x73\\xfa\\xb8\\x89\\x28\\x59\\xd8\\xe8\\xba\\x43\\x14\\x23\\xaa\\x80\\x5a\\x22\\x0c\\xbf\\xda\\x43\\x1b\\x32\\xb1\\xe0\\x31\\x21\\xf7\\xfd\\x4d\\xe1\\x85\\x91\\xf2\\x50\\x5c\\xc0\\xf5\\xb2\\xb1\\xa7\\x60\\x5f\\xbc\\xc6\\x37\\x57\\xb0\\x7e\\x29\\x9f\\xef\\x5a\\x2b\\x73\\x65\\x23\\x0c\\x2e\\x92\\xa2\\x59\\x62\\xc2\\xe8\\x01\\x2a\\xd3\\xfa\\x9e\\xe9\\x48\\x82\\x70\\x96\\x25\\xba\\x68\\xc7\\xb2\\x13\\x66\\x4a\\xe2\\x53\\x2b\\x60\\x9d\\x7c\\x9a\\xa0\\xe8\\x3d\\x49\\x3d\\xbc\\xe7\\x63\\x2f\\x35\\x58\\x0e\\x06\\xd3\\x11\\x1c\\xed\\x32\\x0d\\xd0\\x19\\x04\\x41\\xf6\\x2d\\x9e\\x35\\xf5\\x0d\\xe5\\x9c\\x27\\x2f\\xb0\\x0f\\x56\\x8a\\x00\\xb0\\x74\\x6c\\x33\\xa9\\xbd\\x24\\x90\\xc0\\x74\\xb9\\x1c\\xdd\\xc4\\x87\\xef\\x2e\\x45\\xa0\\xf0\\x30\\xe0\\x8f\\xdc\\x18\\x17\\xbc\\xa8\\xa9\\xce\\x29\\xd2\\x92\\x79\\xe7\\x55\\xde\\xbc\\x28\\xdf\\xad\\xc3\\xc4\\xd1\\xb4\\x58\\x48\\x6e\\x3c\\x8d\\x0c\\x43\\x18\\xe7\\xe6\\xf9\\xeb\\x5a\\x36\\x53\\xb3\\xf7\\xc4\\x95\\x07\\x07\\x7c\\xd5\\xeb\\x81\\xf1\\x0b\\x88\\x10\\x7c\\xc0\\xf9\\x31\\x69\\x32\\xab\\xe9\\xb6\\x4e\\x88\\x86\\xd0\\x68\\x56\\xa8\\x5b\\xe6\\x3b\\x0c\\x2b\\x47\\x5c\\x0a\\xfc\\xb0\\x69\\x44\\x26\\x86\\x0f\\xb2\\x4b\\x5c\\x17\\xab\\x6a\\xb7\\x73\\x3d\\x5e\\x64\\x1b\\xe7\\x4f\\xd5\\xf6\\xa1\\xff\\x18\\xd2\\xf9\\xa4\\x27\\x70\\xfb\\x30\\x75\\x0f\\x56\\xf4\\x85\\x4e\\x38\\xd5\\x8a\\xef\\x18\\xa2\\xa6\\x1c\\xbf\\xb4\\x9e\\xe5\\x76\\xed\\x97\\x73\\x7b\\xc2\\x8d\\xf3\\x26\\x8a\\x33\\x41\\x75\\x51\\x3d\\x97\\xaf\\x00\\x9c\\xbb\\xcf\\xdf\\xad\\x50\\x39\\xd6\\x9b\\xb4\\x6f\\x70\\x88\\x67\\xd9\\xb3\\xce\\x0b\\xf2\\xf5\\x69\\xe3\\xcf\\xbc\\xf6\\x13\\x6f\\x88\\x70\\xd2\\x52\\x08\\xb2\\x1a\\x3e\\xdc\\xb7\\x33\\x93\\xdf\\xcd\\x41\\x72\\xc1\\x40\\x2c\\x41\\xf3\\x6e\\x3f\\x82\\xa4\\xea\\x6d\\xcd\\x89\\x16\\x86\\xba\\x66\\xe1\\x43\\x20\\xaa\\x0e\\x22\\xba\\x0c\\x1e\\xf0\\x33\\xd6\\x62\\xcd\\xb8\\x60\\xcd\\xfa\\x3a\\x40\\xf6\\xcc\\x53\\x2a\\x08\"},\n{{0x9b,0x6d,0x7e,0x28,0xeb,0x05,0x15,0x97,0x32,0x4d,0xce,0xb7,0xa1,0x89,0x41,0x24,0x67,0x25,0xe8,0x8d,0x53,0xab,0x2c,0x34,0x77,0x11,0x05,0x33,0x0c,0xf1,0xf4,0xae,},{0x88,0x72,0xa5,0x0b,0x5f,0xe3,0x62,0xf8,0xea,0xd1,0xd4,0x0e,0x20,0x45,0xf0,0xd4,0x0b,0x2e,0x7b,0x50,0xb5,0x9d,0x80,0x90,0xbc,0x47,0xad,0x68,0xeb,0xee,0x09,0xed,},{0xc6,0xdc,0x5c,0xa1,0xe8,0x56,0x00,0x15,0xb4,0x93,0xaf,0xe2,0x66,0x6c,0xcf,0x6f,0xef,0xa8,0x03,0xd8,0x52,0x6c,0x83,0x7f,0xe7,0xf1,0x23,0xc7,0x99,0x14,0x27,0xab,0x03,0x0d,0x7c,0x77,0x0e,0x45,0xf6,0xde,0x84,0x81,0x52,0x3b,0x94,0xec,0xe9,0x7f,0x3f,0x16,0x1c,0xf5,0xb8,0xc7,0xae,0xa3,0x9f,0x5a,0xd8,0x26,0xbf,0x8d,0x0a,0x02,},\"\\xd1\\xe1\\x98\\x7b\\xff\\x65\\xf6\\x2a\\xd6\\x76\\x24\\xc6\\x65\\x79\\x24\\xf5\\xd6\\x73\\xb7\\x82\\x4e\\xbe\\x40\\x40\\x26\\xc0\\x56\\x2d\\xed\\x31\\x43\\x44\\x0b\\xe6\\x37\\xf9\\x8c\\x9e\\x01\\xa6\\xaf\\xdf\\xa9\\xa4\\x7d\\xd4\\x9c\\x7c\\xba\\x6e\\x3f\\xd2\\x3e\\x45\\x52\\xf7\\x63\\x2b\\x14\\x38\\x0b\\x27\\xcd\\x3e\\x96\\x06\\xcc\\xe3\\x50\\xf1\\x52\\xab\\x12\\x6b\\xea\\xd0\\xa5\\xd3\\xbc\\xe4\\xd4\\x20\\x92\\xd9\\x34\\xc8\\xca\\x33\\x7e\\x98\\x7e\\x11\\xd8\\x6c\\xfb\\xfb\\xd2\\xac\\xc3\\x22\\x3b\\xd1\\x67\\x44\\xa9\\x27\\x72\\x8f\\x48\\x53\\x72\\x17\\x5c\\xc6\\x94\\xdf\\x30\\xa7\\x3f\\x9d\\x33\\x76\\x5f\\xf0\\x14\\xef\\x00\\x8d\\x58\\x63\\x21\\x03\\x38\\xcc\\x34\\x82\\xcc\\x27\\xea\\x31\\x7e\\xec\\x92\\x1b\\x0c\\x56\\x8c\\x38\\xab\\x27\\xc4\\xa5\\x64\\xe8\\x02\\xb1\\xb9\\x46\\x68\\xc6\\x51\\xe2\\x0a\\x0b\\x55\\xf3\\xa7\\x9d\\x21\\x5f\\xc3\\xa0\\xd0\\x49\\x04\\x01\\x09\\x32\\xc4\\xcc\\x68\\xc2\\xa9\\xe7\\xd0\\x0e\\x5d\\x38\\xd8\\x2d\\xf5\\x52\\x06\\xba\\xb9\\x5c\\xf6\\x97\\xbe\\xbc\\x72\\x06\\xee\\xde\\xf6\\xfd\\x18\\xd9\\xa2\\x0c\\x2c\\xbb\\x28\\x5b\\x00\\xef\\xa7\\x69\\xa0\\x8d\\xab\\x2b\\x3a\\xba\\xdf\\x00\\xd1\\x98\\xb4\\xf1\\x92\\xdd\\x44\\xbc\\xb9\\x14\\x31\\x82\\x3a\\xe6\\xfd\\xf9\\x84\\x58\\xec\\xa3\\x9c\\xd2\\x92\\x63\\xf0\\x99\\x93\\x03\\xe7\\x0d\\xc6\\x94\\xfe\\x01\\xc5\\x3a\\x11\\xc1\\xd1\\xc3\\x4c\\x1e\\xe5\\x06\\x8a\\x20\\x1d\\xbe\\x7e\\x10\\x08\\xd7\\x64\\x35\\x89\\x68\\xb4\\x02\\xaa\\x39\\x85\\x49\\x50\\x7f\\x7b\\xd1\\x85\\x08\\x00\\xe4\\x11\\xb1\\xc4\\xe2\\x8d\\xdc\\x04\\xa8\\x59\\xe1\\x79\\xbe\\x8a\\xd7\\xe6\\x67\\x0e\\x50\\x9d\\xb0\\x27\\xad\\x7e\\x51\\x7e\\x44\\x25\\x95\\x4f\\x5a\\x80\\x74\\x14\\xa6\\xda\\x26\\x7a\\x76\\x4e\\x71\\x2a\\x99\\x84\\x65\\x06\\x49\\x82\\xd8\\x51\\xa2\\x65\\xea\\x3c\\x4d\\xfb\\x74\\xf9\\x92\\xa7\\xcc\\xcd\\x9a\\x82\\x68\\x7f\\xa6\\x1c\\x32\\x2c\\x4f\\x58\\x9e\\x86\\xb8\\x82\\x52\\x13\\xbf\\xa9\\x51\\xda\\xe6\\xaf\\x35\\x4a\\xce\\x18\\xf0\\x73\\x99\\x5a\\xdc\\x95\\x83\\x9d\\xac\\x01\\x65\\x51\\x1d\\x61\\x75\\x37\\x91\\xa5\\x3e\\x48\\xe3\\xa8\\x27\\x3d\\x44\\x82\\x3d\\x25\\x96\\xf2\\xa2\\xdb\\x2e\\x5f\\x1a\\xe5\\x97\\x22\\x1b\\xa7\\xf3\\xeb\\xaf\\x4a\\x7b\\x28\\x88\\x39\\x50\\x02\\xbd\\xaf\\xf5\\x1f\\xa5\\x4b\\xfb\\x97\\x9d\\xe1\\x03\\x14\\x04\\xca\\x77\\x89\\xfe\\x09\\x5d\\x4d\\x17\\xf0\\x7a\\x35\\x55\\x6b\\x10\\xfe\\x8e\\x14\\x17\\xc8\\xa6\\xa6\\x31\\xc2\\xed\\x36\\xcb\\x7a\\x0e\\x61\\x81\\x77\\x62\\x89\\xc3\\x44\\x81\\x4d\\x42\\x13\\x1a\\x73\\xb1\\x2f\\xaa\\x35\\xd7\\x78\\x14\\xc6\\x81\\xa6\\x01\\x37\\x4b\\xa7\\x1c\\xb9\\xad\\x53\\x15\\xfa\\xd4\\x2d\\x3a\\xcf\\xc7\\xc1\\xd6\\x28\\x81\\x02\\x56\\xda\\xf7\\xd8\\xc3\\xc9\\xa2\\xe5\\xbd\\xcf\\xb7\\x70\\x08\\x2f\\xa6\\x38\\x16\\x89\\x58\\x52\\x3a\\x1c\\x3b\\x03\\x5d\\xbc\\x6d\\x5a\\xdf\\x26\\xdf\\x89\\xa7\\xcc\\xab\\xed\\x3e\\x7d\\xd3\\x77\\xc1\\x6d\\xa8\\x41\\xf1\\x3c\\x68\\x94\\xd4\\x3c\\xeb\\xb4\\xe3\\x90\\x22\\xf1\\xcc\\xec\\x22\\x74\\x44\\x5c\\x78\\xb3\\xad\\xc7\\xbb\\xf7\\x0d\\x89\\x0b\\x80\\x23\\x6c\\xc4\\x46\\x8f\\x95\\x69\\xc5\\x9a\\x7e\\x33\\xb5\\x70\\xe6\\x70\\x38\\x0d\\x24\\x4e\\x4e\\x31\\x0e\\x11\\xc3\\x92\\xf1\\xe3\\x34\\x05\\x4b\\x92\\xc8\\x38\\x6c\\x16\\x1c\\xe0\\x41\\x09\\xb0\\x37\\xbd\\x62\\x8d\\x91\\x9d\\xcb\\x62\\xda\\x14\\x35\\xbf\\x94\\xe8\\x8b\\x0a\\x88\\x46\\xd4\\x86\\xd1\\x67\\x78\\xf7\\xa3\\xb8\\x80\\xe6\\x60\\xf4\\x41\\xfd\\xf8\\x6e\\x56\\xb8\\xaa\\x06\\x61\\xf5\\x5a\\xae\\xce\\x27\\xf9\\xdd\\xaa\\x0e\\x2a\\x22\\xc2\\x15\\xb0\\x40\\x53\\x97\\x26\\xb9\\x85\\x39\\x15\\xa1\\x59\\x2d\\xff\\xea\\xe3\\x2d\\x7b\\x5b\\x67\\xeb\\x62\\x05\\xbb\\x0b\\xd7\\x27\\x9f\\x78\\x8d\\x5f\\x83\\x3c\\x40\\x66\\x78\\x0c\\xa0\\xa4\\x2d\\x3e\\x4e\\x1a\\xa2\\x2b\\xd0\\x6b\\xb5\\xee\\xd8\\x9b\\x94\\x13\\x77\\x1e\\xca\\xb6\\x44\\xca\\x72\\xd1\\x29\\x1d\\x00\\xf7\\x40\\x90\\x1a\\x73\\x11\\xdc\\x03\\x67\\x15\\xd2\\x3e\\xbd\\x9a\\x59\\x89\\x16\\x28\\xf0\\xd8\\x7e\\xd4\\x89\\x50\\x2f\\x06\\xd7\\x5b\\xbd\\x11\\xcd\\x16\\x02\\xa3\\x5e\\xe7\\xe1\\x33\\x35\\xd6\\xa1\\x44\\xb0\\x88\\x30\\xe6\\x69\\xc0\\x2e\\x65\\x2f\\x3f\\x10\\x0d\\x39\\x3e\\xf9\\xb4\\xac\\x05\\x32\\x14\\x39\\xbc\\xe6\\xce\\x36\\xff\\xc5\\xab\\xca\\x89\\x0b\\x87\\x96\\xcc\\xb5\\xe1\\x63\\x03\\x55\\x9c\\x5d\\x91\\x17\\xf0\\xf3\\x1d\"},\n{{0x70,0x09,0xed,0xd0,0x79,0x50,0x96,0xed,0xc4,0xfe,0xd5,0x5a,0x17,0xcc,0xf4,0x84,0x13,0x1e,0x60,0x8c,0x6d,0x5d,0x66,0x96,0xbf,0x33,0x76,0xe2,0x69,0x24,0x95,0x9b,},{0x77,0x57,0x4b,0xf0,0x69,0x52,0x71,0x45,0xe7,0x2d,0x3e,0x85,0xce,0x7d,0x4f,0xcd,0x67,0x1a,0x33,0xe0,0xa7,0x1e,0x6b,0xf0,0xda,0x7e,0xa4,0x71,0xdd,0x6e,0x86,0xa4,},{0xb7,0x01,0xb8,0xf9,0xa4,0x34,0xe0,0x6d,0x71,0x9a,0xd2,0x5d,0xcc,0x54,0x06,0x0c,0x79,0x86,0x64,0x7f,0x44,0xf3,0x88,0x4b,0xcb,0x6e,0x5e,0xe1,0xd7,0xa4,0x46,0xcc,0x26,0x5c,0xec,0x02,0x9b,0x53,0x7d,0xa7,0xf2,0x52,0x33,0x26,0x55,0x8a,0xc9,0xba,0x34,0xf4,0xcc,0x2a,0x97,0xcc,0xa3,0x45,0x2e,0x70,0x56,0x2e,0x7a,0x8f,0x55,0x04,},\"\\xb1\\x2c\\x12\\x47\\x05\\x39\\x54\\x7c\\x2d\\xe6\\xbc\\x4e\\xea\\xc7\\xb6\\x3e\\x50\\x8e\\xd7\\x10\\xf3\\x56\\x37\\xd9\\xfd\\xd2\\xdc\\xca\\x32\\x2a\\x7a\\x50\\x71\\xda\\xb2\\xb2\\x84\\x5e\\x30\\x79\\x28\\x06\\x03\\x5c\\x9f\\xcd\\xaf\\xe2\\x78\\x3e\\x3b\\x67\\x7d\\x6b\\xe5\\xaa\\xc7\\x0b\\x33\\x91\\x0a\\x2b\\x95\\xe8\\xb5\\xd5\\x9b\\xda\\x61\\x59\\x35\\xa4\\x17\\xb7\\xae\\x19\\xa7\\x85\\x37\\x74\\xe8\\x9a\\x12\\xaa\\x54\\x7b\\x41\\x92\\x97\\x9a\\x01\\xef\\x6e\\xf3\\x2a\\x40\\xde\\x79\\xd6\\x80\\x05\\x7a\\x83\\xa0\\x74\\x61\\x7c\\xa6\\x50\\x1f\\x59\\xe7\\x35\\x64\\x92\\x7c\\x38\\xb5\\x8c\\x19\\x58\\x5a\\x2c\\x03\\x65\\x9c\\x02\\x6e\\x4d\\xe3\\x80\\x6d\\x6c\\x1c\\xa8\\x95\\x8d\\xee\\x47\\xbc\\xb8\\x89\\xe7\\x6d\\x2c\\x3a\\x9a\\xb5\\xb8\\xb6\\xaf\\xb2\\xe8\\x42\\x29\\x80\\x56\\x56\\x7b\\xf9\\xb5\\x89\\x57\\x41\\x54\\x83\\x33\\x62\\x33\\xef\\x49\\x20\\xfa\\x57\\xf4\\x96\\xe1\\xf0\\x34\\x8c\\xca\\x20\\x36\\x64\\x96\\xfa\\xb3\\xa7\\x5b\\xf4\\x21\\x4e\\xce\\x47\\xa4\\x5f\\xea\\xa1\\x39\\x2d\\xb3\\xf2\\x54\\xd9\\x6a\\x7f\\x37\\x40\\x2c\\x98\\x11\\x14\\x0d\\x73\\x58\\xb4\\xef\\x8f\\x20\\xa2\\x98\\xee\\xef\\x90\\x4e\\x37\\xd6\\x8f\\x37\\x8d\\x33\\xcb\\x96\\xd0\\x0c\\x03\\x10\\x9f\\xc8\\x3f\\xd0\\x6a\\x87\\x6c\\x92\\x48\\x2f\\x61\\xab\\x79\\x14\\xeb\\x7c\\x2e\\x5e\\x84\\x06\\x6e\\x0e\\x91\\xe2\\x1e\\x42\\xe9\\xbe\\x23\\xdf\\x12\\xb5\\xc7\\x47\\x97\\x3c\\xb8\\x64\\x42\\xc3\\x22\\x91\\xd3\\xd1\\xae\\x71\\x9b\\x36\\xa6\\x2f\\xaf\\x3a\\xba\\xa2\\x05\\x3a\\x31\\x3f\\x62\\x5d\\x85\\xc5\\x1a\\x51\\x98\\x57\\x19\\x15\\xef\\x8a\\x2b\\x19\\x9b\\xa3\\x7d\\x25\\x88\\x45\\x75\\xba\\x1b\\x72\\x84\\x4c\\xab\\x43\\x28\\xb5\\x7f\\xab\\x1e\\xc9\\x74\\xee\\x8e\\xa1\\xdf\\x7c\\xa9\\xc7\\x8a\\x4d\\x3a\\x03\\xbc\\xb0\\xab\\x41\\x69\\xbf\\x06\\xa3\\xa4\\x38\\xd9\\x56\\x6c\\x6c\\x50\\x1d\\x8d\\x9c\\xcc\\xcb\\x1a\\xc2\\x6b\\x4d\\xa4\\xae\\x1a\\x9d\\x8e\\x8b\\x9d\\xf6\\x62\\x82\\x1a\\xd9\\x75\\xc9\\xb0\\x15\\xfe\\x26\\xf6\\x89\\x8d\\x22\\xab\\x91\\x2f\\x0e\\x40\\x5a\\x5b\\x27\\xcf\\xd3\\x9d\\x65\\x7d\\xcd\\x92\\xcd\\xeb\\xe6\\x79\\x19\\x02\\x71\\x34\\x84\\x40\\x6d\\xdd\\xce\\x71\\x18\\x87\\x31\\xe4\\x43\\x19\\x38\\x1a\\xf2\\x7d\\xaf\\x76\\x79\\x22\\x73\\xb8\\xc3\\x52\\x51\\xd1\\x1b\\x83\\x6a\\xfe\\x8b\\x3c\\xe9\\xb4\\x02\\x73\\xf6\\x91\\x5e\\xbe\\x6b\\xc9\\x5a\\x75\\xbb\\x94\\x1a\\x42\\x92\\x09\\x86\\x7f\\xba\\x87\\x64\\xbf\\x6c\\x40\\xdb\\x6e\\xec\\xb4\\xf2\\x17\\x47\\x83\\x7c\\xf6\\xae\\x7f\\xbf\\xe3\\x6d\\x50\\x23\\xdf\\x7f\\xce\\x2c\\x0c\\x3c\\x57\\xaf\\x28\\x98\\x88\\x53\\x13\\xc5\\xc4\\xbd\\xa3\\x5c\\x7d\\xa6\\xcb\\x29\\x93\\x2f\\xb1\\x99\\x1f\\x62\\xbb\\xb0\\x80\\xb3\\x2e\\x20\\x50\\x61\\x93\\x11\\xae\\x69\\xab\\xb3\\x02\\x2d\\x91\\x3f\\xa9\\xea\\xbd\\x5d\\x5c\\xb4\\xdc\\x54\\xd7\\x5d\\xca\\x63\\x8c\\xda\\x9a\\xf3\\x31\\xc0\\xcf\\x4d\\x20\\x07\\xb6\\xca\\x39\\xf6\\x55\\xa6\\x1c\\x01\\x03\\x9f\\x12\\xa4\\xb9\\x78\\x2b\\xc3\\x9a\\xec\\x4d\\x22\\xef\\x00\\x93\\x38\\x8d\\xd7\\xd5\\xb5\\x6d\\xfb\\x8a\\x7f\\x9d\\x86\\x69\\x00\\x4e\\x28\\x78\\xdd\\x8a\\x6d\\x76\\x85\\x7c\\x08\\x45\\x24\\x50\\x68\\xfe\\xe1\\xc5\\x31\\x96\\x31\\xe7\\x8d\\x37\\x85\\x16\\x5c\\x70\\xaf\\xd6\\x52\\x99\\x30\\x13\\x78\\x55\\x1e\\xbf\\x61\\x35\\x84\\xc6\\xa7\\x62\\x0a\\x0e\\x3b\\x67\\x79\\xf3\\x8c\\x09\\x40\\x06\\x24\\x97\\x00\\x8e\\xb2\\x33\\x87\\x08\\x68\\xc2\\x1c\\xcc\\xac\\x23\\x95\\x01\\xb6\\x3b\\x74\\x9a\\x85\\x60\\x2c\\x28\\xa0\\x95\\xca\\xfc\\x74\\x9b\\x05\\x11\\xa6\\xc8\\x78\\xed\\xb3\\xb7\\x80\\xea\\x17\\x4d\\x07\\xb1\\x21\\xe3\\x15\\xa8\\x26\\xdd\\xa6\\xec\\x8d\\xc5\\x43\\x63\\xe2\\xcd\\x2e\\x63\\x05\\xa1\\x94\\x82\\x5c\\x0e\\xa9\\x0e\\xfd\\x7a\\x9f\\xd8\\x9c\\xd9\\x7b\\x99\\xc4\\x30\\x0b\\xd3\\xbf\\x93\\x53\\xd8\\x2f\\xbc\\xce\\xea\\x71\\xb4\\xee\\x3f\\x1a\\xae\\x95\\x39\\xb4\\xcc\\xe9\\x0c\\xa4\\x77\\x59\\x7c\\x17\\x4e\\xf2\\x0f\\x4b\\x9f\\x4e\\x62\\xd0\\x9a\\x57\\x0d\\x31\\x35\\xaa\\xbe\\xe9\\x55\\x1f\\xa6\\x09\\x83\\x95\\x8c\\x0b\\x7b\\x8c\\x37\\x44\\x55\\x3e\\xe1\\x4e\\x7f\\x3c\\xd1\\x03\\xa1\\x92\\x51\\xc9\\x9b\\xf6\\x38\\x4a\\xbb\\x60\\xa7\\x6a\\xfc\\x66\\x58\\xb8\\x0d\\xfc\\x51\\x10\\xad\\xc4\\xc7\\x32\\xfe\\x0e\\xe3\\x29\\x33\\xfb\\x28\\x48\\x28\\xe0\\x08\\x88\\x7a\\xef\\x80\\xf6\\xf8\\x13\\x34\\x04\\x46\\xc0\\x21\\x7c\\x12\\xee\"},\n{{0x12,0xfe,0x8e,0x5c,0xe2,0x0c,0xaf,0xaa,0x32,0x79,0xda,0x7b,0x34,0xaa,0x87,0x75,0x2e,0xad,0x67,0x9f,0x15,0x61,0x28,0xaa,0xef,0xb4,0xaf,0xa5,0xdb,0x4f,0x2a,0x6f,},{0xe7,0x7f,0x44,0x20,0x6b,0xb0,0xc4,0xc5,0x9a,0x28,0x70,0xcf,0xc2,0xec,0xac,0x63,0x36,0x2d,0xee,0xcb,0xe8,0x11,0x5d,0xe5,0xcb,0x1a,0xfc,0x2d,0x9a,0x3d,0x47,0xf1,},{0x04,0xea,0xf9,0x00,0x96,0x6e,0x09,0x92,0xd3,0x6e,0x3c,0x22,0x0a,0x4b,0xd4,0xd8,0x2b,0xcc,0x6e,0xb9,0x98,0xed,0x05,0x1d,0xbc,0xb9,0x16,0x0b,0xcd,0x35,0x74,0x09,0x73,0x6b,0xcf,0xf7,0xe6,0x63,0x0e,0x96,0xf5,0x53,0x8a,0xec,0xa6,0xab,0x8b,0x0d,0x0b,0xd8,0x2c,0x0c,0xd7,0xc4,0x54,0x99,0x17,0xfe,0xbb,0x9c,0xba,0xda,0x08,0x0c,},\"\\x6b\\x80\\xcc\\x6f\\xbb\\xd3\\x32\\xf8\\xc6\\x19\\x7c\\xdf\\x2e\\x6d\\xc1\\x9a\\x21\\x30\\xfa\\xa2\\xec\\x93\\x8e\\xf5\\x58\\xb8\\x84\\xba\\x4f\\xa5\\xe1\\x13\\xe5\\xb3\\xe4\\xb1\\xaa\\xf5\\x1b\\x69\\x5f\\x13\\xef\\xfe\\x13\\xf7\\x7d\\x39\\xca\\xb3\\xc0\\x7d\\x04\\xd6\\x6d\\x43\\x0d\\x99\\x74\\xb1\\xda\\x3d\\x39\\xdf\\x12\\x78\\xc0\\x0d\\x6b\\xcb\\xfd\\x4b\\xae\\x75\\xb8\\xc0\\x76\\x40\\x4d\\xbb\\xb8\\x34\\x48\\xfb\\x49\\x3d\\xf6\\x70\\x00\\xf9\\x7d\\x24\\x7e\\x8f\\x23\\xdc\\x08\\x1f\\xce\\x99\\x2b\\x65\\xa2\\x1b\\x35\\xd7\\xbd\\x7f\\xa7\\xdc\\xcc\\x54\\xa5\\x60\\xaf\\xd1\\x4b\\x1e\\xc4\\x36\\xc1\\x09\\x46\\xf6\\xaa\\x59\\xea\\xe1\\xbe\\x3e\\xcf\\x31\\x1d\\xef\\x51\\xe4\\x6b\\x6b\\x4d\\x1d\\x08\\x0d\\x17\\x84\\xb2\\x33\\x4b\\x80\\xcf\\xba\\x72\\xcd\\x93\\x1f\\x55\\xec\\xd2\\x98\\xb0\\x5d\\xc8\\x36\\xab\\x12\\xd0\\xad\\x8b\\x5d\\x6e\\x9b\\x1e\\x3c\\xea\\x3d\\x84\\x33\\x68\\xee\\xf1\\x9f\\x5c\\x14\\xc6\\xbb\\xad\\x94\\x14\\xcc\\x7a\\x4d\\xb6\\xa7\\x26\\xe4\\xfc\\xae\\xd4\\x44\\x40\\xa0\\x19\\xfe\\x12\\xa6\\x05\\x73\\x40\\x3c\\x0e\\x66\\x2d\\xc9\\x02\\xd1\\xc8\\x73\\xff\\x30\\xc9\\x31\\xba\\x7e\\x43\\xa3\\xb3\\xbf\\x71\\xd5\\xb0\\x94\\xea\\x50\\x49\\x71\\x64\\x7c\\xa9\\x43\\x56\\xf0\\xa5\\x3e\\x44\\x4b\\x4c\\x00\\x8e\\xe5\\x97\\x72\\x04\\x22\\x1b\\x40\\x0d\\xee\\xc3\\x7f\\xc2\\x73\\x45\\x25\\x45\\xf8\\xf2\\x18\\xbe\\x98\\x87\\x25\\xbc\\x38\\xc8\\x5d\\xf2\\x12\\xea\\x73\\xdc\\x0b\\xc7\\xcb\\xba\\xc9\\x07\\x98\\x2f\\xef\\xad\\x68\\x0f\\xbd\\x97\\x5c\\x20\\x93\\xa7\\xfe\\x8e\\x6b\\x37\\xc1\\xcc\\xed\\x87\\xf8\\x1d\\xaa\\x57\\x29\\x1a\\x5a\\x18\\x47\\x6d\\x11\\xa1\\x8e\\xc4\\xb5\\xcb\\xce\\x5d\\x55\\xac\\x9b\\x62\\x4b\\x04\\x84\\x30\\xf2\\x54\\xf6\\x71\\x07\\x85\\x06\\xe6\\x98\\x9d\\xf7\\xc0\\x92\\x56\\x52\\x50\\x39\\x08\\x5a\\xb7\\xc1\\x30\\xc2\\x40\\x00\\x4a\\xbb\\xb3\\xaf\\x6b\\x48\\x1c\\xc1\\xa0\\x61\\x7e\\x57\\xe3\\x88\\xee\\x4b\\x1f\\x05\\x2f\\x34\\xa0\\x03\\xfe\\x6b\\xb2\\x02\\xcb\\x87\\xd2\\x74\\x1b\\xd8\\xe3\\x45\\x4c\\xa7\\x3d\\x2f\\x61\\x20\\x11\\xec\\xc7\\x4d\\x88\\x34\\x35\\x10\\xa6\\x3c\\x93\\x13\\xdd\\xc3\\x6c\\x25\\xd3\\xfb\\x03\\xe1\\x88\\xf5\\x60\\xbd\\x02\\x9c\\x80\\x15\\x85\\xce\\x55\\x29\\x88\\xdc\\x55\\xb7\\xd8\\x52\\x2a\\x33\\x96\\xc0\\x1d\\x5e\\x71\\x5a\\xe2\\x6c\\x62\\x2c\\x64\\xfe\\xd5\\xb9\\x8e\\x9c\\x55\\x9e\\x4a\\xa7\\x8d\\x1e\\xd3\\xb7\\xb8\\x90\\xd4\\x77\\xec\\x8c\\x50\\xa0\\xff\\x10\\x7a\\x3f\\x83\\xb0\\x7b\\xd3\\x5e\\x9c\\xe9\\xa0\\x8b\\xcf\\xc0\\xf1\\x68\\xee\\xc7\\xaa\\x31\\x1f\\x71\\xc6\\x6a\\x71\\xce\\xb9\\xd5\\xa2\\x19\\x9a\\x14\\xbe\\x36\\x86\\x5c\\xa8\\xd0\\x7e\\x18\\x6b\\x13\\x92\\xb9\\x29\\x0c\\x57\\x80\\x04\\xd5\\x84\\xf1\\x91\\xc8\\x2a\\x53\\xd8\\x50\\x89\\x0b\\xcc\\x0d\\x12\\xdf\\xf8\\x40\\xe0\\x43\\xdd\\xdc\\x2e\\x67\\x0c\\x83\\x60\\x20\\x92\\x4f\\x58\\xc0\\x44\\xb2\\x18\\x76\\x3c\\xa6\\x19\\x82\\xbc\\x33\\x2d\\x24\\x7b\\x2a\\x00\\x8a\\xb5\\x70\\xb6\\x56\\x5a\\x06\\x89\\x2a\\x26\\xcf\\xb0\\x85\\x3d\\x79\\xda\\x28\\xef\\x8b\\x91\\x0a\\x93\\x29\\x54\\x4b\\x79\\x2a\\xe4\\x45\\x6b\\xa7\\x76\\x50\\x66\\xb9\\xd1\\xb4\\xa3\\x00\\x21\\x04\\x48\\x66\\x0a\\xe4\\x8b\\x50\\x44\\x41\\x01\\x7c\\xdd\\xd1\\xf6\\xf0\\x09\\x38\\xb1\\x07\\x2c\\x8a\\xb8\\x24\\xad\\xfe\\x8a\\xe3\\x49\\x23\\xc8\\x2e\\xec\\x75\\x4b\\xee\\x1a\\x65\\x50\\xab\\x1d\\x3d\\xa0\\x86\\xe3\\xae\\xbb\\xf2\\x11\\x69\\xc4\\x44\\x69\\xe0\\x3b\\xba\\xe0\\xd7\\x2c\\xe8\\x63\\x45\\x77\\x84\\xcf\\xe1\\xdf\\xc2\\x76\\xf1\\xaf\\xad\\x9e\\xe5\\x3e\\xba\\xb5\\xa3\\xc6\\x57\\x2e\\xb1\\xca\\xe0\\x99\\xa4\\xa5\\xfe\\x19\\x31\\x92\\x90\\xe6\\xa1\\xb8\\xb0\\xe7\\x54\\x1e\\xd7\\x35\\xb3\\xf2\\x1b\\x1e\\x2c\\x75\\x09\\xf8\\x7f\\xd1\\xfe\\xd0\\x00\\x07\\x47\\x9b\\x3c\\x1b\\xb7\\x84\\x32\\x46\\x63\\x02\\xd2\\x46\\xd8\\xd0\\x31\\x99\\x63\\x07\\x26\\x0a\\x0c\\x41\\xa0\\xe3\\xec\\xd1\\xe7\\xfd\\x83\\x4d\\xac\\x11\\xa1\\x3e\\xb0\\x36\\xb3\\x9c\\x36\\x99\\x66\\xfd\\xef\\x39\\x4c\\x18\\x3e\\x54\\xe7\\xb0\\xcb\\x3d\\x0c\\xeb\\x19\\x8b\\xd0\\xe6\\x6c\\x00\\xd3\\x8d\\xb7\\x03\\xaa\\xce\\x30\\xcb\\xbd\\xab\\x36\\x9d\\xfd\\x1d\\x9e\\x51\\x4d\\x09\\x68\\xf1\\x00\\xc9\\xf0\\x7c\\x31\\x50\\x89\\xad\\xb3\\xad\\x02\\xe5\\x9c\\x04\\xb9\\xbe\\x46\\xe9\\x9f\\xbf\\x5a\\x62\\xc6\\xbb\\xec\\xdf\\xf5\\xb3\\x81\\xe5\\x51\\x27\\x82\\x4d\\xdb\\x18\"},\n{{0xee,0x9b,0x6c,0x2e,0x0c,0x9b,0x01,0x47,0x2c,0xe3,0x2d,0x54,0xd1,0x76,0x2a,0xb0,0x30,0x33,0x17,0xd7,0x6d,0x3a,0xa7,0x8f,0x5e,0x08,0xa9,0x02,0x4c,0xa1,0xe0,0x83,},{0x01,0x6d,0xf0,0xf7,0x17,0xbc,0xb7,0xad,0xf6,0x26,0x95,0x8d,0x83,0xbf,0x8a,0xa3,0x25,0xc7,0x05,0x18,0xc6,0x8b,0xc7,0xef,0xd8,0x42,0x53,0xb7,0x5d,0xb0,0x87,0x88,},{0x4b,0x00,0x1d,0x96,0x42,0x83,0x5d,0x72,0x13,0x8d,0x68,0x01,0x98,0xe6,0xaf,0x70,0xb5,0xde,0x7a,0xf0,0x15,0x13,0x1e,0xa7,0x26,0xf4,0xe5,0x1b,0x5e,0x8b,0x6d,0x48,0xc2,0xa6,0xca,0x8e,0x87,0x09,0xcc,0x82,0x22,0xa5,0x04,0x7c,0x09,0xa6,0x6e,0x51,0x8a,0xc5,0xe8,0xb6,0xe5,0x35,0x48,0x94,0x82,0x61,0xf0,0x70,0x1f,0x68,0x73,0x08,},\"\\x77\\x2c\\xc2\\x5c\\x3b\\x69\\xbb\\x3f\\xf5\\x65\\x56\\x64\\xef\\xa4\\x78\\xac\\x41\\x4a\\xdf\\xae\\xa7\\x0a\\xc4\\xa2\\xa8\\x87\\xed\\x39\\x68\\xc5\\x4d\\x34\\xdb\\xf1\\xbe\\x32\\xcc\\x9a\\x9b\\x54\\x20\\xa4\\xad\\x3c\\x9a\\x87\\x7b\\xc8\\xcc\\xec\\x94\\xad\\x47\\x3a\\xa7\\xa3\\xc7\\xde\\x08\\xa0\\xfd\\xb5\\xed\\x1e\\x89\\x87\\x2b\\xe7\\x81\\x70\\xbe\\x22\\x1d\\x27\\x97\\x76\\xbb\\xc6\\xed\\x9c\\x5a\\x67\\x16\\x89\\x80\\xd5\\xea\\xf8\\x95\\xe1\\x34\\x0f\\x5d\\xfa\\xa3\\xdf\\x62\\x2d\\x65\\x44\\xb3\\x99\\xd7\\x49\\x45\\xfd\\x13\\xbb\\x11\\x73\\x62\\x1e\\x05\\x61\\x51\\x46\\x40\\x13\\x7a\\xa7\\xbc\\x9c\\xb7\\xde\\xbe\\xff\\x2c\\x62\\x69\\x77\\xd4\\x47\\x26\\x3b\\x7e\\x57\\xd4\\x3d\\x69\\xef\\xb2\\x30\\xcd\\x25\\x86\\x5e\\x4d\\x92\\x48\\x28\\xf5\\xe3\\x6f\\x96\\x4e\\x40\\x3e\\x34\\x93\\xf3\\x0d\\x6d\\xfe\\xa6\\xca\\x3b\\x78\\x10\\x75\\xb5\\xe3\\xb2\\x5c\\x05\\xac\\x50\\xe5\\x55\\xf1\\x5b\\xa1\\x2b\\x0e\\x05\\x9b\\xff\\x99\\x64\\x84\\x12\\x9d\\xb6\\xea\\xfd\\x88\\x99\\x3d\\x6f\\x0b\\x7e\\xcd\\x15\\xdc\\xe2\\xfc\\x99\\xf8\\xb8\\xe4\\x35\\x16\\x35\\x2d\\xdb\\x46\\x1a\\x04\\xb9\\xff\\x34\\x86\\x45\\x2e\\x6a\\xa6\\xa5\\x4b\\x2d\\x10\\x62\\xa7\\x71\\x42\\x50\\xcd\\x2a\\x88\\xff\\x6c\\x4c\\x17\\xb6\\xcc\\x66\\x52\\xd8\\xc5\\xac\\x27\\xd4\\x44\\x3a\\xeb\\xf3\\xd5\\xfb\\xaa\\xee\\x45\\x21\\xec\\x76\\xf0\\x41\\x3d\\xb6\\x44\\x21\\xec\\x8d\\x69\\x49\\x62\\x67\\x25\\xfe\\x56\\x16\\x0a\\xb3\\x07\\xc0\\xe7\\x39\\x06\\xc4\\x51\\x55\\xef\\xab\\xb4\\x72\\x22\\x02\\x1f\\x22\\x0d\\x32\\xbd\\x3d\\xb0\\x71\\x2a\\xbd\\xe2\\x59\\x9e\\xa4\\xff\\x79\\x97\\x17\\x81\\x1d\\xcd\\xf8\\x18\\x2d\\xf6\\x71\\x6d\\x2a\\x03\\x8a\\xee\\x15\\xd7\\x78\\xda\\x55\\xac\\x20\\xf0\\x1f\\x25\\x30\\x9c\\xea\\xd5\\xb5\\xb7\\xb2\\x23\\x22\\xe1\\x82\\x8e\\xa7\\xc9\\x1a\\xe6\\x66\\xf2\\xdc\\xd6\\x84\\x07\\x31\\x48\\xe3\\x1b\\xb2\\x24\\x7d\\x5f\\x93\\x50\\x6e\\xa8\\x08\\x52\\x27\\xad\\xc9\\xae\\x19\\x82\\xe9\\x50\\xf0\\x06\\xa9\\xda\\x15\\x8b\\x9c\\xec\\xff\\x89\\x29\\x76\\x1c\\x84\\xf9\\xd9\\x76\\xfd\\xcd\\x31\\x7f\\xfe\\xd3\\x6c\\xbf\\x6a\\xcd\\xa3\\xe5\\x0c\\x9b\\x73\\xbd\\x2c\\x80\\x85\\x40\\x9d\\x11\\x9b\\x64\\xce\\xd7\\x34\\x9a\\x26\\x74\\x26\\x2a\\x83\\x2b\\xec\\xb0\\x3c\\x2e\\xdc\\xca\\xc0\\xec\\x54\\x12\\x4e\\x82\\xf8\\x10\\x18\\x17\\x92\\xda\\x49\\xea\\x10\\xbd\\x94\\x1f\\x98\\x95\\xa0\\x69\\x59\\xfd\\xe0\\xd3\\xb0\\xae\\x84\\xc3\\x9d\\xf0\\x53\\x90\\xab\\x33\\xc3\\x6c\\x79\\xca\\x22\\xe6\\x59\\x4d\\x7f\\xc6\\xe3\\xf8\\x69\\x22\\xd7\\x8e\\xb7\\xf5\\xc2\\x54\\x95\\xd8\\x22\\xa3\\xb4\\x10\\x51\\xb2\\x4e\\x57\\xa7\\x6f\\xcf\\xc1\\x65\\xcd\\xe6\\xd0\\x96\\xcc\\x7b\\x7e\\x9d\\x05\\x5f\\xe8\\x64\\xd5\\x29\\x42\\xd6\\x29\\xa8\\xac\\x26\\x1b\\xe1\\xdc\\xd3\\xa2\\x1f\\x89\\x5f\\x49\\xb6\\x7e\\xe4\\x7e\\xab\\x7c\\xf1\\x64\\x4d\\x57\\x1d\\x5f\\xf3\\x8c\\x17\\x9f\\x5c\\x6a\\x54\\xa3\\x61\\x2f\\xb3\\x47\\x53\\x41\\x2a\\x1b\\x95\\xbf\\x62\\xff\\x31\\x79\\x80\\x4f\\xfb\\xb9\\x90\\x51\\xf2\\xb0\\x80\\x56\\x3a\\x4a\\xe0\\xf2\\x7c\\xf9\\x96\\xea\\x8b\\xe3\\xba\\xe0\\xa4\\x33\\x9d\\xcc\\xdf\\xf6\\xb6\\x67\\x15\\x59\\x26\\x6e\\xaf\\xf4\\xef\\xf6\\x82\\xb8\\xde\\xe8\\x9c\\x9d\\x2d\\x45\\xac\\xdb\\xec\\x4a\\xa6\\xce\\xcd\\xbd\\xb1\\xd2\\x84\\x60\\x9e\\x65\\xef\\xb7\\x7b\\xb8\\xf1\\xa5\\x1f\\xc4\\xd4\\x56\\x8a\\x70\\x5f\\xb9\\xc9\\x7b\\x23\\x03\\xc1\\x46\\x7d\\xff\\x8c\\x8c\\x5e\\xe2\\x75\\x59\\xb9\\x3a\\xd1\\xc5\\xb9\\xc5\\xc6\\xc7\\xc5\\x29\\xfa\\x8c\\x55\\xc7\\x5e\\xbb\\x59\\xb2\\xa8\\x18\\xaa\\x9b\\xda\\x1e\\x9e\\x79\\xbc\\x66\\x02\\x97\\x72\\xf8\\xae\\xa1\\x1b\\xad\\xd3\\x22\\x65\\x65\\xd5\\x4f\\xd0\\x1b\\xda\\x8c\\xb2\\x70\\xe7\\x0d\\xc9\\x33\\x9b\\x46\\x90\\x0b\\x58\\x18\\xe9\\x32\\x07\\x5b\\xe6\\xc2\\x8e\\x73\\xa1\\x91\\xd0\\x2c\\xbd\\xc7\\x45\\x4b\\xe1\\x23\\x87\\xb0\\xd4\\x7a\\x1a\\xb1\\x42\\x32\\xd2\\x34\\x2a\\x6f\\x15\\x18\\xea\\x97\\x09\\x8b\\x81\\x5a\\x1c\\xa3\\xf9\\xc7\\x0b\\x25\\x72\\x2b\\x1b\\xcd\\x7d\\xac\\xda\\x63\\x56\\x22\\xfc\\x8e\\x72\\x95\\x9f\\x57\\xf7\\x67\\xea\\x56\\x3d\\xa4\\xc1\\x58\\xee\\xf7\\x20\\x01\\x09\\xf6\\x14\\x16\\xc2\\xe7\\x04\\x39\\x92\\x30\\x62\\x43\\x7b\\x1d\\x08\\x2a\\x8c\\x7f\\x43\\x94\\x71\\x3c\\x1b\\x7b\\xa0\\x58\\x7b\\x84\\x1c\\x11\\x44\\x75\\xee\\x3f\\xf0\\x59\\xdf\\x8c\\xfa\\x12\\xa3\\x21\\xd9\\x01\\xcb\\x47\\xf5\"},\n{{0xa3,0xd2,0x35,0x05,0xd0,0x7c,0x5f,0x93,0x7f,0x13,0x63,0x9d,0xbd,0x81,0x8e,0x85,0x14,0x52,0x34,0xee,0x70,0x17,0xec,0xee,0x86,0x36,0xc7,0xba,0x76,0xeb,0xef,0x5b,},{0xfd,0x7f,0xdb,0x3d,0x02,0x2b,0xa3,0x6e,0xad,0xfe,0xd0,0xda,0xaa,0xe5,0xbf,0xf0,0x45,0x05,0x40,0x3f,0x17,0x14,0x73,0xe4,0xd3,0x61,0xee,0x8d,0x15,0x0a,0x0e,0xb4,},{0x67,0xa6,0x67,0xee,0x0d,0x62,0x54,0xca,0x0a,0x8f,0x21,0x25,0x82,0xc0,0xcb,0x8b,0x6e,0xd9,0x7c,0xc9,0x67,0xdb,0x02,0x12,0x96,0xad,0x6a,0xa9,0x9f,0x0a,0xd3,0xa9,0x44,0x97,0x8c,0xfd,0xaf,0xf1,0x3f,0xe5,0xf8,0xc6,0xe8,0x8c,0xbd,0x83,0x1a,0x54,0x73,0xd0,0x74,0x2e,0x37,0x34,0xb3,0xe2,0xdf,0x00,0xff,0x32,0x40,0xa5,0xde,0x02,},\"\\xbc\\x29\\x8e\\xd6\\x98\\x92\\x90\\x40\\x28\\x72\\x5e\\x21\\xb1\\x14\\x46\\x2d\\x89\\xd8\\xc0\\x06\\xdc\\x88\\x4b\\x17\\x87\\x56\\x83\\x8a\\xf4\\x95\\x4f\\xf0\\xf1\\xb7\\x95\\x17\\x30\\x7a\\x25\\x8a\\x0e\\x76\\x81\\xe8\\x79\\xac\\x47\\xd7\\x92\\x02\\x30\\xb0\\xcc\\x1d\\x66\\x17\\x1e\\xb2\\x14\\xd7\\x7c\\xd9\\x7f\\x61\\x7c\\x40\\x5e\\x6c\\x21\\x72\\xfc\\x58\\x9f\\x16\\x25\\xcc\\x5e\\x1b\\x59\\x31\\x10\\x53\\x1f\\x6e\\xb5\\x3f\\x1e\\x6f\\x48\\x6d\\x19\\x64\\x61\\x24\\x47\\x75\\x0a\\x04\\x1f\\xe5\\x1b\\x33\\x2e\\xb3\\xfb\\xc7\\x11\\x61\\x6c\\xe3\\x5f\\x04\\x04\\x42\\xb4\\x31\\x63\\xb8\\x0b\\x75\\x1e\\x21\\xec\\x12\\x45\\xf1\\x2e\\x48\\x83\\xc7\\x9d\\x3b\\x41\\x32\\x82\\xc6\\x9b\\xfc\\x6a\\x46\\x5d\\x1e\\x78\\x96\\xba\\xb0\\x38\\xdc\\x89\\xb4\\xcf\\xc0\\x32\\xfc\\xcd\\xfc\\x87\\xb0\\x7f\\x06\\x11\\x0e\\x1f\\x50\\x6a\\xcc\\xa8\\x15\\x7a\\x32\\x25\\x43\\xbf\\x1e\\xd8\\x90\\x67\\x27\\xf2\\x8d\\x0d\\x68\\x9b\\xcd\\x7d\\xd3\\xdf\\x85\\x93\\x52\\x04\\xa9\\x04\\xab\\x3f\\x7a\\x0d\\x99\\xc1\\x6e\\x5a\\x54\\x2c\\xc2\\xbc\\xde\\xbf\\x5b\\x50\\x2d\\xba\\xbe\\x33\\xb9\\x72\\x48\\x0e\\x02\\xe7\\x1a\\x43\\x8a\\x19\\x80\\xa8\\x76\\x6f\\x10\\x8b\\xd8\\xad\\x51\\x10\\x42\\x23\\x99\\x4d\\x9b\\xfb\\x3c\\x3a\\x4b\\x7a\\x59\\x23\\x8c\\xe2\\xef\\x7d\\x72\\x88\\x38\\x3f\\xfb\\xf2\\x91\\xe1\\x60\\x2b\\x38\\x4a\\xf6\\x07\\x00\\xd7\\xda\\xf0\\xe8\\xfe\\x60\\xf8\\xca\\xed\\xe4\\x3d\\xb0\\x6b\\x3f\\x4c\\x8c\\xff\\xf7\\x49\\xae\\xaf\\xa4\\x6f\\xc6\\x1c\\x49\\xb2\\xd5\\xa4\\x12\\x04\\xcf\\x86\\xf0\\x49\\x25\\x4d\\x80\\x9e\\x94\\x98\\xaa\\x9d\\x4c\\xfd\\xb9\\x4a\\xcb\\x2b\\xab\\xfc\\xf7\\x86\\xdd\\xfb\\x03\\x69\\x15\\x16\\xb3\\x83\\x8b\\x0d\\x4f\\x20\\x1c\\xb2\\x59\\x1e\\xdb\\xb0\\xb0\\xf6\\x74\\xe1\\xe2\\x82\\x03\\x16\\xb7\\x2e\\x81\\xb4\\x8c\\xc5\\xa6\\xb2\\x93\\x38\\xbc\\x36\\x68\\x1f\\x8f\\x7d\\xca\\x43\\xee\\x6c\\x0b\\xd2\\xe4\\x02\\xaf\\xbf\\x96\\x77\\x97\\x51\\x64\\x53\\xbc\\x01\\xbe\\x86\\xbf\\x42\\x29\\x9d\\x1b\\x73\\x6a\\x0d\\x97\\xbb\\xc9\\x22\\xf5\\xa7\\x8a\\xf2\\xdf\\x42\\xe6\\xf8\\xc2\\x8e\\x95\\x3f\\x2c\\xea\\xda\\xff\\xc5\\xe9\\x30\\x64\\x04\\x1e\\x42\\x5a\\xd6\\x97\\x5f\\x88\\xc7\\xaa\\xdf\\x81\\xc3\\x68\\x69\\x1a\\x58\\x1e\\x88\\x5f\\x2a\\x6b\\xa7\\x2e\\xd6\\x8b\\x8f\\xef\\xbc\\xd6\\xce\\x36\\x86\\x26\\xd4\\x48\\x92\\xa2\\x02\\x70\\xb5\\xf7\\x09\\xc2\\xe3\\x4b\\x83\\x35\\xd4\\x2e\\xeb\\xd6\\x7a\\x24\\xdf\\x73\\xf4\\x54\\x55\\xc4\\x19\\x44\\x18\\x7b\\x66\\x92\\xf0\\x54\\xb2\\xfc\\x95\\x91\\x37\\x3f\\x19\\xfc\\x71\\xaa\\x7f\\xa2\\x7d\\xf6\\x00\\x6a\\x1d\\x54\\x9b\\xbf\\xae\\x7d\\x3c\\x3e\\xb3\\x6e\\x5a\\xb2\\xaa\\xa1\\x0a\\xa5\\x53\\x8d\\xa7\\xef\\x36\\xc8\\xff\\x35\\x4b\\x60\\x58\\x13\\x40\\x04\\xd6\\x60\\xa4\\x03\\x63\\x21\\xca\\xad\\x00\\xa3\\x0b\\x1c\\x49\\x8b\\xa3\\xd8\\x08\\xc4\\x40\\x5e\\xf7\\x96\\x18\\xfc\\x22\\x12\\xa7\\xb8\\x33\\x96\\xa3\\xd7\\xce\\xdc\\xeb\\x86\\x3c\\x66\\x37\\x4d\\xc4\\x69\\xae\\x18\\x3c\\x7e\\xd7\\x4b\\x3e\\x70\\xd6\\x37\\x4a\\x06\\x2d\\xe0\\x37\\x9b\\x21\\xcf\\x25\\xd3\\xc4\\xc5\\x76\\x21\\x15\\xcd\\xfe\\x75\\x55\\x45\\xe8\\x9a\\xd4\\x05\\x2b\\xb0\\x27\\x9d\\x93\\x8e\\x90\\xde\\x3a\\xbf\\x50\\x44\\x10\\xca\\xad\\x72\\xb7\\xc2\\x9f\\x53\\xd0\\x1d\\x9d\\xd7\\xf2\\xec\\x5e\\x45\\x9a\\x04\\x59\\x2b\\xdd\\x66\\x41\\x66\\x13\\xe6\\xed\\xd0\\x04\\x56\\x9e\\x0e\\x6c\\x98\\x82\\x7b\\x8c\\x1d\\x70\\x02\\xa6\\xd1\\xbf\\x30\\x3e\\x18\\x25\\x95\\x01\\xdd\\x89\\xf6\\xee\\x94\\x76\\x6d\\x18\\xaf\\x81\\x04\\x63\\xeb\\x13\\xb2\\xef\\xdd\\xf1\\x72\\x3a\\xf7\\x35\\xa8\\x87\\x16\\xe1\\xfc\\xb4\\xb7\\xb4\\x3c\\xb9\\x7e\\x1c\\xc9\\x03\\xb2\\x40\\x8e\\xf4\\x53\\xad\\xa4\\x16\\x47\\x86\\xf0\\x08\\x45\\xfb\\xfa\\x1f\\xfc\\xa5\\xcc\\x3e\\x1c\\x4b\\xd9\\x94\\x0e\\x7d\\x99\\xae\\xf9\\x19\\x16\\x6d\\x05\\x8b\\x51\\x45\\x3c\\x9c\\x14\\xfb\\x9f\\x32\\x51\\xec\\x5f\\xe4\\xf1\\x53\\xc7\\x0a\\x44\\x92\\xdc\\x34\\x96\\x29\\x61\\x86\\xf2\\x3a\\xd4\\x7e\\xba\\xd1\\x3c\\x66\\xe6\\x87\\x27\\xce\\x50\\xba\\x94\\x87\\xf1\\x80\\x18\\x90\\xb6\\x93\\xef\\xeb\\xfc\\x37\\xbb\\x5d\\x95\\xf8\\xaf\\x54\\x8e\\xc8\\xd6\\x49\\x82\\x89\\xe5\\x5f\\x98\\x83\\xfc\\x5b\\xe8\\x4c\\x25\\x6d\\x2b\\xc5\\x48\\x49\\x38\\xc7\\x09\\x82\\x0d\\x9b\\x6b\\x80\\x59\\xc0\\xaa\\x42\\x67\\xdd\\xe6\\x90\\x78\\xe4\\x87\\xc8\\x86\\x5c\\x0b\\x13\\x0a\\x0c\\xa8\\xca\"},\n{{0x6e,0x26,0x51,0x05,0xee,0x71,0x71,0xd1,0xbd,0x79,0x3e,0xff,0xd8,0x7d,0x1e,0x2c,0x79,0x45,0x0d,0x5e,0x18,0x8b,0x57,0xbe,0x3a,0xa1,0x62,0xe2,0xa5,0x25,0x28,0xad,},{0x1f,0x40,0x3c,0x7a,0x75,0x50,0x31,0xc1,0x3c,0xa6,0x3a,0xf5,0x76,0x35,0xdc,0x6e,0x2c,0x4f,0x23,0xbd,0x6b,0x1d,0x67,0xca,0x65,0xda,0x68,0xb0,0x99,0x43,0xc5,0x54,},{0xb5,0xa8,0x3a,0x11,0x7a,0x60,0x34,0x5a,0x67,0xe4,0xa6,0x65,0xf3,0x7d,0xe7,0x22,0xa6,0xec,0x03,0x91,0x38,0x29,0x38,0x99,0x59,0xf3,0x76,0xee,0x62,0x64,0x77,0xe6,0x54,0xac,0x8d,0x72,0x0f,0xc7,0x27,0xd4,0xbb,0x8f,0xe1,0x54,0x4f,0x5d,0x0b,0x0b,0x85,0x05,0x14,0x29,0x0b,0x24,0x27,0x3c,0x4c,0xd4,0xb7,0x3a,0xca,0x4a,0x53,0x00,},\"\\xf8\\xb9\\xd4\\xb0\\x27\\xeb\\xb1\\x0e\\xe5\\x11\\x81\\x9e\\x6e\\x56\\xfb\\x1b\\xa9\\x58\\x40\\x18\\x41\\x8d\\x82\\x88\\x5a\\x38\\xa4\\x49\\x08\\x60\\x07\\xb8\\x78\\x5b\\x51\\x05\\xca\\xf7\\x82\\xbf\\x9b\\x36\\xda\\x03\\x9c\\xc6\\x0e\\x22\\x7c\\x7e\\x16\\x14\\xf2\\x9b\\x64\\x0b\\x1e\\x9b\\x22\\x74\\x7e\\xea\\x7a\\x67\\x25\\x61\\x4e\\x89\\xe0\\x78\\x3e\\xbe\\xbb\\xb7\\xee\\x55\\x7e\\xf3\\x6b\\x2b\\x46\\xcf\\x64\\x61\\xe5\\xbe\\x2a\\xd1\\xd7\\xa7\\xc2\\x71\\x1a\\x47\\x5c\\xa4\\xfb\\xc3\\x30\\x92\\xba\\x42\\x56\\x67\\xe3\\x4d\\x09\\x00\\x60\\x51\\x8f\\x2f\\xec\\x63\\x6b\\x04\\x91\\x23\\x87\\x6a\\xb2\\x1c\\x8b\\xd9\\xc5\\x0d\\xcc\\xb9\\x84\\xca\\x01\\x1a\\x02\\xee\\xa0\\x20\\x56\\x4f\\xa8\\x21\\xfc\\x36\\x2b\\xfe\\x39\\x2a\\xab\\x50\\xc2\\x73\\xfc\\x7b\\x5a\\x04\\x21\\x88\\xe3\\x31\\x62\\x1b\\x9d\\x2f\\x74\\x3e\\x5c\\x8c\\xf3\\xab\\x1f\\xaf\\xfa\\xfe\\x2a\\x00\\x04\\xc8\\xef\\x7c\\xdf\\x5e\\x6d\\xbb\\x5e\\xb5\\x44\\xe4\\x28\\x9f\\x71\\xa6\\xfd\\x15\\xc6\\x38\\xce\\x29\\xd2\\x8e\\xfb\\x9c\\x03\\x9e\\x47\\x74\\x29\\xa3\\x49\\x7a\\x83\\x82\\x7e\\x76\\xce\\x77\\xa4\\x98\\x16\\xd9\\x0b\\x41\\xa8\\xe1\\x52\\xf3\\x7a\\x09\\xe6\\x34\\x0d\\xfe\\x06\\x9a\\x4a\\xc6\\xf2\\x7d\\xd2\\xea\\xc7\\x47\\xfd\\x21\\xe3\\x15\\x20\\x88\\xc1\\xb1\\xec\\xd3\\x2a\\xc6\\x79\\x92\\x74\\x90\\x75\\x04\\x88\\xc2\\x91\\x78\\x51\\x47\\xb6\\x3b\\x0b\\x8f\\xf1\\x1d\\x18\\x9b\\x90\\x49\\xb8\\xa3\\x96\\xb6\\x93\\x2f\\x85\\xbd\\x6a\\x15\\xef\\xf9\\xf0\\xce\\x18\\x08\\x41\\x1a\\xf0\\xf9\\xc8\\xe6\\xe9\\x7b\\x81\\x4f\\x11\\x0b\\xd4\\xdf\\x13\\x86\\xa9\\x79\\x7d\\xc5\\x11\\xf0\\xaa\\xb6\\xab\\x65\\x07\\x1d\\x9e\\xa8\\x36\\x53\\x2c\\xec\\x51\\xb9\\x2c\\xa7\\xfb\\xdb\\x8d\\xe1\\xc8\\x43\\x66\\x58\\xde\\x2e\\xb6\\x5e\\xdd\\x86\\x04\\x4f\\x6c\\x1a\\xba\\x31\\x78\\x64\\x7a\\xd6\\x78\\x61\\x2e\\xe7\\x4f\\x04\\x6c\\xa3\\xc7\\xfe\\x2f\\x39\\xc0\\x9d\\xd2\\xe0\\x7d\\xf2\\xb4\\x22\\x70\\x85\\xfe\\x93\\x6e\\x79\\x4d\\x22\\xfd\\x5f\\x40\\xa2\\x5f\\x08\\x77\\x15\\x80\\xac\\x80\\x1d\\x98\\x89\\xf5\\xa7\\x6a\\xea\\xe1\\xf0\\xcc\\x4a\\x9e\\x1e\\xdb\\xdd\\xa3\\x75\\x0c\\x74\\xc8\\x50\\x52\\x4b\\x32\\xf4\\x49\\x33\\xfd\\x88\\x3b\\x53\\x72\\xbf\\xb7\\xe7\\x61\\xe0\\x69\\xfe\\x7c\\x1c\\x0e\\x7f\\xbd\\x4a\\x7f\\x58\\x46\\x7e\\xa6\\x88\\x3f\\x9d\\x5b\\x7f\\x66\\xd3\\x86\\xb0\\x49\\x9b\\xb6\\xfb\\x5e\\xad\\x89\\xc9\\xa1\\xfd\\x2c\\xce\\xb9\\x73\\xe2\\x87\\x9b\\x5d\\x03\\xea\\xa4\\x52\\xe1\\x60\\x22\\xd5\\x96\\x17\\xda\\xa0\\x48\\x6f\\x4d\\x4c\\x11\\x78\\x07\\xfd\\xa8\\x49\\x9d\\xfb\\x7a\\x28\\x6f\\xd2\\xf7\\x1a\\x8e\\xb5\\xfe\\x64\\x06\\x5c\\x41\\xe4\\xe1\\xe2\\x36\\x2a\\xb4\\xe4\\x77\\x96\\x9e\\x3a\\x40\\x8a\\x24\\x7e\\x3a\\x56\\xfc\\x86\\xf2\\xb0\\x1e\\xf8\\xd3\\xcd\\xda\\x87\\x25\\x82\\x34\\xbc\\x7f\\x25\\xb6\\x69\\x07\\xf3\\x64\\xb3\\x7b\\x62\\x45\\x29\\x6c\\x4f\\xdf\\x49\\x9f\\x20\\x23\\x7f\\x48\\x64\\x85\\x2f\\xc5\\xd8\\xcd\\x5d\\x05\\x41\\x8b\\xe8\\xb1\\x38\\x59\\xee\\x9a\\x43\\xe1\\x7e\\x1f\\x57\\xa4\\xc3\\x5e\\xa2\\x82\\xed\\x68\\xeb\\xcd\\xa6\\x82\\x81\\x74\\x24\\x5a\\x49\\xc6\\xcb\\x65\\x90\\xeb\\x1f\\x2d\\xcf\\xb0\\x07\\xbf\\xa1\\xc3\\x20\\x77\\x95\\x6d\\xa9\\xac\\xbe\\x3e\\xf0\\x72\\x37\\x99\\xfd\\xb8\\x69\\xd8\\xde\\x30\\x70\\x6a\\x9c\\x02\\x68\\x14\\xd1\\x6a\\x01\\xe0\\x33\\xc9\\x1b\\x59\\x07\\x0d\\xfe\\x44\\x5c\\x5b\\x84\\x8a\\x51\\x66\\x12\\xe5\\x13\\x1f\\xe8\\x48\\x69\\x21\\xe3\\x6b\\x8e\\x7e\\xf1\\x57\\xa8\\x88\\x22\\x88\\x6c\\x68\\x1b\\x5d\\xa7\\x1f\\xea\\x94\\xd9\\x57\\xda\\xfe\\xc2\\x6f\\x41\\x47\\xa3\\xb2\\xac\\x38\\x3a\\x5f\\x47\\xc8\\x58\\x5e\\xb1\\x7a\\x8a\\xc6\\x57\\x90\\x64\\x1b\\x42\\x18\\xd7\\x55\\xf8\\xbe\\xa4\\xd9\\x7a\\xe2\\xa4\\x5b\\xdc\\xdc\\x23\\x23\\x62\\x94\\xd8\\x52\\xc9\\x5d\\x08\\x40\\x6d\\x2e\\x9b\\xd3\\x0c\\x32\\x64\\x52\\x53\\x8c\\x1f\\x5e\\x50\\x04\\xd4\\xa1\\xa8\\x27\\x20\\xda\\x32\\xe5\\x9d\\xc3\\xab\\x18\\xea\\x08\\xa0\\x58\\xf7\\x91\\xd2\\x44\\x18\\x55\\x60\\x86\\xc1\\xe4\\xed\\xce\\x89\\x82\\xaa\\x23\\xb1\\x18\\xfb\\x26\\x6e\\x60\\xb5\\x42\\x78\\x0a\\x69\\x33\\xad\\xd9\\x13\\x26\\x55\\x12\\xc0\\x7b\\x11\\x49\\x78\\xd4\\x4a\\xf7\\x3b\\x20\\x30\\xec\\x47\\xb0\\x6f\\xd0\\x9d\\xda\\x8c\\x4f\\x1d\\x4e\\x31\\x37\\x75\\x46\\x8c\\x45\\x1f\\x9e\\xe6\\x11\\xe9\\xcd\\x4c\\x08\\x45\\xc2\\x50\\x19\\x48\\xa7\\xb1\\x4e\\xf1\\xd4\\xb5\\xcf\"},\n{{0xc4,0x37,0x0d,0x2a,0xaf,0x35,0xac,0xd1,0x58,0xfc,0x0d,0x16,0x22,0xa3,0x99,0xc9,0x9f,0x41,0xb9,0xda,0x4e,0x97,0x0b,0x35,0x4e,0x5b,0xa0,0x5c,0xbe,0x84,0x4c,0xa8,},{0x35,0x45,0xd7,0xd4,0xc9,0x5c,0x3d,0xb6,0xa5,0x45,0x30,0x53,0x7a,0xfa,0xfa,0x4d,0x86,0xdd,0xec,0xf9,0xcc,0x7e,0x66,0xc3,0x19,0xba,0x9f,0x7d,0xd7,0xd0,0x7e,0xe7,},{0x9f,0xeb,0xab,0x5a,0xe1,0x61,0xd6,0x92,0xa6,0xa3,0x94,0x50,0x0a,0x28,0x90,0xd2,0x1c,0x7f,0x0e,0xe2,0x6f,0x46,0x40,0xaa,0xba,0x4f,0xe6,0x6b,0x90,0xb8,0x9e,0xdc,0xb8,0x0e,0xa4,0xcd,0xca,0xbb,0x4d,0x2c,0x3a,0x5c,0x41,0x54,0xe8,0xff,0x20,0xd0,0xe2,0x37,0xfe,0xfd,0x00,0xc7,0xba,0x97,0x82,0xe1,0x74,0x8f,0x64,0x88,0xac,0x01,},\"\\x61\\x9f\\x57\\xde\\x2b\\x1d\\xba\\xee\\x20\\x9a\\x82\\x5d\\x8c\\xa9\\x7f\\x84\\xee\\x49\\xeb\\x12\\xa0\\xb1\\x3d\\xcd\\xd2\\xb3\\xa4\\xee\\x45\\xe0\\x17\\x6d\\x47\\x4c\\xf0\\x94\\x60\\xc8\\x31\\xa8\\xae\\x1d\\x3f\\x39\\xbe\\xeb\\xd0\\x88\\x08\\xb3\\xed\\x17\\x61\\x21\\x3b\\xa9\\x53\\x42\\x18\\x60\\xcc\\x07\\xe2\\xdb\\x31\\x2e\\x68\\x0d\\xf0\\x3e\\x60\\xa6\\x87\\x02\\x64\\xab\\xca\\x8f\\xd5\\x13\\x01\\xe1\\xc1\\x56\\x20\\x23\\xd8\\x02\\xcc\\xd5\\xc7\\xd1\\x96\\xdb\\x39\\xfb\\xb8\\x30\\x4b\\x0e\\x59\\xe3\\x33\\x16\\x41\\x92\\xec\\xc3\\x33\\x38\\x7e\\xef\\x69\\xc7\\xa7\\x8a\\x5d\\x11\\x25\\x88\\x62\\xd6\\xc2\\x81\\xb1\\x9c\\x0b\\xd3\\x36\\xcd\\x3e\\xdb\\x2f\\x9f\\xaa\\xd4\\x02\\x1a\\xc2\\xf2\\x05\\xc1\\x68\\x14\\xb3\\x85\\x48\\x43\\x3f\\xf9\\xed\\xdf\\xd6\\x11\\x33\\x77\\x97\\x69\\xdc\\x69\\xaf\\xac\\x65\\x8a\\xfc\\x1d\\x1b\\x41\\x6d\\x39\\x0a\\xd5\\xb4\\x5a\\x1a\\xd5\\xcc\\x4b\\x00\\xb4\\xb2\\x78\\xfb\\xe4\\xb5\\x9d\\x52\\xe6\\x1a\\x6a\\x5f\\xd0\\x02\\x41\\xc6\\xcb\\xc3\\x82\\xd2\\xd6\\x21\\xa3\\xde\\xd0\\x02\\x01\\x9b\\x33\\x05\\x60\\xe3\\x61\\xfa\\xab\\x28\\xf4\\x1d\\x1a\\xf9\\xc9\\xc0\\x02\\x0f\\x2b\\xaf\\x99\\xe8\\xd8\\xee\\x58\\xe3\\x12\\x22\\x02\\x14\\x7c\\x0a\\xdc\\x57\\xd6\\x70\\xc5\\xb3\\x80\\xaf\\x59\\x4c\\xc7\\xed\\x57\\xb8\\x7e\\xc6\\x67\\x4a\\xb6\\x3f\\x3a\\x98\\x49\\x75\\x3b\\x94\\x62\\xaa\\xb5\\xde\\x88\\xc9\\x48\\xa8\\xb1\\x09\\xaf\\x4d\\x49\\x54\\x92\\x7a\\xac\\x58\\xbe\\xe9\\x53\\xbe\\x0d\\x8d\\x7d\\x71\\xaa\\x11\\xd1\\x1f\\x1a\\x87\\xb1\\x47\\x7b\\x91\\x70\\xbd\\x73\\x5c\\xfc\\x24\\x49\\xf0\\x51\\xb8\\x2b\\xc5\\x9b\\x0b\\xee\\x76\\xa1\\x72\\xe8\\xd3\\x26\\x70\\xf5\\x1d\\xdd\\xdb\\x80\\x4a\\xd1\\x10\\xa5\\x65\\xe3\\x84\\xcd\\xb7\\x6f\\xad\\x04\\xcf\\xf6\\x78\\x93\\x09\\x1e\\x41\\xe6\\x9c\\xfd\\xf7\\x0e\\xa9\\x26\\xc2\\x63\\x69\\xa5\\xb6\\x19\\x3b\\x19\\xab\\x0a\\x62\\x55\\x8d\\xa5\\x5f\\xfa\\xfe\\xb8\\x78\\x97\\x57\\x71\\x06\\x44\\xaa\\x19\\xf4\\x74\\xbe\\x4a\\xda\\x9d\\xc1\\x84\\x9b\\x07\\xd5\\xe1\\x7b\\x85\\xf9\\x21\\xe1\\x01\\x6a\\x54\\xaa\\x60\\x95\\x77\\x72\\x53\\xa7\\x34\\x26\\xfc\\x78\\x64\\xb9\\x95\\x5f\\x04\\x90\\x70\\x23\\xdb\\x20\\x7f\\x85\\xdd\\x21\\xa6\\x51\\x06\\xcf\\x0d\\x62\\x23\\x85\\x87\\x0c\\x34\\xc2\\xda\\x9a\\x11\\xe4\\x72\\x63\\x95\\x12\\x1e\\x4a\\x67\\x61\\xfb\\x52\\x22\\x29\\xd9\\xe5\\xcc\\x9d\\xab\\x35\\xae\\xb8\\x7d\\x0d\\x79\\x69\\x3c\\x00\\x6f\\xde\\x1c\\xfa\\xf1\\x16\\x20\\x8b\\xba\\x96\\x20\\x59\\xcf\\xc0\\xd2\\xd6\\x37\\x0a\\xac\\x77\\x48\\x36\\x2e\\xe6\\xa0\\xa3\\xca\\x7b\\xf1\\x33\\xeb\\xcf\\xa2\\x0f\\x1c\\x4e\\xd8\\x30\\x7f\\x80\\x0c\\xca\\x7e\\x6c\\x4b\\xea\\xa3\\xfb\\x2a\\xb0\\x86\\x12\\x53\\x64\\x28\\x5c\\x44\\xed\\x1a\\x73\\x7a\\x67\\xcb\\xf3\\xb7\\x63\\xc9\\xf8\\xb1\\x42\\x7e\\x89\\xdf\\xa9\\x6d\\x29\\x0e\\x9d\\x48\\x42\\xfe\\x63\\x16\\xaf\\xef\\x83\\x4c\\xd8\\xcd\\x1f\\xdc\\x1f\\x12\\x4c\\xa3\\xfe\\x26\\x26\\x6d\\xa6\\x2e\\x27\\x5c\\x0b\\xf7\\xfc\\xc8\\xe5\\xf9\\xbb\\xa6\\xc0\\xd3\\x8e\\x23\\xfa\\xfa\\xb1\\xe0\\x49\\x48\\x17\\x94\\xc1\\x4f\\x4a\\x8c\\x53\\xbe\\x1c\\x96\\xf7\\x69\\xc9\\xb1\\x3e\\xac\\xa3\\x9a\\x0e\\x49\\x36\\x6d\\x2c\\x9f\\xfe\\x8f\\x20\\x63\\x60\\xa9\\xd5\\x03\\xde\\xc5\\x98\\x62\\x11\\x12\\xe3\\x77\\x67\\x13\\xe7\\xfc\\x06\\x49\\x43\\x3e\\x25\\x7e\\x50\\x3a\\x54\\x60\\x59\\xa9\\x89\\xda\\x89\\x15\\x7d\\x76\\x47\\x60\\x05\\xfd\\x90\\xe4\\xb0\\x7a\\xaf\\x0d\\xb0\\xbc\\x0b\\xc0\\xb6\\x7d\\xb8\\xdc\\xba\\xdf\\xf3\\x93\\x74\\xe1\\xaf\\xae\\x55\\x16\\x34\\xe0\\xe3\\x28\\x31\\xad\\x0e\\x5f\\xa7\\xd5\\x21\\x6f\\xa7\\xc6\\x44\\xf7\\x3e\\x1e\\x8e\\x07\\x23\\x83\\x94\\xa4\\x16\\xc1\\x69\\xaa\\x9d\\x53\\x03\\xf4\\x69\\xa5\\xd4\\x07\\x43\\x08\\x72\\x1f\\xfd\\xde\\xff\\x65\\x59\\xe5\\xad\\xf0\\xc2\\x77\\x3b\\x3f\\x52\\x64\\xe7\\xaa\\xa8\\xc2\\xdb\\x88\\x8e\\x28\\xe8\\x15\\xc7\\x10\\x69\\xc3\\xb4\\xce\\x6c\\x29\\x03\\x4c\\x0a\\xb3\\xb5\\xc1\\x9a\\x80\\xa9\\xd8\\xc2\\xe8\\x74\\x81\\x35\\x31\\xc4\\x22\\x75\\x2a\\xd6\\x2b\\x3c\\x5a\\x1a\\x3d\\x6c\\x5a\\x5d\\xb5\\x87\\x27\\x06\\x93\\xaa\\x75\\xd5\\xf1\\x72\\xee\\xdd\\xf4\\xeb\\x83\\x9b\\xd7\\x93\\xaf\\xfb\\x1c\\x79\\x6a\\x1d\\xf0\\xe4\\x42\\xdd\\xf9\\x9b\\x78\\x0a\\xa4\\x1e\\xea\\x0f\\xe6\\xf8\\x65\\xbb\\x53\\x9c\\xa5\\x3a\\xa4\\x5d\\xb9\\xa8\\x56\\xcb\\x75\\xd0\\x15\\x1d\\x35\\xed\\xea\\x80\\xf2\\x94\\x6d\"},\n{{0xbd,0x3d,0xe1,0xa1,0xd1,0x64,0xbd,0x6e,0x9b,0xe0,0xa6,0xd1,0x07,0xf7,0x03,0xa6,0xdd,0x91,0x4c,0x86,0x67,0xcd,0x34,0x1d,0x13,0x9f,0x19,0x57,0x8d,0x93,0x3b,0x16,},{0x9b,0x02,0x49,0x64,0xbd,0xfa,0x85,0x2e,0xb2,0xd4,0x14,0x4f,0x35,0xb7,0xcd,0xc2,0x67,0x81,0x14,0x3c,0x2b,0xd7,0xf6,0x60,0x23,0x3f,0x8b,0x8a,0xa3,0x60,0x71,0xee,},{0x13,0xcc,0x15,0x8f,0xd0,0x61,0x79,0x2f,0xce,0xd1,0x56,0x87,0x95,0x98,0x25,0x1d,0xd0,0x1d,0x57,0x5b,0x40,0x0f,0xe3,0xe3,0x9a,0x70,0x08,0x63,0xaa,0xe8,0xdb,0x1f,0x91,0x97,0xfa,0x50,0x1c,0x0c,0xf9,0x93,0xe4,0x4d,0x6a,0xc5,0x51,0x80,0xb8,0x69,0x83,0x8e,0x8a,0xe2,0x4b,0x21,0x4f,0xa3,0x5e,0x24,0x4b,0x7a,0x6c,0xff,0x6d,0x0d,},\"\\x17\\x69\\xfc\\xdb\\xf5\\x12\\x47\\xed\\x4c\\x83\\xa0\\x0b\\xbb\\xf0\\x2f\\x44\\x28\\xda\\x6f\\xce\\xdd\\xd0\\x16\\x1a\\x02\\xfc\\xcd\\x15\\x00\\x97\\x06\\x65\\xe1\\xc7\\x63\\x0a\\xd2\\x2e\\x3d\\x97\\x49\\xc7\\x92\\xe7\\x1a\\x26\\x0c\\xff\\xf6\\x05\\x32\\x56\\xe0\\x2f\\x5b\\x47\\xbb\\xa1\\x4b\\x76\\x1a\\xe5\\x3c\\xa7\\x21\\x9e\\xd2\\x80\\x1d\\x2d\\x78\\x8e\\x26\\x41\\x9f\\x36\\xc8\\x1e\\xf9\\x2c\\x23\\x03\\x68\\x37\\x35\\xc8\\xa1\\x75\\x6a\\xda\\xb6\\xa4\\x87\\x92\\x31\\x53\\xe4\\x35\\x60\\x3c\\x96\\xb2\\x39\\x55\\x3e\\xdf\\xde\\xb0\\x93\\x29\\x8f\\x7a\\xe7\\xdc\\x90\\xf1\\x6a\\x7e\\x56\\x64\\xb9\\xe4\\xc0\\x2b\\xa7\\x31\\xa2\\x3c\\xf2\\x23\\x4e\\x25\\x0a\\xc9\\x74\\x26\\x33\\xa9\\x32\\xa9\\x48\\xbb\\x83\\xdc\\x3d\\x79\\x4d\\x05\\x9f\\xed\\xf4\\xec\\x86\\x18\\xc7\\x43\\x3c\\x5d\\x8f\\xe5\\xe6\\x2c\\xf0\\x7b\\x57\\x68\\xc4\\xd9\\xb2\\x61\\xc7\\x15\\x36\\x80\\x4f\\xe2\\xe7\\xca\\x70\\x98\\x87\\x65\\x21\\xd5\\x76\\x77\\x36\\x14\\x24\\xe4\\x7f\\x1b\\x95\\x92\\x37\\xf9\\x07\\x10\\x42\\x1f\\x5b\\xc4\\xf1\\x09\\xf7\\xd4\\x89\\xc7\\x55\\xe9\\x4e\\xef\\xdf\\xb3\\xc8\\x5b\\x90\\xec\\x01\\x31\\x81\\xa2\\x3b\\xb9\\x53\\x5f\\xee\\xa4\\x94\\x1d\\x0a\\x06\\xa5\\x40\\xbd\\x6b\\x58\\x8e\\x55\\xb7\\xf3\\x57\\x57\\x14\\x9c\\xa3\\xe6\\x40\\x96\\x5e\\x1a\\x0f\\xf7\\xf3\\xc8\\x25\\x92\\x59\\x95\\x7f\\xf5\\xda\\xb9\\xfb\\x87\\x32\\xea\\xe7\\x19\\xb6\\x24\\xa4\\x49\\x28\\x78\\x17\\x9b\\x5a\\x83\\xab\\xe5\\x1c\\xaf\\x02\\x08\\x3d\\x73\\x7c\\xeb\\x4f\\xcf\\x04\\x2f\\x2e\\x60\\xba\\x02\\x97\\xac\\x72\\xb8\\x7f\\xe3\\xe1\\x4b\\xa5\\xfb\\xc5\\x4b\\x48\\x09\\x10\\x73\\x89\\x68\\x23\\xbf\\xa2\\x89\\xce\\x8e\\x16\\x87\\x3b\\x48\\x81\\x2c\\x32\\xbf\\xea\\x5f\\xf6\\xbb\\x22\\x1d\\x1e\\xa5\\x46\\x3d\\x32\\x5b\\xbe\\x31\\x1e\\x7f\\xd1\\xe7\\x83\\xde\\x65\\x0b\\x79\\x52\\xea\\xe4\\x61\\xd6\\x3b\\xc7\\x47\\x05\\x22\\xaf\\x5b\\x77\\x89\\xf8\\xfc\\x2e\\xb1\\x92\\xd2\\xcf\\x77\\x6c\\x5c\\x24\\xb4\\x4e\\x29\\xcd\\xb0\\xcc\\xcb\\x1d\\x90\\x36\\x14\\x38\\xe4\\x95\\x0f\\xf3\\x4d\\xbc\\xb3\\xcb\\x0e\\x81\\xcc\\x45\\xf8\\xd0\\xff\\x57\\x09\\x49\\xf7\\x80\\x84\\xe1\\x06\\x0f\\xf5\\x59\\x4a\\xd5\\x16\\xf5\\x0f\\x1c\\xb0\\xa7\\x65\\xe1\\xc0\\xe0\\x38\\xd5\\x94\\x3b\\x93\\x6e\\x4a\\x8b\\x49\\x33\\x54\\xe7\\x9a\\xbc\\x91\\x7b\\xb9\\x27\\x12\\x66\\xee\\xba\\x77\\xa9\\x3a\\x65\\x7f\\x9a\\xd8\\x7b\\x29\\x1a\\xc7\\xea\\x38\\x6f\\x5d\\x4f\\xcb\\xc5\\x82\\xe7\\x2d\\x5c\\x23\\xd9\\x2b\\xa9\\x44\\xb0\\x06\\x4c\\x20\\xe3\\xe2\\xdc\\xf5\\x04\\xbc\\xc7\\xc6\\x96\\x6c\\x63\\xf2\\x08\\x08\\x43\\x60\\x0b\\xa3\\x13\\xec\\x27\\xcb\\xa9\\x5e\\x7e\\xf3\\x18\\x16\\x8c\\x90\\x67\\xdc\\xe8\\x6c\\x1e\\xf0\\xd5\\xd9\\xeb\\x7a\\x61\\x58\\x48\\x9d\\xf3\\x2e\\xd5\\x8b\\x69\\x31\\x03\\x08\\x18\\xf0\\x07\\x05\\xa0\\xdc\\x55\\xd3\\xdb\\xf8\\x00\\x6a\\x85\\x46\\x64\\x1b\\x18\\x65\\xd9\\x19\\xbc\\x24\\x22\\x02\\xcb\\x3a\\xe3\\x00\\xbf\\x86\\x53\\xe3\\xb3\\x78\\x94\\xc3\\xdc\\x0e\\x47\\x7b\\x9d\\x7c\\x41\\xba\\xf8\\xd3\\x88\\x7c\\x2e\\xb5\\x9b\\x1e\\x4d\\x50\\xbb\\xb6\\xf1\\x79\\x2a\\x1c\\x93\\x67\\xc6\\x5c\\xdb\\x45\\x0c\\x2d\\xfa\\x21\\x45\\xe6\\x11\\xa9\\x7a\\xd8\\x1c\\xff\\x1f\\xd8\\x3c\\x6c\\xf7\\x23\\x09\\x47\\xea\\xff\\x4c\\x21\\xdc\\x1b\\xaf\\xb7\\x1e\\xc4\\x1e\\x5b\\xc7\\x2b\\x37\\x45\\xec\\x3e\\x38\\xbf\\x59\\x30\\xc1\\x26\\xd0\\x60\\xf0\\xc5\\x0a\\x89\\x5f\\x00\\x9a\\xa1\\x8e\\x87\\xf2\\x17\\x4f\\x58\\xab\\x53\\x79\\xa7\\x21\\xfd\\x83\\xaa\\xd5\\x51\\x7f\\xd9\\x9d\\xff\\x14\\x6e\\xde\\xea\\x61\\x52\\x12\\x35\\xe2\\xf1\\xa1\\x6e\\xe5\\x83\\x03\\xe0\\x91\\xbe\\x8d\\x57\\x90\\x94\\xc1\\xd8\\xa2\\x0b\\xc7\\x4a\\x55\\x0d\\x77\\xc0\\x0d\\x08\\x75\\x71\\x51\\x7a\\x63\\xcd\\x41\\x26\\x93\\x3a\\x4f\\x09\\xa0\\x70\\xbf\\x8e\\xa4\\xff\\xb8\\x46\\xa9\\x78\\x0e\\x97\\x34\\x04\\x3b\\xac\\x4c\\x0f\\xf4\\x7b\\x1a\\xfc\\xcf\\x52\\x93\\xac\\x14\\xbc\\x73\\xeb\\xf6\\x71\\x29\\x65\\x7e\\x4b\\x8a\\x8b\\x33\\xdd\\xac\\x7b\\x0f\\x4d\\x71\\x9d\\x2d\\xc6\\x5d\\xf6\\xea\\x0a\\x3f\\x24\\xcf\\x44\\xc8\\x33\\x8e\\xd6\\x01\\xa3\\x93\\x9c\\xa3\\x58\\xfc\\x4b\\xe1\\x3e\\x8e\\xde\\x02\\x75\\x39\\x71\\x2c\\xa2\\x3e\\x3f\\xfb\\xa7\\x06\\xe8\\xfd\\xd6\\x2a\\x07\\x4e\\xe0\\xad\\x74\\x20\\xf7\\x80\\x60\\xcc\\x96\\xfb\\x2a\\xbf\\x30\\xe9\\xea\\xa2\\x41\\xc0\\xf8\\x7e\\xbb\\xe3\\xec\\x73\\x51\\x75\\x96\\xf7\\xc3\\xc5\\xa8\\x0c\"},\n{{0xf6,0xae,0x51,0x6a,0x51,0x29,0x6f,0xc5,0x23,0xce,0xa5,0xf0,0x08,0xcf,0xbd,0x09,0xe7,0x3f,0x78,0xb6,0xfd,0xd3,0xb6,0x94,0x26,0x12,0x80,0x41,0xa5,0x60,0x4c,0xf9,},{0x37,0x6c,0x82,0xba,0x7b,0x87,0xaa,0x77,0x41,0x87,0x27,0xdb,0x33,0xd3,0x26,0xae,0x75,0x8b,0xf7,0xa1,0x35,0xc1,0x04,0x60,0xcd,0x8b,0xf8,0xfe,0xb8,0x3c,0x2b,0x10,},{0x0f,0xe4,0xdd,0x7e,0x1f,0x60,0x8e,0xe8,0x2b,0x7f,0xe8,0x63,0xd1,0xb0,0x3a,0x81,0x84,0x3c,0xe2,0x0c,0x76,0x2c,0xd8,0xbb,0x24,0xef,0xd4,0x6b,0xa0,0x25,0xff,0xf3,0x33,0x1d,0x87,0x57,0x52,0xca,0x72,0x20,0xc5,0x3d,0xd3,0xc7,0x1f,0x2b,0xc1,0xe2,0xc6,0x4a,0x2f,0x9c,0x58,0x86,0x5a,0x2a,0x24,0x48,0x09,0xf4,0x13,0x4e,0x53,0x07,},\"\\x83\\x42\\xf2\\x5a\\xc4\\xb1\\x7e\\xba\\xd6\\xf7\\x9b\\x9a\\x03\\x31\\x75\\xc7\\xf2\\x8a\\xf0\\x9e\\x65\\x8e\\x8c\\xb9\\x8c\\x29\\x4f\\x15\\xc3\\xc8\\x34\\x26\\x29\\xcb\\x2a\\x32\\x47\\xdf\\xc8\\x75\\xb8\\x2f\\x5b\\x38\\x0c\\x5d\\x11\\x42\\x6a\\x2e\\xeb\\x62\\x45\\x0b\\xd8\\x85\\x65\\x01\\x07\\xc6\\x83\\x62\\xa3\\xb7\\x2c\\xe8\\x23\\xf2\\xd1\\x59\\x42\\xb7\\xdd\\xa3\\x01\\xd2\\xfb\\x63\\x8f\\x30\\x2a\\xa9\\x57\\x0b\\x47\\x91\\x1d\\xad\\xd3\\xbd\\xdb\\xfe\\xd5\\x54\\xc1\\xc8\\x0b\\xd7\\x18\\x07\\x8b\\x8b\\xd2\\xc9\\xc3\\x14\\xa5\\x16\\x6f\\x26\\x5e\\x82\\x66\\xee\\x2d\\xb3\\x57\\x56\\x1a\\x55\\x85\\xc4\\x14\\xa7\\x84\\x0b\\xfa\\xe6\\x09\\xd7\\xcd\\xdd\\xe1\\xfa\\xde\\x85\\x56\\x0f\\x23\\xd6\\x38\\xef\\x3d\\x52\\xe5\\x1f\\x5c\\xf3\\x13\\xa0\\x72\\xc5\\xea\\x0f\\x81\\x7f\\x72\\x81\\xe2\\xcb\\xa5\\xc5\\xc8\\xd2\\x6c\\x92\\x85\\x92\\xb8\\x1f\\x0f\\xf8\\xcd\\x18\\xdb\\x5a\\x2c\\x41\\xd8\\x80\\xd7\\x44\\x73\\x86\\x3c\\x7b\\xbd\\x00\\x56\\xfa\\x4d\\x4a\\xfa\\xbd\\x17\\xa3\\xb8\\x9d\\x97\\xd3\\xfe\\x5d\\xc0\\x6b\\x0f\\x61\\x2a\\x1d\\x66\\x42\\x39\\x23\\xba\\x8d\\xfb\\xb8\\xec\\x82\\x46\\x62\\x4d\\x83\\x78\\x4e\\xba\\x4f\\x57\\x36\\xba\\x38\\x5e\\x44\\x22\\x96\\xc8\\xcb\\x0f\\x1b\\x68\\xe0\\x33\\x42\\xb2\\xc6\\xc1\\x03\\x34\\x6f\\x6d\\xd7\\x40\\xe2\\x6c\\x3d\\x13\\xca\\xef\\x80\\x1d\\x1b\\x26\\x21\\xd8\\x9f\\x06\\x93\\x91\\xa0\\x78\\xd4\\x3a\\xe6\\xff\\x12\\xee\\xca\\x66\\xbc\\x32\\x63\\x7b\\x45\\xf0\\xac\\x62\\x7c\\x2d\\x7b\\xbf\\x8a\\x49\\xd9\\x46\\x81\\x75\\xe2\\x68\\x85\\xe0\\x28\\x21\\xd3\\xa3\\xba\\xa2\\xc3\\xe3\\xa6\\xbb\\x96\\xb5\\x75\\x26\\xe2\\x24\\xcf\\x3d\\x85\\x9f\\x66\\x95\\x73\\xcb\\xd5\\xc8\\x73\\x93\\x74\\x61\\x56\\xf3\\xd1\\xc7\\xa8\\x03\\x08\\xdc\\x1f\\x24\\x05\\xbf\\x0d\\x40\\xbe\\x1c\\xa7\\x3b\\x76\\x7d\\xed\\xf4\\x03\\x13\\x37\\xc0\\x81\\xbf\\xa3\\xae\\x6e\\x54\\xf6\\x02\\x3f\\x42\\xf0\\xcb\\xd8\\x77\\x62\\xdb\\x55\\x91\\x3c\\x70\\x72\\x06\\x03\\x40\\x10\\xdf\\x2a\\xa8\\x75\\x3d\\x03\\x0f\\x03\\xc2\\x67\\xe7\\x1a\\x9d\\xd2\\xc6\\xc1\\x9d\\xe3\\xe1\\x85\\x1a\\xbf\\xac\\xbb\\xd5\\xdd\\x5b\\xf8\\x96\\xfa\\xb8\\xe4\\x15\\x31\\x7b\\x49\\xf1\\xe4\\x09\\x6e\\x3d\\xa9\\x9a\\x5b\\x5d\\x0a\\x3c\\x42\\xda\\xf9\\xde\\x94\\x84\\x7c\\x1e\\x53\\xc8\\x81\\x8a\\x5b\\x84\\x33\\x23\\xf5\\x01\\xe3\\xa7\\xfa\\x68\\xdf\\x89\\xa5\\xf4\\x1f\\x2c\\x62\\xc3\\x8d\\x17\\xf2\\x50\\xb0\\x2a\\x67\\xfa\\xe4\\x7d\\xaf\\x06\\x3f\\x55\\x89\\x42\\x37\\x7e\\xf8\\xa8\\x90\\x52\\xf1\\xa2\\x15\\xd7\\x68\\xf7\\x91\\x3a\\x7e\\xc1\\x4e\\x98\\xb8\\x1e\\x4b\\x2c\\xcf\\x26\\xba\\xca\\xd6\\xf3\\x96\\x64\\xaf\\xc0\\xe9\\x1a\\x3c\\xad\\x69\\x1d\\xb2\\xbf\\x56\\xa7\\xab\\x66\\x77\\xb4\\x95\\x96\\xdb\\x88\\x7c\\x97\\xde\\xf4\\x35\\x08\\xa7\\xa2\\xec\\x2a\\xb7\\x55\\xec\\x36\\x8e\\x2e\\x53\\xd1\\xe1\\x6b\\x60\\xff\\xf0\\x9c\\x3b\\x52\\x26\\x3f\\x0f\\x7c\\x1e\\xa9\\xcc\\x35\\x37\\x31\\x97\\xe9\\x5c\\x11\\xe6\\xd2\\x2f\\xa9\\xd8\\x29\\x9c\\x42\\x37\\x36\\xf5\\x81\\x4f\\x1e\\x79\\x8d\\x22\\x75\\x18\\x60\\x0d\\xf6\\xa7\\x90\\x35\\x8d\\xea\\xe3\\x8d\\x56\\x39\\xe1\\x98\\x3f\\xe0\\x18\\x43\\x6e\\xa5\\x8b\\xa8\\x46\\x75\\x48\\xc9\\x29\\xef\\xbb\\x16\\xdf\\xea\\x41\\x02\\x25\\x3a\\x35\\x0f\\xb8\\x4d\\x98\\x31\\xc4\\xc2\\xcb\\xcb\\x76\\xe1\\x8d\\x7f\\x3e\\x95\\x36\\x41\\xad\\xa4\\x14\\x21\\x39\\x30\\x91\\xe6\\x3d\\xfe\\x66\\xde\\x24\\xc9\\x92\\x32\\xc7\\xd6\\xa2\\x83\\x7a\\x48\\x98\\x3c\\xf5\\xb1\\x63\\x31\\xce\\x00\\x05\\x0d\\x1c\\x71\\x39\\x58\\xff\\xce\\x5f\\x2e\\x93\\x48\\xc5\\x2f\\x53\\x12\\x05\\x79\\xa7\\xc9\\xa1\\x60\\x08\\xd1\\x34\\x83\\x8e\\x59\\x61\\x29\\xc7\\x02\\xfc\\xd2\\x11\\x48\\xbd\\xf9\\x17\\x4d\\x48\\xe2\\xda\\x0a\\x8a\\x66\\x35\\x9e\\xde\\xe0\\x1c\\x50\\x09\\xef\\x67\\x42\\xfe\\xc4\\x1c\\x1a\\xce\\xcd\\x03\\xef\\xe1\\xcc\\xc9\\xb1\\x30\\xd6\\xe5\\xac\\x92\\x57\\x6a\\x85\\xcc\\xb7\\xcf\\xc7\\xd0\\xe4\\x23\\x31\\x06\\x17\\x29\\x31\\xa0\\x86\\x99\\x79\\x0b\\xc4\\x1a\\xcf\\xbb\\x73\\x1a\\xdb\\xb2\\x6d\\x56\\xb3\\x9a\\xaa\\x5b\\x33\\x3b\\xc1\\xa1\\x0e\\x2c\\x70\\x64\\xca\\x86\\x11\\x9d\\x8c\\x71\\x71\\x48\\xf9\\x24\\x41\\xaf\\x24\\xcd\\x2a\\xa8\\xf5\\x7c\\x86\\xba\\x38\\xa5\\x9a\\x10\\x0b\\x92\\x76\\xdf\\x38\\x27\\xec\\x7f\\xb4\\xd3\\xfa\\xf5\\x8b\\xe3\\x1c\\x6e\\xca\\xfd\\x69\\xcf\\x1c\\x64\\x10\\xa4\\x9c\\xd7\\x08\\x1f\\xf6\\xe9\\xfc\\x39\\x7c\\x2d\\x20\"},\n{{0x83,0xf7,0x89,0x90,0x0f,0x04,0x0d,0xc6,0x2f,0x4d,0x18,0x78,0x4c,0xb6,0x4b,0x63,0xc8,0x8e,0x8d,0x18,0x00,0x16,0x96,0xbb,0xeb,0x47,0x07,0xc4,0x69,0xd1,0x1a,0x5b,},{0xed,0xfc,0x2b,0xab,0x7e,0x79,0xf4,0x00,0x37,0xfe,0x4d,0x90,0x41,0xde,0x48,0xda,0x9a,0xee,0x8f,0x97,0x80,0x98,0xd7,0xb0,0xae,0x17,0x92,0x90,0x25,0xe4,0x27,0x3d,},{0xea,0x65,0x82,0xcc,0x23,0xe0,0x46,0x09,0x17,0xf7,0x82,0xd9,0x64,0xe3,0xbb,0x6d,0xcd,0xe0,0xae,0xea,0xc4,0x2c,0xc1,0x49,0x19,0xd3,0x6c,0xe7,0x8a,0xa0,0xaf,0xd9,0x80,0x72,0xf5,0x4c,0x79,0x5f,0xbf,0xd7,0xa4,0x1d,0x99,0xd7,0x06,0x06,0xc2,0x8a,0x5d,0xcf,0x19,0xbe,0x38,0xa0,0xce,0x2d,0x09,0xbb,0x8f,0x84,0x4c,0x31,0xbf,0x00,},\"\\x6c\\x11\\x2a\\x20\\xd3\\x06\\x57\\xab\\x5f\\x8c\\x5c\\x04\\x47\\x8d\\x6c\\x42\\xd1\\xc6\\xbd\\xef\\x38\\xcd\\x4f\\xe0\\x06\\xac\\x2a\\x57\\xe2\\x90\\xff\\x29\\x28\\x78\\x96\\xee\\xa8\\xc3\\x0a\\x01\\x39\\xc1\\x8f\\xc8\\xc9\\x75\\x64\\x56\\x3e\\x86\\xc8\\xd3\\x40\\x56\\xa6\\x71\\x9b\\xfe\\x47\\x9d\\x9e\\x87\\xe8\\x1b\\x19\\x45\\x23\\x31\\xbf\\xa1\\x54\\x80\\x68\\x82\\xe5\\x03\\x9a\\x20\\xc9\\xe9\\x54\\xb1\\xfc\\x7c\\x01\\x5d\\xcf\\x58\\x15\\xbd\\x7c\\xf7\\xb6\\x35\\x7d\\xf9\\x28\\x0b\\x9b\\xd4\\x3f\\x89\\xff\\xc9\\x19\\x45\\x32\\x3b\\x5a\\xcb\\x2a\\xe0\\x02\\x54\\xd4\\x16\\x28\\x68\\xd1\\xc8\\x3e\\xc6\\xe0\\xfc\\xbe\\x7a\\x8a\\xb9\\x25\\x41\\x92\\x14\\x9c\\x6b\\xc9\\xe5\\xfe\\x35\\x06\\x94\\x16\\x5d\\x66\\x38\\x33\\x1e\\xb2\\x4e\\x3b\\x13\\x90\\xc6\\x98\\xc4\\x83\\x83\\x78\\xc0\\x1b\\x2c\\x61\\xa3\\xeb\\xe2\\xc0\\x60\\xb9\\x8b\\xa6\\xee\\x02\\xb5\\x19\\xb4\\xea\\xc1\\xe0\\xbc\\xc0\\x9b\\x23\\x24\\xcc\\xf5\\xb1\\xa7\\xfe\\x8f\\xd0\\xb1\\x54\\x5a\\x94\\x27\\x83\\x2a\\xbb\\x25\\x74\\x4e\\xeb\\x36\\x32\\x6b\\xe6\\x4e\\xfe\\xd3\\xa7\\xb0\\x7d\\x63\\x0a\\x21\\xc3\\x08\\x1b\\x55\\x26\\x1c\\x35\\x32\\x87\\xc6\\x6c\\x57\\x66\\x3a\\x99\\xdb\\x46\\x6a\\x5d\\xee\\x22\\x74\\x6b\\x81\\xc7\\x50\\xef\\x85\\xbe\\x51\\x14\\x3e\\x22\\x1e\\xcd\\xf1\\x14\\xfe\\xf1\\xb3\\x08\\x2f\\xf5\\x4f\\xd0\\x44\\xbc\\x88\\x4b\\xfb\\x3c\\xc5\\xc5\\x33\\x59\\x97\\x00\\x98\\x67\\xce\\x94\\x91\\xa8\\x0f\\xe6\\x96\\x82\\x5f\\x99\\x42\\x6d\\xef\\xab\\x6a\\x49\\xba\\xdc\\xde\\x40\\x3f\\x58\\xe8\\x31\\x79\\x66\\x21\\x07\\x47\\xb5\\x67\\x75\\x4d\\xe5\\x30\\x76\\xb3\\xec\\xbf\\x65\\x34\\x6c\\xb8\\x39\\x05\\x83\\x2e\\x16\\xd0\\x1b\\x50\\xb9\\x3d\\x37\\xeb\\x9b\\xfe\\x20\\x17\\x2a\\x31\\x63\\x0d\\x25\\xf3\\x21\\x7d\\x87\\xd9\\x34\\x65\\xfd\\x8a\\xc5\\x54\\xcb\\xbb\\x39\\xd9\\x82\\xea\\xd7\\x21\\x93\\x91\\x23\\x4c\\x88\\x9f\\x0b\\x92\\xa2\\xe0\\x41\\x3d\\x86\\x6c\\xac\\x08\\x7d\\x62\\x8c\\xe3\\x1c\\x61\\xc6\\x32\\x3e\\xcb\\x8e\\x68\\x95\\x55\\xaf\\x10\\xde\\x2b\\x65\\x6e\\x6a\\xea\\x2c\\xde\\x93\\x2e\\x24\\x1f\\x6d\\x1f\\x8a\\x9e\\x33\\x16\\xcf\\x13\\xf1\\x35\\xac\\xef\\x83\\xa0\\xc0\\xcf\\x22\\xf9\\x5c\\xa8\\x18\\xe6\\x1f\\x92\\x76\\x87\\x74\\xc6\\x30\\xe0\\x92\\x5b\\xe9\\x9d\\xbd\\x32\\xb4\\x99\\xc0\\xfe\\x7d\\x84\\xa4\\x2e\\x39\\x32\\x87\\xf6\\xf5\\xce\\x3d\\x0b\\x27\\x1f\\x17\\x00\\x45\\xa6\\xd4\\x8e\\xab\\x31\\x6f\\xe1\\x7b\\x18\\x58\\xb1\\xff\\xee\\xe9\\x08\\x88\\xf3\\xa3\\x7a\\x24\\x80\\xdf\\xd0\\x4a\\x4a\\x86\\x29\\xf8\\x68\\xb5\\xc0\\xa8\\x0e\\xe1\\xf0\\x37\\x19\\xf3\\xa4\\x7d\\x40\\x95\\xbe\\xf1\\x0e\\x02\\x34\\xfc\\x30\\x0e\\x2a\\xf4\\x82\\x28\\x5d\\x78\\x93\\x79\\x68\\x31\\x9d\\xa9\\x4b\\xeb\\x6c\\x40\\xe0\\x78\\x57\\x7c\\x02\\x4f\\x3a\\x5c\\xda\\x00\\x84\\xe2\\xf8\\x55\\xa9\\x39\\x6a\\xaa\\x9e\\xe9\\xbf\\xaf\\x2c\\xc7\\x71\\xfe\\x68\\xc4\\x0b\\x62\\x9e\\x8d\\xcf\\x11\\x5e\\xf0\\x3e\\x75\\x7a\\x2a\\xc9\\xee\\xf0\\x73\\xf1\\xbd\\xf9\\xc5\\xa4\\x41\\x00\\x31\\x55\\x8a\\x6d\\x38\\x2b\\x5f\\x16\\x02\\x4b\\x15\\x1b\\x1c\\x01\\xee\\x78\\x17\\x41\\x3a\\x3c\\x4d\\xe9\\xdd\\x64\\x78\\x78\\x5b\\x81\\x10\\x1d\\xf5\\x52\\x24\\x30\\x05\\x87\\x80\\x20\\x7e\\x79\\x0f\\x61\\x2d\\x78\\xe5\\x70\\x5c\\xee\\xd4\\x6b\\x0e\\xc0\\x75\\xe7\\xc1\\xdc\\x07\\x3b\\x17\\xb2\\xb4\\x3d\\x72\\x53\\x59\\x27\\xbf\\xd2\\x71\\xe9\\x2e\\x3c\\x93\\x63\\x8e\\x40\\xa9\\x60\\x1d\\xc2\\xc1\\xab\\x76\\xd9\\x1a\\x41\\x03\\xdf\\x65\\x7d\\x91\\x1c\\x82\\x9e\\xe8\\xa5\\xf7\\x47\\xf7\\x64\\x2f\\x5a\\x91\\x5a\\x5f\\x40\\xf6\\x30\\xb4\\x30\\x39\\xc7\\xd4\\xbd\\x2a\\xd2\\xb3\\x21\\x29\\xd9\\x4e\\x5b\\x2f\\x03\\xad\\x4a\\x3d\\x45\\x57\\x7e\\xb8\\x1f\\x36\\x9c\\x9e\\x3e\\x2a\\x4f\\x6a\\x8e\\x41\\xac\\xf8\\x28\\x3b\\xe5\\x84\\x25\\xea\\x99\\x3b\\x8e\\x98\\xee\\xa6\\x33\\x05\\x56\\x64\\x86\\x18\\xda\\xd9\\x8f\\xa2\\x55\\x62\\x0d\\x83\\x6d\\x3c\\x7f\\x29\\xb9\\x07\\x89\\x58\\x49\\x28\\x61\\x67\\xc7\\x18\\x1e\\x2c\\xaf\\x55\\xc2\\xc1\\x84\\xa9\\xa9\\x11\\xf8\\xe4\\x1c\\xb0\\x42\\xe2\\xcd\\x48\\xb0\\x54\\x4e\\xa7\\x9f\\xe2\\xef\\x38\\x1e\\xbc\\x5b\\x15\\xe3\\x9a\\x9b\\x5c\\x6d\\x99\\x8f\\xae\\xaa\\xa7\\x77\\x3c\\xfe\\xc0\\x84\\xc0\\xbf\\xae\\xd1\\xbc\\xab\\x96\\x3a\\x4e\\xf3\\xd9\\x4d\\xbb\\x3d\\xfe\\x72\\x4c\\x04\\x0c\\xe4\\xd1\\xe2\\xee\\x7f\\xc2\\xda\\x4b\\x25\\x12\\x7c\\xe3\\xa5\\xdf\\x69\\x3f\\xcf\\x5a\\x6e\\xd1\"},\n{{0x43,0xbf,0xf3,0xcd,0xd5,0x30,0x7e,0xd7,0xd2,0x5c,0xf9,0x6f,0xdb,0xba,0x64,0xab,0x18,0x11,0xc8,0xbb,0x93,0x4e,0x21,0x87,0xea,0x7f,0xfc,0x01,0x8d,0x85,0xe0,0xf2,},{0x00,0xf1,0xb5,0xd3,0xca,0xc6,0xe5,0x6c,0xa5,0xf8,0x94,0xd4,0xcd,0xbf,0x9b,0xeb,0xd9,0x68,0xd2,0x4d,0x5e,0xff,0xa5,0x05,0x8b,0x0e,0x20,0xbb,0x08,0x98,0xf6,0xf1,},{0xa6,0xb5,0x6b,0x76,0x86,0xdf,0x1d,0xc5,0xf4,0xed,0x54,0x4a,0x4d,0x97,0xe6,0x70,0x36,0x19,0x5a,0x32,0xb2,0x2e,0xcd,0x5d,0x31,0xea,0x17,0x30,0xe6,0xed,0x8f,0x81,0x0d,0x25,0x8b,0x44,0xc0,0x8e,0xa4,0x5f,0x03,0x2b,0x93,0x74,0x41,0xb7,0x2c,0xd0,0xdc,0x37,0x55,0x6f,0xd7,0x87,0x4e,0x9f,0xe6,0x4f,0x15,0x76,0x5c,0x52,0x10,0x03,},\"\\x64\\x6f\\x8b\\x34\\x18\\x2d\\x5e\\x60\\x2b\\x51\\xca\\x73\\x29\\x34\\x7c\\x0e\\x19\\x8c\\xb7\\x47\\xe4\\xda\\x0a\\x6b\\x80\\xf3\\xf6\\xf9\\xf3\\x36\\xf6\\x70\\x8d\\x85\\xcb\\x42\\x9a\\xb2\\xd6\\xbe\\xd3\\x5d\\x50\\x13\\x12\\x9c\\xd1\\x00\\x14\\x2c\\xdd\\xce\\xe8\\x63\\x51\\x79\\x02\\x1b\\x3e\\x24\\x92\\x2b\\x81\\xae\\xf1\\x3c\\x13\\x70\\x28\\x69\\x39\\xd6\\x3d\\x6b\\x6a\\x41\\x95\\xed\\xa1\\xd8\\x12\\xca\\x51\\x82\\x04\\x76\\x8f\\x87\\x34\\x8c\\x68\\x89\\x55\\x2c\\x63\\xd1\\x37\\x2c\\xde\\x6a\\x5e\\x9d\\xaa\\x7f\\x84\\x45\\xec\\x8d\\x61\\x30\\xa3\\xf5\\xae\\xf0\\xed\\xea\\xce\\x01\\x0b\\x6c\\x7f\\x0b\\x9d\\x24\\x16\\x2a\\x8d\\x04\\x45\\x4b\\x81\\xd4\\x8e\\xa9\\x09\\x7b\\xd8\\xdf\\x09\\x34\\x59\\x71\\x9c\\xcb\\x54\\xaa\\x10\\xf5\\x1c\\x24\\x6a\\xa9\\x9c\\x58\\x0b\\xea\\xf9\\xc9\\xc5\\xbc\\x60\\xfa\\xf0\\xae\\x5c\\xec\\x7f\\x51\\x37\\xf6\\xc5\\xc1\\x44\\xdf\\x45\\xd1\\x2e\\xe9\\x95\\xad\\xcc\\xf2\\x5a\\x9d\\xb8\\x1b\\x85\\x58\\xbd\\xfb\\x65\\x83\\x01\\x86\\xe7\\xb9\\xd4\\xee\\xd9\\xf6\\xb4\\xd7\\x32\\xb1\\xb5\\x82\\x2d\\x03\\xeb\\x01\\x7c\\x07\\x24\\xf4\\x8f\\x87\\xba\\xaa\\xe1\\x04\\x5d\\x6f\\xdb\\x12\\x5c\\x91\\x34\\x06\\x4f\\xaf\\x18\\xdb\\xed\\x58\\xd8\\xfb\\xac\\xea\\xcd\\x4f\\x09\\x7d\\xf9\\xb3\\x42\\xe5\\xc4\\xa5\\xbc\\x85\\xb2\\x95\\x97\\xd4\\xb6\\x40\\xf1\\x55\\x1c\\x5b\\x62\\x4a\\xb2\\x1b\\x48\\xe9\\x4a\\x90\\x30\\x04\\x9b\\xe1\\xf0\\x5a\\xa8\\x51\\xd0\\x82\\x7e\\xaf\\x87\\x00\\xdf\\xe1\\x47\\xfd\\xcd\\xee\\xdb\\xc9\\x8c\\x4f\\x15\\x77\\x4f\\x01\\x20\\xfb\\x59\\x70\\xa2\\xf8\\xb2\\x17\\x94\\x34\\x0b\\x62\\x83\\x79\\xa8\\x02\\xb9\\xf7\\xc0\\x68\\xb0\\xdf\\x63\\x19\\x3e\\x51\\x0f\\xc7\\xb2\\xaf\\x97\\xee\\x38\\xde\\x47\\x92\\x97\\x85\\x53\\x55\\x28\\xd3\\x50\\xd8\\x86\\x20\\x61\\x0c\\xfd\\xb5\\x5d\\x24\\x9e\\x38\\xfb\\x73\\xc8\\x28\\x71\\x13\\x91\\x9c\\xe3\\x32\\x67\\xd7\\xdb\\x92\\x4e\\x49\\x19\\xa4\\x4e\\x6e\\x29\\xa9\\x0d\\xbe\\x3b\\x7b\\x0d\\x39\\x21\\x16\\x3f\\xeb\\x5a\\xc1\\x05\\x62\\x4e\\xd8\\x52\\xbe\\xce\\x35\\x38\\xe9\\x91\\x93\\x30\\x0c\\x89\\x33\\x45\\x69\\x93\\x50\\xa8\\xf9\\x9e\\x8c\\x6a\\x41\\x09\\x5f\\xc9\\xfc\\x08\\xda\\x07\\xf7\\x57\\x11\\xf7\\xdf\\x03\\x44\\x06\\xde\\x14\\xed\\xd8\\xe2\\x2a\\x63\\x3a\\x86\\xe4\\xa5\\xa5\\xc9\\x75\\xac\\x5d\\x34\\x89\\x1c\\xcc\\xfc\\x85\\x43\\x77\\x1f\\xfa\\x08\\x0e\\x0b\\x45\\xd6\\x5a\\xb8\\x30\\xa3\\x61\\xac\\x4c\\x42\\x62\\x94\\xd3\\x68\\x5e\\xa8\\xc2\\x60\\x39\\xc7\\x1c\\x90\\xfc\\x3f\\xb5\\x12\\xbe\\x9f\\xc9\\x48\\x07\\xd7\\x6d\\xbd\\xaf\\x8f\\xfa\\xa4\\xfb\\xf9\\x84\\x9d\\x68\\xe8\\xa5\\x7d\\x30\\xc4\\xa0\\xb9\\x73\\x5c\\x23\\xf0\\x8e\\xf2\\xe2\\x84\\x45\\x84\\x67\\xe1\\x5d\\x66\\x53\\x62\\xcb\\x64\\x6f\\xde\\x69\\x37\\xec\\xba\\x53\\x09\\x12\\x64\\x63\\x83\\x57\\xa7\\x22\\x42\\x5b\\xc6\\x2d\\x1e\\x30\\xec\\x5f\\x0d\\xd8\\xfe\\xa2\\x6b\\x2e\\xa4\\xa8\\x49\\x00\\x35\\xde\\x43\\xf2\\x74\\x84\\x6f\\xb0\\xcf\\x02\\x09\\xec\\x74\\x37\\xf3\\xc3\\xd0\\xa5\\x60\\x37\\x3d\\x03\\x4e\\x5f\\xd7\\x9e\\x25\\xb6\\x42\\x4d\\x9b\\x2c\\x17\\x61\\x63\\x2b\\x35\\xa1\\x21\\x32\\x52\\x18\\x27\\x34\\x5c\\x55\\xe4\\xe7\\x14\\x2d\\xd6\\xfe\\x94\\xd6\\x20\\xfe\\x51\\x5c\\x15\\x3e\\x83\\x95\\xb5\\xd1\\x30\\xc7\\x44\\x13\\x9b\\x6a\\x92\\xef\\xd3\\x7f\\x22\\xba\\x13\\xfe\\x4c\\x09\\x53\\x73\\x55\\x0e\\x2e\\x4f\\xcb\\xa0\\x32\\x5b\\x3e\\xa3\\xb9\\xfe\\x25\\xcc\\x7d\\xd9\\x2c\\xbf\\x42\\xe1\\x5f\\x45\\x54\\xb7\\x7a\\xc2\\x7a\\x4a\\x34\\x63\\x82\\xff\\x61\\x00\\x45\\x15\\x08\\xd6\\x02\\xcf\\x64\\x3f\\x60\\xb6\\xca\\x42\\x86\\x35\\x6f\\x21\\xa3\\x11\\x0d\\x4e\\x2c\\x8a\\x89\\x62\\xa7\\x80\\xfc\\xff\\x43\\x9b\\x3a\\xa8\\x04\\x99\\xdf\\x27\\x0f\\xc3\\xe6\\xca\\xd8\\x89\\x33\\x48\\x87\\x2f\\x0f\\x70\\x2f\\x93\\x90\\x00\\x0c\\x7f\\x6e\\x06\\x27\\xd2\\xbb\\xb7\\xb7\\xce\\xf5\\xc4\\xda\\x25\\xda\\xdf\\xea\\x80\\x32\\xe5\\x02\\x32\\x97\\xa7\\x0a\\x65\\x8e\\x9a\\xe7\\x3b\\xdd\\xc3\\xb2\\x27\\xa1\\xc1\\x17\\x41\\x13\\x3f\\x01\\x2f\\x0f\\x48\\xfe\\x26\\x44\\x6f\\xa6\\x7e\\x64\\x72\\x0f\\xc8\\xdc\\x97\\xf3\\x0d\\x0d\\xd0\\x26\\xf6\\xdc\\x21\\x64\\xea\\xd8\\x57\\x82\\x4a\\x0a\\x7a\\xeb\\x20\\xf1\\x15\\xd5\\x0d\\x1b\\x65\\xdd\\x5d\\x82\\xe0\\x9a\\xbe\\x83\\x4e\\x8c\\xa8\\x89\\x57\\xe3\\x99\\x84\\x82\\x49\\x55\\xa1\\xa1\\x3e\\x3b\\x94\\xa0\\x01\\x57\\x18\\x6d\\xcd\\xc2\\x89\\xe3\\x4b\\x67\\x8c\\x91\\xcb\\x2a\\x1a\"},\n{{0x06,0x3b,0x90,0x25,0xe3,0x21,0xe9,0x72,0xd6,0x53,0xa0,0x62,0xbe,0x34,0xf9,0x93,0x65,0xaf,0xfd,0xcc,0x98,0xec,0x9f,0xf4,0x3e,0xf4,0x22,0xbe,0x0f,0x80,0x44,0x60,},{0x10,0xd0,0x1a,0x63,0x01,0x2a,0xc0,0x99,0x56,0xba,0x9e,0xd6,0x1d,0xf3,0x5b,0xb7,0xaf,0xe3,0x65,0x8b,0xb3,0x00,0x48,0x52,0xe4,0x71,0x74,0xbd,0x07,0xdd,0x4d,0xe7,},{0x85,0xc8,0x1d,0x6b,0x0d,0x85,0x78,0xfa,0x58,0xe1,0x3a,0xb3,0x91,0x00,0x15,0x28,0xb4,0x6a,0x1d,0x63,0xa0,0x32,0x7c,0x7a,0x4a,0x04,0x08,0x7f,0xc6,0x68,0x75,0x8a,0xa6,0x5c,0x01,0xd5,0xa1,0x50,0xf9,0x35,0x67,0x4e,0xf3,0x07,0x50,0x7e,0x6f,0x4c,0x91,0xe1,0xfc,0x35,0x00,0xb2,0x6f,0x64,0x9b,0xee,0xa8,0x7d,0x27,0x56,0x37,0x04,},\"\\xa7\\xee\\xd2\\x96\\x52\\x84\\x4e\\xe0\\x04\\x9b\\xaf\\xb2\\xcf\\x63\\x40\\x29\\x71\\x02\\x0d\\x7e\\x65\\xc1\\x0b\\x91\\xac\\x57\\x26\\xee\\xa8\\x6f\\x40\\xdb\\xc5\\x3c\\x3f\\x0a\\xbe\\xde\\xba\\xf6\\xcc\\x44\\x9b\\x4f\\xea\\x48\\xc0\\x15\\xfe\\x4d\\x90\\x7b\\x3e\\x55\\x05\\xcf\\xf5\\x0a\\x12\\x18\\x19\\xa2\\xe4\\xa8\\xa2\\x96\\xd5\\x75\\x10\\x15\\xbb\\xcd\\x7e\\xf6\\xfb\\x7c\\x27\\x27\\xbb\\x00\\x0b\\xe1\\x34\\x2a\\x7d\\x14\\xbc\\xa9\\x79\\x04\\xed\\xfe\\x8b\\x18\\xdd\\xb6\\x39\\x33\\x41\\x83\\x27\\xa5\\xaf\\x81\\x7e\\x95\\xba\\xd7\\x4e\\xb7\\x90\\x20\\x36\\x15\\xd0\\x82\\xe7\\x14\\x93\\xea\\xd4\\x7c\\xcc\\x09\\x01\\xa2\\xca\\x9f\\x50\\x13\\x3c\\x44\\xef\\x85\\x08\\xd5\\x1f\\xb7\\x3c\\x61\\x6f\\x01\\x47\\x53\\x22\\x45\\x82\\x2d\\xd1\\x02\\xb3\\x37\\xa1\\xb2\\xaa\\xe2\\xef\\xc7\\x2d\\xca\\x7a\\x94\\x19\\xd5\\x98\\xa6\\x47\\x52\\x33\\xdc\\x1a\\x4e\\xe0\\xec\\x6d\\x05\\xda\\x12\\xa2\\xb2\\x87\\xcb\\x77\\xff\\xaf\\xdd\\xe2\\xd0\\xac\\xc2\\x81\\x99\\x93\\x3e\\x66\\x21\\xee\\xc1\\x6a\\xb4\\x24\\x51\\x70\\xcf\\x02\\xda\\x80\\xd4\\x92\\x26\\x31\\xa2\\x32\\x72\\x91\\x51\\x65\\xad\\x88\\x72\\x27\\x50\\x03\\x5d\\x2a\\x09\\x77\\xbc\\x79\\x1d\\x14\\xfb\\x3d\\x8c\\xb0\\x2b\\xc7\\x7f\\x7c\\x71\\xbe\\x52\\x42\\x62\\x9a\\x4c\\x9a\\x58\\x8d\\xfd\\xde\\x95\\x78\\x49\\x4d\\x8b\\xaa\\x4e\\x68\\xf5\\x19\\x4b\\x80\\x02\\xc8\\xe3\\x78\\xa0\\xe8\\x33\\xb7\\xc1\\xa9\\x69\\x81\\xc4\\xfb\\x05\\xe4\\x57\\xff\\x48\\x26\\x0b\\x72\\x49\\x3c\\xbc\\xb8\\x2a\\xe1\\x16\\x73\\xd1\\x4c\\xee\\x85\\x28\\x8f\\x63\\x70\\xbd\\x4b\\xca\\x92\\x51\\xa7\\xe2\\x14\\xc3\\xeb\\x79\\xe7\\xbb\\x6f\\xce\\xbb\\x16\\xc9\\xe0\\x56\\xf2\\x9b\\x62\\x72\\x74\\x3e\\xfa\\x6f\\xe8\\xbf\\xd2\\x55\\x97\\xce\\x86\\x89\\x8a\\xb3\\x05\\x9e\\xb0\\x23\\x1c\\x73\\xb5\\x30\\x59\\x03\\xfd\\x13\\x19\\xbd\\xf4\\x9e\\x59\\x9d\\x8b\\xbc\\xd7\\x4a\\x8b\\x97\\x67\\x30\\x8b\\x61\\x56\\x3c\\xcb\\xac\\xd3\\x8f\\xc5\\x0c\\x83\\xab\\x44\\xca\\x75\\x9d\\xc9\\xb6\\x5b\\x2a\\x4b\\x54\\x7c\\x50\\x97\\xf2\\x20\\xc1\\xc8\\x8b\\x2b\\x0a\\x48\\xf6\\x5f\\x91\\xfe\\x78\\xb1\\x50\\x12\\x78\\xe1\\xe3\\x04\\xde\\x58\\xb4\\xc8\\x2a\\x5c\\x39\\x99\\x81\\x09\\x8a\\x17\\x84\\xeb\\x90\\x42\\x50\\x18\\x59\\xf2\\xa9\\x3f\\x31\\x7e\\x41\\x77\\x2f\\xd5\\x2f\\x97\\x2e\\x51\\xb0\\x7e\\xd9\\x4d\\x31\\x4e\\x1d\\x1a\\xf4\\xed\\x82\\x90\\x9a\\x0b\\xef\\x67\\x1f\\x54\\xb5\\x5d\\xb7\\xb7\\x0d\\xa1\\xf7\\x18\\xc8\\xe6\\x48\\xae\\xdd\\x6d\\xa6\\x4b\\x05\\x77\\x05\\x26\\xf1\\x2b\\xc4\\x3f\\x68\\xb9\\x55\\x48\\xda\\xc5\\x08\\x09\\xa6\\x87\\xdb\\x97\\xd7\\x3f\\x06\\xf4\\x7e\\xd0\\x88\\x31\\xb6\\x0a\\x28\\xe9\\x82\\x92\\x06\\x32\\x05\\x8f\\x0e\\x6c\\x90\\xc0\\x18\\x7f\\xf4\\x45\\x64\\xf8\\x1e\\xfd\\x8f\\xd9\\x3e\\x32\\x7b\\xc6\\xd8\\x0b\\x49\\x0e\\x08\\x8b\\x9a\\x10\\x03\\x6c\\x80\\xdc\\xda\\xd4\\x9d\\x2b\\xe0\\x74\\xfb\\xba\\x31\\xe0\\x6f\\x71\\x80\\xe5\\xad\\x1c\\x88\\x23\\xd6\\x09\\x66\\xa9\\xce\\x15\\x50\\x3c\\xe6\\x0d\\xd4\\x0e\\x91\\xee\\xf2\\x35\\x9d\\x83\\xd7\\x0d\\x98\\x40\\x1d\\xde\\x7b\\xe3\\xc6\\xb0\\x7e\\x57\\xd4\\xe4\\x7d\\x04\\x21\\x76\\x33\\xd8\\xe2\\x63\\xca\\x34\\x8f\\x81\\xfb\\xe9\\xa4\\xa6\\x2f\\x45\\xd7\\x7c\\x84\\x3b\\x6b\\x1a\\xd2\\x84\\x66\\xd9\\xda\\xfb\\x1b\\x91\\x0b\\x34\\x8e\\xd8\\x7c\\x68\\x6c\\xab\\x29\\x2d\\x48\\x0c\\x19\\x1d\\x18\\x7b\\x40\\x4a\\x9b\\x1d\\x13\\x2b\\xa4\\xe2\\x93\\xd3\\xad\\xa9\\x91\\x72\\xac\\xc1\\x21\\xfe\\x66\\xb8\\x45\\xb9\\x8b\\x16\\x0c\\x58\\x23\\xf6\\x01\\xc7\\x75\\x8f\\xb2\\x6c\\xae\\xe8\\x57\\x01\\x59\\x5b\\x2d\\x52\\xca\\xa2\\xf5\\x68\\x8a\\xa2\\xbf\\x2f\\x6c\\x4b\\xb6\\x37\\xf8\\xe0\\x0f\\x49\\xab\\x6c\\x26\\xbc\\x6a\\xd8\\x9e\\x13\\x67\\xfd\\x28\\xe4\\x91\\x7d\\x25\\x08\\x93\\xa7\\xb3\\x2d\\x39\\x66\\x0b\\xde\\x8d\\xb4\\x9f\\x08\\x6f\\xb7\\x39\\xe5\\x60\\x12\\xc3\\x6b\\xea\\x0b\\x26\\xcf\\x6d\\x93\\x57\\x94\\x0b\\x00\\xd5\\xa4\\x52\\x8f\\x90\\x59\\xaa\\xf0\\x86\\x69\\xe5\\xf4\\x6c\\x99\\x5e\\x60\\xf8\\x87\\xb5\\xc4\\xab\\x88\\xac\\x74\\x42\\xed\\x01\\xa1\\x4c\\x6a\\x42\\x00\\x6b\\xaf\\x1f\\x34\\x3f\\xef\\xe3\\xe4\\xac\\xa8\\x43\\xa3\\x24\\xe1\\x76\\xb2\\xfe\\x7e\\xc7\\x88\\x3d\\x1c\\xbd\\x06\\x8b\\xc2\\xfc\\x96\\x2f\\xfa\\x60\\x24\\x4f\\x65\\x4c\\x77\\xac\\x56\\x50\\x81\\x7d\\xc0\\x84\\x46\\x55\\x45\\xa9\\x23\\x0a\\x74\\x82\\x6b\\x0c\\x50\\xeb\\x85\\x25\\x2a\\x88\\x6f\\xf2\\xb1\\xaf\\xea\\xf8\"},\n{{0x88,0x3c,0xc1,0x38,0x17,0x57,0xb0,0xfe,0x04,0x55,0xb7,0x7b,0xc9,0xcd,0x0d,0xd4,0x64,0xd2,0xb4,0xbf,0x0c,0x7a,0x3c,0x0c,0x2d,0xc7,0x75,0xfb,0x78,0xaa,0x37,0x32,},{0x83,0xa8,0xb6,0x69,0xcc,0xd0,0x12,0x45,0xce,0x3b,0x81,0x8d,0xcb,0x1b,0x58,0x8f,0x86,0x53,0x58,0x50,0xe6,0xc7,0x10,0xc7,0x92,0x17,0xfe,0x43,0x98,0x24,0xf3,0xfa,},{0xc7,0xcf,0xd5,0xc9,0xfe,0x93,0x0d,0x15,0xa1,0x1e,0xbb,0x34,0xe3,0x43,0x1f,0x48,0x9d,0xa0,0x10,0xeb,0x19,0x3e,0xdb,0xfa,0x6f,0x23,0xd5,0xd1,0x4d,0xd8,0xfe,0xab,0xd7,0x88,0x0d,0x2d,0x5a,0x56,0x00,0xd3,0x85,0x46,0xce,0x3b,0xc6,0x4a,0x86,0x29,0x1a,0x1c,0xe3,0x1f,0x27,0x2f,0xf0,0x20,0xdf,0x8c,0xb6,0xa0,0xfd,0x4d,0x3a,0x0d,},\"\\xff\\xec\\x29\\x3d\\x12\\xea\\x63\\x6c\\xa4\\xc4\\xa0\\xa5\\xe2\\xdb\\x15\\x34\\x26\\x39\\xc4\\x76\\x67\\x4d\\x2e\\xbd\\xab\\x4a\\xef\\xd4\\x04\\x6b\\x5d\\xdb\\x56\\xae\\xb2\\x10\\xc1\\x19\\xaf\\xdf\\xb8\\xa8\\x91\\x28\\xa3\\x4f\\x6d\\x77\\xf2\\x61\\xed\\xea\\x07\\x72\\xa2\\xf8\\xdb\\x14\\x0a\\x26\\x40\\xfd\\x8e\\xca\\xdb\\x0b\\x47\\x92\\x16\\x9b\\x6b\\x28\\x10\\xae\\xe2\\xc5\\xcd\\x83\\x52\\x88\\xbf\\xf4\\x93\\xbc\\xeb\\xee\\xea\\x28\\xa7\\xa2\\x48\\xc3\\x61\\x16\\x54\\x0f\\xa7\\x17\\x36\\xd6\\x6b\\x0a\\x47\\x5b\\x5f\\xa9\\x2c\\x0d\\x46\\x00\\x2f\\xca\\x7a\\x1e\\x69\\xd1\\xb5\\x9e\\x81\\xa3\\xa6\\xd4\\xf3\\x39\\x76\\x9d\\xae\\xb2\\x0b\\x5f\\x9d\\x75\\xc4\\xc2\\x8f\\x69\\x21\\x32\\xd2\\x8d\\x3c\\x56\\x4c\\x09\\xfe\\x3d\\xcc\\xa0\\x35\\x9c\\x3c\\x63\\xec\\x37\\x7a\\x33\\xf9\\xee\\x87\\x4d\\x8a\\x78\\x9d\\x77\\xc9\\x6a\\xc0\\x5f\\xdf\\x3a\\xb3\\x8b\\x2c\\x82\\x74\\xa9\\x02\\xef\\x8b\\xb7\\xf4\\x67\\xfc\\x7e\\x07\\x3c\\x77\\xb1\\xdb\\x5f\\xc8\\xef\\x96\\x6c\\x12\\x0c\\x4d\\xae\\x3f\\xb7\\xf5\\xb7\\x4a\\xbb\\x99\\x01\\x66\\xc8\\x12\\xa5\\x25\\xd1\\x23\\xf7\\x6e\\xd5\\x12\\x12\\x50\\x80\\xa1\\x53\\x4f\\x3d\\x8b\\xdc\\xcc\\x54\\x1f\\xc9\\x75\\x90\\x28\\x75\\x46\\x09\\x6f\\xc8\\x80\\xbf\\xcf\\xdd\\x00\\xe6\\x5c\\x0e\\xbf\\x4a\\x09\\xfd\\x64\\x76\\xce\\x1b\\x7c\\x8f\\xaa\\xa5\\xa1\\xcc\\x27\\x86\\x71\\x9a\\x30\\xd8\\x25\\x58\\x11\\x18\\x47\\x52\\xa8\\x8b\\x08\\xac\\x9f\\x0f\\xf1\\xd6\\x26\\x2f\\x25\\x86\\x94\\x0a\\xfe\\x1f\\xe4\\x5e\\x0b\\x56\\x34\\x48\\xa5\\x5f\\x30\\x30\\xe4\\xc3\\x9c\\x1f\\x3f\\x86\\xa7\\x33\\x67\\x03\\x80\\xea\\xb0\\x88\\xe3\\x93\\xde\\x09\\xd1\\xf5\\x08\\xd2\\xfb\\xca\\xfc\\x64\\x9a\\xea\\xe6\\xb8\\xc3\\x0e\\x32\\x9e\\xc3\\xfd\\x28\\x29\\xbe\\x6d\\xb0\\xab\\x8e\\x63\\x7e\\xa1\\x09\\x5b\\xdc\\x3d\\xf3\\xac\\xc2\\x3d\\x3c\\xf7\\x05\\xa9\\x54\\x2c\\x19\\xe5\\x90\\x92\\xec\\x41\\x3a\\x4e\\x2b\\xd5\\xde\\xd2\\x8c\\xd3\\x4d\\xdb\\x3d\\x32\\x94\\x9a\\xa4\\x87\\xf1\\xc3\\x37\\xd6\\x97\\x9c\\xf5\\x12\\x62\\x2d\\xbf\\xb7\\xda\\x1c\\xbb\\x1c\\x7e\\x5a\\xbe\\xea\\x70\\x09\\xe2\\x94\\x3f\\xfb\\xa2\\x25\\x2e\\x1d\\x86\\xec\\xa9\\xd6\\xd5\\xc2\\x46\\xcd\\x2e\\x13\\x4a\\x3e\\x5d\\xad\\x37\\xef\\xef\\x71\\xce\\x39\\x7a\\xda\\xfb\\xd9\\xe7\\x2b\\x3f\\x9a\\x86\\xff\\x0f\\x5d\\x81\\x2c\\x46\\x22\\x5b\\xeb\\xd0\\x70\\x3b\\xc5\\xcc\\xe9\\xc6\\x45\\x82\\x00\\x8f\\x7e\\x55\\x8c\\x40\\xa3\\xb3\\x52\\x20\\x96\\xd1\\xaa\\x2b\\x61\\xbc\\x90\\xcd\\x88\\xc6\\x28\\x5d\\x94\\x20\\x87\\xd8\\xa4\\x66\\x5a\\x0e\\x64\\xd3\\x57\\x2f\\x74\\x68\\x9b\\x4f\\x24\\xef\\x40\\x0d\\x74\\x1b\\x57\\x14\\x06\\x13\\x47\\x14\\x44\\xde\\xcc\\x65\\x4a\\xf0\\xff\\xb2\\xed\\xfd\\xf9\\xfd\\xd0\\x75\\x09\\x81\\x90\\xb3\\x4c\\xde\\x28\\xdd\\x16\\x68\\x72\\xc6\\x08\\x65\\x67\\xa6\\x87\\x61\\xce\\xf2\\x5d\\xa4\\x0b\\xd4\\xc3\\xd3\\x4f\\xdd\\xd7\\x2e\\xe5\\x65\\xb0\\xb9\\x37\\x67\\x8e\\xe8\\x43\\x49\\xd1\\x16\\x0f\\x5f\\x07\\x05\\xf8\\x95\\xd0\\xf1\\x41\\xce\\x8f\\x51\\xa1\\xe4\\xfd\\x2d\\xc4\\x70\\x4b\\x52\\x7a\\x40\\x25\\xa9\\x39\\xcb\\x2b\\xb7\\x88\\x57\\xeb\\x18\\xd7\\x88\\x72\\xed\\xc9\\xee\\x70\\xe6\\x0b\\x2a\\x42\\x70\\x0a\\x19\\x8f\\x4f\\xff\\x6c\\x31\\x92\\x51\\x68\\xbe\\x07\\x7d\\xc2\\x3c\\x32\\x2a\\xbb\\xca\\x97\\x36\\x1f\\xec\\xaa\\x3f\\xcb\\x19\\x6e\\x65\\x6c\\x12\\x8f\\x39\\x82\\xfe\\x11\\xe5\\x51\\xa4\\xa0\\x88\\x5d\\xa6\\x0d\\x39\\x7d\\x0e\\x40\\xd0\\xd8\\x97\\x26\\x2f\\x1b\\x4b\\x67\\x2f\\x78\\xa2\\xd2\\xad\\xfc\\xdd\\x6e\\x15\\x25\\xc2\\x6e\\x71\\x95\\xfb\\x9a\\xc6\\x06\\xbb\\x1b\\xa4\\xa9\\x89\\x08\\x03\\xb4\\xbd\\x84\\x34\\x6a\\xe8\\xd8\\xc7\\x19\\x6c\\x90\\xae\\xcc\\xb2\\x96\\xa4\\xc3\\xeb\\x4e\\xfa\\xcb\\xfc\\xb6\\x2e\\x38\\x3b\\x8a\\x49\\x4a\\xc7\\x23\\x56\\x2d\\x0d\\x8c\\x37\\x91\\x87\\xa9\\x2e\\x3b\\xda\\x6b\\x15\\x69\\x47\\x6a\\xed\\x21\\xae\\xd7\\xa0\\x56\\xb4\\xa5\\x82\\x67\\x44\\x01\\x7c\\xc0\\x06\\x0b\\x4d\\x55\\xfa\\x87\\x72\\xb5\\xb1\\xc1\\x5f\\x57\\x48\\xad\\x72\\x98\\x00\\x5a\\xec\\xbc\\xbd\\x90\\xa3\\xe5\\xc6\\x15\\x9a\\x86\\x74\\xab\\xbb\\xa3\\x79\\x14\\x41\\x50\\x02\\xb5\\xa6\\xef\\x5d\\xf3\\xc6\\x49\\x42\\x6e\\xa1\\x27\\x5a\\x01\\xd8\\x0a\\xdf\\x49\\x0a\\xc5\\x46\\x06\\x2d\\x93\\x99\\x9a\\x6d\\xcc\\xac\\xb9\\x6a\\x09\\x04\\xad\\x33\\xd9\\x05\\x76\\xdc\\x6a\\x21\\xb6\\x72\\xe8\\xff\\xb0\\x66\\x13\\xfb\\x3f\\x14\\xe6\\xcb\\xdd\\xe8\\x8c\\x24\\x37\\xc9\"},\n{{0x5e,0x40,0xa7,0xaa,0xbb,0xb0,0x83,0x0a,0x9a,0xb0,0xfd,0x79,0x69,0x0e,0xe0,0x43,0x39,0x01,0xc6,0xcb,0x06,0x76,0xab,0xe4,0xbb,0xa0,0x6f,0x5b,0xbe,0x58,0xfa,0xc2,},{0x4d,0x4f,0x28,0xfe,0x09,0xc4,0xaa,0xbf,0xca,0x01,0xef,0x6e,0xe7,0xfd,0x63,0x72,0xfb,0x62,0xdb,0x61,0xaa,0xee,0x82,0x7c,0x43,0xfd,0x1a,0x6d,0x1c,0x25,0x90,0x32,},{0x59,0x76,0x72,0xab,0x8d,0x3a,0x60,0xde,0x54,0x56,0xfc,0xc9,0xc3,0x82,0x53,0xf5,0xf3,0x7b,0x80,0xe7,0x4a,0x00,0x7c,0x9f,0x6d,0xb9,0x09,0xd2,0x7d,0x0e,0xad,0x16,0x27,0x89,0x24,0x49,0x94,0xf3,0x5b,0x80,0xd6,0x1b,0xe1,0x99,0xc4,0x17,0xc7,0xea,0x90,0x1b,0x98,0xcc,0x63,0xfe,0x3c,0x50,0xfc,0x3c,0x63,0x38,0x49,0x0f,0xa2,0x06,},\"\\xfd\\x4e\\xc8\\xb3\\x4f\\xc6\\xb7\\x43\\x81\\x3f\\x59\\xe2\\xfd\\x1f\\xef\\xa8\\x70\\xf5\\xa9\\x70\\xe2\\xeb\\x75\\x16\\xef\\x7c\\x30\\x6f\\x4b\\x82\\x3f\\xfe\\xe9\\x2d\\x60\\x1f\\x76\\x5d\\x79\\xca\\x14\\x6a\\xba\\x8b\\xc6\\xe7\\x98\\x44\\x55\\x99\\x35\\xcd\\xdc\\x24\\x26\\x49\\xc0\\x59\\xec\\xf2\\xdb\\x84\\xfd\\xc2\\x19\\x36\\x66\\x88\\xa8\\x8f\\xc2\\x5b\\x85\\x1c\\x36\\x61\\xe5\\x19\\x88\\xc2\\xbf\\x73\\xbb\\x8e\\x3d\\xc1\\x6d\\x22\\x41\\x5a\\xb1\\xa7\\xb3\\x55\\x79\\xda\\xac\\x73\\x25\\xe3\\x19\\x15\\x7d\\x7d\\xa5\\xfe\\xe8\\x7c\\x93\\xa4\\xdf\\xcb\\xaf\\xc9\\x2f\\xba\\x7e\\x17\\xcc\\x68\\xe3\\x90\\x37\\x33\\xc6\\xc8\\x01\\x57\\x2d\\x90\\x73\\x20\\xb2\\xfe\\xb5\\x17\\x10\\xe8\\x56\\xa1\\xf7\\x6f\\x85\\xa7\\xee\\x1a\\x11\\xe6\\x2d\\x2e\\x45\\xa3\\x52\\x93\\x8d\\xd8\\xcf\\xc2\\xbc\\xcb\\x90\\x2d\\xea\\x44\\x4f\\xaa\\xae\\x6d\\x84\\xc5\\xf3\\x91\\xe1\\x0a\\xef\\x76\\x92\\x8a\\x45\\x15\\x3d\\xb6\\xcd\\x25\\xa2\\xbf\\x35\\x3d\\x80\\xd9\\x7b\\xf4\\xb3\\x80\\x86\\x05\\xe8\\x98\\x00\\xd2\\x98\\x40\\xea\\x60\\x97\\x8d\\x9e\\xc9\\xb2\\xc3\\x02\\x74\\x98\\x88\\xf9\\xde\\xbc\\x84\\xdd\\x1e\\x2a\\x79\\xaa\\x0b\\x6b\\xa0\\x2a\\x03\\x91\\x93\\x08\\x1b\\xdb\\xff\\x05\\x99\\xa1\\x4d\\x91\\x8c\\x0c\\x8d\\xea\\xc4\\xf6\\x0b\\x6e\\x99\\x47\\x4a\\xb5\\x30\\x11\\x74\\x10\\x34\\xfe\\x2a\\x20\\xcf\\xf4\\xe0\\xf0\\x23\\x42\\x4c\\x8e\\x57\\x97\\x76\\x8a\\xd5\\x3d\\xf6\\xd0\\x1a\\x24\\x01\\x1f\\xa9\\x0f\\x0b\\xb1\\xd5\\x06\\x9c\\xdb\\x36\\xb4\\x50\\xf4\\x33\\x11\\x0c\\x2c\\x56\\xf3\\x4a\\x1d\\xe4\\x26\\x09\\x14\\xcd\\x46\\x96\\xb1\\x4a\\x09\\xc0\\x26\\x8b\\x2a\\xe2\\xe9\\x8e\\x6b\\x4e\\x99\\x2b\\x91\\x25\\xf8\\x78\\xf1\\xac\\x09\\x82\\x31\\x70\\x62\\x83\\x88\\xf0\\xf6\\xe2\\x56\\x25\\x9c\\xa7\\x86\\xbb\\xe1\\x44\\x88\\x4c\\xb2\\x98\\xcc\\x04\\x3d\\x02\\xf5\\xc3\\xdc\\x68\\x4f\\x78\\x7f\\xaf\\x16\\xc1\\x0f\\xdd\\x84\\x37\\xa8\\xc3\\x09\\x74\\x63\\xbd\\xb9\\x9b\\x78\\x03\\x0f\\x94\\x74\\xfc\\x5c\\x99\\x51\\xdc\\x75\\x26\\x49\\x05\\x86\\xfe\\x1c\\x2d\\xb0\\x54\\x11\\x34\\x14\\x60\\x23\\x9d\\x5e\\x8b\\xc5\\x30\\x65\\x90\\x2b\\x95\\xfb\\xa2\\x82\\xc2\\x76\\x65\\xe8\\x69\\xa1\\x9d\\xae\\x84\\x60\\x6d\\x17\\x26\\x67\\x51\\x55\\xd3\\x80\\x39\\xb9\\xe5\\x5d\\xb4\\xd5\\xce\\xec\\x95\\xcd\\x6d\\x87\\xf8\\x5e\\x99\\xdd\\xe5\\x4a\\x04\\x76\\x1e\\x6e\\xad\\xa6\\x61\\x9d\\xa8\\x95\\xb6\\x54\\xfe\\x38\\x45\\xe8\\xa6\\x0f\\x3a\\x3b\\x32\\x48\\x3d\\x6d\\x27\\x97\\x8a\\xf5\\x45\\x02\\xb2\\x20\\xe4\\x78\\xdb\\x78\\xcf\\xf7\\x7a\\x9c\\x97\\xfb\\x79\\xfb\\x5a\\xcf\\x56\\x28\\x9f\\x38\\x1a\\xcb\\x10\\xde\\x64\\xc3\\xf2\\x38\\x42\\xb1\\x2b\\xf5\\xf1\\xb2\\x83\\xbd\\x25\\xd4\\x8d\\x09\\x12\\x8f\\xb5\\x5d\\xda\\xe2\\x55\\xbe\\xb7\\xc6\\x6a\\x74\\xcf\\x6f\\x06\\x95\\xa4\\xf8\\x28\\xcb\\x29\\xe4\\xaf\\xdb\\xb3\\xb4\\x2a\\x23\\x5d\\x4f\\xdb\\x66\\xb9\\x63\\xac\\x8f\\x68\\xe8\\x2b\\x00\\xa1\\xc4\\x50\\x08\\x63\\x29\\x62\\x47\\x17\\x8c\\xfd\\xef\\x80\\x3b\\xb7\\xb1\\x14\\xf0\\xc0\\x32\\x76\\xf6\\x71\\x66\\x9a\\x08\\x7d\\x92\\x28\\xa3\\x7a\\xe7\\xb9\\x9b\\x06\\x15\\x49\\xc1\\xcf\\x8e\\xc1\\x72\\x46\\xea\\x1e\\xe0\\x3d\\xbc\\x88\\xbf\\x42\\x64\\x16\\xd5\\x86\\x57\\x2f\\xf1\\x0a\\x31\\x45\\x60\\x6f\\x27\\x84\\xe4\\x35\\x7b\\xe4\\xed\\xee\\xc6\\xc3\\xa7\\xbf\\x11\\xbb\\x5b\\x0e\\x90\\xcf\\x50\\xed\\xaf\\x89\\x1e\\x51\\xd2\\x63\\x57\\xbf\\xc8\\x53\\xce\\x23\\xb2\\x99\\x15\\x5c\\x82\\xc1\\x03\\x1d\\xfa\\x64\\x07\\x4d\\x72\\xa0\\x9d\\x29\\x72\\x0e\\xad\\x6e\\xbb\\xbf\\x75\\xd5\\x73\\x8e\\x32\\xcd\\xa6\\xb6\\x46\\x6a\\x8d\\xef\\x6b\\x50\\xa1\\xed\\x9b\\x86\\x5a\\x9a\\x88\\xa0\\x80\\x18\\xac\\xb5\\x01\\xa4\\xde\\x9d\\xb5\\x4d\\x05\\x22\\xce\\x9c\\xec\\x7a\\x06\\xbd\\x9a\\x5f\\x86\\xb0\\xb4\\x6c\\x07\\xbf\\x3e\\x7f\\x5a\\x42\\x6f\\xf6\\xb4\\xbb\\xe1\\xe0\\x03\\x13\\xa5\\xac\\x27\\x19\\xa9\\x59\\xed\\x44\\xee\\x0a\\x44\\xbd\\x97\\xda\\x6d\\xb2\\xcb\\x97\\x1b\\xd6\\x83\\x34\\x90\\x89\\x49\\xed\\x85\\x0f\\xbf\\x73\\xd0\\xe0\\x20\\x49\\xda\\x18\\x1c\\xce\\x9c\\x2d\\x9c\\xa1\\xb6\\x24\\xc8\\xd8\\x7c\\xf9\\x04\\xeb\\x82\\x1d\\xc7\\x95\\x92\\x95\\xda\\x57\\x77\\x92\\x06\\x60\\xb4\\x3c\\xcc\\x25\\xcd\\x38\\x9f\\x15\\x7f\\x67\\xfa\\x03\\x90\\xfe\\xac\\x97\\xa7\\x52\\xc1\\xac\\x20\\x4c\\x21\\xdf\\x56\\xbb\\x0f\\x4f\\xc0\\x16\\x41\\xb4\\x80\\xaf\\x2b\\x89\\xb5\\xd1\\x6d\\x4a\\x0b\\xcb\\x0a\\x50\\xb8\\x2b\\x0e\\x04\\x84\"},\n{{0x3a,0x34,0x13,0x6a,0x97,0x34,0x80,0xd9,0x70,0x06,0xdc,0x27,0x93,0x58,0xe6,0x60,0x62,0x93,0xd8,0xcb,0xc1,0xa4,0x4e,0xe5,0x52,0x33,0xaf,0x2b,0x52,0x64,0xb9,0x0c,},{0xe5,0xef,0xfd,0x92,0x1b,0xe8,0xee,0xc5,0x30,0x75,0x2f,0xcc,0xc5,0x76,0xef,0x0d,0x9b,0xcd,0xe4,0xb3,0x2c,0xc6,0x49,0xd3,0xf7,0x95,0x47,0x17,0x56,0x28,0x60,0xcc,},{0x42,0x5f,0x27,0x22,0x12,0x83,0x57,0x55,0xad,0xcc,0x05,0x22,0xc6,0xf6,0xe0,0x5f,0x68,0x00,0x8a,0x3b,0xe9,0xba,0x59,0x74,0xe4,0x20,0xc4,0xc5,0xcb,0x56,0xe6,0xc5,0x5d,0xec,0x0d,0xe3,0x47,0xb1,0x6c,0xae,0xf8,0xbd,0x33,0xb7,0x1b,0x44,0xc8,0x35,0x7d,0x05,0xb6,0x32,0x1d,0x7b,0xf4,0x93,0xd2,0x58,0x61,0xdb,0x48,0x7b,0xd6,0x03,},\"\\x98\\x1c\\x8e\\x10\\x90\\xe3\\x96\\x95\\x1b\\x07\\x2e\\xf8\\x49\\x70\\x62\\x02\\x08\\x97\\xbf\\x7d\\xd7\\xad\\x50\\x5b\\x4d\\x6d\\xc1\\x1b\\x3e\\x1d\\xbc\\xb0\\xda\\x24\\x99\\x84\\xa1\\x40\\xe1\\x64\\xfc\\x2e\\x02\\xb3\\x1d\\xa3\\x98\\x46\\x55\\x4a\\xa8\\x90\\x5b\\xc8\\xb3\\xdf\\x8a\\x76\\xbf\\x60\\xeb\\x5f\\xfc\\xf2\\x2c\\x97\\xb6\\x71\\x22\\x7d\\x24\\x90\\x71\\xda\\x8f\\xf6\\xbb\\xa7\\x5b\\x2f\\x76\\x68\\xce\\xc1\\x9a\\x89\\xe6\\x47\\x5a\\x12\\x46\\x3d\\xab\\xf3\\x68\\xb3\\xca\\x24\\x45\\xbb\\x30\\x35\\xcc\\x00\\xfa\\xe8\\x5b\\x70\\x72\\xfb\\xcf\\x59\\x54\\x01\\x75\\x5b\\x80\\x51\\xe6\\x09\\x70\\x65\\xae\\x42\\x9f\\x18\\xee\\xb1\\x3f\\xfa\\x6d\\xde\\x59\\xdf\\x6f\\x3c\\x20\\x6b\\xfd\\x9c\\xe1\\xf8\\xa8\\x00\\xc8\\x59\\x0a\\x40\\x21\\xd1\\x60\\xf6\\x6d\\x67\\x40\\xa3\\x69\\xae\\x83\\x56\\x17\\x53\\x8b\\x58\\x90\\x23\\x1f\\x13\\xc5\\x66\\x7b\\xaf\\x51\\x0a\\x60\\x6b\\xda\\xa8\\x4b\\x8d\\x10\\xee\\x60\\x15\\xe1\\x2a\\x4c\\x1e\\xc0\\xbd\\x04\\x21\\xa2\\x94\\xc5\\x1c\\xf6\\x3b\\x5d\\x1f\\x05\\x8e\\x11\\x53\\xdc\\x42\\x5d\\x10\\xce\\xe8\\xb1\\xb0\\x84\\xd6\\xc2\\x93\\x47\\xe9\\x6f\\x0f\\x31\\xb8\\x39\\x60\\x7d\\x07\\x8b\\x79\\xa9\\x0c\\xa3\\xd1\\xf0\\x63\\x80\\x7a\\x46\\x3b\\x7c\\x32\\xf4\\x5a\\x53\\x44\\x98\\xd7\\x1d\\x47\\xed\\xc3\\xb1\\x7a\\x4d\\xff\\x27\\xfe\\xdc\\xff\\xab\\x30\\x1f\\x34\\xf1\\xa6\\x4c\\x02\\x78\\xa5\\x35\\x89\\x34\\x9a\\x23\\x3a\\xf3\\x0b\\x1e\\xc1\\xae\\x41\\x0f\\x7b\\x16\\x30\\xc7\\x14\\x5c\\xa4\\x2c\\x96\\x63\\xf5\\x12\\xe8\\xa5\\x78\\x26\\x7d\\xc9\\x5e\\x83\\x28\\x9c\\x17\\x03\\x2e\\x09\\x78\\x2e\\x2f\\xe8\\xe1\\x6e\\xfb\\x87\\xf0\\x3c\\xa0\\x3b\\x11\\x95\\x61\\x4f\\x89\\x96\\x1c\\xa3\\x93\\x9d\\x3b\\xdf\\x73\\x72\\x21\\xa2\\x2d\\x7a\\x18\\xec\\x30\\xfc\\x12\\x6d\\x0c\\xa6\\x63\\xe8\\x8d\\x60\\x60\\xd0\\x4c\\x6a\\x44\\xe5\\x61\\x6e\\x55\\x6e\\x07\\xd6\\xd4\\xa8\\x47\\xf1\\x71\\x1c\\xf4\\x37\\x17\\x81\\x0c\\x70\\xaa\\x4b\\xe7\\x30\\x27\\x8b\\x3b\\xd6\\x55\\x5c\\x95\\x4d\\xc6\\xed\\xb0\\x9d\\xb0\\x8f\\x0e\\x21\\x18\\x03\\x59\\x62\\x80\\xf3\\xc7\\x86\\x8d\\x23\\x42\\xcc\\x23\\x08\\xea\\xae\\x4d\\xa1\\x91\\x35\\x14\\x66\\x4b\\x1d\\xb9\\x62\\xe9\\x9c\\x8a\\x8c\\xff\\xe5\\x79\\x31\\xf5\\xdf\\xcd\\xdb\\xc1\\xcb\\xb3\\x6c\\xe1\\xc8\\x42\\xe2\\xdd\\xde\\xad\\xfd\\x7e\\x7d\\x0a\\x50\\x48\\xcd\\xcb\\x96\\x1b\\x14\\xf3\\x5f\\x43\\x5e\\x73\\xa6\\x83\\xc8\\xce\\x25\\xc8\\x16\\x81\\x25\\x66\\xfd\\xf8\\x17\\xe0\\xd3\\x36\\xae\\x0b\\xd2\\x47\\x32\\x85\\x12\\xb2\\xa8\\x56\\x76\\x32\\xbf\\x20\\x55\\x3d\\x9b\\xd6\\xfe\\x15\\x7f\\x22\\x0f\\xfb\\x0b\\x46\\xeb\\xae\\x89\\xa7\\x04\\x59\\x72\\x8a\\x57\\xee\\xd1\\x79\\x62\\x56\\xf1\\xbd\\x50\\xb6\\xd5\\x47\\xea\\x3e\\x25\\xfa\\x59\\x13\\xd3\\x89\\xa2\\x25\\x83\\xe9\\x15\\xeb\\x49\\xde\\x35\\xa9\\x7b\\x5a\\xcc\\x52\\x1d\\xb0\\xd0\\x05\\xc2\\x95\\x75\\xe1\\x66\\x11\\xa7\\x55\\xf2\\x1a\\x3a\\x5a\\x82\\xa2\\x0a\\xa9\\x00\\xa7\\x07\\xce\\x36\\x82\\x54\\x92\\xc3\\xca\\x15\\x39\\x5f\\x17\\x00\\xb4\\xaf\\xab\\x94\\xda\\xa7\\xa0\\x2f\\x14\\x53\\xb1\\xf9\\xa6\\xbd\\x36\\xef\\xb2\\x04\\xd9\\x28\\xee\\x1f\\x4d\\xcc\\x86\\x0f\\x3a\\x85\\x9b\\xad\\xc0\\x06\\xfb\\x30\\x5f\\xa1\\x23\\xd4\\xc7\\x9b\\x23\\xa2\\x0e\\x32\\x29\\x5d\\x04\\x0a\\x7f\\x8f\\x6c\\xac\\xa2\\x5d\\x83\\xf7\\x1c\\x62\\xe3\\xaf\\x78\\x36\\xef\\x76\\xb9\\x3a\\x83\\xd3\\xc3\\xb4\\x93\\xaf\\x14\\x17\\x53\\xda\\x19\\xe4\\xcd\\xcb\\xa5\\x66\\x17\\x27\\x10\\x34\\xb4\\xf4\\xf3\\x94\\xc7\\xc6\\xb7\\xd7\\x96\\x66\\xf3\\xaf\\xb6\\x92\\x24\\x4f\\x06\\x1c\\x69\\xa8\\x88\\x1d\\x1b\\x52\\xb8\\x84\\x9f\\xb5\\x34\\x99\\x0a\\xc2\\x39\\x19\\x09\\x47\\x1e\\xbb\\xb7\\x28\\xe2\\x9c\\xd2\\x0f\\x42\\x23\\x54\\xc4\\x30\\x97\\x17\\xeb\\xff\\x3e\\xfd\\x18\\x33\\x37\\x08\\x06\\xd5\\xbf\\xb5\\x3c\\xa2\\xda\\x31\\x6d\\xac\\xb5\\x0a\\xb7\\xfb\\x73\\x96\\x73\\x23\\x5a\\x1d\\xc5\\x3a\\xa8\\x89\\x30\\x72\\xd5\\xb9\\x1c\\x9f\\x6d\\xb8\\x3f\\xc4\\xea\\x41\\xd1\\xee\\xf4\\x9a\\xc2\\x8a\\xfc\\x1c\\xed\\x8f\\x36\\x18\\x90\\xab\\x9f\\x77\\x9d\\x19\\x30\\x82\\x83\\x1c\\xb8\\xc4\\x2f\\xb2\\x79\\x2b\\xee\\x3b\\x26\\x29\\x6b\\x62\\x95\\xeb\\x78\\xa8\\xd8\\x53\\x11\\x76\\x61\\x62\\x4e\\x11\\xf7\\xf5\\x7a\\xfd\\x60\\x85\\xa7\\xb9\\x12\\x36\\x79\\xfd\\xac\\xa1\\xcf\\x2a\\x78\\xd3\\x80\\xbc\\x4c\\x36\\x0a\\xa7\\xc3\\xcb\\xfd\\xe0\\xc0\\x09\\x1f\\xe5\\x3e\\x22\\x19\\xc0\\x70\\xf2\\xf0\\x2f\\x14\\x83\"},\n{{0xcf,0x33,0xe7,0x97,0x4d,0x8f,0x0b,0xf8,0x99,0xac,0x5b,0x83,0x4c,0x7c,0xf9,0x64,0x79,0xce,0x1c,0xfd,0x45,0x3a,0xf0,0x7f,0x97,0x05,0x27,0xf3,0x6a,0xa8,0x5c,0x1f,},{0x57,0x8f,0x60,0x33,0x8b,0x1f,0x04,0x1a,0x97,0xd3,0x19,0xfe,0xcf,0xa3,0x0c,0xfa,0xed,0x36,0x93,0x03,0xcc,0x00,0xb3,0xec,0x8c,0x5c,0x99,0x04,0x11,0x58,0xe2,0x0c,},{0x97,0xa5,0xb6,0xd2,0x68,0xa5,0xb4,0x17,0x5f,0xb0,0x6f,0x1f,0x37,0xd0,0xa6,0x33,0x51,0x92,0x96,0xed,0xc3,0x00,0x11,0xc9,0x54,0xd8,0xf0,0xb9,0xbb,0xe2,0x64,0x18,0x00,0x39,0x6c,0x4b,0x35,0xd4,0xb0,0xd7,0xd2,0xa1,0xd1,0x7c,0xbb,0xeb,0xdc,0x55,0xa8,0x09,0x46,0x2d,0x6c,0xc1,0x9a,0x6f,0xad,0xbe,0x1b,0xd1,0xba,0xe8,0x8a,0x01,},\"\\xe8\\x13\\x14\\x4b\\xd1\\x16\\xf6\\xac\\x36\\x38\\x92\\x17\\xb5\\x17\\x1a\\x90\\x2f\\x06\\xb7\\xdd\\x7b\\x14\\x4d\\xf4\\xf9\\x09\\x15\\x53\\xc7\\xc7\\x83\\x57\\x53\\xa2\\x96\\xcb\\xb0\\xd7\\xfa\\xb9\\x9c\\xef\\x77\\xb6\\x1f\\x34\\xa0\\x4c\\x8a\\xf0\\x4e\\x7d\\x5d\\x1f\\x96\\x13\\x02\\xde\\x89\\xe2\\x00\\x5f\\x29\\x9f\\x5a\\x4a\\xa1\\x79\\x24\\x61\\x7d\\x00\\x66\\x93\\x93\\x77\\x45\\x53\\x9c\\x30\\x48\\xee\\x36\\xb8\\xc2\\x3a\\xfe\\xc0\\xaf\\x9f\\xea\\xa0\\x06\\x6c\\x8a\\xf8\\xe0\\xa7\\xf0\\x90\\x93\\x49\\x82\\x10\\xf6\\xd8\\xdc\\xc0\\xaa\\xad\\xa5\\x66\\x87\\x86\\x91\\x0f\\xf7\\xc5\\xb3\\x48\\xd4\\xcc\\xd6\\xee\\xef\\xfa\\x3a\\xcd\\x18\\x16\\xd9\\x01\\x1a\\x4c\\x40\\x25\\xf6\\xc2\\xfd\\x2c\\x02\\x0a\\x10\\x59\\x36\\x27\\x52\\x0d\\x4d\\xd9\\x9e\\x07\\xc6\\x2d\\x2d\\xbe\\xbe\\x84\\x13\\x9e\\x1c\\x7d\\x86\\x7c\\x09\\x35\\x74\\xfa\\x60\\x1e\\x4e\\xe3\\x07\\xac\\x92\\x6e\\x5d\\x36\\xb6\\x2d\\x7e\\xd8\\x4a\\x26\\x15\\x88\\xb7\\xe2\\x88\\x3c\\x79\\x26\\x61\\x2b\\x4c\\xc6\\x7e\\x2b\\xb7\\x25\\x44\\xa1\\x0d\\x6b\\x49\\x29\\xc8\\x8e\\xf6\\xc4\\x7c\\x26\\x25\\xd2\\xf6\\x81\\x6b\\xd7\\x3c\\x3b\\xae\\x89\\xd2\\xe0\\xc8\\x61\\x71\\xac\\x4b\\xd0\\x80\\xae\\x55\\x5d\\x62\\x74\\x0d\\x1d\\x2a\\x76\\x1c\\xed\\x86\\xdf\\xc3\\x28\\xec\\xc2\\x7e\\xe3\\xdb\\x6d\\x40\\x41\\x08\\xef\\x4e\\x0b\\x64\\x90\\x62\\x53\\xb4\\xc0\\xa7\\x71\\xad\\xef\\xed\\xc8\\xa2\\xc5\\xb5\\x3c\\x42\\x5a\\x70\\xcd\\x6f\\x63\\x95\\x6f\\x7a\\x0a\\x61\\x9f\\xdf\\xbf\\xd0\\x0a\\xa0\\x78\\x41\\x8e\\xb4\\x65\\x2f\\x8b\\xc6\\xf3\\xc2\\x53\\xbe\\xec\\x98\\x38\\xb7\\x7f\\x9c\\xbe\\x2e\\xf2\\xb8\\x05\\x5c\\x57\\x73\\x53\\x9e\\x35\\x6b\\xd8\\x19\\x26\\x06\\xec\\x10\\x1e\\x3f\\x60\\x58\\xb1\\xdd\\x08\\xa6\\x8f\\xdb\\xc5\\x49\\xdf\\xe6\\xb7\\x72\\x5d\\xc2\\x54\\x9e\\x8e\\x3f\\x90\\xdc\\x5b\\xe3\\xcc\\xfb\\x0a\\x38\\xba\\xf9\\x37\\x7c\\xb3\\xf6\\x50\\x1d\\x2e\\x15\\xcc\\xb3\\x55\\x6a\\x89\\x5c\\xcb\\x23\\xf0\\xb6\\xdf\\x9f\\xe5\\x93\\x11\\xcf\\xf5\\x53\\x74\\xc3\\xfb\\x3a\\x32\\x98\\x1c\\xa2\\x6a\\xb4\\x26\\xf3\\x66\\x3d\\x04\\xe3\\x16\\x7e\\x53\\xa5\\x37\\xb7\\x58\\x9a\\x9f\\xb7\\x36\\x79\\x09\\x0a\\x20\\x55\\x32\\xc1\\x32\\x90\\x66\\x34\\x33\\x4a\\x7e\\x87\\x49\\x79\\x3f\\x8c\\x59\\x3f\\x3f\\xd6\\x27\\x8c\\xe0\\x05\\x03\\x83\\x48\\x7f\\x3b\\x24\\x50\\x67\\xaf\\x94\\x88\\x1a\\xa1\\xae\\x96\\x8d\\x0c\\xae\\xba\\x5f\\xa5\\xc7\\xbe\\x5f\\x4e\\x4b\\x72\\x57\\x51\\x86\\x95\\xd8\\x9b\\xcc\\xde\\xc5\\x07\\xb9\\x67\\xb4\\xfd\\x64\\xb6\\x89\\x3b\\x3e\\xe7\\x80\\x3c\\x1d\\x36\\xea\\x8a\\x02\\xfc\\x42\\x6f\\x9a\\xfc\\x8e\\x9f\\x24\\x32\\x15\\x27\\xec\\x98\\x44\\xbc\\x3c\\x54\\xa0\\xf7\\x66\\x7e\\x03\\x43\\x00\\xbb\\xb4\\xfb\\x02\\x0f\\x6d\\x5b\\xb9\\x54\\xe7\\xb5\\xa3\\xa7\\x06\\xa4\\x93\\x9d\\xb3\\x3c\\x15\\x48\\x92\\x64\\x34\\x76\\xa2\\x91\\xd4\\x7d\\xc1\\xe6\\xf7\\x2c\\xe9\\x1d\\x13\\x6f\\x11\\xdb\\x26\\xb9\\xc9\\xba\\x73\\x6e\\x40\\xdf\\x0a\\x15\\xc1\\xa8\\x91\\x49\\x99\\x6b\\x25\\x1d\\xd9\\x88\\xb3\\x90\\x04\\xe6\\xef\\x41\\xbd\\xc0\\x61\\xdb\\x58\\x0b\\x7b\\x74\\xde\\x2a\\x65\\x18\\x10\\xbd\\x89\\x17\\x53\\xb9\\x73\\x86\\xd7\\xf8\\xcb\\xdb\\xb6\\xec\\x38\\x6f\\xa2\\xc3\\x42\\xf5\\xef\\x20\\xe6\\xe3\\xa8\\xbb\\x4d\\x51\\x49\\xa7\\xd4\\xde\\x12\\x24\\xdf\\xf1\\xd1\\x72\\xc8\\x75\\x70\\xf7\\x76\\xd5\\xef\\x45\\x95\\x9b\\xe0\\x93\\x8a\\xd7\\x9f\\x5d\\x33\\x95\\xcb\\x27\\x21\\x62\\x71\\x22\\x88\\x7b\\xd7\\xa8\\x98\\x3b\\x64\\x77\\x97\\xbd\\x41\\xd8\\x82\\x64\\x1c\\x81\\x43\\x1c\\xe8\\xd9\\xb3\\x06\\x7a\\xde\\xc4\\xcd\\xe9\\x26\\xc5\\x13\\x13\\xf0\\xcf\\x84\\xc5\\x29\\x25\\x62\\xdd\\x49\\x08\\x64\\x2d\\xd2\\x45\\x28\\x84\\x84\\xc5\\x56\\x8a\\x78\\x7d\\x0c\\xed\\x36\\xa3\\x52\\xf0\\x32\\xda\\x4f\\x7e\\x4d\\xe0\\x6b\\x11\\x47\\x3f\\x65\\x0e\\xec\\x65\\xdd\\xa9\\x96\\x39\\xaf\\x2d\\x42\\xd8\\x4e\\xe2\\x30\\xf4\\xf8\\x36\\x23\\xd9\\xc9\\xaa\\xa3\\xb1\\x6b\\xda\\x10\\xdd\\xaa\\xd2\\x5a\\xf5\\xc1\\xc1\\x0f\\x81\\xc8\\xc5\\x1c\\x81\\x1a\\x3a\\xa3\\xe3\\xdb\\x58\\xa7\\x02\\x5e\\x43\\x80\\xe2\\x85\\xda\\x47\\x4a\\x61\\xba\\x59\\x17\\x3f\\xf0\\x42\\xa4\\x6a\\x79\\xab\\x18\\x4b\\x07\\x01\\x08\\x41\\x6f\\x9d\\x61\\x58\\xcf\\x96\\xd0\\xe6\\xdb\\x44\\x76\\x14\\xa0\\xd9\\x08\\x9e\\xbb\\x6a\\xee\\x4e\\xf1\\x07\\xbe\\x45\\x93\\xd7\\x1e\\x79\\xf6\\x79\\x86\\x68\\xa7\\x40\\xae\\x4b\\xac\\x5a\\xc7\\x59\\x4e\\xcb\\xd5\\xdc\\x82\\xe7\\xd0\\xf9\\xcb\"},\n{{0x51,0xb1,0xad,0x0f,0xfc,0x21,0x49,0x7a,0x33,0xdb,0xdb,0x85,0xea,0x2b,0xc1,0xce,0x3d,0x0c,0x2d,0x95,0xd9,0x46,0x1a,0x39,0x09,0x73,0xfe,0xe3,0x77,0xfc,0x75,0xf4,},{0xba,0xd0,0x41,0x25,0x75,0xd3,0x80,0x13,0x01,0xed,0xee,0x6b,0xc0,0xf2,0x76,0xe7,0x87,0x35,0x7b,0x41,0x22,0xf5,0x2d,0xe9,0x81,0x88,0x58,0x51,0x88,0x42,0x49,0xcb,},{0xcf,0xb6,0x5b,0x6f,0xf0,0x37,0x7c,0xef,0x51,0x1f,0xd9,0x7b,0x90,0xc3,0xec,0xb8,0x08,0x33,0xf1,0x42,0xa7,0xcf,0x50,0x22,0xce,0xd3,0x0b,0x3f,0xb7,0x86,0x20,0x86,0xd0,0x13,0x39,0xb8,0x86,0x6a,0x23,0x8c,0xb0,0x70,0x27,0x6e,0x19,0x44,0xb5,0xfe,0x32,0xcc,0x40,0x99,0x47,0xcb,0x91,0xde,0xb1,0x43,0x2c,0x29,0x1b,0x60,0xfb,0x0d,},\"\\x78\\x82\\xe8\\x6e\\xf3\\x40\\x2f\\x6d\\xbc\\x65\\xcc\\xe8\\x31\\x5b\\x39\\x76\\x5f\\xaa\\x4b\\x1f\\xc8\\x76\\xfa\\xd5\\xf8\\x22\\x0c\\xb2\\x2a\\x7d\\xf2\\xe3\\x58\\x0e\\xab\\x3a\\x7e\\x8f\\xa7\\xfb\\xb6\\xb5\\x94\\x82\\xca\\x0e\\x36\\x4a\\x13\\x13\\x96\\xdf\\x79\\x2a\\x32\\x41\\xa0\\x60\\xe4\\x41\\x43\\xb6\\x76\\x74\\x93\\xc6\\xbf\\x75\\xf1\\x87\\xa9\\x64\\x3a\\xa1\\x1e\\x11\\xeb\\xa7\\xb0\\xa8\\x0f\\x0a\\x68\\xb9\\xf1\\xb7\\x9f\\x75\\xb6\\x6c\\xc5\\x9d\\x9d\\xa7\\x79\\x55\\xfd\\x7e\\x87\\x99\\xf9\\x9d\\x6e\\xb0\\x8f\\x90\\xd3\\x18\\xf4\\xef\\xcb\\xfe\\x71\\x15\\x9b\\x10\\xa8\\x3a\\xa5\\xfd\\x69\\xbb\\x75\\x33\\x6f\\x5d\\xf2\\x96\\xea\\x06\\x0a\\x42\\x6c\\x95\\x45\\xdf\\x94\\x0b\\xc1\\x45\\x4e\\xfc\\x1f\\x9d\\xc9\\x65\\xf1\\xf2\\x2d\\x94\\x73\\x03\\xfb\\x8e\\xc1\\x24\\x07\\xff\\xf6\\xb1\\xdb\\xe4\\x7e\\x34\\x21\\xc3\\x17\\x64\\xfd\\x90\\xc8\\x3a\\xc7\\x11\\xd1\\x99\\x26\\xe2\\x29\\xa0\\x64\\xc6\\x1f\\xe3\\x67\\x6a\\xf3\\x00\\xa1\\x71\\x6f\\xab\\xe4\\xe3\\x84\\x22\\x64\\xad\\xb3\\x2e\\x0d\\x9c\\x9f\\x5d\\x4a\\x65\\xd0\\xd7\\xb5\\xc3\\x77\\x0d\\x73\\x7e\\xe1\\x3c\\xbe\\xd2\\x1d\\x7a\\x1d\\xa3\\x6a\\xaf\\x7e\\xc0\\xf3\\x6f\\xcc\\x47\\x6f\\x65\\x96\\x81\\xe5\\x16\\x0a\\x5a\\x1f\\x49\\xe7\\x59\\xb9\\xd0\\xfc\\xd4\\xfd\\xb8\\x54\\xec\\xcd\\x99\\x17\\x2a\\x47\\xd2\\xc4\\xef\\xbe\\x0b\\x37\\x57\\x63\\x1d\\xf1\\xba\\xe1\\x75\\xf0\\xfa\\x74\\xdd\\x04\\x8b\\xb6\\xa5\\xfe\\xd8\\x43\\x02\\x84\\x34\\x9d\\xa3\\xd6\\x7d\\xf2\\xa6\\xf7\\xe8\\x26\\x9b\\xc7\\x9f\\xb2\\xc5\\xd5\\xed\\x60\\x84\\xe9\\x07\\x6f\\x45\\x5a\\xb6\\x38\\x91\\x90\\x46\\x36\\x9a\\x44\\x6d\\x57\\xfc\\xad\\xa7\\x01\\x1c\\xc7\\x71\\xbf\\x6d\\x87\\x4a\\x8e\\x5d\\x23\\xc6\\x87\\x74\\x7d\\xe4\\x1d\\xd0\\x4b\\xff\\xc7\\x17\\xd6\\x12\\x81\\x83\\x84\\x6e\\xb5\\x94\\xb3\\xcb\\x1c\\x1a\\x8a\\xa0\\x4f\\x0d\\x7e\\xba\\x53\\xaf\\x39\\xcb\\x1d\\x4e\\x6f\\xec\\xf3\\x11\\x3b\\xd8\\x42\\x24\\x16\\xf4\\xc4\\x40\\x37\\xae\\xee\\x9e\\x0f\\xdc\\x51\\x7c\\x48\\x73\\x1f\\xd0\\x4e\\xe9\\xc9\\x9f\\x5d\\xbc\\xa3\\xd5\\x74\\x50\\x9d\\x7b\\xaf\\x32\\x88\\xf2\\xc2\\x30\\xa0\\x2d\\x17\\x03\\xbd\\xb1\\x61\\x1c\\xde\\x2a\\x76\\x6d\\xac\\x19\\x3d\\xe1\\x67\\x44\\x3d\\x20\\x09\\x0d\\xc3\\x4d\\x29\\x27\\x7a\\x86\\xb1\\xe9\\x98\\xb2\\x45\\x64\\x51\\x17\\xe5\\x11\\x1f\\x12\\xf1\\x46\\x06\\xc5\\x54\\x46\\xdd\\x91\\x2d\\x34\\x75\\xc1\\x98\\x76\\xe1\\x9a\\xc5\\x36\\xd3\\x17\\x87\\x6c\\x4b\\x0a\\x2e\\x0f\\x98\\x61\\x61\\x29\\xa5\\x68\\x37\\x32\\xa4\\x23\\x17\\xc5\\xe8\\x09\\xdc\\xa9\\x56\\xb2\\xab\\xb4\\x84\\xad\\xa8\\x10\\xa1\\x5c\\x81\\xcc\\x85\\x62\\xb5\\x55\\xda\\x94\\x58\\xf9\\xb4\\x43\\x38\\x49\\x02\\x30\\xc7\\x40\\x4f\\x3d\\x48\\x61\\x1f\\x84\\x12\\x7e\\x73\\xe2\\x77\\xd8\\x8c\\x62\\x21\\x2d\\x2a\\x3a\\x35\\x1f\\xc6\\x76\\x65\\xb1\\x8d\\x77\\x21\\x62\\x30\\x63\\x2c\\xbc\\x78\\x12\\x88\\xe1\\x5c\\xeb\\xf3\\xec\\x33\\xa7\\x20\\x5e\\xb2\\x2b\\x9a\\xbe\\x4c\\xdb\\xc7\\xdd\\xba\\xaa\\x53\\x64\\x08\\x75\\xeb\\x76\\x3f\\x52\\x2c\\x36\\xcf\\xff\\x2e\\xb2\\x3e\\xe5\\x86\\xd7\\x75\\x28\\x62\\x59\\xfa\\x94\\xa4\\x4f\\xa7\\xec\\x01\\x50\\x96\\xa2\\xa4\\x46\\xb6\\x73\\x2b\\x80\\x02\\x42\\x67\\xfe\\x3d\\x5d\\x39\\xd1\\xc4\\x85\\x09\\xb3\\xec\\xaa\\x2e\\x24\\xe5\\x4d\\xe4\\xd6\\x1c\\x09\\x7b\\x70\\xf7\\x53\\xb5\\xaf\\x9a\\x6d\\xb6\\xf9\\x75\\xd2\\x5f\\x4f\\x83\\xd0\\x6f\\x87\\x9e\\x17\\xef\\x7c\\x50\\x9a\\x54\\x14\\x44\\xba\\x3e\\xb6\\x86\\x78\\x38\\x09\\x0e\\x22\\xda\\xfd\\xbb\\x0e\\xb3\\xb0\\x56\\x5b\\xe1\\x57\\x9c\\xee\\xcd\\xed\\x20\\xf5\\x44\\x25\\x6c\\x7c\\x4e\\xde\\x3b\\x62\\x84\\x3c\\x65\\xb0\\x46\\x6b\\xe6\\xb7\\xe2\\x73\\x05\\xb9\\x63\\xca\\x91\\x4e\\x3b\\x7d\\x21\\x73\\x61\\x18\\xed\\xb3\\xd6\\x58\\xd9\\xd7\\x6f\\x50\\x9d\\xb3\\xb9\\xca\\x2e\\xae\\x28\\x96\\x4a\\x4b\\x3b\\x3c\\x38\\x4a\\x81\\xa4\\x89\\x0e\\xe9\\x6f\\xbe\\x93\\x4a\\x6f\\x2a\\xec\\x8e\\xeb\\x6c\\xfe\\x59\\xac\\x9d\\x3b\\xbc\\x16\\x46\\xba\\x32\\xa1\\x14\\x2f\\xee\\x59\\xfe\\xd6\\xfb\\x7b\\xbc\\x04\\x98\\xcc\\x27\\xde\\xad\\x41\\x3b\\x7b\\x43\\x51\\xec\\x20\\x63\\x43\\xc0\\xab\\x89\\xfc\\xf8\\x72\\x43\\xb1\\xab\\x45\\x0e\\x58\\xff\\x11\\xa1\\x14\\x0a\\x38\\x3f\\x19\\x6a\\xa3\\x97\\x6c\\xe1\\x7c\\xf3\\x45\\x30\\xf0\\x49\\xa1\\xde\\x90\\xe3\\x17\\x53\\xcd\\x85\\xe7\\xf1\\xfd\\x5c\\xf2\\x04\\x26\\xc9\\x37\\x9f\\xeb\\x8c\\x31\\xb4\\xbf\\xec\\x35\\xea\\x5a\\x78\\x95\\x3d\\x75\\xc5\\xcf\"},\n{{0xfa,0x2f,0x46,0x1c,0xe8,0xc7,0x12,0x62,0x18,0xc4,0x7c,0x91,0x56,0x9e,0x87,0x99,0x79,0x7c,0x83,0x36,0x8f,0xc8,0x42,0xb6,0xe1,0xc2,0x2f,0xd5,0x2a,0xec,0x70,0xbf,},{0x6b,0x89,0xb2,0x3f,0x1e,0x11,0xa7,0x5a,0x53,0xf9,0x92,0xf6,0xca,0x57,0x75,0x00,0x8c,0x6e,0x9e,0x7e,0x49,0xc0,0xd8,0x51,0x0b,0x0e,0x83,0x69,0xb7,0xa2,0x0b,0xcc,},{0x84,0xf7,0x9d,0x9e,0x8f,0x30,0xe5,0xbb,0x63,0x62,0x23,0x97,0x14,0x55,0x6b,0x04,0x73,0x6f,0xa4,0x44,0x65,0xca,0xba,0xad,0x23,0xbe,0xaf,0x5a,0x99,0xfc,0x45,0x1a,0xd4,0xae,0x5a,0x18,0xc7,0xf6,0xf9,0x64,0xfa,0x41,0x03,0x92,0x16,0x01,0x8e,0xc5,0xa2,0xac,0xca,0xe1,0x07,0x5a,0x6b,0xb3,0xa6,0xec,0xbc,0x1f,0xca,0x02,0xb9,0x04,},\"\\x79\\x9b\\x39\\x80\\x2a\\x18\\x27\\xe4\\x5c\\x41\\x12\\xfe\\xe0\\x26\\x03\\x4c\\x0e\\x59\\x8a\\xff\\xce\\x2c\\x55\\x0c\\x19\\x3f\\xee\\x73\\xf1\\xdf\\x8c\\x30\\xc8\\xd3\\x87\\x33\\x40\\x08\\x8c\\xe8\\x59\\xde\\x34\\x71\\xe9\\xd0\\x57\\x68\\x6c\\x82\\x9b\\x54\\x08\\x79\\x5e\\x08\\xb3\\xdc\\x7a\\xa3\\xb6\\x37\\xc7\\xde\\x9d\\x21\\x72\\xad\\x03\\x33\\xc1\\xbe\\xa8\\x61\\xa6\\x23\\x2f\\x47\\xf0\\x5a\\x10\\xbf\\x5d\\xf8\\x08\\x15\\xa2\\x71\\x25\\x6e\\x37\\xe8\\x08\\xa0\\xe6\\x2f\\x1f\\x07\\xd9\\xe1\\x0e\\xbb\\x94\\x7d\\x3e\\xfa\\xbf\\x8a\\x28\\xfa\\x9d\\xcc\\xd9\\xa1\\xd5\\x99\\xf5\\xfd\\x61\\x65\\x50\\x8e\\xfd\\x67\\x9c\\xf3\\x56\\x01\\x50\\x58\\xbf\\x4b\\x34\\x11\\x8f\\x83\\xaa\\x3e\\x5b\\xc2\\xce\\x19\\xec\\xa8\\x4f\\x71\\x83\\x98\\xad\\xbc\\x0a\\x52\\x76\\xcf\\x9d\\x8c\\xaf\\xfc\\x27\\xe3\\xe6\\xab\\xbe\\x34\\x5b\\x0e\\x9e\\xcf\\x89\\xc6\\x77\\x1b\\x0e\\x75\\xd4\\x08\\xba\\x2f\\xbb\\x90\\xfc\\xfd\\x70\\xc5\\x3f\\x2e\\x4d\\x52\\xba\\x54\\xd9\\x78\\x4c\\xf7\\x1c\\x34\\x9e\\xf6\\xf1\\x4a\\xe4\\x97\\x0d\\xef\\x6e\\xfb\\x5f\\x30\\xe9\\x84\\xd6\\x01\\x6a\\x19\\x6d\\xea\\xec\\x7e\\x04\\xb4\\x76\\x19\\xc4\\x8b\\xf4\\x9d\\xc0\\x2f\\x7f\\xef\\x3e\\x13\\xb7\\x56\\x17\\x4e\\x90\\xd0\\x5f\\xcb\\xdd\\x5e\\x13\\xf0\\xe4\\x34\\xef\\xd5\\x42\\x1b\\x09\\x1d\\x51\\x79\\x00\\xed\\x0d\\x57\\x85\\x96\\x88\\x62\\xb4\\xbf\\xe5\\x09\\x3a\\xb6\\x72\\x17\\x18\\x0d\\x97\\x55\\x4c\\xcd\\x9c\\xc3\\x14\\x29\\x32\\x6c\\xab\\x42\\xf3\\xf8\\x39\\x80\\x60\\xc1\\x9d\\xb4\\x88\\xb5\\xd1\\xc8\\x0b\\x29\\x09\\x0a\\xfd\\x1c\\x6b\\xac\\x36\\x42\\x26\\x48\\x00\\x21\\x1b\\xc2\\x78\\xfc\\xb9\\x9d\\xae\\x9d\\xbf\\x49\\xda\\xf1\\xb2\\x4a\\xb5\\x69\\xdc\\xbb\\x87\\xd4\\xd3\\x54\\x73\\x35\\xe3\\x5d\\xb9\\x84\\x00\\xcd\\xfc\\xe6\\x79\\x06\\x82\\xe9\\x36\\x00\\x22\\x0e\\xc4\\x99\\x24\\x5f\\xa4\\xee\\x15\\xd8\\x43\\x83\\x1b\\x56\\xcc\\x26\\x41\\x80\\x25\\xbf\\x87\\x00\\x16\\x05\\xc6\\x69\\x1c\\xa6\\xbd\\x40\\xa4\\xe2\\x48\\xc3\\x09\\x80\\x1b\\x76\\xa7\\x95\\xed\\xe8\\xad\\x53\\x08\\xbc\\xb6\\xd1\\x75\\x4a\\xb3\\x37\\x1f\\x00\\x03\\xbb\\x8c\\x4e\\x4e\\x47\\x19\\x54\\xe2\\x8b\\x1e\\x98\\x66\\x37\\x9f\\x82\\xe1\\xfb\\xac\\xb7\\x9d\\x50\\xad\\xdd\\xad\\x5b\\x97\\x78\\xb5\\x58\\xcd\\xdb\\xb0\\x03\\x8a\\x5f\\xf3\\xd5\\xc9\\x55\\x7b\\x96\\x5d\\xe3\\xa7\\x08\\x2c\\x45\\xa8\\xec\\xf3\\xe7\\x72\\x1e\\xb6\\x90\\xb6\\xc7\\x1f\\x3d\\x89\\x75\\xd5\\x30\\x0f\\x67\\xc4\\xdc\\x4a\\x73\\x68\\x46\\xe4\\xcc\\xd2\\x6f\\x93\\x46\\x3d\\x5b\\xc6\\xf4\\x6e\\xdc\\x48\\x86\\x64\\xbe\\x96\\x96\\xbe\\x12\\xb0\\x2d\\xd1\\x04\\xd1\\x0c\\xc6\\xb1\\xd8\\x2e\\x81\\x17\\x81\\x12\\x14\\xa6\\x48\\x7d\\x17\\x36\\x7e\\x39\\x5a\\xde\\x2e\\xf6\\xb2\\x6a\\x17\\x83\\xa7\\xe2\\xf2\\x45\\x21\\x3b\\xc0\\x3a\\x75\\x5d\\xf3\\xee\\x8e\\xf9\\xf1\\xef\\xf9\\x72\\xc6\\x91\\x90\\x65\\xcb\\x7b\\x75\\x66\\x78\\xd4\\xdd\\xfd\\x19\\x3e\\xdd\\xc0\\xb4\\x2e\\x86\\x89\\x61\\x36\\x43\\x14\\x6d\\x74\\x28\\xca\\x37\\xbf\\x31\\xbd\\xf1\\x4e\\x31\\x86\\x78\\x58\\xf3\\x9d\\x23\\x23\\x70\\x9e\\xb3\\xb7\\xd7\\xf4\\xe3\\x97\\x02\\x23\\x78\\x42\\x4b\\xde\\xe9\\xbc\\xb7\\x4e\\x9d\\x5d\\xfd\\x37\\x1f\\x47\\x34\\x99\\x8f\\xc1\\x8d\\xf4\\xcd\\xfb\\x4b\\x5c\\x21\\xc2\\xe5\\x0f\\x8d\\x6c\\x15\\xbc\\x14\\xbf\\x4f\\xda\\x6c\\xeb\\x9d\\x80\\x82\\xca\\xe4\\x32\\xdf\\xc9\\x8b\\xfb\\x3e\\xcd\\x16\\xb8\\xd7\\x4f\\x83\\x0b\\x64\\x2b\\x04\\x28\\x75\\xe9\\x21\\xb0\\x54\\xbd\\x1a\\xaa\\x58\\x1f\\x60\\xd7\\x18\\xdf\\x66\\x9f\\x56\\xdc\\x2f\\x10\\xd4\\x78\\x99\\x77\\x22\\x16\\x2e\\x83\\x94\\x0e\\x61\\xa1\\xb6\\xe4\\x2d\\xf2\\xa4\\xa3\\xa7\\xcb\\xcd\\xd6\\x11\\xce\\x96\\xcb\\xcf\\xb5\\xa9\\x5c\\xc4\\x73\\x23\\x1c\\xa1\\x3c\\x06\\x09\\xd0\\xce\\x1a\\xe5\\xdd\\xb5\\x46\\x6d\\x6d\\x65\\xee\\xfa\\xd9\\xda\\xf2\\xa3\\x69\\x01\\xbc\\xc9\\x45\\x84\\x7d\\xa1\\xed\\x6e\\x2e\\x24\\x0e\\x84\\x8b\\x23\\x1b\\x7d\\x0e\\x1a\\xcd\\x06\\x54\\x3e\\xc9\\x3e\\x76\\x8e\\x59\\x98\\x5d\\x7e\\x96\\xc8\\xc3\\x1f\\xcd\\x12\\x10\\xf0\\x96\\x42\\x71\\xe2\\x18\\x77\\x52\\x5c\\xb1\\x34\\xbc\\x35\\x36\\x25\\x7d\\xbb\\x11\\xd3\\x0a\\x3c\\x4f\\x94\\x9f\\xb8\\x2a\\xe0\\xc3\\x1c\\xcd\\xfe\\x41\\x94\\x32\\x51\\xe5\\x0a\\xa4\\x35\\x53\\x92\\xac\\x30\\x9e\\xf6\\x0f\\xc1\\x74\\x32\\xa2\\xbe\\x4b\\xdb\\x2f\\xcb\\x28\\x60\\x7c\\xc4\\x5a\\x52\\xb6\\x00\\x16\\xbb\\x1d\\x2e\\x23\\x97\\x2f\\xf2\\xc2\\xa2\\x47\\xd7\\x25\\x58\\x5b\\x1e\\xf2\\xb1\\x5f\"},\n{{0x1b,0xe2,0x94,0x9d,0x51,0xe7,0x20,0x81,0x75,0x82,0x62,0x13,0xee,0x6a,0xe3,0xc0,0x91,0x17,0x27,0x42,0xe8,0x8c,0xaa,0x02,0xed,0x0f,0x31,0x3e,0xcb,0xe5,0xd9,0x10,},{0xd7,0xbf,0x47,0x48,0xd6,0xdd,0xed,0x5b,0x57,0xa2,0xab,0xf7,0x97,0xfa,0xcc,0x56,0x0b,0x48,0x56,0x3d,0xfd,0x9d,0xcf,0xf4,0xbe,0x52,0x2c,0x71,0x7a,0x6c,0xfd,0xa9,},{0xf4,0x1f,0x2e,0xf6,0x59,0x5f,0x17,0x66,0x0b,0xb2,0xfe,0x93,0xe5,0x1f,0xc6,0xfa,0x9c,0x31,0xda,0xdc,0x9d,0xb9,0x0c,0x3f,0x46,0x60,0x7a,0x7f,0xb4,0x80,0x0b,0xb7,0x5a,0xd9,0x63,0x25,0xdc,0x7e,0xab,0x78,0x24,0x72,0xb0,0x4d,0xa6,0xd8,0xe6,0xfe,0x64,0x65,0x5d,0xea,0x55,0x1f,0xbd,0x50,0x49,0xe8,0x76,0xce,0x5a,0x40,0x5f,0x02,},\"\\x04\\x5e\\x2b\\x0e\\xc7\\xbb\\x20\\x3a\\x49\\xbd\\xcb\\xa9\\x41\\xe2\\xb7\\x3c\\x23\\xc1\\xfe\\x59\\xa1\\x7d\\x21\\xa0\\x12\\x4e\\xa2\\x4b\\x33\\x7f\\x92\\xab\\x9c\\x92\\x3a\\x20\\x57\\x6b\\x62\\xd5\\xd0\\xf6\\x24\\xe7\\x93\\x2c\\x11\\x5b\\x54\\x74\\xe0\\xa4\\x6a\\x4d\\xc9\\xec\\x51\\xf6\\xa0\\xce\\x8d\\x54\\x74\\x4d\\x1d\\x52\\x09\\x33\\x20\\xe3\\x9b\\xe2\\x03\\xf7\\x4a\\x0f\\x5d\\xfa\\xc5\\x2c\\xf0\\xf9\\x95\\xc6\\x6d\\xf2\\x91\\x4b\\x68\\xad\\x87\\x1f\\xbe\\x81\\x52\\x5a\\xd2\\xd8\\x8a\\xc6\\x99\\x33\\xa7\\x5a\\xea\\x74\\xac\\xe4\\xe3\\x63\\x43\\xdd\\xc0\\x6d\\x32\\x08\\xf1\\x6d\\x80\\x5f\\x5d\\xd7\\x86\\xb4\\xda\\xaa\\x16\\x67\\x48\\xcf\\xee\\xc5\\x71\\x4c\\x85\\xc1\\x04\\x78\\xb5\\x97\\xac\\x7f\\x6a\\xe2\\xc9\\x88\\x91\\xe3\\x8f\\xd4\\x14\\xaa\\x81\\x1b\\x76\\x21\\xd8\\x05\\xeb\\x8f\\xcc\\x46\\xcf\\x4d\\x56\\x8a\\x8a\\x92\\x58\\x7c\\xbb\\xc1\\xae\\xcc\\x12\\xf1\\x0d\\x90\\xac\\x1e\\x01\\xae\\x98\\x6d\\x14\\xfe\\x82\\x95\\x1c\\x68\\x2c\\xea\\xc8\\xc9\\x25\\xfc\\x66\\x54\\xd8\\x38\\xac\\x93\\x53\\xae\\x2f\\x93\\xf3\\xc8\\x8b\\xf7\\xb8\\x2c\\xbc\\x43\\xb1\\xe4\\x9e\\x5c\\xeb\\xfb\\x19\\x49\\xad\\xe4\\xb2\\x2e\\x4b\\xcf\\x1b\\x40\\x0c\\x0a\\x8f\\xa8\\xa6\\xfe\\x76\\x70\\xf6\\x9f\\xc3\\xfa\\xec\\xd4\\x80\\x5b\\x8c\\x95\\x4c\\x01\\xa5\\x40\\xd1\\xa1\\xe7\\x88\\x43\\x6e\\xae\\x07\\x3a\\xe9\\x56\\xda\\xe3\\x17\\x69\\x05\\xa8\\xf0\\xa3\\xc6\\x0f\\xd9\\x80\\xda\\xb4\\x19\\xd4\\x1e\\xc0\\x6e\\x52\\x73\\xfb\\xb1\\x3d\\xb9\\x38\\x1f\\x89\\xb6\\x63\\xcc\\xc4\\xbd\\x75\\x3f\\xd9\\x0f\\x14\\xa7\\x7b\\x3d\\x81\\xc4\\x5d\\xd3\\x56\\x1c\\xd1\\xfa\\x0e\\x94\\xd2\\x34\\xce\\xf9\\xd7\\x85\\x9a\\x2e\\xc9\\x42\\xbf\\xc1\\x88\\x49\\xd7\\xf2\\xad\\xa3\\xa5\\xd6\\x57\\xbc\\x19\\x3d\\x2e\\x14\\x91\\x68\\x2f\\x16\\x65\\xa5\\x34\\xb1\\xac\\x20\\x83\\xb7\\x38\\xbe\\x8f\\x9e\\x96\\x3f\\x59\\x41\\xed\\x48\\x3c\\x6a\\xcc\\x82\\xe9\\x59\\xb8\\x1b\\x8a\\xf0\\x2f\\x47\\x1c\\x08\\xf5\\xf8\\xb1\\x2e\\x10\\xe0\\x08\\x19\\x28\\x98\\xa4\\x45\\x02\\x02\\xaf\\x73\\x15\\x92\\xe7\\x4e\\xfe\\x2a\\x94\\x8e\\x51\\xd0\\x6e\\x44\\xde\\x9b\\x95\\x6b\\x7b\\xc9\\xa6\\x9b\\x6e\\x74\\x68\\x7a\\xb2\\x06\\xde\\xc4\\xd3\\x5b\\x31\\x73\\xfb\\xc4\\x38\\x82\\x9d\\x50\\x64\\xbf\\xbc\\xf7\\x43\\xc1\\xe2\\xd4\\x6f\\x62\\x8f\\x2e\\x51\\xc6\\x26\\xd8\\xe4\\x16\\xd7\\xbe\\x6e\\x55\\x5a\\x24\\x96\\x91\\xab\\xb1\\x67\\xf1\\xd9\\x2f\\x4f\\xa3\\x39\\x2f\\xde\\x24\\xe9\\x93\\xce\\x7f\\xf5\\xc1\\xb8\\xe1\\x57\\x7a\\x7c\\x0e\\x73\\x02\\x5c\\xc6\\xfc\\xd7\\x27\\xa8\\x2e\\xf0\\xc1\\x29\\xe9\\x1e\\x55\\x33\\xe0\\x21\\xa3\\xcd\\xbb\\x99\\xd5\\x4b\\xf7\\xcd\\xcd\\x3f\\xf1\\x19\\x15\\x4f\\x3f\\xad\\x92\\x42\\xb6\\xed\\x35\\x0d\\x10\\x37\\x2c\\x97\\x6f\\xf3\\xa4\\x37\\xd0\\x97\\x86\\x7d\\x9b\\xfb\\xa9\\x1d\\x84\\xbd\\xa5\\x5a\\x6b\\xcd\\x6e\\x36\\x41\\xb2\\x13\\xa2\\x18\\xb3\\x04\\x15\\x89\\xc5\\x5a\\xfb\\xb3\\x44\\xde\\x6e\\x97\\xd8\\xc3\\x5b\\x5c\\x86\\xcf\\x3b\\xe0\\x63\\xf9\\x01\\xff\\xee\\xa8\\xcc\\x91\\x06\\x99\\x67\\xd2\\x34\\x60\\x35\\xa9\\x1e\\xb5\\x70\\x6a\\x3b\\x53\\xf6\\xd1\\xc3\\x4d\\x4d\\x21\\x16\\x70\\x6b\\x65\\xc2\\x98\\xec\\x57\\xde\\x82\\xab\\xc4\\x00\\x3c\\xe8\\xcc\\x5e\\x0b\\x88\\xff\\x71\\x0d\\xda\\x1d\\xce\\xf6\\xf1\\x54\\x27\\x71\\x06\\xb8\\x3e\\xb4\\x6c\\x04\\x5b\\x08\\x2d\\x11\\x3b\\x36\\x1d\\x6a\\x62\\x58\\x08\\xc9\\x13\\x05\\x84\\xdf\\xc9\\x67\\x07\\xef\\x89\\x55\\x90\\x7b\\xaa\\x61\\xcf\\x88\\xc6\\x6b\\x6d\\x1f\\x60\\x58\\x11\\x19\\xcb\\x62\\x17\\xa8\\x52\\x15\\x73\\x36\\x17\\x8c\\x68\\x5e\\x6e\\xd4\\x85\\x26\\xed\\x5c\\x4e\\x3b\\x79\\x67\\xd5\\x1f\\x99\\xdf\\x68\\x76\\xa1\\xac\\xfb\\x84\\x5c\\x57\\x1b\\x89\\x86\\x56\\xe5\\xe3\\xbc\\x73\\x98\\x0b\\x9b\\xed\\x11\\x98\\x86\\x63\\x59\\xc9\\xe9\\xb1\\xef\\xa9\\x15\\xf8\\x10\\xd1\\xef\\x8a\\xd6\\xcb\\x3f\\xc2\\x1f\\xbf\\xe6\\x54\\x30\\x6d\\xe6\\xca\\x13\\xa3\\xa6\\xa4\\x8e\\x7a\\x13\\xed\\x87\\x46\\xac\\xbd\\x07\\xf4\\x8e\\xb0\\x0c\\x36\\x37\\x4b\\x1e\\xb4\\xf3\\xf0\\x1c\\x19\\xe2\\xe8\\xd3\\x7e\\x9f\\xc0\\x64\\xb3\\x3c\\x0d\\x66\\x9b\\xba\\x55\\x4d\\xdc\\x68\\x21\\xa7\\x7b\\x40\\x89\\xca\\xbd\\xca\\xfc\\x97\\xf6\\x0e\\x60\\x50\\xbc\\xa4\\x44\\xae\\x8c\\xfc\\x44\\xd9\\x3c\\x40\\xef\\x53\\x18\\xbe\\xe6\\xf8\\xcf\\x0c\\x06\\x7b\\x85\\xcd\\xdd\\xc4\\x59\\x74\\xa4\\xea\\xcf\\xc3\\xef\\x51\\x31\\x5b\\xa0\\xf3\\xf6\\x29\\x68\\xc7\\x00\\x3a\\x7f\\xf4\\x44\\x61\\x24\\x00\\xb1\\x59\"},\n{{0x3b,0x6b,0xa6,0xd5,0xcc,0x9c,0xd6,0x24,0x1d,0x8b,0x00,0x97,0xa3,0x72,0x2e,0x4d,0x06,0x6f,0xea,0x3d,0x56,0x0a,0xea,0xb4,0x67,0x3e,0x86,0xf1,0xf8,0xec,0x60,0x26,},{0x8c,0xa6,0x52,0x07,0x17,0xcf,0x36,0x3c,0x4c,0xef,0xfa,0x76,0x32,0x8a,0x0a,0x16,0x6f,0xf8,0x3e,0x45,0xca,0x7d,0x19,0x1c,0xc8,0xef,0x6c,0xa6,0xe5,0x24,0x33,0x67,},{0x78,0x8c,0x9f,0x45,0x54,0xdd,0xba,0x5c,0x7d,0x64,0xba,0x75,0x9e,0xc4,0x56,0x94,0xec,0x79,0xfb,0x85,0xe8,0x23,0x68,0xa0,0x74,0xbd,0xd8,0xdf,0x34,0x42,0x13,0xa5,0x6d,0xd0,0x9f,0x33,0x4c,0xd9,0xac,0xb9,0x41,0xbe,0x28,0x3d,0x98,0xc4,0xb1,0x5d,0xcf,0xec,0xd1,0x4e,0x93,0xf6,0xa2,0xe3,0xcb,0x0c,0x1a,0xa2,0xde,0xe7,0xd9,0x0b,},\"\\x36\\xde\\x93\\x0c\\xc8\\xe1\\x88\\x60\\x83\\x6a\\x0c\\x82\\x9d\\x89\\xe9\\x63\\xa5\\x8b\\xdd\\x9c\\x6b\\x6e\\xf5\\xbc\\x61\\xf7\\x59\\x92\\xd2\\x07\\x52\\x42\\xdc\\xa2\\x3e\\x28\\xde\\x20\\x5a\\x33\\xdf\\xea\\x86\\x1f\\xc4\\x4a\\x32\\x62\\x8e\\x8e\\x7c\\xdd\\x3e\\xd7\\xff\\x49\\xea\\x6a\\x70\\x97\\xe0\\x09\\x0c\\xfd\\x9f\\xf5\\xec\\xab\\x1d\\xe8\\x22\\xfc\\x0a\\x4c\\x37\\x76\\xdd\\x56\\xc1\\x91\\x92\\x04\\x51\\x6a\\x94\\xce\\xc5\\x63\\x8d\\xa1\\xd9\\x9e\\x52\\xb8\\x66\\xf5\\xec\\x41\\x62\\xa9\\x12\\xed\\xb4\\x1c\\x1e\\x92\\xed\\xfc\\x35\\x3f\\x67\\x05\\xe1\\xc1\\x2c\\xd4\\x1c\\xb6\\x2d\\xed\\x4a\\xd8\\x15\\x79\\x40\\x05\\x9b\\xfc\\xf5\\x07\\x19\\xd3\\xf2\\xad\\x00\\x84\\x85\\x40\\xce\\x89\\xf3\\xf9\\xaf\\xa6\\x10\\xcc\\xba\\x5e\\xcc\\x37\\xe3\\xe2\\xc1\\x53\\x4f\\xcb\\x38\\xfc\\xd3\\x9a\\x2d\\x14\\xd5\\xb5\\xda\\x6f\\xea\\x24\\xe0\\x06\\x65\\x4e\\x30\\x90\\x47\\xa2\\x9c\\xad\\x0a\\xe4\\xda\\x8e\\x70\\x8f\\x97\\xa1\\x8c\\xad\\x5f\\xbd\\xc9\\xac\\x84\\x40\\x0c\\x53\\x2c\\xed\\x54\\x88\\x86\\x53\\x9e\\xdd\\x6c\\x54\\x10\\x74\\x79\\x0a\\xe4\\x50\\x2f\\xdf\\xe9\\xf3\\x27\\x3a\\x87\\x6a\\x21\\x86\\x23\\xa2\\x57\\x06\\xa1\\x52\\x5e\\x67\\xe5\\x7a\\x16\\xd2\\x2c\\x21\\xb6\\xa4\\x5e\\x23\\x84\\xe2\\x87\\xac\\x44\\x52\\xae\\xc4\\xe0\\x63\\x05\\x6b\\x4c\\x17\\x8a\\xb0\\xe5\\xb2\\xa5\\xba\\xd3\\xf4\\x63\\xc4\\x72\\xc4\\xea\\x1f\\x9c\\x1a\\x66\\xe5\\x27\\x04\\x73\\xa8\\x35\\x09\\x4e\\x8f\\x0e\\xef\\x68\\x0c\\xd7\\xb2\\x0d\\x0e\\x70\\xf4\\xd6\\xc9\\x58\\xfe\\xe0\\x8a\\x93\\x60\\xaa\\x60\\x66\\x88\\x8f\\x4d\\xd7\\xce\\x5e\\xc2\\x22\\x59\\xfa\\x0b\\x53\\xfe\\x92\\x71\\xc0\\x83\\xc6\\xfc\\xdb\\x72\\x83\\xb0\\x90\\x61\\x08\\x8c\\x52\\xf7\\x1b\\xfd\\xd2\\x77\\x7c\\xe0\\x80\\x1f\\x41\\xa6\\xc4\\xce\\x90\\xef\\x13\\x1d\\xe1\\xe1\\x83\\xcb\\x89\\x49\\xce\\x32\\x3c\\x9e\\xb1\\x3a\\x4b\\x0c\\xac\\xf9\\x9d\\xef\\xdf\\xdb\\x68\\xd5\\xed\\x1f\\x68\\x91\\xb4\\x8e\\x21\\x04\\x76\\x68\\xd6\\x9d\\xe8\\xa8\\x0f\\x8e\\x56\\x34\\xde\\xd0\\x87\\x36\\xa4\\xfb\\x54\\x10\\xcd\\xea\\x9c\\x72\\x59\\x6e\\x36\\xdf\\x68\\x41\\xf2\\xee\\xa4\\x68\\x50\\xc8\\x74\\x73\\xc8\\x95\\x54\\x02\\x05\\xb0\\x92\\x19\\x60\\xff\\xa5\\xd9\\xd8\\xff\\xb8\\xe2\\x9c\\xde\\x96\\xa3\\xed\\xe0\\x15\\xac\\xbc\\x26\\x97\\x40\\x04\\xd3\\xe4\\x38\\xa8\\x5b\\x2e\\x33\\x85\\xf6\\x4d\\x18\\x14\\x00\\x39\\x41\\xff\\xd3\\x63\\x99\\x2d\\x39\\x40\\xc6\\xe6\\xd8\\x1f\\xf8\\xe4\\x5f\\xce\\xd6\\xd3\\x6c\\xe1\\x98\\xd8\\xcc\\xbe\\xfe\\xe4\\x32\\xa7\\x7d\\x8f\\xca\\xdd\\x73\\xfb\\x79\\x9f\\x6b\\xaf\\xef\\xb5\\x1a\\x2d\\xa7\\x98\\x72\\x1c\\x3d\\x46\\x5b\\x16\\x3e\\xf1\\x3e\\x6e\\xcc\\x65\\xe6\\x03\\xb2\\x89\\x3e\\xe4\\xcc\\x9e\\x1c\\x6d\\x1d\\xe7\\xa6\\x5c\\xab\\x5c\\xbd\\xf5\\x36\\x85\\x5e\\x28\\x8c\\x3c\\xcd\\xa8\\xd2\\xfa\\x3c\\xe1\\x0c\\xf4\\x93\\x58\\xa2\\xef\\x4e\\xf0\\x76\\xe5\\xbf\\xa9\\x1b\\xbc\\xf3\\xd9\\x66\\xdf\\xa3\\xdc\\x6e\\x71\\x2f\\x19\\x56\\xd4\\xe5\\x8a\\xa3\\x6e\\x71\\x2d\\xd3\\x34\\x71\\x69\\xb1\\x9c\\x8d\\x44\\xbe\\xc5\\xbc\\xb7\\x30\\x77\\x8f\\xcc\\xcc\\x58\\x9e\\xd5\\xd3\\x50\\xd4\\x4c\\x17\\xbd\\xe2\\xee\\xbb\\x6f\\x5e\\xc5\\x9f\\xb2\\x40\\xd6\\x7d\\x81\\xae\\xa9\\x26\\x7f\\x34\\xf1\\x5e\\xee\\x2d\\xe3\\xf4\\xfa\\x67\\x39\\x14\\x79\\xbd\\xbb\\x43\\x0f\\x48\\x43\\x70\\xfb\\x0e\\x08\\x95\\xb9\\xae\\x06\\x5b\\xbd\\xd4\\x3e\\x23\\x0c\\x62\\xac\\x07\\x18\\x4e\\x8b\\x06\\xb2\\x4b\\x8b\\x97\\xec\\x02\\xdc\\x6f\\x37\\xef\\x61\\x64\\x1e\\xd5\\x6e\\x3f\\x5e\\xb8\\xd2\\x08\\x0b\\x51\\x44\\xef\\x76\\x0b\\x51\\x87\\x52\\xe1\\x97\\x54\\x79\\x2e\\x19\\x34\\x3a\\x38\\x55\\xe1\\xe2\\xf7\\xa7\\xdc\\x62\\x35\\x17\\xee\\xd2\\xf5\\xd2\\x65\\x48\\xa6\\x8e\\xb8\\xff\\xd7\\xbf\\x70\\xf7\\x8f\\xd1\\x86\\xdb\\x63\\x49\\x28\\xbb\\x98\\x13\\x8f\\x2b\\x8f\\xe8\\x44\\x81\\xcc\\x53\\xf5\\xaa\\x35\\xe2\\x66\\x6c\\x63\\x25\\xe1\\xd2\\xb8\\xac\\x5e\\x2d\\xf2\\x93\\x5b\\x7f\\x64\\x13\\x95\\x2d\\x10\\xd6\\x07\\x6f\\xfc\\x75\\xbb\\x6a\\xf6\\x3b\\x29\\xb0\\xb9\\x66\\x3b\\xec\\x37\\x24\\x7b\\x66\\xb5\\x08\\xdd\\xe4\\x1f\\x2f\\x11\\xb8\\x43\\x33\\x55\\x9d\\xfa\\xc7\\x3f\\x76\\x1b\\xcd\\xa8\\x4a\\x48\\xd2\\x66\\x07\\x3a\\xef\\x16\\x38\\x46\\x08\\x49\\xe7\\xa1\\x72\\x06\\xa2\\x5f\\x68\\x00\\x77\\x0b\\x91\\x4c\\xc0\\x26\\xba\\xf9\\xe3\\x25\\x59\\x14\\xe1\\x32\\x58\\x44\\x1c\\xef\\x35\\xad\\x1d\\x66\\x83\\x3e\\x98\\x7e\\xbe\\x44\\x31\\xe6\\xa6\\xbb\\x22\\x2c\\xbb\\x65\\xaf\"},\n{{0xdd,0x99,0x87,0xb1,0x8f,0x9a,0x92,0x2c,0x0f,0x6f,0xea,0x18,0xeb,0x00,0xb8,0x96,0xc7,0xa2,0xd3,0x09,0x3d,0xb3,0xea,0x31,0xd3,0x84,0x21,0xda,0x0d,0xe5,0x12,0x31,},{0x57,0x39,0x21,0xa9,0x55,0xfe,0xb6,0xdd,0xe4,0x1b,0x05,0x5c,0x8d,0xac,0xac,0xcd,0x1d,0xb7,0xfe,0x9e,0x36,0xb5,0x09,0xd3,0xc9,0xe3,0x6f,0x97,0x35,0x75,0x23,0x24,},{0x3e,0x9f,0x2b,0x00,0x7c,0x0e,0x29,0xec,0x87,0x59,0x95,0xa6,0x30,0x9b,0x97,0x3d,0xeb,0x8b,0xaf,0x11,0x3d,0xed,0x13,0xf1,0xe0,0x00,0x3e,0x9b,0x9b,0xf9,0x39,0x16,0xa4,0xdf,0xe4,0x79,0x37,0xda,0xdf,0xc7,0x8a,0xa6,0x63,0xc5,0x5f,0x67,0x4e,0xc3,0x5c,0x38,0x46,0x25,0x8f,0x18,0xe7,0xbb,0x93,0xfb,0xba,0x3e,0x82,0x6a,0x1f,0x0d,},\"\\x48\\x16\\x2f\\xdc\\x3a\\xbf\\x73\\x19\\xc6\\xca\\xab\\x60\\xcb\\x8d\\x05\\x20\\x87\\x5c\\xb4\\xee\\x8a\\x07\\x09\\x27\\x83\\x16\\x7d\\x47\\x33\\xff\\xe5\\x20\\x4e\\x5f\\xeb\\xe7\\xd2\\x91\\xe9\\x53\\x6b\\xde\\xa3\\xdf\\x06\\x37\\x15\\x9a\\x65\\x3e\\x09\\xfd\\x99\\xaf\\x66\\x1d\\x83\\x00\\xae\\x74\\x1a\\x3e\\x91\\xa8\\xbd\\x85\\xea\\xd0\\x5d\\xc7\\xd9\\xe6\\xf9\\x29\\x32\\x33\\x16\\xed\\xc4\\xca\\x62\\x4e\\xa7\\x81\\x8b\\x25\\xbd\\xc0\\x61\\xf7\\x14\\x92\\xfd\\x22\\xd4\\x65\\xab\\x22\\x6f\\xd9\\xa1\\x0d\\x8b\\xab\\xfc\\x07\\x4c\\x68\\x6c\\x43\\x6c\\x24\\xa3\\xa5\\x3f\\x8f\\xf3\\x89\\xce\\x9c\\xa1\\xdb\\xc8\\x90\\x74\\x45\\x88\\x92\\x41\\xf8\\xfd\\xa3\\xa7\\xa3\\xf5\\x02\\x4f\\xa8\\xcb\\x0d\\x04\\x4b\\xda\\xf6\\x71\\x6d\\x98\\x3a\\x6d\\x83\\x98\\x14\\xff\\xe7\\x0d\\xdc\\x55\\xbb\\xba\\x11\\xac\\x97\\x88\\x7b\\xdb\\x4d\\xad\\xa9\\x65\\x65\\xbb\\x07\\x5d\\x5f\\xc1\\xd3\\xc5\\x24\\x4b\\x9f\\xff\\x77\\xde\\x58\\x72\\x9a\\x05\\x9a\\x91\\x1f\\xb3\\xe0\\xeb\\x16\\x4f\\xb8\\x42\\x9e\\x26\\x56\\x85\\xd1\\x4a\\x63\\x23\\x30\\x46\\xd2\\x0e\\xcf\\x28\\x9c\\x55\\x72\\x31\\x69\\xa9\\xd6\\x3d\\xda\\x0d\\x52\\x55\\x15\\x3d\\x9e\\xf4\\xa6\\x1b\\x92\\x12\\xf4\\xb8\\x20\\x69\\x7a\\xe7\\xc3\\x08\\xcf\\xab\\x40\\x3b\\x2c\\x34\\x31\\x90\\x62\\x26\\xe4\\x5c\\xe2\\x19\\x20\\xdf\\x52\\x01\\x60\\x9d\\xaf\\x83\\x0f\\x28\\xad\\x79\\x60\\x05\\xa9\\xbd\\x8e\\xba\\x62\\x0c\\xf8\\x39\\xc3\\xba\\x22\\x7b\\x96\\x3c\\x7b\\xd0\\x91\\x48\\x22\\xdf\\x2c\\xa0\\x3c\\x22\\x54\\xd0\\xcb\\x8a\\xca\\xe0\\xd5\\x9e\\x4c\\x3e\\x0e\\xc2\\x15\\xc8\\x36\\x96\\x9d\\xcd\\x1d\\x49\\xbf\\xe1\\x97\\xe2\\xf3\\xee\\xa3\\xfa\\x8a\\x37\\x3b\\x55\\x8d\\x0f\\xb9\\x06\\x3c\\xf1\\x56\\x8e\\x73\\x9a\\xad\\x8f\\x09\\xfb\\x43\\x7c\\xaf\\xb5\\xa2\\x72\\x37\\x5f\\x43\\x60\\x64\\xee\\xe1\\x1b\\xd9\\x03\\xd3\\xaa\\xea\\xb4\\xe3\\xfd\\xcd\\x36\\xbd\\x20\\x76\\xee\\xa1\\x79\\xa4\\xf0\\xd4\\xfb\\xc8\\xdf\\x42\\xbf\\x26\\x60\\xf0\\x8d\\xe7\\xd5\\xc6\\x39\\x7c\\xae\\x10\\xb7\\x27\\x74\\x58\\xaa\\x6c\\xfa\\x01\\xe8\\xa6\\x73\\x7e\\xb1\\x26\\x22\\x78\\x56\\x64\\x66\\x91\\x68\\x1c\\x10\\x6a\\x15\\x7a\\x26\\xae\\xd2\\x1b\\x1a\\xaf\\x0e\\xd2\\x76\\x64\\x21\\xcf\\xc3\\xd1\\xc7\\xdd\\xfb\\x72\\xfc\\xdf\\x4b\\x8b\\x49\\x0f\\xc0\\x9a\\xce\\x49\\xae\\xdd\\x77\\x12\\xb2\\x1a\\xc5\\x6f\\x86\\x01\\xf6\\x25\\x56\\x3c\\x78\\x43\\x06\\xf3\\xb9\\x17\\x4a\\xdd\\xf7\\x64\\xe0\\x51\\xaa\\xdf\\xe1\\x28\\x31\\xaf\\x96\\x69\\xe6\\x2c\\xab\\x12\\x1c\\x74\\xdf\\x34\\x37\\x24\\x42\\x9d\\x6c\\x26\\x66\\x02\\x71\\xc3\\x2f\\x40\\xcf\\x7c\\x2d\\x08\\xbd\\x0a\\xfc\\xc7\\x28\\xde\\xf4\\x13\\x5d\\x4e\\xb5\\x5b\\x6a\\x3e\\x76\\x29\\xd8\\x06\\x86\\x4a\\x85\\xb3\\x6a\\x32\\xb9\\xb2\\x1a\\xc0\\xd3\\x96\\x80\\xa2\\xae\\x4e\\xc4\\x18\\x97\\x09\\x17\\x8e\\x34\\x94\\x97\\xf3\\x93\\x99\\xfb\\xc7\\x8b\\x3c\\x6c\\xfa\\xca\\x6e\\xde\\xa7\\xc3\\x3d\\xda\\x3c\\xc1\\x1e\\x43\\x84\\xf1\\x58\\x3d\\x6c\\xfc\\x6b\\x58\\xf4\\xea\\xa2\\xbc\\x56\\xab\\xa4\\x2f\\x73\\x8a\\x42\\x9b\\x93\\x58\\x08\\x50\\xde\\xe3\\xfd\\x25\\x39\\x94\\xf8\\xb0\\xfa\\x66\\xee\\x8e\\x27\\x3d\\xec\\xab\\xd5\\x32\\x09\\x5f\\xb0\\x4a\\x4a\\x3c\\x34\\x0a\\xf0\\xe5\\x5b\\x57\\xef\\xab\\x43\\x63\\x0f\\xc0\\x2e\\xf2\\x0b\\x42\\x5c\\xa2\\x18\\x7e\\x3c\\x6c\\x5e\\x10\\xf1\\x2d\\x61\\x8f\\xd2\\x43\\xa2\\x24\\xf6\\x50\\x1e\\xbe\\xb9\\xd3\\x21\\xc6\\x38\\x5b\\x81\\x27\\xef\\x9c\\xdc\\xd0\\x97\\xce\\x7f\\xa0\\x21\\xcf\\x40\\xd2\\x1c\\x39\\x91\\x23\\x43\\xf6\\x7a\\xcc\\xe1\\x82\\x5e\\x3a\\x51\\xb8\\xa7\\x18\\xe8\\xc3\\x40\\x62\\x2f\\xff\\x65\\xfe\\x00\\x53\\xd2\\x4a\\xa3\\x35\\x1b\\x6a\\x24\\x00\\x18\\x5d\\x7a\\xeb\\x88\\xe8\\x7a\\xc4\\xa1\\xd3\\x94\\x90\\x9d\\x49\\x41\\x4a\\xef\\xc2\\x2b\\xa0\\x09\\xaf\\xf6\\x96\\x2c\\x92\\x17\\xd7\\x55\\x69\\x4e\\x4d\\x6a\\xa8\\xa5\\xd6\\xa8\\x03\\xce\\xbb\\x15\\xde\\x8f\\x54\\x16\\x34\\xb6\\xfc\\xeb\\x0c\\xac\\x79\\xdd\\xa8\\xa1\\x8e\\xef\\xbb\\x53\\x7e\\x70\\xff\\xe9\\xaa\\x5a\\x6a\\x6a\\xaf\\x92\\x40\\xfa\\xc2\\xea\\xcb\\xfb\\xef\\x01\\xad\\x6b\\xdf\\x50\\x75\\x87\\x80\\xf8\\x6a\\x4e\\x48\\x89\\x85\\x36\\x2d\\x58\\x25\\x01\\x1f\\x5e\\x8b\\x66\\x42\\x5a\\x61\\x6b\\x7e\\x10\\x4e\\xb2\\x3f\\xe8\\xf1\\x00\\xcb\\x02\\x49\\x82\\x36\\x62\\xbd\\xa3\\xda\\x47\\xa4\\xc3\\xc1\\xca\\x2f\\x91\\x4b\\x25\\xb9\\x73\\x85\\x34\\x02\\x60\\x47\\xdf\\x6d\\x7f\\xf6\\x31\\xdf\\x2c\\x41\\x31\\xf6\\x80\\xe1\\x37\\x43\\xc9\\xcc\\xf2\"},\n{{0x38,0xd2,0xef,0x50,0x9f,0x93,0x05,0x1f,0x14,0x51,0x67,0x73,0x7c,0x22,0xe1,0xa5,0xbf,0xe8,0xf4,0xa9,0x1e,0xba,0x0b,0xb8,0x7c,0x39,0xce,0x04,0xa8,0x9b,0xae,0xc6,},{0x01,0x11,0x5f,0x6d,0x89,0xa5,0xda,0xab,0x54,0xf8,0x92,0xbb,0x4a,0x4b,0xda,0x1c,0xe5,0xd8,0xf6,0xc9,0xc8,0x8a,0x50,0xce,0xe8,0x3b,0xd9,0x87,0xa2,0xc0,0xdd,0xf7,},{0xde,0xc4,0x62,0x53,0x50,0x9b,0x11,0xe4,0xb5,0x2a,0x6a,0xe4,0xf3,0x66,0xb6,0x80,0xdf,0xfc,0x28,0x0d,0x0a,0x04,0x4f,0xc0,0xcb,0x79,0x0b,0x6e,0x75,0x13,0x81,0x46,0x1e,0x1e,0x60,0x2a,0x89,0xe3,0xb3,0xd3,0x06,0x4c,0x40,0x7f,0x60,0x2f,0x1c,0x22,0x40,0x4b,0x68,0x23,0xbd,0x24,0x67,0x54,0x93,0x14,0xa0,0x00,0x01,0x66,0x4a,0x08,},\"\\x42\\x7b\\x5a\\x01\\xe8\\x59\\x7f\\x04\\xfd\\x42\\x2f\\x0a\\x66\\x2d\\x0b\\xe2\\xdf\\xa8\\x53\\xed\\x5f\\x9d\\x3f\\x60\\xff\\x90\\xf2\\xc5\\xee\\x08\\xbb\\x59\\xfd\\x03\\xd4\\x02\\xb7\\x54\\xca\\xf5\\x4d\\x00\\x58\\xf5\\xa2\\xcf\\x87\\xaf\\x4f\\xef\\x21\\x77\\xd5\\x9e\\x18\\x22\\x62\\x93\\xfd\\x2a\\xf3\\x76\\xbc\\x98\\x7b\\xf7\\xb3\\x20\\xb9\\xd1\\xe2\\x49\\xab\\x9e\\xfb\\x75\\x07\\x8e\\x6d\\x3d\\xf2\\x9e\\x03\\x50\\x47\\x76\\x35\\x43\\x44\\xaa\\x69\\xe7\\x2e\\x1e\\xbc\\x52\\xa3\\xc3\\x8a\\x4c\\x2a\\x16\\x73\\xb4\\xe9\\x74\\xa2\\xe4\\xe1\\x2a\\x2e\\x78\\xea\\x3e\\x3f\\xe5\\x0c\\x53\\x63\\x0d\\x09\\x6d\\xa3\\xe2\\xfe\\x82\\x99\\xf7\\x1a\\x1b\\x44\\x1b\\x4c\\xf0\\xca\\xeb\\x93\\x7a\\xfa\\x4a\\x0e\\x39\\x15\\xcc\\xab\\x39\\x96\\xc9\\xf6\\xa8\\xf4\\xfd\\x37\\x54\\x3e\\x8f\\x75\\x90\\x0c\\xfd\\x47\\x17\\x53\\x70\\xef\\xb8\\x52\\xa5\\xf6\\x9d\\x67\\x36\\x83\\xf9\\x98\\xfd\\xcf\\xf8\\x5f\\xf8\\xf3\\x2b\\xaa\\x80\\x70\\x66\\x60\\x44\\x22\\x02\\x7d\\x51\\xa4\\x35\\xdd\\xf9\\x88\\xed\\x2f\\xd8\\xeb\\x19\\x1f\\x10\\xb4\\x68\\x07\\x42\\x00\\x08\\x75\\x6e\\xb4\\xe3\\x00\\xc4\\x09\\x9c\\x2d\\x64\\x50\\xbc\\xc6\\xa4\\xe7\\xd0\\x67\\x31\\x56\\xb8\\x37\\xf0\\x50\\x63\\x38\\xf3\\xd1\\xb5\\x73\\x4b\\x16\\x6c\\xa5\\xcc\\x2f\\x24\\xa4\\xef\\x02\\x6c\\xda\\x2c\\x4a\\xe3\\x10\\x5b\\x63\\xca\\x85\\x70\\xd1\\x85\\x46\\xcf\\xac\\xb8\\x60\\x42\\x96\\x6a\\x00\\xef\\x52\\xc7\\x29\\x90\\x19\\xf6\\x8a\\x2d\\xf0\\x8c\\x8b\\x70\\x4e\\x85\\xe7\\x13\\xc3\\x48\\xd7\\xf1\\x67\\x76\\x60\\xe1\\x8e\\xba\\xb5\\x9b\\xf4\\xe1\\x2e\\x6f\\xf2\\xd7\\x83\\xd8\\xd5\\xd4\\x2a\\xab\\x6e\\xf0\\x17\\xb7\\xa1\\x96\\x6a\\xee\\x8d\\xc1\\x4d\\xda\\xbe\\xd4\\x9b\\x4b\\x64\\x3d\\xf4\\xe9\\xb0\\xb6\\x03\\x83\\xc7\\xd8\\xb4\\xb8\\x8c\\x65\\xa8\\x98\\xc1\\xc7\\x7d\\x43\\xd6\\xbd\\x68\\xb2\\xa5\\x74\\x3f\\x1f\\xed\\xd6\\x54\\xdc\\x84\\x49\\x6d\\xa0\\x2c\\xeb\\x69\\xb9\\xb4\\xd3\\xa8\\xe0\\x0c\\xcd\\x72\\xe7\\xc7\\x5f\\xc5\\x0a\\x8d\\xd0\\x87\\xe1\\x83\\xe6\\xc1\\xf5\\x79\\xba\\xeb\\xc5\\xc6\\x3f\\x28\\x07\\x93\\x67\\x91\\xb5\\xfe\\x48\\x47\\xcd\\xcf\\x15\\x17\\x74\\x23\\x52\\x05\\xcd\\x2d\\x7b\\x8b\\xf4\\xae\\x88\\x19\\x22\\x5e\\xa7\\x08\\xb7\\xba\\xac\\x66\\x99\\x8f\\x0c\\xba\\xb2\\xc7\\xdd\\xf2\\x51\\xf3\\xb1\\xde\\x10\\x17\\xd3\\x97\\x69\\x22\\x05\\xee\\xa6\\x39\\xf1\\x2d\\x77\\xbe\\xef\\x6c\\x13\\xbb\\x12\\x10\\x0f\\xf8\\x90\\x64\\x70\\xbc\\x7b\\x21\\x29\\x80\\x53\\xbe\\x1a\\x61\\xb7\\xb3\\xa4\\x99\\xed\\xc3\\x10\\x99\\x6c\\x8b\\xc0\\x87\\x19\\x07\\xca\\x46\\x8e\\x89\\xed\\x31\\x1a\\xdc\\xa2\\xe2\\xb8\\x29\\x30\\x97\\x5b\\x3e\\xfb\\xbf\\xc0\\x3c\\xdd\\xf4\\xd9\\x48\\xc4\\x76\\x5e\\x8c\\x10\\x59\\x08\\x82\\x16\\x9a\\xcd\\xdb\\x8f\\x8c\\x36\\xd8\\x4c\\x2d\\xac\\x3b\\x79\\x8e\\x7a\\xbf\\x84\\x47\\x12\\xfa\\x45\\x8d\\x27\\x7c\\x24\\xe8\\x14\\x04\\x7d\\x74\\x23\\x19\\xa8\\x34\\xdd\\x9f\\x92\\x7a\\x2b\\x44\\x85\\xef\\x13\\x74\\x5f\\x7a\\x60\\xdd\\x6b\\xb3\\x37\\x93\\x63\\x04\\xc9\\x7d\\x3f\\x9f\\x14\\x4e\\xb2\\x9b\\xb6\\x95\\xb8\\xdc\\x31\\xb9\\xd8\\x49\\x10\\x61\\x1d\\x28\\xd5\\x81\\xca\\xa9\\x36\\x5d\\x6d\\xff\\x52\\xd4\\x10\\xa4\\xad\\x52\\xbd\\x12\\x17\\x29\\xff\\xf5\\x28\\x88\\xf4\\xda\\xae\\x17\\x07\\xf6\\xf5\\x6d\\xac\\x61\\xff\\xb9\\x96\\x1c\\xda\\x71\\x76\\xaf\\x44\\x60\\xa6\\xd5\\x54\\x2a\\x20\\x44\\x6f\\xb5\\x14\\x7f\\xce\\x72\\x72\\x04\\xce\\xc6\\x89\\x9b\\x9a\\x3d\\x4f\\xf6\\x22\\x6b\\xb8\\xa1\\xc7\\x8e\\x36\\xfc\\xdd\\x9e\\x50\\xc0\\x40\\xd7\\x2d\\x0f\\x40\\x07\\xd3\\xfa\\x9a\\xa7\\x67\\xe4\\xab\\xd0\\xad\\xd6\\x2f\\xdb\\xcc\\xde\\xff\\x67\\x21\\xeb\\x25\\x9e\\x00\\xa7\\x21\\x63\\x20\\x06\\xbe\\xde\\x0d\\x17\\x3d\\x38\\x34\\x4d\\xea\\x44\\xf9\\x6b\\x67\\xd9\\xa2\\xee\\xa1\\xd2\\xaf\\x5f\\x74\\x8e\\x8e\\xbd\\xb4\\x41\\xbf\\xb4\\xe5\\x8e\\x2d\\x42\\xfe\\xc7\\x40\\x56\\x6a\\xcf\\x73\\xa3\\x03\\x35\\x8f\\x7d\\x89\\xc8\\x15\\x8c\\xf2\\x1f\\xe8\\x5b\\x0d\\x4a\\x41\\x7e\\xbd\\xc8\\x6d\\x04\\x69\\xf6\\xb9\\x1c\\x24\\xad\\x61\\x0d\\x48\\x6d\\xed\\xc2\\x18\\xb2\\xce\\x7a\\x8b\\x96\\x75\\x47\\x23\\x15\\x1f\\x0d\\x00\\x76\\xff\\xf9\\xf1\\x9d\\x11\\x2d\\x9c\\x05\\x92\\xfb\\x8d\\x92\\xc9\\x9d\\xcb\\x8d\\xdf\\xaa\\x46\\xfb\\xe0\\xd9\\x2d\\xf4\\x6b\\x8c\\x00\\xca\\x43\\x45\\xad\\xb6\\x9a\\x5a\\xca\\x69\\x4a\\x86\\xcf\\x30\\x64\\x64\\x51\\xbb\\x17\\xba\\x6e\\x60\\x7a\\x91\\x2b\\xf1\\x09\\xd5\\xfc\\x2d\\x3e\\x27\\xd0\\x0d\\x94\\x56\\x00\\xa8\\xa5\\x7c\"},\n{{0x43,0xbf,0xb3,0xdb,0xe4,0xd9,0xbd,0xaa,0x82,0xb3,0x54,0xdd,0x59,0x63,0x34,0xe6,0x60,0xd7,0x6f,0xc0,0xb2,0xeb,0x69,0x89,0x93,0xae,0xf3,0x76,0x7f,0x1c,0x7c,0x7f,},{0xd0,0x0a,0xec,0xef,0xf0,0xce,0xb8,0x32,0xc2,0x51,0xd1,0xfe,0x6b,0xcb,0xea,0xea,0xcb,0xb4,0x11,0x3f,0x52,0x81,0xba,0xba,0x4e,0x87,0x8f,0x7b,0x95,0xf9,0x3f,0x07,},{0xa9,0x99,0x55,0x23,0x02,0x0a,0x0d,0x22,0x2b,0xc4,0x8f,0x98,0xd0,0x55,0x04,0xe3,0x06,0x8f,0x30,0x4a,0x6d,0x19,0x70,0x06,0xcc,0x9c,0x03,0x5e,0xea,0xde,0x09,0x9e,0x7a,0xa9,0x7e,0x90,0x89,0x4e,0xad,0x17,0xe8,0xc3,0x0b,0x0a,0xa4,0xa9,0x80,0x88,0xf0,0x38,0xb9,0x22,0x44,0xc4,0xb2,0x0f,0xde,0x96,0x4f,0x85,0x34,0xe8,0xfb,0x03,},\"\\x3f\\x3e\\xed\\xdc\\xae\\xf4\\xe1\\x66\\x2a\\xdb\\x66\\xbb\\x1b\\x20\\x7d\\x79\\x3f\\xcb\\xef\\x81\\x50\\x05\\xe8\\x26\\x43\\xed\\x70\\xc9\\x85\\x54\\x03\\xda\\xc2\\x8b\\x52\\x07\\x27\\xa9\\x01\\xa5\\x32\\xd2\\x8b\\x9b\\xd1\\x34\\x8d\\xb2\\xf8\\x96\\x7b\\xbb\\x8c\\x90\\x98\\xb0\\x7f\\x57\\x0a\\x2e\\xae\\x1e\\xe4\\x82\\x64\\x0c\\x0b\\x67\\xa5\\x2a\\x38\\x61\\x21\\x33\\xa1\\x5e\\x25\\x8e\\xde\\x38\\xcd\\xa8\\x78\\xff\\x36\\xed\\x32\\x1d\\xff\\x87\\xcc\\x6a\\x01\\x38\\x3b\\xa8\\x40\\x67\\xd6\\x0a\\xf4\\x17\\x76\\xac\\xf8\\x0a\\x8a\\x4e\\xac\\x77\\xf7\\xd8\\x7c\\x37\\xa7\\x04\\xa3\\xe2\\xac\\xa1\\xe8\\x81\\x5e\\x49\\xfb\\xca\\xb7\\x97\\xc8\\x56\\x52\\x95\\x38\\xbe\\x07\\xd5\\x16\\x96\\x32\\x1f\\x69\\xb0\\x9b\\x5d\\xc5\\xa1\\x5e\\x5f\\x0e\\x4c\\x22\\xd2\\x28\\x37\\xf6\\x2e\\xe4\\xc8\\xbc\\x7f\\x25\\xa9\\x48\\x7b\\x96\\x2c\\xc2\\x0f\\x13\\x3f\\xcb\\x87\\x0e\\xd1\\x25\\xcc\\xa5\\x85\\xd1\\x81\\xbd\\x39\\xf9\\xdf\\xa6\\x61\\xf1\\x9b\\xe7\\x6d\\xa7\\xf6\\x5f\\x22\\xfb\\xbc\\x80\\x75\\x2a\\xeb\\x39\\xe8\\xd5\\x9e\\xd9\\x6e\\x14\\xf5\\x95\\xd0\\x49\\x29\\x40\\x2b\\x50\\x29\\xc6\\x0c\\xee\\x37\\xc0\\x21\\x7b\\xc5\\x31\\xd8\\x0d\\xb3\\x41\\xda\\xce\\x3c\\xce\\x76\\xe6\\x43\\xaa\\xc5\\x38\\x87\\x47\\x3e\\xdc\\x6e\\x19\\xcb\\x39\\xfe\\xcf\\x6a\\xf4\\x24\\xa2\\x06\\x63\\x93\\xd1\\xc3\\x3f\\xc7\\xb9\\x36\\x76\\xd7\\xe6\\x10\\x5b\\x9b\\xfc\\x96\\x7d\\x1e\\x29\\xaf\\xdc\\x4c\\xf1\\x5b\\xca\\xfa\\x09\\xc2\\x95\\xa6\\xf9\\xde\\xee\\x33\\x1a\\xb3\\xb0\\xd4\\x93\\x12\\x6e\\x2b\\x2f\\xff\\xb4\\x2a\\x6b\\x68\\xe7\\x9e\\x13\\x8d\\xb5\\x50\\x82\\x72\\x62\\xe4\\x87\\xa8\\x3f\\x37\\xf0\\x1d\\xd7\\x92\\x2b\\xe7\\x5e\\x92\\xfc\\xf5\\xd9\\xd4\\x80\\x3b\\x3a\\xc2\\xf3\\x5d\\xa2\\x10\\xfb\\x38\\xb2\\x63\\xb0\\xff\\xb6\\xc2\\x70\\x8d\\x4b\\x55\\xb7\\x57\\xaf\\x52\\x07\\x7a\\x7e\\x31\\x84\\xd0\\x1e\\x82\\xf6\\x4d\\x32\\xcc\\xe4\\xfd\\xee\\x0f\\x8d\\x4e\\x36\\x4b\\xcf\\xb9\\x58\\xeb\\xbf\\xdb\\xb6\\x22\\xb3\\x8b\\x51\\xe9\\x30\\x27\\x1c\\x7b\\x1b\\x70\\xaa\\x9d\\x4b\\xb3\\xaa\\x4b\\x99\\x7c\\x52\\x14\\x4d\\x3a\\xa6\\x21\\x62\\x57\\x3a\\x3a\\x1d\\x9c\\xe4\\x6c\\xdb\\xee\\xb8\\x44\\x9f\\x12\\x25\\xc4\\x49\\x63\\x1e\\x88\\x97\\x52\\x1c\\xd0\\xf6\\x37\\xb7\\x21\\xa1\\x25\\x2b\\x8a\\x10\\xab\\x0b\\xe8\\x70\\xaf\\xbc\\xd8\\x9d\\x58\\xb2\\xeb\\xb6\\x32\\x11\\x95\\x0c\\xad\\x7a\\xb8\\x2c\\x81\\x95\\x02\\x6b\\x50\\xea\\x8b\\x77\\xb9\\xe9\\x0e\\xd5\\x59\\xaf\\x44\\x84\\x30\\x88\\x51\\xa3\\xa1\\x56\\x71\\x68\\x53\\xa8\\xac\\x4e\\xcb\\x8c\\x5c\\xc7\\xd9\\x35\\xb0\\xf4\\x66\\x12\\x41\\x43\\xb1\\x17\\x7f\\x05\\xd0\\x8b\\x97\\xd1\\xad\\x54\\x2e\\xd2\\xc2\\x46\\x5a\\xf1\\x85\\xe7\\xdb\\x42\\xb6\\x9c\\xb8\\x02\\xa7\\x17\\x94\\xa3\\x13\\x98\\x83\\x02\\x96\\x70\\xc9\\x56\\x74\\x2a\\xaa\\xd7\\x90\\x7a\\x71\\xd9\\x59\\x85\\xfc\\x1d\\x45\\xb6\\x59\\x97\\xb4\\xec\\x6c\\xe8\\x25\\x5d\\xe9\\x59\\x27\\x0a\\xfa\\x7d\\xe9\\x0f\\x29\\x29\\xde\\x63\\xf9\\xb1\\x72\\x11\\xd7\\xf1\\xae\\x82\\x0a\\xda\\x9c\\xe3\\xe4\\x86\\x49\\x17\\x9d\\x60\\xb0\\x14\\x94\\x93\\x48\\x1f\\x01\\xd4\\x59\\xdb\\x7d\\xad\\x05\\x26\\xb5\\xbd\\x9f\\x4b\\x33\\x80\\xd2\\x5b\\xa2\\xc5\\x02\\xba\\x8f\\xa3\\xc4\\xd4\\x13\\x1b\\x46\\x62\\xad\\xde\\xfb\\x41\\x82\\x7f\\x75\\x9f\\xa7\\x1d\\x44\\x7d\\x5f\\x02\\x92\\x45\\xf4\\x8c\\x62\\x2e\\xb7\\xc6\\x8c\\x8e\\x71\\x08\\x1f\\x7f\\x78\\x9d\\xe7\\xa2\\x83\\xd2\\xed\\xa8\\x3a\\x7d\\x17\\x22\\xa0\\x5f\\xb7\\x2e\\x17\\x60\\xc2\\x40\\x40\\xc4\\xd8\\x34\\xde\\xf5\\xdf\\x5f\\x74\\x2e\\x02\\xb3\\x04\\x51\\xc8\\x93\\xbc\\xf7\\xd7\\x71\\xdb\\x78\\x4c\\xbb\\xda\\xec\\x87\\x6d\\x8a\\xc8\\x67\\x43\\xb5\\x29\\xa2\\x92\\x00\\x7a\\xc7\\x53\\xc9\\x9a\\x57\\x99\\xcc\\x32\\x4f\\xe5\\xeb\\xb5\\x44\\x8a\\xb5\\x54\\xb1\\x0d\\x41\\x36\\x97\\x4a\\x12\\x54\\x2d\\x25\\xc6\\x14\\x7c\\x67\\xc5\\xd2\\x33\\x6c\\x9d\\xb7\\x5c\\xba\\x2f\\xd6\\x08\\xcd\\x43\\xab\\x95\\xbe\\xac\\xd0\\x43\\xa1\\x34\\x9c\\xef\\xa8\\x28\\xe2\\x3b\\x5f\\x0b\\x6e\\x0e\\x29\\x51\\xf3\\x35\\x3b\\xb9\\x2b\\xfd\\x1f\\x0a\\x49\\xc3\\x3f\\xb3\\xcf\\x37\\x99\\xa0\\xb5\\x43\\x19\\x8a\\xd5\\xd0\\x3d\\x26\\x3c\\x1a\\x06\\xc3\\x5a\\x26\\xad\\xe1\\x51\\x84\\x91\\xc8\\xc1\\xd2\\x7a\\x2d\\xb0\\x33\\x80\\x89\\x32\\xcd\\x1c\\x47\\xb5\\xa1\\x26\\x98\\x5a\\xcb\\x8d\\x88\\x83\\x60\\xee\\xcc\\xfe\\xb3\\xbf\\x51\\xb0\\xd1\\x89\\xb4\\x19\\x04\\x40\\x40\\x4d\\x12\\xfb\\xa6\\x5d\\x0a\\x7a\\x14\\xc6\\x20\\xc5\\x55\\xf8\\x22\"},\n{{0x51,0x4e,0x07,0x0b,0x01,0x90,0xd1,0x8c,0xbe,0x98,0x1a,0x5a,0x15,0x1e,0x77,0x53,0x39,0x8a,0x27,0x2b,0xcf,0x01,0x48,0x13,0xad,0x37,0x97,0x22,0xc3,0x6e,0x13,0x3d,},{0x6f,0xbd,0xe0,0x47,0x4c,0xc4,0x81,0x0e,0xff,0xa5,0x0a,0x07,0x82,0x0c,0x96,0x5a,0xa0,0x03,0x95,0xff,0x3a,0x5b,0x3e,0x2e,0xdd,0x7d,0x35,0x6b,0x7d,0x6a,0xef,0x2b,},{0xb6,0xc3,0x55,0xc9,0x58,0xb5,0xba,0xa7,0xeb,0xe9,0x77,0xa9,0x3f,0xcf,0x53,0x95,0x89,0xa3,0x66,0xd4,0x01,0x60,0xe4,0xe0,0x31,0xb8,0x8a,0xb9,0x64,0x02,0xc7,0xbd,0x57,0x7f,0xf6,0x35,0xfc,0x07,0x78,0x24,0x23,0x59,0x8d,0xca,0x43,0x66,0x81,0x24,0xa8,0xb2,0x87,0x51,0x0e,0x2c,0xfd,0x07,0xa1,0xe8,0xf6,0x19,0xf6,0xc8,0x54,0x0a,},\"\\x83\\x14\\x55\\x76\\x2a\\x5d\\x80\\x09\\x7b\\xb2\\x84\\x50\\x42\\xf4\\xc8\\x76\\xe7\\x10\\x85\\x35\\xbe\\xd6\\x83\\xe8\\xc4\\x46\\x19\\xd0\\x81\\x54\\xa2\\x29\\x44\\x4b\\x10\\x1e\\x3e\\xd7\\xc0\\x15\\x07\\xe8\\x70\\x94\\x14\\x46\\xaf\\x97\\x8c\\x0f\\x53\\x41\\xd1\\xac\\x1d\\xd1\\x5b\\x14\\xe8\\x96\\x67\\x12\\xdf\\x19\\xf5\\x2f\\xeb\\x51\\x03\\xcf\\x62\\xb6\\x63\\x27\\x56\\x44\\x6c\\xc7\\x54\\xdf\\x00\\xa3\\xf6\\xdd\\x71\\x99\\x68\\xa2\\xce\\xf6\\x6c\\x3a\\xdf\\xb7\\xd1\\xfc\\x49\\x1f\\xbb\\xf3\\xd5\\x92\\x94\\xab\\x34\\x61\\x9e\\x17\\x6d\\xb0\\xd4\\x46\\x15\\x1e\\x37\\xea\\xa3\\xda\\xf1\\x72\\x40\\x6e\\x98\\x3d\\x9d\\x23\\xa6\\xb6\\x9e\\x92\\x97\\x60\\x30\\xf5\\xac\\x70\\x40\\xad\\x51\\x14\\x12\\x9f\\xea\\xf9\\x7a\\xf1\\x5b\\x22\\x96\\xfa\\xe7\\x04\\x92\\xdb\\xbe\\xb2\\xb4\\x82\\x76\\x87\\xfb\\x79\\x87\\x15\\xc9\\xbb\\x2c\\x32\\x55\\x7a\\x81\\xd8\\x91\\xb8\\x97\\x05\\x29\\x00\\x70\\x71\\x59\\x75\\x1f\\x07\\xdb\\x07\\x4c\\x77\\xf0\\x71\\x96\\x71\\xf1\\x76\\x66\\x89\\x02\\x9a\\x3c\\xdd\\xf3\\x9d\\xf3\\x48\\x3c\\xf2\\xb0\\x4f\\x71\\xc2\\x5d\\xe0\\x5f\\xc2\\xd0\\x2b\\xb4\\x8e\\x53\\x9e\\xaf\\x1a\\x32\\x16\\x46\\xcd\\x80\\xef\\x2f\\x0a\\xc7\\x03\\xf4\\x5e\\x73\\x89\\x53\\x08\\x00\\xe5\\xd4\\x17\\xcc\\xea\\x8a\\x5c\\x08\\x66\\x82\\xf0\\x47\\x45\\xd5\\x0b\\x5d\\xfc\\x8f\\x6e\\xdc\\x87\\xa9\\x5c\\x7d\\x20\\x2a\\x9c\\xfd\\x99\\x87\\x14\\xb7\\x46\\x92\\x0e\\xbb\\xe2\\x33\\x5b\\xca\\x1a\\x01\\x71\\x76\\x20\\x16\\xf5\\xe4\\xbd\\xa8\\x9c\\x57\\xd0\\xed\\xc6\\x91\\x0c\\x6d\\x22\\xc8\\xf9\\x09\\xda\\x3d\\xb1\\x35\\x2f\\x0c\\x8b\\xd1\\x8f\\x3b\\x5a\\xac\\x25\\xf1\\x93\\xb8\\x94\\x70\\xf9\\x76\\xbc\\x4f\\x1a\\xff\\xb3\\xc6\\x6b\\xc5\\x87\\x6c\\x6f\\xe2\\xac\\x75\\x08\\x53\\x3d\\x97\\xbb\\xcf\\x77\\x11\\x9d\\x9a\\xae\\x19\\x3f\\x07\\xe0\\xb6\\x4b\\x46\\x1c\\x9c\\x6c\\x3b\\x9d\\x29\\x3b\\xd3\\x7d\\xe3\\xd8\\xe1\\xab\\x1e\\x8d\\x87\\x2c\\xd9\\x4e\\x6c\\xf0\\xeb\\x68\\x43\\x9f\\xdc\\xd3\\xb2\\x5c\\xe8\\x48\\x34\\x60\\xbd\\x8b\\x7c\\xce\\x88\\x9f\\xb7\\x22\\xb4\\x36\\x1e\\x11\\x8d\\xa9\\x83\\xef\\x4a\\x9e\\x45\\xce\\xbc\\x0c\\x1b\\x82\\x29\\xea\\x53\\xe6\\xf5\\x55\\x05\\xf6\\x44\\xe0\\x9a\\xca\\xa4\\xc4\\xb8\\xcc\\x64\\x0b\\x2c\\xd2\\xb3\\x12\\xe1\\xc3\\xa2\\xc0\\x26\\x69\\xe1\\xf9\\xc0\\x63\\x11\\xc7\\x8d\\x36\\x00\\x09\\xdb\\x9e\\x67\\xc3\\x9b\\x49\\xd1\\xe5\\xd7\\x70\\xc0\\x1d\\x28\\x4b\\x0a\\x17\\xa4\\x1b\\x4e\\x7c\\xa7\\x45\\xd6\\x65\\xec\\x07\\x50\\x0e\\x4d\\x9f\\xc8\\xeb\\xc1\\xcc\\x6a\\xf5\\x3a\\x3f\\xc7\\x6b\\x0c\\x3f\\x14\\x31\\xd4\\x98\\x43\\xf2\\x0e\\x18\\x27\\x82\\xc8\\x2b\\x3b\\x5a\\xae\\x36\\xfe\\x20\\xca\\x64\\x26\\x18\\x06\\x8b\\xe2\\x33\\xd4\\xb5\\xef\\x9e\\xae\\xff\\x40\\x15\\x36\\xdc\\x59\\x3a\\x2b\\xc1\\x83\\x44\\xf5\\x5a\\xc5\\xd5\\xfc\\x7b\\x3e\\xb5\\x06\\xd1\\x1c\\xb3\\x75\\x33\\x00\\x63\\xc6\\x20\\xc5\\x33\\x4d\\x72\\x3c\\x7d\\x1f\\x04\\x28\\x16\\xbc\\x47\\x85\\xb3\\x5a\\xc0\\xe6\\xf1\\x74\\xf7\\x36\\x87\\x8b\\x7b\\x49\\x16\\x58\\xca\\x67\\xd8\\xfc\\xab\\x53\\x8f\\xc6\\xec\\xd2\\x77\\xea\\xd9\\x0d\\x95\\x4b\\x46\\x0d\\xa4\\x25\\x3a\\x1c\\x3a\\x30\\xb3\\xd8\\x92\\x8f\\x69\\xac\\x98\\x76\\xa2\\x89\\x19\\x69\\xfc\\x2d\\x06\\xa6\\x68\\x99\\x2b\\x8e\\x21\\x15\\xdf\\xe5\\x35\\x8a\\x71\\x24\\xba\\x7c\\xcf\\x42\\x1d\\x80\\x54\\xea\\x04\\x34\\x44\\xcd\\xeb\\x40\\xb7\\x16\\xdc\\x7a\\x36\\x59\\xa3\\xca\\x94\\x34\\x72\\x93\\x48\\x90\\x60\\xe2\\xcf\\x67\\x12\\xa2\\xa6\\xc7\\xb8\\xad\\x14\\x67\\x85\\xfc\\x40\\xcc\\xb9\\xda\\x28\\x78\\x30\\xd0\\x11\\xd0\\xd2\\x4d\\xf3\\xe7\\xaf\\xbe\\x97\\x2d\\x6f\\x41\\x7d\\xe5\\xcd\\x75\\xf2\\x59\\xea\\x07\\xca\\xfd\\xde\\x20\\x5f\\xc0\\xa3\\x65\\x13\\x5c\\x23\\x2c\\xbd\\x7c\\x1b\\xc5\\x39\\xfa\\x4b\\x7e\\x1c\\xce\\x35\\x18\\x52\\x37\\xc2\\x3f\\x80\\xae\\x97\\xc1\\x86\\xd0\\xd3\\xb1\\x05\\x03\\xd5\\x98\\x4a\\x20\\xec\\x41\\xc3\\xcd\\x04\\x2c\\x28\\xa4\\xc3\\x1f\\x95\\x74\\xb0\\x6a\\x87\\x2b\\xf9\\x59\\xab\\x0a\\xdd\\x1f\\x5d\\xee\\x14\\xa1\\xe7\\x41\\xef\\x23\\x8d\\xfc\\xde\\xc0\\x85\\xaa\\x08\\x8d\\xcf\\x39\\xa3\\x6d\\xda\\x8f\\x2a\\x85\\xed\\x0d\\x36\\x2c\\xcb\\x00\\x5d\\x02\\xe5\\xac\\xcc\\x09\\x2a\\x37\\x6d\\xc1\\x1a\\x56\\x61\\x70\\xd5\\x83\\xdb\\x35\\xf1\\xde\\x0b\\xe3\\xf1\\x59\\x08\\x59\\x6e\\x9b\\x78\\x1a\\xc8\\x1b\\xe0\\x7b\\x9b\\xd2\\xaf\\x46\\xc5\\x6f\\xb4\\xd9\\xd8\\x42\\x76\\x01\\x1e\\x46\\x18\\xb7\\xf7\\x6f\\x96\\x79\\x4c\\xd0\\xfd\\x57\\xed\\x41\\x4b\\x63\"},\n{{0xbc,0x79,0x0a,0x73,0x85,0xdd,0x1d,0xdd,0xc7,0x62,0xe3,0xb2,0x02,0x21,0xdc,0x07,0x8b,0x6c,0x3d,0xa8,0x98,0x6d,0x41,0x80,0x94,0x07,0x27,0x25,0x7c,0xfd,0xcd,0xf1,},{0xc9,0x26,0x46,0x26,0xf6,0x8f,0xed,0xb5,0xb3,0x9c,0x28,0xf0,0x30,0x45,0x3b,0x54,0xd0,0xd5,0x1a,0x98,0xb1,0x77,0x21,0xf2,0x61,0x1d,0x7f,0x27,0x7e,0xf4,0x8b,0x81,},{0x6d,0x6b,0xd6,0x5f,0x37,0x26,0x79,0xfe,0x9d,0x94,0x5f,0xf5,0x65,0x16,0x33,0x3e,0xce,0x0b,0x7a,0x25,0xb1,0x5a,0xd2,0x48,0x73,0x81,0x67,0x0e,0x53,0x6f,0x52,0x46,0x77,0x5e,0xb3,0x9a,0x11,0x4d,0xb2,0xb9,0xcd,0x50,0xf3,0x12,0xb3,0x60,0xd9,0xd0,0xbe,0xa2,0x95,0xdc,0x37,0xb8,0x17,0xb3,0x32,0x89,0x0a,0xdb,0x65,0xe4,0xc4,0x01,},\"\\x14\\x3d\\xd7\\xbf\\xbf\\xf2\\xad\\xc7\\x1f\\x5d\\x12\\x3d\\x47\\x4e\\xa0\\x69\\xdf\\x14\\xae\\x92\\x3e\\xd9\\xbf\\x8f\\x98\\x91\\xe6\\x0b\\xae\\x43\\xf0\\xc9\\xf5\\x55\\x37\\xac\\x9d\\x1a\\xe5\\x23\\xce\\x4e\\xcf\\xd3\\x3b\\x20\\xae\\x44\\x5e\\x9c\\x42\\x63\\x72\\x05\\x0f\\xa5\\x21\\x7c\\x1e\\x4f\\xb0\\x13\\x53\\xeb\\xf2\\xe3\\x29\\x04\\xef\\x7e\\xef\\xcf\\x72\\xe8\\x02\\x3b\\xae\\x06\\xbb\\xb6\\x40\\xcf\\x77\\x7d\\x5b\\x0e\\x11\\x52\\x7b\\xc8\\x35\\x49\\x3a\\xd6\\x98\\x0a\\x15\\x7b\\xb2\\xd5\\x0b\\xe2\\x33\\x65\\xe7\\x2c\\xbf\\x0b\\x3f\\x20\\x9e\\xf0\\xc4\\x4a\\x00\\xb4\\x1a\\x62\\x26\\x24\\x88\\x09\\x6c\\xae\\x5a\\x69\\x6b\\x4d\\x64\\xcb\\xad\\x34\\x50\\x0d\\x41\\xfb\\x4e\\x4b\\xc7\\x0f\\x8b\\xf6\\x21\\x44\\xd0\\x1c\\x22\\x75\\xd6\\xd2\\x9f\\x5d\\xe7\\x5b\\x17\\x21\\xd5\\x04\\x6b\\x68\\x29\\x16\\x44\\x43\\xeb\\xfd\\x9c\\x17\\x81\\x31\\x9d\\x88\\xf5\\x40\\x10\\xed\\xc2\\x96\\xab\\xbe\\xd0\\x2b\\x7d\\xad\\x9b\\xa5\\x85\\xb5\\x52\\xe0\\x00\\x5d\\xcc\\xa4\\x00\\xbf\\x4f\\x45\\x9e\\xed\\x7d\\xb8\\x6e\\xa8\\x61\\x2b\\xe9\\xe9\\x18\\xdf\\xd4\\xe2\\x70\\x0c\\x47\\x10\\x08\\x32\\x83\\x62\\x6f\\xac\\x75\\x44\\x17\\xe0\\x08\\x7d\\x26\\xba\\x14\\x5d\\xfc\\x45\\xb1\\xc9\\xbf\\x7b\\x4d\\xd7\\x0e\\x6c\\x50\\x87\\x47\\xef\\x80\\x5c\\x9a\\x02\\x42\\x5a\\xeb\\xc6\\x42\\x1e\\x0d\\xeb\\x6a\\x79\\xd8\\x9a\\xce\\xee\\xe0\\x1e\\xce\\xcc\\x9f\\x3c\\xa3\\x65\\x38\\x38\\x26\\x58\\x4c\\x43\\x0e\\xbd\\x39\\xec\\xf0\\xa7\\x28\\x66\\xae\\x0a\\xce\\xca\\x5a\\xd4\\xf0\\x40\\x5b\\x67\\x77\\x9c\\x04\\xc5\\xde\\x03\\x30\\x61\\x4d\\xa3\\x47\\x0b\\x80\\x5d\\x78\\x7c\\xe7\\x9a\\xc5\\xa6\\x96\\xdd\\x6f\\x6b\\x55\\x39\\xb1\\xa6\\x51\\xb4\\x24\\xce\\xfb\\x19\\x49\\x1d\\xa6\\xe0\\x88\\x92\\x23\\xcc\\x98\\x39\\x8b\\x42\\xc0\\x04\\x14\\xff\\x8d\\x6c\\x06\\x27\\xeb\\x97\\xcf\\xf2\\x0a\\x8c\\xbe\\x7f\\xcc\\xb4\\x1d\\x81\\x0f\\xcf\\xe8\\x58\\xca\\x74\\x75\\x24\\x7e\\xf6\\x28\\xe8\\x4a\\x09\\xd0\\x12\\xfe\\x12\\x23\\x5b\\x38\\xc1\\xcc\\x9d\\x82\\xe2\\xb6\\x9d\\x01\\xd6\\x21\\x8c\\xfd\\x48\\xe8\\x5f\\x26\\xae\\xad\\xd1\\x95\\x40\\x8c\\xdd\\x4c\\x2f\\x80\\x6a\\x89\\x04\\x1f\\xd0\\x31\\x7f\\xb1\\xa7\\xb6\\x20\\x9f\\x90\\x42\\x70\\xd3\\x4e\\x60\\x61\\x95\\x04\\x72\\x88\\xb0\\xfb\\x11\\xa5\\x72\\x29\\x38\\xf6\\x7c\\x22\\xb3\\x13\\xf7\\xf7\\x4b\\x20\\x25\\xc7\\x5b\\xcd\\x1e\\xcc\\x5a\\x9a\\xdd\\x4a\\x64\\x0a\\x41\\xf2\\x99\\x6e\\xb6\\x6e\\x5a\\xf1\\x96\\x19\\x8d\\xb5\\x8a\\x3f\\xb9\\x93\\x8f\\x34\\x9f\\x92\\x2a\\x24\\xd8\\x6f\\x4e\\xd8\\xa9\\x6a\\x09\\xa1\\x96\\xc2\\x4d\\x6d\\x01\\xed\\x76\\xf3\\x81\\x6c\\x05\\xc4\\xf2\\x6b\\xac\\xa9\\xb9\\xd6\\xdc\\xc7\\x9b\\x58\\x0d\\xfb\\x75\\xd6\\xc9\\x05\\xd4\\x80\\xda\\xd7\\x69\\x51\\x85\\x4b\\xda\\x1c\\xaa\\x7f\\x4a\\x81\\x95\\x43\\xae\\xd0\\x1a\\xe9\\x56\\xbf\\x30\\x58\\xfe\\x8b\\x3c\\x7d\\x5d\\x72\\x49\\x62\\xf1\\xa6\\xa8\\x31\\x43\\xdd\\xad\\x27\\x4f\\xda\\x3a\\xd5\\x78\\xe9\\x8a\\xa9\\x67\\xc4\\x10\\xee\\x57\\x57\\x5e\\xf0\\x1c\\x02\\x58\\x56\\x0f\\x0a\\x1f\\xa4\\xb7\\x93\\x27\\x79\\x6d\\xe9\\x94\\x20\\xcf\\xd0\\xa4\\x15\\x50\\x63\\x60\\xf1\\x24\\x2c\\xcc\\x58\\xa6\\x88\\x09\\x27\\x75\\x0d\\xbb\\xff\\x13\\xd7\\xc1\\xb4\\xed\\x51\\x9c\\xda\\x35\\x72\\x10\\xf1\\x2f\\xb0\\xd1\\xc4\\xd4\\x8f\\x04\\x11\\xbd\\x7e\\x05\\x8c\\xc4\\xcb\\x93\\xd3\\xc7\\x75\\x97\\xe2\\x65\\x3f\\xfa\\x28\\x2d\\x3c\\x2f\\x12\\x8a\\xc3\\x3a\\x23\\x7a\\xf2\\xfc\\xbc\\x9e\\xf9\\xc8\\x11\\xf3\\x78\\x14\\xba\\x2b\\x0b\\x85\\x09\\x3d\\x0f\\xd1\\x8b\\x8c\\x6f\\xb0\\x9a\\x43\\xce\\x52\\x25\\x4d\\x23\\xd5\\x5f\\x32\\xe1\\xd3\\x24\\x2a\\xed\\x1f\\x23\\xd9\\xcf\\x20\\x4a\\xa0\\xdf\\xd4\\x4a\\x34\\x6f\\xe0\\x9e\\x55\\xa4\\xa0\\x6c\\xf1\\xbe\\xf8\\xbb\\xf3\\x7b\\xa1\\xf1\\x59\\x8a\\x58\\xae\\xf8\\x95\\x01\\xec\\xba\\xc0\\x45\\x35\\x43\\xe4\\x80\\xed\\x0a\\xdd\\xe9\\x0c\\x84\\x1d\\x95\\xeb\\xd6\\xeb\\x23\\xba\\xa9\\xf7\\x0f\\x83\\xc1\\x49\\xea\\xb3\\x2d\\x09\\x13\\xc7\\x9b\\x09\\x93\\xd0\\xe1\\xd3\\x57\\x4f\\x0f\\x54\\x2e\\x56\\xa2\\x06\\x16\\xcf\\xe4\\xa8\\xbd\\x7a\\xae\\xeb\\xe0\\xb0\\x83\\xdc\\x2c\\xe0\\x14\\x61\\x78\\xc0\\x74\\x82\\xa0\\x11\\x29\\xbc\\x6f\\xef\\xdc\\x81\\x41\\xc1\\x38\\x48\\x94\\xb6\\x9c\\xbe\\x2f\\x29\\xda\\x18\\x8f\\x7f\\xd4\\xac\\x34\\x1a\\x2d\\xf6\\xfd\\x90\\xde\\xe6\\xa4\\x46\\xd2\\x74\\x63\\x24\\xc7\\x5c\\x1e\\xf5\\xb1\\xac\\xe1\\x87\\xd3\\xbc\\x16\\xd7\\x05\\x59\\x89\\x29\\x75\\xd7\\xe4\\x71\\x38\\xf0\\x40\\x63\\x85\\xea\"},\n{{0xdb,0x3a,0x44,0xdf,0x40,0xd2,0x55,0xa2,0x5c,0xf2,0x3f,0x53,0xc4,0x52,0x23,0xb7,0xd8,0xf1,0xf1,0xf1,0x11,0xba,0x07,0x40,0x6b,0x71,0xe1,0x84,0xa8,0xcd,0x06,0x12,},{0x6b,0x12,0xbd,0x95,0x80,0xae,0x20,0x7a,0x9b,0x0b,0xaa,0x82,0x87,0xb8,0xbb,0x86,0x66,0x93,0x73,0xee,0x5e,0x5a,0x62,0x5a,0xb4,0xa6,0xef,0x2d,0x08,0x71,0x25,0x97,},{0xcc,0x28,0xb5,0xef,0x4b,0x97,0x73,0x63,0x7f,0xae,0x7e,0x5f,0x08,0x4b,0x69,0x94,0xaa,0x35,0x98,0xf8,0xf4,0xa6,0x5d,0x0b,0xb2,0x01,0xd1,0x72,0xd8,0x61,0xa3,0x01,0x49,0xb3,0x33,0x8d,0x3c,0x3a,0xb7,0x5b,0x32,0xb2,0x55,0x95,0xcd,0x8b,0x28,0x96,0x30,0xc3,0x37,0x6a,0xcd,0x10,0xba,0x2a,0xb2,0x6b,0xc1,0xab,0xa9,0x00,0x84,0x0e,},\"\\x52\\xdd\\x8b\\xa4\\xff\\xfa\\x34\\x4d\\x1e\\x08\\x11\\xd9\\x67\\x5c\\x31\\x3f\\x9c\\xc0\\xe5\\xa1\\x38\\x47\\x86\\x91\\x98\\x9d\\x2b\\x7f\\x73\\x89\\x02\\x50\\x68\\xfa\\x35\\xf7\\x4f\\x9a\\xea\\xf1\\xe9\\x56\\x65\\xec\\xf8\\xd5\\x70\\x7f\\x75\\xf6\\x5f\\x22\\x56\\xee\\xa9\\x33\\x98\\xbe\\x59\\xc0\\xd5\\x38\\xf5\\xe8\\x58\\x4b\\xfb\\xb3\\xa2\\x40\\xf5\\x01\\x6d\\x79\\x27\\x23\\x4c\\xb3\\xea\\xc3\\x5b\\x39\\x1b\\x8b\\x53\\xf2\\x0e\\xd8\\xba\\xe0\\xba\\x11\\x08\\x96\\x94\\xbf\\xea\\xde\\x11\\x07\\x16\\x56\\xd4\\xcf\\x18\\xef\\x2d\\x36\\x81\\x92\\xe0\\x4e\\x08\\xe3\\x02\\x4f\\xc1\\xd2\\xfd\\xa6\\x31\\x2a\\xfc\\xa6\\x8d\\x10\\xc9\\xc3\\x36\\xa0\\xe3\\x68\\x50\\xbe\\x1a\\x4f\\x35\\xb0\\x33\\xa8\\x5a\\x2a\\x95\\x49\\xf2\\x67\\x3a\\x99\\x5f\\x2a\\x9a\\xb4\\xbd\\x46\\xc8\\xfd\\x2d\\x83\\x8e\\x64\\xf7\\x61\\x71\\x34\\x27\\x32\\x9c\\x9a\\xf5\\xe4\\x21\\x1a\\x22\\xab\\x20\\x8a\\xaa\\xb8\\x0e\\x19\\x4c\\xd0\\xf6\\xa5\\x02\\xb3\\x08\\xfe\\xd6\\xc5\\x83\\x51\\x78\\x01\\xa4\\x8e\\xd4\\x33\\x0e\\x2f\\xad\\xdc\\xd4\\x18\\x09\\xc3\\x91\\x9b\\x30\\xe8\\x4d\\xb3\\xc6\\x87\\x31\\x03\\x1e\\x79\\x85\\x7d\\xd9\\xf9\\x7f\\xfd\\x12\\x54\\x7d\\xa7\\x06\\x67\\x98\\x07\\x41\\x51\\xec\\x88\\xa5\\xfa\\x96\\x3b\\x9d\\x9d\\x83\\xba\\x2f\\xee\\x13\\x58\\x33\\x95\\x0e\\xf7\\xbc\\x62\\xb3\\x40\\x1e\\xa1\\x1b\\xb3\\x6f\\x25\\x56\\x1b\\xc0\\x52\\x2b\\xb0\\x2d\\x8d\\xad\\x05\\x43\\xf6\\x3d\\x54\\x7b\\xe7\\x7d\\x0a\\x4c\\x9b\\xf6\\x5d\\x42\\xf3\\xa2\\x76\\x14\\x4d\\x2e\\x47\\x4e\\x29\\x42\\xf3\\x79\\x02\\x21\\xe2\\x6f\\xba\\xe7\\xca\\x91\\xef\\xd8\\x59\\x21\\x99\\x08\\x35\\xfa\\xfb\\x6d\\xc6\\x74\\x63\\x5c\\x96\\x01\\x82\\x10\\x38\\xb5\\x27\\x11\\x34\\x3d\\x1a\\xa2\\x5f\\x1c\\x46\\xba\\x4e\\x3c\\x6e\\x71\\x2b\\xac\\x19\\xe5\\x3e\\xae\\x30\\xe5\\x24\\x6e\\x4f\\x04\\xdd\\xf2\\xac\\xdb\\xb3\\x41\\x63\\xc2\\x43\\x67\\x76\\x90\\xbe\\x0b\\xf2\\xe3\\xfa\\x16\\x48\\x70\\xb5\\xe6\\xf5\\x36\\xb2\\x2f\\xb8\\x9e\\x5e\\x8e\\x1d\\x87\\xcd\\xb3\\x40\\x44\\x97\\x7e\\xd2\\x83\\x6e\\x54\\x4d\\x7b\\xa4\\x93\\xdd\\x42\\xa2\\xb6\\x49\\xbc\\xf3\\x13\\xc5\\xb3\\x9a\\x1d\\xbf\\xff\\x3e\\x7f\\x2a\\x59\\xad\\xe8\\x7d\\x3e\\x7b\\x25\\x8f\\x58\\xe5\\x65\\xfd\\xba\\x3e\\x4d\\x92\\xb1\\xed\\xb8\\xbf\\xf5\\x4d\\xc4\\x9d\\x86\\xc5\\x3c\\x03\\x0c\\xf5\\x8b\\x97\\xef\\x06\\x6d\\x24\\x1b\\x54\\x05\\x30\\x21\\x39\\x05\\x73\\x9d\\x8e\\x1a\\xa7\\x2e\\xd9\\x0f\\x68\\x5d\\x39\\x58\\xea\\xa2\\x42\\xb0\\xcb\\xf7\\xa2\\xeb\\x97\\x6e\\xe9\\x6a\\x63\\xe6\\x67\\x86\\x46\\x41\\x69\\xa7\\x42\\xd4\\x57\\xe4\\xd9\\x11\\x7c\\x7d\\x66\\x42\\x84\\x45\\xa4\\x69\\x30\\xc2\\x8b\\xa7\\xa2\\x65\\x82\\x41\\x80\\x5e\\xbe\\x72\\xc7\\x8e\\x02\\x03\\x5d\\x26\\x3a\\x21\\x1e\\x59\\x0b\\x49\\x0c\\xdb\\x84\\x41\\x50\\x62\\xee\\xd1\\x4f\\x13\\xb8\\xa1\\xa9\\xe7\\x7c\\x8d\\x7b\\x75\\x51\\x5b\\x18\\xfb\\x85\\x38\\x6e\\x4a\\x7e\\x05\\x39\\x80\\xd3\\x0f\\x48\\x99\\xe8\\x38\\x63\\xbe\\xe8\\x75\\x58\\x58\\x87\\xc5\\xf4\\x8b\\x51\\x6c\\xcb\\x73\\x1c\\x4b\\xca\\xa3\\xdf\\x07\\xd0\\x47\\x95\\x81\\x40\\x96\\xc7\\x9d\\x7c\\x5f\\xdc\\x4d\\xab\\xf5\\xe2\\x6a\\x4c\\xa1\\x83\\x8e\\x0e\\x5d\\x87\\xdb\\x71\\x30\\x9b\\x81\\xea\\x7c\\xe4\\x61\\xe5\\xe4\\x4c\\x7a\\xb2\\xf1\\x05\\xad\\x75\\xc5\\x43\\xc1\\xe9\\x17\\x9c\\x36\\xa5\\xfa\\x55\\x5e\\xc9\\x22\\xff\\xed\\x1b\\x76\\xd2\\x58\\x01\\xdd\\x74\\xf8\\x0c\\xd0\\xa6\\xba\\x7b\\xc2\\x0d\\xb0\\xad\\x58\\x0b\\x7b\\xbb\\x9d\\xdc\\xfd\\x93\\xad\\x1c\\x5f\\x20\\xf3\\xe2\\x7c\\x3e\\xa3\\xa1\\xe7\\x1e\\xb7\\x4f\\xf5\\xf9\\x44\\xcd\\x3b\\x98\\xf6\\xd0\\x45\\x29\\x59\\x30\\x11\\xc4\\xae\\xce\\xf6\\xdc\\xaa\\x60\\xfb\\x18\\x36\\x8c\\xb1\\x2b\\x6e\\x39\\x1b\\x3f\\x5d\\xf7\\x65\\xcb\\xab\\xff\\x15\\x89\\x8c\\x84\\x79\\x6f\\xc2\\xb5\\x3f\\xa4\\x90\\x0d\\xad\\x03\\x4a\\x13\\xb0\\xce\\x14\\x45\\xad\\xda\\x4e\\xf7\\x19\\xbe\\x74\\x14\\x19\\xe2\\x31\\xe9\\x2f\\x1f\\x66\\x7a\\x32\\x84\\x2a\\x42\\xdb\\x79\\xbd\\x7a\\x01\\x4a\\x80\\x9c\\x81\\x59\\x6e\\x82\\x62\\x73\\xd1\\x6f\\xe5\\xd4\\x04\\x58\\x24\\x2a\\xe1\\x0e\\x12\\xe6\\x0b\\x34\\x89\\x53\\x0c\\x66\\x22\\xb5\\xbb\\x44\\x45\\x4f\\x29\\x61\\x6e\\x47\\xe9\\xa2\\x97\\xce\\x1c\\xa0\\x74\\x13\\x7f\\xd9\\xae\\x13\\xe3\\xee\\x8e\\xdb\\xcf\\x78\\xaf\\x26\\x54\\x59\\xdb\\x1a\\xf3\\x42\\xdc\\x0b\\x2f\\xc8\\x09\\xbd\\xa0\\x15\\xb5\\xa8\\x2b\\x2b\\x7c\\x54\\xef\\xe4\\xe5\\xfc\\x25\\x2e\\xb1\\x3d\\x66\\xe8\\x08\\x93\\x6f\\x19\\x10\\xf4\\xc4\\x8b\\xe0\\xef\\x7a\"},\n{{0x77,0x96,0x4d,0xad,0x52,0xb5,0x79,0xb8,0x96,0x67,0x53,0xda,0x31,0x86,0xd1,0xc5,0xe9,0xd3,0x3d,0x33,0xa4,0xdb,0x38,0xbc,0x0d,0x7a,0x1a,0x6c,0x11,0x2c,0x13,0xc2,},{0xfc,0x25,0x12,0x5e,0x78,0x29,0xf6,0x42,0x34,0x37,0x5e,0x52,0xae,0x9f,0x77,0xae,0x10,0x13,0xf9,0x9d,0xf5,0xf9,0x96,0x5a,0xd2,0xaa,0x16,0x58,0x95,0x96,0xd0,0x91,},{0x3d,0x1b,0x4b,0x4e,0x82,0x0d,0x25,0x0b,0xe2,0xa8,0xfa,0x97,0x1e,0x59,0x9e,0x1e,0x98,0x97,0x75,0x28,0xb2,0xf9,0x30,0x18,0x96,0x81,0xa9,0x3b,0x05,0xe1,0xa7,0x06,0xfc,0x80,0xef,0xfa,0x94,0xe9,0x29,0xbc,0x43,0x92,0x16,0x56,0x89,0x73,0x88,0x28,0x8a,0x9b,0x29,0x27,0x1f,0x37,0xa1,0x4b,0xe0,0x14,0xb8,0x73,0xc6,0x8f,0xc9,0x04,},\"\\xc3\\x39\\xe7\\x18\\xa7\\x57\\xf3\\xf3\\xbd\\x1b\\xab\\xdd\\x2e\\x00\\xaa\\xa5\\xcd\\x7f\\xc9\\x00\\x5e\\xe3\\x4b\\x6f\\xdc\\x09\\xd7\\x1f\\xbd\\x9c\\x92\\x89\\xab\\x1d\\xd1\\x4d\\xba\\x2c\\xad\\x58\\xcb\\x80\\x51\\x16\\x77\\x7b\\xd8\\x0c\\x85\\x96\\x64\\x33\\xad\\x46\\xf9\\xca\\x6e\\x54\\xf1\\x3d\\xd3\\xca\\x7e\\x56\\xe4\\x7f\\xea\\x41\\xe5\\x48\\x8a\\x45\\xad\\x53\\xbc\\x5d\\x65\\x74\\x27\\xe1\\xd7\\x93\\x8f\\x55\\x19\\xf1\\xb0\\x9f\\x5b\\xdd\\x98\\xaa\\xe5\\xac\\x96\\x43\\xef\\x78\\xeb\\xa4\\x93\\x49\\x25\\x33\\x9a\\x15\\x5d\\xc6\\x68\\x28\\x57\\x10\\x02\\x09\\x7a\\x11\\xa5\\xce\\xe7\\xb5\\x1a\\x44\\x1b\\x75\\x6b\\x0c\\xe6\\x5b\\x77\\x9a\\xfe\\x19\\xda\\x6a\\x18\\xef\\xc1\\x45\\xf6\\x09\\x0c\\xe7\\x70\\xde\\x9e\\x0e\\x91\\xf5\\x43\\x27\\x0a\\x09\\x85\\xea\\xb4\\x75\\x29\\x3c\\xcf\\xdd\\x31\\x41\\xc4\\x14\\x2e\\x47\\x22\\x23\\x3b\\x26\\x74\\x99\\x44\\x76\\x41\\x23\\x5d\\x72\\x8b\\xd7\\x5c\\xd1\\xad\\xc0\\xdb\\x14\\x2f\\x73\\x31\\xad\\xdd\\xf8\\xc5\\xee\\xa3\\xd5\\x76\\x40\\x5d\\x86\\x99\\x15\\xb5\\x60\\xf9\\x64\\xe3\\xe0\\x00\\x3c\\x91\\xf5\\xe9\\x6b\\xff\\xbe\\xee\\xc7\\x3e\\x51\\x02\\x4e\\xf5\\x2c\\x55\\xc6\\xdc\\xb5\\x4d\\x58\\x20\\x3e\\x62\\xf4\\xdd\\xb6\\xe1\\x37\\xeb\\x08\\xe1\\xbf\\x13\\x26\\x01\\x8a\\xfd\\x1a\\x86\\xca\\xb6\\xc8\\x41\\xe0\\x66\\x1c\\xe0\\xa1\\xa7\\xae\\x96\\x7f\\x24\\xc1\\xa7\\x7f\\xc7\\xca\\x50\\x5f\\x72\\xe5\\xf7\\x93\\x6e\\x39\\xc6\\xf4\\x83\\x7e\\x25\\x95\\x19\\x5a\\x69\\xcd\\x67\\x65\\x10\\xa7\\x16\\x1a\\x4d\\xc5\\xe3\\x18\\xf3\\xd4\\xf3\\xac\\x0a\\xf0\\x3f\\x8c\\x4a\\xe5\\xbc\\xe3\\x93\\x24\\xe9\\x73\\x8a\\xea\\x49\\xf0\\x02\\xd3\\x2d\\x16\\xde\\x23\\x17\\xe9\\x5a\\x9f\\x32\\xee\\x60\\x4e\\x13\\xdb\\x80\\x38\\xb2\\x64\\xcf\\xc1\\x7a\\xed\\x29\\xc9\\xde\\xbf\\x81\\x91\\xde\\x9e\\x0e\\xfc\\x95\\x1a\\xd6\\xd5\\x48\\x67\\x06\\x8c\\xf5\\x0a\\x26\\x9c\\x37\\xa2\\x41\\xf8\\x52\\x06\\x78\\x8d\\x23\\x14\\x31\\x77\\xf6\\x59\\xcc\\xa6\\x6c\\xfc\\xe0\\x3b\\xc0\\x50\\x22\\x55\\x33\\x7f\\x16\\xb3\\xda\\xd6\\xf7\\x91\\x32\\xab\\xf8\\x0f\\xf1\\x2b\\x6d\\x22\\x81\\xe6\\x37\\xeb\\x6c\\x71\\xf7\\x6e\\x26\\x33\\xa1\\x14\\x56\\x52\\x40\\xee\\xd0\\x0f\\xab\\xea\\x9e\\xd8\\xde\\x28\\xc8\\x32\\x21\\xf8\\xcb\\x48\\x5f\\x51\\x2d\\x90\\x08\\xbf\\xc7\\x4a\\x36\\x6d\\x4c\\x2b\\x4e\\xd1\\x72\\xd3\\x67\\xe0\\x24\\x7c\\xb6\\x50\\x98\\xc1\\x10\\x28\\x2e\\x83\\x1d\\xf8\\xe9\\xbd\\x4f\\xbd\\x5f\\x4d\\xd2\\xb7\\xf2\\x42\\x0c\\x23\\xb8\\x5a\\x63\\x7a\\xa2\\x26\\x2c\\x3c\\xb8\\x84\\x05\\xf7\\x07\\x30\\xc9\\xab\\x4c\\x9d\\x0f\\x22\\x7e\\xe4\\xfa\\x4e\\xf9\\x1e\\xfe\\x9a\\x59\\xb3\\xe6\\xd8\\x43\\xdb\\x87\\x9f\\x56\\x50\\x05\\x9e\\x99\\xf0\\xe4\\xa0\\x38\\x68\\x38\\xe6\\xf9\\x87\\x6f\\x67\\xd5\\x0f\\x89\\x83\\x2d\\xda\\x5f\\x30\\xa9\\xcb\\xfd\\x71\\x01\\x34\\xf9\\xb5\\xb5\\x46\\x27\\x49\\x6a\\xa3\\xa4\\x32\\x12\\xb0\\x7f\\x03\\xdb\\x11\\xd3\\xd4\\xf8\\x75\\xd4\\x1d\\x1f\\x4a\\xc4\\x59\\x69\\xdd\\xef\\x69\\xf8\\x1a\\x06\\xd2\\xb0\\xc6\\x46\\xc9\\xcd\\x93\\x1c\\xf2\\x50\\x2f\\xef\\x0d\\xd3\\x2a\\xbb\\xf0\\x95\\x1e\\xd3\\x03\\xf5\\x28\\x48\\x25\\x93\\x43\\x97\\xfc\\x22\\xe7\\x86\\x98\\xd3\\x5a\\xd8\\x1d\\x82\\x25\\x6b\\xf9\\xe1\\x54\\x00\\xa1\\x09\\x16\\x23\\xa9\\x82\\x6f\\x1e\\x57\\x79\\x23\\x67\\x41\\x7e\\xf0\\x25\\x86\\xd6\\x4e\\x65\\x0d\\xa9\\xac\\xe2\\xf1\\x8a\\xa0\\xa1\\x26\\xd8\\x67\\xca\\xc4\\xb5\\xd4\\xc9\\x1b\\xf5\\x20\\x9e\\x53\\x59\\x55\\x63\\x86\\xf8\\x27\\x08\\x3e\\xb5\\x3e\\x8b\\x47\\x09\\xff\\xfa\\xbe\\x92\\xc6\\x1d\\x78\\xff\\xb5\\xda\\xf1\\x02\\x74\\xe2\\x42\\xa7\\x00\\x91\\xf3\\xf9\\xb9\\xd5\\x96\\xc1\\x25\\x8c\\x9a\\x63\\x38\\x4f\\x4b\\x05\\xb0\\x28\\x66\\x12\\x22\\x18\\x1c\\x0f\\xca\\x96\\x5f\\x0a\\x2c\\xb5\\x6e\\x4b\\x55\\x6d\\x6f\\xbf\\xf7\\x1b\\x64\\xd9\\xb3\\x58\\xda\\x31\\xaa\\x37\\xc7\\x4f\\xf5\\x96\\x2f\\xb8\\xd9\\x6a\\x38\\x3d\\x04\\x97\\x24\\xc1\\x9e\\x24\\x9c\\x9e\\xdb\\xb2\\xa3\\x75\\xb2\\x3c\\xe3\\x10\\x4d\\xa0\\xec\\x58\\xd2\\x63\\x5b\\xa0\\x3b\\x55\\x42\\x3f\\xa2\\xdb\\x7e\\xb3\\x49\\xa4\\xfc\\x58\\xa1\\xef\\x54\\x0e\\xe9\\xa0\\x2c\\x2e\\x70\\x3c\\x68\\xd7\\xf8\\x47\\x5f\\x43\\x4d\\xdd\\x32\\x00\\xdb\\x1f\\x06\\x74\\x57\\x91\\xa3\\xac\\xc3\\x16\\x0d\\xba\\x50\\xa3\\x93\\x44\\x7f\\xfe\\xef\\x6d\\xc7\\xb9\\x8f\\xb0\\x66\\x84\\xcc\\x90\\xfd\\x85\\x20\\x3d\\x11\\x9d\\xcd\\x81\\x99\\xe4\\xd9\\xa8\\x9a\\xe3\\x46\\x7a\\xe4\\xbb\\x19\\xfb\\x71\\xcf\\x74\\x70\\x29\\xc2\\x40\\x96\\xf9\\xa5\\x0e\"},\n{{0x5c,0xaf,0xd8,0x17,0xa4,0x41,0x0c,0xcb,0x27,0x12,0x17,0x23,0xef,0x32,0x07,0xc1,0x73,0x1a,0x08,0x61,0x94,0x5b,0xe9,0x62,0x71,0x4c,0x0e,0xd9,0x50,0x38,0xa1,0x95,},{0x4e,0xa0,0x86,0xbe,0x43,0xec,0xe1,0xc3,0x2d,0x08,0x05,0x9b,0xba,0xdc,0x9e,0x9a,0x2b,0x2f,0x4f,0x3f,0xe3,0x70,0xf1,0xf5,0xcc,0xd7,0xdb,0xde,0xc0,0xaa,0xf3,0x03,},{0x28,0x85,0x15,0xfa,0x72,0x59,0xf1,0xeb,0x58,0x7f,0xe8,0xa2,0xc4,0x03,0x43,0x4c,0x46,0xf8,0xd7,0xe7,0x5b,0x6d,0x22,0xbb,0x38,0x96,0x56,0x6c,0x01,0x7d,0x09,0xb6,0x98,0xc2,0xc8,0x07,0x79,0x9c,0x2f,0x65,0xf9,0xcd,0xb4,0xeb,0x58,0x15,0x1c,0xcf,0xc4,0x8d,0x10,0x80,0x61,0xa6,0xb3,0x14,0x84,0x32,0xb2,0xbf,0xc1,0xcd,0xab,0x05,},\"\\x50\\xb2\\xf0\\x53\\x42\\x41\\x80\\x46\\xd1\\x6a\\x30\\xbe\\x4f\\xc6\\x2b\\x67\\xda\\xf6\\xc1\\x8d\\x2a\\x74\\x24\\x2b\\x7c\\xb5\\x5b\\xa9\\x0a\\xd2\\x0b\\x6c\\xaf\\xdd\\x60\\x15\\x57\\x37\\xc2\\x9d\\xe4\\x8a\\xa5\\xd7\\x99\\xfe\\x54\\x95\\xfe\\x59\\xdf\\x5a\\x9b\\x8c\\x0a\\x8e\\x54\\x18\\x90\\x47\\x63\\xfb\\xad\\x83\\xea\\x69\\x86\\x65\\x1b\\xac\\x31\\x11\\x79\\x39\\xce\\xf4\\xe0\\xc7\\x99\\x30\\xd5\\x2d\\xfd\\x7d\\xb4\\x3c\\x31\\xad\\xda\\xe3\\xcf\\x93\\xe3\\xef\\xc5\\xa9\\x16\\xef\\xd0\\xd6\\x5f\\xdc\\x30\\x90\\x9f\\xa3\\x56\\xcc\\xbc\\x52\\x47\\xd7\\xaa\\xa0\\x67\\x13\\x1b\\x6b\\x48\\x20\\xfd\\x02\\xf8\\xe3\\x95\\xf5\\xa9\\x70\\x4c\\x9b\\xdd\\x75\\x60\\xa6\\x11\\xd6\\x25\\x59\\xa8\\xdf\\xe1\\xd2\\x85\\x9c\\x52\\x48\\x6c\\xc1\\x1e\\xd3\\x33\\x19\\x92\\x48\\x8f\\x41\\x75\\x20\\xd9\\x20\\xdc\\x73\\xa3\\x2d\\x4f\\x08\\x11\\x00\\x82\\x50\\x0f\\x5a\\x96\\x2a\\x30\\x69\\x32\\xc6\\xa7\\x80\\x29\\x55\\xce\\xda\\xd7\\xab\\xf5\\x3b\\x0f\\x19\\xfe\\x47\\x94\\xa3\\x1d\\x6b\\x85\\x53\\x80\\x28\\x43\\x06\\xcc\\xff\\x71\\xa4\\x00\\x78\\x59\\xa2\\x32\\x8b\\xb1\\x90\\x24\\xc4\\x3e\\x10\\xd7\\x70\\x64\\xd8\\x66\\xd9\\x62\\x2d\\x14\\x2c\\x27\\x35\\x4b\\x84\\xac\\x3b\\x4f\\x82\\x32\\xf7\\xa2\\xf8\\xaf\\x64\\x09\\xd5\\xcc\\x75\\x7a\\x18\\xef\\x81\\x3d\\xfa\\xf4\\xb9\\xbc\\x04\\x0c\\xb0\\x06\\xd7\\x7f\\x14\\x36\\x41\\xaa\\x20\\x36\\xac\\x7b\\xc9\\x28\\xdc\\x96\\x58\\x5d\\x9e\\x36\\xc7\\xbc\\x9c\\x56\\x4d\\x25\\xf1\\xc2\\xcc\\x0b\\xea\\xb9\\xd5\\xf2\\x07\\xe8\\x4b\\x21\\x5f\\x1e\\x7a\\xa6\\xfc\\x32\\x82\\x37\\xb7\\x9c\\x39\\x92\\x3a\\x4e\\x09\\xc7\\xc7\\x3d\\xc6\\xb2\\x4b\\x14\\x16\\x29\\x4d\\x79\\x8a\\x4e\\xd5\\xf7\\x58\\x33\\x6d\\x91\\x5a\\x87\\x0a\\x7d\\x6b\\x75\\x92\\xb5\\xb8\\x8a\\xac\\xe2\\xdc\\x5f\\x26\\x7b\\xdb\\x49\\x11\\x41\\xcb\\xba\\xe2\\xa6\\x77\\x40\\x7c\\xc0\\x95\\x5f\\x96\\x19\\x62\\x59\\x93\\x04\\xba\\x0b\\x83\\x96\\x71\\xa5\\xc0\\x00\\xe9\\x20\\x10\\x8a\\x05\\x29\\x80\\x87\\xe4\\x97\\x70\\xae\\xee\\xaa\\xb3\\x63\\x27\\x24\\xcb\\x0f\\xc2\\x28\\x57\\x96\\xdc\\x41\\x48\\x14\\xfd\\xa7\\x8a\\x54\\xe6\\x7f\\x00\\xa0\\x2f\\x77\\xd3\\xcc\\xde\\x1e\\xd9\\xd7\\xb1\\xde\\xf1\\x4e\\xa1\\xf6\\x19\\x10\\xbd\\xf3\\x0a\\x11\\x96\\xfc\\x63\\x51\\xb6\\x22\\x54\\xd6\\x44\\x5e\\x6c\\x90\\x44\\x5b\\x16\\xef\\xaf\\xe2\\x89\\xa2\\x78\\x4b\\x92\\xe4\\x2b\\x78\\xa4\\xa9\\x00\\xc3\\x5f\\x55\\x63\\x0b\\xbb\\x77\\x62\\xff\\x9e\\xb7\\xfe\\xf7\\xd0\\x4c\\x90\\xb9\\x57\\x1c\\x4f\\xc7\\x60\\xa4\\x10\\xdb\\xfc\\x25\\x29\\x91\\xd0\\xba\\x27\\xf2\\xd4\\x14\\xfe\\x64\\xee\\xfd\\xff\\x4a\\xbc\\x18\\x81\\x7c\\x97\\x06\\xc6\\x31\\xbf\\xa2\\x03\\x82\\x1d\\x3b\\x92\\xcb\\x33\\x8b\\xaa\\xf5\\xd1\\x23\\x2b\\x46\\x26\\x47\\x95\\x4d\\x09\\x02\\x46\\x2f\\xb1\\x69\\x6e\\x99\\x1f\\x07\\xfa\\x9c\\x3d\\xbc\\xf2\\x87\\x29\\x60\\x83\\x1b\\x4d\\xed\\x92\\xa4\\x21\\xcf\\x21\\xb7\\x53\\x16\\x5f\\xf3\\x09\\xef\\xe2\\xef\\x54\\x38\\xc0\\x12\\x70\\xd1\\x0c\\x6a\\x03\\xd3\\x4f\\x71\\xeb\\xc2\\xda\\xb1\\xda\\x90\\xda\\xa3\\x57\\x98\\x4d\\x24\\x62\\xbc\\xb3\\x5e\\xe3\\xde\\x55\\xc3\\xa5\\x5f\\x8b\\x98\\xae\\xc2\\x11\\x4f\\x74\\xc8\\x43\\x41\\xa6\\x41\\x27\\x86\\x3c\\x12\\x0b\\x5e\\xca\\xd9\\xe3\\x29\\xa5\\x75\\x6a\\xe4\\xa2\\x55\\x5d\\x84\\x92\\xcd\\xa8\\x35\\x22\\x5a\\x8d\\xeb\\x3f\\x9c\\x15\\x58\\xf0\\xd4\\x25\\xbc\\x17\\x2f\\xf7\\x64\\x0c\\xc7\\x9d\\x97\\x80\\x04\\x16\\xfd\\x62\\x94\\xcc\\xcc\\x70\\xcd\\x1c\\xf5\\xb6\\xa8\\xe2\\xaa\\x07\\x28\\x9b\\xd5\\x22\\xbf\\x99\\xdc\\x96\\xc3\\x6b\\xfe\\xe8\\x0e\\x84\\x6f\\x5d\\xd7\\x46\\xdd\\x4c\\x50\\x03\\xe4\\xbf\\x7d\\x29\\xef\\xee\\xa7\\x50\\x8a\\x01\\x61\\x23\\x68\\x82\\xc9\\xa8\\x2a\\x56\\xaa\\x2c\\x25\\x74\\x66\\x96\\x52\\xc6\\x30\\x92\\x3a\\xb4\\x70\\xdd\\xb9\\x5d\\x45\\x6f\\x7b\\x8e\\x8f\\x07\\x59\\x9b\\xa0\\xd1\\xd3\\x8b\\xc7\\xf8\\x17\\x6e\\x3f\\xdf\\x02\\x09\\xbd\\x6f\\x75\\xd4\\xcc\\x11\\x80\\x3a\\xfb\\x18\\x56\\xcb\\xc0\\xe9\\x1c\\x73\\x73\\x0e\\x4f\\xb9\\x8f\\x3c\\x94\\x8a\\x87\\xd5\\xa7\\xed\\xcc\\x0a\\x6a\\x8a\\xc8\\x10\\xea\\x3e\\xaa\\x6e\\x06\\x3c\\xec\\x5f\\x55\\x66\\xcd\\x6d\\xed\\xc5\\x37\\xdb\\x6d\\x68\\x6b\\x80\\x21\\xf6\\xea\\x82\\x5a\\xd7\\x47\\x5e\\xc7\\xf1\\xc5\\xdb\\xde\\x45\\xd3\\xff\\x4b\\x5e\\xe5\\x1c\\x0d\\x04\\xf1\\xd7\\x40\\x18\\xeb\\x91\\xe5\\x04\\x0d\\x01\\xc8\\xb7\\x1a\\x4a\\xab\\xbd\\xe6\\x09\\x4d\\x4a\\xfe\\xcc\\xb1\\x8d\\xfc\\xde\\xd7\\x3e\\xa7\\x5e\\x3b\\x9f\\x8c\\xe1\\x67\\xdf\\x62\\x09\\xae\"},\n{{0xd5,0xca,0xc8,0x55,0x21,0xaf,0x78,0x1f,0x3d,0x5f,0x66,0x86,0x2a,0x04,0xb0,0x87,0xd0,0xcc,0xdc,0xac,0x92,0x6c,0xfe,0x9e,0x74,0x7b,0xe8,0xd5,0xc2,0x63,0x3f,0x78,},{0x10,0x0d,0xcc,0x53,0x03,0x9b,0xf0,0x5e,0xa0,0xa9,0xf5,0x88,0x82,0x12,0x69,0x3d,0x4f,0x9e,0x0e,0x75,0x25,0x95,0xbb,0xcd,0x02,0x06,0x10,0xe0,0xae,0x21,0x35,0x96,},{0x5d,0xc0,0x33,0x63,0x41,0x4e,0xea,0xc0,0x08,0x6f,0xb6,0xfe,0xba,0x44,0x21,0x7c,0xef,0x4c,0x52,0x0d,0xb6,0x19,0x26,0xdf,0x68,0x0c,0xa6,0x02,0xdc,0x11,0x00,0x3c,0xe6,0xaf,0xbf,0x3d,0x13,0xc8,0xc5,0xb0,0x52,0x73,0xd2,0x14,0x15,0xe6,0x7c,0x14,0xa2,0xee,0x5d,0x0b,0x1d,0x53,0x52,0x41,0x9a,0xb9,0xb3,0x9c,0x00,0x3a,0x51,0x0c,},\"\\xd5\\xe7\\xdd\\x59\\x49\\x09\\x37\\x5a\\x4b\\xe0\\x8e\\x74\\x82\\x5d\\x59\\x8d\\x53\\x5b\\xf4\\x6e\\xc0\\x84\\xde\\x52\\xb5\\x73\\x91\\xc1\\x27\\xef\\xf5\\x22\\x4a\\xb2\\xd1\\x94\\xdf\\xb2\\x66\\x33\\x47\\x8d\\x02\\xfb\\xda\\x74\\xd1\\xdc\\x58\\x21\\xf7\\x91\\xbf\\x96\\x2d\\x8d\\xad\\x9e\\x4e\\xf2\\x42\\x24\\x89\\x19\\x07\\xb0\\x18\\x9c\\xcc\\xc8\\xb1\\x33\\xd3\\xaa\\x20\\x78\\x92\\x6d\\xae\\xf2\\x89\\x8c\\x19\\xc2\\xe0\\xbf\\xe0\\x20\\x41\\xa9\\x04\\xb9\\xf0\\x4b\\xe7\\xcb\\x50\\xae\\xd0\\xd9\\x62\\xd1\\xad\\xd2\\x0b\\x40\\xa8\\x8a\\xb7\\xab\\xad\\x62\\x6c\\xf4\\xda\\x0a\\x78\\xf9\\xf5\\x36\\x85\\x50\\x1f\\xdf\\xa5\\x85\\x43\\xdd\\xf2\\xea\\x0e\\xea\\x69\\xe7\\xba\\x16\\x0f\\x8a\\x17\\x7a\\x25\\xfc\\x21\\xe8\\xa2\\x9c\\x66\\x16\\x33\\xe3\\x0e\\x52\\x3b\\x0e\\xc0\\x1b\\x2a\\xee\\xe2\\xd4\\x26\\xe4\\xae\\xad\\x45\\x74\\x88\\x10\\x8f\\xe5\\xf5\\x69\\xcf\\x6e\\x2f\\xdb\\x68\\xc2\\x8f\\x2b\\x30\\x52\\x82\\x35\\x77\\xcd\\x93\\x4e\\x7b\\x06\\x2c\\x8a\\x34\\x24\\xcd\\x43\\x67\\xfb\\x31\\x5b\\x74\\x4c\\xa3\\x52\\x55\\xd7\\xf1\\xaf\\x4e\\xdc\\x9b\\xc9\\xd8\\x83\\x71\\x23\\xd9\\x79\\x03\\xb4\\x3d\\xf3\\x67\\xc7\\xd4\\x18\\xc7\\x93\\x47\\xff\\xaf\\xe7\\xc7\\xb1\\x72\\x4b\\xba\\x34\\xed\\xe8\\xd3\\x56\\x8d\\xb5\\x05\\x98\\x3e\\xad\\x47\\xf6\\x2b\\x56\\xe3\\x61\\x8c\\x11\\xdb\\x8f\\xf0\\xbf\\x49\\x2a\\xc6\\x75\\x97\\xd2\\xf9\\x6a\\x6f\\x42\\x0f\\xf9\\x85\\x34\\x1b\\x78\\x6a\\xd6\\xce\\xae\\xdd\\x10\\x5d\\x0d\\x15\\x63\\xb2\\xd5\\x35\\x43\\xd7\\x8e\\x72\\x56\\x72\\x5d\\x20\\x4e\\x82\\xed\\x3a\\x2e\\x6a\\x6e\\x83\\xdf\\x61\\xfc\\x28\\x2a\\x62\\xca\\x06\\xe6\\x21\\x74\\xb5\\x5b\\xef\\x40\\xa0\\xbd\\xf8\\xd2\\x3d\\x1c\\x33\\x0c\\x71\\x44\\x14\\x85\\xee\\x85\\xe7\\x0c\\xed\\x12\\x1e\\xac\\x60\\x7f\\x58\\x06\\x78\\x16\\x3e\\x4b\\xd7\\x5c\\x67\\x09\\xff\\x3b\\x41\\xde\\x80\\x59\\x4b\\x9e\\x2f\\x2a\\xa2\\x78\\xfe\\xfc\\x21\\xd7\\x3e\\xe3\\xf7\\x28\\x54\\xb9\\x58\\xd9\\xa8\\xf6\\x3e\\x3d\\x70\\xf7\\xfe\\xad\\x8c\\x3d\\xca\\x8e\\x71\\xbf\\x4b\\x9c\\x2a\\x36\\xf2\\x12\\xb3\\x2e\\xb3\\x29\\x2e\\x63\\x55\\x80\\x38\\x65\\x59\\xee\\x1a\\x11\\xdf\\x15\\x29\\x3a\\x0c\\x21\\xcd\\x73\\x60\\x86\\x98\\x46\\xba\\x5b\\x7b\\xa8\\x5c\\x99\\x4f\\x5b\\x2f\\x9c\\xc5\\x0e\\x5e\\xea\\x8e\\x4b\\x36\\x91\\xd8\\x86\\x06\\x2a\\x18\\xcf\\xb1\\x82\\xf1\\xe8\\xb6\\x11\\xfe\\x1b\\xc2\\x63\\x15\\x9c\\xb8\\xa0\\x86\\x78\\x7c\\x81\\x1b\\xea\\x48\\x12\\x53\\x00\\x08\\xc7\\x0c\\xa0\\xc4\\x7e\\x64\\xeb\\x2f\\xba\\xd5\\xb0\\x27\\x27\\xa6\\x6f\\x2c\\xdd\\x6d\\xde\\x86\\xf5\\xd2\\xa9\\x64\\x5a\\x1e\\x9a\\xa6\\x6e\\xe0\\xe1\\x5b\\x97\\xf5\\xfd\\x22\\x95\\x96\\xee\\x02\\xe6\\x61\\xca\\xb9\\xa5\\x4e\\xee\\x1b\\x81\\xf9\\x8f\\xe2\\x56\\xed\\x6c\\x54\\xfe\\xaa\\xa0\\xba\\x04\\x7e\\xea\\x35\\x33\\x44\\xf6\\xe5\\xc6\\x2b\\xe1\\xe9\\xd5\\xc0\\x9a\\x2a\\x69\\x94\\x11\\x11\\x0c\\x56\\xd1\\x94\\x9e\\x90\\xc0\\x7b\\x19\\x38\\xba\\x95\\x55\\xac\\x1b\\xe8\\x51\\x1b\\x51\\x02\\x18\\xd7\\xcd\\xe7\\xe1\\xd7\\x4a\\x68\\xaf\\xb6\\x42\\xf8\\x17\\x15\\xfe\\x9e\\x6c\\x96\\xc5\\x03\\x81\\xae\\x5a\\x9d\\xf3\\x06\\x51\\x87\\x85\\xdc\\x4d\\xbc\\x3a\\x64\\xf6\\x0f\\x24\\x5c\\x56\\x4b\\x80\\x29\\x51\\x2f\\x38\\x1b\\x56\\xee\\x78\\x77\\x03\\x42\\x68\\x03\\xc8\\x0a\\xb1\\xc3\\x11\\xf4\\x77\\xb8\\x91\\x70\\x8b\\x59\\xfa\\x74\\x8f\\x32\\xde\\xbf\\x54\\xd2\\x41\\x37\\x71\\x97\\x8c\\x26\\x5c\\x9b\\x87\\x11\\x4a\\xdf\\x25\\xb8\\x33\\x7a\\xa9\\x3b\\x0e\\x63\\x2a\\x5b\\x6e\\xda\\x47\\x4b\\xec\\x16\\x32\\x81\\x59\\xfb\\xed\\x06\\x7b\\x00\\xb8\\x7a\\xdd\\x61\\x96\\x54\\x92\\xec\\xcc\\x6f\\xd3\\x46\\x1c\\x10\\x00\\xe4\\x03\\x7a\\xb1\\xe8\\xac\\x89\\xa8\\x52\\x4f\\x78\\xae\\x09\\xd3\\x08\\xea\\x6c\\x94\\xff\\x88\\x37\\x32\\xb7\\x12\\xee\\xc0\\xef\\x07\\x71\\x8d\\x33\\xc0\\x11\\xb9\\x39\\x8f\\x8c\\xfe\\xa7\\x33\\x07\\x5a\\xf3\\x31\\xfb\\x3f\\x97\\xcd\\xc1\\xe8\\xc9\\x9f\\x6a\\x10\\x72\\x5a\\x68\\xc5\\xc5\\x8f\\xdd\\x8b\\x0b\\xaa\\x50\\x22\\x7f\\x34\\xd7\\x3d\\x23\\x90\\x52\\x03\\x69\\x8e\\xaf\\xf6\\x26\\x65\\x4c\\xe8\\x3d\\x86\\x51\\x08\\x49\\x9b\\xe6\\x86\\x1f\\x61\\x41\\xbf\\xa6\\x21\\x9d\\x7a\\xb8\\xb5\\x84\\x51\\x91\\x99\\xf8\\x80\\xcf\\xa1\\xb2\\x6d\\x91\\x94\\xd3\\x01\\x71\\x1c\\x30\\xfb\\x44\\x6d\\x6e\\xa7\\x64\\xa4\\x31\\x0f\\x70\\xe4\\xb8\\x59\\xcf\\x95\\xfd\\x44\\xaa\\xf8\\xc1\\xe2\\x40\\xe8\\x0a\\x71\\x61\\x1d\\xbc\\xf5\\x2d\\xa5\\x8e\\xdc\\x32\\x03\\x11\\xde\\x38\\x8d\\x5d\\x9d\\x76\\x9e\\xb5\\x9b\\xe0\\x93\"},\n{{0x15,0x9a,0x9e,0xdd,0xea,0x5d,0xe6,0x34,0x03,0x98,0x7b,0x56,0x70,0xdb,0x6f,0xac,0x98,0xff,0xe5,0xec,0x3a,0x6c,0xf0,0x15,0x16,0xee,0x2c,0x70,0xce,0x3b,0x3b,0xe0,},{0xf6,0x1f,0x4a,0x04,0xa5,0xa1,0x2c,0xca,0xec,0xfa,0xf4,0x4c,0x1c,0x9c,0x18,0x88,0x47,0x5a,0x2c,0x89,0xfb,0x02,0xf2,0x6b,0xb8,0x1a,0xb5,0xf7,0x8f,0x4c,0xe3,0xa8,},{0x05,0x43,0x71,0x2c,0xef,0xa2,0x9a,0x22,0x0d,0x90,0xf8,0x1b,0xaa,0x4e,0x4c,0xf7,0x7a,0xc6,0x52,0x08,0xb2,0xd5,0xce,0x9f,0xd1,0x7c,0xe2,0x14,0xad,0x4a,0x93,0x7b,0x7f,0xc5,0xc7,0x86,0x41,0x3b,0x58,0x05,0x1c,0xca,0x3b,0xb8,0xb2,0xeb,0x55,0x65,0x7d,0x89,0x57,0x2b,0xc5,0x0e,0xa2,0xe5,0xec,0xdc,0x55,0x50,0x88,0x49,0x16,0x03,},\"\\xd1\\x95\\xe5\\x90\\x0d\\xd3\\x93\\x14\\x81\\xbc\\x01\\x2e\\x77\\xbf\\x06\\x0a\\xaf\\x31\\xcc\\xcb\\x0f\\xe1\\xa6\\xc4\\x0e\\xaf\\x28\\x6a\\x61\\x66\\xa1\\x66\\xb1\\xea\\x37\\x05\\x34\\x26\\x28\\x4b\\x92\\x0c\\x67\\xfe\\xe1\\xd4\\xb9\\xd8\\x6f\\xb8\\x61\\xcc\\x6e\\xdd\\x34\\xe1\\x0c\\x52\\x23\\x37\\x34\\xd9\\xcd\\x92\\xf5\\xdb\\xf4\\x33\\x51\\x2e\\xd2\\x55\\xac\\x6b\\x26\\xe5\\x6f\\x5c\\x66\\x4b\\xcc\\xb2\\x60\\x69\\x2c\\xf4\\x9d\\x08\\x36\\x3e\\xe9\\x4e\\x33\\x6a\\xcc\\x48\\x96\\x00\\xa6\\xaa\\x51\\x2a\\x04\\x0f\\x10\\xeb\\xf1\\x8f\\x7d\\x2c\\xbe\\xe9\\xca\\xd1\\x4c\\x4f\\xf8\\x73\\x77\\xa3\\x26\\x34\\x19\\xd8\\x29\\x75\\x29\\x40\\x1f\\x15\\x33\\x7a\\x4c\\x4d\\x23\\x25\\xed\\x7d\\xef\\x76\\x3a\\x0d\\x47\\x9c\\xaa\\x40\\x82\\x66\\x83\\x4d\\xa2\\x42\\xf3\\xa1\\x6b\\x79\\xa4\\x58\\x66\\xb9\\xd9\\xd7\\x1a\\x48\\x29\\x31\\x76\\x74\\xcf\\xf7\\xae\\x6c\\x8c\\x58\\x7b\\xa4\\xd4\\x98\\x0e\\x81\\x86\\x13\\xd3\\xad\\x82\\x50\\x7a\\x7a\\xb0\\x32\\xbb\\xf9\\x9c\\x5e\\x9b\\x64\\x03\\x71\\xbb\\x41\\xb9\\x1e\\x96\\x5d\\xc3\\x1e\\x8c\\x7d\\x4b\\x3b\\xaf\\xd4\\x95\\x70\\x52\\x7f\\xaa\\xa8\\x7a\\xbb\\xf6\\x41\\x6c\\x47\\xb1\\xb1\\xb0\\x9d\\x34\\x01\\x25\\x31\\x26\\xcb\\x24\\x6a\\xe4\\x5a\\xcf\\x5f\\x10\\x0b\\xb1\\xf9\\x2f\\x11\\xa5\\xc6\\xc9\\x37\\xe0\\x58\\x8d\\x8b\\x14\\x6b\\x3e\\x4d\\x3c\\x7e\\x5b\\xf5\\x74\\x84\\xe9\\x84\\xfe\\x3a\\xfc\\x47\\x72\\xf2\\x4e\\xbf\\x89\\x4c\\xdb\\x39\\x83\\x7f\\xbd\\x46\\x9a\\x92\\x1a\\x96\\xac\\x5a\\xf5\\xe0\\x70\\xf6\\xc9\\x62\\x4c\\x58\\x8e\\x9d\\x4f\\xe6\\xdd\\xfe\\xed\\x1f\\x8f\\xe2\\x0e\\xb9\\xc4\\x60\\xce\\x6e\\xe3\\x8b\\xf4\\x71\\xdd\\x56\\xdc\\xf2\\xe3\\xee\\x99\\x8b\\x8e\\x7f\\xdc\\xf6\\x12\\xe7\\x8a\\x2e\\x7c\\x71\\x73\\xc0\\x16\\x09\\x82\\xbe\\xde\\xcc\\x2c\\x62\\x1e\\x5f\\x66\\x11\\xb4\\xef\\x21\\x02\\xe3\\x2e\\x7c\\x29\\x80\\x3a\\x7e\\x25\\xfe\\xe1\\x51\\x24\\x31\\x58\\xa7\\x6e\\xe5\\xd8\\xc1\\xbb\\x2e\\x7d\\x8c\\x88\\x87\\x1b\\xa4\\x33\\xc5\\xe5\\x41\\xc2\\x60\\x26\\x93\\xd9\\x01\\x10\\xbe\\x79\\x5b\\x52\\x3a\\x8f\\xad\\xb6\\x05\\xd8\\xe3\\xd7\\xe4\\x93\\xfe\\x24\\x5d\\x9c\\xc5\\x32\\x0d\\x32\\xb8\\x5d\\x61\\x35\\xa4\\x4b\\x11\\x68\\x72\\x94\\x14\\xc2\\xca\\x21\\x56\\x0f\\xb4\\xfe\\xec\\xde\\xef\\x0c\\xf7\\xd8\\xe0\\x71\\x27\\x4e\\x88\\x56\\xc0\\x04\\x03\\x3e\\x80\\x01\\x3c\\x73\\xaf\\x71\\x77\\xc3\\x19\\x78\\x16\\xa5\\x03\\x2d\\x90\\x59\\xb1\\xb6\\xe4\\x15\\x2c\\x38\\x61\\x92\\xdd\\x54\\xb9\\x0f\\x9d\\x30\\x8b\\xe9\\x8e\\xd7\\xd0\\xca\\x9d\\x12\\xe8\\xaa\\xf6\\xf9\\xd8\\x69\\x38\\x6a\\xa9\\xdb\\xb0\\x15\\x93\\xd3\\x7e\\x72\\xf0\\x90\\x12\\x4d\\x34\\x55\\x29\\x8e\\x9b\\x4c\\x9e\\xc3\\xca\\xe7\\x3b\\xb8\\xee\\x41\\xeb\\x63\\xe3\\x8c\\x56\\x13\\x3e\\xfd\\xba\\xf4\\x49\\xb8\\x4e\\x1e\\x49\\x1e\\x49\\x6f\\x1c\\x70\\xa4\\x4d\\x06\\x99\\x86\\xba\\x88\\x18\\x42\\x20\\x69\\x06\\x1b\\xb6\\xeb\\xcb\\x7b\\x20\\x54\\xe6\\x3d\\xf3\\x81\\xba\\x03\\xc6\\xa7\\x67\\x4a\\xbd\\x61\\x05\\x0d\\x69\\x3d\\x41\\xbf\\xe3\\xca\\x50\\x46\\xc6\\x5f\\xfb\\x06\\xa0\\x74\\x98\\x09\\xe5\\x8d\\x4c\\x93\\xa9\\xff\\x69\\xed\\x30\\x95\\x0b\\xde\\x1f\\x99\\x21\\x6f\\xff\\x29\\x9f\\x22\\xf1\\x6b\\x07\\xc2\\x54\\xc2\\x65\\xae\\x0b\\x12\\xe3\\x13\\x16\\x3c\\xcd\\xf5\\x03\\x6d\\x49\\x05\\x5f\\x9a\\x96\\x67\\xb0\\xb7\\x12\\x92\\xbc\\x3b\\x62\\x60\\xcb\\x87\\x56\\x8f\\xd2\\x67\\x17\\x0b\\xc9\\x40\\xc3\\x33\\x29\\xd7\\x29\\xc9\\xe3\\x2d\\x0f\\x91\\x80\\xb1\\x34\\xbf\\xf8\\xae\\x93\\xb1\\xbf\\xeb\\xfa\\x38\\x42\\xfe\\xf2\\x0b\\xc0\\x4a\\x29\\x7b\\x00\\xa8\\x4a\\x0f\\x42\\x8d\\x5f\\x42\\xfa\\xb8\\x61\\x42\\x99\\x6d\\x4a\\xd9\\xef\\xab\\xc4\\x98\\x52\\xf8\\x81\\x2f\\x3b\\xfb\\x5e\\x57\\x53\\x9e\\x21\\x86\\xeb\\x8a\\xe2\\x29\\x58\\x0b\\xc6\\x04\\x48\\xac\\xde\\xf5\\x72\\x3c\\x88\\x15\\x88\\xb5\\x37\\x89\\xf0\\x5b\\x91\\xe0\\x22\\x89\\x22\\x32\\x52\\xd7\\x53\\xf7\\x98\\x13\\x77\\x9a\\xce\\x70\\x5e\\x04\\xae\\xd1\\x52\\x65\\xd3\\xbd\\xf2\\xa2\\xe4\\xb1\\x56\\x54\\x77\\x0a\\x27\\x58\\x54\\xe6\\x4c\\xf4\\x43\\x90\\x60\\x7a\\x45\\xd7\\xbb\\xa9\\xaf\\x3e\\x1a\\x2e\\x28\\x30\\x67\\xfc\\xd6\\xe6\\x33\\xaa\\x2d\\x24\\x03\\xbd\\x81\\xf7\\xc7\\x92\\x76\\x55\\x10\\xb5\\x98\\x41\\x2f\\x6b\\xda\\x07\\xb2\\xa9\\x45\\xb9\\xf6\\xd4\\x6a\\xb2\\xf7\\xc3\\x20\\x07\\x5b\\xc6\\xb6\\x0a\\x80\\xda\\xa4\\x4a\\xf3\\x91\\xf4\\xcd\\x56\\x21\\x31\\xbb\\xdd\\x40\\x7d\\x66\\xf8\\xdb\\x12\\x59\\xbd\\x76\\xfa\\x7e\\x4d\\x52\\x64\\xe1\\x45\\x54\\x6c\\x94\\x2d\\xfe\\x90\\x07\"},\n{{0xed,0xa0,0xfe,0xac,0x0f,0x2a,0xfe,0x01,0x74,0x49,0x15,0x52,0x48,0x7f,0x39,0x62,0x17,0x13,0x32,0xb8,0x22,0xdc,0x3d,0xa4,0x26,0xf9,0xa5,0xf6,0x2b,0xef,0x7b,0x8d,},{0xef,0xf2,0x7c,0xb5,0x1f,0x4d,0x39,0xc2,0x42,0xf3,0x23,0x01,0x9a,0x12,0x34,0x81,0x8e,0xf2,0xe4,0xcd,0x1b,0xda,0xbc,0x0f,0x2d,0x8d,0x21,0x34,0x58,0xdc,0x47,0x1a,},{0x6c,0xbc,0x7e,0x6f,0x5e,0x12,0x14,0x5b,0x01,0x68,0x7a,0xd9,0xca,0x6b,0xf6,0xe4,0x7f,0x94,0x17,0xc2,0xce,0xfa,0xd3,0xfb,0xd6,0x8f,0xd6,0x5d,0xd7,0x4f,0xaa,0x97,0x50,0xcb,0xa9,0x92,0xde,0x4c,0xeb,0xcf,0xcd,0x35,0x80,0x8c,0xbb,0x3f,0xf1,0x2c,0x8d,0x93,0x07,0x99,0xaf,0x36,0xef,0xe7,0x97,0x6b,0xf2,0xfe,0xa7,0x9e,0x3e,0x0e,},\"\\x90\\x11\\x19\\xda\\x4e\\xd1\\x81\\xaa\\x9e\\x11\\x17\\x0b\\x20\\x62\\x6e\\x00\\xab\\xf0\\xb5\\x48\\x24\\x5e\\x3d\\xeb\\xf9\\x4b\\xf5\\xed\\x50\\xae\\xef\\xe9\\x42\\xb4\\x02\\xcc\\x99\\x48\\x94\\x78\\x52\\xde\\xdf\\x2b\\x53\\x04\\x01\\x76\\x65\\x74\\x9c\\xd4\\x7c\\x21\\xfc\\x65\\x2e\\xe9\\x95\\x67\\x9f\\xf9\\x31\\xe3\\x0e\\x94\\xaf\\x98\\xb4\\xa9\\x8f\\xd4\\x4e\\x84\\x9e\\x98\\x47\\x0f\\xe0\\xa7\\x6c\\xe8\\x0c\\x61\\xf8\\x3f\\xb4\\xe8\\x5b\\xa5\\x23\\xee\\x3f\\xd2\\x5d\\xb0\\x00\\x05\\x3b\\x49\\xd0\\x93\\x0e\\x3b\\x07\\x9e\\x86\\x6e\\x15\\x3f\\x7d\\x86\\x36\\x7f\\x23\\xa4\\xc4\\xab\\xc6\\x3b\\x30\\x75\\x46\\x1e\\x90\\xe4\\xfd\\x89\\x6d\\xa0\\x49\\x2e\\x27\\xd7\\x14\\x94\\x1e\\x96\\x7f\\x52\\xc9\\x3f\\xfa\\xec\\x44\\x80\\x3f\\x57\\x87\\x7d\\x86\\x6e\\xb5\\xf8\\xc5\\x28\\x17\\x85\\xaa\\x48\\x26\\x79\\x2e\\x39\\x64\\xc6\\x65\\x90\\x82\\x1e\\xea\\x66\\x75\\x20\\x74\\x26\\x40\\x18\\xa5\\x71\\xf5\\xb0\\x13\\xb3\\x8e\\x15\\x2c\\x95\\xc0\\x24\\x8a\\xe6\\x03\\x68\\x22\\xa6\\x7a\\xfc\\x9e\\x02\\x69\\x45\\x73\\x15\\x2b\\x86\\x4c\\x56\\xc2\\xf7\\x30\\xa0\\x82\\x10\\xf8\\x5e\\xc4\\x6f\\x98\\x4a\\x64\\x3d\\x51\\x6a\\x15\\xfc\\xfa\\xa8\\x48\\x40\\xf5\\x12\\x04\\x7d\\x11\\x0e\\x07\\x18\\xd2\\x93\\x95\\x5f\\x01\\x58\\x25\\x7f\\xba\\x0d\\x78\\xeb\\x7d\\xf2\\xf0\\xb7\\x7e\\x6e\\xeb\\x76\\xdb\\x5e\\x71\\x70\\x73\\x10\\xe8\\x27\\x36\\x1c\\xd4\\xe1\\x19\\x74\\x0e\\x63\\x92\\x2d\\xb4\\x2c\\x2c\\xeb\\x5e\\xe1\\x75\\xd5\\x0d\\xec\\xc7\\xb7\\x49\\xfd\\x23\\x25\\xbc\\xe1\\xe6\\xa8\\xf7\\x10\\xff\\xcc\\x1e\\x1c\\x9b\\x33\\xc3\\x80\\xe5\\x2a\\x64\\xda\\xa9\\x58\\x5f\\xab\\xe4\\x06\\xd9\\xcf\\x24\\x48\\x8f\\xe2\\x6f\\x3a\\x49\\x5f\\xb0\\xab\\x50\\xe1\\xe2\\xba\\xd8\\x23\\x81\\xaa\\x22\\x43\\x10\\x99\\xcc\\x8a\\x56\\x98\\x13\\xd7\\x9c\\x9d\\x78\\x56\\x9c\\x0d\\x95\\xda\\x9a\\xad\\x2b\\xfb\\x57\\x75\\x8d\\x52\\xa3\\x75\\x27\\x52\\xe0\\x23\\xd6\\x51\\xc9\\xcb\\x66\\xa4\\x12\\xa5\\xc8\\x0f\\x6b\\xa5\\x47\\x93\\xf7\\xec\\x87\\xb4\\xc5\\x98\\xfe\\xd2\\xce\\x24\\xab\\xd7\\x60\\x87\\x08\\x89\\x5c\\x46\\x72\\x73\\x59\\xff\\xec\\xa6\\xd6\\xc6\\x2e\\x10\\xa6\\x78\\xca\\xa7\\x18\\xb4\\xcd\\x26\\x32\\x92\\xcf\\xef\\x53\\x5b\\x9f\\xbe\\x27\\x56\\xb7\\x39\\x6d\\x69\\x7b\\x31\\x46\\xc5\\x51\\xe6\\xaa\\xc1\\xf5\\xf1\\xc2\\x4b\\xe9\\xb6\\x7a\\x1e\\x2a\\x2a\\xff\\x74\\x53\\x01\\xba\\x6a\\x21\\x22\\x17\\xc5\\x3d\\x68\\x16\\x81\\xbb\\xb4\\x01\\xbf\\x4a\\x43\\x65\\x6f\\x5d\\x15\\xcd\\xe9\\x69\\xc1\\x78\\x00\\x99\\xa3\\x32\\x37\\xeb\\x19\\xa3\\xb8\\x58\\x5d\\x6b\\x5d\\xea\\x2f\\xb5\\x77\\x84\\x5f\\x25\\xee\\x2a\\x82\\xcc\\xf4\\xb2\\x85\\x02\\xf9\\x0f\\xe8\\x0b\\x8c\\xdc\\xdf\\x2c\\xcf\\x93\\xc4\\x34\\xc0\\xe6\\xaa\\x5d\\x87\\x52\\xa4\\x43\\x43\\xc2\\xb1\\x8d\\x20\\xfe\\x40\\x04\\xc4\\x70\\x38\\x65\\x93\\x56\\xf8\\x7a\\xbe\\xd5\\x44\\x50\\x34\\xd8\\xe2\\xd3\\xd1\\x47\\x68\\xf5\\xef\\x31\\x2c\\xf1\\x02\\xa9\\x88\\x46\\x83\\xbc\\xc0\\xcd\\x8a\\x71\\xe3\\xec\\x36\\xfb\\xb6\\x33\\x4a\\x1b\\xba\\xed\\x5d\\x2b\\xf1\\x04\\x16\\xd8\\x2b\\xd6\\x53\\x04\\x75\\x38\\x0a\\xb6\\xe2\\x57\\x7b\\xbc\\x69\\xce\\xbd\\xa7\\x5f\\xaf\\x02\\xad\\x82\\x7b\\x54\\x51\\x82\\x13\\x20\\x6f\\xd4\\xcd\\x66\\xf2\\x52\\xb2\\x34\\xac\\xa9\\xee\\xde\\x7e\\x3e\\xeb\\x81\\x5d\\xdc\\xd8\\xd5\\x19\\xc5\\xd7\\xf5\\xd9\\xd1\\xfb\\x9c\\xa0\\xfa\\x44\\x67\\x99\\x00\\x95\\xfa\\x46\\x22\\x0c\\x20\\xa2\\x07\\x1d\\xfc\\xaa\\xd5\\xf0\\x24\\xda\\xe3\\x41\\x6f\\x7c\\x49\\x2d\\x75\\x74\\x88\\xc4\\x9a\\x2e\\x4d\\xf4\\x83\\xbc\\x9b\\x80\\x09\\x8e\\x0d\\x5d\\x68\\x3f\\xac\\xb8\\xc9\\x60\\x82\\x9d\\xff\\x09\\xb3\\x03\\x36\\x9d\\x46\\xcb\\x57\\x33\\x1f\\xf2\\x17\\x91\\xee\\x25\\xd6\\xbe\\x7d\\xec\\x7e\\xba\\xf1\\xb3\\x24\\x79\\xa7\\xf5\\x14\\xdc\\x64\\x71\\x05\\xc9\\x44\\xc3\\x6f\\x7d\\xbf\\x0a\\x5b\\x58\\x91\\x28\\xdb\\xaa\\xa4\\x21\\x71\\xd6\\x42\\xf2\\x5a\\x98\\x1c\\xe1\\xf8\\x37\\x9f\\x91\\x69\\x0b\\x36\\xaf\\x77\\x46\\x48\\xd5\\x62\\x4c\\x08\\xdb\\xd0\\xa9\\x0f\\x70\\x87\\x16\\xdf\\xab\\x20\\x24\\xda\\xe8\\x65\\xb9\\xc4\\x9a\\xb2\\x74\\x73\\x82\\x6c\\xd4\\xa0\\x10\\xbf\\xdb\\x52\\x01\\x1d\\x8c\\x7c\\xb3\\xf4\\x21\\xca\\x8c\\xa3\\xcd\\x04\\x86\\x88\\x91\\x88\\xe6\\x7d\\xf0\\x0f\\xb8\\xc2\\xa6\\x43\\xe7\\xad\\xb2\\xf8\\x27\\x9f\\x76\\x3e\\x5b\\x9a\\x81\\xb6\\xdf\\xc3\\xf7\\x21\\xfc\\x5f\\x68\\x49\\xf6\\x67\\x36\\x78\\x8c\\xc5\\x57\\xc4\\xeb\\xc6\\xfc\\x68\\xd6\\xf6\\xac\\x77\\xbe\\xdd\\xa8\\xac\\xb3\\x62\\x24\\x3b\\xda\\x74\\xe7\\xb2\"},\n{{0xec,0x05,0x9f,0xc6,0xbe,0x98,0x3c,0x27,0xec,0xa9,0x3d,0xdc,0xdc,0xb5,0x3a,0xf7,0x28,0x62,0x55,0xda,0x91,0xe2,0xa5,0x6a,0x68,0x4f,0x64,0x1e,0xc2,0xd0,0x9d,0x6e,},{0xff,0xc6,0xcb,0x75,0x1c,0x70,0x07,0x1b,0x65,0xec,0x2a,0xc6,0xb4,0x5f,0xd1,0xd5,0x5f,0xe8,0x36,0x96,0x5f,0x80,0xb3,0xe7,0xc7,0x84,0xfc,0x70,0x4a,0xcb,0xdf,0x69,},{0xa7,0xb8,0x8e,0x5a,0xbf,0x13,0x28,0x24,0xbd,0xde,0x77,0xc5,0xf8,0xdf,0x94,0xab,0x26,0x48,0x1f,0x6b,0xee,0x66,0x0e,0xa1,0x62,0x24,0x70,0x82,0xa2,0x50,0xd3,0x90,0xc7,0x1d,0x32,0x0a,0xd0,0x60,0xd8,0xef,0x34,0x1f,0xb6,0x9a,0x48,0x32,0x94,0xf0,0xd6,0xde,0x72,0x6f,0x0c,0x86,0x2f,0xa3,0x7e,0xa4,0xbc,0x6d,0xab,0x52,0x15,0x09,},\"\\xd1\\xac\\x63\\x25\\xa4\\xe6\\x90\\xfa\\x79\\x53\\x68\\x83\\xd5\\xc2\\x0e\\xac\\xb7\\xd9\\x64\\xc0\\x17\\x8f\\x74\\x2c\\x2b\\x23\\x72\\x7d\\xeb\\x62\\x64\\x5a\\xf7\\xc8\\x19\\x22\\xa0\\xe7\\x2e\\x5e\\x30\\xb5\\x83\\x9a\\x2e\\xd5\\xe5\\x67\\xec\\x31\\xce\\x22\\x41\\x15\\xb8\\x2d\\x2b\\xf2\\x51\\xb7\\x39\\x3f\\x01\\xb0\\xd0\\x3a\\x60\\x2b\\xc1\\x20\\xae\\x62\\xaf\\x7f\\xbc\\x37\\x9d\\xfc\\xf9\\x5b\\xbb\\xba\\x98\\x4a\\xab\\xa3\\x4f\\xe2\\x12\\xac\\x99\\x00\\x33\\x28\\xb8\\x32\\xc3\\x53\\x2d\\x42\\xee\\xe1\\xe1\\x87\\x4d\\xc2\\x2a\\xd6\\x7d\\xb6\\xc9\\x1d\\xbb\\xfb\\x2b\\x45\\x78\\x5d\\xbc\\xd3\\x99\\x17\\xd3\\x6f\\xb4\\x8c\\x1b\\x5d\\x6f\\x38\\xbd\\xda\\x5d\\x28\\xfb\\xba\\x64\\x17\\x55\\x75\\xaf\\xea\\x46\\xc8\\xed\\x67\\x57\\xff\\x30\\x16\\x4e\\x0d\\xf2\\xe7\\x21\\x76\\xe8\\xb6\\xc9\\xdb\\x5b\\x5e\\xf3\\x90\\xb7\\x2f\\x2d\\x4d\\x94\\xe3\\xb6\\x6f\\x0d\\x44\\xa7\\xe0\\xf0\\x6e\\x89\\xde\\xbc\\xdf\\x13\\x63\\xc0\\xe7\\x5d\\x50\\xdb\\x5b\\xb7\\x01\\x90\\xd1\\x9f\\x66\\xa3\\x9c\\x6f\\x7d\\xba\\x70\\xdf\\xcd\\x4a\\x9f\\xed\\x02\\xc2\\xf1\\xd0\\x67\\xe7\\xc7\\x88\\xc5\\x8f\\xdb\\x3e\\x17\\xa2\\x37\\x7c\\xe4\\x86\\xec\\x65\\x82\\xf3\\xba\\x99\\x7b\\xb5\\xf7\\x0c\\xd6\\x21\\x00\\x29\\x56\\xf5\\x13\\x1a\\xa3\\xa1\\x61\\x7c\\x0c\\xeb\\xcc\\xd9\\x39\\x1d\\xe1\\x30\\x7c\\x85\\x97\\x0a\\x8b\\xc1\\x55\\xf5\\x19\\x87\\x26\\x68\\x45\\x0c\\x91\\x48\\x86\\x89\\xf5\\x3c\\x2c\\x1a\\x7e\\xd5\\x3f\\x38\\x8c\\xb1\\x3a\\x2c\\x38\\x96\\xfe\\x5b\\x7d\\x3a\\x0d\\xc1\\x68\\x3f\\x27\\x66\\x4c\\x8b\\xea\\xea\\x68\\x0c\\x8c\\xc5\\x4a\\x90\\xe4\\xc6\\xf9\\x9f\\xbf\\x05\\xf2\\xc2\\x2d\\xf6\\x0d\\xe9\\xae\\xc8\\x0c\\x79\\xb7\\xd6\\x62\\x07\\x05\\x06\\x67\\xb4\\x52\\xd7\\x85\\x7f\\x9a\\x8c\\xa7\\x23\\x28\\x0d\\xac\\x79\\x92\\xe2\\x07\\x92\\x67\\xec\\x3a\\xd9\\x11\\x40\\x46\\x42\\xc4\\xe3\\x26\\xbf\\xb9\\x6b\\x43\\xc8\\x94\\x34\\xba\\x4b\\xc7\\x8c\\x25\\x2f\\x4d\\x4c\\xa8\\xd1\\x3a\\x88\\x74\\xc6\\xfc\\x82\\x52\\xea\\x0b\\x56\\xc6\\xbc\\x78\\x68\\x47\\xd4\\x31\\x83\\x06\\xe1\\xc6\\x52\\xc4\\x52\\x58\\x5e\\xef\\xd0\\xbd\\x9d\\xd3\\xc1\\x48\\xa7\\x3b\\xa8\\x6e\\xed\\xea\\x94\\x5f\\x01\\x67\\x13\\xed\\x7d\\xf0\\x85\\xd0\\x06\\x66\\x89\\xe7\\x92\\xda\\xcb\\x2b\\xfc\\x1e\\xb5\\xc8\\x24\\x37\\x2a\\x26\\xc5\\xe9\\x44\\xaa\\x74\\x44\\xac\\x97\\x73\\xd4\\xa1\\x92\\x1e\\x49\\xbd\\xd4\\xf8\\xf6\\xd7\\x88\\xc2\\x63\\xfe\\xe0\\x4c\\x7b\\x44\\x4c\\x53\\x05\\xed\\xb6\\x33\\xe1\\xff\\xe0\\xba\\x4e\\xa8\\xda\\x01\\x1a\\x62\\xf2\\xbb\\xfe\\xf4\\xb8\\x95\\xad\\x3f\\x22\\x4c\\x3b\\xa3\\xbf\\xf0\\xc9\\x5d\\x75\\x75\\x0c\\x9b\\xcc\\x66\\xff\\x8a\\x20\\xb6\\xc2\\x4b\\xde\\x75\\x81\\xa7\\xec\\x38\\x66\\xf8\\x71\\x6f\\x78\\x1f\\x46\\xdc\\xad\\x45\\xa9\\xeb\\xcb\\x6e\\xd4\\x69\\x53\\x36\\x83\\x97\\x01\\x17\\x35\\xd4\\xb5\\x2d\\x00\\xe8\\xdb\\x39\\x79\\x95\\xdb\\xdb\\x3d\\x4f\\x42\\x54\\x68\\x7f\\x04\\x68\\x8a\\x26\\x8c\\x30\\x5b\\x2b\\x1f\\x62\\x2c\\xf5\\x1b\\x17\\x47\\x75\\xba\\xd7\\xf6\\x67\\x4a\\xdc\\x2e\\x58\\xe0\\x5c\\xce\\x86\\x5f\\x12\\xd7\\x56\\x9c\\x8e\\x9b\\x35\\xbc\\xdf\\x3c\\xcc\\xe6\\x33\\x0d\\x08\\xce\\x53\\x40\\xa7\\xc6\\x30\\xf2\\x7a\\x6c\\x80\\x86\\xb5\\x14\\x6b\\x29\\x2f\\xcb\\xf5\\x0f\\xf6\\xaa\\xae\\xf8\\x84\\x8a\\x70\\x7b\\x25\\x43\\xc6\\x18\\xd1\\x7b\\xd9\\x76\\xc2\\x40\\xbc\\x79\\xd3\\x3e\\x00\\x4e\\x49\\x53\\x48\\x29\\x15\\xe7\\xe6\\xef\\x94\\x96\\x4b\\xde\\xa4\\xe0\\x2d\\xd7\\xc2\\xf4\\x75\\x23\\x5f\\x2b\\x99\\xe4\\x32\\x29\\xc9\\xac\\x3a\\xba\\x0d\\xb5\\x9a\\xc2\\xda\\x03\\xa9\\xee\\x4f\\x37\\xdb\\xf2\\x47\\xa3\\x3e\\x6d\\xfe\\x5b\\xe7\\xc7\\xf8\\x25\\x84\\xf0\\x4a\\x46\\xd4\\x9f\\x66\\x21\\xda\\x31\\xb9\\x1a\\xc3\\xda\\xa4\\xd6\\x8d\\x48\\xa5\\x66\\x59\\xb4\\x48\\xc0\\xed\\x36\\x5c\\xb4\\xaa\\x0c\\xfd\\x90\\x88\\x53\\xdf\\x5b\\xbf\\xa8\\x8e\\x60\\xe1\\x0a\\x5a\\x00\\x2c\\x32\\xab\\x33\\x33\\xf2\\xc3\\x9b\\xbf\\x3e\\xe0\\x1a\\x4a\\xa6\\x0d\\x2d\\x01\\x42\\x3e\\x60\\x97\\xdc\\x54\\x30\\x5f\\x81\\xa2\\xd9\\x3e\\x2f\\x6b\\x4e\\x8b\\x35\\x19\\x71\\xcb\\xf2\\x45\\x7d\\xc7\\x6e\\x1f\\xb8\\x92\\x93\\x38\\x47\\x98\\xef\\x28\\x23\\x4e\\x9b\\x1a\\x47\\xde\\xdc\\x23\\x36\\xf8\\x6b\\x8e\\x13\\xc4\\xae\\xf7\\x90\\xf5\\xa1\\x12\\x39\\xc7\\x47\\xd9\\xd8\\x65\\xc9\\xa1\\x5a\\xde\\xb0\\x71\\x07\\x02\\x67\\xe5\\x34\\x62\\x56\\x64\\x8a\\xdc\\x0f\\xa4\\xdb\\xdf\\xd7\\x87\\xca\\x14\\x65\\xfc\\x24\\x0a\\x32\\x4c\\x3c\\xaf\\x29\\x31\\xda\\x41\\x49\\x9e\\x27\\x5f\\xd4\\xb3\\x5f\\x6d\\x08\\xdb\"},\n{{0xf1,0x6a,0xbd,0xbc,0xc0,0xbc,0xc6,0x1a,0x1a,0xee,0x3a,0xbd,0x87,0x67,0xab,0x52,0xe5,0xf7,0x99,0x99,0xbb,0x77,0xa3,0x97,0x6c,0xbc,0x82,0x67,0x0d,0xfd,0x2f,0x73,},{0x10,0xf4,0x51,0x71,0x9d,0xb0,0xfd,0x21,0x37,0x6e,0x22,0x8a,0x41,0xc3,0x03,0x5c,0x8c,0x2b,0xc4,0x2e,0x5a,0xaa,0x92,0x6f,0xe6,0x08,0x87,0x8d,0xbb,0x0d,0xc7,0xab,},{0x33,0xd8,0x05,0x29,0x08,0x69,0xb8,0xe0,0x4f,0xf0,0x89,0xfa,0xa2,0xd1,0xfa,0xb8,0x37,0x43,0xba,0xda,0x68,0xad,0xe5,0xb3,0x8a,0xe5,0xf0,0xcc,0x58,0xc3,0x37,0x4e,0xba,0x43,0x94,0x3c,0x1f,0x51,0x10,0x67,0x8e,0xb3,0x9b,0x46,0x58,0x61,0x18,0x22,0xa2,0x6d,0x35,0xff,0xe1,0x9e,0x9c,0xfc,0xb9,0xba,0x95,0x89,0xe4,0xec,0x31,0x05,},\"\\xbf\\xac\\xd7\\xdd\\x4e\\xea\\x46\\x7d\\xcc\\xe4\\x04\\xf4\\xa3\\x52\\x0a\\x45\\xb9\\x4e\\xba\\xa6\\x22\\x19\\x7d\\x02\\xd6\\x15\\x29\\xd2\\xb3\\xbf\\x27\\x3c\\x4e\\xe1\\xfb\\x95\\xa1\\x80\\xc8\\xf8\\x7d\\xe1\\x90\\xa2\\xe5\\xea\\x70\\xb8\\x4a\\xe1\\xeb\\x6f\\xd4\\x44\\x7d\\x8a\\x3a\\x8d\\xed\\x10\\xf6\\xed\\xe2\\x4f\\x0e\\xb9\\x2b\\xd3\\x0b\\xc6\\x5d\\x48\\x71\\xe8\\xf5\\xda\\x08\\xcb\\xe8\\xcd\\x3c\\x0a\\xc6\\x4f\\xd5\\xa5\\x7a\\x6b\\x06\\x4a\\x89\\xd5\\x15\\x9b\\x42\\xf8\\xb3\\xe5\\xa1\\x83\\x8c\\x9c\\xb1\\x9d\\x88\\x10\\x6c\\x07\\x73\\xa2\\x75\\xcd\\x2a\\x1d\\x60\\x99\\x30\\xbf\\x6b\\x30\\xae\\xca\\x62\\xb9\\x7e\\x31\\x9b\\xbf\\xa9\\x34\\xf4\\xd0\\xa1\\xe6\\xac\\x80\\xba\\xeb\\xcb\\xa2\\xd8\\xea\\x4b\\xed\\x9c\\xa8\\x56\\x2b\\x4a\\xcb\\x56\\x97\\x9b\\xf8\\x85\\x32\\x4a\\xc4\\x0a\\xb4\\xa5\\x0b\\xfb\\x9f\\x34\\x90\\x49\\xfc\\x75\\xa0\\xe0\\x3d\\xe4\\xcc\\x43\\xea\\xe3\\xc6\\xa6\\xcf\\xfb\\x5f\\x6a\\xe6\\xc9\\x45\\x04\\x41\\x5e\\x6c\\x7e\\xd3\\x04\\x5a\\x93\\x2f\\x47\\xfd\\x20\\xb9\\xf3\\x48\\x3a\\x77\\xb6\\xd4\\x49\\xd8\\xdf\\xd4\\xa6\\x38\\xdb\\xf5\\x6f\\x03\\xf0\\xf0\\x31\\x87\\x90\\x59\\xb2\\xfb\\x49\\x76\\x79\\x43\\xf4\\x6b\\x38\\x72\\xe2\\xde\\x56\\x7d\\x5f\\xef\\x80\\xb0\\x29\\x25\\xe9\\x86\\x3e\\x0f\\x1d\\x31\\xa8\\x0f\\x4e\\x64\\x51\\xc3\\x25\\x69\\x4b\\x80\\xcf\\x1f\\x19\\x18\\xc6\\xe4\\x98\\x87\\x8e\\xdc\\x47\\xc4\\x53\\x0c\\xac\\x46\\x6f\\x1a\\x29\\x4d\\x55\\xdf\\x09\\xaf\\x4f\\xdc\\x80\\x72\\xad\\xb1\\xbf\\x26\\xca\\x8c\\x92\\xf9\\x12\\xa2\\xb9\\xfe\\xbc\\x8b\\x97\\xb5\\x8c\\x1e\\x9d\\x32\\xc7\\x80\\x32\\x30\\x52\\x97\\x2b\\x6f\\xbd\\x53\\x30\\x4c\\x05\\x19\\x3c\\xae\\xb6\\x7c\\x5b\\xd3\\xe6\\x74\\x79\\x72\\x5d\\x29\\x7d\\xff\\xb0\\x68\\x90\\xab\\xf8\\xcd\\x9e\\x42\\x45\\x8e\\x16\\x8a\\x61\\x18\\xf9\\x05\\xb1\\xd5\\x34\\x86\\x01\\x6f\\x85\\xdc\\xd9\\x8d\\xd3\\x39\\xe3\\x46\\x05\\x33\\xd0\\xb8\\xa4\\x9f\\xae\\x6d\\xc1\\xa0\\x71\\x72\\x5e\\x6a\\xe5\\xf2\\x94\\x47\\x9e\\xe3\\xbd\\xca\\xeb\\x74\\x06\\x18\\x41\\xfb\\x26\\x08\\xe8\\x8a\\x49\\xfd\\x0f\\x38\\x95\\xb1\\x8f\\x85\\xb9\\x0f\\x72\\x41\\xdd\\x13\\x87\\x71\\x00\\x53\\xfa\\xa6\\x2b\\xae\\x75\\xe9\\xae\\x39\\x36\\x9c\\x1c\\x02\\xde\\x5d\\x19\\x24\\x2e\\xfa\\x16\\xe1\\x1d\\x44\\xa4\\xba\\x57\\x78\\xce\\x77\\x22\\xa9\\x1c\\xec\\x0b\\xc0\\xa0\\x8c\\x06\\x9b\\xdf\\xa1\\x30\\xd1\\xc6\\xc4\\xb5\\x6c\\x6e\\x93\\x54\\x24\\x03\\xcc\\xf2\\x76\\x84\\xde\\xf5\\x7d\\xef\\x26\\xdf\\x86\\xce\\xd5\\x71\\x28\\x2d\\xc9\\x60\\x97\\x46\\x18\\xf0\\xa7\\x4a\\x0c\\xde\\x35\\xb6\\x53\\xcc\\x6e\\x77\\x30\\x43\\x1b\\x82\\x5f\\xfb\\x9b\\x8a\\xaa\\xb3\\xc7\\xa3\\x97\\xc9\\x92\\xbc\\x2f\\xa2\\x32\\x70\\xfb\\x11\\xee\\x43\\x1a\\xfd\\x5f\\x9a\\x64\\x44\\x83\\x01\\x11\\x73\\x99\\x3f\\x19\\x48\\x5d\\xd3\\xcb\\xdd\\x18\\x7b\\xd3\\xd9\\x95\\xeb\\xf0\\x03\\x1b\\x1b\\x0d\\xe4\\xa8\\xde\\x9c\\x14\\xeb\\x6f\\x78\\x0e\\x36\\xb8\\x92\\x57\\x56\\xb9\\x79\\x06\\xa1\\x96\\x9d\\x85\\xe9\\x67\\xd8\\x80\\xe6\\xe7\\xdd\\xa4\\x2f\\xd3\\xc3\\x00\\x19\\xf1\\x1d\\x70\\x81\\x07\\x1e\\xee\\x66\\x26\\x42\\x28\\x36\\xbb\\xed\\x27\\xd4\\x6d\\xd0\\xdf\\x1f\\xeb\\x66\\x10\\xdc\\x85\\x9f\\x51\\x3c\\x0b\\xc6\\x53\\xd7\\x02\\x20\\xfe\\x04\\x8d\\x2e\\x97\\xc2\\xe0\\x6a\\xf5\\x30\\xe1\\x1b\\xdc\\x70\\x29\\xbc\\xcc\\x5c\\x92\\xed\\xec\\xef\\x5e\\x4a\\x2e\\x0b\\xe2\\xd2\\x51\\xf4\\x41\\x5d\\xca\\x3e\\x55\\xb3\\xa8\\x50\\xf2\\x63\\x0b\\x87\\x9e\\x4e\\x03\\x6c\\xe8\\x63\\x3b\\xf2\\x09\\x20\\xb6\\x80\\x94\\x21\\x59\\x29\\xac\\xcc\\x7b\\xe4\\x0c\\x57\\x78\\xbc\\x55\\x4e\\x6e\\xdd\\x7e\\x54\\xc9\\xe1\\x45\\xb2\\xee\\x07\\xb6\\x5d\\x06\\x1c\\x11\\xde\\x0e\\x83\\xf3\\x81\\xce\\x4f\\x57\\xc6\\x48\\x3f\\x51\\x06\\x93\\x63\\x51\\x10\\x74\\xc7\\xa5\\x77\\x35\\x3b\\x45\\xc6\\xeb\\x71\\x19\\x9d\\xce\\x50\\x59\\xfd\\x2c\\x46\\x11\\xb0\\x54\\x23\\x8a\\xaa\\xdf\\x2b\\x6b\\xa5\\x34\\xbf\\xff\\xc2\\x72\\x2a\\xe3\\xe3\\x1f\\xf7\\x9a\\xe2\\xeb\\xca\\x99\\xcc\\x35\\x07\\xf8\\xa0\\x33\\xcf\\x4f\\xea\\x70\\xc5\\x2f\\x7d\\xb5\\xde\\x44\\x2b\\x42\\xb8\\xd4\\x1e\\x99\\x01\\x2e\\x42\\xca\\x0e\\x85\\xa9\\xfb\\x6d\\x4f\\x16\\x5b\\x33\\x0d\\xe6\\x38\\x3c\\x57\\x26\\xef\\xca\\x2f\\xe9\\x71\\x34\\x00\\x02\\xf5\\x62\\xdc\\x6c\\xb8\\xf2\\xfa\\xf0\\x66\\x57\\x25\\xe0\\x97\\x79\\x9d\\x09\\x60\\x91\\x86\\x4d\\x66\\xa9\\x50\\xa5\\x79\\x09\\x53\\xee\\x16\\xb9\\xea\\x58\\x20\\x09\\x21\\x87\\x08\\xc4\\xac\\xcd\\x81\\x38\\x13\\x58\\xa2\\xc6\\x89\\xa0\\x41\\xd0\\x2d\\x78\\x61\\x21\"},\n{{0xbe,0x79,0xd1,0xae,0xea,0x86,0xe8,0x6f,0x39,0x81,0x37,0xe6,0x2f,0xfd,0x79,0xe5,0x0e,0xff,0x9f,0x31,0x3f,0x25,0x19,0x2f,0x89,0xe5,0x2f,0x0b,0x4b,0xbd,0x5d,0x32,},{0x18,0x7d,0xac,0x85,0x5c,0xa4,0x42,0xfd,0x9a,0x3d,0xdc,0x32,0x89,0xc2,0x4e,0xb2,0xd2,0x6f,0x7a,0x40,0xfb,0x29,0xd8,0xe7,0x44,0x31,0xb2,0x50,0x22,0xc3,0xa0,0xcc,},{0x6d,0xab,0x59,0x3b,0xb1,0xd4,0x48,0xc9,0x74,0xa6,0x5c,0x6a,0x0b,0x6f,0xad,0x22,0xb4,0x73,0x26,0x32,0xd0,0x04,0x89,0x17,0x6e,0xf1,0x26,0xaa,0x59,0x01,0x09,0xe0,0xa7,0x23,0xa1,0x13,0x10,0x7b,0x53,0xe1,0x7d,0x69,0x0a,0x0d,0x40,0xb0,0xfa,0x33,0x6c,0xc8,0x7f,0xd5,0xfc,0xe8,0xf5,0x41,0xac,0xce,0xc6,0x7f,0x7d,0x1e,0xbc,0x06,},\"\\x6d\\x63\\x2a\\x7d\\x3c\\x9b\\xe5\\x36\\x49\\xd0\\xd1\\xa5\\xee\\xdf\\x51\\x9a\\x41\\x3b\\x13\\xac\\x64\\xe9\\xad\\x85\\x4d\\xfa\\x04\\xf2\\xe1\\x73\\x29\\xd8\\x22\\xbe\\x57\\x3d\\x9e\\x35\\xac\\x06\\x6f\\x02\\x22\\x13\\xa3\\x44\\x62\\x0b\\xba\\x28\\x9f\\x53\\x31\\x69\\x55\\x84\\xd1\\x34\\x3e\\x81\\x54\\x05\\xae\\xab\\xe3\\x86\\x1d\\x63\\xb3\\xa5\\xb9\\x2b\\x8c\\xd8\\xee\\xed\\x22\\x80\\x22\\x2a\\xbd\\xe3\\x0a\\x1b\\xcc\\xd3\\xf3\\xe4\\x11\\xaa\\xb9\\x22\\xfa\\x1b\\xaa\\x09\\x7a\\xa5\\xc7\\x80\\xd0\\xea\\xef\\x94\\xea\\x10\\xfe\\x21\\xf7\\xd6\\x39\\xb7\\x6d\\x47\\x88\\xae\\xb5\\x92\\x4a\\x9d\\x26\\x2d\\xcb\\xc5\\x68\\x8a\\x3e\\x43\\x54\\x4b\\xec\\x08\\x8c\\xa2\\xe0\\xd0\\x6d\\x77\\xa7\\x1f\\xb6\\x41\\xd5\\x52\\x26\\x61\\x44\\x52\\xb1\\xe0\\x80\\x7a\\x9f\\xcd\\x3c\\xa6\\x9b\\xf7\\xf2\\x5d\\x80\\x41\\x47\\x0c\\xeb\\x7b\\x21\\xea\\xd0\\x3e\\xc0\\x37\\xa1\\x62\\x9b\\xd5\\x00\\xaa\\x23\\x3b\\x59\\xbe\\x44\\x97\\x82\\x10\\xb6\\xa3\\x66\\xf2\\x23\\xac\\xfa\\x07\\x97\\x95\\x40\\x07\\xb0\\x0e\\xfb\\x4f\\xfa\\xdb\\x5f\\xc9\\x2b\\xdb\\x37\\x86\\x3e\\x50\\x2d\\x7d\\x70\\x68\\x10\\x39\\xed\\xf3\\x37\\x70\\xdf\\x3d\\x1d\\xe3\\x43\\xdc\\x35\\xf2\\x26\\xd5\\xe7\\x39\\x44\\xba\\x02\\x55\\xe2\\xa8\\x8e\\xf6\\xc4\\x1e\\x47\\x2b\\x21\\x45\\x67\\xc2\\x49\\x59\\x4a\\x50\\x87\\x8b\\x67\\x31\\xc1\\xae\\xb5\\xb1\\x0f\\xa9\\x1f\\xa7\\x6a\\x37\\xe1\\xf9\\xf1\\xc0\\x0f\\xdb\\xfe\\x34\\x85\\xde\\xd5\\x4a\\x00\\x9a\\xb6\\x13\\x39\\x27\\x11\\x56\\x68\\xb5\\x9f\\x51\\x15\\x50\\x8d\\xa9\\x37\\x0f\\x6b\\xc9\\x2a\\x11\\x85\\xc0\\xd5\\xca\\x01\\xd2\\x91\\xe1\\x8c\\x54\\xac\\xfa\\xca\\x73\\x8b\\xd7\\x19\\x68\\xa3\\x42\\xa0\\xcb\\xa6\\x2e\\x4b\\xb1\\x04\\xa5\\xbb\\x37\\x9f\\xc8\\x3e\\xe1\\x82\\x0d\\x1d\\xb9\\x80\\x25\\x3d\\x6c\\xb3\\x83\\xe9\\x5a\\xf1\\x5f\\x53\\xc8\\x5d\\x17\\x58\\x90\\xdd\\xe5\\xe4\\xed\\x03\\xd2\\xd0\\x13\\x5e\\x3d\\x60\\xb1\\x82\\x93\\xf5\\xb5\\x64\\x1e\\xf8\\x3c\\x6e\\xce\\x3d\\x52\\x59\\x8f\\xc6\\x35\\x36\\x86\\xe6\\xf7\\xb0\\x9f\\xde\\xc1\\xf6\\xf1\\x53\\x67\\x2d\\x34\\xb4\\x89\\xb4\\x8a\\x0d\\xb9\\xe4\\x2c\\xed\\xa7\\x17\\x55\\x48\\x1c\\x04\\x70\\x16\\xc2\\x25\\x34\\xe9\\x0c\\x6d\\x20\\x1e\\xd7\\x85\\x96\\x02\\x63\\x6e\\xa7\\x7a\\xe8\\xc6\\x73\\x4b\\x7c\\x4c\\x5b\\xd9\\x95\\x79\\xc5\\x08\\x73\\x1c\\x72\\x46\\xa2\\x95\\x86\\xe4\\x06\\xe1\\xd9\\x32\\xf6\\x71\\x30\\x71\\xd4\\xbe\\xa6\\x3d\\xc5\\xe2\\xa3\\x76\\x1e\\x16\\x02\\x4d\\x2c\\x32\\x84\\xf7\\x09\\xa1\\xf2\\xba\\x08\\x5e\\xad\\x32\\x00\\xc7\\x04\\x62\\x75\\xcb\\x96\\xb6\\x1a\\x60\\xb5\\xac\\x55\\x9b\\xc4\\x88\\xbd\\x10\\x64\\x67\\xc3\\xde\\x50\\xbf\\x5d\\x74\\x0d\\x05\\xc9\\xcd\\x70\\x1d\\x65\\xb7\\xda\\xea\\x29\\xe6\\x4d\\xd5\\xa9\\x7a\\xdb\\x6b\\x5c\\x82\\xcf\\x7f\\x23\\x01\\x7a\\xa7\\xca\\x1a\\xc9\\xa3\\x9e\\x58\\x27\\xeb\\x47\\xe2\\x0d\\x35\\x9b\\x67\\xc7\\xd4\\xe1\\xa8\\xe3\\xe2\\x7c\\x52\\xd3\\x3d\\x93\\x03\\xa5\\x92\\x62\\x34\\x84\\xd7\\x97\\xb4\\x02\\xcb\\xb4\\x58\\xd1\\xac\\x2e\\xa5\\x3e\\x1c\\x4f\\x7a\\xbb\\x70\\xcc\\x02\\x95\\x54\\xa2\\x34\\x57\\x4d\\xef\\x9b\\xc3\\xb0\\xd3\\x83\\x5d\\xc3\\x14\\x90\\x2e\\x25\\xab\\xb2\\x2d\\xfd\\xed\\xdc\\x67\\x9a\\x3c\\xc8\\xf0\\x73\\x40\\xb1\\x5f\\x57\\x62\\xf4\\x40\\x7f\\x38\\x03\\x42\\x55\\x4e\\xd0\\xc6\\x2f\\x73\\xb6\\x18\\x16\\xea\\x8c\\x52\\x94\\x61\\xe1\\xbf\\x0e\\x9d\\x1c\\x2d\\x5e\\x4c\\x57\\x46\\x33\\x6b\\xc0\\xe1\\x32\\x87\\x3c\\xde\\x0d\\xc2\\x15\\x8b\\x54\\xfa\\x1b\\x67\\x8a\\x00\\x6b\\x4d\\x95\\xed\\xa8\\xa9\\x55\\x71\\x42\\x73\\xb7\\xcc\\x5c\\xf2\\xad\\xd9\\x09\\x4d\\x46\\xe4\\x9a\\xbc\\x09\\x6a\\x45\\xf4\\x18\\xe2\\xed\\xbe\\x99\\xdd\\x85\\x29\\x11\\x68\\x80\\x64\\xdf\\x7c\\xf0\\x61\\xd0\\x7a\\xee\\xf4\\x27\\x95\\x69\\x0f\\x48\\xc9\\xba\\x19\\x56\\x54\\x75\\xd5\\x46\\x8a\\x9e\\xf4\\x5d\\x7b\\xf7\\x5f\\xd7\\x11\\x82\\xdd\\x6e\\x64\\x01\\x38\\xf1\\x82\\xa6\\xa0\\xc6\\xcb\\xbd\\x00\\xc4\\x95\\xc4\\x38\\x95\\x30\\xac\\x8e\\x67\\x96\\x0e\\xb5\\xc5\\x76\\x3f\\x54\\x84\\xea\\xb1\\xc1\\xab\\x85\\x01\\x40\\xda\\x04\\x2b\\xa4\\x7e\\xd8\\x52\\x88\\x00\\xd4\\x17\\x87\\xf0\\x75\\xfe\\x0d\\x85\\x50\\x1a\\x7a\\xb7\\x66\\x35\\xd0\\x34\\x10\\xd2\\x86\\xc0\\xe1\\x7d\\xb4\\x02\\x3a\\x76\\x39\\x74\\x68\\xcc\\xb0\\x91\\xcc\\x5a\\xc1\\xf6\\x43\\x45\\x87\\x91\\x3e\\xab\\x92\\x2b\\x50\\xca\\x55\\x67\\x01\\x6d\\xde\\xa3\\x2f\\xb5\\x32\\x55\\xbe\\x67\\xf2\\xdc\\xf9\\xff\\xa8\\x5d\\x11\\x7f\\x1a\\x65\\x5f\\xa7\\x0d\\xd3\\xa5\\x4c\\xf9\\x91\\x53\\x1f\\x19\\x13\\x0e\\xaa\"},\n{{0x26,0x99,0x52,0x17,0x2c,0x3f,0xa9,0x76,0xde,0xfb,0xf4,0x0b,0xd6,0xed,0xd8,0xf1,0x5c,0xfd,0x4b,0xe1,0x0c,0x75,0x8e,0x37,0x41,0xd7,0x41,0x62,0xd8,0xea,0x22,0x9a,},{0x4a,0xea,0x57,0xc7,0x21,0xe3,0xdc,0xca,0x82,0x39,0xe9,0xad,0x9b,0x22,0xc1,0x9b,0xab,0x8d,0xf7,0x2c,0x88,0x79,0x3b,0x24,0xd8,0xdc,0x47,0xcf,0x97,0x40,0xfc,0xf8,},{0x3a,0xc8,0x0d,0x1e,0x8f,0x68,0xb4,0x05,0x8c,0x3a,0x04,0xda,0xd7,0x18,0x73,0x73,0x95,0x9f,0x26,0xa2,0x70,0x02,0x49,0x6f,0x8a,0xfa,0xac,0xcd,0x8b,0xea,0x09,0x01,0xc5,0x4c,0xab,0x87,0xb2,0xa2,0x30,0x2e,0x1f,0x36,0x25,0xc2,0xb0,0x6c,0x7e,0xbc,0xf3,0xce,0x96,0xde,0x3a,0xfd,0xf0,0x0f,0x51,0x94,0xa3,0x5e,0x05,0x52,0xc7,0x0e,},\"\\x7c\\xcb\\x6a\\x05\\x70\\xc5\\x33\\x73\\x7b\\x9a\\x53\\x4a\\x34\\x1a\\x7a\\x96\\xdc\\x76\\x52\\x8b\\x99\\x7a\\x9b\\x48\\xe6\\xe0\\xfd\\xe1\\x0f\\x47\\x4b\\x27\\xec\\x98\\x99\\x12\\xd1\\x76\\xca\\xb7\\x42\\xd8\\x9a\\x84\\x8b\\x36\\x66\\xe9\\x27\\x7d\\x69\\x5b\\x02\\x2f\\xd5\\x3a\\x9e\\xb8\\x9e\\x88\\xc7\\x20\\x39\\x9e\\x24\\xed\\x25\\xdb\\x9e\\xb3\\x5d\\x6d\\xa0\\x09\\xe9\\xf0\\x24\\xef\\x8e\\x65\\x51\\x65\\xbd\\xef\\x1c\\x0d\\x79\\x7c\\x74\\xf0\\x19\\xcd\\x59\\x1a\\x04\\x42\\xa1\\x2d\\x1c\\xa8\\x93\\x83\\x6c\\xa2\\x62\\x8b\\x33\\xe8\\x54\\xf3\\x42\\x8e\\xec\\x4a\\xa5\\xed\\x84\\xf4\\xbd\\xd2\\xee\\xf8\\xb6\\xd2\\x25\\xca\\xf9\\x49\\x6d\\xf9\\xed\\xff\\xd7\\x35\\xea\\x54\\xdb\\x1b\\xde\\xa8\\x83\\xad\\x5d\\x47\\xeb\\x0b\\xd4\\xa6\\x65\\x3f\\x0a\\xb0\\x37\\xf0\\x40\\xa4\\x15\\x17\\xa7\\x74\\x1f\\x91\\xe8\\x2f\\xdb\\x6f\\xda\\x04\\xf0\\xdf\\xa1\\xbc\\xf8\\xb9\\xb3\\x7b\\xf2\\xbf\\xbd\\x87\\x32\\x7a\\x63\\x6f\\x90\\x7f\\xdf\\x96\\x8d\\x01\\x89\\xd1\\xa1\\x18\\x09\\xc4\\x23\\x0b\\xa6\\x9d\\x5c\\xbd\\x84\\xf5\\x61\\xbc\\xac\\x3a\\xd0\\x02\\xe5\\x58\\xc5\\xb9\\xb0\\x97\\xa0\\x19\\x02\\xf2\\x9c\\xe3\\xf1\\xec\\x26\\x41\\x53\\xd6\\x68\\xc7\\x8b\\x84\\x51\\x05\\xb9\\xcd\\x2e\\xf3\\xc9\\x43\\x53\\x1b\\x75\\xaa\\x42\\x8f\\x17\\x9e\\x4b\\x34\\x18\\xb1\\xd5\\xa4\\xaa\\x7a\\xb1\\x20\\x3e\\xfa\\x49\\x5c\\x87\\x69\\x62\\x8e\\xb1\\x06\\x3a\\x93\\x7b\\x73\\xe4\\xb5\\xcd\\x0c\\xda\\x33\\xda\\xb0\\x1a\\x50\\xc6\\x4f\\xeb\\xd9\\x75\\xc5\\x7a\\x1e\\x84\\x15\\x08\\xe8\\x60\\x60\\x94\\xd0\\x82\\x4f\\xdd\\x96\\xcc\\x6c\\xfa\\x18\\xfa\\x82\\x09\\xb3\\x0f\\x0a\\x2a\\x78\\xea\\xc9\\xa7\\x67\\x17\\x6f\\x57\\x3e\\x78\\xc0\\x68\\x80\\x9b\\x19\\x9a\\x69\\xac\\x6d\\x33\\x5d\\x7c\\x92\\x09\\x99\\xc4\\x0c\\xba\\xd8\\x7c\\xf4\\xcc\\x7c\\xa5\\xc6\\x44\\x29\\x1d\\x75\\xad\\x7a\\x74\\xbc\\x1e\\x63\\x92\\xd1\\xce\\x31\\x1e\\xcf\\xd2\\xeb\\xc9\\x16\\xe3\\x9e\\xb6\\xaa\\x3e\\x7d\\x89\\xfb\\x80\\x5a\\x27\\xa5\\x5f\\x17\\x89\\x12\\xb1\\x57\\xbc\\x01\\xa0\\x55\\xf6\\x7a\\xef\\xa7\\x8e\\x55\\xc8\\x06\\xcb\\xd9\\xc0\\x1b\\xaf\\x8e\\xf9\\x2c\\xad\\x22\\x60\\xb4\\xbb\\x14\\xcf\\xe6\\x17\\x82\\xde\\xe5\\xc5\\x99\\x72\\x50\\x69\\x41\\xc4\\x62\\xa4\\xda\\x7e\\xb8\\x99\\x53\\x1c\\xf9\\x96\\xbc\\x98\\xba\\x36\\x29\\xef\\xfe\\x6f\\xcd\\x17\\x06\\xd1\\xb4\\xee\\x4f\\x2a\\x14\\xe9\\x21\\xbd\\x40\\x8f\\x30\\xe1\\x2e\\x73\\xfb\\x7a\\xa8\\x60\\x53\\x6b\\x03\\xe7\\x7c\\xa9\\x37\\x82\\x32\\x81\\xa1\\x64\\x53\\xfe\\x82\\x79\\x35\\x94\\x32\\x01\\xe6\\xec\\x14\\x3a\\x67\\xee\\xfa\\x4f\\x94\\xe9\\xab\\xf9\\x4f\\x7e\\x3d\\x41\\xb7\\x0a\\x82\\xbe\\x69\\xde\\xd8\\xa5\\x30\\x60\\xc2\\x30\\x5f\\x42\\xf6\\x2f\\xe6\\xa2\\xf7\\x04\\xb6\\x7a\\x1e\\x8f\\xdd\\xc7\\xd9\\x8b\\xa7\\xf3\\x45\\x71\\x19\\xb3\\x11\\xd4\\x49\\x66\\x3e\\xd9\\xe3\\x20\\xd6\\x18\\xdc\\x23\\x68\\xd4\\x95\\x08\\x75\\xb9\\xc3\\x8c\\x5d\\x8c\\x03\\x10\\x4e\\x2e\\x32\\xc4\\x32\\x5d\\xed\\xd2\\xbc\\x26\\x7e\\x2a\\xcc\\xb0\\x11\\x20\\x18\\xe9\\xc5\\xa8\\x00\\x7c\\xca\\xb2\\xf6\\xd7\\xc7\\x37\\x79\\x20\\x02\\xac\\xb7\\x30\\xd7\\x2e\\x9f\\x73\\x08\\x29\\xeb\\xc4\\x2c\\xa5\\x64\\xc1\\xd9\\x27\\x1b\\xf1\\x86\\x9c\\x4d\\x35\\x83\\x55\\x89\\xb7\\x43\\x1e\\xf7\\xa3\\x1a\\x07\\x00\\x60\\xfe\\x4a\\x08\\x9f\\xb1\\x1f\\x2d\\xd3\\xdc\\xe6\\x5a\\xe0\\xfb\\x45\\xbc\\x3a\\x28\\x60\\x91\\x7d\\x93\\x3b\\xa2\\xd0\\x90\\x56\\x9e\\xf5\\xed\\x43\\xbc\\x25\\x32\\xdb\\x87\\x9e\\x0f\\x1f\\x22\\x5e\\xad\\xcb\\xef\\x1c\\x03\\xd9\\xed\\x78\\x29\\x9e\\x23\\x3e\\x4c\\xf0\\x7b\\x06\\x4a\\x7b\\xaa\\xc3\\x4c\\x5a\\x0c\\x19\\xfc\\x3a\\x55\\x42\\x08\\x9f\\x70\\x16\\x7b\\xe2\\xf8\\x5b\\x4a\\x10\\xe7\\x78\\x52\\x52\\x23\\xbe\\x8f\\xfd\\x5c\\xff\\x96\\x48\\xb1\\x00\\x5a\\x09\\x8b\\x4b\\x39\\x24\\x39\\x8f\\xb0\\xbc\\xab\\xcc\\x6e\\xdf\\x30\\xc0\\x61\\xec\\xe7\\xae\\xa3\\x5f\\xe9\\x8a\\x92\\x03\\xf8\\x71\\x13\\x69\\x53\\x0f\\xeb\\x5e\\x67\\xbb\\x2d\\x4f\\x59\\xd9\\xc8\\xbc\\x99\\x38\\x54\\xdd\\x47\\x47\\xcd\\xe3\\x99\\xbd\\x0e\\x63\\x74\\x0c\\x1c\\xc8\\x39\\xad\\x0f\\x09\\x8a\\x38\\xa8\\x0b\\xea\\xdd\\x64\\x8e\\x14\\x36\\xde\\xee\\x60\\xe9\\x31\\xe6\\x8f\\x52\\x97\\x9c\\xe4\\x9f\\x30\\x1f\\xe3\\x9a\\xfb\\xb6\\x15\\x35\\x20\\x91\\xc8\\xb6\\x58\\x5f\\xe8\\x84\\x47\\xed\\x6e\\x59\\xa0\\x20\\xb2\\xbb\\xe6\\x6a\\x94\\x23\\xae\\x52\\x28\\xc2\\x03\\xbf\\xd4\\x84\\x7b\\x51\\x81\\xe2\\xc3\\xb4\\xda\\xd8\\x3a\\x6d\\x4f\\xa7\\x69\\x85\\xee\\xf7\\x6a\\xdd\\xe3\\xb3\\x4e\\xdb\\xdd\\x28\\xd6\\xa0\\xb4\\xa4\\xee\"},\n{{0xcc,0x31,0x38,0xe5,0x02,0xa5,0xff,0x6f,0x80,0xd2,0x46,0x36,0x6e,0x84,0xd6,0x5c,0x59,0xf1,0x2d,0x4f,0x49,0x63,0x97,0xe6,0xeb,0x99,0xb5,0x26,0x7b,0x8c,0xbe,0x2a,},{0x9e,0x2d,0x3e,0x88,0xaf,0x7b,0x52,0xdd,0xcf,0x00,0xe6,0xd0,0xc7,0x75,0x9c,0x12,0x38,0xb8,0xfb,0x3e,0xb1,0x44,0x21,0xfe,0x82,0xc3,0x48,0x33,0x43,0x78,0x35,0xbd,},{0xa2,0x70,0x0e,0x38,0x95,0xed,0x0c,0xc2,0xaa,0xf0,0x12,0xa4,0x0b,0xc7,0xbd,0x0b,0xd2,0x9d,0xd7,0x9c,0x69,0xc0,0xb4,0xa6,0xed,0xd0,0x53,0x0c,0xf3,0xe2,0x67,0xc0,0xf8,0x2d,0xd8,0x4e,0xda,0xf1,0x74,0x4d,0xc4,0x11,0xd6,0x2c,0x00,0x28,0x71,0x52,0x58,0x82,0x2d,0x7b,0x63,0xd3,0x97,0x05,0x61,0x2b,0x3f,0xad,0x4b,0x5e,0xfb,0x04,},\"\\x58\\x5e\\xcf\\x2f\\x09\\xeb\\x92\\x3d\\xf2\\x0a\\x85\\x55\\x64\\x2a\\x2b\\xc0\\xb6\\x8c\\x6a\\x5f\\xcf\\xd6\\xb8\\x40\\x1c\\x4a\\x0c\\xba\\xbb\\x4c\\x6e\\x6a\\x20\\x67\\x62\\xb7\\xa3\\x9f\\x2c\\x54\\x55\\xd7\\x80\\x8e\\xbf\\xbe\\xd5\\x6d\\x67\\x60\\xa4\\x31\\xc7\\xd2\\x0c\\x2d\\xc6\\xef\\x1b\\x73\\xca\\xa3\\xc4\\x94\\x88\\xe3\\x0b\\x1c\\xa2\\x52\\x0a\\xd2\\x0b\\x26\\xa1\\x97\\x00\\x78\\x0e\\x5e\\xf3\\xce\\x01\\x44\\x38\\x8d\\x84\\x07\\xb6\\xa7\\x0c\\x1c\\xda\\x37\\xdb\\x7f\\x12\\x09\\x1d\\x89\\x2f\\x2e\\x91\\xad\\x40\\x78\\xbb\\x4d\\xb1\\x76\\x2e\\x46\\x28\\x5a\\x7b\\x66\\x4b\\x2a\\xd3\\xa3\\x4d\\x26\\xd8\\xa9\\x4d\\x64\\x58\\x7a\\x84\\x52\\x77\\x22\\xea\\x83\\xcb\\x8a\\xa8\\x89\\x84\\xe1\\x48\\x97\\x43\\xb4\\x21\\x4e\\xa6\\x04\\x1a\\xa1\\x8e\\x55\\x20\\x09\\x54\\xef\\xc7\\xed\\xb3\\x19\\xdf\\x94\\x7e\\xfb\\xfc\\x6c\\x8d\\x0f\\xea\\x48\\xa1\\x31\\x61\\x34\\x65\\xd8\\xf4\\xc4\\x94\\x98\\xf2\\x26\\x91\\x45\\xc6\\xda\\xe5\\x04\\x78\\x05\\x25\\x98\\xe1\\xca\\x3b\\xe0\\xe3\\x36\\x11\\x57\\x1f\\xa3\\x84\\x77\\x1e\\xee\\x40\\x2c\\xc2\\xb1\\xd8\\x48\\x36\\xc8\\xf1\\xad\\x28\\xf2\\xad\\x23\\xde\\xe9\\xff\\x1d\\x7e\\x1f\\x25\\x21\\x63\\x58\\x74\\x11\\x5d\\xef\\x4d\\x93\\xe8\\x9b\\xe7\\x61\\x80\\xbc\\x55\\xf7\\x61\\x14\\x43\\x60\\xa8\\xb2\\x22\\x89\\x2d\\x64\\xd1\\x57\\xcc\\xb5\\xd8\\xf4\\x85\\x5d\\xca\\x56\\x70\\x14\\x95\\xa0\\xe1\\x00\\x2d\\x34\\x0a\\x4a\\x46\\x15\\x6b\\x9b\\x7f\\xe0\\x6b\\x7c\\x07\\x59\\xe0\\xb6\\xdf\\x55\\x9b\\x69\\x1e\\xde\\x78\\xb5\\x5a\\xf6\\x4e\\x7c\\x8d\\xd9\\x08\\xb7\\x88\\xdd\\x6b\\xa3\\x5a\\x90\\x2c\\x81\\xdc\\xeb\\x37\\x88\\xb6\\x15\\xde\\x22\\x5a\\xfa\\x58\\xa8\\x11\\x81\\xab\\x24\\xa7\\x37\\x05\\xee\\x83\\x8b\\x6e\\x86\\x3f\\xe1\\xbc\\xc2\\x6c\\x1b\\x94\\x32\\x39\\x23\\x0c\\x27\\xc6\\xb3\\x97\\xb2\\x3d\\x13\\xde\\x6a\\x02\\xc9\\x7f\\x36\\x45\\xda\\x91\\xd4\\x13\\xf9\\x16\\x47\\x3b\\x01\\x8a\\x61\\x59\\x4b\\x6f\\x51\\xce\\xa4\\x44\\x57\\xda\\x1e\\x3d\\xbb\\xba\\x6d\\xe1\\x68\\x66\\x65\\x7e\\x92\\xef\\x02\\x02\\x71\\x8a\\x84\\xad\\x03\\x33\\xe8\\x33\\x6b\\x05\\x2b\\x00\\x47\\x33\\xe8\\xe9\\x5e\\xc1\\x3e\\x5f\\x91\\xb3\\x80\\x6a\\x98\\xd3\\xdb\\x72\\x9f\\xb7\\x35\\xb8\\x14\\x7c\\x4a\\x98\\x2a\\x2d\\x5b\\x4e\\xfa\\xe9\\xc0\\x9d\\x0a\\x9b\\xf8\\x91\\xcb\\xbc\\x3c\\x8f\\x53\\x1e\\x76\\xe4\\x04\\x4e\\xc9\\x1f\\x4d\\x7c\\x5c\\xf7\\x73\\x10\\xe2\\xb2\\xcd\\xe2\\xe0\\x7c\\xcf\\x3e\\x0a\\x19\\xdd\\x6a\\xe1\\xb3\\xfc\\xb2\\xdf\\x42\\x18\\x6e\\x9c\\x72\\x92\\x2d\\x2d\\x4c\\xe5\\x1b\\x30\\x6e\\x81\\xb1\\x6c\\xfc\\xf8\\xf0\\x0d\\x51\\x3f\\xbd\\x2c\\x52\\x39\\xb4\\x5a\\xfc\\x65\\x4f\\x6f\\xe2\\x1a\\xcb\\x7e\\x8a\\x0c\\x9a\\xa8\\x7b\\x0b\\x60\\x50\\x74\\xdf\\x95\\x76\\xa6\\xdd\\xd9\\x00\\xac\\xa5\\x67\\x61\\x7c\\xb7\\x96\\x56\\xb3\\xb5\\xec\\xb9\\xff\\x68\\xb2\\xf6\\x24\\x1e\\xd0\\xd0\\x24\\xac\\x27\\xaa\\x6e\\xb4\\x86\\xb6\\x9f\\xdc\\x0a\\x0d\\xb9\\x20\\x96\\xab\\xf8\\x60\\x02\\xde\\xc7\\xaf\\xd8\\x47\\xa0\\x06\\xa3\\xf6\\x95\\x5b\\x49\\x56\\x90\\x53\\xbe\\x9f\\x1d\\x0a\\x49\\xb7\\x93\\xa5\\x41\\x1e\\x59\\x16\\xf4\\x18\\xec\\xab\\x95\\x32\\x43\\x55\\x3b\\x66\\xe6\\xba\\xdc\\x4e\\x90\\x9b\\xe0\\xef\\x5c\\xc7\\xc6\\xd2\\x71\\x99\\xec\\x3f\\x21\\x42\\x3b\\xc4\\x57\\x73\\xfb\\x40\\xb9\\x7b\\x61\\x18\\x5b\\x57\\x08\\x0e\\x8f\\x0b\\x89\\xa3\\xea\\x57\\xc8\\x44\\x4a\\xb2\\x7e\\xcf\\x70\\x06\\xa7\\x66\\x04\\x7e\\xef\\xf5\\x4d\\x85\\x56\\xcf\\xed\\x23\\xde\\xf1\\xda\\x2c\\xc8\\xae\\xbb\\x48\\xc9\\x4e\\x77\\x9e\\x82\\x03\\xae\\x2c\\x90\\x2b\\x51\\xde\\x0e\\xde\\x04\\x56\\xfb\\x73\\xfb\\x4d\\x5f\\x51\\x4a\\x4c\\xeb\\xc4\\x7f\\xec\\x3f\\x94\\x84\\x69\\xa5\\x45\\xc6\\xbc\\x57\\xb4\\x13\\x8d\\xb3\\x4e\\x7c\\xc0\\x06\\xde\\x26\\xef\\x50\\x7b\\x54\\xd2\\x81\\x47\\x56\\x7a\\x8c\\x29\\xac\\x1e\\xce\\xf5\\xbb\\x84\\xfb\\x99\\xac\\xeb\\x23\\xa2\\x02\\x94\\xd7\\x4a\\x85\\xae\\x36\\xb3\\x34\\x50\\x66\\x8a\\x5c\\x26\\x09\\xd3\\xa9\\x39\\x34\\x58\\x6f\\xf9\\x0c\\x3b\\x6d\\x27\\x32\\x9e\\xee\\xf3\\xa7\\x54\\xe9\\xa9\\xcb\\xd5\\x61\\x7e\\xf3\\xb0\\x93\\x97\\xbd\\xc9\\x71\\x37\\x07\\x66\\x58\\x9a\\x12\\xd8\\x90\\x05\\x0d\\x16\\x51\\x45\\x8b\\x3f\\xc5\\x33\\xc8\\x43\\xbf\\xfd\\xf9\\x75\\x4d\\x93\\x2c\\x4e\\xd7\\x61\\x1d\\x4d\\x27\\xc3\\x2a\\x08\\x75\\x55\\xb5\\xea\\xa3\\x7a\\xe9\\x0c\\x49\\x79\\xef\\x54\\x29\\x9c\\x42\\x0a\\xb5\\xe2\\x9a\\xe2\\x84\\x5d\\x4d\\xcf\\x21\\x78\\x92\\x0a\\x86\\x51\\x75\\xfb\\x9c\\xc0\\xe6\\xb8\\xc5\\x24\\xb1\\xee\\x49\\x58\\x05\\xd5\\x17\\xbf\\xe0\"},\n{{0x5c,0x69,0x2c,0x68,0x11,0x98,0xb1,0x72,0xdf,0x2f,0xac,0x2a,0xec,0x3f,0xcf,0x70,0x15,0xc2,0xbb,0x68,0x30,0xf2,0xa9,0x8e,0x30,0xa3,0x96,0xb6,0x4a,0xf4,0x28,0x0e,},{0x33,0xb1,0x69,0xd4,0xca,0x27,0x10,0x40,0x92,0x6e,0xa8,0x78,0x35,0xe5,0x06,0x6f,0x9f,0x05,0x78,0x2f,0x08,0x7f,0xca,0x7a,0x55,0x6f,0x7b,0xf4,0xcb,0xa2,0xe8,0x86,},{0xad,0x8f,0x37,0x9c,0xaf,0x41,0xf7,0x2d,0xcc,0xad,0xc3,0xe9,0x15,0x35,0x7a,0xb0,0xcd,0x30,0x4e,0x10,0xf4,0x12,0x0e,0x0d,0xbb,0xfa,0xac,0x01,0xbf,0xfa,0xf2,0xbe,0x89,0x3f,0x70,0x07,0x2d,0xc9,0x64,0x06,0x91,0x81,0xbe,0xc1,0x7f,0xe0,0x25,0x10,0x55,0xb2,0x1e,0x23,0xde,0xe4,0x36,0x3b,0x27,0xef,0x1f,0xff,0x67,0xaa,0xfe,0x06,},\"\\xb1\\x60\\xee\\x3a\\x93\\xcf\\x6b\\xc3\\x45\\x6e\\x5b\\xd0\\x19\\x7c\\x09\\xaa\\x76\\xc2\\x25\\x80\\x52\\xf9\\xa3\\x4d\\xbc\\x2e\\xd5\\x89\\xf8\\xdb\\xe5\\xff\\x99\\x69\\xa6\\x1c\\xfe\\x84\\x6b\\x2f\\x67\\x39\\xdc\\x7d\\x4a\\x14\\x96\\xe9\\xad\\x58\\x60\\x5b\\x5a\\x27\\x58\\xca\\x07\\x8c\\x55\\xa9\\xfc\\x1c\\x4e\\xeb\\x54\\x91\\xa8\\x4b\\xfd\\x46\\x8a\\x2c\\xeb\\x14\\x1a\\x77\\x34\\x93\\xa9\\xb3\\xee\\x82\\x8b\\x5d\\xde\\x9c\\x00\\xc2\\x36\\xff\\x01\\x56\\xe4\\xe2\\xe4\\x5f\\xa0\\x79\\x31\\xda\\x68\\xbb\\xd2\\x03\\x0a\\x88\\x14\\x05\\xc4\\xf7\\x87\\x28\\x81\\x3a\\x5e\\x04\\x81\\x24\\x04\\xc2\\xa1\\x9c\\x9b\\x87\\xb1\\xcf\\xe9\\xaf\\x95\\xe2\\x73\\xec\\xf9\\xc5\\x18\\xc5\\x39\\x35\\xf8\\x42\\x56\\x3b\\x19\\x2f\\xae\\x12\\xa7\\x3c\\xef\\x08\\x5f\\xe1\\x9e\\x89\\x9e\\x5b\\xa0\\x89\\x79\\xe3\\x11\\xfb\\x28\\x6f\\xbf\\xc7\\xb2\\x48\\xaa\\xbd\\x40\\xdc\\x61\\x61\\x0e\\x1d\\x4f\\xc9\\x80\\x6d\\xd2\\x12\\x92\\x39\\x2d\\xb2\\xdb\\x40\\x42\\x6c\\x5d\\x19\\x6a\\x48\\x9c\\x5d\\xb7\\x7e\\x3e\\x9c\\xf0\\xbd\\x04\\x1e\\x3c\\x23\\xb5\\xba\\x1d\\xb7\\x81\\xa1\\x07\\x90\\xbe\\x1f\\xe0\\x7a\\x2b\\x00\\xca\\x3a\\xf8\\x9c\\xbd\\x46\\xef\\xce\\x88\\x0e\\x1e\\xf2\\x8b\\x0c\\xd7\\x9d\\x53\\xb4\\x2c\\xd8\\x0e\\xaa\\x13\\x7e\\xff\\x7d\\xf9\\x0b\\xcb\\xcf\\x95\\xc9\\x85\\x8d\\xc0\\xcc\\xc6\\xd8\\xca\\x8a\\xe3\\x54\\x7b\\xdb\\xf9\\xff\\x90\\x24\\xf3\\xcf\\x17\\x01\\x15\\xeb\\x28\\xbf\\x12\\xb7\\xd3\\xb7\\x01\\x46\\x0f\\x48\\xd1\\xb4\\xb2\\x3d\\x7f\\x6f\\xf7\\x2f\\xfd\\xc9\\xa6\\xc5\\x26\\x24\\xd1\\x53\\x12\\xd7\\xf1\\x9d\\xdb\\x60\\x26\\xa1\\x5e\\xb5\\x42\\x95\\xd3\\x31\\xfd\\x79\\x50\\x91\\x03\\xbc\\x59\\xa3\\xb6\\xe1\\xba\\x7a\\xc8\\xc1\\x12\\xe4\\xde\\x28\\x17\\xe5\\x1c\\x1e\\x16\\x50\\x7b\\xa6\\x6f\\x25\\x47\\xbc\\x89\\x9f\\x69\\xc1\\x20\\x7a\\xe5\\xe3\\x7b\\xdb\\x0e\\x16\\x1b\\x15\\xb6\\x12\\x30\\x5b\\xc0\\x94\\x0f\\x9d\\x1b\\x38\\x2a\\x37\\xec\\x2d\\xa6\\x39\\xa6\\xec\\xba\\x1b\\xcd\\xfc\\x51\\x21\\x4c\\x32\\x23\\xc1\\x1b\\xba\\xb7\\x9f\\x3f\\xae\\x3d\\x55\\xe2\\xd4\\xbe\\x58\\x4f\\xd7\\x60\\x1e\\x4e\\x2e\\x55\\x8b\\x3b\\xe5\\x70\\x71\\x15\\xa6\\x1f\\x5a\\x81\\x5e\\xc2\\x4a\\xac\\x18\\x09\\x34\\x57\\xbc\\x46\\xc0\\x5c\\xfb\\x7a\\x3f\\x25\\x33\\xea\\xda\\xdc\\x9e\\x6c\\x1f\\xe3\\x10\\x77\\x9e\\x69\\x7f\\x68\\x30\\x35\\xce\\x57\\x87\\x3d\\xf5\\x5d\\x79\\x1f\\x6d\\x2f\\xb0\\xe2\\x10\\x7e\\x68\\x66\\xf8\\x39\\xc3\\xa1\\x26\\xe9\\x02\\x38\\x65\\xce\\xd1\\xbc\\xf6\\x77\\x99\\x55\\xaf\\x54\\x7e\\x1d\\x87\\xeb\\x32\\xa9\\xbf\\x32\\x28\\x57\\xfd\\x12\\x6b\\x0c\\xdc\\x5d\\x5e\\x90\\x4e\\xb7\\x6c\\x67\\x06\\xe3\\xc8\\x97\\xae\\xfd\\x6e\\x47\\x56\\xfb\\x8a\\xca\\x81\\x70\\xca\\x5b\\x39\\x66\\x90\\x89\\xaf\\x1b\\xb1\\x41\\xa2\\x5d\\x6b\\x8b\\x06\\x03\\x4d\\x8b\\x11\\xab\\xf1\\xff\\x8f\\x8d\\x43\\x37\\x58\\x46\\xfa\\x8f\\xa8\\xa3\\x4b\\x5f\\x26\\x48\\x20\\x74\\x4d\\x31\\x14\\x9b\\x7d\\x57\\x32\\x6c\\x59\\xb1\\xdb\\x74\\x13\\x16\\x78\\xf6\\x34\\xe7\\x23\\x2c\\xa5\\xea\\x51\\x88\\x76\\x0a\\x70\\xdc\\x35\\xdc\\x89\\xf8\\xe4\\x53\\xb4\\xc6\\x5b\\x77\\x2c\\x2b\\x6b\\x62\\x76\\x8d\\x83\\x73\\x23\\x65\\x51\\xba\\xaf\\x24\\xd3\\xc3\\x04\\xc4\\x1b\\x62\\xc3\\x6e\\x6a\\x33\\x83\\xb3\\xa1\\x63\\xb7\\x3e\\x78\\xd8\\xba\\xdb\\x75\\x74\\x1e\\x50\\x01\\xd4\\x19\\xd3\\x0e\\x2e\\xd7\\x7c\\x30\\x96\\xe8\\xd8\\xdf\\x71\\x3b\\x93\\x76\\x2c\\x97\\x07\\xbd\\xd0\\xf3\\x65\\xa8\\x74\\xb9\\xda\\x8a\\xb7\\x10\\x49\\x5d\\xd5\\x6a\\xea\\x93\\xbb\\x77\\xfb\\x22\\x26\\x35\\xc6\\x3b\\xce\\x9f\\x63\\xaf\\x91\\xfa\\xc8\\x9c\\x66\\x98\\x6b\\x8e\\x21\\x76\\xdd\\x45\\x1d\\x58\\x33\\x94\\xc1\\x90\\x7c\\xba\\x17\\x25\\xf0\\x6d\\x25\\xd1\\xd0\\x91\\x2b\\x3e\\x5c\\x6c\\x7d\\xcd\\x34\\x35\\x8f\\xad\\x59\\xdb\\xc6\\xf6\\xb1\\xc2\\xef\\x33\\xd3\\xca\\x82\\xf4\\x35\\x18\\xfe\\x4f\\xf3\\x13\\x78\\x01\\x6e\\x57\\x8a\\x7b\\xab\\x0b\\x77\\x67\\x6e\\xba\\xe0\\xd4\\x8d\\x08\\x89\\xd6\\x90\\x29\\xd2\\x09\\xf2\\x83\\xce\\x8f\\xe0\\xec\\x23\\xcd\\x83\\x2a\\xdc\\x12\\xa9\\xc3\\xe3\\xae\\xc2\\xd6\\x03\\x66\\x95\\x55\\x6d\\x93\\x13\\xf1\\x2a\\x89\\x9d\\xd5\\x9a\\x66\\xbe\\xf2\\x8e\\xde\\x17\\x5f\\x8a\\xae\\xee\\xb2\\x94\\x2b\\xb9\\x08\\x92\\xa0\\x4b\\x44\\x0d\\x04\\xb6\\x6f\\x5e\\xef\\xf6\\x1a\\xda\\x72\\x79\\x02\\x94\\xce\\x55\\xc8\\x6c\\x6d\\x92\\x78\\x5d\\xdd\\x26\\xc7\\xa7\\x31\\x60\\x3b\\x06\\x9c\\x60\\x3c\\x92\\xe4\\xfe\\x8f\\xf7\\x82\\x54\\x4c\\x8e\\x89\\xb4\\x0b\\x8b\\x55\\xf9\\x0e\\x2a\\x5e\\x9a\\x0f\\x33\\xc7\\xfe\\xc7\\x7d\\xad\\x81\\x52\"},\n{{0x9d,0x5f,0x85,0xd2,0xe7,0xdf,0xd0,0x3b,0xb6,0x89,0xd9,0x00,0x28,0x5f,0xd4,0x46,0x15,0x38,0xa5,0xf2,0x71,0x0a,0x13,0xed,0x21,0xc7,0x75,0xf6,0xef,0xf6,0xb3,0xff,},{0xb8,0x67,0x97,0xe4,0xbe,0x02,0x86,0xae,0x39,0xe4,0x4d,0xf0,0xa0,0x0c,0x01,0x6d,0xb4,0x55,0x5e,0xf8,0x6f,0x2f,0x05,0xd0,0xa3,0xed,0x89,0xd8,0x9a,0x4c,0x3e,0x5e,},{0x17,0x6b,0x95,0x92,0xf8,0xc2,0x51,0x35,0x29,0x2a,0xdd,0x4d,0xaa,0xcc,0x9c,0x4f,0xaa,0x21,0xd4,0xf4,0x9b,0x27,0x84,0x80,0xc4,0xe8,0x88,0x1c,0x01,0x62,0x4d,0xf9,0xa3,0x7e,0x23,0xe1,0x8e,0x84,0xca,0x32,0xd0,0xd8,0xcb,0x85,0x10,0x54,0x22,0x2f,0x10,0xa4,0x95,0x41,0x9f,0x19,0x7e,0x7b,0x3d,0x18,0xdf,0x0a,0xdf,0xb1,0xb3,0x07,},\"\\xf7\\x0b\\x5b\\x05\\x3a\\x46\\x72\\x51\\x2c\\x24\\xb3\\x16\\x83\\x92\\xf6\\xa1\\x7d\\xd7\\x7d\\x86\\x89\\xc2\\x1c\\x86\\xef\\xc2\\x58\\x29\\xa1\\xa0\\x4f\\xab\\x4f\\x76\\xc8\\x52\\x16\\x84\\xd3\\x20\\x10\\x45\\x59\\x07\\xa2\\x69\\x08\\x67\\x7b\\x40\\xdc\\x69\\x47\\xd6\\x54\\xf2\\x91\\x4c\\x30\\xec\\xee\\x72\\x4f\\xa6\\x84\\x46\\xb5\\x9d\\x09\\x1e\\x25\\x8f\\xc8\\x62\\x41\\x1c\\x96\\x4d\\x66\\x8d\\xef\\x83\\x03\\x4b\\x62\\x7e\\xd4\\x16\\xdc\\x19\\x0b\\xb5\\xa2\\x63\\xa6\\xff\\x8d\\x55\\x9e\\x13\\xb8\\x93\\x62\\x25\\xfb\\x4d\\xab\\x4f\\x7b\\xda\\x04\\x68\\xe5\\x47\\xe7\\x08\\xcb\\x04\\xce\\xbe\\x1e\\x5c\\xfc\\x69\\xf7\\x6a\\x1d\\x28\\x3f\\x28\\x16\\x82\\x86\\xf2\\x4e\\xce\\xa5\\x53\\x5e\\x44\\x90\\xa0\\xc5\\x55\\x67\\xa7\\x34\\x5e\\xf9\\x53\\xce\\x42\\x6b\\x20\\x9a\\x3d\\xe3\\xdf\\x59\\x5e\\x80\\xee\\x61\\xe5\\x72\\xa2\\x78\\xab\\x02\\x21\\x95\\x51\\xb7\\x3d\\xa4\\x19\\x84\\x80\\x82\\x85\\xa8\\x35\\x98\\xa0\\x2d\\x9b\\x28\\x67\\x12\\x10\\x00\\x4e\\x31\\xd8\\xaf\\x92\\x42\\xc1\\x6f\\x90\\xd5\\xea\\x8f\\x63\\xa1\\xff\\x66\\xcf\\xe6\\x0e\\xcb\\xe5\\x37\\x24\\x5f\\xa1\\x2a\\x9b\\x15\\x41\\x15\\x29\\x58\\x06\\xea\\x2d\\x11\\xf3\\x67\\x17\\x82\\xb9\\xaf\\x4f\\xa8\\x6a\\x12\\x88\\xe1\\x23\\xcf\\xd2\\x40\\x9a\\x5d\\xc9\\x8f\\x41\\xb8\\xf6\\xdf\\x29\\x9b\\xbc\\xc4\\xbb\\x64\\x47\\xdc\\x03\\xa6\\xd6\\x0e\\x9b\\x2c\\x5b\\x8f\\xfc\\x40\\xd9\\x83\\x95\\x6b\\xe9\\x77\\x68\\xdd\\x06\\x12\\xd4\\x7c\\xbf\\xa7\\x57\\x1c\\x99\\x69\\x85\\x6c\\x15\\x2c\\xd3\\xb4\\x73\\xac\\xe0\\xb8\\xa1\\x44\\xaa\\xc2\\x09\\x5c\\x0f\\x72\\xf1\\xd3\\x14\\x71\\x52\\xb9\\x08\\xef\\x66\\x26\\xd5\\x22\\x28\\x19\\xb2\\x0b\\xb3\\x35\\x0a\\x46\\x45\\x2f\\x67\\x54\\x90\\xc2\\xa8\\x21\\x50\\xee\\xc4\\x0d\\x75\\xb6\\x6a\\x32\\x5d\\x6e\\x92\\x9a\\x90\\x5a\\xde\\x1e\\x31\\x60\\xab\\x95\\x01\\x81\\xef\\xc6\\x6e\\x59\\x23\\x08\\x65\\xd5\\xe5\\x99\\x69\\x8a\\x8a\\x3f\\xf5\\x60\\xc4\\xc6\\x01\\xa7\\xa9\\xa5\\xda\\x3b\\x5d\\x89\\xbc\\xa9\\x3f\\x7c\\xf5\\xbc\\xf5\\xbd\\x5e\\xcf\\xf8\\xf1\\xa1\\x85\\xc8\\x22\\x0e\\x4c\\x77\\x82\\x1e\\x62\\xad\\xf9\\x5a\\x03\\x7f\\x2d\\xf7\\xce\\xf4\\x3a\\x4c\\x60\\xac\\x75\\x80\\x1e\\x9f\\xcc\\xdc\\x5b\\x08\\xee\\xd3\\x28\\xdd\\x93\\x10\\x09\\x04\\x11\\x56\\x45\\xec\\x1e\\xe0\\x85\\xcc\\x77\\x8b\\x0f\\x4e\\x46\\xe1\\x72\\x98\\x98\\x4a\\x70\\x2e\\xce\\xb3\\xe1\\x52\\x83\\xd8\\x20\\x00\\x4f\\x74\\xa0\\x79\\x52\\x0d\\x63\\xa7\\x5f\\xae\\x33\\xec\\x3f\\x4b\\x83\\x64\\x69\\xe1\\xaa\\x99\\xea\\x24\\x4a\\xf1\\xfb\\x08\\xb0\\x0a\\x8c\\x9d\\xfd\\x03\\x30\\x8d\\xfc\\x20\\x23\\x5e\\xa9\\xc8\\x28\\x3f\\x4d\\xa4\\x7c\\xfb\\xcd\\xbd\\x03\\x1a\\x02\\xd1\\x64\\x16\\x0f\\x2a\\x58\\x98\\x67\\x00\\xb1\\x95\\x26\\xd4\\x1e\\x4d\\x7f\\xd4\\x58\\x43\\x4d\\x72\\x64\\xbc\\x8e\\xb6\\x42\\xe6\\xd8\\xdd\\x27\\x59\\xce\\x2b\\x85\\xc9\\x7b\\x37\\x02\\xe7\\x0d\\xa7\\x1f\\x18\\xed\\xc5\\x3e\\x91\\x40\\xa6\\x45\\x62\\x7e\\x02\\x78\\xe8\\xe7\\x05\\x39\\x03\\x74\\x84\\xdc\\xd1\\x8c\\x62\\xfa\\x33\\x07\\x17\\xd6\\x14\\x8a\\x0d\\x62\\x3f\\xf8\\xb6\\x5e\\xa8\\x56\\x7e\\xc7\\xfa\\x04\\xc8\\x92\\xe3\\xa1\\xec\\xee\\x96\\xe8\\x32\\xf4\\x15\\x50\\x74\\xc8\\x3c\\xbc\\x93\\xe9\\x8c\\xc6\\x7f\\x1f\\xa1\\x12\\xaa\\x06\\xe9\\x91\\x5f\\xa4\\xd2\\xde\\xa9\\x31\\x55\\x1e\\x7c\\x62\\x3a\\xa8\\xa3\\xa7\\x61\\x9e\\xa2\\x4f\\xf9\\x14\\xe2\\x64\\xf3\\x1f\\xc7\\x3d\\xfa\\x8c\\x43\\x0a\\xc4\\x6c\\xe1\\x6d\\xc9\\x68\\xc5\\xa4\\x08\\x5d\\x5c\\x38\\x0d\\x30\\xcd\\xc6\\xf4\\x3d\\xee\\x80\\x6f\\x38\\xd1\\xdf\\x42\\x0a\\x06\\x55\\x74\\x14\\x47\\x37\\x05\\x6d\\xaa\\x62\\xf0\\xc0\\x98\\xc9\\xc5\\x2f\\xcc\\x04\\xcc\\xa6\\x42\\xc4\\x5d\\x68\\x73\\x45\\xa0\\x94\\x61\\x3d\\x4a\\x3c\\x6c\\x87\\x88\\xbf\\xa2\\x18\\x53\\x8a\\xd7\\xec\\xe1\\xbd\\xb6\\xc9\\x39\\x24\\xee\\xc4\\xba\\xaa\\x3e\\xb1\\x5d\\xc1\\x49\\x4d\\x65\\xff\\xa1\\xa2\\x3f\\xf8\\xe9\\x85\\x26\\x34\\x08\\xfb\\x02\\xbf\\xe3\\x9a\\x8c\\x55\\xb3\\x00\\xb1\\xa0\\x2e\\xd3\\x6c\\x67\\x14\\xdd\\x5a\\xb7\\x50\\xd4\\x7f\\x02\\x1f\\x65\\xe0\\x8c\\x63\\x5f\\x1d\\x6b\\x7b\\xaf\\x39\\x6c\\xb4\\xf9\\x3d\\x56\\xc1\\xca\\x46\\x1b\\xb1\\x2e\\x94\\xde\\x7e\\x5d\\x98\\x65\\x9a\\x8a\\xf0\\xbf\\x01\\x9f\\xc4\\x22\\x80\\xe1\\x11\\xe0\\x48\\x00\\xff\\x80\\xe0\\xc1\\x57\\x15\\x0e\\x16\\x56\\x09\\x45\\x42\\x81\\xb2\\x00\\x07\\xe3\\xed\\xfa\\xa1\\xea\\x85\\x44\\x65\\x54\\x7a\\x00\\x6a\\x4c\\x32\\x36\\x41\\x14\\x95\\xda\\x16\\x60\\x98\\xaf\\x28\\x23\\xa4\\x59\\xcf\\x10\\x0a\\x1f\\x3c\\x92\\xc6\\x39\\x0c\\x60\\x66\\xcd\\xbf\"},\n{{0x4a,0xaf,0x2d,0x13,0x28,0x84,0xf3,0x0d,0x11,0x27,0xcf,0x18,0x7e,0xe0,0x93,0x88,0xb4,0xa5,0xc4,0x4a,0x9a,0x92,0x67,0xe6,0x72,0x83,0x17,0x39,0x89,0x51,0xfb,0x61,},{0x83,0x72,0x7e,0x92,0x57,0x34,0x91,0x28,0x55,0x9e,0xbf,0x75,0x9f,0xdc,0x82,0x12,0x2c,0xce,0x76,0x74,0x66,0x39,0xc0,0xad,0xa9,0x76,0x1f,0x0d,0x60,0xb9,0x40,0xb1,},{0x5f,0x11,0xdf,0x39,0x06,0xa7,0x12,0xa9,0x53,0xf4,0x7c,0x85,0x98,0x06,0xb5,0x23,0x73,0x58,0xd0,0x8b,0xa9,0x5e,0x49,0xf9,0xe5,0x30,0xa3,0x71,0x65,0x83,0x5e,0x93,0x59,0xd9,0x76,0x9d,0xc2,0x1f,0xbb,0x4d,0x44,0x49,0x7b,0x93,0x90,0x5b,0xca,0x8d,0x99,0x17,0xc7,0x28,0x49,0x3f,0xee,0x3a,0xcd,0x5b,0x52,0x1d,0xbd,0x1e,0x24,0x08,},\"\\xd7\\x3e\\xaf\\x11\\x41\\x3b\\xf4\\xd5\\xbc\\xcf\\x6a\\x2e\\x80\\x9c\\xd6\\x83\\x2a\\x51\\x82\\x3a\\xa2\\x2b\\xd1\\x6e\\x09\\xcf\\x56\\xff\\x04\\x5e\\xef\\x2d\\x1a\\xda\\xdd\\xa5\\x0c\\x2e\\xbd\\x67\\xbb\\xc4\\xd7\\x0e\\x49\\x3c\\x96\\x8c\\xb4\\xde\\x49\\x77\\x06\\x5d\\x44\\x63\\x30\\x06\\x94\\xc9\\xca\\xa5\\x72\\x06\\xd6\\x66\\x46\\x93\\xd8\\x46\\x2c\\x3c\\x57\\x6b\\x52\\x5c\\xc7\\xac\\xf7\\x9f\\x26\\xf9\\x05\\x5a\\x1b\\xcf\\xa7\\xd0\\x77\\xf4\\x5e\\xbe\\x0b\\x2d\\x48\\x1e\\xbd\\x63\\xf7\\x34\\x0a\\x33\\xe4\\xab\\x68\\xf1\\x60\\x49\\x75\\xec\\x1d\\xfe\\xc4\\x5a\\x79\\x1a\\x2a\\xbb\\x10\\x44\\xd7\\x5a\\x4d\\xb5\\x5a\\xdf\\x59\\xb8\\x39\\x4e\\xbd\\xe6\\x82\\x4c\\x21\\x14\\x5b\\x00\\xef\\x3b\\x1b\\x08\\xed\\x11\\xfd\\x51\\xdd\\xa5\\x14\\xed\\x7e\\x21\\xe5\\x4d\\xba\\xf6\\xab\\xb6\\xd9\\xe3\\x17\\xfc\\xf9\\xfd\\x37\\x5b\\x18\\x76\\x4e\\x64\\xac\\x9b\\xe5\\xb0\\x8f\\xec\\x3b\\x78\\xab\\xba\\xb1\\xd1\\x2a\\x2a\\xb0\\x9d\\x55\\x9a\\xcd\\xc7\\x13\\x3f\\xb2\\xe0\\x00\\x8e\\x0c\\x11\\x4b\\x7c\\xad\\xb4\\xbf\\x76\\x30\\x78\\x67\\x4d\\x03\\xe9\\xc8\\x07\\xbe\\xc1\\xe2\\xca\\x71\\xad\\xcd\\xaa\\x31\\x0d\\x58\\x7f\\xa5\\x69\\x50\\xfc\\x0f\\xb2\\xe9\\x79\\x04\\x3d\\x50\\xf9\\xae\\x23\\xfa\\x8f\\x82\\x1c\\xd9\\xd6\\x23\\x27\\x89\\xd0\\xee\\xcc\\xfc\\x4f\\x47\\xe3\\xad\\x80\\x4e\\x25\\xcf\\x5a\\x42\\x5f\\x94\\x37\\x7d\\x17\\x87\\x48\\x33\\xe6\\xae\\x36\\x38\\x17\\x8c\\x78\\xb7\\x95\\x19\\xd6\\x4d\\x97\\x93\\xf4\\x50\\x46\\x06\\xa0\\xea\\xb6\\x87\\x07\\xf6\\xe1\\xf7\\xcc\\xcb\\x51\\x5b\\xe3\\xd1\\x20\\x1b\\xcd\\x19\\xf2\\xf0\\xe2\\x55\\xc7\\x22\\xea\\xb1\\x2b\\x43\\xaf\\xf8\\xc8\\xc5\\x56\\x11\\x25\\xfb\\xca\\x1f\\x65\\x42\\x07\\x6a\\x06\\x15\\x2e\\xb7\\xe4\\xb0\\x78\\x63\\x24\\xc2\\x49\\x5e\\x79\\xd7\\x9c\\x0a\\x8e\\x29\\x5b\\xb2\\xe3\\xdf\\xd0\\x5a\\x90\\x33\\x19\\x00\\x65\\xa2\\x84\\x55\\x2a\\x6e\\x73\\x60\\x06\\xac\\xe4\\x1f\\x97\\xcc\\x43\\x4a\\x25\\x12\\x05\\x1b\\x72\\x7c\\xe5\\xbc\\x9c\\x4a\\x75\\x52\\x9e\\xc5\\x3d\\xd7\\xd1\\xf1\\x26\\xe7\\x93\\x85\\x77\\x47\\xb5\\xba\\x8d\\x03\\x15\\x5d\\x45\\x55\\xf5\\x9e\\x8b\\xaf\\x2f\\x0c\\xdb\\xa8\\x71\\xac\\x16\\x0e\\x75\\x19\\xa8\\x52\\xdb\\x00\\x4f\\x70\\x16\\x41\\xa4\\x0a\\x42\\x2d\\x4c\\x38\\xb6\\xc0\\xc3\\xcc\\x8f\\xbb\\xd0\\x53\\x22\\xdd\\xc0\\x00\\x1f\\xb8\\x67\\x28\\x6e\\x29\\x6c\\xbd\\x69\\x86\\x2c\\xbc\\xcc\\x74\\x47\\x03\\x8e\\xb3\\x0f\\x8a\\x81\\x23\\xb7\\xb3\\x13\\x73\\x98\\x47\\x02\\xc3\\xbe\\x45\\x7a\\x4b\\x8c\\x54\\xe6\\xe5\\x28\\x04\\x85\\xa2\\xc4\\xff\\x84\\x52\\x1f\\x29\\x8d\\xde\\xb3\\xb3\\xb2\\xbc\\x91\\xf1\\x14\\xdd\\xce\\x67\\x03\\x02\\x48\\x04\\x44\\x69\\xdc\\x06\\xf3\\x62\\xf2\\x91\\x9a\\x3f\\xec\\xe5\\x08\\x23\\x75\\xd0\\x40\\x80\\x37\\x6f\\xe2\\x19\\xd9\\xb4\\x57\\x5b\\x1c\\xf1\\xc9\\xec\\x4d\\xca\\xc5\\x74\\x9f\\xc7\\x78\\xf5\\x15\\xdd\\xa1\\x3f\\xa0\\xd5\\x86\\xc2\\x64\\xb9\\xbb\\x61\\x50\\x33\\x10\\x76\\x2c\\x78\\x9c\\xa1\\x16\\x08\\xd2\\xfe\\xe6\\x74\\xc7\\x0a\\xc4\\xfc\\x6d\\x5e\\xbc\\xf6\\x8c\\x4a\\xb8\\x9b\\xd8\\x45\\x55\\xfc\\x00\\x75\\x23\\xc2\\x8a\\x7e\\x1d\\xd0\\x8a\\x98\\x62\\x04\\x4d\\x52\\x45\\xb9\\x1a\\x87\\x78\\xec\\x9e\\xe9\\x84\\xa4\\x1a\\x9e\\x13\\xb7\\xab\\xd6\\x57\\xae\\x2a\\x46\\xae\\x86\\x01\\x52\\xc6\\x44\\xac\\xd9\\x53\\x67\\x67\\x8f\\xf6\\x4c\\xc5\\x40\\x06\\xe3\\x66\\x14\\x80\\x5e\\xd6\\x18\\xa7\\xc6\\xd0\\xfd\\x33\\xa9\\x08\\x52\\x30\\x90\\x84\\x1c\\x23\\x0a\\xf0\\x98\\x46\\xd1\\x32\\xbb\\x4c\\x6b\\x60\\xe2\\x44\\x1f\\x9d\\x3c\\x49\\x87\\x14\\xf4\\x70\\xf6\\xbc\\x03\\xa8\\x0d\\x14\\xa2\\x94\\xb5\\x65\\xd1\\xd5\\xe7\\x81\\xcf\\xfc\\xb1\\x30\\x4e\\xfd\\xbb\\xc7\\xbf\\xea\\xbd\\xed\\xc8\\x57\\xac\\xc4\\x2e\\x27\\x62\\xbb\\xf9\\x7a\\xf8\\x39\\xa1\\x66\\x75\\x2d\\xa2\\x95\\x67\\x28\\x17\\xf1\\x0d\\xbd\\x47\\x2d\\x38\\x1f\\x53\\x16\\x55\\x55\\xac\\x82\\x22\\xa7\\x85\\x35\\xa8\\x68\\x05\\xf1\\xbe\\xd4\\x22\\x88\\x9f\\x20\\x61\\x09\\xaa\\x74\\x77\\x2e\\xdc\\x0b\\xb5\\x1e\\x8a\\x98\\x40\\xcf\\x62\\xc9\\x2f\\xa6\\x35\\xb9\\x0c\\xae\\x07\\x6d\\xd5\\x0e\\x5a\\xed\\x9d\\xea\\xc8\\x43\\xfa\\x8a\\x6b\\x53\\x99\\x88\\x28\\x5f\\xf1\\xad\\xab\\xe4\\xc7\\xb8\\x3d\\x9e\\x29\\xac\\x2d\\x94\\x09\\x2d\\xaa\\xfe\\xc9\\xf6\\x67\\x36\\x89\\xba\\x9e\\x92\\x52\\xd8\\x64\\xd7\\x57\\x7a\\xa8\\x95\\x05\\xd3\\x31\\xfe\\x78\\x09\\x86\\x12\\x77\\x00\\x2a\\x0b\\x44\\xa9\\x6b\\xa6\\xae\\x4a\\x52\\xb3\\x54\\x8b\\xf2\\x68\\xe7\\x77\\x78\\x0c\\x00\\x20\\x9b\\x24\\x5f\\x8b\\x14\\x17\\xee\\x5e\\x70\\x1a\\x12\\x33\\x4a\\xd5\"},\n{{0x4b,0xc7,0xda,0xab,0xc5,0x40,0x7c,0x22,0x6d,0x19,0x20,0xdb,0x4a,0xfd,0x21,0xb2,0xa5,0xb3,0xe5,0x9b,0x8e,0x92,0x46,0x05,0x3f,0x6a,0x1a,0x6a,0xfa,0x54,0xe7,0xe7,},{0xdc,0x53,0x98,0x85,0xfc,0x7b,0xee,0x00,0x2a,0xc5,0xde,0xba,0xe1,0x6b,0xdd,0xbe,0x4b,0x55,0x3f,0xa1,0x5e,0x81,0xee,0x79,0x88,0x76,0x94,0x0f,0x38,0xcf,0xc4,0xc5,},{0xa7,0xa6,0x48,0x88,0x39,0xbb,0xae,0x04,0xde,0xc9,0x2f,0x96,0xd7,0x28,0xc4,0x64,0x68,0x5d,0x7a,0x96,0xdf,0x51,0x2b,0x00,0x51,0x16,0x3d,0x22,0x53,0x8f,0x74,0x54,0x6f,0xa9,0x86,0xb1,0xb6,0x0a,0x6d,0x8c,0xc7,0x66,0xa2,0x6c,0x69,0x84,0xc9,0xcd,0x26,0x88,0x39,0x58,0x98,0xe2,0xb2,0xae,0x72,0xdc,0x6a,0x2d,0x5a,0x9f,0x75,0x0e,},\"\\x6a\\xcc\\xe9\\x98\\x43\\xb2\\x41\\xaf\\xe6\\xed\\xd5\\xd0\\xab\\x78\\xd0\\xfb\\x21\\xc8\\xc3\\x5a\\xff\\x88\\x13\\x89\\xd5\\x05\\xf2\\xf1\\xdd\\x91\\xaf\\x1e\\xb2\\xad\\x22\\x92\\x54\\x92\\x7c\\x7f\\x0e\\xcf\\xb7\\xa8\\x14\\x16\\x90\\x57\\x3a\\x65\\x5d\\x69\\x85\\x3d\\x74\\xd0\\x70\\x8b\\xf8\\xb1\\xe6\\x0a\\x03\\x96\\x30\\x28\\xa6\\x25\\xb7\\x9f\\x3d\\xfe\\xa2\\xb1\\x13\\xff\\xca\\xb4\\x6f\\x3c\\xfd\\x4a\\x62\\x1e\\x8f\\xd8\\xff\\x0a\\x96\\x81\\x43\\xb0\\xae\\x03\\xcc\\xb6\\xf4\\x2e\\x25\\xe2\\xd7\\x4d\\xbf\\x51\\x5b\\xc3\\x58\\x69\\x9b\\x63\\x50\\x09\\xb0\\x1d\\x61\\xfe\\x59\\x7f\\x1d\\xc2\\xc3\\x5a\\x7b\\xa4\\x55\\x52\\x78\\xee\\x0e\\xa4\\x56\\xc7\\xd3\\x5f\\xa8\\x75\\x7a\\x41\\x79\\x24\\xb1\\xd0\\xa8\\x35\\x1f\\x22\\x6a\\x13\\xec\\x29\\xd0\\x25\\xb4\\x26\\x96\\xec\\x1d\\x99\\x25\\xb7\\x69\\xcd\\x59\\xc8\\xe2\\xf9\\xcd\\x3c\\xe4\\xe5\\xc0\\x20\\xe0\\x51\\xe7\\xa3\\x6f\\x3f\\x97\\xc1\\xe8\\xec\\x71\\x97\\x4b\\xc1\\x6a\\xc4\\xde\\x46\\x51\\xad\\x4d\\xf2\\xe9\\xc0\\xee\\xd6\\x86\\x92\\x42\\x24\\xfe\\x6d\\xe6\\xc6\\x0d\\xd4\\xac\\xc2\\x6e\\x0a\\xab\\xd8\\x0c\\x21\\xd5\\x09\\xd9\\x59\\xb8\\x0b\\x43\\x53\\x95\\x8d\\x00\\xe4\\x4c\\x51\\x1d\\x23\\xbc\\xf4\\x45\\x52\\x60\\x8b\\xfa\\x56\\xa9\\xc5\\xae\\x79\\xde\\x62\\xbb\\x23\\xf1\\x1d\\x74\\x0f\\x48\\x24\\x0c\\x27\\xe1\\x01\\x99\\x97\\x51\\xf2\\x53\\x47\\x42\\xc0\\xa6\\x91\\x3f\\xf6\\x4b\\x68\\x3a\\x18\\x99\\x5a\\xbc\\x39\\x3f\\xeb\\x9d\\x57\\xc7\\x1f\\x49\\xa0\\x80\\x55\\x72\\x98\\xcc\\x40\\x5d\\x11\\xb7\\x98\\x8d\\x71\\x16\\x84\\x0c\\x5a\\xda\\xf5\\x3b\\xc6\\x72\\xb4\\x69\\x23\\xcc\\x45\\x7c\\x70\\x39\\x94\\x0a\\xd4\\xd5\\xbf\\x07\\x3c\\x6c\\x88\\x6b\\x13\\x39\\x52\\x59\\x26\\xd2\\x81\\xdb\\xd1\\xa7\\x97\\x39\\xb2\\xe3\\x64\\x14\\xcb\\xd3\\x21\\xb1\\x85\\xfc\\x88\\xf1\\x8d\\x2f\\x81\\xc8\\x09\\x97\\x5b\\xe9\\xa0\\x93\\x64\\x4c\\xc5\\x59\\xed\\x2a\\xe5\\xcc\\x0e\\x35\\xcb\\xdd\\x18\\x11\\xf7\\x02\\x86\\x05\\x7a\\x3f\\x70\\x30\\x67\\xed\\xdd\\xf5\\xeb\\x16\\x90\\xa7\\x42\\x7b\\xb7\\x3f\\xe3\\x02\\x4e\\xd0\\xdb\\x82\\xa5\\xce\\x8f\\x17\\x16\\x42\\x8a\\x76\\xfd\\x29\\x2b\\xa9\\x9a\\x30\\x0c\\x4b\\x2f\\x36\\x0d\\xa2\\x12\\x46\\x17\\x59\\x0b\\x10\\xe3\\xb1\\x62\\xa6\\xe6\\x7d\\xd5\\xd5\\xa5\\x9b\\xcc\\xa1\\x0f\\x61\\x0f\\xa0\\x64\\xaf\\xfd\\x55\\xf8\\x48\\x3b\\x98\\xa6\\x8d\\x07\\x6f\\x27\\x8a\\xbf\\x88\\x8a\\x08\\xa0\\x14\\xe0\\xea\\x49\\x91\\x80\\xfb\\xc7\\x98\\x40\\xce\\xed\\x13\\xcc\\x6b\\x24\\x58\\xbf\\xab\\x9b\\x0d\\xd7\\xae\\x9d\\x86\\x46\\x1f\\xe2\\x15\\xe7\\xc9\\xf6\\x3f\\x76\\x8c\\xee\\x4a\\x88\\x2d\\xf0\\xdd\\x84\\xe3\\xeb\\x4f\\x2d\\x7f\\x6b\\x18\\xfa\\x57\\xd8\\xbc\\x7d\\x9a\\xfb\\x63\\xc2\\x1a\\xc4\\x65\\xe7\\x90\\x3b\\x9b\\xfb\\x86\\x38\\xa2\\x93\\x61\\xf7\\xeb\\xfc\\x6e\\x54\\xe5\\x46\\x5a\\x6c\\xef\\x46\\x3a\\xe2\\x26\\x43\\xae\\x41\\x02\\x58\\x77\\x9c\\xa7\\x4b\\x70\\x40\\x1a\\x94\\x55\\xa4\\xd1\\x57\\xd7\\x4a\\x70\\x29\\xef\\xe6\\xb5\\x19\\xa8\\xc4\\xbe\\x69\\x67\\x56\\xe0\\x45\\xae\\x40\\x81\\xb7\\x7d\\xd6\\x03\\x1f\\x0d\\x25\\x0f\\xa7\\x61\\xe6\\x0f\\x85\\x9d\\x90\\x63\\xfc\\x10\\x5a\\xa0\\xa1\\xa7\\x45\\x0a\\xf1\\x53\\xe7\\x05\\x47\\x77\\x77\\xc4\\x42\\x58\\x6d\\xf4\\x07\\x40\\x2b\\xa2\\x38\\x75\\x2f\\xae\\xf7\\x4f\\x33\\x45\\xc2\\x6a\\x45\\x33\\xbe\\x9a\\x61\\xf5\\xfc\\x6b\\xde\\x48\\xe3\\xcb\\xa7\\x5c\\x04\\xd6\\xf7\\xb3\\x33\\xe3\\x70\\x06\\xdd\\x0c\\x94\\xfd\\x3b\\x6a\\x13\\x0b\\xd6\\xfc\\xdb\\x3c\\x6a\\xbe\\x21\\xca\\x60\\xeb\\x43\\x1c\\xc2\\xd8\\xa2\\xec\\xe7\\x16\\x9d\\x2d\\xcf\\xce\\x27\\x60\\x82\\x56\\x57\\xfd\\x4c\\x26\\xf3\\xc3\\xb8\\x30\\xac\\xdf\\xd5\\x08\\x01\\x1d\\x14\\x76\\x4b\\x3b\\xe9\\x17\\x15\\x57\\x1a\\x31\\x83\\x01\\x8e\\x0d\\x22\\x1f\\xb9\\x53\\x2b\\xb2\\xe1\\x71\\x1e\\x72\\x5a\\x27\\x3a\\xe0\\xcc\\x2f\\xac\\xcb\\xa7\\xd5\\x50\\x49\\x29\\x45\\x9c\\x99\\x25\\x17\\xb0\\x5c\\x1d\\xdd\\x03\\xaa\\xcc\\xd9\\x37\\xb8\\x6e\\xb6\\x7b\\xc8\\x20\\x2d\\x01\\xca\\xb3\\xd4\\x89\\x58\\x6e\\xea\\x1a\\xcc\\xa7\\xdc\\x20\\xcd\\x0b\\x64\\x75\\xc2\\x58\\xff\\x67\\x36\\x61\\x49\\x6a\\x22\\xea\\x96\\xb8\\x9d\\xb4\\xbf\\x3f\\xca\\xae\\x3b\\xb0\\x4f\\x67\\xdb\\x09\\x6a\\x47\\xff\\x7e\\x1e\\xe2\\x39\\x56\\x2d\\xc1\\x0d\\x40\\xf0\\x53\\x94\\x4f\\x3d\\x7b\\xcc\\x3f\\xf4\\xc0\\xff\\x76\\x56\\x54\\xba\\x5e\\xa6\\x4f\\x0e\\xa6\\x3e\\x45\\xa2\\x1d\\x9b\\x12\\x94\\x9f\\x14\\xf7\\xea\\x70\\x74\\xe9\\xb6\\x59\\xc5\\xc5\\xd4\\x48\\x16\\x84\\x2d\\xe8\\x96\\x98\\xa8\\xfc\\xca\\xce\\x43\\xeb\\x6b\\x41\\x35\\xe0\\xb3\\x33\\xac\"},\n{{0xf2,0x6a,0xf2,0x10,0xe3,0xb2,0x01,0x73,0x99,0x0c,0x77,0x45,0x92,0x2c,0xdf,0x94,0x24,0x77,0x3a,0xbb,0x37,0x4d,0x77,0x7a,0x51,0x2c,0xf5,0xb9,0x7b,0x3a,0x00,0x0d,},{0x54,0x58,0x6a,0xbf,0x04,0x11,0x76,0xe0,0x6a,0xec,0x5b,0x60,0x10,0xe1,0x90,0x91,0x6d,0xa5,0x4a,0x8c,0x4b,0xde,0x28,0x8c,0xf2,0x4d,0x8c,0x10,0x7c,0xb3,0xb7,0x30,},{0xce,0x45,0x45,0x30,0xb9,0x22,0xba,0x5e,0xa1,0x62,0xf1,0xa4,0x52,0xe0,0x5c,0x00,0x36,0x3a,0x49,0xa9,0xdb,0x8a,0x56,0x94,0x97,0xc0,0x0c,0xaf,0x1c,0xbe,0xa9,0x91,0x80,0x77,0x05,0x54,0xed,0x4e,0x31,0x40,0xdf,0xca,0x45,0x55,0x15,0x9e,0xbf,0x48,0xef,0x5d,0x2a,0x50,0xf3,0x94,0xae,0xbd,0x78,0x21,0x16,0xed,0x65,0x69,0xa4,0x09,},\"\\x88\\xe2\\x6d\\xa3\\x5c\\x54\\x88\\x4b\\x47\\x14\\x6f\\x4e\\x3f\\x01\\x4a\\xb6\\x5b\\x3d\\x71\\xaa\\x7e\\x3c\\x33\\x91\\xad\\xbe\\xb1\\x9e\\xf2\\xe7\\xb9\\x30\\x2e\\x28\\x19\\x91\\xb2\\x61\\xb6\\xa0\\x99\\x2e\\x2e\\x89\\xa4\\x9f\\x48\\x0c\\xa2\\xd8\\xe6\\x84\\xb1\\x2f\\x9b\\x15\\x09\\xb3\\x8f\\x6a\\x7a\\x98\\xa5\\xdd\\xb4\\xc2\\xd8\\x69\\xfd\\x03\\x18\\xe9\\x8e\\xcd\\x8f\\xd9\\xdf\\x49\\x1b\\xaf\\x99\\xa9\\x29\\x4d\\xe4\\x9e\\x1c\\xf8\\xdd\\x41\\xee\\x85\\x73\\x0a\\xf0\\x25\\xa7\\x01\\x14\\x3e\\x4f\\x0c\\x8e\\x3d\\x92\\xd5\\x5b\\x59\\xca\\x7d\\x4a\\x6c\\x89\\xad\\x76\\x0d\\xff\\xc0\\xc2\\x18\\x92\\x09\\x50\\x8e\\xf6\\xc2\\x21\\x4e\\xdf\\x99\\x67\\xb1\\x7d\\xef\\x12\\x3d\\x86\\x92\\xc9\\xe4\\xe2\\x0b\\x1e\\x98\\x26\\x88\\x08\\x70\\x4f\\x5f\\x9f\\xe1\\xa6\\xd6\\x05\\x5e\\x32\\xc8\\x72\\x56\\x4b\\xd1\\x7e\\xdb\\x73\\x59\\x57\\x86\\x29\\x01\\x7f\\x0c\\x30\\xfe\\xab\\x8b\\x50\\x4e\\x22\\x89\\x23\\xad\\xc7\\xe8\\x1a\\xe2\\x0a\\x85\\x2d\\xb0\\xad\\x67\\x6a\\x78\\xe0\\x81\\x33\\x6d\\x6b\\x04\\x02\\xf9\\xcd\\xc5\\xd5\\xe9\\x01\\x28\\xca\\x94\\x5d\\x10\\x51\\x5c\\xa0\\xc5\\xef\\x03\\xf7\\x31\\xb1\\xd4\\x0a\\x71\\x07\\x41\\xd4\\x1c\\x1d\\xd1\\xca\\x16\\xb1\\x06\\x0f\\xeb\\xf2\\xa0\\x53\\x2e\\x6f\\x5d\\x76\\x51\\xef\\x44\\x63\\x75\\xec\\x18\\x09\\x0c\\xb8\\x41\\x8b\\x82\\x02\\xf2\\x5a\\x03\\x89\\x03\\x1b\\x30\\x7f\\x22\\x3c\\x5b\\x5f\\x6a\\xfe\\x36\\xa9\\xad\\xc1\\x06\\x8f\\x2c\\x6e\\x0e\\xa5\\xb2\\xb6\\xcf\\xeb\\x8d\\xc0\\x04\\xf7\\xb8\\x29\\xc8\\x04\\x39\\x06\\x9b\\x81\\xa7\\xbd\\x90\\x74\\x77\\xc6\\x13\\x5e\\xf2\\x82\\xb7\\x71\\xf1\\x41\\xdb\\xe7\\x5a\\x0f\\xa0\\x56\\xe0\\x6b\\x8a\\x1a\\x1f\\x98\\xc2\\x5f\\xa5\\x4d\\x14\\xc8\\xfd\\xb4\\x2d\\x65\\x02\\x59\\x5c\\x59\\xd2\\x5b\\xac\\xf1\\xa1\\x9a\\xde\\xfc\\xc1\\x31\\x70\\xf7\\xa4\\x31\\x7b\\x6a\\xb6\\x10\\xb6\\x09\\xd4\\x14\\xb0\\x07\\x3e\\xa0\\x4a\\xc2\\x9e\\xb1\\x0e\\xe7\\x3c\\xd7\\x1a\\x4c\\xa6\\x04\\x09\\xf8\\xe7\\x60\\xe6\\x0f\\x93\\x95\\x10\\x10\\x0d\\x0c\\x8c\\xd7\\x6f\\x26\\x4b\\xb3\\x78\\x11\\xf9\\x7a\\xa5\\x29\\x9a\\xc0\\xb1\\x2d\\x41\\x68\\xff\\x38\\xec\\xdf\\xa8\\x0b\\x1e\\x5c\\x1b\\x3b\\xbd\\x4d\\x40\\xd3\\x54\\x47\\x35\\xdf\\x71\\x67\\xeb\\x15\\x8a\\x9a\\x9a\\x23\\x4d\\x44\\x5f\\x1d\\x66\\x3d\\xed\\x71\\x71\\xed\\xc6\\x8d\\x17\\x2c\\x92\\x21\\x4b\\x82\\xef\\x13\\xfe\\x6b\\x8c\\x43\\xaa\\x89\\xb7\\x39\\xb4\\x99\\x0a\\xe9\\x47\\xa3\\x4f\\x02\\x0a\\x8d\\x89\\x43\\xb0\\xf7\\xa5\\xd6\\x1d\\xfa\\x76\\xad\\xde\\x02\\x72\\xe9\\x8c\\x11\\x59\\xc0\\xfd\\x8a\\x1d\\xe3\\x3f\\x2c\\xef\\x8e\\xdd\\x32\\x85\\x7b\\x21\\x89\\xed\\x96\\x12\\x80\\x57\\xeb\\xde\\xa8\\x1f\\x7a\\x3a\\x3d\\xff\\xe1\\x89\\x3b\\x5b\\xa8\\x77\\x55\\x6c\\x90\\x38\\x3f\\xa2\\xc5\\xa6\\xfd\\x68\\x0e\\x8a\\x67\\xde\\xe4\\x80\\x2d\\x90\\xdf\\xe9\\x71\\x62\\x3a\\x7b\\xe2\\x2a\\xb3\\xca\\x56\\x06\\x7b\\x1e\\x5c\\x69\\x4a\\xa8\\x4c\\x19\\xf1\\x6d\\x69\\xe2\\x84\\xdd\\xfa\\x03\\x9c\\x10\\x8d\\x04\\x35\\x81\\x38\\x12\\x39\\x0d\\x8e\\xbc\\x1e\\x50\\x13\\x81\\x76\\xf2\\x59\\xdc\\x0f\\x26\\xbc\\xa1\\x3b\\xc9\\x43\\xf5\\x0d\\x5a\\x35\\x00\\xb1\\x8d\\x59\\x35\\x74\\xc6\\x20\\xfc\\x09\\x7a\\xce\\x43\\x0f\\xb8\\x07\\x28\\xd3\\xa1\\xaa\\x64\\x4e\\x50\\x4b\\x10\\x09\\xad\\x67\\x53\\x6c\\xeb\\x01\\x1f\\x2a\\x35\\x7d\\xbd\\x00\\x9e\\x4a\\x63\\xf5\\x24\\xd5\\xb5\\x95\\x7f\\x33\\x15\\x67\\xc5\\xb4\\xd1\\x85\\xa6\\x1d\\xf2\\x2d\\x70\\x71\\xd3\\x1a\\xe9\\x21\\x41\\xe1\\x99\\xc1\\x22\\x89\\x51\\x5a\\xed\\x80\\xc9\\x10\\x21\\x45\\x6b\\xcd\\x45\\xcc\\xc6\\x34\\x03\\x7d\\xcf\\x69\\xb4\\x1d\\x6b\\x1f\\xf5\\x34\\x71\\x01\\x0d\\x99\\xf1\\x87\\xf0\\x46\\x54\\xf4\\x36\\x22\\x28\\x78\\x71\\xfe\\xe6\\xdc\\xf5\\xf3\\x02\\x3c\\xbd\\x09\\x13\\xd9\\x9a\\xff\\x43\\xfa\\x95\\xb3\\x2e\\xa2\\xb1\\x33\\xb4\\xc9\\xac\\x4b\\x01\\x7b\\x7c\\xf8\\xf9\\xbe\\x50\\x86\\xfe\\x92\\xb4\\x2c\\xb8\\xdb\\xed\\x5b\\x63\\x0b\\xf0\\x97\\xc1\\x8e\\x2e\\x55\\xc3\\xdd\\x93\\x27\\x1e\\x09\\xc2\\xd1\\xcc\\x6a\\xf8\\x7d\\x83\\xfd\\xef\\x3c\\x3e\\x3c\\x4c\\xba\\xfb\\xea\\x9b\\x60\\xfd\\x5e\\x9c\\xf0\\x01\\x1d\\xe2\\xe9\\xe2\\x6f\\xbf\\x09\\xaf\\xee\\xf5\\xc6\\x98\\x02\\xa6\\xc4\\x6b\\xdf\\x54\\xc1\\x45\\x86\\x29\\x44\\x17\\x3e\\x01\\x7e\\x30\\x14\\x9e\\xa5\\xc0\\x3c\\x7a\\xef\\xa2\\x8a\\x9c\\xac\\x77\\x67\\x00\\x2e\\xa3\\xfe\\xfb\\xde\\xae\\x5b\\xae\\x00\\x5c\\x37\\x0d\\xbc\\x06\\x42\\x44\\xd5\\xb9\\xbe\\x55\\x00\\xa3\\x57\\x26\\xa9\\x9b\\xc9\\xe8\\xc2\\x75\\x2d\\x51\\x0e\\x13\\x9a\\xf2\\x25\\x58\\x00\\x98\\xc8\\x18\\x9a\\xa9\\xc5\\x20\"},\n{{0x39,0xbf,0xfe,0x00,0x7f,0x8d,0xf7,0xce,0x4e,0x56,0xfd,0x17,0x6b,0x10,0x2b,0x92,0x3b,0xa4,0x8a,0xeb,0x82,0x69,0xfd,0x0c,0xd5,0x20,0xc2,0x3a,0x7b,0x23,0x6e,0x6c,},{0x95,0x32,0x63,0x68,0x00,0x01,0x0b,0x3d,0xd4,0x01,0x2e,0x34,0x1f,0xca,0xd6,0xd2,0x9a,0xfa,0xd4,0x84,0xe6,0xfd,0x73,0x6e,0x89,0xd5,0xbc,0x02,0xba,0x0a,0xc8,0x53,},{0xa2,0x7c,0xca,0x4b,0x9f,0x5b,0x95,0xad,0x0e,0x44,0xe4,0x74,0x0c,0x15,0xde,0xae,0xb9,0x3f,0x22,0xa9,0xb2,0x54,0xeb,0xbd,0x23,0x29,0x36,0x5a,0x00,0x96,0x6c,0x9f,0x4e,0xc1,0xe5,0x5c,0x58,0x94,0xe7,0xbf,0xc2,0x3d,0x39,0x8d,0x39,0x70,0xb9,0x46,0x5e,0x98,0xa8,0xd2,0x3e,0x72,0xda,0xe8,0xe3,0x50,0xda,0x35,0x31,0xae,0x69,0x08,},\"\\x7a\\x8c\\x20\\xbf\\x2e\\xff\\x69\\xaf\\x8b\\xad\\x6b\\xdf\\xab\\xc7\\x90\\x9c\\x58\\xce\\x74\\x6c\\xc4\\xdf\\x78\\xb6\\x9b\\x33\\xc1\\x05\\xba\\x3b\\xd8\\xda\\x75\\x24\\x47\\x58\\xb5\\x17\\x2d\\x5c\\x45\\x01\\xbc\\x39\\x97\\x01\\x85\\xee\\x3d\\x43\\x70\\x83\\xa9\\x95\\x9f\\x81\\xe7\\x66\\x5b\\x82\\x9a\\x69\\xa5\\xd7\\x2e\\x03\\x4d\\x35\\x1a\\xdd\\xdc\\xeb\\x3d\\x3f\\xff\\x58\\x99\\x88\\xdf\\x18\\x2b\\x46\\xfa\\x53\\xd2\\x6e\\x7c\\x9e\\xac\\x06\\x22\\x15\\x78\\x8f\\x23\\x37\\xbf\\x90\\xf0\\x17\\x7d\\x8c\\xa7\\x44\\xf9\\x5f\\x28\\xfe\\xa8\\x54\\x59\\x3c\\x43\\x62\\xc8\\x2e\\x9d\\xed\\x19\\xb9\\x04\\xff\\x99\\xd2\\xbe\\xa8\\x24\\x32\\x82\\x2e\\x52\\xc3\\xda\\x6d\\x46\\x2d\\xa7\\x54\\xff\\x1f\\x8b\\xd1\\x09\\x94\\x2d\\xf5\\x1d\\xba\\x25\\xb7\\xcd\\xe8\\x38\\xd5\\xf5\\x24\\x23\\x9f\\x13\\x31\\xf4\\x63\\x19\\x4e\\x10\\xff\\x56\\x79\\x5b\\x29\\x68\\x78\\xfe\\xb1\\xf5\\x5d\\x43\\xec\\x7d\\xaf\\x0c\\xa5\\xab\\x3d\\x68\\x4b\\x55\\xbb\\x0a\\xa4\\xc7\\x20\\xd4\\xb5\\xc2\\xe8\\x30\\xc8\\x58\\x69\\x4d\\x3d\\x0f\\xdb\\xaa\\xd0\\xbf\\x67\\xd8\\x73\\x18\\x2d\\x95\\xb2\\x41\\x2f\\xce\\x5e\\x7b\\x00\\xfa\\x6b\\xfc\\x38\\xb1\\x32\\xef\\xb9\\x6f\\x87\\xbc\\x6c\\x10\\x07\\x0a\\x57\\x16\\xec\\x9b\\x33\\xa2\\x69\\x2c\\xdf\\x5b\\xc4\\x1c\\x7f\\x73\\x7e\\x28\\xc4\\x22\\x03\\x17\\xa4\\x89\\xb7\\x32\\x3d\\x5e\\x20\\xf6\\x5d\\x37\\x5d\\x76\\x9f\\x9e\\x79\\x37\\x6f\\xd0\\x2d\\x85\\x36\\x86\\x71\\xe7\\xe0\\x81\\xeb\\x75\\x3f\\x88\\x85\\x45\\xeb\\xe5\\xc0\\x00\\xb2\\xf8\\x01\\x43\\xeb\\x35\\x8d\\x43\\x18\\x5e\\x2f\\x1c\\x29\\x4b\\x9f\\x29\\xc8\\xbb\\x91\\x48\\x2d\\x43\\x87\\x49\\x4a\\xad\\x17\\x6d\\xeb\\x85\\x54\\x0f\\xd0\\x05\\xc9\\x7d\\x13\\xe6\\x66\\x3f\\x09\\x94\\x4e\\xb4\\x3a\\x46\\xe6\\x23\\x67\\x94\\xbf\\x6e\\x21\\xf8\\x1d\\x0a\\x42\\x09\\x0f\\x9c\\xce\\xf9\\x0a\\x6c\\x48\\x07\\xb5\\xff\\x54\\x13\\x00\\xe5\\x93\\x48\\x81\\xa8\\xd9\\x21\\x96\\xb4\\xce\\xe8\\x5d\\x28\\x09\\x2a\\x82\\x8e\\xa3\\xbf\\xc6\\xb7\\x45\\xad\\x21\\x9b\\xe9\\xf5\\xe9\\x57\\x41\\x17\\xd0\\x79\\xe0\\x2f\\x4b\\x74\\x8e\\x2c\\xc0\\x1a\\x32\\x82\\x6a\\x37\\x08\\x23\\x19\\x14\\xd2\\x77\\x2c\\x76\\x41\\x19\\xfd\\x99\\xd5\\x3a\\xb5\\xb5\\xa2\\xe9\\xd8\\x91\\xa4\\x8a\\x9a\\xaa\\xac\\xc2\\x63\\x38\\xb1\\x82\\x48\\xdb\\x8a\\xb2\\xd5\\x25\\xda\\xf1\\x5f\\xf5\\x3a\\xcb\\xc3\\xaa\\x98\\xd4\\xf2\\xd4\\xa3\\x37\\xbb\\xaf\\x6d\\x1b\\xe2\\x19\\x85\\xa4\\xaf\\x60\\x0e\\x29\\xbb\\xb4\\x2c\\x8d\\x89\\xe6\\xb3\\x89\\xc6\\x6f\\x42\\x27\\x0c\\x3a\\x0b\\x05\\x1b\\xdb\\x62\\x38\\x81\\xe0\\x2f\\x2f\\x42\\x94\\xce\\xc3\\x47\\x63\\x86\\x74\\x7a\\xba\\xe6\\xc7\\x70\\x0b\\x8f\\x9b\\x03\\x87\\xcd\\xdf\\xb7\\x36\\x68\\xfb\\x57\\x69\\x3d\\x84\\x74\\x19\\x6b\\x33\\xab\\xd1\\x2d\\xce\\x59\\xa5\\x7c\\xf7\\x2e\\xe6\\xcc\\x1d\\xdb\\xaa\\xdf\\xb1\\x9e\\x90\\xaf\\x81\\x31\\xb3\\xa9\\x0f\\x98\\x67\\xf4\\xc7\\xe1\\x5b\\xdf\\x9e\\x21\\x84\\x77\\x01\\x6b\\xd0\\xad\\x3b\\xe8\\xdd\\x05\\x96\\x71\\xff\\x65\\x6c\\xbd\\x4e\\xd8\\x98\\x08\\x6d\\xe4\\xd4\\x23\\xf3\\xdf\\xb2\\x70\\xbb\\xf1\\x9d\\x9f\\x53\\xf7\\xf6\\xf2\\xd2\\x2c\\x6a\\xc9\\x02\\x5c\\xba\\xdb\\xa4\\x42\\xe3\\x1d\\x98\\x11\\xe3\\x7e\\x84\\x7d\\xbd\\x48\\x4d\\x80\\xcf\\x74\\x30\\x39\\xff\\xa7\\x04\\x84\\x70\\xfb\\xdc\\x60\\x80\\xf6\\xd3\\x81\\xdc\\x7e\\x3f\\xa2\\x71\\x22\\xdf\\x53\\xcc\\x06\\x39\\x4e\\xa6\\xfc\\x44\\x6e\\x1b\\xa7\\x25\\x38\\x73\\x3e\\xd3\\xab\\xb6\\x85\\xf1\\x6d\\xfd\\x5c\\xcf\\x58\\x5a\\xe8\\xfb\\xf9\\x95\\x4b\\x50\\xf1\\x0b\\x7e\\x54\\x32\\xa2\\x2b\\x36\\x94\\x06\\xa9\\xb7\\x08\\x89\\x61\\xf0\\xae\\x20\\x74\\x95\\xae\\x71\\x85\\x39\\x6d\\xcc\\xf2\\x92\\xdc\\x46\\x3f\\x41\\xf3\\x76\\xa1\\xca\\x89\\xee\\xfb\\xae\\x19\\x26\\x91\\x52\\x03\\x1b\\xfd\\x81\\x52\\x88\\xe8\\xb5\\xba\\xf3\\x48\\xc4\\xf8\\xff\\x3d\\xff\\x4f\\xd6\\xd1\\x08\\xf8\\x71\\xda\\xa3\\x52\\x11\\x0f\\xa6\\x41\\x88\\xb0\\x1b\\x85\\x26\\xa8\\x45\\xaa\\xed\\x13\\x3e\\x45\\x6b\\x4c\\x83\\xc4\\xfd\\x4b\\xbb\\x16\\x5b\\x40\\x90\\x30\\x7e\\x8e\\xb1\\x7d\\xf1\\x76\\xc3\\x22\\x52\\x0f\\x37\\x59\\x9c\\x21\\x05\\xaa\\x81\\x20\\x75\\x83\\x94\\xa4\\x22\\x24\\x73\\x47\\x67\\x64\\xcf\\x0a\\xf7\\xc5\\x51\\x83\\xeb\\xa9\\x68\\x3d\\x72\\x70\\x63\\x14\\x43\\xf3\\xc5\\x1f\\xb8\\xab\\x0c\\x13\\x0a\\xc4\\x36\\xab\\x60\\x3f\\xf4\\xf1\\xd8\\x65\\x6c\\xdb\\xed\\x22\\x9a\\x20\\x2b\\x40\\x00\\x8e\\xa1\\x0b\\x17\\x15\\x42\\xf7\\x4a\\x70\\xb7\\xbb\\xac\\xc4\\x01\\x6b\\x7f\\x63\\x6a\\xa8\\x96\\x33\\xb7\\x66\\x80\\x58\\xf1\\x33\\x12\\xf5\\x7c\\x51\\x62\\xd1\\x8e\\x39\\x9e\"},\n{{0x3c,0x40,0x80,0xcd,0xa0,0xfc,0x3c,0x03,0xb6,0x14,0xd9,0x80,0xf2,0xff,0x83,0x1f,0x5b,0xe0,0xe7,0xa9,0x81,0xd5,0x38,0x1a,0x16,0x18,0xe0,0xb8,0xfd,0x00,0x17,0x76,},{0xf1,0xc3,0x26,0x9d,0x87,0x04,0x02,0xca,0xa4,0x38,0x82,0x13,0x5d,0x9d,0xba,0xdb,0xbb,0x16,0x2d,0xfc,0xa0,0xb3,0xda,0xd1,0x97,0xe6,0xb8,0xa7,0xee,0x67,0x9a,0x70,},{0xc9,0xd4,0xa4,0x72,0x8b,0x8f,0xdd,0x24,0x0d,0x9c,0x49,0x8a,0xa3,0x5d,0xe9,0x5a,0x4b,0xbd,0x51,0x78,0x5b,0x73,0xc8,0x40,0x3f,0xdf,0x04,0x0d,0xfa,0xed,0x94,0x47,0xef,0xad,0x00,0x69,0xb6,0x7c,0x78,0x3d,0x4b,0x81,0xd9,0x66,0xbe,0xf6,0xe3,0xd9,0xa8,0x08,0xa0,0x58,0x4b,0x98,0xec,0x2b,0x18,0x32,0x2c,0x4c,0x92,0x0e,0xb0,0x0a,},\"\\x0c\\xee\\xbc\\x0e\\x8a\\x47\\x72\\x0f\\x25\\x83\\x5e\\x2b\\x9a\\xcf\\x89\\x1b\\xcc\\xa4\\xbd\\xa3\\x86\\x37\\xf3\\x63\\x27\\x44\\x58\\xba\\xa9\\xe2\\xbb\\xaf\\xed\\xd0\\x93\\x8f\\x56\\x88\\x73\\x4e\\x22\\xac\\x50\\xfb\\x12\\x0f\\x66\\x5f\\x6c\\x4c\\x61\\xc6\\x53\\x17\\x39\\xb9\\x29\\xac\\x83\\xcd\\x77\\xf8\\x96\\x3b\\x75\\x44\\x88\\xb9\\xb8\\x59\\xc1\\x38\\x53\\x63\\x7c\\xf0\\x25\\xc1\\x4e\\x8f\\xdd\\x11\\x8f\\xaa\\x14\\xcf\\x39\\x30\\xce\\xb3\\x5f\\x10\\x4d\\x95\\x44\\x1e\\x56\\x48\\x94\\x40\\xf6\\x20\\x41\\xef\\x1a\\xa7\\xc4\\xb0\\x8b\\x28\\x07\\xe3\\x2b\\xb9\\x58\\x4b\\x90\\x04\\xd7\\x6e\\x76\\x53\\x33\\x48\\x50\\x6d\\x64\\xf1\\x12\\xe1\\xff\\x6f\\x93\\x8f\\x64\\x22\\x30\\xbf\\x38\\xaf\\x01\\x0e\\x41\\x98\\x72\\x70\\x24\\x8b\\x13\\x63\\x5a\\x35\\x67\\xb3\\x55\\xbb\\xa5\\xb5\\x74\\x48\\xc6\\xd1\\x3b\\x74\\xf3\\xbe\\xbf\\x61\\x79\\x15\\x82\\x10\\x28\\xfc\\xa5\\xde\\xfa\\x4c\\xe5\\x42\\x4c\\xa1\\x91\\xcd\\x54\\xa2\\x29\\x44\\xa3\\xd9\\x40\\xe4\\xee\\x2e\\x2b\\xa5\\xd5\\x04\\xc8\\x5f\\x95\\x9b\\x51\\x4c\\x4f\\xab\\x41\\xcc\\xb5\\x74\\x3d\\x9c\\xb2\\xf9\\xbf\\x33\\xd1\\xd8\\xc2\\xa5\\x86\\x9e\\x9f\\x46\\x60\\xc3\\xfb\\x22\\x4b\\x39\\x14\\x1e\\x31\\x10\\xc9\\xee\\x8a\\xeb\\x87\\x1e\\x14\\xc6\\x2c\\x6b\\xe3\\x8f\\xb9\\xa4\\x56\\x8d\\x73\\x68\\x10\\xbb\\x9d\\x20\\x73\\x17\\x8b\\x6c\\x7e\\x87\\xe3\\x58\\x2e\\xfc\\x62\\xb5\\x3c\\x23\\xc5\\xd4\\x65\\x20\\xba\\x33\\xff\\xb3\\xa9\\xca\\x64\\x9e\\xf2\\x6f\\xe7\\x4a\\x3c\\xff\\x61\\x88\\x42\\x73\\x26\\xb8\\xc9\\x6f\\x74\\x35\\x4c\\xb3\\xec\\xaa\\x61\\x1b\\x12\\xcd\\xed\\x56\\x5e\\x59\\xfe\\x1f\\x8f\\x40\\x00\\x97\\xe9\\x3e\\xa8\\x59\\x51\\xb5\\xb4\\xe9\\x00\\x9e\\xea\\x7d\\xb9\\x37\\xe4\\x34\\x9c\\x4e\\x5e\\x00\\xc4\\x45\\x6c\\x6c\\x5f\\x4e\\x57\\x41\\x1b\\xaf\\x4e\\x46\\xe7\\x00\\xac\\x40\\x02\\x57\\x76\\x5f\\x48\\xda\\xb0\\x3e\\x43\\x9f\\x76\\xc1\\x49\\x9b\\x51\\x08\\x04\\x7c\\x83\\x01\\x09\\xdc\\xe7\\xf7\\x40\\xd1\\x39\\x37\\x87\\xe2\\x9d\\x37\\x16\\xd3\\xc4\\x7e\\x75\\x5c\\xb8\\x28\\xe7\\xd4\\x40\\xa9\\x71\\x97\\x51\\x97\\xeb\\xdb\\x3f\\x9b\\x73\\x7b\\xa1\\x1f\\x7f\\xd0\\x38\\x6a\\x95\\x92\\x49\\x01\\x7d\\xe7\\x23\\x4d\\x5e\\x5a\\x9b\\x47\\x3b\\xb9\\x58\\x3a\\x37\\x42\\xc7\\x74\\xee\\x55\\x2a\\x12\\xa1\\xf3\\x6e\\xb3\\xf2\\x6c\\x88\\x5b\\xed\\x22\\xe9\\x1c\\x74\\xcf\\x32\\xa8\\xdd\\x3e\\xdb\\x08\\xb6\\x74\\xbf\\x38\\x6e\\xf4\\x27\\x72\\x79\\x12\\xd5\\x7c\\x5f\\xaf\\xaa\\x1c\\xfe\\xb7\\x40\\xcd\\x52\\xb9\\xde\\xe9\\x95\\xe3\\xd0\\x16\\x1c\\xd9\\x21\\x3f\\x38\\xfd\\x68\\x1d\\x53\\x8a\\xb8\\xbf\\x97\\xb7\\x45\\xf5\\x49\\x80\\x03\\x0e\\xf8\\xb7\\x26\\x96\\xd4\\xe2\\x74\\x73\\xfb\\x0f\\x1a\\xcd\\x5d\\x0a\\xae\\x02\\x97\\x21\\x16\\x80\\xea\\x0f\\xc5\\x9d\\x7b\\x6d\\x51\\xc6\\x32\\x92\\x58\\x5a\\x1d\\x55\\x3d\\x0c\\x89\\x54\\xb4\\x2a\\x4b\\xd6\\xfc\\xd3\\xa4\\x95\\x75\\xbf\\x5c\\x88\\x95\\x3f\\x1f\\x4e\\xa7\\xfe\\x0e\\xd7\\xa5\\x79\\xd1\\x69\\x7e\\x64\\x5e\\x2a\\x61\\xc6\\x9d\\x1a\\x56\\xbc\\x60\\x5b\\xb0\\x40\\x60\\xa2\\x77\\x8d\\x50\\x9a\\x8a\\xad\\xbf\\x35\\xd9\\x46\\x97\\xcc\\xee\\x9d\\x35\\x43\\xdd\\x01\\x28\\x1a\\x03\\x1f\\x2a\\x0e\\xb3\\xa9\\xeb\\x13\\xae\\x56\\xff\\x44\\xfa\\x0a\\xed\\x4f\\x34\\x88\\x74\\x7d\\x6a\\xf8\\x20\\xf3\\x98\\x9b\\x71\\x33\\xf4\\x49\\xea\\x56\\xd3\\xa7\\xf7\\x31\\xe7\\x91\\xb7\\xed\\x2a\\x5d\\xb9\\x39\\xbb\\x75\\x35\\x2d\\xe7\\xda\\xec\\x50\\x66\\xfd\\x57\\x55\\x71\\x65\\xad\\xff\\xa6\\x31\\xcd\\x3f\\x96\\x7c\\x3c\\x7c\\xfc\\x11\\xcc\\x1f\\x14\\xfa\\x23\\xde\\xfe\\xc3\\xeb\\x02\\x39\\xb4\\x5e\\xd6\\x01\\xa3\\xa8\\x07\\x8c\\xcf\\xc7\\xf8\\x38\\x09\\x02\\xa8\\x59\\xee\\x9c\\xe2\\xdb\\x79\\x5e\\xfa\\xca\\x0a\\x01\\xdc\\x08\\x79\\xd5\\x06\\xac\\x97\\xd1\\x07\\x04\\xd7\\x75\\x7b\\x3c\\xcf\\x3b\\x37\\xc3\\x39\\xb4\\x2d\\xb2\\x37\\x82\\x27\\x80\\x23\\xe4\\xc2\\xe7\\x7d\\x74\\x24\\x6c\\x9e\\x54\\x41\\x49\\xa5\\x5c\\x0c\\x92\\x0e\\xbf\\x29\\x86\\xb4\\xc5\\xb4\\xb3\\x57\\x2f\\x74\\x8c\\x4b\\x15\\xc7\\xf8\\x63\\x99\\x9b\\xc5\\x13\\x2a\\xda\\xd0\\x97\\x61\\xeb\\x76\\x50\\x50\\x19\\x76\\x9f\\xb5\\x54\\x22\\xf6\\x03\\x18\\x4e\\x24\\xc0\\xd4\\xf3\\x76\\x19\\x87\\xb5\\xc5\\x0f\\xea\\xfc\\xce\\x53\\x30\\x2a\\x3a\\x41\\x5e\\x20\\xf5\\x6a\\x05\\x48\\x03\\xe5\\x53\\xba\\xcd\\x24\\x2a\\x5e\\x13\\x64\\xaa\\x3b\\x2d\\x7c\\xb3\\xbc\\x1e\\x1b\\x86\\xa4\\x74\\x31\\xcb\\xd3\\x96\\x95\\xb6\\x7f\\x55\\x4c\\x46\\x45\\xb7\\x23\\x69\\x04\\x09\\x4c\\x11\\xaa\\x1b\\x40\\x32\\x6b\\xa9\\x1b\\x8b\\xf4\\x87\\x3e\\x9a\\x4d\\xe0\\x4e\\x2b\\xf4\\x62\\x59\\x72\"},\n{{0x45,0x43,0x8f,0x91,0x46,0x5d,0x74,0xa2,0x82,0x5b,0x0f,0x66,0xa3,0x5b,0xd7,0xc8,0xd0,0x05,0x86,0x54,0x79,0xb3,0xdc,0x10,0xa9,0xb5,0x6f,0x29,0x7d,0x31,0xb9,0x26,},{0xf0,0x92,0xb5,0x88,0x03,0x30,0x87,0x1e,0x5a,0xaf,0xdd,0x3c,0xeb,0x38,0x50,0xee,0x7e,0x09,0x41,0xa2,0xa1,0xdc,0x89,0xf4,0xfb,0x47,0x71,0xd7,0x5a,0x22,0xf6,0xf2,},{0xd9,0x28,0x7b,0x7f,0xec,0x01,0x7f,0x2e,0xa4,0x0a,0x14,0xa1,0xf6,0x2d,0xca,0x78,0xb0,0x2a,0x3d,0x66,0x32,0xdf,0x7c,0x60,0xeb,0xd9,0x0f,0xc5,0xe4,0x92,0xc5,0xc6,0x2c,0x43,0x16,0x6b,0xf8,0x56,0x58,0xfb,0x30,0xa0,0x8b,0x57,0xa5,0x81,0x31,0x21,0xb8,0x03,0x97,0x57,0x1a,0x31,0x2b,0x6d,0xd1,0x1b,0x65,0x39,0x20,0x54,0x16,0x02,},\"\\x30\\x71\\xd4\\xb7\\x20\\xdf\\x10\\x93\\x65\\x99\\x67\\xcd\\x4e\\xef\\xef\\x2e\\xf9\\x67\\x84\\x75\\xf7\\xde\\xc5\\x8f\\xec\\xec\\x1d\\x92\\x8d\\xea\\xf8\\x02\\x45\\x7a\\x19\\x34\\xe6\\x04\\x55\\xf4\\x96\\xcf\\x42\\x51\\x82\\x0e\\xd6\\x0a\\x3d\\x81\\x33\\xb6\\x24\\xd3\\x3a\\xf2\\x6a\\x26\\x27\\x84\\xb5\\xa2\\xfb\\xa7\\x3c\\xca\\x2a\\xa5\\xe5\\x19\\xe1\\xf5\\x39\\x58\\x47\\x80\\x64\\x98\\x64\\xba\\x5f\\xbc\\x1f\\x01\\x1d\\xdd\\xac\\x38\\x1f\\x8d\\x48\\xd0\\xd6\\x0c\\xe8\\x23\\x17\\x01\\x17\\x3c\\x9d\\x2a\\x30\\x7a\\x76\\x30\\x2e\\xbc\\x69\\xdc\\xbc\\x93\\x0d\\x28\\x43\\x14\\x75\\xb5\\x16\\xf9\\x8f\\x77\\x8e\\xd2\\xe1\\xff\\xf2\\x72\\x90\\x9a\\x27\\x2c\\xc3\\xfb\\xb6\\xb3\\x1c\\x80\\x41\\xa3\\x7c\\xb7\\x77\\xe0\\x62\\xe4\\x96\\x49\\xaf\\xad\\x12\\xc1\\xb5\\xf7\\xfc\\xb8\\x06\\x5a\\x99\\xe7\\x42\\x33\\x62\\xad\\x16\\x90\\x60\\x31\\x26\\x5d\\xb7\\xe8\\xb8\\x97\\x51\\xf8\\xa4\\xa4\\x07\\xf2\\x50\\x26\\x50\\xfe\\xd7\\x53\\xe4\\x2c\\x8c\\x91\\x1e\\x50\\xb9\\x4b\\x38\\x00\\x69\\x5b\\x0e\\xba\\x7d\\xff\\x06\\xb7\\xa7\\x10\\x11\\x7e\\x49\\x20\\xd4\\xb1\\xc6\\x05\\xa3\\xeb\\xf3\\x2e\\x06\\x96\\x67\\x16\\xed\\xa1\\x4b\\x30\\x42\\x99\\x8a\\x3c\\x7a\\x5e\\x9f\\x83\\x54\\x2d\\x7d\\xde\\x65\\xe5\\x28\\xbe\\xd6\\x10\\x1d\\xeb\\x33\\x1d\\xeb\\x94\\xcd\\xd4\\x60\\x44\\xbe\\xf8\\x8c\\x09\\x7b\\xaf\\xd4\\x0d\\x69\\x21\\xa7\\xc4\\x84\\xc8\\xf9\\x66\\x84\\xdc\\x37\\x16\\x71\\xd9\\x4e\\xee\\x7c\\xbe\\x5d\\x58\\x77\\x15\\x31\\x4c\\xff\\x0d\\x18\\x77\\x27\\x2d\\x81\\x90\\xa9\\x0e\\x18\\xbf\\xb3\\x21\\xd5\\x2b\\xf7\\x47\\x05\\x13\\x7b\\x2a\\xbf\\x91\\x65\\x73\\x17\\x67\\xa1\\x3a\\xdc\\x9c\\x85\\xe0\\x39\\x7b\\x47\\xae\\xf9\\x6b\\xad\\xb2\\xca\\x7f\\xcb\\x82\\x93\\xb0\\x1f\\xd1\\xde\\x31\\x6e\\xe1\\xe6\\x5f\\x35\\x6b\\x9d\\x6e\\x8e\\xa1\\xfd\\xd8\\x37\\xbd\\x96\\x08\\x11\\x49\\xea\\x2d\\xcd\\x73\\xc4\\x88\\x1f\\x32\\xb7\\xde\\xeb\\xc3\\x71\\x5e\\x2d\\x7c\\xdb\\x64\\x3e\\x0d\\x98\\xf4\\xe8\\x46\\x50\\x8b\\x04\\xb3\\x24\\x39\\xff\\x14\\xb1\\x16\\x4f\\x46\\x84\\x6d\\xf9\\xaf\\xae\\x44\\x46\\x4c\\xf5\\x50\\x10\\x4c\\xd3\\xaa\\xb3\\x81\\x75\\x40\\x47\\x0a\\xaa\\x2a\\xb9\\x55\\x9a\\x68\\xb7\\xff\\x6b\\x1b\\x9c\\x0c\\xe9\\xf5\\x86\\x9c\\xbd\\xcd\\xd6\\x17\\x09\\x09\\x42\\xe3\\x53\\xb4\\xc7\\x7f\\x09\\x39\\x58\\x96\\xbe\\xcd\\xdf\\xf1\\xab\\x7f\\x07\\x58\\x6a\\x51\\x4d\\x81\\xfb\\x09\\x63\\x61\\x55\\x75\\x66\\x87\\x0f\\x16\\x91\\x98\\x34\\x85\\xa8\\x0c\\x34\\x13\\xda\\x98\\xb8\\xd1\\x9c\\x78\\xe6\\x37\\x9f\\x94\\x3e\\x5b\\xd5\\xa5\\x69\\x7a\\xa3\\x3c\\x5e\\x6b\\xfc\\xfb\\x7b\\x8d\\xf1\\xe1\\x57\\x4e\\xe4\\x16\\xfa\\xb3\\xc8\\xa7\\xd0\\x88\\xb3\\xa0\\x57\\xcf\\x86\\x53\\x21\\xb7\\x4e\\x61\\x03\\x52\\x6d\\xd9\\xad\\x15\\xca\\x5a\\xd3\\xc0\\xf6\\x97\\x18\\xe2\\x70\\x81\\xd4\\xb3\\x4a\\x7c\\x6d\\x1a\\xab\\x6b\\x96\\xc0\\xa7\\x54\\xb9\\x89\\xb4\\x94\\x06\\x38\\xc9\\xed\\xe3\\xd1\\x7b\\xd4\\x9f\\x65\\xbf\\x78\\x3d\\xc8\\x5f\\x1c\\x4b\\x14\\x48\\x76\\xcd\\xbd\\xb2\\x28\\x2a\\x95\\x64\\xaa\\x81\\xb5\\x70\\x92\\x08\\x0d\\x64\\x48\\xfb\\x65\\x80\\xec\\xf0\\x9f\\x82\\xa7\\x55\\x01\\x0d\\x55\\xd4\\xa5\\xe4\\xf3\\x05\\xe2\\x59\\xdb\\xe9\\x95\\x08\\xb4\\x79\\x25\\x0d\\x80\\xec\\x17\\xc8\\x76\\x0a\\x93\\xe0\\x5a\\x29\\x57\\x1f\\x68\\x56\\x07\\x30\\x22\\xc8\\x70\\x69\\x13\\xc4\\x6a\\x2e\\xfd\\x2e\\x9c\\xaa\\xe4\\xff\\xa1\\xb4\\x22\\x2e\\x3d\\x70\\xe9\\x79\\xe8\\x1a\\x71\\x95\\x1d\\x7c\\xb8\\x30\\xbc\\xbc\\xf9\\x01\\xaf\\x24\\x4f\\x64\\xe4\\xad\\x9f\\x52\\xfa\\x3b\\x62\\x03\\x1e\\x35\\x16\\xda\\x50\\xbc\\x2b\\xce\\x78\\xeb\\x9d\\x61\\xbf\\xed\\xd9\\xb3\\xf5\\x7e\\x89\\x35\\x5f\\x17\\x7d\\xb6\\x16\\x2b\\xf6\\x1d\\xa0\\xe4\\x54\\xc3\\x42\\x88\\xb9\\x67\\xc3\\xfb\\x4c\\x34\\x1b\\x32\\xd4\\xd1\\x3a\\x31\\x98\\x69\\xb8\\xe3\\x60\\x46\\xf9\\xe3\\x38\\xb5\\xf3\\x6a\\x1f\\xc1\\xa7\\xed\\xa7\\xd7\\xb0\\xd4\\x38\\xe0\\xa7\\x5d\\x84\\xbb\\xe4\\xd6\\x8c\\x87\\x9a\\xda\\x80\\xdd\\xe2\\x3f\\x71\\x55\\xb5\\x32\\xcc\\xcf\\x7a\\x63\\xf1\\xbe\\xdf\\x84\\xf8\\x2f\\x44\\x0c\\x9e\\xc3\\xcb\\x0e\\x45\\xf3\\x2c\\x92\\xf7\\x64\\x38\\xf5\\xb4\\xb9\\x10\\x44\\x1e\\x67\\x38\\xaf\\x3f\\x5d\\x20\\x50\\xd5\\x79\\xee\\x96\\xb8\\x8f\\x3b\\x00\\x81\\x0a\\xb1\\x26\\xff\\x3a\\x8f\\xef\\xd9\\x71\\x04\\x43\\x24\\xdd\\x4e\\xb3\\x44\\x7d\\xac\\x5b\\x77\\x80\\x9c\\xda\\x8c\\x71\\x68\\x25\\x49\\xd7\\xcf\\x2d\\xce\\xe3\\x40\\xed\\xcf\\x94\\x94\\xac\\xa4\\x29\\x01\\xe2\\xc1\\x1e\\xd9\\x77\\x90\\xaf\\x48\\xbc\\xea\\x29\\x52\\x1e\\xf0\\xe3\\xd0\\x3c\\xda\\xde\\xcd\\xc8\\x94\\xdd\\x07\\x56\"},\n{{0x72,0xcf,0xce,0xf4,0xc9,0xd6,0xa1,0x98,0x6d,0x19,0x03,0x11,0x84,0x0e,0x55,0xcb,0xaf,0xac,0xc8,0xa6,0xeb,0x5e,0xcc,0x72,0x93,0x4f,0xda,0x53,0x5b,0xdc,0xff,0xb2,},{0xa9,0x44,0x64,0xd8,0xcc,0x8f,0x3e,0x43,0x39,0x39,0x47,0x64,0x9f,0x91,0xc2,0x75,0x23,0x27,0xe4,0x0d,0xac,0xa1,0x1a,0x99,0x70,0xc5,0x18,0x1e,0xda,0x37,0xd6,0x06,},{0xdb,0x72,0x70,0xac,0xce,0x78,0xd7,0xfb,0x09,0x08,0x0a,0x32,0x79,0x41,0xbc,0xe7,0xeb,0x14,0x5b,0x9e,0x36,0x61,0x86,0x6a,0x86,0x83,0xf9,0xa1,0xa3,0xde,0x97,0xfb,0x02,0xb0,0x25,0xdb,0x9e,0xc7,0x6f,0xf3,0x25,0x60,0xfe,0x63,0x88,0x27,0x74,0x2e,0xa2,0xf4,0xeb,0xef,0x6b,0x7c,0xce,0x44,0xf9,0xaa,0xee,0x43,0x4f,0xd7,0xc1,0x08,},\"\\x66\\xa6\\xcb\\xe8\\x8a\\x8a\\xb9\\xa3\\x38\\x47\\x79\\x7f\\xc4\\x80\\xb2\\x44\\xe8\\xa2\\xb8\\xec\\x79\\xe8\\x0b\\xc2\\x63\\x77\\x53\\xde\\xb3\\x6f\\xa3\\x01\\x4f\\x84\\x3e\\x22\\xa4\\x7d\\xb0\\xa3\\x17\\x78\\x38\\x5e\\xc1\\xf4\\x55\\x67\\x2e\\x0d\\xff\\x6c\\xa2\\x1c\\xa4\\xcf\\xd2\\xb9\\x89\\x47\\x1b\\x7f\\xfc\\x30\\x78\\x28\\x13\\x8b\\x0a\\xd4\\xe6\\x47\\xc2\\xd1\\x3c\\xef\\x72\\x44\\x69\\x05\\x4a\\xbd\\x37\\x40\\x24\\x5a\\xea\\x4b\\x78\\x9e\\x24\\x4e\\x95\\xcf\\x9e\\xcf\\xd0\\x8a\\x0d\\x13\\xc7\\xce\\xd3\\x93\\x33\\x27\\x27\\xa7\\xf3\\xd8\\xfb\\xda\\xbd\\x93\\x9d\\xe2\\x8c\\xaa\\x41\\xcc\\x96\\xc7\\x08\\x11\\x98\\xe2\\x26\\x53\\xd9\\x4e\\x02\\x4a\\x61\\xf5\\xf3\\xdc\\x5a\\xa3\\x7f\\xa9\\xad\\xdd\\xc9\\x6c\\xf1\\x69\\xd3\\x50\\x62\\xa0\\xa2\\x9b\\xa4\\x5a\\x53\\x9c\\x87\\xa6\\x8a\\x3a\\x03\\x04\\x36\\x13\\x09\\xd2\\x13\\xe6\\x14\\xee\\x83\\x73\\xda\\xfb\\xa2\\xa7\\xd6\\xed\\x7d\\x2a\\xd3\\x77\\x04\\xc0\\x94\\x6e\\x4d\\x09\\x3e\\x2d\\x94\\xd0\\x61\\x36\\x4c\\xc1\\x23\\x10\\x63\\x72\\x91\\x03\\xa7\\x7c\\xcb\\x50\\x18\\x91\\xbb\\xc3\\x18\\x54\\x57\\xbb\\xd2\\x86\\x9e\\xb6\\x3d\\xc6\\x0f\\x19\\x6f\\x10\\xa3\\x8b\\x7b\\x36\\xcb\\x3f\\x64\\x3d\\x35\\xdd\\xbf\\x43\\x8a\\x44\\xbf\\x0c\\x8f\\x57\\x0f\\xad\\x41\\xbd\\xde\\x26\\x7f\\x0f\\xfc\\xf1\\xf2\\xf9\\x27\\xd6\\x26\\xd1\\xb0\\xd9\\x80\\xa0\\xce\\x22\\x3f\\x2f\\x00\\x54\\x84\\x5a\\xfe\\x41\\xd3\\x9d\\xe5\\xa4\\x57\\x21\\x9f\\x27\\x6c\\x67\\xe6\\x9b\\xe2\\xd5\\xc9\\xe0\\x70\\x13\\x16\\x39\\x56\\x1c\\x26\\x75\\x1f\\xb0\\x64\\x35\\xe0\\xe4\\x2e\\x25\\x08\\xc5\\xf4\\x9c\\xd1\\x2b\\x51\\x7c\\x98\\x33\\xff\\x97\\xf5\\xe5\\x1e\\x1d\\xce\\xaf\\xa9\\x42\\x6d\\x3d\\xc5\\x2f\\xd1\\x37\\x9c\\x64\\xcc\\xaa\\xbb\\x26\\xdb\\x1a\\xf6\\xde\\xd7\\x15\\x36\\x28\\x84\\x2f\\x0c\\xbd\\xbb\\xbd\\x6a\\xa0\\xcf\\xa5\\x40\\x7f\\x40\\x94\\x96\\xc0\\x65\\x32\\xdb\\xea\\xc9\\x4d\\xab\\x9b\\xab\\xa0\\xb3\\xc9\\x88\\xfa\\x03\\xd3\\x6f\\x91\\x1d\\x80\\xe4\\x9b\\x37\\x0b\\x68\\x37\\x03\\x7f\\xf2\\x49\\xe7\\x6d\\x69\\x2c\\xd1\\x77\\x37\\xe0\\xd0\\x79\\x65\\xd3\\x3f\\x17\\x04\\x2b\\xbc\\xd1\\xe9\\x90\\xe0\\x40\\xf7\\x19\\x36\\xf6\\xfc\\xa2\\x54\\x2a\\xe3\\x37\\x48\\x36\\x77\\x87\\xc0\\x1b\\xde\\xa7\\x5c\\x9a\\x0e\\x66\\x15\\x02\\x81\\xc4\\x68\\xfe\\x5c\\x73\\xaf\\x9e\\x5b\\xec\\x37\\x2d\\x50\\x20\\xc3\\xd3\\x7f\\xa1\\x03\\x5a\\x67\\xe2\\x24\\xd0\\x95\\xf0\\x66\\xa5\\x1f\\xe1\\xf6\\x81\\xc3\\x07\\x39\\x39\\x27\\x2f\\x6a\\xf7\\x75\\x0e\\xd8\\xd1\\x83\\x49\\x17\\x8a\\xb4\\xa2\\xee\\xb4\\xe9\\xca\\x82\\xbb\\x67\\x29\\x6e\\x98\\x90\\xf3\\x16\\xc9\\xd9\\x49\\x59\\x53\\xd6\\x84\\x36\\xeb\\x1c\\x1a\\x2f\\xb6\\xa1\\xcc\\xa4\\x5a\\x8e\\x88\\xa0\\x9b\\xdd\\x65\\xa5\\x55\\x80\\x25\\x61\\x8b\\x36\\xd7\\xf3\\xcb\\x38\\x9d\\x2e\\x2a\\xb1\\xed\\x23\\x32\\x28\\xec\\x92\\xa3\\x27\\x97\\x8c\\x0a\\xdc\\xed\\xdb\\x6c\\x96\\x32\\xd3\\xab\\xd7\\x97\\x16\\x21\\x71\\x37\\x54\\x75\\x8e\\x21\\x01\\x3a\\x0c\\x3d\\x00\\x9b\\x6e\\x31\\x93\\xcc\\x15\\x2c\\x57\\xef\\x73\\x10\\x7b\\xd4\\x35\\x7d\\x52\\x8b\\xe4\\x08\\x73\\x02\\x7b\\xf1\\x84\\x0f\\x68\\x55\\x36\\x08\\x0f\\x12\\xc5\\xff\\xa9\\x3c\\xa6\\x29\\x73\\x67\\x80\\xe0\\x15\\xe8\\x6d\\x19\\x09\\xf0\\xd8\\xf3\\x72\\x01\\x0c\\x9c\\xb7\\x2c\\x09\\x89\\x84\\x5f\\xc8\\x83\\x15\\xe6\\xb9\\x37\\x0d\\xc9\\x2d\\x36\\x83\\xef\\x44\\xd3\\xf7\\x5f\\xc9\\x6c\\x4b\\x0e\\x89\\xe1\\x3d\\x68\\x2d\\x19\\x88\\xb6\\x85\\x71\\x3e\\xad\\xa8\\x42\\xbe\\x9d\\x2b\\xbe\\x2a\\x76\\xbb\\xa1\\x5d\\x38\\xcb\\xaf\\xb6\\x5c\\x40\\xc2\\x15\\x9b\\x0c\\xee\\xb0\\xd7\\x69\\xb9\\xbe\\x35\\x55\\x40\\x73\\x4f\\xf3\\x77\\x36\\xc0\\xf0\\xfa\\xcb\\x95\\x15\\x93\\x09\\x36\\x5b\\x96\\x46\\xbc\\x4b\\x34\\x4f\\xb1\\x9a\\x5c\\x16\\x39\\xa8\\x8e\\x87\\x31\\x7b\\xfb\\x3b\\x5e\\x7b\\x51\\x30\\xfa\\x7d\\x56\\x43\\xed\\x4d\\xa0\\x64\\x30\\xc8\\xa0\\xc1\\x85\\x8c\\xcf\\x2f\\x9a\\x6e\\x3d\\x62\\x01\\x22\\x53\\xf0\\x12\\x2d\\xba\\xb4\\xa3\\x54\\x75\\xa6\\xf6\\x55\\x89\\xb2\\xb0\\x95\\x99\\x28\\x26\\xe4\\xf1\\xb5\\x8f\\xa0\\x50\\xb8\\xf9\\x5c\\x4f\\xeb\\xa3\\xfb\\xaa\\xdd\\x2c\\x22\\x44\\xad\\x4a\\xbd\\x41\\x01\\x39\\xad\\xf4\\xc1\\x53\\xcb\\x5e\\x69\\x33\\x7a\\xf1\\x76\\xa7\\x83\\x7e\\xea\\xea\\x99\\xbd\\xcd\\x59\\x38\\x5a\\xfd\\xed\\x34\\xff\\xba\\x80\\x63\\xa3\\x5f\\x4f\\x55\\x8e\\x4e\\xeb\\x48\\xf1\\x48\\x7b\\x56\\xb1\\xf8\\xd1\\xf7\\x30\\x67\\x62\\x1c\\xb5\\x48\\xc8\\x08\\x75\\x3e\\x35\\x26\\xa2\\xf2\\xaa\\xbd\\xe1\\x26\\xbe\\xa5\\x21\\xcf\\x67\\x3d\\xea\\xfa\\x79\\x2c\\xa5\\xbd\\x22\\x12\\x79\\x5b\\xd6\\x6b\\x86\"},\n{{0xa6,0x33,0x7e,0x4d,0x3b,0x1a,0x49,0xb1,0x26,0x31,0x67,0x78,0xc6,0x13,0x51,0x6c,0x03,0xac,0x88,0xc9,0x6d,0x92,0xff,0x5c,0xc7,0xe0,0xc8,0x52,0x7c,0xce,0x1a,0x62,},{0xf5,0xea,0xc4,0xfe,0x0e,0xa1,0xa5,0xf2,0x36,0xb4,0x9d,0xa3,0x3a,0x24,0xe2,0xf3,0xa8,0x3d,0x4b,0x26,0x0c,0x54,0xd3,0x41,0x6c,0x64,0x4e,0x05,0xc8,0x38,0xbf,0x51,},{0x78,0x13,0x76,0xc9,0x51,0x2f,0xa3,0x3c,0x45,0x70,0x47,0xa1,0xf4,0xf0,0xda,0x31,0x76,0xe6,0x0e,0xe4,0x77,0x82,0x86,0x9b,0x7e,0x9f,0xa5,0x84,0x1d,0x96,0x4f,0x3c,0x1a,0xd6,0x6b,0x70,0xc1,0x14,0xb1,0x77,0x1c,0x32,0x4c,0x83,0xff,0x6c,0xd9,0x97,0xae,0xfc,0xcd,0xc5,0x9c,0x11,0x4d,0xb9,0xf2,0xf3,0xca,0x7d,0x84,0xa7,0xb6,0x0f,},\"\\xe3\\x34\\x30\\xc3\\x8c\\x4a\\x40\\xb3\\xc6\\x6e\\x20\\xcf\\x3b\\x70\\xe9\\xfe\\xa8\\xcc\\x50\\x76\\x1f\\x2a\\xfe\\x24\\x9e\\xc0\\x59\\xc0\\x7b\\xc3\\xb3\\x7e\\x5b\\x94\\xf4\\xa4\\x3e\\x31\\x00\\x99\\xb1\\x9a\\x85\\xf5\\x9d\\xff\\x73\\xa7\\xe4\\x95\\xc4\\xdf\\x31\\xf7\\x47\\x80\\xcd\\xef\\x7b\\xd6\\xe4\\x7c\\x39\\x4c\\x18\\x91\\xea\\x30\\x52\\xe3\\xcc\\xf5\\xd8\\x4b\\xae\\x08\\x2d\\x24\\xba\\x71\\x78\\xac\\x65\\xd2\\x29\\xad\\x18\\xa8\\x49\\x40\\xf6\\xb4\\xdb\\xc5\\x96\\xee\\x63\\xc1\\x81\\xb5\\x7b\\x5b\\x49\\x69\\x89\\x79\\xc1\\x86\\x32\\xfa\\x82\\x1c\\xa6\\x1e\\x35\\xa0\\xd0\\x35\\x1f\\xe1\\x3d\\x69\\xe0\\x6d\\xdc\\xc8\\xd6\\x66\\xdc\\xa2\\x45\\x02\\x17\\x7f\\x34\\x4e\\x2f\\x44\\x05\\x75\\xd3\\x9e\\xbf\\xe5\\xe7\\xf1\\x06\\x53\\xb6\\x5b\\xef\\x29\\x1d\\xc8\\x13\\xa0\\x43\\x4c\\x97\\x5d\\xe1\\x64\\xc1\\xa7\\x6b\\xf6\\xfc\\xef\\x98\\xf2\\x31\\x81\\xc0\\x09\\xb9\\x18\\x30\\xb6\\x18\\xe4\\x87\\x48\\x47\\xd2\\xe2\\x1b\\xbd\\xb9\\x3f\\x20\\xcd\\x8b\\x1f\\x4b\\xaa\\xdf\\x99\\x42\\x8a\\x22\\x67\\x43\\x86\\xa6\\x68\\x15\\x2b\\x4b\\x90\\x39\\xff\\x06\\xab\\xcf\\xe3\\x34\\xa0\\x62\\xf7\\x94\\x05\\x61\\x72\\xec\\xbc\\x07\\x94\\xdf\\x98\\x27\\x1b\\x9a\\xcf\\xe4\\xb7\\xda\\x55\\x3a\\x87\\x63\\x42\\x37\\x63\\x00\\x09\\xa0\\x5b\\x25\\x7c\\x18\\x4c\\xbe\\x23\\xd9\\xcd\\x5a\\x03\\x86\\x58\\x01\\x0f\\x57\\x48\\x99\\xf3\\xb2\\xd1\\x54\\xd1\\x85\\xee\\x67\\x23\\x09\\x13\\x65\\x0c\\x3a\\x05\\xb5\\x4a\\x2e\\xdc\\x24\\x3a\\x42\\x87\\x39\\x8e\\x37\\x69\\x28\\xea\\x9c\\x6b\\x2c\\xba\\xf3\\x71\\x25\\x25\\x40\\xe2\\xb8\\x04\\x3f\\xcf\\x55\\x68\\x13\\x19\\x6a\\xe5\\x72\\xc2\\x7c\\xfb\\x5a\\x46\\xab\\xb9\\x72\\x9a\\xf2\\xdc\\xfc\\x29\\xe0\\x33\\xdd\\x11\\xf3\\x3e\\x86\\xcc\\x6a\\xc3\\xbc\\xe6\\xf3\\xf9\\x57\\x7d\\x36\\x78\\x1a\\x69\\xed\\x7e\\xaf\\x8c\\x82\\x63\\xa0\\xf1\\x8e\\xba\\x0f\\xe8\\xa4\\x81\\xf3\\xe1\\x5a\\x55\\x59\\x94\\x34\\x19\\x5f\\x7c\\xb0\\x57\\xdd\\x36\\x4e\\xaa\\x07\\xdd\\x0d\\xfd\\x26\\x6b\\x80\\x7f\\x53\\xa2\\x07\\x0f\\xd7\\x91\\xe8\\x72\\x42\\x2f\\xd9\\x07\\x13\\x4f\\x4a\\x8a\\x78\\xa8\\x76\\xbd\\xcb\\x03\\x1a\\xc8\\x60\\xdf\\xe0\\xbb\\x57\\xe1\\x05\\xdb\\x82\\x87\\xb3\\x1a\\x60\\x4e\\xb7\\x12\\x69\\xbe\\x5b\\xa2\\x29\\x98\\x5c\\xea\\xbc\\x2b\\xdf\\x16\\x5a\\xc7\\x41\\x65\\x0b\\x1f\\x01\\x3a\\x66\\xc9\\xbd\\x24\\x3d\\x03\\xa8\\xb1\\xc5\\x08\\x13\\x81\\xcb\\x92\\xe2\\x3f\\x90\\x57\\x77\\x1f\\xc0\\x7c\\xa3\\x2d\\xff\\x1d\\xb9\\x4f\\x5a\\xdf\\xd2\\xf4\\xff\\x9a\\xf3\\x1d\\x25\\x0d\\xd4\\xf8\\x6b\\x22\\x59\\x2f\\x60\\xa7\\x45\\x75\\x15\\x62\\x13\\xf1\\x08\\x46\\xc7\\x46\\xa9\\x20\\xfe\\x39\\x85\\x1b\\x32\\xfe\\x4c\\x8b\\x87\\x58\\x76\\x5b\\xc5\\xb8\\xb9\\xd5\\xb9\\x92\\x63\\xdf\\x36\\xf9\\x78\\x88\\x05\\x3f\\xd1\\x0f\\x1d\\x68\\xf5\\x77\\xae\\xd5\\x59\\xbc\\xfd\\xe7\\x44\\xbc\\x65\\x11\\x07\\x6c\\xaf\\xd6\\x89\\x44\\xa0\\xed\\x10\\x55\\x2d\\x11\\x34\\x4b\\xc7\\xe4\\xd9\\xef\\x93\\x6d\\xac\\xce\\xd5\\x27\\x43\\x31\\x32\\x95\\x9b\\x1c\\x73\\x24\\xad\\x1c\\x4c\\xbc\\x3a\\x1a\\x73\\x6b\\x1f\\x02\\xaa\\xe8\\xe0\\x61\\x1a\\xe2\\x3f\\xdd\\x47\\x4f\\x5b\\x8e\\xe7\\x05\\x6f\\xcb\\x5a\\xf6\\x13\\x3e\\xcc\\x08\\x4b\\xb9\\xf1\\xf5\\x0c\\xbd\\xac\\x66\\x24\\x44\\x37\\xb4\\x34\\x8f\\x4e\\xdf\\xe2\\x37\\xfc\\x3c\\x38\\x29\\xab\\x94\\xeb\\x4f\\x14\\xca\\xb1\\xcc\\xd6\\xca\\xee\\x36\\xfa\\xdc\\x20\\xa3\\x10\\xcf\\x06\\x90\\x62\\x2c\\xdc\\xa8\\x48\\xae\\xd0\\x3f\\xf4\\x03\\xa6\\x63\\x3f\\x4f\\x65\\x79\\x94\\xb7\\x80\\xdd\\x60\\x48\\x14\\x9c\\x3b\\xfb\\xc1\\x78\\x89\\xe3\\x7d\\x90\\xb1\\xe5\\x42\\x0e\\xb3\\xd4\\x59\\x6b\\x91\\xba\\x11\\xbc\\x02\\x29\\xc6\\x5d\\x05\\xb9\\x3c\\xd7\\xe0\\x45\\x4d\\x1f\\x3c\\x6e\\x1e\\x80\\x71\\x98\\x37\\x92\\xc4\\xd4\\x36\\x8d\\x07\\x78\\xae\\xf4\\xe1\\x23\\x33\\x5f\\xd2\\x96\\x2c\\x65\\x7b\\xd0\\x51\\x35\\x71\\xa5\\xfc\\xe2\\x11\\xde\\x62\\x87\\x4f\\x27\\xca\\x10\\xdc\\x15\\xba\\x2d\\x44\\x5f\\x1c\\xf4\\xbe\\x5f\\x83\\x3c\\xf0\\xb5\\x64\\xc0\\x22\\x57\\x6b\\x98\\xc0\\xa2\\x43\\x49\\xb6\\x70\\x85\\xf9\\x22\\x02\\x67\\x5d\\x7d\\xac\\x48\\xb9\\x5e\\x3b\\xfd\\x65\\x55\\xa9\\xec\\xb7\\xc7\\x2f\\x08\\xbf\\xec\\x0d\\x22\\x02\\x22\\x49\\x2f\\xdc\\x96\\x36\\xf0\\x36\\xec\\x45\\x08\\xa3\\x65\\xb7\\xb7\\x09\\x79\\xf9\\xeb\\x4a\\x72\\x63\\xa8\\xba\\xcb\\x1c\\x1d\\x01\\x55\\x73\\x86\\x46\\xcd\\xd4\\x6a\\xb9\\x23\\x4a\\x17\\x03\\x11\\x50\\x0d\\x0b\\xae\\x6e\\x55\\xa8\\x63\\xbd\\xaa\\x56\\xf5\\x16\\x45\\xad\\x85\\x29\\x7a\\x73\\x81\\xf8\\xd2\\x0c\\xf9\\x6c\\x47\\x4d\\x1b\\xb8\\x1f\\xce\\x13\\x2b\\x14\\x55\\x5d\\x1a\"},\n{{0x10,0x7d,0xa9,0x8d,0x0e,0xe8,0xe7,0xc0,0x0f,0x6d,0x41,0xec,0x26,0x59,0x44,0xce,0x67,0xef,0x8c,0x8f,0xfb,0x51,0xf4,0xf1,0x1f,0x4e,0x5f,0x1a,0x27,0xfb,0xe8,0x05,},{0x3b,0xec,0x34,0xb1,0x61,0xb1,0xbc,0xff,0x00,0x9f,0x8c,0xfc,0x50,0xd8,0x4c,0xeb,0x6a,0x2d,0x5b,0x20,0x3b,0x52,0x38,0xa8,0xaa,0xd8,0xa8,0x36,0x18,0xb4,0x42,0xe7,},{0x53,0x25,0x2b,0x92,0x3a,0xd1,0x9c,0xc3,0x97,0x84,0xd3,0xa9,0xae,0x59,0xd6,0x2a,0x63,0x00,0xdc,0xc5,0x0a,0xc8,0xfd,0x07,0x13,0xcb,0x58,0x84,0x45,0x01,0xd8,0xd3,0x80,0x5a,0xfa,0x0f,0xda,0x64,0xc7,0x3e,0xa0,0xf6,0x0e,0x6a,0x8b,0x34,0x45,0xbf,0xff,0xe6,0xca,0x6b,0xfd,0xc8,0x7e,0x12,0x8b,0xaf,0x99,0xbf,0x62,0x68,0xfc,0x09,},\"\\x1a\\x7b\\x7f\\x3e\\x1c\\x7c\\x41\\x49\\x2a\\x7c\\xe7\\x99\\xef\\xdb\\x2d\\x9d\\xc2\\xf2\\x48\\x9c\\x84\\xae\\x28\\xbb\\x7d\\x08\\x4f\\x32\\xec\\xa8\\xfb\\xb0\\x66\\x88\\x5a\\xc6\\xf2\\xef\\x74\\x49\\xe7\\x12\\x26\\xa8\\x2e\\x9f\\x15\\x37\\x72\\xa9\\x93\\xeb\\x6b\\x6b\\xca\\x64\\x91\\xd2\\x6a\\xca\\x5d\\xee\\x98\\xb7\\x7a\\x1d\\xdc\\x59\\x92\\x2b\\x31\\x45\\xc4\\x47\\xde\\x73\\x7f\\xaf\\xac\\xba\\x5a\\x75\\xf2\\xa8\\x01\\x37\\xb5\\x59\\x46\\x97\\x22\\x0d\\x19\\x61\\x76\\x74\\xa6\\x91\\x13\\xfd\\xf7\\x7c\\x34\\x3a\\xf2\\xb7\\xe3\\x86\\x1b\\x5b\\x78\\x22\\xf5\\x8d\\x60\\x08\\x9c\\x3c\\xa5\\x4c\\x74\\x9d\\x27\\xf8\\x83\\x79\\xc0\\x67\\x59\\x8f\\x06\\x39\\x39\\xba\\x86\\x31\\xd1\\xf5\\x2d\\xc9\\xab\\x45\\x50\\x45\\xfb\\x36\\x0c\\xc2\\xa5\\xb6\\xb0\\x12\\x7f\\xac\\xfc\\xf5\\xb1\\xb4\\xc3\\x3e\\x3f\\x19\\x4f\\xc9\\x24\\xb8\\x54\\x16\\x8c\\xb1\\x16\\x9a\\xb1\\x09\\x97\\xb4\\x38\\xb7\\x1c\\x80\\x87\\x83\\x47\\xbe\\x88\\x7a\\xf4\\x48\\x10\\x13\\x4b\\x51\\x4c\\x80\\x69\\x08\\x20\\x1a\\x3d\\x3e\\x6d\\x0c\\x56\\x12\\x0c\\x43\\x14\\x87\\x4d\\xc2\\x94\\x4d\\x84\\x44\\xf0\\x1b\\xaf\\xa3\\x4a\\xa6\\x2e\\xce\\xf0\\x98\\x15\\x45\\xe5\\xd0\\x2f\\x40\\x16\\xc0\\xb1\\x64\\xfc\\x05\\xae\\x18\\xf5\\x35\\xc3\\x1b\\xf2\\x0b\\x86\\xf3\\x1f\\x7a\\x79\\x4a\\xba\\x14\\x89\\x84\\xc3\\xff\\x43\\x3d\\xc2\\x22\\xc4\\x43\\xb5\\xd2\\x6c\\x1f\\x66\\xe6\\xc5\\xf1\\x9d\\x19\\xcd\\x6e\\xad\\xd4\\xdc\\x94\\x10\\x1b\\x2f\\x52\\xb5\\x8c\\x9d\\x45\\x90\\xcb\\x10\\xdb\\xc5\\xd6\\xea\\xcd\\x11\\xd4\\x2e\\xd0\\x9f\\x15\\xbd\\xe4\\x4e\\xe9\\x27\\x1d\\xef\\x29\\x2f\\x73\\x1b\\xf3\\xb4\\xac\\x6c\\xd1\\x27\\xe4\\x88\\x4c\\x2c\\xb3\\x0b\\x28\\x5f\\xc9\\x24\\x76\\x38\\xa2\\x99\\xe4\\x16\\x52\\x06\\x24\\xd1\\xec\\x8d\\x0d\\xf2\\x49\\x89\\x39\\xc7\\x19\\xa9\\xe7\\xbd\\x29\\xa3\\xc5\\xc3\\x2a\\x3e\\x82\\x41\\x36\\x8d\\x6e\\x4f\\x90\\xfe\\xa2\\x9d\\xc3\\xa3\\xf1\\x47\\xea\\x9f\\x76\\xc5\\x78\\x0e\\x73\\x14\\x3f\\x55\\xd3\\xde\\xc7\\xb6\\x63\\x41\\xd3\\xf3\\xea\\xc1\\xd9\\x8f\\x8e\\x7d\\x4e\\x87\\x75\\x09\\xb4\\x43\\x8c\\x3a\\x52\\x46\\x6d\\x24\\x2a\\x10\\xb4\\xc2\\x7c\\x4a\\x0d\\xb9\\x23\\x2d\\xad\\x01\\x14\\x14\\xeb\\xfb\\xd5\\x79\\x06\\xf1\\xa4\\x10\\x20\\x7b\\x52\\x6b\\x0d\\x1f\\x1b\\x69\\x86\\xb3\\xeb\\xd7\\x55\\x0a\\x2b\\x3c\\x15\\xfc\\x24\\x09\\xc7\\x62\\x6e\\x0d\\xd3\\x30\\xef\\x67\\x22\\xe3\\xba\\x48\\xb1\\xd9\\x20\\x56\\x52\\xac\\x19\\x4c\\x21\\x47\\x3c\\xe2\\x58\\x55\\x9d\\xb5\\x11\\xef\\xad\\x3e\\x5d\\x55\\xf2\\xa7\\x96\\xd6\\x5a\\x6a\\xb9\\x7d\\x86\\x31\\x06\\x2a\\x59\\x3a\\x13\\xaa\\xa0\\x95\\xdb\\xc9\\x3e\\x62\\x17\\xce\\xd6\\x19\\xcb\\x16\\xa5\\x7e\\x74\\x43\\x55\\xa1\\x6b\\x15\\xe7\\x7d\\x49\\x79\\x11\\x92\\x99\\xbb\\x04\\x3e\\x48\\xfa\\x3e\\x61\\x54\\x60\\xe1\\x64\\x88\\x29\\x84\\xa2\\x23\\xd4\\x18\\xca\\x95\\x34\\x0c\\x5b\\xfc\\xda\\x67\\x3f\\xcd\\x13\\xb2\\x9f\\x2c\\x47\\xd2\\xf9\\x7e\\x3e\\x8c\\x61\\x3b\\x6c\\x58\\xdf\\x0e\\x62\\xcf\\x23\\x06\\x1d\\x6f\\x54\\x5b\\x75\\x50\\x33\\xfd\\x3d\\xc1\\x40\\x5e\\x5f\\xef\\x35\\xa1\\x3e\\x01\\x5f\\x98\\xb1\\xcc\\x42\\xf7\\x1b\\x99\\x68\\x1f\\x96\\x81\\x25\\x82\\x29\\xa4\\x47\\x3d\\x86\\xea\\xbb\\x0c\\x17\\x92\\x79\\x41\\xe5\\x0c\\x08\\xf3\\x4a\\x76\\xb4\\x3b\\xcc\\x6d\\x04\\x2e\\x56\\x32\\xef\\x9c\\xcc\\x91\\xb6\\xe6\\x95\\x0f\\x5d\\x30\\xf6\\x70\\xfb\\x39\\x02\\xc3\\xd4\\x09\\x31\\x5a\\x40\\xb0\\x82\\x1c\\xe8\\xa9\\x9a\\x97\\xfe\\xca\\x54\\x78\\xbf\\xd7\\x82\\xe7\\x87\\x67\\xb3\\x11\\xf3\\x74\\x16\\x3f\\x58\\x96\\xb0\\xbe\\xb9\\x58\\x38\\xe6\\x45\\x87\\x8c\\x64\\x99\\x03\\x85\\x12\\x3b\\x61\\x57\\x5d\\xd8\\x42\\xdc\\x76\\x35\\x4b\\xac\\x9c\\x6d\\x5a\\xcd\\x99\\x35\\xb6\\x09\\xbc\\xcc\\xb8\\x46\\x3d\\x39\\x22\\x5d\\xa1\\xaf\\xb8\\x91\\x1d\\x36\\xe6\\x09\\x89\\x2d\\xd1\\x72\\x38\\x52\\xab\\x9f\\x82\\x75\\x8f\\x3f\\x1e\\x4d\\x28\\xdc\\xf0\\x2c\\xb0\\x6e\\xed\\x26\\x84\\x4a\\xae\\x68\\x82\\xed\\x44\\xbc\\xe4\\x4a\\xbc\\xd1\\xdf\\xba\\x63\\x34\\x18\\xc9\\xf1\\x55\\x87\\x9c\\x97\\xab\\x27\\xf8\\xae\\x23\\x83\\x30\\x39\\x2b\\xe5\\x49\\x1a\\x07\\x86\\x62\\xda\\xaa\\x02\\xa3\\xd5\\x45\\x8b\\x77\\xc5\\x49\\xc4\\x9b\\xe2\\x01\\x24\\x5e\\x7a\\xae\\xc0\\xd9\\x4e\\x54\\x37\\xbe\\xca\\x6e\\x5a\\xb0\\x46\\xd6\\x94\\xe9\\x6b\\xf5\\x1e\\x04\\xfb\\x44\\x37\\x9b\\x2b\\x9b\\x80\\x16\\x75\\xfe\\x14\\x77\\xf3\\xe0\\x89\\x87\\x4a\\x60\\x11\\x71\\xd8\\xb6\\x8f\\x02\\x02\\x01\\x46\\x01\\xa5\\x3f\\x81\\x2f\\x53\\xe5\\x81\\xc3\\xb9\\x63\\x12\\xb3\\x6b\\x9e\\xe0\\x4f\\xff\\x11\\xd9\\xea\\xb4\\xe4\\x51\\x48\\xdc\\xc8\\xf0\\xfa\\xb1\"},\n{{0x8b,0xc2,0x29,0xfc,0x23,0x46,0x53,0xb1,0x3c,0x92,0x47,0x10,0xcb,0x46,0x8b,0x8f,0xa9,0xb2,0x80,0xe2,0xad,0xb4,0x9c,0xb4,0xb3,0x6b,0xf5,0x9d,0x6f,0xa4,0xa6,0x39,},{0x46,0x14,0x69,0x75,0xdf,0x67,0x04,0xcb,0xf4,0x53,0x20,0xa5,0xe6,0xcb,0x6d,0xe8,0x13,0x46,0x9f,0x31,0x31,0xe6,0x1d,0x44,0x7b,0xbc,0xa1,0xa4,0x77,0xa0,0xc5,0x57,},{0xd2,0x43,0xb8,0x7d,0x13,0x97,0xd5,0x94,0x13,0x9d,0x83,0xc3,0x9a,0xcf,0x85,0x01,0xd0,0x73,0xbd,0x4b,0xe7,0x18,0xb4,0xc2,0x06,0x98,0x07,0x29,0xe7,0x20,0xa4,0xc5,0xb0,0xea,0x91,0xa2,0x8e,0xa1,0x26,0x04,0xa9,0x87,0xe6,0x95,0x91,0xc5,0x43,0x04,0x9f,0x29,0x73,0xbb,0x91,0xc1,0x70,0x21,0x3c,0x32,0xa6,0x4a,0x0f,0xac,0x82,0x04,},\"\\xba\\xe2\\xdc\\x7f\\x94\\xab\\x5c\\xcd\\xca\\xa8\\xcf\\x49\\xed\\xbe\\xf0\\xf6\\xd7\\xae\\xb1\\xfa\\x89\\x07\\x80\\x05\\x33\\xaf\\x44\\x92\\x61\\x11\\x94\\xe5\\x6c\\xef\\x37\\xb1\\xf0\\x33\\x30\\x37\\x38\\xae\\x2c\\x3b\\xc4\\x58\\x8f\\x5c\\xb3\\xd5\\x5f\\x34\\x5b\\x9a\\x40\\x7e\\x78\\x77\\x42\\xa0\\x6a\\xf0\\xb6\\xee\\x20\\xde\\xe3\\xdf\\xe9\\xc9\\x1d\\x76\\x2a\\x3e\\xbd\\x19\\xae\\xd0\\x79\\x07\\xbb\\xb9\\x1c\\xd7\\x76\\x32\\x65\\x40\\xde\\xd9\\xf7\\xff\\x7d\\xda\\x76\\x61\\x5f\\x97\\x8e\\x94\\x90\\xf4\\x06\\xed\\x2d\\x91\\x16\\xe2\\x09\\x3f\\xa7\\x85\\xe9\\x71\\xb5\\x06\\x2d\\x31\\xcb\\x40\\xff\\xf9\\xe3\\xc5\\x51\\xa7\\x3b\\x20\\x24\\x5d\\x46\\xdf\\x4d\\x7f\\xd1\\x30\\x3a\\x28\\x18\\x01\\x72\\xd9\\xa2\\xbf\\x55\\x93\\xc4\\x79\\x17\\xb5\\x86\\x90\\x91\\x7c\\x1f\\xb0\\xe1\\xe2\\x99\\x4d\\x1f\\xa9\\x77\\x35\\xae\\x37\\x8d\\xe6\\xea\\xfd\\x5c\\x1a\\x25\\xab\\xaf\\xa3\\xcf\\xd2\\xdf\\x7a\\xea\\xbd\\x6e\\x68\\xfc\\x44\\xed\\xf8\\x2f\\xc8\\x36\\x94\\xe5\\xd8\\x41\\xa1\\x5b\\x14\\x56\\x8b\\x61\\x10\\xbe\\x64\\x4b\\xf2\\x2b\\x71\\xfc\\x47\\xd7\\xf0\\x7e\\x16\\x66\\x95\\x7d\\x0f\\x87\\xda\\x17\\xf1\\x3f\\xcd\\x63\\xc1\\xc2\\x96\\x6f\\x68\\x7d\\x25\\xdc\\xbd\\x99\\x63\\xf0\\x1e\\xff\\x13\\x2d\\x5f\\x2b\\x86\\x67\\x78\\x16\\x58\\x8c\\x12\\x3e\\x94\\x57\\xbe\\xfc\\xce\\xd2\\xd3\\xcd\\x1d\\x1b\\xeb\\xe8\\xdd\\x8f\\xbb\\x15\\x87\\xe5\\x53\\xcb\\xcc\\x4c\\x87\\x62\\x06\\x4c\\xd3\\x2e\\xf7\\xa1\\x70\\x24\\x10\\xf7\\x7f\\x15\\x24\\x0d\\x7e\\x2b\\xb5\\x82\\xc6\\x78\\xc0\\xda\\x88\\xef\\x45\\x22\\x83\\x0b\\x14\\x36\\x60\\xac\\x9c\\x43\\x4d\\x95\\x77\\x2e\\x6e\\xee\\xed\\x60\\x14\\xae\\x16\\x82\\x4c\\xcd\\xc4\\xdf\\x2d\\xf6\\x4a\\xeb\\x69\\x80\\xb5\\x1d\\x11\\x89\\x85\\xdc\\xbb\\xd1\\x96\\x1f\\x31\\x5e\\x6a\\x94\\x33\\xf0\\xb9\\x6b\\x1e\\x63\\x51\\x25\\x7e\\xad\\x83\\xe0\\x5b\\x4c\\xc8\\x9c\\x92\\x4b\\xf8\\x35\\x58\\xba\\x7d\\x2e\\x7c\\xa3\\x7c\\x03\\x17\\x9a\\x8f\\x85\\xb8\\x31\\xe7\\x21\\x7b\\xf4\\xc5\\x53\\x83\\x87\\x61\\xd3\\x26\\x02\\x85\\x3b\\x81\\x59\\x3b\\x0e\\xbf\\x8e\\x4b\\x9f\\xfa\\xf0\\xec\\x40\\x5b\\x2a\\x83\\xaf\\x7d\\xe5\\x55\\x4d\\xaa\\xd2\\x8b\\x58\\x2e\\xe0\\x8b\\xd8\\x4b\\x37\\x55\\x50\\xca\\xe0\\x8a\\xe4\\xa5\\xbd\\xa7\\x15\\x81\\xfc\\x3b\\x7b\\x54\\x49\\x8c\\x4e\\x1a\\xfb\\x96\\x6b\\x4a\\xf1\\xd9\\xc8\\x43\\xa6\\xb2\\x5b\\x34\\xe0\\x4c\\xfd\\x9b\\xd2\\x37\\x42\\x44\\xf1\\xfe\\x20\\xec\\x62\\xbe\\x3c\\xcf\\xab\\x4e\\xde\\xf7\\x9e\\xd6\\x4e\\x6b\\x71\\xaa\\x92\\x28\\x12\\x7c\\x63\\x59\\xea\\x1c\\x4a\\x80\\x87\\x89\\x08\\x96\\xff\\xa4\\x6e\\x00\\x92\\xde\\xc7\\xef\\xbc\\x96\\x0a\\x17\\xb7\\x70\\x91\\x6f\\x95\\x40\\x70\\x13\\x2e\\x26\\xd9\\x8d\\x97\\x74\\xa2\\xac\\xdf\\x80\\x9d\\x58\\x6d\\xf0\\x25\\x2f\\x67\\xcf\\xe8\\xd9\\x85\\xa3\\xe2\\x48\\xdb\\x0f\\x90\\x73\\x1a\\xce\\x7a\\xbd\\x99\\x9c\\x74\\x6b\\x69\\x64\\x8d\\x5c\\x3b\\x4b\\xd6\\x11\\x37\\xe0\\x8f\\xcc\\x8b\\x2e\\xfc\\x56\\x76\\xbc\\xd8\\x56\\xa1\\x3b\\x36\\x21\\x51\\x47\\x4c\\x4a\\x1e\\xfd\\xed\\xc5\\x92\\xcf\\x3e\\xad\\x1a\\xba\\xbc\\xd4\\x8e\\xe2\\x04\\xd2\\x77\\x26\\xad\\x1b\\xda\\x4f\\xe4\\xb0\\x9a\\xb5\\x10\\x89\\xd0\\x16\\xde\\x6b\\xa2\\x59\\xea\\x81\\x80\\x7f\\xaf\\x21\\x1c\\x87\\xe4\\xc9\\xef\\xbf\\x6a\\x4c\\x75\\x3e\\x08\\xf7\\x80\\xed\\x55\\x33\\x8c\\x0f\\xde\\x14\\xfb\\x99\\xb3\\x07\\x22\\xb5\\x59\\x4b\\x3a\\xbe\\x02\\x04\\x7f\\x46\\x62\\x42\\x42\\x1f\\xb8\\x11\\x76\\xc9\\xc4\\xf0\\xfd\\x2b\\x5e\\x7c\\x5a\\x0f\\x65\\xa0\\xc5\\x9a\\xa8\\xc3\\xa9\\x86\\x08\\x7d\\xe7\\xba\\x40\\xba\\xca\\x77\\xbd\\x36\\xac\\x21\\xce\\x34\\xe9\\xfe\\x97\\xfa\\xcc\\x4e\\x29\\x83\\x30\\xee\\xce\\x1c\\x8e\\xc6\\x23\\xe6\\x6a\\x4b\\x0f\\x23\\x42\\xd2\\xc5\\xa0\\x2c\\x5f\\x5a\\xbd\\xdc\\x5f\\xf1\\xf1\\xf2\\xd0\\x3c\\x1d\\x4e\\xe9\\xb4\\xb3\\x42\\xed\\x3b\\x1c\\xc2\\x65\\x61\\xf3\\x21\\x7b\\xf8\\x50\\x0e\\x08\\xf0\\x27\\x57\\x1c\\x53\\xc9\\x23\\x26\\x05\\xa5\\x3f\\x2b\\xda\\x02\\x4e\\x39\\x92\\x91\\x63\\xa8\\xe0\\x07\\x91\\xac\\x06\\x56\\xbb\\x07\\x83\\x82\\x5e\\x71\\x05\\xff\\xa9\\xd9\\x09\\x69\\xdc\\x09\\x4a\\xf4\\x6f\\x70\\x2e\\x85\\xcc\\x11\\xe4\\x42\\xb3\\xd5\\x53\\x4c\\x1d\\x32\\x75\\x20\\x7d\\x6d\\x29\\xa9\\x42\\xc3\\x58\\xed\\x5f\\xa0\\x75\\x57\\xc3\\xc0\\x14\\xcf\\x54\\x1f\\x9a\\xae\\xea\\x60\\x25\\xb4\\x1e\\xcd\\xd8\\x48\\x51\\x2b\\xa2\\x5e\\x72\\x1e\\x43\\xd3\\x29\\x18\\x5f\\x8f\\x94\\x89\\x2e\\x9e\\x2d\\x5e\\x7c\\xbb\\x99\\xe7\\xad\\x25\\xf6\\x9e\\x5b\\xef\\x73\\x2c\\xfc\\xeb\\x07\\x86\\x11\\x55\\x3c\\xc7\\x83\\x77\\x37\\x5e\\x74\\xe6\\x6f\\x1b\\x9d\\x8d\\x20\"},\n{{0x3e,0xdb,0x50,0xff,0x07,0x4e,0xf9,0x71,0x7f,0x4f,0xb0,0xb6,0xce,0x25,0x2b,0xf4,0xbd,0x04,0x9c,0x90,0x83,0x77,0x5f,0x52,0x9e,0xaf,0x51,0xe9,0x75,0xcb,0x32,0x45,},{0x4b,0xc2,0x1f,0xe0,0x3e,0x67,0x9a,0xbb,0xfc,0xd8,0xc5,0xea,0x2b,0xcc,0x4d,0x83,0x8a,0x78,0x7d,0x48,0x40,0xc3,0xbc,0x39,0xde,0x4b,0x04,0xc4,0x17,0xc7,0x68,0xa5,},{0xde,0xb3,0xd9,0xfc,0x7b,0x2d,0x86,0xab,0x4b,0x92,0x6f,0x99,0x52,0x79,0x70,0xab,0xb5,0x18,0x38,0xbc,0xc2,0x91,0x9e,0x94,0xcd,0xa3,0x37,0x1f,0xd0,0xe7,0x69,0x3f,0xe3,0x7e,0x0c,0x40,0xe1,0x23,0x3b,0x09,0xff,0xa9,0x03,0xa0,0x34,0xdd,0xe2,0x87,0xc0,0x23,0x7d,0xc5,0x94,0xf5,0x3a,0xbc,0x87,0x84,0x48,0x69,0xdc,0xe9,0x20,0x02,},\"\\x97\\x5e\\xce\\x4e\\x81\\xf0\\x01\\x5f\\x5a\\xc3\\x04\\x46\\x09\\xd0\\xac\\x3a\\x8d\\xf9\\x14\\x5b\\x50\\xc4\\x28\\x89\\xdd\\x31\\x2f\\x56\\x3c\\xf6\\x12\\x6e\\x36\\xff\\xfa\\xf2\\x1e\\xb6\\xb8\\x4f\\xbd\\xa1\\x5a\\xa8\\x5c\\x66\\x14\\x5f\\x75\\x41\\xe5\\xb4\\x1a\\x8e\\x81\\x70\\x0b\\xe3\\x56\\x22\\x4f\\xc1\\x09\\x32\\x7a\\x69\\x19\\x66\\x56\\x73\\x53\\x4f\\x5c\\x8a\\x4a\\x00\\x17\\x50\\xb1\\x99\\xdb\\xfd\\x63\\x06\\x91\\xaf\\x55\\x2d\\x4d\\x26\\xa9\\xd9\\xaf\\xb3\\x3a\\x16\\xaf\\x39\\x11\\x54\\x12\\x4b\\x53\\x42\\x6c\\x9f\\x69\\x50\\x57\\xb1\\x81\\x4f\\xd6\\xd3\\x10\\x29\\x8a\\xf6\\xc8\\x30\\x68\\x6a\\x4a\\x00\\x7a\\x14\\xe0\\x05\\x7b\\x72\\xfb\\xad\\x5b\\x80\\x3a\\xd3\\x53\\xd1\\xc3\\xfd\\xb8\\x90\\xa9\\xc8\\x18\\x08\\xe8\\x9f\\x22\\x91\\x87\\xbc\\xb4\\x4f\\xee\\x16\\xa4\\xeb\\xca\\xd5\\xeb\\xa4\\x59\\xb0\\x28\\x27\\x2a\\x56\\x2c\\x05\\x07\\x9f\\xa7\\xae\\x3e\\xca\\xe8\\x04\\xa9\\xe8\\xc4\\xf3\\xf3\\x15\\x81\\x3c\\x5e\\xe0\\x84\\x1b\\xbc\\xcf\\xe4\\xa9\\x56\\x23\\xb5\\x17\\xa4\\xb4\\x2b\\x2c\\x6d\\x97\\xa3\\xbf\\x26\\xac\\xdb\\xe2\\xe9\\x79\\x63\\x3f\\x02\\xaa\\xc4\\x66\\x52\\x6a\\x3e\\xbb\\x14\\xda\\x19\\xbc\\x95\\xf2\\xc3\\xfd\\xf6\\xbd\\xb0\\x8b\\xe8\\xbd\\xe9\\x7a\\x86\\x4c\\x90\\x7e\\x91\\x8c\\x67\\x9a\\xb7\\x26\\xf8\\x01\\x77\\x14\\x58\\x40\\x21\\x6b\\x9d\\xc3\\xf9\\x81\\xef\\x17\\x87\\x4f\\x08\\xb2\\xfc\\x66\\x11\\xa6\\x34\\x6c\\x3d\\xa6\\xa5\\x5e\\xcf\\xa7\\x53\\xc9\\x91\\x9f\\x4f\\x19\\xe3\\xc7\\x90\\x93\\xbf\\xd7\\x8f\\x86\\x15\\x98\\xe4\\x66\\x6e\\x1c\\xab\\x68\\x8e\\x46\\x04\\xd4\\x6c\\x9c\\x58\\x2e\\xad\\xb9\\x2c\\x98\\x8f\\x47\\x8d\\x16\\x0f\\x5a\\x15\\x18\\x2b\\x33\\x40\\x20\\x17\\x97\\xd0\\xb9\\x55\\x28\\x2e\\x4a\\x21\\x7b\\x50\\xb1\\x4b\\x10\\xc9\\xf4\\x90\\x67\\xea\\x3e\\x84\\xe5\\x27\\x4d\\xca\\xec\\x74\\x47\\x4c\\x57\\x07\\xc2\\x8b\\xba\\x0d\\xb8\\xcd\\xe3\\xe8\\x38\\xd7\\x31\\x3c\\x17\\x1b\\x85\\xff\\x2b\\x9a\\x3d\\x2b\\x16\\x7e\\x90\\x61\\xf8\\x4d\\xf3\\xb1\\x3b\\xdd\\x08\\xb2\\xd5\\x01\\xe5\\x37\\x92\\xd6\\x80\\x54\\xd0\\x48\\xab\\xfe\\x3b\\xce\\x98\\xd9\\x78\\x25\\x6f\\x2f\\xd2\\xc6\\xc4\\xe7\\x6f\\x39\\x68\\x8c\\xcc\\xf0\\xfe\\x14\\x9a\\xf9\\xd3\\x47\\xe7\\xb0\\x40\\xef\\x24\\x1d\\xd5\\xa5\\x3e\\xaa\\x5e\\xab\\x35\\xa1\\x8c\\x68\\xc7\\x54\\xa0\\x6b\\x03\\x39\\x9b\\xbe\\x56\\xa2\\x52\\x68\\xc8\\x29\\xa5\\xba\\x82\\xb2\\x81\\x92\\x04\\x1d\\x3b\\xd2\\x44\\xeb\\x08\\xbf\\x78\\xe7\\x6d\\xef\\x87\\xcd\\x09\\xf3\\x2b\\xea\\xc9\\xbb\\x63\\x98\\x23\\xb3\\x69\\x67\\xa5\\x74\\xd8\\x96\\x0d\\x1b\\xd0\\x34\\x35\\x67\\x9d\\x93\\xed\\xdc\\x55\\x80\\x63\\xc5\\x40\\xb9\\xc2\\xf6\\x09\\xfe\\xd2\\xe2\\xe3\\x57\\x6d\\x19\\xe6\\x20\\x9e\\xab\\x46\\x6c\\x20\\x67\\x91\\xc3\\xaa\\x19\\x96\\x23\\xfb\\xae\\x7d\\x34\\x97\\xe8\\x0f\\xdd\\x3f\\xcb\\xaf\\x5b\\x89\\x11\\x0e\\xd7\\x22\\x44\\x23\\x4b\\xe8\\x5c\\xca\\x4b\\x27\\xa0\\x9b\\xb7\\x0a\\x26\\xec\\xe4\\xeb\\x8d\\xd9\\x70\\xa2\\x6e\\x5b\\x04\\x36\\x1f\\xa5\\x0e\\x90\\x38\\x0e\\xd6\\x5f\\x41\\x4c\\x1b\\xe9\\xf5\\x06\\x4f\\x71\\x42\\x91\\x16\\x26\\x7e\\xdd\\x69\\x76\\x42\\x2a\\xd9\\x2d\\xeb\\x2b\\x80\\x4a\\x92\\xe8\\x1c\\x9f\\x65\\x22\\xa0\\xf3\\xb5\\xd8\\xad\\x36\\xb4\\xf8\\x7d\\xb5\\x16\\xa2\\x28\\x73\\xe6\\xf2\\x72\\x84\\xf2\\xca\\x36\\x0a\\x2f\\x40\\xff\\x3d\\x8e\\x23\\xde\\xc8\\xef\\x8a\\x17\\xa4\\x3a\\xcb\\xb6\\x12\\x71\\xa7\\x27\\xcb\\x86\\x90\\xd2\\x9b\\xb8\\x20\\x16\\x73\\x6b\\x31\\x02\\x62\\x01\\xdd\\x3d\\x38\\x8d\\x2c\\x64\\x3a\\x73\\xcf\\xbd\\x0a\\x94\\xe2\\x05\\x51\\xfb\\x5f\\x8e\\x1f\\xfc\\x39\\x74\\x12\\x72\\xaa\\x23\\x08\\xdc\\x8d\\x21\\x33\\xa3\\xfa\\x9c\\xf1\\x09\\x79\\x6d\\x69\\xd2\\xcc\\x8a\\xdd\\xc4\\x4a\\xe2\\x52\\x77\\x81\\xee\\x99\\x3a\\xf2\\xa6\\x37\\xa8\\x72\\xf0\\x2a\\xff\\x47\\x4a\\x70\\x73\\xf2\\x9d\\x9c\\x89\\x50\\x77\\x01\\xfe\\xcb\\xbf\\xd5\\x10\\x13\\x53\\x53\\x7e\\xba\\x17\\xc2\\x96\\x69\\xda\\xc0\\x42\\x7e\\x38\\xe2\\x2d\\xfa\\xac\\x91\\xfc\\x20\\xd9\\xe3\\xfe\\xe7\\x91\\xf4\\x62\\xa8\\x63\\xbb\\x19\\x08\\xfb\\x1e\\x42\\x04\\xb6\\x88\\x80\\x31\\x4d\\xda\\xca\\xaa\\x35\\xa1\\x7a\\xf5\\xf5\\x7a\\x39\\x9f\\x19\\x31\\xe7\\x8f\\x5a\\x37\\x45\\x4f\\xd3\\x8c\\x57\\xa6\\x8e\\x8d\\x36\\x78\\x48\\xa9\\x73\\x45\\x18\\x9c\\x70\\x07\\x7f\\xd1\\xaa\\x07\\x54\\xe7\\x03\\xe3\\x52\\x61\\x80\\x63\\xb9\\xe3\\xfa\\xf3\\xb1\\x4b\\x5f\\x0b\\x27\\x11\\x36\\x33\\xc5\\xd1\\x73\\x63\\x74\\x1e\\x96\\xa6\\x7e\\x81\\x64\\x01\\xe8\\x09\\x8c\\x17\\xbf\\xfe\\x9c\\x6f\\x35\\x87\\x64\\x6f\\x40\\xe9\\xfd\\xb6\\x81\\x9f\\xd2\\x2a\\x74\\x3a\\x7a\\x6e\\x10\\xfe\\xba\\x11\"},\n{{0xcd,0xa4,0xba,0x93,0x94,0x0a,0xa0,0xc0,0xc3,0x15,0x0b,0x39,0x29,0xb9,0x5e,0xe7,0x76,0x9c,0xe4,0x3f,0xd9,0x8e,0xca,0xff,0x9c,0x4a,0x50,0x9e,0x73,0x6d,0x5c,0x8e,},{0xf4,0xc7,0xa2,0x5f,0x1a,0x74,0x3d,0xaf,0x41,0x41,0x7e,0x47,0xe0,0x27,0x53,0x7f,0x24,0xf4,0x81,0xbd,0x1a,0x75,0xe6,0xb1,0xd3,0x3e,0xc4,0xc8,0x2c,0x55,0xa2,0xd3,},{0x31,0x04,0x8d,0x33,0x4a,0xf0,0x5a,0x4f,0x27,0x5f,0xf8,0x27,0x54,0x4e,0xa2,0x96,0xa4,0xa7,0x75,0xfa,0x59,0xef,0xa0,0x00,0xc5,0x76,0x13,0xfa,0x6e,0x5c,0x49,0x3c,0x3a,0x9b,0x79,0xe8,0xce,0x56,0xe7,0x22,0x5b,0x0f,0xa3,0x26,0x20,0x4f,0x03,0x36,0xc2,0x13,0x53,0x5a,0xe5,0x89,0x17,0x7a,0x8e,0xae,0xdb,0x6d,0xf8,0xb2,0x02,0x03,},\"\\x3a\\x1d\\x66\\x8c\\x66\\x88\\x41\\x48\\x96\\xa7\\x69\\x7f\\x3c\\x2e\\x43\\x10\\x98\\xed\\xfc\\x45\\x7e\\x04\\xd2\\xda\\x86\\x95\\x68\\xad\\x5b\\x33\\x10\\xe5\\x9e\\x4c\\x72\\x7c\\x90\\x3c\\xbf\\x18\\x17\\x40\\x88\\x02\\x31\\x9a\\x8c\\x23\\x1b\\x58\\x02\\x3d\\xfa\\xe4\\x94\\xc0\\x13\\xaf\\x0f\\xdb\\x78\\xc9\\x1d\\x5b\\x45\\x7f\\x8c\\x47\\xa3\\xdc\\x31\\xd8\\xc8\\x59\\x4a\\xa0\\x8f\\x14\\x62\\x03\\xfa\\x2c\\x28\\xb3\\xdd\\x79\\x6a\\x11\\xa9\\x7a\\xde\\xde\\x6a\\x7a\\x70\\x9b\\x5a\\x19\\x18\\xef\\x1b\\xea\\x83\\x53\\x3c\\x78\\x34\\x73\\x70\\x33\\x56\\xf5\\xbe\\xea\\x7f\\xd1\\x8a\\xc4\\x4e\\xc6\\x89\\x04\\x95\\xed\\x17\\x0d\\x03\\xf1\\x5b\\x41\\x86\\x08\\xa7\\xd9\\xef\\xd5\\x2f\\xa1\\x09\\x18\\x63\\x80\\x51\\xc4\\x48\\xd9\\x8d\\x57\\x24\\xf5\\x67\\xc8\\xc6\\x7f\\xd5\\xb6\\xec\\x8c\\x3d\\x63\\x60\\x08\\xb9\\xba\\xe5\\xe8\\xb1\\xe9\\x84\\xf8\\xff\\xb8\\xb6\\x4b\\xee\\xbd\\x63\\x45\\xa1\\x05\\xc1\\xc1\\x08\\x31\\x32\\xfd\\x45\\x08\\xd6\\xac\\x0d\\x4e\\x91\\x45\\x50\\x12\\x10\\xe5\\x17\\xd9\\xb2\\x24\\x78\\xe2\\x15\\xb6\\x02\\x59\\x9f\\x80\\x37\\x62\\xdc\\xd5\\xa4\\x09\\xb3\\x46\\x0e\\x7f\\x34\\x0f\\x47\\xef\\x77\\x28\\x1a\\xd2\\x38\\x3d\\xe0\\x8c\\x5b\\x80\\x95\\x38\\xaa\\xec\\x92\\x2b\\xfc\\xa0\\xd6\\x75\\x2f\\x14\\x79\\x72\\x64\\x6d\\x0a\\x8d\\x83\\x40\\x77\\x2c\\x87\\x1d\\x3b\\x34\\xab\\xc0\\x60\\x37\\xde\\x3a\\xb4\\xe3\\x71\\x29\\x86\\x5d\\x5b\\xa7\\x0b\\x6f\\x3c\\xc9\\xa0\\x59\\xef\\xb7\\xdd\\xdc\\x38\\x82\\xf4\\xfc\\xfe\\x13\\xf4\\x48\\xc9\\xbc\\x66\\x48\\x88\\x58\\x96\\x03\\xba\\x98\\x68\\x3a\\x93\\xb4\\xb3\\xb1\\x01\\x49\\x92\\xa5\\x5c\\x8e\\x4e\\xa1\\xba\\xf9\\xcc\\x00\\xd1\\xba\\xdf\\xf5\\xfd\\x7f\\x5d\\xa5\\xe3\\x07\\xfb\\xd1\\xb4\\xc9\\x84\\xe0\\xfa\\x0e\\xde\\xc5\\xd3\\x0b\\xfe\\xf5\\xf4\\x77\\x30\\x12\\x63\\xb5\\xd7\\x52\\x00\\x1b\\x85\\xdd\\x52\\xdf\\x3b\\x4a\\x7a\\xc2\\x3b\\x93\\x0a\\x91\\xc0\\xa4\\x57\\x65\\xa6\\x64\\x88\\xd8\\xeb\\x59\\x01\\x85\\x70\\x60\\x06\\x7b\\x82\\x37\\x81\\x88\\x54\\x92\\x88\\xdd\\xc6\\x18\\x31\\xe5\\xb6\\x84\\x1b\\x34\\x4c\\xae\\x22\\x50\\x04\\x22\\x19\\xcf\\xb4\\xac\\xe0\\x23\\xe6\\x91\\xf9\\xe4\\x8d\\x00\\x6e\\x9a\\x07\\xc6\\x7d\\x24\\x68\\xf9\\x35\\x93\\xb4\\xaf\\xc1\\x61\\xc0\\x76\\x8b\\x6c\\xeb\\x74\\x4c\\x24\\xc9\\x23\\xda\\x34\\xaf\\x3d\\x5e\\xd5\\x77\\xcc\\x7f\\x85\\xd4\\x91\\x56\\x0f\\x4c\\x0b\\xcb\\xcd\\x1d\\x5e\\x34\\x21\\xbd\\x1c\\xcf\\xaf\\xb3\\x73\\xd6\\x51\\xbd\\x61\\xed\\x71\\xc0\\x9e\\x99\\xf6\\x12\\x00\\x17\\x04\\xd0\\xc6\\x30\\xd8\\x54\\x7b\\xd9\\x70\\xb6\\x6e\\x7f\\x5c\\xe7\\xa0\\x14\\xe0\\xff\\x5a\\x33\\x7d\\xc5\\xc5\\x6a\\x99\\xf1\\x31\\xb9\\x12\\x91\\x40\\xee\\xea\\x39\\x39\\x7c\\x48\\xca\\xa9\\xa8\\x08\\x6f\\x9f\\xd9\\x91\\x50\\xbe\\x7e\\xf8\\x7b\\x6d\\x4b\\x94\\xb1\\xbd\\x52\\x87\\x8b\\xf3\\xbb\\xfc\\xce\\xac\\xc2\\xcc\\x45\\xe8\\x97\\x1c\\x3a\\x4d\\x4a\\x3e\\xb8\\x6a\\xf9\\x87\\x4d\\x4f\\xa5\\xe7\\xca\\xa7\\xf4\\x5d\\x15\\x53\\xff\\xbb\\x41\\x64\\x5b\\xf0\\xf5\\xe9\\xb2\\x97\\x72\\xe3\\xdc\\x08\\x1b\\x25\\xb5\\x2e\\x1c\\xb7\\xe2\\x16\\x74\\x83\\xd5\\x4f\\xba\\x69\\x0d\\xdb\\x29\\xd5\\x46\\x2d\\x2a\\x27\\xa3\\x5d\\x85\\xf0\\x07\\xad\\xed\\xe2\\xa3\\xdd\\x72\\x81\\xf6\\x54\\x33\\x6a\\xfa\\xfb\\x73\\x70\\x78\\x2b\\x29\\xca\\xd6\\x43\\xd9\\xd9\\xdb\\x2f\\x05\\xf2\\x81\\xb5\\x3e\\x13\\x3e\\xc3\\x0e\\xec\\x09\\xfb\\x0d\\x06\\x1b\\x74\\x58\\x1a\\x2b\\xd2\\x79\\x0b\\x13\\x73\\x91\\xf1\\x93\\x28\\x88\\x0f\\x64\\xc5\\x3b\\xe7\\x00\\xd0\\xfa\\xdd\\xb7\\x0d\\xc1\\x65\\xd2\\xd6\\x2e\\x67\\x1e\\xb9\\x44\\x9a\\x2e\\x6e\\x9d\\xf2\\xc1\\x6d\\x8f\\x49\\xfa\\x4b\\x5b\\x84\\x30\\x9f\\x73\\x35\\x13\\x3d\\xbe\\x87\\x2c\\x5a\\x8f\\xdc\\xfb\\xc4\\x98\\x0a\\xbf\\xb3\\xc9\\x59\\x7d\\x5d\\x66\\x7a\\xd2\\xf6\\x88\\xc7\\xab\\x24\\xc9\\xe4\\x40\\x29\\x8d\\x72\\xb2\\x8b\\x0f\\xcd\\xe9\\xc6\\xf0\\x71\\xbc\\xcc\\x93\\xe8\\xdd\\xbb\\xa7\\xb6\\x0a\\x0b\\x54\\x4a\\x2e\\x06\\xc3\\x9c\\x67\\x23\\xd4\\xf7\\xdc\\x18\\x5c\\x21\\x13\\x5f\\xd1\\x3a\\x72\\x77\\x0b\\x97\\x61\\x19\\xe4\\x9a\\x1f\\x81\\xed\\x47\\x6b\\xe0\\x7c\\x44\\x3d\\xe0\\xb0\\xee\\x76\\xfb\\xd9\\x19\\x38\\x93\\x28\\xb3\\xeb\\x86\\x07\\xbc\\x2f\\xe3\\x8f\\x85\\x74\\x5e\\x28\\xad\\xb7\\x48\\x2b\\x70\\x1c\\xcc\\x66\\x90\\xe4\\xae\\x5a\\x93\\x32\\xea\\x44\\x61\\x31\\x79\\x38\\x7d\\xc6\\xfc\\x47\\xc1\\xd1\\xec\\x36\\x60\\x35\\xe9\\x91\\xe1\\x40\\x43\\x23\\xbd\\xbb\\xf5\\x35\\xf1\\xc3\\x3c\\xf5\\x7b\\x67\\x23\\xf1\\x3c\\xa6\\xca\\x32\\x9e\\x2a\\xaa\\x4b\\x46\\xb4\\x26\\x07\\x33\\x99\\x06\\xc7\\xef\\x49\\xb3\\x2d\\xb8\\x2c\\xdf\\x6a\\x87\\xad\"},\n{{0x21,0x7e,0xcd,0x6a,0x7f,0xcc,0x98,0x71,0x92,0x10,0xc3,0x4c,0xc2,0xe1,0x4f,0x5e,0x2d,0x6b,0x5a,0x22,0xf2,0x68,0xc1,0x4b,0xc4,0xd8,0xa7,0xf2,0x81,0x72,0x00,0xc3,},{0xd5,0x91,0x91,0xce,0x28,0x2d,0x72,0xfe,0x3a,0xc4,0x58,0x78,0xe2,0x4b,0xb2,0xf2,0x8c,0x40,0x9b,0xa0,0x5d,0x76,0xce,0x9b,0xcf,0x22,0xf5,0x0b,0x0c,0x77,0x86,0x75,},{0xa0,0xb1,0x69,0xe8,0xe9,0xce,0x55,0x75,0x55,0xe0,0x33,0x4a,0x0d,0xe7,0x43,0x8e,0x55,0x36,0x75,0x48,0x9e,0xa4,0xba,0x9c,0xc6,0x3a,0x23,0x4d,0x00,0xde,0xd8,0xab,0x69,0x67,0xa3,0xbe,0x90,0xef,0x69,0xe0,0x76,0xdb,0x9e,0xa3,0xd5,0xca,0x23,0xb3,0x24,0x8d,0xd2,0x59,0x91,0xee,0x1f,0x4d,0x80,0x62,0x0b,0xf4,0xdb,0x43,0x8f,0x0e,},\"\\x9b\\x53\\x37\\xe7\\x8f\\xb3\\x82\\xf2\\x2e\\xa6\\x0e\\x03\\xc0\\xbf\\x3e\\xe4\\x70\\x0b\\x69\\x78\\xa9\\x1e\\xe6\\xac\\xdf\\x6a\\x40\\x9e\\x49\\x18\\xd1\\x68\\x48\\x81\\xfa\\x1d\\x11\\x8c\\x08\\xc9\\xf6\\xf2\\xca\\x0c\\xab\\x56\\x74\\x02\\xc9\\x50\\x10\\xe7\\xab\\xdf\\xe8\\x48\\xae\\x79\\xba\\x24\\x9a\\xdc\\xb9\\x6e\\xae\\x1d\\xfa\\x08\\x43\\x95\\x21\\x39\\xcf\\x49\\xb5\\x88\\x64\\x78\\x95\\x69\\x1a\\x2e\\x98\\x80\\x46\\x6b\\x7e\\x77\\xe5\\x4f\\x6f\\x60\\x81\\x5e\\xbf\\xd5\\xe5\\x74\\x8f\\x41\\x3c\\x0e\\x15\\xf9\\xd5\\x76\\x79\\x9b\\xcf\\x31\\x28\\x47\\x10\\x63\\x6f\\x6e\\x9d\\xc7\\x87\\x85\\x00\\x79\\x6e\\xed\\x80\\xc8\\xaf\\x4b\\xe2\\x96\\x19\\x52\\xea\\x80\\xbb\\xed\\x14\\x04\\xbd\\x5d\\xae\\x9e\\x6d\\x05\\xfd\\x4f\\x32\\x5a\\x3b\\x83\\xcd\\x45\\x28\\xa0\\x86\\x9c\\xef\\x84\\xb4\\xd3\\x0e\\x02\\xf9\\x41\\xd7\\x49\\xa8\\xda\\xc9\\x7b\\xb3\\xfa\\x83\\x9d\\x25\\x73\\x9b\\x97\\xec\\x37\\x45\\x36\\xbd\\xea\\x50\\x04\\x84\\xa9\\x41\\xdb\\x9f\\x22\\x99\\x97\\x06\\x58\\xd4\\x11\\x48\\x29\\x5c\\xa0\\x84\\x6c\\xa2\\x36\\x62\\x38\\xb6\\x20\\x1a\\x48\\xb3\\xe4\\x47\\xed\\xbe\\xa7\\xa4\\xc8\\xf7\\x10\\x20\\x14\\x27\\x69\\xe1\\x5f\\xa7\\x2a\\xe5\\xf2\\x87\\x14\\x0b\\xc5\\x95\\x3b\\x8a\\x9a\\x24\\x2d\\x20\\x5f\\xc0\\x19\\x09\\x1f\\x2a\\xbe\\xd0\\xfd\\xa4\\x7f\\x52\\xd5\\x9a\\x02\\x04\\xce\\x74\\x01\\xc1\\x82\\x9b\\x58\\x57\\xb9\\xa0\\x91\\x6f\\xce\\xbe\\x2e\\xef\\x99\\x1c\\x41\\x3a\\xcd\\x71\\xb1\\x8d\\x85\\x90\\xd6\\xb6\\xd0\\xfb\\x39\\x94\\x30\\x26\\x78\\xc2\\x9f\\x2b\\x6a\\x53\\x02\\x3f\\x91\\x87\\xe4\\x6c\\x36\\x79\\x0b\\xce\\x73\\x87\\x3c\\x54\\x5a\\x72\\xbe\\xb5\\x53\\x29\\x4b\\x1e\\xe5\\xd0\\xd0\\xdf\\xf2\\x39\\xe2\\x8e\\xc6\\x3b\\x01\\xe4\\xd8\\xfe\\x0d\\x6e\\x69\\xb1\\x60\\x1e\\xfa\\x24\\x11\\xf0\\xc0\\x60\\x1e\\x7e\\x4f\\x65\\xc9\\x84\\xf8\\x29\\xf0\\xdc\\x2a\\x84\\x21\\xe7\\xf6\\x6d\\x93\\x30\\x53\\x71\\x51\\xc7\\x24\\x3c\\xa5\\x24\\xd7\\xa5\\x47\\x35\\xc6\\xe3\\x44\\xf1\\xfc\\x93\\x8e\\xae\\xea\\x27\\x79\\xc9\\x40\\x89\\x1d\\x6d\\x01\\xaa\\x55\\xf4\\x0c\\xc1\\xad\\xba\\x12\\xe8\\xa6\\x7a\\xd9\\xa2\\x7f\\xe6\\x3f\\xb4\\xf3\\x8d\\xc0\\xf0\\x18\\x41\\x92\\x57\\x18\\x42\\x72\\x55\\xbd\\x66\\x5d\\x5e\\xb3\\xbc\\x86\\x98\\x96\\xdb\\x86\\x25\\x20\\x4a\\xd4\\xb0\\x2f\\x5a\\x22\\xaa\\xee\\xad\\x6e\\x30\\x04\\x71\\xfe\\xa6\\x1d\\xbb\\x1b\\x55\\xc0\\x71\\x36\\x5c\\x58\\xb1\\x51\\x1f\\x38\\xb0\\x9a\\x46\\x71\\xbd\\x66\\xb3\\xfe\\xdd\\xa9\\xc8\\x7e\\x43\\xd1\\xeb\\xf3\\x01\\x76\\x4e\\x18\\xfc\\x0c\\xf1\\x6b\\x2d\\x2d\\x67\\xed\\x23\\x9b\\x39\\x3a\\xc7\\x19\\x68\\xa9\\x03\\xc0\\x24\\x77\\xfb\\x2d\\xf9\\xef\\x01\\xdb\\xfc\\x31\\x67\\xde\\x72\\x65\\xf8\\x91\\xe4\\xfd\\x24\\xd0\\x2c\\x63\\x10\\x35\\x19\\xb8\\x6a\\x70\\x85\\xb1\\xec\\x2f\\xb4\\x19\\xdb\\x76\\x6b\\xee\\x7a\\x64\\x1a\\x4b\\xe4\\x29\\x61\\x4a\\xb8\\x9f\\x20\\xf9\\x75\\x34\\x10\\x72\\xbf\\x04\\x41\\x9f\\xb6\\x9b\\xe7\\xa9\\xee\\x71\\xa5\\xb4\\x9a\\xf8\\x3e\\xd3\\x22\\xba\\xc6\\x8a\\x42\\x9f\\xf5\\xc5\\x20\\x67\\x73\\xbe\\x54\\x38\\xb6\\x5e\\x53\\xf6\\x09\\x72\\x9f\\x4f\\x6a\\x21\\xc1\\x33\\x39\\x11\\x26\\x4d\\x63\\x92\\x70\\x17\\xe8\\x13\\x6b\\x47\\x25\\xcd\\x1c\\xc9\\x64\\xe0\\x8c\\xa0\\x93\\x3a\\x56\\x1e\\x7e\\x3f\\x59\\x87\\x76\\x83\\x30\\xe2\\xe5\\x4f\\x8d\\x72\\x8f\\x59\\xed\\xfe\\x2c\\x91\\xc4\\xf9\\x9a\\xef\\x97\\xd1\\x85\\x59\\x19\\x5a\\x3d\\x8e\\xb3\\x15\\xdf\\xf9\\x6f\\xe2\\x76\\xda\\x71\\x37\\xef\\xf9\\x30\\x57\\xac\\x73\\x1e\\x06\\xa6\\x0a\\x58\\xbd\\x8a\\x9a\\xe8\\xc7\\xcb\\xaf\\xf0\\xcb\\x33\\x72\\xc6\\x8d\\xaa\\x17\\x5c\\x42\\x8d\\x52\\xf1\\x07\\x3a\\x38\\xbf\\x29\\x46\\x5d\\x2a\\x71\\x28\\xbb\\x40\\x07\\x40\\x06\\xed\\xcb\\x72\\x5a\\x83\\x1d\\x81\\x28\\x64\\xef\\x43\\xf3\\xb8\\x66\\x7c\\x9f\\xb7\\x10\\x93\\xa1\\x67\\x30\\x49\\xde\\xc0\\x5e\\x09\\x16\\x9d\\x86\\xfe\\xe9\\x2d\\xf2\\x86\\x00\\x8a\\xd9\\x90\\x65\\xa2\\x92\\x97\\x97\\xa9\\x13\\xd0\\x23\\x3f\\x4d\\x1a\\x95\\xa2\\x20\\xbd\\x91\\xc1\\x1d\\xd9\\xc4\\x56\\x85\\xdc\\xad\\x38\\x57\\x80\\xa0\\xc4\\x8b\\x9c\\x4a\\xd2\\xd6\\x63\\x03\\xe8\\xde\\x4a\\xf1\\xdb\\x3c\\x04\\xe4\\xa3\\xdd\\x42\\x19\\xfe\\x77\\x3f\\x83\\xa8\\x92\\x4b\\x0f\\xcb\\xff\\xfc\\xf2\\x64\\xab\\xce\\x32\\x83\\x29\\x24\\x03\\x6b\\xfa\\xbb\\xa6\\x54\\x6b\\x1d\\xf4\\xe3\\xf7\\x88\\xed\\x8a\\xd5\\xc2\\xcd\\x92\\xb2\\x64\\x1b\\x47\\x09\\x0a\\x10\\x3c\\xf5\\xbd\\xc4\\x6d\\x8b\\x21\\x43\\x17\\x47\\x57\\xda\\x80\\x1c\\x36\\x0a\\x7a\\xa1\\x07\\xfa\\xc6\\x54\\xb3\\x4c\\x86\\x0b\\xd5\\x4f\\x76\\xbb\\xf4\\x3c\\x48\\x47\\x8d\\xf4\\xfe\\x7a\\xa5\\x9c\\xf9\\x1d\"},\n{{0x08,0xd1,0xd0,0x6f,0x3e,0xc2,0x9e,0xb5,0x22,0x93,0x90,0x7b,0x70,0x5e,0xc5,0x6c,0x5a,0xb3,0x54,0xfb,0x78,0x67,0x37,0x73,0xae,0x61,0x25,0x30,0x94,0xb8,0x9e,0x82,},{0xc1,0xb9,0x9a,0x87,0xad,0x15,0xbd,0x46,0xf6,0xc8,0x48,0x45,0x2a,0xf0,0xfa,0x3c,0xcc,0xcb,0x5c,0xdf,0x6e,0x34,0x8d,0x81,0x6e,0x36,0xc5,0xd0,0xfc,0xa6,0x6e,0x66,},{0x0b,0x8e,0xdc,0xb8,0xb1,0x5a,0x8c,0xd0,0x74,0xc4,0x1d,0xc2,0xa1,0xba,0x29,0xd9,0x64,0x8d,0x6a,0xcb,0xdc,0x33,0x83,0x14,0x70,0x7e,0xca,0x6f,0xb4,0x71,0x4c,0x99,0x54,0x3b,0x49,0x07,0xb9,0xf8,0x5e,0x57,0xee,0xcf,0xfe,0x0f,0x7a,0x6b,0x70,0x73,0xa8,0x09,0x46,0xf8,0x08,0x75,0x53,0xf4,0x68,0x31,0x09,0x27,0x3a,0x60,0x4a,0x08,},\"\\x12\\x0b\\x35\\x57\\x3c\\x34\\x91\\x4b\\x37\\x30\\x51\\x88\\x0d\\xa2\\x7e\\xd2\\x41\\x37\\x7f\\x0e\\x78\\x97\\x2c\\x98\\xd0\\xfa\\xeb\\xaa\\x76\\x7e\\xb7\\xa7\\xc7\\xe7\\xc6\\xfc\\x34\\x05\\xa4\\x33\\x6e\\xf9\\x5b\\xc5\\xda\\x92\\x25\\xbb\\xd0\\x9e\\x9e\\x11\\xf2\\xa1\\xbf\\x14\\x2a\\xf4\\xe8\\xa0\\xf9\\x24\\xd3\\x23\\xdd\\x5a\\x49\\xdf\\xe5\\x84\\xf0\\x90\\x43\\x9c\\x08\\xe5\\x15\\x11\\x34\\x4d\\x47\\x0c\\x62\\x00\\xac\\x7e\\x7c\\xa1\\x50\\xd0\\x88\\xa9\\x1e\\x47\\xc4\\xc9\\xff\\x74\\xe3\\x8a\\x42\\xa3\\x32\\x15\\x5d\\x81\\x52\\xae\\x4a\\xbd\\x11\\x61\\xad\\xca\\x93\\x4c\\x23\\x4c\\xe4\\x60\\xaf\\x87\\x89\\xe5\\x3f\\x10\\x9d\\x7d\\x31\\xee\\xde\\x0a\\x90\\x9b\\xd1\\x93\\xfc\\x8d\\x3c\\x2c\\xfe\\xc1\\x0b\\x14\\x3c\\x31\\x47\\x67\\x11\\xbb\\xec\\x27\\xe1\\x96\\xa5\\x49\\x85\\xbc\\x34\\x71\\x67\\xac\\xd2\\x33\\x50\\x88\\x27\\xba\\xd3\\x6e\\x54\\x8c\\x88\\x06\\x42\\xb8\\x6a\\x28\\xc6\\xd3\\x40\\x4b\\x51\\x1d\\xa2\\x4f\\x11\\xdf\\xaf\\x6a\\x8f\\x46\\xdd\\xcb\\xc9\\xde\\x9e\\x39\\x15\\x97\\x66\\x9b\\xdd\\xfc\\xa6\\x56\\x0f\\x91\\xac\\xd3\\x45\\x9f\\x32\\x9b\\xb0\\x71\\xdd\\x80\\xda\\xdf\\x35\\xf0\\xe5\\x0d\\xf5\\xb1\\x0f\\x88\\xd2\\x67\\xac\\x9d\\x30\\x62\\x33\\x0d\\xd9\\x9a\\x6b\\xcf\\xa1\\x31\\x87\\xf4\\x5c\\x0c\\x21\\x4d\\xcd\\xe2\\xcd\\xf9\\xc3\\xba\\x4d\\x59\\xe6\\x33\\xa3\\x54\\xa4\\xe2\\x77\\xc6\\x77\\xbb\\xdf\\xa2\\x41\\x91\\x17\\x9c\\xbc\\xaf\\x05\\xa1\\x0d\\x40\\x78\\xd8\\xad\\xd9\\x3b\\xc9\\xed\\x8f\\x6c\\x6c\\x49\\x97\\x57\\x40\\x36\\x55\\x34\\x1f\\x90\\x4e\\x37\\xd9\\x27\\x75\\x0c\\x69\\x9c\\x26\\x9d\\xc9\\x0d\\xc2\\x6d\\x00\\x56\\x25\\xc3\\xf4\\x12\\x4b\\xff\\x66\\xfe\\xca\\x59\\xd4\\xab\\xff\\x41\\x72\\xba\\x3d\\xf4\\x5a\\x87\\x43\\x02\\x23\\x10\\x30\\xfa\\x78\\x33\\x84\\xf5\\x09\\x99\\xe3\\xc4\\xba\\xa5\\xea\\xdb\\x45\\x14\\x52\\xc8\\x88\\xb5\\x19\\x27\\x2e\\x90\\xf7\\x3c\\x68\\x72\\x76\\x8e\\x0d\\xe2\\x0e\\xe2\\xe5\\xf9\\x50\\x2f\\x35\\xe4\\x9f\\xec\\xc2\\x8b\\x75\\x20\\x18\\x87\\xfe\\xd2\\x81\\x8e\\xff\\x54\\x53\\x98\\x39\\x2f\\x5e\\x5b\\x68\\x76\\xbc\\x55\\x6a\\xc1\\x3a\\x19\\x03\\xad\\xa1\\xb9\\xd7\\x25\\xb0\\x4a\\x14\\x20\\x4b\\x59\\x9e\\xc3\\x3d\\x62\\xb7\\xdc\\xae\\xea\\x8c\\x52\\x87\\x7b\\x2c\\xfd\\xc3\\x55\\x8a\\x91\\xd2\\xc9\\x15\\x75\\x00\\xa3\\xbb\\x6d\\x45\\x2e\\x5e\\x2f\\xf0\\x93\\x29\\x4f\\xc4\\x33\\xcb\\xd6\\x34\\x65\\xbb\\x19\\x13\\x07\\xed\\x80\\x1a\\x15\\xb8\\x5d\\xc2\\xff\\x0b\\xb3\\x83\\x12\\xf8\\xb8\\x17\\xa4\\x36\\xd4\\x22\\xcf\\x46\\x07\\xc6\\x4e\\xe7\\x03\\x59\\x23\\xdb\\x6b\\x96\\xa3\\x89\\x99\\x10\\x14\\x9b\\x0d\\xa4\\xaa\\x3e\\x96\\x68\\x5d\\x71\\x63\\xaa\\xcf\\x9e\\x61\\x9d\\xc6\\x08\\x13\\xce\\x4f\\x34\\x4f\\x30\\x79\\xb4\\x3f\\x18\\x7f\\xa3\\x1b\\xda\\xcb\\x9a\\x1d\\x77\\x20\\xb9\\x39\\xd5\\xbd\\x24\\x1b\\x96\\xa1\\x77\\xd7\\xb7\\x76\\x8f\\xfe\\xbf\\x79\\x04\\x4c\\xd2\\x95\\x6d\\x6f\\x88\\xdb\\x1c\\x24\\x3a\\x10\\xfe\\xde\\x68\\x14\\x85\\x2c\\xf4\\x04\\xb2\\xcd\\xcf\\xa7\\x74\\x07\\x6d\\xc1\\x25\\xc7\\x0a\\x57\\xc6\\x90\\x7e\\x99\\xaf\\xe3\\x96\\x22\\xae\\x11\\xf5\\x57\\xe7\\xd3\\x4b\\x39\\xaa\\xaf\\x45\\xf8\\x34\\x05\\x8d\\x2f\\xe5\\xf1\\x5b\\x5e\\xb7\\x0a\\xc1\\x5a\\x90\\xa3\\xde\\x58\\x50\\xab\\x1d\\xcb\\x48\\xb0\\x6b\\x6c\\xca\\xa4\\xb4\\x2f\\x85\\x7e\\x71\\xec\\x00\\xb8\\xa3\\xd8\\x97\\x4b\\x0b\\xea\\x68\\xfa\\x0f\\x66\\x55\\x92\\x11\\x5b\\x4f\\xa5\\x55\\x72\\xcf\\x0b\\x07\\x38\\x64\\x1f\\xc8\\x68\\xd4\\xa2\\xe7\\x14\\xdb\\x3a\\xd7\\x21\\x9a\\x82\\x3d\\x54\\xb7\\xf7\\xc2\\x65\\x6b\\xa5\\xc5\\xee\\xbe\\x35\\x94\\xc7\\xdb\\x12\\x29\\x8c\\x16\\x25\\x1d\\x98\\x45\\xbf\\x2f\\x78\\x00\\xb4\\x19\\x0b\\x74\\x6e\\x21\\xb0\\xc1\\xa5\\xc4\\x7a\\x3d\\xf9\\xa0\\x59\\xce\\x09\\x56\\x67\\x4e\\xb7\\x03\\xde\\xcb\\x0a\\x00\\x45\\x43\\x7d\\xa4\\xda\\x10\\xf2\\x86\\xd7\\x20\\xd1\\xb9\\xdf\\x05\\xfb\\x24\\x41\\x5d\\x68\\xe0\\x65\\x57\\x0e\\x6b\\x31\\x50\\x31\\x42\\xd0\\x33\\x35\\xa8\\x07\\xbd\\xca\\x30\\x89\\x2e\\xdb\\x5f\\x55\\xf8\\x98\\x9d\\x9e\\x64\\x96\\x59\\xc0\\x74\\x4c\\x54\\x33\\xbf\\xb4\\xde\\xeb\\x11\\xc2\\x62\\x6a\\x86\\x50\\xe5\\x4d\\x4d\\x39\\x8b\\xa1\\x9b\\x64\\xf6\\x8b\\xed\\x06\\xd7\\xfc\\x40\\x8f\\x47\\x0a\\xc7\\x04\\xe2\\xac\\x92\\x2a\\xc1\\x41\\x1f\\xee\\x24\\x54\\x3e\\x56\\xf2\\xf5\\x0b\\x6b\\x08\\x95\\x3d\\xc5\\x6a\\x7a\\x75\\xed\\xae\\x43\\x0a\\x6d\\xf2\\x8a\\x22\\x7a\\xda\\xc9\\x1b\\xa2\\x6f\\x0e\\x19\\x85\\x95\\x32\\x77\\x39\\xcb\\xa3\\x03\\xe9\\xaa\\x39\\x3e\\xa6\\x61\\x8a\\x84\\xf8\\xf5\\x03\\xd0\\x05\\x6e\\xe8\\xd8\\x7e\\x37\\x96\\xe0\\x36\\xcc\\x51\\xcc\\xb7\\x91\\xde\\xb7\\x95\"},\n{{0xf0,0xc8,0x5c,0x76,0xb1,0x53,0x2e,0x89,0xae,0xa9,0x75,0x15,0x6d,0xdd,0xb1,0xd3,0xd0,0x66,0xf6,0x40,0x9f,0x84,0x1b,0xb4,0x41,0x09,0x22,0x72,0x5f,0x26,0x9d,0x86,},{0xfd,0x75,0xfc,0x75,0xc3,0x6f,0x83,0x49,0x8d,0x8f,0x08,0x27,0xf0,0x1d,0x3b,0x45,0x7f,0x8b,0xc4,0xd9,0xdc,0x55,0xe4,0xa4,0x62,0x74,0xdd,0xf0,0x03,0x4f,0xe1,0x6f,},{0x42,0x18,0xfe,0x4c,0x1d,0xce,0x79,0x5c,0xa9,0x2a,0x49,0xa6,0xf4,0x79,0x8e,0xb5,0x41,0x2d,0xc8,0x25,0x86,0x03,0x14,0xec,0x46,0x9f,0xed,0x45,0xde,0x3a,0x7b,0xf8,0xea,0x55,0xe8,0x53,0xa3,0x49,0x58,0x4b,0xd9,0x5a,0x82,0x6a,0x58,0x5a,0x50,0x3f,0xd5,0x0b,0xfe,0x4c,0x63,0x5e,0xf1,0x83,0xd0,0x73,0x01,0x36,0x7e,0x90,0x10,0x0a,},\"\\xae\\x2e\\xb0\\x18\\xd4\\x8d\\xbd\\x4f\\x21\\x0b\\x16\\x77\\x8b\\x5b\\xd2\\xfd\\x14\\xc9\\x4e\\x6b\\xbf\\x2b\\x3f\\xf8\\x55\\x18\\xe5\\x60\\xab\\x8d\\x3e\\x72\\x20\\x1f\\x43\\x34\\x20\\xf0\\x0f\\x11\\xbc\\x78\\xe0\\xe9\\xf3\\x72\\x08\\x75\\xb2\\xe9\\xdc\\x11\\xe0\\x43\\x25\\xb8\\xb3\\xf0\\xd4\\x65\\xdd\\xab\\x21\\x51\\x1c\\x45\\x7d\\x6a\\xca\\xd8\\xf2\\xfd\\x5f\\xdc\\x0d\\x28\\x23\\xfe\\x6c\\xaa\\x66\\xa1\\x91\\xa3\\xb6\\x32\\x6b\\x32\\xa1\\x6b\\xef\\xd6\\x4d\\x15\\xb3\\x61\\xa4\\x15\\x13\\x64\\x1b\\xce\\xba\\x26\\xbf\\xe9\\x3b\\xdf\\x85\\x4a\\x4f\\x8f\\x8a\\x0b\\x29\\xf7\\xe2\\x82\\x62\\xe2\\xd6\\xe9\\x8a\\xa2\\x4a\\xc2\\x7f\\x6f\\x78\\x83\\xac\\x01\\xa7\\x4c\\x40\\xcc\\xe9\\x47\\xeb\\xac\\x70\\xe9\\xfe\\xf2\\xa1\\x6e\\x62\\x89\\xe4\\x68\\x95\\x0e\\x39\\x1e\\x9e\\x24\\xef\\x58\\xe8\\x8a\\x44\\x37\\x72\\x69\\xce\\xba\\xfe\\xd8\\x98\\x7d\\x22\\x0d\\xca\\xe2\\xd8\\xb1\\x26\\xb6\\xbf\\x81\\x21\\x67\\xd0\\x23\\xd9\\xba\\xac\\x95\\x0d\\x9d\\xb8\\xcf\\x52\\xde\\x63\\x06\\xbd\\x48\\x99\\x96\\x10\\xc0\\xa4\\x33\\xfa\\x9e\\x17\\x71\\xcb\\x83\\x2d\\x41\\x97\\xaa\\x34\\x0d\\xd0\\xcc\\xd0\\x74\\x4f\\xc6\\xb6\\x2f\\x90\\xbd\\x3e\\xbb\\x53\\x08\\xca\\xb5\\xf9\\x40\\xe2\\x91\\x64\\x23\\xcf\\x0f\\x3b\\xf0\\x80\\xc0\\x6a\\x94\\xf0\\x26\\x91\\x04\\x60\\xdd\\xa8\\x09\\x37\\x4e\\x64\\x57\\xf0\\x64\\xf1\\x78\\xe3\\x08\\xe7\\xa1\\xb5\\xaf\\x4d\\xef\\x31\\x90\\x07\\xd0\\x41\\x77\\x8c\\x3d\\x6a\\x41\\x9f\\x51\\xba\\xdf\\x87\\x66\\x38\\x79\\x30\\x2b\\x53\\xff\\x26\\x9d\\xf4\\x42\\xd0\\xe0\\x5c\\x95\\x8d\\x5b\\xaa\\xcc\\xee\\xd7\\xf5\\xf8\\xaf\\xc8\\x11\\xc1\\x89\\x00\\xee\\x3b\\x0f\\x61\\xe5\\xdc\\xcf\\xd5\\xda\\xc8\\x53\\x32\\xd3\\x2e\\xbb\\xa3\\x71\\xaa\\x2d\\x47\\xa6\\x06\\xf5\\x95\\x46\\xe4\\xbb\\xb6\\x05\\xa7\\x46\\x77\\xb1\\x9a\\x0f\\xe8\\xe9\\x5f\\x9f\\x77\\xc0\\xb8\\xb7\\x1d\\x07\\xe9\\x83\\x00\\x4d\\xc2\\xab\\x2c\\xb3\\x79\\x3a\\x32\\x3c\\x10\\x8d\\xfa\\x79\\x70\\xda\\x00\\xdb\\x19\\x86\\x74\\xbd\\x34\\xbf\\x73\\x10\\x76\\x7f\\x76\\xa2\\x24\\xe0\\x7b\\xdb\\xc6\\x2b\\x9d\\x07\\x8c\\xbc\\x75\\x36\\x7e\\x2e\\xba\\xa2\\xc5\\xd2\\x74\\xbf\\x34\\x27\\xf2\\xa0\\xcc\\x5d\\xbe\\xf0\\xaf\\x4e\\x63\\xad\\x88\\x9e\\x13\\x1b\\x12\\xbc\\x8c\\xa3\\x2d\\x82\\x7f\\x72\\x60\\xb0\\x44\\x9d\\x04\\x43\\xfa\\x28\\x84\\x40\\xef\\xd1\\x36\\x4e\\x3c\\x98\\x49\\x47\\x7e\\x73\\xee\\x0b\\xa4\\x24\\x0d\\x49\\x2a\\xf5\\xce\\x13\\xc3\\x45\\x61\\xb4\\x50\\x10\\xc1\\x09\\xd8\\x42\\xc1\\xfe\\xd1\\xbe\\x3f\\xa9\\xe1\\x84\\xaa\\xa1\\x40\\x64\\xf4\\x3f\\x6d\\xea\\x0b\\x65\\x9c\\x5b\\x97\\x89\\x3c\\xf2\\xa4\\x33\\xbc\\xfb\\x1d\\x2a\\x87\\xeb\\x56\\x4b\\xd9\\x09\\x2c\\x26\\x66\\x70\\x47\\x31\\xf8\\x3e\\x56\\x43\\x4b\\x2a\\x42\\x99\\x65\\x0c\\x70\\x60\\xf9\\xff\\x7e\\x8a\\xad\\xcb\\x45\\x93\\xf6\\x09\\x18\\x8d\\x8b\\x46\\x76\\x46\\xcf\\xe9\\x52\\x70\\x06\\x7a\\x1d\\x35\\xcd\\x75\\x9f\\xe5\\x81\\xaf\\x4e\\x62\\x60\\x2c\\x02\\xef\\x14\\x74\\x41\\x43\\xeb\\x42\\x4f\\x2d\\x9f\\x33\\xa6\\x02\\x88\\xc1\\xb2\\x5f\\x08\\xe4\\xb2\\xf5\\xfe\\xae\\x06\\xcb\\xcc\\x2b\\x20\\x52\\xbf\\x38\\x4e\\x1a\\x6f\\xcd\\x84\\x71\\xce\\x5e\\x56\\x58\\xd7\\x7f\\x40\\xc3\\x5c\\x41\\x5e\\x2a\\x9e\\x09\\xfb\\x58\\x3b\\xb7\\x47\\x12\\x58\\xe7\\xc8\\x06\\xf3\\xc2\\x18\\x22\\xdd\\x10\\xf5\\x6a\\x64\\x0c\\xdc\\x00\\x12\\x8d\\x3b\\xa5\\x56\\xba\\x51\\xdc\\xaa\\xb4\\x7c\\x3b\\xaf\\x9f\\x01\\x97\\xd3\\x66\\x3d\\xe8\\xd0\\x93\\xe8\\x31\\x73\\x32\\x5d\\xef\\x1e\\x83\\xa2\\xf5\\xf5\\xac\\xf1\\x2a\\xe0\\x9f\\x3c\\xe9\\x6c\\xd8\\x88\\x03\\x4d\\xcb\\xe6\\x14\\x7d\\xc5\\x99\\x83\\x62\\xa4\\xbc\\x40\\x6d\\x28\\x84\\x6a\\xb1\\x50\\x3c\\x17\\xc9\\x4f\\x9a\\xfd\\x90\\x3c\\x9a\\x58\\xe1\\xce\\xbb\\x4a\\xbb\\x4f\\xf6\\xf2\\xa4\\x10\\x24\\xe0\\x6d\\xca\\xad\\x14\\xf5\\xb7\\x0c\\x1b\\x26\\xe6\\x9f\\x96\\xec\\xf1\\x4b\\x8d\\xa3\\x1c\\x62\\x1f\\x9a\\xd4\\xe3\\x0a\\xeb\\x98\\x23\\x78\\x67\\x1f\\x7d\\x1f\\x2c\\x4b\\x57\\x2c\\x41\\xbb\\x88\\x30\\x84\\x0a\\xc5\\xdd\\xce\\xd8\\x81\\xf8\\xff\\xf2\\x10\\xc3\\xc7\\xf2\\x36\\xd8\\xc5\\xf2\\xcf\\xda\\xcd\\xa2\\x98\\x93\\x30\\x2f\\xde\\x15\\x28\\x2d\\xb5\\x40\\xcb\\x54\\x37\\x37\\xdd\\x77\\x85\\x25\\x69\\x22\\x1f\\xdd\\xcd\\xd6\\x8d\\x87\\xe2\\x40\\x21\\x79\\xd3\\xa5\\xa7\\x77\\x34\\xc2\\x75\\xa1\\xd5\\x60\\xa4\\x62\\xf4\\x03\\x18\\xbb\\x68\\x19\\x83\\x7d\\xa3\\xd3\\x05\\xeb\\x49\\xb3\\x86\\x50\\xef\\xdc\\x8f\\xe4\\x09\\xd4\\x0f\\xb9\\x4c\\xd5\\xdc\\x3e\\xb0\\x27\\x38\\xf3\\x88\\x52\\xf6\\x71\\xa0\\xc4\\x14\\x14\\xb7\\x6f\\xb4\\x36\\xf3\\x41\\x7b\\x8e\\xf3\\x00\\x92\\x1c\\x00\\x9e\\xbb\\xd7\\xcf\\x8e\\x11\"},\n{{0x18,0xe2,0x68,0xb1,0x5a,0x25,0x01,0xdd,0x4c,0x97,0x9d,0xc1,0x03,0xca,0x6a,0x84,0x22,0x16,0x13,0x2b,0x3b,0x50,0x81,0xd7,0x75,0xf8,0x86,0x40,0xf8,0x9c,0x80,0x41,},{0xb3,0x4e,0x19,0xc1,0xe2,0x08,0xfb,0x48,0xa8,0x85,0x07,0x9d,0x9f,0xbf,0x37,0xc7,0x4f,0x92,0x71,0x09,0x60,0xf8,0x32,0x15,0x4f,0xab,0x18,0x57,0x0c,0xfb,0x4c,0x1d,},{0xf2,0xdc,0xfc,0x06,0xef,0x1d,0x8e,0xcc,0xd8,0xe4,0x0b,0xdf,0x01,0x30,0x7d,0xd1,0x96,0x83,0xf2,0x14,0xd4,0xf0,0x84,0xe6,0xb6,0x93,0x4f,0x63,0x72,0x78,0x30,0x0d,0xbb,0x18,0x89,0xf2,0xd3,0x7f,0x53,0xb3,0xae,0xf2,0x6f,0xbb,0x3e,0x36,0xbd,0x75,0x98,0x5f,0xa7,0xc8,0xea,0x6d,0xdf,0xfa,0x72,0xc8,0xe4,0x06,0xf2,0x4b,0xb2,0x0e,},\"\\x42\\x4b\\xdc\\xf0\\xb2\\x56\\x00\\x14\\x39\\xd1\\x69\\x58\\xff\\xf6\\x48\\xcf\\x7a\\x86\\x04\\xaf\\x22\\xcf\\xa5\\xb4\\x43\\x31\\xb4\\xdc\\x35\\x6d\\xff\\x25\\xcc\\x05\\x63\\xda\\x9d\\x64\\x01\\x33\\xac\\xb7\\x0b\\x6a\\x11\\x76\\xc4\\x82\\xdb\\xc9\\x40\\x8c\\xd6\\x79\\x3d\\x56\\xbc\\x29\\xcc\\x40\\x88\\x23\\xd3\\x88\\xed\\x88\\xb2\\x4c\\xeb\\x66\\x21\\xdb\\xac\\x00\\x23\\xee\\x69\\xf7\\x6f\\x82\\x96\\xa7\\x39\\x52\\x11\\x68\\x5b\\x3c\\xea\\xa9\\x95\\xf0\\x35\\x5d\\x9a\\xad\\x3d\\x97\\x35\\x8f\\x4a\\x37\\x9e\\x59\\x20\\xec\\x54\\x5f\\x46\\x96\\x21\\xcf\\x76\\x8a\\xbf\\x55\\xd2\\xa5\\x54\\xc9\\x49\\xb0\\xed\\x70\\x18\\x7c\\x22\\x05\\xad\\x03\\x29\\x85\\xc9\\xb5\\xb2\\xe4\\xba\\x57\\xe0\\xb4\\xa4\\x7d\\x34\\x45\\x12\\xb8\\x4b\\xfe\\x9f\\x3a\\xa5\\x60\\xfe\\x6e\\xcf\\xc5\\xbd\\xf8\\xc3\\xb4\\x18\\x45\\x29\\x35\\x73\\xf8\\x1e\\xd3\\xb7\\x0e\\xdc\\x63\\xa3\\x0c\\x70\\xcd\\xa3\\xf4\\x55\\x90\\x13\\x13\\xf6\\xd2\\x3d\\xb3\\x09\\x47\\x8f\\x03\\xe3\\x4e\\x71\\x35\\x6d\\x83\\xfa\\x5d\\xb9\\x28\\x0c\\xc2\\xb4\\x36\\x9c\\x3d\\x24\\xdd\\x90\\x38\\xf2\\x47\\x59\\x6c\\x39\\x1e\\x48\\xb2\\xf3\\xf8\\x90\\xa1\\x41\\xca\\x1d\\x12\\x07\\x7c\\x69\\x34\\x47\\x35\\xa5\\x9b\\x1d\\xd4\\x07\\x6b\\x22\\xe1\\x61\\x89\\x99\\x1e\\x5f\\x1b\\xe4\\xfb\\x76\\x95\\xaf\\x90\\xeb\\xea\\x5d\\xf2\\x86\\x13\\x5c\\xec\\x2a\\x6e\\x99\\xaa\\x1d\\xda\\x32\\x8e\\x62\\xc0\\xdf\\xb6\\x37\\x42\\x20\\x2d\\x63\\x62\\x4d\\xcc\\x0c\\x5c\\xf1\\xa5\\xdf\\x79\\xe2\\x87\\x8d\\xbc\\x71\\xfa\\x96\\x57\\x66\\x01\\xaf\\x22\\x84\\x4f\\x54\\x57\\x33\\x12\\x6a\\xf7\\xd3\\x98\\x4c\\x3e\\xd2\\x52\\xe6\\xa8\\x76\\x44\\x5c\\x92\\x25\\x9f\\xbb\\x47\\x0a\\x10\\x56\\x9b\\x49\\xe5\\x79\\x1f\\xd0\\x18\\x2c\\xfe\\x1c\\x3f\\x88\\x29\\x7f\\xac\\xc8\\xc3\\x1a\\x53\\x32\\xf1\\xf4\\xeb\\x49\\x58\\xdb\\x13\\xb6\\xc0\\x79\\xaa\\x9c\\x94\\x94\\x87\\x26\\x34\\x03\\x19\\x0c\\x83\\xc1\\x1a\\x43\\x19\\x1f\\xfe\\xc6\\x02\\x3f\\xb3\\x4c\\xfa\\xb2\\x52\\x5b\\xeb\\x54\\x6c\\xf9\\x20\\x0a\\x96\\xf5\\x85\\x4b\\x2f\\x78\\xec\\xb2\\xd9\\xa5\\x3a\\xa9\\xd2\\x87\\xa9\\x0d\\x4d\\x41\\x0a\\x63\\xad\\xa0\\xe9\\x75\\xd3\\x04\\xd5\\x14\\x83\\x53\\x46\\x3f\\xa8\\x05\\xb4\\x80\\x5f\\xb4\\x68\\x7e\\xd8\\x85\\x7d\\xfc\\xe4\\xbc\\x6e\\x80\\x83\\x3c\\x8f\\x9a\\x79\\xcd\\x4f\\x02\\x9a\\x2d\\x80\\x2b\\xfd\\xc8\\x19\\xed\\x0c\\x0a\\xc8\\xf2\\x10\\x23\\x28\\x7f\\x2b\\x4b\\xaf\\xbc\\xc8\\x99\\x93\\xfe\\x46\\xd5\\x2a\\x9c\\x62\\x46\\xde\\xad\\x61\\x7d\\xf7\\x97\\xd4\\x8e\\xe9\\x85\\xf0\\xf0\\xdf\\x9a\\xa8\\x2e\\xa2\\x0e\\x0d\\x0d\\xb2\\x8a\\x25\\x4a\\x9a\\x25\\x3f\\x39\\xf9\\xcf\\x01\\xe3\\xdb\\x8f\\x3e\\xbc\\xf7\\xcb\\x97\\xce\\xc5\\x8c\\x4e\\xfe\\x03\\x12\\x69\\xb4\\xb3\\x7e\\x4c\\xbb\\x36\\x1f\\x73\\xab\\x4b\\x49\\x80\\xbd\\x90\\x08\\x49\\x53\\x88\\x44\\xc5\\x2c\\xb3\\xac\\x75\\x83\\xb8\\xf8\\x96\\x53\\xa0\\xde\\x65\\xa8\\xbe\\x91\\x58\\x2c\\x55\\x23\\x9c\\xb8\\xf5\\xd5\\x31\\x8a\\x88\\xd1\\x60\\xe1\\xc8\\x71\\xe5\\xea\\x7e\\x75\\xf5\\xa6\\x9c\\xba\\x85\\x38\\x22\\x1a\\xb4\\x2c\\xe2\\xa2\\xc4\\xd9\\xc3\\xb7\\xec\\x85\\x7f\\x23\\x0d\\x57\\x37\\x31\\x13\\x36\\x86\\xae\\x8a\\x7e\\xd6\\x40\\xf4\\x2f\\x31\\x02\\x94\\x89\\xe4\\xe6\\xaf\\x2b\\x3e\\xa4\\xc7\\x94\\x8e\\xd5\\x37\\xc0\\xc5\\x90\\x67\\x26\\xc2\\xb6\\x25\\xfd\\x5f\\x94\\x9e\\x3a\\x7c\\xf3\\xb6\\xe9\\x98\\xec\\x76\\x1d\\xd6\\xe2\\xb5\\x17\\x1a\\x68\\x74\\x97\\x52\\xe7\\x21\\xb7\\x88\\xc3\\x47\\x7f\\xa1\\x90\\xcd\\x6e\\xa8\\x1d\\x57\\x9d\\xce\\x64\\x62\\xd9\\xc6\\x62\\xad\\x89\\x62\\xe7\\x93\\x38\\x71\\x0c\\xc8\\xd2\\x73\\x8a\\x5f\\xb0\\x4a\\xdf\\xdb\\x3f\\x14\\x32\\xcf\\xd8\\x0e\\x2e\\x96\\x7d\\xa0\\x00\\xd8\\x3a\\x0f\\xa8\\x5a\\xba\\xe2\\x95\\x2f\\x3f\\x36\\x83\\xe2\\x54\\xd8\\x68\\xf4\\xbf\\x80\\x9e\\xb2\\xe3\\x00\\xe7\\xb2\\x09\\x73\\x4a\\x3c\\x89\\x4e\\x96\\x6b\\x16\\x08\\x8d\\x5e\\xd3\\x54\\xbf\\xfb\\xff\\xbb\\xf2\\xec\\x2b\\xe9\\x3a\\x32\\xa8\\xbe\\x5c\\xfa\\x18\\xfa\\x56\\x53\\x01\\x2e\\xda\\xe5\\xaf\\xd8\\x70\\x9c\\xa5\\x5c\\x0c\\xf2\\x3a\\x55\\x0d\\x34\\xca\\x0f\\x32\\xd8\\xf6\\x66\\xfb\\x47\\xa1\\x2f\\x2b\\x73\\x53\\xa4\\x0c\\x53\\x79\\xf7\\x53\\x66\\xc1\\x3f\\x4a\\xb9\\xf1\\x4c\\xf8\\x0a\\x94\\xe1\\xf1\\x3d\\x8b\\x09\\xb7\\x6f\\xd8\\xd1\\x4f\\xfa\\x53\\x8f\\x31\\xfd\\x8a\\xeb\\x49\\xd3\\x34\\x33\\xf4\\xdf\\x7c\\x2c\\xa6\\x73\\x99\\x57\\x9f\\xe9\\x90\\x78\\xaa\\x72\\x1d\\x6b\\x6f\\xc0\\xc5\\x0e\\x8a\\x91\\xfc\\x71\\xca\\x25\\xea\\xc1\\x37\\x6f\\xc6\\x71\\xbf\\x61\\x53\\xe7\\x20\\xb2\\x5c\\x7e\\x97\\xa3\\xd4\\xef\\x84\\x42\\xac\\x67\\xac\\xf5\\x8b\\x50\\x4b\\x67\\x15\\x8f\\x91\\x30\\x25\"},\n{{0x3c,0x39,0x3f,0x9d,0xf1,0xfb,0x0b,0x1e,0xec,0x09,0xb7,0xf2,0x70,0xb8,0x59,0x82,0xba,0x0f,0xd5,0xe4,0xb1,0x79,0x5e,0x1a,0x7f,0xa9,0x91,0x37,0xfe,0xe2,0x4d,0x7d,},{0x97,0x4f,0xe2,0x37,0x30,0xfc,0x17,0x94,0x56,0x70,0xfb,0xc1,0xf8,0x0b,0x93,0xf9,0x45,0x93,0xc8,0xd4,0x4b,0xc7,0x5d,0x18,0x9a,0x6b,0xbf,0xaa,0xba,0xf5,0xdb,0xd9,},{0x22,0x33,0x3e,0x56,0x41,0x0f,0xdc,0xbf,0x84,0xf6,0xa8,0xde,0x74,0x13,0x37,0x69,0x16,0x84,0x49,0x5b,0xa6,0x9e,0xff,0x59,0x6d,0xb9,0xc0,0x3a,0x28,0x12,0x10,0x88,0x1e,0x6c,0x91,0xef,0xa9,0x1b,0x21,0x83,0xc0,0xea,0xc9,0x16,0x15,0x28,0x17,0xa7,0x8c,0xa7,0x24,0xba,0x7c,0x8b,0x51,0xbb,0x4c,0xaa,0xde,0xa9,0xa3,0x41,0xeb,0x0e,},\"\\x54\\xd8\\xb8\\xd5\\xfa\\xc2\\x8c\\xff\\xa7\\x7a\\x09\\x16\\xd6\\x33\\x3c\\x16\\xed\\xbc\\x8b\\xb7\\x4a\\xa0\\x6e\\x56\\xdc\\x00\\xe4\\x7e\\x39\\x29\\xe4\\x08\\x64\\xb8\\x84\\x0d\\x91\\x20\\x79\\x59\\x7e\\xac\\xd8\\x1d\\xae\\x43\\xe2\\x78\\x5d\\xfc\\x68\\x9f\\x3e\\x85\\xf8\\xc6\\x65\\x81\\xef\\xc5\\xe8\\x53\\xd1\\xfa\\xaa\\xc7\\x44\\x40\\x0a\\xb0\\x8c\\xbd\\xb5\\xd1\\x61\\x46\\xfa\\x60\\xf9\\x99\\x05\\xed\\x84\\xfd\\x29\\x36\\xdd\\x73\\xf4\\xbc\\xa2\\x57\\x2b\\x7c\\xf5\\x16\\x05\\x60\\xff\\xaa\\x68\\xda\\x7a\\x67\\xe4\\x0e\\x08\\xa7\\xbb\\x7a\\xef\\xc4\\x04\\x3e\\xbe\\xd5\\xfe\\x80\\xa4\\x14\\x81\\x7e\\xdf\\x2c\\x63\\xf6\\x2f\\xac\\x0d\\x47\\x44\\x6e\\xd0\\xbb\\x58\\x40\\x58\\xf4\\x87\\x2f\\xec\\xff\\x62\\x15\\x59\\x31\\x1a\\x27\\x0a\\xea\\x37\\xa6\\x29\\x68\\x64\\xe8\\xd1\\x68\\xbf\\x1e\\x2f\\x55\\xcd\\x3b\\x27\\x6e\\xdf\\xa6\\x12\\xb5\\xd9\\xc3\\x36\\x2e\\x61\\x8b\\xe6\\xe8\\x2a\\x6e\\x5f\\x82\\x66\\x79\\x24\\xf3\\xd1\\xd3\\xdf\\x82\\x5f\\x9d\\x23\\xf4\\xd6\\x14\\x2d\\x31\\x00\\xdf\\xc7\\x0f\\x70\\x60\\x3a\\xbf\\x3f\\xda\\xda\\xca\\x69\\xef\\x6a\\x18\\xef\\x90\\x92\\xb3\\xc4\\x1e\\xc6\\x58\\xab\\x27\\x21\\x6f\\xc6\\x14\\x7a\\x08\\x0a\\xcd\\xa6\\x0a\\x84\\x19\\x84\\xee\\x83\\xf4\\x1a\\xc4\\x2a\\x80\\xea\\xac\\x91\\xff\\xfc\\x82\\x28\\x39\\x1e\\xf5\\x83\\xab\\x3e\\xdd\\xcf\\x87\\x65\\x23\\xc2\\x02\\x81\\x35\\x53\\x00\\xd8\\x6c\\x11\\xa4\\xe7\\xc1\\xad\\xe8\\xe5\\x05\\x60\\xf4\\x39\\x06\\xc9\\xbc\\x8c\\xa5\\xfb\\xf8\\x33\\x9f\\xbe\\xbd\\x02\\xe3\\x3e\\x85\\x18\\xbe\\xe5\\xe8\\x06\\xb8\\xc1\\x0f\\x82\\x77\\xf4\\x10\\x66\\x47\\x35\\xa2\\xbf\\x55\\x68\\x39\\x63\\x54\\x92\\x45\\x2e\\x6c\\xa0\\x79\\xde\\xb9\\x75\\x1c\\xfc\\x67\\x97\\xf4\\x9b\\xca\\x96\\x13\\xff\\x2e\\x7f\\xdd\\x36\\x46\\xf7\\xc5\\x23\\x6a\\x36\\xbd\\xf0\\x05\\x17\\x45\\xe5\\x95\\xdc\\x00\\x72\\xfd\\x66\\x51\\xd5\\x76\\x27\\xa6\\x00\\x4c\\x0f\\x0c\\xfa\\xe8\\x56\\xbb\\xc2\\x8a\\x12\\x31\\xcb\\x83\\x96\\x65\\xff\\x04\\x15\\x2e\\xc3\\x1c\\x00\\x7b\\x3e\\x2e\\xd0\\xa9\\x73\\xb2\\x4c\\x93\\x14\\x9c\\xe7\\x01\\xe6\\xfd\\x65\\x39\\x20\\x6a\\xe9\\x1b\\xec\\x4c\\xe6\\x5a\\x89\\xdb\\x26\\xc7\\xd3\\x8c\\xec\\xb8\\x91\\x9f\\x96\\xfb\\x6c\\xb8\\xf6\\xc1\\x93\\x9d\\x90\\xfb\\x3f\\x90\\xb8\\x87\\x78\\x9f\\x29\\x57\\x5a\\xb2\\x0e\\x0b\\x08\\xbc\\x35\\x81\\x53\\xd8\\xc0\\x35\\x21\\xdc\\x89\\x18\\x70\\xb5\\xf7\\xee\\xdc\\xc1\\xe6\\x2b\\xee\\x7d\\xa0\\x63\\xae\\x66\\xff\\x0a\\x4b\\x7d\\x98\\xd1\\xcb\\x75\\x8f\\x69\\x74\\x3c\\x3d\\xb3\\xae\\x2a\\x2c\\x9b\\xe1\\xbe\\x09\\x4f\\x17\\xcd\\x28\\xf9\\x2d\\x8c\\xcb\\xca\\x98\\x3c\\x74\\x9c\\x75\\xc6\\x10\\xf8\\x40\\x83\\x6e\\x2c\\x43\\x0c\\xcd\\xef\\xf0\\xaf\\xa5\\x44\\x44\\xf1\\x2b\\x4a\\x4f\\x00\\x2c\\x60\\x94\\x51\\x83\\x42\\x44\\xc0\\xc0\\x7d\\xf8\\xe1\\x22\\x02\\xa6\\x5f\\x94\\x44\\x7c\\xd4\\x90\\x3a\\xcb\\x60\\x6d\\x77\\x25\\xa8\\x6e\\x4a\\x23\\x43\\x98\\x4e\\x67\\x9c\\x4a\\xf1\\xb3\\x67\\x9c\\x75\\x5e\\xa5\\x0d\\x0a\\xbe\\x2f\\xcc\\x0c\\x1c\\x33\\x51\\xa9\\xee\\x19\\x6b\\x46\\x44\\xc4\\x24\\x22\\x2b\\xe9\\x9e\\x2f\\xb3\\x73\\xf9\\x64\\x1e\\x3f\\xae\\xbf\\xf4\\x31\\x70\\xeb\\x03\\xfb\\x8e\\xc4\\x55\\x7d\\x15\\x1a\\x55\\xfa\\xb6\\xc4\\x99\\xd4\\x44\\xc8\\x4b\\xe8\\x9f\\x24\\x47\\x68\\x2d\\xe4\\xe6\\xf6\\x35\\x34\\x75\\xef\\xcb\\x8f\\xc5\\x32\\x56\\x76\\x3a\\x94\\x8d\\xc7\\x5c\\x51\\x5f\\xa3\\x53\\x54\\x5d\\x0c\\xba\\xd2\\x9d\\xf5\\xe9\\xdb\\x5c\\xc4\\x57\\xed\\x30\\x86\\xcf\\xfb\\x3d\\x75\\xe8\\x46\\xc4\\xe8\\xd8\\x81\\x47\\xfc\\xd0\\xd8\\xaa\\x5a\\xba\\xb4\\x9b\\x5e\\x05\\xc3\\xd7\\xfe\\xef\\x63\\x79\\x43\\x34\\x7a\\xd3\\xf4\\x92\\xee\\x35\\x6e\\xf3\\x48\\x81\\xcf\\xd8\\x5a\\xbc\\xe8\\xa1\\x44\\xce\\x77\\x61\\xe2\\x84\\xe8\\xb8\\xcb\\x08\\x96\\x60\\x49\\x04\\x7a\\x99\\x6e\\x23\\x55\\x9f\\x77\\x6b\\x1a\\x9f\\x41\\xcb\\xa3\\x95\\x41\\x08\\x48\\x6e\\x29\\x27\\xbe\\xb6\\x43\\x3a\\x36\\xff\\x8b\\x2f\\x03\\xaa\\x74\\xb3\\xd2\\x09\\xc4\\x88\\xe0\\x77\\xf9\\x24\\xf2\\x31\\xe2\\x83\\x45\\x94\\x2c\\x7d\\xcc\\x2e\\x61\\xd7\\xc9\\xb5\\x22\\xb6\\x59\\xfc\\xb5\\x36\\x62\\xaf\\xf3\\x64\\x8f\\x66\\xda\\x3e\\x83\\xe5\\x9b\\x0d\\xaa\\x90\\xb9\\x4c\\x51\\x5d\\xad\\xab\\x10\\xd5\\xa8\\x39\\xcb\\x3a\\x2f\\x1d\\x3c\\xd0\\x92\\xde\\x55\\xd9\\x95\\x13\\x8c\\x3a\\xc0\\xb9\\x07\\xaf\\x15\\xac\\x63\\xec\\x18\\x74\\x11\\x43\\x27\\xe2\\x19\\x71\\x34\\x5e\\xf1\\x70\\x31\\xd5\\x26\\x17\\xe7\\x84\\xda\\x37\\x71\\x43\\x9b\\xe2\\xe8\\x41\\x48\\xbc\\xfe\\xa1\\x32\\xbd\\xe1\\x0e\\x6f\\xda\\x54\\x7d\\xcb\\xb1\\xc4\\xd8\\xf7\\x4d\\xdc\\xe1\\xfc\\xcf\\x82\\x13\\xe0\\xda\\x6e\\x97\\xb8\\x1f\\x75\"},\n{{0xf8,0x66,0x9c,0x88,0xf1,0x68,0x5b,0xbf,0x04,0x80,0xcc,0x92,0x21,0xac,0x2e,0xad,0x8f,0x55,0x1b,0xfa,0x87,0xec,0xba,0x2f,0xd4,0xdd,0xf3,0xba,0x34,0x76,0xeb,0xda,},{0x34,0x72,0x3f,0xb8,0xe2,0x53,0xad,0x9c,0x71,0xce,0xfd,0xe0,0x36,0x28,0xd2,0x04,0xe5,0x35,0xde,0x47,0x9e,0x10,0x48,0xe5,0x18,0x87,0x62,0xa1,0xf3,0x37,0xfe,0x5f,},{0x37,0x46,0xda,0x6c,0xd8,0xca,0x10,0x8b,0xee,0xf0,0x64,0x87,0xbe,0xe6,0x35,0x84,0xf8,0x12,0xc8,0xe0,0x69,0x5f,0xc8,0x63,0xb8,0x6e,0x5d,0xb1,0x32,0x38,0x0b,0x62,0xff,0x85,0x44,0xf6,0xf3,0x74,0x82,0x5b,0x0e,0x3e,0xa0,0x62,0x0e,0xf8,0x54,0xc1,0x33,0x11,0x14,0xd6,0x67,0xdf,0x1f,0x9e,0xa7,0x76,0xc3,0x96,0x38,0x70,0x29,0x0d,},\"\\x5b\\x49\\x41\\xbe\\xec\\x22\\x41\\xc9\\xfb\\x76\\xd8\\x48\\x4f\\x4f\\x3f\\x3a\\xb4\\xff\\xe8\\xec\\xc8\\xe7\\xae\\xc7\\x6d\\xe2\\xab\\x8c\\x36\\x85\\x84\\xd7\\x51\\xb0\\xd3\\xfe\\xb8\\xa1\\xdc\\x81\\x68\\xcd\\xc6\\x94\\x96\\x8f\\x66\\xb2\\xa0\\xb0\\x52\\xaf\\xbf\\x8b\\xe3\\xa7\\xd9\\x51\\x63\\xe9\\xda\\x91\\x41\\xc5\\x9c\\xa5\\x59\\x76\\xc2\\x92\\xc5\\xc7\\x4d\\x31\\x31\\x8d\\x6a\\x91\\xe7\\x81\\x7c\\x5a\\x8b\\x2f\\x81\\x21\\x18\\xcb\\xeb\\xa3\\xa1\\x33\\x23\\xcd\\x97\\x48\\xbf\\x86\\xed\\x1a\\x85\\xdd\\x4e\\xbc\\x0d\\xf4\\x95\\xcf\\xa3\\xd4\\x62\\x74\\x34\\xbf\\x14\\xaa\\xe8\\xab\\x67\\x81\\x46\\x7a\\x56\\xd9\\x65\\xd1\\x0e\\x63\\x71\\x98\\x9d\\xfa\\x0f\\x6b\\xc0\\xf7\\x85\\x9f\\x37\\x71\\xeb\\x90\\x04\\xb3\\x43\\x67\\xdb\\x27\\x05\\xdb\\xd6\\x0f\\xa8\\xf7\\x89\\x5c\\x1e\\xad\\xf5\\x9f\\x53\\xda\\xb1\\x68\\xb4\\xf9\\x36\\x39\\x79\\x02\\x55\\x01\\xdd\\xd9\\x68\\x0d\\xeb\\xc0\\x7c\\xd1\\xca\\x4a\\x09\\x97\\x87\\x6e\\x92\\x11\\xf3\\x07\\xd9\\xb7\\xb9\\xd9\\x04\\xe4\\x8d\\x28\\x61\\xa7\\x78\\xb8\\x79\\xad\\x59\\x0a\\x9a\\x2f\\x14\\x1b\\xd5\\x68\\xe3\\xa1\\xbb\\x24\\x94\\x62\\x8e\\x9e\\xc0\\xc6\\x42\\x55\\xae\\xea\\x6f\\x0e\\xed\\xca\\x30\\xad\\x38\\xa1\\xf3\\xff\\xec\\x3b\\x2b\\x5e\\x94\\x2e\\x21\\x94\\x01\\x04\\xe9\\x14\\xd1\\x1a\\x44\\xc0\\x0f\\xdd\\x47\\xda\\x3e\\x55\\x13\\xaa\\x85\\x30\\xae\\xe2\\x47\\xc9\\x5c\\xa6\\x6d\\x08\\xa2\\x60\\x8c\\x75\\xba\\x98\\x58\\xda\\x14\\xf9\\xa8\\xa3\\x2b\\xe7\\x13\\xd3\\x09\\xe0\\xf5\\x84\\xc8\\x1e\\xf5\\xbe\\x04\\x0e\\x00\\x65\\xf0\\x7b\\x77\\x5a\\xe1\\x75\\xdf\\xe2\\xc8\\xb9\\x0a\\x88\\xcc\\xda\\x17\\xfa\\x4f\\x21\\xc7\\x7e\\xad\\xf5\\xd2\\x5b\\x6e\\x40\\x4b\\xf0\\x04\\x47\\x9e\\x05\\xa0\\x1a\\xc0\\x04\\x2b\\x89\\x93\\x7e\\xb2\\x78\\xc1\\xc3\\x4f\\x33\\x02\\x8d\\xb7\\x80\\xba\\x3b\\x61\\x79\\x18\\x59\\x5a\\x39\\xc0\\xfc\\xad\\x67\\x4b\\x85\\xc4\\x0c\\xac\\x8d\\x34\\x5b\\x7c\\xa0\\xbb\\x48\\xa2\\x8e\\x66\\xc4\\x4d\\x8b\\xb5\\xf2\\x79\\x41\\xe4\\x0b\\x0e\\x9c\\x70\\x97\\x97\\x6c\\x62\\xdf\\xef\\x50\\xc9\\x8f\\x17\\x56\\x6c\\xcb\\xac\\xc8\\x7c\\xb0\\x3b\\x94\\xdf\\xdf\\xaf\\x32\\xf1\\xe5\\x6f\\xfa\\x63\\x9d\\x63\\x61\\x1e\\x21\\x3c\\xeb\\xf5\\x4c\\xd0\\xa3\\xe2\\x17\\x2d\\x81\\x1c\\x0e\\xbd\\x75\\xb1\\xa8\\x64\\x62\\x64\\xdd\\x8b\\x1a\\xbd\\x46\\xe5\\x48\\x97\\x2a\\x1b\\x26\\x2c\\xd9\\x5d\\x51\\x15\\x36\\xdd\\xdc\\xb4\\x97\\x29\\xfe\\x7b\\xd0\\x0b\\x38\\x38\\xbd\\x2f\\x20\\xa1\\x42\\x64\\x0e\\xdb\\x1b\\x6e\\x76\\x5b\\x65\\xda\\x72\\xe7\\x23\\x32\\x61\\xc8\\x89\\x2e\\x2f\\x49\\x49\\xbb\\x51\\xf3\\x2a\\x1a\\x5a\\x3e\\xe1\\x49\\xbe\\xa2\\x6f\\xdc\\xed\\xb9\\x91\\xd2\\xcd\\x12\\x66\\x37\\xe2\\x97\\x1e\\x9b\\x6f\\x0b\\x78\\x5d\\xf2\\x8a\\x48\\xf3\\x01\\x70\\x73\\x49\\x42\\x3f\\x44\\xe8\\x46\\x22\\x89\\xd7\\x25\\x49\\x82\\x30\\x48\\x9d\\xf1\\xb5\\x1b\\xe3\\x0f\\x08\\xd7\\xe3\\x25\\x05\\x65\\xc6\\xef\\x82\\x4b\\xc5\\x3a\\x1b\\xa7\\x4a\\x57\\xa2\\x5c\\x06\\x86\\xad\\xcb\\x6c\\x82\\x5a\\xb1\\xca\\x70\\xc8\\xa5\\xd4\\x6d\\xbb\\xc6\\xfa\\x60\\x74\\x61\\xe2\\x6d\\x16\\xfe\\x93\\xbb\\x3d\\x3a\\x94\\x3a\\x3d\\xc0\\x5f\\x30\\xea\\x6d\\xc8\\xbb\\x12\\xd7\\x08\\x21\\xd3\\x20\\xf1\\xad\\xf1\\xce\\xba\\x4b\\xe6\\x57\\x19\\x4f\\x7f\\xcc\\xd2\\x19\\x90\\xf8\\x62\\x9d\\x74\\x46\\x01\\xcf\\x52\\xea\\x6d\\x94\\x05\\xaa\\xa2\\x87\\x8f\\x1e\\xec\\x40\\x03\\xb4\\x5a\\x42\\x18\\xd8\\xf8\\x0b\\xb0\\xf5\\xaf\\x04\\x73\\x26\\x48\\x77\\x52\\xe2\\xb7\\x6d\\x68\\x87\\x25\\x20\\xbb\\xea\\xe7\\xb3\\x09\\xd7\\x82\\x82\\xa0\\x73\\xfe\\x0b\\x1a\\x1a\\x7a\\x98\\xda\\x23\\xdf\\x68\\xca\\xf8\\xc2\\x69\\x9b\\x1c\\x7d\\x0f\\x47\\xbd\\x7d\\xe2\\xc0\\xbb\\x23\\x36\\x99\\x63\\xe6\\x8a\\x69\\x74\\xc8\\xe2\\xb5\\x95\\xb8\\x29\\x3a\\x9f\\x4d\\x98\\xdf\\x7e\\x9a\\xe3\\xad\\xd2\\xa3\\xf6\\x4e\\x83\\x03\\x97\\x39\\x64\\x2d\\x19\\x22\\x04\\xe8\\x5e\\x6c\\x48\\xd5\\xd6\\x71\\xf6\\xc7\\x5a\\x0a\\x89\\x57\\xed\\xbb\\x74\\x18\\x76\\x20\\xf2\\xab\\xa9\\x9c\\x1c\\x62\\x58\\x4c\\x59\\xac\\x00\\x64\\x7e\\x3f\\xb4\\x02\\x92\\xb9\\xdc\\x1a\\x33\\x46\\x86\\x85\\x53\\x39\\x2f\\xd3\\xf1\\x1d\\x6d\\xc6\\xf5\\xf2\\xf4\\xe8\\x5e\\xe2\\x51\\x25\\xcd\\xd6\\x44\\x74\\x3c\\x7d\\x45\\x28\\x1e\\xda\\xc6\\x38\\x4c\\x77\\xcb\\x98\\xa6\\x7d\\x9a\\xe6\\xfc\\x9a\\x0a\\x76\\xb9\\xf6\\xfa\\x69\\x6f\\xdf\\x4a\\xce\\xab\\x5f\\x79\\x4e\\xe5\\x21\\xb1\\xe5\\xa0\\xee\\x57\\xaf\\x53\\xbd\\xf1\\x76\\x80\\x1b\\x4f\\x45\\xcf\\xb3\\xca\\xe3\\x28\\x72\\x34\\x23\\x4b\\x77\\xce\\x21\\xed\\xf8\\x68\\x0d\\x68\\xc4\\xa8\\xee\\xcf\\x1b\\x03\\x53\\x7e\\xa5\\x69\\x9a\\xcb\\x56\\x27\\x77\\xe4\\x2a\\x48\\x6f\\xe7\\xcd\"},\n{{0xce,0xcc,0xc6,0x83,0x11,0xfc,0x45,0xb6,0xc2,0xa2,0xf1,0xff,0x9c,0xdd,0xe0,0x07,0xec,0x78,0x7f,0xdf,0x25,0xd0,0x2c,0xcd,0x2a,0x1c,0xad,0x9d,0xe3,0xfb,0x4c,0xff,},{0x6f,0x80,0x47,0x34,0xef,0x92,0x82,0x41,0x80,0xda,0x71,0xe5,0x5c,0xf3,0xbf,0x1a,0xfe,0xf6,0x5b,0xcf,0x56,0x09,0x62,0xe0,0xb0,0xac,0xbb,0x2d,0x8c,0xca,0x59,0x84,},{0x3c,0x44,0x62,0xaa,0x47,0x01,0x01,0x32,0xdb,0xb2,0x63,0x11,0xe4,0x44,0x72,0x72,0x79,0xed,0xad,0xe1,0x5a,0x4d,0x66,0x2c,0xf6,0x47,0xf3,0x27,0x5c,0xf3,0x25,0x3e,0x6d,0xe9,0x33,0x38,0x30,0xe0,0x51,0x7a,0xa5,0xfa,0x7b,0xc2,0xd0,0xe6,0x3e,0xa2,0x59,0x7a,0x94,0xb0,0xfe,0x92,0x70,0x6e,0xcd,0x17,0x2c,0x5e,0xc5,0xc7,0xf0,0x06,},\"\\xba\\xc1\\x86\\xd9\\xfe\\x5a\\xbd\\xa7\\x9c\\x3a\\x35\\xa7\\xa3\\xc2\\xea\\xe6\\xae\\x6a\\xb2\\x82\\x47\\x91\\x27\\x70\\xc8\\x4e\\xfd\\x04\\x8e\\xbd\\x3a\\xba\\x57\\xc3\\x7c\\xf4\\xc6\\xc7\\xf3\\x0a\\x79\\xf6\\x8a\\x3f\\x76\\xb2\\x0c\\xd8\\xc6\\x63\\x1f\\xcc\\x96\\x67\\x05\\x22\\x08\\x0e\\x6b\\x62\\xe8\\x87\\xae\\x6f\\x44\\x36\\xd4\\xca\\xf5\\x69\\x43\\x13\\x1c\\x52\\xdd\\x28\\x2b\\x25\\x1c\\xd0\\x75\\xf1\\xf7\\xf8\\xe0\\xbd\\xb6\\xbe\\xdf\\xc9\\xa0\\x79\\x6f\\x55\\x79\\x04\\x2b\\x56\\xe6\\x93\\x74\\x96\\x1b\\x11\\xdf\\xd6\\x1b\\x12\\xde\\x2b\\xb7\\xd4\\x9b\\xfc\\x50\\x9c\\xdb\\x31\\x38\\xf3\\x35\\x6a\\x0d\\xde\\xd9\\x8f\\x53\\x01\\xb7\\xc4\\xa7\\x48\\xbf\\x89\\xb2\\x3d\\xf4\\xf7\\x47\\x2f\\xf8\\xb1\\xf5\\x05\\xd7\\x65\\xc6\\xff\\x82\\xdb\\xad\\x74\\xb9\\xd7\\xae\\xf2\\x2f\\xbc\\xca\\x0b\\x7f\\x35\\x04\\x2f\\x9a\\x76\\x2b\\xd0\\x69\\x02\\xbb\\x21\\xc7\\xf9\\xf7\\xf6\\x6b\\xef\\x38\\x90\\x1d\\x75\\x01\\x2d\\x61\\xd7\\x44\\xde\\xe7\\xaf\\xd8\\x9f\\xc7\\xe9\\x08\\xc4\\x06\\x85\\xbd\\x44\\x0a\\xed\\xa4\\x20\\x4d\\x00\\x6f\\x26\\x30\\x7d\\x82\\xa4\\x96\\x96\\x31\\x15\\xf9\\x0e\\x09\\xf7\\x66\\x88\\x29\\x1f\\x4a\\x67\\xd6\\x41\\x1f\\x76\\xd1\\x66\\x17\\x87\\x5b\\x2b\\x99\\x82\\xdf\\xdc\\x5e\\xe9\\xb8\\x3b\\x98\\x17\\x00\\x93\\x19\\x11\\x0b\\x54\\x04\\xc6\\x31\\x16\\xfb\\x6e\\x94\\x64\\x84\\x6f\\xa0\\x09\\x55\\x56\\x32\\xf0\\x76\\x98\\x4c\\x15\\xe1\\xf6\\x08\\x17\\x33\\xa0\\xd4\\x6f\\x2d\\x6a\\x3c\\xeb\\xf7\\x9e\\xd9\\x02\\x0c\\x9d\\xec\\x8d\\xf1\\x58\\xa3\\x34\\x1f\\x39\\xea\\xa5\\xfc\\xf1\\xcf\\x42\\xa9\\x48\\x49\\xb2\\x35\\x2c\\x1a\\x1e\\xcd\\x4f\\xb8\\x14\\xc2\\x0d\\x07\\xdf\\xda\\x31\\x2b\\xd4\\xf2\\xf5\\x8c\\x15\\x76\\xb4\\xaa\\x31\\x5c\\x96\\xc8\\x78\\x6a\\x4c\\xfb\\xb7\\x36\\xb2\\xd2\\x3c\\x38\\xb1\\xd8\\x1c\\x46\\x44\\xea\\x36\\xaf\\xa0\\x76\\xe0\\x55\\xbe\\x59\\x17\\xcd\\x7a\\x92\\x35\\x0a\\x7e\\xd6\\x6a\\x5a\\xb2\\x25\\x3f\\x55\\xc4\\xfd\\x1a\\x0d\\x0e\\x6d\\x4e\\xda\\xb5\\xf7\\x12\\xed\\xb4\\x40\\xc0\\x6f\\xac\\x8f\\x07\\xe6\\xd7\\x3c\\xc9\\x0b\\x2b\\xa7\\x13\\xd7\\x3c\\x73\\x80\\x23\\x61\\xce\\x46\\xa4\\xeb\\x5e\\xd1\\x06\\x0c\\x4c\\xf5\\x32\\x07\\xd3\\x01\\xf0\\xfc\\xd4\\xf0\\xc9\\xd1\\x58\\x0d\\xb2\\xfc\\x10\\x59\\xd3\\x72\\x07\\x64\\x38\\xa0\\x11\\x92\\xa7\\xf9\\xfd\\x6f\\x78\\x83\\xf5\\x64\\x22\\x86\\x6f\\xd9\\xf0\\xaf\\xe5\\x3f\\xdc\\x91\\x0a\\xfa\\x5a\\x75\\x1c\\xbf\\xa3\\x77\\x59\\x25\\x79\\x16\\x5c\\xb5\\x6d\\xc3\\xeb\\x4d\\xce\\x67\\xe3\\xdb\\x33\\xa9\\x81\\xa5\\x6b\\x7d\\x9f\\x7b\\xde\\xa7\\x4f\\xba\\xea\\x34\\x78\\xe6\\xab\\x2c\\x64\\x4f\\xd7\\x77\\xb8\\xbf\\xa7\\x2a\\xa0\\xf0\\xa5\\x21\\x98\\xd3\\x6e\\x5b\\x63\\x4d\\x2c\\x9a\\x11\\xb7\\xfe\\x0a\\xb2\\xf9\\xa4\\x09\\x01\\xc5\\xb1\\x48\\xa0\\x19\\x2e\\x95\\xa1\\x70\\xba\\xf7\\xd5\\x35\\x0f\\xe0\\x1e\\x56\\x95\\x42\\xb9\\x34\\x85\\xa4\\x19\\x71\\x44\\x34\\x85\\xfa\\xf5\\x7f\\x67\\xf5\\x6d\\xfe\\x2c\\x58\\xe5\\x39\\xc9\\xf9\\xb4\\x49\\xc3\\xf9\\x12\\x49\\xa1\\x0c\\x1a\\x1b\\xe7\\xe0\\xb3\\xea\\xbe\\x8e\\xe0\\xba\\xb1\\xf1\\x1f\\x89\\x61\\x4d\\xce\\xd4\\x18\\xc6\\x2a\\x07\\xa0\\xb5\\x9a\\x13\\x70\\xd6\\x53\\x1b\\xa1\\x77\\x09\\x1c\\x6a\\xd5\\x95\\xfb\\x59\\x48\\x82\\x04\\xf6\\x33\\x44\\x73\\x6e\\xa1\\x01\\x7a\\xff\\xbe\\xb7\\x53\\xa9\\x97\\x86\\xb1\\xeb\\x64\\x51\\x0e\\x2e\\x71\\x7e\\xc9\\x0e\\x02\\x74\\x4b\\xc3\\x52\\xd3\\xf1\\xb2\\xab\\x7b\\xe0\\xeb\\x65\\x62\\x3d\\x04\\xfb\\x3a\\x04\\x6c\\xe7\\xf4\\xda\\x69\\x7d\\x82\\x98\\x28\\xa5\\x2c\\x7b\\x04\\x3b\\x2a\\x82\\xec\\x97\\xfb\\x04\\x1b\\xf5\\x19\\xb4\\xde\\x31\\x6f\\x4e\\x2f\\x5b\\x0d\\xb6\\x2a\\xed\\x0e\\xed\\x95\\xca\\xd4\\x32\\x0c\\x19\\x47\\xc3\\x5f\\xd8\\x84\\x7a\\x58\\x67\\x87\\x28\\x83\\x56\\x11\\x19\\xc0\\x1b\\x00\\x89\\x21\\x3d\\x84\\xdb\\x99\\xd4\\x39\\xf0\\xf6\\x44\\x4d\\x87\\x83\\xdd\\x4b\\x64\\xbe\\x35\\x77\\xcd\\x46\\x1c\\xf7\\x53\\xc8\\xe6\\x1c\\x91\\x2d\\xe2\\xe5\\xd7\\xa7\\xe2\\xba\\xef\\xa2\\x58\\x97\\x5d\\x16\\xef\\x31\\x17\\xda\\x59\\xa6\\xc8\\x93\\xf3\\x33\\x91\\x87\\xdf\\x31\\x68\\xb8\\x9f\\x0f\\xb0\\xb2\\x19\\x8b\\xb6\\xf1\\x59\\x4b\\xb8\\x8f\\x3d\\x61\\x0f\\xce\\xc3\\xe3\\x6d\\xe0\\x4a\\xe1\\x03\\x28\\x11\\x2e\\x6f\\xf7\\x4f\\x5a\\x8c\\xe6\\x8d\\x40\\x71\\x74\\xb4\\xc0\\x69\\x1c\\x76\\x02\\xea\\xb1\\xbb\\x10\\xf3\\xc4\\x9d\\xd2\\x2b\\x84\\x50\\x78\\x2d\\xea\\xe9\\xa7\\x31\\x5e\\x3b\\x88\\xde\\x79\\xcd\\x15\\xe6\\xc9\\x26\\x81\\x65\\xed\\x3a\\x0f\\xb3\\xf8\\x9b\\x18\\x3e\\x1a\\x21\\x21\\x52\\x00\\x3f\\x32\\xa2\\x66\\x5d\\x37\\xcd\\xd7\\xf6\\xb5\\x6c\\x24\\x53\\xe5\\x58\\x0c\\x4d\\x21\\xf9\\x98\\x3f\\x38\\x79\\x8e\\x9b\"},\n{{0x7b,0x30,0xb4,0x2d,0xc2,0xc6,0x70,0xa1,0x95,0xfe,0x2a,0xf8,0x79,0xfc,0x5d,0xe3,0x74,0x02,0x45,0x88,0xfe,0x3d,0xe4,0x3e,0x2d,0xd5,0x08,0x44,0xf4,0x8f,0x42,0xbe,},{0x82,0xa2,0xac,0x60,0x79,0xf2,0x12,0xb5,0xee,0xdd,0x0c,0x19,0xe9,0x39,0x4f,0xaf,0xac,0xd7,0x4d,0x71,0x6f,0xde,0xfb,0xfc,0x6c,0xb8,0xa7,0xea,0xf4,0x1c,0x03,0x62,},{0x0a,0x63,0xb8,0x4f,0x46,0x93,0x5f,0xaf,0x3e,0xa1,0x64,0xb0,0x0a,0xf2,0x27,0xb0,0x08,0x68,0xa0,0x3f,0x56,0x12,0x93,0x5e,0x18,0x61,0x9a,0x84,0xa2,0xe5,0x7b,0x88,0x51,0xd7,0x46,0xe6,0x3f,0xd9,0x10,0x07,0x87,0xf5,0x33,0x8d,0x51,0xc1,0x07,0x3c,0x2f,0xc5,0x30,0x30,0x99,0xe1,0x87,0x3e,0x5e,0x3d,0x3e,0x5c,0x03,0x6f,0xbe,0x01,},\"\\xc6\\x68\\x7a\\xef\\xeb\\xc5\\xc8\\x16\\xd1\\xa3\\x34\\x53\\xbe\\xca\\x50\\x20\\xd3\\xa9\\x7c\\xda\\x1d\\xac\\x56\\x62\\xf0\\xaf\\x72\\xba\\xd4\\x44\\xe2\\xfd\\x11\\x76\\xa7\\xb0\\x4c\\x1b\\xd0\\x9d\\x83\\x26\\x18\\x20\\x9b\\xf3\\xe3\\x3e\\x52\\x35\\x38\\xd6\\xda\\xa7\\x53\\x04\\x6e\\x87\\x1d\\xd3\\xb3\\xc7\\xac\\xad\\x33\\xe7\\x9c\\x1b\\xb7\\x89\\x64\\x07\\x86\\x5d\\x16\\x8d\\x4b\\xc3\\x75\\x7b\\xde\\x4f\\x82\\x3c\\x08\\x77\\x86\\x26\\xf8\\xc7\\x1f\\xb7\\xcf\\xcf\\xdf\\x03\\xa8\\x24\\x97\\xbd\\x8b\\xe7\\xd8\\xf8\\xef\\x64\\x90\\x30\\xb5\\xf3\\x6a\\x33\\x94\\x59\\x96\\x8e\\x24\\x6a\\x1e\\x42\\x08\\x53\\xda\\xce\\x41\\xca\\x85\\x0a\\x4e\\xea\\xe8\\x34\\xae\\x11\\x96\\x10\\xca\\x4c\\xd0\\x66\\x2a\\xac\\x39\\x62\\x15\\x86\\x99\\x80\\x27\\xef\\x2f\\x61\\x48\\x5c\\x02\\x85\\x06\\x71\\x4a\\xe0\\x9c\\x76\\x39\\x9d\\x87\\x3e\\x80\\x81\\x58\\x57\\x8a\\xa5\\x9e\\x82\\x12\\xf5\\x88\\x65\\x31\\x9f\\x9e\\x0d\\x2b\\x8d\\xa7\\xad\\x52\\x9e\\x0a\\xc1\\xf1\\xeb\\x43\\x5a\\xec\\xfd\\x35\\xf5\\xab\\xb9\\x2b\\xea\\x50\\x73\\x49\\x6b\\xf4\\xc0\\xbf\\x15\\xba\\xa2\\x73\\xbf\\xc5\\xc3\\x10\\x44\\x74\\xa2\\xdc\\xf1\\x32\\xc3\\x33\\xeb\\x36\\xec\\x2c\\xbf\\x04\\xfa\\x95\\x80\\xb7\\x68\\xf5\\xce\\xa7\\xb5\\x61\\x7e\\x58\\x80\\xaf\\xf6\\x32\\x01\\xc2\\x74\\xd6\\x69\\x74\\x3e\\x1b\\xc5\\x56\\xb0\\x67\\x90\\x2e\\xee\\x29\\xd2\\x91\\x11\\x28\\x89\\x69\\xcf\\xfa\\x87\\x9f\\xc9\\xcb\\xf6\\x6f\\xbf\\x93\\x26\\xd9\\xd9\\x25\\xac\\x41\\x02\\xfa\\x9f\\x1a\\x06\\x08\\x1a\\xde\\xc0\\x79\\xcb\\xc9\\x67\\x46\\xd7\\x9b\\x63\\xa0\\x12\\xed\\x77\\xd8\\x2c\\x9f\\xfd\\x4e\\x3f\\x16\\x1f\\x6c\\xea\\x28\\xcc\\x23\\xfa\\xc2\\xa5\\x43\\xf5\\xb1\\xd0\\x64\\x4e\\xc0\\x48\\x38\\x32\\x7b\\xcc\\x65\\x2b\\x85\\x8f\\x93\\xff\\x46\\x3f\\x7e\\x94\\x9e\\xec\\x8c\\x9d\\xb6\\x56\\x9a\\x86\\x98\\x4f\\x83\\x1d\\xf6\\xac\\x6d\\x95\\xf3\\x8f\\x46\\xce\\xbb\\x6e\\x65\\x83\\x65\\x7f\\xac\\xd2\\x10\\x8d\\xbc\\xd0\\xaf\\x23\\xab\\x01\\x01\\xa1\\x30\\x1b\\xeb\\x48\\xa4\\x4c\\xac\\xcb\\x91\\x09\\x44\\x73\\xd7\\xe5\\xa5\\xc8\\x8c\\x64\\x4f\\xd3\\x42\\x05\\x73\\xb6\\x78\\xf1\\x7b\\x51\\x74\\xcb\\x14\\xe9\\x0f\\xac\\x69\\x4d\\x1d\\xbc\\x6c\\x96\\x32\\xb5\\x97\\x4a\\xef\\x28\\xac\\x08\\xd7\\x20\\xb2\\xea\\x30\\x44\\x0d\\x2a\\xfb\\x04\\x93\\xb4\\x0d\\xb2\\x4e\\xfb\\xdb\\xf5\\x3c\\x43\\x09\\x21\\xe5\\x2a\\x10\\xb5\\x46\\x61\\xe1\\x49\\xd1\\x65\\x59\\x1a\\x7c\\xf9\\x1d\\x65\\x08\\xea\\x47\\x2f\\xb3\\xbe\\x16\\x39\\x5e\\x30\\x31\\x2f\\x19\\xb8\\x7c\\x47\\xe4\\x68\\x04\\xa0\\xfa\\x29\\xb5\\x6b\\x5a\\xc9\\x50\\x67\\x7b\\xc6\\x02\\x38\\xb5\\xe9\\x9e\\x03\\x0b\\x1e\\x55\\x21\\x46\\xa0\\xe8\\x8c\\x29\\x4c\\xfc\\xa8\\x35\\xc1\\x01\\xc5\\x5f\\x34\\x23\\x87\\x4c\\xc1\\x28\\x75\\x6e\\x73\\xa5\\xde\\xbe\\x8e\\x97\\xfe\\x21\\x66\\xb6\\x5c\\xb4\\x46\\x42\\x77\\x0c\\x6d\\x1d\\x23\\x90\\xaf\\x1b\\x0f\\x31\\xb9\\x58\\xc8\\x30\\xe9\\xac\\x4f\\xe2\\xf5\\xad\\x59\\x05\\x82\\xfb\\xb8\\x92\\xbf\\x94\\x95\\x84\\x47\\x7e\\xf7\\xbd\\xe2\\x3f\\x7d\\xd0\\x2b\\x63\\xf7\\xc2\\x90\\x88\\xa5\\x72\\x51\\x00\\x91\\x32\\xff\\xbb\\x78\\xed\\x14\\xde\\xfb\\xef\\xd9\\xfd\\x31\\xfd\\xca\\xb0\\x3b\\xa8\\x0a\\x23\\xf3\\x33\\x98\\x37\\x60\\xab\\xad\\x4f\\x16\\xdd\\xf9\\xdd\\x44\\x14\\xf0\\x4d\\x00\\xdb\\x56\\xba\\x72\\xd6\\x3a\\x3a\\x13\\xd2\\xc4\\x42\\xf5\\x49\\xfd\\x66\\xc9\\x88\\xd2\\xe4\\x60\\x1d\\x13\\xb5\\x2f\\x77\\x50\\x0d\\xd6\\x92\\xbe\\xc9\\xd6\\xbd\\x3b\\xaf\\xa9\\x24\\x2f\\xdc\\xfa\\xeb\\x69\\xb9\\x8b\\x0b\\x57\\x89\\xb2\\x80\\x38\\x40\\xde\\xc6\\x37\\xb4\\x9a\\xf4\\x38\\x1a\\xe3\\xfa\\x42\\x9f\\xb5\\x34\\x61\\xa0\\xc6\\x74\\xeb\\x5a\\xa1\\x8d\\xbd\\x60\\x7a\\x2b\\x77\\xa9\\x6d\\x3a\\xb4\\x64\\xec\\xd9\\x74\\x92\\xf6\\xde\\x46\\x0c\\x9f\\x11\\xb5\\xc1\\x75\\x6c\\xb5\\x9c\\xb1\\x34\\x8d\\xfd\\x77\\x95\\x6b\\x71\\x90\\x7c\\x54\\x82\\x1e\\x30\\x3c\\xb8\\xb1\\x49\\x06\\xc0\\x03\\xe3\\x48\\x4b\\xe4\\xea\\x05\\xa6\\x90\\x1d\\x69\\xb0\\x74\\x85\\xe8\\x58\\xf7\\xb4\\x71\\xc6\\x35\\xf9\\x03\\x95\\xb9\\xa3\\xe2\\x24\\x7f\\x1a\\xd1\\x2b\\x11\\x8f\\xfa\\xfc\\x72\\x21\\xa5\\x7b\\x10\\xe3\\x19\\xb6\\x1a\\xf1\\xc1\\x36\\x06\\xa8\\x16\\x16\\xce\\x3f\\x1d\\x62\\xba\\x93\\x2f\\xf4\\xe6\\x3e\\x74\\xb8\\x42\\x55\\xe3\\xaf\\x52\\x10\\xbb\\xd5\\x71\\xbd\\xa4\\x4c\\xbf\\x44\\xb7\\x14\\x42\\x2c\\xb4\\x5c\\x2e\\xf2\\x1f\\x98\\x13\\x1b\\xa9\\x6b\\x7e\\xdb\\x9b\\x03\\xe3\\x3d\\x7d\\x18\\x8d\\x5b\\x8d\\x90\\x4c\\xb4\\x13\\x6f\\xe2\\x69\\xdb\\x14\\x69\\x88\\x16\\x8e\\x7e\\xe2\\x45\\x35\\x63\\x54\\xf0\\x02\\xa5\\xea\\x8b\\x35\\xa3\\xa9\\x9e\\x83\\xa1\\x32\\x72\\x27\\x41\\x44\\xb3\\x3a\\x60\\xca\"},\n{{0x66,0x56,0xf4,0xd4,0x71,0x81,0x57,0xc4,0xba,0xc3,0x8f,0xf7,0xab,0xe5,0xeb,0x1f,0x81,0x2c,0x0b,0x98,0x6d,0x9c,0x01,0x4a,0xba,0xd5,0xb0,0x9a,0xa6,0xc8,0xee,0x4a,},{0xf3,0x08,0x78,0x98,0xe4,0x52,0xbe,0x9e,0x30,0xae,0xcc,0x4e,0x8f,0xfe,0x0c,0x01,0x16,0x98,0x88,0x68,0x3f,0x62,0xa4,0x5b,0x8d,0xa3,0x82,0x99,0x01,0x4f,0x5b,0x4a,},{0x9c,0x2c,0x39,0x91,0x5a,0xed,0x6a,0xdd,0x00,0x4e,0x7d,0xd6,0x84,0xee,0x3d,0xcd,0xd1,0x0d,0x87,0xa4,0x87,0xf6,0x77,0xe7,0x3c,0x2b,0xce,0x0f,0xca,0x7d,0x50,0x87,0x96,0x46,0x41,0x50,0xa5,0x2a,0x44,0x0f,0x52,0x37,0x85,0x0a,0x00,0x9c,0x72,0x16,0x2d,0x9d,0x29,0x85,0x47,0x0a,0x33,0x49,0x0e,0x66,0xd3,0xc4,0x01,0x70,0x4c,0x05,},\"\\x94\\xd9\\xe5\\xe5\\xa7\\xb7\\x05\\xd9\\xd9\\x76\\xfe\\x71\\xe9\\x4d\\x3f\\x7f\\xa7\\x86\\x6a\\xfb\\xf7\\xec\\xe4\\x24\\xf1\\x36\\x32\\x77\\x99\\xb2\\xb2\\x06\\xce\\x4e\\xf4\\xc3\\xf3\\xe7\\x05\\x55\\x3a\\xfc\\x8f\\xd5\\xc1\\x95\\x2a\\x4c\\x16\\x65\\x8d\\x4a\\x78\\xaf\\xbb\\x9a\\x97\\xf2\\x71\\x93\\xc6\\x5b\\x65\\xb8\\x2e\\x8f\\x3b\\x71\\x51\\x5f\\xac\\x82\\x64\\x0e\\x0f\\x8a\\x5f\\xb3\\x5a\\xe6\\xfc\\x6a\\x3d\\xb0\\x51\\xa2\\x2d\\x4a\\x53\\x00\\x41\\x3e\\x6e\\x33\\xd1\\x9c\\x20\\x13\\xc2\\x98\\x3a\\xca\\x8a\\xd6\\xce\\xc2\\xce\\x64\\xa8\\x14\\x16\\x4f\\x06\\x1a\\x1a\\x3c\\x5a\\x86\\x10\\xa7\\x65\\x0b\\xfb\\x54\\x23\\xd4\\x36\\x2c\\xe0\\x22\\x06\\xdb\\xe4\\xa6\\xfa\\x82\\x6f\\x03\\xb4\\x2a\\xc3\\xcd\\x9e\\xa4\\xc6\\x51\\x40\\x1b\\x3c\\xea\\x82\\xc3\\x99\\x3f\\x6a\\xf8\\xb2\\xc9\\xe2\\xe6\\xff\\xe6\\x92\\x80\\xab\\x3f\\x09\\xfb\\xe9\\x0d\\xd5\\x47\\xcc\\xda\\x9d\\x9e\\x8e\\x8a\\x53\\x7b\\x3b\\x36\\x05\\x54\\x22\\x7e\\xd0\\x70\\x9f\\x29\\x31\\x98\\x98\\x2e\\xfb\\x5e\\xfb\\x0e\\x73\\xe0\\x00\\x42\\xd1\\xa0\\x63\\xb5\\x74\\x52\\x02\\x7d\\xce\\x1a\\x39\\xe4\\xb0\\x06\\x8f\\x58\\xb1\\x11\\xec\\x5d\\xc1\\x42\\xbf\\x41\\x9a\\xd8\\x93\\xd5\\x4f\\x42\\x60\\xcb\\xde\\x76\\x28\\xf7\\x83\\xde\\x84\\x96\\x38\\x03\\x06\\xa4\\xef\\xf6\\xd8\\x28\\x69\\x10\\x42\\x59\\xc9\\x4c\\x54\\xad\\x5a\\xa8\\xb0\\x67\\xc4\\x24\\x96\\xcb\\x88\\xdd\\x31\\x15\\x0e\\xa0\\x4d\\x49\\x9b\\xfa\\xc9\\x1f\\x4b\\xb3\\xe6\\x8a\\xf5\\xaf\\x7a\\x56\\x8a\\x3e\\x4c\\xe7\\xf1\\x70\\xd9\\x86\\x01\\x16\\x3f\\x49\\x52\\xf1\\xd2\\x5e\\x12\\xe0\\x0e\\xf0\\xa2\\xd8\\xf1\\x11\\xaf\\xdb\\x0f\\xaf\\xba\\xd2\\xbf\\x8e\\x8b\\x9d\\x49\\x36\\x3f\\xca\\x68\\x18\\x36\\x17\\xb5\\x41\\x27\\x0d\\xda\\x46\\x09\\xb2\\x61\\x67\\x29\\xab\\x1b\\x8c\\x42\\xdb\\xdd\\x7b\\xf9\\x86\\xaf\\x8f\\xba\\x52\\xe7\\x33\\xe4\\x2b\\xa0\\x3c\\x89\\x2e\\x1e\\x1e\\xc0\\x6a\\x90\\xb1\\x63\\xf5\\xa7\\x9f\\x61\\x65\\xeb\\x73\\x16\\x97\\x2a\\xc1\\xad\\xbf\\xcf\\x1d\\xca\\xb0\\x78\\x47\\xef\\x82\\xc2\\xca\\xb1\\x01\\x5d\\xbb\\x50\\xaa\\xdc\\x79\\xfe\\x11\\xc8\\x32\\x09\\x8c\\xac\\xc3\\x98\\x20\\xab\\x08\\x5b\\x69\\x63\\xbd\\x42\\x16\\x0e\\xd6\\x61\\x3b\\xae\\x5e\\x20\\x1f\\x17\\xc0\\xfd\\x7f\\x32\\x35\\x7a\\xe3\\x50\\xce\\x9c\\xbb\\xe9\\x26\\xfa\\x42\\xdc\\xbd\\x42\\x2a\\xc1\\xbf\\x09\\xa1\\x9a\\xd1\\xf6\\x94\\x69\\xe4\\xd1\\xdc\\xb1\\x24\\x11\\x8e\\xd4\\x52\\x2d\\x35\\x3c\\x17\\x42\\x98\\x65\\x0f\\xf8\\x83\\x82\\xfa\\x2f\\xdb\\xb2\\x86\\xc4\\x5b\\x18\\xa9\\xba\\xf6\\xf6\\x76\\x3a\\xc2\\x0c\\x9c\\xa4\\x76\\x7d\\x34\\x8c\\x4b\\x8d\\xed\\x63\\x00\\x76\\x65\\x7b\\x85\\xb1\\x4c\\x11\\xae\\x27\\x37\\xea\\x29\\xa4\\x35\\x15\\xb7\\xf0\\x56\\x74\\xa0\\xcd\\x3e\\xd4\\xbf\\x6a\\x3d\\x18\\x9a\\xe9\\x72\\x21\\x8f\\x87\\x7c\\xd8\\xaa\\x69\\x49\\x9d\\x5a\\x08\\xc9\\x9e\\x44\\x06\\x94\\xcc\\xac\\xcd\\xf1\\xf6\\x42\\xe1\\x4e\\x90\\x10\\x5b\\xee\\x6d\\x98\\xed\\xee\\xab\\x3b\\x4f\\x33\\x9f\\x30\\x01\\x88\\xae\\xc0\\xc1\\x6b\\xd6\\x45\\x21\\xd9\\x28\\x73\\x98\\xe6\\x48\\xdb\\x94\\x33\\x0e\\xd8\\xf6\\xb9\\xab\\x6c\\x7a\\xd9\\x3f\\xfc\\x43\\xe8\\x79\\x2e\\x63\\x7c\\x61\\xbf\\xf7\\xd8\\x56\\xe5\\x4e\\xf4\\x98\\x73\\x84\\xe3\\x12\\xcb\\x57\\x01\\x7a\\x50\\xea\\xe5\\x95\\x2a\\xbe\\x19\\xd8\\x99\\x9c\\x8c\\x82\\xdf\\xc4\\x57\\x98\\xcc\\x17\\xc8\\xd9\\x49\\x6b\\xf5\\x20\\xec\\xc5\\xb7\\x7f\\xe2\\x84\\x91\\x55\\x66\\xc4\\x56\\x85\\xc3\\x04\\xa2\\xac\\xd5\\x25\\xef\\x12\\xc8\\x6f\\x38\\xae\\xf5\\x54\\xd8\\xa2\\x38\\x47\\x37\\xcc\\x41\\x33\\xfb\\x7e\\x2b\\x65\\xc1\\x3b\\xef\\x31\\x66\\x8a\\x6c\\x2f\\x60\\xee\\xcd\\x84\\x12\\xee\\xff\\x7f\\x6b\\x60\\x5c\\xbe\\x95\\x08\\x3e\\x23\\x3e\\xc1\\xa7\\xbb\\x36\\xde\\x23\\x6c\\x8a\\x71\\xba\\x28\\x72\\xbe\\x94\\x6c\\xd3\\xb3\\x89\\x35\\xf5\\xda\\x64\\xc8\\xfe\\xc8\\xe1\\x4f\\x45\\xcc\\xf6\\x12\\x4b\\xab\\x7f\\x70\\x56\\x7c\\x2f\\x2b\\xfd\\xd5\\x66\\x67\\x60\\x95\\x72\\x03\\x7c\\x76\\x14\\x6c\\x99\\x17\\x07\\x65\\x9b\\x57\\x09\\xb0\\x74\\xe3\\x45\\x1f\\x92\\x1a\\x2d\\xf2\\x83\\xb9\\x6a\\xa2\\x6a\\xb4\\x76\\x62\\x50\\x16\\xf1\\x81\\xad\\x64\\xc9\\x91\\x9c\\xf4\\x1d\\x71\\x4a\\x1a\\x9a\\x5e\\x2b\\xb2\\x6b\\xaf\\x87\\x70\\xb2\\xeb\\xa7\\x7b\\x77\\x8a\\x33\\x26\\x77\\xa7\\x57\\x2e\\xe3\\xa2\\xb1\\xdc\\x05\\xf7\\x35\\x6b\\xdc\\xae\\x5f\\x55\\xe3\\x53\\x29\\xe3\\x4c\\xaa\\x79\\x43\\x0b\\x27\\x0c\\x03\\x61\\x60\\xdc\\x9f\\xca\\xab\\x5b\\x25\\x45\\x43\\xac\\x94\\xb2\\x46\\x81\\xf1\\x71\\x72\\xb6\\x15\\x9d\\x16\\x62\\x1d\\x7a\\xd0\\xee\\xbd\\x89\\x5a\\x1e\\x1d\\x09\\xb9\\x16\\xa8\\x6f\\xb4\\x8e\\x4c\\x91\\x66\\x10\\x57\\xee\\xe9\\x5c\\x08\\x70\\xed\\x54\"},\n{{0x14,0x38,0x3e,0x6e,0x56,0x04,0xc9,0x9c,0x24,0x8d,0x39,0xbe,0x51,0xd1,0x64,0xb1,0x34,0x42,0xb0,0x5e,0x51,0xd7,0x8e,0xcd,0x99,0x93,0x64,0x22,0x1a,0x45,0x03,0x6b,},{0x2f,0xc1,0x61,0x38,0x22,0x0a,0xb7,0x4b,0x3b,0xd4,0x46,0xf8,0xa7,0x14,0xb5,0x8d,0x54,0x63,0xd4,0x0d,0x43,0x67,0x92,0x50,0x07,0x47,0x4c,0x5b,0x9e,0x35,0xd4,0x94,},{0x45,0xe8,0xed,0x1a,0x75,0x1d,0xfc,0x3b,0x9b,0x7b,0xd7,0xa1,0x0b,0xf5,0xbd,0xcf,0x8c,0xa4,0x61,0x86,0x5a,0x49,0x0c,0x10,0x5f,0x10,0x45,0x29,0x41,0xcf,0x87,0x72,0x12,0x14,0xbf,0xbf,0x3a,0x35,0x60,0x6b,0x7c,0xe3,0x5d,0x6f,0x70,0xaa,0xf2,0xd5,0xea,0xdc,0xc0,0xde,0x03,0x5e,0x9b,0x2f,0x6d,0x7b,0x86,0x2f,0xc2,0x84,0x90,0x04,},\"\\xc4\\x75\\x3b\\x7f\\x7a\\x6f\\x6d\\xea\\x25\\x15\\xc6\\xe3\\xd2\\x95\\x61\\x50\\x6f\\x4f\\x36\\xe0\\xde\\x84\\x99\\x92\\x21\\xf2\\x28\\xe2\\x0b\\xd5\\x12\\x8e\\xd9\\x3b\\xdb\\x8d\\x11\\x93\\x23\\x7d\\x8e\\x29\\x41\\x69\\xa2\\xbc\\x44\\x8a\\xf9\\xdd\\x36\\x06\\x63\\x01\\xef\\xb7\\xfe\\x12\\x31\\x35\\x3c\\x06\\x23\\xff\\xe1\\x11\\x5d\\xeb\\xb6\\x90\\x5a\\xc6\\x94\\x6e\\xe3\\x82\\xa2\\x7c\\x3c\\x09\\xe1\\xb1\\xf5\\xc1\\x14\\x93\\xdb\\xa3\\x7d\\xa0\\xff\\x6e\\xea\\x75\\xd9\\xfa\\xb0\\xee\\x92\\x6d\\x70\\x1d\\xac\\x2f\\xc5\\xb7\\xef\\x57\\x88\\x80\\xa5\\xd5\\xee\\xec\\xad\\xc1\\xf4\\xbc\\xc4\\xcd\\x4e\\xc6\\xf2\\xf1\\x4f\\x52\\xa8\\xc1\\x64\\x07\\x2e\\x6f\\xde\\x5a\\xb2\\xee\\x9c\\xee\\x0b\\x48\\xe5\\x1a\\xf0\\x55\\xf9\\xfe\\xc7\\xc6\\x37\\x50\\xfe\\xdf\\x72\\x33\\x2b\\x23\\x86\\x3a\\x1e\\x54\\xc5\\x2b\\x46\\x1a\\x21\\x50\\x6d\\xfd\\xfc\\x63\\x88\\x0e\\x22\\xd8\\x9c\\x89\\x44\\x12\\x66\\x6c\\x92\\x98\\x21\\xc0\\xe4\\x39\\xe7\\x45\\x41\\x5f\\x71\\x79\\x69\\xe6\\x05\\x85\\x54\\xd6\\x4b\\x94\\x7a\\x4f\\xc9\\xd1\\x6a\\xca\\xe3\\xe4\\x9a\\xec\\x08\\x80\\x1a\\x09\\xd9\\x72\\xf7\\x9e\\xad\\x68\\xd5\\x29\\x76\\x80\\x69\\x73\\x5c\\xaa\\x74\\x2b\\x45\\xa5\\x83\\x05\\x81\\xb8\\x0c\\xa0\\x61\\xa6\\xc1\\x51\\x5e\\x3f\\x7d\\x5a\\x93\\x37\\x87\\x8c\\x19\\xfc\\x94\\xee\\xf2\\x26\\x98\\xea\\x6c\\x4d\\x05\\xf9\\xed\\x41\\x1b\\x6b\\x8f\\x05\\x2b\\x5f\\xf1\\x5d\\xc2\\x3a\\x64\\xbe\\xea\\xae\\x99\\xf8\\x48\\x93\\xde\\x3d\\xf9\\x40\\xa4\\xe0\\xb8\\xe9\\x93\\x93\\x01\\x39\\x05\\x2d\\x99\\xbe\\x47\\xbc\\xa8\\x77\\x5f\\x85\\x63\\xbd\\x40\\x26\\xb7\\x13\\x43\\xd5\\x19\\x68\\xf2\\x33\\x75\\x28\\xf4\\xc9\\xdb\\x8b\\xbd\\x0a\\x29\\x8a\\xf0\\x4b\\x27\\x69\\x5d\\x86\\xb7\\xf7\\xba\\x6c\\x4c\\xcc\\x62\\x73\\xfe\\xbc\\xd8\\xf7\\x5c\\xff\\x26\\x69\\x95\\x24\\x4f\\xc1\\xfa\\x13\\xd8\\xd8\\x43\\xf0\\xbf\\xf4\\x9c\\xc2\\xd5\\x08\\xf4\\xa2\\xb3\\xaa\\xd1\\xd9\\x5f\\xb2\\x2a\\x2b\\xc6\\xad\\x1b\\x96\\x6b\\x08\\x12\\xd9\\x90\\x70\\xbb\\xa0\\x7c\\x92\\x3e\\xe4\\xd0\\x81\\x07\\x48\\x6d\\xc0\\x1a\\x06\\xdb\\xa6\\xf1\\xd5\\xf1\\x05\\xac\\xea\\xde\\x33\\xb1\\x66\\x51\\x0e\\x42\\x7e\\xbb\\xce\\x52\\xa3\\xe7\\x83\\x1f\\x0f\\x78\\xa3\\xc6\\xe0\\x72\\x60\\x83\\x34\\xd8\\x02\\x1c\\x33\\x8a\\x73\\xcc\\x0c\\x47\\xf1\\x9c\\x9f\\xae\\x40\\x3b\\x97\\x16\\xd0\\xd1\\x5f\\xbd\\xf6\\x46\\x6b\\x08\\xf6\\xac\\xce\\x3f\\x50\\xa7\\x03\\xb1\\xde\\xa8\\xd8\\x26\\xdf\\x84\\x2c\\xa1\\xba\\x20\\xd2\\x9f\\x45\\x48\\xac\\xfc\\x75\\x4c\\xf0\\x11\\xf5\\x70\\x68\\x1b\\x59\\xe4\\xda\\x25\\x38\\x5e\\xbd\\x6d\\x5c\\x3a\\xdc\\x93\\x05\\x29\\xe1\\x66\\xce\\x67\\x05\\xf6\\x01\\x02\\x10\\xdb\\x10\\x64\\x62\\xb3\\x33\\x32\\x04\\xe7\\xad\\xad\\xee\\x66\\x06\\xa5\\x62\\x06\\xb4\\x7e\\xef\\x20\\x74\\xb1\\x16\\xe2\\x2a\\x61\\x54\\x18\\xec\\x2c\\xdc\\x33\\x1f\\x1e\\x19\\xe0\\x7e\\x8a\\x37\\xb9\\x2d\\x69\\xdf\\x07\\x34\\xe0\\x85\\xda\\xee\\xb9\\x01\\xec\\x6e\\x8c\\x35\\xf1\\x03\\xf1\\xd8\\x6e\\xf0\\xd2\\xa2\\x65\\x2b\\x01\\xd1\\x83\\x59\\x7e\\x4c\\xfd\\xee\\xdf\\xe5\\xdf\\x9a\\x7e\\xf6\\x6a\\x1c\\x79\\x6a\\x37\\xa2\\x71\\x13\\xb9\\x44\\xdd\\x7b\\xa1\\x7c\\x46\\x00\\x15\\xab\\x8a\\xce\\x45\\x1c\\x57\\x85\\x0e\\xc6\\xc2\\x90\\xc5\\x4e\\x51\\x13\\xf5\\x5e\\x99\\xa8\\xe6\\xe4\\x71\\x1e\\x3b\\x78\\x17\\xbf\\x91\\xa5\\xad\\xb3\\x7f\\xb9\\x46\\x1b\\xe6\\xb1\\xb5\\x5d\\x58\\x60\\x46\\xe4\\x2a\\x54\\xc5\\xde\\xf4\\x07\\x6f\\x1f\\xf6\\xc3\\x1b\\x80\\x6f\\xc6\\x02\\x47\\x43\\x56\\xaa\\x28\\x99\\xea\\xe7\\x0f\\x5e\\x5a\\xbf\\x1f\\x75\\xa7\\xf2\\x4c\\x13\\x4c\\xde\\x11\\x79\\x3b\\xb1\\x62\\xe0\\x3a\\x58\\x3d\\x5b\\xe0\\x46\\xac\\xc7\\x34\\x56\\xd1\\x2d\\x50\\x9d\\x92\\xf7\\x70\\x57\\x68\\x68\\x6f\\x6c\\x71\\x4a\\x4e\\x57\\xec\\x88\\xb7\\x13\\x98\\xe2\\x3e\\x83\\x5d\\x6d\\x65\\x47\\x22\\x59\\x96\\xb7\\xed\\x08\\xf3\\xb7\\x44\\x3b\\xb1\\x7c\\x89\\x94\\x09\\x49\\x3d\\x0e\\xfe\\x84\\x55\\xbe\\xc8\\xe8\\xc2\\x84\\xa3\\xb1\\x49\\xa5\\xb4\\xca\\x63\\x1e\\xa6\\x20\\xb1\\xbb\\x81\\x7c\\xed\\xab\\xa5\\x0b\\x04\\x44\\x11\\x84\\x9d\\x26\\x0a\\x6f\\x2a\\x0d\\x3f\\x2c\\xce\\xec\\x38\\x42\\x71\\x9a\\x5e\\xa4\\xfe\\x18\\xdd\\xe0\\xd4\\x2d\\xcb\\x33\\xad\\x21\\xe6\\x45\\x33\\x25\\xaf\\x6f\\x3c\\x00\\x9f\\x2b\\xb9\\x78\\xd3\\x0c\\xee\\xae\\x9a\\xa4\\x92\\x8b\\xf7\\x37\\x67\\xcd\\xa9\\x29\\x2a\\xb8\\x93\\xce\\x5f\\xa3\\xaa\\x4c\\x23\\x21\\x63\\xb4\\x5c\\x64\\xed\\x79\\x77\\x77\\x9b\\x1c\\x0c\\xaf\\xcf\\xc2\\xb9\\xfa\\x08\\x4a\\x32\\x4f\\x11\\x3a\\xde\\xec\\x21\\x8b\\x47\\x35\\xb6\\xb4\\x64\\xdb\\x6d\\x46\\xc2\\x79\\x1a\\xf3\\x45\\x5f\\x1c\\xa5\\xea\\x1e\\x9a\\x04\\x8c\\x05\\x1a\\x54\\xdf\\xa0\"},\n{{0x59,0xb0,0x72,0x63,0xb2,0x2c,0x0a,0x38,0xbb,0xc5,0x91,0x05,0x95,0x94,0xb2,0xbd,0x92,0x7e,0x80,0x59,0x61,0xdd,0x07,0xe1,0xf9,0x42,0x45,0xb2,0x3a,0xa2,0xe0,0x16,},{0x0b,0x1e,0x4c,0xf5,0xaf,0xf2,0x78,0xec,0x65,0xb4,0x05,0xf5,0x10,0x8e,0x1b,0x5b,0x18,0xa9,0x69,0xad,0x1f,0x1e,0x63,0x81,0x91,0x2c,0x82,0xd6,0x98,0x90,0x7c,0xba,},{0x88,0x6d,0xa3,0x3e,0x35,0x53,0x28,0x5e,0xa5,0x9c,0x14,0x31,0xb6,0xe8,0x6e,0xa4,0x9b,0xb6,0x8b,0x2e,0x0e,0xfd,0x2b,0x15,0x7e,0x77,0x91,0xb7,0x4f,0x35,0xa2,0x42,0x1b,0xb3,0x59,0xf3,0xdc,0x1e,0x4c,0xe5,0xf1,0x1f,0x73,0x65,0x2e,0x03,0xbf,0xc0,0xb4,0x29,0xc5,0x8f,0x0f,0x2d,0x74,0x18,0xc7,0xc2,0x0b,0xce,0x2e,0x2d,0x19,0x01,},\"\\x08\\xce\\x0d\\x4d\\xb5\\xc2\\xaa\\x50\\x0a\\x19\\xef\\xbc\\x8d\\xc8\\x54\\x92\\x50\\xf7\\xdd\\x46\\xa7\\xa9\\xa5\\x40\\x74\\x17\\xb3\\xd5\\x18\\x20\\xe4\\xb0\\xd6\\x12\\x75\\x58\\x3f\\x56\\xf8\\x97\\xfd\\x94\\x2b\\xdd\\x73\\x11\\xad\\x6b\\xaf\\x73\\x81\\x28\\x56\\x7a\\xf6\\x55\\x8d\\x75\\x90\\x6a\\x02\\xc4\\x34\\x3a\\x99\\x55\\xd5\\x9b\\x11\\x08\\x8c\\x58\\x8d\\xc7\\xdd\\x08\\xf6\\x79\\x65\\xc5\\x60\\x2a\\x56\\x92\\x8d\\xda\\x4a\\xe1\\x64\\x29\\x31\\x63\\xb5\\x17\\xca\\x17\\xde\\xd0\\x4f\\xe4\\xab\\x2f\\x97\\x89\\x13\\x0a\\xe9\\x6a\\xb2\\x31\\xf0\\x7e\\x09\\x01\\x5b\\x78\\xf3\\x84\\x8c\\xef\\x43\\x5d\\xb0\\xad\\x9f\\x35\\xe0\\xfb\\xc9\\x85\\x1e\\x3e\\xcf\\xc9\\xfb\\x18\\x6d\\x14\\xd8\\xda\\x4d\\xda\\x45\\xd0\\xb3\\xeb\\x3e\\xe4\\x50\\x0c\\x10\\x1e\\x31\\x94\\xb5\\x72\\x14\\x06\\x89\\xcd\\x75\\xda\\x12\\x87\\xb2\\x54\\xf3\\x74\\xe3\\xd9\\x33\\x26\\xae\\x5f\\xaf\\x11\\x40\\x18\\xac\\x71\\x4b\\xd0\\x03\\x75\\xd9\\x2a\\x8b\\xb6\\x59\\xc3\\x29\\x12\\x83\\x1f\\x4f\\x20\\x77\\x6e\\x9e\\x2c\\x25\\x02\\x9f\\x0a\\xff\\x39\\xfd\\xda\\xc7\\x24\\x15\\x43\\xa0\\x36\\x6b\\x84\\xde\\x7b\\x1f\\xf2\\x3e\\x8e\\x4d\\xc0\\x93\\xdf\\x0d\\x2d\\xd5\\xe5\\x3e\\x68\\x47\\x94\\x8c\\xf3\\xd0\\xff\\x3f\\x56\\x4a\\xd9\\x4d\\x9c\\xc0\\x0a\\x5e\\xa5\\xb6\\x95\\xe4\\x08\\xbf\\x50\\xf5\\xba\\xb2\\xf6\\xea\\x87\\xba\\x8a\\xd3\\xa1\\x94\\x01\\x95\\xcf\\x1b\\xc2\\xb5\\xb3\\x48\\x47\\xad\\x3a\\x5e\\xff\\xb8\\xa7\\x82\\x3d\\xe9\\x1e\\xf1\\x63\\x38\\x69\\xd1\\xf0\\x46\\x43\\xaf\\x4d\\x82\\x6a\\x59\\xe7\\x8b\\x9d\\x18\\x63\\x12\\xb3\\xd9\\x72\\x26\\x36\\x54\\xac\\x55\\x87\\xb8\\x0b\\x71\\x76\\x46\\xf3\\x10\\x03\\xdb\\x81\\xac\\x70\\x86\\x0d\\x3f\\xc8\\xcd\\x3a\\x6a\\x0a\\x0d\\x57\\x6d\\x25\\x73\\x1e\\xf7\\xb8\\x96\\x62\\x63\\xd7\\xa0\\x5b\\x55\\x00\\x9e\\x8a\\x23\\xda\\xc0\\xf9\\xa2\\x1a\\x24\\xb0\\x6e\\x13\\x90\\x0e\\x44\\x44\\x46\\xfd\\xfe\\x56\\xcb\\xc1\\xa0\\x26\\xdf\\x41\\x06\\x6b\\x20\\x1b\\x14\\x81\\xe5\\x61\\x58\\x92\\x6c\\x0c\\x9e\\xa9\\x0f\\x0c\\x64\\x5a\\xab\\x4b\\xef\\x12\\xd4\\xe0\\x72\\xcb\\xfd\\xc3\\xc3\\xd5\\xe0\\xc7\\x2c\\xf8\\x8f\\x16\\x6d\\xe0\\x48\\x87\\x4f\\x35\\x34\\xe0\\x40\\xc6\\x2b\\x16\\x62\\x82\\x1b\\xdd\\x16\\xb0\\xe8\\x58\\x28\\x17\\x46\\x1c\\xb2\\x68\\x92\\x79\\xb4\\x46\\xd7\\x0c\\x8a\\xc2\\x0a\\xd0\\x3e\\x59\\x8c\\xad\\x49\\x08\\xc5\\x2c\\x35\\x0d\\x42\\x43\\xee\\x8a\\xed\\xb8\\x7a\\x4a\\xf9\\x77\\xf7\\xdb\\x57\\xcd\\x94\\x7b\\x47\\xd6\\xbb\\x51\\x40\\x9d\\x80\\xd8\\x1f\\x6d\\xb0\\x3c\\xb9\\xa6\\xa6\\xb7\\x98\\x12\\xf4\\x70\\x69\\x0a\\xfc\\x18\\x36\\xa5\\x31\\x33\\x80\\x94\\xcf\\x26\\xd3\\xc1\\x23\\x2f\\xd5\\x60\\x5d\\x8f\\x8c\\x55\\xb6\\xf8\\xa2\\xa7\\xef\\x1e\\x0c\\x78\\x15\\x55\\x94\\xb2\\x37\\x95\\x6d\\x2a\\xba\\xd6\\xa9\\xad\\xcd\\x58\\xe1\\x1c\\xcd\\x35\\xcc\\x99\\x5b\\x9a\\x0a\\xec\\xbf\\x7f\\x57\\x41\\xac\\x05\\x1b\\x04\\xef\\x6b\\x97\\x44\\xb5\\x6f\\xcc\\xb4\\x63\\x98\\x52\\x8b\\xb3\\x1f\\xbe\\x84\\xe0\\x78\\x84\\x3e\\x69\\xbf\\x33\\x88\\x98\\xcd\\xef\\x69\\xad\\x41\\x87\\x23\\x95\\xe4\\x6b\\x59\\x39\\x04\\x82\\x55\\x47\\xe0\\x0b\\xda\\xf2\\x21\\xf8\\xfa\\x58\\x7e\\xa2\\x03\\x7f\\xfb\\x9a\\xc9\\x30\\x7d\\xd3\\xf8\\xf3\\x5e\\xc5\\x38\\x6b\\xa9\\x66\\x33\\x3e\\x2a\\xc8\\x72\\x7b\\x0e\\x1b\\x80\\x61\\x2d\\x3c\\x7f\\x2c\\xb8\\x8b\\xaa\\xca\\xdf\\xe2\\x16\\x3b\\xc3\\x8c\\x88\\x84\\x2e\\x76\\xa3\\x94\\x57\\x1d\\x40\\x61\\x0e\\x8a\\x29\\x76\\x02\\x79\\x37\\x63\\x29\\x6e\\x3e\\xab\\xf7\\x20\\xe9\\x84\\xb2\\xed\\xd2\\x8c\\xf5\\xc4\\xe0\\xf9\\xa0\\xf7\\x6a\\xce\\xba\\x28\\xcc\\x1f\\x1b\\x69\\xff\\x1d\\x35\\xb4\\xbd\\x33\\x47\\xb7\\xf9\\xa9\\x5a\\x4c\\x1e\\xa1\\x07\\x34\\xe1\\xc9\\x18\\xeb\\x96\\x24\\x9d\\x0c\\xc7\\x0b\\x47\\x7f\\x6f\\x23\\x80\\x9b\\xbd\\xa9\\x01\\xd5\\x3f\\x48\\x5a\\x71\\xf5\\x08\\x60\\x02\\xc1\\xb7\\x1e\\xfc\\xc4\\x1c\\xb1\\xae\\xb5\\x12\\x2a\\x3f\\x3b\\xfc\\x96\\xc5\\x1a\\x55\\xd7\\x5c\\x02\\x98\\x42\\x88\\xbe\\x65\\x78\\x87\\x85\\x4c\\xfa\\x73\\x89\\x74\\xbc\\xd5\\x44\\x01\\x46\\xf9\\xbb\\x14\\x04\\x0d\\xe5\\x4f\\x54\\x44\\xad\\x43\\xb7\\x9a\\xf9\\xbd\\xb2\\x4e\\xd6\\xa4\\x8e\\xb2\\xfd\\xee\\xd7\\x1f\\x31\\xf0\\xec\\xe1\\x02\\xe9\\x18\\xe9\\x56\\x35\\xc7\\xa0\\x38\\x63\\x3e\\xe3\\x48\\xd8\\xb5\\x78\\x16\\x52\\xd5\\x05\\x9d\\x21\\x5a\\xc9\\x7f\\x30\\xea\\x20\\xd2\\x77\\xeb\\xbf\\x15\\x24\\x69\\x05\\x42\\x8a\\x7b\\xec\\x02\\xb8\\xf9\\x26\\x31\\x5b\\xad\\x67\\x23\\xfd\\x64\\xd7\\x1f\\xc9\\x5f\\x33\\x33\\x64\\xcb\\xe9\\x0d\\x46\\x46\\x33\\x3c\\x40\\xdd\\xa6\\xd1\\xd4\\x33\\xb7\\xc1\\x95\\xa7\\x58\\xdb\\xb4\\x03\\x8a\\xf5\\xdc\\xc7\\x23\\x2d\\x45\\x47\\xf5\\x40\\xe3\\x94\"},\n{{0x5c,0xc1,0x15,0xd8,0x39,0xe0,0x58,0xcd,0xb6,0x51,0x8e,0xe9,0xc1,0x61,0xc0,0x04,0xd8,0x8b,0xd3,0x90,0x8d,0x3c,0xf6,0xd5,0x2c,0x8f,0x29,0x6a,0x1a,0x07,0x6b,0x9b,},{0x1e,0x8f,0x33,0x05,0xbf,0x2f,0xa1,0x1b,0x17,0xd9,0x24,0x16,0xab,0x0e,0xa7,0x62,0x39,0x6d,0x88,0xf2,0xf9,0x70,0xef,0x0b,0x10,0x0e,0xd3,0xbf,0x5c,0xc1,0x34,0x40,},{0x03,0x71,0xc2,0xd6,0x4c,0x5e,0xc0,0xc8,0x27,0x6c,0xa5,0xff,0xa6,0x15,0xef,0xf4,0x2f,0x9e,0xff,0xfc,0x58,0xdd,0x8e,0xcf,0xcf,0x67,0x62,0x0a,0x9b,0xcb,0x38,0xfa,0xf1,0x18,0x93,0x2b,0xf2,0xcd,0x5b,0x92,0x05,0xfa,0x55,0x13,0x34,0xdf,0x2a,0x75,0x7c,0x59,0x77,0x44,0xf7,0x91,0xf3,0x71,0xfb,0xed,0xd9,0x8b,0x21,0xf7,0x34,0x05,},\"\\x53\\x3e\\x49\\xc1\\xd5\\xf3\\x3c\\x5e\\xc4\\xbe\\x84\\xc6\\x19\\xf4\\xec\\x64\\x9c\\x25\\xfd\\x70\\xbd\\xcf\\xe2\\x57\\xa6\\x3c\\x33\\x73\\xa4\\xd0\\x89\\xc8\\x9a\\xf6\\xee\\xb7\\x16\\x0d\\xd7\\x7a\\xb6\\x6b\\x1e\\xe7\\xe1\\x08\\x50\\xab\\x4f\\xc1\\xf3\\x51\\x32\\x33\\x2b\\x53\\x78\\x9b\\x2b\\x01\\x40\\xc4\\xf2\\x0f\\x97\\xf2\\x14\\x20\\x72\\xd6\\x24\\xaf\\xf7\\xaa\\xd3\\x24\\xaa\\xcd\\x06\\x8c\\x03\\x5a\\xff\\x52\\xfa\\x71\\x2f\\x4e\\x74\\x83\\x2d\\xe0\\x31\\xb2\\x64\\x23\\x14\\xd1\\x71\\x10\\xde\\xe6\\xfb\\x85\\x76\\x2d\\xc3\\x0d\\x7e\\x97\\x78\\x2f\\xd1\\xfb\\xff\\x71\\x79\\xf0\\x09\\x17\\xf5\\x5a\\xf7\\x50\\x3a\\x5b\\x7e\\x23\\xc6\\xea\\xdb\\x65\\xe1\\x04\\xf1\\x51\\x7b\\x66\\x24\\xc9\\xe5\\x20\\x4b\\x3f\\xd2\\x9a\\x65\\x85\\xe9\\x2c\\xe3\\xa3\\xee\\xe2\\xc5\\xae\\x17\\x79\\x20\\xf7\\xb4\\xab\\x2c\\xac\\x87\\xd6\\x72\\xab\\x6b\\xaa\\xc1\\x18\\x6d\\x90\\x4a\\xea\\x34\\x98\\x53\\x4e\\xb5\\xab\\x23\\xe4\\xac\\x4c\\x0d\\xdb\\x0d\\x82\\xa5\\xae\\x53\\x1d\\x76\\x54\\x9d\\x36\\x76\\x28\\x57\\x7b\\xac\\x42\\x35\\xe8\\x97\\xd9\\xfe\\x20\\x55\\x22\\x04\\x7d\\x21\\x4f\\xf6\\xcc\\xf3\\x11\\xc4\\xe3\\x97\\x82\\x7d\\x97\\xf2\\x86\\x8e\\x70\\xac\\x17\\xd2\\x8e\\x33\\x49\\x99\\x74\\x4d\\x35\\x93\\x76\\xa4\\x82\\xfd\\xcb\\x41\\x4b\\x02\\xb2\\x68\\x7b\\x96\\x2e\\xe8\\x08\\x6e\\x57\\x3f\\xe0\\x00\\xdc\\x51\\xde\\xe0\\x68\\x79\\xc6\\x84\\xe2\\x5f\\x94\\xce\\xe5\\xe8\\x61\\x34\\x7e\\x7b\\xe7\\xfc\\xa5\\x49\\xa0\\xf7\\x65\\x13\\x6a\\x2f\\x4b\\x88\\xfe\\xde\\x07\\x02\\x4d\\xd2\\xfc\\xe1\\xf6\\xd0\\xc0\\x35\\x4d\\xa1\\xa1\\x6e\\xf3\\x66\\xb3\\x15\\xb3\\xf7\\x23\\x30\\x31\\xf9\\x79\\xb7\\x0e\\xac\\x6e\\x23\\xbf\\x3b\\x34\\x9e\\xfb\\xd0\\xe4\\xf5\\x3f\\x4d\\x5c\\x41\\xfc\\x00\\x42\\x76\\xa5\\x96\\x70\\x65\\x9f\\x69\\x05\\xef\\x03\\xd2\\xfc\\x09\\x8d\\x58\\x9f\\xcb\\xc1\\x32\\x82\\x82\\xfa\\x22\\xb1\\x0d\\xb8\\x3c\\x5d\\x70\\x86\\x59\\x94\\xfd\\x19\\xd7\\x60\\xa3\\x9d\\x47\\x6e\\x02\\x33\\x0d\\x2c\\x6d\\x19\\xe7\\x42\\x26\\x7d\\xd3\\x65\\xbb\\xe1\\xfe\\x5c\\x71\\x1a\\x95\\xb1\\x84\\x50\\x8c\\xe4\\x8c\\x1c\\x96\\xd7\\xe6\\x39\\x90\\xb4\\x08\\xd4\\x50\\x89\\xbe\\x79\\xe3\\x2f\\x9c\\xb0\\x16\\x2f\\xd1\\xe7\\xd0\\xd1\\x9d\\x97\\xd0\\xae\\x78\\xff\\x82\\x4c\\xc6\\x98\\x94\\x86\\xc0\\xbd\\x03\\x83\\x52\\x55\\x1f\\x37\\x49\\x9e\\x9e\\x98\\x26\\x80\\x4e\\x9d\\x26\\x24\\xad\\x0c\\x7b\\x75\\x34\\x56\\x0f\\x45\\xfd\\x7d\\x32\\x4b\\x8e\\x51\\x7e\\x01\\xc9\\xb2\\x74\\x3c\\x14\\x97\\x9c\\xfd\\x51\\x2b\\xc3\\xfe\\x66\\x72\\x79\\xb3\\xa2\\x77\\xfb\\x46\\x3e\\x9d\\x73\\x49\\xb6\\x4f\\xfc\\x9f\\xe6\\x08\\x84\\xc2\\x1e\\x48\\x10\\x81\\xed\\x70\\xe6\\xda\\x5a\\x35\\x39\\xc4\\x48\\x97\\x1f\\x0d\\x97\\x87\\x28\\x9f\\xcb\\x00\\x80\\xf2\\x19\\xe9\\x94\\x49\\xf8\\x29\\x8c\\x42\\x47\\x5f\\x87\\xfd\\x10\\xae\\xb5\\x09\\xc5\\x30\\xcf\\x6a\\x57\\x74\\x8e\\xb8\\xf3\\x56\\x21\\x61\\xfa\\x48\\x75\\xea\\x95\\x3f\\x09\\x65\\x9c\\x7d\\xf7\\xa9\\x95\\x0f\\x03\\x17\\x46\\x7c\\xb4\\xe5\\x36\\x6e\\x19\\x6e\\x32\\xf5\\xe2\\x69\\x67\\x33\\xa2\\x5e\\xac\\xbd\\xe4\\x92\\x10\\x49\\x07\\x62\\x06\\x0e\\xa2\\x31\\x37\\x0d\\x40\\x90\\x42\\x9b\\xb0\\x6b\\xb8\\x67\\x39\\x9e\\x8d\\x37\\xbf\\x5d\\x21\\xa0\\xe7\\x21\\x47\\xe4\\x96\\xcf\\x3b\\x7d\\xd6\\xfe\\x6e\\x5e\\xde\\xa9\\x66\\x8d\\x80\\x21\\x90\\xa9\\x1c\\x60\\x0e\\x29\\x52\\x3f\\x8e\\xb9\\x04\\xe4\\x8b\\x70\\x41\\x2b\\xc1\\x0a\\x70\\x20\\x98\\x4c\\x5f\\xf0\\xf5\\xf3\\x83\\xf2\\x14\\xae\\x59\\x4d\\xc8\\x59\\x71\\xe4\\x80\\x37\\x28\\x48\\xd0\\xd7\\xe7\\xcc\\x5c\\x18\\xff\\x88\\xba\\x9b\\x26\\x2d\\x78\\x84\\x69\\x8a\\x41\\xc6\\xc7\\x81\\x9c\\x03\\x19\\xfd\\xc6\\xbb\\x07\\xb9\\x1d\\xc1\\x69\\x4d\\xaf\\xe3\\xaf\\x37\\xa5\\x38\\xbf\\x2b\\x2d\\x8c\\xac\\xb2\\x7d\\x24\\xcd\\xc6\\xea\\xdb\\x8c\\x6a\\x2e\\x6b\\x7d\\xf8\\xa4\\x65\\x4a\\xe9\\x37\\x85\\x0c\\x89\\x0a\\xd9\\x30\\x98\\x0a\\xfc\\xc1\\x49\\x2d\\xb8\\xa0\\x16\\x8c\\xbc\\x9f\\x10\\x65\\x7e\\xb4\\x8d\\x2a\\xc8\\x7f\\x51\\x75\\xd2\\x3c\\xae\\xd4\\xb5\\xe6\\xf1\\x0b\\xbe\\xaa\\x5e\\x33\\xfc\\x5f\\x64\\x18\\xd6\\x3b\\xa3\\x74\\xab\\x1a\\x3c\\xbd\\x36\\xb7\\x29\\xdd\\xbd\\xab\\xa9\\x89\\xd4\\x64\\x5e\\x3a\\x66\\x13\\x0b\\xae\\x41\\x7c\\xad\\x08\\x6d\\xad\\xd3\\x08\\x43\\x35\\x25\\x14\\xc3\\x75\\xf2\\x57\\x1a\\xba\\xf9\\x3e\\x9a\\x07\\x71\\xfa\\x10\\x3a\\xe9\\x25\\x85\\xb0\\x4f\\x55\\xc4\\x34\\x76\\x9b\\x43\\xd6\\xd2\\x2f\\x75\\x3f\\x93\\x06\\x03\\x6e\\x53\\x52\\x4f\\x6f\\x4d\\x9c\\xcb\\xd2\\xc3\\x03\\x17\\xa8\\xe8\\x99\\xf3\\x16\\x14\\x90\\x35\\x89\\x4d\\xa9\\x45\\xb7\\x6d\\x90\\x82\\xbf\\xee\\x32\\x8e\\x7a\\x31\\xb6\\x63\\x28\\xee\\x8b\\x94\\xe0\\x68\\xc7\"},\n{{0x75,0xa5,0x03,0xf4,0x8f,0xfc,0x22,0x16,0x17,0x67,0x25,0x19,0x11,0x1b,0xf9,0x0d,0xa3,0x9d,0xa9,0xea,0xb2,0xe2,0x91,0x4f,0xd3,0x75,0x5f,0x10,0xf5,0x39,0x36,0x68,},{0xf6,0x80,0xcc,0x0f,0x63,0x58,0xcd,0xcf,0x53,0x7a,0xa7,0x11,0x28,0xcf,0xad,0xfc,0x0f,0x3a,0x89,0xc1,0x00,0xaa,0x34,0xbc,0xd2,0x42,0x7e,0x24,0x8b,0x6e,0xd5,0x0b,},{0xdf,0x28,0xe3,0xe6,0x30,0x36,0x08,0x67,0x86,0x4b,0xc4,0x1e,0x43,0xfd,0x7d,0xde,0xb5,0x28,0x76,0xdc,0xe9,0xb2,0x34,0xa3,0xfc,0xc3,0xd8,0x54,0x9d,0xb0,0x11,0x2e,0x17,0x63,0x90,0xa6,0x85,0xeb,0xd4,0x84,0x93,0x6e,0x25,0xc0,0x8c,0x8a,0x38,0x78,0xa3,0x7b,0x3c,0x4e,0x23,0x9a,0xd0,0xa0,0xe5,0x01,0x99,0x37,0xff,0xbc,0xd4,0x07,},\"\\x7b\\x01\\x09\\x04\\x23\\x23\\x6c\\xb4\\xb1\\x3c\\x41\\x77\\xfc\\xe5\\x2a\\x7f\\xf6\\x58\\x05\\x88\\xcc\\x2e\\xb5\\xa3\\xf3\\x9f\\xf5\\xd0\\xc7\\x3e\\x01\\xe0\\x1b\\xf7\\xbd\\x74\\xaf\\xe4\\x15\\x12\\x50\\xc3\\x91\\x42\\x6e\\xa5\\x07\\x27\\x1b\\xea\\x1d\\x6d\\x85\\xf0\\xb2\\xfe\\x35\\xc4\\x05\\x00\\xf9\\x8d\\x06\\x56\\xc6\\x38\\x8f\\xc9\\xef\\xba\\x18\\x37\\xdb\\x22\\xdf\\xa2\\x9d\\x89\\x26\\x76\\xf5\\x0e\\x57\\x5f\\xe8\\x9f\\xd2\\x93\\x89\\xd0\\x9d\\x08\\x0b\\xad\\x67\\xba\\x54\\x4c\\xac\\xab\\xf5\\xa7\\x73\\x82\\x37\\xc5\\x5e\\x28\\x75\\xed\\x49\\x16\\x30\\x2a\\x2b\\x4d\\xc4\\x96\\xe7\\x42\\x73\\xbf\\x05\\x19\\x11\\x37\\x81\\x0e\\x50\\xe4\\x81\\x95\\x26\\x0b\\xab\\x6d\\x81\\xf9\\xc8\\x05\\x62\\xee\\x73\\xcc\\xb9\\x33\\x3c\\xd9\\xb6\\x1d\\xaf\\x5b\\x00\\x38\\xa4\\xe6\\xc5\\xc9\\x58\\xa9\\x1f\\x68\\x50\\x8c\\x1d\\x88\\x25\\x19\\xc1\\xaa\\x4f\\xfc\\xc5\\x35\\x62\\x46\\x3a\\x0a\\xe3\\x01\\x63\\x69\\x6f\\x84\\xb9\\x7c\\xcb\\xd8\\x67\\x98\\x20\\xed\\xd3\\x61\\x7e\\x7b\\x89\\x6e\\xef\\xfe\\x34\\x1e\\xc6\\xb5\\xb0\\x3f\\x73\\xb6\\x25\\xd7\\x41\\xc6\\x55\\xfe\\x6e\\x82\\xd1\\x1d\\x47\\x8a\\x7d\\x54\\x3f\\xf6\\xc0\\xfa\\x3a\\x3a\\x8c\\x94\\xa6\\x16\\xfb\\x84\\x70\\x70\\xd1\\xfb\\xdd\\xe6\\x01\\x0f\\x02\\x6b\\x08\\x9c\\xd8\\x63\\xc3\\xbd\\x29\\xb1\\xc4\\x26\\x9f\\x77\\x65\\x9e\\x51\\x57\\x28\\x89\\x0c\\x97\\x3b\\xe8\\x7f\\x0b\\x83\\x3c\\xa5\\xaf\\x6b\\x4c\\x31\\x33\\xad\\x4f\\xa4\\xf9\\x16\\x55\\xc6\\xad\\xb5\\xb7\\x23\\x5c\\x27\\xfe\\x34\\x82\\x84\\xf3\\xf1\\x33\\x66\\xa6\\xa0\\x3a\\xd2\\x2b\\x87\\xc6\\xf5\\x58\\x4b\\xde\\xae\\xa4\\x8c\\x70\\x32\\x5d\\x6e\\x33\\xa4\\x75\\xf5\\x05\\x11\\x06\\x38\\x75\\x19\\x2a\\x87\\xed\\xc3\\x88\\x08\\x9b\\x84\\x39\\x53\\x90\\xc2\\xa3\\xad\\x89\\xa2\\x25\\x95\\xdc\\x4a\\x71\\x5a\\x42\\xa2\\xc0\\xef\\xde\\xf6\\x7b\\x35\\x4b\\x34\\xfc\\x75\\xca\\x98\\xdf\\x91\\x3e\\x75\\x9e\\x51\\xc7\\xf6\\x25\\xdd\\xd5\\x98\\xac\\x22\\xd4\\x21\\xde\\xcb\\x57\\xbe\\xbd\\x54\\x22\\x0e\\xc6\\xda\\xa5\\xec\\xe7\\x69\\xd2\\xe0\\x1b\\xe7\\xb6\\xbe\\xe2\\xff\\x5a\\x0b\\x06\\xb3\\x2d\\x6d\\xa1\\xd7\\xbc\\x05\\x7e\\x3a\\xbf\\xaa\\xb2\\x42\\xa3\\xf7\\xe6\\x64\\x6a\\x15\\x9e\\x4f\\x50\\x5e\\x46\\x62\\x98\\x2b\\x13\\xd0\\xcc\\x1f\\xba\\x91\\xd1\\x03\\x09\\xa4\\x2d\\xc1\\x08\\x7c\\xf1\\x0d\\x36\\xe3\\x1f\\x17\\x06\\x15\\xa0\\xac\\xb5\\x08\\xbf\\x68\\x3e\\x2d\\xe0\\x0c\\x87\\x64\\x0d\\x30\\x4a\\x94\\x7b\\xc4\\x97\\x1f\\xf3\\x61\\x9c\\x72\\xab\\xd8\\x3c\\x7b\\x2c\\xbb\\x34\\x64\\xc4\\x04\\x0c\\x26\\x62\\xb5\\x85\\x08\\xb7\\x46\\x80\\xcf\\xa6\\xde\\x06\\xe8\\xd2\\x1e\\x3b\\xec\\x85\\x11\\x19\\x93\\x12\\x68\\x00\\x09\\x07\\x1f\\x70\\x6b\\x7b\\x13\\x3a\\x24\\x87\\xd5\\x74\\x5f\\xfa\\xdd\\x5d\\xc0\\xeb\\x2b\\x55\\x3d\\xf4\\x40\\x78\\x7f\\x01\\x1d\\xda\\x37\\x71\\x9f\\xa7\\x13\\x15\\xe8\\xb2\\x91\\xef\\xd7\\x7d\\xa3\\xba\\x14\\xfb\\x99\\x5f\\x03\\x57\\x1a\\x3d\\xb5\\x22\\xb6\\x3c\\x60\\xbe\\x56\\x19\\x94\\x16\\x99\\xb3\\x92\\x22\\xb5\\x9d\\x0f\\x23\\xe5\\xeb\\x37\\xea\\xd4\\xb7\\xf7\\x50\\xed\\x4a\\xbf\\x4d\\xb8\\x7c\\x70\\xda\\x66\\x5b\\xef\\x4d\\x7a\\x29\\x21\\xb2\\xc9\\x98\\x97\\xf2\\x32\\x1c\\x9b\\xe6\\x07\\x5e\\x74\\x4c\\x82\\x28\\x63\\x9a\\xb7\\x36\\xdb\\xeb\\x2b\\xea\\xb4\\x40\\xc1\\x56\\xa3\\x9a\\x2e\\xfd\\x26\\x1d\\xb5\\x08\\x55\\xe3\\x04\\xd9\\xcf\\xeb\\x99\\x14\\x1c\\x61\\x35\\x58\\x10\\x9f\\x21\\x47\\x4d\\x27\\x2a\\x2d\\x90\\x6d\\x48\\x93\\x93\\x4a\\xff\\x8e\\x08\\xa4\\xfc\\xee\\x96\\x4a\\x5c\\xd0\\x07\\x32\\xfd\\x33\\xaf\\x29\\x84\\x9c\\x8d\\xfc\\xa6\\x59\\x79\\x42\\x18\\x57\\x18\\x5c\\xf6\\x29\\xf8\\x68\\x07\\xa8\\x59\\x73\\xd3\\x44\\x0a\\x6b\\xf8\\x11\\xa5\\x8d\\x04\\x13\\x87\\x24\\x98\\x11\\xec\\x04\\x7e\\x5e\\x8b\\x34\\x3b\\x23\\x87\\xd0\\x18\\x1e\\x0d\\x0b\\xd4\\x61\\xef\\x10\\xe8\\x16\\x4a\\xae\\x35\\x7d\\x9b\\x29\\xdc\\x0a\\xce\\x3e\\xc6\\xd7\\x43\\xae\\x34\\x54\\xab\\x9f\\x84\\x2a\\x28\\xd5\\x71\\x02\\x17\\xdf\\xfe\\x50\\x34\\x4e\\x8d\\x93\\x2f\\x18\\x01\\xb0\\xe8\\xf9\\x66\\x19\\x8e\\xf1\\xc9\\xcc\\x69\\x69\\xf3\\x47\\x34\\xaa\\x6a\\x63\\xae\\xaa\\xb4\\x33\\x9f\\x75\\xd3\\x4f\\xfa\\x8a\\xcb\\x93\\x7e\\xd9\\xc7\\x30\\x92\\xa3\\x09\\xa9\\xb8\\x4a\\x25\\x01\\x1e\\x31\\x14\\xc2\\x65\\xe4\\xf6\\x02\\x33\\x7e\\xb6\\x99\\xb5\\xa2\\x2d\\x57\\x2b\\x03\\xe4\\xda\\xd0\\x3b\\x04\\x61\\xc0\\x0d\\xb9\\x67\\x9b\\x72\\xfc\\x5b\\x49\\x3e\\xf4\\x48\\x6f\\x85\\x53\\x5d\\x81\\x3a\\x58\\x08\\x03\\x85\\xaf\\xd4\\xe8\\xd8\\x71\\x82\\x80\\x34\\x33\\x4b\\xfe\\x44\\x1d\\x18\\x98\\x4e\\x4d\\xfc\\xde\\x02\\x44\\x03\\xb5\\xae\\x66\\xcc\\x50\\xa4\\x73\\x01\\xb5\\x7f\\x9a\\x32\\xf7\\x40\\xbd\\xc7\\xff\\x1d\"},\n{{0xd8,0xaa,0x2a,0x0a,0xa5,0x14,0xfd,0x84,0x5f,0x7a,0xa6,0x6b,0x83,0xc0,0xea,0xbb,0x9c,0x16,0x02,0x3a,0xbc,0x16,0x95,0x77,0x34,0x50,0xb2,0xbb,0x33,0x25,0x22,0xf2,},{0xe4,0xe8,0xd6,0xb2,0x98,0x24,0x8c,0x15,0xfe,0x08,0xf8,0x7a,0x3b,0xc6,0x08,0x4b,0xf2,0xd6,0x4d,0x7f,0x1e,0x4b,0x2d,0x51,0x59,0x9e,0x9f,0xad,0x9c,0xc9,0x10,0x92,},{0x14,0x6f,0x65,0xd4,0x3e,0x71,0x55,0x42,0x89,0x4b,0x79,0x00,0xa2,0xf8,0xcd,0x4b,0x17,0xd3,0x87,0x0a,0x61,0x00,0xe3,0x7d,0xe0,0x05,0xb0,0xdb,0x5d,0x81,0x51,0x24,0x6d,0xe4,0xee,0x38,0x42,0xd3,0xeb,0xca,0x20,0xa5,0xda,0x22,0xa3,0x63,0xa7,0x57,0x5e,0x7a,0x55,0x12,0x82,0x95,0xf2,0x72,0x11,0x48,0x4a,0xf5,0x7c,0xd5,0x31,0x09,},\"\\x08\\xde\\xb3\\xb8\\x32\\xf5\\x2d\\x65\\x56\\xf7\\x8c\\x3f\\x0a\\xbe\\x46\\xf1\\xef\\xe4\\x5e\\x3d\\x5d\\x88\\xe7\\xf8\\xed\\xf8\\x03\\x67\\x0c\\xe4\\x61\\x29\\x21\\x74\\x9e\\x9e\\xce\\x63\\xfd\\xc9\\xbe\\xf2\\xba\\x48\\x38\\x12\\xbb\\x62\\x2b\\xe7\\x44\\xd4\\x04\\x04\\xfd\\x6e\\x09\\xc9\\xe1\\xcb\\x7c\\xe1\\x9d\\xe8\\x1a\\x9d\\xad\\xf5\\x56\\x35\\x2e\\xe8\\x98\\x10\\xc7\\x6a\\x9b\\x10\\x47\\xac\\x62\\xb1\\x6e\\xbb\\x7d\\xa2\\x3d\\xdc\\x2d\\x4a\\xb7\\x6a\\x02\\x05\\x61\\xd0\\x2d\\x41\\xb5\\x8b\\x94\\x95\\x3a\\x23\\xfa\\xaf\\xdd\\xd7\\x81\\xb7\\xdc\\xa7\\xb7\\xfb\\xee\\x70\\x6e\\xc1\\x0a\\x73\\x12\\x5b\\xf7\\x44\\x36\\x05\\x6b\\xf3\\xb4\\xf2\\xa0\\x70\\x1c\\xfe\\xf0\\x5b\\xeb\\xd3\\xdd\\x8e\\xef\\x30\\x6c\\x1a\\xc1\\xb0\\x09\\x50\\x88\\x1f\\xf0\\x5a\\xb5\\xc8\\x24\\x8a\\xd1\\x09\\x6a\\xc9\\x1d\\x52\\x6a\\xe5\\x9b\\xa0\\x58\\x3b\\x27\\xdb\\x7d\\x1e\\x39\\x0f\\x57\\xa5\\x88\\x9e\\x27\\x99\\xa4\\xa1\\x51\\x9b\\x15\\xd9\\x3d\\xbf\\x0b\\x21\\xd4\\x50\\x87\\x3c\\x76\\xba\\x52\\x04\\x61\\xe8\\xbb\\x5c\\x83\\xc9\\x01\\x2e\\xac\\xd5\\x57\\xbe\\xa6\\x40\\x58\\x6e\\xfc\\xb8\\x69\\x00\\x76\\x47\\xd4\\x49\\xf9\\x1c\\xcd\\x52\\xaf\\xe3\\xa8\\x94\\x77\\xde\\x7c\\x2b\\x64\\x7e\\xcc\\x9b\\xf9\\x67\\xfb\\xf5\\x76\\x9d\\x74\\x88\\x94\\x47\\xd9\\x52\\x2d\\x9e\\x80\\x69\\xc3\\x49\\x9a\\xf6\\xa8\\xa1\\x09\\x7a\\x95\\xd3\\xbc\\xc5\\xf8\\x34\\x33\\x93\\x44\\x84\\x31\\x4c\\xb3\\x07\\x58\\xb5\\x25\\xfe\\x53\\xe9\\x07\\x21\\xdf\\x5c\\xbe\\x03\\xd9\\x6f\\x0d\\x0f\\x98\\x52\\x1f\\x01\\xa5\\xfb\\xe5\\x7c\\xe8\\x80\\x4d\\xbd\\x18\\xf8\\xf5\\xea\\xc8\\xf7\\xdb\\xb5\\x8c\\x41\\x78\\x9a\\x44\\x43\\x3f\\x8a\\x8d\\x12\\x45\\xd2\\xad\\xda\\x8c\\x78\\xd8\\x81\\xc6\\x5e\\xa6\\x61\\xab\\x17\\x8d\\x4f\\xc2\\x63\\x4c\\xd6\\xcb\\x51\\x4a\\xb6\\xf2\\x54\\x3e\\x91\\x12\\x18\\x3f\\x3f\\xf7\\x3a\\x3f\\x45\\x01\\x06\\xb0\\xee\\x8a\\x34\\x7a\\x80\\xcb\\x82\\x4a\\xc1\\xf8\\x01\\x64\\xe3\\xbb\\x51\\x23\\x69\\x8d\\xe0\\xe7\\x47\\x35\\x9c\\xa3\\x5a\\xca\\xa3\\xba\\x0c\\x94\\x3b\\xea\\xcd\\x7a\\x9b\\xdf\\x8f\\xf7\\x39\\x78\\xe9\\xfb\\x00\\x20\\x45\\xe8\\xfe\\x56\\x48\\xcc\\x0f\\x9c\\xfa\\x88\\xb0\\xd8\\x12\\xe8\\x1a\\xa6\\x2e\\x0d\\x9c\\x73\\xfe\\x61\\x3a\\xfd\\x95\\x39\\xbc\\xb6\\x15\\x72\\x1f\\xb4\\x97\\xd6\\x2f\\x65\\xc8\\x3b\\x87\\xa6\\xd2\\x14\\x3f\\x9b\\x1c\\x88\\x0e\\xc8\\x67\\x1b\\xd4\\x2c\\x8d\\xe9\\x57\\xb1\\xa6\\x8e\\xe4\\x92\\x26\\xff\\x71\\x7c\\xcc\\x6e\\x74\\xf2\\xee\\xe4\\x9c\\x30\\xde\\xa5\\x3f\\xec\\x3c\\xd4\\xd9\\x0f\\x2c\\xcc\\xd8\\xf9\\x7c\\x55\\xd5\\xc7\\x52\\x45\\x4b\\xe2\\xba\\x7b\\x6f\\xf2\\x03\\x0b\\xe6\\x7e\\x0d\\xf5\\x0c\\x5e\\x88\\x38\\x43\\xe7\\x16\\x12\\xf2\\xb9\\x53\\x59\\x54\\x3e\\x2b\\xa1\\xbf\\x2e\\x98\\xde\\xbc\\xf5\\x76\\x8f\\x2b\\xe6\\xfd\\x50\\x4d\\x97\\x83\\xce\\x92\\x1a\\x81\\xe0\\x94\\x16\\xdb\\xcf\\x2b\\xb6\\x55\\xa9\\x24\\xb1\\xef\\x01\\x12\\xd6\\x71\\xf0\\x84\\xa5\\xb6\\x90\\xb0\\xb6\\x4a\\x8b\\x9b\\xf5\\x03\\x33\\xc3\\x59\\xff\\x3f\\xef\\x19\\x96\\x94\\xf9\\xb6\\x29\\x24\\x24\\xf0\\x06\\x66\\xce\\xf6\\xd0\\x6d\\x16\\x1a\\x79\\xe3\\xa1\\xb9\\xb9\\x62\\x9e\\xea\\x53\\x50\\x5f\\x5e\\x36\\xae\\xad\\xfe\\x0d\\x75\\x96\\x72\\xb0\\xff\\xe4\\x98\\x39\\x7d\\x90\\xa5\\x5d\\x99\\x44\\xb3\\x05\\x41\\xa7\\xe1\\xbd\\xac\\x53\\x02\\x06\\x40\\x13\\x7d\\xc2\\x52\\xae\\xf6\\x22\\xf3\\x81\\x9d\\x36\\xab\\x49\\x8d\\x76\\x3e\\x43\\x27\\xba\\x85\\x80\\xdd\\x9f\\x7e\\x5f\\x47\\xc2\\x4c\\xc9\\x92\\x87\\x34\\xb7\\xe6\\x21\\x12\\xc5\\x7e\\x3e\\x0c\\xfe\\xde\\xcd\\xcb\\xac\\xcb\\x0c\\x45\\xaf\\x82\\x19\\x45\\x5e\\xe7\\x22\\x3c\\x71\\xe7\\xe2\\x04\\x10\\xc5\\x24\\x4e\\xb8\\x27\\xaf\\x2f\\x39\\x35\\xce\\x47\\x55\\x44\\x47\\x47\\xaa\\x94\\x5f\\x4c\\x26\\xdb\\x3a\\x29\\x85\\x19\\xe7\\x5f\\xc6\\xba\\xce\\x91\\x52\\x99\\x72\\xe8\\x69\\x1b\\x69\\x4d\\x30\\xaa\\x8b\\x5e\\xc4\\xc1\\xa0\\x28\\xd3\\xbd\\x10\\xbd\\x0c\\x8a\\x40\\x8f\\xb7\\xd9\\xd7\\x03\\x49\\x55\\x53\\xec\\xea\\x59\\x8d\\x06\\x22\\xdc\\xc7\\x4d\\xe4\\x89\\xba\\x71\\x95\\xcd\\xae\\x8d\\x5c\\xff\\x98\\x55\\x92\\x18\\x37\\xb5\\x28\\x43\\x3e\\xe5\\x5c\\x0b\\x70\\x90\\x85\\x7a\\x0c\\x27\\x84\\xd9\\x31\\x0b\\x48\\x25\\xa7\\x99\\x3a\\xd9\\xc6\\xf1\\x8f\\x83\\xbc\\xa5\\xcc\\x6a\\x25\\x04\\x71\\x68\\xa8\\x37\\x6b\\x06\\x2e\\x3a\\x48\\xea\\x90\\xca\\xd8\\x8e\\x33\\x11\\x87\\xc2\\xb6\\xf2\\x81\\x42\\x6f\\x81\\xf7\\x88\\x04\\xa8\\x95\\xc4\\xec\\x06\\xc3\\x41\\xfe\\x84\\x6a\\xf4\\x52\\x7e\\xa2\\x60\\x69\\xdc\\xf6\\x1d\\x81\\x3f\\xdd\\xf0\\xfc\\x43\\xc7\\x07\\x35\\x0b\\xfb\\x2f\\xc1\\xcf\\xfc\\xee\\x7d\\x7c\\xcd\\x7d\\x75\\xf7\\xa4\\x65\\xa3\\xd1\\x4d\\x57\\x30\\x2c\\x14\\x6a\\xba\\x3e\"},\n{{0xde,0x8f,0x1c,0x99,0xe7,0xf8,0x55,0x6d,0xf2,0x0b,0x59,0xb8,0x50,0x4c,0xff,0x7c,0x6c,0x52,0x41,0xa8,0xae,0xeb,0x30,0xb9,0x2e,0xab,0x97,0xbf,0x48,0x1d,0x0f,0xe9,},{0xe4,0x63,0x79,0x1d,0x0f,0x56,0x7e,0xe7,0x3a,0xbb,0xf4,0x7d,0xd5,0x71,0x67,0xa5,0x35,0x61,0x3b,0x05,0xcd,0x48,0xd9,0x2e,0xbc,0x7d,0x24,0xe6,0xeb,0xff,0x95,0x73,},{0x30,0xab,0xc4,0xe4,0xe4,0xb3,0x88,0x58,0x1e,0x66,0x8b,0xd4,0x09,0xee,0x18,0xa6,0xed,0xe8,0x1a,0x13,0x6c,0x28,0xa2,0x92,0x4d,0xf5,0xfc,0x00,0xd7,0xc2,0x80,0xd9,0x78,0x62,0xae,0x3a,0x67,0xa9,0x35,0xce,0x49,0x23,0x64,0x13,0x5e,0x65,0x9a,0xdb,0x5f,0xba,0xbe,0x68,0x98,0x16,0x59,0x1f,0x49,0xac,0x50,0x22,0xa3,0x87,0xcc,0x09,},\"\\x38\\xd9\\x3e\\x5c\\x98\\x01\\xdb\\x90\\x17\\x97\\xec\\x75\\xc6\\xdd\\xdc\\x65\\xae\\x79\\x80\\xde\\x21\\x0b\\xed\\x43\\xb3\\x3e\\xb4\\x4c\\xdc\\x6d\\xc9\\x93\\x3f\\xb6\\xbe\\xc7\\x42\\x1d\\xb1\\x0f\\x0a\\x59\\x32\\x0b\\x9e\\x64\\x2a\\x21\\xf1\\xdd\\x23\\x56\\x01\\xfc\\xd6\\xc5\\x3b\\xe4\\xa8\\x77\\xf4\\xfe\\xd3\\xfa\\x4a\\x0a\\xd4\\xdc\\x6e\\x9b\\x39\\x1b\\xcf\\xa4\\x34\\x90\\x69\\x25\\xba\\x45\\xec\\xc5\\xb4\\x35\\xd9\\xab\\x8c\\xfa\\xfc\\x39\\x4b\\xdc\\xca\\x9b\\x07\\xd5\\x66\\x83\\x93\\x44\\x6e\\x34\\x00\\xe9\\x03\\x94\\x35\\xa1\\xdc\\x78\\xcb\\xc0\\x88\\x07\\xa3\\xfb\\x24\\xca\\x8b\\x19\\xf6\\x4e\\xa0\\x8b\\x8b\\xf6\\xc2\\x0a\\x19\\x5b\\x51\\xff\\x80\\x15\\xf3\\xe7\\xc9\\x1d\\x08\\xe4\\xbc\\x62\\x41\\x55\\x95\\xa5\\xa8\\x82\\xfb\\xa6\\x51\\xdc\\x3a\\x67\\x51\\x87\\xaf\\x61\\x82\\x49\\x74\\x7b\\x46\\x80\\xd1\\xd1\\x5a\\x20\\x2e\\xa9\\xdf\\x48\\xb1\\xc2\\x14\\xfd\\x40\\x34\\x66\\xfd\\x1a\\x26\\x5f\\x2d\\xef\\xaf\\x8e\\xd5\\xa6\\xbf\\x0e\\xb0\\x8d\\x18\\x64\\xf2\\xa2\\x8e\\x94\\x72\\x14\\x3c\\x6f\\xd1\\x03\\xb6\\xb1\\x08\\xc0\\xd1\\xd1\\x36\\x3b\\x99\\xf9\\x20\\x2d\\x11\\xf0\\x20\\x56\\xc2\\x79\\xcc\\xa3\\x15\\xdb\\x1a\\xb6\\xd3\\x10\\x18\\x45\\x8f\\x57\\xba\\x33\\x16\\xcd\\x27\\x38\\xe8\\x0c\\x49\\x2d\\x85\\x7c\\xb1\\x74\\x99\\x25\\xe3\\x31\\xc6\\x58\\x58\\xb5\\x09\\x83\\xcd\\x98\\x38\\xcf\\xd2\\x18\\x8a\\x5e\\x8f\\x05\\xb4\\x71\\xfd\\x3c\\xdd\\xcd\\x30\\xd9\\x69\\x01\\x19\\x40\\x20\\xf1\\x15\\xfb\\x46\\x9a\\xb5\\x84\\x90\\x06\\xdf\\xfa\\x2d\\x54\\x3a\\x13\\xb3\\xb5\\x06\\xed\\x65\\xcc\\x45\\x75\\x32\\xb8\\xaa\\x3e\\xe3\\x1d\\x9d\\x8d\\x9e\\x52\\x98\\xd7\\xac\\x70\\x7a\\xc1\\x5b\\x82\\x7a\\x57\\x8c\\x81\\xd4\\x34\\xf8\\x4c\\xb1\\xb5\\x61\\x20\\xd6\\x67\\xb2\\xaf\\xe6\\xd1\\x53\\x0a\\xfd\\xdf\\xb9\\x66\\xd9\\x53\\xbe\\x7e\\x32\\xdf\\x07\\xde\\x38\\x9e\\x2d\\x04\\xb2\\x32\\xd3\\x51\\x2c\\x7d\\xb9\\x35\\x8f\\xc9\\x44\\xd1\\xb1\\x18\\x07\\x8e\\x69\\x99\\xe8\\x91\\xbb\\xfa\\x4a\\x43\\x29\\xf6\\x5d\\x80\\x71\\x88\\xb5\\x98\\x58\\xc4\\x31\\x21\\x1b\\x29\\x57\\x6f\\x44\\x96\\x13\\x8b\\x7c\\x0c\\x12\\x8f\\x7b\\xef\\x5f\\x79\\xb0\\xf4\\x46\\xfc\\x6b\\x4a\\x0e\\x20\\xbc\\xa4\\xc4\\x0a\\x83\\x57\\x1a\\x36\\x64\\x4a\\xbf\\xfa\\xbd\\x49\\xcb\\x58\\x5f\\xd0\\x64\\xc8\\xe5\\x09\\xd9\\xa0\\xfc\\xff\\x46\\x26\\x76\\xf0\\xeb\\xcb\\x61\\xce\\xc6\\x1e\\x51\\x2b\\xe6\\xf1\\x82\\xab\\xd5\\x9e\\x09\\xf6\\x42\\xaa\\x61\\x96\\x34\\x85\\x34\\x82\\xec\\xe8\\xf8\\x98\\x00\\xf9\\xc5\\xbc\\xfb\\x84\\x14\\x31\\xca\\x06\\x91\\xed\\x8d\\x80\\xe0\\xa2\\xfc\\xb7\\x97\\xa0\\x36\\x89\\x7c\\xfb\\x65\\x37\\x58\\x6b\\x31\\xc0\\x0b\\x79\\x65\\xef\\xdd\\xfd\\xa7\\x28\\x61\\x84\\x50\\x26\\x45\\x91\\x57\\xf7\\x9e\\xba\\x1b\\xca\\xf6\\xcd\\x41\\xd6\\x18\\xae\\xb1\\xbd\\x8d\\xa1\\xbe\\x98\\xf0\\xcd\\xc7\\xf2\\xe0\\x9b\\x90\\x3d\\xe4\\x9c\\x0c\\x1b\\xe9\\x1d\\xcc\\x17\\x7b\\x29\\x80\\x96\\x83\\x6d\\xce\\xa4\\xf6\\x01\\xdd\\x86\\x69\\x15\\x55\\x12\\x83\\x25\\x43\\x8b\\xd9\\xcc\\xbf\\xc0\\xe7\\x77\\x92\\x0a\\xe8\\xbb\\xd5\\x76\\x34\\xc6\\x10\\x4f\\xe6\\x9a\\x3a\\x72\\x01\\x2a\\x23\\x60\\xb6\\xe5\\x52\\x55\\x0c\\xff\\xb4\\xe2\\xf0\\xb4\\x1f\\xe1\\x55\\x37\\xee\\x0e\\x6f\\x37\\xe7\\x88\\x0f\\xb4\\xd1\\x2b\\xef\\x6c\\xad\\x26\\x6c\\xe5\\x8d\\xf9\\x81\\x6b\\x35\\x96\\x0c\\xd0\\xbf\\x86\\x52\\x86\\x2e\\xe7\\x89\\xcc\\xc3\\x1a\\x7e\\xfc\\x21\\xa8\\x1b\\xda\\x46\\x14\\x6b\\x11\\x1f\\xcf\\xd9\\x4f\\x04\\x85\\x6a\\xb6\\x1a\\x55\\x7b\\x1f\\xf7\\xc8\\xe4\\xea\\x6d\\x9c\\x4b\\xcd\\xd9\\x3b\\x15\\x1a\\xa0\\x84\\x61\\xc5\\x68\\xde\\xfb\\x2a\\xef\\xdf\\xce\\x96\\x39\\x4d\\xc8\\x22\\xd4\\xef\\x6c\\xc4\\xb9\\xa3\\xe6\\xc3\\x32\\x03\\x9f\\x65\\x38\\xaa\\x0d\\xf8\\xde\\x81\\x26\\xd9\\x0c\\x31\\x2f\\xf4\\x96\\x88\\x74\\x86\\x11\\x15\\x65\\x53\\x43\\x46\\xa7\\x46\\x26\\x25\\xd6\\x3d\\xf6\\x9f\\xcb\\x57\\x41\\x90\\x6f\\x19\\xe0\\x0f\\xc8\\x00\\x3f\\x08\\xb9\\x59\\x85\\xc3\\x8b\\x86\\x74\\xaf\\x42\\x3c\\xa5\\x6d\\xe5\\xf8\\x81\\xb5\\x9c\\x46\\x62\\x43\\xa7\\xad\\xba\\xdb\\xa2\\x9c\\xaf\\x57\\xfa\\x77\\x71\\x22\\xe6\\x18\\x23\\xb4\\xe7\\x08\\x18\\x2a\\xaf\\x37\\x20\\x6d\\x7d\\x5e\\xd0\\x51\\xc1\\x2a\\x5c\\x0f\\x6b\\x43\\x71\\x04\\x3f\\x56\\x2c\\xdc\\x02\\x9d\\x5e\\x1b\\xa9\\xb2\\xbf\\x5f\\xfb\\xf1\\xf5\\xf5\\x23\\xdb\\x06\\xfe\\xca\\x42\\x7d\\xb7\\xa0\\x88\\x19\\xff\\xb2\\xd0\\x58\\x52\\x42\\xe2\\x0d\\xa5\\x8e\\x32\\x0b\\x16\\xb1\\x6e\\x44\\x8d\\x8b\\xe0\\xef\\x74\\x02\\xd2\\x4a\\x71\\x94\\x25\\x71\\x33\\xbd\\xc9\\x82\\x31\\x4d\\x83\\xad\\xbc\\xd1\\x2e\\x8a\\xf3\\x13\\x03\\x42\\x6c\\x59\\xff\\xd8\\x26\\x9c\\xe4\\xb9\\x87\\xca\\x9b\\x6f\\x0f\\xfd\\xbb\\x4d\\x1d\\x12\"},\n{{0x07,0x36,0xf8,0x01,0x72,0x0a,0x94,0x7c,0x5c,0x2f,0x32,0x58,0xce,0x0d,0x51,0x1c,0x3e,0x17,0xe9,0x4e,0x37,0xb3,0x0a,0xdf,0xa5,0x20,0x95,0x92,0x11,0x71,0xd4,0x00,},{0x4f,0x69,0x42,0x55,0x92,0x0d,0x0c,0x38,0xde,0x6e,0x72,0xe1,0x65,0xc3,0x3a,0xee,0x76,0xb1,0xcb,0xf6,0xf4,0x83,0x7a,0xa5,0x90,0x14,0x75,0x66,0x7a,0xcd,0x28,0x26,},{0xc0,0x3c,0x03,0x14,0x85,0x12,0x79,0xed,0xcd,0xe9,0x70,0xc2,0x3e,0xfa,0x23,0x6f,0x23,0x5e,0xda,0x96,0x0d,0x2c,0x27,0xd3,0xca,0x94,0x6f,0x65,0x0c,0x20,0x0b,0x4e,0xba,0x04,0xbe,0x66,0x8f,0xf6,0x2e,0xaf,0xfa,0x6c,0xea,0x35,0x1a,0xbd,0xfc,0x54,0x40,0x1d,0xcc,0xce,0x3d,0xba,0x78,0x00,0x4a,0xec,0x95,0x81,0xa2,0xcc,0xf4,0x0f,},\"\\x7f\\x87\\xb5\\x1f\\x6e\\xad\\x2d\\x44\\x02\\xa3\\xbd\\x3c\\x37\\x69\\xa2\\x67\\xac\\x8e\\x82\\xf7\\x79\\xad\\x7b\\x98\\x6d\\xec\\x82\\xcb\\xfc\\x1e\\xa5\\x12\\x91\\x88\\x43\\x26\\xd9\\x22\\x69\\x67\\xcb\\x66\\xa9\\x68\\x73\\x18\\x4f\\x0e\\x83\\xb3\\xab\\x25\\xa5\\xab\\x2f\\xa8\\x05\\xfe\\x3a\\x0e\\x7b\\x19\\x0a\\x62\\x2d\\x46\\x1b\\x78\\x30\\xa3\\xf6\\x97\\xc8\\x31\\xc2\\x9e\\xa7\\xc0\\xcd\\x4b\\x68\\xd8\\xe7\\x7a\\xa6\\x97\\x11\\xcf\\x86\\x4d\\xc1\\xd5\\x39\\x4f\\x48\\x45\\xe2\\xfb\\xb5\\x07\\x64\\x04\\xe0\\x9a\\x88\\xb7\\x9f\\x05\\x67\\x05\\x51\\xbc\\xe2\\xef\\x54\\x68\\xb7\\x9d\\x57\\x88\\x8b\\x98\\x52\\xa4\\xbb\\x47\\x9a\\x4f\\xd0\\xbe\\xb6\\x81\\xfd\\x52\\x3f\\xc5\\xbf\\x44\\x58\\xab\\xbc\\x38\\xec\\xe7\\x2e\\x10\\x6e\\x00\\x22\\x20\\x15\\xa5\\x7e\\xbe\\xc5\\x5b\\xf4\\x75\\x13\\xe2\\x5c\\x3c\\x45\\x54\\x84\\x3b\\xda\\xcb\\xcf\\xe9\\xf1\\xb8\\xd0\\xae\\x35\\x4e\\x48\\xd0\\x3f\\xde\\xbd\\xf2\\x0d\\x65\\x5b\\x52\\x68\\xd8\\xbb\\xbf\\x33\\xb1\\x28\\x89\\x10\\xf0\\x44\\x4f\\xcd\\x56\\xc0\\xda\\x7b\\x89\\x03\\x36\\x2b\\x7e\\x37\\xa8\\x64\\x65\\x42\\x77\\xcf\\xfb\\xe6\\xc6\\x08\\x57\\xf0\\xb3\\x51\\x4d\\x22\\xa4\\x0b\\x9d\\xd2\\xd3\\xfe\\x5c\\xae\\xa5\\x50\\x7a\\x0d\\xe3\\x05\\x1b\\xb3\\xa4\\x01\\x5f\\xa0\\xfe\\x4c\\x46\\x2b\\x98\\xfe\\xf2\\x35\\x7d\\xcf\\x6b\\x97\\xdc\\x75\\xde\\xf3\\x82\\xf9\\x01\\xf9\\x6f\\x4a\\x04\\xa3\\xef\\xc6\\x02\\x54\\x20\\x0a\\x2c\\x4c\\xdc\\x8a\\x58\\xb2\\x5d\\x94\\xe3\\x29\\x54\\xea\\xff\\x15\\x11\\xac\\x46\\xe3\\x60\\x66\\x63\\xb6\\x87\\x5f\\x13\\x64\\x99\\xda\\x6a\\x76\\x90\\x97\\x87\\x9a\\x6e\\x08\\x34\\xd5\\x64\\xfa\\x7f\\xdb\\x99\\x58\\x11\\x83\\xed\\x0c\\x9d\\x48\\xfd\\x19\\x5d\\x7e\\xcd\\x9f\\x4d\\xd4\\x86\\x55\\x65\\xfd\\x17\\xa0\\x08\\x71\\x8d\\xcd\\x76\\xf6\\x8a\\x54\\xe5\\x16\\xa2\\xb7\\x30\\xed\\x3d\\xba\\x5c\\x2c\\xf4\\x06\\x30\\xbb\\xfe\\x7f\\xa0\\x3b\\xb7\\xcd\\xd9\\x67\\x69\\x54\\x95\\xa7\\xc8\\x6e\\x2e\\x84\\xcb\\x01\\x7e\\xc6\\x96\\x01\\x92\\x46\\x31\\x59\\x5a\\xff\\xaa\\x8c\\xfd\\x04\\x8d\\x14\\x26\\x7c\\x73\\xe5\\x4c\\xfa\\x53\\x90\\x47\\xe7\\x17\\x69\\x1e\\x39\\x97\\x37\\xfa\\x50\\xcc\\x48\\x44\\x96\\x12\\x57\\xc9\\x3d\\x72\\x53\\xd2\\x32\\x26\\xb7\\xcd\\x0d\\x1b\\xd3\\x1f\\x3f\\x0d\\x2d\\x89\\x2d\\x07\\x3d\\x8c\\x50\\x73\\xc6\\x02\\xf6\\x1a\\x04\\xd6\\x43\\x7c\\x39\\x03\\xeb\\x4a\\x64\\xa0\\x1f\\xbc\\xc0\\xc7\\xe1\\x59\\x20\\x1c\\xdc\\x4a\\xa4\\x2e\\xf3\\xb1\\xff\\x9c\\x78\\xfc\\x27\\x5c\\xfb\\x11\\xa0\\x5f\\xfe\\xd8\\xf9\\xf2\\x2d\\x85\\xba\\x92\\x4d\\x8d\\x32\\x23\\x1c\\x25\\x4d\\x89\\x8d\\xa7\\xf0\\x67\\x9a\\x64\\xca\\xb8\\x40\\x26\\x90\\x6e\\x9e\\x85\\xf9\\x5e\\xfd\\x8e\\xe2\\xa1\\x72\\x56\\x33\\xf4\\xde\\x2b\\xa6\\x7d\\x99\\xaa\\x7f\\x05\\x50\\xaf\\x13\\x9e\\x9f\\x8c\\x52\\x93\\x78\\x67\\x27\\xd8\\x26\\x30\\x29\\x6d\\x5d\\xaa\\x9e\\x83\\x0a\\xa1\\xb3\\xb5\\xb3\\x02\\xb8\\xb6\\x62\\xac\\x83\\x2e\\x92\\x13\\x01\\x6b\\xa4\\x93\\xa0\\x3a\\x28\\xcc\\x3e\\x95\\x40\\xd0\\xd6\\x5a\\xcd\\xdb\\xfe\\x12\\x52\\xb5\\xc1\\x6a\\x84\\xa4\\x45\\xce\\x75\\x41\\x5c\\x6c\\xd8\\xab\\x16\\xfe\\x5e\\xef\\x11\\x70\\x97\\xd7\\x1e\\xb5\\x67\\x6b\\x9a\\x95\\xb3\\x58\\x82\\xa7\\xc3\\x50\\x6b\\xc5\\xd0\\x2f\\x03\\x91\\x0a\\x63\\xd4\\x68\\x46\\xb2\\x13\\xc3\\xc9\\xbb\\x2f\\xc3\\x4e\\x6c\\x69\\x01\\x7d\\x20\\x65\\xa1\\xad\\x3c\\xe3\\xfd\\x14\\xab\\x00\\x14\\xf5\\x84\\xe5\\x7e\\xa9\\xd9\\x03\\xe4\\x0a\\xce\\xb2\\x30\\xa8\\x69\\x3f\\xa2\\xe6\\x36\\x41\\xc2\\x54\\x38\\xff\\x7a\\x16\\x38\\x76\\x04\\x38\\x84\\x4c\\xdf\\x00\\x11\\x80\\xf5\\xb1\\x77\\xbe\\x69\\xed\\xf7\\xef\\x66\\xb3\\x93\\x12\\x80\\x52\\x14\\xcb\\x17\\x70\\x6c\\xef\\xe5\\x45\\xbe\\x5a\\x77\\x01\\x9a\\x5e\\xc5\\x2b\\xbf\\x78\\x85\\x0f\\xa3\\xd9\\x7d\\xe2\\xd4\\xd7\\x4a\\xa6\\x8b\\x58\\xca\\x81\\x2a\\x1b\\x15\\x6a\\x0c\\x40\\x01\\x12\\x9f\\x06\\x72\\x32\\xa6\\xec\\x91\\xa5\\xed\\x42\\x70\\xf2\\xa4\\xc6\\xef\\xee\\xe7\\x87\\x00\\x47\\x70\\xc8\\x59\\xe4\\x50\\xe8\\x37\\xef\\xb0\\x4d\\xc9\\x98\\xbd\\x27\\x3c\\x27\\xa0\\x98\\x55\\xe4\\xec\\xa1\\xa2\\x2a\\x9b\\x88\\xc1\\x7b\\xdb\\xf2\\x53\\xa7\\x97\\x61\\x07\\x0a\\x76\\x81\\x7a\\x7f\\x74\\xff\\x3f\\x07\\xfb\\x71\\x8b\\xff\\xa0\\xb4\\xf3\\x26\\xf2\\x84\\xe6\\x2f\\x83\\x68\\x32\\x42\\x7b\\xe8\\x2f\\x48\\x33\\x73\\x51\\x5b\\x9b\\xf5\\x9a\\xf4\\xa7\\x6a\\x57\\xe2\\xf4\\x0b\\x91\\x03\\x4d\\xd5\\x68\\xec\\x14\\xac\\x10\\xe2\\x30\\x9b\\x87\\xe2\\x92\\x2f\\x9c\\xd9\\xfc\\x1a\\x46\\xa4\\x7e\\xd3\\xbc\\x7e\\x1b\\x9f\\xeb\\x9e\\xe0\\x67\\x07\\x3f\\xa5\\xdc\\xe2\\xa6\\x75\\x30\\x52\\x6d\\xe6\\x7e\\xe0\\xe5\\x09\\x66\\x3c\\x44\\x46\\x7e\\xeb\\x59\\x42\\x01\\x03\\xeb\\xcd\\xff\\xa7\\x09\"},\n{{0xfa,0x75,0x65,0x04,0x91,0x04,0x74,0x28,0xd3,0x63,0xb5,0x82,0x22,0x22,0x12,0x2d,0xff,0xb5,0xa9,0xfd,0xdc,0x60,0x3c,0x33,0xc8,0xa6,0x08,0x61,0x83,0x75,0xdc,0xf3,},{0x98,0xc9,0x64,0x1f,0xa9,0xdf,0xa8,0xea,0x13,0xe0,0xd1,0xc7,0x16,0xb8,0x67,0x9e,0x26,0x4b,0xe1,0x5d,0xd2,0xd4,0xc0,0x6a,0xb4,0x3c,0xbe,0xe4,0x79,0x16,0xee,0x01,},{0x1e,0xff,0xbf,0x92,0x99,0xa1,0xb9,0x35,0x4f,0xe1,0xf1,0xde,0xc1,0x76,0x65,0x95,0xea,0x76,0x7a,0xb8,0xe4,0xda,0x9b,0xb5,0x7b,0x4f,0x69,0xbc,0xbd,0x8c,0xb3,0xd8,0x6f,0x76,0x83,0x92,0xf5,0x9b,0x39,0xfa,0xfa,0x8a,0x21,0x0a,0x65,0x09,0xfe,0x0d,0x60,0x08,0xd6,0x35,0x61,0x11,0xad,0xfb,0x37,0x99,0xc1,0xd5,0x59,0xc2,0x63,0x09,},\"\\xf5\\x4e\\x41\\xb9\\x39\\xe3\\x7d\\xf1\\x7c\\x7d\\x60\\x43\\xfd\\xed\\x14\\xa9\\x15\\xd9\\x34\\xe8\\x67\\xc3\\x45\\x26\\x9f\\xdc\\x01\\x77\\xf5\\xbd\\x10\\xc4\\x34\\x8f\\x31\\x9e\\x0a\\xb9\\xa6\\x4c\\xc0\\xb7\\xd4\\xe0\\xc9\\x1c\\xa9\\xaa\\xda\\xab\\x2e\\xdc\\xba\\x54\\x4f\\x14\\xed\\x2c\\xb5\\x39\\xca\\x89\\x75\\x09\\x7d\\x87\\x92\\x70\\x95\\xb4\\xeb\\xd4\\x90\\x34\\x43\\x40\\x06\\x1e\\xd9\\x3c\\x38\\x16\\x7e\\xda\\xa0\\x96\\xa2\\x30\\xdb\\x59\\x62\\x4c\\x67\\xfb\\x9a\\x1e\\x1d\\xda\\xc4\\x02\\x13\\x3f\\x4d\\x47\\xcf\\xc1\\x1e\\x2f\\xae\\x6b\\x3f\\x3c\\x50\\x01\\xcb\\xa9\\xa8\\xae\\xd9\\x00\\x73\\x10\\x32\\x40\\x22\\x7e\\x71\\x6f\\xf7\\x1b\\xf6\\x8a\\x59\\x1b\\xa2\\xce\\xff\\x2d\\x31\\xb8\\x6e\\xf2\\x1a\\xb0\\x12\\xec\\xcd\\x40\\x9a\\xd5\\xc2\\x9d\\x65\\x9a\\x1b\\x37\\xc4\\xd8\\x55\\x05\\x30\\x41\\x40\\xfb\\x2c\\x34\\x37\\xa2\\x06\\x86\\x8b\\x13\\x52\\xc1\\x02\\xbb\\xfa\\x3b\\x9a\\x76\\x52\\x2a\\x2b\\xfc\\x54\\x06\\xb2\\x57\\x69\\x6d\\xe7\\x4e\\xe7\\xd3\\x15\\xc8\\xe9\\x9c\\xaa\\x96\\xbd\\x83\\x80\\x06\\xc6\\xda\\x2a\\x42\\x33\\x31\\x5a\\x85\\x6a\\xcb\\x8e\\x80\\xc3\\x31\\x68\\xb3\\x33\\x55\\x1d\\x91\\xd0\\x74\\x05\\x57\\x34\\x13\\x0b\\xd7\\xd1\\x4c\\x56\\x81\\x1e\\xba\\xbf\\x7d\\x5a\\x25\\x0e\\x60\\x72\\x59\\x3d\\x9f\\x2f\\x8b\\x97\\xc1\\x2a\\x70\\x3c\\x2c\\x47\\x9c\\xb0\\xb1\\x5b\\x7a\\x27\\x75\\xc9\\xdc\\xd2\\xca\\x46\\x24\\x67\\x23\\x68\\xa2\\xe6\\x14\\x54\\x67\\xf3\\xbe\\x66\\x15\\xf9\\x3b\\x81\\x20\\xa0\\xa1\\x2d\\xa1\\x56\\x06\\x63\\xa2\\x6a\\x61\\x73\\x19\\x66\\xb4\\x4b\\x29\\x9e\\xbf\\xad\\x2a\\x95\\xc6\\x23\\x60\\xf3\\x9c\\xe0\\x5d\\x95\\x58\\xe3\\x05\\xee\\x23\\xa5\\x2f\\xa5\\xce\\x20\\xf6\\xbe\\x5e\\x26\\x2a\\xff\\x3a\\x86\\x4d\\x5d\\xda\\xbe\\x23\\xff\\x94\\x3f\\x71\\xd5\\x99\\x84\\x93\\xd9\\x9f\\xe2\\xac\\x23\\x74\\xb4\\x64\\xa6\\x91\\x83\\xc3\\xbc\\x4f\\x1d\\xdb\\x88\\x36\\x11\\x14\\x9d\\x7d\\xdb\\xf1\\xe8\\x38\\x0b\\x54\\x43\\x35\\xe2\\xb8\\x93\\x95\\x05\\x4c\\x9f\\x25\\x58\\xdf\\xc5\\x6e\\xa9\\x3f\\xf1\\x4d\\x0f\\x15\\xd2\\xe0\\xbd\\x89\\x37\\xa5\\x56\\x38\\x7d\\xe9\\x6e\\x41\\x8d\\x8b\\x3a\\x7d\\x66\\x6f\\xb1\\x90\\x36\\x4b\\x2c\\x21\\x90\\xd3\\xc2\\x5f\\x17\\x52\\xd5\\x48\\x3d\\xcb\\xb5\\x96\\x00\\x64\\xf0\\xc8\\x7f\\xcf\\x8f\\x31\\x3d\\x28\\x78\\x1c\\x11\\x4a\\x16\\x9b\\x69\\x0a\\x87\\x01\\xc5\\x0d\\x89\\xc7\\x73\\x24\\x53\\x1c\\x0f\\x84\\x9d\\xba\\xd1\\x63\\x3d\\x92\\x5a\\xcd\\x06\\xc1\\x6a\\x9c\\xea\\x19\\xa4\\x34\\xeb\\xc4\\x2a\\xeb\\xb1\\xfd\\xb9\\xb0\\xba\\xcc\\x93\\xce\\xc3\\x99\\x19\\x94\\x36\\x64\\xea\\x1a\\x95\\x84\\x06\\xff\\x9e\\x49\\x35\\xc9\\x2c\\xa7\\xc3\\x97\\x08\\xf9\\xca\\xb7\\x10\\xa5\\x83\\x09\\x6b\\x4e\\xd9\\xf4\\x8d\\x9e\\x09\\x06\\x47\\x24\\x0d\\x76\\xec\\xcb\\xab\\xa5\\x91\\xf5\\x5f\\xe7\\xe3\\x6d\\x72\\xc2\\x17\\x27\\xac\\xba\\x0f\\x80\\x30\\x95\\x4e\\x62\\xbc\\x58\\x0b\\x8b\\x67\\x0c\\x44\\x57\\xc3\\x40\\x3e\\x36\\x9a\\xc2\\x0e\\x66\\x0d\\x66\\x2f\\x7f\\x6a\\x41\\x42\\x13\\xea\\x43\\xf7\\xc0\\x10\\x50\\x09\\xc1\\xde\\x81\\x7a\\xdf\\x6f\\xfd\\x9c\\xca\\x3b\\x45\\xa6\\x3a\\x82\\x22\\x81\\xc6\\xe2\\x77\\x2f\\xd7\\xb7\\x80\\x96\\x03\\x18\\x4b\\x48\\x79\\xb1\\x8c\\x88\\x79\\x03\\xf0\\xfc\\x8d\\x8e\\x1e\\x2d\\xbf\\x6e\\x77\\x2f\\x0b\\x2d\\x9b\\x8a\\x29\\x92\\x7a\\xcc\\x81\\x71\\x4a\\x22\\x56\\xad\\x8d\\x7b\\x73\\x30\\x52\\x7d\\x7d\\xbf\\x8b\\xef\\xd8\\x2f\\x8c\\x9b\\xb4\\x01\\xcf\\x0a\\x90\\x24\\x9a\\x64\\xca\\x6f\\x88\\x33\\xdb\\x31\\xbd\\x03\\xb9\\xe7\\x94\\x6d\\x06\\xdd\\x04\\x38\\x3d\\x7c\\x08\\x2d\\x70\\xae\\xb3\\x7f\\xf8\\x4c\\x2b\\x05\\x7d\\x97\\x3b\\x89\\x4b\\x4a\\x03\\xec\\x7b\\xf0\\x31\\xae\\xa6\\x56\\xa1\\x90\\x84\\x88\\x89\\x4a\\x4a\\xda\\x3f\\xd7\\xfa\\xdf\\x91\\xed\\xe9\\x55\\x0d\\x38\\x41\\x5f\\x82\\xa0\\x94\\x55\\xc0\\xf4\\x32\\xfb\\x55\\x98\\x71\\x32\\xf0\\x00\\x42\\xaf\\xd6\\x0e\\xa5\\x1d\\x1f\\x1c\\x6c\\x1a\\xfe\\x0c\\xf8\\x7c\\x34\\x6e\\x31\\xe6\\x3e\\x26\\xf4\\x9b\\x13\\x71\\x77\\xb2\\xd4\\x7a\\xb3\\x0f\\x07\\xce\\xa0\\x71\\x93\\x12\\x74\\xcf\\x01\\x08\\x36\\xd6\\x83\\xff\\xf3\\xbe\\x71\\x34\\xc7\\x8b\\x8b\\xfd\\x8b\\x1b\\x8f\\xc2\\x04\\x9e\\x18\\xcc\\xb1\\xe1\\x8a\\x0a\\x95\\x85\\xa7\\xd8\\xa1\\xe2\\x54\\x92\\x60\\x86\\x68\\xc9\\x6d\\x62\\xa0\\xac\\xa8\\xef\\x90\\xe0\\x48\\xd2\\x03\\x78\\xc1\\x08\\xd0\\x6b\\x03\\xfe\\x3e\\xc4\\xad\\xb2\\x75\\x28\\xae\\x08\\xf7\\xde\\xd9\\x48\\x78\\x93\\xae\\x64\\xca\\x4b\\x93\\x92\\x02\\xaa\\x4c\\x17\\xaf\\xe7\\x18\\xcd\\xca\\x49\\xff\\x96\\x16\\xd0\\xcd\\xf8\\x33\\x4b\\x6a\\xee\\x2d\\x6d\\x20\\x94\\x7c\\xa4\\xbd\\x7d\\xf5\\x31\\xdd\\x1d\\xa9\\x95\\x81\\xff\\x72\\xea\\x56\\xfe\\x62\\xca\\xa2\\xc9\\x5e\\x35\\x87\"},\n{{0xe1,0xc1,0x29,0x46,0xd2,0x21,0xa1,0x94,0xf2,0x2f,0x27,0x62,0xc0,0xe5,0x1c,0xbe,0x3f,0x98,0xb9,0x14,0xa4,0x7d,0x3d,0xc4,0x1a,0x1f,0x45,0xc5,0x43,0x70,0x63,0x7c,},{0x10,0x40,0x81,0x36,0xa6,0x8f,0xc5,0x6c,0x7d,0x3b,0x36,0xb7,0xfe,0xf1,0x22,0x09,0x4d,0xe0,0x81,0x03,0x11,0x89,0xcc,0x84,0xa4,0x88,0x06,0xaa,0xf6,0xcb,0x91,0x85,},{0x8f,0xd7,0xfa,0x40,0x0c,0x03,0x2f,0xcf,0xbc,0x40,0x29,0x42,0xfc,0x78,0x63,0x75,0x26,0xbe,0x97,0xab,0x82,0xf2,0x37,0xbb,0x39,0x3e,0xa3,0x9e,0x35,0x73,0x8c,0x67,0xd7,0x54,0x09,0x54,0x3a,0x8b,0x3c,0x05,0x5f,0x08,0xbf,0x69,0x19,0x9a,0xf6,0x3b,0x69,0x11,0xa4,0x82,0xfb,0x4f,0x65,0x80,0x80,0x2e,0xc9,0xd2,0xdc,0x3c,0x11,0x06,},\"\\x87\\x0f\\x4c\\xd9\\x7c\\xfc\\x0a\\xaf\\xad\\xa4\\x00\\x72\\x31\\x2f\\xb5\\x4b\\xcc\\xc0\\x76\\x28\\x71\\x4e\\x49\\x62\\xd4\\xbe\\xf4\\xee\\xb5\\xde\\x40\\xa1\\x9a\\x24\\x6b\\x5b\\x7d\\x52\\xd4\\x87\\xb7\\xe5\\x2d\\x65\\x6f\\x2c\\x64\\x03\\xb9\\x16\\xd0\\x2e\\x02\\xa6\\xd2\\x91\\xc1\\xe1\\x82\\x8d\\xd9\\x45\\xa5\\x83\\xb4\\x38\\x52\\x8d\\x1c\\x39\\x76\\x5a\\x57\\x20\\x31\\xff\\xa9\\x16\\xb6\\x83\\x21\\xf3\\x2e\\x66\\x46\\xf0\\xdc\\xc1\\xc6\\x02\\x35\\xff\\xaa\\x32\\x35\\xf4\\x84\\xa5\\xc4\\x97\\x8f\\xa3\\xe6\\xbf\\x14\\x30\\x1d\\x53\\xe1\\x2f\\x4c\\xc5\\x21\\x18\\xb1\\xf6\\xf0\\x7f\\x53\\x36\\xf5\\xd0\\xa9\\x37\\x89\\xbb\\x01\\xd1\\x62\\xfb\\x31\\x26\\xdc\\xd7\\x56\\xe0\\x64\\x2e\\x7e\\x69\\x89\\x63\\xc0\\x34\\x59\\x11\\xa5\\xcf\\x3c\\x99\\x53\\xf7\\x73\\x19\\x42\\x6c\\xea\\x2c\\xde\\xda\\x3e\\xfe\\x98\\x9e\\xcb\\x63\\xcb\\x9e\\xb8\\xb9\\x20\\xde\\x76\\x6c\\x4f\\xcf\\x63\\x36\\xe5\\xbc\\x43\\x71\\xa0\\x68\\x37\\x1f\\xed\\x95\\xc8\\xc2\\xb6\\x1e\\xe9\\xb7\\xc3\\xe3\\x83\\x1c\\x20\\xbf\\xfe\\x87\\x07\\xc0\\xc9\\x8b\\xe9\\x61\\x53\\xc8\\xa8\\x73\\xd7\\xf2\\x8a\\xfc\\xa1\\xbf\\x71\\x08\\x5c\\xe0\\xe3\\x89\\x9e\\xef\\x55\\x91\\xbd\\xd6\\x66\\xdc\\x2d\\x07\\x64\\x17\\x72\\xd7\\x45\\xc5\\x16\\x44\\xa2\\x60\\x81\\x5b\\x20\\x8c\\x4d\\xd3\\x05\\xf0\\x5f\\xe4\\x63\\xd0\\xd9\\xd5\\xa9\\xee\\xff\\x97\\x79\\xf5\\xb1\\xd4\\x4f\\x26\\x08\\x30\\x78\\x56\\x6d\\x0e\\x5f\\xf5\\x6b\\x3a\\xf0\\xe6\\x4c\\xc3\\x87\\x08\\xaf\\x5a\\x65\\xf6\\x54\\x35\\x2d\\xf1\\x04\\x37\\xf1\\xdd\\xf9\\x45\\xa0\\xda\\x1f\\x4d\\xef\\x6a\\x71\\xa0\\x60\\xe0\\xc4\\xad\\xec\\xca\\xac\\xf8\\x5e\\x09\\x0f\\x70\\x90\\x37\\x0a\\xe2\\x4e\\x52\\x38\\xd7\\x68\\xa0\\x8f\\xe6\\xb4\\xbb\\x5e\\xc4\\x97\\xa6\\x60\\x31\\x98\\x60\\x84\\x15\\xc7\\xc6\\x49\\x00\\x48\\xaa\\x36\\x73\\x7c\\x08\\x50\\x30\\x08\\xae\\xce\\x0f\\x49\\x42\\x19\\xdd\\xf8\\x9b\\x72\\xea\\x77\\x17\\x1c\\x6d\\x31\\x17\\x08\\x9e\\xb8\\x89\\x07\\xe8\\xc3\\x3f\\xb9\\xe7\\x0b\\x0d\\xc2\\x81\\xf6\\x64\\xb5\\xf9\\x65\\xb5\\xd2\\xad\\xb1\\x25\\x07\\x10\\xef\\x23\\x52\\x02\\x5f\\xb2\\x93\\x39\\x5a\\xe1\\xd2\\x3e\\xe3\\xb5\\x92\\xb4\\xc5\\xf2\\xd5\\x55\\x69\\xa5\\x45\\x86\\x54\\xce\\x3f\\xc2\\x5d\\xd0\\xe3\\xf7\\xe6\\x75\\x7a\\xa7\\xb3\\x47\\xc1\\xff\\xd3\\xba\\x4d\\x4f\\x2c\\x4b\\x6d\\x36\\xaf\\xd5\\x98\\x63\\xa3\\x2a\\x59\\x4e\\x74\\x53\\x7e\\xce\\x9b\\x8b\\x1e\\xc2\\x69\\xbb\\xc4\\xcb\\x54\\xd7\\x62\\x38\\x21\\x1f\\x62\\xa9\\x8a\\x46\\xa4\\xaf\\x66\\x2f\\xa8\\x1e\\xba\\x6f\\x30\\xf5\\x14\\xb8\\x66\\xb7\\x94\\x2b\\xc1\\x73\\xf7\\x21\\x1a\\x6c\\x01\\x4d\\xa1\\x4e\\x74\\x13\\x27\\xa5\\x68\\x62\\x3d\\x14\\xb8\\xf8\\x35\\xef\\x1d\\x5d\\x62\\xb2\\x52\\x3c\\xfe\\x6a\\x85\\xbc\\x69\\xfa\\x05\\x20\\x0d\\xea\\xc1\\x56\\x8b\\x94\\x6a\\x81\\x6b\\x75\\xc5\\xd7\\x60\\x31\\x74\\xfd\\x4e\\x2f\\x91\\x01\\xa7\\x90\\x63\\x79\\x1b\\xc3\\xd5\\x92\\x97\\xcd\\xc1\\x0b\\xda\\xa6\\x63\\xab\\xf3\\xc1\\xbe\\x2f\\xda\\x17\\xe4\\xe5\\xce\\x39\\x4e\\x90\\xbd\\x76\\xb1\\xf9\\xe0\\x40\\x5f\\x56\\x75\\xb9\\x9d\\x63\\x8a\\xbc\\x2c\\x1b\\x2d\\x8b\\x53\\xa6\\xfd\\x3d\\xc8\\x37\\x58\\x55\\xec\\x54\\xcc\\xbd\\xa2\\x4e\\x67\\x25\\x27\\x72\\x3b\\x07\\xbb\\x59\\x9d\\xb5\\x4e\\x38\\x79\\x33\\x91\\xcf\\x09\\xef\\x3b\\x1f\\xd7\\x61\\x49\\x90\\x06\\x5b\\xbd\\x4a\\x19\\xe8\\xd3\\xd1\\x04\\x82\\x53\\xba\\x4c\\x97\\x1c\\x2f\\x98\\xd2\\xb3\\x59\\xdf\\x50\\x90\\x87\\x32\\x3a\\xa6\\x90\\x50\\x29\\xf5\\xcc\\x5e\\x1a\\x0a\\xaf\\x2f\\x7c\\x01\\x08\\xdd\\xb1\\xa4\\x0f\\x56\\x2b\\xe6\\x4e\\x57\\xe6\\x95\\xed\\x21\\xdc\\x7d\\xb1\\x7d\\x53\\x36\\x77\\xef\\x12\\xfc\\xbb\\xe2\\x9f\\x3b\\x23\\x7b\\xb6\\x34\\x4b\\x11\\x09\\xb3\\x2a\\x94\\x62\\xab\\xc3\\xad\\x3c\\x07\\x10\\xb0\\x4f\\x38\\xc6\\xf5\\x95\\x2d\\xb2\\x75\\xe7\\x7e\\x2f\\x37\\xe9\\x5d\\x55\\x09\\x6b\\xba\\xf3\\xe3\\x05\\xd5\\xd7\\x43\\xd3\\x65\\x95\\xbf\\x05\\x67\\x89\\x2c\\x21\\x0a\\xc7\\xba\\xe7\\x37\\x1d\\x16\\x45\\x84\\x78\\x5d\\xd8\\x90\\x17\\x41\\x59\\xb3\\x93\\x0a\\x9a\\x6c\\xe3\\xa1\\x66\\xdd\\xa2\\x38\\x3e\\x6e\\x2a\\xf2\\x8c\\x1b\\xf3\\x19\\x24\\x47\\xe9\\x05\\x11\\xdc\\xd8\\x0e\\xbd\\xf9\\xee\\x2c\\x9b\\xde\\xdd\\xee\\xb6\\x10\\x55\\x86\\x41\\x53\\x2d\\x07\\xcd\\x13\\xda\\x61\\x25\\x41\\x54\\xcc\\x0f\\xd9\\xd4\\x81\\xe3\\xb0\\xa2\\x37\\xaf\\x2e\\xc2\\x62\\x56\\xd4\\xab\\x21\\x9f\\xaf\\x15\\xad\\x2b\\x7e\\x8e\\x57\\xab\\x72\\x6f\\xf2\\x72\\x32\\x16\\xa5\\x74\\x58\\x5e\\x2a\\x63\\x9d\\x94\\x8c\\x2c\\x4f\\x69\\xee\\xaa\\xd2\\x83\\xe3\\xa4\\x4f\\xf2\\x68\\xea\\xef\\xd7\\xe6\\x6b\\x73\\xed\\xe4\\x73\\xa8\\x39\\x7c\\x76\\xb4\\x8d\\x56\\xcb\\x3c\\xcd\\xab\\xc9\\x1a\\x89\\x29\\xcf\\x42\\x99\\x83\\x50\\xe0\"},\n{{0x76,0x2f,0x06,0xca,0x01,0xe3,0x14,0x71,0x5f,0x92,0xc9,0x0b,0xbe,0x72,0xa2,0x5b,0xf2,0x62,0x12,0xc8,0x1e,0xb1,0xd1,0xa0,0xda,0xe2,0xc3,0x11,0x30,0xf7,0xcd,0xbb,},{0xf9,0x62,0x6f,0xfd,0x69,0x27,0x31,0x92,0x5e,0x5a,0xac,0xfa,0x1b,0xde,0xd0,0x1a,0xa8,0xf7,0x30,0xb7,0x72,0xd5,0xe4,0x6a,0xdb,0xc3,0x15,0x56,0x5b,0x9b,0xf2,0xc9,},{0xe8,0x42,0xb4,0x9e,0x53,0x3d,0xbc,0x92,0x99,0x8d,0xc0,0x78,0xe5,0x97,0x93,0xa2,0xc2,0xfa,0x63,0x6b,0xdf,0xaf,0xdb,0x48,0x93,0x4c,0x93,0xcf,0x34,0x79,0x71,0x02,0x93,0x8d,0x13,0x7a,0xb7,0xea,0xd1,0xa0,0xf7,0x0e,0x94,0xa6,0x7d,0x57,0xef,0x6a,0x02,0xc9,0xec,0x77,0xd7,0x1f,0x70,0xcc,0x57,0xf1,0x53,0x3b,0xec,0x87,0x73,0x0e,},\"\\x94\\x97\\x48\\x3a\\x4f\\xba\\x78\\x43\\x3b\\x38\\xe9\\xde\\xb8\\x91\\x5c\\x75\\x0b\\x6d\\xa0\\xf7\\x8a\\xf4\\xa6\\x8b\\x62\\xf9\\xfc\\x03\\x91\\xe3\\x38\\x87\\x3b\\x1d\\x64\\xb1\\xb7\\xf0\\x9f\\x12\\xf0\\x56\\xa3\\xc9\\x16\\x53\\x49\\x8a\\xd5\\x6e\\x06\\x9b\\x8b\\x16\\x08\\x87\\xe8\\xe3\\x78\\xa7\\x6d\\x8b\\x3c\\x66\\x70\\x83\\xc0\\xa2\\xb2\\xd2\\x31\\x7d\\x3b\\x87\\x48\\x57\\xe5\\x78\\x62\\xef\\x0c\\xb7\\x04\\x36\\xa9\\x02\\x8f\\x01\\x91\\xcc\\xc6\\x16\\xe9\\xd7\\xc9\\xbd\\x86\\x98\\x08\\xcf\\x09\\x48\\x35\\xff\\x51\\x86\\x77\\xb3\\xfb\\x08\\x9f\\x4c\\x9d\\x07\\x7c\\xc7\\x74\\x24\\x05\\xb4\\x86\\x3a\\xc7\\xa5\\x96\\x45\\xc9\\xcf\\x54\\x0d\\x57\\x39\\x9d\\xa6\\xae\\x9d\\x07\\xfd\\x19\\xfc\\xa9\\x5b\\xc8\\xa8\\x6d\\x8b\\x8e\\x24\\xe4\\x87\\x33\\xf3\\x21\\x58\\xfd\\x19\\xa8\\xa1\\x11\\x1d\\x1d\\xa1\\xf9\\xb5\\x80\\xa3\\x9c\\x10\\x48\\x46\\x16\\xcf\\x2b\\xc0\\xec\\x29\\xf6\\x3f\\x77\\xc8\\x53\\x56\\x15\\x8e\\x16\\xda\\x59\\x4b\\x5a\\x89\\x0e\\x55\\xd0\\xb6\\x45\\x99\\xb3\\x02\\x93\\xe9\\x00\\xed\\x92\\xad\\x26\\x19\\x69\\xe7\\xdf\\x4c\\x4b\\x1d\\x0b\\x60\\x24\\xbd\\xce\\xb6\\x90\\x67\\xef\\x48\\x6c\\x20\\xfd\\xcd\\x22\\xa1\\x0d\\x5d\\xa4\\x5f\\xbf\\x90\\x5b\\xa1\\xe9\\x35\\xc9\\x6f\\x50\\xaf\\xb6\\x35\\x71\\xbc\\xff\\x31\\x30\\x68\\x4e\\xda\\x0b\\x56\\xe6\\x0b\\x26\\xcf\\x4c\\x0e\\xf9\\x93\\x8a\\x92\\x76\\x8f\\xc8\\x63\\x1f\\xe3\\x08\\x23\\x6b\\x01\\x2f\\x92\\xaf\\x24\\xa8\\xf6\\xe6\\xec\\xbe\\x76\\x62\\x9b\\xba\\xf8\\xff\\xe5\\x4c\\xdb\\xe8\\x67\\x1d\\xe2\\xba\\x62\\x4a\\x7c\\x0f\\x61\\x93\\xbb\\xa4\\x11\\x04\\x12\\x90\\x2b\\xac\\x29\\x90\\x92\\x2a\\x9e\\x5a\\x81\\x05\\x3c\\xf8\\x76\\xa4\\xc8\\x05\\xa0\\x4c\\x56\\xa8\\x13\\x9d\\x34\\x19\\xe4\\x54\\xa6\\x22\\xd0\\x34\\x2b\\xf4\\x26\\xe9\\x80\\x2c\\x3d\\xc1\\xb4\\x08\\x0c\\x75\\x49\\x2a\\xfe\\x9d\\x7b\\x15\\x45\\xfe\\x08\\x6d\\x96\\x35\\x41\\x32\\x4f\\xf5\\x2a\\x48\\xc6\\xbf\\xae\\xa2\\x66\\x68\\xb3\\xe0\\x1e\\x52\\x36\\xfd\\x45\\xfe\\x54\\x59\\x45\\x35\\xc0\\xb2\\x3e\\x28\\x7e\\xbd\\x14\\x28\\xc8\\xbe\\x0a\\xd1\\x41\\x60\\x0e\\x91\\xcb\\x51\\xe1\\xea\\x66\\x27\\x1a\\x64\\x21\\xfb\\x68\\x9e\\x88\\xa0\\x79\\x0a\\x65\\x1d\\xbd\\x21\\xee\\x20\\x89\\xb2\\x74\\x66\\x6f\\x66\\x0c\\xa0\\x9c\\xe2\\xd6\\x0e\\x39\\xe2\\xee\\x5f\\x03\\xb6\\xeb\\x82\\xd1\\x99\\x76\\x96\\x6e\\x79\\x90\\x0a\\x81\\x0f\\x6d\\x5b\\x5c\\x1a\\x54\\x8e\\x50\\x64\\xf5\\xc3\\xd8\\xa9\\xf2\\xde\\xf0\\x17\\x9d\\xf9\\x9d\\x14\\x3f\\xde\\x69\\xb0\\x71\\x2c\\x09\\x1c\\x29\\xe9\\xb2\\x5f\\x40\\xca\\xfd\\x57\\xa0\\x24\\x65\\x8d\\x77\\x74\\x03\\x76\\x10\\x34\\x2f\\x38\\x00\\xfd\\x51\\xf4\\x9e\\x79\\xa5\\xb3\\xde\\xcc\\x11\\x2f\\x58\\xd0\\x3e\\x3d\\x29\\x58\\x75\\x85\\x88\\xbc\\x4b\\x1c\\x6a\\x6c\\xda\\x7b\\xc5\\xf5\\xbe\\x18\\x3e\\x41\\x51\\x3c\\x1f\\x23\\x0f\\x3c\\xc3\\x64\\x30\\x4b\\xf8\\x24\\x84\\xb7\\xcf\\x19\\xa0\\x02\\xe1\\x50\\xf9\\x8c\\x5e\\x97\\xc6\\x16\\x6e\\xa1\\x5b\\x86\\x34\\x0b\\x8c\\x5e\\xbe\\x5c\\x1a\\x18\\x3e\\x55\\x88\\xe6\\x6f\\x55\\x90\\x50\\x86\\x31\\x3f\\x37\\xa4\\x09\\xe8\\x9b\\x47\\xdb\\x31\\xae\\x97\\x45\\x3e\\xdf\\x69\\xfe\\xd7\\xbe\\x08\\x11\\x30\\x71\\xf3\\x74\\xb2\\x6e\\xc6\\x04\\x3f\\x2a\\x0e\\x9c\\xf8\\xba\\xd8\\x02\\xab\\xad\\x69\\xe6\\x17\\xe7\\x62\\x43\\xb3\\xcc\\x03\\x4b\\x09\\x9d\\x87\\x29\\xee\\x40\\x7a\\x53\\xeb\\x03\\xbd\\xc6\\x41\\x0a\\x03\\x95\\x04\\xb3\\xb1\\x2c\\x81\\x9b\\x64\\x54\\x5d\\x40\\x5c\\x6a\\x4f\\x08\\x49\\x21\\x93\\x5b\\xdf\\xf4\\x13\\x0a\\xe6\\x29\\xd9\\x09\\x62\\x6b\\x06\\x26\\x76\\xe5\\x38\\xea\\xfd\\xff\\xb1\\xd6\\x22\\x9c\\x08\\x89\\xd3\\xcd\\xdd\\x33\\x65\\xdc\\x3d\\x65\\x36\\xf7\\x24\\x8c\\x49\\x31\\x7c\\xb5\\x0c\\x56\\xfb\\x57\\x85\\x55\\x41\\xd6\\xfe\\xeb\\xac\\x81\\x6c\\x99\\x28\\xfa\\x66\\x2d\\x0a\\xe8\\x0a\\x0f\\x39\\xe5\\x70\\xbb\\x7d\\x22\\x41\\x6f\\x98\\xf3\\x71\\xb6\\x42\\x47\\x96\\x89\\x51\\xa8\\xa2\\x46\\xf7\\x4b\\x30\\x61\\x74\\x3c\\x9a\\xf7\\x68\\x4b\\xbb\\x96\\x6a\\xe0\\xbd\\x78\\xa8\\x10\\x49\\x3e\\xa4\\xcc\\xd7\\x11\\x74\\x87\\x1c\\x82\\xbb\\x65\\x2b\\x27\\x48\\xe5\\xbc\\xcb\\x0a\\xb6\\x38\\x8a\\x50\\xf0\\x53\\xa0\\x48\\x08\\x7f\\xd9\\x7e\\xb1\\x5c\\x1a\\x21\\xb1\\xee\\x18\\x25\\xe5\\x4a\\xa1\\x30\\xd6\\x63\\x18\\xaa\\xf6\\x61\\xbb\\xb2\\x47\\x63\\x57\\x7e\\xb3\\x7d\\x31\\x0e\\x21\\x9b\\x0a\\x9b\\xba\\x03\\x75\\xeb\\x9c\\x9b\\x4a\\xf8\\xc4\\xb9\\x9a\\x36\\x99\\xe0\\xd3\\x26\\x67\\x33\\xb6\\xe4\\xe9\\xc5\\x34\\x49\\x0a\\x13\\x41\\xcb\\x19\\x90\\xca\\x5b\\x1c\\x84\\x7b\\xc8\\x12\\x60\\x26\\xfe\\xa9\\x03\\xa1\\xf5\\x49\\xd6\\x5a\\xf8\\xfe\\x02\\xa9\\x16\\x3f\\xf8\\xea\\x28\\x1e\\x72\\x26\\x24\\x3e\\x2a\\x15\\x3b\\x92\\x18\\x51\\xde\\x10\\xf7\"},\n{{0xc5,0xcc,0x0b,0x95,0x81,0x8c,0x4b,0xf3,0x8d,0xa1,0xd6,0x5f,0x02,0x16,0x27,0xe9,0xe5,0x7d,0x26,0x2b,0x02,0xec,0x6d,0x91,0x7a,0x7d,0x46,0xb1,0x1c,0x7f,0xe4,0x8a,},{0x45,0x7d,0xa4,0xef,0x14,0x51,0x9d,0x54,0x1e,0xdf,0x92,0xca,0xbe,0xd9,0xb0,0x4d,0x8a,0x2f,0x2a,0xfd,0x15,0x10,0xa9,0x2f,0x00,0x9b,0xb4,0xe8,0x75,0x4f,0x1e,0xba,},{0x3b,0xa0,0xaf,0x8a,0xf1,0x27,0xc4,0x58,0x48,0x26,0x09,0x0e,0xcd,0xaf,0x48,0x5e,0xbd,0xf0,0x7b,0x82,0xbc,0x49,0x9c,0x9a,0x2b,0xef,0xca,0x28,0xd4,0x93,0x44,0x97,0x4a,0xdd,0xbc,0x8d,0x80,0xa5,0x25,0x60,0xe0,0xf3,0xd7,0x3f,0xf5,0xcc,0xcc,0x72,0xc7,0x4b,0x5b,0x47,0xad,0x2e,0x6d,0xe9,0x61,0x2d,0x1a,0x00,0xae,0xc9,0x27,0x01,},\"\\xd6\\x60\\x8b\\xf5\\xac\\x00\\x0e\\xca\\xf9\\x5f\\xc0\\x9f\\x9c\\xb7\\x49\\x8c\\x51\\x8a\\x6e\\x02\\x55\\x58\\x6e\\x63\\x37\\x85\\x3b\\x1d\\x7d\\x9d\\x7d\\xe4\\xdf\\xe1\\x24\\x5d\\x59\\x03\\x1a\\x31\\x7d\\x4e\\x2b\\x6a\\x73\\xc4\\xc3\\xf9\\x5b\\x58\\x2e\\x72\\xa6\\x42\\x02\\x21\\x58\\x7b\\xac\\x12\\x0f\\xb8\\xed\\x73\\x48\\x07\\x0f\\x28\\x60\\xd8\\x58\\x66\\xa0\\x9f\\xe7\\x56\\x74\\x34\\x97\\xf2\\x11\\x9b\\xc1\\xbf\\xdf\\x57\\x3b\\xe3\\x5d\\x10\\x91\\xbe\\x37\\xf1\\x8b\\xcd\\xa6\\x74\\x1c\\x90\\xd5\\x66\\xcc\\x92\\x4b\\x72\\x16\\x4b\\x74\\x9a\\xf9\\xa6\\xf4\\x0f\\x71\\xd3\\xea\\x5d\\x87\\x64\\xcd\\xc8\\x17\\x14\\xbd\\x73\\x95\\xe5\\xf6\\x79\\x97\\x36\\x36\\xef\\xf1\\xdb\\x1c\\xf0\\x01\\x29\\x83\\xf7\\x1a\\x2f\\x2b\\x12\\xd4\\x5a\\x29\\x4e\\x5a\\x38\\x9f\\x4c\\xd2\\x48\\x3e\\xb3\\x9d\\xa0\\xdf\\x26\\xb7\\x36\\xc7\\xaf\\x6e\\x41\\xdd\\x35\\xa7\\x8e\\x45\\x29\\x2c\\x39\\x4e\\x34\\x68\\x95\\x32\\x88\\x87\\x21\\xf8\\x63\\xc5\\x6d\\xb9\\x7d\\xa1\\xcd\\x10\\xa6\\x6a\\x20\\xa6\\x70\\xb2\\x7f\\xe8\\xce\\x55\\x68\\xa4\\x2b\\x89\\x37\\x79\\x0c\\x7b\\xe1\\xaa\\x42\\x0d\\x20\\x3d\\x7a\\x88\\x5c\\x17\\x29\\xcd\\x6b\\x8e\\x19\\x71\\x89\\xe4\\x79\\xd5\\x42\\xcb\\xcb\\x9b\\x53\\x65\\x6f\\x2b\\x9f\\x53\\x9c\\x32\\x5c\\x34\\xaa\\x59\\x8f\\xd9\\x1e\\x7d\\xf7\\x0f\\x9a\\x74\\xab\\xec\\x46\\x76\\x54\\xb1\\xc9\\xa3\\xd1\\x44\\x38\\xe7\\xc0\\x83\\x60\\x40\\xb7\\x93\\x87\\x1e\\xcb\\xe9\\xe5\\xf6\\x68\\x0c\\xcc\\xcd\\x5d\\x46\\x96\\xa8\\x7e\\x37\\xe8\\x9e\\xab\\x28\\xb6\\xbd\\x67\\x9e\\x8f\\xe1\\x62\\x7b\\xdc\\x9d\\x37\\x3b\\x82\\xf5\\x2c\\xd8\\xc4\\x9b\\xe9\\xba\\xcd\\xc6\\x30\\xa3\\x2f\\xd1\\x28\\x35\\x25\\x5a\\x54\\x2f\\xb7\\xb1\\x23\\x93\\x77\\x9d\\x44\\x98\\xaa\\x06\\xa0\\xe7\\xe1\\xa4\\x97\\x79\\x39\\x81\\x7e\\xb2\\x08\\x8a\\xf1\\xe1\\x9b\\xb0\\xe5\\xac\\xa8\\x54\\xc1\\x25\\xdc\\x60\\x3d\\x83\\x57\\x36\\xa0\\x3d\\x93\\x80\\x51\\x53\\x0c\\x9a\\xb1\\xaa\\x3b\\xc7\\x79\\xb3\\xba\\xe7\\x45\\x0e\\xf5\\x7d\\x1b\\x3f\\xc0\\x93\\xa3\\x7d\\xbe\\x9d\\x1b\\xd6\\xd0\\x40\\xf2\\xf8\\xee\\xba\\x77\\xf7\\xfa\\x88\\xc1\\x49\\xf0\\x65\\xc7\\xac\\xe3\\x32\\x77\\xaa\\x99\\x69\\xc2\\x66\\xea\\x6d\\x85\\xca\\xd6\\x2c\\xfa\\xf5\\x50\\x8e\\x70\\x32\\x71\\x6b\\xe6\\x84\\xa2\\x28\\x56\\x41\\x3e\\x0e\\x65\\xe4\\x2b\\x6e\\x9e\\x6d\\x86\\x5a\\x87\\x36\\x3c\\xbb\\x62\\xd5\\xbb\\xb6\\xa3\\x73\\x1d\\xdd\\xa0\\xfa\\x6a\\xd0\\x29\\x3a\\xf9\\x89\\x3c\\x09\\xa9\\xe7\\x43\\x09\\x0f\\x2c\\xee\\x2f\\x44\\x37\\x73\\x6d\\xd4\\x33\\xe2\\xac\\x74\\x28\\xbd\\xc8\\xc7\\x7c\\xb9\\x96\\x43\\x55\\xfa\\x44\\x15\\xcc\\x38\\x31\\xd8\\xc7\\xca\\x5a\\xf9\\x3d\\x51\\x75\\x2e\\x71\\x8c\\x60\\x66\\xec\\xa1\\x42\\x6a\\x87\\xc2\\x98\\x08\\x28\\x1a\\x85\\xac\\x7e\\x0b\\x40\\x44\\xff\\x6e\\x28\\x0e\\x28\\x01\\x4b\\x93\\x83\\xd1\\x9c\\x9d\\x38\\x7d\\x29\\xdc\\x14\\xde\\x43\\x3d\\xa2\\x60\\x78\\x4a\\x49\\x44\\xca\\x76\\xc2\\xfe\\x8a\\x08\\x0d\\x09\\x96\\xd9\\xa6\\xc2\\xa3\\xd3\\xa7\\x07\\x72\\x80\\xed\\xce\\xe0\\x38\\x9a\\xa8\\xe5\\x36\\x5d\\x1d\\x9b\\x34\\x6e\\xca\\x09\\x47\\xb0\\xff\\x52\\x65\\x94\\x3c\\xcf\\x09\\x93\\x9a\\x4b\\x4a\\x8f\\x98\\x5f\\x6a\\x5e\\x72\\x72\\x3c\\x79\\x5d\\xa0\\xbc\\x36\\x0d\\xce\\x50\\x1f\\x67\\x3a\\xb6\\xea\\x84\\x43\\xf1\\x29\\x42\\x79\\x52\\x45\\x3e\\xb7\\x2b\\x3a\\x8d\\x0d\\x97\\x6c\\x27\\x8c\\x5b\\xd1\\xa9\\x85\\x3c\\x91\\x8e\\x0c\\x24\\x0c\\x3c\\x73\\x49\\x32\\x95\\x3f\\xdb\\x50\\x39\\xfb\\xb0\\x46\\x87\\x93\\x7c\\x9f\\xf0\\xab\\x74\\xa1\\x6e\\xae\\x21\\x2b\\xc6\\xf2\\x0e\\x70\\x0a\\x77\\xc0\\x92\\xd2\\x3d\\x2e\\xfb\\x58\\x0e\\x0c\\x19\\xd6\\x5f\\x30\\x41\\x29\\xab\\x8e\\x6c\\xc1\\x2e\\x58\\x05\\x22\\x57\\xba\\x09\\x44\\x9f\\x30\\xd3\\xd9\\x74\\x39\\x1a\\xff\\xf5\\x63\\x3d\\xef\\x2f\\x5c\\x4e\\xbd\\x57\\x3a\\x9e\\x44\\x4b\\xf3\\xa3\\xdd\\xac\\xed\\xf0\\x2c\\x05\\xf3\\xcc\\x2e\\x75\\x06\\x64\\xa8\\x4a\\x1d\\x24\\xc5\\xd2\\x8b\\x49\\x67\\x0d\\xe8\\xa2\\xf2\\x09\\x08\\x39\\x48\\x3c\\xa3\\x89\\x59\\x99\\x1a\\x7d\\x37\\x27\\xe2\\x1a\\x15\\xe8\\x20\\x16\\xc1\\x5a\\x09\\xee\\x71\\xf4\\xf4\\x3c\\x0a\\x60\\x8b\\x48\\x48\\x5c\\x99\\x34\\xa3\\x86\\x14\\x79\\x4d\\x62\\x91\\xda\\xa3\\x9c\\x01\\xc4\\x5d\\x3d\\xeb\\xe5\\x79\\xb5\\x82\\x3b\\xf3\\x40\\x64\\x04\\xb4\\xc8\\x0e\\xe6\\xff\\x34\\x2b\\x46\\xb3\\x34\\xb0\\xb8\\x83\\xb4\\x0b\\xfd\\x2f\\x9a\\x53\\x59\\x5a\\xb6\\x2f\\xd1\\x35\\x1e\\xbc\\x88\\x30\\x83\\x70\\x49\\x72\\x18\\xdf\\xc9\\x8c\\xe0\\x81\\x40\\x7d\\xa8\\x12\\xa4\\x6d\\x64\\x97\\xd7\\xaf\\x9e\\xc6\\xd8\\x3e\\x1c\\x60\\xee\\xb7\\x12\\xd8\\x89\\xdf\\xbe\\xd0\\xc8\\x05\\xaa\\x11\\xcf\\x81\\x7d\\xd8\\xf0\\x43\\x96\\xef\\x87\\x1a\\x26\\x11\\x2d\\xcb\\x7c\\x0e\\x1d\\x2e\\x68\"},\n{{0x61,0xfa,0x86,0x77,0xee,0xda,0xde,0xd6,0x9b,0x16,0x5c,0x8d,0x27,0x7c,0x97,0x82,0x49,0x66,0x30,0x28,0x30,0x1d,0xf6,0x16,0x3e,0x39,0xb0,0x6a,0xc2,0xf5,0x62,0x5f,},{0x87,0x33,0x9e,0xb5,0x72,0x38,0xdb,0x2e,0x4e,0x60,0xf3,0xc2,0x8a,0x3f,0xd5,0xfb,0x61,0x1c,0x65,0xfd,0xdc,0x81,0xee,0xd7,0xcf,0x77,0x71,0xdf,0x34,0xd9,0x22,0x67,},{0xc0,0x4e,0xbd,0x11,0xc3,0xeb,0x09,0x39,0x6f,0xe8,0xd6,0x82,0x79,0x51,0x0a,0x9e,0xfe,0xe3,0x91,0xab,0xee,0x40,0x81,0xf0,0xd2,0x75,0x67,0x4a,0x30,0x47,0x94,0x83,0x5a,0xad,0x7f,0x3e,0x34,0x5b,0xcf,0x0a,0xf8,0x02,0x7f,0x97,0x47,0x7e,0x79,0xe6,0x79,0x2b,0x8f,0x29,0x98,0x46,0xae,0x28,0xcb,0x13,0xbd,0x88,0x75,0x37,0x99,0x0d,},\"\\x02\\xc5\\x81\\xde\\xe0\\x3f\\x2c\\x60\\x39\\x35\\xaf\\x5e\\xce\\xec\\xfa\\x67\\x71\\x34\\xa3\\xe0\\xae\\xa5\\x4f\\xec\\xaf\\x42\\x71\\xfb\\x52\\x95\\x1a\\x27\\xb7\\x68\\x77\\xcc\\xd4\\x9a\\xb4\\x86\\xdf\\xc2\\x27\\xcf\\x31\\xc9\\xd9\\x57\\xcc\\x97\\x30\\x65\\x73\\xfc\\x7f\\xe1\\xd3\\x1b\\x6c\\x7d\\xf3\\xd7\\x80\\xf3\\xa0\\x5c\\xa6\\x39\\x56\\x57\\xa9\\x42\\x43\\x42\\xc9\\xc6\\xb7\\x03\\x12\\x7e\\x03\\x8d\\xf0\\x79\\x21\\x54\\xe3\\x0a\\x49\\x47\\x61\\x12\\xcb\\x92\\xd0\\xd5\\xa2\\xd2\\x2e\\x89\\x57\\x52\\xa8\\x6e\\xdd\\xdd\\x91\\x2f\\xdc\\x81\\xb1\\xe6\\x4a\\x7b\\xb7\\x50\\xf0\\x99\\x18\\x21\\x32\\xee\\x48\\x23\\xfd\\xe8\\x45\\x80\\x2a\\x94\\x45\\x39\\xd4\\x12\\xb2\\xa8\\x1a\\x15\\xb0\\x00\\x71\\xa9\\x50\\x50\\x4c\\x5b\\x55\\xa7\\x1b\\xdb\\x8c\\x5a\\x58\\x26\\x39\\xe8\\x55\\xe8\\xbe\\x24\\x1c\\xda\\x1b\\xa6\\xb3\\xb4\\xf6\\x45\\x54\\xd1\\x78\\x24\\x90\\x4c\\xb3\\x0c\\xd7\\xef\\xd9\\xac\\x04\\x9e\\x39\\x0b\\xb7\\x9f\\x53\\x59\\x8e\\xf1\\xe8\\xfc\\x27\\xdd\\x7b\\xf5\\x99\\xc9\\x02\\x8c\\x9e\\xbf\\x92\\xfc\\x3b\\xe1\\x1d\\xf3\\x29\\x61\\x2a\\x22\\x8e\\x0f\\x56\\x84\\x68\\x7b\\xf4\\x1f\\xf2\\x03\\xe9\\x7a\\x76\\x86\\x12\\x6a\\x39\\x36\\x6b\\xdc\\x26\\xd5\\x0b\\xe0\\x25\\xd5\\x18\\x7c\\x6b\\xa0\\x66\\x6e\\x37\\x9b\\xe4\\xa8\\x0a\\x9e\\x62\\xef\\xfc\\xd9\\x16\\xd7\\xf9\\x8d\\xe6\\x51\\xe0\\x0b\\x97\\xad\\xf5\\xd2\\xd5\\x3d\\xaa\\x7f\\x8d\\x69\\x5a\\x29\\x15\\x60\\x75\\x5c\\x74\\x44\\x82\\x36\\x4c\\x4f\\x1f\\xa4\\x7e\\xc0\\xb1\\xda\\x16\\x1a\\xa3\\x88\\xf9\\x59\\x79\\x89\\xa9\\x77\\x26\\xd3\\xed\\x2c\\xec\\x82\\xf1\\xa1\\xbb\\xc4\\xac\\x0b\\xe0\\xa0\\x0c\\xb4\\xa8\\xdb\\x1f\\xb7\\xc1\\x4b\\xa0\\x5d\\x89\\x63\\x48\\xdc\\x05\\x59\\xd2\\xa9\\x0b\\xea\\xc2\\x04\\x1d\\xd7\\x7f\\x82\\xd6\\xb1\\x2a\\xeb\\x22\\x43\\xca\\x0f\\x41\\x9a\\x57\\xd3\\xca\\x9c\\x7d\\x25\\xa3\\x0f\\xf0\\xe8\\xbb\\x0d\\x94\\x51\\x55\\xd1\\xb3\\x6a\\xd1\\x07\\xb5\\x5b\\xea\\xa9\\x5b\\x7d\\x5e\\x32\\x00\\x34\\x07\\x62\\x9f\\x15\\x15\\xf8\\xa7\\x08\\x9e\\x24\\x88\\xd0\\xd7\\x54\\x4c\\x2f\\x7c\\xc7\\xc7\\xf0\\x98\\x5d\\xa4\\x28\\x40\\xd4\\x36\\x8f\\xf4\\xf0\\xfa\\x4f\\xa2\\x98\\xe3\\xb7\\x22\\x93\\x03\\xab\\xa5\\x14\\xae\\x94\\xe7\\x02\\x65\\x35\\xa3\\xf4\\x26\\xff\\xbb\\x4e\\x00\\x1c\\xd5\\x0e\\xd1\\x2f\\x21\\x4b\\x3a\\xbe\\xf9\\x6e\\x30\\x16\\x35\\xc9\\x87\\xb1\\x33\\xfc\\x5e\\x61\\x84\\xe7\\xb7\\x57\\x2b\\xc3\\xd9\\x9a\\x45\\x23\\xcb\\xd5\\xaf\\xe5\\x93\\xce\\xdf\\x4c\\x9c\\xd0\\x2f\\xf2\\xe3\\x62\\x37\\xe4\\xee\\x12\\xef\\x1a\\x22\\xd1\\x6d\\x7c\\xf4\\xc0\\x72\\xdc\\xed\\x91\\xcd\\xd2\\x6e\\xe1\\x44\\xcc\\x2b\\xef\\x49\\x50\\x02\\x63\\x49\\xe9\\x44\\x47\\x84\\x08\\x1f\\xe4\\xe0\\x49\\x8b\\xc7\\x5f\\x72\\xe6\\x81\\x8f\\x45\\x9b\\xba\\x90\\x49\\xc5\\x61\\x31\\x6c\\x9f\\x49\\x8e\\x7b\\x1a\\x99\\x4b\\x0e\\x93\\x05\\x5f\\xe7\\x3e\\x44\\x4c\\xbd\\xf9\\x6a\\xc3\\x5e\\x9c\\x4e\\x92\\xe6\\xb4\\x9e\\x3b\\xc0\\xe9\\x9d\\xe1\\x71\\x6d\\xf8\\xea\\xca\\xeb\\x8d\\x2f\\xd7\\x48\\x70\\x04\\x4c\\xb3\\x9c\\x0e\\x36\\x7a\\x1f\\xe3\\x2a\\x9b\\xb2\\x97\\x44\\x16\\x36\\x4e\\x73\\x0d\\x52\\x48\\xdf\\xb1\\xdf\\x16\\x4a\\x8d\\x58\\xca\\xa1\\x00\\x5f\\xdc\\x91\\xba\\xc2\\xbc\\x01\\xcc\\x77\\xde\\xcc\\x14\\x89\\x3e\\xf9\\x46\\xfb\\x3c\\x81\\xbe\\x08\\x32\\xc7\\x2f\\xba\\x37\\x20\\x62\\xf8\\x36\\x0f\\x4d\\x8e\\x6d\\x5b\\x74\\x1c\\xf7\\x03\\x2d\\x8d\\x89\\xde\\x2e\\xdf\\x4c\\x71\\x4a\\x29\\xf7\\x5a\\xbd\\x8f\\x5f\\xf4\\x3e\\xcd\\xd4\\xb7\\xa0\\x4d\\x7d\\xb0\\x88\\x2d\\x16\\xe7\\x44\\x73\\xa0\\xfb\\x79\\xdb\\x44\\x4a\\x78\\xea\\x44\\xaa\\x26\\x31\\xb8\\xc0\\xd7\\xb0\\x30\\x0d\\x55\\xcb\\x6a\\xc4\\x85\\xf2\\x4c\\x0a\\xcc\\x64\\x77\\x47\\xc4\\x3d\\xb3\\xb2\\xa8\\x67\\x7b\\xaf\\x65\\x6f\\xa7\\x35\\xa5\\x75\\xf1\\x81\\x3f\\x36\\x68\\xa2\\xac\\xa9\\x17\\x57\\x11\\xb5\\x25\\xeb\\x49\\x6e\\x9e\\xf9\\x71\\x1d\\x75\\xf5\\x90\\xc7\\xd9\\xef\\x99\\xe0\\xf5\\x9e\\x84\\x83\\xcb\\xf9\\xf2\\x84\\xe3\\xf5\\xa3\\x3e\\xe7\\x78\\x1e\\x62\\xb8\\xb0\\x55\\x51\\x77\\x7e\\xfe\\x0f\\xbf\\xd1\\x9e\\x54\\xb6\\xbb\\xd1\\x42\\x94\\x4b\\xc2\\x95\\x9a\\x82\\xeb\\xd2\\x95\\xd2\\x3d\\x34\\x43\\xb6\\xce\\x65\\x8c\\x2d\\x57\\x9a\\x76\\x37\\xb5\\x49\\x52\\x04\\x91\\x90\\x8e\\x34\\x28\\x2e\\xc2\\x71\\x69\\x72\\xe6\\xf0\\x35\\x39\\x29\\x54\\x7e\\xf1\\x53\\x7a\\xec\\xc9\\x6b\\x2d\\xf6\\x16\\x14\\x85\\x99\\xb0\\x9d\\x9b\\x81\\x39\\x4a\\x13\\xfe\\x7d\\xb8\\x67\\x60\\xb1\\xe2\\xa0\\x60\\xef\\xd4\\x84\\xe8\\x18\\x99\\x39\\xeb\\xdf\\x6f\\x21\\x64\\x0d\\x89\\xd8\\xe7\\x36\\xde\\xe0\\x82\\xad\\x72\\xa0\\x18\\x4a\\xde\\xdd\\x8d\\xf2\\x14\\x74\\xc9\\xf5\\x26\\xbc\\xfd\\xf7\\xe8\\x56\\x58\\x19\\x4b\\xb6\\xd9\\x42\\xe7\\xf3\\xfe\\x96\\xc2\\x3f\"},\n{{0x70,0x48,0xc6,0x52,0x1a,0xef,0xaf,0xa4,0xea,0xc6,0xd6,0xc3,0xa7,0x02,0xb9,0x52,0x54,0x80,0xa6,0x64,0x82,0xe4,0x96,0x98,0x96,0x75,0x7f,0x2c,0xd1,0xac,0x7d,0x5b,},{0xed,0x93,0x11,0x3c,0x16,0x43,0xa5,0x3a,0xa0,0x64,0xca,0xa6,0x31,0xce,0xb6,0xe2,0x0f,0x6d,0x6e,0xc2,0xfc,0x6c,0x07,0x11,0xcb,0x8a,0x1f,0xe7,0x31,0x39,0xaf,0x93,},{0x7c,0x45,0x70,0x3e,0xd3,0x94,0x2e,0x44,0x04,0x1c,0x7f,0xa1,0x85,0x8a,0xa5,0xf1,0xdc,0x38,0x1f,0x49,0x3a,0x45,0x2d,0xfb,0x52,0x70,0x80,0x17,0x89,0x8f,0x71,0x0e,0x31,0x11,0x8e,0x33,0x1f,0x00,0xaa,0x64,0xcb,0x73,0x88,0x36,0x68,0x2b,0x7d,0x17,0x7e,0x97,0x95,0x5c,0x00,0x31,0x9a,0xbd,0x79,0xa4,0x9e,0x0f,0xcd,0x16,0xfe,0x00,},\"\\x53\\xf7\\x4c\\x72\\x4d\\xb1\\x57\\x8a\\x1a\\x29\\x6a\\x7c\\xca\\xc9\\x04\\xa2\\x50\\x4d\\xd9\\x00\\x53\\x89\\xb4\\xf8\\xd4\\xea\\x4b\\x63\\x07\\x29\\x8f\\xc6\\xdc\\xce\\x98\\xa6\\xbc\\x07\\x28\\x0d\\x20\\x36\\x4e\\x40\\x5a\\x46\\x7e\\x73\\x65\\x78\\x96\\x52\\x69\\xc8\\x14\\x61\\xd6\\x1f\\xc6\\xb7\\xe4\\xba\\xd6\\x8d\\x2b\\x6d\\xd0\\x00\\x58\\x50\\x10\\x5f\\x0a\\x67\\xbb\\xc6\\xee\\x22\\x3e\\xc1\\x75\\x4a\\xf4\\xe3\\xb9\\xaf\\xa5\\x06\\x2d\\x1c\\x18\\x61\\x04\\x8f\\x18\\x5b\\x12\\x8f\\x1a\\x5c\\x0f\\xb2\\x5c\\x39\\x19\\xb4\\x83\\x3e\\x29\\xe2\\x02\\xbc\\x94\\x1a\\x90\\x5e\\x63\\xc2\\xc0\\x5b\\x10\\x14\\x64\\x7b\\xd7\\xed\\xe5\\xbe\\x9f\\x99\\x66\\x15\\x18\\x7a\\x3d\\x3b\\xb2\\xc7\\xdc\\x4c\\x28\\xf7\\x05\\x3d\\xef\\x9b\\x28\\xb2\\x9e\\x23\\x31\\xf1\\x62\\x96\\xdc\\xe8\\xf1\\xed\\xe4\\x84\\xca\\xec\\x99\\x67\\x02\\xbd\\x99\\x02\\xe5\\x26\\x84\\xc8\\x12\\xc8\\x74\\x40\\xf6\\x9b\\xd1\\x41\\xc7\\xe0\\x0c\\x69\\x47\\xd1\\xfc\\x7c\\x3b\\xdc\\x0b\\xc5\\x50\\x6b\\x6e\\xa4\\x62\\xe6\\x5f\\x9e\\x74\\x3b\\x72\\xc0\\x07\\xdd\\xc7\\xa3\\x77\\x49\\x37\\x77\\xd4\\xeb\\x12\\x62\\x0c\\xa6\\xc0\\x19\\xc8\\xbf\\xc4\\xc2\\x9e\\xc8\\xaf\\x38\\x2f\\xc3\\xea\\xc8\\x41\\x02\\x1a\\x74\\xe4\\x67\\x4b\\xa3\\xe4\\x3e\\x5d\\x7b\\x41\\xe3\\xfe\\xeb\\x17\\xda\\x00\\xa7\\xce\\x45\\x5a\\x1c\\xec\\x70\\xb0\\xbe\\x6e\\x56\\xf8\\x5f\\xc3\\x7f\\x64\\xcf\\x07\\x33\\xb7\\xe3\\x12\\x41\\xde\\x64\\x1a\\x8a\\x8e\\x5b\\x91\\x89\\x7b\\xc1\\x58\\xfe\\x93\\xd1\\x02\\xc0\\x1d\\x1f\\x5e\\x16\\x6d\\x40\\x81\\x65\\xfe\\x3f\\xcb\\x13\\xd5\\x30\\x45\\x90\\xab\\x8e\\xf0\\xdc\\x8d\\x5a\\x8c\\x1d\\x8a\\x93\\xfc\\xeb\\x85\\x4f\\xc1\\xfa\\x36\\xd0\\xcc\\x48\\x0c\\xf8\\x51\\x2d\\x80\\xbe\\xe6\\x9b\\x06\\x50\\xa9\\x57\\xda\\xed\\x28\\x3c\\xd7\\x63\\x81\\x55\\xed\\x77\\x30\\x86\\xe8\\x6a\\x8f\\xfb\\x19\\x8a\\xcc\\x74\\x23\\xb5\\xd1\\xa6\\x09\\xa1\\x75\\xa5\\x6b\\x94\\xc9\\x6b\\x73\\x18\\x51\\xb9\\x3a\\x94\\x97\\x71\\x01\\xe2\\x55\\xf1\\xce\\x92\\xe2\\x32\\xa0\\x5e\\x2e\\x33\\x87\\xfc\\xb4\\xdc\\x13\\xa3\\x1b\\xee\\x6e\\xe2\\x55\\x07\\x32\\x2c\\x73\\xc9\\x88\\x30\\x80\\xa7\\x4c\\x00\\xf8\\x03\\xa9\\x98\\xdd\\x53\\x0a\\x79\\x12\\x6b\\xb1\\x44\\xed\\x55\\x74\\xc4\\xb2\\x31\\x80\\xe3\\x4e\\x09\\x92\\x83\\xb4\\xbb\\x1d\\x28\\x82\\x2f\\xce\\x37\\x17\\x04\\x6f\\xf3\\x2e\\xf9\\xe2\\xcd\\xf9\\x67\\xe3\\x18\\xea\\x72\\x6a\\x2a\\xee\\xc5\\x78\\x06\\x64\\x3a\\xd4\\x80\\x1d\\x3e\\x0d\\xa5\\x2a\\x1d\\x77\\xbf\\x04\\x3f\\x5a\\xe9\\xf3\\xae\\xa9\\xe4\\xbc\\x4f\\xa7\\x95\\xd0\\x84\\x01\\x08\\x5c\\xa9\\x4c\\xfc\\x4c\\xe7\\x19\\xda\\xbc\\x7b\\x23\\x90\\xd0\\x3d\\x29\\x4a\\x65\\xb7\\xaf\\x9b\\xc3\\x90\\x72\\x28\\x5b\\x77\\x7b\\x2f\\x13\\x3d\\xc1\\x1a\\x70\\xc0\\xa9\\xf0\\x60\\xe1\\x04\\x41\\xf4\\x02\\x16\\xac\\xb6\\x41\\x63\\x7a\\x2e\\xad\\xf1\\xf7\\xb8\\xd2\\x62\\xfe\\xc1\\xb4\\xd0\\xf0\\xf4\\xfa\\xa9\\x3f\\x3f\\x73\\x2c\\xac\\x38\\x2d\\x8a\\xc4\\x2e\\x17\\x8e\\x22\\x44\\x99\\x9d\\x76\\x4a\\x9d\\x0e\\x98\\x17\\x14\\x68\\x6e\\xb4\\x92\\x44\\x97\\xe5\\x6b\\x50\\x15\\x7e\\x99\\x39\\x03\\x2c\\x9f\\x88\\xeb\\x65\\x7c\\xfd\\xe4\\x4a\\xd3\\x47\\x14\\xaf\\x4a\\x51\\x32\\x4e\\x5e\\x77\\xd0\\xde\\xea\\x99\\xc9\\xf2\\x44\\xd2\\xe0\\x9e\\xa4\\x25\\x82\\x0a\\x74\\x6d\\x88\\x3a\\x0c\\xf4\\xb7\\x05\\xc2\\x9d\\xf8\\xc0\\x37\\x44\\x81\\x54\\xdc\\x08\\xa4\\xd4\\x33\\x74\\x05\\xfb\\x87\\x65\\x82\\x31\\x14\\x37\\x0b\\x37\\xed\\x86\\x08\\x6e\\xc5\\xf8\\xbd\\x6c\\x72\\xab\\xf1\\x3f\\x51\\x84\\x30\\x71\\x0f\\x59\\x7b\\x06\\x10\\x8f\\x65\\xb3\\x0a\\x48\\x34\\x96\\xe2\\xed\\x81\\xda\\xb1\\x0f\\xee\\x94\\x7f\\xe0\\x4b\\x54\\x85\\xf2\\xe3\\x07\\x40\\x49\\xd2\\x22\\x84\\x26\\x66\\x51\\xad\\x10\\xdd\\x08\\x6a\\xaa\\x5d\\x45\\x2e\\x0d\\x1a\\x61\\x12\\x9d\\x1e\\x77\\xc6\\x63\\xc2\\x6d\\x08\\x89\\x62\\xb5\\x54\\x56\\x45\\xb7\\xa1\\xa8\\x71\\x3d\\x51\\x32\\x7a\\x7a\\x35\\x9b\\x12\\xda\\xad\\xb8\\x5a\\x2c\\xd4\\xb5\\x41\\x0d\\x5c\\x20\\x26\\x7f\\xa7\\x66\\xb8\\xc4\\x2a\\x84\\xdc\\x42\\x66\\x45\\x88\\x87\\x9b\\x3e\\xae\\xfd\\x4c\\xc8\\xdc\\x69\\x3f\\x98\\xac\\x20\\x56\\x09\\xe5\\x70\\x66\\x5b\\x01\\xea\\x46\\x55\\xe3\\x94\\x29\\xa7\\xa7\\xe5\\x42\\xef\\xb4\\xf7\\x89\\x0d\\xbf\\x4e\\x34\\xc6\\xcf\\xf0\\x7e\\x4d\\x35\\xbd\\x3e\\xee\\xdf\\x5b\\x46\\x28\\x0f\\x4a\\x0d\\xa0\\xc2\\xe7\\x3c\\x94\\xea\\x81\\xcf\\xea\\xe7\\xf9\\xbd\\x04\\xfe\\x2d\\x45\\x97\\x65\\x00\\xf7\\xdc\\xac\\xb0\\xdf\\x2a\\x5d\\xc7\\x36\\xa8\\x23\\x67\\x1d\\xb6\\x79\\xbe\\x66\\xcb\\x33\\xc1\\x62\\xfd\\x2c\\x74\\xae\\x71\\xfb\\xf4\\xd2\\xb0\\x5a\\xf0\\x42\\xb3\\xa9\\x77\\xf5\\xb9\\x44\\xb9\\xfd\\xb6\\xc3\\x44\\x24\\x42\\x1b\\xcf\\x4f\\x62\\x23\\x76\\x84\\x28\\xfa\\x14\\x0f\\xd4\"},\n{{0x3e,0x63,0x73,0xb2,0x65,0xb9,0x67,0x89,0x00,0x7a,0xd2,0xa1,0x0c,0x30,0x9a,0x56,0x76,0x38,0xf2,0x55,0x87,0xd7,0x7e,0x28,0xb0,0x82,0x3a,0x4f,0x17,0x9a,0xe4,0xfe,},{0xa3,0x23,0x4e,0x5d,0x13,0xb0,0x34,0x72,0x16,0x50,0x36,0x40,0x4f,0x6d,0xe8,0x0e,0x70,0x28,0x39,0x50,0x0f,0x13,0xd9,0xc9,0x85,0xa0,0x77,0xd4,0x5c,0x69,0xff,0x45,},{0xf5,0x1e,0x0f,0x87,0x8a,0x5a,0x70,0x96,0x47,0xe8,0x5f,0xea,0x83,0x9f,0xd5,0x66,0xe6,0xf3,0x5c,0x8a,0x61,0x85,0xd0,0xc9,0xeb,0x13,0xe0,0xd5,0xb9,0xe6,0xe8,0xaa,0x95,0xc3,0x33,0xa8,0xf5,0x06,0x32,0xa4,0xd6,0x65,0x7b,0x51,0x8c,0xe4,0xcf,0xde,0x40,0xb8,0xf5,0xa0,0x5b,0x2d,0x9f,0x84,0x41,0xfc,0xc9,0xd2,0xd6,0x92,0xd5,0x09,},\"\\xb9\\xd0\\x68\\xbb\\xca\\xe7\\x72\\x2f\\x82\\x8b\\x0f\\x8c\\x98\\xa7\\x38\\xe3\\x6a\\x7d\\xf4\\xc9\\x97\\xc7\\x24\\xba\\x27\\x53\\x1a\\xf3\\x4a\\x2f\\x10\\x6c\\x75\\x13\\xa4\\x4a\\x46\\x1a\\x9a\\xa4\\x30\\x9b\\xc1\\x5c\\x4e\\x0d\\x42\\x75\\x91\\x93\\xea\\x1c\\xde\\xa9\\x56\\xbb\\x81\\x59\\x85\\xf5\\x78\\x67\\x14\\x5e\\x9e\\x2c\\x75\\x85\\xfc\\x8d\\x61\\x02\\x7e\\x47\\xd2\\xd7\\x35\\xe2\\x44\\x8a\\xf3\\x78\\x29\\x09\\x40\\x4e\\xde\\xaa\\xc0\\xfd\\x73\\xf6\\x04\\x5d\\xcd\\xb0\\x4f\\x03\\x77\\x75\\x8f\\x02\\x20\\x4a\\xae\\x3a\\x72\\x20\\x31\\x1c\\x0f\\x47\\x23\\x58\\x27\\x10\\xcc\\x44\\x0c\\x36\\xc9\\x58\\x7b\\x5c\\x9e\\xbc\\x40\\x63\\xfe\\xa8\\xca\\x3f\\x43\\x19\\x58\\x94\\xf7\\x9a\\x36\\x50\\x87\\x13\\x72\\x82\\x30\\x2d\\xbf\\x2e\\x7a\\x0d\\x41\\x1a\\xb5\\x8b\\x70\\x26\\xcc\\xde\\x19\\x88\\x69\\xaa\\x73\\x43\\x34\\xc0\\x52\\x38\\xe2\\x75\\xe3\\xc3\\xab\\x21\\x70\\x83\\x49\\x57\\x69\\xe2\\xfa\\xd3\\x74\\x05\\x14\\x52\\xd7\\xf5\\xb1\\xdb\\x0e\\x78\\x58\\x36\\xd4\\xbd\\x5e\\x29\\x78\\xa3\\xe9\\x91\\xaf\\x0f\\xf7\\x16\\xf4\\x38\\x89\\xa0\\x7f\\x5d\\xf2\\x99\\x60\\x36\\x21\\xc3\\x9e\\x2c\\xde\\xe0\\x89\\x98\\x5d\\x9e\\x6b\\xf7\\xb2\\xfb\\xd0\\x23\\x73\\xae\\x1b\\x5e\\x9b\\x88\\xf5\\xb5\\x4a\\x07\\x6e\\x67\\x6d\\x77\\x90\\xbf\\xc8\\xf5\\x7d\\xcc\\x59\\xef\\x52\\x85\\x0c\\xe9\\x92\\xa7\\x3b\\xa7\\xbc\\x99\\x1d\\xeb\\x4d\\xde\\x5e\\xb0\\xb2\\x16\\x70\\xb1\\xb3\\xd4\\xb6\\x4f\\x36\\xcc\\xa8\\xe3\\x07\\x09\\x85\\x68\\x49\\x7d\\x89\\x16\\xf6\\xb5\\xd0\\xe9\\xe8\\x9f\\x99\\xf8\\x60\\x06\\xf3\\x9b\\xd3\\xa8\\x10\\x76\\x9c\\x8f\\x78\\x01\\x77\\x3c\\x96\\x38\\xab\\xcf\\x5e\\x27\\x11\\xb1\\x9d\\x11\\x67\\x59\\x3a\\xcb\\xe8\\x5e\\x41\\x61\\x42\\x89\\x97\\xa2\\x19\\x4d\\xc5\\xe7\\xb7\\x64\\x0f\\x0d\\x2c\\x1e\\xb2\\x05\\x55\\x3b\\xe9\\x16\\x7f\\xfb\\xc2\\x2b\\x7c\\x2e\\x76\\x98\\xf3\\xaf\\xa1\\x07\\x54\\xcb\\x44\\xd4\\xb1\\xd4\\x5b\\x83\\x73\\x03\\xb1\\x66\\x90\\x73\\x41\\x5a\\x22\\x60\\x6b\\x50\\xf2\\x1f\\x82\\x65\\xe1\\x39\\xf2\\x30\\x5a\\xc0\\xe0\\x12\\x7a\\xe0\\x56\\xce\\x8a\\xbe\\xab\\xa2\\x0e\\x1d\\x26\\x9a\\x2b\\x2e\\x89\\x9c\\x49\\x54\\x72\\x68\\xa0\\x69\\x6a\\xe4\\x50\\xdc\\x02\\x67\\xf7\\xf6\\x3a\\x8e\\xdf\\x07\\x4c\\x47\\xd3\\xc2\\xdb\\x1d\\xa3\\x63\\x93\\x73\\x73\\x04\\xe6\\xdd\\x4f\\xac\\xcd\\xb6\\xab\\x55\\xe5\\xf8\\x52\\x0c\\x3d\\xff\\x5f\\x6b\\xea\\xc3\\x0b\\xa8\\x5b\\x86\\x08\\x23\\x51\\xe3\\xde\\xd8\\x40\\x0a\\xa5\\x7f\\x65\\x0c\\x0c\\x33\\x03\\x6d\\x65\\xb3\\x9b\\x7d\\x2f\\xb6\\x11\\x28\\x63\\xd5\\x9b\\x72\\x55\\x82\\x42\\xe8\\xb0\\x45\\xad\\xdd\\x35\\x7d\\xe6\\xfd\\x37\\xa8\\xf6\\x61\\x17\\x65\\xc9\\xb5\\xff\\x19\\xcc\\x4d\\xb7\\xe1\\x17\\xc6\\x5a\\x00\\x45\\x89\\x08\\xb0\\x24\\x5d\\x04\\xf7\\x90\\x8f\\xc7\\x3b\\x16\\x5d\\xff\\x6e\\x4b\\xe4\\xb4\\x20\\x32\\xd8\\xcf\\xd7\\xd6\\xf7\\x77\\x2c\\x1b\\xfe\\x72\\x1d\\x4b\\xcf\\xe2\\xfc\\x52\\x79\\x98\\xf3\\x4f\\xb4\\x41\\x8a\\x1f\\xae\\x1e\\x6c\\x37\\x67\\xc4\\xd0\\x78\\x06\\x21\\xf9\\x23\\xda\\x1f\\x0a\\x0d\\x3d\\x21\\x9c\\x03\\x6a\\xcf\\xd3\\x70\\x9d\\xad\\x4c\\xf2\\x4d\\x90\\xbc\\x69\\x1d\\x70\\x0e\\x6a\\x9c\\x80\\xcc\\xfd\\x10\\xbd\\xe8\\xe7\\x91\\xc0\\xfe\\xa8\\x28\\x80\\xc0\\x7b\\xaa\\xaa\\x31\\x1e\\xef\\x79\\x24\\x07\\x84\\xf6\\x28\\xa7\\xd2\\xa0\\x91\\x84\\xe0\\x16\\xf8\\x10\\x08\\xe7\\x74\\x29\\xa8\\x65\\x8b\\x15\\x3e\\x44\\xe7\\x9a\\x98\\xad\\x24\\x8f\\x7f\\xda\\x23\\xb5\\x90\\xd6\\x46\\xd7\\xc1\\xd8\\x41\\xf4\\x92\\x7d\\x6e\\x8b\\xc7\\x32\\x14\\xd1\\x0a\\x7f\\x3c\\x29\\xc8\\xf8\\x39\\xa8\\x90\\x8d\\x20\\xa7\\x4e\\x82\\x7a\\xf4\\x67\\xac\\x5a\\xbf\\x0f\\x1d\\x0e\\xd3\\x9c\\xdd\\xd9\\x69\\xdd\\xe9\\xee\\xb4\\xa4\\xb7\\x52\\x7a\\xb3\\xe2\\x47\\x5a\\x19\\x5e\\x24\\x47\\x4a\\x4e\\x36\\xb0\\x90\\x52\\xe2\\xda\\xd4\\xa5\\xeb\\x46\\x91\\xe2\\x63\\xb8\\xc6\\x1b\\xbd\\xe8\\x77\\x72\\x20\\x7e\\x01\\x1c\\x4c\\x1e\\x14\\x23\\x5f\\xb2\\x4e\\x4d\\xa4\\x38\\x87\\x5d\\x18\\x53\\x0f\\xef\\x90\\x26\\x19\\xdd\\x48\\x5d\\x77\\xb5\\x45\\xab\\xb5\\x6b\\x69\\xc7\\x55\\xaf\\xe7\\x58\\x60\\x69\\x71\\xab\\x97\\xdd\\x3a\\xce\\x1c\\x1a\\x34\\xa3\\x37\\x94\\xc8\\x15\\x6d\\xa7\\x99\\xe8\\x22\\x4d\\x88\\x5e\\x18\\x68\\xf9\\xcb\\x46\\x6d\\x80\\x2c\\x82\\x7c\\xc3\\xe1\\xec\\xd0\\xae\\x6e\\x0b\\x01\\xf8\\xf7\\x91\\xb1\\x22\\x08\\xfc\\xc0\\xfe\\xd3\\x85\\xb7\\x96\\xeb\\x2f\\x29\\x08\\xb5\\x8d\\x30\\xb3\\x73\\x3f\\x14\\x70\\xf2\\xe2\\xef\\x12\\xad\\x43\\xfe\\xb7\\x2d\\x08\\x16\\xde\\x3c\\x13\\xa8\\xb5\\xa5\\x23\\xe1\\x4c\\xdf\\x5f\\xf3\\x72\\x0b\\xf8\\x77\\x69\\xcd\\xe7\\x49\\x5d\\x22\\x6b\\xf3\\x82\\x38\\xa8\\x25\\xf7\\x5a\\x09\\xf6\\xbb\\x9a\\xfc\\xe5\\x16\\xa7\\xbc\\x70\\x11\\x43\\x70\\xbb\\xc4\\x0f\\x17\\xc7\\xbc\"},\n{{0xf5,0xe8,0x59,0x7e,0xac,0x0e,0xbf,0xa9,0xd3,0x85,0xde,0x85,0xa1,0xfb,0xaa,0x35,0x14,0x63,0x95,0xb1,0x34,0x57,0xb5,0xb1,0x4d,0x36,0x70,0xda,0xca,0x69,0x05,0xe7,},{0xce,0x93,0xe6,0x42,0xc2,0xf1,0x50,0x84,0xbc,0x83,0xba,0xfd,0xaa,0x19,0x67,0x63,0xde,0x2a,0x3c,0x51,0x3b,0x0e,0x44,0xf6,0x8d,0xdb,0xde,0x37,0x85,0x14,0xc4,0x41,},{0x57,0x65,0x43,0xfc,0x21,0xab,0x0a,0x7c,0x5f,0x63,0xb1,0xcf,0xf0,0x1b,0xf8,0x45,0xdf,0x91,0x79,0x2e,0x7a,0x97,0x50,0xc5,0x50,0x8b,0x51,0x66,0x5e,0x7f,0x89,0xf1,0x7c,0x6e,0xc3,0x35,0x5a,0x0a,0xed,0x87,0xdb,0x8c,0x77,0xbd,0xb2,0x71,0xfb,0xed,0xc7,0x14,0xff,0xad,0xb7,0x8b,0x5e,0x0f,0x97,0x81,0x16,0x77,0x1b,0xa7,0xcf,0x0b,},\"\\x27\\x33\\x41\\xf2\\x19\\xff\\x5c\\xf3\\x81\\xc7\\x7b\\x2d\\xd2\\x26\\xc5\\x8f\\x8f\\x33\\xc4\\x52\\x70\\x48\\xcb\\x00\\x6a\\xff\\xef\\x8c\\xee\\x15\\x1e\\x30\\x0e\\xfe\\xf6\\x29\\xfe\\xd2\\x1b\\x70\\x45\\x1f\\x72\\x92\\x92\\x62\\x7d\\x1f\\x3f\\x1b\\x52\\x57\\x35\\x9e\\xe5\\xa6\\x71\\xcf\\x62\\xae\\x57\\x32\\x49\\x40\\xf2\\xd0\\xb1\\x5a\\xac\\x76\\xff\\x39\\x82\\x20\\xc0\\x80\\x24\\xe2\\x9a\\x8c\\xf3\\x65\\x04\\xe1\\x2a\\x4e\\x96\\x43\\x8f\\x42\\xc3\\xda\\x0c\\x00\\x05\\x41\\xbc\\x11\\xf0\\x91\\x38\\x1b\\x0b\\x72\\xb5\\x8a\\x92\\x08\\x3f\\x44\\x6e\\xca\\x19\\x91\\x99\\x68\\x78\\xde\\x35\\x08\\x1c\\xc4\\xab\\x90\\x95\\x8c\\x96\\xcf\\x5c\\x99\\x79\\x6c\\xba\\x79\\x51\\xee\\x18\\x6f\\x26\\x52\\x7a\\xed\\xe6\\x9d\\xb3\\x04\\xce\\x29\\x41\\xba\\x15\\xcc\\x00\\xba\\x2f\\x14\\x11\\xf2\\x08\\xda\\xd4\\x5e\\x87\\xbc\\xf6\\x38\\x79\\x2d\\xe0\\xa6\\x86\\x24\\xb6\\x67\\x29\\x7c\\x27\\xa3\\x43\\xdb\\x4b\\xaf\\x34\\xa0\\x22\\x8e\\xaf\\x0d\\x10\\x22\\x00\\x9b\\x5d\\x06\\x8b\\x25\\x34\\xd9\\x20\\x30\\x2e\\x71\\x31\\x0f\\xeb\\xf0\\xdf\\x1b\\xb0\\x2c\\x2e\\xf0\\xad\\x1a\\xe1\\x49\\xde\\xad\\xf8\\xc1\\x84\\x37\\x3c\\x0f\\x7e\\xb6\\xb2\\x56\\x95\\xbe\\x82\\xd1\\x2c\\x71\\xb6\\xc8\\x32\\x67\\xd9\\xa2\\x33\\x66\\x7e\\x77\\xbc\\x20\\x59\\x83\\xf8\\xb8\\xd8\\x77\\xd8\\x5a\\xea\\xd3\\xf6\\x0e\\x82\\x0f\\xfc\\xb1\\x7a\\xdd\\xdd\\x92\\xa7\\x71\\x2b\\xbe\\xb3\\x4e\\xe7\\x19\\x66\\xda\\xfd\\x99\\x07\\xd1\\x93\\xdd\\x9d\\x72\\x5a\\x31\\xa6\\x13\\xd2\\x9e\\x32\\xbe\\x72\\x13\\x28\\x08\\x92\\x6d\\x94\\x37\\x47\\x7f\\xee\\x25\\xed\\xa6\\x10\\xae\\xb1\\xdc\\xe1\\x2e\\xa3\\x16\\xc6\\xae\\xc6\\x68\\x9e\\x50\\x1c\\x55\\x19\\x23\\x82\\x5a\\x34\\xb4\\x2c\\x4f\\x06\\x75\\xb8\\x6a\\xb2\\x6a\\xde\\xea\\x2e\\x60\\xda\\xe6\\xc6\\xd1\\xcd\\xd0\\xcb\\x3c\\x34\\x7b\\x16\\x38\\x40\\x39\\xa8\\xe3\\xfd\\x60\\x87\\x38\\x13\\x87\\xcb\\x4b\\xc7\\x2d\\xdb\\x5f\\x25\\xb3\\x74\\x85\\x9b\\x02\\xe5\\xbb\\x1b\\xa0\\x6d\\x3c\\xc6\\x9e\\xc4\\x4c\\xec\\x4b\\x98\\x5c\\x84\\x76\\xe3\\x50\\x32\\xe9\\x9a\\xbf\\x00\\x1a\\x1d\\x44\\xdd\\xc6\\xe2\\x88\\x9c\\x3c\\x2c\\x3e\\xca\\xce\\xd6\\x09\\xb2\\xb2\\x68\\x0e\\x00\\xb1\\xef\\xa7\\xe9\\xd2\\x6d\\x62\\xf2\\xb3\\xab\\x36\\xf9\\x21\\x04\\x47\\x90\\xab\\xbd\\x49\\x36\\x07\\x56\\xdc\\xff\\xcc\\xf2\\x30\\xf6\\x6d\\xbb\\x70\\x1a\\xa1\\x64\\xda\\xd6\\x06\\x9a\\xa2\\xb8\\xb3\\x30\\x9f\\x2f\\xe4\\x4d\\x5e\\x0b\\x25\\xbd\\x55\\x64\\x31\\xf0\\xdf\\x4c\\x2e\\xa9\\x7a\\xe7\\x9e\\xd4\\xa5\\x75\\x78\\xd6\\x6f\\xc6\\x93\\x9c\\x57\\x62\\x8a\\x90\\xca\\xc9\\x7a\\xdf\\xa8\\x70\\x2a\\x4a\\x1c\\x89\\x65\\xba\\x1a\\x90\\x26\\x25\\x67\\x28\\x66\\x64\\x00\\x30\\x03\\x53\\x3c\\xc9\\x31\\x4c\\xaf\\x7d\\x3b\\x98\\x2e\\x0a\\x43\\x2f\\xf5\\xaa\\x4e\\xd5\\x74\\x19\\x83\\xd9\\xb5\\x43\\x23\\xac\\x7e\\x29\\x9b\\x2b\\x49\\x56\\xc1\\xa2\\xc1\\x91\\x55\\x7b\\x27\\xd8\\x6b\\xe7\\x14\\xb5\\xb6\\x8f\\xcb\\x1d\\x41\\xf7\\x8c\\xa5\\xdd\\xb6\\xb5\\x3b\\x3d\\xfc\\x8e\\x7d\\x6b\\x3c\\x3d\\xb0\\x59\\xaf\\x9f\\x2d\\xd7\\x65\\xef\\x04\\xb6\\xd1\\x6e\\x67\\x37\\xc7\\x27\\xaa\\x11\\xf3\\xdf\\x37\\x74\\xa3\\xfc\\x96\\x18\\x2e\\x28\\x2a\\xcc\\x3d\\x23\\x3e\\xea\\xbf\\x8c\\x72\\xd3\\xf2\\x46\\xae\\x18\\x45\\x05\\x28\\x8f\\xef\\x39\\xb3\\x67\\x66\\xb1\\x0d\\xd1\\xbf\\xbf\\xbf\\xa7\\x0f\\x97\\xb3\\xc9\\x01\\x72\\x6d\\x1e\\x0d\\x0a\\x83\\x7d\\x11\\xf0\\x12\\x3a\\x34\\xab\\xad\\x1a\\x79\\xaa\\xbe\\x80\\xb1\\x25\\xb1\\x28\\xee\\x16\\x0b\\x51\\x18\\x48\\xf7\\xf0\\x4c\\x49\\xc8\\xd5\\xc2\\xf2\\x04\\x1d\\xa7\\xd9\\x59\\x9c\\x29\\xb1\\xda\\xc8\\xc6\\x80\\x77\\xef\\xac\\x3e\\xca\\x58\\xbb\\xc1\\x63\\x7a\\xad\\xce\\x21\\xc7\\x74\\xfe\\xa4\\x2d\\x2b\\xcf\\x4a\\x0b\\x98\\x92\\x30\\x7e\\x36\\xfa\\x25\\x0a\\xce\\xe7\\x95\\xad\\x2b\\xfe\\xcf\\xbf\\x60\\x31\\x9b\\x81\\x66\\x3e\\x2a\\x26\\x57\\x19\\x46\\xf7\\x5a\\x8d\\x96\\x9a\\xf1\\x6b\\x3b\\x57\\xc3\\xec\\x3e\\x66\\x15\\x8a\\xaf\\x42\\xcc\\xf5\\xe5\\x8b\\x93\\x7a\\xae\\xf6\\x13\\x31\\x86\\x06\\x60\\x33\\x17\\xe5\\xaa\\x31\\x8b\\xe7\\x0f\\x8d\\xa3\\xc0\\xc1\\x6b\\xe6\\xc2\\x9e\\x3e\\xc9\\xfe\\xf4\\xe4\\x6e\\x8c\\xa2\\x41\\xd9\\x41\\xd5\\x80\\x49\\xa0\\x63\\xd9\\x0a\\xfc\\x95\\x3c\\xa3\\x2e\\x8a\\x50\\xa6\\x47\\x36\\x32\\x58\\x8a\\xc4\\x1e\\xae\\x97\\xf2\\x0c\\xe9\\xb7\\x41\\xed\\x41\\xc9\\xa4\\xaa\\x65\\x51\\xfd\\x82\\x3c\\xe0\\xc8\\x11\\xa5\\xbb\\x5a\\x17\\x1c\\x1e\\xa4\\x23\\x8a\\x02\\x46\\x81\\x1e\\x46\\x9c\\xf4\\x98\\xb7\\x96\\x21\\xc3\\x23\\xeb\\xa7\\x98\\x53\\x44\\xfe\\x11\\xe6\\x74\\x99\\xed\\xf4\\x96\\x74\\x91\\xaa\\x74\\x9f\\x8f\\x3f\\xe3\\x99\\x61\\xd7\\x68\\x92\\xc9\\x3a\\xac\\x3b\\x19\\xfa\\x4b\\x4f\\xc1\\x74\\xd7\\xd4\\xd4\\xd8\\xbd\\x6e\\xe4\\x75\\x47\\x50\\x08\"},\n{{0xcd,0xad,0xc5,0xb8,0x9c,0xb2,0xb6,0x30,0x8a,0x00,0x6f,0x2f,0x4e,0x95,0x5a,0x91,0xaa,0xf3,0xba,0x70,0x16,0x5f,0x2d,0x44,0x4e,0xf1,0xff,0xeb,0xbd,0xaa,0xa2,0x21,},{0x05,0x41,0x41,0x5f,0xf5,0x46,0x7f,0x28,0xce,0xac,0x83,0x9b,0x13,0xa1,0x76,0x6e,0x72,0xc9,0x9e,0x65,0x45,0x20,0x7d,0x9d,0x5d,0x96,0x97,0x41,0x1e,0xb6,0xbc,0xa7,},{0xff,0xed,0xe7,0x01,0xeb,0x18,0x29,0xce,0x23,0x61,0xcd,0xa2,0xc8,0xbb,0x63,0x33,0x85,0x39,0xd8,0xad,0x2f,0x66,0x77,0x58,0x55,0x31,0xe7,0xbf,0x1d,0x39,0x22,0x38,0x26,0x79,0xa1,0xae,0x84,0xff,0xeb,0x75,0x3f,0xc9,0x75,0x4e,0x50,0xc0,0x18,0x52,0xf9,0x55,0xe3,0xfd,0x60,0x9f,0xf6,0x4b,0xf0,0x5b,0xbe,0x70,0x75,0xcd,0xbe,0x00,},\"\\x91\\x17\\x27\\x03\\x6d\\xb3\\x09\\xd6\\xe2\\xe3\\x36\\x9e\\x4f\\x17\\xd9\\x8d\\x99\\xec\\x07\\x0c\\x33\\x28\\x3b\\xb1\\x24\\x4e\\xfd\\x62\\xe7\\x6b\\xd7\\x0a\\x69\\xb9\\x72\\x3b\\xd2\\xb5\\x20\\x47\\x2b\\x98\\xaa\\x06\\x59\\x24\\x36\\x6d\\xe7\\x80\\x90\\x0b\\xcd\\x8b\\x77\\xb5\\x0f\\x87\\xc3\\xc3\\x61\\x87\\x02\\x4b\\xbc\\x59\\xcc\\xf4\\x48\\x2c\\x7b\\x4a\\xad\\xb5\\x6e\\x2e\\x5e\\xcc\\x00\\x03\\xd9\\x89\\xd6\\xaf\\xc6\\x3e\\xc1\\x02\\x42\\xe5\\x74\\x82\\xfe\\x39\\x21\\x52\\x61\\xd5\\xfc\\x95\\xa0\\x18\\x5f\\x95\\xe9\\x54\\x0c\\x55\\xf7\\x4d\\x69\\x60\\x48\\xbc\\xa7\\xab\\x11\\x26\\x81\\xa5\\x55\\x8e\\xa9\\x3c\\x3b\\x1f\\x1c\\xd3\\x64\\x65\\x9e\\x94\\x33\\xce\\xee\\xbe\\x05\\x4e\\xe7\\x13\\xc4\\x77\\x60\\xd7\\xad\\x13\\x2a\\x7f\\x3f\\x8f\\xe3\\xd5\\x04\\x1b\\x81\\x1a\\x26\\xb6\\x5e\\xfb\\x1f\\x34\\x0e\\x18\\x1a\\x4e\\xc7\\x20\\xea\\x13\\x6b\\x3a\\xf3\\xd9\\xe5\\x46\\x1d\\xd2\\x43\\x70\\x33\\x6f\\x10\\xe6\\x35\\x4c\\x8c\\x17\\xac\\xf9\\x99\\x85\\x44\\xce\\xc0\\x87\\x3e\\xfa\\x68\\x7c\\xb1\\x32\\xae\\xcf\\x70\\xae\\xbb\\xc5\\x67\\xba\\x03\\xc5\\x36\\x49\\x9e\\xf9\\x6c\\xc8\\x41\\x2e\\x7a\\xaa\\xd5\\xbf\\x96\\x42\\x2b\\xe4\\x7c\\xb9\\x41\\x36\\x45\\xdf\\x2c\\x17\\x03\\x19\\x23\\x47\\xdc\\xbb\\x12\\x31\\x27\\x45\\x59\\x71\\xae\\x15\\x7e\\x9f\\xa2\\xdb\\xff\\x88\\x74\\x5a\\x96\\xc6\\x58\\xb8\\x65\\xe4\\x1f\\x55\\xae\\xbf\\x98\\x39\\x50\\x05\\xdd\\xcb\\xd5\\x98\\x3e\\x6a\\xe0\\x2c\\x4f\\xbb\\x5e\\x17\\x91\\x67\\x96\\x32\\x5f\\x76\\xed\\xf5\\xb6\\x4a\\xfa\\x4e\\xc5\\xa7\\x41\\x8a\\xfe\\xd2\\x3a\\x97\\xef\\xad\\xe6\\x8b\\x6a\\x5b\\x31\\x45\\xf0\\x8a\\x5d\\x3d\\xb9\\xc2\\x98\\xa5\\x12\\xfa\\xbd\\xac\\x68\\x56\\x2b\\x3f\\x55\\x37\\x7f\\xf4\\x4b\\x00\\xc1\\xc2\\xf3\\xef\\xd1\\x81\\x32\\xda\\x71\\xf9\\x71\\xa9\\x53\\xa9\\x31\\x8c\\x57\\x52\\x33\\x61\\xa1\\x60\\xf9\\xb7\\xe3\\xb5\\x1c\\x52\\x4e\\x95\\xdd\\x5e\\xf4\\x56\\x8e\\xf1\\x8a\\x80\\x07\\x75\\xe9\\xd2\\x6e\\x07\\x13\\x19\\x42\\xd2\\xbe\\x4e\\xf2\\x2c\\x0c\\xbc\\x13\\xdf\\x01\\xc6\\x8b\\x1b\\xcd\\x3b\\xce\\x9b\\xd5\\x1c\\x4c\\xed\\x65\\x2a\\xdc\\x40\\x07\\xbe\\x43\\xb3\\x7c\\x67\\xa5\\xc5\\x5e\\xd4\\x02\\x9e\\x8a\\xd1\\x5d\\xef\\x83\\x05\\xc9\\x68\\x62\\x1a\\xed\\x4c\\xd4\\xbf\\xe0\\x79\\xa6\\xf4\\x88\\x84\\xd8\\x56\\x80\\x39\\x2c\\xa9\\x2b\\xa6\\xe1\\x2f\\xea\\x6f\\x4a\\x05\\x6f\\x79\\xd6\\x7b\\x19\\xb0\\x5f\\x90\\xd6\\x84\\xbe\\x7d\\x45\\x72\\x5f\\x79\\x67\\xc6\\xa4\\x67\\xaf\\x43\\xb8\\x6a\\x6b\\x1b\\x9d\\x9e\\xed\\x3a\\x42\\x48\\x97\\x1c\\x76\\xa7\\xac\\x29\\xc2\\x92\\xdf\\xba\\x4d\\x75\\xc5\\xf7\\xba\\x70\\x9a\\x39\\x05\\x8e\\x96\\xad\\xf6\\xdb\\xd7\\x60\\xd3\\xce\\xf4\\x02\\x4b\\xf3\\xed\\xc4\\x41\\xef\\xbf\\x11\\x47\\xa2\\xc1\\x08\\xbd\\x6f\\x9e\\xb4\\x39\\xc1\\xc5\\xc4\\xd3\\xa6\\xea\\x4e\\xc3\\xd9\\x2c\\xef\\x38\\x13\\x61\\x88\\xbe\\xc9\\xe0\\xb6\\xc0\\x51\\x8d\\x8b\\x79\\xba\\x59\\xc5\\xdc\\xba\\x39\\x3a\\xed\\xfd\\xff\\xb0\\xb7\\x0d\\x77\\x9c\\x2b\\x97\\x65\\xce\\x44\\x52\\xe7\\xe3\\xb0\\x8c\\x44\\x02\\xb1\\xa6\\x08\\x32\\x08\\x40\\xfb\\xe9\\x6d\\x1e\\xb8\\x65\\x6e\\xb1\\xc2\\x0d\\x95\\x51\\xdd\\xf5\\x33\\xb9\\xf1\\x5e\\x4e\\xb5\\x78\\x37\\x56\\xc5\\x3d\\xdd\\x3b\\x14\\xd8\\x07\\xf8\\x38\\xac\\x96\\x80\\xf8\\x9f\\x1a\\xdf\\xb7\\x8d\\x68\\xcc\\xb0\\x67\\x31\\xa9\\x0b\\xea\\xc5\\xf0\\xd7\\x09\\xd5\\xb8\\x8c\\x75\\x43\\x7a\\x66\\x3c\\xb9\\x62\\xd3\\x7f\\x96\\xb8\\xe8\\x92\\x84\\x77\\xb5\\x61\\x12\\x28\\x01\\x5d\\x33\\x7f\\x04\\x9e\\x8b\\x62\\xe4\\xdf\\xf8\\xd0\\xbb\\x6c\\xda\\x24\\xa5\\xdf\\x90\\x83\\xe3\\x48\\xbe\\xf1\\x25\\x85\\xf5\\xf4\\xc4\\xd3\\xbb\\x3c\\x7e\\x78\\xd5\\x50\\x19\\x4a\\x45\\x25\\x1a\\x08\\x79\\xa1\\x62\\x4b\\xf9\\xdd\\x35\\xeb\\x65\\x5c\\x39\\x39\\xfe\\xa8\\x90\\x9f\\x6d\\xf3\\x95\\xbe\\xbd\\x02\\xb6\\x8a\\x17\\xa8\\x97\\xc9\\xaa\\xdd\\xd6\\xe2\\xe2\\x04\\x61\\xe3\\x03\\xf5\\x7c\\xde\\xb0\\x0a\\xe0\\xf2\\x3e\\x60\\xa9\\x4c\\x19\\xc7\\x71\\xd8\\xaa\\x60\\x53\\x3b\\x93\\xce\\xdc\\x1b\\x76\\xd2\\x29\\x0a\\x01\\xbf\\x43\\xb2\\x72\\x5f\\x12\\x5b\\xef\\xa5\\x75\\x15\\x4e\\x98\\x6c\\x9c\\x62\\x05\\xa1\\x59\\x6c\\xba\\xa2\\xd1\\x34\\x70\\xc2\\x34\\x22\\xf2\\xdf\\x7b\\xec\\xe4\\xe6\\xeb\\xd7\\x52\\xe9\\x38\\x9a\\xe6\\x08\\x57\\xb5\\x29\\x69\\xd2\\xdd\\xef\\xa9\\xc0\\x34\\xf1\\xbf\\x35\\xae\\x33\\x16\\x30\\x4e\\x94\\x9c\\x89\\x90\\x82\\x0e\\x26\\xe6\\xcf\\xfa\\xe4\\xb3\\x88\\xd1\\x50\\x5f\\x92\\x37\\x06\\x29\\x7f\\x8d\\xb5\\x56\\x53\\x79\\x19\\xeb\\xbe\\x30\\x86\\x02\\x3f\\x12\\xf4\\xde\\xd3\\xb1\\x1a\\xcf\\x2a\\x6d\\x97\\x3d\\xdd\\x8e\\xb2\\x7b\\x07\\xc5\\x80\\xbf\\x44\\x8c\\xaa\\x5a\\x2e\\xa1\\x16\\xc5\\xea\\xf3\\x6f\\x7a\\x6b\\x17\\xa8\\x5b\\x39\\x55\\xdc\\x8a\\x44\\xa6\\x20\\xd8\"},\n{{0x2d,0xdd,0x79,0xe7,0x60,0x64,0xc2,0xe6,0xb3,0x22,0xaf,0xb0,0xc5,0xc6,0x85,0xcd,0xbe,0xc6,0x28,0x21,0xcd,0xfc,0x0c,0xb1,0x4d,0xb7,0xd0,0x1b,0xa3,0xbf,0x21,0xa5,},{0xf5,0x5b,0x4a,0xb6,0x4a,0x25,0x82,0x21,0x2b,0x96,0xcc,0xac,0x06,0x40,0xe2,0x71,0x94,0x4a,0x34,0xa2,0x86,0xd0,0x35,0x83,0x30,0x45,0x81,0x0e,0x34,0x18,0x24,0xbb,},{0xa4,0xc3,0x96,0xe1,0x9d,0xd4,0x2e,0x03,0x91,0x84,0xcd,0x25,0x11,0x88,0xff,0xa2,0x45,0xf0,0x36,0x7c,0x69,0xc0,0x2d,0x12,0x47,0x4e,0x5c,0xa9,0xe5,0xc7,0x68,0xa7,0xee,0x3a,0x3d,0x47,0xeb,0x22,0xd1,0xac,0x9e,0x04,0xb7,0x04,0xa7,0x4f,0x41,0x69,0x47,0xf3,0xf4,0x9a,0x32,0x42,0x59,0x4e,0x7b,0x63,0x90,0xe8,0x2b,0x60,0xd5,0x05,},\"\\xa5\\x66\\x74\\xa1\\xe1\\xf0\\x97\\x95\\x25\\x1a\\xbe\\x54\\xab\\x43\\xc2\\x98\\x20\\x8f\\xef\\xc9\\xbb\\x91\\x76\\xfd\\xb2\\x3e\\x1e\\x9f\\x60\\xf0\\x32\\x64\\x79\\x15\\x56\\x7e\\xbd\\xcc\\x2b\\x86\\x9e\\xdb\\x70\\x55\\xf4\\xab\\xa6\\x7e\\xcf\\xe7\\xfa\\x19\\xed\\xa4\\x5c\\x06\\x04\\x7c\\x7a\\x51\\x84\\x8b\\xe9\\x97\\x32\\x51\\xf8\\x5f\\xf7\\x6f\\x1c\\x59\\xe3\\x65\\x43\\x82\\x85\\x8c\\x9b\\xe1\\x23\\xdb\\x8a\\x94\\x90\\xc6\\xc9\\xb3\\x09\\xb8\\x2d\\x1e\\x2c\\xa6\\xf4\\xa0\\x7d\\x00\\x12\\x02\\x83\\xc6\\xc2\\x95\\x64\\x49\\x95\\xa9\\x66\\x28\\x61\\x2b\\x8d\\x67\\x91\\x57\\x35\\x18\\xe2\\x55\\x6a\\x68\\x8a\\x09\\xf1\\x49\\xbc\\x84\\x6a\\x68\\xbd\\x0e\\xf7\\x92\\x79\\x03\\x57\\x10\\x03\\x1e\\xf0\\xa8\\xfe\\xd1\\xdd\\x0b\\xf0\\x26\\x12\\x5d\\xc6\\x64\\x8f\\x86\\xf6\\x43\\x09\\x94\\x2e\\x18\\xf2\\x3b\\x12\\xd1\\xdc\\x68\\xc6\\xf2\\x77\\x0c\\xa8\\xb5\\x48\\x5b\\x36\\x9b\\x0c\\x92\\x00\\x7a\\x94\\x61\\xc1\\x39\\xfc\\xbb\\x41\\x17\\x5f\\x31\\x6d\\x44\\x67\\x06\\x0a\\xb4\\x3d\\x12\\x22\\xf5\\x80\\x24\\x04\\xbf\\x63\\xc2\\xdf\\x7e\\x00\\x4b\\xdc\\x40\\x0c\\xa8\\x0f\\xe0\\xd2\\xcb\\x68\\xa2\\x10\\xfb\\xc3\\xfc\\x0b\\x90\\x32\\x09\\xd5\\x47\\x6e\\x7a\\x56\\xba\\xef\\xb8\\xfa\\xd7\\xf3\\x28\\xb7\\x2f\\x32\\x71\\x13\\xe1\\x39\\x41\\x4b\\xa6\\xf3\\x4e\\x99\\xc2\\xec\\xcd\\xe0\\x44\\xe7\\xa3\\xac\\x70\\xc5\\x80\\xcd\\x26\\xc7\\x45\\x01\\x92\\xca\\x4c\\x82\\x3c\\x7a\\xc5\\xea\\xe8\\x76\\xc0\\xd1\\xc8\\xc7\\x68\\xc1\\xcb\\x0b\\x7e\\xa4\\x1f\\xc9\\xb7\\xd2\\x94\\x37\\xbb\\xad\\xab\\x18\\xe0\\xf5\\xed\\x1d\\xef\\xe0\\xcf\\x6c\\x0e\\xba\\xa6\\xb6\\xd7\\x77\\xf4\\xda\\xd9\\xab\\xdd\\xbf\\xc0\\xfd\\x6a\\xb5\\xee\\xea\\x80\\x3c\\xfa\\x01\\xc0\\xbd\\x46\\xf6\\x5f\\xef\\xa4\\x69\\x01\\xab\\xbe\\x0d\\x89\\x10\\x4e\\x3b\\xc4\\xae\\xe1\\xf0\\x59\\x9c\\x69\\xb6\\x7b\\xa5\\x45\\xab\\x9b\\x54\\xf5\\xde\\xe3\\x40\\xac\\x69\\xd8\\x82\\x99\\xe8\\x68\\x22\\xac\\xdd\\xdd\\xce\\x60\\x11\\x22\\x01\\x2f\\x99\\x29\\x97\\x74\\xaa\\xf1\\x7c\\x96\\x4e\\xde\\xcb\\x95\\xe1\\x27\\x7d\\x46\\x2d\\xe6\\x4e\\x91\\x15\\xa6\\x1a\\xd9\\x8a\\xa3\\xd2\\x2e\\x3b\\xa6\\xf8\\xf1\\xcd\\x69\\xb6\\xb5\\x2b\\x83\\x38\\x28\\x23\\xf3\\x0e\\x96\\x6b\\xda\\xd1\\xff\\x5f\\xc1\\x98\\xae\\x32\\xe9\\xb6\\x80\\x55\\xd4\\x39\\x2b\\xc7\\xc3\\xdf\\x10\\x15\\xf1\\x28\\xae\\xe1\\xe4\\xfa\\x3d\\x49\\x99\\xe3\\x29\\xf2\\x2f\\x0f\\xf6\\xaa\\x77\\x8b\\xae\\x02\\x94\\xa1\\xdf\\x74\\x36\\xcb\\x16\\xa2\\xbf\\xcd\\x74\\xb4\\x63\\xab\\xe7\\xcb\\x4b\\xac\\x53\\x62\\xc8\\x9c\\x9d\\x1a\\x37\\x8a\\x2c\\xb8\\x85\\xcc\\x3b\\x26\\xab\\x4b\\xe8\\x81\\xef\\x1a\\xfc\\x14\\x43\\x0e\\x10\\xd2\\x65\\x39\\xca\\x35\\x8c\\x36\\x76\\x28\\x6a\\xd8\\x1c\\xe1\\xc9\\xe7\\x85\\x92\\xaf\\x66\\xf1\\x82\\xbb\\x1f\\x7f\\x86\\x2f\\xe7\\x55\\xbf\\xfb\\x5b\\xe5\\xc5\\xf2\\xb7\\x31\\xc1\\x32\\xe2\\x38\\x8a\\x76\\xa1\\xa7\\xb1\\xcd\\xdf\\x05\\xae\\xd2\\xac\\x9e\\xc4\\x08\\x47\\x52\\x71\\x94\\x2c\\xca\\xdd\\x32\\xe4\\x9d\\x87\\x91\\xed\\xf8\\xb8\\xde\\x11\\x75\\x51\\xce\\x26\\x4a\\x60\\xb8\\x41\\x05\\xea\\xe8\\x7e\\x66\\xf6\\xa4\\x01\\xd1\\x32\\x2b\\xb2\\x1a\\x98\\xe8\\xac\\xd2\\x77\\x49\\x32\\x54\\xe5\\x04\\x00\\x4f\\x72\\xc7\\x6e\\x79\\x03\\xd2\\xfa\\x38\\xfa\\xb7\\x17\\xe9\\x4c\\xe6\\x27\\x94\\x7c\\x4e\\xa3\\x26\\xbd\\x25\\x75\\xc3\\x73\\x10\\xf3\\xb4\\xd8\\x43\\xb9\\x0f\\xa7\\x7d\\x32\\xd9\\x95\\x21\\x94\\x15\\x0b\\x62\\xf8\\x50\\x18\\x7a\\x4f\\xdf\\x38\\x46\\x6d\\xfa\\x06\\x56\\xc0\\xa2\\xe0\\xb3\\xf0\\x74\\x92\\xac\\x8e\\x37\\xe5\\xd0\\xdf\\x95\\xcc\\x89\\xdf\\x30\\x85\\xa2\\x69\\x29\\x1d\\xc2\\x51\\x22\\x10\\xd3\\xfe\\x44\\x24\\x8d\\x7a\\xb9\\x96\\xbe\\x09\\x9a\\xf6\\x4c\\x22\\x75\\x66\\x66\\xf8\\xde\\xa5\\x6c\\x00\\xb9\\x06\\x77\\xd1\\x18\\x25\\x00\\xdd\\x27\\x4f\\xd0\\x76\\x92\\x53\\x82\\x6d\\x67\\x7a\\xb1\\x6a\\x55\\x7b\\x08\\xb3\\xc5\\x22\\x65\\x49\\x8d\\x85\\xc4\\xcb\\x2b\\x60\\x0e\\xe0\\x48\\x1b\\x7c\\x1c\\x47\\x6a\\x9d\\xaa\\x8b\\x88\\xc7\\x1f\\xc2\\x1b\\x6f\\x89\\xbf\\xdf\\xec\\xe5\\x8d\\xa9\\xe8\\xd5\\x65\\x65\\x2e\\x43\\x95\\xbd\\xf4\\xc8\\x11\\xb4\\xf4\\xf2\\x2d\\x2b\\x96\\x13\\x26\\x1f\\x88\\xc6\\x04\\xc2\\x97\\x4d\\x3e\\x97\\x7d\\x14\\x0d\\x04\\x6e\\x1b\\x66\\x25\\xb7\\x07\\x16\\x40\\xd3\\x52\\xcb\\x7e\\x7e\\x65\\xd4\\x6c\\x61\\x34\\x47\\xbe\\x8d\\xc5\\xa2\\x00\\xaa\\x9a\\xca\\xb4\\x6a\\xfc\\xcf\\xeb\\xb6\\xb1\\xc3\\x19\\x73\\x24\\x6c\\x34\\xfa\\xaf\\x8d\\x26\\xea\\x5e\\x83\\xbe\\x15\\x71\\x8f\\x8f\\xdb\\x0c\\xfc\\x44\\x4e\\x2e\\xb6\\x0f\\x36\\x59\\xb0\\x20\\x16\\x1c\\x22\\x8e\\x6b\\x92\\x40\\xb7\\xac\\x39\\x4c\\xab\\x81\\x2d\\xe1\\x05\\x15\\x76\\x6f\\x22\\x47\\x3e\\xcc\\xa5\\x35\\x59\\x4c\\xe5\\x28\\xa5\\x7c\\xf5\\xda\\xb2\\xeb\\x32\\xab\\x84\"},\n{{0x3a,0xbb,0xdb,0x0b,0xa1,0x1a,0xa1,0x06,0x3b,0xd2,0x6b,0x02,0xc1,0x16,0x03,0x78,0x62,0x28,0x5b,0xab,0xd2,0x15,0xd2,0x40,0xbc,0x9c,0x09,0x26,0xf4,0xec,0xea,0x81,},{0xb8,0xfc,0x59,0x43,0x8f,0x8c,0xe9,0xe3,0x78,0x5a,0x47,0x3b,0x22,0xc8,0x89,0x2c,0x51,0xea,0xc2,0x56,0x8c,0x68,0x1d,0xcc,0x77,0xb6,0xf0,0xe0,0x79,0x9c,0x4e,0x33,},{0x98,0x1f,0x20,0x05,0x5a,0x45,0x75,0x25,0xae,0xe5,0x61,0x62,0x64,0xe6,0xaf,0x42,0xe8,0xb3,0x87,0xcb,0x08,0xf8,0xb4,0xa7,0x3f,0x9b,0xe0,0xb3,0x66,0xf1,0x03,0x5b,0xb3,0x0a,0x1c,0x87,0x48,0x94,0xcb,0xec,0xe0,0xa8,0x46,0xd8,0x49,0xb7,0xec,0xc5,0x56,0x58,0x5d,0x0d,0x3d,0x39,0x56,0x45,0x80,0x7f,0xf2,0xa3,0xca,0x5a,0x59,0x0c,},\"\\xdc\\xcd\\x55\\xf9\\x22\\xcd\\x27\\x4f\\x69\\x75\\x00\\x0a\\xdc\\x8d\\x98\\x63\\x0c\\x6d\\x75\\x2c\\x12\\x02\\xa9\\xdd\\x12\\x10\\x48\\xb9\\x39\\x45\\xaf\\x2b\\x11\\x10\\x96\\x77\\x88\\xf9\\x9e\\xc0\\x28\\xe3\\xd3\\xb4\\xcf\\x82\\xfb\\x07\\x17\\x3e\\xa4\\x40\\x1e\\x3b\\xb4\\xb0\\x7b\\x7b\\x0b\\x24\\xb0\\x59\\xa7\\x66\\x33\\x95\\x32\\xd9\\xdf\\x3e\\x31\\xb7\\x2c\\x95\\x8c\\x11\\x9d\\x8d\\xfa\\x15\\xa5\\x07\\xaf\\x6c\\x5f\\x7e\\x78\\xfe\\x27\\x0f\\xa8\\x1b\\x9d\\xf0\\xf2\\xe4\\xaf\\x24\\xbd\\x99\\xfb\\xeb\\x14\\xe0\\x03\\x30\\x84\\xd7\\xfb\\xf8\\x4d\\xde\\xdf\\xd5\\xce\\x56\\x75\\x1d\\x15\\x90\\x84\\x75\\xdf\\x8a\\xf0\\x13\\xd0\\x91\\x17\\x3c\\x13\\x86\\xb9\\x13\\x94\\x26\\xcc\\x60\\x81\\xea\\x16\\x5b\\x8c\\xe4\\x81\\x94\\xb8\\xe1\\x8a\\x9b\\x91\\xa4\\x63\\x13\\x44\\xfe\\x29\\xc8\\xe7\\x28\\x18\\xb7\\x1f\\xa1\\x5c\\x92\\x92\\xd1\\x3f\\xdf\\x5f\\x9d\\x18\\xe2\\x9b\\xd0\\x29\\x1b\\x81\\x38\\xde\\x73\\x8f\\xd3\\xa3\\x6c\\x35\\x23\\x90\\x22\\x36\\x8b\\x45\\x6f\\x1f\\xac\\xba\\x90\\xa0\\xd8\\x0d\\x6e\\x31\\x1c\\x5f\\x6c\\x6f\\x04\\x67\\x7e\\x92\\x37\\x3a\\x5f\\xc4\\x73\\x88\\x94\\xdb\\xed\\x20\\x6c\\x30\\xda\\x34\\x1b\\x3b\\x19\\x6c\\x94\\x78\\x58\\xa6\\xd2\\xad\\xc6\\x8a\\xac\\x3f\\x20\\xcf\\xdb\\xe0\\x49\\x79\\x61\\xda\\xe3\\x34\\x70\\x26\\x6d\\x17\\xec\\x71\\x9a\\x59\\xf0\\x58\\x6f\\x82\\xf9\\x9f\\x1c\\x90\\xed\\x70\\x05\\xa2\\x07\\x21\\x9a\\x55\\xed\\xc7\\x60\\xf4\\xeb\\x8f\\x24\\x02\\x64\\x7f\\x6f\\x77\\x97\\x1f\\xf7\\xb6\\x34\\x35\\x7b\\x6b\\x29\\xbb\\xd7\\xea\\x05\\xe2\\xe2\\x58\\x54\\xe9\\x9c\\x62\\x0f\\x4b\\x8b\\x64\\x73\\x90\\x22\\xff\\x0b\\x33\\x8a\\xfe\\xf3\\x5f\\xb6\\xf4\\x1a\\x53\\x62\\x9a\\x51\\x8e\\xb9\\x3d\\x66\\x02\\x0f\\xb3\\x53\\xae\\xf8\\xdd\\x07\\x1e\\x09\\xc9\\x16\\xd4\\x70\\x4a\\xcd\\xf7\\x76\\xb3\\x8c\\xa9\\xc5\\x9f\\x21\\x1f\\xf8\\x8c\\x43\\x0a\\x57\\xe8\\xf1\\x71\\x39\\x23\\xb3\\xf3\\x0c\\xa8\\x69\\x70\\xa1\\x4a\\x52\\xdb\\x4b\\xcb\\xe6\\x0d\\xf4\\xbc\\x3c\\xfd\\xf2\\x54\\xbf\\x10\\xf8\\xaf\\xae\\x87\\xbd\\x61\\xb3\\x58\\xf4\\x3c\\xc2\\x96\\xc0\\x41\\x29\\x64\\xc4\\xe0\\x0f\\x71\\x21\\x33\\x97\\x46\\x85\\x17\\xcb\\x01\\x37\\x9c\\xb7\\x29\\xc7\\xb9\\xe3\\x5b\\xd5\\x0b\\xdd\\x98\\xc3\\xd3\\xb7\\x62\\x97\\xa1\\x38\\xb5\\x7c\\xeb\\x6c\\x77\\x74\\x2d\\xf0\\x88\\x1d\\x07\\x66\\x8c\\x08\\xa6\\x30\\xa4\\x4e\\x6e\\xd7\\xeb\\x20\\x6d\\x6a\\x56\\x44\\x07\\x10\\x43\\x8a\\x51\\x11\\x42\\x4b\\x61\\xaa\\xee\\xce\\x40\\xe9\\x00\\xf5\\xe3\\xc4\\x57\\xe9\\xd6\\xe3\\x1a\\x79\\xec\\x5b\\x4b\\x42\\xb6\\x8e\\x66\\xe1\\x99\\x30\\x92\\x87\\xca\\xd6\\x53\\x36\\xfc\\x7f\\xe4\\x3f\\x43\\xcd\\x8c\\x77\\x3d\\x3c\\x65\\x80\\xd7\\x21\\x7e\\x2c\\xab\\xec\\xd3\\xea\\xbc\\x48\\x5c\\x4a\\xcf\\x47\\x71\\x8c\\x39\\xb0\\x2c\\x78\\x58\\xff\\x34\\x7c\\xec\\x75\\x35\\xed\\xdc\\xd4\\xfc\\x81\\x5d\\xf8\\x14\\x56\\x9a\\x88\\xae\\x70\\xf2\\x73\\x3a\\x65\\x39\\xf2\\x08\\xc7\\x9c\\xf4\\xe7\\xc4\\xf9\\xea\\x24\\x1a\\x92\\xe9\\x51\\x51\\x71\\x36\\x14\\x18\\xa4\\xc2\\xe5\\x3c\\x07\\x6a\\xaa\\xbc\\x47\\xe4\\xc9\\x71\\xbd\\x04\\xb1\\x00\\xc2\\x62\\x82\\x30\\x88\\x57\\xe0\\x6e\\x7e\\x5f\\xbc\\x43\\x42\\x56\\x4f\\xb3\\xb1\\xea\\x4a\\x17\\xa9\\x25\\xe9\\x1e\\xe6\\x91\\x22\\x32\\x1d\\x39\\x2b\\x24\\x69\\x65\\xb8\\x6b\\x54\\xfd\\x5c\\x83\\xfa\\x5c\\x47\\x41\\x63\\xf9\\x8a\\x9f\\x44\\x7d\\x88\\xcb\\x59\\xfe\\x2c\\xdf\\x9f\\x54\\x12\\xfc\\xbe\\xb3\\xef\\xfa\\xc8\\x97\\x67\\x91\\xc6\\xa4\\x7b\\x66\\x9a\\x2f\\xc5\\x5a\\xbe\\x8e\\x09\\xe7\\x41\\x57\\xef\\xcd\\x1c\\xa7\\x8f\\xc1\\x0f\\xa6\\x87\\x01\\x0c\\x68\\x26\\xc6\\xe8\\x96\\xef\\x5c\\xd7\\x1d\\x0f\\xe4\\xd1\\xbd\\x07\\xc1\\x0d\\xac\\x3b\\x03\\x48\\x5e\\xdd\\x25\\x69\\xa7\\xee\\xcf\\xbc\\x4e\\x5d\\x2e\\xe2\\x37\\x98\\x59\\xe2\\x65\\x26\\x7b\\xed\\xaa\\xd6\\x9d\\x93\\xb7\\xc1\\xbd\\x18\\xf2\\x7e\\xa4\\x24\\x83\\xc7\\xe4\\x10\\x0e\\xe0\\x5b\\x28\\x30\\x39\\xbf\\xb9\\x89\\x1d\\x37\\xc4\\x67\\xed\\x83\\xb8\\x8c\\x79\\x4e\\xab\\x6b\\xab\\x9d\\xc6\\x77\\x89\\x26\\x50\\xe2\\xd8\\x96\\xfb\\xfe\\xc1\\xb1\\xcd\\xb7\\x21\\xbe\\x30\\xb0\\xb8\\xe5\\x35\\x87\\x09\\xe1\\x65\\xcb\\xe3\\xa1\\x82\\xc9\\x3b\\xc0\\xa0\\xce\\xa2\\xf8\\xcf\\x3a\\x62\\x57\\xad\\xf7\\x64\\x53\\x40\\x41\\x20\\x22\\x41\\xa5\\x27\\x9b\\x66\\x8e\\x40\\x12\\x5f\\xc0\\x94\\x58\\x5a\\x3c\\x58\\x8a\\xba\\x82\\xb6\\x7c\\xd9\\x1d\\x48\\x3e\\x54\\x30\\x04\\x28\\x42\\x68\\x63\\xa4\\x23\\x64\\x04\\x9d\\x7c\\x45\\xa1\\x69\\x38\\x5a\\xa8\\x9b\\xf3\\x77\\xf0\\xd3\\x2b\\x07\\x80\\x9b\\x58\\x71\\x39\\x5e\\xc0\\x53\\xa2\\x57\\xd9\\x3e\\x48\\xbb\\xf4\\x07\\xeb\\x60\\x91\\x40\\x1e\\x25\\x65\\x46\\xe3\\x1f\\x9f\\xcd\\x24\\xd2\\xc5\\xb3\\x33\\xcf\\x65\\x78\\x50\\x02\\xf0\\x8d\\x54\\x8d\\xb2\\x6a\\xd1\\xf3\"},\n{{0x8a,0x44,0xd6,0xaf,0xc6,0xc8,0xee,0xe1,0xbc,0x7d,0x5f,0x69,0xe4,0x95,0xb0,0xb1,0x8c,0xa7,0xae,0xe0,0x07,0xde,0xa7,0xcf,0x0d,0x17,0x14,0xd7,0x85,0xa9,0xf4,0xed,},{0xd4,0xf3,0x66,0xb3,0x37,0x7f,0xa3,0x9b,0x36,0xf9,0xae,0x14,0xda,0x40,0x4e,0x22,0x40,0x49,0x0d,0xbd,0x8d,0x79,0x6b,0x1a,0xb8,0x72,0xdf,0xcb,0x83,0xa5,0x95,0x40,},{0xe0,0x72,0x7e,0xb7,0x2e,0x84,0xd2,0xb8,0x2c,0xdb,0xd0,0xa6,0xbd,0x2f,0x49,0x49,0x63,0x16,0xaa,0xe8,0x35,0x1e,0x49,0x02,0xac,0xd5,0xe3,0xcc,0x57,0x34,0x6e,0x7e,0xba,0xfd,0xd9,0x2a,0x90,0xde,0xd7,0x6f,0xd0,0xc6,0x69,0x0d,0x68,0xbb,0x2f,0xed,0xd6,0x13,0xe4,0x4f,0xa2,0x22,0xbe,0x01,0x26,0xda,0x52,0x0a,0xcc,0x2c,0x41,0x05,},\"\\xde\\x80\\x32\\x69\\x66\\x53\\x6c\\xe9\\x49\\x96\\xaf\\x2d\\xe7\\xa0\\x76\\x05\\xcc\\x4f\\xcb\\x9e\\x75\\xee\\x0a\\x67\\xa1\\xe2\\x09\\x32\\x11\\x1d\\xe9\\xb3\\x56\\xd5\\xbe\\xea\\xe8\\x6c\\xc5\\xf5\\x64\\xc1\\x0d\\x66\\xe3\\xde\\x95\\xa5\\xb9\\x9e\\x84\\x49\\x28\\xea\\x8e\\x77\\x58\\x6c\\xf3\\xc1\\x0a\\xd3\\x63\\x3d\\xde\\xeb\\x1d\\x9d\\xcf\\x3f\\x94\\xb7\\x0b\\xf1\\xef\\x63\\xd2\\x38\\xdf\\x20\\x4d\\x70\\x5c\\x0b\\x17\\x4f\\x83\\x28\\x25\\x45\\xf5\\xe4\\x07\\x5f\\x8d\\x69\\xa4\\x81\\x79\\xc2\\x9e\\xab\\xf5\\xc1\\x74\\x2e\\xf3\\x9e\\x1a\\xd9\\x63\\xbe\\xbb\\xb6\\x6f\\xce\\x94\\x91\\xa9\\x84\\x65\\x12\\x15\\xc2\\xe7\\x50\\xe6\\xee\\x83\\x65\\x76\\x64\\x40\\xa8\\x44\\x19\\xe5\\x2d\\xcf\\x67\\x1f\\x1c\\x52\\xea\\xa2\\xb9\\x90\\x2b\\xcc\\xa4\\xb3\\x7c\\xff\\xdb\\xac\\x8e\\x7e\\x7e\\x6b\\x0a\\x5c\\x87\\x48\\xef\\xbf\\x45\\x2d\\xf6\\x16\\x3f\\x4c\\xa0\\x7b\\x61\\xf9\\xa0\\x5e\\xc2\\x0a\\x2b\\xd6\\x33\\x38\\x9e\\x67\\x0b\\xb5\\x45\\x4a\\xcd\\x6f\\x3a\\x06\\x33\\x5b\\x5d\\xa9\\xec\\x32\\x62\\x64\\xe9\\x62\\xc7\\xd9\\xd0\\x6c\\xe7\\xe9\\xff\\x04\\xa0\\xa5\\xbb\\xdf\\xaa\\x4c\\x41\\x08\\x66\\xa5\\x72\\x01\\x16\\x51\\x43\\x9f\\x2d\\xbc\\xe5\\xde\\xe6\\x67\\x92\\x4a\\xc4\\x93\\x4d\\x20\\x54\\x96\\xbd\\x1d\\x4d\\xf0\\x8b\\xd0\\xcb\\x3f\\xd2\\xde\\x73\\xa2\\xef\\x34\\x2f\\xf0\\x09\\x1e\\x10\\xe1\\x5b\\x3b\\x76\\x0a\\x57\\x5d\\xf9\\x3c\\xf1\\xc9\\x7c\\x01\\xc5\\xab\\x11\\xc0\\x94\\xbf\\x34\\x87\\x82\\x06\\x71\\x8f\\x6b\\x28\\x5a\\xa5\\xcc\\x51\\x27\\xbd\\x7f\\x98\\x8b\\x84\\xa9\\x04\\x95\\x30\\x6f\\xd9\\xe9\\x9d\\x89\\x55\\xe6\\x68\\xd1\\xa3\\xff\\x10\\xf6\\x5b\\x7c\\x47\\x9f\\xac\\x24\\x11\\x9a\\x3c\\x10\\x12\\x2d\\x4d\\x18\\xa8\\x05\\xb2\\x47\\xdf\\x16\\x8c\\x0a\\x51\\x00\\x16\\x9b\\x55\\x72\\xd1\\x70\\x12\\xd7\\x51\\xa4\\x2e\\x83\\x37\\x61\\x15\\xe1\\x15\\x61\\xc1\\x60\\xc1\\x5e\\xfa\\xd7\\x6d\\x21\\xf7\\xab\\xb4\\x30\\x36\\x64\\x75\\x23\\x86\\x31\\xf8\\x4c\\x88\\xf8\\x38\\xb0\\xac\\x40\\x4c\\x91\\x3d\\x2f\\xa1\\x24\\x50\\x23\\x84\\x85\\xc3\\x02\\xfc\\x20\\x1f\\x44\\x15\\x1c\\x19\\xbc\\xbd\\xc1\\x19\\x0c\\x12\\xd1\\x54\\x08\\x31\\xfb\\x19\\x58\\x1c\\xb9\\x31\\x72\\xb0\\xd2\\xff\\x5c\\x65\\xf3\\x1c\\xaf\\xf2\\x0f\\x81\\x38\\x81\\xf8\\x4e\\x5e\\xf9\\xd5\\xc1\\x65\\xe0\\x96\\xd2\\x54\\xca\\xdf\\x89\\x52\\x49\\xaa\\xb8\\xd4\\x49\\x6c\\x94\\x0a\\x40\\xf9\\x07\\xbd\\x40\\x93\\x5a\\x94\\xf5\\xe5\\x5b\\x6d\\xd0\\x51\\x15\\x41\\x00\\xfe\\x33\\x17\\x70\\xef\\xf2\\xba\\xd6\\x54\\x56\\x19\\xb8\\xa3\\x3e\\xf6\\x46\\x2a\\x50\\xc0\\xb2\\xc4\\xed\\x2f\\xba\\x4e\\x4e\\x38\\x3e\\xbf\\x29\\x32\\xe6\\x19\\x27\\x66\\xa4\\xaa\\xd1\\xd6\\xe2\\xb6\\x92\\xd9\\xf2\\xbd\\xc2\\x33\\x93\\xe8\\xaa\\xcf\\xba\\x32\\x3b\\x53\\x4f\\x84\\xed\\xf2\\xdc\\xed\\x7c\\x94\\xd5\\x16\\x87\\xda\\xa2\\x71\\x98\\xa9\\x14\\x4b\\x31\\x2b\\x71\\x6f\\xe1\\x70\\x14\\xa7\\xbe\\xd0\\xc1\\x4a\\x24\\x38\\x73\\x3d\\x55\\x5c\\x65\\x64\\xc8\\xc1\\xa3\\xd9\\x97\\xeb\\xae\\x7b\\x3d\\xe8\\x87\\x7a\\xf5\\x3c\\x1d\\x1a\\x50\\x29\\x15\\x8a\\x80\\xaa\\x0c\\x87\\x48\\x9f\\xef\\x27\\x0c\\xdf\\xfe\\x10\\xd3\\x4b\\x15\\xc1\\xa9\\x69\\x3a\\xe0\\x39\\x02\\x43\\xe3\\x14\\xcf\\xac\\x06\\xef\\x6e\\xef\\xeb\\xcc\\xf4\\x3d\\x42\\xea\\xc2\\x4c\\xe9\\x87\\x94\\x29\\xd2\\xfc\\x72\\x53\\xb3\\xed\\x17\\x58\\x25\\xbc\\x4d\\xa0\\x76\\x2b\\x49\\x33\\xa9\\x8a\\xfd\\xb9\\x4b\\x06\\xf4\\xfc\\xd2\\xad\\x36\\x11\\xaa\\x99\\x9d\\x7c\\x1c\\x8d\\x85\\x2d\\x01\\xdd\\x9e\\x52\\x64\\x84\\x55\\xa0\\x4e\\xb2\\x33\\x0a\\x76\\xfd\\x94\\x2c\\x53\\x1e\\x51\\x4b\\x5e\\xc0\\x72\\x8a\\x89\\xd3\\x4c\\xa5\\x90\\xea\\x99\\xc8\\x8f\\xaa\\x20\\xdf\\xb7\\xbb\\xf6\\x56\\x54\\xaa\\x6c\\x21\\x2b\\xeb\\x8a\\xd6\\xbf\\x7c\\x77\\x73\\x91\\xcd\\x49\\xc3\\x9c\\xf8\\xab\\x51\\xb9\\x5b\\x41\\x9e\\x3d\\xfc\\x8d\\x94\\xa9\\x3a\\x1e\\xf0\\x22\\x3c\\x6d\\xe9\\x0b\\xf9\\x62\\x18\\xd8\\x04\\x5b\\xd4\\x95\\x2a\\x0d\\x83\\x72\\xa5\\x57\\x8c\\x6a\\xaf\\xa7\\x4b\\xa6\\x62\\xe3\\x18\\x8e\\x6a\\x6e\\x56\\x7e\\x4d\\x2f\\xe8\\x22\\x7d\\x07\\x43\\x98\\x2a\\x41\\xeb\\xfa\\x0d\\x31\\x0f\\xe7\\x9f\\xed\\x27\\x04\\x17\\x90\\xef\\xd5\\xaf\\xac\\x22\\x43\\xe1\\xd1\\x50\\xb1\\x45\\x01\\x5d\\x9d\\xea\\xb0\\xed\\xed\\x63\\x94\\xac\\x36\\xfc\\x5f\\xb2\\x01\\xf5\\x20\\x4f\\xbd\\x42\\x2a\\x36\\x04\\x23\\x30\\x15\\xbb\\x0a\\x48\\xa9\\x20\\xe2\\xe5\\xe0\\xd4\\xde\\xed\\x67\\x20\\x25\\xf2\\x3c\\xfb\\xa9\\x38\\x89\\x59\\x7e\\x50\\x4c\\x88\\x87\\xad\\xd4\\x6c\\xfe\\xf4\\x02\\x4a\\xfb\\x8a\\x26\\xee\\xb7\\xdc\\xdd\\xb2\\x39\\x7b\\x44\\xa1\\x79\\x63\\x67\\x34\\x00\\x42\\x13\\x70\\x28\\xc3\\x30\\x76\\x26\\x81\\x6c\\x29\\x31\\xe6\\x1e\\xbb\\x6b\\x69\\xed\\xcb\\xcb\\x61\\x2c\\x9b\\x18\\x1a\\x28\\x53\\x01\\xce\\x46\\xf8\\x2f\"},\n{{0x8a,0x97,0x2d,0xd0,0xf1,0x19,0x0c,0x2b,0x9d,0x54,0x8f,0x4b,0xa5,0x82,0x64,0xbb,0x04,0x82,0x67,0x75,0x50,0x2a,0x8d,0x5c,0x2b,0x20,0x9e,0xe8,0x8d,0xce,0xa5,0xfb,},{0x6d,0x80,0x37,0x5f,0x3c,0xf1,0xaa,0xb2,0x83,0x55,0x1d,0xf4,0x45,0xd1,0x7e,0x7d,0x3b,0xaf,0x9b,0xcb,0xec,0xbb,0xb2,0x67,0x05,0x2e,0x02,0xfd,0xb6,0x91,0x44,0xd3,},{0xbd,0x45,0xb3,0xc0,0x45,0x85,0x0e,0xbe,0xf7,0xb8,0x0d,0xd1,0xde,0xab,0x48,0x03,0x7b,0x13,0x46,0xc7,0x1d,0xea,0xf1,0xe5,0x8f,0x2a,0x7b,0x16,0x26,0x74,0xf9,0x4d,0x1e,0xf3,0xd4,0x23,0x90,0x37,0x33,0x0b,0xd6,0x33,0x5f,0xe4,0xf0,0x14,0x92,0x50,0x90,0x1f,0x00,0xa8,0xe4,0x6b,0xe5,0xfa,0x0a,0xae,0xc6,0x9d,0xe0,0x6d,0x73,0x04,},\"\\x30\\xb2\\x89\\x48\\x93\\x9a\\xa2\\x63\\x43\\x7e\\x45\\xc5\\xc0\\x25\\x4f\\xb2\\x0e\\x61\\x7e\\xd0\\xf3\\xfa\\x7d\\xac\\xe5\\xa0\\xa8\\xe0\\xfe\\x3c\\x1f\\xc4\\xad\\xb2\\x80\\x9b\\x61\\xc5\\xe8\\xd9\\x2c\\xd2\\xf3\\xde\\x93\\xb1\\x73\\xbe\\x70\\x7b\\xad\\xa9\\x42\\x40\\xc6\\x26\\x2c\\x16\\x0e\\x8c\\x78\\x21\\x65\\xbe\\xef\\x99\\xd0\\xbe\\x8e\\xcd\\xad\\x63\\x16\\xdc\\xd7\\x34\\xbb\\xb9\\x0a\\x66\\xcb\\xd5\\xb1\\xcb\\x4f\\xd8\\xf2\\x22\\x6c\\xea\\x94\\x8e\\x4d\\xf7\\x6b\\xbe\\x25\\x1d\\x47\\x8f\\x5c\\x3f\\xe0\\xd6\\xde\\x4b\\xe5\\x4f\\x67\\xf5\\x02\\xb2\\x80\\x4f\\x62\\x8b\\x79\\xa5\\x50\\xfb\\x1a\\xc4\\x83\\xad\\x2b\\xa1\\x66\\x37\\xc4\\xbc\\x9d\\xa6\\x7f\\xb4\\xf9\\x86\\x59\\xc4\\xc4\\x39\\x4d\\x16\\xb6\\xd1\\x4b\\x3e\\x0b\\x0c\\x1e\\x62\\x5d\\x71\\x0d\\xcc\\x1c\\x11\\xdf\\x5d\\x34\\x14\\x7b\\x1e\\xc5\\xa4\\x17\\xb9\\xe2\\x1f\\x90\\x8c\\xfc\\x52\\x3d\\x43\\xe3\\xf1\\x81\\xc7\\x20\\x9c\\xc5\\x6b\\xdb\\x5a\\x21\\x62\\x86\\x95\\xed\\x32\\x0f\\x8d\\x4c\\x07\\xfd\\x6d\\x84\\xaa\\x03\\x42\\x6f\\x21\\x64\\x4a\\xae\\xfe\\xee\\xc3\\x11\\xc7\\x4e\\x94\\x99\\x93\\x60\\x47\\x35\\x0a\\x9b\\xf5\\xb7\\x03\\x96\\x2e\\x77\\xce\\x55\\x13\\x36\\x83\\x5f\\xc3\\x2c\\xcb\\xd2\\xc9\\x0a\\xe5\\x2e\\x24\\xd4\\x7d\\x8d\\xcb\\x98\\x7a\\xbd\\x12\\x1d\\x3f\\x74\\x6b\\x5d\\xe2\\x30\\xf2\\x64\\x69\\x60\\x3f\\xb0\\xc4\\xa8\\xf6\\xcd\\x79\\x73\\xd7\\xda\\x88\\x2e\\xd1\\xd6\\xe4\\xd9\\xc5\\xa4\\x6e\\xc2\\xc2\\x19\\x40\\xad\\x33\\x89\\xa1\\x86\\x01\\x4e\\xe9\\x72\\x78\\xe5\\x35\\x09\\x88\\xb1\\x5e\\xcd\\x9e\\xa7\\x45\\x6b\\x3c\\xb5\\x5e\\x4d\\x30\\x93\\xf1\\x3a\\x87\\x5b\\x50\\xd6\\x51\\x63\\x78\\xec\\xaf\\x58\\xd7\\x52\\xc6\\x37\\x4e\\xd1\\x56\\x38\\x40\\x93\\x11\\xfc\\xd3\\x79\\xd1\\x22\\xc8\\xd8\\xc5\\x9b\\x86\\xf4\\xe8\\xdc\\x46\\xad\\xb7\\x30\\xa9\\x33\\x84\\x6e\\x0b\\xd2\\x48\\xd3\\x60\\x82\\x52\\xd9\\x70\\xb5\\x04\\xc8\\x13\\xc6\\xde\\xa9\\xfc\\x88\\xa3\\xde\\x64\\x19\\x56\\xdc\\xa2\\x91\\x20\\x4d\\x39\\x0b\\x6b\\x39\\x98\\x1f\\x8c\\x0a\\x6b\\xcf\\xc3\\x1c\\xa0\\x74\\x44\\x20\\x66\\x2a\\x9b\\x35\\xeb\\x3f\\xc2\\x11\\xf8\\x10\\xa3\\xe8\\x06\\x25\\x00\\xb1\\xe4\\x9b\\xdf\\x85\\x76\\x65\\xff\\x32\\xa9\\xba\\x76\\x19\\x4b\\xbb\\x77\\xfb\\x9c\\x15\\x41\\x29\\x64\\x24\\x4b\\x98\\x65\\xf7\\x3d\\xed\\x9f\\x25\\xb4\\x9b\\x42\\x5a\\xa2\\x53\\xd8\\x07\\xd9\\x81\\x82\\x92\\x76\\x3a\\x51\\x3e\\xc8\\x07\\x47\\x34\\x4f\\xba\\x0a\\xcf\\xe5\\x93\\xcc\\x26\\xb1\\x33\\x0b\\xb9\\xad\\xe6\\x6c\\x4e\\x88\\xcf\\x1b\\xae\\xd6\\xd6\\xe7\\xb7\\x50\\xe6\\xc7\\x23\\x9d\\x7b\\xcb\\xfa\\x3f\\xbe\\x45\\x40\\x5a\\x63\\xb9\\x6d\\x50\\x34\\xcc\\x0c\\x07\\xff\\xc3\\xb5\\x08\\x58\\x08\\x1d\\x19\\x55\\xe2\\xd2\\xfe\\x5b\\xe5\\xfd\\xa7\\xa8\\x99\\x69\\x43\\x76\\x8b\\x05\\x51\\x70\\xb7\\xfd\\x52\\xf0\\xa3\\x20\\x97\\xfe\\x1b\\x7a\\x94\\xf1\\xbf\\x87\\x9a\\x0c\\xba\\xbe\\x10\\xac\\x9a\\x7c\\xc1\\xf9\\xf5\\x50\\x68\\xc4\\x8e\\x3c\\xcc\\x06\\x51\\x36\\x43\\x10\\x18\\xd3\\x8d\\x20\\x10\\x9d\\xc9\\x5d\\x99\\xcc\\x2b\\xbe\\x7c\\x62\\x7a\\xb1\\xa8\\xaa\\x5f\\x43\\x16\\x13\\xb7\\x90\\xc2\\xe6\\x52\\x6c\\xf0\\x4f\\xdc\\x9e\\x55\\xf5\\x1c\\x05\\x5f\\x3c\\x20\\x45\\xa6\\x75\\xe3\\xa1\\xe5\\x4b\\xa4\\x09\\xf7\\xae\\xfa\\x7e\\x4a\\xa0\\x7a\\x2b\\xbd\\x5e\\x4a\\xb1\\x63\\x21\\xa9\\xf0\\x99\\x69\\x43\\x91\\xfd\\xa6\\x8a\\x74\\x58\\x1e\\x2f\\x1f\\x11\\xdd\\x9a\\x6d\\x52\\x4b\\x1b\\x83\\x26\\x0d\\xb5\\x7b\\x72\\xef\\x29\\xc2\\x8c\\x8d\\xb5\\xc3\\x7f\\xd1\\x85\\xb7\\xc2\\xd8\\x45\\x50\\x90\\x65\\x3a\\xf3\\x32\\xdb\\xc8\\x2b\\xfb\\x0d\\xb5\\xdc\\xca\\xbf\\xb6\\xb2\\x8c\\xaa\\x35\\x05\\x25\\xcb\\x54\\xcc\\x84\\xe5\\x53\\xe1\\xcf\\x39\\x54\\xb6\\x12\\x39\\x3e\\x79\\x93\\xff\\x7e\\x8b\\xf5\\xec\\xe3\\xf1\\x45\\x09\\x4d\\xd7\\xa2\\x7c\\xb4\\x7f\\x22\\x74\\x76\\xf2\\x89\\x23\\x52\\x51\\xf7\\x72\\xb3\\xba\\x77\\x6b\\xb7\\x73\\xaf\\x0c\\xc5\\xf7\\x86\\xa3\\xfb\\x9e\\x93\\x1a\\x53\\x0c\\xfb\\xd8\\x91\\xcb\\x5a\\x5d\\xfe\\x25\\x16\\x9e\\xf9\\x33\\xcc\\x82\\xc9\\x08\\x0f\\x32\\x39\\x61\\xa1\\x20\\x15\\x8e\\x4b\\xbd\\x71\\x13\\x4e\\xf1\\xf9\\x01\\x08\\xb8\\x15\\xc2\\x89\\xd4\\xe9\\xa9\\x58\\x9e\\xc6\\x4c\\x05\\xfb\\xb4\\x2a\\x21\\xb2\\x3d\\x16\\xe2\\xa6\\x46\\x78\\xae\\xcf\\xab\\x65\\xcd\\x9a\\x80\\x6c\\x59\\x81\\x03\\xd4\\x1f\\x70\\x09\\x77\\x63\\x17\\x83\\x1f\\xed\\xdd\\x1c\\x90\\x02\\xd4\\xa9\\x22\\x04\\xf9\\x7b\\xa9\\x49\\x0c\\x61\\x46\\x98\\x03\\x07\\x21\\x02\\x52\\x4b\\x9d\\xf5\\x19\\x00\\x5f\\x98\\xaf\\x54\\xd6\\x0c\\xa5\\xba\\x60\\xb5\\x5b\\x09\\x6a\\x4a\\xc2\\xb1\\x6e\\xb9\\xcc\\x81\\x97\\x3c\\x31\\x35\\xd3\\xfb\\x68\\x73\\xdd\\x96\\x53\\x80\\x0a\\x22\\xbb\\x5d\\x0d\\x61\\x17\\xca\\x5d\\x91\\x65\\x53\\xbe\\x39\\xc9\\xa3\\xb5\\x11\\xeb\\x3d\\xb7\\x30\"},\n{{0x12,0x38,0x0c,0x45,0xa7,0x9a,0xde,0x0f,0x48,0x3c,0x88,0x1a,0xaa,0x37,0x30,0x43,0x8b,0x08,0x35,0x90,0xf4,0x04,0xdc,0x9e,0x60,0x1f,0x76,0x15,0xf3,0x75,0xa6,0x28,},{0xd6,0x6f,0xc5,0x9a,0xe9,0x17,0xf7,0x6d,0x24,0xce,0x8a,0xb8,0xee,0x03,0xfb,0xcb,0x71,0x5d,0x5e,0xea,0x4b,0x08,0x39,0x2b,0x59,0x1e,0x64,0x85,0x91,0xc7,0x3c,0x89,},{0x02,0xb2,0x51,0x74,0xa3,0xdd,0x52,0x19,0xed,0x48,0xb2,0xc9,0x4c,0xa2,0x12,0xb6,0x3a,0x6a,0x3a,0x25,0x97,0x70,0x3c,0x07,0xb7,0xf0,0xc9,0x65,0xc3,0xc6,0xac,0x2e,0xb4,0x50,0xef,0xe3,0x87,0x16,0xa2,0xa2,0x8b,0x3f,0x89,0x84,0x6b,0x06,0xeb,0xdc,0xa4,0xbd,0x09,0xaa,0x58,0x1f,0x24,0xe8,0x4d,0x80,0xfc,0x10,0xac,0x1a,0x00,0x0a,},\"\\x68\\x45\\x23\\xc2\\xe7\\xfa\\x8b\\x4b\\xd7\\x54\\x8c\\x4b\\xac\\xaa\\x86\\x78\\xa3\\x30\\xdb\\xbb\\x96\\x06\\x32\\x94\\x01\\x66\\xb2\\xcc\\x9a\\xfc\\x15\\x35\\xc8\\x0c\\x11\\x2c\\x8d\\xc4\\xad\\xa7\\x62\\x92\\x33\\xfe\\x90\\x90\\x55\\x23\\x7d\\x51\\x3e\\x29\\x2a\\xf1\\x5a\\xd7\\x69\\x2f\\x11\\x5a\\xa0\\x92\\xda\\x65\\x75\\x32\\xf5\\x18\\x99\\xc3\\xf7\\xf5\\xd9\\xd4\\x07\\xed\\x5c\\x16\\x3e\\xb3\\x95\\x04\\x80\\xa4\\x12\\x2a\\x09\\x92\\x98\\x1f\\x07\\x7b\\xc8\\x67\\xf9\\x06\\x07\\x54\\x07\\xba\\x98\\x49\\xc4\\xea\\x04\\x73\\xce\\x54\\x0a\\x79\\x67\\x44\\xef\\xa3\\x86\\x03\\x78\\xe1\\xb8\\x93\\x43\\xe5\\x83\\xd0\\x80\\x7e\\x5a\\x67\\xc4\\xd5\\xbd\\x7c\\xe6\\x41\\x29\\xfe\\x90\\x2b\\x8c\\xfa\\xbd\\x2c\\x21\\xfa\\x3d\\x2a\\x10\\xe9\\xbf\\x9e\\xa5\\xe5\\x47\\x3a\\xe2\\x50\\xc9\\x16\\x05\\x09\\x97\\x26\\x78\\xf9\\xa7\\x40\\xe6\\xca\\xdb\\x3b\\x52\\xf5\\x02\\xfa\\x61\\x6c\\xff\\xae\\x1d\\xef\\x89\\x3d\\x54\\xe4\\x1e\\x54\\xd3\\x26\\x46\\x4c\\x9f\\x43\\x5c\\x63\\x50\\x5f\\xb1\\x5e\\x3e\\xea\\xf5\\x02\\x1c\\x65\\xdc\\xd0\\x10\\xf8\\x40\\xaa\\xb3\\x17\\xc8\\x60\\x5d\\xfb\\x1a\\x0c\\x8a\\x3d\\x55\\x49\\x86\\x1b\\x69\\xaf\\x2c\\x93\\xd8\\x6c\\x98\\x1d\\xf3\\xa5\\x1c\\x5b\\xf5\\x78\\x5c\\x2f\\x85\\x26\\x10\\xe4\\x4f\\xa4\\xff\\x1c\\x71\\x61\\x15\\x2e\\x56\\x18\\x38\\x47\\x44\\xfe\\x83\\xba\\xbf\\x0b\\xcb\\x75\\x61\\x78\\x9a\\x02\\x31\\x25\\xf6\\x24\\x2a\\x18\\x3c\\xac\\x95\\x49\\xc9\\x32\\x73\\x3a\\x86\\x8a\\xa1\\x82\\x65\\x6e\\x2b\\xa0\\xa8\\xc0\\xbe\\x10\\x69\\x96\\xa8\\x5c\\xeb\\xf1\\xbd\\xad\\x12\\x3b\\x98\\x2b\\x4e\\x05\\x55\\x10\\x87\\x94\\x82\\x02\\x1d\\xae\\xa9\\xd8\\xf2\\x6c\\x58\\x8e\\x6c\\xd1\\x01\\x26\\xcb\\x31\\x96\\x88\\x03\\x56\\xbe\\xe8\\xf2\\x98\\xbc\\xa3\\x06\\xec\\x56\\x99\\xc7\\x57\\x6b\\x76\\x50\\x87\\xc2\\x53\\xa6\\x02\\x14\\x01\\x0c\\x6e\\xd7\\x0d\\x87\\x1c\\xfc\\x87\\x38\\x01\\x8a\\x0e\\xdb\\x57\\xf1\\x06\\xb4\\x21\\x8d\\x85\\x5e\\xab\\x2c\\x91\\xf3\\x9f\\x85\\x8b\\x3f\\x25\\x90\\x56\\x31\\xa0\\xee\\xe2\\x98\\x56\\xfd\\x34\\xf7\\xb8\\xc9\\xba\\x51\\xc1\\xc4\\xc6\\xa7\\x35\\xd6\\xc7\\xa1\\x3d\\x22\\x0d\\x7a\\x56\\x6c\\x3f\\x50\\x6c\\x72\\xbc\\x74\\x17\\xab\\x37\\xf0\\xd6\\xd7\\x96\\xff\\xc7\\x1d\\xf9\\xdc\\x7c\\x6e\\x13\\x7d\\xa5\\x6b\\x7a\\x3e\\x10\\xcf\\x0b\\x1a\\xbb\\x3f\\xfb\\x70\\xbc\\x66\\x29\\x3b\\x5d\\x75\\xb4\\x05\\xed\\x8b\\xec\\x0d\\x6f\\xcd\\x06\\x92\\x5c\\x38\\x11\\x68\\xac\\x18\\x8d\\x0b\\x8a\\x1a\\xf0\\x83\\x9f\\x5b\\xde\\x84\\x3b\\x69\\x91\\xe5\\xa5\\xd6\\xcd\\x66\\xfe\\x6b\\x0f\\xde\\x86\\x7c\\x08\\x6e\\xd4\\x38\\x76\\x91\\x9a\\x1b\\x72\\x33\\xd8\\xd7\\xe1\\xd2\\x74\\x2f\\x61\\xc7\\x7d\\x8e\\x59\\x91\\x68\\x9c\\x83\\x28\\x67\\x66\\x55\\xb7\\x6a\\x37\\x50\\x56\\x0e\\x75\\xd1\\xc7\\xe8\\x5e\\x3c\\x00\\x85\\x05\\x93\\x31\\x09\\x4b\\xba\\x57\\x10\\x03\\x2c\\xf6\\x79\\xa5\\x25\\xc7\\x8b\\x31\\x70\\x0e\\x6d\\x91\\xf7\\x52\\x94\\xc4\\x22\\x48\\x92\\x97\\xe1\\x73\\x59\\x43\\xe4\\x17\\xfc\\xd3\\x55\\x80\\x58\\x2f\\xdd\\x02\\x39\\xb5\\x11\\x46\\x53\\x0c\\xc0\\x9d\\x83\\xb2\\x8f\\x0a\\x1d\\x64\\x22\\x20\\xdf\\xb9\\x9b\\xad\\x62\\xf3\\x95\\x41\\x03\\x50\\x81\\xd6\\x5d\\x77\\x8d\\xdf\\x32\\x39\\xba\\x0e\\x6f\\xa9\\x91\\x4b\\x17\\xb3\\x97\\xa5\\x34\\xcb\\x8f\\xd3\\xb4\\xff\\x42\\xa8\\xd8\\xc8\\xee\\x66\\x15\\x3f\\xbb\\x1f\\xf0\\xfa\\x54\\xf7\\xbd\\x03\\x27\\x85\\x16\\xe6\\x34\\x1a\\xf8\\x0f\\xcd\\x1f\\xce\\xe7\\x0c\\x35\\x9d\\x20\\x53\\x68\\xac\\x49\\x0d\\x75\\xa3\\x54\\x51\\x2d\\xa4\\x6b\\xa7\\x63\\x4c\\x15\\xb2\\x84\\xb2\\x44\\x77\\x80\\x8f\\x17\\x63\\x33\\x60\\xa4\\xb4\\x9f\\xb3\\xbc\\xaa\\x84\\x18\\x41\\xcf\\x92\\x41\\x7e\\xb2\\x4c\\xe4\\x82\\xd5\\xa2\\x4b\\xfd\\x2d\\xac\\x37\\x22\\x31\\xda\\x53\\x9a\\x05\\x42\\x00\\x02\\xff\\x7a\\x20\\xc4\\x76\\x09\\x7d\\xa0\\x6f\\x59\\xf0\\x33\\x14\\xe6\\x05\\x9f\\xad\\x88\\xc5\\x0c\\x3b\\xaa\\xc0\\x3c\\xef\\xa7\\xcd\\x82\\x11\\xd2\\x46\\x1b\\x16\\x60\\xea\\x6b\\xcf\\x47\\x68\\x38\\xc9\\x1a\\x10\\x07\\x4e\\xb4\\xb4\\x0e\\x6e\\x97\\x4a\\x94\\x5a\\x67\\xf6\\xee\\x69\\x04\\x23\\x1e\\xf0\\x41\\x88\\xf1\\xea\\xd5\\xba\\xf3\\x56\\x94\\xef\\xe3\\x01\\xed\\xc7\\xe8\\x66\\xda\\x23\\xb5\\xa6\\xc5\\x8f\\x01\\xb2\\xa5\\x2c\\xf3\\xab\\x80\\x5e\\xdc\\x5c\\x13\\x68\\x62\\x6b\\x95\\xb9\\x4e\\xb4\\x64\\x5b\\x69\\x3e\\xc8\\x80\\xf2\\xb8\\x11\\x7a\\x69\\x3a\\xfb\\xdc\\xd2\\x48\\x24\\x31\\x89\\x0f\\x41\\x0b\\xc5\\x80\\x53\\x0f\\xef\\x37\\x58\\x79\\xc2\\xe4\\x60\\x49\\xca\\x89\\x1a\\x2c\\x3e\\xcd\\x60\\x43\\xae\\x80\\xd8\\xaf\\x34\\x66\\x34\\x67\\x4c\\x6d\\xfe\\x90\\x59\\x97\\xde\\x5d\\x05\\xd6\\x20\\x09\\xee\\xed\\x27\\x75\\x02\\xfb\\x5a\\x5a\\x31\\x55\\xee\\xee\\xb6\\x73\\x48\\xb6\\x0d\\x89\\xa3\\x4a\\x78\\x12\\x63\\x9f\\x54\\x1f\\xfe\"},\n{{0xd1,0xb3,0x43,0x0d,0x4e,0x63,0xaa,0xbf,0xa9,0xef,0x96,0xbc,0xba,0xf1,0xfa,0x6a,0x9e,0xb5,0x21,0x9d,0xd4,0x4d,0xf3,0xb1,0xa6,0x15,0x63,0xdf,0xfe,0x1c,0xcb,0x28,},{0xc2,0x8a,0x05,0x19,0x52,0x45,0x29,0x0e,0xcd,0x38,0x53,0x55,0x85,0xce,0x51,0xf3,0xc2,0x35,0xc5,0xd6,0x50,0xc8,0xc5,0x7c,0x2f,0x79,0xbb,0x0a,0xc0,0xe8,0x08,0x34,},{0x4c,0xb6,0xff,0x5d,0xd7,0x06,0xb1,0xae,0x81,0x6c,0xdb,0xaf,0x9e,0x9e,0x1e,0xdc,0x80,0xa6,0x62,0x84,0xf9,0x46,0x52,0xd5,0x0e,0xc1,0x4e,0x28,0x3b,0x2a,0xdc,0x59,0x2f,0xd0,0x84,0x33,0x71,0x44,0xff,0xa7,0x12,0xdc,0x34,0xce,0x8e,0x61,0x06,0x68,0xa6,0x5e,0x96,0x9f,0x05,0xce,0xb5,0x47,0x86,0x30,0x4d,0x0d,0x58,0xd3,0x1a,0x08,},\"\\x07\\x6c\\x0c\\x87\\x62\\xe4\\xbc\\x00\\x3c\\x36\\x0a\\x12\\xa1\\x95\\x98\\x05\\x05\\x51\\xd1\\x6b\\x4b\\x8d\\xa0\\xfb\\x9c\\x4a\\xfc\\xc8\\x1a\\xdb\\xe6\\x19\\x95\\xf2\\x5c\\xbc\\x28\\xdc\\xa4\\x20\\xbf\\xa9\\x46\\x10\\x54\\xd3\\xee\\x00\\xad\\x78\\x18\\x3e\\x7f\\x26\\xdf\\x68\\x98\\xaf\\x9a\\x4d\\x22\\x5f\\xca\\xb6\\x7c\\x04\\x2e\\x9a\\x13\\x52\\x5d\\x1f\\x75\\xff\\x0e\\x3d\\x8d\\xa8\\x08\\x96\\xb7\\x28\\xf3\\xe2\\xdb\\x65\\x94\\x4a\\xe0\\x71\\x7d\\x77\\x59\\x90\\xb5\\x9e\\x5b\\x70\\x43\\x4b\\xd4\\xb3\\xee\\x45\\x2f\\x10\\xac\\x06\\x10\\x57\\x0b\\x38\\x22\\x08\\x32\\x96\\x8f\\x54\\x4d\\x3e\\x4d\\x11\\x9b\\x1d\\x4b\\x50\\x15\\xc6\\xcd\\xf4\\xcf\\x22\\x0b\\x56\\xb5\\xc0\\xcc\\xd8\\xe3\\x98\\xd5\\xe4\\xa5\\x8d\\xa3\\xb0\\xe2\\xb2\\x70\\xa5\\xd3\\x9b\\x82\\xab\\xb7\\xf9\\xd2\\x7a\\x41\\x90\\x18\\x55\\x0b\\x62\\x00\\xae\\x51\\xc8\\x48\\x82\\xf0\\x86\\xae\\x7e\\xa5\\x35\\x16\\x71\\xb6\\xdd\\x96\\x09\\x23\\xad\\x6b\\xef\\xc1\\x34\\x09\\x87\\x9a\\x8d\\xf6\\x19\\xbd\\xf6\\xc8\\x8a\\x6f\\xe1\\xec\\xc0\\xf0\\xf3\\xaa\\x21\\x9f\\xb6\\x19\\x02\\xbe\\x48\\xa5\\x3d\\xf2\\xbc\\x66\\xc5\\x6f\\x1c\\x1d\\x17\\xf7\\xe6\\x16\\x7d\\x25\\x51\\x65\\xf1\\x74\\xba\\xa9\\xca\\xf5\\x3c\\x73\\xcb\\xbb\\x7c\\xc2\\xc7\\xc0\\x87\\xf4\\x3a\\xbe\\x2a\\xed\\x5a\\x21\\xfe\\x42\\x90\\xb8\\xd6\\x79\\x60\\xa8\\xa9\\xcb\\xc2\\xa5\\x7a\\xbe\\x22\\x65\\x4d\\xc1\\x84\\xcf\\xf9\\x16\\x8b\\xb6\\x97\\x27\\x03\\x75\\xfe\\x88\\xd5\\xc4\\x9c\\xf9\\x5b\\x06\\xcf\\x9d\\x0d\\xac\\x81\\xfb\\xd9\\xc0\\xd7\\xb8\\x2d\\x05\\xed\\x2c\\x3f\\xd4\\x9c\\xcc\\x29\\x40\\x44\\x41\\x71\\x25\\x45\\xf9\\xa9\\x91\\xe4\\xf0\\xdd\\xb6\\x21\\x90\\x83\\x82\\x96\\xf9\\x67\\x29\\x9a\\x38\\x60\\x72\\x26\\xd8\\xa6\\x81\\xf0\\xa8\\xf3\\xc4\\x38\\x4f\\xd1\\x8b\\x30\\x25\\x7c\\x46\\x3c\\x0a\\xbd\\x0f\\x4f\\x6f\\x12\\x25\\xa5\\x1b\\x76\\x2d\\x6d\\x0a\\xc7\\xd5\\x9c\\xd2\\xef\\xd6\\x98\\xb8\\xd1\\x3e\\x23\\xd7\\x04\\x09\\xf6\\xb0\\x7d\\x69\\x5c\\x16\\x71\\xcd\\x6f\\x59\\x44\\x3b\\x1d\\xb0\\xab\\x35\\xb9\\xdc\\x06\\x40\\xe4\\xc6\\xd1\\xac\\x50\\x47\\x5d\\x28\\xef\\x94\\xf8\\x17\\x90\\xe2\\xe5\\xb2\\x54\\x55\\x14\\xb2\\xa4\\x9c\\x5c\\x21\\x53\\x45\\x9b\\xe5\\x40\\x89\\x0f\\x53\\xbc\\x18\\xe4\\xa1\\x6d\\xcb\\x5d\\xcf\\x50\\xf3\\x7a\\x95\\xc6\\x06\\xfd\\xf4\\x85\\x98\\xe5\\x2a\\xf3\\x17\\x9a\\x20\\x48\\x61\\x5d\\x93\\xd9\\x7e\\x05\\x99\\xb7\\x08\\x8c\\x11\\x74\\xbb\\x9f\\x15\\xe3\\x70\\x18\\xf9\\x9a\\xcb\\xce\\x5b\\x13\\x02\\xf8\\xd8\\xce\\x2a\\xb8\\x54\\x37\\xfe\\xeb\\x0c\\xaa\\x77\\x84\\xdc\\x83\\xc9\\xe7\\xc3\\x6f\\xe0\\x59\\x90\\x6b\\x03\\x0a\\x86\\xa3\\xde\\xd0\\xab\\x9d\\x8b\\x73\\x52\\x9d\\x47\\x5e\\x66\\x1a\\x08\\x08\\xd6\\xd3\\xf0\\x90\\x7f\\x85\\x28\\x87\\x3f\\x08\\xd5\\x74\\x8b\\xe1\\xd6\\x97\\x12\\xe8\\x52\\x62\\xd7\\x7b\\xdf\\x13\\xbf\\xd1\\x8a\\x5c\\xde\\x6f\\x71\\x46\\x26\\x73\\xab\\x29\\xb1\\x61\\x73\\x15\\xa9\\xa6\\xe9\\x36\\xa8\\xe8\\x1a\\x8e\\x43\\xbd\\x0f\\x66\\x44\\xa5\\xc6\\x9e\\xaa\\xac\\x89\\xbd\\xaa\\x99\\xcc\\xa8\\x03\\x83\\x37\\x05\\xe5\\xaf\\xa6\\x9b\\x3b\\xd1\\xd0\\x25\\x2b\\x85\\x46\\x50\\xf2\\x19\\x97\\x91\\xe6\\xac\\xa7\\xc7\\x5a\\x86\\x12\\x83\\x21\\x62\\x33\\xa2\\x63\\x3a\\x6a\\xef\\xf9\\xd3\\x01\\xee\\x5c\\xb4\\xdd\\x72\\xc0\\x8a\\x45\\xcd\\xae\\x8f\\x54\\x58\\xc0\\x95\\xb2\\x2e\\x75\\x9c\\x43\\xb4\\x9b\\x98\\xe9\\xf4\\xcb\\x33\\xd5\\xde\\xa8\\x79\\x44\\x9e\\xae\\x73\\xcb\\x87\\x4c\\x73\\x59\\x43\\x25\\xeb\\xf6\\x8c\\x1e\\xd4\\x06\\x4b\\x6f\\x61\\xab\\x2f\\x01\\x4a\\x2f\\x19\\xf3\\x2e\\x12\\xb3\\x3c\\x5e\\xaa\\x8a\\x29\\x20\\x4d\\x5e\\xba\\x58\\xdc\\x07\\x50\\x72\\xfe\\x39\\x9b\\xe7\\xd1\\xab\\x18\\x08\\x20\\x8f\\xb4\\x08\\x12\\x3b\\xdc\\x0b\\x4a\\xb3\\x13\\x0f\\x9f\\x70\\x6d\\xc3\\xeb\\x19\\x4b\\x60\\x5e\\x73\\xa3\\x2f\\x12\\x5a\\xe4\\x91\\x28\\x5c\\xe6\\x03\\x9f\\xb6\\x23\\xc3\\x8b\\x81\\xd5\\xab\\xa0\\xf5\\x59\\x9f\\x6c\\x86\\xe8\\x72\\x48\\x6b\\x4e\\x96\\x49\\xda\\xff\\xe3\\xa3\\xd0\\x6c\\xb0\\x73\\xdd\\x3b\\xc6\\xf4\\xe1\\x0a\\x18\\x70\\x0e\\x45\\x72\\x2d\\x78\\xa6\\xb0\\x97\\x2d\\xc9\\x4d\\x5c\\x7a\\x7b\\x66\\x41\\x75\\x7b\\x79\\x60\\x75\\x71\\x9d\\x7b\\x8e\\xc3\\x6a\\x1e\\x79\\x6f\\xb5\\xf8\\xfe\\x6f\\x1b\\x79\\xa0\\x85\\x9c\\xb4\\xd6\\x7c\\xec\\x05\\xed\\x91\\x4c\\xfa\\x32\\xc1\\xdd\\xfe\\x21\\x8e\\xf9\\x63\\x43\\x6c\\x3a\\x11\\x48\\xac\\x2c\\xf9\\x09\\xdf\\x73\\x59\\x89\\x06\\x57\\x46\\x3a\\x4e\\xa2\\x5f\\xed\\x59\\x61\\x8a\\x06\\x81\\xa1\\x21\\x7e\\x22\\xd6\\x4e\\xf9\\xd9\\xb4\\x55\\x9d\\x0a\\x0f\\x6b\\x3c\\xe8\\xd8\\x47\\x93\\x0b\\x23\\x23\\x01\\xca\\xf4\\x4c\\xdf\\x7a\\x3f\\x18\\xa2\\xac\\x13\\x0b\\x92\\xcf\\xd9\\xc0\\x33\\x60\\x55\\x7b\\x5f\\x7c\\x47\\x75\\x46\\x2a\\x10\\x71\\xf7\\x03\\x44\\xc7\\x18\\x37\\x4b\"},\n{{0x03,0x3e,0x00,0x3d,0x7a,0xab,0x7b,0xc7,0xfc,0x8a,0xc2,0x04,0xc7,0x33,0x79,0x9a,0xe5,0x53,0xc3,0xfe,0xc5,0x3f,0x10,0xdb,0xf7,0x95,0xb5,0xf4,0xb8,0x7f,0x1c,0x95,},{0x68,0x2f,0x46,0xf5,0xc0,0x56,0xdd,0x45,0xba,0x0b,0x5a,0x78,0x20,0x31,0xf9,0x59,0x6a,0x73,0xaa,0x29,0x2c,0xa2,0x32,0x6b,0xed,0xa7,0x4a,0x52,0xfc,0x32,0xb7,0x16,},{0xed,0xb4,0xe0,0x20,0xd6,0x76,0xfa,0xc6,0xa8,0x45,0x53,0x48,0x80,0xbf,0x61,0x36,0x37,0x4a,0x8b,0x7f,0x2c,0x53,0x85,0xbb,0x9e,0xe2,0x25,0x38,0x1f,0x49,0x4e,0xfb,0x74,0xa5,0x5b,0x41,0x3a,0xe0,0xea,0x70,0xad,0xd6,0x1b,0xfd,0xfb,0x87,0xfb,0x42,0xd5,0xbc,0x0c,0x53,0x59,0xdd,0xdd,0x57,0x3d,0x53,0x8a,0xe9,0x3a,0x6b,0x36,0x09,},\"\\x59\\x6a\\xa2\\xc4\\x0b\\x33\\x18\\x87\\x89\\x38\\xeb\\xc1\\x38\\xdb\\x27\\x4b\\xb3\\x8a\\x52\\x01\\xeb\\x7c\\xaf\\x87\\x5e\\x6c\\x64\\x57\\x91\\xda\\xe0\\x12\\xbd\\xef\\xd4\\x85\\xe6\\xbd\\x9d\\x84\\x99\\xc4\\x2a\\x2a\\xe8\\x6c\\xf3\\x2b\\x18\\x00\\x2e\\x76\\xbb\\x58\\x2c\\xca\\x0d\\xec\\x48\\x15\\xde\\xd8\\xa1\\x21\\x1f\\x8f\\xc8\\x85\\x7f\\xce\\x1d\\x57\\xf6\\x15\\x1d\\x88\\x78\\x7b\\x97\\x8f\\xab\\x56\\xbf\\x92\\x6b\\x15\\x33\\xe1\\x94\\x99\\xe8\\xbb\\x99\\x15\\x8c\\xdd\\x6e\\x98\\x0f\\x6b\\xa5\\x43\\xae\\x83\\x1f\\x9d\\xd1\\x34\\xb0\\xfe\\x6d\\x5c\\x24\\x88\\x7d\\xc7\\xa8\\xd4\\x78\\x1d\\xd9\\xb7\\xfc\\x5d\\xc9\\x46\\x4b\\x04\\x5c\\xbf\\x9d\\x1e\\xf5\\x03\\x6b\\x5b\\xf2\\x8b\\x54\\x9a\\xc7\\xaa\\x8f\\xaf\\xb9\\x1a\\xdc\\x9f\\xec\\xa7\\xa1\\x45\\x54\\xd1\\x10\\xe3\\x10\\xc7\\x49\\xe4\\x85\\x33\\xf3\\x59\\xc7\\x0f\\x05\\xfb\\x7a\\xed\\xef\\x13\\x66\\x36\\xb8\\xef\\x72\\x23\\x88\\x65\\x39\\x86\\x4e\\xe5\\x2d\\x34\\x11\\x8b\\x4b\\x8b\\x74\\xe0\\x8f\\xe6\\xb6\\x58\\x96\\xe4\\xb1\\x9b\\x6d\\x7c\\x3f\\x25\\x28\\x26\\x55\\x85\\x48\\x17\\x10\\xd2\\xd7\\x49\\x48\\xeb\\x4b\\x17\\x08\\xa5\\x0f\\xa7\\x40\\x21\\xbd\\xa4\\xb3\\x61\\xbc\\x68\\xd2\\xa5\\xd2\\x02\\x10\\x9f\\x8d\\x28\\xd8\\xaa\\x67\\xd7\\x8c\\x11\\x36\\xcd\\x2e\\x90\\x3c\\x8d\\xfa\\x17\\x5a\\xf7\\xbd\\x96\\x3b\\x73\\xda\\xe4\\x95\\x87\\x3c\\xcd\\xae\\x62\\xbf\\xef\\x88\\x56\\x36\\xdd\\x83\\x55\\x0f\\xf9\\xc0\\x5c\\x37\\xba\\x33\\x89\\xd1\\x54\\x36\\x85\\xd8\\x94\\x83\\xb0\\xc1\\x04\\xe7\\xef\\xbb\\x77\\x02\\xc5\\xa0\\x39\\x8a\\xc7\\x20\\x48\\x4c\\x50\\x93\\x68\\x35\\xee\\x9d\\xf2\\x53\\xf0\\xef\\x8c\\xbe\\xf3\\xe0\\x7d\\xe9\\x69\\x51\\x1c\\xcb\\xf8\\x75\\x57\\x49\\x3a\\x0b\\x97\\x2e\\xf0\\xe8\\xe6\\x29\\xcf\\x38\\x22\\xdb\\x21\\x28\\x6e\\xd7\\x27\\x66\\x1b\\xd3\\x17\\x86\\xfc\\xa1\\x42\\x11\\x06\\xda\\xcd\\xee\\x1c\\xaa\\xf4\\x94\\x54\\xe8\\x54\\x79\\x4f\\x70\\x4d\\x22\\xa9\\x5a\\x4c\\x8e\\x6b\\x1c\\x2f\\xee\\xa5\\x7e\\x56\\x23\\x8c\\x20\\x96\\xf1\\xcc\\x57\\x86\\x47\\xfe\\xa5\\x44\\xd6\\x76\\x44\\x82\\xbd\\xf5\\x14\\x88\\x79\\xa2\\x5f\\x94\\x3d\\xb1\\x6f\\x29\\x02\\x1b\\x9e\\xcf\\xe3\\xe0\\x90\\xb4\\x25\\xc8\\x1c\\x70\\x09\\x84\\x2e\\x1c\\x7a\\x02\\xd9\\x1c\\xa6\\x0c\\x12\\x01\\xc3\\xbd\\xae\\x9c\\x53\\x73\\xaf\\x03\\xf2\\xf4\\xdb\\xef\\x40\\xde\\x8d\\x9b\\x21\\xfe\\xd6\\x8d\\xee\\x51\\x0d\\xe0\\x42\\x72\\x34\\xca\\xa1\\xc2\\x0a\\x3a\\xe5\\x49\\x95\\x48\\x34\\xc9\\x33\\x73\\xd9\\x13\\xb8\\x75\\x0f\\x23\\xa0\\x37\\x80\\xd7\\xa9\\x45\\x4e\\xd6\\xfe\\x51\\xfd\\x2d\\x27\\x6b\\x9d\\x4a\\xa3\\x2d\\xe0\\x5e\\x03\\x81\\x6e\\x64\\xe9\\x46\\x6f\\x4f\\x0e\\x22\\x46\\x51\\x42\\x8d\\x34\\x2c\\xbc\\xc6\\x97\\x17\\x0a\\x47\\xef\\x99\\x6b\\xda\\xcb\\xce\\x91\\x11\\x7c\\xa1\\xf8\\x45\\x5b\\x25\\xb2\\xb0\\x84\\x43\\xe9\\x91\\x4e\\x3d\\x90\\xc4\\x89\\xee\\xaa\\x77\\x31\\xdd\\xea\\x21\\x23\\xd5\\x5d\\x67\\xb1\\x66\\x83\\xfb\\x7c\\x82\\x36\\xaa\\xa5\\xa1\\xb0\\xfc\\xaf\\x8d\\x17\\x00\\x11\\xdb\\xe9\\xaa\\x28\\x57\\xbe\\x61\\x2c\\xbb\\x85\\xef\\x69\\xe5\\x68\\x31\\xb4\\xda\\xcf\\xbc\\x7a\\x59\\xb4\\x65\\xa6\\x6d\\xc7\\x41\\x2d\\xdb\\x3d\\x6a\\xf4\\xeb\\xfd\\x70\\x58\\x64\\xe7\\xd4\\xfb\\x99\\xa6\\xcc\\xb4\\x8b\\x11\\x83\\x68\\xfe\\xab\\x02\\xa3\\x40\\xc4\\x32\\x76\\x8d\\xe0\\xe0\\x67\\x87\\x1e\\x9e\\xa8\\x08\\xd6\\xd9\\x93\\x81\\x58\\x29\\xe7\\x1f\\x6c\\x04\\x2b\\x66\\x49\\x95\\x09\\x8f\\xee\\x94\\xd5\\x43\\xdf\\x15\\xe5\\xb1\\x69\\x57\\x03\\x1b\\xd2\\x38\\xbc\\xad\\xbb\\xdc\\xc5\\x76\\xaf\\xfb\\x64\\x03\\x03\\xd6\\x9c\\x5b\\x25\\x0b\\x3a\\x53\\x9a\\xfd\\x12\\x7f\\x7e\\xe2\\x60\\x9e\\x52\\xe5\\x15\\x4f\\xbd\\xff\\x3e\\x45\\xf9\\xc4\\x40\\x66\\x65\\x6d\\x56\\x1e\\x0f\\x64\\xdf\\xf2\\x80\\x5d\\xf8\\x8e\\x30\\xa3\\x80\\x53\\x08\\x22\\x41\\x3a\\x7a\\xb7\\x6a\\x1b\\x9a\\x86\\x53\\x78\\xd2\\x47\\x63\\x06\\x9a\\x81\\x40\\x02\\xa9\\xa9\\xd0\\x37\\x95\\xca\\x8d\\x2b\\x5b\\xd1\\x09\\x03\\x93\\xe9\\xe4\\xb1\\xff\\x7d\\x7f\\x0e\\xb8\\x4e\\x71\\x2a\\x01\\x8f\\x68\\xc9\\xe3\\x84\\xf0\\xa0\\xae\\xf3\\x96\\x78\\x79\\x28\\x4f\\x40\\x9e\\x30\\xd2\\x36\\x50\\x86\\xe6\\x69\\x52\\x27\\x8c\\xa9\\xb6\\xf9\\x0e\\x8f\\x69\\xa4\\x8d\\x9b\\x28\\xbb\\x4c\\x4e\\xd6\\x32\\xab\\xca\\x3a\\xf4\\x14\\x4d\\xa7\\x42\\x2b\\xf5\\x19\\x92\\xf7\\x34\\x73\\x14\\x53\\xc7\\xa3\\x3e\\x15\\xe5\\x9f\\x53\\x08\\x12\\x9d\\x6a\\x77\\x4a\\x94\\x58\\x6f\\x72\\x33\\x11\\x17\\x91\\x76\\xc0\\x94\\x8f\\xff\\x4e\\x30\\xc1\\xb9\\x59\\x81\\x2c\\xac\\x97\\x7c\\xc7\\x43\\x47\\xb0\\x07\\x94\\x0f\\x2f\\xb9\\x62\\xa9\\x0d\\x66\\x06\\x6a\\x6d\\xe8\\x80\\x19\\x84\\xde\\xe4\\xa5\\x32\\xd4\\xb0\\xac\\xd6\\xdc\\xaf\\x06\\x72\\x7b\\xab\\x70\\xb3\\x86\\x62\\x32\\x23\\x4c\\x91\\x00\\xbf\\xdc\\x66\\x9f\\x77\\xca\\x49\"},\n{{0xee,0x55,0xfc,0xf7,0x0a,0x27,0x5c,0x72,0x6b,0xd4,0x85,0x66,0x83,0xb3,0x47,0xde,0xcf,0xd4,0x22,0xf1,0x82,0x6c,0x07,0xa9,0x32,0xcb,0x85,0xbe,0x9f,0xa4,0xef,0x3c,},{0xdf,0xcf,0xfb,0x5e,0x15,0x53,0x78,0x9d,0x56,0xa9,0xf3,0x91,0x4b,0xce,0x50,0x0d,0x07,0xc5,0xac,0x31,0x1f,0x92,0x78,0x54,0xb2,0xcf,0x1e,0x58,0x33,0xc0,0x32,0x37,},{0x9d,0x8c,0xb2,0xea,0xf3,0xff,0x3e,0x0c,0x2b,0xc6,0x72,0xe1,0xd2,0x55,0xc5,0xb8,0xe8,0x07,0x31,0xbf,0xf6,0xf6,0xab,0xa5,0x17,0xe1,0x33,0x54,0xe8,0x51,0x08,0x0f,0x4a,0x8b,0xb8,0x12,0x1b,0x26,0x24,0x24,0x4c,0x9e,0xe9,0x5c,0x8a,0x09,0x2f,0x10,0x37,0x03,0xfb,0xe6,0x6f,0x9c,0xba,0x10,0x0d,0x2e,0x91,0xed,0x77,0x4a,0xc9,0x07,},\"\\xb8\\xc8\\x45\\xcf\\x7c\\x54\\x85\\xf0\\x62\\x2d\\x1d\\xdc\\x17\\xf7\\xa0\\xf6\\xf0\\xfd\\x70\\x74\\xfe\\x19\\x4b\\x0e\\x0c\\xd4\\x26\\x50\\xcf\\xc8\\x17\\xf5\\x7f\\x09\\x5f\\x8c\\xdf\\xad\\x1e\\xbe\\x0d\\xfb\\xc1\\xbd\\x76\\x17\\xab\\x4f\\x20\\x4e\\x9d\\x55\\xd8\\x1a\\x7c\\x8a\\x43\\x39\\x40\\xec\\x6f\\x17\\xc8\\xa8\\xe3\\xd5\\x6c\\x1a\\xfb\\x0a\\xf3\\x74\\xbd\\x32\\xd5\\x4e\\xf7\\x13\\x2d\\x26\\xb8\\x9c\\x47\\x0c\\x2a\\xb5\\xbe\\x16\\xfa\\xbb\\x4c\\x75\\x19\\x3d\\x6d\\xa5\\x9b\\xa2\\xfd\\x15\\x7e\\x9e\\xa4\\xe0\\xc5\\xc0\\x8a\\x52\\x02\\xf5\\xed\\xc6\\xa6\\x17\\x01\\xf0\\x8b\\xb3\\x44\\xca\\x64\\x55\\xd7\\x5d\\x14\\x5a\\xdb\\x24\\x4c\\x53\\x4c\\x8c\\xfc\\x62\\x3f\\x4d\\x4b\\x67\\x67\\x59\\x4b\\x39\\xa7\\x69\\x0b\\xee\\xec\\x4d\\xf9\\x74\\x6a\\x57\\xff\\xee\\x05\\x14\\x54\\xc4\\x27\\x8e\\xa4\\x3c\\x81\\x0f\\xf1\\x3c\\xd7\\x69\\x61\\x5f\\x9d\\x05\\xd4\\xfe\\x4a\\x51\\x58\\x3e\\x80\\xc0\\x15\\xdc\\xfe\\xd9\\xaf\\x05\\xf9\\x3d\\x05\\x4d\\x34\\xff\\xd9\\x39\\xbd\\xd8\\xf0\\x51\\x8f\\xa3\\x03\\x0a\\x96\\x4d\\xc9\\xd8\\x0d\\xf0\\x0f\\x16\\x35\\x82\\x40\\x72\\xcd\\xf2\\x9b\\xc8\\x02\\x59\\x20\\x9d\\x50\\xf5\\x6f\\xca\\x9f\\xbd\\x6a\\xe1\\x51\\x4a\\x67\\x19\\x89\\xce\\xa4\\xf6\\x84\\x6b\\xc1\\x91\\x79\\x09\\x7c\\xca\\x40\\xc6\\x24\\xd7\\xed\\xbf\\x91\\xfb\\x5b\\x25\\x39\\xeb\\xbd\\x50\\x2d\\x36\\x46\\x71\\x14\\x30\\xba\\xe4\\x23\\xfd\\x11\\x58\\x48\\x09\\x33\\x18\\xb7\\xd0\\x87\\xef\\x1e\\x3b\\x89\\x4b\\xc3\\xb9\\xea\\x27\\xaf\\x85\\x3f\\xca\\x85\\x95\\xd3\\x6f\\xb7\\x29\\x99\\x69\\x16\\x2f\\x2e\\xd6\\xa2\\xb5\\x50\\x75\\xb2\\xc6\\x30\\x80\\x28\\x57\\x17\\x6d\\xec\\x4c\\xb5\\xac\\xf2\\xb1\\x3a\\x35\\xa9\\x94\\x9b\\x91\\x2b\\xb5\\x7d\\x81\\xeb\\x0c\\x8a\\x8a\\xdf\\x3c\\xf6\\x4c\\xb5\\x71\\xbf\\x5f\\x3d\\x71\\xf9\\x87\\xd6\\x4d\\x74\\xe9\\x19\\xa0\\x03\\x36\\xe5\\x7d\\x35\\xee\\x4e\\xec\\xfc\\x65\\x70\\x00\\xdd\\x5b\\x12\\x99\\x5e\\xe1\\xb1\\x16\\x59\\x1c\\xe5\\x8e\\x56\\xde\\x25\\xb2\\x9c\\x94\\x82\\x9d\\x1d\\x68\\x52\\x1b\\x95\\x58\\xe4\\x72\\x5e\\xc7\\x70\\x39\\x06\\x9c\\x0c\\xd1\\x7b\\x2a\\x00\\x33\\x59\\xe9\\xe1\\xe1\\x12\\xc7\\x59\\x01\\x76\\xce\\xbc\\xe7\\xf0\\x01\\xf1\\xd1\\x36\\xe8\\x18\\xf4\\x81\\x8c\\xfd\\x94\\x74\\x5a\\xfa\\xab\\x56\\xf1\\xa4\\x06\\xf9\\x7d\\xd9\\xe6\\x1b\\x73\\x52\\x66\\xd6\\x82\\xad\\x7d\\xf2\\x6d\\xd7\\x0c\\xde\\x0b\\x57\\xfe\\xa7\\xdb\\x2d\\xf8\\x32\\xfa\\x88\\xa3\\x5f\\x53\\x97\\x94\\x88\\x4d\\xdc\\x41\\x21\\x84\\x03\\x01\\x6c\\xb6\\xd5\\x22\\x1f\\x3f\\xeb\\x5d\\x3a\\xee\\x4a\\x98\\x40\\xa9\\x13\\x07\\x2d\\x29\\xf8\\xd1\\xa9\\x36\\x7b\\xb0\\xbb\\xf5\\x45\\xf7\\xda\\xe7\\xc0\\x0a\\x0d\\x0c\\x03\\x42\\x23\\x1a\\xe4\\x62\\xbb\\x74\\x2e\\x14\\x98\\xee\\x58\\x4a\\xe6\\xc8\\x3f\\x2f\\x1f\\x2d\\x04\\x52\\xbe\\xad\\x98\\x22\\x68\\xcd\\x3c\\xfd\\xe7\\x8f\\xf4\\x22\\xe2\\x26\\xbf\\x7b\\x2a\\xf1\\x13\\x77\\x57\\x79\\x7f\\xb0\\x2e\\x52\\x75\\xc3\\x48\\x09\\xd5\\x4c\\xa9\\xee\\x2a\\x65\\x27\\x5e\\x6e\\x5c\\xff\\xdd\\x20\\xad\\x1f\\xa1\\xee\\x0b\\xd8\\xb2\\x1e\\x04\\xce\\x82\\x9e\\x02\\xcd\\xb6\\x3c\\x48\\xbf\\xcd\\xd8\\x6d\\x3a\\x08\\xc5\\x97\\x89\\xc9\\xd7\\x8e\\x36\\x18\\x1d\\xef\\xeb\\x72\\x27\\x10\\x72\\x75\\xed\\x6b\\x5c\\xcb\\x12\\x7c\\xd7\\x2b\\x37\\x4e\\x17\\xf5\\xee\\x0b\\x5e\\x47\\xb4\\xb3\\xe1\\x4a\\x8e\\xc6\\xd8\\x6b\\xb7\\x50\\x71\\x87\\xf2\\x8d\\xb3\\x2b\\x3f\\x3f\\xa1\\xca\\x13\\x44\\x6f\\xe5\\x25\\x3e\\xe7\\x83\\x64\\x5e\\x79\\x42\\x72\\x79\\x9a\\x86\\x3b\\x4f\\xca\\x99\\xe4\\x43\\xcb\\xaa\\x05\\xde\\x3c\\x50\\xed\\xf3\\xd5\\xcd\\x7c\\x10\\x52\\x9c\\x6c\\x09\\xa0\\xc1\\x45\\x34\\x06\\xac\\x7e\\xca\\xfa\\x9b\\x3a\\x1f\\x36\\x9d\\x68\\xf3\\xc6\\x18\\xf5\\x8e\\xfc\\x35\\x9d\\xf2\\xf3\\xfc\\xd2\\x47\\x8b\\x55\\xa4\\x1a\\x11\\xf2\\x48\\x7e\\x7f\\x70\\xec\\x29\\x3b\\x3e\\xcc\\xc7\\x00\\xef\\x44\\x4a\\x33\\xd1\\xea\\xe9\\x84\\x9c\\x5b\\x76\\xd2\\x9a\\xfd\\x5a\\x23\\x86\\x1a\\xef\\x4f\\x2a\\x7b\\xa3\\xf6\\x66\\x30\\x1f\\xde\\xb5\\xd3\\xd8\\xf0\\xdc\\x9e\\xe2\\xe0\\x14\\xb2\\x4c\\x74\\x65\\xde\\xe3\\xc0\\x96\\x4e\\xdd\\x49\\xed\\x49\\xed\\xab\\xb5\\xca\\x7a\\xfb\\x99\\x57\\x4d\\x00\\x1e\\x58\\x12\\xa0\\x85\\x23\\x1f\\x24\\x1b\\x6b\\x08\\xc7\\x3e\\x80\\xfb\\x44\\xbb\\x2a\\xdf\\x55\\x4f\\x14\\xfd\\x6d\\xce\\x94\\xa6\\xf6\\x36\\x23\\xd9\\xc1\\xde\\xb4\\x1a\\xd1\\x01\\x65\\x1a\\x6b\\x67\\xae\\x52\\x34\\xda\\xae\\x81\\x97\\x9f\\xbd\\x82\\x33\\x89\\x64\\x9a\\x3b\\x0a\\x06\\xc6\\x8b\\x80\\x46\\x8a\\x99\\x1d\\x30\\x07\\x74\\x87\\x51\\xfa\\x69\\x28\\x1d\\xb1\\xb9\\x4d\\x6c\\x16\\x0a\\x1c\\xab\\x50\\x94\\x3c\\xdb\\xb8\\xde\\xa5\\x75\\x09\\x06\\xb3\\xc6\\x59\\x5b\\xb5\\x80\\xde\\xdb\\xfa\\xe5\\x74\\x64\\xcc\\x7a\\x65\\x1d\\x4c\\x51\\xdb\\xb5\\xfa\\x98\\x05\\x97\\xd1\\x76\\x69\"},\n{{0x49,0xc2,0x98,0xa2,0xdb,0x3d,0x25,0x89,0xc9,0xfe,0x16,0xa4,0xe5,0x71,0xe5,0xaa,0x23,0xcb,0xaa,0x77,0x7b,0x86,0x47,0x02,0x90,0xa3,0xed,0xa7,0xa5,0xd3,0xe9,0x6b,},{0xda,0xc5,0x23,0xd6,0x37,0x4c,0x8f,0xf1,0x5f,0xc4,0xdd,0xc7,0x13,0x71,0x5a,0xc3,0x5c,0xf5,0x54,0x7f,0xc1,0xb1,0xb2,0x64,0x6b,0x63,0xfb,0x41,0xa7,0xf2,0x16,0x21,},{0x2a,0x43,0x9c,0x73,0xc9,0x81,0x17,0xfb,0x29,0x52,0xe2,0xb1,0x61,0xf7,0xf3,0xb9,0x9e,0x7d,0x39,0xbc,0x69,0x7f,0x79,0x40,0x75,0xdb,0x7b,0x63,0x4d,0x29,0xf1,0xff,0x57,0x24,0xf6,0x77,0xf8,0x31,0x2a,0xd5,0x15,0xb0,0x97,0xcc,0xa9,0xdf,0xc3,0x0e,0x79,0xee,0x8a,0x7c,0x9d,0xd7,0x28,0xbd,0xd4,0x5d,0xf8,0x59,0xc7,0xbd,0xe3,0x0a,},\"\\x35\\x82\\xee\\xb0\\xd3\\x71\\xdf\\x38\\x5d\\xe8\\x8b\\xaa\\xd3\\x80\\xcb\\x0c\\xdb\\x60\\xea\\xb2\\xba\\xeb\\xb3\\xc7\\x98\\x37\\x75\\x3d\\x08\\xe1\\xcb\\x78\\xc0\\xbd\\x76\\xdd\\x11\\x04\\x45\\x49\\x56\\xd5\\x71\\xce\\xb7\\xe6\\xb5\\x71\\xa5\\x23\\x68\\x35\\xd7\\x84\\xb5\\x0f\\xf6\\x60\\x57\\xb1\\x35\\x95\\xe7\\xd0\\xc8\\xf2\\x5d\\x08\\xae\\x8b\\x54\\xb6\\x12\\x3b\\xa0\\x81\\x51\\xac\\x7d\\xb0\\xc5\\x6a\\x98\\x0f\\x7f\\x0b\\xb3\\x9a\\x54\\xb4\\x37\\xf5\\x48\\x51\\x97\\x99\\x86\\xab\\x13\\x67\\x83\\x5e\\x5c\\x4f\\x3a\\x3b\\x3d\\x76\\x0d\\x38\\x27\\xe7\\x6c\\x56\\x8a\\xe7\\xae\\xbb\\xb6\\x12\\xe7\\x75\\xbd\\xde\\xcc\\xd3\\x34\\xac\\x6b\\xcd\\x32\\x53\\xab\\xc2\\x9d\\x4b\\x7c\\x3f\\x10\\x36\\x26\\x66\\xf6\\xae\\x75\\x08\\x03\\x70\\xa3\\x6c\\xba\\x55\\xdb\\x3a\\x91\\xcb\\x57\\x89\\xe4\\xd6\\xf9\\xef\\xea\\x4d\\xf1\\xdd\\x77\\x30\\xa5\\xe2\\x79\\x60\\xd5\\x3b\\x51\\x21\\x94\\x8c\\xce\\x5a\\xf6\\x53\\xff\\xf1\\xd5\\xb4\\xe5\\xb0\\xa8\\x8c\\x71\\x8c\\x49\\xb3\\x1c\\x79\\x3d\\x88\\xc1\\xcc\\x45\\xab\\x8d\\xa2\\x9d\\x05\\xe9\\x06\\xcd\\x05\\x94\\xb5\\xf6\\x63\\x8c\\x8e\\xc3\\xf1\\x76\\x0b\\xa4\\x23\\xb5\\xab\\x1d\\x08\\xa5\\x87\\x70\\xaf\\xb0\\xf1\\x39\\xab\\xd3\\x49\\xc1\\xbf\\x16\\x0d\\x89\\x02\\x23\\x9c\\xe2\\x4f\\x19\\xb4\\xe1\\xbe\\x09\\x5f\\x7e\\xd1\\x65\\xf3\\x93\\x1e\\x3c\\xbc\\xc3\\x07\\xe9\\xfc\\x5c\\x65\\x80\\x31\\x22\\x8e\\x55\\xcb\\xbe\\xec\\x0d\\x0b\\xcf\\x8f\\x69\\x51\\x54\\xa9\\xee\\xd1\\xbe\\xf3\\x52\\x28\\x78\\x9b\\xfc\\x0d\\x23\\x8b\\x83\\x72\\xd3\\x18\\x32\\x8c\\x13\\x39\\xfe\\xa0\\x88\\x14\\xdb\\x86\\x21\\xab\\xca\\x3a\\xeb\\x82\\x09\\x8b\\x5a\\xa8\\x7b\\xb9\\x8f\\x5e\\x40\\x52\\x2a\\x08\\x88\\x53\\x2c\\x17\\x48\\x45\\x3d\\xb2\\xd2\\xb3\\x94\\x3e\\x4a\\xbb\\x31\\x2d\\xe3\\x19\\xae\\xc4\\x8c\\xc1\\xc9\\x47\\x75\\x97\\x29\\x53\\xfb\\x64\\x96\\xb8\\x16\\x89\\x37\\x62\\x35\\x10\\xcd\\x48\\xc8\\xb2\\x47\\x95\\x6d\\x31\\x68\\x48\\x6c\\x17\\x6a\\xe7\\xa4\\xcb\\x38\\x4e\\xac\\xfd\\xab\\xfa\\xdd\\x9f\\xba\\x30\\xa2\\x3b\\x81\\x1b\\xd7\\x79\\xf3\\xcb\\xa5\\x43\\x38\\xc2\\x8b\\xb3\\x38\\x22\\x38\\xed\\x3b\\x8d\\xd2\\x1b\\xea\\xb2\\xf5\\xca\\xde\\x28\\xc5\\xe0\\x9b\\x31\\xa4\\x54\\x80\\x8a\\x53\\x48\\x12\\x2e\\x3a\\xe3\\x81\\x22\\x96\\xf7\\x86\\x9c\\x38\\x65\\xc3\\xc9\\xd8\\xfe\\x18\\xbd\\x81\\x2f\\x2e\\x60\\xe9\\x14\\x97\\x5c\\xfe\\x1b\\xef\\x8d\\xbb\\x80\\x97\\x00\\x6f\\x0d\\x7c\\xf3\\xfc\\x15\\xeb\\x95\\xc2\\x78\\x54\\xb1\\x43\\x12\\xb8\\x8d\\x52\\x80\\x15\\xaf\\x69\\xfb\\x75\\x05\\xb8\\xf3\\x27\\x03\\xf6\\x4e\\xb1\\xc9\\x58\\xf0\\x46\\xdd\\x25\\x12\\x42\\xf8\\xbe\\xa7\\x46\\x7f\\xc7\\x29\\x1d\\x09\\x5e\\x96\\x96\\xe1\\x1a\\xa4\\x5a\\xbe\\x79\\x24\\xe8\\x56\\x35\\x15\\x35\\xaa\\x07\\x73\\xd3\\xd9\\xe6\\x1c\\xc9\\xa2\\xd8\\x9b\\x5b\\x07\\x74\\xd7\\x64\\x5e\\xe1\\xaf\\x7e\\xb6\\xfc\\xd4\\x40\\xbc\\x69\\xd4\\x3e\\xde\\xaa\\xf9\\x35\\xfd\\x2a\\x52\\x95\\xac\\x19\\xa9\\x7d\\x70\\xaf\\x92\\x98\\x83\\x0f\\x81\\xc0\\xa5\\x09\\xf2\\x42\\xf4\\x73\\x37\\x24\\x78\\xfa\\x58\\x79\\xfb\\x2c\\xb8\\x51\\x10\\x80\\xfc\\x2e\\xcd\\x82\\x59\\xb8\\xc3\\xce\\x9e\\x8b\\x64\\x07\\x61\\xdc\\x79\\x27\\xc3\\x2e\\x7f\\x5b\\xae\\x97\\xa8\\xb8\\xac\\x93\\x56\\x62\\xe5\\xf4\\x5d\\x14\\xca\\xd6\\xd3\\x4a\\xff\\xc9\\xa1\\x94\\x14\\xc4\\x56\\x6f\\x45\\xf9\\x77\\x39\\x67\\x10\\x89\\x4c\\x53\\x99\\xed\\x44\\x80\\xf1\\x8e\\x90\\x95\\x7f\\xaa\\x76\\xcc\\xb5\\x12\\xa2\\xd0\\x75\\x73\\x05\\x8a\\x95\\xb4\\x2f\\xe1\\x81\\x02\\x49\\xd1\\xc8\\x5e\\xc4\\x31\\xa0\\x49\\xd1\\xae\\xcb\\x0f\\x11\\x83\\x79\\xbd\\xc3\\xf1\\xee\\x49\\x0b\\xc8\\xa0\\x54\\xc3\\x2c\\x3d\\xac\\x76\\x59\\x96\\x6c\\xdb\\x66\\xf9\\x95\\xac\\x40\\x3d\\x5e\\x79\\xeb\\x6b\\x25\\xb3\\xf3\\xf6\\x5a\\x6c\\xee\\xc2\\x20\\xd6\\x6c\\x05\\xf8\\xa8\\xa9\\x8b\\x80\\x79\\x9b\\xa4\\xf2\\xc6\\xdb\\xbb\\x4d\\xfb\\x58\\x62\\xc9\\xa4\\x6b\\xca\\x01\\x3e\\xbd\\xfa\\xba\\x74\\x94\\xa3\\x0c\\xe1\\x46\\x06\\xaf\\xc0\\xb0\\xf9\\x93\\x14\\x3f\\xed\\xee\\x78\\x96\\xd9\\xa6\\xbb\\x81\\x49\\x91\\x66\\xed\\x02\\xe9\\x41\\x86\\xaa\\xf3\\x21\\x87\\xae\\xb6\\xe2\\x82\\x50\\x1b\\xca\\x43\\xb5\\x7b\\x7e\\xfa\\x09\\x39\\xc9\\x34\\xbc\\x8f\\xbb\\xd2\\x6c\\x44\\xb6\\x18\\x33\\x5a\\x35\\xc6\\x92\\xff\\x99\\x6a\\x5b\\x95\\xd3\\x27\\xdf\\x9b\\x2a\\x66\\x21\\xb3\\xb0\\xf1\\x90\\xdb\\x1f\\x36\\xd9\\x11\\xd1\\xa6\\x63\\xa4\\xeb\\xf9\\xa2\\x85\\x4b\\xb4\\xf4\\x06\\x10\\x95\\xb6\\x98\\x12\\xc8\\x2c\\x2f\\xfe\\x3f\\x92\\xe9\\xb4\\x4d\\x2e\\xa6\\x31\\x69\\x88\\x1c\\xae\\x84\\x53\\xd6\\xee\\xf7\\xcf\\x69\\xc2\\x5a\\x28\\xb3\\xf8\\xdd\\xc7\\x01\\x48\\xef\\x26\\x72\\x1a\\x3c\\x1f\\x2e\\x62\\xd9\\xd1\\x0c\\xea\\x42\\xfc\\xa3\\xfa\\xcd\\x74\\x67\\x3a\\x4e\\x7f\\x33\\x50\\x73\\x64\\xaa\\x28\\x6c\\x0f\\x38\\xd7\"},\n{{0x82,0x3f,0x0c,0x29,0xfb,0xfd,0xd3,0xd1,0x82,0x8f,0x30,0x55,0xe9,0xec,0x01,0xff,0xd1,0xb5,0xa3,0x75,0x11,0x8d,0xdd,0x7e,0x4e,0x0c,0x43,0x71,0x9f,0x57,0x3f,0xf7,},{0x73,0x12,0x5f,0xc8,0x3a,0xbb,0x8b,0x7c,0x65,0x85,0x59,0xfc,0x12,0x73,0x93,0x23,0x1d,0x03,0xca,0x58,0x46,0xe0,0xc8,0x81,0x18,0xd1,0x3d,0x55,0xca,0x44,0x78,0x9d,},{0xfa,0x74,0x7b,0x6f,0xe3,0x38,0x1a,0xd6,0xbc,0x82,0xa9,0x56,0x43,0xc1,0xf4,0xa2,0x0b,0x76,0xba,0x73,0xbf,0xf0,0x0e,0x63,0x5d,0x64,0x20,0x2d,0x8b,0x0d,0xf0,0x3d,0xbc,0x56,0xb0,0x13,0x8b,0x3a,0x6d,0x41,0x98,0xff,0xaf,0x58,0xcc,0xd3,0xd3,0x88,0xed,0x25,0xeb,0xcf,0x77,0x04,0x43,0xe4,0x1e,0x9d,0x21,0x47,0x95,0x0a,0x30,0x0b,},\"\\x80\\x2c\\x39\\xce\\x7f\\x2a\\x50\\xbd\\x81\\x62\\x2a\\xdd\\x0d\\xf4\\xe0\\xfe\\x03\\xec\\x3d\\x2d\\x30\\x5a\\x45\\xa6\\x16\\x52\\x71\\xed\\x79\\xad\\xd2\\x43\\xb9\\xa0\\x0e\\x52\\x18\\x31\\x92\\xfe\\xb2\\x4c\\x4f\\xdb\\xd2\\x2c\\x80\\x7a\\xe1\\x00\\xef\\xcf\\x16\\x5b\\x9c\\x99\\x61\\x94\\xe0\\x0f\\xa8\\x17\\x76\\x5e\\xa9\\x4a\\x03\\x07\\x0e\\x48\\x66\\x86\\xb4\\x45\\xfc\\xb2\\x63\\xcc\\xfe\\x1f\\x58\\x62\\xf3\\xb8\\x4b\\x10\\xf3\\x90\\x08\\x0b\\xfc\\xae\\x44\\x7a\\xe0\\x06\\x97\\x42\\xb8\\x61\\x8f\\xa9\\x57\\x5f\\x7e\\x63\\x7a\\xd5\\x4e\\x83\\x4c\\xaf\\x03\\x94\\xd7\\x45\\x03\\x2c\\xe1\\xe2\\x55\\xc0\\x27\\x32\\x50\\xf1\\x50\\x4b\\x37\\xa0\\xad\\xd9\\x4a\\xa2\\x45\\xc7\\xde\\x52\\xc8\\x0e\\x05\\xd6\\xe0\\xa9\\x6a\\x14\\x41\\x05\\x43\\x82\\x6a\\x49\\xe9\\xb9\\x45\\x62\\x6d\\x4e\\x89\\xf5\\x50\\x27\\x16\\x3d\\x4b\\xd6\\xd0\\xe9\\xbd\\x1a\\x24\\x77\\xf6\\x7d\\x3d\\x56\\x68\\xa4\\x2e\\x94\\xd8\\xb6\\x11\\x93\\xd8\\x21\\xe0\\xd1\\xb2\\x30\\xfc\\xad\\xc5\\x36\\x13\\xb7\\x5b\\x02\\xcf\\xb8\\x15\\x84\\x56\\x07\\x7e\\xbd\\xf5\\xa5\\xf0\\x0c\\x3b\\x5b\\x18\\x63\\x70\\xca\\xfe\\xc4\\xa2\\x1c\\x69\\xdc\\xe1\\xf0\\x1e\\xfe\\xf2\\x3c\\x37\\xab\\x90\\xf8\\x58\\x23\\x8a\\xef\\xbe\\x21\\x2b\\x55\\x6d\\x2f\\x07\\x34\\x06\\x55\\x9f\\x1a\\x51\\xd8\\x4e\\xff\\xfd\\xce\\x07\\xb0\\x0d\\x01\\xbb\\xf3\\x37\\x71\\xcc\\x12\\xc9\\x60\\xac\\x89\\x36\\x5a\\x9c\\x82\\xc5\\x23\\x43\\xf7\\x60\\x33\\x81\\xb8\\x90\\x23\\xc1\\xa6\\xe7\\x02\\xa5\\xb1\\xe4\\xbd\\x19\\x1e\\xa6\\x97\\x0b\\x5e\\xa4\\x51\\xea\\x05\\xb5\\x9b\\xf8\\x3e\\x55\\xf2\\x9a\\x1f\\x80\\x32\\x12\\xbb\\x2e\\x58\\xf0\\x61\\x63\\x33\\xd9\\x11\\x47\\x08\\x52\\x9e\\x8b\\x6c\\x60\\x81\\xde\\xeb\\x7c\\x29\\x9a\\x5a\\x2a\\x53\\xcc\\xd2\\x4e\\xd5\\x8f\\xfb\\xfe\\x50\\x3d\\x80\\x61\\x4a\\xdb\\x05\\xca\\x11\\xcf\\x29\\xde\\xd0\\x09\\x04\\xea\\x12\\x39\\xf8\\x2b\\xa4\\x0c\\x79\\x3e\\xbc\\x33\\x97\\x75\\xf8\\xb0\\xfe\\x39\\x01\\xf5\\x48\\x2e\\x31\\x0c\\x79\\x3c\\x6e\\x2c\\xf0\\x1d\\xc1\\x57\\x72\\x7a\\xf2\\x38\\xf4\\x9c\\x98\\x62\\x80\\x4b\\x04\\x75\\x51\\xfd\\x88\\x6f\\x4a\\x48\\x99\\xe2\\x2a\\x6a\\x65\\x70\\x11\\x17\\xa3\\x85\\x80\\x55\\xbb\\xfe\\x96\\x6e\\x37\\x0e\\x73\\x3e\\x17\\xef\\xad\\xa2\\x85\\x9f\\xd8\\xff\\xa9\\xe0\\x1f\\xce\\x56\\x06\\xa2\\x55\\x36\\x76\\x78\\xf4\\xbd\\x4e\\x21\\xe5\\xda\\x0f\\xef\\x30\\x75\\x7f\\x34\\xe3\\x89\\xf7\\x6b\\x7d\\x57\\xc4\\xe4\\x10\\xa0\\x02\\xe9\\x00\\xe4\\x8f\\xb2\\x18\\xc8\\xf2\\x77\\x8f\\x14\\x8f\\xee\\x56\\x96\\x5f\\x5b\\x47\\x3e\\x25\\x25\\x6c\\x23\\xa7\\xaf\\x19\\x83\\x42\\xcf\\x3e\\xf0\\x2b\\x84\\xdf\\x2c\\xd5\\x80\\x0a\\x46\\x1c\\x1b\\x07\\xbd\\xa2\\xf4\\x26\\x28\\xa6\\x8a\\xd2\\x9d\\xbb\\x82\\xa4\\x70\\x96\\x7d\\x73\\x02\\xc9\\x93\\xb2\\x34\\x13\\x6e\\x5b\\xf2\\x55\\xe6\\x24\\x8b\\x10\\x2c\\x2b\\xff\\xb2\\x01\\x72\\x37\\x1f\\x1c\\xa3\\xe1\\x0b\\x08\\x10\\xe8\\x64\\x95\\x03\\x54\\x6d\\x9a\\x73\\x1c\\xf1\\x9b\\x08\\x33\\x57\\xd4\\xcf\\xec\\xc8\\x9b\\xed\\xb5\\x35\\x06\\xfe\\x19\\x9b\\x67\\x03\\x91\\xa6\\x20\\x06\\x9a\\x30\\x81\\xf2\\x53\\xb4\\xd7\\x90\\x88\\x0a\\xa2\\x3b\\x53\\xe9\\x7c\\x75\\xdc\\x0c\\x36\\x05\\x40\\xe5\\xb0\\xa3\\xef\\xb1\\xac\\xcf\\xfd\\x13\\x74\\x14\\xff\\x84\\x23\\xd5\\x46\\x46\\xfc\\x56\\xba\\x5f\\x53\\xbd\\x84\\xc7\\x26\\x7c\\x2f\\x7e\\xe3\\xe3\\x76\\x07\\x54\\x41\\x54\\x36\\x5f\\x9f\\x85\\x08\\x1d\\xd7\\xd2\\xee\\x75\\xd3\\x02\\x27\\x5c\\x79\\x9e\\xf2\\x42\\x7c\\xa6\\x49\\x63\\x55\\xdc\\xda\\x1d\\x44\\xe0\\xd9\\x77\\xbf\\x68\\xdb\\x30\\x06\\x50\\x0a\\xe3\\xf4\\x00\\xd6\\xa8\\xc7\\xcf\\x47\\x05\\x7d\\x4f\\xc8\\x7e\\xee\\xcb\\x02\\x11\\x6b\\x73\\xee\\xd6\\xce\\x1f\\xcc\\xef\\x6e\\x8f\\xb8\\xae\\xa3\\x63\\xb2\\xf6\\xf5\\x32\\x2a\\x5f\\x07\\x53\\xf4\\x58\\x99\\x53\\x76\\x46\\xd5\\x86\\x51\\xbe\\x90\\x37\\xbf\\x91\\x42\\x3c\\x29\\x86\\xf5\\xcc\\x2b\\xcb\\xce\\x4f\\xae\\xc9\\x03\\x49\\x8b\\x40\\xfc\\x2d\\xea\\xb6\\x60\\x3d\\x6e\\xea\\x58\\x5d\\x27\\x20\\xd2\\x1b\\xb2\\x72\\x2b\\xc0\\x5b\\x35\\xae\\xd2\\xbc\\xc0\\xe8\\x04\\xfe\\x9d\\x23\\x9f\\xaf\\xda\\x7d\\xda\\xfe\\x1d\\x78\\x60\\xab\\xb0\\xfb\\x28\\xf4\\xbf\\x2b\\x1f\\xbb\\x62\\xa7\\x86\\xe4\\x55\\xbe\\x02\\x4b\\x19\\x3b\\x78\\x30\\xbe\\x0d\\x55\\x8f\\x02\\xc9\\xf3\\xae\\x31\\xdc\\x10\\x7e\\xe9\\x42\\x1d\\xc5\\xf0\\xb0\\xf8\\x94\\x02\\xb7\\x1a\\x45\\x81\\x40\\x15\\x36\\xbc\\x47\\x30\\x85\\x06\\xd9\\x69\\x39\\xa2\\x06\\x36\\x27\\x44\\xe2\\x7d\\xde\\x94\\x4f\\x40\\x96\\xa1\\x2b\\x5f\\x63\\xda\\xb6\\x4d\\x04\\x14\\x84\\xd3\\xfd\\x91\\xa6\\x2c\\x2f\\x0e\\xf9\\xae\\x78\\x74\\x22\\xeb\\x27\\xfe\\xd0\\x80\\x2e\\x25\\xf9\\xbc\\x77\\x5c\\x49\\x15\\xa8\\x37\\xfe\\x3e\\xb7\\xb9\\xd5\\x84\\x3e\\x4d\\x82\\x10\\xc6\\xb4\\x94\\xb6\\x12\\x81\\x63\\x7a\\x6b\\xe3\\x20\\x52\"},\n{{0x65,0x67,0x66,0x33,0x37,0x42,0x14,0xc4,0xac,0x4b,0x7b,0xce,0xa9,0xf1,0xcc,0x84,0xb1,0xb7,0xe7,0x94,0x11,0xe3,0x10,0x52,0x5a,0xce,0x38,0x5f,0x45,0x66,0xc1,0xd5,},{0x0e,0x6e,0xc5,0x80,0x1d,0x8b,0xd6,0xb1,0xeb,0x42,0x14,0x21,0xa1,0x40,0x8f,0x13,0x4c,0xf7,0x12,0x33,0x8e,0x0f,0xfc,0x24,0xcd,0xcc,0xdc,0x4f,0x7f,0xa3,0x1d,0xbe,},{0xe0,0xb8,0x67,0xc9,0xdb,0xda,0x35,0x32,0x34,0x33,0xc0,0x46,0xe0,0x83,0x0c,0x25,0x1b,0x43,0x46,0xc5,0x39,0x59,0x72,0x28,0x6b,0x3a,0x72,0x31,0x0e,0xd4,0x52,0x6e,0x54,0x5d,0xc0,0x9d,0x39,0x18,0xf2,0xeb,0x99,0x20,0xbc,0x9b,0x24,0x1e,0x90,0x50,0xd8,0x48,0xd3,0x83,0x02,0x88,0x65,0x15,0x91,0xf9,0x36,0xd3,0xba,0xe4,0x53,0x01,},\"\\x9d\\x62\\x2c\\x20\\x67\\x87\\x69\\x40\\x93\\xc6\\xf2\\x9f\\x93\\x61\\x9f\\x21\\xbb\\x64\\xc0\\x39\\x41\\x6d\\x20\\xdc\\x70\\x8a\\x08\\x4a\\x9d\\x2e\\x49\\x0c\\xf5\\x65\\x8e\\x13\\xd6\\x2c\\xb0\\xd2\\x1e\\xab\\x00\\xe4\\x2d\\x85\\x1b\\xc6\\xec\\x75\\xda\\xf4\\x05\\xd2\\x37\\x32\\x46\\xee\\xa4\\x15\\xe8\\x66\\x29\\x1b\\xab\\xf7\\x64\\x97\\x68\\x0a\\xaf\\x04\\x42\\x5a\\x42\\x55\\x2b\\x10\\x7d\\x58\\xcd\\x18\\x56\\x1c\\x8c\\x94\\x83\\xf7\\x40\\x74\\x4c\\xbf\\xa6\\x05\\x4c\\x1b\\x12\\x6f\\x5a\\x76\\x65\\x9a\\xc1\\x9d\\xdd\\xad\\x4a\\xb5\\xa0\\x91\\x55\\xd8\\xc0\\x50\\xb5\\x35\\x4e\\x06\\xa4\\xdd\\x3e\\xe3\\xa6\\xf9\\xc9\\x1e\\x8b\\x4c\\x7a\\xf2\\x74\\x96\\x64\\xe7\\xab\\xe9\\x70\\x61\\x58\\x9e\\x15\\x3c\\x58\\xe2\\x7c\\xf2\\x99\\xa2\\x5f\\x2b\\x53\\x0c\\x06\\x07\\x31\\xec\\x0f\\x43\\x66\\xbd\\x1d\\xeb\\xeb\\x4d\\x4e\\x91\\x2e\\x76\\xe5\\x08\\x53\\x4d\\x43\\x3e\\xc4\\x8f\\x96\\xb6\\x2e\\x15\\x0d\\xe9\\x39\\x63\\xa1\\xb3\\xe6\\xc8\\x09\\x1b\\x49\\x5a\\x96\\x51\\x8c\\xe3\\xd3\\xb9\\xa8\\xdb\\xdc\\x2a\\x13\\xfd\\xd0\\x77\\xf2\\x23\\x1d\\xe8\\xd7\\x6f\\x56\\xd9\\xab\\x1c\\x2f\\x9e\\xfa\\xbc\\xe4\\x63\\x83\\x64\\xf8\\xfb\\x2a\\x2c\\x68\\x3c\\xa8\\x19\\xb7\\x03\\xab\\x45\\x3b\\x11\\xd3\\x7a\\x69\\xfa\\x4b\\xcb\\x80\\x23\\x98\\x08\\x34\\xf7\\xb9\\x02\\xad\\x18\\x19\\xfc\\x02\\x92\\x12\\xfd\\xea\\x0a\\xbf\\x11\\xde\\xc8\\x8c\\x55\\xd6\\x8e\\xf8\\x7a\\x26\\xdb\\xb1\\x5d\\xc3\\xd3\\xdf\\xbc\\xdd\\xdd\\x5e\\xd7\\x1b\\xe8\\x6f\\x32\\xc7\\x6e\\xe2\\x22\\x1d\\x92\\x43\\x68\\x3d\\xf9\\x51\\x65\\x64\\xb2\\x6b\\xab\\x5c\\x84\\x5d\\x4d\\xfe\\x0a\\xdc\\xc7\\xcb\\x9f\\xe1\\xee\\x2c\\x05\\x1a\\xf5\\x90\\x8c\\xe0\\xcc\\x3a\\x90\\x90\\x4d\\xbc\\x0d\\x36\\x80\\xed\\x49\\x92\\xf4\\x6c\\xe2\\x5c\\x2e\\xe8\\x51\\xc4\\x14\\xf0\\x18\\x7d\\x89\\x3e\\x5c\\x3b\\x01\\x89\\xa7\\xbb\\x68\\x93\\xd6\\x83\\xf5\\xe3\\x39\\x4c\\xc0\\x46\\x29\\x9a\\x16\\xa1\\xc1\\xb5\\x69\\x59\\x33\\xa8\\x9b\\xb1\\x30\\x30\\x85\\x5b\\x81\\xb3\\xc7\\x46\\x85\\xf7\\x19\\xde\\x01\\x60\\x57\\x5a\\x0f\\xf0\\xa9\\x1f\\xd9\\x43\\x47\\xb8\\xbc\\xbe\\x12\\x5d\\x1d\\x3f\\x9c\\xe7\\x72\\xa8\\x12\\x6e\\x00\\xf5\\x63\\xb3\\x18\\x96\\x56\\xd5\\x52\\x2c\\x18\\x7a\\xb8\\x31\\xa7\\xad\\xe7\\xac\\x06\\xfd\\xca\\xc7\\xf1\\xd4\\x58\\x82\\xe5\\x1f\\x9b\\xf5\\xb4\\x4a\\x2d\\xab\\xa4\\xa5\\x3d\\xbb\\x31\\x97\\x0b\\x4a\\x0f\\x12\\x72\\xfe\\x14\\x08\\x7e\\x0c\\x3c\\x7e\\x45\\x42\\x31\\x2f\\xe7\\x4d\\x76\\x7f\\x21\\xe7\\xea\\x48\\x7d\\x52\\x84\\x28\\x4f\\x46\\xf2\\x0f\\x32\\xc5\\xb1\\x6e\\x1e\\x0a\\xc8\\xd7\\x96\\xab\\x2f\\x80\\xb3\\x44\\xe7\\xa8\\xd8\\x4d\\x5d\\xe8\\x23\\xa5\\x08\\x97\\x75\\x2d\\xc5\\x49\\xa4\\x8f\\xc1\\x0b\\xcd\\x43\\x6a\\x7a\\x93\\xe9\\x7c\\xd0\\x5d\\x78\\x30\\x13\\x8f\\x32\\x38\\x79\\x68\\x0c\\x34\\x3c\\x16\\x46\\x7d\\x26\\x4d\\x74\\x9b\\xf4\\x5e\\x40\\xf3\\x9f\\xbc\\x3a\\x00\\xc4\\x3b\\x00\\x69\\x3b\\x01\\x56\\x76\\x8f\\xf2\\xe3\\xf8\\xad\\x9e\\xb6\\x40\\x50\\x22\\xf5\\xca\\xda\\x66\\x94\\xe8\\xa3\\x3c\\xdc\\x59\\xc6\\x67\\x3c\\x44\\x11\\x72\\x44\\xeb\\x03\\xfd\\x7f\\xd6\\x75\\x93\\x0c\\x29\\x4e\\xdd\\x29\\x40\\xf5\\xf1\\x80\\x95\\x3d\\x91\\x0c\\x55\\x48\\x5b\\x20\\x57\\xae\\x0c\\x93\\x02\\xf4\\xa8\\xe8\\x31\\xa5\\x53\\x0e\\x3c\\xbb\\xf6\\xf4\\x72\\x22\\x40\\x83\\xa9\\x52\\xa8\\x39\\x0a\\xb0\\x0d\\xc0\\xf6\\x9d\\xfd\\x88\\x0e\\xea\\x2d\\x73\\x9d\\x21\\x8d\\x6a\\x66\\xf2\\x37\\xf1\\x0d\\x44\\x01\\xaa\\x75\\x8f\\xf8\\x12\\x0c\\x0a\\xe2\\x76\\x61\\x27\\x84\\x90\\x24\\xf5\\xa4\\xcc\\x57\\x4a\\x5b\\x02\\xb9\\x35\\x96\\x68\\x12\\xcd\\x1f\\xb6\\xd7\\x9d\\x0c\\x4f\\x59\\xff\\x80\\xf0\\x35\\xa0\\xb1\\x09\\xcc\\xcb\\x22\\xfb\\x08\\x53\\x5b\\x87\\x41\\x49\\xed\\xf2\\xa0\\x97\\x0c\\x14\\x88\\x84\\x27\\xd0\\x7d\\x1e\\xaf\\xa6\\x84\\xa6\\xd3\\x45\\x4e\\x49\\xb2\\x25\\x18\\x4c\\x6b\\x99\\x3e\\xc8\\xdd\\xb8\\xb5\\xa3\\x5e\\xe4\\x5f\\x87\\xf6\\x92\\x66\\xd4\\x90\\x96\\xa3\\x17\\xd8\\x6a\\xde\\x27\\xf4\\x52\\x9f\\xe7\\x23\\x64\\xd0\\xb9\\x58\\x00\\x72\\x99\\xd9\\xde\\x87\\xd6\\xff\\x9f\\xb0\\x4d\\x57\\x3a\\xea\\x46\\xba\\xc8\\xeb\\x76\\x47\\x52\\xeb\\x46\\x5c\\xaa\\xab\\xa6\\x89\\xa6\\x46\\x0c\\x11\\x07\\x30\\xbd\\xd0\\x8b\\x16\\x89\\xde\\x7b\\x05\\xde\\x59\\xaf\\x9f\\xe2\\x44\\xac\\x36\\x3e\\x95\\xc9\\x8b\\x66\\x93\\x59\\xaf\\x90\\x31\\xa3\\xa9\\x3b\\xa6\\x31\\xab\\xf1\\xf6\\x1d\\x20\\xef\\x7f\\xc6\\x88\\x3b\\x48\\x40\\xfc\\x92\\x67\\x12\\xe1\\x3d\\x87\\x4b\\x72\\x2f\\x6a\\x79\\xb1\\x60\\x70\\xc0\\x31\\x13\\x25\\xe9\\xa7\\x0f\\xcd\\x86\\x91\\x6c\\xfa\\x1d\\xa7\\xf9\\xd0\\x56\\x3a\\x22\\xfe\\x9b\\xfe\\x85\\x4b\\x0c\\x18\\x6c\\x86\\x63\\xb0\\x61\\xb6\\x5b\\xc0\\x71\\xe8\\x39\\x93\\x8d\\x8f\\xdd\\x7c\\xf8\\xf6\\x95\\x2a\\x64\\x67\\xfa\\xd8\\xe5\\x84\\x90\\xed\\x2b\\x26\\x81\\x33\\x01\"},\n{{0xd2,0xed,0xed,0xcd,0x85,0x32,0x06,0xcb,0xf5,0x9b,0xd7,0x4a,0x25,0xa3,0x03,0xfa,0x2d,0x6c,0x39,0x36,0xbb,0x48,0xeb,0x42,0xf6,0xd9,0x00,0xcb,0xe8,0x07,0x72,0xbe,},{0x22,0x44,0x11,0x1e,0x2e,0x76,0x9e,0xab,0x81,0x87,0x1e,0x06,0xc5,0x80,0x17,0x8c,0x23,0x5c,0x7b,0xf4,0xa5,0x2d,0x2e,0xcc,0xe1,0x18,0x87,0xa9,0xb4,0x6c,0x45,0xc8,},{0xbe,0x3c,0x2b,0x56,0x7f,0xe8,0xc2,0x08,0xc9,0x8e,0x71,0x97,0x11,0x7e,0xb0,0x1b,0x3c,0x19,0x7b,0xdf,0xc8,0x58,0x56,0x2d,0xc5,0xcd,0x90,0xf8,0xe2,0xc0,0x35,0x70,0x42,0x30,0x39,0x95,0xba,0xba,0x2f,0x40,0xb7,0x34,0x5c,0x56,0xdb,0x0b,0x46,0x25,0x58,0x0a,0xa8,0xdc,0xc4,0x8d,0xf6,0x01,0x9d,0x23,0xa8,0x38,0xea,0x71,0x72,0x02,},\"\\x80\\x70\\xbc\\x0d\\xb0\\x89\\xa5\\x92\\x54\\x46\\x01\\x9b\\x7e\\x40\\x3c\\x74\\xec\\x78\\x90\\x3e\\x4b\\xd5\\x4b\\xc1\\xd0\\x8a\\x54\\xa6\\xf0\\xed\\x75\\xa8\\x5b\\x76\\x3f\\xf5\\x4d\\xc3\\x3a\\x26\\x00\\xcc\\xb4\\x57\\xfd\\xba\\xea\\xe5\\x48\\x47\\x7f\\x6d\\x69\\x47\\xae\\x26\\xde\\xb7\\x1e\\xac\\xd1\\xd2\\xd6\\x22\\x82\\xa0\\x83\\x84\\x3b\\xe4\\xe5\\x93\\x1d\\x91\\xc9\\x3b\\x62\\x82\\xc5\\x88\\x07\\xce\\x8f\\x0d\\x88\\x0b\\x14\\x38\\xda\\xd8\\xfd\\xcb\\xa8\\x61\\x2d\\xf7\\x3b\\x9f\\xaf\\xf3\\xa9\\xf7\\xdb\\x30\\x05\\x25\\x05\\x36\\xaa\\xbd\\x98\\xae\\x02\\x7a\\x89\\x5e\\x10\\xb5\\xcb\\x7b\\x69\\x87\\x5c\\x0f\\x39\\x93\\xaf\\x24\\x51\\x92\\xf4\\x39\\x3e\\x9c\\x4d\\x34\\x05\\x74\\x6e\\x31\\x1d\\x3a\\x91\\x44\\x7f\\xcd\\xbd\\x73\\x06\\xb6\\x02\\x0c\\x93\\x3b\\xba\\xb9\\xe3\\x9d\\x13\\x49\\x16\\x25\\x03\\x5c\\x9c\\x63\\x6e\\xfa\\x17\\x39\\xc3\\x58\\x87\\x10\\xa8\\x79\\xd9\\xe3\\xce\\x17\\x64\\x61\\x6f\\x10\\x82\\xe8\\xdf\\xf5\\x75\\x59\\xc3\\xf5\\xa5\\xd7\\x6d\\xd3\\x01\\x12\\x4f\\xa4\\x89\\xfb\\x94\\x9e\\x9e\\x03\\x9d\\xd4\\x62\\x1b\\xda\\x60\\xf0\\xb8\\x6b\\x31\\x1e\\x78\\xed\\x0a\\xb3\\xb5\\x28\\x96\\x50\\x44\\xb2\\x3d\\x78\\xee\\x2f\\x81\\x06\\x1f\\x8e\\xdb\\xd6\\x92\\x99\\x33\\xd1\\x8c\\x02\\x07\\xde\\xc4\\xb5\\xb6\\xb2\\xfa\\x4a\\xca\\x27\\x47\\xcf\\x5b\\x11\\x0d\\xf0\\x0b\\x0c\\x98\\x27\\xbd\\xb3\\xd9\\xdb\\x2c\\x7b\\x03\\x28\\xd4\\x0d\\x99\\xe1\\xf6\\xb2\\x28\\xe4\\x0d\\xad\\xae\\x78\\xae\\xda\\x02\\x89\\xb6\\xa2\\x3d\\x4e\\xb5\\x83\\x70\\x88\\xe5\\xd8\\x84\\x13\\x63\\x2c\\xcc\\x22\\xe2\\x1a\\x73\\x76\\x8c\\x67\\x32\\x01\\xe9\\xa8\\xd8\\xdc\\x6e\\xb6\\xf7\\x39\\x7f\\xed\\xbd\\x39\\x8d\\x26\\xf9\\x69\\x2c\\xa7\\x2f\\x6d\\x6c\\xf0\\x56\\xaa\\xac\\x50\\xac\\x2f\\x3b\\x26\\x6d\\xbe\\x5e\\x7b\\xe7\\xa0\\x24\\x77\\x45\\x78\\xea\\xd5\\x85\\x24\\x5d\\xaa\\xa7\\x3e\\x0a\\xaf\\x83\\x3c\\x07\\x0b\\xa4\\xb2\\x04\\x4c\\xcb\\x5e\\x5c\\xd1\\x6f\\x9c\\x0a\\xd9\\x2e\\xa8\\x44\\x80\\x55\\xdd\\x82\\x8c\\x79\\x93\\x5a\\xa6\\xc0\\x74\\x1f\\x9e\\x2b\\x81\\x03\\x24\\xfd\\xc6\\xe6\\x1e\\x84\\x2f\\x94\\x57\\x22\\x68\\xbf\\x7d\\x5a\\xdf\\xa7\\xab\\x35\\xb0\\x7f\\xb1\\x9e\\x78\\x15\\xa8\\xaa\\x5d\\x81\\x13\\x01\\x30\\xac\\x5c\\xda\\x8a\\x47\\x51\\xee\\x76\\x03\\x8c\\x0a\\x6b\\xc2\\xfa\\xba\\x4c\\x49\\x7e\\x62\\xb9\\xf1\\xf1\\x94\\xb8\\xa5\\x99\\xb0\\x77\\x01\\x81\\x4b\\x6d\\xfb\\x7d\\x84\\xbc\\xdd\\x5b\\x7b\\x5b\\xc2\\x24\\x9f\\x1d\\x38\\x45\\xef\\xf9\\xef\\x8c\\xc7\\x32\\x85\\x35\\xd7\\x0d\\x53\\xc7\\xaa\\x0c\\x73\\x05\\x90\\x1d\\xe7\\xc4\\xed\\x2f\\xe1\\x83\\x82\\x65\\xd4\\xa4\\x17\\xb8\\x76\\xad\\xbd\\x88\\xeb\\x93\\x3f\\x27\\xc9\\xaa\\x48\\xc8\\xc7\\xe3\\x4e\\x48\\x14\\x7c\\xcf\\xfb\\x2f\\xb6\\x1a\\x34\\x8f\\xea\\x13\\xef\\x67\\xcd\\xf2\\xe0\\x39\\xe3\\x3f\\xd8\\x9e\\x2c\\x1a\\xd2\\xa4\\x25\\x4e\\x3b\\xf7\\x48\\x45\\x2a\\xa8\\x3e\\xfe\\xca\\x46\\xe7\\x80\\xed\\xe1\\xd1\\x3f\\xf4\\xcc\\x5e\\x7d\\x01\\xed\\x45\\xeb\\x8c\\x74\\x81\\x8d\\x48\\x60\\xaf\\x47\\x59\\xa8\\x3e\\x14\\x88\\x96\\xab\\x68\\x73\\x43\\x95\\x76\\x0e\\x00\\x14\\x6b\\x79\\x3c\\x3e\\x72\\x89\\x8a\\xa0\\xb3\\xc5\\xe0\\xc1\\xd3\\xfd\\xf1\\x21\\x58\\xd2\\xe8\\xff\\x11\\x23\\xa3\\xa0\\xc6\\x4c\\xf6\\x37\\x4a\\x7f\\x44\\xf1\\x1a\\x57\\x5e\\x48\\xa3\\x79\\x18\\x1b\\x30\\xa4\\x86\\x5c\\xfd\\x02\\x2a\\xa9\\x83\\x27\\x56\\x35\\xce\\x4f\\x2c\\xc4\\x0b\\xfe\\x06\\x60\\x67\\xec\\x4f\\xe2\\x41\\xfa\\x04\\x7b\\x55\\x27\\x0a\\x1a\\xd0\\x77\\x6c\\x5f\\x96\\x86\\x10\\x14\\xcb\\xf4\\x0a\\x04\\x32\\xc5\\x59\\xf2\\x2d\\x79\\x34\\x2b\\x79\\xf8\\xe7\\x04\\x2d\\xcc\\xfb\\x1c\\xf5\\x0f\\x83\\x08\\x5f\\x80\\x63\\xfb\\x18\\x87\\xed\\x2d\\xfc\\x9d\\xb7\\xef\\xc9\\x6d\\xaa\\x0f\\xf2\\xbc\\x4f\\x52\\x33\\x5b\\x02\\x11\\x2d\\x16\\x39\\x2e\\x13\\x4c\\x02\\x23\\xde\\x45\\x8f\\xc0\\x72\\xcc\\x22\\xbf\\x9e\\x7e\\xab\\xc0\\x62\\x08\\x18\\x0a\\x57\\xe7\\xce\\x48\\x05\\xee\\x4e\\x0f\\xc0\\x15\\x84\\x09\\x98\\xfd\\x56\\x86\\x44\\xa0\\x38\\x6b\\x3d\\x8e\\x7d\\xda\\x52\\xab\\xf6\\x4f\\x7d\\xd0\\x08\\x68\\xfc\\x84\\xf0\\x36\\xca\\x8a\\x78\\xe9\\xba\\x81\\x71\\xca\\x90\\x26\\x7c\\x74\\xe6\\x15\\x9a\\xca\\xc7\\xaf\\x5b\\xf2\\x37\\x59\\xab\\xc5\\x3d\\x82\\xe7\\x93\\xdb\\x87\\xfd\\xad\\xe1\\x36\\x33\\x54\\xff\\xdc\\xb0\\xbd\\x4c\\xc9\\x21\\x3f\\x5c\\x84\\x54\\x45\\xfc\\x64\\x9b\\x2a\\x1f\\x32\\x9f\\x9d\\x41\\xd8\\xa0\\x31\\xab\\x46\\xb4\\x72\\x16\\x0f\\x03\\x43\\x4b\\x4b\\x6b\\xc5\\xa4\\x01\\x52\\x4d\\x61\\x79\\xad\\x66\\xf9\\xe2\\x21\\xc9\\x06\\x7f\\xc8\\x7f\\xe4\\xa7\\x7e\\x21\\xe8\\x02\\x3b\\x61\\x69\\xeb\\xf1\\x09\\x0c\\xd5\\x56\\xa9\\xbe\\x50\\xb9\\x18\\x7f\\xe4\\x60\\x7c\\x59\\x25\\xe6\\x0b\\x41\\x4f\\x6a\\x5c\\xbf\\x8a\\xfa\\x15\\xed\\x0e\\xb3\\x4b\\x67\\xb4\\xc9\\xc5\\xd5\\x4a\\xdb\\xe6\\x40\"},\n{{0xb5,0x69,0xf7,0xc1,0xaa,0xdf,0x56,0xed,0x1b,0x5f,0xa1,0xb6,0xfa,0xd6,0x48,0xd0,0xdc,0x54,0x4f,0xf8,0xfc,0xd1,0x73,0x78,0x0d,0xe4,0x1a,0x7d,0x4d,0xe6,0x0c,0xb6,},{0x9e,0xff,0xa4,0xae,0xd9,0xc6,0x58,0xe4,0x34,0x60,0x71,0x43,0x44,0x68,0xa0,0xb8,0xa0,0x4e,0xcf,0x78,0x41,0x69,0x9d,0x63,0xe8,0x88,0x7c,0xe2,0x05,0x57,0x0c,0xea,},{0x2e,0x32,0xba,0x05,0x56,0xbd,0xe9,0x74,0xd7,0xa1,0x9b,0x3b,0x9a,0x1e,0x92,0xf1,0x83,0x92,0x4c,0x4b,0x74,0xc5,0xd7,0x51,0xb5,0xab,0x3d,0x00,0x79,0x67,0x01,0x6e,0xc0,0x3a,0xfe,0x91,0xd7,0x42,0xfb,0x22,0xb6,0x3e,0x5e,0x55,0xb2,0xfc,0xb6,0xc6,0x1a,0x46,0xe9,0xdc,0xe7,0xfe,0x9f,0xa3,0x0b,0xbf,0x66,0xae,0xf4,0xb8,0x5f,0x09,},\"\\x7c\\x5a\\xa4\\xdc\\x80\\x78\\xaa\\x77\\xe8\\xb3\\xb7\\xfe\\xe6\\x10\\x84\\xcf\\xad\\x76\\x47\\x62\\xf1\\xef\\x26\\xd8\\xde\\xb7\\xf2\\xf3\\xb1\\x86\\xdf\\xc7\\x72\\x48\\x75\\x50\\x19\\x78\\x45\\xfb\\xa2\\xf4\\xc2\\x3c\\x83\\x5b\\x9b\\x58\\xdd\\x0b\\x63\\x5c\\x64\\x91\\x35\\x13\\x7f\\x24\\x8f\\x5e\\xf7\\x13\\x56\\x4d\\xe3\\xc9\\x66\\xef\\xa5\\xf6\\xdb\\x6b\\xea\\x9e\\x30\\x97\\x07\\x49\\xf8\\xe8\\x72\\xd8\\xd7\\xae\\x45\\x35\\xb7\\x5e\\x17\\x6e\\xa0\\x48\\x9b\\x91\\x5f\\x34\\x71\\xd8\\x27\\xeb\\x5b\\x44\\x45\\x86\\x48\\x8c\\xfc\\x3f\\xa6\\xa4\\x50\\x82\\xda\\xcb\\x82\\x64\\x95\\xe5\\x0a\\x3b\\x5d\\xc6\\xbb\\x93\\x0a\\x33\\x1f\\x30\\xc3\\x85\\xbc\\x3b\\x24\\xce\\x70\\xb8\\x95\\x96\\xdb\\x6b\\xfb\\x68\\x7d\\x99\\xa5\\x81\\x98\\x7c\\xa8\\x76\\xea\\x0e\\x75\\x76\\x96\\xb3\\xfc\\x03\\x77\\x9a\\x65\\x81\\x30\\xc4\\x10\\xb3\\x44\\xed\\xac\\xc4\\x27\\x7d\\x44\\x84\\x54\\x99\\xd6\\x78\\xe1\\x41\\x4f\\x15\\xf3\\x6e\\x16\\x63\\x35\\x18\\x95\\x69\\xce\\xf3\\x56\\x7a\\xc2\\xe3\\xab\\x82\\x1c\\x91\\xc9\\x32\\x74\\xf5\\xc2\\x8a\\x5d\\x1f\\x7c\\x1b\\xf5\\x09\\x9b\\x10\\xf8\\x4e\\xcb\\x13\\xa4\\xe4\\x53\\x8f\\x66\\x49\\xbf\\x74\\xf7\\x39\\x4b\\x70\\x3e\\xf5\\x36\\x49\\xd8\\x15\\x16\\xcb\\x1d\\xb5\\x21\\x41\\x60\\x65\\xcf\\x9f\\x27\\x6a\\xb8\\x0c\\x93\\x08\\x89\\x7a\\x27\\xdf\\xe3\\x7e\\x5e\\x14\\x2f\\x18\\x19\\xb8\\xd3\\x48\\xdf\\x50\\xa0\\x46\\xa1\\x28\\x88\\xe3\\xb7\\xf2\\xdc\\xc7\\x0f\\x52\\x18\\xd1\\x5e\\xbb\\x9a\\xa7\\x29\\x1a\\x1a\\x92\\xac\\x44\\x5c\\x51\\xd3\\xa5\\x3d\\xd6\\x91\\xef\\xff\\xcf\\x5a\\x01\\xe8\\x76\\xa7\\x2a\\xa4\\x81\\xeb\\x4f\\x12\\x1a\\x07\\x23\\x97\\xd8\\xcc\\x93\\xbb\\xc2\\xc9\\xa6\\xc2\\x8c\\xc8\\x9b\\x11\\xff\\xc0\\xe9\\x10\\xd8\\x2d\\x9d\\x62\\x98\\xa3\\x67\\xa0\\xe1\\xe3\\xe8\\xc8\\x65\\xe4\\x32\\x6a\\x31\\x9b\\x22\\x66\\x6e\\x52\\x9f\\x19\\x98\\xf1\\xb3\\xc8\\xef\\xb5\\xfc\\x21\\xcc\\xe9\\x70\\x40\\xfb\\x62\\x47\\xda\\xa0\\x00\\x0a\\xc5\\x55\\x4d\\x89\\xe7\\xb2\\x71\\x59\\xdd\\x0b\\x18\\x00\\xb7\\x60\\xb7\\x9c\\x91\\xef\\x6e\\x97\\x0b\\x1e\\x6c\\x5f\\xf4\\x24\\x42\\xb1\\xb3\\xae\\x4d\\x3c\\x43\\x9e\\x08\\xec\\x2f\\x6b\\x94\\x17\\x73\\x87\\xca\\x5c\\x01\\xdf\\x6f\\x07\\xf8\\xe3\\x4d\\x25\\xed\\xbd\\x49\\xd8\\xb7\\x4e\\x31\\xa5\\xe6\\x5d\\xec\\x1f\\x87\\x60\\xfa\\x22\\xc0\\x0e\\x6f\\xb1\\xcd\\x55\\x5b\\xe6\\x8b\\x0a\\xb4\\x35\\x99\\xf0\\xb9\\xf4\\xa5\\x4a\\x7c\\xcb\\x06\\x26\\x83\\x89\\x5d\\x5e\\xf6\\x6d\\x24\\xdf\\xb1\\x67\\x8c\\xb0\\xd0\\xe8\\xc8\\x01\\xd8\\xe5\\xff\\xe7\\x9b\\x91\\x39\\xfc\\x96\\xd1\\x18\\xeb\\x39\\xb9\\xc8\\xd4\\x40\\x44\\x89\\x32\\x5d\\x45\\xb4\\xa3\\x20\\x2b\\xea\\xdc\\xa6\\x6f\\x83\\x1c\\x68\\xef\\xb8\\x15\\x94\\x15\\x81\\x93\\x0e\\xad\\x29\\xfd\\x5f\\x21\\x1b\\x90\\xe7\\xa3\\x9f\\x0d\\x4f\\xf4\\x8c\\x62\\xa5\\x45\\xe2\\x8a\\xc2\\xce\\x29\\xbe\\xdc\\x35\\x6d\\x92\\xfc\\x00\\x34\\x71\\x76\\xd7\\x76\\x23\\xe0\\xe1\\x80\\x9e\\xff\\x3f\\xe6\\x2b\\x75\\xa7\\xd9\\xde\\xb7\\x27\\xd8\\x61\\x72\\xd1\\x4e\\xdb\\xf2\\x78\\x9a\\x57\\x14\\x3c\\x69\\x92\\x5c\\x91\\x7d\\x43\\x3b\\x46\\x83\\xb0\\x69\\x3b\\x3c\\xd9\\xe7\\xe3\\x77\\x99\\x64\\x10\\x72\\x7f\\x5e\\x6f\\xb8\\xf5\\xcc\\xd1\\x86\\x0a\\x20\\x29\\x4e\\xcf\\x33\\xfa\\xf9\\x7a\\x1e\\x0f\\x85\\xb7\\x61\\x44\\x7d\\x47\\x61\\xb9\\x6e\\x4d\\xf1\\xb3\\x12\\xbd\\x41\\x4c\\xab\\xcf\\x49\\x84\\x97\\xb0\\xea\\xd6\\x7c\\xd1\\xe5\\x90\\x1b\\xbf\\x3a\\x16\\xa8\\x89\\x1c\\xcc\\xed\\x8a\\x90\\x7d\\xf8\\x87\\x26\\x95\\x2d\\x4a\\xb3\\x70\\xa6\\xb7\\xdf\\x29\\x42\\xcf\\x13\\x61\\x5a\\x5b\\xc1\\x2b\\x4e\\x10\\x6d\\xc3\\x01\\x3c\\x68\\xb8\\xfb\\x90\\x63\\x99\\xdf\\x15\\xf1\\xaa\\x90\\xd5\\x6a\\xa9\\x74\\xb1\\xd2\\xb2\\x8c\\x1a\\x84\\x53\\xb9\\xbf\\x07\\x92\\xa5\\x1c\\x97\\xce\\x8a\\x12\\xaf\\xc9\\x34\\x1b\\xb4\\xc0\\xc3\\x7b\\x12\\xdc\\xb1\\x2c\\x63\\x94\\x49\\x77\\x5d\\x9a\\xc5\\xc2\\xec\\x49\\x67\\x3d\\xa5\\xaa\\xf7\\x49\\x3e\\xd5\\xf1\\xf2\\x11\\x6e\\xae\\xf7\\x2b\\xb7\\xfb\\x1e\\x09\\x3e\\xde\\x2c\\x26\\x31\\x7f\\x4f\\x4b\\x6a\\xd5\\x85\\x34\\x62\\x05\\xdf\\x91\\xa6\\xe9\\x6b\\xc6\\x6d\\x30\\x64\\xbc\\xe9\\x52\\x39\\x8f\\xfc\\xe8\\x80\\x71\\xed\\x9f\\xf2\\x75\\x0c\\x65\\xc0\\xc3\\x04\\x12\\x5a\\xc2\\xca\\xdc\\x4f\\xef\\x71\\xa8\\x18\\x73\\x24\\x96\\xa8\\x4c\\xa5\\x74\\xd4\\x82\\xd5\\xa3\\xbb\\xa2\\x0e\\x16\\xdd\\x2f\\xa2\\x4d\\x32\\x70\\xf6\\xc6\\x09\\x92\\xf7\\xf6\\x3e\\x88\\xf5\\x2e\\xff\\x62\\x22\\x99\\x8e\\xb4\\x41\\x67\\x27\\x38\\x43\\x75\\xf5\\x9f\\x00\\xe4\\x75\\x12\\xee\\x46\\x4c\\x31\\x84\\xac\\xea\\xff\\x3c\\xcf\\xb0\\x6b\\xd1\\x5c\\x18\\x3c\\x5e\\x48\\x59\\x26\\x28\\x8b\\x99\\x7b\\xfa\\xaa\\xec\\xf6\\xec\\xbb\\xf7\\xd2\\xab\\xf4\\x90\\x6d\\xf7\\x6b\\x12\\x77\\xc5\\xf5\\xa8\\x7e\\x68\\x17\\xb1\\xc6\\x36\\xe9\\x1e\\xfd\\x7e\\xcc\\xf6\\x4f\"},\n{{0x32,0x34,0x65,0xd0,0x31,0x3d,0x10,0x01,0xa2,0x61,0xab,0xfd,0x44,0xfe,0x65,0xc3,0x8c,0x9a,0x00,0xca,0x0f,0x20,0x33,0x5d,0x65,0x53,0xde,0x49,0x26,0x99,0xfc,0x46,},{0xe2,0x2f,0x16,0xbd,0x4c,0xc7,0xe9,0x4c,0x46,0xba,0x31,0x96,0x1a,0xf8,0xc5,0x83,0xf9,0xd2,0x71,0x8c,0x68,0xf7,0x3d,0x85,0x06,0x9f,0x60,0x8e,0x15,0xba,0x87,0x66,},{0xda,0x3a,0xad,0xb3,0x43,0x60,0xb2,0xda,0x0c,0x26,0x54,0x2e,0xa7,0x1d,0xef,0xa8,0xa0,0xbf,0x7f,0xbd,0xae,0x3e,0xe9,0xe1,0x1c,0x84,0x08,0x4a,0xd0,0x5c,0xce,0x7b,0xa7,0xd9,0x4d,0xe2,0x5d,0x85,0x63,0x98,0x26,0x16,0xbc,0xdb,0x5b,0xb6,0x39,0x5f,0xac,0x4a,0x7e,0x84,0xbc,0x77,0xe2,0x1e,0xd3,0x6d,0xf7,0x5d,0xec,0x99,0x0b,0x06,},\"\\xbb\\x10\\x82\\xe1\\xcf\\xdc\\xd2\\x9b\\xfc\\xa2\\x46\\x4d\\x5c\\xe4\\x46\\xb5\\xba\\x65\\x4b\\xa5\\x8c\\x22\\x53\\x8d\\xa9\\x26\\xb8\\x30\\x3c\\xab\\xfd\\x28\\x4a\\x7b\\xd5\\x99\\x4a\\x78\\x6f\\xa6\\x6a\\xed\\xf0\\xe1\\x5f\\x20\\xc3\\x82\\xcd\\xac\\xf3\\xd1\\x45\\x57\\xff\\x7a\\x82\\x67\\xfa\\x04\\x67\\x2c\\xac\\xab\\x76\\x70\\x08\\x65\\x0a\\xa9\\xb4\\xa7\\xc9\\x07\\x1c\\x47\\x99\\xf1\\xff\\xa4\\x5c\\xa4\\xd5\\x86\\xe0\\x20\\x47\\x44\\x4c\\x14\\x23\\x19\\x43\\x46\\x7a\\x3a\\xba\\xef\\xa5\\x39\\x59\\xda\\x22\\x6e\\xb0\\xc1\\x53\\x92\\x01\\x97\\x60\\x15\\x96\\x97\\x74\\x82\\x93\\xc0\\x25\\x56\\x87\\x83\\x58\\x8a\\x39\\x10\\xe7\\x8e\\x5e\\xa4\\x27\\xc4\\x40\\x7a\\x89\\x01\\x06\\x1b\\x8b\\x99\\x2b\\x82\\xa2\\xdf\\x58\\xc0\\x4a\\x1b\\x2c\\x5f\\xad\\x11\\xc6\\xb3\\x79\\x85\\x6c\\x2e\\x0f\\xef\\x8a\\x95\\x0d\\xe7\\xe0\\xfc\\x22\\x31\\x03\\x09\\xe0\\x8b\\x13\\x2b\\x0c\\xce\\x4f\\xc1\\xec\\xbf\\x94\\x57\\x4a\\x38\\x8d\\x4a\\xe3\\x66\\x75\\xd3\\x29\\x9a\\x95\\x15\\x54\\xeb\\xf1\\x80\\xeb\\x38\\x1e\\x1b\\x5d\\xf9\\x77\\xd9\\x38\\x43\\x38\\x91\\xbc\\x47\\x8d\\x76\\x81\\x85\\x0b\\x9d\\xc9\\xc5\\xc7\\x69\\xd4\\x05\\xf5\\xd8\\x83\\x9f\\xc9\\x73\\x61\\xd6\\xcb\\x30\\x6c\\x20\\x30\\x26\\xcf\\x2e\\x2b\\x3d\\x39\\x84\\x9e\\x1f\\x4b\\x12\\x25\\xeb\\x25\\xef\\x8a\\xcd\\x40\\xb0\\x06\\xf2\\x0c\\x64\\x4d\\xb6\\x50\\xc7\\x5d\\x38\\xc0\\xfc\\xdd\\x48\\xf5\\x98\\xc7\\xb4\\xa6\\x01\\x06\\xe6\\x9e\\x19\\xcd\\x71\\x25\\x89\\xce\\xdc\\xcf\\x50\\x86\\x4e\\xa5\\xf9\\xe9\\x5e\\x01\\xf1\\xdd\\x85\\xc7\\x51\\x4f\\x2c\\x94\\xb2\\x83\\x59\\xde\\x41\\x32\\xb8\\x8c\\x3e\\xe1\\xd1\\x0a\\x80\\xa9\\xfa\\xdf\\xb6\\x90\\xe3\\xd8\\x86\\x41\\xb3\\x16\\x8f\\x0b\\x89\\x6a\\xf8\\x99\\x0a\\xdb\\xf0\\xe4\\xf8\\xe9\\xd3\\xf9\\xd4\\xcd\\x31\\x4e\\x12\\xc3\\xbc\\xe0\\xcc\\x87\\x38\\xe0\\xcf\\xc1\\x90\\x5b\\xe5\\xef\\xa0\\x71\\xf7\\x10\\xb3\\x2f\\x8e\\x58\\x98\\xc6\\x0e\\xb1\\xbb\\x8f\\xee\\xb7\\x40\\x00\\x56\\x0f\\x41\\xcb\\x2e\\xbc\\x32\\xb2\\x60\\x0b\\x69\\x80\\xa2\\xa4\\x06\\x4d\\xfa\\xa3\\x79\\x7e\\xc4\\x4c\\xfb\\x72\\xd3\\x79\\xf8\\x09\\x73\\x79\\xca\\xd6\\x7e\\xcd\\xc0\\xc3\\x24\\x14\\xfa\\x41\\xc7\\x2b\\x1b\\x9e\\x4e\\xdf\\x55\\x18\\xcb\\x39\\xfe\\x90\\x92\\xb4\\x39\\xaf\\x3a\\x4e\\xbd\\x5a\\xfe\\x79\\xbe\\xdc\\x0e\\xa8\\xbf\\x17\\x47\\x9a\\x28\\x21\\xf5\\xe9\\xbd\\x91\\xd7\\xf4\\xaa\\x5e\\x38\\x46\\x99\\x52\\x37\\x19\\xb6\\x95\\x7f\\x82\\x36\\x7c\\xd8\\x5f\\xea\\x9d\\xed\\x62\\x36\\xa2\\x07\\xc9\\x4c\\xb3\\x73\\xe3\\x39\\x3c\\xb4\\xfe\\x11\\xf9\\x0a\\x1b\\x87\\x79\\xe4\\xab\\x4c\\x34\\x66\\x13\\x6b\\xf2\\x1e\\x2a\\xab\\x78\\xf7\\xd2\\x72\\x6d\\xb6\\x41\\x4f\\xa5\\xc4\\xa3\\xf7\\x31\\x3a\\xd2\\x11\\x6a\\x6d\\x7c\\xe4\\x0a\\xaa\\x10\\x01\\xc2\\x70\\x4d\\x5b\\x05\\xae\\x54\\xc7\\xcc\\x6f\\x56\\x72\\x17\\xf1\\xa4\\x7b\\xfd\\x0e\\xe7\\x38\\xea\\xea\\x5e\\xad\\xb5\\x37\\x10\\x75\\xbe\\x07\\x6c\\x87\\x50\\xae\\xce\\xfc\\x41\\x7e\\xa7\\xbf\\xda\\xac\\x3c\\xc3\\x8b\\xf1\\x6c\\xc2\\x6d\\xf7\\x60\\x0e\\x3c\\x7e\\x8e\\x43\\x1f\\x26\\x76\\xfc\\x2a\\x8c\\x43\\xa6\\xa1\\x43\\x68\\xba\\x62\\xbb\\x32\\x43\\x9a\\x06\\xbe\\xac\\x38\\xa0\\x47\\xb3\\x74\\x5e\\x26\\xf4\\x07\\xad\\x82\\x3d\\x6a\\xd1\\xc0\\xb6\\xa4\\x43\\x41\\xe1\\x5f\\xc9\\xb3\\x31\\x21\\x4f\\xfc\\x89\\x69\\x82\\x11\\xb0\\x51\\x33\\xd6\\xd3\\x43\\x3b\\x5d\\x59\\xf7\\xab\\x4d\\x10\\x9e\\x54\\xe4\\xc5\\xd6\\xf3\\x2f\\xcf\\x72\\x30\\xfa\\x4e\\x25\\x28\\xc8\\x61\\xbb\\x21\\xcc\\xc9\\xe3\\x10\\xe9\\x49\\x7e\\x07\\x7e\\xa6\\x75\\x51\\x0d\\xa7\\x12\\xb1\\xa5\\xdf\\x57\\x5c\\x5d\\x1b\\xf7\\x36\\x2d\\x07\\x11\\x80\\x03\\x9a\\xec\\xfa\\xa5\\xc8\\x57\\x3c\\x24\\xc0\\xf4\\xeb\\xe8\\x1c\\x2f\\x88\\x9a\\xed\\x3d\\xe5\\xa0\\x00\\xbe\\x12\\xfe\\x3d\\x0a\\xf2\\xdc\\x2c\\xd4\\x24\\x0e\\x31\\x4a\\x17\\x6c\\x55\\x3e\\xfd\\x5c\\xba\\x79\\x8d\\x9f\\xf1\\xe3\\xd4\\xbd\\x9e\\x90\\xbb\\x81\\x13\\xe3\\x84\\x9d\\x73\\x5a\\xfa\\x4a\\xf6\\x94\\x5c\\xc5\\x7d\\x4c\\x37\\x8d\\xb8\\x4f\\x20\\x6e\\xf7\\xea\\xb1\\x1c\\x63\\x7a\\x7f\\x72\\x60\\xf1\\x22\\xa9\\x7d\\xff\\x67\\x47\\xe9\\xb4\\xc1\\x74\\xed\\x0d\\x64\\xf9\\xef\\xd7\\xfc\\xcc\\xf9\\x81\\x51\\x9e\\xc5\\x80\\xa8\\x18\\x25\\x47\\xd1\\x79\\x68\\xc4\\x01\\x51\\xfd\\xf6\\xd5\\x4b\\xc5\\x7a\\x91\\x15\\xf0\\x40\\xfa\\xb5\\xc1\\x00\\xde\\xb0\\x39\\x12\\x2b\\x7d\\x2b\\xfd\\x98\\xb6\\xad\\xf3\\x8f\\x42\\xb2\\x96\\xea\\x3b\\x37\\x8a\\x90\\x42\\x59\\xb7\\x5d\\x60\\x70\\x3b\\x48\\x40\\xb3\\xf5\\xda\\x09\\x62\\x0a\\x54\\x77\\x62\\x80\\xe9\\xca\\x9e\\x8c\\xd9\\x24\\xae\\xd2\\xb5\\xdd\\x2b\\x49\\x83\\x4e\\x58\\x1c\\xae\\xd5\\x27\\x1c\\xd7\\x8c\\xe0\\x8e\\x4b\\xba\\x49\\xb5\\x9c\\xd7\\x7c\\x1b\\x62\\x76\\x64\\x91\\x48\\xab\\x72\\x47\\xf9\\x7f\\xc0\\x13\\x16\\x35\\xde\\x47\\x4d\\x3c\\x23\\x49\\x3c\\xa9\\x8d\"},\n{{0x60,0xff,0xdb,0xae,0x00,0x3f,0xa2,0x79,0x4f,0xca,0xbb,0xf8,0xf5,0xb4,0x16,0x44,0xfe,0x3a,0x7f,0x44,0xed,0x6c,0x83,0x41,0x93,0xda,0x07,0xa9,0xdc,0x5e,0x26,0x65,},{0x35,0xb5,0xeb,0x31,0xab,0x55,0x64,0x92,0x57,0x8b,0x3d,0xbd,0x6c,0xf1,0x68,0x7d,0x1f,0xdb,0x21,0x6a,0x72,0x58,0x18,0x07,0x96,0x63,0x48,0x2f,0x22,0x1c,0xe4,0x21,},{0xb8,0xf3,0xe1,0xf3,0x78,0x5a,0x2a,0x39,0xbb,0x08,0x6c,0xa4,0x65,0xc0,0xab,0xf0,0xa3,0xe8,0x74,0x43,0x22,0x5a,0xc6,0xe9,0x66,0xed,0x9b,0x45,0x31,0xc5,0x4a,0x89,0x4a,0x9a,0xbd,0x01,0xac,0x31,0xb8,0x57,0x57,0xfe,0x75,0x30,0x8c,0x95,0x94,0xff,0x65,0xf9,0x7c,0xdd,0x91,0xe8,0xd8,0xa9,0x3c,0xf1,0x2b,0x9e,0x6d,0xbe,0xe9,0x0b,},\"\\x3f\\x8f\\xf2\\x0b\\xb4\\xf0\\x08\\x34\\xc8\\x0f\\x2e\\xe6\\x89\\x3d\\x6f\\x73\\xbf\\x7a\\xce\\x27\\x29\\x60\\x1b\\xb2\\x6a\\x0f\\xb2\\x72\\xa4\\xd0\\xee\\xa1\\xfa\\xe1\\xd3\\x06\\xac\\x2c\\x5f\\x32\\xad\\xd6\\x01\\x35\\x85\\x1d\\xa2\\x7e\\x4f\\x12\\xe6\\x4e\\xa5\\xe9\\xe9\\x96\\x0b\\x13\\x83\\xb0\\x4c\\xe0\\x5a\\x98\\xb0\\x41\\x4d\\xad\\x97\\x1e\\xa9\\x89\\x44\\x87\\x1d\\x41\\x5c\\xc2\\xc4\\x6d\\xa4\\x03\\x97\\x6d\\x9f\\x21\\x93\\x89\\x58\\xd4\\xea\\x8c\\x79\\x03\\xb1\\x4f\\x2a\\x44\\x85\\xfd\\x69\\xaf\\xb2\\x4a\\xbe\\x10\\x2d\\x8f\\xec\\x26\\x6f\\xb4\\x68\\xb4\\x11\\xeb\\x20\\xa3\\x39\\x67\\x7d\\x88\\xeb\\x31\\xc9\\x97\\xb4\\xdc\\x88\\x56\\x13\\xf0\\xbe\\x7c\\x70\\xda\\xf8\\x56\\xa3\\xdf\\x92\\xda\\x96\\x02\\xfb\\xa2\\xe6\\x74\\x9d\\x2f\\x42\\x6b\\xee\\xf6\\x86\\x62\\xd5\\xb0\\xc2\\xfd\\x31\\x32\\x1b\\x22\\xb5\\xec\\x59\\x7d\\xa5\\xd7\\xe6\\xa2\\x88\\xeb\\xd9\\x44\\x3c\\x5f\\x39\\xeb\\x87\\xdc\\xf4\\xa5\\xad\\x9d\\x56\\xc6\\xba\\xf6\\x08\\x09\\x96\\xa7\\x79\\x36\\xbd\\x87\\xdc\\x3c\\xb4\\x2e\\xd4\\xc4\\xd4\\x26\\x88\\xa9\\xe1\\x93\\x82\\x9b\\x76\\x1f\\xf3\\x20\\xe2\\xa6\\x6c\\xc6\\x76\\x48\\xe7\\x0e\\xea\\x3a\\x1f\\x2f\\x9b\\x9d\\x5b\\x42\\x02\\xfb\\x5a\\x39\\xe9\\xad\\xc6\\x09\\x08\\x6a\\x9b\\xe2\\xa8\\x32\\x3a\\xc6\\x69\\x31\\xbd\\xf6\\xc5\\x04\\xd3\\x33\\x62\\x11\\xe4\\x6f\\xde\\xfc\\x48\\x1f\\xbf\\x17\\xf6\\x13\\xda\\xb1\\xfc\\x5c\\x09\\x7c\\x92\\xdb\\x06\\x09\\x90\\x6d\\x78\\xb2\\x5a\\x45\\x5a\\x30\\x45\\x71\\x8e\\xfd\\x3e\\x3b\\x14\\xe2\\x52\\xb1\\xae\\x59\\xc7\\xc3\\x89\\x3e\\x31\\x91\\x3b\\x2c\\x26\\x4c\\x0f\\xfc\\x3b\\x60\\x6c\\xa1\\xb0\\x1d\\xc4\\x7e\\xe8\\x28\\xa0\\x8e\\x46\\xaf\\x60\\x4e\\x59\\x0d\\xef\\x44\\xd2\\x7a\\xab\\x93\\xa4\\x03\\x25\\x1f\\xca\\x07\\x72\\xe9\\xdf\\x0f\\xab\\x7a\\xf0\\xcb\\xc5\\x18\\x1e\\xfd\\xa4\\xda\\x91\\x3d\\x8e\\xb6\\x45\\x2f\\x6c\\xec\\xbd\\xa2\\x04\\xbc\\x72\\xd7\\xc9\\x90\\xf6\\x0c\\xe0\\xdd\\x83\\xc6\\x34\\xe9\\x12\\x23\\x60\\x91\\xb0\\xa6\\x67\\x3a\\x7c\\x89\\xea\\x59\\x30\\x8d\\x55\\xbd\\x7e\\x63\\xa8\\x52\\x67\\x74\\xcb\\xdd\\x7a\\x13\\x39\\xfa\\xc2\\x12\\x4c\\x90\\x22\\xab\\xd6\\xfe\\xce\\x7f\\x2d\\xae\\xdf\\xd8\\x7f\\xa6\\x83\\xdc\\x0e\\x3e\\xf4\\x08\\x06\\xa0\\xab\\x19\\x87\\x69\\xd3\\xa9\\x9f\\xe8\\x1a\\x99\\xb6\\x86\\x00\\x31\\x90\\x87\\xaf\\xa4\\xea\\x79\\xd7\\xee\\x45\\xda\\x9c\\xd4\\x08\\x09\\xf4\\xee\\x8f\\x4e\\x25\\xa0\\x17\\x75\\x21\\xee\\x9d\\xba\\x8b\\x56\\x21\\x2e\\x88\\x71\\x9b\\xb7\\x36\\x73\\x36\\xf4\\xa7\\xbc\\x71\\x22\\xb4\\x1a\\x7d\\xfa\\xa2\\x67\\x2f\\x92\\xf2\\x34\\x03\\xa1\\x0c\\x4f\\xb2\\x53\\x88\\xc6\\xb2\\x00\\x81\\x09\\x3d\\x49\\xf3\\xbe\\x8a\\x9e\\x1c\\x63\\x4e\\xf7\\xba\\x96\\xb6\\xd5\\x23\\xdd\\x6f\\xf6\\x13\\xc0\\xa2\\x3b\\x60\\x45\\x70\\x26\\xcd\\x48\\x5b\\xa8\\xdb\\x61\\xd8\\x0a\\x0d\\xc6\\x59\\xd9\\xaf\\x42\\xa3\\x8c\\xae\\x77\\x7f\\xec\\x68\\xe3\\x9c\\x52\\x98\\x6f\\xf9\\xfc\\x20\\x78\\x9c\\x10\\x58\\x51\\x07\\xc0\\x40\\x47\\xb6\\x6b\\xa1\\x4e\\x93\\xfb\\x90\\x4e\\xa9\\x0d\\xf7\\xac\\x9f\\x01\\x54\\xc9\\x6f\\x32\\x36\\xac\\xf6\\xdc\\x8b\\x44\\xf5\\x54\\xc0\\xcd\\x51\\x31\\x93\\xe5\\xdf\\xd8\\x7e\\x08\\x5a\\xd4\\xb3\\x8a\\xa4\\xc5\\xe3\\x6b\\x24\\x27\\x72\\x20\\x88\\x81\\x6e\\xcd\\x2b\\xc3\\xa3\\xdd\\xa0\\x1e\\x4f\\xb3\\xff\\x5e\\xec\\x7a\\x64\\x17\\x32\\x2b\\xa6\\xa2\\x77\\x73\\xd2\\x44\\x95\\xa8\\x39\\x19\\x4a\\x4a\\x58\\x2f\\xe5\\xab\\xdb\\x8b\\x5d\\x53\\x3a\\x24\\x26\\x25\\x89\\x24\\x1f\\xc8\\x1f\\xdf\\x5e\\x79\\xfd\\x26\\x77\\x64\\x28\\xf8\\xe1\\xce\\x9e\\x92\\x6c\\xf2\\x72\\x71\\x6e\\x75\\x83\\xab\\xfc\\x67\\xa9\\x4a\\xae\\x08\\x16\\xc1\\x00\\x0a\\x19\\x61\\x70\\xbb\\xff\\x1f\\x45\\xe5\\xed\\x9e\\x26\\x7a\\xce\\x1e\\x4d\\x91\\x5d\\xce\\x72\\x16\\xc5\\xf4\\x04\\xde\\xf6\\xfe\\x2b\\xd8\\xb2\\x8b\\x2e\\xcc\\xf3\\xe2\\xae\\xa0\\xc0\\xd6\\x62\\x63\\x90\\x27\\x4e\\x47\\xe7\\x45\\xed\\x3a\\x23\\xbc\\xfd\\x21\\xd2\\x84\\xc3\\x95\\x37\\x9d\\xc0\\x20\\x80\\xf0\\x79\\x36\\xbc\\x15\\x4e\\x7b\\x99\\xee\\x73\\xdb\\x18\\x8b\\xd2\\xa3\\x94\\xe0\\x3a\\x01\\xff\\xe2\\xd1\\xb3\\x30\\xce\\xb7\\x21\\x58\\xf9\\x58\\xc7\\x16\\xa8\\x17\\x11\\xdb\\xf6\\x5a\\xff\\x8c\\xd1\\x2f\\x5d\\xfa\\x53\\xb3\\x76\\xeb\\xb8\\xb9\\x8f\\x86\\x28\\xf1\\x7e\\xf8\\xb2\\xab\\x9c\\x0b\\xb6\\x84\\x12\\xf4\\xe3\\x47\\xa6\\x33\\xe2\\xf8\\xda\\x1a\\x55\\x6d\\x96\\xf4\\xaf\\x72\\x11\\xc0\\x78\\x07\\x9c\\x10\\x54\\x1c\\x07\\xdc\\x37\\x22\\xd1\\x8d\\xab\\x8f\\xa8\\xbc\\x49\\x25\\xab\\xa5\\xc9\\x66\\xf8\\x05\\x04\\x03\\x22\\xdf\\xbb\\xbe\\x87\\xfb\\xfe\\xb1\\x96\\x1f\\x5c\\xcd\\x40\\xa9\\x1b\\x99\\x7e\\x54\\x31\\x5a\\x7e\\xef\\xc3\\xa4\\x7b\\xb0\\xc8\\x7d\\xc2\\x37\\x55\\xce\\x72\\x27\\x57\\x49\\x96\\xf4\\xbe\\x7a\\xa3\\x44\\xfe\\x0d\\x17\\xb9\\x7b\\xc5\\x0c\\x58\\x38\\xf9\\x92\\x92\"},\n{{0x17,0x4e,0x99,0x3d,0x9b,0x81,0xf2,0xaf,0x67,0xe9,0xff,0xb8,0xeb,0xd5,0xda,0x41,0x79,0x66,0xa9,0xe7,0x7f,0x66,0xc6,0x5c,0x76,0x77,0x38,0xfe,0x83,0x57,0xd0,0x7c,},{0x3b,0xb7,0x38,0x6f,0x1b,0x1c,0xbf,0xae,0x55,0x37,0x03,0x83,0x3e,0xbc,0xbf,0xe2,0xdf,0xff,0x8c,0x89,0x9a,0x07,0x92,0xd7,0xce,0x23,0x22,0xb5,0xba,0x64,0x5a,0x5f,},{0xe6,0x07,0xbc,0x9a,0x53,0x60,0xb3,0x1d,0xa5,0x6b,0xe1,0xc5,0x44,0xc2,0x00,0x02,0x84,0x95,0x1d,0x86,0x89,0xf4,0xb7,0x22,0xbc,0x46,0x73,0xa0,0xc8,0x48,0x9b,0x84,0x48,0x3e,0xd8,0xe7,0x6e,0x29,0x7e,0xa0,0x46,0xe8,0x5b,0x37,0xba,0x56,0x30,0x58,0x5e,0x53,0x75,0x56,0x6a,0x18,0x7a,0xfb,0x56,0x96,0x66,0x1e,0x5b,0xfd,0xc1,0x0e,},\"\\xa4\\x01\\x75\\x0a\\xfc\\x48\\x37\\xdf\\xe3\\xaa\\xcc\\x28\\x4a\\x59\\x71\\x45\\xdf\\xef\\x02\\x62\\x9e\\xf8\\x7b\\xd0\\x93\\x8d\\x44\\x39\\x79\\xdf\\x76\\xf2\\x9f\\xcd\\x66\\xa5\\xb7\\x1e\\xa8\\xab\\x78\\x72\\x77\\xe3\\x05\\x6f\\x6e\\xa1\\x1b\\x08\\xbd\\x23\\x89\\x79\\xf9\\xd3\\xb0\\x62\\x53\\x8c\\x4d\\x60\\x40\\xa8\\x6b\\x6e\\x32\\x04\\x7a\\xec\\xc5\\x9c\\x23\\x77\\xad\\x0e\\xa4\\xc4\\x0c\\x79\\xff\\x9f\\xe9\\x8c\\x95\\x8b\\x2b\\xf2\\x5f\\x2f\\xd6\\x34\\x24\\x32\\x63\\x6f\\x5f\\x7d\\x5b\\xb0\\xd2\\xec\\xf1\\x81\\x83\\x42\\x6c\\x73\\x14\\x79\\x84\\xd9\\x5b\\xbe\\x16\\x2e\\x11\\x97\\x2d\\xdb\\x78\\xa2\\xa7\\xc3\\x45\\xc5\\xc0\\xbb\\xba\\xba\\x9c\\xf3\\x8a\\x2d\\x5d\\xd5\\x09\\xa7\\xdf\\x8b\\x84\\x28\\x74\\xa9\\x6e\\x64\\xb5\\xd6\\x4f\\x5c\\x41\\xa2\\x1d\\x20\\x8d\\x14\\xce\\xa7\\x06\\x6c\\xf2\\x2d\\xee\\x0c\\xa4\\x1a\\xa4\\x6a\\xb9\\x21\\xd4\\xce\\xec\\x89\\xec\\x87\\x3f\\x77\\x96\\x0e\\xda\\x60\\xd9\\x67\\x6c\\xfd\\x0d\\xbf\\xae\\xc8\\x72\\xc2\\xad\\xe8\\xfb\\xa4\\x28\\x5a\\xac\\xd5\\x27\\x14\\x3a\\xe0\\x34\\x1d\\x67\\xd0\\x07\\x81\\x19\\x65\\x3b\\x5d\\x23\\xd4\\x6e\\x6e\\xf7\\x02\\x64\\xb1\\xb0\\x91\\x38\\x70\\x87\\x76\\x23\\x71\\x6d\\x0f\\x1a\\x59\\x02\\x1b\\xe7\\x4c\\x91\\x4b\\x43\\x24\\x71\\xa4\\x3a\\x29\\xf2\\xb6\\xdb\\xeb\\x6a\\x22\\x3e\\x2d\\xba\\xab\\xb8\\x20\\xb4\\xad\\xbe\\x33\\x78\\x29\\xe1\\xde\\x0c\\x18\\x4d\\xd0\\xd0\\x9f\\x9d\\x01\\xd4\\x25\\x27\\xe5\\xd4\\x0a\\xbb\\xda\\xcc\\x8a\\xc0\\xf1\\xb2\\xc5\\xc1\\xcb\\x2f\\x23\\x87\\x6d\\x2d\\x1b\\x6b\\x43\\xdf\\xe4\\x82\\xf9\\xd4\\x5a\\x18\\xf5\\xc2\\x2b\\x15\\xf1\\xfe\\x52\\x1e\\xf5\\x7b\\x08\\xae\\xc6\\xa3\\x03\\x39\\x25\\xc7\\x45\\x4c\\x93\\xe6\\x31\\x9e\\x77\\x8a\\xc4\\x94\\xfb\\x14\\x0a\\xe5\\xf1\\xa3\\x1c\\xc8\\x32\\xca\\x24\\x88\\x65\\x10\\x04\\x06\\x3b\\xcf\\xf8\\xfd\\x9a\\xe9\\x26\\x6a\\xf5\\x27\\xf2\\xc3\\x1f\\x6a\\xcb\\x8f\\x3d\\xeb\\xd9\\x97\\x8e\\xf9\\xdf\\x01\\x08\\xe3\\xd5\\x0c\\x49\\x19\\x90\\xc9\\x0d\\xd8\\xee\\x9d\\x64\\xea\\x4e\\xbf\\xd7\\x11\\xc9\\x9d\\x90\\x44\\xec\\x11\\x34\\x2c\\x53\\x83\\xca\\x39\\x23\\x2e\\xd9\\x7a\\x07\\xe4\\xdc\\x51\\xdb\\x4c\\x1f\\xe9\\x47\\x34\\x8d\\xff\\xe7\\x0a\\x95\\xc9\\x9d\\xb1\\x47\\x51\\x31\\x48\\x01\\xf1\\x3f\\xa2\\xbf\\x42\\xd8\\x67\\x37\\x5a\\x08\\xee\\x9b\\x3b\\x79\\x9e\\x0b\\x15\\x27\\x8e\\x95\\xe9\\x1a\\x89\\x68\\x06\\x4d\\x6d\\xfd\\x8f\\x51\\x15\\x43\\x8c\\xcb\\x8b\\x51\\x6c\\xa0\\xc4\\x1d\\xbb\\x19\\x87\\x3c\\x6e\\x10\\xa2\\x36\\xec\\xc2\\xda\\xd5\\x22\\xf8\\x0f\\x01\\xc1\\x4e\\x2f\\xa1\\x4a\\x0d\\x79\\x2b\\x9f\\xc4\\x86\\xc6\\xfb\\x0e\\xfb\\xdf\\x21\\x30\\xf0\\x2d\\xf1\\x49\\x7d\\xb5\\xab\\xa8\\xbe\\x61\\xca\\x70\\xb2\\x93\\x88\\xe4\\xee\\xc7\\xe0\\x69\\x4a\\x38\\xc0\\xd0\\x3c\\x59\\xbb\\x6a\\x2d\\xc3\\xcc\\xd6\\xdd\\xe1\\xe2\\x9e\\xe2\\xc1\\xb3\\x25\\xac\\x72\\xaa\\x8e\\x6f\\xab\\x91\\x38\\xf8\\xb6\\xf5\\xd3\\x24\\xd4\\x6a\\xf3\\xa3\\x54\\x2c\\x8b\\xd8\\x7c\\xb0\\x4f\\xaf\\xc5\\x4b\\x5d\\xb8\\x27\\xde\\x60\\x67\\x62\\xa0\\x97\\xb6\\x22\\x79\\x9c\\xa8\\x27\\xbd\\xa9\\xc1\\xc0\\xbb\\x26\\x7e\\xba\\x82\\x54\\xa8\\x1c\\x6b\\x85\\x8a\\x37\\x5b\\x94\\xbd\\x09\\xf3\\x9e\\xeb\\x88\\xcb\\x14\\xb8\\xd4\\x6e\\x47\\x40\\xdc\\x1a\\xb4\\x2a\\x89\\x5f\\x86\\xd2\\xc5\\x7f\\xc2\\x8b\\x07\\xb7\\xf6\\x0f\\xc4\\xf8\\x84\\x7b\\x8b\\xc8\\xad\\x83\\xa2\\x48\\x1a\\x28\\xf2\\x9b\\xca\\x35\\x10\\xff\\x8b\\xf1\\xdd\\x75\\x81\\xe3\\x35\\x71\\x64\\xf4\\xfe\\x92\\x0f\\x9d\\xe8\\x39\\x37\\x6d\\xe0\\x64\\x90\\x0d\\xc7\\xf8\\xbc\\xf5\\x11\\xdc\\x57\\x2e\\x0f\\x0f\\x6a\\x75\\xb9\\x29\\x79\\x7d\\xa4\\x1c\\x52\\xea\\xe6\\xfe\\x13\\x75\\x0c\\xe3\\x51\\xe8\\x76\\x76\\x30\\xba\\xdf\\x6d\\x7d\\x4e\\xab\\x90\\xcd\\x19\\x04\\xc9\\x6c\\x04\\x8a\\x9a\\xcb\\x21\\x3a\\x9e\\x5b\\x86\\x46\\x15\\x73\\x8a\\x84\\xf2\\x22\\x98\\x6a\\xc2\\x35\\x54\\xcf\\x4c\\xe5\\x4e\\x80\\xab\\x57\\x33\\xc0\\x65\\xb8\\x04\\x59\\x92\\x1d\\xd3\\xd8\\x37\\x2d\\x0e\\x85\\x94\\xd4\\x36\\x43\\x51\\xbf\\x04\\x1c\\x14\\x6f\\xa8\\xd2\\x3a\\x19\\x3e\\xb8\\x07\\xec\\xe2\\x3f\\x24\\xab\\x65\\x95\\xe9\\x32\\xc9\\xce\\x1a\\x75\\x9b\\xf7\\x88\\x91\\x4d\\xb0\\x08\\xe8\\x70\\x98\\xdd\\x81\\x46\\x5e\\x26\\x10\\x64\\x7a\\xc3\\x8e\\x08\\x86\\x66\\xf6\\x0e\\xc5\\xd0\\xe2\\x17\\x33\\x20\\xa4\\x0c\\xd9\\x85\\xf0\\xe0\\x0d\\xbc\\x2b\\x45\\x70\\x72\\x74\\x83\\xa8\\xc2\\x5f\\x6f\\xc1\\xe0\\x93\\xbb\\x57\\xcc\\xaf\\xd1\\xca\\x20\\x2f\\x29\\x86\\xc7\\xc5\\x54\\x0a\\x7c\\x3e\\x10\\xc4\\xa6\\xfc\\x26\\xd1\\xd6\\x2c\\x2c\\xa5\\xaf\\x83\\x05\\xce\\xeb\\xe4\\x2f\\xf9\\x6e\\x7d\\xc5\\x48\\x21\\x43\\x75\\xe8\\xa7\\xf9\\xf7\\x12\\xba\\x8b\\xd8\\x75\\xe4\\x3c\\xa1\\x0c\\xf9\\xb1\\x83\\xf0\\xc8\\x51\\x95\\x12\\x92\\x85\\x38\\xa4\\x78\\xcb\\x98\\x25\\x9b\\xd8\\xb3\\xe3\\x34\\xbc\\xc4\\x63\\x55\\x95\\xca\\xd3\"},\n{{0xe5,0x37,0x15,0xfe,0xc9,0xd3,0xb2,0x0e,0x9c,0x29,0x91,0xe5,0x4b,0x5e,0xb0,0xa8,0xcc,0x81,0x87,0x55,0x69,0xc9,0x5e,0x22,0xa2,0x00,0x13,0x60,0x02,0x17,0x60,0x04,},{0x53,0x51,0x89,0x9b,0x69,0xb2,0x11,0x6b,0xc7,0xf8,0xa8,0x81,0x4d,0x1e,0x5b,0x9f,0xc7,0x85,0x69,0x8b,0xeb,0xd9,0xab,0x14,0x27,0x7c,0x3e,0xcc,0x01,0xef,0x8b,0x1d,},{0x3d,0x0a,0xdc,0xe7,0x7a,0x4e,0x04,0x6f,0xcb,0x9b,0x49,0xad,0x5e,0x6c,0x68,0x09,0xc8,0xac,0x33,0x6c,0x73,0x34,0x04,0xe5,0xd3,0xf0,0x15,0xc9,0x22,0x5c,0x3d,0xf4,0x6e,0xf2,0x1e,0xa3,0x4c,0xff,0xb3,0xaf,0x69,0x97,0x4f,0x8b,0x7e,0xab,0x2d,0x23,0xfc,0xd5,0xa1,0xe1,0x75,0x3a,0x40,0x23,0xde,0xb3,0x81,0x86,0x29,0xa9,0x8a,0x0b,},\"\\x84\\x31\\xcd\\x16\\xd5\\xc0\\x93\\x77\\x5e\\x18\\xc0\\x82\\x52\\xc4\\x3f\\x95\\xb1\\x01\\x7e\\xb7\\x11\\xfc\\xaf\\x73\\xe1\\xe0\\x0c\\x0c\\xd6\\xf3\\x44\\x87\\x44\\xab\\x9b\\x0e\\x64\\x33\\x55\\x18\\xc4\\x83\\xae\\x94\\xde\\xb9\\x76\\x77\\xf8\\x18\\xf0\\xe8\\x1a\\x74\\x90\\x61\\x5b\\x71\\x41\\xb9\\xc3\\x5f\\x80\\x55\\x6e\\x69\\x71\\xce\\xa2\\x8e\\x9a\\x32\\xc3\\x28\\xcc\\x26\\x69\\xfc\\xa5\\xb1\\x23\\xcb\\x66\\x2d\\xeb\\xab\\x2b\\x98\\x15\\x77\\x64\\x66\\x80\\x70\\xe1\\x8e\\xdf\\x76\\x1a\\xe1\\x96\\xbd\\x4b\\x24\\x4f\\xea\\x7b\\x74\\x98\\x45\\x16\\xbe\\x2c\\x00\\x73\\x9e\\x76\\xe6\\xc4\\xb6\\x21\\xcb\\x39\\x83\\x76\\x5a\\x20\\xd8\\x47\\x78\\xd5\\xa4\\x35\\x0b\\x16\\x8f\\x6a\\x0f\\x71\\x2a\\x98\\x20\\xa8\\x5a\\x63\\x6f\\xaf\\x92\\xc7\\x89\\xc4\\x28\\xcf\\xd2\\x96\\x2e\\xd2\\x07\\xc3\\xac\\x88\\x99\\xc2\\x58\\xca\\xc1\\xad\\xb5\\x15\\x9f\\x76\\x4b\\xa3\\x72\\x29\\xc5\\xcb\\xf7\\x83\\xfc\\x9a\\xa4\\xd1\\xea\\x46\\xec\\xc8\\x5f\\xe0\\x96\\x14\\x85\\xd4\\xfc\\x5c\\xb2\\x1d\\xf0\\x01\\x2a\\xc9\\xb9\\x55\\x37\\x3b\\x14\\x22\\xe5\\x1a\\xfa\\x1c\\x55\\x09\\x88\\x86\\x2c\\x86\\x13\\x3b\\x76\\x0a\\xa6\\x30\\xfc\\x0a\\xce\\xe8\\x98\\x91\\x17\\xd1\\xdd\\x96\\xe3\\xe6\\x28\\x7b\\x69\\x28\\x7c\\x59\\x0b\\xdc\\xa9\\xcb\\xc8\\xee\\xce\\xf2\\x81\\xee\\x6d\\x1c\\x8d\\x88\\x82\\x2b\\xfe\\xa5\\xfa\\x0f\\x53\\x0f\\x23\\x27\\x80\\x93\\xc7\\xc8\\x5a\\x0d\\x44\\xc3\\xa7\\x74\\x04\\xee\\x79\\xf1\\xc8\\x36\\x8c\\xd7\\x32\\x1b\\xf1\\x48\\xfd\\xa4\\xdc\\xf2\\xeb\\x07\\xe4\\x63\\x0e\\xa4\\x22\\x58\\x75\\x86\\x37\\x17\\x80\\x51\\x45\\x36\\xb8\\x94\\xc5\\x24\\xe6\\xb8\\x3d\\x5a\\x76\\xa1\\x5c\\x83\\xe9\\x5a\\xb3\\x14\\xe0\\x7b\\x34\\xb9\\x8c\\xd9\\x9e\\x07\\x70\\xb4\\xeb\\x9b\\x3f\\x3f\\x50\\x5b\\xae\\x8a\\x06\\xf7\\xf9\\x50\\x25\\x8d\\x79\\x07\\x48\\x10\\x71\\x95\\xeb\\x4f\\x6b\\x84\\x84\\x0f\\x8c\\x05\\x90\\x72\\x73\\x96\\xed\\x14\\xe3\\xf5\\x32\\x39\\x47\\x6c\\x4d\\x2a\\x72\\x69\\xb2\\xe1\\xf9\\x72\\xfb\\xff\\x33\\xe4\\x72\\x44\\x26\\x74\\x5e\\xc8\\x86\\xa3\\x29\\x16\\x29\\x5e\\x70\\xd4\\x68\\xd0\\x6c\\x7d\\xbb\\x5f\\xf9\\xa3\\x54\\xe1\\xac\\x90\\x3b\\xb4\\x5c\\xa5\\x26\\xf0\\x8b\\x49\\xa6\\x5e\\x82\\x29\\x7d\\x8d\\xd3\\xfb\\x25\\xaa\\x42\\x8f\\x64\\x34\\x5b\\xca\\x97\\x40\\xd9\\x07\\x8d\\xac\\x9e\\x11\\x38\\xc9\\x21\\xbd\\xd7\\x48\\x81\\x67\\x3d\\x49\\xd0\\xcd\\x20\\x06\\x81\\x17\\x23\\xde\\x28\\x7c\\x6c\\x95\\x83\\xe4\\x56\\xa0\\x1a\\xb1\\xa3\\x4d\\xfa\\x1e\\xaa\\x96\\x3b\\x71\\xe8\\xbc\\x7f\\xa8\\xa9\\x8c\\xad\\x4f\\x94\\x1e\\x4b\\x37\\xb6\\x0e\\xef\\x92\\x3b\\x32\\x94\\x88\\x23\\x50\\xb3\\x8e\\xa4\\xea\\xc0\\xe9\\x23\\x2e\\x93\\xc5\\x32\\xdb\\x5d\\x7e\\xec\\x8e\\xcf\\xae\\x65\\xe0\\x80\\x47\\x30\\x78\\x77\\x7d\\xdf\\xdd\\x11\\x50\\x8a\\x6e\\x59\\xf0\\xeb\\xaa\\x3f\\x60\\x44\\x1f\\x82\\xa7\\x1a\\x73\\xc8\\x4b\\xca\\x06\\xa3\\x71\\xff\\x5c\\x9f\\x77\\x21\\x3a\\x2d\\xb7\\x95\\xd4\\xa8\\x89\\x78\\x23\\xd8\\x8f\\xd9\\x2a\\xe3\\xe0\\x57\\xe8\\xbb\\xd8\\x0c\\x99\\x0a\\xf8\\x38\\x6b\\xdf\\x26\\xf1\\x2d\\x97\\x3c\\x8c\\x5f\\xf9\\xed\\x6f\\x7b\\x2d\\x8e\\x61\\x83\\xcf\\x6e\\x68\\xf3\\xbb\\x89\\x8f\\x59\\xa9\\x3e\\xc4\\xde\\x3b\\xea\\x60\\x5a\\x5d\\x8b\\x15\\xdf\\xab\\x71\\x3f\\x35\\x85\\xc4\\x8d\\xc9\\xa5\\x76\\x82\\x42\\xb3\\x31\\x01\\x43\\x80\\x30\\xe7\\x04\\x48\\x80\\xd1\\x7c\\x2e\\xe8\\x4f\\x89\\xd2\\x6a\\x1f\\x7b\\x19\\x86\\x19\\x3f\\x96\\x63\\xc5\\x87\\xd5\\x0c\\xa9\\xdd\\xf6\\x18\\x6a\\x51\\x76\\xaf\\xef\\x1a\\xdb\\x24\\x81\\xb7\\x92\\x54\\xb7\\x8d\\x3b\\x34\\xc6\\x97\\x90\\xeb\\x28\\xb9\\x0b\\x14\\x61\\x17\\x0c\\x3d\\x73\\x81\\x83\\x76\\xcd\\xf3\\x71\\xaf\\x0a\\x0f\\xea\\xf1\\x4f\\xdf\\x70\\x16\\xed\\x6e\\x7f\\x08\\xc0\\xc1\\x4b\\x52\\x70\\x5c\\x86\\xd4\\xf0\\x00\\x3b\\x5e\\x45\\xf9\\x74\\xc0\\x64\\x16\\xcc\\xb5\\xca\\x3e\\x9d\\x52\\x9a\\xa9\\xd4\\x15\\xc2\\x5a\\x44\\x6f\\xa2\\xd6\\x9e\\x82\\xf4\\x99\\x4e\\x57\\xe9\\x22\\xc1\\x7c\\x1c\\x34\\x2d\\xd7\\x28\\x1e\\x41\\x00\\x52\\xd9\\xe4\\xaa\\x1b\\x30\\x9b\\x7d\\x47\\x0d\\x45\\x8c\\x66\\x3e\\x17\\xff\\x25\\x00\\xd0\\xbb\\x8e\\x46\\xa9\\xc4\\x36\\x7e\\x09\\x1c\\xaf\\x87\\xdd\\xfc\\x06\\x2a\\xae\\x08\\xa6\\x5c\\xb9\\xe0\\xea\\xa7\\x1c\\x99\\x45\\x9c\\x5e\\x7c\\xb1\\x12\\xa2\\xee\\x98\\xa5\\xe4\\xcb\\xee\\x0d\\xc5\\x20\\xf8\\x7c\\x30\\x22\\xda\\x65\\x49\\xbe\\x1e\\xe7\\x0a\\x0a\\x73\\xad\\x84\\x99\\xc9\\x7d\\xd0\\x6a\\xa1\\x4c\\x9f\\xd8\\x62\\x8a\\x92\\xca\\x6d\\xb4\\x87\\x32\\x2d\\xb9\\x59\\x8a\\xda\\x1f\\xce\\x28\\xf4\\xb9\\xfc\\x1d\\x3c\\xc3\\x9d\\xcf\\x2e\\xd1\\xdf\\x3d\\x86\\x2d\\x87\\xf5\\x5c\\xc1\\x01\\x6f\\xb9\\xe7\\x3e\\x7c\\xc8\\x97\\xb9\\x70\\xd5\\xff\\x35\\xac\\xfe\\xb0\\x5c\\x1c\\x89\\x19\\x28\\x08\\xae\\xeb\\xfb\\x2c\\xd1\\x7c\\xb1\\xc9\\x4f\\xab\\x05\\x98\\x98\\xfe\\xdc\\x2f\\xbd\\x44\\xcc\\xef\"},\n{{0xab,0xfd,0x69,0x7b,0xfb,0xc5,0xb6,0xff,0x2b,0xdf,0xf3,0xbc,0xe1,0xd7,0x77,0xe0,0x5f,0xbe,0x3e,0xc8,0xb9,0x5c,0xe6,0x93,0xd6,0x23,0x93,0x12,0x09,0x31,0x3d,0x4f,},{0xa7,0x09,0x32,0x1a,0x02,0x10,0xcb,0x80,0xab,0x58,0xbf,0x95,0x5e,0xcd,0xeb,0x8a,0xaf,0x9e,0xe4,0xc3,0x75,0xf9,0x59,0xc5,0x30,0x89,0xd4,0x37,0x48,0x8c,0x08,0x2d,},{0x8c,0x36,0xb5,0xa1,0x11,0xc5,0xa8,0x11,0x9f,0x2d,0x9d,0xb5,0x7e,0xbb,0x59,0x2d,0xae,0x86,0xad,0x4b,0xf6,0x78,0xc1,0x49,0x2e,0x26,0xf3,0xc1,0x0f,0xbe,0x03,0xf1,0x05,0xca,0xe0,0xdc,0x68,0xb5,0x52,0x59,0xb9,0xb5,0x98,0x92,0x89,0xdb,0x33,0xd9,0x5d,0x2e,0xe6,0xb7,0x56,0xc7,0x60,0xf9,0xd3,0xaa,0x0e,0x68,0xa1,0x89,0xde,0x02,},\"\\x89\\x6b\\x7a\\xb8\\x41\\x3f\\xfe\\x43\\x9a\\x2f\\x44\\x87\\xec\\x49\\xd6\\x4e\\x31\\xc7\\x4f\\x50\\xac\\x83\\xf5\\x5d\\xa6\\x1a\\x70\\x03\\xaa\\x71\\x6c\\x2a\\x9d\\xf6\\xb4\\x38\\xe6\\x2f\\x53\\xd8\\xf0\\x19\\x2f\\x37\\x36\\x32\\x47\\x60\\xd7\\xe8\\xc4\\x4a\\xc0\\xba\\xca\\x3a\\xe2\\xa6\\xfb\\x93\\xf1\\x3d\\x96\\x88\\x67\\x99\\xfd\\x2c\\x45\\x51\\xb0\\xab\\x36\\xf1\\x73\\x08\\x55\\x55\\x12\\x65\\xa5\\xa3\\xc3\\xc2\\x1d\\x95\\x16\\xa2\\x37\\xf5\\xdb\\xc1\\xc8\\xe7\\x29\\x99\\xb7\\x82\\xc5\\xca\\x41\\xa4\\xf6\\xe9\\x30\\x8e\\x64\\xaf\\xde\\xe0\\xbf\\x47\\x9e\\x54\\x6b\\x89\\xc5\\x1b\\xc5\\xe4\\xf7\\x1e\\x57\\xfb\\x24\\xce\\x43\\x7a\\x8b\\x81\\xb9\\x1d\\xc7\\x98\\xb5\\xab\\x36\\xf2\\x9a\\xfd\\x5b\\x48\\xe8\\x1c\\x17\\x6a\\xe5\\xed\\xf9\\x53\\x71\\xba\\x32\\x46\\xfb\\x43\\x94\\x05\\xbd\\x10\\xee\\xd3\\x67\\x8e\\x3e\\xc6\\x23\\x07\\xa3\\xb3\\xdc\\x1b\\xad\\xba\\x05\\x1f\\x16\\x77\\x4b\\x85\\x08\\x81\\x88\\xc2\\xa9\\xe3\\x20\\xa1\\x61\\x8d\\x5f\\x26\\xce\\x94\\xee\\x2b\\x93\\x3c\\x30\\x5f\\x6d\\x95\\x84\\x95\\x8e\\xea\\x31\\x56\\xc3\\xd1\\xe0\\xef\\x39\\xa1\\x86\\x27\\x5e\\xe6\\x2c\\x40\\xf3\\xc1\\xac\\xd1\\x5d\\x8b\\xe6\\xe0\\x74\\x35\\x1f\\x53\\x49\\xce\\x3d\\xf6\\x95\\x17\\x50\\x5f\\x45\\xfa\\x06\\xa8\\x15\\xc6\\x9c\\xa1\\x8f\\x45\\x0f\\x42\\xb5\\xcf\\x4e\\xbd\\x99\\x26\\x84\\x45\\xe0\\xf6\\x81\\x04\\xa7\\xde\\xeb\\x0a\\x11\\x5b\\x81\\x7b\\x99\\xe1\\xa7\\x3e\\x0f\\xa9\\xd8\\x7d\\xb7\\x1f\\x8e\\xc9\\x4f\\x87\\x08\\xc9\\xbc\\x2e\\x62\\x2b\\x96\\x33\\x65\\xeb\\xcf\\xb9\\x7c\\xfe\\x73\\x32\\x63\\x00\\x70\\xe9\\x65\\x4e\\xaa\\x60\\x36\\x1a\\x45\\xd4\\x02\\xdc\\x0a\\xb2\\x97\\x66\\x52\\x42\\x66\\x7f\\xbd\\x99\\x40\\xf6\\xcd\\x33\\x19\\x52\\x46\\xa8\\xc2\\x86\\x9a\\xf7\\x59\\xa8\\x62\\xd4\\xb6\\x41\\xdb\\x14\\x4d\\x57\\x32\\x36\\x6b\\x20\\x63\\x6c\\x40\\x27\\x78\\x7f\\x55\\x80\\x27\\xd7\\x6f\\xcb\\xf8\\x43\\x2e\\xb9\\x3e\\x6d\\x14\\x56\\x7d\\xf8\\xdb\\xf2\\x11\\xda\\xeb\\x56\\x55\\xdb\\x10\\xac\\xdd\\xd0\\x5e\\xca\\x06\\xac\\xce\\xe9\\xfd\\xa8\\xd3\\xb7\\x0c\\xa1\\xe6\\xdc\\x58\\x7f\\xa4\\xb7\\x8f\\x63\\xcd\\x66\\x3f\\xf0\\x24\\x38\\x70\\x57\\x0f\\x4d\\xcb\\xaa\\x3f\\xb6\\x26\\xb4\\xe1\\x13\\xbd\\xe4\\x7d\\x5c\\x9d\\xb2\\xb4\\xba\\x6e\\xc6\\xdb\\xf9\\x18\\xac\\x05\\x69\\x49\\xef\\x3c\\xfc\\xb1\\x15\\x56\\x16\\x15\\x77\\x1a\\x03\\x5a\\x43\\xd3\\x3b\\xa2\\x65\\x1d\\xbe\\xb4\\x63\\x48\\x26\\x1c\\xe3\\xc4\\xc9\\xf2\\x46\\xd2\\x3f\\x94\\xdb\\xc2\\xd0\\xc1\\x9b\\x92\\x1e\\x24\\xc7\\x7d\\xa5\\x99\\x2f\\x1b\\x4b\\xdf\\x2e\\xde\\xa4\\x99\\xf5\\x41\\x11\\x68\\xac\\x0c\\x12\\xe9\\x6f\\x3b\\x15\\xd2\\xe1\\x2a\\xc8\\xd7\\xb3\\xed\\x8d\\x1e\\x07\\xc4\\x26\\x7a\\x25\\xd3\\xa3\\xc3\\x53\\xa4\\x20\\x8b\\x74\\x06\\x27\\x8a\\xab\\x9e\\x70\\x0f\\x7b\\x20\\x6f\\x48\\xe6\\xea\\x7c\\xc9\\x7e\\x55\\x4f\\x15\\xc9\\xbe\\x34\\x9d\\xd9\\x15\\x14\\xdb\\xe8\\xd8\\x89\\xf2\\xdc\\xbb\\xfa\\x18\\x2c\\x9f\\xaf\\x58\\x07\\xa6\\x9b\\x2e\\x97\\xfa\\x77\\x1a\\x6f\\x23\\x1a\\x4c\\x7b\\x31\\xd1\\x17\\xb8\\xed\\x0e\\x63\\x0c\\xdf\\x13\\xe0\\x82\\xbb\\x4f\\x63\\xc3\\xf9\\xac\\xb3\\x55\\x32\\x04\\xcc\\xd7\\x6e\\x18\\x35\\xc4\\x6e\\xec\\x3d\\x43\\xc5\\x61\\xbb\\xf1\\x7c\\x92\\x21\\x4a\\x6d\\xb1\\x21\\x2b\\x60\\x03\\xcf\\x2c\\xc2\\x6c\\x7a\\xe6\\x75\\xfc\\xd0\\x53\\xb9\\x47\\xe7\\x22\\xf9\\xe8\\x57\\x62\\xce\\x8a\\x16\\xe4\\x65\\x4e\\xc6\\x34\\x2f\\xc6\\x46\\xe5\\xca\\xb4\\x72\\x79\\x7e\\xab\\xf6\\x58\\xba\\x4a\\xfd\\x14\\x2f\\xc8\\xfc\\x4c\\x8f\\x98\\xf2\\x3c\\x24\\xdc\\x99\\x84\\x7a\\xe8\\xce\\xf0\\x87\\x9e\\x1a\\xb3\\xbb\\x80\\x97\\xe4\\xc3\\x52\\x9a\\xdd\\x2d\\x8e\\x8e\\x2c\\x20\\x69\\x21\\x0f\\x50\\xac\\xe1\\xae\\x32\\xa6\\xc8\\xe6\\x38\\x4a\\x2b\\xf7\\xd7\\x9c\\x66\\xc7\\x46\\x14\\x9c\\x84\\xad\\x75\\xa3\\xa1\\x76\\xe4\\x5e\\x13\\x6d\\x94\\x69\\x5a\\xed\\x4b\\xfd\\x08\\xb4\\x26\\xea\\x8c\\x4b\\x93\\x79\\xf3\\x74\\x25\\x50\\xe1\\xcf\\x5a\\xc8\\x4c\\x18\\x17\\x4d\\x68\\x0e\\x92\\xaf\\x2c\\x18\\x74\\xac\\x1c\\x13\\xd2\\x82\\x32\\xde\\x19\\x37\\x68\\xe5\\x61\\x94\\x7c\\xbd\\x6b\\x79\\xe9\\xb9\\x9d\\xa6\\x5c\\xfb\\x74\\xff\\xb3\\x2f\\x7d\\x3d\\x20\\x25\\xc6\\x07\\x63\\xdc\\x07\\xf5\\x55\\x39\\xb4\\xd2\\x53\\xde\\x1e\\x6c\\x25\\x82\\x3a\\x62\\x58\\xc7\\xa9\\xce\\xd1\\x50\\x1d\\xce\\x27\\x86\\x89\\x8a\\x3e\\x05\\xc9\\xbf\\xf8\\xfc\\x5b\\x21\\x25\\xd0\\xf4\\x71\\x08\\x8a\\x13\\x4b\\x48\\x73\\xc8\\xd5\\x5c\\x04\\x45\\xf6\\xca\\x39\\x6b\\x3d\\x7b\\x4b\\xc2\\xbf\\x5c\\x4d\\x22\\x40\\xda\\x41\\x82\\x93\\xaf\\x6a\\x3e\\xd8\\x53\\xde\\xdd\\x3b\\xf6\\x68\\xd9\\x37\\xb3\\x5a\\xa0\\xc2\\xac\\xbf\\x23\\x76\\x6f\\x9f\\x3e\\x96\\x82\\x84\\x75\\xab\\x08\\x64\\x96\\x61\\x7a\\x6e\\x81\\xd6\\x53\\x58\\x9b\\x2f\\xe5\\x0b\\x7b\\xa8\\xf0\\xcf\\x1e\\x5a\\x44\\xd8\\xd6\\x2f\\x08\\x37\\x7a\\xbf\\xc2\\x62\\x97\"},\n{{0xdc,0xfa,0xd5,0x9f,0xc6,0xb6,0x97,0x10,0x9e,0x72,0x7f,0xf6,0x6a,0x5f,0xe9,0x3a,0x6a,0x22,0x6f,0x63,0x1a,0x64,0xe5,0x79,0x7a,0xd8,0xd8,0xc8,0xb6,0x35,0x87,0x34,},{0xe7,0x9f,0x4f,0x51,0x13,0x72,0xe3,0x55,0xe7,0xe9,0xe0,0xe8,0xb5,0x34,0x6f,0xdb,0xcd,0x2d,0xf1,0xfc,0x5c,0x3a,0x18,0x90,0xd2,0x7f,0xa1,0xfa,0x92,0x8d,0x27,0xa6,},{0x05,0x2f,0xf7,0x95,0x40,0x73,0x74,0x56,0xc6,0xa4,0x2c,0x41,0xc9,0x7d,0x6b,0xf5,0x17,0xb8,0xcf,0x28,0x9b,0xc7,0x8b,0x50,0x3d,0xee,0x6a,0x30,0xef,0x51,0x68,0xb3,0x8f,0x75,0xbe,0xac,0xa1,0xe1,0x4d,0x97,0x1f,0x87,0x73,0xe3,0x94,0x1b,0xd6,0xdf,0x5c,0xb9,0x77,0x8d,0xea,0x12,0x5a,0x4c,0x4f,0xe0,0x11,0x6b,0x70,0xee,0x84,0x0b,},\"\\x7d\\x92\\xdd\\xd8\\x13\\x3c\\x61\\xc6\\x10\\xc1\\x30\\x8c\\x23\\xae\\xaf\\x99\\x38\\x84\\xa4\\xe6\\x7f\\x7b\\x94\\xbb\\x88\\x6d\\xad\\x50\\x98\\x69\\xa9\\x32\\xec\\x4a\\x27\\xd4\\x10\\xd2\\xc2\\x9c\\xa7\\xae\\xae\\x6f\\x92\\x80\\xcf\\x6c\\x4b\\x06\\x7e\\xc7\\x51\\xe5\\xe8\\xc3\\x9f\\xf4\\x44\\xd4\\x22\\xce\\xab\\xae\\x14\\x5d\\x42\\xf0\\x47\\x45\\x3d\\xd4\\x02\\xd1\\x79\\x74\\x05\\x03\\x34\\x09\\xe7\\x2c\\xc1\\x9f\\x79\\x3d\\x5d\\x26\\x8f\\xb3\\xfd\\x2c\\x11\\xea\\x2c\\xb0\\xd7\\x04\\x36\\xe1\\x8f\\x9e\\x88\\xa0\\x15\\x15\\xdc\\x86\\x5f\\x6a\\x1e\\xb2\\x36\\x90\\x32\\x8f\\xd7\\x5d\\xe2\\x63\\x21\\xa3\\x8f\\x12\\x19\\x7a\\x97\\x20\\x1b\\x1d\\x84\\x52\\x94\\x4f\\xbc\\x54\\x1c\\xb6\\x8c\\x77\\xd4\\x95\\x15\\xdb\\x53\\x26\\xf2\\xb1\\xd0\\x76\\x3e\\xda\\x06\\xd2\\x50\\xce\\x2a\\x5e\\x0b\\xbd\\x7d\\x16\\x76\\xd7\\xd4\\x1f\\xb3\\xab\\xe8\\x8b\\xdb\\xe3\\x72\\xf9\\x6b\\xf7\\xbb\\x52\\x6d\\x6b\\x65\\xa2\\x51\\x5e\\x83\\xa5\\x77\\x04\\x5b\\x54\\x79\\xb3\\x8b\\x85\\x2f\\xe4\\xab\\x01\\x1c\\xbf\\x21\\xc0\\x85\\xef\\x5f\\x0a\\x7c\\x1b\\xed\\x76\\x57\\x2b\\x0f\\x86\\x02\\x28\\x06\\x7a\\x89\\x9f\\x89\\x5a\\xe7\\xf6\\x25\\x6e\\xb6\\x51\\x40\\x87\\xf9\\xd6\\xf5\\xc3\\x55\\x96\\xc1\\xf4\\x80\\xc7\\x31\\x13\\x54\\x6c\\xb9\\xcc\\x30\\xf5\\x6a\\xb0\\x74\\xa9\\xff\\x28\\xac\\xab\\x7e\\x42\\x65\\x0a\\x96\\x1d\\xa3\\x25\\xac\\x5b\\x65\\x94\\xb8\\x1c\\x93\\x25\\x0a\\xe7\\xd3\\x92\\x67\\xa1\\x9c\\x97\\x62\\x54\\x07\\xed\\xda\\x04\\x04\\xcb\\xe5\\xa3\\x6e\\x95\\x9f\\xc8\\x20\\xb2\\x7e\\xf5\\xca\\xd7\\x96\\xc1\\x1e\\xaf\\xf1\\xc0\\xe2\\xf9\\xd4\\xb3\\xc6\\x49\\x15\\x02\\x19\\x5d\\xe0\\x36\\x59\\xb3\\x64\\xe4\\xe8\\x7b\\x2b\\x2d\\x73\\x3e\\xc2\\x5e\\x6f\\x9b\\x63\\xd5\\xf6\\x91\\x79\\xe0\\xd2\\x7b\\xd4\\xae\\xcc\\x8f\\x12\\xa5\\x07\\xa9\\x1b\\xaa\\x48\\xd9\\x9b\\x3a\\x42\\x6c\\xec\\xeb\\xae\\xf3\\x7d\\x73\\x61\\x10\\x6a\\x84\\x90\\x64\\x43\\x09\\xf6\\xeb\\x4d\\x25\\x96\\x44\\x3b\\x6b\\x01\\x18\\xb9\\x45\\xac\\xec\\xc6\\x44\\x3e\\xa6\\x1f\\xcd\\x15\\x5b\\x54\\x32\\x5b\\xc2\\xc3\\x1b\\xe0\\x25\\x0f\\x94\\x82\\xe1\\x3f\\xd8\\xeb\\x44\\xe2\\xae\\xd7\\x6b\\xe8\\x12\\xaf\\x54\\x53\\xcb\\x7f\\x86\\x32\\x45\\x8f\\xc8\\xa0\\x2a\\x2f\\x45\\x48\\x0d\\x79\\xb0\\x6c\\x7d\\xda\\x38\\xb4\\x69\\x5d\\x08\\xb5\\xa4\\x30\\x50\\x4f\\x1a\\xe2\\x27\\x5b\\x05\\xc9\\x1e\\x79\\x9d\\x44\\x70\\xf3\\x8a\\xbe\\x77\\x73\\x6d\\xfa\\x89\\x5c\\x19\\x7e\\xa4\\xb6\\x3c\\x2d\\xf1\\x8e\\xfe\\xb1\\x41\\x84\\x83\\x7b\\x8d\\xdf\\x48\\x90\\x95\\x20\\xd9\\x10\\x45\\xb9\\xd9\\x65\\x5c\\x22\\x5a\\x83\\x17\\x39\\x60\\xb4\\xd7\\xcd\\x0d\\x8b\\xae\\x30\\x23\\x75\\x57\\xf8\\x69\\x70\\x8b\\xe1\\x38\\xad\\x52\\x46\\xc8\\x66\\xc6\\xc0\\x59\\xdc\\x59\\x7a\\xbf\\xd4\\x94\\x32\\x37\\x37\\x68\\x96\\x73\\x6b\\x97\\xb7\\xe0\\x28\\x9e\\xf9\\xbb\\xd2\\x94\\x77\\x74\\x5c\\xb6\\x0f\\x46\\x20\\x2f\\x1d\\xe9\\x84\\xf5\\x09\\xb1\\x80\\x88\\x33\\xf5\\x80\\x18\\xcd\\xe8\\xc2\\x6b\\xef\\x4c\\x00\\x5b\\xdc\\xa3\\x85\\xb0\\x57\\x35\\x11\\x0c\\xa0\\x2e\\x56\\x2b\\x50\\xed\\xdf\\xf6\\xfd\\xe9\\xfb\\xb8\\xd0\\x30\\xce\\xdf\\x70\\x31\\xbb\\xeb\\x32\\xb1\\x2b\\x24\\x2b\\xe4\\x9f\\xde\\x01\\x60\\xc1\\xfb\\xde\\x99\\xb0\\x3c\\x06\\x2a\\x1a\\x47\\x06\\x23\\x45\\xc9\\x2e\\x0b\\x60\\x4d\\x08\\x0f\\xac\\xce\\x92\\x43\\x48\\x15\\x29\\xc7\\x05\\x97\\xdf\\xd6\\x43\\x82\\xcb\\x54\\x06\\x91\\xb5\\x9b\\x71\\xb0\\x94\\x33\\x2b\\xaf\\x0b\\xbb\\x12\\x5b\\x63\\xa4\\x46\\xbb\\x97\\x49\\x1c\\x04\\x64\\x32\\x8c\\xab\\xd7\\x62\\x7c\\x46\\xf3\\x92\\xf3\\xb1\\x24\\x82\\x2f\\x20\\x13\\xc6\\xe1\\x6d\\x3c\\xa8\\x7c\\xc5\\xbe\\xcf\\x56\\xb0\\xfc\\x6e\\xb2\\xbf\\x99\\x23\\xb3\\x01\\x2b\\xa2\\xb6\\x12\\x50\\xa6\\x33\\xa4\\xd2\\xee\\x39\\x12\\x56\\xc5\\x20\\x95\\x73\\x82\\xaf\\xf9\\x70\\xc5\\xd2\\x23\\x85\\xc3\\x34\\x4c\\x6d\\x4b\\x45\\x61\\x57\\x1c\\x96\\x32\\x9b\\xf7\\x56\\x15\\x29\\x75\\x16\\xb9\\xf2\\xce\\xb9\\xf9\\x97\\xa3\\x95\\x23\\xaa\\x0f\\x58\\xb4\\x88\\x77\\x2d\\x82\\xfc\\x0d\\x78\\xc5\\xdd\\x52\\xec\\xfa\\x6b\\xfa\\xc6\\x3a\\x76\\xe1\\x48\\x08\\x8b\\x36\\xf2\\x4a\\x88\\xe6\\x83\\x85\\x49\\x6d\\xda\\xdf\\x30\\x23\\xf7\\x2d\\x87\\xc2\\xef\\xa2\\x6e\\x87\\x7d\\x32\\xf1\\xda\\x97\\xcd\\xb4\\x2c\\x8f\\x15\\x71\\x89\\x88\\xe4\\x28\\xcd\\x02\\xf4\\xd0\\x95\\x43\\xbd\\x0b\\xd5\\xb2\\xf4\\x09\\x96\\x3d\\x0f\\xa3\\x73\\x53\\x1f\\x78\\xb5\\x92\\xbd\\x13\\x7e\\xea\\xea\\x0b\\x4e\\x7f\\x91\\x82\\x08\\xe1\\xd5\\x90\\x08\\xa8\\xaf\\x50\\x58\\xf5\\xd9\\x23\\xc4\\xf3\\x2d\\xf1\\x99\\x90\\xf1\\x0d\\xd3\\xf0\\xeb\\x20\\x62\\x93\\xb2\\xb3\\x44\\x3f\\x4a\\x5d\\x2d\\xcc\\x5f\\x7d\\x3b\\xba\\xf6\\xaf\\x43\\xfe\\x45\\xf5\\xdb\\xbe\\x53\\xec\\xf4\\xbf\\x1b\\x4a\\x13\\xe2\\xd4\\x6e\\xf8\\x02\\x98\\xd4\\xf0\\x1c\\x40\\x2e\\x21\\x0f\\xcb\\x9f\\xf2\\x08\\x4e\\xc0\\x3e\\x42\\x00\\x8d\"},\n{{0x69,0x6d,0xc4,0x81,0xf6,0x19,0xa9,0x49,0x85,0x63,0xc8,0x3d,0x0d,0x0e,0x55,0x56,0x5c,0x14,0xa0,0x78,0x45,0xfe,0x4a,0x66,0xab,0xa2,0x24,0x7b,0x11,0x3f,0xf8,0xef,},{0xc9,0xd7,0x37,0xab,0xc4,0xa9,0xe7,0x3c,0x14,0x9e,0xad,0xc1,0x95,0xa8,0x37,0x89,0x9f,0x2c,0xd5,0x01,0x93,0x73,0xc3,0x0e,0xca,0xf6,0x2e,0x5f,0x8e,0x14,0xb6,0x45,},{0xde,0xd5,0xd9,0x91,0x93,0x5c,0xd1,0xf9,0x39,0x0f,0x1e,0x85,0x92,0x9c,0xa1,0x6d,0xab,0xfc,0x83,0xe6,0x5e,0x43,0x27,0x2e,0xb1,0x75,0x16,0x71,0xaa,0x31,0x93,0x0c,0x72,0x85,0x55,0x34,0x14,0x30,0xce,0x7c,0x80,0x48,0x5d,0xe5,0x80,0x06,0x42,0x71,0x29,0xa4,0xd3,0x4f,0xd6,0x81,0xd5,0x2d,0x84,0x0a,0x16,0xba,0xfa,0x15,0x30,0x02,},\"\\x2d\\x4b\\x3a\\xd0\\xcc\\x99\\xf9\\x83\\xe4\\x1f\\x9b\\x48\\xc4\\xa8\\x18\\xef\\xf7\\x5f\\xcf\\xb9\\x3a\\x12\\x29\\xec\\x27\\x40\\xed\\x19\\xc1\\x07\\xd6\\x21\\xdf\\x78\\x05\\x8d\\xe7\\xc2\\xdd\\x72\\x51\\xf5\\xff\\x45\\x43\\x40\\x86\\x5f\\x6c\\x86\\xda\\x65\\x83\\x1f\\x66\\x72\\xdb\\x23\\x17\\x26\\xfd\\xfe\\x4b\\x9e\\xe3\\x15\\xd9\\x3c\\x72\\x44\\xa9\\x20\\xdf\\x37\\x05\\x4c\\x82\\x44\\x9d\\x31\\x0f\\x89\\x29\\x32\\xdd\\xba\\xd9\\x4c\\xc9\\xbb\\x39\\xac\\x89\\x37\\xcc\\x76\\xc9\\x65\\x21\\xd3\\xfd\\xc0\\x28\\xba\\x23\\x41\\x0b\\x29\\x02\\x3e\\x81\\x38\\xfd\\x3f\\x52\\x43\\x19\\x88\\x4e\\xe5\\xda\\xd0\\xd2\\x34\\xc8\\xdf\\x66\\x1f\\x88\\x24\\xbe\\x47\\x7e\\x21\\x69\\x9f\\x63\\x69\\xb1\\x5f\\xf3\\xff\\xef\\xc1\\x51\\xaa\\x55\\x5b\\x3c\\x3d\\x76\\xad\\xb4\\x5f\\x25\\x67\\x2d\\x38\\x0d\\x47\\x2b\\x31\\x48\\xda\\xbd\\xef\\x42\\x45\\xb6\\x8e\\x82\\x85\\x62\\xf2\\x5c\\xc5\\xb8\\x1d\\x9b\\xbb\\x24\\x1b\\xca\\x9d\\x19\\x34\\xea\\x35\\x3f\\x95\\xf7\\xdb\\xf3\\x64\\x64\\x33\\xe8\\x1a\\x35\\x4e\\x1e\\x20\\x56\\xb8\\x1c\\x15\\xaa\\x1f\\xa8\\xed\\x7a\\x9d\\x1a\\xf9\\x92\\x38\\xcd\\x5a\\x5a\\xe9\\xe8\\x41\\xc4\\x8d\\xc3\\x48\\xae\\x1d\\xe7\\xc4\\x1a\\xca\\x23\\x32\\x82\\x36\\xbc\\x38\\xb4\\x7f\\x47\\xc7\\x36\\xb2\\x57\\xa3\\x07\\x8d\\x57\\xd5\\x74\\xb6\\x47\\xa7\\xfc\\x8c\\x4d\\x01\\xbc\\x50\\x30\\x21\\x50\\xd5\\x03\\x2b\\xfa\\xcb\\x04\\xbb\\x0f\\xd1\\x55\\xd9\\x4d\\x92\\x06\\x66\\x77\\x20\\xe1\\x80\\xa6\\x45\\xaf\\x46\\x24\\x59\\xe3\\x32\\x6d\\x46\\x0d\\xa3\\xc4\\x8e\\x75\\x72\\x67\\x8e\\x19\\x19\\x26\\x8d\\x3e\\x47\\x40\\xd6\\x2a\\x26\\xf7\\xc8\\x55\\x9c\\x1c\\x43\\x9b\\x4b\\x0b\\x0c\\x59\\x42\\xa6\\x20\\xcf\\xdb\\x93\\xcc\\x68\\xaa\\x15\\x52\\x0f\\xf2\\x86\\x42\\x69\\xd7\\xa0\\xc1\\x55\\x78\\x0a\\xdc\\x6c\\x18\\x8e\\x0b\\x56\\x5f\\xb9\\x59\\x43\\x19\\xe6\\xf5\\x1d\\x15\\xca\\xf6\\xb2\\x80\\xe7\\x15\\x8f\\x25\\x79\\x94\\x07\\xf3\\xba\\x0d\\xd1\\xce\\xea\\x64\\xb9\\x32\\x6d\\x2c\\xfd\\xef\\x01\\x7e\\x1f\\x17\\x2f\\x4d\\xde\\x0f\\x7e\\x46\\x13\\x50\\x1a\\xf0\\x1e\\xe0\\xac\\x30\\x09\\x5f\\x48\\xb5\\x95\\x90\\x90\\x2b\\x1a\\xec\\xfe\\x09\\x34\\x13\\x91\\x8d\\x83\\x5a\\xdf\\x96\\x2e\\xcf\\x18\\x58\\x0d\\x16\\xf9\\xfd\\x4f\\x6f\\xa1\\x09\\x8a\\xf1\\xd8\\xa2\\xbc\\x24\\xdc\\x86\\xf7\\x1d\\x0a\\x61\\xff\\x15\\x00\\x10\\x86\\x7d\\x08\\x69\\x87\\xb5\\x1d\\xd0\\x30\\xf5\\x0a\\xb6\\xe3\\x74\\xb8\\xe0\\x11\\x84\\xb3\\xe2\\xb2\\x14\\xab\\x1c\\x7f\\xdf\\xae\\xdb\\xc5\\x45\\xe3\\x8c\\x3c\\xd2\\xf6\\x98\\x29\\x79\\x54\\x1f\\xe0\\xff\\x88\\xbe\\xd6\\x75\\x06\\xda\\x95\\x72\\x7a\\xf1\\xa2\\x03\\x8f\\x32\\x40\\xae\\x5b\\xfd\\x30\\xee\\x09\\x21\\x0e\\x00\\xfd\\xcf\\x2a\\x06\\x4d\\x5d\\xb4\\x61\\x49\\x46\\xbd\\xa9\\x72\\xc6\\x70\\x08\\x1a\\x6e\\xe6\\xa1\\x0b\\x63\\xf6\\x73\\xc8\\x3c\\x91\\x5c\\xa5\\x57\\x3e\\x0e\\xd6\\x87\\xb0\\x06\\x7c\\x40\\x07\\x92\\xa9\\xbc\\xc3\\x34\\x4e\\x0e\\x43\\xf5\\xdf\\x63\\xfe\\xd5\\xef\\xa8\\x5e\\x9a\\xaf\\x85\\xe4\\xd7\\xa2\\xc5\\x3a\\x6c\\x92\\x82\\x8e\\x07\\xfe\\x63\\xe2\\xd2\\x3f\\x1b\\xdf\\x97\\xd8\\x4a\\xdc\\x36\\xe9\\xfc\\x95\\xfa\\xad\\xf0\\x3e\\x06\\xd6\\x5a\\x19\\xc5\\xe2\\x85\\xef\\xfd\\x0e\\xa0\\xcf\\xa8\\x39\\xd5\\x5a\\x0a\\x0d\\xbf\\x6d\\xa2\\x87\\x85\\xc7\\x7f\\x5c\\x04\\xbf\\xd5\\x99\\x74\\xef\\x37\\x93\\xcd\\xc3\\x98\\xdf\\x7a\\x1b\\xbc\\x9c\\xfc\\xfc\\x3a\\x51\\xff\\xa9\\xa2\\x0d\\x60\\xc4\\x7b\\x24\\x5d\\xaf\\xa3\\xe4\\x46\\x23\\xcd\\x71\\x1d\\x77\\x62\\xc5\\x0a\\x67\\xd6\\x50\\xc7\\xe8\\xc4\\xfd\\x3b\\xeb\\xc0\\xc4\\x98\\xd2\\x15\\x2a\\xb9\\x82\\x7c\\x70\\x0c\\x7b\\x28\\x61\\x56\\x57\\x49\\xb5\\x86\\x4f\\xec\\x95\\xb7\\xf6\\xb1\\x99\\x4e\\x78\\xd8\\xf8\\x5d\\x06\\x9c\\xc1\\x1f\\x85\\xbe\\xd9\\x71\\x2f\\x7a\\x9f\\x06\\x0b\\x0b\\xf6\\x75\\x32\\xe8\\x8e\\xb9\\xdf\\x3e\\xb4\\xa8\\xd2\\xfb\\xba\\xa8\\x5e\\xda\\x92\\x6d\\x81\\xc4\\x9f\\xb8\\x6e\\x73\\x73\\x1b\\x7e\\xd2\\xa1\\x90\\x50\\x78\\x51\\x3f\\x7c\\xa0\\xfd\\xcc\\x3b\\x1d\\x57\\x6e\\x6a\\x60\\x12\\x4c\\x44\\x61\\x8d\\xf1\\x89\\x0e\\x16\\x97\\x94\\x95\\x6c\\xb1\\xec\\x50\\x1b\\xa2\\x04\\x99\\x70\\xc8\\xe7\\x4c\\xc1\\x80\\x06\\x4c\\x18\\x44\\x68\\xbe\\x4f\\x08\\x9a\\x3a\\xe2\\x26\\x3c\\x85\\x58\\x63\\xb6\\x2c\\x28\\x31\\x3d\\xdf\\x9c\\xa8\\x5b\\xf6\\x6b\\x08\\xa2\\x64\\x15\\x5a\\xd7\\xc3\\x28\\x23\\x8d\\xfe\\x61\\x4a\\x07\\xed\\xe9\\x15\\x5a\\x09\\xcc\\xaf\\xf9\\x22\\x92\\x24\\x93\\x41\\xba\\xed\\xcb\\xe0\\xe6\\x46\\x6e\\x2c\\x76\\x04\\x5e\\x46\\xda\\xd2\\xfc\\x89\\x9a\\x17\\x82\\xe0\\x09\\x98\\xe7\\x9a\\x83\\xab\\xfa\\xe9\\xb7\\x06\\xf7\\x07\\xf5\\x8e\\x73\\x02\\x03\\xe1\\xd2\\xcc\\xa0\\x28\\xc9\\x22\\xbe\\xb6\\xd1\\x57\\xfa\\x7a\\x98\\x13\\x2a\\x92\\x1a\\x3d\\xa2\\x1f\\x2f\\x76\\x9b\\xb6\\xc1\\xf5\\xf1\\x9e\\x9e\\x85\\xa1\\x3b\\x78\\x1a\\xf1\\x41\\x03\\x9d\\x51\\x4e\\xe1\\x07\"},\n{{0xf3,0xf8,0xd6,0x2f,0xee,0x3a,0xf3,0x75,0x66,0x96,0x30,0xcb,0xf0,0x63,0xbf,0xa9,0x30,0x18,0x9a,0xf1,0x36,0xcd,0x75,0x91,0xe2,0x4d,0x57,0x8d,0x73,0x66,0xbf,0x61,},{0x47,0x14,0xc6,0x04,0xaa,0x95,0xe1,0x82,0x8a,0x28,0x36,0x7b,0xa7,0x87,0x60,0xb5,0x89,0x64,0x31,0x68,0x3e,0xe9,0x96,0xcf,0xf9,0x68,0x71,0x77,0x32,0x91,0x95,0x3c,},{0x8d,0x6f,0x7c,0xee,0xb9,0x30,0x8b,0x4a,0x30,0x38,0x79,0xfc,0x6c,0xfa,0x5c,0xa8,0xe0,0x5d,0xfc,0x3d,0xef,0xc2,0xb2,0xcd,0x29,0x10,0xdd,0x4b,0x17,0xc9,0x4e,0xae,0xe8,0x45,0xab,0xe6,0x5f,0xd7,0x15,0xdf,0x05,0xb0,0x12,0x8e,0x43,0x16,0xe2,0x33,0x47,0x99,0xc6,0xe8,0xfa,0x74,0x7e,0xbc,0x8a,0x04,0x0c,0x74,0xf5,0xa1,0x48,0x0c,},\"\\xe1\\xdd\\x1f\\xfd\\x73\\x7a\\xc6\\xdc\\x24\\xb3\\xb9\\xce\\x3b\\x79\\xe8\\x35\\xbf\\x69\\x8e\\x93\\x13\\x03\\xd8\\x09\\xce\\xa1\\x78\\x2d\\xc3\\xaf\\x63\\xa0\\xd5\\xe6\\x73\\x92\\x82\\x3d\\x14\\x39\\xe7\\xb6\\xe3\\x37\\xb0\\x1c\\x8b\\x21\\x54\\x34\\xc2\\x78\\x2b\\x3b\\xe7\\x44\\x3c\\xb5\\xc8\\x81\\xe5\\xfb\\x6c\\xf3\\xbb\\x24\\x41\\x28\\xb4\\xda\\x6a\\x6f\\x42\\xb2\\xbb\\x2c\\xd7\\x51\\x29\\xd5\\x64\\x18\\x85\\x43\\x48\\xc3\\x39\\xdc\\xd9\\x12\\xb4\\x55\\x57\\xa9\\x15\\xe9\\xfd\\x7f\\x37\\x91\\x62\\x36\\x51\\x0c\\xb6\\xc3\\x31\\xc1\\x40\\xb8\\x7d\\x22\\x53\\x11\\x60\\x0b\\x8d\\x13\\x2a\\xc4\\x74\\x73\\x83\\x9c\\x72\\x0f\\x9f\\xf0\\xf9\\xc1\\xdc\\xaa\\x85\\x81\\x5a\\x9d\\x27\\xb9\\x75\\x8c\\xd9\\x1d\\xc5\\xd3\\xe5\\x33\\x26\\xfc\\xdf\\xb2\\x73\\x0e\\x52\\xbe\\x31\\x03\\x95\\x7a\\xc8\\x91\\x49\\xa4\\xc3\\x00\\x4c\\xb6\\x03\\x8c\\x0d\\x80\\xfa\\x72\\xac\\x63\\x0d\\x33\\x3b\\xe5\\xad\\x4a\\xdb\\x58\\x5a\\xeb\\x71\\xae\\xf1\\xcd\\xfd\\x57\\xb9\\x15\\xfa\\xc4\\xf1\\xaf\\x78\\xe7\\xa5\\x97\\xf8\\xd1\\xba\\x06\\x67\\x2b\\x19\\xc0\\xb6\\x58\\x08\\xa8\\xa0\\x71\\xff\\x84\\x09\\x03\\x43\\x79\\x58\\x9f\\x3d\\x41\\x30\\x2d\\x2d\\x39\\xb3\\x31\\x8e\\x8c\\x00\\x90\\xfa\\x36\\xcb\\x95\\x88\\x57\\xff\\x5b\\x21\\x1c\\x96\\x66\\xe2\\x7b\\xc8\\x95\\xab\\x9d\\x00\\x6a\\xba\\xf5\\x95\\x0a\\x03\\xff\\x17\\xea\\x98\\x21\\x78\\xa4\\x46\\xdd\\xa2\\x46\\x6f\\x5a\\x40\\xb8\\xf8\\x95\\x50\\x9e\\x4f\\x4d\\x4a\\x6a\\x27\\x39\\x99\\x7f\\xbd\\x49\\x68\\xf8\\x94\\x36\\xce\\xe3\\xd8\\xed\\xb8\\xa6\\xda\\x9b\\xd3\\xd5\\x5b\\x06\\x64\\x90\\xe8\\x33\\x9c\\x78\\x93\\x5b\\x77\\x88\\x3f\\x95\\xb9\\x32\\xfa\\x5e\\x6b\\xb7\\xdf\\x30\\x3b\\xe3\\x0f\\xa5\\x67\\x24\\x9f\\xff\\xb4\\x73\\xa1\\xe4\\x64\\x32\\x2d\\x7c\\x10\\x3f\\xe8\\x22\\x4c\\x7e\\xc5\\x7b\\xd3\\x9b\\xcd\\x03\\x0b\\x96\\x78\\x7a\\xeb\\xcd\\x20\\xe9\\xad\\x65\\x1c\\xfa\\x2b\\xf0\\x4b\\xa7\\x0a\\x1c\\xf6\\x48\\xe0\\xa5\\x44\\x95\\x67\\x20\\x2a\\x93\\x7a\\x45\\xbe\\xcb\\xb6\\xfc\\xde\\xd3\\x0c\\xf9\\xb5\\xc7\\x48\\xf8\\x82\\xb5\\xdc\\x2a\\x4d\\x65\\xbe\\x69\\xfd\\x7d\\x9c\\x38\\x1e\\x83\\xd0\\xdc\\x2a\\x34\\xb6\\xde\\xe9\\x12\\x20\\xba\\x90\\x6e\\x51\\x2f\\xcd\\x63\\x36\\x8e\\x2c\\xe7\\x33\\xe4\\x66\\xb4\\xb8\\x2b\\x84\\xfb\\x0c\\x71\\x7d\\xc8\\x94\\x5c\\xaf\\x6d\\x46\\xac\\x1c\\x2f\\x64\\x18\\xf7\\x72\\x9e\\xf4\\xc3\\x5e\\x40\\x24\\x22\\xd6\\x4b\\x1c\\x3e\\xbd\\x1b\\x32\\xa3\\x0f\\xc4\\xc5\\xee\\xce\\x7d\\x44\\x08\\xff\\x67\\x9f\\xf0\\x1a\\x1c\\x7b\\x03\\xca\\x51\\x7b\\xe5\\x2e\\x6a\\xe7\\x65\\x0f\\x7b\\xad\\x38\\x90\\x1e\\x34\\x8a\\x55\\x93\\xbc\\x99\\x8f\\x7c\\xf2\\xea\\x97\\x72\\x9c\\xb0\\x04\\xf5\\x61\\xb3\\xb5\\x8f\\xe5\\x98\\x09\\xa4\\x1f\\xd4\\xb3\\xb7\\x66\\x60\\x90\\x6a\\xd9\\xed\\xa2\\x3b\\xf9\\x25\\x43\\x7e\\xf4\\x52\\xb1\\x6f\\x54\\x0b\\x3b\\x80\\xa3\\x5a\\x70\\x93\\xc2\\x73\\x4e\\xef\\xe6\\xfa\\x97\\xd8\\x81\\xd7\\x9e\\xf5\\xb7\\x67\\xd9\\x88\\x9f\\x11\\x84\\x77\\xb7\\x3f\\x58\\xa4\\xc0\\xcb\\x15\\xe0\\xac\\x81\\x01\\x12\\x05\\x71\\xca\\x32\\xce\\x87\\x1f\\x30\\x8a\\xd9\\x05\\x7a\\x80\\xc8\\x28\\x15\\x4f\\xb1\\xbc\\x2b\\x20\\x1d\\x0c\\xd1\\x00\\x6e\\x02\\x2d\\x44\\x4d\\xc9\\x3f\\x1b\\xcf\\x22\\x4d\\xb7\\x4a\\x5b\\x37\\x3e\\x15\\x3e\\x85\\x18\\x54\\x94\\x8b\\x6d\\xa1\\x47\\xb7\\x32\\x87\\xcf\\x17\\xd1\\xfb\\x72\\xb4\\x82\\x76\\x11\\x10\\x36\\x09\\xca\\xb2\\xa1\\x77\\x9e\\x97\\x93\\xb9\\xa7\\x08\\x20\\xfc\\x6f\\x38\\x28\\xa6\\x4c\\x9e\\xac\\x35\\xef\\x7a\\xa7\\xb1\\x76\\x09\\xd8\\xef\\xf8\\xa9\\xe5\\x2e\\x4e\\xbc\\xd8\\x6b\\x1e\\x14\\xfd\\x14\\x0b\\xea\\x47\\xc6\\xb8\\xdd\\xc4\\x1e\\x8c\\xd2\\x71\\xeb\\x92\\x28\\x7c\\xbd\\x06\\x10\\x51\\x22\\x42\\xf7\\x6a\\x1e\\xf3\\xea\\xc1\\xe4\\xbb\\xbc\\x1a\\xda\\xe5\\x00\\x34\\xa7\\xa2\\x64\\x7e\\x08\\xb2\\xfd\\x20\\xaa\\x93\\xa9\\x3c\\xb2\\xff\\xde\\xbf\\x2e\\x46\\x1e\\xcc\\xef\\xbb\\xd1\\xfe\\x89\\x4c\\xe7\\x0a\\xdf\\x79\\x01\\x73\\xba\\xe9\\x6f\\x5a\\x55\\xa1\\x88\\x7e\\x9a\\xe0\\x9f\\xce\\xd1\\xd4\\x30\\x6c\\x29\\x1c\\x6b\\x19\\xec\\xac\\x47\\x07\\xe9\\xef\\x71\\x3e\\xa1\\x8a\\x75\\x62\\xc6\\x67\\x83\\x26\\x22\\x89\\x92\\x07\\x7a\\x46\\x69\\x73\\x49\\x66\\x10\\x80\\x00\\xb4\\x14\\x4f\\x45\\xa0\\xc3\\xa2\\x86\\x3a\\x4c\\x6a\\x3c\\x07\\x63\\x2c\\xb9\\x3e\\xb1\\x97\\xd2\\x94\\x88\\x4d\\x9c\\xa3\\xdd\\x4b\\x21\\xf3\\x9d\\xb7\\x07\\xf6\\x3a\\x7f\\x9a\\x57\\x0f\\x7f\\x0f\\xeb\\x99\\xb2\\xca\\x7d\\xa7\\xdf\\x92\\xa1\\x77\\xab\\xcf\\xe8\\x6e\\xc6\\x61\\xd3\\x0b\\xcd\\xcf\\x15\\x22\\xbd\\xb1\\xfe\\x11\\x67\\x32\\x58\\xdf\\x7e\\x46\\xef\\x4d\\x32\\x66\\x65\\x09\\x31\\x56\\x55\\x3f\\x28\\xb3\\x56\\x3f\\xe7\\x19\\x2f\\x72\\xf5\\xf9\\xb3\\x90\\x3d\\x79\\xfe\\xa0\\x4e\\x2c\\x48\\x8b\\x46\\x5b\\x49\\x78\\xd6\\x9f\\x26\\xe0\\x5a\\x59\\xd5\\xed\\x4e\\xf4\\xca\\xb2\\x32\\xac\\xfd\\x56\\x4f\\xc6\"},\n{{0x86,0x5a,0x43,0x2e,0xcc,0xe7,0xe7,0x8c,0x42,0x70,0x9f,0xc1,0xe5,0x31,0xdf,0x5e,0x39,0x59,0x13,0x2b,0x2b,0x6f,0x31,0x8f,0xd1,0xc3,0x45,0x21,0xf9,0xa2,0x6e,0x3b,},{0xc7,0xa8,0xca,0xf8,0x93,0x0b,0x62,0x2a,0x50,0x13,0x37,0xf9,0x28,0x40,0xed,0x96,0x61,0x1a,0x32,0x20,0x80,0xfd,0xe5,0xe4,0x9f,0x0a,0x2f,0x6e,0x33,0xb8,0x82,0x83,},{0x32,0xbb,0x75,0x20,0xe2,0x63,0x9c,0x6c,0xca,0x19,0xa2,0xb9,0x83,0x6b,0x08,0xf8,0xb0,0x83,0xca,0x33,0x36,0x9d,0xdf,0x5f,0x9a,0x87,0x7d,0x4c,0x7a,0x9e,0xb0,0x5f,0x9c,0x3d,0xc3,0x4e,0xd4,0xcf,0xa4,0xb2,0x83,0xe5,0x19,0x22,0xb0,0x94,0x06,0x6c,0xe9,0xff,0xa4,0xd9,0xdf,0x62,0x19,0x10,0xca,0x37,0xb0,0xb3,0x7f,0xba,0xbb,0x0e,},\"\\xb2\\x31\\xb6\\xd2\\xec\\xde\\x49\\xf5\\x13\\xb0\\xdf\\x25\\xaa\\xfc\\x3e\\x5d\\xa4\\x5b\\x6a\\x99\\x58\\xd6\\x0f\\x54\\x64\\xca\\x59\\x3c\\x03\\x00\\x5e\\xcf\\x36\\x1e\\xf1\\x69\\x6b\\xb6\\xe5\\x5d\\x65\\x38\\xe3\\x4b\\x38\\xf3\\x24\\xc2\\x1c\\xea\\x5c\\xc8\\x1a\\x00\\x73\\x27\\x8b\\xb9\\x27\\x27\\xef\\xf8\\x1a\\xf5\\x61\\x80\\x2d\\xce\\xf3\\x3b\\xec\\x10\\xad\\x65\\x94\\xe2\\x2d\\x9c\\x44\\x18\\xaf\\x39\\x88\\xa4\\x3e\\xd0\\x87\\xb9\\x95\\x4b\\xf8\\xd6\\x28\\x3e\\x4b\\xea\\xe8\\xc0\\x96\\xde\\x66\\x06\\x75\\x1c\\xbe\\xd6\\x85\\x84\\x6c\\x66\\x30\\xb9\\x52\\x8f\\xf3\\x64\\xa7\\xc4\\x84\\x64\\x11\\x34\\x72\\xc9\\x86\\x0b\\x33\\x71\\x96\\x3c\\x91\\x14\\x95\\xa9\\xc6\\x28\\xa3\\xe3\\xe4\\x7a\\xb0\\x99\\x1f\\x10\\xdd\\x1d\\xd3\\x31\\x61\\x52\\x52\\x62\\xd6\\x3b\\xab\\x64\\x88\\x19\\xd5\\x7d\\x12\\x69\\xe1\\x14\\x82\\x5c\\x54\\x34\\xe6\\xb2\\x84\\x5f\\x42\\x79\\x5d\\x4f\\xb0\\x83\\xad\\x79\\x40\\x1f\\x2a\\x07\\x61\\xc6\\x34\\xa5\\x45\\xae\\xc7\\xcd\\xb1\\x3b\\x5b\\xe4\\x49\\xf1\\xd8\\x29\\x32\\x63\\x78\\xed\\x1f\\x49\\x3f\\xe8\\xc8\\xe9\\xb0\\x68\\xcc\\x1d\\xbc\\xf1\\x65\\x55\\x0b\\x81\\x32\\xc3\\x19\\xda\\xc4\\x87\\xb8\\x7b\\xb2\\x2a\\x54\\xcd\\xf6\\x0a\\xac\\x71\\x51\\x61\\x82\\xa4\\xe6\\x9b\\xa0\\x83\\xf6\\xe8\\x6d\\x1a\\x4f\\x05\\x08\\x3a\\x77\\x61\\x9e\\xf2\\x39\\xf7\\x02\\x39\\x6d\\x7e\\x46\\x96\\x8c\\xc0\\x4a\\x3b\\x34\\xdf\\x32\\x65\\xec\\xf1\\x61\\x57\\xab\\xe1\\x5c\\x64\\x2c\\xd7\\x42\\x70\\x96\\xd8\\xd4\\x0d\\xb0\\x02\\xd1\\x96\\xca\\xb1\\xbe\\x30\\x4b\\xcf\\x32\\x2d\\x9d\\x1a\\x24\\x51\\xb6\\xc1\\x1e\\xea\\xf3\\xe8\\xe3\\xd9\\x29\\xf4\\x80\\xb6\\xb7\\x78\\x04\\xfe\\x84\\x49\\x6c\\xa7\\x57\\xe0\\x43\\x37\\x91\\x4c\\xe9\\x44\\x75\\xd7\\x99\\x0c\\x74\\x57\\xc8\\xe6\\x06\\xf8\\xbc\\x20\\x7d\\x2d\\x48\\x11\\x9c\\x80\\xa6\\xb4\\xa9\\xe0\\x7b\\x22\\x92\\x26\\x57\\x0d\\xcd\\x99\\x49\\x89\\xfe\\xcc\\x69\\x4c\\x6c\\x2f\\xb5\\x97\\x5c\\x9a\\x6a\\x9b\\x74\\xe8\\x15\\x9c\\x27\\xdd\\x36\\x77\\xdf\\xd5\\xcb\\x65\\x1f\\x1e\\x32\\xad\\xfa\\xfd\\x81\\x0b\\x6e\\x5d\\x5e\\xfb\\xac\\xe3\\x1a\\xe6\\xd9\\xb1\\x21\\x91\\xe8\\x93\\x98\\xda\\x06\\x3f\\x13\\x8b\\x75\\x84\\xc5\\x8e\\x77\\xe7\\xf9\\xfd\\xd7\\xfb\\x9e\\xf5\\xd6\\x8a\\xe4\\x9c\\x6c\\xca\\xd2\\x8d\\x18\\xbc\\x60\\x09\\xd4\\x18\\x7e\\xd1\\x42\\x02\\x24\\xa5\\x65\\x8a\\xad\\xf1\\x35\\xb5\\xa9\\x53\\xf2\\xdc\\x3c\\x8b\\xfc\\xaf\\x66\\x9e\\xd5\\xda\\x38\\xd0\\x14\\x4f\\xd9\\x66\\x5e\\x6f\\x06\\x77\\xd3\\xfc\\x88\\x04\\xe2\\x1c\\xc2\\x5f\\xd5\\xe0\\x1a\\x3f\\x3f\\xa8\\x3e\\x57\\x1e\\xb2\\xf8\\x82\\xa7\\x65\\x9c\\xe5\\xd8\\x64\\xd8\\xbb\\x54\\x07\\x2b\\x09\\x86\\xa8\\x54\\xf1\\xa7\\xf2\\xd2\\x72\\x0d\\xf8\\x57\\xe6\\xd4\\x21\\x96\\x30\\x84\\x1b\\x1c\\xcd\\xcf\\xc6\\x72\\x6b\\x91\\xbf\\xc1\\x7e\\x18\\xc3\\xe3\\x48\\x0c\\x23\\xa2\\xc0\\x5e\\x4b\\xfe\\xdd\\xd4\\xdb\\x9e\\xf4\\x23\\x88\\xf2\\x34\\xfd\\x3e\\x4f\\x3d\\xad\\x66\\x60\\x26\\xe2\\x78\\x06\\x12\\x37\\x41\\x61\\x31\\x6a\\xfc\\x76\\x65\\xf9\\x41\\x1b\\x6c\\x5a\\xa7\\x89\\x33\\xb1\\x80\\x21\\xc0\\x12\\xb0\\x84\\xf3\\x24\\x47\\x60\\xa4\\xea\\x1b\\xcf\\x31\\xcc\\x9f\\x5c\\x40\\x44\\xa9\\xbc\\xc7\\x5a\\x98\\x67\\x07\\xf3\\x8f\\x45\\xac\\x1c\\x7f\\xa1\\x39\\xee\\x95\\xa6\\xd8\\xf1\\x6c\\x3c\\x1e\\x12\\x76\\x4c\\x4b\\x0b\\x11\\x94\\xc0\\xfc\\x5f\\x7e\\xef\\xf9\\xa8\\x48\\xc4\\x05\\x0b\\x0e\\x65\\x16\\x84\\x71\\x9d\\x43\\x8a\\xad\\x56\\x01\\x91\\x64\\xfa\\xe4\\xf4\\x88\\x82\\x20\\x5e\\xce\\x0b\\x99\\x73\\x67\\x91\\x08\\x4a\\x75\\x3b\\xa7\\xd5\\x6e\\x88\\xfc\\xee\\xa5\\x33\\x56\\x6c\\x3a\\x2c\\xa4\\x8d\\xd6\\xef\\xc4\\x9b\\x27\\xdb\\xf1\\x4f\\x26\\x16\\xce\\xd6\\x52\\xe1\\x38\\x33\\xab\\x90\\x28\\xad\\xa4\\x54\\x43\\x1c\\x89\\xb3\\xcb\\x74\\x41\\xfd\\xb8\\xf2\\x3e\\x12\\xb6\\x0a\\x1a\\x10\\x4a\\x2a\\x8c\\xf4\\xa6\\x4e\\x87\\x8a\\xa2\\x6f\\x54\\xe8\\x88\\x1a\\x4b\\x15\\x1a\\x16\\xa9\\x6d\\xe8\\xb9\\x80\\x7e\\x72\\x93\\x96\\xeb\\xe3\\xe3\\xd3\\x94\\xf8\\x08\\xbd\\x74\\xb7\\x31\\x2f\\xe6\\xb8\\x4b\\x13\\x12\\xaf\\x8a\\x1e\\x41\\x33\\x59\\x9d\\x07\\xbd\\xf3\\x3d\\xb2\\x1e\\x01\\x6b\\x5c\\x19\\x6c\\x1b\\xa3\\x11\\x57\\x08\\xf5\\x81\\xbb\\x82\\xf4\\xb5\\x7a\\x6c\\xa1\\xa5\\x29\\xe6\\x4d\\x19\\x30\\x42\\xc1\\xdc\\x5f\\xaa\\x0a\\x03\\xab\\xf5\\x38\\x49\\xe1\\xbd\\xef\\xba\\xb6\\x4b\\x1c\\xb6\\x0f\\xe1\\x0a\\x3f\\xc1\\x82\\x3a\\x23\\x4c\\x45\\xf3\\xb0\\xdc\\xe6\\x6a\\x46\\x73\\x9c\\x01\\xae\\xad\\x12\\xde\\x6f\\x03\\x13\\xc7\\xbe\\x71\\x40\\x5f\\x3f\\xdc\\x4a\\x50\\x7a\\x9d\\x84\\xe8\\x68\\x6f\\x6f\\xc9\\x26\\x35\\xdb\\x0f\\x78\\x56\\xc7\\x37\\x3a\\x61\\x8a\\x72\\x52\\xc1\\x29\\xa7\\x76\\x0e\\x20\\x29\\x54\\x3d\\x72\\x62\\x28\\xc2\\x1d\\x00\\xad\\x4a\\xc5\\x2e\\x5b\\x1a\\x6e\\x31\\x20\\x09\\x17\\xf1\\x5a\\xf5\\x15\\x85\\x9e\\x08\\xf2\\xa7\\x9a\\xce\\x67\\x99\\x1e\\xd6\\x90\\x44\"},\n{{0x2b,0xe1,0xf9,0x8c,0xe6,0x55,0x3c,0x91,0x5b,0x6a,0x09,0x33,0xec,0x0d,0xe3,0x47,0xb3,0x70,0xe2,0x9c,0xa2,0x94,0xe8,0x00,0x55,0x41,0x23,0x9f,0x63,0xb4,0x30,0xd0,},{0x7a,0x6f,0x44,0x69,0xc3,0x0a,0x63,0xf5,0x60,0xf9,0x87,0x34,0xfc,0x19,0x06,0xeb,0xd1,0x37,0x1e,0xd8,0x01,0x25,0xfa,0x3e,0x4c,0x86,0xb4,0x3f,0x26,0x2c,0xab,0xbc,},{0x8e,0x65,0x9a,0x3f,0x53,0x5a,0x58,0x9a,0x5f,0xd2,0xd2,0x17,0xcb,0xcb,0x8b,0x77,0x7e,0x5a,0xf2,0x0b,0x23,0x44,0x32,0xf7,0xda,0xc2,0x9f,0x81,0x0a,0x2b,0x47,0x37,0xc5,0xca,0xb1,0x0b,0x59,0xdf,0xd0,0x14,0x4f,0x30,0x90,0xf5,0xf9,0xe0,0xe6,0x67,0xf0,0xe2,0x1a,0x9f,0x57,0x3f,0xe1,0x3b,0x1c,0x28,0xec,0xcb,0xb5,0x31,0xa2,0x05,},\"\\x62\\x68\\x20\\x1f\\x93\\x2a\\x7c\\xd3\\xf8\\x79\\xae\\x6a\\xb8\\x38\\x55\\xa2\\xf5\\x02\\x91\\xde\\x78\\x4d\\x7d\\x9e\\x9a\\xda\\xa1\\xb9\\xaf\\xed\\x6f\\x5a\\xea\\x20\\x24\\x0e\\x59\\xfe\\x93\\xe5\\xa7\\x08\\x8c\\x95\\xec\\x8e\\x15\\x74\\x5f\\xb8\\xfd\\xeb\\x91\\xdf\\x01\\x51\\xc7\\xb4\\x60\\x50\\x67\\x56\\x1e\\xa0\\x8d\\xbf\\x00\\xc4\\xff\\xe1\\xfd\\x0a\\xcf\\x10\\x36\\x56\\xa7\\xb5\\x4f\\xad\\x0f\\x25\\xab\\x16\\xb4\\xbd\\xa3\\x47\\x17\\x9e\\xd1\\xca\\xdb\\x7b\\x98\\xbe\\x08\\x95\\xe0\\x50\\xdc\\xbc\\x37\\x9d\\x1f\\xd5\\x53\\xe9\\x97\\x95\\x92\\x8b\\x67\\xa7\\x52\\xf8\\xd2\\xec\\x1b\\x9d\\x66\\xbf\\x6a\\xc9\\x97\\xe7\\x44\\xdc\\x32\\x7f\\x24\\x22\\x30\\xf9\\x2e\\x79\\xae\\x31\\x27\\x45\\xa5\\xab\\x6d\\xde\\xc1\\x99\\x8f\\xb6\\x3d\\xc4\\xf6\\xb0\\x5f\\x14\\x72\\x22\\xd4\\xb6\\x5a\\xce\\x90\\x17\\xdc\\x1b\\xcd\\x67\\x5e\\x49\\x5f\\x9e\\xab\\xb5\\xf6\\x02\\x13\\x3f\\x6c\\x72\\xe0\\x53\\xe9\\xf4\\xae\\x30\\xd8\\x72\\xd7\\x8b\\xf7\\x1f\\xeb\\xa3\\x7a\\xcc\\x59\\x50\\x55\\xc3\\xbe\\xa5\\x3a\\x05\\xef\\x0c\\x7f\\x21\\x2d\\xcf\\x4e\\x0a\\xf8\\x38\\xea\\x29\\x28\\xf4\\xcd\\xc9\\xfd\\xc8\\x37\\xda\\x25\\xf2\\x69\\x66\\xb2\\x45\\x6a\\xbe\\xa6\\x6a\\x5d\\xfb\\x8f\\xaa\\x8f\\xa0\\x91\\xf7\\x33\\x1d\\x54\\x36\\xe9\\x8a\\x8d\\x63\\x23\\xcc\\x9e\\x9a\\x91\\xd5\\xa0\\x2a\\x49\\x51\\x17\\x14\\x84\\x9b\\x47\\x45\\x4b\\xaf\\x99\\xc5\\xf8\\x50\\xa0\\x8d\\x3d\\x98\\x41\\x0e\\x93\\x9a\\x9e\\x89\\xb1\\x50\\x53\\x82\\x5f\\x3e\\x9a\\xee\\x71\\x44\\x74\\x16\\x14\\x07\\x82\\xe1\\xbf\\x3b\\x0d\\x8b\\x4f\\xf6\\x2e\\x77\\xa4\\xa0\\x3f\\x71\\x0a\\x8a\\xb7\\x6c\\xf6\\x35\\x92\\xc0\\x5c\\x44\\x0c\\x8f\\x06\\x47\\x70\\x09\\x91\\x63\\xc1\\x22\\x70\\xf3\\xd5\\xec\\x9a\\x6b\\xc9\\x71\\x5b\\xff\\xfe\\xc7\\x69\\x61\\x1d\\x21\\xfa\\x00\\x3c\\x3c\\xc8\\x35\\x6c\\x97\\x5d\\x37\\xb6\\x2b\\x88\\xaa\\xbb\\x85\\x97\\xda\\xca\\x19\\x6c\\x96\\x48\\xa3\\x1d\\x15\\xbb\\x0b\\x86\\xcf\\x07\\x0e\\xe0\\x1e\\x51\\x1e\\xf3\\x73\\xb4\\xa4\\x4c\\x6a\\x00\\x16\\x0a\\x79\\x7f\\x2e\\x82\\x0b\\x71\\x6f\\x5c\\xa6\\x44\\x64\\xe4\\x18\\x9a\\x00\\xfe\\xe9\\x78\\xd3\\x5b\\xf2\\x04\\xf7\\x1d\\xb1\\xf5\\x01\\xf9\\xb6\\xe5\\xdf\\xc8\\x21\\xa8\\xaf\\x5d\\xbf\\xef\\xd3\\x53\\xad\\x36\\x81\\xf9\\xbc\\x3c\\x22\\xc6\\x7c\\xb2\\x11\\xb4\\x30\\xb6\\xa5\\x5f\\x3e\\x73\\xda\\x7c\\x3a\\x07\\xce\\xb7\\xd2\\xfe\\x25\\x4b\\x10\\xc2\\x70\\x3a\\xb2\\xe2\\x29\\x4d\\xd0\\xd3\\x15\\x2d\\xc7\\xb2\\x1a\\xab\\x87\\xb1\\x50\\xf7\\x37\\xa9\\x47\\x46\\x3f\\xb2\\x04\\x17\\x5d\\xe8\\x54\\x32\\x36\\xfb\\xb0\\xda\\x5c\\x7d\\x48\\xc5\\x7f\\x61\\x74\\x4d\\xe6\\xf9\\x84\\xaa\\x8e\\x61\\xb9\\x70\\xc6\\x2d\\x0e\\xeb\\x84\\x9d\\xa7\\xe8\\x9a\\x61\\x22\\x2d\\x43\\x20\\x79\\xcb\\xcf\\x5f\\x8a\\x2b\\xa9\\x30\\x30\\x16\\x83\\xc0\\x78\\x5c\\x26\\xfd\\xf8\\x5d\\xa3\\x02\\x08\\x74\\x60\\x45\\x99\\xac\\x6c\\x84\\x7e\\xc2\\x60\\x86\\x58\\xb5\\x78\\x8c\\x7b\\x8d\\x3a\\x37\\x44\\xfd\\x54\\x42\\xe2\\x4c\\x8e\\xec\\xcd\\x42\\x07\\x56\\xbd\\xd8\\xb8\\xa7\\x7c\\xfd\\x80\\x58\\x96\\x05\\xdc\\xed\\x9a\\xfd\\xa2\\xbd\\xb6\\x30\\xa0\\xcb\\x61\\x2f\\x73\\x9c\\xe6\\x17\\xd5\\x4e\\xde\\x6c\\xcf\\x36\\xaa\\x31\\xe7\\xe3\\x73\\xd8\\xa0\\xfb\\x1b\\x7c\\x99\\x06\\xf7\\x6b\\x5f\\x9d\\xe8\\xc2\\x68\\x91\\xde\\x00\\x6e\\xb7\\x97\\xea\\xd4\\xa8\\x6f\\x70\\x16\\xf3\\x4b\\xcd\\xe9\\x2f\\x94\\xac\\x3e\\x92\\x0b\\xa5\\x8d\\x6d\\xff\\x77\\x20\\x78\\xd8\\x02\\xa9\\x4f\\x56\\xcb\\x26\\xbf\\x79\\x4f\\xd9\\x0c\\xa0\\xad\\x4f\\x2e\\x7a\\xcd\\xc5\\x92\\x9b\\xc7\\x36\\x49\\x97\\xde\\xd9\\x8c\\xa6\\x9c\\x57\\x39\\x91\\xbb\\x9a\\xb8\\x5f\\x23\\x5b\\x63\\xe7\\x6f\\x77\\xe0\\xab\\x45\\xe7\\x89\\x12\\x38\\x98\\x69\\xaf\\x21\\xe7\\x4e\\x66\\xf7\\xc4\\x56\\xb8\\x27\\xe6\\x70\\xbe\\xb0\\xf0\\x72\\x66\\x88\\xbb\\x1f\\x90\\x36\\xd3\\x8d\\xa0\\x7d\\x69\\xea\\x36\\x66\\xf7\\x6b\\xd6\\x05\\xd8\\x2e\\x2d\\xd6\\x38\\x7e\\xce\\x6e\\x82\\x4a\\x56\\x97\\x00\\xf0\\x1b\\x19\\x5d\\x1a\\x9b\\xdc\\xb0\\xf9\\x6a\\xb5\\xc5\\x4e\\x06\\xc2\\x11\\x9b\\x40\\x6b\\xc4\\x88\\x84\\x80\\x66\\x04\\x18\\xbb\\x42\\x88\\xea\\x2f\\xda\\x96\\x63\\x1b\\x0e\\x1f\\x60\\xac\\x86\\x1d\\x6c\\xcc\\x4c\\x84\\x4b\\x64\\x7a\\x7d\\x74\\x03\\xbc\\x2d\\x15\\xba\\xfe\\x4a\\xf6\\x77\\xe8\\x56\\xfe\\x0d\\x2b\\x5f\\x66\\x3b\\xe4\\xe4\\x80\\xb3\\x8f\\x6b\\x76\\x6a\\xdc\\xd3\\xd0\\x52\\x98\\xef\\x13\\x98\\xd0\\x4d\\x15\\x23\\xa6\\x8b\\x91\\xdd\\x31\\xcf\\x5d\\xc4\\xb7\\x3d\\xec\\xbf\\xd7\\x21\\x3f\\x98\\x1b\\x20\\x7e\\x1f\\x6e\\xf2\\x25\\xd7\\x94\\x8a\\x1a\\xa1\\x7d\\x8d\\x57\\xa1\\x12\\xf1\\xd4\\x46\\x8d\\x2d\\x28\\xf7\\xec\\x2e\\x54\\xb7\\x4a\\x69\\x2c\\x59\\x58\\x02\\x2e\\x82\\x03\\x1a\\x41\\xb3\\x15\\x09\\x0e\\xd4\\xd5\\xbd\\x7b\\xd0\\xb4\\x51\\x47\\x63\\x38\\xf7\\x39\\xa7\\xd7\\x03\\x1a\\xf2\\xd3\\x6c\\xaa\\x09\\xff\\xdb\\xb7\\xc3\\x96\\x50\\x7c\\x75\"},\n{{0x10,0xbb,0xe6,0xe7,0x61,0xa7,0x5c,0x93,0x5b,0x51,0x7f,0x09,0x36,0xfe,0xcb,0x9e,0xc6,0xfc,0x21,0x5e,0x58,0x13,0x08,0x00,0xea,0x18,0xd1,0xff,0x44,0x2a,0x4f,0x13,},{0x86,0x43,0xdd,0xf8,0xaa,0x8d,0x9c,0x8a,0x78,0xb6,0xeb,0x69,0x9f,0xd2,0x0a,0x57,0xf6,0xf1,0x86,0x36,0xb0,0x6c,0xe6,0x9d,0xac,0xdc,0xa1,0x26,0x7a,0xcb,0x39,0x54,},{0xf0,0xf3,0x57,0x41,0x03,0x73,0x31,0x3b,0x7c,0x62,0x52,0xd6,0xd9,0x66,0x00,0x36,0x0c,0x23,0x75,0x2d,0x43,0x1c,0xa8,0x07,0x5b,0xcf,0xb7,0x72,0xd4,0x9c,0xd6,0x09,0xb6,0x5c,0x9c,0xd8,0x38,0xd6,0x34,0xd8,0xd9,0xb9,0x5d,0x1e,0xe3,0x0e,0xde,0xcc,0x13,0xe3,0xca,0x99,0x7b,0x24,0x37,0x30,0x3f,0x8a,0x33,0xa1,0xff,0xc8,0x33,0x06,},\"\\xe8\\x10\\x8c\\x6d\\xe4\\x13\\x37\\x33\\xdc\\x19\\x9a\\x73\\x39\\x2e\\x22\\x6f\\x71\\x2c\\x36\\xa2\\x4f\\xa9\\x1d\\x6f\\xb0\\x9f\\x92\\xdf\\x21\\x8d\\xeb\\x2d\\x28\\x30\\xa6\\x68\\xfd\\x69\\x4b\\x48\\x09\\xd0\\x25\\x35\\x07\\x23\\x12\\x47\\xc7\\xf2\\x58\\xb4\\xd6\\x5c\\x56\\xbb\\x69\\x34\\x5e\\xf6\\xaa\\x97\\xe7\\xc5\\x9e\\x81\\x53\\x77\\x5a\\x5a\\x3c\\xf1\\x09\\xc4\\xbc\\xa9\\x81\\x55\\x69\\xda\\x69\\x32\\xe8\\x21\\x83\\x42\\x5b\\x42\\xd7\\x48\\x3c\\x9d\\xbf\\xcb\\xd8\\xeb\\x38\\xc8\\x47\\x29\\x57\\x1e\\x8e\\xc9\\x39\\x82\\xc3\\x17\\x71\\x67\\x59\\x59\\x8c\\x4f\\x6a\\x1b\\x7f\\x8d\\xa7\\x30\\x6a\\x78\\x15\\x72\\x1c\\xaf\\x02\\xe7\\x02\\x46\\x71\\x23\\x14\\xf7\\x66\\xbe\\x9c\\xb1\\x77\\xcd\\x2f\\xa3\\xbd\\xa2\\x2c\\xd6\\x76\\xc5\\xd2\\xe8\\x6e\\x8d\\x79\\x8f\\xd3\\x4f\\x54\\x3c\\x9b\\xe3\\x12\\x96\\x51\\xf2\\x73\\xf4\\x84\\xf0\\xb9\\x46\\x7b\\x14\\x09\\x55\\xcd\\x29\\x81\\xff\\x26\\x03\\xc0\\xbd\\xbb\\x43\\x6a\\xc0\\x95\\x5a\\x11\\x6c\\x5e\\x5f\\xc3\\x04\\x25\\xe1\\xfe\\x78\\xf6\\x41\\x0f\\x6e\\xf7\\x57\\xf6\\x04\\x66\\x88\\x54\\xba\\xe7\\x9b\\xfe\\x22\\xe1\\xa8\\x5c\\xe5\\xee\\x5d\\x64\\x34\\xb4\\x61\\x01\\x20\\xea\\x7e\\x5d\\x3d\\x13\\x7c\\xe2\\x07\\x51\\x4f\\x85\\x34\\xad\\x9b\\xf3\\x92\\xb7\\xdc\\x53\\x55\\x51\\x4b\\x59\\xf8\\x35\\x46\\x6c\\x8e\\xb5\\x6f\\x44\\xed\\xdc\\x5b\\xad\\x20\\xcf\\x0b\\x48\\x0b\\x2e\\x82\\x2a\\x6f\\x46\\xfd\\x95\\xf3\\x0f\\x18\\x3c\\x7b\\xb3\\x14\\x3e\\x4e\\x61\\x00\\xe2\\xdb\\xc9\\xf2\\xbf\\x0d\\x43\\x07\\x3e\\x0f\\xe6\\x5f\\x01\\xbc\\xce\\x6a\\x1a\\xe4\\x01\\xc1\\x25\\x41\\xbe\\x3a\\xe6\\x8c\\xde\\xac\\x2a\\x4a\\xc7\\x1f\\x16\\x63\\xb5\\xfd\\xfc\\x2e\\x50\\xf0\\xe0\\x77\\xfb\\x3a\\x0a\\x8b\\x8e\\xee\\xad\\x62\\x7c\\x1c\\x3e\\x79\\xdd\\x73\\x61\\x04\\x6f\\x7e\\x57\\xc1\\x74\\x36\\xc3\\x2d\\xc4\\x43\\x2f\\x05\\x00\\x28\\xcc\\x7a\\xa4\\x40\\x8c\\x2d\\x29\\xd1\\xd7\\x99\\x8f\\xdc\\xdd\\xa3\\x2b\\xb3\\x2f\\x70\\x4d\\xc2\\x63\\xdb\\x9b\\x8e\\x06\\xc5\\x76\\x30\\x87\\x0f\\x8b\\xb6\\xec\\x66\\x1f\\xde\\x1b\\x7d\\xa9\\x4d\\x53\\xb0\\x47\\x70\\x1a\\x45\\x88\\x47\\x8c\\x1c\\x66\\x23\\x46\\x74\\x1a\\xea\\xc4\\xc2\\x53\\x38\\x55\\x6a\\x3d\\x84\\x8d\\xe5\\xb2\\xa2\\x3e\\xce\\xa6\\x1b\\x77\\x6b\\xd0\\xe8\\x03\\x7e\\xfb\\x85\\x01\\xef\\xf2\\x39\\xc7\\xfa\\xcc\\xa6\\xc8\\x36\\x7e\\xd7\\xc8\\xad\\xce\\x91\\x9f\\xef\\x1a\\x15\\x5a\\xe0\\xd5\\x47\\x8a\\x98\\x00\\x2c\\x95\\xa1\\x6f\\xbf\\x4c\\x0e\\xd0\\x16\\xea\\x5d\\x38\\x66\\xfe\\x1d\\xe4\\x54\\x83\\x2a\\x4e\\x95\\x65\\x97\\x6b\\x60\\xb3\\xdd\\x2e\\xaf\\x7f\\xee\\x61\\x2f\\x2b\\xc0\\x40\\xd9\\x39\\x75\\x43\\x5e\\xeb\\xd1\\x2f\\x06\\xeb\\x09\\xec\\xea\\x2c\\x66\\x76\\x83\\x08\\xf5\\x8c\\x77\\xac\\x51\\xed\\x7b\\xd2\\x16\\x36\\xfc\\x9c\\xc3\\xfd\\x14\\x87\\x0b\\xd0\\x6b\\xdf\\x12\\x8a\\x81\\xb1\\x47\\x92\\xe6\\x08\\xc4\\x7e\\xa2\\xd5\\x35\\xca\\x7a\\xa2\\x1e\\xb8\\xa8\\xa5\\x6d\\x76\\x99\\x16\\x63\\xa8\\x19\\x0a\\x95\\x05\\x7d\\x33\\x67\\x1e\\x73\\xc7\\xcb\\xce\\x5a\\x98\\xd3\\x1e\\xf0\\xd7\\x3b\\xd0\\xb1\\x63\\x78\\x7b\\x7f\\xdc\\xd2\\xdd\\xfc\\x72\\x96\\x0f\\x2b\\xe3\\x20\\x84\\x6d\\x4b\\x29\\x08\\x0d\\x7a\\xeb\\x5b\\x7e\\xa6\\x45\\xa2\\xad\\x5a\\x59\\xc0\\x12\\xbf\\x7b\\x95\\x15\\xd8\\x59\\xe1\\xc1\\x47\\x2e\\xf8\\xa4\\xd3\\xc9\\x5e\\x71\\x1a\\xf9\\x7a\\xe4\\x61\\x8e\\xfb\\xab\\x3d\\xff\\xe8\\x8c\\x9f\\x6a\\xf4\\xa0\\x9b\\x0e\\x73\\x38\\x7e\\x25\\x1b\\x77\\xd7\\xbf\\xf5\\x21\\x4f\\x79\\x18\\x62\\xdb\\x69\\x88\\x41\\x1e\\x2a\\xe2\\xc7\\x5b\\xf2\\x8d\\x28\\x60\\x2a\\x63\\x7c\\x26\\xf4\\x9c\\x18\\xd3\\x09\\xd2\\xfc\\x58\\xa1\\x26\\x66\\x7a\\xd3\\xc2\\xec\\x16\\x0c\\x99\\xba\\x40\\xfb\\xda\\xc1\\x7e\\x7e\\x4c\\x21\\xa5\\xd5\\x07\\x85\\x97\\x62\\xeb\\xa0\\x9c\\x41\\x60\\xdf\\x66\\xf5\\xfe\\xef\\xe6\\x71\\x5a\\x28\\xc5\\x29\\x6c\\xf4\\x3e\\x5e\\x77\\x1f\\x31\\xfc\\xe5\\x13\\x3b\\xe9\\x7c\\xab\\x57\\x30\\x1b\\x4c\\x9d\\xf9\\xcd\\x9a\\x4a\\xcf\\x1c\\x33\\xfa\\xc9\\x46\\xfa\\x15\\x96\\xfa\\x65\\xc8\\xf3\\x65\\x8b\\xe4\\x7a\\x47\\x3a\\x62\\xc5\\x21\\x81\\xec\\xa1\\x83\\xe4\\x24\\x6c\\xd6\\x24\\xd8\\x78\\x3d\\xcc\\xe5\\xfd\\xcc\\x1f\\xea\\x17\\x3f\\x80\\x71\\xf7\\x07\\x4f\\x55\\x89\\x7d\\xe9\\xbf\\xe8\\x4a\\x6c\\x4f\\xdf\\x80\\x2d\\x50\\x26\\xb8\\x14\\x5e\\x6c\\x8c\\x89\\x50\\xaf\\xc5\\xb4\\x0f\\xd0\\x35\\x6f\\xc5\\x5e\\xe1\\x7e\\x1f\\x85\\x3a\\x4c\\x2f\\xcc\\x34\\xa1\\x36\\x9b\\x87\\xd2\\x8d\\xc2\\xfd\\x20\\x10\\xf1\\x99\\x03\\xaf\\xf8\\xe4\\x6d\\xe0\\x49\\x38\\xf4\\x94\\x82\\x45\\xd5\\xb4\\x25\\xd0\\x74\\xac\\xdf\\x2b\\xd8\\x0b\\xfc\\x37\\x35\\xcc\\x34\\xa2\\x25\\x90\\xf1\\x94\\xaf\\x93\\x13\\xee\\xf4\\xab\\x5f\\xde\\x61\\xf1\\xf9\\xb5\\x85\\x78\\x63\\x8f\\xcb\\x4f\\x28\\x50\\xb2\\xfc\\xe6\\xe0\\x3d\\xb4\\xd0\\xa8\\x34\\x84\\x81\\x63\\xc4\\xb2\\x7e\\x12\\x9f\\x5c\\xc7\\x4f\\x67\\xf0\\x08\\xa2\\x71\\x2d\\x1d\"},\n{{0x18,0x6d,0xcc,0x7e,0xfc,0x5e,0xd7,0xe6,0x1a,0xe5,0x3d,0xc4,0x20,0x93,0xba,0xe8,0xf1,0x5d,0xd9,0x9f,0x0f,0x03,0x33,0x26,0xc5,0x76,0xff,0x75,0x69,0x50,0xd0,0x6d,},{0xc8,0xd1,0x41,0xac,0xb6,0x42,0xaa,0x9b,0xfb,0xd5,0x43,0x27,0x7c,0x2d,0xca,0x8a,0xa9,0x88,0x8e,0xef,0xf0,0x45,0x43,0xb3,0x78,0x9b,0x21,0xf2,0x6a,0xeb,0x0f,0x71,},{0x89,0x45,0x06,0x97,0x87,0xc1,0xc6,0x76,0xa8,0x4a,0x70,0x3c,0xae,0x1e,0x0b,0xac,0xae,0xff,0xd3,0x3e,0x91,0xbe,0xc3,0x60,0x3e,0x1f,0x13,0xfb,0x17,0x0e,0x31,0xe6,0xd7,0x04,0x9e,0xda,0x2b,0xf6,0x27,0x18,0x0f,0x45,0x6c,0x3f,0x7a,0xab,0xfc,0xd3,0x6c,0x49,0xa8,0xc0,0x4f,0x8a,0xe6,0x92,0x9e,0xc5,0xad,0xa0,0x7b,0x65,0x72,0x08,},\"\\x97\\x43\\x64\\xd6\\xc8\\x38\\x84\\x2c\\xcc\\x4e\\x74\\x9e\\x6a\\xfd\\x53\\x71\\x70\\xdc\\xd8\\xcc\\x50\\xd6\\x66\\x54\\xd1\\x05\\x48\\x23\\x39\\xca\\xbd\\xf7\\x4e\\x32\\x93\\x5e\\xe2\\x19\\x27\\x2e\\xa1\\x68\\x4f\\xb9\\x3c\\x1f\\xab\\x42\\xb5\\x63\\x18\\x39\\x24\\x35\\x91\\xbd\\x07\\xd3\\xbe\\x94\\x9b\\x0d\\xd1\\x5e\\x31\\x96\\xdf\\x19\\x6b\\xa7\\x52\\xad\\x11\\x21\\xac\\x71\\x12\\xd5\\x66\\x94\\x4e\\x15\\x3a\\x4e\\x06\\x19\\xb3\\xa2\\x32\\x24\\x1f\\x02\\x0b\\xe0\\x71\\x9f\\x6b\\xec\\x91\\x8b\\x26\\x82\\x8e\\xb1\\x67\\x0e\\xcf\\xc7\\x3c\\x66\\x84\\x4e\\xa3\\xe4\\x04\\xc6\\xa2\\xfc\\x01\\xbe\\xb4\\x03\\xc9\\xd6\\xca\\x55\\x1a\\xd8\\xa6\\xe7\\x1f\\x46\\x64\\x7f\\xa6\\x05\\x3f\\x03\\x14\\xf8\\x12\\x4d\\x8d\\x2b\\xc1\\x2c\\xc8\\xfa\\x8d\\xb9\\x5f\\x2b\\x73\\x53\\x75\\x20\\x1b\\x81\\x6a\\x9c\\xf4\\x0f\\x83\\xee\\x4b\\x86\\x71\\x61\\x80\\x32\\xde\\x22\\x9c\\xe7\\x62\\x71\\xd0\\x3d\\x26\\x72\\xa1\\xae\\x4a\\x28\\x8c\\x85\\xdc\\xd2\\x7f\\xb8\\x45\\x2a\\x81\\x32\\xe9\\xff\\x29\\xe1\\xe8\\x9b\\xf1\\x1b\\x1c\\x83\\x51\\x92\\xc0\\x4b\\x13\\xbe\\x14\\xf3\\xcd\\xe5\\xd3\\x7c\\xe9\\x6f\\x1d\\xc2\\xa9\\xcc\\xda\\x0c\\x4d\\x73\\x7b\\xca\\x1f\\xa2\\x20\\xd2\\x1b\\xf3\\x60\\xb9\\x05\\x15\\xbb\\xd2\\x26\\xbb\\x2a\\x6c\\x8d\\x5f\\x2a\\xb0\\x18\\xd4\\x08\\x4e\\x24\\xee\\x33\\x3c\\xe4\\xe3\\x9b\\xcb\\x6b\\x46\\xe7\\xae\\xb4\\xdb\\x9b\\x6c\\x65\\xb2\\x44\\xd9\\x82\\x82\\x3a\\x77\\x0f\\x9c\\x62\\xa0\\xbd\\xe2\\xcb\\xb7\\xec\\x36\\x84\\x0d\\x45\\x51\\x87\\xfa\\xff\\x4e\\x48\\x8a\\x5c\\x60\\x8e\\xbd\\xb7\\xdb\\x84\\xd8\\x7d\\xad\\x38\\x67\\xe3\\xb0\\xd0\\x4b\\x64\\x71\\x5e\\x16\\x56\\x0a\\x62\\xf1\\xee\\x03\\xdf\\x61\\x83\\xfd\\x5e\\x37\\x55\\x5d\\xa1\\x97\\x2f\\xca\\x06\\x2d\\x12\\xbb\\x84\\x20\\xe0\\x82\\xda\\xcb\\x8d\\xeb\\xb9\\xc1\\x43\\x85\\x41\\xd0\\xda\\x24\\x64\\xef\\x7e\\xc5\\x22\\x63\\xfb\\x9b\\x9a\\x4c\\x46\\x9c\\x83\\x32\\x3e\\x48\\x19\\xdf\\xdf\\x4f\\xa0\\xa7\\x70\\xc3\\xa7\\x09\\x25\\x4e\\x05\\x31\\x48\\x30\\xe8\\x7f\\xbb\\x67\\x36\\xc7\\x2d\\x9d\\xab\\xe0\\x1a\\x31\\x0e\\x91\\xeb\\xbf\\xae\\x76\\x7a\\x1f\\xcb\\x62\\xf6\\x4f\\xa3\\xba\\x8d\\x53\\x40\\x0d\\x64\\x69\\xad\\x1c\\xcb\\x81\\x1f\\xb9\\xe1\\x15\\xf1\\x41\\x27\\xb1\\x3e\\x83\\x64\\xaa\\x2f\\xe8\\x0b\\xbc\\x88\\x6a\\x10\\xdf\\x1b\\x9c\\xc4\\xae\\x46\\x01\\xf5\\x46\\x1a\\xf0\\x91\\xf5\\x26\\xd2\\x72\\xda\\x9b\\x20\\x38\\x57\\xa4\\x44\\x7e\\xab\\xde\\xf4\\x39\\x83\\x04\\x96\\xa5\\x75\\x9c\\x21\\xde\\x65\\xba\\x3a\\x3c\\x8b\\x8e\\x93\\x9c\\x46\\x13\\x32\\xa9\\x24\\x85\\x2c\\x20\\x5c\\x77\\x11\\xf3\\xa6\\x8a\\x23\\x67\\xa9\\x45\\xde\\xf4\\xfb\\xe5\\xf8\\x1c\\x60\\xcb\\xb7\\xe3\\x94\\xa2\\xa4\\x9b\\xe9\\xec\\x2a\\xae\\xb1\\xf3\\x30\\x57\\x59\\x79\\x44\\x6a\\xd9\\xd0\\xd5\\x4a\\xbd\\x43\\x6f\\x28\\x60\\xf0\\x42\\x34\\x26\\xf4\\xbb\\xc2\\x6b\\x3b\\x9f\\x65\\x0d\\x69\\xb1\\x00\\x72\\xd7\\x47\\xa3\\x9e\\x47\\x8f\\x45\\x5e\\xaa\\x12\\xc7\\xc6\\xe1\\x2b\\xfc\\x45\\x36\\xa3\\x59\\x43\\x44\\xbd\\x02\\xb6\\x20\\xe3\\xe2\\xb4\\xe0\\xd5\\x34\\x08\\x9d\\xd7\\xb0\\x4f\\xa6\\x34\\x80\\x45\\x67\\x58\\x6c\\x62\\xbe\\x03\\x91\\xc7\\xbd\\xb0\\xa9\\xfb\\xc1\\xef\\x3b\\x33\\x21\\x1e\\xdb\\xf8\\xef\\x58\\xc2\\xb7\\xa4\\x9d\\x06\\x66\\x79\\x59\\xd7\\xe5\\xd4\\x46\\x71\\xee\\x73\\x57\\xa1\\x0b\\xa0\\xcb\\x1a\\x44\\x5a\\xe5\\xd7\\x09\\xce\\x25\\x5e\\x92\\xde\\x71\\x59\\x75\\xaf\\x94\\xb8\\x9d\\x4a\\x29\\xc7\\x1f\\x9d\\x88\\xc8\\x5b\\x6c\\xd1\\x1d\\x8b\\x33\\x5b\\xf8\\xf2\\xc6\\x58\\xe6\\xdd\\x7c\\x3f\\x6c\\x80\\xad\\x4d\\x0e\\x5a\\x6c\\x87\\xdb\\xa7\\xb5\\xb8\\xa8\\xa4\\x7e\\x72\\xf4\\xd1\\xd3\\xc7\\x43\\x63\\x1d\\xf9\\xad\\xfc\\xfa\\x45\\xce\\xe0\\x49\\x8d\\x5a\\x44\\xa9\\xf7\\x5c\\x83\\xb7\\x5b\\x2a\\x3c\\x23\\x0f\\xf0\\x76\\x7d\\x38\\x88\\xf9\\x41\\xee\\x1b\\x66\\x24\\xdd\\x0e\\x12\\xd0\\x6e\\xd1\\xab\\x8b\\xb1\\x35\\xff\\xd3\\x79\\xe9\\xde\\x37\\x88\\xbe\\x54\\x1a\\xad\\xb2\\xd6\\xa7\\xcc\\x60\\x13\\x16\\xf2\\x1e\\xb9\\xaa\\xa9\\x22\\xf5\\x6a\\x8e\\x35\\x26\\xc9\\xbd\\x11\\x77\\xfe\\xfc\\x2f\\xbe\\x3e\\x43\\x0b\\x62\\x8e\\xeb\\xd6\\x66\\x1e\\x3b\\xa2\\xd6\\x31\\xc6\\xa8\\x42\\x2c\\x24\\x1e\\xcd\\x96\\x99\\x72\\x41\\x2f\\x74\\xda\\x6b\\x12\\x43\\xbf\\x0f\\xbe\\xe8\\xa8\\x4d\\x52\\xe4\\x0a\\xee\\x3f\\x1e\\x4f\\xc8\\x31\\x40\\x2c\\x62\\xf3\\x57\\x6b\\x22\\xe8\\xe3\\xc3\\xdc\\x4e\\x16\\x0b\\xc3\\xb6\\xb9\\xd2\\xce\\x00\\x58\\x53\\x81\\x2e\\xaf\\xc0\\xa4\\xe2\\x5b\\xa7\\x12\\x27\\x9b\\x00\\xba\\x3f\\x91\\x30\\xff\\x36\\xe3\\xef\\x19\\x71\\xdd\\xe7\\x50\\x8b\\x27\\x92\\xfe\\x64\\xd4\\x75\\x68\\x8f\\xc6\\xf3\\x31\\x3a\\xad\\xb7\\x85\\x30\\x2e\\x6b\\x7f\\x9a\\x84\\xf2\\xdb\\xc2\\xf3\\xcf\\x06\\x0e\\xe0\\x8b\\x46\\x37\\x36\\xf8\\x36\\xdb\\xb2\\x62\\xd3\\x29\\x68\\x4c\\x20\\x84\\x92\\xd1\\x7d\\x81\\x12\\x21\\xbe\\x02\\xb6\\x5e\\xe2\\x8e\\x11\\xb5\\x46\\x92\"},\n{{0x07,0x05,0xb3,0x36,0xc8,0x9c,0xa3,0x5f,0xfd,0xde,0x0a,0xf0,0xf9,0x06,0xea,0xcf,0x62,0x3c,0x56,0xc3,0xf7,0x67,0x38,0x16,0x8e,0x76,0xfc,0xd5,0x88,0x2d,0xf7,0x9e,},{0xea,0xaa,0xf2,0xa1,0x5f,0x44,0xb6,0x34,0xce,0xf1,0x5a,0x63,0x8b,0x80,0x20,0x7f,0x61,0x09,0x9a,0x07,0x96,0xf5,0xd4,0x3f,0x3e,0x9d,0x04,0x8e,0x6a,0xe7,0x96,0xc1,},{0xd4,0xa9,0xba,0xe8,0xec,0xc4,0x72,0xc3,0x76,0xba,0xb8,0x05,0xc2,0xce,0x0c,0x1c,0x2e,0xd5,0xfc,0x77,0x37,0x15,0x46,0x8c,0xb1,0xa4,0x93,0x45,0x64,0xda,0xce,0xcf,0x43,0x8b,0x1d,0xd2,0xac,0x1b,0x5c,0x5e,0x33,0x6a,0x1e,0x20,0x70,0x1d,0x5d,0xcf,0x3c,0x8e,0xe3,0xad,0x22,0x3b,0x13,0x9f,0xa9,0x0a,0x1b,0x55,0x2e,0x1b,0x77,0x07,},\"\\x61\\x6f\\xe1\\x5f\\xcc\\xb3\\x31\\x0f\\x9e\\xc7\\x45\\x64\\x47\\xda\\xda\\xf8\\xe0\\xa5\\xfb\\x26\\x9b\\xe1\\x69\\xb0\\xc3\\xea\\x2c\\xfd\\xaa\\xa5\\x5d\\x37\\x93\\x7f\\xe7\\x5b\\x78\\x32\\x4a\\xc2\\x78\\xa6\\x50\\x47\\xe0\\xae\\x4f\\x32\\x7e\\x97\\xef\\xfc\\xb7\\xbe\\xd9\\x1d\\x09\\xda\\x72\\x0b\\x0a\\x10\\x1b\\xe9\\xe9\\x6d\\x0b\\xa8\\x5b\\x1f\\xf4\\x9d\\x8d\\x1d\\xf3\\x62\\xd3\\x45\\x4f\\x0d\\xb6\\x82\\x55\\x96\\x10\\x1c\\x97\\xe5\\xda\\xca\\xd0\\x7e\\xc4\\x92\\xd3\\x0f\\x2d\\x0c\\xb7\\xe7\\xde\\x4e\\x74\\x4b\\xb6\\xa6\\x10\\x0b\\x75\\x4d\\xa8\\x47\\x41\\x1d\\x09\\xaa\\xce\\x8d\\x5d\\x41\\x07\\x58\\xb8\\x30\\x87\\xdb\\x4b\\x5e\\x62\\x97\\x97\\x9a\\x21\\xfb\\x65\\xaf\\x39\\x09\\x52\\xc4\\xf9\\x36\\x26\\x0e\\x72\\xd7\\xc7\\x83\\x27\\xb9\\x4a\\xa6\\xcd\\x61\\x72\\x78\\xb0\\xce\\x9e\\x1b\\xd3\\xfb\\xed\\x93\\xb6\\x9b\\xc6\\x49\\x85\\xdd\\xe0\\xe2\\xc4\\x35\\x7b\\x50\\x2f\\x05\\x5e\\xe7\\xb0\\xa0\\x38\\x84\\x74\\xda\\xe0\\x2d\\x6c\\x1a\\x73\\x1f\\x87\\x78\\x5d\\x75\\x3a\\xeb\\x0d\\x9c\\xfd\\xf8\\x50\\x02\\xdf\\x56\\x6f\\xc2\\x50\\x7d\\xe7\\xba\\x6f\\xd0\\x35\\xbe\\xe1\\x7a\\x2e\\x80\\x8b\\x4a\\x75\\x88\\xc5\\x83\\x37\\x5c\\x82\\x40\\x7a\\x40\\xae\\x9e\\xeb\\xdf\\x94\\xdf\\x2f\\xb8\\xca\\xbf\\x17\\x60\\x6c\\x43\\x9e\\xa7\\x04\\x59\\xb2\\x12\\xaa\\xe4\\xa3\\xf5\\x30\\xec\\xad\\xc5\\xe8\\x8e\\x25\\x48\\xfa\\x64\\x3c\\x7d\\xdf\\x50\\x63\\xb2\\xe1\\x06\\x73\\xe5\\x9d\\x07\\xfe\\x90\\x68\\x92\\xb6\\x7e\\xb5\\x8f\\x93\\x88\\xa5\\x6b\\x37\\x04\\x52\\xe9\\x97\\x77\\x55\\xfc\\x04\\xdf\\xbc\\x77\\xda\\x6c\\x05\\xbe\\xdd\\xeb\\xf0\\x36\\x52\\x56\\xb5\\x2c\\x9a\\xef\\x8a\\x82\\x17\\x3b\\x8c\\x89\\xfb\\xd9\\x8c\\xea\\x36\\xa8\\xb8\\x96\\xfe\\x66\\xd3\\x7c\\xa7\\x9b\\xec\\x7f\\xbf\\xe9\\x58\\xfe\\x89\\xf6\\x76\\x50\\x85\\xb3\\x35\\xdc\\x77\\x03\\x43\\xe2\\x30\\xca\\xdd\\xfa\\x28\\x33\\xda\\xa6\\x62\\xfe\\x82\\x08\\xdd\\x88\\x5a\\x6f\\xdf\\x72\\xe3\\x6e\\xcf\\x22\\xbb\\xbb\\xcb\\xe7\\x9d\\x37\\x06\\x50\\x23\\x69\\x40\\xbc\\x2e\\x6d\\x4a\\xc7\\x4f\\xe4\\xd5\\x54\\xc9\\xbc\\x23\\x2f\\x07\\xd2\\xaf\\x62\\x20\\xd1\\x57\\xbd\\x2d\\xa6\\xa6\\x61\\x2a\\x08\\x1b\\x4c\\x99\\x04\\xa2\\x86\\x9b\\x13\\x7e\\xe3\\xa0\\x85\\x6f\\x12\\xb2\\xeb\\x87\\x62\\xdb\\x94\\xed\\x0b\\xa1\\x36\\xf2\\x3e\\x7f\\xb4\\xbd\\x1f\\xcd\\xee\\x10\\xdd\\x84\\xe2\\xcd\\x3b\\x0a\\x49\\x14\\x8a\\xc7\\x4d\\xb4\\x66\\xdb\\xee\\xf8\\x1e\\x6a\\x8c\\xe0\\x86\\x11\\x02\\xde\\x9b\\x1a\\x3e\\x1d\\xcf\\x5c\\x6b\\x03\\x08\\xa8\\x2e\\x3a\\xc7\\xc2\\x28\\x3c\\x7c\\xc2\\xf3\\x4f\\xfa\\x14\\x5b\\x9f\\x74\\xb7\\x99\\x04\\xb3\\x2b\\x79\\xe9\\x60\\xb8\\x14\\xaa\\xde\\x63\\xa0\\xdf\\x01\\x67\\xdc\\xd2\\x4e\\xd9\\x0a\\x8d\\xa7\\xb9\\x34\\xc7\\x72\\x93\\x2f\\x5a\\x47\\x8f\\xe2\\xa7\\x2f\\x94\\x5a\\x13\\x09\\x6e\\xc3\\x7c\\xe7\\x64\\xb5\\x81\\xeb\\x89\\xe5\\xf6\\xb2\\xbd\\x7e\\xb8\\x8b\\x85\\xa8\\x95\\x87\\x77\\x4d\\x45\\x8c\\x58\\xcd\\x87\\x94\\x57\\x97\\x3d\\x64\\x8e\\xf7\\x71\\xc5\\xf1\\xde\\xb2\\x7a\\x0c\\xc5\\xb2\\x92\\x46\\xac\\x2f\\xa1\\x2d\\x18\\xdd\\xc6\\xb9\\xf9\\xac\\x9c\\xf1\\x46\\xc3\\xf2\\x2b\\x1e\\x44\\x99\\xad\\xee\\xfb\\xcd\\x22\\x49\\x74\\x0e\\x13\\xa2\\x24\\xe7\\xb6\\xb3\\xef\\x15\\x60\\x5e\\x7e\\x74\\xe6\\x8d\\x7b\\x72\\x64\\x24\\x09\\xb9\\x0c\\x4e\\xc1\\x61\\xeb\\x24\\xc9\\xb4\\x0f\\xf9\\xc7\\xe6\\xe5\\xda\\x98\\x32\\x2a\\xca\\x52\\xc4\\x6a\\x8d\\xdc\\x19\\x0f\\x1c\\xab\\x15\\x7c\\x4c\\x76\\x19\\x60\\x1a\\x6b\\x33\\xdf\\x6a\\x50\\xda\\x66\\x1b\\xc7\\x53\\x60\\xdf\\xf6\\x97\\x50\\xd3\\x45\\x74\\x09\\xcc\\x02\\x41\\xc3\\xe8\\xc4\\xb3\\xe5\\x06\\xd4\\x26\\xaf\\x52\\xb7\\x02\\x31\\xcd\\x6c\\x91\\x26\\x0c\\xc4\\x31\\xe4\\xcc\\xfd\\x49\\x6c\\xa1\\x4c\\xea\\xae\\x1c\\xda\\x78\\x72\\x1e\\x16\\x33\\x9d\\x52\\x68\\x2b\\x69\\x51\\xf9\\x66\\xc7\\xda\\x5c\\x6e\\x10\\xd9\\x19\\xae\\x66\\xa9\\xf5\\x2d\\xec\\x10\\x86\\x75\\x38\\xd3\\xdf\\x6d\\x59\\x3a\\x32\\xdb\\x69\\x5a\\x8d\\x77\\x45\\x70\\x35\\x16\\xea\\x56\\xf8\\xc1\\xc8\\xf0\\xef\\x53\\xbd\\xeb\\x7f\\x53\\xc2\\xd9\\x44\\xf5\\x11\\x94\\x0c\\xcb\\x90\\x62\\x49\\x22\\xac\\x59\\x9f\\x46\\x19\\xc3\\x04\\x62\\x07\\xd6\\x05\\xf6\\xff\\x94\\xde\\x78\\x8d\\x25\\x34\\x22\\x29\\xdc\\x8a\\xf9\\x2b\\x5f\\xdf\\x0d\\xd7\\x1d\\xf2\\xb4\\x46\\xcd\\xf1\\xd9\\xa2\\x05\\x24\\x33\\x9e\\xe1\\xc3\\x18\\x26\\x28\\x7e\\xf7\\x27\\x81\\xa7\\xa3\\x52\\x89\\xf8\\x5a\\x15\\xba\\x57\\xc7\\xfd\\x5d\\x88\\x5b\\xd0\\x55\\x3a\\xb4\\x08\\x05\\xf5\\x17\\xe8\\xf1\\xb1\\xb3\\xc4\\xfc\\x67\\x71\\xe6\\xf2\\x24\\xbc\\x03\\x11\\x24\\xb9\\xc9\\xae\\xb1\\x9c\\x5a\\x96\\xbf\\x14\\x88\\xe1\\xe6\\x6c\\x6e\\x88\\x80\\x92\\x30\\xc8\\x3a\\x74\\x15\\x55\\x54\\xa2\\x19\\xec\\x37\\x9a\\xe5\\x4a\\x9f\\xe7\\x9d\\xbe\\xde\\x3d\\x57\\x60\\x42\\xa6\\x35\\xd1\\x97\\xf4\\xd8\\x18\\xc7\\x78\\x75\\x5b\\x8b\\x45\\xe5\\x13\\xde\\xac\\x88\\xf6\\x04\\x25\"},\n{{0x95,0x17,0x4a,0x09,0x15,0x68,0x4c,0xdb,0xb6,0x19,0xb0,0x55,0x49,0x5b,0x00,0xf1,0x92,0x82,0xcf,0xfc,0x3b,0x05,0x01,0x9e,0x6a,0xb7,0x09,0xa4,0xa1,0x74,0x2b,0xab,},{0xaa,0x8c,0x87,0x2d,0x7e,0x10,0xb6,0x7f,0x7f,0xf2,0x41,0x72,0xc3,0x63,0x7e,0x80,0x82,0x5a,0x0a,0x71,0xee,0x0c,0x48,0x86,0x3a,0x2a,0xcd,0xcb,0xe8,0xda,0x45,0x9a,},{0x78,0x0f,0x40,0xc2,0x0f,0xea,0x3b,0x11,0xc9,0x42,0x2a,0x43,0xb9,0xa6,0xf7,0x96,0x11,0xe7,0xf1,0xf5,0x9d,0x14,0x88,0xc1,0x5a,0x5f,0xd2,0xd3,0x2c,0x07,0xda,0xdc,0x39,0x1c,0x38,0x95,0x3e,0xdf,0x0d,0xe4,0x8b,0xe5,0x2d,0xa2,0xaf,0x33,0x5c,0x47,0xb8,0xd2,0xe4,0x4a,0xb9,0xd3,0xdf,0xb7,0x6b,0xa5,0x38,0xb0,0x66,0x49,0x52,0x08,},\"\\x5e\\x1a\\x74\\x00\\x45\\x6c\\xad\\x4f\\x9b\\xa8\\x66\\x43\\xbc\\x7c\\xbf\\x3b\\x35\\x68\\xdc\\xb5\\x22\\xb3\\x70\\x55\\xe8\\xc3\\x9d\\x3c\\x80\\xf2\\x28\\x42\\x38\\xe5\\x72\\x7f\\xd7\\x51\\x3c\\xc8\\xb3\\x1c\\x57\\xae\\x7b\\x40\\x50\\xaa\\x81\\x9f\\xc2\\x36\\x09\\x30\\xeb\\x0d\\xd6\\x77\\xa5\\xb2\\xc7\\x29\\xfe\\xb2\\xda\\x3a\\xd7\\x9a\\xe7\\xfc\\xcd\\xdd\\xb6\\xc0\\x84\\x46\\x26\\x1e\\xc9\\xbb\\xe5\\x9c\\x64\\xe9\\x9a\\xbb\\xc8\\x6d\\x3c\\x48\\x35\\xf0\\x0f\\xef\\xe5\\x27\\x43\\x3a\\x50\\x1a\\x3b\\x6d\\x57\\x2c\\xf5\\xe1\\x2a\\x88\\x01\\x0b\\x46\\xa4\\x72\\xb9\\xbd\\x86\\x91\\xa4\\x07\\xc3\\x65\\xf9\\xf7\\x16\\x34\\xb4\\xd9\\x7e\\xdf\\xdf\\xf0\\x63\\x14\\xc0\\xc1\\xb4\\xeb\\x93\\xc7\\x60\\x7f\\x1d\\x6f\\xa3\\x54\\x65\\x93\\x22\\xc2\\x84\\x07\\x3f\\x42\\x60\\x25\\x18\\xc5\\x4f\\xdf\\x26\\xea\\x2c\\x27\\xc8\\x0a\\x6d\\xfa\\x20\\x56\\x83\\x91\\xab\\x35\\x72\\x82\\xc0\\x6b\\x23\\xbe\\xdc\\x1d\\xf1\\x26\\x4b\\x61\\x1c\\x1e\\x9c\\xf1\\x8a\\xeb\\xe2\\x49\\xfd\\x86\\x17\\xc6\\xe3\\xee\\x98\\xc5\\x3c\\x0f\\x6f\\x21\\x75\\xc5\\x7e\\xf8\\xe2\\x06\\xbd\\x3c\\xf1\\x05\\x62\\x7a\\x98\\x92\\xeb\\x68\\x99\\x20\\x21\\x3a\\xae\\xb6\\x3d\\x87\\x66\\x3d\\xbf\\xa5\\x3f\\x0f\\xb2\\x81\\x62\\x69\\x48\\x29\\x6b\\x2d\\xbc\\xdd\\xe1\\xc5\\x1a\\xf8\\x62\\xee\\xcf\\x1c\\xfe\\x8a\\x46\\xa2\\xc4\\xb2\\x8c\\xfe\\x71\\x30\\x33\\x0a\\xd1\\x73\\xf8\\x71\\x27\\xaa\\xca\\xff\\x43\\xc0\\xbd\\xde\\xa4\\x8b\\x00\\x38\\x97\\x6e\\x66\\x2c\\x04\\xb6\\xb0\\x4a\\xd0\\x3d\\xe1\\x24\\x62\\xc2\\x76\\x5d\\xb5\\x35\\x04\\x95\\x20\\xcc\\x11\\x4a\\xfd\\xb6\\xc9\\x25\\x49\\xb0\\x54\\x6a\\x90\\x27\\xd4\\x49\\x75\\x5b\\xeb\\x8d\\x4c\\x17\\xe6\\xa2\\xa4\\x75\\xf9\\x67\\x6a\\x33\\x7b\\x4e\\x86\\x6d\\x96\\x32\\x5e\\x38\\x9a\\x52\\xc1\\x6c\\x51\\xe1\\x8e\\x0d\\x81\\x03\\x34\\x0c\\x84\\x17\\xb2\\xc5\\x7a\\x55\\xd0\\x42\\xff\\x5e\\x5f\\xc6\\x5d\\xf4\\x23\\xe0\\x09\\x2b\\x0e\\xa8\\x8b\\x96\\xa9\\x07\\xc9\\x51\\x21\\xc5\\x47\\xa6\\x80\\x61\\xf2\\x7b\\xcf\\xb5\\x8c\\xe6\\xc0\\x77\\x28\\xd4\\x84\\x6b\\xdc\\xbf\\x0c\\x62\\x54\\x10\\xed\\xf8\\xde\\xa8\\xcb\\x4c\\x9d\\x0b\\xbe\\xef\\xcd\\xe1\\x92\\x73\\x36\\x5f\\x48\\xd7\\x5a\\xec\\x07\\xd1\\xc2\\x2c\\xcd\\x23\\x06\\x8a\\x97\\xc3\\xfe\\x75\\x2e\\x87\\xa3\\x01\\x18\\xfe\\x2d\\xfd\\x52\\x18\\xb6\\xb1\\x25\\x15\\x4e\\x0e\\xa3\\x86\\xcf\\x23\\x9e\\x31\\x37\\xf8\\xca\\x6d\\x8b\\x74\\x6b\\x6a\\x67\\xd5\\x08\\xcf\\x8c\\x1a\\xb6\\x3e\\x57\\x15\\xe6\\x72\\x1e\\xda\\x5c\\x2b\\xc3\\x93\\xa4\\x93\\xdb\\xd2\\xf9\\xa1\\xfa\\x92\\x6b\\x9a\\x59\\xe4\\x5a\\x18\\x0a\\xee\\xb0\\x25\\x99\\xa8\\xcd\\xd6\\x86\\xf8\\x89\\xb4\\x85\\x27\\x23\\xcb\\x6d\\xbf\\xb5\\x01\\x4c\\xab\\x5f\\x65\\x8a\\x30\\x9a\\x47\\x22\\x39\\x36\\x0e\\xea\\xf6\\x4f\\xc8\\x20\\x3a\\x3c\\x70\\x89\\x70\\xe1\\x5c\\xbc\\xf1\\x36\\x25\\x5d\\x96\\x44\\x6c\\x39\\xa9\\x27\\x03\\x1d\\x26\\x7d\\x69\\xec\\xd5\\x1d\\x7a\\xf6\\xe9\\x1f\\xb4\\xae\\xf9\\xd7\\x8c\\x33\\x35\\xe9\\x07\\x11\\x33\\xcf\\xb8\\xe2\\x12\\x99\\x90\\xc6\\x46\\x37\\xc7\\xad\\xf1\\xda\\xef\\x2d\\xc2\\x6c\\x11\\x63\\x39\\x9f\\x3f\\xe1\\xe7\\x92\\x33\\x80\\x92\\xef\\x6f\\x8d\\xfa\\xf2\\x57\\x30\\xdd\\x2f\\xe8\\xd9\\x78\\xf6\\xf7\\x70\\xf5\\x2b\\x68\\x23\\x81\\x76\\x56\\x4c\\xee\\x5f\\xbb\\x98\\x50\\xb3\\xb3\\xa0\\x4d\\x94\\x84\\x60\\x41\\x78\\x26\\xeb\\x2e\\xb2\\x4f\\xcc\\x5f\\xe3\\x53\\x34\\xbb\\x95\\x21\\xe8\\x7b\\xc4\\xdb\\xde\\x2a\\xc9\\xe1\\xc9\\x89\\x49\\xdc\\x2d\\x29\\xad\\x27\\x9e\\x38\\x84\\xb9\\x05\\x26\\x8e\\xbd\\x08\\x08\\xbf\\x41\\x82\\x57\\xe7\\x5e\\x26\\x2b\\x4d\\x01\\xb0\\x24\\xa6\\xe9\\xaa\\x7b\\xd5\\x01\\xdb\\xa9\\x4f\\xf5\\x06\\x39\\x4b\\x4b\\x0a\\xe6\\x08\\x1e\\xa7\\x30\\x30\\xc4\\x3a\\x6a\\x91\\x76\\x6e\\x80\\xf9\\xf4\\x2c\\x0b\\x68\\xb9\\x84\\x19\\xad\\x4e\\xee\\x4e\\x9a\\x72\\x8a\\xde\\xfb\\xd7\\x9e\\x83\\x1f\\x70\\xf4\\x1e\\x62\\xb4\\x3f\\x0b\\xf4\\x2b\\x3b\\x2c\\xd5\\x3b\\x55\\x89\\x11\\x76\\x64\\xbc\\xeb\\xc4\\x09\\xa7\\x64\\x5b\\x1e\\xed\\xda\\x48\\x2f\\x6b\\x68\\x95\\xa6\\x57\\xba\\x78\\x9b\\x89\\xe5\\x02\\xd6\\x99\\x87\\x51\\xd6\\x30\\x3d\\xed\\x5f\\xa1\\x56\\xee\\x7c\\x7e\\xaf\\xe5\\x46\\x26\\xd1\\x03\\x2c\\x4d\\x7d\\xff\\x97\\x7f\\x1d\\xcc\\x86\\xaf\\x89\\xb1\\xe6\\x46\\xa4\\xaf\\xc2\\x42\\x7e\\xd0\\x2c\\x0a\\xf5\\xd3\\x28\\x90\\xf9\\x5f\\x13\\xf9\\x8c\\x1a\\x5b\\x1d\\x9f\\xbb\\x78\\x1a\\x9a\\x89\\xb2\\xd7\\x90\\xc1\\x46\\x5c\\x2d\\x15\\x20\\x92\\x6f\\xdf\\x28\\xc1\\x7d\\x9b\\xa1\\x58\\x7a\\xd7\\x61\\xf0\\x65\\xd3\\x39\\xbd\\xbe\\x38\\xf4\\x13\\x3f\\x45\\xbb\\x59\\x78\\x74\\x26\\x42\\xf9\\x0c\\x06\\x5e\\xe4\\x89\\x25\\x73\\xf6\\x05\\x9f\\x8b\\x4c\\xe2\\xc1\\x3e\\x73\\xb8\\x91\\xcd\\x05\\xf2\\x37\\x31\\xed\\x9a\\x07\\xe2\\xb8\\xff\\xdc\\x96\\x3b\\x06\\xa5\\x10\\x20\\x9c\\x32\\x99\\x80\\x94\\x9f\\x40\\xd8\\x07\\x3a\\x01\\x3e\\xf8\\x43\\xdf\\xcc\\x4a\\x33\\x94\"},\n{{0x5a,0x84,0xaf,0x28,0xa5,0xdf,0xbb,0x32,0x33,0xa1,0x2f,0x08,0x37,0xf6,0xe8,0x65,0x4e,0x7b,0x0d,0xe1,0x6b,0x02,0xab,0x3c,0xd1,0x78,0x64,0x43,0x1e,0x27,0x46,0x67,},{0x80,0xd4,0xba,0x78,0x9f,0x8a,0x4b,0x20,0x47,0xad,0xaf,0xa5,0xed,0x26,0xcd,0x8c,0x54,0x67,0x33,0x29,0x2e,0x8b,0xf6,0x93,0xcf,0xd1,0x7e,0x28,0x4e,0xfc,0x68,0x71,},{0xa0,0xb8,0x4c,0xa5,0xaf,0x76,0x46,0xe6,0xf6,0x2a,0x69,0x35,0x37,0x94,0x73,0xfa,0x6e,0x4c,0x27,0x69,0x58,0x51,0xfc,0xbd,0xae,0x29,0x17,0xb2,0xdc,0x68,0xd7,0x96,0xe2,0x78,0xd7,0x0c,0xd6,0x7f,0xce,0xdf,0x6c,0xa6,0x29,0xb8,0x81,0xf7,0xc4,0xf2,0xaa,0x25,0x59,0xb2,0x0d,0x67,0x06,0x11,0x76,0x6b,0xd6,0x5a,0xa4,0xfe,0xf2,0x04,},\"\\x8a\\xac\\xd1\\xb8\\xa3\\x9b\\xf0\\x8f\\xd5\\xc9\\x18\\x44\\x6b\\xe5\\x76\\xe6\\xa3\\xf2\\x7f\\x36\\x11\\x16\\x07\\xf2\\x7b\\x56\\xa9\\x12\\x14\\xe7\\x63\\xf9\\xa8\\x7f\\xb1\\xd1\\x84\\x48\\x98\\x96\\x17\\x97\\x64\\x44\\x60\\xbf\\xf5\\x48\\x8c\\x10\\x3a\\xf6\\x05\\xe8\\x74\\x0e\\x46\\x58\\x8f\\xb9\\x3e\\x44\\x3c\\x3b\\xb2\\x3b\\x92\\xc0\\x98\\x70\\xa5\\x57\\x65\\x3a\\x1f\\x22\\xc2\\x18\\xcc\\xbc\\x2f\\x07\\x3a\\x27\\x2d\\x17\\xa8\\x42\\x23\\xef\\x14\\x3f\\x4c\\x7c\\xa2\\x58\\x46\\x0b\\x79\\x81\\x69\\x67\\x3d\\xa1\\x07\\xd7\\x1d\\x53\\x56\\xce\\x9f\\x75\\x59\\xa9\\xb0\\x38\\x39\\x99\\x51\\xf5\\x75\\xc7\\x7e\\x5b\\x9d\\x05\\x29\\x57\\x8e\\xca\\xa2\\xe2\\x08\\x92\\x66\\xfc\\x52\\x6c\\x5d\\x40\\x9f\\xbd\\x46\\xbb\\x86\\x84\\x1c\\xb5\\x54\\xf5\\xbd\\x3c\\x99\\x71\\x3b\\x04\\x3e\\x40\\x46\\x53\\xa7\\xd0\\x13\\x44\\xd4\\xdb\\x83\\x1a\\x21\\x72\\x82\\xc4\\xb3\\x36\\x40\\x56\\x53\\xb8\\x5d\\x27\\xa4\\x6b\\x25\\x9c\\x85\\x5c\\xdd\\x85\\xad\\x6f\\x7a\\xed\\xd8\\x35\\xff\\x55\\x00\\xcc\\x8b\\xaf\\x0f\\xb2\\xf0\\x18\\x09\\x10\\xc6\\x46\\x72\\xb8\\xa8\\xd4\\x9d\\x98\\x4a\\x78\\x29\\x3c\\xf5\\x77\\x9c\\x91\\x0c\\x3a\\xcb\\xbc\\xa4\\x55\\xa8\\x54\\x66\\xe5\\x35\\x04\\x4f\\x34\\x80\\x26\\x2c\\x09\\x0f\\xbf\\x4e\\x0b\\x0d\\xb4\\xd1\\xef\\x87\\x59\\xda\\xaf\\xdd\\x8d\\x05\\x90\\x74\\x82\\x46\\x1f\\xf9\\x10\\xc4\\x37\\x19\\x5d\\x5c\\x7f\\xed\\x9d\\x82\\xcb\\x94\\xe7\\xe4\\xec\\x24\\xda\\x05\\x3e\\x47\\xf6\\x2b\\x48\\x8e\\xb7\\xb2\\x44\\x65\\x5c\\x7d\\xbb\\x20\\xed\\x60\\x7e\\xed\\x45\\x31\\x44\\x9e\\x07\\x80\\xe6\\x1c\\xfd\\x57\\x40\\x86\\xff\\xc5\\xdc\\x52\\x42\\x83\\x77\\x5c\\x44\\xf7\\x54\\x7c\\xda\\xb0\\x4a\\x51\\xee\\xe4\\xe1\\xb7\\xb6\\x5a\\x57\\x57\\x3a\\x92\\x48\\x4a\\x35\\x90\\x0a\\x90\\x9f\\x81\\xe4\\x15\\x02\\x9d\\x22\\xca\\x93\\x7a\\x3a\\xcd\\x9e\\x61\\xf8\\xc0\\xe6\\x86\\xb2\\xd2\\xad\\x03\\x77\\xaf\\x8e\\xe1\\x66\\xe4\\xa2\\x0a\\x82\\xaf\\xf4\\x51\\xe1\\x51\\x10\\x3e\\x0a\\x17\\x67\\xb2\\x71\\xfa\\x9c\\x2b\\x1d\\xd1\\x20\\xf8\\x05\\x85\\x3b\\x3b\\x8a\\x56\\x0f\\xc8\\xb9\\x37\\x62\\x83\\xb5\\x11\\x24\\x32\\x4a\\x28\\x4a\\x0e\\x9a\\xc4\\x9d\\xf6\\x9f\\x52\\x4c\\x8e\\x04\\x2d\\xf8\\x2e\\xfb\\xcd\\x16\\x88\\x1e\\xc1\\x31\\xa1\\x52\\x10\\xdf\\x73\\xde\\x02\\x94\\x34\\x47\\xf2\\x2a\\x2e\\xa1\\xdc\\x8b\\xf9\\x68\\x29\\x8e\\xe9\\x7f\\x3a\\xd5\\x46\\xd7\\x8b\\xc6\\x60\\x89\\x7e\\x08\\xd2\\xa2\\x8b\\x2b\\xa6\\x8b\\x54\\xb9\\x54\\xf1\\x47\\x64\\x51\\xc6\\x92\\x07\\xe5\\xdd\\x24\\x8a\\xe4\\x7e\\xf3\\x56\\x94\\x99\\x0e\\x6f\\x05\\x8b\\xc0\\x01\\x7b\\x74\\x95\\x10\\x5c\\xc8\\x73\\x90\\x66\\xaf\\xb1\\x1e\\x1f\\x26\\x60\\x19\\x42\\x54\\x6a\\xe8\\x49\\xff\\x2f\\x56\\x73\\x0f\\x13\\x26\\xbb\\xee\\xa6\\x40\\xee\\x17\\x8f\\xa2\\x47\\xad\\xff\\xef\\xc0\\x46\\x49\\x4f\\xc7\\xff\\xc0\\x77\\x7d\\x5d\\xbe\\x8a\\x55\\xda\\xee\\x61\\x40\\x6f\\xe3\\xc7\\x08\\x8d\\x43\\xd9\\xe1\\x4d\\xa2\\x1c\\xa5\\x2f\\xd8\\xc1\\x60\\x09\\x1c\\x8f\\x99\\xa6\\x7d\\xad\\x65\\xc6\\x4f\\xea\\x9d\\x18\\xb1\\x53\\x7d\\x06\\x1f\\x5d\\xce\\x87\\x9e\\x0b\\xc4\\x26\\x48\\xd2\\xea\\xa0\\x2d\\x97\\x21\\x85\\x75\\x3c\\xb2\\xf6\\x22\\x5d\\x8d\\x03\\xbb\\x07\\xf9\\x44\\xb1\\x0c\\xf4\\xea\\x22\\x27\\x5c\\x3d\\x70\\x84\\x80\\x20\\xf3\\x0c\\x82\\x3b\\x76\\x14\\x3a\\xcf\\x54\\x59\\x99\\xa2\\xcc\\x4b\\x58\\x98\\xd9\\x4b\\x4a\\x25\\xef\\xbe\\x5a\\x60\\x33\\x1c\\xc0\\x09\\xfe\\xc0\\xa2\\x5b\\xc9\\x89\\x47\\xb1\\xb7\\x13\\x9e\\x22\\xd2\\x32\\x80\\xff\\x88\\x54\\xa1\\xec\\x76\\x22\\x1b\\x1b\\xf3\\xd1\\x08\\x32\\x8c\\x8a\\xc4\\x63\\xc6\\x52\\x63\\xa2\\xd7\\xca\\x74\\x33\\x48\\x29\\x31\\xa1\\xd8\\xfc\\x14\\x4b\\xbe\\x9b\\xef\\x67\\x8c\\x92\\xe1\\xc2\\xd1\\x09\\x21\\xb6\\xad\\x43\\xa7\\x5c\\x53\\xbc\\x07\\x58\\x54\\xed\\x2d\\x99\\xd8\\x25\\xf3\\x0a\\x5e\\x10\\xd5\\x17\\x43\\x8e\\x4d\\x4f\\x71\\x13\\x42\\x9f\\x1e\\xdb\\x38\\x7d\\x6b\\xd7\\xaa\\xd2\\x92\\x74\\xf8\\xd2\\xdc\\x88\\x9b\\x7e\\xfb\\xeb\\x58\\x68\\x6f\\x8d\\x66\\x9c\\xea\\xef\\x92\\xc7\\x5e\\xd5\\x30\\x7f\\x0c\\x03\\xf5\\x90\\x01\\x81\\xce\\x57\\x3c\\x8f\\xa2\\x86\\x75\\x20\\x5f\\xb1\\x05\\x7f\\x62\\x6a\\xa2\\x30\\xd0\\x3e\\x2e\\xaa\\x8c\\xff\\xcd\\xe2\\x00\\x81\\x47\\x5d\\x80\\xb2\\x45\\xa1\\xca\\x60\\x45\\xba\\x20\\x4a\\xb0\\x00\\x69\\x07\\x9c\\x63\\x7f\\xc3\\xfb\\x3e\\x80\\xca\\x04\\x62\\xe7\\xa4\\xcd\\xd9\\x28\\x3f\\xf9\\x00\\x85\\x30\\x36\\x48\\x16\\x79\\x2f\\xdf\\x3b\\x9a\\x4e\\x4d\\xc8\\x37\\x92\\x28\\xed\\xcb\\xb1\\x54\\xbe\\xf3\\x87\\xd3\\x77\\x60\\xd7\\x9a\\xfb\\xb7\\x36\\x26\\x0a\\x1d\\xb1\\x01\\x38\\x36\\x1f\\x24\\xb8\\x26\\xdb\\xcd\\x5f\\x0f\\xc9\\xe7\\x83\\x0d\\x26\\xd8\\x0c\\x52\\xa7\\x92\\x18\\x92\\x76\\xbc\\xe3\\x47\\x60\\xfb\\x77\\xbe\\x13\\x12\\xac\\x8c\\xf9\\x7d\\x92\\xcb\\xf3\\xd0\\x77\\x80\\x28\\xdb\\x5e\\x8e\\xae\\x89\\xe0\\xb9\\xbc\\x87\\x78\\xae\\xb1\\x27\\x8f\\x04\\x71\\xcb\"},\n{{0x79,0x3a,0xc8,0x8d,0x7d,0x3b,0x6f,0xa7,0xf4,0x7d,0xee,0xc3,0x1f,0x68,0xdd,0xcc,0xb7,0x01,0x82,0x0f,0x1b,0x13,0xdd,0xc6,0x52,0xf7,0xc6,0xa8,0x5b,0x60,0x52,0xa5,},{0x91,0xb6,0x22,0x7a,0xcd,0xd1,0x83,0xda,0x62,0xc5,0x19,0x65,0xc6,0x35,0x35,0x8b,0x20,0x4d,0x68,0x3e,0xe0,0x64,0x43,0xcb,0xd4,0x0e,0x71,0xc1,0xf7,0x6a,0xd1,0x02,},{0xa8,0x4f,0x55,0x2b,0xf4,0x43,0x22,0xa6,0xdb,0x24,0x5c,0xa0,0x06,0xd1,0xcf,0x78,0x0c,0x61,0x68,0x0f,0xe7,0x42,0x9a,0x89,0x47,0xc3,0x5f,0x21,0xbc,0x4b,0x44,0x22,0x8b,0xa3,0x0a,0xea,0x0c,0x74,0x4b,0x86,0x64,0x59,0xd3,0xb8,0xac,0xad,0x45,0x3b,0x06,0xac,0xe2,0x47,0xba,0x69,0x52,0x8c,0x6b,0x3b,0xc4,0xb2,0x0e,0x75,0x63,0x0e,},\"\\xec\\x50\\xaf\\xad\\x8a\\xde\\x74\\x05\\xe2\\xc6\\xf5\\xc6\\x24\\x7b\\xbb\\xcc\\xfb\\x2c\\x17\\x16\\x6f\\x78\\x84\\xfe\\xae\\x10\\xd9\\x0f\\x5d\\x83\\xc4\\xb6\\xf0\\xbf\\x76\\xde\\x2f\\x78\\x97\\xba\\x11\\x94\\xd6\\xd3\\x44\\x9d\\xdb\\x80\\xae\\x74\\xeb\\x8e\\xd6\\x8f\\x04\\x9b\\x35\\xc6\\xf2\\x19\\x16\\xdb\\x4d\\xfc\\x27\\x24\\xdc\\x3a\\xf7\\xad\\x8d\\xd5\\xc4\\x4f\\x60\\xd2\\xf4\\x9f\\xad\\xd7\\x00\\x4d\\xa1\\x59\\x30\\x93\\x94\\x2c\\xae\\x52\\x08\\xbf\\x54\\xcf\\x90\\x3b\\xee\\x64\\x69\\x05\\xfc\\xe2\\xeb\\x2e\\x37\\x0d\\x0d\\xca\\x48\\xd8\\x20\\xad\\xea\\xb1\\x6a\\x3b\\x67\\x5e\\x5a\\x4a\\x8e\\x26\\x7e\\x34\\xff\\x96\\xf3\\x12\\x2b\\x18\\xde\\x0c\\xad\\x92\\x92\\xab\\x63\\xd2\\x6e\\x5f\\x31\\x0f\\xa2\\x16\\x8c\\x29\\x66\\xbd\\xb6\\x3b\\x0d\\xe0\\x86\\x26\\x76\\x7b\\x37\\x9d\\xe4\\x63\\x3b\\x9f\\x3e\\xda\\x79\\x17\\x28\\x1d\\xad\\x66\\x1e\\x9f\\x77\\x2b\\x84\\x4a\\x79\\xe8\\x00\\xfd\\x84\\x27\\x02\\x44\\x6e\\x4a\\xa7\\x31\\x75\\x71\\x07\\xf3\\xfd\\x65\\x47\\xbf\\x40\\x75\\x96\\x3d\\x5f\\xd5\\xf5\\x8e\\x80\\x85\\x3f\\xc4\\x27\\x51\\xdc\\xa0\\x78\\xa9\\xfa\\x8d\\x5b\\xb3\\xd9\\xa3\\x4a\\xbc\\xab\\x02\\x93\\xd6\\xce\\xae\\xc4\\x89\\x67\\xa1\\xe6\\x22\\x43\\x98\\xca\\xd0\\xf6\\x05\\xa3\\xbe\\x8e\\x67\\x58\\xea\\x8f\\x29\\x20\\x9d\\x8e\\x4c\\x4c\\xa1\\x89\\x3b\\xaa\\xd9\\x1e\\x37\\x9b\\xa3\\xb1\\x73\\x30\\xc1\\x2a\\x5b\\x6f\\x21\\x9b\\x38\\x4a\\x8a\\xb9\\x78\\xbf\\x1b\\x37\\xc3\\x73\\x1a\\x1b\\x47\\x4b\\x24\\xb5\\xd6\\x7d\\x4c\\xec\\x28\\xaa\\xc6\\x51\\x0b\\x11\\xf2\\xcf\\x21\\xbc\\x16\\x96\\x3d\\x51\\xf5\\x53\\x87\\x27\\x71\\x8f\\xc4\\xe2\\xe5\\x17\\x2e\\x3c\\x0c\\xda\\xbc\\x27\\x7f\\x0d\\x70\\x37\\xc3\\x4c\\xa6\\x8f\\x73\\x28\\x88\\x48\\xb9\\x26\\xbd\\xe0\\xcf\\x47\\xab\\xfa\\x66\\x60\\x09\\x16\\x94\\x6f\\x07\\x65\\x1c\\x28\\x0a\\x20\\x86\\xb1\\x4d\\x52\\x57\\x0c\\xc8\\xa4\\xb7\\x43\\x58\\xb5\\x9c\\x30\\x2b\\x9d\\x00\\xe1\\xb4\\x98\\xf3\\xbc\\x33\\xee\\x4e\\xcf\\x2b\\xce\\x2c\\x65\\xed\\x7e\\x8b\\xa7\\x4d\\x35\\xb7\\x51\\xd3\\xc9\\x9f\\x40\\x86\\x19\\x68\\xc2\\xb7\\xf3\\xa5\\xbe\\x34\\x8c\\x57\\xd9\\x3b\\x40\\xff\\xd0\\x51\\xed\\xd7\\xca\\xca\\x6e\\xe6\\xbc\\xa7\\x21\\xdc\\xba\\x8d\\xb8\\xd0\\x06\\x4f\\x54\\xd3\\x6e\\xc5\\xe8\\xd6\\x2a\\x71\\xfd\\x1c\\x90\\xf1\\x49\\x24\\xf4\\x1c\\x16\\x3f\\x00\\x7a\\xfc\\x6f\\xbb\\xfe\\x86\\x45\\xfa\\x47\\xc3\\xc9\\x80\\x24\\x6d\\x1b\\x92\\x27\\x43\\x85\\x95\\x3c\\x53\\x41\\xcd\\x64\\xc3\\x4a\\xe9\\x71\\x7c\\xc2\\xc3\\x7f\\x58\\x35\\x9c\\x0a\\x99\\x91\\xc2\\x3f\\xe6\\x37\\xde\\x6c\\xdf\\x08\\x62\\xf7\\xd0\\x32\\x9f\\xe7\\x58\\xaa\\x89\\x2a\\xd4\\x58\\x3b\\x9d\\xf2\\xf3\\x33\\x7d\\x5b\\xe5\\x70\\xba\\x65\\x49\\x98\\xed\\x29\\x2f\\x11\\xf0\\x17\\x72\\x38\\x2a\\x04\\x34\\x2f\\xdd\\x99\\xe6\\x9e\\x0d\\x97\\xc4\\x3f\\x10\\xac\\x9b\\x96\\xf1\\x40\\xa6\\xf8\\x3c\\x47\\x29\\xe7\\xa9\\x00\\x47\\x1f\\x2b\\x1d\\xf2\\x40\\x1b\\xc5\\xc6\\x80\\x42\\x2b\\x13\\xb0\\xc8\\x00\\x7d\\x63\\x68\\x1f\\x66\\xa0\\x59\\x5a\\x1c\\x5d\\x3a\\xcd\\xe5\\xb7\\x79\\x42\\x6e\\x73\\x6b\\xc1\\x00\\xc5\\xe6\\xf5\\x26\\x08\\xdc\\x39\\x1e\\x3e\\xf9\\xb1\\xbb\\x6a\\xf1\\x3d\\x24\\x9b\\x7d\\x32\\xce\\x06\\x80\\xc3\\x68\\xf5\\x4d\\x5f\\xe0\\x39\\xcf\\xe1\\x01\\x30\\x25\\x1e\\x4d\\xb1\\x4c\\x79\\xc8\\xd0\\x44\\x06\\x04\\x65\\x82\\x29\\x90\\xd8\\x80\\x93\\xcd\\x73\\x65\\x32\\x85\\x2e\\x44\\x78\\x89\\xdb\\x89\\xcc\\x60\\x05\\x29\\x96\\xa3\\x2a\\x64\\x36\\x5c\\x07\\x26\\x05\\x1c\\x11\\x9e\\xda\\x90\\x1d\\xe5\\x76\\xb3\\x34\\xfc\\x70\\x49\\x48\\x23\\x92\\xe2\\x62\\x0b\\x0a\\x3a\\x13\\xfa\\xb1\\xd3\\x6f\\xc0\\xa5\\xf2\\x3d\\xb1\\x47\\xfd\\x85\\x7b\\x26\\xa6\\x98\\x04\\x8f\\x8b\\x81\\x1e\\x23\\xd7\\x22\\xe2\\xe9\\x02\\x7e\\xd4\\x12\\x4b\\x48\\xdc\\x5e\\x57\\x8a\\x7a\\xeb\\x19\\xa1\\xb4\\xf9\\x48\\xee\\x5b\\x46\\xf6\\x5b\\x97\\x96\\x46\\xe2\\xbe\\x07\\x47\\x14\\x11\\x8b\\xaa\\x4b\\xfc\\x15\\xb0\\x89\\xa0\\xe0\\x66\\x27\\xda\\x46\\xe4\\xbb\\x06\\xaa\\x3c\\x7c\\x5d\\xd6\\x48\\xe0\\x3c\\x9c\\x2d\\xec\\x3f\\xac\\xd9\\x56\\x26\\x56\\x2f\\x30\\x00\\x88\\x32\\x30\\xd2\\xb0\\xa1\\xf8\\xa7\\x47\\x8c\\xb7\\x7f\\x93\\x9a\\x5f\\x18\\x8f\\x45\\x8d\\x10\\x37\\xb9\\x01\\x76\\x66\\x4d\\x86\\xea\\x85\\x0b\\x8a\\xf5\\x08\\x7f\\x86\\x60\\x5a\\x77\\xe0\\x25\\xef\\x6c\\x7e\\x6a\\x2a\\x59\\xf0\\x06\\xcb\\xa1\\x89\\xfa\\xd9\\x33\\xf4\\x2c\\x53\\x27\\x08\\x10\\x9b\\xc1\\xaf\\x81\\x48\\x19\\x59\\x5f\\xfc\\xb9\\x5f\\xbf\\x5b\\x7e\\x93\\xa7\\x11\\x97\\xe4\\x77\\xee\\x7c\\x04\\xb8\\x51\\xc1\\xc3\\x66\\x22\\xcd\\xd8\\xe6\\xc8\\x60\\xd9\\xab\\x2c\\xac\\x56\\xd2\\xdc\\x98\\xfa\\x69\\x12\\x4f\\x2b\\xb2\\xa6\\x47\\x1e\\x1c\\x73\\xb6\\x61\\xf0\\x71\\xf5\\xd8\\x6d\\xe7\\xd1\\xde\\xaf\\xa4\\xed\\xcd\\xc7\\xbf\\x1f\\x70\\x5c\\x56\\x30\\x0a\\xff\\xd0\\x58\\xb9\\x69\\x77\\x91\\x41\\x9e\\x5f\\xb2\\xa5\\xb7\\xf7\\x8c\\xe3\\x40\\x1f\\xf5\\x50\"},\n{{0x89,0xde,0x74,0x42,0xd7,0x4b,0xa9,0x38,0x59,0x69,0xc9,0x65,0x1a,0x88,0xfe,0x28,0xe0,0x40,0xd5,0x93,0x90,0x7d,0xac,0x1a,0x39,0x87,0x41,0x8b,0xdf,0xdb,0xad,0x89,},{0xfd,0x3b,0xa9,0xfa,0xd3,0x20,0xeb,0xa4,0x5d,0x07,0xb8,0x4a,0x49,0x7b,0xe1,0x7d,0x3f,0xc7,0xdd,0x99,0x99,0xc9,0x68,0x88,0x3c,0xd6,0xac,0x13,0xb0,0x66,0x9b,0x17,},{0xba,0xb5,0x72,0x84,0xd2,0x0e,0xe5,0x4c,0xc7,0xf9,0x70,0x8d,0x71,0x77,0x06,0xd8,0xfa,0xf6,0xe4,0x63,0x32,0xb0,0x69,0x1d,0x6f,0x21,0x3a,0x8d,0xb8,0x01,0x15,0x5b,0x4e,0x33,0x8c,0x13,0x61,0xb5,0x92,0xbe,0x75,0x85,0x01,0xb1,0x82,0x17,0x93,0xae,0x52,0x27,0xcc,0x3b,0xa8,0xdf,0x8a,0xdf,0xc6,0xed,0x9a,0xca,0xb5,0x4c,0xc4,0x01,},\"\\x9d\\x52\\x72\\xf0\\xb7\\x84\\x88\\x2b\\x94\\xc7\\x6d\\xfb\\x9d\\x46\\x0c\\xa4\\x95\\x02\\x5e\\x0a\\xec\\x5d\\x52\\xcc\\xff\\xfe\\xce\\x9f\\x81\\x73\\xc1\\x05\\x58\\x26\\x6c\\x49\\x85\\x25\\x89\\x1a\\x97\\xbf\\x38\\x78\\xe3\\x3c\\x3d\\xe2\\xfc\\x2e\\x52\\x55\\x0b\\x43\\x15\\x62\\xcb\\xe4\\xa3\\xd0\\x11\\xec\\xc9\\xe7\\x7e\\xc3\\x6a\\xd3\\x83\\x41\\x35\\x8c\\x88\\x32\\x1c\\x03\\xd0\\x8b\\xb4\\x26\\xa7\\xd5\\x85\\x41\\x71\\xc0\\x27\\xec\\x48\\xd5\\x78\\x19\\xa9\\x1a\\xfd\\x02\\xa6\\x18\\xcc\\xbc\\x25\\xe6\\x8e\\x53\\x09\\xd0\\x47\\xb1\\x56\\xe3\\x57\\x05\\x37\\x3a\\xda\\x2e\\xb8\\x31\\x32\\x1a\\x20\\x3e\\x1b\\xd8\\xf0\\xef\\xec\\xc0\\x96\\x18\\x64\\x7b\\x41\\xdf\\xf2\\x2b\\x39\\xd0\\x22\\x35\\xf8\\x71\\x53\\x2f\\x60\\x85\\xe9\\xcc\\x52\\xec\\x00\\x9b\\x33\\xee\\xbc\\xdc\\x26\\x7d\\x77\\x67\\xc9\\x0c\\x92\\x7e\\x15\\x4f\\x72\\xf3\\xf4\\x8a\\x34\\x95\\x63\\x19\\xb2\\x93\\xc8\\xa8\\xb3\\xe3\\x4e\\xfc\\x5f\\x62\\xf2\\xb4\\xe8\\x01\\x9b\\x50\\xa0\\x8f\\x5c\\xcf\\x95\\xbc\\x83\\x1b\\xaf\\x40\\x81\\x1d\\x87\\xe5\\xed\\xbd\\x2f\\xd5\\x36\\x5b\\x26\\xa4\\x31\\xae\\x95\\x80\\x0f\\xf3\\x81\\xcd\\x62\\xca\\x40\\xe1\\x86\\x6d\\x95\\x0d\\xce\\x14\\xf0\\x30\\x91\\x8a\\xba\\xc6\\x8e\\x79\\x16\\xdd\\xb9\\x5a\\xdc\\x19\\x71\\x28\\x78\\x74\\xd0\\x7e\\xb0\\xed\\xef\\x64\\x29\\x66\\x52\\xc4\\x80\\x44\\xb0\\xc5\\x52\\x1a\\x8d\\x27\\x0d\\x53\\xd7\\x4e\\xc6\\x3b\\x89\\x0f\\x33\\x63\\xf9\\x20\\x7f\\x66\\x52\\xae\\x8e\\x78\\x35\\xc3\\x82\\x0a\\xd6\\xd9\\xe3\\x63\\x3f\\x4b\\xfd\\x53\\x79\\xa4\\x4f\\x29\\xd6\\x5f\\x36\\x09\\xfe\\x35\\x58\\x17\\xdc\\xa5\\x51\\x8d\\xfe\\x3b\\xd7\\x69\\x32\\x0a\\x03\\x19\\x02\\xe9\\xcf\\x66\\x69\\xc2\\x4f\\x88\\xb0\\x1e\\xb3\\x69\\x95\\xbd\\xb8\\xdb\\xed\\x6e\\xe0\\xc9\\xb7\\xf3\\x22\\x95\\xc6\\x1b\\xa8\\x90\\x5e\\x55\\x98\\xf3\\xc9\\xe1\\xc8\\xbf\\x72\\x64\\xf9\\x82\\x93\\xfa\\xea\\x17\\x74\\x7f\\x88\\x44\\x0c\\x31\\x81\\x8c\\x43\\x3e\\xa3\\xd2\\x3c\\x01\\xf4\\xf7\\xe9\\xc3\\xdd\\x3d\\x5f\\x32\\xec\\x9e\\xac\\xd7\\x1a\\x09\\xe3\\xa9\\x97\\x38\\x1f\\x1c\\xbf\\xfd\\xf4\\xb5\\xba\\x49\\x79\\xde\\xb7\\xb0\\x98\\x41\\xaf\\xa3\\xb0\\x3d\\x1c\\x93\\x11\\x09\\x7b\\x86\\x2c\\xae\\x11\\x70\\x7c\\xbd\\x3a\\x4a\\xe6\\xc8\\xa2\\x6a\\x30\\x6a\\x68\\x7c\\x41\\x4a\\x4e\\xa1\\xe8\\x12\\xf1\\x15\\xf6\\x0f\\x70\\xbd\\xa7\\xf8\\xfb\\xe7\\xbc\\x2d\\x50\\xcc\\x55\\x0b\\xba\\x29\\x1d\\x5e\\xc5\\x23\\x22\\x9a\\x08\\xed\\x56\\x8b\\x5c\\xee\\x18\\xfe\\x6f\\x46\\x78\\x2c\\x17\\xcd\\x82\\x88\\x01\\x63\\x92\\x15\\xbc\\x5e\\x9b\\xe4\\x55\\x5c\\x9a\\x18\\x00\\x97\\x67\\xa6\\xc5\\xc7\\x4a\\x82\\x29\\xd2\\xff\\xaa\\x39\\x9d\\x8e\\x64\\x32\\x4e\\x88\\x42\\x23\\xd5\\x07\\x0f\\x73\\x5a\\x75\\xd8\\x5f\\xf6\\xc9\\x4a\\x9f\\xbc\\x2b\\x36\\x51\\x38\\x6d\\xe5\\xa2\\x3c\\xce\\x95\\xc8\\x78\\x81\\xc7\\x93\\x99\\xae\\x71\\xf0\\x90\\x73\\x7e\\x21\\x87\\xfe\\x90\\x4a\\xab\\x1d\\x92\\xd6\\x18\\x67\\x95\\xc9\\xb4\\x6c\\x62\\xa5\\x91\\x4f\\x36\\x30\\xfd\\xcb\\xac\\x3b\\xd4\\xb0\\xda\\x4e\\xc3\\x13\\x6a\\x1f\\xb2\\xba\\x40\\x32\\x2d\\x7c\\xc4\\x08\\x5e\\x16\\x70\\x09\\xcf\\x74\\x50\\xfc\\x6a\\x28\\x6c\\x2f\\x79\\x51\\xd5\\x1a\\xae\\x23\\xb8\\xf3\\x30\\x20\\xef\\xb5\\xe3\\x24\\x5b\\xa6\\xa3\\x54\\x3a\\x2b\\xde\\xc4\\x47\\xd5\\x1a\\xe0\\x0b\\x5e\\x16\\x78\\xb7\\x60\\x93\\xcf\\x21\\x6b\\x95\\x07\\xc9\\x63\\xeb\\xfc\\x02\\x4c\\xcd\\x6e\\xf6\\xc7\\x8c\\x45\\x72\\x27\\x3b\\xea\\xaf\\x55\\x07\\x6d\\xc4\\x4a\\x22\\x4b\\x58\\x61\\x57\\x05\\x79\\x19\\x65\\x30\\x7c\\xef\\xd4\\x86\\x72\\xc0\\x81\\xbc\\xcf\\xbc\\x1d\\x15\\xb0\\x62\\xb3\\x8b\\x4f\\xba\\x9b\\x9b\\xec\\x95\\x6c\\xd1\\x44\\x44\\xee\\x43\\x7e\\x79\\x60\\xcc\\x60\\x1e\\xdd\\xc0\\x2f\\x1a\\x76\\xb6\\x85\\x74\\xd5\\xf8\\x84\\x31\\x50\\xc0\\xb9\\x00\\x99\\x34\\xa2\\xbf\\xaf\\x60\\x57\\x70\\xc1\\x36\\xba\\x29\\xf3\\xdc\\x7e\\x29\\x59\\x7a\\x24\\x80\\xdb\\x23\\xe2\\xb2\\x67\\x7e\\xc6\\xc5\\x1b\\xd3\\x01\\xf2\\xb5\\xa3\\x9d\\xfd\\xa7\\xb4\\x77\\xbe\\xdd\\x1c\\xda\\xed\\x10\\xe2\\x9d\\x29\\x54\\x62\\x9b\\x98\\x76\\xf8\\xee\\x54\\xe4\\x04\\x73\\x69\\xd5\\x34\\xca\\xb5\\x4a\\xea\\x44\\x1d\\xc9\\x47\\xeb\\x3f\\x59\\x38\\x2b\\x21\\x83\\x60\\x57\\x2f\\x26\\x59\\x58\\x31\\x53\\xc0\\xe2\\xb9\\x12\\xcf\\x30\\xc8\\x15\\xb2\\x6f\\x05\\x85\\x3d\\xd3\\x05\\x51\\xee\\xcf\\x64\\xb8\\x58\\xa4\\x41\\xbb\\x8c\\x6d\\xb8\\xa9\\xfd\\xe7\\x7a\\x32\\xa7\\xb4\\x6a\\xf6\\x6f\\x8c\\xb9\\xf3\\x5e\\xe0\\xfa\\xfb\\x0b\\xd4\\x2d\\x9e\\x65\\xb2\\xa9\\x05\\x82\\x41\\xa3\\x1b\\x8c\\xa1\\x11\\x54\\x34\\x23\\x76\\x70\\xaa\\xb4\\xef\\xf3\\x60\\x10\\xed\\x03\\x71\\xf4\\x65\\x95\\xda\\x1b\\xdd\\x57\\x9b\\xbb\\x67\\xaa\\xdb\\x68\\xe7\\x7a\\xd3\\xa3\\x8c\\x8f\\x26\\xd2\\xaf\\x5a\\x71\\x03\\xba\\x5f\\x22\\xb4\\x2c\\xc1\\x2a\\x8c\\x3c\\xe5\\xc9\\x21\\xc9\\x1c\\xfc\\x0e\\x63\\xdf\\x90\\x27\\xd2\\x62\\x29\\xb1\\x04\\x7c\\xbc\\x18\\xf6\\xb0\"},\n{{0x26,0x22,0xbd,0x9b,0xbe,0xf7,0xff,0x4a,0x87,0x62,0x9e,0xa0,0x15,0x3d,0xc4,0xd6,0x08,0xc3,0x1f,0xa5,0x84,0x79,0x88,0xff,0x50,0x0d,0x88,0x06,0x81,0xf1,0x13,0x72,},{0x19,0x97,0x58,0xa9,0xc3,0xd0,0xee,0x3e,0xeb,0xcb,0xbd,0xa3,0xe1,0xef,0x54,0x55,0xff,0x46,0xd7,0x36,0xbb,0x4e,0xf0,0xc0,0x6a,0x73,0x9f,0x9a,0xc5,0x84,0x83,0x95,},{0x43,0x78,0x96,0x6b,0x78,0x31,0xde,0xf4,0xae,0xcb,0x49,0x89,0xbc,0xaf,0x9c,0xae,0x99,0x46,0x1c,0xb9,0xb5,0x9d,0x19,0x51,0x8c,0xc1,0xec,0x7b,0x83,0x51,0xbc,0xd1,0xf7,0x23,0xaa,0xc5,0xf0,0x61,0xb3,0x83,0x63,0x57,0x4f,0xf9,0x6b,0xa1,0x0e,0x19,0x6b,0x1b,0x05,0x31,0xe1,0x18,0x30,0x36,0xa4,0x25,0xe6,0x9c,0x45,0x98,0x04,0x0c,},\"\\x89\\x1e\\x82\\x12\\x25\\x47\\xd6\\x1e\\x83\\xb0\\xab\\xaf\\x27\\xc7\\x30\\x3f\\x05\\x22\\xa2\\xec\\x4a\\xf4\\x4e\\xf0\\xac\\x19\\x6a\\x99\\x78\\xb1\\xc6\\x23\\xef\\x1f\\xa7\\x2b\\xaf\\x70\\x91\\x0a\\x5c\\x51\\xc4\\xf7\\x8e\\x0f\\xe9\\xfe\\x37\\xe2\\x43\\x9c\\x47\\x95\\x91\\x6c\\xfa\\x22\\xab\\x47\\x1a\\x25\\x57\\xcc\\x7b\\xa6\\xb6\\x69\\x56\\x06\\x3d\\xde\\xb3\\x9c\\x50\\xf1\\x4f\\x06\\x34\\x8f\\xa6\\x6b\\x60\\x64\\xdc\\xff\\xca\\x50\\x43\\x96\\x7f\\x05\\x25\\x4d\\x57\\x7a\\xbf\\x22\\xae\\x8c\\x90\\x00\\x0c\\xe2\\xe6\\xa1\\xa8\\xb2\\xe3\\xa6\\xb3\\xab\\xc5\\x63\\xeb\\xff\\xb2\\x04\\x45\\xf0\\x91\\x1c\\xc4\\x2a\\x98\\x7f\\x84\\x56\\xef\\xba\\x41\\x30\\xe6\\x8f\\x01\\xfc\\xdf\\x7b\\xf7\\x71\\xfc\\x1d\\x35\\x37\\x1a\\x0d\\x75\\xdd\\x5f\\x90\\x00\\x2c\\x90\\xb6\\xcb\\xad\\xe4\\x0d\\x5b\\x23\\xfd\\xb4\\x9a\\xba\\xcb\\x72\\x19\\xae\\x27\\x56\\x1a\\xa2\\xa8\\x79\\xda\\x88\\xdf\\x34\\xa8\\xc5\\x81\\xf0\\xc6\\x71\\x98\\xff\\xc6\\x08\\xfe\\x91\\x95\\xb5\\x55\\x5c\\x8a\\xe9\\x34\\xc8\\x30\\xaa\\xe2\\x88\\x5b\\xea\\x87\\x48\\x74\\x48\\xe1\\x1b\\x4f\\x2f\\x17\\x2e\\x4d\\x5c\\xfe\\x4f\\xd1\\x13\\xf9\\xd2\\x01\\x6c\\x24\\xa7\\x34\\x51\\x2b\\xb9\\x18\\xf5\\x75\\xe7\\x54\\x13\\x97\\x18\\xe3\\xd2\\x0e\\x79\\x0a\\xbb\\x94\\x2c\\xba\\x3e\\xc8\\xb2\\xdb\\x59\\x07\\x96\\xdc\\x43\\x5f\\x13\\x9f\\xc6\\x4d\\xdc\\x85\\xa2\\x24\\x94\\xef\\x2b\\xfa\\x1f\\x5c\\x0f\\x18\\x75\\xea\\x58\\xe8\\x4e\\xb3\\x74\\xec\\xf8\\xce\\xc6\\x46\\x8b\\x6b\\x09\\xd1\\xe7\\x4f\\x15\\x41\\xed\\x45\\x4a\\x28\\x07\\xd3\\xf4\\x05\\x35\\x66\\xb0\\xe4\\xe2\\xc6\\xae\\xce\\xd1\\x0d\\xc0\\x07\\xe9\\xdf\\x41\\x6f\\x26\\x7f\\xcb\\x3f\\xe1\\x7b\\x8b\\xac\\xe0\\x3f\\x07\\x43\\xe0\\xe6\\xd4\\xa4\\x8c\\xe7\\x6e\\xdf\\xf6\\x0c\\x0e\\x3a\\x30\\x84\\x56\\x99\\x54\\x13\\xc1\\x07\\x6f\\xf3\\x7e\\xcf\\x23\\x81\\xa0\\xd4\\xe9\\xe4\\xa9\\x13\\xa2\\x58\\xd9\\x83\\xb9\\x69\\x6b\\x5c\\x45\\xaf\\x37\\xc8\\x68\\x40\\x70\\xe4\\x00\\xb8\\xf8\\x65\\xa5\\x04\\x04\\x3f\\x45\\xd7\\x8b\\x97\\x13\\xf3\\x35\\xaa\\x41\\x6a\\x46\\x16\\x64\\x10\\x73\\x5f\\xb5\\xd8\\x22\\x10\\x45\\x8d\\x5a\\x08\\xa1\\x04\\xd4\\x00\\x2a\\xb6\\x11\\x88\\xf9\\xdf\\x45\\x7d\\xd7\\xed\\x59\\x37\\xca\\x50\\x77\\x60\\x6b\\x41\\x8b\\xbc\\x86\\x84\\xa1\\xd5\\x25\\xbf\\xa5\\x51\\x08\\x76\\x40\\xb1\\xd1\\x77\\xca\\x6d\\x4f\\x64\\x71\\xb3\\x9b\\x2c\\xe4\\x3a\\xfb\\xf8\\x28\\x5e\\xcd\\x68\\x7e\\x43\\x8f\\x44\\x25\\xdf\\x56\\x8a\\xb8\\x6f\\xa2\\x31\\x63\\x49\\xa1\\x10\\x2b\\x41\\x43\\xd7\\x1e\\xf4\\xe2\\x4f\\x5c\\x53\\x0c\\x77\\xaf\\xb0\\x10\\x07\\x88\\x63\\x64\\x40\\xe7\\x40\\x67\\x5a\\x61\\x74\\xc5\\xf0\\x57\\x10\\xb2\\x53\\xa4\\x11\\x17\\x3f\\x9e\\x82\\xce\\x6e\\x22\\xf4\\x09\\x5e\\x77\\x14\\xb8\\x73\\x7e\\x14\\x7a\\xa0\\xf2\\x31\\x91\\x57\\x8f\\xfd\\x93\\x82\\x3c\\xe4\\xbf\\x91\\xc1\\xd1\\x10\\x98\\x2a\\x5d\\xa0\\xe4\\xb8\\x1b\\xd2\\x5b\\x9b\\x9c\\x21\\x42\\xa7\\x67\\x1e\\xe9\\x37\\xc9\\x0f\\xd0\\x71\\x5e\\xc9\\xaf\\xa4\\x4d\\x86\\x04\\x68\\x98\\xb4\\x2f\\x75\\x35\\x89\\xd2\\x26\\x8d\\x2a\\xaa\\xa9\\x85\\xcc\\x90\\xe0\\xf9\\xe8\\x27\\xa3\\x92\\x3e\\x77\\x16\\x34\\x6f\\x4f\\x89\\x31\\xc7\\x28\\x21\\xb3\\xeb\\x64\\x5d\\xaa\\x74\\x52\\xc8\\xaf\\xc8\\x98\\xd7\\x97\\x55\\x45\\xc1\\x2d\\xa1\\xbd\\xb2\\x09\\x04\\x5c\\xb0\\x0f\\x4b\\xfd\\x53\\x83\\xdf\\x01\\xf0\\x03\\x68\\x0b\\x97\\x34\\x40\\xf1\\xa3\\x9c\\x9d\\x82\\x09\\x59\\xef\\x6f\\x85\\xbd\\x33\\x63\\x90\\x65\\xae\\xfd\\xc8\\xbc\\xfe\\xcb\\xd9\\xb9\\x55\\x40\\x49\\x73\\x8a\\xf2\\x9f\\x12\\x94\\x63\\x9d\\x39\\x15\\xd6\\x32\\x99\\x5e\\x8f\\xaf\\x71\\x3e\\xf2\\xee\\x3c\\x29\\x8b\\x55\\x96\\xfa\\x10\\xc9\\x9f\\x94\\x6d\\xdb\\x32\\x34\\x06\\x95\\xdf\\x1c\\x19\\x45\\x94\\xea\\xf3\\x77\\x8d\\x73\\xc8\\xba\\x60\\x40\\xc0\\x4e\\xb3\\xa4\\xff\\x86\\x77\\x93\\x6b\\x88\\xe0\\xc5\\xf0\\x44\\x14\\x80\\xd1\\x07\\xd7\\xac\\x22\\x02\\xb3\\xb6\\x94\\xe5\\x7c\\xcc\\xa6\\xd8\\x25\\xe2\\xa0\\x7e\\x81\\x2e\\xd2\\x9b\\x2c\\x20\\xd5\\xc6\\x05\\x47\\x15\\x79\\xe3\\xed\\xff\\xc2\\x23\\xf2\\x42\\xc5\\x93\\x91\\xdb\\x41\\xe9\\x8d\\x5f\\x3d\\x6c\\x5b\\x1e\\x32\\xac\\x82\\x37\\xfc\\xfd\\x10\\x20\\x54\\x3a\\x40\\x41\\xe0\\x3d\\x92\\xad\\x3e\\x2e\\xc5\\x52\\x91\\x47\\x07\\xc7\\x7c\\xd0\\x1f\\x3e\\x48\\x01\\x14\\x44\\x28\\x3f\\x09\\x68\\xfa\\x4d\\xee\\xee\\x55\\xc4\\x56\\xed\\x1f\\x87\\x7a\\xde\\x04\\xac\\x8e\\x8d\\x2c\\xb6\\xc8\\x58\\x20\\xb4\\x92\\x9b\\x25\\xbf\\x31\\xe9\\x25\\x43\\x5d\\x6b\\xcc\\x50\\xd3\\xe2\\xe9\\xb8\\x51\\x02\\xe9\\x70\\xd7\\x89\\x5c\\x25\\xad\\xe5\\x21\\x61\\xa3\\xb6\\xbf\\x50\\x1a\\xb0\\x19\\x61\\xcb\\x63\\xed\\x99\\x0a\\xeb\\x93\\xed\\xa3\\x82\\x8b\\xf0\\x4c\\xa5\\x28\\x53\\xc7\\xb6\\xb8\\xe9\\xe4\\x9e\\x34\\x9d\\x69\\xb5\\x3b\\xe0\\x74\\x85\\xf5\\x42\\xb7\\xcd\\xd0\\x6b\\x52\\x7d\\x41\\xdd\\x11\\x9c\\x70\\xb5\\x64\\xf1\\xa9\\x3a\\xec\\x62\\xae\\x74\\xe6\\xe8\\xf8\\x55\"},\n{{0xae,0xb1,0x3c,0xcb,0x90,0xc8,0xcb,0xef,0x90,0xd5,0x53,0xda,0x3f,0x69,0x01,0xb3,0xd7,0x5c,0x13,0x01,0x1f,0x02,0x49,0x74,0xda,0xf7,0x9a,0x17,0x89,0xc8,0xc6,0x32,},{0x5f,0xaa,0xfe,0xb5,0x95,0xf1,0x6d,0x33,0x8f,0x1c,0x72,0xa9,0xf3,0xe4,0x98,0xf3,0x8b,0xab,0x69,0xa8,0x1b,0x37,0xd2,0xd0,0x92,0xb7,0xbf,0x7e,0x50,0x5d,0x82,0x0d,},{0x06,0x11,0xb1,0x9a,0x74,0x72,0xa4,0x43,0xe8,0x7e,0x54,0xd7,0xc6,0x64,0x7f,0xaa,0xb1,0xb7,0x9a,0x83,0xfd,0x43,0x71,0xc9,0x2b,0x97,0x54,0x00,0xfd,0x62,0x8a,0xcf,0xc3,0x25,0x77,0xcc,0xbb,0xaf,0x03,0xd8,0x8f,0x89,0x3c,0x88,0xf2,0xca,0xc7,0x84,0xc7,0x22,0xa0,0x8f,0x38,0x7a,0xbc,0x31,0x9a,0x70,0x2c,0x86,0x84,0x79,0x65,0x0b,},\"\\x86\\x1a\\x10\\x18\\xd6\\xbd\\xc4\\x80\\x5a\\x5c\\x4d\\xf8\\x7e\\xfa\\xa4\\x62\\xc6\\x8b\\x4b\\xf4\\x06\\x5c\\x68\\x4c\\x2a\\xf1\\x31\\xc6\\x37\\x73\\x88\\xba\\xee\\x58\\xc6\\xc8\\xf8\\x84\\x23\\x62\\xec\\x6e\\x3b\\xce\\x07\\xc8\\xaf\\x55\\x88\\x5e\\x82\\xdb\\x87\\xa1\\x52\\x27\\x80\\x0d\\xd3\\x3a\\xfc\\x5e\\x5f\\xd1\\x57\\x01\\xe9\\x5f\\x53\\x50\\x1b\\x1a\\x6f\\xf8\\x3c\\x64\\xe8\\x51\\x71\\x49\\xbf\\x3f\\xf0\\x11\\xb0\\x94\\xa0\\x9c\\x67\\x3d\\x0f\\xc4\\xa3\\x9e\\xe5\\x5e\\x69\\xf0\\x71\\x17\\x7b\\x8a\\xa3\\x64\\xe1\\xe2\\x56\\x06\\x4c\\xf7\\x02\\x79\\xcc\\x76\\x69\\x5a\\xe4\\x9d\\xaf\\xcd\\x80\\xca\\x0a\\x14\\xe1\\x69\\x1d\\xb9\\x46\\x42\\x2e\\xc7\\x5a\\xb4\\xf7\\x86\\x59\\x15\\xa6\\x9b\\xd4\\x8d\\x89\\xb1\\x2a\\xdf\\x48\\x7d\\x4d\\xb9\\xbe\\x87\\xcd\\xdc\\xa2\\x11\\xaa\\x88\\xe9\\xbb\\xe8\\x49\\xda\\x21\\x39\\x89\\xeb\\x08\\x44\\x59\\x2a\\xd6\\x3e\\x28\\x1b\\x2e\\x4a\\xfe\\x6a\\x88\\x36\\x00\\x66\\x09\\x92\\x6c\\x0f\\x78\\x7e\\x84\\xf2\\xa9\\x5b\\x46\\xb6\\x6f\\x0e\\x45\\x55\\xc9\\x48\\x3c\\xe2\\x17\\x6f\\xc6\\x3f\\x7c\\xc9\\xf4\\xf2\\xa2\\x2d\\xb0\\x55\\xaa\\xe2\\xe6\\x8b\\x30\\xa0\\xda\\x5f\\xeb\\x80\\xc2\\xa6\\x0e\\xa1\\x0d\\xbf\\x67\\xfb\\xbc\\xdb\\xe0\\xbe\\x33\\xf2\\xe9\\xc1\\x3c\\x46\\x9e\\x77\\x68\\xf2\\xff\\x59\\x60\\xa5\\x5e\\xb4\\x82\\xec\\x11\\xd4\\x7e\\x15\\x4b\\x7c\\x42\\xa5\\xfb\\x75\\x6c\\x8a\\xd5\\x39\\xb3\\x3d\\x12\\x5a\\x4a\\x65\\x19\\x2c\\x6c\\x9b\\xd5\\x76\\x23\\x8c\\xa7\\x2a\\x73\\xcd\\x17\\x9e\\x8c\\xf5\\xcd\\x04\\x8e\\xd3\\x30\\x21\\x38\\x23\\xab\\xba\\xfc\\x36\\x82\\xb2\\xb7\\xf6\\x8c\\x5b\\xc4\\x6f\\xd0\\x9a\\x8c\\xb2\\xa3\\xfd\\x09\\x95\\x73\\xee\\x2e\\x6f\\x28\\xc8\\x2e\\x27\\x1b\\xb5\\xef\\x93\\x4b\\x0b\\x0c\\x38\\x1c\\xfa\\xae\\xc6\\x66\\xd7\\x17\\x10\\x6a\\x87\\x4a\\xf3\\x0a\\xa7\\x41\\x25\\xea\\xe9\\xac\\xc2\\xf1\\xf2\\x41\\x18\\xcb\\x4e\\x68\\x3a\\x73\\x1e\\x37\\xe5\\xe4\\x64\\xa1\\xea\\x3d\\x2a\\x53\\xcc\\x0d\\xca\\xd4\\xc1\\x7c\\xea\\x9a\\x43\\xe2\\x36\\x5f\\x3a\\xe3\\xdd\\x89\\xeb\\x39\\x97\\x74\\x20\\x04\\x55\\x50\\x74\\x5f\\xc2\\x67\\xfc\\x7d\\xcc\\x56\\x02\\xe9\\x14\\x97\\x2a\\x4d\\xa6\\xeb\\xeb\\x68\\x7f\\x68\\xa0\\xcd\\x7d\\x8b\\x4f\\xdd\\x73\\x72\\x21\\x06\\xa8\\xe4\\x36\\xb9\\x3e\\x5b\\x58\\xf5\\x98\\x2a\\xce\\xcd\\xec\\xfd\\xb3\\x82\\xfe\\x98\\x53\\x82\\x61\\x42\\x6b\\xa6\\x40\\x52\\x55\\x76\\x43\\xce\\x9f\\xec\\x71\\xea\\x43\\xcf\\x5b\\x6c\\xba\\xde\\xb4\\x95\\x31\\x93\\xff\\x3e\\xd1\\xa1\\xf9\\x22\\xa9\\xaf\\x2e\\xc6\\xf3\\x38\\xe7\\xfb\\x0a\\xff\\xe3\\xd1\\x3c\\x33\\xe3\\x95\\x87\\x3e\\x4a\\x7a\\x7f\\xb0\\x44\\x98\\x1e\\x05\\xa6\\x71\\x97\\xb9\\x96\\xb1\\x99\\xb4\\x30\\x11\\x11\\x93\\x63\\xe5\\x61\\xd5\\xb8\\xa5\\x17\\x84\\xfd\\xff\\x58\\xab\\x80\\xed\\x4c\\x49\\xe9\\x3f\\x0c\\xf4\\x19\\x24\\xf9\\x83\\x5e\\xfb\\x09\\xf6\\x44\\x63\\xb6\\x55\\x17\\xb6\\x7b\\x15\\xdc\\x3f\\x28\\xad\\x9a\\x9b\\x2d\\x29\\x46\\x8d\\xe2\\xc6\\x3e\\x62\\x00\\x4b\\x6a\\x3f\\xd0\\xc5\\xc2\\xe2\\xaa\\xa6\\xcf\\xa1\\x5e\\x4f\\xaa\\xfa\\x1e\\x2c\\x71\\x3e\\x98\\xd3\\xfd\\x25\\xca\\xb9\\xe5\\x17\\x03\\x59\\xc8\\x36\\x51\\x52\\xb4\\x74\\x27\\x6e\\xd0\\x03\\x7c\\xdf\\x77\\x18\\x28\\xe2\\xfb\\x7c\\xce\\xc4\\x89\\x5f\\x21\\xad\\xcc\\x5b\\x68\\x87\\xc8\\x6e\\x51\\xad\\x05\\xf2\\x55\\xf6\\xe9\\xda\\xd2\\xc4\\x1f\\x56\\xb9\\x8b\\x7b\\xbb\\xf9\\xfc\\xb6\\xba\\x8c\\xad\\xfd\\x38\\xad\\x8c\\x62\\xf9\\x2d\\xd8\\x77\\x40\\xfa\\x1e\\x1b\\xd1\\x70\\xc0\\x0b\\x20\\x49\\xc5\\x13\\x0f\\xe7\\x33\\xf1\\x6b\\x1f\\x2c\\x7f\\x00\\xb2\\xef\\x97\\xb3\\xa9\\x54\\x58\\xc5\\x3f\\x19\\x9d\\x46\\x53\\x36\\xd5\\xff\\x59\\x77\\x80\\x6e\\x1a\\xfd\\xe3\\xea\\xa2\\x46\\xd8\\x5c\\xab\\xf7\\xe1\\x23\\x48\\x1e\\x23\\x92\\x99\\x76\\xed\\x19\\xc4\\x0e\\x29\\xff\\x33\\xd8\\x0e\\x7d\\xea\\xb1\\x92\\x71\\xde\\xcd\\x5e\\xe0\\x61\\x72\\xb0\\xb0\\xa1\\x39\\xbd\\x62\\xa2\\xe7\\xc8\\x3a\\x8a\\x65\\x60\\x1d\\x0a\\x05\\xd6\\x1a\\xf9\\xc6\\x03\\x2d\\xf5\\x80\\x01\\xd4\\x73\\xe2\\x0d\\xd6\\xc6\\xaf\\xd7\\x8d\\xdb\\xd7\\xcd\\x17\\x8e\\x9c\\x27\\x1e\\x05\\x72\\xf8\\x59\\x82\\x82\\x3c\\xe6\\xc4\\x02\\x93\\x0c\\xf8\\x0f\\x5e\\x0c\\x7c\\xda\\x85\\x12\\x2a\\x76\\xd1\\xce\\x02\\x1b\\x1e\\x3d\\xe2\\x55\\x6d\\x1b\\x45\\xac\\x7b\\x01\\xb5\\x9c\\xad\\xa2\\x52\\x91\\xd6\\x38\\xa5\\x2a\\x5e\\x7d\\xbc\\xdd\\xf9\\x6b\\xb1\\x77\\x4a\\xb0\\xb0\\x77\\xe4\\xb3\\xda\\x5a\\x95\\x8f\\xe1\\x1d\\xee\\x4a\\x02\\xe6\\x9b\\x91\\x8d\\xdb\\xfa\\x1c\\x5b\\x3b\\x7d\\xca\\x9f\\x87\\x84\\xbb\\x6b\\x0b\\x9d\\x5a\\x7f\\xee\\x74\\xbb\\x03\\x74\\x7f\\x61\\xc2\\xb2\\xf1\\xb4\\x92\\x45\\x2d\\x3b\\x56\\x0b\\x48\\xd3\\x9d\\x87\\x21\\xe9\\x83\\x75\\x25\\x56\\xd4\\x4d\\xa6\\xb0\\x28\\xd9\\xae\\xf8\\xbf\\xf9\\xaa\\x37\\x9c\\x8e\\x2b\\x0a\\x63\\x6d\\x74\\x88\\x60\\xab\\xd8\\xe6\\x4f\\xc8\\xe9\\x65\\x20\\xa3\\x4a\\x27\\xf7\\x67\\xaa\\x97\\xa8\\xf7\\x7b\\x60\\x95\\x21\\x8e\\xad\"},\n{{0x73,0x87,0x2b,0x14,0x76,0x2f,0x68,0xda,0xe4,0xfc,0x10,0xdf,0xd6,0xf4,0x2d,0x3f,0x96,0x22,0xbf,0x2a,0xfe,0x6b,0x34,0xa9,0x56,0x49,0xaa,0x38,0x74,0x24,0xee,0x6c,},{0xdf,0xab,0x2c,0xe1,0xab,0x99,0x81,0xaa,0x7c,0xbf,0x32,0x07,0x35,0x00,0x07,0xfa,0x6c,0xe6,0xca,0x60,0xa2,0xed,0x7b,0x59,0x0f,0x3c,0x2f,0x62,0x92,0x2d,0x8f,0x61,},{0x85,0x25,0xc3,0x46,0xca,0x3a,0x6a,0x6c,0x5f,0x65,0xc4,0x17,0x78,0x59,0x93,0x77,0x65,0x98,0x70,0xcb,0x6d,0xf9,0xa4,0xa0,0xe5,0x5b,0x40,0xc3,0x5b,0xeb,0xa5,0x5c,0x8e,0x00,0x9e,0x56,0x00,0xb6,0x44,0x7d,0xc7,0x40,0x2b,0xa2,0x77,0x49,0x29,0x7e,0x8f,0x95,0x28,0x69,0x18,0x56,0xf7,0x2d,0x2a,0xd7,0x61,0xed,0x1b,0xc1,0x53,0x09,},\"\\x43\\x3d\\x71\\x78\\x1c\\xea\\xb2\\xb4\\x7d\\x82\\x6e\\x67\\xd3\\x9f\\x9b\\x80\\xd2\\xff\\xd7\\x25\\xf8\\xc5\\xae\\xb4\\x0c\\xbe\\x4f\\x9b\\x5f\\x48\\xef\\x93\\x52\\x1c\\xce\\xc6\\x04\\x36\\x0b\\x96\\x47\\x32\\x31\\x90\\xbf\\xef\\x75\\xac\\x93\\x15\\x62\\xd2\\x7f\\x4a\\x4e\\x31\\xf4\\x6e\\x57\\xbc\\x99\\xfa\\x51\\x58\\xc8\\x2e\\x12\\xb7\\x37\\xe4\\x5c\\x5d\\xe9\\xf7\\xdd\\x7c\\x86\\x22\\xd4\\xa7\\xea\\xad\\xf7\\x20\\x2f\\xb4\\x9d\\x81\\x9c\\x9a\\xd2\\x4f\\x88\\x07\\x31\\x3c\\x5f\\x37\\xdc\\x20\\x45\\x3b\\xdf\\x05\\xc9\\xbf\\x1a\\x3c\\x21\\x17\\xc9\\x3e\\x7f\\x3c\\xc8\\xa2\\x54\\x20\\x98\\xe8\\xfc\\x1c\\x64\\x2f\\xa4\\x7b\\x05\\x54\\x36\\x57\\xb8\\x5f\\x48\\x0b\\xc8\\x6e\\xc4\\x28\\x00\\xbb\\x14\\x22\\x35\\x9c\\x7c\\x3e\\x8f\\xf4\\xbe\\x59\\x8b\\xd5\\x4f\\x1d\\xc5\\x86\\xac\\xae\\x45\\xa4\\x74\\x06\\x22\\xb9\\x62\\x74\\x2b\\xc8\\x6e\\x17\\xcf\\xa6\\x3e\\x77\\x53\\x54\\xe7\\x70\\x7e\\x50\\x79\\x58\\x9e\\x8d\\x10\\x8b\\x1f\\x11\\xda\\xce\\x05\\x75\\xcb\\x9a\\x6d\\x26\\xb5\\x9f\\xce\\x98\\x14\\x65\\xd9\\xbc\\x34\\x4e\\xa6\\x94\\x5a\\x95\\xb8\\x62\\x79\\x63\\x84\\xfa\\x81\\x70\\x56\\x08\\x57\\x45\\x7b\\xef\\xf9\\x5a\\x9b\\x5a\\xc3\\xd6\\xad\\x28\\x2d\\x44\\x92\\x9a\\x30\\x30\\x26\\xb4\\xbb\\xed\\xd6\\x0e\\x2e\\xf0\\x55\\xa3\\x1f\\x52\\xd7\\xce\\x8d\\xf2\\xca\\x5d\\x18\\x51\\xc5\\xb1\\x67\\xdb\\x08\\x09\\x25\\x9b\\xb8\\x12\\x56\\x90\\x74\\x10\\x5c\\x73\\x4c\\x85\\xd6\\x23\\x12\\x73\\x75\\x5f\\x3a\\x8b\\x56\\xdc\\x50\\x8d\\xb5\\xc2\\x3d\\xac\\xb7\\xa0\\x61\\x67\\xbd\\xa5\\x1b\\xc0\\x13\\x50\\xf0\\x16\\xcd\\x41\\xb2\\x1e\\x8c\\xc5\\xbc\\x93\\x34\\x3a\\x9b\\xb6\\xea\\x47\\x38\\xc5\\xc8\\x4b\\x78\\xfa\\x96\\x3c\\x41\\x0e\\x43\\x3d\\xc5\\x98\\x19\\x6c\\x22\\xe5\\xb7\\x91\\xe1\\x2a\\x4b\\x34\\x3f\\x7c\\xd4\\x7b\\xbb\\x0e\\xb0\\x78\\x2b\\xdb\\x1a\\x4e\\x46\\x68\\x46\\xa0\\x30\\x52\\x8e\\xeb\\x89\\x05\\x6f\\x73\\x25\\x71\\x93\\xad\\xaa\\xbc\\x1b\\x22\\x98\\x62\\x03\\x48\\x78\\xc3\\x25\\x8a\\x53\\x25\\x48\\x76\\x2e\\x29\\xec\\xc0\\x01\\xab\\xd9\\x89\\x64\\x9d\\xa5\\xe1\\x44\\xcf\\x35\\xd4\\x86\\x99\\xf2\\x3b\\xc4\\x6c\\x5b\\x34\\xe0\\x4a\\x53\\xe7\\x27\\x24\\xb2\\xb0\\xb8\\x78\\x98\\x25\\x75\\xd6\\x88\\xe2\\x3c\\xbe\\x3a\\x34\\x06\\x7f\\x49\\x71\\xe5\\x55\\x97\\x2e\\xc2\\x90\\x8a\\xe5\\xf0\\x3e\\x88\\x31\\xec\\x67\\x75\\x5b\\xe9\\x56\\x87\\xce\\x63\\x72\\x93\\x9e\\x1e\\x2f\\xb6\\x95\\x1e\\xc9\\xec\\xf4\\xbf\\x7d\\x15\\x35\\x43\\x1e\\x25\\x9f\\x29\\xad\\x43\\x12\\x22\\xb5\\x4b\\x65\\xaa\\x7d\\x07\\xcf\\xb5\\xdf\\x16\\x2a\\x87\\xc4\\xd0\\x34\\x81\\xeb\\x44\\x1f\\x22\\x1d\\x7f\\x58\\x62\\x7a\\x14\\x16\\x4e\\x7f\\x4c\\x2e\\x3a\\x1d\\x50\\x7e\\x89\\x9d\\x53\\x58\\xe0\\x08\\x29\\xb0\\x8c\\xf3\\xae\\xcb\\x8a\\x75\\xb2\\xa3\\x1c\\x31\\x85\\xa5\\x80\\xe1\\x2b\\x13\\xf0\\x64\\x28\\x69\\xff\\xfb\\x05\\x67\\x23\\xe9\\x61\\xaa\\xf6\\xfe\\xfe\\x67\\xb4\\xa7\\xc4\\xc9\\x3d\\xb3\\xfe\\x1f\\x61\\xad\\xcc\\x76\\x55\\x69\\xa9\\x9c\\x09\\xa3\\xc8\\x24\\xed\\x4a\\x98\\xba\\xbe\\xae\\x43\\xef\\xb1\\xf3\\x51\\xba\\x13\\x0e\\x22\\xaa\\x97\\x81\\x19\\x86\\xbe\\x92\\x3c\\xc4\\x18\\x0a\\x7c\\x4b\\x78\\xbc\\xc1\\x40\\xce\\xc1\\x55\\x74\\x65\\x4a\\xa6\\xd6\\x5a\\x06\\xb9\\x7e\\xcf\\xa5\\xf3\\xa9\\x35\\x5f\\x96\\xe4\\xee\\xaa\\x76\\x89\\x21\\x7b\\x66\\x3f\\xba\\x4d\\xab\\x0d\\x99\\xb1\\x9c\\x8d\\x8d\\xbf\\x47\\xa1\\x57\\xe5\\xd5\\x96\\x9a\\x35\\xef\\x84\\xdf\\xf9\\x56\\x2e\\xdd\\x43\\x4e\\x73\\xae\\xe7\\xd0\\xd8\\x92\\xdd\\xa7\\x2a\\x36\\x2a\\x22\\xa7\\xe9\\xfa\\x86\\x34\\xa5\\x7e\\xeb\\xd1\\xa9\\x07\\x48\\x5c\\xa8\\x92\\x1b\\xdc\\x19\\xee\\x9e\\xe5\\x88\\xf3\\x95\\x68\\x7d\\x3f\\xc8\\xf8\\xc2\\x5f\\x2e\\x95\\x76\\xca\\x60\\x31\\x3f\\xbb\\x2c\\x26\\x5a\\x99\\xf2\\xcd\\xd5\\x57\\x5b\\x1d\\xd5\\x30\\x60\\x4e\\x9a\\xd6\\x69\\x5c\\x9f\\xb3\\x59\\x94\\xa8\\xb8\\x7d\\x5c\\x85\\x70\\x54\\x9a\\x4d\\x32\\x9b\\x9f\\xe0\\x87\\x06\\x9a\\xb7\\xeb\\x0d\\x71\\x4a\\x94\\xe1\\x92\\x61\\xf8\\x6e\\x44\\x8f\\x2d\\xa9\\xb1\\xcb\\x0c\\x0d\\xbe\\x41\\xd4\\x4c\\x3a\\x82\\x47\\x83\\xd1\\xbd\\xbd\\x73\\x26\\x05\\x1a\\xeb\\x10\\xad\\xab\\x80\\x5c\\x5c\\x59\\xd0\\xe8\\x3b\\x1c\\x11\\xa2\\xfd\\xd3\\x5e\\x44\\x4a\\x49\\x9e\\xd1\\x5d\\xaf\\xd8\\x38\\x62\\x77\\x5f\\x6c\\xdf\\xc6\\x75\\x95\\x81\\x84\\x07\\xbe\\x55\\xec\\xbf\\x7b\\xf8\\x6c\\x73\\x06\\x9a\\xac\\xe5\\x77\\x62\\x6a\\x85\\x63\\x53\\x6f\\x60\\x50\\x42\\xcf\\x7c\\xaa\\xf6\\xfc\\x8e\\x3b\\x54\\x5b\\x77\\x41\\x4d\\xf8\\xd9\\xf6\\x49\\xb9\\x9e\\xe4\\x25\\x41\\xda\\x38\\xc3\\xaa\\xe6\\x27\\x20\\x78\\x45\\xb8\\xf4\\x14\\xa8\\x07\\x4d\\x70\\x86\\x8a\\x5c\\x0b\\x07\\xb0\\x70\\xc3\\xc6\\x53\\xbe\\x04\\x07\\x6b\\x83\\xca\\xd7\\xb0\\x30\\x5d\\x95\\x00\\xaa\\x44\\x45\\x5c\\xb8\\x60\\xdc\\xc7\\x64\\x00\\xaf\\x93\\xc3\\xd2\\xef\\xb4\\x2a\\xe0\\x56\\xf1\\x42\\x8b\\x65\\xf1\\x22\\xe1\\xc7\\xb9\\x58\\x4d\\x81\\x4d\\x50\\xac\\x72\\xef\\xdb\"},\n{{0x67,0xcf,0x27,0x15,0x52,0x87,0xbe,0x6b,0xfa,0xb6,0x62,0x15,0xe0,0x17,0xc3,0x46,0x63,0x22,0xf2,0x1e,0x6e,0xb1,0x40,0xbe,0x4f,0x1b,0xde,0xcf,0x55,0xab,0xfd,0xc1,},{0xd0,0x70,0xaa,0xb2,0x95,0xa8,0xaf,0x93,0x57,0x27,0xc3,0xbe,0x44,0x2b,0x25,0x1d,0xb9,0xe7,0x74,0xd2,0xf4,0x4b,0x3c,0x24,0x24,0xc5,0x2f,0xc8,0x96,0x56,0xe1,0x69,},{0xc9,0x34,0xa3,0xa1,0xaa,0xab,0x78,0xd9,0x26,0x9d,0x1e,0x9d,0x13,0x39,0x2f,0x72,0xc6,0x37,0xbc,0x5d,0xe5,0x4f,0x04,0x69,0x1e,0xfc,0x29,0xd4,0x73,0xb4,0x75,0x02,0x5d,0x8d,0x8f,0xe3,0xc5,0x23,0xd2,0xd2,0x9c,0x41,0xc5,0xf3,0xde,0xc6,0xca,0x38,0xce,0x6d,0x68,0xd7,0xff,0x09,0xb6,0x13,0x5b,0xa2,0x4d,0x0d,0x32,0xcc,0x15,0x02,},\"\\x0f\\xf0\\x52\\x97\\x03\\x1c\\x89\\x27\\x74\\xcb\\x2c\\x01\\xe8\\xca\\x60\\xdd\\xd0\\xce\\xac\\xc0\\xb8\\xd5\\x91\\xa8\\x91\\xe3\\x3b\\x19\\xe1\\xbe\\x9e\\x36\\x3b\\xc6\\x42\\x0d\\x6f\\x52\\x9f\\x04\\x84\\x0b\\x3b\\x08\\x85\\x3c\\x83\\x5a\\x03\\xe0\\x36\\x97\\x8b\\x04\\xa4\\xf9\\xec\\x6b\\xe4\\xae\\xf3\\x31\\x95\\x61\\x90\\x99\\x6d\\xea\\x27\\x26\\x19\\xf1\\x68\\x6d\\x33\\xbe\\xf0\\x3d\\xbc\\x08\\x5a\\x92\\x3a\\x0f\\x11\\x5b\\x78\\xf6\\x53\\xfe\\xeb\\x60\\xbb\\x9e\\x45\\xf3\\x4f\\xb8\\xbe\\x5a\\x4c\\xbb\\x64\\x8c\\x7d\\x29\\x95\\x6f\\x0d\\x0e\\x96\\xbd\\xd3\\xc8\\xd0\\x64\\x97\\x20\\x62\\x4c\\xbc\\x20\\x79\\xe8\\x4f\\xd6\\xd0\\x10\\x24\\x11\\x24\\x09\\x84\\x59\\xf1\\x2a\\xf2\\x99\\x1d\\x38\\x28\\x77\\x0f\\x50\\xb1\\x04\\xea\\x6e\\x5f\\x51\\xfd\\xad\\x30\\xa9\\xb8\\x07\\x9d\\x21\\x59\\xe4\\x6d\\x64\\xaf\\x91\\xd0\\x7c\\x10\\xed\\x19\\x81\\x4d\\xf2\\xaf\\xe6\\x60\\xd7\\xd8\\xf2\\x40\\x35\\x34\\xe9\\x2c\\x62\\xe1\\xea\\x6d\\x68\\x82\\x03\\xbc\\xa3\\xd9\\x7c\\x2a\\xfd\\xa8\\x3b\\x25\\x55\\x20\\xff\\xe9\\x2a\\x33\\x62\\x57\\x72\\x51\\x3b\\x1f\\xe3\\x4f\\xaf\\xe3\\x2b\\x6a\\x9b\\x8c\\xf9\\x94\\xdf\\x7e\\x63\\x4e\\x68\\x65\\x91\\xe5\\xf0\\x07\\x3a\\xba\\xbc\\x64\\xa8\\x92\\x10\\xba\\x53\\xa4\\x99\\x1c\\x11\\x55\\x7e\\x03\\x34\\xe6\\xc6\\xa5\\x03\\x6c\\x64\\x2a\\x31\\x8f\\x22\\x95\\x11\\x71\\x39\\x08\\x5f\\xb3\\x40\\x75\\x64\\x70\\x06\\x75\\x8e\\x32\\xbc\\x00\\xad\\x10\\x9f\\xe8\\x03\\xf7\\xee\\x9f\\x5e\\xc2\\xaf\\x4d\\x25\\xc3\\x07\\x0a\\xbc\\x51\\xcf\\x4d\\x78\\xe1\\x3a\\x7c\\xe2\\x83\\xd4\\xfb\\x4e\\xb4\\x1d\\x3e\\x8c\\xe9\\x02\\x38\\x50\\x0a\\xe0\\xce\\xda\\x32\\x0e\\xc5\\x92\\x2e\\xfa\\x10\\xb9\\x03\\x74\\x8e\\x1e\\x85\\x3a\\x37\\x29\\xd2\\x4c\\x10\\x54\\x39\\xdf\\x2f\\x70\\x00\\x12\\x3d\\xb9\\xb2\\xc0\\x15\\x33\\xbb\\xf0\\xd0\\x28\\xeb\\xb2\\xfc\\x00\\xdc\\xe3\\x8a\\xd0\\x63\\x28\\xee\\x9e\\xcd\\x84\\x9a\\x6e\\xfc\\x3a\\xe8\\x84\\xef\\x69\\x33\\xcf\\xeb\\xed\\x05\\x5b\\xb2\\x96\\x8a\\x0b\\x06\\x76\\xb5\\x72\\x92\\x16\\x17\\x8c\\x75\\x19\\xef\\x07\\x88\\x59\\x3f\\xc0\\xdc\\xff\\x50\\xd7\\xe0\\xb1\\xeb\\xb3\\xcf\\x49\\xbb\\xd1\\xbf\\xa5\\xc3\\x0e\\xa7\\xb8\\x8c\\x36\\xe1\\xa1\\x59\\x3a\\xef\\x0b\\xb3\\xf9\\xe2\\x09\\x1c\\x85\\x89\\xf7\\x41\\x4b\\xee\\xd8\\xdf\\x46\\x6a\\x2e\\xd8\\x7b\\x2c\\xb5\\xf3\\x5f\\x1d\\x31\\x24\\x6c\\xeb\\x96\\x86\\x09\\x25\\x36\\x15\\xd7\\x80\\x43\\x51\\x73\\x79\\xee\\x69\\x74\\xa6\\x69\\xcb\\x48\\xda\\x6a\\xc2\\xf9\\x6d\\x70\\x0b\\x7e\\x44\\xa4\\x35\\xcf\\xef\\xec\\x40\\x2a\\x1e\\x31\\x10\\xe7\\x69\\x81\\x92\\x4f\\x26\\x01\\xc0\\x1d\\xc0\\x35\\x46\\xfd\\x4f\\x51\\x16\\x49\\x30\\x2f\\x06\\x33\\xdf\\xbd\\x25\\x65\\x1c\\x5a\\x59\\x9c\\x90\\x95\\x44\\x89\\xc7\\x6a\\x65\\xec\\x05\\xa7\\xe4\\xcc\\x74\\x61\\x6c\\xe2\\x56\\x01\\xcc\\x37\\xb8\\x04\\xe1\\xf0\\xbc\\xc8\\x65\\x10\\x23\\xb1\\x2e\\x13\\x56\\x84\\x41\\xe8\\xb8\\xef\\x4c\\x30\\x5f\\xcd\\xad\\x3d\\x2b\\x13\\xfa\\x08\\x03\\x24\\xb2\\xfd\\x6b\\x61\\x99\\x8c\\xf8\\x64\\xb6\\x58\\xbc\\x7f\\xef\\xcc\\x48\\xa5\\xa7\\x68\\x1d\\x7c\\x86\\x6c\\x34\\x2c\\x7f\\x5d\\x6c\\xf1\\x08\\x81\\x52\\x2c\\xc7\\x10\\x25\\x7d\\x25\\xa4\\xc1\\xe3\\x52\\xd2\\x70\\xe9\\x02\\x08\\x2a\\xb9\\x54\\x1d\\x59\\x00\\xce\\xff\\xa0\\x91\\x4b\\x16\\xb5\\x5e\\x0d\\xd3\\x78\\x6e\\x98\\xd4\\x17\\x20\\x87\\x5a\\x14\\x8e\\xb4\\xab\\xdb\\x01\\x53\\x85\\x66\\x79\\xfb\\x98\\xc0\\xec\\x48\\x5e\\x5f\\x45\\x8d\\x63\\x5b\\x78\\x61\\xa2\\xb3\\xa8\\xba\\x5e\\xc2\\xc1\\x44\\x4d\\x35\\x39\\x80\\x20\\x0e\\x5e\\x07\\x18\\x08\\x85\\x4a\\x26\\x8c\\xc7\\x6c\\x60\\x5c\\x94\\xf3\\x73\\x29\\xc3\\x61\\x87\\xa4\\x1f\\xdd\\xf9\\x2a\\xab\\xdb\\x49\\x96\\xa0\\xe1\\x0b\\x31\\x55\\x26\\xaf\\xea\\xc8\\x0e\\xb2\\xfa\\x32\\xaf\\x78\\x6a\\x34\\x31\\x6b\\x36\\x11\\x1e\\xe9\\x35\\x21\\x08\\x14\\x4d\\x70\\xf7\\xd1\\x72\\x3b\\x32\\xf4\\xdb\\xaa\\x82\\x20\\x13\\x53\\x41\\x1d\\x65\\x77\\x13\\xe5\\x5e\\x35\\xdf\\x78\\x58\\x0b\\x1b\\xc0\\x86\\x80\\xf0\\x15\\x9f\\xa1\\x16\\xfa\\xf4\\x63\\x56\\x6a\\xaf\\xe8\\xae\\xa6\\x98\\x57\\xe7\\x2e\\x44\\xac\\x80\\x9a\\xc4\\x3f\\x5c\\x45\\x93\\x9d\\x85\\xa1\\xa5\\xf4\\xa3\\x70\\xa1\\x89\\x96\\xc8\\x51\\x4a\\x46\\xf3\\x43\\x71\\xef\\x9e\\x5f\\xb2\\x04\\x42\\x2c\\x93\\x4a\\x1d\\x29\\x3d\\x10\\x1b\\x8c\\x16\\xf9\\x9c\\xc0\\x73\\xea\\x36\\x6a\\x13\\xa4\\x5c\\x43\\x7d\\x62\\x0d\\x13\\x2b\\x74\\x40\\x9c\\xbf\\x8b\\x9c\\x07\\x5b\\x41\\x63\\xf7\\x26\\xaa\\x67\\xe5\\x09\\xa2\\x48\\x74\\xfc\\x1b\\x1f\\xb6\\xfb\\x7c\\x73\\x55\\x15\\x9c\\x02\\xaa\\x13\\xe6\\x4b\\xad\\xf1\\x50\\x35\\x6b\\x18\\x41\\xb3\\x21\\xf8\\x04\\x1e\\x13\\xed\\x77\\xe8\\x46\\x1c\\xfb\\xb8\\xe8\\x28\\x48\\x8b\\xf5\\x17\\xa5\\xd2\\x9f\\xf8\\x2e\\x73\\x67\\x48\\x0a\\x8e\\xdd\\xde\\xb5\\x35\\x0e\\x7a\\x83\\x42\\x3b\\xd0\\xb1\\xc5\\x5f\\x7b\\xb4\\x24\\xca\\x04\\xc2\\x05\\x72\\x3c\\xd5\\x40\\x56\\x71\\xe7\\x33\\xf3\\x91\\x60\\x0a\"},\n{{0x18,0xc2,0x1c,0x0d,0x0d,0xe1,0x3d,0x4c,0x64,0x49,0x7e,0xf0,0x26,0x0d,0x66,0xcf,0xd3,0x42,0x16,0x98,0x1a,0x1b,0x49,0x39,0x1a,0xe5,0xcb,0x0e,0x41,0x43,0x6e,0x9f,},{0xf7,0xd4,0xdd,0x1e,0x05,0x9c,0x36,0xf6,0xd1,0x21,0xc0,0xaf,0xfe,0xb2,0x1f,0x0c,0x57,0x2b,0x45,0x99,0x2f,0x84,0x94,0x8b,0x09,0xaa,0xfb,0xcd,0x86,0xbb,0x53,0x5c,},{0xc9,0xc0,0x99,0xe2,0x1d,0x09,0x5a,0xfa,0xdd,0x4e,0x71,0xc9,0xab,0xf6,0xb7,0x08,0x33,0x24,0x77,0x62,0x25,0xb5,0x87,0xb6,0x0a,0x0e,0x60,0x92,0xec,0xb3,0xd3,0x3c,0xff,0x39,0xc6,0x7d,0x34,0x77,0x6a,0xe9,0x9d,0xda,0x75,0x4a,0x3c,0x2b,0x3f,0x78,0x11,0x35,0xa3,0x8c,0x78,0xed,0x64,0x55,0xaa,0xf0,0xae,0x0c,0x31,0x3b,0x62,0x05,},\"\\x68\\xab\\xca\\x7c\\x16\\x6a\\xfe\\x06\\x3e\\x47\\x7b\\x80\\xe3\\x7d\\xb2\\x24\\xe1\\xa2\\x35\\xde\\x8f\\xcd\\xeb\\x7f\\x42\\x7a\\xf6\\x7e\\x00\\x12\\x47\\xcc\\x5e\\x05\\x71\\x82\\xfd\\x9b\\x6d\\xb8\\xba\\xba\\xa6\\x58\\xcf\\x3b\\x3f\\xe4\\xb0\\x76\\x3b\\xf8\\x8d\\x67\\x31\\x1b\\x11\\x90\\xbe\\x83\\x40\\x18\\xcf\\x57\\xa3\\x32\\x92\\x24\\x13\\x76\\x46\\x20\\xac\\xe0\\x54\\x45\\xee\\x01\\x9a\\x06\\xdf\\xf9\\x8b\\x23\\x89\\x79\\xad\\x6d\\x30\\x90\\x1b\\xef\\xa3\\xc6\\x4f\\x6b\\xd8\\xc6\\xeb\\x09\\x2c\\x2e\\x62\\x84\\x13\\x88\\xfd\\x8c\\x4e\\x84\\x19\\xe2\\x77\\x89\\x84\\x89\\x67\\x37\\xed\\x90\\xa2\\xcd\\xb2\\x19\\x96\\xae\\xf7\\xc2\\x16\\x38\\xd6\\xcb\\xe6\\x80\\x32\\x2d\\x08\\x99\\x65\\x97\\xa9\\xe3\\x03\\xf6\\xf5\\xf4\\x79\\x40\\xf8\\xc5\\xba\\x5f\\x5f\\x76\\x38\\x3e\\x7e\\x18\\x06\\x4a\\x3d\\x2d\\xff\\x5f\\xdf\\x95\\xe9\\x0c\\x5e\\xb3\\x0f\\x4d\\x8d\\x45\\x9e\\xe1\\xd5\\x06\\xa8\\xcd\\x29\\xcd\\xc6\\x9b\\x67\\x54\\x96\\x3b\\x84\\xd6\\x74\\x94\\xb3\\x53\\x05\\xd1\\x0d\\x12\\xb9\\x48\\x74\\x17\\xb2\\xce\\x28\\xad\\xcb\\x10\\xb6\\x5c\\xc9\\x31\\xfb\\x33\\x81\\xae\\x02\\xe7\\xaf\\x79\\xa0\\x2b\\xf9\\x9e\\x25\\x8a\\x56\\x36\\x10\\x90\\xe0\\xb7\\x12\\x22\\xb3\\xac\\x60\\xbf\\x2f\\xb7\\xba\\x83\\x2d\\x03\\x4f\\x5b\\x6b\\xc6\\xfa\\x66\\x3a\\xe7\\x41\\xf7\\x6d\\x97\\xc1\\xac\\x32\\xbc\\xb7\\x41\\x15\\x07\\xd5\\x18\\xd2\\xf6\\x05\\x4b\\x57\\x83\\x28\\xc5\\xf6\\x7f\\x75\\x8a\\xc0\\x1b\\xfe\\x6f\\x4d\\x35\\x90\\x0f\\x50\\xa5\\xdc\\xd3\\x0d\\x2f\\x92\\x61\\xb6\\xbb\\xec\\x4c\\x1d\\x1f\\xc1\\x8d\\x2a\\x7e\\x70\\xc4\\xd3\\x6c\\x21\\xfa\\xf8\\xcf\\x94\\xa5\\x87\\xc3\\xa0\\xd1\\xa9\\xcd\\xe7\\x83\\x1a\\xe6\\x26\\x77\\x54\\x68\\xdd\\xcd\\x40\\xa8\\xba\\x18\\xf4\\x2b\\x34\\x18\\x8d\\xe5\\x74\\x1e\\x1b\\xe8\\x30\\x7b\\x10\\x84\\x58\\x65\\x15\\xec\\x01\\x5e\\x4e\\x37\\x1d\\x29\\x44\\x3a\\x40\\xb0\\xc0\\x69\\xc6\\x41\\xd8\\xce\\xe5\\xe4\\x61\\x18\\x62\\x98\\x7c\\x3e\\x35\\x6b\\x12\\x93\\xb0\\x51\\x8b\\x4a\\x4c\\x8e\\xa9\\x7f\\xc5\\xa4\\xdb\\x1f\\x01\\x29\\xab\\xee\\x72\\xfb\\x80\\x92\\xea\\x35\\xc2\\xda\\xb6\\x75\\x73\\x85\\x02\\x07\\xb8\\xe8\\x27\\x18\\x99\\x9a\\xd9\\x9c\\x4c\\x83\\x9e\\xac\\x14\\x63\\x6b\\xd5\\xe4\\xd8\\x43\\x6a\\x27\\x0d\\xd9\\x0b\\x8e\\x32\\x13\\x02\\xe5\\x2a\\x92\\xd8\\x91\\xff\\x18\\x91\\x54\\x2a\\xe2\\xca\\xa0\\xd6\\x6e\\x0f\\x66\\x1e\\xae\\x37\\xb2\\x5b\\x08\\xbb\\x2e\\x0e\\xee\\xc4\\x83\\x80\\x09\\x77\\x8c\\xd5\\x25\\x98\\x43\\x80\\x98\\x3b\\x2b\\xaa\\xdd\\x71\\x02\\xa1\\xe3\\x56\\x73\\x4e\\x41\\xd7\\x61\\x83\\x82\\x9e\\xa9\\xab\\x82\\x44\\xc3\\x36\\x59\\x7c\\xa2\\xd6\\x79\\x88\\xf2\\x81\\x43\\x84\\x67\\xe4\\x53\\xf5\\x62\\xc6\\x7b\\x22\\xd0\\xa4\\xdd\\x9f\\xcb\\x46\\xa5\\xf8\\x0d\\x29\\x9d\\xb5\\xf0\\x1f\\x59\\x16\\x0a\\x19\\xd7\\x4c\\x64\\x4f\\xa5\\xa9\\x40\\xe3\\x2c\\x9d\\x8d\\x98\\x3b\\xab\\x7e\\xfb\\x0d\\x7c\\x7d\\xa4\\xe3\\xfd\\xa1\\xcd\\x0d\\x18\\xa4\\x55\\x8e\\xb9\\xfe\\x46\\x40\\x8a\\xab\\x50\\x85\\x91\\x2b\\xf2\\xf4\\x6a\\xb6\\x3a\\x93\\x54\\xf9\\x02\\x7c\\x93\\x69\\x12\\x23\\xff\\xaa\\xb8\\x46\\x3b\\xac\\x4c\\x4b\\xc3\\xb1\\x1a\\xbc\\x46\\xba\\x68\\x71\\x7c\\x91\\x78\\x0d\\x3f\\x30\\x47\\x0d\\xbd\\xd8\\x8b\\x37\\x80\\xa1\\x94\\xc8\\xa4\\x0a\\x2c\\x0a\\x81\\xa4\\xd5\\x6d\\xec\\x2d\\x89\\x62\\xc3\\x4d\\x2a\\xb7\\x33\\x69\\x02\\x8e\\x1b\\xfe\\xaa\\x6b\\xb5\\x82\\x41\\xff\\x4f\\x89\\x8f\\x80\\xad\\x3b\\xb1\\xc6\\x91\\xb8\\x64\\x7f\\x2c\\x69\\x83\\x95\\x4c\\x1c\\x77\\x95\\x74\\x58\\xee\\xbf\\x1c\\x50\\x55\\xc3\\x16\\x93\\xab\\xce\\xd0\\x53\\x84\\x73\\x5a\\x4f\\x74\\x19\\x68\\xbd\\x6a\\xc3\\x15\\x65\\xcf\\xee\\x71\\xc8\\x84\\xc1\\xe2\\x9e\\x9e\\x7a\\xe0\\xf7\\xec\\xd0\\x4d\\x46\\x3b\\x1d\\xc3\\x89\\xc3\\x60\\x37\\xe8\\x14\\x58\\xdc\\xec\\x61\\xd0\\x76\\x40\\x32\\xdd\\x58\\x9b\\x92\\xaf\\xda\\x2f\\xc9\\x02\\x8f\\x41\\xab\\x53\\xcc\\xa2\\xd0\\x4e\\xc6\\xa9\\x56\\x59\\x55\\xcb\\xcf\\x1a\\x34\\x63\\x98\\x9c\\x71\\x39\\xbb\\x90\\x2a\\x59\\x21\\xe8\\xb2\\xc9\\x9c\\x48\\xe1\\x37\\x11\\xf0\\xbc\\xc3\\x99\\x25\\x95\\x16\\xc8\\x1a\\xe9\\x42\\xa6\\x79\\xd4\\xba\\x33\\x97\\x9e\\xb1\\x2f\\xcd\\x28\\x60\\x60\\x2e\\x47\\x24\\xb1\\x33\\x0f\\x1c\\xd2\\x57\\xb5\\xb2\\x89\\x1d\\xae\\xe8\\xef\\x4c\\x92\\xfc\\x3b\\xfd\\xb3\\x4e\\x53\\x2d\\x58\\x70\\xf3\\x80\\x59\\x86\\xac\\x97\\xb5\\x03\\xfd\\x85\\x87\\x35\\x48\\xe3\\x09\\x50\\x00\\x0f\\x8a\\x70\\xbe\\x51\\xfa\\x75\\x76\\x03\\x50\\x1f\\x2d\\x30\\xe8\\x52\\xef\\xea\\xc4\\x82\\x68\\x62\\xae\\xd7\\xf6\\xd2\\x0c\\x9a\\x8c\\x8d\\xbe\\x36\\x2d\\xfe\\xe4\\x18\\x93\\xf2\\x7e\\x6f\\xd5\\xe9\\x1d\\x0e\\x7e\\x3d\\x4f\\xd8\\x15\\x5f\\x44\\xfd\\x8e\\xf1\\x7a\\xf1\\x4a\\x84\\x8d\\x44\\xa8\\x76\\x31\\xae\\xee\\x75\\x14\\x62\\xb2\\xa5\\x40\\x87\\x06\\x8d\\xae\\xab\\x3e\\xa3\\x28\\x9e\\xce\\x62\\x12\\xb3\\xb5\\x2c\\xe7\\xa8\\x88\\x6d\\xf2\\xa7\\x27\\xb7\\x2a\\x57\\x0c\\x2f\\xb9\\xc5\\x03\\x41\"},\n{{0xdb,0x9a,0xae,0xe1,0x98,0xcd,0x26,0xa5,0x2b,0x11,0x81,0xfa,0x3f,0xd9,0x2a,0xbe,0x42,0x5e,0x66,0x6d,0x89,0x0b,0xf9,0x69,0x46,0x7d,0xd2,0xce,0x28,0x0e,0xd4,0xa7,},{0x3c,0x89,0x7c,0xaf,0xe2,0xb4,0x99,0xec,0xb2,0xe1,0xdd,0x01,0xea,0x55,0xf3,0xfc,0x88,0xf6,0x8c,0x25,0xb6,0x4a,0x63,0x6b,0x31,0xa1,0xfd,0x1c,0x78,0xf3,0x7f,0x3f,},{0xb2,0xe3,0xd9,0xc5,0xd0,0xff,0x32,0x99,0x96,0xbc,0x89,0xd2,0x6f,0xb3,0xac,0x12,0x6b,0xde,0xd3,0x13,0xcb,0xf8,0xdf,0x86,0x71,0x86,0x38,0xc1,0x99,0xe0,0x57,0x27,0x3d,0x09,0xeb,0x16,0x3c,0x6c,0x18,0x1f,0xd8,0xbc,0xe5,0x1f,0x72,0xd4,0xd9,0xd2,0xe8,0x4a,0xbb,0xe0,0x83,0x30,0x77,0x3b,0x9f,0xcc,0x21,0x66,0xf1,0x40,0xd6,0x0e,},\"\\x47\\xfb\\x62\\x15\\x61\\xf8\\xb7\\xee\\xce\\xc6\\x03\\x3f\\x2b\\xcb\\x6f\\x43\\xac\\x68\\xc9\\x58\\xdf\\xd2\\x65\\x6f\\x52\\xa0\\xc2\\x9b\\x4a\\xcd\\x44\\xf4\\x30\\x4c\\x6b\\xf7\\x7e\\xea\\xa0\\xc5\\xf6\\xd3\\xb2\\x2d\\xb1\\x96\\x99\\xc3\\xdc\\xde\\xde\\x69\\x8a\\xbd\\xe6\\x23\\xec\\x4b\\x2b\\x90\\x91\\x0c\\x80\\xac\\x3a\\xf3\\x9c\\x55\\x0b\\x6d\\xd4\\x09\\xe6\\x3d\\x77\\x70\\x66\\x55\\xa9\\x19\\x9c\\xb5\\xc0\\x25\\x8f\\x5b\\xa3\\x82\\x85\\xff\\xdc\\x64\\xb8\\xa8\\xf3\\x73\\xd1\\xfb\\x29\\xba\\x87\\xf8\\x4d\\xdf\\x5f\\x34\\xd8\\xf1\\x40\\xbb\\xc1\\x7b\\x39\\x61\\x68\\x2d\\xf5\\xd0\\xa8\\xf9\\x10\\x2e\\x37\\x9a\\x99\\x98\\x13\\x9d\\xfe\\x40\\xab\\x8c\\xe7\\x53\\xbf\\x56\\x26\\x10\\x82\\x37\\x77\\x1a\\x7d\\x8e\\x10\\x9e\\x9e\\x0a\\xfe\\x9b\\x66\\xd0\\x42\\x09\\x42\\xe1\\x63\\xa4\\xf3\\xc0\\x3f\\x71\\x81\\x3e\\xe0\\x78\\xbd\\x09\\x0a\\xc3\\xd0\\x77\\x2e\\x26\\x22\\xc2\\x59\\xe6\\x82\\x55\\x2c\\x75\\xb0\\x8d\\xd0\\x55\\xa4\\xa5\\xeb\\x5e\\x60\\x94\\x40\\xbc\\xd3\\xf3\\xa6\\xfe\\xb8\\x76\\xfd\\x16\\x92\\x15\\x20\\xc6\\xcb\\x68\\x84\\x71\\x0d\\x2e\\x15\\xcd\\xad\\x6d\\xaa\\xee\\xd9\\x59\\x62\\xdd\\xa2\\x1c\\x67\\x88\\xf7\\x84\\x91\\x79\\x17\\x98\\x2e\\x1c\\xcb\\xb5\\xfd\\xd9\\xbd\\xc1\\x76\\x9d\\xb6\\xb6\\xdb\\x57\\xca\\x35\\x4e\\x01\\xa1\\x33\\x9d\\x8e\\x77\\xe9\\xdb\\xbb\\x58\\x12\\xfb\\xab\\x6a\\x14\\xc5\\x40\\x85\\xc0\\x65\\x95\\x99\\xf1\\x50\\xe2\\x24\\x72\\x47\\x0f\\x1e\\x5e\\x67\\x2c\\x42\\x5f\\x37\\x5f\\x9e\\x0d\\x6e\\x8d\\x52\\xfa\\x17\\xb7\\xa8\\xd7\\xa4\\xd7\\xca\\x3e\\x12\\xf4\\xdb\\x53\\x83\\x6a\\xed\\x2b\\xeb\\xd7\\x45\\x89\\xba\\xca\\x8c\\xe9\\x10\\x02\\x91\\xbf\\xb7\\xe4\\x56\\xdb\\x7f\\x2f\\x0a\\x84\\xdc\\x0a\\x74\\x88\\x85\\x13\\x66\\xa9\\xa5\\xfe\\xa0\\xe3\\xef\\xc7\\x4b\\x9c\\xdd\\x4b\\xd9\\x7b\\x65\\xab\\xf3\\x61\\x39\\x3c\\xe1\\x70\\x3d\\x85\\x71\\x80\\x5e\\xe6\\x8a\\x13\\xd3\\x65\\x4f\\x03\\xdc\\xec\\xfb\\x77\\xa5\\x34\\x30\\xd0\\x94\\x96\\xad\\x73\\xec\\x01\\x75\\x99\\x57\\xe5\\x10\\x46\\xaa\\x73\\x96\\xf5\\x92\\x33\\x86\\x50\\x11\\x7a\\xc7\\xb4\\xdd\\x35\\x73\\xeb\\x53\\xd9\\xc9\\xf9\\xdf\\xa6\\x2e\\x23\\x69\\xc7\\x7a\\xf9\\xc0\\xd4\\x2f\\x61\\xba\\xe7\\x4b\\x28\\x7d\\xdf\\xa2\\x7b\\x7f\\x1c\\x1b\\xe9\\x88\\x3a\\x04\\x46\\x91\\xd5\\x6d\\xc1\\x37\\x34\\xad\\x4e\\xe3\\xa3\\x2a\\x9f\\x40\\xe3\\x28\\xc5\\x00\\xd0\\xfe\\xd8\\xea\\x05\\x10\\xe9\\x38\\xf2\\x75\\x80\\x04\\x02\\x2b\\xca\\xa6\\x90\\x2b\\xda\\x10\\x14\\xb8\\xae\\x33\\x65\\x27\\x28\\x29\\xed\\x94\\xfa\\xba\\x63\\xcb\\x14\\xa3\\x6c\\xf8\\x13\\x90\\xec\\xa8\\x3f\\xc1\\xc6\\x27\\x17\\x20\\x13\\x26\\x1b\\x39\\x93\\x77\\x9a\\xa0\\x76\\xa5\\xc5\\xd8\\x1d\\x90\\xd2\\x70\\x62\\xe1\\xa6\\xd9\\x0b\\x5c\\xf1\\x00\\x5c\\x70\\x19\\x17\\xb7\\xad\\xac\\x18\\x0c\\xb7\\x5b\\xbc\\xe0\\xf2\\x7f\\x2f\\x18\\x0e\\x2c\\xb9\\x01\\x40\\xc1\\x4c\\xc6\\x00\\x9d\\x2d\\x41\\xaa\\xb1\\xdb\\x94\\x18\\xf9\\x1d\\x4c\\xf3\\x94\\x00\\x2c\\xd7\\x0a\\xc9\\xdc\\x11\\xce\\x86\\x53\\x47\\xfa\\x3f\\x56\\xf8\\x7c\\x14\\x9e\\x2b\\x17\\xd2\\xc7\\x2b\\x66\\x3a\\x58\\xe3\\x18\\x7b\\xb1\\x9b\\x9b\\xac\\x2d\\x11\\x48\\x3b\\xa1\\x2f\\x77\\x0a\\xc0\\x4d\\xc4\\x6d\\x38\\x85\\x18\\xfa\\x54\\xdc\\x15\\x2e\\x9a\\x9d\\xfb\\xff\\x14\\xf1\\x4c\\x61\\xcb\\x37\\x58\\x97\\xe3\\x0c\\x53\\xe6\\xde\\x42\\xd5\\xe1\\x40\\x1d\\xae\\x1b\\x22\\xba\\xaa\\x0e\\x8a\\x41\\xc6\\xaf\\x9d\\x0e\\x0b\\x13\\xa9\\x1a\\x23\\xd9\\xb7\\xd5\\x55\\x20\\x47\\x02\\x9a\\x35\\x21\\x94\\x6c\\x71\\x20\\xd3\\xd2\\x58\\xb3\\xae\\xfc\\xf7\\x54\\xd1\\x95\\x94\\x87\\xa1\\xfe\\x77\\x43\\xac\\x7e\\x1c\\xc8\\x9e\\x36\\x8b\\x19\\x78\\x09\\xc3\\xa2\\x73\\x17\\xe0\\xec\\x48\\xd5\\x46\\xdb\\x1e\\x21\\xeb\\x62\\x9a\\x29\\xbc\\x62\\x47\\xcd\\xd4\\xa1\\x37\\x14\\x37\\x56\\x3e\\xdd\\x12\\xfa\\xea\\x2c\\x5c\\xb7\\x7e\\xed\\xed\\xbf\\xc5\\x80\\x08\\xfa\\xd1\\xf6\\x5a\\xf3\\x58\\x43\\xfa\\x27\\x4c\\x73\\x4e\\x3f\\xbb\\xaa\\x9c\\xc5\\x0d\\x68\\x37\\x48\\xb7\\x5a\\x48\\x5f\\x94\\xd6\\x30\\xb0\\x32\\xa5\\xf1\\x06\\x7d\\x1d\\xeb\\x30\\xe9\\xd2\\x21\\x8c\\x93\\x5c\\x98\\x1d\\x01\\xc0\\xc5\\x47\\xfd\\x68\\x41\\x31\\x36\\xed\\xf4\\xc0\\xc7\\x70\\x28\\x6e\\x82\\x34\\x42\\xe1\\xc5\\x13\\x65\\x19\\x29\\x21\\x3c\\x12\\x1c\\x1d\\xe7\\x00\\x98\\x91\\x41\\xab\\x4a\\xf3\\xb3\\xfe\\x74\\x04\\xb4\\xd2\\xa3\\x8c\\x53\\x0b\\xaf\\xb4\\x98\\xe6\\x49\\x53\\xce\\x1c\\x0f\\xb7\\xd3\\x40\\xe2\\x11\\x35\\xbf\\x8a\\xfd\\xd8\\xdd\\x65\\xb1\\xb1\\x8c\\xf1\\xc8\\xfb\\x9f\\x40\\x2b\\x26\\x70\\x40\\x0b\\x86\\xdd\\xaf\\xb1\\x84\\xcc\\x51\\xd5\\xfd\\xa2\\x73\\xb8\\x0c\\x26\\x52\\x1f\\x91\\x2f\\x35\\x83\\xb4\\xae\\x30\\x1d\\xae\\x15\\x1c\\xb5\\x5c\\x75\\x70\\x3a\\xad\\xef\\x03\\x24\\x15\\x22\\x7d\\x53\\xe3\\x95\\xdb\\x6c\\x15\\x0a\\x1e\\xe8\\x39\\xad\\x26\\xba\\xe5\\x52\\xe1\\xab\\x73\\x62\\x14\\xdc\\x04\\xb0\\xf3\\xc4\\x1b\\x7c\\xfb\\xd0\\x49\\x68\\x1b\\xc8\\x4c\\x3d\\x16\\x53\\x07\\x68\"},\n{{0xa8,0x04,0xc3,0x3b,0x4d,0x38,0xcb,0x3c,0xe3,0x1c,0xf3,0xba,0xc1,0x04,0x9e,0x0d,0x4e,0xc6,0x3a,0x1a,0x0b,0x7b,0x59,0xfd,0x8a,0x36,0xee,0x37,0x54,0x16,0x56,0xaa,},{0x60,0x72,0x25,0x6d,0x65,0x74,0xa2,0x93,0xbd,0x7c,0x22,0x1c,0x55,0x1c,0x32,0xcf,0x2f,0x77,0x15,0xe1,0x9e,0x43,0x3a,0x49,0xd9,0xb8,0xb0,0x49,0x0e,0x56,0xef,0x62,},{0xb1,0xb4,0x4a,0x14,0x2a,0x7c,0x4c,0x3d,0x0b,0xf4,0x66,0x1e,0xda,0xc5,0xb7,0x67,0x00,0x57,0x26,0xc1,0x4a,0x27,0x69,0xb7,0xc2,0x14,0xfb,0x58,0x73,0x7e,0xc2,0xe4,0xbc,0x51,0xc3,0xa1,0x95,0xd2,0xba,0x1b,0x74,0xa5,0x4e,0xff,0x4c,0x33,0xa9,0x0f,0x41,0xcc,0xde,0xfa,0x9e,0x93,0x65,0xfd,0xe8,0xdd,0x85,0x9f,0xd3,0x97,0x8c,0x0a,},\"\\xdb\\xfe\\x30\\x7f\\x2a\\xae\\x9e\\x07\\xec\\x7c\\x4b\\x68\\x21\\x06\\xd2\\xc9\\x36\\x7b\\x0c\\x4a\\xaa\\x58\\xae\\x80\\x4e\\x0a\\x39\\x04\\x75\\x4e\\x6c\\xf8\\xfe\\xe7\\x3c\\xf9\\xe2\\xd4\\x5d\\x02\\x89\\xe5\\x07\\x82\\x93\\xdf\\xc4\\x69\\xd4\\x6e\\xa6\\x70\\x26\\xc5\\xaa\\x69\\x2d\\x2f\\x2c\\x9f\\xb4\\xec\\x57\\xcd\\xab\\x4c\\x04\\x3f\\xf9\\xae\\x61\\x85\\xf2\\x7a\\x70\\x44\\x54\\xe5\\xf5\\x39\\x50\\xaa\\xbd\\x25\\xc9\\x91\\x04\\x74\\xd4\\x5a\\xf8\\x83\\x68\\x62\\x72\\x3e\\x0e\\x6a\\x27\\x82\\x3d\\x82\\xbc\\xbb\\x68\\xa9\\x60\\x52\\x42\\x2a\\x18\\x19\\x51\\x2e\\x3b\\x43\\x40\\x8c\\xf4\\x89\\x57\\xad\\x6a\\xe2\\x35\\xb7\\x23\\x3d\\xf1\\x82\\x84\\x74\\x91\\x53\\xdf\\xa5\\x7d\\xe3\\x50\\x74\\xa3\\x0e\\xdf\\xab\\x8a\\x56\\xdf\\x28\\xab\\x2e\\x29\\x40\\x30\\x6c\\x22\\x1a\\xa5\\x54\\x90\\xcc\\x66\\x4e\\x14\\x68\\x3f\\x30\\xee\\x61\\x5e\\x2d\\x93\\xfd\\xf9\\x71\\xf5\\x96\\x66\\x34\\x65\\x84\\x3b\\x3a\\xdd\\x63\\x92\\xba\\x33\\x90\\x31\\x1e\\xf8\\xdc\\x59\\xf2\\x51\\x44\\x5d\\x66\\x9e\\x10\\xa0\\x06\\x19\\x91\\xe1\\x13\\x56\\x19\\x23\\xaa\\x21\\x52\\x44\\x46\\x3d\\x82\\x64\\x19\\x9a\\xc5\\x88\\x92\\x4e\\x23\\x1e\\x84\\x19\\xd8\\x68\\x5f\\x33\\x8e\\x59\\x9b\\x5f\\x40\\xbf\\x9b\\xd1\\xae\\xce\\x77\\x25\\x35\\xbb\\xbc\\xb8\\xf6\\x88\\x1c\\x2e\\x80\\x04\\x91\\xab\\x3b\\x57\\xb4\\x4b\\x8a\\xe4\\x3a\\xeb\\x5c\\x4a\\xe5\\xe7\\xed\\xeb\\x22\\x8f\\xed\\xc9\\xf6\\xb9\\xca\\xde\\xa1\\x76\\xe1\\x34\\x93\\x6d\\xed\\x60\\xaf\\x1c\\x22\\x87\\x34\\xfb\\x00\\x57\\x0f\\x23\\x74\\xbb\\xbf\\xa1\\xbb\\x17\\x07\\x85\\x80\\x5d\\x6b\\x6c\\x70\\x1e\\x82\\x09\\x52\\xea\\xe4\\x5b\\x8c\\x23\\x66\\x11\\x3a\\x1d\\xfb\\x2e\\x35\\x85\\x2a\\xf4\\x19\\xb7\\x54\\xf9\\xcf\\x7a\\x08\\x1c\\x3d\\xde\\x6c\\x80\\x53\\xbf\\x1c\\xe0\\xc8\\x53\\x39\\xd5\\x69\\x9c\\x42\\x24\\x76\\xfc\\x21\\xf2\\x6c\\xe7\\x5d\\x2a\\x7f\\xed\\x09\\xfc\\x0f\\x41\\x75\\x78\\x98\\x47\\xd8\\x76\\xc5\\x1a\\xa4\\xe0\\xbf\\x7c\\xe8\\x42\\xb8\\x30\\x8d\\xc7\\xa2\\x8c\\x82\\x39\\x52\\x07\\x14\\xdc\\x23\\x31\\x36\\xe0\\x9f\\x55\\x7c\\x7e\\xf3\\xe0\\xf8\\x3b\\xad\\x63\\xcb\\x28\\xac\\x61\\x6d\\x39\\x28\\xf3\\x83\\x7d\\xce\\x1d\\xd5\\x8a\\xcb\\x8d\\xdb\\xc7\\x2e\\x82\\x2d\\xee\\xe4\\x5f\\x00\\x77\\x6a\\xcc\\x88\\xe0\\x0c\\xd3\\xa9\\xdb\\x48\\x6d\\x92\\xd5\\x35\\xa5\\x7a\\x0f\\xdc\\x4f\\x90\\x3b\\x62\\xe5\\x17\\x22\\x1c\\x30\\x8c\\xba\\x2e\\x30\\xff\\xe7\\xb9\\x19\\x37\\xa9\\x94\\x17\\x72\\x1f\\x56\\xfe\\x6d\\xf4\\x48\\x40\\xe9\\xe4\\x11\\x36\\x92\\x9c\\x0c\\xa3\\xdc\\x28\\xdd\\xf2\\x37\\x9e\\x4d\\xcf\\xde\\x83\\x72\\x3e\\x2d\\x4c\\x9e\\x23\\x29\\x9c\\x05\\x6a\\xfb\\x31\\xd3\\xe7\\x0d\\x08\\x5d\\x0a\\x31\\x2c\\x5c\\xd5\\x70\\xb6\\x99\\xde\\xa8\\x71\\x74\\x58\\x53\\x13\\x48\\xc9\\x6f\\x6e\\xb5\\x2d\\x7e\\xe6\\x1d\\x56\\x60\\xf6\\x5e\\x90\\x9a\\x14\\xce\\x10\\x33\\xdc\\x85\\x3f\\x2f\\x25\\xd0\\x9c\\xf4\\xe4\\x0d\\x07\\xef\\xf7\\x2e\\x15\\xa3\\x90\\x56\\x4a\\x2b\\xe3\\xc0\\x42\\xd8\\x9a\\x68\\x66\\x0a\\x97\\xff\\xac\\xec\\x49\\x67\\xa4\\xb6\\x18\\x71\\x2d\\x70\\x60\\x75\\x65\\x20\\xc2\\x9e\\xe8\\xd9\\x22\\x0a\\xd8\\x61\\x5c\\x4f\\xcf\\x39\\x69\\xbd\\x3b\\x2e\\x09\\x47\\xe1\\xf0\\xbe\\x7e\\x2d\\x80\\xe0\\xa6\\x14\\x80\\xc3\\x16\\x6d\\xb5\\x58\\x22\\x18\\xbb\\x0a\\x8b\\xe9\\x84\\x8e\\xfd\\x41\\xb6\\xce\\x0c\\xd7\\x95\\xc4\\x86\\xab\\xb6\\x72\\x10\\xbe\\xb6\\x0c\\xd0\\x78\\xb4\\x6a\\xeb\\x7f\\x4f\\x48\\x50\\x31\\x90\\x2b\\xcd\\x71\\x31\\xe0\\x0b\\x70\\x35\\xaa\\x2d\\x43\\xfe\\xe0\\x63\\xf7\\xf3\\x0b\\xd5\\x70\\xda\\x1d\\xbb\\x65\\xc0\\xca\\x92\\xa4\\x81\\x26\\x32\\xe4\\x32\\x77\\x85\\x53\\xe3\\x5e\\x85\\x6c\\xaa\\x82\\x18\\x22\\x1f\\xd6\\x31\\x6a\\xb0\\x86\\x91\\x73\\xb3\\x84\\x09\\xbc\\xef\\xe6\\xd2\\xdb\\x92\\x10\\xf9\\x02\\x41\\x73\\xb6\\x6d\\xbb\\x92\\x67\\x7c\\xbc\\x71\\xc8\\xa1\\xcd\\x58\\x3f\\xa6\\xf3\\x54\\xd3\\xc9\\x3f\\xa8\\xb1\\x6c\\x71\\x37\\x4f\\x25\\xa0\\x0c\\x33\\x2f\\x85\\xa8\\xbe\\xfd\\x54\\x03\\x88\\xfb\\x50\\xdb\\x9f\\x5d\\x96\\xe4\\xe4\\xe6\\x98\\x83\\x3c\\xe3\\xd6\\x3c\\x10\\xb8\\xee\\xc7\\x0a\\x24\\x3b\\x90\\x15\\xdb\\x45\\x94\\x31\\xb6\\x2f\\x56\\x68\\xbb\\xa6\\x0f\\x07\\x04\\xf6\\xbd\\xfe\\x95\\x46\\xea\\x47\\x5c\\xef\\x2e\\xbc\\xcb\\xa4\\xb7\\x68\\x08\\x48\\xe8\\x2b\\xef\\xf5\\x85\\x4e\\x49\\xf6\\x5b\\xb7\\x73\\xa4\\x92\\x2e\\x90\\xf9\\xb8\\xaf\\xc7\\xcf\\x81\\x87\\x30\\x58\\x8e\\xd5\\xaa\\x7b\\x39\\x98\\x26\\xaa\\xdd\\x54\\x37\\x2f\\xcb\\x76\\x14\\x58\\xb6\\x4d\\xe6\\x68\\x57\\xf4\\xad\\xac\\xd4\\xc3\\x29\\x00\\xcb\\x77\\x13\\x6a\\x53\\x5d\\x7b\\xbb\\xb5\\x54\\x59\\x7a\\xec\\xf3\\x9f\\xf6\\x98\\xb4\\x5e\\x6a\\x21\\x8d\\xf1\\xd2\\xab\\xe6\\x15\\xeb\\x8d\\x9e\\x18\\x24\\xc0\\xbe\\xcc\\xe9\\x07\\x67\\x89\\x9e\\xbf\\xd2\\xc7\\x30\\x14\\x4b\\x32\\xc7\\x46\\x04\\xc0\\xe5\\x3e\\x25\\x05\\xbb\\x15\\xd2\\x80\\x07\\xa8\\x7b\\x99\\x31\\xd6\\xee\\xc0\\xa6\\xcb\\x5b\\x0f\\x96\\xd3\\x19\\x4b\\x24\\x23\"},\n{{0xf8,0x20,0xe6,0xf2,0x4a,0x84,0x18,0xb6,0xac,0xda,0x16,0x5f,0x29,0xa3,0x60,0xf7,0x67,0xcd,0xed,0xde,0x8f,0x64,0xd7,0x68,0xb9,0x5f,0xc2,0xa5,0xf3,0xf4,0x04,0xe7,},{0x79,0xc4,0xb2,0x63,0xb2,0xe5,0x8f,0x67,0x86,0x28,0xd4,0xea,0x82,0xb1,0x75,0xac,0xa2,0x30,0xb9,0xa2,0x02,0x85,0xc8,0x28,0xf9,0x4e,0x1f,0xfd,0x63,0xd7,0x5b,0x23,},{0xf9,0xfd,0x72,0xf3,0x21,0xca,0x21,0x33,0xbf,0x85,0x85,0x90,0x8d,0x9c,0xa7,0xb8,0xe3,0x36,0x22,0x7e,0x3f,0xfb,0x37,0x49,0xa1,0xfb,0xe8,0xc9,0xb1,0xe5,0xd5,0x0e,0xf0,0x1f,0x9d,0xb5,0xf0,0xd2,0xa7,0xc7,0xc1,0x39,0x9b,0x97,0xc9,0x04,0x4e,0x1b,0xc1,0xad,0xc3,0x2b,0x8b,0xea,0x46,0xda,0xd7,0xb8,0x10,0x26,0x46,0x96,0x03,0x03,},\"\\xab\\x6b\\xd4\\x5b\\xb0\\x6d\\xfb\\x90\\x69\\x11\\x8f\\xf9\\x98\\xf3\\xbd\\x39\\x3e\\xa8\\xe9\\x44\\x97\\x9e\\x89\\xe0\\x49\\xf2\\x50\\x5c\\xd8\\x93\\x1b\\x93\\x08\\x6b\\x7e\\x9d\\x8e\\xe7\\x64\\xe9\\xb4\\x47\\xea\\x4e\\xa1\\x21\\x38\\xbb\\x45\\x27\\x5a\\x21\\xa1\\x98\\x43\\xf7\\x5d\\xc5\\x42\\x1d\\x61\\xff\\xd8\\x61\\x83\\x8e\\x58\\x33\\x82\\x5d\\x67\\x16\\x2f\\x32\\x59\\xc2\\x64\\x47\\xbe\\x51\\xdc\\x18\\x02\\xef\\x5a\\x04\\xba\\x73\\xb7\\x83\\x93\\x57\\x06\\xab\\xb4\\x2c\\x51\\x3b\\x65\\xf2\\xbb\\xc4\\x4f\\x83\\xda\\x10\\x61\\x24\\x2f\\x2d\\x5e\\x51\\x98\\xf3\\x8c\\x10\\x71\\x7a\\x86\\xa3\\xa1\\x97\\xe7\\xcd\\x90\\x34\\xf6\\x36\\x11\\x44\\x99\\x03\\x72\\x77\\xac\\xb4\\x72\\x2c\\x06\\xa9\\x1c\\xb2\\xf6\\x5e\\x21\\xeb\\x8d\\x22\\xd3\\x6a\\xd7\\x3b\\x42\\x65\\xf7\\xa7\\x94\\x7e\\x00\\xe7\\x22\\xbd\\xa6\\x70\\x43\\xcd\\x12\\x81\\xbc\\xd8\\x7e\\x76\\x3f\\xc9\\x7b\\x54\\xc8\\xf8\\x68\\x36\\xcd\\xbf\\x08\\xc9\\xa1\\xf7\\x00\\xf4\\xea\\xed\\x9e\\xa5\\x9a\\x6f\\xc1\\xbc\\x0d\\xf8\\xc9\\xec\\x1f\\xc2\\x97\\x7c\\xad\\x60\\xf9\\x78\\xab\\xc0\\xc8\\x38\\x1a\\xa9\\xfb\\x06\\x0e\\x3f\\x99\\x37\\x8a\\x51\\xb2\\xd9\\xaf\\xbe\\xf3\\x58\\xd5\\x51\\x62\\xa3\\x89\\x22\\xeb\\xb8\\x7d\\x2a\\x3e\\x0f\\x0f\\x40\\x00\\xb1\\xc3\\x9b\\x15\\x02\\xe9\\x59\\x45\\xe8\\xac\\x9f\\x4a\\x3e\\xa7\\xc9\\xdd\\xb5\\x81\\xa5\\xec\\x06\\xc0\\x0b\\xa8\\x7a\\x73\\x70\\x84\\xb3\\x84\\xfa\\xba\\x09\\xc8\\x48\\x71\\xdd\\xd6\\x7d\\xc1\\xbe\\xbb\\x2f\\x7f\\xbd\\x94\\xa5\\x59\\x7d\\x01\\x9f\\xe6\\x29\\xe5\\xbf\\x12\\xbe\\xa2\\xe3\\x3c\\xa8\\x4c\\x68\\x0d\\xc5\\xa3\\x98\\x9b\\xbf\\x3a\\xf9\\xee\\xec\\xe8\\xab\\x8f\\xc8\\x61\\xe3\\xb8\\xbf\\xc1\\xe6\\x7e\\x2a\\xee\\x32\\x6b\\x37\\xfb\\x9b\\x51\\xcf\\xa0\\xb5\\xf5\\xfc\\x16\\x00\\x69\\xb4\\x50\\xb7\\x04\\xe0\\xfa\\xb7\\xfb\\x6c\\x5a\\xb3\\xc4\\x0b\\x8f\\x0b\\x3d\\x09\\x30\\xb9\\x11\\x2d\\x64\\xb9\\xda\\xca\\xb4\\xdd\\x87\\x5f\\x29\\xd8\\xc5\\x8c\\x5d\\x20\\x53\\xad\\x91\\x48\\xff\\xde\\x22\\xd9\\x0b\\xc0\\xd5\\x0f\\x5d\\xec\\xa6\\x8d\\x3e\\xa2\\x5c\\x5b\\x4c\\x76\\x88\\x87\\x1c\\x0c\\x77\\xdb\\xce\\xea\\xcb\\xd0\\xa4\\x22\\x9f\\x49\\x70\\xec\\x87\\xb3\\x44\\x99\\xe2\\x78\\x30\\x3c\\x06\\x69\\x4c\\x30\\xac\\x68\\x52\\x4d\\x11\\xb1\\x72\\x79\\x4b\\x48\\x12\\x73\\xa5\\xda\\xc4\\x61\\x22\\xd2\\x47\\x20\\x95\\xa5\\x63\\xa4\\x35\\xd1\\x85\\xd5\\xe9\\x1d\\xa7\\x26\\xe7\\x45\\x92\\x99\\x9c\\xda\\xc6\\x88\\xa3\\x3f\\x38\\xf7\\xc0\\x35\\x58\\x8f\\x62\\x5d\\xc6\\xac\\x73\\xd0\\x04\\x7a\\xb3\\xd6\\xd1\\x2f\\x1a\\xe3\\x3d\\x8b\\x62\\xd6\\xd6\\xc6\\xca\\xcf\\xf0\\xbd\\xd8\\x94\\xb5\\x7e\\x31\\x89\\x12\\xac\\x0c\\xf4\\xa5\\x34\\x76\\x2b\\x2f\\x6d\\x26\\x3c\\x93\\x58\\x04\\x42\\x3e\\xd8\\x68\\xcf\\x8c\\xfb\\xb8\\xbe\\x8f\\x6d\\x8a\\x71\\x4a\\x26\\x8a\\x39\\x0e\\xdc\\x2d\\xd5\\x09\\xd2\\xdc\\x96\\x85\\x1d\\x1b\\xd4\\x32\\x49\\xbd\\x0f\\x69\\xb0\\xc4\\xcb\\x2f\\xf4\\x08\\x0d\\x1f\\xd5\\x62\\x2b\\xc2\\x38\\xdd\\xa6\\xe9\\x30\\x02\\x5d\\x8a\\x2b\\x12\\xb9\\x72\\xf9\\xeb\\xa1\\x74\\x21\\xd4\\xce\\xa6\\x42\\xf4\\x0a\\xd9\\xea\\x85\\x47\\xae\\x59\\x49\\x8c\\x3a\\xd1\\xb9\\xa0\\xc3\\x4e\\xd8\\xc0\\x1a\\xae\\x3b\\xd2\\x1a\\xc1\\x77\\x43\\xb5\\x77\\xf9\\x51\\x5c\\xfb\\xdd\\xe2\\x70\\x4d\\xc5\\x7e\\x80\\xf1\\x25\\x32\\x3d\\x55\\x10\\x0b\\x9f\\x69\\x79\\x27\\xd4\\x31\\xdf\\xe7\\x36\\x31\\xb5\\x8e\\x52\\xaa\\x6a\\xeb\\x04\\x78\\xbf\\x45\\x95\\x52\\x43\\x86\\x89\\xfb\\xeb\\x9c\\x60\\xd8\\x7a\\xae\\x09\\x95\\x43\\x62\\xcd\\x02\\xa2\\xb0\\xb4\\x79\\xef\\xd3\\x8f\\x17\\x82\\x1a\\xf3\\x9b\\x21\\x92\\x6e\\xe0\\x2f\\x7d\\x97\\x2a\\xd0\\xf5\\x4e\\xa6\\x57\\x2c\\xc3\\xeb\\xd0\\x20\\xb1\\xee\\x26\\x88\\x25\\x33\\xbd\\x19\\x11\\x43\\x23\\x81\\x5f\\x67\\x2e\\xc8\\xc9\\x05\\x68\\x73\\x0a\\x58\\xe4\\xe1\\xe3\\x5f\\x68\\x21\\x21\\x9a\\x32\\xb8\\xa6\\xc5\\x2c\\xed\\x6f\\x95\\x73\\xd9\\xf3\\xbe\\xb2\\x85\\x13\\xba\\x62\\xfb\\x20\\x1f\\x7f\\xd4\\x1b\\xb1\\x0c\\xa3\\x4b\\xb1\\xc7\\x0f\\x2f\\xd7\\xbb\\x92\\x99\\xa7\\xc5\\xf7\\xf2\\xe0\\xfa\\x1d\\x1a\\xf0\\xe9\\xae\\xf5\\xed\\xe7\\xc1\\x69\\x50\\xe8\\x60\\xec\\xd6\\x1f\\x18\\x42\\xa1\\xa2\\x2c\\x98\\x31\\xc0\\xc0\\xd4\\xed\\xa8\\x40\\xb0\\x88\\xa5\\x45\\x20\\xc9\\xb1\\x8c\\x76\\xeb\\xa9\\xbe\\xbc\\xd5\\x91\\x38\\x1c\\x18\\x0d\\x7f\\x86\\xa0\\xe5\\x8a\\xdd\\x92\\xb9\\xb0\\xc8\\x07\\x6a\\x7c\\xdc\\xab\\x60\\xde\\xa4\\xc1\\xaf\\xb1\\x8c\\x8b\\x94\\xb1\\xb3\\x92\\xcc\\xfb\\x4d\\xae\\x27\\x11\\xe7\\xd1\\x2d\\x2b\\xc7\\xc7\\x82\\x5f\\x63\\x99\\x2e\\xc3\\x24\\x71\\x63\\xc2\\x83\\xb1\\x07\\x5e\\x32\\x24\\x5f\\x69\\xcf\\x47\\x24\\x0a\\xef\\x0d\\xb4\\x3e\\xfa\\xe8\\x6f\\xc1\\xfd\\x3b\\xb9\\x9c\\xf5\\xb7\\x89\\xf5\\xbc\\xba\\x95\\x04\\x65\\x7d\\x9e\\x62\\x2a\\x4a\\xa1\\x6f\\x01\\xd4\\xd8\\x44\\x41\\x31\\x24\\x44\\x7d\\x6d\\x1a\\x44\\x23\\xe7\\xb5\\x5d\\xb7\\xe6\\xa3\\x1a\\x31\\x9f\\x4b\\xac\\xae\\x43\\x0a\\x33\\xa9\\xbd\\xd4\\xef\\x36\\x80\"},\n{{0x0a,0x05,0x6b,0xe0,0x39,0xfd,0x55,0xda,0xda,0x44,0x1d,0x03,0x73,0x61,0x27,0x3f,0x20,0x6e,0x00,0x0a,0x74,0xa0,0x5c,0x51,0xc0,0xcb,0xb6,0x27,0x43,0xf1,0xf3,0x40,},{0x73,0x14,0x02,0x17,0xa4,0x93,0xa1,0x78,0x66,0xff,0xf5,0x15,0x48,0x32,0x27,0x3d,0xf7,0x9d,0x58,0x11,0x54,0x3c,0x22,0x2a,0x39,0xd0,0x56,0xb8,0xc9,0x70,0xdb,0xfa,},{0xfa,0xb8,0xe5,0xd9,0x3d,0x7d,0x46,0xc6,0x5e,0xe1,0x17,0xc5,0x37,0x5e,0x73,0xc9,0x70,0x5f,0x87,0x54,0x17,0x7f,0xdd,0x46,0xef,0xed,0x47,0x37,0xc2,0x87,0x68,0xcc,0x4b,0x95,0xa9,0xc8,0x4c,0x52,0x9b,0x4b,0x91,0x6b,0x28,0xda,0xbd,0x87,0x41,0x18,0x31,0x44,0xbc,0xdb,0x48,0x3d,0xf9,0x8a,0xf8,0x9d,0x82,0x40,0xcf,0x09,0x46,0x04,},\"\\xa5\\xab\\x14\\x76\\x84\\xe4\\xd4\\xa7\\xbc\\xb5\\xa9\\x6f\\xb3\\x98\\x18\\xe2\\x3f\\x56\\xc2\\xd8\\xa7\\x44\\xe9\\x12\\x3d\\x62\\x08\\x39\\x30\\xab\\x1d\\x0b\\xb5\\x32\\xe6\\x87\\x14\\xfc\\xec\\x7e\\x6c\\x41\\x13\\x4b\\x6b\\x19\\xdd\\xd8\\x67\\xfe\\x63\\x5c\\x9e\\xd6\\x53\\x93\\xee\\x39\\xc5\\xe8\\xfa\\xb4\\x56\\xcb\\x5b\\x32\\x79\\x78\\x83\\xf3\\xcd\\x9a\\x09\\x02\\xb9\\x79\\x63\\x48\\xee\\x66\\xc6\\x91\\xfb\\x4f\\x2b\\xb1\\x47\\x64\\x41\\x06\\x57\\xc7\\x4a\\xb3\\x64\\x56\\x78\\x79\\xb6\\xfa\\x0a\\x6f\\x4d\\xaf\\xd9\\x30\\xd9\\x23\\x4c\\xd7\\x83\\x4f\\xb9\\xd0\\xee\\xdf\\xbb\\x5a\\x39\\x4b\\xf0\\x84\\x6e\\xc6\\x96\\x9c\\x2e\\xf7\\xce\\x39\\xe3\\x85\\x38\\x95\\xff\\x5b\\x4d\\xa3\\x1e\\x54\\x34\\x1b\\x42\\x72\\xe4\\xa2\\x60\\x49\\x18\\x9f\\xf2\\x82\\x41\\xce\\xef\\xfb\\x7d\\x2e\\x1f\\xaf\\x4f\\x77\\x9f\\xa6\\x5c\\xac\\x0f\\x57\\x83\\xc6\\x0a\\xe7\\x7d\\xe3\\x0a\\xd4\\x46\\x5f\\xdb\\x39\\x0d\\x42\\x57\\x1e\\xff\\x4a\\x63\\x13\\x63\\x49\\x93\\x7d\\x6c\\xae\\xef\\xcd\\xae\\x22\\x9e\\x2f\\x28\\xce\\xa8\\xab\\xf3\\xff\\xae\\x3c\\x3e\\xcc\\xd9\\x06\\x70\\xa4\\x21\\x2a\\x2b\\xee\\x1c\\xa6\\xa5\\xb5\\x4f\\x09\\x4f\\xc3\\x23\\x10\\x58\\xf5\\xcb\\x9e\\xce\\xb9\\x99\\x3b\\xe4\\x70\\x27\\xd5\\x1c\\x18\\xde\\xca\\x41\\xcd\\xda\\xf4\\xe8\\xbc\\x56\\xa9\\x9f\\xd2\\x70\\x35\\x5f\\xf4\\x59\\x71\\x95\\x0e\\x34\\x37\\xa1\\x98\\xcc\\xc3\\x25\\x41\\x68\\xdf\\xc1\\x57\\x40\\x80\\x80\\x2e\\xe1\\x01\\xa6\\x17\\xfb\\x60\\x4e\\x86\\x8f\\x8f\\xa8\\xfb\\x30\\xda\\xeb\\x43\\x07\\x4d\\xe1\\x1f\\x24\\x83\\xd9\\x16\\xde\\x56\\x43\\xb7\\xca\\xc2\\x3d\\x93\\x40\\x50\\x8a\\x3f\\xd6\\x21\\xec\\xd2\\x50\\x04\\x35\\x6a\\x53\\x55\\x4a\\xd3\\xad\\x7d\\x5d\\x25\\x81\\x7a\\xd7\\xc9\\xa6\\x10\\x00\\x8c\\x67\\xac\\x16\\xba\\x42\\x11\\xc4\\x2f\\x5d\\xad\\xf8\\x6c\\x2c\\x3a\\xed\\x82\\x5c\\xf2\\xa9\\xb5\\x23\\xbf\\xc0\\x3d\\xd7\\xde\\x40\\x0c\\x67\\x80\\x7e\\x13\\x9e\\xa5\\xdb\\xce\\x4e\\xe1\\xf7\\xd3\\x18\\x88\\x9b\\x01\\xa9\\xf4\\x48\\x03\\xc3\\x22\\xac\\x3b\\x61\\xe2\\x0e\\x63\\x12\\xd0\\xa0\\x3b\\xf9\\x92\\x7f\\xa3\\x3f\\x04\\xed\\x7e\\x20\\x7b\\x16\\xf2\\x65\\x02\\xc2\\x98\\x3a\\x3a\\x96\\x1f\\x22\\x44\\x61\\xfe\\x9b\\x64\\x92\\x3b\\x1d\\x09\\x18\\x94\\x76\\xae\\x8d\\x00\\x1d\\x0e\\xca\\xae\\x4d\\xf6\\x0d\\xb3\\x5f\\x44\\x8b\\xb6\\x12\\xf9\\x65\\x5a\\x5f\\xb1\\x44\\xdf\\x11\\xd8\\x3a\\xa6\\x93\\x68\\x86\\xc3\\x04\\x94\\x9e\\x59\\xaa\\x46\\xdf\\x65\\xc2\\x2c\\xe7\\xbf\\x28\\x9b\\x3c\\x77\\xc2\\x5d\\x89\\x6b\\xe6\\xd5\\x1d\\xee\\x10\\x74\\x82\\x61\\x68\\x8c\\x8b\\x07\\x1c\\x85\\x6f\\x99\\x62\\xc6\\x67\\x75\\xdd\\xf1\\x60\\x83\\xda\\xe0\\x65\\x87\\xe3\\x2a\\x63\\x61\\x19\\x9d\\x72\\x09\\x7e\\x38\\x3a\\xd7\\x43\\x94\\x91\\xb5\\xa5\\x63\\xa3\\xe6\\xd5\\x8d\\xa3\\xd5\\xab\\xb1\\xde\\x84\\x89\\x0a\\x36\\xb4\\x21\\xce\\x03\\xd4\\x84\\xdf\\xd6\\x00\\x39\\x63\\x8d\\x46\\xed\\xfb\\x60\\x65\\x9e\\x3a\\x25\\xac\\x6e\\x9a\\x93\\x5a\\xd6\\xda\\xd5\\x0f\\x92\\x7b\\xcc\\x2f\\xf9\\x9f\\x99\\x24\\xa5\\xb7\\x99\\x5d\\xc2\\x3c\\x8f\\x30\\x1c\\xcc\\x77\\x69\\xf7\\x1c\\x18\\x26\\x09\\x04\\xa3\\xdc\\xfb\\x81\\x7d\\x2d\\x80\\x5c\\xb1\\xf1\\x96\\xbe\\x8b\\x6e\\xcf\\x35\\x2b\\xc2\\x96\\xbc\\x3f\\x76\\xea\\x91\\x35\\x3f\\x8c\\xf3\\x5b\\xcd\\x2b\\x57\\xeb\\x59\\x42\\x77\\x3d\\x68\\x34\\xac\\x50\\xee\\xad\\xc7\\xe6\\x64\\x61\\xd1\\xda\\x09\\x8c\\xce\\xc7\\x5f\\xf7\\x20\\x52\\x15\\xf5\\x24\\x59\\xd9\\x76\\x20\\xf9\\xf0\\x28\\x9e\\x93\\x91\\x1d\\xb3\\x9b\\x21\\xdf\\x81\\x8f\\xdf\\x0b\\xed\\x45\\x50\\x92\\x44\\x63\\x3d\\xf0\\x1c\\xdd\\xdb\\x4b\\x75\\x97\\x2f\\xa7\\xea\\x6f\\x73\\x28\\x1c\\xbd\\xbb\\xd1\\xbc\\xb0\\x0c\\x3b\\xc1\\xb1\\x72\\x8e\\xea\\xe0\\xbb\\xa1\\x72\\xb1\\x31\\xf5\\xd3\\x08\\x90\\xa3\\x41\\xe6\\xb7\\x2f\\x7e\\x89\\xdd\\x4b\\x6d\\xb3\\xe7\\x9b\\x69\\x27\\x58\\x6c\\xf2\\xc8\\xac\\x38\\xdd\\x14\\xf3\\x74\\xd7\\xf5\\xbb\\xa9\\xf4\\x35\\x3d\\xef\\x10\\xdd\\xc9\\x4d\\x3d\\x11\\x18\\xc5\\x69\\x9e\\x38\\xb6\\xb5\\x04\\x91\\x8e\\x58\\x9e\\xfe\\x3f\\x7e\\x97\\x3f\\xb4\\x0e\\x2e\\xbd\\x05\\x7d\\xe1\\x38\\x5e\\x39\\xd6\\x99\\xa8\\xf6\\x83\\xb9\\x62\\xfa\\xe4\\xf3\\x90\\x28\\x81\\xf1\\xaf\\xbe\\xd7\\xc7\\x83\\x82\\x35\\x58\\xc3\\x6d\\x68\\xc6\\x87\\x5d\\x16\\x6f\\xa2\\x43\\xeb\\x2a\\xe1\\x4f\\x7e\\x63\\x15\\xa6\\xd2\\xab\\x4e\\x79\\xea\\x8e\\x16\\xe6\\x9d\\x30\\xed\\xc7\\x08\\xf1\\xe7\\xaf\\x7a\\xda\\xfe\\xdc\\xd3\\x16\\x88\\x98\\xb3\\x31\\x87\\x81\\x78\\xc4\\xba\\x88\\x33\\xd2\\x0b\\x3c\\xac\\x9d\\x32\\xb8\\x88\\x8c\\xc6\\x78\\x32\\x06\\x39\\x74\\x70\\xa2\\xe7\\xcc\\x4c\\x98\\x09\\xff\\x79\\xce\\xac\\x9d\\xc2\\x4c\\xa1\\x43\\x8c\\x91\\x9c\\x8a\\x41\\x5e\\x82\\xf0\\x90\\x2b\\x4d\\x9c\\xf4\\xcc\\xd5\\x76\\x96\\x8d\\x5b\\xee\\x81\\xc5\\xf1\\x9c\\x7d\\x57\\xb9\\xba\\xda\\x8e\\xab\\x47\\x56\\xea\\x27\\x0d\\xd2\\x61\\x29\\xe6\\x12\\x2e\\xe2\\xd6\\x15\\x24\\x2b\\xc7\\xfa\\xbf\\xf4\\xf8\\x31\\x2e\\x68\\x6c\\x8f\"},\n{{0x22,0x05,0x24,0x86,0x0c,0xb8,0x9a,0xb2,0x95,0xbd,0x88,0x4f,0x98,0x8a,0x57,0x91,0x18,0x68,0x69,0x3d,0x6b,0x10,0x5a,0x80,0xb2,0x30,0xf2,0x1e,0x57,0x80,0x5a,0x7d,},{0x4a,0xb3,0x2b,0xc1,0x56,0x6a,0x76,0x77,0xe7,0x99,0x73,0x4d,0xc8,0x41,0x81,0xfb,0xb6,0x54,0xb8,0x13,0x37,0x91,0x80,0xf1,0xdd,0x35,0xae,0xf2,0xd3,0x24,0xc1,0x2c,},{0xdb,0x1c,0xc0,0xc5,0xdb,0x77,0x3e,0xc5,0x16,0x89,0xbe,0x28,0x84,0x2f,0xa6,0x79,0x1a,0x7d,0x75,0xe2,0x9c,0x22,0x8a,0xe9,0x59,0x3a,0x58,0x0e,0x08,0x75,0xb1,0x67,0x0f,0x09,0xb0,0x34,0x42,0x92,0x9a,0x18,0xf1,0xe9,0x41,0x4e,0xa3,0x43,0x15,0xff,0x09,0xd9,0x1d,0x92,0x2e,0xe4,0x7f,0x10,0xf7,0x1d,0xa4,0xab,0x13,0xb7,0xd9,0x01,},\"\\x02\\x4a\\x54\\xac\\x5e\\x01\\x63\\xb3\\xa4\\xfd\\xd0\\x2f\\x59\\x36\\x88\\x8a\\xe2\\xf9\\xb7\\x4a\\x64\\x14\\xb5\\x3c\\x63\\x81\\x17\\x3b\\x09\\x5a\\x4d\\xda\\xcf\\xc3\\xa6\\x9f\\x19\\x16\\x7d\\x0f\\x1a\\xe0\\xc1\\x20\\xbb\\xa7\\xe9\\xfc\\xb7\\xcc\\xfc\\x79\\x6d\\x89\\xea\\x46\\xef\\x80\\x58\\x86\\x6e\\xf6\\xda\\x7d\\x01\\xa6\\xa1\\x42\\xea\\x69\\xd7\\x20\\xc4\\xf8\\x05\\xac\\x54\\x05\\xa8\\x01\\x2c\\x3c\\x2a\\x82\\x63\\xb5\\x37\\x2d\\x59\\xbf\\x7f\\x40\\x99\\x29\\x90\\x13\\xd2\\x62\\x59\\xdf\\xd5\\x19\\x3e\\xce\\x56\\x17\\x97\\x77\\xbe\\x51\\xb8\\x6b\\xd1\\xce\\x5f\\x1f\\xc9\\x15\\x6f\\x2b\\x3a\\x32\\xc0\\x9d\\x86\\xbc\\x61\\x32\\xde\\x57\\x61\\x02\\xe2\\xf0\\x3c\\x71\\x6d\\xb5\\x36\\x6c\\xcb\\xe7\\x42\\xae\\xe3\\x55\\x2a\\xc3\\xb3\\x9d\\x0e\\xc7\\xd4\\xe4\\xe9\\x62\\x6b\\xf8\\xec\\xe0\\x31\\xd6\\x78\\xd3\\x48\\x09\\x05\\xc0\\xe3\\x38\\xfb\\x7c\\xc0\\x26\\xe3\\xe7\\x9c\\xf2\\xc2\\x78\\x1a\\xc2\\xa5\\xa4\\x0d\\xf4\\x28\\x4e\\x23\\x5a\\x03\\x89\\xe9\\x28\\xfc\\x63\\x55\\x7d\\xc6\\xf1\\x99\\xfc\\xec\\x5f\\x36\\x1e\\xa2\\x47\\x59\\xfa\\x7c\\x5f\\x71\\x97\\x8c\\x0b\\xa2\\x45\\xe4\\xb0\\x3a\\xe4\\x35\\x94\\x1c\\x86\\xc8\\x1a\\x51\\x43\\x0c\\x2d\\xc9\\x92\\x7e\\x3b\\x0f\\x4e\\xc4\\xeb\\xa7\\xc2\\x74\\x5b\\x49\\x39\\x87\\x15\\x4d\\x7d\\xa8\\x5b\\x67\\xde\\x21\\xc5\\x98\\x40\\x7f\\xb2\\xa7\\x60\\x80\\x4a\\xd0\\x5b\\xfd\\xfa\\x45\\xa6\\x13\\x22\\x4b\\x22\\xa0\\x85\\x88\\xcc\\xea\\x3c\\xbd\\xf4\\x7a\\x19\\x8b\\xeb\\xf8\\xcf\\xed\\x86\\x49\\xd6\\xd5\\xf3\\xfa\\x50\\x13\\x76\\xbd\\xfb\\xa4\\x00\\x3d\\xac\\x22\\x37\\xdc\\xac\\xe5\\x31\\x5b\\x7f\\xef\\xb8\\x79\\xa8\\x9a\\x85\\xbc\\xe6\\xda\\x52\\x6f\\xc3\\x60\\xcb\\xb4\\xfd\\x55\\x4e\\xf0\\x13\\xf3\\x3b\\x73\\x84\\xcd\\x2b\\x22\\xa8\\x85\\x77\\xf3\\xa2\\xd3\\x66\\x42\\x2a\\xae\\x46\\x41\\x7b\\xa9\\x16\\xe1\\x64\\x6e\\x24\\x40\\x4a\\x88\\xb5\\xd5\\x3f\\xf1\\xae\\xd2\\xa4\\x7b\\xaf\\x81\\xfc\\xb4\\x28\\x63\\x97\\x99\\x13\\x94\\xb2\\xec\\xc3\\x96\\x67\\xac\\x46\\xc2\\xbd\\xb6\\xd0\\x23\\xb3\\x3d\\xb0\\x13\\x45\\x7c\\x40\\x05\\xd8\\x39\\x01\\x5d\\x88\\x51\\xf0\\x28\\xac\\x33\\x4f\\xb2\\x4b\\xba\\xd2\\x90\\x2a\\x4d\\x63\\xae\\x68\\xe0\\xec\\xa7\\xea\\xea\\x1e\\x85\\x65\\x29\\x64\\x7b\\xaf\\x14\\x12\\x21\\x37\\x54\\xed\\x50\\xaf\\x3f\\x43\\x6e\\x9b\\xaf\\xc1\\x60\\x16\\x39\\xb3\\x9d\\x3e\\x52\\xa9\\x3a\\x89\\x8f\\xb6\\x01\\x9f\\xd5\\xed\\x6e\\x7d\\xfc\\x05\\x0e\\x7c\\xe5\\xf3\\xd3\\x5c\\xeb\\x50\\x67\\x02\\x1c\\x0f\\xbd\\xc7\\x08\\xd3\\xf2\\x6b\\xd6\\x05\\x68\\xd1\\xed\\x2b\\x61\\x2b\\x69\\x62\\x35\\xd5\\x33\\x33\\x18\\xf9\\xa6\\xc9\\x87\\x23\\x5a\\x7a\\x07\\xf8\\xc6\\xa9\\x35\\x4f\\xb8\\xe7\\x34\\x76\\x30\\x65\\xaf\\xcd\\x4d\\x93\\x77\\x64\\xa4\\xf0\\x37\\xcc\\x7e\\x7e\\x2b\\x93\\x21\\x7f\\x16\\x41\\x68\\x4f\\xa8\\x1b\\x7f\\xf7\\x98\\x6a\\x28\\xb3\\x8e\\x95\\xb3\\x32\\xe7\\x46\\x49\\xe8\\x3d\\x0d\\xed\\x79\\x5c\\x57\\xf2\\x4c\\xf2\\x76\\xe0\\x14\\x39\\x01\\xba\\xfe\\xf0\\xf1\\x69\\x3f\\xe7\\xcf\\x10\\x90\\x4f\\xb0\\xd8\\x80\\xd7\\x2e\\x44\\x71\\x6a\\x70\\x69\\xda\\xaa\\xe7\\x42\\xcf\\x0f\\xf3\\xed\\x92\\xf5\\xf7\\xd1\\xe1\\x0e\\x04\\x9d\\x8d\\xf0\\x43\\x63\\x1e\\xd0\\xed\\x4c\\x4a\\xc4\\x02\\x2d\\x84\\x03\\xcb\\x04\\x21\\xb4\\x54\\xcb\\xfb\\x6f\\x48\\xa3\\x0e\\x9e\\xe1\\x60\\x9a\\xd7\\xb6\\x82\\x11\\x97\\x7a\\xcb\\x33\\xb9\\xc1\\xa1\\xbe\\x73\\x58\\x14\\xc5\\x8f\\x66\\xdb\\x5f\\x0b\\x8a\\xc7\\x73\\xb1\\xd5\\x8d\\x4e\\x6b\\xc4\\x5d\\xfd\\x48\\xa2\\x94\\xbb\\xd2\\x5e\\x92\\x67\\x1f\\x56\\xf3\\x02\\xf2\\x9b\\x50\\xd8\\x04\\x31\\xc8\\xf2\\xea\\x33\\x99\\x62\\x57\\xb2\\x08\\xe0\\x57\\xea\\x76\\x72\\xcc\\x2d\\x1c\\xd4\\x20\\x4b\\x85\\xb2\\xab\\x50\\x90\\x27\\x13\\x13\\x59\\xae\\xb4\\x2e\\x3e\\xcc\\xdb\\xae\\xcf\\xe2\\xcd\\x3e\\x5a\\x33\\x13\\x26\\x6e\\x76\\x11\\x94\\xff\\x69\\xca\\xe9\\xe3\\x7e\\x51\\xcc\\x0a\\x54\\xf0\\x86\\xdd\\xe1\\x3c\\xb3\\x31\\x18\\xe3\\x4f\\xe3\\x3c\\x74\\xd7\\x35\\x58\\x27\\x52\\xd6\\x8d\\x21\\xc7\\x9e\\x5c\\x3a\\xae\\xa9\\x4b\\xa1\\x07\\xcb\\x7e\\xe8\\xa7\\x0a\\x3f\\x9a\\x01\\xe9\\x80\\x8c\\x0a\\xeb\\xa6\\x66\\x53\\x15\\xb4\\x56\\x25\\x84\\x0a\\x03\\x3a\\x6e\\x2a\\x87\\x54\\x95\\x05\\x79\\x42\\xed\\x9b\\xb2\\xce\\x6e\\x4e\\xe6\\x0b\\xed\\x47\\xcd\\x9d\\x58\\x4b\\xc2\\x45\\x24\\x39\\x7a\\x10\\x94\\x98\\xee\\x2a\\x97\\x3a\\xad\\x6a\\x29\\xb7\\x0a\\x1c\\xfb\\xfe\\x9a\\xa5\\xc7\\xcb\\x9f\\x35\\xf0\\xfa\\x00\\x22\\x7f\\x43\\x98\\x8d\\x07\\x61\\x9b\\x6f\\xb2\\xf6\\xd3\\xbe\\xe2\\x8e\\x10\\xee\\x70\\x53\\x47\\x01\\x5a\\x92\\x2e\\x2e\\x88\\xd3\\x4f\\xb0\\xce\\x51\\x5b\\x08\\xdf\\x3a\\x1b\\x63\\x4f\\xf9\\xec\\x15\\xd0\\x59\\x41\\x82\\xc8\\x6e\\xbb\\x0d\\xb7\\x83\\x61\\x2a\\x7d\\x19\\xe4\\xb2\\x2e\\x82\\x2d\\x56\\x62\\x45\\xae\\xd7\\x2e\\x69\\x4c\\x3d\\x10\\x1b\\xfa\\x4c\\xa8\\x79\\x86\\x2e\\x5f\\x99\\xc2\\x3a\\x5d\\x66\\x08\\x3c\\xe0\\x6d\\x87\\xf3\\x99\\xaa\\x78\\x88\\xab\\x83\\xb8\\x66\\x44\\x72\"},\n{{0x4e,0xf6,0x0f,0x06,0x91,0xd7,0x37,0xe6,0x4d,0x43,0x7b,0xfd,0x33,0x98,0x33,0x0e,0x55,0xe3,0xc0,0x94,0xcf,0x41,0xfc,0x55,0x7b,0x0f,0xe0,0xb6,0x43,0x90,0x9a,0xb8,},{0x30,0x6a,0xb1,0x46,0xe5,0xc8,0xcd,0x63,0x0f,0x9b,0x48,0xbf,0x8b,0x68,0x5d,0xb0,0xb6,0xb5,0x53,0xef,0x69,0x68,0x68,0x53,0xb6,0xb5,0x31,0x96,0x01,0x18,0x54,0x8c,},{0xcb,0xf7,0xcf,0x22,0x08,0x1c,0x5f,0x23,0x5d,0xba,0x35,0x63,0x0f,0xb3,0xf0,0x40,0x8f,0xce,0xcc,0xef,0xeb,0x28,0xb9,0x9d,0x74,0xdb,0xd9,0x8c,0x90,0x2c,0x7d,0x99,0xba,0x9c,0xa7,0xfa,0xb3,0x74,0x7c,0x50,0x4c,0xc2,0x19,0xf4,0xdd,0x10,0x10,0x81,0xf5,0x8c,0xe6,0x16,0xe2,0x92,0x80,0xe3,0x62,0x53,0x9f,0xe4,0x9f,0x34,0xd7,0x05,},\"\\x0a\\x18\\x8a\\xc2\\x6f\\x3c\\x5d\\x89\\xf3\\xd5\\x88\\x37\\x4f\\xac\\x5e\\xcf\\x9a\\x46\\x7e\\x21\\x65\\xb3\\x1d\\x0b\\x0f\\x23\\x50\\x1b\\xd2\\x2e\\x62\\xbf\\x35\\x55\\xff\\xba\\x94\\x63\\x1d\\xe7\\x4a\\x6a\\x3c\\x3c\\xf6\\x3b\\x03\\xac\\x1b\\xbb\\x37\\xd2\\x33\\xec\\xa5\\x99\\x3b\\x09\\x70\\xa0\\x22\\x0d\\xe8\\xd6\\xc4\\x1a\\x97\\x03\\x07\\x30\\x9a\\x52\\xda\\x05\\x76\\xdc\\x33\\x4d\\x80\\x64\\x47\\xaa\\x09\\xd0\\xb2\\x45\\xea\\xcd\\x0b\\x42\\xc4\\xe1\\x9f\\xa3\\xd6\\xfb\\xdc\\x22\\x94\\x30\\xeb\\x3c\\x75\\x58\\xaf\\x53\\x31\\xc6\\xe7\\xfc\\xc2\\xe5\\x52\\xce\\x35\\xd5\\x79\\x07\\x3b\\x54\\x8d\\xc1\\x15\\xbb\\xd2\\x7e\\x5a\\x33\\xce\\x1c\\x47\\xfc\\x84\\x61\\xe3\\x91\\xb6\\xd7\\x67\\x95\\x34\\x87\\xcc\\x52\\xee\\x67\\x3b\\xc4\\xbe\\x96\\x56\\x9c\\x85\\x57\\x36\\x9e\\xbb\\x6e\\x02\\xf7\\x92\\x38\\x10\\x8c\\x3b\\x58\\x56\\xee\\x38\\x1a\\x79\\xff\\x46\\x4c\\x8f\\x60\\x09\\xfd\\x47\\xe6\\x7b\\x4c\\x80\\x20\\x1e\\x11\\xe6\\x1a\\xb8\\xf5\\x9b\\xa5\\xd0\\x7b\\x15\\xac\\xe3\\xfb\\x37\\x4c\\x64\\xb6\\xb4\\xc3\\x45\\xe2\\xb0\\x0e\\x91\\x51\\xab\\x8e\\x1c\\x5c\\x98\\x56\\x8b\\xc5\\x8d\\xd0\\x81\\x2a\\xaa\\x3b\\xee\\xe1\\x65\\xe7\\xea\\xe5\\x8f\\xbd\\xe6\\x30\\x77\\x20\\x3c\\x4f\\xd6\\xe1\\x60\\x68\\xd7\\x6e\\x3d\\x3a\\x13\\xf1\\xcd\\xd7\\x32\\x88\\xbd\\x5e\\x4d\\xa4\\x4e\\xb1\\x19\\xa0\\x4c\\x4d\\x32\\xef\\xa2\\xf1\\x3e\\x74\\x26\\xa2\\xf4\\x1c\\x56\\x23\\xc9\\xb0\\x66\\xb1\\x30\\x36\\x39\\xb8\\xfc\\xea\\x0d\\x87\\x74\\xcc\\x08\\x04\\x5f\\x7e\\x34\\x63\\x65\\xff\\x31\\xd3\\xb1\\xed\\x99\\xe9\\x7b\\xca\\x5f\\x25\\xc9\\x2b\\x28\\x43\\xac\\x58\\x5d\\x02\\x19\\x3a\\x2f\\xd3\\x94\\x66\\xf7\\x3a\\xaa\\x98\\x9b\\x1f\\xa0\\x5b\\x9a\\x15\\x7f\\xd0\\x27\\x7c\\x5e\\x74\\x5d\\x25\\x8e\\x02\\x78\\x03\\xa5\\x24\\xad\\x94\\x30\\x94\\x25\\xc3\\xf4\\xde\\xc3\\x1c\\x0e\\xfc\\x54\\x77\\x52\\xf4\\xc7\\x19\\x4c\\xbb\\x27\\x2f\\x84\\x9a\\x52\\x16\\x9c\\x6a\\x07\\x8d\\x20\\xed\\xe1\\x43\\x20\\x16\\x52\\x84\\x77\\xb5\\x8c\\x2b\\xdf\\x60\\x63\\xf9\\x44\\x7e\\x33\\x83\\x7c\\xcb\\x43\\x7d\\x8d\\x6b\\x95\\xcf\\x4c\\x44\\xbe\\x70\\xc8\\x19\\x3a\\xd9\\x80\\xa1\\x05\\xf3\\xdb\\x6f\\x99\\x30\\xba\\xb4\\x67\\x8c\\x77\\x63\\x42\\xfa\\xf1\\x70\\xed\\xf7\\x42\\x48\\xd3\\xb1\\xca\\x96\\xf7\\x31\\xb9\\xd0\\x26\\xd8\\xf0\\xf7\\xc3\\x4e\\xd3\\x72\\xc1\\xcd\\xe1\\x76\\xf5\\x5f\\x55\\x86\\x75\\xcc\\x31\\x80\\xc2\\x39\\x02\\xf4\\xba\\x95\\x08\\xd1\\xc9\\x1c\\x3c\\x9e\\x68\\x87\\x30\\x32\\x7f\\x3f\\x7b\\x63\\x7a\\x8f\\xee\\x54\\x37\\x37\\x59\\xfc\\xb1\\x7c\\x92\\x17\\xea\\x44\\xce\\x43\\x69\\x1a\\x8f\\x64\\x63\\x64\\x0a\\x4a\\x5e\\x15\\x1e\\x62\\x54\\xc4\\xef\\x12\\x62\\x3b\\x49\\x39\\x4d\\xa7\\xcc\\x79\\x45\\x26\\x93\\x81\\x7d\\x6b\\xae\\xa9\\xa0\\xa7\\x58\\x76\\x94\\x8b\\x1f\\x8d\\x3b\\x71\\x7f\\x9e\\xc3\\x67\\x53\\xf5\\x32\\x63\\x71\\x03\\x83\\xb9\\x82\\x62\\xae\\x63\\x54\\xff\\x2a\\x22\\x83\\x22\\x0a\\xd4\\x2c\\x5c\\xb2\\xcb\\xbd\\xf1\\x2c\\x87\\x95\\x13\\x71\\x0b\\x16\\xbe\\x85\\x6f\\x3b\\x13\\x55\\xb3\\x6f\\x4b\\x80\\xc0\\x17\\xc2\\x1b\\xe8\\x5e\\x96\\x05\\x3d\\xa0\\x50\\xc4\\x03\\x12\\x10\\x0a\\xbb\\x64\\x0b\\x87\\x3d\\x88\\xfb\\x6e\\xe0\\xd1\\x9e\\x9e\\x61\\xb0\\x4c\\x97\\x0b\\xd1\\xf0\\x60\\xdd\\x31\\x1b\\xbb\\x9a\\x6e\\x35\\xb9\\x85\\xfd\\xca\\x17\\xca\\xee\\x8c\\xd5\\xdb\\x63\\x7a\\xcd\\x90\\xcb\\x8e\\x82\\x32\\x55\\xc0\\x56\\x01\\x8f\\xef\\x59\\x20\\xdb\\x64\\x0d\\x22\\x01\\xc5\\xed\\xdb\\xd8\\xa9\\xc9\\x47\\x4d\\xa8\\xde\\xf7\\xe1\\x32\\x5b\\x3c\\xc4\\x36\\xc7\\x4f\\x81\\x5d\\xb1\\xe4\\x2b\\x42\\x1f\\xaa\\xb6\\x26\\xa4\\x37\\x8c\\x2d\\x84\\x26\\x1b\\xf6\\x49\\xa5\\x3b\\x32\\x1f\\x59\\x8c\\x44\\xbb\\xd3\\x00\\x2b\\x06\\xcf\\x7f\\x1f\\xde\\xf8\\x4a\\xb3\\x5f\\x73\\xed\\x7d\\xc6\\x50\\x96\\xcb\\x1d\\xc0\\xcc\\x0e\\x34\\xc5\\x61\\xc8\\xa1\\x5c\\xf5\\x27\\x9a\\xbb\\xed\\x9b\\x16\\xff\\x24\\xa9\\x74\\x4e\\x3f\\x5e\\x64\\x9c\\xc9\\xd8\\x88\\x4f\\x89\\x1c\\x3f\\xb7\\x89\\x02\\x03\\x1f\\xfe\\x0e\\x01\\x21\\xc7\\x20\\x80\\xad\\x10\\xc2\\x47\\xb7\\xc9\\x3a\\x9e\\xbb\\x2d\\x84\\xd4\\xf8\\x77\\x75\\x0d\\x7b\\x34\\x16\\x39\\x3d\\x03\\x04\\x52\\x26\\xbb\\x79\\x94\\xee\\xa5\\x8e\\x27\\x2d\\xc1\\x8c\\x46\\xb3\\x82\\xd1\\xf9\\x7b\\x23\\x76\\x5f\\xda\\x7a\\x8c\\xe2\\x1f\\xc6\\xb9\\x8d\\x72\\x3f\\xfc\\xcd\\x99\\xac\\x46\\x55\\xcc\\x5d\\x10\\x10\\x5a\\x2a\\x5b\\x7c\\x8c\\xfb\\xfb\\x90\\xe2\\x7a\\x9a\\x80\\x9e\\x41\\xae\\x64\\x00\\x63\\x28\\x64\\x05\\xa9\\xbe\\x83\\xac\\x5d\\x29\\x07\\xa4\\x5f\\x16\\x3c\\x77\\x64\\xb0\\x9f\\x99\\xa5\\x55\\x93\\x22\\x0d\\x69\\x01\\x29\\x2b\\x9b\\x58\\x03\\xa0\\xfe\\x71\\xb0\\xe4\\x44\\x1c\\xbf\\xef\\x84\\x1c\\x33\\xce\\xbc\\x98\\x36\\x4d\\x66\\x6e\\x5a\\x9f\\x5e\\x7e\\x69\\xa1\\x50\\x8e\\x43\\x80\\xed\\x36\\x13\\x45\\xb7\\x24\\x8a\\x4c\\x1c\\x1c\\xe0\\x87\\x69\\xbc\\x71\\x52\\xdd\\xb3\\x32\\xfb\\xa1\\x76\\x20\\x0f\\x5a\\xbb\\xae\\x38\\x12\\xf4\\x06\\xda\\x72\\xdd\\xe5\\xdb\"},\n{{0x19,0x7e,0x15,0xdc,0xe4,0xc4,0x7d,0x73,0x4d,0xbc,0xe4,0x68,0x8a,0x7a,0xd5,0xfe,0x41,0xeb,0xf2,0xaa,0x29,0xa2,0xbd,0xdb,0x2b,0xee,0x62,0x84,0x29,0xc1,0xbc,0x02,},{0x30,0xfa,0xc3,0x23,0x04,0x8b,0x0c,0x78,0x1a,0x9f,0x63,0xc1,0xee,0x69,0xf2,0xb9,0xe7,0x5a,0x27,0x06,0xd2,0x49,0x51,0x2a,0x27,0x39,0x60,0x7f,0x26,0xdb,0x13,0x8f,},{0x2c,0x3c,0x8c,0xd2,0x99,0xc9,0x06,0x0b,0x65,0x99,0x9b,0x03,0xa6,0x57,0x9b,0xc5,0x0e,0xf1,0xfe,0x0d,0x85,0x1f,0x23,0xbe,0x9c,0xb5,0x8f,0x8f,0xb8,0xc6,0x72,0xee,0x08,0x6a,0x53,0x9e,0xad,0x94,0x9e,0x08,0x7d,0xf0,0x91,0x12,0x2d,0x26,0xfa,0xaa,0xd2,0x06,0xa5,0xc5,0x2f,0xcd,0x58,0xb5,0x14,0xd7,0xa9,0x35,0xbe,0x01,0x79,0x08,},\"\\xfd\\x97\\x1d\\x48\\x94\\x6b\\x51\\xff\\xed\\x7b\\x62\\xc5\\xd0\\x99\\xc1\\xe5\\x6b\\x13\\x58\\xb9\\x22\\x35\\xe1\\x01\\x0e\\x3f\\x23\\x84\\x4d\\xdb\\x73\\xbc\\xee\\x8d\\x2e\\x1c\\x99\\x77\\x35\\x3b\\xc9\\x6a\\x22\\x1c\\x05\\x60\\x29\\x31\\xfa\\x16\\xcc\\xc2\\xab\\x6d\\x0f\\x01\\xc8\\x46\\xc2\\x92\\x0e\\x99\\xde\\x02\\x6d\\xc2\\x89\\x7f\\x3d\\x5f\\x3c\\xee\\x17\\x4c\\xe7\\x51\\xd4\\xa8\\x05\\xee\\x19\\x59\\xa3\\xc6\\x9c\\xfd\\x42\\xd7\\xc9\\xaf\\xd3\\x1f\\xa9\\xb1\\xcf\\x05\\x78\\x6d\\x8f\\x90\\x42\\xa4\\xf9\\xf8\\x1c\\xf7\\xac\\x9c\\x1c\\x39\\xb3\\x6f\\x1e\\xe9\\x5b\\x98\\xcf\\x7e\\xe3\\xf4\\x3e\\x2c\\x34\\x37\\x33\\xd1\\xd8\\x2c\\xc0\\x8b\\x2c\\xde\\xb7\\x8d\\x98\\x20\\x34\\x08\\x5f\\xf4\\xdc\\x65\\x36\\xcd\\x15\\x4a\\x79\\x0c\\x85\\xc8\\x61\\x3e\\xc4\\xe5\\xe1\\xdc\\x37\\x7d\\x38\\xa7\\x45\\xd9\\x38\\xcf\\xb1\\x5c\\x8b\\x8a\\xa8\\x61\\x21\\x83\\x5f\\x2e\\x25\\xe9\\xe6\\xd0\\xde\\x68\\x02\\x5d\\x81\\x0c\\x3d\\xc9\\xdf\\x99\\x1d\\xad\\xad\\x39\\xdc\\x69\\x81\\xfd\\xba\\xc1\\xff\\x9b\\x7a\\x79\\x1c\\x39\\x60\\xd8\\x56\\x43\\x66\\xe5\\xaa\\x39\\xa9\\xe9\\xc7\\xcb\\xf1\\xd3\\xf0\\xf8\\x20\\xd1\\xb9\\x01\\x08\\x75\\x1a\\xc7\\x64\\xda\\xbe\\x05\\xc5\\x1c\\x18\\x52\\x9d\\xa1\\xb0\\x34\\x96\\x14\\x66\\x84\\x24\\xab\\x4e\\x93\\x64\\x40\\xc4\\xa2\\x51\\x3b\\xe5\\x28\\x53\\x93\\x72\\xee\\xe7\\x87\\x54\\x58\\x9d\\xbe\\x79\\x94\\xfa\\xa1\\xf6\\x22\\x91\\x24\\xf8\\x39\\x95\\x0e\\xd0\\x92\\x3f\\x43\\x23\\x31\\x5a\\xc9\\x63\\xbb\\xe4\\xc8\\xe1\\x77\\xda\\xc5\\x16\\xe7\\x34\\x22\\x38\\xf1\\xcd\\xf1\\x40\\xbe\\xfc\\x8a\\xcd\\xca\\x3d\\x00\\x2b\\x16\\xc1\\x39\\x8d\\x86\\x86\\x00\\x30\\x4c\\x7e\\x98\\x53\\xb2\\x3a\\x51\\xb1\\x7d\\x9f\\xd0\\x61\\x56\\xe1\\xd1\\xd0\\x8a\\x28\\x46\\x09\\x09\\xfa\\x20\\x9c\\xcc\\xcc\\x4c\\xec\\xbd\\xb1\\xa4\\x63\\x48\\x08\\x91\\x15\\x31\\x86\\x81\\xa9\\x5a\\xe5\\x80\\xab\\x67\\x66\\x04\\x13\\x84\\x65\\x1c\\xc4\\xe6\\x14\\x51\\x03\\x92\\x3b\\xdf\\x4a\\x32\\xa9\\x3d\\x93\\xee\\xd3\\x18\\x79\\x1f\\x20\\x80\\x5f\\x7e\\xa8\\x4b\\x74\\x3e\\xe1\\x1e\\xad\\x9e\\x4c\\xa0\\x3d\\xa7\\x6d\\xdd\\x24\\x9f\\xd4\\x47\\x5f\\xc1\\xa3\\x53\\xc7\\x0a\\x83\\x38\\x9b\\xfa\\xc5\\x20\\x98\\xdb\\x06\\x6d\\x10\\x29\\xc4\\xef\\xfb\\xed\\x86\\x4e\\xbe\\x7f\\x10\\x7e\\x01\\x03\\xb3\\xa8\\xf3\\xfd\\x1d\\x6a\\xb4\\x36\\x0b\\x99\\xe8\\xb1\\x40\\xc5\\xea\\x13\\x3e\\x92\\x3c\\x39\\x2b\\x8e\\x40\\x63\\xaa\\x6e\\x52\\x26\\x38\\xf6\\x1d\\x7a\\x71\\xc9\\x22\\x58\\x97\\xd9\\xf8\\xa1\\xe1\\x6c\\xfc\\xc8\\x01\\xe7\\xd5\\x41\\x04\\xeb\\x10\\xe6\\x1a\\x5a\\xe6\\x3c\\x5c\\x85\\xa5\\xb2\\x93\\x92\\xab\\x3a\\xb8\\xe5\\xc0\\x39\\xf1\\x00\\xd0\\xf4\\x60\\x0c\\x61\\x0e\\x02\\x09\\x43\\x6e\\xf2\\xec\\xe4\\xd0\\xbd\\xb0\\xba\\xb4\\x37\\xb2\\xdb\\x5f\\x37\\x08\\xfd\\xdf\\x96\\x66\\x0f\\x6f\\xb1\\xa9\\x0d\\x60\\x48\\xd3\\x95\\xaf\\xaf\\xa7\\x60\\xcc\\xaf\\x15\\xde\\xaa\\x0e\\xff\\xeb\\x26\\xec\\x17\\x68\\x1d\\x17\\x2c\\x13\\x30\\xf7\\x8e\\x78\\xa8\\x73\\x6b\\x28\\x5f\\x61\\x5f\\x15\\xd4\\xf2\\xc3\\x13\\xd2\\x5f\\x30\\xae\\xe9\\xd1\\xdb\\x39\\xf5\\x35\\xfc\\xdd\\x0e\\xbc\\x8e\\x71\\xb8\\x9c\\xe6\\xb3\\xfc\\xb5\\x67\\xcd\\x0f\\xa2\\x88\\xf4\\x8e\\xd3\\xa7\\x59\\xbb\\x2e\\xd2\\x00\\xfd\\xc2\\x30\\x91\\x50\\x2f\\xd9\\xca\\x65\\x1c\\xe5\\xe3\\x42\\x2a\\x98\\x33\\x5a\\x81\\xd7\\x4a\\x65\\xcc\\x15\\x00\\xe9\\x07\\x0a\\xbb\\x60\\x9c\\x1c\\x1f\\x68\\xfc\\x2c\\xa9\\x4c\\xdd\\x55\\x0f\\x99\\xbc\\xb2\\xd0\\x92\\x41\\x6b\\x9b\\xd3\\x88\\x41\\x0b\\x8f\\xe7\\x48\\xfb\\x8c\\x9a\\x5a\\xb8\\x61\\x5f\\x2e\\xd9\\x68\\xf8\\x5d\\xcb\\x27\\x27\\x72\\x69\\x84\\xbe\\xad\\xa7\\xa1\\x8a\\xfd\\xb0\\xc7\\x2a\\xa6\\x5d\\xe7\\xab\\xb7\\xa8\\x6f\\x11\\x16\\x9a\\x6e\\xad\\xf1\\xc2\\x1d\\x61\\x4e\\x52\\xc0\\xc8\\xf0\\x19\\x74\\x7d\\x34\\x1a\\x05\\xd8\\x5e\\x37\\xbf\\x58\\xd8\\x32\\x7e\\x99\\x39\\xc2\\x38\\x7c\\x27\\x44\\xed\\xf8\\x38\\x56\\x3c\\xb3\\x7f\\x0b\\x16\\xe8\\xa0\\x6f\\xc6\\x28\\xa9\\x72\\x30\\x50\\x6f\\xa4\\x18\\x39\\x54\\xdc\\x74\\x81\\x5f\\x3b\\xe2\\xeb\\x2a\\xff\\x4a\\x13\\xc0\\x65\\xf7\\x43\\xb7\\xd8\\x5d\\xe8\\x04\\xeb\\x28\\xef\\xe5\\x70\\xed\\x5e\\xcc\\x71\\xab\\xa9\\x7f\\x97\\x63\\xb4\\x36\\x17\\x32\\x47\\xf3\\x8e\\x0c\\xf6\\x29\\x72\\x09\\xb6\\x51\\x28\\x46\\x5a\\x38\\x26\\x64\\xce\\xd8\\x01\\x1f\\xcc\\x3d\\x0e\\x56\\x3f\\x15\\x5b\\xc6\\x3c\\x94\\xdd\\xe7\\x3c\\x7b\\x17\\x24\\x7b\\x8c\\x3a\\x4e\\x80\\x34\\xeb\\xd4\\x36\\x46\\x35\\x18\\x5c\\xe9\\xc7\\x08\\x1d\\xbd\\xbe\\x85\\x45\\xf7\\x9d\\x01\\xaa\\x53\\x2a\\x0d\\xc5\\x2c\\xb7\\x90\\xa3\\x1f\\xc2\\xff\\x41\\xac\\xeb\\xad\\x27\\xcc\\xe9\\x24\\x45\\x54\\xdb\\x65\\x2f\\xa2\\x87\\xba\\xe7\\xde\\xcb\\xcc\\x8c\\xe9\\xe0\\x1d\\x1a\\x88\\xab\\x41\\x2b\\x6c\\x65\\x78\\x20\\x3b\\x42\\xde\\xc9\\x82\\xb7\\xf3\\xb8\\x23\\x14\\xdb\\x2c\\xc7\\xc5\\xc3\\xdc\\x1d\\x3d\\x8b\\x17\\x14\\x4d\\xa7\\xfe\\x60\\xe7\\xa8\\x72\\x5f\\xd0\\xa9\\x7c\\x61\\x06\\x07\\xcf\\x41\\x3c\\x72\"},\n{{0x08,0xb5,0xfd,0x4e,0x41,0x9d,0x23,0x70,0xc0,0xfc,0xd6,0xc3,0xb9,0x2f,0x8d,0xb3,0xaf,0xd4,0x22,0x68,0xf5,0x33,0x08,0x5d,0x9f,0xce,0x32,0xb5,0x22,0x82,0x4e,0x34,},{0xcd,0x0d,0xa6,0x99,0x37,0x9e,0x4f,0x94,0x25,0xe8,0x4b,0x97,0x57,0x30,0x0a,0x51,0xa1,0x63,0xf3,0x58,0x73,0x4c,0xc3,0x7a,0x91,0xff,0x0e,0xa4,0x88,0xd2,0x97,0x79,},{0x42,0xa1,0x37,0x56,0xb7,0x5c,0x67,0x22,0x48,0x5f,0xa3,0xf6,0x94,0x04,0x1b,0x39,0xb7,0xd7,0xc5,0xfd,0x40,0xeb,0xc0,0x6a,0x52,0xe0,0xff,0x34,0xce,0x14,0xd8,0xd4,0x0f,0xa8,0x2a,0x95,0x08,0xb5,0x68,0x53,0x7d,0x26,0xd0,0xdd,0x7c,0x0a,0x31,0xbe,0x71,0x0d,0xa8,0x0a,0xab,0x35,0x19,0x6a,0x03,0x9b,0x60,0x64,0x1d,0xb1,0xe1,0x01,},\"\\x3c\\xee\\xee\\xa3\\x0f\\xa4\\x01\\x56\\x3d\\xf3\\x6b\\x19\\x8b\\x9b\\x59\\x69\\x8c\\x10\\xe1\\x00\\xa2\\xf3\\x0e\\x6f\\x78\\xfe\\x62\\xb9\\x2e\\xca\\xc9\\x89\\xe8\\xaa\\x09\\xec\\x76\\x0e\\x89\\xca\\xc0\\xa1\\x6b\\xde\\x3c\\xac\\x73\\x62\\x2a\\x86\\x27\\xef\\xed\\xfa\\x4e\\xc0\\x9b\\x87\\x3f\\x7e\\x10\\x00\\xe7\\x69\\x82\\x91\\x0c\\xa0\\xaa\\x4a\\xfb\\x1f\\xf5\\xa8\\x44\\x8b\\x76\\xf7\\xb0\\xd2\\xa2\\xd5\\x2a\\x7f\\x40\\xde\\xde\\xfc\\x68\\xd6\\x0c\\xe6\\x62\\x2c\\xa0\\x80\\xd6\\x69\\x8e\\xa6\\xc3\\xbd\\x72\\x10\\xb3\\xb6\\x48\\xf5\\x32\\x52\\x29\\x14\\x94\\xb3\\x5a\\x55\\xff\\x40\\xfa\\x1a\\x63\\x1a\\x57\\xc5\\x10\\x01\\x1a\\x46\\xbf\\xb9\\xe2\\x71\\xba\\xe1\\xe7\\x8c\\xe6\\xc6\\xea\\x60\\xc5\\x5b\\xa0\\xcc\\xe3\\x60\\x59\\xbf\\xb0\\x1e\\x39\\x45\\x56\\x98\\x7f\\x74\\x4b\\x72\\xae\\xbb\\xdb\\x4b\\x1b\\xdb\\xb3\\xbb\\xaa\\xee\\x1b\\x8b\\x2f\\x31\\x74\\x50\\x6a\\x79\\x3f\\x0a\\x51\\x1b\\x2b\\x56\\x90\\x49\\xb3\\x0a\\x2e\\x08\\x41\\x42\\x41\\x84\\xa4\\x8e\\xca\\x9e\\x2d\\x83\\x78\\x3a\\xc5\\xb6\\x1e\\xb9\\x47\\xcb\\xd8\\xba\\xb7\\xad\\x38\\xb0\\xc6\\x84\\x27\\xd8\\xf9\\x4a\\xe2\\x85\\x19\\x0d\\xbb\\x6e\\x0c\\x6d\\x58\\x0a\\x25\\x14\\x23\\x94\\xbe\\x94\\x81\\x58\\xd8\\xda\\x83\\xb4\\xf3\\x4a\\x8d\\x25\\x8b\\x97\\x07\\x56\\x32\\xb3\\xc2\\x8b\\xfa\\xe3\\x10\\x5e\\xd1\\x87\\x2e\\x35\\x6e\\x43\\xae\\xd5\\x93\\x97\\xb9\\x11\\x0b\\xbf\\x9d\\x8c\\xa2\\xa0\\x44\\xd5\\x27\\x1e\\x6c\\xc3\\x61\\xe1\\x4e\\x69\\xa9\\x32\\x51\\x76\\x83\\xec\\x81\\x81\\x8f\\x02\\xcf\\xa0\\x29\\x5e\\x56\\x61\\xce\\xa3\\xe5\\x86\\xaf\\xc0\\xdb\\x41\\xba\\x95\\x55\\x3e\\xe7\\x5b\\x20\\x0b\\x0f\\x97\\x90\\x11\\x1d\\x37\\x57\\xa7\\x39\\xe5\\x63\\x55\\x7a\\xff\\x9b\\x70\\xca\\x14\\xe8\\x7b\\x79\\x54\\x37\\xba\\x91\\xa9\\x5d\\xd0\\x7e\\xa6\\x9a\\x11\\x35\\x9f\\x36\\xca\\x03\\x29\\x8e\\x0b\\xfa\\x4f\\x91\\x2f\\x64\\xa2\\x92\\x4a\\xd9\\x01\\x97\\x5a\\x2a\\x96\\x0b\\xa1\\xbe\\x89\\x92\\x1b\\x1f\\x54\\x85\\x49\\x6b\\x7e\\xa5\\xda\\x6d\\x8a\\x69\\x37\\xac\\x10\\x5b\\xf3\\x76\\x0e\\x48\\x76\\x99\\x0a\\x0f\\x5c\\x5a\\x63\\x4f\\x74\\xcb\\x57\\xdf\\x7c\\x17\\x2c\\x8a\\x41\\x53\\x72\\xe6\\xd9\\x03\\x29\\x87\\x17\\x49\\x96\\x16\\xf8\\x97\\x1c\\x68\\xbb\\xec\\xe9\\x2e\\xa8\\x78\\xa1\\x8e\\x23\\xf3\\x27\\xc3\\x64\\x9b\\x6a\\x85\\x2e\\xf2\\x3b\\x7b\\x3e\\x60\\x3c\\xdf\\x80\\x45\\x2d\\xbf\\x1b\\xe2\\xfb\\x77\\xe8\\x14\\xd2\\x52\\x54\\x96\\xbb\\x31\\xfb\\x6e\\x4e\\xd2\\x53\\x32\\x48\\xb3\\x9d\\x5f\\xbe\\x23\\x90\\xa9\\xb6\\xfc\\xca\\xba\\x99\\x7e\\x8b\\x49\\xb5\\x98\\x36\\xe3\\xe0\\x95\\x29\\xea\\x5e\\x41\\x13\\xee\\xe4\\x51\\xc9\\xc6\\xbb\\x26\\x74\\x1d\\x0e\\x4c\\x58\\x6f\\x53\\xd6\\x04\\xc6\\xea\\x0c\\x0e\\x60\\xdb\\x02\\xe5\\x10\\x9f\\x37\\x34\\xf5\\x1c\\xdd\\x89\\x85\\xaf\\xeb\\x3e\\xca\\xff\\x65\\xe0\\x59\\xe3\\x12\\xcd\\x50\\xfa\\x34\\x9f\\xf2\\x8b\\xdc\\x9b\\x70\\xb7\\xf5\\x32\\xdb\\xab\\x1d\\xf4\\x3b\\x03\\x16\\x7c\\x1d\\x2e\\x3f\\xa6\\xee\\x8c\\x9b\\x17\\x4a\\x0b\\x2c\\xf8\\xaa\\x9f\\xfa\\x40\\x6b\\xf5\\xbd\\x72\\x88\\x78\\x0c\\x9c\\x4a\\x6b\\x69\\x79\\x49\\xb4\\x86\\x38\\xd4\\x20\\x79\\xc8\\xc6\\x6e\\x14\\xd9\\xb5\\x72\\xa2\\x10\\xa0\\x93\\xea\\xf1\\xd2\\xf7\\xa7\\x03\\xb5\\xcd\\x20\\xad\\xc4\\xf9\\x92\\x7a\\x6e\\xa8\\xea\\x78\\xfa\\xa6\\x1b\\xc6\\x2b\\x3c\\x5c\\xbd\\x3a\\x53\\x25\\x25\\x66\\xd0\\x43\\xba\\x55\\x65\\x90\\xd9\\xa7\\x63\\xbe\\x7f\\xea\\x4b\\x20\\xe1\\xe9\\xcf\\xbe\\xbf\\xae\\x15\\x43\\x9b\\x33\\x4d\\xc5\\x39\\xb1\\x7d\\xad\\xa2\\xe4\\x34\\xe9\\xc8\\x32\\x25\\xb1\\xe8\\xf6\\xbe\\xb7\\xd5\\x56\\xb4\\x7d\\x7f\\x69\\xf7\\xeb\\x7d\\xf5\\xed\\xe2\\xee\\xbd\\x84\\xe2\\x50\\xb7\\xc9\\x46\\x8c\\x21\\xfd\\xc0\\x17\\x0e\\xa8\\xdf\\x66\\x2d\\x61\\x80\\x58\\x1f\\x65\\x7f\\xe7\\x6c\\xef\\x18\\x58\\xb6\\xb0\\x2f\\x73\\x25\\xc7\\x21\\x96\\x43\\xfb\\xa2\\xf7\\xe9\\x96\\x3a\\x33\\x32\\x2d\\x65\\x04\\xab\\x91\\xbf\\x10\\xa9\\x78\\xfa\\x07\\xb4\\x7d\\x5d\\xb0\\xbe\\x00\\x0d\\xcd\\x00\\x2b\\xdd\\xaf\\x67\\x6b\\x77\\x25\\x9c\\x9f\\x60\\xad\\x0b\\x11\\x67\\x1c\\xd5\\x77\\x7c\\x1e\\x80\\xb1\\x3f\\x82\\xeb\\x0f\\xb6\\xa1\\x80\\xb5\\x66\\x62\\x93\\xa4\\x32\\x40\\x86\\x2f\\xbf\\xa3\\x97\\x8d\\x95\\x31\\x19\\x71\\xaf\\xab\\x9e\\x1c\\xc8\\xab\\x14\\xa8\\x76\\xb6\\x57\\x2a\\xc8\\xa4\\xb7\\xe0\\xb4\\x0a\\xaf\\x6b\\x52\\xa1\\xcf\\x4c\\x1e\\xbc\\x6c\\x1c\\x48\\x7d\\xf5\\xa3\\xcb\\xc4\\x00\\x5a\\x0e\\xe3\\x29\\xca\\xbc\\x28\\x6d\\xb1\\x0f\\x17\\xd0\\xf1\\x78\\x2e\\x07\\xd3\\x32\\x4f\\x0c\\x73\\xef\\xbd\\x3c\\x2f\\xb5\\x2b\\x71\\xf9\\x8a\\xd9\\x5d\\xb9\\x50\\x62\\xd9\\x14\\x25\\xe7\\x34\\x67\\xbc\\x1e\\x4e\\x9b\\xf5\\x52\\xe8\\xa2\\x44\\x29\\xd9\\x7d\\xb1\\xd6\\x6d\\xd4\\xd9\\x95\\xe5\\xf8\\xd2\\x4e\\x9c\\x91\\x0b\\x2e\\xb1\\x75\\x8e\\xf7\\x55\\x25\\xc3\\xd6\\x5a\\x3f\\x43\\x0a\\x02\\x73\\x48\\x82\\x0c\\xe3\\x05\\x3b\\x6f\\x3a\\xf4\\xec\\x96\\xd0\\x49\\x37\\x31\\xc8\\x18\\xc6\\xb1\\xa7\\x0c\\x25\\x0a\\xc6\\x86\\xa4\\xfc\"},\n{{0x1e,0x85,0xc9,0xe4,0x51,0xb7,0xac,0xf8,0x01,0xd1,0x6b,0xc8,0x26,0x8e,0xb4,0x2a,0xe8,0x5c,0x72,0xc6,0x8e,0x9f,0x90,0x92,0x7a,0xa0,0xf3,0xb5,0x0b,0xef,0xd2,0x29,},{0xa6,0x9d,0x05,0x7f,0x4b,0x74,0x38,0x11,0xe0,0x7a,0xc7,0x45,0x61,0xc2,0x25,0xbe,0x03,0x81,0xc7,0xd5,0x84,0x9e,0x60,0x18,0x79,0x37,0x01,0xa8,0xcb,0x6c,0x99,0xb5,},{0x6c,0x36,0xda,0x9a,0xd6,0xc4,0x56,0x34,0x3c,0xe6,0x42,0xac,0xa4,0x54,0x92,0x3a,0x52,0xa2,0x84,0x4c,0xe5,0xee,0x58,0x94,0x7c,0x8d,0xf7,0xba,0xb2,0xeb,0xe4,0x67,0x82,0x3c,0x56,0x33,0xe5,0x30,0xb1,0x67,0xd7,0x1c,0x47,0xad,0x95,0x49,0xdf,0x05,0x94,0x3f,0x99,0x42,0x1e,0x17,0x47,0x5c,0x4d,0x4f,0x08,0xde,0xdf,0x6f,0x32,0x05,},\"\\x18\\x9e\\xa9\\xc8\\xd9\\xed\\x14\\xb0\\xde\\x82\\xb4\\x4c\\xbd\\xd5\\x87\\x57\\xa2\\x7c\\x68\\x38\\x3f\\xba\\x59\\x77\\x61\\xf9\\xe8\\x62\\xe0\\x8d\\xe1\\x5b\\x1e\\x44\\xc3\\xdb\\x1b\\xad\\xbd\\xe7\\x69\\x80\\xee\\x39\\xe6\\x99\\x62\\x9f\\x6f\\xcf\\xef\\x32\\xd3\\x6b\\x33\\x93\\xda\\x2c\\xa5\\xa8\\x1f\\x95\\x9c\\x8b\\x0f\\x1b\\x80\\x1b\\x5f\\xa4\\xc4\\x7c\\xa3\\x95\\x91\\xe6\\x12\\xa2\\x43\\x5c\\x5b\\xaf\\xd7\\x7a\\x5c\\x7a\\xb7\\x43\\x59\\x21\\x09\\x06\\xf4\\x75\\x33\\xb1\\x87\\x9e\\x2a\\x5a\\xf5\\x86\\x4d\\x96\\x1c\\x81\\x46\\xe2\\x5d\\xac\\x77\\x25\\x55\\xe0\\x42\\xa8\\x87\\x26\\x14\\x19\\xab\\x8c\\x9f\\x6f\\x62\\x56\\x25\\x48\\x1d\\xa5\\xb9\\x35\\x26\\xa1\\x31\\xf3\\x7b\\x53\\x4a\\x00\\x50\\xa8\\xa4\\x62\\xb3\\x3f\\x20\\xa7\\xe9\\x4b\\x89\\x15\\x30\\xb1\\x9b\\xf6\\x54\\xee\\x95\\x34\\xc9\\xa8\\x36\\x1d\\x03\\x63\\x5d\\x8d\\x27\\xd4\\x6b\\xe7\\xbf\\x84\\x78\\x1a\\xd0\\xd4\\x2d\\x1e\\x7c\\x48\\x54\\xa4\\x9b\\xa1\\xba\\x45\\x82\\x62\\xfe\\x5e\\xa1\\x90\\x21\\xb9\\x35\\xa6\\x94\\x94\\x92\\xd7\\x0b\\x60\\x5e\\x15\\x19\\x89\\xef\\x26\\x41\\xb2\\xbf\\x81\\xec\\x4b\\x92\\x02\\x0f\\xc7\\x07\\x4c\\x2a\\x63\\x22\\x9d\\x51\\xa9\\x44\\x18\\x6a\\x28\\x89\\x5e\\x8e\\xa9\\x52\\x92\\xc2\\xf8\\x72\\xbb\\x21\\xa3\\x14\\x93\\x99\\xe2\\x3c\\xcd\\x8e\\x2f\\xc4\\xf1\\x7a\\x46\\xb5\\x9c\\x28\\x2c\\x51\\xb5\\x8d\\x00\\x26\\x6a\\x5c\\x16\\xb1\\xce\\x35\\x0d\\x54\\x85\\xe8\\xd8\\x01\\x6d\\xd0\\xa5\\x0a\\x59\\x84\\xcc\\x94\\x81\\x54\\xcd\\x5c\\xe7\\xcd\\xa0\\xee\\x0a\\xb1\\xd7\\x25\\x1b\\xdc\\x70\\xa1\\x78\\x5b\\x8e\\x91\\x03\\x91\\x7f\\x4b\\x91\\x7a\\xb2\\xb4\\x94\\xf3\\x48\\x33\\x89\\xa2\\xf9\\x23\\x75\\x41\\x84\\x9e\\xd3\\xbd\\x56\\x5c\\xff\\xac\\x9e\\x75\\x6d\\xb5\\x6e\\xf5\\xe2\\x34\\x95\\xbc\\x77\\x1e\\x88\\xbf\\xfa\\x87\\x07\\xce\\xea\\x5c\\x09\\xbe\\xca\\xdd\\x05\\x9a\\xb8\\x89\\xd1\\xdf\\x7e\\x88\\x7b\\x71\\xa9\\xe6\\xc2\\x38\\x37\\x8f\\xbe\\x0c\\x36\\x30\\x38\\x66\\x16\\x36\\x3f\\x20\\x7b\\x16\\xc3\\x27\\x0d\\x39\\xac\\xde\\xd5\\x11\\x52\\x99\\x92\\xf4\\xe5\\x98\\x78\\x91\\x21\\xd3\\x16\\x13\\x58\\x10\\x63\\x6b\\xaa\\xde\\x8a\\x28\\xed\\xc6\\x6b\\xbf\\x5e\\xde\\x3f\\x40\\x4a\\x70\\xb4\\x7d\\x35\\x98\\x8b\\xe7\\x06\\xb4\\xea\\xa0\\x30\\x23\\xa3\\x90\\x93\\xd5\\x83\\xcd\\x4c\\xd8\\xbf\\x4c\\x74\\x34\\x1a\\x02\\x8c\\x19\\xd6\\x0d\\xa3\\x1b\\x6a\\x7a\\x03\\x4c\\x08\\x1a\\x2b\\x03\\x0f\\xeb\\x3c\\xd2\\xf0\\x3d\\x0f\\xaa\\xbf\\xfb\\x58\\xe3\\xfc\\x36\\xc0\\x06\\xcf\\xb9\\x29\\x47\\xa7\\xde\\x5b\\xa8\\x74\\x76\\xc1\\xb0\\x51\\xe1\\x82\\x83\\xc0\\x3e\\x9c\\x6e\\x5a\\x5c\\x3c\\x27\\x77\\xd9\\xa0\\x75\\x73\\x72\\x37\\x96\\x64\\xe8\\x2f\\x84\\x85\\x82\\x4f\\xed\\xb7\\x0a\\x4b\\xc4\\xe3\\x56\\xed\\xd1\\xb5\\xce\\x0f\\xb6\\xe4\\x1d\\xe0\\x17\\x16\\x21\\xb8\\x4f\\xaf\\xa0\\x01\\x89\\xaf\\xa8\\xa6\\xa9\\x00\\xb1\\x4c\\x70\\x75\\x8f\\x7a\\xa4\\xfb\\x82\\x40\\x0e\\x0d\\x18\\xab\\x3c\\xd7\\xe4\\x8a\\xcf\\xd4\\x89\\xca\\xb0\\xe7\\x2e\\x71\\x9f\\x79\\xa0\\x7d\\x06\\x6c\\x53\\x1a\\x89\\x1c\\x55\\x29\\x1f\\x22\\x45\\xdb\\xbe\\xe4\\x4e\\x52\\xb1\\xdf\\xc8\\x72\\x7a\\xae\\x38\\x7a\\xb9\\xe7\\x19\\x94\\xa3\\x85\\x4e\\x1a\\xdd\\x73\\xd9\\xa7\\x96\\x5c\\x77\\x55\\x21\\xc2\\xf5\\x40\\x84\\x22\\x76\\xdd\\x30\\x9e\\x2f\\x6a\\x34\\x1e\\x7f\\x0f\\x37\\xf2\\x2b\\xb6\\x62\\x7b\\x6e\\x9c\\xb2\\x5b\\xa2\\x4c\\x6c\\x4f\\x4e\\xb9\\xf5\\xe7\\x62\\x2d\\x88\\xda\\x19\\x84\\xe2\\x9c\\x5d\\xa0\\x01\\x03\\x9c\\x44\\x04\\x2b\\x59\\x35\\x14\\x06\\xa4\\x13\\x36\\xdd\\x77\\x2d\\x49\\x7d\\x3f\\xc8\\xaa\\xc4\\x11\\x72\\xeb\\x5a\\xa6\\x41\\x7f\\xe4\\x22\\xec\\x7c\\x15\\x0b\\x96\\xb0\\x45\\x4e\\xe3\\x31\\x24\\x7c\\xb1\\x53\\x8a\\xef\\xf3\\xec\\xa2\\xd5\\x0e\\x53\\xd6\\xd1\\x31\\x70\\xa7\\x6a\\x00\\x49\\xea\\x0c\\x05\\x90\\x4a\\x63\\x90\\xed\\x14\\xce\\x74\\x91\\xe9\\x7f\\x75\\x4c\\x52\\x22\\xda\\xc4\\xb6\\x11\\x8b\\xa3\\x81\\xf5\\x52\\xe7\\x3e\\xa8\\x49\\x1e\\x3b\\x7a\\xc9\\x49\\x56\\x9b\\x56\\x9c\\xf2\\xd2\\x9a\\x80\\x41\\x0e\\x06\\x5b\\x5c\\xc4\\xa4\\x66\\xbb\\x04\\xeb\\x7a\\x15\\xf5\\x96\\x79\\x2e\\x84\\x90\\xba\\x70\\x02\\xec\\x36\\x15\\x71\\xaf\\x5d\\x8f\\x57\\x67\\x5c\\x95\\x64\\x49\\x47\\x0a\\x2f\\x99\\x55\\x40\\x73\\x67\\xe4\\x09\\xa2\\x32\\x89\\x95\\x53\\x12\\x0a\\x27\\x7d\\xb8\\x63\\xe9\\xa8\\x2d\\xda\\xba\\xe8\\x7b\\x78\\x91\\x45\\xba\\x89\\x8d\\xf3\\xc2\\x8b\\x96\\xfb\\xe3\\x01\\x4c\\xd0\\x85\\xc6\\xe6\\x0e\\xe8\\x83\\x17\\x01\\x03\\x6d\\x99\\xc5\\x42\\x5d\\x58\\xe8\\xbc\\xc9\\xfd\\x92\\x71\\xd4\\x6a\\xec\\x1e\\xb9\\x55\\x13\\x01\\x02\\xea\\xaa\\xb4\\x4e\\x07\\x70\\xc3\\x0b\\x2b\\x12\\x7e\\xfb\\x0e\\x5f\\x8a\\x3f\\x7a\\x0c\\xa3\\x4e\\xc9\\x98\\x4a\\x46\\x01\\x1b\\xc2\\x6b\\xfd\\xe0\\xc0\\x81\\x9b\\xb5\\x47\\x06\\xb5\\x65\\x63\\x8b\\x75\\x42\\xdc\\x4b\\x8b\\xf8\\x09\\x8d\\xc0\\x1f\\x16\\x1b\\x3b\\x12\\x96\\x18\\xb5\\x9a\\xde\\xd3\\x3c\\xb5\\x9c\\xe9\\x18\\x9a\\x67\\x62\\xdb\\xae\\x5b\\x0d\\x34\\xb7\\x1c\\x8d\\xbf\"},\n{{0x51,0xcf,0x86,0x8f,0x82,0x0e,0xed,0xa0,0xdb,0xd1,0x01,0x80,0xf7,0x77,0xe6,0x06,0x5c,0x93,0xa4,0x83,0xc5,0x8a,0x77,0x8b,0x67,0xe7,0xd8,0x42,0x30,0x2f,0xb7,0x67,},{0xab,0x08,0x8f,0x50,0x2f,0xbc,0xf2,0x15,0x0e,0x48,0x46,0xb3,0x4d,0x2c,0x80,0x97,0xff,0x01,0x3c,0x02,0xa8,0xb9,0x7c,0xfc,0xf2,0xb9,0x5a,0x1c,0x72,0xdf,0x3e,0x24,},{0xe1,0x53,0x42,0xa1,0x1c,0xaf,0x89,0x28,0x95,0xe4,0x66,0x22,0x88,0x63,0xd0,0x83,0xb0,0x69,0x2f,0x01,0x06,0x10,0x74,0x8c,0x23,0xdf,0x2f,0x11,0xd2,0x94,0x75,0xba,0xfc,0xe9,0x27,0xca,0xfe,0x7f,0x07,0xef,0xb8,0xc3,0x47,0xed,0x56,0x63,0xe7,0x3b,0xea,0x89,0x53,0x1c,0xed,0xc0,0xc3,0x48,0xe7,0x9b,0x6e,0x58,0xa7,0x57,0x49,0x07,},\"\\x7c\\x2d\\x8e\\xe8\\x2d\\x9a\\xbf\\x8a\\xa9\\xc7\\x24\\xc7\\x5b\\x90\\x99\\x04\\x73\\xf1\\x31\\x76\\x3f\\xe9\\x3b\\x30\\xcb\\x04\\x72\\x35\\x88\\x62\\x1d\\xa2\\xa3\\x27\\x92\\x8b\\x22\\x64\\x9f\\xa0\\x62\\xcd\\xea\\xbd\\x77\\x76\\x15\\x38\\xb2\\x70\\x9b\\x8f\\xb7\\xa2\\x00\\x6e\\x50\\x35\\x09\\x13\\x4c\\x92\\x9c\\x30\\x11\\xe1\\xd7\\x28\\xa5\\x7a\\x4e\\x17\\x51\\x98\\x07\\x5e\\x21\\x42\\x53\\xf3\\xf3\\x0e\\x01\\xb6\\xe0\\x4e\\xab\\xd4\\xde\\x06\\x78\\x95\\x58\\xe6\\x98\\xb1\\x86\\xef\\xe3\\x4b\\x32\\x12\\x95\\x68\\xb3\\xe8\\xd0\\xd7\\xea\\x3f\\xf0\\x0b\\x3f\\x25\\xa4\\x22\\x36\\x89\\x3a\\xa8\\xa4\\x1b\\x67\\x4a\\x0a\\xb5\\xf4\\x1e\\x7b\\x28\\xcf\\x5a\\x7c\\xb7\\x65\\xe1\\x8e\\xad\\x6d\\xe6\\xa3\\x53\\xa7\\x82\\x4a\\x3c\\x49\\x78\\x60\\x38\\xd6\\xf4\\x93\\x7f\\x32\\x64\\xd6\\xcc\\xf0\\xc0\\xa2\\x46\\x5b\\xb6\\x93\\xe5\\x2b\\x3d\\x1e\\x6e\\xb9\\xae\\x4c\\xb6\\x5d\\x09\\xcf\\xf5\\x48\\x42\\xe8\\x53\\x62\\x85\\x7a\\x59\\xf7\\x19\\x8a\\x68\\x8a\\x3d\\xf3\\x85\\x13\\xcd\\xd6\\x1e\\x21\\xdf\\xd8\\x59\\x14\\x2c\\x83\\x44\\xa3\\xb8\\xb2\\xa7\\xc7\\xdb\\x17\\x0f\\x39\\xf8\\x7c\\xa3\\xff\\x8e\\xd4\\x27\\x96\\x2b\\x2b\\x1a\\x14\\xd1\\x22\\xfa\\x2d\\x5a\\xea\\x2a\\x66\\x40\\x11\\x7d\\xd2\\x58\\xfa\\x0f\\xc5\\x4a\\xc6\\xe9\\x40\\xbc\\x16\\xd2\\x11\\xec\\x9a\\xdf\\x91\\x4a\\xb1\\x65\\x78\\xf5\\x21\\xf6\\x55\\xd2\\x12\\x7e\\x79\\xe8\\x71\\xbf\\x7f\\xa7\\x54\\x47\\x19\\xd5\\x8e\\xd8\\x47\\x85\\x0c\\xb2\\x7b\\x99\\xeb\\x8f\\x29\\xb1\\x6c\\xdc\\xc2\\x8b\\x15\\xc1\\x25\\x9a\\xb4\\xd5\\x89\\x70\\x5a\\x40\\x66\\x88\\xf6\\x05\\xa2\\xeb\\xf5\\x80\\x51\\xc4\\x3a\\x77\\xc4\\xe0\\x1f\\xd6\\xf7\\x49\\xd3\\x2d\\xb4\\xe8\\x9f\\x26\\x3c\\x2c\\x16\\xde\\x18\\x1f\\x0e\\x6b\\xdd\\x0a\\x6a\\x64\\xff\\xe6\\xf1\\x82\\x94\\x44\\x09\\x6d\\x9f\\x3e\\x2b\\x67\\xe4\\xbb\\x00\\x66\\x50\\xb5\\x92\\x9d\\x1f\\x82\\xeb\\x11\\xbb\\xed\\x24\\xe8\\xf1\\x01\\x8a\\x73\\x84\\x60\\x5a\\x3c\\xf2\\x9a\\xb5\\x98\\x33\\x79\\x39\\xc7\\x6a\\x3b\\xe8\\x61\\xe4\\x83\\xc5\\x80\\x5e\\xc3\\xce\\xe4\\x5e\\x34\\x24\\x84\\x7a\\x08\\x55\\x8d\\xcc\\x99\\x49\\x9f\\xb9\\x38\\x2a\\xca\\xe5\\x6c\\xdc\\x87\\xfb\\xd5\\xb2\\x6f\\xf9\\x4c\\x86\\xf2\\xe1\\x08\\x79\\x43\\x83\\x50\\x1c\\x8b\\x33\\x36\\x68\\x50\\xa7\\x6a\\x0d\\xfc\\x0a\\x7c\\xd7\\x89\\xa0\\x3f\\x01\\xa3\\xe9\\xd9\\xe9\\xae\\x39\\xfd\\x72\\x45\\xdc\\x29\\x29\\x9d\\x24\\xf3\\xb4\\xb1\\x67\\xca\\xcc\\xd2\\x23\\xa9\\x9b\\x6b\\x20\\xa3\\xb6\\x73\\xdc\\x5f\\x74\\x66\\xd0\\xb2\\xf8\\x15\\x09\\x8a\\x49\\x7c\\xca\\xf8\\x04\\x20\\x16\\x8e\\xdd\\xbf\\x4d\\xa5\\x7b\\x86\\x66\\xe9\\xd3\\x3c\\x48\\xeb\\x30\\x4b\\x4c\\xfc\\xf4\\x57\\xcd\\x76\\x59\\x54\\x3f\\x6d\\x1e\\x66\\x18\\x90\\xf5\\x62\\xb4\\x3b\\x8b\\x6d\\x1c\\x4d\\xcc\\x07\\x7b\\x60\\xbf\\xa5\\x33\\xff\\xab\\x92\\x8d\\xbf\\xd9\\x55\\xdc\\x51\\x16\\xd7\\x70\\x95\\x0b\\x69\\x0e\\x21\\x06\\xad\\x52\\xd4\\x2c\\x31\\xc2\\x2b\\x88\\x48\\x89\\x43\\x32\\xb5\\xc6\\x99\\xe5\\xc3\\x31\\xfb\\x38\\x1e\\x58\\x12\\xe7\\x52\\x6f\\xdf\\x4b\\x8a\\xa2\\xda\\xaa\\x2c\\xa2\\xcf\\xb9\\xc9\\x21\\x11\\xb6\\x1c\\xbc\\x3d\\x1e\\xef\\x6c\\x8c\\x67\\x37\\xf0\\x55\\x88\\xf0\\x44\\x67\\xdb\\x83\\x30\\x84\\x3a\\xcc\\x98\\xdc\\x1a\\x16\\xfb\\xd9\\xd9\\xd9\\x4b\\xd8\\xbf\\xde\\x26\\xc3\\xf7\\x1d\\xee\\x72\\xb5\\x09\\x10\\xc3\\x6b\\x24\\x0f\\x80\\x2a\\x61\\xca\\x16\\x37\\x2f\\x6f\\xfa\\xad\\xb2\\xbe\\x4e\\x85\\x3c\\x5e\\xd6\\x9a\\x3d\\x1f\\x6c\\x7b\\x2d\\xe5\\x13\\xc5\\x3a\\x3f\\xdd\\x0a\\x67\\x6f\\x83\\xd0\\x9d\\x5c\\x51\\x17\\x60\\x47\\xd9\\x20\\x07\\x16\\xbf\\x22\\xba\\xe4\\x5f\\xe0\\x1b\\x3e\\x0c\\x2c\\x51\\xc1\\x6e\\x46\\xad\\x06\\x37\\xf7\\x9f\\x9b\\x4d\\x83\\x86\\x77\\x04\\xfe\\xda\\x9f\\x22\\x78\\x31\\xde\\xa2\\x63\\x39\\x9c\\xa2\\x77\\x1a\\x4e\\x78\\xb4\\xdf\\x8a\\xc0\\xde\\x6a\\x94\\x1e\\xab\\x37\\x0b\\x1f\\xdb\\x47\\xda\\xf6\\x64\\x2a\\xae\\xaa\\x63\\x17\\x0f\\xa9\\xb3\\xd1\\xe1\\x62\\x8f\\x7c\\x4e\\x7c\\xf0\\xea\\x8b\\x8a\\x8e\\x51\\x8c\\xba\\xce\\xf9\\xad\\xe8\\x4d\\xf0\\x32\\x48\\x48\\x47\\xff\\xb6\\x1b\\xbd\\x07\\xe8\\x72\\x7c\\xc4\\xc2\\x5d\\xa5\\x77\\xb2\\x64\\x51\\x9b\\x49\\x99\\xfa\\x7c\\x0b\\xc3\\x23\\xd4\\xf3\\xf9\\x73\\x9f\\x78\\x0b\\x9b\\x2c\\x23\\xc7\\x78\\x55\\xee\\x5f\\x6d\\xcc\\x40\\x15\\x44\\xd6\\xb6\\x4b\\x27\\x70\\x15\\x8f\\xdc\\x6c\\x12\\xf4\\xd8\\x9b\\xeb\\x04\\x4e\\x0e\\x85\\xac\\x7a\\x68\\xd4\\x29\\x17\\xb1\\x34\\x51\\x14\\xb9\\xa6\\x72\\xd1\\x23\\x1b\\x2c\\x6c\\x0f\\x96\\x9f\\x20\\x35\\x31\\xe7\\x1b\\xbb\\x40\\x05\\xb1\\x03\\xa7\\xdc\\x3a\\x58\\xb5\\xb8\\x24\\xa7\\xe0\\x1b\\x6e\\xb9\\xf4\\x96\\xdf\\xa6\\x4d\\x64\\xd8\\xc6\\x77\\x7f\\x53\\xaa\\x58\\xd5\\xda\\x04\\x6d\\x72\\x6f\\x55\\x45\\x4c\\x88\\xb6\\xd7\\xd4\\xab\\x0d\\x21\\x98\\xa8\\x97\\x09\\xf1\\x18\\xa6\\xb3\\x24\\x60\\xb9\\xeb\\xce\\xff\\x3f\\xdd\\xc6\\x05\\xda\\x77\\xef\\x3d\\x1b\\xa3\\x0f\\xec\\xf0\\x7b\\xe2\\xf5\\x31\\x3f\\x4e\\xe6\\x35\\xaf\\x5e\\x95\\x61\\xd8\\x77\\xe9\\x9c\"},\n{{0x54,0x3d,0x5f,0x1d,0x4a,0x6e,0x10,0x29,0xb1,0x91,0x41,0x38,0xfb,0x1f,0x46,0x59,0xe6,0x94,0x56,0x55,0x72,0x07,0x40,0x66,0x88,0xa2,0x03,0x5c,0xbb,0xb2,0xa6,0x8a,},{0x3c,0x83,0x79,0x0c,0x3b,0x45,0x53,0xde,0xae,0x4f,0x84,0x3b,0x50,0x1d,0x26,0xf6,0x16,0x70,0x93,0xee,0x54,0xe2,0x79,0x75,0x9f,0xfa,0xd8,0xcb,0xc0,0x61,0xe7,0x20,},{0x55,0x20,0x11,0x94,0x02,0x6f,0xd6,0x44,0x8b,0x1d,0x52,0xf8,0x3e,0xd2,0x0a,0xc2,0x84,0xe7,0xe7,0x7f,0xa9,0x2d,0x52,0x95,0xd3,0x38,0x25,0xce,0xa3,0xac,0xa4,0x7e,0xc7,0xaa,0xca,0x2f,0xc0,0x86,0x79,0xf9,0xac,0xfc,0xed,0xb3,0x76,0xfd,0xa4,0x61,0x9b,0xe3,0x27,0x2c,0x74,0x45,0xe8,0x70,0x5c,0x30,0x61,0x41,0xcd,0xe1,0x6c,0x0f,},\"\\xfe\\x00\\x57\\xf0\\x62\\xfc\\x87\\x13\\x24\\xb8\\xbd\\x5d\\x42\\x7e\\x9a\\x52\\x76\\x23\\x1b\\xd3\\x09\\x90\\x7e\\x58\\x81\\xd7\\xae\\x53\\xb1\\xf3\\x70\\xc2\\xa4\\x33\\x02\\xa1\\x65\\x10\\xb4\\x60\\x64\\xa3\\x07\\x36\\xba\\xc9\\x09\\x51\\xf1\\xd9\\x88\\x1a\\xf6\\x2c\\x70\\x14\\x83\\xeb\\xb9\\x27\\x2a\\xd7\\x72\\x12\\xee\\xb5\\xfc\\xbc\\x7e\\xc2\\x28\\xd9\\x69\\xf8\\x90\\x27\\x32\\x11\\x3b\\x98\\xe3\\xbf\\x82\\xdf\\xea\\xdd\\x0d\\xe5\\xe7\\x65\\xd2\\x87\\x0b\\x12\\xd1\\xf9\\xb5\\xa2\\x82\\x97\\xc9\\xfd\\xd1\\x49\\x5c\\xf8\\x77\\x89\\x19\\x6a\\x7d\\x64\\x4e\\xec\\xd9\\x35\\x87\\xdb\\xf2\\x0c\\x28\\xeb\\x09\\xda\\x28\\x66\\x03\\xc5\\x82\\xd2\\x12\\x9a\\x65\\x7d\\xb2\\xd1\\x7a\\xdd\\x35\\x58\\xdd\\xe0\\x29\\xce\\x27\\xb8\\x83\\x52\\xde\\x3f\\x95\\xab\\xa1\\x7e\\x1e\\xd1\\x91\\x37\\x22\\xdb\\x08\\xa7\\x95\\xdf\\xbb\\x70\\xd6\\x2a\\x88\\x02\\x72\\x4c\\xb0\\xf5\\x35\\xf8\\x48\\xd0\\x52\\xaa\\x3d\\xde\\x91\\x66\\x96\\x3a\\x80\\x41\\xfc\\xcc\\x4e\\x60\\xbf\\xb1\\x1d\\xe2\\xbf\\x28\\x6e\\xb6\\x02\\xa4\\xaf\\x84\\x2f\\x4d\\x1a\\x34\\x0d\\x78\\xbb\\xbc\\xb2\\x85\\x7f\\x0c\\x30\\x8f\\x44\\xbb\\x10\\x1e\\x7b\\xc8\\xb7\\x41\\xd5\\x06\\x09\\x4e\\x27\\xbb\\xaf\\xa7\\x24\\x28\\xef\\x66\\x6e\\xa6\\xea\\x16\\xf7\\x99\\xb4\\xee\\x58\\x27\\x8f\\x04\\x59\\x74\\xd8\\x6d\\xc7\\x2c\\xf5\\x26\\x0d\\x96\\xf9\\xc0\\x9b\\x2f\\x11\\x81\\xe1\\xa4\\x50\\x0f\\x92\\x83\\xdc\\x67\\x7f\\x38\\x4f\\xf6\\x4e\\x51\\xe8\\x9f\\x76\\x58\\x20\\x20\\x32\\x6c\\x38\\x8c\\x08\\xa0\\xfd\\x00\\xde\\x73\\xd5\\xd4\\x9c\\x06\\xc0\\xc6\\x84\\x19\\x1a\\x26\\x4f\\xff\\x72\\x6d\\x87\\x2d\\xc3\\xae\\x49\\x6c\\x7b\\x47\\x8c\\xfc\\x61\\xb5\\x17\\x14\\x19\\x2f\\x76\\x46\\x3e\\x3d\\x0a\\xab\\x41\\x0e\\xa1\\x15\\xe8\\xbe\\xfe\\xdb\\x99\\x7d\\xdd\\x16\\x99\\x21\\xb3\\x20\\x7e\\xa6\\x6c\\x1f\\x59\\x45\\x0b\\x76\\x23\\x12\\x9f\\xd1\\xe2\\xdd\\x3d\\xa8\\xf5\\x20\\x63\\x91\\x17\\x13\\x38\\xea\\x0e\\xc8\\xef\\x3c\\x59\\xed\\x8a\\xfc\\x69\\xf3\\x86\\x5c\\x29\\xa0\\x72\\x3a\\x9b\\xbe\\x95\\xa7\\x42\\x68\\x1e\\xf9\\x85\\x7e\\x81\\xab\\xc8\\x0c\\x92\\xd2\\xa7\\x18\\xa8\\x04\\xf5\\x30\\x4f\\xef\\x3c\\x63\\xd7\\x99\\xa6\\xef\\x87\\x82\\xa7\\xdb\\x46\\x68\\x1d\\x0d\\xe3\\x50\\x64\\x46\\x98\\x22\\x67\\xb2\\x15\\x2b\\x0c\\x32\\x18\\x69\\xe2\\x3c\\xce\\x8c\\x4e\\xbe\\xbe\\xaf\\x4a\\xa1\\xeb\\xe9\\x28\\x3b\\x69\\x26\\x05\\x26\\x0f\\xf6\\x21\\xb0\\x3c\\x10\\x82\\x2a\\xa5\\xf6\\xd0\\x3b\\xde\\xf4\\x9c\\x46\\x2a\\x68\\xd4\\x71\\xe8\\x49\\xe1\\x64\\xe3\\x87\\x4f\\x6e\\x9f\\x6c\\xb3\\xb5\\xf2\\x93\\xeb\\x38\\xae\\x52\\x45\\xa1\\x59\\xec\\x42\\x61\\xa9\\xbf\\x6b\\x5f\\x7b\\x76\\x15\\xfd\\x33\\x9e\\xa1\\x27\\x33\\x11\\x3c\\xe7\\x67\\xf8\\x83\\xae\\x66\\x75\\x41\\x7f\\xc7\\x70\\xb5\\x0b\\xd6\\x0e\\x6f\\x20\\xad\\xdb\\x29\\xc1\\xf7\\x50\\x62\\x33\\xe3\\x2a\\x7e\\xbf\\xad\\xab\\xff\\x98\\xcf\\xd0\\x9b\\x2b\\x3b\\xbd\\x3e\\xae\\x00\\x69\\x54\\x8b\\x9d\\x89\\x87\\xaf\\x46\\xca\\x98\\xeb\\x09\\x5b\\xac\\xbd\\x87\\x47\\x24\\xba\\x10\\xf3\\x63\\x3a\\xa0\\x8a\\xb6\\xec\\x26\\x49\\x4d\\xdf\\x68\\x54\\x30\\x9b\\x55\\xd4\\x3b\\xdb\\xd2\\x9a\\x75\\x56\\xf1\\x2d\\xfb\\x23\\xcd\\x0d\\xb4\\xeb\\x39\\x37\\xa6\\x5c\\x4a\\xed\\x96\\xe8\\x7b\\x34\\x65\\x55\\xf9\\xfc\\x68\\x97\\x94\\x3a\\x0f\\xae\\xe6\\x5c\\xcf\\x39\\x4b\\xd8\\x9b\\x38\\x1b\\xee\\xce\\x25\\xd1\\xba\\x68\\xf8\\xfe\\x32\\xc2\\x3b\\x33\\x54\\xf5\\xbe\\x7e\\x3e\\xa3\\xc0\\xde\\xc0\\xf7\\xec\\x2d\\xd8\\x3f\\x92\\xb7\\x30\\x58\\x89\\x2b\\x63\\x8d\\x4c\\x3b\\x72\\x42\\xbb\\x8f\\x55\\xbf\\x08\\x7b\\xa4\\x5a\\x19\\x0a\\x69\\x8b\\xae\\x67\\x5e\\x0c\\xd5\\xe8\\x44\\x6f\\x2b\\x21\\xae\\xb6\\x3d\\x2c\\xae\\xa0\\xf6\\x79\\xa8\\x37\\xe7\\x93\\x57\\x30\\x8d\\x9f\\x0b\\x8a\\xf3\\x1f\\x9d\\x08\\x00\\x8c\\x39\\xee\\x8d\\x34\\x75\\x28\\x71\\x3c\\x88\\x50\\x01\\x7a\\x7f\\x4a\\xb9\\x8a\\x35\\xc7\\x53\\x19\\x40\\xfa\\x76\\x21\\xe6\\x72\\x03\\xee\\x78\\x2d\\xb3\\xa2\\xfa\\xa3\\x0f\\x3a\\xa8\\x50\\xa5\\xff\\x7a\\xae\\xd8\\x4c\\x00\\xff\\xd2\\x14\\xf2\\xc9\\x26\\x17\\x35\\xfa\\xc3\\x25\\x9d\\x50\\xe0\\x3c\\x26\\x52\\x50\\x52\\x79\\xd9\\x12\\x51\\x92\\x7d\\xe5\\xe5\\x6a\\x8b\\x90\\x64\\xcc\\xf9\\xf4\\x5d\\xcb\\xef\\x46\\xe1\\x18\\x9c\\xed\\x2b\\xc7\\x9e\\x6f\\xf6\\x52\\xe6\\x90\\x97\\xac\\xe5\\x56\\x8b\\xb2\\xd5\\xbe\\xf3\\xce\\x21\\xa2\\x5b\\x3f\\x79\\xee\\x27\\x5e\\xa3\\x4e\\x62\\x13\\x80\\x56\\x6d\\x70\\x4c\\xd9\\x3f\\x24\\xdd\\x90\\x20\\x93\\x2c\\xc0\\x52\\x18\\xc2\\x3b\\x5b\\x22\\xff\\xfa\\x7e\\x99\\xee\\x7f\\xe4\\x57\\x87\\x6a\\x5e\\x33\\x64\\xc9\\xa8\\xe8\\xb0\\x49\\xcf\\xa2\\x09\\x69\\x77\\x4f\\x50\\x6d\\x19\\x96\\xcb\\xe6\\xef\\x5a\\x37\\x79\\x3e\\xcd\\xb0\\x4c\\xfd\\xea\\xed\\x7d\\xcf\\x79\\xab\\x27\\x84\\x74\\xdd\\x77\\x08\\x22\\xd4\\xb3\\x6f\\xc6\\x8e\\x4b\\x2d\\xd6\\x61\\xef\\x99\\xde\\x01\\xde\\x6e\\xec\\x57\\xfa\\x57\\x3e\\xde\\x10\\xfb\\xbd\\x5a\\xc6\\xfd\\x6c\\xd8\\xbb\\x4e\\xee\\x50\\x9d\\xbb\\x46\\x10\\x37\\x44\\x01\"},\n{{0xf8,0xd2,0x57,0xfd,0xfc,0xf9,0x97,0x96,0xf8,0xce,0x4d,0x8a,0xad,0xe3,0xb2,0x25,0xa5,0x3c,0x26,0xfe,0xec,0xef,0x39,0x5b,0x95,0x61,0xd9,0xd5,0x87,0xf5,0xa3,0x3c,},{0xf6,0x6b,0xd4,0x87,0x7d,0xf7,0x8a,0xec,0x04,0xca,0x7e,0x77,0x73,0x28,0x99,0xde,0x06,0x77,0x7e,0x69,0x86,0x29,0xf2,0x99,0x69,0xf8,0xfa,0x9c,0x2f,0x47,0xab,0x9e,},{0x92,0x35,0xd4,0x48,0x07,0x86,0x98,0x16,0xe2,0x8e,0x42,0xc8,0x1c,0x80,0x1f,0xfb,0x12,0x1d,0xe8,0x26,0xc0,0xd3,0x3d,0xcc,0x4a,0x4e,0x1c,0x93,0x2d,0x52,0x28,0xb6,0x39,0xbb,0x29,0x4e,0x16,0x09,0x0a,0x93,0xd1,0xf6,0x90,0x4a,0x70,0x04,0x22,0x2f,0xda,0x0a,0x55,0x44,0x6d,0x99,0x01,0xc7,0x23,0x40,0x00,0x7b,0xb4,0x5a,0xe1,0x03,},\"\\x23\\x3e\\x1e\\xf9\\x01\\xab\\xcb\\x69\\xfb\\x48\\x60\\x85\\xd8\\xdb\\x02\\x33\\xff\\x78\\xf3\\x7b\\x13\\x6f\\x0a\\xfe\\x24\\xf7\\xda\\xc1\\x94\\x4c\\x36\\x78\\xe7\\x4f\\xed\\x58\\xa1\\xad\\x54\\x83\\x5b\\x7d\\xbc\\xb4\\x6f\\xff\\x6c\\x35\\x24\\x31\\x22\\x73\\x30\\x0b\\x6d\\x87\\x8a\\x93\\xe0\\x60\\x8a\\x4a\\xba\\xca\\x4e\\x31\\x94\\x72\\x2b\\xb9\\xe2\\x3d\\x17\\x19\\x4d\\x86\\x67\\xb8\\x4f\\x2d\\xb0\\x38\\xc2\\x4e\\xfb\\x8f\\x53\\x40\\x9c\\xf5\\x59\\x4f\\xdd\\xb8\\xbc\\xd6\\x1f\\x74\\xcf\\x07\\x26\\xb5\\x1c\\x65\\x1c\\xe0\\x1e\\xb6\\x6a\\x59\\xb4\\x55\\xf7\\xd8\\xa7\\xd6\\x0d\\x39\\x27\\xe0\\xc6\\xc5\\x4b\\x13\\x8e\\x01\\x92\\x53\\x71\\xd2\\xd9\\xd9\\x62\\xaa\\x98\\x2f\\x5e\\x60\\x85\\x28\\x0c\\xc0\\x5f\\x35\\x69\\x93\\x91\\x1f\\xd2\\x03\\x9d\\xfc\\x34\\x21\\x17\\x97\\x02\\x91\\x38\\x1d\\x82\\x02\\x7d\\xb3\\x6c\\x79\\x91\\x00\\x05\\x7d\\x93\\x52\\xb2\\xcd\\x87\\x9d\\x9c\\x82\\xaf\\x73\\x4b\\x7f\\xa2\\x97\\xd2\\x11\\x49\\xc9\\x78\\xaa\\x5e\\x12\\x5b\\x20\\x37\\x2a\\x9b\\x2e\\x0e\\xd3\\x57\\x33\\x7e\\xfa\\xea\\x13\\x91\\xf3\\xb9\\xef\\x11\\xe3\\xe5\\x13\\x5b\\xb7\\x0b\\xdb\\xe3\\x2a\\x9b\\xdb\\x7c\\x3c\\x42\\xd5\\xd5\\x7c\\xc8\\xda\\xb6\\x81\\x16\\x28\\xa0\\x10\\x89\\x49\\x5c\\xb8\\xa4\\xa7\\x6a\\x48\\x29\\x6c\\xd8\\xdf\\xaf\\xc0\\x05\\xad\\x49\\xd7\\x0b\\xb1\\x9f\\xac\\xa2\\x08\\x4a\\x1b\\x6f\\x5e\\x48\\xd2\\x3c\\x03\\xfb\\xcf\\x6f\\x10\\x6d\\xb7\\x70\\xf0\\x7c\\x33\\xe8\\xe7\\xf4\\x75\\x7d\\xa9\\x04\\xa4\\x4d\\xd0\\xe7\\x38\\xf3\\xd5\\x73\\x3a\\x32\\x93\\x75\\xce\\xd7\\x4f\\x3c\\x42\\xbf\\xcd\\xbb\\x91\\x01\\x00\\x45\\x5d\\x6a\\xa7\\xd2\\xe3\\xe3\\xaa\\xa5\\x8a\\x82\\x96\\x30\\xd3\\x76\\xb0\\xb4\\x66\\xdc\\x85\\xaa\\xc4\\x8f\\xe2\\x69\\x94\\x6a\\x7b\\xc7\\x2d\\x91\\xeb\\x37\\xde\\xd2\\xf4\\xa7\\x7c\\x68\\x4b\\xe0\\x10\\x93\\xfd\\x12\\xde\\x9d\\x9d\\x83\\x19\\x9c\\xcc\\x50\\x95\\x9a\\x48\\xd6\\xe9\\xa4\\x14\\x27\\x56\\x60\\x92\\xf0\\x4a\\x0f\\x95\\xca\\x52\\x37\\x2e\\x07\\x62\\xb9\\x66\\xce\\x62\\x32\\x05\\x5a\\x4f\\xd7\\x57\\xc6\\x1b\\x8b\\xad\\x83\\xba\\xef\\x91\\xa3\\xc2\\x77\\x2f\\xb3\\x2e\\xad\\x8f\\x59\\x1a\\xc1\\xe0\\x2b\\xbf\\x90\\xa7\\xf6\\xc3\\x90\\x79\\xb8\\x6f\\xb8\\x14\\xcc\\x24\\x2e\\x98\\x0f\\x0b\\x8b\\x1a\\x2c\\xec\\xb8\\xe6\\xd4\\xe8\\xa5\\x21\\x1b\\xf8\\xba\\xbf\\x38\\xe8\\x29\\xab\\x98\\x83\\x60\\x8b\\xd6\\xd5\\x9e\\xa5\\xe8\\x36\\xa9\\xb4\\xa4\\xfb\\xed\\xed\\x1b\\xea\\x2f\\xfe\\x97\\x7e\\x8c\\xf3\\x61\\x5c\\xa4\\xa5\\x0f\\xea\\x1f\\x05\\xf1\\xfe\\x53\\xc8\\xea\\xc5\\x00\\x32\\x3e\\x1f\\x52\\xa8\\x06\\x83\\x15\\x39\\x95\\x79\\x88\\xd7\\x9a\\xcc\\x7b\\x54\\xf7\\xd0\\x2b\\x48\\x0c\\x46\\x9f\\xd6\\x95\\x40\\xfe\\xa4\\xbd\\xd6\\x8c\\xbd\\xc6\\x8c\\xf9\\xc7\\x87\\x2f\\xd7\\x92\\x59\\x1b\\x01\\xe9\\xd9\\x90\\x2d\\x8a\\x61\\x4f\\x4c\\x21\\x82\\x3f\\x23\\x50\\x8f\\xfd\\x49\\xff\\x21\\x8b\\xea\\x92\\x2e\\xc1\\x41\\xef\\xf6\\x0d\\xa1\\x77\\xcc\\xad\\x7d\\x7b\\x9d\\x44\\x4f\\x3b\\x03\\x45\\x81\\x15\\xf1\\x16\\xcc\\x6e\\x37\\x62\\x5c\\x39\\xcb\\xad\\xf0\\x93\\x62\\xf3\\x1d\\x33\\xf4\\xc1\\x3c\\x33\\xb6\\x29\\x20\\x07\\xf2\\xca\\xfd\\x19\\x4f\\x62\\xc6\\x43\\xe7\\xa2\\x55\\x71\\x56\\x4f\\xeb\\xad\\x7d\\x33\\xe3\\x64\\xb6\\x33\\xd0\\x08\\xb0\\x90\\xd7\\xa0\\x91\\x35\\x8b\\xc6\\x9c\\x56\\x7b\\x95\\x22\\xb5\\xc1\\xcd\\x01\\x21\\x8d\\x38\\x52\\x9a\\xeb\\xb0\\x3d\\x9c\\x2a\\x5e\\xb2\\x28\\x5a\\x71\\x76\\xf9\\x8c\\x28\\x03\\x6f\\x21\\xe1\\x9e\\x92\\xb4\\x06\\xe9\\x48\\x95\\xfa\\x28\\x1b\\x35\\x22\\x8f\\xbf\\x76\\xe7\\x3e\\x17\\x58\\xaf\\x1b\\x43\\x4a\\x4d\\xf9\\x8e\\x8c\\xc5\\x56\\xb9\\xd8\\x3f\\x6b\\x0b\\x7f\\xf5\\x2c\\x68\\x0f\\x65\\xef\\xe4\\xe0\\x0c\\x59\\xb4\\x6c\\xe5\\x93\\xbf\\x98\\x89\\x98\\x05\\xd0\\x2b\\x91\\x65\\xb7\\x42\\x98\\x49\\xe7\\x39\\x53\\x77\\x0a\\xe3\\x93\\xe4\\xf1\\xf9\\x7c\\xb9\\x0c\\xd6\\x15\\x9c\\xc9\\x39\\x52\\xae\\x8a\\x4d\\x3d\\x56\\xa9\\xa9\\x5d\\xf7\\xcf\\xab\\xac\\xd4\\xd0\\x30\\xd7\\x36\\xea\\x45\\x4d\\xfa\\x4b\\x4a\\xed\\x1b\\xcd\\x88\\x5d\\x2f\\xbe\\xa5\\xff\\xa2\\xcf\\x29\\x27\\xc1\\x37\\xc8\\x6b\\xe4\\xfe\\x01\\x64\\x12\\x62\\x8f\\xe7\\xa0\\xa0\\xf0\\x2b\\x6b\\x6a\\x9a\\x21\\x68\\x93\\x2b\\x94\\x3f\\xf8\\xb2\\x8d\\xd5\\x87\\xe7\\x72\\x87\\x79\\x0a\\xaa\\xa6\\x9a\\x98\\x50\\x6c\\x76\\x4e\\x6f\\x5b\\xa6\\x33\\x8c\\x09\\xf3\\x82\\xe1\\xb9\\x87\\xd9\\x9f\\x14\\xa3\\xe1\\x95\\x8c\\xb6\\x2a\\xe6\\x70\\x5a\\x57\\x7f\\x9f\\xfc\\x67\\x30\\x64\\x01\\x12\\x87\\x41\\xa8\\xd0\\xaf\\x03\\xc0\\xaa\\xaf\\x6a\\xf0\\x6b\\xd8\\x8e\\xe4\\xb0\\xaf\\x67\\x03\\xe0\\xea\\x60\\xb0\\x40\\x9a\\xce\\x24\\x57\\x2f\\xb3\\x86\\xe0\\x7e\\x9c\\x22\\xc9\\x68\\x6b\\xdc\\x66\\xd4\\xfc\\xf3\\xc7\\x46\\x1d\\x38\\x33\\xa4\\xc3\\x01\\x32\\x43\\x60\\x7d\\x4d\\x15\\x82\\x17\\x18\\x73\\x26\\xdf\\x51\\x72\\x5a\\x6b\\xc5\\x11\\x6e\\x99\\x0b\\xef\\x8a\\x5a\\x95\\x79\\x60\\x02\\x07\\x20\\x6b\\xfc\\x3a\\x6d\\xcf\\x07\\x46\\xef\\x75\\x6f\\xd9\\x39\\xe1\\x87\\xf6\\x68\\x75\\x07\\x16\\xc0\"},\n{{0x8d,0xa9,0xf5,0x4d,0xa0,0xb6,0xa5,0xa3,0x89,0x85,0xb8,0x8b,0x71,0x33,0x9d,0xc7,0x38,0x4c,0xfd,0x5a,0x60,0xbe,0xe1,0x59,0xc3,0x94,0xc2,0x23,0x63,0xbc,0x7e,0xdd,},{0x1a,0xc1,0xa8,0xed,0xeb,0x21,0x7a,0xe9,0xb3,0xa3,0xde,0x53,0x0d,0x24,0xd8,0x3e,0x11,0xfb,0x65,0x38,0xcc,0x70,0x9b,0x52,0x99,0x4f,0xa9,0xc3,0xf1,0xfa,0xdd,0xc8,},{0xf6,0xdc,0xc2,0xd2,0x7b,0xaf,0x16,0xc4,0xf4,0x81,0x7f,0x87,0x49,0x91,0x57,0xd3,0xac,0x1f,0x84,0xed,0x39,0x8a,0x5e,0x8b,0x0d,0x50,0xf4,0x2e,0xdd,0x73,0x85,0xcf,0x06,0x33,0x7a,0x02,0x36,0x10,0x99,0x70,0xb7,0x9c,0xa0,0x9d,0x7c,0x98,0x31,0xc8,0x76,0xa8,0x02,0x79,0x94,0x21,0xc2,0xab,0xd0,0x75,0x87,0xf5,0xeb,0x66,0x16,0x0f,},\"\\xbd\\x53\\xba\\xba\\x66\\x57\\xd8\\xdb\\x8b\\xec\\xae\\x6e\\xab\\xff\\xa5\\x2b\\x01\\x5a\\x5a\\x05\\xfd\\xd2\\xe0\\x70\\x64\\x7d\\xe9\\x6f\\x9c\\xa4\\xdd\\x21\\x9f\\xe0\\xda\\x60\\x8f\\xa0\\x44\\x7f\\x46\\xd1\\x7c\\x9a\\x35\\x82\\x44\\xcd\\x54\\x08\\x59\\x65\\x82\\xcc\\xd3\\xcd\\xd0\\x15\\x1d\\x6f\\x09\\x23\\xe6\\x3d\\x16\\x68\\x37\\x84\\x5f\\x27\\x3f\\xca\\x7a\\xf6\\xc8\\x9d\\x8d\\x52\\x46\\x17\\x5c\\x21\\x67\\xfb\\xb9\\xc2\\xeb\\xf6\\xa7\\x59\\x54\\x91\\xf9\\x7a\\x97\\x13\\xb0\\x2b\\xdf\\x41\\x3e\\x20\\x9a\\xb2\\x2d\\xb7\\xdd\\x2b\\x37\\xfc\\x49\\x43\\x69\\x18\\xcc\\xeb\\xe5\\x74\\x6b\\xc6\\x4d\\xdd\\x6d\\xce\\x19\\xec\\x45\\x58\\xc4\\x0e\\x08\\x96\\xe2\\x19\\x09\\x28\\x0c\\xba\\x06\\xd1\\x6b\\x72\\xf3\\x1d\\x98\\x76\\x85\\xd0\\x71\\xdb\\x81\\x55\\xe9\\x9e\\xbc\\xc6\\xc8\\x21\\xd9\\x26\\x83\\xfd\\xce\\xe0\\x86\\x68\\xa5\\xed\\x58\\xf8\\x39\\xd9\\xed\\xaf\\xb9\\xf1\\x45\\x9d\\x48\\xde\\x8e\\x1b\\xb6\\xf7\\xce\\x84\\xda\\x0b\\xe4\\x11\\xc8\\xf7\\xbe\\x1b\\x9a\\x24\\xbc\\x5d\\x0f\\xe3\\xa9\\x6b\\x02\\x35\\x07\\x50\\xa5\\xcb\\x25\\x0b\\x49\\x55\\x5a\\x48\\x76\\x72\\xbd\\xff\\x3c\\x3f\\x78\\x4e\\x3f\\xb6\\x3c\\x1c\\x97\\xba\\x6a\\xe4\\x3a\\x10\\xe1\\x96\\xf1\\x88\\xdc\\xc6\\x35\\xe2\\x14\\xe2\\x9d\\xf5\\x09\\xe5\\x60\\x8a\\x53\\x67\\xaa\\x28\\x00\\xc1\\xa9\\x6a\\xd9\\x36\\xa9\\xe2\\xa5\\x79\\xb8\\x59\\x2e\\xc1\\x3a\\x35\\x93\\x36\\xa6\\x27\\x88\\xc3\\xec\\x55\\xc0\\xff\\xd6\\xa7\\xd4\\x9e\\xcb\\x7c\\x68\\x2e\\xfa\\x30\\x81\\x99\\xf7\\x08\\xd7\\x9d\\x0e\\x88\\x56\\x36\\x6d\\x26\\x9f\\xab\\x24\\xeb\\x1a\\x07\\x5c\\x96\\xc8\\x81\\xca\\xb8\\x97\\x08\\xce\\xd2\\x79\\x23\\x0d\\x3f\\x1f\\x3e\\xe1\\x73\\x67\\x22\\x83\\xeb\\x8d\\x8a\\x82\\x40\\x38\\xf6\\x48\\xac\\x43\\x72\\x75\\xd7\\x5a\\x0e\\x15\\xf7\\x1c\\xe5\\x6a\\x8a\\xeb\\x77\\x1f\\x07\\xa7\\xf3\\x2a\\xfc\\x9d\\x61\\x2a\\x13\\xbd\\x83\\xb7\\xf9\\x39\\x90\\xd3\\x8f\\xc3\\xf4\\xf4\\xab\\x8a\\xa9\\x43\\x0c\\x65\\x73\\x6e\\xb6\\x4b\\x16\\x80\\x6e\\x99\\x5c\\x1c\\xe9\\xdc\\xf4\\xc5\\x54\\x4e\\x7b\\x3d\\x01\\x54\\x1c\\x57\\x21\\xbb\\x4b\\xe4\\xcf\\x0a\\xe3\\x82\\xa0\\xc1\\xb1\\x69\\xd8\\xe4\\x18\\xde\\xfd\\x55\\x94\\x42\\xac\\xea\\x14\\xb0\\x0d\\x70\\x5b\\xcf\\xa7\\x8b\\xe0\\x75\\x6a\\x8f\\x37\\x7c\\xbf\\x18\\x3b\\xf2\\x59\\x06\\x87\\x41\\x15\\xd8\\xce\\x4c\\x3b\\xa8\\x74\\x10\\x29\\x38\\xa4\\xea\\x16\\x03\\x6d\\x91\\xa4\\x2c\\x5f\\x8f\\x18\\x86\\x55\\xca\\xcb\\x00\\xc8\\x8e\\x3a\\x68\\x50\\x88\\x16\\xe5\\xe1\\xc3\\x1d\\x27\\x18\\x0b\\xbb\\xa9\\x51\\x8a\\x96\\x30\\x72\\x6d\\x7d\\x04\\x7d\\xd8\\xd2\\xc0\\x40\\x12\\x19\\xe1\\x4e\\x6b\\xad\\xfc\\x9b\\x95\\xb7\\x7a\\x6a\\xce\\x9b\\xea\\x71\\xd1\\xb4\\x7c\\x21\\x89\\x03\\xa1\\x15\\xad\\x02\\x9e\\x7f\\x20\\x39\\xea\\x23\\xcf\\xd1\\xfa\\x6a\\x44\\xd0\\x89\\xfc\\xac\\xb6\\x78\\x15\\x3d\\x67\\x4c\\x0e\\x08\\x17\\x64\\x99\\x55\\x95\\xcb\\x68\\x94\\x89\\x5f\\x08\\xe2\\x5b\\x98\\x4e\\x3a\\x69\\x4c\\x92\\xfc\\x7c\\xbe\\x0f\\xfc\\x46\\x97\\x23\\x0b\\xcb\\x0c\\xa4\\x08\\xc2\\xd7\\x08\\x5c\\x11\\xba\\xde\\xb3\\xe6\\xc0\\xe7\\x5e\\x6c\\x49\\x8d\\xb1\\xbe\\xc1\\xed\\x2a\\x3e\\x24\\x45\\xc3\\x2b\\x19\\x13\\xa8\\x95\\x00\\xf6\\x9e\\x7f\\x23\\xf4\\x1d\\x62\\xe5\\xc1\\x89\\xf3\\x9a\\x05\\x6c\\xb9\\xfc\\x68\\xa4\\x52\\x02\\x3a\\x33\\x3f\\x75\\x22\\x0c\\xb9\\xb9\\x44\\x84\\xac\\xac\\x6b\\xbc\\x67\\x1f\\x59\\xff\\xa0\\x72\\xb7\\x1a\\x18\\x96\\xa1\\xb3\\x06\\xe9\\xdc\\x55\\x8d\\xa0\\xec\\x20\\xf3\\x73\\xe4\\xc3\\x55\\xe0\\xc5\\xec\\xcb\\xbf\\x13\\x50\\xc8\\xc0\\x79\\x14\\x89\\x2c\\x45\\x4d\\xef\\xce\\xfb\\x71\\x7b\\xe3\\x4d\\x08\\x7a\\xeb\\x24\\x4a\\x86\\xff\\x49\\xa6\\xc4\\x70\\xaf\\xb3\\x6b\\x40\\xfe\\x8b\\x71\\xc5\\x05\\xa4\\xff\\x7a\\xf2\\x98\\x4c\\x65\\x28\\x49\\x38\\xec\\x0e\\x40\\x52\\x31\\x52\\x1f\\x48\\x10\\x14\\x7d\\xc4\\xe3\\x73\\xfd\\xab\\x66\\x47\\xb8\\x6f\\x79\\x82\\x75\\x02\\xfd\\x08\\x7e\\x27\\xf3\\x10\\xd6\\xb3\\x12\\x36\\x31\\x13\\x84\\x21\\x55\\xc5\\x7a\\x32\\xba\\x03\\xb6\\xcf\\xf9\\x65\\x53\\x0b\\xd7\\x95\\xfc\\x29\\x2e\\x24\\x1c\\x9b\\x6c\\xa0\\x85\\x14\\x00\\x32\\xef\\xe7\\x46\\xf3\\x7d\\x57\\xe9\\x58\\x42\\x11\\x84\\xb8\\xa4\\xc1\\xa6\\xa1\\xe3\\x7d\\x45\\xe0\\x77\\x31\\x98\\x33\\x06\\x8d\\xdc\\xb8\\x9d\\x38\\xc7\\x5b\\xeb\\xa1\\xa6\\xe8\\xe4\\x05\\x28\\x88\\xec\\x18\\x16\\x2d\\xd6\\xff\\x0c\\x59\\xa2\\xfd\\x0b\\x47\\xf3\\x11\\x91\\x95\\x68\\x0f\\xfc\\xcd\\xdf\\x5f\\x76\\xb3\\x5f\\x02\\x2a\\xa6\\x6b\\xd1\\xac\\x56\\xf1\\xae\\x33\\x3e\\x9b\\x9d\\x04\\x6f\\x0b\\x79\\xa8\\x92\\xec\\xc4\\xf8\\xd2\\xf3\\x1e\\x17\\x53\\x6c\\x4c\\x62\\xa9\\xb5\\xe0\\x63\\xdd\\x2d\\xce\\x37\\xd3\\xd0\\xac\\xb4\\x20\\x23\\xeb\\x2f\\x2e\\xa3\\x29\\xd3\\x87\\x6c\\x23\\x86\\xa0\\x22\\x76\\xff\\xf9\\xd3\\x08\\xab\\xba\\xdb\\x72\\x74\\x30\\x1a\\x69\\x62\\xec\\xae\\xeb\\x20\\xbe\\xf5\\xe3\\x6a\\xff\\xfc\\x38\\x7c\\xa8\\xe1\\x85\\xe5\\x62\\xb8\\x65\\xb4\\x92\\x04\\xc1\\x7b\\x2a\\x70\\x11\\x9b\\x06\\x1c\\x29\\xc0\\xfe\\x90\\x04\"},\n{{0x7a,0x2e,0xfd,0x39,0x01,0x24,0xd3,0xfb,0xef,0xc5,0x4a,0x57,0x71,0x06,0xe7,0x4b,0x2d,0x1f,0x5d,0xd5,0x04,0xc0,0x50,0xd0,0xd3,0x59,0xe5,0x3c,0x0f,0x5c,0x87,0x2b,},{0xef,0xc3,0x03,0xd9,0x22,0xe8,0x8f,0x70,0xf3,0x8c,0x1a,0x2b,0x92,0x06,0x84,0xef,0x66,0x30,0x34,0xa1,0xb2,0x3a,0xb9,0xd6,0x9b,0x6c,0xe8,0xed,0x87,0x06,0xf7,0xf7,},{0xc2,0x8b,0x34,0x80,0x48,0x05,0xd8,0x1f,0x7a,0xef,0x78,0x49,0x70,0x67,0x0e,0xda,0xa4,0x17,0x23,0x2b,0xcc,0x67,0xda,0x9b,0x51,0xe9,0xc3,0xd7,0x4f,0xc4,0x99,0x1b,0xde,0x97,0xa0,0x6b,0xd5,0x3f,0xa0,0x0b,0xb4,0x40,0xfd,0x56,0x16,0xcd,0x0d,0xe6,0xe9,0xb0,0xd1,0x9f,0x2f,0x68,0xbf,0xaf,0x9d,0x4c,0x51,0x72,0xc4,0xe5,0x20,0x0a,},\"\\x23\\x8f\\xbe\\x9f\\xb3\\x5c\\x72\\x5c\\x6c\\x1f\\x32\\x92\\x48\\x09\\x4b\\xc7\\xda\\x1b\\x27\\x3e\\xdc\\x76\\x99\\xa7\\xe3\\x45\\x2b\\x57\\x88\\xd8\\x78\\x67\\xde\\xfc\\x40\\xa0\\x05\\x90\\xe8\\x75\\x80\\xd2\\xc0\\x27\\x5d\\xf5\\xab\\xcc\\xe0\\xe1\\xaa\\xa1\\x82\\x90\\xbf\\x93\\xb4\\x4e\\x5a\\xd9\\xd7\\x60\\xdd\\x21\\xf1\\xaa\\xca\\x38\\x31\\x78\\xf9\\xff\\xf9\\x13\\x0f\\x73\\x18\\x7b\\xa9\\xd3\\x1e\\xa3\\x60\\x4a\\x1c\\xdf\\x39\\x11\\xe1\\x43\\x77\\xa0\\xce\\x8b\\x44\\x18\\x9a\\xda\\xa7\\xaa\\xc2\\x3b\\x6c\\xdc\\x7a\\x42\\x5b\\x7e\\xa7\\x45\\x50\\x84\\x55\\x70\\x4f\\x9a\\xd7\\xa8\\x95\\x27\\x18\\xc3\\x98\\xb4\\x21\\xb6\\xe0\\x9c\\xb7\\x8c\\xb5\\x2a\\x18\\x14\\xee\\x2e\\x96\\x39\\xec\\x68\\xd3\\x61\\xf0\\xa3\\x20\\x41\\xd6\\xe7\\x42\\x5b\\x4b\\xb3\\x3c\\x70\\x19\\x6e\\x24\\x00\\xeb\\x81\\x2d\\xb8\\x50\\x6c\\x9f\\x32\\x45\\xbd\\x98\\x8f\\xbc\\x89\\x1b\\xe2\\x0c\\xb0\\x69\\x15\\x59\\xfc\\x91\\x6b\\x57\\xff\\x96\\xc9\\xb1\\x44\\x89\\xe0\\x99\\x3c\\xb7\\x39\\xa3\\x9d\\xa2\\x46\\xd0\\x1a\\x6e\\xbd\\x07\\x58\\x35\\x81\\xf2\\x50\\xbf\\x48\\x0b\\xc4\\x4b\\x2c\\x33\\x91\\x54\\x2d\\x59\\x5e\\x4d\\x39\\x94\\x90\\x19\\x5f\\x84\\x45\\xdf\\x63\\x8f\\x34\\x69\\x8f\\x1a\\x96\\xed\\x27\\xb3\\x53\\x3e\\x3e\\xb6\\x7e\\x8f\\x86\\x58\\x65\\xfa\\x95\\x55\\xed\\x34\\xdf\\x11\\x15\\x76\\x41\\xa0\\x0e\\x6d\\x60\\xcf\\x62\\x3f\\xec\\x1a\\x92\\xb8\\x7a\\x15\\xd7\\x65\\x18\\x5f\\xd9\\x05\\x5a\\xcb\\x38\\xd7\\x5c\\x99\\xdb\\x4f\\xce\\x7b\\x0e\\x39\\xfd\\xc3\\xf8\\x51\\xda\\xf6\\x5c\\x7a\\x33\\xf4\\x64\\x81\\x69\\x31\\x83\\x9f\\xef\\xe8\\xe5\\x8d\\x9a\\xb7\\x42\\xb8\\x61\\x87\\x3f\\xd2\\x29\\x18\\x9e\\x59\\xcd\\x4c\\xe8\\x23\\x9f\\xc9\\x54\\x3f\\x53\\x9d\\x2d\\x29\\x61\\x14\\x26\\x6e\\xa8\\xc6\\xfd\\x15\\x2a\\xc6\\xb3\\x42\\xe5\\xd1\\xa5\\x57\\xab\\x35\\xca\\xc5\\x1e\\x2d\\x12\\x12\\xee\\x31\\x7c\\x4d\\x26\\x71\\x68\\x29\\xe2\\x57\\x46\\xdf\\x17\\xd2\\xa6\\x22\\xc2\\x43\\xf3\\xec\\xbb\\x65\\xf5\\x7a\\xb0\\xf4\\x27\\x0e\\x3d\\x06\\x68\\xa9\\x62\\x50\\x22\\x45\\xb9\\x4c\\x06\\xdf\\x0c\\x5e\\x39\\xe3\\x53\\xaa\\x84\\x2e\\xa0\\x80\\xcf\\x50\\x27\\x08\\xb1\\xdd\\xa2\\xd0\\x01\\x82\\x4d\\xe4\\x58\\xd3\\x77\\x62\\xaf\\x2c\\xdf\\xd5\\xa6\\xd3\\xf3\\x5e\\x08\\xa1\\x8e\\x14\\xaa\\x7a\\x64\\x2c\\x51\\xe4\\x04\\x7e\\x63\\x75\\x17\\x84\\x6d\\xf6\\x46\\xd0\\x73\\x36\\xfb\\x17\\x24\\x34\\xe0\\x88\\x3e\\x2b\\x77\\xd8\\xed\\x1c\\x52\\xc9\\xcc\\x63\\x6a\\x56\\xa1\\x9e\\x57\\xa5\\xf1\\x61\\xb9\\x2d\\x1d\\xcb\\xfa\\x49\\x6f\\x34\\x4a\\xe6\\xd4\\xdf\\xdc\\x95\\x69\\xad\\xe4\\x57\\xa4\\x90\\x91\\x36\\x2e\\x5a\\x0c\\xdd\\x81\\xb3\\x75\\x32\\x43\\xfd\\xac\\x30\\xa2\\xd2\\x7e\\xa0\\x26\\xa5\\xe6\\x01\\x44\\x1e\\xcd\\x55\\x37\\xa7\\x20\\x1b\\xdc\\xb7\\xfd\\x58\\xb2\\x40\\xd0\\x22\\x9f\\xdd\\x9b\\xab\\xf1\\x12\\xb5\\x69\\x48\\x12\\x25\\x0e\\x76\\x8d\\x7c\\x0c\\xe6\\xca\\x56\\x5a\\xd0\\x6a\\xb8\\xf7\\x8a\\x5c\\x99\\x50\\xee\\xf5\\x38\\x72\\x6f\\x57\\x6c\\x4b\\xd2\\xe0\\x75\\x5c\\x7f\\x98\\x39\\x29\\x37\\x2a\\x5f\\xe1\\x1c\\x73\\xf9\\xe1\\xfa\\x45\\x3a\\xb5\\x4b\\x58\\x17\\xaa\\xd3\\x59\\x67\\x56\\x12\\x7d\\x84\\xe3\\x11\\x94\\x53\\xe8\\x82\\x5b\\xb8\\x46\\x0d\\x85\\x1f\\x1f\\x7e\\x4a\\x28\\x38\\xa2\\xbe\\x78\\x6b\\x23\\x35\\x04\\xa6\\x91\\xdb\\x0f\\xa2\\x2a\\x5f\\x41\\xfe\\x3f\\xd3\\xc9\\xb5\\x38\\xb0\\x4f\\x40\\x9e\\x09\\x18\\x09\\x48\\x6b\\x28\\xad\\x0d\\xed\\xa7\\xb3\\x8a\\x42\\xce\\xfc\\x48\\xde\\x7d\\x86\\x79\\xc0\\x3b\\xf8\\x77\\x23\\x85\\x11\\x82\\x0d\\x07\\x70\\xcc\\x8d\\x7b\\x41\\x72\\x37\\x78\\x23\\xa0\\xb9\\x91\\x49\\xab\\xb8\\x91\\x8b\\xfb\\x66\\xd5\\xab\\xfc\\xd1\\x00\\x60\\xb0\\x5c\\xb4\\xf2\\x39\\xdd\\x42\\x81\\xd9\\x34\\x83\\x50\\x4b\\x73\\x1e\\xaf\\x5a\\xdd\\x51\\x5f\\x1f\\x3c\\x3b\\x52\\xb4\\xe3\\xbd\\xaf\\x97\\x6a\\x17\\xb3\\xc9\\xec\\x61\\xbf\\xc8\\xe7\\x71\\x16\\x71\\x58\\x04\\x53\\x2c\\xf2\\xdb\\xf2\\x0b\\x7b\\xa5\\xea\\xd8\\x5a\\xfb\\x95\\x2b\\xee\\xc2\\xfc\\xcf\\xf8\\x5f\\xf5\\x07\\x2b\\xa4\\xed\\x6b\\x54\\x38\\xab\\x15\\x20\\xc6\\xef\\x4b\\x0b\\x26\\xf1\\x2e\\x84\\xae\\xdd\\x65\\xce\\x5c\\x7b\\xbe\\x6a\\xcb\\x67\\x72\\xf5\\x93\\xa6\\xb4\\xf8\\x1d\\xdd\\x9d\\x50\\x27\\x46\\x50\\x50\\x47\\xc8\\x12\\xa0\\x06\\x7a\\xfc\\xeb\\x8d\\xc9\\xbf\\xf3\\x0d\\x40\\x87\\xf8\\xd5\\xa3\\x75\\xec\\xa6\\x05\\xa0\\x62\\x27\\x84\\xd8\\xfe\\xa2\\x78\\xcd\\x1a\\x52\\x41\\xad\\x4b\\x3f\\x1b\\x91\\x4f\\x74\\xf7\\x3b\\xc3\\x6e\\xe7\\xcc\\x82\\xd9\\x6e\\xfd\\xa6\\x3a\\x3b\\x67\\x99\\x73\\x0f\\x20\\x65\\x6c\\x12\\x35\\x6c\\x79\\x06\\x9b\\x2b\\xe6\\xf9\\xb7\\x7b\\xe1\\x01\\x98\\x31\\x18\\x82\\x3e\\xa6\\x6e\\x7c\\x20\\x98\\xfb\\xc7\\x2f\\xc9\\xc0\\x39\\xdf\\xe3\\x0f\\x2d\\xab\\xa1\\x3c\\x3b\\xde\\xfb\\x8a\\x78\\x0b\\xeb\\x5c\\xb1\\xb6\\xc2\\x86\\xa6\\xb3\\xef\\x48\\xfd\\x15\\xc6\\x6c\\x04\\x5b\\xa2\\x9f\\x09\\x70\\x41\\x3b\\x98\\x8d\\x0e\\xa0\\x04\\xab\\x84\\xc9\\x39\\x19\\xf0\\x4f\\x9b\\xf8\\xca\\xf5\\x8c\\x4e\\xb4\\x78\\xf3\\x58\\xef\\x8b\\x68\"},\n{{0xef,0x36,0x48,0xcb,0xe7,0x34,0x02,0xab,0x45,0x0c,0xd6,0xec,0x37,0xe5,0x45,0xd0,0xcd,0x2c,0x99,0x9e,0xcc,0x1f,0xa3,0x81,0xa4,0x5c,0x66,0x0e,0x18,0x53,0x30,0x32,},{0x52,0xa1,0xa4,0x52,0x73,0x87,0x26,0x76,0x58,0x2c,0xc7,0x67,0x33,0x99,0x26,0x41,0x4c,0xd5,0xd0,0x3d,0x98,0x0c,0xf6,0x29,0xdd,0xa2,0xd1,0xa2,0x05,0xe9,0x83,0x0a,},{0xf6,0x70,0x79,0x29,0x42,0xec,0x41,0x44,0x28,0x47,0x56,0x38,0x85,0x3c,0x42,0x72,0x8e,0x86,0xba,0x12,0xbb,0xe8,0x59,0x48,0xb3,0x91,0x34,0xcf,0x6e,0x2b,0xd1,0x28,0x13,0xe0,0xd8,0x3e,0x51,0xe6,0x57,0xc9,0x01,0x07,0xad,0x93,0xa4,0x78,0x8a,0xa3,0x83,0x13,0xfa,0x96,0x2f,0x67,0x67,0xa8,0xf7,0x80,0x5b,0xde,0x65,0xca,0x42,0x0d,},\"\\x6a\\x93\\x37\\x8f\\x88\\x0c\\xf0\\xff\\xdb\\x8e\\x07\\xd6\\x83\\xcc\\x35\\x2e\\x2a\\x10\\x33\\xc4\\x50\\xba\\xa0\\xe8\\xc4\\xe1\\x62\\x05\\xfd\\x0c\\x02\\x74\\x3b\\x0e\\xa0\\x64\\x97\\x1d\\x91\\x1e\\x49\\x47\\x13\\xe6\\xd9\\x4a\\x02\\x17\\x2e\\xd0\\x14\\xd5\\x06\\x59\\x2e\\xc6\\xc7\\x0a\\x9c\\x97\\x85\\x52\\x46\\xbf\\x3d\\x26\\xf3\\xcf\\x74\\xf4\\x93\\xc1\\xb6\\x97\\xa0\\xc4\\x14\\x16\\x0c\\x34\\x14\\x12\\x83\\x09\\x85\\x43\\x08\\x06\\xa0\\xcb\\x3c\\x84\\x75\\xe7\\xe5\\xa9\\x73\\x68\\x6c\\x24\\xd5\\xef\\x1b\\xe7\\xd0\\x06\\x50\\x96\\xfe\\xb5\\x2e\\xab\\x26\\x0b\\x5c\\x48\\x8a\\xf0\\x92\\x70\\xde\\x6d\\xec\\xd3\\x3f\\xea\\x85\\x89\\xdd\\x10\\x21\\xba\\xf4\\x1e\\x3f\\x25\\x5f\\xb8\\xfa\\x19\\x16\\xeb\\xd8\\x53\\x1e\\xeb\\x2f\\x88\\x6b\\xb3\\xb3\\xb0\\x4f\\x9a\\xf6\\xb2\\x76\\xc3\\x59\\x23\\xf1\\x0d\\x3a\\x0a\\xf1\\xe3\\xf5\\x8b\\x0d\\x15\\xae\\xd1\\x65\\x04\\x5f\\x20\\x6f\\x3f\\x43\\x0a\\xbd\\xff\\x09\\x44\\x90\\x97\\xe4\\xb2\\x6d\\x00\\xa8\\xf9\\xf1\\xe8\\xf7\\xa1\\x9f\\x38\\x58\\x81\\x24\\xc3\\x28\\xec\\x43\\xa9\\xcf\\xb4\\x3d\\x3b\\x2c\\x6b\\xdf\\x6a\\x3c\\x1a\\x10\\x2e\\x0e\\x33\\x3d\\xe1\\xac\\x21\\x4a\\x6d\\xf7\\x6d\\xab\\x44\\xba\\x76\\xbf\\x03\\x52\\x73\\xb7\\xff\\x62\\x38\\xec\\x82\\x48\\x3b\\x2d\\x2d\\x9d\\x54\\x29\\x1a\\x72\\x27\\x0f\\x88\\x93\\x3b\\x78\\x6c\\xac\\x05\\x1d\\x99\\x0b\\x3c\\xf7\\x40\\x84\\x5f\\xed\\x3a\\x67\\x86\\x7d\\x7c\\x7c\\x05\\x67\\x4e\\x7c\\xb0\\x2c\\xa5\\xb7\\xac\\xdf\\xba\\x38\\x52\\x80\\x3a\\x3d\\x56\\xc4\\xd5\\xc1\\x3b\\xb1\\xd7\\x72\\x34\\x67\\x74\\x1e\\xac\\x1f\\x2a\\x7a\\xcd\\x3a\\x95\\xf3\\xa5\\x16\\x10\\xa4\\x86\\xfc\\x53\\xa9\\x85\\x16\\x28\\xc5\\x57\\xd3\\x6d\\x8a\\x4c\\xd3\\x7a\\xae\\x9c\\x41\\x74\\xdb\\xbd\\xb6\\xbd\\x88\\x5c\\xf4\\x0b\\x38\\x2b\\x8d\\xed\\x24\\xa4\\x52\\x2a\\x27\\x8f\\xef\\x76\\xc4\\x53\\x19\\x06\\x7e\\x55\\x28\\x6e\\x7b\\x08\\xc6\\x03\\x48\\x6e\\x38\\xa0\\xac\\xf4\\x7e\\xde\\xf8\\x48\\xec\\xbe\\x94\\x2e\\xce\\xad\\xb8\\x63\\x6c\\x83\\x3f\\xeb\\x88\\x2a\\x51\\xa4\\x59\\x5e\\x24\\xf6\\x07\\xca\\x3c\\x9d\\xa1\\xb2\\x40\\x4c\\xe5\\xc7\\x47\\xe0\\x62\\x64\\x17\\x4d\\x64\\x50\\x43\\x31\\x70\\x9b\\xef\\x30\\x05\\x5a\\x5d\\x69\\x5e\\x09\\x53\\x7c\\x8f\\x8c\\x1e\\x5a\\x3a\\x5d\\xb0\\x65\\x99\\xe3\\x19\\xdf\\xdb\\x28\\x72\\x96\\x65\\x27\\x3b\\xf8\\x68\\x95\\x5e\\xa5\\x64\\x27\\xf0\\x8b\\xac\\xd7\\x77\\xf1\\x79\\xb3\\x02\\xf3\\xf6\\x8d\\x04\\xf3\\xf3\\x88\\x3d\\x34\\x49\\x55\\xb6\\x55\\xdd\\xc6\\xd5\\x28\\x2b\\x6d\\x4d\\xf1\\xd8\\x36\\x30\\x21\\x0e\\x69\\x91\\x78\\xe1\\x1f\\x72\\x2e\\x9e\\x5c\\xda\\x67\\x28\\x92\\xae\\x9b\\x23\\xe8\\x16\\x9c\\xbb\\x54\\x80\\x93\\xb8\\x3e\\x64\\x3e\\xb4\\x99\\xd9\\x37\\xd2\\x8f\\x38\\x11\\x59\\x7b\\x64\\x84\\x10\\x2f\\x0c\\x8e\\xb8\\xc8\\x88\\x8c\\xda\\xc2\\x29\\xae\\xbf\\x89\\x08\\x6a\\x64\\x95\\xac\\x55\\x1f\\x3b\\xbd\\xf2\\xd1\\xc9\\xa9\\x3e\\xd1\\xd3\\xa8\\x61\\xee\\xcd\\x9e\\xb8\\x39\\x94\\x9b\\xfb\\xe6\\xa4\\xf6\\xe6\\x48\\x6e\\xde\\xda\\xb5\\x22\\x9d\\x53\\x2b\\x58\\x97\\x6d\\x67\\x51\\x2f\\x9f\\x71\\xae\\x79\\xb4\\x14\\x5c\\xa2\\xfa\\x49\\x7a\\x16\\x5f\\x11\\x07\\x17\\x66\\x6c\\xa3\\x34\\x0b\\xbd\\xa8\\xdf\\x1f\\x82\\xb8\\xc0\\x54\\xcf\\x76\\x54\\xc3\\x56\\x90\\x16\\x8f\\x96\\x27\\x7d\\x41\\xc1\\xc2\\x36\\xb6\\x81\\x98\\x17\\x3c\\x6e\\x2b\\x0a\\x20\\x8e\\xf8\\x3c\\x02\\xa4\\x3e\\x47\\x3d\\x90\\x68\\x6a\\xce\\x75\\xb5\\xbd\\x32\\x1b\\x3f\\x54\\x28\\x13\\x27\\xa6\\x73\\xca\\xd4\\xd4\\xad\\x30\\x40\\xd4\\x8c\\xf4\\x93\\xea\\x23\\x1b\\x3f\\xec\\x06\\xf3\\x99\\x32\\xd7\\xf7\\x0a\\x38\\x42\\x8d\\xf8\\xfe\\xe4\\x37\\x05\\x32\\xae\\x5f\\xb1\\x12\\x05\\x9f\\x0a\\x1d\\x4f\\xbe\\x11\\xb5\\xa2\\x3b\\xb8\\x76\\x35\\x42\\x9e\\xd3\\x3a\\xd1\\xf6\\x14\\x80\\x14\\xcb\\xc1\\x60\\xd9\\x3c\\xa2\\x59\\x20\\x53\\xa6\\xe9\\x53\\x78\\xd6\\xcd\\x3f\\x50\\xdb\\x52\\xbe\\x92\\x8e\\x40\\x92\\xfe\\x5d\\x2b\\x70\\x95\\xa9\\x56\\x68\\x64\\xad\\xfd\\xa5\\x9f\\xd5\\xf2\\xfb\\x62\\x54\\xbd\\x59\\x17\\xb7\\x0f\\xa1\\x46\\x99\\x66\\x5a\\x37\\x29\\x7c\\x98\\x3c\\x1b\\xb9\\xef\\xe1\\xc6\\x7b\\x41\\x3d\\xd1\\xa8\\x53\\x0c\\xbf\\x22\\x72\\x97\\xa8\\xbb\\xf9\\x3a\\x8a\\x02\\x45\\x4e\\x8e\\x46\\x1a\\xc2\\x12\\xb8\\x46\\xa7\\x0d\\x5d\\x56\\xd6\\xc3\\xa6\\xe6\\x5a\\x03\\xbe\\x05\\x80\\x21\\x9b\\xdd\\xec\\x88\\xd4\\x03\\x89\\x11\\xfd\\x95\\x74\\x56\\x3f\\x33\\xe0\\xf9\\xe6\\x04\\x46\\x88\\xd3\\xdd\\x48\\xfa\\xc7\\x03\\x86\\x9a\\xa0\\x9d\\x96\\xef\\xee\\x7d\\x6c\\x68\\x07\\x1d\\x99\\x22\\xd5\\xe8\\xed\\x8d\\xc4\\x0f\\x1b\\x79\\x8f\\x1c\\x58\\x0f\\x78\\x59\\xcb\\x84\\xf1\\xe1\\x4b\\x5e\\x74\\xdd\\xea\\x16\\xad\\x5c\\xbe\\xea\\x4c\\x48\\xfb\\xcf\\xfd\\x29\\x53\\x1a\\xcc\\xc0\\x63\\x39\\x38\\xe3\\xbc\\xb2\\x21\\x26\\x76\\xb6\\x1e\\xf9\\x01\\xe9\\xc8\\x31\\xa4\\x17\\x74\\xd8\\x31\\x7e\\xf3\\x5a\\xf7\\x69\\x90\\xbd\\x24\\x93\\x1f\\xde\\x6d\\x40\\x7e\\x22\\xe7\\x63\\xcf\\x6a\\x57\\x90\\xb2\\x37\\x61\\x90\\x8e\\xee\\x60\\x96\\x37\\xa2\\xc1\\x10\\x59\"},\n{{0x2c,0x8e,0xe7,0xfa,0x9b,0xa2,0x8c,0xe7,0x04,0x96,0x76,0x08,0x7b,0x11,0x63,0xb2,0x41,0x11,0x8d,0x34,0xcd,0xf5,0x34,0xae,0xbe,0x8b,0xa5,0x92,0x82,0xa6,0x2a,0xc2,},{0x24,0x4c,0x24,0xf5,0xec,0xb2,0xdd,0x1d,0x14,0x63,0x51,0x22,0x21,0x32,0x5d,0x73,0xc8,0x1e,0xe4,0xd8,0xad,0xb8,0xe0,0x1e,0x23,0x34,0x5c,0xaf,0x9c,0xa5,0x35,0x3b,},{0xca,0x0b,0xb6,0xc1,0x23,0x56,0x55,0x5f,0x6e,0x1d,0x8f,0x5c,0x8a,0xa7,0xb5,0xe8,0x0c,0xd2,0x80,0xe8,0xb1,0xb9,0xba,0x2e,0xc9,0x55,0x0f,0x62,0x2f,0x48,0x2c,0x3a,0x9a,0xd3,0xbe,0x03,0xa4,0xc9,0xdf,0xc1,0x0d,0x01,0x12,0xb0,0x18,0x9d,0xe9,0x4b,0xff,0xaf,0xd7,0x03,0x41,0x14,0xe0,0xe0,0xd4,0x2c,0x23,0xf3,0x2d,0xc8,0x18,0x07,},\"\\x07\\x66\\x9a\\x89\\x64\\xf0\\x63\\x80\\xd2\\xd4\\x98\\x2c\\xb6\\x34\\x9d\\xe5\\x50\\xb3\\x8c\\xbc\\x35\\xdb\\x2c\\xe5\\x72\\xde\\x88\\x7f\\x66\\x30\\x55\\x73\\x6f\\xaa\\xc7\\xec\\x07\\xc3\\x2d\\xf6\\x0e\\xe2\\x59\\x84\\x22\\xbf\\x37\\xe7\\xcf\\x31\\x9a\\xb3\\xc9\\x05\\x56\\x08\\xca\\x0c\\x49\\x75\\x7d\\x76\\x88\\xe2\\x01\\x3b\\x82\\x44\\xf3\\x54\\x04\\xf4\\x5a\\xc2\\x19\\x49\\x7f\\xe9\\x24\\xde\\x93\\xa5\\x8d\\x0f\\x72\\x1a\\xed\\x78\\x25\\xf6\\x3b\\x26\\x67\\x07\\x7c\\x16\\x1e\\xb4\\xdd\\x8b\\xf7\\xdd\\xbd\\xbb\\xc1\\x9a\\x9e\\xae\\x59\\x78\\x97\\x8d\\x5a\\xeb\\x33\\xa0\\x6d\\xde\\x18\\xe6\\x12\\xe0\\x5b\\xdb\\xca\\xe0\\x16\\x1a\\xa2\\x38\\x90\\x38\\x02\\x64\\x29\\x96\\x0d\\xda\\x3a\\xa1\\x7e\\x96\\x7d\\x10\\x77\\x3c\\xa4\\x97\\x35\\xd8\\xec\\xd7\\x40\\x9b\\xe1\\x65\\xc0\\x9b\\xb0\\xb5\\x09\\x69\\x1d\\x59\\x1c\\x18\\x5c\\x93\\xcd\\xee\\xae\\x95\\x35\\x23\\x16\\x54\\x46\\x80\\x52\\x38\\x21\\x45\\x8c\\xac\\xcf\\x52\\x8a\\xc0\\x45\\x4e\\x4c\\xdd\\xc6\\xdf\\x0d\\x1e\\xa5\\xf1\\xf5\\xcc\\x1e\\xee\\xe0\\x5e\\x19\\xa2\\xad\\x0b\\x6a\\x49\\x73\\x6e\\xd8\\x55\\x23\\x36\\xfc\\xfc\\xad\\xbd\\x93\\x1b\\x0b\\x8e\\x96\\x3b\\xe0\\x5c\\x8e\\x70\\x37\\x38\\x85\\x52\\x51\\x2b\\x68\\x23\\x58\\x3e\\x4a\\x14\\x38\\x4c\\xef\\x50\\x29\\x23\\x2d\\x3e\\x0b\\xaf\\xe4\\x66\\x35\\x1b\\x4b\\xb3\\xf5\\x67\\x54\\x5a\\xb4\\x1f\\xa4\\x6b\\xff\\xaf\\xa8\\x77\\xa1\\x2b\\x38\\xa2\\x7a\\xbd\\x64\\xf7\\x7f\\xbb\\x4d\\xb4\\x66\\xff\\x7f\\x70\\x65\\x04\\x14\\x1d\\x3a\\xdd\\x0d\\x73\\x72\\xf1\\x6f\\xe3\\xd8\\xc6\\x9f\\x62\\x99\\xd9\\x39\\x66\\xd6\\x24\\xa3\\x07\\x0e\\xad\\xb8\\xb4\\x9f\\x29\\xfa\\xb4\\x84\\x4c\\x75\\x28\\xa2\\xa4\\x0b\\x66\\x98\\x70\\x60\\x69\\x5c\\xaa\\x66\\xb8\\x67\\x18\\xc5\\x10\\x49\\xac\\xf4\\xcf\\xad\\x38\\x53\\xed\\xb4\\x92\\xe3\\x68\\xcb\\xd0\\x73\\x96\\x8e\\xca\\xa4\\xa1\\xee\\x60\\x46\\xb5\\xe8\\x26\\xe9\\x01\\xf4\\xa8\\x08\\xc0\\x42\\x7c\\x02\\x6f\\xe2\\xf7\\xb2\\xe1\\x96\\x86\\x67\\xb5\\x3a\\x7d\\x36\\xd7\\x02\\xf2\\xff\\x82\\xc6\\x42\\xd3\\x49\\x19\\xf8\\xe9\\xaa\\xaf\\xe4\\x62\\xa3\\xd4\\xf9\\x26\\x92\\xde\\xac\\x75\\x2b\\xe3\\x48\\xf5\\x4c\\xf0\\x89\\xdd\\x9c\\xd0\\x51\\x84\\x6b\\x04\\xb7\\x19\\x31\\xe1\\x9e\\x89\\xd1\\x25\\x86\\x4b\\xfa\\x89\\x48\\xac\\xe0\\xef\\xf3\\x3c\\x45\\x11\\x05\\x69\\xa0\\xdf\\x37\\x53\\xf4\\xc5\\x8d\\x80\\x02\\xb5\\xbc\\x38\\x10\\x2e\\xc2\\xec\\xf6\\x95\\xfa\\xfa\\x89\\x16\\xda\\x90\\x02\\x38\\x7e\\x44\\xf9\\x6d\\xab\\xf8\\xa9\\x82\\xc5\\x3c\\x9b\\xad\\xbc\\x37\\xbd\\xe4\\x37\\xf1\\x46\\xf7\\x7d\\x8f\\x7b\\xaf\\x12\\x87\\x31\\x96\\xb0\\xc3\\x61\\x93\\xaf\\x55\\xf5\\x42\\xd9\\x96\\x8a\\xed\\x80\\x69\\xab\\x9f\\xbc\\xd6\\x81\\x4e\\xc4\\x72\\x79\\x9a\\xd0\\x9c\\x73\\x0d\\x41\\xed\\xde\\xca\\x3b\\x62\\x69\\xd3\\x1a\\xb5\\x23\\xb5\\x95\\x47\\x07\\x73\\x76\\x34\\x5b\\x05\\xf2\\xae\\x69\\xb4\\xee\\x72\\x8c\\x86\\x3d\\x1b\\xc0\\x4e\\x9b\\x7d\\x3d\\x0f\\xcc\\xeb\\x35\\x9c\\xbd\\x08\\x58\\x59\\x7a\\xf2\\xd6\\x06\\x3e\\x25\\x3f\\xae\\x2c\\x3f\\x25\\x03\\x4c\\x33\\xed\\x59\\xed\\xd2\\x78\\x28\\x68\\x29\\x86\\x81\\xca\\xf5\\x64\\xdb\\x8d\\x19\\x36\\x6f\\x34\\xea\\xe8\\x5b\\xa7\\x3c\\x1e\\x23\\x89\\xb0\\xdd\\x78\\xa9\\xd2\\xca\\xa0\\xf2\\x3c\\x9a\\xd5\\xf6\\xcd\\x9f\\x2c\\x4a\\xd5\\xd5\\x89\\x46\\xad\\xb7\\x18\\xcb\\x83\\xda\\x58\\xe2\\xfc\\xbb\\x60\\x25\\xbe\\xf4\\x66\\x0a\\x83\\xe0\\xaf\\x55\\xe2\\x03\\x08\\x02\\x93\\x2f\\x2a\\x89\\x6a\\x09\\x60\\x79\\xb7\\x54\\xc9\\x9f\\x7b\\x64\\x23\\xb4\\x5a\\x86\\x47\\x2e\\x67\\x23\\xef\\x88\\x96\\xc4\\x32\\x4c\\x73\\xd3\\x4a\\xd5\\x8a\\x4c\\x01\\xb3\\x8a\\x97\\xc7\\x3b\\xe5\\xaa\\x7f\\x74\\xa2\\xfa\\x4d\\x07\\x95\\xaf\\x6d\\xbf\\xcd\\x6d\\x4e\\xb4\\x42\\xa7\\xe2\\x04\\xdb\\x4e\\xcb\\x1f\\x8a\\x22\\x6b\\xdf\\xa2\\x1b\\x6e\\xb1\\x71\\xc9\\xe5\\x9f\\x1a\\x19\\x2e\\x23\\xa7\\x6c\\x35\\x2b\\x04\\xd8\\xa8\\x02\\x33\\x98\\x5b\\x77\\xa2\\x9c\\x02\\x01\\x19\\xce\\x65\\x1c\\x7f\\x41\\x83\\xd0\\xe9\\xc1\\x9f\\xe1\\x8a\\xa1\\x02\\x0c\\x25\\xe4\\x58\\x9d\\xee\\x34\\xb9\\x01\\xbd\\xaf\\x9f\\xf9\\x45\\x0c\\x91\\xaf\\x3c\\x1d\\xb6\\x70\\xb4\\x77\\xe0\\xac\\x21\\x07\\x69\\x6c\\x9e\\xc0\\xd3\\x1d\\x82\\x64\\x7b\\x68\\xea\\x19\\x49\\x9f\\xe3\\x4a\\x8e\\x2e\\x7b\\x37\\x8d\\xc7\\xe7\\x54\\x24\\xe8\\xc4\\x56\\x45\\xb0\\xc2\\x81\\x8e\\x9f\\x88\\x5a\\x1c\\x58\\x41\\x5b\\xba\\x1c\\x3f\\x2a\\x77\\x54\\x9b\\xdc\\x46\\x80\\xdb\\xcd\\x16\\x50\\xc7\\x5d\\x0f\\x45\\x2a\\x6b\\x20\\x85\\x91\\xdf\\x0f\\xa6\\xe1\\x81\\xda\\x2a\\xbf\\xab\\x44\\x46\\x21\\xd5\\xf7\\x7c\\x2c\\xd7\\x95\\x56\\x46\\x72\\x46\\x44\\x7a\\x89\\xf0\\xaa\\xac\\xad\\x66\\x0c\\x9a\\x92\\x5e\\xba\\xfb\\xad\\x43\\xc4\\x78\\xa3\\xc8\\x50\\xa2\\x7e\\x01\\x01\\x9d\\x88\\xa5\\xb1\\xdc\\x81\\xb5\\xd2\\xe9\\xf7\\x40\\xa0\\x28\\xcc\\xb7\\x2c\\x1a\\xcf\\x89\\x7e\\xa5\\xad\\x89\\xe0\\xf9\\x44\\x88\\x88\\xd5\\xb1\\x5c\\xe6\\xe4\\x29\\x77\\xf7\\xa7\\x29\\x15\\x5a\\x28\\x4d\\x11\\x87\\x58\\xac\\x65\\xf3\\xfb\\xb9\\x8d\\xeb\\x65\"},\n{{0xdd,0xd8,0xe9,0xff,0x85,0x56,0x79,0x89,0x6a,0x13,0x97,0xb4,0x27,0xdb,0x85,0x43,0xab,0xe8,0xbb,0x5d,0xd1,0x22,0xe3,0xe3,0x02,0xcc,0xfc,0xe5,0xfd,0xc6,0x3e,0x12,},{0x5a,0x9a,0x31,0x2e,0x89,0x2a,0x10,0xb9,0x8d,0x0d,0xcd,0xd2,0x8d,0xb3,0x48,0x1c,0x3c,0x28,0xad,0xd5,0xad,0x0b,0x19,0x46,0x16,0xda,0x4a,0x3d,0xf7,0x66,0x01,0x09,},{0xdf,0x84,0x9b,0x7b,0xd2,0x97,0x45,0xf8,0xbe,0xcd,0xdd,0xf6,0xc9,0xba,0xf0,0x94,0xd7,0xa9,0x8c,0xc9,0x33,0x8c,0x34,0x4e,0xca,0x17,0xfd,0xe0,0x75,0xfd,0xa8,0xd1,0x54,0x32,0x99,0xf6,0x25,0x98,0x23,0x17,0xdb,0x7b,0x3c,0x77,0x3b,0x64,0xf7,0xd1,0xf2,0x86,0x92,0xac,0x45,0x3b,0x81,0xd7,0xec,0x7b,0x7e,0xc3,0x41,0x7a,0xce,0x04,},\"\\x5e\\x8f\\xee\\xc5\\x09\\x35\\x0d\\x2e\\xe7\\x95\\x5b\\x6f\\x3e\\x27\\x82\\x78\\xa4\\xcb\\x48\\xae\\x72\\xb4\\x65\\x89\\xe4\\x78\\xbe\\x59\\x74\\x7d\\xf5\\x39\\x4a\\x16\\x9f\\x19\\xe1\\x0d\\xb5\\x32\\x02\\xa6\\xa5\\x23\\x20\\xb6\\x3a\\x9a\\x2b\\x72\\x3f\\xd3\\x1a\\xa2\\xdb\\x6d\\x58\\xc5\\x73\\x32\\xda\\x31\\x78\\xbc\\xf9\\x66\\xc5\\x3a\\xbd\\xa3\\x5f\\x12\\xda\\xef\\x9e\\xdc\\xf3\\x99\\xe4\\xa8\\xc5\\xf8\\x3d\\x36\\xf4\\x4a\\x17\\xd7\\x98\\x46\\xbf\\xc9\\x6c\\xe6\\x90\\x19\\x4c\\x21\\x9a\\x29\\x89\\x2f\\x03\\x67\\xa7\\xab\\x38\\x44\\x83\\x78\\x79\\xe3\\x81\\x8d\\xb8\\xd7\\x0c\\x4e\\x3f\\xba\\x4d\\x28\\x07\\x34\\x64\\xdf\\x20\\x85\\x95\\x10\\x38\\xfe\\xa4\\x32\\x81\\xb6\\xb6\\x06\\xdc\\x88\\x46\\xb3\\x0b\\x07\\x63\\xf2\\xca\\x82\\xbd\\x50\\x21\\xf9\\x11\\x70\\x35\\xa7\\x7b\\xcd\\x10\\x75\\x47\\x7c\\x5f\\x43\\x21\\x43\\x34\\xd4\\xd4\\xce\\xdd\\x18\\xf7\\x38\\xd6\\x76\\xc7\\xb5\\x1a\\x18\\x5f\\xfa\\x8d\\x04\\x10\\x11\\x86\\xa4\\x95\\x2b\\xbd\\x87\\x22\\xf5\\x39\\x90\\xb6\\x06\\x37\\x04\\x1e\\x11\\x4a\\xeb\\x8c\\xe7\\x11\\x11\\x31\\xd4\\xdb\\x3f\\xb4\\xd3\\x5d\\x99\\x5a\\xd8\\xd6\\x65\\x0c\\x0c\\x4c\\xcd\\xce\\x9d\\xcc\\x39\\xdb\\x18\\x8a\\x68\\x78\\x55\\x62\\x74\\x06\\x26\\xb3\\xae\\x3e\\x02\\x3f\\x40\\x77\\x2d\\xed\\x87\\x6a\\x45\\xcb\\xef\\x74\\xa0\\x58\\xfd\\x78\\xc1\\xa1\\xff\\x2c\\x24\\x51\\xe1\\x11\\xac\\x1b\\x4b\\x7e\\xe4\\xc8\\x1c\\xd7\\x63\\x10\\xd4\\xd2\\x98\\xfb\\x3c\\x49\\xf5\\xe6\\x40\\x19\\x08\\xa6\\x30\\xfa\\x85\\xdb\\x74\\x71\\x80\\x4f\\xe9\\x90\\x84\\x7f\\x0f\\x75\\x94\\x72\\xf5\\x93\\xdc\\xf0\\x2e\\x11\\x3e\\x15\\xe5\\x64\\xd3\\x0d\\x59\\x84\\x69\\x2d\\xa5\\x5b\\x0b\\x7f\\x22\\x19\\xc4\\xac\\x16\\x26\\x51\\x1a\\xcf\\x19\\x4d\\xc7\\x02\\x6e\\xb9\\xd3\\x67\\xa4\\xa2\\xf1\\xdf\\xb5\\x15\\xcb\\x2c\\x08\\xda\\x4f\\xe5\\x95\\xc8\\x58\\x11\\x12\\x0c\\xba\\x2a\\xe7\\xb6\\x6e\\x67\\xc9\\x1f\\xb8\\xfb\\xcb\\x9d\\x99\\xf1\\x3e\\x50\\xfd\\x67\\x46\\x4d\\x90\\xc8\\xdc\\xf6\\x93\\x55\\x23\\xcf\\x6d\\x13\\xfd\\xd1\\x06\\x35\\xb9\\x23\\x2b\\x7a\\x61\\xdc\\xec\\x9a\\x2b\\x92\\x10\\x61\\x41\\x0d\\xf1\\xde\\x6a\\x45\\x16\\x7f\\xb9\\xf6\\xf1\\x09\\xdc\\xc0\\x88\\x91\\xf2\\x03\\xb2\\x74\\xa3\\xb6\\x82\\x71\\xb3\\xf3\\x5e\\x74\\xf9\\x4b\\xdc\\xed\\x0c\\x5f\\xf8\\x63\\x71\\x73\\xa1\\x76\\xe7\\xda\\xcc\\x81\\xf2\\xcd\\xc4\\xfb\\x0d\\x52\\xd1\\xdf\\xa7\\xf2\\x7b\\x55\\x2f\\xd8\\xd8\\x7a\\x1c\\x55\\xd6\\x94\\x7f\\xd9\\x2e\\xd3\\x25\\x3f\\x95\\x94\\xdb\\x7d\\xf1\\x7a\\x7f\\xc6\\xa7\\x5e\\xcf\\x4f\\xaa\\x4d\\x1e\\x21\\xb6\\x76\\xb3\\x72\\x7d\\x77\\xfb\\xd4\\x3f\\xa7\\xbe\\x76\\xbf\\xb5\\x8f\\xc3\\x09\\xe5\\x67\\x5f\\x0a\\x85\\x9c\\xc4\\x7f\\x37\\xb1\\xbf\\x45\\x59\\x32\\xd8\\x24\\xe8\\x63\\x78\\xde\\x7a\\x7e\\x8c\\x40\\xce\\xd2\\x20\\x90\\x04\\x4d\\xbb\\xf9\\x1c\\x70\\xe5\\x28\\xea\\xcd\\xef\\x37\\x85\\xba\\x3c\\x69\\xa3\\x73\\x5a\\xf6\\x70\\x9c\\xd7\\x6a\\xab\\x28\\xa6\\xac\\xa6\\xe8\\x44\\x97\\x4b\\x10\\xb3\\xfb\\x7b\\x09\\x86\\x00\\x7a\\x72\\x7c\\x2c\\x8f\\xc9\\x5b\\x25\\xf3\\x1f\\x14\\x6b\\x36\\xac\\xd4\\xc5\\x37\\x07\\x49\\x20\\xaf\\xf2\\x47\\xde\\x0f\\x17\\x9c\\x13\\xca\\x57\\x79\\x0a\\x6a\\x71\\xd6\\x2e\\x23\\x32\\x1c\\xcc\\x75\\xb7\\xf3\\xb0\\xaf\\xa0\\xd0\\x35\\x27\\xc9\\x11\\x4a\\x7d\\x4e\\x30\\xc1\\xac\\xe6\\xd7\\x71\\x20\\x13\\xde\\xe6\\x66\\x99\\xaf\\x9c\\x56\\x1c\\x44\\xae\\x61\\x98\\xed\\x39\\x10\\x4e\\x60\\x61\\xae\\x2c\\x45\\xa9\\xa3\\xc7\\x4b\\x5d\\x0f\\xbc\\x4a\\x33\\xe8\\xdf\\xe2\\xa8\\xac\\xc9\\x51\\x1e\\xf7\\xe6\\x56\\x71\\x33\\xf9\\xfe\\x35\\x54\\x28\\x4a\\x75\\xa0\\x59\\xa6\\x49\\xdd\\x24\\xec\\x04\\xa5\\x77\\x30\\xc6\\xd2\\xe9\\xbf\\x11\\x4e\\xa5\\x8a\\x89\\x94\\xab\\xdb\\x0c\\x19\\x43\\x24\\x15\\x72\\xc7\\x9e\\xad\\x04\\x3a\\xd1\\xc8\\xca\\xaf\\x5c\\x9d\\xa5\\x3d\\xd0\\x55\\x22\\xfe\\xbc\\x40\\x33\\x54\\xd6\\x2f\\xe3\\xff\\x93\\x88\\x2d\\xf7\\x5f\\xb2\\x94\\x58\\xd2\\x2e\\x69\\x96\\xc3\\x5b\\x69\\xfa\\xae\\xf2\\xe0\\xc4\\x16\\x38\\x86\\xcb\\x3c\\x3d\\x0f\\x60\\xe1\\x50\\xd3\\x63\\xd6\\xdb\\x59\\xfe\\xfc\\x62\\x6b\\x1b\\xbb\\x1e\\x05\\x2a\\x62\\x41\\x4c\\x4b\\x78\\x56\\xd7\\x20\\x93\\x43\\x2b\\x08\\xf8\\x21\\xbc\\x78\\x4a\\x5a\\x6b\\x0b\\xc2\\x64\\x9c\\x2d\\xaa\\x50\\x86\\x58\\x98\\x0d\\x80\\x22\\x91\\xe7\\x34\\xab\\xaf\\xf0\\x6a\\xfb\\xf2\\x79\\x5e\\x4e\\x35\\x4d\\x52\\x21\\xdc\\x4f\\x52\\xcc\\x96\\xd6\\xb8\\xcf\\x18\\x08\\xb1\\xa8\\x20\\x8d\\xb7\\xda\\xa8\\x0a\\xb7\\x10\\xc5\\x6a\\x8b\\x0e\\x9c\\xb8\\x08\\x1d\\xee\\x93\\xf5\\xf0\\x15\\xf0\\x76\\x64\\x46\\x3a\\x3d\\xcc\\xff\\x7c\\x8a\\xd1\\x99\\x23\\xa9\\x7e\\x39\\x04\\x5b\\xcc\\x4d\\xce\\x0a\\x73\\xd4\\x9c\\x56\\xd5\\xe9\\x37\\xbd\\x11\\xe6\\x18\\x23\\x40\\x1c\\x06\\x62\\x06\\xe3\\x13\\xe6\\x0b\\x47\\x53\\x7e\\x34\\x70\\x4d\\x7d\\x35\\x15\\x55\\x9b\\xb9\\xd0\\x53\\x2d\\x02\\x8e\\x28\\xa5\\x7a\\x87\\x9f\\xd6\\x17\\xcc\\x61\\xf7\\xf7\\x76\\xbd\\x6a\\x00\\x8c\\xd4\\xf8\\x12\\x37\\x8e\\xd3\\x7f\\x39\\x4b\\xb9\\x7e\\x6e\\x75\\x6d\\xa8\\x19\"},\n{{0xa8,0x86,0xf4,0xd3,0xf3,0x4e,0x32,0x0e,0xc6,0xd5,0xf4,0xca,0xa8,0x63,0xf8,0x14,0x77,0xdf,0x77,0x2e,0xff,0x97,0xe6,0x4a,0x37,0xa0,0x5f,0x42,0x11,0xd1,0x90,0xa8,},{0xe9,0xbc,0x96,0xc8,0x1e,0x87,0x81,0x10,0x26,0x8b,0x55,0xde,0xf7,0xea,0x40,0x07,0xa4,0xef,0x9f,0x54,0xd3,0x83,0xd5,0xfb,0x0f,0x6d,0x43,0x43,0xe1,0x01,0x0f,0x38,},{0xab,0xf2,0x83,0xdb,0x1f,0x80,0xc5,0x4c,0x58,0x3b,0x49,0x9d,0xbe,0x20,0xaa,0x04,0x24,0x8c,0x1d,0xce,0x12,0x1f,0x39,0x11,0x67,0x78,0x13,0xac,0x3e,0x01,0x1f,0xd1,0x59,0xad,0x0b,0xf7,0x6b,0x1a,0xa7,0xcc,0x7b,0x14,0xd7,0xb5,0x50,0x84,0x86,0x88,0x25,0x2a,0xcc,0x7f,0xec,0xe9,0x04,0x87,0x24,0x0c,0x3d,0x39,0x9d,0xd3,0x43,0x08,},\"\\x8b\\x83\\x1b\\x87\\x7b\\xc3\\xa9\\x9f\\x61\\x3c\\x89\\xcd\\xa6\\x98\\xb3\\x75\\x9d\\x64\\x38\\x22\\xb5\\xa8\\x8f\\xaf\\x38\\x22\\xec\\xb2\\xce\\x98\\xf6\\x71\\xd7\\x55\\x43\\x21\\xb2\\x4b\\x74\\xb4\\xe3\\x0a\\x66\\x3f\\x7a\\x55\\x70\\xae\\x91\\x7f\\x47\\x9b\\xda\\x29\\x89\\x4b\\x1a\\x8c\\x02\\x8c\\x9d\\x19\\x3e\\x4e\\x7a\\xc1\\x19\\x16\\xdd\\x8e\\x9c\\x3f\\x0e\\xc0\\xef\\x80\\xbd\\x27\\xfd\\xfe\\xee\\x80\\xc1\\x70\\xc7\\x81\\x40\\xb2\\x4c\\x15\\x27\\x14\\x15\\xac\\xf7\\x5c\\x26\\x95\\x6a\\x4d\\x4b\\xf9\\x9d\\x40\\xe8\\x61\\xe9\\x07\\x83\\x20\\xd0\\x97\\xe1\\x25\\x9e\\x5e\\xc1\\x7b\\x58\\x3a\\x95\\xe5\\x24\\x30\\xdd\\x8c\\x00\\x8e\\xd8\\xc7\\xdd\\x1d\\xe1\\xbe\\xcd\\xd1\\xe6\\xbf\\xec\\x4b\\xf3\\x34\\x7a\\x22\\xdd\\x24\\x9f\\x3a\\xc3\\x07\\xa2\\x94\\x5e\\x91\\x37\\xfa\\x4a\\x8c\\x26\\xc8\\x02\\x10\\x77\\x23\\x9c\\xb3\\x24\\x81\\x6a\\x8d\\xad\\x32\\xb0\\x1e\\xe3\\x4a\\x08\\x90\\x30\\x98\\xcb\\x9c\\x42\\x45\\x29\\x1b\\x90\\x3c\\x96\\x27\\x07\\x40\\x95\\x24\\x9e\\x78\\x28\\x13\\x47\\x70\\x32\\xba\\x32\\xef\\x04\\x1a\\x07\\x48\\x6e\\xb4\\x47\\x8c\\x57\\xb9\\xd5\\x32\\x26\\x9a\\x4a\\x47\\xcb\\x5e\\x97\\x4d\\xf7\\xe0\\x10\\x96\\xfb\\xe4\\xf1\\xcc\\xd4\\xe6\\x63\\x66\\x34\\x87\\x97\\x4c\\x62\\xcd\\xd9\\x4d\\x77\\x71\\x6c\\x84\\x79\\xd7\\x9f\\x6b\\x6a\\x7d\\x9c\\x15\\x59\\x88\\xcf\\x39\\x02\\xfb\\x69\\x74\\x24\\x96\\x3e\\xc4\\xec\\x34\\xff\\x2a\\x35\\xd7\\x42\\xc4\\x45\\x5a\\x59\\x3b\\xac\\xff\\xc4\\xd9\\x69\\x9b\\xa7\\x62\\x6c\\x76\\xcb\\x1a\\x61\\x62\\x53\\x75\\x18\\x87\\xf6\\xff\\xe2\\xbe\\x20\\x8c\\x71\\x3d\\xf1\\xab\\x63\\x6d\\x72\\x2e\\xa0\\x6c\\x1c\\x03\\xa5\\x7f\\x2c\\xec\\x08\\x03\\x86\\x6c\\xca\\x33\\x35\\xc2\\x8b\\xf4\\x1c\\x7d\\xef\\x81\\xac\\xb3\\x88\\x58\\xdc\\x10\\xe5\\x94\\x67\\x20\\x86\\x24\\x96\\x7e\\x2e\\x22\\xd9\\xe5\\x66\\x1b\\xb9\\x45\\xf9\\xe0\\x51\\x76\\x87\\xdc\\x80\\xf9\\xb8\\xfd\\xec\\xc8\\xa9\\x76\\x00\\xb6\\xc2\\x19\\xa3\\xb2\\x3a\\x90\\xb6\\xd1\\x8a\\xaa\\xce\\x2c\\x78\\x40\\x0f\\xf3\\x8c\\x8c\\x05\\x96\\x7f\\x54\\x4b\\x6a\\x60\\x6c\\x71\\xac\\x19\\x9e\\xaf\\xd0\\x7e\\xb5\\x84\\x8d\\xf1\\x65\\x7e\\xfb\\x23\\x3f\\xba\\xba\\xe6\\x3a\\x05\\x63\\x81\\x91\\xa0\\xaf\\x74\\x84\\xa1\\xba\\xe1\\x58\\x13\\x75\\x67\\x2c\\x57\\x1e\\x26\\x4f\\x60\\x42\\x25\\x17\\x3a\\x54\\xa3\\x8d\\xd6\\x2a\\xe7\\x13\\x0d\\x05\\xdd\\x29\\x1a\\xd1\\x23\\x54\\xde\\x86\\xa6\\xe1\\x13\\xe8\\x3f\\x6d\\x66\\x85\\x16\\x15\\x7b\\x79\\x67\\x02\\x0d\\xc6\\x51\\x7d\\x8c\\xf4\\x2d\\xd7\\xb1\\xa8\\x97\\xfe\\x1b\\x4e\\x04\\x55\\x3c\\xe2\\x6e\\x29\\x99\\x80\\xaa\\x5f\\x7c\\xe0\\x17\\x9b\\xf4\\x95\\x4f\\x01\\xc2\\xa2\\x36\\x54\\xe5\\xe9\\x73\\x1e\\x14\\x47\\x34\\x7f\\xa4\\x3a\\xa8\\xb2\\xcb\\xd6\\xd4\\xb2\\xdf\\x93\\xfa\\x54\\xaf\\x71\\xe5\\x02\\x8a\\x6d\\xa8\\xc7\\x1e\\xf3\\xc5\\x0c\\x0d\\xe2\\x4d\\xca\\xee\\x78\\x56\\x78\\xe9\\x2a\\xaf\\xab\\xeb\\x23\\x3b\\x01\\x1f\\x45\\xc1\\x06\\x49\\x65\\x08\\x5d\\x25\\x47\\x05\\x0f\\x21\\xc6\\x52\\xaa\\x53\\x3a\\xfe\\x91\\x8a\\xa0\\xf9\\xbd\\xaa\\x26\\x07\\xb8\\x73\\xcc\\xd3\\xdb\\xd1\\xd3\\xa8\\xcc\\x62\\x17\\x2c\\xeb\\x43\\xb9\\x21\\xef\\x6b\\x25\\xc0\\x6b\\x09\\x92\\xe4\\xdf\\x2b\\x91\\xe3\\x71\\xb0\\xef\\x2b\\x39\\x47\\x38\\x8d\\xae\\xc8\\xec\\x6f\\x7e\\x38\\x67\\xd1\\xf6\\x10\\x72\\xaf\\x59\\x01\\x54\\xfa\\x61\\x9a\\x07\\xf8\\x7e\\x02\\xbd\\xdc\\x74\\x06\\x31\\x42\\x70\\xaf\\x1c\\x15\\xe8\\xee\\x88\\xb3\\x9c\\x01\\xbe\\x60\\x2e\\x4f\\x0b\\x52\\xd9\\xa0\\x72\\x4e\\x71\\xed\\xdd\\x7f\\xa9\\x13\\x41\\x69\\xc5\\xfa\\xab\\x91\\x59\\x79\\xee\\xa9\\x36\\x2d\\x0f\\x1f\\x91\\x60\\x26\\x81\\x62\\xdd\\x38\\xdb\\x02\\xfc\\xfb\\x41\\x35\\x0a\\xa0\\x8e\\x1e\\x14\\x09\\xb2\\x28\\x8d\\xb1\\xfe\\x4a\\x0e\\x58\\x6b\\x59\\x10\\xf4\\xde\\x89\\x4b\\xf9\\x97\\x4f\\x6a\\x49\\x83\\x01\\x3a\\x19\\x0e\\x7a\\x73\\x6d\\x14\\xec\\x54\\xc3\\x64\\x4a\\x3e\\xe9\\x58\\xa5\\xbd\\xfb\\xcb\\x62\\x97\\xab\\xa4\\x3a\\xf6\\xc7\\x27\\x46\\xbb\\x13\\x54\\x10\\x50\\x7d\\x8f\\xdd\\xe7\\x3a\\x2a\\x48\\xb7\\x46\\xf9\\x18\\xbe\\xf9\\xed\\x92\\xc5\\xbe\\x62\\xdd\\x55\\x23\\xfe\\x14\\xb1\\x6d\\x63\\x84\\xca\\x46\\xef\\x59\\xb2\\x18\\x5f\\xe9\\x33\\x38\\x3a\\x2c\\x7a\\x9b\\xf0\\x2d\\xa9\\xd0\\xfd\\x8b\\x0c\\x7d\\x7b\\xde\\x6b\\x43\\x9f\\x99\\x60\\x15\\x5e\\x34\\x5d\\x68\\x5d\\x4d\\xc3\\xc7\\x14\\x04\\xd6\\x56\\x81\\x19\\x23\\xaa\\x3c\\x47\\xd4\\xb0\\x9a\\x0b\\xae\\xf0\\xa1\\x2e\\x75\\xb6\\x43\\x9b\\xa8\\x13\\x5d\\xb1\\x58\\x65\\x87\\x42\\x22\\xcd\\x7a\\xa4\\x28\\xf5\\xca\\x5c\\xe5\\x14\\x0e\\x22\\xff\\x92\\x69\\x7f\\x37\\xfc\\x70\\xb5\\xb4\\xc9\\x4d\\x33\\x14\\xe6\\xaa\\x16\\xb2\\x14\\x6b\\xca\\x4f\\xc9\\x41\\x57\\x95\\x1f\\xc4\\x92\\x45\\xda\\x53\\xf6\\xc4\\x3d\\x1b\\xeb\\xd8\\x94\\xe3\\x1a\\x13\\x49\\x88\\x4d\\x71\\x1b\\x55\\xdb\\xe7\\x78\\xff\\xa7\\x27\\x16\\x5c\\xf7\\xcb\\x67\\x64\\x35\\x86\\x6c\\x2d\\x2c\\xb8\\x39\\x74\\x5c\\xa4\\x01\\x66\\xa2\\xf7\\xcf\\xc7\\x7a\\x84\\x24\\x68\\xb5\\x1a\\x8e\\x76\\x57\\x5f\\xc9\\xdd\\xfb\\x5f\"},\n{{0x49,0x7e,0x3e,0xbd,0x9e,0x4c,0xaa,0x81,0xc5,0xa8,0x97,0x3d,0x52,0xf1,0xd2,0x3f,0x60,0xc1,0x34,0xca,0x53,0xf6,0x2a,0x85,0x3a,0x0a,0xc0,0x43,0xe5,0x1c,0xb5,0x17,},{0x71,0xc0,0xca,0x7c,0xfa,0x05,0xca,0xfa,0xbb,0x14,0x3d,0x84,0xae,0x41,0xde,0x83,0x84,0x6f,0x42,0xc7,0x7c,0xaa,0x7a,0x91,0xa2,0xe3,0x48,0x39,0x7d,0x07,0xd5,0x2f,},{0x12,0x74,0x08,0x39,0xb3,0xc9,0xf1,0xba,0x87,0x98,0x96,0xdf,0xf6,0xd7,0x25,0xe8,0x4e,0x04,0x43,0xef,0x96,0xc3,0x49,0xef,0xf9,0x4d,0xc4,0x83,0x31,0x43,0xe5,0xb4,0x19,0x80,0x4d,0xa9,0xdb,0x11,0x8a,0x95,0x92,0xb1,0xb1,0xca,0x48,0xaf,0x18,0xf7,0x5b,0xef,0x1c,0xa4,0x68,0xa1,0xa5,0xc7,0x4c,0x7a,0xc8,0x13,0xbb,0x2c,0xf3,0x06,},\"\\xe1\\x32\\xf9\\xd6\\x7b\\x17\\x29\\x38\\x9b\\x82\\x8a\\x9f\\xae\\x05\\xa6\\x7a\\xa5\\x7f\\x0e\\xf7\\xe7\\xd4\\xd1\\xba\\x24\\x4d\\xec\\x87\\x04\\xdb\\x96\\x95\\x65\\xd1\\xca\\xb8\\x09\\xe4\\x8f\\xc0\\xab\\xf9\\x50\\xbc\\xd4\\xa3\\x7d\\x97\\xae\\xac\\xe6\\xda\\x54\\x6d\\x49\\x14\\xcb\\x5b\\x86\\xd6\\xab\\x18\\x1d\\x83\\x18\\x70\\xc3\\x09\\xbc\\xa6\\x16\\x46\\x8f\\x2a\\x34\\xd3\\xdf\\xaf\\xcd\\xbb\\x75\\x80\\xb0\\xc5\\xd9\\xff\\x98\\xe2\\xc5\\x4e\\xc8\\x03\\xbe\\x0d\\x3f\\xda\\x1d\\x4b\\x8c\\x0d\\x77\\x09\\xc8\\x9e\\x68\\x0b\\x00\\x8b\\xf9\\xb8\\xd9\\x03\\xb5\\xe9\\x34\\xb0\\x19\\x70\\x5f\\xe0\\xb0\\xc8\\xcf\\xbc\\x3c\\x09\\x67\\x84\\x3b\\x0a\\x1f\\xa1\\xb3\\xf1\\x62\\x77\\x6e\\xbe\\x96\\xb7\\x40\\xed\\xd6\\x4a\\xd7\\xc3\\x5b\\x3f\\xd1\\xa0\\x85\\xc9\\x9d\\x16\\xf5\\x41\\x67\\x82\\xde\\x17\\x35\\x85\\x87\\x47\\x0d\\xd1\\x3b\\x51\\x94\\xf2\\x0f\\x23\\x23\\x2b\\x2f\\x70\\x2f\\x10\\xaa\\xfc\\xaa\\x59\\xc7\\x06\\x6f\\x24\\xc4\\xc4\\x71\\xe4\\x2f\\xa8\\x6c\\x6b\\x9c\\x5c\\x3e\\x1e\\x8f\\x83\\x65\\xf4\\xdd\\x75\\xac\\xb3\\x2f\\xff\\xc0\\x53\\xc9\\xaf\\x41\\xc6\\xfd\\x2e\\xfa\\xc3\\x0e\\xcf\\x6a\\x2d\\xd0\\x08\\x5d\\xe9\\xb1\\xd8\\xcd\\xc5\\x0b\\x16\\x60\\xa8\\x66\\xdf\\x77\\x67\\x19\\x8b\\xd9\\xc8\\x73\\x70\\x61\\x5d\\x2b\\xca\\x99\\xf7\\x7b\\x84\\xd9\\x8d\\x7b\\x24\\xc9\\xc2\\x0f\\xd7\\x76\\x8f\\xd0\\x38\\x0d\\x6b\\x37\\x36\\x03\\x40\\xd1\\x35\\x98\\x04\\x78\\x20\\xdc\\xed\\x88\\xa8\\xd4\\x2d\\x57\\x29\\x37\\xb6\\xef\\xa1\\x69\\x21\\xa1\\xb2\\xb2\\xd0\\xeb\\x93\\x16\\x73\\x07\\x08\\x38\\xe6\\x11\\xe6\\xc0\\x23\\x29\\x0d\\x86\\xfe\\x90\\x2f\\x14\\xac\\x3a\\xcd\\x02\\x9e\\x33\\x97\\xfe\\xb9\\x7b\\x17\\x16\\x62\\x45\\xab\\x40\\x7a\\x76\\x6d\\x2e\\x09\\x04\\x42\\x4d\\x33\\xcd\\x3d\\x6e\\x2e\\x62\\xa5\\x2c\\x65\\xdf\\x7c\\xf0\\x04\\xd1\\x41\\x5c\\x0b\\x43\\x0c\\x11\\x27\\x62\\x3d\\xab\\x27\\x2a\\x2c\\x2e\\x2b\\x43\\xe0\\x2b\\x48\\x1b\\xe9\\x28\\xe8\\x99\\x54\\x27\\x28\\x32\\xbe\\x09\\x8b\\x50\\x2b\\x8b\\x56\\x43\\xc6\\x74\\x82\\xf5\\xde\\x44\\x03\\x03\\x25\\x81\\xf0\\x8a\\xfb\\x0a\\xea\\x48\\x86\\x85\\x82\\x60\\x7b\\xb3\\x91\\x98\\xc1\\xbf\\x13\\xa8\\x69\\xb6\\x32\\x58\\xa7\\x58\\x90\\xb6\\x94\\x45\\xff\\xd3\\x45\\x64\\x02\\x3e\\x47\\xf8\\xb1\\x88\\x4a\\x5e\\x49\\xb7\\xd9\\x42\\x5f\\x28\\xd5\\x15\\x30\\x13\\xfe\\x37\\x55\\xc6\\xcb\\x11\\x4d\\xb1\\x80\\xe6\\x0b\\x3d\\xc4\\xad\\xb3\\x6a\\x21\\x42\\x81\\x28\\x00\\x5a\\x77\\x2f\\xb5\\x71\\x89\\x34\\x55\\x65\\xbb\\xd1\\x75\\x98\\x13\\x52\\x3b\\xad\\x62\\x85\\x5e\\x79\\x28\\xee\\xf5\\x88\\x0d\\x3b\\xff\\xf1\\xd0\\xec\\x65\\xc2\\x45\\x92\\x33\\x5c\\xda\\x47\\xcf\\xcc\\x5b\\x5f\\xa6\\x52\\xb4\\x72\\x63\\x22\\x52\\x24\\x84\\x6a\\x20\\x9a\\x3d\\xd7\\x76\\x66\\x61\\xfc\\xa4\\xcc\\xca\\x59\\xc4\\x56\\xfc\\x9c\\xc3\\xe1\\xcf\\x80\\x42\\x55\\xaa\\x5f\\x39\\x7b\\xab\\x19\\x98\\x04\\x33\\x6b\\xde\\x29\\xe5\\x5c\\x6c\\x37\\x7d\\x58\\x3f\\x08\\x2c\\xe6\\x47\\x23\\x73\\x9e\\x4f\\x02\\x46\\x06\\xf9\\x06\\xc1\\x10\\xd0\\xa5\\xb6\\x10\\xe5\\xfe\\xd9\\x6d\\xab\\x5f\\x08\\xf4\\xcb\\x3c\\xfc\\x40\\xa3\\x55\\x57\\xe1\\xa7\\x40\\xb8\\xc7\\xc0\\x1f\\x7d\\x32\\x79\\xdd\\x9c\\x4e\\x87\\x64\\xc9\\x0b\\xc1\\x4f\\x41\\x61\\xdb\\x5a\\x37\\xf0\\x98\\x9b\\x7b\\xd8\\x03\\x5f\\x8b\\xea\\x39\\x4e\\xa1\\xd6\\x00\\x2c\\xe9\\xc3\\x4f\\x1e\\x9c\\x52\\xc6\\xa1\\x5d\\x15\\xbc\\x5b\\x25\\xc6\\xc1\\x5a\\xb0\\x0d\\xfd\\x6a\\x5b\\x1b\\xc9\\x17\\xaf\\x0b\\x1b\\x05\\xfd\\x10\\xd0\\x61\\xb3\\x68\\x3d\\x75\\xb5\\xf9\\xef\\xfb\\x22\\xae\\x72\\x08\\x5b\\xe4\\xf6\\x79\\x7b\\x58\\xcb\\x0c\\xab\\x56\\x18\\x44\\x12\\x1f\\x98\\xbf\\xd9\\x58\\x3e\\x0b\\xcc\\xb7\\x0f\\xad\\x76\\x98\\x0a\\x7a\\x73\\xb2\\x3c\\x70\\xb3\\xfd\\x02\\xf7\\x75\\x7c\\x11\\xa3\\xc2\\x1d\\x19\\xe0\\x56\\x50\\xff\\xb8\\x2b\\x9e\\x0d\\xf8\\xa6\\x73\\x5d\\x48\\x01\\x56\\xf4\\x79\\x49\\xd4\\x45\\x85\\x1b\\xae\\xaa\\x5e\\xe2\\x38\\x14\\xa4\\x1b\\x25\\x23\\x4f\\xb9\\x2c\\xc0\\xdf\\x19\\x80\\xd0\\x23\\xd5\\x1b\\x5c\\xf4\\xc3\\x11\\x85\\xc1\\x18\\xe3\\xee\\x3c\\x0c\\x0a\\x46\\xe0\\xa2\\xbe\\x6f\\x1d\\x3a\\xe4\\x52\\xcb\\xb6\\x6f\\x0f\\xd9\\x19\\x71\\x34\\x2d\\xa7\\xb1\\xb9\\x96\\x58\\x9d\\x94\\x09\\x67\\x81\\x55\\x21\\x95\\xc4\\x33\\xca\\xf1\\x9c\\x37\\xf9\\xf1\\x4f\\xa0\\xae\\x15\\xae\\x0b\\x02\\xb9\\x39\\xe4\\x02\\x03\\x4f\\xf8\\x18\\x85\\x93\\x9d\\x94\\x4e\\x60\\x4f\\x47\\x4f\\x21\\x52\\x43\\x89\\x39\\x0f\\xda\\xda\\x06\\xe3\\x0d\\x69\\x06\\x8c\\x88\\x48\\xcf\\x0a\\x95\\x1e\\xab\\x25\\xc4\\x91\\x25\\x62\\x94\\x4f\\x40\\x24\\x68\\x18\\x7a\\x23\\x23\\x9d\\x33\\x63\\x2f\\x29\\x12\\x3d\\x49\\xb7\\xde\\x13\\x08\\x33\\x98\\xdb\\xa9\\x7d\\xed\\xe1\\x2f\\x79\\x59\\xb9\\x52\\x47\\xa0\\x8f\\xc8\\xe4\\xb5\\x39\\x9d\\x1c\\x03\\x5c\\x08\\x94\\xcc\\x75\\xae\\x98\\x1c\\x2d\\xd4\\x93\\x54\\x13\\xbb\\xeb\\x68\\x53\\xfe\\x04\\x65\\x5c\\x77\\xd1\\x58\\xc1\\x23\\x7b\\x3e\\x0d\\xec\\xa5\\x63\\x6d\\x69\\xe0\\xdb\\xc5\\xac\\xaf\\x72\\xb6\\x0c\\x10\\xbb\\x98\\xcc\\xdd\\x60\\x09\\x8a\\x03\"},\n{{0x85,0xb4,0xd7,0x64,0x16,0x91,0x28,0x62,0x6f,0xd9,0xc7,0x82,0xad,0x61,0x16,0x22,0x9e,0xdd,0x77,0x63,0x1c,0x2b,0xc9,0xb8,0xee,0x54,0xb3,0x65,0x42,0xc1,0x49,0xeb,},{0x6a,0x09,0x89,0x7e,0x62,0x9b,0xb4,0x37,0x04,0xde,0xbb,0x67,0x15,0xc9,0xde,0xa5,0xd8,0x92,0xb6,0x34,0x30,0x64,0x40,0x99,0x7c,0x3c,0x9e,0x94,0xbe,0x8a,0xb5,0x47,},{0x4a,0x79,0xc4,0x42,0xa4,0xc3,0x9c,0x62,0x89,0x26,0x17,0xef,0x8e,0x80,0xb4,0x09,0x11,0xc4,0xb9,0xd3,0xff,0x0a,0x56,0x73,0xb5,0x7b,0xdb,0x84,0x54,0xad,0x73,0x67,0x69,0xdf,0x27,0xc7,0x8a,0x4b,0xf7,0xad,0x56,0x60,0x40,0xe7,0x47,0x27,0x8b,0x11,0xeb,0x65,0xcf,0x9e,0xc7,0xeb,0xa8,0x66,0x12,0x0a,0x36,0x54,0xf4,0x71,0x6e,0x00,},\"\\xb2\\xa0\\x49\\x3d\\x47\\x1c\\x33\\x91\\xf7\\xad\\xd1\\xe2\\xcf\\x0b\\xfb\\x32\\xab\\x05\\xdb\\xcb\\x14\\xf6\\xe4\\xf5\\xf3\\x46\\x3a\\xa8\\xd9\\x95\\x52\\xf4\\x33\\x02\\x20\\x46\\xd2\\xf8\\xeb\\x76\\x3c\\x01\\x71\\xfc\\xb1\\xe7\\x4a\\x04\\x9f\\xfe\\xb4\\xb8\\xf0\\x10\\x0b\\x82\\x10\\xfc\\xe8\\x56\\xb2\\xe1\\xa8\\xe7\\x39\\xd2\\xf9\\x36\\x73\\xef\\x8f\\x8f\\x40\\x49\\x8b\\x30\\x81\\xfa\\x1f\\xd7\\x85\\x19\\x8c\\x6d\\x37\\x0e\\x16\\x2d\\x41\\xab\\xe8\\x31\\x86\\xf2\\x32\\x97\\x83\\x40\\x8b\\x9b\\x88\\x0d\\x00\\xf8\\x1d\\x53\\x10\\x0b\\x42\\xd2\\x7a\\x26\\x1f\\x20\\xcd\\xee\\xd1\\x9c\\xc5\\x8c\\xb8\\x63\\x12\\x81\\xd8\\x0d\\xb1\\x92\\x53\\x10\\xe2\\x35\\xe4\\x49\\x66\\x30\\x9b\\x87\\x9b\\xdf\\xc2\\x32\\x22\\x14\\x33\\xba\\xe5\\xca\\xe4\\x66\\x90\\xcb\\x52\\x7b\\x67\\x79\\xe1\\x1f\\x1b\\xd2\\xa5\\x6b\\x59\\xc5\\x6e\\xd4\\xd9\\x4f\\xdf\\x7a\\xa8\\x9d\\xfa\\x9b\\xf2\\x0d\\xbf\\xa6\\xa4\\x39\\x8b\\x98\\x38\\x45\\x17\\xe1\\xdd\\x5d\\x2c\\xd9\\xce\\x52\\x4a\\x47\\x36\\x2e\\xf3\\x2a\\xc7\\x92\\x74\\x2a\\x12\\x9c\\x9e\\x06\\x13\\x08\\x76\\xab\\x5a\\xd5\\x51\\x8e\\xab\\xc5\\xe8\\x0b\\x02\\x2d\\x8f\\xa1\\x3e\\x50\\xd5\\x5d\\xed\\x58\\x95\\x33\\xe6\\xea\\x32\\x24\\x2c\\x1b\\x3f\\xd7\\xe6\\x5f\\x80\\xde\\xe7\\x20\\xb6\\xd8\\x7d\\xcf\\xf3\\xe3\\xdf\\x04\\xc8\\x02\\xd2\\xe9\\x14\\xa8\\x7a\\x36\\x29\\xc9\\x0b\\xb6\\x9e\\x0a\\x6f\\x8b\\xbb\\x5e\\xe5\\x05\\xf1\\x43\\xc9\\x97\\x73\\x75\\xad\\xb0\\x65\\xc3\\xe3\\xd3\\x91\\xf9\\x05\\xfa\\x3c\\x33\\x6c\\x9d\\xa4\\x1e\\x4a\\x23\\x20\\xbc\\xf4\\x60\\x97\\x6f\\xc7\\xeb\\x1f\\xb6\\xc6\\xa3\\xc3\\x95\\xdb\\xd1\\xd2\\x8a\\x1b\\x09\\xcd\\xb9\\xae\\x9f\\x9a\\xae\\xe4\\xd9\\xc5\\x66\\xa2\\xac\\x40\\xad\\xd8\\x70\\x47\\x9f\\xaf\\x54\\xad\\x1b\\x76\\x97\\x71\\x0b\\x4e\\xb6\\xf7\\x32\\x02\\x44\\xb5\\x97\\x57\\xd1\\xea\\xc3\\xd9\\x22\\xb7\\xa7\\x30\\xb1\\xac\\xf0\\xde\\x9a\\x45\\xd4\\xac\\x87\\x9d\\x21\\xfc\\x61\\x6e\\xf3\\x96\\x5d\\x74\\x34\\x5e\\xd7\\x07\\x79\\xeb\\x68\\x32\\x80\\xce\\xe2\\x5b\\xf3\\x73\\x9b\\xeb\\x6b\\x4c\\xdf\\xa2\\x5d\\x20\\x2d\\xa1\\x3a\\x4a\\x67\\x30\\x40\\xd9\\x70\\x48\\x65\\x8b\\x92\\x05\\x47\\x95\\x05\\xd0\\xbe\\xe4\\x88\\x0a\\x73\\x99\\x7c\\x70\\x82\\x5a\\x6e\\xc5\\xfd\\x9f\\x95\\x2e\\x65\\xfa\\x02\\x22\\x54\\x45\\xfc\\x3b\\xdf\\x4a\\xde\\xa3\\xd4\\xd2\\x25\\x51\\xcb\\xac\\xeb\\x38\\x74\\x79\\x8d\\x6a\\x33\\xa6\\x66\\x3f\\xe3\\x75\\x70\\x81\\xd6\\x24\\x3d\\xfd\\x7c\\xd2\\xee\\xbf\\x60\\xa3\\x89\\x9f\\xa1\\xf8\\xf6\\xc9\\x56\\xa3\\xb1\\x83\\xf8\\x9b\\x9e\\x7d\\x2c\\xa3\\x64\\x48\\x58\\x4d\\x53\\xaa\\x8b\\x44\\xe6\\x5a\\xd3\\xe5\\x27\\xf7\\x87\\x23\\xfa\\x6f\\x59\\x22\\x42\\x98\\xdf\\x31\\xd5\\xe8\\xad\\xa5\\x67\\xc8\\xd1\\xb1\\x1f\\x3b\\x13\\x14\\x75\\x53\\x31\\xc1\\x73\\x2d\\xc5\\x4a\\x12\\xa4\\x35\\x6e\\xdd\\xa4\\x7e\\x3c\\x13\\x0b\\x32\\x52\\x82\\xa3\\x54\\xbf\\xe1\\x5c\\x30\\x00\\xd2\\x07\\x82\\x29\\x31\\x79\\x41\\x87\\xe0\\x97\\x3a\\xb8\\xef\\x87\\xbf\\x89\\xc3\\x54\\xa0\\x35\\xa8\\x1f\\x45\\x91\\x12\\x23\\x56\\x3b\\xfd\\x99\\xf9\\x0a\\x75\\xe5\\x3d\\x01\\x0d\\x89\\x29\\xf4\\xf8\\x5a\\x5a\\x5a\\x4f\\x9f\\xcc\\x1c\\x78\\xf0\\xa2\\xfc\\x46\\x6f\\x5f\\x1c\\x65\\x22\\xcf\\x62\\xa7\\xbe\\x37\\x88\\x07\\x96\\xe9\\xb3\\xca\\x09\\x11\\xec\\xca\\x3f\\x22\\xc3\\xb2\\x4d\\x5d\\x9d\\xaa\\x68\\x88\\xf8\\x9a\\x8f\\x71\\xa1\\x58\\x59\\x35\\x9c\\xea\\x46\\x8e\\xf2\\x38\\xec\\xf6\\x46\\x19\\x27\\x83\\xa2\\x57\\xad\\xda\\xde\\x90\\x47\\xe1\\x3e\\xdd\\x8b\\xcc\\x1f\\xd4\\x17\\x7c\\xb2\\x0f\\x88\\xd1\\x19\\x98\\xd9\\xc7\\x26\\x2d\\x64\\x8c\\x2b\\xf6\\x6f\\xb2\\x27\\xb9\\xb3\\xa9\\xed\\x46\\x96\\x2d\\x22\\x57\\xa4\\x20\\xf6\\x4b\\xea\\xd9\\xe2\\x86\\x57\\xb5\\x21\\xdb\\x2e\\x22\\x16\\x52\\x87\\x79\\x1f\\x3a\\x1b\\xec\\x4c\\x78\\x22\\xa6\\xca\\xbd\\xe5\\xec\\x77\\x01\\x88\\xcb\\x74\\x49\\x8a\\x4f\\x08\\xe5\\xa3\\xa7\\x63\\x9d\\x24\\x0a\\xe3\\xf4\\xfd\\x03\\x53\\xc0\\xdd\\xa8\\xae\\x41\\x0b\\x9f\\xa7\\xf4\\x3f\\xee\\xd1\\x3e\\x9f\\x13\\xe6\\xc9\\x41\\x0a\\x1d\\x24\\xcd\\xfc\\x2c\\x8e\\x64\\xa1\\x5a\\x12\\xf7\\x55\\x45\\xb0\\xa5\\x75\\x71\\x35\\x23\\xd4\\xdf\\xa1\\xa4\\x74\\x27\\xa8\\x85\\x1b\\xa9\\xac\\xcc\\xad\\x78\\xb4\\xef\\x6a\\x18\\x5f\\x5c\\x3b\\x00\\x11\\x90\\xdd\\x8f\\x37\\x08\\x8a\\x00\\x0a\\xcc\\xf4\\x48\\xbe\\x8d\\x49\\x37\\x1d\\x9d\\xa2\\xe1\\xcb\\x5f\\xfe\\x07\\xd4\\x1a\\x5c\\x22\\xe9\\x46\\x60\\xac\\x37\\x13\\x5a\\xc8\\x58\\xcb\\x17\\x69\\xcb\\x66\\xe8\\x26\\x9f\\xd5\\x33\\x58\\xec\\xac\\xf5\\xdd\\x92\\xc7\\xeb\\x61\\x86\\xb4\\xd4\\xd6\\x13\\x0a\\x73\\x2d\\xc1\\x0b\\xbb\\x2b\\xe3\\x2f\\x9b\\x1d\\x69\\x51\\x01\\x4a\\x63\\x5c\\x12\\xd2\\x2f\\x0d\\xc5\\xbd\\x5c\\x2a\\x3f\\x96\\xae\\xc6\\x2e\\x77\\x77\\x94\\x7e\\xaa\\x02\\x28\\x12\\xca\\xce\\xd3\\x3a\\x5b\\xef\\x9f\\xf8\\x83\\x5f\\x88\\x03\\x67\\xa3\\x7b\\x0b\\x76\\xd2\\xdd\\xe3\\x96\\xc6\\x14\\xe1\\xa4\\x72\\x1e\\x00\\x0c\\x00\\xf1\\x61\\x93\\x5b\\x14\\xa7\\x38\\xa1\\xb7\\x0f\\x6e\\xa5\\x42\\x55\\xb7\\x95\\x18\\x69\\x64\\x62\\x12\"},\n{{0x33,0xd4,0x77,0x60,0x2f,0x29,0x63,0x05,0xa6,0x71,0x9e,0xa6,0x94,0xc0,0x44,0xe9,0x0d,0x23,0x3c,0x2d,0xea,0x85,0xc4,0x6a,0xbe,0x19,0x20,0xe8,0x8c,0x31,0x78,0x49,},{0xff,0x6f,0xee,0xa0,0x28,0xec,0x34,0x6d,0xd4,0x91,0x07,0xbb,0x71,0x3f,0xdd,0xbb,0x28,0x2e,0xbc,0xd0,0x34,0xe2,0xea,0xfc,0x7c,0xdb,0x1c,0x5a,0xdf,0x92,0x63,0x90,},{0xca,0xa2,0x87,0x98,0x95,0xd4,0xf6,0x20,0xb9,0xeb,0x5f,0xed,0x22,0xb4,0x56,0x2e,0xeb,0x1a,0xd6,0x38,0x22,0x96,0x8f,0x76,0xad,0x91,0x07,0x6b,0x16,0x6c,0x05,0xee,0x20,0x86,0x4d,0x98,0xbb,0xbc,0x6e,0x79,0xdd,0x03,0x62,0xca,0xcf,0x7a,0x21,0xb4,0xcf,0xc2,0x30,0xd6,0x35,0x5d,0x43,0x12,0x0c,0xff,0xfb,0x94,0x8b,0x8f,0x6c,0x0e,},\"\\xcf\\xea\\x07\\xa7\\x79\\xf1\\x53\\x7e\\x49\\x81\\x23\\xc6\\x76\\x29\\x05\\x73\\xef\\xcc\\x5d\\xb7\\x02\\x45\\xd9\\x3d\\xea\\x5c\\x05\\x72\\x6f\\x87\\x13\\xd0\\x02\\xae\\x66\\xc1\\xc9\\x69\\x07\\x47\\xca\\x92\\x30\\xb1\\x62\\x9d\\x36\\x62\\xab\\x73\\xd6\\x6b\\x94\\x98\\x79\\x16\\x4b\\x21\\xa3\\x5f\\x40\\xcf\\x37\\x99\\x04\\x19\\x08\\xed\\x6f\\x92\\x29\\xec\\xb3\\x90\\xc5\\xf2\\x22\\x34\\xe1\\xc5\\xf2\\x6b\\x3a\\xb5\\xba\\x59\\xe7\\x8c\\x64\\x96\\x98\\x71\\xb4\\x28\\xb7\\x85\\x16\\x77\\x75\\x55\\xaf\\x4e\\x89\\xc6\\xfb\\xc1\\x93\\xa9\\x46\\x95\\x22\\x6c\\x6d\\x32\\x99\\x91\\xa1\\x1b\\xd5\\x80\\xd1\\x89\\x56\\x08\\x9b\\x58\\xa0\\xe4\\x2c\\xa3\\x5f\\x6c\\x6d\\x26\\x09\\xad\\xe0\\xd0\\xb6\\x19\\xd4\\x89\\x25\\xc6\\x8c\\xd9\\xd2\\x25\\x0d\\xff\\x27\\xcf\\x2f\\x0d\\x44\\x44\\x87\\x09\\xb6\\x79\\xf3\\x5b\\xbd\\xce\\x0f\\x49\\x6b\\x0a\\x16\\xca\\x67\\xea\\xce\\xec\\x25\\x8b\\x1a\\xec\\x91\\x77\\x5a\\x3a\\x2e\\xe8\\x01\\xb1\\xc9\\xa2\\x26\\xa6\\xb0\\x01\\x92\\x6a\\x05\\x7a\\x06\\x30\\x67\\x27\\xee\\xda\\xe8\\xc5\\x77\\x53\\x1d\\xf0\\x4a\\xc0\\x9b\\x5b\\x49\\xbc\\xde\\xab\\xde\\xb8\\xac\\x4e\\x8e\\x82\\xcf\\x1e\\x7a\\xf8\\x35\\xfc\\x61\\x1c\\xa7\\xa6\\x84\\xb8\\x35\\x26\\x04\\x24\\x15\\xb1\\xd6\\x65\\x2e\\x86\\x34\\x31\\x1e\\x19\\x46\\x27\\xea\\xe7\\x8d\\x01\\x1e\\x6f\\x40\\xf6\\x45\\x79\\x4e\\x36\\x89\\x5a\\x23\\xe1\\xbd\\x84\\x88\\x3a\\x39\\x3e\\xcf\\xe5\\xa2\\x48\\x02\\x6a\\xea\\x86\\x44\\x70\\x59\\xf7\\xa4\\x29\\x36\\x8f\\x21\\xc8\\x9e\\x01\\x45\\x20\\x79\\x78\\xb9\\x13\\xc8\\x0a\\x22\\xd7\\xca\\xf2\\x67\\x3f\\x7c\\x76\\xf6\\xc2\\x6c\\xf8\\x84\\x41\\x2e\\x17\\xd0\\xc2\\x55\\x43\\x0f\\x50\\x2b\\xce\\x74\\xe3\\xa3\\x10\\xd1\\x7f\\x6f\\x4d\\x48\\x5d\\xa2\\x80\\xed\\x5b\\x5e\\xea\\x6c\\x49\\xba\\x74\\x8d\\x76\\x48\\x14\\xb9\\xe3\\xda\\xf6\\xfc\\xc2\\x18\\xc2\\x74\\x0c\\xa7\\x70\\x18\\xf7\\x13\\x44\\x51\\x9d\\xa8\\x2a\\xda\\x31\\xe0\\x01\\x92\\x4f\\xc7\\x76\\x79\\xe3\\xe9\\xff\\x9f\\xab\\x67\\xdd\\x09\\xa6\\x19\\x24\\xc8\\x21\\xa1\\xfd\\x99\\x9f\\x74\\xdf\\xa3\\xf8\\x19\\xad\\xb3\\x1d\\x15\\xe5\\xed\\x8a\\xaa\\x52\\xc1\\xbd\\x7c\\xca\\x26\\x67\\x11\\xa7\\x4d\\xd6\\x21\\x04\\xef\\x3c\\x2b\\xf7\\x37\\xfc\\xe6\\x94\\x2b\\x34\\x8a\\x33\\xc3\\xdf\\xd6\\xd9\\x2a\\x72\\x4b\\x6d\\x58\\x78\\x42\\x1a\\xeb\\x23\\x0a\\x53\\x3f\\xe2\\x1c\\x8b\\x2f\\xd3\\xda\\x59\\x6a\\x61\\x80\\xa4\\x5c\\x98\\x6d\\x7e\\xce\\x4c\\xdc\\x8a\\xd6\\x81\\xea\\xd6\\x90\\x64\\xbb\\xdd\\xfc\\x20\\xf3\\xc5\\x21\\x25\\xf8\\x33\\x95\\xbe\\xd1\\x55\\x7f\\x67\\x18\\x2b\\x9f\\xe9\\x91\\x38\\xaf\\x3c\\x35\\x6c\\x5e\\x65\\x29\\x78\\xdd\\x23\\x8b\\x76\\x1c\\x74\\x2f\\x81\\x58\\xe2\\x31\\x4b\\x96\\x42\\x08\\x33\\x09\\x78\\xb0\\x62\\x0a\\x13\\xa1\\x6d\\x76\\x1d\\x52\\xf0\\x6e\\x46\\x6a\\x40\\x94\\xb6\\x5c\\xd6\\xf2\\x68\\x54\\xae\\xd6\\xf9\\xa8\\xc2\\xa8\\x84\\xa0\\xd0\\xbf\\x4e\\xe5\\x87\\xee\\xb8\\xb6\\x02\\x48\\x72\\x39\\xa7\\xe5\\x81\\x72\\xc8\\x09\\x98\\x3a\\x8d\\xb1\\xc1\\xfc\\x7c\\xe8\\xc4\\x8b\\xc8\\xa6\\xfb\\x81\\x2d\\x6a\\xa9\\xe8\\x3a\\x3a\\xb4\\xdd\\xf7\\xa8\\xd4\\x0d\\x3f\\xe0\\x0e\\xa1\\x6e\\x04\\x06\\x2b\\x8a\\xce\\xb9\\xc9\\x9e\\xef\\xa4\\x1f\\x4f\\x87\\x44\\x78\\x28\\x12\\x6d\\x0d\\x9c\\x9f\\x86\\x05\\xe8\\x46\\x7c\\x5e\\x4d\\x67\\x1d\\x5c\\x6d\\x9f\\xa7\\x0d\\x74\\x70\\x98\\xd9\\x41\\x21\\x12\\x23\\xb9\\xbc\\xf2\\x61\\x93\\x8d\\x67\\x04\\xa3\\x2d\\x22\\xc6\\x1e\\x30\\xf3\\x57\\x0a\\x1f\\x5d\\x09\\x98\\xb4\\x79\\x10\\x80\\x88\\x2a\\xa5\\x62\\x31\\x67\\xb6\\x3a\\x23\\xf3\\x40\\xf0\\xe7\\xc6\\xf9\\xa8\\x30\\xa7\\x5b\\x74\\x63\\x1f\\xa5\\xb5\\x7a\\xfd\\xb1\\xe6\\xbc\\x22\\x69\\x9b\\xb0\\x31\\x56\\x67\\x5d\\x59\\x83\\x53\\xa5\\xd1\\xb5\\x58\\x97\\xe4\\xc1\\x10\\x61\\xdd\\x14\\x5f\\x23\\xe8\\x53\\x7c\\x63\\x2f\\x75\\xc1\\x0d\\xf0\\x5b\\x25\\x54\\x72\\x38\\x57\\x40\\x17\\xfe\\x7b\\x64\\xb8\\xe9\\x98\\x69\\x15\\x7f\\xee\\x35\\xf7\\xad\\x7e\\x63\\xe9\\x95\\x93\\x30\\x29\\x29\\x50\\x3a\\x96\\x76\\x80\\x23\\xb4\\x12\\x5a\\xd7\\x49\\xdf\\xf4\\xb9\\x92\\xee\\x5c\\x2b\\x4f\\x3a\\xda\\x48\\x89\\xe4\\xae\\x62\\xec\\x15\\xd2\\xdb\\x59\\x69\\xd7\\x30\\xdb\\x30\\x75\\x47\\xf6\\x38\\xc3\\x18\\x50\\x32\\xb1\\x2f\\x75\\xfb\\xb3\\x17\\xe4\\x7d\\xf7\\xb9\\x29\\x2a\\xe9\\xe7\\x6a\\x2c\\x0a\\x06\\xfc\\xad\\x10\\x8c\\xdd\\x23\\x5f\\x6e\\x38\\xd9\\x67\\xb6\\x37\\x95\\x11\\xff\\x69\\x65\\xc2\\x2f\\x2c\\x66\\x80\\xa1\\x2b\\x03\\x04\\xeb\\x2b\\x29\\x6c\\x99\\xa7\\x6c\\x27\\x29\\xd9\\x8e\\x0a\\x78\\x24\\xb6\\x7f\\x3f\\xe8\\x42\\xd6\\xf6\\xab\\x27\\x3e\\x89\\x48\\x45\\xb3\\x2d\\xc6\\xdd\\xfc\\x7a\\x22\\x0f\\x76\\xbd\\x96\\x5c\\x69\\x85\\x81\\x83\\xc8\\xf3\\x57\\x39\\x5f\\xc5\\x7d\\xc8\\x29\\xde\\xfa\\xac\\xb5\\x60\\x3a\\x75\\x78\\x68\\xd5\\xe5\\x62\\xf9\\x78\\x1e\\xe3\\x9e\\x0e\\x94\\x68\\x8a\\xd3\\x54\\x5b\\x32\\xdd\\x73\\x66\\xb6\\xb0\\x47\\xe8\\xd1\\xd3\\xd5\\x65\\x99\\x7b\\x23\\x6e\\x7f\\x75\\x96\\xc5\\xf8\\xd7\\xc1\\xc1\\x1b\\xcf\\x4a\\x24\\x46\\x20\\xcb\\xd2\\x1d\\x55\\x9a\\x7c\\x9b\\x3f\"},\n{{0x70,0x74,0x56,0x86,0x11,0xa6,0x6d,0xfc,0xa8,0x30,0x7c,0xae,0x60,0x8b,0xb2,0x69,0x95,0x84,0x4d,0xf4,0x35,0xe5,0x30,0x0e,0x5b,0x4d,0x72,0x91,0xcc,0x22,0x90,0x7f,},{0xdd,0xab,0xdd,0xd1,0x5e,0xaf,0x83,0x11,0x5d,0xdd,0x06,0x5d,0x7e,0x22,0x0b,0x1e,0xfc,0x26,0x2a,0x61,0xc5,0x2e,0x91,0x43,0x47,0x44,0x2b,0xde,0x6d,0x00,0x25,0x06,},{0x7f,0x65,0x31,0x34,0xc0,0xb9,0x0f,0x44,0xa4,0x89,0xf0,0xb0,0x5f,0xc4,0x07,0x07,0xad,0x9f,0x13,0x98,0xf3,0x40,0xb4,0x47,0xa3,0xc9,0x86,0x1f,0x51,0x1c,0x9f,0x15,0x68,0x80,0x3b,0x76,0x84,0xa0,0x4a,0x89,0x8c,0x45,0x15,0x4d,0xd4,0x86,0xbd,0x50,0x75,0x89,0x98,0xe1,0x26,0x43,0x93,0x78,0xb3,0xf5,0x9f,0xf3,0x67,0x49,0x2a,0x0a,},\"\\x6c\\x13\\x74\\x23\\xea\\xc7\\x90\\xb8\\xe8\\xe4\\x18\\xb2\\x90\\xe0\\x57\\x9c\\x7b\\x86\\xb1\\x4a\\xed\\x81\\x8d\\xe8\\xce\\x53\\xce\\xa3\\xf3\\x40\\xa1\\xa9\\x53\\x91\\xf9\\x84\\x96\\x8f\\x2b\\x42\\x29\\x28\\x2a\\x81\\x61\\xc0\\x9a\\xb1\\x49\\xcd\\xac\\xd6\\x69\\x70\\xb4\\x01\\x3f\\x52\\xe5\\xe6\\x8e\\xa8\\xc9\\xdb\\x68\\x5b\\x2c\\x53\\x07\\x35\\x00\\xe5\\xb3\\x5e\\x29\\xea\\x0b\\xa1\\xf4\\xd1\\x59\\xa5\\x58\\xd3\\x61\\xb0\\x65\\x16\\x83\\x6c\\xf7\\xb9\\xea\\x50\\x1f\\xa0\\x50\\x6b\\x98\\x5f\\x03\\x6a\\x82\\xd9\\xe0\\x84\\x48\\x9d\\x3b\\xfe\\xd3\\x40\\x93\\xe2\\xd6\\xd9\\xed\\xf5\\x57\\x85\\xed\\x35\\xa9\\x0c\\xe5\\x6c\\x76\\x16\\x86\\xcc\\x3e\\xa1\\xa2\\xc7\\x6a\\xda\\x5e\\xc8\\xc1\\x45\\xd8\\x18\\xb0\\x47\\xcc\\x51\\x6e\\xec\\x5d\\x2d\\x6a\\x93\\xa5\\x55\\x92\\xd8\\x92\\xe3\\xd5\\xcd\\x10\\xc2\\x50\\xc0\\x4b\\x04\\x9b\\x38\\xfc\\x7e\\xc0\\xf3\\x9a\\xba\\x15\\x82\\x40\\x07\\x33\\x6c\\x2b\\x0f\\x7f\\x81\\xd6\\x4d\\x5c\\xa3\\xe2\\x9d\\x6f\\xda\\x4c\\x23\\xd9\\xba\\x65\\xd9\\xfe\\x3c\\xb4\\xe0\\x39\\x13\\x69\\x72\\x87\\xb4\\x6a\\x0b\\x1f\\xcc\\xd2\\x62\\x4e\\x39\\x7a\\xe9\\x5c\\x52\\x54\\xbc\\xd8\\x8d\\x2c\\x7c\\x8f\\x70\\xfd\\xc8\\x17\\x3f\\x64\\xc1\\xde\\x32\\x28\\x1a\\xb4\\x18\\x46\\x93\\xb4\\x8a\\x34\\x9e\\x67\\x82\\xbc\\x89\\x92\\xb4\\x3c\\x7d\\xe7\\xcb\\x9d\\x33\\x92\\x9b\\xf9\\x53\\x06\\xc2\\xaf\\x7e\\x93\\x8d\\x84\\x86\\xb3\\x86\\xf9\\xfd\\x3f\\x0f\\x71\\x61\\xe0\\xe6\\x86\\x2d\\x4f\\x92\\x81\\x44\\x68\\x65\\xa1\\xc9\\xbe\\x24\\x60\\xef\\xbc\\x20\\x15\\x1b\\x06\\xe7\\x9d\\x01\\x46\\x17\\xd0\\x30\\x0e\\x67\\x1d\\x48\\x76\\x74\\x58\\x59\\x66\\x25\\xb7\\x6d\\xff\\xc5\\x58\\xaa\\x9b\\x40\\x61\\x21\\x96\\xec\\x82\\x7e\\x1c\\x6f\\xff\\x51\\x8f\\xb7\\xad\\x4b\\xf8\\xc4\\x6f\\xcb\\x27\\x88\\x85\\xaa\\x49\\x1b\\x77\\xa2\\x89\\x95\\xcf\\xb9\\xd7\\x96\\x40\\xaa\\xd1\\x74\\xc6\\xdf\\x43\\x93\\x8e\\x3f\\x13\\x85\\x20\\x5c\\x54\\x59\\x5b\\x33\\xde\\xde\\x50\\x14\\x37\\x46\\xa1\\x70\\x5e\\x7e\\x0b\\x69\\xaf\\x4a\\x26\\xc3\\xb7\\x65\\x15\\x05\\x18\\x92\\xb1\\x5c\\xa6\\xe4\\x8c\\x3d\\x91\\xfb\\xc7\\x5e\\x8f\\xe4\\xa0\\xfe\\x8e\\xd2\\xc2\\x6c\\x10\\x73\\xbe\\xb7\\x0e\\xa3\\x8d\\x09\\x27\\x02\\x92\\x78\\x40\\x67\\x55\\xae\\x6e\\x11\\xda\\x37\\x86\\x53\\x64\\x95\\x15\\xe0\\x08\\x5b\\x5e\\xa7\\xdb\\x32\\x49\\x20\\x8e\\x33\\xa6\\xc8\\xb6\\xae\\x8c\\xd8\\x0c\\x9b\\xd6\\xb9\\x83\\xe7\\x3e\\x9b\\x91\\xdb\\xec\\x09\\x1f\\xae\\x99\\x5f\\x80\\x32\\x42\\x7e\\xde\\xc0\\x2c\\xad\\x90\\x55\\xeb\\x8b\\x7d\\xbc\\xfa\\x80\\xd4\\xf6\\x4f\\x57\\x27\\xa1\\x52\\xf1\\x1c\\x47\\xe5\\x2d\\x75\\x3a\\x57\\xb6\\xe5\\xfd\\xdf\\x77\\x4c\\xea\\x4d\\xa9\\x10\\x02\\x68\\x19\\xc4\\x1e\\x32\\xb4\\xf1\\x99\\x72\\x7e\\x23\\xc5\\x4a\\xb5\\xd7\\x01\\x42\\xb8\\x54\\xa2\\x7b\\x04\\xe6\\x4c\\xf4\\x4a\\xf2\\xa8\\x99\\x5e\\x12\\x00\\xbd\\x11\\x7c\\x7a\\x16\\x74\\xed\\xef\\x59\\xbc\\x53\\xf7\\x3a\\xda\\xf6\\x38\\xe0\\x77\\x3b\\x85\\xb5\\x63\\x34\\xaf\\xf6\\xe1\\x17\\x43\\xe3\\xa3\\xd3\\x61\\x4a\\xa8\\xa3\\x75\\xb3\\x78\\x1e\\xc8\\x14\\xcc\\x08\\xe7\\x1e\\xfa\\x78\\x18\\x51\\x9c\\xb2\\x4a\\xf8\\x2c\\x33\\x1d\\xfd\\x6a\\xc7\\x8e\\xc1\\x7f\\xd7\\x17\\x4b\\x61\\x02\\x1e\\x8c\\xf9\\x01\\xa2\\xaa\\xa6\\xad\\xbc\\x90\\x2a\\x91\\x6b\\x2a\\x2f\\x4f\\x79\\xe5\\x51\\x50\\x1f\\xbf\\x01\\xdf\\x6b\\x85\\x18\\x50\\x4c\\x1e\\x94\\x64\\x69\\x38\\xbe\\xd1\\xa8\\x50\\x9c\\x2a\\x38\\xfb\\x6a\\x79\\x8a\\x78\\x58\\xf4\\x09\\xb0\\xf2\\xfb\\x9b\\x3f\\x48\\x17\\xe5\\x68\\xc5\\x2d\\x9a\\xbf\\xe2\\x16\\x8c\\xc3\\x65\\x0f\\xc4\\x3e\\x0f\\x99\\x75\\xfe\\x29\\xe3\\x3a\\xed\\x1a\\x7b\\xf3\\x0d\\x86\\x31\\x15\\x07\\x90\\x65\\x0a\\x3c\\xb7\\x8c\\x36\\x8f\\x1a\\xea\\x9a\\xc6\\x0c\\x5e\\xeb\\x96\\x9a\\x45\\xf8\\x4a\\xa3\\x73\\x66\\xa8\\x39\\x77\\x19\\x0f\\x41\\xae\\x42\\x1e\\x0c\\x46\\xfd\\xa3\\xfa\\x01\\xb9\\x26\\xfc\\xef\\x82\\x24\\xfd\\xa3\\x6d\\xf4\\xf8\\xa8\\x77\\x01\\xfe\\x79\\xfe\\x06\\x28\\xef\\x0c\\xc0\\x2d\\xf2\\xbd\\x78\\x32\\x07\\xc7\\xdb\\x87\\x11\\x9a\\x03\\x69\\xfe\\x16\\xee\\xb3\\x8f\\xdc\\x9f\\xb3\\x5d\\x9e\\x19\\x5f\\xe1\\x4f\\x8c\\x10\\x38\\x20\\x8a\\xb9\\x77\\x00\\xaf\\x79\\xf2\\xe2\\xe0\\x54\\x96\\x83\\x02\\x07\\xc7\\xda\\x8d\\xbe\\x8e\\x9b\\xb7\\x3b\\xc4\\x71\\xa4\\x3f\\x1b\\xe6\\x50\\xfa\\x92\\x81\\x9a\\xeb\\x5d\\xc7\\xee\\xd7\\xee\\xd8\\x17\\x12\\x70\\xd2\\x19\\x25\\x7d\\x19\\x61\\x0b\\x89\\xd2\\xd6\\x2d\\x3f\\x5b\\x64\\x8e\\x13\\x9e\\xed\\xf1\\xff\\x74\\xbe\\x01\\xa5\\xef\\x1d\\x95\\xf8\\x12\\x92\\x26\\x01\\xee\\x92\\x51\\x51\\x57\\xc4\\xec\\xad\\xfa\\x3e\\xef\\x9f\\x2a\\x67\\x7c\\x00\\x3c\\xa4\\xab\\x9b\\x2c\\x45\\x47\\x2c\\xe5\\x5e\\x18\\xf4\\x0a\\x21\\xfe\\x1b\\x0d\\x45\\xb5\\x0b\\x50\\xc5\\x2a\\x0b\\x1a\\x5d\\x7c\\x37\\xd8\\xeb\\xc1\\x5e\\x02\\x05\\x84\\xd9\\xed\\xd7\\xb5\\x65\\x05\\xf8\\x20\\x78\\xe0\\xf8\\x99\\x38\\x91\\x35\\x01\\x4c\\x86\\xd1\\xe2\\xed\\x49\\xf9\\xcd\\x31\\x90\\x76\\x94\\x35\\x53\\xa3\\x12\\xae\\x05\\xab\\x33\\x35\\x26\\xe1\\x36\\x71\\x4f\\x09\\xa4\\x02\\xb3\\xc8\"},\n{{0x7d,0x7c,0xa8,0xe8,0xd3,0xb8,0x43,0x44,0xa5,0xe4,0xde,0xa0,0x8b,0x33,0x8d,0x8f,0xaa,0x5f,0xfc,0x11,0x9c,0xe5,0x66,0xef,0x65,0x6f,0x0f,0x45,0x84,0x77,0x5b,0x21,},{0x0b,0xde,0x34,0xb7,0x46,0xd2,0xc5,0x49,0x08,0x53,0x06,0x4d,0x48,0xc6,0xb4,0xc1,0xcb,0xbc,0x3e,0xe7,0xbe,0xff,0x5e,0x8f,0x68,0x4c,0x12,0x0f,0x31,0x5d,0x7e,0x4e,},{0xd0,0xc3,0xe2,0x48,0xa8,0xcb,0x2d,0xdc,0x7e,0x9f,0x21,0xc9,0xc5,0xb0,0x09,0xf7,0x0e,0xa2,0x9d,0xa6,0x89,0x7c,0xd9,0x2c,0x26,0x0f,0x04,0x7e,0xd6,0x8a,0xa1,0xc8,0xb9,0x65,0x7f,0x9d,0x82,0x6e,0x88,0xf4,0xa5,0x12,0xc5,0x00,0x3b,0xe6,0x40,0x68,0x80,0x74,0x12,0x63,0xae,0x7c,0xe6,0x86,0x0e,0xfe,0x73,0xad,0x54,0xd4,0x82,0x04,},\"\\x0b\\x72\\x70\\x75\\x34\\x5d\\x61\\x9f\\x5c\\xdc\\x7f\\xc4\\xc4\\x3c\\xdc\\x19\\x10\\x58\\x11\\xd9\\x5d\\x06\\x9f\\x81\\xc0\\xa6\\x2f\\xe1\\xe1\\x17\\x8c\\xf1\\xc3\\x5d\\xb0\\x5e\\x2d\\xe8\\x7d\\x11\\xae\\x1a\\x6f\\x53\\xef\\x38\\xb3\\x9b\\xf4\\xed\\x8f\\xbf\\x56\\xef\\x01\\x7a\\x1d\\x3c\\x15\\xb6\\x4f\\xe4\\xb2\\x61\\x0b\\xf6\\x9b\\xd1\\x9a\\xc7\\xaf\\xd4\\x6a\\x2b\\x87\\xb4\\x88\\xb6\\xc7\\x8a\\xd4\\x56\\x81\\x1c\\x1d\\xd6\\xbd\\x4a\\x6b\\x5d\\xa6\\x98\\x73\\x9f\\xd1\\xa1\\x4c\\xeb\\x9f\\x27\\xf1\\x24\\xb6\\x9f\\x6b\\xd1\\x6d\\xe5\\x53\\x7a\\xad\\x80\\x68\\x1c\\x56\\x33\\x58\\x03\\x94\\xda\\x3b\\x84\\xe9\\xb7\\xa5\\x5e\\xba\\xb8\\x52\\x2d\\x2d\\x6b\\xf1\\xaa\\x4e\\x7b\\x15\\x9c\\xbf\\x4e\\x20\\xb5\\x0b\\xfe\\x9c\\x71\\x1a\\xa0\\x47\\x11\\x9f\\x1d\\xad\\x87\\x49\\x26\\x0b\\x87\\x63\\x9e\\x9c\\x14\\x1d\\xef\\x62\\x02\\x6a\\x99\\x03\\x73\\xdc\\xfd\\x99\\xf7\\x7b\\x0f\\x5e\\xa6\\xad\\xfd\\x8f\\x59\\x4b\\x9c\\xe4\\x10\\x64\\xa5\\xed\\x30\\x7b\\xf2\\xd8\\xd1\\x73\\x70\\x49\\x8a\\xd7\\xf4\\x5f\\x9c\\x4d\\xd2\\x6c\\x42\\x0f\\x45\\x0f\\x53\\x62\\x3b\\xb6\\xd7\\xf3\\xf4\\x6a\\x14\\x9d\\x8f\\x13\\x5b\\xc2\\x91\\x33\\x10\\xfb\\x8f\\x90\\x43\\xd0\\x99\\x27\\x8b\\xbe\\xba\\x39\\x17\\x9f\\xa3\\x67\\xb0\\x16\\x73\\xe1\\xc9\\x53\\xef\\xfd\\x2c\\xae\\xa7\\x31\\x1c\\x47\\xc0\\x37\\x27\\x44\\x09\\x5b\\x1c\\x8f\\x90\\xee\\xf5\\xf1\\x92\\x9d\\xb1\\x99\\x6c\\xd5\\x84\\xf6\\x15\\xd5\\x6f\\xae\\x3a\\xec\\xac\\x3e\\xe8\\x8b\\xd0\\xb2\\x96\\xf4\\x49\\xcc\\x27\\x13\\xc5\\x2d\\xa6\\x95\\x24\\x8f\\xaa\\x8e\\x38\\x9b\\x05\\xa0\\xbc\\xac\\x69\\xdc\\xe9\\x71\\x97\\x23\\x19\\x4f\\x43\\x3b\\x02\\x97\\xeb\\x08\\x59\\x01\\x9f\\x14\\x1a\\x20\\x7c\\xe8\\xcc\\xb5\\x98\\x82\\xca\\xa6\\xe1\\x8f\\x0b\\x43\\xbd\\xdd\\xb9\\x0a\\x0a\\x85\\xff\\xd5\\x77\\xd6\\x39\\x4a\\x1d\\x80\\x48\\x94\\x10\\xf9\\x2a\\xfb\\x85\\xba\\x50\\x6a\\xa9\\xf3\\xf4\\x27\\x44\\x5d\\x21\\x22\\x4b\\x9c\\xb0\\x46\\xc0\\x5f\\x1b\\xac\\xd7\\xb7\\x49\\xfb\\x7b\\x10\\x24\\xd0\\x92\\xe4\\xee\\x4b\\x30\\xa4\\x6e\\xdf\\x71\\x84\\x70\\xc9\\x94\\x91\\xc6\\x8f\\x48\\x79\\xd6\\x2b\\xfc\\xe7\\x04\\x6d\\x81\\x38\\xcb\\xb9\\xe7\\x21\\x29\\x99\\xa4\\x49\\x8b\\x45\\x5f\\xc9\\x0a\\xc2\\x83\\xe9\\x35\\xde\\x04\\xdf\\x6f\\xc9\\x99\\xe4\\x43\\x4b\\xe1\\x10\\x63\\xd6\\xe4\\xee\\x9e\\x09\\x6a\\x87\\xbc\\x71\\x6d\\x2c\\x81\\x99\\x16\\xc3\\x7a\\x4e\\x62\\x98\\xc4\\x99\\x45\\x36\\x6e\\xc3\\xf5\\x00\\x72\\x0b\\x06\\xdc\\x99\\xd3\\xd8\\xac\\x30\\x3e\\x6c\\x26\\x4e\\x28\\xa7\\xc2\\xd4\\x19\\xec\\x62\\x2a\\x97\\xa7\\x11\\x54\\x4f\\xb1\\xf4\\x73\\x5b\\x11\\xf8\\xbb\\x1d\\x7e\\x2c\\x81\\x6a\\x15\\x62\\x87\\xb4\\xcc\\x0c\\x65\\xaa\\xa2\\x80\\xb8\\x37\\x73\\x7f\\x0a\\x84\\xe3\\x6d\\xe2\\xdf\\x2f\\xc3\\xa5\\x0d\\xf9\\x80\\x91\\x8f\\xb9\\xe5\\x83\\x4b\\x42\\xac\\x0e\\x0c\\x72\\x78\\xd7\\xfe\\x8d\\xb4\\xdb\\xde\\xca\\x01\\x41\\xd5\\xfe\\xf5\\xdc\\x61\\x51\\xf8\\x7b\\x86\\x34\\xc2\\x41\\xa8\\xfa\\x0a\\x82\\x71\\x78\\x99\\x77\\x3a\\xe8\\x9f\\x53\\x78\\x90\\xb9\\x15\\x5a\\x7a\\x05\\xbc\\xe4\\x78\\x66\\xec\\x20\\x28\\xa4\\x78\\x98\\xd4\\x85\\x82\\x3a\\x2e\\x99\\x23\\x19\\x68\\x0e\\xb6\\x99\\xb0\\xdd\\x53\\x58\\xf5\\x46\\xfc\\x53\\x7c\\x73\\xd3\\xa4\\xb2\\x23\\xa0\\x94\\x15\\x18\\xb6\\xd1\\xe6\\x6b\\x27\\x67\\x6c\\x1b\\x1f\\xc7\\x6a\\x08\\x32\\x05\\x24\\xa7\\x2e\\x29\\x7f\\xce\\x17\\xaa\\x80\\xd8\\xea\\x7b\\x38\\x8a\\x55\\x16\\x8e\\x7d\\xad\\xb8\\x36\\xe9\\xde\\xe7\\x07\\xed\\x25\\xc0\\xee\\x4d\\xb2\\x5b\\xee\\x3c\\x48\\x5b\\x39\\x64\\x92\\x04\\xef\\xaf\\x28\\x20\\xb2\\x73\\x63\\x68\\xfc\\x77\\x3c\\xe0\\x90\\xc3\\x85\\x37\\x80\\x02\\xc4\\x71\\xb0\\x94\\x79\\x5c\\xb2\\x66\\xd3\\x9e\\xb7\\x58\\x0d\\x70\\x1b\\xe4\\xc8\\x91\\x6f\\x6b\\x38\\xbf\\xe2\\x5f\\xdf\\x36\\xd6\\xc4\\xad\\xaf\\xa9\\xae\\x98\\x64\\xc5\\x7b\\xb7\\x37\\xb4\\x95\\x06\\xed\\x38\\xd6\\x2d\\xe6\\x0c\\xc0\\x59\\x9e\\xc6\\xbb\\x1a\\xcf\\x24\\xb1\\xd3\\x7d\\x60\\xef\\xde\\xb7\\xd9\\x42\\xc5\\x36\\x03\\xa2\\xf0\\x47\\x6e\\x95\\x12\\xc9\\x38\\xb2\\x8d\\x49\\x5a\\x6f\\x26\\xa9\\x07\\xc3\\x96\\xb8\\x41\\xae\\xdd\\x8e\\x14\\xac\\x44\\x7b\\x49\\x5d\\xf1\\xf6\\x76\\xda\\xcc\\xd5\\xa7\\x40\\xc0\\x42\\xf5\\x77\\x2b\\x7d\\xb1\\x7f\\x4f\\x1a\\x3a\\x1c\\x8e\\x7c\\x48\\x83\\x70\\xe7\\x36\\xb5\\x1e\\x69\\x0f\\xd2\\xdd\\xcb\\x5a\\xa6\\x19\\x57\\xa7\\xc7\\x97\\x5a\\xcb\\x2d\\xcb\\x91\\x5d\\x07\\x4d\\x74\\x42\\x79\\xea\\x1c\\x41\\x69\\xf8\\x68\\x87\\x3a\\xc5\\xc2\\x08\\x90\\x16\\x2c\\x1d\\xf9\\x65\\x64\\x19\\x97\\x5a\\x43\\xd3\\x19\\x8e\\x18\\xc3\\x09\\xa1\\xeb\\x7c\\x1d\\x87\\x87\\x3f\\xb1\\x5c\\x6d\\xa4\\x7f\\x54\\x8a\\x01\\xf6\\x9b\\xda\\xb9\\xc3\\x9e\\xf0\\x0d\\x41\\x8a\\x6f\\x61\\x9d\\xd7\\x3d\\x7d\\xb4\\x5c\\xbb\\x6a\\xd2\\x25\\xa2\\xde\\x78\\x7b\\xa7\\x77\\xbc\\x73\\xd2\\x8f\\xc3\\x04\\xf1\\x00\\x09\\xf4\\x02\\x2c\\x2c\\xf8\\x4d\\xe0\\x08\\xd7\\x0f\\xcd\\xc8\\xba\\x7f\\x10\\x7c\\x36\\x98\\x59\\xe9\\xc9\\x0c\\xa8\\xa3\\x93\\xb5\\x53\\xf2\\x66\\x05\\xff\\xd7\\x23\\x0c\\x92\\x14\\x90\\x70\\x0f\"},\n{{0xd2,0x1f,0xdd,0x7b,0x10,0xe5,0x4a,0x8b,0x6b,0xe9,0x5a,0x02,0x24,0xad,0x70,0x66,0x4d,0xd9,0x21,0x12,0xe2,0x68,0x3a,0x4f,0xd2,0x79,0xc4,0x07,0xdb,0x38,0x71,0xbb,},{0xf8,0x9c,0x27,0x2e,0x7d,0x1c,0xc9,0x3d,0x69,0xf6,0x94,0xde,0xc9,0xcc,0xe0,0x5a,0xc2,0x47,0x73,0x45,0x04,0x82,0x9c,0x56,0x99,0x74,0x13,0xc8,0x95,0x8b,0x93,0x30,},{0x6d,0x69,0xe8,0x3b,0x3e,0x7e,0xd5,0x5a,0x85,0xf9,0xfc,0x9d,0x25,0x19,0xda,0x0b,0x0a,0x1e,0xb4,0xda,0xae,0xe9,0x91,0xa6,0x65,0x1f,0x5c,0x89,0x19,0x0c,0x0d,0xe7,0x23,0x73,0xcd,0x98,0x9d,0x46,0xbe,0x13,0x67,0xf9,0xda,0xf1,0xb9,0x2f,0xed,0x3b,0x52,0xbb,0xa5,0x4a,0x1e,0x4c,0xca,0x5b,0xc8,0x72,0x6e,0xd0,0x7f,0x30,0x25,0x01,},\"\\xb8\\x64\\x4a\\xdb\\xef\\x9c\\x7c\\xab\\x91\\x20\\xac\\xed\\xc8\\xe7\\x5c\\x43\\x3d\\x03\\x6f\\xfa\\xe0\\xf9\\x55\\xbe\\x6a\\x48\\x8f\\x1f\\x42\\x7a\\x68\\xa8\\x90\\x2d\\x02\\x6e\\x63\\xdd\\x6c\\x9b\\xf9\\xd9\\x7d\\xe7\\x86\\xb3\\x1d\\xd4\\xf4\\xc9\\xa4\\xf8\\xa6\\x22\\xf1\\xff\\xc8\\x4d\\xa6\\x96\\x7c\\xa7\\x74\\x33\\xc3\\x98\\xf4\\xd3\\xf1\\xc4\\x43\\x49\\x89\\xb7\\xac\\x9d\\x0f\\x3b\\x1b\\xe0\\xc8\\xb3\\x52\\x82\\x4f\\x4e\\x7a\\x08\\x3f\\x34\\x2e\\xc1\\xbe\\x1d\\xa8\\xfb\\x75\\x52\\x42\\xa6\\x54\\x88\\x0e\\xf2\\x98\\xf0\\x59\\x79\\xff\\x02\\x6d\\xdc\\xc0\\x44\\x86\\x0e\\x67\\x57\\xa2\\x9c\\xfa\\xa2\\x22\\xa3\\x59\\x7e\\x38\\xf1\\x77\\x99\\x62\\xa4\\x1a\\x4c\\x8c\\xe6\\xa6\\x5b\\x87\\x81\\x99\\xb4\\xd8\\x0f\\x4a\\x03\\x90\\xca\\xc1\\x9c\\x22\\x6e\\xea\\x4b\\x60\\x36\\xe5\\x7a\\xd8\\x30\\xec\\xfc\\x00\\x69\\x3e\\x26\\x13\\xd3\\xed\\xf4\\x65\\xfc\\x8c\\x4f\\xa2\\x93\\xfd\\x8c\\xfc\\x36\\xdc\\x8e\\x37\\xbc\\xeb\\xab\\xec\\x03\\x49\\xeb\\xd8\\x84\\xe1\\xb2\\x8b\\xce\\x82\\x4e\\x0d\\x55\\xb6\\xd0\\x15\\x38\\x38\\x01\\x66\\x8b\\x34\\xf5\\xba\\x72\\x3d\\x2a\\xc0\\xa2\\x64\\xfa\\xb2\\xc7\\x28\\x60\\x8f\\x16\\x2d\\xe0\\x11\\x79\\x25\\x9b\\xe2\\xcc\\xb0\\x81\\x50\\x02\\xfd\\xed\\x8e\\x0d\\x78\\xb0\\x28\\x07\\x31\\x3e\\x91\\x0e\\xb3\\xa7\\x33\\x7c\\x53\\x4e\\x84\\x6f\\x9e\\xe1\\x55\\x42\\x6e\\x4a\\xef\\x64\\x36\\x61\\xb0\\xed\\xb4\\x45\\x96\\xfd\\xdc\\xd0\\xb3\\xe8\\x14\\xc1\\x37\\x81\\x7a\\x42\\x2b\\xaa\\x40\\xc9\\x05\\x3d\\x03\\x86\\xc6\\xec\\xdb\\x58\\x90\\x52\\x59\\x47\\x42\\x67\\x7c\\x48\\xdc\\xfc\\x8c\\xd4\\xa9\\x36\\x67\\xed\\x4d\\x87\\x64\\x60\\x01\\xed\\xa0\\x79\\xe8\\xb9\\x9d\\x52\\xba\\x21\\xc5\\xec\\x56\\x69\\xfe\\xdf\\x6f\\x40\\x44\\x7a\\x7f\\xf8\\x90\\x1d\\xb0\\xef\\x18\\x47\\xd3\\xca\\xcf\\x01\\x98\\xa2\\xf3\\xbd\\x7b\\xcf\\x2d\\xd8\\x11\\xa0\\x97\\xfc\\x5e\\x51\\x88\\xb0\\x3f\\xdf\\x54\\xe5\\x17\\x63\\x7a\\x14\\x50\\x10\\x00\\xd0\\xd3\\x55\\x16\\xca\\xf0\\x69\\x94\\x02\\xb4\\x8f\\x8d\\x8c\\xc3\\xaf\\xb1\\x7a\\x56\\x13\\x2d\\x08\\x23\\x70\\x35\\xa0\\xc9\\x54\\x90\\xbf\\xe5\\xd7\\xb7\\xfb\\x40\\x17\\x8f\\x28\\x1e\\x4d\\x87\\x2e\\x47\\xa0\\xe9\\x55\\xce\\x97\\x36\\xf3\\xc3\\x33\\xa6\\xad\\xf5\\x0a\\xd3\\x19\\x94\\xeb\\x9f\\x45\\x32\\x7f\\xac\\xc8\\xc5\\xd1\\x13\\xfa\\xd4\\x71\\x3f\\xe7\\xf1\\x98\\x01\\x0d\\x42\\x04\\x6b\\xbf\\xe6\\x8b\\x0d\\xaa\\x79\\xdc\\xb8\\x75\\x59\\x29\\xbe\\x92\\xf9\\xca\\xa1\\x50\\xdf\\xbd\\xe3\\xfc\\x9e\\x39\\x2b\\x2b\\x70\\x1c\\x30\\x21\\xc2\\x40\\xe4\\x67\\x9d\\xe4\\x11\\x24\\xb1\\x88\\x8e\\x5d\\xb5\\xa8\\x3d\\x05\\xce\\xaf\\x49\\xeb\\x44\\x0d\\xc4\\x50\\x26\\xd4\\x50\\xbc\\x98\\x4b\\x8d\\x6f\\x02\\x85\\x0e\\xcb\\x57\\x0e\\xee\\x0a\\x38\\x19\\xb1\\x2b\\xc2\\x63\\x67\\xb5\\xb9\\x8e\\x1b\\x14\\x1c\\x9b\\x0a\\x96\\x90\\xea\\x4a\\x37\\x00\\xda\\xd1\\x23\\x95\\xf9\\x75\\xd1\\x1c\\xd7\\x7f\\x96\\x36\\x88\\x31\\xf2\\x1f\\x4e\\x96\\x8c\\xc5\\xba\\x9e\\xf8\\x24\\x74\\x03\\x8b\\xc7\\xaa\\x26\\x12\\x2d\\x21\\x8b\\x74\\x30\\x41\\x50\\x6a\\xeb\\xbd\\x1f\\x98\\x79\\x59\\xfd\\x16\\x0d\\x6e\\xb7\\xd5\\x8d\\x4f\\x57\\x6f\\x8c\\x0c\\xa8\\xaf\\x86\\x8e\\x39\\xb5\\xea\\x87\\x20\\x39\\x37\\xe0\\x30\\x8a\\xcb\\xea\\xe9\\x1e\\x10\\x60\\x7e\\x44\\xe8\\xab\\x49\\x5b\\xc0\\x1d\\xd5\\x73\\xfb\\xad\\xc9\\x44\\x79\\xff\\x92\\x08\\x2c\\x7b\\xb7\\x51\\x34\\x79\\xc7\\x0f\\x04\\x07\\x76\\x90\\x25\\xd3\\x4d\\x72\\x14\\x0c\\x25\\xd8\\x21\\xf0\\x34\\xa3\\x98\\x51\\xa9\\x3c\\x62\\x3b\\x71\\xc9\\x40\\x0e\\x94\\x26\\x39\\xf2\\x8b\\xbd\\x03\\x2e\\x1d\\x8d\\x3c\\x05\\x9f\\x7c\\x2c\\xd3\\x1d\\x74\\x76\\x46\\x2d\\x27\\x76\\x03\\x5d\\x07\\x88\\x02\\x02\\xdb\\xfe\\x9e\\x07\\xd1\\x54\\x62\\x2d\\x7a\\xc6\\x17\\x5a\\x5a\\xfa\\x79\\xfe\\xd4\\xdc\\xc1\\x37\\x12\\x62\\x0c\\x41\\x99\\x4e\\x11\\xd9\\x24\\x30\\x8f\\xb2\\xff\\x3a\\x1e\\xda\\x44\\xc7\\x61\\xbc\\x73\\x6f\\x34\\x51\\x22\\xf0\\x2a\\x40\\xae\\x6f\\x7d\\xbd\\x03\\xd9\\xfe\\x96\\xee\\x3d\\x7a\\x3b\\x4a\\x5e\\xef\\xbf\\xcc\\x56\\xdc\\x42\\xef\\x27\\xbd\\x80\\x85\\x17\\x60\\x38\\xb9\\xeb\\xae\\x63\\xaa\\x75\\x03\\x52\\x75\\xec\\x34\\xe4\\x18\\x57\\x39\\xd6\\x36\\x24\\x67\\x70\\xac\\xcc\\xc6\\xdc\\x62\\x0e\\x2f\\xc9\\x15\\x6f\\xa9\\x48\\x3e\\x0d\\x9c\\xae\\x0e\\x8c\\x46\\x39\\x48\\xa3\\xd9\\x7a\\xe8\\xdd\\xa5\\x96\\x6c\\x88\\xf0\\x70\\x93\\x29\\x2c\\xce\\x22\\xbb\\xda\\x06\\x2b\\xaa\\xfa\\x7f\\xe8\\x4d\\x0b\\xa2\\xd2\\xdd\\x29\\x5b\\x23\\x45\\x8b\\xca\\xeb\\x2e\\xf7\\x42\\xa2\\xed\\x1c\\x83\\x44\\x83\\xcd\\x70\\x93\\x85\\xaf\\xea\\xdc\\xbc\\x0a\\x9c\\x6a\\x4f\\x38\\x7b\\xab\\xf7\\xe3\\xdc\\x36\\xc8\\x10\\xdb\\x20\\x9b\\xeb\\x66\\xc8\\x66\\x64\\x04\\xc6\\x61\\xdf\\xe9\\xd3\\x2c\\x4c\\x08\\xaf\\xc6\\xf3\\xb1\\x25\\x7d\\x64\\x84\\xa7\\x55\\xf5\\xac\\x70\\x1e\\xb1\\x3f\\x87\\x76\\x3f\\xee\\x33\\x0f\\xfa\\x04\\x22\\xcd\\x80\\xa9\\x20\\x38\\xc6\\xf4\\x52\\x92\\xbd\\xee\\x5f\\x89\\xe9\\x4c\\x7a\\x65\\x21\\x97\\xfc\\x19\\x06\\xb4\\x82\\x58\\x37\\x24\\x49\\xb1\\x08\\x1c\\x6b\\x97\\x13\\x4c\\x43\\xc8\\x9e\\xe2\"},\n{{0xd3,0x36,0xfd,0x84,0x08,0x19,0x6d,0x22,0xfb,0x69,0x8e,0xb2,0x5b,0x76,0x54,0xfd,0xa4,0x6f,0x5d,0xe4,0xc9,0xb4,0xd0,0x49,0x50,0xc3,0x98,0xb5,0x9a,0x44,0x29,0x0a,},{0xf3,0xcd,0x96,0x34,0x7c,0xea,0x63,0xe5,0x00,0xa4,0xc9,0x2c,0x3b,0xf2,0x15,0x66,0x2d,0xd0,0x40,0x07,0x84,0xdb,0xf8,0xb5,0x95,0xdd,0x3d,0x39,0x5f,0x90,0xcc,0x12,},{0xaf,0x7e,0x2d,0xf7,0x52,0x9f,0xd1,0x8d,0x1b,0x21,0xb8,0xfd,0x4c,0x06,0x81,0x50,0x59,0x18,0xe2,0x51,0x14,0x34,0xfe,0x4e,0x49,0x54,0xe7,0x43,0xc1,0xcf,0xa4,0x5e,0x41,0x09,0xd3,0x6c,0x3e,0xec,0xf2,0xe2,0x5d,0x20,0x9b,0x9b,0x5d,0x25,0xf7,0xcb,0xc3,0x80,0x29,0x6d,0x64,0x77,0x52,0xe3,0x0d,0x3b,0xea,0x3b,0x92,0x9b,0x09,0x03,},\"\\xfb\\x49\\xc1\\x9b\\xc4\\x44\\x4c\\x28\\xeb\\x26\\x25\\xf3\\x1d\\x99\\x6d\\x5e\\x36\\xc5\\x7f\\xa6\\xfd\\xd7\\x72\\xe6\\x7b\\x71\\x99\\xce\\xc6\\x7e\\xda\\x54\\x51\\x71\\x2d\\xf7\\xa6\\x9d\\xbb\\xd5\\x6e\\x7c\\x39\\x87\\x96\\xb2\\x00\\x1d\\xef\\x65\\x1c\\x4b\\x9c\\x05\\xee\\x31\\xd9\\x56\\x79\\x53\\x5c\\x81\\x2a\\x37\\xd3\\x1d\\xdb\\x30\\x73\\x19\\x9c\\xd7\\x04\\xff\\x7c\\xa2\\x98\\x1f\\x7b\\x9c\\x92\\x7a\\x7f\\x7d\\x77\\x6f\\xb6\\xf6\\x09\\xf7\\x27\\xe6\\xea\\x70\\x9c\\xe7\\xf4\\x3a\\x60\\x79\\x35\\x04\\x16\\x9a\\x89\\x05\\xd9\\xb2\\x31\\x09\\xf0\\xd8\\x67\\x96\\x6a\\xa3\\xe3\\x00\\xc7\\xe1\\x1d\\xde\\xdb\\x9c\\xc1\\x17\\xb9\\x04\\xf6\\x29\\x27\\xe4\\x8e\\x4d\\x73\\xfe\\x1a\\x6c\\xec\\xcc\\x4c\\xeb\\x08\\xe6\\x4a\\xb5\\x5f\\x25\\xc9\\x82\\x16\\xce\\xc9\\x37\\x60\\x8a\\xd7\\x93\\x14\\x69\\x98\\xf1\\x4c\\x29\\x85\\xe6\\xc2\\x91\\x0d\\xf7\\xb1\\x38\\x8f\\x9d\\xd8\\x63\\xf1\\xe4\\xd7\\xd1\\x62\\x14\\x79\\xb8\\x51\\x2c\\xdb\\x34\\xe6\\x73\\xeb\\x02\\xa4\\x89\\x34\\xe3\\x9c\\x2d\\x18\\xd7\\x0f\\x96\\x6d\\x67\\x6a\\x2b\\xd7\\x5d\\xb5\\x43\\xd2\\x5c\\x5d\\xcd\\xc3\\xef\\x3b\\x8b\\xc8\\x20\\x18\\x48\\xc3\\x09\\x61\\xe9\\x15\\xd9\\x68\\xbd\\xc3\\x19\\x46\\xb0\\xd1\\x8e\\xde\\x7c\\xb0\\x16\\x6d\\xbe\\x1f\\xfe\\xff\\x94\\x39\\xc9\\xc3\\x40\\x4a\\xf6\\x01\\x6c\\x73\\xed\\xeb\\x25\\x3d\\x93\\xf5\\x62\\xa1\\xa6\\xcd\\xd5\\x78\\x98\\xa9\\xb3\\x42\\x25\\x87\\xd5\\xf5\\x6a\\xf3\\xd0\\x6b\\x3f\\x6c\\x25\\x75\\x1f\\x44\\x46\\x0f\\xb3\\x29\\x96\\x56\\xdc\\x11\\x22\\x7e\\xf4\\x83\\x7a\\xab\\xdd\\xee\\x40\\x0f\\xa5\\x3f\\x69\\xe5\\xce\\xd0\\x53\\xc7\\x6d\\xce\\xcd\\xf0\\xad\\xc9\\xef\\x80\\xf4\\xb3\\x30\\x54\\x2f\\xf1\\xfa\\x2d\\xf0\\xb8\\xd4\\x3c\\xd1\\xc3\\x11\\xb1\\xb9\\x95\\x5c\\x63\\x2c\\x8e\\x5f\\x04\\x91\\x93\\x1c\\x04\\xde\\x43\\x4d\\xf8\\xf7\\xa3\\x94\\xe5\\xfe\\xf0\\x16\\xdb\\x2e\\xb7\\xc8\\x7b\\x2a\\xc7\\xa4\\xa7\\x30\\x43\\xbd\\x7f\\x98\\xad\\x0a\\x4d\\x45\\x3a\\xbf\\xb0\\xbe\\x8b\\xe4\\xcb\\x14\\x57\\x42\\xaa\\x56\\xaa\\x5e\\xf2\\xdf\\xf1\\x22\\x30\\xa5\\x10\\xe3\\xb7\\xf8\\x2f\\x78\\x47\\x70\\x0e\\xee\\xa5\\x90\\x5b\\x02\\x89\\x69\\x6c\\x4c\\x14\\x2b\\xf3\\x4b\\xcf\\x81\\xa9\\x62\\xd7\\x5b\\x8d\\x09\\x10\\x55\\x73\\x37\\x79\\x33\\x5b\\x7f\\xd4\\x7a\\x20\\xd1\\x7c\\x94\\x8a\\xb7\\x32\\x94\\x78\\x32\\x67\\x43\\x71\\xe2\\x2e\\x71\\x11\\x34\\xf5\\xc9\\x19\\x79\\x23\\x57\\xf7\\x9b\\xf7\\x0c\\x44\\x70\\x78\\x75\\x28\\x43\\x4f\\xc0\\xb4\\xca\\x09\\x3e\\xe9\\x25\\x43\\x42\\x0d\\x1c\\xa8\\x11\\x24\\xf5\\x58\\x53\\x17\\xe2\\x50\\x82\\x1a\\x4f\\x3d\\x8c\\xe0\\xf9\\x19\\xde\\x9f\\xbf\\x01\\x27\\x08\\x7e\\x67\\x69\\x03\\xf6\\xcb\\x39\\x02\\x5b\\xcc\\x73\\xa0\\x76\\x29\\x54\\xb7\\x2e\\x66\\xa6\\xbe\\x9b\\x96\\xc9\\x7b\\x6f\\x60\\x30\\xbf\\x5c\\xa0\\xbc\\x27\\x27\\xa9\\xa1\\x79\\xcf\\x9d\\x94\\x05\\xf3\\xfe\\x18\\xf3\\x49\\x23\\x89\\x07\\x9a\\x5b\\x65\\xbc\\xb1\\x3a\\x0d\\x5e\\xf4\\x1c\\x2c\\xd9\\x7e\\x70\\x2c\\xee\\x4a\\x2f\\xeb\\x1e\\x67\\x02\\xbd\\x4c\\x63\\xfe\\x0a\\x4a\\xe9\\x94\\xc4\\x28\\x7a\\x83\\x7b\\xc3\\xf6\\x4c\\x2d\\x89\\x88\\x57\\xcd\\xb3\\x2a\\xcd\\x4b\\xd1\\x33\\x67\\x6e\\x51\\xf7\\x7b\\xc7\\x11\\x0e\\x3c\\xe5\\x2d\\x92\\x04\\xfd\\x26\\x91\\xa6\\xd3\\x70\\x78\\xf6\\x8e\\x7b\\xce\\xf3\\x0f\\xc9\\xc4\\x83\\x98\\x58\\x22\\xb6\\x61\\x11\\x92\\x38\\xe4\\x0f\\x9c\\xfd\\xca\\xbe\\xf2\\xd7\\xb1\\x6b\\x05\\x9a\\xb2\\x4a\\xdc\\x05\\x00\\x37\\x12\\xbb\\xb1\\x28\\x09\\x6e\\x37\\xf9\\x1b\\xc4\\xc5\\xc8\\x15\\x08\\xbe\\x27\\xfa\\x0b\\x84\\x94\\x0b\\xe3\\x6b\\xce\\xd2\\xe6\\x5c\\xd3\\x6b\\x39\\xfb\\xdc\\x5e\\xa6\\x86\\x14\\x15\\x92\\x28\\xca\\x65\\xc5\\xd8\\x40\\x7b\\xaf\\x66\\x3b\\x52\\x8e\\x7d\\x87\\x73\\x4c\\x7b\\xc7\\x7d\\xc8\\x43\\x1a\\x1d\\xd6\\x87\\x3c\\xfd\\xdf\\xc3\\xe7\\x57\\xd9\\xad\\x1f\\xed\\xd3\\xc7\\x98\\xf1\\xfe\\x60\\xe7\\x15\\xee\\x48\\xa6\\xbc\\xbb\\x13\\xb6\\x16\\xa8\\x9a\\x38\\xe3\\x36\\x48\\x9d\\x3d\\x6c\\xcb\\x72\\x69\\x14\\x11\\x2a\\x1b\\xc5\\xd9\\x77\\xc9\\xb2\\xa3\\xfa\\xc1\\x07\\xad\\x09\\x4b\\x03\\x8a\\xb7\\x54\\x68\\x26\\x3c\\x34\\xbd\\xa8\\x17\\xc0\\x56\\xe0\\x7a\\x6c\\x56\\x69\\x7c\\xb6\\x4a\\x0b\\x1f\\x96\\x6f\\x6d\\xe0\\xbb\\x1c\\x0a\\x71\\xc8\\xa5\\xfe\\x13\\x3b\\xa2\\x03\\x6d\\x24\\xda\\xcc\\xad\\x3f\\xa0\\x3b\\x39\\xcd\\x27\\xf8\\x32\\x75\\x27\\x51\\x05\\x5a\\x81\\x55\\x91\\x3d\\x04\\x0f\\x51\\xda\\xe7\\x8d\\x71\\x94\\x6c\\xa0\\x4d\\x83\\xc7\\xc8\\x94\\xc2\\x80\\xaa\\xec\\x28\\x55\\x43\\xe5\\xfd\\x5e\\x32\\x7a\\xcc\\xca\\x9a\\xbe\\xf1\\x56\\xa1\\x3b\\x95\\x71\\x44\\x6b\\xd8\\x00\\x7f\\xf9\\x2d\\xbc\\x0f\\xba\\xf2\\x3a\\x94\\x41\\xb5\\x3c\\x1c\\xd7\\x40\\xc3\\x4c\\x28\\x29\\x29\\x10\\x1a\\xd2\\xea\\x8b\\x85\\xd7\\x00\\x52\\x99\\x1b\\x77\\x4e\\x92\\xff\\x75\\xcc\\x85\\x11\\x3e\\x09\\x00\\xb5\\x1b\\x86\\x3e\\x1f\\x2a\\xda\\xab\\x2d\\xbc\\xf4\\x6a\\xf4\\x79\\xea\\x24\\x8e\\xc2\\x88\\x9a\\xfb\\xfe\\x73\\x74\\x08\\x39\\x3a\\x2b\\x1b\\x33\\x01\\xf6\\x5c\\x1f\\xac\\x8b\\x67\\x67\\x95\\xab\\x5b\\xf4\\x47\\xf0\\x5e\\x0d\\xaf\\x67\\x76\"},\n{{0x65,0x73,0x22,0x78,0x41,0xf6,0xf9,0x28,0x31,0x14,0x6c,0x44,0xc0,0xe4,0x80,0xcd,0xf5,0x44,0xbb,0x87,0x65,0x52,0xcc,0x5f,0x9d,0x42,0xf1,0x5b,0xdc,0xc0,0x44,0xb8,},{0x19,0x22,0x57,0xa5,0x4c,0xe5,0xd0,0x4c,0x19,0x43,0x9f,0xdc,0x9e,0xde,0x18,0xec,0x85,0x6e,0x29,0x87,0x0e,0x24,0xd3,0x73,0x1f,0xe2,0x22,0x47,0x99,0x94,0x9b,0x7e,},{0x53,0x8e,0xac,0xe4,0x93,0xde,0x53,0x38,0x4b,0x1e,0x98,0x5b,0xb9,0x07,0xc0,0x94,0xf8,0x16,0x84,0x30,0xda,0xb1,0x4d,0x37,0x79,0x1b,0xe6,0xe7,0x8f,0xf3,0xf5,0xa3,0x06,0xec,0x70,0xdc,0xac,0x86,0xd9,0x93,0xa4,0xc1,0xf7,0x58,0x50,0x78,0x6d,0x79,0x5f,0x02,0x2b,0x79,0xbe,0x6a,0x54,0x77,0x69,0xe4,0x15,0x69,0xc5,0xa9,0xa3,0x0a,},\"\\x6e\\x7c\\x6b\\x12\\x2a\\xb3\\x6b\\xd1\\x35\\xf6\\x9e\\x2b\\x85\\xe7\\xfc\\xce\\xfb\\x07\\x2c\\x12\\xcf\\x08\\x8a\\x32\\x29\\xd8\\x76\\xef\\xf5\\x32\\x38\\x9f\\x05\\x77\\x11\\x6f\\x7a\\xf2\\x9f\\x11\\x95\\xe3\\x82\\x88\\x39\\x38\\x13\\x80\\x46\\x71\\x78\\xb2\\x29\\xc5\\xa1\\x8d\\x7c\\x49\\x43\\xec\\x97\\x0d\\xd1\\x8b\\xce\\x72\\x3b\\xd0\\xca\\x91\\xff\\xa9\\x55\\x63\\x54\\x6a\\x32\\x4f\\xe0\\xb9\\xbf\\x6c\\x04\\x55\\xd4\\x27\\x60\\x39\\xe8\\xd2\\x91\\xfc\\x72\\x76\\xaa\\x55\\xa1\\xcd\\x3e\\xa0\\x52\\x82\\x65\\x4a\\x7f\\x97\\x00\\xad\\xcb\\xc7\\x80\\x77\\xc5\\xdd\\x0f\\xc8\\x6e\\xce\\xd4\\x8f\\x4a\\x60\\xcc\\xb7\\x6b\\xfb\\x8b\\x45\\x62\\xba\\xc2\\x2a\\x02\\xd1\\x9e\\x44\\x89\\x39\\x4a\\xb9\\x71\\x9f\\xc1\\x44\\xf5\\xdb\\x2e\\xf0\\x39\\xb3\\x7f\\x3b\\x51\\xd1\\xd6\\x57\\xa0\\xcf\\x83\\x5d\\x71\\xf1\\xa4\\xaf\\x01\\xeb\\x9f\\xd8\\x85\\xc6\\x04\\xa6\\x24\\xcb\\xe9\\x10\\xbf\\xde\\x09\\x3a\\xd3\\xf0\\xcb\\xfd\\x9a\\x48\\x30\\x73\\x29\\xd4\\x42\\x34\\xbd\\x01\\x19\\x1d\\x56\\xe5\\x22\\xd7\\x2b\\x54\\xe1\\xfe\\x47\\x33\\xda\\x3a\\xec\\x68\\x27\\xea\\xb3\\x55\\x48\\x98\\xe0\\x3e\\x57\\x7b\\x4e\\x7b\\x9d\\xd3\\xf3\\x08\\xe6\\x16\\x80\\x8d\\x02\\x94\\x49\\x9f\\x28\\x86\\x29\\x5e\\x54\\xc3\\x60\\x19\\x9c\\xa8\\x3a\\x83\\xff\\x46\\x19\\x5e\\xa3\\xc4\\x84\\xa6\\x68\\x38\\xd5\\x1a\\xcb\\xe9\\x61\\x1e\\xee\\x03\\x6a\\xe2\\x81\\xc6\\x79\\x3c\\xbd\\x45\\x1f\\x92\\x71\\xfb\\x5d\\x25\\xea\\x7c\\x18\\x99\\xab\\x5d\\x43\\xed\\x8b\\x9d\\x06\\x7b\\xc5\\x6d\\x8d\\x4a\\x15\\xf1\\xda\\xb8\\xd8\\xd9\\x5d\\x1b\\x17\\xaf\\x64\\xcb\\x18\\xc1\\x14\\x75\\x51\\x14\\x7a\\xdd\\xcb\\xdd\\x53\\xfb\\xcc\\xd9\\x02\\x6f\\x85\\x55\\x47\\x13\\x1b\\xee\\x95\\x07\\x16\\x39\\xf6\\x49\\xf2\\xd0\\x35\\xa2\\x5a\\x3e\\x42\\xe3\\x8e\\x22\\xbb\\xf0\\x38\\x10\\x6c\\xe8\\xbc\\x4a\\xd6\\x76\\x8a\\xb9\\x2c\\xd5\\x7a\\xfa\\xcd\\x04\\xee\\x55\\xcf\\x07\\x14\\xb7\\x68\\x95\\x2d\\xac\\x24\\x0b\\x1e\\x9b\\x28\\x35\\xec\\xf7\\xb0\\xd6\\xc4\\x07\\xc8\\x25\\x24\\xa9\\x23\\xb9\\xf5\\x4d\\x1b\\x8f\\x12\\x56\\x4a\\x87\\x21\\x44\\xef\\xad\\x3f\\x3a\\x7d\\x23\\x97\\xcd\\x12\\x17\\xdc\\x5a\\x9c\\x96\\xe4\\x3b\\x29\\x60\\xa8\\x42\\x5e\\x97\\xe0\\x7a\\x02\\xb0\\xda\\xc9\\x0f\\x34\\x6b\\x91\\xa3\\x46\\xa2\\x3e\\xd2\\xbb\\x7f\\xe6\\x91\\x9c\\x22\\xdf\\xf0\\x3f\\x62\\xda\\x7d\\xba\\x17\\x6e\\x8d\\xdb\\x22\\xf3\\xf3\\xa6\\x68\\x89\\x1d\\x3f\\x4e\\x69\\x54\\x8d\\x0a\\xc4\\xe7\\x1e\\x6d\\x28\\xed\\x5a\\x67\\xab\\x5a\\xc6\\x11\\xd4\\x60\\xb6\\x7a\\x20\\x1f\\x4f\\x56\\xa5\\x00\\x3c\\xa7\\xa7\\xd1\\xcd\\x1d\\xb6\\xc1\\x00\\x75\\xb0\\x92\\x27\\xcb\\x8c\\x5d\\xc1\\x66\\x6f\\x8b\\xe7\\x10\\xb4\\xb7\\xbc\\x2b\\x95\\xae\\x60\\xda\\x4f\\x64\\x17\\x9a\\x50\\xd2\\xf8\\x87\\x44\\x36\\x15\\x91\\x67\\x1d\\x36\\xb7\\x29\\x63\\x15\\xf6\\x99\\x64\\x39\\xad\\x79\\x82\\x1d\\xa8\\xe7\\x72\\xdf\\xbf\\x55\\xa9\\x0d\\x5d\\x52\\xef\\x7d\\x76\\xb3\\x5f\\xfe\\xbd\\x42\\xe3\\x52\\x5f\\x45\\x30\\xc5\\x4a\\x0f\\x23\\xb4\\xd0\\x7c\\x5f\\x59\\x74\\x47\\x0e\\x89\\x40\\x4d\\x17\\x6e\\xef\\xf9\\xef\\x23\\x33\\x61\\x96\\x91\\xc5\\x9b\\x7a\\xad\\xd4\\x2c\\x29\\x6b\\x1d\\x0d\\x32\\x8d\\x9a\\x3b\\xd5\\x9a\\x54\\xbb\\xa9\\x3a\\x0c\\x1f\\x1d\\x62\\x41\\x8c\\x21\\x90\\xc3\\x81\\x74\\xb6\\xab\\xea\\x02\\xdb\\x66\\xe8\\x18\\x32\\x0e\\xc4\\xb8\\xba\\xc1\\xc1\\x2f\\x18\\xf3\\x0d\\xad\\xe2\\x7e\\x63\\xc5\\x8f\\x9e\\x7c\\xaf\\x4b\\xf6\\x9b\\x26\\x5a\\x2f\\x9d\\x91\\x80\\x08\\x61\\xac\\xf4\\x79\\xe6\\x5e\\xc1\\x7e\\x68\\x05\\x77\\xe0\\x58\\xcb\\x16\\xc1\\x09\\xbc\\xf9\\xb2\\x90\\x9f\\xce\\x33\\x61\\xa2\\xc2\\x68\\x5c\\x10\\xbe\\x85\\x40\\xa1\\x22\\x2d\\xb5\\xec\\xf0\\xcc\\x4d\\x53\\xa4\\x21\\x4b\\x7b\\xf6\\x24\\x8a\\xdc\\x3a\\x86\\x1e\\x34\\x84\\x1a\\x37\\x79\\xc4\\x60\\x46\\xc5\\x36\\x4f\\x1e\\xa9\\x1a\\x78\\xc9\\x70\\x0d\\x46\\x2e\\xcf\\xaa\\xe3\\x6b\\xa7\\x60\\xc1\\xbd\\x6a\\x23\\x7c\\x96\\x1e\\xdf\\x40\\x22\\xce\\xde\\xfe\\x5e\\x93\\x7b\\xbe\\xd7\\x05\\x1a\\xe6\\x1b\\x96\\xd0\\x8b\\x04\\x87\\xce\\x05\\x68\\xff\\x0d\\x32\\x74\\x0b\\xbd\\x49\\xad\\x0d\\xb8\\x6e\\x09\\x10\\x2a\\xb2\\x1a\\x91\\x56\\x16\\xe9\\xdf\\xdd\\xc8\\x1e\\xbf\\xb3\\x6c\\x90\\x3e\\x07\\xa4\\x0c\\xd2\\xdd\\x11\\x9f\\xf4\\xa5\\x0b\\x93\\xfc\\x6f\\xdf\\xc0\\xf3\\x6e\\x59\\xe0\\x14\\x8f\\xcf\\xf3\\xfe\\x8e\\x2c\\xd6\\xd3\\x0a\\x9e\\x4b\\x8f\\x01\\x55\\x67\\xd1\\x18\\xb6\\x27\\x4e\\x1e\\xd7\\x5b\\x22\\xe4\\x4c\\xa9\\xd9\\xdb\\xfc\\x16\\x07\\x42\\xcf\\xac\\x58\\x1e\\x1a\\x0b\\xf5\\xff\\x33\\x26\\xbc\\x5f\\x78\\x96\\xb9\\xca\\x05\\xa8\\x11\\xd5\\x5e\\x97\\xc8\\x34\\xd3\\x7a\\x64\\x95\\xcc\\x26\\xcf\\x44\\x2b\\xd2\\xd9\\x01\\x29\\x89\\x5e\\x9c\\xc0\\xed\\x01\\xe2\\x15\\x52\\x93\\xf4\\x7a\\x07\\xab\\x58\\x80\\xc6\\xca\\x29\\xed\\x44\\xd9\\xcc\\xbc\\xaa\\xda\\x7f\\x3e\\xb6\\x04\\x02\\x18\\x14\\x88\\x65\\x4e\\x04\\x91\\x15\\x78\\xb1\\xaa\\x9c\\xdd\\x4b\\x86\\xb0\\xdd\\x24\\x50\\xdf\\x3a\\x43\\x08\\x1e\\x41\\x10\\xab\\x58\\xde\\x76\\x39\\x24\\xd3\\xc8\\x91\\x52\\xe9\\x92\\x93\\xe6\\x38\\xf9\\xac\\xd8\\xd7\"},\n{{0xa6,0x3c,0x1f,0x54,0xb2,0xca,0x05,0x8f,0xed,0x2e,0xe2,0x50,0x4b,0x98,0x3f,0xf3,0x3d,0x57,0x0a,0x9b,0xab,0xa5,0x83,0xc0,0x86,0xce,0xfe,0x19,0xf4,0x3e,0xc4,0x9d,},{0x32,0x9b,0x86,0x6b,0xca,0x41,0x94,0x29,0x7f,0xc1,0xad,0x5a,0x0e,0xba,0x0d,0xf9,0x56,0x69,0x9c,0x74,0xab,0x7d,0xa5,0xfa,0x54,0x62,0xbd,0x06,0x61,0x47,0x10,0x20,},{0x28,0x33,0x59,0xbe,0x41,0x29,0x0a,0x51,0xe6,0xa7,0xc5,0xd5,0x72,0x5c,0xa4,0xea,0x0a,0x68,0xf1,0x4a,0xca,0x14,0xb0,0xf0,0x25,0x66,0xde,0xe2,0x1f,0x49,0x0d,0xa3,0xc7,0xe9,0x5f,0x7a,0xb7,0x39,0xbc,0x35,0xa7,0xf4,0xf2,0x32,0xe9,0x71,0xaa,0x15,0x76,0x57,0xa6,0x33,0xeb,0xa0,0xe7,0x2d,0xc9,0x7a,0xf3,0x2c,0xdb,0x92,0x87,0x02,},\"\\x79\\x1b\\x86\\xfd\\x58\\x77\\x13\\x47\\x8f\\x92\\x34\\xff\\x30\\xce\\xfc\\x12\\x3c\\xd7\\xc3\\xeb\\x12\\x5f\\xa7\\x4e\\x4c\\x6d\\xb6\\x4e\\x78\\x44\\xf7\\xc8\\x5b\\x16\\x86\\xe7\\x1e\\xd0\\x8d\\x1a\\x6a\\x04\\xe0\\xeb\\xbd\\xff\\x4a\\xb1\\x60\\xc9\\x76\\xc8\\xab\\x9b\\x50\\x5f\\x6a\\x7e\\xb0\\xa1\\x84\\x27\\xe9\\x99\\xa8\\x82\\x8d\\xf1\\x06\\x84\\xf8\\xc7\\x5b\\x6a\\x6b\\x0a\\x64\\xc0\\xaf\\xa4\\xbb\\x22\\xbe\\xd1\\xcb\\x93\\x25\\x35\\x9c\\xac\\x3b\\x8c\\x50\\x8d\\x98\\xbc\\xb0\\xeb\\xcd\\x74\\x8d\\xc1\\x32\\xf1\\xd6\\xa3\\x60\\xa4\\x45\\x0d\\x12\\x92\\xa1\\xfe\\xfc\\x4e\\x57\\xe4\\x10\\x7a\\x22\\x3f\\x42\\x1e\\x7d\\x14\\xa3\\x84\\xb8\\x5c\\x18\\x84\\x4d\\x0b\\x9e\\xed\\x2e\\xcb\\x81\\xbb\\x74\\xe8\\xa1\\x26\\x52\\xd9\\x85\\x05\\x79\\x5a\\x01\\x31\\x16\\xa7\\x07\\x6c\\xcb\\x54\\x93\\xd6\\xa7\\x11\\xf7\\x63\\x7e\\x97\\xa7\\x80\\xe7\\x4d\\xa1\\xb3\\x9b\\x15\\xcc\\x7b\\xbd\\xe2\\xe6\\xc4\\xd0\\xd3\\xe8\\x30\\x05\\x97\\xc8\\x36\\xe8\\x0b\\xcb\\x8d\\x80\\x81\\xd9\\x74\\xe0\\x24\\x32\\xea\\xc8\\x83\\x68\\x21\\x1d\\x3a\\xaa\\xe8\\x9a\\x14\\x41\\x71\\x08\\xe1\\xff\\x67\\x37\\x08\\x38\\x49\\xc6\\x25\\xb4\\x0d\\x63\\x1f\\x6c\\x83\\x57\\x22\\x0c\\x7f\\x37\\x38\\x0b\\x3b\\x2c\\xc5\\xd0\\xe2\\xdf\\x6b\\x4d\\x11\\x96\\x57\\x9d\\xbc\\x57\\xb6\\xc9\\xea\\x0d\\x41\\xf4\\xfa\\x0e\\x55\\x6f\\x94\\x3c\\x94\\x48\\xef\\x42\\xfc\\x78\\xdf\\x59\\x96\\x64\\x8c\\xe2\\xf3\\xde\\x04\\xd8\\xa6\\x63\\xf9\\x67\\xf3\\xd9\\x33\\xd4\\xf6\\x53\\x57\\xab\\x29\\xba\\x5b\\x64\\x05\\xfb\\x16\\x29\\x72\\x57\\x8d\\xdb\\xb2\\x36\\x7b\\xed\\x14\\x3c\\x85\\x4c\\x10\\x88\\xde\\x92\\x1d\\x79\\xf5\\xa9\\x2a\\x85\\x48\\x37\\xeb\\x77\\x02\\xe1\\xba\\x92\\x5c\\x6e\\xac\\x23\\xd1\\x34\\xba\\x1b\\xaf\\xc5\\xd4\\x6d\\xe2\\xa1\\x94\\x2c\\x7f\\x36\\x6f\\x70\\x1b\\x0a\\xfa\\xbb\\x75\\xcb\\x1d\\x80\\x8e\\x1a\\x1e\\x4e\\x3a\\xe5\\xde\\x88\\xe8\\xe9\\x98\\x97\\x57\\x45\\x8b\\xdd\\xd8\\xa8\\x06\\xc1\\x10\\xcc\\x3a\\x73\\x3d\\x1d\\x4a\\xc5\\x8a\\x40\\x5c\\x4d\\x81\\x13\\x4f\\xbc\\x24\\xcc\\xde\\x7d\\x5a\\xfe\\x42\\x0f\\x9f\\x17\\x85\\xf0\\xa5\\x02\\x0f\\xaf\\xbb\\x22\\x61\\x22\\x25\\x08\\xaa\\x05\\x28\\xb7\\xb4\\x8b\\x56\\x72\\x00\\x95\\x84\\x25\\xef\\xcb\\x42\\x93\\x4a\\x88\\x0b\\x13\\x34\\x44\\xbb\\x10\\x9f\\x2a\\x95\\x4c\\xfa\\x35\\xa2\\xd1\\x7c\\xb0\\x5e\\xe3\\xf1\\x6d\\x06\\xb3\\x21\\xa1\\x5f\\x91\\x33\\x9a\\xbe\\xda\\x24\\x3a\\xd6\\xc0\\x91\\x9f\\xac\\x51\\xe9\\x07\\xe0\\x53\\xfd\\xee\\xd1\\xcf\\x03\\x00\\x37\\x34\\x13\\x77\\x93\\x94\\x1b\\x8a\\xdf\\x9a\\xb6\\xaf\\x81\\x9c\\x24\\x5d\\x6d\\x56\\xf1\\x69\\x64\\xc8\\xa7\\x5b\\x07\\x56\\xa8\\xcb\\x0c\\xa8\\xc1\\x2a\\xc6\\xe6\\xb3\\x94\\x2e\\xeb\\xec\\x2f\\x86\\x88\\x35\\xf8\\x1b\\x10\\x9d\\xb4\\x98\\xa4\\xca\\x2e\\x02\\x1f\\xa7\\x65\\x60\\x8d\\x23\\xd8\\x03\\xde\\xdc\\x9e\\x51\\x45\\x3f\\xc1\\xd2\\xa6\\xa3\\x8a\\x4a\\xab\\x25\\x7c\\x0f\\xe7\\xd6\\x7d\\x32\\xa5\\x41\\xe0\\x14\\xb6\\x0e\\x10\\x13\\xa9\\x2c\\x1b\\x3a\\xd9\\xe6\\xf1\\x1b\\xe2\\x93\\xb2\\x46\\xf9\\xa0\\xc6\\x44\\x0b\\x0b\\x54\\xfe\\xe7\\x5f\\xed\\x2f\\xb7\\x5c\\xc9\\x1e\\xcb\\x32\\x73\\x8c\\x49\\x58\\x31\\x58\\x6a\\x11\\x24\\x2d\\x87\\xdc\\xb4\\x88\\x3e\\xdf\\x67\\x57\\xa5\\x0b\\x18\\x84\\x37\\x59\\xb9\\x8d\\xd0\\xce\\xf4\\xa3\\xfe\\x10\\xd7\\x63\\x70\\xec\\xda\\x8c\\x83\\xfa\\xb8\\x7e\\xee\\x26\\x56\\xc5\\xf2\\x61\\xc3\\x40\\xea\\x91\\xa5\\x60\\xd0\\xe2\\xc6\\x42\\x89\\x26\\x7f\\x00\\x36\\xba\\x35\\x94\\x48\\x00\\xa5\\xa0\\xae\\xf3\\xf1\\xdf\\x83\\x9a\\x72\\x4e\\x18\\x1d\\x79\\xb8\\xa3\\xc1\\x6f\\x65\\xae\\x27\\x95\\x3c\\x4a\\xae\\x8c\\xcd\\x30\\xff\\x5a\\xcc\\x4b\\x31\\xe4\\x76\\x5c\\x68\\xfb\\x38\\x31\\x9f\\x10\\xac\\xf8\\x92\\x47\\xb5\\xa3\\x9b\\x3b\\x08\\xa1\\x91\\x75\\x4a\\x24\\xac\\xa9\\x59\\x6a\\x1f\\x8a\\x70\\xb6\\xe4\\xf0\\x3a\\x20\\x04\\xa9\\x08\\x6f\\xf6\\xed\\x07\\x65\\x2a\\x92\\x6e\\x1e\\x2d\\xf7\\xbd\\xcc\\xd5\\xbe\\xc1\\x6e\\x5c\\x4e\\x96\\x83\\x64\\xa0\\x9a\\xbf\\x9d\\xed\\x93\\xdf\\x5f\\xca\\x0b\\xcc\\xa5\\xc8\\x12\\x97\\x6e\\x5c\\xfb\\x3c\\x34\\x93\\xfc\\x17\\x5d\\x1d\\x92\\xee\\x8d\\x1c\\x98\\xfb\\x33\\x82\\xb3\\xab\\x90\\xc5\\xc0\\xe4\\xbd\\xf6\\xa3\\xac\\x94\\x76\\x7b\\x68\\xd4\\x7e\\x6b\\x9c\\x24\\x42\\x65\\xe3\\xb1\\xab\\x06\\x23\\xa8\\xf0\\x10\\x02\\x73\\xf2\\xc6\\x07\\xde\\x89\\x61\\x2c\\x72\\xd3\\x9b\\xe4\\xc0\\xb4\\xd7\\x7a\\x3c\\x61\\x36\\x8d\\xf4\\x0b\\x36\\x08\\x65\\x29\\x89\\xd1\\xe1\\x9c\\x0a\\xaf\\x0e\\x3c\\x25\\x3e\\x56\\x2c\\x64\\x09\\xfe\\x64\\x48\\x92\\x9b\\x33\\x75\\x3d\\xe1\\x62\\xe6\\xde\\x5b\\xd4\\x66\\xa5\\x11\\x4f\\xc0\\xe5\\xf5\\x71\\x02\\x75\\x5e\\x29\\x54\\x4f\\x03\\xb2\\x8d\\x4f\\x78\\xde\\x9a\\x02\\x4d\\xd4\\xc4\\xe8\\xc3\\xc2\\xd4\\x41\\x15\\xa7\\xae\\x15\\xed\\xb4\\xf5\\x58\\xaa\\x7d\\xba\\x64\\x26\\xe7\\xe3\\x72\\xc5\\x4f\\x79\\x40\\xbd\\x77\\x14\\x46\\x7f\\x8c\\x3a\\x1a\\xdd\\x3c\\x64\\x01\\x89\\xc3\\x16\\x60\\xd8\\xcc\\x01\\xd3\\xc5\\x38\\x2e\\x42\\xab\\xc1\\x04\\xc7\\x23\\xf9\\x48\\xa8\\x04\\xca\\x85\\x30\\x47\\xb6\\xb8\\x7b\\x5b\\x6e\\xf4\"},\n{{0x5b,0x67,0xa6,0xd7,0xc6,0x50,0xdd,0x92,0xdd,0xd0,0x36,0xce,0x7a,0x30,0x5b,0xc9,0x59,0xa4,0x97,0xc5,0xe5,0x15,0xa6,0x84,0x93,0x03,0x5c,0xb3,0x85,0x0e,0xe0,0x3d,},{0x4c,0x6f,0xc1,0x64,0x05,0x05,0xfb,0x46,0x66,0x9f,0x93,0x04,0x8f,0x8e,0xf5,0x57,0x09,0x9f,0x3f,0xd9,0x2a,0x53,0x06,0x4b,0x16,0x33,0x63,0xa3,0x1b,0x7f,0x00,0xaa,},{0x0f,0x07,0x3c,0x9a,0x58,0x6f,0x6f,0x5e,0x08,0x38,0x9a,0x2a,0x5e,0x18,0x08,0xe2,0x70,0xf0,0xed,0xb6,0xaf,0x10,0x44,0x96,0xf9,0x37,0x57,0x62,0x3f,0xea,0x53,0x13,0x3a,0x73,0x1c,0x44,0x5a,0xc2,0x35,0x78,0xcd,0x56,0xa3,0x88,0x3c,0x08,0x95,0x86,0x68,0x63,0x1f,0xed,0xf1,0x44,0x6c,0xe3,0x4f,0x85,0x7f,0x90,0x82,0x2b,0xa8,0x0a,},\"\\x62\\xcc\\xde\\x31\\x77\\x2c\\x57\\xe4\\x85\\x3a\\xaf\\x2a\\x81\\x81\\xfd\\xb5\\x3f\\xb8\\x27\\x90\\xea\\x65\\x01\\xbf\\xc8\\xf5\\xd4\\xae\\x8d\\xbd\\x52\\xde\\x42\\xce\\x2e\\x89\\x61\\xac\\x17\\x31\\xf4\\xbc\\x08\\x5f\\xb5\\x61\\xef\\x09\\xa2\\x44\\x29\\x70\\xb6\\x29\\x79\\x01\\xae\\xaa\\x2e\\xe5\\x55\\xb7\\xd5\\xe3\\x95\\x1c\\x7c\\x35\\x12\\x39\\xdd\\xee\\x95\\xff\\x54\\xf9\\x24\\xda\\x95\\xca\\xe7\\xb1\\x5b\\xa6\\xa9\\xa1\\x33\\x7b\\x8c\\xe4\\x92\\x1e\\xd9\\x13\\xcd\\x79\\x1c\\x1c\\x69\\x41\\x08\\x0e\\x54\\x8f\\x3c\\x36\\xe8\\x45\\xac\\xbf\\xd8\\xd8\\xce\\x35\\xe2\\xfd\\xc2\\xa2\\xad\\x6c\\x7e\\x24\\x61\\xbf\\xcb\\xf1\\xaa\\xbc\\x55\\xcf\\x0f\\xae\\x42\\x88\\x85\\xbe\\x5e\\x86\\x53\\x33\\x08\\xc9\\x75\\x68\\x05\\x21\\x9a\\xbd\\x7f\\xfc\\x16\\x57\\xb6\\xf4\\x63\\x29\\x20\\xa0\\xc1\\x0e\\x0e\\x36\\x33\\x19\\xd9\\x00\\xfc\\xd6\\x1e\\x7d\\xdb\\xcd\\x6e\\x76\\x2a\\x7d\\xb9\\x24\\x80\\xc3\\x63\\xb2\\xc0\\x64\\x0c\\x6b\\xf3\\x2d\\x69\\x0d\\xd8\\x29\\xd8\\x40\\x5f\\xa6\\x6e\\x47\\x83\\xeb\\xe1\\xcb\\xde\\x95\\x47\\x95\\x4a\\x90\\xba\\xad\\x9f\\x77\\x4e\\x94\\x54\\x9a\\xbb\\xff\\x2c\\x1f\\x5c\\xae\\xc2\\xbf\\xd2\\x8e\\x41\\x5d\\x36\\x42\\x9d\\x58\\x51\\x8c\\x3e\\x17\\xe8\\x69\\x9e\\x19\\x89\\xd4\\x7b\\x8d\\x62\\x7e\\xf9\\xab\\x4d\\x1e\\x7d\\x12\\x0b\\x37\\x2c\\x21\\x41\\x30\\x4f\\x7f\\xab\\xd0\\x26\\x5b\\x8b\\xe4\\x1f\\x54\\x67\\xf4\\xde\\x9e\\x65\\xc1\\x25\\xee\\x1f\\x27\\xa2\\x89\\xc4\\xf7\\xc9\\xa1\\xfb\\xf2\\x5b\\xfc\\x2f\\x8d\\x30\\x8e\\x7f\\xf5\\x21\\x91\\xcb\\x76\\x44\\xc6\\xaf\\x20\\x45\\x22\\xf2\\xac\\x87\\xb5\\xf4\\x05\\x25\\xfd\\x43\\xd3\\x08\\xc8\\xdb\\xc6\\xa8\\x61\\xd2\\x5d\\xb2\\x3e\\xe2\\x76\\x67\\x8a\\x1b\\x6e\\x8e\\x91\\x28\\x3b\\xe0\\x24\\x70\\x48\\x2e\\xd6\\xcc\\x9f\\x6e\\x39\\x63\\x51\\xd1\\x1b\\x1c\\x7e\\x22\\x32\\x9c\\x09\\x1f\\xe7\\xd3\\x68\\xf6\\x06\\x53\\xf9\\x3b\\x0f\\x6a\\x3f\\x71\\x2c\\x20\\xf9\\xd2\\xd8\\xa9\\xa0\\x81\\x98\\x72\\xf0\\xc7\\x1d\\x7b\\x1c\\x0b\\xc1\\x68\\x3a\\x15\\x2b\\x48\\x4b\\xc2\\x1c\\xf5\\x56\\x09\\x3a\\xb4\\xc0\\xac\\x16\\xd3\\x22\\xff\\x0b\\xf4\\x52\\xe5\\x58\\x1e\\x1e\\x72\\x41\\x67\\x38\\x84\\x02\\x3c\\x7d\\x6e\\x17\\xe2\\xde\\x80\\x59\\xf6\\x0e\\x4c\\x18\\xe1\\x3b\\xd5\\x5f\\xcf\\xee\\x62\\x3f\\xd0\\x46\\x9c\\x0d\\x09\\x11\\x61\\x1d\\x09\\x9a\\x25\\x70\\x20\\xf2\\xf3\\x1b\\xf5\\x07\\x8e\\x6e\\x65\\xa1\\x35\\xd5\\xbf\\x40\\x76\\x20\\x23\\x6d\\x6c\\xc7\\x59\\x31\\x0f\\xa7\\x28\\xff\\x8b\\xb5\\xec\\x56\\xab\\xbe\\x1a\\x3c\\xd1\\x51\\x53\\xf8\\x92\\xd9\\x58\\xd3\\x0d\\x16\\x2d\\x01\\xee\\x66\\x5f\\x5b\\x56\\x27\\x81\\xd8\\xdc\\xf8\\x42\\x80\\x59\\xe5\\xfd\\x22\\x5a\\xd7\\x8a\\x99\\xea\\x76\\x0f\\xe5\\xd9\\xee\\x82\\x19\\xc9\\x5a\\xcb\\x18\\xd0\\x56\\x22\\xe1\\x0a\\x9b\\x6c\\x67\\xf6\\xd4\\xf6\\xed\\x11\\x63\\x5c\\x5e\\x2e\\x0f\\x85\\xdd\\x5d\\x3c\\xbd\\xa6\\x5a\\xa4\\x23\\xd5\\x94\\xa8\\x0b\\x40\\x42\\x7b\\xc3\\x21\\xe0\\xee\\xf9\\xaf\\xd2\\xbc\\x87\\x46\\xab\\x73\\x99\\xff\\x6d\\x0e\\x12\\x87\\xb6\\x61\\xdd\\xc4\\x06\\x2d\\x07\\x20\\x18\\xf4\\xc1\\x0e\\x86\\xcf\\xae\\xd7\\x2d\\x9e\\x68\\x6e\\xd0\\x9d\\x52\\x55\\xd3\\x60\\xe3\\xee\\xa2\\xc2\\x9b\\x9e\\xae\\xa0\\x5f\\xc7\\x8c\\x8c\\xdb\\x8c\\x9d\\x4a\\xfc\\x7a\\xdc\\x6d\\x4a\\xa0\\x67\\xb7\\xab\\xfb\\x0a\\x4e\\x94\\x0a\\x77\\x58\\x0e\\xc2\\x06\\x45\\x6c\\xb9\\xe9\\xf9\\x5f\\x6d\\x56\\x5d\\x53\\x6e\\x53\\x5a\\x16\\x7e\\xde\\x8e\\x20\\xec\\x36\\x08\\x1e\\x2f\\xc5\\x5a\\xef\\xaf\\x24\\xd2\\x27\\xff\\xfe\\x5e\\x6c\\xb0\\x30\\x93\\xf4\\x43\\xb4\\xc5\\x16\\x55\\xd9\\x1c\\xa6\\xf2\\x75\\x95\\x9d\\x1a\\x80\\x2a\\xde\\xab\\x44\\x70\\x1b\\x31\\xe8\\xb0\\xfd\\x02\\x22\\xc4\\x99\\x96\\x6c\\x72\\xd1\\x02\\x0a\\xd9\\x37\\x0e\\x28\\x02\\xbe\\x04\\xc9\\x93\\x3f\\x6b\\x77\\x4f\\x6e\\x8c\\x69\\xfc\\x0b\\xfd\\x31\\x59\\x39\\xa1\\x27\\xb4\\xe0\\x6d\\x0f\\x6f\\x5e\\xde\\x67\\x1c\\xe1\\x16\\x12\\x12\\x6b\\x51\\x87\\xb5\\x33\\x29\\xb0\\xa9\\xcb\\x7d\\xa3\\xb1\\xcc\\xd6\\x7b\\x8c\\x07\\xba\\xb9\\x9a\\x66\\x2d\\xf8\\xce\\x85\\x1f\\x50\\x2f\\xc4\\xe1\\xed\\x16\\x32\\xb6\\xba\\x55\\x55\\x44\\x01\\x8f\\x75\\x27\\xe3\\x62\\xef\\xc7\\xe3\\xb2\\xba\\x6f\\x75\\xa1\\x25\\x4f\\x42\\x8b\\x3b\\x7e\\x0b\\xea\\x69\\x54\\x9e\\x7f\\x9c\\x73\\x62\\x75\\x55\\x00\\x80\\xae\\xe3\\xaf\\x59\\x14\\xe3\\xa3\\x4b\\xe6\\x56\\xc7\\x7f\\x6b\\x29\\x42\\x0e\\x54\\x33\\xf3\\xdf\\xf3\\x81\\x1f\\x35\\x28\\x20\\x8e\\x9d\\x85\\x0a\\xa3\\xc2\\x9b\\x0f\\x77\\x8a\\x24\\x27\\xd5\\xfd\\xe3\\x07\\x32\\xdf\\xe5\\x04\\x43\\xa9\\xc1\\xad\\x55\\xc7\\x2a\\x08\\xab\\x26\\xff\\xaf\\x8e\\xfb\\x90\\xbc\\xaf\\xd3\\x72\\x6b\\x00\\xc0\\x05\\xc8\\xc0\\xf0\\xdb\\xf2\\xa1\\x35\\x30\\x86\\x72\\x1e\\x44\\x65\\x45\\xb8\\x13\\x44\\x11\\x94\\xa7\\x55\\xfd\\x26\\xb9\\x63\\xaf\\xd9\\x77\\x27\\x8d\\x1b\\x10\\xf0\\x90\\x01\\xc7\\xed\\x97\\x54\\x03\\xc1\\x5c\\xbe\\x7f\\x99\\x2a\\xb0\\x7b\\x84\\x70\\xc9\\x39\\xf8\\x66\\xf4\\x20\\xf7\\x7d\\xb7\\x79\\xaf\\x83\\x97\\x00\\x32\\x9e\\x07\\x77\\xa6\\x11\\x63\\x65\\xd7\\x6c\\x36\\xd0\\x9d\\x86\\x04\\x72\\xa5\"},\n{{0x26,0x31,0xc8,0xc3,0x4d,0x29,0x48,0xdd,0xd5,0x99,0x6b,0x41,0x49,0xce,0xfd,0x23,0x8e,0xa7,0x45,0x2e,0xc2,0x2e,0x24,0x61,0x24,0xdf,0xa2,0x79,0xcc,0xc2,0x7d,0xb8,},{0xc3,0x90,0x67,0x86,0xff,0xb8,0xa7,0xc2,0x7c,0x44,0xc2,0x44,0x7f,0x9d,0xde,0x7d,0x66,0x6d,0xfe,0x58,0x8c,0xfc,0x54,0xf2,0xd2,0x50,0x40,0x51,0x2a,0x37,0x1b,0xc1,},{0x0a,0xdc,0x6f,0xa4,0x0f,0xfb,0x81,0xf6,0xef,0x4e,0x41,0x87,0x55,0x49,0x17,0x77,0x5c,0xf4,0x65,0xe7,0xb5,0xe8,0x57,0xf2,0xe1,0xe7,0xf4,0x00,0x97,0x71,0x06,0xd2,0x37,0x7e,0xbc,0x76,0xab,0xb1,0xdb,0x92,0x4c,0x64,0x86,0x7e,0x3c,0x6f,0xe3,0x8c,0x0b,0x4f,0xcb,0x1d,0x0f,0x94,0x68,0xe8,0xfb,0x23,0x50,0x29,0xa8,0x1c,0xe6,0x04,},\"\\x6f\\x9b\\xdc\\xe1\\x44\\x3f\\x28\\x56\\xd4\\xa2\\xf2\\x27\\x82\\x83\\x50\\x12\\xb7\\x81\\x8a\\x0e\\x02\\x0d\\xbc\\xc2\\x2a\\x82\\x16\\x58\\x30\\x5f\\x13\\x42\\x34\\xd1\\x4c\\xea\\x63\\x61\\x00\\xed\\x89\\x6c\\x2a\\x8f\\xb0\\xe8\\x70\\x48\\xec\\x6f\\x8b\\x31\\x48\\x4f\\x78\\xeb\\x17\\x10\\x45\\xad\\xd7\\x2c\\x85\\x71\\x0e\\xc9\\xf9\\xb5\\xd4\\x36\\x23\\x41\\x7b\\x56\\x53\\xbe\\x86\\xe7\\xfb\\xf8\\xb4\\xff\\x91\\x11\\x0a\\x80\\x8c\\xb4\\x1a\\xcf\\x66\\xd4\\x36\\xe8\\x9a\\x73\\x7f\\xae\\xa4\\xef\\xf3\\x54\\x49\\x60\\xf1\\x14\\xb8\\x33\\xb0\\xb4\\xeb\\xc2\\xc1\\x40\\x70\\xb0\\xbf\\xb7\\xb0\\x05\\x7e\\xeb\\xb8\\x42\\xbd\\x1c\\x1e\\xd4\\x58\\xad\\x34\\x28\\xf8\\xf7\\x2a\\x1d\\x1d\\xb3\\xc4\\xcb\\x47\\x97\\xa3\\x99\\xd4\\x7a\\x1e\\x6d\\xb7\\x4d\\xcb\\x2e\\xe2\\x4a\\xe8\\x15\\x85\\xcf\\x66\\xef\\x6d\\x9b\\xd2\\x23\\xf0\\xf5\\x4b\\xc8\\xc1\\xce\\xc1\\xbb\\x44\\x60\\xbe\\xf4\\xff\\xd3\\x2e\\xe8\\x05\\xc3\\xca\\x5e\\xe9\\x76\\xff\\x9c\\x14\\x55\\x9f\\x8d\\x75\\x66\\x62\\xa2\\xbc\\x19\\xe4\\xc5\\x98\\x54\\x06\\xa0\\x73\\x05\\xc9\\x95\\x0d\\x86\\x6c\\x9a\\x79\\xa3\\xe5\\xf6\\xc5\\x96\\x97\\x53\\xa1\\x70\\xe0\\xfc\\x4c\\xc0\\x9c\\x6d\\x87\\xa1\\x2b\\x44\\xcd\\xf3\\xbe\\x16\\x23\\x15\\x9e\\x90\\xca\\xb7\\xa8\\xa3\\xe6\\xf0\\x1f\\x26\\x85\\x95\\xb0\\x21\\xb1\\xef\\x7d\\x00\\x76\\x94\\x77\\x27\\x0d\\x55\\x84\\xc9\\x12\\xe2\\x2a\\x36\\x74\\x38\\x27\\x7f\\x59\\xdf\\x20\\xc5\\x62\\x0d\\xd5\\xbe\\xaa\\x9b\\xb6\\x0b\\xee\\x47\\xf4\\xaf\\x52\\x7d\\x89\\x29\\x57\\xb2\\xd1\\x2b\\x67\\x8b\\x52\\x79\\xa3\\xf8\\x32\\x64\\x65\\x4c\\x0a\\x0f\\x8d\\x21\\xe7\\x09\\x66\\x8f\\x30\\xfb\\x6e\\x68\\xf0\\x47\\xd0\\xd9\\xa7\\xc2\\xae\\x9a\\x28\\xf7\\xcb\\x9d\\xbf\\x18\\xf6\\x3f\\xc1\\x66\\x1f\\x07\\xd3\\x10\\xe5\\x40\\xc7\\x76\\x31\\xf5\\xbd\\xac\\x58\\x24\\x68\\x5d\\x7c\\x9a\\xba\\x0f\\xe1\\xd0\\x94\\x07\\xa9\\x66\\x2e\\xf1\\x8e\\xb3\\xe2\\x8f\\xd1\\xe8\\xbc\\x89\\x26\\x57\\xbc\\x38\\x24\\x3a\\x2e\\x64\\x53\\xbd\\xae\\xab\\xb2\\x79\\x1f\\xc5\\x48\\x95\\x21\\x29\\x54\\x57\\xad\\x04\\x18\\x0c\\xa8\\x71\\xf6\\x31\\x87\\x92\\xbd\\x15\\xfd\\x18\\x00\\xce\\x59\\xdd\\x3e\\xcc\\x7e\\x0b\\x72\\x97\\x92\\x67\\xd8\\x18\\x3e\\x80\\x4f\\xdd\\x45\\xda\\xad\\x84\\xfc\\x4c\\xaf\\xeb\\x56\\x1e\\xa8\\xd6\\xa7\\x4a\\x7c\\xde\\x72\\x2d\\x96\\x25\\x3a\\xb3\\xe7\\x5f\\x0a\\xdd\\xe0\\x2a\\x61\\xfd\\x5e\\x1f\\x59\\xcb\\x1f\\x5f\\x1b\\x2e\\x05\\x26\\x43\\x58\\x9a\\x9e\\x4b\\xe4\\xdd\\x6e\\xe6\\x45\\x38\\xcb\\x0b\\x10\\x9a\\x11\\x3f\\x30\\xa5\\x8b\\x35\\x65\\x62\\x40\\x43\\x66\\x2a\\xbe\\x17\\xf6\\x0e\\x31\\xe8\\x9c\\x36\\xc9\\x95\\xe0\\x0a\\xe0\\x7f\\x56\\xa9\\x11\\x8a\\x31\\xae\\xc2\\x4a\\xd5\\x44\\xbc\\x96\\x58\\x11\\x21\\x8d\\xf8\\x27\\xc1\\x73\\x0b\\xb9\\x04\\xbb\\x79\\xb6\\x86\\x13\\xf6\\xc9\\x94\\x67\\x9b\\x69\\x90\\xd7\\x75\\xb5\\xcb\\x32\\xdb\\x97\\x19\\x4b\\xd8\\x10\\x19\\xbe\\xa4\\x1f\\x3a\\x7e\\xef\\x50\\x1b\\xf8\\x49\\x1b\\x0e\\xa8\\x59\\x38\\x84\\x52\\xe3\\xec\\xbe\\x16\\xaa\\x7d\\x56\\x91\\x51\\x0a\\x66\\x06\\xc4\\x93\\xe4\\xc2\\x93\\x96\\x1b\\xf4\\x0b\\x4c\\xd3\\x00\\xd9\\xd2\\x2e\\xa1\\xa7\\x72\\x4c\\x07\\x8b\\x8b\\xab\\x1f\\xd1\\x65\\x04\\xe9\\x89\\xb1\\x36\\xd9\\x25\\x1a\\xc9\\xf1\\xed\\x94\\xa5\\xe9\\xac\\xbd\\x9c\\x04\\xf8\\x05\\x8a\\xfe\\x03\\x04\\x9a\\xed\\x8b\\xa2\\x9f\\xa2\\xe8\\xfb\\x44\\xf8\\xe8\\xc0\\x4e\\x87\\x27\\xf3\\x99\\xe7\\x35\\xe6\\xc1\\x49\\x6a\\x91\\xa9\\xb2\\xcd\\x2a\\xb0\\x2d\\x43\\xb2\\x85\\xe9\\xd7\\x61\\x02\\x93\\xb6\\x74\\x9d\\xf1\\x04\\x4b\\x30\\xe2\\xda\\x99\\xa5\\x64\\x42\\x9a\\x23\\xe6\\x8c\\x96\\xfc\\xe9\\x2b\\x08\\xa0\\x0b\\x7b\\x74\\x2b\\xa9\\x7a\\x62\\xee\\x58\\x77\\x6d\\x7d\\xd5\\x65\\xa4\\x90\\x07\\x1d\\x4b\\x19\\xdc\\x64\\x8e\\x03\\x32\\x9c\\xc5\\xc8\\x25\\xd3\\x87\\xeb\\xa4\\x9e\\x2e\\xff\\x6c\\x43\\x41\\x86\\x5c\\x46\\x4f\\x13\\xf1\\xbe\\xb1\\x82\\x7a\\x7f\\x26\\x8c\\xc1\\x5a\\x98\\x24\\x80\\xbf\\x08\\x4f\\xe3\\x65\\x2c\\x1b\\x0e\\x0b\\x4a\\xd2\\x62\\x55\\x85\\x9a\\xbf\\x1c\\x8a\\x7f\\x9b\\x3b\\xef\\x09\\x8a\\x94\\x07\\xfd\\xea\\x0a\\x53\\x9e\\xb0\\x08\\xfd\\xd7\\x49\\xfa\\x01\\x86\\xcc\\x01\\x69\\xd9\\xd9\\xe6\\x8f\\xe5\\xe5\\x4c\\xac\\x32\\xce\\x57\\xb5\\xc8\\x4c\\x2d\\x80\\x5e\\xca\\x39\\xc2\\xdb\\xbd\\xd2\\xe0\\x2f\\x7d\\x22\\x88\\x26\\x71\\x2f\\xf4\\xa6\\x14\\x11\\xca\\x0a\\xeb\\x6f\\x01\\xa1\\xf8\\x0e\\xf2\\x9e\\xeb\\x07\\x1a\\x43\\x22\\x2d\\x94\\x97\\x18\\x4b\\xd8\\x5d\\x9e\\x44\\xb1\\x66\\xbe\\x97\\xcf\\xd2\\xa7\\x32\\xaf\\x4a\\x23\\x34\\x63\\xd3\\xab\\x54\\x3a\\x7a\\x3c\\x7a\\xec\\x55\\x56\\x56\\x56\\x88\\x40\\xf4\\xdf\\xea\\x21\\x7f\\x65\\x53\\xaa\\x98\\xaf\\x32\\x4c\\x12\\xb2\\xc3\\x21\\x4e\\xe7\\x6e\\xec\\x70\\x06\\x70\\xaf\\x68\\xc8\\xc1\\xf3\\x69\\x46\\xef\\xd7\\xff\\x09\\x33\\xe5\\x45\\x3f\\x12\\x8e\\x97\\x15\\xfd\\xb3\\x34\\x4a\\xc1\\x0c\\x4b\\xb7\\xec\\x8f\\x10\\xdd\\xf5\\xdb\\x71\\xf1\\xcf\\x0e\\xfe\\x40\\xf7\\x5e\\x5b\\x63\\x34\\xef\\x8c\\xf8\\x42\\x9b\\x32\\x91\\xe6\\xe4\\xce\\x37\\x9c\\x17\\x8a\\xff\\xcb\\xc6\\x10\\x30\\xeb\\x89\\x6d\\x74\\x4d\"},\n{{0x39,0x76,0x9a,0x66,0xf0,0xca,0x12,0x90,0xfd,0xa1,0x43,0x75,0xb3,0x5c,0x66,0x3f,0x6a,0x4b,0x2a,0xb3,0x60,0x71,0x79,0xab,0xd9,0x90,0x63,0xe2,0xef,0xa2,0xc6,0xa8,},{0xf9,0xfd,0x4c,0x19,0x1f,0x38,0xf1,0x21,0x90,0xd3,0x28,0x5e,0x20,0xc6,0xce,0xe5,0x4c,0xfd,0x6f,0xf3,0x15,0x30,0x0a,0x4e,0xfd,0xc8,0xa9,0x0e,0x80,0xaf,0x40,0x83,},{0x14,0x42,0xde,0xa2,0x80,0x7e,0x03,0x11,0x59,0xec,0x6a,0x41,0x2d,0x8e,0x07,0xbb,0x3e,0x29,0x93,0x08,0x09,0x0f,0x21,0x8f,0xa7,0xc1,0x0a,0x9c,0x50,0x68,0xef,0x9b,0x64,0xef,0x11,0xca,0x9f,0xb9,0x2b,0xe1,0xd0,0x21,0x6b,0x99,0x31,0x8f,0xf0,0xf0,0x3c,0xb8,0x71,0xcd,0x7d,0xd6,0x3a,0x38,0xae,0x17,0x02,0x31,0x3e,0x5b,0x25,0x0c,},\"\\xff\\x4d\\x89\\x87\\xe3\\xfa\\x36\\x01\\x2b\\x75\\x86\\x73\\x6b\\x79\\x3d\\x65\\x97\\x54\\x69\\x8c\\xd1\\x2b\\x65\\xe5\\xba\\x9d\\x75\\x8c\\xac\\x16\\x49\\x28\\x8d\\x20\\x22\\x43\\x77\\x28\\x3e\\xa5\\x42\\x5d\\xec\\x10\\xab\\x99\\x17\\xd1\\x8c\\xd1\\x3d\\x1b\\xdf\\x4a\\x76\\x9f\\x37\\x04\\x4c\\x84\\xfa\\xa2\\xa4\\x49\\xc6\\x89\\xe0\\x04\\xc1\\x4e\\x00\\x5c\\x49\\xda\\x41\\x06\\xff\\x75\\xce\\x13\\x03\\x36\\x1c\\x6e\\x3e\\x34\\xcc\\xfe\\xe7\\x5e\\xe9\\xc3\\x1c\\xbd\\x06\\xa4\\xbc\\xdb\\xb4\\x2f\\xd6\\x49\\xbe\\x4d\\xfc\\xd6\\x64\\x00\\x6d\\x6a\\x5f\\x61\\x07\\x7c\\x04\\xa6\\xa8\\x1d\\xb3\\x6b\\xe8\\x6b\\xa4\\x2c\\x29\\x51\\xf0\\x51\\xae\\xda\\x64\\xac\\xea\\x49\\x6c\\xb9\\x24\\x98\\x2b\\x9f\\x7d\\x23\\x4a\\xc9\\x72\\x3f\\xef\\x98\\xa8\\xe1\\x27\\x55\\xe3\\x26\\xa5\\x2f\\xbe\\x35\\x85\\x1f\\x41\\x1e\\xeb\\x86\\x76\\x06\\xd4\\x5b\\x51\\x3f\\x54\\x52\\x63\\x91\\xc5\\x54\\x63\\x5c\\x18\\x0b\\x8f\\xd0\\xee\\x45\\x1a\\xfc\\x96\\xe4\\xef\\xd3\\x60\\xb6\\x1e\\x6b\\xaf\\x03\\xdd\\x6d\\x19\\xba\\x51\\x5c\\x31\\xec\\x1c\\xdd\\x3a\\xff\\xff\\xdb\\x27\\x35\\x4e\\x3e\\x6b\\x56\\xe9\\xe1\\xa1\\xa1\\xb7\\xd4\\xb5\\x7d\\x9d\\x76\\x89\\xbb\\x2f\\xea\\x6c\\x8d\\x3f\\x9c\\xe0\\xdf\\x2d\\x9e\\xe9\\x19\\xc4\\x23\\x0a\\x1f\\x20\\xb8\\x5d\\xfe\\xfe\\x1e\\xa3\\xd7\\xf7\\x7d\\xb4\\x70\\xe4\\x02\\x24\\x29\\xef\\x60\\x9b\\x0f\\xf4\\x49\\x46\\x44\\x0a\\xcb\\x44\\xcd\\x13\\x44\\x5b\\xcf\\xa3\\xf2\\x05\\x03\\xc2\\x6c\\x2f\\xb6\\x63\\xc8\\x90\\x65\\xfb\\x93\\x34\\xa6\\x03\\xeb\\x9a\\xb7\\x15\\x2e\\x62\\x62\\x92\\x33\\xc4\\x4c\\xb0\\x0e\\x77\\x71\\x6d\\x9b\\x72\\xc8\\x4f\\xd1\\xb3\\x40\\x63\\x4f\\xf1\\xce\\xa3\\x47\\x50\\x15\\x76\\x10\\x0e\\xcb\\x0f\\xd1\\xbb\\x76\\xae\\x0d\\xff\\x1c\\x2b\\x09\\x48\\xeb\\x71\\xee\\x2c\\xc3\\x1e\\x79\\xd3\\x01\\x5d\\x72\\xdb\\xee\\x22\\x4a\\x98\\x0e\\x0f\\x95\\xa6\\x9f\\x79\\x3d\\xa8\\x3a\\x2d\\xaa\\x56\\xef\\xe5\\x7b\\x2f\\x8c\\xea\\xac\\x9e\\x55\\xf4\\x43\\xca\\x9e\\x73\\x2b\\x48\\xc7\\x5f\\xac\\x21\\xc3\\x6f\\xa7\\x72\\x73\\xc3\\xf3\\x48\\x35\\xff\\xd8\\x3c\\x96\\xf0\\x0a\\xc6\\xe8\\x6c\\xff\\xed\\x08\\x15\\x36\\x46\\xc1\\xce\\xa2\\x23\\xda\\x9c\\xa3\\x60\\xca\\xb9\\x7e\\x03\\xb2\\xb6\\xc8\\xfb\\xa7\\xc1\\x95\\xa3\\x9a\\xe5\\x2e\\xb2\\xee\\x86\\x43\\x00\\xae\\x56\\xa1\\x0f\\x54\\x7f\\x99\\xa3\\x16\\x98\\x72\\x24\\x9f\\x97\\x77\\x4b\\x17\\x98\\x93\\x55\\x36\\xf2\\xf5\\xf0\\x11\\xce\\x57\\x61\\x3a\\x94\\xfc\\xb7\\xe7\\x28\\x6a\\x6d\\x49\\xc1\\x0f\\xd9\\x29\\xd7\\x67\\x1c\\xbb\\x8c\\xf1\\x7d\\xfc\\xad\\x4b\\x24\\x85\\xc3\\xd8\\xfd\\x79\\x12\\x87\\x21\\xe5\\x5d\\x84\\x80\\x87\\x63\\xc2\\xaf\\xa9\\xc5\\x5e\\x3b\\x0c\\xd7\\xbf\\x2f\\x0a\\x66\\xb5\\xe4\\x67\\xbe\\xc5\\xee\\x89\\xad\\x57\\x0b\\x60\\xf1\\x88\\xb3\\xf7\\xb4\\xa5\\x11\\xff\\x85\\x93\\x12\\xde\\xd0\\x78\\xd8\\xd0\\x09\\x11\\x34\\xfd\\x49\\xbc\\x79\\x2d\\x2d\\x7d\\x60\\xb3\\x04\\x94\\x1c\\x7f\\x23\\x20\\x6f\\x99\\xe8\\x63\\xb1\\xe2\\xd8\\xc9\\xec\\xff\\xd2\\xff\\x0a\\x3a\\x3c\\x75\\x49\\x85\\x61\\x5a\\x9a\\x92\\xed\\xce\\xad\\x00\\xfe\\x0e\\x05\\x49\\x3b\\x19\\x8d\\x1f\\x7c\\x90\\x08\\x84\\x46\\xbb\\xa4\\x60\\x38\\xa7\\x1f\\x32\\x65\\x3b\\x59\\x12\\xb2\\x4f\\x43\\x13\\x77\\x48\\xb7\\x5a\\xec\\x2c\\x15\\xfe\\x4b\\xf5\\xa6\\xf8\\x6b\\x8a\\x6c\\xdd\\x9c\\x74\\x47\\xf2\\xeb\\xb0\\xf4\\x3b\\x01\\xca\\x15\\x23\\xe0\\xd4\\x96\\x24\\x00\\x06\\xad\\x7f\\xff\\xfa\\xfe\\x0d\\xf5\\x75\\x4b\\x34\\x2c\\xaf\\xf3\\x55\\x5d\\x72\\xa2\\x7d\\x0b\\x92\\xca\\x16\\x67\\x66\\x5c\\xec\\x43\\xbf\\xb5\\x83\\x07\\x7a\\x9c\\x17\\x41\\xfa\\x49\\x2c\\xe3\\xdc\\x2c\\x75\\x29\\xcd\\xed\\x81\\xb8\\x28\\x1a\\x3f\\x37\\x59\\x48\\xb8\\xa7\\xce\\xd0\\x96\\xb2\\xfa\\xcc\\x25\\xe3\\x90\\x29\\xe2\\x21\\xb6\\x6a\\x53\\xd3\\x97\\x9e\\x1f\\x40\\x5f\\xd8\\x8a\\xfc\\x06\\xec\\x6e\\x43\\x09\\xdc\\x85\\xe6\\x9d\\x6e\\xf2\\xb4\\xb4\\x92\\x66\\x16\\x4a\\x9d\\x9d\\x1c\\x31\\xee\\x39\\x21\\x12\\x7b\\x13\\x38\\x1b\\xfb\\x74\\x0d\\xd3\\x8d\\xc1\\xc7\\x31\\x59\\x21\\xf9\\xc2\\xfe\\x58\\xb6\\x1b\\x63\\x1a\\x7d\\x9f\\xde\\x2d\\xd8\\xa4\\xbe\\x3d\\xed\\x04\\x90\\xae\\x3b\\x83\\x76\\x79\\x19\\x55\\xc1\\xc4\\xb4\\xfe\\xd0\\x0b\\x9f\\x4c\\x38\\xab\\x73\\x50\\xfc\\x2e\\x37\\xa3\\x15\\x0c\\x18\\x16\\x2b\\x1f\\xaf\\x03\\x37\\x89\\x4b\\xc2\\x3e\\x74\\xf5\\x95\\xe4\\xbe\\x33\\x46\\x6d\\xea\\xb3\\x54\\x58\\xbe\\x97\\xb4\\xf7\\x56\\x58\\x97\\xf0\\x68\\x52\\xf7\\x1c\\x60\\xfe\\xf9\\x10\\x1d\\x72\\x6b\\x72\\xe0\\x10\\x2a\\x97\\xb2\\xca\\x52\\x11\\xe3\\x80\\x68\\x34\\xb0\\xac\\x1a\\x7d\\xf8\\x7c\\x2a\\x07\\x8d\\xf2\\x63\\xef\\x8b\\xa4\\x57\\xdc\\x89\\x1b\\x7f\\x2e\\x62\\x78\\x11\\xab\\x62\\x2b\\x99\\x46\\xf8\\xc6\\xb7\\x31\\xf2\\x40\\x78\\xd1\\x7b\\x06\\xb2\\x00\\xc3\\x44\\x7f\\x80\\x32\\xaa\\x3e\\x7a\\x24\\x3e\\xe4\\x22\\xdd\\xa2\\xe6\\x52\\xfd\\x75\\x71\\x3a\\xfb\\xce\\x8a\\x59\\xef\\x85\\x36\\x65\\x3a\\x48\\xdc\\xf4\\x2a\\x70\\xe7\\x62\\x1f\\x9b\\x28\\x02\\x40\\x9b\\xe1\\xc1\\xa6\\x1f\\x32\\xe3\\x67\\x89\\xa5\\xc5\\x05\\x5e\\x1a\\x82\\x68\\xe9\\xdc\\x43\\x8c\\x2e\\x15\\x27\"},\n{{0x0c,0x80,0x8b,0x06,0x6f,0x0c,0x8e,0x8d,0xbb,0x1c,0x23,0xd6,0xc2,0xce,0xdd,0x0b,0xe8,0x66,0xd8,0x42,0x5f,0x24,0x1a,0x92,0x85,0x70,0x0e,0xa5,0x45,0x36,0xcf,0x6d,},{0x44,0xee,0x72,0x90,0x04,0x50,0xc5,0x6a,0xb2,0x1f,0x26,0x86,0xd2,0x95,0x25,0xd0,0x66,0x3e,0x0b,0xdd,0x87,0x72,0x5b,0xea,0xc5,0xd6,0x8b,0xac,0xeb,0x69,0xf1,0xd2,},{0x38,0xc6,0x82,0xce,0xde,0xfb,0x13,0xe4,0x6b,0x11,0xf7,0xb5,0xf8,0x00,0xcc,0x81,0x20,0xd4,0x5a,0x83,0xcd,0x8d,0x8d,0xec,0x10,0xc5,0x77,0xbb,0x01,0x53,0xd5,0x09,0xba,0x4f,0xdf,0x40,0x09,0x98,0x78,0x8b,0x70,0x60,0x07,0xce,0x16,0x2b,0x96,0x94,0x5c,0x71,0x40,0xbe,0xee,0x74,0xe1,0x9d,0x07,0x43,0xaf,0xa4,0xec,0xfd,0x25,0x0a,},\"\\xc9\\x45\\x71\\x41\\x00\\x58\\x1f\\x4e\\x24\\xda\\x11\\xfc\\x0f\\x6c\\x6d\\x02\\x10\\x43\\x3f\\x97\\x77\\x52\\x51\\x24\\xc5\\x5e\\xe0\\x72\\xd8\\x5d\\x79\\x8b\\x70\\x5f\\x9d\\x31\\xc8\\xf9\\x77\\xdb\\x6e\\xdf\\xb7\\xa6\\x5c\\x78\\xad\\x2d\\x7d\\x31\\xd6\\xb7\\xb5\\xbe\\x40\\xff\\x11\\x78\\xd3\\x03\\xb6\\x83\\x9b\\xb0\\xc6\\x32\\x10\\xc1\\xd3\\x38\\xc1\\x03\\xaf\\xa0\\xd4\\x53\\xec\\xa1\\xbc\\xa2\\x77\\xd9\\x30\\x77\\x8a\\xd5\\x08\\x02\\x27\\x2f\\x03\\xdb\\xe2\\x18\\x4f\\xc3\\x1e\\xf8\\xea\\x6a\\xbe\\x21\\x69\\x97\\x19\\x9f\\x7c\\x1b\\x33\\x77\\x37\\x96\\x89\\x07\\x27\\x2a\\xa5\\x1b\\xd4\\x9c\\x07\\x38\\x9c\\x95\\x46\\x8c\\xef\\x4f\\xd9\\x9a\\xe7\\x8c\\xa4\\x54\\x2a\\x2b\\xbc\\x0e\\x8a\\xa9\\x52\\x14\\xad\\x1c\\xff\\xf9\\xd5\\x08\\x5a\\x43\\x43\\x94\\x47\\x3b\\x84\\xb7\\x4b\\xe9\\xbf\\x2f\\x02\\x02\\xad\\x1e\\xe4\\x61\\x66\\x04\\xca\\x1d\\xd7\\x5f\\x4a\\x19\\x53\\x42\\xeb\\xbf\\x8f\\xc5\\x9f\\x3f\\x79\\x61\\x65\\x54\\xdc\\x7b\\xfd\\xd5\\x56\\xbe\\x43\\x72\\x21\\xc1\\x0b\\xfa\\xd3\\x9e\\x11\\x9e\\x06\\x04\\x5b\\xe5\\xfe\\xd6\\x83\\xd3\\x53\\x4f\\xb6\\xcf\\xed\\x33\\x89\\x1c\\x96\\xf9\\xc3\\x30\\xf2\\x8b\\x68\\x4f\\x8f\\xba\\xd4\\x7c\\x01\\x41\\x8e\\xab\\x6c\\xee\\xcc\\x2e\\xd7\\x77\\xf4\\xc2\\x18\\xa2\\x7a\\xc2\\x25\\x82\\x39\\x23\\x15\\xc5\\x3a\\xa7\\x30\\x9e\\xc5\\x4c\\x61\\x75\\x23\\x6e\\x44\\x24\\xdc\\x97\\x84\\x65\\xab\\x62\\x8d\\x95\\x44\\xb0\\xbe\\x84\\x10\\x3e\\xb5\\x6f\\x1b\\xaf\\xe5\\xe5\\xea\\xed\\x04\\xc9\\x8b\\xfe\\x2e\\x8a\\x24\\x18\\xc6\\xc5\\x2a\\x61\\xea\\xce\\x85\\x23\\x6b\\x66\\xc7\\xb3\\xb8\\x70\\x7e\\xd5\\x56\\x41\\xdd\\x9d\\x5d\\xa9\\x7c\\x99\\xc1\\x1c\\xbe\\xb9\\xaa\\x2d\\xb1\\x47\\x82\\x0d\\xc7\\x24\\x80\\x0a\\x9d\\x80\\xf5\\x05\\xfa\\x5a\\xf2\\x09\\x21\\xca\\xd2\\x43\\x56\\x83\\xbb\\x4f\\xc6\\x0b\\xdd\\xd4\\x75\\xf8\\x63\\xe2\\xf5\\x95\\x0d\\x23\\x63\\x99\\xd8\\xd7\\x5b\\x40\\x4b\\x39\\x4a\\x54\\x67\\x37\\xf9\\x3a\\x62\\x40\\x87\\x00\\xb3\\xab\\x3c\\x1e\\x92\\x2b\\x1a\\x85\\x9a\\x29\\x15\\xc2\\xd3\\x53\\x68\\x81\\x5c\\xd4\\x5b\\x85\\xb2\\xac\\x08\\x31\\x21\\xff\\x00\\x0f\\x05\\x0d\\xcd\\xf4\\x15\\xe5\\x27\\x5a\\x5c\\x42\\xda\\xe3\\xb1\\x54\\x00\\xf3\\xdd\\xaf\\x93\\x39\\xf2\\x0a\\x12\\x61\\xa8\\x8c\\xd9\\x02\\x05\\x63\\x97\\x63\\x21\\x11\\x52\\xdf\\x41\\x4a\\x9a\\x6a\\x62\\x18\\xf5\\x6b\\x35\\xa2\\xde\\x9e\\x84\\x82\\x44\\x9f\\x6d\\xa7\\x7c\\x9e\\x3d\\x4a\\xf0\\x49\\x30\\x15\\xa7\\x26\\x21\\x7f\\x82\\xac\\x58\\x95\\x4f\\xe3\\xe2\\xe3\\x44\\x40\\x35\\x6b\\x11\\x2e\\x06\\xa6\\xf6\\x71\\xfb\\x5a\\x6e\\xf4\\x61\\x9a\\x6e\\xa7\\xb4\\xe0\\x4d\\xb3\\x75\\x7f\\xb6\\x64\\xc3\\x96\\xb3\\x41\\xca\\x89\\x00\\x1d\\xc1\\x60\\x4b\\x51\\xfa\\x91\\x53\\xf9\\x13\\x0c\\x10\\x20\\xff\\x88\\x90\\x92\\x87\\x82\\x3a\\xb3\\x91\\x5c\\xcc\\x85\\xc4\\xe3\\x5d\\xf6\\xc2\\xf8\\xe6\\xf9\\x02\\xbe\\x82\\xba\\x21\\x29\\x7f\\xd3\\x83\\x5a\\xff\\x5c\\xe0\\x2f\\x3c\\x07\\xdc\\x09\\x3f\\xcb\\x1a\\xba\\x26\\xe0\\x6d\\xfe\\x6f\\x02\\xdf\\x79\\x29\\x1a\\xac\\xa0\\x69\\xec\\xab\\x93\\x81\\x40\\x4c\\x9c\\x3e\\xa1\\xad\\x40\\x9a\\xdf\\x29\\x2a\\x91\\xe3\\xa5\\x82\\xd5\\xa7\\xb6\\x8f\\xfb\\xe1\\x0a\\x03\\x05\\x24\\x8e\\x09\\x67\\xe6\\xdf\\x37\\x2f\\x28\\x1b\\xd1\\x92\\xe1\\x39\\x97\\x9c\\x98\\x66\\xca\\x8f\\xe1\\xe1\\x0e\\x06\\x16\\xdc\\x2d\\x4f\\x85\\xe1\\x19\\xe0\\xcb\\x4b\\xfe\\x8c\\xc3\\x1d\\x9f\\x5c\\x01\\x8b\\x65\\x40\\x85\\x24\\x00\\x0a\\x30\\x16\\xa2\\x3d\\x99\\x14\\xd5\\x7e\\x95\\x55\\x76\\xe2\\x66\\x0b\\x0e\\x0d\\x96\\xc8\\x49\\x5a\\x12\\xc3\\xd7\\x31\\x22\\xd2\\x00\\xb0\\xf0\\xe5\\xeb\\xd4\\x46\\x56\\x2b\\x08\\xf4\\x79\\x34\\xab\\x49\\x9a\\x96\\x99\\x1d\\xcf\\x99\\xc9\\x6a\\x62\\x88\\x07\\x39\\x84\\x5d\\x29\\x82\\x01\\x50\\x55\\x3e\\xae\\x9b\\xe0\\xbb\\x41\\xd5\\x3d\\x3a\\xf0\\x1d\\x98\\x67\\xbb\\x47\\x32\\xc9\\x0b\\xf6\\xe1\\x37\\x31\\x6e\\x3b\\x1e\\xdc\\xc2\\x09\\xa8\\xa0\\x9f\\xb0\\x62\\xa6\\xef\\x05\\xf3\\x7e\\x57\\xf2\\xc5\\xd1\\xd0\\xca\\xba\\xf0\\x7a\\x8e\\xd7\\xd4\\x14\\x55\\x40\\x7b\\x09\\x67\\x54\\x18\\x0a\\xa9\\x6d\\x3d\\x96\\x59\\x19\\x45\\xdd\\x7a\\x10\\x40\\xa2\\xde\\x60\\xd8\\xe1\\xc0\\x54\\xf7\\x85\\x46\\x52\\xb7\\x32\\xe7\\xa8\\xf5\\xb6\\x47\\x4c\\x3b\\xaa\\x18\\x40\\xfb\\xe8\\x1b\\x1e\\x6b\\x54\\xe2\\x01\\xef\\x0b\\xc8\\xd0\\xf2\\x13\\xd7\\xce\\xc1\\xd8\\x24\\xd2\\x22\\x09\\xac\\x72\\x52\\x5a\\x64\\xb9\\x03\\xe7\\x73\\xb8\\x3f\\x1b\\x68\\xf6\\x40\\x27\\x9f\\x15\\x05\\x3d\\x21\\xec\\x15\\xce\\x2f\\xf7\\x59\\x22\\x17\\x6b\\x75\\x84\\xa1\\x6b\\xf1\\xa1\\xf0\\xd6\\x36\\xb7\\x94\\x2a\\x3d\\x61\\x86\\x2f\\x6f\\xd1\\x30\\x99\\x72\\xd3\\x14\\x1e\\xb7\\x69\\x31\\x4c\\xa9\\x75\\xd0\\x20\\xbf\\x02\\xbf\\xdd\\xf1\\x7d\\x14\\xb6\\x0e\\xb7\\x86\\xbf\\x9f\\x55\\x98\\x9f\\xe4\\x73\\x32\\x0d\\x44\\x29\\x67\\x7e\\x30\\x1c\\x68\\x26\\x33\\xf8\\x13\\xff\\x26\\xc0\\xa3\\xda\\x92\\xf6\\xd0\\x68\\x06\\x16\\x10\\x5b\\x04\\x25\\xaf\\x33\\x8c\\x2e\\xa6\\x15\\x3b\\xdd\\x52\\x16\\xfa\\xe2\\xaf\\xe4\\x61\\xe9\\x24\\x9c\\x05\\xe3\\x2f\\x76\\xad\\x7c\\x42\\x9d\\x92\\x53\\x4b\\x68\\x6d\\xd1\"},\n{{0x04,0x9d,0xac,0x3c,0x97,0x7d,0x9d,0xf5,0x03,0x49,0x6b,0x43,0xd7,0x6e,0x55,0x40,0xe3,0x15,0x00,0x1a,0xd5,0x7f,0x15,0xea,0x9f,0x08,0x70,0xca,0xd2,0xd4,0xf9,0xe9,},{0xfc,0x6f,0x4b,0x7e,0xb3,0x9a,0x71,0x16,0x80,0xf9,0x66,0xd4,0x68,0xa6,0x1a,0xbb,0x13,0xa9,0xb6,0x44,0x9b,0xb9,0x9f,0xda,0x3d,0x12,0xce,0x1b,0x50,0x6d,0x1b,0x4b,},{0x75,0x32,0xd1,0xa6,0x1a,0x98,0x1f,0x30,0x3d,0x7c,0x24,0x54,0x35,0x4f,0x99,0x54,0x0c,0xd4,0x84,0xcd,0xe9,0xab,0x33,0x7d,0x6f,0x7b,0x51,0xf1,0x79,0x22,0x0f,0x7f,0xa2,0x07,0x34,0x76,0xb4,0x1c,0x71,0x52,0x9f,0x98,0x36,0xdb,0x6b,0x1d,0x0f,0x5a,0x48,0x2b,0xbb,0x4c,0x68,0x36,0x61,0x76,0xed,0x14,0xd4,0xd8,0xee,0xfa,0xde,0x0d,},\"\\x7f\\x31\\xe3\\x46\\xf6\\x8d\\xa7\\x37\\x16\\xaa\\xcb\\x16\\xee\\xa1\\x9b\\xb2\\x41\\x42\\xdc\\x28\\x3e\\x72\\x63\\xff\\xc3\\xf7\\x04\\xa2\\x2a\\xe5\\x27\\x5a\\x0e\\xf9\\x5f\\x06\\x69\\xba\\xe5\\xa5\\x4c\\x7f\\xeb\\x84\\xbc\\x74\\x87\\x3c\\xca\\x0f\\x33\\x5d\\x6c\\xff\\x3d\\x8b\\x4a\\x20\\x05\\x6c\\x64\\xf5\\xe8\\x82\\xcb\\xbb\\xd2\\xac\\x74\\x20\\x76\\x76\\x46\\x7e\\x54\\x66\\xdd\\xd5\\x6a\\xed\\xf5\\x6e\\x09\\x7c\\x7f\\x59\\xd9\\x45\\x91\\x5e\\xb0\\xeb\\xd0\\xc3\\xc8\\x3d\\x48\\x88\\x8d\\x3e\\x9e\\xde\\x51\\xad\\x2d\\xd8\\xa0\\xee\\x1e\\xab\\x4c\\xf8\\x7f\\xfa\\x78\\x63\\x5a\\xfc\\x4d\\x6e\\xf3\\xe8\\x7d\\xda\\x3b\\x65\\x56\\x5c\\x29\\x85\\xa4\\xad\\x0a\\xcf\\xdf\\xb8\\x1c\\xb0\\xe6\\x1c\\x67\\x82\\x6a\\x6e\\xa0\\xbe\\xd4\\xc0\\x8a\\xa1\\xa5\\x41\\xde\\x60\\x45\\x87\\x04\\xac\\x21\\xca\\x12\\xf1\\xc8\\x11\\x8b\\xb3\\x09\\x2c\\x35\\xa4\\x0c\\x92\\x1e\\x68\\x45\\x64\\x56\\x2c\\x2c\\x10\\x49\\xdc\\xdc\\x2b\\x8d\\x6a\\x97\\xe3\\x56\\x7d\\x35\\x6b\\xff\\xb5\\x69\\x2a\\x41\\xd8\\x9d\\xdd\\xa0\\xec\\x35\\x52\\x15\\x2a\\x27\\x57\\x7f\\x1c\\xce\\x57\\xd0\\x09\\x86\\xdc\\xa7\\x7e\\xdf\\x5e\\x25\\x18\\x15\\x82\\x00\\xad\\xf6\\x90\\xaf\\xfb\\x31\\xaa\\xf2\\xb5\\x74\\x83\\x68\\x39\\x44\\x09\\x99\\xf1\\x57\\x91\\xce\\xa8\\x53\\x42\\xac\\x94\\xa9\\x6c\\x7a\\xf7\\xa1\\x9e\\x49\\x43\\x10\\xae\\x26\\x67\\x5f\\x43\\xc3\\x52\\x58\\xe8\\x5b\\x68\\x40\\xb9\\x9c\\x6b\\x09\\xcf\\xa5\\x8d\\x19\\xf1\\xe4\\x3a\\x77\\xe3\\x97\\xb0\\x8c\\x0d\\xb1\\x83\\x0b\\xca\\x67\\xb3\\x9e\\xcd\\x87\\x52\\xda\\x61\\x1e\\x08\\x32\\xc6\\xca\\xe7\\xbb\\x8c\\xe7\\x4a\\x82\\xe7\\xe7\\x33\\x0b\\xe5\\x06\\x2e\\xd0\\x5a\\xa5\\xc8\\x44\\x57\\xb0\\x07\\xfb\\x5c\\xcd\\xc2\\x0a\\x55\\xd5\\x4d\\x8e\\x04\\x09\\xc8\\xbd\\x83\\x88\\x3d\\x2e\\x02\\x9d\\xff\\x26\\xea\\x5d\\xb2\\x75\\xdc\\xe0\\x99\\xe4\\x18\\x65\\x9a\\x04\\x00\\xf1\\x3b\\xe9\\xff\\xdc\\x14\\xe7\\xd6\\x45\\xa9\\x46\\x77\\xca\\x84\\x69\\x70\\xb7\\xe6\\xac\\x52\\x7f\\xa0\\x09\\xa3\\x59\\x45\\x4b\\x3c\\x49\\x36\\x49\\x05\\x18\\x9f\\xb4\\x9c\\x9b\\xac\\xb6\\x50\\xc0\\x3c\\xd8\\x28\\x75\\x89\\x4e\\x35\\x46\\xba\\x03\\xc3\\x2e\\x33\\x6f\\xc6\\x51\\x6a\\x87\\x67\\x6c\\x50\\xd5\\xb8\\x0b\\x30\\x54\\x27\\x3b\\x15\\x7c\\x5d\\x76\\x75\\x14\\xe5\\x45\\x74\\xb8\\xa1\\x01\\x98\\x5a\\x8e\\x96\\x7e\\x95\\xda\\x8f\\x92\\x98\\x00\\x26\\x0e\\x08\\x14\\x8b\\xee\\xe2\\xd7\\x78\\x1e\\x9e\\x85\\xd4\\x63\\xa9\\x4f\\xfe\\xfd\\xbb\\x75\\xc2\\x8f\\xa8\\x89\\x80\\x15\\x68\\x09\\x99\\x42\\x9c\\xee\\x79\\x8b\\x3f\\xd2\\xd9\\x67\\x37\\x86\\x8a\\x26\\x3f\\xba\\x9f\\xb6\\xf4\\xaa\\xd5\\x6a\\x15\\xc6\\x41\\x2f\\xf8\\x5e\\x7d\\x37\\x52\\x10\\x2d\\xaa\\xf2\\x5e\\x74\\x5f\\xa5\\xf6\\xf1\\x74\\xa2\\x31\\xfc\\xce\\x86\\x24\\xdd\\x70\\x85\\x6f\\x9b\\xab\\xcc\\x20\\x91\\x44\\xff\\x68\\x64\\x64\\x8d\\xea\\x0d\\x68\\x84\\x56\\x6a\\x4c\\x39\\x14\\x78\\x05\\xbe\\x08\\x4e\\x47\\x40\\xbc\\x50\\x93\\x09\\xbc\\xb1\\x42\\x96\\x4b\\xb0\\xcf\\xcf\\x67\\x26\\xa0\\xe0\\x4b\\xbf\\x32\\xae\\x68\\x34\\x73\\x2b\\xda\\x03\\x84\\xce\\xa8\\xf4\\xa4\\x84\\x9b\\xba\\x0d\\x18\\x64\\x6c\\x1c\\x34\\x47\\x18\\x96\\xb5\\xbe\\xf1\\x49\\xf8\\xca\\xb9\\xec\\x83\\x72\\x2b\\x0f\\xb2\\x09\\xef\\xe8\\xa0\\x4c\\x4a\\x23\\x5d\\xc8\\xdd\\xb2\\x0a\\xcd\\x92\\x76\\x5a\\xfb\\xf3\\x05\\x87\\x40\\xea\\x70\\xb9\\xc1\\x0d\\x9c\\x5a\\xef\\x86\\x06\\x29\\x8f\\xe4\\x15\\x15\\x93\\xb2\\x1f\\x79\\x7d\\x92\\xae\\x9f\\x1e\\x08\\x81\\xb0\\xd2\\x71\\xb0\\xd5\\xb1\\x0c\\x6e\\xd8\\x3c\\x34\\x9e\\xc2\\x47\\x3f\\xbf\\x2f\\xf7\\x80\\xdc\\xd0\\x76\\xd8\\xcf\\x0a\\xea\\xfa\\x71\\xfe\\x2b\\x8c\\x51\\x28\\x01\\x5f\\x8f\\xbb\\xcf\\xec\\xd5\\x28\\x1c\\xd5\\xea\\xcb\\x6f\\xe9\\xac\\x6e\\xaa\\x6e\\x47\\xd6\\x67\\xb9\\xad\\x4b\\x7e\\x41\\x1e\\x6c\\xb7\\x46\\x3d\\x56\\x76\\x07\\xaf\\xbf\\xd0\\x41\\x8c\\x4e\\xb0\\x6a\\xfe\\x84\\x7f\\x5e\\x40\\xb4\\x99\\x44\\x38\\x28\\xd5\\xa2\\x73\\xa4\\xa8\\x7e\\x46\\xde\\xf2\\x1a\\x91\\x9d\\x73\\x86\\x3a\\xf0\\x05\\x4a\\x09\\x9e\\x3a\\xdc\\x54\\x50\\xb8\\xe3\\x2f\\x51\\xea\\x52\\xc5\\x99\\xa4\\xa2\\xa3\\x53\\x51\\x78\\x8a\\xf7\\xcb\\x71\\xe5\\xc4\\x4b\\xcb\\x8d\\xf5\\x4a\\x60\\x1e\\x6e\\xc2\\xc1\\x82\\x8b\\x48\\xc4\\xb1\\xae\\x44\\x63\\x10\\x6f\\x10\\xef\\xa5\\xca\\xf3\\x09\\x1a\\xbf\\x99\\xaa\\xba\\x52\\x52\\xf4\\x84\\xd3\\xbb\\xc6\\x2b\\xfa\\x6b\\x2a\\x80\\x6d\\x23\\xc6\\x33\\x1a\\x62\\xfc\\x46\\xbc\\x62\\x76\\x79\\xe7\\x3e\\xc8\\x2d\\xcc\\x08\\xf7\\x91\\x43\\xf4\\xb7\\x1e\\xcf\\x35\\x7e\\xa2\\xf0\\xd7\\x4e\\x6d\\x30\\x58\\xe6\\x06\\x04\\x3f\\x6e\\x8f\\xed\\x70\\x42\\x82\\xc1\\x6b\\x1f\\x98\\x8f\\xfa\\x36\\x5c\\xfa\\xe9\\xa3\\xcf\\x79\\x2e\\x0c\\x5b\\xaa\\xd7\\x0c\\xa7\\xe2\\x57\\x76\\x01\\x8b\\x5e\\x7f\\x0e\\x95\\x44\\xe1\\xd7\\x3f\\x3e\\x5d\\x1e\\x41\\x6a\\x5e\\x50\\xfb\\xed\\x29\\x6d\\xc1\\xbf\\x4b\\x29\\xa3\\xfb\\xe3\\x2e\\xfb\\xd7\\xe9\\x9c\\x83\\x01\\x5d\\x27\\xf5\\x35\\xad\\xec\\xf1\\x75\\xfc\\x36\\xc1\\xea\\x4f\\x44\\x23\\xb3\\x6d\\xcd\\xc0\\x54\\xba\\x99\\x32\\x78\\xe8\\x5a\\xc3\\x62\\x2d\\x43\\x5f\\x52\\x37\\xba\\x61\\xb4\\x9a\"},\n{{0xf0,0x7d,0x61,0xb5,0xca,0x1c,0x27,0x00,0xcb,0x50,0xf9,0x00,0xc2,0x6b,0x7c,0x28,0xf6,0xc6,0x94,0x08,0x08,0xc7,0xba,0xff,0xf7,0x4f,0xca,0x4b,0x11,0xf4,0x25,0xd4,},{0xeb,0x24,0x3d,0xfa,0xcc,0x2d,0xc6,0x43,0x57,0x76,0xd5,0x54,0xec,0xed,0x8b,0xf9,0x23,0x90,0x60,0x4b,0x35,0x55,0x7c,0xda,0x51,0xfd,0x20,0x3e,0xdd,0xb4,0x93,0xfa,},{0xc1,0x9b,0x53,0x2b,0x82,0x48,0x56,0x39,0x32,0x63,0x97,0x01,0xbf,0x15,0xbc,0x01,0x5f,0xae,0xbb,0x17,0xbb,0x98,0xd8,0x71,0x61,0x6e,0x10,0x48,0xd6,0x4c,0xa5,0xf9,0x55,0xf5,0x58,0xf6,0x3b,0x53,0x53,0xa1,0x57,0x6f,0xa1,0xac,0xae,0xf3,0x9b,0xcb,0xc9,0x02,0x17,0x56,0xdf,0x5d,0x1a,0xb3,0xbc,0x74,0x1a,0xcc,0xf9,0x05,0x9b,0x04,},\"\\xc1\\xc6\\x78\\x43\\xd6\\x9a\\x0e\\x62\\xe7\\xbf\\x71\\xf9\\x02\\x06\\xa3\\xd5\\x59\\x5c\\xa3\\xc4\\x82\\xaa\\xa7\\x67\\xe9\\x31\\xb0\\xd6\\xc2\\xf4\\x75\\x2a\\xb8\\x69\\x91\\xf0\\x35\\x83\\xbb\\x13\\x8e\\x9f\\x72\\xfa\\xb5\\x8f\\xd6\\x02\\xa4\\xb6\\xb2\\x96\\x02\\xcf\\x89\\x14\\x08\\xaf\\x5a\\x1b\\xfd\\x33\\x98\\xc0\\x17\\x8c\\x44\\x14\\x61\\xe3\\xf4\\x9b\\xc8\\x1d\\x64\\xc0\\xd9\\x7f\\x5d\\xed\\x69\\x2c\\x75\\xd4\\xd6\\x4d\\xac\\x5d\\x80\\xd6\\x3b\\xd4\\xdc\\x52\\x10\\xc1\\xd9\\x35\\x0b\\x14\\x2b\\xa6\\xe7\\x68\\xf1\\x50\\x80\\x7a\\xb8\\xa8\\x6c\\xac\\xdb\\x59\\xd8\\x4d\\xdf\\x66\\x0b\\xe5\\x62\\x03\\xc0\\x14\\xfb\\xa1\\xe0\\xdc\\x16\\xfa\\x6d\\x32\\x69\\x4e\\x14\\xb1\\x28\\xed\\xd1\\xf6\\xc6\\xab\\x44\\x5a\\x3a\\xd3\\x41\\x74\\xfa\\x9e\\x4b\\x01\\xf2\\x5b\\x1d\\x5e\\x6e\\xb7\\x69\\x83\\xb4\\x29\\x5c\\xe4\\x91\\x4d\\x3a\\xe4\\x8c\\x70\\x4a\\x30\\xe5\\x54\\xfc\\x1f\\x86\\x8b\\x62\\x72\\xef\\xf0\\x6d\\xa2\\x4b\\xfe\\x17\\xe4\\xe0\\xf0\\xfa\\x46\\xbb\\x08\\xff\\xb9\\x07\\xcb\\x61\\xbe\\xbe\\x52\\xdf\\x31\\x1a\\x64\\xcb\\x57\\x8b\\x30\\xfd\\x62\\x7d\\xf1\\x12\\x21\\xae\\x40\\x03\\xa0\\xb0\\xc6\\x8e\\x3c\\x6f\\x95\\xa2\\x1c\\x85\\x00\\xd4\\x1b\\x2c\\x58\\x9c\\xc4\\x6a\\x13\\x9c\\xac\\xff\\x57\\xdc\\xf0\\x07\\x59\\xf5\\x2e\\x9c\\xa3\\xda\\xbd\\xb1\\x78\\x8a\\xb6\\xb3\\x8a\\x50\\x48\\xf5\\x8e\\x08\\xe0\\x5c\\x39\\x4f\\x9d\\x3c\\x72\\x11\\x3d\\x45\\x2b\\x70\\x84\\xc5\\x19\\xf8\\x6c\\x16\\x89\\xff\\xdb\\xae\\x50\\x6e\\xd8\\x45\\x05\\x22\\xcb\\xe4\\x3d\\xe2\\x7a\\xa3\\xbf\\xdd\\x92\\xa9\\x1b\\x71\\xe5\\x2a\\x3c\\xbf\\x77\\xc1\\xbd\\x28\\x93\\xea\\xbd\\x40\\x7a\\x57\\xfe\\x5e\\x14\\x68\\x73\\xbf\\xb2\\x04\\x3f\\x4a\\x61\\x47\\xdf\\x08\\x3e\\x54\\xa2\\x20\\x8d\\x19\\x25\\x81\\x3f\\xa4\\x04\\xe4\\xc4\\x74\\x06\\xe7\\x72\\x86\\x43\\xeb\\xfb\\x0b\\x10\\x14\\x2f\\x90\\x9e\\xf8\\x56\\xfd\\x3a\\x91\\x6b\\xc0\\x85\\x15\\x43\\xb8\\x2a\\x55\\xf8\\xcd\\x52\\x9b\\xd2\\x1d\\x9e\\x29\\x09\\xd6\\xd7\\xe7\\x7b\\xdc\\xea\\x46\\x73\\xe5\\x45\\xff\\x4a\\x67\\xfa\\x37\\xd6\\x5f\\x1f\\x63\\xf1\\x1d\\x5d\\x0d\\x55\\x97\\x4a\\x30\\xab\\xe1\\x88\\x33\\x5d\\xb5\\xdc\\xbd\\x35\\x66\\x58\\xf9\\xb7\\x76\\x82\\xd9\\x6d\\xab\\xb2\\x58\\xea\\x95\\x95\\x1a\\x05\\x59\\xae\\xa4\\x06\\x4d\\x5e\\xa1\\x68\\x05\\x01\\xdc\\xb4\\x22\\x8f\\x2c\\x95\\x6f\\x81\\xd2\\x10\\x11\\x44\\xaf\\x74\\xc7\\x16\\xbc\\x8b\\xf4\\x29\\x6d\\xc3\\xb8\\x31\\x72\\x5c\\xc1\\x7d\\x3b\\xfd\\x90\\x66\\xa2\\x99\\x53\\xb2\\xec\\xd7\\x50\\x59\\x43\\x5b\\x49\\xa2\\x5a\\xc5\\x25\\xb4\\xfb\\xab\\x17\\x79\\x02\\x2d\\xfb\\x6d\\xe5\\x25\\x14\\x9d\\xcd\\x90\\x2a\\xc8\\xa7\\xe2\\x1f\\x34\\x4f\\x5f\\x01\\x01\\x48\\x06\\x92\\xd6\\x16\\x08\\x95\\x2c\\x71\\x41\\x3e\\x30\\x03\\x79\\x45\\xe2\\x06\\xc5\\xee\\xad\\xfc\\x3e\\xdc\\x4b\\xae\\x0d\\x79\\x6c\\xa0\\xc5\\xf5\\x6d\\x6f\\xfb\\x3f\\x09\\x69\\xdf\\x9d\\xf8\\xa7\\x94\\xf5\\xdc\\x83\\xa3\\xb2\\xf5\\xc3\\xab\\x36\\xbb\\x90\\x1b\\xcc\\x31\\x55\\x1c\\x55\\x0c\\x63\\xfa\\x41\\xd6\\xa8\\xd5\\x7b\\xdb\\x9b\\x5c\\x65\\xbc\\x61\\x0c\\x3a\\x98\\x97\\x52\\xab\\x28\\xa0\\x15\\xe7\\xc2\\xf6\\xb2\\xfb\\xf1\\x99\\xa7\\x6b\\x97\\x50\\xc0\\xd3\\xd5\\x92\\x11\\x9c\\x8b\\x40\\x22\\xfa\\x45\\xba\\xde\\x2f\\xbb\\x41\\x43\\x26\\x79\\xb5\\x2a\\xcb\\x46\\x08\\xa9\\x5c\\x34\\xaa\\x40\\xbf\\xfe\\xc1\\x0b\\xc9\\x8f\\x47\\x29\\xdf\\xcc\\xb6\\x50\\xb2\\xa0\\x52\\xdf\\xb0\\x68\\x95\\x9e\\x64\\x8a\\x92\\xd5\\xaa\\x4d\\xd2\\xd1\\x7d\\xde\\x67\\xcd\\xf2\\xe6\\x37\\x7a\\xf0\\xd4\\xae\\x37\\x96\\x07\\x38\\x9d\\x7e\\x35\\x96\\x44\\x1b\\x9f\\x42\\x22\\xcf\\xf6\\xaf\\x73\\xb3\\x30\\x02\\x70\\xce\\x54\\x80\\x0b\\xd9\\x34\\xa9\\x10\\x9a\\x02\\x56\\x3a\\xdc\\x56\\xae\\x46\\x58\\x44\\x51\\xcd\\xaf\\x4a\\x77\\x53\\x81\\x57\\xe5\\x87\\x0f\\x4a\\xe1\\x2d\\xbc\\x81\\x87\\x0f\\x5d\\xb4\\x1a\\x2c\\xb5\\x5e\\x00\\xdb\\x3d\\x22\\x31\\x62\\x8f\\x17\\x27\\xc3\\xac\\xb9\\x9e\\xd3\\xac\\xd8\\xb6\\x71\\x56\\xa8\\x00\\x5a\\x4c\\xc8\\xf3\\xd3\\x55\\x5b\\x79\\xa0\\x37\\x73\\xa9\\x31\\xf1\\x4e\\xeb\\xce\\x40\\xb9\\xfe\\x46\\xed\\xe5\\xda\\x08\\x81\\xfb\\x22\\x07\\x17\\xe4\\x18\\xe8\\xb5\\xa0\\xfe\\x5e\\x47\\x7e\\x72\\x85\\xc5\\x54\\xe8\\x59\\xe1\\x64\\x41\\x67\\x2b\\x48\\x99\\x34\\xa3\\xa9\\xee\\xb8\\x8d\\x78\\xfc\\xc5\\xc1\\xdb\\x2d\\x1f\\xbd\\xde\\x39\\x27\\x73\\xf6\\xc9\\x39\\x97\\x2e\\xe8\\xfa\\x31\\x89\\xf4\\xe9\\x87\\x2b\\x4a\\xbd\\xc8\\x3b\\x37\\x9c\\x0c\\x10\\xe8\\x18\\xdc\\xff\\x75\\xc8\\x3d\\x68\\x70\\x72\\x92\\x84\\xce\\xd4\\x1f\\x2f\\xf5\\x5a\\x87\\xc9\\x60\\xe6\\x3d\\x12\\x11\\xf0\\x80\\x71\\x29\\x3f\\x6a\\xc6\\x3f\\x9b\\xde\\xf3\\x8f\\xd5\\x91\\x9c\\xa9\\x0b\\x3f\\x5e\\x25\\xa6\\xc0\\xc6\\x64\\xc4\\xec\\xf8\\x31\\xc6\\x4e\\x2d\\x4c\\x6e\\x79\\x8a\\x98\\xa3\\xa0\\xf7\\xbe\\x7a\\x24\\x63\\xea\\xda\\xa6\\xa2\\xa3\\x48\\xf9\\xa4\\x94\\x71\\x71\\x23\\xcc\\x0a\\x28\\xc0\\xa5\\xea\\xe3\\xf5\\xb5\\x85\\xf2\\xcb\\x8c\\xb2\\x60\\xc2\\xc5\\x03\\xe4\\x15\\x78\\x57\\x3c\\xd9\\xb7\\xcb\\xa1\\x40\\x8d\\xca\\x9d\\x86\\x0a\\xe4\\xf8\\xc3\\xd3\\xf3\\x22\\xa4\\x5b\\x58\\xa2\\xc4\"},\n{{0x50,0x86,0x4a,0x75,0xaa,0x0c,0x69,0xb5,0x93,0x50,0x07,0x7c,0x20,0x4b,0x20,0x75,0x7f,0x2b,0x8b,0x68,0x55,0xc3,0x7e,0xd7,0x21,0xb4,0x9f,0x2a,0xc9,0x17,0xd6,0xb2,},{0xcf,0xf3,0xeb,0xd5,0xea,0x0c,0x8b,0x55,0x31,0xd9,0x21,0x1e,0x22,0x19,0xe4,0xcf,0xe5,0xde,0xd9,0x91,0xd8,0xec,0x42,0x4d,0xf5,0x4c,0xf5,0x3c,0x83,0x76,0xf9,0xbd,},{0x17,0x74,0x55,0xa7,0x16,0x94,0xf1,0x2b,0x76,0x2f,0xd1,0x7e,0x08,0xbd,0xf0,0x10,0xa7,0xfc,0x91,0xd1,0x91,0x41,0xd7,0xae,0x23,0x99,0xbd,0x24,0x1a,0x99,0x8a,0x6a,0x50,0xa9,0x72,0x2a,0xc1,0x23,0x2c,0x59,0xe4,0xe2,0xaa,0xa8,0x28,0x07,0x8b,0x2b,0x92,0xf4,0xa5,0x4c,0xdf,0x0e,0xfe,0xbb,0xa2,0xc1,0x6d,0xbe,0xaf,0x07,0x22,0x03,},\"\\xb3\\x65\\xf4\\x76\\xac\\x92\\xe7\\x60\\x12\\xa7\\xff\\xd8\\x78\\x2a\\xf1\\x5a\\x3f\\x5e\\xe1\\x47\\xf6\\x03\\xa3\\x67\\xad\\xf2\\xf9\\x72\\x46\\x13\\xe8\\x76\\x5b\\x03\\x7a\\xc0\\xeb\\x1f\\x67\\x37\\x36\\xe1\\x13\\x63\\xe3\\x52\\xed\\x5a\\xe9\\xeb\\x5a\\x67\\x12\\x5e\\xd8\\x18\\x90\\x03\\x42\\xae\\x93\\x37\\x1c\\x43\\x3b\\x91\\xf6\\x02\\x1d\\x4b\\xe2\\xa0\\x52\\xb0\\xda\\x43\\xb3\\x68\\x2e\\x7f\\x74\\x0a\\xe8\\x01\\xd0\\x54\\x10\\x57\\x85\\x8e\\xb0\\xc9\\xc2\\x8d\\x98\\xf0\\x3b\\x45\\xe1\\x28\\xaa\\xa3\\x42\\xc6\\xb6\\x02\\x77\\x67\\x92\\xaa\\x81\\x24\\x1c\\xad\\x06\\xf1\\x33\\x8f\\xa0\\xc7\\x17\\x57\\x18\\x0f\\x58\\x8c\\x83\\x01\\xd9\\x1c\\x27\\x67\\x9b\\x50\\x21\\xcd\\x75\\xd7\\xf6\\x17\\x1e\\xe9\\xf8\\xd5\\x6e\\x43\\x77\\x67\\x98\\x12\\xf6\\xec\\x5e\\xd4\\x65\\x38\\xca\\xed\\x50\\x0c\\x1d\\x15\\xf5\\xfc\\x86\\xea\\xf9\\xed\\x9c\\xf9\\xa0\\x60\\x6b\\x22\\x61\\x4f\\xaf\\x67\\x64\\x62\\x13\\x4e\\x3d\\xb3\\x58\\x23\\x32\\xb4\\x83\\xdf\\xa5\\x4c\\xa2\\x9a\\x5e\\xb0\\xd6\\xba\\xe3\\x38\\x0e\\x19\\xd0\\x60\\x11\\x34\\x53\\xf3\\x2b\\xba\\xb7\\xe1\\x18\\x62\\x7b\\x40\\xbc\\xab\\xf1\\x71\\x1b\\xcf\\xea\\xb8\\x95\\x7d\\xe3\\x39\\x43\\x6c\\x70\\x88\\xbb\\x88\\x31\\x01\\x53\\x9a\\x09\\xd3\\xbe\\xf0\\x88\\xfc\\x1f\\x84\\x07\\x64\\x03\\x6f\\xfb\\xb3\\x3d\\xec\\xd1\\x2a\\xac\\x57\\xfd\\x26\\xf8\\x48\\x23\\xe1\\x95\\x53\\xd4\\xd6\\x7e\\x00\\x0e\\x94\\x36\\xca\\x32\\x3d\\xe0\\x99\\xbc\\x1c\\xe7\\x5e\\xbf\\x5d\\xdc\\xcb\\x44\\x8c\\xd7\\xa2\\xe4\\xbb\\xd6\\xb3\\x2e\\x3f\\x20\\x24\\xf9\\x6c\\xc5\\xc7\\x15\\x2b\\x8b\\xe8\\xed\\x0b\\xd8\\xe4\\x36\\xd3\\x24\\xd1\\xce\\x1d\\xd3\\xcf\\xcc\\x45\\x2a\\x28\\xc7\\x3a\\x95\\xaf\\x84\\x82\\xaa\\x77\\x2a\\xe5\\x3d\\x5b\\xe1\\x29\\x2e\\x39\\xd1\\x71\\x6b\\x43\\x75\\x8f\\xe5\\x63\\xc8\\xaa\\x3b\\x74\\xbb\\xa5\\xc0\\x2d\\x04\\x77\\x8d\\x91\\xe3\\xd4\\x3d\\xcc\\x72\\xbb\\x7c\\x7b\\x04\\x3c\\x05\\xc8\\x74\\x5b\\x70\\x5e\\xe7\\x5b\\x5a\\x4e\\xc7\\xb9\\x5b\\x65\\x43\\x59\\xfb\\x5e\\x85\\x33\\x38\\x21\\x98\\x51\\xd4\\x0a\\x8a\\xfb\\xb4\\xf9\\x1e\\xcb\\xb4\\x1e\\xb8\\x15\\x34\\x19\\x6c\\xc0\\xcc\\x9d\\x3e\\xb7\\x14\\x39\\x6c\\xaf\\x04\\x5b\\x23\\x17\\x22\\xd4\\x48\\x65\\x03\\x64\\x04\\x19\\x98\\x84\\x80\\xa7\\x81\\x58\\x08\\xbe\\x97\\x42\\x87\\x37\\x2c\\xfc\\x48\\x99\\x65\\xaa\\xc5\\xb8\\x09\\x5c\\x63\\x75\\x81\\xeb\\x91\\x0f\\x90\\x55\\xcd\\x1c\\x0a\\x0a\\x3b\\x0b\\x33\\xac\\xa9\\x0f\\x7c\\x5b\\x8e\\x6e\\xf6\\x83\\xab\\xf0\\xce\\x53\\xae\\xba\\x51\\xbe\\xc4\\xfc\\x7b\\x42\\x7a\\x23\\x47\\x36\\x0f\\xca\\x86\\x36\\xd3\\xf1\\x46\\x92\\x84\\xf2\\x69\\xa9\\xab\\xf0\\xcb\\x1a\\x24\\x4a\\x15\\xd6\\xb4\\x04\\x65\\xe7\\x5c\\xf8\\x90\\x92\\x47\\x4a\\x8b\\xed\\xa0\\x33\\x39\\x1d\\xd3\\x11\\xc4\\x99\\x51\\x9a\\x08\\xc4\\xf0\\x34\\xe7\\x19\\x18\\xd7\\xca\\xd4\\x18\\x45\\x32\\x7c\\x89\\xe7\\xb1\\xe9\\x4a\\xfb\\x07\\x23\\x78\\x2c\\xe5\\xc5\\x53\\xef\\x36\\x79\\x1b\\xba\\x63\\xde\\x17\\xd7\\x46\\x49\\x18\\x94\\x01\\x2c\\xeb\\xd8\\x7b\\x18\\x37\\xa8\\x21\\xef\\x5c\\x62\\x4b\\xbc\\x84\\xcc\\x50\\x35\\xf5\\xe7\\x0c\\xd9\\xf2\\x1b\\x42\\x21\\x9a\\x2d\\xce\\x30\\xe0\\xe6\\x5c\\x25\\x0d\\x0d\\x19\\x4d\\x2b\\x52\\x48\\x6b\\x03\\xee\\x66\\x33\\x29\\x81\\xa5\\x22\\x51\\x74\\xdb\\x17\\xe5\\xa8\\xbb\\x4a\\x10\\xed\\x9c\\x8a\\x44\\x5c\\x41\\x44\\x2f\\x3b\\xcd\\xb6\\xb4\\xf4\\x9e\\x4e\\x1d\\xc8\\x76\\x61\\xa7\\xb6\\xe4\\x1f\\x35\\xf5\\x5d\\xd6\\x7b\\xd4\\xcb\\xc6\\xff\\x58\\xbf\\xbf\\xfa\\xff\\xd2\\xc3\\x82\\xfc\\xad\\x0c\\xae\\x8f\\x0d\\xf9\\xaf\\x6a\\xcf\\x09\\x40\\x00\\x76\\x18\\xa5\\x4a\\xee\\x31\\xd9\\x32\\xcb\\xd8\\xe8\\xb4\\x1c\\xa0\\x38\\x21\\xc4\\x28\\xa0\\xef\\x8e\\x58\\xd2\\x43\\x5e\\xec\\xd5\\x03\\xc5\\x4d\\xa9\\xc1\\x62\\x8f\\x3c\\x74\\x9b\\x77\\x05\\x19\\xf5\\x3b\\xf2\\xd5\\x7e\\xd7\\x12\\xd0\\x75\\xd3\\x73\\x37\\xb7\\x7a\\x2b\\x10\\xa7\\x2d\\x2d\\x59\\x0c\\x20\\xd5\\xce\\xc2\\xca\\xcc\\x6c\\x3a\\x8d\\xc1\\x13\\xe2\\xd1\\x6e\\xf2\\xd1\\xb3\\x90\\xed\\x96\\xe4\\x03\\x6a\\xcd\\x30\\x4e\\x0c\\x7c\\xef\\x9d\\x43\\x1f\\x88\\x21\\x8a\\xa1\\xf8\\x38\\x28\\xdd\\xa6\\x36\\xb9\\x4a\\xa7\\x61\\xc7\\x31\\x7e\\xcf\\x11\\x6c\\xbf\\xc6\\x11\\xe5\\xba\\x6d\\x94\\xc5\\x0e\\x99\\x46\\x93\\x02\\x3b\\xdf\\x2d\\x24\\x8e\\xd6\\x03\\xf8\\x5b\\xe7\\x3a\\x00\\x08\\xb7\\x5a\\xde\\xf9\\x51\\xdc\\xcf\\xa3\\x0e\\x42\\xe9\\xf5\\xbb\\x05\\x02\\x3a\\xde\\x79\\x75\\x06\\xcb\\xf9\\x0b\\xb6\\xdc\\xe4\\x3c\\xf3\\xa1\\xc3\\x14\\x1a\\x5c\\xc5\\xfd\\x9a\\x4f\\x3c\\xc5\\x57\\xb9\\x0e\\x18\\x04\\x9b\\x3c\\x13\\x0f\\x46\\x1e\\x4f\\x32\\x29\\x9f\\xa1\\xd1\\xcf\\x9c\\x7f\\x2e\\xa2\\x05\\x35\\x65\\xe8\\x16\\x0a\\x34\\x1c\\xdd\\xf9\\x9a\\xcd\\xdd\\x49\\x16\\x97\\xfa\\x70\\x51\\x24\\xab\\xda\\xb4\\x2a\\x5e\\x8f\\xcf\\x04\\x8d\\xd9\\xf1\\x79\\x38\\x4e\\xc9\\x2a\\x46\\x9a\\xeb\\x11\\xe8\\xbc\\x62\\xb6\\x9d\\xbc\\xfc\\xec\\x66\\x81\\x75\\x47\\x57\\xe4\\xc5\\xd0\\xfd\\xd9\\xb9\\xcf\\xda\\x49\\xaf\\x09\\xb8\\x3a\\x5a\\x4a\\x10\\xae\\xd9\\xa4\\xcf\\x7d\\xdf\\xa2\\x89\\x20\\x9d\\x47\\x5a\\xb3\\x31\\x8c\\xd4\\xb9\\x65\\xe0\\x07\\xdc\\xe1\"},\n{{0xe5,0x5f,0x22,0x0f,0xff,0x80,0x79,0x14,0x8b,0x25,0x41,0x89,0xbb,0x29,0x41,0x74,0xf8,0xe2,0xc5,0x75,0xe5,0x7f,0x39,0xd4,0xba,0xc8,0x16,0x5c,0x5e,0x56,0xe7,0x69,},{0x7f,0xd5,0x07,0xd0,0x3f,0xe1,0xd6,0xe3,0xf9,0x11,0xf0,0x59,0x59,0x7b,0x0e,0x29,0x2e,0xa0,0x96,0xf5,0xbc,0x85,0x18,0x52,0x91,0x6b,0xf1,0x21,0x7c,0xaf,0xdc,0x6c,},{0xc1,0x02,0x3a,0x70,0x68,0x74,0x3e,0xc4,0x66,0x8f,0x49,0x5e,0xb7,0xbd,0x4d,0xb5,0x81,0x29,0xc1,0x1e,0x58,0x29,0x9e,0xa8,0x7d,0x6f,0xac,0xd3,0x02,0xbf,0x29,0x6a,0x98,0xe2,0x98,0xfd,0xb4,0x8e,0xdd,0xf9,0xc4,0x4e,0x79,0xae,0x86,0x41,0xf7,0x34,0x50,0x3b,0xb8,0x3d,0xc0,0xb3,0x1f,0x61,0x0d,0xf1,0xd1,0xe9,0xd6,0x19,0xa7,0x05,},\"\\x1e\\x2c\\xe8\\xbf\\x0e\\xa7\\x87\\x5d\\xf2\\x85\\xb1\\xdb\\xd3\\x4b\\xbe\\x67\\x30\\x7f\\x2e\\x8a\\xc8\\xbc\\x14\\x2c\\x3b\\xa3\\x14\\xc1\\x64\\x2c\\x65\\xa2\\xd6\\x2e\\xb2\\xc7\\x83\\xf9\\x16\\x28\\x3c\\xa4\\xec\\x3e\\x53\\x6d\\x3e\\xeb\\x65\\xcf\\xdc\\xc0\\x54\\x9a\\xc4\\xf6\\xa4\\x5f\\x53\\x9a\\xc5\\xdf\\x79\\xa6\\xd5\\x76\\x82\\x19\\x73\\x9d\\x0c\\x9a\\x0c\\xdb\\xb3\\x12\\x42\\x29\\x6c\\x33\\x12\\xb7\\xed\\x56\\x00\\x43\\xf5\\x36\\xcd\\x1d\\xe9\\xa9\\xc2\\xb2\\x89\\x64\\x1a\\x1c\\x2d\\x84\\xf9\\xa6\\x8b\\x7c\\x03\\xb8\\xb8\\x56\\x7e\\x5d\\xc7\\x13\\x8c\\x2c\\xb9\\x67\\xc6\\x28\\xaa\\x25\\xb2\\xea\\xb4\\x34\\xd4\\x49\\x0b\\x23\\x50\\x74\\x09\\x71\\x7c\\xde\\x94\\xda\\x59\\xdc\\x1d\\xc2\\x5c\\x7b\\xe4\\x2a\\x8a\\xa0\\x2e\\xdc\\xf4\\xd9\\x95\\x36\\x8e\\x6b\\xa0\\xee\\x1f\\x95\\x36\\x00\\xdb\\x98\\xd2\\x2d\\xe0\\xf8\\xd2\\x57\\x02\\x0e\\x0a\\x40\\x6e\\xe1\\x66\\x9b\\xd5\\x27\\xb9\\xfe\\x1c\\x61\\x1f\\x9b\\xe5\\xa3\\xd7\\x52\\x8e\\x8b\\x61\\x51\\x67\\x0a\\x86\\x63\\xd2\\xed\\x1a\\x58\\xd3\\xe3\\x69\\xbb\\x72\\x2a\\x63\\x02\\xd7\\xc1\\x72\\xa1\\x9b\\xda\\xf3\\x57\\xee\\xdb\\x02\\x27\\x91\\x56\\xe3\\xb9\\x03\\x44\\x31\\xa7\\xd6\\x8a\\x39\\x52\\x8e\\xb4\\x02\\x35\\x87\\x57\\x3e\\xb8\\x8f\\x30\\xf9\\x4e\\x83\\x3e\\x8a\\x23\\xb9\\xd0\\xac\\x7b\\x5c\\xa8\\x78\\x24\\x59\\x6b\\xbb\\x0a\\x3d\\x0c\\xa1\\xb1\\x6a\\x68\\x78\\xfd\\xf7\\xe2\\xce\\xa3\\x4a\\x6f\\xfb\\x95\\xa9\\xff\\x4e\\x88\\x8a\\x97\\x59\\x37\\x35\\xb8\\x68\\xda\\x75\\xd8\\x70\\x7b\\xbf\\xdb\\x1d\\x93\\xeb\\x86\\xa5\\x1e\\x2d\\x21\\x5f\\x1d\\xd9\\xdc\\xf7\\x83\\x88\\x72\\x9a\\x3e\\xb0\\xf0\\x66\\xdd\\xc9\\x41\\xe9\\x50\\xc9\\x21\\x27\\x19\\x8b\\xce\\x63\\xa5\\x48\\x68\\xd9\\x97\\x02\\x95\\x72\\xff\\xa6\\xf6\\xfe\\xa1\\xd3\\xa6\\x91\\x64\\xc9\\x99\\x69\\x53\\xdc\\x8b\\x6f\\x9d\\xad\\x06\\x35\\xc9\\xb0\\x81\\xf5\\x5f\\x98\\x33\\x40\\xf0\\x81\\x4b\\xf5\\x47\\x08\\x03\\x09\\x0e\\x79\\x97\\xf7\\xab\\x79\\x6c\\x2b\\x15\\xad\\xaf\\x40\\x21\\xd6\\x7c\\xff\\xaf\\x6e\\x1e\\xf6\\x28\\x67\\x50\\x39\\x45\\xc2\\x1a\\x32\\x96\\x64\\xe0\\x8a\\x95\\xa4\\x15\\x82\\x30\\x0d\\xa9\\xbe\\xd2\\x08\\x44\\x4c\\xe6\\xaa\\x12\\xb3\\xf8\\x67\\x79\\x5c\\x6e\\xe4\\xc4\\xc9\\x25\\x70\\x18\\x62\\x73\\x61\\x29\\x3b\\xd5\\x27\\x82\\x1a\\x29\\xa3\\x39\\xb4\\x04\\xa2\\xda\\x4b\\xd9\\x94\\x4f\\x87\\x70\\x40\\x79\\x8b\\xb5\\x4a\\xbd\\x2d\\x76\\xcb\\xb1\\x8d\\xf4\\x29\\x7f\\x4c\\xe3\\x33\\x7f\\x64\\xd2\\x05\\x80\\xaa\\x64\\xbd\\xec\\xac\\x37\\x6a\\x6a\\x4f\\xf7\\x4d\\x01\\x44\\xb2\\xfe\\x74\\xce\\xf8\\x2d\\x50\\xa5\\xe6\\xbd\\xd7\\x99\\xe5\\x5f\\xf6\\x96\\x62\\xba\\xc5\\x37\\xad\\xcb\\x68\\x81\\x22\\x8c\\xb6\\x37\\x04\\x50\\x0c\\x14\\x3a\\x4f\\x4d\\x1d\\xb2\\x8d\\x45\\x56\\xbe\\xe6\\x04\\xa3\\x99\\xff\\xd2\\x06\\x54\\x65\\x97\\xde\\xe9\\x22\\x52\\x54\\x7f\\x6c\\x65\\x7f\\x36\\x84\\x1a\\x87\\xd5\\x65\\xf6\\x55\\x27\\x16\\xc2\\x5a\\x21\\x15\\x14\\x77\\xbe\\xe9\\xef\\x96\\x18\\x55\\xfb\\x1a\\xf2\\xda\\x80\\x68\\xf2\\x8c\\xe9\\xff\\x70\\xd5\\x25\\x2c\\x7a\\x63\\xa2\\xe1\\x4d\\xed\\x6b\\x89\\x77\\xb1\\xd7\\x69\\x1a\\x77\\xed\\x2e\\x57\\xd2\\x2f\\xf2\\xe1\\xfc\\x4c\\xdb\\xce\\xb5\\xe8\\x05\\x85\\x8d\\x90\\x38\\x96\\xea\\x67\\x07\\xe4\\x8b\\x34\\x5f\\x60\\xe2\\x81\\x8b\\x2f\\xce\\xc4\\xdb\\xa4\\x8c\\xae\\xa9\\xef\\xa3\\x82\\x79\\xfb\\x83\\xd5\\xb0\\xf4\\x6a\\x45\\xe4\\x2c\\x41\\x76\\x5d\\x01\\x71\\xba\\xac\\xd8\\xd6\\xdd\\xa7\\x99\\x13\\x14\\xb3\\x4e\\x15\\xfd\\x36\\x12\\x7c\\x46\\x7d\\x1d\\xe0\\x1c\\x01\\xa3\\xa7\\x8a\\x8c\\x1b\\x10\\x3b\\xee\\x17\\xa7\\xa0\\xb7\\xac\\x55\\x76\\xfd\\xc2\\x26\\xdd\\x24\\x59\\x77\\x31\\x46\\xcf\\x38\\x26\\x14\\x17\\xca\\x19\\x13\\x5d\\xbd\\xa9\\xbd\\xbe\\x54\\xcd\\x17\\xaa\\x7d\\xdd\\x38\\xfd\\xca\\xc2\\xab\\xa3\\x96\\xb3\\x65\\xce\\xae\\x98\\x91\\x9f\\x6c\\x51\\x77\\xfc\\x58\\x3f\\x5b\\xee\\x3f\\x48\\x70\\x49\\x14\\x30\\x6a\\xa1\\x9e\\xe9\\x0e\\x3f\\xd0\\xde\\x55\\x91\\xc6\\x69\\xff\\x35\\xab\\x16\\xfe\\xf3\\x8d\\xee\\x18\\x7b\\xae\\x1e\\x5a\\xaa\\x56\\x6d\\xf1\\x05\\x44\\xb7\\xd6\\xd4\\xeb\\x00\\xda\\x7e\\xbe\\xb4\\xec\\xdc\\xc4\\xd8\\xe3\\x2b\\x49\\xcb\\xbd\\xc6\\xe6\\x66\\x40\\xbd\\xb0\\xf7\\x2e\\x05\\x91\\x8a\\x05\\xc3\\x5d\\x9b\\xff\\x7e\\x0e\\x88\\xf2\\x41\\xd7\\xc6\\xc8\\xcb\\x2f\\xed\\xcc\\xdf\\x65\\x56\\x0a\\xf0\\xe7\\x83\\x3e\\xfe\\x34\\xaf\\x79\\x0d\\xb6\\x31\\x89\\x02\\x2c\\xfd\\x71\\xfc\\x8a\\xcf\\x88\\x86\\x01\\x27\\xbd\\x4f\\xbf\\x02\\x6b\\xcb\\xe3\\x60\\xe3\\x3a\\x89\\x95\\xe6\\x36\\xd0\\x3b\\xb8\\x6d\\xfd\\x01\\x98\\xad\\xa9\\x59\\x34\\x2d\\x8e\\x9c\\x9e\\xd9\\x3e\\x23\\x29\\x7d\\xa9\\x8d\\x66\\xa0\\xd4\\xfc\\x96\\x51\\x62\\x73\\x3b\\xc8\\x65\\x41\\xb9\\x5a\\x6c\\x90\\x97\\xcb\\x55\\xa9\\x73\\xc6\\xfa\\xc1\\x94\\xe8\\xf8\\xa1\\x64\\x27\\x4c\\x47\\x9c\\x51\\x0e\\x62\\xd8\\xa0\\x35\\xeb\\x75\\x11\\x81\\xb5\\x02\\xaf\\xb6\\x14\\xd8\\xc4\\x46\\x7b\\x54\\x45\\xc2\\x68\\xdc\\x3d\\xd0\\xab\\xbd\\x57\\x70\\x04\\xc0\\xbc\\x47\\xb1\\x5f\\xcb\\x80\\x1b\\x79\\x35\\x97\\x57\\xb5\\xea\\x89\\xcf\\x8c\\xf7\\x7f\\xc6\\xd1\\x60\\xe6\\xcd\\x73\\xc4\"},\n{{0xd5,0xe3,0xa4,0x06,0x71,0xbd,0x45,0xf0,0x88,0x42,0xdd,0xc7,0x8a,0xbe,0x57,0xde,0x3b,0x9c,0xe5,0x64,0x6b,0x73,0x0d,0x2e,0x59,0xfe,0xcf,0x5a,0x7d,0xf8,0x0f,0x40,},{0x41,0x6c,0x37,0xae,0x1a,0xd1,0x5b,0x63,0x2b,0x0e,0xa4,0x39,0x32,0xc1,0x76,0x37,0x28,0x2c,0xd9,0x1d,0x59,0x79,0x55,0x2e,0x5e,0xeb,0xb9,0x9a,0x41,0x9d,0x5c,0x97,},{0x63,0xde,0x6a,0x98,0x11,0x42,0x36,0x5a,0x3e,0x59,0x26,0x31,0xc8,0x27,0x72,0x37,0x80,0x97,0x39,0xd1,0xc9,0x8f,0x5a,0x1c,0xb2,0xcc,0xcd,0x34,0x06,0x7d,0x1c,0xa5,0xdc,0x8f,0x2f,0xc6,0x3b,0x8a,0xe1,0xa6,0x89,0xdc,0xaa,0x29,0x1b,0xa6,0xb6,0x9b,0x1a,0x67,0x95,0xc5,0x79,0xa5,0xdb,0x6d,0xcc,0xee,0x73,0xf6,0xa4,0x20,0xac,0x0a,},\"\\x09\\xfe\\x6f\\xfa\\x8b\\xf0\\x94\\x2a\\x64\\x92\\x13\\x57\\x65\\x9d\\xbc\\x6e\\x4f\\x8b\\x63\\xca\\x3b\\x9e\\xa4\\x75\\xea\\x39\\xd7\\x92\\x52\\x90\\xa1\\x48\\xd8\\x7b\\xb1\\x55\\x74\\x1d\\xfa\\x28\\xae\\x1b\\xea\\xdc\\x1f\\x3e\\x1a\\xb7\\x67\\x37\\xeb\\x5d\\x5d\\xda\\xde\\xd0\\xbb\\x38\\x2d\\x7e\\x11\\xea\\x81\\xa5\\xe7\\x80\\x16\\x12\\x69\\x62\\x60\\xba\\x3b\\xd0\\x9c\\x80\\xb6\\x23\\xf6\\x36\\x38\\x0a\\xa0\\x20\\x8f\\xee\\x0a\\xff\\x70\\x81\\x2d\\x53\\x07\\xb2\\x71\\x83\\x83\\x23\\x43\\xde\\xba\\xa3\\x60\\x5d\\xda\\xd1\\x7d\\xdd\\x70\\xd6\\x11\\x40\\x0d\\xdd\\x10\\xd6\\x38\\xaa\\x3d\\x6c\\x68\\xa2\\x8c\\xf0\\xe9\\x7c\\x1d\\xed\\xf6\\xcc\\xd9\\xc7\\x31\\xa8\\x4f\\xf0\\x40\\x5a\\x3a\\x22\\xdc\\xba\\x00\\xab\\x44\\xd5\\xb2\\x18\\x44\\xf1\\x4d\\x13\\x74\\xac\\x0c\\xb1\\xe5\\x8d\\xf4\\xa9\\x0c\\x41\\x25\\x63\\xcf\\xe6\\x9d\\x88\\x2d\\x35\\x0f\\x6a\\xaf\\xbf\\xa6\\x4f\\xa2\\xf9\\xff\\x82\\x60\\x32\\x32\\x67\\x80\\xae\\xcf\\x93\\x05\\xd8\\x21\\x7c\\x17\\x9d\\xbb\\x63\\xc1\\x51\\x54\\x12\\x32\\xeb\\x65\\x97\\x92\\x65\\xd8\\x76\\xc4\\xbc\\x43\\x05\\xc0\\x2f\\x40\\xbc\\x1d\\x05\\xdb\\xaf\\x7d\\xcf\\x4f\\x7d\\xd9\\x23\\x2c\\x17\\xee\\x0f\\x7a\\x05\\x55\\xf5\\x04\\xba\\x37\\x74\\x54\\x84\\x88\\x93\\x3e\\x75\\x71\\xeb\\x3f\\x71\\xc4\\xcb\\xb2\\x0c\\xc4\\xe4\\xa7\\x32\\x2f\\x35\\xac\\x0e\\x79\\xa5\\x91\\x55\\x79\\x8d\\xd0\\xf5\\xb3\\xc1\\x13\\x19\\xb7\\xd8\\xf3\\xea\\x79\\xee\\x3a\\xcc\\x68\\xbd\\xb9\\xf3\\x7c\\x7d\\x4c\\x8f\\x9c\\xab\\xa1\\xeb\\xf8\\xeb\\x7f\\x43\\xb4\\x62\\xae\\xfd\\x38\\xe8\\xc0\\xd4\\xc6\\x39\\x79\\xcf\\x66\\x31\\xde\\xc3\\x1a\\xb5\\xce\\xd3\\x93\\x7e\\xf5\\xb2\\x36\\x2c\\xb0\\x9c\\x71\\xdd\\x09\\x66\\x57\\x70\\x0f\\xd9\\x6b\\xda\\x55\\x5e\\x22\\x71\\x2f\\x71\\xae\\xc1\\x1a\\xe5\\xe9\\x1b\\x24\\xbd\\x16\\x49\\x49\\x8b\\x8d\\x9f\\x86\\x7f\\xb6\\xc4\\x1e\\x07\\x60\\x80\\xf7\\x40\\xd0\\x74\\xc2\\xa2\\x55\\x72\\xd3\\x4e\\x66\\x6b\\x63\\x67\\xbf\\x7c\\xbb\\x3d\\xd4\\x2a\\x23\\x82\\xdc\\x19\\x73\\x96\\x12\\x68\\x60\\x53\\x96\\x81\\x0a\\x45\\x6a\\xc0\\x81\\xbb\\xfd\\x3a\\x54\\xb4\\x48\\x81\\xfc\\xfc\\x45\\xb4\\x24\\x5e\\xe7\\x24\\x65\\xb4\\x87\\xd0\\x7f\\x2e\\xf3\\xf7\\x4a\\xdd\\x71\\xcd\\xfd\\xd1\\x6e\\x92\\xfe\\x25\\x7d\\x33\\x46\\x45\\xb0\\xa9\\xbc\\x7d\\x07\\x26\\x13\\xfb\\x9c\\x0c\\xde\\xa9\\xdb\\x4c\\x72\\xbc\\x87\\x10\\x9e\\x10\\x2d\\x7c\\xba\\xf3\\x66\\xec\\xd6\\x7f\\xbe\\x3d\\xed\\x32\\x74\\x73\\x07\\xa7\\xae\\xef\\x61\\x73\\x5a\\xd3\\xaa\\x5c\\xe9\\x5d\\xee\\xcc\\x16\\xa1\\x6e\\xb2\\xa0\\xbc\\xc7\\xad\\xc0\\xa1\\x1d\\x88\\x80\\x32\\x26\\x0e\\x7c\\x7e\\xc9\\xe5\\x4f\\x5a\\x25\\x31\\x70\\x2a\\x7e\\x5d\\xfb\\x87\\xc3\\x6c\\xe3\\x13\\xa3\\x14\\x75\\x88\\xae\\xf9\\x62\\xc7\\x2f\\xa9\\x66\\xd2\\x41\\x63\\x7c\\x38\\x8b\\x83\\xdd\\xec\\x93\\x43\\xbb\\x86\\x34\\x3e\\x92\\x0b\\x12\\xce\\x1c\\xc9\\x15\\xc8\\x3b\\x31\\xe9\\x98\\x62\\x69\\x06\\x74\\xea\\x49\\x35\\xa4\\x88\\x09\\xd4\\xd2\\x79\\x05\\x41\\x37\\x54\\x63\\x92\\xad\\x9f\\x08\\xe7\\xb8\\xde\\x61\\xae\\x73\\xe8\\x1e\\x48\\x3d\\x3c\\x63\\xb5\\xae\\x73\\x4e\\x18\\xe7\\xa2\\x2f\\xee\\xd1\\x23\\x3d\\x0c\\xa6\\x33\\x55\\xf3\\xa4\\x8a\\x33\\x06\\x7e\\x1a\\x0e\\x19\\x71\\xf3\\x6a\\xa9\\x29\\xfe\\x06\\x13\\xc2\\x1c\\x4a\\xef\\xf9\\x41\\x84\\x29\\xc3\\xb0\\x72\\xa5\\x98\\x49\\x59\\x28\\x7a\\x5e\\x5c\\x40\\xbe\\x02\\xbd\\x22\\xb9\\xa7\\x9c\\x7f\\x3f\\x53\\x59\\xd2\\xbb\\xe4\\x93\\xf5\\x56\\xda\\xcb\\xb0\\xcb\\x4c\\x29\\x3c\\x7d\\x94\\x12\\x65\\xe7\\x77\\x39\\x2d\\x14\\x8d\\x68\\xc0\\x7a\\x13\\xc8\\xde\\xc8\\xe5\\xd1\\xe1\\xc7\\xf0\\x41\\xe8\\x98\\x3e\\xdd\\xda\\xa4\\x64\\x9d\\xac\\x15\\x72\\xa3\\x9a\\xe4\\xc6\\x48\\x0c\\xa5\\x50\\xe2\\xe4\\x46\\x2d\\xcc\\x84\\x9c\\x1b\\xab\\x78\\x1d\\x28\\xa3\\x55\\x2b\\x2d\\x98\\xe0\\x2e\\x15\\x18\\xe6\\x55\\x53\\x40\\xfb\\x76\\xd6\\x8d\\xb5\\x89\\x16\\xd5\\x56\\xa7\\xb8\\x15\\x63\\xab\\xa8\\x1d\\x9a\\x57\\xae\\x50\\xf0\\x4c\\xf5\\x68\\x60\\x21\\x84\\x7d\\x79\\xb6\\xbb\\x3d\\xa8\\x01\\x7a\\x60\\xb1\\xc3\\xbe\\xef\\xd4\\x8d\\x2b\\x3c\\xd3\\x9c\\x6f\\x53\\xc0\\x8b\\xcc\\x96\\x7d\\x93\\x06\\x9f\\x56\\x2b\\xb3\\x6e\\x0c\\x4f\\x4c\\xa6\\xbc\\xcc\\x5e\\x57\\xd3\\x59\\x03\\xcd\\x80\\x0a\\x61\\x78\\x5a\\x93\\x77\\x0e\\x37\\x7f\\x4f\\xe8\\xe9\\xf4\\xb6\\x66\\x80\\x98\\x49\\x68\\xf9\\x64\\x9e\\x10\\x5e\\x7a\\x11\\x9d\\x97\\x63\\x6f\\x3a\\x05\\xca\\xea\\xb1\\xd7\\xea\\x0b\\xc8\\x13\\x34\\xb4\\x2d\\x5c\\xc0\\x80\\x83\\x0e\\xc2\\x4d\\x36\\x9c\\xf8\\x67\\x3a\\x49\\x0d\\x59\\xeb\\x4c\\xb0\\x81\\x81\\xda\\x39\\xa4\\x6d\\x96\\x6e\\x23\\xfe\\xd8\\xd3\\x8a\\x5f\\xab\\xc7\\xe8\\x43\\xbc\\xfb\\x01\\x5a\\x44\\x74\\xbf\\xd4\\x6d\\x4a\\x43\\xff\\x4a\\x51\\xa9\\x56\\x76\\x61\\xe2\\x69\\x6d\\xb8\\x7c\\x37\\x58\\xd3\\xb5\\x4c\\xe7\\x84\\x6d\\x13\\x91\\xd7\\xf4\\x65\\x26\\xef\\x30\\x84\\x4d\\x49\\x32\\x00\\x18\\xd7\\x49\\xb5\\xd4\\xdf\\xd3\\x0d\\x38\\x0c\\x6e\\x57\\x3f\\xc4\\x14\\xd8\\xfe\\xfc\\x5d\\x71\\x04\\x70\\x75\\x6b\\xec\\x00\\xd8\\x8a\\xc4\\xaf\\xc9\\x25\\xd1\\xed\\xe3\\x7e\\xae\\xe6\\x00\\x4a\\x23\\xea\\x0e\\xf8\\xb6\\x0e\\x48\"},\n{{0x4e,0xd7,0x04,0x8a,0xa1,0x28,0x4d,0xbb,0xcc,0x24,0x89,0x38,0xb4,0x0c,0x35,0x74,0x21,0x93,0x59,0x7a,0xdd,0xaf,0xdd,0xe0,0x64,0x13,0xb8,0xd4,0xcc,0xfb,0xe1,0x37,},{0xbf,0x84,0x1f,0xe4,0x44,0xad,0xd1,0xf7,0xc3,0xea,0xcd,0xfd,0x07,0x84,0xb4,0xe8,0x55,0xd2,0x40,0x5f,0x40,0x21,0xcd,0x9d,0x82,0x66,0x07,0x1c,0x32,0xc8,0xa2,0x73,},{0x10,0x6a,0x9d,0xeb,0x23,0x27,0xf3,0x38,0xcc,0xb7,0x1b,0xcc,0x94,0xe2,0xfe,0x3d,0x2e,0x97,0x3c,0xe6,0xdd,0x8f,0xa7,0xba,0xca,0x80,0x8b,0x41,0x11,0x81,0x3e,0x3b,0xc3,0xb4,0xd8,0x8e,0xfa,0x6a,0x00,0xc4,0x71,0x0b,0xbf,0xe5,0x31,0x96,0xf9,0xab,0x3a,0x15,0x0b,0x16,0x54,0xb9,0x08,0xfe,0xac,0xf9,0xc1,0x3d,0xf2,0xd6,0x38,0x02,},\"\\xdc\\xff\\x95\\x87\\xd6\\x04\\x6c\\x11\\x32\\xbe\\x07\\xdf\\x26\\xdf\\x63\\x82\\xff\\x92\\xcf\\xc8\\xeb\\x53\\x45\\xc5\\x1d\\xd5\\x0d\\xd1\\x88\\xee\\x76\\x9f\\x10\\xa4\\xde\\x5e\\x88\\x83\\xd1\\x16\\x96\\x7b\\xea\\x97\\xd3\\xb3\\x2b\\xc8\\xae\\xbb\\x9f\\x01\\x3d\\x6d\\xf9\\x52\\xf2\\x51\\xc1\\xa3\\x12\\x34\\x6e\\x72\\xce\\xe1\\x35\\xa1\\xbf\\xd7\\x6b\\xf3\\x08\\x0a\\x35\\xc8\\x38\\xb4\\x4d\\x75\\x5f\\x26\\x3d\\x21\\x03\\x10\\xfa\\x8d\\x28\\xc4\\xca\\x52\\xf0\\x8c\\xac\\x5b\\x83\\xa8\\xa3\\xb1\\xdf\\xc4\\x6d\\x9b\\x75\\x2d\\x9f\\xc7\\x36\\x49\\xd0\\x0b\\xb9\\xee\\x99\\x26\\x50\\x63\\x9c\\x22\\x5d\\xea\\xc1\\xf3\\x9b\\x9e\\x80\\x36\\x89\\xd1\\x9e\\x6d\\x9f\\x8e\\xf4\\xf5\\x1f\\x1d\\x11\\x60\\x1f\\xac\\xf4\\x10\\xdb\\x64\\x8b\\xcc\\x82\\xbf\\x64\\x87\\x69\\xa7\\xdd\\x59\\xc6\\xe8\\xa2\\x37\\xdb\\x23\\x9d\\x3f\\x66\\x1d\\x78\\x52\\xc4\\x26\\xd3\\x94\\xa9\\x05\\x09\\x52\\x6a\\x85\\x9b\\x47\\x64\\x59\\xde\\xdb\\xe6\\xd8\\x99\\x36\\xc0\\xf3\\x98\\x99\\x95\\x51\\x1d\\x4a\\x57\\x6e\\x54\\x2c\\xce\\x5e\\x0d\\xd7\\xee\\xef\\xeb\\x03\\x26\\xd3\\x3f\\x25\\xc2\\x2a\\xb6\\xe7\\x69\\x06\\x33\\xf4\\xc9\\xed\\x2a\\xad\\xf1\\xd2\\x4f\\x94\\x86\\x21\\x23\\xa4\\x64\\x04\\x2c\\xea\\x19\\x3a\\x2f\\x04\\x79\\xd3\\x9b\\xcd\\x1b\\xbd\\x1c\\x7a\\x0c\\xa7\\xe6\\x25\\x8e\\xd3\\x73\\x23\\x72\\xf5\\x4e\\x0e\\xd5\\xe3\\xf1\\xe2\\xe4\\xd4\\xa0\\x4c\\x51\\x0b\\xee\\x08\\xd1\\xc6\\xd5\\x70\\xcf\\xd6\\x3a\\xbf\\x14\\xb4\\xee\\xf0\\xb9\\x6f\\x39\\xca\\x29\\xe4\\x3c\\x52\\xf2\\xca\\x3d\\xfd\\x46\\x0f\\x66\\xe3\\x02\\x35\\xb1\\x59\\xaa\\xef\\x2c\\xc1\\x56\\x01\\x29\\x69\\xfd\\x3d\\x15\\x99\\x78\\xd6\\xca\\xa0\\xa9\\x45\\x22\\x29\\x1f\\x79\\x89\\xd8\\xaf\\x10\\x83\\x19\\x96\\x13\\x7b\\x68\\xd9\\x7f\\xc1\\x7f\\x6a\\x9b\\xc2\\x84\\x5e\\xf3\\xdd\\x47\\xcb\\xc3\\x86\\xe8\\x97\\x7a\\x86\\x54\\x36\\x34\\x12\\xda\\xc3\\xac\\x51\\xc6\\x38\\x17\\xb7\\xc0\\x51\\x87\\x8d\\xcf\\x45\\x8a\\xb3\\x63\\x0d\\xd7\\xae\\xf6\\x8d\\x27\\x0f\\x8d\\xa7\\x88\\x0a\\x46\\x7b\\x33\\x04\\xf5\\xba\\xed\\xfb\\xa9\\x17\\x3e\\x7e\\xfd\\x00\\x7c\\x41\\x2d\\x17\\x20\\x9c\\x56\\xd2\\x39\\x68\\xe3\\x40\\xb8\\xa0\\xed\\xb4\\x1b\\x7e\\x2a\\x40\\x88\\xbe\\xc0\\x1b\\x53\\x2d\\xf8\\x9b\\x52\\x15\\x81\\x31\\x31\\x10\\x7b\\x7b\\x47\\x4f\\x03\\xc2\\xe4\\x7d\\x43\\x17\\xf1\\x1c\\x4f\\x51\\x60\\x90\\x43\\x04\\x99\\x7e\\x76\\xa1\\x21\\xa9\\x56\\x02\\x35\\x20\\x8d\\x79\\xb2\\xda\\xb4\\xf7\\xe1\\x96\\x79\\x32\\x02\\xc0\\x90\\x2c\\xe9\\xc4\\xbf\\xc1\\x0b\\x8f\\xe3\\x97\\xe3\\x5c\\xa0\\x25\\x64\\x54\\x66\\x2a\\xe8\\x78\\xef\\xb0\\xa0\\xa6\\x06\\xfa\\xc0\\xa9\\x52\\xc9\\xf6\\xba\\xae\\xb2\\xd4\\x5b\\x25\\x8c\\x61\\x75\\x59\\xc0\\xed\\x25\\x28\\xa8\\x8b\\x49\\xaa\\x44\\xee\\x43\\x03\\x5b\\x0d\\x79\\x3a\\xad\\x39\\x53\\xc1\\xa5\\xa3\\x46\\x38\\x66\\xbc\\x81\\x5b\\x1f\\xfc\\xe2\\xff\\x2b\\x65\\xe0\\xfd\\x47\\xdb\\xc1\\x5f\\x4e\\x7a\\x06\\xbf\\xab\\xc2\\x90\\xfc\\x62\\x09\\x0b\\xf7\\xd9\\x48\\x53\\xf7\\x7c\\x04\\x44\\xa9\\xb9\\x0e\\xfe\\x77\\xd1\\xce\\xb4\\xbd\\x39\\xe2\\x03\\xbc\\x88\\x40\\x11\\x62\\x4e\\x68\\x46\\xe2\\xa3\\x71\\x05\\x8d\\xab\\xa6\\x3c\\x23\\xf8\\x6c\\x42\\xc3\\xe3\\x1e\\xaa\\x4b\\xd7\\xd7\\xa4\\x2a\\xf2\\xd5\\x24\\x89\\x6e\\x31\\xba\\xa3\\xe2\\x07\\x63\\xf8\\x5d\\xcf\\xd5\\x27\\x75\\xf2\\x80\\x72\\xd8\\x9f\\x0b\\xd4\\xfa\\xe3\\x0d\\x0b\\x13\\x7e\\xe3\\x7a\\xb0\\x63\\xba\\x06\\xfe\\x9d\\x4e\\xc6\\x2a\\xbb\\x2f\\xea\\x0f\\x81\\xb8\\xcb\\xee\\xfc\\x03\\x00\\x80\\xb8\\x02\\x6a\\x58\\xfd\\x18\\x67\\xf6\\x6b\\xe1\\x15\\x4e\\x65\\xbf\\xea\\x7d\\xce\\xc5\\x5f\\xe3\\x2d\\x51\\xfb\\x0b\\x4a\\x8a\\x5a\\x8a\\x04\\x42\\x63\\x94\\x3d\\x6a\\xc8\\x01\\x1c\\x6e\\x67\\x01\\xbe\\xec\\x3a\\x88\\x65\\x58\\x40\\xc4\\x89\\x2d\\x45\\x0d\\x31\\x2b\\x76\\x52\\xd2\\x51\\x47\\x69\\xf2\\x3b\\xfd\\x6e\\x70\\x46\\x46\\x7d\\xf2\\x9a\\x28\\x7f\\xf3\\xc4\\xc9\\xd0\\xe6\\x4e\\x6d\\x9e\\x4e\\xde\\xe1\\xb9\\x35\\xd0\\x76\\x81\\xd4\\x70\\x04\\x35\\x28\\x86\\xe8\\x47\\xb0\\xc6\\xd5\\x76\\x2f\\xd4\\x5a\\x81\\xa5\\x3c\\xce\\x94\\x76\\xc8\\x87\\x22\\x1a\\xea\\x6c\\x0c\\x82\\xbb\\xf3\\xb2\\x97\\x93\\x2e\\x5b\\x11\\xe5\\x38\\xa3\\x24\\x5d\\x63\\xd7\\xb7\\xb0\\x91\\xdf\\xa1\\xd7\\xb9\\xa0\\xe2\\xdb\\x66\\x98\\xa4\\xc5\\xe9\\xfe\\x93\\x16\\x62\\xd7\\xc6\\xec\\x6d\\x9d\\x5b\\x92\\xbc\\x7e\\x04\\x15\\x55\\xdf\\x4d\\xf0\\xca\\x11\\xca\\xbc\\x48\\x5f\\x9c\\x55\\x61\\x38\\xa7\\x17\\x45\\xf0\\x3b\\x97\\x83\\xbb\\x20\\x0b\\x72\\xd2\\x33\\x69\\x7e\\x8b\\xcf\\x6b\\x41\\x17\\xee\\x67\\x63\\xd7\\x92\\xd7\\x42\\x22\\x64\\x85\\x2f\\x4f\\x30\\xf8\\xd1\\x89\\x0e\\x2e\\xa0\\x80\\x98\\x04\\x0f\\x7f\\x28\\x8e\\x4a\\xbe\\x90\\xb6\\x3c\\xab\\x2c\\x14\\x37\\x30\\x60\\x84\\x0e\\xf8\\x27\\xec\\xc8\\x46\\xcd\\x56\\x0e\\x90\\xa2\\x0b\\x83\\x05\\xf4\\x63\\xc3\\x6e\\xa0\\x38\\x84\\xa5\\xdf\\x4c\\x25\\xf1\\xba\\x9e\\xa1\\x25\\x95\\x2d\\xc0\\x91\\xb9\\x75\\x16\\xde\\x1d\\x28\\x7c\\x0e\\x2b\\xf5\\x29\\x77\\x5b\\xa6\\xd2\\xf8\\xed\\xe0\\x3c\\xb4\\x2c\\x1e\\x40\\x0e\\xc8\\x04\\xa9\\xdf\\x08\\xe4\\x6f\\x44\\xb5\\x06\\x63\\x46\\xe3\\xf7\\xc7\\xa1\\xa8\"},\n{{0xc7,0xec,0xa8,0x3e,0x94,0x85,0x76,0xbd,0x9f,0x27,0x8f,0xd7,0xb8,0x28,0x00,0xa4,0x1d,0x92,0xda,0x9b,0x72,0xd5,0xa1,0xcc,0xdb,0xbc,0x65,0x58,0x10,0x52,0x56,0x8b,},{0x07,0x6b,0x83,0x52,0xdc,0xa8,0x03,0x1e,0x85,0x3c,0x8d,0x90,0x99,0xc2,0xef,0x57,0x93,0x37,0xcc,0x7b,0x2b,0x4c,0x75,0xd1,0xa0,0x63,0xea,0x3e,0xc7,0x25,0xb7,0xfd,},{0x86,0x99,0x6a,0x1b,0x8e,0x49,0x5d,0x42,0x52,0x77,0xe9,0x7c,0xc0,0x83,0x05,0x49,0x34,0x9b,0xc2,0xb6,0xf3,0xdc,0xda,0x60,0xf3,0xb7,0xd3,0x50,0x1b,0x8b,0x50,0xb5,0xb4,0x58,0xcd,0xa5,0x8b,0x43,0x6e,0x23,0xc0,0x2c,0xd4,0xa2,0x2b,0x23,0x48,0x13,0xaa,0x9b,0xcc,0x3c,0x61,0xf9,0x83,0xc0,0xb7,0xef,0xec,0xa0,0xf1,0xbe,0xc2,0x0d,},\"\\x8d\\x8c\\xef\\xd6\\x73\\x85\\x5c\\xcd\\x8e\\xb8\\x53\\x4c\\x31\\x2d\\x33\\x80\\x05\\xbb\\x05\\xf5\\xb9\\x50\\x7d\\x58\\x85\\x9e\\x1e\\x95\\x3b\\x0a\\x4d\\x91\\x3b\\xe7\\x59\\xd8\\xed\\xfa\\x92\\x89\\x8c\\x6e\\x70\\xa5\\x3f\\x81\\x95\\x4f\\xc3\\x44\\xb4\\xad\\x62\\x46\\xb0\\x10\\x94\\x81\\xba\\x6f\\x73\\xae\\x63\\x31\\xab\\xf2\\xdf\\x10\\x8e\\xb2\\xe8\\x5c\\xeb\\x08\\x7c\\x1f\\x6f\\xcf\\xc9\\xde\\x2c\\x1f\\x13\\x9b\\xa1\\x77\\x1b\\x72\\x68\\x03\\x02\\xd8\\x11\\xcc\\xd0\\xcc\\xd4\\xe0\\xc7\\xfe\\xb0\\x13\\x2e\\xb2\\x0b\\x33\\x4e\\x5a\\xab\\xe5\\xf6\\x11\\x9f\\xd8\\x94\\x7d\\x9e\\x88\\x52\\xe1\\xeb\\x1b\\x74\\x10\\x7e\\x17\\x41\\x00\\xe3\\xe6\\xdf\\x0c\\x3a\\x68\\x13\\x0c\\xa6\\x30\\x94\\x02\\x59\\x4b\\xb5\\x0c\\x1c\\x8e\\x27\\x74\\xf1\\x32\\x14\\x49\\x6a\\x7b\\x1f\\x34\\x83\\x85\\xea\\xbf\\xbc\\xcb\\xac\\x16\\x5a\\x5a\\x2e\\x7d\\x9d\\xea\\x5f\\xfd\\x58\\xb0\\xbd\\x88\\xb4\\x9c\\xb3\\x31\\xec\\xb7\\xf4\\xe9\\xd6\\xba\\xe9\\x79\\x1a\\xd7\\x88\\xe6\\xab\\x89\\x26\\xc1\\xcc\\x16\\x15\\xde\\xaf\\x4c\\xc4\\x00\\xc7\\x7a\\x31\\x61\\x97\\xbc\\xa1\\x90\\x49\\x95\\xe1\\x36\\x5d\\x1b\\x97\\x02\\x64\\x83\\x76\\x11\\x69\\x30\\xf6\\xf9\\x11\\x66\\xe6\\x14\\x86\\x29\\xe7\\x5b\\xe2\\xd0\\x68\\x95\\xf6\\xa8\\xd1\\x5d\\x5a\\x94\\xca\\x69\\xb7\\x12\\xf3\\x3b\\xcf\\x95\\xbe\\x0c\\x1b\\xe6\\x90\\x2b\\xb7\\x8b\\x8a\\x23\\x0d\\x7a\\x85\\x60\\xc4\\xd8\\x4e\\x23\\x89\\x55\\x2a\\x81\\x57\\x1a\\xa6\\x65\\xc1\\x9c\\x2e\\x93\\xb0\\xd4\\x3e\\x8c\\x2c\\xbd\\x9e\\x88\\x5d\\x70\\x52\\x51\\x8b\\x77\\xc4\\x7e\\x84\\x1d\\x11\\x9d\\xc2\\x8b\\x65\\xa7\\x50\\x4f\\x66\\x42\\x71\\xf0\\x6c\\x7f\\xf3\\x93\\xf8\\x25\\xb1\\xe5\\x93\\x0d\\x02\\xb9\\xc7\\x00\\x35\\xe2\\x92\\x41\\x1c\\x4a\\xed\\xf6\\x60\\x47\\x00\\x69\\x70\\xe3\\x49\\xdf\\xca\\x7f\\xb4\\x1c\\x10\\xfd\\x53\\x7e\\x35\\x25\\x2e\\x10\\x9e\\x33\\x36\\xd7\\xa8\\x2a\\x14\\xde\\x5d\\x55\\x40\\xc6\\xfc\\x65\\x71\\xd5\\x77\\x4f\\x39\\xb7\\xc4\\x03\\xe7\\xb8\\x87\\x5e\\xc2\\x15\\x87\\x7e\\xfc\\x6c\\xc8\\xea\\x48\\xb1\\x86\\xb4\\x68\\x21\\xea\\x5e\\xf2\\xba\\x8b\\xac\\xd4\\x0d\\x79\\x7e\\x6a\\xdd\\x06\\x41\\x32\\x83\\x14\\x5b\\x60\\x46\\x2b\\x35\\x03\\xc5\\xb8\\x81\\xd7\\x9a\\x59\\x29\\x55\\xd1\\x8a\\xfa\\x08\\x96\\x9e\\x31\\x45\\x7f\\x5b\\x27\\xda\\xec\\x01\\x03\\x38\\xed\\x86\\x7f\\x30\\x08\\x78\\xfd\\x87\\xce\\x32\\x18\\x80\\xb8\\x60\\xa0\\xc6\\x42\\x84\\xca\\x2d\\xc1\\x5f\\x5e\\x53\\x10\\xe1\\x0e\\x6a\\x73\\xa7\\xea\\x65\\x0e\\xa9\\xd3\\x73\\x69\\x4d\\xa4\\xdd\\x42\\x9a\\xe7\\x41\\x2e\\xf9\\xb2\\x9c\\x83\\xb3\\xb0\\x68\\xc7\\x47\\x69\\xf4\\x31\\xce\\x06\\x15\\xf9\\xff\\x4f\\x82\\xba\\xac\\x47\\xb4\\xbc\\xe9\\x04\\x49\\xec\\x41\\xc2\\xa2\\xd5\\x73\\xd9\\x2b\\x92\\xe0\\x56\\x31\\x48\\x61\\x65\\xbc\\x71\\x0e\\xf5\\x84\\x0f\\x80\\xda\\xe9\\xf9\\xdd\\x5c\\xff\\xd4\\xeb\\xf5\\xd1\\x07\\x46\\x51\\x0c\\x5f\\xcb\\xfe\\x62\\xcb\\x97\\x03\\xc0\\xb1\\x54\\xc8\\x6f\\x10\\x81\\x66\\x72\\x49\\x76\\x70\\xa3\\xb0\\x15\\x0b\\xb4\\xe1\\xb0\\x3b\\x3b\\xd5\\x44\\xc1\\x2a\\x90\\xc3\\xed\\xcc\\xd7\\x90\\x0e\\xbb\\x5b\\x31\\xc9\\x11\\x17\\xcc\\x82\\x81\\xa3\\xc4\\xed\\x04\\x99\\x8e\\x99\\xae\\xd4\\x1b\\xb4\\x1f\\xce\\x99\\x90\\xa4\\x06\\x48\\x5b\\x14\\xdb\\xe3\\xbc\\x1a\\x5f\\xcf\\x77\\x19\\x50\\x79\\x90\\xda\\x3b\\x0b\\x3c\\x68\\xad\\x40\\xd8\\x95\\x0c\\x0d\\x49\\xce\\xd1\\x01\\x93\\x19\\xa3\\xf3\\x6a\\xff\\x6c\\xaf\\x75\\xd7\\xf9\\xa0\\x93\\x3d\\xd3\\xab\\xdd\\x76\\x92\\xa1\\x56\\x2f\\x06\\x13\\xfe\\x4a\\x27\\x8d\\x5c\\xe4\\xc8\\xda\\xfb\\xb5\\x5b\\x2e\\xc2\\xaf\\x2b\\x24\\xe8\\x39\\x6f\\x58\\x7b\\x17\\x0c\\x9c\\xa6\\x54\\x75\\x08\\xfa\\xcd\\xe7\\x34\\x90\\xdf\\xb0\\x1e\\xb6\\x65\\x7e\\x3f\\x4f\\x27\\x23\\x04\\xb7\\x0b\\xf0\\x47\\xa4\\x3a\\x2b\\x58\\xe5\\x56\\x8b\\xc5\\x2b\\x2c\\x8d\\x4c\\x03\\x21\\x9a\\x5a\\x8b\\xd3\\xdc\\x06\\x43\\x18\\x59\\x13\\xc0\\xaf\\x74\\x11\\xf8\\x1b\\x77\\xbe\\x2a\\x9b\\xfd\\x5c\\xb2\\x69\\x77\\x11\\x3d\\x26\\x58\\xa9\\x71\\x92\\xb4\\x1c\\xf6\\xc7\\x01\\x1b\\x0f\\xf6\\xa1\\x1c\\xbf\\xf3\\x50\\x55\\x46\\x32\\x2f\\x0b\\xef\\x60\\x97\\xe4\\x6b\\x36\\x49\\x2b\\x01\\x6a\\x45\\x62\\xe0\\x92\\xb6\\x7c\\x3f\\xcc\\xc7\\x78\\x0e\\xa2\\x74\\xd9\\x6d\\x59\\x58\\x49\\xf7\\xe2\\xa5\\x6d\\x79\\xed\\xcb\\x32\\xd7\\x84\\x04\\x9f\\xc1\\x32\\x4a\\x5b\\xee\\xfc\\x24\\x19\\x3a\\x66\\xe1\\xca\\xc4\\xa1\\x3a\\x81\\x1b\\x90\\x95\\x83\\xcc\\x91\\x0c\\xf0\\x8d\\x4b\\x10\\x4d\\xbd\\xb8\\xa6\\xf2\\xb2\\x1f\\xbc\\x1d\\xb1\\x17\\x5a\\x1a\\x23\\x56\\xa6\\x3d\\x3e\\xea\\x9d\\xbb\\x85\\x37\\xd2\\xc6\\x86\\x27\\x54\\x3d\\xf0\\xd1\\xf8\\xfd\\x8d\\x57\\xa1\\x8b\\x0d\\xbd\\x69\\xb9\\x20\\xcb\\x9b\\x28\\x6e\\x3c\\x07\\xae\\x44\\xae\\x2e\\x1b\\xee\\xc0\\x1c\\xee\\x6b\\xa9\\x88\\xb5\\xd1\\xaf\\xb9\\x97\\x90\\xb1\\xdd\\x91\\x06\\x55\\xc4\\x3d\\x7f\\x2a\\x3e\\xd3\\x75\\x4b\\xa4\\x65\\x16\\xd2\\x78\\x70\\x55\\x59\\xf5\\x74\\x16\\x22\\xa9\\xab\\xb5\\xc8\\xf2\\x3f\\xa9\\x76\\xa9\\xd1\\x46\\x94\\x8a\\xde\\x6b\\xa6\\x60\\x8a\\x35\\xe4\\xe0\\xd3\\x30\\xe8\\x2e\\x96\\xa2\\xbe\\x6c\\x78\\xad\\x0c\\xd4\\xd8\\x70\\x4e\\x57\\xce\\xa1\\x46\"},\n{{0x7b,0x46,0x9d,0xf9,0xc8,0xf7,0x84,0x89,0xab,0x47,0xcc,0x70,0xa8,0x85,0x03,0xf1,0xb8,0xf3,0xd9,0x29,0xc3,0x3f,0xea,0xb1,0xc5,0x03,0xf0,0x96,0x9a,0x3a,0xc3,0x7b,},{0xa8,0x14,0xc7,0xe3,0x73,0xd0,0x11,0x3b,0x90,0x62,0x4a,0x8a,0xb2,0xbc,0xa5,0xcf,0x53,0xbf,0x52,0x8e,0x39,0xfc,0x3d,0x36,0x7d,0xe1,0x54,0xb9,0x4b,0xb2,0x2f,0x1d,},{0x18,0xfa,0xf8,0x2d,0x08,0xe1,0x06,0x8e,0x9f,0x98,0x3d,0x81,0x2f,0x05,0xfd,0xb6,0x92,0x9d,0x27,0x23,0xdb,0x1f,0x77,0xc4,0x5a,0x74,0xbb,0x09,0xcf,0xf2,0x77,0x73,0xb5,0x4c,0xe8,0xf4,0x3b,0x30,0x15,0x41,0x91,0x12,0xe7,0x25,0xea,0x7a,0xcd,0xa4,0xb2,0x3b,0x81,0x20,0xe7,0xb0,0xcf,0x42,0x01,0x53,0xe5,0xb0,0x3d,0xd0,0x61,0x09,},\"\\x1c\\x0f\\xd7\\x45\\x0e\\x29\\x67\\x5c\\x93\\x09\\x16\\x38\\xc2\\xac\\x93\\x3c\\xa9\\x97\\x76\\x6e\\x38\\x0e\\xc3\\x3a\\x92\\xb8\\xa7\\xe1\\xa1\\xed\\x98\\x21\\xc7\\x5f\\xcc\\xb5\\xc5\\xf3\\x76\\x0e\\x76\\xd0\\xe8\\x81\\x03\\x11\\xdd\\xc6\\x24\\xea\\x87\\x42\\x13\\x1c\\x1c\\x43\\x08\\xf4\\x17\\x8e\\x04\\xd0\\x49\\x60\\x69\\x3d\\x84\\x6c\\x1f\\x51\\xd8\\x77\\x3b\\x6d\\xeb\\x34\\x43\\xd8\\x74\\xb9\\xe2\\xde\\x3b\\x77\\x78\\x51\\x85\\x51\\x8b\\x2e\\x9e\\xe7\\x36\\xc6\\x3a\\x39\\xc8\\x21\\x2c\\xa8\\x66\\x9e\\x16\\x1d\\x13\\x1b\\x1a\\xb2\\x26\\x4f\\xdd\\x72\\xdc\\x56\\x28\\xb1\\x1c\\x06\\xf2\\xaf\\x9f\\x07\\x89\\x04\\x7b\\xdd\\x4e\\xbb\\x5d\\x55\\x89\\x9f\\x74\\xdc\\x4e\\x12\\xe7\\x97\\x53\\x63\\xf6\\x3a\\x8d\\xa7\\x6b\\x55\\x85\\xc1\\x6b\\xb6\\xd5\\x5b\\x05\\xfa\\xde\\x87\\x13\\xd1\\x9c\\xad\\x1a\\x21\\x16\\x40\\x26\\x26\\x91\\xaa\\xc9\\xb4\\x37\\xa9\\xec\\xf8\\x9a\\x92\\x46\\xec\\xdb\\xa1\\xff\\x0b\\xea\\x78\\x49\\x4c\\xee\\x15\\x29\\x62\\x16\\xea\\x6b\\xb8\\x82\\x47\\x9d\\x24\\x37\\xc9\\x49\\x4a\\xc7\\xfa\\x4f\\x30\\x15\\xd1\\xd3\\x14\\x9d\\x55\\x64\\xd7\\xc1\\x1a\\x7e\\x7b\\x61\\x4f\\x7d\\x3e\\x9d\\x45\\x4f\\x0a\\x05\\xb0\\x40\\xa1\\xe0\\x6f\\xe7\\x83\\x7c\\x2a\\x9d\\xa2\\x79\\x4d\\x91\\x8b\\xff\\xa9\\xe6\\x1a\\x0c\\x3f\\x08\\x9f\\x6c\\x9f\\x7e\\xea\\xc5\\x86\\xe3\\x4b\\xf9\\x44\\x70\\xd9\\x13\\xda\\x41\\x37\\x1c\\xac\\xdf\\xc7\\xee\\x8b\\xd1\\x13\\x56\\x55\\x56\\x69\\x24\\xea\\xdf\\x09\\x6a\\xc0\\x30\\xa6\\x59\\x02\\xc1\\x03\\xb1\\x72\\xd1\\x2e\\x88\\xf0\\x53\\xfc\\x56\\xee\\x73\\xf3\\x18\\x70\\x81\\x70\\x83\\xaf\\xa8\\x02\\xf7\\x66\\x8b\\x81\\x5e\\xe7\\x90\\xf7\\xd4\\x0b\\x43\\x7a\\x2e\\x6d\\xb2\\xf0\\xfb\\x26\\x83\\x6b\\x4b\\x23\\x31\\xeb\\xa5\\x55\\x39\\x61\\x4c\\x0f\\xe1\\x72\\x40\\x24\\x2d\\xd3\\xaf\\x73\\x83\\xbc\\xff\\x7d\\x3f\\x47\\xd6\\x54\\x4b\\x08\\x72\\x0c\\x0a\\x52\\x44\\x1f\\x74\\x11\\x93\\x5d\\xd4\\xa9\\x52\\xd3\\x86\\x51\\xa8\\x00\\x05\\xfa\\x3e\\xb0\\xea\\xec\\xc7\\x35\\xd2\\x90\\xe8\\xbd\\x5e\\x31\\xb7\\x40\\x14\\x0e\\x13\\x6b\\x2c\\x00\\x25\\x23\\xd8\\xeb\\x2a\\x0a\\xb5\\xbd\\x68\\x70\\x02\\xb3\\xb9\\x26\\xf7\\x5e\\xb6\\x90\\xd1\\xda\\x73\\xad\\x23\\x58\\x92\\xf3\\xb2\\x3a\\x75\\x6b\\x60\\x5a\\x43\\x7c\\x00\\xe0\\x62\\x13\\x04\\xe8\\x10\\xf9\\x9e\\x31\\x4c\\x4d\\x63\\xe3\\x22\\xd9\\xb6\\x98\\x15\\xf3\\x82\\xff\\xa1\\xec\\x62\\x80\\xfc\\x0e\\x64\\x1c\\x8a\\x6f\\x6f\\x7f\\x61\\x98\\x5b\\xd3\\x56\\x7e\\x0f\\x44\\x0d\\xe9\\xf7\\x62\\x17\\x15\\xda\\xcd\\x07\\x42\\x8c\\x00\\x90\\x15\\x4d\\x59\\xce\\x6d\\xb4\\x01\\x69\\xc6\\x58\\xac\\x5b\\xf4\\x4b\\x67\\x67\\x1f\\xe1\\x9e\\x4b\\x5b\\x38\\xaa\\xd2\\xd3\\xd4\\xe1\\x90\\xa5\\x50\\xaa\\xd4\\x18\\x83\\x52\\xf7\\x98\\x1a\\x6d\\x88\\x06\\x25\\x02\\xdf\\x86\\x79\\x13\\x50\\x39\\x2d\\x41\\xce\\xfa\\xcb\\x24\\xe3\\x7b\\xc7\\x00\\xcb\\x02\\x91\\x90\\xc3\\xb1\\x82\\x14\\x77\\xe1\\x17\\xd5\\xa4\\x62\\xfb\\x3e\\x79\\x13\\x3b\\x10\\x73\\x59\\x89\\x66\\xf5\\x2b\\x63\\x25\\x6d\\xbf\\x32\\x6a\\xce\\x14\\xdb\\x0c\\x80\\x05\\x8c\\xf0\\x0d\\x68\\x9a\\x0a\\x58\\x11\\x1a\\xf1\\x69\\x27\\x44\\xbf\\x79\\x1b\\xcb\\xb4\\x27\\xa3\\x72\\x24\\x6e\\x95\\x01\\xa8\\x5c\\xd5\\x20\\xc6\\x1a\\x1e\\x59\\xee\\x18\\x0e\\x8c\\x97\\x19\\x2f\\x60\\xfa\\x5d\\x3a\\xb0\\x5d\\xf8\\xd8\\x55\\x1c\\x1a\\xc6\\xca\\x0a\\x9a\\x01\\x2f\\xfe\\xce\\xb3\\xc1\\xf5\\x21\\x41\\x1e\\xdb\\x65\\x09\\xbc\\x27\\x8a\\x65\\x1e\\x12\\x9e\\x96\\xb0\\xad\\xc7\\xae\\xd7\\x07\\x22\\x1c\\xae\\xac\\x22\\x98\\x84\\x41\\x3d\\xaa\\x10\\x59\\x5d\\x22\\xd1\\xdb\\x70\\x82\\x12\\x5f\\x4f\\x96\\x95\\x00\\xa1\\xd4\\x8d\\xac\\xda\\xe8\\x0f\\x40\\x29\\xc1\\x63\\xdc\\xd7\\x9d\\xdc\\x64\\x68\\xfc\\xda\\x16\\x37\\xb8\\x7d\\xdc\\xf2\\xa3\\xd9\\xb4\\xd2\\x99\\xa0\\xe5\\x39\\x4d\\xf9\\x0e\\xd0\\x3b\\x62\\x13\\x7b\\xa6\\x7b\\x9f\\xea\\x8a\\xe1\\xf0\\xd2\\x2f\\x91\\xc6\\x3a\\x24\\xb5\\x93\\x4f\\x74\\xc2\\x65\\xc4\\x3f\\x1b\\x92\\x3d\\xb9\\x80\\xad\\xfc\\xee\\x83\\x13\\xda\\x52\\x01\\x76\\x73\\x0e\\xf9\\x73\\x6b\\x27\\xe6\\xba\\x32\\xd1\\x7e\\xa6\\x9d\\xca\\xc6\\xf4\\xa0\\x16\\xed\\xfe\\x2d\\xb5\\xa5\\xbb\\x3b\\x64\\x93\\x2f\\x70\\x11\\xf1\\xc4\\x53\\xbb\\xe8\\x8b\\xba\\xc8\\xc7\\x03\\x5f\\x93\\xfe\\x39\\xb5\\x81\\xfc\\xaa\\x7a\\xaf\\x08\\x2f\\xbe\\xd0\\x04\\xfd\\x1f\\xd5\\xa4\\xe2\\xd9\\xc1\\x97\\x16\\x60\\x4b\\x19\\xce\\x19\\x9e\\x21\\x69\\xa7\\xbe\\x51\\x8d\\x5f\\xad\\xd2\\xac\\x31\\xb9\\x54\\x78\\x08\\x2a\\xc9\\x13\\x06\\x00\\x8d\\xe4\\xec\\x0e\\xf4\\xc9\\xf9\\xd6\\xf9\\x6d\\x2f\\x66\\xd6\\x2f\\xaf\\xc2\\x19\\x40\\x82\\x80\\x8a\\xf0\\xd6\\x7b\\x9f\\xba\\x0d\\x18\\x9b\\x05\\x5f\\x06\\x1c\\xca\\xc2\\x4b\\x27\\x61\\x0b\\xfb\\xd5\\xa2\\x23\\x2d\\xd6\\xf3\\xc8\\x90\\xa9\\xb1\\x26\\x64\\x71\\xb3\\x22\\xe9\\xe1\\xbf\\x97\\x75\\x7b\\xef\\x72\\xab\\xce\\xe9\\x3b\\x05\\x1f\\xc9\\x23\\xcf\\xd4\\xe7\\x23\\xbe\\x3e\\x17\\x14\\x3f\\x38\\xee\\xbb\\x90\\x0b\\x5b\\xbc\\xf7\\x30\\x47\\x32\\xb9\\xc0\\xa1\\xc5\\xfc\\x95\\x09\\xa6\\x93\\x58\\x0a\\xe7\\x3a\\x4c\\xdf\\xc5\\xfb\\xf2\\x0c\\xe8\\x1e\\xbc\\x83\\x5c\\x6c\\x90\\x9d\\x83\\x11\\x41\\xb1\\x94\\xf6\"},\n{{0xdf,0xec,0xde,0x7a,0x56,0xa1,0x8c,0x1f,0x19,0xd8,0x0a,0x19,0xa4,0xf1,0xda,0xdd,0xd0,0xbc,0xec,0xb0,0x1e,0xec,0xad,0x6d,0xfc,0xa0,0xf9,0x57,0xa9,0x14,0xed,0x7a,},{0xaf,0xba,0xa6,0xe7,0x3e,0x85,0xb0,0x2b,0x25,0xa4,0xb5,0x87,0xec,0xb8,0xc4,0xdf,0xb7,0x9a,0xa9,0x20,0x27,0x61,0xef,0xa8,0xd1,0xdf,0x2c,0xd0,0xaa,0x63,0x16,0xc4,},{0xb4,0xfd,0xe5,0x5b,0x91,0x6c,0xf6,0x00,0x68,0xf1,0x9b,0x25,0x35,0x1c,0x14,0x10,0xdc,0xf6,0x6b,0xfc,0x40,0xf9,0x6d,0x1b,0xa2,0x36,0x8b,0xc2,0xb9,0x11,0x5a,0xaa,0x5b,0x2d,0x1c,0xf0,0xe3,0xdf,0xca,0x02,0xac,0x90,0x2a,0x94,0x3e,0x24,0x89,0xa5,0x68,0x1b,0xba,0xfe,0xd3,0x9c,0x6e,0x33,0x21,0x1a,0x9c,0xb2,0xff,0x6e,0x54,0x09,},\"\\xae\\x6e\\x8f\\xf6\\x5c\\xcd\\xe6\\xf2\\x64\\x84\\x95\\x08\\x26\\xb4\\x36\\x23\\x05\\x8a\\x5e\\xfe\\x02\\x0b\\xb1\\x9b\\x7d\\x8b\\x4e\\x25\\x76\\x8b\\x69\\x27\\x34\\xfe\\x07\\xc9\\x13\\xb9\\xe8\\x81\\x26\\xbe\\xcb\\xf1\\x4a\\x0f\\xd0\\x20\\x5b\\x39\\xfc\\xc2\\xae\\xc3\\x73\\xf8\\xc1\\x84\\xc6\\xa9\\xbb\\xbb\\x84\\x44\\x9a\\x7c\\xa3\\xb9\\x20\\xad\\xa0\\x88\\x01\\xdf\\xc6\\x6f\\xf1\\x9a\\xeb\\x92\\xf2\\x55\\x53\\x99\\xa4\\x30\\x27\\x7a\\xe2\\x2d\\x23\\x75\\x4e\\xaa\\xce\\x3c\\x73\\x84\\x67\\x97\\x53\\x6d\\xd7\\x1a\\x56\\xf4\\xb5\\x84\\x2c\\x0f\\x41\\x0d\\x19\\x89\\xac\\xac\\x5d\\x80\\x5d\\x26\\x57\\x2c\\x0f\\x3a\\x64\\xdd\\x20\\x71\\x66\\x22\\x12\\xd5\\x2f\\xe9\\x9e\\x59\\xd9\\x66\\x04\\x77\\x77\\xf9\\x03\\x0f\\xa4\\xfd\\x2e\\xe7\\x4b\\x7a\\x7c\\x9f\\x7c\\x34\\xa6\\xdc\\x7e\\x03\\x59\\x3a\\x13\\xd6\\x4c\\xe6\\x24\\x53\\xee\\x3c\\xa3\\x0d\\x84\\x67\\x28\\x39\\xf1\\x9f\\x1c\\x15\\xd0\\xc4\\x5d\\x27\\x55\\xbb\\x39\\x4a\\xcf\\x4d\\xcb\\x7f\\x7f\\x07\\x11\\xac\\x40\\xea\\x46\\x61\\x2e\\xa3\\x7a\\x76\\x07\\xad\\x32\\xe8\\x18\\x26\\x5f\\xab\\x19\\x33\\xf5\\x09\\x4e\\x2d\\x03\\xbc\\xfa\\xa5\\xf6\\x16\\x67\\xf3\\xb3\\x7f\\x00\\xc4\\xc5\\x8d\\x9b\\x41\\xb9\\xaf\\x39\\x00\\x48\\x2b\\x0f\\xfb\\x4f\\xa4\\x37\\x6a\\xa0\\x40\\x00\\x9d\\xec\\x2f\\x45\\x25\\x79\\x9c\\xb0\\x05\\xf3\\x9d\\x74\\xcb\\x2d\\x8d\\xce\\x8c\\x20\\xc2\\xc3\\xf5\\x40\\x97\\x03\\xaf\\x15\\x6c\\xfb\\xa2\\x8a\\x9d\\x91\\x64\\x39\\xcb\\x29\\xf8\\x3d\\x24\\x29\\xce\\x62\\x23\\x51\\x9e\\x75\\xe1\\x5c\\x7c\\x7f\\xa2\\x15\\x11\\x9e\\x07\\x3f\\xa7\\x97\\x4d\\xb1\\x4f\\x7a\\x01\\x09\\x3f\\xaa\\x94\\xad\\x52\\xab\\x1e\\xad\\xce\\x1a\\x89\\x36\\x6c\\xa1\\x3a\\xdb\\x89\\x06\\x64\\x38\\xa2\\xbe\\xb7\\x30\\x34\\x17\\x0a\\xa4\\x2d\\x9c\\x2d\\xdb\\x97\\xc1\\x4a\\x17\\xc3\\x09\\x43\\x76\\xd2\\xa3\\xff\\xd8\\x09\\x5f\\xc4\\x05\\x3d\\x91\\xd1\\x6e\\x06\\xd2\\x76\\x93\\xa1\\x31\\x0f\\x01\\xa7\\x51\\x11\\xcf\\xed\\xa8\\x92\\xc3\\x97\\x2a\\x13\\x3a\\x09\\xad\\xda\\xa8\\xf7\\x41\\x45\\xf8\\x86\\x81\\xb6\\xd2\\x77\\x96\\x4b\\xfe\\x38\\x55\\x1a\\x2c\\x61\\x9f\\xa3\\xca\\xe3\\x94\\xac\\xb2\\x9c\\x94\\x10\\xb4\\x5e\\x10\\x1b\\x17\\x40\\xe8\\xb2\\xaa\\x6f\\xeb\\xc3\\xa4\\x5d\\xad\\xb9\\xd9\\x58\\x9d\\x59\\x7e\\x57\\xcd\\x94\\x7b\\x68\\x4c\\xc3\\x55\\x24\\x6c\\xe6\\xc3\\x26\\xdd\\x98\\xcf\\x92\\xb6\\xee\\xa3\\xba\\x5a\\xb0\\x37\\x00\\x62\\x26\\x36\\x32\\x4d\\xc1\\x22\\x2c\\xd7\\x48\\xfa\\x07\\xbf\\xd3\\x9a\\x1e\\x06\\x98\\x09\\xe5\\x67\\x14\\x1a\\x61\\x3e\\x2e\\x8b\\xe9\\xdd\\x39\\x8a\\xb6\\xbe\\xaa\\xfd\\x85\\xff\\x36\\x28\\xee\\x2a\\xa3\\x2d\\x0a\\x57\\xbb\\xac\\xf9\\x56\\x19\\x0b\\x5c\\x42\\x42\\xeb\\x5b\\x85\\x87\\xd2\\xfd\\xcb\\x07\\x41\\xb9\\x41\\x6a\\x05\\xf5\\xfe\\xcb\\x1f\\xb2\\xd6\\x47\\x88\\xdc\\xe7\\x83\\xc1\\xf6\\x3e\\x60\\x64\\x1f\\xce\\x5e\\x1d\\x2b\\x18\\xa9\\x50\\x0c\\xd6\\xa1\\xfd\\x33\\x5c\\xc1\\xdb\\x46\\xef\\x04\\x75\\x2b\\x2d\\x22\\x07\\x2e\\x6d\\xfc\\xfc\\xfa\\x56\\x9b\\xb2\\x5e\\x45\\x7a\\xfe\\xb6\\x3a\\x4f\\xbe\\xdc\\x29\\x3a\\xd9\\xd1\\xab\\xa4\\xe3\\x94\\xaa\\x10\\x97\\xe1\\x2b\\x0f\\xc9\\x0c\\x89\\xf7\\x6d\\xf0\\xd6\\x44\\x1f\\xa9\\x98\\x08\\xb6\\x0b\\xe0\\x7d\\xfc\\xc7\\xf9\\x01\\x0b\\xbf\\x90\\x33\\x55\\x6d\\x5e\\xe2\\xd4\\x48\\x93\\x7b\\x78\\x34\\x93\\x92\\x0f\\x68\\x1e\\x4d\\xa7\\x08\\x67\\x10\\x97\\xe1\\x99\\x48\\x1b\\x8e\\xf0\\xe0\\x15\\x0d\\x7c\\x28\\x51\\xdf\\x44\\xc5\\x45\\x12\\x2f\\x9b\\x0e\\x5b\\xa2\\xee\\xff\\x2d\\x98\\x8d\\x56\\xd9\\xbb\\xb5\\x5d\\x98\\x96\\x11\\x11\\x51\\xa4\\x36\\xaf\\x06\\x5e\\x0c\\xad\\x17\\x8a\\x2c\\x9f\\xa8\\xf6\\x97\\x4e\\xcd\\xf0\\x9a\\xdf\\x01\\x33\\x00\\xcf\\xfe\\xda\\xf4\\xb8\\x79\\x1b\\x46\\x7b\\xa7\\x93\\x3a\\xda\\x5d\\x63\\x2d\\xb4\\x4e\\xd6\\xdc\\xf2\\xaa\\x64\\x89\\x17\\xbe\\x63\\x37\\xd2\\xe2\\xd2\\x06\\x85\\x6d\\x08\\xf9\\xee\\x7b\\x5e\\x2f\\x14\\xdd\\xc6\\xd3\\xac\\x42\\x92\\x15\\xa8\\x79\\x23\\xad\\x32\\xd5\\xdc\\xfe\\xe3\\x68\\x63\\x16\\xdd\\xd1\\xb2\\x7b\\xb1\\x93\\xa5\\xfc\\x05\\xc8\\x93\\xa9\\x39\\xa5\\xb9\\x89\\x87\\x36\\x6c\\x82\\x9e\\x39\\x2f\\x48\\x5e\\xa1\\x5e\\x22\\xcd\\x8f\\x85\\x7a\\x13\\x4a\\xfa\\x98\\xf3\\x72\\x15\\x57\\x6d\\xdc\\x5a\\xab\\x4f\\x2d\\x10\\xca\\xaf\\x05\\x00\\x59\\xa3\\x35\\xf2\\x4b\\xcd\\xcb\\xac\\x81\\x9f\\x66\\xdb\\x07\\xaa\\xbd\\xfb\\x76\\x27\\x1d\\x17\\xbc\\xe2\\x2c\\xba\\x46\\x3a\\x80\\xaa\\x89\\x2d\\x0d\\x8e\\x05\\x5f\\x94\\x8d\\xf7\\xf6\\xe6\\xc3\\x00\\xda\\xef\\xfd\\x3a\\x23\\x6d\\xdd\\xcf\\x23\\x8f\\xe1\\x06\\x66\\xa5\\x7c\\x6e\\x3a\\xe7\\xe3\\x67\\x3d\\x35\\x57\\x8f\\x8b\\x8e\\xa6\\x9d\\x3c\\x08\\xe0\\x14\\x0a\\xfd\\x3e\\xe0\\x30\\xb2\\x2a\\x37\\x21\\x60\\xf9\\x08\\xa3\\x78\\xf8\\x10\\x1b\\x5f\\x59\\x69\\xfe\\xa3\\x10\\xee\\xd3\\x7a\\x00\\xd9\\x73\\x02\\xd5\\xc2\\xdb\\xe8\\xcc\\x60\\x00\\x75\\xdc\\xcd\\x33\\xad\\x63\\xd2\\x65\\xaa\\xf6\\x0e\\x24\\x1c\\xe3\\x11\\xbe\\xd7\\xdd\\x5e\\x27\\x45\\x24\\x1a\\xe0\\x2a\\xe5\\x32\\xd1\\x5c\\x18\\x88\\x6e\\x81\\x81\\x38\\x75\\x1a\\xfc\\x51\\x85\\x0e\\x50\\x6c\\x6d\\x31\\xa8\\xee\\xf4\\x51\\xad\\xfd\\x4b\\x3d\\x26\\x6b\\x41\\x5a\\x7e\"},\n{{0x07,0x82,0x8c,0x58,0x0e,0xbf,0x9e,0x1d,0x82,0x5a,0x59,0xc3,0xbf,0x35,0xf0,0x72,0xae,0x12,0x33,0x55,0xbd,0xcc,0x24,0x9e,0xec,0x7f,0x2f,0xc5,0x75,0x5e,0x29,0xb5,},{0x58,0xe5,0xed,0x85,0x10,0x0b,0xbd,0x9b,0x22,0x21,0xaf,0xc9,0xc9,0x31,0x84,0x33,0x0a,0xd5,0x9e,0x13,0x85,0x60,0x62,0x44,0xbf,0x00,0x3b,0x8d,0x20,0x18,0x50,0x1b,},{0xbb,0x09,0x36,0x04,0x39,0xa8,0x2d,0xee,0x5c,0x7d,0x85,0x77,0x9e,0x54,0xc1,0x3f,0x88,0xe0,0x6d,0x38,0xf4,0xb9,0x49,0x60,0xfe,0x17,0xa1,0xeb,0xca,0xa3,0xee,0x2f,0x33,0x0c,0x64,0x91,0x54,0xbb,0xc8,0x75,0xa4,0x07,0x6c,0xf0,0xbb,0xf7,0xee,0xbf,0x7b,0x8d,0x08,0xd5,0xaa,0x4b,0xe7,0x41,0x38,0x81,0x24,0x5f,0xc2,0xd2,0xb6,0x01,},\"\\x0e\\xda\\xd5\\xca\\xe6\\xed\\x98\\x43\\xe9\\x1c\\x50\\xd9\\x34\\xcf\\x55\\xdd\\x65\\x8f\\x3d\\x25\\x20\\x39\\xcd\\x6c\\x75\\xbe\\x4f\\x6b\\x86\\x6f\\xb7\\x5f\\x35\\xc8\\xf9\\x8f\\x17\\x21\\xd7\\xe6\\xd9\\xd9\\x8a\\x22\\xe0\\xb4\\x93\\x4d\\xcc\\x12\\x92\\x61\\xbf\\x67\\x23\\xb2\\xfa\\x7a\\x99\\x5e\\x35\\xc4\\xbd\\x79\\xc5\\x81\\x6a\\x32\\x16\\x07\\xd9\\xdc\\xce\\x39\\xfe\\xfa\\x1d\\x55\\xde\\x4e\\x76\\x17\\x54\\x8e\\xc3\\x85\\xc3\\xde\\x01\\xe3\\x66\\xbf\\x50\\xc4\\x57\\xa5\\x55\\xe9\\x32\\x07\\x0e\\x2a\\x5a\\x01\\x97\\xb7\\x9e\\xfb\\xe7\\x00\\x6f\\x0c\\xec\\x78\\xb6\\x0e\\xbb\\x8f\\xa8\\x78\\x1d\\x8e\\xb7\\x32\\x6e\\xdc\\x30\\xe6\\x2d\\x32\\x97\\xa1\\xe0\\xa1\\x11\\x71\\x08\\xc4\\x6e\\xe5\\xdb\\xef\\xc6\\x59\\x42\\x89\\x33\\x5e\\x78\\x0d\\x55\\xa0\\x84\\xf5\\x52\\xda\\x3f\\x36\\xd3\\xc4\\xc6\\x17\\x8b\\xa7\\x4d\\x4d\\xec\\xef\\xc5\\xa3\\xb8\\xc4\\x7c\\x16\\xf5\\x34\\xbd\\xb6\\x08\\x95\\xd3\\xd5\\x4c\\xd2\\xbb\\x26\\x6b\\x39\\x9e\\x4d\\x4f\\xb4\\x8d\\x7a\\x8c\\xde\\x17\\xf4\\x24\\x12\\x56\\x07\\x37\\xd3\\xc0\\x6e\\x29\\xdf\\x52\\x4d\\x0c\\xbd\\x30\\x93\\xef\\xca\\x1c\\x8f\\xed\\xca\\xa1\\x24\\xab\\xb2\\x7a\\xbd\\xac\\x6a\\x29\\xe0\\xe8\\x24\\x6a\\xbd\\x6f\\x5f\\x53\\x19\\x50\\x03\\x7f\\x76\\x32\\x3a\\xa5\\x6c\\xc3\\xfe\\xfa\\x60\\x30\\x41\\xd5\\x5f\\x19\\x29\\xe2\\x77\\xe7\\x2c\\xda\\x1f\\x96\\x54\\x1d\\x2a\\xf3\\xe9\\x0c\\x0f\\x0e\\x28\\xbe\\x19\\x6d\\x8f\\x69\\x21\\xf3\\xcd\\x57\\xa7\\x92\\x6b\\x86\\x0a\\xa1\\xbc\\x40\\x35\\x76\\x89\\x2a\\x96\\xb9\\x31\\x90\\xae\\x38\\x3f\\x63\\x1b\\x72\\x80\\x26\\x58\\xb2\\xe8\\x45\\x1d\\x52\\xa2\\xf4\\x5d\\xb4\\xf8\\xbc\\x3b\\x0e\\x4e\\x50\\xb6\\xd6\\x03\\xa5\\xbd\\xd3\\x0c\\x23\\x42\\x00\\xad\\x7d\\xeb\\xb9\\x63\\xf5\\x8a\\x4f\\xa2\\x03\\x30\\xb3\\x69\\x64\\x49\\x44\\x5a\\xa3\\x71\\x82\\x48\\x42\\xfb\\xf3\\x26\\xd9\\x01\\xdf\\xe3\\xbe\\x04\\x54\\x52\\xa3\\x74\\x0d\\xd1\\x60\\xe7\\x27\\x33\\xf6\\xe2\\x73\\x35\\x25\\xa2\\x9a\\x86\\x5f\\x6f\\x50\\xd5\\x3b\\xf7\\x19\\x1c\\x59\\x9c\\x87\\x6f\\x5c\\x9c\\xa1\\xe3\\xfa\\xd7\\x96\\x06\\x48\\xe0\\xd4\\x71\\xf7\\xd5\\xc0\\x1c\\x67\\x3f\\x42\\xd6\\x59\\xbc\\x3d\\x98\\xdb\\xf0\\x7d\\x8f\\xeb\\xfb\\x99\\x5d\\x17\\xf9\\xa0\\x2c\\xd6\\xc3\\x9f\\x2d\\xdc\\xd0\\xf1\\xd2\\x22\\xb9\\xe1\\x1f\\x2d\\xd7\\xd3\\xc7\\x51\\x82\\x24\\xbb\\x6b\\xfb\\x8b\\x7c\\x58\\xfe\\x8a\\xc1\\x05\\x40\\x59\\x03\\xa1\\xb9\\xda\\x75\\x16\\x71\\x5b\\x7a\\xfc\\x38\\xa5\\x55\\xe6\\xbb\\xcd\\xba\\xd4\\x6e\\x34\\xe5\\x76\\xfe\\xa3\\x4c\\xe3\\x57\\x34\\xed\\x20\\xaf\\x5d\\x88\\xee\\xb1\\x04\\x7a\\x26\\x60\\x64\\x8b\\xbb\\x11\\x3a\\xd9\\xdb\\x8c\\x53\\xed\\xb6\\xed\\x98\\x71\\xa1\\xe4\\x4c\\x9e\\xd2\\xdf\\x56\\x56\\xfb\\x2b\\x28\\x06\\xec\\xf0\\x3b\\x1e\\xca\\x9e\\xab\\x50\\xa6\\xea\\xab\\x55\\xb9\\x33\\xb2\\xdd\\x1f\\x21\\xd4\\x50\\xde\\x9d\\x5c\\xb2\\x23\\x2f\\x07\\xa3\\x92\\x08\\x1b\\x0b\\x4b\\x88\\x5d\\x54\\x78\\x9e\\x2f\\x75\\xbf\\x2c\\x4c\\xda\\xd8\\x78\\x98\\x9b\\x1d\\x6d\\xab\\xd9\\xed\\x23\\xc7\\xc5\\xb0\\x35\\x6a\\x7d\\x9e\\x73\\x35\\x29\\x0d\\x7c\\x85\\xb9\\x66\\xe8\\x01\\x84\\xbd\\x07\\x99\\x86\\x02\\x88\\x6d\\x70\\x76\\x19\\x35\\x65\\xc8\\x1c\\xcc\\xda\\x4c\\xc7\\xd3\\x3c\\x85\\xd9\\x05\\xb1\\xbe\\xb6\\xe8\\xe7\\x41\\x8e\\x8a\\xca\\xed\\xf0\\xd9\\xa3\\x2a\\x7d\\x29\\xd0\\x7c\\xf4\\x4d\\x31\\x19\\xd4\\xe7\\x89\\x68\\x20\\xb7\\x7d\\xe6\\x4b\\x65\\x5e\\x4f\\x14\\x88\\x00\\x43\\x4a\\xf7\\xbd\\xb2\\xa5\\x6b\\x25\\xeb\\x94\\xea\\x39\\xf2\\x16\\x95\\x96\\xbb\\x2b\\x11\\x76\\x1f\\x08\\x2b\\xae\\xc0\\x88\\x85\\xf4\\xa0\\xeb\\x6c\\x95\\x76\\x71\\x35\\xa7\\xf7\\xcd\\x72\\xe7\\x43\\xd2\\xdf\\xf1\\x44\\xdd\\x8b\\xaf\\xb1\\xb3\\x18\\x00\\x6e\\x58\\x76\\xf8\\xe2\\xcb\\x44\\xaa\\x58\\x8f\\x90\\x62\\x66\\xac\\x67\\x11\\x9c\\x17\\xf5\\xde\\x11\\x4e\\x72\\xe4\\x2a\\x1f\\xb3\\x99\\x44\\x32\\x1a\\x11\\x1f\\xa7\\x95\\xff\\x70\\x17\\xf2\\xfb\\x8c\\xaf\\x48\\x2f\\x55\\xd7\\x7a\\x80\\x85\\x54\\x28\\xde\\xd7\\xec\\x20\\xac\\xec\\xca\\x83\\xf8\\xd1\\xeb\\x13\\x7b\\x58\\x8c\\xcb\\x74\\x5c\\x10\\x5f\\x2b\\x2c\\xa4\\x1c\\x3a\\x9f\\x49\\xd3\\xc6\\xe9\\xd7\\xc6\\x48\\xb0\\x03\\xb9\\x70\\x7c\\x90\\x64\\x62\\xed\\xad\\x61\\x7a\\x8c\\xfb\\xf9\\xbc\\xc6\\xc5\\xfb\\x6f\\xa9\\x84\\x32\\x5d\\x65\\x82\\xe2\\x8f\\x62\\x00\\x53\\x83\\xf3\\x38\\xdf\\x5b\\x38\\xfa\\x9d\\x19\\xc2\\x2a\\x2a\\x7e\\xa1\\xd6\\x8a\\x92\\xd1\\xd9\\x3b\\x7f\\xb0\\xb8\\xf3\\x3b\\xc8\\x76\\x0f\\x28\\xae\\xb1\\x43\\x9a\\x8b\\x07\\xf3\\xda\\x58\\xdd\\xb1\\x55\\xb4\\x98\\xcb\\x09\\xc7\\x5a\\x55\\x96\\x83\\x8a\\x65\\x01\\x3e\\x24\\xd5\\x64\\x0d\\x08\\x42\\xa7\\x69\\x93\\x22\\xcf\\x3f\\xfc\\xb5\\x70\\x3f\\x41\\x4f\\xfd\\x16\\x88\\x60\\xba\\xd3\\xe3\\x08\\xb2\\xb5\\xbf\\x3c\\xdf\\x7f\\x36\\x3b\\xf9\\xaa\\xf4\\xb3\\xbc\\x42\\x4c\\x14\\x6c\\x6f\\x54\\x21\\x43\\x0f\\x9f\\x47\\x6a\\xa3\\x4a\\x0c\\x6e\\xe8\\x01\\x31\\xfc\\x4d\\x4d\\x97\\x07\\x23\\xa2\\x18\\x6a\\xe3\\x62\\x5e\\x28\\x6d\\x17\\xdd\\xdc\\x43\\x5c\\xcb\\x00\\x83\\x16\\x78\\xab\\xa5\\x84\\xa6\\x2d\\xbf\\xf0\\x02\\xbe\\xad\\x6e\\x11\\xe2\\x3c\\x54\\xd3\\x3c\\xf3\\xa4\\xb2\\x31\\xa9\\x08\"},\n{{0xf0,0x8e,0xe8,0xda,0xa7,0x3e,0x1f,0xeb,0x61,0xa8,0x8e,0x06,0x2d,0xfb,0x10,0x03,0xc8,0x57,0x8a,0x0d,0x53,0xbd,0x3b,0xc9,0xe5,0x89,0xef,0xb9,0x2f,0x68,0xbe,0x14,},{0x76,0x69,0x2c,0xe8,0xd1,0x16,0xec,0xcb,0x89,0x70,0x77,0xed,0xca,0xaf,0xdd,0x3e,0xb4,0x4e,0xa1,0xa4,0x86,0xb9,0x0e,0x49,0xe9,0x7f,0x96,0x69,0x01,0x01,0x55,0x02,},{0x66,0xdf,0xa4,0xc1,0x57,0x5b,0xef,0xf2,0xf5,0xa2,0x30,0xb2,0x8c,0x58,0xc3,0xee,0xa0,0x73,0x6d,0xf3,0x79,0xd7,0x55,0x59,0xbc,0x9d,0x37,0xa9,0x57,0x9d,0x12,0x1c,0x05,0xc3,0x73,0xe8,0x48,0x4c,0x97,0x47,0xef,0x44,0x77,0xe8,0x0c,0x4b,0x2c,0xb4,0xdd,0xf1,0x6a,0xe9,0xfd,0xfa,0x08,0xa0,0x75,0x47,0xd1,0x07,0xdc,0xea,0x12,0x03,},\"\\x64\\xde\\x90\\x04\\x4d\\x0e\\x76\\xbc\\x02\\xfc\\xff\\xcb\\x75\\x26\\x36\\x67\\xb3\\xbd\\x73\\x3b\\x40\\xbf\\xb2\\x6c\\x6c\\x52\\xfd\\xb4\\xb0\\x78\\x22\\x78\\xca\\xba\\xe4\\x1e\\x21\\x29\\xea\\x40\\x17\\xe9\\x4d\\xe8\\x60\\x87\\x96\\x4f\\x66\\xd8\\x62\\x07\\x98\\x74\\x67\\xa1\\x68\\x8f\\x9f\\xab\\x3f\\xfb\\x2f\\x1d\\x00\\x63\\xbf\\x62\\x6c\\x94\\x13\\x67\\xc1\\x2e\\x31\\x9a\\xb7\\xca\\x30\\x20\\xc9\\xb3\\xa7\\x21\\x5a\\x19\\x30\\x3e\\x2d\\x0e\\x89\\x88\\x79\\x1d\\xe0\\xd8\\xe1\\x63\\x2d\\xaa\\x38\\xc7\\xf3\\xe7\\xf6\\xe4\\x8c\\xe1\\x22\\x14\\x3d\\x1e\\x2c\\xb6\\x61\\xba\\x77\\xc6\\x9e\\x6a\\x71\\x09\\x11\\x64\\x4b\\xc1\\x10\\xff\\x58\\xbb\\x00\\xb5\\x29\\x08\\x20\\xce\\x30\\x97\\x0e\\x7f\\xde\\x18\\x9e\\x14\\x0e\\x5c\\x70\\xc7\\x83\\xee\\xd5\\x3f\\x0e\\x2a\\xc7\\xec\\xae\\x4f\\x27\\xdb\\x81\\xd1\\x5b\\x86\\x46\\xfa\\xa9\\xc5\\xa3\\xae\\x2b\\x7f\\x47\\xcd\\x58\\x0d\\x77\\x07\\xb0\\x02\\x49\\x9b\\x4c\\xfe\\xb8\\xc5\\x91\\xaf\\xdf\\x1c\\xc6\\x2a\\xf2\\x59\\x5c\\x18\\x4a\\xbc\\xf0\\xb2\\x62\\x3a\\x1b\\xae\\x60\\xaf\\x70\\x26\\xb2\\x8d\\x05\\x40\\xb4\\x15\\x26\\xe3\\x02\\x0f\\x81\\xb8\\x94\\xeb\\x3f\\xe3\\x1b\\x72\\xb2\\x1a\\x32\\x60\\xda\\xe3\\x21\\x0c\\x4c\\xe4\\xfd\\x69\\xe2\\xe5\\xea\\x0c\\x86\\x32\\xa5\\x83\\x26\\x2a\\x12\\xb3\\xa8\\xb1\\x6c\\x9c\\x12\\x06\\xad\\x73\\x02\\x30\\x37\\xcf\\x30\\x65\\x3c\\xb8\\x0a\\xa7\\xdf\\x83\\x14\\xb0\\xf5\\xbc\\x6e\\x9d\\x5f\\xa0\\x0b\\x00\\x9d\\x55\\x52\\xd8\\x3b\\x79\\x70\\xb5\\xbc\\x4b\\x99\\x84\\xf6\\x9d\\x1c\\xca\\x9c\\xe4\\xcb\\x74\\xdd\\xd2\\xd8\\x79\\xd3\\x73\\x12\\xa0\\xe1\\x59\\xd7\\xa6\\xaf\\xb7\\x7a\\xc5\\x85\\xe6\\xb4\\x59\\xc5\\x51\\x30\\x4e\\x1e\\xeb\\xfb\\xca\\xb4\\x3a\\x10\\xb5\\x05\\x92\\x4e\\x03\\xea\\x33\\x2f\\x5d\\x02\\x0a\\x55\\xc7\\xaa\\x68\\x3c\\x54\\x1d\\xcf\\x77\\x90\\xa2\\x40\\xaf\\x07\\x9b\\xab\\xa9\\x40\\x96\\xb4\\x60\\x60\\xfd\\x7a\\xfe\\x90\\x56\\xca\\x99\\xe6\\x88\\xdf\\x28\\x0a\\x9b\\xe8\\xc8\\xc7\\x3e\\x6e\\x6f\\xb0\\x52\\xa3\\x3e\\xb3\\x32\\x8a\\x7f\\x60\\x25\\x42\\xfe\\x28\\x0c\\x89\\x0e\\x3c\\xca\\xf2\\x2c\\x7f\\x34\\xf8\\x7b\\x5e\\x5b\\xa7\\x84\\xb4\\x72\\xb1\\xe1\\xa9\\x93\\x47\\xa9\\xe0\\xd2\\x40\\x85\\x8d\\x12\\x77\\xa5\\xc6\\xb3\\x49\\x38\\x3f\\xe4\\xfd\\x55\\xcf\\x92\\xe6\\x9f\\xaa\\xd3\\x26\\xb8\\xd6\\xdb\\x46\\x23\\x30\\x26\\x22\\x1e\\xe6\\xd0\\xa1\\xc4\\x24\\x65\\x33\\xc4\\xa0\\xe5\\xbd\\x17\\x2e\\xb8\\x93\\x6a\\x9c\\x0d\\x30\\x06\\x65\\x38\\xe3\\xeb\\x4a\\xd5\\xcb\\x98\\x77\\xfd\\x86\\x1b\\x48\\x2b\\x30\\x15\\x0a\\x06\\x10\\x41\\x61\\x64\\x7e\\x01\\xd0\\x04\\xd9\\x97\\x40\\x3e\\xe0\\x67\\x26\\xcb\\x97\\xe2\\xe2\\x5f\\x18\\xc6\\x68\\xee\\xe4\\xc5\\xbf\\x72\\x52\\x98\\x03\\x18\\x9e\\xe6\\xa7\\xae\\xc2\\x38\\xd5\\x90\\x6e\\xa5\\xae\\x10\\x72\\x2c\\x9a\\x61\\xa7\\x8a\\xea\\x52\\xaf\\x33\\xea\\xac\\x75\\x40\\x6b\\x1a\\x60\\xbe\\xfb\\xaa\\xd4\\x84\\x76\\xd9\\xff\\x88\\x7f\\xd2\\x83\\xeb\\x16\\x55\\xbc\\xc0\\x7c\\xf7\\x53\\x33\\x14\\x36\\xdb\\x5b\\x3b\\x13\\x03\\x2f\\xf9\\xc3\\xd6\\x96\\x38\\x0e\\x9f\\x5a\\xbf\\x50\\xd3\\x55\\x6f\\xda\\x0d\\xf0\\xb5\\x38\\x97\\xa7\\x37\\xac\\x7a\\x3b\\x87\\xc2\\xa8\\x32\\xb0\\xc7\\x27\\x3e\\xa9\\xfc\\x54\\xa7\\x67\\xf1\\xa8\\x12\\xbf\\x01\\x64\\xbf\\x75\\x21\\x63\\x0b\\x81\\xb9\\xdd\\x93\\x0d\\x92\\xee\\x2c\\xa2\\x8e\\x32\\x03\\xb7\\x7b\\xc0\\x82\\xce\\xb3\\x7d\\x55\\xed\\xbc\\xb7\\x1d\\xf0\\xb7\\x92\\x36\\x78\\x9a\\x25\\xd4\\x18\\xcb\\xb9\\x55\\x44\\xe2\\xce\\xf3\\x3b\\xbd\\xeb\\x27\\xa3\\xf7\\x90\\x9c\\x1f\\x49\\x8f\\x47\\x13\\x5a\\xe9\\x03\\x3a\\xdf\\x25\\x0a\\xd4\\xf6\\x57\\x53\\x61\\xe4\\xcf\\xcc\\x9b\\xcf\\x4b\\x90\\xc3\\xad\\x47\\xa3\\x44\\x22\\x97\\xa2\\x23\\xcc\\xa8\\x43\\xd7\\x20\\x5e\\xd0\\x8a\\x9b\\x87\\x16\\x0a\\x6d\\x01\\xb4\\x6a\\x7d\\x1c\\x84\\x4e\\x8d\\x1f\\x18\\xf6\\x18\\x68\\x2b\\xfb\\x22\\x95\\x5f\\x39\\x5b\\x2a\\x57\\x90\\xa5\\x1a\\x69\\x64\\x99\\xd9\\xe7\\x1a\\x50\\x1f\\x3f\\xa5\\x46\\xde\\x9b\\x10\\xae\\x47\\xbc\\xee\\x42\\xba\\x7f\\x86\\x9f\\xb9\\xce\\x4e\\xd7\\xc6\\x45\\x33\\x26\\xc0\\x34\\xcf\\x05\\xd9\\xf1\\xe3\\xc2\\x00\\x70\\x1b\\xa7\\x52\\xda\\xbb\\xd8\\x68\\x52\\x1c\\x3d\\x8f\\x80\\x67\\x2d\\x42\\xf6\\xcf\\x45\\x64\\xf0\\x8c\\xd7\\xb3\\x90\\xe6\\xd4\\x9d\\xd9\\x00\\x90\\xaf\\xdb\\x84\\x48\\x6f\\xfc\\xaa\\x4e\\x84\\xd8\\x86\\x82\\x74\\x4d\\xc0\\xa8\\x78\\xfa\\xa7\\xcd\\x44\\x0a\\x8b\\x27\\x67\\x10\\x90\\x20\\x81\\xf4\\xdc\\x84\\x17\\x46\\x19\\xa6\\x6e\\xa3\\xa3\\x71\\xf9\\x55\\x05\\x40\\x0d\\x99\\xfa\\x99\\x90\\x17\\x71\\x0c\\x8e\\x27\\x14\\xbe\\x60\\x94\\x9d\\x46\\x13\\x10\\xf7\\xd4\\x3a\\x0d\\xc1\\x23\\x51\\x6d\\x77\\xd3\\x62\\x21\\x3f\\x9f\\x75\\xa5\\xa1\\xc3\\x93\\xaf\\xfc\\x49\\xea\\x15\\x1d\\x46\\xa8\\x1f\\xfa\\xd2\\x39\\xf2\\x8c\\x07\\xf6\\x5f\\x59\\xea\\x07\\x7d\\x9a\\x4d\\x9c\\x75\\x2d\\xe4\\x9b\\x9e\\xf3\\x6b\\xe6\\x0d\\x11\\x2d\\x79\\x5f\\x58\\x8b\\x00\\xef\\x6e\\x77\\x30\\xde\\xa6\\x5e\\x10\\x16\\xda\\x0d\\xd4\\x62\\x37\\x0e\\x0b\\xa5\\xc6\\x60\\x00\\x1e\\x45\\x7c\\x08\\xb4\\x36\\xda\\x29\\x03\\xb6\\x29\\x06\\x93\\x20\\x84\\x72\\x8c\\x81\\x67\\x1c\\xbf\\xb0\\x79\\xbb\\x29\"},\n{{0x27,0x2d,0x64,0xde,0x50,0xb1,0x31,0x2b,0xee,0x23,0xd7,0xf4,0xce,0xa5,0x08,0xa8,0xfc,0xcf,0x3e,0x9b,0x32,0x4e,0x97,0xb1,0xc8,0xe7,0x25,0x02,0xf6,0x1f,0xbf,0x45,},{0x33,0x49,0x8c,0x3b,0x71,0x2a,0xb9,0xc0,0x1e,0xc7,0x6b,0x2e,0xfe,0x2b,0x83,0xad,0xd1,0xe1,0xf2,0xb5,0xeb,0x78,0xf2,0x16,0x92,0x32,0x34,0x51,0x82,0x0c,0xbe,0x10,},{0x33,0x81,0x4c,0x6e,0xf3,0x75,0xab,0x96,0x37,0x69,0xb2,0xde,0x4a,0x25,0xe7,0x02,0x0f,0xcd,0x97,0xf7,0x8f,0x8f,0xc9,0x34,0x55,0xc4,0xb1,0xc2,0xbd,0x45,0xd4,0xb0,0x1e,0x19,0x29,0x00,0xe3,0x12,0x22,0x65,0xfc,0x55,0x2c,0xd5,0xc5,0xf0,0x0e,0x93,0x1e,0x3a,0x18,0x3c,0xca,0x5b,0xa0,0x80,0x2d,0xaf,0xde,0xbb,0x79,0xeb,0xeb,0x03,},\"\\xd6\\x26\\x0d\\x7e\\xec\\x5d\\x43\\x62\\x08\\xe7\\xe7\\x37\\x65\\x5e\\x09\\x71\\x81\\x42\\x70\\x19\\x44\\x05\\xe3\\x6e\\x39\\xf8\\xf1\\x7b\\x64\\x9f\\xbc\\x16\\xc0\\xf3\\xd7\\xf2\\xbe\\xf5\\xeb\\xc0\\x2b\\xb1\\xc4\\xdf\\x48\\xe8\\x47\\x0a\\x3e\\xae\\x8a\\x3c\\xca\\xf6\\x40\\xab\\xcc\\x09\\x4a\\xa9\\x11\\x50\\xff\\x1a\\x8c\\xf1\\x16\\x96\\x93\\xeb\\xf5\\xac\\x00\\x34\\xb9\\xb9\\x19\\xec\\xf1\\x7d\\xb7\\x91\\xdf\\xe5\\xfe\\xdc\\x90\\x91\\x8b\\x23\\xe5\\x4e\\x90\\x04\\xa1\\xae\\x77\\x1c\\x21\\x3e\\xd7\\xed\\x73\\x34\\x43\\x4e\\x5b\\xc0\\x2c\\x0d\\xda\\x2b\\xd1\\xa8\\x76\\xfb\\x82\\x4a\\x19\\x7b\\xc9\\x96\\x13\\xb1\\x40\\x9e\\x70\\x52\\x31\\x0b\\x08\\x20\\xda\\x71\\x44\\x69\\x29\\xae\\x7c\\xfd\\x3a\\xfb\\xa0\\x42\\xde\\x54\\x57\\x8a\\x5b\\xfd\\x94\\xc1\\x54\\x43\\x91\\xa3\\xd9\\xac\\xbd\\x56\\x63\\xef\\x65\\xc6\\x92\\x0d\\x78\\x51\\x6d\\xec\\x1c\\xd5\\x5f\\x6e\\xb7\\x29\\x0b\\xa0\\xaa\\xf9\\xa1\\x71\\x65\\x82\\x00\\xb2\\x4a\\x47\\xa0\\x71\\xb9\\x6f\\xea\\x03\\xc6\\xca\\x7e\\xd0\\xd6\\xfe\\x67\\x5d\\xd6\\x37\\x61\\x83\\x3d\\x75\\xbc\\x5e\\x58\\xa9\\x58\\x58\\x2d\\xb0\\x2a\\x60\\xc6\\xce\\x0a\\x63\\xf4\\x2b\\xa8\\x37\\xae\\x77\\xc1\\x7a\\x32\\x70\\x5f\\xd9\\xca\\xfa\\x58\\x7b\\x55\\x5d\\xd4\\x61\\x98\\x51\\x07\\x97\\x94\\xe2\\x4e\\xb4\\x46\\x08\\x83\\x5a\\x6f\\x48\\x24\\x92\\x0d\\x57\\x7a\\x27\\x03\\x96\\xc9\\x57\\x3b\\xc7\\xd8\\x2f\\xe2\\xaa\\x04\\x65\\x95\\x66\\x13\\xa2\\xc5\\x08\\xcf\\x24\\x32\\x33\\x7a\\x36\\x5e\\x6c\\x98\\x4c\\xba\\x91\\x7f\\x0c\\xf8\\x42\\xaf\\x12\\x2d\\xc8\\x9d\\xea\\x95\\x8d\\x41\\x8c\\xae\\x44\\xa6\\xe4\\xed\\x26\\x3a\\x41\\x5f\\xf9\\x94\\xa5\\xff\\xb2\\xff\\x13\\x91\\x3d\\xf2\\x14\\xbb\\xfe\\x90\\xa3\\x4b\\x24\\x7e\\x71\\xab\\x73\\xf7\\xff\\x00\\x4c\\x23\\xac\\xfd\\x90\\xc7\\x67\\x61\\x1a\\xa5\\x58\\x14\\xc6\\x69\\x64\\x16\\x8e\\x56\\x8b\\xa7\\x5b\\xf3\\x49\\x03\\x59\\x7c\\xdc\\xac\\x78\\xc2\\x4b\\xb9\\xf1\\x4f\\x5c\\x86\\xa5\\x1f\\x36\\x4f\\x9a\\xb4\\x1e\\x46\\x4a\\xee\\x64\\xfa\\x50\\xa1\\xc1\\x59\\xcb\\xd8\\x50\\x83\\x2c\\x50\\x4a\\xb4\\x2a\\x58\\x4a\\x96\\xd5\\xae\\xe0\\x82\\xd8\\x2c\\x1e\\xdd\\xa1\\x93\\x38\\x16\\x0b\\x8d\\xcf\\xa3\\x41\\x9b\\x3a\\xf6\\x4d\\x9c\\xfb\\x10\\x4f\\x98\\xf9\\xd3\\x5e\\x53\\x94\\xe2\\x32\\x28\\xe2\\x75\\xc8\\x7d\\xb5\\x0c\\xa8\\x67\\x54\\x0b\\x88\\x0c\\x7a\\xf2\\x9f\\xbf\\x53\\x42\\x94\\x58\\x1c\\x22\\x24\\x0b\\xcd\\x4d\\x7d\\x2c\\x20\\xff\\xc3\\x67\\x33\\xad\\xa2\\x76\\x53\\xd3\\xae\\x1a\\x8c\\x22\\x03\\xea\\xc6\\x26\\xe2\\xe9\\xbb\\x4b\\x52\\xce\\x52\\x3e\\x5a\\xdb\\x3b\\x2c\\x10\\xdc\\xf7\\x8c\\x2a\\x1e\\x62\\x6a\\x16\\xeb\\xfa\\x1b\\xdb\\x8c\\x16\\x14\\x93\\xa5\\xaa\\xa2\\xd8\\x4b\\xfa\\xa0\\xf2\\x02\\x7f\\xfe\\x4e\\x9e\\xae\\xb3\\x32\\xeb\\xda\\x7c\\xbb\\xb6\\x77\\x76\\x9d\\x78\\x51\\x7a\\xdf\\x72\\xf8\\x23\\xa7\\xf8\\x44\\x16\\x5a\\x07\\x98\\x78\\xd2\\x58\\xfd\\x95\\x22\\x5c\\x21\\x17\\x78\\x37\\xe6\\x9c\\x19\\x68\\x5a\\x05\\x1c\\xa9\\x2b\\x12\\x0b\\x7d\\x86\\xd7\\x85\\x95\\x47\\x1f\\xfc\\x42\\xa5\\xe6\\xe6\\x43\\x1b\\xe7\\xb6\\x4f\\x80\\x76\\x45\\x8b\\xac\\xd6\\xc7\\x29\\x03\\xcc\\x34\\xfc\\x63\\xa4\\x0c\\xf3\\xdf\\x00\\xef\\xf9\\xd6\\xee\\x9a\\x8f\\x39\\xd2\\x5e\\xad\\x81\\xa8\\x12\\x88\\x88\\xb0\\xa1\\xac\\x0e\\x5e\\x3a\\xd9\\x27\\x71\\x2c\\x14\\x14\\x6a\\xdf\\x82\\x87\\x70\\xff\\x95\\x87\\x09\\xeb\\x19\\x28\\x8e\\x77\\xbb\\x70\\x73\\x48\\x81\\xe9\\xe0\\x16\\xcd\\x29\\xe7\\xd0\\x89\\x93\\x41\\xff\\x6b\\x29\\x7a\\xc7\\x96\\xbb\\xde\\x48\\x6e\\xc3\\x59\\x49\\xf6\\xa3\\x2b\\x2c\\xa6\\x47\\x38\\x59\\x15\\xec\\xba\\x3b\\x9f\\x02\\x25\\x08\\x71\\x45\\xc1\\x8d\\x65\\x59\\xd3\\xa3\\x1d\\x6f\\x22\\xfc\\x49\\xf8\\xa6\\x31\\x5f\\x1d\\x32\\xab\\xee\\xb7\\xcf\\x2c\\x2c\\x77\\x6e\\xa7\\x35\\x0f\\xd5\\xeb\\xc0\\xe0\\xf2\\x65\\xba\\xcc\\xc2\\x69\\x7a\\x7c\\x8c\\xa4\\x0c\\x13\\x5f\\x6c\\xfc\\xb0\\xb5\\x8a\\x61\\x43\\x19\\x60\\xff\\xa9\\x06\\x57\\x09\\xa9\\x61\\xa6\\x33\\xd5\\x70\\xb7\\x3f\\xb4\\x49\\x1d\\xe5\\x2a\\xd0\\xd7\\xb2\\x04\\xb6\\xe9\\x97\\xb0\\x37\\xed\\xe3\\xf7\\xec\\xa8\\x20\\xa7\\xcd\\xb2\\xc6\\x9a\\xc2\\x91\\x48\\xbe\\x35\\x23\\x50\\x8a\\xe7\\xe4\\xc3\\xd1\\xa7\\x17\\xf5\\x5a\\x82\\x1d\\x14\\xc3\\xb6\\x4f\\x08\\xca\\x9a\\xe4\\x96\\x13\\xb1\\x15\\x77\\x3e\\xf6\\x18\\xd3\\x21\\xc9\\x08\\xbd\\x21\\x56\\x71\\x7a\\x43\\x4e\\x50\\x89\\xa5\\x94\\x8c\\x04\\x5c\\x8d\\xa8\\xa4\\xbd\\x86\\xed\\x5f\\xab\\xc6\\xb1\\x34\\x66\\xe6\\xde\\xda\\x58\\x32\\x07\\xd2\\xad\\xa2\\xb2\\xab\\x9c\\xb1\\x54\\x3d\\xf7\\xa3\\x73\\x4d\\xfb\\xc6\\xfc\\x42\\x81\\x06\\xd4\\x84\\x47\\x24\\xa1\\x3d\\xf4\\x2f\\xaa\\xb1\\x8c\\xa8\\x9d\\xb2\\x0a\\xc9\\xbc\\x27\\xb8\\x53\\x94\\x66\\x7c\\x5a\\x27\\x79\\xca\\x63\\xed\\x7a\\xc2\\xb7\\xc0\\xd4\\x12\\x23\\x91\\xee\\x46\\x02\\xd6\\x1e\\xa0\\x38\\x17\\x64\\xfb\\x72\\xdc\\xc2\\x24\\xe6\\x5e\\xae\\x2b\\xc4\\x50\\x6b\\x0f\\x09\\xe2\\x32\\x05\\xd0\\xbb\\x21\\xc7\\x7d\\x82\\x87\\xc1\\x65\\xe0\\xb4\\x2c\\x55\\x15\\x79\\x77\\x8a\\xcb\\x72\\x58\\xa2\\x47\\x9d\\x7c\\xf2\\x5b\\x90\\x2e\\x8d\\x0d\\xa4\\x29\\xbd\\xe3\\x6b\\x45\\x90\\xda\\xe9\\x6f\\x52\\x54\\x81\\xac\\x83\\x78\"},\n{{0x0c,0x9f,0xe5,0x59,0xad,0x1e,0xd3,0xba,0x16,0x4d,0xac,0xea,0xcb,0x02,0x35,0x67,0xb2,0x43,0x03,0x20,0xb6,0x71,0x5d,0xe7,0x32,0xa0,0x3c,0x59,0xc7,0x30,0x31,0x30,},{0xe7,0x0f,0xc4,0x66,0xfb,0x2a,0xcd,0x74,0xe0,0x99,0xc3,0x6e,0x2c,0x22,0xfa,0x51,0x29,0x0b,0xdd,0xe9,0x6d,0xf9,0xc3,0x1b,0x6d,0xfb,0xfd,0xc2,0xe2,0xc1,0x4a,0x40,},{0x6c,0xd8,0xae,0xd9,0x7d,0x9c,0x62,0xd5,0xfd,0xae,0x59,0x7d,0x06,0x1c,0x0c,0x2b,0xc3,0x7e,0x42,0xdf,0x06,0xb8,0x32,0x7a,0x46,0x8f,0x92,0xb3,0xf4,0x38,0xa1,0xe6,0xb6,0xb1,0xef,0x2b,0xe7,0x85,0x49,0xa2,0x89,0xfd,0x3f,0xc1,0xa6,0x29,0x9e,0x5a,0x33,0xd5,0x39,0x6c,0xb4,0xfa,0xc1,0xe8,0xe9,0x98,0x2f,0x0c,0xb3,0xd2,0x0d,0x07,},\"\\x26\\xeb\\xc6\\x48\\xcf\\x8c\\x79\\x65\\xec\\x6e\\xbe\\x96\\x5d\\x9c\\x79\\x2b\\xed\\x90\\x65\\x5a\\xd4\\x40\\x18\\x3c\\x6d\\x70\\xea\\x64\\x67\\xbb\\x8e\\x6f\\x04\\xec\\x84\\x3f\\x33\\x31\\x56\\x91\\x7b\\xf4\\xc5\\x1d\\x0e\\xd0\\xf2\\x8b\\x7c\\xd3\\x1b\\xc1\\x2c\\xf8\\x40\\x68\\x6b\\x82\\xb0\\xc2\\xc3\\x50\\xbb\\xda\\xc8\\x05\\x33\\x37\\x25\\xd6\\xb6\\x9c\\x2a\\xb7\\xf3\\x4e\\xe5\\x93\\xfa\\x1c\\xcc\\xed\\xf3\\xf0\\x64\\x2a\\x68\\x8f\\xcc\\x1c\\xd9\\x8b\\x09\\x87\\xd0\\x1f\\x71\\x3a\\x2f\\xa6\\x41\\x6c\\x96\\x19\\x21\\xde\\x0c\\xc2\\xc9\\xec\\x7a\\x55\\x58\\x55\\xe7\\xfc\\xd4\\xc7\\xdd\\xaa\\x14\\xfd\\x91\\xec\\xb0\\x42\\x24\\xe1\\x76\\x1b\\x7d\\x6b\\x35\\xf4\\xaa\\x56\\x18\\xa5\\x00\\xca\\x00\\xd1\\xca\\x24\\x51\\xb5\\xd3\\x68\\xaf\\xde\\x3a\\x40\\x7e\\x78\\x31\\x35\\xf3\\x90\\x19\\xa5\\xb9\\x84\\xe8\\x2a\\xc2\\x79\\xc0\\x5e\\x48\\xc2\\x95\\xeb\\xd1\\x56\\x38\\x21\\xa0\\x74\\x3c\\x52\\x24\\x6b\\x5d\\x2b\\x20\\x34\\xe3\\xae\\xb6\\xce\\x7c\\x5c\\xf9\\x19\\xe7\\x4a\\x9c\\x7b\\xbc\\x9e\\x25\\xda\\x30\\x43\\x0e\\xb1\\x6e\\xcf\\x38\\x37\\xeb\\x38\\xa0\\xf5\\x59\\x79\\x2a\\x72\\x98\\x90\\xba\\x83\\x10\\x26\\x0f\\x8a\\xeb\\x9b\\x5a\\xf0\\x0e\\xb6\\x33\\xc1\\x2d\\xee\\x02\\x26\\x28\\xba\\x41\\x8d\\x75\\xcf\\x18\\xde\\x2f\\x2e\\x65\\xe4\\x9b\\x1a\\x69\\x68\\x4d\\x61\\x27\\xef\\x48\\x1c\\xa8\\x61\\xec\\xbc\\xe3\\xbe\\x86\\x49\\x7e\\x65\\xdf\\x4c\\x5f\\xcd\\x08\\x17\\xc9\\x71\\x6b\\x59\\xf2\\xa2\\x63\\xd5\\xe9\\xeb\\x60\\x68\\x39\\xf8\\x5c\\x5a\\x36\\x58\\x37\\xb0\\xfb\\xe2\\xc4\\x27\\x4d\\x66\\xcb\\x2c\\x65\\xed\\x36\\x5f\\xab\\xf5\\x8f\\x15\\xbe\\x52\\xb5\\x1c\\xb6\\x01\\x18\\xca\\x4f\\x73\\x0d\\x44\\x73\\x59\\xf7\\xef\\x34\\x6b\\x75\\x02\\x17\\xd4\\x7b\\x2e\\x79\\xc8\\x6c\\x0c\\x62\\x81\\x6a\\x0c\\x7c\\x18\\xa2\\xce\\x2b\\x68\\x8e\\x0c\\xce\\x0d\\x75\\x23\\x21\\xe7\\x9b\\x42\\x38\\x57\\xda\\xc5\\x9f\\x8f\\xbe\\xb0\\x94\\x11\\xe7\\x16\\x69\\xef\\x9a\\x26\\x43\\xf2\\xe9\\x9f\\x38\\x7a\\xc1\\x83\\xe0\\xb0\\xac\\x72\\xc5\\x9a\\x0c\\x3c\\x18\\xc0\\xde\\x8b\\x01\\x08\\x78\\x07\\x4a\\xcc\\x1a\\x2b\\x39\\xf9\\xdf\\x99\\xd9\\xf8\\xf8\\xb5\\x2f\\xef\\xe4\\x94\\x3c\\x52\\x5f\\xd4\\xd0\\x6a\\xd8\\x78\\xe4\\x66\\x08\\xab\\xf2\\x7a\\x54\\xbc\\x50\\x06\\xf6\\x47\\xdb\\x72\\x48\\x51\\xdb\\x7c\\x45\\x78\\xae\\x66\\x58\\x3d\\xc4\\xbb\\x51\\x8e\\xf0\\x28\\x89\\x03\\x47\\xe8\\xfc\\xe0\\x92\\x7d\\x7d\\x9a\\xf3\\xab\\x5d\\x0d\\x2d\\x20\\x2a\\x40\\x26\\xaa\\x2e\\xa7\\x48\\x79\\x62\\x67\\x6a\\x60\\x32\\x98\\xe7\\xd2\\xe7\\xb9\\x09\\x21\\xee\\x1b\\x52\\x80\\x6d\\x71\\xa7\\x64\\xe0\\x3e\\x25\\xdd\\xd6\\x84\\x8f\\x61\\xd4\\x6f\\xad\\x3d\\x00\\x8e\\x10\\xee\\x5c\\xd5\\xa3\\x39\\x0f\\x9d\\x15\\x8a\\x44\\x37\\xef\\x61\\x5f\\xc9\\x0a\\xc5\\xbf\\x3a\\x9d\\x68\\x2e\\x12\\xc3\\x39\\x8a\\xc7\\x76\\x80\\xd2\\x2c\\xd1\\xa6\\xa5\\x6e\\xc3\\xb2\\x5c\\xed\\xe8\\x67\\xed\\xd3\\x83\\x15\\x9c\\x61\\x64\\xd6\\x3e\\x9c\\xd1\\xc9\\x56\\xac\\x72\\x35\\xff\\xfa\\xe9\\x36\\x16\\x6c\\xcd\\x35\\x89\\x8e\\x29\\xc9\\xb4\\xca\\x4e\\x29\\x25\\xda\\x32\\x3b\\x6f\\xbf\\x67\\xcf\\xd5\\x96\\xc8\\x8a\\x1a\\x35\\xa8\\x35\\x98\\x51\\xdd\\xcb\\xa8\\xf6\\x13\\x4a\\x9f\\xaa\\x24\\x4d\\xcb\\x47\\xe6\\x91\\x27\\x6e\\xe6\\x25\\xcc\\x20\\xad\\xce\\xc2\\x1c\\xbe\\x77\\xa3\\xac\\xb9\\xba\\x72\\xf0\\xc9\\xd3\\xda\\x7e\\x9c\\xd5\\xbe\\x3b\\x95\\x99\\x0b\\xa5\\x4a\\x9f\\x31\\xaf\\x17\\x1f\\x95\\xae\\xea\\xd3\\x33\\x1c\\xb1\\x88\\xa5\\xb2\\xc6\\xf5\\x39\\xac\\xb4\\x8b\\x98\\xb3\\xf7\\x34\\x1f\\x60\\x25\\x1c\\xb6\\x04\\x29\\xcc\\xd9\\xcf\\x32\\xf0\\x09\\x20\\x5f\\x27\\x53\\xfb\\xbb\\x26\\xaa\\x53\\x17\\x43\\x42\\xad\\x18\\x4d\\xab\\x68\\x70\\xc0\\xfb\\x52\\x93\\x01\\x19\\xd9\\xf9\\x7d\\x84\\x89\\xa6\\x00\\x76\\xaa\\xdb\\x2e\\x96\\x05\\x4a\\xc7\\xcb\\x7f\\x84\\xe1\\x3c\\x75\\xbb\\xf9\\xe4\\xd9\\x24\\xd2\\x27\\x2a\\xfe\\xf0\\x87\\x19\\x15\\xe2\\x43\\xce\\x66\\xfc\\x2a\\x88\\x88\\x51\\x35\\x35\\xb1\\x0b\\xb4\\x07\\x9c\\x80\\x6b\\xd9\\x49\\x28\\x1e\\x28\\x28\\x35\\x23\\xd0\\xd2\\x10\\xb3\\x1e\\xf6\\x2a\\x95\\xdc\\xae\\x0c\\xd2\\x52\\x90\\xc7\\xed\\xf2\\xc2\\x4b\\x43\\x28\\x22\\xde\\xbe\\x34\\x7f\\x1c\\xae\\x94\\x5f\\x57\\x28\\xc7\\x1b\\x54\\x03\\xef\\x14\\xe7\\x2c\\x3d\\x83\\x42\\xe1\\x98\\xb3\\x62\\xee\\x20\\xf8\\x09\\xe4\\x6a\\xca\\x01\\x5f\\x35\\x47\\x7f\\xf8\\x9a\\xc4\\xb3\\x7e\\x66\\x15\\x85\\x6f\\x7e\\xa2\\x51\\xfb\\xfe\\x13\\xf9\\x06\\x52\\x59\\xb0\\x94\\x6a\\xae\\xf2\\x49\\x43\\x27\\x0a\\x85\\x4d\\xe8\\x89\\x78\\x00\\x33\\xd6\\x3d\\xda\\x54\\x47\\x99\\x8a\\x3e\\xd7\\xe5\\x06\\xae\\xb5\\x1e\\xa3\\x7b\\x68\\x1a\\xc3\\x07\\x67\\x97\\xac\\xdb\\xfc\\xc2\\x78\\x83\\x63\\x0a\\xdb\\x72\\x26\\x0a\\x46\\xaf\\x0a\\x60\\xd5\\x3f\\x66\\x54\\x56\\x6e\\x20\\xd6\\x08\\x8c\\xd4\\x8e\\x23\\xb2\\x8d\\x81\\xf0\\xee\\xd2\\x05\\xb9\\x2a\\xaf\\xd9\\x61\\x64\\xd6\\xd3\\xca\\x3f\\xc8\\xb1\\x71\\x80\\x4e\\xe9\\xfc\\xe7\\xab\\xae\\xd2\\xea\\x4d\\xdf\\x9c\\xb2\\xb3\\xae\\x73\\xa7\\x0e\\xd6\\x3d\\xe4\\x5e\\x14\\x10\\x14\\x28\\xd0\\xa7\\xa2\\x26\\xdb\\x39\\xab\\x6c\\xd0\\x43\\x74\\x08\\x0e\\x69\\x83\\xf0\\x18\\xce\\x93\\xda\\x4c\\x89\\xac\"},\n{{0x15,0xd7,0x5a,0xd8,0xe4,0xaf,0xb1,0x26,0x34,0xcc,0x8e,0x60,0x0f,0x1a,0x42,0x67,0xef,0x95,0x84,0xf4,0xc4,0xac,0x44,0xff,0xfe,0x4b,0x9f,0xcb,0x88,0x5c,0x9d,0x2a,},{0x09,0xd1,0x26,0xf0,0x17,0xe0,0x16,0x97,0x74,0xe8,0xc3,0x7a,0xb3,0x79,0x26,0x3a,0x80,0x75,0x74,0x61,0x27,0xc2,0xd1,0x1e,0xcb,0x0e,0x4c,0xb4,0x54,0x70,0x9f,0xf1,},{0xa8,0xf2,0xf4,0xb9,0xe2,0x07,0x2c,0xa9,0xfa,0xde,0x37,0xfd,0xd6,0x2d,0x8d,0x02,0x42,0xfd,0x4d,0xaa,0x09,0xfd,0x85,0x6e,0x75,0xf4,0xe3,0x43,0xc7,0x26,0x0e,0xa6,0x77,0xf7,0x53,0xa6,0x27,0xae,0xd0,0x8c,0xb9,0x6c,0x44,0x4e,0x29,0xbd,0xb5,0xb5,0x38,0x5d,0x43,0x84,0x3b,0xbe,0x79,0xa3,0xdd,0xa3,0x6e,0x1e,0x11,0x01,0xc5,0x0f,},\"\\xd1\\xce\\xa2\\xb7\\xe9\\xaf\\xc1\\xf0\\xfa\\xb8\\x90\\xd2\\x70\\x0a\\x5a\\xe4\\x1e\\x15\\xe7\\xd3\\x4d\\x3b\\xf1\\x9d\\x0f\\x34\\xd9\\xf9\\xf0\\xab\\x98\\x12\\xdc\\x7c\\x2a\\x8d\\xc4\\x4c\\x8e\\xe7\\xf3\\x78\\x87\\x61\\xec\\xd9\\x88\\xee\\x72\\xc7\\x36\\xb6\\x2a\\x7c\\xac\\x3c\\xc9\\xb7\\x38\\xe9\\x38\\xdf\\x77\\x87\\x37\\x7e\\xb9\\xff\\xd1\\x20\\xd4\\xff\\x58\\xcf\\x1c\\x06\\x75\\x63\\x3f\\x7e\\x83\\xc4\\xb1\\x15\\x54\\x8f\\x14\\xd2\\xf7\\x0c\\x6d\\x48\\x22\\x11\\x44\\x3a\\x84\\x99\\x59\\x95\\x58\\xc1\\x42\\x77\\x98\\x0f\\xa4\\x2a\\x78\\x42\\x79\\x07\\xf7\\x3a\\x41\\xf5\\xf6\\x69\\x3b\\x2f\\x75\\xfe\\x5e\\x7a\\x6f\\xf0\\xa6\\xc3\\xa4\\xe2\\xed\\x1d\\x0d\\x96\\x8d\\x5c\\xc9\\xd6\\xf1\\x3d\\x41\\xc3\\xd2\\x91\\x39\\x6a\\xe7\\xe4\\x34\\xe6\\x64\\xb2\\xff\\x24\\x3e\\x7f\\x6d\\x88\\x01\\x02\\x10\\x07\\x8c\\x39\\xb5\\xa5\\x76\\xca\\xf4\\x09\\xbb\\x47\\x11\\xb3\\xee\\xfc\\x48\\x6b\\x67\\xb7\\xff\\xea\\xe0\\xcb\\xac\\x6a\\x0f\\xbd\\xf5\\x34\\x3f\\xb2\\xae\\x4e\\x05\\x7e\\xdc\\x8c\\x9d\\x2e\\xd3\\x1e\\xae\\x9e\\xc8\\x3d\\x2b\\xed\\xd2\\x19\\xeb\\x98\\x9b\\x2d\\x44\\x19\\x61\\x8c\\x2d\\x3c\\xe4\\x49\\x0e\\x35\\xfb\\xca\\xd4\\x32\\xb0\\x12\\x47\\x95\\xf9\\xc5\\xcb\\xdc\\x1e\\xb0\\xc3\\x07\\x2b\\x4a\\xa8\\x01\\xd2\\x6f\\xbc\\xc7\\xb0\\x7b\\x82\\x57\\xf5\\xfe\\x47\\xac\\xd9\\xbc\\x58\\x7b\\x56\\x57\\xcf\\x07\\xca\\x54\\x5b\\xb5\\x68\\xc9\\xe4\\xe7\\x3c\\xdd\\xf6\\x25\\x4e\\x22\\xf7\\x8a\\xb2\\xf8\\x06\\x45\\x19\\xf8\\xab\\xfd\\x16\\xfc\\xfa\\x90\\xf8\\x76\\x87\\xdb\\x0c\\x42\\x09\\xbe\\x2c\\x6c\\x79\\xa5\\x52\\x1f\\x44\\x18\\x96\\x78\\xd9\\x32\\xc5\\x45\\x85\\x70\\x0a\\x24\\x37\\x70\\x2e\\x56\\xaa\\xb5\\x88\\xa1\\x7c\\xb2\\xcc\\x94\\xc0\\x0e\\x87\\x57\\x0e\\xf3\\xac\\x51\\x33\\xd7\\x53\\x03\\x8a\\xa4\\x65\\x10\\xa2\\x60\\xc1\\xfe\\x80\\x47\\x9b\\xc0\\x2e\\xed\\x9a\\x8d\\x1d\\xe9\\x93\\x54\\xac\\x26\\x48\\xb4\\x8b\\x96\\xab\\x1b\\x80\\xcc\\xa6\\xca\\xe1\\x87\\x7f\\x37\\xd7\\x04\\x28\\xbb\\x50\\x85\\x0e\\x03\\x08\\xdb\\x0b\\x42\\x30\\x87\\xbf\\x7d\\xde\\x27\\x9e\\x09\\x67\\x66\\xf2\\xab\\x3a\\xb2\\x38\\x5b\\x04\\x64\\xa5\\xbe\\xd7\\xbb\\xd8\\xd4\\x57\\xe9\\x35\\xe2\\x00\\xaa\\xaa\\x8d\\x95\\x15\\x70\\xe0\\x53\\x07\\x6d\\xb1\\x8a\\x6a\\x62\\xf7\\x2b\\x31\\x95\\x79\\x88\\x4a\\x08\\x26\\xba\\x2b\\x43\\x63\\x71\\xdd\\x21\\x8b\\x01\\xa0\\xc5\\xe5\\x8d\\x0c\\xd5\\xff\\x98\\x25\\xe4\\x46\\x6f\\xe9\\x66\\xdf\\x05\\xcc\\x31\\xc8\\x03\\xe5\\x21\\x21\\x83\\xdd\\xf2\\x9c\\xef\\x7f\\xb9\\x16\\x48\\xa4\\xf8\\xee\\x19\\xfd\\x5f\\x8d\\xbd\\x8a\\x56\\xbe\\x7a\\xbf\\x33\\x65\\x9a\\x92\\x24\\xa1\\xe2\\x7a\\x10\\x24\\xef\\xfd\\xfb\\x88\\xe8\\x80\\x61\\x48\\xd0\\xd1\\x78\\x09\\x06\\xaf\\x1e\\xbe\\x3e\\x5f\\x14\\x36\\x31\\x90\\xd8\\x8c\\xc6\\xe5\\x08\\x94\\x44\\xf1\\x25\\xd0\\x63\\x15\\x5d\\xcf\\x86\\xca\\x92\\x63\\xf2\\xf5\\xf1\\x83\\xc2\\x69\\x74\\xfe\\x00\\x0b\\x93\\x42\\xd2\\x4c\\x78\\x1e\\x20\\x58\\x28\\x7c\\xb6\\xf3\\xf1\\xe3\\x27\\x0c\\x22\\xb7\\x70\\x7b\\x83\\x23\\xa5\\xcc\\x8d\\xb8\\x1a\\xa9\\x06\\xbb\\x59\\xd6\\x96\\xcb\\x97\\xcc\\x74\\xe3\\x59\\x59\\x5f\\xfb\\x83\\x73\\xca\\xd3\\x71\\x0e\\xa0\\x9e\\xa9\\x74\\x4c\\x20\\xe9\\xa1\\x2e\\x05\\xbe\\x5a\\x95\\xf0\\x85\\xac\\x56\\x16\\x78\\xd7\\xda\\x43\\x2e\\x4c\\x7c\\xb5\\x3e\\x12\\x71\\xdf\\x5c\\xd5\\xa3\\x39\\xd2\\xd7\\x52\\x0f\\x1c\\x18\\x48\\xd1\\x50\\x71\\xd8\\xc6\\x98\\x46\\xb2\\x3c\\x5d\\x24\\x32\\xc7\\x38\\x90\\xf2\\xed\\xed\\x37\\xc3\\xd2\\x96\\x4a\\x4b\\x5b\\x55\\x22\\x58\\x88\\xe8\\x92\\xf5\\x26\\xd1\\xca\\xc3\\x1e\\xac\\x35\\x6f\\x36\\x1c\\x2b\\xf3\\x36\\xc4\\x62\\xd6\\x0c\\x82\\xe8\\x2b\\x61\\x6f\\x2a\\x51\\x9c\\x2f\\x67\\xbf\\x01\\x29\\x03\\x69\\xbe\\x9b\\x55\\xe9\\xf5\\xc8\\xce\\xc4\\xf2\\xe1\\xb2\\xab\\x30\\x25\\x06\\xc9\\x03\\xdc\\x3e\\x7b\\x9c\\x97\\x81\\x41\\xdc\\x90\\x4b\\x01\\xb1\\xc2\\x3d\\x25\\x00\\x43\\x99\\xbf\\x8b\\x73\\xd6\\x9c\\xd5\\x39\\xc7\\x9a\\xf5\\xe9\\xa0\\xa5\\x11\\xec\\xa2\\x21\\x07\\x8a\\x1f\\xf7\\xb0\\xf6\\x04\\xae\\xa8\\x42\\x46\\xc3\\xcb\\x32\\xdb\\x93\\x81\\xbe\\x12\\x17\\x67\\xe0\\x97\\xbe\\xa5\\x17\\xbf\\xcd\\x82\\xdf\\xe9\\x21\\x37\\x98\\x40\\xef\\xb4\\xb6\\xf0\\x2a\\x48\\xec\\xda\\xf1\\x2d\\x2c\\xd3\\x89\\x30\\xd4\\x47\\x3a\\xdf\\x97\\xcd\\x71\\xdc\\x4e\\xa1\\x03\\x82\\xf4\\xf5\\xd1\\xdd\\x75\\x62\\xcd\\x4b\\xf5\\x11\\x59\\x32\\xf6\\xc4\\x70\\x0a\\xa8\\xfe\\x8d\\xec\\xa9\\xd5\\xe7\\x27\\x79\\x02\\xb8\\xf8\\x86\\x52\\x97\\x65\\xdb\\x24\\x86\\x07\\x4b\\x23\\xa1\\x9f\\xd4\\xb0\\x43\\x56\\xbf\\xa6\\x22\\x6c\\x82\\xba\\xf6\\x9a\\x08\\x7d\\x9c\\xa1\\x88\\x23\\xf8\\xe3\\xe6\\x83\\x08\\xe1\\x6b\\x80\\x4c\\x36\\x3d\\xf5\\xb6\\x30\\x7e\\x76\\x24\\x0d\\xb1\\xed\\x84\\x1b\\x61\\x2d\\x65\\x54\\x8d\\xdf\\xbe\\x83\\x67\\xda\\x60\\x77\\x2c\\x6a\\xff\\x55\\x4d\\xc8\\x5d\\x04\\x19\\x48\\x34\\x5e\\x56\\x7d\\xa9\\x33\\x31\\x51\\x85\\x8f\\xdf\\x69\\x93\\x27\\x39\\x25\\xbf\\xdc\\x71\\x81\\xb5\\xf6\\x46\\xd0\\x63\\xa8\\xc8\\xf3\\x10\\x56\\x9b\\x0e\\xd0\\x93\\xbd\\x9d\\xff\\x04\\xfe\\xbf\\x0b\\x41\\xc6\\xdc\\x55\\x16\\x9a\\x14\\xa3\\xc8\\x62\\xe5\\x41\\x6f\\x1e\\x58\\x2f\\xde\\xe8\\xfe\\x87\\xdc\"},\n{{0xbf,0x3c,0x0c,0xbb,0xbe,0x20,0xbe,0x2a,0xcf,0xaf,0xb2,0x7a,0x36,0x11,0xb4,0x89,0x21,0xa7,0x28,0xab,0x17,0x33,0x4b,0x8a,0xfd,0xee,0x83,0x05,0x17,0x8f,0x61,0x3b,},{0x45,0x00,0xa0,0x3c,0x3a,0x3f,0xc7,0x8a,0xc7,0x9d,0x0c,0x6e,0x03,0xdf,0xc2,0x7c,0xfc,0x36,0x16,0xa4,0x2e,0xd2,0xc8,0xc1,0x87,0x88,0x6d,0x4e,0x6e,0x0c,0x27,0xfd,},{0x8f,0x87,0x03,0xbc,0xf4,0xc0,0x32,0x94,0x17,0x33,0x9e,0xb0,0x26,0xf2,0xb7,0x2d,0x31,0x4d,0x92,0x2e,0x9a,0xcc,0xb5,0xd8,0xbb,0x7e,0xec,0x87,0xe0,0x7e,0x61,0x38,0x55,0x16,0x72,0xa6,0x13,0x2c,0xb4,0xf8,0x75,0x50,0x8e,0xd3,0x29,0x95,0x67,0xb4,0xa7,0x41,0x34,0xd2,0xbd,0xf0,0xd8,0x57,0xf9,0x80,0x86,0x1d,0x18,0xbe,0x7e,0x01,},\"\\x8f\\x30\\xba\\x2f\\x79\\x2e\\x9a\\x97\\xf6\\xea\\xfe\\x29\\xf9\\x76\\xa4\\x80\\x28\\xcb\\x88\\x57\\xb5\\xc7\\x98\\xbc\\x2b\\x61\\x68\\xc4\\x64\\x44\\xc0\\xce\\x69\\x60\\x70\\x37\\x4c\\x5e\\x6a\\x40\\xc3\\xd1\\x8a\\x5d\\xc7\\x66\\x9f\\xc4\\x1d\\xb9\\xa8\\x1c\\xff\\x75\\x9b\\x8c\\xa0\\x15\\x98\\x71\\xc3\\x44\\x2e\\x8c\\x75\\x12\\x69\\x8f\\xa4\\x47\\xb5\\x78\\x3e\\xe0\\x1d\\x1b\\x61\\x14\\x49\\xab\\xad\\x23\\x71\\x62\\x92\\x2b\\x02\\xd1\\xae\\xc5\\xde\\x1d\\x66\\x6f\\x17\\xda\\x16\\x13\\x10\\x63\\x01\\xd3\\x05\\x86\\xd1\\x16\\xe2\\xac\\x09\\x00\\x7d\\xd7\\x1e\\x81\\x23\\xed\\xe4\\xc5\\xa6\\xa9\\xac\\x07\\x7f\\xe3\\xd9\\x39\\x09\\xda\\x62\\x8e\\x86\\x58\\x70\\xa4\\xe2\\x5c\\xb3\\x55\\x91\\x67\\x5a\\x06\\x90\\xbe\\xc4\\xaf\\x02\\x81\\x71\\x4f\\xe6\\x66\\x1b\\xd5\\xc0\\x0a\\x27\\xd7\\x9f\\x95\\x9f\\xb4\\xd4\\xfb\\x16\\x36\\xa6\\xa3\\x57\\x5f\\x4f\\x01\\x47\\x06\\x63\\x89\\x9d\\x73\\x74\\x72\\xb0\\x96\\xbe\\x4d\\xb7\\x23\\x71\\x53\\x67\\xa4\\x1a\\x3a\\x4c\\x13\\xf7\\x42\\xd9\\x08\\xf4\\xd9\\x21\\xcf\\xdd\\x15\\x6e\\x75\\x86\\x82\\x61\\xba\\x9c\\x10\\xd8\\x58\\x74\\xca\\x2d\\x6c\\x0c\\x9e\\x72\\x95\\xe5\\x66\\x2b\\xd9\\x16\\xa3\\x63\\xc7\\xa7\\x96\\xea\\xd6\\x17\\xc4\\x25\\x1e\\x67\\x94\\xda\\x06\\xc3\\xd0\\x8f\\x2f\\xdc\\x38\\x86\\x94\\x4a\\x75\\x09\\xe6\\x40\\x9c\\x90\\x6b\\x59\\x31\\x13\\xb4\\xb1\\xf9\\x85\\x01\\x32\\x96\\x0d\\x9f\\x3a\\x4e\\xeb\\x73\\x86\\xfa\\x59\\x2f\\x61\\x93\\xbe\\xab\\x8e\\x0f\\xf0\\xf2\\x89\\x08\\xa0\\xd5\\x48\\xdb\\x87\\xba\\xe9\\x78\\xb0\\x5a\\xbb\\xca\\x9b\\x3e\\x96\\xd8\\x79\\x5b\\x88\\x07\\x7f\\x62\\x0f\\x21\\x24\\xe3\\x15\\x90\\xeb\\x09\\x9e\\x94\\xe0\\xe6\\xe3\\xcd\\x62\\x0a\\xe6\\x29\\x0f\\x3e\\x2d\\x01\\x46\\x7e\\x5b\\xef\\x4f\\xab\\xde\\xf7\\x9d\\x9a\\xb9\\x23\\x9e\\x75\\x3e\\xc4\\xfa\\x0b\\xb1\\x10\\xff\\x1d\\x39\\x3f\\xca\\x02\\x24\\x35\\x02\\xd7\\xe9\\x87\\x99\\x1e\\xb7\\x6d\\x08\\xf8\\xbe\\x7e\\xb2\\xb1\\xee\\x00\\xc3\\xb6\\x8b\\xbf\\x72\\xa6\\x23\\xba\\xa1\\x5b\\xe8\\x96\\xb3\\x21\\x5e\\xbe\\x8a\\x82\\x31\\x31\\x09\\xfc\\x62\\x9b\\x0c\\xce\\x64\\x91\\xf8\\x13\\xc2\\x49\\x70\\xe4\\xff\\xe6\\x86\\x9e\\x40\\xb4\\x6b\\x4e\\xd2\\x29\\x86\\xd0\\x04\\x21\\x55\\x27\\x6c\\x23\\x0d\\xe4\\xc0\\x5d\\x67\\x85\\x52\\xf2\\xe8\\x51\\xca\\xcf\\x5a\\x47\\x21\\x57\\xdb\\xb1\\xa9\\x9a\\x2b\\x42\\xff\\x40\\x37\\xf0\\xdc\\x63\\x80\\x67\\x29\\x21\\xc9\\x09\\x20\\x6e\\x80\\x05\\x0e\\x61\\xa6\\xb3\\x05\\x6b\\x17\\xe3\\xae\\x83\\x50\\x09\\xb2\\x04\\x19\\xa3\\xb9\\x84\\x6d\\x37\\x48\\x92\\xe7\\x19\\xf1\\xb3\\x5b\\xc1\\x25\\x7d\\xa9\\x3c\\xcc\\x6d\\x8f\\x8f\\xca\\xa8\\xe6\\x09\\xa8\\xd2\\x04\\xdf\\x10\\x8b\\xe7\\x19\\x34\\x67\\xe7\\xf1\\x05\\x93\\x52\\x82\\xc3\\xfe\\x66\\x70\\xa5\\x32\\x94\\x42\\xea\\x3e\\xdd\\xa2\\x37\\x6a\\x03\\xa1\\xcf\\xe8\\x72\\x3a\\x90\\x9c\\x06\\x4d\\x30\\xfe\\x9b\\xb0\\x21\\x2c\\x33\\xaf\\xe2\\xbe\\xa3\\x0c\\x91\\x43\\xc0\\x01\\xda\\x01\\xc7\\xed\\x50\\x45\\x59\\xb9\\x7f\\xe2\\xce\\xa0\\x9b\\xeb\\x9d\\xb5\\x19\\x00\\xdc\\x13\\x67\\x05\\x92\\x1e\\x20\\x29\\x78\\x45\\xba\\x72\\xa9\\x7a\\xa7\\xc9\\x53\\x81\\x45\\x71\\xbe\\x3f\\x08\\xce\\xf9\\x68\\x04\\x5a\\x5a\\xc3\\x40\\x04\\xf6\\x7f\\xbf\\xa5\\x4e\\x99\\x6b\\x31\\x1b\\xd8\\xdc\\x52\\x7d\\x89\\xe1\\xd4\\xf5\\x34\\x53\\xa6\\x71\\x37\\x20\\x10\\x1c\\x45\\xa6\\x0e\\xe3\\xa0\\x5c\\x2e\\xe6\\x6f\\x13\\x4b\\x5a\\xf4\\x0e\\x4b\\x70\\xef\\x37\\xba\\x3f\\x0a\\xfd\\xef\\xc0\\x39\\xf3\\x42\\xc2\\x8a\\xf9\\x19\\x82\\x51\\x38\\x1a\\x10\\x79\\xa5\\xdd\\x03\\x5a\\x8c\\x28\\x97\\x6c\\x6b\\x7f\\x4d\\xb0\\x9e\\xa3\\x83\\xa3\\xa8\\x7f\\x0f\\x85\\x1f\\xd3\\x31\\xae\\xa7\\xfa\\x4b\\xfc\\xd9\\x56\\x31\\xd6\\x52\\xfa\\x2f\\x50\\xf1\\xc2\\x3f\\xf2\\xbc\\x13\\x7a\\x06\\x04\\xe3\\xd9\\xf3\\x9c\\xcb\\x96\\x51\\x45\\xbc\\xa4\\x8b\\x06\\xdc\\x8a\\x81\\x75\\x47\\xb6\\x25\\xef\\xfa\\x79\\x6d\\x00\\x0c\\x37\\x74\\xba\\xd1\\x98\\xdb\\x12\\x41\\xbe\\x7a\\x2c\\x0d\\xc4\\xa4\\x64\\x1b\\x9a\\x8c\\xb9\\xcb\\x8c\\x8c\\x38\\x87\\x57\\x6f\\x52\\x72\\xc3\\x3a\\xaf\\xfe\\x45\\x61\\x5f\\x51\\xa9\\x6f\\xae\\x76\\xcf\\x51\\x25\\xbc\\x69\\xad\\x0a\\x40\\x38\\x79\\x07\\x99\\xb5\\xc2\\x62\\x44\\x21\\xa6\\x43\\x3d\\xba\\xb3\\x9c\\xcc\\xb0\\xb1\\x78\\x7b\\x5b\\xce\\x28\\x95\\x94\\x48\\x9d\\x17\\xed\\xb5\\xf9\\x31\\x03\\x74\\x80\\x7d\\x36\\xc6\\xe6\\x73\\x47\\x26\\xbb\\x33\\x00\\x4e\\xca\\xe8\\xbb\\x69\\x1d\\xcd\\x38\\x76\\x01\\xf4\\xea\\x91\\x1b\\x4b\\x90\\xeb\\xff\\x75\\x6d\\x7d\\x8d\\x9e\\xb4\\x22\\xcb\\xb9\\xaa\\xf7\\xf4\\x77\\x2e\\x0a\\x54\\x36\\x43\\x06\\x85\\xe5\\x7b\\x69\\x74\\x54\\xe8\\x2e\\xea\\xdc\\xe4\\xab\\xa0\\x62\\xb7\\x76\\x82\\xcf\\x21\\x9b\\xe1\\xfd\\x9b\\x00\\xf1\\xcb\\x11\\x35\\xa1\\x02\\x13\\x49\\x53\\x9a\\x4b\\x93\\xae\\x21\\x3f\\x19\\x3d\\x29\\x32\\x73\\x8e\\xf7\\x29\\x20\\x49\\x9b\\x7b\\xe2\\xa8\\x1c\\x9b\\xaa\\xed\\x17\\xc5\\x46\\x41\\xa5\\x97\\x4d\\x27\\x22\\x32\\x41\\xe3\\xc6\\xa0\\x95\\x22\\x6b\\xd2\\x37\\xe0\\x59\\x1e\\x00\\x2b\\x3a\\xf0\\x56\\x5d\\xf3\\xe9\\x76\\x42\\x0f\\x97\\x64\\xa0\\x9a\\xe8\\xbf\\xa2\\x79\\x5f\\x8f\\xad\\x7f\\xc6\\x87\\xbd\\x2d\\xe2\\x3d\\x14\\x88\\xf4\\x49\\xd8\"},\n{{0x28,0x7f,0xaf,0xd2,0x13,0x74,0x57,0x2f,0x57,0x81,0x00,0x47,0xd0,0xd9,0x8c,0xb1,0xff,0x3d,0x01,0x20,0xfa,0xa4,0x88,0x61,0x32,0x24,0x57,0x32,0xc1,0xa6,0xab,0x78,},{0xe8,0x25,0x20,0x63,0xf5,0xad,0x7e,0x95,0xbd,0x05,0xc5,0x02,0xa8,0xbc,0x4a,0x17,0x55,0x63,0x60,0x86,0x9b,0x9d,0xe0,0xa3,0xb8,0x58,0x93,0x8e,0x11,0x11,0x76,0x19,},{0x62,0x01,0xe3,0x05,0x91,0xd3,0x6b,0x7b,0x22,0x6e,0x36,0xfd,0xf5,0x64,0x34,0xc4,0x7c,0xd3,0x05,0x18,0x37,0xaf,0x31,0x31,0x3a,0x99,0x17,0xfd,0x02,0xdd,0xed,0x2b,0x5b,0xbb,0x4b,0xbc,0x36,0x8b,0x3b,0xd1,0x5d,0x06,0x20,0x45,0xf1,0x05,0xb6,0xe7,0x34,0x1b,0x15,0x15,0x0d,0x36,0xf9,0x00,0x87,0x59,0x1d,0x83,0x99,0x01,0xb8,0x01,},\"\\xb3\\xc4\\x43\\xe4\\xe5\\x89\\x9c\\x16\\xd3\\x9e\\x81\\xb4\\xf8\\x07\\x40\\x42\\xa9\\x04\\xa7\\x35\\x07\\x4b\\x27\\x95\\xd9\\xac\\x06\\xb1\\x37\\x9e\\xf7\\x61\\x8d\\x2a\\x53\\x4b\\x6b\\xef\\x81\\x56\\x9e\\x60\\x71\\x92\\x67\\xbf\\x29\\xcd\\x9d\\x16\\xac\\xc9\\xa1\\x74\\xd8\\x02\\x6b\\x14\\xb1\\x27\\xd0\\xd2\\xd8\\xb4\\x58\\x39\\x98\\x89\\x5a\\xd7\\xef\\x72\\xfe\\xdc\\x53\\xb8\\xf0\\x8a\\x22\\x50\\x10\\x0e\\x1f\\x1f\\x0a\\xab\\x48\\xbc\\x70\\x74\\x64\\x34\\x88\\xe6\\xb6\\x70\\xe1\\xb0\\x72\\x7c\\x38\\x5a\\x34\\xff\\x65\\xa0\\xd7\\xe8\\x3b\\xa8\\x60\\x83\\xb8\\x73\\xdf\\xf0\\x55\\x92\\x09\\xb1\\x4b\\x2a\\xc4\\x2b\\xf7\\xc5\\x72\\xd0\\xc5\\x91\\x7a\\xc4\\x2e\\x4a\\xe4\\xda\\xe1\\xdd\\x42\\x35\\x79\\x52\\x76\\xa0\\x76\\x13\\x2c\\xfe\\x3e\\x0c\\x35\\x0b\\x26\\x58\\x0f\\xbb\\x3a\\xf8\\x17\\x77\\xb9\\x3a\\xd9\\x5c\\xb7\\xff\\x17\\xc2\\xd9\\x80\\xce\\x0d\\x49\\x2f\\x6d\\x40\\xfa\\x90\\xba\\x3f\\xca\\xa2\\x1b\\xb6\\x87\\x35\\xee\\x1e\\xf2\\x08\\x49\\x5e\\xbf\\x7b\\x02\\x27\\x6f\\xfa\\x1e\\xfc\\x08\\x16\\x58\\xbb\\x44\\xcd\\x27\\x61\\xef\\x5e\\x3e\\x1c\\xa6\\x0e\\xc8\\xb5\\xd8\\x16\\xd4\\xab\\xac\\xd0\\xbc\\xc8\\x02\\x68\\xd8\\xf4\\xdf\\x8b\\x3a\\x52\\x04\\x9d\\xb0\\x15\\x7e\\x2b\\x6e\\x81\\xac\\xd6\\xf3\\xf2\\x89\\x47\\xc0\\x76\\x27\\x95\\x5c\\xda\\xc9\\xea\\xa1\\xde\\x17\\xd4\\xb9\\xda\\xa3\\x61\\xfb\\x49\\x78\\x26\\x64\\xd7\\xd6\\xd2\\xca\\x5c\\xec\\x6d\\x14\\x89\\x3c\\x3e\\x80\\xb6\\xd1\\x6d\\xaa\\xcf\\xfc\\xc0\\xb7\\x59\\x37\\xe8\\xbe\\xf6\\xf9\\xe1\\x12\\xa8\\x7f\\x4b\\x03\\x5f\\x90\\x36\\x07\\x0a\\x2c\\xcc\\x55\\xc2\\xaa\\xd9\\x39\\xdf\\x67\\x4f\\x7e\\x4e\\x12\\x68\\x5e\\x01\\x6e\\xa0\\xe4\\x90\\x2a\\xaa\\xaf\\xaf\\xfe\\x38\\xdd\\xb2\\xf9\\x0d\\x9c\\xf7\\x85\\x37\\xf6\\x13\\x91\\x69\\x6f\\xf0\\x33\\x0a\\xe8\\xf7\\x9a\\x1c\\x1e\\xd5\\xd5\\x2b\\x4e\\xe2\\xa6\\x2d\\x90\\xfb\\x82\\xd9\\xa4\\x83\\x93\\xfa\\x33\\x81\\x0b\\x40\\xd0\\x45\\x59\\x02\\xd5\\x74\\xff\\x05\\x20\\x03\\xe0\\x16\\x0c\\x0f\\x47\\xb5\\xe5\\x80\\xa0\\x78\\xbc\\xee\\xf0\\x60\\x73\\xdd\\xa8\\xb2\\xd1\\xf1\\x04\\xa5\\x95\\xe9\\x0b\\xb6\\xa4\\x8e\\xdd\\xd8\\x65\\xf1\\xca\\xe4\\xf1\\x78\\xfe\\x22\\xe7\\x5f\\x2f\\x61\\x24\\xa9\\xda\\x06\\x82\\x44\\x71\\x12\\xb3\\xdb\\x5b\\xe8\\xc4\\x24\\x72\\xb2\\x41\\xe9\\x44\\xfd\\x23\\x70\\xc2\\xdc\\x27\\x15\\xc0\\x5a\\x41\\xbd\\xbc\\x89\\x0c\\x41\\xc6\\x5f\\xb0\\x8c\\x2f\\x59\\x31\\x74\\x39\\x1a\\xc8\\x80\\xf3\\xcb\\x67\\xd1\\xb7\\x4f\\xf8\\x02\\xef\\x96\\x2a\\xfe\\xf7\\xb9\\xf3\\xea\\x32\\x6f\\x95\\x27\\xe7\\xfb\\xa6\\x98\\x18\\x79\\x24\\xb6\\x4c\\xcd\\xd0\\x86\\x62\\x48\\xc7\\x6e\\xe6\\x4c\\x79\\x06\\x9b\\xe0\\xa0\\x57\\xb1\\x0a\\xe1\\x90\\xf3\\x8f\\xf5\\xab\\xa8\\x44\\xe3\\x93\\x31\\xcf\\x1d\\xb1\\x3c\\x90\\x09\\x06\\xbe\\xe0\\xd7\\xe7\\x54\\x6e\\xf5\\x23\\x24\\xe3\\x7c\\x59\\x06\\x75\\xf1\\x39\\xf5\\x8f\\x57\\x3a\\x49\\x4f\\x4a\\xe8\\x2c\\x4e\\xc8\\x10\\x66\\xa6\\x8e\\x2d\\x92\\x90\\x01\\x91\\xc4\\x7d\\x30\\x62\\xf0\\xf9\\xaa\\xed\\x19\\x11\\x37\\xcd\\xa9\\xb8\\x3c\\xd1\\x30\\xe8\\x26\\x29\\x60\\xe6\\x24\\x4f\\x8f\\x6e\\xf3\\x9f\\x15\\xa4\\xfe\\xd1\\x3c\\xb6\\x69\\xed\\xc1\\x9f\\x5c\\xe1\\x62\\xce\\xb8\\xd2\\x42\\xb9\\xad\\xdb\\xfb\\xa8\\x77\\x2c\\xe7\\x49\\x85\\xa5\\xf3\\x72\\x0d\\x59\\x0a\\x92\\x0e\\x1d\\xca\\x75\\xa8\\x79\\xb1\\xaa\\x45\\x9f\\x74\\x62\\xff\\xf2\\xe9\\x50\\x72\\x76\\x1b\\x20\\x92\\x54\\xfe\\x38\\xc5\\x4d\\x83\\x3a\\x8e\\x2c\\xb8\\xfc\\x40\\xc5\\x98\\xf3\\xc7\\xf7\\xd6\\xc5\\x70\\x57\\x15\\xd0\\x30\\x8d\\xc3\\x0e\\xaa\\x84\\x67\\x6d\\x20\\x9d\\x7b\\x7b\\x31\\x34\\x47\\x56\\xe6\\x9a\\x9a\\x4c\\xb4\\xe4\\xa2\\x51\\x81\\x7a\\x37\\x86\\xfe\\xa6\\x72\\x8d\\xd6\\x08\\x22\\x33\\x6b\\x45\\xae\\x5d\\x47\\xc7\\x04\\xb4\\x5c\\x4c\\xad\\x38\\xc1\\xe0\\x1a\\xb9\\x3d\\x14\\x16\\x92\\xd5\\x5d\\x12\\xfd\\xb9\\x74\\x0f\\x1d\\x18\\x15\\x82\\xf1\\xc4\\x8c\\xe5\\x43\\x48\\x60\\xd9\\x30\\xf0\\xe7\\xe7\\x0e\\xdc\\xff\\xb8\\x55\\x60\\xa5\\x3d\\xba\\x95\\xd5\\x7b\\x31\\xe8\\x92\\x41\\x37\\xbc\\x2c\\x19\\xe3\\x4b\\xb9\\xc9\\x86\\x68\\x77\\x17\\x42\\x80\\xe8\\x0c\\x23\\x97\\x8d\\x57\\x79\\x58\\x64\\xa7\\x37\\x4a\\xef\\x38\\x3f\\x3b\\xf6\\x37\\x53\\x59\\xbf\\x63\\x56\\x47\\x40\\x09\\x84\\x61\\xa6\\xc7\\x6e\\x8f\\x23\\x89\\x13\\x28\\x87\\x69\\xa1\\xcb\\x1c\\x95\\xb2\\x2c\\x32\\xa9\\xeb\\xb3\\xec\\xeb\\x04\\x8e\\xe3\\x24\\xcf\\x0d\\x7e\\x85\\xa3\\x89\\xb0\\x4d\\xed\\xbb\\xcb\\xee\\xf2\\x98\\xd0\\x52\\x78\\x16\\x08\\x5c\\x0c\\x83\\xef\\xaa\\x29\\x85\\x46\\xe8\\x39\\x0b\\xd1\\xbf\\xe4\\x65\\xec\\x1b\\xaf\\xae\\x69\\xee\\x52\\x18\\xe7\\x2c\\xae\\xdb\\x9b\\x64\\x9c\\xf7\\x3e\\xec\\x45\\x4a\\x2b\\x48\\x49\\x65\\x17\\x96\\x72\\xde\\xbc\\xf9\\x44\\x13\\x63\\x99\\x5a\\x8a\\x90\\x7d\\xe1\\x7d\\xc0\\x68\\x4f\\x2a\\xea\\x57\\x9a\\x2f\\xb4\\x48\\x41\\x95\\xdb\\x41\\x15\\xca\\x32\\xe9\\x70\\x52\\x6d\\xc0\\x0a\\x5c\\xac\\xaf\\x58\\x87\\x11\\xdb\\xd4\\x69\\xce\\x80\\xbd\\x29\\x7c\\x4f\\x41\\xd6\\xfa\\x28\\xa5\\x97\\xc6\\x37\\x2c\\x0d\\x21\\x49\\x60\\xb5\\x45\\x98\\xcd\\x8b\\xc8\\x49\\xeb\\xdc\\xa3\\x6d\\x62\\x25\\xb2\\x0d\\xec\\x0d\\x03\\x11\\x69\\xce\\xbb\\x36\\xea\\xdc\\x3a\"},\n{{0x9a,0xd0,0x49,0x10,0x08,0x51,0xd0,0xf7,0x9b,0x71,0x12,0x25,0xc9,0x88,0x47,0x79,0x5a,0xcf,0xc3,0x60,0x1c,0x14,0xb8,0xa9,0x77,0x8d,0x62,0x70,0xcd,0x4c,0x05,0xed,},{0xe7,0xca,0xcf,0x4f,0x37,0x14,0x54,0x3c,0x27,0xa3,0xe9,0xed,0x83,0x3b,0xaf,0x3b,0xde,0x4c,0x09,0x56,0x3b,0xef,0x59,0xe7,0x63,0xfa,0xb7,0x1f,0xb5,0xe4,0xff,0x56,},{0xfe,0xc0,0xaf,0x34,0xcb,0xc5,0xcf,0xfc,0x56,0xe9,0x6d,0xd5,0xed,0x59,0x68,0xe5,0x2c,0xbd,0x42,0x69,0x84,0x4f,0xc3,0x0e,0x3a,0xb0,0xd3,0x47,0x2b,0x5d,0x18,0x0c,0x8d,0x1b,0x76,0x90,0x51,0x8f,0x41,0xf1,0x44,0x38,0xe7,0xf3,0xa8,0x3d,0x5e,0x89,0x76,0xcb,0x9a,0x26,0x15,0x1f,0xc4,0x14,0x9a,0x32,0x98,0xd7,0xe4,0x2c,0x05,0x03,},\"\\xc2\\x84\\xbd\\xd8\\xf8\\x27\\x5b\\x49\\xac\\x80\\x8c\\x39\\x04\\x5e\\x50\\xe1\\xed\\x50\\xc8\\xa1\\xaf\\xd0\\x11\\xaf\\xe5\\xdb\\x3d\\xda\\x62\\x0b\\xe8\\xae\\xc3\\x7f\\x45\\x60\\x57\\x62\\xe2\\x25\\xd0\\x41\\x11\\xf2\\x1b\\x49\\xfc\\xef\\xca\\x3f\\x3d\\x5f\\x81\\x3b\\x20\\x20\\xa5\\x2c\\x49\\xf9\\x5c\\x4a\\xd6\\x1c\\xa2\\x14\\x61\\x8a\\xde\\x7e\\xed\\x6c\\xd8\\xd3\\x14\\xdc\\x4c\\x63\\x55\\x95\\x52\\x77\\xd4\\x57\\x46\\x2f\\x03\\xb9\\xfb\\xa2\\xe2\\x25\\xb1\\xb5\\x37\\xcd\\x4b\\x52\\x37\\x50\\x5c\\x90\\xd4\\x32\\x05\\xe1\\x71\\x5c\\x39\\x63\\xcc\\xfb\\xec\\x37\\x9e\\x6c\\x17\\x05\\xe0\\x80\\x34\\xa3\\x1a\\xfc\\xe6\\x46\\x72\\x7e\\x78\\xa2\\x0e\\xed\\x88\\xae\\xb0\\xdc\\xda\\xbc\\x5c\\x86\\xe8\\x69\\x79\\xe6\\x3a\\x5c\\x26\\xc3\\xe2\\x17\\x79\\x73\\xb6\\x98\\x3c\\xeb\\xfe\\xda\\x9f\\x31\\x47\\x93\\x61\\xb6\\x61\\x76\\x3a\\xa7\\x26\\x1c\\x09\\x39\\xca\\xd4\\x8b\\x71\\x90\\x8e\\xa9\\x07\\x68\\xbb\\x6c\\x95\\x83\\xd8\\xea\\xeb\\x9e\\x03\\x38\\x51\\x5a\\xca\\x12\\x42\\x62\\x6d\\xc6\\xbe\\x04\\xec\\xc4\\x42\\x9e\\x4c\\xbb\\x4f\\xf3\\x36\\x09\\x61\\x92\\xf7\\x50\\x1e\\xc4\\x71\\xb5\\x96\\xa9\\x9d\\x4c\\x02\\x75\\x82\\xcc\\x69\\xe2\\x04\\xb6\\xfb\\xcd\\xdf\\x59\\xf5\\xbf\\x74\\x62\\xdd\\xcd\\x59\\x89\\x12\\x1f\\xd1\\x0f\\x11\\xa0\\x67\\x5b\\x6c\\x4e\\x4f\\x65\\x20\\xd2\\x7d\\x7c\\x61\\x43\\x1b\\xa7\\xd1\\x74\\xf5\\x73\\x95\\xa0\\xbf\\x72\\xd3\\x8c\\x11\\x42\\x73\\x6d\\xed\\x6b\\x91\\xe4\\x81\\x1c\\x0e\\x85\\x41\\xa6\\xc0\\xd9\\x96\\xc5\\xa1\\x7d\\xc9\\x7d\\xb3\\x88\\xf7\\x21\\xd2\\x35\\x7d\\x3c\\x6a\\xf5\\xc8\\x6b\\x1d\\x5e\\x47\\x6e\\xa0\\xac\\x0b\\x1c\\x11\\xd4\\x38\\x7f\\x76\\x90\\x39\\xbd\\xf5\\x38\\xa0\\x21\\x6e\\xdd\\x00\\x45\\xee\\x6d\\xd8\\x9e\\xef\\x82\\xa4\\x25\\xa8\\x3f\\xaa\\x1b\\x12\\x80\\x70\\x38\\xca\\x19\\xeb\\xec\\x00\\x2e\\x8b\\x3c\\x15\\x34\\x4c\\x61\\xcf\\xd1\\xe5\\xf0\\xe3\\xb0\\x27\\x3d\\xeb\\x37\\x27\\x8c\\xf1\\x97\\xd8\\xa8\\x3b\\x13\\xd9\\x92\\x30\\x8a\\x51\\x37\\x3e\\xb3\\x81\\x14\\xc9\\xe4\\x5b\\x43\\x87\\x80\\x27\\x7d\\x1e\\x32\\xf3\\x97\\x29\\x62\\xa3\\xe1\\x4a\\x8d\\x08\\xdb\\x9f\\x09\\xae\\xc3\\xdd\\x32\\xa5\\xb9\\x94\\x23\\xe6\\x1f\\x5e\\x79\\x94\\x4a\\xb5\\x7a\\x36\\xf6\\xec\\x07\\xcc\\x32\\x04\\xf9\\x16\\x5e\\xe0\\x21\\xad\\xa9\\x3e\\x6f\\xec\\xb7\\xec\\x45\\x6a\\xa0\\x28\\x8c\\x37\\x8a\\x75\\xaf\\xd6\\xe9\\xda\\xd6\\xc6\\xf8\\x8e\\x95\\x9a\\x2c\\xf2\\x8b\\xfe\\x56\\xd2\\xe6\\x1b\\x2a\\xda\\xec\\xf0\\xd8\\x6d\\xd8\\x92\\x8b\\xce\\xda\\x26\\xb0\\x54\\x02\\x46\\xb7\\x33\\x7f\\x5c\\xdc\\xec\\x11\\xfb\\x0c\\x1a\\x59\\xd6\\x31\\xfc\\xca\\x19\\x40\\x8f\\x95\\x22\\xb6\\x8a\\x39\\xf8\\x6e\\xf9\\x70\\xb8\\x83\\xa0\\xf0\\xbd\\x6b\\x7b\\x14\\x15\\xec\\x9a\\xa0\\x43\\xb5\\x2e\\x19\\xba\\xc1\\x76\\xd6\\x7b\\x79\\xe2\\xa5\\xdc\\xa8\\xbf\\xd2\\x91\\x02\\xac\\x60\\x8e\\x47\\x3e\\x9f\\x98\\x2c\\x3e\\xc8\\x93\\x2d\\x8a\\xa8\\xcd\\x56\\x52\\x84\\x49\\x1d\\xe5\\x2f\\x51\\x6b\\x9e\\xbf\\xb7\\xdb\\xe1\\x29\\x95\\x11\\xae\\x73\\x2c\\x2a\\xd1\\xee\\x49\\x92\\xb0\\x77\\xfa\\xff\\xc6\\x5f\\x48\\x8f\\x1b\\xa2\\x15\\xda\\x69\\x79\\x60\\x09\\x71\\x19\\x6d\\x0f\\xf3\\xa0\\x8a\\xd9\\xf0\\x0e\\x82\\x9c\\x1d\\xe1\\xaf\\xca\\x10\\xca\\x47\\x6b\\xe6\\x64\\xaa\\xd2\\x61\\x88\\x9b\\x0e\\xb7\\xae\\xb6\\xed\\x86\\x37\\x61\\x89\\x00\\xac\\xf4\\x81\\xe2\\xd2\\x24\\xec\\x64\\xa6\\xe6\\xcf\\x4f\\xa4\\xdf\\x73\\x1b\\x7a\\x4f\\xee\\xff\\x25\\x80\\xc9\\x9b\\x6d\\x75\\xb4\\xdc\\xd0\\x97\\x69\\x65\\xcb\\x2b\\x0b\\x56\\x35\\x22\\x78\\x42\\xd0\\x8a\\x7d\\x90\\x7a\\xae\\xbc\\x2f\\xde\\xd8\\x00\\x98\\x11\\xdc\\xdd\\x73\\x35\\x49\\x21\\x75\\x3b\\xc5\\xde\\xc0\\x17\\x68\\x93\\x35\\xf5\\x6d\\x0f\\xb7\\xae\\x21\\x3b\\x41\\x79\\x2b\\x1f\\x4e\\xb1\\x4a\\x24\\x53\\x59\\x77\\xa3\\x05\\xb1\\x9e\\xb9\\x83\\x8d\\xc6\\xb5\\x15\\x28\\xb9\\x8a\\x39\\xbd\\xa0\\x60\\x10\\x71\\x7a\\x20\\x8c\\x34\\x7a\\xa1\\x58\\xee\\xcd\\xfd\\x9a\\x04\\x72\\xd3\\xb8\\xd9\\x20\\xf9\\x69\\xe1\\x2b\\x65\\x91\\x9b\\xda\\x38\\xb4\\x61\\x94\\x98\\x50\\xcc\\x9c\\xc1\\x8d\\x8e\\x3b\\xaa\\x8c\\x88\\x6d\\x93\\xcd\\x09\\x6a\\x20\\x9d\\x54\\x3c\\xa3\\x37\\x5f\\xc4\\xe7\\xd6\\x51\\x03\\xcb\\x64\\x24\\xbe\\xab\\x44\\xe8\\xbc\\x4a\\x5b\\x62\\xc2\\x9a\\x01\\xbc\\xf4\\x4d\\xcc\\x61\\xe7\\x67\\x5c\\x02\\x5d\\xec\\x07\\x24\\x20\\x01\\x94\\xbd\\xe7\\x4d\\x72\\xc0\\x2e\\x94\\xa9\\x46\\xa7\\x52\\xf3\\x60\\x84\\x57\\xfd\\x91\\xf2\\x92\\x71\\x57\\x71\\x48\\x7d\\x26\\xca\\xd4\\xe5\\xcf\\x6e\\xf7\\xc6\\xf7\\x16\\x27\\xa4\\xda\\xf8\\xa4\\xc9\\xb8\\x91\\xc1\\xee\\x8f\\x04\\xae\\xaa\\x99\\xfe\\x0c\\x8b\\x4e\\x83\\x3b\\x76\\x09\\x06\\x6b\\x61\\x32\\xa9\\x68\\x89\\x0e\\x26\\x95\\xda\\x22\\xb2\\xd8\\x57\\xc8\\xc0\\xad\\x91\\x87\\xc9\\x60\\x69\\xe4\\x76\\xe2\\x7e\\x46\\x32\\xc4\\x47\\xee\\x76\\x71\\x4a\\x31\\xd1\\xe5\\x14\\x9e\\xcb\\x33\\x7e\\xe1\\x32\\xf3\\x55\\x2d\\xa3\\x3a\\xb2\\xd6\\xfa\\x9d\\x7e\\x93\\xf6\\x8a\\x77\\xcb\\xf1\\x91\\xcb\\x06\\xbc\\x22\\xf3\\x47\\x0a\\xf6\\xd7\\x58\\x1e\\x3a\\xcc\\xbe\\xca\\x0b\\x6f\\xeb\\x08\\xa1\\x4b\\x9a\\x80\\xc1\\xef\\x59\\x37\\x4c\\xcd\\xc0\\x52\\x3c\\x36\\x84\\x50\\x4c\\x01\\x04\\xbb\\xa2\\x2c\\x10\"},\n{{0xde,0x54,0xe1,0x3f,0x9e,0x2c,0xc7,0x54,0x54,0x6c,0x99,0xb3,0x3b,0x3d,0x72,0xf4,0xd1,0xf7,0x71,0x50,0x38,0xa9,0x65,0x9f,0x33,0x63,0x65,0x77,0xbb,0x52,0x6a,0xdb,},{0x36,0x33,0x8d,0xb3,0x32,0x6b,0x00,0x5e,0x5c,0x61,0xff,0x78,0x2b,0xe2,0xea,0xb1,0x66,0xd4,0xeb,0x72,0x34,0xa9,0x8e,0xa1,0xcd,0x85,0x5e,0x1a,0xd5,0x35,0xe9,0x4c,},{0x37,0xac,0xa8,0xf2,0x48,0x39,0x4a,0x9e,0x04,0xd0,0x6a,0x7d,0xa8,0x4a,0x7d,0xef,0xa3,0x9d,0xe4,0xda,0x2b,0xcb,0x18,0xd5,0xf6,0x4c,0xc3,0x4d,0xb0,0x86,0x51,0xaf,0x4a,0xbb,0x19,0xfa,0x2a,0x92,0xa7,0xdd,0xa5,0x6e,0xc9,0x93,0x0b,0x81,0xae,0xbd,0x23,0x99,0x05,0x11,0xf6,0x84,0xc6,0xd1,0x5b,0xa5,0x95,0xf7,0xd4,0xa2,0x74,0x0e,},\"\\xdc\\x40\\x41\\xad\\x61\\x42\\x3a\\x12\\xa0\\x41\\x13\\x18\\xa6\\xe6\\x2a\\x5e\\xf6\\x4a\\x19\\xab\\xe2\\xd9\\x85\\x22\\x97\\xbe\\x2d\\x4a\\x35\\xeb\\x86\\x70\\xca\\x36\\xc5\\x21\\x53\\x1b\\x30\\x38\\xac\\xda\\xee\\xa2\\xea\\x01\\xa0\\xb6\\x18\\x78\\x62\\xa4\\xe1\\xa8\\x9d\\x4b\\x81\\xc5\\x31\\x8e\\xd4\\xd6\\x71\\x31\\xbc\\x38\\xf8\\x41\\xa1\\x42\\xa2\\xf6\\xf3\\x16\\xdf\\xf0\\x76\\x93\\x9d\\xc0\\xeb\\x81\\xb2\\x30\\xfe\\xa9\\x88\\x1f\\x8f\\x0f\\xf7\\xed\\x0b\\x29\\x3f\\x69\\xb2\\x89\\xfe\\x77\\x08\\x81\\xfb\\x37\\x10\\x80\\x8e\\x8e\\x59\\xe6\\x4e\\x19\\x0c\\x1e\\x37\\x9b\\x9d\\xd3\\x48\\xb0\\x2c\\x23\\x47\\xd7\\xe2\\x06\\x96\\x79\\x0b\\x62\\x77\\x6a\\x2e\\x82\\x5b\\xed\\x69\\x17\\x03\\x7c\\xb6\\x35\\xc9\\x2f\\xbc\\x76\\xb4\\xc5\\x85\\x10\\x27\\xe7\\xf1\\x38\\x52\\xee\\x7e\\x7c\\x52\\x57\\x3a\\x90\\x30\\xb7\\x9f\\x22\\xb6\\x0d\\x58\\x69\\xef\\xe6\\x80\\xc0\\x16\\x64\\x92\\x9f\\xe9\\xa0\\x6f\\xa3\\x33\\x05\\x2b\\xe1\\xd6\\xaf\\x3a\\x0b\\x48\\x2c\\x33\\x2e\\x18\\x05\\x1e\\x78\\xb3\\x33\\x83\\x9d\\x6c\\xb9\\x3d\\x93\\xeb\\xfb\\x27\\x7e\\x42\\x68\\xfb\\xee\\xee\\xba\\x1e\\x8f\\x96\\xa5\\xc9\\xe3\\x28\\xc4\\x26\\x72\\x12\\xca\\xc2\\x51\\x21\\x5b\\xfa\\xa7\\x8f\\xd8\\x8a\\x87\\x41\\x7a\\x80\\x60\\x2d\\xcd\\x88\\x28\\xe8\\x04\\x00\\xda\\x30\\x4e\\x98\\x98\\x62\\xd1\\x32\\x01\\x08\\x2d\\xe3\\x53\\x09\\x25\\xe0\\xed\\xc2\\xc1\\x30\\xa9\\xa4\\x19\\x07\\x1b\\x31\\x08\\x8d\\xa6\\xf6\\xff\\x40\\x56\\x30\\x1c\\x12\\x9f\\xc2\\x13\\x52\\x33\\x62\\x8d\\x16\\xd8\\xbf\\x16\\x0f\\x6c\\xe8\\x6d\\x83\\xcd\\x4e\\x29\\xae\\x0c\\x73\\x84\\x3d\\x70\\xb5\\x30\\x56\\xc5\\xaf\\x3f\\x3d\\xc5\\x61\\x27\\x1c\\xb5\\xaf\\xf3\\x93\\xf0\\x80\\x3a\\xde\\x07\\x2d\\x9c\\xeb\\x74\\x5b\\x61\\x87\\xb2\\x8d\\x24\\x69\\x67\\x67\\xd5\\xc2\\x1f\\x4d\\x4a\\xc5\\x8d\\x5b\\xb6\\x6c\\x5c\\xad\\xfe\\xfb\\x16\\x26\\xef\\x93\\xf7\\x14\\xc7\\x82\\xb6\\xef\\x3c\\xcf\\x4b\\x44\\xee\\x75\\xf0\\xbb\\x75\\x7a\\x25\\xd9\\xb4\\x6a\\x9d\\x93\\x1a\\x03\\x72\\x7d\\x49\\x6a\\x22\\x81\\x0c\\x63\\x4f\\x5c\\x1a\\xe6\\x0c\\xbd\\xf2\\xf1\\xea\\x29\\xb5\\x46\\x07\\xcf\\xf5\\x0d\\x9f\\x8e\\x03\\xa0\\xa4\\x51\\x3c\\xf6\\x8d\\xfb\\x61\\x97\\x73\\x41\\x1b\\x61\\x80\\x95\\x9a\\x8a\\xac\\x30\\xb2\\xee\\xe4\\xad\\x32\\x79\\x15\\xf6\\x0a\\xe5\\x2b\\x90\\xe0\\x4a\\x9b\\xce\\xf8\\xdc\\x67\\xe7\\x1e\\xa1\\x0a\\xca\\x55\\x3d\\xb9\\x89\\x5c\\xd8\\x00\\x84\\x57\\xd7\\x6f\\x02\\xce\\xb5\\x35\\x00\\x21\\x11\\x09\\xe8\\x96\\x03\\xf3\\x04\\xd8\\x80\\xaa\\xf0\\x28\\x61\\xfe\\x37\\xc9\\x53\\x4a\\x9d\\x67\\x2d\\x83\\x71\\x3c\\xd3\\x26\\xc9\\xab\\x81\\xc3\\x53\\x76\\x4c\\xa5\\xad\\x5a\\xc0\\xe7\\xf1\\xff\\x88\\x0f\\xb4\\x8a\\xcd\\x9c\\xbb\\x94\\x90\\x64\\xe2\\x11\\x83\\xbc\\x38\\xfb\\x1d\\x90\\xcf\\xe6\\x19\\xa8\\xb8\\xfb\\xf5\\x32\\x18\\x89\\xbb\\x15\\xc0\\x2a\\x53\\xe4\\xd3\\x67\\xfc\\x66\\x88\\x77\\xb6\\x62\\x28\\x1c\\x4a\\x2a\\xf6\\x78\\xf8\\x6e\\x69\\x1d\\xaa\\x8a\\xfd\\xca\\xc1\\xb8\\x20\\x18\\x9f\\xe5\\xc2\\x50\\x8c\\xe3\\x6e\\xdd\\x9c\\x6f\\x8f\\x51\\x57\\x50\\x71\\x83\\x94\\x39\\xa0\\x03\\x35\\x2c\\x15\\x73\\xe1\\x27\\x68\\xdd\\x6d\\xeb\\xdf\\x1e\\xd4\\xf9\\x4a\\xc7\\x9d\\xf1\\xab\\x6a\\x0b\\xc2\\x50\\x79\\xc0\\x93\\x54\\x77\\xd9\\x14\\x99\\x88\\xec\\x3b\\x87\\x93\\xef\\xcd\\xa8\\x59\\xac\\xc3\\x92\\xab\\x3f\\xa9\\x94\\x93\\xd7\\xae\\x0a\\x65\\x75\\xb6\\x95\\xa1\\xce\\x07\\x65\\x32\\x86\\x02\\x87\\xdd\\x49\\x89\\x67\\xc4\\x6f\\x7a\\xdd\\x49\\x49\\x4c\\x02\\xe7\\x44\\xc4\\x02\\x80\\x19\\x57\\x82\\xe2\\x42\\x44\\x76\\x16\\x5e\\x72\\xce\\xe2\\x36\\x42\\xe5\\x1c\\xec\\x43\\x21\\x91\\x11\\x6a\\xec\\x59\\xb5\\x9f\\xcf\\x0a\\x36\\x83\\xb9\\x5f\\x76\\x07\\x60\\xa2\\x0b\\xd6\\x74\\x54\\xd8\\xde\\x64\\x7c\\x0f\\x9f\\xfc\\x4f\\x90\\xf6\\xe4\\x5a\\xc9\\x3d\\x80\\x2f\\x33\\x82\\x99\\xef\\x28\\x0d\\x3b\\xb7\\xa4\\xa8\\x9d\\xb8\\xc5\\x9a\\x12\\x52\\x6f\\x27\\x83\\x02\\x4c\\x8a\\xde\\x90\\x02\\xf0\\x0e\\x3d\\x52\\x9b\\x78\\xdc\\xdd\\x49\\x03\\xda\\xf5\\x76\\x7a\\x2b\\xed\\x75\\x14\\x53\\x96\\xef\\xb6\\x97\\x90\\x71\\x2d\\xe6\\xa5\\x90\\x1e\\x6d\\x8c\\x15\\x28\\x01\\x82\\x38\\x82\\x85\\x02\\x1d\\x0e\\x70\\x92\\x92\\x15\\xd9\\xf2\\xb7\\x99\\xbb\\x92\\xf2\\xca\\x56\\xf4\\x8e\\x8c\\xbb\\xa2\\xf1\\x9b\\x08\\x58\\x45\\x12\\x65\\x67\\xcf\\xaf\\xa6\\x03\\xc2\\x94\\x6e\\xa1\\xe7\\xd2\\x74\\x55\\x4a\\x38\\xbf\\x7d\\x86\\x51\\x1f\\x3e\\x47\\x4f\\x9f\\xa5\\xcb\\x11\\x10\\x5f\\xb5\\x2f\\xc6\\x81\\x77\\xf3\\x38\\x5f\\xe1\\x39\\x7b\\xe5\\x84\\xa7\\x00\\x89\\xdc\\x74\\x1b\\x4b\\x00\\x95\\xbf\\x7e\\xb2\\x99\\x3b\\x41\\x8d\\xf8\\x7b\\x14\\xa1\\xf9\\x79\\x26\\xe8\\x68\\xdf\\x6e\\x56\\x8b\\xec\\xa2\\x21\\x5f\\x2d\\xd7\\xce\\x8a\\x3c\\x9e\\xe8\\x49\\xcb\\x41\\x34\\x6c\\x68\\x4f\\x7f\\xfe\\xf0\\xa7\\x92\\xed\\xf4\\x33\\xca\\x99\\xef\\x34\\xc7\\x3f\\x92\\x72\\xa7\\xeb\\x97\\x58\\x7c\\x8f\\xce\\x4a\\x51\\x36\\x44\\x47\\x37\\x13\\x8d\\x53\\xea\\xdf\\x3a\\x84\\xf5\\x01\\xbb\\x10\\x45\\x6e\\x8e\\x4a\\x40\\x47\\x08\\x2c\\x9e\\x14\\x35\\xf5\\x76\\x52\\x6c\\x21\\x64\\x71\\x4d\\x70\\xb3\\xd0\\xa6\\xe9\\xc0\\x8a\\x53\\xe3\\x23\\x84\\x0f\\x4d\\xcf\\xe8\\xf2\\xd1\\x9f\\x0b\\xe2\\xc8\\x8e\"},\n{{0x85,0x04,0xfb,0xca,0xab,0xa6,0x76,0x83,0xf8,0x15,0x49,0x92,0x82,0xb6,0xeb,0xd4,0x97,0xa8,0x1a,0x91,0x56,0xf5,0x3e,0x02,0x5c,0x2d,0x3e,0xce,0xe0,0xdb,0x65,0x59,},{0xe6,0x2d,0xa8,0x64,0x93,0xa0,0xca,0xf5,0x29,0x21,0xd5,0x60,0x2f,0xbd,0xc3,0xdd,0x3a,0x84,0x36,0x94,0x1f,0x6b,0xe2,0x40,0xb3,0x15,0x09,0x68,0x12,0x38,0x74,0x6d,},{0xc0,0xea,0x07,0x4b,0xf9,0xad,0xde,0xe2,0xe3,0x35,0x0a,0x96,0x9e,0x7c,0x56,0x9e,0x3a,0xea,0x1a,0x41,0x88,0xee,0x5a,0xf3,0x4c,0xb7,0x3f,0x38,0x82,0x98,0x65,0x3d,0x29,0x9b,0x5d,0xbd,0x94,0x16,0x3f,0xba,0x20,0x9e,0x8f,0x7d,0xc2,0xe2,0x63,0x4d,0x3a,0x52,0xa0,0x28,0x10,0xa8,0x8c,0x61,0x52,0x94,0x5b,0xc1,0x6b,0xbd,0xfb,0x0c,},\"\\x6c\\x63\\xed\\xbd\\x40\\xa0\\x38\\x74\\xec\\xae\\xf8\\x16\\x02\\xcd\\x68\\x50\\xc0\\x9f\\x49\\x15\\xb7\\xaa\\xf4\\x18\\x25\\x8c\\x56\\x83\\x64\\x53\\x8e\\x83\\x92\\xa8\\xc3\\x79\\x83\\x8b\\x0c\\x95\\x34\\x5b\\xf6\\x4c\\x3d\\xbc\\x17\\x58\\x53\\xfb\\x64\\x1f\\x35\\x0f\\x0b\\x53\\xa0\\x5a\\x8e\\xc2\\x90\\x28\\x8c\\x03\\x26\\xd4\\x35\\xff\\x77\\x6f\\x86\\x83\\xa2\\x73\\x33\\x3f\\x9b\\xb2\\x80\\x21\\x84\\xec\\xc5\\x3b\\x06\\xb2\\x8c\\x2c\\x40\\x2a\\x54\\xbf\\x13\\x4c\\x1a\\x23\\x29\\x97\\x49\\xa6\\xce\\x2b\\x51\\xa7\\xba\\x22\\x23\\x21\\x48\\x79\\x7e\\x99\\x3f\\xf2\\x58\\x28\\x6e\\x94\\x77\\x78\\xa8\\x74\\x2d\\x3f\\x36\\xcc\\x78\\x42\\x97\\x60\\x43\\xfc\\x23\\xda\\x8a\\x97\\xec\\xb9\\x71\\x5f\\xc0\\x5f\\xb0\\xf2\\x3f\\xa7\\x32\\x1d\\xdc\\x19\\x32\\x86\\x16\\x31\\x60\\x4e\\xba\\x2e\\xf2\\x5d\\x8b\\x75\\x6c\\xe4\\x73\\x36\\x56\\xbf\\xd1\\xe1\\x47\\x08\\x92\\x3a\\xc7\\xc6\\x0a\\x79\\x84\\x61\\x36\\xd7\\x41\\x97\\x3b\\xa5\\x51\\x41\\x89\\x72\\x0b\\xc0\\xf7\\x77\\x4b\\x7b\\xd3\\x57\\x45\\x95\\xbd\\xe2\\x51\\x50\\x31\\xb2\\x5b\\x62\\x65\\x4b\\x16\\x10\\x35\\x77\\x80\\x70\\xac\\xe1\\x49\\x71\\xdf\\x1f\\xe0\\xbe\\x4e\\xa1\\xef\\x55\\xcf\\x87\\x47\\xd3\\x71\\x6c\\x1c\\xe7\\x07\\xb1\\xa7\\xc8\\x52\\x0e\\x6d\\xeb\\x33\\x4e\\xb1\\x86\\x33\\x8f\\xc9\\x30\\x00\\x76\\x8e\\xb2\\xbe\\x40\\xc6\\xe0\\xdc\\x3f\\x5d\\xf8\\x31\\xb3\\x2c\\x3a\\x2c\\x33\\xe2\\x88\\x98\\xd6\\x76\\x2a\\x15\\x22\\xd3\\xd4\\x8d\\xae\\xe5\\x6a\\x02\\x69\\xbd\\xdf\\x6c\\xfc\\x9d\\x73\\xf8\\xd1\\x78\\xae\\xcc\\xbf\\xfe\\xf7\\xce\\x16\\x4f\\x98\\xaf\\xea\\x22\\x4a\\x9b\\x60\\xed\\xe4\\x6a\\x95\\xfa\\xdc\\x9f\\xc5\\xd9\\x4d\\x20\\x9c\\x16\\x6d\\x9b\\x8d\\xe2\\x53\\x38\\x1e\\xa2\\x24\\x88\\x62\\x94\\x6b\\x9c\\xf5\\x34\\x94\\x74\\x55\\xc2\\x44\\x58\\xcf\\x56\\x68\\x3a\\x0e\\xc4\\x7a\\x2c\\x65\\x07\\x5c\\x69\\x4c\\x7c\\x3d\\x6a\\xdf\\x9a\\xe5\\xe8\\xad\\x31\\xac\\x76\\x9f\\x83\\xaa\\x26\\xe3\\x12\\xc5\\xb0\\x1a\\x9a\\x09\\x40\\x4b\\x15\\xb8\\x14\\xba\\xa7\\x66\\x6b\\x3e\\x03\\xf0\\x6a\\x8d\\x63\\x48\\xab\\x8c\\xcb\\x9b\\x60\\xa4\\xa4\\xfa\\xf8\\x6f\\x71\\x35\\xdf\\x03\\x9d\\x95\\x5c\\x07\\xbd\\x92\\xe7\\xb8\\xe3\\x27\\xee\\x6c\\x1b\\x40\\x19\\x6a\\x28\\xb4\\x44\\x6a\\xa5\\xa9\\xb2\\xb9\\x77\\x3a\\xb7\\x6e\\x3c\\xe2\\x11\\x80\\xf0\\x9d\\x6c\\x08\\xd2\\x77\\xc6\\x77\\x1d\\x67\\xe2\\x2d\\x84\\x54\\x0f\\xa4\\x3b\\x38\\xf6\\x34\\xcf\\xc4\\x6e\\x5b\\x8c\\x33\\xf1\\x5a\\x56\\x8a\\x77\\xe4\\x91\\x4a\\xad\\x9a\\xb8\\xc9\\xf7\\xfe\\xa4\\x7f\\x76\\x77\\xc0\\x18\\x80\\xb3\\xe8\\x5d\\x2d\\x0e\\x3f\\xbd\\x6d\\xc6\\xe9\\x9e\\x43\\x7d\\xdc\\x73\\x6f\\x92\\xb5\\xa2\\xff\\x29\\x27\\xe0\\xb4\\x42\\x14\\x2f\\x08\\x97\\xd0\\xb8\\xa1\\x9a\\xc2\\x03\\x63\\x3d\\xf4\\x13\\xfe\\xaf\\x8e\\xf5\\x0a\\x5f\\x76\\x7b\\xed\\xaf\\x20\\xf1\\xc1\\x3f\\x3b\\x89\\xd1\\xe8\\xb7\\xbd\\x18\\xd5\\x91\\xf9\\xde\\x11\\x6e\\xe3\\x4f\\x98\\x24\\xe4\\xea\\xd1\\xae\\x9d\\xa2\\xe8\\xca\\xae\\xf8\\x8b\\x29\\x51\\x6a\\xa9\\x42\\xde\\x77\\xa7\\x46\\x7b\\x6f\\xb2\\x6a\\x66\\x6f\\x30\\x64\\x8c\\x71\\x5a\\x2e\\xe9\\xf9\\x46\\x74\\x3b\\x54\\x3a\\x44\\x28\\xe0\\xdf\\xd0\\x61\\x78\\xe7\\xe9\\x3e\\xc6\\xf2\\x6e\\x00\\x3e\\x05\\x8b\\xec\\x14\\xa4\\xaa\\x2e\\x3b\\x8d\\xe1\\x12\\x95\\xa7\\x64\\xca\\xb3\\x0b\\x31\\x3f\\xcc\\x57\\x43\\xb2\\xfb\\x89\\x96\\x2d\\xdc\\x5c\\xdc\\x6a\\xa0\\xd2\\xe4\\xa3\\x06\\xe7\\x7a\\xf7\\x6a\\x05\\xa5\\x98\\x92\\x3f\\x62\\x8a\\x85\\xdf\\x1c\\xc7\\x3a\\xd3\\xbc\\x01\\xc4\\xb9\\x79\\xbd\\x7c\\xb2\\x96\\x59\\x0a\\x88\\xb0\\xa4\\x1b\\x44\\x5d\\x50\\xa0\\x84\\x23\\xe4\\xed\\x80\\xf1\\x76\\x3c\\x71\\x6b\\x6c\\x45\\x7d\\x84\\x5d\\xfa\\xa6\\x8d\\x12\\xb0\\xd0\\x3c\\x55\\xfd\\xe8\\xae\\x6b\\x2b\\x92\\xbc\\x63\\x22\\x94\\x3d\\xbe\\x54\\xc7\\x06\\xbc\\x8e\\x5f\\xce\\xe7\\x06\\x54\\xb2\\x6f\\x3b\\xfd\\x87\\x7f\\x5f\\x53\\x39\\xac\\x18\\x2d\\x54\\x17\\xbd\\x4c\\x07\\x35\\xd8\\x25\\xbf\\x70\\xe8\\x5e\\xab\\x82\\x16\\xed\\xda\\x63\\x2a\\xe7\\xe2\\x2b\\x3e\\x53\\xd0\\x78\\xa8\\xb2\\x0b\\x5a\\x7e\\x23\\x85\\x33\\x7c\\xf9\\x2b\\x3c\\x16\\xb0\\x23\\x56\\x3e\\x11\\xcb\\x50\\x43\\xb7\\x04\\xd3\\x7e\\xb5\\xed\\x9e\\x85\\xfc\\xdc\\x95\\xcf\\x7a\\x6e\\xad\\xe4\\x08\\x03\\x17\\x5a\\x00\\x8e\\xf6\\x53\\xac\\x61\\x36\\xf1\\x61\\x29\\xab\\xae\\x11\\x37\\xc5\\x82\\x34\\x00\\x74\\x8a\\x81\\x25\\x62\\x54\\xd3\\x17\\xcf\\xc9\\x39\\xe2\\x6e\\xa0\\xce\\xf9\\xf6\\x54\\x8d\\xb4\\x28\\x90\\xc4\\x8b\\xeb\\x04\\x79\\x10\\x3b\\xa0\\x89\\xe5\\x14\\x11\\x80\\x38\\xb1\\xb9\\x09\\x43\\xd7\\x16\\xf7\\xa8\\xd4\\xcd\\xa5\\x98\\x3a\\x67\\x4b\\x83\\xa0\\x02\\xd8\\xac\\x9c\\x65\\x73\\x4a\\x28\\xb7\\x7b\\x76\\x0c\\x8e\\x38\\x03\\xf8\\x78\\x1e\\xa9\\x19\\x9f\\x79\\x7c\\xe7\\x29\\xe0\\x6b\\xff\\xfe\\x8c\\x29\\xb2\\x0b\\xc8\\x52\\x27\\xc0\\x9c\\xc0\\x52\\x19\\xff\\x2b\\xa3\\x8e\\x18\\x05\\x10\\x83\\x73\\x2f\\x83\\xcb\\xfc\\xcc\\x31\\x07\\x56\\x45\\x0b\\x26\\x1d\\x5b\\xe1\\x83\\xd9\\xfb\\x44\\xec\\x18\\x52\\x9f\\x2c\\xc9\\x84\\x8c\\x40\\x11\\x9c\\x60\\x76\\x76\\xbc\\x4d\\x90\\x15\\xfd\\x4b\\xd2\\xfc\\x91\\x8d\\xc8\\x03\\x1e\\xc1\\x9a\\x05\\xff\\x36\\x2c\\x18\\x40\\x43\\xbe\\x7f\\xe0\\x66\\x01\\x9a\\xc5\"},\n{{0xea,0xc0,0xf0,0x6c,0x2c,0x14,0xf3,0x7d,0x43,0x4b,0xc9,0x98,0x97,0x22,0x5d,0xd2,0xe3,0xf1,0xed,0x74,0xaa,0x74,0x42,0xc5,0x50,0x33,0x9d,0xf7,0x7d,0x0b,0x7b,0x32,},{0x43,0xe6,0x20,0x55,0xdb,0x6e,0x13,0x49,0xc9,0x4d,0x89,0x02,0x91,0x87,0x88,0x20,0x20,0xcb,0xcf,0x9d,0x75,0xe0,0x3e,0xb6,0x56,0xfa,0x0a,0x15,0xb1,0x90,0x02,0xd7,},{0x45,0xf2,0x80,0x3a,0xfe,0xb0,0xfc,0x44,0xd3,0xaa,0x96,0x5b,0x12,0x65,0x9b,0xf5,0x02,0xe4,0x72,0x95,0x70,0x61,0x84,0xb2,0xa1,0xc6,0xf1,0x6d,0x05,0x06,0x13,0xf5,0x96,0xa2,0x00,0x13,0x94,0xe0,0x0e,0x2a,0x44,0xc4,0x6c,0xf6,0x50,0x5d,0x5c,0xf5,0xb8,0xab,0x84,0x12,0xf0,0x7e,0xda,0x95,0x1a,0x15,0x00,0x5e,0x33,0x8f,0x3c,0x0e,},\"\\x27\\xb7\\xfd\\x0e\\x71\\xad\\xf1\\x94\\xcf\\x54\\x07\\xb6\\x77\\x17\\x93\\x06\\x0d\\xe0\\xfc\\xa7\\xca\\x0a\\xe6\\x48\\x35\\xc4\\x31\\x87\\x40\\x8a\\x70\\x4f\\x53\\x3d\\x5e\\xa0\\xc8\\x3a\\x65\\x43\\x87\\xba\\x7d\\xb1\\x6e\\xd5\\x8e\\xc8\\x37\\x22\\x6d\\xf5\\x7c\\x1f\\xe6\\x38\\x2c\\x59\\x19\\xe9\\x22\\x13\\xf6\\xf1\\x8c\\xbb\\x57\\x35\\xd1\\x78\\xa4\\x76\\xaf\\x35\\xd3\\x90\\xb7\\xcd\\x25\\x56\\x21\\x7c\\x53\\x0f\\x3a\\x1f\\x8a\\xb2\\x33\\x9c\\x1a\\x5e\\x8d\\x96\\x93\\x87\\xef\\xd3\\x94\\x14\\xb5\\x6b\\xb7\\x84\\xdf\\xd5\\xeb\\x89\\xb8\\x59\\xe1\\xf4\\x03\\xa2\\x38\\xec\\xa2\\xa9\\x41\\xe6\\xdb\\x56\\xac\\x45\\x6b\\x73\\x45\\x06\\x98\\xd1\\x45\\x5e\\xc1\\xe9\\xb3\\x9a\\x1e\\x90\\x7d\\x6b\\xc7\\xe6\\xcf\\xf4\\x24\\xa2\\x8e\\xed\\x57\\x9a\\xf1\\x63\\x10\\x11\\x5b\\x67\\xf5\\xfc\\xf7\\xf8\\x34\\x6b\\x3f\\xa0\\x26\\x0c\\x6d\\xa2\\xe2\\x77\\x55\\xac\\xa5\\x70\\xba\\xbb\\x3d\\x30\\x3c\\xc8\\x32\\x46\\x0c\\x96\\x3b\\xfd\\xd5\\xc1\\xff\\xb2\\xfc\\x19\\x92\\x19\\x29\\xdd\\xa2\\xa7\\x17\\xfb\\xcb\\xeb\\x2b\\x85\\x25\\x76\\x1b\\xd6\\x60\\xce\\x4a\\x0f\\x76\\x85\\x28\\x5d\\x7f\\xad\\x61\\x15\\xab\\x09\\xf8\\xe6\\x3f\\x5f\\x77\\x39\\x14\\x49\\x4e\\x20\\xbe\\x1b\\x51\\x2d\\x11\\x14\\xcc\\xe3\\xf0\\xf6\\x8c\\x7d\\x94\\xf5\\x48\\x57\\x69\\x4f\\x22\\xaf\\x4c\\x69\\x8d\\x78\\x2c\\xe8\\x37\\xb0\\xc1\\x72\\x2b\\xb7\\x31\\x3b\\xb2\\xc4\\x1f\\x6d\\x3d\\xd1\\xa0\\x28\\x77\\xfb\\x42\\x96\\xd8\\x66\\x2a\\x9e\\x86\\x25\\x98\\x4d\\xc1\\xfd\\x1a\\x95\\x10\\xeb\\xa9\\xd6\\x43\\xac\\x58\\xa8\\x86\\xa0\\x45\\xcd\\x0e\\x53\\xc0\\x56\\xa8\\x33\\xf9\\x68\\xb3\\x5d\\x01\\x32\\x0e\\x9c\\xc0\\xb4\\x35\\xd3\\xf6\\xbf\\xad\\x26\\xf9\\xeb\\x57\\x54\\xd3\\x8d\\xdf\\x6d\\x5c\\x4b\\xf6\\x15\\xa7\\x64\\x4a\\x23\\xf9\\x82\\x6b\\xcc\\x97\\x60\\x92\\xd8\\x2d\\x81\\xd5\\x47\\x00\\x0d\\xe0\\x08\\x1b\\x7a\\x40\\xa9\\x3f\\xbd\\xda\\xc1\\x3f\\x7d\\x99\\x70\\x8c\\xcd\\xee\\xb9\\x40\\x5c\\xd6\\x34\\xca\\x07\\x48\\xca\\xd2\\xc1\\xd8\\xf1\\x64\\xf5\\xd7\\x7a\\x4f\\x36\\x4a\\xe4\\x88\\xbe\\xdc\\xf1\\xf2\\x0e\\xb9\\x54\\xbc\\x8a\\x27\\x8a\\xf8\\x14\\x32\\x41\\x78\\x56\\xa9\\x00\\xf8\\xf1\\x52\\x92\\x1a\\xfb\\xe1\\x79\\x14\\x22\\x9a\\x51\\x3b\\xd7\\x1a\\xb7\\xe6\\x61\\xcd\\xe1\\x29\\xaf\\x93\\xe2\\x50\\x94\\xc5\\x61\\x18\\xed\\x1f\\x22\\xdb\\x64\\x44\\x28\\xb4\\x74\\x65\\x1f\\xe3\\x6b\\xe8\\x2f\\xa3\\x69\\x5c\\x41\\xfc\\x86\\x99\\x66\\x7e\\x05\\x37\\x43\\xb0\\xa4\\x11\\x55\\xc3\\x1f\\x1e\\x26\\x79\\xc6\\xe8\\xcb\\x9c\\x9d\\x1f\\x5f\\x4b\\x40\\xa3\\x20\\xa9\\xfd\\x9f\\x47\\xda\\x9b\\x94\\x21\\x1b\\xa6\\x01\\xb2\\x2a\\x11\\x52\\x10\\xd9\\xf5\\x59\\xc4\\x49\\x6f\\x01\\x73\\x24\\x58\\xf4\\x9a\\xc3\\x4e\\xb3\\x86\\x63\\x6c\\x8b\\x6c\\x68\\xc7\\xbb\\xc0\\x07\\x8a\\xb6\\xf3\\x98\\xa6\\x24\\xb8\\xba\\xfb\\x1c\\x62\\x29\\x58\\x56\\x2d\\x23\\x1d\\xff\\xd4\\xdb\\x09\\x61\\x96\\xbb\\x87\\x47\\x9e\\x42\\xea\\x22\\xac\\xbd\\xcd\\xe8\\xde\\xb1\\x0e\\x31\\x16\\x32\\xf0\\x2f\\xca\\x14\\x78\\x7f\\xd3\\x14\\x05\\x69\\xb9\\x42\\x89\\x91\\x54\\x3e\\xc6\\xe8\\x34\\xe1\\x0b\\x14\\x9f\\x23\\xc7\\x4b\\xb9\\x9a\\xc7\\xb3\\x79\\x9a\\x20\\x96\\xd2\\x2e\\x38\\x7a\\x71\\x2b\\x6f\\x90\\x11\\xea\\x34\\xc5\\xbe\\x4c\\x46\\x85\\x81\\xac\\x62\\xce\\x66\\x20\\x63\\x25\\x2e\\x06\\x6a\\x9a\\x3b\\x15\\xc9\\x57\\x0d\\x06\\x5d\\xc1\\x61\\x99\\x29\\xf0\\x6b\\xc7\\x5a\\x31\\x79\\x46\\x8b\\xc8\\xa1\\x6e\\x3d\\xdc\\x4f\\xe1\\x85\\xce\\xba\\x0a\\x92\\xa5\\x46\\xb8\\x67\\x5f\\xc1\\xad\\xe5\\x63\\x07\\x15\\x0c\\x7e\\x4c\\x84\\x4f\\x6a\\xa5\\xf1\\xed\\xbf\\xb5\\x4a\\xc6\\x32\\xca\\x2b\\x25\\x9c\\x32\\xa3\\x3e\\xe2\\x86\\x78\\x56\\xc3\\x39\\x0a\\x67\\x40\\x36\\x4c\\xb0\\xdf\\xb9\\x76\\xe5\\x3d\\x0c\\xc6\\xc4\\x2a\\x10\\x6a\\x1c\\x26\\x91\\x8c\\x8a\\x6a\\x03\\x3b\\x2a\\xa3\\xc7\\xf2\\xe4\\x39\\x2e\\x79\\xf8\\xec\\xa5\\xb3\\x36\\xba\\xc5\\x06\\x1d\\x76\\x98\\xa3\\xbf\\xe7\\xc2\\xc2\\x92\\x89\\x25\\x54\\x03\\x0d\\xe6\\xce\\x7c\\x0d\\x06\\xee\\xfc\\x54\\x90\\x6f\\x81\\xe0\\x09\\x7f\\xcf\\xf2\\x7d\\x14\\xb9\\xb7\\x99\\x4a\\x79\\x70\\xe1\\xa5\\xf5\\xc6\\xb6\\x40\\x5d\\xca\\x22\\x03\\x3d\\xff\\x0e\\xae\\x13\\x8a\\xd8\\x99\\xf6\\xee\\x68\\x12\\x0b\\x8f\\x22\\x74\\x4b\\x02\\x69\\xa9\\xa8\\x98\\x9b\\x6f\\x7e\\x08\\xaf\\xfa\\xe7\\x7b\\xca\\x21\\x68\\xad\\xe2\\x40\\x58\\xae\\x68\\xa7\\xf8\\x00\\xe0\\x2e\\x7c\\x38\\x39\\x1b\\xaf\\x56\\x5d\\xd4\\x0b\\x55\\xfa\\x3a\\xb3\\xc2\\x47\\xb9\\xce\\xb4\\xd9\\x67\\x47\\x17\\x75\\xe6\\x63\\xd6\\xa1\\xc6\\xc7\\xe1\\x73\\x50\\xbb\\xd6\\xb9\\xa3\\xeb\\x1e\\x48\\x4a\\xc2\\xe7\\xa7\\xa5\\xc8\\x4f\\x50\\x83\\xe5\\xac\\xe8\\x73\\x0d\\xe8\\x9c\\x47\\xe8\\xdc\\xf8\\x34\\x1e\\x40\\xba\\x34\\x5d\\xbd\\x66\\xba\\xe0\\xf7\\xf0\\x76\\xa7\\x05\\xb1\\xbb\\x7f\\x47\\x0e\\x3e\\xdf\\xb2\\xb7\\x8e\\x4d\\x63\\x59\\x41\\x3d\\x18\\xd3\\x32\\x80\\xb4\\x54\\xa0\\xdb\\xb8\\x81\\xd8\\x60\\x67\\x26\\xfa\\x9b\\xea\\x27\\x24\\x75\\xe7\\x9f\\xea\\x6a\\x54\\xcb\\x4c\\x06\\x19\\x54\\x1b\\x4e\\x77\\xc1\\x70\\xc8\\x61\\x68\\x74\\xb9\\x54\\xbe\\xb8\\xd1\\x05\\xb8\\x6b\\xd1\\x91\\x7e\\x25\\xcf\\xba\\x92\\x67\\x18\\x7e\\xe2\\x03\\x8b\\x3f\\x00\\x78\\xf4\\xc3\\x18\\xb5\\x87\\xcf\\x44\"},\n{{0xe6,0x08,0xd5,0xde,0x97,0x97,0x90,0x7d,0xb6,0xd9,0x8e,0x03,0x45,0xd5,0xca,0xf2,0xad,0x33,0xe0,0xed,0xde,0xbf,0x18,0xb8,0x1d,0x61,0xe8,0x37,0x3e,0xcf,0xb4,0x99,},{0x60,0xe0,0xc1,0x6a,0xda,0x58,0x6e,0x36,0x46,0x91,0x2a,0x5f,0x2b,0xb3,0x18,0xfb,0xc3,0xd5,0x0b,0x57,0xd3,0x6f,0xab,0xb6,0x37,0x69,0x6f,0x9d,0x8d,0x4d,0xc7,0x61,},{0x0d,0x8f,0x09,0x5e,0x42,0xa2,0x73,0x0a,0x3c,0x7b,0xed,0xf4,0x2d,0x5c,0x83,0x39,0x8b,0x5c,0x0e,0xe9,0xc7,0x7c,0x5a,0x61,0xd9,0x82,0x29,0x13,0x96,0xa9,0x18,0x2a,0x08,0x02,0xa3,0x7f,0x32,0x4b,0xc4,0xfb,0x5d,0x4a,0xa4,0xed,0x60,0x44,0x4b,0x66,0x14,0x4b,0xac,0xbc,0x86,0x51,0x05,0xd7,0x69,0x0f,0x14,0x06,0x50,0x69,0x1d,0x03,},\"\\xe6\\x10\\xfa\\x7d\\x83\\x85\\xc0\\x9c\\x78\\x98\\x9e\\xd5\\xef\\x7a\\x23\\x05\\x47\\xf0\\x13\\xcb\\x7e\\x8d\\xdf\\x31\\x74\\x9f\\xfc\\x31\\xce\\xe1\\x0a\\xb3\\xef\\xac\\xa3\\xf1\\x4e\\xa1\\x94\\x51\\x0f\\x09\\x85\\xa8\\x18\\xef\\x8b\\x04\\x0e\\x10\\xc3\\xa5\\x11\\x4d\\xe1\\xac\\x08\\x0f\\x14\\xc3\\xd6\\x5d\\x3c\\x24\\x4f\\x92\\x42\\xf7\\x54\\x92\\xca\\xba\\xe8\\x00\\xfc\\xfc\\x9b\\xc2\\x75\\xea\\x1f\\x27\\x72\\x8c\\x92\\x0c\\x25\\x8f\\xe7\\xaa\\x73\\x94\\x80\\x60\\x29\\x9c\\xb8\\x78\\x35\\x79\\x2e\\xdc\\xc0\\x72\\x15\\x0b\\x73\\xce\\xfe\\xb0\\xd5\\x15\\x62\\xe5\\x3b\\x46\\x81\\x0e\\x27\\xa4\\xd7\\xf6\\xab\\xd3\\x2e\\x95\\x9f\\x7d\\x73\\x1d\\xde\\x01\\xd9\\x4b\\xc4\\x1e\\xd8\\x35\\xef\\xcd\\x42\\xc9\\x22\\x43\\x70\\x37\\xa8\\x7d\\xd3\\x66\\xff\\xad\\x2e\\xec\\xab\\x6a\\xba\\xeb\\x4f\\xcf\\x07\\x39\\x2b\\x3a\\xb4\\x0c\\xfa\\xef\\xea\\xa4\\x26\\x6b\\xc5\\x37\\x67\\x16\\x93\\xc9\\x09\\x3d\\xab\\xe8\\xa0\\x53\\x8c\\xaf\\xd1\\x2c\\x63\\x9a\\x04\\xbd\\x2b\\xa8\\x0c\\xe0\\xf2\\x9a\\xdb\\xfc\\x66\\xbd\\x46\\x37\\xca\\x05\\x43\\xa5\\x3b\\x0e\\x37\\x1d\\x0e\\x2e\\x47\\x0d\\x31\\xba\\x36\\x06\\x42\\xa4\\x5a\\xb4\\xcf\\xe3\\xe7\\x90\\xf5\\x87\\xf6\\xc5\\xa5\\x58\\x3f\\xd1\\x5b\\x18\\x99\\x78\\x38\\xa2\\x00\\x92\\x1c\\x1c\\x39\\x9c\\x0b\\x16\\x27\\x8b\\x7d\\xd6\\xd3\\xaa\\xab\\x6f\\x32\\x5b\\x16\\xaf\\xdf\\x76\\x1a\\x1b\\xbf\\x86\\x7d\\xe2\\xbd\\xd4\\x86\\x15\\xf1\\x5b\\x52\\x67\\x70\\xed\\x20\\xd7\\x9f\\x0f\\x30\\x71\\x4b\\xee\\xed\\xa5\\x8f\\x52\\xa3\\xcc\\x0c\\x5a\\x61\\x83\\x15\\xe5\\x22\\xb9\\xeb\\xe7\\xcd\\x99\\xb6\\x5e\\xd5\\x32\\xa6\\x2e\\x0f\\x0d\\xf7\\x27\\x64\\xd6\\xec\\x6d\\x6d\\x1b\\xa4\\x0e\\xf4\\x0e\\x05\\x42\\x63\\x60\\x79\\x5d\\x6d\\xd8\\x5b\\xb3\\x9f\\x73\\x21\\xd3\\xfb\\x06\\x27\\x5d\\xe0\\x96\\xaa\\xe4\\xa2\\xfa\\x22\\x93\\xf3\\x1b\\x33\\xf4\\xad\\x4d\\x7c\\x25\\x1a\\xc1\\x3e\\x8e\\x15\\xc2\\xbf\\xb1\\xf9\\x8f\\x49\\x62\\xc5\\x4b\\x6c\\xe0\\x33\\xb0\\x8a\\xa6\\x26\\xf2\\x90\\x5d\\x46\\x3f\\x55\\xb7\\x1c\\xbd\\xad\\xec\\xdb\\x3e\\x0b\\x36\\x5d\\xae\\x07\\xb1\\x70\\x30\\x19\\x83\\xae\\xb8\\x3b\\x1e\\x9f\\x2f\\x28\\xcf\\x65\\x41\\x9f\\xd6\\xb0\\xa1\\xa9\\xc2\\x6c\\xb5\\x4b\\x59\\x49\\xf4\\xbc\\x01\\xa9\\x86\\x81\\x84\\x4b\\x43\\x03\\x4c\\x37\\x2a\\x45\\x3d\\x38\\xf0\\x47\\x3d\\x0d\\xdc\\x70\\x9d\\x9f\\x49\\xc8\\x75\\x3a\\x75\\xb8\\x56\\xc7\\xe9\\x77\\x55\\x17\\xdf\\x57\\x4a\\x09\\xa3\\x95\\x3b\\xde\\x5d\\xae\\xdf\\x8e\\x4a\\x8d\\xa9\\xd7\\x73\\xa2\\x15\\x12\\x0e\\x26\\x9f\\xa1\\x86\\x11\\x33\\xcd\\x4c\\xea\\xeb\\x91\\xd5\\xcc\\xa2\\x60\\x63\\x25\\x45\\x8e\\x50\\xcb\\x96\\x6d\\x14\\x05\\x5b\\x22\\x44\\x7e\\xb6\\x5d\\xc1\\x01\\x18\\xda\\x08\\x31\\xdf\\x28\\xc3\\xb4\\xee\\x8b\\x11\\xf0\\x73\\x2f\\x15\\x21\\xbb\\x94\\x82\\xb1\\x1f\\x5a\\x86\\xb2\\x2f\\x18\\xe8\\x3d\\xd1\\xd9\\x67\\xd3\\x94\\x42\\x85\\xe5\\xd6\\x3a\\x5a\\x98\\x98\\x17\\xab\\x24\\x18\\xbc\\x7e\\xd8\\x91\\xa3\\x73\\x84\\x67\\x47\\xa1\\x2b\\x52\\x7c\\x2f\\x44\\xee\\x01\\x97\\xb9\\x46\\xc6\\x7e\\x67\\xfa\\x4a\\xa1\\xc2\\x9f\\x33\\x79\\xd4\\x6f\\xe0\\x7d\\x3a\\xab\\x83\\xda\\x17\\xf9\\xd7\\x6b\\xed\\xd3\\x84\\x36\\xa0\\x55\\xe3\\x4c\\xa1\\xd3\\xaf\\x5a\\x87\\x54\\xd3\\x8c\\x17\\xb9\\xba\\x4e\\x64\\x19\\xcb\\xab\\x51\\x5f\\x43\\x1a\\x25\\x95\\x95\\x4e\\x42\\x8c\\x26\\x70\\xfa\\xe3\\xbe\\xd6\\x2b\\x45\\x96\\x17\\x9c\\xb5\\x9e\\x21\\x10\\x87\\x08\\xd0\\x71\\xbc\\xf9\\xc6\\x21\\xc6\\xdf\\xf0\\x3d\\x3c\\xdc\\x92\\x02\\x02\\x94\\x54\\x01\\x3b\\x9d\\x13\\x38\\x47\\xf2\\x65\\x44\\x81\\x1c\\x01\\x69\\x77\\x0f\\xdc\\x6f\\xe5\\x63\\x8b\\xfd\\x7a\\x72\\x0d\\x8b\\x38\\xf7\\xe3\\x0a\\x7e\\x68\\x79\\x06\\x0b\\x5f\\x28\\xc8\\xab\\x17\\xb0\\x02\\x00\\x71\\x32\\x07\\xe8\\x63\\x7b\\xff\\x48\\x44\\xd8\\x42\\xd9\\xca\\x78\\x83\\x91\\x34\\x01\\x98\\xa3\\xfe\\x01\\x72\\xdf\\xa7\\x4d\\xe1\\xe5\\x5a\\xde\\xfb\\xc2\\xe9\\xbc\\x7e\\x88\\x54\\x76\\xd1\\xb9\\xc0\\x55\\x81\\x34\\x08\\xa4\\x75\\x28\\x43\\x43\\x55\\xbf\\x03\\xfd\\xd4\\xe2\\x7d\\x8b\\x34\\x61\\xb0\\xfb\\x66\\xab\\x3e\\x15\\xa8\\x79\\xa1\\x84\\x45\\x7e\\x9e\\xd9\\xea\\x6c\\x51\\xb6\\x63\\xb3\\x1e\\xdc\\x8c\\x4a\\x3c\\xd4\\x54\\xf6\\x9d\\x9c\\xe5\\x18\\xd1\\xb8\\x78\\x88\\xee\\x3d\\x9d\\xd5\\x41\\x6e\\x43\\xe1\\x14\\xac\\x05\\x72\\x13\\x52\\xdf\\xfc\\x2c\\xa8\\x85\\x97\\x37\\x7b\\xbc\\x41\\x40\\x09\\xb0\\xc2\\xfd\\x36\\x9b\\xe5\\xba\\x35\\xa6\\xdc\\xe3\\x47\\x8b\\x6c\\x11\\xb3\\x3c\\x0a\\x33\\x91\\x8b\\x6e\\xe5\\xac\\x4c\\xd4\\xc2\\xf1\\xca\\x6b\\xd1\\x90\\xa0\\x00\\xa8\\x38\\xda\\x38\\xf5\\x30\\x77\\x56\\x03\\x35\\x59\\x6d\\x13\\x58\\x93\\x77\\x93\\x96\\x38\\x10\\xa7\\x9a\\x21\\xb8\\xd4\\x61\\x40\\xe7\\x68\\x89\\x8d\\xcd\\xa8\\x8a\\x0f\\xaf\\x8d\\xdd\\x0d\\x63\\x38\\x47\\xaa\\xea\\x0e\\x03\\x0b\\xe6\\x45\\x5b\\x41\\xe3\\xed\\xe1\\xe2\\x87\\x37\\x30\\xeb\\x84\\x81\\xac\\xaa\\x7a\\x51\\x9c\\xf9\\x19\\x58\\x47\\xa8\\x6a\\xfa\\x57\\xf9\\x07\\x1d\\x44\\xf4\\xaf\\x4c\\xa0\\xd3\\x43\\xc9\\x0c\\x0d\\x22\\xd9\\x46\\x14\\x65\\x85\\xf0\\x0e\\xf3\\xae\\xf5\\x7f\\x0f\\x9e\\x55\\xe8\\x18\\xc0\\x12\\x8a\\xe2\\x55\\xdb\\xc3\\x11\\x6c\\xf0\\xfe\\x02\\x16\\x6d\\x54\\x85\\x9d\\xec\\xbf\\xdc\\xcc\"},\n{{0x0e,0x86,0x87,0x2c,0x78,0x62,0x0f,0x10,0xcb,0x6d,0xfc,0x46,0x3d,0x2c,0x28,0x72,0xc4,0xda,0x66,0x07,0x48,0xc9,0xcd,0xa0,0x1a,0xb1,0x45,0x69,0x58,0xaf,0xba,0x7f,},{0xde,0x49,0x89,0x98,0x92,0x69,0xca,0xbd,0x8f,0x4f,0x40,0x9c,0xf1,0xa4,0xd9,0x74,0x03,0x8b,0x27,0x55,0x02,0x27,0x35,0x57,0xf3,0x12,0xd5,0x55,0x3f,0xab,0x93,0xc3,},{0x20,0x37,0xe9,0x77,0x41,0xc3,0xe6,0x40,0x9c,0x66,0xfc,0x67,0x82,0xaa,0xb3,0x89,0xc5,0xd7,0x78,0x09,0x7a,0xc7,0x78,0x99,0x9e,0x85,0x76,0xe4,0x9e,0xf4,0xf6,0xa0,0xc7,0x73,0x0b,0xd9,0xe0,0x93,0xdd,0x3c,0x0a,0xe7,0xec,0x76,0x20,0x33,0x80,0xda,0x65,0x71,0x47,0xd3,0x3a,0x8d,0x9d,0xd6,0x5e,0xd0,0x0c,0xf7,0x62,0x24,0xd6,0x01,},\"\\xa9\\x00\\xf3\\xe9\\xc6\\x43\\xa5\\x64\\x9b\\x07\\x6f\\xb6\\x9c\\x3b\\x2a\\xc0\\x84\\xd5\\x2c\\xcb\\xaf\\xcd\\xca\\x5a\\x9d\\xb1\\xda\\xa7\\x05\\x00\\xde\\x99\\x33\\xd2\\x3d\\x15\\x3f\\x74\\x95\\x4e\\x1b\\xd5\\xf5\\x7b\\x89\\x9f\\xe8\\xa4\\xb1\\x34\\xc1\\x95\\x41\\x2b\\x49\\x83\\x3b\\x6e\\x50\\x95\\xa6\\x55\\x4e\\xaa\\x6d\\x84\\x4b\\x11\\xf1\\x58\\x4c\\x85\\x05\\x5b\\x87\\xf4\\x1c\\x99\\x96\\x69\\x04\\x6c\\x71\\xae\\xb5\\xc0\\x45\\x3f\\xd6\\xa3\\xc4\\x37\\xf8\\x15\\xf0\\x68\\x98\\x7c\\x38\\x68\\xcc\\x07\\xaa\\x2a\\xf6\\x58\\x19\\x04\\x6c\\x30\\x7b\\xaf\\xb7\\x53\\x0d\\xe8\\x4f\\x71\\x30\\xae\\xa7\\x8e\\xf0\\x05\\xd5\\xff\\xf5\\x2f\\x8d\\xea\\xf1\\xd5\\xe9\\xc3\\x26\\xd3\\x21\\x7f\\xc5\\x5b\\x94\\xf6\\x28\\xaa\\x10\\x4f\\x6a\\x24\\xa3\\x95\\xe6\\x2d\\x1b\\x62\\xbd\\x9c\\x0d\\x82\\x43\\x63\\x19\\xc5\\xd7\\x3e\\x57\\x65\\x43\\x5f\\x3b\\xa8\\x56\\xa4\\x73\\x4f\\xd6\\x0a\\xe6\\x17\\xf7\\xf0\\xc3\\xba\\x57\\x22\\xa7\\x33\\x66\\xc8\\x8a\\x6d\\xfe\\xca\\x85\\xc4\\x44\\x63\\x9f\\x44\\x1f\\x2c\\x55\\xfd\\xc4\\x64\\xec\\xb2\\x99\\xee\\xe3\\x6d\\x8e\\xae\\x06\\x3b\\xb9\\x4b\\xb2\\x43\\x9d\\xa0\\x4f\\xa5\\xeb\\xc5\\x09\\x23\\x38\\xa5\\x03\\x5e\\x48\\x0f\\x08\\x34\\xae\\xee\\x8d\\x71\\x1f\\x28\\xc4\\x6d\\xc9\\x60\\xde\\x1b\\xe9\\xdf\\x30\\x7c\\x18\\xc5\\xc1\\x78\\xb2\\x62\\x96\\xdc\\x56\\x7f\\x15\\xbf\\x60\\x86\\x3a\\x36\\x71\\x08\\x67\\xe9\\x2f\\xd5\\x10\\x48\\x86\\x56\\x74\\xc2\\xaf\\x0c\\x53\\xb2\\xe7\\xa2\\x48\\xae\\x5b\\xd0\\x9a\\x49\\xaa\\x03\\x06\\x18\\x49\\x5f\\x82\\x48\\x0c\\x42\\x0a\\xe1\\x06\\x88\\x9b\\xec\\x00\\x62\\x78\\xb9\\x22\\x72\\x07\\x57\\x09\\xfe\\xc9\\x54\\x87\\xcf\\xb1\\x00\\x61\\xe6\\x72\\x2b\\x93\\xee\\xbf\\xc0\\xbc\\x58\\x7b\\xf7\\xba\\x5f\\x66\\x92\\xb0\\x74\\xf5\\x5a\\x98\\xd5\\xc3\\x02\\x76\\x0b\\x1b\\xf1\\xd0\\x9f\\x7e\\x86\\x68\\x47\\x9c\\xa6\\xf0\\x1e\\xed\\xa2\\xfd\\xaf\\x58\\x4a\\xc2\\x05\\x8f\\xbf\\x7c\\xf3\\x10\\x0d\\x06\\xb8\\x09\\x1b\\xfe\\xab\\x51\\xc0\\xc0\\xb1\\xd4\\xee\\x3a\\x82\\x57\\xf6\\x9b\\x16\\x17\\x60\\x4f\\xce\\x95\\x3b\\xb5\\xf7\\xf2\\x71\\xc6\\xa1\\x88\\x0e\\xa1\\xb3\\xf6\\x62\\x67\\xe2\\x43\\x9f\\x34\\x58\\x06\\x28\\x91\\x78\\x77\\xc6\\x6e\\xc0\\xfe\\xd7\\x6e\\x44\\xe8\\xbb\\x2b\\x91\\xa8\\x80\\x6d\\xf4\\xba\\xca\\x6c\\xc9\\x28\\x89\\xb8\\x80\\x50\\x70\\xc9\\xa6\\x17\\xf8\\x07\\x15\\x75\\x30\\x75\\x1c\\xc1\\x7c\\x47\\xb0\\x9e\\xeb\\xa9\\x4d\\x22\\xb4\\xe5\\x47\\xc3\\x70\\xce\\x7a\\x49\\x6f\\xca\\xa3\\x41\\x2a\\xff\\xff\\xb8\\xc9\\xb4\\xde\\x89\\xb9\\xf1\\x21\\xaa\\xec\\x5f\\x54\\x4b\\x0c\\x72\\x5e\\xc5\\xee\\x9d\\x4b\\x34\\x76\\xad\\xc9\\xd0\\x50\\xed\\xb0\\xfd\\xba\\xf0\\x2c\\xa9\\xe3\\x8a\\xf1\\x5f\\x51\\x50\\x15\\xa2\\x67\\x29\\x2e\\xc9\\xaa\\x54\\x44\\xed\\x1d\\xec\\xd9\\xcd\\x9e\\x1e\\xad\\x64\\x87\\xa0\\xcc\\xef\\x99\\x5b\\x1c\\x60\\x0a\\x03\\x69\\x35\\x83\\x86\\x60\\xac\\xab\\x27\\x6d\\x8b\\x0e\\x5b\\x07\\xd9\\xf3\\x63\\x53\\x21\\x4b\\xf8\\x0f\\x94\\x1a\\xc8\\x8c\\xf4\\x0a\\x08\\xaf\\x91\\x79\\x26\\x23\\x41\\x12\\xec\\xcd\\xaa\\x16\\x2d\\xc9\\x9d\\xe3\\xe2\\x5b\\xaf\\xf6\\x5b\\xb0\\x1e\\x49\\x89\\x89\\x86\\x33\\x2b\\xdc\\x2d\\x70\\x5d\\x5a\\xea\\x40\\xf9\\xbc\\x4f\\xbb\\x28\\x06\\x89\\x44\\x96\\x03\\x8d\\xa2\\x36\\xe9\\xdc\\x29\\x60\\x0c\\x9c\\xed\\xea\\xc3\\xb6\\x16\\xcc\\x56\\xd8\\x9e\\xc2\\xfa\\x67\\x38\\x96\\x66\\xc6\\xc4\\xfe\\x23\\x3b\\x63\\x91\\x05\\x02\\x3e\\x10\\x1b\\x87\\x4a\\x63\\x30\\xfe\\x57\\x3f\\x80\\xac\\xe5\\x5d\\x03\\x7c\\xc6\\x12\\xe6\\xdf\\xd5\\xa6\\xe6\\x86\\xf9\\xa8\\x30\\x54\\xfc\\x46\\xe1\\x5b\\xb6\\xda\\x45\\x3d\\x81\\x0c\\xf1\\x38\\xa1\\x78\\xbf\\x03\\x9d\\x1e\\x18\\x16\\x14\\xff\\x40\\xcb\\xe6\\xbb\\x3b\\x47\\x36\\x63\\x75\\x2e\\xa8\\x02\\x5f\\xf7\\xf7\\x39\\xee\\x4b\\x67\\x11\\x0f\\x96\\x80\\x89\\xb2\\x47\\x3c\\xd0\\x44\\xd4\\x8b\\x00\\x9d\\x06\\x77\\xf7\\x91\\xf5\\x4e\\x2d\\xf6\\xaf\\xdc\\x3a\\xcb\\x9e\\x99\\xdd\\x69\\x58\\xa4\\x50\\xc0\\xe1\\xb6\\xdd\\x5e\\x97\\xa2\\xcc\\x46\\x29\\x8b\\x4f\\x48\\xac\\x6a\\xda\\xf0\\x13\\xd7\\x5b\\x2c\\x42\\x07\\x2d\\x2e\\xe1\\x3f\\x73\\x36\\x87\\xee\\x83\\xc3\\xf7\\x0c\\x4f\\xdd\\x97\\x20\\xfd\\x17\\x98\\xc6\\x62\\xfe\\xf3\\xba\\x01\\x2b\\xed\\xd4\\x45\\xc4\\x72\\x9f\\x21\\x30\\x48\\x4f\\xe7\\x7a\\xc1\\xb4\\xc4\\xdd\\xeb\\x81\\xfa\\xf6\\x0f\\x76\\xe3\\xbd\\x7d\\x21\\xa9\\xa6\\xc5\\x7a\\x69\\xa9\\xcd\\x9c\\xc2\\x03\\xfc\\x63\\xb5\\x9e\\xe8\\x4b\\x89\\x15\\xb3\\xc1\\x8a\\x59\\x54\\xe2\\x27\\xc8\\x6e\\xbb\\xb7\\xd4\\xc4\\xc1\\xa0\\x8d\\x0c\\x5e\\x46\\x7c\\x68\\xa0\\x69\\x70\\x75\\x1e\\xf5\\x84\\xbd\\xd6\\x11\\xe1\\xdd\\x1b\\x48\\x90\\x0a\\xb3\\x54\\xb9\\x9c\\xec\\x6e\\x1d\\xf3\\xbd\\x41\\x46\\xea\\x07\\x55\\x35\\x0d\\xc1\\x1c\\x3a\\x3f\\x60\\x0d\\x47\\x0a\\x74\\xf4\\x75\\xe4\\xfe\\xed\\xaf\\x08\\x65\\x27\\x6f\\xa8\\xa9\\x77\\x13\\x47\\x1d\\x0c\\xa9\\x95\\x5c\\x71\\x35\\x88\\x33\\x9d\\xee\\x79\\x65\\x6e\\x56\\x7e\\x6a\\xb1\\xdb\\xf9\\x83\\x07\\x03\\x81\\x7a\\xe6\\x20\\x92\\x9a\\x06\\x84\\xa5\\xca\\xf2\\x0f\\xef\\x81\\xa8\\xee\\x89\\x7b\\xe7\\xe5\\x05\\xad\\xe6\\x49\\x6b\\x9a\\xef\\x02\\x72\\xbd\\x8f\\x35\\x08\\x60\\x23\\x3b\\x33\\x8c\\x2e\\x36\\xd3\\x13\\x8d\\xb6\\x95\\x38\"},\n{{0x52,0x03,0x54,0xd8,0x5a,0x87,0xd7,0xc2,0x2c,0xa6,0xf7,0x84,0x71,0x44,0x10,0xec,0x98,0xbf,0x6a,0x65,0xf8,0x03,0xef,0x93,0x79,0xbd,0xc8,0x04,0x35,0x9b,0x23,0x49,},{0xd8,0x51,0x1c,0xea,0xc2,0xfd,0x66,0x1a,0xcb,0xff,0xb0,0x1b,0xa2,0x74,0x1c,0xad,0x88,0x99,0x34,0xde,0x63,0x92,0x96,0x1b,0xde,0xc6,0xfa,0x46,0x12,0x3b,0x7f,0x0f,},{0x75,0x4e,0x60,0xd3,0xf6,0xf4,0xab,0x4f,0x5d,0x0d,0xdb,0xb0,0x01,0x53,0x20,0x09,0x16,0x63,0x88,0x48,0x7f,0x78,0x0b,0x76,0xf6,0x0b,0xd0,0xbc,0x9f,0xef,0xab,0xfa,0xab,0x6b,0xe2,0xae,0x78,0x69,0x57,0x3a,0x64,0x79,0x6e,0xf2,0x84,0x6e,0x85,0xe5,0xcd,0xae,0x52,0xdb,0x10,0x44,0xfe,0xfa,0x79,0x6b,0xac,0xf4,0x8b,0x96,0x8b,0x0d,},\"\\xa1\\xd4\\xad\\x48\\x6e\\xbb\\x7c\\x1a\\x0a\\xcb\\x8f\\x11\\x70\\x13\\xe8\\xe4\\x74\\x67\\x89\\xc6\\x24\\x4a\\x56\\xc9\\xed\\xfb\\xf1\\xef\\x37\\xac\\x13\\x09\\xaa\\xf5\\x1c\\x93\\x75\\xfc\\x12\\xca\\xcd\\x68\\x97\\xa4\\x47\\x95\\x45\\xf2\\xbf\\x39\\x0a\\xb7\\xc0\\xc0\\xe5\\xc5\\x92\\xf5\\x50\\x6e\\x99\\x38\\x37\\x8a\\x11\\xb6\\x36\\xbf\\x85\\x70\\x29\\xb9\\x68\\x54\\x7a\\xa5\\x06\\xc4\\xa0\\x82\\x9a\\x15\\xfd\\x39\\x95\\xfe\\xad\\x4f\\x86\\x0f\\xd7\\xc6\\x23\\xc6\\x3e\\x86\\x95\\x43\\x6e\\xae\\x55\\x81\\x64\\x14\\x77\\x83\\x47\\x09\\x2f\\x5f\\x4d\\x42\\x2b\\xb1\\xb5\\xe5\\xa0\\x69\\x66\\x24\\x1e\\xfe\\xc1\\x4f\\x1e\\x4f\\xca\\x06\\x63\\x91\\x14\\x71\\x8c\\x30\\xeb\\xca\\xdd\\x4c\\x6d\\x8a\\xbe\\x7f\\xe9\\x3b\\x25\\xd1\\x71\\x73\\x53\\x39\\x54\\x18\\x8b\\x1a\\xb0\\x3f\\xcb\\x77\\x92\\xcb\\x63\\x5c\\xe3\\x6e\\x9b\\xdb\\xdd\\xe7\\xa5\\x61\\xc5\\xf6\\x69\\x20\\xd9\\x10\\xcb\\x26\\x9c\\x8c\\x1c\\x3f\\x59\\x32\\x65\\x09\\x00\\x72\\xc4\\x89\\x32\\xe6\\x92\\xa9\\xc7\\x38\\xc7\\x04\\x89\\x74\\x89\\xa7\\x15\\xc2\\xb3\\x94\\xd5\\xa8\\x6f\\x70\\x36\\xa4\\xca\\xc5\\xdc\\xb5\\xb8\\x5c\\xfa\\x16\\x21\\x56\\xe0\\xbc\\x6b\\xfe\\x02\\xfb\\x4c\\x38\\x60\\x8c\\xfb\\x23\\xc9\\x2b\\x8b\\x6a\\x3c\\xb4\\x6e\\x48\\x7d\\x60\\xe0\\xdc\\x97\\xaa\\x2e\\x33\\xe3\\xda\\xda\\x92\\x5e\\x4e\\x66\\x12\\xcc\\x5a\\xf1\\x25\\xe5\\xac\\xa4\\x58\\x17\\xa2\\xfd\\x6c\\x3f\\xf1\\x0b\\x18\\x93\\x8b\\x44\\xbd\\x4d\\xd2\\x0d\\x7f\\xcc\\xf7\\xf2\\x6b\\x40\\xa6\\x6f\\x48\\xaa\\xff\\xc9\\xa5\\x41\\xe6\\xd3\\x71\\x38\\xfc\\x55\\x46\\x98\\x68\\xe2\\xd1\\x03\\x65\\xef\\xf3\\x7f\\xac\\x36\\x0f\\xab\\x3d\\xc5\\x54\\x37\\xac\\x2d\\x8f\\xea\\x74\\x74\\x40\\x5f\\xb3\\x63\\x0f\\x79\\x63\\xd2\\xd4\\x59\\x58\\xf9\\x09\\xd1\\x48\\x30\\x28\\x6f\\xf1\\x52\\xaa\\x75\\x2f\\x51\\x0c\\xe9\\x80\\xbd\\x57\\x54\\xe3\\xfa\\x32\\xc6\\x99\\x24\\xdd\\x95\\xd5\\xc1\\x52\\xa7\\x37\\xa8\\xfa\\xdc\\xfd\\x0a\\x45\\x60\\xe0\\xb1\\x14\\xf8\\xe8\\xaa\\xa6\\x18\\xd4\\x38\\xb9\\x87\\x71\\x11\\xda\\x17\\x40\\xef\\x81\\x7c\\x44\\x19\\x39\\xec\\xec\\x79\\x9b\\xa1\\x6b\\x1b\\x17\\x1c\\xa9\\xb6\\x49\\xb7\\xd7\\x8f\\xa0\\x52\\xd1\\x49\\x7a\\x50\\x76\\x88\\xbe\\xde\\x49\\x00\\xab\\xc5\\x3a\\x96\\x48\\xda\\x59\\x17\\x03\\x5c\\xef\\xfe\\x0d\\xa2\\x1c\\x25\\xc0\\x9b\\x06\\xd6\\x18\\x5b\\xdd\\xa2\\xd7\\x78\\xf7\\xed\\xe6\\x15\\x3e\\x3e\\xaf\\xf4\\x95\\xc9\\x79\\x6d\\x4d\\x16\\x6d\\x2d\\x2e\\xa4\\x18\\xe4\\xa4\\xaa\\x6e\\x67\\x8f\\xaf\\x06\\x96\\xe7\\x52\\xa0\\x9e\\x02\\xea\\xad\\xe7\\x63\\x07\\x0e\\x08\\x8e\\x99\\x64\\x91\\x9f\\xf4\\xaa\\x4c\\x82\\xf8\\x62\\x9a\\x3d\\x5c\\x79\\x7c\\x2a\\x64\\x59\\x4d\\x20\\x68\\x35\\xda\\x0b\\xfa\\x43\\xcc\\xd9\\xdd\\xfc\\xdb\\x6a\\xac\\x4d\\x48\\x6e\\x03\\xc8\\x41\\x22\\x37\\x59\\x39\\xa5\\x27\\x0b\\xc1\\x51\\x9e\\x07\\x07\\xe5\\x1c\\x3f\\x46\\xf1\\xe5\\xc5\\x66\\xb3\\x3a\\x24\\x5f\\xa0\\xc2\\x02\\x83\\x84\\x72\\x36\\x3d\\xe9\\xf0\\xed\\xde\\x2e\\x79\\x1d\\x82\\x29\\x30\\x95\\xf7\\x50\\xbf\\xf5\\x45\\xe6\\xc3\\x47\\x39\\xdc\\xc5\\x4d\\xb0\\xa3\\x6a\\xe2\\xe2\\xaa\\x39\\xb0\\x7c\\xb4\\xf6\\xa9\\x64\\x62\\x40\\xd2\\xd3\\x14\\x88\\xf6\\x78\\x15\\xb2\\x95\\x45\\xd2\\x20\\xbe\\x92\\x9e\\x33\\x39\\xf8\\x28\\x1a\\x93\\x7e\\x05\\xa8\\xc5\\xc3\\x88\\x7e\\x06\\x04\\x8e\\xa7\\xb1\\x8a\\x48\\xf8\\xd9\\x1b\\x1e\\x3a\\xf5\\xca\\xb5\\xce\\xda\\x0e\\xbd\\x71\\xbf\\x54\\xed\\xec\\x20\\x3d\\x37\\x16\\x5e\\x4c\\x9f\\x9f\\x80\\x46\\x1c\\xd2\\x9f\\xcd\\x99\\xdd\\xea\\x43\\x96\\x93\\x94\\x1b\\x5d\\x53\\xff\\x94\\x37\\x9c\\xf6\\x42\\x57\\x1d\\xd5\\x59\\xa1\\x1f\\x8f\\x38\\x3d\\x94\\x3f\\x22\\x55\\xcf\\x71\\x58\\x00\\xaf\\x77\\x6b\\x10\\x45\\xbf\\x19\\xa9\\xc9\\xbb\\x09\\x51\\x55\\xdf\\xb6\\x46\\xb6\\x5f\\x4a\\x28\\x0f\\x2a\\x97\\xef\\x92\\x7d\\xda\\xbe\\x24\\xa2\\xf9\\x71\\xa8\\x17\\x0d\\xd4\\x2a\\x08\\x92\\x76\\x82\\x5c\\xb9\\x14\\x8c\\x01\\x5a\\xae\\x1e\\x9d\\xad\\xf2\\x2c\\x10\\xe7\\x54\\x8c\\x59\\xbf\\x6b\\x86\\x8b\\x20\\xe8\\x6c\\x83\\xa9\\xe7\\x34\\x3a\\xec\\x27\\x54\\xee\\x62\\x25\\xf9\\xfd\\xce\\xaf\\x8e\\x51\\xc4\\x0e\\x95\\x5b\\xda\\x49\\xc3\\x5d\\xed\\x38\\xfa\\x8b\\xcc\\x1e\\x6c\\x8f\\xc9\\xc2\\x41\\x2e\\x91\\x04\\xc5\\xc2\\x36\\x8b\\x1f\\x99\\x23\\xe0\\x10\\xfa\\x2e\\xde\\x91\\x1d\\x42\\xb1\\x39\\xf4\\x00\\x7e\\x34\\x26\\x92\\x2f\\xfb\\x61\\x58\\xec\\xa9\\x7b\\x47\\xcf\\xc9\\x97\\x85\\x35\\x12\\xbb\\x9d\\x4c\\xa2\\xf0\\x17\\xc2\\xc2\\x63\\xdc\\x19\\x9f\\x3b\\xf1\\xeb\\x4f\\x15\\x08\\xef\\x82\\x8b\\x0e\\x00\\xdb\\x21\\x00\\x27\\x36\\xa7\\xf2\\x2e\\xc9\\x12\\x98\\x19\\x45\\x83\\x13\\x9a\\xd7\\x5f\\x58\\xe2\\x1b\\x51\\x8d\\xaa\\x49\\xa4\\x07\\x6c\\x63\\x75\\xfa\\xa6\\x08\\x91\\xa6\\x9e\\x52\\xa6\\x56\\x69\\x9d\\x80\\x34\\xa7\\xab\\x7f\\xcb\\xe4\\x21\\x75\\x49\\x14\\x41\\xfe\\x61\\xb1\\x78\\x3e\\x83\\x78\\x57\\x52\\x22\\x15\\xa5\\xfa\\xc5\\x59\\x0b\\xed\\x2e\\x9d\\x20\\x66\\x06\\x09\\x6d\\x3b\\xe8\\xee\\x92\\x87\\x3b\\xfc\\x30\\xca\\xb1\\x5c\\xe9\\xf9\\x91\\x0d\\x01\\xa1\\x17\\xf8\\x99\\x26\\xcc\\x3a\\xfa\\x8d\\x10\\x4f\\x79\\x9f\\xf3\\x80\\x98\\xde\\x28\\xb8\\xff\\x0f\\x03\\x87\\x25\\xc2\\x90\\x3b\\x24\\xc1\\x42\\x9c\\xea\\x49\\x25\\x24\\x9d\\x87\\x81\"},\n{{0x06,0x1b,0xcf,0x1a,0xa6,0xfd,0x98,0x98,0x97,0xb3,0x22,0xe5,0x91,0xcc,0xef,0x54,0x54,0xef,0x4a,0x5a,0xdb,0x1a,0x48,0x00,0xf3,0x26,0x11,0xcf,0xf2,0xb5,0xbc,0x78,},{0x73,0xc8,0x0b,0x73,0x4b,0xfc,0x94,0x17,0xd5,0x76,0x89,0x0c,0x20,0x16,0x6d,0xa5,0xc7,0xfa,0xbd,0x61,0x3f,0x75,0x47,0x4f,0x76,0x49,0x73,0x2e,0x00,0x29,0x5b,0xe2,},{0x5a,0xda,0xa9,0x43,0x30,0xa0,0x35,0x37,0x12,0xa3,0x4d,0xbe,0x97,0x3b,0x75,0x18,0xf9,0xa2,0xc7,0x13,0xf8,0xaa,0xd1,0x00,0x25,0x1b,0x08,0x6a,0xe8,0xde,0x26,0xf6,0xd2,0xb6,0xcc,0xf0,0x52,0x8c,0xc5,0xde,0xdc,0xa3,0x18,0xdf,0x19,0xcc,0x7e,0x45,0xde,0xae,0x28,0x1e,0x13,0x24,0xb9,0x6e,0x32,0xfe,0xf4,0x5a,0xaf,0x60,0xb1,0x0c,},\"\\xd6\\x3b\\xb9\\x20\\x8c\\x1f\\x4c\\x7d\\x43\\x32\\x6c\\xf3\\x5f\\xa5\\xd8\\x39\\x33\\x15\\x18\\x04\\xab\\x89\\x1d\\x49\\xb0\\xbd\\xaf\\x42\\x9e\\x4c\\x39\\xa3\\x21\\x42\\x8e\\x0d\\x90\\xaa\\x00\\x31\\x8b\\x97\\xe0\\x8c\\x70\\x24\\xc9\\x12\\xcf\\x38\\x88\\x79\\xf3\\xcf\\x97\\x4b\\xb2\\x53\\xa1\\xe7\\xa4\\xc8\\xee\\xc1\\x93\\xbf\\x4c\\x14\\xaf\\x6f\\xb9\\x79\\x4d\\xf0\\xd4\\x97\\x85\\x0e\\xdb\\x04\\xd5\\x74\\xc9\\x7e\\xd7\\x6c\\x70\\x21\\x39\\x96\\x84\\x01\\xb4\\x0e\\xb5\\x43\\x94\\xef\\x4c\\xfa\\xa7\\xe5\\xd3\\xcd\\x94\\x3a\\xf1\\x21\\x92\\x53\\x8d\\xde\\xe5\\x93\\xc2\\xa2\\x4a\\x26\\x7a\\xfa\\x13\\x71\\xfd\\x77\\xfe\\xee\\x20\\x71\\xf4\\x36\\x9f\\xbe\\xf8\\x79\\x76\\xe7\\xeb\\xd8\\x1d\\x1e\\x5b\\x31\\xd6\\xe0\\x9e\\x02\\xd8\\x30\\x35\\x7d\\x36\\xbf\\xf8\\x59\\x67\\x03\\xe4\\x14\\x6d\\x08\\x27\\xbe\\xc9\\xc0\\xf8\\x7b\\x26\\xf3\\x11\\x95\\xc9\\x6c\\x93\\xb6\\xd8\\xc4\\x67\\x67\\xec\\x1b\\xc6\\xde\\x39\\xf0\\x00\\x8a\\x41\\xff\\x87\\x5d\\xa0\\x50\\xa3\\xf8\\x65\\xab\\x92\\xcb\\xf2\\x9c\\x38\\xa2\\x80\\xf3\\xbf\\x69\\xf6\\x8e\\x92\\xb5\\xf4\\x30\\xcd\\xee\\x35\\x01\\x98\\x1d\\x0b\\x3d\\x18\\x90\\x96\\xe0\\xae\\xac\\xd6\\x4c\\x33\\x10\\x24\\x21\\x34\\x88\\x12\\x15\\x8b\\xb6\\x1e\\x51\\xae\\x93\\x65\\x92\\xb2\\xf8\\xf1\\xb9\\x10\\x94\\x9e\\xf3\\x72\\x32\\x58\\xa9\\xb4\\x4e\\x4e\\x1b\\xda\\xdf\\x1a\\xe2\\xcf\\xc1\\x8e\\x37\\xd2\\xed\\x0d\\xd1\\x73\\x44\\x04\\xb8\\xba\\xa5\\xf3\\x93\\xcd\\x56\\x06\\x9e\\xce\\xbf\\x7e\\xdd\\x7c\\x06\\xcf\\x6c\\x8a\\xa3\\xe8\\xe1\\x2f\\xbf\\x94\\x6d\\x7b\\x32\\xd8\\x45\\x3b\\x6f\\xbb\\x65\\x35\\x52\\x6c\\x8f\\xb8\\xfc\\x1d\\x58\\x15\\x56\\x0b\\xb3\\x1b\\x99\\x5d\\xf2\\xad\\xbd\\x83\\x6a\\xdd\\x92\\x9a\\x56\\xfd\\xd9\\x3a\\x17\\x47\\xd9\\x3a\\x40\\xc0\\x5e\\x12\\x9e\\xb6\\xf8\\x58\\x3c\\x29\\x21\\xcc\\x9d\\xbd\\xda\\x42\\x25\\xe1\\x76\\xdb\\x38\\x6a\\x02\\xec\\x40\\xaf\\x10\\x32\\xc9\\xb6\\x2e\\x95\\x14\\x70\\x25\\xf4\\xac\\x8d\\xd5\\x84\\x33\\xb6\\x4a\\xc0\\x73\\x15\\x0c\\x69\\xb9\\xc4\\x15\\x4d\\xcb\\xb0\\x03\\x44\\xf3\\x08\\x11\\x3c\\xd9\\x19\\x9c\\xcf\\xb5\\x07\\x58\\x01\\xc7\\x05\\xb8\\xfc\\x43\\xb7\\xc8\\xbc\\x16\\x73\\x65\\xe4\\x62\\x93\\xd0\\x6c\\x4f\\x48\\x35\\xc6\\x4e\\xe5\\xd5\\x38\\x3f\\x68\\x90\\xca\\x35\\xa8\\x0a\\xf9\\x17\\x74\\x81\\x62\\xdf\\x25\\x18\\xab\\x14\\x68\\xf1\\x53\\x62\\x98\\x99\\x40\\x6c\\xde\\x66\\xce\\x07\\xfa\\x7d\\x29\\x93\\xda\\xbe\\x0c\\x60\\x08\\x9c\\x91\\x89\\x24\\x88\\xf3\\xbc\\xaa\\xec\\x40\\x8a\\x0c\\xd0\\x8c\\x9a\\xa9\\x8e\\x09\\x37\\xe0\\x2c\\x41\\xad\\x52\\xd2\\x41\\xa9\\x98\\x33\\xe3\\xb8\\x3f\\x7d\\x3f\\x1b\\x07\\x8c\\x31\\xd4\\x5c\\x34\\xfa\\x01\\x75\\xab\\xbd\\x0f\\x32\\x2b\\x8f\\xd2\\xdc\\x83\\x49\\x1d\\xa2\\x92\\xad\\x00\\x76\\x2e\\x3e\\x57\\x7b\\x9e\\xee\\x0a\\xae\\x08\\x72\\x90\\x70\\xac\\x25\\xe3\\x3b\\xc9\\x45\\x25\\xbc\\x0d\\x2a\\xb5\\x97\\x04\\xef\\xec\\x5c\\x01\\x48\\x42\\x1a\\x47\\x92\\x8d\\x34\\xb1\\xe4\\x5c\\xe7\\x21\\xee\\x64\\x47\\xfb\\x08\\x2a\\xc4\\x00\\xb3\\xe6\\x84\\x6d\\x20\\x4f\\x7f\\x9d\\xb6\\xf0\\xa3\\x2b\\x2a\\x69\\x73\\x8b\\x3e\\xe9\\xdd\\xbb\\x0d\\xbd\\x7e\\x0f\\x04\\x1d\\x7e\\xa5\\x3a\\x5d\\x64\\x7f\\xb5\\x0b\\x39\\xae\\x24\\xd7\\x8c\\x8b\\x07\\xcf\\xc4\\xe0\\x52\\x71\\x1f\\x0d\\x46\\x39\\xe7\\x21\\xd5\\xc3\\x6f\\x31\\xb5\\x88\\x86\\x67\\x12\\xb7\\x57\\x10\\x8a\\x40\\xcc\\x7a\\xbb\\xb9\\x91\\x30\\x83\\x30\\x3a\\xae\\x05\\xa0\\xf1\\xaf\\x0e\\xc6\\x87\\x84\\x41\\xa2\\x5c\\xf8\\x72\\x9a\\xba\\x42\\xa3\\xa9\\x4c\\xe9\\xb7\\x38\\x88\\xa0\\xf5\\xc9\\xe4\\x0c\\x9f\\xc4\\x54\\x10\\xf0\\x68\\x1f\\xa7\\xf9\\x08\\x98\\x56\\x2c\\xcb\\x4b\\xbc\\x55\\xf0\\xab\\x1f\\xe9\\xc7\\x0e\\xa6\\x60\\x26\\xdd\\xa8\\xd7\\x09\\x0f\\x7b\\x38\\xed\\xb5\\xae\\xc1\\x55\\x7b\\x11\\x66\\x98\\x7c\\xd4\\x1a\\x70\\x59\\xcd\\xee\\x60\\x9b\\x74\\xd8\\xfe\\x06\\xb7\\x05\\x9b\\x77\\x24\\xbf\\xf5\\x30\\x07\\xf7\\xe1\\x10\\x46\\x2f\\x06\\xad\\x14\\xd0\\x7e\\xe1\\xb4\\xd6\\x9a\\xc8\\x23\\xbc\\xf5\\x76\\xd2\\xfa\\x9e\\x2e\\x8e\\xd7\\xf3\\x19\\x80\\x40\\xd4\\x71\\x29\\x60\\x63\\x13\\x7c\\x98\\x1a\\xdb\\xf3\\x64\\xcb\\x20\\xf0\\xa1\\xad\\x20\\x54\\x47\\x2f\\x7c\\xee\\x25\\x27\\xf9\\x98\\x09\\x61\\x5d\\x2e\\x4b\\x73\\x4b\\x06\\xf3\\x5d\\xee\\xcb\\xd6\\x26\\x19\\x66\\x3d\\xde\\x81\\xd6\\xe2\\x35\\x28\\xb0\\xc9\\x71\\x32\\xaf\\x0a\\x23\\xba\\xd6\\x3d\\x9c\\x08\\x14\\x2a\\x26\\xe2\\x74\\x3f\\x86\\x18\\xec\\xfe\\x72\\x3b\\x19\\xff\\xdd\\x0b\\x19\\xab\\xd9\\xa3\\xf4\\xfe\\x21\\x0b\\x1e\\x71\\xac\\xdf\\xe3\\x8a\\xbe\\xbe\\x23\\xf7\\xfd\\xef\\x66\\x38\\x1c\\xbc\\x75\\xf3\\x07\\xe5\\x57\\x72\\x35\\xb0\\x2e\\x4c\\xd9\\xcf\\xaa\\x15\\x03\\x08\\x68\\xed\\x14\\x53\\xda\\x58\\xf7\\x83\\xb7\\x35\\x2b\\x04\\x65\\x68\\x44\\xc0\\x42\\x44\\x1e\\xfe\\x6a\\x3b\\x4f\\x8f\\xec\\x8f\\x7d\\xe8\\x07\\x44\\x54\\x0c\\x4f\\xc7\\xa1\\x07\\xf4\\xe1\\xbf\\xcb\\xd9\\x9d\\xa2\\x5b\\x97\\x46\\x09\\x5d\\xdf\\x01\\x25\\xd5\\x6d\\xa7\\xe7\\xf8\\x60\\x3f\\x04\\xd3\\x59\\xa0\\x88\\xb4\\xc0\\x44\\xf9\\x36\\xcc\\xb7\\xd8\\xf8\\x9e\\xd5\\x3c\\xc9\\x91\\xa3\\x49\\x7c\\xa9\\x52\\x09\\x4f\\xf3\\xc3\\x30\\x46\\xf2\\x60\\x9d\\x07\\xb2\\x9b\\x63\\x39\\x81\\x36\\x9c\\xb2\\xf0\\xee\\xcd\"},\n{{0x2e,0x19,0xcd,0x44,0x2f,0x22,0xa4,0xa9,0x9d,0xff,0xc5,0x5e,0x7b,0xf6,0x25,0xf8,0x9d,0x13,0x44,0xb5,0x63,0xf6,0x78,0x53,0x13,0xa7,0xee,0xe9,0x73,0xb4,0xaa,0x36,},{0xee,0x3d,0xa7,0x6a,0x8f,0xcf,0x40,0x3a,0x29,0x58,0xd4,0x55,0x1d,0xa0,0xa7,0x2b,0x2e,0x73,0x85,0x22,0xb2,0xe6,0xb2,0x0f,0xba,0x6a,0xa2,0x6b,0x32,0x30,0x73,0x57,},{0x28,0x32,0x6b,0x5b,0x97,0x8e,0x0d,0xbd,0xab,0x5d,0xde,0x70,0x37,0x85,0xa6,0x67,0xa7,0xef,0x43,0x9d,0x81,0xea,0x47,0xe0,0x66,0xb0,0x89,0xd1,0x16,0xc2,0x5a,0x34,0xbb,0x63,0x3f,0x26,0x0d,0x55,0xf4,0x5b,0xdf,0x6b,0xcd,0xa7,0x48,0x03,0xd7,0x62,0x4b,0x19,0x27,0xce,0xc1,0x8e,0xb1,0x99,0x22,0x60,0xbe,0xef,0xc3,0x99,0xd9,0x0e,},\"\\x1b\\xfc\\x5c\\x6a\\xa6\\xa5\\x35\\x4f\\xbb\\x86\\x14\\x69\\x79\\x63\\x48\\xac\\x63\\x19\\x12\\x4d\\xa3\\xf1\\x0d\\x20\\xd5\\x0b\\xbd\\xc7\\x15\\x9d\\x41\\xb5\\xab\\xb1\\x36\\xc7\\x99\\x6a\\x77\\x37\\x97\\x12\\x2b\\x52\\x5e\\x8e\\x2d\\xca\\x19\\x54\\xf6\\x39\\x17\\x07\\x30\\x1d\\x90\\xf2\\x10\\x1b\\x46\\xc7\\xb0\\x86\\xef\\xa1\\x58\\x77\\xca\\xdc\\xd0\\x58\\x12\\xdb\\x34\\xb9\\x96\\xcb\\x4f\\x53\\x1a\\xbc\\xd1\\xe9\\x8d\\xb0\\x8a\\x5c\\xf1\\x36\\x8e\\x8f\\x4b\\x11\\x09\\x14\\x2e\\x95\\x62\\xbd\\x00\\x85\\xff\\xae\\x5e\\x66\\x0f\\x59\\xc9\\x30\\x79\\x3e\\xbd\\xb6\\xe8\\x0b\\x0a\\x2f\\x4f\\x3f\\x59\\xbf\\x9d\\x39\\x5c\\x48\\xd2\\x6e\\x0a\\x72\\xa6\\x0f\\x9d\\x1f\\xf8\\x7f\\xd2\\xd7\\xa3\\xf5\\x38\\x3a\\xa9\\x02\\xad\\xed\\xed\\xeb\\xc6\\xcd\\x1b\\xef\\xd0\\x38\\x33\\x61\\x62\\x74\\x9d\\x91\\xa9\\x57\\xca\\x2e\\x3d\\xd4\\x70\\x91\\xc5\\x59\\x31\\x13\\xda\\x87\\xc3\\xd6\\x6a\\x02\\xc8\\x0a\\x6e\\xdd\\xb5\\x35\\xc4\\x8c\\xa1\\xf3\\x4a\\x97\\xfd\\x1c\\x95\\xeb\\xc2\\xe5\\x70\\xfc\\x8f\\xaf\\xe6\\xe5\\xd6\\x54\\x6d\\x1f\\x3a\\x9b\\xa8\\xda\\xac\\x33\\x4c\\xf4\\x7b\\xf1\\x17\\xe1\\x28\\x0d\\x0e\\xbd\\xf1\\x4b\\x0f\\xcd\\xbb\\x43\\xb8\\xd2\\x48\\xcc\\x6b\\x61\\x32\\x0f\\xdb\\x04\\x49\\xed\\x5f\\x5d\\xe8\\xba\\xb1\\x21\\xaf\\x0d\\x85\\x54\\x95\\x6e\\x6a\\x12\\x01\\x6b\\x42\\x67\\x7b\\x44\\x36\\x78\\x92\\xc3\\xb2\\x0a\\xfc\\xc2\\xcb\\x9c\\xfb\\x5b\\x10\\x0a\\x95\\xb5\\x1e\\x8b\\x07\\xda\\x9f\\x51\\x41\\x5f\\x4c\\xd7\\x78\\x1a\\x31\\x37\\x65\\xe2\\x0d\\xb2\\x7f\\x23\\x43\\xe0\\xf7\\x19\\xec\\xea\\x9a\\xf0\\x26\\x95\\x6f\\x33\\x87\\xe9\\xea\\x7e\\xd0\\xa2\\x93\\x75\\x9b\\x4a\\x26\\x22\\x02\\x80\\x7b\\x41\\x30\\x9f\\xb8\\x0f\\x50\\x18\\x5d\\xb6\\xa5\\xf8\\xbd\\xca\\x17\\x88\\x41\\xbe\\xc0\\x6a\\xdd\\xc7\\x61\\x0d\\xf7\\x60\\x17\\xb5\\x14\\xbc\\x41\\x42\\xf2\\x6a\\x36\\xbf\\x5b\\xac\\xec\\xb0\\x12\\xfa\\x41\\x71\\x0d\\xd8\\x49\\xbe\\xf7\\xa7\\xe4\\x51\\x43\\x28\\x36\\xfe\\x9b\\x32\\x65\\xfd\\x5b\\x59\\xee\\x40\\xb0\\x4d\\xad\\x85\\xcf\\x48\\xf8\\x91\\x46\\x5a\\x84\\x2c\\xd4\\x50\\x0a\\x10\\x24\\xee\\xfd\\xf0\\xf5\\x54\\xf0\\xca\\x17\\xec\\x9f\\x7b\\x71\\x52\\x56\\xa9\\xb9\\xdb\\xe2\\x79\\x66\\x38\\x6d\\x8a\\xc3\\x7d\\x3c\\x51\\x58\\x96\\xde\\x0f\\x7c\\xdf\\x7c\\xf5\\xb3\\x20\\xff\\x7a\\x8e\\xf6\\xb3\\x4b\\xa8\\x20\\xab\\xa9\\x06\\x6d\\xd2\\x53\\xc5\\xb7\\x76\\x37\\x77\\xf9\\x4b\\x2d\\x6a\\xd8\\xc7\\x10\\x22\\x1e\\x11\\x37\\x53\\x5d\\xff\\x8a\\x1b\\x75\\x65\\xec\\x81\\xbd\\x8d\\xde\\xb5\\x02\\xe3\\xd5\\x8f\\xf8\\xf1\\xfe\\x6e\\x86\\xb8\\xdc\\x15\\xa3\\xaa\\xec\\x68\\x8b\\xbb\\xec\\xd4\\x68\\x82\\x81\\xdb\\x0f\\x81\\x8d\\xe0\\xf7\\x26\\x1b\\xa9\\xcc\\x58\\xc8\\xbc\\x0d\\x02\\xe0\\x66\\x32\\xef\\xe7\\x28\\x7a\\xd7\\xa8\\x43\\x31\\xa8\\x24\\xd9\\x28\\x73\\x44\\xef\\xaa\\xa7\\x4f\\x1f\\xc5\\x76\\xd0\\x26\\x94\\x30\\xf8\\x56\\xa8\\x56\\x52\\x65\\xb9\\xd6\\xef\\x71\\xfe\\x13\\x4d\\x25\\x10\\xab\\x06\\xb6\\x0b\\xf3\\xc1\\x53\\xb5\\x7e\\xcf\\xd2\\xe6\\x34\\x24\\x03\\xfe\\x67\\x8b\\x58\\x86\\xb6\\xb7\\x34\\xb7\\xd3\\x69\\x06\\x62\\xb6\\xc8\\xc6\\xf6\\xe2\\x50\\xe5\\xaf\\x6a\\x81\\x83\\x16\\x6d\\xdc\\xd0\\xa1\\x7f\\x0c\\xdd\\xc8\\x63\\x6e\\xf1\\xa6\\x84\\x98\\xbe\\x50\\xb6\\x59\\x95\\x39\\xd4\\x6b\\x4c\\xea\\x97\\x13\\x0e\\x08\\xf9\\x4c\\xa5\\x3e\\x88\\x46\\x44\\xed\\xa7\\x5d\\x23\\xcd\\x2c\\x03\\x8a\\x5f\\x17\\xb5\\x91\\xe2\\x13\\x69\\x37\\x8c\\xd3\\xfb\\x57\\x62\\xd1\\xa7\\xc3\\xe6\\x6a\\x11\\xae\\x6e\\x91\\xcb\\xae\\x61\\x6a\\xd0\\x55\\xe3\\x9d\\xc4\\x1e\\x15\\x4f\\x4f\\xce\\xd7\\xb2\\x69\\x6d\\x9d\\xc6\\x73\\x80\\xbb\\x8e\\xef\\x47\\x4e\\x9a\\xa8\\x3c\\xec\\x47\\xfa\\xfa\\xfb\\x94\\x1d\\x62\\x65\\x64\\xb2\\x07\\x5b\\xcc\\x08\\x56\\xda\\x8d\\x6e\\x1b\\x0b\\x8f\\x18\\xba\\xf7\\x51\\x3b\\xbd\\x14\\xe4\\x91\\xed\\x51\\x79\\x68\\xc4\\xf7\\x24\\x1a\\xf2\\x50\\x98\\xee\\x8d\\xf1\\x30\\xb7\\xa3\\x4d\\x59\\x73\\x6d\\x78\\x36\\xd3\\x23\\xfe\\x3f\\x43\\xf5\\x08\\xcd\\xcb\\x75\\x58\\x95\\xf5\\x9a\\x00\\xc8\\x04\\xed\\x16\\x4c\\xc3\\x39\\x92\\xf3\\xae\\xe9\\x62\\xae\\x9e\\x99\\x0b\\x74\\x27\\x2e\\xb9\\x87\\xb1\\x2d\\x90\\xb2\\x73\\x14\\xd5\\x74\\x00\\xe7\\x37\\xd1\\x34\\x3e\\x97\\x09\\x85\\xc4\\x27\\x10\\x60\\x87\\x6a\\xbc\\xd7\\x04\\x9e\\x7c\\x9f\\xe2\\x44\\xff\\x3e\\xf9\\x85\\x60\\x99\\x5b\\x74\\x82\\xd3\\x1b\\xc7\\xc0\\x9d\\x99\\x69\\xf7\\xcd\\x41\\xf4\\xe4\\xe2\\x52\\x75\\x0d\\xc1\\x6c\\xcd\\xb2\\x9b\\x98\\x53\\x14\\xa0\\xb6\\xe7\\x49\\xc9\\x5f\\x9b\\xd2\\x83\\x8d\\x5a\\xc4\\x9e\\xe0\\x31\\xfd\\x07\\x9b\\xec\\x30\\x28\\xdd\\x9d\\xd0\\x7d\\xb6\\xfa\\x62\\x2a\\xd6\\x21\\xb3\\xb1\\xe1\\x27\\xe8\\xfc\\xa3\\x7b\\xd1\\x46\\xe3\\xcf\\x70\\x3e\\x91\\x17\\x01\\xb7\\xa1\\x6c\\x2d\\x30\\x36\\x9c\\x94\\x64\\x8e\\xcc\\x03\\xdf\\x10\\xd7\\xdd\\x5c\\x05\\x58\\xfa\\x95\\x93\\x42\\x5d\\x94\\x87\\x27\\xd6\\x86\\x0c\\x3a\\x14\\xf8\\x11\\x24\\x51\\x06\\x61\\x6d\\x2a\\x5f\\xa9\\x81\\xc6\\xb7\\xf4\\x7e\\xc9\\xde\\xf6\\x54\\x12\\xd1\\x32\\xac\\xc6\\x91\\x9d\\xa4\\xe8\\x85\\x97\\xaa\\x91\\x90\\xca\\x61\\x4b\\x21\\x80\\x66\\xa0\\xf7\\xb1\\x69\\x97\\xee\\x74\\x7c\\x5a\\x09\\x78\\x5e\\x50\\xd0\\xa8\\x91\\xd9\\x59\\x37\\x86\\x3d\\x61\\x3c\\xef\\xf7\"},\n{{0x82,0x10,0x90,0x99,0xd1,0xea,0xfe,0xed,0x5a,0x85,0x20,0x60,0x46,0x49,0x1b,0x34,0xd0,0x6d,0xcd,0xe3,0x3f,0x08,0x09,0x60,0x28,0x7b,0x10,0xfb,0x23,0xff,0x9f,0x78,},{0x08,0x1c,0xfd,0xf2,0xd7,0x58,0x65,0x4c,0x41,0xc4,0x47,0xe1,0xe6,0x27,0x38,0x10,0xf8,0xa7,0x38,0xa7,0x33,0xaf,0xc4,0x22,0x94,0xa2,0xb1,0xbb,0xb7,0x69,0xef,0xce,},{0xb3,0x98,0x7f,0x32,0x4b,0xc7,0xe7,0x76,0xc0,0xf2,0x87,0xfa,0x13,0xad,0x28,0x74,0x16,0x95,0xe2,0xe7,0xbc,0xe8,0xd1,0x43,0xe2,0x9f,0xad,0x5d,0x00,0x99,0x47,0x58,0xe2,0x25,0xfb,0x80,0x21,0x00,0xd2,0x3f,0xd6,0xcc,0xaf,0xee,0x8e,0x0a,0x95,0xbc,0x47,0x9b,0xe8,0xc2,0x3a,0x11,0x31,0x97,0x45,0x76,0x5b,0x7c,0xd4,0x7e,0x70,0x06,},\"\\x84\\xf4\\x7d\\xd7\\x94\\x97\\x7a\\x6c\\x15\\x05\\xac\\x8c\\x05\\x68\\x0c\\x56\\x15\\xa2\\xd5\\xb0\\x57\\xe3\\x9b\\x04\\xf8\\x5e\\x3f\\x9f\\xf0\\x49\\x60\\xe0\\xe0\\x16\\x68\\x5a\\x86\\xee\\xbc\\xec\\xf6\\xfb\\xce\\x5f\\xdd\\xcd\\xac\\x1a\\x47\\x4c\\x8a\\x0d\\x50\\x2c\\x40\\xe1\\x0f\\x94\\x86\\x46\\xfd\\xac\\x6c\\x81\\xf1\\xff\\xbb\\x17\\x7a\\x2a\\x49\\x63\\xb6\\x78\\x25\\x90\\x3c\\xde\\x65\\xb5\\xdb\\xe0\\xd8\\x94\\x1d\\x54\\x6c\\xff\\xa2\\xbf\\x8a\\x8c\\xa8\\xd6\\xc6\\x40\\x85\\x30\\xa6\\x29\\x0f\\x5d\\x08\\x82\\xf1\\xa1\\x67\\x2d\\xbf\\x97\\x8e\\x10\\xc5\\xc8\\xaf\\x5e\\x0a\\x62\\x39\\xf0\\x65\\x5e\\xe7\\xfd\\x9e\\x66\\x96\\x30\\x77\\xa0\\xe8\\x47\\x13\\x73\\x97\\xd1\\xf0\\x69\\x99\\xdc\\x6f\\x8a\\x94\\x5c\\x60\\x03\\xea\\x4e\\xa7\\xfd\\x58\\x37\\x8a\\xcb\\x44\\xed\\x57\\x80\\xea\\xa3\\x67\\x79\\x6b\\xee\\xa3\\x7d\\xdc\\x23\\x69\\x99\\xd0\\x12\\xd6\\xa7\\x16\\xd7\\x91\\x56\\x49\\xcc\\x28\\xe5\\x88\\x75\\x64\\x7e\\x9f\\x5a\\xc0\\x55\\x3c\\x0f\\x54\\x4d\\xf5\\x64\\x69\\xc6\\x70\\x81\\xd5\\xe3\\x03\\x95\\xf3\\xe9\\x60\\xe6\\xa5\\x2f\\x08\\x33\\x19\\x2c\\x54\\x8c\\xd5\\x7c\\x92\\x6b\\x82\\xdb\\x48\\xc3\\x61\\xbd\\xe7\\x03\\x33\\xa3\\x70\\x08\\x3e\\xaa\\xa0\\x68\\xdc\\x2a\\xe4\\x52\\xd2\\x1e\\xf1\\x33\\x1a\\xed\\x19\\x0b\\xd3\\xe1\\x28\\x9a\\x10\\x4c\\xf6\\x67\\x83\\x43\\x77\\xcf\\x7b\\x5a\\x29\\x77\\x48\\x07\\xc3\\xf1\\xea\\x9e\\x7b\\x28\\x83\\x1d\\x0f\\x6c\\x42\\x94\\x78\\x58\\x67\\xb1\\x37\\xb6\\x50\\x28\\xc1\\x4f\\x93\\x2a\\x1b\\xa8\\xe6\\xf9\\xf5\\x96\\x24\\xfe\\x0c\\x39\\x68\\x43\\xea\\x19\\xe4\\x6f\\xba\\x09\\x14\\x2c\\xf9\\xd4\\x24\\x97\\x31\\x2f\\x36\\x02\\x44\\x03\\x2f\\x1e\\x00\\xf3\\x8d\\xd0\\xde\\x29\\xf9\\x63\\xb5\\xcc\\xc1\\xef\\x12\\xb2\\xcc\\x62\\x04\\xb9\\x94\\xaf\\x1f\\x3b\\xaf\\x19\\x6d\\x9e\\x21\\xe8\\xfa\\x4f\\x09\\x73\\x20\\xc6\\x44\\x04\\xd0\\xb7\\xd5\\xab\\x38\\x56\\x0c\\xa0\\x65\\x53\\x64\\xb0\\xb0\\x9c\\xd6\\xdc\\x0f\\x0e\\x05\\xb8\\xc9\\x11\\x03\\x64\\xf1\\x42\\x4a\\x96\\x72\\xb7\\xef\\xdf\\x7e\\x1f\\x37\\x8e\\x23\\x45\\x50\\x56\\x6d\\xbe\\x13\\xb0\\x15\\x78\\xb0\\x41\\x53\\xe9\\xc3\\x7b\\x55\\x3e\\x32\\xa4\\x44\\x1b\\xc9\\x7e\\x29\\x53\\xbe\\xc2\\xe4\\x14\\x55\\x51\\x0f\\x98\\x02\\xef\\x94\\x8d\\xcb\\xf1\\x3f\\xad\\xdd\\x72\\x2e\\xde\\x57\\x36\\x27\\xb2\\x58\\xd5\\x5e\\x83\\xc0\\x89\\x5b\\x22\\x91\\x9e\\x4b\\xe5\\xce\\x8d\\x81\\x9c\\xe6\\xad\\x84\\x3b\\x2d\\xd0\\x9d\\xf6\\x40\\x04\\xc8\\x26\\xc1\\xdd\\xe7\\xce\\x64\\x80\\xa2\\x71\\xa8\\x58\\xa1\\xdb\\x16\\x9e\\x14\\x94\\xd4\\x46\\x90\\x32\\xbc\\xc1\\xcc\\xd8\\x96\\x53\\x19\\x8b\\x7c\\x07\\x3f\\x76\\xa2\\x6a\\x29\\x99\\xb5\\x64\\x8c\\xba\\xdc\\x15\\x74\\xc7\\x8e\\xad\\x8e\\xec\\xe8\\x3b\\x91\\xe1\\x29\\xc4\\x37\\xf9\\xee\\xec\\x04\\xc8\\x07\\x45\\x90\\x02\\xe6\\x6d\\xcc\\xa9\\xbf\\xc2\\xca\\xed\\x9e\\x6c\\x0b\\xa2\\x3d\\x23\\x55\\xde\\xf7\\x56\\x65\\x74\\x94\\x30\\xee\\x92\\xc5\\x32\\xa6\\x95\\x47\\x9f\\xec\\x92\\x91\\x74\\xf4\\x40\\xec\\xb6\\x1a\\x5a\\xe8\\xb2\\xb7\\xe9\\x58\\x92\\x05\\x58\\x26\\x89\\x78\\xf7\\xfb\\x4d\\xa1\\xb3\\x8b\\x12\\x01\\x4f\\x5d\\x61\\xb0\\xfd\\xd7\\xf6\\x13\\x6b\\xa4\\x28\\x1b\\x41\\xa3\\xa3\\xcd\\x18\\x80\\x52\\xb6\\x98\\x76\\x5b\\x6f\\x05\\xe4\\x1e\\x78\\x37\\x3e\\xa8\\x30\\x46\\x97\\x87\\xa3\\x75\\x10\\x99\\x3d\\x12\\xf9\\x3e\\x96\\xc7\\x2d\\x72\\xf4\\x46\\x19\\x84\\xf6\\x91\\xa4\\x1c\\x7d\\x33\\x97\\xdd\\xd5\\xa1\\xb3\\x92\\x37\\xd1\\x30\\x88\\x64\\xd4\\x15\\xfc\\x6c\\x22\\xb6\\x3f\\x37\\x6c\\xed\\xde\\x37\\xf5\\x25\\x2b\\x51\\xec\\x72\\xe5\\x15\\x5f\\x3b\\xdb\\x4f\\xcd\\x54\\x12\\x49\\x8b\\xd2\\xe0\\xc1\\xf9\\x85\\x0b\\x3a\\x85\\xd1\\xdf\\xd2\\x51\\x67\\xa3\\xcd\\x77\\x1e\\x8e\\x4c\\x9d\\x86\\x8c\\x95\\xa7\\x17\\x5e\\x37\\x75\\xf6\\xce\\xf1\\x7e\\x4e\\x36\\x49\\x7c\\xe9\\xe4\\x55\\x32\\xbd\\x7f\\x44\\xb2\\x77\\x6e\\x40\\xf9\\x1a\\x07\\xca\\x4f\\xa1\\xb9\\x5d\\xbe\\x81\\xcf\\x8f\\x49\\xe4\\x6b\\x6c\\x82\\xa6\\xee\\x43\\x47\\x91\\x8a\\x76\\x43\\xb0\\xd9\\xa3\\x88\\x57\\x21\\x2c\\x69\\x3e\\xad\\xac\\xfd\\x37\\xa5\\xf1\\xd9\\x15\\x58\\xf5\\x45\\x4d\\xcd\\xd0\\x59\\x35\\xf2\\x90\\xe6\\x2d\\x7e\\x65\\x00\\x6c\\xd5\\x49\\xf6\\x55\\x3c\\xe7\\x41\\xdf\\x44\\xd3\\x96\\x44\\x00\\x1e\\xb4\\x79\\xca\\x69\\x56\\x8a\\xd1\\xf2\\x3b\\xba\\x09\\x9a\\x41\\xa4\\x72\\x94\\xdb\\x93\\x87\\x31\\xc5\\x30\\xaf\\x1c\\xeb\\x92\\x17\\xd2\\x9b\\xc2\\x70\\x56\\x13\\xc1\\xa1\\xfe\\x9c\\x20\\x8d\\x0b\\x01\\xba\\x6f\\x4d\\x9b\\x4c\\x7b\\xa8\\xf0\\x21\\xdf\\x91\\xea\\x2d\\x57\\x8c\\xe0\\x83\\x12\\x3e\\x83\\xba\\x4b\\x9c\\x50\\x40\\x7f\\x66\\x66\\xfb\\xe6\\x11\\x58\\xb0\\xd1\\xb9\\x57\\x77\\x72\\xe3\\xea\\xff\\x8f\\xb4\\x29\\xd0\\xf6\\xd2\\xe3\\x84\\x12\\x61\\x30\\xf2\\x1b\\x44\\x9f\\xb1\\xdc\\x17\\x0d\\xb4\\x5a\\xf5\\x05\\xbd\\x31\\x82\\x67\\x8a\\x9b\\x5f\\x9f\\xdf\\xf6\\x5f\\x04\\x13\\xb6\\x72\\xc4\\x78\\x63\\x40\\xfc\\xf2\\x52\\x2e\\xa7\\xf3\\xd8\\xad\\xe8\\xa0\\x59\\x52\\x96\\x49\\xdb\\xda\\x9c\\xe5\\x1f\\xf0\\x5a\\x2a\\x2a\\x3d\\x66\\xd2\\x16\\x6b\\xf2\\xc9\\xc6\\x77\\x2b\\xa0\\xef\\x41\\x05\\xe6\\x8c\\x05\\x5e\\x02\\x13\\xd4\\x2c\\x1e\\xe1\\x23\\xb3\\xc1\\x21\\x78\\x43\\xe6\\xec\\x57\\x5d\\x75\\x4d\\xf3\\xc9\\x0a\\x75\"},\n{{0x65,0xfc,0xbd,0x62,0x6d,0x00,0x21,0x11,0x33,0x4b,0xaa,0xd4,0xe6,0xa8,0x00,0x6e,0x47,0xa1,0xf9,0x13,0x97,0xbe,0xe6,0xdd,0x6c,0xd7,0xda,0x5a,0x0e,0x02,0x48,0xa4,},{0x20,0x40,0x9a,0x14,0x6b,0x42,0xc9,0x6b,0xea,0xb0,0xb4,0x2e,0xa7,0xf2,0xc2,0x51,0x93,0x11,0x9d,0x0d,0xf4,0x4d,0xc2,0xbf,0x14,0xd1,0x1a,0x32,0xfd,0x73,0x36,0x15,},{0xbc,0x78,0xe1,0x6b,0xa6,0x74,0xe0,0xa7,0xdb,0xa5,0x7a,0x19,0x09,0x4f,0x97,0x33,0xc5,0x5d,0x74,0xb9,0xd1,0x5f,0x8a,0x44,0xd1,0xbb,0xc0,0xa0,0x23,0xf7,0x01,0x55,0xde,0x29,0x77,0x11,0x1a,0x41,0x7e,0xef,0xa8,0xcb,0x30,0xec,0x12,0xab,0xc8,0x38,0x42,0x28,0x16,0x7c,0x70,0x98,0x2a,0x82,0x06,0xb1,0xff,0xb7,0x21,0x74,0xaf,0x01,},\"\\xe4\\xc0\\x94\\x7f\\xc8\\xca\\x78\\xfa\\x88\\x63\\xf4\\xd0\\x44\\x49\\x9d\\x03\\x6e\\x2e\\x7e\\xf8\\xc1\\x7e\\x83\\x8f\\x2f\\xac\\x02\\x67\\x5b\\x7b\\x53\\x81\\xe5\\xf9\\xab\\xce\\xaf\\xd0\\xd8\\x88\\x6a\\x92\\x9d\\x9d\\x9b\\x49\\xfc\\xb7\\x38\\x61\\xb2\\x9d\\x15\\x18\\xac\\x5f\\x83\\xf7\\xf8\\xfc\\x26\\xbd\\x1c\\xeb\\xc2\\x2d\\x87\\x3a\\x9a\\x08\\x23\\x14\\x06\\xfb\\x03\\x2e\\x48\\x66\\xe5\\xf5\\x5c\\x7c\\x04\\x41\\xc5\\x19\\x04\\x1b\\xb2\\xcc\\x73\\xf9\\x22\\x6d\\xd5\\xd0\\x7e\\xce\\xb6\\x60\\xd6\\xc9\\x67\\xdb\\x23\\x36\\x55\\x74\\xbe\\xe8\\xfc\\x10\\x22\\x29\\x28\\x76\\x77\\x13\\x57\\x1a\\x71\\xc9\\x3a\\x85\\x27\\x8d\\x42\\x29\\x9a\\x70\\x59\\x9c\\xa9\\x93\\x26\\xcc\\x86\\xf6\\xd9\\x8d\\xaa\\xc0\\x00\\xfd\\xfa\\x71\\x05\\x62\\xf4\\x81\\xfa\\xa0\\x20\\xc7\\x2a\\x76\\xe2\\x06\\x7d\\x15\\x4c\\x23\\x5a\\x7a\\x4f\\x29\\x70\\x8c\\xc5\\x44\\x53\\x3b\\xd7\\x99\\xed\\x63\\x63\\xeb\\x3b\\x56\\xaa\\x4a\\x6d\\x0e\\x37\\x9b\\xbf\\x07\\x60\\x05\\x95\\xc2\\x3a\\xb1\\xf3\\xf9\\xf1\\x70\\x8e\\x00\\x70\\x26\\x1b\\xbb\\xf4\\xbf\\xea\\xf6\\xd6\\xce\\xd4\\xd7\\xff\\x72\\x2c\\x9c\\xc5\\x2d\\x91\\x33\\xea\\x68\\xd4\\x95\\xdc\\x94\\x89\\xc3\\xed\\xf6\\x83\\x02\\x31\\x35\\x1f\\x65\\xcb\\x52\\x72\\xf5\\x39\\x6e\\x2c\\x4a\\x1a\\x5c\\x88\\x66\\x1a\\x10\\x18\\x92\\x24\\x9e\\x23\\xd6\\xce\\x9f\\xdb\\x6a\\x9a\\xbf\\x74\\x27\\x2c\\x2f\\x59\\xc3\\xd8\\xfd\\x87\\x43\\xcc\\xe4\\x61\\x12\\x6c\\xa0\\xa8\\xb8\\x32\\xb4\\xb2\\x18\\x33\\x6b\\x1a\\xe1\\x4d\\xa6\\x77\\xba\\x7f\\x1b\\x2c\\xc5\\xca\\x3c\\x71\\x58\\xf7\\x27\\xa9\\xe1\\xb8\\xfd\\xd9\\xed\\xf5\\xc2\\x18\\x7f\\xcb\\x83\\xdb\\x86\\x2a\\xd0\\xc6\\xb3\\x92\\x16\\xde\\x31\\x16\\x91\\x95\\x56\\x46\\x51\\x00\\xad\\xe0\\xa4\\x2b\\xd6\\xba\\x10\\xd9\\x54\\x18\\xb6\\x9a\\x3e\\x00\\x5e\\x9f\\x10\\x45\\x89\\xea\\x59\\x48\\xb2\\xb5\\x1b\\xc7\\xb1\\xa9\\xa0\\x74\\x9d\\xa8\\xf0\\x13\\x78\\x1b\\xc0\\x5c\\x80\\x5b\\xb5\\x1e\\x18\\x77\\x61\\xac\\x24\\xc7\\x64\\x14\\xf6\\x68\\xeb\\x45\\xfb\\x0a\\x50\\x24\\xdf\\xe5\\xa5\\xca\\x06\\xf0\\x40\\x3a\\x02\\xe3\\xb2\\xfe\\xf7\\xa2\\xc4\\xbc\\xfb\\x1d\\x07\\x5d\\x31\\x0d\\x51\\x97\\xe6\\x59\\xcd\\x14\\x02\\x3f\\xae\\xc2\\x0e\\x04\\x5c\\xab\\xcb\\x86\\xb2\\x21\\xa1\\xd4\\x82\\x71\\x13\\xff\\x32\\x67\\xa6\\x4d\\xeb\\xe9\\x93\\x90\\x04\\xca\\xba\\xc8\\x5e\\x5c\\x74\\x61\\xe7\\xe8\\x2a\\x97\\x5a\\xcf\\xae\\x0b\\x6c\\x51\\x6a\\x1c\\x60\\x53\\x74\\xcf\\xea\\x7d\\x81\\x90\\x44\\xef\\xd6\\xd7\\x46\\x54\\x42\\x4f\\xd5\\xc9\\x0f\\xf2\\x57\\x4f\\xcd\\x8e\\x00\\x77\\x40\\xd9\\x75\\x86\\x1d\\x0d\\xf5\\x25\\x9f\\xe4\\x3e\\x43\\x63\\x9e\\x36\\xe5\\x28\\x95\\x43\\x9b\\xa2\\xc2\\x7c\\x1e\\x88\\x9c\\x93\\x09\\x41\\x04\\xfe\\x91\\x49\\x21\\xbd\\x6f\\x25\\xd3\\x98\\x5a\\xb1\\xf2\\x2c\\xa5\\x57\\xb0\\xe4\\x9a\\xfc\\x73\\x75\\x24\\x3c\\x52\\x1c\\x6d\\x5f\\xaf\\xe0\\x38\\x1c\\xce\\xa8\\x28\\xe8\\x8e\\x64\\x7f\\xd9\\x09\\x76\\xb3\\xfb\\xec\\x19\\xfe\\x9a\\xdb\\x11\\x3c\\x64\\x04\\xbd\\x35\\x2b\\xfc\\x00\\x04\\x46\\xd2\\x10\\x05\\xb5\\xf9\\x50\\xae\\x07\\xe5\\x1c\\x76\\x8c\\xa3\\xff\\x61\\x77\\xb2\\xea\\xc5\\x0f\\x10\\xdd\\x2e\\x64\\x61\\x0f\\xa8\\xab\\x57\\x88\\xfa\\xee\\xe2\\x9d\\x12\\x90\\x09\\xd7\\xfe\\x46\\xaa\\x3d\\xa6\\xb9\\xd8\\x6c\\x73\\x06\\x5e\\xb5\\x16\\x1f\\xbd\\xbd\\xfa\\xc5\\x77\\x7c\\x4e\\x75\\x45\\x2e\\x6e\\x16\\xae\\x9f\\xd6\\x6b\\xb7\\xd9\\xaa\\xa4\\x26\\xbc\\xb7\\xa6\\x91\\x5f\\x0f\\xf4\\x4a\\x1f\\x8e\\xc7\\x13\\x94\\xe9\\x35\\x2f\\xdf\\x20\\xe0\\x2f\\xaf\\xe1\\xe0\\xce\\xfe\\x50\\x74\\x4c\\x31\\x94\\x95\\x6f\\x92\\x8f\\x82\\x53\\x37\\x55\\x37\\x38\\x38\\xdc\\xc1\\x29\\x6a\\x89\\x1a\\xdf\\x64\\x1c\\x73\\x82\\xd6\\x9b\\x4f\\x5a\\x43\\xd4\\xaf\\x77\\x72\\xa4\\xa1\\xee\\x87\\x92\\x92\\xd7\\xa4\\xf3\\x2a\\xc3\\x5e\\xe1\\x21\\xc6\\xc3\\x4c\\xa5\\xf9\\x84\\x87\\xa9\\x41\\xfc\\xb1\\xe6\\x5b\\x44\\xd4\\x45\\x61\\x27\\xee\\xdb\\x2f\\xcc\\x1c\\x3f\\x48\\xef\\xf9\\x30\\x09\\x81\\xe5\\x2a\\xc3\\x8b\\x49\\x6a\\xb8\\xbb\\xce\\x14\\x4a\\x85\\xeb\\x9c\\x07\\x63\\x8b\\x31\\xfd\\xaa\\x78\\x17\\x44\\xbc\\xe1\\x7e\\x8d\\x93\\xdc\\xdc\\x60\\xaf\\xed\\xa4\\x88\\x80\\x76\\x17\\xf8\\x8d\\x6a\\xa5\\x44\\x22\\xfd\\x34\\x7d\\xda\\xdd\\xef\\xf3\\x7a\\x56\\x3d\\xbf\\x19\\x97\\x4b\\x2a\\x23\\xbe\\x30\\x0f\\xbf\\xa6\\xc7\\xfc\\x41\\xf8\\x4c\\x69\\x05\\x41\\x52\\x69\\xf1\\x95\\x99\\x0b\\x5b\\x4d\\xe1\\x26\\x68\\xc7\\x1c\\x87\\xb5\\x04\\xf4\\x11\\x24\\xbf\\x94\\x43\\x6f\\x33\\x30\\x45\\x63\\x15\\x18\\x15\\x2c\\x51\\x62\\xa2\\x47\\x5c\\x40\\xef\\xb6\\xcb\\xda\\xaf\\x9a\\xf4\\x28\\xfe\\xd3\\x25\\xb3\\xa7\\xd9\\x4c\\x17\\x52\\x0f\\xd8\\x9e\\x00\\xdd\\xf0\\x8b\\x22\\xad\\xf6\\x61\\xf0\\xac\\xd7\\x23\\xb3\\x96\\x9d\\xc6\\x43\\x4e\\xa6\\xf9\\x2e\\xf5\\x8e\\x8d\\xfa\\xe5\\xb0\\xcc\\x28\\x85\\xba\\x98\\x7e\\xa1\\xd1\\x6c\\x39\\xb3\\x4e\\xf6\\x50\\x23\\x00\\x9d\\x63\\x45\\xe4\\x8e\\x36\\x91\\xa4\\x1f\\x02\\xa7\\x7b\\x7f\\xe1\\x33\\xea\\x9d\\xe7\\x56\\x5f\\x15\\x7a\\x20\\x78\\xae\\x98\\x8b\\xbb\\x26\\x6d\\x22\\xd5\\xfa\\x91\\xa7\\xb2\\x63\\xe9\\x8a\\xd2\\xdc\\x07\\x31\\xfe\\x5a\\x29\\x02\\x5a\\x0c\\xb4\\x36\\x86\\x4a\\x5a\\x60\\xdb\\x25\\x7f\\x1e\\x76\\xb5\\xc6\\x08\\xf2\\x5c\\xde\\xcc\\x87\\xea\\xe6\"},\n{{0xb5,0x00,0x76,0x8a,0x28,0x23,0x91,0x5c,0x4a,0x68,0x48,0xd3,0x5f,0x64,0x87,0xd4,0x3b,0xd7,0x66,0xd2,0xce,0x09,0x45,0xf8,0xa3,0xcc,0xdb,0x8d,0x82,0xa3,0x89,0x2b,},{0xb8,0xce,0xa2,0x15,0xa0,0x12,0x4e,0xed,0x27,0x00,0x57,0x25,0xd8,0x97,0x78,0x1e,0xa0,0x64,0xdc,0xef,0xb2,0x14,0x22,0xc8,0xbd,0x24,0x02,0xc5,0x6a,0x10,0x57,0x1c,},{0xe3,0xdb,0x47,0xa1,0x1e,0x10,0xe7,0x88,0x92,0x5d,0x14,0xb1,0xe2,0x8b,0x54,0xc9,0xfc,0xf9,0xb6,0xac,0xc1,0xdf,0x8c,0x14,0xf6,0x83,0xa5,0x67,0x2f,0xd5,0x04,0xdd,0x4a,0x47,0x5a,0x33,0x93,0xb3,0xef,0x8b,0xce,0xac,0x23,0x61,0xdb,0xba,0x35,0x30,0xaf,0x25,0xc2,0x46,0xc3,0xec,0x4c,0x05,0x89,0x9b,0x51,0x7f,0x6c,0xd3,0x4f,0x0a,},\"\\x0a\\x9f\\xda\\x8b\\x8c\\xfc\\xa7\\xa5\\xb0\\x5d\\x78\\x11\\x6f\\xce\\xe1\\x9a\\xb8\\x03\\xc1\\xc6\\x01\\x0c\\xe1\\x1d\\xaa\\x8e\\x93\\xa6\\x6d\\x12\\xc1\\x2e\\x47\\x4e\\xb9\\x1c\\x26\\x40\\xd9\\x7a\\x81\\x3d\\x9a\\x83\\x0d\\x26\\x88\\x68\\xeb\\x2e\\x37\\x70\\x42\\x5f\\x10\\xc7\\x58\\x40\\x46\\x8e\\x66\\x9d\\xc7\\xf6\\x1d\\x3b\\xe2\\xde\\x88\\xae\\x0e\\x54\\x2b\\xc8\\x09\\x67\\x91\\x13\\x95\\x7a\\x14\\xda\\x4e\\xaf\\xf5\\x49\\xbf\\xde\\x63\\x7d\\x7c\\xaf\\xdc\\x6a\\xa8\\x39\\x94\\x83\\x73\\x97\\xf8\\x6e\\x4f\\xde\\x86\\xd4\\x02\\xfa\\x9a\\xef\\x7f\\x65\\x54\\x9a\\x21\\x43\\x73\\xe5\\x60\\xe6\\xd7\\xa1\\xc2\\x76\\x9e\\x0c\\x7d\\x5a\\x01\\x71\\xe7\\xcc\\x00\\xdf\\xf3\\x6e\\x04\\x29\\x79\\x8b\\x53\\xaa\\x62\\x16\\x24\\xbd\\xa7\\x4d\\x6d\\xf0\\xbf\\xff\\xfb\\xd8\\xfd\\x7b\\xef\\x1a\\x64\\xf3\\x6c\\x00\\x07\\x82\\xf6\\xed\\x03\\x1a\\xf5\\xc2\\xa7\\x4a\\x18\\x96\\x35\\x98\\xc9\\xba\\x06\\x23\\x92\\xde\\x96\\x02\\x03\\x67\\x94\\xb7\\xb5\\xe6\\x8c\\x25\\xc9\\x3f\\xe7\\xcf\\xad\\x47\\xa7\\xc5\\xb9\\x79\\xd4\\x76\\xcd\\x51\\x3a\\x12\\xbf\\x03\\x07\\xcb\\x16\\x31\\x74\\x00\\x42\\xa9\\xfb\\xf3\\xeb\\x0b\\xe5\\x17\\x06\\x20\\xda\\xfd\\x5f\\x16\\xed\\x89\\x34\\x2c\\x26\\x25\\xd7\\x83\\xe7\\x4e\\xe0\\xd7\\x84\\xbf\\x05\\x19\\x43\\x74\\x0c\\x88\\xb0\\xbe\\xf7\\xbc\\x85\\xe1\\xa6\\xa4\\xa5\\x17\\xd4\\x92\\xfb\\x73\\x7e\\x77\\x66\\x99\\x59\\x0c\\x93\\x22\\x4c\\xd4\\xd9\\x24\\x5d\\x4e\\x93\\x71\\xa3\\x67\\xc0\\x71\\x2f\\x87\\x49\\x0f\\x92\\x47\\xc4\\x9a\\xdd\\x93\\x13\\xf2\\x77\\xa4\\xd9\\xf2\\x6b\\x75\\xaa\\xe4\\xde\\xd6\\xa3\\xde\\xf8\\x5f\\x83\\xfc\\x99\\x59\\x10\\x40\\x55\\x48\\xaf\\x67\\x0e\\xd8\\xaa\\xa3\\x05\\x24\\xab\\x82\\x9c\\xcb\\x56\\xa5\\x00\\x5b\\x58\\xbc\\xe8\\x68\\xc9\\xe8\\x07\\x4f\\x07\\xdd\\x7f\\x38\\x18\\xf2\\x99\\xe4\\xe0\\x86\\xbe\\xd9\\xea\\xb9\\x02\\xcf\\x11\\xb3\\x98\\xd5\\x31\\xb8\\x63\\x2e\\x7d\\x52\\x3a\\x8f\\x87\\x76\\x95\\xf4\\x6c\\xcf\\x9c\\xe2\\x4e\\x62\\xca\\xb2\\xc7\\xcd\\x0a\\xae\\xe1\\x7d\\xb5\\x26\\x76\\xa4\\xb5\\x05\\x8e\\x9c\\x1d\\x7c\\x47\\xbf\\xfc\\xb6\\x41\\xb0\\xea\\x2b\\x09\\x44\\xf3\\x9a\\x75\\x66\\x5a\\x7e\\xf2\\x9b\\x7f\\x02\\xa8\\x78\\xdb\\x82\\x38\\x83\\xbd\\xac\\xfb\\x0f\\xbe\\x5d\\xfe\\x5a\\x9b\\xed\\x9f\\xda\\xc7\\xe4\\x14\\x2e\\x3e\\xb5\\x0d\\x5e\\x84\\x0b\\xd0\\xac\\x0b\\xec\\xf4\\xfa\\x97\\xe1\\xfc\\x48\\x27\\xc3\\x97\\xa5\\x24\\x65\\xd9\\x16\\x88\\x99\\x54\\xb3\\x70\\x1b\\x0f\\xac\\x61\\x15\\x9b\\x23\\x09\\x2f\\x46\\x85\\xf4\\x78\\x8b\\xad\\x35\\xd0\\x0d\\xa2\\x67\\x9e\\xcc\\x54\\x92\\x1f\\x1a\\x86\\x47\\x10\\x16\\x57\\xab\\x49\\x47\\x74\\x20\\x56\\x7a\\xed\\x67\\xc8\\x60\\x59\\x30\\x44\\x4b\\x5d\\x07\\x92\\x7c\\x17\\xef\\xf1\\xf8\\x57\\x0c\\xf2\\xaf\\x29\\xe7\\x19\\xf8\\x5c\\xa7\\x84\\x9b\\x89\\x55\\x49\\xf1\\x3d\\xfe\\xca\\x68\\xbb\\xef\\x71\\xe3\\xce\\x8b\\x6c\\xed\\xd2\\xff\\x68\\xd3\\x2b\\x02\\xca\\xf5\\x95\\x1a\\x0b\\x3e\\x6b\\x0b\\xae\\x6a\\x96\\xc0\\x20\\x58\\x19\\x1f\\x30\\x5e\\x09\\x07\\x11\\xc4\\x6d\\xad\\xdc\\xd5\\xae\\xee\\x76\\x9c\\x3a\\x10\\x5e\\x9a\\x82\\x7b\\xbd\\x19\\x5d\\x32\\x92\\x31\\xc2\\x62\\x38\\x47\\x9a\\x9b\\xb0\\x07\\x1a\\xfb\\x16\\x0e\\xf9\\x55\\xe8\\x74\\xd7\\xa4\\x20\\xc5\\x67\\x85\\xf4\\x4a\\xe0\\xa1\\x8c\\x52\\xd8\\x28\\x0c\\x59\\x98\\xcf\\x38\\x88\\xfe\\xaf\\x89\\x89\\x81\\x34\\xbc\\x8d\\x41\\x1f\\xc9\\xf6\\xc5\\x76\\x8e\\xa7\\xa2\\x49\\x72\\x94\\x13\\x73\\x9e\\x53\\x2b\\x64\\x39\\x37\\x15\\x2c\\xdf\\xb8\\xd2\\xff\\x87\\xfd\\x48\\x08\\x4d\\xd8\\xae\\xeb\\xea\\xf0\\xf7\\xb1\\x0d\\x87\\xb6\\xe4\\x42\\x32\\x28\\xc9\\xfc\\x8d\\xc5\\xe3\\x85\\x2a\\xa8\\xb8\\xac\\xc5\\x45\\xd1\\x8f\\x25\\xc5\\x5d\\x73\\xda\\x1b\\xb8\\x2e\\x3e\\xb3\\x76\\xf9\\xef\\x05\\xb2\\x74\\xd7\\xec\\xb1\\x84\\x5d\\x65\\xca\\x0c\\xd2\\x62\\x9f\\x03\\x8a\\x2d\\x66\\x4d\\x7a\\x69\\x78\\x1c\\x84\\xe9\\x8d\\xe2\\xc2\\x09\\xc4\\x6e\\xfc\\x51\\x16\\x21\\x72\\x85\\x66\\x49\\x46\\x9e\\x67\\x33\\x08\\xdc\\xc1\\x45\\xea\\xf7\\x83\\xf5\\xcb\\x5b\\x4b\\xe7\\xd9\\xfd\\x58\\xee\\x09\\x74\\xc9\\x81\\xa3\\x8f\\xea\\x8e\\x31\\x26\\x7a\\xbf\\xa4\\x10\\xe6\\x9e\\x46\\x48\\x2f\\x51\\x34\\xf3\\xda\\x1f\\xfe\\x38\\x1b\\xd6\\x9d\\x8d\\x0b\\x78\\xea\\x90\\x9b\\x4a\\xf9\\x39\\x6d\\xca\\xff\\x89\\x96\\x0a\\x04\\x9e\\xda\\x69\\x46\\x61\\x6f\\xc2\\x7c\\xcf\\x9a\\x9e\\x5b\\xa1\\xa0\\x13\\x57\\x64\\xf3\\x77\\x19\\xda\\x4d\\x28\\x07\\x81\\x85\\xd0\\x4d\\x72\\x41\\x9c\\x2c\\x70\\xf2\\x90\\xd9\\x7e\\x1f\\x82\\xb8\\x79\\xf7\\x1b\\x9e\\x19\\xd5\\x04\\xd3\\x64\\xcd\\x3b\\xa2\\x2c\\xf9\\x05\\x25\\x0f\\xd3\\x7d\\x58\\xe5\\xfe\\x40\\x20\\x9f\\x60\\x72\\xa0\\x6d\\x8b\\x5b\\xa7\\x01\\x96\\x23\\x05\\x77\\x87\\x7e\\xc4\\x61\\x53\\x16\\x7a\\x7c\\x7a\\xea\\x27\\x0f\\xa1\\x09\\x8a\\xba\\x9e\\x3a\\x74\\xac\\xb3\\x6a\\x11\\xb0\\x9b\\xd0\\x7a\\x3b\\x88\\xea\\x65\\x4e\\x26\\x83\\x65\\x62\\x5b\\x58\\x9b\\x22\\x06\\xc7\\x10\\xd9\\x60\\xf4\\x2e\\xa4\\x19\\xb7\\xe4\\xe3\\xda\\x47\\x59\\xfc\\xbc\\xa5\\x0e\\x4b\\xf4\\xcc\\x55\\xcf\\x88\\xf7\\x0b\\x31\\x80\\xc8\\x05\\xa7\\x04\\x50\\x86\\xaf\\xa0\\x4c\\x6b\\xe2\\x32\\x23\\xec\\xae\\x5f\\x82\\xc1\\x46\\xd5\\x43\\x11\\xd1\\x80\\x7c\\x2e\\x4a\\x53\\xf9\\xe0\\xa4\\x48\\x2b\\x4e\\x1e\"},\n{{0x9e,0xb5,0xc9,0xef,0x13,0x53,0x5f,0x80,0x81,0x09,0xf4,0xa4,0x3c,0xfa,0xd5,0x68,0x4f,0x80,0xda,0xf0,0x2e,0xed,0x54,0x10,0xac,0x0b,0x0a,0x09,0xa6,0x08,0x2d,0x69,},{0x36,0x7e,0xea,0x1e,0xcb,0x4e,0x5e,0xec,0xdf,0x7e,0x47,0x1b,0x90,0xbb,0x34,0xf9,0xb7,0x98,0x2c,0x8c,0xd6,0x6d,0x42,0x55,0x5c,0x24,0x0b,0x41,0xcd,0x87,0x39,0xdb,},{0x42,0x9c,0xe1,0xfe,0x84,0x6d,0x25,0x08,0x49,0xec,0xa7,0xd4,0x56,0xf8,0xc5,0x9f,0x86,0x75,0xb1,0xf4,0xc1,0x3f,0x2b,0xe4,0x16,0x88,0xdf,0xb8,0xca,0x2a,0x3b,0x24,0xae,0x29,0xd5,0xb6,0xbf,0x47,0x11,0x57,0xbc,0xb6,0xe2,0xec,0x9d,0x4a,0x26,0xb0,0x38,0xe6,0xec,0x28,0x58,0x4c,0xc2,0x3f,0x2a,0x03,0x55,0x6d,0xbb,0x37,0xe9,0x00,},\"\\x2d\\x7c\\xb0\\x5e\\x61\\xdb\\xae\\x26\\x25\\x8e\\x38\\x61\\xc6\\x39\\xef\\x0e\\x1d\\x17\\xfc\\x71\\x1a\\x00\\xf3\\x35\\xba\\x3c\\x02\\x71\\x37\\xe0\\x07\\x08\\xd7\\x08\\xc1\\xff\\x45\\x7f\\xf2\\xc6\\x51\\x12\\xf7\\xdc\\xd7\\xd0\\x2f\\x24\\xd5\\x6f\\x07\\x21\\x58\\xea\\x1c\\x71\\x83\\x25\\x50\\xa5\\x83\\x66\\xfd\\x91\\x97\\x29\\x6b\\xbe\\x61\\xaa\\x4d\\x00\\xde\\x18\\xa4\\x53\\xef\\x91\\x74\\xfa\\x81\\x96\\x83\\x05\\xc4\\x1c\\x34\\x55\\xf4\\x2d\\x44\\x7a\\x92\\x34\\xf0\\x6e\\x13\\xbf\\x8b\\xca\\xa1\\xba\\xbb\\x11\\x69\\x5f\\xaf\\xdc\\x08\\xf7\\xa5\\x84\\xb2\\xea\\x1f\\x61\\xe9\\x38\\x92\\x60\\xce\\x73\\x35\\xa0\\x7d\\xe7\\x2c\\x89\\x11\\xa5\\x8a\\x31\\x3f\\x10\\x88\\xdc\\xdf\\x5c\\x8d\\x4c\\x45\\x6c\\xba\\x2d\\xcb\\x4f\\x2d\\x15\\x6b\\x49\\x43\\xb9\\x5b\\xd4\\x93\\xea\\x4f\\xe1\\xa8\\x2d\\x4e\\x3e\\xa0\\x2a\\xa0\\x29\\x72\\x40\\x0b\\x5e\\xe1\\x78\\x42\\x83\\x2d\\x59\\x97\\x9f\\xc1\\x79\\xf8\\x43\\xc4\\x4b\\x03\\xeb\\x3c\\x30\\x24\\x16\\xd0\\xcd\\xaf\\x11\\xc4\\xca\\x8a\\x66\\xcc\\xbb\\x69\\x97\\x39\\x5e\\xdf\\x6f\\xca\\x2e\\xa0\\x04\\xcf\\x34\\x86\\x97\\x10\\x04\\xa4\\x20\\x42\\xaf\\x8e\\xce\\x00\\x5b\\x94\\x46\\x1d\\x86\\xdc\\xde\\x21\\x2a\\x2e\\xb1\\xbe\\x3b\\x91\\x4c\\x78\\x3e\\x48\\xac\\x1a\\xd4\\x6c\\xac\\xd7\\x3e\\x1e\\xb4\\x48\\x36\\x83\\x22\\xd2\\x67\\x8e\\xfc\\xb2\\xab\\xff\\x52\\x09\\x3d\\xb0\\xf2\\x59\\xdc\\xe5\\xc1\\xe1\\x9a\\x51\\x28\\x20\\xf2\\x35\\xd6\\xae\\xaf\\x0e\\x1a\\x72\\x3c\\x2c\\x65\\x0c\\xff\\x1e\\xe3\\xb6\\xb4\\xf4\\xcc\\x98\\x9c\\x0b\\x7d\\x6d\\xe3\\xcd\\x7e\\x6d\\xaa\\x39\\xbb\\x69\\x07\\x10\\xdf\\x00\\xa7\\x19\\x4c\\x17\\x20\\x1f\\x0e\\x81\\xbe\\x64\\xb6\\x73\\x9e\\x1c\\x1e\\x81\\x76\\xb7\\xe1\\x2a\\x35\\x34\\x27\\xc0\\x67\\xc1\\x93\\x14\\xdb\\x64\\x2e\\x5c\\x76\\x26\\x6b\\x64\\x0e\\xb1\\xcc\\x0c\\x73\\xf8\\x4f\\xc0\\x22\\x7e\\x5a\\x96\\x06\\x0d\\x81\\x40\\x71\\xcd\\xe2\\xfe\\xd9\\x44\\x76\\x7b\\x74\\x66\\xf9\\x00\\x1d\\xfc\\x22\\x36\\x85\\x42\\x9b\\xc4\\xe5\\xe4\\x8f\\x5c\\x13\\xa6\\x3a\\x4e\\x0d\\x82\\x61\\x33\\xad\\x92\\x0d\\x11\\x77\\x21\\x45\\xad\\x6e\\x13\\xc9\\x38\\x97\\x39\\x8a\\x8a\\x40\\x1f\\x93\\xdb\\xd1\\x03\\x00\\x5c\\x7d\\xae\\x44\\x38\\x7f\\x3e\\x80\\xb7\\x93\\x60\\x7d\\x05\\xd2\\xd8\\xbc\\x0d\\x03\\x51\\xa3\\xa4\\x52\\xb8\\xce\\x75\\x9c\\x1a\\xd4\\x8d\\xf7\\xb9\\xba\\x9e\\x4a\\x17\\xdf\\x61\\xfd\\xab\\xb9\\xb5\\x77\\xb5\\xce\\xc3\\xe9\\x46\\x1f\\xbb\\x5e\\x12\\x81\\x55\\xa3\\xc9\\xc8\\x9f\\x8f\\x6b\\xeb\\xb7\\x32\\x2a\\x16\\x67\\x8e\\x8e\\xcb\\x98\\x95\\x3d\\x95\\x83\\x10\\xdb\\x1b\\x06\\x34\\x48\\xc3\\x49\\xf3\\x6e\\x16\\x8f\\xac\\x48\\x4c\\xb3\\xc0\\xd4\\xcb\\x2c\\x25\\x1b\\xd9\\x2e\\xf8\\xe9\\x26\\x2b\\x44\\x09\\x3d\\x7e\\x65\\x0a\\x7d\\x3b\\xed\\x37\\x91\\xfa\\x88\\x10\\x0f\\xee\\x6e\\xf0\\xd5\\xe2\\x3d\\x1e\\x9a\\x80\\x99\\xcc\\x03\\x35\\x20\\x2a\\x4f\\x10\\x6c\\x24\\x77\\x7e\\x98\\xf8\\x1d\\x26\\xef\\xba\\x15\\xc9\\xad\\x15\\x41\\xe0\\xad\\xbf\\x1d\\x1d\\x76\\x07\\x6b\\x0d\\xfd\\x7b\\x7d\\x6c\\x8b\\x82\\xf9\\xc0\\x93\\x46\\x8c\\xd1\\x96\\x67\\x2d\\xc5\\x47\\x8e\\x91\\xce\\x70\\x1c\\xdd\\x7b\\x68\\xb3\\x53\\xc9\\x71\\x11\\xf0\\x42\\x97\\x60\\x63\\x57\\x62\\xf8\\x68\\x3a\\xe9\\x70\\x56\\x4b\\xce\\xba\\x91\\x20\\x51\\x76\\x42\\xe8\\xb3\\xa2\\xba\\xaa\\x85\\xc2\\x5b\\x54\\xa9\\x43\\x76\\x61\\x84\\x90\\x4c\\x72\\xd9\\x29\\x63\\x4e\\xc5\\xf0\\xc2\\x84\\x73\\x41\\x5f\\x12\\x53\\x89\\x06\\xc6\\x78\\xfc\\xa4\\xe6\\x82\\xdb\\x48\\x79\\x75\\x84\\x92\\x53\\x7e\\x78\\x50\\xb9\\xbf\\xef\\x3e\\xb9\\x05\\x3b\\x43\\x92\\x0d\\x81\\x0e\\x55\\xbe\\x96\\x6a\\xec\\x68\\xc9\\xdd\\x3b\\x62\\xcc\\xf5\\x7e\\x81\\x78\\xcb\\x5e\\xf6\\xd1\\x6d\\x17\\x2a\\x56\\xdd\\x92\\x4f\\x00\\xf2\\xd3\\xb5\\xe9\\x3a\\xaa\\x92\\xb2\\x9f\\xb8\\x33\\x6d\\x73\\xe2\\x9e\\x59\\xd1\\xc4\\x7e\\xa6\\x23\\x0c\\xda\\x1d\\x5b\\x03\\xbb\\xa5\\xdf\\xdb\\x33\\x1f\\xeb\\x19\\x44\\x3f\\x12\\x3d\\x2a\\x03\\xff\\x4f\\x10\\xec\\xa1\\x66\\xc2\\x99\\x85\\x88\\xf1\\xe5\\x84\\xed\\x19\\x4d\\xd6\\xf7\\x3c\\x8a\\xca\\x84\\x66\\x31\\x90\\x4d\\x9f\\xe4\\xa9\\x8b\\x36\\x78\\x23\\xe4\\x6e\\xdb\\xa2\\x88\\x51\\x29\\x87\\x9e\\x92\\x77\\xe1\\x50\\xf0\\x29\\xb8\\xfa\\x7b\\xd1\\x1e\\xab\\x9c\\xe1\\x33\\x67\\x77\\xc8\\x0b\\x56\\xb3\\xa1\\xf0\\x81\\x1a\\xdb\\xca\\x0f\\x5b\\x40\\x25\\xa5\\x50\\x3c\\x81\\x96\\x66\\x1a\\xee\\x90\\x00\\x6e\\x9c\\x85\\xbb\\xfa\\x4c\\x5a\\x0e\\x90\\x28\\x85\\xc8\\xce\\x51\\x21\\x2e\\xe6\\x7f\\x0f\\xe0\\xb6\\xaf\\xbc\\x8b\\xad\\x45\\x37\\x27\\x54\\x3b\\x3c\\x68\\xb8\\x90\\xdd\\xab\\xa2\\x69\\xd2\\x5f\\xc1\\x64\\x3f\\x54\\x83\\x51\\x36\\xa1\\xa2\\x5b\\xa1\\x8d\\x91\\x6c\\xed\\xd6\\xa4\\x7f\\xc0\\x7a\\xdf\\x6f\\xc6\\x9f\\xa5\\x08\\x94\\x9d\\xc1\\x0d\\x9d\\xc5\\xe0\\x26\\x1b\\x52\\xf3\\x65\\x71\\x70\\x38\\x4e\\xcc\\xd9\\xc8\\x05\\x41\\x35\\x4b\\x1c\\xe0\\xf6\\xfb\\x5e\\xd3\\xe8\\xd5\\x4a\\xf0\\xb5\\xbf\\x0a\\x92\\x83\\x51\\x25\\xc7\\xd9\\xbc\\x4f\\x09\\x2f\\xf3\\x80\\xe5\\xe8\\x96\\xfb\\xf3\\x02\\x55\\x2b\\x14\\xd5\\xb6\\x1a\\x22\\x4d\\x86\\xe3\\x01\\xc7\\xa6\\x6a\\x66\\xe4\\xe4\\x32\\x9a\\xac\\x0a\\x66\\xb1\\x56\\x77\\x23\\x74\\xdc\\x1c\\x71\\x68\\xd5\\xb5\\x61\\x65\\x2f\\x8f\\x43\\x87\\xe4\\xf2\\x89\\xb6\\x36\\x6a\"},\n{{0xef,0x09,0x48,0xe1,0x32,0x81,0xf3,0xcf,0x35,0x2c,0xbf,0xaf,0x8d,0x89,0xd1,0x17,0x76,0x85,0x52,0xd5,0xa1,0x54,0x8e,0xcb,0xaf,0x37,0x41,0x2e,0x97,0x67,0x0f,0xac,},{0x58,0xc2,0x45,0x7f,0x5a,0x5e,0x3c,0xfb,0xf4,0x71,0x19,0xa8,0x7f,0x2a,0xff,0x19,0x18,0xf1,0xe6,0x7a,0xe6,0xfa,0x91,0x71,0xd3,0xf4,0x1e,0xee,0x07,0xa8,0x68,0x72,},{0xcc,0x12,0xf6,0x9d,0xb6,0x3a,0x67,0x8e,0xc4,0x77,0xa6,0x05,0xa5,0x05,0xc5,0x7d,0xc2,0xb8,0x10,0xef,0x85,0xe3,0xe3,0x45,0x19,0xcb,0x25,0xc5,0x10,0x63,0xaa,0x66,0x35,0x5d,0x3f,0x1e,0x29,0x74,0x69,0x58,0x66,0xed,0xf6,0xf1,0x71,0x71,0xce,0x37,0x84,0x2f,0xba,0xb5,0x07,0x5f,0xc8,0x95,0xd1,0x8e,0xd7,0x43,0xc5,0x46,0x08,0x0c,},\"\\x7e\\xc4\\x7f\\x2f\\x1f\\xe3\\xb7\\x0a\\x6d\\x1d\\x82\\xc7\\xcd\\x92\\x4b\\x4b\\xf9\\xb2\\x02\\x9f\\xc1\\x2c\\x52\\xa6\\xe1\\xcc\\x06\\xcf\\x5a\\xbf\\xc0\\xa4\\x42\\xe7\\xcf\\x14\\x5c\\x15\\x42\\xb9\\xb1\\x35\\x04\\x96\\x65\\x71\\x10\\x35\\xe3\\xc2\\x9a\\x91\\xd4\\xfd\\xae\\xd6\\x12\\x70\\x57\\xa8\\x12\\xc2\\x2c\\xd7\\x5a\\xd1\\x87\\x9b\\xe1\\xd2\\xc6\\x11\\x0e\\x79\\xe9\\x87\\x52\\x4e\\x4e\\x8f\\x27\\xf1\\x6e\\xda\\x90\\xcb\\xd4\\x73\\x3f\\x11\\x18\\x25\\xb5\\x16\\xd1\\x06\\x7f\\x81\\xec\\xa5\\xe6\\x94\\x85\\x76\\xd5\\xbf\\xed\\xb3\\x27\\x7c\\x1a\\xbc\\x1e\\x60\\xf3\\x74\\xd0\\x70\\x1b\\x32\\xcc\\xfd\\x6a\\x5e\\x9c\\x8d\\x16\\x59\\xaa\\xf3\\xd0\\x81\\x86\\x13\\x61\\x3b\\x7e\\x28\\x8d\\x84\\x5e\\x9a\\xaa\\xba\\x2e\\x3e\\x9b\\x41\\x1d\\x50\\x1d\\xff\\xe8\\x56\\xfd\\x31\\x3e\\x9f\\xcc\\x9e\\x74\\x30\\xb9\\x98\\x3f\\x20\\xab\\x4e\\xbf\\x4e\\xb6\\x16\\xbd\\x63\\xe2\\xc5\\x77\\x43\\x65\\x89\\x95\\xed\\x0a\\x14\\x9a\\xe6\\x20\\xa3\\x95\\x61\\x37\\x19\\xb3\\xed\\x7c\\xed\\x45\\x88\\xd5\\x91\\x5d\\x70\\xa2\\xf0\\xc6\\x87\\x68\\x0e\\xc3\\x4f\\xe3\\xe9\\xf7\\x23\\x92\\xe1\\x89\\xe1\\x3a\\x47\\x49\\xd5\\xca\\x9f\\xac\\x65\\x1b\\x92\\xc0\\x84\\xc4\\x06\\x6f\\xdf\\x98\\xa8\\x69\\x22\\x3e\\x4e\\x0c\\x9b\\xec\\x58\\x12\\xb5\\xc1\\x90\\x0e\\x6e\\x60\\xd3\\xa1\\x88\\xd4\\x8a\\x74\\xdf\\xd4\\x15\\xb5\\xca\\xd2\\xe9\\x1f\\xf7\\x6d\\xf7\\x50\\x89\\xd2\\x0a\\x75\\x5f\\x26\\x07\\x56\\xc8\\xf1\\x38\\x2a\\x29\\xf7\\xb9\\x37\\x26\\xe7\\x31\\x07\\x1c\\xd4\\x77\\x45\\x8c\\x6f\\x20\\x22\\xdf\\xad\\x7d\\x4f\\xc7\\xab\\x23\\x80\\x54\\x18\\x64\\xf6\\xb5\\x87\\x74\\xf9\\xae\\x8e\\x5f\\x07\\x7c\\x1a\\x8d\\xa0\\x73\\xc3\\x98\\x53\\xeb\\x2f\\xd4\\x77\\x22\\x0b\\x45\\xa3\\xd9\\x22\\x63\\xdc\\x7e\\x14\\xd3\\xbb\\x2b\\x36\\xfc\\xa4\\x66\\xc7\\xef\\x8a\\x24\\x75\\x38\\x72\\x5f\\x2f\\xce\\x5c\\x72\\x21\\xbc\\x75\\x1c\\xde\\x13\\x94\\x60\\x4f\\x59\\x31\\xd7\\x33\\x36\\x0c\\xcd\\x47\\xce\\x08\\x77\\x12\\x95\\x81\\x80\\xad\\x84\\xfa\\xe7\\x13\\xb5\\x43\\xf0\\x5e\\xef\\x6a\\xbc\\x06\\x61\\x43\\x31\\x21\\xed\\x3b\\x45\\x06\\xa1\\x46\\x50\\x25\\x31\\x6f\\xb8\\xf9\\xd6\\x45\\x35\\xcc\\x45\\x38\\xac\\xd4\\x06\\x4d\\xd5\\x76\\xb0\\x74\\x0e\\x1b\\xeb\\x13\\xbc\\xea\\xf1\\x55\\x54\\x3d\\xc8\\x90\\x97\\xca\\x5c\\xa1\\xcf\\xfa\\x0a\\xd6\\x5a\\x10\\xbc\\xb7\\x59\\x35\\x4e\\xab\\x8a\\x42\\xde\\x73\\x4a\\xf9\\x09\\xc2\\xfe\\xba\\x38\\x0d\\x66\\x40\\x9f\\x32\\x5d\\x5f\\x17\\xaf\\x9c\\xa7\\xf8\\xcb\\x41\\x34\\xfd\\x6a\\x2b\\x6a\\x52\\x8d\\x9e\\x60\\xd9\\x61\\x2b\\x8e\\x8b\\x40\\x62\\xf8\\xe0\\xfa\\xd1\\xe7\\xee\\xb9\\xcb\\xfe\\xf6\\xe9\\x73\\x8e\\xc7\\x97\\x3e\\x1c\\xb2\\xba\\x23\\x27\\xde\\xca\\x4e\\xa4\\x65\\x68\\xf3\\x1e\\x12\\xf7\\x30\\xe2\\x47\\xc1\\xd0\\x70\\x29\\xfd\\x44\\x22\\xb2\\x98\\xff\\x23\\x98\\x02\\x3b\\x41\\x20\\xa3\\xa4\\x25\\xff\\xb6\\x52\\x88\\x0c\\x19\\xea\\x69\\xf3\\x63\\x9e\\x0f\\x6d\\xf4\\xf0\\x08\\x76\\xcc\\x45\\x28\\xe2\\x67\\xe8\\x1d\\x59\\x43\\x19\\x9d\\x0f\\xeb\\x6c\\xb4\\xe1\\xba\\xf4\\x04\\xbb\\x6f\\x8b\\x39\\xb1\\x2d\\xbc\\xe9\\xfd\\xc3\\x5d\\xc1\\x58\\x06\\x6e\\x99\\x75\\xae\\x5b\\xd3\\xb5\\x5f\\x2a\\x41\\xa7\\x91\\xba\\xf3\\xe8\\x35\\x1e\\xc6\\x04\\x94\\x47\\x90\\xa2\\x2c\\x93\\x3c\\x80\\xb1\\x59\\x0b\\xa1\\x97\\xa4\\x70\\x6f\\x7f\\x51\\x28\\x68\\x2e\\xdc\\xd7\\x4d\\xd7\\x8d\\x43\\x5e\\x78\\x7c\\x2b\\x76\\xa5\\x7b\\x3f\\x4e\\x7d\\x7b\\xe2\\xef\\xd2\\x6d\\xa5\\xf9\\xa8\\x29\\x11\\x9b\\x01\\x50\\x8b\\x70\\x72\\xc7\\x69\\x9c\\xe5\\x2b\\xb5\\x78\\xcc\\x5b\\x1b\\x93\\x66\\x1b\\x51\\x72\\xfb\\x84\\xda\\xf1\\xba\\x36\\x4d\\x2c\\xbd\\x80\\xe2\\xc9\\x9b\\xca\\x9c\\xae\\xa8\\x73\\xcc\\x0a\\x16\\x29\\xea\\xc3\\x84\\xe9\\xb2\\x06\\x84\\x2a\\x6e\\x61\\x83\\x38\\x75\\x91\\xb4\\xaa\\x34\\xa9\\x5f\\xd8\\x9b\\x49\\xd8\\xd1\\x5d\\x91\\xe2\\x19\\x40\\xe1\\x7d\\xca\\xf1\\xef\\xf8\\xa0\\xa4\\x7a\\x0d\\x7a\\x95\\xda\\xea\\xd8\\x2a\\xa3\\xdf\\x82\\x04\\xa0\\xcd\\x20\\x69\\x24\\xae\\x51\\x0f\\xec\\x8a\\x9c\\x4e\\x8d\\x85\\xd4\\x66\\xfd\\xb4\\xdd\\x36\\x5d\\xc9\\x93\\x36\\xb2\\x2c\\xe0\\xb9\\x56\\xb5\\xee\\x00\\x17\\xf2\\x9d\\x25\\xee\\x66\\xfb\\xdc\\xec\\xb0\\xd9\\x96\\xff\\xb9\\x7c\\x8d\\xef\\xde\\x40\\xa9\\xff\\x99\\x93\\x19\\x3c\\xa8\\xf1\\x68\\x50\\x67\\xc1\\x9c\\x52\\x6e\\x0e\\xfe\\xd2\\x36\\xf8\\xed\\xb8\\xde\\xf6\\xc2\\xa0\\x3e\\x21\\x95\\x2c\\x86\\x12\\xd6\\x24\\xe6\\x88\\x6a\\x31\\x1f\\xfb\\x9e\\x2f\\x15\\xda\\x44\\xab\\xe1\\x80\\xd2\\x6a\\x14\\xb1\\x5f\\x63\\x56\\x1e\\x09\\x7a\\x73\\x0e\\xca\\xbb\\x79\\x2c\\x7c\\x23\\x5f\\xdd\\x36\\x0f\\x57\\x1f\\x27\\xef\\x68\\x67\\x7a\\x7d\\x63\\xbe\\xb4\\x97\\x59\\x82\\xcb\\x19\\x9a\\x56\\x0f\\x81\\x6e\\xe1\\x29\\x89\\x44\\x5f\\x7f\\x75\\xb8\\x3e\\xb2\\x78\\xd6\\x28\\x25\\x94\\x7d\\x84\\x09\\x9a\\xf2\\xa6\\xff\\x2e\\xad\\xbb\\xf5\\x89\\xb5\\xeb\\x2f\\x72\\xed\\x11\\x4c\\x73\\x15\\x11\\x53\\xae\\x00\\x22\\xbc\\x95\\x64\\xd1\\x5c\\x2d\\x5c\\xdb\\xba\\xab\\xbe\\xf6\\x38\\xf0\\x30\\x95\\xf5\\x3e\\xeb\\xac\\x96\\x83\\x40\\x9a\\xd3\\x06\\x0c\\xfb\\x7c\\x70\\x37\\xb9\\xb0\\xbe\\xfe\\x06\\x9c\\x92\\xa0\\x2b\\xe9\\x53\\x38\\x8e\\x9e\\xa4\\x5d\\x36\\xdd\\xf4\\xf5\\xa8\\x38\\x94\\x32\\xcc\\xf5\\x04\\xc5\\x08\\x08\\xb0\\x7f\\x69\"},\n{{0x90,0x3f,0x3b,0x53,0x99,0x89,0x2e,0x29,0xcc,0xfa,0xfb,0xaf,0xbd,0x7c,0xc4,0x53,0x3c,0x15,0x4a,0x62,0x56,0x82,0x40,0x6c,0x89,0xbf,0x89,0x4c,0x88,0x9e,0x43,0xf4,},{0x8f,0xa5,0xff,0x5b,0x6b,0x26,0xbd,0x67,0xdf,0x86,0x40,0x46,0x42,0x9d,0xf1,0x24,0xb5,0x23,0x00,0x5d,0xd8,0x94,0x44,0x27,0x5c,0x8a,0xb7,0xeb,0xdd,0xb6,0xf4,0xdb,},{0x49,0x5a,0x8f,0x99,0x19,0x41,0xc6,0x29,0xbd,0x64,0x1a,0x67,0x47,0x1a,0xb8,0x60,0xbf,0xd3,0x9b,0x72,0xf2,0x33,0x55,0xf7,0x27,0x09,0x09,0xd5,0x30,0x7c,0x77,0xb1,0xb9,0x4b,0xae,0x3e,0xd1,0x94,0x50,0x78,0x0e,0x90,0x85,0x30,0x5f,0x31,0xb1,0xe1,0x68,0x3f,0xac,0xf0,0xd1,0xfc,0x88,0x40,0xae,0xc7,0x7d,0xf6,0x7a,0xea,0xb3,0x02,},\"\\xa2\\xc1\\x1b\\x5f\\xb8\\x84\\xa8\\x22\\xfa\\xe6\\x4d\\xa8\\xdc\\xb4\\x45\\x2c\\xfd\\x7a\\x04\\xca\\x6d\\x7a\\x5a\\xbc\\x8d\\x82\\x71\\xe9\\x3f\\x93\\x44\\x9e\\x1f\\xeb\\x8e\\x02\\x97\\x5f\\x49\\x6b\\x90\\x34\\x40\\x0d\\x35\\x99\\xab\\x97\\xaa\\x39\\x97\\xda\\xd1\\xc9\\xff\\xab\\x5b\\x9f\\x8d\\xf4\\xaa\\xa5\\xb8\\x40\\xd9\\x0d\\x86\\x2f\\xff\\x7f\\xf0\\xcf\\x73\\xa6\\x0c\\x66\\x15\\x00\\x09\\xe0\\x1c\\x93\\x7b\\xd1\\xaf\\x68\\x07\\xb5\\xba\\x2e\\xf6\\x12\\xee\\x13\\xd6\\xde\\xf4\\x0b\\xb0\\x9c\\x46\\x81\\x1a\\x2d\\x4e\\x46\\x8e\\x03\\x8b\\x32\\x30\\x55\\xf9\\xdf\\xbd\\x01\\x82\\x9a\\xe2\\xf1\\xa5\\x35\\xef\\x02\\x95\\xca\\x1e\\xd1\\x76\\xe4\\x6d\\xe9\\x96\\xcc\\x87\\xba\\xce\\x45\\x35\\x62\\x33\\x21\\x18\\x35\\xb6\\xf4\\x75\\x7c\\x99\\xbd\\x52\\x7e\\x76\\x6a\\x5f\\x0b\\x12\\x7c\\x8c\\xff\\x8e\\x6d\\x66\\xf8\\xba\\xb8\\x6d\\x00\\x00\\x45\\x2c\\xd7\\xf6\\x7b\\xe5\\x57\\x78\\x85\\x13\\xec\\x07\\x09\\xb5\\x37\\xb0\\x07\\xb4\\x20\\x16\\xe7\\xa8\\x96\\x83\\x46\\x9b\\xd8\\xff\\x8d\\x21\\xeb\\x10\\xc1\\x49\\x17\\xd4\\x7f\\x2d\\xc4\\xf8\\x26\\x32\\x4f\\x7c\\x01\\xb2\\x4f\\x8d\\xcf\\xf0\\x4a\\xa6\\xd8\\x50\\x95\\xd9\\xab\\x15\\x4b\\xa5\\xc3\\xbd\\x91\\x9c\\x9d\\x72\\x8d\\xbd\\xc9\\x90\\xd1\\x9c\\xeb\\x23\\x7b\\x45\\x29\\x07\\xbd\\xbe\\x21\\xf9\\xf0\\x8c\\xdd\\xae\\x5b\\xe4\\x79\\x27\\x67\\x09\\xb8\\xae\\x73\\xf8\\x97\\x4c\\x4b\\x11\\x38\\x41\\xad\\x53\\x5d\\x6f\\xf6\\x22\\x3e\\xea\\x47\\xd1\\x85\\xc8\\xe8\\xa6\\x5f\\xde\\xe2\\xc2\\xd4\\x58\\x00\\xc1\\x7c\\xb5\\x56\\xea\\xfd\\x67\\x66\\x47\\xd9\\x96\\x8e\\x55\\xca\\x9c\\x59\\x23\\x2b\\x97\\x70\\xad\\x10\\xf9\\x55\\xfc\\xb5\\x85\\x8e\\xdf\\x0b\\x74\\x83\\xad\\xc1\\x81\\x7c\\x0f\\x8d\\x02\\x24\\x04\\x82\\xca\\xa7\\x6f\\x43\\xc6\\xd2\\xe9\\x6a\\x4f\\xf9\\x59\\x1c\\xd7\\xb8\\x78\\xea\\x61\\x9e\\xa5\\x6d\\x1b\\x58\\x86\\x31\\xe7\\x63\\x3c\\x5e\\xcb\\x2b\\xa6\\x99\\x83\\x98\\xcb\\x06\\xe3\\xcf\\x75\\xae\\xb3\\xe0\\x8d\\xab\\x19\\x63\\x2d\\x45\\x4f\\xf7\\xdc\\x0e\\x2a\\x41\\xf0\\x97\\x37\\xe8\\xee\\x82\\x3d\\x1b\\x9e\\x24\\xdd\\xa8\\x4a\\x2c\\xe0\\x31\\x3c\\xb9\\xfc\\xe3\\x1c\\xb6\\x63\\xc5\\x5c\\x05\\x64\\x5e\\x63\\x40\\x17\\x56\\xe8\\xad\\x38\\xf5\\x17\\x4c\\x02\\xa6\\x63\\xd8\\x15\\xad\\x64\\x42\\x2f\\xf7\\x72\\x7d\\x4f\\xda\\x16\\xe4\\x8d\\x4b\\xf8\\xf6\\x60\\x2e\\x72\\x60\\xda\\x62\\x33\\x0e\\x68\\x78\\xc3\\x47\\x64\\xe1\\x29\\xaf\\xbd\\x55\\x22\\x08\\xf6\\xbe\\xd4\\xf7\\xce\\xe9\\xb6\\x71\\xf4\\x88\\x38\\x88\\x15\\xd7\\x4b\\x49\\x51\\xb8\\x68\\x2c\\xe7\\x6c\\xfe\\x31\\xe9\\x38\\xc4\\x70\\xb8\\xf7\\xa4\\x5f\\xd6\\x3a\\x96\\x91\\xf4\\x26\\xa7\\x5c\\x58\\xed\\x3d\\xbc\\xe3\\xae\\x8f\\xd9\\xd1\\x0a\\x83\\x52\\xe4\\x7c\\xc1\\xb1\\x2c\\x91\\x92\\xac\\x86\\x26\\xd1\\xb3\\x84\\xb7\\x7a\\x18\\xb9\\x86\\xe7\\x1a\\x99\\x86\\x46\\xc1\\x37\\x99\\x2b\\x67\\xc4\\x81\\x7e\\x34\\x63\\x45\\xfa\\xf5\\x0a\\x26\\x59\\xfd\\xc5\\xca\\xd5\\xc7\\x19\\x64\\x8e\\xfe\\xe3\\x84\\x7c\\x0f\\xf6\\xbd\\x70\\x95\\xc2\\x8b\\x4c\\x51\\x95\\x96\\x7c\\x90\\xcf\\x84\\xe1\\xef\\x68\\xa1\\xad\\xa0\\x1f\\x62\\x74\\xed\\xe3\\x63\\xfb\\x82\\xe0\\xb5\\x49\\xa8\\x70\\x24\\x5d\\x60\\x8c\\xae\\x82\\x34\\xf6\\xd8\\x4a\\xbe\\xb6\\x1b\\x71\\x84\\x66\\x09\\x36\\x20\\xd8\\x5c\\x58\\x4a\\xb0\\x1e\\xed\\xa0\\x91\\xee\\x8a\\xff\\x1c\\xf6\\x7a\\x46\\x75\\x67\\x9a\\x1f\\x40\\x03\\xe6\\x6a\\xaf\\x43\\x87\\x1b\\x88\\xec\\xda\\x6a\\x16\\xdc\\x5a\\xcb\\x05\\x39\\x5f\\x2d\\xa9\\xdf\\x70\\xd3\\xbd\\xb6\\x14\\x38\\xe1\\xc3\\xd4\\x09\\x81\\xe0\\x34\\x62\\x7d\\x02\\x6e\\xe1\\xd2\\xe7\\x9f\\x65\\xcb\\xb8\\x18\\x9f\\xcb\\xb3\\xcc\\x8b\\x5c\\x2e\\x7e\\x79\\x6b\\x5d\\x28\\x89\\x41\\x1d\\x56\\x41\\xfb\\x86\\x9c\\x7b\\x0a\\x58\\x9c\\x43\\x25\\x4f\\x8c\\x54\\x38\\xaa\\xf5\\xac\\x42\\x38\\x32\\xf0\\x18\\xd7\\x9a\\x51\\xb9\\x6f\\x24\\x2e\\x2d\\xe0\\xc8\\x51\\xcc\\x5f\\xc2\\xb2\\x06\\xbc\\xa4\\xb5\\xbe\\x83\\x61\\x25\\xac\\xa1\\x44\\xbb\\xc3\\x8c\\x8c\\x63\\x8b\\xe0\\xd3\\xbb\\xe0\\x25\\xa1\\xbe\\x8b\\x3d\\x03\\xd5\\x92\\x9b\\xaa\\x64\\x9c\\x35\\x44\\xa3\\x2a\\x91\\x5e\\x92\\x6a\\x38\\x79\\x1b\\x13\\x4a\\x97\\x1b\\xc5\\x2d\\x1b\\x6c\\xa6\\x25\\xef\\xb7\\xc2\\xf3\\xbb\\x47\\xab\\x51\\xd4\\x3c\\x8e\\x37\\x4d\\x16\\xcd\\xa8\\x82\\x20\\x4b\\x71\\xca\\xfe\\x90\\x93\\xcb\\x60\\x78\\xef\\x2b\\xdf\\xad\\x59\\xed\\xea\\xf3\\x6d\\x0c\\x1a\\x4d\\xc4\\x25\\xb9\\xe7\\x18\\xc4\\x51\\x85\\x22\\x5a\\x9c\\x30\\x84\\xb7\\x82\\xbf\\xe1\\x63\\x49\\x2f\\x8e\\x84\\x82\\xec\\x9a\\xa0\\x73\\xf6\\x90\\x1f\\xf3\\xd1\\x11\\x7c\\xe9\\x17\\xe1\\x91\\x22\\xfa\\x67\\x65\\x0d\\x85\\x8f\\x8f\\x82\\xb3\\x76\\x69\\x72\\x3c\\x22\\x6d\\x72\\x16\\x97\\xe7\\xae\\x33\\x59\\xf5\\xa6\\xb0\\x24\\x24\\xee\\x87\\x94\\xcb\\xea\\xa6\\x41\\xed\\xbb\\xf7\\x53\\xb1\\x03\\xa5\\xfe\\x15\\x8b\\xe0\\xba\\x60\\xd8\\xa2\\x12\\xd4\\x2f\\x8c\\x5c\\x2a\\xf2\\x54\\xbf\\x1b\\x9c\\x80\\xdf\\x6f\\x1c\\xf0\\x9d\\x70\\x79\\x3c\\xae\\x1a\\xbb\\x46\\x27\\xb1\\x78\\x0f\\x1b\\xce\\x7f\\x61\\x7e\\xe5\\x0f\\x6b\\xd4\\xb0\\x83\\xb2\\xfc\\x7c\\xd8\\x44\\xaf\\xb7\\x23\\x80\\xd5\\xcb\\x6b\\x25\\x5b\\xf4\\x7e\\xa7\\x1c\\xad\\x6c\\x6c\\x4d\\xf0\\x21\\xf8\\x1b\\x54\\x8f\\x43\\x2c\\x18\\xac\\x36\\x6c\\x6a\\xec\\xd0\\x3b\\x6c\\x8c\\xe2\"},\n{{0xee,0x81,0xe0,0xfb,0x05,0x2e,0x23,0xad,0x75,0x9d,0xe6,0xaa,0x98,0x38,0xde,0x98,0xe3,0x6d,0x48,0x20,0xdc,0x0e,0x1b,0x7b,0x3e,0xf1,0x14,0x1a,0xb9,0xde,0x33,0x40,},{0x98,0xf3,0xc9,0x88,0x07,0x94,0xde,0x64,0xfa,0x26,0x9b,0xdf,0x33,0x60,0x95,0xe0,0xe0,0x1b,0x1a,0x3b,0x37,0x5f,0x96,0x5b,0x93,0x70,0x0b,0xbd,0xf4,0xb9,0x68,0x69,},{0xf0,0xd8,0x73,0xbe,0x15,0xcf,0x45,0x4c,0x74,0x34,0xde,0xab,0x71,0xde,0x25,0xcf,0xe9,0x9e,0x81,0xa4,0x8d,0x2d,0xce,0x6a,0x35,0xd1,0x63,0x37,0x14,0xdf,0x0f,0x8b,0x40,0x29,0xe0,0x58,0x25,0x11,0xef,0xc4,0xd0,0x68,0x92,0xf6,0x72,0x85,0x02,0x46,0xbc,0xf0,0x70,0xc4,0x6f,0xad,0xc2,0xfa,0xab,0x44,0xdc,0x43,0x50,0x45,0xde,0x00,},\"\\x28\\xd9\\x9e\\x95\\x18\\xb8\\x82\\x83\\xc2\\x20\\xe7\\x6d\\xe2\\x05\\xd7\\xb6\\x16\\x23\\x59\\xb1\\xdf\\xec\\x1f\\xba\\xab\\x98\\xec\\x0e\\xf1\\xdf\\x8d\\xa4\\x0b\\x6b\\x7a\\x77\\x5e\\x97\\x28\\x45\\x0a\\xeb\\x23\\x51\\xfe\\x5c\\x16\\xaf\\xda\\x3a\\xec\\x0d\\x71\\x04\\x9d\\xa4\\xcb\\x7d\\x4c\\x63\\x71\\x3a\\x24\\x10\\xab\\xb0\\x22\\xf8\\x16\\x11\\xcc\\x06\\x45\\x87\\xc8\\x04\\x7d\\x43\\x83\\xc0\\x0c\\x3c\\x56\\x2e\\x9c\\xee\\xa3\\x57\\x75\\x09\\x53\\x91\\xb5\\xf3\\xdd\\xa0\\xe3\\x73\\xc4\\xa7\\x7f\\xf6\\x18\\xa2\\x8e\\xf6\\x87\\x87\\xeb\\xfc\\x3e\\xbc\\xcc\\xc5\\xd1\\xce\\x32\\xdd\\xf4\\x3b\\xfc\\xe5\\x72\\x03\\xda\\x76\\xa8\\x66\\x4b\\x3c\\x61\\x6a\\x88\\x69\\x28\\x2d\\xb0\\xb7\\x28\\x11\\xb5\\xfd\\x5a\\x2a\\x03\\xa4\\xff\\x66\\x72\\x4b\\x04\\x89\\xea\\x2e\\x10\\x73\\xd7\\x81\\xc3\\xf1\\x89\\x11\\x5d\\x79\\xba\\x20\\xa4\\x6d\\x1d\\xfa\\xf5\\xb1\\xa5\\x84\\x7b\\x2a\\x2e\\x31\\xb2\\x80\\x87\\x37\\x56\\x9e\\x60\\xb5\\x72\\x31\\xe6\\xa9\\x9a\\xf2\\x6f\\x58\\xaf\\xeb\\x15\\x77\\x08\\x10\\x47\\x48\\x12\\xfe\\x4a\\xfa\\xcf\\x88\\x45\\x06\\xb8\\xc3\\x14\\xbc\\x67\\x51\\xbb\\x42\\xb4\\xbd\\x6e\\x87\\xd2\\xe5\\xde\\x70\\xfe\\xc5\\xf0\\x01\\x4c\\x42\\x57\\xb1\\x34\\x72\\xa3\\xb0\\x11\\x1a\\x7a\\x8c\\xf8\\x3b\\x1d\\xc0\\xcf\\x96\\x20\\x22\\xcd\\x44\\x46\\x8a\\x3a\\xb1\\xf0\\x01\\x6b\\x70\\xca\\xfb\\x1d\\x02\\x46\\xac\\xd7\\x05\\x39\\x37\\xc9\\xac\\x40\\x20\\x7c\\xf1\\x3b\\x50\\xdd\\x15\\xe2\\xa2\\xe1\\x5f\\x50\\xa0\\x5b\\xca\\x2f\\x28\\xe7\\x70\\x26\\x23\\x71\\xda\\xce\\xe0\\x2e\\x25\\xb2\\xa5\\x96\\x58\\xed\\x90\\xc0\\x60\\x0f\\xa2\\x65\\xb7\\xde\\x3d\\x44\\xf8\\xef\\x07\\x21\\xbf\\x39\\xec\\x4d\\x4e\\xca\\x58\\x88\\x52\\x7b\\x77\\x80\\x67\\xb1\\xd6\\x59\\xc0\\x05\\x14\\xc8\\xd7\\x05\\x62\\x73\\xa2\\x94\\xcb\\xaf\\xe4\\x50\\x90\\xd0\\x69\\xbb\\xd0\\x9f\\x92\\xf4\\x61\\xe6\\x48\\xf3\\xe6\\x82\\x88\\x2c\\x71\\x57\\x6e\\x97\\x4d\\xeb\\xb0\\xcb\\x7e\\x0e\\x83\\x16\\x40\\x66\\x60\\x15\\x0d\\xab\\xb5\\x8e\\x76\\x24\\x66\\x14\\xa2\\x91\\xc1\\x2c\\xe9\\xe0\\x34\\x6c\\x02\\x77\\x4d\\x4d\\x09\\xce\\xcc\\x23\\x69\\x67\\x12\\xfe\\xe2\\x50\\xc0\\xbb\\x5d\\xf7\\xa2\\xa4\\xc4\\x3a\\x55\\x63\\x33\\x1b\\xcb\\xbf\\x84\\xbe\\x3f\\x2e\\xeb\\x06\\x54\\x53\\x2e\\x85\\xec\\x59\\x7b\\x53\\xb3\\x2f\\x39\\x54\\xcc\\xaf\\x0c\\xd4\\x26\\xde\\xf9\\x1e\\xc4\\xb2\\x08\\x41\\x69\\x48\\xaf\\x27\\xde\\x04\\xd8\\x32\\x70\\x58\\x97\\xa0\\x4c\\x5e\\x24\\xa2\\xe8\\x8b\\x20\\x04\\x0f\\xd4\\xec\\xa3\\x08\\x9f\\xdb\\x91\\x8a\\x92\\xe3\\x5c\\x4d\\x31\\xda\\x26\\x85\\x0b\\x9d\\xd3\\x41\\x18\\xc7\\x44\\x49\\xa8\\x55\\xff\\x4b\\xc9\\xff\\xf0\\xd1\\x44\\x78\\x39\\x65\\x4b\\x00\\x41\\x79\\x99\\xfa\\x4e\\xb8\\x91\\x02\\x13\\x3c\\xd3\\x20\\x40\\x91\\x53\\x58\\x49\\x57\\xc1\\x04\\x89\\xdb\\x4b\\x72\\x44\\xc9\\x59\\x07\\x98\\x8e\\x83\\xdc\\x82\\x12\\x71\\xdc\\x1a\\xb6\\x43\\xd6\\x99\\x2d\\x0f\\xd8\\x20\\x49\\x2a\\xe6\\x42\\xe2\\x4d\\x19\\xa1\\x79\\xfa\\x75\\xd9\\x36\\x3b\\x32\\x16\\x62\\x60\\x6f\\xd9\\x4a\\x47\\xfd\\xb2\\xe6\\x8d\\x3f\\x30\\xc0\\x46\\x73\\xf8\\x09\\xde\\x01\\x44\\x94\\x5e\\xa4\\xd4\\x18\\x3d\\x48\\xf1\\x75\\x07\\x9e\\xed\\x50\\x32\\x3c\\x6b\\x19\\x2e\\x02\\x0e\\x16\\x2a\\x35\\x03\\xaa\\x58\\x2f\\xb0\\x8b\\x40\\x36\\x24\\xa2\\x3e\\x35\\x7e\\xed\\xa0\\x8d\\x90\\x43\\x86\\xf3\\x58\\xc3\\x6c\\x64\\xd3\\x14\\xc7\\x7c\\xd9\\xd4\\xd2\\x3d\\x58\\x1e\\xe5\\x3d\\x81\\xff\\x97\\xad\\xa0\\x19\\xcf\\xcf\\x04\\xeb\\x9d\\xcc\\x1d\\xe9\\xb7\\x4c\\x3d\\xb6\\xb8\\x11\\x57\\x8b\\xd4\\xf2\\x19\\xc5\\xca\\x48\\xef\\x4c\\x82\\x6b\\x09\\xe6\\xc9\\x6d\\x03\\x1f\\x65\\xdd\\x48\\xb6\\xe7\\x3d\\x0c\\x10\\x05\\x86\\xb2\\x1d\\xf0\\x29\\x3a\\x03\\xd2\\xed\\x7e\\x50\\x09\\xad\\x02\\x53\\x40\\xc2\\x1d\\x09\\x06\\x06\\x91\\xf5\\xcd\\x8a\\xf2\\xab\\x12\\xf9\\xb8\\x60\\xee\\x87\\x81\\x5e\\x1a\\x9f\\x40\\x0c\\x2a\\x6f\\x63\\x4e\\xa8\\xf9\\xb3\\x42\\x5a\\x08\\xd1\\x0b\\x3c\\x81\\x53\\x67\\x38\\x8f\\x4d\\x1b\\xe3\\x56\\x31\\x8e\\xcf\\x90\\x35\\xd0\\xee\\x97\\x5a\\xff\\xa8\\x59\\xca\\xac\\x28\\xeb\\xcc\\xd0\\x59\\x9b\\xb2\\xf6\\xf3\\x52\\x36\\x61\\xbd\\x17\\x8f\\xc9\\xe4\\xca\\xc3\\x78\\xbb\\x9d\\xd4\\x71\\x6b\\xb0\\x69\\x23\\xfd\\x2b\\xbd\\x56\\xc9\\x59\\xc4\\x2b\\x95\\xd5\\x01\\x93\\xf8\\xbf\\x29\\x9f\\xcc\\xa3\\xb2\\xee\\xa9\\x4e\\xc5\\xf9\\x85\\x83\\x92\\x4c\\x08\\x04\\x16\\xe2\\x8b\\x54\\xfe\\x57\\x65\\x84\\x58\\xb0\\x55\\xce\\x4d\\xe8\\xa7\\x5f\\xc8\\x27\\x15\\xca\\xe9\\x1d\\x37\\x5c\\xf6\\x92\\x81\\x37\\x80\\x51\\xbb\\x61\\xfd\\xd7\\xbb\\x00\\x68\\xf6\\x3e\\xfa\\x6d\\x6e\\x83\\xd8\\xfd\\x42\\x57\\xaf\\x80\\x97\\x0f\\x4a\\x9e\\x69\\x24\\xb2\\xde\\x0a\\xd9\\x66\\xdf\\xfe\\x6f\\xa4\\xa1\\x13\\xb0\\xe7\\x72\\xf1\\x76\\x87\\x85\\xb3\\xb4\\x20\\x49\\xf7\\x6c\\x48\\xad\\x80\\xf2\\xc6\\x7f\\xb0\\xf9\\x1a\\x5f\\xc4\\x10\\x79\\x12\\x52\\x0d\\x8d\\x68\\x3c\\x06\\x2c\\x3a\\x22\\x2b\\xcd\\xa7\\xe7\\x10\\xba\\xcd\\x47\\x8e\\xe8\\x83\\x67\\xb6\\xa0\\x59\\xa4\\x52\\xfd\\x26\\xf1\\x14\\xa5\\xac\\xbd\\x69\\x79\\xba\\x01\\x9f\\x7d\\xa6\\x8a\\xc0\\x4a\\x19\\x30\\x26\\xbc\\x1c\\x27\\xe4\\x83\\x7b\\x1d\\xe2\\x9c\\xce\\x09\\x0e\\x33\\x80\\xd5\\x05\\x1a\\x58\\x64\\x09\\xe6\\x28\\xe3\\x14\\x56\\x65\\xbb\\x1d\\x84\\xec\\xd8\"},\n{{0x69,0xd0,0x1d,0x82,0x91,0x13,0x08,0x1c,0xbf,0x5d,0x0c,0x6e,0xf7,0x7b,0x21,0x77,0x5c,0x8d,0x9b,0x68,0x00,0x00,0x05,0x6f,0x03,0xc7,0x5a,0x7d,0x0a,0x05,0x87,0xd2,},{0xee,0x84,0x69,0xdd,0x61,0xcf,0x5d,0xe4,0x00,0xda,0x7d,0x7a,0x47,0x9a,0x44,0x18,0xe6,0x77,0x2e,0x69,0xff,0x53,0x30,0xce,0x5c,0xa7,0x78,0x59,0xfe,0x27,0x17,0x55,},{0x40,0x8c,0xef,0xcf,0x01,0x41,0x7e,0x2d,0xc6,0xa8,0xa1,0x82,0x84,0xe4,0x11,0x65,0x7f,0x03,0x92,0x50,0xc3,0x12,0x78,0xdb,0x28,0x19,0xf9,0xea,0xea,0x42,0x93,0xfb,0xf6,0x83,0x1a,0x28,0x01,0xfc,0x1e,0xa6,0x87,0x16,0x57,0xb8,0x41,0xe1,0x73,0xf4,0x51,0xb0,0xd5,0x75,0xa9,0x37,0x9e,0x35,0x85,0x7e,0x8c,0x72,0x97,0xfa,0x14,0x04,},\"\\x0b\\x9e\\x11\\x0f\\x29\\xd1\\x98\\x16\\xa1\\x7b\\x2c\\x75\\x47\\x8f\\x13\\xce\\xe9\\x53\\x81\\x1a\\x19\\x83\\x01\\x4c\\xb7\\xeb\\x0f\\x75\\x52\\x69\\x12\\x04\\x4c\\x3e\\xa6\\x82\\x97\\x80\\xe6\\x57\\xf8\\x17\\xc5\\x59\\x7d\\x46\\x61\\x08\\x0d\\x90\\x34\\xc9\\x77\\x87\\x22\\x41\\x8f\\x2c\\x3a\\xee\\xca\\xef\\x6b\\x69\\x0c\\x5b\\xd3\\xb5\\x93\\x70\\x10\\x86\\x98\\x8e\\x43\\x40\\xae\\xc3\\x4e\\x01\\x72\\x75\\x8e\\xb2\\x40\\x87\\xd0\\x3a\\x8f\\x76\\xe7\\xcb\\xca\\x53\\xaa\\xaf\\xc4\\xd2\\x15\\x5c\\x75\\x32\\xab\\x54\\xbe\\x48\\x87\\x26\\x53\\x06\\x6f\\xa1\\xfd\\xd5\\x4a\\xcf\\xe9\\xda\\xae\\xca\\x35\\x6c\\x29\\x0e\\x6b\\xe6\\x33\\x55\\xb6\\xd9\\xfc\\x52\\xeb\\x5e\\x4f\\xcc\\xbb\\xc6\\x08\\x35\\x07\\x13\\x2d\\xe4\\x85\\xbf\\xae\\x9f\\x42\\xe1\\x97\\x12\\x23\\x2b\\x71\\x64\\x02\\xc2\\x3f\\xea\\x74\\xef\\xa6\\x9d\\x73\\xc8\\xc2\\xe3\\xa8\\x66\\x2b\\x8b\\x65\\xb0\\xfd\\x00\\x77\\x41\\x01\\x3e\\x1f\\x6e\\x3c\\xfe\\x43\\x45\\xd5\\xc8\\x30\\x68\\x2f\\xe6\\x00\\x21\\xd7\\x08\\xe1\\x0a\\x9e\\x9f\\x40\\x52\\xff\\x7a\\x6a\\xbf\\x28\\xac\\xb1\\xd6\\xb5\\xfb\\x03\\x8e\\xed\\x3f\\x72\\x51\\x3c\\x35\\x5b\\xbf\\xd5\\xc2\\x27\\x4f\\xa8\\x5f\\xc4\\xf4\\x46\\x97\\x4b\\x2d\\x1b\\xc0\\x36\\x50\\x7a\\x1e\\xb5\\xfc\\xf5\\x5d\\xbd\\x44\\x21\\x0e\\x53\\x82\\x74\\xde\\x80\\x8b\\x90\\x0b\\xf1\\xc0\\xfc\\xc0\\x24\\x12\\x70\\xdb\\x8d\\xbd\\xcd\\x88\\x34\\x9d\\x67\\x22\\x4f\\x08\\x7e\\x5f\\x07\\xf6\\x99\\xb0\\xba\\xe6\\x8b\\x2e\\xbc\\x9a\\x4e\\x27\\xc7\\x0d\\x3a\\xc7\\xd9\\x96\\xfa\\x7d\\x4d\\xab\\xd5\\x68\\x37\\x8e\\x3f\\x93\\x90\\x5b\\x1c\\x89\\xc6\\x52\\xd3\\x84\\xc1\\x6c\\x2b\\xcb\\x1c\\x98\\x44\\xc3\\x8f\\x71\\xbb\\x13\\xe0\\xc6\\xa2\\xea\\x95\\xb6\\x12\\xe3\\x90\\xc5\\xf8\\x6d\\x24\\x8e\\xa5\\x31\\xf2\\xec\\x6f\\x63\\x9a\\x40\\x2d\\xfa\\xcc\\xf3\\x72\\x17\\x00\\x53\\x44\\x03\\x07\\x45\\xd1\\xf1\\xe5\\x20\\xcc\\x19\\x5d\\xaf\\xdd\\x7f\\x29\\x5f\\x37\\x7b\\x8d\\x61\\x47\\x16\\x70\\x38\\x36\\x21\\x9b\\xb7\\xb0\\x9f\\xea\\x7a\\xae\\x9a\\xc3\\x3e\\x42\\xdc\\xab\\x65\\xcc\\x61\\x42\\xfc\\xd8\\xce\\x15\\xe9\\x77\\x17\\xfd\\xb3\\x3e\\x95\\x38\\xc4\\x4f\\x6c\\xd9\\xc1\\xc6\\x5d\\xb6\\x27\\x51\\xf5\\x52\\xf8\\x70\\xf1\\x01\\x42\\xc9\\x6f\\x9d\\xf1\\x85\\x5a\\xbb\\x39\\xe4\\x27\\x06\\xa5\\x63\\xab\\x15\\x45\\x11\\xfd\\xce\\x68\\x7c\\x95\\x76\\xf9\\xed\\xc3\\xb4\\xba\\x55\\x34\\x6c\\xe6\\x68\\x02\\xff\\xfe\\xf4\\xb1\\xb5\\xe1\\x20\\x15\\xce\\x8b\\x57\\xde\\x54\\x58\\xca\\xa0\\xda\\xf3\\x41\\x96\\x81\\x28\\x58\\x42\\x88\\xc2\\xf2\\x7c\\xbf\\xb7\\x6e\\xab\\x28\\x6b\\xac\\x5f\\x66\\xaa\\xd0\\x04\\x9e\\x0c\\xa6\\x0a\\x90\\x14\\xe1\\x79\\x01\\xc4\\x13\\x0e\\x83\\xce\\xae\\xb4\\xc2\\x71\\x3e\\x97\\x1a\\x23\\x5e\\xff\\x99\\x5a\\x81\\x3a\\xe4\\xea\\x64\\xa5\\x83\\xff\\xde\\xfd\\xac\\x82\\xac\\x76\\xea\\xf4\\xd4\\x7c\\x4a\\xc8\\x25\\x0f\\xcb\\xaf\\xd6\\xb8\\x8f\\xae\\xb4\\x80\\x15\\xf5\\xb4\\x2b\\x53\\x34\\xa5\\x0b\\x31\\xd4\\x50\\x2e\\xa4\\x91\\xda\\x90\\xdc\\xe9\\x3c\\x08\\xfd\\x56\\xf5\\xc5\\x8e\\xed\\xb3\\x79\\x16\\x6a\\x23\\x76\\x2b\\xe5\\xe4\\xad\\xea\\xa6\\xf4\\xae\\x1c\\x24\\xe0\\xca\\xc4\\xdd\\xca\\x03\\x83\\x45\\x85\\x60\\xcd\\xc4\\x8b\\x8c\\xd1\\xf4\\x2a\\x3b\\xa2\\xf6\\xff\\xb6\\x07\\x79\\x09\\xfc\\xb2\\x94\\xad\\x1e\\xf4\\xa4\\x4c\\x22\\xec\\x4b\\x39\\x87\\xdd\\xbe\\xef\\x32\\x5b\\x98\\xce\\xd5\\x68\\x15\\xea\\x7d\\x5f\\xcc\\xf5\\xaf\\xdf\\xe9\\x8e\\x0e\\x6d\\x92\\x0f\\x7a\\xda\\x2e\\xb5\\xc9\\x16\\x24\\xc7\\x6c\\xbb\\xa2\\x99\\x3a\\x9c\\x7a\\x55\\x02\\x1d\\x12\\x7a\\x66\\x7b\\x39\\xe2\\x35\\xdf\\x4f\\x81\\xde\\xe7\\xdd\\x14\\x28\\x98\\x77\\x8d\\xbd\\x92\\x13\\x5b\\x70\\xb3\\xac\\xf5\\x9f\\x6c\\x29\\xa2\\xc9\\xd4\\xa7\\x00\\x6e\\xf1\\x1a\\x91\\x8b\\x3a\\x29\\x06\\x26\\x4a\\x15\\xd6\\xb5\\x29\\x30\\x8c\\xbc\\x89\\xf8\\x56\\x01\\xfc\\x1e\\xa1\\x31\\x4d\\x67\\xf7\\x56\\x6c\\xf1\\x09\\x16\\x5c\\x7f\\x92\\xde\\x1a\\x18\\xd7\\x0d\\xeb\\xe0\\x24\\x34\\x9d\\xb3\\x56\\x0a\\x6e\\x52\\x7e\\x2a\\xc3\\xe0\\x67\\x89\\x46\\x87\\x04\\xe6\\xb8\\xf1\\x87\\x1f\\x16\\xba\\xe9\\x82\\x73\\x92\\xb4\\x18\\xf1\\x08\\x6c\\xc4\\x97\\x08\\x6c\\xed\\x14\\xb1\\x24\\x9d\\x6d\\x87\\x94\\xf2\\x3b\\xb8\\x77\\x9d\\x41\\x86\\x48\\xf2\\x15\\x56\\x56\\xa6\\xfd\\xa7\\x44\\x0c\\x56\\x28\\x4d\\x9b\\x21\\x88\\xfa\\x7d\\x17\\x36\\xbc\\xcc\\x9c\\xff\\x0b\\xe5\\xb1\\xe1\\xf5\\x51\\xff\\x81\\x37\\xff\\x59\\x66\\xed\\x9d\\x0f\\x7f\\x01\\xc3\\xdf\\xf2\\x98\\xe9\\x10\\x2f\\xfb\\xd3\\x24\\xbf\\xca\\x5f\\xfe\\x09\\x68\\xe6\\x6f\\x9d\\x82\\xf4\\x87\\xd3\\x03\\x93\\x4f\\x27\\xf7\\x8b\\x28\\x37\\x8e\\xb7\\x2c\\x38\\x27\\x29\\x62\\xa5\\xf7\\x35\\xd7\\x39\\x2e\\x5d\\x33\\x3f\\xd8\\x6d\\xe1\\x67\\x26\\x9c\\x17\\xa1\\x65\\xb9\\x2d\\x31\\xa4\\x88\\x0a\\x41\\xe1\\x36\\xf7\\x18\\x96\\x0a\\x91\\x9b\\x3d\\x7c\\x4e\\x74\\xcb\\xd7\\x3c\\x73\\xf9\\x21\\xbe\\x51\\x3f\\x73\\x9a\\xff\\xb2\\xe4\\x1f\\x80\\x42\\x6b\\xb8\\xcf\\xb4\\x56\\x4b\\x98\\xfc\\x4d\\xe5\\x32\\x55\\xce\\x3f\\x98\\xb4\\xd2\\x2a\\xe6\\xfc\\xe9\\x19\\x0b\\x55\\xbf\\x2c\\x93\\x86\\x1c\\x1d\\xca\\xc1\\x01\\xb5\\xe1\\x6c\\xf0\\x99\\x91\\xc5\\xde\\xfa\\x33\\xf8\\xd5\\x10\\x56\\xd9\\x34\\xbb\\x4b\\x47\\x7b\\x65\\x20\\xd4\\xc7\\xae\\x22\\xea\\x7f\\xb3\\x10\\x9d\\xe7\\xf4\"},\n{{0x4b,0x8e,0xd2,0x97,0x31,0xf1,0x04,0x79,0x5e,0x97,0xde,0xe7,0xc8,0xb4,0x01,0xa0,0x2a,0xfa,0xa9,0xa7,0x95,0xe6,0x13,0x35,0x3d,0x2b,0x95,0x00,0x17,0x65,0x02,0x7a,},{0xf2,0x22,0x98,0x21,0x0b,0x09,0xfd,0x61,0x7f,0xc8,0xb3,0x50,0x74,0xca,0x18,0x01,0xe6,0x07,0x5d,0xc9,0x2a,0x8f,0x50,0x34,0x4b,0x80,0xe8,0x54,0x05,0xa0,0x38,0xf5,},{0x23,0x45,0x88,0x66,0x86,0xeb,0x39,0xb5,0x19,0x9c,0xaa,0xa9,0x61,0x5b,0xc6,0xb4,0x89,0x6f,0x07,0x6e,0x8b,0xd7,0x36,0xc0,0x03,0x8a,0x65,0x17,0xf9,0xc2,0xb1,0x67,0xe7,0x59,0xf3,0x73,0x72,0x26,0x8a,0x69,0x7e,0x9b,0x78,0x60,0x5f,0x2e,0xd9,0x47,0x25,0xf6,0x90,0x5a,0x79,0x00,0x15,0x3f,0xc9,0xe8,0xbe,0xed,0x31,0xff,0xae,0x05,},\"\\xcb\\xb5\\xf1\\x3a\\x0e\\xf2\\x83\\x7b\\x80\\x5d\\x3b\\x78\\x51\\x09\\xf9\\xf2\\xe0\\xd0\\xa0\\x17\\xbf\\xe7\\x69\\x2d\\x91\\xec\\x23\\xdd\\xab\\x78\\x17\\x33\\x0b\\xef\\x24\\x7f\\xd9\\x1a\\xb2\\xc7\\x7d\\xd4\\x41\\x25\\x19\\xcb\\xd3\\x84\\x75\\xce\\x0c\\xb3\\x9b\\x14\\x80\\x09\\x2b\\xc7\\x38\\xd4\\x15\\x2b\\x8a\\x6d\\x55\\x24\\x8e\\x3b\\x9f\\x32\\xcd\\xcd\\x15\\xec\\x5d\\x05\\x9e\\xc3\\xc8\\x84\\x75\\x54\\xee\\x47\\x00\\x53\\x94\\x97\\x4d\\x8e\\xb2\\x35\\x92\\xd1\\x7f\\x5a\\x39\\x6e\\x3c\\x19\\xf8\\xe8\\x98\\x37\\x06\\x79\\xfe\\xf5\\x31\\x8c\\x4d\\xd2\\x99\\xc6\\x21\\x7d\\x6a\\xbc\\xc9\\xb6\\x1a\\x5b\\x2d\\x0c\\xfe\\xf6\\x95\\xd1\\x70\\xca\\x20\\xa8\\x3d\\x6f\\xd3\\xc6\\x66\\xc8\\xfd\\x1c\\x10\\xad\\x97\\x0e\\x2f\\xa6\\xaf\\x10\\xff\\x0e\\xd0\\xcb\\xfe\\x75\\x22\\x46\\xd0\\x3f\\x3a\\x3c\\x60\\x32\\xdb\\xb3\\x19\\xbc\\xfd\\xac\\x4d\\xaf\\xc5\\x0b\\xc3\\xe6\\xbf\\x59\\x5f\\x49\\x1d\\xec\\x38\\x8b\\x34\\x41\\xb8\\xce\\xe0\\xdf\\x91\\xf5\\x5c\\xc7\\x80\\x7d\\x07\\xf8\\xf5\\x41\\xed\\x73\\x22\\xff\\xc3\\x9d\\x18\\xf8\\x95\\x60\\xe4\\x12\\x3a\\xec\\x1d\\x77\\x96\\x9c\\xf1\\x87\\x77\\x86\\xf4\\xcf\\x94\\xb1\\x77\\x0b\\x10\\x90\\x65\\x5e\\x8c\\x72\\xee\\xce\\xa4\\x57\\x2e\\x46\\xf5\\x80\\xf9\\x63\\x96\\x6d\\xb2\\xa1\\x08\\x5e\\xea\\xbc\\x57\\xbf\\x4a\\x84\\x72\\x4b\\x9c\\x85\\x99\\xa4\\x33\\xab\\xf5\\x8b\\xca\\x80\\x40\\x91\\xd3\\xd5\\xe6\\xe5\\x04\\x8e\\xc2\\x7b\\xf8\\x12\\x9b\\x67\\x0c\\xc2\\xc8\\x8d\\x9c\\xac\\x47\\x18\\x59\\xf4\\x69\\xb9\\x18\\xf3\\xf6\\xd7\\x0f\\x7d\\x66\\x63\\x50\\x1f\\xfb\\xef\\xef\\x02\\x6d\\x79\\xea\\x70\\x92\\x7c\\xcf\\x60\\x75\\xee\\x51\\x05\\x42\\x33\\x21\\xe1\\x1a\\xee\\x9a\\xd1\\x6f\\x98\\x7e\\xfb\\xdd\\x00\\xb6\\x2a\\xff\\x69\\x8e\\x52\\x1a\\xdf\\x92\\x03\\xb1\\x5e\\x9f\\x0f\\x3a\\xd0\\x7d\\xca\\xd9\\xdd\\xcc\\xaa\\xe9\\xb4\\x90\\x24\\x7f\\x12\\xc3\\x11\\xde\\xe6\\xb7\\x3b\\x8f\\x91\\x24\\xfd\\xce\\x12\\x99\\xb4\\x7f\\xb1\\x91\\x4c\\xee\\x7e\\x3a\\x07\\x81\\x4e\\x31\\x2c\\x3c\\xe5\\x69\\x27\\x67\\x2c\\x51\\xb3\\x18\\x59\\x80\\xcd\\xe5\\x7f\\x3a\\x75\\x9b\\x50\\xbc\\xfc\\x4c\\xb0\\x75\\x3b\\x95\\x4d\\x97\\x13\\x5d\\xeb\\x2a\\x05\\x32\\xe9\\x8b\\x66\\xf3\\x9a\\x7c\\x08\\xcf\\x4d\\x54\\x85\\x39\\xe2\\xeb\\x9f\\x42\\x2f\\x66\\x49\\x65\\x88\\x93\\xa7\\xc3\\xc2\\x5a\\x4f\\xc9\\x01\\xf8\\xc3\\x98\\xb8\\xc7\\x27\\x33\\x91\\x1a\\x00\\x72\\xed\\x6b\\xd2\\xf4\\x18\\x93\\x89\\xae\\x10\\xa8\\x14\\xf6\\x48\\xd7\\x1f\\x69\\xc3\\x7e\\x82\\x95\\x78\\x44\\x28\\x18\\x3b\\x93\\xc8\\x01\\x3b\\x96\\x4a\\x9f\\xef\\x86\\xb4\\x8f\\x48\\x93\\x16\\xbc\\x22\\x2e\\x96\\xb3\\xbd\\x15\\xff\\x14\\x9b\\x96\\x82\\x03\\x29\\x55\\x1c\\x15\\xe0\\xd0\\x95\\xd1\\x56\\x9b\\x1e\\x21\\x31\\xc7\\x87\\x51\\x56\\x5c\\x30\\x41\\xf2\\x97\\x85\\x39\\x5b\\x97\\x15\\x13\\x17\\xf6\\x2e\\x35\\x82\\xe4\\x07\\xb1\\x64\\x9e\\x60\\xd0\\x3a\\x85\\x99\\x12\\x0a\\x30\\x2a\\x46\\x95\\xfa\\x86\\x2b\\x41\\x20\\xf9\\x4d\\x22\\xec\\xae\\x72\\x39\\x8d\\x20\\x94\\xd1\\x08\\xad\\x2d\\xbc\\x1b\\x95\\x97\\x35\\x90\\x21\\x42\\xaa\\x5f\\xe6\\xe7\\x99\\x65\\x59\\xf6\\xf6\\x01\\x44\\x8a\\xea\\x02\\xf3\\x56\\xf8\\xdc\\xdd\\x14\\x43\\x40\\xeb\\x36\\x19\\xf9\\x86\\x5b\\xf7\\x67\\x2a\\xea\\x32\\x6c\\x4e\\x93\\xc9\\x9f\\x0e\\xd1\\xf9\\xed\\x86\\x6b\\xe1\\x5d\\x3a\\xf2\\x67\\x5f\\x6d\\xd6\\xe2\\x96\\x60\\x2c\\xa3\\x73\\xa8\\x15\\xb0\\xbe\\x46\\xbc\\x2a\\x3f\\xbb\\xa0\\x6b\\x88\\x05\\xc7\\x31\\xfe\\x08\\x00\\x7d\\xaa\\x06\\x05\\x09\\x61\\xb2\\x4d\\x14\\x69\\x3a\\x72\\x89\\x8c\\xcf\\xb8\\xb8\\xfe\\xdc\\x60\\xa4\\xee\\xf8\\xff\\x79\\xb6\\xdd\\x75\\x92\\x59\\x18\\x33\\xb5\\x76\\xef\\x48\\x29\\x4e\\x5e\\x04\\x85\\x94\\x2e\\x57\\xc1\\x19\\x60\\x2e\\xdd\\xf8\\x8b\\x1f\\xae\\xa5\\x17\\xf2\\xfc\\x2e\\x3d\\x14\\xd2\\x46\\xa5\\x2c\\xbd\\x71\\xa1\\x08\\xc6\\x6b\\x6c\\xc4\\xf2\\xd4\\x58\\x04\\xa2\\x82\\xec\\xed\\xb1\\xb0\\xad\\x3d\\xc3\\xb4\\x88\\x0a\\xb2\\xff\\x78\\xb8\\xdd\\xde\\x48\\xf7\\x46\\x6c\\x14\\xfe\\xd3\\x49\\xe9\\x5b\\x50\\x53\\xab\\xf1\\xbf\\x09\\x91\\x12\\x60\\x31\\xd9\\x75\\x47\\xd1\\x43\\xc2\\xae\\x16\\x49\\x28\\xb6\\x1c\\x07\\x08\\xaf\\x8c\\xa3\\xe4\\xf5\\x51\\x54\\xd1\\x3d\\x75\\xe9\\x7d\\xb4\\xba\\x3e\\x69\\xd3\\x6e\\x9b\\x37\\x08\\x23\\x68\\xc2\\xf7\\x21\\xbd\\x3f\\x95\\x12\\x6a\\x1e\\x00\\x4e\\xb2\\xa1\\xbf\\x26\\x83\\x43\\xae\\x21\\xd2\\x99\\x50\\x44\\xa2\\xca\\xdd\\x67\\xff\\xac\\x9e\\x15\\x38\\x17\\x5b\\x3c\\xc4\\x4d\\xb5\\xd2\\x6f\\x1d\\x5c\\xc8\\x9c\\xa0\\xe1\\xc1\\xee\\x85\\x37\\xa8\\xa9\\x1d\\x32\\x4c\\x2e\\x02\\xe1\\x8b\\x9f\\xb9\\x73\\x0d\\x6d\\xda\\x55\\xf7\\x2d\\x84\\x33\\x89\\x69\\x3e\\xbf\\xcb\\xa7\\xfb\\xe1\\xa0\\xbc\\xff\\xb9\\xaa\\x28\\x4f\\x4a\\xe6\\x6f\\x44\\xa8\\xb8\\x93\\x02\\x98\\x3b\\x22\\x73\\x6d\\x0c\\x72\\xd6\\xa0\\x44\\xe4\\x29\\x16\\x24\\x24\\x3a\\x4e\\x0c\\xe6\\x5d\\x5e\\x53\\x46\\xd6\\x7f\\xed\\x37\\x60\\xdd\\xb0\\xc5\\x10\\xb5\\x0f\\xf3\\xee\\xf0\\xa1\\x8a\\x26\\x7d\\xe7\\x30\\x47\\x6d\\xd8\\x2d\\xff\\x70\\x72\\xcb\\xa0\\x98\\x48\\x25\\xa0\\x04\\xdd\\x4b\\xcd\\x8c\\x37\\xfd\\xaf\\x1f\\x68\\x3d\\x1d\\x93\\x80\\xe1\\x35\\xa9\\x5d\\x24\\xb8\\x9f\\xad\\x0b\\xe9\\x41\\xc5\\x48\\x25\\x1b\\xec\\x90\\xcc\\xae\\x01\\x5b\\xc0\\x56\\x7d\\xa8\\x4b\\x37\\x1e\\x50\"},\n{{0x08,0x0d,0x7f,0x76,0x18,0x2e,0xe6,0xbc,0xea,0x89,0x4b,0x1e,0x00,0x60,0x55,0x8b,0x3b,0x12,0x5a,0x34,0x99,0xdf,0x39,0x73,0xb8,0xdd,0x66,0x93,0x40,0x8e,0xe4,0x69,},{0x41,0x24,0x71,0x3d,0x7c,0x2d,0xf5,0x0f,0x93,0x05,0x57,0x30,0xd1,0xb2,0x81,0xda,0xec,0x30,0x28,0xcf,0x2c,0x1e,0x48,0x58,0xd1,0x28,0x70,0x7a,0x23,0xd6,0xde,0xb0,},{0x18,0x5f,0xb1,0xb6,0xd8,0x6d,0xc4,0x44,0x48,0x10,0xcf,0x5e,0xc6,0xfe,0xf0,0xab,0xda,0xfa,0x2a,0x6f,0xcc,0xb4,0x5d,0x11,0xcf,0xb5,0x4b,0xa1,0x6a,0x68,0x43,0xf2,0x80,0xd3,0x80,0x47,0x10,0x02,0xae,0x0d,0x71,0x50,0x85,0x56,0xc7,0x8e,0xd5,0x41,0x5e,0x42,0x33,0x8c,0x16,0x1f,0x2b,0x62,0x1e,0x74,0xcb,0xa4,0xf6,0xa1,0xd4,0x02,},\"\\xab\\x0a\\x6d\\xe2\\x35\\x1b\\x9a\\x84\\x98\\xf6\\x82\\x72\\xd9\\xa0\\xa7\\xa0\\x57\\x36\\x5d\\x34\\xef\\xa0\\xfd\\x34\\xcc\\x3b\\xf8\\x62\\xe4\\x9c\\xdc\\x30\\x2b\\x2b\\xd5\\xa3\\x0d\\x60\\x1a\\x13\\x0e\\xc4\\x03\\x2f\\x54\\x1a\\xe6\\xcb\\x7b\\xa9\\x7f\\x84\\x18\\x3d\\x2d\\x25\\x81\\x28\\x7c\\xa7\\x01\\xd7\\xd7\\xa9\\xab\\xa1\\x10\\xce\\x58\\xb9\\x46\\xac\\x08\\x24\\x30\\x5d\\xf7\\x92\\x9f\\x3d\\xd7\\xfc\\x9c\\x87\\x32\\x23\\x86\\x37\\xe2\\xb1\\x81\\xd6\\xe1\\x16\\xc7\\xf6\\x6e\\x32\\x26\\xaa\\xe3\\xce\\xd1\\x61\\x02\\x62\\xda\\x1a\\x0a\\x4a\\xa5\\x0a\\x1b\\x94\\x43\\xec\\x82\\x83\\x29\\xe4\\x73\\x4d\\x28\\xfc\\x25\\xab\\x9c\\x1d\\xe9\\xb8\\x98\\x7e\\x5d\\xc0\\xc8\\x13\\x19\\x16\\xc5\\xf1\\x89\\x28\\x70\\x4a\\x71\\xe8\\x06\\x22\\xb1\\x49\\x2b\\xf2\\xfe\\xc5\\xd4\\xb6\\xdb\\xe4\\x15\\xc8\\xaf\\x2c\\xe3\\xef\\x10\\x9b\\x34\\xdd\\x5e\\x64\\xd5\\x68\\x46\\xf0\\x85\\x93\\x5a\\x4a\\x5d\\x10\\x73\\x49\\x7f\\xb3\\xfb\\x8f\\xb7\\x7e\\x8f\\x5d\\x5e\\x3f\\xd0\\x0c\\x30\\x65\\x2e\\x3c\\x5c\\xde\\x40\\xa3\\x35\\xd1\\x4e\\x54\\x25\\xff\\xba\\x94\\x28\\x85\\xed\\x17\\xbd\\x36\\xdf\\x50\\x69\\x24\\x23\\x7e\\x75\\xbe\\x84\\xda\\x82\\x19\\x50\\xb9\\x14\\x24\\xfd\\x9f\\x16\\xc1\\xb2\\xc7\\x83\\xe9\\x0f\\x8c\\xc2\\xcc\\xc7\\x98\\x0c\\xe9\\x15\\xc7\\x69\\x6b\\x06\\xa5\\x86\\x73\\x02\\x59\\xe6\\xd1\\x45\\x88\\x58\\x2b\\xab\\x9d\\x2a\\x39\\xf6\\x9e\\x98\\xe7\\xf2\\xae\\x9b\\xc0\\xc2\\x61\\x0d\\x7e\\x04\\x57\\xf2\\x6a\\x5d\\x66\\x54\\x3b\\xe1\\xd6\\x5b\\x79\\xc4\\xb7\\xc0\\xd8\\xee\\x73\\xd0\\xc2\\xb6\\x7b\\xf5\\x0d\\x80\\x82\\xf0\\x06\\xf9\\x6d\\x11\\x95\\x05\\x87\\x31\\x93\\xdf\\xdb\\xd4\\x32\\xbb\\x1c\\x9e\\xe0\\xd0\\x3e\\xe5\\x4c\\xf9\\x5d\\x20\\xe9\\x1f\\x7f\\x3a\\x06\\x9b\\x62\\x56\\xf4\\x21\\x59\\xcd\\xc1\\xe6\\x00\\xa9\\xa1\\xc2\\xf5\\xa8\\xe4\\x67\\xd5\\xc2\\xa9\\xdf\\xf8\\x73\\x0e\\x6b\\xe8\\x26\\xfb\\x2a\\x1e\\x64\\x48\\xbf\\xc4\\xfc\\xaa\\xaa\\xcd\\xaa\\x76\\x62\\x35\\x1f\\xaa\\xdc\\x91\\xf7\\xca\\xa7\\x73\\x7d\\xc8\\x2e\\xc3\\xd4\\xb2\\x19\\x36\\xbc\\xa1\\xbd\\x7c\\xe3\\x73\\xad\\x66\\x26\\x4a\\xf1\\x32\\x41\\x16\\x75\\x49\\x31\\x8c\\xdd\\x78\\xe5\\x63\\x82\\x7f\\x85\\xea\\xb2\\x0e\\x0b\\x42\\xbc\\x55\\x4a\\x71\\x2c\\x00\\x51\\xa5\\x01\\x0d\\xc2\\xf2\\xc7\\xdb\\x85\\xac\\xf6\\x54\\x9f\\x9d\\x10\\x2c\\x90\\x3c\\x1b\\xe5\\xa0\\x52\\x92\\xc3\\x0f\\x21\\xab\\x1b\\x2b\\x8a\\xbc\\xbb\\xf1\\x04\\x72\\x3c\\x63\\xf0\\xeb\\xc5\\x54\\xfb\\xee\\x42\\x02\\x0c\\xcb\\x14\\xf4\\x43\\x47\\x8d\\xf7\\x7c\\x6a\\xa4\\x4d\\xb9\\xa5\\x7f\\x8f\\xd4\\x4d\\x97\\xea\\x09\\x9e\\x47\\x74\\x82\\x3e\\xbe\\x12\\x3f\\xcf\\x50\\x16\\xa6\\x6e\\x83\\x7b\\x2f\\x65\\xc1\\x84\\x5e\\x68\\x1e\\xe2\\xa7\\x05\\x9f\\xb1\\x29\\x0c\\xd0\\xa9\\x33\\x12\\x98\\x55\\xcc\\x83\\xc8\\x7e\\x0b\\x3b\\xb6\\x1e\\x44\\x13\\x4a\\xdd\\xd3\\x63\\x78\\x50\\x24\\x6c\\xdc\\xda\\xa2\\x9f\\x15\\xc4\\x1a\\x3d\\x4d\\xd2\\xc1\\xd7\\x60\\x06\\x21\\x24\\x33\\x31\\x24\\xcf\\x09\\x14\\x35\\xfd\\xce\\x71\\x1f\\x52\\x31\\x63\\x68\\x99\\x9b\\xef\\xa4\\xc8\\x0a\\x39\\xb3\\x75\\x0e\\x4e\\x38\\x62\\x89\\xe4\\xe2\\x85\\x5e\\x97\\xb6\\x19\\xb0\\xa2\\x57\\x99\\x91\\x24\\x08\\xb7\\xd5\\x8a\\x4d\\xd9\\x81\\x95\\x71\\xe9\\x01\\x43\\x0f\\x6d\\x55\\x55\\x29\\xdd\\x63\\x0a\\x18\\x67\\x45\\x9b\\x80\\x22\\xd0\\xe0\\xad\\xd6\\xab\\x4f\\x12\\xf6\\x0b\\xaa\\xc7\\x59\\x79\\xbb\\xff\\x7f\\x62\\x58\\xd2\\x8d\\x67\\x60\\xb1\\xff\\x24\\x3c\\x39\\xe4\\xbb\\xd6\\xcf\\x9b\\xea\\x57\\x2a\\x9c\\x08\\x2d\\x05\\xad\\xcf\\xd4\\xcc\\xf9\\xfa\\x02\\x6f\\x2c\\x90\\x4b\\x6e\\x78\\x2e\\xd7\\x09\\xdf\\x77\\x48\\xa3\\x07\\xcd\\x2d\\xc3\\xa0\\xfc\\x41\\x23\\xdf\\x58\\x0c\\xbf\\x49\\xe0\\x5c\\xee\\xab\\xc9\\xf3\\x9e\\x57\\xb7\\xf3\\x00\\x90\\x5d\\x8b\\x31\\x00\\x91\\xfb\\x95\\x3f\\x3d\\xef\\x36\\xde\\xb3\\xe8\\xbf\\x37\\x2f\\x59\\x16\\xb5\\x15\\x97\\xdf\\x02\\x4c\\xe8\\x5c\\xc4\\xc3\\x6e\\xab\\xdc\\x58\\x0b\\x5c\\xf1\\x52\\x99\\x46\\x48\\xf1\\xd7\\xf3\\x5f\\xed\\x5c\\xd1\\x0f\\x6e\\x29\\x49\\x16\\x1a\\x33\\x59\\xb3\\x03\\x4d\\x45\\x0e\\xa6\\xf6\\x1c\\xdf\\x1d\\x5a\\xf7\\x6d\\x40\\x10\\x2b\\x60\\x29\\x4f\\x4e\\x49\\x07\\x82\\x49\\x02\\x6d\\x62\\xfe\\x35\\xfd\\xf2\\x24\\x92\\x8b\\x0c\\x49\\xba\\x2b\\x53\\x39\\xeb\\xb1\\x92\\xc5\\xab\\x7f\\x05\\xcd\\xb9\\x46\\xe3\\x7d\\x67\\x1a\\x4a\\x5e\\xf2\\xa5\\x82\\x72\\x20\\xb4\\x43\\x8c\\xbd\\xa0\\x57\\x36\\x29\\x28\\x06\\x64\\x8f\\x5b\\xdd\\x52\\x42\\x0f\\xa7\\x6b\\x84\\xa6\\xad\\xdb\\x12\\x63\\xeb\\x0c\\x50\\x0e\\x81\\x56\\x6d\\x71\\x8d\\x50\\x66\\x02\\x6d\\xa0\\x97\\x05\\x4a\\x86\\x63\\x10\\x16\\xdd\\xfb\\x70\\x6a\\x56\\x77\\xd5\\x02\\xef\\x84\\xaa\\x73\\xb5\\x86\\x3b\\xc4\\x0f\\xdc\\x42\\xcb\\x73\\x21\\xac\\x5f\\x00\\xe2\\x92\\x8f\\xed\\x7b\\x04\\x18\\x59\\x6d\\xb4\\xb6\\x15\\x1d\\xd6\\xbc\\x6e\\x81\\x8f\\x02\\x53\\x55\\x2b\\xf1\\x37\\x41\\xe6\\x96\\x80\\xe9\\x66\\xc9\\x2c\\x29\\x3e\\x13\\xc9\\x0f\\x7c\\x99\\x99\\xbd\\x1e\\xc6\\xaf\\xe3\\xb4\\xaf\\xfb\\x47\\x34\\x0c\\x89\\x85\\x98\\x29\\xfe\\xb5\\x99\\xdb\\x3a\\x8c\\x3d\\x33\\xfc\\x8d\\x45\\xfa\\x53\\x81\\x07\\x8a\\xe9\\xf7\\x5d\\x85\\xc1\\x49\\x6f\\x5f\\xb5\\xad\\xdf\\x4e\\x40\\x09\\xb7\\x64\\xbc\\xc9\\x11\\x8e\\x92\\x75\\xdc\\x72\\x19\\xf2\\x81\\xd0\\xd1\\xef\\x71\\x58\"},\n{{0x49,0x84,0x6a,0xda,0x7a,0xe6,0x84,0x97,0x1d,0xd9,0x17,0x10,0x79,0x90,0x90,0xb3,0x7f,0xe5,0xad,0x56,0x1d,0x72,0xa3,0x5f,0x2e,0xfb,0x40,0x5f,0x19,0x6a,0xb0,0xec,},{0x4d,0x37,0x0a,0x81,0x94,0xa3,0x04,0x5b,0x09,0xb3,0xbd,0xaf,0xa2,0x7f,0xb9,0xac,0xd5,0x99,0x43,0xa5,0x4a,0xe1,0x4c,0xba,0xaa,0x22,0x00,0xeb,0x0f,0x3d,0xa7,0x1b,},{0xa5,0xc8,0x09,0xd1,0xca,0x4c,0xfb,0xb3,0xdc,0x70,0xa2,0xa3,0xa1,0xf2,0x67,0xc2,0x73,0x30,0x42,0x07,0x19,0xe3,0x60,0x62,0x18,0xa1,0x47,0x1c,0xac,0x57,0xcb,0x67,0x4b,0x9b,0x42,0x82,0x7c,0x5e,0x9a,0x7b,0x25,0xc8,0x13,0x9c,0x13,0xdf,0xf6,0x0b,0xde,0x6c,0x2d,0xba,0xd3,0xa8,0x36,0x11,0x97,0xc1,0xfb,0x19,0xd2,0xcd,0x52,0x0b,},\"\\xab\\x39\\x8d\\x94\\xf9\\x28\\xb1\\xd4\\x21\\x02\\xa3\\xe5\\x13\\xcc\\xd1\\xcb\\x10\\x89\\x90\\x11\\x03\\x94\\x10\\xa8\\x88\\x8b\\xba\\x26\\xdf\\x1a\\x03\\x72\\xbd\\xba\\x0c\\xe8\\xd8\\x54\\xaf\\x51\\xe9\\x33\\x0a\\x8d\\xaa\\x93\\xc1\\x05\\x80\\x90\\x6a\\x8a\\xc7\\x2d\\x29\\x4a\\xeb\\x95\\x66\\xfe\\x1c\\x78\\xba\\x84\\x71\\xc0\\x6c\\x4a\\x8a\\x75\\x11\\x3b\\x34\\x89\\x3f\\x62\\x76\\xed\\x81\\x32\\x92\\x05\\x3b\\x95\\x6a\\x46\\x5d\\x84\\x7d\\x2e\\xce\\x86\\xe2\\xda\\x8a\\x9f\\x0f\\xe3\\xdb\\x52\\xa5\\xaa\\xc7\\x46\\xef\\x96\\x48\\x5e\\xf8\\x1f\\x13\\x62\\xb5\\xa4\\x2e\\xaa\\xee\\x1f\\xbb\\x06\\x46\\x70\\x44\\x71\\xa2\\x1b\\xf7\\x63\\x67\\xbe\\xaa\\x07\\x81\\x2b\\x3d\\x32\\xad\\xcd\\xed\\xde\\xd7\\x53\\x9e\\x3a\\x50\\x1b\\x83\\xc0\\x5b\\x19\\xa4\\x9b\\x52\\x0e\\xde\\xdc\\x9a\\x78\\xa5\\xfc\\x2d\\x50\\x12\\xf1\\xd4\\xe3\\x81\\x84\\x4e\\x79\\x2e\\xd9\\x0b\\x0f\\x57\\xbc\\xe3\\x75\\xc7\\x5a\\x65\\x8b\\x2c\\x78\\xc6\\xff\\x7d\\x9e\\xfc\\xd4\\xbf\\xa3\\x5c\\x47\\x68\\xcb\\xb1\\x95\\xe4\\x82\\x3d\\x9b\\xbd\\x83\\x5a\\x37\\x4f\\xa0\\x4c\\xa1\\xea\\xae\\x9c\\x56\\x6d\\x8f\\xd5\\xaa\\x7c\\xa5\\xef\\xe0\\xdf\\xc3\\x17\\xff\\xfa\\x40\\x9e\\xf1\\x02\\x2f\\x1c\\x3b\\x37\\x6a\\x93\\x5a\\xf5\\x57\\x08\\x3e\\x95\\x28\\x7b\\x07\\xa9\\x8a\\xc6\\xc1\\xb7\\xbd\\x8b\\xb2\\x6b\\x60\\xfa\\x7c\\x4b\\xc9\\x19\\x73\\xb2\\x01\\xb2\\x99\\x22\\xb4\\xb9\\xd0\\x3d\\xd6\\x88\\x2a\\x0b\\xd3\\xb7\\xd9\\xe5\\xb8\\x1e\\xe7\\x4c\\x36\\xbe\\xc6\\x65\\xe4\\x34\\x3c\\x8c\\x9a\\xd3\\x36\\xda\\x38\\x50\\xc9\\xb2\\x69\\x7f\\xe1\\xcc\\xe2\\x9c\\x37\\x86\\x22\\xa3\\x3c\\x24\\x8f\\x44\\x8c\\x88\\xf4\\x8d\\xf0\\x26\\x01\\x43\\xb2\\xa3\\x42\\xf1\\xdd\\xee\\x74\\xd3\\xb9\\x7c\\xa3\\xe1\\x16\\x6b\\x15\\x69\\x93\\xda\\xd3\\x0c\\x49\\xd8\\x10\\xd7\\x40\\x48\\xbc\\x6d\\x46\\x76\\x52\\x00\\x4d\\x7e\\xdb\\x65\\xc6\\xda\\xc3\\xa2\\xc5\\xd3\\x00\\xb9\\x7e\\xe3\\xa1\\x0a\\x9e\\x14\\xb6\\x9f\\x3c\\xad\\x67\\x59\\x72\\x96\\x2e\\x1f\\x8e\\xd9\\x75\\x47\\xad\\xed\\xc4\\x7d\\x1c\\xf3\\x47\\x1e\\xf3\\xb2\\x2f\\xdb\\xf7\\x8e\\x34\\xf3\\x1a\\x3b\\xb7\\x66\\x9c\\x41\\xbd\\x92\\x92\\xc3\\x80\\xbc\\xe9\\xa4\\x2d\\x84\\xbc\\x27\\xac\\x92\\x8b\\x8b\\xfc\\x3c\\x63\\xd2\\x0c\\xcd\\xb4\\x78\\xdf\\x7d\\xdf\\x42\\x1f\\xb1\\xcd\\x90\\x5f\\xfc\\x4c\\x04\\x78\\x6f\\xd9\\xae\\xf0\\x6b\\x89\\x38\\xab\\x8e\\xf5\\x22\\x21\\x7b\\x2c\\x04\\x51\\x5f\\x61\\xa1\\xc3\\x12\\xea\\x83\\x25\\x3f\\x84\\x58\\xc0\\x91\\x8f\\xcf\\xe8\\x74\\xe6\\xe7\\xfb\\x11\\x27\\x5d\\xb2\\xa2\\xec\\x79\\xa2\\xd8\\x68\\x30\\x32\\x33\\xc1\\xb6\\x97\\x95\\x2a\\x3b\\xfd\\x3a\\xd0\\xa6\\xf6\\xcd\\xd5\\xe7\\x2c\\xc9\\x40\\x9f\\x74\\x10\\xa4\\x0d\\x5b\\x45\\x36\\xdd\\x46\\xeb\\x16\\x11\\xae\\x86\\x70\\x36\\x71\\xb3\\xa0\\x51\\x5a\\x03\\x77\\xbe\\xa1\\x56\\x54\\xba\\x0a\\x0d\\x1e\\x4e\\x96\\x02\\x63\\x28\\x42\\xf2\\xac\\xd4\\xef\\x99\\x32\\x36\\xe9\\x93\\xf2\\x65\\x0d\\x59\\x92\\x3f\\x24\\xe2\\xcd\\x30\\x93\\x2d\\x8b\\xf8\\xae\\xec\\x64\\x44\\x72\\xba\\x46\\xa0\\x78\\x81\\x49\\x6c\\x92\\xa0\\x13\\x5c\\x67\\x5a\\xeb\\x0c\\xe6\\x18\\x10\\x88\\xdb\\x8f\\x15\\x6c\\xfe\\x74\\x35\\xca\\xc6\\xc9\\x7d\\xa6\\x37\\xdb\\x4a\\x89\\xf5\\x13\\x31\\xda\\x13\\x73\\x1e\\x74\\x1f\\xcc\\xc0\\x35\\x55\\x42\\xce\\x11\\xef\\xa6\\x9d\\x05\\x38\\xd3\\xef\\x12\\x7a\\xa6\\x87\\x45\\xed\\x30\\x85\\xd2\\x9d\\xa9\\x0d\\xc5\\x83\\x70\\x1b\\x6b\\x3a\\x70\\xa3\\xef\\x3e\\x16\\xa9\\x24\\xb3\\x32\\x03\\xb9\\x23\\x96\\xc4\\xb9\\x45\\xf1\\x27\\xa7\\x88\\x8f\\xa0\\x50\\x15\\xc0\\x60\\x30\\x07\\x56\\x67\\x29\\x23\\x7c\\xc0\\x78\\x2b\\x30\\xc0\\x20\\xd9\\x95\\x95\\x47\\xfe\\xec\\x9f\\x4d\\x67\\x64\\x60\\xbf\\xe0\\xc5\\xc1\\x9c\\xea\\xba\\xee\\x06\\x82\\xdb\\x8b\\xe6\\x91\\x35\\x18\\x1e\\xc0\\xfd\\xd9\\xf7\\xa6\\x6d\\x50\\xbd\\xc3\\x79\\xe4\\xa2\\xc5\\x98\\x17\\x8f\\x95\\x93\\x94\\x6a\\xca\\x64\\x05\\xb1\\x77\\xfc\\xad\\xe0\\xf8\\x64\\x21\\x58\\x3e\\xd6\\x7e\\xba\\x18\\x72\\x22\\xa1\\xe4\\x44\\x95\\xb3\\xae\\x54\\x4f\\xdc\\xa2\\x8e\\x2c\\x14\\x48\\x5e\\xab\\x04\\x71\\xaa\\xa8\\x03\\xc2\\x9a\\x9d\\x8a\\x48\\x92\\x67\\x64\\xfc\\xa1\\xdf\\x51\\x40\\x7a\\xd3\\x3e\\xc1\\x7e\\x94\\x1e\\x6e\\x26\\x17\\x23\\x7a\\x84\\x30\\x98\\x73\\xdc\\x71\\x36\\x55\\x87\\xbd\\xe4\\x27\\x4b\\x5d\\xc3\\x27\\xcc\\xb1\\xe1\\xe9\\xc8\\x57\\xe0\\x42\\xcc\\xca\\x8d\\x85\\x52\\xba\\x28\\x8c\\x97\\x8c\\xfa\\x0a\\xf9\\x9d\\x67\\xcd\\x03\\x40\\x60\\x62\\x8e\\x23\\x52\\x5d\\xbc\\xa2\\x07\\x67\\x9c\\xe2\\x96\\x90\\x87\\x84\\x48\\x55\\x3c\\xd3\\x86\\x75\\xbc\\xe0\\x7b\\xf9\\x7b\\x93\\x17\\xdc\\x44\\x46\\x8b\\x76\\x8b\\x15\\x8b\\x0c\\x11\\x1d\\x63\\xa5\\x72\\x23\\x56\\x55\\xc4\\x0e\\x16\\x59\\x7c\\xa0\\x59\\xf4\\x0c\\x3d\\x8a\\xc5\\xbd\\x61\\xa4\\x87\\xc1\\x53\\x13\\x84\\x6a\\x70\\x4a\\x78\\x11\\xb8\\xbc\\x0c\\xee\\x61\\xe3\\x47\\x62\\xb6\\xc1\\xb7\\xce\\xa1\\xc4\\x6e\\x60\\x87\\xe9\\xa3\\x6f\\x89\\x91\\x8a\\x25\\x8b\\x3f\\xa7\\x76\\x20\\xbe\\x10\\xc1\\x84\\xc3\\xfc\\x39\\x73\\x90\\x24\\xe9\\x82\\x78\\xfd\\x65\\xb8\\x2c\\xad\\x83\\x69\\x9f\\x3a\\xd8\\xc6\\xec\\xcb\\xec\\x8b\\x7b\\x1b\\xd7\\x91\\x4d\\x3f\\x6c\\x3d\\x02\\xbf\\x40\\x28\\x3b\\x1c\\x1f\\x1e\\x98\\xe3\\x08\\xbe\\xae\\xbb\\xf8\\x94\\xb8\\xf5\\xe9\\x1b\\xbb\\xc6\\x25\\x35\\xf9\\x23\"},\n{{0x83,0x34,0x3e,0x37,0xad,0x09,0x1a,0x85,0xee,0xc3,0x70,0x70,0x1b,0x81,0xa5,0x8f,0x93,0x70,0xa4,0xb0,0x42,0x3a,0x07,0x0d,0x60,0xf9,0x2d,0x8d,0x18,0x09,0x84,0x4e,},{0x50,0xb6,0x8b,0xf7,0x26,0xea,0xbc,0xa5,0x3a,0xc6,0xc9,0x0d,0x4e,0xac,0x55,0x47,0x03,0x71,0x2d,0x22,0x10,0x55,0x54,0xf0,0x5b,0xf7,0x9f,0x9d,0x08,0xfc,0xc4,0x93,},{0x9c,0x69,0x89,0xcb,0xe1,0x7e,0x16,0xca,0xa2,0x53,0xff,0xb1,0xa6,0x4a,0x10,0x6f,0xb0,0x17,0x82,0xc9,0x9b,0x17,0x22,0xba,0xf1,0xac,0xaa,0x42,0xae,0x5b,0x36,0xb7,0x9b,0x2a,0x2c,0xd8,0xfc,0x91,0xf5,0xad,0x89,0x23,0x81,0x70,0x25,0xa7,0x78,0x25,0xa0,0x5d,0xf8,0xc4,0x17,0xec,0x53,0xc4,0xa3,0xaa,0x1c,0x0e,0xfd,0x5b,0xbe,0x0f,},\"\\xc7\\xda\\xdc\\xac\\x5d\\x87\\x95\\xe1\\x74\\xb6\\x91\\x38\\x91\\x2e\\x70\\xff\\x41\\xe7\\xa7\\x25\\xfa\\xf3\\x85\\xb7\\x73\\xed\\x15\\x09\\x89\\x72\\xb3\\x0d\\x9b\\x73\\x93\\x72\\xd9\\x75\\xb4\\x80\\xcc\\xfd\\xfc\\x58\\x0e\\x2e\\x2d\\xdf\\x5e\\x3c\\x27\\xee\\x79\\x12\\x79\\xab\\x95\\xe4\\x38\\x2b\\x14\\x59\\xdd\\x8d\\x41\\xae\\x36\\x0d\\x4a\\x87\\x88\\x46\\x69\\x29\\x24\\xfe\\xef\\x39\\x0c\\x0d\\xbb\\xfa\\x35\\xe4\\xb8\\x2d\\x7c\\xbc\\x33\\xee\\x15\\x81\\xc5\\x2b\\xd9\\x49\\x38\\x5b\\x2e\\xe4\\x02\\x63\\xa5\\x7d\\xa1\\x17\\x4b\\xb4\\xac\\xad\\x37\\xcd\\x8a\\xe2\\xa6\\xb4\\x5f\\x7a\\x6d\\x6b\\xbe\\xf5\\xa7\\x98\\xce\\x85\\xb9\\xe0\\x5e\\x76\\x47\\xe3\\x34\\xec\\xfc\\x77\\x63\\x78\\xde\\x17\\x4c\\x49\\x7c\\x0f\\x40\\x75\\xe6\\x25\\xaf\\x7a\\xed\\x50\\x2c\\xd1\\xcf\\x7f\\x58\\x8d\\x0d\\x80\\x7f\\x02\\xe3\\x2f\\x43\\x00\\xf2\\x28\\xa5\\x0a\\x66\\x7b\\x5a\\xd1\\xfb\\xbc\\x17\\xe0\\xb3\\xc5\\x70\\x51\\xdd\\xc6\\x02\\xf5\\x76\\x07\\x9f\\x6f\\xc5\\x88\\x9b\\x7f\\x29\\x00\\x71\\x13\\x34\\x42\\x0f\\xc6\\x66\\xf6\\x6d\\xba\\xff\\x41\\x26\\x33\\x6c\\x35\\x3f\\x1e\\x5b\\x56\\x4a\\x66\\x45\\x37\\xf8\\x37\\x86\\xda\\x5c\\x56\\x27\\x74\\x54\\x06\\xd7\\xb2\\xfe\\x32\\x33\\xbf\\xd5\\x8e\\xf4\\x64\\xa0\\x6c\\x95\\xcf\\xd0\\xb9\\x88\\xa7\\x6d\\x05\\x3a\\x64\\x4b\\xcc\\x15\\x9c\\xad\\x53\\xa7\\xc5\\xdb\\xb4\\x0e\\xef\\x5c\\xd0\\x47\\x05\\x6a\\x3f\\x09\\x26\\x5b\\x13\\x25\\x69\\x9c\\x7d\\x15\\x9d\\x5c\\x90\\x24\\x40\\x17\\x33\\x57\\xff\\xab\\x8f\\x7a\\x5e\\x38\\x9f\\x46\\x8c\\x33\\x3b\\x78\\x2f\\x80\\x17\\x0a\\xe9\\x09\\x83\\xaf\\x15\\x3f\\x2e\\x73\\xbd\\x2b\\xef\\x12\\x5e\\x3d\\x38\\x68\\xc2\\xab\\x9e\\xcf\\x03\\xaf\\xf7\\x6e\\xcb\\xeb\\x18\\x16\\x7c\\xa2\\xf7\\x11\\xcd\\x56\\x58\\x51\\xd7\\xf0\\x4e\\xe9\\xd9\\xb0\\x1b\\x6d\\x83\\xa7\\x60\\x57\\x22\\x62\\x0d\\x28\\xc8\\x4d\\x6c\\x1a\\xf4\\x2f\\x6a\\x76\\x92\\x58\\xf5\\x3c\\x1f\\x66\\xda\\x36\\x66\\x6d\\xa5\\xca\\xa9\\xbd\\x9e\\x8f\\xbc\\x16\\x92\\x11\\xb1\\xae\\xd9\\xc2\\x55\\x8f\\x6a\\xaf\\x5b\\x14\\x5a\\xbc\\x72\\x1a\\xbb\\x00\\x72\\x01\\x94\\xe0\\x27\\x03\\x54\\x68\\xbd\\xe3\\xfe\\x0b\\x88\\x88\\x4f\\x4e\\x9b\\x26\\xe7\\x71\\xe6\\xc7\\xa0\\xa5\\x5e\\xa3\\x6f\\xc5\\x0d\\xec\\x8c\\xef\\x16\\x2f\\x9b\\xba\\x5b\\x4b\\x16\\x10\\x5a\\xfd\\x6e\\x37\\x4e\\x03\\x8d\\x5c\\x85\\x87\\xcf\\xd7\\xdd\\x88\\x29\\x0b\\x2c\\x9c\\xab\\x45\\xa2\\x64\\xd6\\x54\\x0e\\xa1\\x41\\x6e\\x6e\\x4e\\x74\\xa1\\x2f\\x45\\xa2\\xef\\x13\\xcc\\x8a\\x36\\xe7\\xb0\\xa2\\x6b\\x90\\x2c\\x3d\\x96\\xe2\\xe2\\x22\\x92\\x02\\xe2\\x57\\x65\\x69\\x4b\\x94\\x33\\x73\\xd1\\x6e\\x60\\x0b\\xd7\\x86\\xd9\\x55\\xa4\\xb3\\xf1\\x02\\x16\\x40\\xc3\\x9a\\x0b\\x6c\\x69\\x15\\x00\\x28\\x1a\\xe0\\xd0\\x98\\xcc\\x7f\\x38\\x5e\\x18\\xa0\\x7e\\x62\\xfa\\x4a\\x10\\x1e\\xf5\\xb7\\x85\\x51\\xfa\\x29\\xbd\\x15\\xee\\x03\\x53\\xa1\\xa5\\xef\\x9b\\x21\\x6e\\x8b\\x0f\\xa5\\x07\\x50\\xa3\\x41\\x62\\xb6\\x35\\xa0\\xbc\\x5e\\x5d\\x72\\x30\\xaa\\x19\\xaf\\xa1\\x28\\xab\\xa6\\x42\\x2d\\x38\\xeb\\x77\\xa3\\xf0\\xbb\\x9d\\xd8\\xe4\\x65\\x2f\\x12\\x07\\x0a\\x37\\x36\\x1c\\x37\\x25\\x50\\x3c\\x9d\\x22\\xe2\\xfa\\xce\\x2e\\xa7\\x4a\\x70\\x02\\x40\\x62\\x47\\xdd\\x86\\x97\\x5f\\x07\\x57\\x5c\\x9e\\x7c\\x6f\\x41\\xb5\\x3b\\x26\\xd5\\xcf\\x52\\xc5\\xac\\xc2\\xc5\\xd9\\x82\\x71\\x43\\x4e\\x9f\\xa5\\x09\\xc6\\xdf\\xbd\\x72\\x43\\x72\\xaa\\x5c\\x13\\x45\\x1a\\xae\\x39\\x3d\\xe0\\xa1\\x86\\x46\\x4f\\x5d\\x33\\x7e\\x9f\\x62\\x7b\\x4f\\x1c\\x29\\x09\\x46\\x70\\x65\\xe8\\x9a\\x42\\x2e\\xc4\\x0e\\xe1\\xd8\\x0a\\x13\\x39\\x00\\xa6\\x2f\\x4e\\x4f\\x7e\\x94\\xeb\\x72\\x61\\x5e\\x7e\\xc2\\x99\\x6c\\x6c\\x24\\x30\\xc3\\xe9\\x57\\xce\\xae\\x21\\x05\\xa1\\xe9\\x0e\\xae\\xac\\x0d\\x31\\xaf\\xfa\\x9f\\x57\\x92\\x6d\\x71\\xd9\\x72\\xa9\\xa2\\xde\\x11\\x25\\x8c\\xc1\\xe7\\x28\\x59\\x9c\\x9f\\xb3\\x87\\x24\\x91\\x84\\x7e\\x10\\xc6\\x7e\\xfa\\xef\\x6b\\x69\\x6a\\x03\\x0f\\xf0\\x53\\x3a\\x58\\x3b\\xea\\x1d\\x04\\xdf\\x25\\xf7\\xee\\xf3\\xa1\\x3b\\x8e\\x31\\xaa\\xd1\\x33\\x85\\x7d\\xf1\\xb4\\xe5\\xff\\xbd\\xee\\x37\\xf4\\x0f\\x38\\xd2\\x24\\xc7\\x0a\\xe0\\x4e\\xf3\\x3b\\x41\\xb0\\x2e\\x71\\x91\\xa8\\x66\\x56\\xb0\\xd7\\x2b\\x2c\\xbb\\x53\\xc4\\x90\\x8c\\xa2\\x06\\xf7\\x57\\x34\\xb2\\x77\\x08\\x15\\x4f\\xcd\\x8a\\x97\\x42\\x9c\\xfd\\x1f\\x2d\\xa2\\x42\\x97\\x78\\x43\\x80\\x03\\xf5\\xb5\\xb9\\xc2\\x1d\\x9e\\xd2\\x3b\\x8a\\xd8\\xa2\\x28\\xeb\\x4f\\x65\\xc2\\x4c\\x1c\\x59\\x69\\x9a\\x5c\\x90\\xaf\\xf7\\x73\\xe5\\xc6\\x76\\xdb\\x36\\x2a\\x19\\x30\\xba\\x16\\xab\\xa7\\x6e\\xf8\\xda\\xa4\\x2b\\x3e\\xb2\\xcc\\xc4\\x5c\\x93\\x4d\\x23\\xd4\\x92\\x9a\\x7a\\xd9\\xe3\\xef\\x46\\x8b\\x06\\xa4\\x99\\x5c\\x80\\xdd\\x23\\x6a\\x7b\\xcf\\x38\\x79\\xd8\\xb7\\x94\\x67\\xf7\\x2b\\x33\\x84\\xc1\\x60\\xcc\\x18\\x17\\x14\\xe9\\x2f\\x20\\x35\\xe7\\xb9\\x72\\xa2\\xcc\\x52\\x42\\xd9\\x32\\x52\\x5e\\xae\\x7c\\x50\\xbd\\x26\\x3b\\x0f\\xa0\\x9c\\xbd\\x9d\\x6f\\x98\\x4b\\x9c\\xf6\\x15\\x2d\\x9a\\x13\\x3c\\x27\\x84\\x32\\x02\\xd1\\xe8\\x7f\\xa5\\xa6\\xe1\\x23\\x5d\\x9c\\x75\\x6b\\xb8\\xe6\\x8b\\x05\\xb9\\x8d\\xa5\\x41\\x95\\x22\\x3f\\xdf\\x02\\x10\\x25\\x32\\x50\\x63\\x3c\\x11\\xc5\\xf6\\x0b\\x5e\\x67\\xd7\\xee\\xfc\\xaa\\x6c\\x2d\\xaa\\x52\\x31\\x37\"},\n{{0xda,0x01,0x32,0x21,0xb2,0xf5,0x88,0xaf,0x40,0xe2,0x11,0xa0,0xf9,0x75,0xd4,0x4f,0x9d,0x65,0x02,0x81,0x60,0x51,0x4c,0x39,0x61,0x89,0xf2,0x7c,0x7b,0x06,0x66,0xea,},{0x07,0x11,0x7c,0x6b,0x0d,0xb5,0xb6,0xfd,0xa1,0xed,0xc4,0x39,0x6c,0x47,0xc2,0x2b,0x54,0xee,0x0c,0xe5,0x37,0x5c,0x3e,0xc6,0x33,0xc8,0x3a,0xfc,0x53,0xad,0x6c,0xe4,},{0x10,0xcb,0x52,0xd6,0x10,0xe4,0xa8,0x1d,0x32,0x86,0x9b,0xff,0xce,0x38,0x07,0xe6,0x39,0x1f,0x78,0x2f,0xcd,0x53,0x8b,0x55,0x4d,0x09,0x03,0x7f,0xda,0x72,0x28,0x5b,0x96,0x62,0xb1,0xb1,0x10,0x7c,0x40,0x81,0x78,0xac,0x00,0x9f,0x05,0x25,0x96,0x73,0x88,0xa7,0xd8,0x5f,0xa1,0x23,0x59,0xd3,0xce,0x38,0x75,0x03,0x7d,0xcf,0x6a,0x04,},\"\\xbc\\x93\\xee\\x1e\\xc4\\x72\\x8a\\xc6\\x36\\xa6\\x24\\x8f\\xcc\\x45\\x51\\xc9\\xd1\\x59\\x80\\xdb\\x8e\\x5f\\x54\\xb0\\xef\\x07\\x5a\\x71\\x97\\x0e\\x17\\x6a\\x3c\\xb9\\x18\\x2e\\x32\\xda\\x7a\\x8c\\x2a\\xc0\\xcd\\x7e\\x59\\x57\\x74\\x57\\x5f\\x9c\\x83\\x50\\x6a\\x60\\x6f\\xac\\xe8\\x95\\x12\\x13\\x5d\\x03\\x2a\\xb0\\x5e\\x39\\xff\\xf9\\xc8\\xca\\x6c\\x25\\xcd\\x5d\\x78\\xec\\xc3\\xac\\x32\\x32\\x90\\xc9\\xc8\\x16\\x26\\x73\\x5e\\x19\\x0e\\xb5\\xae\\x34\\x5c\\xa7\\xa9\\x58\\x40\\x9f\\x77\\x43\\xb0\\xb1\\x61\\x49\\x16\\x83\\x22\\x17\\xc5\\x7e\\xee\\x1b\\x4f\\x8e\\x62\\x2a\\xc0\\x52\\xa9\\x3d\\xd5\\xb3\\x9d\\x07\\x61\\xe4\\x0e\\x9f\\xbd\\x83\\x96\\xf6\\x0a\\x3b\\xf6\\x66\\x0c\\x5f\\xa9\\x9c\\xd8\\x13\\x9f\\x68\\xcb\\xe0\\x89\\x4e\\x5c\\x67\\xe1\\x68\\xcc\\x74\\xb2\\x72\\x4e\\x9d\\x91\\xd6\\x00\\x0a\\x0c\\xec\\x58\\x7a\\x11\\x46\\x3f\\x72\\xee\\x6e\\xd2\\x55\\xbd\\x87\\xeb\\x30\\xfd\\x45\\x75\\x96\\xf6\\x88\\xca\\x0e\\xa7\\x3f\\x30\\x49\\x72\\x38\\xde\\x21\\xc9\\x3f\\xbb\\x12\\x94\\xdb\\x61\\xe4\\xa5\\x60\\x89\\x10\\x6d\\x1c\\xf7\\xce\\x5a\\x65\\xec\\x3d\\x12\\x17\\x0c\\xe7\\x84\\x0f\\x08\\x8a\\x8d\\x0e\\x3a\\xef\\x17\\xe5\\x31\\xde\\x47\\x80\\x03\\x57\\x02\\x58\\xe9\\x27\\xf1\\x56\\xe7\\x96\\x10\\x65\\xaf\\xa6\\x66\\xaf\\x38\\x58\\x2b\\x35\\x3c\\xc4\\x77\\xba\\x77\\x5c\\xae\\x45\\x94\\x6d\\x08\\xdb\\x75\\x21\\x59\\x14\\xda\\x32\\x61\\xb6\\x22\\x94\\xe9\\x2a\\xfb\\x38\\x14\\x59\\xc2\\x1d\\xda\\x4e\\xa6\\xed\\x79\\x5f\\x79\\x25\\x7c\\x09\\x4d\\xd6\\x08\\xdc\\x8e\\x1b\\x7c\\x40\\xcd\\x29\\xfe\\xa2\\x22\\x08\\x8f\\x65\\x69\\x7e\\xa8\\x88\\x95\\xd1\\x0a\\xce\\xa8\\x79\\x73\\x60\\xdc\\xba\\xce\\xe2\\x69\\xc6\\x06\\x60\\x0a\\xdf\\xfd\\xcf\\x9c\\x7c\\x38\\x1d\\x0a\\xd6\\x69\\x69\\x67\\xd9\\xff\\x03\\xe6\\x1a\\x24\\x90\\x65\\x02\\xb2\\x95\\xe7\\x6f\\x4d\\x08\\x75\\x65\\x5b\\x01\\xe6\\xff\\xca\\xcc\\x8e\\xf0\\x11\\x29\\xc7\\x2a\\x58\\x46\\xb6\\x0e\\xc8\\x00\\x17\\x37\\x4e\\x75\\xd3\\x06\\x40\\x3d\\x9e\\xcc\\xf2\\x64\\x95\\xd2\\x98\\x12\\x0a\\x06\\x33\\x83\\x5c\\x5d\\x1e\\xff\\x17\\xc9\\xc6\\x24\\x76\\xf7\\x52\\xc8\\x97\\x10\\xad\\xfa\\x4d\\x51\\x61\\x7b\\x59\\x18\\x17\\x3c\\xba\\x72\\x25\\x40\\xe3\\x88\\xff\\xbf\\xfb\\x96\\x68\\x74\\xdb\\x00\\x40\\x4d\\x06\\xb0\\xce\\x11\\x39\\xba\\x74\\x14\\x3c\\x76\\xb8\\xf4\\xd3\\x3b\\x21\\x16\\xe1\\xcc\\xe1\\x75\\x17\\x3a\\x96\\xfc\\x15\\x1e\\xa2\\x39\\xbf\\xc2\\x0d\\x66\\xfb\\xb6\\xf5\\x2a\\x66\\x6c\\x0e\\x81\\xcc\\x2b\\x80\\x20\\x91\\x06\\xe2\\x48\\x0e\\x41\\x11\\xc7\\x0e\\x7b\\xe4\\xaa\\xbb\\x68\\x42\\x2f\\x0b\\x8c\\x6b\\xa1\\x5c\\x14\\x2f\\x82\\xe6\\xc7\\xf3\\x78\\xd7\\x80\\x0a\\x09\\xea\\xa4\\xda\\x25\\x3c\\x2f\\xd9\\x1e\\x12\\x63\\xc6\\xb6\\x55\\xbf\\x70\\x25\\x5d\\x7e\\x3b\\xb4\\x77\\x55\\x23\\xa0\\xa9\\xe7\\xff\\x03\\x79\\x7e\\xe3\\xff\\xca\\x8a\\x50\\xd1\\x0f\\x20\\xd5\\xe5\\xa8\\x89\\xec\\x5e\\x33\\x4e\\xf2\\x6c\\xf7\\x99\\x8b\\x08\\x36\\xf6\\x56\\x45\\x68\\x88\\xe1\\x37\\xf3\\x9d\\x3e\\x43\\xe2\\xce\\x3c\\x6e\\xf5\\x40\\xd9\\x5d\\x9a\\x20\\xc4\\x2c\\xb8\\xae\\x2d\\x9d\\x0f\\x25\\xa8\\x91\\xc3\\x63\\xea\\xd9\\xcc\\x42\\x3f\\x9a\\x32\\x3f\\xe2\\x32\\x28\\x1f\\xb6\\x7f\\x5b\\xe1\\xc0\\x78\\x43\\x61\\x46\\x04\\x68\\xa8\\x7e\\x95\\xdf\\xa3\\x5d\\x7f\\x0f\\xfa\\x22\\x11\\xbe\\x6b\\x5f\\xb3\\x2d\\x42\\xba\\x65\\x18\\xab\\x6e\\xa9\\x37\\x80\\xf4\\x31\\xd3\\x00\\x67\\x31\\xbe\\x44\\x40\\xe7\\x12\\x97\\x4f\\x74\\xba\\xea\\x41\\x9f\\x40\\x22\\xfa\\x25\\x02\\xe1\\xb2\\x39\\x8e\\x93\\x86\\x16\\x7d\\x93\\xec\\xa9\\x2c\\xa6\\x0d\\xd7\\xd9\\x1f\\xe8\\x23\\x24\\xf6\\x82\\xd9\\x4a\\xa7\\xa8\\x6a\\xb0\\x34\\xf8\\xa9\\xe9\\x52\\xe8\\xfc\\x95\\xbf\\xf4\\xdf\\xed\\x6a\\x43\\x31\\x3a\\xbb\\x92\\x40\\x1b\\x30\\xc3\\x3c\\x79\\xa7\\xba\\x3e\\xfd\\xbe\\x16\\x28\\x04\\x0f\\xba\\xf4\\x43\\xf3\\xf9\\x80\\x84\\x6f\\xdb\\x28\\x3d\\xcc\\xd9\\x3f\\xab\\x09\\x70\\x8b\\x7d\\x54\\x86\\x1d\\x74\\xb1\\xfe\\x8f\\x10\\x70\\x1f\\x21\\x1b\\xa3\\xd3\\x90\\xe8\\xa6\\xae\\x40\\x77\\x39\\x64\\x6a\\x79\\xa5\\x83\\x37\\xa7\\x17\\xa8\\x72\\x00\\x9c\\x2d\\xf6\\x76\\x1c\\x24\\x25\\xa3\\x2a\\x00\\x18\\xaa\\xf9\\x64\\x64\\x70\\xcb\\xc8\\x7c\\x3a\\x65\\xc0\\xe0\\xef\\xfb\\xaa\\x52\\x8f\\xe4\\x78\\x3c\\x77\\x2a\\xb2\\x66\\xb8\\xf2\\x82\\x68\\xcf\\x14\\xaf\\x23\\x4b\\x15\\x81\\x6d\\x1a\\x3a\\x49\\x1a\\xf5\\xf2\\x97\\xe3\\x3d\\x57\\x29\\x71\\x5d\\x51\\x2c\\x37\\x3f\\xef\\x5e\\xcc\\x3f\\x39\\x54\\xa6\\x0a\\x2a\\x0f\\x64\\xd8\\x29\\x47\\x41\\x19\\xca\\x1a\\x18\\xf1\\x05\\x78\\xd0\\x4d\\x63\\x8d\\x5e\\xea\\xfc\\x37\\x1a\\x94\\x6f\\x6c\\xe7\\xef\\xbd\\x2a\\xcc\\xe3\\x4e\\x20\\x44\\x1c\\xde\\x9a\\x37\\xd5\\xa8\\x7d\\xc6\\x19\\xb0\\xa7\\x27\\x59\\x6c\\xd1\\x2e\\x15\\xcd\\x97\\x84\\xbb\\x91\\xf1\\x39\\x9a\\x59\\xfc\\x0a\\x7a\\x4a\\xf6\\x8b\\x0d\\x57\\x5d\\x93\\x38\\x71\\x72\\x97\\x33\\x75\\xc4\\x65\\xdf\\x5d\\x2d\\x5e\\x06\\x1a\\x2a\\x9b\\x23\\xb4\\x91\\x5a\\x0a\\x8b\\x8c\\x1f\\x09\\x42\\x09\\x4a\\xf7\\x28\\xc8\\xc3\\x11\\x45\\xfa\\x7a\\xaf\\x74\\xa2\\x1a\\x3b\\x03\\x2b\\xb0\\x9c\\x39\\x22\\x05\\xbf\\x09\\x5b\\xda\\x98\\x6e\\x5d\\xd6\\x62\\x7c\\x1e\\x41\\x7f\\x65\\x03\\x26\\xdf\\xe3\\xa9\\xc9\\x99\\x4c\\x6e\\x0e\\x01\\x27\\x6f\\x91\\xf2\\x98\\x7d\\x2b\\x85\\xde\\xda\\x96\\x54\\x91\"},\n{{0x5a,0x86,0x8f,0xb7,0x5e,0xa0,0x72,0x1f,0x7e,0x86,0xc7,0xbc,0x10,0x6d,0x74,0x13,0xc8,0xcf,0x4d,0x03,0x3c,0xe1,0x40,0x05,0xdf,0x23,0xce,0x4c,0x15,0x5b,0xbd,0x27,},{0x6d,0x1e,0x29,0xf3,0x9d,0xed,0xa2,0xbb,0xfb,0xb5,0x7c,0xb0,0x1c,0xb3,0x9e,0x58,0x80,0x82,0x78,0xe5,0x19,0x6a,0xda,0x1c,0x02,0x76,0x46,0xf2,0x04,0x87,0xd2,0x52,},{0x38,0xc4,0x8d,0xba,0x99,0xa6,0x52,0x4a,0x18,0x8d,0x5c,0xd7,0x8a,0x98,0xe6,0x77,0xdd,0x26,0x3e,0xf6,0xb4,0xdf,0x44,0x6b,0x31,0x0b,0x3d,0xd8,0x9c,0xaf,0xdd,0xb9,0xb1,0x7a,0x65,0xbb,0xa8,0xe1,0x39,0x68,0xbd,0xc2,0x5b,0x1d,0x84,0xb6,0xe2,0x43,0x6e,0xdf,0x31,0xaa,0x75,0x6e,0x3a,0x48,0x72,0x6d,0x6f,0x91,0xc8,0x08,0xee,0x0e,},\"\\xd5\\xaa\\x11\\x82\\x5b\\x99\\x44\\x8c\\x80\\x63\\x06\\x23\\xd8\\xc7\\x46\\x01\\x7c\\xfe\\x3d\\xe6\\xfa\\x8a\\x0c\\x6e\\xd6\\x62\\x71\\x27\\xcf\\xc1\\xf8\\x4d\\x4e\\x0a\\x54\\xe6\\xa7\\xd9\\x08\\xd3\\x71\\x9f\\x14\\x21\\xd1\\xd4\\xc7\\x8b\\x3c\\xdd\\x94\\x76\\x9a\\xb6\\x03\\x3b\\xce\\x97\\x9d\\xd9\\x0e\\x10\\x68\\x02\\xeb\\xa9\\xa0\\x32\\x95\\xd4\\x8f\\x9b\\x9a\\x95\\xd5\\x7e\\xe7\\x74\\x54\\x02\\xa4\\x80\\x23\\xbf\\x3b\\xdd\\xd5\\xc6\\xb9\\x1c\\x77\\x3e\\x49\\x19\\x13\\xa3\\x8a\\xc3\\x46\\x26\\x05\\xcf\\x28\\x2d\\xea\\xc7\\x57\\x42\\xfb\\xd2\\x75\\x29\\x27\\x6e\\x81\\xdc\\xce\\x8d\\xff\\x96\\x05\\x03\\x5e\\x8c\\xf0\\x5d\\xf6\\xa4\\x3d\\xb1\\x51\\xf0\\x41\\x57\\x65\\xbc\\xbd\\x1f\\x1b\\xb6\\x68\\xad\\x62\\x73\\xb8\\x91\\xc0\\xdc\\x4f\\x3d\\xba\\x59\\x0e\\xa8\\x2f\\x83\\x63\\x76\\x9b\\x9c\\x77\\x51\\x19\\x47\\x11\\x73\\x75\\xdc\\x49\\x04\\xd4\\x8b\\x88\\xb6\\x8a\\x25\\x5b\\x28\\x01\\x1b\\x11\\x04\\x81\\x94\\x09\\x3e\\x98\\x20\\x7a\\xb1\\xcf\\x75\\x6a\\xb8\\x33\\x1f\\x8d\\x6f\\x9d\\x5b\\xe2\\xe1\\x19\\x05\\x73\\xe9\\x5e\\x71\\x0f\\x2a\\x35\\x01\\xb5\\x3a\\xa0\\x82\\x5d\\x6c\\x12\\xdc\\xfb\\x94\\xac\\x80\\xdc\\x10\\x82\\xcb\\x4a\\xd2\\x62\\xe6\\xd4\\x93\\xad\\xce\\xb6\\xbc\\x19\\x14\\x5f\\xbf\\x73\\x8d\\xf7\\x6f\\x21\\x34\\xfa\\x04\\xcb\\xbe\\x44\\xff\\xc5\\x5f\\xfe\\x5f\\x9d\\x3e\\x9b\\xeb\\xd1\\x59\\xa0\\x01\\xaa\\x9b\\xf7\\x88\\x92\\xa1\\x65\\x38\\xa5\\x20\\x82\\x3c\\xde\\x5d\\x61\\xe2\\x9a\\x56\\xa7\\x7a\\xb9\\x6e\\x49\\xe3\\x00\\xd9\\x86\\x59\\x62\\xc7\\xe7\\xfb\\x8b\\xcf\\x5d\\xe0\\xb9\\x38\\x29\\x7c\\x3f\\x4d\\x6f\\x60\\x21\\xe2\\x4d\\xfd\\xad\\x98\\x61\\x65\\x2f\\x34\\x0f\\x42\\x1e\\x7a\\xf2\\xc7\\x1e\\xd9\\xa7\\x15\\x87\\xfc\\x75\\x3b\\x11\\x55\\x49\\xb2\\xf7\\xf7\\xcb\\x29\\x69\\x0e\\xa2\\xb1\\x58\\xa9\\x4c\\xd2\\xbc\\x42\\xe7\\x06\\x3d\\x61\\x9b\\x93\\x9d\\x52\\x3e\\x3c\\x23\\x7e\\xb1\\xf4\\x08\\x10\\xde\\x0b\\x44\\xaa\\x69\\x37\\x86\\x3d\\x62\\x9e\\xdd\\x55\\x75\\xe6\\xc0\\x47\\x52\\x61\\xb6\\x27\\x47\\x30\\x92\\x77\\x5c\\x84\\x36\\x00\\x11\\xd5\\x7c\\x57\\x20\\x9c\\x2e\\x87\\x5a\\x3f\\x89\\x63\\xe8\\xb2\\x41\\xa7\\xaa\\x75\\xef\\x30\\xc4\\xa7\\x18\\xac\\x4d\\xd4\\x66\\xdc\\x7a\\x3e\\x40\\xe5\\x87\\x4f\\x15\\x7a\\x84\\x9e\\xd3\\xa3\\xa9\\xd4\\xae\\xb7\\xd9\\x4d\\xf0\\x9b\\xb5\\x5a\\x0b\\x2b\\xc9\\xf8\\xb6\\x95\\xc3\\x71\\x79\\x30\\x23\\x67\\x60\\x63\\x67\\xc5\\xf3\\x24\\x82\\x8c\\xe7\\x5a\\x94\\x4f\\x50\\x70\\x3a\\x47\\x90\\x6a\\x80\\x88\\xf3\\xa1\\x1c\\xfe\\x4a\\x85\\x4e\\x01\\xf1\\x74\\x12\\x52\\xc4\\x86\\x33\\x7d\\x06\\xb1\\xcc\\x6c\\x6b\\x9b\\x12\\x95\\x43\\x1e\\xe0\\x73\\x59\\x35\\x7b\\x3a\\x78\\xef\\x50\\x75\\xb6\\x5d\\x7f\\xed\\x5e\\xb7\\x42\\xe5\\x10\\x15\\x98\\x44\\x4b\\x46\\x62\\x3f\\x89\\xa3\\x03\\xac\\xc1\\x0c\\x73\\x24\\x49\\x51\\x3b\\x70\\xdc\\x45\\x6a\\x79\\xd3\\x7c\\x48\\xe5\\xe7\\x26\\xc2\\xf5\\x58\\xda\\x0a\\x1c\\x46\\xef\\xbd\\x2d\\x92\\x03\\x26\\xa6\\x78\\xb8\\xa2\\x2f\\x09\\x44\\xbe\\x4a\\xf5\\x5b\\x6c\\x71\\xf4\\x53\\xfb\\xae\\x40\\x0e\\x6a\\xcc\\x04\\xe0\\xe9\\x5c\\xa2\\x00\\x16\\x7e\\x96\\xee\\x98\\xea\\x83\\x93\\x16\\xda\\x93\\xa1\\x2c\\x2d\\x76\\xf1\\x1a\\xee\\xbe\\xb7\\x8e\\x65\\xea\\x48\\xf7\\xfe\\xeb\\xbb\\x13\\x7b\\x2a\\xc6\\x7e\\xae\\xf0\\x2a\\x2d\\x9e\\x64\\x71\\xdd\\x63\\x4a\\x03\\x7d\\x4f\\x5d\\x35\\xa2\\xf7\\x8a\\xf4\\x1a\\x8e\\xa5\\xaf\\x5b\\xc8\\x15\\x0a\\x99\\xed\\x68\\xa6\\xa0\\xcc\\xff\\x2b\\x1d\\x79\\x65\\xd8\\xbc\\x3e\\xf9\\x28\\x5b\\xa6\\x42\\x1d\\x87\\xc3\\x3a\\xad\\x81\\x03\\xa5\\x87\\xbe\\x01\\x92\\x68\\x45\\xbf\\xbd\\xdb\\xaf\\xc6\\x9c\\x4b\\x92\\x52\\x88\\x67\\x20\\xd4\\x18\\x50\\x9f\\x40\\xf3\\xdc\\xf5\\x57\\x65\\xdc\\xcc\\x3d\\xee\\xd8\\x27\\x72\\x15\\xe6\\x9f\\x05\\x6b\\xa3\\x1b\\x8a\\x30\\xb5\\x00\\x94\\xea\\x8f\\x14\\x47\\x20\\x76\\x0c\\x8f\\x8c\\x05\\x5c\\xf1\\xa8\\x69\\x64\\xff\\xcb\\xb8\\xee\\x1b\\xb2\\x18\\x12\\x76\\xea\\x99\\xa7\\xb8\\xe7\\x10\\x67\\xfa\\x31\\x0b\\xa4\\x47\\x1e\\x84\\x27\\x90\\x37\\xbc\\x49\\x2a\\x55\\xde\\x20\\x55\\x48\\xe7\\x7b\\x01\\x45\\x04\\xee\\x66\\x64\\xc4\\x98\\x8c\\xbb\\x9e\\xd9\\x1f\\xf3\\x2e\\x22\\x59\\xed\\x4c\\xfd\\x61\\xa1\\x97\\xd0\\xdb\\xc3\\x2c\\x68\\xf6\\x54\\x9c\\x0d\\x29\\xfc\\x45\\xf3\\x6a\\xcb\\x26\\xb1\\x64\\xde\\x97\\xcc\\xdc\\x37\\x90\\x0d\\x93\\xcd\\xbc\\xf9\\x68\\x7e\\xf5\\x3f\\x1f\\x4d\\xa1\\xb1\\xae\\x42\\x25\\xb8\\x84\\x20\\x9e\\x81\\xba\\x43\\x11\\x52\\x04\\x77\\xed\\x42\\x11\\xb0\\x92\\x40\\xbd\\x7b\\x82\\x5e\\x54\\x73\\x9f\\xe2\\x5d\\x86\\x24\\xaf\\x04\\xb8\\x6f\\x6d\\x11\\x06\\xd1\\x81\\x70\\xe5\\x06\\x4d\\x1a\\x73\\xc1\\xfb\\x1a\\x27\\xb2\\x89\\xa9\\x48\\xd7\\x71\\xa2\\xf6\\xb8\\xb0\\x9a\\x63\\x5d\\xb9\\x6c\\x62\\x51\\xc3\\x5a\\x18\\x76\\xd3\\x69\\x62\\x66\\x99\\x41\\x6c\\x0e\\x40\\x29\\x8a\\x68\\x1f\\xda\\xf5\\x25\\x5f\\x58\\xc2\\x55\\x77\\x59\\xd8\\xf5\\xdf\\x14\\x8d\\xec\\x9d\\xbe\\x1c\\xe6\\xdf\\x04\\x1c\\x36\\xf8\\x3e\\x69\\xcc\\xfb\\x4a\\xac\\xa5\\xcb\\x48\\xfa\\x6a\\x85\\xc8\\xff\\x66\\x06\\x15\\x24\\xd8\\xb1\\x1b\\xd7\\xff\\xae\\xd9\\x9d\\x0c\\xd4\\x5c\\x42\\x01\\x0f\\x21\\xd3\\x6c\\xc3\\x16\\xca\\x86\\x09\\x55\\x63\\x5b\\xff\\xaa\\x7d\\x9a\\xac\\x57\\x2d\\xcc\\xf3\\x15\\x3d\\x42\\xee\\x8a\\x2b\\x12\\xba\\xa5\\x7c\\x16\\x0b\\xd0\\xad\"},\n{{0xc5,0x4b,0xd3,0x43,0x1f,0x26,0x59,0x28,0x1d,0x31,0xe9,0x3b,0x30,0x78,0x76,0x68,0xbc,0xba,0x6e,0x5e,0xe4,0x7d,0xb4,0x6e,0x50,0xde,0xab,0xe3,0xf4,0x8c,0x9e,0xd8,},{0x1e,0xba,0x6e,0xb3,0xf7,0xf2,0x4c,0xdf,0x80,0xab,0xf8,0xa1,0x9d,0x30,0x8c,0x24,0xf1,0xe2,0x5b,0xa1,0x59,0x70,0xed,0xa7,0x11,0x67,0x07,0xb0,0xf1,0x2c,0xf9,0x32,},{0xdf,0x45,0x41,0xdf,0xf1,0xa9,0x79,0x7f,0xeb,0x61,0x7f,0x98,0xe4,0xb5,0x7a,0xa7,0x71,0x41,0x31,0xee,0x8f,0xf5,0x45,0xed,0x50,0x82,0xe3,0x56,0x8e,0xfd,0x1c,0x39,0x9c,0xdc,0x56,0xf5,0x58,0x29,0x91,0xeb,0x87,0x85,0xfb,0x33,0x86,0x4e,0xef,0x7f,0x55,0x3f,0x3e,0x24,0x82,0x62,0xed,0x54,0x8a,0x1a,0x68,0x88,0xf9,0x2e,0x92,0x0e,},\"\\x6f\\x8c\\xdd\\x75\\xe1\\xb8\\x56\\xbb\\xbe\\x9c\\xdc\\x25\\x53\\x7f\\xdf\\x7e\\x82\\x36\\xcb\\x02\\x9a\\xcd\\x39\\x84\\x49\\x21\\x10\\xd0\\xc3\\x04\\x41\\xd4\\x21\\x84\\xb5\\xfb\\x18\\x3d\\xa9\\xf3\\x14\\x03\\x78\\xdf\\xa7\\xd7\\x4c\\xcc\\x9e\\xf5\\x00\\x19\\x3c\\xc9\\x57\\x9f\\xff\\xa6\\x0b\\xd2\\xa8\\xab\\x9e\\x09\\x58\\x15\\x00\\xcf\\x06\\xcd\\x35\\xab\\xc1\\x71\\xd9\\xd1\\x2c\\x65\\x80\\xd9\\x68\\x2f\\x9f\\x49\\xfe\\x36\\xd0\\xa3\\x17\\x72\\x38\\xfa\\x50\\xe7\\xeb\\x4c\\x27\\xe4\\x60\\xf5\\xe4\\x58\\x0a\\x56\\x56\\x8a\\x19\\xe0\\x3d\\x95\\xb0\\xff\\x4f\\x4a\\x23\\x18\\x24\\xcd\\x2f\\x34\\x42\\xe0\\xba\\x40\\x0b\\xc1\\x1b\\x7a\\x98\\x9d\\x50\\x1f\\x5d\\xf3\\x5e\\x43\\x01\\x50\\x8f\\x72\\xa8\\x52\\x01\\x4b\\xfb\\xf4\\x00\\x1e\\x28\\x09\\x54\\x73\\xd9\\x65\\x9e\\xed\\x60\\x67\\xba\\xf6\\x8f\\x92\\xbe\\xf3\\x12\\xc0\\x9b\\x19\\xaa\\xf7\\xc4\\xfb\\xa3\\xd9\\x02\\xb9\\xf6\\xcf\\x95\\x2e\\xb9\\xb9\\xa5\\x3c\\xa8\\xbc\\xbd\\x04\\x2d\\x84\\x2e\\x98\\x53\\xb6\\x72\\xa1\\xd0\\x09\\xd8\\x23\\x83\\x8b\\xeb\\xe5\\x63\\x7c\\x4c\\x07\\xed\\x1b\\x19\\x48\\x55\\x4b\\x23\\xb3\\x2d\\xe1\\xd6\\xc1\\x16\\xf9\\x33\\xb3\\x54\\xf2\\x8b\\xbb\\x77\\x9f\\xa6\\x54\\x8c\\x48\\x29\\x2b\\x61\\x2c\\x7f\\x55\\x1a\\x75\\xfb\\xc4\\x6c\\x02\\x73\\x6b\\xf9\\x9e\\x9c\\x8e\\xad\\x56\\xf0\\x5a\\xb0\\x42\\x7a\\x6e\\xc6\\x16\\xe3\\xdc\\xc7\\x75\\x7e\\xfd\\xb7\\x62\\x8d\\x4e\\x96\\x32\\x5f\\xe0\\xae\\x25\\x4c\\xef\\x5c\\xb7\\xa7\\x04\\xb3\\x5a\\x92\\x0c\\xb3\\xfa\\x2a\\x03\\xe9\\x61\\xda\\xf3\\x71\\x82\\x1b\\xe0\\xb3\\x0f\\x19\\xae\\x49\\x52\\x44\\x1e\\x08\\xa7\\xd2\\x2f\\x54\\x31\\x39\\x0a\\x5b\\xe8\\x09\\x7f\\xd5\\x79\\x7a\\x1a\\x62\\x97\\x66\\x4d\\xa4\\x2c\\x20\\x08\\xd0\\x32\\x10\\x60\\xeb\\xe3\\x18\\x1e\\xb7\\x95\\xa7\\x28\\x92\\x58\\x08\\xda\\x78\\x67\\x29\\x3b\\x72\\x08\\xf3\\x77\\xd3\\xa7\\x71\\x18\\x5e\\x6d\\x2c\\x1c\\x8c\\xe1\\x83\\x76\\xfe\\x3c\\x0c\\x14\\x58\\xc7\\xf5\\xbe\\x34\\xf4\\x28\\xa0\\xd5\\x75\\x93\\x10\\x74\\xc9\\x7c\\xbf\\xce\\x8a\\xd8\\x13\\x13\\xec\\xca\\x73\\xa9\\xf3\\xdb\\x43\\x4f\\xba\\xd4\\xbb\\xbf\\xf5\\x02\\xbf\\x72\\x97\\xe1\\x7a\\x97\\xa8\\x86\\x42\\x11\\xe6\\x78\\x9b\\xa1\\x92\\x03\\x6e\\xa5\\x9a\\x34\\xd8\\x4f\\xf2\\xa1\\x11\\x07\\x4c\\x3f\\x23\\x73\\xb1\\x01\\x11\\xb5\\xda\\xa7\\x89\\x56\\x0c\\xb3\\x54\\x90\\x95\\x4c\\x88\\xea\\x00\\xc4\\x10\\xdf\\x85\\x0a\\xd0\\x0c\\xae\\x2f\\x28\\xe7\\x19\\xfb\\x06\\x71\\x69\\x88\\xa9\\xbb\\x0b\\xfc\\x6c\\x98\\x9d\\x58\\x7e\\x56\\x85\\xae\\x88\\x3c\\x2c\\x2e\\x74\\xdd\\xbf\\x91\\x5c\\x98\\x56\\xaa\\xe8\\xf3\\x28\\x8f\\xc6\\x25\\xbf\\xb2\\xfe\\x26\\x8d\\x74\\xf5\\x9f\\x8b\\x7d\\x83\\x63\\x74\\x97\\x69\\x16\\x90\\x07\\xd5\\xe6\\x7b\\x7d\\x0b\\x8c\\x8f\\x5a\\x9d\\x9f\\x9c\\x7b\\x74\\x5c\\x0a\\x42\\x94\\x76\\x2c\\xbe\\xca\\x42\\xd5\\x38\\x49\\x61\\xe9\\x21\\xa7\\xef\\xb6\\x5d\\xa8\\xd1\\xe0\\x3b\\x67\\x45\\xcd\\xf3\\x08\\x09\\x7f\\xb1\\x3d\\x64\\xfd\\x2f\\x8c\\x10\\xfa\\x95\\x09\\xeb\\x2d\\x91\\x38\\x7f\\x00\\x64\\x5c\\xa7\\xd0\\x48\\x3b\\x2c\\xd1\\x4c\\x20\\x6b\\x8d\\x7a\\xe0\\xa3\\xfb\\x7c\\x09\\xbc\\x68\\x43\\xd1\\x02\\xad\\xcd\\xa1\\x9f\\x8b\\xbd\\x85\\x1e\\xb6\\x83\\xc4\\x43\\x5c\\xeb\\x4b\\x3d\\x23\\xd3\\x8f\\x56\\xd4\\xd1\\x11\\x4e\\xef\\x0f\\xc6\\xf2\\x4d\\xf5\\x27\\x70\\xd8\\xf1\\xf3\\xf8\\x2f\\x47\\x20\\xe8\\x92\\xb3\\x15\\x24\\x4e\\xf5\\x6c\\x36\\xb2\\x3f\\xcd\\x40\\x79\\x78\\x52\\x41\\x40\\x38\\x2e\\x11\\x74\\x0f\\xd4\\x6f\\xe4\\x29\\x99\\x23\\xf5\\x2b\\x88\\xb4\\xa9\\xcf\\xf4\\xb2\\xb4\\xb2\\x3a\\x2e\\x76\\x0a\\xd8\\x1c\\x78\\xba\\x87\\x69\\x31\\xd9\\xaa\\xa4\\xbe\\xed\\x40\\xfb\\x10\\xa7\\x99\\xeb\\x30\\xd3\\x7f\\x75\\x47\\x78\\xba\\xc8\\x5b\\xf0\\x63\\x1d\\x85\\x2b\\xe7\\xd7\\x4a\\x64\\x31\\xf3\\x84\\xa4\\x02\\x5c\\x10\\x91\\x42\\x1d\\x67\\xa4\\xe9\\xc9\\x4c\\x1b\\xe3\\x69\\x0c\\x6b\\xf8\\x1d\\x06\\xbd\\xaf\\x32\\xfe\\xab\\xba\\xf1\\xdc\\x26\\x3f\\x27\\x3a\\x0b\\x9e\\xd6\\x54\\x60\\xba\\xef\\xce\\xfc\\xf6\\xac\\xcc\\xda\\x0e\\xdd\\x23\\xdf\\x9e\\x05\\x12\\x8e\\x29\\xd6\\x61\\xc4\\xb4\\x4b\\xd9\\x2d\\x64\\x0f\\xaa\\x85\\x3a\\xfd\\x83\\x70\\xe5\\x63\\xb4\\x0a\\xe0\\x14\\x9a\\x14\\x28\\xe0\\x6e\\x3d\\xd8\\xe6\\x6b\\x79\\xda\\x21\\xcc\\x75\\x3d\\xdc\\x47\\x6e\\x3d\\x76\\xe2\\xf3\\x6f\\x2b\\x6c\\x6b\\xc1\\xb6\\x50\\x87\\xd5\\xf8\\x6c\\x8a\\xc3\\x54\\x71\\x1a\\x8c\\x08\\xf3\\x48\\x6e\\x47\\x9d\\x6a\\xe9\\x43\\xf8\\x84\\x63\\x32\\xd4\\xe5\\xb4\\xbb\\x2e\\x82\\x57\\xe3\\x08\\x3d\\xf4\\xf8\\x1d\\xd4\\xf0\\xc1\\xee\\x1d\\x97\\x18\\x21\\x66\\x16\\x1a\\x18\\x59\\x7e\\xe0\\xb9\\x59\\xde\\x1c\\x45\\x59\\x1a\\xbf\\x7c\\x51\\x03\\x3d\\x7c\\x66\\x35\\x2d\\xee\\xb6\\x82\\xe7\\x77\\xae\\xae\\x2f\\xa8\\xd3\\xa7\\x7f\\x47\\x0d\\xb7\\x8d\\xdc\\x1b\\x1f\\xc8\\x28\\x40\\xc4\\x06\\x57\\x76\\xd9\\xbf\\xca\\x9d\\x39\\x2d\\x92\\x88\\xee\\x91\\x32\\xaa\\x3e\\x4f\\x2d\\x19\\xd0\\xd9\\x3e\\x01\\xb6\\x66\\xf3\\x64\\x7a\\xba\\xf2\\x25\\xc2\\x92\\x41\\x9c\\x8a\\x82\\xeb\\xa3\\xe1\\x1a\\xb1\\x03\\x84\\x6f\\xcd\\x49\\x35\\xf4\\x12\\x41\\x47\\x7c\\x0f\\x15\\x2b\\x79\\x65\\xad\\x54\\xbb\\x72\\xbc\\x3d\\xe2\\xe0\\xb7\\x9d\\x62\\x25\\xe8\\xfa\\x7a\\x62\\x86\\xb5\\xfc\\xcb\\xb3\\x58\\x22\\xe8\\x0c\\x8b\\xfe\\xa7\\x4c\\xb4\\x8a\\x22\\xd2\\x41\\x38\\x53\\x95\\xc2\"},\n{{0xea,0x60,0xda,0x01,0x79,0xbc,0xaf,0x6b,0x21,0x81,0x42,0xb1,0x11,0x90,0x46,0xff,0xe6,0xd8,0x5a,0x74,0x1b,0x0d,0x16,0x62,0x30,0xbc,0x6d,0xe3,0x30,0x4f,0x67,0x73,},{0x50,0x6b,0x2e,0xbb,0x49,0xbd,0x9b,0x9f,0xf6,0x6e,0x6b,0x7b,0x1f,0xab,0x96,0x68,0xcb,0x18,0x1b,0x4f,0xb5,0xe4,0x34,0x3d,0xdd,0xd3,0xf8,0xa9,0xd7,0x02,0x03,0x1c,},{0x27,0xfb,0x6b,0x5f,0x06,0x52,0x8a,0x64,0x19,0x8a,0x3e,0x7d,0x67,0xc7,0x38,0x84,0x0a,0x8c,0xff,0x4b,0x48,0x2b,0x4d,0x52,0x4b,0x12,0x2d,0x17,0xd2,0xae,0xbc,0xc0,0x38,0x9b,0xe2,0xc6,0xe2,0x8e,0x2c,0xdf,0xc4,0x84,0xc1,0x8d,0xe4,0x25,0xdb,0x56,0xcd,0xfa,0x56,0x1c,0x50,0x7c,0xd9,0x70,0x60,0x2d,0x3a,0x38,0x5d,0x3a,0xea,0x0f,},\"\\x61\\x2d\\x6e\\xf6\\xe4\\x34\\x9f\\xfa\\xe5\\x16\\xe9\\x83\\xe8\\xfa\\x7b\\x52\\xd9\\xfd\\x13\\x42\\x82\\x24\\x0d\\x95\\x14\\x38\\x24\\xbd\\x4a\\xae\\x03\\x23\\x4b\\x76\\xa8\\xcd\\x6d\\x40\\x68\\xcf\\x00\\x9e\\x48\\x1c\\x26\\x85\\x36\\x1c\\x75\\x50\\x42\\xc4\\xe6\\xab\\x87\\x03\\xec\\xbf\\x8f\\x02\\x0c\\xf5\\x73\\x9a\\x4c\\x2a\\x03\\xc3\\x73\\x1e\\x9c\\xf7\\x5a\\xee\\x25\\x96\\x61\\x53\\xb9\\x71\\x15\\x15\\xc6\\xc3\\x9a\\xfa\\x95\\xf2\\x21\\xac\\x33\\x95\\xb0\\x89\\xc9\\x7a\\xc9\\xb5\\x14\\xe1\\x7d\\x55\\xf7\\x96\\xa3\\xec\\xc1\\x35\\xfa\\xaa\\xee\\x90\\x7a\\xab\\x10\\x29\\x64\\x7b\\x48\\xac\\x81\\x74\\x9b\\xab\\x26\\x62\\x7c\\xf7\\x09\\x5d\\x74\\xc2\\xfc\\xee\\x35\\x67\\x1c\\x8b\\xb4\\x60\\x53\\xf5\\x15\\x1b\\x0c\\x2e\\x5d\\xab\\xe0\\xf2\\xd6\\xaa\\x20\\x41\\x33\\x05\\x02\\x0b\\x2a\\xfd\\x9e\\xe3\\x38\\x7b\\x2c\\x9e\\xd0\\xbc\\x3f\\xe2\\x90\\x2a\\xf4\\x10\\x0c\\xec\\x23\\x32\\x7b\\x0f\\x1e\\x4c\\xa3\\x9e\\xf6\\xea\\xf6\\xfd\\xf5\\xd5\\xac\\xf9\\x3f\\xc8\\x68\\x53\\x6d\\x8c\\xba\\x40\\x17\\x69\\x32\\x9f\\xbe\\x93\\xef\\xfc\\x7e\\xe6\\xbf\\x93\\xa6\\xe5\\x88\\xbd\\x55\\x1e\\xaa\\x51\\x28\\x53\\x95\\x2c\\x81\\xb2\\x45\\xe5\\xd2\\x29\\xd2\\x94\\xe4\\x13\\x70\\xb8\\x67\\x80\\x86\\x67\\x88\\x7a\\x6f\\x9e\\xba\\x2a\\x8d\\x56\\xa7\\xa7\\x04\\xe6\\x6b\\x1c\\x02\\xf9\\x6e\\x73\\x89\\x5f\\x48\\x3e\\x44\\xa5\\xc5\\x66\\xcb\\x1a\\xf2\\x65\\x73\\xbf\\xe2\\xaf\\xce\\x06\\xb1\\xfb\\x58\\x77\\xe5\\x1e\\xf3\\x12\\x6a\\x3f\\x21\\x0f\\xbf\\x21\\x3e\\xd6\\x5d\\x5c\\xa4\\x6c\\x46\\xce\\x4a\\xa9\\x45\\xbd\\x8c\\xa6\\x11\\xe3\\x83\\x62\\x50\\xf5\\x64\\xf7\\xea\\x35\\x42\\x39\\x82\\xf9\\x70\\x5f\\xcd\\x6b\\xef\\x46\\xae\\x16\\xcb\\x0f\\x6b\\xc9\\x12\\xc3\\xf2\\x86\\x42\\xb8\\xd8\\x77\\x75\\xb8\\x18\\xe4\\xe4\\xe8\\x06\\x11\\x67\\x89\\x9b\\xd2\\x7a\\x7e\\x2f\\xb8\\x18\\x7e\\xe9\\x91\\x7d\\x2d\\x58\\x6b\\xf9\\xd4\\x99\\xe8\\xfa\\xbc\\xa8\\x3d\\xdf\\x58\\xc7\\x43\\x7e\\xaa\\xce\\xc4\\xf4\\x44\\xfb\\x2b\\xf7\\x45\\xdc\\xcd\\x8c\\xae\\x38\\x94\\x45\\x71\\xde\\xde\\x20\\x37\\xdc\\x41\\xf0\\x81\\x8a\\x3d\\x91\\xe3\\x02\\x0a\\x72\\x74\\xc6\\x67\\x42\\x47\\x87\\x60\\x83\\xd0\\xe3\\x97\\x46\\xc9\\x68\\x40\\x61\\xbf\\x74\\xad\\x58\\x84\\x36\\xce\\x1b\\x76\\x3d\\xbf\\x4b\\xfc\\xf8\\xde\\x6e\\x35\\xc5\\xa7\\x62\\x66\\x75\\xc1\\x27\\x29\\x2b\\x21\\xdf\\x3c\\x16\\xf8\\x10\\x63\\x32\\x2a\\x75\\xf3\\x43\\x88\\x86\\xf1\\xf0\\xce\\xbf\\xc1\\xa9\\x6f\\x41\\x38\\x4c\\xbd\\xd8\\x61\\xb0\\x4f\\x51\\x9f\\xf6\\xa9\\x34\\x4d\\x94\\xf3\\xd3\\xa0\\xab\\xa8\\x40\\x9d\\xfc\\xf1\\x8d\\x01\\xf2\\xb5\\xb4\\x55\\x17\\x16\\x39\\xee\\xa7\\x7d\\xee\\x70\\x6e\\xa8\\x3d\\xcd\\x2b\\x8b\\x1f\\xc5\\xec\\x0d\\x74\\x07\\x61\\xa5\\xf0\\x5f\\x7e\\xc8\\xd8\\x7a\\xd1\\xf2\\x92\\xa5\\x0c\\x8b\\xae\\x0a\\xd3\\x2b\\x03\\x41\\x9a\\x95\\x0d\\x9f\\xe3\\xb3\\xec\\xc4\\xd8\\xd3\\xaa\\x95\\xe0\\x2b\\x51\\xb1\\x83\\x1d\\x83\\xea\\xde\\xaa\\x44\\x23\\x86\\x35\\xf9\\xc6\\x5e\\xfe\\x2f\\x67\\x44\\xa7\\x0b\\x9a\\xe4\\x1e\\xf1\\x5d\\x97\\x90\\x8c\\x05\\x33\\x93\\x44\\x12\\xf7\\x95\\x83\\xd0\\xe9\\xb3\\xd7\\x06\\xa1\\x28\\xe8\\x8f\\xb5\\x1e\\xed\\xb6\\x5e\\x46\\xd8\\xa2\\xb3\\x8b\\xbd\\xd6\\x45\\x55\\x54\\x96\\x7a\\x8d\\xc0\\xc6\\x8b\\xdd\\xfe\\xae\\x0f\\x8f\\x72\\xf0\\xb8\\x86\\xc3\\xc7\\x41\\xfa\\xc4\\xf9\\x1e\\x5c\\x49\\x1d\\xba\\xe9\\xda\\x45\\x94\\x83\\x6c\\xf1\\xd9\\xfb\\x6e\\xe1\\x30\\x02\\x50\\x89\\xae\\xd3\\x50\\xef\\x24\\x7b\\xc9\\x88\\x7a\\x20\\x50\\x15\\x9d\\xde\\xd1\\x42\\x8f\\xfd\\x9b\\x07\\xb9\\xec\\x2e\\x3d\\x4b\\xbd\\xc2\\xdd\\xb5\\x4e\\x87\\x3b\\x63\\xf2\\x47\\x52\\x33\\xe1\\x91\\x33\\xa1\\x4b\\x66\\x58\\x50\\x94\\x57\\x00\\x81\\x86\\xd6\\x22\\x59\\x95\\xa9\\x67\\x26\\xb5\\x29\\xf4\\x42\\x81\\xaa\\x24\\xfe\\xfd\\x1c\\xff\\x8f\\x81\\x5d\\x93\\xa5\\x98\\x69\\x31\\x66\\x22\\x90\\xb3\\xee\\x16\\x83\\x3c\\x60\\xf0\\xaf\\xce\\xf2\\xcb\\xc0\\x00\\x62\\x3f\\x39\\x31\\x90\\x9c\\xa9\\x76\\xa0\\x94\\xe2\\xb0\\xfd\\xb7\\xdc\\xf7\\xc4\\x85\\xe1\\x49\\x88\\xa3\\x6f\\x19\\xb6\\x64\\x25\\x38\\x5f\\x56\\x32\\xce\\xf6\\x5d\\x1d\\x34\\x14\\x62\\x3a\\xe3\\xee\\x81\\x6e\\x76\\x3a\\x5f\\x60\\x64\\x66\\x62\\x2b\\xe6\\x60\\x21\\x14\\x50\\x29\\x51\\xcf\\x0c\\x09\\x7c\\x16\\x48\\xa7\\x2e\\x2c\\x43\\xd9\\xaf\\xa9\\x68\\x9f\\x2c\\x3c\\xfe\\x02\\x6c\\xdc\\xe3\\xbd\\x1b\\xf9\\xeb\\xf7\\x77\\x56\\x2e\\xcd\\x8f\\xf1\\xb0\\xd7\\x75\\x30\\x6d\\x90\\x04\\x43\\xf3\\x0a\\x84\\x33\\x10\\xb8\\xde\\x6a\\x38\\xff\\x10\\x8b\\x72\\x39\\x13\\xd7\\x89\\x9b\\x9f\\xbe\\x7c\\x3d\\x76\\x6e\\xf8\\xbd\\xfb\\x6d\\x8b\\x0b\\x52\\x95\\x6c\\xb1\\xce\\xc9\\x93\\x6d\\x70\\xb4\\x87\\xc0\\x14\\x40\\xa8\\x42\\xb2\\xfa\\xbe\\x38\\xe7\\xb8\\x85\\x1a\\x38\\x7d\\x35\\x8b\\xe7\\xef\\x12\\xa7\\xe4\\xf2\\xb5\\x27\\xe8\\x30\\x90\\xd6\\x7e\\xb0\\x13\\xc9\\xc2\\xcf\\xd3\\xde\\x5a\\x1a\\x3f\\x99\\x74\\x8a\\x41\\xf4\\x81\\x9d\\x90\\x36\\xe5\\x00\\xc5\\x04\\xc9\\x88\\xbf\\xd2\\x4f\\x61\\x7d\\x6e\\xbd\\xca\\xb2\\xdd\\xea\\xa6\\x15\\x79\\x41\\x4f\\x36\\x0b\\x46\\x9a\\x33\\xa6\\xde\\xd9\\x6b\\xa1\\xd8\\xc1\\x40\\xc4\\xff\\xc9\\x49\\x90\\xd8\\xad\\xf7\\x8c\\xd3\\x87\\x80\\xbd\\x68\\x66\\x3d\\x1a\\x0e\\xe3\\x3f\\x53\\x7c\\xdf\\x89\\x2d\\x56\\x2e\\x82\\xdc\\xd1\\xd9\\x12\\xca\\xd3\\x8d\\x65\\x56\\x7d\\x29\\x14\\x06\"},\n{{0xb6,0x2c,0x24,0x18,0x78,0x27,0x35,0x13,0xe0,0xbf,0x6f,0x33,0xd2,0x10,0x43,0x65,0xb2,0xce,0x9c,0x5a,0x1b,0x78,0x60,0x58,0xe9,0xc5,0xb4,0xd1,0xd1,0x92,0xf8,0x7f,},{0xbb,0xf6,0xfc,0x51,0x98,0xf3,0xfb,0xa5,0xab,0x00,0x7f,0x8a,0x63,0x2d,0x28,0xd1,0xaf,0x86,0x5d,0x29,0x0f,0xa0,0xa9,0x0f,0xaa,0x9a,0x9b,0x5b,0x9c,0x13,0xf3,0xfb,},{0xc5,0x90,0x39,0x58,0x7b,0x38,0xdc,0x14,0x1e,0x05,0x5a,0x93,0x85,0x01,0x04,0xd6,0x29,0xe3,0x80,0x70,0x5b,0x8f,0xc9,0x18,0x84,0x7c,0x5e,0x2a,0x35,0x2d,0xa3,0xa0,0x2f,0xce,0x7f,0x71,0x99,0xf4,0xae,0x2b,0x1e,0x2a,0x59,0x48,0x34,0x18,0x93,0x2e,0x18,0x5f,0x7e,0x45,0xb5,0x05,0x0c,0x64,0x2c,0xec,0xc7,0xe7,0x81,0x99,0x85,0x07,},\"\\x26\\xa3\\xc2\\x6a\\x5a\\x18\\x9c\\xad\\x40\\x7c\\xba\\xa3\\xa6\\x86\\x7a\\xc0\\xa2\\x60\\x88\\xc7\\x5f\\x9d\\x0f\\xa1\\x9b\\xd5\\x02\\x74\\xce\\xc5\\x75\\x5a\\x49\\x71\\x09\\xa4\\x73\\x28\\x4d\\x6f\\xc8\\x1a\\xd4\\xb9\\xec\\x29\\xfa\\x7e\\xc9\\x76\\x4f\\xd3\\x09\\x9f\\x06\\x0e\\x36\\x83\\x65\\x52\\xff\\x24\\x13\\xe3\\xd5\\x09\\x5f\\xe0\\xb1\\xa8\\xbf\\xcf\\x67\\xee\\x06\\xaa\\x90\\x32\\xe7\\xbb\\x32\\x49\\x69\\x80\\x47\\x71\\x4d\\x28\\x14\\x15\\x27\\x3c\\x98\\x34\\xad\\x9e\\xb6\\x65\\xa7\\xd9\\x72\\x20\\xe7\\x2d\\x9c\\xa7\\x3f\\x31\\xaf\\xa7\\x73\\x86\\x75\\xba\\x31\\x62\\xef\\xef\\xe7\\x47\\x9a\\x5b\\xc4\\xbc\\xe2\\xe8\\xb7\\xaf\\x47\\x41\\xd7\\x03\\xdc\\x9b\\xbd\\x60\\xb4\\xcf\\x4b\\x90\\x87\\xf6\\xcf\\x86\\xcf\\x53\\xae\\xd0\\x2b\\xf4\\xca\\x6a\\x18\\xf6\\x07\\xcb\\x52\\xa3\\x03\\xd7\\x8e\\x85\\xad\\x88\\xfd\\xfc\\x86\\xdc\\xb7\\x18\\x77\\x27\\xb0\\x3b\\xe2\\x27\\x74\\x5b\\xea\\x74\\x4f\\xd0\\x06\\x52\\x5b\\xc5\\x9a\\x4d\\xdd\\xab\\x91\\x5c\\xef\\x40\\xa8\\xf3\\x08\\x02\\x91\\x3b\\x79\\x13\\xea\\xf9\\x74\\x33\\x65\\x52\\xe2\\xf1\\x45\\x6a\\xd8\\x03\\xdc\\x58\\xc9\\xb4\\xb1\\x8e\\xfa\\xf7\\xf7\\xe3\\x57\\xe2\\xcd\\x77\\xd1\\x38\\xd9\\x00\\x80\\xe2\\x96\\xd1\\x36\\x4a\\x2f\\x32\\x4d\\x3e\\x0d\\x6e\\xdc\\x20\\xb8\\xbd\\xaa\\x9d\\x2e\\x87\\x1f\\x5e\\x7b\\x05\\x1f\\xb6\\xfc\\xdb\\x55\\x95\\xf2\\x1d\\x3f\\x8d\\xe2\\x9f\\xb7\\x86\\x78\\xfa\\x47\\x9e\\xaa\\x32\\x57\\x9c\\x78\\x4d\\x51\\x3a\\xc5\\xf8\\x36\\xd9\\x54\\xd0\\xd3\\xfc\\x0e\\x5f\\xc8\\xa6\\xee\\xab\\x90\\x20\\x2b\\x4c\\x4a\\x2b\\xec\\x24\\xcf\\x63\\xea\\x67\\xc4\\x70\\x09\\x62\\x18\\xcd\\x43\\x1e\\x88\\x31\\x05\\xfc\\x9c\\x27\\xf9\\xea\\x77\\xc1\\x8e\\xda\\x69\\xbc\\x00\\xa2\\x24\\x2b\\xd4\\x20\\xf0\\x95\\xc9\\xb9\\xa9\\x2d\\x95\\x6c\\xcc\\x5a\\x85\\x72\\xb0\\x57\\xa7\\xfe\\x17\\x3e\\xeb\\x2a\\x31\\x66\\xcb\\x20\\x89\\xd1\\x13\\xa8\\x16\\x46\\x2b\\x25\\x80\\x5b\\x8a\\xba\\xff\\x5b\\x0b\\x22\\x87\\xc5\\x08\\xec\\x2b\\x8c\\x34\\xb2\\x19\\x5c\\x33\\x28\\x70\\xd3\\xcc\\x39\\x60\\x17\\xa1\\x6b\\x9e\\x0d\\xa6\\x18\\x2d\\x07\\x1d\\x3b\\xf3\\x63\\xd3\\xf1\\xe7\\xb7\\xda\\x11\\xd7\\x11\\x25\\x0a\\x58\\xaf\\xd7\\x4e\\xd3\\xe3\\x15\\x8d\\x47\\x18\\xba\\xd4\\xd2\\x74\\xbb\\x34\\x44\\xcf\\xc3\\x18\\x07\\x4b\\x53\\xbe\\xba\\x44\\xa2\\xa3\\x4f\\xf8\\xeb\\x72\\x6e\\x4a\\x1d\\xaa\\x91\\x10\\x51\\x62\\x16\\x51\\x89\\x8b\\x88\\x71\\x69\\xf6\\x2b\\x9c\\x0f\\x40\\x20\\x48\\x3e\\xf5\\x44\\xf8\\xf5\\x72\\xfa\\x6a\\x66\\x40\\xa4\\xcf\\xfc\\xe9\\x76\\xcb\\x70\\x24\\xf8\\x47\\xbd\\xc9\\x5d\\x1d\\x7c\\xe6\\x53\\x50\\x5d\\xeb\\xfc\\x69\\x88\\xed\\x28\\x9d\\xd4\\x7a\\x9e\\xb2\\x61\\x25\\x9e\\x3e\\x65\\xe4\\x5f\\xc9\\xd7\\x14\\x94\\x69\\x35\\xcd\\x8e\\xa1\\x3b\\xc6\\xdb\\x5e\\xaa\\xb9\\xe8\\xb1\\x0d\\xae\\x0f\\xdd\\x69\\x79\\xc2\\x03\\x5c\\xfb\\x80\\x98\\x25\\x2f\\x22\\x05\\x44\\x3b\\x80\\x88\\x16\\xbf\\x77\\x87\\xb7\\xf1\\xe7\\x8b\\xc9\\x8a\\x72\\x85\\xe7\\x33\\xd4\\x5f\\xc4\\x61\\x0c\\x20\\x97\\x7c\\xa3\\x22\\x98\\x89\\xbb\\x8c\\xd2\\xb6\\x94\\xce\\x9e\\x3f\\xe7\\x83\\x03\\xaf\\x83\\xe1\\x06\\x42\\x25\\x42\\xfb\\x79\\x61\\xd3\\x2e\\xb1\\xd2\\xc5\\xfb\\xe6\\x07\\x51\\x67\\x4b\\x07\\x47\\x73\\xee\\x06\\x16\\xe0\\x29\\x73\\xf6\\xa7\\x4a\\x3a\\xe4\\x66\\x4a\\x26\\x50\\x91\\x5a\\x3e\\x10\\x49\\x3b\\x9e\\x66\\xa3\\x9f\\xa5\\xc8\\x9c\\x61\\xd4\\x47\\x35\\xf1\\x07\\xd3\\x37\\x57\\xae\\x67\\x9b\\x43\\xa8\\xd4\\x3a\\x01\\x75\\x7a\\xe1\\xf3\\x27\\x9e\\x86\\x24\\x42\\xe1\\x50\\x71\\x55\\x50\\xee\\x82\\xe4\\x9c\\x0d\\x49\\x43\\xfa\\xf1\\x3f\\x22\\x79\\x1f\\x0e\\x66\\xf2\\x4a\\xc5\\x0a\\xb3\\xc0\\x03\\x85\\x2b\\x21\\xe1\\x5b\\x2f\\x00\\x6e\\xdc\\x2c\\xd6\\xa8\\x79\\xc4\\x76\\xab\\x5b\\x35\\x2e\\xb1\\x09\\x9d\\xad\\x4c\\x50\\x37\\x24\\x00\\xfa\\xa5\\x49\\x8d\\x78\\xc6\\xb8\\x57\\x03\\x4c\\x25\\xca\\xf7\\xb9\\x33\\xfa\\xf6\\xbd\\x7c\\x59\\xfa\\x3d\\xa5\\x73\\x97\\xb6\\x03\\xde\\x9c\\xb9\\xd8\\x0e\\x51\\xf7\\x99\\x7b\\xaa\\x46\\x2a\\xcd\\x53\\x7e\\x2c\\x41\\x94\\xc7\\x6c\\x7e\\x0b\\xe6\\x51\\x2b\\xce\\x4d\\x63\\x66\\x0b\\x36\\xc7\\xcc\\x46\\x63\\x1f\\xb9\\x67\\x1a\\xd8\\xc5\\xd2\\x8e\\x2f\\x2e\\xe2\\xed\\xce\\x81\\x95\\x44\\x21\\xb8\\xa3\\xd9\\xff\\x6f\\x66\\x69\\x9f\\x4b\\xce\\x88\\xbc\\xb8\\xef\\x19\\x2c\\x26\\x2a\\x74\\xab\\x7e\\x19\\x1e\\xee\\x91\\x01\\xa2\\x8d\\x4b\\x66\\x28\\x2b\\x51\\x22\\x09\\x3d\\x14\\x1c\\x64\\x96\\xc7\\xab\\xa4\\xd3\\x52\\xe4\\x72\\xee\\x74\\x40\\xe0\\x5a\\xf6\\x0d\\xa0\\xcf\\xc9\\x3e\\x30\\x36\\x42\\xba\\x8f\\xb8\\xe5\\xc5\\x68\\x68\\x7a\\xbd\\x63\\xaf\\xb3\\xed\\x6a\\x32\\xb6\\xda\\xe5\\x6a\\x7e\\x5d\\x73\\xde\\xba\\xf4\\x1d\\x35\\xca\\x36\\xad\\xb9\\x7a\\x22\\xc0\\xad\\xbe\\x71\\x8b\\xec\\x1f\\xa5\\x19\\x98\\xde\\x9b\\x4b\\x96\\xa7\\x9c\\x5b\\x96\\x55\\xb0\\x16\\x5d\\x5e\\x1b\\x9a\\x8c\\xc5\\x52\\xe8\\xc9\\x32\\x9e\\xde\\x58\\xdf\\x74\\xc6\\x7b\\x2b\\xa1\\xa8\\x42\\xfd\\x3e\\x81\\x58\\xc1\\xfe\\xa3\\xa9\\x9b\\x56\\xa2\\xc2\\xa9\\x62\\x07\\x85\\x3d\\x26\\x02\\x2c\\xec\\x17\\x0d\\x7e\\x79\\x94\\x4d\\x2f\\x56\\xaa\\xb1\\xf1\\x91\\xbf\\xd4\\x8d\\x72\\x54\\x90\\xca\\x82\\xb8\\xd9\\x06\\xf0\\x68\\x0e\\x69\\xee\\xb9\\x57\\x57\\x74\\xfb\\x9d\\x60\\x45\\x13\\xfb\\xc2\\x6f\\x5d\\x30\\x3b\\x68\\x85\\xca\\xc0\\xbf\\x8e\\xfe\\xe0\\x53\\x8f\\x92\"},\n{{0x0f,0x77,0xf7,0x7a,0x1c,0x7e,0x04,0xbd,0xa8,0xe5,0x34,0xf4,0xe3,0xef,0xf9,0xa2,0x38,0xcc,0x14,0x87,0x6b,0x7e,0x3e,0xca,0x8b,0xed,0xe1,0x92,0x3a,0x33,0x64,0x06,},{0x10,0x45,0xea,0x9f,0xe2,0x14,0x58,0x3a,0x0c,0xdb,0xc4,0x94,0x93,0x2b,0xc4,0x4a,0xfe,0xeb,0x08,0x0b,0xec,0x48,0x5c,0xc2,0x34,0xfd,0xdc,0xff,0x13,0x9c,0xce,0x00,},{0xb2,0x0b,0x9c,0x42,0x46,0xf0,0xd2,0x97,0x01,0x38,0xaf,0x7d,0xc9,0xaf,0x62,0x9b,0x68,0xfb,0xc3,0x7d,0xf8,0x7a,0xfd,0xca,0xdc,0xb5,0x45,0xc1,0x76,0x83,0x76,0xa0,0x9c,0x3b,0xab,0xc3,0xeb,0x1a,0xf3,0xb7,0x51,0x98,0x52,0xf7,0x5f,0xab,0x1c,0x9c,0x11,0x9c,0x66,0x2c,0x58,0x77,0xfb,0x2f,0x72,0x99,0xca,0xb5,0x7f,0xad,0x3d,0x0e,},\"\\x0e\\xcb\\x74\\x6d\\xbd\\xb0\\x16\\x14\\x21\\xaf\\xeb\\x7a\\xde\\xa7\\xa3\\x7c\\x2e\\xa4\\x40\\x8a\\x59\\x2c\\x9d\\x78\\x1e\\xd6\\xac\\x6f\\x4e\\xe5\\xcc\\x65\\xd5\\x27\\x0e\\x4c\\xf2\\x76\\x32\\xf7\\xc5\\xc1\\x33\\xd4\\x39\\xb7\\x8d\\x1f\\x71\\xaa\\x6d\\xd8\\x07\\x13\\xd9\\x0b\\x15\\x1e\\x19\\x12\\x1b\\xfa\\x87\\x71\\x0e\\x84\\xa4\\x85\\x0a\\x3b\\x5b\\x02\\x65\\xba\\x26\\x03\\xd0\\x71\\x6e\\x9b\\x7e\\x11\\x22\\x10\\x9c\\x39\\xc6\\xf1\\x02\\x7f\\xce\\x18\\x79\\x8c\\xbb\\x4f\\x6b\\xc5\\xe4\\xd7\\xac\\xa4\\x70\\x46\\x90\\xf5\\xc9\\x81\\x51\\x08\\x71\\xc3\\x13\\x59\\x57\\x98\\x33\\x86\\x81\\x10\\x7f\\x2b\\x57\\x94\\xd4\\x6f\\x6e\\x0b\\xde\\x2c\\xd0\\x64\\xb3\\xb1\\xfc\\x00\\xca\\x47\\x18\\x8b\\xbb\\xc1\\xf4\\xa0\\xce\\x30\\x5c\\xc6\\xd8\\xa8\\x96\\x92\\x0e\\xb9\\xeb\\xae\\x57\\x9f\\xd3\\x38\\x5f\\x8f\\x1f\\x35\\x97\\x62\\x88\\xf4\\xc5\\x8f\\xfc\\x47\\x60\\xf3\\x59\\xb0\\x03\\xc8\\x72\\xe9\\xa2\\x40\\x55\\x35\\x5e\\xa9\\x58\\x5e\\x95\\x10\\x69\\xdc\\xa2\\x5f\\xd0\\xcc\\x0b\\x9d\\xb5\\x2a\\xae\\xaf\\x19\\xd4\\x3f\\x2e\\xab\\x4f\\x83\\x56\\x03\\xad\\x12\\xd2\\xdc\\x49\\xb3\\x10\\x25\\x6b\\x94\\xbe\\xd5\\x48\\x96\\xa1\\x6b\\x69\\xb0\\x9c\\xb4\\xc8\\xff\\x5c\\x23\\xcc\\xe5\\x59\\x3d\\x87\\xad\\xe2\\xa8\\x2a\\xda\\x50\\x85\\x9e\\x15\\x44\\xc1\\x86\\x18\\xa6\\x5c\\x00\\x7e\\xf4\\x24\\xc9\\x85\\x4a\\x17\\x5b\\x6e\\x6c\\x0e\\x64\\xb2\\xc8\\xeb\\x8a\\xd4\\xd2\\x8b\\x97\\x7d\\x68\\xe7\\x81\\x69\\x91\\x51\\x98\\x97\\x53\\x94\\xd3\\xb9\\xb2\\x69\\xca\\xb0\\xd3\\x26\\x1b\\x2b\\x56\\xcd\\x2c\\xc4\\xbd\\xdb\\xd4\\xf1\\x43\\x9e\\x0d\\xbe\\x2c\\x9b\\x3f\\x3f\\x75\\x14\\xed\\xac\\x5e\\xbb\\x46\\x22\\xb9\\x2a\\x69\\xa8\\x40\\xa9\\x02\\x85\\x50\\xb2\\x21\\xdb\\x59\\xdd\\xfb\\x00\\x13\\x96\\xf8\\x63\\x92\\xa1\\x7f\\x08\\xcc\\xb1\\x94\\xcd\\x9e\\x1a\\x00\\x81\\xd7\\xdd\\x9c\\xca\\x23\\x57\\xfe\\xb8\\xb7\\x95\\xe5\\x17\\x02\\x9f\\x79\\xc8\\x2a\\x3b\\xe6\\xf9\\xa0\\x31\\xdd\\x1a\\xf1\\xe7\\x9e\\x49\\x82\\xbf\\x8e\\x76\\xb3\\x10\\xf9\\xd3\\x55\\xef\\xcd\\x5b\\x1e\\xfa\\x9f\\x35\\x9c\\x17\\xcf\\x3b\\x51\\x0d\\x51\\x3e\\x8c\\xd5\\x78\\x6a\\x0d\\x34\\x45\\xdc\\x59\\xa8\\x43\\x3a\\x46\\x48\\x86\\x87\\xb0\\xf5\\x8b\\x1b\\xd6\\x56\\x7c\\x2a\\xf4\\x87\\x3b\\x51\\xfc\\x84\\x5e\\x76\\x7e\\x24\\x30\\x05\\x19\\x2f\\x8f\\x06\\x74\\xf2\\x81\\x26\\x5a\\x55\\xd7\\x6c\\xea\\x32\\x22\\x60\\xc9\\x32\\xce\\xa6\\x71\\x7a\\xdb\\x98\\xa2\\xdd\\xa8\\xc6\\x98\\xe2\\xe8\\x92\\x55\\xfe\\xb7\\x7d\\xa7\\x64\\x81\\x67\\xbc\\x1e\\x58\\x87\\x7f\\xeb\\x72\\xd1\\xd1\\x4b\\x0c\\x30\\x4f\\x07\\x37\\x2d\\x95\\x56\\x75\\x23\\x7c\\x49\\xf7\\xa6\\xdb\\xc9\\x15\\xe6\\x81\\x4a\\xba\\xe6\\xcc\\xe4\\xca\\xf9\\xf4\\x80\\x87\\xe9\\xdf\\xb2\\x82\\xd8\\xf3\\x40\\x37\\x7c\\x1e\\x29\\xc6\\x73\\x1c\\xcc\\x26\\x67\\xda\\x66\\x95\\xb7\\x12\\xbe\\x03\\x12\\xd8\\x65\\x11\\x19\\x34\\xf1\\x68\\xd5\\x54\\x43\\x65\\xdd\\xae\\x27\\xab\\xc6\\x4a\\xef\\xbc\\xb3\\x22\\xdb\\x7d\\x97\\xd9\\x0d\\x95\\x7a\\x63\\x7b\\xd8\\x26\\xc2\\x27\\xe9\\xeb\\x18\\x0b\\x45\\xa4\\x31\\x62\\x6a\\x6f\\xd8\\x90\\xc0\\xe5\\xf4\\xed\\x7e\\x85\\x64\\x74\\x75\\x2f\\x80\\xb5\\xae\\xf6\\xe7\\x3e\\xfd\\xaa\\x6c\\x2c\\x45\\x1b\\xd7\\x4c\\x1e\\xf4\\x66\\xca\\x3a\\xaa\\x25\\x73\\xbb\\x52\\xcb\\x2b\\x1c\\xa9\\x6a\\x1b\\x57\\x44\\x03\\xce\\xae\\x1c\\xf0\\x5f\\xfc\\x53\\x43\\x0e\\x1e\\x4c\\xd5\\x59\\x3b\\xd1\\xef\\x84\\xbc\\xbf\\xe2\\x19\\xf0\\x81\\x60\\xd1\\x66\\xf2\\x73\\x1d\\x99\\xb8\\xd7\\xa3\\x2b\\x12\\x99\\x1f\\x77\\x77\\x5a\\x26\\x7e\\xc0\\x82\\x97\\xec\\x51\\x2d\\x7b\\x72\\x43\\x56\\x32\\x52\\x5c\\x04\\x00\\x0f\\xb0\\x0a\\x79\\x3f\\x8b\\x5f\\x8f\\x37\\x47\\xb5\\x53\\x59\\xdf\\x21\\xb7\\xe2\\xc4\\x9f\\x2b\\x0b\\x9a\\xe0\\x82\\xaf\\xc7\\x0a\\x14\\x68\\x71\\x37\\x0b\\x8d\\x50\\x08\\x6d\\xe0\\x0f\\x94\\x48\\xbe\\x89\\x02\\x17\\x4b\\xa2\\xcc\\x85\\x1f\\xa3\\x79\\xdd\\x70\\x31\\xca\\x45\\x7a\\x88\\x69\\xaf\\x4b\\x6c\\x27\\x29\\xda\\xc5\\x19\\x55\\x6b\\x8b\\xb4\\xab\\x51\\x9e\\xf1\\xbb\\x02\\x4e\\xa8\\xb7\\xf0\\x17\\x71\\xc9\\xaa\\xb7\\x48\\xe5\\x73\\x81\\xa0\\x19\\x2a\\x6e\\x39\\x8c\\xbe\\x6d\\xd9\\xf3\\x67\\xcc\\x7b\\x33\\x54\\xf8\\x3b\\x79\\xbc\\xda\\x46\\xb7\\x93\\xa4\\xad\\xa8\\x55\\x49\\xc8\\xd6\\xbd\\xd6\\x16\\x81\\x24\\x36\\x2f\\xf9\\x08\\xaa\\x1a\\x0c\\xb7\\x8a\\xa3\\x30\\xc4\\x2d\\x5a\\x5d\\x48\\x12\\x35\\xac\\xac\\x3a\\x91\\x9b\\x96\\x9c\\x50\\x98\\x72\\x66\\xd4\\x04\\xd1\\x5d\\x0e\\x70\\x6f\\xd9\\x00\\x76\\x34\\xf6\\x9e\\x13\\xc5\\x6e\\xc4\\x71\\x33\\x88\\x4f\\xca\\xdd\\xc1\\x6b\\xee\\xee\\xd1\\x9e\\x0c\\xd9\\x17\\xaa\\x49\\x63\\x67\\x86\\x7d\\xfc\\xea\\x27\\x4e\\x1a\\x47\\xda\\x77\\x4f\\x3c\\x93\\x63\\x02\\x1e\\x7c\\x8d\\x6b\\xf8\\xf0\\x00\\x53\\xfa\\xcc\\x11\\xcb\\x68\\xa9\\xd6\\xe1\\xfc\\x2d\\x6d\\x19\\x17\\x5d\\x63\\x24\\xff\\x7c\\xa6\\xc2\\x30\\x58\\xb8\\xb6\\x93\\xd8\\xfd\\x4e\\x0b\\x51\\xdc\\xbb\\x11\\x35\\x43\\xf2\\xfc\\xc0\\x45\\x2e\\xb9\\xd9\\x67\\xac\\x0f\\xa9\\xb2\\x3e\\x9e\\x0b\\x1d\\xa8\\xd8\\x3a\\x3c\\x1f\\xc9\\xe9\\xec\\x97\\x1f\\x0f\\x67\\xfc\\x74\\x5b\\xb1\\x73\\x76\\xbc\\x46\\x24\\x5f\\x52\\x8c\\xb6\\xe5\\xfe\\xe1\\x1b\\xcd\\xda\\x86\\x7b\\x7f\\x79\\x01\\x9c\\xf9\\xdb\\x59\\x18\\x58\\x23\\x0a\\xec\\xb4\\xd1\\xe9\\x3d\\x16\\x7c\\xd8\\x6b\\x42\\xdd\\x87\\x9a\\x13\\xfa\\x0e\"},\n{{0xc5,0xa5,0x05,0x34,0x77,0xae,0x31,0x15,0x8e,0x74,0x69,0xdd,0x15,0x04,0x86,0x76,0x50,0xd4,0x6f,0x15,0x89,0x06,0x7f,0x5c,0xd8,0x81,0xca,0xf2,0x5c,0x26,0xcb,0x21,},{0x70,0xf8,0x5d,0xb9,0x80,0x7b,0x26,0xfc,0xf3,0xe6,0x69,0x0b,0x91,0x72,0x4f,0x7a,0xe3,0xd2,0x0e,0xc3,0x60,0x4a,0xb7,0xd6,0x30,0x8d,0x90,0x94,0x30,0x8b,0x2d,0x59,},{0xf5,0x19,0x1b,0x44,0xbd,0x6c,0xc3,0xea,0x28,0x17,0x71,0xdf,0x12,0x54,0x9b,0xa2,0xbe,0x22,0x8b,0x51,0xeb,0x79,0x1b,0x9e,0x5e,0xd2,0x81,0x5f,0x86,0x2a,0xa6,0x30,0xb5,0x69,0x67,0xcd,0xef,0x8b,0x6a,0xf0,0xb9,0xd2,0x1a,0xb8,0xc9,0x7a,0x6d,0xff,0x68,0x1c,0xce,0xd9,0xf5,0x01,0x97,0x13,0xd4,0x35,0x7c,0xb3,0xe5,0x4c,0x0d,0x08,},\"\\x85\\x71\\xff\\x39\\x03\\x48\\x6a\\x43\\xa6\\x12\\x6c\\x32\\x3e\\x7b\\x3a\\x74\\x14\\x1d\\x13\\x85\\xd4\\xbd\\x70\\x3f\\x19\\xe2\\xd1\\xb6\\x4b\\x50\\x28\\x1d\\x27\\x16\\x8a\\xe3\\xe7\\x69\\xc6\\xdd\\x9d\\xf7\\xd9\\x78\\x64\\xfb\\x37\\x82\\x2f\\x00\\x21\\x85\\x2e\\x31\\x68\\xab\\x7d\\x84\\x5a\\x65\\x45\\xed\\x0c\\x37\\x7d\\x9f\\x7c\\x04\\x8a\\x2b\\x96\\xe8\\xdc\\xf4\\x45\\x77\\x96\\x84\\xa0\\x58\\xc2\\xb9\\xc2\\x1a\\xc6\\x8a\\x0c\\x34\\x1d\\x1d\\x6c\\x09\\x81\\x45\\x64\\x57\\x45\\x8e\\xb7\\xce\\xbf\\x66\\x67\\x87\\x40\\x77\\x7e\\xca\\x26\\xe0\\x1e\\x1c\\x8f\\x53\\xb5\\xd4\\x75\\x6c\\xc5\\xf0\\xb9\\x0f\\x0c\\x5d\\xb0\\x53\\x93\\xcd\\x4b\\x8e\\x44\\xf6\\x81\\x0c\\xaa\\x5a\\x11\\x6a\\x33\\x57\\x77\\x24\\x39\\x5d\\x41\\x3a\\xf6\\x19\\x63\\x2a\\x6f\\xed\\x14\\xe2\\x15\\xc2\\xf1\\x9d\\x10\\x5c\\xe2\\xbf\\x14\\x98\\xe6\\xd2\\xab\\x4f\\x65\\x0f\\x61\\xba\\x5c\\xf6\\xd0\\xc7\\x3b\\xbb\\xde\\x98\\xe3\\x04\\x29\\x91\\x0a\\x4e\\x67\\xdf\\xbc\\x71\\x7c\\xb0\\x91\\x18\\x2d\\x59\\x70\\x58\\xb5\\xd7\\x65\\xd0\\x97\\xe6\\x87\\x58\\x31\\xb5\\x88\\xaa\\xeb\\x3e\\x73\\x27\\xe8\\x56\\xb4\\x2f\\xa9\\x83\\xfd\\x25\\x4e\\xf1\\xf9\\x18\\xb0\\x43\\xd1\\xdd\\x3d\\x7b\\x7e\\x30\\xb3\\x15\\x38\\x6e\\xec\\x91\\xe7\\xf9\\x4d\\x59\\x8f\\x4b\\xeb\\x3b\\x27\\xb4\\x2f\\x4e\\xe1\\xfb\\xf7\\xaf\\xb4\\x86\\xbd\\xcc\\x60\\x81\\xcc\\xb8\\x67\\xf0\\x41\\x11\\x04\\x4f\\x4b\\xbb\\xe3\\xc8\\x12\\x2e\\xde\\xad\\xef\\xa9\\xd6\\x93\\x90\\x6e\\x0d\\x6e\\x13\\x3b\\xf6\\xf2\\xda\\x61\\x58\\xfe\\xed\\xbd\\xa0\\x24\\x41\\x0f\\x12\\x08\\x6e\\x7a\\xcc\\xf1\\xc6\\x8e\\x15\\x57\\xf0\\x0c\\x14\\xe9\\xc7\\xea\\x76\\xa5\\xed\\x13\\x37\\xa0\\x54\\xac\\x2c\\x94\\x9c\\x05\\x97\\x7e\\x03\\x02\\x74\\xf6\\xa4\\xf2\\xa6\\xb3\\x0a\\x15\\xc5\\x70\\xec\\x94\\x33\\xf7\\x4f\\x47\\x52\\x80\\x87\\xc9\\xce\\x9a\\x62\\x92\\x95\\x1c\\x54\\x35\\x49\\x96\\xfb\\x28\\x3c\\x0d\\xc4\\xcf\\x33\\xc0\\x01\\xbc\\x96\\x87\\x5e\\xa6\\xe1\\xf4\\x6f\\x83\\x7f\\xf1\\x8d\\xd9\\x54\\x5f\\xb9\\x93\\x46\\x55\\x34\\x2b\\x12\\xc2\\x99\\x0b\\x9f\\x1c\\x6f\\xf4\\xd6\\x64\\x89\\xd6\\xae\\xdc\\xe7\\x5c\\x7c\\xb0\\x3a\\xc1\\x34\\xbf\\xd3\\x9b\\x18\\x1d\\xfb\\x7f\\x9a\\x97\\xce\\x73\\x7f\\xe5\\x70\\xad\\x5f\\x81\\x34\\x59\\x39\\xa6\\xde\\x5a\\x40\\xa3\\x3a\\x0e\\x44\\xbf\\x95\\x75\\x03\\xd5\\xca\\x02\\x83\\x51\\x2e\\x57\\xfb\\xa8\\xa3\\xa6\\xf2\\xc3\\x90\\x68\\x7b\\x1b\\x77\\x08\\x67\\x6e\\x0f\\xd0\\x3b\\x7c\\x18\\x8d\\x45\\x61\\xc1\\x87\\x91\\x63\\xea\\xf2\\xb5\\x96\\xdd\\xd5\\xf3\\xc1\\xf4\\xda\\xdb\\xc1\\x39\\xc2\\x16\\x48\\x92\\x82\\x0b\\x2f\\xe0\\x9c\\xbc\\x3d\\x19\\x08\\x80\\x76\\x36\\x45\\x10\\x25\\x4f\\x2b\\x6d\\x41\\x03\\x29\\xe7\\x0f\\x2e\\x5a\\x94\\x5b\\xba\\xcd\\x2c\\xa8\\x9b\\xd4\\xb6\\xe1\\xf5\\xe2\\xe1\\xd4\\xf4\\xed\\x2f\\xe0\\x11\\x3b\\xcf\\x32\\x96\\x2f\\x00\\xd5\\xc3\\x3b\\x1d\\xf9\\x88\\x40\\x2b\\xa0\\xdc\\x88\\x04\\xc1\\xaf\\x66\\xcc\\xae\\x26\\x70\\xef\\xa3\\x13\\x4c\\x67\\xfc\\x90\\xfe\\xed\\x8d\\x8d\\xee\\xdc\\xcf\\x6a\\x46\\xf2\\x29\\x40\\x45\\x4a\\xf2\\xbb\\x67\\x54\\xcf\\x23\\x5d\\xdb\\xb0\\x00\\x1c\\x6c\\x74\\x1b\\xf8\\x74\\xbc\\xd8\\xd4\\x1d\\x9d\\xba\\x81\\x62\\x58\\x1c\\x37\\x46\\xd7\\xf3\\x0e\\x73\\xde\\xf6\\x94\\x15\\xaf\\x51\\x81\\xc1\\x49\\x91\\x42\\x95\\x12\\x2d\\x45\\x98\\x2f\\x94\\x94\\x3e\\x20\\xb0\\xff\\xc7\\xfe\\x6d\\xdf\\x19\\xa0\\x22\\xe8\\x7a\\x52\\x13\\x33\\x57\\xa1\\xe8\\x0f\\x37\\xf2\\x8a\\x4c\\x4a\\x8a\\x61\\xc1\\x48\\xdd\\x87\\x5c\\x1e\\x8e\\xcd\\xcd\\x84\\x0d\\xd8\\x63\\xe4\\x4d\\x9b\\xcb\\x16\\xb6\\xe5\\xaf\\x01\\x47\\xb3\\x4a\\x7a\\x90\\x52\\xc8\\xd3\\xf4\\x52\\x01\\x3d\\x2d\\x35\\x4f\\x68\\x03\\xf9\\xea\\xf6\\x05\\x6f\\x3b\\x01\\x3c\\x61\\x6e\\x47\\xf3\\x98\\x81\\x91\\x46\\x32\\x0a\\x5e\\x3d\\xbd\\xf1\\x68\\x43\\xea\\x29\\xde\\xf2\\x62\\xcc\\x9a\\x34\\x36\\x72\\xcf\\x96\\xbc\\xcc\\x6e\\x87\\xe6\\xa6\\xba\\xf0\\x71\\x2e\\x6e\\xe8\\x9a\\xa6\\x04\\x89\\xf1\\x7c\\xb7\\x2d\\xdc\\x44\\xba\\xd1\\x61\\x58\\x7d\\x87\\xf5\\x4d\\x67\\xcc\\x0a\\x27\\x78\\x49\\x7d\\x83\\x10\\x88\\x31\\x5f\\xfe\\xee\\x3d\\x26\\x8c\\x59\\xbe\\xfe\\x88\\x4c\\x3a\\xa0\\xe0\\xae\\x22\\x96\\xbb\\xb6\\x0e\\xac\\x90\\x97\\xcd\\xf8\\xdc\\x09\\x87\\xce\\xb1\\x74\\x2b\\x05\\x86\\xdf\\xce\\x79\\xec\\x10\\x42\\x5b\\x28\\xf4\\xe6\\x45\\x20\\xd7\\x12\\xe3\\xf4\\x6e\\xa8\\x3b\\xe2\\xde\\x6a\\x15\\x74\\x07\\x3b\\xc5\\xc7\\x55\\x7b\\x8e\\x25\\xb6\\x41\\x11\\x84\\xea\\x28\\x3d\\x88\\x00\\x23\\x2c\\x79\\x06\\x94\\x21\\x81\\x1f\\x88\\x3c\\x29\\x94\\xe7\\xb7\\xe2\\xad\\x9f\\x8d\\xc4\\x89\\xc9\\x34\\x77\\x24\\x39\\x46\\x09\\xc9\\x89\\x09\\xa6\\xc2\\x60\\x17\\xb5\\x0f\\x20\\xd5\\x0c\\xca\\xcb\\xde\\x36\\xb7\\x6b\\xa6\\x46\\xa7\\x6d\\xc6\\xa5\\xb0\\xf5\\x06\\x49\\xc5\\x65\\x8b\\xbd\\xfd\\xd3\\xb5\\xca\\xfc\\x54\\x79\\xa2\\xf4\\x8e\\xe5\\x15\\x42\\xf2\\x3e\\x9f\\xc9\\x21\\x32\\x06\\x0f\\xd6\\x35\\xef\\xf4\\x52\\x11\\x1c\\xda\\xf3\\xef\\xbd\\xb7\\xdb\\x9e\\x7d\\x47\\x16\\xd0\\xd6\\x01\\x1c\\x29\\x11\\x8a\\x55\\xd4\\xc1\\xa4\\x36\\xab\\xe2\\x4e\\x3c\\xbf\\x40\\x23\\x5b\\x76\\xdd\\x19\\x23\\x50\\x3c\\x5f\\x35\\x98\\x12\\x4e\\x2d\\xf5\\x5a\\x2d\\x1f\\x24\\x6e\\x90\\xde\\x4b\\x71\\x64\\x5d\\x51\\x75\\xb6\\x1b\\x01\\x74\\xe7\\xe5\\x7d\\xf1\\x28\\x5c\\xcf\\x8c\\x86\\xb8\\x38\\x2c\\x25\\x80\\x79\"},\n{{0x05,0xc7,0x19,0xca,0xe0,0x6e,0x2b,0xb7,0xd8,0x78,0x63,0xab,0x31,0x50,0x27,0x2c,0xb2,0xf8,0xc3,0xaa,0x24,0x21,0x91,0x2d,0x87,0xf9,0x8e,0x75,0x89,0x63,0x8c,0xe9,},{0x90,0x21,0x17,0x96,0xfe,0xd3,0xd5,0x3b,0x81,0xf8,0xfe,0xeb,0x1b,0xad,0x1f,0xfc,0x93,0x3e,0x5f,0x10,0xd3,0xbc,0x1b,0x36,0xdd,0xf2,0x10,0xa4,0x79,0x23,0xdf,0x03,},{0xba,0x6e,0xb7,0x51,0x37,0x1d,0xf7,0x21,0xb7,0x70,0x7a,0x5b,0x33,0x39,0xed,0xb5,0x5f,0x13,0x86,0x40,0xb9,0x7b,0xe6,0x33,0x4d,0x6c,0xda,0x51,0x91,0xa3,0xff,0x63,0x67,0x91,0x17,0x61,0x88,0x2a,0x4a,0x00,0x7f,0x16,0x1b,0x74,0x8c,0xec,0x95,0xb1,0x9e,0x99,0x5f,0x28,0x58,0xc2,0x57,0xcd,0x61,0x69,0x25,0x66,0x62,0x30,0x11,0x02,},\"\\xec\\x24\\x19\\x18\\x41\\x8e\\x60\\x52\\x20\\x42\\xe6\\x73\\x39\\xe6\\x64\\x94\\x99\\xf3\\x1a\\x6c\\x7c\\xf8\\x92\\x5f\\x1f\\x61\\xdd\\xe8\\x94\\x60\\x36\\x02\\xae\\x8b\\xb5\\xf5\\x88\\x09\\x82\\x1f\\x83\\x34\\x4f\\x23\\xcd\\x31\\xe6\\x4e\\xc9\\xff\\xe7\\x9a\\x98\\x6b\\x7e\\x29\\xe4\\x31\\x9a\\x63\\x41\\x43\\x16\\xbd\\x6e\\xe2\\x0e\\x02\\xa5\\x0d\\xa4\\x40\\x12\\xbd\\x2d\\x6f\\x9f\\x67\\x9e\\x88\\xed\\x0c\\x8b\\xb1\\xe2\\xca\\xd5\\x5e\\x56\\x57\\x89\\x88\\x33\\x45\\xb7\\x54\\x6f\\x3d\\x54\\xb1\\xb3\\x62\\xb1\\xc6\\x50\\x50\\x2c\\x01\\x9d\\x73\\x13\\xaf\\xbc\\x82\\x68\\x9b\\x23\\xa3\\xa5\\x2d\\x8f\\x1a\\xf9\\xf8\\x1e\\x18\\x8d\\xbd\\xf2\\x03\\xfb\\x53\\x00\\xb4\\x22\\x5b\\xfb\\x67\\x73\\x33\\x7b\\xe6\\x75\\x0b\\x3d\\xb8\\x8c\\xe0\\x97\\x34\\x3f\\x62\\xee\\x2c\\x11\\x85\\x74\\xef\\x15\\x0c\\xbd\\x4c\\x62\\x76\\x0c\\x3e\\x43\\xdc\\xbc\\x39\\x21\\x8b\\xd6\\xd9\\x85\\x65\\xfa\\x38\\x98\\x11\\xb1\\xa6\\x74\\xf6\\x17\\xfd\\x75\\x67\\x33\\xdc\\xb5\\x67\\xa9\\x2d\\xbf\\x38\\x55\\xb5\\x7b\\x1f\\x4a\\x46\\xd5\\xb8\\x97\\x4b\\x39\\xac\\x0d\\x0e\\x24\\xd9\\x9d\\x20\\x37\\xc0\\x4f\\x60\\xd9\\x14\\x0f\\x64\\xb0\\x7a\\x77\\xd7\\xea\\xa1\\xce\\x8a\\x78\\xe8\\x44\\xb1\\xdc\\xf0\\xe3\\x74\\x24\\xf3\\xf9\\xd2\\x53\\xa5\\x48\\x56\\x1a\\x03\\x75\\xa8\\xd4\\x34\\x12\\x97\\xbf\\xed\\xb7\\x04\\x8c\\x79\\x35\\xe1\\x48\\x14\\x18\\xf9\\xbb\\xa9\\x27\\x1f\\x9f\\xd6\\x02\\x62\\x24\\xe7\\x8e\\x05\\x5d\\x8a\\x09\\x39\\xfa\\x2f\\xe1\\xdb\\xc0\\xfc\\x7b\\x58\\x3e\\x4c\\xff\\x34\\x90\\xe1\\xd0\\xf6\\x10\\xb2\\x52\\xe3\\x0d\\x84\\x97\\xd0\\x0e\\x4a\\xac\\xb3\\x75\\xf1\\x9a\\x47\\x19\\xf7\\x9c\\xa1\\xea\\x58\\x3a\\x2f\\x8b\\x14\\x06\\xa4\\xaa\\x5c\\xb5\\x5c\\x08\\xb6\\x59\\x3b\\x67\\x6e\\xb5\\xc3\\x4a\\xbe\\x89\\x39\\x2d\\x62\\xd2\\x33\\x08\\xa3\\x34\\x8b\\x57\\xaf\\xfb\\xba\\x77\\x39\\xcd\\xe8\\xe1\\x90\\x9d\\x34\\x25\\xee\\xb2\\x09\\x26\\xa9\\x77\\xd3\\xa9\\x4a\\x86\\xe0\\xba\\x10\\xb3\\x86\\x92\\x66\\x98\\x82\\x7e\\x86\\xb4\\xfd\\x6c\\x61\\x80\\x04\\x7c\\x87\\xec\\x3b\\x31\\x61\\x9d\\x05\\xa9\\xdf\\x34\\xef\\xd3\\xd7\\x6a\\x83\\x69\\x62\\xb2\\xef\\x60\\x4d\\x07\\xaf\\x09\\x75\\xeb\\x8f\\x3d\\xd2\\x25\\x94\\x32\\x38\\x02\\x56\\x4c\\x92\\x9b\\x3f\\x65\\xda\\xcb\\x57\\x2b\\x32\\x55\\x3d\\x69\\xb3\\x1a\\x19\\x76\\x90\\xa9\\xbb\\x86\\x0b\\x08\\x0a\\x77\\xcf\\xbb\\x3c\\x17\\x5a\\xaf\\xce\\x01\\x46\\xa8\\x2a\\x4d\\x06\\xe8\\xc7\\x50\\x52\\x1b\\x72\\x6e\\xf1\\xcb\\x29\\xd0\\x21\\xe5\\x91\\x5e\\x5e\\x84\\x62\\xed\\xe5\\x39\\x54\\x45\\x24\\x5c\\x9a\\xe8\\x82\\xee\\xc4\\xb1\\x74\\x5e\\x11\\x79\\x1f\\x76\\x21\\xd3\\xfe\\x70\\x2c\\xac\\x15\\x25\\xe1\\xf7\\xb4\\x6e\\x11\\x05\\xcd\\xd0\\x6d\\xa2\\xaf\\xde\\x26\\x47\\x5d\\xc1\\xf7\\x8d\\xf8\\xe2\\xd7\\x2b\\x0e\\xc3\\xef\\x7d\\xd9\\x56\\x19\\x3c\\x99\\x68\\x42\\xa4\\x32\\x69\\x65\\x38\\xcf\\x12\\x3d\\x76\\x87\\x21\\x1f\\xfc\\xd0\\x90\\xb9\\x38\\x1e\\xab\\xec\\x87\\x9f\\x76\\x9a\\xac\\x0d\\x35\\x64\\xe1\\x6d\\xf7\\x94\\xfa\\x24\\x72\\x8d\\x71\\x72\\xfd\\x07\\x73\\x2e\\xab\\x07\\x7e\\xd8\\x1c\\x22\\x08\\x4f\\x6f\\x78\\x1b\\x62\\x6d\\xac\\x67\\x42\\x8a\\x9d\\xdf\\x3b\\x0d\\xb0\\x46\\x52\\x51\\x22\\x0d\\x18\\xb8\\xbf\\x62\\x04\\x64\\xc5\\x1a\\x57\\x8d\\xec\\xcc\\xbb\\xab\\xa5\\x45\\xed\\x44\\x2c\\xf1\\x2c\\x4c\\x66\\xf6\\xcb\\x6e\\x69\\x01\\xea\\x54\\xae\\xda\\x23\\x6e\\xc4\\x5e\\xef\\x88\\x6a\\x7d\\xdd\\x2c\\x04\\x1c\\xab\\xa3\\xa6\\xce\\xe3\\x39\\x71\\x5b\\x6c\\xe9\\x7e\\x76\\x5e\\xc3\\x47\\x9f\\x3d\\x52\\x82\\x4a\\x81\\x94\\xbe\\xc2\\xa8\\x96\\x47\\xe8\\xc6\\x3f\\xf7\\x64\\x5f\\xf6\\xd0\\x53\\x67\\xc7\\x67\\xbc\\x48\\xcc\\x96\\xba\\xf0\\x5d\\x6a\\x41\\x5b\\x2a\\x5a\\xff\\x9b\\xfb\\x21\\x79\\x48\\xfa\\xd3\\x57\\xb9\\x8f\\x47\\xdf\\xed\\x62\\xff\\x12\\x85\\xeb\\x9f\\x46\\x8f\\x0f\\x29\\xed\\xd7\\x5a\\xdc\\x0c\\x8c\\x2f\\xf6\\xa5\\x65\\xed\\xb8\\xed\\xfb\\x48\\xbe\\xa0\\x3b\\x70\\xc4\\x47\\x36\\x9c\\x52\\xd8\\x81\\xee\\xa0\\xee\\xdb\\x08\\xc3\\x15\\xcd\\xf0\\xbf\\xeb\\x97\\x9c\\x1c\\x02\\x50\\x94\\x6b\\xb1\\x00\\xc2\\x86\\x6b\\x41\\x69\\xb8\\xcb\\xd4\\x4d\\x65\\x8f\\x02\\x36\\xe1\\xe9\\xf3\\xaa\\x13\\xbb\\x8e\\x80\\x22\\xa3\\x8c\\xe9\\x97\\xc9\\x4b\\x5b\\xaf\\x97\\xe0\\xba\\x62\\x1f\\x7e\\x09\\x67\\x1c\\xe6\\x38\\xc2\\xa3\\x9e\\xe6\\xc6\\xe2\\x5a\\x68\\x80\\x19\\xdd\\x16\\x76\\x75\\xce\\xae\\xc2\\x1c\\x6b\\x42\\xa7\\xc8\\xc4\\x76\\xd1\\x29\\xdc\\xc6\\x93\\xc3\\x92\\xa0\\x2b\\xe9\\x1b\\x87\\x43\\x7a\\x08\\xa0\\xeb\\xf1\\xa7\\xbd\\x97\\x6b\\xa2\\x37\\x74\\x76\\x68\\x38\\xb8\\xd6\\x02\\x4f\\x5b\\xb9\\xb0\\x7f\\x3c\\x6b\\x71\\x9b\\x4d\\xe1\\x5b\\x72\\x44\\x80\\x48\\xab\\x70\\xdb\\x3d\\x4b\\xea\\x77\\xba\\x35\\x9b\\x51\\xb1\\xec\\x17\\xdb\\xe8\\x01\\x0a\\xef\\x02\\x44\\xa8\\x07\\x9c\\xa8\\xb9\\xa2\\xa7\\x97\\xf3\\xb1\\xfe\\x04\\x7c\\x8d\\xd5\\xca\\xb7\\xfb\\x48\\x68\\x29\\x23\\x9c\\x4e\\xf6\\xd9\\xa3\\x83\\x70\\xd4\\x88\\xc4\\x7b\\x7c\\x03\\x0e\\x49\\xa5\\x50\\x0c\\x9a\\xbb\\x39\\xa9\\xa5\\xab\\xfe\\x72\\xe9\\x18\\xb7\\x63\\x84\\xec\\xaa\\xfe\\x16\\x27\\x26\\x6c\\xd1\\x4e\\x69\\x6c\\x09\\xd2\\x51\\x2e\\x31\\x25\\x82\\xa8\\xa9\\x11\\xe7\\xb7\\xbf\\xa0\\x4c\\x21\\x81\\x9a\\xf6\\x87\\xf0\\x4c\\x5e\\x0c\\xbe\\x9a\\x2c\\xe2\\x4d\\x4d\\x3f\\xd1\\x21\\x90\\xb2\\x53\\xda\\xbc\\x12\\xc6\\x3c\\xab\\xfa\\x94\"},\n{{0x53,0x11,0xf3,0xc9,0x61,0x01,0xcb,0x8b,0x7a,0xbc,0x62,0x2b,0xb9,0x32,0x6b,0x8f,0x51,0x3c,0x2b,0x16,0xd2,0x94,0xdf,0x79,0x7f,0x56,0xdf,0xd8,0x20,0x3d,0xda,0x27,},{0x23,0x0b,0x70,0x02,0xf5,0x7c,0x79,0xae,0x2e,0x6b,0xfd,0xb8,0xdf,0x30,0xdb,0x3e,0x90,0x07,0x56,0xb5,0x4a,0xf3,0x96,0x8c,0x67,0x0e,0xe2,0xf3,0x2b,0xb1,0x1e,0x0a,},{0x3c,0xbb,0xb2,0x60,0x88,0x70,0xde,0xa1,0xef,0xee,0xbb,0x3f,0xbf,0x68,0x1e,0x27,0x70,0x5c,0x35,0xe4,0xdd,0xee,0xa8,0x6c,0x1b,0x34,0x2a,0x77,0xdc,0x29,0x6b,0x49,0x84,0x19,0x80,0x8e,0xac,0xbc,0x78,0x85,0x56,0x11,0xff,0xbc,0x92,0x65,0xa7,0x47,0x98,0xe5,0x18,0x27,0xe6,0xe5,0xd8,0x11,0x81,0x6d,0x3c,0xa2,0x1e,0x8b,0x9c,0x06,},\"\\x61\\xb1\\x5b\\xe3\\x7c\\x4e\\xb3\\x97\\xd9\\xe7\\x7e\\x00\\x15\\x1a\\x28\\xed\\x3e\\x86\\xd5\\x0a\\x95\\x52\\xbb\\x48\\x50\\xb6\\x21\\x76\\x3f\\x01\\x2e\\x7e\\x77\\xbb\\x5d\\xb8\\xf3\\xdf\\x7d\\xcf\\x76\\x9f\\x2d\\x1d\\x46\\xd8\\xd6\\x0b\\xae\\x40\\xc8\\xca\\x6e\\x25\\xc6\\x41\\x0b\\x60\\x07\\x8a\\x93\\xfd\\x05\\x90\\x21\\x14\\xbd\\x91\\x04\\x5c\\x06\\x19\\x2c\\x70\\xc4\\x2c\\x9f\\x41\\xf8\\x16\\x1c\\xa4\\x65\\x64\\xeb\\xc2\\x1a\\x4b\\xdd\\x81\\x90\\xeb\\xa2\\xae\\xb3\\x09\\x82\\x30\\x72\\xec\\x2c\\x02\\x00\\xce\\x64\\x98\\xf9\\xd7\\x2b\\x37\\xb3\\xfb\\x46\\x67\\x74\\x32\\x6d\\xf3\\x7a\\xd8\\x80\\xd8\\xed\\xdb\\x32\\xaf\\x67\\x3e\\x45\\xd8\\x8e\\xec\\x49\\xb1\\x57\\x7b\\x43\\xb8\\x63\\x91\\x11\\xc2\\xe0\\xb9\\x41\\x87\\xd2\\xd4\\xe0\\x17\\x3c\\x00\\x0f\\x4c\\x37\\xbe\\x84\\x5d\\x68\\x81\\x0b\\x78\\x89\\xff\\x2a\\x04\\x9f\\x3f\\x9f\\x24\\x5e\\xc7\\x0f\\x21\\xde\\xf9\\x77\\x80\\xb6\\x11\\x40\\x0a\\x83\\xc3\\x1a\\x79\\xd9\\x3a\\x8e\\x98\\xb6\\x08\\xfd\\xcf\\x24\\x88\\xb0\\x68\\xfe\\x1a\\xe4\\x21\\x72\\x93\\xa9\\x36\\x7b\\xb7\\x34\\xb5\\xbc\\x7b\\xd8\\x81\\x9b\\x37\\x7f\\x09\\x0b\\x4f\\x8f\\xdb\\xff\\x50\\x79\\x9c\\x76\\x88\\x0d\\x19\\x13\\x35\\x80\\xe1\\xdd\\xfc\\x2b\\x9b\\xaa\\xdd\\xba\\xb3\\x4f\\xc6\\xfd\\xc0\\x78\\x01\\x4b\\xd1\\xff\\x73\\x9d\\xaa\\xfe\\x54\\x76\\xf3\\xf7\\x9d\\x4d\\xbe\\xc2\\x16\\xfa\\x76\\x80\\xee\\x8e\\x84\\x00\\x2d\\xcb\\x9d\\xdb\\xc7\\xfc\\x1e\\x1c\\x8e\\xf4\\xf1\\xb2\\xa2\\x08\\x1b\\x92\\x82\\x24\\x3d\\xa6\\x15\\x3c\\x1f\\xce\\x09\\x05\\xcf\\x35\\xf8\\x3a\\x68\\x4c\\x01\\xb0\\x45\\x57\\xec\\x84\\xf7\\xe9\\xa9\\x4f\\xc2\\x88\\x2e\\x2f\\xf1\\x9f\\xea\\x21\\xd2\\xce\\x61\\x67\\x86\\x1c\\xe0\\x1d\\xf8\\xb8\\xd3\\xc3\\xe8\\xd2\\x55\\x61\\x0b\\x7a\\xf2\\x59\\x6c\\xd5\\xcf\\x00\\x16\\x73\\x49\\x42\\xcc\\x71\\x4c\\x27\\x2c\\x05\\xfd\\xa9\\xd3\\x47\\x23\\x62\\x66\\x46\\xa4\\x61\\x30\\x18\\x2c\\xeb\\xcf\\x17\\x9e\\xc0\\x0a\\x6a\\x17\\x3b\\xd8\\x57\\x7f\\xa8\\x45\\xc4\\x4d\\x19\\xc6\\x99\\x79\\x44\\x75\\x5f\\x2b\\x4e\\x46\\x85\\x63\\xa7\\x5e\\x90\\x16\\x52\\x3b\\x87\\xdd\\xac\\x3e\\xee\\x21\\xbc\\xbc\\xa0\\x8f\\xcc\\x29\\x54\\x6a\\x43\\xcb\\xe0\\xd8\\xd1\\x0a\\x0e\\x8d\\xdc\\xba\\x17\\x2d\\x1d\\xed\\x15\\x03\\x78\\xe1\\x8b\\x36\\x8c\\x77\\x63\\x91\\x3e\\x4b\\x40\\x70\\x12\\xfd\\x76\\xa8\\x72\\xd2\\xcb\\x04\\x93\\x0b\\x8e\\x22\\xb3\\x08\\x24\\x3d\\x4c\\xc2\\x78\\xfd\\xf2\\xe1\\xf9\\x40\\xae\\x89\\xac\\x89\\x1b\\x9e\\x06\\x61\\xae\\xe5\\x53\\x93\\x7b\\xf3\\x50\\xb4\\x07\\x07\\x0a\\x1b\\xdf\\xc4\\xf7\\xa3\\x78\\x7e\\xf3\\x99\\xd2\\xca\\xf4\\xec\\x74\\x43\\x9c\\x58\\x73\\x76\\xc7\\x7b\\xe0\\xc3\\xde\\x53\\x9d\\x3a\\xc2\\x60\\x89\\x76\\x5b\\x9b\\xe1\\x0b\\x90\\x38\\x69\\x46\\x36\\xe2\\x62\\xd7\\xba\\xa0\\xb3\\xa8\\x94\\x1a\\x20\\x15\\x96\\x76\\x39\\xf6\\x04\\x4c\\x67\\xe5\\x9b\\xc8\\x1c\\xf2\\xfb\\xa7\\x04\\xac\\x0d\\xf4\\x8d\\xa6\\x03\\x74\\x05\\xa8\\xe8\\xb8\\xa7\\xce\\x3c\\x58\\xef\\x38\\xa8\\x83\\x53\\x8b\\x24\\x7f\\xfe\\x18\\x09\\x7a\\xf0\\x95\\x24\\x2b\\x05\\x8b\\xdd\\x1e\\x3e\\x24\\x5e\\xec\\xe0\\xa7\\x1b\\x75\\xb9\\x7d\\x52\\xf2\\x0d\\x6d\\x51\\xbb\\x97\\x66\\xb0\\xda\\x0f\\xc0\\x9c\\x8a\\xc2\\xa3\\x0f\\xb6\\xe7\\xb3\\x2e\\xe0\\x6d\\xad\\xf4\\x6d\\x73\\x59\\xcc\\x06\\x6a\\xa9\\x47\\x85\\xd8\\xa8\\x82\\xff\\x09\\x7d\\x78\\xa8\\x6b\\xe2\\xd4\\x56\\x00\\xdd\\x3d\\x30\\x60\\x12\\x5f\\x01\\xc0\\x63\\xe4\\x88\\xd5\\xc3\\xef\\xee\\x1b\\xca\\x1e\\x58\\x51\\x64\\x55\\xff\\xca\\xec\\x1b\\x81\\xef\\x43\\x38\\x76\\xbf\\x09\\xff\\xa5\\x1d\\x6f\\x50\\x18\\x58\\x52\\x24\\x57\\x9c\\xb6\\x7b\\x56\\xce\\x1c\\x21\\x6e\\xc0\\xa8\\x83\\xe0\\x6c\\x8e\\x15\\x63\\x42\\x1e\\xa7\\x2b\\x0c\\x10\\xd4\\xbb\\x31\\xe4\\x91\\xc2\\xae\\x2f\\xe8\\x13\\x9f\\x24\\x9e\\xc9\\x27\\xd8\\x06\\xba\\x08\\xdb\\x52\\xb1\\xb5\\x06\\x66\\x90\\x47\\xf0\\xc1\\x16\\xff\\x37\\xac\\x5b\\xa6\\xcd\\xb1\\xea\\xaf\\x33\\xfd\\xad\\xb0\\x70\\x5c\\x79\\x9d\\x35\\xac\\x6d\\x9c\\x80\\xda\\x90\\xc1\\x43\\x8b\\x58\\x5f\\xfd\\x59\\x35\\x0a\\x26\\x86\\xb1\\xec\\x35\\x16\\x6c\\xb9\\xb6\\x9a\\xd0\\xf5\\x65\\x86\\xaa\\x03\\x27\\x4d\\x78\\x2e\\x3f\\x85\\x8d\\xb6\\x4a\\xdf\\xbf\\x04\\xd5\\x22\\x8a\\x7b\\x1c\\x4a\\x20\\x48\\xbb\\xcd\\xb9\\x41\\x15\\x3a\\x43\\x6d\\x74\\x2c\\x38\\xb5\\x8b\\x4d\\x7d\\x13\\xc9\\xf1\\xd6\\x0e\\x15\\x2a\\xa2\\x79\\x23\\x49\\xa3\\xd9\\x4e\\x7e\\x6b\\x11\\x04\\xaa\\x1b\\x87\\x09\\x98\\xc1\\x8d\\xd7\\x06\\x56\\x54\\xa8\\x52\\x81\\xbb\\x6f\\x02\\x7f\\xaa\\xd5\\x56\\xb1\\xf5\\x32\\xe7\\xa1\\xe2\\x2d\\x56\\x40\\x69\\x28\\x95\\x87\\xa0\\xef\\xc9\\xc1\\x58\\x5d\\x13\\x5f\\x31\\x23\\x3c\\x41\\xf4\\x40\\x46\\x6e\\x71\\xfe\\x90\\x12\\xe5\\xf9\\xa0\\xd7\\x4a\\x72\\x82\\xee\\x39\\x2f\\xb0\\x16\\x5d\\xb7\\x9f\\xf1\\xd3\\x17\\x6e\\xd0\\x8a\\xfe\\x1d\\xaa\\x66\\xcf\\xbf\\x43\\x05\\xae\\x16\\xac\\x17\\x92\\x33\\x43\\x99\\xf7\\x1b\\x19\\x17\\xdd\\xec\\x27\\x0a\\xcf\\xf6\\x65\\xea\\x05\\xd1\\x84\\xc2\\xc5\\xcd\\x2c\\xcd\\x90\\x2b\\x22\\xf9\\xb7\\x19\\x5e\\x66\\xa6\\x55\\x56\\xca\\x88\\x4b\\xa6\\xf5\\xda\\x04\\xdc\\xd4\\x61\\x7f\\x33\\xdc\\x2b\\x44\\xa0\\xea\\x74\\x2a\\xeb\\x2b\\x93\\xf3\\xa4\\x1d\\xf7\\x95\\x7a\\x02\\x67\\x97\\xa5\\x85\\xce\\xee\\x81\\x4b\\x19\\x75\\xf5\\x23\\xd2\\xdb\\x5d\\xbb\\x9b\\xe0\\xca\\x64\\x9d\\x1d\\x45\\xdc\\xfd\"},\n{{0xd2,0x90,0xff,0xd9,0x33,0x95,0xbd,0x5f,0xc5,0x87,0xd1,0xab,0x51,0x18,0x66,0xe7,0x2b,0x37,0x1a,0x17,0x35,0x73,0x2d,0x9d,0x5c,0x6a,0x18,0xdd,0x46,0x5e,0x93,0x63,},{0xfd,0x4a,0xad,0x73,0xb0,0x32,0x46,0x1c,0xa0,0xaa,0xe8,0x71,0xca,0x70,0x16,0x38,0x3b,0x2b,0xe0,0x16,0x90,0x53,0xfd,0xbf,0x6c,0x59,0x14,0xfd,0xd6,0xdd,0x6f,0x92,},{0x21,0x70,0x4d,0x5e,0x62,0x6d,0xcf,0x6a,0x9d,0xcd,0xef,0x93,0x54,0x29,0xeb,0x7f,0xb5,0xb2,0x57,0xee,0xcd,0x7b,0xf7,0x4a,0xcb,0x0c,0xd3,0x0e,0xcf,0xcf,0x60,0x8d,0x0c,0x5b,0x63,0x3a,0x4a,0x8a,0x9b,0xa2,0xcc,0x82,0xa2,0x1e,0x03,0x35,0x5e,0x01,0xd8,0x5d,0xae,0x7e,0xca,0xc8,0x89,0x6d,0xc1,0x5d,0xae,0x04,0x85,0x70,0x71,0x04,},\"\\xeb\\xd9\\x00\\xbc\\x91\\x0c\\x5e\\xcc\\x4d\\x97\\xda\\xf7\\xcb\\x5e\\xbb\\x54\\x91\\x50\\x0b\\x7a\\xd1\\x16\\xe3\\x06\\x60\\x95\\x07\\x09\\xd8\\x08\\x4b\\xb6\\x43\\x4c\\x5b\\xea\\x4a\\x8c\\xcc\\x1e\\xd5\\xa8\\x01\\xbe\\xbb\\x1a\\x11\\x78\\x78\\xc0\\x37\\x47\\x00\\x3e\\x14\\x8e\\xd9\\x14\\x34\\x83\\x2e\\x89\\x66\\x24\\x1a\\x7f\\xff\\x22\\xfe\\x1d\\x6d\\x8c\\x3c\\x3d\\xdd\\x72\\x15\\xa1\\xef\\xaf\\x4b\\x07\\xaf\\xee\\x1b\\x25\\x67\\x3a\\x14\\x39\\xea\\xac\\x32\\x4e\\x89\\x5d\\x4b\\xe8\\x39\\xe9\\x76\\xc0\\x3a\\xc0\\x01\\x25\\x48\\x76\\x88\\x8c\\xca\\xaf\\x39\\x12\\x72\\x7a\\x60\\x10\\x6a\\x87\\xbe\\x69\\x24\\x7c\\x9e\\x43\\x8c\\x31\\xfc\\xa8\\xd9\\xc6\\x1b\\xae\\x36\\x8c\\x83\\xe4\\x09\\x01\\xa9\\x97\\x00\\xdf\\xf8\\x39\\xb5\\x13\\xba\\x8d\\xc4\\x2d\\x93\\xce\\x09\\x87\\xa2\\x33\\x34\\x70\\xa9\\xf9\\x83\\x31\\x3f\\x91\\x98\\x86\\x59\\xda\\x54\\x03\\x9e\\x49\\x9c\\xd1\\xaf\\x2b\\x8f\\xa0\\xeb\\xe7\\x50\\xe2\\x4d\\x55\\xc2\\xa5\\xbd\\x1a\\xde\\x3f\\x68\\x00\\x92\\x54\\x2b\\xd1\\xbe\\x0b\\x97\\x35\\xba\\x39\\x3a\\xd5\\x69\\x7d\\x24\\x1e\\x8e\\x8b\\x28\\x64\\x6d\\xb2\\x7d\\x2f\\xb5\\xa9\\x40\\xe8\\xfa\\xea\\xf0\\xb6\\xc9\\xef\\xda\\x88\\x61\\x5d\\xec\\x89\\x1c\\xe7\\x32\\x93\\x08\\x13\\xbf\\xbb\\xd0\\xbc\\x5f\\x82\\x10\\xab\\xe8\\x43\\xbe\\xb5\\xe4\\xf0\\x28\\xf4\\x9b\\xea\\x34\\xf1\\xe5\\xb0\\x9e\\xac\\x4c\\x66\\x62\\xc7\\x4f\\xba\\x39\\xde\\x4a\\x96\\x02\\xa9\\x69\\x4a\\x85\\xc7\\xc1\\x37\\x5f\\xda\\xdf\\xda\\x6a\\x19\\x57\\xfc\\x5b\\x59\\x87\\xa6\\x87\\xb0\\x39\\x95\\xe5\\x16\\x97\\xa1\\xab\\x5b\\xb6\\xcb\\x11\\xb6\\x63\\xc1\\x37\\x2f\\xad\\xe4\\xc0\\xac\\xa8\\xfb\\xeb\\xb4\\xeb\\x54\\xce\\x7c\\xe3\\x6c\\x69\\x04\\xea\\xf6\\xea\\xb2\\xf3\\x4f\\xac\\xd8\\xc7\\x68\\xc8\\xd3\\x6d\\xa2\\x39\\x7b\\x1a\\x02\\x73\\x5a\\xea\\x72\\xcf\\xaa\\xd0\\x39\\x34\\x10\\xdb\\x52\\x7a\\x8a\\xb2\\x36\\xd4\\xcd\\xab\\xdc\\x88\\x8f\\xac\\x6f\\x18\\x21\\x48\\xb1\\x32\\x61\\x44\\x25\\xd3\\x90\\xff\\x03\\x6e\\x54\\x85\\x5e\\x42\\x03\\xc5\\x12\\x03\\xc1\\xf4\\x3e\\x37\\xbb\\xf6\\xb9\\xbf\\x27\\xf5\\xb7\\xe7\\xc6\\x65\\x15\\x14\\x65\\x40\\x1a\\xc3\\x2c\\xbe\\x9e\\x33\\x50\\x53\\x5e\\xdf\\x48\\xa7\\xbc\\x36\\x03\\xe2\\x23\\x2e\\x93\\x8f\\x9a\\x81\\x5a\\xc4\\xd1\\xde\\xec\\x99\\x1e\\xf9\\x62\\x09\\x48\\x44\\x1f\\x7a\\x2f\\x4a\\x46\\xe2\\xc4\\x00\\xab\\x91\\x4c\\x4b\\xe5\\x1d\\xca\\xad\\x8e\\xd8\\x23\\x9c\\xbb\\xe9\\x77\\xa9\\xf0\\x9c\\x02\\x69\\x83\\x19\\xd9\\xfe\\x2a\\x8c\\x6e\\xb6\\x0b\\x79\\x9f\\x29\\xae\\x76\\x59\\x97\\x0d\\x2e\\xbd\\xff\\x3c\\x6c\\xf7\\x09\\xbb\\xf6\\xf4\\xbb\\x55\\xb9\\xdf\\x4f\\x61\\xa2\\x41\\xde\\xc1\\x44\\xb5\\x99\\x3f\\x08\\x7e\\x78\\x4b\\x97\\xbe\\x1e\\x53\\x60\\x8c\\x2e\\x81\\x7c\\xe3\\xd9\\xaa\\xf9\\x14\\xe6\\xb7\\x23\\xf5\\xb4\\xaf\\xff\\xd2\\xa6\\xb9\\xfe\\x9d\\x2d\\x73\\x91\\x5c\\x7a\\xd1\\xff\\xb1\\x3e\\xfc\\xb7\\x3c\\x56\\x23\\x81\\x95\\x64\\x52\\x03\\x98\\x4c\\x99\\xaa\\xfd\\x02\\x35\\xf7\\x3b\\x3f\\x88\\x2e\\x07\\x39\\x39\\xbf\\x78\\x66\\x57\\x28\\x01\\x38\\xdb\\x05\\xb8\\x6f\\xcc\\x94\\x60\\xb3\\x85\\xef\\x45\\x59\\x20\\x4e\\xcd\\x81\\xe2\\xf1\\x2f\\x5f\\x06\\x2a\\xa4\\x48\\xdc\\xcc\\x82\\xea\\x8d\\x89\\x46\\x6d\\xd1\\xbe\\x46\\xf8\\x2c\\x4f\\x87\\xbf\\x0d\\xb2\\xb8\\x78\\xac\\xbb\\x0d\\x91\\x12\\xc8\\xdb\\x6f\\x51\\xd3\\x5f\\x6d\\x42\\xf7\\x49\\x85\\x6b\\x99\\xe5\\x50\\xb6\\xc4\\x54\\xe9\\xe8\\xbe\\x4d\\xa1\\x75\\xf0\\xb5\\xe8\\x6b\\xe6\\x6c\\x97\\x9f\\xd8\\x78\\x23\\x7e\\x57\\xf6\\x91\\xf0\\xd2\\xac\\xd0\\x28\\xfb\\xff\\xa5\\xb0\\x66\\x87\\x75\\x03\\x4d\\xb1\\xf2\\x1d\\xdb\\xe7\\x11\\x4e\\xe3\\xdc\\x0b\\x44\\xda\\xca\\x64\\xc5\\xa0\\x3a\\x2f\\xee\\xae\\xab\\xeb\\x70\\x63\\xbf\\xcc\\xcc\\x55\\x9b\\xaf\\x27\\xf1\\xcc\\xb2\\x20\\x2f\\xa4\\xd1\\xb2\\xbf\\x44\\xc0\\x4b\\x2c\\x2f\\x81\\xf9\\x4e\\x28\\x1b\\x1a\\x5a\\xdc\\x85\\x0d\\xa1\\xb9\\x47\\x9f\\xca\\xbd\\xda\\xde\\xa5\\x6a\\x11\\x5b\\xb5\\xf0\\x6c\\xc0\\x16\\xf1\\x41\\xc0\\xfc\\xb5\\xe8\\x3a\\xb2\\x48\\xea\\xec\\x90\\x15\\x8d\\x8b\\xe6\\x47\\xaf\\xf1\\x2e\\x7e\\xeb\\x5e\\x57\\xdb\\xcc\\x29\\x3c\\xb3\\xb6\\xaa\\xcb\\x55\\x23\\x6d\\x4a\\x83\\x9a\\x06\\x20\\xf4\\x76\\x23\\x87\\xdd\\x17\\x14\\xdf\\x5c\\x13\\x5e\\x3d\\x9d\\x68\\x24\\xf9\\x3b\\x7c\\x90\\xd3\\xae\\x38\\xc5\\x18\\xd6\\x07\\x12\\x0c\\x83\\x95\\x70\\x41\\x3b\\x46\\xb8\\xcc\\xd7\\x37\\x04\\x92\\xd8\\xae\\x5c\\x60\\x9e\\x00\\xcf\\x82\\x51\\xe2\\xe7\\xdf\\x81\\xe5\\xb4\\xf9\\xc1\\x6a\\x5a\\x53\\x9f\\x0a\\xfc\\xce\\x41\\xbb\\x43\\x62\\xe5\\xea\\xa5\\xf9\\x40\\xa1\\x70\\x6f\\x4a\\xfb\\x6b\\x14\\x43\\x2c\\x81\\xd4\\xba\\x1a\\x33\\xd3\\x22\\xdb\\xf1\\x06\\x45\\xab\\x63\\x73\\x7e\\xad\\xc8\\x6f\\xe6\\xe0\\x97\\x6f\\x76\\x33\\x97\\xfb\\x89\\x86\\x37\\x59\\x5d\\xfd\\x36\\x93\\x47\\x92\\xd7\\x79\\xe2\\x4c\\x2a\\x3f\\x0b\\xac\\xf5\\x3e\\x04\\x73\\xc5\\xfd\\xa9\\xc6\\x12\\x84\\xe4\\x41\\x9b\\xdc\\x0e\\xef\\x5d\\x22\\xf4\\xd9\\xbf\\x42\\xe8\\xc0\\x49\\x33\\xbb\\x93\\xb5\\x3c\\x29\\x5d\\x7a\\xc9\\x39\\x5a\\xbb\\x6d\\xcb\\xd7\\x42\\xb1\\xe1\\xbc\\x3b\\x0e\\xa4\\x43\\x4e\\xa2\\x1b\\x8e\\xca\\x9a\\xe6\\x82\\xd3\\x31\\x5a\\x41\\xe9\\xc3\\xc3\\x37\\x18\\x40\\x76\\x1d\\xc5\\x9c\\xac\\x45\\xda\\x7e\\x38\\x13\\xe2\\x87\\x88\\xdc\\x89\\xde\\x35\\x5b\\x5a\\xee\\x08\\x80\\x90\\xa3\\x8d\\xd3\\x9d\\x83\\xe5\\xe4\"},\n{{0xd7,0xfd,0x73,0xd1,0xd2,0x29,0xa6,0x58,0x94,0x42,0x0e,0x4b,0xa7,0x34,0x27,0x0d,0x5a,0x20,0x75,0x83,0x64,0xde,0x89,0x7d,0x85,0x55,0xe2,0x41,0x97,0x45,0x3c,0x19,},{0x3c,0x22,0x77,0x2a,0xec,0x0a,0x0c,0x15,0x59,0x07,0x7f,0x2c,0xfd,0x1f,0x24,0x65,0xd4,0xb4,0x84,0x95,0xc5,0xd0,0x5f,0x1f,0x83,0x7c,0x31,0x84,0x5f,0x34,0xca,0xd1,},{0x40,0x0c,0x35,0x05,0xf1,0xdf,0xa8,0x0d,0xf4,0xb2,0x6d,0xb2,0x4c,0x02,0x7e,0xb8,0x19,0x77,0xf0,0xfb,0x9b,0x5a,0xca,0x52,0x4a,0xd5,0x12,0x00,0xf4,0xbf,0xb1,0x33,0xdb,0x83,0x48,0x23,0x31,0x41,0x95,0xf4,0xed,0xc2,0x92,0xd5,0xf5,0x30,0xd0,0x85,0x56,0xe7,0x80,0x9c,0xaf,0x23,0x39,0x76,0x8a,0xa3,0x80,0x29,0xfd,0xbc,0x28,0x0f,},\"\\xc9\\x22\\x58\\x59\\xd5\\x55\\xbc\\x42\\x01\\x1a\\xf1\\xb4\\xf1\\x49\\x98\\xe6\\xe9\\xb0\\xa6\\x5e\\x21\\x72\\x71\\x3e\\x96\\x83\\x80\\xfb\\x6c\\xee\\xdd\\xa2\\x2e\\x02\\x2c\\x51\\x30\\x30\\x31\\xd9\\x93\\x1c\\xce\\xf2\\xf7\\xbc\\x70\\x5c\\x9e\\x21\\x5c\\x1d\\x08\\x9d\\x48\\x8d\\xad\\xda\\xee\\x15\\x5c\\x93\\x9b\\x62\\x02\\xca\\x53\\xbf\\xc7\\xf6\\xe8\\x8e\\x15\\x29\\xd8\\x2f\\xb4\\x5e\\x02\\xb5\\xd0\\x5a\\x82\\xbb\\xb9\\xdb\\x5f\\x41\\x5c\\x58\\xba\\x8b\\xd5\\x6c\\xff\\xd9\\x22\\x70\\xb2\\x47\\x49\\xe5\\x6d\\x12\\xc9\\x9a\\xe9\\x0c\\x78\\x00\\xf5\\x4f\\x55\\x25\\x4e\\xa4\\x2d\\xa5\\xdc\\xfb\\xe0\\xe1\\xd9\\x89\\xcd\\x2f\\x68\\x97\\xe2\\x32\\xdf\\x04\\x70\\x7b\\x34\\xaf\\x75\\xfa\\x7f\\xec\\x33\\xe5\\x5e\\xd5\\x6a\\xee\\x39\\xc2\\x2b\\x04\\x5b\\xed\\xd1\\x61\\x08\\x3b\\xc5\\x51\\x4c\\x1f\\x81\\xca\\x90\\x7b\\x7c\\x76\\x03\\x17\\xa7\\xfd\\x5a\\x5a\\x02\\xa5\\xd4\\x0e\\x2e\\x82\\x3e\\x24\\xad\\x96\\xae\\xf6\\xda\\x8e\\xa9\\x82\\xb5\\x16\\x1c\\xc3\\x9d\\x84\\xaa\\x2f\\xfd\\x95\\x44\\xc1\\x1b\\x63\\x40\\x37\\xab\\x0a\\x1c\\x8e\\x36\\xac\\x63\\x01\\x9d\\xa1\\xb2\\xd9\\x95\\xcb\\x7b\\xd3\\xd6\\x2f\\xe5\\x74\\xde\\xab\\xcc\\xbd\\x0d\\x3a\\xe7\\xa5\\x6e\\x5b\\xec\\x91\\xe4\\xba\\x3f\\x3d\\xb8\\xbf\\xea\\x88\\xe6\\x7d\\xa6\\x2e\\x88\\x27\\x8a\\x6e\\x3b\\x41\\x8d\\xce\\xea\\x05\\x89\\xf2\\x5f\\x7d\\xd8\\xad\\x19\\xdd\\x84\\x50\\x89\\x41\\x9b\\x47\\x2e\\xfc\\xcc\\x87\\x9c\\x17\\x2b\\x32\\xee\\x4a\\x4d\\xbc\\x2e\\x6c\\x2e\\x86\\x5b\\xb3\\xb8\\xca\\x0a\\xdc\\xb7\\x1f\\xdf\\x89\\xe1\\x97\\x39\\x10\\xef\\x24\\x29\\x15\\xf3\\x3e\\x23\\x6d\\x2f\\x7c\\x8e\\x9f\\x1e\\xe5\\xb0\\x7c\\x6e\\x3c\\x25\\x36\\x0f\\x8c\\xb1\\x46\\x0b\\xe8\\x7d\\xb3\\x1a\\x29\\x1d\\x4d\\xee\\x34\\x95\\x3e\\x75\\xc6\\x75\\xbf\\x18\\x1b\\xb7\\xa0\\xb7\\xb5\\xc1\\xbe\\xfd\\xc8\\x6a\\xda\\x07\\x2a\\x48\\xf6\\xac\\x75\\x5d\\x49\\x9b\\xd6\\x8d\\x62\\x5d\\x85\\x14\\x52\\x5c\\xc3\\xab\\x8f\\x54\\xce\\x15\\xa8\\x71\\x29\\x17\\x78\\xde\\x13\\x05\\xd2\\x21\\x93\\x61\\xaa\\x30\\xe3\\x32\\xa2\\xe0\\x69\\x07\\x7c\\x5c\\x53\\x45\\x75\\x20\\x37\\x9d\\x8b\\x90\\xd2\\x4b\\xd8\\xa3\\xa7\\x70\\x0f\\xf7\\x66\\x23\\x1c\\xb5\\x69\\x7f\\x9a\\xce\\x52\\x1a\\x99\\xe8\\x96\\xda\\x54\\xc4\\x07\\x93\\xbc\\x7c\\x1f\\xb1\\x58\\x4b\\xb1\\xc8\\x61\\x94\\xd2\\xfb\\x7a\\x4b\\x80\\x2f\\x30\\x88\\x5e\\x0e\\xe8\\xaf\\x88\\xd6\\x88\\x6e\\x3a\\x3a\\x4d\\x4c\\x85\\x46\\x49\\xcc\\x01\\xab\\xdf\\x35\\x31\\x9a\\x08\\x56\\xcc\\x65\\xd0\\x92\\xa3\\x86\\xf8\\x86\\x96\\x25\\xcd\\x0a\\xca\\xc0\\x87\\xe9\\x35\\x17\\x90\\xcc\\xb4\\xa8\\x65\\xf6\\x51\\xa8\\x81\\xc3\\xeb\\xf1\\x09\\x07\\x27\\x74\\xf9\\x40\\xf5\\xaa\\x98\\xa2\\xa2\\xaa\\x3d\\xd3\\x66\\x47\\xd0\\xde\\x83\\x00\\x1a\\xa7\\xcd\\xc0\\x31\\xcc\\x4a\\x4d\\x75\\xdc\\x11\\xce\\x55\\x16\\x76\\xa2\\xad\\x43\\xa3\\xf6\\xa1\\x6a\\x4b\\xc5\\xae\\xe8\\x0e\\x53\\x64\\x20\\x60\\x87\\x36\\x4e\\xb8\\xb2\\xb1\\x5f\\xb7\\x05\\x38\\x0a\\x07\\x2d\\x7c\\x8b\\x51\\x99\\x59\\x43\\xaa\\x76\\x2e\\x8d\\xeb\\x4c\\x56\\x8c\\xda\\xa1\\x41\\x1a\\xb6\\x8f\\x28\\x48\\x9e\\x13\\x23\\xbb\\x61\\x56\\xce\\x25\\x00\\xb0\\x6e\\x77\\x93\\xc5\\x10\\xa3\\xde\\x29\\x15\\x08\\x40\\xbf\\xdb\\x0b\\x2b\\x7b\\x21\\xc2\\xbb\\x8a\\x77\\x46\\x16\\x7c\\x92\\x9d\\xd0\\xad\\xad\\x44\\xfe\\xd8\\xf3\\x6e\\x83\\x81\\xb3\\x42\\x08\\x0b\\x2a\\x7d\\x82\\xa3\\xf8\\x1f\\xf7\\x26\\x30\\xcb\\x78\\xdf\\x91\\xf7\\xb6\\x5a\\x44\\xef\\xf6\\xed\\x64\\xd4\\x8a\\xfe\\xd1\\x09\\xdd\\x7a\\x69\\x3a\\x1b\\xa8\\xc3\\x7e\\x00\\x8f\\xcb\\x15\\x7e\\x37\\x29\\x7d\\x32\\xeb\\xa7\\x65\\xa6\\xc7\\x19\\x3e\\x73\\xbd\\x97\\x64\\x79\\x85\\xb1\\x60\\x38\\xc7\\x4a\\x08\\x4a\\x8f\\x25\\x65\\x4c\\xd8\\xcd\\x2c\\xdd\\x27\\xff\\x17\\x33\\x4e\\x06\\xad\\xaa\\x05\\x82\\x64\\x01\\x7a\\x3b\\x2d\\xa7\\x8e\\x57\\x38\\xa2\\x7e\\x35\\x0d\\x88\\x2f\\x5f\\xae\\x19\\x92\\x78\\xd4\\xe5\\x0b\\x8b\\xad\\xf5\\x7c\\x21\\x41\\xdf\\xdc\\x3c\\xff\\x99\\xdf\\x5d\\xe8\\x6f\\xec\\x29\\x3c\\x76\\xcb\\x94\\xb6\\xb1\\x9b\\xa3\\x03\\x4e\\x46\\x0f\\x84\\xc2\\x80\\xa2\\xe6\\x41\\x2f\\xab\\x56\\x98\\xce\\x89\\x02\\x07\\xca\\xba\\xbc\\xa0\\xa9\\x5b\\x5a\\xd5\\x33\\xce\\x11\\x4b\\xf7\\x1a\\x40\\x4a\\x87\\x59\\x0d\\x35\\xfa\\x7c\\xed\\xba\\x43\\x13\\x1c\\x4e\\xe9\\x23\\x44\\x83\\x9f\\x25\\xcb\\xfa\\xeb\\x12\\xae\\xeb\\xc8\\x04\\x08\\x93\\x95\\x1a\\x34\\x6b\\xd2\\x8f\\xdd\\x16\\x7b\\xd2\\x0f\\x71\\xa1\\xe5\\x9f\\xb6\\x0d\\x55\\xe1\\xc5\\x67\\xf4\\x78\\xf0\\x27\\xcf\\x67\\x9a\\x37\\xd1\\xd9\\xdb\\x86\\x7e\\x17\\xbf\\xdd\\x60\\xb3\\x47\\xd8\\x9d\\x32\\x26\\x39\\xd3\\x15\\xbb\\x7a\\x2c\\x91\\x34\\xf0\\x0e\\xa0\\x3a\\x36\\x7f\\x30\\x5e\\xa4\\xd6\\x0d\\xc9\\xd5\\x67\\xcf\\x92\\x48\\x51\\xe4\\x69\\xea\\x95\\x4e\\xd3\\xea\\x63\\xea\\x86\\x06\\xf7\\x9f\\x07\\x73\\x39\\xbf\\xa2\\xb5\\x1a\\xe4\\x9b\\xaa\\x0f\\xb2\\x53\\x77\\x82\\x1d\\x7c\\x11\\xef\\x9a\\xd4\\xbb\\x4c\\x0f\\xe4\\x89\\xac\\xba\\xb0\\xef\\x00\\x0d\\x61\\x8c\\x7a\\xf5\\xef\\xd2\\x05\\xd6\\x85\\x99\\xfc\\xbd\\xd9\\x5e\\x28\\xf8\\x36\\xe0\\x91\\x6f\\x9f\\xf5\\x48\\xd0\\xba\\x17\\xda\\x62\\x53\\x6e\\x74\\x64\\x68\\x01\\xee\\xb6\\x12\\x2b\\xa3\\x2c\\x41\\x07\\x3a\\xe0\\x4e\\x42\\xc6\\xc1\\xd5\\xd8\\xd2\\x29\\x76\\xa5\\x62\\x26\\xdd\\xf4\\xb6\\xac\\x95\\x45\\x5f\\xb5\\x30\\x99\\xf2\\x02\\x15\\xb2\\xeb\\xc9\\x07\"},\n{{0xfd,0xa7,0xcb,0x08,0x40,0x16,0xba,0x51,0x3c,0x7c,0x4f,0x8f,0x71,0x80,0x48,0x0b,0xb1,0x81,0xe9,0x56,0x95,0xea,0x68,0x73,0x7f,0xa3,0x4a,0x40,0xec,0xbd,0xf3,0xef,},{0xa2,0xde,0x3a,0x0e,0xf9,0x72,0x98,0xfd,0x71,0x61,0x06,0xe2,0xf3,0xf5,0x45,0x13,0x05,0x7a,0x40,0x07,0x2d,0x23,0x4c,0x35,0x18,0x15,0x4c,0x1b,0xd1,0x2d,0xe0,0x37,},{0x33,0x61,0x4b,0x7a,0x94,0xf7,0x5e,0x03,0x65,0x34,0xd7,0x6e,0x30,0x14,0x7e,0xcc,0xdd,0x2a,0x04,0xe0,0x0c,0xd4,0x70,0x4a,0xb6,0xe8,0x07,0xd6,0xa2,0xac,0xc1,0xe1,0xd9,0x63,0xb8,0xee,0xe0,0x81,0x0d,0x41,0x2d,0x9d,0x56,0xe5,0x45,0x56,0x30,0x2b,0x10,0x73,0x0c,0x15,0xab,0xf8,0x9c,0x29,0xa0,0x27,0x30,0x3e,0xa8,0x8a,0xe7,0x01,},\"\\xc2\\x1b\\xb3\\xf8\\xe3\\x7b\\xef\\xa3\\x67\\xc9\\x13\\x67\\x31\\x01\\xba\\x30\\xd3\\xb5\\xc7\\x4b\\xd8\\xbd\\xb0\\x9c\\xd2\\x86\\x40\\x01\\x2d\\xb4\\x11\\x20\\xc2\\xbc\\xc4\\x08\\x5d\\xe2\\xa0\\xf9\\x5c\\x92\\x15\\xdd\\xef\\x8c\\xb5\\xfc\\x8d\\x8b\\x12\\x51\\xb4\\x15\\x27\\xc6\\x7d\\xfa\\xa3\\xf9\\x5b\\xa3\\x57\\x83\\x91\\xea\\x5a\\x66\\x29\\xa7\\x33\\x09\\x5f\\xd0\\xa4\\x3f\\xdb\\xa4\\x0f\\xfe\\x26\\x0f\\xff\\x82\\xac\\xee\\x2e\\xbe\\x98\\x0e\\x9e\\xce\\xcc\\xfe\\x7e\\x10\\xb2\\xed\\x8c\\x2e\\x6b\\x41\\x0d\\x54\\x7a\\x12\\x86\\x57\\x1d\\xf3\\xd7\\x01\\x17\\x4e\\x57\\x9f\\xcf\\x19\\xd3\\xbd\\x80\\x86\\xc0\\x42\\x3f\\x37\\x11\\x77\\x89\\xf3\\x05\\xd9\\x67\\x0a\\xd2\\x8c\\x99\\x67\\x4f\\x52\\xcf\\x64\\x21\\x1a\\x08\\x1d\\x0c\\x6c\\x30\\x96\\xda\\x2c\\x71\\xbf\\x5f\\x57\\x99\\xa7\\x91\\x0e\\x6f\\x38\\x10\\x4a\\x37\\xa6\\x55\\x7c\\x2d\\xae\\xf3\\x40\\x81\\x4a\\x1f\\x83\\x0d\\x59\\x37\\x73\\xc6\\xcf\\x48\\xd8\\x3e\\xa0\\x72\\x94\\xb9\\x4e\\xb0\\x80\\xb8\\x5d\\x69\\x70\\xe2\\x8f\\x40\\x51\\xd5\\x06\\x6d\\xb1\\x0e\\x96\\x19\\x73\\xa6\\x26\\xa8\\x26\\xae\\xaf\\x8a\\x06\\xec\\x0d\\x56\\x6b\\x7e\\x0c\\x4e\\xf6\\x0f\\x0c\\x56\\x78\\xfc\\xbb\\x5b\\x2a\\xc6\\x3f\\x7b\\xed\\x06\\x44\\x8a\\x24\\x7b\\x3d\\x42\\x7b\\x87\\x08\\x6d\\x33\\x57\\x3f\\xb2\\xd7\\x22\\x8c\\x5c\\x34\\xea\\x66\\x40\\xee\\xfa\\x95\\x64\\x48\\x5a\\x79\\x63\\x8e\\x9c\\x97\\xc0\\xaf\\x84\\xcf\\xee\\x7c\\xe4\\xa7\\x39\\x22\\x0c\\x84\\x29\\xe0\\x67\\x14\\x39\\x53\\xd5\\x50\\x66\\x8d\\xad\\xc8\\x4e\\x7b\\xed\\x9a\\xb0\\x70\\xa5\\x94\\x33\\x90\\xc6\\x11\\xd7\\x5b\\x1c\\xb1\\x28\\x73\\xa3\\x7d\\x98\\x50\\x66\\x1a\\x00\\x77\\xbf\\xa9\\xca\\x9b\\x8b\\x26\\x37\\x66\\xc1\\x49\\xff\\x0e\\xe4\\xb4\\xad\\xba\\x25\\xea\\xf7\\xd7\\xf5\\x01\\xf3\\x62\\x45\\x42\\x56\\xbc\\x12\\x69\\x37\\x8e\\xf3\\x35\\x9a\\x8e\\xd6\\xb9\\x60\\xb8\\x66\\x21\\xfa\\x3b\\x61\\x3e\\xb1\\x32\\x12\\x2f\\x49\\xf2\\xeb\\x2c\\xeb\\x68\\x32\\xa3\\x99\\x1e\\x96\\x1c\\xb0\\xe7\\x8b\\x74\\x2e\\xf4\\xd6\\x5e\\x8d\\xe3\\x46\\x96\\x66\\xfe\\xc7\\xc5\\xb8\\x74\\x78\\x95\\x71\\xc5\\xc9\\x9a\\x2c\\x02\\xa0\\x53\\xff\\x7d\\x2f\\xc9\\x00\\x76\\xba\\xfe\\x1f\\x26\\x7f\\xa8\\x1a\\x39\\x90\\xf2\\x7f\\xf1\\x4f\\x03\\x00\\x0a\\xf0\\x0c\\x59\\x28\\x6c\\xb9\\xbb\\x98\\xe2\\x04\\xe9\\x01\\x90\\xae\\x2a\\x50\\xed\\xef\\x04\\x9e\\xa9\\x2a\\x1f\\x78\\x50\\x88\\xf9\\x4a\\xdf\\x65\\x88\\xfb\\x43\\xbb\\x40\\xfb\\xe2\\x32\\x42\\x35\\xcc\\x7e\\x16\\x8b\\x80\\x26\\x4b\\x06\\x9f\\x94\\x4f\\x50\\x36\\x92\\xc9\\x49\\x23\\x4d\\x5b\\x76\\xbc\\xff\\xab\\xe2\\x9f\\xf9\\x06\\x4b\\xd7\\xcb\\xed\\x9e\\x00\\xe5\\xb7\\xfd\\xda\\x43\\x12\\xeb\\x80\\x14\\x65\\xf1\\x27\\xd0\\xca\\x68\\x83\\x2a\\x7f\\x4e\\xd0\\xea\\xed\\x8f\\x55\\x9c\\x16\\x31\\xcd\\x4d\\x34\\xf0\\xdc\\x41\\x4d\\x9f\\xcf\\xe8\\x49\\xa9\\x1e\\x25\\xf3\\xe0\\xff\\x01\\x3a\\x8c\\xff\\xa8\\x06\\xed\\x8e\\x93\\xd0\\x8a\\x1e\\x5a\\x75\\x76\\x82\\xca\\x3d\\x26\\xab\\xc8\\x69\\xc7\\x6f\\x1c\\x79\\x00\\x7d\\x55\\x9d\\xfe\\x67\\xe7\\x8d\\x8a\\xf0\\x19\\x58\\x08\\xb0\\xe7\\x71\\xc7\\x1e\\x64\\xb5\\x71\\x6f\\xb3\\x63\\x09\\xc2\\x50\\x25\\xfa\\xe6\\x41\\x4c\\x28\\xbb\\xdb\\xd4\\xde\\x59\\x7a\\x74\\x99\\x6c\\x9d\\xa9\\x74\\x92\\x0d\\x59\\xe6\\xf4\\xc2\\xed\\xfe\\x11\\x0f\\xf8\\x17\\xfd\\x48\\x0a\\x50\\x80\\x97\\x80\\x48\\x86\\x57\\x12\\x05\\x8c\\x5f\\xe7\\xb5\\x60\\xb1\\x2b\\x67\\xf7\\x37\\xea\\x6e\\x2a\\xf9\\x24\\x2c\\xf0\\x7a\\xd0\\xa8\\xa6\\x79\\xf2\\x64\\x30\\x04\\x6a\\xdc\\x3e\\x70\\x66\\x4c\\xc9\\xc0\\xee\\x5a\\xbc\\xef\\x6d\\x72\\x6b\\x4e\\x04\\x17\\x60\\x48\\xb7\\x95\\xbe\\x12\\x85\\x1b\\xdb\\x74\\x00\\x3a\\x13\\x20\\x41\\x19\\xb8\\x68\\x64\\xd6\\x53\\x5b\\xa0\\x95\\x04\\x0a\\x85\\xd9\\x78\\x1c\\xf4\\xf3\\x48\\x0a\\x30\\x4e\\x22\\x7f\\x78\\x7a\\xd5\\x38\\xe6\\x8f\\x4b\\xab\\x01\\x41\\x79\\xe3\\x0d\\x3f\\xde\\xf9\\xef\\xf1\\x1b\\xcf\\x47\\x1f\\xa3\\xa0\\xbc\\x74\\xb5\\x57\\x6f\\x30\\x2d\\x3a\\x6b\\x49\\x9f\\x11\\xf2\\xef\\x32\\x6a\\xc0\\x26\\xc9\\x8d\\xb1\\x0e\\x27\\x41\\x41\\x3f\\x32\\x22\\x28\\xb3\\xcf\\xf0\\xf3\\x37\\xba\\x2f\\x29\\x4c\\x78\\xef\\x73\\xf0\\xe8\\x77\\x87\\x8f\\x8f\\xc7\\xff\\x6d\\x10\\xbc\\xe6\\x6a\\xd6\\x28\\x43\\x79\\xb8\\x0c\\xa8\\x93\\x27\\xd4\\xdb\\x0b\\xf1\\x4e\\x6d\\x8f\\x01\\xb2\\x2a\\xb2\\x02\\xb7\\x16\\xcc\\x07\\xe3\\xc8\\x86\\x6d\\x16\\x8a\\x50\\x94\\xba\\xc5\\xa4\\x95\\xe7\\x38\\x68\\xee\\xdc\\x27\\x22\\x2e\\x64\\x44\\xf8\\x3b\\xcf\\x65\\xac\\xdc\\x3e\\xc8\\x91\\x20\\xbb\\x50\\xe8\\xab\\xfc\\x28\\xb7\\x8e\\x6d\\x98\\x0c\\x77\\x5f\\x48\\x49\\xa0\\xe8\\xca\\xda\\x80\\x24\\x0b\\xca\\x24\\x5e\\x39\\x96\\x6e\\x89\\xa0\\x34\\x4d\\xf8\\x36\\x3a\\x7d\\xcc\\x81\\xb2\\x01\\xce\\x9c\\x75\\x3a\\xd5\\x44\\xe1\\x12\\x4e\\x21\\x02\\x0d\\x4c\\x62\\xde\\xda\\x9e\\xd9\\xb9\\xd1\\xf2\\xfb\\x7c\\x54\\xca\\x7a\\xb0\\x9f\\x38\\x3b\\xef\\x48\\xcf\\xc6\\x84\\x8c\\x27\\x13\\x02\\xa1\\x0f\\xa6\\x87\\xf5\\x6e\\x00\\xe0\\xa7\\xd0\\x93\\xc9\\x27\\xb4\\xfd\\xd8\\xf1\\xbe\\xdf\\x62\\x88\\xa0\\xe3\\x02\\x84\\x8a\\x80\\x12\\xf1\\x27\\xa7\\x9d\\x2d\\x30\\xa0\\x6c\\xe1\\x7d\\x94\\xaa\\x6f\\x7f\\x8a\\x1e\\x6e\\xb9\\xd0\\x68\\x1c\\x37\\x74\\xf6\\x14\\xcc\\x6d\\xbc\\xb2\\xa8\\x13\\xf9\\x25\\xc6\\x30\\x6a\\x63\\x05\\x72\\xa8\\x3e\\xc1\\x09\\xd5\\xf5\\x33\\xc0\\x58\\x4c\\xb4\\x21\\xd9\\x19\"},\n{{0xa1,0xac,0x48,0xaa,0x5f,0xfa,0x3d,0x80,0x08,0x19,0xd0,0x3b,0x7f,0x62,0xba,0xbf,0x29,0x1f,0x20,0x90,0x4c,0x11,0xa6,0x40,0x0e,0x4f,0x45,0x20,0x5f,0x10,0x3e,0x38,},{0x08,0x54,0xe0,0x34,0x0f,0x81,0x49,0x85,0xfb,0x12,0x2b,0x78,0x72,0x94,0x79,0xe3,0xfd,0xe8,0x55,0xc2,0x11,0xca,0xde,0xae,0x56,0xf0,0xd4,0xdc,0x08,0x28,0xd5,0xfa,},{0xc5,0x7e,0x3c,0x09,0x1e,0xd2,0x4e,0x5e,0x84,0x66,0x5b,0xd9,0xbb,0x10,0x2d,0xb4,0x97,0x97,0xdf,0x90,0x08,0xf0,0x55,0x57,0xfa,0x0d,0x5a,0xd7,0xa2,0x95,0xe5,0xe4,0xd2,0xa4,0x71,0x6b,0x17,0xf8,0xc9,0x1c,0xb1,0x2f,0x5a,0xbf,0xb1,0xaf,0x02,0x7f,0xb0,0x41,0x11,0x99,0xac,0xc5,0xd2,0x85,0xd8,0x42,0xa4,0xb6,0x5b,0xde,0x49,0x02,},\"\\xd6\\xf1\\x24\\xed\\x75\\x20\\x21\\xc1\\x09\\x26\\x97\\x2a\\x0c\\x26\\xf3\\xb1\\x83\\x8b\\x3c\\x7a\\xf2\\x47\\xc1\\x80\\x09\\xa2\\x31\\xec\\xce\\x96\\x4b\\xf6\\x69\\x86\\x37\\x83\\x3f\\x60\\x7d\\xca\\x83\\x6f\\x8a\\x60\\x6c\\x72\\xae\\x3c\\xb1\\x70\\x17\\x44\\x47\\xa2\\xcc\\xe5\\x83\\xf6\\xe2\\x44\\xdb\\xc1\\x63\\xe2\\x15\\xb9\\x82\\x0d\\xe7\\x49\\x6f\\xfc\\x5b\\x70\\x50\\xc4\\x8f\\x28\\x30\\x24\\x66\\x78\\xcb\\xa4\\xdc\\x5c\\xaa\\x07\\xc1\\x45\\x85\\x63\\xaa\\x2d\\x10\\xdc\\xb7\\x77\\x0e\\xf8\\xfe\\xde\\x02\\x7d\\xd7\\xf2\\x0d\\xdc\\x8c\\xc7\\x8c\\x3a\\x2e\\x2e\\x95\\x8b\\xd1\\x8c\\x00\\x06\\xcf\\x8f\\xb8\\x2d\\x44\\xe5\\x3e\\x1d\\xa7\\xaa\\x80\\xfd\\x10\\x06\\xf3\\xb2\\x30\\x0c\\x9b\\x07\\x9d\\x8a\\x66\\xf1\\xe4\\xa3\\xf4\\x70\\x61\\xf9\\xe2\\xf4\\x5d\\xae\\x35\\xdc\\x29\\x52\\x04\\xb1\\x94\\x60\\xca\\x57\\x07\\xab\\x57\\xce\\x21\\x5a\\x24\\xc1\\x0f\\xaa\\xb3\\xfa\\x20\\xbc\\xcd\\x10\\x1e\\x7a\\x7d\\x70\\x07\\x75\\x99\\xf3\\xd6\\x72\\x57\\x07\\x55\\x21\\x29\\xca\\xd7\\x57\\xd6\\x51\\x4c\\x1b\\x28\\x99\\x7e\\x47\\x1f\\x94\\xb0\\xfd\\xed\\x8f\\xbb\\xd0\\x65\\xde\\xad\\x19\\x6d\\x2c\\x07\\xd3\\xdf\\xa7\\xb9\\xfb\\x3b\\xae\\x76\\x80\\xf7\\x66\\x21\\x20\\x0d\\x09\\x9e\\xeb\\xeb\\xbe\\xa0\\xe8\\x95\\x7d\\xf5\\xb5\\xe2\\x04\\xca\\x3e\\x9e\\x29\\x52\\xb8\\xa3\\x0f\\x0a\\x13\\x1a\\x68\\x67\\xb1\\x38\\x1e\\x39\\x4b\\x1b\\x44\\x43\\x10\\xf0\\x76\\x32\\x66\\x56\\xcf\\x93\\x41\\x67\\x80\\x08\\xe9\\x52\\x51\\x47\\xd8\\xd6\\x1c\\xe9\\x3d\\x3b\\xf5\\x39\\x00\\xca\\xb9\\x12\\x66\\x37\\x17\\xe0\\x98\\x72\\x93\\x83\\x3d\\x19\\x02\\xd7\\xfb\\x04\\x7b\\x99\\x7b\\x86\\x02\\x6c\\x46\\x7d\\x7b\\xb1\\x7c\\xf4\\x57\\x96\\x73\\x8f\\x7a\\x77\\x4a\\xc1\\x26\\x76\\x4e\\xd4\\xeb\\x45\\x12\\x43\\x09\\xf4\\x58\\x62\\x60\\x17\\x6b\\xa4\\x65\\x91\\x8d\\x48\\x33\\x0a\\x9c\\xc1\\x8c\\x4e\\xce\\xa0\\xdd\\xaf\\x38\\x94\\x6a\\xcc\\x0e\\x36\\x1d\\xd4\\x0a\\x7e\\x91\\x33\\xce\\xb5\\x0e\\x1c\\x31\\x7e\\xa4\\x2b\\xd0\\x98\\x0a\\x72\\xb8\\xba\\x3d\\x8a\\x6c\\x76\\x93\\xdd\\x56\\x02\\xf3\\x74\\xf2\\x66\\x4d\\xf4\\xba\\x56\\xdf\\x01\\xe8\\x82\\xfc\\xa4\\x2c\\xb4\\xdb\\x62\\x1f\\x47\\x6c\\x76\\xe1\\xea\\x9f\\xd1\\x05\\x91\\x1a\\x74\\xb7\\x79\\x52\\xd9\\x91\\x4a\\x5a\\xc0\\xf9\\x8a\\x90\\x0c\\x1b\\x2e\\x1a\\x56\\xc4\\xea\\x85\\x18\\xa9\\xee\\x47\\xc4\\xed\\x14\\xd0\\xbd\\x35\\xec\\xa5\\x60\\x31\\x9c\\x8e\\xa2\\x47\\x55\\xd7\\x1a\\x4e\\x03\\x08\\x50\\xbc\\x4d\\xc6\\x03\\x89\\xf3\\x25\\x80\\x40\\x21\\x20\\x4c\\xce\\xbc\\x25\\xfe\\xdb\\xd3\\x2e\\xdd\\x8d\\x84\\x46\\xaa\\x23\\xce\\x56\\xa8\\x5f\\x77\\x9e\\x85\\x8d\\x36\\xaf\\x7c\\x07\\x3c\\x11\\x5e\\x34\\x1f\\x41\\x2c\\x66\\x0f\\xab\\x80\\x0f\\xe7\\x4c\\x50\\xe7\\x14\\xee\\x08\\x6e\\x2f\\xbc\\x8d\\x7a\\xbb\\xf3\\xe9\\x8f\\xb4\\x0c\\xa2\\x7f\\x1f\\x01\\xa9\\xaa\\xdd\\x8c\\xc2\\x27\\x5c\\x2d\\xd3\\xf7\\x6e\\x4c\\x1d\\x81\\xc4\\xb7\\x92\\xda\\xec\\xc9\\xfe\\x66\\x04\\x49\\x41\\xb8\\xb2\\x91\\x84\\x86\\xdd\\x4a\\xcb\\x56\\x2a\\x7b\\x58\\xad\\x8c\\x60\\xc2\\x1b\\x83\\xcf\\x48\\xae\\xfa\\x72\\x56\\xa1\\xed\\x80\\x9e\\x66\\x98\\x11\\xf4\\x84\\x36\\x49\\x70\\xbc\\x56\\x95\\x08\\x99\\x19\\xbc\\x32\\xd2\\x8e\\xa7\\x52\\xe8\\xe3\\x18\\xce\\xff\\x46\\x7f\\x77\\xae\\x19\\x77\\xc5\\xff\\xd7\\x9c\\x17\\xc2\\xda\\x8b\\xc7\\xf8\\x23\\xdd\\x94\\x39\\x86\\x83\\x18\\x99\\x45\\xf8\\xb7\\x92\\x38\\xa4\\xe8\\x15\\xb1\\x42\\xb8\\x66\\xac\\xbd\\xbc\\xb7\\xae\\xa7\\xf1\\x43\\xff\\xfb\\x7c\\xc2\\xb4\\xb5\\x4b\\xbf\\x36\\x1a\\xfd\\xa9\\x13\\xad\\x6d\\xf1\\xe4\\x9d\\xfd\\x6b\\x53\\x26\\x42\\xe6\\x3f\\x55\\xd8\\x93\\xa4\\x70\\xd4\\x03\\x70\\x66\\x5c\\xfb\\x74\\xef\\xd3\\xf5\\x9c\\xb0\\xff\\x60\\x06\\x17\\x4c\\xa3\\x5f\\x53\\xb9\\x7c\\x54\\x3e\\x08\\xaf\\x4b\\xf5\\xbb\\x75\\xff\\x90\\x31\\x61\\x06\\x52\\xa3\\xf6\\xf2\\xa0\\xcf\\xe9\\x7e\\x7a\\x52\\x1f\\x3d\\x2a\\x28\\x91\\x14\\xde\\xd3\\x47\\x72\\xb0\\xe4\\x98\\x17\\xbd\\xe1\\xcb\\x92\\x4f\\xf5\\x14\\xe2\\x86\\x6a\\x09\\xe3\\xed\\xe0\\x78\\x2d\\x2c\\x0c\\x98\\xe6\\x81\\x4b\\x8c\\x1e\\x77\\x8c\\xf8\\x30\\x63\\x48\\xc9\\x33\\xad\\xb2\\xe4\\x72\\xdb\\xa0\\x9d\\xb9\\x54\\xff\\x49\\x64\\x83\\x73\\x39\\x5a\\x2f\\x01\\x81\\x95\\x8f\\xeb\\x1e\\xa2\\x83\\x4c\\x99\\x53\\x28\\x73\\xdb\\x5c\\x88\\xeb\\x52\\x89\\xc7\\x7e\\x90\\x01\\x52\\x03\\xef\\x50\\x2a\\xc8\\xe1\\xc4\\x8f\\xa1\\xa0\\x6d\\xaf\\xa6\\x51\\x9d\\x52\\xda\\xe3\\xc5\\x56\\x75\\x70\\xdd\\x24\\x34\\xe6\\x71\\x92\\x7c\\x66\\x36\\x3f\\x78\\x31\\x56\\x89\\x3f\\x13\\x8a\\x84\\xc7\\x56\\x64\\xb3\\x0a\\xe4\\x27\\x51\\x12\\x73\\x6d\\x53\\xd4\\xf3\\x99\\xdd\\xda\\x3d\\x23\\x06\\x7c\\x07\\x3f\\x52\\x1a\\xfb\\xa1\\xf7\\xbe\\x58\\x55\\x13\\xc2\\xce\\xc9\\xc8\\xf0\\x8d\\x2a\\x22\\xc3\\xc8\\x53\\x92\\xcd\\x2a\\xe5\\x0f\\x39\\x28\\x25\\x1f\\x86\\xb3\\x10\\xc6\\x9a\\x0f\\x8c\\x4e\\x85\\x3a\\xb3\\xf3\\xe8\\x12\\x9b\\x05\\x66\\xef\\x4b\\xbb\\xe8\\x0b\\x8c\\x02\\xc8\\x92\\x8a\\x4d\\xe5\\x6c\\x0d\\x11\\x9a\\x45\\xbb\\xf5\\xaf\\x18\\x08\\xd4\\x88\\x85\\x2d\\x8a\\x45\\xbe\\xb0\\xd6\\x83\\x24\\x8a\\x4d\\x65\\xde\\x15\\x26\\xb3\\xd1\\xd2\\xff\\xc1\\xf2\\x22\\x15\\xb6\\x08\\x46\\x8c\\xbc\\x3b\\xd3\\x95\\x14\\xb3\\x97\\xfc\\x0d\\xb0\\xf1\\x13\\xdb\\xe6\\xfc\\xe4\\x65\\x2e\\x82\\xff\\x89\\x5b\\x2b\\x43\\x87\\xe0\\x41\\xd7\\xe4\\xe7\\xbd\\xe4\\x69\\x47\\x69\\x66\\x5e\\x81\"},\n{{0xf5,0xe5,0x76,0x7c,0xf1,0x53,0x31,0x95,0x17,0x63,0x0f,0x22,0x68,0x76,0xb8,0x6c,0x81,0x60,0xcc,0x58,0x3b,0xc0,0x13,0x74,0x4c,0x6b,0xf2,0x55,0xf5,0xcc,0x0e,0xe5,},{0x27,0x81,0x17,0xfc,0x14,0x4c,0x72,0x34,0x0f,0x67,0xd0,0xf2,0x31,0x6e,0x83,0x86,0xce,0xff,0xbf,0x2b,0x24,0x28,0xc9,0xc5,0x1f,0xef,0x7c,0x59,0x7f,0x1d,0x42,0x6e,},{0x0a,0xab,0x4c,0x90,0x05,0x01,0xb3,0xe2,0x4d,0x7c,0xdf,0x46,0x63,0x32,0x6a,0x3a,0x87,0xdf,0x5e,0x48,0x43,0xb2,0xcb,0xdb,0x67,0xcb,0xf6,0xe4,0x60,0xfe,0xc3,0x50,0xaa,0x53,0x71,0xb1,0x50,0x8f,0x9f,0x45,0x28,0xec,0xea,0x23,0xc4,0x36,0xd9,0x4b,0x5e,0x8f,0xcd,0x4f,0x68,0x1e,0x30,0xa6,0xac,0x00,0xa9,0x70,0x4a,0x18,0x8a,0x03,},\"\\x08\\xb8\\xb2\\xb7\\x33\\x42\\x42\\x43\\x76\\x0f\\xe4\\x26\\xa4\\xb5\\x49\\x08\\x63\\x21\\x10\\xa6\\x6c\\x2f\\x65\\x91\\xea\\xbd\\x33\\x45\\xe3\\xe4\\xeb\\x98\\xfa\\x6e\\x26\\x4b\\xf0\\x9e\\xfe\\x12\\xee\\x50\\xf8\\xf5\\x4e\\x9f\\x77\\xb1\\xe3\\x55\\xf6\\xc5\\x05\\x44\\xe2\\x3f\\xb1\\x43\\x3d\\xdf\\x73\\xbe\\x84\\xd8\\x79\\xde\\x7c\\x00\\x46\\xdc\\x49\\x96\\xd9\\xe7\\x73\\xf4\\xbc\\x9e\\xfe\\x57\\x38\\x82\\x9a\\xdb\\x26\\xc8\\x1b\\x37\\xc9\\x3a\\x1b\\x27\\x0b\\x20\\x32\\x9d\\x65\\x86\\x75\\xfc\\x6e\\xa5\\x34\\xe0\\x81\\x0a\\x44\\x32\\x82\\x6b\\xf5\\x8c\\x94\\x1e\\xfb\\x65\\xd5\\x7a\\x33\\x8b\\xbd\\x2e\\x26\\x64\\x0f\\x89\\xff\\xbc\\x1a\\x85\\x8e\\xfc\\xb8\\x55\\x0e\\xe3\\xa5\\xe1\\x99\\x8b\\xd1\\x77\\xe9\\x3a\\x73\\x63\\xc3\\x44\\xfe\\x6b\\x19\\x9e\\xe5\\xd0\\x2e\\x82\\xd5\\x22\\xc4\\xfe\\xba\\x15\\x45\\x2f\\x80\\x28\\x8a\\x82\\x1a\\x57\\x91\\x16\\xec\\x6d\\xad\\x2b\\x3b\\x31\\x0d\\xa9\\x03\\x40\\x1a\\xa6\\x21\\x00\\xab\\x5d\\x1a\\x36\\x55\\x3e\\x06\\x20\\x3b\\x33\\x89\\x0c\\xc9\\xb8\\x32\\xf7\\x9e\\xf8\\x05\\x60\\xcc\\xb9\\xa3\\x9c\\xe7\\x67\\x96\\x7e\\xd6\\x28\\xc6\\xad\\x57\\x3c\\xb1\\x16\\xdb\\xef\\xef\\xd7\\x54\\x99\\xda\\x96\\xbd\\x68\\xa8\\xa9\\x7b\\x92\\x8a\\x8b\\xbc\\x10\\x3b\\x66\\x21\\xfc\\xde\\x2b\\xec\\xa1\\x23\\x1d\\x20\\x6b\\xe6\\xcd\\x9e\\xc7\\xaf\\xf6\\xf6\\xc9\\x4f\\xcd\\x72\\x04\\xed\\x34\\x55\\xc6\\x8c\\x83\\xf4\\xa4\\x1d\\xa4\\xaf\\x2b\\x74\\xef\\x5c\\x53\\xf1\\xd8\\xac\\x70\\xbd\\xcb\\x7e\\xd1\\x85\\xce\\x81\\xbd\\x84\\x35\\x9d\\x44\\x25\\x4d\\x95\\x62\\x9e\\x98\\x55\\xa9\\x4a\\x7c\\x19\\x58\\xd1\\xf8\\xad\\xa5\\xd0\\x53\\x2e\\xd8\\xa5\\xaa\\x3f\\xb2\\xd1\\x7b\\xa7\\x0e\\xb6\\x24\\x8e\\x59\\x4e\\x1a\\x22\\x97\\xac\\xbb\\xb3\\x9d\\x50\\x2f\\x1a\\x8c\\x6e\\xb6\\xf1\\xce\\x22\\xb3\\xde\\x1a\\x1f\\x40\\xcc\\x24\\x55\\x41\\x19\\xa8\\x31\\xa9\\xaa\\xd6\\x07\\x9c\\xad\\x88\\x42\\x5d\\xe6\\xbd\\xe1\\xa9\\x18\\x7e\\xbb\\x60\\x92\\xcf\\x67\\xbf\\x2b\\x13\\xfd\\x65\\xf2\\x70\\x88\\xd7\\x8b\\x7e\\x88\\x3c\\x87\\x59\\xd2\\xc4\\xf5\\xc6\\x5a\\xdb\\x75\\x53\\x87\\x8a\\xd5\\x75\\xf9\\xfa\\xd8\\x78\\xe8\\x0a\\x0c\\x9b\\xa6\\x3b\\xcb\\xcc\\x27\\x32\\xe6\\x94\\x85\\xbb\\xc9\\xc9\\x0b\\xfb\\xd6\\x24\\x81\\xd9\\x08\\x9b\\xec\\xcf\\x80\\xcf\\xe2\\xdf\\x16\\xa2\\xcf\\x65\\xbd\\x92\\xdd\\x59\\x7b\\x07\\x07\\xe0\\x91\\x7a\\xf4\\x8b\\xbb\\x75\\xfe\\xd4\\x13\\xd2\\x38\\xf5\\x55\\x5a\\x7a\\x56\\x9d\\x80\\xc3\\x41\\x4a\\x8d\\x08\\x59\\xdc\\x65\\xa4\\x61\\x28\\xba\\xb2\\x7a\\xf8\\x7a\\x71\\x31\\x4f\\x31\\x8c\\x78\\x2b\\x23\\xeb\\xfe\\x80\\x8b\\x82\\xb0\\xce\\x26\\x40\\x1d\\x2e\\x22\\xf0\\x4d\\x83\\xd1\\x25\\x5d\\xc5\\x1a\\xdd\\xd3\\xb7\\x5a\\x2b\\x1a\\xe0\\x78\\x45\\x04\\xdf\\x54\\x3a\\xf8\\x96\\x9b\\xe3\\xea\\x70\\x82\\xff\\x7f\\xc9\\x88\\x8c\\x14\\x4d\\xa2\\xaf\\x58\\x42\\x9e\\xc9\\x60\\x31\\xdb\\xca\\xd3\\xda\\xd9\\xaf\\x0d\\xcb\\xaa\\xaf\\x26\\x8c\\xb8\\xfc\\xff\\xea\\xd9\\x4f\\x3c\\x7c\\xa4\\x95\\xe0\\x56\\xa9\\xb4\\x7a\\xcd\\xb7\\x51\\xfb\\x73\\xe6\\x66\\xc6\\xc6\\x55\\xad\\xe8\\x29\\x72\\x97\\xd0\\x7a\\xd1\\xba\\x5e\\x43\\xf1\\xbc\\xa3\\x23\\x01\\x65\\x13\\x39\\xe2\\x29\\x04\\xcc\\x8c\\x42\\xf5\\x8c\\x30\\xc0\\x4a\\xaf\\xdb\\x03\\x8d\\xda\\x08\\x47\\xdd\\x98\\x8d\\xcd\\xa6\\xf3\\xbf\\xd1\\x5c\\x4b\\x4c\\x45\\x25\\x00\\x4a\\xa0\\x6e\\xef\\xf8\\xca\\x61\\x78\\x3a\\xac\\xec\\x57\\xfb\\x3d\\x1f\\x92\\xb0\\xfe\\x2f\\xd1\\xa8\\x5f\\x67\\x24\\x51\\x7b\\x65\\xe6\\x14\\xad\\x68\\x08\\xd6\\xf6\\xee\\x34\\xdf\\xf7\\x31\\x0f\\xdc\\x82\\xae\\xbf\\xd9\\x04\\xb0\\x1e\\x1d\\xc5\\x4b\\x29\\x27\\x09\\x4b\\x2d\\xb6\\x8d\\x6f\\x90\\x3b\\x68\\x40\\x1a\\xde\\xbf\\x5a\\x7e\\x08\\xd7\\x8f\\xf4\\xef\\x5d\\x63\\x65\\x3a\\x65\\x04\\x0c\\xf9\\xbf\\xd4\\xac\\xa7\\x98\\x4a\\x74\\xd3\\x71\\x45\\x98\\x67\\x80\\xfc\\x0b\\x16\\xac\\x45\\x16\\x49\\xde\\x61\\x88\\xa7\\xdb\\xdf\\x19\\x1f\\x64\\xb5\\xfc\\x5e\\x2a\\xb4\\x7b\\x57\\xf7\\xf7\\x27\\x6c\\xd4\\x19\\xc1\\x7a\\x3c\\xa8\\xe1\\xb9\\x39\\xae\\x49\\xe4\\x88\\xac\\xba\\x6b\\x96\\x56\\x10\\xb5\\x48\\x01\\x09\\xc8\\xb1\\x7b\\x80\\xe1\\xb7\\xb7\\x50\\xdf\\xc7\\x59\\x8d\\x5d\\x50\\x11\\xfd\\x2d\\xcc\\x56\\x00\\xa3\\x2e\\xf5\\xb5\\x2a\\x1e\\xcc\\x82\\x0e\\x30\\x8a\\xa3\\x42\\x72\\x1a\\xac\\x09\\x43\\xbf\\x66\\x86\\xb6\\x4b\\x25\\x79\\x37\\x65\\x04\\xcc\\xc4\\x93\\xd9\\x7e\\x6a\\xed\\x3f\\xb0\\xf9\\xcd\\x71\\xa4\\x3d\\xd4\\x97\\xf0\\x1f\\x17\\xc0\\xe2\\xcb\\x37\\x97\\xaa\\x2a\\x2f\\x25\\x66\\x56\\x16\\x8e\\x6c\\x49\\x6a\\xfc\\x5f\\xb9\\x32\\x46\\xf6\\xb1\\x11\\x63\\x98\\xa3\\x46\\xf1\\xa6\\x41\\xf3\\xb0\\x41\\xe9\\x89\\xf7\\x91\\x4f\\x90\\xcc\\x2c\\x7f\\xff\\x35\\x78\\x76\\xe5\\x06\\xb5\\x0d\\x33\\x4b\\xa7\\x7c\\x22\\x5b\\xc3\\x07\\xba\\x53\\x71\\x52\\xf3\\xf1\\x61\\x0e\\x4e\\xaf\\xe5\\x95\\xf6\\xd9\\xd9\\x0d\\x11\\xfa\\xa9\\x33\\xa1\\x5e\\xf1\\x36\\x95\\x46\\x86\\x8a\\x7f\\x3a\\x45\\xa9\\x67\\x68\\xd4\\x0f\\xd9\\xd0\\x34\\x12\\xc0\\x91\\xc6\\x31\\x5c\\xf4\\xfd\\xe7\\xcb\\x68\\x60\\x69\\x37\\x38\\x0d\\xb2\\xea\\xaa\\x70\\x7b\\x4c\\x41\\x85\\xc3\\x2e\\xdd\\xcd\\xd3\\x06\\x70\\x5e\\x4d\\xc1\\xff\\xc8\\x72\\xee\\xee\\x47\\x5a\\x64\\xdf\\xac\\x86\\xab\\xa4\\x1c\\x06\\x18\\x98\\x3f\\x87\\x41\\xc5\\xef\\x68\\xd3\\xa1\\x01\\xe8\\xa3\\xb8\\xca\\xc6\\x0c\\x90\\x5c\\x15\\xfc\\x91\\x08\\x40\\xb9\\x4c\\x00\\xa0\\xb9\\xd0\"},\n"
  },
  {
    "path": "src/crypto/ed25519/test-internals.c",
    "content": "#include <stdio.h>\n#include \"ed25519-donna.h\"\n\nstatic int\ntest_adds() {\n#if defined(HAVE_UINT128) && !defined(ED25519_SSE2)\n\t/* largest result for each limb from a mult or square: all elements except r1 reduced, r1 overflowed as far as possible */\n\tstatic const bignum25519 max_bignum = {\n\t\t0x7ffffffffffff,0x8000000001230,0x7ffffffffffff,0x7ffffffffffff,0x7ffffffffffff\n\t};\n\n\t/* what max_bignum should fully reduce to */\n\tstatic const unsigned char max_bignum_raw[32] = {\n\t\t0x12,0x00,0x00,0x00,0x00,0x00,0x88,0x91,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00\n\t};\n\n\t/* (max_bignum + max_bignum)^2 */\n\tstatic const unsigned char max_bignum2_squared_raw[32] = {\n\t\t0x10,0x05,0x00,0x00,0x00,0x00,0x80,0xdc,0x51,0x00,0x00,0x00,0x00,0x61,0xed,0x4a,\n\t\t0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n\n\t/* ((max_bignum + max_bignum) + max_bignum)^2 */\n\tstatic const unsigned char max_bignum3_squared_raw[32] = {\n\t\t0x64,0x0b,0x00,0x00,0x00,0x00,0x20,0x30,0xb8,0x00,0x00,0x00,0x40,0x1a,0x96,0xe8,\n\t\t0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n#else\n\t/* largest result for each limb from a mult or square: all elements except r1 reduced, r1 overflowed as far as possible */\n\tstatic const bignum25519 ALIGN(16) max_bignum = {\n\t\t0x3ffffff,0x2000300,0x3ffffff,0x1ffffff,0x3ffffff,\n\t\t0x1ffffff,0x3ffffff,0x1ffffff,0x3ffffff,0x1ffffff\n\t};\n\n\t/* what max_bignum should fully reduce to */\n\tstatic const unsigned char max_bignum2_squared_raw[32] = {\n\t\t0x10,0x05,0x00,0x40,0xc2,0x06,0x40,0x80,0x41,0x02,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n\n\t/* (max_bignum * max_bignum) */\n\tstatic const unsigned char max_bignum3_squared_raw[32] = {\n\t\t0x64,0x0b,0x00,0x10,0x35,0x0f,0x90,0x60,0x13,0x05,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n#endif\n\tunsigned char result[32];\n\tstatic const bignum25519 ALIGN(16) zero = {0};\n\tbignum25519 ALIGN(16) a, b, c;\n\tsize_t i;\n\n\t/* a = (max_bignum + max_bignum) */\n\tcurve25519_add(a, max_bignum, max_bignum);\n\n\t/* b = ((max_bignum + max_bignum) * (max_bignum + max_bignum)) */\n\tcurve25519_mul(b, a, a);\n\tcurve25519_contract(result, b);\n\tif (memcmp(result, max_bignum2_squared_raw, 32) != 0)\n\t\treturn -1;\n\tcurve25519_square(b, a);\n\tcurve25519_contract(result, b);\n\tif (memcmp(result, max_bignum2_squared_raw, 32) != 0)\n\t\treturn -1;\n\n\t/* b = (max_bignum + max_bignum + max_bignum) */\n\tcurve25519_add_after_basic(b, a, max_bignum);\n\n\t/* a = ((max_bignum + max_bignum + max_bignum) * (max_bignum + max_bignum + max_bignum)) */\n\tcurve25519_mul(a, b, b);\n\tcurve25519_contract(result, a);\n\tif (memcmp(result, max_bignum3_squared_raw, 32) != 0)\n\t\treturn -1;\n\tcurve25519_square(a, b);\n\tcurve25519_contract(result, a);\n\tif (memcmp(result, max_bignum3_squared_raw, 32) != 0)\n\t\treturn -1;\n\n\treturn 0;\n}\n\nstatic int\ntest_subs() {\n#if defined(HAVE_UINT128) && !defined(ED25519_SSE2)\n\t/* largest result for each limb from a mult or square: all elements except r1 reduced, r1 overflowed as far as possible */\n\tstatic const bignum25519 max_bignum = {\n\t\t0x7ffffffffffff,0x8000000001230,0x7ffffffffffff,0x7ffffffffffff,0x7ffffffffffff\n\t};\n\n\t/* what max_bignum should fully reduce to */\n\tstatic const unsigned char max_bignum_raw[32] = {\n\t\t0x12,0x00,0x00,0x00,0x00,0x00,0x88,0x91,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00\n\t};\n\n\t/* (max_bignum * max_bignum) */\n\tstatic const unsigned char max_bignum_squared_raw[32] = {\n\t\t0x44,0x01,0x00,0x00,0x00,0x00,0x20,0x77,0x14,0x00,0x00,0x00,0x40,0x58,0xbb,0x52,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00\n\t};\n#else\n\t/* largest result for each limb from a mult or square: all elements except r1 reduced, r1 overflowed as far as possible */\n\tstatic const bignum25519 ALIGN(16) max_bignum = {\n\t\t0x3ffffff,0x2000300,0x3ffffff,0x1ffffff,0x3ffffff,\n\t\t0x1ffffff,0x3ffffff,0x1ffffff,0x3ffffff,0x1ffffff\n\t};\n\n\t/* what max_bignum should fully reduce to */\n\tstatic const unsigned char max_bignum_raw[32] = {\n\t\t0x12,0x00,0x00,0x04,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n\n\t/* (max_bignum * max_bignum) */\n\tstatic const unsigned char max_bignum_squared_raw[32] = {\n\t\t0x44,0x01,0x00,0x90,0xb0,0x01,0x10,0x60,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t\t0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\n\t};\n#endif\n\tunsigned char result[32];\n\tstatic const bignum25519 ALIGN(16) zero = {0};\n\tbignum25519 ALIGN(16) a, b, c;\n\tsize_t i;\n\n\t/* a = max_bignum - 0, which expands to 2p + max_bignum - 0 */\n\tcurve25519_sub(a, max_bignum, zero);\n\tcurve25519_contract(result, a);\n\tif (memcmp(result, max_bignum_raw, 32) != 0)\n\t\treturn -1;\n\n\t/* b = (max_bignum * max_bignum) */\n\tcurve25519_mul(b, a, a);\n\tcurve25519_contract(result, b);\n\tif (memcmp(result, max_bignum_squared_raw, 32) != 0)\n\t\treturn -1;\n\tcurve25519_square(b, a);\n\tcurve25519_contract(result, b);\n\tif (memcmp(result, max_bignum_squared_raw, 32) != 0)\n\t\treturn -1;\n\n\t/* b = ((a - 0) - 0) */\n\tcurve25519_sub_after_basic(b, a, zero);\n\tcurve25519_contract(result, b);\n\tif (memcmp(result, max_bignum_raw, 32) != 0)\n\t\treturn -1;\n\n\t/* a = (max_bignum * max_bignum) */\n\tcurve25519_mul(a, b, b);\n\tcurve25519_contract(result, a);\n\tif (memcmp(result, max_bignum_squared_raw, 32) != 0)\n\t\treturn -1;\n\tcurve25519_square(a, b);\n\tcurve25519_contract(result, a);\n\tif (memcmp(result, max_bignum_squared_raw, 32) != 0)\n\t\treturn -1;\n\n\n\treturn 0;\n}\n\n\nint\nmain() {\n\tint ret = 0;\n\tint single;\n\tsingle = test_adds();\n\tif (single) printf(\"test_adds: FAILED\\n\");\n\tret |= single;\n\tsingle = test_subs();\n\tif (single) printf(\"test_subs: FAILED\\n\");\n\tret |= single;\n\tif (!ret) printf(\"success\\n\");\n\treturn ret;\n}\n\n\n"
  },
  {
    "path": "src/crypto/ed25519/test-ticks.h",
    "content": "#include \"ed25519-donna-portable-identify.h\"\n\n/* ticks - not tested on anything other than x86 */\nstatic uint64_t\nget_ticks(void) {\n#if defined(CPU_X86) || defined(CPU_X86_64)\n\t#if defined(COMPILER_INTEL)\n\t\treturn _rdtsc();\n\t#elif defined(COMPILER_MSVC)\n\t\treturn __rdtsc();\n\t#elif defined(COMPILER_GCC)\n\t\tuint32_t lo, hi;\n\t\t__asm__ __volatile__(\"rdtsc\" : \"=a\" (lo), \"=d\" (hi));\n\t\treturn ((uint64_t)lo | ((uint64_t)hi << 32));\n\t#else\n\t\tneed rdtsc for this compiler\n\t#endif\n#elif defined(OS_SOLARIS)\n\treturn (uint64_t)gethrtime();\n#elif defined(CPU_SPARC) && !defined(OS_OPENBSD)\n\tuint64_t t;\n\t__asm__ __volatile__(\"rd %%tick, %0\" : \"=r\" (t));\n\treturn t;\n#elif defined(CPU_PPC)\n\tuint32_t lo = 0, hi = 0;\n\t__asm__ __volatile__(\"mftbu %0; mftb %1\" : \"=r\" (hi), \"=r\" (lo));\n\treturn ((uint64_t)lo | ((uint64_t)hi << 32));\n#elif defined(CPU_IA64)\n\tuint64_t t;\n\t__asm__ __volatile__(\"mov %0=ar.itc\" : \"=r\" (t));\n\treturn t;\n#elif defined(OS_NIX)\n\ttimeval t2;\n\tgettimeofday(&t2, NULL);\n\tt = ((uint64_t)t2.tv_usec << 32) | (uint64_t)t2.tv_sec;\n\treturn t;\n#else\n\tneed ticks for this platform\n#endif\n}\n\n#define timeit(x,minvar)         \\\n\tticks = get_ticks();         \\\n \tx;                           \\\n\tticks = get_ticks() - ticks; \\\n\tif (ticks < minvar)          \\\n\t\tminvar = ticks;\n\n#define maxticks 0xffffffffffffffffull\n\n"
  },
  {
    "path": "src/crypto/ed25519/test.c",
    "content": "/*\n\tValidate ed25519 implementation against the official test vectors from \n\thttp://ed25519.cr.yp.to/software.html\n*/\n\n#include <stdio.h>\n#include <string.h>\n#include \"ed25519.h\"\n\n#include \"test-ticks.h\"\n\nstatic void\nedassert(int check, int round, const char *failreason) {\n\tif (check)\n\t\treturn;\n\tprintf(\"round %d, %s\\n\", round, failreason);\n\texit(1);\n}\n\nstatic void\nedassert_die(const unsigned char *a, const unsigned char *b, size_t len, int round, const char *failreason) {\n\tsize_t i;\n\tif (round > 0)\n\t\tprintf(\"round %d, %s\\n\", round, failreason);\n\telse\n\t\tprintf(\"%s\\n\", failreason);\n\tprintf(\"want: \"); for (i = 0; i < len; i++) printf(\"%02x,\", a[i]); printf(\"\\n\");\n\tprintf(\"got : \"); for (i = 0; i < len; i++) printf(\"%02x,\", b[i]); printf(\"\\n\");\n\tprintf(\"diff: \"); for (i = 0; i < len; i++) if (a[i] ^ b[i]) printf(\"%02x,\", a[i] ^ b[i]); else printf(\"  ,\"); printf(\"\\n\\n\");\n\texit(1);\n}\n\nstatic void\nedassert_equal(const unsigned char *a, const unsigned char *b, size_t len, const char *failreason) {\n\tif (memcmp(a, b, len) == 0)\n\t\treturn;\n\tedassert_die(a, b, len, -1, failreason);\n}\n\nstatic void\nedassert_equal_round(const unsigned char *a, const unsigned char *b, size_t len, int round, const char *failreason) {\n\tif (memcmp(a, b, len) == 0)\n\t\treturn;\n\tedassert_die(a, b, len, round, failreason);\n}\n\n\n/* test data */\ntypedef struct test_data_t {\n\tunsigned char sk[32], pk[32], sig[64];\n\tconst char *m;\n} test_data;\n\n\ntest_data dataset[] = {\n#include \"regression.h\"\n};\n\n/* result of the curve25519 scalarmult ((|255| * basepoint) * basepoint)... 1024 times */\nconst curved25519_key curved25519_expected = {\n\t0xac,0xce,0x24,0xb1,0xd4,0xa2,0x36,0x21,\n\t0x15,0xe2,0x3e,0x84,0x3c,0x23,0x2b,0x5f,\n\t0x95,0x6c,0xc0,0x7b,0x95,0x82,0xd7,0x93,\n\t0xd5,0x19,0xb6,0xf1,0xfb,0x96,0xd6,0x04\n};\n\n\n/* from ed25519-donna-batchverify.h */\nextern unsigned char batch_point_buffer[3][32];\n\n/* y coordinate of the final point from 'amd64-51-30k' with the same random generator */\nstatic const unsigned char batch_verify_y[32] = {\n\t0x51,0xe7,0x68,0xe0,0xf7,0xa1,0x88,0x45,\n\t0xde,0xa1,0xcb,0xd9,0x37,0xd4,0x78,0x53,\n\t0x1b,0x95,0xdb,0xbe,0x66,0x59,0x29,0x3b,\n\t0x94,0x51,0x2f,0xbc,0x0d,0x66,0xba,0x3f\n};\n\n/*\nstatic const unsigned char batch_verify_y[32] = {\n\t0x5c,0x63,0x96,0x26,0xca,0xfe,0xfd,0xc4,\n\t0x2d,0x11,0xa8,0xe4,0xc4,0x46,0x42,0x97,\n\t0x97,0x92,0xbe,0xe0,0x3c,0xef,0x96,0x01,\n\t0x50,0xa1,0xcc,0x8f,0x50,0x85,0x76,0x7d\n};\n\nIntroducing the 128 bit r scalars to the heap _before_ the largest scalar\nfits in to 128 bits alters the heap shape and produces a different,\nyet still neutral/valid y/z value.\n\nThis was the value of introducing the r scalars when the largest scalar fit\nin to 135-256 bits. You can produce it with amd64-64-24k / amd64-51-32k\nwith the random sequence used in the first pass by changing\n\n    unsigned long long hlen=((npoints+1)/2)|1;\n\nto\n\n    unsigned long long hlen=npoints;\n\nin ge25519_multi_scalarmult.c\n\ned25519-donna-batchverify.h has been modified to match the \ndefault amd64-64-24k / amd64-51-32k behaviour\n*/\n\n\n\n/* batch test */\n#define test_batch_count 64\n#define test_batch_rounds 96\n\ntypedef enum batch_test_t {\n\tbatch_no_errors = 0,\n\tbatch_wrong_message = 1,\n\tbatch_wrong_pk = 2,\n\tbatch_wrong_sig = 3\n} batch_test;\n\nstatic int\ntest_batch_instance(batch_test type, uint64_t *ticks) {\n\ted25519_secret_key sks[test_batch_count];\n\ted25519_public_key pks[test_batch_count];\n\ted25519_signature sigs[test_batch_count];\n\tunsigned char messages[test_batch_count][128];\n\tsize_t message_lengths[test_batch_count];\n\tconst unsigned char *message_pointers[test_batch_count];\n\tconst unsigned char *pk_pointers[test_batch_count];\n\tconst unsigned char *sig_pointers[test_batch_count];\n\tint valid[test_batch_count], ret, validret;\n\tsize_t i;\n\tuint64_t t;\n\n\t/* generate keys */\n\tfor (i = 0; i < test_batch_count; i++) {\n\t\ted25519_randombytes_unsafe(sks[i], sizeof(sks[i]));\n\t\ted25519_publickey(sks[i], pks[i]);\n\t\tpk_pointers[i] = pks[i];\n\t}\n\n\t/* generate messages */\n\ted25519_randombytes_unsafe(messages, sizeof(messages));\n\tfor (i = 0; i < test_batch_count; i++) {\n\t\tmessage_pointers[i] = messages[i];\n\t\tmessage_lengths[i] = (i & 127) + 1;\n\t}\n\n\t/* sign messages */\n\tfor (i = 0; i < test_batch_count; i++) {\n\t\ted25519_sign(message_pointers[i], message_lengths[i], sks[i], pks[i], sigs[i]);\n\t\tsig_pointers[i] = sigs[i];\n\t}\n\n\tvalidret = 0;\n\tif (type == batch_wrong_message) {\n\t\tmessage_pointers[0] = message_pointers[1];\n\t\tvalidret = 1|2;\n\t} else if (type == batch_wrong_pk) {\n\t\tpk_pointers[0] = pk_pointers[1];\n\t\tvalidret = 1|2;\n\t} else if (type == batch_wrong_sig) {\n\t\tsig_pointers[0] = sig_pointers[1];\n\t\tvalidret = 1|2;\n\t}\n\n\t/* batch verify */\n\tt = get_ticks();\n\tret = ed25519_sign_open_batch(message_pointers, message_lengths, pk_pointers, sig_pointers, test_batch_count, valid);\n\t*ticks = get_ticks() - t;\n\tedassert_equal((unsigned char *)&validret, (unsigned char *)&ret, sizeof(int), \"batch return code\");\n\tfor (i = 0; i < test_batch_count; i++) {\n\t\tvalidret = ((type == batch_no_errors) || (i != 0)) ? 1 : 0;\n\t\tedassert_equal((unsigned char *)&validret, (unsigned char *)&valid[i], sizeof(int), \"individual batch return code\");\n\t}\n\treturn ret;\n}\n\nstatic void\ntest_batch(void) {\n\tuint64_t dummy_ticks, ticks[test_batch_rounds], best = maxticks, sum;\n\tsize_t i, count;\n\n\t/* check the first pass for the expected result */\n\ttest_batch_instance(batch_no_errors, &dummy_ticks);\n\tedassert_equal(batch_verify_y, batch_point_buffer[1], 32, \"failed to generate expected result\");\n\n\t/* make sure ge25519_multi_scalarmult_vartime throws an error on the entire batch with wrong data */\n\tfor (i = 0; i < 4; i++) {\n\t\ttest_batch_instance(batch_wrong_message, &dummy_ticks);\n\t\ttest_batch_instance(batch_wrong_pk, &dummy_ticks);\n\t\ttest_batch_instance(batch_wrong_sig, &dummy_ticks);\n\t}\n\n\t/* speed test */\n\tfor (i = 0; i < test_batch_rounds; i++) {\n\t\ttest_batch_instance(batch_no_errors, &ticks[i]);\n\t\tif (ticks[i] < best)\n\t\t\tbest = ticks[i];\n\t}\n\n\t/* take anything within 1% of the best time */\n\tfor (i = 0, sum = 0, count = 0; i < test_batch_rounds; i++) {\n\t\tif (ticks[i] < (best * 1.01)) {\n\t\t\tsum += ticks[i];\n\t\t\tcount++;\n\t\t}\n\t}\n\tprintf(\"%.0f ticks/verification\\n\", (double)sum / (count * test_batch_count));\n}\n\nstatic void\ntest_main(void) {\n\tint i, res;\n\ted25519_public_key pk;\n\ted25519_signature sig;\n\tunsigned char forge[1024] = {'x'};\n\tcurved25519_key csk[2] = {{255}};\n\tuint64_t ticks, pkticks = maxticks, signticks = maxticks, openticks = maxticks, curvedticks = maxticks;\n\n\tfor (i = 0; i < 1024; i++) {\n\t\ted25519_publickey(dataset[i].sk, pk);\n\t\tedassert_equal_round(dataset[i].pk, pk, sizeof(pk), i, \"public key didn't match\");\n\t\ted25519_sign((unsigned char *)dataset[i].m, i, dataset[i].sk, pk, sig);\n\t\tedassert_equal_round(dataset[i].sig, sig, sizeof(sig), i, \"signature didn't match\");\n\t\tedassert(!ed25519_sign_open((unsigned char *)dataset[i].m, i, pk, sig), i, \"failed to open message\");\n\n\t\tmemcpy(forge, dataset[i].m, i);\n\t\tif (i)\n\t\t\tforge[i - 1] += 1;\n\n\t\tedassert(ed25519_sign_open(forge, (i) ? i : 1, pk, sig), i, \"opened forged message\");\n\t}\n\n\tfor (i = 0; i < 1024; i++)\n\t\tcurved25519_scalarmult_basepoint(csk[(i & 1) ^ 1], csk[i & 1]);\n\tedassert_equal(curved25519_expected, csk[0], sizeof(curved25519_key), \"curve25519 failed to generate correct value\");\n\n\tfor (i = 0; i < 2048; i++) {\n\t\ttimeit(ed25519_publickey(dataset[0].sk, pk), pkticks)\n\t\tedassert_equal_round(dataset[0].pk, pk, sizeof(pk), i, \"public key didn't match\");\n\t\ttimeit(ed25519_sign((unsigned char *)dataset[0].m, 0, dataset[0].sk, pk, sig), signticks)\n\t\tedassert_equal_round(dataset[0].sig, sig, sizeof(sig), i, \"signature didn't match\");\n\t\ttimeit(res = ed25519_sign_open((unsigned char *)dataset[0].m, 0, pk, sig), openticks)\n\t\tedassert(!res, 0, \"failed to open message\");\n\t\ttimeit(curved25519_scalarmult_basepoint(csk[1], csk[0]), curvedticks);\n\t}\n\n\tprintf(\"%.0f ticks/public key generation\\n\", (double)pkticks);\n\tprintf(\"%.0f ticks/signature\\n\", (double)signticks);\n\tprintf(\"%.0f ticks/signature verification\\n\", (double)openticks);\n\tprintf(\"%.0f ticks/curve25519 basepoint scalarmult\\n\", (double)curvedticks);\n}\n\nint\nmain(void) {\n\ttest_main();\n\ttest_batch();\n\treturn 0;\n}\n\n"
  },
  {
    "path": "src/crypto/ghash/ghash.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"ghash.h\"\n#include <string.h>\n#if defined(__WIN32__) || defined(WIN32)\n#ifndef __BIG_ENDIAN\n#define __BIG_ENDIAN 4321\n#endif\n#ifndef __LITTLE_ENDIAN\n#define __LITTLE_ENDIAN 1234\n#endif\n#ifndef __BYTE_ORDER\n#define __BYTE_ORDER __LITTLE_ENDIAN\n#endif\n#elif defined(__APPLE__)\n#include <machine/endian.h>\n#if !defined( __BYTE_ORDER) && defined(__DARWIN_BYTE_ORDER)\n#define __BYTE_ORDER __DARWIN_BYTE_ORDER\n#endif\n#if !defined( __BIG_ENDIAN) && defined(__DARWIN_BIG_ENDIAN)\n#define __BIG_ENDIAN __DARWIN_BIG_ENDIAN\n#endif\n#if !defined( __LITTLE_ENDIAN) && defined(__DARWIN_LITTLE_ENDIAN)\n#define __LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN\n#endif\n#else\n#include <endian.h>\n#endif\n\n#if defined(GHASH_WORD64)\n\n/* 64-bit version of GHASH */\n\nstatic uint64_t swapEndian(uint64_t x)\n{\n#if __BYTE_ORDER == __BIG_ENDIAN\n    return x;\n#else\n    return ((x >> 56) & 0x00000000000000FF) |\n           ((x >> 40) & 0x000000000000FF00) |\n           ((x >> 24) & 0x0000000000FF0000) |\n           ((x >>  8) & 0x00000000FF000000) |\n           ((x <<  8) & 0x000000FF00000000) |\n           ((x << 24) & 0x0000FF0000000000) |\n           ((x << 40) & 0x00FF000000000000) |\n           ((x << 56) & 0xFF00000000000000);\n#endif\n}\n\nstatic void GF128_mulInit(uint64_t H[2], const void *key)\n{\n    /* Copy the key into H and convert from big endian to host order */\n    memcpy(H, key, 16);\n    H[0] = swapEndian(H[0]);\n    H[1] = swapEndian(H[1]);\n}\n\nstatic void GF128_mul(uint64_t Y[2], const uint64_t H[2])\n{\n    uint64_t Z0 = 0;        /* Z = 0 */\n    uint64_t Z1 = 0;\n    uint64_t V0 = H[0];     /* V = H */\n    uint64_t V1 = H[1];\n\n    /* Multiply Z by V for the set bits in Y, starting at the top.\n       This is a very simple bit by bit version that may not be very\n       fast but it should be resistant to cache timing attacks. */\n    for (uint8_t posn = 0; posn < 16; ++posn) {\n        uint8_t value = ((const uint8_t *)Y)[posn];\n        for (uint8_t bit = 0; bit < 8; ++bit, value <<= 1) {\n            /* Extract the high bit of \"value\" and turn it into a mask */\n            uint64_t mask = (~((uint64_t)(value >> 7))) + 1;\n\n            /* XOR V with Z if the bit is 1 */\n            Z0 ^= (V0 & mask);\n            Z1 ^= (V1 & mask);\n\n            /* Rotate V right by 1 bit */\n            mask = ((~(V1 & 0x01)) + 1) & 0xE100000000000000ULL;\n            V1 = (V1 >> 1) | (V0 << 63);\n            V0 = (V0 >> 1) ^ mask;\n        }\n    }\n\n    /* We have finished the block so copy Z into Y and byte-swap */\n    Y[0] = swapEndian(Z0);\n    Y[1] = swapEndian(Z1);\n}\n\n#else /* GHASH_WORD32 */\n\n/* Default 32-bit version of GHASH */\n\nstatic uint32_t swapEndian(uint32_t x)\n{\n#if __BYTE_ORDER == __BIG_ENDIAN\n    return x;\n#else\n    return ((x >> 24) & 0x000000FF) |\n           ((x >>  8) & 0x0000FF00) |\n           ((x <<  8) & 0x00FF0000) |\n           ((x << 24) & 0xFF000000);\n#endif\n}\n\nstatic void GF128_mulInit(uint32_t H[4], const void *key)\n{\n    /* Copy the key into H and convert from big endian to host order */\n    memcpy(H, key, 16);\n    H[0] = swapEndian(H[0]);\n    H[1] = swapEndian(H[1]);\n    H[2] = swapEndian(H[2]);\n    H[3] = swapEndian(H[3]);\n}\n\nstatic void GF128_mul(uint32_t Y[4], const uint32_t H[4])\n{\n    uint32_t Z0 = 0;        /* Z = 0 */\n    uint32_t Z1 = 0;\n    uint32_t Z2 = 0;\n    uint32_t Z3 = 0;\n    uint32_t V0 = H[0];     /* V = H */\n    uint32_t V1 = H[1];\n    uint32_t V2 = H[2];\n    uint32_t V3 = H[3];\n\n    /* Multiply Z by V for the set bits in Y, starting at the top.\n       This is a very simple bit by bit version that may not be very\n       fast but it should be resistant to cache timing attacks. */\n    for (uint8_t posn = 0; posn < 16; ++posn) {\n        uint8_t value = ((const uint8_t *)Y)[posn];\n        for (uint8_t bit = 0; bit < 8; ++bit, value <<= 1) {\n            /* Extract the high bit of \"value\" and turn it into a mask */\n            uint32_t mask = (~((uint32_t)(value >> 7))) + 1;\n\n            /* XOR V with Z if the bit is 1 */\n            Z0 ^= (V0 & mask);\n            Z1 ^= (V1 & mask);\n            Z2 ^= (V2 & mask);\n            Z3 ^= (V3 & mask);\n\n            /* Rotate V right by 1 bit */\n            mask = ((~(V3 & 0x01)) + 1) & 0xE1000000;\n            V3 = (V3 >> 1) | (V2 << 31);\n            V2 = (V2 >> 1) | (V1 << 31);\n            V1 = (V1 >> 1) | (V0 << 31);\n            V0 = (V0 >> 1) ^ mask;\n        }\n    }\n\n    /* We have finished the block so copy Z into Y and byte-swap */\n    Y[0] = swapEndian(Z0);\n    Y[1] = swapEndian(Z1);\n    Y[2] = swapEndian(Z2);\n    Y[3] = swapEndian(Z3);\n}\n\n#endif /* GHASH_WORD32 */\n\nvoid ghash_reset(ghash_state *state, const void *key)\n{\n    if (key)\n        GF128_mulInit(state->H, (const void *)key);\n    memset(state->Y, 0, sizeof(state->Y));\n    state->posn = 0;\n}\n\nvoid ghash_update(ghash_state *state, const void *data, size_t len)\n{\n    const uint8_t *d = (const uint8_t *)data;\n    while (len > 0) {\n        uint8_t size = 16 - state->posn;\n        if (size > len)\n            size = len;\n        uint8_t *y = ((uint8_t *)state->Y) + state->posn;\n        for (uint8_t i = 0; i < size; ++i)\n            y[i] ^= d[i];\n        state->posn += size;\n        len -= size;\n        d += size;\n        if (state->posn == 16) {\n            GF128_mul(state->Y, state->H);\n            state->posn = 0;\n        }\n    }\n}\n\nvoid ghash_finalize(ghash_state *state, void *token, size_t len)\n{\n    ghash_pad(state);\n    if (len > 16)\n        len = 16;\n    memcpy(token, state->Y, len);\n}\n\nvoid ghash_pad(ghash_state *state)\n{\n    if (state->posn != 0) {\n        /* Padding involves XOR'ing the rest of state->Y with zeroes,\n           which does nothing.  Immediately process the next chunk */\n        GF128_mul(state->Y, state->H);\n        state->posn = 0;\n    }\n}\n"
  },
  {
    "path": "src/crypto/ghash/ghash.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef CRYPTO_GHASH_h\n#define CRYPTO_GHASH_h\n\n#include <stdint.h>\n#include <stddef.h>\n\n#if __WORDSIZE == 64 && !defined(GHASH_WORD64)\n#define GHASH_WORD64 1\n#endif\n\n#if defined(GHASH_WORD64)\n\ntypedef struct {\n    uint64_t H[2];\n    uint64_t Y[2];\n    uint8_t posn;\n} ghash_state;\n\n#else\n\ntypedef struct {\n    uint32_t H[4];\n    uint32_t Y[4];\n    uint8_t posn;\n} ghash_state;\n\n#endif\n\nvoid ghash_reset(ghash_state *state, const void *key);\nvoid ghash_update(ghash_state *state, const void *data, size_t len);\nvoid ghash_finalize(ghash_state *state, void *token, size_t len);\nvoid ghash_pad(ghash_state *state);\n\n#endif\n"
  },
  {
    "path": "src/crypto/goldilocks/Doxyfile",
    "content": "# Doxyfile 1.8.6\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) for a project.\n#\n# All text after a double hash (##) is considered a comment and is placed in\n# front of the TAG it is preceding.\n#\n# All text after a single hash (#) is considered a comment and will be ignored.\n# The format is:\n# TAG = value [value, ...]\n# For lists, items can also be appended using:\n# TAG += value [value, ...]\n# Values that contain spaces should be placed between quotes (\\\" \\\").\n\n#---------------------------------------------------------------------------\n# Project related configuration options\n#---------------------------------------------------------------------------\n\n# This tag specifies the encoding used for all characters in the config file\n# that follow. The default is UTF-8 which is also the encoding used for all text\n# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv\n# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv\n# for the list of possible encodings.\n# The default value is: UTF-8.\n\nDOXYFILE_ENCODING      = UTF-8\n\n# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by\n# double-quotes, unless you are using Doxywizard) that should identify the\n# project for which the documentation is generated. This name is used in the\n# title of most generated pages and in a few other places.\n# The default value is: My Project.\n\nPROJECT_NAME           = \"Ed448-Goldilocks\"\n\n# The PROJECT_NUMBER tag can be used to enter a project or revision number. This\n# could be handy for archiving the generated documentation or if some version\n# control system is used.\n\nPROJECT_NUMBER         =\n\n# Using the PROJECT_BRIEF tag one can provide an optional one line description\n# for a project that appears at the top of each page and should give viewer a\n# quick idea about the purpose of the project. Keep the description short.\n\nPROJECT_BRIEF          =\n\n# With the PROJECT_LOGO tag one can specify an logo or icon that is included in\n# the documentation. The maximum height of the logo should not exceed 55 pixels\n# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo\n# to the output directory.\n\nPROJECT_LOGO           =\n\n# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path\n# into which the generated documentation will be written. If a relative path is\n# entered, it will be relative to the location where doxygen was started. If\n# left blank the current directory will be used.\n\nOUTPUT_DIRECTORY       = doc\n\n# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-\n# directories (in 2 levels) under the output directory of each output format and\n# will distribute the generated files over these directories. Enabling this\n# option can be useful when feeding doxygen a huge amount of source files, where\n# putting all generated files in the same directory would otherwise causes\n# performance problems for the file system.\n# The default value is: NO.\n\nCREATE_SUBDIRS         = NO\n\n# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII\n# characters to appear in the names of generated files. If set to NO, non-ASCII\n# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode\n# U+3044.\n# The default value is: NO.\n\nALLOW_UNICODE_NAMES    = NO\n\n# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n# documentation generated by doxygen is written. Doxygen will use this\n# information to generate all constant output in the proper language.\n# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,\n# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),\n# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,\n# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),\n# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,\n# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,\n# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,\n# Ukrainian and Vietnamese.\n# The default value is: English.\n\nOUTPUT_LANGUAGE        = English\n\n# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member\n# descriptions after the members that are listed in the file and class\n# documentation (similar to Javadoc). Set to NO to disable this.\n# The default value is: YES.\n\nBRIEF_MEMBER_DESC      = YES\n\n# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief\n# description of a member or function before the detailed description\n#\n# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the\n# brief descriptions will be completely suppressed.\n# The default value is: YES.\n\nREPEAT_BRIEF           = YES\n\n# This tag implements a quasi-intelligent brief description abbreviator that is\n# used to form the text in various listings. Each string in this list, if found\n# as the leading text of the brief description, will be stripped from the text\n# and the result, after processing the whole list, is used as the annotated\n# text. Otherwise, the brief description is used as-is. If left blank, the\n# following values are used ($name is automatically replaced with the name of\n# the entity):The $name class, The $name widget, The $name file, is, provides,\n# specifies, contains, represents, a, an and the.\n\nABBREVIATE_BRIEF       =\n\n# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n# doxygen will generate a detailed section even if there is only a brief\n# description.\n# The default value is: NO.\n\nALWAYS_DETAILED_SEC    = NO\n\n# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all\n# inherited members of a class in the documentation of that class as if those\n# members were ordinary class members. Constructors, destructors and assignment\n# operators of the base classes will not be shown.\n# The default value is: NO.\n\nINLINE_INHERITED_MEMB  = NO\n\n# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path\n# before files name in the file list and in the header files. If set to NO the\n# shortest path that makes the file name unique will be used\n# The default value is: YES.\n\nFULL_PATH_NAMES        = YES\n\n# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.\n# Stripping is only done if one of the specified strings matches the left-hand\n# part of the path. The tag can be used to show relative paths in the file list.\n# If left blank the directory from which doxygen is run is used as the path to\n# strip.\n#\n# Note that you can specify absolute paths here, but also relative paths, which\n# will be relative from the directory where doxygen is started.\n# This tag requires that the tag FULL_PATH_NAMES is set to YES.\n\nSTRIP_FROM_PATH        =\n\n# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the\n# path mentioned in the documentation of a class, which tells the reader which\n# header file to include in order to use a class. If left blank only the name of\n# the header file containing the class definition is used. Otherwise one should\n# specify the list of include paths that are normally passed to the compiler\n# using the -I flag.\n\nSTRIP_FROM_INC_PATH    =\n\n# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but\n# less readable) file names. This can be useful is your file systems doesn't\n# support long names like on DOS, Mac, or CD-ROM.\n# The default value is: NO.\n\nSHORT_NAMES            = NO\n\n# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the\n# first line (until the first dot) of a Javadoc-style comment as the brief\n# description. If set to NO, the Javadoc-style will behave just like regular Qt-\n# style comments (thus requiring an explicit @brief command for a brief\n# description.)\n# The default value is: NO.\n\nJAVADOC_AUTOBRIEF      = YES\n\n# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first\n# line (until the first dot) of a Qt-style comment as the brief description. If\n# set to NO, the Qt-style will behave just like regular Qt-style comments (thus\n# requiring an explicit \\brief command for a brief description.)\n# The default value is: NO.\n\nQT_AUTOBRIEF           = NO\n\n# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a\n# multi-line C++ special comment block (i.e. a block of //! or /// comments) as\n# a brief description. This used to be the default behavior. The new default is\n# to treat a multi-line C++ comment block as a detailed description. Set this\n# tag to YES if you prefer the old behavior instead.\n#\n# Note that setting this tag to YES also means that rational rose comments are\n# not recognized any more.\n# The default value is: NO.\n\nMULTILINE_CPP_IS_BRIEF = NO\n\n# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the\n# documentation from any documented member that it re-implements.\n# The default value is: YES.\n\nINHERIT_DOCS           = YES\n\n# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a\n# new page for each member. If set to NO, the documentation of a member will be\n# part of the file/class/namespace that contains it.\n# The default value is: NO.\n\nSEPARATE_MEMBER_PAGES  = NO\n\n# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen\n# uses this value to replace tabs by spaces in code fragments.\n# Minimum value: 1, maximum value: 16, default value: 4.\n\nTAB_SIZE               = 4\n\n# This tag can be used to specify a number of aliases that act as commands in\n# the documentation. An alias has the form:\n# name=value\n# For example adding\n# \"sideeffect=@par Side Effects:\\n\"\n# will allow you to put the command \\sideeffect (or @sideeffect) in the\n# documentation, which will result in a user-defined paragraph with heading\n# \"Side Effects:\". You can put \\n's in the value part of an alias to insert\n# newlines.\n\nALIASES                =\n\n# This tag can be used to specify a number of word-keyword mappings (TCL only).\n# A mapping has the form \"name=value\". For example adding \"class=itcl::class\"\n# will allow you to use the command class in the itcl::class meaning.\n\nTCL_SUBST              =\n\n# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources\n# only. Doxygen will then generate output that is more tailored for C. For\n# instance, some of the names that are used will be different. The list of all\n# members will be omitted, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_FOR_C  = NO\n\n# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or\n# Python sources only. Doxygen will then generate output that is more tailored\n# for that language. For instance, namespaces will be presented as packages,\n# qualified scopes will look different, etc.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_JAVA   = NO\n\n# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran\n# sources. Doxygen will then generate output that is tailored for Fortran.\n# The default value is: NO.\n\nOPTIMIZE_FOR_FORTRAN   = NO\n\n# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL\n# sources. Doxygen will then generate output that is tailored for VHDL.\n# The default value is: NO.\n\nOPTIMIZE_OUTPUT_VHDL   = NO\n\n# Doxygen selects the parser to use depending on the extension of the files it\n# parses. With this tag you can assign which parser to use for a given\n# extension. Doxygen has a built-in mapping, but you can override or extend it\n# using this tag. The format is ext=language, where ext is a file extension, and\n# language is one of the parsers supported by doxygen: IDL, Java, Javascript,\n# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make\n# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C\n# (default is Fortran), use: inc=Fortran f=C.\n#\n# Note For files without extension you can use no_extension as a placeholder.\n#\n# Note that for custom extensions you also need to set FILE_PATTERNS otherwise\n# the files are not read by doxygen.\n\nEXTENSION_MAPPING      =\n\n# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments\n# according to the Markdown format, which allows for more readable\n# documentation. See http://daringfireball.net/projects/markdown/ for details.\n# The output of markdown processing is further processed by doxygen, so you can\n# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in\n# case of backward compatibilities issues.\n# The default value is: YES.\n\nMARKDOWN_SUPPORT       = YES\n\n# When enabled doxygen tries to link words that correspond to documented\n# classes, or namespaces to their corresponding documentation. Such a link can\n# be prevented in individual cases by by putting a % sign in front of the word\n# or globally by setting AUTOLINK_SUPPORT to NO.\n# The default value is: YES.\n\nAUTOLINK_SUPPORT       = YES\n\n# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want\n# to include (a tag file for) the STL sources as input, then you should set this\n# tag to YES in order to let doxygen match functions declarations and\n# definitions whose arguments contain STL classes (e.g. func(std::string);\n# versus func(std::string) {}). This also make the inheritance and collaboration\n# diagrams that involve STL classes more complete and accurate.\n# The default value is: NO.\n\nBUILTIN_STL_SUPPORT    = NO\n\n# If you use Microsoft's C++/CLI language, you should set this option to YES to\n# enable parsing support.\n# The default value is: NO.\n\nCPP_CLI_SUPPORT        = NO\n\n# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:\n# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen\n# will parse them like normal C++ but will assume all classes use public instead\n# of private inheritance when no explicit protection keyword is present.\n# The default value is: NO.\n\nSIP_SUPPORT            = NO\n\n# For Microsoft's IDL there are propget and propput attributes to indicate\n# getter and setter methods for a property. Setting this option to YES will make\n# doxygen to replace the get and set methods by a property in the documentation.\n# This will only work if the methods are indeed getting or setting a simple\n# type. If this is not the case, or you want to show the methods anyway, you\n# should set this option to NO.\n# The default value is: YES.\n\nIDL_PROPERTY_SUPPORT   = YES\n\n# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC\n# tag is set to YES, then doxygen will reuse the documentation of the first\n# member in the group (if any) for the other members of the group. By default\n# all members of a group must be documented explicitly.\n# The default value is: NO.\n\nDISTRIBUTE_GROUP_DOC   = NO\n\n# Set the SUBGROUPING tag to YES to allow class member groups of the same type\n# (for instance a group of public functions) to be put as a subgroup of that\n# type (e.g. under the Public Functions section). Set it to NO to prevent\n# subgrouping. Alternatively, this can be done per class using the\n# \\nosubgrouping command.\n# The default value is: YES.\n\nSUBGROUPING            = YES\n\n# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions\n# are shown inside the group in which they are included (e.g. using \\ingroup)\n# instead of on a separate page (for HTML and Man pages) or section (for LaTeX\n# and RTF).\n#\n# Note that this feature does not work in combination with\n# SEPARATE_MEMBER_PAGES.\n# The default value is: NO.\n\nINLINE_GROUPED_CLASSES = NO\n\n# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions\n# with only public data fields or simple typedef fields will be shown inline in\n# the documentation of the scope in which they are defined (i.e. file,\n# namespace, or group documentation), provided this scope is documented. If set\n# to NO, structs, classes, and unions are shown on a separate page (for HTML and\n# Man pages) or section (for LaTeX and RTF).\n# The default value is: NO.\n\nINLINE_SIMPLE_STRUCTS  = NO\n\n# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or\n# enum is documented as struct, union, or enum with the name of the typedef. So\n# typedef struct TypeS {} TypeT, will appear in the documentation as a struct\n# with name TypeT. When disabled the typedef will appear as a member of a file,\n# namespace, or class. And the struct will be named TypeS. This can typically be\n# useful for C code in case the coding convention dictates that all compound\n# types are typedef'ed and only the typedef is referenced, never the tag name.\n# The default value is: NO.\n\nTYPEDEF_HIDES_STRUCT   = NO\n\n# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This\n# cache is used to resolve symbols given their name and scope. Since this can be\n# an expensive process and often the same symbol appears multiple times in the\n# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small\n# doxygen will become slower. If the cache is too large, memory is wasted. The\n# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range\n# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536\n# symbols. At the end of a run doxygen will report the cache usage and suggest\n# the optimal cache size from a speed point of view.\n# Minimum value: 0, maximum value: 9, default value: 0.\n\nLOOKUP_CACHE_SIZE      = 0\n\n#---------------------------------------------------------------------------\n# Build related configuration options\n#---------------------------------------------------------------------------\n\n# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in\n# documentation are documented, even if no documentation was available. Private\n# class members and static file members will be hidden unless the\n# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.\n# Note: This will also disable the warnings about undocumented members that are\n# normally produced when WARNINGS is set to YES.\n# The default value is: NO.\n\nEXTRACT_ALL            = NO\n\n# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will\n# be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PRIVATE        = NO\n\n# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal\n# scope will be included in the documentation.\n# The default value is: NO.\n\nEXTRACT_PACKAGE        = NO\n\n# If the EXTRACT_STATIC tag is set to YES all static members of a file will be\n# included in the documentation.\n# The default value is: NO.\n\nEXTRACT_STATIC         = NO\n\n# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined\n# locally in source files will be included in the documentation. If set to NO\n# only classes defined in header files are included. Does not have any effect\n# for Java sources.\n# The default value is: YES.\n\nEXTRACT_LOCAL_CLASSES  = YES\n\n# This flag is only useful for Objective-C code. When set to YES local methods,\n# which are defined in the implementation section but not in the interface are\n# included in the documentation. If set to NO only methods in the interface are\n# included.\n# The default value is: NO.\n\nEXTRACT_LOCAL_METHODS  = NO\n\n# If this flag is set to YES, the members of anonymous namespaces will be\n# extracted and appear in the documentation as a namespace called\n# 'anonymous_namespace{file}', where file will be replaced with the base name of\n# the file that contains the anonymous namespace. By default anonymous namespace\n# are hidden.\n# The default value is: NO.\n\nEXTRACT_ANON_NSPACES   = NO\n\n# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all\n# undocumented members inside documented classes or files. If set to NO these\n# members will be included in the various overviews, but no documentation\n# section is generated. This option has no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_MEMBERS     = NO\n\n# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all\n# undocumented classes that are normally visible in the class hierarchy. If set\n# to NO these classes will be included in the various overviews. This option has\n# no effect if EXTRACT_ALL is enabled.\n# The default value is: NO.\n\nHIDE_UNDOC_CLASSES     = NO\n\n# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend\n# (class|struct|union) declarations. If set to NO these declarations will be\n# included in the documentation.\n# The default value is: NO.\n\nHIDE_FRIEND_COMPOUNDS  = NO\n\n# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any\n# documentation blocks found inside the body of a function. If set to NO these\n# blocks will be appended to the function's detailed documentation block.\n# The default value is: NO.\n\nHIDE_IN_BODY_DOCS      = NO\n\n# The INTERNAL_DOCS tag determines if documentation that is typed after a\n# \\internal command is included. If the tag is set to NO then the documentation\n# will be excluded. Set it to YES to include the internal documentation.\n# The default value is: NO.\n\nINTERNAL_DOCS          = NO\n\n# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file\n# names in lower-case letters. If set to YES upper-case letters are also\n# allowed. This is useful if you have classes or files whose names only differ\n# in case and if your file system supports case sensitive file names. Windows\n# and Mac users are advised to set this option to NO.\n# The default value is: system dependent.\n\nCASE_SENSE_NAMES       = NO\n\n# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with\n# their full class and namespace scopes in the documentation. If set to YES the\n# scope will be hidden.\n# The default value is: NO.\n\nHIDE_SCOPE_NAMES       = NO\n\n# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of\n# the files that are included by a file in the documentation of that file.\n# The default value is: YES.\n\nSHOW_INCLUDE_FILES     = NO\n\n# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each\n# grouped member an include statement to the documentation, telling the reader\n# which file to include in order to use the member.\n# The default value is: NO.\n\nSHOW_GROUPED_MEMB_INC  = NO\n\n# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include\n# files with double quotes in the documentation rather than with sharp brackets.\n# The default value is: NO.\n\nFORCE_LOCAL_INCLUDES   = NO\n\n# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the\n# documentation for inline members.\n# The default value is: YES.\n\nINLINE_INFO            = YES\n\n# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the\n# (detailed) documentation of file and class members alphabetically by member\n# name. If set to NO the members will appear in declaration order.\n# The default value is: YES.\n\nSORT_MEMBER_DOCS       = YES\n\n# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief\n# descriptions of file, namespace and class members alphabetically by member\n# name. If set to NO the members will appear in declaration order. Note that\n# this will also influence the order of the classes in the class list.\n# The default value is: NO.\n\nSORT_BRIEF_DOCS        = NO\n\n# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the\n# (brief and detailed) documentation of class members so that constructors and\n# destructors are listed first. If set to NO the constructors will appear in the\n# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.\n# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief\n# member documentation.\n# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting\n# detailed member documentation.\n# The default value is: NO.\n\nSORT_MEMBERS_CTORS_1ST = NO\n\n# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy\n# of group names into alphabetical order. If set to NO the group names will\n# appear in their defined order.\n# The default value is: NO.\n\nSORT_GROUP_NAMES       = NO\n\n# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by\n# fully-qualified names, including namespaces. If set to NO, the class list will\n# be sorted only by class name, not including the namespace part.\n# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.\n# Note: This option applies only to the class list, not to the alphabetical\n# list.\n# The default value is: NO.\n\nSORT_BY_SCOPE_NAME     = NO\n\n# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper\n# type resolution of all parameters of a function it will reject a match between\n# the prototype and the implementation of a member function even if there is\n# only one candidate or it is obvious which candidate to choose by doing a\n# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still\n# accept a match between prototype and implementation in such cases.\n# The default value is: NO.\n\nSTRICT_PROTO_MATCHING  = NO\n\n# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the\n# todo list. This list is created by putting \\todo commands in the\n# documentation.\n# The default value is: YES.\n\nGENERATE_TODOLIST      = YES\n\n# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the\n# test list. This list is created by putting \\test commands in the\n# documentation.\n# The default value is: YES.\n\nGENERATE_TESTLIST      = YES\n\n# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug\n# list. This list is created by putting \\bug commands in the documentation.\n# The default value is: YES.\n\nGENERATE_BUGLIST       = YES\n\n# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)\n# the deprecated list. This list is created by putting \\deprecated commands in\n# the documentation.\n# The default value is: YES.\n\nGENERATE_DEPRECATEDLIST= YES\n\n# The ENABLED_SECTIONS tag can be used to enable conditional documentation\n# sections, marked by \\if <section_label> ... \\endif and \\cond <section_label>\n# ... \\endcond blocks.\n\nENABLED_SECTIONS       =\n\n# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the\n# initial value of a variable or macro / define can have for it to appear in the\n# documentation. If the initializer consists of more lines than specified here\n# it will be hidden. Use a value of 0 to hide initializers completely. The\n# appearance of the value of individual variables and macros / defines can be\n# controlled using \\showinitializer or \\hideinitializer command in the\n# documentation regardless of this setting.\n# Minimum value: 0, maximum value: 10000, default value: 30.\n\nMAX_INITIALIZER_LINES  = 30\n\n# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at\n# the bottom of the documentation of classes and structs. If set to YES the list\n# will mention the files that were used to generate the documentation.\n# The default value is: YES.\n\nSHOW_USED_FILES        = YES\n\n# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This\n# will remove the Files entry from the Quick Index and from the Folder Tree View\n# (if specified).\n# The default value is: YES.\n\nSHOW_FILES             = YES\n\n# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces\n# page. This will remove the Namespaces entry from the Quick Index and from the\n# Folder Tree View (if specified).\n# The default value is: YES.\n\nSHOW_NAMESPACES        = YES\n\n# The FILE_VERSION_FILTER tag can be used to specify a program or script that\n# doxygen should invoke to get the current version for each file (typically from\n# the version control system). Doxygen will invoke the program by executing (via\n# popen()) the command command input-file, where command is the value of the\n# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided\n# by doxygen. Whatever the program writes to standard output is used as the file\n# version. For an example see the documentation.\n\nFILE_VERSION_FILTER    =\n\n# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed\n# by doxygen. The layout file controls the global structure of the generated\n# output files in an output format independent way. To create the layout file\n# that represents doxygen's defaults, run doxygen with the -l option. You can\n# optionally specify a file name after the option, if omitted DoxygenLayout.xml\n# will be used as the name of the layout file.\n#\n# Note that if you run doxygen from a directory containing a file called\n# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE\n# tag is left empty.\n\nLAYOUT_FILE            =\n\n# The CITE_BIB_FILES tag can be used to specify one or more bib files containing\n# the reference definitions. This must be a list of .bib files. The .bib\n# extension is automatically appended if omitted. This requires the bibtex tool\n# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.\n# For LaTeX the style of the bibliography can be controlled using\n# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the\n# search path. Do not use file names with spaces, bibtex cannot handle them. See\n# also \\cite for info how to create references.\n\nCITE_BIB_FILES         =\n\n#---------------------------------------------------------------------------\n# Configuration options related to warning and progress messages\n#---------------------------------------------------------------------------\n\n# The QUIET tag can be used to turn on/off the messages that are generated to\n# standard output by doxygen. If QUIET is set to YES this implies that the\n# messages are off.\n# The default value is: NO.\n\nQUIET                  = NO\n\n# The WARNINGS tag can be used to turn on/off the warning messages that are\n# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES\n# this implies that the warnings are on.\n#\n# Tip: Turn warnings on while writing the documentation.\n# The default value is: YES.\n\nWARNINGS               = YES\n\n# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate\n# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag\n# will automatically be disabled.\n# The default value is: YES.\n\nWARN_IF_UNDOCUMENTED   = YES\n\n# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for\n# potential errors in the documentation, such as not documenting some parameters\n# in a documented function, or documenting parameters that don't exist or using\n# markup commands wrongly.\n# The default value is: YES.\n\nWARN_IF_DOC_ERROR      = YES\n\n# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that\n# are documented, but have no documentation for their parameters or return\n# value. If set to NO doxygen will only warn about wrong or incomplete parameter\n# documentation, but not about the absence of documentation.\n# The default value is: NO.\n\nWARN_NO_PARAMDOC       = NO\n\n# The WARN_FORMAT tag determines the format of the warning messages that doxygen\n# can produce. The string should contain the $file, $line, and $text tags, which\n# will be replaced by the file and line number from which the warning originated\n# and the warning text. Optionally the format may contain $version, which will\n# be replaced by the version of the file (if it could be obtained via\n# FILE_VERSION_FILTER)\n# The default value is: $file:$line: $text.\n\nWARN_FORMAT            = \"$file:$line: $text\"\n\n# The WARN_LOGFILE tag can be used to specify a file to which warning and error\n# messages should be written. If left blank the output is written to standard\n# error (stderr).\n\nWARN_LOGFILE           =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the input files\n#---------------------------------------------------------------------------\n\n# The INPUT tag is used to specify the files and/or directories that contain\n# documented source files. You may enter file names like myfile.cpp or\n# directories like /usr/src/myproject. Separate the files or directories with\n# spaces.\n# Note: If this tag is empty the current directory is searched.\n\nINPUT                  =\n\n# This tag can be used to specify the character encoding of the source files\n# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses\n# libiconv (or the iconv built into libc) for the transcoding. See the libiconv\n# documentation (see: http://www.gnu.org/software/libiconv) for the list of\n# possible encodings.\n# The default value is: UTF-8.\n\nINPUT_ENCODING         = UTF-8\n\n# If the value of the INPUT tag contains directories, you can use the\n# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank the\n# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,\n# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,\n# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,\n# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,\n# *.qsf, *.as and *.js.\n\nFILE_PATTERNS          =\n\n# The RECURSIVE tag can be used to specify whether or not subdirectories should\n# be searched for input files as well.\n# The default value is: NO.\n\nRECURSIVE              = YES\n\n# The EXCLUDE tag can be used to specify files and/or directories that should be\n# excluded from the INPUT source files. This way you can easily exclude a\n# subdirectory from a directory tree whose root is specified with the INPUT tag.\n#\n# Note that relative paths are relative to the directory from which doxygen is\n# run.\n\nEXCLUDE                =\n\n# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or\n# directories that are symbolic links (a Unix file system feature) are excluded\n# from the input.\n# The default value is: NO.\n\nEXCLUDE_SYMLINKS       = NO\n\n# If the value of the INPUT tag contains directories, you can use the\n# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n# certain files from those directories.\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories for example use the pattern */test/*\n\nEXCLUDE_PATTERNS       =\n\n# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names\n# (namespaces, classes, functions, etc.) that should be excluded from the\n# output. The symbol name can be a fully qualified name, a word, or if the\n# wildcard * is used, a substring. Examples: ANamespace, AClass,\n# AClass::ANamespace, ANamespace::*Test\n#\n# Note that the wildcards are matched against the file with absolute path, so to\n# exclude all test directories use the pattern */test/*\n\nEXCLUDE_SYMBOLS        =\n\n# The EXAMPLE_PATH tag can be used to specify one or more files or directories\n# that contain example code fragments that are included (see the \\include\n# command).\n\nEXAMPLE_PATH           =\n\n# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and\n# *.h) to filter out the source-files in the directories. If left blank all\n# files are included.\n\nEXAMPLE_PATTERNS       =\n\n# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be\n# searched for input files to be used with the \\include or \\dontinclude commands\n# irrespective of the value of the RECURSIVE tag.\n# The default value is: NO.\n\nEXAMPLE_RECURSIVE      = NO\n\n# The IMAGE_PATH tag can be used to specify one or more files or directories\n# that contain images that are to be included in the documentation (see the\n# \\image command).\n\nIMAGE_PATH             =\n\n# The INPUT_FILTER tag can be used to specify a program that doxygen should\n# invoke to filter for each input file. Doxygen will invoke the filter program\n# by executing (via popen()) the command:\n#\n# <filter> <input-file>\n#\n# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the\n# name of an input file. Doxygen will then use the output that the filter\n# program writes to standard output. If FILTER_PATTERNS is specified, this tag\n# will be ignored.\n#\n# Note that the filter must not add or remove lines; it is applied before the\n# code is scanned, but not when the output code is generated. If lines are added\n# or removed, the anchors will not be placed correctly.\n\nINPUT_FILTER           =\n\n# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern\n# basis. Doxygen will compare the file name with each pattern and apply the\n# filter if there is a match. The filters are a list of the form: pattern=filter\n# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how\n# filters are used. If the FILTER_PATTERNS tag is empty or if none of the\n# patterns match the file name, INPUT_FILTER is applied.\n\nFILTER_PATTERNS        =\n\n# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using\n# INPUT_FILTER ) will also be used to filter the input files that are used for\n# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).\n# The default value is: NO.\n\nFILTER_SOURCE_FILES    = NO\n\n# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file\n# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and\n# it is also possible to disable source filtering for a specific pattern using\n# *.ext= (so without naming a filter).\n# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.\n\nFILTER_SOURCE_PATTERNS =\n\n# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that\n# is part of the input, its contents will be placed on the main page\n# (index.html). This can be useful if you have a project on for instance GitHub\n# and want to reuse the introduction page also for the doxygen output.\n\nUSE_MDFILE_AS_MAINPAGE =\n\n#---------------------------------------------------------------------------\n# Configuration options related to source browsing\n#---------------------------------------------------------------------------\n\n# If the SOURCE_BROWSER tag is set to YES then a list of source files will be\n# generated. Documented entities will be cross-referenced with these sources.\n#\n# Note: To get rid of all source code in the generated output, make sure that\n# also VERBATIM_HEADERS is set to NO.\n# The default value is: NO.\n\nSOURCE_BROWSER         = NO\n\n# Setting the INLINE_SOURCES tag to YES will include the body of functions,\n# classes and enums directly into the documentation.\n# The default value is: NO.\n\nINLINE_SOURCES         = NO\n\n# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any\n# special comment blocks from generated source code fragments. Normal C, C++ and\n# Fortran comments will always remain visible.\n# The default value is: YES.\n\nSTRIP_CODE_COMMENTS    = YES\n\n# If the REFERENCED_BY_RELATION tag is set to YES then for each documented\n# function all documented functions referencing it will be listed.\n# The default value is: NO.\n\nREFERENCED_BY_RELATION = NO\n\n# If the REFERENCES_RELATION tag is set to YES then for each documented function\n# all documented entities called/used by that function will be listed.\n# The default value is: NO.\n\nREFERENCES_RELATION    = NO\n\n# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set\n# to YES, then the hyperlinks from functions in REFERENCES_RELATION and\n# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will\n# link to the documentation.\n# The default value is: YES.\n\nREFERENCES_LINK_SOURCE = YES\n\n# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the\n# source code will show a tooltip with additional information such as prototype,\n# brief description and links to the definition and documentation. Since this\n# will make the HTML file larger and loading of large files a bit slower, you\n# can opt to disable this feature.\n# The default value is: YES.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nSOURCE_TOOLTIPS        = YES\n\n# If the USE_HTAGS tag is set to YES then the references to source code will\n# point to the HTML generated by the htags(1) tool instead of doxygen built-in\n# source browser. The htags tool is part of GNU's global source tagging system\n# (see http://www.gnu.org/software/global/global.html). You will need version\n# 4.8.6 or higher.\n#\n# To use it do the following:\n# - Install the latest version of global\n# - Enable SOURCE_BROWSER and USE_HTAGS in the config file\n# - Make sure the INPUT points to the root of the source tree\n# - Run doxygen as normal\n#\n# Doxygen will invoke htags (and that will in turn invoke gtags), so these\n# tools must be available from the command line (i.e. in the search path).\n#\n# The result: instead of the source browser generated by doxygen, the links to\n# source code will now point to the output of htags.\n# The default value is: NO.\n# This tag requires that the tag SOURCE_BROWSER is set to YES.\n\nUSE_HTAGS              = NO\n\n# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a\n# verbatim copy of the header file for each class for which an include is\n# specified. Set to NO to disable this.\n# See also: Section \\class.\n# The default value is: YES.\n\nVERBATIM_HEADERS       = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the alphabetical class index\n#---------------------------------------------------------------------------\n\n# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all\n# compounds will be generated. Enable this if the project contains a lot of\n# classes, structs, unions or interfaces.\n# The default value is: YES.\n\nALPHABETICAL_INDEX     = YES\n\n# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in\n# which the alphabetical index list will be split.\n# Minimum value: 1, maximum value: 20, default value: 5.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nCOLS_IN_ALPHA_INDEX    = 5\n\n# In case all classes in a project start with a common prefix, all classes will\n# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag\n# can be used to specify a prefix (or a list of prefixes) that should be ignored\n# while generating the index headers.\n# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.\n\nIGNORE_PREFIX          =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the HTML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output\n# The default value is: YES.\n\nGENERATE_HTML          = YES\n\n# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_OUTPUT            = html\n\n# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each\n# generated HTML page (for example: .htm, .php, .asp).\n# The default value is: .html.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FILE_EXTENSION    = .html\n\n# The HTML_HEADER tag can be used to specify a user-defined HTML header file for\n# each generated HTML page. If the tag is left blank doxygen will generate a\n# standard header.\n#\n# To get valid HTML the header file that includes any scripts and style sheets\n# that doxygen needs, which is dependent on the configuration options used (e.g.\n# the setting GENERATE_TREEVIEW). It is highly recommended to start with a\n# default header using\n# doxygen -w html new_header.html new_footer.html new_stylesheet.css\n# YourConfigFile\n# and then modify the file new_header.html. See also section \"Doxygen usage\"\n# for information on how to generate the default header that doxygen normally\n# uses.\n# Note: The header is subject to change so you typically have to regenerate the\n# default header when upgrading to a newer version of doxygen. For a description\n# of the possible markers and block names see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_HEADER            =\n\n# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each\n# generated HTML page. If the tag is left blank doxygen will generate a standard\n# footer. See HTML_HEADER for more information on how to generate a default\n# footer and what special commands can be used inside the footer. See also\n# section \"Doxygen usage\" for information on how to generate the default footer\n# that doxygen normally uses.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_FOOTER            =\n\n# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style\n# sheet that is used by each HTML page. It can be used to fine-tune the look of\n# the HTML output. If left blank doxygen will generate a default style sheet.\n# See also section \"Doxygen usage\" for information on how to generate the style\n# sheet that doxygen normally uses.\n# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as\n# it is more robust and this tag (HTML_STYLESHEET) will in the future become\n# obsolete.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_STYLESHEET        =\n\n# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-\n# defined cascading style sheet that is included after the standard style sheets\n# created by doxygen. Using this option one can overrule certain style aspects.\n# This is preferred over using HTML_STYLESHEET since it does not replace the\n# standard style sheet and is therefor more robust against future updates.\n# Doxygen will copy the style sheet file to the output directory. For an example\n# see the documentation.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_STYLESHEET  =\n\n# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the HTML output directory. Note\n# that these files will be copied to the base HTML output directory. Use the\n# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these\n# files. In the HTML_STYLESHEET file, use the file name only. Also note that the\n# files will be copied as-is; there are no commands or markers available.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_EXTRA_FILES       =\n\n# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen\n# will adjust the colors in the stylesheet and background images according to\n# this color. Hue is specified as an angle on a colorwheel, see\n# http://en.wikipedia.org/wiki/Hue for more information. For instance the value\n# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300\n# purple, and 360 is red again.\n# Minimum value: 0, maximum value: 359, default value: 220.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_HUE    = 220\n\n# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors\n# in the HTML output. For a value of 0 the output will use grayscales only. A\n# value of 255 will produce the most vivid colors.\n# Minimum value: 0, maximum value: 255, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_SAT    = 100\n\n# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the\n# luminance component of the colors in the HTML output. Values below 100\n# gradually make the output lighter, whereas values above 100 make the output\n# darker. The value divided by 100 is the actual gamma applied, so 80 represents\n# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not\n# change the gamma.\n# Minimum value: 40, maximum value: 240, default value: 80.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_COLORSTYLE_GAMMA  = 80\n\n# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML\n# page will contain the date and time when the page was generated. Setting this\n# to NO can help when comparing the output of multiple runs.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_TIMESTAMP         = YES\n\n# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML\n# documentation will contain sections that can be hidden and shown after the\n# page has loaded.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_DYNAMIC_SECTIONS  = NO\n\n# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries\n# shown in the various tree structured indices initially; the user can expand\n# and collapse entries dynamically later on. Doxygen will expand the tree to\n# such a level that at most the specified number of entries are visible (unless\n# a fully collapsed tree already exceeds this amount). So setting the number of\n# entries 1 will produce a full collapsed tree by default. 0 is a special value\n# representing an infinite number of entries and will result in a full expanded\n# tree by default.\n# Minimum value: 0, maximum value: 9999, default value: 100.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nHTML_INDEX_NUM_ENTRIES = 100\n\n# If the GENERATE_DOCSET tag is set to YES, additional index files will be\n# generated that can be used as input for Apple's Xcode 3 integrated development\n# environment (see: http://developer.apple.com/tools/xcode/), introduced with\n# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a\n# Makefile in the HTML output directory. Running make will produce the docset in\n# that directory and running make install will install the docset in\n# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at\n# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html\n# for more information.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_DOCSET        = NO\n\n# This tag determines the name of the docset feed. A documentation feed provides\n# an umbrella under which multiple documentation sets from a single provider\n# (such as a company or product suite) can be grouped.\n# The default value is: Doxygen generated docs.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_FEEDNAME        = \"Doxygen generated docs\"\n\n# This tag specifies a string that should uniquely identify the documentation\n# set bundle. This should be a reverse domain-name style string, e.g.\n# com.mycompany.MyDocSet. Doxygen will append .docset to the name.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_BUNDLE_ID       = org.doxygen.Project\n\n# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify\n# the documentation publisher. This should be a reverse domain-name style\n# string, e.g. com.mycompany.MyDocSet.documentation.\n# The default value is: org.doxygen.Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_ID    = org.doxygen.Publisher\n\n# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.\n# The default value is: Publisher.\n# This tag requires that the tag GENERATE_DOCSET is set to YES.\n\nDOCSET_PUBLISHER_NAME  = Publisher\n\n# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three\n# additional HTML index files: index.hhp, index.hhc, and index.hhk. The\n# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop\n# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on\n# Windows.\n#\n# The HTML Help Workshop contains a compiler that can convert all HTML output\n# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML\n# files are now used as the Windows 98 help format, and will replace the old\n# Windows help format (.hlp) on all Windows platforms in the future. Compressed\n# HTML files also contain an index, a table of contents, and you can search for\n# words in the documentation. The HTML workshop also contains a viewer for\n# compressed HTML files.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_HTMLHELP      = NO\n\n# The CHM_FILE tag can be used to specify the file name of the resulting .chm\n# file. You can add a path in front of the file if the result should not be\n# written to the html output directory.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_FILE               =\n\n# The HHC_LOCATION tag can be used to specify the location (absolute path\n# including file name) of the HTML help compiler ( hhc.exe). If non-empty\n# doxygen will try to run the HTML help compiler on the generated index.hhp.\n# The file has to be specified with full path.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nHHC_LOCATION           =\n\n# The GENERATE_CHI flag controls if a separate .chi index file is generated (\n# YES) or that it should be included in the master .chm file ( NO).\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nGENERATE_CHI           = NO\n\n# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)\n# and project file content.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nCHM_INDEX_ENCODING     =\n\n# The BINARY_TOC flag controls whether a binary table of contents is generated (\n# YES) or a normal table of contents ( NO) in the .chm file.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nBINARY_TOC             = NO\n\n# The TOC_EXPAND flag can be set to YES to add extra items for group members to\n# the table of contents of the HTML help documentation and to the tree view.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTMLHELP is set to YES.\n\nTOC_EXPAND             = NO\n\n# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and\n# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that\n# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help\n# (.qch) of the generated HTML documentation.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_QHP           = NO\n\n# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify\n# the file name of the resulting .qch file. The path specified is relative to\n# the HTML output folder.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQCH_FILE               =\n\n# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help\n# Project output. For more information please see Qt Help Project / Namespace\n# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_NAMESPACE          = org.doxygen.Project\n\n# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt\n# Help Project output. For more information please see Qt Help Project / Virtual\n# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-\n# folders).\n# The default value is: doc.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_VIRTUAL_FOLDER     = doc\n\n# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom\n# filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_NAME   =\n\n# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the\n# custom filter to add. For more information please see Qt Help Project / Custom\n# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-\n# filters).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_CUST_FILTER_ATTRS  =\n\n# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this\n# project's filter section matches. Qt Help Project / Filter Attributes (see:\n# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHP_SECT_FILTER_ATTRS  =\n\n# The QHG_LOCATION tag can be used to specify the location of Qt's\n# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the\n# generated .qhp file.\n# This tag requires that the tag GENERATE_QHP is set to YES.\n\nQHG_LOCATION           =\n\n# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be\n# generated, together with the HTML files, they form an Eclipse help plugin. To\n# install this plugin and make it available under the help contents menu in\n# Eclipse, the contents of the directory containing the HTML and XML files needs\n# to be copied into the plugins directory of eclipse. The name of the directory\n# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.\n# After copying Eclipse needs to be restarted before the help appears.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_ECLIPSEHELP   = NO\n\n# A unique identifier for the Eclipse help plugin. When installing the plugin\n# the directory name containing the HTML and XML files should also have this\n# name. Each documentation set should have its own identifier.\n# The default value is: org.doxygen.Project.\n# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.\n\nECLIPSE_DOC_ID         = org.doxygen.Project\n\n# If you want full control over the layout of the generated HTML pages it might\n# be necessary to disable the index and replace it with your own. The\n# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top\n# of each HTML page. A value of NO enables the index and the value YES disables\n# it. Since the tabs in the index contain the same information as the navigation\n# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nDISABLE_INDEX          = NO\n\n# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index\n# structure should be generated to display hierarchical information. If the tag\n# value is set to YES, a side panel will be generated containing a tree-like\n# index structure (just like the one that is generated for HTML Help). For this\n# to work a browser that supports JavaScript, DHTML, CSS and frames is required\n# (i.e. any modern browser). Windows users are probably better off using the\n# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can\n# further fine-tune the look of the index. As an example, the default style\n# sheet generated by doxygen has an example that shows how to put an image at\n# the root of the tree instead of the PROJECT_NAME. Since the tree basically has\n# the same information as the tab index, you could consider setting\n# DISABLE_INDEX to YES when enabling this option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nGENERATE_TREEVIEW      = NO\n\n# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that\n# doxygen will group on one line in the generated HTML documentation.\n#\n# Note that a value of 0 will completely suppress the enum values from appearing\n# in the overview section.\n# Minimum value: 0, maximum value: 20, default value: 4.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nENUM_VALUES_PER_LINE   = 4\n\n# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used\n# to set the initial width (in pixels) of the frame in which the tree is shown.\n# Minimum value: 0, maximum value: 1500, default value: 250.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nTREEVIEW_WIDTH         = 250\n\n# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to\n# external symbols imported via tag files in a separate window.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nEXT_LINKS_IN_WINDOW    = NO\n\n# Use this tag to change the font size of LaTeX formulas included as images in\n# the HTML documentation. When you change the font size after a successful\n# doxygen run you need to manually remove any form_*.png images from the HTML\n# output directory to force them to be regenerated.\n# Minimum value: 8, maximum value: 50, default value: 10.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_FONTSIZE       = 10\n\n# Use the FORMULA_TRANPARENT tag to determine whether or not the images\n# generated for formulas are transparent PNGs. Transparent PNGs are not\n# supported properly for IE 6.0, but are supported on all modern browsers.\n#\n# Note that when changing this option you need to delete any form_*.png files in\n# the HTML output directory before the changes have effect.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nFORMULA_TRANSPARENT    = YES\n\n# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see\n# http://www.mathjax.org) which uses client side Javascript for the rendering\n# instead of using prerendered bitmaps. Use this if you do not have LaTeX\n# installed or if you want to formulas look prettier in the HTML output. When\n# enabled you may also need to install MathJax separately and configure the path\n# to it using the MATHJAX_RELPATH option.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nUSE_MATHJAX            = NO\n\n# When MathJax is enabled you can set the default output format to be used for\n# the MathJax output. See the MathJax site (see:\n# http://docs.mathjax.org/en/latest/output.html) for more details.\n# Possible values are: HTML-CSS (which is slower, but has the best\n# compatibility), NativeMML (i.e. MathML) and SVG.\n# The default value is: HTML-CSS.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_FORMAT         = HTML-CSS\n\n# When MathJax is enabled you need to specify the location relative to the HTML\n# output directory using the MATHJAX_RELPATH option. The destination directory\n# should contain the MathJax.js script. For instance, if the mathjax directory\n# is located at the same level as the HTML output directory, then\n# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax\n# Content Delivery Network so you can quickly see the result without installing\n# MathJax. However, it is strongly recommended to install a local copy of\n# MathJax from http://www.mathjax.org before deployment.\n# The default value is: http://cdn.mathjax.org/mathjax/latest.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest\n\n# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax\n# extension names that should be enabled during MathJax rendering. For example\n# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_EXTENSIONS     =\n\n# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces\n# of code that will be used on startup of the MathJax code. See the MathJax site\n# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an\n# example see the documentation.\n# This tag requires that the tag USE_MATHJAX is set to YES.\n\nMATHJAX_CODEFILE       =\n\n# When the SEARCHENGINE tag is enabled doxygen will generate a search box for\n# the HTML output. The underlying search engine uses javascript and DHTML and\n# should work on any modern browser. Note that when using HTML help\n# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)\n# there is already a search function so this one should typically be disabled.\n# For large projects the javascript based search engine can be slow, then\n# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to\n# search using the keyboard; to jump to the search box use <access key> + S\n# (what the <access key> is depends on the OS and browser, but it is typically\n# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down\n# key> to jump into the search results window, the results can be navigated\n# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel\n# the search. The filter options can be selected when the cursor is inside the\n# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>\n# to select a filter and <Enter> or <escape> to activate or cancel the filter\n# option.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_HTML is set to YES.\n\nSEARCHENGINE           = YES\n\n# When the SERVER_BASED_SEARCH tag is enabled the search engine will be\n# implemented using a web server instead of a web client using Javascript. There\n# are two flavors of web server based searching depending on the EXTERNAL_SEARCH\n# setting. When disabled, doxygen will generate a PHP script for searching and\n# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing\n# and searching needs to be provided by external tools. See the section\n# \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSERVER_BASED_SEARCH    = NO\n\n# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP\n# script for searching. Instead the search results are written to an XML file\n# which needs to be processed by an external indexer. Doxygen will invoke an\n# external search engine pointed to by the SEARCHENGINE_URL option to obtain the\n# search results.\n#\n# Doxygen ships with an example indexer ( doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: http://xapian.org/).\n#\n# See the section \"External Indexing and Searching\" for details.\n# The default value is: NO.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH        = NO\n\n# The SEARCHENGINE_URL should point to a search engine hosted by a web server\n# which will return the search results when EXTERNAL_SEARCH is enabled.\n#\n# Doxygen ships with an example indexer ( doxyindexer) and search engine\n# (doxysearch.cgi) which are based on the open source search engine library\n# Xapian (see: http://xapian.org/). See the section \"External Indexing and\n# Searching\" for details.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHENGINE_URL       =\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed\n# search data is written to a file for indexing by an external tool. With the\n# SEARCHDATA_FILE tag the name of this file can be specified.\n# The default file is: searchdata.xml.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nSEARCHDATA_FILE        = searchdata.xml\n\n# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the\n# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is\n# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple\n# projects and redirect the results back to the right project.\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTERNAL_SEARCH_ID     =\n\n# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen\n# projects other than the one defined by this configuration file, but that are\n# all added to the same external search index. Each project needs to have a\n# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of\n# to a relative location where the documentation can be found. The format is:\n# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...\n# This tag requires that the tag SEARCHENGINE is set to YES.\n\nEXTRA_SEARCH_MAPPINGS  =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the LaTeX output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.\n# The default value is: YES.\n\nGENERATE_LATEX         = YES\n\n# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_OUTPUT           = latex\n\n# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be\n# invoked.\n#\n# Note that when enabling USE_PDFLATEX this option is only used for generating\n# bitmaps for formulas in the HTML output, but not in the Makefile that is\n# written to the output directory.\n# The default file is: latex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_CMD_NAME         = latex\n\n# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate\n# index for LaTeX.\n# The default file is: makeindex.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nMAKEINDEX_CMD_NAME     = makeindex\n\n# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nCOMPACT_LATEX          = NO\n\n# The PAPER_TYPE tag can be used to set the paper type that is used by the\n# printer.\n# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x\n# 14 inches) and executive (7.25 x 10.5 inches).\n# The default value is: a4.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPAPER_TYPE             = a4\n\n# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names\n# that should be included in the LaTeX output. To get the times font for\n# instance you can specify\n# EXTRA_PACKAGES=times\n# If left blank no extra packages will be included.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nEXTRA_PACKAGES         =\n\n# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the\n# generated LaTeX document. The header should contain everything until the first\n# chapter. If it is left blank doxygen will generate a standard header. See\n# section \"Doxygen usage\" for information on how to let doxygen write the\n# default header to a separate file.\n#\n# Note: Only use a user-defined header if you know what you are doing! The\n# following commands have a special meaning inside the header: $title,\n# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will\n# replace them by respectively the title of the page, the current date and time,\n# only the current date, the version number of doxygen, the project name (see\n# PROJECT_NAME), or the project number (see PROJECT_NUMBER).\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HEADER           =\n\n# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the\n# generated LaTeX document. The footer should contain everything after the last\n# chapter. If it is left blank doxygen will generate a standard footer.\n#\n# Note: Only use a user-defined footer if you know what you are doing!\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_FOOTER           =\n\n# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or\n# other source files which should be copied to the LATEX_OUTPUT output\n# directory. Note that the files will be copied as-is; there are no commands or\n# markers available.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_EXTRA_FILES      =\n\n# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is\n# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will\n# contain links (just like the HTML output) instead of page references. This\n# makes the output suitable for online browsing using a PDF viewer.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nPDF_HYPERLINKS         = YES\n\n# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate\n# the PDF file directly from the LaTeX files. Set this option to YES to get a\n# higher quality PDF documentation.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nUSE_PDFLATEX           = YES\n\n# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode\n# command to the generated LaTeX files. This will instruct LaTeX to keep running\n# if errors occur, instead of asking the user for help. This option is also used\n# when generating formulas in HTML.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BATCHMODE        = NO\n\n# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the\n# index chapters (such as File Index, Compound Index, etc.) in the output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_HIDE_INDICES     = NO\n\n# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source\n# code with syntax highlighting in the LaTeX output.\n#\n# Note that which sources are shown also depends on other settings such as\n# SOURCE_BROWSER.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_SOURCE_CODE      = NO\n\n# The LATEX_BIB_STYLE tag can be used to specify the style to use for the\n# bibliography, e.g. plainnat, or ieeetr. See\n# http://en.wikipedia.org/wiki/BibTeX and \\cite for more info.\n# The default value is: plain.\n# This tag requires that the tag GENERATE_LATEX is set to YES.\n\nLATEX_BIB_STYLE        = plain\n\n#---------------------------------------------------------------------------\n# Configuration options related to the RTF output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The\n# RTF output is optimized for Word 97 and may not look too pretty with other RTF\n# readers/editors.\n# The default value is: NO.\n\nGENERATE_RTF           = NO\n\n# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: rtf.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_OUTPUT             = rtf\n\n# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF\n# documents. This may be useful for small projects and may help to save some\n# trees in general.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nCOMPACT_RTF            = NO\n\n# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will\n# contain hyperlink fields. The RTF file will contain links (just like the HTML\n# output) instead of page references. This makes the output suitable for online\n# browsing using Word or some other Word compatible readers that support those\n# fields.\n#\n# Note: WordPad (write) and others do not support links.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_HYPERLINKS         = NO\n\n# Load stylesheet definitions from file. Syntax is similar to doxygen's config\n# file, i.e. a series of assignments. You only have to provide replacements,\n# missing definitions are set to their default value.\n#\n# See also section \"Doxygen usage\" for information on how to generate the\n# default style sheet that doxygen normally uses.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_STYLESHEET_FILE    =\n\n# Set optional variables used in the generation of an RTF document. Syntax is\n# similar to doxygen's config file. A template extensions file can be generated\n# using doxygen -e rtf extensionFile.\n# This tag requires that the tag GENERATE_RTF is set to YES.\n\nRTF_EXTENSIONS_FILE    =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the man page output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for\n# classes and files.\n# The default value is: NO.\n\nGENERATE_MAN           = NO\n\n# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it. A directory man3 will be created inside the directory specified by\n# MAN_OUTPUT.\n# The default directory is: man.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_OUTPUT             = man\n\n# The MAN_EXTENSION tag determines the extension that is added to the generated\n# man pages. In case the manual section does not start with a number, the number\n# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is\n# optional.\n# The default value is: .3.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_EXTENSION          = .3\n\n# The MAN_SUBDIR tag determines the name of the directory created within\n# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by\n# MAN_EXTENSION with the initial . removed.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_SUBDIR             =\n\n# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it\n# will generate one additional man file for each entity documented in the real\n# man page(s). These additional files only source the real man page, but without\n# them the man command would be unable to find the correct page.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_MAN is set to YES.\n\nMAN_LINKS              = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the XML output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that\n# captures the structure of the code including all documentation.\n# The default value is: NO.\n\nGENERATE_XML           = NO\n\n# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a\n# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of\n# it.\n# The default directory is: xml.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_OUTPUT             = xml\n\n# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program\n# listings (including syntax highlighting and cross-referencing information) to\n# the XML output. Note that enabling this will significantly increase the size\n# of the XML output.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_XML is set to YES.\n\nXML_PROGRAMLISTING     = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to the DOCBOOK output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files\n# that can be used to generate PDF.\n# The default value is: NO.\n\nGENERATE_DOCBOOK       = NO\n\n# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.\n# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in\n# front of it.\n# The default directory is: docbook.\n# This tag requires that the tag GENERATE_DOCBOOK is set to YES.\n\nDOCBOOK_OUTPUT         = docbook\n\n#---------------------------------------------------------------------------\n# Configuration options for the AutoGen Definitions output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen\n# Definitions (see http://autogen.sf.net) file that captures the structure of\n# the code including all documentation. Note that this feature is still\n# experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_AUTOGEN_DEF   = NO\n\n#---------------------------------------------------------------------------\n# Configuration options related to the Perl module output\n#---------------------------------------------------------------------------\n\n# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module\n# file that captures the structure of the code including all documentation.\n#\n# Note that this feature is still experimental and incomplete at the moment.\n# The default value is: NO.\n\nGENERATE_PERLMOD       = NO\n\n# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary\n# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI\n# output from the Perl module output.\n# The default value is: NO.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_LATEX          = NO\n\n# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely\n# formatted so it can be parsed by a human reader. This is useful if you want to\n# understand what is going on. On the other hand, if this tag is set to NO the\n# size of the Perl module output will be much smaller and Perl will parse it\n# just the same.\n# The default value is: YES.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_PRETTY         = YES\n\n# The names of the make variables in the generated doxyrules.make file are\n# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful\n# so different doxyrules.make files included by the same Makefile don't\n# overwrite each other's variables.\n# This tag requires that the tag GENERATE_PERLMOD is set to YES.\n\nPERLMOD_MAKEVAR_PREFIX =\n\n#---------------------------------------------------------------------------\n# Configuration options related to the preprocessor\n#---------------------------------------------------------------------------\n\n# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all\n# C-preprocessor directives found in the sources and include files.\n# The default value is: YES.\n\nENABLE_PREPROCESSING   = YES\n\n# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names\n# in the source code. If set to NO only conditional compilation will be\n# performed. Macro expansion can be done in a controlled way by setting\n# EXPAND_ONLY_PREDEF to YES.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nMACRO_EXPANSION        = YES\n\n# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then\n# the macro expansion is limited to the macros specified with the PREDEFINED and\n# EXPAND_AS_DEFINED tags.\n# The default value is: NO.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_ONLY_PREDEF     = YES\n\n# If the SEARCH_INCLUDES tag is set to YES the includes files in the\n# INCLUDE_PATH will be searched if a #include is found.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSEARCH_INCLUDES        = YES\n\n# The INCLUDE_PATH tag can be used to specify one or more directories that\n# contain include files that are not input files but should be processed by the\n# preprocessor.\n# This tag requires that the tag SEARCH_INCLUDES is set to YES.\n\nINCLUDE_PATH           =\n\n# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard\n# patterns (like *.h and *.hpp) to filter out the header-files in the\n# directories. If left blank, the patterns specified with FILE_PATTERNS will be\n# used.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nINCLUDE_FILE_PATTERNS  =\n\n# The PREDEFINED tag can be used to specify one or more macro names that are\n# defined before the preprocessor is started (similar to the -D option of e.g.\n# gcc). The argument of the tag is a list of macros of the form: name or\n# name=definition (no spaces). If the definition and the \"=\" are omitted, \"=1\"\n# is assumed. To prevent a macro definition from being undefined via #undef or\n# recursively expanded use the := operator instead of the = operator.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nPREDEFINED             = __attribute__(x)=\n\n# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this\n# tag can be used to specify a list of macro names that should be expanded. The\n# macro definition that is found in the sources will be used. Use the PREDEFINED\n# tag if you want to use a different macro definition that overrules the\n# definition found in the source code.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nEXPAND_AS_DEFINED      =\n\n# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will\n# remove all references to function-like macros that are alone on a line, have\n# an all uppercase name, and do not end with a semicolon. Such function macros\n# are typically used for boiler-plate code, and will confuse the parser if not\n# removed.\n# The default value is: YES.\n# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.\n\nSKIP_FUNCTION_MACROS   = YES\n\n#---------------------------------------------------------------------------\n# Configuration options related to external references\n#---------------------------------------------------------------------------\n\n# The TAGFILES tag can be used to specify one or more tag files. For each tag\n# file the location of the external documentation should be added. The format of\n# a tag file without this location is as follows:\n# TAGFILES = file1 file2 ...\n# Adding location for the tag files is done as follows:\n# TAGFILES = file1=loc1 \"file2 = loc2\" ...\n# where loc1 and loc2 can be relative or absolute paths or URLs. See the\n# section \"Linking to external documentation\" for more information about the use\n# of tag files.\n# Note: Each tag file must have a unique name (where the name does NOT include\n# the path). If a tag file is not located in the directory in which doxygen is\n# run, you must also specify the path to the tagfile here.\n\nTAGFILES               =\n\n# When a file name is specified after GENERATE_TAGFILE, doxygen will create a\n# tag file that is based on the input files it reads. See section \"Linking to\n# external documentation\" for more information about the usage of tag files.\n\nGENERATE_TAGFILE       =\n\n# If the ALLEXTERNALS tag is set to YES all external class will be listed in the\n# class index. If set to NO only the inherited external classes will be listed.\n# The default value is: NO.\n\nALLEXTERNALS           = NO\n\n# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in\n# the modules index. If set to NO, only the current project's groups will be\n# listed.\n# The default value is: YES.\n\nEXTERNAL_GROUPS        = YES\n\n# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in\n# the related pages index. If set to NO, only the current project's pages will\n# be listed.\n# The default value is: YES.\n\nEXTERNAL_PAGES         = YES\n\n# The PERL_PATH should be the absolute path and name of the perl script\n# interpreter (i.e. the result of 'which perl').\n# The default file (with absolute path) is: /usr/bin/perl.\n\nPERL_PATH              = /usr/bin/perl\n\n#---------------------------------------------------------------------------\n# Configuration options related to the dot tool\n#---------------------------------------------------------------------------\n\n# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram\n# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to\n# NO turns the diagrams off. Note that this option also works with HAVE_DOT\n# disabled, but it is recommended to install and use dot, since it yields more\n# powerful graphs.\n# The default value is: YES.\n\nCLASS_DIAGRAMS         = YES\n\n# You can define message sequence charts within doxygen comments using the \\msc\n# command. Doxygen will then run the mscgen tool (see:\n# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the\n# documentation. The MSCGEN_PATH tag allows you to specify the directory where\n# the mscgen tool resides. If left empty the tool is assumed to be found in the\n# default search path.\n\nMSCGEN_PATH            =\n\n# You can include diagrams made with dia in doxygen documentation. Doxygen will\n# then run dia to produce the diagram and insert it in the documentation. The\n# DIA_PATH tag allows you to specify the directory where the dia binary resides.\n# If left empty dia is assumed to be found in the default search path.\n\nDIA_PATH               =\n\n# If set to YES, the inheritance and collaboration graphs will hide inheritance\n# and usage relations if the target is undocumented or is not a class.\n# The default value is: YES.\n\nHIDE_UNDOC_RELATIONS   = YES\n\n# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n# available from the path. This tool is part of Graphviz (see:\n# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent\n# Bell Labs. The other options in this section have no effect if this option is\n# set to NO\n# The default value is: NO.\n\nHAVE_DOT               = NO\n\n# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed\n# to run in parallel. When set to 0 doxygen will base this on the number of\n# processors available in the system. You can set it explicitly to a value\n# larger than 0 to get control over the balance between CPU load and processing\n# speed.\n# Minimum value: 0, maximum value: 32, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_NUM_THREADS        = 0\n\n# When you want a differently looking font n the dot files that doxygen\n# generates you can specify the font name using DOT_FONTNAME. You need to make\n# sure dot is able to find the font, which can be done by putting it in a\n# standard location or by setting the DOTFONTPATH environment variable or by\n# setting DOT_FONTPATH to the directory containing the font.\n# The default value is: Helvetica.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTNAME           = Helvetica\n\n# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of\n# dot graphs.\n# Minimum value: 4, maximum value: 24, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTSIZE           = 10\n\n# By default doxygen will tell dot to use the default font as specified with\n# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set\n# the path where dot can find it using this tag.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_FONTPATH           =\n\n# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for\n# each documented class showing the direct and indirect inheritance relations.\n# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCLASS_GRAPH            = YES\n\n# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a\n# graph for each documented class showing the direct and indirect implementation\n# dependencies (inheritance, containment, and class references variables) of the\n# class with other documented classes.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCOLLABORATION_GRAPH    = YES\n\n# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for\n# groups, showing the direct groups dependencies.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGROUP_GRAPHS           = YES\n\n# If the UML_LOOK tag is set to YES doxygen will generate inheritance and\n# collaboration diagrams in a style similar to the OMG's Unified Modeling\n# Language.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LOOK               = NO\n\n# If the UML_LOOK tag is enabled, the fields and methods are shown inside the\n# class node. If there are many fields or methods and many nodes the graph may\n# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the\n# number of items for each type to make the size more manageable. Set this to 0\n# for no limit. Note that the threshold may be exceeded by 50% before the limit\n# is enforced. So when you set the threshold to 10, up to 15 fields may appear,\n# but if the number exceeds 15, the total amount of fields shown is limited to\n# 10.\n# Minimum value: 0, maximum value: 100, default value: 10.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nUML_LIMIT_NUM_FIELDS   = 10\n\n# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and\n# collaboration graphs will show the relations between templates and their\n# instances.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nTEMPLATE_RELATIONS     = NO\n\n# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to\n# YES then doxygen will generate a graph for each documented file showing the\n# direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDE_GRAPH          = YES\n\n# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are\n# set to YES then doxygen will generate a graph for each documented file showing\n# the direct and indirect include dependencies of the file with other documented\n# files.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINCLUDED_BY_GRAPH      = YES\n\n# If the CALL_GRAPH tag is set to YES then doxygen will generate a call\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable call graphs for selected\n# functions only using the \\callgraph command.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALL_GRAPH             = NO\n\n# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller\n# dependency graph for every global function or class method.\n#\n# Note that enabling this option will significantly increase the time of a run.\n# So in most cases it will be better to enable caller graphs for selected\n# functions only using the \\callergraph command.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nCALLER_GRAPH           = NO\n\n# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical\n# hierarchy of all classes instead of a textual one.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGRAPHICAL_HIERARCHY    = YES\n\n# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the\n# dependencies a directory has on other directories in a graphical way. The\n# dependency relations are determined by the #include relations between the\n# files in the directories.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDIRECTORY_GRAPH        = YES\n\n# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images\n# generated by dot.\n# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order\n# to make the SVG files visible in IE 9+ (other browsers do not have this\n# requirement).\n# Possible values are: png, jpg, gif and svg.\n# The default value is: png.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_IMAGE_FORMAT       = png\n\n# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to\n# enable generation of interactive SVG images that allow zooming and panning.\n#\n# Note that this requires a modern browser other than Internet Explorer. Tested\n# and working are Firefox, Chrome, Safari, and Opera.\n# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make\n# the SVG files visible. Older versions of IE do not have SVG support.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nINTERACTIVE_SVG        = NO\n\n# The DOT_PATH tag can be used to specify the path where the dot tool can be\n# found. If left blank, it is assumed the dot tool can be found in the path.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_PATH               =\n\n# The DOTFILE_DIRS tag can be used to specify one or more directories that\n# contain dot files that are included in the documentation (see the \\dotfile\n# command).\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOTFILE_DIRS           =\n\n# The MSCFILE_DIRS tag can be used to specify one or more directories that\n# contain msc files that are included in the documentation (see the \\mscfile\n# command).\n\nMSCFILE_DIRS           =\n\n# The DIAFILE_DIRS tag can be used to specify one or more directories that\n# contain dia files that are included in the documentation (see the \\diafile\n# command).\n\nDIAFILE_DIRS           =\n\n# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes\n# that will be shown in the graph. If the number of nodes in a graph becomes\n# larger than this value, doxygen will truncate the graph, which is visualized\n# by representing a node as a red box. Note that doxygen if the number of direct\n# children of the root node in a graph is already larger than\n# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that\n# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.\n# Minimum value: 0, maximum value: 10000, default value: 50.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_GRAPH_MAX_NODES    = 50\n\n# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs\n# generated by dot. A depth value of 3 means that only nodes reachable from the\n# root by following a path via at most 3 edges will be shown. Nodes that lay\n# further from the root node will be omitted. Note that setting this option to 1\n# or 2 may greatly reduce the computation time needed for large code bases. Also\n# note that the size of a graph can be further restricted by\n# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.\n# Minimum value: 0, maximum value: 1000, default value: 0.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nMAX_DOT_GRAPH_DEPTH    = 0\n\n# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent\n# background. This is disabled by default, because dot on Windows does not seem\n# to support this out of the box.\n#\n# Warning: Depending on the platform used, enabling this option may lead to\n# badly anti-aliased labels on the edges of a graph (i.e. they become hard to\n# read).\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_TRANSPARENT        = NO\n\n# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output\n# files in one run (i.e. multiple -o and -T options on the command line). This\n# makes dot run faster, but since only newer versions of dot (>1.8.10) support\n# this, this feature is disabled by default.\n# The default value is: NO.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_MULTI_TARGETS      = NO\n\n# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page\n# explaining the meaning of the various boxes and arrows in the dot generated\n# graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nGENERATE_LEGEND        = YES\n\n# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot\n# files that are used to generate the various graphs.\n# The default value is: YES.\n# This tag requires that the tag HAVE_DOT is set to YES.\n\nDOT_CLEANUP            = YES\n"
  },
  {
    "path": "src/crypto/goldilocks/HISTORY.txt",
    "content": "March 1, 2015:\n    Not much to report.  Most of the fixes since Oct 27 last year have\n    been bug fixes or simplifications, or in the Decaf branch.\n\nOctober 27, 2014:\n    Added more support for >512-bit primes.  Changed shared secret\n    to not overflow the buffer in this case.  Changed hashing to\n    SHA512-PRNG; this doesn't change the behavior in the case that\n    only one block is required.\n\n    E-521 appears to be working.  Needs more testing, and maybe some\n    careful analysis since the carry-handling bounds are awfully tight\n    under the current analysis (the \"< 5<<57\" that it #if0 asserts is\n    not actually tight enough under the current analysis; need\n    it to be < (1+epsilon) << 59).\n    \n    So you actually do need to reduce often, at least in the x86_64_r12\n    version.\n    \n    p521/arch_ref64: simple and relatively slow impl.  Like\n    p448/arch_ref64, this arch reduces after every add or sub.\n    \n    p521/arch_x86_64_r12: aggressive, fast implementation.  This impl\n    stores 521 bits not in 9 limbs, but 12!  Limbs 3,7,11 are 0, and\n    are there only for vector alignment.  (TODO: remove those limbs\n    from precomputed tables, so that we don't have to look them up!).\n    The carry handling on this build is very tight, and probably could\n    stand more analysis.  This is why I have the careful balancing of\n    \"hexad\" and \"nonad\" multiplies in its Chung-Hasan mul routine.\n    \n    (TODO: reconsider whether this is even worthwhile on machines\n    without AVX2.)\n    \n    The 'r12 build is a work in progress, and currently only works on\n    clang (because it rearranges vectors in the timesW function).\n    \n    Timings for the fast, aggressive arch on Haswell:\n        mul:    146cy\n        sqr:    111cy\n        invert: 62kcy\n        \n        keygen: 270kcy\n        ecdh:   803kcy\n        sign:   283kcy\n        verif:  907kcy\n        \n    Same rules as other Goldi benchmarks.  Turbo off, HT off,\n    timing-channel protected (no dataflow from secrets to branches,\n    memory lookups or known vt instructions), compressed points.\n    \n\nOctober 23, 2014:\n    Pushing through changes for curve flexibility.  First up is\n    Ed480-Ridinghood, because it has the same number of words.  Next\n    is E-521.\n    \n    Experimental support for Ed480-Ridinghood.  To use, compile with\n        make ... FIELD=p480 -XCFLAGS=-DGOLDI_FIELD_BITS=480\n    \n    I still need to figure out what to do about the fact that the library\n    is called \"goldilocks\", but in will soon support curves that are not\n    ed448-goldilocks, at least experimentally.\n        \n    Currently the whole system's header \"goldilocks.h\" doesn't have\n    a simpler way to override field size, but it does work (as a hack)\n    with -DGOLDI_FIELD_BITS=...\n    \n    There is no support yet for coexistence of multiple fields in one\n    library.  The field routines will have unique names, but scalarmul*\n    won't, and the top-level goldilocks routines have fixed names.\n    \n    Current timings on Haswell:\n        Goldilocks: 178kcy keygen, 536kcy ecdh\n        Ridinghood: 193kcy keygen, 617kcy ecdh\n    \n    Note that Ridinghood ECDH does worse than 480/448.  This is at least\n    in part because I haven't calculated the overflow handling limits yet\n    in ec_point.h (this is a disadvantage of dropping the automated\n    tool for generating that file).  So I'm reducing much more often\n    than I need to.  (There's a really loud TODO in ec_point.h for that.)\n    \n    Also, I haven't tested the limits on these reductions in a while, so\n    it could be that there are actual (security-critical) bugs in this\n    area, at least for p448.  Now that there's field flexibility, it's\n    probably a good idea to make a field impl with extra words to check\n    this.\n    \n    Furthermore, field_mulw_scc will perform differently on these two\n    curves based on whether the curve constant is positive or negative.\n    I should probably go optimize the \"hot\" routines like montgomery_step\n    to have separate cases for positive and negative.\n\nSeptember 29, 2014:\n    Yesterday I put in some more architecture detection, but it should\n    really be based on the arch directory, because what's in there really\n    was a terrible hack.  So I've changed it to use $arch/arch_config.h\n    to get WORD_BITS.\n    \n    I've tweaked the eBAT construction code to rename the architectures\n    using test/batarch.map.  Maybe I should also rename them internally,\n    but not yet.\n    \n    I added some new TODO.txt items.  Some folks have been asking for a\n    more factored library, instead of this combined arithmetic, curve code,\n    encodings and protocol all-in-one jumble.  Likewise the hash and RNG\n    should be flexible.\n    \n    I've also been meaning to put more work in on SPAKE2EE, which would\n    also mean finalizing the Elligator code.\n\nSeptember 18, 2014:\n    Begin work on a \"ref\" implementation.  Currently this is just the\n    arch_ref64 architecture.  The ref implementation always weak_reduces\n    after arithmetic, and doesn't use vectors or other hackery.  Currently\n    it still must declare field elements as vector aligned, though,\n    other code outside the arch directory can be vectorized.\n\n    Change goldilocks.c to use field_eq instead of calling deep into field\n    apis.\n\nSeptember 6, 2014:\n    Pull in minor changes from David Leon Gil and Nicholas Wilson, with\n    some adjustments.  I hope the adjustments don't break their compiles.\n\n    `make bat` now makes a bat which passes supercop-fastbuild, though\n    the benchmarks are rather different from `make bench`.  I need to track\n    down why.\n\nAugust 4, 2014:\n    Experiments and bug fixes.\n\n    Add really_memset = memset_s (except not because I'm setting -std=c99),\n    thanks David Leon Gil.  I think I put it in the right places.\n\n    Try to work around what I think is a compiler bug in GCC -O3 on non-AVX\n    platforms.  I can't seem to work around it as -Os, so I'm just flagging\n    a warning (-Werror makes it an error) for now.  Will take more\n    investigation.  Thanks Samuel Neves.\n\n    Added an experimental (not ready yet!) ARM NEON implementation in\n    arch_neon_experimental.  This implementation seems to work, but needs\n    more testing.  It is currently asm-heavy and not GCC clean.  I am\n    planning to have a flag for it to use intrinsics instead of asm;\n    currently the intrinsics are commented out.  On clang this does ECDH\n    in 1850kcy on my BeagleBone Black, comparable to Curve41417.  Once this\n    is ready, I will probably move it to arch_neon proper, since arch_neon\n    isn't particularly tuned.\n\nJuly 11, 2014:\n    This is mostly a cleanup release.\n\n    Added CRANDOM_MIGHT_IS_MUST config flag (default: 1).  When set, this\n    causes crandom to assume that all features in the target arch will\n    be available, instead of detecting them.  This makes sense because\n    the rest of the Goldilocks code is not (yet?) able to detect features.\n    Also, I'd like to submit this to SUPERCOP eventually, and SUPERCOP won't\n    pass -DMUST_HAVE_XXX on the command line the way the Makefile here did.\n    \n    Flag EXPERIMENT_CRANDOM_BUFFER_CUTOFF_BYTES to disable the crandom\n    output buffer.  This buffer improves performance (very marginally at\n    Goldilocks sizes), but can cause problems with forking and VM\n    snapshotting.  By default, the buffer is now disabled.\n    \n    I've slightly tweaked the Elligator implementation (which is still\n    unused) to make it easier to invert.  This makes anything using Elligator\n    (i.e. nothing) incompatible with previous releases.\n    \n    I've been factoring \"magic\" constants such as curve orders, window sizes,\n    etc into a few headers, to reduce the effort to port the code to other\n    primes, curves, etc.  For example, I could test the Microsoft curves, and\n    something like:\n        x^2 + y^2 = 1 +- 5382[45] x^2 y^2 mod 2^480-2^240-1\n    (\"Goldeneye\"? \"Ridinghood\"?) might be a reasonable thing to try for\n    64-bit CPUs.\n    \n    In a similar vein, most of the internal code has been changed to say\n    \"field\" instead of p448, so that a future version of magic.h can decide\n    which field header to include.\n    \n    You can now `make bat` to create an eBAT in build/ed448-goldilocks.  This\n    is only minimally tested, though, because SUPERCOP doesn't work on my\n    machine and I'm too lazy to reverse engineer it.  It sets a new macro,\n    SUPERCOP_WONT_LET_ME_OPEN_FILES, which causes goldilocks_init() to fall\n    back to something horribly insecure if crandom_init_from_file raises\n    EMFILE.\n    \n    Slightly improved documentation.\n    \n    Removed some old commented-out code; restored the /* C-style */ comment\n    discipline.\n    \n    The AMD-64 version should now be GCC clean, at least for reasonably\n    recent GCC (tested on OS X.9.3, Haswell, gcc-4.9).\n    \n    History no longer says \"2104\".\n\nMay 3, 2014:\n    Minor changes to internal routines mean that this version is not\n    compatible with the previous one.\n\n    Added ARM NEON code.\n    \n    Added the ability to precompute multiples of a partner's public key.  This\n    takes slightly longer than a signature verification, but reduces future\n    verifications with the precomputed key by ~63% and ECDH by ~70%.\n    \n        goldilocks_precompute_public_key\n        goldilocks_destroy_precomputed_public_key\n        goldilocks_verify_precomputed\n        goldilocks_shared_secret_precomputed\n    \n    The precomputation feature are is protected by a macro\n        GOLDI_IMPLEMENT_PRECOMPUTED_KEYS\n    which can be #defined to 0 to compile these functions out.  Unlike most\n    of Goldilocks' functions, goldilocks_precompute_public_key uses malloc()\n    (and goldilocks_destroy_precomputed_public_key uses free()).\n    \n    Changed private keys to be derived from just the symmetric part.  This\n    means that you can compress them to 32 bytes for cold storage, or derive\n    keypairs from crypto secrets from other systems.\n        goldilocks_derive_private_key\n        goldilocks_underive_private_key\n        goldilocks_private_to_public\n    \n    Fixed a number of bugs related to vector alignment on Sandy Bridge, which\n    has AVX but uses SSE2 alignment (because it doesn't have AVX2).  Maybe I\n    should just switch it to use AVX2 alignment?\n    \n    Beginning to factor out curve-specific magic, so as to build other curves\n    with the Goldilocks framework.  That would enable fair tests against eg\n    E-521, Ed25519 etc.  Still would be a lot of work.\n    \n    More thorough testing of arithmetic.  Now uses GMP for testing framework,\n    but not in the actual library.\n    \n    Added some high-level tests for the whole library, including some (bs)\n    negative testing.  Obviously, effective negative testing is a very difficult\n    proposition in a crypto library.\n\nMarch 29, 2014:\n    Added a test directory with various tests.  Currently testing SHA512 Monte\n    Carlo, compatibility of the different scalarmul functions, and some\n    identities on EC point ops.  Began moving these tests out of benchmarker.\n    \n    Added scan-build support.\n    \n    Improved some internal interfaces.  Made a structure for Barrett primes\n    instead of passing parameters individually.  Moved some field operations\n    to places that make more sense, eg Barrett serialize and deserialize.  The\n    deserialize operation now checks that its argument is in [0,q).\n    \n    Added more documentation.\n    \n    Changed the names of a bunch of functions.  Still not entirely consistent,\n    but getting more so.\n    \n    Some minor speed improvements.  For example, multiply is now a couple cycles\n    faster.\n    \n    Added a hackish attempt at thread-safety and initialization sanity checking\n    in the Goldilocks top-level routines.\n    \n    Fixed some vector alignment bugs.  Compiling with -O0 should now work.\n    \n    Slightly simplified recode_wnaf.\n\n    Add a config.h file for future configuration.  EXPERIMENT flags moved here.\n    \n    I've decided against major changes to SHA512 for the moment.  They add speed\n    but also significantly bloat the code, which is going to hurt L1 cache\n    performance.  Perhaps we should link to OpenSSL if a faster SHA512 is desired.\n    \n    Reorganize the source tree into src, test; factor arch stuff into src/arch_*.\n    \n    Make most of the code 32-bit clean.  There's now a 32-bit generic and 32-bit\n    vectorless ARM version.  No NEON version yet because I don't have a test\n    machine (could use my phone in a pinch I guess?).  The 32-bit version still\n    isn't heavily optimized, but on ARM it's using a nicely reworked signed/phi-adic\n    multiplier.  The squaring is also based on this, but could really stand some\n    improvement.\n    \n    When passed an even exponent (or extra doubles), the Montgomery ladder should\n    now be accept points if and only if they lie on the curve.  This needs\n    additional testing, but it passes the zero bit exponent test.\n    \n    On 32-bit, use 8x4x14 instead of 5x5x18 table organization.  Probably there's\n    a better heuristic.\n\nMarch 5, 2014:\n    First revision.\n    \n    Private keys are now longer.  They now store a copy of the public key, and\n    a secret symmetric key for signing purposes.\n    \n    Signatures are now supported, though like everything else in this library,\n    their format is not stable.  They use a deterministic Schnorr mode,\n    similar to EdDSA.  Precomputed low-latency signing is not supported (yet?).\n    The hash function is SHA-512.\n    \n    The deterministic hashing mode needs to be changed to HMAC (TODO!).  It's\n    currently envelope-MAC.\n    \n    Probably in the future there will be a distinction between ECDH key and\n    signing keys (and possibly also MQV keys etc).\n    \n    Began renaming internal functions.  Removing p448_ prefixes from EC point\n    operations.  Trying to put the verb first.  For example,\n    \"p448_isogeny_un_to_tw\" is now called \"twist_and_double\".\n    \n    Began documenting with Doxygen.  Use \"make doc\" to make a very incomplete\n    documentation directory.\n    \n    There have been many other internal changes.\n\nFeb 21, 2014:\n    Initial import and benchmarking scripts.\n    \n    Keygen and ECDH are implemented, but there's no hash function.\n"
  },
  {
    "path": "src/crypto/goldilocks/LICENSE.txt",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2011 Stanford University.\nCopyright (c) 2014 Cryptography Research, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "src/crypto/goldilocks/README.txt",
    "content": "Ed448-Goldilocks\n\nThis software is an experimental implementation of a new 448-bit elliptic\ncurve called Ed448-Goldilocks. The implementation itself is based on that of\nan earlier, unnamed 252-bit curve which should probably be referred to as\nEd252-MontgomeryStation. See http://eprint.iacr.org/2012/309 for details of\nthat implementation.\n\nThe source files here are all by Mike Hamburg. Most of them are (c) 2014\nCryptography Research, Inc (a division of Rambus). The cRandom\nimplementation is the exception: these files are from the OpenConflict video\ngame protection system out of Stanford, and are (c) 2011 Stanford\nUniversity. All of these files are usable under the MIT license contained in\nLICENSE.txt.\n\nThe Makefile is set for my 2013 MacBook Air. You can `make bench` to run\na completely arbitrary set of benchmarks and tests, or `make\nbuild/goldilocks.so` to build a stripped-down version of the library. For\nnon-Haswell platforms, you need to replace -mavx2 -mbmi2 by an appropriate\nvector declaration. For non-Mac platforms, you won't be able to build a\nlibrary with this Makefile. This is fine, because you shouldn't be using\nthis for much at this stage anyway.\n\nI've attempted to protect against timing attacks and invalid point attacks,\nbut as of yet no attempt to protect against power analysis. This is an early\nrevision, so I haven't done much analysis or correctness testing of\ncorner-cases.\n\nThe code in ec_point.c and ec_point.h was generated with the help of a tool\nwritten in SAGE. The field code in p448.h doesn't reduce after add/sub, and\nso it requires care to prevent overflow. The SAGE tool figures out where to\nput reductions and adjustments to prevent overflow. It also formally\nverifies that the formulas produce points on the curve. I'm planning to add\nmore features to it eventually. That tool is even more experimental than\nthis library, though, and so I won't be releasing it just yet.\n\nThis software is incomplete, and lacks documentation. None of the APIs are\nstable. The software is probably not secure. Please consult TODO.txt for\nadditional agenda items. Do not taunt happy fun ball.\n\nCheers,\n-- Mike Hamburg\n"
  },
  {
    "path": "src/crypto/goldilocks/TODO.txt",
    "content": "Important work items for Ed448-Goldilocks:\n\n* Better architecture detection / factoring of arch-related headers.\n    [PROGRESS]\n\n* Better factoring of high-level vs low-level library.\n\n* Factor out hash, crandom from core library?\n\n* Signed 32-bit NEON implementation to avoid bias/reduce after subtract\n\n\n\n* Documentation: write high-level API docs, and internal docs to help\n  other implementors.\n    * Partial progress on Doxygenating the code.\n\n* Documentation: write a spec or add to Watson's\n\n* Cleanup: rename everything consistently.\n    * namespace_op or op_namespace?  namespace_op_type?\n    * We don't have to be super-careful with the namespacing, because\n      symbols will be scrubbed by exported.sym.\n\n* Cleanup: hard-coded tables (probably?)\n    * This reduces the work required for goldilocks_init() at the expense\n      of library size.\n     \n    * Makes error-handling and thread safety easier.\n    \n    * Use the SAGE tool?\n\n* Cleanup: unify intrinsics code\n    * Word_t, mask_t, bigregister_t, etc.\n    * Generate asm intrinsics with a script?\n\n* [DONE] Bugfix: make sure that init() and randomization are thread-safe.\n\n* [DONE] Security: check on deserialization that points are < p.\n    * [NEEDS TESTING] Check also that they're nonzero or otherwise non-pathological?\n\n* Testing:\n    * Corner-case testing\n    * More bulk random testing\n    * Negative testing.\n    * SAGE-(auto?)-generated test vectors\n    * Test the Barrett fields\n\n* Safety: add static analysis attributes for compilers that support them\n    * Most functions now have warn on ignored return.\n\n* Safety:\n    * [DONE] Check for init() if it's still required once we've done the above\n    * Decide what to do about RNG failures\n        * abort\n        * return error and zeroize\n        * return error but continue if RNG is kind of mostly OK\n    \n* Flexibility: decide which API options are good.\n    * [DONE?] Eg, should functions take nbits and table sizes?\n    \n    * [DONE] Remove hardcoded adjustments from comb control.\n        * These adjustments make the output wrong when it's not 450 bits.\n        \n    * Other slow Barrett fields?  Montgomery fields?\n\n* Mid-level API\n    * Make it easier to work with untwisted Edwards objects.\n    * Probably use extended or projective, not extensible coordinates.\n    * Scalarmul with other cofactor modes.\n\n* High-level API:\n    * SHA512 Elligator Edition?  Maybe write a paper first.\n    \n    * Elligator.\n        * Need to write Elligator inverse.  Might not be Elligator-2S.\n    \n    * FHMQV? Is this patented?\n    \n    * What low-level APIs to expose?\n        * Edwards points with add, sub, scalarmul, =, ==, ser/deser?\n\n* Portability: test and make clean with other compilers\n    * Using a fair amount of __attribute__ code.\n    * [DONE] Should work for GCC now.\n\n* Portability: try to make the vector code as portable as possible\n    * Currently using clang ext_vector_length.\n    * I can't get a simple for-loop to autovectorize :-/\n    * SAGE tool?\n\n* Portability: make the inner layers of the code 32-bit clean.\n    * Write new versions of the field code.\n        * [DONE] 28-bit limbs give less headroom for carries.\n        * [DONE] Now have a vectorless ARM version; need NEON.\n        * Improve speed of 32-bit field code.\n    \n    * [DONE] Run through the SAGE tool to generate new bias & bound.\n\n* [DONE] Portability: make the outer layers of the code 32-bit clean.\n\n* [DONE] Performance/flexibility: decide which parameters should be hard-coded.\n    * Perhaps useful for comb precomputation.\n\n* Performance: Improve SHA512.\n    * [DONE?] Improve portability.\n    * Improve speed.\n        * Except not, because this adds too much code size.\n        * Link OpenSSL if a fast SHA is desired.\n\n* Protocol:\n    * Decide what things to stir into hashes for various functions.\n    \n* Performance: improve the Barrett field code.\n    * Support other primes?\n    * Capture prime shape into a struct instead of passing 3 params.\n    * [DONE] Make 32-bit clean.\n\n* Automation:\n    * Improve the SAGE tool to cover more cases\n        * Real SSA classes to cover branching and looping\n        * Constant-time selection\n        * Intrinsics code\n        * Field code?\n    \n    * SAGE tool is impossibly slow on 32-bit\n         * Currently stuck on Elligator after 19 hours.\n         * [FIXED] at least for now.\n        \n    * Vector-mul-chains\n    * Negation \"bubble pushing\" optimization\n\n* Clear other TODO/FIXME/HACK/PERF items in the code\n\n* [DONE?] Submit to SUPERCOP\n"
  },
  {
    "path": "src/crypto/goldilocks/include/goldilocks.h",
    "content": "/* Copyright (c) 2014-2015 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n/**\n * @file goldilocks.h\n * @author Mike Hamburg\n * @brief Goldilocks high-level functions.\n */\n#ifndef __GOLDILOCKS_H__\n#define __GOLDILOCKS_H__ 1\n\n#include <stdint.h>\n\n#ifndef GOLDI_IMPLEMENT_PRECOMPUTED_KEYS\n/** If nonzero, implement precomputation for verify and ECDH. */\n#define GOLDI_IMPLEMENT_PRECOMPUTED_KEYS 1\n#endif\n\n#ifndef GOLDI_IMPLEMENT_SIGNATURES\n/** If nonzero, implement signatures. */\n#define GOLDI_IMPLEMENT_SIGNATURES 1\n#endif\n\n/** The size of the Goldilocks field, in bits. \n * Ifdef'd so you can override when testing experimental Ed480-Ridinghood or E-521.\n */\n#ifndef GOLDI_FIELD_BITS\n#define GOLDI_FIELD_BITS          448\n#endif\n\n/** The size of the Goldilocks scalars, in bits. */\n#define GOLDI_SCALAR_BITS         (GOLDI_FIELD_BITS-2)\n\n/** The same size, in bytes. */\n#define GOLDI_FIELD_BYTES         ((GOLDI_FIELD_BITS+7)/8)\n\n/** The size of a Goldilocks public key, in bytes. */\n#define GOLDI_PUBLIC_KEY_BYTES    GOLDI_FIELD_BYTES\n\n/** The extra bytes in a Goldilocks private key for the symmetric key. */\n#define GOLDI_SYMKEY_BYTES        32\n\n/** The size of a shared secret. */\n#define GOLDI_SHARED_SECRET_BYTES 64\n\n/** The size of a Goldilocks private key, in bytes. */\n#define GOLDI_PRIVATE_KEY_BYTES   (2*GOLDI_FIELD_BYTES + GOLDI_SYMKEY_BYTES)\n\n/** The size of a Goldilocks signature, in bytes. */\n#define GOLDI_SIGNATURE_BYTES     (2*GOLDI_FIELD_BYTES)\n\n/**\n * @brief Serialized form of a Goldilocks public key.\n *\n * @warning This isn't even my final form!\n */\nstruct goldilocks_public_key_t {\n    uint8_t opaque[GOLDI_PUBLIC_KEY_BYTES]; /**< Serialized data. */\n};\n\n/**\n * @brief Serialized form of a Goldilocks private key.\n *\n * Contains 56 bytes of actual private key, 56 bytes of\n * public key, and 32 bytes of symmetric key for randomization.\n *\n * @warning This isn't even my final form!\n */\nstruct goldilocks_private_key_t {\n    uint8_t opaque[GOLDI_PRIVATE_KEY_BYTES]; /**< Serialized data. */\n};\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/** @brief No error. */\nstatic const int GOLDI_EOK      = 0;\n\n/** @brief Error: your key or other state is corrupt. */\nstatic const int GOLDI_ECORRUPT = 44801;\n\n/** @brief Error: other party's key is corrupt. */\nstatic const int GOLDI_EINVAL   = 44802;\n\n/** @brief Error: not enough entropy. */\nstatic const int GOLDI_ENODICE  = 44804;\n\n/** @brief Error: you need to initialize the library first. */\nstatic const int GOLDI_EUNINIT  = 44805;\n\n/** @brief Error: called init() but we are already initialized. */\nstatic const int GOLDI_EALREADYINIT  = 44805;\n\n/**\n * @brief Initialize Goldilocks' precomputed tables and\n * random number generator.  This function must be called before\n * any of the other Goldilocks routines (except\n * goldilocks_shared_secret in the current version) and should be\n * called only once per process.\n *\n * There is currently no way to tear down this state.  It is possible\n * that a future version of this library will not require this function.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EALREADYINIT Already initialized.\n * @retval GOLDI_ECORRUPT Memory is corrupted, or another thread is already init'ing.\n * @retval Nonzero An error occurred.\n */\nint\ngoldilocks_init (void)\n__attribute__((warn_unused_result,visibility (\"default\")));\n\n\n/**\n * @brief Generate a new random keypair.\n * @param [out] privkey The generated private key.\n * @param [out] pubkey The generated public key.\n *\n * @warning This isn't even my final form!\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ENODICE Insufficient entropy.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_keygen (\n    struct goldilocks_private_key_t *privkey,\n    struct goldilocks_public_key_t *pubkey\n) __attribute__((warn_unused_result,nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Derive a key from its compressed form.\n * @param [out] privkey The derived private key.\n * @param [in] proto The compressed or proto-key, which must be 32 random bytes.\n *\n * @warning This isn't even my final form!\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_derive_private_key (\n    struct goldilocks_private_key_t *privkey,\n    const unsigned char proto[GOLDI_SYMKEY_BYTES]\n) __attribute__((nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Compress a private key (by copying out the proto-key)\n * @param [out] proto The proto-key.\n * @param [in] privkey The private key.\n *\n * @warning This isn't even my final form!\n * @todo test.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nvoid\ngoldilocks_underive_private_key (\n    unsigned char proto[GOLDI_SYMKEY_BYTES],\n    const struct goldilocks_private_key_t *privkey\n) __attribute__((nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Extract the public key from a private key.\n *\n * This is essentially a memcpy from the public part of the privkey.\n *    \n * @param [out] pubkey The extracted private key.\n * @param [in] privkey The private key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT The private key is corrupt.\n */\nint\ngoldilocks_private_to_public (\n    struct goldilocks_public_key_t *pubkey,\n    const struct goldilocks_private_key_t *privkey\n) __attribute__((nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Generate a Diffie-Hellman shared secret in constant time.\n *\n * This function uses some compile-time flags whose merit remains to\n * be decided.\n *\n * If the flag EXPERIMENT_ECDH_OBLITERATE_CT is set, prepend 40 bytes\n * of zeros to the secret before hashing.  In the case that the other\n * party's key is detectably corrupt, instead the symmetric part\n * of the secret key is used to produce a pseudorandom value.\n *\n * If EXPERIMENT_ECDH_STIR_IN_PUBKEYS is set, the sum and product of\n * the two parties' public keys is prepended to the hash.\n *\n * In the current version, this function can safely be run even without\n * goldilocks_init().  But this property is not guaranteed for future\n * versions, so call it anyway.\n *\n * @warning This isn't even my final form!\n *\n * @param [out] shared The shared secret established with the other party.\n * @param [in] my_privkey My private key.\n * @param [in] your_pubkey The other party's public key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT My key is corrupt.\n * @retval GOLDI_EINVAL   The other party's key is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_shared_secret (\n    uint8_t shared[GOLDI_SHARED_SECRET_BYTES],\n    const struct goldilocks_private_key_t *my_privkey,\n    const struct goldilocks_public_key_t *your_pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,3),visibility (\"default\")));\n\n#if GOLDI_IMPLEMENT_SIGNATURES\n/**\n * @brief Sign a message.\n *\n * The signature is deterministic, using the symmetric secret found in the\n * secret key to form a nonce.\n *\n * The technique used in signing is a modified Schnorr system, like EdDSA.\n *\n * @warning This isn't even my final form!\n *\n * @param [out] signature_out Space for the output signature.\n * @param [in] message The message to be signed.\n * @param [in] message_len The length of the message to be signed.\n * @param [in] privkey My private key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT My key is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_sign (\n    uint8_t signature_out[GOLDI_SIGNATURE_BYTES],\n    const uint8_t *message,\n    uint64_t message_len,\n    const struct goldilocks_private_key_t *privkey\n) __attribute__((nonnull(1,2,4),visibility (\"default\")));\n\n/**\n * @brief Verify a signature.\n *\n * This function is fairly strict.  It will correctly detect when\n * the signature has the wrong cofactor component, or when the sig\n * values aren't less than p or q.\n * \n * Currently this function does not detect when the public key is weird,\n * eg 0, has cofactor, etc.  As a result, a party with a bogus public\n * key could create signatures that succeed on some systems and fail on\n * others.\n *\n * @warning This isn't even my final form!\n *\n * @param [in] signature The signature.\n * @param [in] message The message to be verified.\n * @param [in] message_len The length of the message to be verified.\n * @param [in] pubkey The signer's public key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EINVAL The public key or signature is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_verify (\n    const uint8_t signature[GOLDI_SIGNATURE_BYTES],\n    const uint8_t *message,\n    uint64_t message_len,\n    const struct goldilocks_public_key_t *pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,4),visibility (\"default\")));\n#endif\n\n#if GOLDI_IMPLEMENT_PRECOMPUTED_KEYS\n\n/** A public key which has been expanded by precomputation for higher speed. */\nstruct goldilocks_precomputed_public_key_t;\n\n/**\n * @brief Expand a public key by precomputation.\n *\n * @todo Give actual error returns, instead of ambiguous NULL.\n *\n * @warning This isn't even my final form!\n *\n * @param [in] pub The public key.\n * @retval NULL We ran out of memory, or the \n */\nstruct goldilocks_precomputed_public_key_t *\ngoldilocks_precompute_public_key (\n    const struct goldilocks_public_key_t *pub\n) __attribute__((warn_unused_result,nonnull(1),visibility (\"default\")));\n\n/**\n * @brief Overwrite an expanded public key with zeros, then destroy it.\n *\n * If the input is NULL, this function does nothing.\n *\n * @param [in] precom The public key.\n */\nvoid\ngoldilocks_destroy_precomputed_public_key (\n    struct goldilocks_precomputed_public_key_t *precom\n) __attribute__((visibility (\"default\")));\n\n/**\n * @brief Verify a signature.\n *\n * This function is fairly strict.  It will correctly detect when\n * the signature has the wrong cofactor component, or when the sig\n * values aren't less than p or q.\n *\n * @warning This isn't even my final form!\n *\n * @param [in] signature The signature.\n * @param [in] message The message to be verified.\n * @param [in] message_len The length of the message to be verified.\n * @param [in] pubkey The signer's public key, expanded by precomputation.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EINVAL The public key or signature is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_verify_precomputed (\n   const uint8_t signature[GOLDI_SIGNATURE_BYTES],\n   const uint8_t *message,\n   uint64_t message_len,\n   const struct goldilocks_precomputed_public_key_t *pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,4),visibility (\"default\")));\n   \n/**\n * @brief Generate a Diffie-Hellman shared secret in constant time.\n * Uses a precomputation on the other party's public key for efficiency.\n *\n * This function uses some compile-time flags whose merit remains to\n * be decided.\n *\n * If the flag EXPERIMENT_ECDH_OBLITERATE_CT is set, prepend 40 bytes\n * of zeros to the secret before hashing.  In the case that the other\n * party's key is detectably corrupt, instead the symmetric part\n * of the secret key is used to produce a pseudorandom value.\n *\n * If EXPERIMENT_ECDH_STIR_IN_PUBKEYS is set, the sum and product of\n * the two parties' public keys is prepended to the hash.\n *\n * In the current version, this function can safely be run even without\n * goldilocks_init().  But this property is not guaranteed for future\n * versions, so call it anyway.\n *\n * @warning This isn't even my final form!\n *\n * @param [out] shared The shared secret established with the other party.\n * @param [in] my_privkey My private key.\n * @param [in] your_pubkey The other party's precomputed public key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT My key is corrupt.\n * @retval GOLDI_EINVAL   The other party's key is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_shared_secret_precomputed (\n   uint8_t shared[GOLDI_SHARED_SECRET_BYTES],\n   const struct goldilocks_private_key_t *my_privkey,\n   const struct goldilocks_precomputed_public_key_t *your_pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,3),visibility (\"default\")));\n\n#endif /* GOLDI_IMPLEMENT_PRECOMPUTED_KEYS */\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __GOLDILOCKS_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/include/ridinghood.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n/**\n * @file goldilocks.h\n * @author Mike Hamburg\n * @brief Goldilocks high-level functions.\n */\n#ifndef __GOLDILOCKS_H__\n#define __GOLDILOCKS_H__ 1\n\n#include <stdint.h>\n\n#ifndef GOLDI_IMPLEMENT_PRECOMPUTED_KEYS\n/** If nonzero, implement precomputation for verify and ECDH. */\n#define GOLDI_IMPLEMENT_PRECOMPUTED_KEYS 1\n#endif\n\n#ifndef GOLDI_IMPLEMENT_SIGNATURES\n/** If nonzero, implement signatures. */\n#define GOLDI_IMPLEMENT_SIGNATURES 1\n#endif\n\n/** The size of the Goldilocks field, in bits. */\n#define GOLDI_FIELD_BITS          448\n\n/** The size of the Goldilocks scalars, in bits. */\n#define GOLDI_SCALAR_BITS         446\n\n/** The same size, in bytes. */\n#define GOLDI_FIELD_BYTES         (GOLDI_FIELD_BITS/8)\n\n/** The size of a Goldilocks public key, in bytes. */\n#define GOLDI_PUBLIC_KEY_BYTES    GOLDI_FIELD_BYTES\n\n/** The extra bytes in a Goldilocks private key for the symmetric key. */\n#define GOLDI_SYMKEY_BYTES        32\n\n/** The size of a shared secret. */\n#define GOLDI_SHARED_SECRET_BYTES 64\n\n/** The size of a Goldilocks private key, in bytes. */\n#define GOLDI_PRIVATE_KEY_BYTES   (2*GOLDI_FIELD_BYTES + GOLDI_SYMKEY_BYTES)\n\n/** The size of a Goldilocks signature, in bytes. */\n#define GOLDI_SIGNATURE_BYTES     (2*GOLDI_FIELD_BYTES)\n\n/**\n * @brief Serialized form of a Goldilocks public key.\n *\n * @warning This isn't even my final form!\n */\nstruct goldilocks_public_key_t {\n    uint8_t opaque[GOLDI_PUBLIC_KEY_BYTES]; /**< Serialized data. */\n};\n\n/**\n * @brief Serialized form of a Goldilocks private key.\n *\n * Contains 56 bytes of actual private key, 56 bytes of\n * public key, and 32 bytes of symmetric key for randomization.\n *\n * @warning This isn't even my final form!\n */\nstruct goldilocks_private_key_t {\n    uint8_t opaque[GOLDI_PRIVATE_KEY_BYTES]; /**< Serialized data. */\n};\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/** @brief No error. */\nstatic const int GOLDI_EOK      = 0;\n\n/** @brief Error: your key or other state is corrupt. */\nstatic const int GOLDI_ECORRUPT = 44801;\n\n/** @brief Error: other party's key is corrupt. */\nstatic const int GOLDI_EINVAL   = 44802;\n\n/** @brief Error: not enough entropy. */\nstatic const int GOLDI_ENODICE  = 44804;\n\n/** @brief Error: you need to initialize the library first. */\nstatic const int GOLDI_EUNINIT  = 44805;\n\n/** @brief Error: called init() but we are already initialized. */\nstatic const int GOLDI_EALREADYINIT  = 44805;\n\n/**\n * @brief Initialize Goldilocks' precomputed tables and\n * random number generator.  This function must be called before\n * any of the other Goldilocks routines (except\n * goldilocks_shared_secret in the current version) and should be\n * called only once per process.\n *\n * There is currently no way to tear down this state.  It is possible\n * that a future version of this library will not require this function.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EALREADYINIT Already initialized.\n * @retval GOLDI_ECORRUPT Memory is corrupted, or another thread is already init'ing.\n * @retval Nonzero An error occurred.\n */\nint\ngoldilocks_init (void)\n__attribute__((warn_unused_result,visibility (\"default\")));\n\n\n/**\n * @brief Generate a new random keypair.\n * @param [out] privkey The generated private key.\n * @param [out] pubkey The generated public key.\n *\n * @warning This isn't even my final form!\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ENODICE Insufficient entropy.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_keygen (\n    struct goldilocks_private_key_t *privkey,\n    struct goldilocks_public_key_t *pubkey\n) __attribute__((warn_unused_result,nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Derive a key from its compressed form.\n * @param [out] privkey The derived private key.\n * @param [in] proto The compressed or proto-key, which must be 32 random bytes.\n *\n * @warning This isn't even my final form!\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_derive_private_key (\n    struct goldilocks_private_key_t *privkey,\n    const unsigned char proto[GOLDI_SYMKEY_BYTES]\n) __attribute__((nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Compress a private key (by copying out the proto-key)\n * @param [out] proto The proto-key.\n * @param [in] privkey The private key.\n *\n * @warning This isn't even my final form!\n * @todo test.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nvoid\ngoldilocks_underive_private_key (\n    unsigned char proto[GOLDI_SYMKEY_BYTES],\n    const struct goldilocks_private_key_t *privkey\n) __attribute__((nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Extract the public key from a private key.\n *\n * This is essentially a memcpy from the public part of the privkey.\n *    \n * @param [out] pubkey The extracted private key.\n * @param [in] privkey The private key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT The private key is corrupt.\n */\nint\ngoldilocks_private_to_public (\n    struct goldilocks_public_key_t *pubkey,\n    const struct goldilocks_private_key_t *privkey\n) __attribute__((nonnull(1,2),visibility (\"default\")));\n\n/**\n * @brief Generate a Diffie-Hellman shared secret in constant time.\n *\n * This function uses some compile-time flags whose merit remains to\n * be decided.\n *\n * If the flag EXPERIMENT_ECDH_OBLITERATE_CT is set, prepend 40 bytes\n * of zeros to the secret before hashing.  In the case that the other\n * party's key is detectably corrupt, instead the symmetric part\n * of the secret key is used to produce a pseudorandom value.\n *\n * If EXPERIMENT_ECDH_STIR_IN_PUBKEYS is set, the sum and product of\n * the two parties' public keys is prepended to the hash.\n *\n * In the current version, this function can safely be run even without\n * goldilocks_init().  But this property is not guaranteed for future\n * versions, so call it anyway.\n *\n * @warning This isn't even my final form!\n *\n * @param [out] shared The shared secret established with the other party.\n * @param [in] my_privkey My private key.\n * @param [in] your_pubkey The other party's public key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT My key is corrupt.\n * @retval GOLDI_EINVAL   The other party's key is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_shared_secret (\n    uint8_t shared[GOLDI_SHARED_SECRET_BYTES],\n    const struct goldilocks_private_key_t *my_privkey,\n    const struct goldilocks_public_key_t *your_pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,3),visibility (\"default\")));\n\n#if GOLDI_IMPLEMENT_SIGNATURES\n/**\n * @brief Sign a message.\n *\n * The signature is deterministic, using the symmetric secret found in the\n * secret key to form a nonce.\n *\n * The technique used in signing is a modified Schnorr system, like EdDSA.\n *\n * @warning This isn't even my final form!\n *\n * @param [out] signature_out Space for the output signature.\n * @param [in] message The message to be signed.\n * @param [in] message_len The length of the message to be signed.\n * @param [in] privkey My private key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT My key is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_sign (\n    uint8_t signature_out[GOLDI_SIGNATURE_BYTES],\n    const uint8_t *message,\n    uint64_t message_len,\n    const struct goldilocks_private_key_t *privkey\n) __attribute__((nonnull(1,2,4),visibility (\"default\")));\n\n/**\n * @brief Verify a signature.\n *\n * This function is fairly strict.  It will correctly detect when\n * the signature has the wrong cofactor component, or when the sig\n * values aren't less than p or q.\n * \n * Currently this function does not detect when the public key is weird,\n * eg 0, has cofactor, etc.  As a result, a party with a bogus public\n * key could create signatures that succeed on some systems and fail on\n * others.\n *\n * @warning This isn't even my final form!\n *\n * @param [in] signature The signature.\n * @param [in] message The message to be verified.\n * @param [in] message_len The length of the message to be verified.\n * @param [in] pubkey The signer's public key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EINVAL The public key or signature is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_verify (\n    const uint8_t signature[GOLDI_SIGNATURE_BYTES],\n    const uint8_t *message,\n    uint64_t message_len,\n    const struct goldilocks_public_key_t *pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,4),visibility (\"default\")));\n#endif\n\n#if GOLDI_IMPLEMENT_PRECOMPUTED_KEYS\n\n/** A public key which has been expanded by precomputation for higher speed. */\nstruct goldilocks_precomputed_public_key_t;\n\n/**\n * @brief Expand a public key by precomputation.\n *\n * @todo Give actual error returns, instead of ambiguous NULL.\n *\n * @warning This isn't even my final form!\n *\n * @param [in] pub The public key.\n * @retval NULL We ran out of memory, or the \n */\nstruct goldilocks_precomputed_public_key_t *\ngoldilocks_precompute_public_key (\n    const struct goldilocks_public_key_t *pub\n) __attribute__((warn_unused_result,nonnull(1),visibility (\"default\")));\n\n/**\n * @brief Overwrite an expanded public key with zeros, then destroy it.\n *\n * If the input is NULL, this function does nothing.\n *\n * @param [in] precom The public key.\n */\nvoid\ngoldilocks_destroy_precomputed_public_key (\n    struct goldilocks_precomputed_public_key_t *precom\n) __attribute__((visibility (\"default\")));\n\n/**\n * @brief Verify a signature.\n *\n * This function is fairly strict.  It will correctly detect when\n * the signature has the wrong cofactor component, or when the sig\n * values aren't less than p or q.\n *\n * @warning This isn't even my final form!\n *\n * @param [in] signature The signature.\n * @param [in] message The message to be verified.\n * @param [in] message_len The length of the message to be verified.\n * @param [in] pubkey The signer's public key, expanded by precomputation.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_EINVAL The public key or signature is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_verify_precomputed (\n   const uint8_t signature[GOLDI_SIGNATURE_BYTES],\n   const uint8_t *message,\n   uint64_t message_len,\n   const struct goldilocks_precomputed_public_key_t *pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,4),visibility (\"default\")));\n   \n/**\n * @brief Generate a Diffie-Hellman shared secret in constant time.\n * Uses a precomputation on the other party's public key for efficiency.\n *\n * This function uses some compile-time flags whose merit remains to\n * be decided.\n *\n * If the flag EXPERIMENT_ECDH_OBLITERATE_CT is set, prepend 40 bytes\n * of zeros to the secret before hashing.  In the case that the other\n * party's key is detectably corrupt, instead the symmetric part\n * of the secret key is used to produce a pseudorandom value.\n *\n * If EXPERIMENT_ECDH_STIR_IN_PUBKEYS is set, the sum and product of\n * the two parties' public keys is prepended to the hash.\n *\n * In the current version, this function can safely be run even without\n * goldilocks_init().  But this property is not guaranteed for future\n * versions, so call it anyway.\n *\n * @warning This isn't even my final form!\n *\n * @param [out] shared The shared secret established with the other party.\n * @param [in] my_privkey My private key.\n * @param [in] your_pubkey The other party's precomputed public key.\n *\n * @retval GOLDI_EOK Success.\n * @retval GOLDI_ECORRUPT My key is corrupt.\n * @retval GOLDI_EINVAL   The other party's key is corrupt.\n * @retval GOLDI_EUNINIT You must call goldilocks_init() first.\n */\nint\ngoldilocks_shared_secret_precomputed (\n   uint8_t shared[GOLDI_SHARED_SECRET_BYTES],\n   const struct goldilocks_private_key_t *my_privkey,\n   const struct goldilocks_precomputed_public_key_t *your_pubkey\n) __attribute__((warn_unused_result,nonnull(1,2,3),visibility (\"default\")));\n\n#endif /* GOLDI_IMPLEMENT_PRECOMPUTED_KEYS */\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __GOLDILOCKS_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/arithmetic.c",
    "content": "/**\n * @cond internal\n * @file field.c\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief High-level arithmetic routines, independent of field (except 3 mod 4).\n */\n\n#include \"field.h\"\n#include \"ec_point.h\" \n\nmask_t\nfield_eq (\n    const field_a_t a,\n    const field_a_t b\n) {\n    field_a_t ra, rb;\n    field_copy(ra, a);\n    field_copy(rb, b);\n    field_weak_reduce(ra);\n    field_weak_reduce(rb);\n    field_sub_RAW(ra, ra, rb);\n    field_bias(ra, 2);\n    return field_is_zero(ra);\n}\n\nvoid\nfield_inverse (\n    field_a_t a,\n    const field_a_t x\n) {\n    field_a_t L0, L1;\n    field_isr ( L0, x );\n    field_sqr ( L1, L0 );\n    field_sqr ( L0, L1 );\n    field_mul ( a, x, L0 );\n}\n\nmask_t\nfield_is_square (\n    const field_a_t x\n) {\n    field_a_t L0, L1;\n    field_isr ( L0, x );\n    field_sqr ( L1, L0 );\n    field_mul ( L0, x, L1 );\n    field_subw( L0, 1 );\n    return field_is_zero( L0 ) | field_is_zero( x );\n}\n\nvoid\nfield_simultaneous_invert (\n    field_a_t *__restrict__ out,\n    const field_a_t *in,\n    unsigned int n\n) {\n  if (n==0) {\n      return;\n  } else if (n==1) {\n      field_inverse(out[0],in[0]);\n      return;\n  }\n  \n  field_copy(out[1], in[0]);\n  int i;\n  for (i=1; i<(int) (n-1); i++) {\n      field_mul(out[i+1], out[i], in[i]);\n  }\n  field_mul(out[0], out[n-1], in[n-1]);\n  \n  field_a_t tmp;\n  field_inverse(tmp, out[0]);\n  field_copy(out[0], tmp);\n  \n  /* at this point, out[0] = product(in[i]) ^ -1\n   * out[i] = product(in[0]..in[i-1]) if i != 0\n   */\n  for (i=n-1; i>0; i--) {\n      field_mul(tmp, out[i], out[0]);\n      field_copy(out[i], tmp);\n      \n      field_mul(tmp, out[0], in[i]);\n      field_copy(out[0], tmp);\n  }\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/barrett_field.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"barrett_field.h\"\n#include <string.h>\n#include <assert.h>\n\nword_t\nadd_nr_ext_packed(\n    word_t *out,\n    const word_t *a,\n    uint32_t nwords_a,\n    const word_t *c,\n    uint32_t nwords_c,\n    word_t mask\n) {\n    uint32_t i;\n    dword_t carry = 0;\n    for (i=0; i<nwords_c; i++) {\n        out[i] = carry = carry + a[i] + (c[i]&mask);\n        carry >>= WORD_BITS;\n    }\n    for (; i<nwords_a; i++) {\n        out[i] = carry = carry + a[i];\n        carry >>= WORD_BITS;\n    }\n    return carry;\n}\n\nstatic __inline__ word_t\nadd_nr_packed(\n    word_t *a,\n    const word_t *c,\n    uint32_t nwords\n) {\n    uint32_t i;\n    dword_t carry = 0;\n    for (i=0; i<nwords; i++) {\n        a[i] = carry = carry + a[i] + c[i];\n        carry >>= WORD_BITS;\n    }\n    return carry;\n}\n\nword_t\nsub_nr_ext_packed(\n    word_t *out,\n    const word_t *a,\n    uint32_t nwords_a,\n    const word_t *c,\n    uint32_t nwords_c,\n    word_t mask\n) {\n    uint32_t i;\n    dsword_t carry = 0;\n    for (i=0; i<nwords_c; i++) {\n        out[i] = carry = carry + a[i] - (c[i]&mask);\n        carry >>= WORD_BITS;\n    }\n    for (; i<nwords_a; i++) {\n        out[i] = carry = carry + a[i];\n        carry >>= WORD_BITS;\n    }\n    return carry;\n}\n\nstatic word_t\nwidemac(\n    word_t *accum,\n    uint32_t nwords_accum,\n    const word_t *mier,\n    uint32_t nwords_mier,\n    word_t mand,\n    word_t carry\n) {\n    uint32_t i;\n    assert(nwords_mier <= nwords_accum);\n    \n    for (i=0; i<nwords_mier; i++) {\n#ifdef __clang_analyzer__\n        /* always true, but this satisfies scan-build (bug in scan-build?) */\n        assert(i<nwords_accum);\n#endif\n        /* UMAAL chain for the wordy part of p */\n        dword_t product = ((dword_t)mand) * mier[i];\n        product += accum[i];\n        product += carry;\n        accum[i] = product;\n        carry = product >> WORD_BITS;\n    }\n    \n    for (; i<nwords_accum; i++) {\n        dword_t sum = ((dword_t)carry) + accum[i];\n        accum[i] = sum;\n        carry = sum >> WORD_BITS;\n    }\n    \n    return carry;\n}\n\nvoid\nbarrett_negate (\n    word_t *a,\n    uint32_t nwords_a,\n    const struct barrett_prime_t *prime\n) {\n    uint32_t i;\n    dsword_t carry = 0;\n    \n    barrett_reduce(a,nwords_a,0,prime);\n    \n    /* Have p = 2^big - p_lo.  Want p - a = 2^big - p_lo - a */\n    \n    for (i=0; i<prime->nwords_lo; i++) {\n        a[i] = carry = carry - prime->p_lo[i] - a[i];\n        carry >>= WORD_BITS;\n    }\n    for (; i<prime->nwords_p; i++) {\n        a[i] = carry = carry - a[i];\n        if (i<prime->nwords_p-1) {\n            carry >>= WORD_BITS;\n        }\n    }\n    \n    a[prime->nwords_p-1] = carry = carry + (((word_t)1) << prime->p_shift);\n    \n    for (; i<nwords_a; i++) {\n        assert(!a[i]);\n    }\n    \n    assert(!(carry>>WORD_BITS));\n}\n\nvoid\nbarrett_reduce(\n    word_t *a,\n    uint32_t nwords_a,\n    word_t a_carry,\n    const struct barrett_prime_t *prime\n) {\n    uint32_t repeat, nwords_left_in_a=nwords_a;\n    \n    /* Is there a point to this a_carry business? */\n    assert(a_carry < ((word_t)1) << prime->p_shift);\n    assert(nwords_a >= prime->nwords_p);\n    assert(prime->nwords_p > 0); /* scan-build: prevent underflow */\n    \n    for (; nwords_left_in_a >= prime->nwords_p; nwords_left_in_a--) {\n        for (repeat=0; repeat<2; repeat++) {\n            /* PERF: surely a more careful implementation could\n             * avoid this double round\n             */\n            word_t mand = a[nwords_left_in_a-1] >> prime->p_shift;\n            a[nwords_left_in_a-1] &= (((word_t)1)<<prime->p_shift)-1;\n            if (prime->p_shift && !repeat) {\n                /* collect high bits when there are any */\n                if (nwords_left_in_a < nwords_a) {\n                    mand |= a[nwords_left_in_a] << (WORD_BITS-prime->p_shift);\n                    a[nwords_left_in_a] = 0;\n                } else {\n                    mand |= a_carry << (WORD_BITS-prime->p_shift);\n                }\n            }\n            \n            word_t carry = widemac(\n                a+nwords_left_in_a-prime->nwords_p,\n                prime->nwords_p,\n                prime->p_lo,\n                prime->nwords_lo,\n                mand,\n                0\n            );\n            assert(!carry);\n            (void)carry;\n        }\n    }\n    \n    assert(nwords_left_in_a == prime->nwords_p-1);\n    \n    /* OK, but it still isn't reduced.  Add and subtract p_lo. */\n    word_t cout = add_nr_ext_packed(a,a,prime->nwords_p,prime->p_lo,prime->nwords_lo,-1);\n    if (prime->p_shift) {\n        cout = (cout<<(WORD_BITS-prime->p_shift)) + (a[prime->nwords_p-1]>>prime->p_shift);\n        a[prime->nwords_p-1] &= (((word_t)1)<<prime->p_shift)-1;\n    }\n    \n    /* mask = carry-1: if no carry then do sub, otherwise don't */\n    sub_nr_ext_packed(a,a,prime->nwords_p,prime->p_lo,prime->nwords_lo,cout-1);\n}\n\n/* PERF: This function is horribly slow.  Enough to break 1%. */\nvoid\nbarrett_mul_or_mac(\n    word_t *accum,\n    uint32_t nwords_accum,\n    \n    const word_t *a,\n    uint32_t nwords_a,\n    \n    const word_t *b,\n    uint32_t nwords_b,\n    \n    const struct barrett_prime_t *prime,\n    \n    mask_t doMac\n) {\n    assert(nwords_accum >= prime->nwords_p);\n    \n    /* nwords_tmp = max(nwords_a + 1, nwords_p + 1, nwords_accum if doMac); */\n    uint32_t nwords_tmp = (nwords_a > prime->nwords_p) ? nwords_a : prime->nwords_p;\n    nwords_tmp++;\n    assert(nwords_tmp > 0); /* scan-build: prevent underflow. */\n    if (nwords_tmp < nwords_accum && doMac)\n        nwords_tmp = nwords_accum;\n    \n    word_t tmp[nwords_tmp];\n    int bpos, idown;\n    uint32_t i;\n    \n    for (i=0; i<nwords_tmp; i++) {\n        tmp[i] = 0;\n    }\n    \n    for (bpos=nwords_b-1; bpos >= 0; bpos--) {\n        /* Invariant at the beginning of the loop: the high word is unused. */\n        assert(tmp[nwords_tmp-1] == 0);\n        \n        /* shift up */\n        for (idown=nwords_tmp-2; idown>=0; idown--) {\n            tmp[idown+1] = tmp[idown];\n        }\n        tmp[0] = 0;\n\n        /* mac and reduce */\n        word_t carry = widemac(tmp, nwords_tmp, a, nwords_a, b[bpos], 0);\n        \n        /* the mac can't carry, because nwords_tmp >= nwords_a+1 and its high word is clear */\n        assert(!carry);\n        barrett_reduce(tmp, nwords_tmp, carry, prime);\n        \n        /* at this point, the number of words used is nwords_p <= nwords_tmp-1,\n         * so the high word is again clear */\n    }\n    \n    if (doMac) {\n        word_t cout = add_nr_packed(tmp, accum, nwords_accum);\n        barrett_reduce(tmp, nwords_tmp, cout, prime);\n    }\n    \n    for (i=0; i<nwords_tmp && i<nwords_accum; i++) {\n        accum[i] = tmp[i];\n    }\n    for (; i<nwords_tmp; i++) {\n        assert(tmp[i] == 0);\n    }\n    for (; i<nwords_accum; i++) {\n        accum[i] = 0;\n    }\n}\nmask_t\nbarrett_deserialize (\n    word_t *x,\n    const uint8_t *serial,\n    const struct barrett_prime_t *prime\n) {\n    unsigned int i,j,nserial = prime->nwords_p * sizeof(word_t);\n    if (prime->p_shift) {\n        nserial -= (WORD_BITS - prime->p_shift) / 8;\n    }\n\n    \n    /* Track x < p, p = 2^k - p_lo <==> x + p_lo < 2^k */\n    dword_t carry = 0;\n    \n    for (i=0; i*sizeof(word_t)<nserial; i++) {\n        carry >>= WORD_BITS;\n        \n        word_t the = 0;\n        for (j=0; j<sizeof(word_t) && sizeof(word_t)*i+j < nserial; j++) {\n            the |= ((word_t)serial[sizeof(word_t)*i+j]) << (8*j);\n        }\n        x[i] = the;\n        \n        carry += the;\n        if (i < prime->nwords_lo) carry += prime->p_lo[i];\n    }\n    \n    /* check for reduction */\n    if (prime->p_shift) {\n        carry >>= prime->p_shift;\n    } else {\n        carry >>= WORD_BITS;\n    }\n    \n    /* at this point, carry > 0 indicates failure */\n    dsword_t scarry = carry;\n    scarry = -scarry;\n    scarry >>= WORD_BITS;\n    scarry >>= WORD_BITS;\n    \n    return (mask_t) ~scarry;\n}\n    \nvoid\nbarrett_deserialize_and_reduce (\n    word_t *x,\n    const uint8_t *serial,\n    uint32_t nserial,\n    const struct barrett_prime_t *prime\n) {\n    unsigned int size = (nserial + sizeof(word_t) - 1)/sizeof(word_t);\n    if (size < prime->nwords_p) {\n        size = prime->nwords_p;\n    }\n    word_t tmp[size];\n    memset(tmp,0,sizeof(tmp));\n    \n    unsigned int i,j;\n    for (i=0; i*sizeof(word_t)<nserial; i++) {\n        word_t the = 0;\n        for (j=0; j<sizeof(word_t) && sizeof(word_t)*i+j < nserial; j++) {\n            the |= ((word_t)serial[sizeof(word_t)*i+j]) << (8*j);\n        }\n        tmp[i] = the;\n    }\n    \n    barrett_reduce(tmp,size,0,prime);\n    for (i=0; i<prime->nwords_p; i++) {\n        x[i] = tmp[i];\n    }\n    for (; i<size; i++) {\n        assert(!tmp[i]);\n    }\n}\n\nvoid\nbarrett_serialize (\n    uint8_t *serial,\n    const word_t *x,\n    uint32_t nserial\n) {\n    unsigned int i,j;\n    for (i=0; i*sizeof(word_t)<nserial; i++) {\n        for (j=0; j<sizeof(word_t); j++) {\n            serial[sizeof(word_t)*i+j] = x[i]>>(8*j);\n        }\n    }\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/bat/api_dh.h",
    "content": "/**\n * @file sizes.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief BATMAN / SUPERCOP glue for benchmarking.\n */\n\n#include <string.h>\n#include \"goldilocks.h\"\n\n#define PUBLICKEY_BYTES GOLDI_PUBLIC_KEY_BYTES\n#define SECRETKEY_BYTES GOLDI_PRIVATE_KEY_BYTES\n#define SHAREDSECRET_BYTES GOLDI_SHARED_SECRET_BYTES\n\n#define CRYPTO_PUBLICKEYBYTES PUBLICKEY_BYTES\n#define CRYPTO_SECRETKEYBYTES SECRETKEY_BYTES\n#define CRYPTO_BYTES SHAREDSECRET_BYTES\n#define PRIVATEKEY_BYTES SECRETKEY_BYTES\n#define CRYPTO_VERSION \"__TODAY__\"\n\n#define CRYPTO_DETERMINISTIC 1\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/bat/api_sign.h",
    "content": "/**\n * @file sizes.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief BATMAN / SUPERCOP glue for benchmarking.\n */\n\n#include <string.h>\n#include \"goldilocks.h\"\n\n#define PUBLICKEY_BYTES GOLDI_PUBLIC_KEY_BYTES\n#define SECRETKEY_BYTES GOLDI_PRIVATE_KEY_BYTES\n#define SIGNATURE_BYTES GOLDI_SIGNATURE_BYTES\n\n#define CRYPTO_PUBLICKEYBYTES PUBLICKEY_BYTES\n#define CRYPTO_SECRETKEYBYTES SECRETKEY_BYTES\n#define CRYPTO_BYTES SIGNATURE_BYTES\n#define PRIVATEKEY_BYTES SECRETKEY_BYTES\n#define CRYPTO_VERSION \"__TODAY__\"\n\n#define CRYPTO_DETERMINISTIC 1\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/bat/dh.c",
    "content": "/**\n * @file sizes.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief BATMAN / SUPERCOP glue for benchmarking.\n */\n\n#include <string.h>\n#include <stdlib.h>\n#include \"api.h\"\n#include \"crypto_dh.h\"\n\nint crypto_dh_keypair (\n    unsigned char pk[SECRETKEY_BYTES],\n    unsigned char sk[PUBLICKEY_BYTES]\n) {\n  int ret;\n  ret = goldilocks_init();\n  if (ret && ret != GOLDI_EALREADYINIT)\n    return ret;\n  if ((ret = goldilocks_keygen(\n      (struct goldilocks_private_key_t *)sk,\n      (struct goldilocks_public_key_t *)pk\n  ))) abort();\n  return ret;\n}\n\nint crypto_dh (\n    unsigned char s[SHAREDSECRET_BYTES],\n    const unsigned char pk[PUBLICKEY_BYTES],\n    const unsigned char sk[SECRETKEY_BYTES]\n) {\n  return goldilocks_shared_secret (\n        s,\n        (const struct goldilocks_private_key_t *)sk,\n        (const struct goldilocks_public_key_t *)pk\n  );\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/bat/sign.c",
    "content": "/**\n * @file sizes.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief BATMAN / SUPERCOP glue for benchmarking.\n */\n\n#include <stdlib.h>\n#include <string.h>\n#include \"api.h\"\n#include \"crypto_sign.h\"\n\nint crypto_sign_keypair (\n    unsigned char pk[SECRETKEY_BYTES],\n    unsigned char sk[PUBLICKEY_BYTES]\n) {\n  int ret;\n  ret = goldilocks_init();\n  if (ret && ret != GOLDI_EALREADYINIT)\n    return ret;\n  if ((ret = goldilocks_keygen(\n      (struct goldilocks_private_key_t *)sk,\n      (struct goldilocks_public_key_t *)pk\n  ))) abort();\n  return ret;\n}\n\nint crypto_sign (\n    unsigned char *sm,\n    unsigned long long *smlen,\n    const unsigned char *m,\n    unsigned long long mlen,\n    const unsigned char sk[SECRETKEY_BYTES]\n) {\n    unsigned char sig[SIGNATURE_BYTES];\n    int ret = goldilocks_sign(\n        sig, m, mlen,\n        (const struct goldilocks_private_key_t *)sk\n    );\n    if (!ret) {\n        memmove(sm + SIGNATURE_BYTES, m, mlen);\n        memcpy(sm, sig, SIGNATURE_BYTES);\n        *smlen = mlen + SIGNATURE_BYTES;\n    }\n    return ret ? -1 : 0;\n}\n\nint crypto_sign_open (\n    unsigned char *m,\n    unsigned long long *mlen,\n    const unsigned char *sm,\n    unsigned long long smlen,\n    const unsigned char pk[PUBLICKEY_BYTES]\n) {\n    int ret = goldilocks_verify(\n        sm, sm + SIGNATURE_BYTES, smlen - SIGNATURE_BYTES,\n        (const struct goldilocks_public_key_t *)pk\n    );\n    if (!ret) {\n        *mlen = smlen - SIGNATURE_BYTES;\n        memmove(m, sm + SIGNATURE_BYTES, *mlen);\n    }\n    return ret ? -1 : 0;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/crandom.c",
    "content": "/* Copyright (c) 2011 Stanford University.\n * Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n/* Chacha random number generator code copied from crandom */\n\n#include \"crandom.h\"\n#include \"intrinsics.h\"\n#include \"config.h\"\n#include \"magic.h\"\n\n#include <stdio.h>\n\nvolatile unsigned int crandom_features = 0;\n\nunsigned int crandom_detect_features(void) {\n  unsigned int out = GEN;\n  \n# if (defined(__i386__) || defined(__x86_64__))\n    u_int32_t a,b,c,d;\n    \n    a=1; __asm__(\"cpuid\" : \"+a\"(a), \"=b\"(b), \"=c\"(c), \"=d\"(d));\n    out |= GEN;\n    if (d & 1<<26) out |= SSE2;\n    if (d & 1<< 9) out |= SSSE3;\n    if (c & 1<<25) out |= AESNI;\n    if (c & 1<<28) out |= AVX;\n    if (b & 1<<5) out  |= AVX2;\n    if (c & 1<<30) out |= RDRAND;\n    \n    a=0x80000001; __asm__(\"cpuid\" : \"+a\"(a), \"=b\"(b), \"=c\"(c), \"=d\"(d));\n    if (c & 1<<11) out |= XOP;\n# endif\n  \n  return out;\n}\n\n\n\nINTRINSIC u_int64_t rdrand(int abort_on_fail) {\n    uint64_t out = 0;\n    int tries = 1000;\n    \n    if (HAVE(RDRAND)) {\n    # if defined(__x86_64__)\n        u_int64_t out, a=0;\n        for (; tries && !a; tries--) {\n            __asm__ __volatile__ (\n                \"rdrand %0\\n\\tsetc %%al\"\n                    : \"=r\"(out), \"+a\"(a) :: \"cc\"\n            );\n        }\n    # elif (defined(__i386__))\n        u_int32_t reg, a=0;\n        uint64_t out;\n        for (; tries && !a; tries--) {\n            __asm__ __volatile__ (\n                \"rdrand %0\\n\\tsetc %%al\"\n                    : \"=r\"(reg), \"+a\"(a) :: \"cc\"\n            );\n        }\n        out = reg; a = 0;\n        for (; tries && !a; tries--) {\n            __asm__ __volatile__ (\n                \"rdrand %0\\n\\tsetc %%al\"\n                    : \"=r\"(reg), \"+a\"(a) :: \"cc\"\n            );\n        }\n        out = out << 32 | reg;\n        return out;\n    # else\n        abort(); /* whut */\n    # endif\n    } else {\n        tries = 0;\n    }\n    \n    if (abort_on_fail && !tries) {\n        abort();\n    }\n    \n    return out;\n}\n\n\n/* ------------------------------- Vectorized code ------------------------------- */\n#define shuffle(x,i) _mm_shuffle_epi32(x, \\\n  i + ((i+1)&3)*4 + ((i+2)&3)*16 + ((i+3)&3)*64)\n\n#define add _mm_add_epi32\n#define add64 _mm_add_epi64\n\n#define NEED_XOP   (MIGHT_HAVE(XOP))\n#define NEED_SSSE3 (MIGHT_HAVE(SSSE3) && !MUST_HAVE(XOP))\n#define NEED_SSE2  (MIGHT_HAVE(SSE2)  && !MUST_HAVE(SSSE3))\n#define NEED_CONV  (!MUST_HAVE(SSE2))\n\n#if NEED_XOP\nstatic __inline__ void\nquarter_round_xop(\n    ssereg *a,\n    ssereg *b,\n    ssereg *c,\n    ssereg *d\n) {\n    *a = add(*a,*b); *d = xop_rotate(16, *d ^ *a);\n    *c = add(*c,*d); *b = xop_rotate(12, *b ^ *c);\n    *a = add(*a,*b); *d = xop_rotate(8,  *d ^ *a);\n    *c = add(*c,*d); *b = xop_rotate(7,  *b ^ *c);\n}\n#endif\n\n#if NEED_SSSE3\nstatic const ssereg shuffle8  = { 0x0605040702010003ull, 0x0E0D0C0F0A09080Bull };\nstatic const ssereg shuffle16 = { 0x0504070601000302ull, 0x0D0C0F0E09080B0Aull };\n  \nINTRINSIC ssereg ssse3_rotate_8(ssereg a) {\n    return _mm_shuffle_epi8(a, shuffle8);\n}\n  \nINTRINSIC ssereg ssse3_rotate_16(ssereg a) {\n    return _mm_shuffle_epi8(a, shuffle16);\n}\n  \nstatic __inline__ void\nquarter_round_ssse3(\n    ssereg *a,\n    ssereg *b,\n    ssereg *c,\n    ssereg *d\n) {\n    *a = add(*a,*b); *d = ssse3_rotate_16(*d ^ *a);\n    *c = add(*c,*d); *b = sse2_rotate(12, *b ^ *c);\n    *a = add(*a,*b); *d = ssse3_rotate_8( *d ^ *a);\n    *c = add(*c,*d); *b = sse2_rotate(7,  *b ^ *c);\n}\n#endif /* MIGHT_HAVE(SSSE3) && !MUST_HAVE(XOP) */\n\n#if NEED_SSE2\nstatic __inline__ void\nquarter_round_sse2(\n    ssereg *a,\n    ssereg *b,\n    ssereg *c,\n    ssereg *d\n) {\n    *a = add(*a,*b); *d = sse2_rotate(16, *d ^ *a);\n    *c = add(*c,*d); *b = sse2_rotate(12, *b ^ *c);\n    *a = add(*a,*b); *d = sse2_rotate(8,  *d ^ *a);\n    *c = add(*c,*d); *b = sse2_rotate(7,  *b ^ *c);\n}\n#endif\n\n#define DOUBLE_ROUND(qrf) { \\\n  qrf(&a1,&b1,&c1,&d1);     \\\n  qrf(&a2,&b2,&c2,&d2);     \\\n  b1 = shuffle(b1,1);       \\\n  c1 = shuffle(c1,2);       \\\n  d1 = shuffle(d1,3);       \\\n  b2 = shuffle(b2,1);       \\\n  c2 = shuffle(c2,2);       \\\n  d2 = shuffle(d2,3);       \\\n                            \\\n  qrf(&a1,&b1,&c1,&d1);     \\\n  qrf(&a2,&b2,&c2,&d2);     \\\n  b1 = shuffle(b1,3);       \\\n  c1 = shuffle(c1,2);       \\\n  d1 = shuffle(d1,1);       \\\n  b2 = shuffle(b2,3);       \\\n  c2 = shuffle(c2,2);       \\\n  d2 = shuffle(d2,1);       \\\n                          }\n                          \n#define OUTPUT_FUNCTION   { \\\n  output[0] = add(a1,aa);   \\\n  output[1] = add(b1,bb);   \\\n  output[2] = add(c1,cc);   \\\n  output[3] = add(d1,dd);   \\\n  output[4] = add(a2,aa);   \\\n  output[5] = add(b2,bb);   \\\n  output[6] = add(c2,add(cc,p)); \\\n  output[7] = add(d2,dd);   \\\n                            \\\n  output += 8;              \\\n                            \\\n  cc = add64(add64(cc,p), p); \\\n  a1 = a2 = aa;             \\\n  b1 = b2 = bb;             \\\n  c1 = cc; c2 = add64(cc,p);\\\n  d1 = d2 = dd;             \\\n                          }\n/* ------------------------------------------------------------------------------- */\n\nINTRINSIC u_int32_t rotate(int r, u_int32_t a) {\n    return a<<r ^ a>>(32-r);\n}\n\nstatic __inline__ __attribute__((unused)) void\nquarter_round(u_int32_t *a, u_int32_t *b, u_int32_t *c, u_int32_t *d) {\n    *a = *a + *b; *d = rotate(16, *d^*a);\n    *c = *c + *d; *b = rotate(12, *b^*c);\n    *a = *a + *b; *d = rotate(8,  *d^*a);\n    *c = *c + *d; *b = rotate(7,  *b^*c);\n}\n\nstatic void\ncrandom_chacha_expand(u_int64_t iv,\n                         u_int64_t ctr,\n                         int nr,\n                         int output_size,\n                         const unsigned char *key_,\n                         unsigned char *output_) {\n# if MIGHT_HAVE_SSE2\n    if (HAVE(SSE2)) {\n        ssereg *key = (ssereg *)key_;\n        ssereg *output = (ssereg *)output_;\n                 \n        ssereg a1 = key[0], a2 = a1, aa = a1,\n               b1 = key[1], b2 = b1, bb = b1,\n               c1 = {iv, ctr}, c2 = {iv, ctr+1}, cc = c1,\n               d1 = {0x3320646e61707865ull, 0x6b20657479622d32ull},\n               d2 = d1, dd = d1,\n               p = {0, 1};\n \n        int i,r;\n#   if (NEED_XOP)\n        if (HAVE(XOP)) {\n            for (i=0; i<output_size; i+=128) {\n                for (r=nr; r>0; r-=2)\n                    DOUBLE_ROUND(quarter_round_xop);\n                OUTPUT_FUNCTION;\n            }\n            return;\n        }\n#   endif\n#   if (NEED_SSSE3)\n        if (HAVE(SSSE3)) {\n            for (i=0; i<output_size; i+=128) {\n                for (r=nr; r>0; r-=2)\n                    DOUBLE_ROUND(quarter_round_ssse3);\n                OUTPUT_FUNCTION;\n            }\n            return;\n        }\n#   endif\n#   if (NEED_SSE2)\n        if (HAVE(SSE2)) {\n            for (i=0; i<output_size; i+=128) {\n                for (r=nr; r>0; r-=2)\n                    DOUBLE_ROUND(quarter_round_sse2);\n                OUTPUT_FUNCTION;\n            }\n            return;\n        }\n#   endif\n    }\n# endif\n\n# if NEED_CONV\n    {\n        const u_int32_t *key = (const u_int32_t *)key_;\n        u_int32_t\n        x[16],\n        input[16] = {\n            key[0], key[1], key[2], key[3],\n            key[4], key[5], key[6], key[7],\n            iv, iv>>32, ctr, ctr>>32,\n            0x61707865, 0x3320646e, 0x79622d32, 0x6b206574\n        },\n        *output = (u_int32_t *)output_;\n        int i, r;\n\n        for (i=0; i<output_size; i+= 64) {\n            for (r=0; r<16; r++) {\n                x[r] = input[r];\n            }\n                for (r=nr; r>0; r-=2) {\n                quarter_round(&x[0], &x[4],  &x[8], &x[12]);\n                quarter_round(&x[1], &x[5],  &x[9], &x[13]);\n                quarter_round(&x[2], &x[6], &x[10], &x[14]);\n                quarter_round(&x[3], &x[7], &x[11], &x[15]);\n\n                quarter_round(&x[0], &x[5], &x[10], &x[15]);\n                quarter_round(&x[1], &x[6], &x[11], &x[12]);\n                quarter_round(&x[2], &x[7],  &x[8], &x[13]);\n                quarter_round(&x[3], &x[4],  &x[9], &x[14]);\n            }\n            for (r=0; r<16; r++) {\n                output[r] = x[r] + input[r];\n            }\n\n            output += 16;\n            input[11] ++;\n            if (!input[11]) input[12]++;\n        }\n    }\n  \n#endif /* NEED_CONV */\n}\n\nint\ncrandom_init_from_file(\n    crandom_state_a_t state,\n    const char *filename,\n    int reseed_interval,\n    int reseeds_mandatory\n) {\n    state->fill = 0;\n    state->reseed_countdown = reseed_interval;\n    state->reseed_interval = reseed_interval;\n    state->ctr = 0;\n\n    state->randomfd = open(filename, O_RDONLY);\n    if (state->randomfd == -1) {\n        int err = errno;\n        return err ? err : -1;\n    }\n\n    ssize_t offset = 0, red;\n    do {\n        red = read(state->randomfd, state->seedBuffer + offset, 32 - offset);\n        if (red > 0) offset += red;\n    } while (red > 0 && offset < 32);\n\n    if (offset < 32) {\n        int err = errno;\n        return err ? err : -1;\n    }\n\n    memset(state->seedBuffer+32, 0, 96);\n\n    state->magic = CRANDOM_MAGIC;\n    state->reseeds_mandatory = reseeds_mandatory;\n\n    return 0;\n}\n\nvoid\ncrandom_init_from_buffer(\n    crandom_state_a_t state,\n    const char initial_seed[32]\n) {\n    memcpy(state->seedBuffer, initial_seed, 32);\n    memset(state->seedBuffer+32, 0, 96);\n    state->reseed_countdown = state->reseed_interval = state->fill = state->ctr = state->reseeds_mandatory = 0;\n    state->randomfd = -1;\n    state->magic = CRANDOM_MAGIC;\n}\n\nint\ncrandom_generate(\n    crandom_state_a_t state,\n    unsigned char *output,\n    unsigned long long length\n) {\n    /* the generator isn't seeded; maybe they ignored the return value of init_from_file */\n    if (unlikely(state->magic != CRANDOM_MAGIC)) {\n        abort();\n    }\n\n    int ret = 0;\n\n    /* \n     * Addition 5/21/2014.\n     *\n     * If this is used in an application inside a VM, and the VM\n     * is snapshotted and restored, then crandom_generate() would\n     * produce the same output.\n     * \n     * Of course, the real defense against this is \"don't do that\",\n     * but we mitigate it by the RDRAND and/or rdtsc() in the refilling\n     * code.  Since chacha is pseudorandom, when the attacker doesn't\n     * know the state, it's good enough if RDRAND/rdtsc() return\n     * different results.  However, if (part of) the request is filled\n     * from the buffer, this won't help.\n     *\n     * So, add a flag EXPERIMENT_CRANDOM_BUFFER_CUTOFF_BYTES which\n     * disables the buffer for requests larger than this size.\n     *\n     * Suggest EXPERIMENT_CRANDOM_BUFFER_CUTOFF_BYTES = 0, which\n     * disables the buffer.  But instead you can set it to say 16,\n     * so that pulls of at least 128 bits will be stirred.  This\n     * could still be a problem for eg 64-bit nonces, but those\n     * aren't entirely collision-resistant anyway.\n     *\n     * Heuristic: large requests are more likely to be \n     * cryptographically important, and the buffer doesn't impact\n     * their performance as much.  So if the request is bigger\n     * than a certain size, just drop the buffer on the floor.\n     *\n     * This code isn't activated if state->reseed_interval == 0,\n     * because then the PRNG is deterministic anyway.\n     *\n     * TODO: sample 128 bits out of RDRAND() instead of 64 bits.\n     * TODO: option to completely remove the buffer and fill?\n     * FUTURE: come up with a less band-aid-y solution to this problem.\n     */\n#ifdef EXPERIMENT_CRANDOM_BUFFER_CUTOFF_BYTES\n    if (state->reseed_interval\n#if EXPERIMENT_CRANDOM_CUTOFF_BYTES > 0\n        /* #if'd to a warning from -Wtype-limits in GCC when it's zero */\n        && length >= EXPERIMENT_CRANDOM_BUFFER_CUTOFF_BYTES\n#endif\n    ) {\n        state->fill = 0;\n    }\n#endif\n    \n    while (length) {\n        if (unlikely(state->fill <= 0)) {\n            uint64_t iv = 0;\n            if (state->reseed_interval) {\n                /* it's nondeterministic, stir in some rdrand() or rdtsc() */\n                if (HAVE(RDRAND)) {\n                    iv = rdrand(0);\n                    if (!iv) iv = rdtsc();\n                } else {\n                    iv = rdtsc();\n                }\n\n                state->reseed_countdown--;\n                if (unlikely(state->reseed_countdown <= 0)) {\n                    /* reseed by xoring in random state */\n                    state->reseed_countdown = state->reseed_interval;\n                    ssize_t offset = 0, red;\n                    do {\n                        red = read(state->randomfd, state->seedBuffer + 32 + offset, 32 - offset);\n                        if (red > 0) offset += red;\n                    } while (red > 0 && offset < 32);\n\n                    if (offset < 32) {\n                        /* The read failed.  Signal an error with the return code.\n                         *\n                         * If reseeds are mandatory, crash.\n                         *\n                         * If not, the generator is still probably safe to use, because reseeding\n                         * is basically over-engineering for caution.  Also, the user might ignore\n                         * the return code, so we still need to fill the request.\n                         *\n                         * Set reseed_countdown = 1 so we'll try again later.  If the user's\n                         * performance sucks as a result of ignoring the error code while calling\n                         * us in a loop, well, that's life.\n                         */\n                        if (state->reseeds_mandatory) {\n                            abort();\n                        }\n\n                        ret = errno;\n                        if (ret == 0) ret = -1;\n                        state->reseed_countdown = 1;\n                    }\n\n                    int i;\n                    for (i=0; i<32; i++) {\n                        /* Stir in the buffer.  If somehow the read failed, it'll be zeros. */\n                        state->seedBuffer[i] ^= state->seedBuffer[i+32];\n                    }\n                }\n            }\n            crandom_chacha_expand(iv,state->ctr,20,128,state->seedBuffer,state->seedBuffer);\n            state->ctr++;\n            state->fill = sizeof(state->seedBuffer)-32;\n        }\n\n        unsigned long long copy = (length > state->fill) ? state->fill : length;\n        state->fill -= copy;\n        memcpy(output, state->seedBuffer + 32 + state->fill, copy);\n        really_memset(state->seedBuffer + 32 + state->fill, 0, copy);\n        output += copy; length -= copy;\n    }\n\n    return ret;\n}\n\nvoid\ncrandom_destroy(\n    crandom_state_a_t state\n) { \n    if (state->magic == CRANDOM_MAGIC && state->randomfd) {\n        (void) close(state->randomfd);\n        /* Ignore the return value from close(), because what would it mean?\n         * \"Your random device, which you were reading over NFS, lost some data\"?\n         */\n    }\n\n    really_memset(state, 0, sizeof(*state));\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/ec_point.c",
    "content": "/**\n * @cond internal\n * @file ec_point.c\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @warning This file was automatically generated.\n *     Then it was edited by hand.  Good luck, have fun.\n */\n\n#include \"ec_point.h\"\n#include \"magic.h\"\n\nvoid\nadd_tw_niels_to_tw_extensible (\n    tw_extensible_a_t  d,\n    const tw_niels_a_t e\n) {\n    ANALYZE_THIS_ROUTINE_CAREFULLY;\n    field_a_t L0, L1;\n    field_sub ( L1, d->y, d->x );\n    field_mul ( L0, e->a, L1 );\n    field_add_nr ( L1, d->x, d->y );\n    field_mul ( d->y, e->b, L1 );\n    field_mul ( L1, d->u, d->t );\n    field_mul ( d->x, e->c, L1 );\n    field_add_nr ( d->u, L0, d->y );\n    field_subx_nr ( d->t, d->y, L0 );\n    field_subx_nr ( d->y, d->z, d->x );\n    field_add_nr ( L0, d->x, d->z );\n    field_mul ( d->z, L0, d->y );\n    field_mul ( d->x, d->y, d->t );\n    field_mul ( d->y, L0, d->u );\n}\n\nvoid\nsub_tw_niels_from_tw_extensible (\n    tw_extensible_a_t  d,\n    const tw_niels_a_t e\n) {\n    ANALYZE_THIS_ROUTINE_CAREFULLY;\n    field_a_t L0, L1;\n    field_subx_nr ( L1, d->y, d->x );\n    field_mul ( L0, e->b, L1 );\n    field_add_nr ( L1, d->x, d->y );\n    field_mul ( d->y, e->a, L1 );\n    field_mul ( L1, d->u, d->t );\n    field_mul ( d->x, e->c, L1 );\n    field_add_nr ( d->u, L0, d->y );\n    field_subx_nr ( d->t, d->y, L0 );\n    field_add_nr ( d->y, d->x, d->z );\n    field_subx_nr ( L0, d->z, d->x );\n    field_mul ( d->z, L0, d->y );\n    field_mul ( d->x, d->y, d->t );\n    field_mul ( d->y, L0, d->u );\n}\n\nvoid\nadd_tw_pniels_to_tw_extensible (\n    tw_extensible_a_t   e,\n    const tw_pniels_a_t a\n) {\n    field_a_t L0;\n    field_mul ( L0, e->z, a->z );\n    field_copy ( e->z, L0 );\n    add_tw_niels_to_tw_extensible( e, a->n );\n}\n\nvoid\nsub_tw_pniels_from_tw_extensible (\n    tw_extensible_a_t   e,\n    const tw_pniels_a_t a\n) {\n    field_a_t L0;\n    field_mul ( L0, e->z, a->z );\n    field_copy ( e->z, L0 );\n    sub_tw_niels_from_tw_extensible( e, a->n );\n}\n\nvoid\ndouble_tw_extensible (\n    tw_extensible_a_t a\n) {\n    ANALYZE_THIS_ROUTINE_CAREFULLY;\n    field_a_t L0, L1, L2;\n    field_sqr ( L2, a->x );\n    field_sqr ( L0, a->y );\n    field_add_nr ( a->u, L2, L0 );\n    field_add_nr ( a->t, a->y, a->x );\n    field_sqr ( L1, a->t );\n    field_sub_nr ( a->t, L1, a->u );\n    field_bias ( a->t, 3 );\n    IF32( field_weak_reduce( a->t ) );\n    field_subx_nr ( L1, L0, L2 );\n    field_sqr ( a->x, a->z );\n    field_bias ( a->x, 2-is32 /*is32 ? 1 : 2*/ );\n    field_add_nr ( a->z, a->x, a->x );\n    field_sub_nr ( L0, a->z, L1 );\n    IF32( field_weak_reduce( L0 ) );\n    field_mul ( a->z, L1, L0 );\n    field_mul ( a->x, L0, a->t );\n    field_mul ( a->y, L1, a->u );\n}\n\nvoid\ndouble_extensible (\n    extensible_a_t a\n) {\n    ANALYZE_THIS_ROUTINE_CAREFULLY;\n    field_a_t L0, L1, L2;\n    field_sqr ( L2, a->x );\n    field_sqr ( L0, a->y );\n    field_add_nr ( L1, L2, L0 );\n    field_add_nr ( a->t, a->y, a->x );\n    field_sqr ( a->u, a->t );\n    field_sub_nr ( a->t, a->u, L1 );\n    field_bias ( a->t, 3 );\n    IF32( field_weak_reduce( a->t ) );\n    field_subx_nr ( a->u, L0, L2 );\n    field_sqr ( a->x, a->z );\n    field_bias ( a->x, 2 );\n    field_add_nr ( a->z, a->x, a->x );\n    field_sub_nr ( L0, a->z, L1 );\n    IF32( field_weak_reduce( L0 ) );\n    field_mul ( a->z, L1, L0 );\n    field_mul ( a->x, L0, a->t );\n    field_mul ( a->y, L1, a->u );\n}\n\nvoid\ntwist_and_double (\n    tw_extensible_a_t    b,\n    const extensible_a_t a\n) {\n    field_a_t L0;\n    field_sqr ( b->x, a->x );\n    field_sqr ( b->z, a->y );\n    field_add ( b->u, b->x, b->z );\n    field_add ( b->t, a->y, a->x );\n    field_sqr ( L0, b->t );\n    field_sub ( b->t, L0, b->u );\n    field_sub ( L0, b->z, b->x );\n    field_sqr ( b->x, a->z );\n    field_add ( b->z, b->x, b->x );\n    field_sub ( b->y, b->z, b->u );\n    field_mul ( b->z, L0, b->y );\n    field_mul ( b->x, b->y, b->t );\n    field_mul ( b->y, L0, b->u );\n}\n\nvoid\nuntwist_and_double (\n    extensible_a_t          b,\n    const tw_extensible_a_t a\n) {\n    field_a_t L0;\n    field_sqr ( b->x, a->x );\n    field_sqr ( b->z, a->y );\n    field_add ( L0, b->x, b->z );\n    field_add ( b->t, a->y, a->x );\n    field_sqr ( b->u, b->t );\n    field_sub ( b->t, b->u, L0 );\n    field_sub ( b->u, b->z, b->x );\n    field_sqr ( b->x, a->z );\n    field_add ( b->z, b->x, b->x );\n    field_sub ( b->y, b->z, b->u );\n    field_mul ( b->z, L0, b->y );\n    field_mul ( b->x, b->y, b->t );\n    field_mul ( b->y, L0, b->u );\n}\n\nvoid\nconvert_tw_affine_to_tw_pniels (\n    tw_pniels_a_t       b,\n    const tw_affine_a_t a\n) {\n    field_sub ( b->n->a, a->y, a->x );\n    field_add ( b->n->b, a->x, a->y );\n    field_mul ( b->z, a->y, a->x );\n    field_mulw_scc_wr ( b->n->c, b->z, 2*EDWARDS_D-2 );\n    field_set_ui( b->z, 2 );\n}\n\nvoid\nconvert_tw_affine_to_tw_extensible (\n    tw_extensible_a_t   b,\n    const tw_affine_a_t a\n) {\n    field_copy ( b->x, a->x );\n    field_copy ( b->y, a->y );\n    field_set_ui( b->z, 1 );\n    field_copy ( b->t, a->x );\n    field_copy ( b->u, a->y );\n}\n\nvoid\nconvert_affine_to_extensible (\n    extensible_a_t   b,\n    const affine_a_t a\n) {\n    field_copy ( b->x, a->x );\n    field_copy ( b->y, a->y );\n    field_set_ui( b->z, 1 );\n    field_copy ( b->t, a->x );\n    field_copy ( b->u, a->y );\n}\n\nvoid\nconvert_tw_extensible_to_tw_pniels (\n    tw_pniels_a_t           b,\n    const tw_extensible_a_t a\n) {\n    field_sub ( b->n->a, a->y, a->x );\n    field_add ( b->n->b, a->x, a->y );\n    field_mul ( b->z, a->u, a->t );\n    field_mulw_scc_wr ( b->n->c, b->z, 2*EDWARDS_D-2 );\n    field_add ( b->z, a->z, a->z );\n}\n\nvoid\nconvert_tw_pniels_to_tw_extensible (\n    tw_extensible_a_t   e,\n    const tw_pniels_a_t d\n) {\n    field_add ( e->u, d->n->b, d->n->a );\n    field_sub ( e->t, d->n->b, d->n->a );\n    field_mul ( e->x, d->z, e->t );\n    field_mul ( e->y, d->z, e->u );\n    field_sqr ( e->z, d->z );\n}\n\nvoid\nconvert_tw_niels_to_tw_extensible (\n    tw_extensible_a_t  e,\n    const tw_niels_a_t d\n) {\n    field_add ( e->y, d->b, d->a );\n    field_sub ( e->x, d->b, d->a );\n    field_set_ui( e->z, 1 );\n    field_copy ( e->t, e->x );\n    field_copy ( e->u, e->y );\n}\n\nvoid\nmontgomery_step (\n    montgomery_a_t a\n) {\n    ANALYZE_THIS_ROUTINE_CAREFULLY;\n    field_a_t L0, L1;\n    field_add_nr ( L0, a->zd, a->xd );\n    field_subx_nr ( L1, a->xd, a->zd );\n    field_subx_nr ( a->zd, a->xa, a->za );\n    field_mul ( a->xd, L0, a->zd );\n    field_add_nr ( a->zd, a->za, a->xa );\n    field_mul ( a->za, L1, a->zd );\n    field_add_nr ( a->xa, a->za, a->xd );\n    field_sqr ( a->zd, a->xa );\n    field_mul ( a->xa, a->z0, a->zd );\n    field_subx_nr ( a->zd, a->xd, a->za );\n    field_sqr ( a->za, a->zd );\n    field_sqr ( a->xd, L0 );\n    field_sqr ( L0, L1 );\n    field_mulw_scc ( a->zd, a->xd, 1-EDWARDS_D ); /* FIXME PERF MULW */\n    field_subx_nr ( L1, a->xd, L0 );\n    field_mul ( a->xd, L0, a->zd );\n    field_sub_nr ( L0, a->zd, L1 );\n    field_bias ( L0, 4 - 2*is32 /*is32 ? 2 : 4*/ );\n    IF32( field_weak_reduce( L0 ) );\n    field_mul ( a->zd, L0, L1 );\n}\n\nvoid\ndeserialize_montgomery (\n    montgomery_a_t a,\n    const field_a_t sbz\n) {\n    field_sqr ( a->z0, sbz );\n    field_set_ui( a->xd, 1 );\n    field_set_ui( a->zd, 0 );\n    field_set_ui( a->xa, 1 );\n    field_copy ( a->za, a->z0 );\n}\n\nmask_t\nserialize_montgomery (\n    field_a_t             b,\n    const montgomery_a_t a,\n    const field_a_t       sbz\n) {\n    mask_t L4, L5, L6;\n    field_a_t L0, L1, L2, L3;\n    field_mul ( L3, a->z0, a->zd );\n    field_sub ( L1, L3, a->xd );\n    field_mul ( L3, a->za, L1 );\n    field_mul ( L2, a->z0, a->xd );\n    field_sub ( L1, L2, a->zd );\n    field_mul ( L0, a->xa, L1 );\n    field_add ( L2, L0, L3 );\n    field_sub ( L1, L3, L0 );\n    field_mul ( L3, L1, L2 );\n    field_copy ( L2, a->z0 );\n    field_addw ( L2, 1 );\n    field_sqr ( L0, L2 );\n    field_mulw_scc_wr ( L1, L0, EDWARDS_D-1 );\n    field_add ( L2, a->z0, a->z0 );\n    field_add ( L0, L2, L2 );\n    field_add ( L2, L0, L1 );\n    field_mul ( L0, a->xd, L2 );\n    L5 = field_is_zero( a->zd );\n    L6 = -   L5;\n    constant_time_mask ( L1, L0, sizeof(L1), L5 );\n    field_add ( L2, L1, a->zd );\n    L4 = ~   L5;\n    field_mul ( L1, sbz, L3 );\n    field_addw ( L1, L6 );\n    field_mul ( L3, L2, L1 );\n    field_mul ( L1, L3, L2 );\n    field_mul ( L2, L3, a->xd );\n    field_mul ( L3, L1, L2 );\n    field_isr ( L0, L3 );\n    field_mul ( L2, L1, L0 );\n    field_sqr ( L1, L0 );\n    field_mul ( L0, L3, L1 );\n    constant_time_mask ( b, L2, sizeof(L1), L4 );\n    field_subw( L0, 1 );\n    L5 = field_is_zero( L0 );\n    L4 = field_is_zero( sbz );\n    return    L5 |    L4;\n}\n\nvoid\nserialize_extensible (\n    field_a_t             b,\n    const extensible_a_t a\n) {\n    field_a_t L0, L1, L2;\n    field_sub ( L0, a->y, a->z );\n    field_add ( b, a->z, a->y );\n    field_mul ( L1, a->z, a->x );\n    field_mul ( L2, L0, L1 );\n    field_mul ( L1, L2, L0 );\n    field_mul ( L0, L2, b );\n    field_mul ( L2, L1, L0 );\n    field_isr ( L0, L2 );\n    field_mul ( b, L1, L0 );\n    field_sqr ( L1, L0 );\n    field_mul ( L0, L2, L1 );\n}\n\nvoid\nuntwist_and_double_and_serialize (\n    field_a_t                b,\n    const tw_extensible_a_t a\n) {\n    field_a_t L0, L1, L2, L3;\n    field_mul ( L3, a->y, a->x );\n    field_add ( b, a->y, a->x );\n    field_sqr ( L1, b );\n    field_add ( L2, L3, L3 );\n    field_sub ( b, L1, L2 );\n    field_sqr ( L2, a->z );\n    field_sqr ( L1, L2 );\n    field_add ( b, b, b );\n    field_mulw_scc ( L2, b, EDWARDS_D-1 );\n    field_mulw_scc ( b, L2, EDWARDS_D-1 );\n    field_mul ( L0, L2, L1 );\n    field_mul ( L2, b, L0 );\n    field_isr ( L0, L2 );\n    field_mul ( L1, b, L0 );\n    field_sqr ( b, L0 );\n    field_mul ( L0, L2, b );\n    field_mul ( b, L1, L3 );\n}\n\nvoid\ntwist_even (\n    tw_extensible_a_t    b,\n    const extensible_a_t a\n) {\n    field_sqr ( b->y, a->z );\n    field_sqr ( b->z, a->x );\n    field_sub ( b->u, b->y, b->z );\n    field_sub ( b->z, a->z, a->x );\n    field_mul ( b->y, b->z, a->y );\n    field_sub ( b->z, a->z, a->y );\n    field_mul ( b->x, b->z, b->y );\n    field_mul ( b->t, b->x, b->u );\n    field_mul ( b->y, b->x, b->t );\n    field_isr ( b->t, b->y );\n    field_mul ( b->u, b->x, b->t );\n    field_sqr ( b->x, b->t );\n    field_mul ( b->t, b->y, b->x );\n    field_mul ( b->x, a->x, b->u );\n    field_mul ( b->y, a->y, b->u );\n    field_addw ( b->y, -field_is_zero( b->z ) );\n    field_set_ui( b->z, 1 );\n    field_copy ( b->t, b->x );\n    field_copy ( b->u, b->y );\n}\n\nvoid\ntest_only_twist (\n    tw_extensible_a_t    b,\n    const extensible_a_t a\n) {\n    field_a_t L0, L1;\n    field_sqr ( b->u, a->z );\n    field_sqr ( b->y, a->x );\n    field_sub ( b->z, b->u, b->y );\n    field_add ( b->y, b->z, b->z );\n    field_add ( b->u, b->y, b->y );\n    field_sub ( b->y, a->z, a->x );\n    field_mul ( b->x, b->y, a->y );\n    field_sub ( b->z, a->z, a->y );\n    field_mul ( b->t, b->z, b->x );\n    field_mul ( L1, b->t, b->u );\n    field_mul ( b->x, b->t, L1 );\n    field_isr ( L0, b->x );\n    field_mul ( b->u, b->t, L0 );\n    field_sqr ( L1, L0 );\n    field_mul ( b->t, b->x, L1 );\n    field_add ( L1, a->y, a->x );\n    field_sub ( L0, a->x, a->y );\n    field_mul ( b->x, b->t, L0 );\n    field_add ( L0, b->x, L1 );\n    field_sub ( b->t, L1, b->x );\n    field_mul ( b->x, L0, b->u );\n    field_addw ( b->x, -field_is_zero( b->y ) );\n    field_mul ( b->y, b->t, b->u );\n    field_addw ( b->y, -field_is_zero( b->z ) );\n    field_set_ui( b->z, 1+field_is_zero( a->y ) );\n    field_copy ( b->t, b->x );\n    field_copy ( b->u, b->y );\n}\n\nmask_t\nis_even_pt (\n    const extensible_a_t a\n) {\n    field_a_t L0, L1, L2;\n    field_sqr ( L2, a->z );\n    field_sqr ( L1, a->x );\n    field_sub ( L0, L2, L1 );\n    return field_is_square ( L0 );\n}\n\nmask_t\nis_even_tw (\n    const tw_extensible_a_t a\n) {\n    field_a_t L0, L1, L2;\n    field_sqr ( L2, a->z );\n    field_sqr ( L1, a->x );\n    field_add ( L0, L1, L2 );\n    return field_is_square ( L0 );\n}\n\nmask_t\ndeserialize_affine (\n    affine_a_t     a,\n    const field_a_t sz\n) {\n    field_a_t L0, L1, L2, L3;\n    field_sqr ( L1, sz );\n    field_copy ( L3, L1 );\n    field_addw ( L3, 1 );\n    field_sqr ( L2, L3 );\n    field_mulw_scc ( a->x, L2, EDWARDS_D-1 ); /* PERF MULW */\n    field_add ( L3, L1, L1 ); /* FIXME: i adjusted the bias here, was it right? */\n    field_add ( a->y, L3, L3 );\n    field_add ( L3, a->y, a->x );\n    field_copy ( a->y, L1 );\n    field_neg ( a->x, a->y );\n    field_addw ( a->x, 1 );\n    field_mul ( a->y, a->x, L3 );\n    field_sqr ( L2, a->x );\n    field_mul ( L0, L2, a->y );\n    field_mul ( a->y, a->x, L0 );\n    field_isr ( L3, a->y );\n    field_mul ( a->y, L2, L3 );\n    field_sqr ( L2, L3 );\n    field_mul ( L3, L0, L2 );\n    field_mul ( L0, a->x, L3 );\n    field_add ( L2, a->y, a->y );\n    field_mul ( a->x, sz, L2 );\n    field_addw ( L1, 1 );\n    field_mul ( a->y, L1, L3 );\n    field_subw( L0, 1 );\n    return field_is_zero( L0 );\n}\n\nmask_t\ndeserialize_and_twist_approx (\n    tw_extensible_a_t a,\n    const field_a_t    sz\n) {\n    field_a_t L0, L1;\n    field_sqr ( a->z, sz );\n    field_copy ( a->y, a->z );\n    field_addw ( a->y, 1 );\n    field_sqr ( L0, a->y );\n    field_mulw_scc ( a->x, L0, EDWARDS_D-1 );\n    field_add ( a->y, a->z, a->z );\n    field_add ( a->u, a->y, a->y );\n    field_add ( a->y, a->u, a->x );\n    field_sqr ( a->x, a->z );\n    field_neg ( a->u, a->x );\n    field_addw ( a->u, 1 );\n    field_mul ( a->x, sqrt_d_minus_1, a->u );\n    field_mul ( L0, a->x, a->y );\n    field_mul ( a->t, L0, a->y );\n    field_mul ( a->u, a->x, a->t );\n    field_mul ( a->t, a->u, L0 );\n    field_mul ( a->y, a->x, a->t );\n    field_isr ( L0, a->y );\n    field_mul ( a->y, a->u, L0 );\n    field_sqr ( L1, L0 );\n    field_mul ( a->u, a->t, L1 );\n    field_mul ( a->t, a->x, a->u );\n    field_add ( a->x, sz, sz );\n    field_mul ( L0, a->u, a->x );\n    field_copy ( a->x, a->z );\n    field_neg ( L1, a->x );\n    field_addw ( L1, 1 );\n    field_mul ( a->x, L1, L0 );\n    field_mul ( L0, a->u, a->y );\n    field_addw ( a->z, 1 );\n    field_mul ( a->y, a->z, L0 );\n    field_subw( a->t, 1 );\n    mask_t ret = field_is_zero( a->t );\n    field_set_ui( a->z, 1 );\n    field_copy ( a->t, a->x );\n    field_copy ( a->u, a->y );\n    return ret;\n}\n\nvoid\nset_identity_extensible (\n    extensible_a_t a\n) {\n    field_set_ui( a->x, 0 );\n    field_set_ui( a->y, 1 );\n    field_set_ui( a->z, 1 );\n    field_set_ui( a->t, 0 );\n    field_set_ui( a->u, 0 );\n}\n\nvoid\nset_identity_tw_extensible (\n    tw_extensible_a_t a\n) {\n    field_set_ui( a->x, 0 );\n    field_set_ui( a->y, 1 );\n    field_set_ui( a->z, 1 );\n    field_set_ui( a->t, 0 );\n    field_set_ui( a->u, 0 );\n}\n\nvoid\nset_identity_affine (\n    affine_a_t a\n) {\n    field_set_ui( a->x, 0 );\n    field_set_ui( a->y, 1 );\n}\n\nmask_t\neq_affine (\n    const affine_a_t a,\n    const affine_a_t b\n) {\n    mask_t L1, L2;\n    field_a_t L0;\n    field_sub ( L0, a->x, b->x );\n    L2 = field_is_zero( L0 );\n    field_sub ( L0, a->y, b->y );\n    L1 = field_is_zero( L0 );\n    return    L2 &    L1;\n}\n\nmask_t\neq_extensible (\n    const extensible_a_t a,\n    const extensible_a_t b\n) {\n    mask_t L3, L4;\n    field_a_t L0, L1, L2;\n    field_mul ( L2, b->z, a->x );\n    field_mul ( L1, a->z, b->x );\n    field_sub ( L0, L2, L1 );\n    L4 = field_is_zero( L0 );\n    field_mul ( L2, b->z, a->y );\n    field_mul ( L1, a->z, b->y );\n    field_sub ( L0, L2, L1 );\n    L3 = field_is_zero( L0 );\n    return    L4 &    L3;\n}\n\nmask_t\neq_tw_extensible (\n    const tw_extensible_a_t a,\n    const tw_extensible_a_t b\n) {\n    mask_t L3, L4;\n    field_a_t L0, L1, L2;\n    field_mul ( L2, b->z, a->x );\n    field_mul ( L1, a->z, b->x );\n    field_sub ( L0, L2, L1 );\n    L4 = field_is_zero( L0 );\n    field_mul ( L2, b->z, a->y );\n    field_mul ( L1, a->z, b->y );\n    field_sub ( L0, L2, L1 );\n    L3 = field_is_zero( L0 );\n    return    L4 &    L3;\n}\n\nvoid\nelligator_2s_inject (\n    affine_a_t     a,\n    const field_a_t r\n) {\n    field_a_t L2, L3, L4, L5, L6, L7, L8;\n    field_sqr ( a->x, r );\n    field_sqr ( L3, a->x );\n    field_copy ( a->y, L3 );\n    field_neg ( L4, a->y );\n    field_addw ( L4, 1 );\n    field_sqr ( L2, L4 );\n    field_mulw ( L7, L2, (EDWARDS_D-1)*(EDWARDS_D-1) );\n    field_mulw ( L8, L3, 4*(EDWARDS_D+1)*(EDWARDS_D+1) );\n    field_add ( a->y, L8, L7 );\n    field_mulw ( L8, L2, 4*(EDWARDS_D)*(EDWARDS_D-1) );\n    field_sub ( L7, a->y, L8 );\n    field_mulw_scc ( L6, a->y, -2-2*EDWARDS_D );\n    field_mul ( L5, L7, L6 );\n        /* FIXME Stability problem (API stability, not crash) / possible bug.\n         * change to: p448_mul ( L5, L7, L4 ); ?\n         * This isn't a deep change: it's for sign adjustment.\n         * Need to check which one leads to the correct sign, probably by writig\n         * the invert routine.\n         *\n         * Also, the tool doesn't produce the optimal route to this.\n         * Let incoming L6 = a, L7 = e, L4 = b.\n         *\n         * Could compute be, (be)^2, (be)^3, a b^3 e^3, a b^3 e^4. = 4M+S\n         * instead of 6M.\n         */\n    field_mul ( L8, L5, L4 );\n    field_mul ( L4, L5, L6 );\n    field_mul ( L5, L7, L8 );\n    field_mul ( L8, L5, L4 );\n    field_mul ( L4, L7, L8 );\n    field_isr ( L6, L4 );\n    field_mul ( L4, L5, L6 );\n    field_sqr ( L5, L6 );\n    field_mul ( L6, L8, L5 );\n    field_mul ( L8, L7, L6 );\n    field_mul ( L7, L8, L6 );\n    field_copy ( L6, a->x );\n    field_addw ( a->x, 1 );\n    field_mul ( L5, a->x, L8 );\n    field_addw ( L5, 1 );\n    field_sub ( a->x, L6, L5 );\n    field_mul ( L5, L4, a->x );\n    field_mulw_scc_wr ( a->x, L5, -2-2*EDWARDS_D );\n    field_add ( L4, L3, L3 );\n    field_add ( L3, L4, L2 );\n    field_subw( L3, 2 );\n    field_mul ( L2, L3, L8 );\n    field_mulw ( L3, L2, 2*(EDWARDS_D+1)*(EDWARDS_D-1) );\n    field_add ( L2, L3, a->y );\n    field_mul ( a->y, L7, L2 );\n    field_addw ( a->y, -field_is_zero( L8 ) );\n}\n\nmask_t\nvalidate_affine (\n    const affine_a_t a\n) {\n    field_a_t L0, L1, L2, L3;\n    field_sqr ( L0, a->y );\n    field_sqr ( L1, a->x );\n    field_add ( L3, L1, L0 );\n    field_mulw_scc ( L2, L1, EDWARDS_D );\n    field_mul ( L1, L0, L2 );\n    field_addw ( L1, 1 );\n    field_sub ( L0, L3, L1 );\n    return field_is_zero( L0 );\n}\n\nmask_t\nvalidate_tw_extensible (\n    const tw_extensible_a_t ext\n) {\n    mask_t L4, L5;\n    field_a_t L0, L1, L2, L3;\n    /*\n     * Check invariant:\n     * 0 = -x*y + z*t*u\n     */\n    field_mul ( L1, ext->t, ext->u );\n    field_mul ( L2, ext->z, L1 );\n    field_mul ( L0, ext->x, ext->y );\n    field_neg ( L1, L0 );\n    field_add ( L0, L1, L2 );\n    L5 = field_is_zero( L0 );\n    /*\n     * Check invariant:\n     * 0 = d*t^2*u^2 + x^2 - y^2 + z^2 - t^2*u^2\n     */\n    field_sqr ( L2, ext->y );\n    field_neg ( L1, L2 );\n    field_sqr ( L0, ext->x );\n    field_add ( L2, L0, L1 );\n    field_sqr ( L3, ext->u );\n    field_sqr ( L0, ext->t );\n    field_mul ( L1, L0, L3 );\n    field_mulw_scc ( L3, L1, EDWARDS_D );\n    field_add ( L0, L3, L2 );\n    field_neg ( L3, L1 );\n    field_add ( L2, L3, L0 );\n    field_sqr ( L1, ext->z );\n    field_add ( L0, L1, L2 );\n    L4 = field_is_zero( L0 );\n    return    L5 & L4 &~ field_is_zero(ext->z);\n}\n\nmask_t\nvalidate_extensible (\n    const extensible_a_t ext\n) {\n    mask_t L4, L5;\n    field_a_t L0, L1, L2, L3;\n    /*\n     * Check invariant:\n     * 0 = d*t^2*u^2 - x^2 - y^2 + z^2\n     */\n    field_sqr ( L2, ext->y );\n    field_neg ( L1, L2 );\n    field_sqr ( L0, ext->z );\n    field_add ( L2, L0, L1 );\n    field_sqr ( L3, ext->u );\n    field_sqr ( L0, ext->t );\n    field_mul ( L1, L0, L3 );\n    field_mulw_scc ( L0, L1, EDWARDS_D );\n    field_add ( L1, L0, L2 );\n    field_sqr ( L0, ext->x );\n    field_neg ( L2, L0 );\n    field_add ( L0, L2, L1 );\n    L5 = field_is_zero( L0 );\n    /*\n     * Check invariant:\n     * 0 = -x*y + z*t*u\n     */\n    field_mul ( L1, ext->t, ext->u );\n    field_mul ( L2, ext->z, L1 );\n    field_mul ( L0, ext->x, ext->y );\n    field_neg ( L1, L0 );\n    field_add ( L0, L1, L2 );\n    L4 = field_is_zero( L0 );\n    return L5 & L4 &~ field_is_zero(ext->z);\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/goldilocks.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"config.h\"\n#include \"word.h\"\n\n#include <errno.h>\n\n#if GOLDILOCKS_USE_PTHREAD\n#include <pthread.h>\n#endif\n\n#include \"goldilocks.h\"\n#include \"ec_point.h\"\n#include \"scalarmul.h\"\n#include \"barrett_field.h\"\n#include \"crandom.h\"\n#include \"sha512.h\"\n#include \"intrinsics.h\"\n\n#ifndef GOLDILOCKS_RANDOM_INIT_FILE\n#define GOLDILOCKS_RANDOM_INIT_FILE \"/dev/urandom\"\n#endif\n\n#ifndef GOLDILOCKS_RANDOM_RESEED_INTERVAL\n#define GOLDILOCKS_RANDOM_RESEED_INTERVAL 10000\n#endif\n\n/* We'll check it ourselves */\n#ifndef GOLDILOCKS_RANDOM_RESEEDS_MANDATORY\n#define GOLDILOCKS_RANDOM_RESEEDS_MANDATORY 0\n#endif\n\n#define GOLDI_DIVERSIFY_BYTES 8\n\n\n#if FIELD_BYTES <= SHA512_OUTPUT_BYTES\n#define FIELD_HASH_BYTES SHA512_OUTPUT_BYTES\n#define field_hash_final sha512_final\n#else\n#define FIELD_HASH_BYTES (SHA512_OUTPUT_BYTES * ((FIELD_BYTES-1)/SHA512_OUTPUT_BYTES + 1))\nstatic inline void field_hash_final (\n    sha512_ctx_a_t ctx,\n    unsigned char out[FIELD_HASH_BYTES]\n) {\n    /* SHA PRNG I guess? I really should have used SHAKE */\n    int i;\n    for (i=0; i<= (FIELD_BYTES-1) / SHA512_OUTPUT_BYTES; i++) {\n        if (i)\n            sha512_update(ctx, &out[(i-1)*SHA512_OUTPUT_BYTES], SHA512_OUTPUT_BYTES);\n        sha512_final(ctx, &out[i*SHA512_OUTPUT_BYTES]);\n    }\n}\n#endif\n\n\n/* These are just unique identifiers */\nstatic const char *G_INITING = \"initializing\";\nstatic const char *G_INITED = \"initialized\";\nstatic const char *G_FAILED = \"failed to initialize\";\n\nstruct goldilocks_precomputed_public_key_t {\n    struct goldilocks_public_key_t pub;\n    struct fixed_base_table_t table;\n};\n\n/* FUTURE: auto. */\nstatic struct {\n    const char * volatile status;\n#if GOLDILOCKS_USE_PTHREAD\n    pthread_mutex_t mutex;\n#endif\n    tw_niels_a_t combs[COMB_N << (COMB_T-1)];\n    struct fixed_base_table_t fixed_base;\n    tw_niels_a_t wnafs[1<<WNAF_PRECMP_BITS];\n    crandom_state_a_t rand;\n} goldilocks_global;\n\nstatic inline mask_t\ngoldilocks_check_init(void) {\n    if (likely(goldilocks_global.status == G_INITED)) {\n        return MASK_SUCCESS;\n    } else {\n        return MASK_FAILURE;\n    }\n}\n\nint\ngoldilocks_init (void) {\n    const char *res = compare_and_swap(&goldilocks_global.status, NULL, G_INITING);\n    if (res == G_INITED) return GOLDI_EALREADYINIT;\n    else if (res) {\n        return GOLDI_ECORRUPT;\n    }\n\n#if GOLDILOCKS_USE_PTHREAD\n    int ret = pthread_mutex_init(&goldilocks_global.mutex, NULL);\n    if (ret) goto fail;\n#endif\n    \n    extensible_a_t ext;\n    tw_extensible_a_t text;\n    \n    /* Sanity check: the base point is on the curve. */\n    assert(validate_affine(goldilocks_base_point));\n    \n    /* Convert it to twisted Edwards. */\n    convert_affine_to_extensible(ext, goldilocks_base_point);\n    twist_even(text, ext);\n    \n    /* Precompute the tables. */\n    mask_t succ;\n\n    succ =  precompute_fixed_base(&goldilocks_global.fixed_base, text,\n        COMB_N, COMB_T, COMB_S, goldilocks_global.combs);\n    succ &= precompute_fixed_base_wnaf(goldilocks_global.wnafs, text, WNAF_PRECMP_BITS);\n    \n    int criff_res = crandom_init_from_file(goldilocks_global.rand,\n        GOLDILOCKS_RANDOM_INIT_FILE,\n        GOLDILOCKS_RANDOM_RESEED_INTERVAL,\n        GOLDILOCKS_RANDOM_RESEEDS_MANDATORY);\n        \n#ifdef SUPERCOP_WONT_LET_ME_OPEN_FILES\n    if (criff_res == EMFILE) {\n        crandom_init_from_buffer(goldilocks_global.rand, \"SUPERCOP won't let me open files\");\n        criff_res = 0;\n    }\n#endif\n        \n    if (succ & !criff_res) {\n        if (!bool_compare_and_swap(&goldilocks_global.status, G_INITING, G_INITED)) {\n            abort();\n        }\n        return 0;\n    }\n    \n    /* it failed! fall though... */\n\nfail:\n    if (!bool_compare_and_swap(&goldilocks_global.status, G_INITING, G_FAILED)) {\n        /* ok something is seriously wrong */\n        abort();\n    }\n    return -1;\n}\n\nint\ngoldilocks_derive_private_key (\n    struct goldilocks_private_key_t *privkey,\n    const unsigned char proto[GOLDI_SYMKEY_BYTES]\n) {\n    if (!goldilocks_check_init()) {\n        return GOLDI_EUNINIT;\n    }\n    \n    memcpy(&privkey->opaque[2*GOLDI_FIELD_BYTES], proto, GOLDI_SYMKEY_BYTES);\n    \n    unsigned char skb[FIELD_HASH_BYTES];\n    word_t sk[GOLDI_FIELD_WORDS];\n    assert(sizeof(skb) >= sizeof(sk));\n    \n    sha512_ctx_a_t ctx;\n    tw_extensible_a_t exta;\n    field_a_t pk;\n    \n    sha512_init(ctx);\n    sha512_update(ctx, (const unsigned char *)\"derivepk\", GOLDI_DIVERSIFY_BYTES);\n    sha512_update(ctx, proto, GOLDI_SYMKEY_BYTES);\n    field_hash_final(ctx, (unsigned char *)skb);\n\n    barrett_deserialize_and_reduce(sk, skb, sizeof(skb), &curve_prime_order);\n    barrett_serialize(privkey->opaque, sk, GOLDI_FIELD_BYTES);\n\n    scalarmul_fixed_base(exta, sk, GOLDI_SCALAR_BITS, &goldilocks_global.fixed_base);\n    untwist_and_double_and_serialize(pk, exta);\n    \n    field_serialize(&privkey->opaque[GOLDI_FIELD_BYTES], pk);\n    \n    return GOLDI_EOK;\n}\n\nvoid\ngoldilocks_underive_private_key (\n    unsigned char proto[GOLDI_SYMKEY_BYTES],\n    const struct goldilocks_private_key_t *privkey\n) {\n    memcpy(proto, &privkey->opaque[2*GOLDI_FIELD_BYTES], GOLDI_SYMKEY_BYTES);\n}\n\nint\ngoldilocks_keygen (\n    struct goldilocks_private_key_t *privkey,\n    struct goldilocks_public_key_t *pubkey\n) {\n    if (!goldilocks_check_init()) {\n        return GOLDI_EUNINIT;\n    }\n    \n    unsigned char proto[GOLDI_SYMKEY_BYTES];\n\n#if GOLDILOCKS_USE_PTHREAD\n    int ml_ret = pthread_mutex_lock(&goldilocks_global.mutex);\n    if (ml_ret) return ml_ret;\n#endif\n\n    int ret = crandom_generate(goldilocks_global.rand, proto, sizeof(proto));\n\n#if GOLDILOCKS_USE_PTHREAD\n    ml_ret = pthread_mutex_unlock(&goldilocks_global.mutex);\n    if (ml_ret) abort();\n#endif\n    \n    int ret2 = goldilocks_derive_private_key(privkey, proto);\n    if (!ret) ret = ret2;\n    \n    ret2 = goldilocks_private_to_public(pubkey, privkey);\n    if (!ret) ret = ret2;\n    \n    return ret ? GOLDI_ENODICE : GOLDI_EOK;\n}\n\nint\ngoldilocks_private_to_public (\n    struct goldilocks_public_key_t *pubkey,\n    const struct goldilocks_private_key_t *privkey\n) {\n    field_a_t pk;\n    mask_t msucc = field_deserialize(pk,&privkey->opaque[GOLDI_FIELD_BYTES]);\n    \n    if (msucc) {\n        field_serialize(pubkey->opaque, pk);\n        return GOLDI_EOK;\n    } else {\n        return GOLDI_ECORRUPT;\n    }\n}\n\nstatic int\ngoldilocks_shared_secret_core (\n    uint8_t shared[GOLDI_SHARED_SECRET_BYTES],\n    const struct goldilocks_private_key_t *my_privkey,\n    const struct goldilocks_public_key_t *your_pubkey,\n    const struct goldilocks_precomputed_public_key_t *pre\n) {\n    uint8_t gxy[GOLDI_FIELD_BYTES];\n    \n    /* This function doesn't actually need anything in goldilocks_global,\n     * so it doesn't check init.\n     */\n    \n    assert(GOLDI_SHARED_SECRET_BYTES == SHA512_OUTPUT_BYTES);\n    \n    word_t sk[GOLDI_FIELD_WORDS];\n    field_a_t pk;\n    \n    mask_t succ = field_deserialize(pk,your_pubkey->opaque), msucc = -1;\n    \n#ifdef EXPERIMENT_ECDH_STIR_IN_PUBKEYS\n    field_a_t sum, prod;\n    msucc &= field_deserialize(sum,&my_privkey->opaque[GOLDI_FIELD_BYTES]);\n    field_mul(prod,pk,sum);\n    field_add(sum,pk,sum);\n#endif\n    \n    msucc &= barrett_deserialize(sk,my_privkey->opaque,&curve_prime_order);\n    \n#if GOLDI_IMPLEMENT_PRECOMPUTED_KEYS\n    if (pre) {\n        tw_extensible_a_t tw;\n        succ &= scalarmul_fixed_base(tw, sk, GOLDI_SCALAR_BITS, &pre->table);\n        untwist_and_double_and_serialize(pk, tw);\n    } else {\n        succ &= montgomery_ladder(pk,pk,sk,GOLDI_SCALAR_BITS,1);\n    }\n#else\n    (void)pre;\n    succ &= montgomery_ladder(pk,pk,sk,GOLDI_SCALAR_BITS,1);\n#endif\n    \n    \n    field_serialize(gxy,pk);\n    \n    /* obliterate records of our failure by adjusting with obliteration key */\n    sha512_ctx_a_t ctx;\n    sha512_init(ctx);\n\n#ifdef EXPERIMENT_ECDH_OBLITERATE_CT\n    uint8_t oblit[GOLDI_DIVERSIFY_BYTES + GOLDI_SYMKEY_BYTES];\n    unsigned i;\n    for (i=0; i<GOLDI_DIVERSIFY_BYTES; i++) {\n        oblit[i] = \"noshared\"[i] & ~(succ&msucc);\n    }\n    for (i=0; i<GOLDI_SYMKEY_BYTES; i++) {\n        oblit[GOLDI_DIVERSIFY_BYTES+i] = my_privkey->opaque[2*GOLDI_FIELD_BYTES+i] & ~(succ&msucc);\n    }\n    sha512_update(ctx, oblit, sizeof(oblit));\n#endif\n    \n#ifdef EXPERIMENT_ECDH_STIR_IN_PUBKEYS\n    /* stir in the sum and product of the pubkeys. */\n    uint8_t a_pk[GOLDI_FIELD_BYTES];\n    field_serialize(a_pk, sum);\n    sha512_update(ctx, a_pk, GOLDI_FIELD_BYTES);\n    field_serialize(a_pk, prod);\n    sha512_update(ctx, a_pk, GOLDI_FIELD_BYTES);\n#endif\n       \n    /* stir in the shared key and finish */\n    sha512_update(ctx, gxy, GOLDI_FIELD_BYTES);\n    sha512_final(ctx, shared);\n    \n    return (GOLDI_ECORRUPT & ~msucc)\n        | (GOLDI_EINVAL & msucc &~ succ)\n        | (GOLDI_EOK & msucc & succ);\n}\n\nint\ngoldilocks_shared_secret (\n    uint8_t shared[GOLDI_SHARED_SECRET_BYTES],\n    const struct goldilocks_private_key_t *my_privkey,\n    const struct goldilocks_public_key_t *your_pubkey\n) {\n    return goldilocks_shared_secret_core(\n        shared,\n        my_privkey,\n        your_pubkey,\n        NULL\n    );\n}\n\n#if GOLDI_IMPLEMENT_SIGNATURES\nstatic void\ngoldilocks_derive_challenge(\n    word_t challenge[GOLDI_FIELD_WORDS],\n    const unsigned char pubkey[GOLDI_FIELD_BYTES],\n    const unsigned char gnonce[GOLDI_FIELD_BYTES],\n    const unsigned char *message,\n    uint64_t message_len\n) {\n    /* challenge = H(pk, [nonceG], message). */\n    unsigned char sha_out[FIELD_HASH_BYTES];\n    sha512_ctx_a_t ctx;\n    sha512_init(ctx);\n    sha512_update(ctx, pubkey, GOLDI_FIELD_BYTES);\n    sha512_update(ctx, gnonce, GOLDI_FIELD_BYTES);\n    sha512_update(ctx, message, message_len);\n    field_hash_final(ctx, sha_out);\n    barrett_deserialize_and_reduce(challenge, sha_out, sizeof(sha_out), &curve_prime_order);\n}\n\nint\ngoldilocks_sign (\n    uint8_t signature_out[GOLDI_SIGNATURE_BYTES],\n    const uint8_t *message,\n    uint64_t message_len,\n    const struct goldilocks_private_key_t *privkey\n) {\n    if (!goldilocks_check_init()) {\n        return GOLDI_EUNINIT;\n    }\n    \n    /* challenge = H(pk, [nonceG], message). */\n    word_t skw[GOLDI_FIELD_WORDS];\n    mask_t succ = barrett_deserialize(skw,privkey->opaque,&curve_prime_order);\n    if (!succ) {\n        really_memset(skw,0,sizeof(skw));\n        return GOLDI_ECORRUPT;\n    }\n        \n    /* Derive a nonce.  TODO: use HMAC. FUTURE: factor. */\n    unsigned char sha_out[FIELD_HASH_BYTES];\n    word_t tk[GOLDI_FIELD_WORDS];\n    sha512_ctx_a_t ctx;\n    sha512_init(ctx);\n    sha512_update(ctx, (const unsigned char *)\"signonce\", 8);\n    sha512_update(ctx, &privkey->opaque[2*GOLDI_FIELD_BYTES], GOLDI_SYMKEY_BYTES);\n    sha512_update(ctx, message, message_len);\n    sha512_update(ctx, &privkey->opaque[2*GOLDI_FIELD_BYTES], GOLDI_SYMKEY_BYTES);\n    field_hash_final(ctx, sha_out);\n    barrett_deserialize_and_reduce(tk, sha_out, sizeof(sha_out), &curve_prime_order);\n    \n    /* 4[nonce]G */\n    uint8_t signature_tmp[GOLDI_FIELD_BYTES];\n    tw_extensible_a_t exta;\n    field_a_t gsk;\n    scalarmul_fixed_base(exta, tk, GOLDI_SCALAR_BITS, &goldilocks_global.fixed_base);\n    double_tw_extensible(exta);\n    untwist_and_double_and_serialize(gsk, exta);\n    field_serialize(signature_tmp, gsk);\n    \n    word_t challenge[GOLDI_FIELD_WORDS];\n    goldilocks_derive_challenge (\n        challenge,\n        &privkey->opaque[GOLDI_FIELD_BYTES],\n        signature_tmp,\n        message,\n        message_len\n    );\n    \n    /* reduce challenge and sub. */\n    barrett_negate(challenge,GOLDI_FIELD_WORDS,&curve_prime_order);\n\n    barrett_mac(\n        tk,GOLDI_FIELD_WORDS,\n        challenge,GOLDI_FIELD_WORDS,\n        skw,GOLDI_FIELD_WORDS,\n        &curve_prime_order\n    );\n        \n    word_t carry = add_nr_ext_packed(tk,tk,GOLDI_FIELD_WORDS,tk,GOLDI_FIELD_WORDS,-1);\n    barrett_reduce(tk,GOLDI_FIELD_WORDS,carry,&curve_prime_order);\n        \n    memcpy(signature_out, signature_tmp, GOLDI_FIELD_BYTES);\n    barrett_serialize(signature_out+GOLDI_FIELD_BYTES, tk, GOLDI_FIELD_BYTES);\n    really_memset((unsigned char *)tk,0,sizeof(tk));\n    really_memset((unsigned char *)skw,0,sizeof(skw));\n    really_memset((unsigned char *)challenge,0,sizeof(challenge));\n    \n    /* response = 2(nonce_secret - sk*challenge)\n     * Nonce = 8[nonce_secret]*G\n     * PK = 2[sk]*G, except doubled (TODO)\n     * so [2] ( [response]G + 2[challenge]PK ) = Nonce\n     */\n    \n    return 0;\n}\n\nint\ngoldilocks_verify (\n    const uint8_t signature[GOLDI_SIGNATURE_BYTES],\n    const uint8_t *message,\n    uint64_t message_len,\n    const struct goldilocks_public_key_t *pubkey\n) {\n    if (!goldilocks_check_init()) {\n        return GOLDI_EUNINIT;\n    }\n    \n    field_a_t pk;\n    word_t s[GOLDI_FIELD_WORDS];\n    \n    mask_t succ = field_deserialize(pk,pubkey->opaque);\n    if (!succ) return GOLDI_EINVAL;\n    \n    succ = barrett_deserialize(s, &signature[GOLDI_FIELD_BYTES], &curve_prime_order);\n    if (!succ) return GOLDI_EINVAL;\n    \n    word_t challenge[GOLDI_FIELD_WORDS];\n    goldilocks_derive_challenge(challenge, pubkey->opaque, signature, message, message_len);\n    \n    field_a_t eph;\n    tw_extensible_a_t pk_text;\n    \n    /* deserialize [nonce]G */\n    succ = field_deserialize(eph, signature);\n    if (!succ) return GOLDI_EINVAL;\n    \n    succ = deserialize_and_twist_approx(pk_text, pk);\n    if (!succ) return GOLDI_EINVAL;\n    \n    linear_combo_var_fixed_vt( pk_text,\n        challenge, GOLDI_SCALAR_BITS,\n        s, GOLDI_SCALAR_BITS,\n        (const tw_niels_a_t*)goldilocks_global.wnafs, WNAF_PRECMP_BITS );\n    \n    untwist_and_double_and_serialize( pk, pk_text );\n\n    succ = field_eq(eph, pk);\n    return succ ? 0 : GOLDI_EINVAL;\n}\n#endif\n\n#if GOLDI_IMPLEMENT_PRECOMPUTED_KEYS\n\nstruct goldilocks_precomputed_public_key_t *\ngoldilocks_precompute_public_key (\n    const struct goldilocks_public_key_t *pub    \n) {\n    struct goldilocks_precomputed_public_key_t *precom;\n    precom = (struct goldilocks_precomputed_public_key_t *)\n        malloc(sizeof(*precom));\n    \n    if (!precom) return NULL;\n    \n    tw_extensible_a_t pk_text;\n    \n    field_a_t pk;\n    mask_t succ = field_deserialize(pk, pub->opaque);\n    if (!succ) {\n        free(precom);\n        return NULL;\n    }\n    \n    succ = deserialize_and_twist_approx(pk_text, pk);\n    if (!succ) {\n        free(precom);\n        return NULL;\n    }\n\n    succ =  precompute_fixed_base(&precom->table, pk_text,\n        COMB_N, COMB_T, COMB_S, NULL);\n    if (!succ) {\n        free(precom);\n        return NULL;\n    }\n    \n    memcpy(&precom->pub,pub,sizeof(*pub));\n    \n    return precom;\n}\n\nvoid\ngoldilocks_destroy_precomputed_public_key (\n    struct goldilocks_precomputed_public_key_t *precom\n) {\n    if (!precom) return;\n    destroy_fixed_base(&precom->table);\n    really_memset(&precom->pub.opaque, 0, sizeof(precom->pub));\n    free(precom);\n}\n\nint\ngoldilocks_verify_precomputed (\n    const uint8_t signature[GOLDI_SIGNATURE_BYTES],\n    const uint8_t *message,\n    uint64_t message_len,\n    const struct goldilocks_precomputed_public_key_t *pubkey\n) {\n    if (!goldilocks_check_init()) {\n        return GOLDI_EUNINIT;\n    }\n\n    word_t s[GOLDI_FIELD_WORDS];\n    mask_t succ = barrett_deserialize(s, &signature[GOLDI_FIELD_BYTES], &curve_prime_order);\n    if (!succ) return GOLDI_EINVAL;\n    \n    word_t challenge[GOLDI_FIELD_WORDS];\n    goldilocks_derive_challenge(challenge, pubkey->pub.opaque, signature, message, message_len);\n    \n    field_a_t eph, pk;\n    tw_extensible_a_t pk_text;\n    \n    /* deserialize [nonce]G */\n    succ = field_deserialize(eph, signature);\n    if (!succ) return GOLDI_EINVAL;\n        \n    succ = linear_combo_combs_vt (\n        pk_text,\n        challenge, GOLDI_SCALAR_BITS, &pubkey->table,\n        s, GOLDI_SCALAR_BITS, &goldilocks_global.fixed_base\n    );\n    if (!succ) return GOLDI_EINVAL;\n    \n    untwist_and_double_and_serialize( pk, pk_text );\n\n    succ = field_eq(eph, pk);\n    return succ ? 0 : GOLDI_EINVAL;\n}\n\nint\ngoldilocks_shared_secret_precomputed (\n    uint8_t shared[GOLDI_SHARED_SECRET_BYTES],\n    const struct goldilocks_private_key_t *my_privkey,\n    const struct goldilocks_precomputed_public_key_t *your_pubkey\n) {\n    return goldilocks_shared_secret_core(\n        shared,\n        my_privkey,\n        &your_pubkey->pub,\n        your_pubkey\n    );\n}\n\n#endif /* GOLDI_IMPLEMENT_PRECOMPUTED_KEYS */\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/barrett_field.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __BARRETT_FIELD_H__\n#define __BARRETT_FIELD_H__ 1\n\n/**\n * @file barrett_field.h\n * @brief Slow routines for generic primes in Barrett form.\n *\n * @warning These routines are very slow, roughly implemented, and should be made more\n * flexible in the future.  I might even outright switch to Montgomery form.\n */\n\n#include \"word.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n    \n/**\n * @brief A Barrett-form prime, 2^k - c.\n * @todo Support primes of other forms.\n */\nstruct barrett_prime_t {\n    uint32_t nwords_p;   /**< The number of bits in p, i.e. ceiling((k-1) / WORD_BITS) */\n    uint32_t p_shift;    /**< c mod WORD_BITS. */\n    uint32_t nwords_lo;  /**< The number of nonzero low words. */\n    const word_t *p_lo;  /**< The low words. */\n};\n\n/**\n * The Goldilocks prime.  I'm not sure this is the right place for it, but oh well.\n */\nextern const struct barrett_prime_t curve_prime_order;\n\n/**\n * Reduce a number (with optional high carry word) mod p.\n *\n * @param [in,out] a The value to be reduced.\n * @param [in] nwords_a The number of words in a.\n * @param [in] a_carry A high word to be carried into the computation.\n * @param [in] prime The Barrett prime.\n */\nvoid\nbarrett_reduce(\n    word_t *a,\n    uint32_t nwords_a,\n    word_t a_carry,\n    const struct barrett_prime_t *prime\n);\n    \n/**\n * out = a+(c&mask), returning a carry.\n *\n * @param [out] out The output, of length nwords_a.\n * @param [in] a The \"always\" addend.\n * @param [in] nwords_a The number of words in a.\n * @param [in] c The \"sometimes\" addend.\n * @param [in] nwords_c The number of words in c.\n * @param [in] mask A mask of whether to add or not.\n * @return A carry word.\n */\nword_t\nadd_nr_ext_packed(\n    word_t *out,\n    const word_t *a,\n    uint32_t nwords_a,\n    const word_t *c,\n    uint32_t nwords_c,\n    word_t mask\n);\n  \n/**\n * out = a-(c&mask), returning a borrow.\n *\n * @param [out] out The output, of length nwords_a.\n * @param [in] a The \"always\" minuend.\n * @param [in] nwords_a The number of words in a.\n * @param [in] c The \"sometimes\" subtrahend.\n * @param [in] nwords_c The number of words in c.\n * @param [in] mask A mask of whether to add or not.\n * @return A borrow word.\n */  \nword_t\nsub_nr_ext_packed(\n    word_t *out,\n    const word_t *a,\n    uint32_t nwords_a,\n    const word_t *c,\n    uint32_t nwords_c,\n    word_t mask\n);\n\n/**\n * a -> reduce(-a) mod p\n *\n * @param [in] a The value to be reduced and negated.\n * @param [in] nwords_a The number of words in a.  Must be >= nwords_p.\n * @param [in] prime The prime.\n */   \nvoid\nbarrett_negate (\n    word_t *a,\n    uint32_t nwords_a,\n    const struct barrett_prime_t *prime\n);\n\n/*\n * If doMac, accum = accum + a*b mod p.\n * Otherwise, accum = a*b mod p.\n *\n * This function is not __restrict__; you may pass accum,\n * a, b, etc all from the same location.\n */\nvoid\nbarrett_mul_or_mac(\n    word_t *accum,\n    uint32_t nwords_accum,\n\n    const word_t *a,\n    uint32_t nwords_a,\n\n    const word_t *b,\n    uint32_t nwords_b,\n\n    const struct barrett_prime_t *prime,\n    \n    mask_t doMac\n);\n    \nstatic inline void\nbarrett_mul(\n    word_t *out,\n    uint32_t nwords_out,\n\n    const word_t *a,\n    uint32_t nwords_a,\n\n    const word_t *b,\n    uint32_t nwords_b,\n\n    const struct barrett_prime_t *prime\n) {\n    barrett_mul_or_mac(out,nwords_out,a,nwords_a,b,nwords_b,prime,0);\n}\n    \nstatic inline void\nbarrett_mac(\n    word_t *out,\n    uint32_t nwords_out,\n\n    const word_t *a,\n    uint32_t nwords_a,\n\n    const word_t *b,\n    uint32_t nwords_b,\n\n    const struct barrett_prime_t *prime\n) {\n    barrett_mul_or_mac(out,nwords_out,a,nwords_a,b,nwords_b,prime,-(mask_t)1);\n}\n\nmask_t\nbarrett_deserialize (\n    word_t *x,\n    const uint8_t *serial,\n    const struct barrett_prime_t *prime\n);\n\nvoid\nbarrett_serialize (\n    uint8_t *serial,\n    const word_t *x,\n    uint32_t nserial\n);\n    \nvoid\nbarrett_deserialize_and_reduce (\n    word_t *x,\n    const uint8_t *serial,\n    uint32_t nserial,\n    const struct barrett_prime_t *prime\n);\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __BARRETT_FIELD_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/constant_time.h",
    "content": "/**\n * @file constant_time.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n *\n * @brief Constant-time routines.\n */\n\n#ifndef __CONSTANT_TIME_H__\n#define __CONSTANT_TIME_H__ 1\n\n#include \"word.h\"\n#include <string.h>\n\n/*\n * Constant-time operations on hopefully-compile-time-sized memory\n * regions.  Needed for flexibility / demagication: not all fields\n * have sizes which are multiples of the vector width, necessitating\n * a change from the Ed448 versions.\n *\n * These routines would be much simpler to define at the byte level,\n * but if not vectorized they would be a significant fraction of the\n * runtime.  Eg on NEON-less ARM, constant_time_lookup is like 15% of\n * signing time, vs 6% on Haswell with its fancy AVX2 vectors.\n *\n * If the compiler could do a good job of autovectorizing the code,\n * we could just leave it with the byte definition.  But that's unlikely\n * on most deployed compilers, especially if you consider that pcmpeq[size]\n * is much faster than moving a scalar to the vector unit (which is what\n * a naive autovectorizer will do with constant_time_lookup on Intel).\n *\n * Instead, we're putting our trust in the loop unroller and unswitcher.\n * \n * TODO: verify correctness and performance on each platform, to make sure\n * that there are no regressions.\n */\n\n\n/**\n * Unaligned big (vector?) register.\n */\ntypedef struct {\n    big_register_t unaligned;\n} __attribute__((packed)) unaligned_br_t;\n\n/**\n * Unaligned word register, for architectures where that matters.\n */\ntypedef struct {\n    word_t unaligned;\n} __attribute__((packed)) unaligned_word_t;\n\n/**\n * @brief Constant-time conditional swap.\n *\n * If doswap, then swap elem_bytes between *a and *b.\n *\n * *a and *b must not alias.  Also, they must be at least as aligned\n * as their sizes, if the CPU cares about that sort of thing.\n */\nstatic __inline__ void\n__attribute__((unused,always_inline))\nconstant_time_cond_swap (\n    void *__restrict__ a_,\n    void *__restrict__ b_,\n    word_t elem_bytes,\n    mask_t doswap\n) {\n    word_t k;\n    unsigned char *a = (unsigned char *)a_;\n    unsigned char *b = (unsigned char *)b_;\n    \n    big_register_t br_mask = br_set_to_mask(doswap);\n    for (k=0; k<=elem_bytes-sizeof(big_register_t); k+=sizeof(big_register_t)) {\n        if (elem_bytes % sizeof(big_register_t)) {\n            /* unaligned */\n            big_register_t xor =\n                ((unaligned_br_t*)(&a[k]))->unaligned\n              ^ ((unaligned_br_t*)(&b[k]))->unaligned;\n            xor &= br_mask;\n            ((unaligned_br_t*)(&a[k]))->unaligned ^= xor;\n            ((unaligned_br_t*)(&b[k]))->unaligned ^= xor;\n        } else {\n            /* aligned */\n            big_register_t xor =\n                *((big_register_t*)(&a[k]))\n              ^ *((big_register_t*)(&b[k]));\n            xor &= br_mask;\n            *((big_register_t*)(&a[k])) ^= xor;\n            *((big_register_t*)(&b[k])) ^= xor;\n        }\n    }\n\n    if (elem_bytes % sizeof(big_register_t) >= sizeof(word_t)) {\n        for (; k<=elem_bytes-sizeof(word_t); k+=sizeof(word_t)) {\n            if (elem_bytes % sizeof(word_t)) {\n                /* unaligned */\n                word_t xor =\n                    ((unaligned_word_t*)(&a[k]))->unaligned\n                  ^ ((unaligned_word_t*)(&b[k]))->unaligned;\n                xor &= doswap;\n                ((unaligned_word_t*)(&a[k]))->unaligned ^= xor;\n                ((unaligned_word_t*)(&b[k]))->unaligned ^= xor;\n            } else {\n                /* aligned */\n                word_t xor =\n                    *((word_t*)(&a[k]))\n                  ^ *((word_t*)(&b[k]));\n                xor &= doswap;\n                *((word_t*)(&a[k])) ^= xor;\n                *((word_t*)(&b[k])) ^= xor;\n            }\n        }\n    }\n    \n    if (elem_bytes % sizeof(word_t)) {\n        for (; k<elem_bytes; k+=1) {\n            unsigned char xor = a[k] ^ b[k];\n            xor &= doswap;\n            a[k] ^= xor;\n            b[k] ^= xor;\n        }\n    }\n}\n\n/**\n * @brief Constant-time equivalent of memcpy(out, table + elem_bytes*idx, elem_bytes);\n *\n * The table must be at least as aligned as elem_bytes.  The output must be word aligned,\n * and if the input size is vector aligned it must also be vector aligned.\n *\n * The table and output must not alias.\n */\nstatic __inline__ void\n__attribute__((unused,always_inline))\nconstant_time_lookup (\n    void *__restrict__ out_,\n    const void *table_,\n    word_t elem_bytes,\n    word_t n_table,\n    word_t idx\n) {\n    big_register_t big_one = br_set_to_mask(1), big_i = br_set_to_mask(idx);\n    \n    /* Can't do pointer arithmetic on void* */\n    unsigned char *out = (unsigned char *)out_;\n    const unsigned char *table = (const unsigned char *)table_;\n    word_t j,k;\n    \n    memset(out, 0, elem_bytes);\n    for (j=0; j<n_table; j++, big_i-=big_one) {        \n        big_register_t br_mask = br_is_zero(big_i);\n        for (k=0; k<=elem_bytes-sizeof(big_register_t); k+=sizeof(big_register_t)) {\n            if (elem_bytes % sizeof(big_register_t)) {\n                /* unaligned */\n                ((unaligned_br_t *)(out+k))->unaligned\n\t\t\t|= br_mask & ((const unaligned_br_t*)(&table[k+j*elem_bytes]))->unaligned;\n            } else {\n                /* aligned */\n                *(big_register_t *)(out+k) |= br_mask & *(const big_register_t*)(&table[k+j*elem_bytes]);\n            }\n        }\n\n        word_t mask = word_is_zero(idx^j);\n        if (elem_bytes % sizeof(big_register_t) >= sizeof(word_t)) {\n            for (; k<=elem_bytes-sizeof(word_t); k+=sizeof(word_t)) {\n                if (elem_bytes % sizeof(word_t)) {\n                    /* input unaligned, output aligned */\n                    *(word_t *)(out+k) |= mask & ((const unaligned_word_t*)(&table[k+j*elem_bytes]))->unaligned;\n                } else {\n                    /* aligned */\n                    *(word_t *)(out+k) |= mask & *(const word_t*)(&table[k+j*elem_bytes]);\n                }\n            }\n        }\n        \n        if (elem_bytes % sizeof(word_t)) {\n            for (; k<elem_bytes; k+=1) {\n                out[k] |= mask & table[k+j*elem_bytes];\n            }\n        }\n    }\n}\n\n/**\n * @brief Constant-time a = b&mask.\n *\n * The input and output must be at least as aligned as elem_bytes.\n */\nstatic __inline__ void\n__attribute__((unused,always_inline))\nconstant_time_mask (\n    void *__restrict__ a_,\n    const void *b_,\n    word_t elem_bytes,\n    mask_t mask\n) {\n    unsigned char *a = (unsigned char *)a_;\n    const unsigned char *b = (const unsigned char *)b_;\n    \n    word_t k;\n    big_register_t br_mask = br_set_to_mask(mask);\n    for (k=0; k<=elem_bytes-sizeof(big_register_t); k+=sizeof(big_register_t)) {\n        if (elem_bytes % sizeof(big_register_t)) {\n            /* unaligned */\n            ((unaligned_br_t*)(&a[k]))->unaligned = br_mask & ((const unaligned_br_t*)(&b[k]))->unaligned;\n        } else {\n            /* aligned */\n            *(big_register_t *)(a+k) = br_mask & *(const big_register_t*)(&b[k]);\n        }\n    }\n\n    if (elem_bytes % sizeof(big_register_t) >= sizeof(word_t)) {\n        for (; k<=elem_bytes-sizeof(word_t); k+=sizeof(word_t)) {\n            if (elem_bytes % sizeof(word_t)) {\n                /* unaligned */\n                ((unaligned_word_t*)(&a[k]))->unaligned = mask & ((const unaligned_word_t*)(&b[k]))->unaligned;\n            } else {\n                /* aligned */\n                *(word_t *)(a+k) = mask & *(const word_t*)(&b[k]);\n            }\n        }\n    }\n    \n    if (elem_bytes % sizeof(word_t)) {\n        for (; k<elem_bytes; k+=1) {\n            a[k] = mask & b[k];\n        }\n    }\n}\n\n/**\n * @brief Constant-time a = mask ? bTrue : bFalse.\n *\n * The input and output must be at least as aligned as elem_bytes.\n *\n * Note that the output is not __restrict__, but if it overlaps either\n * input, it must be equal and not partially overlap.\n */\nstatic __inline__ void\n__attribute__((unused,always_inline))\nconstant_time_select (\n    void *a_,\n    const void *bTrue_,\n    const void *bFalse_,\n    word_t elem_bytes,\n    mask_t mask\n) {\n    unsigned char *a = (unsigned char *)a_;\n    const unsigned char *bTrue = (const unsigned char *)bTrue_;\n    const unsigned char *bFalse = (const unsigned char *)bFalse_;\n    \n    word_t k;\n    big_register_t br_mask = br_set_to_mask(mask);\n    for (k=0; k<=elem_bytes-sizeof(big_register_t); k+=sizeof(big_register_t)) {\n        if (elem_bytes % sizeof(big_register_t)) {\n            /* unaligned */\n            ((unaligned_br_t*)(&a[k]))->unaligned =\n\t\t  ( br_mask & ((const unaligned_br_t*)(&bTrue [k]))->unaligned)\n\t\t| (~br_mask & ((const unaligned_br_t*)(&bFalse[k]))->unaligned);\n        } else {\n            /* aligned */\n            *(big_register_t *)(a+k) =\n\t\t  ( br_mask & *(const big_register_t*)(&bTrue [k]))\n\t\t| (~br_mask & *(const big_register_t*)(&bFalse[k]));\n        }\n    }\n\n    if (elem_bytes % sizeof(big_register_t) >= sizeof(word_t)) {\n        for (; k<=elem_bytes-sizeof(word_t); k+=sizeof(word_t)) {\n            if (elem_bytes % sizeof(word_t)) {\n                /* unaligned */\n                ((unaligned_word_t*)(&a[k]))->unaligned =\n\t\t    ( mask & ((const unaligned_word_t*)(&bTrue [k]))->unaligned)\n\t\t  | (~mask & ((const unaligned_word_t*)(&bFalse[k]))->unaligned);\n            } else {\n                /* aligned */\n                *(word_t *)(a+k) =\n\t\t    ( mask & *(const word_t*)(&bTrue [k]))\n\t\t  | (~mask & *(const word_t*)(&bFalse[k]));\n            }\n        }\n    }\n    \n    if (elem_bytes % sizeof(word_t)) {\n        for (; k<elem_bytes; k+=1) {\n            a[k] = ( mask & bTrue[k]) | (~mask & bFalse[k]);\n        }\n    }\n}\n\n#endif /* __CONSTANT_TIME_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/crandom.h",
    "content": "/* Copyright (c) 2011 Stanford University.\n * Copyright (c) 2014-2015 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n/**\n * @file crandom.h\n * @author Mike Hamburg\n * @brief A miniature version of the (as of yet incomplete) crandom project.\n */\n\n#ifndef __GOLDI_CRANDOM_H__\n#define __GOLDI_CRANDOM_H__ 1\n\n#define _XOPEN_SOURCE 600\n#include <stdint.h>  /* for uint64_t */\n#include <fcntl.h>   /* for open */\n#include <errno.h>   /* for returning errors after open */\n#include <stdlib.h>  /* for abort */\n#include <string.h>  /* for memcpy */\n#include <strings.h> /* for bzero */\n#include <unistd.h>  /* for read */\n\n/**\n * @brief The state of a crandom generator.\n *\n * This object is opaque.  It is not protected by a lock, and so must\n * not be accessed by multiple threads at the same time.\n */\nstruct crandom_state_t {\n    /** @privatesection */\n    /* unsigned char seed[32]; */\n    /* unsigned char buffer[96]; */\n    unsigned char seedBuffer[32+96];\n    uint64_t ctr;\n    uint64_t magic;\n    unsigned int fill;\n    int reseed_countdown;\n    int reseed_interval;\n    int reseeds_mandatory;\n    int randomfd;\n} __attribute__((aligned(16))) ;\ntypedef struct crandom_state_t crandom_state_a_t[1];\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Initialize a crandom state from the chosen file.\n * \n * This function initializes a state from a given state file, or\n * from a random device (eg. /dev/random or /dev/urandom).\n *\n * You must check the return value of this function.\n *\n * @param [out] state The crandom state variable to initalize.\n * @param [in] filename The name of the seed file or random device.\n * @param [in] reseed_interval The number of 96-byte blocks which can be\n *        generated without reseeding.  Suggest 10000.\n * @param [in] reseeds_mandatory If nonzero, call abort() if a reseed fails.\n *        Suggest 1.\n *\n * @retval 0 Success.\n * @retval Nonzero An error to be interpreted by strerror().\n */\nint\ncrandom_init_from_file (\n    crandom_state_a_t state,\n    const char *filename,\n    int reseed_interval,\n    int reseeds_mandatory\n) __attribute__((warn_unused_result));\n\n\n/**\n * Initialize a crandom state from a buffer, for deterministic operation.\n * \n * This function is used to initialize a crandom state deterministically,\n * mainly for testing purposes.  It can also be used to expand a secret\n * random value deterministically.\n *\n * @warning The crandom implementation is not guaranteed to be stable.\n * That is, a later release might produce a different random stream from\n * the same seed.\n *\n * @param [out] state The crandom state variable to initalize.\n * @param [in] initial_seed The seed value.\n */\nvoid\ncrandom_init_from_buffer (\n    crandom_state_a_t state,\n    const char initial_seed[32]\n);\n\n/**\n * Fill the output buffer with random data.\n *\n * This function uses the given crandom state to produce pseudorandom data\n * in the output buffer.\n *\n * This function may perform reads from the state's random device if it needs\n * to reseed.  This could block if that file is a blocking source, such as\n * a pipe or /dev/random on Linux.  If reseeding fails and the state has\n * reseeds_mandatory set, this function will call abort().  Otherwise, it will\n * return an error code, but it will still randomize the buffer.\n *\n * If called on a corrupted, uninitialized or destroyed state, this function\n * will abort().\n *\n * @warning This function is not thread-safe with respect to the state.  Don't\n * call it from multiple threads with the same state at the same time.\n *\n * @param [inout] state The crandom state to use for generation.\n * @param [out] output The buffer to fill with random data.\n * @param [in] length The length of the buffer.\n *\n * @retval 0 Success.\n * @retval Nonezero A non-mandatory reseed operation failed.\n */\nint\ncrandom_generate (\n    crandom_state_a_t state,\n    unsigned char *output,\n    unsigned long long length\n);\n\n/**\n * Destroy the random state.  Further calls to crandom_generate() on that state\n * will abort().\n *\n * @param [inout] state The state to be destroyed.\n */\nvoid\ncrandom_destroy (\n    crandom_state_a_t state\n);\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __GOLDI_CRANDOM_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/ec_point.h",
    "content": "/**\n * @file ec_point.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @warning This file was automatically generated.\n */\n\n#ifndef __CC_INCLUDED_EC_POINT_H__\n#define __CC_INCLUDED_EC_POINT_H__\n\n#include \"field.h\"\n#include \"constant_time.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * Affine point on an Edwards curve.\n */\ntypedef struct affine_t {\n    field_a_t x, y;\n} affine_a_t[1];\n\n/**\n * Affine point on a twisted Edwards curve.\n */\ntypedef struct tw_affine_t {\n    field_a_t x, y;\n} tw_affine_a_t[1];\n\n/**\n * Montgomery buffer.\n */\ntypedef struct montgomery_t {\n    field_a_t z0, xd, zd, xa, za;\n} montgomery_a_t[1];\n\n/**\n * Extensible coordinates for Edwards curves, suitable for\n * accumulators.\n * \n * Represents the point (x/z, y/z).  The extra coordinates\n * t,u satisfy xy = tuz, allowing for conversion to Extended\n * form by multiplying t and u.\n * \n * The idea is that you don't have to do this multiplication\n * when doubling the accumulator, because the t-coordinate\n * isn't used there.  At the same time, as long as you only\n * have one point in extensible form, additions don't cost\n * extra.\n * \n * This is essentially a lazier version of Hisil et al's\n * lookahead trick.  It might be worth considering that trick\n * instead.\n */\ntypedef struct extensible_t {\n    field_a_t x, y, z, t, u;\n} extensible_a_t[1];\n\n/**\n * Extensible coordinates for twisted Edwards curves,\n * suitable for accumulators.\n */\ntypedef struct tw_extensible_t {\n    field_a_t x, y, z, t, u;\n} tw_extensible_a_t[1];\n\n/**\n * Niels coordinates for twisted Edwards curves.\n * \n * Good for mixed readdition; suitable for fixed tables.\n */\ntypedef struct tw_niels_t {\n    field_a_t a, b, c;\n} tw_niels_a_t[1];\n\n/**\n * Projective niels coordinates for twisted Edwards curves.\n * \n * Good for readdition; suitable for temporary tables.\n */\ntypedef struct tw_pniels_t {\n    tw_niels_a_t n;\n    field_a_t z;\n} tw_pniels_a_t[1];\n\n\n/**\n * Auto-generated copy method.\n */\nstatic __inline__ void\ncopy_affine (\n    affine_a_t       a,\n    const affine_a_t ds\n) __attribute__((unused,always_inline));\n\n/**\n * Auto-generated copy method.\n */\nstatic __inline__ void\ncopy_tw_affine (\n    tw_affine_a_t       a,\n    const tw_affine_a_t ds\n) __attribute__((unused,always_inline));\n\n/**\n * Auto-generated copy method.\n */\nstatic __inline__ void\ncopy_montgomery (\n    montgomery_a_t       a,\n    const montgomery_a_t ds\n) __attribute__((unused,always_inline));\n\n/**\n * Auto-generated copy method.\n */\nstatic __inline__ void\ncopy_extensible (\n    extensible_a_t       a,\n    const extensible_a_t ds\n) __attribute__((unused,always_inline));\n\n/**\n * Auto-generated copy method.\n */\nstatic __inline__ void\ncopy_tw_extensible (\n    tw_extensible_a_t       a,\n    const tw_extensible_a_t ds\n) __attribute__((unused,always_inline));\n\n/**\n * Auto-generated copy method.\n */\nstatic __inline__ void\ncopy_tw_niels (\n    tw_niels_a_t       a,\n    const tw_niels_a_t ds\n) __attribute__((unused,always_inline));\n\n/**\n * Auto-generated copy method.\n */\nstatic __inline__ void\ncopy_tw_pniels (\n    tw_pniels_a_t       a,\n    const tw_pniels_a_t ds\n) __attribute__((unused,always_inline));\n\n/**\n * Add two points on a twisted Edwards curve, one in Extensible form\n * and the other in half-Niels form.\n */\nvoid\nadd_tw_niels_to_tw_extensible (\n    tw_extensible_a_t  d,\n    const tw_niels_a_t e\n);\n\n/**\n * Add two points on a twisted Edwards curve, one in Extensible form\n * and the other in half-Niels form.\n */\nvoid\nsub_tw_niels_from_tw_extensible (\n    tw_extensible_a_t  d,\n    const tw_niels_a_t e\n);\n\n/**\n * Add two points on a twisted Edwards curve, one in Extensible form\n * and the other in projective Niels form.\n */\nvoid\nadd_tw_pniels_to_tw_extensible (\n    tw_extensible_a_t   e,\n    const tw_pniels_a_t a\n);\n\n/**\n * Add two points on a twisted Edwards curve, one in Extensible form\n * and the other in projective Niels form.\n */\nvoid\nsub_tw_pniels_from_tw_extensible (\n    tw_extensible_a_t   e,\n    const tw_pniels_a_t a\n);\n\n/**\n * Double a point on a twisted Edwards curve, in \"extensible\" coordinates.\n */\nvoid\ndouble_tw_extensible (\n    tw_extensible_a_t a\n);\n\n/**\n * Double a point on an Edwards curve, in \"extensible\" coordinates.\n */\nvoid\ndouble_extensible (\n    extensible_a_t a\n);\n\n/**\n * Double a point, and transfer it to the twisted curve.\n * \n * That is, apply the 4-isogeny.\n */\nvoid\ntwist_and_double (\n    tw_extensible_a_t    b,\n    const extensible_a_t a\n);\n\n/**\n * Double a point, and transfer it to the untwisted curve.\n * \n * That is, apply the dual isogeny.\n */\nvoid\nuntwist_and_double (\n    extensible_a_t          b,\n    const tw_extensible_a_t a\n);\n\nvoid\nconvert_tw_affine_to_tw_pniels (\n    tw_pniels_a_t       b,\n    const tw_affine_a_t a\n);\n\nvoid\nconvert_tw_affine_to_tw_extensible (\n    tw_extensible_a_t   b,\n    const tw_affine_a_t a\n);\n\nvoid\nconvert_affine_to_extensible (\n    extensible_a_t   b,\n    const affine_a_t a\n);\n\nvoid\nconvert_tw_extensible_to_tw_pniels (\n    tw_pniels_a_t           b,\n    const tw_extensible_a_t a\n);\n\nvoid\nconvert_tw_pniels_to_tw_extensible (\n    tw_extensible_a_t   e,\n    const tw_pniels_a_t d\n);\n\nvoid\nconvert_tw_niels_to_tw_extensible (\n    tw_extensible_a_t  e,\n    const tw_niels_a_t d\n);\n\nvoid\nmontgomery_step (\n    montgomery_a_t a\n);\n\nvoid\ndeserialize_montgomery (\n    montgomery_a_t a,\n    const field_a_t sbz\n);\n\nmask_t\nserialize_montgomery (\n    field_a_t             b,\n    const montgomery_a_t a,\n    const field_a_t       sbz\n);\n\n/**\n * Serialize a point on an Edwards curve.\n * \n * The serialized form would be sqrt((z-y)/(z+y)) with sign of xz.\n * \n * It would be on 4y^2/(1-d) = x^3 + 2(1+d)/(1-d) * x^2 + x.\n * \n * But 4/(1-d) isn't square, so we need to twist it:\n * \n * -x is on 4y^2/(d-1) = x^3 + 2(d+1)/(d-1) * x^2 + x\n */\nvoid\nserialize_extensible (\n    field_a_t             b,\n    const extensible_a_t a\n);\n\n/**\n * \n */\nvoid\nuntwist_and_double_and_serialize (\n    field_a_t                b,\n    const tw_extensible_a_t a\n);\n\n/**\n * Expensive transfer from untwisted to twisted.  Roughly equivalent to halve and isogeny.\n * Correctly transfers point of order 2.\n * \n * Can't have x=+1 (it's not even).  There is code to fix the exception that would otherwise\n * occur at (0,1).\n * \n * Input point must be even.\n */\nvoid\ntwist_even (\n    tw_extensible_a_t    b,\n    const extensible_a_t a\n);\n\n/**\n * Expensive transfer from untwisted to twisted.  Roughly equivalent to halve and isogeny.\n * \n * This function is for testing purposes only, because it can return odd points on the\n * twist.  This can cause exceptions in the point addition formula.  What's more, this\n * function should be able to return points of order 4, which are at infinity.\n * \n * This function probably doesn't properly handle special cases, such as the point at\n * infinity (FUTURE).\n * \n * This function probably isn't a homomorphism, in that it probably doesn't consistently\n * handle adjustments by the point of order 2 when the input is odd.    (FUTURE)\n */\nvoid\ntest_only_twist (\n    tw_extensible_a_t    b,\n    const extensible_a_t a\n);\n\nmask_t\nfield_is_square (\n    const field_a_t x\n);\n\nmask_t\nis_even_pt (\n    const extensible_a_t a\n);\n\nmask_t\nis_even_tw (\n    const tw_extensible_a_t a\n);\n\n/**\n * Deserialize a point to an untwisted affine curve.\n */\nmask_t\ndeserialize_affine (\n    affine_a_t     a,\n    const field_a_t sz\n);\n\n/**\n * Deserialize a point and transfer it to the twist.\n * \n * Not guaranteed to preserve the 4-torsion component.\n * \n * Refuses to deserialize +-1, which are the points of order 2.\n */\nmask_t\ndeserialize_and_twist_approx (\n    tw_extensible_a_t a,\n    const field_a_t    sz\n);\n\nvoid\nset_identity_extensible (\n    extensible_a_t a\n);\n\nvoid\nset_identity_tw_extensible (\n    tw_extensible_a_t a\n);\n\nvoid\nset_identity_affine (\n    affine_a_t a\n);\n\nmask_t\neq_affine (\n    const affine_a_t a,\n    const affine_a_t b\n);\n\nmask_t\neq_extensible (\n    const extensible_a_t a,\n    const extensible_a_t b\n);\n\nmask_t\neq_tw_extensible (\n    const tw_extensible_a_t a,\n    const tw_extensible_a_t b\n);\n\nvoid\nelligator_2s_inject (\n    affine_a_t     a,\n    const field_a_t r\n);\n\nmask_t\nvalidate_affine (\n    const affine_a_t a\n);\n\n/**\n * Check the invariants for struct tw_extensible_t.\n * NOTE: This function was automatically generated\n * with no regard for speed.\n */\nmask_t\nvalidate_tw_extensible (\n    const tw_extensible_a_t ext\n);\n\n/**\n * Check the invariants for struct extensible_t.\n * NOTE: This function was automatically generated\n * with no regard for speed.\n */\nmask_t\nvalidate_extensible (\n    const extensible_a_t ext\n);\n\n/**\n * If doNegate, then negate a twisted niels point.\n */\nstatic __inline__ void\n__attribute__((unused))\ncond_negate_tw_niels (\n    tw_niels_a_t n,\n    mask_t doNegate\n) {\n    constant_time_cond_swap(n->a, n->b, sizeof(n->a), doNegate);\n    field_cond_neg(n->c, doNegate);\n}\n\n/**\n * If doNegate, then negate a twisted projective niels point.\n */\nstatic __inline__ void\n__attribute__((unused))\ncond_negate_tw_pniels (\n    tw_pniels_a_t n,\n    mask_t doNegate\n) {\n    cond_negate_tw_niels(n->n, doNegate);\n}\n\nvoid\ncopy_affine (\n    affine_a_t       a,\n    const affine_a_t ds\n) {\n    field_copy ( a->x, ds->x );\n    field_copy ( a->y, ds->y );\n}\n\nvoid\ncopy_tw_affine (\n    tw_affine_a_t       a,\n    const tw_affine_a_t ds\n) {\n    field_copy ( a->x, ds->x );\n    field_copy ( a->y, ds->y );\n}\n\nvoid\ncopy_montgomery (\n    montgomery_a_t       a,\n    const montgomery_a_t ds\n) {\n    field_copy ( a->z0, ds->z0 );\n    field_copy ( a->xd, ds->xd );\n    field_copy ( a->zd, ds->zd );\n    field_copy ( a->xa, ds->xa );\n    field_copy ( a->za, ds->za );\n}\n\nvoid\ncopy_extensible (\n    extensible_a_t       a,\n    const extensible_a_t ds\n) {\n    field_copy ( a->x, ds->x );\n    field_copy ( a->y, ds->y );\n    field_copy ( a->z, ds->z );\n    field_copy ( a->t, ds->t );\n    field_copy ( a->u, ds->u );\n}\n\nvoid\ncopy_tw_extensible (\n    tw_extensible_a_t       a,\n    const tw_extensible_a_t ds\n) {\n    field_copy ( a->x, ds->x );\n    field_copy ( a->y, ds->y );\n    field_copy ( a->z, ds->z );\n    field_copy ( a->t, ds->t );\n    field_copy ( a->u, ds->u );\n}\n\nvoid\ncopy_tw_niels (\n    tw_niels_a_t       a,\n    const tw_niels_a_t ds\n) {\n    field_copy ( a->a, ds->a );\n    field_copy ( a->b, ds->b );\n    field_copy ( a->c, ds->c );\n}\n\nvoid\ncopy_tw_pniels (\n    tw_pniels_a_t       a,\n    const tw_pniels_a_t ds\n) {\n    copy_tw_niels( a->n, ds->n );\n    field_copy ( a->z, ds->z );\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __CC_INCLUDED_EC_POINT_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/field.h",
    "content": "/**\n * @file field.h\n * @brief Generic field header.\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n */\n\n#ifndef __FIELD_H__\n#define __FIELD_H__\n\n#include \"constant_time.h\"\n#include \"f_field.h\"\n#include <string.h>\n\ntypedef struct field_t field_a_t[1];\n#define field_a_restrict_t struct field_t *__restrict__\n\n#define is32 (GOLDI_BITS == 32 || FIELD_BITS != 448)\n#if (is32)\n#define IF32(s) (s)\n#else\n#define IF32(s)\n#endif\n\n/** @brief Bytes in a field element */\n#define FIELD_BYTES          (1+(FIELD_BITS-1)/8)\n\n/** @brief Words in a field element */\n#define FIELD_WORDS          (1+(FIELD_BITS-1)/sizeof(word_t))\n\n/* TODO: standardize notation */\n/** @brief The number of words in the Goldilocks field. */\n#define GOLDI_FIELD_WORDS DIV_CEIL(FIELD_BITS,WORD_BITS)\n\n/** @brief The number of bits in the Goldilocks curve's cofactor (cofactor=4). */\n#define COFACTOR_BITS 2\n\n/** @brief The number of bits in a Goldilocks scalar. */\n#define SCALAR_BITS (FIELD_BITS - COFACTOR_BITS)\n\n/** @brief The number of bytes in a Goldilocks scalar. */\n#define SCALAR_BYTES (1+(SCALAR_BITS)/8)\n\n/** @brief The number of words in the Goldilocks field. */\n#define SCALAR_WORDS WORDS_FOR_BITS(SCALAR_BITS)\n\n/**\n * @brief For GMP tests: little-endian representation of the field modulus.\n */\nextern const uint8_t FIELD_MODULUS[FIELD_BYTES];\n\n/**\n * Copy one field element to another.\n */\nstatic inline void\n__attribute__((unused,always_inline))        \nfield_copy (\n    field_a_restrict_t a,\n    const field_a_restrict_t b\n) {\n    memcpy(a,b,sizeof(*a));\n}\n\n/**\n * Returns 1/sqrt(+- x).\n * \n * The Legendre symbol of the result is the same as that of the\n * input.\n * \n * If x=0, returns 0.\n */\nvoid\nfield_isr (\n    field_a_t       a,\n    const field_a_t x\n);\n    \n/**\n * Batch inverts out[i] = 1/in[i]\n * \n * If any input is zero, all the outputs will be zero.\n */     \nvoid\nfield_simultaneous_invert (\n    field_a_t *__restrict__ out,\n    const field_a_t *in,\n    unsigned int n\n);\n\n/**\n * Returns 1/x.\n * \n * If x=0, returns 0.\n */\nvoid\nfield_inverse (\n    field_a_t       a,\n    const field_a_t x\n);\n\n/**\n * Returns -1 if a==b, 0 otherwise.\n */\nmask_t\nfield_eq (\n    const field_a_t a,\n    const field_a_t b\n);\n    \n/**\n * Square x, n times.\n */\nstatic __inline__ void\n__attribute__((unused,always_inline))\nfield_sqrn (\n    field_a_restrict_t y,\n    const field_a_t x,\n    int n\n) {\n    field_a_t tmp;\n    assert(n>0);\n    if (n&1) {\n        field_sqr(y,x);\n        n--;\n    } else {\n        field_sqr(tmp,x);\n        field_sqr(y,tmp);\n        n-=2;\n    }\n    for (; n; n-=2) {\n        field_sqr(tmp,y);\n        field_sqr(y,tmp);\n    }\n}\n\n/* Multiply by signed curve constant */\nstatic __inline__ void\nfield_mulw_scc (\n    field_a_restrict_t out,\n    const field_a_t a,\n    int64_t scc\n) {\n    if (scc >= 0) {\n        field_mulw(out, a, scc);\n    } else {\n        field_mulw(out, a, -scc);\n        field_neg_RAW(out,out);\n        field_bias(out,2);\n    }\n}\n\n/* Multiply by signed curve constant and weak reduce if biased */\nstatic __inline__ void\nfield_mulw_scc_wr (\n    field_a_restrict_t out,\n    const field_a_t a,\n    int64_t scc\n) {\n    field_mulw_scc(out, a, scc);\n    if (scc < 0)\n        field_weak_reduce(out);\n}\n\nstatic __inline__ void\nfield_subx_RAW (\n    field_a_t d,\n    const field_a_t a,\n    const field_a_t b\n) {\n    field_sub_RAW ( d, a, b );\n    field_bias( d, 2 );\n    IF32( field_weak_reduce ( d ) );\n}\n\nstatic __inline__ void\nfield_sub (\n    field_a_t d,\n    const field_a_t a,\n    const field_a_t b\n) {\n    field_sub_RAW ( d, a, b );\n    field_bias( d, 2 );\n    field_weak_reduce ( d );\n}\n\nstatic __inline__ void\nfield_add (\n    field_a_t d,\n    const field_a_t a,\n    const field_a_t b\n) {\n    field_add_RAW ( d, a, b );\n    field_weak_reduce ( d );\n}\n\nstatic __inline__ void\nfield_subw (\n    field_a_t d,\n    word_t c\n) {\n    field_subw_RAW ( d, c );\n    field_bias( d, 1 );\n    field_weak_reduce ( d );\n}\n\nstatic __inline__ void\nfield_neg (\n    field_a_t d,\n    const field_a_t a\n) {\n    field_neg_RAW ( d, a );\n    field_bias( d, 2 );\n    field_weak_reduce ( d );\n}\n\n/**\n * Negate a in place if doNegate.\n */\nstatic inline void\n__attribute__((unused,always_inline)) \nfield_cond_neg (\n    field_a_t a,\n    mask_t doNegate\n) {\n\tfield_a_t negated;\n    field_neg(negated, a);\n\tconstant_time_select(a, negated, a, sizeof(negated), doNegate);\n}\n\n/** Require the warning annotation on raw routines */\n#define ANALYZE_THIS_ROUTINE_CAREFULLY const int ANNOTATE___ANALYZE_THIS_ROUTINE_CAREFULLY = 0;\n#define MUST_BE_CAREFUL (void) ANNOTATE___ANALYZE_THIS_ROUTINE_CAREFULLY\n#define field_add_nr(a,b,c) { MUST_BE_CAREFUL; field_add_RAW(a,b,c); }\n#define field_sub_nr(a,b,c) { MUST_BE_CAREFUL; field_sub_RAW(a,b,c); }\n#define field_subx_nr(a,b,c) { MUST_BE_CAREFUL; field_subx_RAW(a,b,c); }\n\n#endif // __FIELD_H__\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/intrinsics.h",
    "content": "/* Copyright (c) 2011 Stanford University.\n * Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n/** @file intrinsics.h\n * @brief cRandom intrinsics header.\n */\n\n#ifndef __CRANDOM_INTRINSICS_H__\n#define __CRANDOM_INTRINSICS_H__ 1\n\n#include <sys/types.h>\n#include \"config.h\"\n\n#if defined(__i386__) || defined(__x86_64__)\n#include <immintrin.h>\n#endif\n\n/** @brief Macro to make a function static, forcibly inlined and possibly unused. */\n#define INTRINSIC \\\n  static __inline__ __attribute__((__gnu_inline__, __always_inline__, unused))\n\n#define GEN    1     /**< @brief Intrinsics field has been generated. */\n#define SSE2   2     /**< @brief Machine supports SSE2 */\n#define SSSE3  4     /**< @brief Machine supports SSSE3 (for shuffles) */\n#define AESNI  8     /**< @brief Machine supports Intel AES-NI */\n#define XOP    16    /**< @brief Machine supports AMD XOP */\n#define AVX    32    /**< @brief Machine supports Intel AVX (for masking)  */\n#define AVX2   64    /**< @brief Machine supports Intel AVX2 (for bignums) */\n#define RDRAND 128   /**< @brief Machine supports Intel RDRAND */\n\n/**\n * @brief If on x86, read the timestamp counter.  Otherwise, return 0.\n */\n#ifndef __has_builtin\n#define __has_builtin(X) 0\n#endif\n#if defined(__clang__) && __has_builtin(__builtin_readcyclecounter)\n#define rdtsc __builtin_readcyclecounter\n#else\nINTRINSIC u_int64_t rdtsc(void) {\n  u_int64_t out = 0;\n# if (defined(__i386__) || defined(__x86_64__))\n    __asm__ __volatile__ (\"rdtsc\" : \"=A\"(out));\n# endif\n  return out;\n}\n#endif\n\n/**\n * Return x unchanged, but confuse the compiler.\n *\n * This is mainly for use in test scripts, to prevent the value from\n * being constant-folded or removed by dead code elimination.\n *\n * @param x A 64-bit number.\n * @return The same number in a register.\n */\nINTRINSIC u_int64_t opacify(u_int64_t x) {\n  __asm__ volatile(\"mov %0, %0\" : \"+r\"(x));\n  return x;\n}\n\n\n/** @cond internal */\n#ifdef __AVX2__\n#  define MIGHT_HAVE_AVX2 1\n#  ifndef MUST_HAVE_AVX2\n#    define MUST_HAVE_AVX2 0\n#  endif\n#else\n#  define MIGHT_HAVE_AVX2 0\n#  define MUST_HAVE_AVX2  0\n#endif\n\n#ifdef __AVX__\n#  define MIGHT_HAVE_AVX 1\n#  ifndef MUST_HAVE_AVX\n#    define MUST_HAVE_AVX MUST_HAVE_AVX2\n#  endif\n#else\n#  define MIGHT_HAVE_AVX 0\n#  define MUST_HAVE_AVX 0\n#endif\n\n#ifdef __SSSE3__\n#  define MIGHT_HAVE_SSSE3 1\n#  ifndef MUST_HAVE_SSSE3\n#    define MUST_HAVE_SSSE3 MUST_HAVE_AVX\n#  endif\n#else\n#  define MIGHT_HAVE_SSSE3 0\n#  define MUST_HAVE_SSSE3 0\n#endif\n\n#ifdef __SSE2__\n#  define MIGHT_HAVE_SSE2 1\n#  ifndef MUST_HAVE_SSE2\n#    define MUST_HAVE_SSE2 MUST_HAVE_SSSE3\n#  endif\n   typedef __m128i ssereg;\n#  define pslldq _mm_slli_epi32\n#  define pshufd _mm_shuffle_epi32\n\n#else\n#  define MIGHT_HAVE_SSE2 0\n#  define MUST_HAVE_SSE2  0\n#endif\n\n#ifdef __AES__\n/* don't include intrinsics file, because not all platforms have it */\n#  define MIGHT_HAVE_AESNI 1\n#  ifndef MIGHT_HAVE_RDRAND\n#    define MIGHT_HAVE_RDRAND 1\n#  endif\n#  ifndef MUST_HAVE_RDRAND\n#    define MUST_HAVE_RDRAND 0\n#  endif\n#  ifndef MUST_HAVE_AESNI\n#    define MUST_HAVE_AESNI 0\n#  endif\n\n#else\n#  define MIGHT_HAVE_AESNI 0\n#  define MUST_HAVE_AESNI 0\n#  define MIGHT_HAVE_RDRAND 0\n#  define MUST_HAVE_RDRAND 0\n#endif\n\n#ifdef __XOP__\n/* don't include intrinsics file, because not all platforms have it */\n#  define MIGHT_HAVE_XOP 1\n#  ifndef MUST_HAVE_XOP\n#    define MUST_HAVE_XOP 0\n#  endif\n#else\n#  define MIGHT_HAVE_XOP 0\n#  define MUST_HAVE_XOP 0\n#endif\n\n#define MIGHT_MASK \\\n  ( SSE2   * MIGHT_HAVE_SSE2   \\\n  | SSSE3  * MIGHT_HAVE_SSSE3  \\\n  | AESNI  * MIGHT_HAVE_AESNI  \\\n  | XOP    * MIGHT_HAVE_XOP    \\\n  | AVX    * MIGHT_HAVE_AVX    \\\n  | RDRAND * MIGHT_HAVE_RDRAND \\\n  | AVX2   * MIGHT_HAVE_AVX2)\n\n#if CRANDOM_MIGHT_IS_MUST\n#define MUST_MASK MIGHT_MASK\n#else\n#define MUST_MASK \\\n  ( SSE2   * MUST_HAVE_SSE2   \\\n  | SSSE3  * MUST_HAVE_SSSE3  \\\n  | AESNI  * MUST_HAVE_AESNI  \\\n  | XOP    * MUST_HAVE_XOP    \\\n  | AVX    * MUST_HAVE_AVX    \\\n  | RDRAND * MUST_HAVE_RDRAND \\\n  | AVX2   * MUST_HAVE_AVX2 )\n#endif\n/** @endcond */\n\n#ifdef __SSE2__\n/** Rotate a register by some amount using SSE2. */\nINTRINSIC ssereg sse2_rotate(int r, ssereg a) {\n  return _mm_slli_epi32(a, r) ^ _mm_srli_epi32(a, 32-r);\n}\n#endif\n      \n#ifdef __XOP__\n/** Rotate a register by some amount using AMD XOP. */      \nINTRINSIC ssereg xop_rotate(int amount, ssereg x) {\n  ssereg out;\n  __asm__ (\"vprotd %1, %2, %0\" : \"=x\"(out) : \"x\"(x), \"g\"(amount));\n  return out;\n}\n#endif\n\n/**\n * @brief Macro which detects that targets might support this feature,\n * so that we can include code for it.\n */\n#define MIGHT_HAVE(feature) ((MIGHT_MASK & feature) == feature)\n\n/**\n * @brief Macro which detects that targets must support this feature,\n * so we can omit fallback code.\n */\n#define MUST_HAVE(feature) ((MUST_MASK & feature) == feature)\n\n/**\n * @brief Make a functiona available by C API.\n */\n#ifdef __cplusplus\n#  define extern_c extern \"C\"\n#else\n#  define extern_c\n#endif\n\n/** @cond internal\n * @brief Detect platform features and return them as a flagfield int.\n */\nextern_c\nunsigned int crandom_detect_features();\n/** @endcond */\n\n#ifndef likely\n#  define likely(x)       __builtin_expect((x),1) \\\n    /**< @brief Tell the compiler that a branch is likely, for optimization. */\n#  define unlikely(x)     __builtin_expect((x),0) \\\n    /**< @brief Tell the compiler that a branch is unlikely, for optimization. */\n#endif\n  \n/**\n * Atomic compare and swap, return by fetching.\n *\n * Equivalent to:\n * ret = *target; if (*target == old) *target = new; return ret;\n *\n * @param [inout] target The volatile memory area to be CAS'd\n * @param [in] old The expected old value of the target.\n * @param [in] new A value to replace the target on success.\n */\nINTRINSIC const char *\ncompare_and_swap (\n    const char *volatile* target,\n    const char *old,\n    const char *new\n) {\n    return __sync_val_compare_and_swap(target,old,new);\n}\n  \n/**\n * Atomic compare and swap.  Return whether successful.\n *\n * Equivalent to:\n * if (*target == old) { *target = new; return nonzero; } else { return 0; }\n *\n * @param [inout] target The volatile memory area to be CAS'd\n * @param [in] old The expected old value of the target.\n * @param [in] new A value to replace the target on success.\n */\nINTRINSIC int\nbool_compare_and_swap (\n    const char *volatile* target,\n    const char *old,\n    const char *new\n) {\n    return __sync_bool_compare_and_swap(target,old,new);\n}\n\n/**\n * Determine whether the current processor supports the given feature.\n *\n * This function is designed so that it should only have runtime overhead\n * if the feature is not known at compile time -- that is, if\n * MIGHT_HAVE(feature) is set, but MUST_HAVE(feature) is not.\n */\nextern volatile unsigned int crandom_features;\n\n/** @brief Determine if a given CPU feature is available. */\nINTRINSIC int HAVE(unsigned int feature);\n\nint HAVE(unsigned int feature) {\n  unsigned int features;\n  if (!MIGHT_HAVE(feature)) return 0;\n  if (MUST_HAVE(feature))   return 1;\n  features = crandom_features;\n  if (unlikely(!features))\n    crandom_features = features = crandom_detect_features();\n  return likely((features & feature) == feature);\n}\n\n#endif /* __CRANDOM_INTRINSICS_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/magic.h",
    "content": "/**\n * @file magic.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief Curve-independent declarations of magic numbers.\n */\n\n#ifndef __GOLDI_MAGIC_H__\n#define __GOLDI_MAGIC_H__ 1\n\n#include \"word.h\"\n\n/**\n * @brief If true, use wider tables for the precomputed combs.\n */\n#ifndef USE_BIG_COMBS\n#if defined(__ARM_NEON__)\n#define USE_BIG_COMBS 1\n#else\n#define USE_BIG_COMBS (WORD_BITS==64)\n#endif\n#endif\n\n/* TODO: standardize notation */\n\n/** @brief The number of words in the Goldilocks field. */\n#define GOLDI_FIELD_WORDS DIV_CEIL(FIELD_BITS,WORD_BITS)\n\n/** @brief The number of bits in the Goldilocks curve's cofactor (cofactor=4). */\n#define COFACTOR_BITS 2\n\n/** @brief The number of bits in a Goldilocks scalar. */\n#define SCALAR_BITS (FIELD_BITS - COFACTOR_BITS)\n\n/** @brief The number of bytes in a Goldilocks scalar. */\n#define SCALAR_BYTES (1+(SCALAR_BITS)/8)\n\n/** @brief The number of words in the Goldilocks field. */\n#define SCALAR_WORDS WORDS_FOR_BITS(SCALAR_BITS)\n\n#include \"f_magic.h\"\n\n/**\n * @brief sqrt(d-1), used for point formats and twisting.\n */\nextern const field_a_t sqrt_d_minus_1;\n\n/**\n * @brief The base point for Goldilocks.\n */\nextern const affine_a_t goldilocks_base_point;\n\n/**\n * @brief The Goldilocks prime subgroup order.\n */ \nextern const struct barrett_prime_t curve_prime_order;\n\n/**\n * @brief Window size for fixed-window signed binary scalarmul.\n * Table size is 2^(this - 1).\n */\n#define SCALARMUL_FIXED_WINDOW_SIZE 5\n\n/**\n * @brief Even/odd adjustments for fixed window with\n * ROUNDUP(SCALAR_BITS,SCALARMUL_FIXED_WINDOW_SIZE).\n */\nextern const word_t SCALARMUL_FIXED_WINDOW_ADJUSTMENT[2*SCALAR_WORDS];\n\n/**\n * @brief Table size for wNAF signed binary (variable-time) scalarmul.\n * Table size is 2^this.\n */\n#define SCALARMUL_WNAF_TABLE_BITS 3\n\n/**\n * @brief Table size for wNAF signed binary (variable-time) linear combo.\n * Table size is 2^this.\n */\n#define SCALARMUL_WNAF_COMBO_TABLE_BITS 4\n\n/**\n * @brief The bit width of the precomputed WNAF tables.  Size is 2^this elements.\n */\n#define WNAF_PRECMP_BITS 5\n\n/**\n * @brief crandom magic structure guard constant = \"return 4\", cf xkcd #221\n */\n#define CRANDOM_MAGIC 0x72657475726e2034ull\n\n\n#endif /* __GOLDI_MAGIC_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/scalarmul.h",
    "content": "/**\n * @file scalarmul.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n */\n\n#ifndef __P448_ALGO_H__\n#define __P448_ALGO_H__ 1\n\n#include \"ec_point.h\"\n#include \"field.h\"\n#include \"intrinsics.h\"\n#include \"magic.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * A word array containing a scalar\n */\ntypedef word_t scalar_t[SCALAR_WORDS];\n\n/**\n * A precomputed table for fixed-base scalar multiplication.\n *\n * This uses a signed combs format.\n */\nstruct fixed_base_table_t {\n   /** Comb tables containing multiples of the base point. */\n  tw_niels_a_t *table;\n  \n  /** Adjustments to the scalar in even and odd cases, respectively. */\n  word_t scalar_adjustments[2*SCALAR_WORDS];\n  \n  /** The number of combs in the table. */\n  unsigned int n;\n  \n  /** The number of teeth in each comb. */\n  unsigned int t;\n  \n  /** The spacing between the teeth. */\n  unsigned int s;\n  \n  /** If nonzero, the table was malloc'd by precompute_for_combs. */\n  unsigned int own_table;\n};\n    \n/**\n * Full Montgomery ladder in inverse square root format.\n *\n * Out = [2^n_extra_doubles * scalar] * in, where\n * scalar is little-endian and has length $nbits$ bits.\n *\n * If the scalar is even and/or n_extra_doubles >= 1,\n * then this function will reject points which are not\n * on the curve by returning MASK_FAILURE.\n *\n * This function will also reject multiplies which output\n * the identity or the point of order 2.  It may be worth\n * revisiting this decision in the FUTURE.  The idea is that\n * this can only happen when: the input is the identity or the\n * point of order 2; or the input is the point of order 4 on\n * the twist; or the scalar is 0 or a multiple of the curve\n * order; or the scalar is a multiple of the twist order and\n * the input point is on the twist.\n *\n * This function takes constant time with respect to $*in$\n * and $*scalar$, but not of course with respect to nbits or\n * n_extra_doubles.\n *\n * For security, we recommend setting n_extra_doubles = 1.\n * Because the cofactor of Goldilocks is 4 and input points\n * are always even (when on the curve), this will cancel the\n * cofactor.\n *\n * @param [out] out The output point.\n * @param [in] in The base point.\n * @param [in] scalar The scalar's little-endian representation.\n * @param [in] nbits The number of bits in the scalar.  Note that\n * unlike in Curve25519, we do not require the top bit to be set.\n * @param [in] n_extra_doubles The number of extra doubles to do at\n * the end.\n *\n * @retval MASK_SUCCESS The operation was successful.\n * @retval MASK_FAILURE The input point was invalid, or the output\n * would be the identity or the point of order 2.\n */\nmask_t\nmontgomery_ladder (\n    field_a_t out,\n    const field_a_t in,\n    const word_t *scalar,\n    unsigned int nbits,\n    unsigned int n_extra_doubles\n) __attribute__((warn_unused_result));\n    \n/**\n * Scalar multiply a twisted Edwards-form point.\n *\n * This function takes constant time.\n *\n * Currently the scalar is always exactly 448 bits long.\n *\n * @param [inout] working The point to multply.\n * @param [in] scalar The scalar, in little-endian form.\n */\nvoid\nscalarmul (\n    tw_extensible_a_t working,\n    const word_t scalar[SCALAR_WORDS]\n    /* TODO? int nbits */\n);\n    \n/**\n * Scalar multiply a twisted Edwards-form point.  Use the same\n * algorithm as scalarmul(), but uses variable array indices.\n *\n * Currently the scalar is always exactly 448 bits long.\n *\n * @warning This function uses variable array indices,\n * so it is insecure against cache-timing attacks.  It is intended\n * for microbenchmarking, to see how much constant-time arithmetic\n * costs us.\n *\n * @param [inout] working The point to multply.\n * @param [in] scalar The scalar, in little-endian form.\n */\nvoid\nscalarmul_vlook (\n    tw_extensible_a_t working,\n    const word_t scalar[SCALAR_WORDS]\n);\n\n/**\n * Precompute a table to accelerate fixed-point scalar\n * multiplication using the \"multiple signed combs\" approach.\n *\n * This function computes $n$ \"comb\" tables, each containing\n * 2^(t-1) points in tw_niels_t format.  You must have\n * n * t * s >= SCALAR_BITS = 446 for complete coverage.\n *\n * The scalar multiplication algorithm may adjust the scalar by\n * a multiple of q.  Therefore, we strongly recommend to use base\n * points in the q-torsion group (i.e. doubly even points).\n *\n * @param [out] out The table to compute.\n * @param [in] base The base point.\n * @param [in] n The number of combs in the table.\n * @param [in] t The number of teeth in each comb.\n * @param [in] s The spacing between the teeth.\n * @param [out] prealloc An optional preallocated array containing\n * space for n<<(t-1) values of type tw_niels_t.\n *\n * @retval MASK_SUCCESS Success.\n * @retval MASK_FAILURE Failure, most likely because we are out\n * of memory.\n */\nmask_t\nprecompute_fixed_base (\n  struct fixed_base_table_t *out,\n  const tw_extensible_a_t base,\n  unsigned int n,\n  unsigned int t,\n  unsigned int s,\n  tw_niels_a_t *prealloc\n) __attribute__((warn_unused_result));\n\n /**\n  * Destroy a fixed-base table.  Frees any memory that we allocated\n  * for the combs.\n  *\n  * @param [in] table The table to destroy.\n  */\nvoid\ndestroy_fixed_base (\n    struct fixed_base_table_t *table\n);\n\n/**\n * Scalar multiplication with precomputation.  Set working to\n * to [scalar] * Base, where Base is the base point passed to\n * precompute_for_combs().\n *\n * The scalar may be adjusted by a multiple of q, so this routine\n * can be wrong by a cofactor if the base has cofactor components.\n *\n * @param [out] out The output point.\n * @param [in] scalar The scalar.\n * @param [in] nbits The number of bits in the scalar.  Must be <= n*t*s.\n * @param [in] table The precomputed table.\n *\n * @retval MASK_SUCCESS Success.\n * @retval MASK_FAILURE Failure, because n*t*s < nbits\n */ \nmask_t\nscalarmul_fixed_base (\n    tw_extensible_a_t out,\n    const word_t *scalar,\n    unsigned int nbits,\n    const struct fixed_base_table_t *table\n);\n\n/**\n * Variable-time scalar multiplication.\n *\n * @warning This function takes variable time.  It is intended for\n * microbenchmarking.\n *\n * @param [inout] working The input and output point.\n * @param [in] scalar The scalar.\n * @param [in] nbits The number of bits in the scalar\n */ \nvoid\nscalarmul_vt (\n    tw_extensible_a_t working,\n    const word_t *scalar,\n    unsigned int nbits\n);\n\n\n/**\n * Precompute a table to accelerate fixed-point scalar\n * multiplication (and, more importantly, linear combos)\n * using the \"windowed non-adjacent form\" approach.\n *\n * @param [out] out The output table.  Must have room for 1<<i entries.\n * @param [in] base The base point.\n * @param [in] tbits The number of bits to put in the table.\n *\n * @retval MASK_SUCCESS Success.\n * @retval MASK_FAILURE Failure, most likely because we are out\n * of memory.\n */\nmask_t\nprecompute_fixed_base_wnaf (\n    tw_niels_a_t *out,\n    const tw_extensible_a_t base,\n    unsigned int tbits\n) __attribute__((warn_unused_result));\n\n/**\n * Variable-time scalar multiplication with precomputed WNAF\n * tables.\n *\n * @warning This function takes variable time.  It is intended for\n * microbenchmarking.\n *\n * @param [out] out The output point.\n * @param [in] scalar The scalar.\n * @param [in] nbits The number of bits in the scalar.\n * @param [in] precmp The precomputed WNAF table.\n * @param [in] table_bits The number of bits in the WNAF table.\n */ \nvoid\nscalarmul_fixed_base_wnaf_vt (\n    tw_extensible_a_t out,\n    const word_t *scalar,\n    unsigned int nbits,\n    const tw_niels_a_t *precmp,\n    unsigned int table_bits\n);\n\n\n/**\n * Variable-time scalar linear combination of two points: one\n * variable, and one fixed (with fixed-base WNAF tables)\n *\n * @warning This function takes variable time.  It is intended for\n * signature verification.\n *\n * @param [inout] working The output point, and also the variable input.\n * @param [in] scalar_var The scalar for the variable input.\n * @param [in] nbits_var The number of bits in scalar_var.\n * @param [in] scalar_pre The scalar for the fixed input.\n * @param [in] nbits_pre The number of bits in scalar_pre.\n * @param [in] precmp The precomputed WNAF table.\n * @param [in] table_bits_pre The number of bits in the WNAF table.\n */ \nvoid\nlinear_combo_var_fixed_vt (\n    tw_extensible_a_t working,\n    const word_t scalar_var[SCALAR_WORDS],\n    unsigned int nbits_var,\n    const word_t scalar_pre[SCALAR_WORDS],\n    unsigned int nbits_pre,\n    const tw_niels_a_t *precmp,\n    unsigned int table_bits_pre\n);\n\n/**\n * Variable-time scalar linear combination of two fixed points.\n *\n * @warning This function takes variable time.  It is intended for\n * signature verification.\n *\n * @param [out] working The output point.\n * @param [in] scalar1 The first scalar.\n * @param [in] nbits1 The number of bits in the first scalar.\n * @param [in] table1 The first precomputed table.\n * @param [in] scalar2 The second scalar.\n * @param [in] nbits1 The number of bits in the second scalar.\n * @param [in] table1 The second precomputed table.\n *\n * @retval MASK_SUCCESS Success.\n * @retval MASK_FAILURE Failure, because eg the tables are too small.\n */\nmask_t\nlinear_combo_combs_vt (\n    tw_extensible_a_t out,\n    const word_t scalar1[SCALAR_WORDS],\n    unsigned int nbits1,\n    const struct fixed_base_table_t *table1,\n    const word_t scalar2[SCALAR_WORDS],\n    unsigned int nbits2,\n    const struct fixed_base_table_t *table2\n);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif /* __P448_ALGO_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/sha512.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __GOLDI_SHA512_H__\n#define __GOLDI_SHA512_H__ 1\n\n#include <stdint.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#define SHA512_OUTPUT_BYTES 64\n\n/**\n * SHA512 hashing context.\n *\n * This structure is opaque.\n */\ntypedef struct {\n    /** @privatesection */\n    uint64_t chain[8];\n    uint8_t block[128];\n    uint64_t nbytes;\n} sha512_ctx_a_t[1];\n\nvoid\nsha512_init (\n    sha512_ctx_a_t ctx\n);\n\nvoid\nsha512_update (\n    sha512_ctx_a_t ctx,\n    const unsigned char *data,\n    uint64_t bytes\n);\n    \nvoid\nsha512_final (\n    sha512_ctx_a_t ctx,\n    uint8_t result[SHA512_OUTPUT_BYTES]\n);\n    \n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n    \n#endif /* __GOLDI_SHA512_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/include/word.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#ifndef __WORD_H__\n#define __WORD_H__\n\n/* for posix_memalign */\n#define _XOPEN_SOURCE 600\n\n#include \"arch_config.h\"\n\n\n#ifndef __APPLE__\n#if defined(__WIN32__) || defined(WIN32)\n#ifndef __BIG_ENDIAN\n#define __BIG_ENDIAN 4321\n#endif\n#ifndef __LITTLE_ENDIAN\n#define __LITTLE_ENDIAN 1234\n#endif\n#ifndef __BYTE_ORDER\n#define __BYTE_ORDER __LITTLE_ENDIAN\n#endif\n#else\n#ifndef _BSD_SOURCE\n#define _BSD_SOURCE 1\n#endif\n#include <endian.h>\n#endif\n#endif\n\n#include <stdint.h>\n#include <stdlib.h>\n#include <sys/types.h>\n#include <inttypes.h>\n\n#if defined(__ARM_NEON__)\n#include <arm_neon.h>\n#elif defined(__SSE2__)\n#include <immintrin.h>\n#endif\n\n#if (WORD_BITS == 64)\ntypedef uint32_t hword_t;\ntypedef uint64_t word_t;\ntypedef __uint128_t dword_t;\ntypedef int32_t hsword_t;\ntypedef int64_t sword_t;\ntypedef __int128_t dsword_t;\n#define PRIxWORD PRIx64\n#define PRIxWORDfull \"%016\" PRIx64\n#define PRIxWORD56   \"%014\" PRIx64\n#define PRIxWORD60   \"%015\" PRIx60\n#define U64LE(x) x##ull\n#define U58LE(x) x##ull\n#define U56LE(x) x##ull\n#define U60LE(x) x##ull\n#define letohWORD letoh64\n#define GOLDI_BITS 64\n#else\ntypedef uint16_t hword_t;\ntypedef uint32_t word_t;\ntypedef uint64_t dword_t;\ntypedef int16_t hsword_t;\ntypedef int32_t sword_t;\ntypedef int64_t dsword_t;\n#define PRIxWORD PRIx32\n#define PRIxWORDfull \"%08\" PRIx32\n#define PRIxWORD56   \"%07\" PRIx32\n#define U64LE(x) (x##ull)&((1ull<<32)-1), (x##ull)>>32\n#define U58LE(x) (x##ull)&((1ull<<29)-1), (x##ull)>>29\n#define U56LE(x) (x##ull)&((1ull<<28)-1), (x##ull)>>28\n#define U60LE(x) (x##ull)&((1ull<<30)-1), (x##ull)>>30\n#define letohWORD letoh32\n#define GOLDI_BITS 32\n#endif\n\n#define DIV_CEIL(_x,_y) (((_x) + (_y) - 1)/(_y))\n#define ROUND_UP(_x,_y) (DIV_CEIL((_x),(_y))*(_y))\n#define WORDS_FOR_BITS(_x) (DIV_CEIL((_x),WORD_BITS))\n\ntypedef word_t mask_t;\nstatic const mask_t MASK_FAILURE = 0, MASK_SUCCESS = -(mask_t)1;\n\n\n\n#ifdef __ARM_NEON__\ntypedef uint32x4_t vecmask_t;\n#elif __clang__\ntypedef uint64_t uint64x2_t __attribute__((ext_vector_type(2)));\ntypedef int64_t  int64x2_t __attribute__((ext_vector_type(2)));\ntypedef uint64_t uint64x4_t __attribute__((ext_vector_type(4)));\ntypedef int64_t  int64x4_t __attribute__((ext_vector_type(4)));\ntypedef uint32_t uint32x4_t __attribute__((ext_vector_type(4)));\ntypedef int32_t  int32x4_t __attribute__((ext_vector_type(4)));\ntypedef uint32_t uint32x2_t __attribute__((ext_vector_type(2)));\ntypedef int32_t  int32x2_t __attribute__((ext_vector_type(2)));\ntypedef uint32_t uint32x8_t __attribute__((ext_vector_type(8)));\ntypedef int32_t  int32x8_t __attribute__((ext_vector_type(8)));\ntypedef word_t vecmask_t __attribute__((ext_vector_type(4)));\n#else /* GCC-cleanliness */\ntypedef uint64_t uint64x2_t __attribute__((vector_size(16)));\ntypedef int64_t  int64x2_t __attribute__((vector_size(16)));\ntypedef uint64_t uint64x4_t __attribute__((vector_size(32)));\ntypedef int64_t  int64x4_t __attribute__((vector_size(32)));\ntypedef uint32_t uint32x4_t __attribute__((vector_size(16)));\ntypedef int32_t  int32x4_t __attribute__((vector_size(16)));\ntypedef uint32_t uint32x2_t __attribute__((vector_size(8)));\ntypedef int32_t  int32x2_t __attribute__((vector_size(8)));\ntypedef uint32_t uint32x8_t __attribute__((vector_size(32)));\ntypedef int32_t  int32x8_t __attribute__((vector_size(32)));\ntypedef word_t vecmask_t __attribute__((vector_size(32)));\n#endif\n\n#if __AVX2__\n    #define VECTOR_ALIGNED __attribute__((aligned(32)))\n    typedef uint32x8_t big_register_t;\n    typedef uint64x4_t uint64xn_t;\n    typedef uint32x8_t uint32xn_t;\n\n    static __inline__ big_register_t\n    br_set_to_mask(mask_t x) {\n        uint32_t y = (uint32_t)x;\n        big_register_t ret = {y,y,y,y,y,y,y,y};\n        return ret;\n    }\n#elif __SSE2__\n    #define VECTOR_ALIGNED __attribute__((aligned(16)))\n    typedef uint32x4_t big_register_t;\n    typedef uint64x2_t uint64xn_t;\n    typedef uint32x4_t uint32xn_t;\n\n    static __inline__ big_register_t\n    br_set_to_mask(mask_t x) {\n        uint32_t y = x;\n        big_register_t ret = {y,y,y,y};\n        return ret;\n    }\n#elif __ARM_NEON__\n    #define VECTOR_ALIGNED __attribute__((aligned(16)))\n    typedef uint32x4_t big_register_t;\n    typedef uint64x2_t uint64xn_t;\n    typedef uint32x4_t uint32xn_t;\n    static __inline__ big_register_t\n    br_set_to_mask(mask_t x) {\n        return vdupq_n_u32(x);\n    }\n#elif _WIN64 || __amd64__ || __X86_64__ || __aarch64__\n    #define VECTOR_ALIGNED __attribute__((aligned(8)))\n    typedef uint64_t big_register_t, uint64xn_t;\n\n    typedef uint32_t uint32xn_t;\n    static __inline__ big_register_t\n    br_set_to_mask(mask_t x) {\n        return (big_register_t)x;\n    }\n#else\n    #define VECTOR_ALIGNED __attribute__((aligned(4)))\n    typedef uint64_t uint64xn_t;\n    typedef uint32_t uint32xn_t;\n    typedef uint32_t big_register_t;\n\n    static __inline__ big_register_t\n    br_set_to_mask(mask_t x) {\n        return (big_register_t)x;\n    }\n#endif\n\ntypedef struct {\n    uint64xn_t unaligned;\n} __attribute__((packed)) unaligned_uint64xn_t;\n\ntypedef struct {\n    uint32xn_t unaligned;\n} __attribute__((packed)) unaligned_uint32xn_t;\n    \n/**\n * Return -1 if x==0, and 0 otherwise.\n */\nstatic __inline__ mask_t\n__attribute__((always_inline,unused))\nword_is_zero(word_t x) {\n    return (mask_t)((((dword_t)(x)) - 1)>>WORD_BITS);\n}\n\n#if __AVX2__\nstatic __inline__ big_register_t\nbr_is_zero(big_register_t x) {\n    return (big_register_t)(x == br_set_to_mask(0));\n}\n#elif __SSE2__\nstatic __inline__ big_register_t\nbr_is_zero(big_register_t x) {\n    return (big_register_t)_mm_cmpeq_epi32((__m128i)x, _mm_setzero_si128());\n    //return (big_register_t)(x == br_set_to_mask(0));\n}\n#elif __ARM_NEON__\nstatic __inline__ big_register_t\nbr_is_zero(big_register_t x) {\n    return vceqq_u32(x,x^x);\n}\n#else\nstatic __inline__ mask_t\nbr_is_zero(word_t x) {\n    return (((dword_t)x) - 1)>>WORD_BITS;\n}\n#endif\n\n\n\n\n#ifdef __APPLE__\nstatic inline uint64_t\nhtobe64 (uint64_t x) {\n    __asm__ (\"bswapq %0\" : \"+r\"(x));\n    return x;\n}\nstatic inline uint64_t\nhtole64 (uint64_t x) { return x; }\n\nstatic inline uint64_t\nletoh64 (uint64_t x) { return x; }\n\n#include <string.h> // for memset_s\n#endif\n\n/**\n * Really call memset, in a way that prevents the compiler from optimizing it out.\n * @param p The object to zeroize.\n * @param c The char to set it to (probably zero).\n * @param s The size of the object.\n */\n#if (defined(__DARWIN_C_LEVEL) \\\n    || (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ == 1))\n#define HAS_MEMSET_S\n#endif\n\n#if !defined(__STDC_WANT_LIB_EXT1__) || __STDC_WANT_LIB_EXT1__ != 1\n#define NEED_MEMSET_S_EXTERN\n#endif\n\n#ifdef HAS_MEMSET_S\n#ifdef NEED_MEMSET_S_EXTERN\nextern int memset_s(void *, size_t, int, size_t);\n#endif\nstatic __inline__ void\nreally_memset(void *p, char c, size_t s) {\n    memset_s(p, s, c, s);\n}\n#else\nstatic __inline__ void __attribute__((always_inline,unused))\nreally_memset(void *p, char c, size_t s) {\n    volatile char *pv = (volatile char *)p;\n    size_t i;\n    for (i=0; i<s; i++) pv[i] = c;\n}\n#endif\n\n/**\n * Allocate memory which is sufficiently aligned to be used for the\n * largest vector on the system (for now that's a big_register_t).\n *\n * Man malloc says that it does this, but at least for AVX2 on MacOS X,\n * it's lying.\n *\n * @param size The size of the region to allocate.\n * @return A suitable pointer, which can be free'd with free(),\n * or NULL if no memory can be allocated.\n */\nstatic __inline__ void *\nmalloc_vector (\n    size_t size\n) __attribute__((always_inline, unused));\n\nvoid *\nmalloc_vector(size_t size) {\n    void *out = NULL;\n    \n    int ret = posix_memalign(&out, sizeof(big_register_t), size);\n    \n    if (ret) {\n        return NULL;\n    } else {\n        return out;\n    }\n}\n\n#endif /* __WORD_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_32/arch_config.h",
    "content": "#define WORD_BITS 32\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_32/p448.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"word.h\"\n#include \"p448.h\"\n\nstatic inline mask_t __attribute__((always_inline))\nis_zero (\n    word_t x\n) {\n    dword_t xx = x;\n    xx--;\n    return xx >> WORD_BITS;\n}\n\nstatic uint64_t widemul_32 (\n    const uint32_t a,\n    const uint32_t b\n) {\n    return ((uint64_t)a)* b;\n}\n\nvoid\np448_mul (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    const p448_t *bs\n) { \n    const uint32_t *a = as->limb, *b = bs->limb;\n    uint32_t *c = cs->limb;\n\n    uint64_t accum0 = 0, accum1 = 0, accum2 = 0;\n    uint32_t mask = (1<<28) - 1;  \n\n    uint32_t aa[8], bb[8];\n    \n    int i,j;\n    for (i=0; i<8; i++) {\n        aa[i] = a[i] + a[i+8];\n        bb[i] = b[i] + b[i+8];\n    }\n    \n    for (j=0; j<8; j++) {\n        accum2 = 0;\n    \n        for (i=0; i<=j; i++) {      \n            accum2 += widemul_32(a[j-i],b[i]);\n            accum1 += widemul_32(aa[j-i],bb[i]);\n            accum0 += widemul_32(a[8+j-i], b[8+i]);\n        }\n        \n        accum1 -= accum2;\n        accum0 += accum2;\n        accum2 = 0;\n        \n        for (; i<8; i++) {\n            accum0 -= widemul_32(a[8+j-i], b[i]);\n            accum2 += widemul_32(aa[8+j-i], bb[i]);\n            accum1 += widemul_32(a[16+j-i], b[8+i]);\n        }\n\n        accum1 += accum2;\n        accum0 += accum2;\n\n        c[j] = ((uint32_t)(accum0)) & mask;\n        c[j+8] = ((uint32_t)(accum1)) & mask;\n\n        accum0 >>= 28;\n        accum1 >>= 28;\n    }\n    \n    accum0 += accum1;\n    accum0 += c[8];\n    accum1 += c[0];\n    c[8] = ((uint32_t)(accum0)) & mask;\n    c[0] = ((uint32_t)(accum1)) & mask;\n    \n    accum0 >>= 28;\n    accum1 >>= 28;\n    c[9] += ((uint32_t)(accum0));\n    c[1] += ((uint32_t)(accum1));\n}\n\nvoid\np448_mulw (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    uint64_t b\n) {\n    const uint32_t bhi = b>>28, blo = b & ((1<<28)-1);\n    \n    const uint32_t *a = as->limb;\n    uint32_t *c = cs->limb;\n\n    uint64_t accum0, accum8;\n    uint32_t mask = (1ull<<28)-1;  \n\n    int i;\n\n    accum0 = widemul_32(blo, a[0]);\n    accum8 = widemul_32(blo, a[8]);\n    accum0 += widemul_32(bhi, a[15]);\n    accum8 += widemul_32(bhi, a[15] + a[7]);\n\n    c[0] = accum0 & mask; accum0 >>= 28;\n    c[8] = accum8 & mask; accum8 >>= 28;\n    \n    for (i=1; i<8; i++) {\n        accum0 += widemul_32(blo, a[i]);\n        accum8 += widemul_32(blo, a[i+8]);\n        \n        accum0 += widemul_32(bhi, a[i-1]);\n        accum8 += widemul_32(bhi, a[i+7]);\n\n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n    }\n\n    accum0 += accum8 + c[8];\n    c[8] = accum0 & mask;\n    c[9] += accum0 >> 28;\n\n    accum8 += c[0];\n    c[0] = accum8 & mask;\n    c[1] += accum8 >> 28;\n}\n\nvoid\np448_sqr (\n    p448_t *__restrict__ cs,\n    const p448_t *as\n) {\n    p448_mul(cs,as,as); /* PERF */\n}\n\nvoid\np448_strong_reduce (\n    p448_t *a\n) {\n    word_t mask = (1ull<<28)-1;\n\n    /* first, clear high */\n    a->limb[8] += a->limb[15]>>28;\n    a->limb[0] += a->limb[15]>>28;\n    a->limb[15] &= mask;\n\n    /* now the total is less than 2^448 - 2^(448-56) + 2^(448-56+8) < 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    dsword_t scarry = 0;\n    int i;\n    for (i=0; i<16; i++) {\n        scarry = scarry + a->limb[i] - ((i==8)?mask-1:mask);\n        a->limb[i] = scarry & mask;\n        scarry >>= 28;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^448\n    * so let's add back in p.  will carry back off the top for 2^448.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    word_t scarry_mask = scarry & mask;\n    dword_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<16; i++) {\n        carry = carry + a->limb[i] + ((i==8)?(scarry_mask&~1):scarry_mask);\n        a->limb[i] = carry & mask;\n        carry >>= 28;\n    }\n\n    assert(is_zero(carry + scarry));\n}\n\nmask_t\np448_is_zero (\n    const struct p448_t *a\n) {\n    struct p448_t b;\n    p448_copy(&b,a);\n    p448_strong_reduce(&b);\n\n    uint32_t any = 0;\n    int i;\n    for (i=0; i<16; i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n) {\n    int i,j;\n    p448_t red;\n    p448_copy(&red, x);\n    p448_strong_reduce(&red);\n    for (i=0; i<8; i++) {\n        uint64_t limb = red.limb[2*i] + (((uint64_t)red.limb[2*i+1])<<28);\n        for (j=0; j<7; j++) {\n            serial[7*i+j] = limb;\n            limb >>= 8;\n        }\n        assert(limb == 0);\n    }\n}\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n) {\n    int i,j;\n    for (i=0; i<8; i++) {\n        uint64_t out = 0;\n        for (j=0; j<7; j++) {\n            out |= ((uint64_t)serial[7*i+j])<<(8*j);\n        }\n        x->limb[2*i] = out & ((1ull<<28)-1);\n        x->limb[2*i+1] = out >> 28;\n    }\n    \n    /* Check for reduction.\n     *\n     * The idea is to create a variable ge which is all ones (rather, 56 ones)\n     * if and only if the low $i$ words of $x$ are >= those of p.\n     *\n     * Remember p = little_endian(1111,1111,1111,1111,1110,1111,1111,1111)\n     */\n    uint32_t ge = -1, mask = (1ull<<28)-1;\n    for (i=0; i<8; i++) {\n        ge &= x->limb[i];\n    }\n    \n    /* At this point, ge = 1111 iff bottom are all 1111.  Now propagate if 1110, or set if 1111 */\n    ge = (ge & (x->limb[8] + 1)) | is_zero(x->limb[8] ^ mask);\n    \n    /* Propagate the rest */\n    for (i=9; i<16; i++) {\n        ge &= x->limb[i];\n    }\n    \n    return ~is_zero(ge ^ mask);\n}\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_32/p448.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __P448_H__\n#define __P448_H__ 1\n\n#include \"word.h\"\n\n#include <stdint.h>\n#include <assert.h>\n\ntypedef struct p448_t {\n  uint32_t limb[16];\n} __attribute__((aligned(32))) p448_t;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_addw (\n    p448_t *a,\n    uint32_t x\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_subw (\n    p448_t *a,\n    uint32_t x\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_weak_reduce (\n    p448_t *inout\n) __attribute__((unused,always_inline));\n\nvoid\np448_strong_reduce (\n    p448_t *inout\n);\n\nmask_t\np448_is_zero (\n    const p448_t *in\n);\n\nstatic __inline__ void\np448_bias (\n    p448_t *inout,\n    int amount\n) __attribute__((unused,always_inline));\n\nvoid\np448_mul (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    const p448_t *b\n);\n\nvoid\np448_mulw (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    uint64_t b\n);\n\nvoid\np448_sqr (\n    p448_t *__restrict__ out,\n    const p448_t *a\n);\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n);\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\nvoid\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) {\n    int i;\n    out->limb[0] = x & ((1<<28)-1);\n    out->limb[1] = x>>28;\n    for (i=2; i<16; i++) {\n      out->limb[i] = 0;\n    }\n}\n\nvoid\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    for (unsigned int i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] + b->limb[i];\n    }\n}\n\nvoid\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    for (unsigned int i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] - b->limb[i];\n    }\n}\n\nvoid\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) {\n    for (unsigned int i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = -a->limb[i];\n    }\n}\n\nvoid\np448_addw (\n    p448_t *a,\n    uint32_t x\n) {\n  a->limb[0] += x;\n}\n\nvoid\np448_subw (\n    p448_t *a,\n    uint32_t x\n) {\n  a->limb[0] -= x;\n}\n\nvoid\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) {\n  *out = *a;\n}\n\nvoid\np448_bias (\n    p448_t *a,\n    int amt\n) {\n    uint32_t co1 = ((1ull<<28)-1)*amt, co2 = co1-amt;\n    for (unsigned int i=0; i<sizeof(*a)/sizeof(a->limb[0]); i++) {\n      a->limb[i] += (i==sizeof(*a)/sizeof(a->limb[0])/2) ? co2 : co1;\n    }\n}\n\nvoid\np448_weak_reduce (\n    p448_t *a\n) {\n    uint64_t mask = (1ull<<28) - 1;\n    uint64_t tmp = a->limb[15] >> 28;\n    int i;\n    a->limb[8] += tmp;\n    for (i=15; i>0; i--) {\n        a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>28);\n    }\n    a->limb[0] = (a->limb[0] & mask) + tmp;\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __P448_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_arm_32/arch_config.h",
    "content": "#define WORD_BITS 32\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_arm_32/p448.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"word.h\"\n#include \"p448.h\"\n\nstatic inline mask_t __attribute__((always_inline))\nis_zero (\n    word_t x\n) {\n    dword_t xx = x;\n    xx--;\n    return xx >> WORD_BITS;\n}\n\nstatic uint64_t widemul_32 (\n    const uint32_t a,\n    const uint32_t b\n) {\n    return ((uint64_t)a)* b;\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline))\nsmlal (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n\n#ifdef  __ARMEL__\n    uint32_t lo = *acc, hi = (*acc)>>32;\n    \n    __asm__ __volatile__ (\"smlal %[lo], %[hi], %[a], %[b]\"\n        : [lo]\"+&r\"(lo), [hi]\"+&r\"(hi)\n        : [a]\"r\"(a), [b]\"r\"(b));\n    \n    *acc = lo + (((uint64_t)hi)<<32);\n#else\n    *acc += (int64_t)(int32_t)a * (int64_t)(int32_t)b;\n#endif\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline))\nsmlal2 (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n#ifdef __ARMEL__\n    uint32_t lo = *acc, hi = (*acc)>>32;\n    \n    __asm__ __volatile__ (\"smlal %[lo], %[hi], %[a], %[b]\"\n        : [lo]\"+&r\"(lo), [hi]\"+&r\"(hi)\n        : [a]\"r\"(a), [b]\"r\"(2*b));\n    \n    *acc = lo + (((uint64_t)hi)<<32);\n#else\n    *acc += (int64_t)(int32_t)a * (int64_t)(int32_t)(b * 2);\n#endif\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline))\nsmull (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n#ifdef __ARMEL__\n    uint32_t lo, hi;\n    \n    __asm__ __volatile__ (\"smull %[lo], %[hi], %[a], %[b]\"\n        : [lo]\"=&r\"(lo), [hi]\"=&r\"(hi)\n        : [a]\"r\"(a), [b]\"r\"(b));\n    \n    *acc = lo + (((uint64_t)hi)<<32);\n#else\n    *acc = (int64_t)(int32_t)a * (int64_t)(int32_t)b;\n#endif\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline))\nsmull2 (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n#ifdef __ARMEL__\n    uint32_t lo, hi;\n    \n    __asm__ /*__volatile__*/ (\"smull %[lo], %[hi], %[a], %[b]\"\n        : [lo]\"=&r\"(lo), [hi]\"=&r\"(hi)\n        : [a]\"r\"(a), [b]\"r\"(2*b));\n    \n    *acc = lo + (((uint64_t)hi)<<32);\n#else\n    *acc = (int64_t)(int32_t)a * (int64_t)(int32_t)(b * 2);\n#endif\n}\n\nvoid\np448_mul (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    const p448_t *bs\n) {\n    \n    const uint32_t *a = as->limb, *b = bs->limb;\n    uint32_t *c = cs->limb;\n\n    uint64_t accum0 = 0, accum1 = 0, accum2, accum3, accumC0, accumC1;\n    uint32_t mask = (1<<28) - 1;  \n\n    uint32_t aa[8], bm[8];\n\n    int i;\n    for (i=0; i<8; i++) {\n        aa[i] = a[i] + a[i+8];\n        bm[i] = b[i] - b[i+8];\n    }\n\n    uint32_t ax,bx;\n    {\n        /* t^3 terms */\n        smull(&accum1, ax = aa[1], bx = b[15]);\n        smull(&accum3, ax = aa[2], bx);\n        smlal(&accum1, ax, bx = b[14]);\n        smlal(&accum3, ax = aa[3], bx);\n        smlal(&accum1, ax, bx = b[13]);\n        smlal(&accum3, ax = aa[4], bx);\n        smlal(&accum1, ax, bx = b[12]);\n        smlal(&accum3, ax = aa[5], bx);\n        smlal(&accum1, ax, bx = b[11]);\n        smlal(&accum3, ax = aa[6], bx);\n        smlal(&accum1, ax, bx = b[10]);\n        smlal(&accum3, ax = aa[7], bx);\n        smlal(&accum1, ax, bx = b[9]);\n        \n        accum0 = accum1;\n        accum2 = accum3;\n        \n        /* t^2 terms */\n        smlal(&accum2, ax = aa[0], bx);\n        smlal(&accum0, ax, bx = b[8]);\n        smlal(&accum2, ax = aa[1], bx);\n        \n        smlal(&accum0, ax = a[9], bx = b[7]);\n        smlal(&accum2, ax = a[10], bx);\n        smlal(&accum0, ax, bx = b[6]);\n        smlal(&accum2, ax = a[11], bx);\n        smlal(&accum0, ax, bx = b[5]);\n        smlal(&accum2, ax = a[12], bx);\n        smlal(&accum0, ax, bx = b[4]);\n        smlal(&accum2, ax = a[13], bx);\n        smlal(&accum0, ax, bx = b[3]);\n        smlal(&accum2, ax = a[14], bx);\n        smlal(&accum0, ax, bx = b[2]);\n        smlal(&accum2, ax = a[15], bx);\n        smlal(&accum0, ax, bx = b[1]);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 += accum2;\n        smlal(&accum3, ax = a[8], bx);\n        smlal(&accum1, ax, bx = b[0]);\n        smlal(&accum3, ax = a[9], bx);\n        \n        smlal(&accum1, ax = a[1], bx = bm[7]);\n        smlal(&accum3, ax = a[2], bx);\n        smlal(&accum1, ax, bx = bm[6]);\n        smlal(&accum3, ax = a[3], bx);\n        smlal(&accum1, ax, bx = bm[5]);\n        smlal(&accum3, ax = a[4], bx);\n        smlal(&accum1, ax, bx = bm[4]);\n        smlal(&accum3, ax = a[5], bx);\n        smlal(&accum1, ax, bx = bm[3]);\n        smlal(&accum3, ax = a[6], bx);\n        smlal(&accum1, ax, bx = bm[2]);\n        smlal(&accum3, ax = a[7], bx);\n        smlal(&accum1, ax, bx = bm[1]);\n        \n        /* 1 terms */\n        smlal(&accum2, ax = a[0], bx);\n        smlal(&accum0, ax, bx = bm[0]);\n        smlal(&accum2, ax = a[1], bx);\n        \n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[0] = ((uint32_t)(accum0)) & mask;\n        c[1] = ((uint32_t)(accum2)) & mask;\n        c[8] = ((uint32_t)(accum1)) & mask;\n        c[9] = ((uint32_t)(accum3)) & mask;\n        \n        accumC0 = accum2 >> 28;\n        accumC1 = accum3 >> 28;\n    }\n    {\n        /* t^3 terms */\n        smull(&accum1, ax = aa[3], bx = b[15]);\n        smull(&accum3, ax = aa[4], bx);\n        smlal(&accum1, ax, bx = b[14]);\n        smlal(&accum3, ax = aa[5], bx);\n        smlal(&accum1, ax, bx = b[13]);\n        smlal(&accum3, ax = aa[6], bx);\n        smlal(&accum1, ax, bx = b[12]);\n        smlal(&accum3, ax = aa[7], bx);\n        smlal(&accum1, ax, bx = b[11]);\n        \n        accum0 = accum1;\n        accum2 = accum3;\n        \n        /* t^2 terms */\n        smlal(&accum2, ax = aa[0], bx);\n        smlal(&accum0, ax, bx = b[10]);\n        smlal(&accum2, ax = aa[1], bx);\n        smlal(&accum0, ax, bx = b[9]);\n        smlal(&accum2, ax = aa[2], bx);\n        smlal(&accum0, ax, bx = b[8]);\n        smlal(&accum2, ax = aa[3], bx);\n        \n        smlal(&accum0, ax = a[11], bx = b[7]);\n        smlal(&accum2, ax = a[12], bx);\n        smlal(&accum0, ax, bx = b[6]);\n        smlal(&accum2, ax = a[13], bx);\n        smlal(&accum0, ax, bx = b[5]);\n        smlal(&accum2, ax = a[14], bx);\n        smlal(&accum0, ax, bx = b[4]);\n        smlal(&accum2, ax = a[15], bx);\n        smlal(&accum0, ax, bx = b[3]);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 += accum2;\n        smlal(&accum3, ax = a[8], bx);\n        smlal(&accum1, ax, bx = b[2]);\n        smlal(&accum3, ax = a[9], bx);\n        smlal(&accum1, ax, bx = b[1]);\n        smlal(&accum3, ax = a[10], bx);\n        smlal(&accum1, ax, bx = b[0]);\n        smlal(&accum3, ax = a[11], bx);\n        \n        smlal(&accum1, ax = a[3], bx = bm[7]);\n        smlal(&accum3, ax = a[4], bx);\n        smlal(&accum1, ax, bx = bm[6]);\n        smlal(&accum3, ax = a[5], bx);\n        smlal(&accum1, ax, bx = bm[5]);\n        smlal(&accum3, ax = a[6], bx);\n        smlal(&accum1, ax, bx = bm[4]);\n        smlal(&accum3, ax = a[7], bx);\n        smlal(&accum1, ax, bx = bm[3]);\n        \n        /* 1 terms */\n        smlal(&accum2, ax = a[0], bx);\n        smlal(&accum0, ax, bx = bm[2]);\n        smlal(&accum2, ax = a[1], bx);\n        smlal(&accum0, ax, bx = bm[1]);\n        smlal(&accum2, ax = a[2], bx);\n        smlal(&accum0, ax, bx = bm[0]);\n        smlal(&accum2, ax = a[3], bx);\n        \n        accum0 += accumC0;\n        accum1 += accumC1;\n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[2] = ((uint32_t)(accum0)) & mask;\n        c[3] = ((uint32_t)(accum2)) & mask;\n        c[10] = ((uint32_t)(accum1)) & mask;\n        c[11] = ((uint32_t)(accum3)) & mask;\n        \n        accumC0 = accum2 >> 28;\n        accumC1 = accum3 >> 28;\n    }\n    {\n        \n        /* t^3 terms */\n        smull(&accum1, ax = aa[5], bx = b[15]);\n        smull(&accum3, ax = aa[6], bx);\n        smlal(&accum1, ax, bx = b[14]);\n        smlal(&accum3, ax = aa[7], bx);\n        smlal(&accum1, ax, bx = b[13]);\n        \n        accum0 = accum1;\n        accum2 = accum3;\n        \n        /* t^2 terms */\n        \n        smlal(&accum2, ax = aa[0], bx);\n        smlal(&accum0, ax, bx = b[12]);\n        smlal(&accum2, ax = aa[1], bx);\n        smlal(&accum0, ax, bx = b[11]);\n        smlal(&accum2, ax = aa[2], bx);\n        smlal(&accum0, ax, bx = b[10]);\n        smlal(&accum2, ax = aa[3], bx);\n        smlal(&accum0, ax, bx = b[9]);\n        smlal(&accum2, ax = aa[4], bx);\n        smlal(&accum0, ax, bx = b[8]);\n        smlal(&accum2, ax = aa[5], bx);\n        \n        \n        smlal(&accum0, ax = a[13], bx = b[7]);\n        smlal(&accum2, ax = a[14], bx);\n        smlal(&accum0, ax, bx = b[6]);\n        smlal(&accum2, ax = a[15], bx);\n        smlal(&accum0, ax, bx = b[5]);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 += accum2;\n        \n        smlal(&accum3, ax = a[8], bx);\n        smlal(&accum1, ax, bx = b[4]);\n        smlal(&accum3, ax = a[9], bx);\n        smlal(&accum1, ax, bx = b[3]);\n        smlal(&accum3, ax = a[10], bx);\n        smlal(&accum1, ax, bx = b[2]);\n        smlal(&accum3, ax = a[11], bx);\n        smlal(&accum1, ax, bx = b[1]);\n        smlal(&accum3, ax = a[12], bx);\n        smlal(&accum1, ax, bx = b[0]);\n        smlal(&accum3, ax = a[13], bx);\n        \n        \n        smlal(&accum1, ax = a[5], bx = bm[7]);\n        smlal(&accum3, ax = a[6], bx);\n        smlal(&accum1, ax, bx = bm[6]);\n        smlal(&accum3, ax = a[7], bx);\n        smlal(&accum1, ax, bx = bm[5]);\n        \n        /* 1 terms */\n        \n        smlal(&accum2, ax = a[0], bx);\n        smlal(&accum0, ax, bx = bm[4]);\n        smlal(&accum2, ax = a[1], bx);\n        smlal(&accum0, ax, bx = bm[3]);\n        smlal(&accum2, ax = a[2], bx);\n        smlal(&accum0, ax, bx = bm[2]);\n        smlal(&accum2, ax = a[3], bx);\n        smlal(&accum0, ax, bx = bm[1]);\n        smlal(&accum2, ax = a[4], bx);\n        smlal(&accum0, ax, bx = bm[0]);\n        smlal(&accum2, ax = a[5], bx);\n        \n        accum0 += accumC0;\n        accum1 += accumC1;\n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[4] = ((uint32_t)(accum0)) & mask;\n        c[5] = ((uint32_t)(accum2)) & mask;\n        c[12] = ((uint32_t)(accum1)) & mask;\n        c[13] = ((uint32_t)(accum3)) & mask;\n        \n        accumC0 = accum2 >> 28;\n        accumC1 = accum3 >> 28;\n    }\n    {\n        \n        /* t^3 terms */\n        smull(&accum1, ax = aa[7], bx = b[15]);\n        accum0 = accum1;\n        \n        /* t^2 terms */\n        \n        smull(&accum2, ax = aa[0], bx);\n        smlal(&accum0, ax, bx = b[14]);\n        smlal(&accum2, ax = aa[1], bx);\n        smlal(&accum0, ax, bx = b[13]);\n        smlal(&accum2, ax = aa[2], bx);\n        smlal(&accum0, ax, bx = b[12]);\n        smlal(&accum2, ax = aa[3], bx);\n        smlal(&accum0, ax, bx = b[11]);\n        smlal(&accum2, ax = aa[4], bx);\n        smlal(&accum0, ax, bx = b[10]);\n        smlal(&accum2, ax = aa[5], bx);\n        smlal(&accum0, ax, bx = b[9]);\n        smlal(&accum2, ax = aa[6], bx);\n        smlal(&accum0, ax, bx = b[8]);\n        smlal(&accum2, ax = aa[7], bx);\n        \n        \n        smlal(&accum0, ax = a[15], bx = b[7]);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 = accum2;\n        \n        smlal(&accum3, ax = a[8], bx);\n        smlal(&accum1, ax, bx = b[6]);\n        smlal(&accum3, ax = a[9], bx);\n        smlal(&accum1, ax, bx = b[5]);\n        smlal(&accum3, ax = a[10], bx);\n        smlal(&accum1, ax, bx = b[4]);\n        smlal(&accum3, ax = a[11], bx);\n        smlal(&accum1, ax, bx = b[3]);\n        smlal(&accum3, ax = a[12], bx);\n        smlal(&accum1, ax, bx = b[2]);\n        smlal(&accum3, ax = a[13], bx);\n        smlal(&accum1, ax, bx = b[1]);\n        smlal(&accum3, ax = a[14], bx);\n        smlal(&accum1, ax, bx = b[0]);\n        smlal(&accum3, ax = a[15], bx);\n        \n        \n        smlal(&accum1, ax = a[7], bx = bm[7]);\n        \n        /* 1 terms */\n        \n        smlal(&accum2, ax = a[0], bx);\n        smlal(&accum0, ax, bx = bm[6]);\n        smlal(&accum2, ax = a[1], bx);\n        smlal(&accum0, ax, bx = bm[5]);\n        smlal(&accum2, ax = a[2], bx);\n        smlal(&accum0, ax, bx = bm[4]);\n        smlal(&accum2, ax = a[3], bx);\n        smlal(&accum0, ax, bx = bm[3]);\n        smlal(&accum2, ax = a[4], bx);\n        smlal(&accum0, ax, bx = bm[2]);\n        smlal(&accum2, ax = a[5], bx);\n        smlal(&accum0, ax, bx = bm[1]);\n        smlal(&accum2, ax = a[6], bx);\n        smlal(&accum0, ax, bx = bm[0]);\n        smlal(&accum2, ax = a[7], bx);\n        \n        accum0 += accumC0;\n        accum1 += accumC1;\n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[6] = ((uint32_t)(accum0)) & mask;\n        c[7] = ((uint32_t)(accum2)) & mask;\n        c[14] = ((uint32_t)(accum1)) & mask;\n        c[15] = ((uint32_t)(accum3)) & mask;\n        \n        accum0 = accum2 >> 28;\n        accum1 = accum3 >> 28;\n    }\n\n    accum0 += accum1;\n    accum0 += c[8];\n    accum1 += c[0];\n    c[8] = ((uint32_t)(accum0)) & mask;\n    c[0] = ((uint32_t)(accum1)) & mask;\n    \n    accum0 >>= 28;\n    accum1 >>= 28;\n    c[9] += ((uint32_t)(accum0));\n    c[1] += ((uint32_t)(accum1));\n}\n\nvoid\np448_sqr (\n    p448_t *__restrict__ cs,\n    const p448_t *as\n) {\n    const uint32_t *a = as->limb;\n    uint32_t *c = cs->limb;\n\n    uint64_t accum0 = 0, accum1 = 0, accum2, accum3, accumC0, accumC1, tmp;\n    uint32_t mask = (1<<28) - 1;  \n\n    uint32_t bm[8];\n    \n    int i;\n    for (i=0; i<8; i++) {\n        bm[i] = a[i] - a[i+8];\n    }\n\n    uint32_t ax,bx;\n    {\n        /* t^3 terms */\n        smull2(&accum1, ax = a[9], bx = a[15]);\n        smull2(&accum3, ax = a[10], bx);\n        smlal2(&accum1, ax, bx = a[14]);\n        smlal2(&accum3, ax = a[11], bx);\n        smlal2(&accum1, ax, bx = a[13]);\n        smlal2(&accum3, ax = a[12], bx);\n        smlal(&accum1, ax, ax);\n        \n        accum0 = accum1;\n        accum2 = accum3;\n        \n        /* t^2 terms */\n        smlal2(&accum2, ax = a[8], a[9]);\n        smlal(&accum0, ax, ax);\n        \n        smlal2(&accum0, ax = a[1], bx = a[7]);\n        smlal2(&accum2, ax = a[2], bx);\n        smlal2(&accum0, ax, bx = a[6]);\n        smlal2(&accum2, ax = a[3], bx);\n        smlal2(&accum0, ax, bx = a[5]);\n        smlal2(&accum2, ax = a[4], bx);\n        smlal(&accum0, ax, ax);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 += accum2;\n        smlal2(&accum3, ax = a[0], bx = a[1]);\n        smlal(&accum1, ax, ax);\n        \n        accum1 = -accum1;\n        accum3 = -accum3;\n        accum2 = -accum2;\n        accum0 = -accum0;\n        \n        smlal2(&accum1, ax = bm[1], bx = bm[7]);\n        smlal2(&accum3, ax = bm[2], bx);\n        smlal2(&accum1, ax, bx = bm[6]);\n        smlal2(&accum3, ax = bm[3], bx);\n        smlal2(&accum1, ax, bx = bm[5]);\n        smlal2(&accum3, ax = bm[4], bx);\n        smlal(&accum1, ax, ax);\n        \n        /* 1 terms */\n        smlal2(&accum2, ax = bm[0], bx = bm[1]);\n        smlal(&accum0, ax, ax);\n        \n        tmp = -accum3; accum3 = tmp-accum2; accum2 = tmp;\n        tmp = -accum1; accum1 = tmp-accum0; accum0 = tmp;\n        \n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[0] = ((uint32_t)(accum0)) & mask;\n        c[1] = ((uint32_t)(accum2)) & mask;\n        c[8] = ((uint32_t)(accum1)) & mask;\n        c[9] = ((uint32_t)(accum3)) & mask;\n        \n        accumC0 = accum2 >> 28;\n        accumC1 = accum3 >> 28;\n    }\n    {\n        /* t^3 terms */\n        smull2(&accum1, ax = a[11], bx = a[15]);\n        smull2(&accum3, ax = a[12], bx);\n        smlal2(&accum1, ax, bx = a[14]);\n        smlal2(&accum3, ax = a[13], bx);\n        smlal(&accum1, ax, ax);\n        \n        accum0 = accum1;\n        accum2 = accum3;\n        \n        /* t^2 terms */\n        smlal2(&accum2, ax = a[8], bx = a[11]);\n        smlal2(&accum0, ax, bx = a[10]);\n        smlal2(&accum2, ax = a[9], bx);\n        smlal(&accum0, ax, ax);\n        \n        smlal2(&accum0, ax = a[3], bx = a[7]);\n        smlal2(&accum2, ax = a[4], bx);\n        smlal2(&accum0, ax, bx = a[6]);\n        smlal2(&accum2, ax = a[5], bx);\n        smlal(&accum0, ax, ax);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 += accum2;\n        smlal2(&accum3, ax = a[0], bx = a[3]);\n        smlal2(&accum1, ax, bx = a[2]);\n        smlal2(&accum3, ax = a[1], bx);\n        smlal(&accum1, ax, ax);\n        \n        accum1 = -accum1;\n        accum3 = -accum3;\n        accum2 = -accum2;\n        accum0 = -accum0;\n        \n        smlal2(&accum1, ax = bm[3], bx = bm[7]);\n        smlal2(&accum3, ax = bm[4], bx);\n        smlal2(&accum1, ax, bx = bm[6]);\n        smlal2(&accum3, ax = bm[5], bx);\n        smlal(&accum1, ax, ax);\n        \n        /* 1 terms */\n        smlal2(&accum2, ax = bm[0], bx = bm[3]);\n        smlal2(&accum0, ax, bx = bm[2]);\n        smlal2(&accum2, ax = bm[1], bx);\n        smlal(&accum0, ax, ax);\n        \n        \n        tmp = -accum3; accum3 = tmp-accum2; accum2 = tmp;\n        tmp = -accum1; accum1 = tmp-accum0; accum0 = tmp;\n        \n        accum0 += accumC0;\n        accum1 += accumC1;\n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[2] = ((uint32_t)(accum0)) & mask;\n        c[3] = ((uint32_t)(accum2)) & mask;\n        c[10] = ((uint32_t)(accum1)) & mask;\n        c[11] = ((uint32_t)(accum3)) & mask;\n        \n        accumC0 = accum2 >> 28;\n        accumC1 = accum3 >> 28;\n    }\n    {\n        \n        /* t^3 terms */\n        smull2(&accum1, ax = a[13], bx = a[15]);\n        smull2(&accum3, ax = a[14], bx);\n        smlal(&accum1, ax, ax);\n        \n        accum0 = accum1;\n        accum2 = accum3;\n        \n        /* t^2 terms */\n        \n        smlal2(&accum2, ax = a[8], bx = a[13]);\n        smlal2(&accum0, ax, bx = a[12]);\n        smlal2(&accum2, ax = a[9], bx);\n        smlal2(&accum0, ax, bx = a[11]);\n        smlal2(&accum2, ax = a[10], bx);\n        smlal(&accum0, ax, ax);\n        \n        \n        smlal2(&accum0, ax = a[5], bx = a[7]);\n        smlal2(&accum2, ax = a[6], bx);\n        smlal(&accum0, ax, ax);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 += accum2;\n        \n        smlal2(&accum3, ax = a[0], bx = a[5]);\n        smlal2(&accum1, ax, bx = a[4]);\n        smlal2(&accum3, ax = a[1], bx);\n        smlal2(&accum1, ax, bx = a[3]);\n        smlal2(&accum3, ax = a[2], bx);\n        smlal(&accum1, ax, ax);\n        \n        accum1 = -accum1;\n        accum3 = -accum3;\n        accum2 = -accum2;\n        accum0 = -accum0;\n        \n        smlal2(&accum1, ax = bm[5], bx = bm[7]);\n        smlal2(&accum3, ax = bm[6], bx);\n        smlal(&accum1, ax, ax);\n        \n        /* 1 terms */\n        \n        smlal2(&accum2, ax = bm[0], bx = bm[5]);\n        smlal2(&accum0, ax, bx = bm[4]);\n        smlal2(&accum2, ax = bm[1], bx);\n        smlal2(&accum0, ax, bx = bm[3]);\n        smlal2(&accum2, ax = bm[2], bx);\n        smlal(&accum0, ax, ax);\n        \n        \n        tmp = -accum3; accum3 = tmp-accum2; accum2 = tmp;\n        tmp = -accum1; accum1 = tmp-accum0; accum0 = tmp;\n        \n        accum0 += accumC0;\n        accum1 += accumC1;\n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[4] = ((uint32_t)(accum0)) & mask;\n        c[5] = ((uint32_t)(accum2)) & mask;\n        c[12] = ((uint32_t)(accum1)) & mask;\n        c[13] = ((uint32_t)(accum3)) & mask;\n        \n        accumC0 = accum2 >> 28;\n        accumC1 = accum3 >> 28;\n    }\n    {\n        \n        /* t^3 terms */\n        smull(&accum1, ax = a[15], bx = a[15]);\n        accum0 = accum1;\n        \n        /* t^2 terms */\n        \n        smull2(&accum2, ax = a[8], bx);\n        smlal2(&accum0, ax, bx = a[14]);\n        smlal2(&accum2, ax = a[9], bx);\n        smlal2(&accum0, ax, bx = a[13]);\n        smlal2(&accum2, ax = a[10], bx);\n        smlal2(&accum0, ax, bx = a[12]);\n        smlal2(&accum2, ax = a[11], bx);\n        smlal(&accum0, ax, ax);\n        \n        \n        smlal(&accum0, ax = a[7], bx = a[7]);\n        \n        /* t terms */\n        accum1 += accum0;\n        accum3 = accum2;\n        \n        smlal2(&accum3, ax = a[0], bx);\n        smlal2(&accum1, ax, bx = a[6]);\n        smlal2(&accum3, ax = a[1], bx);\n        smlal2(&accum1, ax, bx = a[5]);\n        smlal2(&accum3, ax = a[2], bx);\n        smlal2(&accum1, ax, bx = a[4]);\n        smlal2(&accum3, ax = a[3], bx);\n        smlal(&accum1, ax, ax);\n        \n        accum1 = -accum1;\n        accum3 = -accum3;\n        accum2 = -accum2;\n        accum0 = -accum0;\n        \n        bx = bm[7];\n        smlal(&accum1, bx, bx);\n        \n        /* 1 terms */\n        \n        smlal2(&accum2, ax = bm[0], bx);\n        smlal2(&accum0, ax, bx = bm[6]);\n        smlal2(&accum2, ax = bm[1], bx);\n        smlal2(&accum0, ax, bx = bm[5]);\n        smlal2(&accum2, ax = bm[2], bx);\n        smlal2(&accum0, ax, bx = bm[4]);\n        smlal2(&accum2, ax = bm[3], bx);\n        smlal(&accum0, ax, ax);\n        \n        tmp = -accum3; accum3 = tmp-accum2; accum2 = tmp;\n        tmp = -accum1; accum1 = tmp-accum0; accum0 = tmp;\n        \n        \n        accum0 += accumC0;\n        accum1 += accumC1;\n        accum2 += accum0 >> 28;\n        accum3 += accum1 >> 28;\n        \n        c[6] = ((uint32_t)(accum0)) & mask;\n        c[7] = ((uint32_t)(accum2)) & mask;\n        c[14] = ((uint32_t)(accum1)) & mask;\n        c[15] = ((uint32_t)(accum3)) & mask;\n        \n        accum0 = accum2 >> 28;\n        accum1 = accum3 >> 28;\n    }\n\n    accum0 += accum1;\n    accum0 += c[8];\n    accum1 += c[0];\n    c[8] = ((uint32_t)(accum0)) & mask;\n    c[0] = ((uint32_t)(accum1)) & mask;\n    \n    accum0 >>= 28;\n    accum1 >>= 28;\n    c[9] += ((uint32_t)(accum0));\n    c[1] += ((uint32_t)(accum1));\n}\n\nvoid\np448_mulw (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    uint64_t b\n) {\n    uint32_t mask = (1ull<<28)-1;  \n    const uint32_t bhi = b>>28, blo = b & mask;\n    \n    const uint32_t *a = as->limb;\n    uint32_t *c = cs->limb;\n\n    uint64_t accum0, accum8;\n\n    int i;\n\n    uint32_t c0, c8, n0, n8;\n    accum0 = widemul_32(bhi, a[15]);\n    accum8 = widemul_32(bhi, a[15] + a[7]);\n    c0 = a[0]; c8 = a[8];\n    smlal(&accum0, blo, c0);\n    smlal(&accum8, blo, c8);\n\n    c[0] = accum0 & mask; accum0 >>= 28;\n    c[8] = accum8 & mask; accum8 >>= 28;\n    \n    i=1;\n    {\n        n0 = a[i]; n8 = a[i+8];\n        smlal(&accum0, bhi, c0);\n        smlal(&accum8, bhi, c8);\n        smlal(&accum0, blo, n0);\n        smlal(&accum8, blo, n8);\n        \n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n        i++;\n    }\n    {\n        c0 = a[i]; c8 = a[i+8];\n        smlal(&accum0, bhi, n0);\n        smlal(&accum8, bhi, n8);\n        smlal(&accum0, blo, c0);\n        smlal(&accum8, blo, c8);\n\n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n        i++;\n    }\n    {\n        n0 = a[i]; n8 = a[i+8];\n        smlal(&accum0, bhi, c0);\n        smlal(&accum8, bhi, c8);\n        smlal(&accum0, blo, n0);\n        smlal(&accum8, blo, n8);\n\n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n        i++;\n    }\n    {\n        c0 = a[i]; c8 = a[i+8];\n        smlal(&accum0, bhi, n0);\n        smlal(&accum8, bhi, n8);\n        smlal(&accum0, blo, c0);\n        smlal(&accum8, blo, c8);\n\n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n        i++;\n    }\n    {\n        n0 = a[i]; n8 = a[i+8];\n        smlal(&accum0, bhi, c0);\n        smlal(&accum8, bhi, c8);\n        smlal(&accum0, blo, n0);\n        smlal(&accum8, blo, n8);\n\n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n        i++;\n    }\n    {\n        c0 = a[i]; c8 = a[i+8];\n        smlal(&accum0, bhi, n0);\n        smlal(&accum8, bhi, n8);\n        smlal(&accum0, blo, c0);\n        smlal(&accum8, blo, c8);\n        \n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n        i++;\n    }\n    {\n        n0 = a[i]; n8 = a[i+8];\n        smlal(&accum0, bhi, c0);\n        smlal(&accum8, bhi, c8);\n        smlal(&accum0, blo, n0);\n        smlal(&accum8, blo, n8);\n\n        c[i] = accum0 & mask; accum0 >>= 28;\n        c[i+8] = accum8 & mask; accum8 >>= 28;\n        i++;\n    }\n\n    accum0 += accum8 + c[8];\n    c[8] = accum0 & mask;\n    c[9] += accum0 >> 28;\n\n    accum8 += c[0];\n    c[0] = accum8 & mask;\n    c[1] += accum8 >> 28;\n}\n\nvoid\np448_strong_reduce (\n    p448_t *a\n) {\n    word_t mask = (1ull<<28)-1;\n\n    /* first, clear high */\n    a->limb[8] += a->limb[15]>>28;\n    a->limb[0] += a->limb[15]>>28;\n    a->limb[15] &= mask;\n\n    /* now the total is less than 2^448 - 2^(448-56) + 2^(448-56+8) < 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    dsword_t scarry = 0;\n    int i;\n    for (i=0; i<16; i++) {\n        scarry = scarry + a->limb[i] - ((i==8)?mask-1:mask);\n        a->limb[i] = scarry & mask;\n        scarry >>= 28;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^448\n    * so let's add back in p.  will carry back off the top for 2^448.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    word_t scarry_mask = scarry & mask;\n    dword_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<16; i++) {\n        carry = carry + a->limb[i] + ((i==8)?(scarry_mask&~1):scarry_mask);\n        a->limb[i] = carry & mask;\n        carry >>= 28;\n    }\n\n    assert(is_zero(carry + scarry));\n}\n\nmask_t\np448_is_zero (\n    const struct p448_t *a\n) {\n    struct p448_t b;\n    p448_copy(&b,a);\n    p448_strong_reduce(&b);\n\n    uint32_t any = 0;\n    int i;\n    for (i=0; i<16; i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n) {\n    int i,j;\n    p448_t red;\n    p448_copy(&red, x);\n    p448_strong_reduce(&red);\n    for (i=0; i<8; i++) {\n        uint64_t limb = red.limb[2*i] + (((uint64_t)red.limb[2*i+1])<<28);\n        for (j=0; j<7; j++) {\n            serial[7*i+j] = limb;\n            limb >>= 8;\n        }\n        assert(limb == 0);\n    }\n}\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n) {\n    int i,j;\n    for (i=0; i<8; i++) {\n        uint64_t out = 0;\n        for (j=0; j<7; j++) {\n            out |= ((uint64_t)serial[7*i+j])<<(8*j);\n        }\n        x->limb[2*i] = out & ((1ull<<28)-1);\n        x->limb[2*i+1] = out >> 28;\n    }\n    \n    /* Check for reduction.\n     *\n     * The idea is to create a variable ge which is all ones (rather, 56 ones)\n     * if and only if the low $i$ words of $x$ are >= those of p.\n     *\n     * Remember p = little_endian(1111,1111,1111,1111,1110,1111,1111,1111)\n     */\n    uint32_t ge = -1, mask = (1ull<<28)-1;\n    for (i=0; i<8; i++) {\n        ge &= x->limb[i];\n    }\n    \n    /* At this point, ge = 1111 iff bottom are all 1111.  Now propagate if 1110, or set if 1111 */\n    ge = (ge & (x->limb[8] + 1)) | is_zero(x->limb[8] ^ mask);\n    \n    /* Propagate the rest */\n    for (i=9; i<16; i++) {\n        ge &= x->limb[i];\n    }\n    \n    return ~is_zero(ge ^ mask);\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_arm_32/p448.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __P448_H__\n#define __P448_H__ 1\n\n#include \"word.h\"\n\n#include <stdint.h>\n#include <assert.h>\n\ntypedef struct p448_t {\n  uint32_t limb[16];\n} __attribute__((aligned(32))) p448_t;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_addw (\n    p448_t *a,\n    uint32_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_subw (\n    p448_t *a,\n    uint32_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_weak_reduce (\n    p448_t *inout\n) __attribute__((unused,always_inline));\n             \nvoid\np448_strong_reduce (\n    p448_t *inout\n);\n\nmask_t\np448_is_zero (\n    const p448_t *in\n);\n             \nstatic __inline__ void\np448_bias (\n    p448_t *inout,\n    int amount\n) __attribute__((unused,always_inline));\n\nvoid\np448_mul (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    const p448_t *b\n);\n\nvoid\np448_mulw (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    uint64_t b\n);\n\nvoid\np448_sqr (\n    p448_t *__restrict__ out,\n    const p448_t *a\n);\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n);\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\nvoid\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) {\n    int i;\n    out->limb[0] = x & ((1<<28)-1);\n    out->limb[1] = x>>28;\n    for (i=2; i<16; i++) {\n      out->limb[i] = 0;\n    }\n}\n\nvoid\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) {\n        ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] + b->limb[i];\n    }\n    */\n}\n\nvoid\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) {\n        ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] - b->limb[i];\n    }\n    */\n}\n\nvoid\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) {\n        ((uint32xn_t*)out)[i] = -((const uint32xn_t*)a)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = -a->limb[i];\n    }\n    */\n}\n\nvoid\np448_addw (\n    p448_t *a,\n    uint32_t x\n) {\n  a->limb[0] += x;\n}\n             \nvoid\np448_subw (\n    p448_t *a,\n    uint32_t x\n) {\n  a->limb[0] -= x;\n}\n\nvoid\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) {\n  *out = *a;\n}\n\nvoid\np448_bias (\n    p448_t *a,\n    int amt\n) {\n    uint32_t co1 = ((1ull<<28)-1)*amt, co2 = co1-amt;\n    uint32x4_t lo = {co1,co1,co1,co1}, hi = {co2,co1,co1,co1};\n    uint32x4_t *aa = (uint32x4_t*) a;\n    aa[0] += lo;\n    aa[1] += lo;\n    aa[2] += hi;\n    aa[3] += lo;\n}\n\nvoid\np448_weak_reduce (\n    p448_t *a\n) {\n    uint64_t mask = (1ull<<28) - 1;\n    uint64_t tmp = a->limb[15] >> 28;\n    int i;\n    a->limb[8] += tmp;\n    for (i=15; i>0; i--) {\n        a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>28);\n    }\n    a->limb[0] = (a->limb[0] & mask) + tmp;\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __P448_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_neon_experimental/arch_config.h",
    "content": "#define WORD_BITS 32\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_neon_experimental/p448.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"word.h\"\n#include \"p448.h\"\n\nstatic inline mask_t __attribute__((always_inline))\nis_zero (\n    word_t x\n) {\n    dword_t xx = x;\n    xx--;\n    return xx >> WORD_BITS;\n}\n\nstatic __inline__ uint64x2_t __attribute__((gnu_inline,always_inline,unused))\nxx_vaddup_u64(uint64x2_t x) {\n    __asm__ (\"vadd.s64 %f0, %e0\" : \"+w\"(x));\n    return x;\n}\n\nstatic __inline__ int64x2_t __attribute__((gnu_inline,always_inline,unused))\nvrev128_s64(int64x2_t x) {\n    __asm__ (\"vswp.s64 %e0, %f0\" : \"+w\"(x));\n    return x;\n}\n\nstatic __inline__ uint64x2_t __attribute__((gnu_inline,always_inline))\nvrev128_u64(uint64x2_t x) {\n    __asm__ (\"vswp.s64 %e0, %f0\" : \"+w\"(x));\n    return x;\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline,unused))\nsmlal (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n    *acc += (int64_t)(int32_t)a * (int64_t)(int32_t)b;\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline,unused))\nsmlal2 (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n    *acc += (int64_t)(int32_t)a * (int64_t)(int32_t)b * 2;\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline,unused))\nsmull (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n    *acc = (int64_t)(int32_t)a * (int64_t)(int32_t)b;\n}\n\nstatic inline void __attribute__((gnu_inline,always_inline,unused))\nsmull2 (\n    uint64_t *acc,\n    const uint32_t a,\n    const uint32_t b\n) {\n    *acc = (int64_t)(int32_t)a * (int64_t)(int32_t)b * 2;\n}\n\nvoid\np448_mul (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    const p448_t *bs\n) {\n    #define _bl0 \"q0\"\n    #define _bl0_0 \"d0\"\n    #define _bl0_1 \"d1\"\n    #define _bh0 \"q1\"\n    #define _bh0_0 \"d2\"\n    #define _bh0_1 \"d3\"\n    #define _bs0 \"q2\"\n    #define _bs0_0 \"d4\"\n    #define _bs0_1 \"d5\"\n    #define _bl2 \"q3\"\n    #define _bl2_0 \"d6\"\n    #define _bl2_1 \"d7\"\n    #define _bh2 \"q4\"\n    #define _bh2_0 \"d8\"\n    #define _bh2_1 \"d9\"\n    #define _bs2 \"q5\"\n    #define _bs2_0 \"d10\"\n    #define _bs2_1 \"d11\"\n\n    #define _as0 \"q6\"\n    #define _as0_0 \"d12\"\n    #define _as0_1 \"d13\"\n    #define _as2 \"q7\"\n    #define _as2_0 \"d14\"\n    #define _as2_1 \"d15\"\n    #define _al0 \"q8\"\n    #define _al0_0 \"d16\"\n    #define _al0_1 \"d17\"\n    #define _ah0 \"q9\"\n    #define _ah0_0 \"d18\"\n    #define _ah0_1 \"d19\"\n    #define _al2 \"q10\"\n    #define _al2_0 \"d20\"\n    #define _al2_1 \"d21\"\n    #define _ah2 \"q11\"\n    #define _ah2_0 \"d22\"\n    #define _ah2_1 \"d23\"\n\n    #define _a0a \"q12\"\n    #define _a0a_0 \"d24\"\n    #define _a0a_1 \"d25\"\n    #define _a0b \"q13\"\n    #define _a0b_0 \"d26\"\n    #define _a0b_1 \"d27\"\n    #define _a1a \"q14\"\n    #define _a1a_0 \"d28\"\n    #define _a1a_1 \"d29\"\n    #define _a1b \"q15\"\n    #define _a1b_0 \"d30\"\n    #define _a1b_1 \"d31\"\n    #define VMAC(op,result,a,b,n) #op\" \"result\", \"a\", \"b\"[\" #n \"]\\n\\t\"\n    #define VOP3(op,result,a,b)   #op\" \"result\", \"a\", \"b\"\\n\\t\"\n    #define VOP2(op,result,a)     #op\" \"result\", \"a\"\\n\\t\"\n\n    int32x2_t *vc = (int32x2_t*) cs->limb;\n\n    __asm__ __volatile__(\n        \n        \"vld2.32 {\"_al0_0\",\"_al0_1\",\"_ah0_0\",\"_ah0_1\"}, [%[a],:128]!\" \"\\n\\t\"\n        VOP3(vadd.i32,_as0,_al0,_ah0)\n        \n        \"vld2.32 {\"_bl0_0\",\"_bl0_1\",\"_bh0_0\",\"_bh0_1\"}, [%[b],:128]!\" \"\\n\\t\"\n        VOP3(vadd.i32,_bs0_1,_bl0_1,_bh0_1)\n        VOP3(vsub.i32,_bs0_0,_bl0_0,_bh0_0)\n            \n        \"vld2.32 {\"_bl2_0\",\"_bl2_1\",\"_bh2_0\",\"_bh2_1\"}, [%[b],:128]!\" \"\\n\\t\"\n        VOP3(vadd.i32,_bs2,_bl2,_bh2)\n            \n        \"vld2.32 {\"_al2_0\",\"_al2_1\",\"_ah2_0\",\"_ah2_1\"}, [%[a],:128]!\" \"\\n\\t\"\n        VOP3(vadd.i32,_as2,_al2,_ah2)\n        \n        VMAC(vmull.s32,_a0b,_as0_1,_bs2_1,0)\n        VMAC(vmlal.s32,_a0b,_as2_0,_bs2_0,0)\n        VMAC(vmlal.s32,_a0b,_as2_1,_bs0_1,0)\n        VMAC(vmlal.s32,_a0b,_as0_0,_bh0_0,0)\n            \n        VMAC(vmull.s32,_a1b,_as0_1,_bs2_1,1)\n        VMAC(vmlal.s32,_a1b,_as2_0,_bs2_0,1)\n        VMAC(vmlal.s32,_a1b,_as2_1,_bs0_1,1)\n        VMAC(vmlal.s32,_a1b,_as0_0,_bh0_0,1)\n            \n        VOP2(vmov,_a0a,_a0b)\n        VMAC(vmlal.s32,_a0a,_ah0_1,_bh2_1,0)\n        VMAC(vmlal.s32,_a0a,_ah2_0,_bh2_0,0)\n        VMAC(vmlal.s32,_a0a,_ah2_1,_bh0_1,0)\n        VMAC(vmlal.s32,_a0a,_ah0_0,_bl0_0,0)\n            \n        VMAC(vmlsl.s32,_a0b,_al0_1,_bl2_1,0)\n        VMAC(vmlsl.s32,_a0b,_al2_0,_bl2_0,0)\n        VMAC(vmlsl.s32,_a0b,_al2_1,_bl0_1,0)\n        VMAC(vmlal.s32,_a0b,_al0_0,_bs0_0,0)\n            \n        VOP2(vmov,_a1a,_a1b)\n        VMAC(vmlal.s32,_a1a,_ah0_1,_bh2_1,1)\n        VMAC(vmlal.s32,_a1a,_ah2_0,_bh2_0,1)\n        VMAC(vmlal.s32,_a1a,_ah2_1,_bh0_1,1)\n        VMAC(vmlal.s32,_a1a,_ah0_0,_bl0_0,1)\n            \n            VOP2(vswp,_a0b_1,_a0a_0)\n            \n        VMAC(vmlsl.s32,_a1b,_al0_1,_bl2_1,1)\n        VMAC(vmlsl.s32,_a1b,_al2_0,_bl2_0,1)\n        VMAC(vmlsl.s32,_a1b,_al2_1,_bl0_1,1)\n        VMAC(vmlal.s32,_a1b,_al0_0,_bs0_0,1)\n                \n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP3(vsub.i32,_bs0_1,_bl0_1,_bh0_1)\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a1b,_a0a,_a1b)\n                    \n                    \n        VMAC(vmull.s32,_a0a,_as2_0,_bs2_1,0)\n            VOP2(vmovn.i64,_a0b_1,_a1b)\n        VMAC(vmlal.s32,_a0a,_as2_1,_bs2_0,0)\n            VOP3(vsra.u64,_a1a,_a1b,\"#28\")\n        VMAC(vmlal.s32,_a0a,_as0_0,_bh0_1,0)\n            VOP2(vbic.i32,_a0b,\"#0xf0000000\")\n        VMAC(vmlal.s32,_a0a,_as0_1,_bh0_0,0)\n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"\n                    \n        VMAC(vmull.s32,_a1b,_as2_0,_bs2_1,1)\n        VMAC(vmlal.s32,_a1b,_as2_1,_bs2_0,1)\n        VMAC(vmlal.s32,_a1b,_as0_0,_bh0_1,1)\n        VMAC(vmlal.s32,_a1b,_as0_1,_bh0_0,1)\n\n        VOP2(vmov,_a0b_1,_a0a_1)\n        VOP3(vadd.i64,_a0b_0,_a0a_0,_a1a_0)\n        VOP3(vadd.i64,_a0a_0,_a0a_0,_a1a_1)\n        VMAC(vmlal.s32,_a0a,_ah2_0,_bh2_1,0)\n        VMAC(vmlal.s32,_a0a,_ah2_1,_bh2_0,0)\n        VMAC(vmlal.s32,_a0a,_ah0_0,_bl0_1,0)\n        VMAC(vmlal.s32,_a0a,_ah0_1,_bl0_0,0)\n\n        VMAC(vmlsl.s32,_a0b,_al2_0,_bl2_1,0)\n        VMAC(vmlsl.s32,_a0b,_al2_1,_bl2_0,0)\n        VMAC(vmlal.s32,_a0b,_al0_0,_bs0_1,0)\n        VMAC(vmlal.s32,_a0b,_al0_1,_bs0_0,0)\n\n        VOP2(vmov,_a1a,_a1b)\n        VMAC(vmlal.s32,_a1a,_ah2_0,_bh2_1,1)\n        VMAC(vmlal.s32,_a1a,_ah2_1,_bh2_0,1)\n        VMAC(vmlal.s32,_a1a,_ah0_0,_bl0_1,1)\n        VMAC(vmlal.s32,_a1a,_ah0_1,_bl0_0,1)\n\n            VOP2(vswp,_a0b_1,_a0a_0)\n\n        VMAC(vmlsl.s32,_a1b,_al2_0,_bl2_1,1)\n        VMAC(vmlsl.s32,_a1b,_al2_1,_bl2_0,1)\n        VMAC(vmlal.s32,_a1b,_al0_0,_bs0_1,1)\n        VMAC(vmlal.s32,_a1b,_al0_1,_bs0_0,1)\n                                        \n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP3(vsub.i32,_bs2_0,_bl2_0,_bh2_0)\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                        \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a1b,_a0a,_a1b)\n\n        VMAC(vmull.s32,_a0a,_as2_1,_bs2_1,0)\n            VOP2(vmovn.i64,_a0b_1,_a1b)\n        VMAC(vmlal.s32,_a0a,_as0_0,_bh2_0,0)\n            VOP3(vsra.u64,_a1a,_a1b,\"#28\")\n        VMAC(vmlal.s32,_a0a,_as0_1,_bh0_1,0)\n            VOP2(vbic.i32,_a0b,\"#0xf0000000\")\n        VMAC(vmlal.s32,_a0a,_as2_0,_bh0_0,0)\n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"\n\n        VMAC(vmull.s32,_a1b,_as2_1,_bs2_1,1)\n        VMAC(vmlal.s32,_a1b,_as0_0,_bh2_0,1)\n        VMAC(vmlal.s32,_a1b,_as0_1,_bh0_1,1)\n        VMAC(vmlal.s32,_a1b,_as2_0,_bh0_0,1)\n\n        VOP2(vmov,_a0b_1,_a0a_1)\n        VOP3(vadd.i64,_a0b_0,_a0a_0,_a1a_0)\n        VOP3(vadd.i64,_a0a_0,_a0a_0,_a1a_1)\n        VMAC(vmlal.s32,_a0a,_ah2_1,_bh2_1,0)\n        VMAC(vmlal.s32,_a0a,_ah0_0,_bl2_0,0)\n        VMAC(vmlal.s32,_a0a,_ah0_1,_bl0_1,0)\n        VMAC(vmlal.s32,_a0a,_ah2_0,_bl0_0,0)\n\n        VMAC(vmlsl.s32,_a0b,_al2_1,_bl2_1,0)\n        VMAC(vmlal.s32,_a0b,_al0_0,_bs2_0,0)\n        VMAC(vmlal.s32,_a0b,_al0_1,_bs0_1,0)\n        VMAC(vmlal.s32,_a0b,_al2_0,_bs0_0,0)\n\n        VOP2(vmov,_a1a,_a1b)\n        VMAC(vmlal.s32,_a1a,_ah2_1,_bh2_1,1)\n        VMAC(vmlal.s32,_a1a,_ah0_0,_bl2_0,1)\n        VMAC(vmlal.s32,_a1a,_ah0_1,_bl0_1,1)\n        VMAC(vmlal.s32,_a1a,_ah2_0,_bl0_0,1)\n\n            VOP2(vswp,_a0b_1,_a0a_0)\n\n        VMAC(vmlsl.s32,_a1b,_al2_1,_bl2_1,1)\n        VMAC(vmlal.s32,_a1b,_al0_0,_bs2_0,1)\n        VMAC(vmlal.s32,_a1b,_al0_1,_bs0_1,1)\n        VMAC(vmlal.s32,_a1b,_al2_0,_bs0_0,1)\n                                                                \n            VOP3(vsub.i32,_bs2_1,_bl2_1,_bh2_1)\n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                        \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a1b,_a0a,_a1b)\n\n        VMAC(vmull.s32,_a0a,_as0_0,_bh2_1,0)\n            VOP2(vmovn.i64,_a0b_1,_a1b)\n        VMAC(vmlal.s32,_a0a,_as0_1,_bh2_0,0)\n            VOP3(vsra.u64,_a1a,_a1b,\"#28\")\n        VMAC(vmlal.s32,_a0a,_as2_0,_bh0_1,0)\n            VOP2(vbic.i32,_a0b,\"#0xf0000000\")\n        VMAC(vmlal.s32,_a0a,_as2_1,_bh0_0,0)\n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"\n\n        VMAC(vmull.s32,_a1b,_as0_0,_bh2_1,1)\n        VMAC(vmlal.s32,_a1b,_as0_1,_bh2_0,1)\n        VMAC(vmlal.s32,_a1b,_as2_0,_bh0_1,1)\n        VMAC(vmlal.s32,_a1b,_as2_1,_bh0_0,1)\n\n        VOP2(vmov,_a0b_1,_a0a_1)\n        VOP3(vadd.i64,_a0b_0,_a0a_0,_a1a_0)\n        VOP3(vadd.i64,_a0a_0,_a0a_0,_a1a_1)\n        VMAC(vmlal.s32,_a0a,_ah0_0,_bl2_1,0)\n        VMAC(vmlal.s32,_a0a,_ah0_1,_bl2_0,0)\n        VMAC(vmlal.s32,_a0a,_ah2_0,_bl0_1,0)\n        VMAC(vmlal.s32,_a0a,_ah2_1,_bl0_0,0)\n\n        VMAC(vmlal.s32,_a0b,_al0_0,_bs2_1,0)\n        VMAC(vmlal.s32,_a0b,_al0_1,_bs2_0,0)\n        VMAC(vmlal.s32,_a0b,_al2_0,_bs0_1,0)\n        VMAC(vmlal.s32,_a0b,_al2_1,_bs0_0,0)\n\n        VOP2(vmov,_a1a,_a1b)\n        VMAC(vmlal.s32,_a1a,_ah0_0,_bl2_1,1)\n        VMAC(vmlal.s32,_a1a,_ah0_1,_bl2_0,1)\n        VMAC(vmlal.s32,_a1a,_ah2_0,_bl0_1,1)\n        VMAC(vmlal.s32,_a1a,_ah2_1,_bl0_0,1)\n\n            VOP2(vswp,_a0b_1,_a0a_0)\n\n        VMAC(vmlal.s32,_a1b,_al0_0,_bs2_1,1)\n        VMAC(vmlal.s32,_a1b,_al0_1,_bs2_0,1)\n        VMAC(vmlal.s32,_a1b,_al2_0,_bs0_1,1)\n        VMAC(vmlal.s32,_a1b,_al2_1,_bs0_0,1)\n                        \n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                                                                                            \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a0a,_a0a,_a1b)\n\n            VOP2(vmovn.i64,_a0b_1,_a0a)\n            VOP3(vsra.u64,_a1a,_a0a,\"#28\")\n                                                                                            \n            VOP2(vbic.i32,_a0b,\"#0xf0000000\") \n                                                                                            \n        VOP2(vswp,_a1a_0,_a1a_1)\n                                                                                            \n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"  \n            \"sub %[c], #64\" \"\\n\\t\"\n                                                                                                \n        VOP3(vadd.i64,_a1a_1,_a1a_1,_a1a_0)\n        \n            \"vldmia %[c], {\"_a0a_0\", \"_a0a_1\", \"_a0b_0\"}\" \"\\n\\t\"\n            VOP2(vaddw.s32,_a1a,_a0a_0)\n            VOP2(vmovn.i64,_a0a_0,_a1a)\n            VOP2(vshr.s64,_a1a,\"#28\")\n                                                \n            VOP2(vaddw.s32,_a1a,_a0a_1)\n            VOP2(vmovn.i64,_a0a_1,_a1a)\n            VOP2(vshr.s64,_a1a,\"#28\")\n                                                                                                    \n            VOP2(vbic.i32,_a0a,\"#0xf0000000\")\n                                                \n            VOP2(vaddw.s32,_a1a,_a0b_0) \n            VOP2(vmovn.i64,_a0b_0,_a1a)\n            \n            \"vstmia %[c], {\"_a0a_0\", \"_a0a_1\", \"_a0b_0\"}\" \"\\n\\t\"\n        \n        : [a]\"+r\"(as)\n        , [b]\"+r\"(bs)\n        , [c]\"+r\"(vc)\n                            \n        :: \"q0\",\"q1\",\"q2\",\"q3\",\n            \"q4\",\"q5\",\"q6\",\"q7\",\n            \"q8\",\"q9\",\"q10\",\"q11\",\n            \"q12\",\"q13\",\"q14\",\"q15\",\n            \"memory\"\n    );\n}\n\nvoid\np448_sqr (\n    p448_t *__restrict__ cs,\n    const p448_t *bs\n) {\n    int32x2_t *vc = (int32x2_t*) cs->limb;\n\n    __asm__ __volatile__ (\n        \"vld2.32 {\"_bl0_0\",\"_bl0_1\",\"_bh0_0\",\"_bh0_1\"}, [%[b],:128]!\" \"\\n\\t\"\n        VOP3(vadd.i32,_bs0_1,_bl0_1,_bh0_1) /* 0 .. 2^30 */\n        VOP3(vsub.i32,_bs0_0,_bl0_0,_bh0_0) /* +- 2^29 */\n        VOP3(vadd.i32,_as0,_bl0,_bh0)       /* 0 .. 2^30 */\n            \n        \"vld2.32 {\"_bl2_0\",\"_bl2_1\",\"_bh2_0\",\"_bh2_1\"}, [%[b],:128]!\" \"\\n\\t\"\n        VOP3(vadd.i32,_bs2,_bl2,_bh2)       /* 0 .. 2^30 */\n        VOP2(vmov,_as2,_bs2)\n        \n        VMAC(vqdmull.s32,_a0b,_as0_1,_bs2_1,0) /* 0 .. 8 * 2^58.  danger for vqdmlal is 32 */\n        VMAC(vmlal.s32,_a0b,_as2_0,_bs2_0,0)   /* 0 .. 12 */\n        VMAC(vmlal.s32,_a0b,_as0_0,_bh0_0,0)   /* 0 .. 14 */\n            \n        VMAC(vqdmull.s32,_a1b,_as0_1,_bs2_1,1) /* 0 .. 8 */\n        VMAC(vmlal.s32,_a1b,_as2_0,_bs2_0,1)   /* 0 .. 14 */\n        VMAC(vmlal.s32,_a1b,_as0_0,_bh0_0,1)   /* 0 .. 16 */\n            \n        VOP2(vmov,_a0a,_a0b)                   /* 0 .. 14 */\n        VMAC(vqdmlal.s32,_a0a,_bh0_1,_bh2_1,0) /* 0 .. 16 */\n        VMAC(vmlal.s32,_a0a,_bh2_0,_bh2_0,0)   /* 0 .. 17 */\n        VMAC(vmlal.s32,_a0a,_bh0_0,_bl0_0,0)   /* 0 .. 18 */\n            \n        VMAC(vqdmlsl.s32,_a0b,_bl0_1,_bl2_1,0) /*-2 .. 14 */\n        VMAC(vmlsl.s32,_a0b,_bl2_0,_bl2_0,0)   /*-3 .. 14 */\n        VMAC(vmlal.s32,_a0b,_bl0_0,_bs0_0,0)   /*-4 .. 15 */\n            \n        VOP2(vmov,_a1a,_a1b)\n        VMAC(vqdmlal.s32,_a1a,_bh0_1,_bh2_1,1) /* 0 .. 18 */\n        VMAC(vmlal.s32,_a1a,_bh2_0,_bh2_0,1)   /* 0 .. 19 */\n        VMAC(vmlal.s32,_a1a,_bh0_0,_bl0_0,1)   /* 0 .. 20 */\n            \n            VOP2(vswp,_a0b_1,_a0a_0)\n            \n        VMAC(vqdmlsl.s32,_a1b,_bl0_1,_bl2_1,1) /*-2 .. 16 */\n        VMAC(vmlsl.s32,_a1b,_bl2_0,_bl2_0,1)   /*-3 .. 16 */\n        VMAC(vmlal.s32,_a1b,_bl0_0,_bs0_0,1)   /*-4 .. 17 */\n                \n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP3(vsub.i32,_bs0_1,_bl0_1,_bh0_1)\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a1b,_a0a,_a1b)\n                    \n                    \n        VMAC(vqdmull.s32,_a0a,_as2_0,_bs2_1,0) /* 0 .. 8 */\n            VOP2(vmovn.i64,_a0b_1,_a1b)\n            VOP3(vsra.u64,_a1a,_a1b,\"#28\")\n        VMAC(vqdmlal.s32,_a0a,_as0_0,_bh0_1,0) /* 0 .. 12 */\n            VOP2(vbic.i32,_a0b,\"#0xf0000000\")\n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"\n                    \n        VMAC(vqdmull.s32,_a1b,_as2_0,_bs2_1,1) /* 0 .. 8 */\n        VMAC(vqdmlal.s32,_a1b,_as0_0,_bh0_1,1) /* 0 .. 12 */\n\n        VOP2(vmov,_a0b,_a0a)               /* 0 .. 12 */\n        VMAC(vqdmlal.s32,_a0a,_bh2_0,_bh2_1,0) /* 0 .. 14 */\n        VMAC(vqdmlal.s32,_a0a,_bh0_0,_bl0_1,0) /* 0 .. 16 */\n\n        VMAC(vqdmlsl.s32,_a0b,_bl2_0,_bl2_1,0) /*-2 .. 12 */\n        VMAC(vqdmlal.s32,_a0b,_bl0_0,_bs0_1,0) /*-4 .. 14 */\n        VOP3(vadd.i64,_a0a_0,_a0a_0,_a1a_1)\n        VOP3(vadd.i64,_a0b_0,_a0b_0,_a1a_0)\n\n        VOP2(vmov,_a1a,_a1b)                   /* 0 .. 12 */\n        VMAC(vqdmlal.s32,_a1a,_bh2_0,_bh2_1,1) /* 0 .. 14 */\n        VMAC(vqdmlal.s32,_a1a,_bh0_0,_bl0_1,1) /* 0 .. 16 */\n\n            VOP2(vswp,_a0b_1,_a0a_0)\n\n        VMAC(vqdmlsl.s32,_a1b,_bl2_0,_bl2_1,1) /*-2 .. 12 */\n        VMAC(vqdmlal.s32,_a1b,_bl0_0,_bs0_1,1) /*-4 .. 14 */\n                                        \n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP3(vsub.i32,_bs2_0,_bl2_0,_bh2_0)\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                        \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a1b,_a0a,_a1b)\n\n        VMAC(vmull.s32,_a0a,_as2_1,_bs2_1,0)\n            VOP2(vmovn.i64,_a0b_1,_a1b)\n        VMAC(vqdmlal.s32,_a0a,_as0_0,_bh2_0,0)\n            VOP3(vsra.u64,_a1a,_a1b,\"#28\")\n        VMAC(vmlal.s32,_a0a,_as0_1,_bh0_1,0)\n            VOP2(vbic.i32,_a0b,\"#0xf0000000\")\n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"\n\n        VMAC(vmull.s32,_a1b,_as2_1,_bs2_1,1)\n        VMAC(vqdmlal.s32,_a1b,_as0_0,_bh2_0,1)\n        VMAC(vmlal.s32,_a1b,_as0_1,_bh0_1,1)\n\n        VOP2(vmov,_a0b_1,_a0a_1)\n        VOP3(vadd.i64,_a0b_0,_a0a_0,_a1a_0)\n        VOP3(vadd.i64,_a0a_0,_a0a_0,_a1a_1)\n        VMAC(vmlal.s32,_a0a,_bh2_1,_bh2_1,0)\n        VMAC(vqdmlal.s32,_a0a,_bh0_0,_bl2_0,0)\n        VMAC(vmlal.s32,_a0a,_bh0_1,_bl0_1,0)\n\n        VMAC(vmlsl.s32,_a0b,_bl2_1,_bl2_1,0)\n        VMAC(vqdmlal.s32,_a0b,_bl0_0,_bs2_0,0)\n        VMAC(vmlal.s32,_a0b,_bl0_1,_bs0_1,0)\n\n        VOP2(vmov,_a1a,_a1b)\n        VMAC(vmlal.s32,_a1a,_bh2_1,_bh2_1,1)\n        VMAC(vqdmlal.s32,_a1a,_bh0_0,_bl2_0,1)\n        VMAC(vmlal.s32,_a1a,_bh0_1,_bl0_1,1)\n\n            VOP2(vswp,_a0b_1,_a0a_0)\n\n        VMAC(vmlsl.s32,_a1b,_bl2_1,_bl2_1,1)\n        VMAC(vqdmlal.s32,_a1b,_bl0_0,_bs2_0,1)\n        VMAC(vmlal.s32,_a1b,_bl0_1,_bs0_1,1)\n                                                                \n            VOP3(vsub.i32,_bs2_1,_bl2_1,_bh2_1)\n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                        \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a1b,_a0a,_a1b)\n\n        VMAC(vqdmull.s32,_a0a,_as0_0,_bh2_1,0)\n            VOP2(vmovn.i64,_a0b_1,_a1b)\n            VOP3(vsra.u64,_a1a,_a1b,\"#28\")\n        VMAC(vqdmlal.s32,_a0a,_as2_0,_bh0_1,0)\n            VOP2(vbic.i32,_a0b,\"#0xf0000000\")\n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"\n\n        VMAC(vqdmull.s32,_a1b,_as0_0,_bh2_1,1)\n        VMAC(vqdmlal.s32,_a1b,_as2_0,_bh0_1,1)\n\n        VOP2(vmov,_a0b_1,_a0a_1)\n        VOP3(vadd.i64,_a0b_0,_a0a_0,_a1a_0)\n        VOP3(vadd.i64,_a0a_0,_a0a_0,_a1a_1)\n        VMAC(vqdmlal.s32,_a0a,_bh0_0,_bl2_1,0)\n        VMAC(vqdmlal.s32,_a0a,_bh2_0,_bl0_1,0)\n\n        VMAC(vqdmlal.s32,_a0b,_bl0_0,_bs2_1,0)\n        VMAC(vqdmlal.s32,_a0b,_bl2_0,_bs0_1,0)\n\n        VOP2(vmov,_a1a,_a1b)\n        VMAC(vqdmlal.s32,_a1a,_bh0_0,_bl2_1,1)\n        VMAC(vqdmlal.s32,_a1a,_bh2_0,_bl0_1,1)\n\n            VOP2(vswp,_a0b_1,_a0a_0)\n\n        VMAC(vqdmlal.s32,_a1b,_bl0_0,_bs2_1,1)\n        VMAC(vqdmlal.s32,_a1b,_bl2_0,_bs0_1,1)\n                        \n            VOP3(vsra.u64,_a0a,_a0b,\"#28\")\n            VOP2(vmovn.i64,_a0b_0,_a0b)\n                                                                                            \n            VOP2(vswp,_a1b_1,_a1a_0)\n            VOP3(vadd.i64,_a0a,_a0a,_a1b)\n\n            VOP2(vmovn.i64,_a0b_1,_a0a)\n            VOP3(vsra.u64,_a1a,_a0a,\"#28\")\n                                                                                            \n            VOP2(vbic.i32,_a0b,\"#0xf0000000\") \n                                                                                            \n        VOP2(vswp,_a1a_0,_a1a_1)\n                                                                                            \n            \"vstmia %[c]!, {\"_a0b_0\", \"_a0b_1\"}\" \"\\n\\t\"  \n            \"sub %[c], #64\" \"\\n\\t\"\n                                                                                                \n        VOP3(vadd.i64,_a1a_1,_a1a_1,_a1a_0)\n        \n            \"vldmia %[c], {\"_a0a_0\", \"_a0a_1\", \"_a0b_0\"}\" \"\\n\\t\"\n            VOP2(vaddw.s32,_a1a,_a0a_0)\n            VOP2(vmovn.i64,_a0a_0,_a1a)\n            VOP2(vshr.s64,_a1a,\"#28\")\n                                                \n            VOP2(vaddw.s32,_a1a,_a0a_1)\n            VOP2(vmovn.i64,_a0a_1,_a1a)\n            VOP2(vshr.s64,_a1a,\"#28\")\n                                                                                                    \n            VOP2(vbic.i32,_a0a,\"#0xf0000000\")\n                                                \n            VOP2(vaddw.s32,_a1a,_a0b_0) \n            VOP2(vmovn.i64,_a0b_0,_a1a)\n            \n            \"vstmia %[c], {\"_a0a_0\", \"_a0a_1\", \"_a0b_0\"}\" \"\\n\\t\"\n        \n        : [b]\"+r\"(bs)\n        , [c]\"+r\"(vc)\n                            \n        :: \"q0\",\"q1\",\"q2\",\"q3\",\n            \"q4\",\"q5\",\"q6\",\"q7\",\n            \"q12\",\"q13\",\"q14\",\"q15\",\n            \"memory\"\n    );\n}\n\nvoid\np448_mulw (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    uint64_t b\n) { \n    uint32x2_t vmask = {(1<<28) - 1, (1<<28)-1};\n    \n    uint64x2_t accum;\n    const uint32x2_t *va = (const uint32x2_t *) as->limb;\n    uint32x2_t *vo = (uint32x2_t *) cs->limb;\n    uint32x2_t vc, vn;\n    uint32x2_t vb = {b & ((1<<28)-1), b>>28};\n    \n    accum = vmull_lane_u32(va[7], vb, 1);\n    accum = xx_vaddup_u64(vrev128_u64(accum));\n    \n    vc = va[0];\n    accum = vmlal_lane_u32(accum, vc, vb, 0);\n    vo[0] = vmovn_u64(accum) & vmask;\n    accum = vshrq_n_u64(accum,28);\n    \n    /* PERF: the right way to do this is to reduce behind, i.e.\n     * vmull + vmlal round 0\n     * vmull + vmlal round 1\n     * vmull + vmlal round 2\n     * vsraq round 0, 1\n     * vmull + vmlal round 3\n     * vsraq round 1, 2\n     * ...\n     */\n    \n    int i;\n    for (i=1; i<8; i++) {\n        vn = va[i];\n        accum = vmlal_lane_u32(accum, vc, vb, 1);\n        accum = vmlal_lane_u32(accum, vn, vb, 0);\n        vo[i] = vmovn_u64(accum) & vmask;\n        accum = vshrq_n_u64(accum,28);\n        vc = vn;\n    }\n        \n    accum = xx_vaddup_u64(vrev128_u64(accum));\n    accum = vaddw_u32(accum, vo[0]);\n    vo[0] = vmovn_u64(accum) & vmask;\n    \n    accum = vshrq_n_u64(accum,28);\n    vo[1] += vmovn_u64(accum);\n}\n\n/* TODO: vectorize? */\nvoid\np448_strong_reduce (\n    p448_t *a\n) { \n    word_t mask = (1ull<<28)-1;\n\n    /* first, clear high */\n    a->limb[1] += a->limb[15]>>28;\n    a->limb[0] += a->limb[15]>>28;\n    a->limb[15] &= mask;\n\n    /* now the total is less than 2^448 - 2^(448-56) + 2^(448-56+8) < 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    dsword_t scarry = 0;\n    int i;\n    for (i=0; i<16; i++) {\n        scarry = scarry + a->limb[LIMBPERM(i)] - ((i==8)?mask-1:mask);\n        a->limb[LIMBPERM(i)] = scarry & mask;\n        scarry >>= 28;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^448\n    * so let's add back in p.  will carry back off the top for 2^448.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    word_t scarry_mask = scarry & mask;\n    dword_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<16; i++) {\n        carry = carry + a->limb[LIMBPERM(i)] + ((i==8)?(scarry_mask&~1):scarry_mask);\n        a->limb[LIMBPERM(i)] = carry & mask;\n        carry >>= 28;\n    }\n\n    assert(is_zero(carry + scarry));\n}\n\nmask_t\np448_is_zero (\n    const struct p448_t *a\n) {\n    struct p448_t b;\n    p448_copy(&b,a);\n    p448_strong_reduce(&b);\n\n    uint32_t any = 0;\n    int i;\n    for (i=0; i<16; i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n) {\n    int i,j;\n    p448_t red;\n    p448_copy(&red, x);\n    p448_strong_reduce(&red);\n    \n    for (i=0; i<8; i++) {\n        uint64_t limb = red.limb[LIMBPERM(2*i)] + (((uint64_t)red.limb[LIMBPERM(2*i+1)])<<28);\n        for (j=0; j<7; j++) {\n            serial[7*i+j] = limb;\n            limb >>= 8;\n        }\n        assert(limb == 0);\n    }\n}\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n) {\n    int i,j;\n    for (i=0; i<8; i++) {\n        uint64_t out = 0;\n        for (j=0; j<7; j++) {\n            out |= ((uint64_t)serial[7*i+j])<<(8*j);\n        }\n        x->limb[LIMBPERM(2*i)] = out & ((1ull<<28)-1);\n        x->limb[LIMBPERM(2*i+1)] = out >> 28;\n    }\n    \n    /* Check for reduction.\n     *\n     * The idea is to create a variable ge which is all ones (rather, 56 ones)\n     * if and only if the low $i$ words of $x$ are >= those of p.\n     *\n     * Remember p = little_endian(1111,1111,1111,1111,1110,1111,1111,1111)\n     */\n    uint32_t ge = -1, mask = (1ull<<28)-1;\n    for (i=0; i<8; i++) {\n        ge &= x->limb[LIMBPERM(i)];\n    }\n    \n    /* At this point, ge = 1111 iff bottom are all 1111.  Now propagate if 1110, or set if 1111 */\n    ge = (ge & (x->limb[LIMBPERM(8)] + 1)) | is_zero(x->limb[LIMBPERM(8)] ^ mask);\n    \n    /* Propagate the rest */\n    for (i=9; i<16; i++) {\n        ge &= x->limb[LIMBPERM(i)];\n    }\n    \n    return ~is_zero(ge ^ mask);\n}\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_neon_experimental/p448.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __P448_H__\n#define __P448_H__ 1\n\n#include \"word.h\"\n\n#include <stdint.h>\n#include <assert.h>\n\ntypedef struct p448_t {\n  uint32_t limb[16];\n} __attribute__((aligned(32))) p448_t;\n\n#define LIMBPERM(x) (((x)<<1 | (x)>>3) & 15)\n#define USE_NEON_PERM 1\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_addw (\n    p448_t *a,\n    uint32_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_subw (\n    p448_t *a,\n    uint32_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_weak_reduce (\n    p448_t *inout\n) __attribute__((unused,always_inline));\n             \nvoid\np448_strong_reduce (\n    p448_t *inout\n);\n\nmask_t\np448_is_zero (\n    const p448_t *in\n);\n             \nstatic __inline__ void\np448_bias (\n    p448_t *inout,\n    int amount\n) __attribute__((unused,always_inline));\n\nvoid\np448_mul (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    const p448_t *b\n);\n\nvoid\np448_mulw (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    uint64_t b\n);\n\nvoid\np448_sqr (\n    p448_t *__restrict__ out,\n    const p448_t *a\n);\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n);\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\nvoid\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) {\n    int i;\n    for (i=0; i<16; i++) {\n      out->limb[i] = 0;\n    }\n    out->limb[0] = x & ((1<<28)-1);\n    out->limb[2] = x>>28;\n}\n\nvoid\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) {\n        ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] + ((const uint32xn_t*)b)[i];\n    }\n}\n\nvoid\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) {\n        ((uint32xn_t*)out)[i] = ((const uint32xn_t*)a)[i] - ((const uint32xn_t*)b)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] - b->limb[i];\n    }\n    */\n}\n\nvoid\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint32xn_t); i++) {\n        ((uint32xn_t*)out)[i] = -((const uint32xn_t*)a)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = -a->limb[i];\n    }\n    */\n}\n\nvoid\np448_addw (\n    p448_t *a,\n    uint32_t x\n) {\n  a->limb[0] += x;\n}\n             \nvoid\np448_subw (\n    p448_t *a,\n    uint32_t x\n) {\n  a->limb[0] -= x;\n}\n\nvoid\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) {\n  *out = *a;\n}\n\nvoid\np448_bias (\n    p448_t *a,\n    int amt\n) {\n    uint32_t co1 = ((1ull<<28)-1)*amt, co2 = co1-amt;\n    uint32x4_t lo = {co1,co2,co1,co1}, hi = {co1,co1,co1,co1};\n    uint32x4_t *aa = (uint32x4_t*) a;\n    aa[0] += lo;\n    aa[1] += hi;\n    aa[2] += hi;\n    aa[3] += hi;\n}\n\nvoid\np448_weak_reduce (\n    p448_t *a\n) {\n\n    uint32x2_t *aa = (uint32x2_t*) a, vmask = {(1ull<<28)-1, (1ull<<28)-1}, vm2 = {0,-1},\n       tmp = vshr_n_u32(aa[7],28);\n       \n    int i;\n    for (i=7; i>=1; i--) {\n        aa[i] = vsra_n_u32(aa[i] & vmask, aa[i-1], 28);\n    }\n    aa[0] = (aa[0] & vmask) + vrev64_u32(tmp) + (tmp&vm2);\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __P448_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_ref64/arch_config.h",
    "content": "#define WORD_BITS 64\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_ref64/p448.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"p448.h\"\n\nstatic __inline__ __uint128_t widemul(\n    const uint64_t a,\n    const uint64_t b\n) {\n    return ((__uint128_t)a) * ((__uint128_t)b);\n}\n\nstatic __inline__ uint64_t is_zero(uint64_t a) {\n    /* let's hope the compiler isn't clever enough to optimize this. */\n    return (((__uint128_t)a)-1)>>64;\n}\n\nvoid\np448_mul (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    const p448_t *bs\n) {\n    const uint64_t *a = as->limb, *b = bs->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum1 = 0, accum2;\n    uint64_t mask = (1ull<<56) - 1;  \n\n    uint64_t aa[4], bb[4], bbb[4];\n\n    unsigned int i;\n    for (i=0; i<4; i++) {\n        aa[i]  = a[i] + a[i+4];\n        bb[i]  = b[i] + b[i+4];\n        bbb[i] = bb[i] + b[i+4];\n    }\n\n    int I_HATE_UNROLLED_LOOPS = 0;\n\n    if (I_HATE_UNROLLED_LOOPS) {\n        /* The compiler probably won't unroll this,\n         * so it's like 80% slower.\n         */\n        for (i=0; i<4; i++) {\n            accum2 = 0;\n\n            unsigned int j;\n            for (j=0; j<=i; j++) {\n                accum2 += widemul(a[j],   b[i-j]);\n                accum1 += widemul(aa[j], bb[i-j]);\n                accum0 += widemul(a[j+4], b[i-j+4]);\n            }\n            for (; j<4; j++) {\n                accum2 += widemul(a[j],   b[i-j+8]);\n                accum1 += widemul(aa[j], bbb[i-j+4]);\n                accum0 += widemul(a[j+4], bb[i-j+4]);\n            }\n\n            accum1 -= accum2;\n            accum0 += accum2;\n\n            c[i]   = ((uint64_t)(accum0)) & mask;\n            c[i+4] = ((uint64_t)(accum1)) & mask;\n\n            accum0 >>= 56;\n            accum1 >>= 56;\n        }\n    } else {\n        accum2  = widemul(a[0],  b[0]);\n        accum1 += widemul(aa[0], bb[0]);\n        accum0 += widemul(a[4],  b[4]);\n\n        accum2 += widemul(a[1],  b[7]);\n        accum1 += widemul(aa[1], bbb[3]);\n        accum0 += widemul(a[5],  bb[3]);\n\n        accum2 += widemul(a[2],  b[6]);\n        accum1 += widemul(aa[2], bbb[2]);\n        accum0 += widemul(a[6],  bb[2]);\n\n        accum2 += widemul(a[3],  b[5]);\n        accum1 += widemul(aa[3], bbb[1]);\n        accum0 += widemul(a[7],  bb[1]);\n\n        accum1 -= accum2;\n        accum0 += accum2;\n\n        c[0] = ((uint64_t)(accum0)) & mask;\n        c[4] = ((uint64_t)(accum1)) & mask;\n\n        accum0 >>= 56;\n        accum1 >>= 56;\n\n        accum2  = widemul(a[0],  b[1]);\n        accum1 += widemul(aa[0], bb[1]);\n        accum0 += widemul(a[4],  b[5]);\n\n        accum2 += widemul(a[1],  b[0]);\n        accum1 += widemul(aa[1], bb[0]);\n        accum0 += widemul(a[5],  b[4]);\n\n        accum2 += widemul(a[2],  b[7]);\n        accum1 += widemul(aa[2], bbb[3]);\n        accum0 += widemul(a[6],  bb[3]);\n\n        accum2 += widemul(a[3],  b[6]);\n        accum1 += widemul(aa[3], bbb[2]);\n        accum0 += widemul(a[7],  bb[2]);\n\n        accum1 -= accum2;\n        accum0 += accum2;\n\n        c[1] = ((uint64_t)(accum0)) & mask;\n        c[5] = ((uint64_t)(accum1)) & mask;\n\n        accum0 >>= 56;\n        accum1 >>= 56;\n\n        accum2  = widemul(a[0],  b[2]);\n        accum1 += widemul(aa[0], bb[2]);\n        accum0 += widemul(a[4],  b[6]);\n\n        accum2 += widemul(a[1],  b[1]);\n        accum1 += widemul(aa[1], bb[1]);\n        accum0 += widemul(a[5],  b[5]);\n\n        accum2 += widemul(a[2],  b[0]);\n        accum1 += widemul(aa[2], bb[0]);\n        accum0 += widemul(a[6],  b[4]);\n\n        accum2 += widemul(a[3],  b[7]);\n        accum1 += widemul(aa[3], bbb[3]);\n        accum0 += widemul(a[7],  bb[3]);\n\n        accum1 -= accum2;\n        accum0 += accum2;\n\n        c[2] = ((uint64_t)(accum0)) & mask;\n        c[6] = ((uint64_t)(accum1)) & mask;\n\n        accum0 >>= 56;\n        accum1 >>= 56;\n\n        accum2  = widemul(a[0],  b[3]);\n        accum1 += widemul(aa[0], bb[3]);\n        accum0 += widemul(a[4],  b[7]);\n\n        accum2 += widemul(a[1],  b[2]);\n        accum1 += widemul(aa[1], bb[2]);\n        accum0 += widemul(a[5],  b[6]);\n\n        accum2 += widemul(a[2],  b[1]);\n        accum1 += widemul(aa[2], bb[1]);\n        accum0 += widemul(a[6],  b[5]);\n\n        accum2 += widemul(a[3],  b[0]);\n        accum1 += widemul(aa[3], bb[0]);\n        accum0 += widemul(a[7],  b[4]);\n\n        accum1 -= accum2;\n        accum0 += accum2;\n\n        c[3] = ((uint64_t)(accum0)) & mask;\n        c[7] = ((uint64_t)(accum1)) & mask;\n\n        accum0 >>= 56;\n        accum1 >>= 56;\n    } /* !I_HATE_UNROLLED_LOOPS */\n\n    accum0 += accum1;\n    accum0 += c[4];\n    accum1 += c[0];\n    c[4] = ((uint64_t)(accum0)) & mask;\n    c[0] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    c[5] += ((uint64_t)(accum0));\n    c[1] += ((uint64_t)(accum1));\n}\n\nvoid\np448_mulw (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    uint64_t b\n) {\n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum4 = 0;\n    uint64_t mask = (1ull<<56) - 1;  \n\n    int i;\n    for (i=0; i<4; i++) {\n        accum0 += widemul(b, a[i]);\n        accum4 += widemul(b, a[i+4]);\n        c[i]   = accum0 & mask; accum0 >>= 56;\n        c[i+4] = accum4 & mask; accum4 >>= 56;\n    }\n    \n    accum0 += accum4 + c[4];\n    c[4] = accum0 & mask;\n    c[5] += accum0 >> 56;\n\n    accum4 += c[0];\n    c[0] = accum4 & mask;\n    c[1] += accum4 >> 56;\n}\n\nvoid\np448_sqr (\n    p448_t *__restrict__ cs,\n    const p448_t *as\n) {\n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum1 = 0, accum2;\n    uint64_t mask = (1ull<<56) - 1;  \n\n    uint64_t aa[4];\n\n    /* For some reason clang doesn't vectorize this without prompting? */\n    unsigned int i;\n    for (i=0; i<4; i++) {\n        aa[i] = a[i] + a[i+4];\n    }\n\n    accum2  = widemul(a[0],a[3]);\n    accum0  = widemul(aa[0],aa[3]);\n    accum1  = widemul(a[4],a[7]);\n\n    accum2 += widemul(a[1], a[2]);\n    accum0 += widemul(aa[1], aa[2]);\n    accum1 += widemul(a[5], a[6]);\n\n    accum0 -= accum2;\n    accum1 += accum2;\n\n    c[3] = ((uint64_t)(accum1))<<1 & mask;\n    c[7] = ((uint64_t)(accum0))<<1 & mask;\n\n    accum0 >>= 55;\n    accum1 >>= 55;\n\n    accum0 += widemul(2*aa[1],aa[3]);\n    accum1 += widemul(2*a[5], a[7]);\n    accum0 += widemul(aa[2], aa[2]);\n    accum1 += accum0;\n\n    accum0 -= widemul(2*a[1], a[3]);\n    accum1 += widemul(a[6], a[6]);\n    \n    accum2 = widemul(a[0],a[0]);\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    accum0 -= widemul(a[2], a[2]);\n    accum1 += widemul(aa[0], aa[0]);\n    accum0 += widemul(a[4], a[4]);\n\n    c[0] = ((uint64_t)(accum0)) & mask;\n    c[4] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum2  = widemul(2*aa[2],aa[3]);\n    accum0 -= widemul(2*a[2], a[3]);\n    accum1 += widemul(2*a[6], a[7]);\n\n    accum1 += accum2;\n    accum0 += accum2;\n\n    accum2  = widemul(2*a[0],a[1]);\n    accum1 += widemul(2*aa[0], aa[1]);\n    accum0 += widemul(2*a[4], a[5]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[1] = ((uint64_t)(accum0)) & mask;\n    c[5] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum2  = widemul(aa[3],aa[3]);\n    accum0 -= widemul(a[3], a[3]);\n    accum1 += widemul(a[7], a[7]);\n\n    accum1 += accum2;\n    accum0 += accum2;\n\n    accum2  = widemul(2*a[0],a[2]);\n    accum1 += widemul(2*aa[0], aa[2]);\n    accum0 += widemul(2*a[4], a[6]);\n\n    accum2 += widemul(a[1], a[1]);\n    accum1 += widemul(aa[1], aa[1]);\n    accum0 += widemul(a[5], a[5]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[2] = ((uint64_t)(accum0)) & mask;\n    c[6] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum0 += c[3];\n    accum1 += c[7];\n    c[3] = ((uint64_t)(accum0)) & mask;\n    c[7] = ((uint64_t)(accum1)) & mask;\n\n    /* we could almost stop here, but it wouldn't be stable, so... */\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n    c[4] += ((uint64_t)(accum0)) + ((uint64_t)(accum1));\n    c[0] += ((uint64_t)(accum1));\n}\n\nvoid\np448_strong_reduce (\n    p448_t *a\n) {\n    uint64_t mask = (1ull<<56)-1;\n\n    /* first, clear high */\n    a->limb[4] += a->limb[7]>>56;\n    a->limb[0] += a->limb[7]>>56;\n    a->limb[7] &= mask;\n\n    /* now the total is less than 2^448 - 2^(448-56) + 2^(448-56+8) < 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    __int128_t scarry = 0;\n    int i;\n    for (i=0; i<8; i++) {\n        scarry = scarry + a->limb[i] - ((i==4)?mask-1:mask);\n        a->limb[i] = scarry & mask;\n        scarry >>= 56;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^448\n    * so let's add back in p.  will carry back off the top for 2^448.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    uint64_t scarry_mask = scarry & mask;\n    __uint128_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<8; i++) {\n        carry = carry + a->limb[i] + ((i==4)?(scarry_mask&~1):scarry_mask);\n        a->limb[i] = carry & mask;\n        carry >>= 56;\n    }\n\n    assert(is_zero(carry + scarry));\n}\n\nmask_t\np448_is_zero (\n    const struct p448_t *a\n) {\n    struct p448_t b;\n    p448_copy(&b,a);\n    p448_strong_reduce(&b);\n\n    uint64_t any = 0;\n    int i;\n    for (i=0; i<8; i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n) {\n    int i,j;\n    p448_t red;\n    p448_copy(&red, x);\n    p448_strong_reduce(&red);\n    for (i=0; i<8; i++) {\n        for (j=0; j<7; j++) {\n            serial[7*i+j] = red.limb[i];\n            red.limb[i] >>= 8;\n        }\n        assert(red.limb[i] == 0);\n    }\n}\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n) {\n    int i,j;\n    for (i=0; i<8; i++) {\n        uint64_t out = 0;\n        for (j=0; j<7; j++) {\n            out |= ((uint64_t)serial[7*i+j])<<(8*j);\n        }\n        x->limb[i] = out;\n    }\n    \n    /* Check for reduction.\n     *\n     * The idea is to create a variable ge which is all ones (rather, 56 ones)\n     * if and only if the low $i$ words of $x$ are >= those of p.\n     *\n     * Remember p = little_endian(1111,1111,1111,1111,1110,1111,1111,1111)\n     */\n    uint64_t ge = -1, mask = (1ull<<56)-1;\n    for (i=0; i<4; i++) {\n        ge &= x->limb[i];\n    }\n    \n    /* At this point, ge = 1111 iff bottom are all 1111.  Now propagate if 1110, or set if 1111 */\n    ge = (ge & (x->limb[4] + 1)) | is_zero(x->limb[4] ^ mask);\n    \n    /* Propagate the rest */\n    for (i=5; i<8; i++) {\n        ge &= x->limb[i];\n    }\n    \n    return ~is_zero(ge ^ mask);\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_ref64/p448.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __P448_H__\n#define __P448_H__ 1\n\n#include <stdint.h>\n#include <assert.h>\n#include <string.h>\n\n#include \"word.h\"\n\ntypedef struct p448_t {\n  uint64_t limb[8];\n} __attribute__((aligned(32))) p448_t;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) __attribute__((unused));\n\nstatic __inline__ void\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused));\n             \nstatic __inline__ void\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused));\n             \nstatic __inline__ void\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused));\n\nstatic __inline__ void\np448_addw (\n    p448_t *a,\n    uint64_t x\n) __attribute__((unused));\n             \nstatic __inline__ void\np448_subw (\n    p448_t *a,\n    uint64_t x\n) __attribute__((unused));\n             \nstatic __inline__ void\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused));\n             \nstatic __inline__ void\np448_weak_reduce (\n    p448_t *inout\n) __attribute__((unused));\n             \nvoid\np448_strong_reduce (\n    p448_t *inout\n);\n\nmask_t\np448_is_zero (\n    const p448_t *in\n);\n\nstatic __inline__ void\np448_bias (\n    p448_t *inout,\n    int amount\n) __attribute__((unused));\n\nstatic __inline__ void\np448_really_bias (\n    p448_t *inout,\n    int amount\n) __attribute__((unused));\n         \nvoid\np448_mul (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    const p448_t *b\n);\n\nvoid\np448_mulw (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    uint64_t b\n);\n\nvoid\np448_sqr (\n    p448_t *__restrict__ out,\n    const p448_t *a\n);\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n);\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\nvoid\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) {\n    int i;\n    out->limb[0] = x;\n    for (i=1; i<8; i++) {\n      out->limb[i] = 0;\n    }\n}\n\nvoid\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    for (i=0; i<8; i++) {\n        out->limb[i] = a->limb[i] + b->limb[i];\n    }\n    p448_weak_reduce(out);\n}\n\nvoid\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    uint64_t co1 = ((1ull<<56)-1)*2, co2 = co1-2;\n    for (i=0; i<8; i++) {\n        out->limb[i] = a->limb[i] - b->limb[i] + ((i==4) ? co2 : co1);\n    }\n    p448_weak_reduce(out);\n}\n\nvoid\np448_neg_RAW (\n    struct p448_t *out,\n    const p448_t *a\n) {\n    unsigned int i;\n    uint64_t co1 = ((1ull<<56)-1)*2, co2 = co1-2;\n    for (i=0; i<8; i++) {\n        out->limb[i] = ((i==4) ? co2 : co1) - a->limb[i];\n    }\n    p448_weak_reduce(out);\n}\n\nvoid\np448_addw (\n    p448_t *a,\n    uint64_t x\n) {\n  a->limb[0] += x;\n  a->limb[1] += a->limb[0]>>56;\n  a->limb[0] &= (1ull<<56)-1;\n}\n             \nvoid\np448_subw (\n    p448_t *a,\n    uint64_t x\n) {\n  a->limb[0] -= x;\n  p448_really_bias(a, 1);\n  p448_weak_reduce(a);\n}\n\nvoid\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) {\n    memcpy(out,a,sizeof(*a));\n}\n\nvoid\np448_really_bias (\n    p448_t *a,\n    int amt\n) {\n    uint64_t co1 = ((1ull<<56)-1)*amt, co2 = co1-amt;\n    int i;\n    for (i=0; i<8; i++) {\n        a->limb[i] += (i==4) ? co2 : co1;\n    }\n}\n\nvoid\np448_bias (\n    p448_t *a,\n    int amt\n) {\n    (void) a;\n    (void) amt;\n}\n\nvoid\np448_weak_reduce (\n    p448_t *a\n) {\n    uint64_t mask = (1ull<<56) - 1;\n    uint64_t tmp = a->limb[7] >> 56;\n    int i;\n    a->limb[4] += tmp;\n    for (i=7; i>0; i--) {\n        a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>56);\n    }\n    a->limb[0] = (a->limb[0] & mask) + tmp;\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __P448_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_x86_64/arch_config.h",
    "content": "#define WORD_BITS 64\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_x86_64/p448.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"p448.h\"\n#include \"x86-64-arith.h\"\n\nvoid\np448_mul (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    const p448_t *bs\n) {\n    const uint64_t *a = as->limb, *b = bs->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum1 = 0, accum2;\n    uint64_t mask = (1ull<<56) - 1;  \n\n    uint64_t aa[4] __attribute__((aligned(32))), bb[4] __attribute__((aligned(32))), bbb[4] __attribute__((aligned(32)));\n\n    /* For some reason clang doesn't vectorize this without prompting? */\n    unsigned int i;\n    for (i=0; i<sizeof(aa)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)aa)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)(&a[4]))[i];\n        ((uint64xn_t*)bb)[i] = ((const uint64xn_t*)b)[i] + ((const uint64xn_t*)(&b[4]))[i]; \n        ((uint64xn_t*)bbb)[i] = ((const uint64xn_t*)bb)[i] + ((const uint64xn_t*)(&b[4]))[i];     \n    }\n    /*\n    for (int i=0; i<4; i++) {\n    aa[i] = a[i] + a[i+4];\n    bb[i] = b[i] + b[i+4];\n    }\n    */\n\n    accum2  = widemul(&a[0],&b[3]);\n    accum0  = widemul(&aa[0],&bb[3]);\n    accum1  = widemul(&a[4],&b[7]);\n\n    mac(&accum2, &a[1], &b[2]);\n    mac(&accum0, &aa[1], &bb[2]);\n    mac(&accum1, &a[5], &b[6]);\n\n    mac(&accum2, &a[2], &b[1]);\n    mac(&accum0, &aa[2], &bb[1]);\n    mac(&accum1, &a[6], &b[5]);\n\n    mac(&accum2, &a[3], &b[0]);\n    mac(&accum0, &aa[3], &bb[0]);\n    mac(&accum1, &a[7], &b[4]);\n\n    accum0 -= accum2;\n    accum1 += accum2;\n\n    c[3] = ((uint64_t)(accum1)) & mask;\n    c[7] = ((uint64_t)(accum0)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n    \n    mac(&accum0, &aa[1],&bb[3]);\n    mac(&accum1, &a[5], &b[7]);\n    mac(&accum0, &aa[2], &bb[2]);\n    mac(&accum1, &a[6], &b[6]);\n    mac(&accum0, &aa[3], &bb[1]);\n    accum1 += accum0;\n\n    accum2 = widemul(&a[0],&b[0]);\n    accum1 -= accum2;\n    accum0 += accum2;\n    \n    msb(&accum0, &a[1], &b[3]);\n    msb(&accum0, &a[2], &b[2]);\n    mac(&accum1, &a[7], &b[5]);\n    msb(&accum0, &a[3], &b[1]);\n    mac(&accum1, &aa[0], &bb[0]);\n    mac(&accum0, &a[4], &b[4]);\n\n    c[0] = ((uint64_t)(accum0)) & mask;\n    c[4] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum2  = widemul(&a[2],&b[7]);\n    mac(&accum0, &a[6], &bb[3]);\n    mac(&accum1, &aa[2], &bbb[3]);\n\n    mac(&accum2, &a[3], &b[6]);\n    mac(&accum0, &a[7], &bb[2]);\n    mac(&accum1, &aa[3], &bbb[2]);\n\n    mac(&accum2, &a[0],&b[1]);\n    mac(&accum1, &aa[0], &bb[1]);\n    mac(&accum0, &a[4], &b[5]);\n\n    mac(&accum2, &a[1], &b[0]);\n    mac(&accum1, &aa[1], &bb[0]);\n    mac(&accum0, &a[5], &b[4]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[1] = ((uint64_t)(accum0)) & mask;\n    c[5] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum2  = widemul(&a[3],&b[7]);\n    mac(&accum0, &a[7], &bb[3]);\n    mac(&accum1, &aa[3], &bbb[3]);\n\n    mac(&accum2, &a[0],&b[2]);\n    mac(&accum1, &aa[0], &bb[2]);\n    mac(&accum0, &a[4], &b[6]);\n\n    mac(&accum2, &a[1], &b[1]);\n    mac(&accum1, &aa[1], &bb[1]);\n    mac(&accum0, &a[5], &b[5]);\n\n    mac(&accum2, &a[2], &b[0]);\n    mac(&accum1, &aa[2], &bb[0]);\n    mac(&accum0, &a[6], &b[4]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[2] = ((uint64_t)(accum0)) & mask;\n    c[6] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum0 += c[3];\n    accum1 += c[7];\n    c[3] = ((uint64_t)(accum0)) & mask;\n    c[7] = ((uint64_t)(accum1)) & mask;\n\n    /* we could almost stop here, but it wouldn't be stable, so... */\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n    c[4] += ((uint64_t)(accum0)) + ((uint64_t)(accum1));\n    c[0] += ((uint64_t)(accum1));\n}\n\nvoid\np448_mulw (\n    p448_t *__restrict__ cs,\n    const p448_t *as,\n    uint64_t b\n) {\n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0, accum4;\n    uint64_t mask = (1ull<<56) - 1;  \n\n    accum0 = widemul_rm(b, &a[0]);\n    accum4 = widemul_rm(b, &a[4]);\n\n    c[0] = accum0 & mask; accum0 >>= 56;\n    c[4] = accum4 & mask; accum4 >>= 56;\n\n    mac_rm(&accum0, b, &a[1]);\n    mac_rm(&accum4, b, &a[5]);\n\n    c[1] = accum0 & mask; accum0 >>= 56;\n    c[5] = accum4 & mask; accum4 >>= 56;\n\n    mac_rm(&accum0, b, &a[2]);\n    mac_rm(&accum4, b, &a[6]);\n\n    c[2] = accum0 & mask; accum0 >>= 56;\n    c[6] = accum4 & mask; accum4 >>= 56;\n\n    mac_rm(&accum0, b, &a[3]);\n    mac_rm(&accum4, b, &a[7]);\n\n    c[3] = accum0 & mask; accum0 >>= 56;\n    c[7] = accum4 & mask; accum4 >>= 56;\n    \n    accum0 += accum4 + c[4];\n    c[4] = accum0 & mask;\n    c[5] += accum0 >> 56;\n\n    accum4 += c[0];\n    c[0] = accum4 & mask;\n    c[1] += accum4 >> 56;\n}\n\nvoid\np448_sqr (\n    p448_t *__restrict__ cs,\n    const p448_t *as\n) {\n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum1 = 0, accum2;\n    uint64_t mask = (1ull<<56) - 1;  \n\n    uint64_t aa[4] __attribute__((aligned(32)));\n\n    /* For some reason clang doesn't vectorize this without prompting? */\n    unsigned int i;\n    for (i=0; i<sizeof(aa)/sizeof(uint64xn_t); i++) {\n      ((uint64xn_t*)aa)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)(&a[4]))[i];\n    }\n\n    accum2  = widemul(&a[0],&a[3]);\n    accum0  = widemul(&aa[0],&aa[3]);\n    accum1  = widemul(&a[4],&a[7]);\n\n    mac(&accum2, &a[1], &a[2]);\n    mac(&accum0, &aa[1], &aa[2]);\n    mac(&accum1, &a[5], &a[6]);\n\n    accum0 -= accum2;\n    accum1 += accum2;\n\n    c[3] = ((uint64_t)(accum1))<<1 & mask;\n    c[7] = ((uint64_t)(accum0))<<1 & mask;\n\n    accum0 >>= 55;\n    accum1 >>= 55;\n\n    mac2(&accum0, &aa[1],&aa[3]);\n    mac2(&accum1, &a[5], &a[7]);\n    mac(&accum0, &aa[2], &aa[2]);\n    accum1 += accum0;\n\n    msb2(&accum0, &a[1], &a[3]);\n    mac(&accum1, &a[6], &a[6]);\n    \n    accum2 = widemul(&a[0],&a[0]);\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    msb(&accum0, &a[2], &a[2]);\n    mac(&accum1, &aa[0], &aa[0]);\n    mac(&accum0, &a[4], &a[4]);\n\n    c[0] = ((uint64_t)(accum0)) & mask;\n    c[4] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum2  = widemul2(&aa[2],&aa[3]);\n    msb2(&accum0, &a[2], &a[3]);\n    mac2(&accum1, &a[6], &a[7]);\n\n    accum1 += accum2;\n    accum0 += accum2;\n\n    accum2  = widemul2(&a[0],&a[1]);\n    mac2(&accum1, &aa[0], &aa[1]);\n    mac2(&accum0, &a[4], &a[5]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[1] = ((uint64_t)(accum0)) & mask;\n    c[5] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum2  = widemul(&aa[3],&aa[3]);\n    msb(&accum0, &a[3], &a[3]);\n    mac(&accum1, &a[7], &a[7]);\n\n    accum1 += accum2;\n    accum0 += accum2;\n\n    accum2  = widemul2(&a[0],&a[2]);\n    mac2(&accum1, &aa[0], &aa[2]);\n    mac2(&accum0, &a[4], &a[6]);\n\n    mac(&accum2, &a[1], &a[1]);\n    mac(&accum1, &aa[1], &aa[1]);\n    mac(&accum0, &a[5], &a[5]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[2] = ((uint64_t)(accum0)) & mask;\n    c[6] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n\n    accum0 += c[3];\n    accum1 += c[7];\n    c[3] = ((uint64_t)(accum0)) & mask;\n    c[7] = ((uint64_t)(accum1)) & mask;\n\n    /* we could almost stop here, but it wouldn't be stable, so... */\n\n    accum0 >>= 56;\n    accum1 >>= 56;\n    c[4] += ((uint64_t)(accum0)) + ((uint64_t)(accum1));\n    c[0] += ((uint64_t)(accum1));\n}\n\nvoid\np448_strong_reduce (\n    p448_t *a\n) {\n    uint64_t mask = (1ull<<56)-1;\n\n    /* first, clear high */\n    a->limb[4] += a->limb[7]>>56;\n    a->limb[0] += a->limb[7]>>56;\n    a->limb[7] &= mask;\n\n    /* now the total is less than 2^448 - 2^(448-56) + 2^(448-56+8) < 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    __int128_t scarry = 0;\n    int i;\n    for (i=0; i<8; i++) {\n        scarry = scarry + a->limb[i] - ((i==4)?mask-1:mask);\n        a->limb[i] = scarry & mask;\n        scarry >>= 56;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^448\n    * so let's add back in p.  will carry back off the top for 2^448.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    uint64_t scarry_mask = scarry & mask;\n    __uint128_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<8; i++) {\n        carry = carry + a->limb[i] + ((i==4)?(scarry_mask&~1):scarry_mask);\n        a->limb[i] = carry & mask;\n        carry >>= 56;\n    }\n\n    assert(is_zero(carry + scarry));\n}\n\nmask_t\np448_is_zero (\n    const struct p448_t *a\n) {\n    struct p448_t b;\n    p448_copy(&b,a);\n    p448_strong_reduce(&b);\n\n    uint64_t any = 0;\n    int i;\n    for (i=0; i<8; i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n) {\n    int i,j;\n    p448_t red;\n    p448_copy(&red, x);\n    p448_strong_reduce(&red);\n    for (i=0; i<8; i++) {\n        for (j=0; j<7; j++) {\n            serial[7*i+j] = red.limb[i];\n            red.limb[i] >>= 8;\n        }\n        assert(red.limb[i] == 0);\n    }\n}\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n) {\n    int i,j;\n    for (i=0; i<8; i++) {\n        word_t out = 0;\n        for (j=0; j<7; j++) {\n            out |= ((word_t)serial[7*i+j])<<(8*j);\n        }\n        x->limb[i] = out;\n    }\n    \n    /* Check for reduction.\n     *\n     * The idea is to create a variable ge which is all ones (rather, 56 ones)\n     * if and only if the low $i$ words of $x$ are >= those of p.\n     *\n     * Remember p = little_endian(1111,1111,1111,1111,1110,1111,1111,1111)\n     */\n    word_t ge = -1, mask = (1ull<<56)-1;\n    for (i=0; i<4; i++) {\n        ge &= x->limb[i];\n    }\n    \n    /* At this point, ge = 1111 iff bottom are all 1111.  Now propagate if 1110, or set if 1111 */\n    ge = (ge & (x->limb[4] + 1)) | is_zero(x->limb[4] ^ mask);\n    \n    /* Propagate the rest */\n    for (i=5; i<8; i++) {\n        ge &= x->limb[i];\n    }\n    \n    return ~is_zero(ge ^ mask);\n}\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_x86_64/p448.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __P448_H__\n#define __P448_H__ 1\n\n#include <stdint.h>\n#include <assert.h>\n\n#include \"word.h\"\n\ntypedef struct p448_t {\n  uint64_t limb[8];\n} __attribute__((aligned(32))) p448_t;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_neg_RAW (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np448_addw (\n    p448_t *a,\n    uint64_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_subw (\n    p448_t *a,\n    uint64_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np448_weak_reduce (\n    p448_t *inout\n) __attribute__((unused,always_inline));\n             \nvoid\np448_strong_reduce (\n    p448_t *inout\n);\n\nmask_t\np448_is_zero (\n    const p448_t *in\n);\n  \nstatic __inline__ void\np448_bias (\n    p448_t *inout,\n    int amount\n) __attribute__((unused,always_inline));\n         \nvoid\np448_mul (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    const p448_t *b\n);\n\nvoid\np448_mulw (\n    p448_t *__restrict__ out,\n    const p448_t *a,\n    uint64_t b\n);\n\nvoid\np448_sqr (\n    p448_t *__restrict__ out,\n    const p448_t *a\n);\n\nvoid\np448_serialize (\n    uint8_t *serial,\n    const struct p448_t *x\n);\n\nmask_t\np448_deserialize (\n    p448_t *x,\n    const uint8_t serial[56]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\nvoid\np448_set_ui (\n    p448_t *out,\n    uint64_t x\n) {\n    int i;\n    out->limb[0] = x;\n    for (i=1; i<8; i++) {\n      out->limb[i] = 0;\n    }\n}\n\nvoid\np448_add_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] + b->limb[i];\n    }\n    */\n}\n\nvoid\np448_sub_RAW (\n    p448_t *out,\n    const p448_t *a,\n    const p448_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] - b->limb[i];\n    }\n    */\n}\n\nvoid\np448_neg_RAW (\n    struct p448_t *out,\n    const p448_t *a\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = -((const uint64xn_t*)a)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = -a->limb[i];\n    }\n    */\n}\n\nvoid\np448_addw (\n    p448_t *a,\n    uint64_t x\n) {\n  a->limb[0] += x;\n}\n             \nvoid\np448_subw (\n    p448_t *a,\n    uint64_t x\n) {\n  a->limb[0] -= x;\n}\n\nvoid\np448_copy (\n    p448_t *out,\n    const p448_t *a\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(big_register_t); i++) {\n        ((big_register_t *)out)[i] = ((const big_register_t *)a)[i];\n    }\n}\n\nvoid\np448_bias (\n    p448_t *a,\n    int amt\n) {\n    uint64_t co1 = ((1ull<<56)-1)*amt, co2 = co1-amt;\n    \n#if __AVX2__\n    uint64x4_t lo = {co1,co1,co1,co1}, hi = {co2,co1,co1,co1};\n    uint64x4_t *aa = (uint64x4_t*) a;\n    aa[0] += lo;\n    aa[1] += hi;\n#elif __SSE2__\n    uint64x2_t lo = {co1,co1}, hi = {co2,co1};\n    uint64x2_t *aa = (uint64x2_t*) a;\n    aa[0] += lo;\n    aa[1] += lo;\n    aa[2] += hi;\n    aa[3] += lo;\n#else\n    unsigned int i;\n    for (i=0; i<sizeof(*a)/sizeof(uint64_t); i++) {\n        a->limb[i] += (i==4) ? co2 : co1;\n    }\n#endif\n}\n\nvoid\np448_weak_reduce (\n    p448_t *a\n) {\n    /* PERF: use pshufb/palignr if anyone cares about speed of this */\n    uint64_t mask = (1ull<<56) - 1;\n    uint64_t tmp = a->limb[7] >> 56;\n    int i;\n    a->limb[4] += tmp;\n    for (i=7; i>0; i--) {\n        a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>56);\n    }\n    a->limb[0] = (a->limb[0] & mask) + tmp;\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __P448_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/arch_x86_64/x86-64-arith.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#ifndef __X86_64_ARITH_H__\n#define __X86_64_ARITH_H__\n\n#include <stdint.h>\n\n/* TODO: non x86-64 versions of these.\n * FUTURE: autogenerate\n */\n\nstatic __inline__ __uint128_t widemul(const uint64_t *a, const uint64_t *b) {\n  #ifndef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rax;\"\n       \"mulq %[b];\"\n       : [c]\"=a\"(c), [d]\"=d\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"cc\");\n  return (((__uint128_t)(d))<<64) | c;\n  #else\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx;\"\n       \"mulx %[b], %[c], %[d];\"\n       : [c]\"=r\"(c), [d]\"=r\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\");\n  return (((__uint128_t)(d))<<64) | c;\n  #endif\n}\n\nstatic __inline__ __uint128_t widemul_rm(uint64_t a, const uint64_t *b) {\n  #ifndef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rax;\"\n       \"mulq %[b];\"\n       : [c]\"=a\"(c), [d]\"=d\"(d)\n       : [b]\"m\"(*b), [a]\"r\"(a)\n       : \"cc\");\n  return (((__uint128_t)(d))<<64) | c;\n  #else\n  uint64_t c,d;\n  __asm__ volatile\n      (\"mulx %[b], %[c], %[d];\"\n       : [c]\"=r\"(c), [d]\"=r\"(d)\n       : [b]\"m\"(*b), [a]\"d\"(a));\n  return (((__uint128_t)(d))<<64) | c;\n  #endif\n}\n\nstatic __inline__ __uint128_t widemul2(const uint64_t *a, const uint64_t *b) {\n  #ifndef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"addq %%rax, %%rax; \"\n       \"mulq %[b];\"\n       : [c]\"=a\"(c), [d]\"=d\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"cc\");\n  return (((__uint128_t)(d))<<64) | c;\n  #else\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx;\"\n       \"leaq (,%%rdx,2), %%rdx;\"\n       \"mulx %[b], %[c], %[d];\"\n       : [c]\"=r\"(c), [d]\"=r\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\");\n  return (((__uint128_t)(d))<<64) | c;\n  #endif\n}\n\nstatic __inline__ void mac(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void macac(__uint128_t *acc, __uint128_t *acc2, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  uint64_t lo2 = *acc2, hi2 = *acc2>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       \"addq %[c], %[lo2]; \"\n       \"adcq %[d], %[hi2]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi), [lo2]\"+r\"(lo2), [hi2]\"+r\"(hi2)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       \"addq %%rax, %[lo2]; \"\n       \"adcq %%rdx, %[hi2]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi), [lo2]\"+r\"(lo2), [hi2]\"+r\"(hi2)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n  *acc2 = (((__uint128_t)(hi2))<<64) | lo2;\n}\n\nstatic __inline__ void mac_rm(__uint128_t *acc, uint64_t a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"d\"(a)\n       : \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"r\"(a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void mac2(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"addq %%rdx, %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"addq %%rax, %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void msb(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"subq %[c], %[lo]; \"\n       \"sbbq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"subq %%rax, %[lo]; \"\n       \"sbbq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void msb2(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"addq %%rdx, %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"subq %[c], %[lo]; \"\n       \"sbbq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"addq %%rax, %%rax; \"\n       \"mulq %[b]; \"\n       \"subq %%rax, %[lo]; \"\n       \"sbbq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  *acc = (((__uint128_t)(hi))<<64) | lo;\n  \n}\n\nstatic __inline__ void mrs(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t c,d, lo = *acc, hi = *acc>>64;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"subq %[lo], %[c]; \"\n       \"sbbq %[hi], %[d]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  *acc = (((__uint128_t)(d))<<64) | c;\n}\n\nstatic __inline__ __uint128_t widemulu(uint64_t a, uint64_t b) {\n  return ((__uint128_t)(a)) * b;\n}\n\nstatic __inline__ __int128_t widemuls(int64_t a, int64_t b) {\n  return ((__int128_t)(a)) * b;\n}\n \nstatic __inline__ uint64_t opacify(uint64_t x) {\n  __asm__ volatile(\"\" : \"+r\"(x));\n  return x;\n}\n\nstatic __inline__ mask_t is_zero(uint64_t x) {\n  __asm__ volatile(\"neg %0; sbb %0, %0;\" : \"+r\"(x));\n  return ~x;\n}\n\n#endif /* __X86_64_ARITH_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/f_arithmetic.c",
    "content": "/**\n * @cond internal\n * @file f_arithmetic.c\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief Field-specific arithmetic.\n */\n\n#include \"ec_point.h\"\n\nvoid \nfield_isr (\n    field_a_t a,\n    const field_a_t x\n) {\n    field_a_t L0, L1, L2;\n    field_sqr  (   L1,     x );\n    field_mul  (   L2,     x,   L1 );\n    field_sqr  (   L1,   L2 );\n    field_mul  (   L2,     x,   L1 );\n    field_sqrn (   L1,   L2,     3 );\n    field_mul  (   L0,   L2,   L1 );\n    field_sqrn (   L1,   L0,     3 );\n    field_mul  (   L0,   L2,   L1 );\n    field_sqrn (   L2,   L0,     9 );\n    field_mul  (   L1,   L0,   L2 );\n    field_sqr  (   L0,   L1 );\n    field_mul  (   L2,     x,   L0 );\n    field_sqrn (   L0,   L2,    18 );\n    field_mul  (   L2,   L1,   L0 );\n    field_sqrn (   L0,   L2,    37 );\n    field_mul  (   L1,   L2,   L0 );\n    field_sqrn (   L0,   L1,    37 );\n    field_mul  (   L1,   L2,   L0 );\n    field_sqrn (   L0,   L1,   111 );\n    field_mul  (   L2,   L1,   L0 );\n    field_sqr  (   L0,   L2 );\n    field_mul  (   L1,     x,   L0 );\n    field_sqrn (   L0,   L1,   223 );\n    field_mul  (     a,   L2,   L0 );\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/f_field.h",
    "content": "/**\n * @file f_field.h\n * @brief Field-specific code.\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n */\n#ifndef __F_FIELD_H__\n#define __F_FIELD_H__ 1\n\n#include \"constant_time.h\"\n#include <string.h>\n\n#include \"p448.h\"\n#define FIELD_BITS           448\n#define field_t              p448_t\n#define field_mul            p448_mul\n#define field_sqr            p448_sqr\n#define field_add_RAW        p448_add_RAW\n#define field_sub_RAW        p448_sub_RAW\n#define field_mulw           p448_mulw\n#define field_addw           p448_addw\n#define field_subw_RAW       p448_subw\n#define field_neg_RAW        p448_neg_RAW\n#define field_set_ui         p448_set_ui\n#define field_bias           p448_bias\n#define field_inverse        p448_inverse\n#define field_eq             p448_eq\n#define field_isr            p448_isr\n#define field_simultaneous_invert p448_simultaneous_invert\n#define field_weak_reduce    p448_weak_reduce\n#define field_strong_reduce  p448_strong_reduce\n#define field_serialize      p448_serialize\n#define field_deserialize    p448_deserialize\n#define field_is_zero        p448_is_zero\n\n#endif /* __F_FIELD_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/f_magic.h",
    "content": "/**\n * @file f_magic.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief Goldilocks magic numbers (group orders, coefficients, algo params etc).\n */\n\n#ifndef __GOLDI_F_MAGIC_H__\n#define __GOLDI_F_MAGIC_H__ 1\n\n#include \"field.h\"\n#include \"ec_point.h\"\n\n/**\n * @brief The Edwards \"d\" term for this curve.\n */\nstatic const int64_t EDWARDS_D = -39081;\n\n/** @brief The number of combs to use for signed comb algo */\n#define COMB_N (USE_BIG_COMBS ? 5  : 8)\n\n/** @brief The number of teeth of the combs for signed comb algo */\n#define COMB_T (USE_BIG_COMBS ? 5  : 4)\n\n/** @brief The spacing the of combs for signed comb algo */\n#define COMB_S (USE_BIG_COMBS ? 18 : 14)\n\n#endif /* __GOLDI_F_MAGIC_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p448/magic.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"field.h\"\n#include \"magic.h\"\n#include \"barrett_field.h\"\n\n/* FUTURE: automatically generate this file? */\n\nconst uint8_t FIELD_MODULUS[FIELD_BYTES] = {\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n/*!*/ 0xfe, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF\n};\n\nconst word_t SCALARMUL_FIXED_WINDOW_ADJUSTMENT[2*SCALAR_WORDS] = {\n    U64LE(0xebec9967f5d3f5c2),\n    U64LE(0x0aa09b49b16c9a02),\n    U64LE(0x7f6126aec172cd8e),\n    U64LE(0x00000007b027e54d),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    U64LE(0x4000000000000000),\n    \n    U64LE(0xc873d6d54a7bb0cf),\n    U64LE(0xe933d8d723a70aad),\n    U64LE(0xbb124b65129c96fd),\n    U64LE(0x00000008335dc163),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000)\n};\n\nconst affine_a_t goldilocks_base_point = {{\n#ifdef USE_NEON_PERM\n    {{{ 0xaed939f,0xc59d070,0xf0de840,0x5f065c3, 0xf4ba0c7,0xdf73324,0xc170033,0x3a6a26a,\n       0x4c63d96,0x4609845,0xf3932d9,0x1b4faff, 0x6147eaa,0xa2692ff,0x9cecfa9,0x297ea0e\n    }}},\n#else\n    {{{ U56LE(0xf0de840aed939f), U56LE(0xc170033f4ba0c7),\n       U56LE(0xf3932d94c63d96), U56LE(0x9cecfa96147eaa),\n       U56LE(0x5f065c3c59d070), U56LE(0x3a6a26adf73324),\n       U56LE(0x1b4faff4609845), U56LE(0x297ea0ea2692ff)\n    }}},\n#endif\n    {{{ 19 }}}\n}};\n\nstatic const word_t curve_prime_order_lo[(224+WORD_BITS-1)/WORD_BITS] = {\n    U64LE(0xdc873d6d54a7bb0d),\n    U64LE(0xde933d8d723a70aa),\n    U64LE(0x3bb124b65129c96f),\n    0x8335dc16\n};\nconst struct barrett_prime_t curve_prime_order = {\n    GOLDI_FIELD_WORDS,\n    62 % WORD_BITS,\n    sizeof(curve_prime_order_lo)/sizeof(curve_prime_order_lo[0]),\n    curve_prime_order_lo\n};\n\nconst field_a_t\nsqrt_d_minus_1 = {{{\n#ifdef USE_NEON_PERM\n    0x6749f46,0x24d9770,0xd2e2183,0xa49f7b4,\n    0xb4f0179,0x8c5f656,0x888db42,0xdcac462,\n    0xbdeea38,0x748734a,0x5a189aa,0x49443b8,\n    0x6f14c06,0x0b25b7a,0x51e65ca,0x12fec0c\n#else\n    U56LE(0xd2e21836749f46),\n    U56LE(0x888db42b4f0179),\n    U56LE(0x5a189aabdeea38),\n    U56LE(0x51e65ca6f14c06),\n    U56LE(0xa49f7b424d9770),\n    U56LE(0xdcac4628c5f656),\n    U56LE(0x49443b8748734a),\n    U56LE(0x12fec0c0b25b7a)\n#endif\n}}};\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/arch_x86_64/arch_config.h",
    "content": "#define WORD_BITS 64\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/arch_x86_64/p480.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"p480.h\"\n#include \"x86-64-arith.h\"\n\nvoid\np480_mul (\n    p480_t *__restrict__ cs,\n    const p480_t *as,\n    const p480_t *bs\n) {\n    const uint64_t *a = as->limb, *b = bs->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum1 = 0, accum2;\n    uint64_t mask = (1ull<<60) - 1;  \n\n    uint64_t aa[4] __attribute__((aligned(32))), bb[4] __attribute__((aligned(32))), bbb[4] __attribute__((aligned(32)));\n\n    /* For some reason clang doesn't vectorize this without prompting? */\n    unsigned int i;\n    for (i=0; i<sizeof(aa)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)aa)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)(&a[4]))[i];\n        ((uint64xn_t*)bb)[i] = ((const uint64xn_t*)b)[i] + ((const uint64xn_t*)(&b[4]))[i]; \n        ((uint64xn_t*)bbb)[i] = ((const uint64xn_t*)bb)[i] + ((const uint64xn_t*)(&b[4]))[i];     \n    }\n    /*\n    for (int i=0; i<4; i++) {\n    aa[i] = a[i] + a[i+4];\n    bb[i] = b[i] + b[i+4];\n    }\n    */\n\n    accum2  = widemul(&a[0],&b[3]);\n    accum0  = widemul(&aa[0],&bb[3]);\n    accum1  = widemul(&a[4],&b[7]);\n\n    mac(&accum2, &a[1], &b[2]);\n    mac(&accum0, &aa[1], &bb[2]);\n    mac(&accum1, &a[5], &b[6]);\n\n    mac(&accum2, &a[2], &b[1]);\n    mac(&accum0, &aa[2], &bb[1]);\n    mac(&accum1, &a[6], &b[5]);\n\n    mac(&accum2, &a[3], &b[0]);\n    mac(&accum0, &aa[3], &bb[0]);\n    mac(&accum1, &a[7], &b[4]);\n\n    accum0 -= accum2;\n    accum1 += accum2;\n\n    c[3] = ((uint64_t)(accum1)) & mask;\n    c[7] = ((uint64_t)(accum0)) & mask;\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n    \n    mac(&accum0, &aa[1],&bb[3]);\n    mac(&accum1, &a[5], &b[7]);\n    mac(&accum0, &aa[2], &bb[2]);\n    mac(&accum1, &a[6], &b[6]);\n    mac(&accum0, &aa[3], &bb[1]);\n    accum1 += accum0;\n\n    accum2 = widemul(&a[0],&b[0]);\n    accum1 -= accum2;\n    accum0 += accum2;\n    \n    msb(&accum0, &a[1], &b[3]);\n    msb(&accum0, &a[2], &b[2]);\n    mac(&accum1, &a[7], &b[5]);\n    msb(&accum0, &a[3], &b[1]);\n    mac(&accum1, &aa[0], &bb[0]);\n    mac(&accum0, &a[4], &b[4]);\n\n    c[0] = ((uint64_t)(accum0)) & mask;\n    c[4] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n\n    accum2  = widemul(&a[2],&b[7]);\n    mac(&accum0, &a[6], &bb[3]);\n    mac(&accum1, &aa[2], &bbb[3]);\n\n    mac(&accum2, &a[3], &b[6]);\n    mac(&accum0, &a[7], &bb[2]);\n    mac(&accum1, &aa[3], &bbb[2]);\n\n    mac(&accum2, &a[0],&b[1]);\n    mac(&accum1, &aa[0], &bb[1]);\n    mac(&accum0, &a[4], &b[5]);\n\n    mac(&accum2, &a[1], &b[0]);\n    mac(&accum1, &aa[1], &bb[0]);\n    mac(&accum0, &a[5], &b[4]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[1] = ((uint64_t)(accum0)) & mask;\n    c[5] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n\n    accum2  = widemul(&a[3],&b[7]);\n    mac(&accum0, &a[7], &bb[3]);\n    mac(&accum1, &aa[3], &bbb[3]);\n\n    mac(&accum2, &a[0],&b[2]);\n    mac(&accum1, &aa[0], &bb[2]);\n    mac(&accum0, &a[4], &b[6]);\n\n    mac(&accum2, &a[1], &b[1]);\n    mac(&accum1, &aa[1], &bb[1]);\n    mac(&accum0, &a[5], &b[5]);\n\n    mac(&accum2, &a[2], &b[0]);\n    mac(&accum1, &aa[2], &bb[0]);\n    mac(&accum0, &a[6], &b[4]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[2] = ((uint64_t)(accum0)) & mask;\n    c[6] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n\n    accum0 += c[3];\n    accum1 += c[7];\n    c[3] = ((uint64_t)(accum0)) & mask;\n    c[7] = ((uint64_t)(accum1)) & mask;\n\n    /* we could almost stop here, but it wouldn't be stable, so... */\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n    c[4] += ((uint64_t)(accum0)) + ((uint64_t)(accum1));\n    c[0] += ((uint64_t)(accum1));\n}\n\nvoid\np480_mulw (\n    p480_t *__restrict__ cs,\n    const p480_t *as,\n    uint64_t b\n) {\n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0, accum4;\n    uint64_t mask = (1ull<<60) - 1;  \n\n    accum0 = widemul_rm(b, &a[0]);\n    accum4 = widemul_rm(b, &a[4]);\n\n    c[0] = accum0 & mask; accum0 >>= 60;\n    c[4] = accum4 & mask; accum4 >>= 60;\n\n    mac_rm(&accum0, b, &a[1]);\n    mac_rm(&accum4, b, &a[5]);\n\n    c[1] = accum0 & mask; accum0 >>= 60;\n    c[5] = accum4 & mask; accum4 >>= 60;\n\n    mac_rm(&accum0, b, &a[2]);\n    mac_rm(&accum4, b, &a[6]);\n\n    c[2] = accum0 & mask; accum0 >>= 60;\n    c[6] = accum4 & mask; accum4 >>= 60;\n\n    mac_rm(&accum0, b, &a[3]);\n    mac_rm(&accum4, b, &a[7]);\n\n    c[3] = accum0 & mask; accum0 >>= 60;\n    c[7] = accum4 & mask; accum4 >>= 60;\n    \n    accum0 += accum4 + c[4];\n    c[4] = accum0 & mask;\n    c[5] += accum0 >> 60;\n\n    accum4 += c[0];\n    c[0] = accum4 & mask;\n    c[1] += accum4 >> 60;\n}\n\nvoid\np480_sqr (\n    p480_t *__restrict__ cs,\n    const p480_t *as\n) {\n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum1 = 0, accum2;\n    uint64_t mask = (1ull<<60) - 1;  \n\n    uint64_t aa[4] __attribute__((aligned(32)));\n\n    /* For some reason clang doesn't vectorize this without prompting? */\n    unsigned int i;\n    for (i=0; i<sizeof(aa)/sizeof(uint64xn_t); i++) {\n      ((uint64xn_t*)aa)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)(&a[4]))[i];\n    }\n\n    accum2  = widemul(&a[0],&a[3]);\n    accum0  = widemul(&aa[0],&aa[3]);\n    accum1  = widemul(&a[4],&a[7]);\n\n    mac(&accum2, &a[1], &a[2]);\n    mac(&accum0, &aa[1], &aa[2]);\n    mac(&accum1, &a[5], &a[6]);\n\n    accum0 -= accum2;\n    accum1 += accum2;\n\n    c[3] = ((uint64_t)(accum1))<<1 & mask;\n    c[7] = ((uint64_t)(accum0))<<1 & mask;\n\n    accum0 >>= 59;\n    accum1 >>= 59;\n\n    mac2(&accum0, &aa[1],&aa[3]);\n    mac2(&accum1, &a[5], &a[7]);\n    mac(&accum0, &aa[2], &aa[2]);\n    accum1 += accum0;\n\n    msb2(&accum0, &a[1], &a[3]);\n    mac(&accum1, &a[6], &a[6]);\n    \n    accum2 = widemul(&a[0],&a[0]);\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    msb(&accum0, &a[2], &a[2]);\n    mac(&accum1, &aa[0], &aa[0]);\n    mac(&accum0, &a[4], &a[4]);\n\n    c[0] = ((uint64_t)(accum0)) & mask;\n    c[4] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n\n    accum2  = widemul2(&aa[2],&aa[3]);\n    msb2(&accum0, &a[2], &a[3]);\n    mac2(&accum1, &a[6], &a[7]);\n\n    accum1 += accum2;\n    accum0 += accum2;\n\n    accum2  = widemul2(&a[0],&a[1]);\n    mac2(&accum1, &aa[0], &aa[1]);\n    mac2(&accum0, &a[4], &a[5]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[1] = ((uint64_t)(accum0)) & mask;\n    c[5] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n\n    accum2  = widemul(&aa[3],&aa[3]);\n    msb(&accum0, &a[3], &a[3]);\n    mac(&accum1, &a[7], &a[7]);\n\n    accum1 += accum2;\n    accum0 += accum2;\n\n    accum2  = widemul2(&a[0],&a[2]);\n    mac2(&accum1, &aa[0], &aa[2]);\n    mac2(&accum0, &a[4], &a[6]);\n\n    mac(&accum2, &a[1], &a[1]);\n    mac(&accum1, &aa[1], &aa[1]);\n    mac(&accum0, &a[5], &a[5]);\n\n    accum1 -= accum2;\n    accum0 += accum2;\n\n    c[2] = ((uint64_t)(accum0)) & mask;\n    c[6] = ((uint64_t)(accum1)) & mask;\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n\n    accum0 += c[3];\n    accum1 += c[7];\n    c[3] = ((uint64_t)(accum0)) & mask;\n    c[7] = ((uint64_t)(accum1)) & mask;\n\n    /* we could almost stop here, but it wouldn't be stable, so... */\n\n    accum0 >>= 60;\n    accum1 >>= 60;\n    c[4] += ((uint64_t)(accum0)) + ((uint64_t)(accum1));\n    c[0] += ((uint64_t)(accum1));\n}\n\nvoid\np480_strong_reduce (\n    p480_t *a\n) {\n    uint64_t mask = (1ull<<60)-1;\n\n    /* first, clear high */\n    a->limb[4] += a->limb[7]>>60;\n    a->limb[0] += a->limb[7]>>60;\n    a->limb[7] &= mask;\n\n    /* now the total is less than 2^480 - 2^(480-60) + 2^(480-60+8) < 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    __int128_t scarry = 0;\n    int i;\n    for (i=0; i<8; i++) {\n        scarry = scarry + a->limb[i] - ((i==4)?mask-1:mask);\n        a->limb[i] = scarry & mask;\n        scarry >>= 60;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^480\n    * so let's add back in p.  will carry back off the top for 2^480.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    uint64_t scarry_mask = scarry & mask;\n    __uint128_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<8; i++) {\n        carry = carry + a->limb[i] + ((i==4)?(scarry_mask&~1):scarry_mask);\n        a->limb[i] = carry & mask;\n        carry >>= 60;\n    }\n\n    assert(is_zero(carry + scarry));\n}\n\nmask_t\np480_is_zero (\n    const struct p480_t *a\n) {\n    struct p480_t b;\n    p480_copy(&b,a);\n    p480_strong_reduce(&b);\n\n    uint64_t any = 0;\n    int i;\n    for (i=0; i<8; i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np480_serialize (\n    uint8_t *serial,\n    const struct p480_t *x\n) {\n    int i,j,k=0;\n    p480_t red;\n    p480_copy(&red, x);\n    p480_strong_reduce(&red);\n    word_t r = 0;\n    for (i=0; i<8; i+=2) {\n        r = red.limb[i];\n        for (j=0; j<7; j++) {\n            serial[k++] = r;\n            r >>= 8;\n        }\n        assert(r<16);\n        r += red.limb[i+1]<<4;\n        for (j=0; j<8; j++) {\n            serial[k++] = r;\n            r >>= 8;\n        }\n        assert(r==0);\n    }\n}\n\nmask_t\np480_deserialize (\n    p480_t *x,\n    const uint8_t serial[60]\n) {\n    int i,j,k=0;\n\n    for (i=0; i<8; i+=2) {\n        word_t r = 0;\n        for (j=0; j<8; j++) {\n            r |= ((word_t)serial[k++])<<(8*j);\n        }\n        x->limb[i] = r & ((1ull<<60)-1);\n        r >>= 60;\n        for (j=0; j<7; j++) {\n            r |= ((word_t)serial[k++])<<(8*j+4);\n        }\n        x->limb[i+1] = r;\n    }\n    \n    /* Check for reduction.\n     *\n     * The idea is to create a variable ge which is all ones (rather, 60 ones)\n     * if and only if the low $i$ words of $x$ are >= those of p.\n     *\n     * Remember p = little_endian(1111,1111,1111,1111,1110,1111,1111,1111)\n     */\n    word_t ge = -1, mask = (1ull<<60)-1;\n    for (i=0; i<4; i++) {\n        ge &= x->limb[i];\n    }\n    \n    /* At this point, ge = 1111 iff bottom are all 1111.  Now propagate if 1110, or set if 1111 */\n    ge = (ge & (x->limb[4] + 1)) | is_zero(x->limb[4] ^ mask);\n    \n    /* Propagate the rest */\n    for (i=5; i<8; i++) {\n        ge &= x->limb[i];\n    }\n    \n    return ~is_zero(ge ^ mask);\n}\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/arch_x86_64/p480.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __p480_H__\n#define __p480_H__ 1\n\n#include <stdint.h>\n#include <assert.h>\n\n#include \"word.h\"\n\ntypedef struct p480_t {\n  uint64_t limb[8];\n} __attribute__((aligned(32))) p480_t;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np480_set_ui (\n    p480_t *out,\n    uint64_t x\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np480_add_RAW (\n    p480_t *out,\n    const p480_t *a,\n    const p480_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np480_sub_RAW (\n    p480_t *out,\n    const p480_t *a,\n    const p480_t *b\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np480_neg_RAW (\n    p480_t *out,\n    const p480_t *a\n) __attribute__((unused,always_inline));\n\nstatic __inline__ void\np480_addw (\n    p480_t *a,\n    uint64_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np480_subw (\n    p480_t *a,\n    uint64_t x\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np480_copy (\n    p480_t *out,\n    const p480_t *a\n) __attribute__((unused,always_inline));\n             \nstatic __inline__ void\np480_weak_reduce (\n    p480_t *inout\n) __attribute__((unused,always_inline));\n             \nvoid\np480_strong_reduce (\n    p480_t *inout\n);\n\nmask_t\np480_is_zero (\n    const p480_t *in\n);\n  \nstatic __inline__ void\np480_bias (\n    p480_t *inout,\n    int amount\n) __attribute__((unused,always_inline));\n         \nvoid\np480_mul (\n    p480_t *__restrict__ out,\n    const p480_t *a,\n    const p480_t *b\n);\n\nvoid\np480_mulw (\n    p480_t *__restrict__ out,\n    const p480_t *a,\n    uint64_t b\n);\n\nvoid\np480_sqr (\n    p480_t *__restrict__ out,\n    const p480_t *a\n);\n\nvoid\np480_serialize (\n    uint8_t *serial,\n    const struct p480_t *x\n);\n\nmask_t\np480_deserialize (\n    p480_t *x,\n    const uint8_t serial[60]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\nvoid\np480_set_ui (\n    p480_t *out,\n    uint64_t x\n) {\n    int i;\n    out->limb[0] = x;\n    for (i=1; i<8; i++) {\n      out->limb[i] = 0;\n    }\n}\n\nvoid\np480_add_RAW (\n    p480_t *out,\n    const p480_t *a,\n    const p480_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] + b->limb[i];\n    }\n    */\n}\n\nvoid\np480_sub_RAW (\n    p480_t *out,\n    const p480_t *a,\n    const p480_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = a->limb[i] - b->limb[i];\n    }\n    */\n}\n\nvoid\np480_neg_RAW (\n    struct p480_t *out,\n    const p480_t *a\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = -((const uint64xn_t*)a)[i];\n    }\n    /*\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(out->limb[0]); i++) {\n        out->limb[i] = -a->limb[i];\n    }\n    */\n}\n\nvoid\np480_addw (\n    p480_t *a,\n    uint64_t x\n) {\n  a->limb[0] += x;\n}\n             \nvoid\np480_subw (\n    p480_t *a,\n    uint64_t x\n) {\n  a->limb[0] -= x;\n}\n\nvoid\np480_copy (\n    p480_t *out,\n    const p480_t *a\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(big_register_t); i++) {\n        ((big_register_t *)out)[i] = ((const big_register_t *)a)[i];\n    }\n}\n\nvoid\np480_bias (\n    p480_t *a,\n    int amt\n) {\n    uint64_t co1 = ((1ull<<60)-1)*amt, co2 = co1-amt;\n    \n#if __AVX2__\n    uint64x4_t lo = {co1,co1,co1,co1}, hi = {co2,co1,co1,co1};\n    uint64x4_t *aa = (uint64x4_t*) a;\n    aa[0] += lo;\n    aa[1] += hi;\n#elif __SSE2__\n    uint64x2_t lo = {co1,co1}, hi = {co2,co1};\n    uint64x2_t *aa = (uint64x2_t*) a;\n    aa[0] += lo;\n    aa[1] += lo;\n    aa[2] += hi;\n    aa[3] += lo;\n#else\n    unsigned int i;\n    for (i=0; i<sizeof(*a)/sizeof(uint64_t); i++) {\n        a->limb[i] += (i==4) ? co2 : co1;\n    }\n#endif\n}\n\nvoid\np480_weak_reduce (\n    p480_t *a\n) {\n    /* PERF: use pshufb/palignr if anyone cares about speed of this */\n    uint64_t mask = (1ull<<60) - 1;\n    uint64_t tmp = a->limb[7] >> 60;\n    int i;\n    a->limb[4] += tmp;\n    for (i=7; i>0; i--) {\n        a->limb[i] = (a->limb[i] & mask) + (a->limb[i-1]>>60);\n    }\n    a->limb[0] = (a->limb[0] & mask) + tmp;\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __p480_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/arch_x86_64/x86-64-arith.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#ifndef __X86_64_ARITH_H__\n#define __X86_64_ARITH_H__\n\n#include <stdint.h>\n\n/* TODO: non x86-64 versions of these.\n * FUTURE: autogenerate\n */\n\nstatic __inline__ __uint128_t widemul(const uint64_t *a, const uint64_t *b) {\n  #ifndef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rax;\"\n       \"mulq %[b];\"\n       : [c]\"=a\"(c), [d]\"=d\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"cc\");\n  return (((__uint128_t)(d))<<64) | c;\n  #else\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx;\"\n       \"mulx %[b], %[c], %[d];\"\n       : [c]\"=r\"(c), [d]\"=r\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\");\n  return (((__uint128_t)(d))<<64) | c;\n  #endif\n}\n\nstatic __inline__ __uint128_t widemul_rm(uint64_t a, const uint64_t *b) {\n  #ifndef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rax;\"\n       \"mulq %[b];\"\n       : [c]\"=a\"(c), [d]\"=d\"(d)\n       : [b]\"m\"(*b), [a]\"r\"(a)\n       : \"cc\");\n  return (((__uint128_t)(d))<<64) | c;\n  #else\n  uint64_t c,d;\n  __asm__ volatile\n      (\"mulx %[b], %[c], %[d];\"\n       : [c]\"=r\"(c), [d]\"=r\"(d)\n       : [b]\"m\"(*b), [a]\"d\"(a));\n  return (((__uint128_t)(d))<<64) | c;\n  #endif\n}\n\nstatic __inline__ __uint128_t widemul2(const uint64_t *a, const uint64_t *b) {\n  #ifndef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"addq %%rax, %%rax; \"\n       \"mulq %[b];\"\n       : [c]\"=a\"(c), [d]\"=d\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"cc\");\n  return (((__uint128_t)(d))<<64) | c;\n  #else\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx;\"\n       \"leaq (,%%rdx,2), %%rdx;\"\n       \"mulx %[b], %[c], %[d];\"\n       : [c]\"=r\"(c), [d]\"=r\"(d)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\");\n  return (((__uint128_t)(d))<<64) | c;\n  #endif\n}\n\nstatic __inline__ void mac(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void macac(__uint128_t *acc, __uint128_t *acc2, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  uint64_t lo2 = *acc2, hi2 = *acc2>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       \"addq %[c], %[lo2]; \"\n       \"adcq %[d], %[hi2]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi), [lo2]\"+r\"(lo2), [hi2]\"+r\"(hi2)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       \"addq %%rax, %[lo2]; \"\n       \"adcq %%rdx, %[hi2]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi), [lo2]\"+r\"(lo2), [hi2]\"+r\"(hi2)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n  *acc2 = (((__uint128_t)(hi2))<<64) | lo2;\n}\n\nstatic __inline__ void mac_rm(__uint128_t *acc, uint64_t a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"d\"(a)\n       : \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"r\"(a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void mac2(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  \n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"addq %%rdx, %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"addq %[c], %[lo]; \"\n       \"adcq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"addq %%rax, %%rax; \"\n       \"mulq %[b]; \"\n       \"addq %%rax, %[lo]; \"\n       \"adcq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  \n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void msb(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"subq %[c], %[lo]; \"\n       \"sbbq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"mulq %[b]; \"\n       \"subq %%rax, %[lo]; \"\n       \"sbbq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  *acc = (((__uint128_t)(hi))<<64) | lo;\n}\n\nstatic __inline__ void msb2(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t lo = *acc, hi = *acc>>64;\n  #ifdef __BMI2__\n  uint64_t c,d;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"addq %%rdx, %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"subq %[c], %[lo]; \"\n       \"sbbq %[d], %[hi]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  #else\n  __asm__ volatile\n      (\"movq %[a], %%rax; \"\n       \"addq %%rax, %%rax; \"\n       \"mulq %[b]; \"\n       \"subq %%rax, %[lo]; \"\n       \"sbbq %%rdx, %[hi]; \"\n       : [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rax\", \"rdx\", \"cc\");\n  #endif\n  *acc = (((__uint128_t)(hi))<<64) | lo;\n  \n}\n\nstatic __inline__ void mrs(__uint128_t *acc, const uint64_t *a, const uint64_t *b) {\n  uint64_t c,d, lo = *acc, hi = *acc>>64;\n  __asm__ volatile\n      (\"movq %[a], %%rdx; \"\n       \"mulx %[b], %[c], %[d]; \"\n       \"subq %[lo], %[c]; \"\n       \"sbbq %[hi], %[d]; \"\n       : [c]\"=r\"(c), [d]\"=r\"(d), [lo]\"+r\"(lo), [hi]\"+r\"(hi)\n       : [b]\"m\"(*b), [a]\"m\"(*a)\n       : \"rdx\", \"cc\");\n  *acc = (((__uint128_t)(d))<<64) | c;\n}\n\nstatic __inline__ __uint128_t widemulu(uint64_t a, uint64_t b) {\n  return ((__uint128_t)(a)) * b;\n}\n\nstatic __inline__ __int128_t widemuls(int64_t a, int64_t b) {\n  return ((__int128_t)(a)) * b;\n}\n \nstatic __inline__ uint64_t opacify(uint64_t x) {\n  __asm__ volatile(\"\" : \"+r\"(x));\n  return x;\n}\n\nstatic __inline__ mask_t is_zero(uint64_t x) {\n  __asm__ volatile(\"neg %0; sbb %0, %0;\" : \"+r\"(x));\n  return ~x;\n}\n\n#endif /* __X86_64_ARITH_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/f_arithmetic.c",
    "content": "/**\n * @cond internal\n * @file f_arithmetic.c\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief Field-specific arithmetic.\n */\n\n#include \"ec_point.h\"\n\nvoid \nfield_isr (\n    field_a_t a,\n    const field_a_t x\n) {\n    field_a_t L0, L1, L2, L3;\n    field_sqr  (   L2,     x );\n    field_mul  (   L1,     x,   L2 );\n    field_sqrn (   L0,   L1,     2 );\n    field_mul  (   L2,   L1,   L0 );\n    field_sqrn (   L0,   L2,     4 );\n    field_mul  (   L1,   L2,   L0 );\n    field_sqr  (   L0,   L1 );\n    field_mul  (   L2,     x,   L0 );\n    field_sqrn (   L0,   L2,     8 );\n    field_mul  (   L2,   L1,   L0 );\n    field_sqrn (   L0,   L2,    17 );\n    field_mul  (   L1,   L2,   L0 );\n    field_sqrn (   L0,   L1,    17 );\n    field_mul  (   L1,   L2,   L0 );\n    field_sqrn (   L3,   L1,    17 );\n    field_mul  (   L0,   L2,   L3 );\n    field_sqrn (   L2,   L0,    51 );\n    field_mul  (   L0,   L1,   L2 );\n    field_sqrn (   L1,   L0,   119 );\n    field_mul  (   L2,   L0,   L1 );\n    field_sqr  (   L0,   L2 );\n    field_mul  (   L1,     x,   L0 );\n    field_sqrn (   L0,   L1,   239 );\n    field_mul  (     a,   L2,   L0 );\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/f_field.h",
    "content": "/**\n * @file f_field.h\n * @brief Field-specific code.\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n */\n#ifndef __F_FIELD_H__\n#define __F_FIELD_H__ 1\n\n#include \"constant_time.h\"\n#include <string.h>\n\n#include \"p480.h\"\n#define FIELD_BITS           480\n#define field_t              p480_t\n#define field_mul            p480_mul\n#define field_sqr            p480_sqr\n#define field_add_RAW        p480_add_RAW\n#define field_sub_RAW        p480_sub_RAW\n#define field_mulw           p480_mulw\n#define field_addw           p480_addw\n#define field_subw_RAW       p480_subw\n#define field_neg_RAW        p480_neg_RAW\n#define field_set_ui         p480_set_ui\n#define field_bias           p480_bias\n#define field_inverse        p480_inverse\n#define field_eq             p480_eq\n#define field_isr            p480_isr\n#define field_simultaneous_invert p480_simultaneous_invert\n#define field_weak_reduce    p480_weak_reduce\n#define field_strong_reduce  p480_strong_reduce\n#define field_serialize      p480_serialize\n#define field_deserialize    p480_deserialize\n#define field_is_zero        p480_is_zero\n\n#endif /* __F_FIELD_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/f_magic.h",
    "content": "/**\n * @file f_magic.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief Goldilocks magic numbers (group orders, coefficients, algo params etc).\n */\n\n#ifndef __GOLDI_F_MAGIC_H__\n#define __GOLDI_F_MAGIC_H__ 1\n\n#include \"field.h\"\n#include \"ec_point.h\"\n\n/**\n * @brief The Edwards \"d\" term for this curve.\n */\nstatic const int64_t EDWARDS_D = 53825;\n\n/** @brief The number of combs to use for signed comb algo */\n#define COMB_N (USE_BIG_COMBS ? 6  : 5)\n\n/** @brief The number of teeth of the combs for signed comb algo */\n#define COMB_T (USE_BIG_COMBS ? 5  : 4)\n\n/** @brief The spacing the of combs for signed comb algo */\n#define COMB_S (USE_BIG_COMBS ? 16 : 24)\n\n#endif /* __GOLDI_F_MAGIC_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p480/magic.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"field.h\"\n#include \"magic.h\"\n#include \"barrett_field.h\"\n\n/* FUTURE: automatically generate this file? */\n\nconst uint8_t FIELD_MODULUS[FIELD_BYTES] = {\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n/*!*/ 0xfe, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF\n};\n\nconst word_t SCALARMUL_FIXED_WINDOW_ADJUSTMENT[2*SCALAR_WORDS] = {\n    U64LE(0x58b51bc56ea8f0c4),\n    U64LE(0xd361f6a2348b50c9),\n    U64LE(0x08089c139c0002ae),\n    U64LE(0x0001d2ac3d9503a0),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    0x40000000,\n    \n    U64LE(0xcb9c25073e36965b),\n    U64LE(0x6f2d48d8460f1661),\n    U64LE(0x0ab6256f7aaaae3e),\n    U64LE(0x00026e3afcc6af80),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    0x00000000\n};\n\nconst affine_a_t goldilocks_base_point = {{\n    {{{\n        U60LE(0x849ff7f845c30d3),\n        U60LE(0x7dda488553a4c5b),\n        U60LE(0x1d3a2d9844831ea),\n        U60LE(0xb33ecf6ade470a2),\n        U60LE(0x8b3cb95210bd3c3),\n        U60LE(0xfc955e59aeefa65),\n        U60LE(0x3ab247cd530013c),\n        U60LE(0x7ca42af3d564280)\n    }}},\n    {{{ 5 }}}\n}};\n\nstatic const word_t curve_prime_order_lo[(240+WORD_BITS-1)/WORD_BITS] = {\n    U64LE(0x72e70941cf8da597),\n    U64LE(0x9bcb52361183c598),\n    U64LE(0x02ad895bdeaaab8f),\n    U64LE(0x9b8ebf31abe0)\n};\nconst struct barrett_prime_t curve_prime_order = {\n    GOLDI_FIELD_WORDS,\n    30 % WORD_BITS,\n    sizeof(curve_prime_order_lo)/sizeof(curve_prime_order_lo[0]),\n    curve_prime_order_lo\n};\n\nconst field_a_t\nsqrt_d_minus_1 = {{{\n    232 /* Whoa, it comes out even. */\n}}};\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/arch_ref64/arch_config.h",
    "content": "#define WORD_BITS 64\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/arch_ref64/p521.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"p521.h\"\n\nstatic __inline__ __uint128_t widemul(\n    const uint64_t a,\n    const uint64_t b\n) {\n    return ((__uint128_t)a) * ((__uint128_t)b);\n}\n\nstatic __inline__ uint64_t is_zero(uint64_t a) {\n    /* let's hope the compiler isn't clever enough to optimize this. */\n    return (((__uint128_t)a)-1)>>64;\n}\n\nvoid\np521_mul (\n    p521_t *__restrict__ cs,\n    const p521_t *as,\n    const p521_t *bs\n) {\n    uint64_t *c = cs->limb;\n    const uint64_t *a = as->limb, *b = bs->limb;\n    __uint128_t accum0, accum1;\n\n    accum0  = widemul(2*a[8], b[8]);\n    accum1  = widemul(a[0], b[7]);\n    accum0 += widemul(a[1], b[6]);\n    accum1 += widemul(a[2], b[5]);\n    accum0 += widemul(a[3], b[4]);\n    accum1 += widemul(a[4], b[3]);\n    accum0 += widemul(a[5], b[2]);\n    accum1 += widemul(a[6], b[1]);\n    accum0 += widemul(a[7], b[0]);\n    accum1 += accum0;\n    c[7] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n  \n    accum0 = 0;\n    accum1 += widemul(a[0], b[8-0]);\n    accum0 += widemul(a[1], b[8-1]);\n    accum1 += widemul(a[2], b[8-2]);\n    accum0 += widemul(a[3], b[8-3]);\n    accum1 += widemul(a[4], b[8-4]);\n    accum0 += widemul(a[5], b[8-5]);\n    accum1 += widemul(a[6], b[8-6]);\n    accum0 += widemul(a[7], b[8-7]);\n    accum1 += widemul(a[8], b[8-8]);\n    accum1 += accum0;\n    c[8] = accum1 & ((1ull<<57)-1);\n    accum1 >>= 57;\n\n    accum0 = 0;\n    accum0 += widemul(a[1], b[0+9-1]);\n    accum0 += widemul(a[2], b[0+9-2]);\n    accum0 += widemul(a[3], b[0+9-3]);\n    accum0 += widemul(a[4], b[0+9-4]);\n    accum1 += widemul(a[0], b[0-0]);\n    accum0 += widemul(a[5], b[0+9-5]);\n    accum0 += widemul(a[6], b[0+9-6]);\n    accum0 += widemul(a[7], b[0+9-7]);\n    accum0 += widemul(a[8], b[0+9-8]);\n    accum1 += accum0 << 1;\n    c[0] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum0 += widemul(a[2], b[1+9-2]);\n    accum0 += widemul(a[3], b[1+9-3]);\n    accum1 += widemul(a[0], b[1-0]);\n    accum0 += widemul(a[4], b[1+9-4]);\n    accum0 += widemul(a[5], b[1+9-5]);\n    accum1 += widemul(a[1], b[1-1]);\n    accum0 += widemul(a[6], b[1+9-6]);\n    accum0 += widemul(a[7], b[1+9-7]);\n    accum0 += widemul(a[8], b[1+9-8]);\n    accum1 += accum0 << 1;\n    c[1] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum0 += widemul(a[3], b[2+9-3]);\n    accum1 += widemul(a[0], b[2-0]);\n    accum0 += widemul(a[4], b[2+9-4]);\n    accum0 += widemul(a[5], b[2+9-5]);\n    accum1 += widemul(a[1], b[2-1]);\n    accum0 += widemul(a[6], b[2+9-6]);\n    accum0 += widemul(a[7], b[2+9-7]);\n    accum1 += widemul(a[2], b[2-2]);\n    accum0 += widemul(a[8], b[2+9-8]);\n    accum1 += accum0 << 1;\n    c[2] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum0 += widemul(a[4], b[3+9-4]);\n    accum1 += widemul(a[0], b[3-0]);\n    accum0 += widemul(a[5], b[3+9-5]);\n    accum1 += widemul(a[1], b[3-1]);\n    accum0 += widemul(a[6], b[3+9-6]);\n    accum1 += widemul(a[2], b[3-2]);\n    accum0 += widemul(a[7], b[3+9-7]);\n    accum1 += widemul(a[3], b[3-3]);\n    accum0 += widemul(a[8], b[3+9-8]);\n    accum1 += accum0 << 1;\n    c[3] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum1 += widemul(a[0], b[4-0]);\n    accum0 += widemul(a[5], b[4+9-5]);\n    accum1 += widemul(a[1], b[4-1]);\n    accum0 += widemul(a[6], b[4+9-6]);\n    accum1 += widemul(a[2], b[4-2]);\n    accum0 += widemul(a[7], b[4+9-7]);\n    accum1 += widemul(a[3], b[4-3]);\n    accum0 += widemul(a[8], b[4+9-8]);\n    accum1 += widemul(a[4], b[4-4]);\n    accum1 += accum0 << 1;\n    c[4] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum1 += widemul(a[0], b[5-0]);\n    accum0 += widemul(a[6], b[5+9-6]);\n    accum1 += widemul(a[1], b[5-1]);\n    accum1 += widemul(a[2], b[5-2]);\n    accum0 += widemul(a[7], b[5+9-7]);\n    accum1 += widemul(a[3], b[5-3]);\n    accum1 += widemul(a[4], b[5-4]);\n    accum0 += widemul(a[8], b[5+9-8]);\n    accum1 += widemul(a[5], b[5-5]);\n    accum1 += accum0 << 1;\n    c[5] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum1 += widemul(a[0], b[6-0]);\n    accum1 += widemul(a[1], b[6-1]);\n    accum0 += widemul(a[7], b[6+9-7]);\n    accum1 += widemul(a[2], b[6-2]);\n    accum1 += widemul(a[3], b[6-3]);\n    accum1 += widemul(a[4], b[6-4]);\n    accum0 += widemul(a[8], b[6+9-8]);\n    accum1 += widemul(a[5], b[6-5]);\n    accum1 += widemul(a[6], b[6-6]);\n    accum1 += accum0 << 1;\n    c[6] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n  \n    accum1 += c[7];\n    c[7] = accum1 & ((1ull<<58)-1);\n  \n    c[8] += accum1 >> 58;\n}\n\nvoid\np521_mulw (\n    p521_t *__restrict__ cs,\n    const p521_t *as,\n    uint64_t b\n) {\n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum3 = 0, accum6 = 0;\n    uint64_t mask = (1ull<<58) - 1;  \n\n    int i;\n    for (i=0; i<3; i++) {\n        accum0 += widemul(b, a[i]);\n        accum3 += widemul(b, a[i+3]);\n        accum6 += widemul(b, a[i+6]);\n        c[i]   = accum0 & mask; accum0 >>= 58;\n        c[i+3] = accum3 & mask; accum3 >>= 58;\n        if (i==2) { \n            c[i+6] = accum6 & (mask>>1); accum6 >>= 57;\n        } else {\n            c[i+6] = accum6 & mask; accum6 >>= 58;\n        }\n    }\n    \n    accum0 += c[3];\n    c[3] = accum0 & mask;\n    c[4] += accum0 >> 58;\n\n    accum3 += c[6];\n    c[6] = accum3 & mask;\n    c[7] += accum3 >> 58;\n\n    accum6 += c[0];\n    c[0] = accum6 & mask;\n    c[1] += accum6 >> 58;\n}\n\nvoid\np521_sqr (\n    p521_t *__restrict__ cs,\n    const p521_t *as\n) {\n    uint64_t *c = cs->limb;\n    const uint64_t *a = as->limb;\n    __uint128_t accum0, accum1;\n\n    accum0  = widemul(a[8], a[8]);\n    accum1  = widemul(a[0], a[7]);\n    accum0 += widemul(a[1], a[6]);\n    accum1 += widemul(a[2], a[5]);\n    accum0 += widemul(a[3], a[4]);\n    accum1 += accum0;\n    c[7] = 2 * (accum1 & ((1ull<<57)-1));\n    accum1 >>= 57;\n  \n    accum0 = 0;\n    accum0 = 0;\n    accum1 += widemul(a[4], a[4]);\n    accum0 += widemul(a[1], a[7]);\n    accum1 += widemul(2*a[2], a[6]);\n    accum0 += widemul(a[3], a[5]);\n    accum1 += widemul(2*a[0], a[8]);\n    accum1 += 2*accum0;\n    c[8] = accum1 & ((1ull<<57)-1);\n    accum1 >>= 57;\n\n    accum0 = 0;\n    accum1 += widemul(a[0], a[0]);\n    accum0 += widemul(a[1], a[8]);\n    accum0 += widemul(a[2], a[7]);\n    accum0 += widemul(a[3], a[6]);\n    accum0 += widemul(a[4], a[5]);\n    accum1 += accum0 << 2;\n    c[0] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum0 += widemul(a[2], a[8]);\n    accum0 += widemul(a[3], a[7]);\n    accum0 += widemul(a[4], a[6]);\n    accum0 <<= 1;\n    accum0 += widemul(a[5], a[5]);\n    accum0 += widemul(a[0], a[1]);\n    accum1 += accum0 << 1;\n    c[1] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum1 += widemul(a[1], a[1]);\n\n    accum0 += widemul(a[3], a[8]);\n    accum0 += widemul(a[4], a[7]);\n    accum0 += widemul(a[5], a[6]);\n    accum0 <<= 1;\n    accum0 += widemul(a[0], a[2]);\n    accum1 += accum0 << 1;\n    c[2] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum0 += widemul(a[6], a[6]);\n    accum0 += widemul(2*a[5], a[7]);\n    accum0 += widemul(2*a[4], a[8]);\n    accum0 += widemul(a[0], a[3]);\n    accum0 += widemul(a[1], a[2]);\n    accum1 += accum0 << 1;\n    c[3] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum0 += widemul(a[6], a[7]);\n    accum0 += widemul(a[5], a[8]);\n    accum0 <<= 1;\n    accum1 += widemul(a[2], a[2]);\n    accum0 += widemul(a[0], a[4]);\n    accum0 += widemul(a[1], a[3]);\n    accum1 += accum0 << 1;\n    c[4] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum0 += widemul(2*a[6], a[8]);\n    accum0 += widemul(a[7], a[7]);\n    accum0 += widemul(a[0], a[5]);\n    accum0 += widemul(a[1], a[4]);\n    accum0 += widemul(a[2], a[3]);\n    accum1 += accum0 << 1;\n    c[5] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n\n    accum0 = 0;\n    accum1 += widemul(a[3], a[3]);\n    accum0 += widemul(a[0], a[6]);\n    accum0 += widemul(a[1], a[5]);\n    accum0 += widemul(2*a[7], a[8]);\n    accum0 += widemul(a[2], a[4]);\n    accum1 += accum0 << 1;\n    c[6] = accum1 & ((1ull<<58)-1);\n    accum1 >>= 58;\n  \n    accum1 += c[7];\n    c[7] = accum1 & ((1ull<<58)-1);\n  \n    c[8] += accum1 >> 58;\n}\n\nvoid\np521_strong_reduce (\n    p521_t *a\n) {\n    uint64_t mask = (1ull<<58)-1, mask2 = (1ull<<57)-1;\n\n    /* first, clear high */\n    __int128_t scarry = a->limb[8]>>57;\n    a->limb[8] &= mask2;\n\n    /* now the total is less than 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    int i;\n    for (i=0; i<9; i++) {\n        scarry = scarry + a->limb[i] - ((i==8) ? mask2 : mask);\n        a->limb[i] = scarry & ((i==8) ? mask2 : mask);\n        scarry >>= (i==8) ? 57 : 58;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^521\n    * so let's add back in p.  will carry back off the top for 2^521.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    uint64_t scarry_mask = scarry & mask;\n    __uint128_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<9; i++) {\n        carry = carry + a->limb[i] + ((i==8)?(scarry_mask>>1):scarry_mask);\n        a->limb[i] = carry & ((i==8) ? mask>>1 : mask);\n        carry >>= (i==8) ? 57 : 58;\n    }\n\n    assert(is_zero(carry + scarry));\n}\n\nmask_t\np521_is_zero (\n    const struct p521_t *a\n) {\n    struct p521_t b;\n    p521_copy(&b,a);\n    p521_strong_reduce(&b);\n\n    uint64_t any = 0;\n    int i;\n    for (i=0; i<9; i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np521_serialize (\n    uint8_t *serial,\n    const struct p521_t *x\n) {\n    int i,k=0;\n    p521_t red;\n    p521_copy(&red, x);\n    p521_strong_reduce(&red);\n    \n    uint64_t r=0;\n    int bits = 0;\n    for (i=0; i<9; i++) {\n        r |= red.limb[i] << bits;\n        for (bits += 58; bits >= 8; bits -= 8) {\n            serial[k++] = r;\n            r >>= 8;\n        }\n        assert(bits <= 6);\n    }\n    assert(bits);\n    serial[k++] = r;\n}\n\nmask_t\np521_deserialize (\n    p521_t *x,\n    const uint8_t serial[66]\n) {\n    int i,k=0,bits=0;\n    __uint128_t out = 0;\n    uint64_t mask = (1ull<<58)-1;\n    for (i=0; i<9; i++) {\n        out >>= 58;\n        for (; bits<58; bits+=8) {\n            out |= ((__uint128_t)serial[k++])<<bits;\n        }\n        x->limb[i] = out & mask;\n        bits -= 58;\n    }\n    \n    /* Check for reduction.  First, high has to be < 2^57 */\n    mask_t good = is_zero(out>>57);\n    \n    uint64_t and = -1ull;\n    for (i=0; i<8; i++) {\n        and &= x->limb[i];\n    }\n    and &= (2*out+1);\n    good &= is_zero((and+1)>>58);\n    \n    return good;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/arch_ref64/p521.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __P521_H__\n#define __P521_H__ 1\n\n#include <stdint.h>\n#include <assert.h>\n#include <string.h>\n\n#include \"word.h\"\n\ntypedef struct p521_t {\n  uint64_t limb[9];\n} p521_t;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np521_set_ui (\n    p521_t *out,\n    uint64_t x\n) __attribute__((unused));\n\nstatic __inline__ void\np521_add_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_sub_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_neg_RAW (\n    p521_t *out,\n    const p521_t *a\n) __attribute__((unused));\n\nstatic __inline__ void\np521_addw (\n    p521_t *a,\n    uint64_t x\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_subw (\n    p521_t *a,\n    uint64_t x\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_copy (\n    p521_t *out,\n    const p521_t *a\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_weak_reduce (\n    p521_t *inout\n) __attribute__((unused));\n             \nvoid\np521_strong_reduce (\n    p521_t *inout\n);\n\nmask_t\np521_is_zero (\n    const p521_t *in\n);\n\nstatic __inline__ void\np521_bias (\n    p521_t *inout,\n    int amount\n) __attribute__((unused));\n\nstatic __inline__ void\np521_really_bias (\n    p521_t *inout,\n    int amount\n) __attribute__((unused));\n         \nvoid\np521_mul (\n    p521_t *__restrict__ out,\n    const p521_t *a,\n    const p521_t *b\n);\n\nvoid\np521_mulw (\n    p521_t *__restrict__ out,\n    const p521_t *a,\n    uint64_t b\n);\n\nvoid\np521_sqr (\n    p521_t *__restrict__ out,\n    const p521_t *a\n);\n\nvoid\np521_serialize (\n    uint8_t *serial,\n    const struct p521_t *x\n);\n\nmask_t\np521_deserialize (\n    p521_t *x,\n    const uint8_t serial[66]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\nvoid\np521_set_ui (\n    p521_t *out,\n    uint64_t x\n) {\n    int i;\n    out->limb[0] = x;\n    for (i=1; i<9; i++) {\n      out->limb[i] = 0;\n    }\n}\n\nvoid\np521_add_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) {\n    unsigned int i;\n    for (i=0; i<9; i++) {\n        out->limb[i] = a->limb[i] + b->limb[i];\n    }\n    p521_weak_reduce(out);\n}\n\nvoid\np521_sub_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) {\n    unsigned int i;\n    uint64_t co1 = ((1ull<<58)-1)*4, co2 = ((1ull<<57)-1)*4;\n    for (i=0; i<9; i++) {\n        out->limb[i] = a->limb[i] - b->limb[i] + ((i==8) ? co2 : co1);\n    }\n    p521_weak_reduce(out);\n}\n\nvoid\np521_neg_RAW (\n    struct p521_t *out,\n    const p521_t *a\n) {\n    unsigned int i;\n    uint64_t co1 = ((1ull<<58)-1)*4, co2 = ((1ull<<57)-1)*4;\n    for (i=0; i<9; i++) {\n        out->limb[i] = ((i==8) ? co2 : co1) - a->limb[i];\n    }\n    p521_weak_reduce(out);\n}\n\nvoid\np521_addw (\n    p521_t *a,\n    uint64_t x\n) {\n  a->limb[0] += x;\n  a->limb[1] += a->limb[0]>>58;\n  a->limb[0] &= (1ull<<58)-1;\n}\n             \nvoid\np521_subw (\n    p521_t *a,\n    uint64_t x\n) {\n  a->limb[0] -= x;\n  p521_really_bias(a, 1);\n  p521_weak_reduce(a);\n}\n\nvoid\np521_copy (\n    p521_t *out,\n    const p521_t *a\n) {\n    memcpy(out,a,sizeof(*a));\n}\n\nvoid\np521_really_bias (\n    p521_t *a,\n    int amt\n) {\n    uint64_t co1 = ((1ull<<58)-1)*2*amt, co2 = ((1ull<<57)-1)*2*amt;\n    int i;\n    for (i=0; i<9; i++) {\n        a->limb[i] += (i==8) ? co2 : co1;\n    }\n}\n\nvoid\np521_bias (\n    p521_t *a,\n    int amt\n) {\n    (void) a;\n    (void) amt;\n}\n\nvoid\np521_weak_reduce (\n    p521_t *a\n) {\n    uint64_t mask = (1ull<<58) - 1;\n    uint64_t tmp = a->limb[8] >> 57;\n    int i;\n    for (i=8; i>0; i--) {\n        a->limb[i] = (a->limb[i] & ((i==8) ? mask>>1 : mask)) + (a->limb[i-1]>>58);\n    }\n    a->limb[0] = (a->limb[0] & mask) + tmp;\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __P521_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/arch_x86_64_r12/arch_config.h",
    "content": "#define WORD_BITS 64\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/arch_x86_64_r12/p521.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"p521.h\"\n\ntypedef struct {\n  uint64x3_t lo, hi, hier;\n} nonad_t;\n\nstatic __inline__ uint64_t is_zero(uint64_t a) {\n    /* let's hope the compiler isn't clever enough to optimize this. */\n    return (((__uint128_t)a)-1)>>64;\n}\n\nstatic inline __uint128_t widemulu(uint64_t a, uint64_t b) {\n    return ((__uint128_t)(a)) * b;\n}\n\nstatic inline __int128_t widemuls(int64_t a, int64_t b) {\n    return ((__int128_t)(a)) * b;\n}\n \n/* This is a trick to prevent terrible register allocation by hiding things from clang's optimizer */\nstatic inline uint64_t opacify(uint64_t x) {\n    __asm__ volatile(\"\" : \"+r\"(x));\n    return x;\n}\n\n/* These used to be hexads, leading to 10% better performance, but there were overflow issues */\nstatic inline void nonad_mul (\n  nonad_t *hex,\n  const uint64_t *a,\n  const uint64_t *b\n) {\n    __uint128_t xu, xv, xw;\n\n    uint64_t tmp = opacify(a[2]);\n    xw = widemulu(tmp, b[0]);\n    tmp <<= 1;\n    xu = widemulu(tmp, b[1]);\n    xv = widemulu(tmp, b[2]);\n\n    tmp = opacify(a[1]);\n    xw += widemulu(tmp, b[1]);\n    xv += widemulu(tmp, b[0]);\n    tmp <<= 1;\n    xu += widemulu(tmp, b[2]);\n\n    tmp = opacify(a[0]);\n    xu += widemulu(tmp, b[0]);\n    xv += widemulu(tmp, b[1]);\n    xw += widemulu(tmp, b[2]);\n\n    uint64x3_t\n    lo = { (uint64_t)(xu), (uint64_t)(xv), (uint64_t)(xw), 0 },\n    hi = { (uint64_t)(xu>>64), (uint64_t)(xv>>64), (uint64_t)(xw>>64), 0 };\n\n    hex->hier = hi>>52;\n    hex->hi = (hi<<12)>>6 | lo>>58;\n    hex->lo = lo & mask58;\n}\n\nstatic inline void hexad_mul_signed (\n  nonad_t *hex,\n  const int64_t *a,\n  const int64_t *b\n) {\n    __int128_t xu, xv, xw;\n\n    int64_t tmp = opacify(a[2]);\n    xw = widemuls(tmp, b[0]);\n    tmp <<= 1;\n    xu = widemuls(tmp, b[1]);\n    xv = widemuls(tmp, b[2]);\n\n    tmp = opacify(a[1]);\n    xw += widemuls(tmp, b[1]);\n    xv += widemuls(tmp, b[0]);\n    tmp <<= 1;\n    xu += widemuls(tmp, b[2]);\n\n    tmp = opacify(a[0]);\n    xu += widemuls(tmp, b[0]);\n    xv += widemuls(tmp, b[1]);\n    xw += widemuls(tmp, b[2]);\n\n    uint64x3_t\n    lo = { (uint64_t)(xu), (uint64_t)(xv), (uint64_t)(xw), 0 },\n    hi = { (uint64_t)(xu>>64), (uint64_t)(xv>>64), (uint64_t)(xw>>64), 0 };\n\n    /*\n    hex->hier = (uint64x4_t)((int64x4_t)hi>>52);\n    hex->hi = (hi<<12)>>6 | lo>>58;\n    hex->lo = lo & mask58;\n    */\n    \n    hex->hi = hi<<6 | lo>>58;\n    hex->lo = lo & mask58;\n}\n\nstatic inline void nonad_sqr (\n  nonad_t *hex,\n  const uint64_t *a\n) {\n    __uint128_t xu, xv, xw;\n\n    int64_t tmp = a[2];\n    tmp <<= 1;\n    xw = widemulu(tmp, a[0]);\n    xv = widemulu(tmp, a[2]);\n    tmp <<= 1;\n    xu = widemulu(tmp, a[1]);\n\n    tmp = a[1];\n    xw += widemulu(tmp, a[1]);\n    tmp <<= 1;\n    xv += widemulu(tmp, a[0]);\n\n    tmp = a[0];\n    xu += widemulu(tmp, a[0]);\n\n    uint64x3_t\n    lo = { (uint64_t)(xu), (uint64_t)(xv), (uint64_t)(xw), 0 },\n    hi = { (uint64_t)(xu>>64), (uint64_t)(xv>>64), (uint64_t)(xw>>64), 0 };\n\n    hex->hier = hi>>52;\n    hex->hi = (hi<<12)>>6 | lo>>58;\n    hex->lo = lo & mask58;\n}\n\nstatic inline void hexad_sqr_signed (\n  nonad_t *hex,\n  const int64_t *a\n) {\n    __uint128_t xu, xv, xw;\n\n    int64_t tmp = a[2];\n    tmp <<= 1;\n    xw = widemuls(tmp, a[0]);\n    xv = widemuls(tmp, a[2]);\n    tmp <<= 1;\n    xu = widemuls(tmp, a[1]);\n\n    tmp = a[1];\n    xw += widemuls(tmp, a[1]);\n    tmp <<= 1;\n    xv += widemuls(tmp, a[0]);\n\n    tmp = a[0];\n    xu += widemuls(tmp, a[0]);\n\n    uint64x3_t\n    lo = { (uint64_t)(xu), (uint64_t)(xv), (uint64_t)(xw), 0 },\n    hi = { (uint64_t)(xu>>64), (uint64_t)(xv>>64), (uint64_t)(xw>>64), 0 };\n\n\n    /*\n    hex->hier = (uint64x4_t)((int64x4_t)hi>>52);\n    hex->hi = (hi<<12)>>6 | lo>>58;\n    hex->lo = lo & mask58;\n    */\n    \n    hex->hi = hi<<6 | lo>>58;\n    hex->lo = lo & mask58;\n}\n\n\n\nvoid\np521_mul (\n    p521_t *__restrict__ cs,\n    const p521_t *as,\n    const p521_t *bs\n) {\n    int i;\n    \n#if 0\n    assert(as->limb[3] == 0 && as->limb[7] == 0 && as->limb[11] == 0);\n    assert(bs->limb[3] == 0 && bs->limb[7] == 0 && bs->limb[11] == 0);\n    for (i=0; i<12; i++) {\n        assert(as->limb[i] < 5ull<<57);\n        assert(bs->limb[i] < 5ull<<57);\n    }\n#endif\n    \n    /* Bounds on the hexads and nonads.\n     *\n     * Limbs < 2<<58 + ep.\n     * Nonad mul < 1<<58, 1<<58, tiny\n     * -> t0 < (3,2,2)<<58 + tiny\n     * t1,t2 < 2<<58 + tiny\n     *   * w < (4,2,2)\n     * Hexad mul < +- (5,4,3) * 4<<116 -> 2^58 lo, +- (5,4,3) * 4<<58+ep\n     * TimesW < (2,1,1)<<58, (6,5,4)*4<<58 + ep\n    \n     * ot2 = t0 + timesW(t2 + t1 - acdf.hi - bcef.lo);\n         == (3,2,2) + (4,2,2) + (4,2,2) +- (6,5,4)*4 - (1) << 58\n         in (-25, +35) << 58\n\n    uint64x3_t ot0 = t0 + timesW(t2 + t1 - acdf.hi - bcef.lo);\n    uint64x3_t ot1 = t0 + t1 - abde.lo + timesW(t2 - bcef.hi);\n    uint64x3_t ot2 = t0 + t1 + t2 - abde.hi - acdf.lo + vhi2;\n     \n     */\n    \n    \n    uint64_t *c = cs->limb;\n    const uint64_t *a = as->limb, *b = bs->limb;\n\n    nonad_t ad, be, cf, abde, bcef, acdf;\n    nonad_mul(&ad, &a[0], &b[0]);\n    nonad_mul(&be, &a[4], &b[4]);\n    nonad_mul(&cf, &a[8], &b[8]);\n\n    uint64_t amt = 26;\n    uint64x3_t vhi = { amt*((1ull<<58)-1), amt*((1ull<<58)-1), amt*((1ull<<58)-1), 0 },\n    vhi2 = { 0, 0, -amt<<57, 0 };\n\n    uint64x3_t t2 = cf.lo + be.hi + ad.hier, t0 = ad.lo + timesW(cf.hi + be.hier) + vhi, t1 = ad.hi + be.lo + timesW(cf.hier);\n\n    int64_t ta[4] VECTOR_ALIGNED, tb[4] VECTOR_ALIGNED;\n    // it seems to be faster not to vectorize these loops\n    for (i=0; i<3; i++) {\n        ta[i] = a[i]-a[i+4];\n        tb[i] = b[i]-b[i+4];\n    }\n    hexad_mul_signed(&abde,ta,tb);\n\n    for (i=0; i<3; i++) {\n        ta[i] = a[i+4]-a[i+8];\n        tb[i] = b[i+4]-b[i+8];\n    }\n    hexad_mul_signed(&bcef,ta,tb);\n\n    for (i=0; i<3; i++) {\n        ta[i] = a[i]-a[i+8];\n        tb[i] = b[i]-b[i+8];\n    }\n    hexad_mul_signed(&acdf,ta,tb);\n\n    uint64x3_t ot0 = t0 + timesW(t2 + t1 - acdf.hi - bcef.lo);\n    uint64x3_t ot1 = t0 + t1 - abde.lo + timesW(t2 - bcef.hi);\n    uint64x3_t ot2 = t0 + t1 + t2 - abde.hi - acdf.lo + vhi2;\n\n    uint64x3_t out0 = (ot0 & mask58) + timesW(ot2>>58);\n    uint64x3_t out1 = (ot1 & mask58) + (ot0>>58);\n    uint64x3_t out2 = (ot2 & mask58) + (ot1>>58);\n\n    *(uint64x4_t *)&c[0] = out0;\n    *(uint64x4_t *)&c[4] = out1;\n    *(uint64x4_t *)&c[8] = out2;\n}\n\n\nvoid\np521_sqr (\n    p521_t *__restrict__ cs,\n    const p521_t *as\n) {\n    \n\n    int i;\n#if 0\n    assert(as->limb[3] == 0 && as->limb[7] == 0 && as->limb[11] == 0);\n    for (i=0; i<12; i++) {\n        assert(as->limb[i] < 5ull<<57);\n    }\n#endif\n\n    uint64_t *c = cs->limb;\n    const uint64_t *a = as->limb;\n\n    nonad_t ad, be, cf, abde, bcef, acdf;\n    nonad_sqr(&ad, &a[0]);\n    nonad_sqr(&be, &a[4]);\n    nonad_sqr(&cf, &a[8]);\n\n    uint64_t amt = 26;\n    uint64x3_t vhi = { amt*((1ull<<58)-1), amt*((1ull<<58)-1), amt*((1ull<<58)-1), 0 },\n    vhi2 = { 0, 0, -amt<<57, 0 };\n    \n    uint64x3_t t2 = cf.lo + be.hi + ad.hier, t0 = ad.lo + timesW(cf.hi + be.hier) + vhi, t1 = ad.hi + be.lo + timesW(cf.hier);\n\n    int64_t ta[4] VECTOR_ALIGNED;\n    // it seems to be faster not to vectorize these loops\n    for (i=0; i<3; i++) {\n        ta[i] = a[i]-a[i+4];\n    }\n    hexad_sqr_signed(&abde,ta);\n\n    for (i=0; i<3; i++) {\n        ta[i] = a[i+4]-a[i+8];\n    }\n    hexad_sqr_signed(&bcef,ta);\n\n    for (i=0; i<3; i++) {\n        ta[i] = a[i]-a[i+8];\n    }\n    hexad_sqr_signed(&acdf,ta);\n\n    uint64x3_t ot0 = t0 + timesW(t2 + t1 - acdf.hi - bcef.lo);\n    uint64x3_t ot1 = t0 + t1 - abde.lo + timesW(t2 - bcef.hi);\n    uint64x3_t ot2 = t0 + t1 + t2 - abde.hi - acdf.lo + vhi2;\n\n    uint64x3_t out0 = (ot0 & mask58) + timesW(ot2>>58);\n    uint64x3_t out1 = (ot1 & mask58) + (ot0>>58);\n    uint64x3_t out2 = (ot2 & mask58) + (ot1>>58);\n\n    *(uint64x4_t *)&c[0] = out0;\n    *(uint64x4_t *)&c[4] = out1;\n    *(uint64x4_t *)&c[8] = out2;\n}\n\nvoid\np521_mulw (\n    p521_t *__restrict__ cs,\n    const p521_t *as,\n    uint64_t b\n) {\n    \n    \n\n#if 0\n    int i;\n    assert(as->limb[3] == 0 && as->limb[7] == 0 && as->limb[11] == 0);\n    for (i=0; i<12; i++) {\n        assert(as->limb[i] < 1ull<<61);\n    }\n    assert(b < 1ull<<61);\n#endif\n    \n    \n    const uint64_t *a = as->limb;\n    uint64_t *c = cs->limb;\n\n    __uint128_t accum0 = 0, accum3 = 0, accum6 = 0;\n    uint64_t mask = (1ull<<58) - 1;\n\n    accum0 += widemulu(b, a[0]);\n    accum3 += widemulu(b, a[1]);\n    accum6 += widemulu(b, a[2]);\n    c[0] = accum0 & mask; accum0 >>= 58;\n    c[1] = accum3 & mask; accum3 >>= 58;\n    c[2] = accum6 & mask; accum6 >>= 58;\n\n    accum0 += widemulu(b, a[4]);\n    accum3 += widemulu(b, a[5]);\n    accum6 += widemulu(b, a[6]);\n    c[4] = accum0 & mask; accum0 >>= 58;\n    c[5] = accum3 & mask; accum3 >>= 58;\n    c[6] = accum6 & mask; accum6 >>= 58;\n\n    accum0 += widemulu(b, a[8]);\n    accum3 += widemulu(b, a[9]);\n    accum6 += widemulu(b, a[10]);\n    c[8] = accum0 & mask; accum0 >>= 58;\n    c[9] = accum3 & mask; accum3 >>= 58;\n    c[10] = accum6 & (mask>>1); accum6 >>= 57;\n    \n    accum0 += c[1];\n    c[1] = accum0 & mask;\n    c[5] += accum0 >> 58;\n\n    accum3 += c[2];\n    c[2] = accum3 & mask;\n    c[6] += accum3 >> 58;\n\n    accum6 += c[0];\n    c[0] = accum6 & mask;\n    c[4] += accum6 >> 58;\n    \n    c[3] = c[7] = c[11] = 0;\n}\n\n\nvoid\np521_strong_reduce (\n    p521_t *a\n) {\n    uint64_t mask = (1ull<<58)-1, mask2 = (1ull<<57)-1;\n\n    /* first, clear high */\n    __int128_t scarry = a->limb[LIMBPERM(8)]>>57;\n    a->limb[LIMBPERM(8)] &= mask2;\n\n    /* now the total is less than 2p */\n\n    /* compute total_value - p.  No need to reduce mod p. */\n\n    int i;\n    for (i=0; i<9; i++) {\n        scarry = scarry + a->limb[LIMBPERM(i)] - ((i==8) ? mask2 : mask);\n        a->limb[LIMBPERM(i)] = scarry & ((i==8) ? mask2 : mask);\n        scarry >>= (i==8) ? 57 : 58;\n    }\n\n    /* uncommon case: it was >= p, so now scarry = 0 and this = x\n    * common case: it was < p, so now scarry = -1 and this = x - p + 2^521\n    * so let's add back in p.  will carry back off the top for 2^521.\n    */\n\n    assert(is_zero(scarry) | is_zero(scarry+1));\n\n    uint64_t scarry_mask = scarry & mask;\n    __uint128_t carry = 0;\n\n    /* add it back */\n    for (i=0; i<9; i++) {\n        carry = carry + a->limb[LIMBPERM(i)] + ((i==8)?(scarry_mask>>1):scarry_mask);\n        a->limb[LIMBPERM(i)] = carry & ((i==8) ? mask>>1 : mask);\n        carry >>= (i==8) ? 57 : 58;\n    }\n\n    assert(is_zero(carry + scarry));\n\n    a->limb[3] = a->limb[7] = a->limb[11] = 0;\n}\n\nmask_t\np521_is_zero (\n    const struct p521_t *a\n) {\n    struct p521_t b;\n    p521_copy(&b,a);\n    p521_strong_reduce(&b);\n\n    uint64_t any = 0;\n    unsigned int i;\n    for (i=0; i<sizeof(b)/sizeof(b.limb[0]); i++) {\n        any |= b.limb[i];\n    }\n    return is_zero(any);\n}\n\nvoid\np521_serialize (\n    uint8_t *serial,\n    const struct p521_t *x\n) {\n    unsigned int i,k=0;\n    p521_t red;\n    p521_copy(&red, x);\n    p521_strong_reduce(&red);\n    \n    uint64_t r=0;\n    int bits = 0;\n    for (i=0; i<9; i++) {\n        r |= red.limb[LIMBPERM(i)] << bits;\n        for (bits += 58; bits >= 8; bits -= 8) {\n            serial[k++] = r;\n            r >>= 8;\n        }\n        assert(bits <= 6);\n    }\n    assert(bits);\n    serial[k++] = r;\n}\n\nmask_t\np521_deserialize (\n    p521_t *x,\n    const uint8_t serial[LIMBPERM(66)]\n) {\n    int i,k=0,bits=0;\n    __uint128_t out = 0;\n    uint64_t mask = (1ull<<58)-1;\n    for (i=0; i<9; i++) {\n        out >>= 58;\n        for (; bits<58; bits+=8) {\n            out |= ((__uint128_t)serial[k++])<<bits;\n        }\n        x->limb[LIMBPERM(i)] = out & mask;\n        bits -= 58;\n    }\n    \n    /* Check for reduction.  First, high has to be < 2^57 */\n    mask_t good = is_zero(out>>57);\n    \n    uint64_t and = -1ull;\n    for (i=0; i<8; i++) {\n        and &= x->limb[LIMBPERM(i)];\n    }\n    and &= (2*out+1);\n    good &= is_zero((and+1)>>58);\n\n    x->limb[3] = x->limb[7] = x->limb[11] = 0;\n    \n    return good;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/arch_x86_64_r12/p521.h",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#ifndef __P521_H__\n#define __P521_H__ 1\n\n#include <stdint.h>\n#include <assert.h>\n#include <string.h>\n\n#include \"word.h\"\n#include \"constant_time.h\"\n\n#define LIMBPERM(x) (((x)%3)*4 + (x)/3)\n#define USE_P521_3x3_TRANSPOSE\n\ntypedef struct p521_t {\n  uint64_t limb[12];\n} __attribute__((aligned(32))) p521_t;\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nstatic __inline__ void\np521_set_ui (\n    p521_t *out,\n    uint64_t x\n) __attribute__((unused));\n\nstatic __inline__ void\np521_add_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_sub_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_neg_RAW (\n    p521_t *out,\n    const p521_t *a\n) __attribute__((unused));\n\nstatic __inline__ void\np521_addw (\n    p521_t *a,\n    uint64_t x\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_subw (\n    p521_t *a,\n    uint64_t x\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_copy (\n    p521_t *out,\n    const p521_t *a\n) __attribute__((unused));\n             \nstatic __inline__ void\np521_weak_reduce (\n    p521_t *inout\n) __attribute__((unused));\n             \nvoid\np521_strong_reduce (\n    p521_t *inout\n);\n\nmask_t\np521_is_zero (\n    const p521_t *in\n);\n\nstatic __inline__ void\np521_bias (\n    p521_t *inout,\n    int amount\n) __attribute__((unused));\n         \nvoid\np521_mul (\n    p521_t *__restrict__ out,\n    const p521_t *a,\n    const p521_t *b\n);\n\nvoid\np521_mulw (\n    p521_t *__restrict__ out,\n    const p521_t *a,\n    uint64_t b\n);\n\nvoid\np521_sqr (\n    p521_t *__restrict__ out,\n    const p521_t *a\n);\n\nvoid\np521_serialize (\n    uint8_t *serial,\n    const struct p521_t *x\n);\n\nmask_t\np521_deserialize (\n    p521_t *x,\n    const uint8_t serial[66]\n);\n\n/* -------------- Inline functions begin here -------------- */\n\ntypedef uint64x4_t uint64x3_t; /* fit it in a vector register */\n\nstatic const uint64x3_t mask58 = { (1ull<<58) - 1, (1ull<<58) - 1, (1ull<<58) - 1, 0 };\n\n/* Currently requires CLANG.  Sorry. */\nstatic inline uint64x3_t\n__attribute__((unused))\ntimesW (\n  uint64x3_t u\n) {\n  return u.zxyw + u.zwww;\n}\n\nvoid\np521_set_ui (\n    p521_t *out,\n    uint64_t x\n) {\n    int i;\n    out->limb[0] = x;\n    for (i=1; i<12; i++) {\n      out->limb[i] = 0;\n    }\n}\n\nvoid\np521_add_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] + ((const uint64xn_t*)b)[i];\n    }\n}\n\nvoid\np521_sub_RAW (\n    p521_t *out,\n    const p521_t *a,\n    const p521_t *b\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = ((const uint64xn_t*)a)[i] - ((const uint64xn_t*)b)[i];\n    }\n}\n\nvoid\np521_neg_RAW (\n    struct p521_t *out,\n    const p521_t *a\n) {\n    unsigned int i;\n    for (i=0; i<sizeof(*out)/sizeof(uint64xn_t); i++) {\n        ((uint64xn_t*)out)[i] = -((const uint64xn_t*)a)[i];\n    }\n}\n\nvoid\np521_addw (\n    p521_t *a,\n    uint64_t x\n) {\n    a->limb[0] += x;\n}\n             \nvoid\np521_subw (\n    p521_t *a,\n    uint64_t x\n) {\n    a->limb[0] -= x;\n}\n\nvoid\np521_copy (\n    p521_t *out,\n    const p521_t *a\n) {\n    memcpy(out,a,sizeof(*a));\n}\n\nvoid\np521_bias (\n    p521_t *a,\n    int amt\n) {\n    uint64_t co0 = ((1ull<<58)-2)*amt, co1 = ((1ull<<58)-1)*amt;\n    uint64x4_t vlo = { co0, co1, co1, 0 }, vhi = { co1, co1, co1, 0 };\n    ((uint64x4_t*)a)[0] += vlo;\n    ((uint64x4_t*)a)[1] += vhi;\n    ((uint64x4_t*)a)[2] += vhi;\n}\n\nvoid\np521_weak_reduce (\n    p521_t *a\n) {\n#if 0\n    int i;\n    assert(a->limb[3] == 0 && a->limb[7] == 0 && a->limb[11] == 0);\n    for (i=0; i<12; i++) {\n        assert(a->limb[i] < 3ull<<61);\n    }\n#endif\n    \n    uint64x3_t\n        ot0 = ((uint64x4_t*)a)[0],\n        ot1 = ((uint64x4_t*)a)[1],\n        ot2 = ((uint64x4_t*)a)[2];\n    \n    uint64x3_t out0 = (ot0 & mask58) + timesW(ot2>>58);\n    uint64x3_t out1 = (ot1 & mask58) + (ot0>>58);\n    uint64x3_t out2 = (ot2 & mask58) + (ot1>>58);\n\n    ((uint64x4_t*)a)[0] = out0;\n    ((uint64x4_t*)a)[1] = out1;\n    ((uint64x4_t*)a)[2] = out2;\n}\n\n#ifdef __cplusplus\n}; /* extern \"C\" */\n#endif\n\n#endif /* __P521_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/f_arithmetic.c",
    "content": "/**\n * @cond internal\n * @file f_arithmetic.c\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief Field-specific arithmetic.\n */\n\n#include \"ec_point.h\"\n\nvoid \nfield_isr (\n    field_a_t a,\n    const field_a_t x\n) {\n    field_a_t L0, L1, L2;\n    field_sqr  (   L1,     x );\n    field_mul  (   L0,     x,   L1 );\n    field_sqrn (   L2,   L0,     2 );\n    field_mul  (   L1,   L0,   L2 );\n    field_sqrn (   L2,   L1,     4 );\n    field_mul  (   L0,   L1,   L2 );\n    field_sqrn (   L2,   L0,     8 );\n    field_mul  (   L1,   L0,   L2 );\n    field_sqrn (   L2,   L1,    16 );\n    field_mul  (   L0,   L1,   L2 );\n    field_sqrn (   L2,   L0,    32 );\n    field_mul  (   L1,   L0,   L2 );\n    field_sqr  (   L2,   L1 );\n    field_mul  (   L0,     x,   L2 );\n    field_sqrn (   L2,   L0,    64 );\n    field_mul  (   L0,   L1,   L2 );\n    field_sqrn (   L2,   L0,   129 );\n    field_mul  (   L1,   L0,   L2 );\n    field_sqr  (   L2,   L1 );\n    field_mul  (   L0,     x,   L2 );\n    field_sqrn (   L2,   L0,   259 );\n    field_mul  (   L1,   L0,   L2 );\n    field_sqr  (   L0,   L1 );\n    field_mul  (     a,     x,   L0 );\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/f_field.h",
    "content": "/**\n * @file f_field.h\n * @brief Field-specific code.\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n */\n#ifndef __F_FIELD_H__\n#define __F_FIELD_H__ 1\n\n#include <string.h>\n#include \"constant_time.h\"\n\n#include \"p521.h\"\n#define FIELD_BITS           521\n#define field_t              p521_t\n#define field_mul            p521_mul\n#define field_sqr            p521_sqr\n#define field_add_RAW        p521_add_RAW\n#define field_sub_RAW        p521_sub_RAW\n#define field_mulw           p521_mulw\n#define field_addw           p521_addw\n#define field_subw_RAW       p521_subw\n#define field_neg_RAW        p521_neg_RAW\n#define field_set_ui         p521_set_ui\n#define field_bias           p521_bias\n#define field_inverse        p521_inverse\n#define field_eq             p521_eq\n#define field_isr            p521_isr\n#define field_simultaneous_invert p521_simultaneous_invert\n#define field_weak_reduce    p521_weak_reduce\n#define field_strong_reduce  p521_strong_reduce\n#define field_serialize      p521_serialize\n#define field_deserialize    p521_deserialize\n#define field_is_zero        p521_is_zero\n\n#endif /* __F_FIELD_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/f_magic.h",
    "content": "/**\n * @file f_magic.h\n * @copyright\n *   Copyright (c) 2014 Cryptography Research, Inc.  \\n\n *   Released under the MIT License.  See LICENSE.txt for license information.\n * @author Mike Hamburg\n * @brief Goldilocks magic numbers (group orders, coefficients, algo params etc).\n */\n\n#ifndef __GOLDI_F_MAGIC_H__\n#define __GOLDI_F_MAGIC_H__ 1\n\n#include \"field.h\"\n#include \"ec_point.h\"\n\n/**\n * @brief The Edwards \"d\" term for this curve.\n */\nstatic const int64_t EDWARDS_D = -376014;\n\n/** @brief The number of combs to use for signed comb algo */\n#define COMB_N (USE_BIG_COMBS ? 4  : 5)\n\n/** @brief The number of teeth of the combs for signed comb algo */\n#define COMB_T (USE_BIG_COMBS ? 5  : 4)\n\n/** @brief The spacing the of combs for signed comb algo */\n#define COMB_S (USE_BIG_COMBS ? 26 : 26)\n\n#endif /* __GOLDI_F_MAGIC_H__ */\n"
  },
  {
    "path": "src/crypto/goldilocks/src/p521/magic.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"field.h\"\n#include \"magic.h\"\n#include \"barrett_field.h\"\n\n/* FUTURE: automatically generate this file? */\n\nconst uint8_t FIELD_MODULUS[FIELD_BYTES] = {\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,\n      0xFF, 0x01\n};\n\nconst word_t SCALARMUL_FIXED_WINDOW_ADJUSTMENT[2*SCALAR_WORDS] = {\n    U64LE(0xbf15dbca0ae7f294),\n    U64LE(0x04273ba96570e0ba),\n    U64LE(0xc94750a1813ac0fb),\n    U64LE(0xea4939b8b9037a08),\n    U64LE(0x0000000000000002),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    0x80,\n        \n    U64LE(0x7e2bb79415cfe529),\n    U64LE(0x084e7752cae1c175),\n    U64LE(0x928ea143027581f6),\n    U64LE(0xd49273717206f411),\n    U64LE(0x0000000000000005),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    U64LE(0x0000000000000000),\n    0x0\n};\n\nconst affine_a_t goldilocks_base_point = {{\n    {{{\n#ifdef USE_P521_3x3_TRANSPOSE\n        U58LE(0x02a940a2f19ba6c),\n        U58LE(0x3331c90d2c6ba52),\n        U58LE(0x2878a3bfd9f42fc),\n\t0,\n        U58LE(0x03ec4cd920e2a8c),\n        U58LE(0x0c6203913f6ecc5),\n        U58LE(0x06277e432c8a5ac),\n\t0,\n        U58LE(0x1d568fc99c6059d),\n        U58LE(0x1b2063b22fcf270),\n        U58LE(0x0752cb45c48648b),\n\t0\n#else\n        U58LE(0x02a940a2f19ba6c),\n        U58LE(0x03ec4cd920e2a8c),\n        U58LE(0x1d568fc99c6059d),\n        U58LE(0x3331c90d2c6ba52),\n        U58LE(0x0c6203913f6ecc5),\n        U58LE(0x1b2063b22fcf270),\n        U58LE(0x2878a3bfd9f42fc),\n        U58LE(0x06277e432c8a5ac),\n        U58LE(0x0752cb45c48648b)\n#endif\n    }}},\n    {{{ 12 }}}\n}};\n\nstatic const word_t curve_prime_order_lo[(261+WORD_BITS-1)/WORD_BITS] = {\n    U64LE(0xbf15dbca0ae7f295),\n    U64LE(0x4273ba96570e0ba),\n    U64LE(0xc94750a1813ac0fb),\n    U64LE(0xea4939b8b9037a08),\n    2\n};\nconst struct barrett_prime_t curve_prime_order = {\n    GOLDI_FIELD_WORDS,\n    7 % WORD_BITS,\n    sizeof(curve_prime_order_lo)/sizeof(curve_prime_order_lo[0]),\n    curve_prime_order_lo\n};\n\nconst field_a_t\nsqrt_d_minus_1 = {{{\n#ifdef USE_P521_3x3_TRANSPOSE\n    U58LE(0x1e2be72c1c81990),\n    U58LE(0x207dfc238a33e46),\n    U58LE(0x2264cfb418c4c30),\n    0,\n    U58LE(0x1135002ad596c69),\n    U58LE(0x0e30107cd79d1f6),\n    U58LE(0x0524b9e715937f5),\n    0,\n    U58LE(0x2ab3a257a22666d),\n    U58LE(0x2d80cc2936a1824),\n    U58LE(0x0a9ea3ac10d6aed),\n    0\n#else\n    U58LE(0x1e2be72c1c81990),\n    U58LE(0x1135002ad596c69),\n    U58LE(0x2ab3a257a22666d),\n    U58LE(0x207dfc238a33e46),\n    U58LE(0x0e30107cd79d1f6),\n    U58LE(0x2d80cc2936a1824),\n    U58LE(0x2264cfb418c4c30),\n    U58LE(0x0524b9e715937f5),\n    U58LE(0x0a9ea3ac10d6aed)\n#endif\n}}};\n"
  },
  {
    "path": "src/crypto/goldilocks/src/scalarmul.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"word.h\"\n\n#include <stdlib.h>\n#include <limits.h>\n#include <string.h>\n\n#include \"intrinsics.h\"\n#include \"scalarmul.h\"\n#include \"barrett_field.h\"\n#include \"constant_time.h\"\n\nmask_t\nmontgomery_ladder (\n    field_a_t out,\n    const field_a_t in,\n    const word_t *scalar,\n    unsigned int nbits,\n    unsigned int n_extra_doubles\n) { \n    montgomery_a_t mont;\n    deserialize_montgomery(mont, in);\n    \n    int i,j,n=(nbits-1)%WORD_BITS;\n    mask_t pflip = 0;\n    for (j=(nbits+WORD_BITS-1)/WORD_BITS-1; j>=0; j--) {\n        word_t w = scalar[j];\n        for (i=n; i>=0; i--) {\n            mask_t flip = -((w>>i)&1);\n            constant_time_cond_swap(mont->xa,mont->xd,sizeof(mont->xd),flip^pflip);\n            constant_time_cond_swap(mont->za,mont->zd,sizeof(mont->xd),flip^pflip);\n            montgomery_step(mont);\n            pflip = flip;\n        }\n        n = WORD_BITS-1;\n    }\n    constant_time_cond_swap(mont->xa,mont->xd,sizeof(mont->xd),pflip);\n    constant_time_cond_swap(mont->za,mont->zd,sizeof(mont->xd),pflip);\n    \n    assert(n_extra_doubles < INT_MAX);\n    for (j=0; j<(int)n_extra_doubles; j++) {\n        montgomery_step(mont);\n    }\n    \n    return serialize_montgomery(out, mont, in);\n}\n\nstatic __inline__ void\n__attribute__((unused,always_inline))\nconstant_time_lookup_tw_pniels (\n    tw_pniels_a_t out,\n    const tw_pniels_a_t *in,\n    int nin,\n    int idx\n) {\n    constant_time_lookup(out,in,sizeof(*out),nin,idx);\n}\n\nstatic __inline__ void\n__attribute__((unused,always_inline))\nconstant_time_lookup_tw_niels (\n    tw_niels_a_t out,\n    const tw_niels_a_t *in,\n    int nin,\n    int idx\n) {\n    constant_time_lookup(out,in,sizeof(*out),nin,idx);\n}\n\nstatic void\nconvert_to_signed_window_form (\n    word_t *out,\n    const word_t *scalar,\n    int nwords_scalar,\n    const word_t *prepared_data,\n    int nwords_pd\n) {\n    assert(nwords_pd <= nwords_scalar);\n    mask_t mask = -(scalar[0]&1);\n\n    word_t carry = add_nr_ext_packed(out, scalar, nwords_scalar, prepared_data, nwords_pd, ~mask);\n    carry += add_nr_ext_packed(out, out, nwords_scalar, prepared_data+nwords_pd, nwords_pd, mask);\n    \n    assert(!(out[0]&1));\n    \n    int i;\n    for (i=0; i<nwords_scalar; i++) {\n        out[i] >>= 1;\n        if (i<nwords_scalar-1) {\n            out[i] |= out[i+1]<<(WORD_BITS-1);\n        } else {\n            out[i] |= carry<<(WORD_BITS-1);\n        }\n    }\n}\n\nvoid\nscalarmul (\n    tw_extensible_a_t working,\n    const word_t scalar[SCALAR_WORDS]\n) {\n    const int WINDOW = SCALARMUL_FIXED_WINDOW_SIZE,\n        WINDOW_MASK = (1<<WINDOW)-1, WINDOW_T_MASK = WINDOW_MASK >> 1,\n        NTABLE = 1<<(WINDOW-1),\n        nbits = ROUND_UP(SCALAR_BITS,WINDOW);\n    \n    word_t scalar2[SCALAR_WORDS];\n    convert_to_signed_window_form (\n        scalar2, scalar, SCALAR_WORDS,\n        SCALARMUL_FIXED_WINDOW_ADJUSTMENT, SCALAR_WORDS\n    );\n\n    tw_extensible_a_t tabulator;\n    copy_tw_extensible(tabulator, working);\n    double_tw_extensible(tabulator);\n\n    tw_pniels_a_t\n\t  pn VECTOR_ALIGNED,\n\t  multiples[NTABLE] VECTOR_ALIGNED;\n    convert_tw_extensible_to_tw_pniels(pn, tabulator);\n    convert_tw_extensible_to_tw_pniels(multiples[0], working);\n\n    int i,j;\n    for (i=1; i<NTABLE; i++) {\n        add_tw_pniels_to_tw_extensible(working, pn);\n        convert_tw_extensible_to_tw_pniels(multiples[i], working);\n    }\n\n    i = nbits - WINDOW;\n    int bits = scalar2[i/WORD_BITS] >> (i%WORD_BITS) & WINDOW_MASK,\n        inv = (bits>>(WINDOW-1))-1;\n    bits ^= inv;\n    \n    constant_time_lookup_tw_pniels(pn, (const tw_pniels_a_t*)multiples, NTABLE, bits & WINDOW_T_MASK);\n    cond_negate_tw_pniels(pn, inv);\n    convert_tw_pniels_to_tw_extensible(working, pn);\n\t\t\n\n    for (i-=WINDOW; i>=0; i-=WINDOW) {\n        for (j=0; j<WINDOW; j++) {\n            double_tw_extensible(working);\n        }\n\n        bits = scalar2[i/WORD_BITS] >> (i%WORD_BITS);\n        \n        if (i/WORD_BITS < SCALAR_WORDS-1 && i%WORD_BITS >= WORD_BITS-WINDOW) {\n            bits ^= scalar2[i/WORD_BITS+1] << (WORD_BITS - (i%WORD_BITS));\n        }\n                \n        bits &= WINDOW_MASK;\n        inv = (bits>>(WINDOW-1))-1;\n        bits ^= inv;\n    \n        constant_time_lookup_tw_pniels(pn, (const tw_pniels_a_t*)multiples, NTABLE, bits & WINDOW_T_MASK);\n        cond_negate_tw_pniels(pn, inv);\n        add_tw_pniels_to_tw_extensible(working, pn);\n    }\n}\n\nvoid\nscalarmul_vlook (\n    tw_extensible_a_t working,\n    const word_t scalar[SCALAR_WORDS]\n) {    \n    const int WINDOW = SCALARMUL_FIXED_WINDOW_SIZE,\n        WINDOW_MASK = (1<<WINDOW)-1, WINDOW_T_MASK = WINDOW_MASK >> 1,\n        NTABLE = 1<<(WINDOW-1),\n        nbits = ROUND_UP(SCALAR_BITS,WINDOW);\n    \n    word_t scalar2[SCALAR_WORDS];\n    convert_to_signed_window_form(\n        scalar2, scalar, SCALAR_WORDS,\n        SCALARMUL_FIXED_WINDOW_ADJUSTMENT, SCALAR_WORDS\n    );\n\n\n    tw_extensible_a_t tabulator;\n    copy_tw_extensible(tabulator, working);\n    double_tw_extensible(tabulator);\n\n    tw_pniels_a_t\n\t  pn VECTOR_ALIGNED,\n\t  multiples[NTABLE] VECTOR_ALIGNED;\n    convert_tw_extensible_to_tw_pniels(pn, tabulator);\n    convert_tw_extensible_to_tw_pniels(multiples[0], working);\n\n    int i,j;\n    for (i=1; i<NTABLE; i++) {\n        add_tw_pniels_to_tw_extensible(working, pn);\n        convert_tw_extensible_to_tw_pniels(multiples[i], working);\n    }\n\n    i = nbits - WINDOW;\n    int bits = scalar2[i/WORD_BITS] >> (i%WORD_BITS) & WINDOW_MASK,\n        inv = (bits>>(WINDOW-1))-1;\n    bits ^= inv;\n\n    copy_tw_pniels(pn, multiples[bits & WINDOW_T_MASK]);\n    cond_negate_tw_pniels(pn, inv);\n    convert_tw_pniels_to_tw_extensible(working, pn);\n\t\t\n\n    for (i-=WINDOW; i>=0; i-=WINDOW) {\n        for (j=0; j<WINDOW; j++) {\n            double_tw_extensible(working);\n        }\n\n        bits = scalar2[i/WORD_BITS] >> (i%WORD_BITS);\n        \n        if (i/WORD_BITS < SCALAR_WORDS-1 && i%WORD_BITS >= WORD_BITS-WINDOW) {\n            bits ^= scalar2[i/WORD_BITS+1] << (WORD_BITS - (i%WORD_BITS));\n        }\n                \n        bits &= WINDOW_MASK;\n        inv = (bits>>(WINDOW-1))-1;\n        bits ^= inv;\n    \n        copy_tw_pniels(pn, multiples[bits & WINDOW_T_MASK]);\n        cond_negate_tw_pniels(pn, inv);\n        add_tw_pniels_to_tw_extensible(working, pn);\n    }\n}\n\nstatic mask_t\nschedule_scalar_for_combs (\n    word_t *scalar2,\n    const word_t *scalar,\n    unsigned int nbits,\n    const struct fixed_base_table_t* table\n) {\n    unsigned int i;\n    unsigned int n = table->n, t = table->t, s = table->s;\n    \n    if (n*t*s < nbits || n < 1 || t < 1 || s < 1) {\n        return MASK_FAILURE;\n    }\n    \n    unsigned int scalar_words = (nbits + WORD_BITS - 1)/WORD_BITS,\n        scalar2_words = scalar_words;\n    if (scalar2_words < SCALAR_WORDS)\n        scalar2_words = SCALAR_WORDS;\n    word_t scalar3[scalar2_words];\n    \n    /* Copy scalar to scalar3, but clear its high bits (if there are any) */\n    for (i=0; i<scalar_words; i++) {\n        scalar3[i] = scalar[i];\n    }\n    if (likely(i) && (nbits % WORD_BITS)) {\n        scalar3[i-1] &= (((word_t)1) << (nbits%WORD_BITS)) - 1;\n    }\n    for (; i<scalar2_words; i++) {\n        scalar3[i] = 0;\n    }\n    \n    convert_to_signed_window_form (\n        scalar2,\n        scalar3, scalar2_words,\n        table->scalar_adjustments , SCALAR_WORDS\n    );\n    \n    return MASK_SUCCESS;\n}\n\nmask_t\nscalarmul_fixed_base (\n    tw_extensible_a_t out,\n    const word_t scalar[SCALAR_WORDS],\n    unsigned int nbits,\n    const struct fixed_base_table_t* table\n) {\n    unsigned int i,j,k;\n    unsigned int n = table->n, t = table->t, s = table->s;\n    \n    unsigned int scalar2_words = (nbits + WORD_BITS - 1)/WORD_BITS;\n    if (scalar2_words < SCALAR_WORDS) scalar2_words = SCALAR_WORDS;\n    \n    word_t scalar2[scalar2_words];\n\n    mask_t succ = schedule_scalar_for_combs(scalar2, scalar, nbits, table);\n    if (!succ) return MASK_FAILURE;\n    \n#ifdef __clang_analyzer__\n    assert(t >= 1);\n#endif\n    \n    tw_niels_a_t ni;\n    \n    for (i=0; i<s; i++) {\n        if (i) double_tw_extensible(out);\n        \n        for (j=0; j<n; j++) {\n            int tab = 0;\n\t\t\t\n\t\t\t/*\n             * PERF: This computation takes about 1.5µs on SBR, i.e. 2-3% of the\n\t\t\t * time of a keygen or sign op.  Surely it is possible to speed it up.\n             */\n            for (k=0; k<t; k++) {\n                unsigned int bit = (s-1-i) + k*s + j*(s*t);\n                if (bit < scalar2_words * WORD_BITS) {\n                    tab |= (scalar2[bit/WORD_BITS] >> (bit%WORD_BITS) & 1) << k;\n                }\n            }\n            \n            mask_t invert = (tab>>(t-1))-1;\n            tab ^= invert;\n            tab &= (1<<(t-1)) - 1;\n            \n            constant_time_lookup_tw_niels(ni, (const tw_niels_a_t*)table->table + (j<<(t-1)), 1<<(t-1), tab);\n            cond_negate_tw_niels(ni, invert);\n            if (i||j) {\n                add_tw_niels_to_tw_extensible(out, ni);\n            } else {\n                convert_tw_niels_to_tw_extensible(out, ni);\n            }\n        }\n    }\n    \n    return MASK_SUCCESS;\n}\n\nmask_t\nlinear_combo_combs_vt (\n    tw_extensible_a_t out,\n    const word_t scalar1[SCALAR_WORDS],\n    unsigned int nbits1,\n    const struct fixed_base_table_t* table1,\n    const word_t scalar2[SCALAR_WORDS],\n    unsigned int nbits2,\n    const struct fixed_base_table_t* table2\n) { \n    unsigned int i,j,k,sc;\n    unsigned int s1 = table1->s, s2 = table2->s, smax = (s1 > s2) ? s1 : s2;\n    \n    unsigned int scalar1b_words = (nbits1 + WORD_BITS - 1)/WORD_BITS;\n    if (scalar1b_words < SCALAR_WORDS) scalar1b_words = SCALAR_WORDS;\n    \n    unsigned int scalar2b_words = (nbits2 + WORD_BITS - 1)/WORD_BITS;\n    if (scalar2b_words < SCALAR_WORDS) scalar2b_words = SCALAR_WORDS;\n    \n    word_t scalar1b[scalar1b_words], scalar2b[scalar2b_words];\n\n    /* Schedule the scalars */\n    mask_t succ;\n    succ = schedule_scalar_for_combs(scalar1b, scalar1, nbits1, table1);\n    if (!succ) return MASK_FAILURE;\n  \n    succ = schedule_scalar_for_combs(scalar2b, scalar2, nbits2, table2);\n    if (!succ) return MASK_FAILURE;\n\n#ifdef __clang_analyzer__\n    assert(table1->t >= 1);\n    assert(table2->t >= 1);\n#endif\n  \n    const struct tw_niels_t *ni;\n    \n    unsigned int swords[2] = {scalar1b_words, scalar2b_words};\n    word_t *scalars[2] = {scalar1b,scalar2b};\n    \n    set_identity_tw_extensible(out);\n    \n    for (i=0; i<smax; i++) {\n        if (i) double_tw_extensible(out);\n            \n        for (sc=0; sc<2; sc++) {\n            const struct fixed_base_table_t* table = sc ? table2 : table1;\n            \n            int ii = i-smax+table->s;\n            if (ii < 0) continue;\n            assert(ii < (int)table->s);\n        \n            for (j=0; j<table->n; j++) {\n            \n                int tab = 0;\n\n                for (k=0; k<table->t; k++) {\n                    unsigned int bit = (table->s-1-ii) + k*table->s + j*(table->s*table->t);\n                    if (bit < swords[sc] * WORD_BITS) {\n                        tab |= (scalars[sc][bit/WORD_BITS] >> (bit%WORD_BITS) & 1) << k;\n                    }\n                }\n            \n                mask_t invert = (tab>>(table->t-1))-1;\n                tab ^= invert;\n                tab &= (1<<(table->t-1)) - 1;\n            \n                ni = table->table[tab + (j<<(table->t-1))];\n                \n                if (invert) sub_tw_niels_from_tw_extensible(out, ni);\n                else add_tw_niels_to_tw_extensible(out, ni);\n            }\n        }\n    }\n    \n    return MASK_SUCCESS;\n}\n\n\nmask_t\nprecompute_fixed_base (\n  struct fixed_base_table_t* out,\n  const tw_extensible_a_t base,\n  unsigned int n,\n  unsigned int t,\n  unsigned int s,\n  tw_niels_a_t *prealloc\n) {\n    if (s < 1 || t < 1 || n < 1 || n*t*s < SCALAR_BITS) {\n        really_memset(out, 0, sizeof(*out));\n        return 0;\n    }\n    \n    out->n = n;\n    out->t = t;\n    out->s = s;\n  \n    tw_extensible_a_t working, start;\n    copy_tw_extensible(working, base);\n    tw_pniels_a_t pn_tmp;\n  \n    tw_pniels_a_t *doubles = (tw_pniels_a_t *) malloc_vector(sizeof(*doubles) * (t-1));\n    field_a_t *zs  = (field_a_t *) malloc_vector(sizeof(*zs) * (n<<(t-1)));\n    field_a_t *zis = (field_a_t *) malloc_vector(sizeof(*zis) * (n<<(t-1)));\n    \n    tw_niels_a_t *table = prealloc;\n    if (prealloc) {\n        out->own_table = 0;\n    } else {\n        table = (tw_niels_a_t *) malloc_vector(sizeof(*table) * (n<<(t-1)));\n        out->own_table = 1;\n    }\n    out->table = table;\n  \n    if (!doubles || !zs || !zis || !table) {\n        free(doubles);\n        free(zs);\n        free(zis);\n        really_memset(out, 0, sizeof(*out));\n        really_memset(table, 0, sizeof(*table) * (n<<(t-1)));\n        if (!prealloc) free(table);\n        return 0;\n    }\n  \n    unsigned int i,j,k;\n    \n    /* Compute the scalar adjustments, equal to 2^nbits-1 mod q */\n    unsigned int adjustment_size = (n*t*s)/WORD_BITS + 1;\n    assert(adjustment_size >= SCALAR_WORDS);\n    word_t adjustment[adjustment_size];\n    for (i=0; i<adjustment_size; i++) {\n        adjustment[i] = -1;\n    }\n    \n    adjustment[(n*t*s) / WORD_BITS] += ((word_t)1) << ((n*t*s) % WORD_BITS);\n    \n    /* The low adjustment is 2^nbits - 1 mod q */\n    barrett_reduce(adjustment, adjustment_size, 0, &curve_prime_order);\n    word_t *low_adjustment = &out->scalar_adjustments[(SCALAR_WORDS)*(adjustment[0] & 1)],\n        *high_adjustment = &out->scalar_adjustments[(SCALAR_WORDS)*((~adjustment[0]) & 1)];\n    for (i=0; i<SCALAR_WORDS; i++) {\n        low_adjustment[i] = adjustment[i];\n    }\n    \n    /* The high adjustment is low + q = low - q_lo + 2^big */\n    (void)\n    sub_nr_ext_packed(\n        high_adjustment,\n        adjustment, SCALAR_WORDS,\n        curve_prime_order.p_lo, curve_prime_order.nwords_lo,\n        -1\n    );\n    if (curve_prime_order.p_shift) {\n        high_adjustment[curve_prime_order.nwords_p - 1] += ((word_t)1)<<curve_prime_order.p_shift;\n    }\n    \n    /* OK, now compute the tables */\n    for (i=0; i<n; i++) {\n\n        /* doubling phase */\n        for (j=0; j<t; j++) {\n            if (j) {\n                convert_tw_extensible_to_tw_pniels(pn_tmp, working);\n                add_tw_pniels_to_tw_extensible(start, pn_tmp);\n            } else {\n                copy_tw_extensible(start, working);\n            }\n\n            if (j==t-1 && i==n-1) {\n                break;\n            }\n\n            double_tw_extensible(working);\n            if (j<t-1) {\n                convert_tw_extensible_to_tw_pniels(doubles[j], working);\n            }\n\n            for (k=0; k<s-1; k++) {\n                double_tw_extensible(working);\n            }\n        }\n\n        /* Gray-code phase */\n        for (j=0;; j++) {\n            int gray = j ^ (j>>1);\n            int idx = (((i+1)<<(t-1))-1) ^ gray;\n\n            convert_tw_extensible_to_tw_pniels(pn_tmp, start);\n            copy_tw_niels(table[idx], pn_tmp->n);\n            field_copy(zs[idx], pn_tmp->z);\n\t\t\t\n            if (j >= (1u<<(t-1)) - 1) break;\n            int delta = (j+1) ^ ((j+1)>>1) ^ gray;\n\n            for (k=0; delta>1; k++)\n                delta >>=1;\n            \n            if (gray & (1<<k)) {\n                /* start += doubles[k] */\n                add_tw_pniels_to_tw_extensible(start, doubles[k]);\n            } else {\n                /* start -= doubles[k] */\n                sub_tw_pniels_from_tw_extensible(start, doubles[k]);\n            }\n            \n            \n        }\n    }\n\t\n    field_simultaneous_invert(zis, (const field_a_t*)zs, n<<(t-1));\n\n    field_a_t product;\n    for (i=0; i<n<<(t-1); i++) {\n        field_mul(product, table[i]->a, zis[i]);\n        field_strong_reduce(product);\n        field_copy(table[i]->a, product);\n        \n        field_mul(product, table[i]->b, zis[i]);\n        field_strong_reduce(product);\n        field_copy(table[i]->b, product);\n        \n        field_mul(product, table[i]->c, zis[i]);\n        field_strong_reduce(product);\n        field_copy(table[i]->c, product);\n    }\n\t\n\tmask_t ret = ~field_is_zero(zis[0]);\n\n    free(doubles);\n    free(zs);\n    free(zis);\n\n    if (unlikely(!ret)) {\n        really_memset(table, 0, sizeof(*table) * (n<<(t-1)));\n        if (!prealloc) free(table);\n        really_memset(out, 0, sizeof(*out));\n        return 0;\n    }\n\n    return ret;\n}\n\nvoid\ndestroy_fixed_base (\n    struct fixed_base_table_t* table\n) {\n    if (table->table) {\n        really_memset(table->table,0,sizeof(*table->table)*(table->n<<(table->t-1)));\n    }\n    if (table->own_table) {\n        free(table->table);\n    }\n    really_memset(table,0,sizeof(*table));\n}\n\nmask_t\nprecompute_fixed_base_wnaf (\n    tw_niels_a_t *out,\n    const tw_extensible_a_t const_base,\n    unsigned int tbits\n) {\n    int i;\n    field_a_t *zs  = (field_a_t *) malloc_vector(sizeof(*zs)<<tbits);\n    field_a_t *zis = (field_a_t *) malloc_vector(sizeof(*zis)<<tbits);\n\n    if (!zs || !zis) {\n        free(zs);\n        free(zis);\n        return 0;\n    }\n\n    tw_extensible_a_t base;\n    copy_tw_extensible(base,const_base);\n    \n    tw_pniels_a_t twop, tmp;\n    \n    convert_tw_extensible_to_tw_pniels(tmp, base);\n    field_copy(zs[0], tmp->z);\n    copy_tw_niels(out[0], tmp->n);\n\n    if (tbits > 0) {\n        double_tw_extensible(base);\n        convert_tw_extensible_to_tw_pniels(twop, base);\n        add_tw_pniels_to_tw_extensible(base, tmp);\n        \n        convert_tw_extensible_to_tw_pniels(tmp, base);\n        field_copy(zs[1], tmp->z);\n        copy_tw_niels(out[1], tmp->n);\n\n        for (i=2; i < 1<<tbits; i++) {\n            add_tw_pniels_to_tw_extensible(base, twop);\n            convert_tw_extensible_to_tw_pniels(tmp, base);\n            field_copy(zs[i], tmp->z);\n            copy_tw_niels(out[i], tmp->n);\n        }\n    }\n    \n    field_simultaneous_invert(zis, (const field_a_t *)zs, 1<<tbits);\n\n    field_a_t product;\n    for (i=0; i<1<<tbits; i++) {\n        field_mul(product, out[i]->a, zis[i]);\n        field_strong_reduce(product);\n        field_copy(out[i]->a, product);\n        \n        field_mul(product, out[i]->b, zis[i]);\n        field_strong_reduce(product);\n        field_copy(out[i]->b, product);\n        \n        field_mul(product, out[i]->c, zis[i]);\n        field_strong_reduce(product);\n        field_copy(out[i]->c, product);\n    }\n\n    free(zs);\n    free(zis);\n\n    return -1;\n}\n\n/**\n * @cond internal\n * Control for variable-time scalar multiply algorithms.\n */\nstruct smvt_control {\n  int power, addend;\n};\n\nstatic int\nrecode_wnaf(\n    struct smvt_control *control, /* [nbits/(tableBits+1) + 3] */\n    const word_t *scalar,\n    unsigned int nbits,\n    unsigned int tableBits)\n{\n    int current = 0, i, j;\n    unsigned int position = 0;\n\n    /* PERF: negate scalar if it's large\n     * PERF: this is a pretty simplistic algorithm.  I'm sure there's a faster one...\n     */\n    for (i=nbits-1; i >= 0; i--) {\n        int bit = (scalar[i/WORD_BITS] >> (i%WORD_BITS)) & 1;\n        current = 2*current + bit;\n\n        /*\n         * Sizing: |current| >= 2^(tableBits+1) -> |current| = 2^0\n         * So current loses (tableBits+1) bits every time.  It otherwise gains\n         * 1 bit per iteration.  The number of iterations is\n         * (nbits + 2 + tableBits), and an additional control word is added at\n         * the end.  So the total number of control words is at most\n         * ceil((nbits+1) / (tableBits+1)) + 2 = floor((nbits)/(tableBits+1)) + 2.\n         * There's also the stopper with power -1, for a total of +3.\n         */\n        if (current >= (2<<tableBits) || current <= -1 - (2<<tableBits)) {\n            int delta = (current + 1) >> 1; /* |delta| < 2^tablebits */\n            current = -(current & 1);\n\n            for (j=i; (delta & 1) == 0; j++) {\n                delta >>= 1;\n            }\n            control[position].power = j+1;\n            control[position].addend = delta;\n            position++;\n            assert(position <= nbits/(tableBits+1) + 2);\n        }\n    }\n    \n    if (current) {\n        for (j=0; (current & 1) == 0; j++) {\n            current >>= 1;\n        }\n        control[position].power = j;\n        control[position].addend = current;\n        position++;\n        assert(position <= nbits/(tableBits+1) + 2);\n    }\n    \n  \n    control[position].power = -1;\n    control[position].addend = 0;\n    return position;\n}\n\n\nstatic void\nprepare_wnaf_table(\n    tw_pniels_a_t *output,\n    tw_extensible_a_t working,\n    unsigned int tbits\n) {\n    int i;\n    convert_tw_extensible_to_tw_pniels(output[0], working);\n\n    if (tbits == 0) return;\n\n    double_tw_extensible(working);\n    tw_pniels_a_t twop;\n    convert_tw_extensible_to_tw_pniels(twop, working);\n\n    add_tw_pniels_to_tw_extensible(working, output[0]);\n    convert_tw_extensible_to_tw_pniels(output[1], working);\n\n    for (i=2; i < 1<<tbits; i++) {\n        add_tw_pniels_to_tw_extensible(working, twop);\n        convert_tw_extensible_to_tw_pniels(output[i], working);\n    }\n}\n\nvoid\nscalarmul_vt (\n    tw_extensible_a_t working,\n    const word_t scalar[SCALAR_WORDS],\n    unsigned int nbits\n) {\n    const int table_bits = SCALARMUL_WNAF_TABLE_BITS;\n    struct smvt_control control[nbits/(table_bits+1)+3];\n    \n    int control_bits = recode_wnaf(control, scalar, nbits, table_bits);\n  \n    tw_pniels_a_t precmp[1<<table_bits];\n    prepare_wnaf_table(precmp, working, table_bits);\n  \n    if (control_bits > 0) {\n        assert(control[0].addend > 0);\n        assert(control[0].power >= 0);\n        convert_tw_pniels_to_tw_extensible(working, precmp[control[0].addend >> 1]);\n    } else {\n        set_identity_tw_extensible(working);\n        return;\n    }\n  \n    int conti = 1, i;\n    for (i = control[0].power - 1; i >= 0; i--) {\n        double_tw_extensible(working);\n\n        if (i == control[conti].power) {\n            assert(control[conti].addend);\n\n            if (control[conti].addend > 0) {\n                add_tw_pniels_to_tw_extensible(working, precmp[control[conti].addend >> 1]);\n            } else {\n                sub_tw_pniels_from_tw_extensible(working, precmp[(-control[conti].addend) >> 1]);\n            }\n            conti++;\n            assert(conti <= control_bits);\n        }\n    }\n}\n\nvoid\nscalarmul_fixed_base_wnaf_vt (\n    tw_extensible_a_t working,\n    const word_t scalar[SCALAR_WORDS],\n    unsigned int nbits,\n    const tw_niels_a_t *precmp,\n    unsigned int table_bits\n) {\n    struct smvt_control control[nbits/(table_bits+1)+3];\n    \n    int control_bits = recode_wnaf(control, scalar, nbits, table_bits);\n  \n    if (control_bits > 0) {\n        assert(control[0].addend > 0);\n        assert(control[0].power >= 0);\n        convert_tw_niels_to_tw_extensible(working, precmp[control[0].addend >> 1]);\n    } else {\n        set_identity_tw_extensible(working);\n        return;\n    }\n  \n    int conti = 1, i;\n    for (; control[conti].power >= 0; conti++) {\n        assert(conti <= control_bits);\n        for (i = control[conti-1].power - control[conti].power; i; i--) {\n            double_tw_extensible(working);\n        }\n        \n        assert(control[conti].addend);\n        if (control[conti].addend > 0) {\n            add_tw_niels_to_tw_extensible(working, precmp[control[conti].addend >> 1]);\n        } else {\n            sub_tw_niels_from_tw_extensible(working, precmp[(-control[conti].addend) >> 1]);\n        }\n    }\n\n    for (i = control[conti-1].power; i; i--) {\n        double_tw_extensible(working);\n    }\n}\n\nvoid\nlinear_combo_var_fixed_vt(\n    tw_extensible_a_t working,\n    const word_t scalar_var[SCALAR_WORDS],\n    unsigned int nbits_var,\n    const word_t scalar_pre[SCALAR_WORDS],\n    unsigned int nbits_pre,\n    const tw_niels_a_t *precmp,\n    unsigned int table_bits_pre\n) {\n    const int table_bits_var = SCALARMUL_WNAF_COMBO_TABLE_BITS;\n    struct smvt_control control_var[nbits_var/(table_bits_var+1)+3];\n    struct smvt_control control_pre[nbits_pre/(table_bits_pre+1)+3];\n    \n    int ncb_var = recode_wnaf(control_var, scalar_var, nbits_var, table_bits_var);\n    int ncb_pre = recode_wnaf(control_pre, scalar_pre, nbits_pre, table_bits_pre);\n    (void)ncb_var;\n    (void)ncb_pre;\n  \n    tw_pniels_a_t precmp_var[1<<table_bits_var];\n    prepare_wnaf_table(precmp_var, working, table_bits_var);\n  \n    int contp=0, contv=0, i;\n  \n    i = control_var[0].power;\n    if (i > control_pre[0].power) {\n        convert_tw_pniels_to_tw_extensible(working, precmp_var[control_var[0].addend >> 1]);\n        contv++;\n    } else if (i == control_pre[0].power && i >=0 ) {\n        convert_tw_pniels_to_tw_extensible(working, precmp_var[control_var[0].addend >> 1]);\n        add_tw_niels_to_tw_extensible(working, precmp[control_pre[0].addend >> 1]);\n        contv++; contp++;\n    } else {\n        i = control_pre[0].power;\n        convert_tw_niels_to_tw_extensible(working, precmp[control_pre[0].addend >> 1]);\n        contp++;\n    }\n    \n    if (i < 0) {\n        set_identity_tw_extensible(working);\n        return;\n    }\n    \n    for (i--; i >= 0; i--) {\n        double_tw_extensible(working);\n\n        if (i == control_var[contv].power) {\n            assert(control_var[contv].addend);\n\n            if (control_var[contv].addend > 0) {\n                add_tw_pniels_to_tw_extensible(working, precmp_var[control_var[contv].addend >> 1]);\n            } else {\n                sub_tw_pniels_from_tw_extensible(working, precmp_var[(-control_var[contv].addend) >> 1]);\n            }\n            contv++;\n        }\n\n        if (i == control_pre[contp].power) {\n            assert(control_pre[contp].addend);\n\n            if (control_pre[contp].addend > 0) {\n                add_tw_niels_to_tw_extensible(working, precmp[control_pre[contp].addend >> 1]);\n            } else {\n                sub_tw_niels_from_tw_extensible(working, precmp[(-control_pre[contp].addend) >> 1]);\n            }\n            contp++;\n        }\n    }\n    \n    assert(contv == ncb_var);\n    assert(contp == ncb_pre);\n}\n\n\n\n"
  },
  {
    "path": "src/crypto/goldilocks/src/sha512.c",
    "content": "/* Copyright (c) 2011 Stanford University.\n * Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n#include \"word.h\"\n#include \"sha512.h\"\n\n#include <string.h>\n#include <assert.h>\n\nstatic inline uint64_t\nrotate_r (\n    uint64_t x,\n    int d\n) {\n  return (x >> d) | (x << (64-d));\n}\n\nstatic const uint64_t\nsha512_init_state[8] = {\n    0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, \n    0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179\n};\n\nstatic const uint64_t\nsha512_k[80] = {\n    0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,\n    0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118,\n    0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2,\n    0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694,\n    0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, \n    0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,\n    0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4,\n    0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70,\n    0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df,\n    0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, \n    0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30,\n    0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8,\n    0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8,\n    0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3,\n    0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, \n    0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b,\n    0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178,\n    0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b,\n    0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c,\n    0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817\n};\n\nstatic inline uint64_t S0 (uint64_t h1) {\n    return rotate_r(h1, 28) ^ rotate_r(h1, 34) ^ rotate_r(h1, 39);\n}\n\nstatic inline uint64_t S1 (uint64_t h4) {\n    return rotate_r(h4,14) ^ rotate_r(h4,18) ^ rotate_r(h4,41);\n}\n\nstatic inline uint64_t s0 (uint64_t a) {\n    return rotate_r(a,1) ^ rotate_r(a,8) ^ a>>7;\n}\n\nstatic inline uint64_t s1 (uint64_t b) {\n    return rotate_r(b,19) ^ rotate_r(b,61) ^ b>>6;\n}\n\nstatic inline uint64_t ch (uint64_t h4, uint64_t h5, uint64_t h6) {\n    return h6^(h4 & (h6^h5));\n}\n\nstatic inline uint64_t maj(uint64_t h1, uint64_t h2, uint64_t h3) {\n    return (h1&h2) ^ (h3&(h1^h2));\n}\n\nstatic void\nsha512_process_block (\n    sha512_ctx_a_t ctx\n) {\n    uint64_t i, tmp, a, b,\n        *w = (uint64_t *) ctx->block,\n        *state = ctx->chain,\n        h0 = state[0], h1 = state[1], h2 = state[2], h3 = state[3],\n        h4 = state[4], h5 = state[5], h6 = state[6], h7 = state[7];\n\n    /* Clang doesn't unswitch this automatically */\n    for (i=0; i<16; i++) {\n        /* load up the input word for this round */\n        tmp = w[i] = htobe64(w[i]);\n        tmp = tmp + h7 + S1(h4) + ch(h4,h5,h6) + sha512_k[i];\n  \n        /* shift register */\n        h7 = h6; h6 = h5; h5 = h4;\n        h4 = h3 + tmp;\n        h3 = h2; h2 = h1; h1 = h0;\n        h0 = tmp + maj(h1,h2,h3) + S0(h1);\n    }\n  \n    for (; i<80; i++) {\n        /* load up the input word for this round */\n        a   = w[(i+1 ) & 15];\n        b   = w[(i+14) & 15];\n        tmp = w[i&15] = s0(a) + s1(b) + w[i&15] + w[(i+9) & 15];\n        tmp = tmp + h7 + S1(h4) + ch(h4,h5,h6) + sha512_k[i];\n  \n        /* shift register */\n        h7 = h6; h6 = h5; h5 = h4;\n        h4 = h3 + tmp;\n        h3 = h2; h2 = h1; h1 = h0;\n        h0 = tmp + maj(h1,h2,h3) + S0(h1);\n    }\n \n    state[0] += h0;\n    state[1] += h1;\n    state[2] += h2;\n    state[3] += h3;\n    state[4] += h4;\n    state[5] += h5;\n    state[6] += h6;\n    state[7] += h7;\n}\n\nvoid\nsha512_init (\n    sha512_ctx_a_t ctx\n) {\n    ctx->nbytes = 0;\n    memcpy(ctx->chain, sha512_init_state, sizeof(sha512_init_state));\n    memset(ctx->block, 0, sizeof(ctx->block));\n}\n\nvoid\nsha512_update (\n    sha512_ctx_a_t ctx,\n    const unsigned char *data,\n    uint64_t bytes\n) {\n    assert(ctx->nbytes < 1ull<<56);\n    assert(bytes < 1ull<<56);\n    \n    while (bytes) {\n        uint64_t fill = ctx->nbytes % 128, accept = 128 - fill;\n        if (accept > bytes) accept = bytes;\n        ctx->nbytes += accept;\n        memcpy(ctx->block + fill, data, accept);\n        \n        if (fill+accept == 128)\n            sha512_process_block(ctx);\n\n        bytes -= accept;\n        data += accept;\n    }\n    \n    assert(ctx->nbytes < 1ull<<56);\n}\n\nvoid\nsha512_final (\n    sha512_ctx_a_t ctx,\n    uint8_t result[64]\n) {\n    uint64_t fill = ctx->nbytes % 128, i;\n    ctx->block[fill++] = 0x80;\n    if (fill > 112) {\n        memset(ctx->block + fill, 0, 128-fill);\n        sha512_process_block(ctx);\n        fill = 0;\n    }\n    memset(ctx->block + fill, 0, 112-fill);\n    \n    uint64_t highCount = 0, lowCount = htobe64((ctx->nbytes * 8));\n    memcpy(&ctx->block[112],&highCount,8);\n    memcpy(&ctx->block[120],&lowCount,8);\n    sha512_process_block(ctx);\n    for (i=0; i<8; i++) {\n        ctx->chain[i] = htobe64(ctx->chain[i]);\n    }\n    memcpy(result, ctx->chain, sizeof(ctx->chain));\n    sha512_init(ctx);\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/test/bench.c",
    "content": "/* Copyright (c) 2014 Cryptography Research, Inc.\n * Released under the MIT License.  See LICENSE.txt for license information.\n */\n\n#include \"word.h\"\n\n#include <sys/time.h>\n#include <sys/types.h>\n#include <stdio.h>\n#include <memory.h>\n\n#include \"field.h\"\n#include \"ec_point.h\"\n#include \"scalarmul.h\"\n#include \"barrett_field.h\"\n#include \"crandom.h\"\n#include \"goldilocks.h\"\n#include \"sha512.h\"\n\nstatic __inline__ void\nignore_result ( int result ) {\n    (void)result;\n}\n\nstatic double now(void) {\n  struct timeval tv;\n  gettimeofday(&tv, NULL);\n  \n  return tv.tv_sec + tv.tv_usec/1000000.0;\n}\n\nstatic void field_randomize( struct crandom_state_t *crand, field_a_t a ) {\n    crandom_generate(crand, (unsigned char *)a, sizeof(*a));\n    field_strong_reduce(a);\n}\n\nstatic void q448_randomize( struct crandom_state_t *crand, word_t sk[SCALAR_WORDS] ) {\n    crandom_generate(crand, (unsigned char *)sk, SCALAR_BYTES);\n}\n\nstatic void field_print( const char *descr, const field_a_t a ) {\n    int j;\n    unsigned char ser[FIELD_BYTES];\n    field_serialize(ser,a);\n    printf(\"%s = 0x\", descr);\n    for (j=FIELD_BYTES - 1; j>=0; j--) {\n        printf(\"%02x\", ser[j]);\n    }\n    printf(\"\\n\");\n}\n\nstatic void __attribute__((unused))\nfield_print_full (\n    const char *descr,\n    const field_a_t a\n) {\n    int j;\n    printf(\"%s = 0x\", descr);\n    for (j=15; j>=0; j--) {\n        printf(\"%02\" PRIxWORD \"_\" PRIxWORD56 \" \",\n            a->limb[j]>>28, a->limb[j]&((1<<28)-1));\n    }\n    printf(\"\\n\");\n}\n\nstatic void q448_print( const char *descr, const word_t secret[SCALAR_WORDS] ) {\n    int j;\n    printf(\"%s = 0x\", descr);\n    for (j=SCALAR_WORDS-1; j>=0; j--) {\n        printf(PRIxWORDfull, secret[j]);\n    }\n    printf(\"\\n\");\n}\n\n#ifndef N_TESTS_BASE\n#define N_TESTS_BASE 10000\n#endif\n\nint main(int argc, char **argv) {\n    (void)argc;\n    (void)argv;\n\n    struct tw_extensible_t ext;\n    struct extensible_t exta;\n    struct tw_niels_t niels;\n    struct tw_pniels_t pniels;\n    struct affine_t affine;\n    struct montgomery_t mb;\n    field_a_t a,b,c,d;\n    \n    \n    double when;\n    int i;\n\n    int nbase = N_TESTS_BASE;\n    \n    /* Bad randomness so we can debug. */\n    char initial_seed[32];\n    for (i=0; i<32; i++) initial_seed[i] = i;\n    struct crandom_state_t crand;\n    crandom_init_from_buffer(&crand, initial_seed);\n    /* For testing the performance drop from the crandom debuffering change.\n        ignore_result(crandom_init_from_file(&crand, \"/dev/urandom\", 10000, 1));\n    */\n    \n    word_t sk[SCALAR_WORDS],tk[SCALAR_WORDS];\n    q448_randomize(&crand, sk);\n    \n    memset(a,0,sizeof(a));\n    memset(b,0,sizeof(b));\n    memset(c,0,sizeof(c));\n    memset(d,0,sizeof(d));\n    when = now();\n    for (i=0; i<nbase*5000; i++) {\n        field_mul(c, b, a);\n    }\n    when = now() - when;\n    printf(\"mul:         %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase*5000; i++) {\n        field_sqr(c, a);\n    }\n    when = now() - when;\n    printf(\"sqr:         %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase*5000; i++) {\n        field_mulw(c, b, 1234562);\n    }\n    when = now() - when;\n    printf(\"mulw:        %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase*500; i++) {\n        field_mul(c, b, a);\n        field_mul(a, b, c);\n    }\n    when = now() - when;\n    printf(\"mul dep:     %5.1fns\\n\", when * 1e9 / i / 2);\n    \n    when = now();\n    for (i=0; i<nbase*10; i++) {\n        field_randomize(&crand, a);\n    }\n    when = now() - when;\n    printf(\"rand448:     %5.1fns\\n\", when * 1e9 / i);\n    \n    sha512_ctx_a_t sha;\n    uint8_t hashout[128];\n    when = now();\n    for (i=0; i<nbase; i++) {\n        sha512_init(sha);\n        sha512_final(sha, hashout);\n    }\n    when = now() - when;\n    printf(\"sha512 1blk: %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        sha512_update(sha, hashout, 128);\n    }\n    when = now() - when;\n    printf(\"sha512 blk:  %5.1fns (%0.2f MB/s)\\n\", when * 1e9 / i, 128*i/when/1e6);\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        field_isr(c, a);\n    }\n    when = now() - when;\n    printf(\"isr auto:    %5.1fµs\\n\", when * 1e6 / i);\n    \n    for (i=0; i<100; i++) {\n        field_randomize(&crand, a);\n        field_isr(d,a);\n        field_sqr(b,d);\n        field_mul(c,b,a);\n        field_sqr(b,c);\n        field_subw(b,1);\n        if (!field_is_zero(b)) {\n            printf(\"ISR validation failure!\\n\");\n            field_print(\"a\", a);\n            field_print(\"s\", d);\n        }\n    }\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        elligator_2s_inject(&affine, a);\n    }\n    when = now() - when;\n    printf(\"elligator:   %5.1fµs\\n\", when * 1e6 / i);\n    \n    for (i=0; i<100; i++) {\n        field_randomize(&crand, a);\n        elligator_2s_inject(&affine, a);\n        if (!validate_affine(&affine)) {\n            printf(\"Elligator validation failure!\\n\");\n            field_print(\"a\", a);\n            field_print(\"x\", affine.x);\n            field_print(\"y\", affine.y);\n        }\n    }\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        deserialize_affine(&affine, a);\n    }\n    when = now() - when;\n    printf(\"decompress:  %5.1fµs\\n\", when * 1e6 / i);\n    \n    convert_affine_to_extensible(&exta, &affine);\n    when = now();\n    for (i=0; i<nbase; i++) {\n        serialize_extensible(a, &exta);\n    }\n    when = now() - when;\n    printf(\"compress:    %5.1fµs\\n\", when * 1e6 / i);\n    \n    int goods = 0;\n    for (i=0; i<100; i++) {\n        field_randomize(&crand, a);\n        mask_t good = deserialize_affine(&affine, a);\n        if (good & !validate_affine(&affine)) {\n            printf(\"Deserialize validation failure!\\n\");\n            field_print(\"a\", a);\n            field_print(\"x\", affine.x);\n            field_print(\"y\", affine.y);\n        } else if (good) {\n            goods++;\n            convert_affine_to_extensible(&exta,&affine);\n            serialize_extensible(b, &exta);\n            field_sub(c,b,a);\n            if (!field_is_zero(c)) {\n                printf(\"Reserialize validation failure!\\n\");\n                field_print(\"a\", a);\n                field_print(\"x\", affine.x);\n                field_print(\"y\", affine.y);\n                deserialize_affine(&affine, b);\n                field_print(\"b\", b);\n                field_print(\"x\", affine.x);\n                field_print(\"y\", affine.y);\n                printf(\"\\n\");\n            }\n        }\n    }\n    if (goods<i/3) {\n        printf(\"Deserialization validation failure! Deserialized %d/%d points\\n\", goods, i);\n    }\n    \n    word_t lsk[768/WORD_BITS];\n    crandom_generate(&crand, (unsigned char *)lsk, sizeof(lsk));\n    \n    when = now();\n    for (i=0; i<nbase*100; i++) {\n        barrett_reduce(lsk,sizeof(lsk)/sizeof(word_t),0,&curve_prime_order);\n    }\n    when = now() - when;\n    printf(\"barrett red: %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase*10; i++) {\n        barrett_mac(lsk,SCALAR_WORDS,lsk,SCALAR_WORDS,lsk,SCALAR_WORDS,&curve_prime_order);\n    }\n    when = now() - when;\n    printf(\"barrett mac: %5.1fns\\n\", when * 1e9 / i);\n    \n    memset(&ext,0,sizeof(ext));\n    memset(&niels,0,sizeof(niels)); /* avoid assertions in p521 even though this isn't a valid ext or niels */\n    when = now();\n    for (i=0; i<nbase*100; i++) {\n        add_tw_niels_to_tw_extensible(&ext, &niels);\n    }\n    when = now() - when;\n    printf(\"exti+niels:  %5.1fns\\n\", when * 1e9 / i);\n    \n    convert_tw_extensible_to_tw_pniels(&pniels, &ext);\n    when = now();\n    for (i=0; i<nbase*100; i++) {\n        add_tw_pniels_to_tw_extensible(&ext, &pniels);\n    }\n    when = now() - when;\n    printf(\"exti+pniels: %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase*100; i++) {\n        double_tw_extensible(&ext);\n    }\n    when = now() - when;\n    printf(\"exti dbl:    %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase*100; i++) {\n        untwist_and_double(&exta, &ext);\n    }\n    when = now() - when;\n    printf(\"i->a isog:   %5.1fns\\n\", when * 1e9 / i);\n    \n    when = now();\n    for (i=0; i<nbase*100; i++) {\n        twist_and_double(&ext, &exta);\n    }\n    when = now() - when;\n    printf(\"a->i isog:   %5.1fns\\n\", when * 1e9 / i);\n    \n    memset(&mb,0,sizeof(mb));\n    when = now();\n    for (i=0; i<nbase*100; i++) {\n        montgomery_step(&mb);\n    }\n    when = now() - when;\n    printf(\"monty step:  %5.1fns\\n\", when * 1e9 / i);\n\t\n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        ignore_result(montgomery_ladder(a,b,sk,FIELD_BITS,0));\n    }\n    when = now() - when;\n    printf(\"full ladder: %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        scalarmul(&ext,sk);\n    }\n    when = now() - when;\n    printf(\"edwards smz: %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        scalarmul_vlook(&ext,sk);\n    }\n    when = now() - when;\n    printf(\"edwards svl: %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        scalarmul(&ext,sk);\n        untwist_and_double_and_serialize(a,&ext);\n    }\n    when = now() - when;\n    printf(\"edwards smc: %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        q448_randomize(&crand, sk);\n        scalarmul_vt(&ext,sk,SCALAR_BITS);\n    }\n    when = now() - when;\n    printf(\"edwards vtm: %5.1fµs\\n\", when * 1e6 / i);\n    \n    tw_niels_a_t wnaft[1<<6];\n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        ignore_result(precompute_fixed_base_wnaf(wnaft,&ext,6));\n    }\n    when = now() - when;\n    printf(\"wnaf6 pre:   %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        q448_randomize(&crand, sk);\n        scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,(const tw_niels_a_t*)wnaft,6);\n    }\n    when = now() - when;\n    printf(\"edwards vt6: %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        ignore_result(precompute_fixed_base_wnaf(wnaft,&ext,4));\n    }\n    when = now() - when;\n    printf(\"wnaf4 pre:   %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        q448_randomize(&crand, sk);\n        scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,(const tw_niels_a_t*)wnaft,4);\n    }\n    when = now() - when;\n    printf(\"edwards vt4: %5.1fµs\\n\", when * 1e6 / i);\n\n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        ignore_result(precompute_fixed_base_wnaf(wnaft,&ext,5));\n    }\n    when = now() - when;\n    printf(\"wnaf5 pre:   %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        q448_randomize(&crand, sk);\n        scalarmul_fixed_base_wnaf_vt(&ext,sk,SCALAR_BITS,(const tw_niels_a_t*)wnaft,5);\n    }\n    when = now() - when;\n    printf(\"edwards vt5: %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        q448_randomize(&crand, sk);\n        q448_randomize(&crand, tk);\n        linear_combo_var_fixed_vt(&ext,sk,FIELD_BITS,tk,FIELD_BITS,(const tw_niels_a_t*)wnaft,5);\n    }\n    when = now() - when;\n    printf(\"vt vf combo: %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        deserialize_affine(&affine, a);\n        convert_affine_to_extensible(&exta,&affine);\n        twist_and_double(&ext,&exta);\n        scalarmul(&ext,sk);\n        untwist_and_double(&exta,&ext);\n        serialize_extensible(b, &exta);\n    }\n    when = now() - when;\n    printf(\"edwards sm:  %5.1fµs\\n\", when * 1e6 / i);\n    \n    struct fixed_base_table_t t_5_5_18, t_3_5_30, t_8_4_14, t_5_3_30, t_15_3_10;\n\n    while (1) {\n        field_randomize(&crand, a);\n        if (deserialize_affine(&affine, a)) break;\n    }\n    convert_affine_to_extensible(&exta,&affine);\n    twist_and_double(&ext,&exta);\n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        if (i) destroy_fixed_base(&t_5_5_18);\n        ignore_result(precompute_fixed_base(&t_5_5_18, &ext, 5, 5, 18, NULL));\n    }\n    when = now() - when;\n    printf(\"pre(5,5,18): %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        if (i) destroy_fixed_base(&t_3_5_30);\n        ignore_result(precompute_fixed_base(&t_3_5_30, &ext, 3, 5, 30, NULL));\n    }\n    when = now() - when;\n    printf(\"pre(3,5,30): %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        if (i) destroy_fixed_base(&t_5_3_30);\n        ignore_result(precompute_fixed_base(&t_5_3_30, &ext, 5, 3, 30, NULL));\n    }\n    when = now() - when;\n    printf(\"pre(5,3,30): %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        if (i) destroy_fixed_base(&t_15_3_10);\n        ignore_result(precompute_fixed_base(&t_15_3_10, &ext, 15, 3, 10, NULL));\n    }\n    when = now() - when;\n    printf(\"pre(15,3,10):%5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase/10; i++) {\n        if (i) destroy_fixed_base(&t_8_4_14);\n        ignore_result(precompute_fixed_base(&t_8_4_14, &ext, 8, 4, 14, NULL));\n    }\n    when = now() - when;\n    printf(\"pre(8,4,14): %5.1fµs\\n\", when * 1e6 / i);\n\t\n    when = now();\n    for (i=0; i<nbase; i++) {\n        scalarmul_fixed_base(&ext, sk, FIELD_BITS, &t_5_5_18);\n    }\n    when = now() - when;\n    printf(\"com(5,5,18): %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        scalarmul_fixed_base(&ext, sk, FIELD_BITS, &t_3_5_30);\n    }\n    when = now() - when;\n    printf(\"com(3,5,30): %5.1fµs\\n\", when * 1e6 / i);\n\n    when = now();\n    for (i=0; i<nbase; i++) {\n        scalarmul_fixed_base(&ext, sk, FIELD_BITS, &t_8_4_14);\n    }\n    when = now() - when;\n    printf(\"com(8,4,14): %5.1fµs\\n\", when * 1e6 / i);\n\n    when = now();\n    for (i=0; i<nbase; i++) {\n        scalarmul_fixed_base(&ext, sk, FIELD_BITS, &t_5_3_30);\n    }\n    when = now() - when;\n    printf(\"com(5,3,30): %5.1fµs\\n\", when * 1e6 / i);\n\n    when = now();\n    for (i=0; i<nbase; i++) {\n        scalarmul_fixed_base(&ext, sk, FIELD_BITS, &t_15_3_10);\n    }\n    when = now() - when;\n    printf(\"com(15,3,10):%5.1fµs\\n\", when * 1e6 / i);\n    \n    printf(\"\\nGoldilocks:\\n\");\n    \n    int res = goldilocks_init();\n    assert(!res);\n    \n    struct goldilocks_public_key_t gpk,hpk;\n    struct goldilocks_private_key_t gsk,hsk;\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        if (i&1) {\n            res = goldilocks_keygen(&gsk,&gpk);\n        } else {\n            res = goldilocks_keygen(&hsk,&hpk);\n        }\n        assert(!res);\n    }\n    when = now() - when;\n    printf(\"keygen:      %5.1fµs\\n\", when * 1e6 / i);\n    \n    uint8_t ss1[64],ss2[64];\n    int gres1=0,gres2=0;\n    when = now();\n    for (i=0; i<nbase; i++) {\n        if (i&1) {\n            gres1 = goldilocks_shared_secret(ss1,&gsk,&hpk);\n        } else {\n            gres2 = goldilocks_shared_secret(ss2,&hsk,&gpk);\n        }\n    }\n    when = now() - when;\n    printf(\"ecdh:        %5.1fµs\\n\", when * 1e6 / i);\n    if (gres1 || gres2 || memcmp(ss1,ss2,64)) {\n        printf(\"[FAIL] %d %d\\n\",gres1,gres2);\n        \n        printf(\"sk1 = \");\n        for (i=0; i<SCALAR_BYTES; i++) {\n            printf(\"%02x\", gsk.opaque[i]);\n        }\n        printf(\"\\nsk2 = \");\n        for (i=0; i<SCALAR_BYTES; i++) {\n            printf(\"%02x\", hsk.opaque[i]);\n        }\n        printf(\"\\nss1 = \");\n        for (i=0; i<64; i++) {\n            printf(\"%02x\", ss1[i]);\n        }\n        printf(\"\\nss2 = \");\n        for (i=0; i<64; i++) {\n            printf(\"%02x\", ss2[i]);\n        }\n        printf(\"\\n\");\n    }\n    \n    uint8_t sout[FIELD_BYTES*2];\n    const char *message = \"hello world\";\n    size_t message_len = strlen(message);\n    when = now();\n    for (i=0; i<nbase; i++) {\n        res = goldilocks_sign(sout,(const unsigned char *)message,message_len,&gsk);\n        (void)res;\n        assert(!res);\n    }\n    when = now() - when;\n    printf(\"sign:        %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        int ver = goldilocks_verify(sout,(const unsigned char *)message,message_len,&gpk);\n        (void)ver;\n        assert(!ver);\n    }\n    when = now() - when;\n    printf(\"verify:      %5.1fµs\\n\", when * 1e6 / i);\n    \n    struct goldilocks_precomputed_public_key_t *pre = NULL;\n    when = now();\n    for (i=0; i<nbase; i++) {\n        goldilocks_destroy_precomputed_public_key(pre);\n        pre = goldilocks_precompute_public_key(&gpk);\n    }\n    when = now() - when;\n    printf(\"precompute:  %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        int ver = goldilocks_verify_precomputed(sout,(const unsigned char *)message,message_len,pre);\n        (void)ver;\n        assert(!ver);\n    }\n    when = now() - when;\n    printf(\"verify pre:  %5.1fµs\\n\", when * 1e6 / i);\n    \n    when = now();\n    for (i=0; i<nbase; i++) {\n        int ret = goldilocks_shared_secret_precomputed(ss1,&gsk,pre);\n        (void)ret;\n        assert(!ret);\n    }\n    when = now() - when;\n    printf(\"ecdh pre:    %5.1fµs\\n\", when * 1e6 / i);\n    \n    printf(\"\\nTesting...\\n\");\n    \n    \n    int failures=0, successes = 0;\n    for (i=0; i<nbase/10; i++) {\n        ignore_result(goldilocks_keygen(&gsk,&gpk));\n        goldilocks_sign(sout,(const unsigned char *)message,message_len,&gsk);\n        res = goldilocks_verify(sout,(const unsigned char *)message,message_len,&gpk);\n        if (res) failures++;\n    }\n    if (failures) {\n        printf(\"FAIL %d/%d signature checks!\\n\", failures, i);\n    }\n    \n    failures=0; successes = 0;\n    for (i=0; i<nbase/10; i++) {\n        field_randomize(&crand, a);\n\t\tword_t two = 2;\n        mask_t good = montgomery_ladder(b,a,&two,2,0);\n\t\tif (!good) continue;\n\t\t\n\t\tword_t x,y;\n        crandom_generate(&crand, (unsigned char *)&x, sizeof(x));\n        crandom_generate(&crand, (unsigned char *)&y, sizeof(y));\n        x = (hword_t)x;\n        y = (hword_t)y;\n        word_t z=x*y;\n        \n    \tignore_result(montgomery_ladder(b,a,&x,WORD_BITS,0));\n        ignore_result(montgomery_ladder(c,b,&y,WORD_BITS,0));\n        ignore_result(montgomery_ladder(b,a,&z,WORD_BITS,0));\n        \n        field_sub(d,b,c);\n\t\tif (!field_is_zero(d)) {\n            printf(\"Odd ladder validation failure %d!\\n\", ++failures);\n            field_print(\"a\", a);\n            printf(\"x=%\"PRIxWORD\", y=%\"PRIxWORD\", z=%\"PRIxWORD\"\\n\", x,y,z);\n            field_print(\"c\", c);\n            field_print(\"b\", b);\n\t\t\tprintf(\"\\n\");\n\t\t}\n\t}\n    \n    failures = 0;\n    for (i=0; i<nbase/10; i++) {\n        mask_t good;\n        do {\n            field_randomize(&crand, a);\n            good = deserialize_affine(&affine, a);\n        } while (!good);\n        \n        convert_affine_to_extensible(&exta,&affine);\n        twist_and_double(&ext,&exta);\n        untwist_and_double(&exta,&ext);\n        serialize_extensible(b, &exta);\n        untwist_and_double_and_serialize(c, &ext);\n        \n        field_sub(d,b,c);\n        \n        if (good && !field_is_zero(d)){\n            printf(\"Iso+serial validation failure %d!\\n\", ++failures);\n            field_print(\"a\", a);\n            field_print(\"b\", b);\n            field_print(\"c\", c);\n            printf(\"\\n\");\n        } else if (good) {\n            successes ++;\n        }\n    }\n    if (successes < i/3) {\n        printf(\"Iso+serial variation: only %d/%d successful.\\n\", successes, i);\n    }\n    \n    successes = failures = 0;\n    for (i=0; i<nbase/10; i++) {\n        field_a_t aa;\n        struct tw_extensible_t exu,exv,exw;\n        \n        mask_t good;\n        do {\n            field_randomize(&crand, a);\n            good = deserialize_affine(&affine, a);\n            convert_affine_to_extensible(&exta,&affine);\n            twist_and_double(&ext,&exta);\n        } while (!good);\n        do {\n            field_randomize(&crand, aa);\n            good = deserialize_affine(&affine, aa);\n            convert_affine_to_extensible(&exta,&affine);\n            twist_and_double(&exu,&exta);\n        } while (!good);\n        field_randomize(&crand, aa);\n        \n        q448_randomize(&crand, sk);\n\t\tif (i==0 || i==2) memset(&sk, 0, sizeof(sk));\n        q448_randomize(&crand, tk);\n\t\tif (i==0 || i==1) memset(&tk, 0, sizeof(tk));\n        \n        copy_tw_extensible(&exv, &ext);\n        copy_tw_extensible(&exw, &exu);\n        scalarmul(&exv,sk);\n        scalarmul(&exw,tk);\n        convert_tw_extensible_to_tw_pniels(&pniels, &exw);\n        add_tw_pniels_to_tw_extensible(&exv,&pniels);\n        untwist_and_double(&exta,&exv);\n        serialize_extensible(b, &exta);\n\n        ignore_result(precompute_fixed_base_wnaf(wnaft,&exu,5));\n        linear_combo_var_fixed_vt(&ext,sk,FIELD_BITS,tk,FIELD_BITS,(const tw_niels_a_t*)wnaft,5);\n        untwist_and_double(&exta,&exv);\n        serialize_extensible(c, &exta);\n        \n        field_sub(d,b,c);\n        \n        if (!field_is_zero(d)){\n            printf(\"PreWNAF combo validation failure %d!\\n\", ++failures);\n            field_print(\"a\", a);\n            field_print(\"A\", aa);\n            q448_print(\"s\", sk);\n            q448_print(\"t\", tk);\n            field_print(\"c\", c);\n            field_print(\"b\", b);\n            printf(\"\\n\\n\");\n        } else if (good) {\n            successes ++;\n        }\n    }\n    if (successes < i) {\n        printf(\"PreWNAF combo variation: only %d/%d successful.\\n\", successes, i);\n    }\n    \n    return 0;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/test/test.c",
    "content": "#include \"test.h\"\n\n#include <stdio.h>\n#include <string.h>\n\n#ifndef LIMBPERM\n#define LIMBPERM(x) (x)\n#endif\n\nint failed_tests, n_tests, failed_this_test, running_a_test;\n\nstatic void end_test(void) {\n    if (!failed_this_test) {\n        printf(\"[PASS]\\n\");\n    }\n    n_tests ++;\n    running_a_test = 0;\n}\n\nstatic void begin_test(const char *name) {\n    if (running_a_test) end_test();\n    printf(\"%s...%*s\",name,(int)(30-strlen(name)),\"\");\n    fflush(stdout);\n    failed_this_test = 0;\n    running_a_test = 1;\n}\n\nvoid youfail(void) {\n    if (failed_this_test) return;\n    failed_this_test = 1;\n    failed_tests ++;\n    printf(\"[FAIL]\\n\");   \n}\n\nstatic int\nhexchar (char c) {\n    if (c >= '0' && c <= '9') {\n        return c - '0';\n    } else if (c >= 'a' && c <= 'f') {\n        return 10 + c - 'a';\n    } else if (c >= 'A' && c <= 'F') {\n        return 10 + c - 'A';\n    } else {\n        return -1;\n    }\n}\n\nint\nhexdecode (\n    unsigned char *bytes,\n    const char *hex,\n    unsigned int nbytes\n) {\n    if (strlen(hex) != nbytes*2) {\n        return -1;\n    }\n    \n    unsigned int i;\n    for (i=0; i<nbytes; i++) {\n        int hi = hexchar(hex[2*i]),\n            lo = hexchar(hex[2*i+1]);\n        if (hi<0 || lo<0) return -1;\n        bytes[i] = hi*16 + lo;\n    }\n    \n    return 0;\n}\n\nvoid\nhexprint (\n    const char *descr,\n    const unsigned char *bytes,\n    unsigned int nbytes\n) {\n    if (descr) printf(\"%s = \", descr);\n    unsigned int i;\n    for (i=0; i<nbytes; i++) {\n        printf(\"%02x\", bytes[i]);\n    }\n    printf(\"\\n\");\n}\n\nvoid field_print (\n    const char *descr,\n    const field_a_t a\n) {\n    int j;\n    unsigned char ser[FIELD_BYTES];\n    field_serialize(ser,a);\n    printf(\"%s = 0x\", descr);\n    for (j=FIELD_BYTES - 1; j>=0; j--) {\n        printf(\"%02x\", ser[j]);\n    }\n    printf(\"\\n\");\n}\n\nvoid scalar_print (\n    const char *descr,\n    const word_t *scalar,\n    int nwords\n) {\n    int j;\n    printf(\"%s = 0x\", descr);\n    for (j=nwords-1; j>=0; j--) {\n        printf(PRIxWORDfull, scalar[j]);\n    }\n    printf(\"\\n\");\n}\n\nint main(int argc, char **argv) {\n    (void) argc;\n    (void) argv;\n    \n    n_tests = running_a_test = failed_tests = 0;\n\n    begin_test(\"Arithmetic\");\n    test_arithmetic();\n\n    begin_test(\"EC point operations\");\n    test_pointops();\n    \n    begin_test(\"Scalarmul compatibility\");\n    test_scalarmul_compatibility();\n    \n    begin_test(\"Scalarmul commutativity\");\n    test_scalarmul_commutativity();\n    \n    begin_test(\"Linear combo\");\n    test_linear_combo();\n    \n    begin_test(\"SHA-512 NIST Monte Carlo\");\n    test_sha512_monte_carlo();\n    \n    begin_test(\"Goldilocks complete system\");\n    test_goldilocks();\n    \n    if (running_a_test) end_test();\n    printf(\"\\n\");\n    if (failed_tests) {\n        printf(\"Failed %d / %d tests.\\n\", failed_tests, n_tests);\n    } else {\n        printf(\"Passed all %d tests.\\n\", n_tests);\n    }\n    \n    return failed_tests ? 1 : 0;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/test/test.h",
    "content": "#ifndef __GOLDILOCKS_TEST_H__\n#define __GOLDILOCKS_TEST_H__ 1\n\n#include \"word.h\"\n#include \"field.h\"\n\nint\nhexdecode (\n    unsigned char *bytes,\n    const char *hex,\n    unsigned int nbytes\n);\n\nvoid\nhexprint (\n    const char *descr,\n    const unsigned char *bytes,\n    unsigned int nbytes\n);\n    \nvoid field_print (\n    const char *descr,\n    const field_a_t a\n);\n    \nvoid scalar_print (\n    const char *descr,\n    const word_t *scalar,\n    int nwords\n);\n\nvoid youfail(void);\n\nint test_sha512_monte_carlo(void);\n\nint test_linear_combo (void);\n\nint test_scalarmul_compatibility (void);\n\nint test_scalarmul_commutativity (void);\n\nint test_arithmetic (void);\n\nint test_goldilocks (void);\n\nint test_pointops (void);\n\n#endif // __GOLDILOCKS_TEST_H__\n"
  },
  {
    "path": "src/crypto/goldilocks/test/test_arithmetic.c",
    "content": "#include \"field.h\"\n#include \"test.h\"\n#include <gmp.h>\n#include <string.h>\n#include <stdio.h>\n\nmpz_t mp_field;\n\nstatic mask_t mpz_to_field (\n    field_a_t out,\n    const mpz_t in\n) {\n    uint8_t ser[FIELD_BYTES];\n    mpz_t modded;\n    memset(ser,0,sizeof(ser));\n    mpz_init(modded);\n    mpz_mod(modded, in, mp_field);\n    mpz_export(ser, NULL, -1, 1, -1, 0, modded);\n    mask_t succ = field_deserialize(out, ser);\n    return succ;\n}\n\nstatic inline int BRANCH_ON_CONSTANT(int x) {\n    __asm__ (\"\" : \"+r\"(x));\n    return x;\n}\n\nstatic mask_t field_assert_eq_gmp(\n    const char *descr,\n    const field_a_t a,\n    const field_a_t b,\n    const field_a_t x,\n    const mpz_t y,\n    float lowBound,\n    float highBound\n) {\n    uint8_t xser[FIELD_BYTES], yser[FIELD_BYTES];\n    mpz_t modded;\n    \n    memset(yser,0,sizeof(yser));\n    \n    field_serialize(xser, x);\n    \n    mpz_init(modded);\n    mpz_mod(modded, y, mp_field);\n    mpz_export(yser, NULL, -1, 1, -1, 0, modded);\n    \n    unsigned int i;\n    for (i=0; i<sizeof(*x)/sizeof(x->limb[0]); i++) {\n        int radix_bits = 1 + (sizeof(x->limb[0]) * FIELD_BITS - 1) / sizeof(*x);\n        word_t yardstick;\n\n        if (BRANCH_ON_CONSTANT(FIELD_BITS == 521) && BRANCH_ON_CONSTANT(sizeof(*x)==12*8)) {\n            radix_bits = 58;\n        }\n        \n        yardstick = (1ull<<radix_bits) - 1;\n\n        if (x->limb[i] < yardstick * lowBound || x->limb[i] > yardstick * highBound) {\n            youfail();\n            printf(\"    Limb %d -> \" PRIxWORDfull \" is out of bounds (%0.2f, %0.2f) for test %s (yardstick = \" PRIxWORDfull \")\\n\",\n                 i, x->limb[i], lowBound, highBound, descr, yardstick);\n            break;\n        }\n    }\n    \n    if (memcmp(xser,yser,FIELD_BYTES)) {\n        youfail();\n        printf(\"    Failed arithmetic test %s\\n\", descr);\n        field_print(\"    a\", a);\n        field_print(\"    b\", b);\n        field_print(\"    goldi\", x);\n        printf(\"    gmp   = 0x\");\n        int j;\n        for (j=FIELD_BYTES-1; j>=0; j--) {\n            printf(\"%02x\", yser[j]);\n        }\n        printf(\"\\n\");\n        return MASK_FAILURE;\n    }\n    \n    mpz_clear(modded);\n    return MASK_SUCCESS;\n}\n\nstatic mask_t test_add_sub_RAW (\n    const mpz_t x,\n    const mpz_t y,\n    word_t word\n) {\n    field_a_t xx,yy,tt;\n    mpz_t t;\n    mask_t succ = MASK_SUCCESS;\n    succ  = mpz_to_field(xx,x);\n    succ &= mpz_to_field(yy,y);\n    mpz_init(t);\n    \n    field_add_RAW(tt,xx,yy);\n    mpz_add(t,x,y);\n    succ &= field_assert_eq_gmp(\"add\",xx,yy,tt,t,0,2.1);\n    \n    field_sub_RAW(tt,xx,yy);\n    field_bias(tt,2);\n    mpz_sub(t,x,y);\n    succ &= field_assert_eq_gmp(\"sub\",xx,yy,tt,t,0,3.1);\n    \n    field_copy(tt,xx);\n    field_addw(tt,word);\n    mpz_add_ui(t,x,word);\n    succ &= field_assert_eq_gmp(\"addw\",xx,yy,tt,t,0,2.1);\n    \n    field_copy(tt,xx);\n    field_subw(tt,word);\n    field_bias(tt,1);\n    mpz_sub_ui(t,x,word);\n    succ &= field_assert_eq_gmp(\"subw\",xx,yy,tt,t,0,2.1);\n\n    /*\n    if (!succ) {\n        field_print(\"    x\", &xx);\n        field_print(\"    y\", &yy);\n    }\n    */\n    \n    mpz_clear(t);\n    \n    return succ;\n}\n\nstatic mask_t test_mul_sqr (\n    const mpz_t x,\n    const mpz_t y,\n    word_t word\n) {\n    ANALYZE_THIS_ROUTINE_CAREFULLY;\n    field_a_t xx,yy,tt,zz;\n    mpz_t t, z;\n    mask_t succ = MASK_SUCCESS;\n    succ  = mpz_to_field(xx,x);\n    succ &= mpz_to_field(yy,y);\n    mpz_init(t);\n    mpz_init(z);\n    \n    field_mul(tt,xx,yy);\n    mpz_mul(t,x,y);\n    succ &= field_assert_eq_gmp(\"mul\",xx,yy,tt,t,0,1.1);\n    \n    field_mulw(tt,xx,word);\n    mpz_mul_ui(t,x,word);\n    succ &= field_assert_eq_gmp(\"mulw\",xx,yy,tt,t,0,1.1);\n    \n    field_sqr(tt,xx);\n    mpz_mul(t,x,x);\n    succ &= field_assert_eq_gmp(\"sqrx\",xx,yy,tt,t,0,1.1);\n\n    field_sqr(tt,yy);\n    mpz_mul(t,y,y);\n    succ &= field_assert_eq_gmp(\"sqy\",xx,yy,tt,t,0,1.1);\n    \n    field_add_nr(zz,xx,xx);\n    mpz_add(z,x,x);\n    mpz_mul(t,z,z);\n    field_mul(tt,zz,zz);\n    succ &= field_assert_eq_gmp(\"msr4\",xx,yy,tt,t,0,1.1);\n    field_sqr(tt,zz);\n    succ &= field_assert_eq_gmp(\"sqr4\",xx,yy,tt,t,0,1.1);\n    \n    if (!succ) {\n        field_print(\"    x\", xx);\n        field_print(\"    y\", yy);\n    }\n    \n    mpz_clear(t);\n    mpz_clear(z);\n    \n    return succ;\n}\n\nstatic mask_t test_isr (\n    const mpz_t x\n) {\n    field_a_t xx,yy,ss,tt;\n    mask_t succ = 0;\n    succ  = mpz_to_field(xx,x);\n    \n    field_isr(ss,xx);\n    field_sqr(tt,ss);\n    field_mul(yy,xx,tt);\n    \n    field_addw(tt,1);\n    succ |= field_is_zero(tt);\n    \n    field_subw(tt,2);\n    field_bias(tt,1);\n    succ |= field_is_zero(tt);\n    \n    field_addw(tt,1);\n    if (~succ) {\n        youfail();\n        printf(\"ISR failure.\\n\");\n        field_print(\"    x\", xx);\n        field_print(\"    s\", ss);\n        field_print(\"    t\", tt);\n    }\n    \n    return succ;\n}\n\nvoid dbg_gmp_printf(const mpz_t x);\nvoid dbg_gmp_printf(const mpz_t x) {\n    gmp_printf(\"DEBUG: 0x%Zx\\n\", x);\n}\n\nint test_arithmetic (void) {\n    int j, ntests = 100000;\n    \n    gmp_randstate_t state;\n    gmp_randinit_mt(state);\n    mpz_init(mp_field);\n    mpz_import(mp_field, FIELD_BYTES, -1, 1, -1, 0, FIELD_MODULUS);\n    \n    mpz_t x,y;\n    mpz_init(x);\n    mpz_init(y);\n    \n    mask_t succ = MASK_SUCCESS;\n    \n    int radix_bits = sizeof(word_t) * FIELD_BITS / sizeof(field_a_t);\n    \n    for (j=0; j<ntests; j++) {\n        if (j<256) {\n            mpz_set_ui(x,0);\n            mpz_set_ui(y,0);\n            mpz_setbit(x,(j%16)*28);\n            mpz_setbit(y,(j/16)*28);\n        } else if (j&1) {\n            mpz_rrandomb(x, state, FIELD_BITS);\n            mpz_rrandomb(y, state, FIELD_BITS);\n        } else {\n            mpz_urandomb(x, state, FIELD_BITS);\n            mpz_urandomb(y, state, FIELD_BITS);\n        }\n        \n        word_t word = gmp_urandomm_ui (state, 1ull<<radix_bits);\n        \n        succ &= test_add_sub_RAW(x,y,word);\n        succ &= test_mul_sqr(x,y,word);\n        \n        if (j < 1000)\n            succ &= test_isr(x);\n        \n        // TODO: test neg, cond_neg_RAW, set_ui, wrd, srd, inv, ...?\n    }\n    \n    mpz_clear(x);\n    mpz_clear(y);\n    mpz_clear(mp_field);\n    gmp_randclear(state);\n    \n    return succ ? 0 : 1;\n}\n\n"
  },
  {
    "path": "src/crypto/goldilocks/test/test_goldilocks.c",
    "content": "#include \"test.h\"\n#include \"goldilocks.h\"\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nint test_goldilocks (void) {\n    const char *message1 = \"hello world\";\n    const char *message2 = \"Jello world\";\n    \n    unsigned char signature[GOLDI_SIGNATURE_BYTES];\n    \n    unsigned char\n        ss12[GOLDI_SHARED_SECRET_BYTES],\n        ss21[GOLDI_SHARED_SECRET_BYTES],\n        ss21p[GOLDI_SHARED_SECRET_BYTES],\n        proto[GOLDI_SYMKEY_BYTES];\n    \n    struct goldilocks_public_key_t  pub, pub2;\n    struct goldilocks_private_key_t priv, priv2;\n    struct goldilocks_precomputed_public_key_t *pre = NULL;\n    \n    int i, ret, good = 1;\n    \n    ret = goldilocks_init();\n    if (ret) {\n        youfail();\n        printf(\"    Failed init.\\n\");\n    }\n    \n    for (i=0; i<1000 && good; i++) {\n        \n        ret = goldilocks_keygen(&priv, &pub);\n        if (ret) {\n            youfail();\n            printf(\"    Failed keygen trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        goldilocks_destroy_precomputed_public_key( pre );\n        pre = goldilocks_precompute_public_key ( &pub );\n        if (!pre) {\n            youfail();\n            printf(\"    Failed precomp-public trial %d.\\n\", i);\n            return -1;\n        }\n        \n        ret = goldilocks_sign(\n            signature,\n            (const unsigned char *)message1,\n            strlen(message1),\n            &priv\n        );\n        if (ret) {\n            youfail();\n            printf(\"    Failed sign trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        ret = goldilocks_verify(\n            signature,\n            (const unsigned char *)message1,\n            strlen(message1),\n            &pub\n        );\n        if (ret) {\n            youfail();\n            printf(\"    Failed verify trial %d.\\n\", i);\n            good = 0;\n        }\n\n        ret = goldilocks_verify_precomputed (\n            signature,\n            (const unsigned char *)message1,\n            strlen(message1),\n            pre\n        );\n        if (ret) {\n            youfail();\n            printf(\"    Failed verify-pre trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        /* terrible negative test */\n        ret = goldilocks_verify(\n            signature,\n            (const unsigned char *)message2,\n            strlen(message1),\n            &pub\n        );\n        if (ret != GOLDI_EINVAL) {\n            youfail();\n            printf(\"    Failed nega-verify trial %d.\\n\", i);\n            good = 0;\n        }\n        ret = goldilocks_verify_precomputed(\n            signature,\n            (const unsigned char *)message2,\n            strlen(message1),\n            pre\n        );\n        if (ret != GOLDI_EINVAL) {\n            youfail();\n            printf(\"    Failed nega-verify-pre trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        /* honestly a slightly better negative test */\n        memset(signature,0,sizeof(signature));\n        ret = goldilocks_verify(\n            signature,\n            (const unsigned char *)message1,\n            strlen(message1),\n            &pub\n        );\n        if (ret != GOLDI_EINVAL) {\n            youfail();\n            printf(\"    Failed nega-verify-0 trial %d.\\n\", i);\n            good = 0;\n        }\n        ret = goldilocks_verify_precomputed(\n            signature,\n            (const unsigned char *)message1,\n            strlen(message1),\n            pre\n        );\n        if (ret != GOLDI_EINVAL) {\n            youfail();\n            printf(\"    Failed nega-verify-pre-0 trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        /* ecdh */\n        ret = goldilocks_keygen(&priv2, &pub2);\n        if (ret) {\n            youfail();\n            printf(\"    Failed keygen2 trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        ret = goldilocks_shared_secret ( ss12, &priv, &pub2 );\n        if (ret) {\n            youfail();\n            printf(\"    Failed ss12 trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        ret = goldilocks_shared_secret ( ss21, &priv2, &pub );\n        if (ret) {\n            youfail();\n            printf(\"    Failed ss21 trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        ret = goldilocks_shared_secret_precomputed ( ss21p, &priv2, pre );\n        if (ret) {\n            youfail();\n            printf(\"    Failed ss21p trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        if (memcmp(ss12,ss21,sizeof(ss12))) {\n            youfail();\n            printf(\"    Failed shared-secret trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        if (memcmp(ss21,ss21p,sizeof(ss21))) {\n            youfail();\n            printf(\"    Failed shared-secret precomp trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        /* test derive / underive / priv to pub */\n        goldilocks_underive_private_key ( proto, &priv );\n        ret = goldilocks_derive_private_key ( &priv2, proto );\n        if (ret || memcmp(&priv,&priv2,sizeof(priv))) {\n            youfail();    \n            printf(\"    Failed derive round-trip trial %d.\\n\", i);\n            good = 0;\n        }\n        \n        ret = goldilocks_private_to_public ( &pub2, &priv );\n        if (ret || memcmp(&pub,&pub2,sizeof(pub))) {\n            youfail();\n            printf(\"    Failed private-to-public trial %d.\\n\", i);\n            good = 0;\n        }\n        \n    }\n    \n    goldilocks_destroy_precomputed_public_key( pre );\n    \n    return good ? 0 : -1;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/test/test_pointops.c",
    "content": "#include \"test.h\"\n\n#include <stdio.h>\n\n#include \"ec_point.h\"\n#include \"magic.h\"\n#include \"field.h\"\n#include \"crandom.h\"\n\n\nstatic void\nfailprint_ext (\n    const struct extensible_t *a\n) {\n    field_a_t zi, scaled;\n    field_print(\"    x\", a->x);\n    field_print(\"    y\", a->y);\n    field_print(\"    z\", a->z);\n    field_inverse(zi, a->z);\n    field_mul(scaled, zi, a->x);\n    field_print(\"    X\", scaled);\n    field_mul(scaled, zi, a->y);\n    field_print(\"    Y\", scaled);\n    printf(\"\\n\");\n}\n\nstatic void\nfailprint_tw_ext (\n    const struct tw_extensible_t *a\n) {\n    failprint_ext((const struct extensible_t *)a);\n}\n\nstatic mask_t\nfail_if_different (\n    const struct extensible_t *a,\n    const struct extensible_t *b,\n    const char *faildescr,\n    const char *adescr,\n    const char *bdescr\n) {\n    mask_t succ = eq_extensible(a, b);\n    \n    if (!succ) {\n        youfail();\n        printf(\"    %s\\n\", faildescr);\n        \n        printf(\"\\n    %s:\\n\", adescr);\n        failprint_ext(a);\n        \n        printf(\"\\n    %s:\\n\", bdescr);\n        failprint_ext(b);\n    }\n    \n    return succ;\n}\n\nstatic mask_t\nvalidate_ext(\n    const struct extensible_t *ext,\n    int evenness,\n    const char *description\n) {\n    mask_t succ = validate_extensible(ext), succ2;\n    const char *error = \"Point isn't on the curve.\";\n    if (evenness > 0) {\n        succ2 = is_even_pt(ext);\n        if (succ &~ succ2) error = \"Point isn't even.\";\n        succ &= succ2;\n    } else if (evenness < 0) {\n        succ2 = is_even_pt(ext);\n        if (succ &~ succ2) error = \"Point is even but shouldn't be.\";\n        succ &= succ2;\n    } /* FUTURE: quadness */\n    \n    if (~succ) {\n        youfail();\n        printf(\"    %s\\n\", error);\n        printf(\"    %s\\n\", description);\n        failprint_ext(ext);\n    }\n    \n    return succ;\n}\n\nstatic mask_t\nvalidate_tw_ext(\n    const struct tw_extensible_t *ext,\n    int evenness,\n    const char *description\n) {\n    mask_t succ = validate_tw_extensible(ext), succ2;\n    const char *error = \"Point isn't on the twisted curve.\";\n    if (evenness > 0) {\n        succ2 = is_even_tw(ext);\n        if (succ &~ succ2) error = \"Point isn't even.\";\n        succ &= succ2;\n    } else if (evenness < 0) {\n        succ2 = is_even_tw(ext);\n        if (succ &~ succ2) error = \"Point is even but shouldn't be.\";\n        succ &= succ2;\n    } /* FUTURE: quadness */\n    \n    if (~succ) {\n        youfail();\n        printf(\"    %s\\n\", error);\n        printf(\"    %s\\n\", description);\n        failprint_tw_ext(ext);\n    }\n    \n    return succ;\n}\n\nstatic mask_t\nfail_if_different_tw (\n    const struct tw_extensible_t *a,\n    const struct tw_extensible_t *b,\n    const char *faildescr,\n    const char *adescr,\n    const char *bdescr\n) {\n    return fail_if_different(\n        (const struct extensible_t *)a, (const struct extensible_t *)b,\n        faildescr,adescr,bdescr\n    );\n}\n\nstatic int\nadd_double_test (\n    const struct affine_t *base1,\n    const struct affine_t *base2 \n) {\n    mask_t succ = MASK_SUCCESS;\n    struct extensible_t exb;\n    struct tw_extensible_t text1, text2, texta, textb;\n    struct tw_pniels_t pn;\n    \n    /* Convert to ext */\n    convert_affine_to_extensible(&exb, base1);\n    succ &= validate_ext(&exb,0,\"base1\");\n    twist_and_double(&text1, &exb);\n    succ &= validate_tw_ext(&text1,2,\"iso1\");\n    convert_affine_to_extensible(&exb, base2);\n    succ &= validate_ext(&exb,0,\"base2\");\n    twist_and_double(&text2, &exb);\n    succ &= validate_tw_ext(&text2,2,\"iso2\");\n    \n    /* a + b == b + a? */\n    convert_tw_extensible_to_tw_pniels(&pn, &text1);\n    copy_tw_extensible(&texta, &text2);\n    add_tw_pniels_to_tw_extensible(&texta, &pn);\n    \n    convert_tw_extensible_to_tw_pniels(&pn, &text2);\n    copy_tw_extensible(&textb, &text1);\n    add_tw_pniels_to_tw_extensible(&textb, &pn);\n    \n    succ &= fail_if_different_tw(&texta,&textb,\"Addition commutativity\",\"a+b\",\"b+a\");\n    \n    copy_tw_extensible(&textb, &text2);\n    add_tw_pniels_to_tw_extensible(&textb, &pn);\n    copy_tw_extensible(&texta, &text2);\n    double_tw_extensible(&texta);\n    \n    succ &= fail_if_different_tw(&texta,&textb,\"Doubling test\",\"2b\",\"b+b\");\n    \n    if (~succ) {\n        printf(\"    Bases were:\\n\");\n        field_print(\"    x1\", base1->x);\n        field_print(\"    y1\", base1->y);\n        field_print(\"    x2\", base2->x);\n        field_print(\"    y2\", base2->y);\n    }\n    \n    return succ ? 0 : -1;\n}\n\nstatic int\nsingle_twisting_test (\n    const struct affine_t *base\n) {\n    struct extensible_t exb, ext, tmpext;\n    struct tw_extensible_t text, text2;\n    mask_t succ = MASK_SUCCESS;\n    \n    convert_affine_to_extensible(&exb, base);\n    succ &= validate_ext(&exb,0,\"base\");\n    \n    /* check: dual . iso = 4 */\n    twist_and_double(&text, &exb);\n    succ &= validate_tw_ext(&text,2,\"iso\");\n    untwist_and_double(&ext, &text);\n    succ &= validate_ext(&ext,2,\"dual.iso\");\n    \n    copy_extensible(&tmpext,&exb);\n    double_extensible(&tmpext);\n    succ &= validate_ext(&tmpext,1,\"2*base\");\n    \n    double_extensible(&tmpext);\n    succ &= validate_ext(&tmpext,2,\"4*base\");\n    \n    succ &= fail_if_different(&ext,&tmpext,\"Isogeny and dual\",\"Dual . iso\",\"4*base\");\n    \n    /* check: twist and serialize */\n    test_only_twist(&text, &exb);\n    succ &= validate_tw_ext(&text,0,\"tot\");\n    mask_t evt = is_even_tw(&text), evb = is_even_pt(&exb);\n    if (evt != evb) {\n        youfail();\n        printf(\"    Different evenness from twist base: %d, twist: %d\\n\", (int)-evt, (int)-evb);\n        \n        succ = 0;\n    } /* FUTURE: quadness */\n    \n    field_a_t sera,serb;\n    untwist_and_double_and_serialize(sera,&text);\n    copy_extensible(&tmpext,&exb);\n    double_extensible(&tmpext);\n    serialize_extensible(serb,&tmpext);\n    \n    /* check that their (doubled; FUTURE?) serializations are equal */\n    if (~field_eq(sera,serb)) {\n        youfail();\n        printf(\"    Different serialization from twist + double ()\\n\");\n        field_print(\"    t\", sera);\n        field_print(\"    b\", serb);\n        succ = 0;\n    }\n    \n    untwist_and_double(&ext, &text);\n    succ &= validate_ext(&tmpext,1,\"dual.tot\");\n    \n    twist_and_double(&text2, &ext);\n    succ &= validate_tw_ext(&text2,2,\"iso.dual.tot\");\n\n    double_tw_extensible(&text);\n    succ &= validate_tw_ext(&text,1,\"2*tot\");\n\n    double_tw_extensible(&text);\n    succ &= validate_tw_ext(&text,2,\"4*tot\");\n    \n    succ &= fail_if_different_tw(&text,&text2,\"Dual and isogeny\",\"4*tot\",\"iso.dual.tot\");\n    \n    if (~succ) {\n        printf(\"    Base was:\\n\");\n        field_print(\"    x\", base->x);\n        field_print(\"    y\", base->y);\n    }\n    \n    \n    return succ ? 0 : -1;\n}\n\nint test_pointops (void) {\n    struct affine_t base, pbase;\n    field_a_t serf;\n    \n    struct crandom_state_t crand;\n    crandom_init_from_buffer(&crand, \"test_pointops random initializer\");\n    \n    struct extensible_t ext_base;\n    if (!validate_affine(goldilocks_base_point)) {\n        youfail();\n        printf(\"  Base point isn't on the curve.\\n\");\n        return -1;\n    }\n    convert_affine_to_extensible(&ext_base, goldilocks_base_point);\n    if (!validate_ext(&ext_base, 2, \"base\")) return -1;\n    \n    int i, ret;\n    for (i=0; i<1000; i++) {\n        uint8_t ser[FIELD_BYTES];\n        crandom_generate(&crand, ser, sizeof(ser));\n\n\n        #if (FIELD_BITS % 8)\n            ser[FIELD_BYTES-1] &= (1<<(FIELD_BITS%8)) - 1;\n        #endif\n        \n        /* TODO: we need a field generate, which can return random or pathological. */\n        mask_t succ = field_deserialize(serf, ser);\n        if (!succ) {\n            youfail();\n            printf(\"   Unlikely: fail at field_deserialize\\n\");\n            return -1;\n        }\n        \n        if (i) {\n            copy_affine(&pbase, &base);\n        }\n        elligator_2s_inject(&base, serf);\n        \n        if (i) {\n            ret = add_double_test(&base, &pbase);\n            if (ret) return ret;\n        }\n        \n        ret = single_twisting_test(&base);\n        if (ret) return ret;\n    }\n    \n    return 0;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/test/test_scalarmul.c",
    "content": "#include \"test.h\"\n\n#include <stdio.h>\n\n#include \"scalarmul.h\"\n#include \"ec_point.h\"\n#include \"field.h\"\n#include \"crandom.h\"\n\n#define STRIDE 7\n\n/* 0 = succeed, 1 = inval, -1 = fail */\nstatic int\nsingle_scalarmul_compatibility_test (\n    const field_a_t base,\n    const word_t *scalar,\n    int nbits\n) {\n    struct tw_extensible_t text, work;\n    field_a_t mont, ct, vl, vt;\n    \n    int ret = 0, i;\n    mask_t succ, succm;\n    \n    succ = deserialize_and_twist_approx(&text, base);\n    \n    succm = montgomery_ladder(mont,base,scalar,nbits,1);\n    \n    if (succ != succm) {\n        youfail();\n        printf(\"    Deserialize_and_twist_approx succ=%d, montgomery_ladder succ=%d\\n\",\n            (int)-succ, (int)-succm);\n        printf(\"    nbits = %d\\n\", nbits);\n        field_print(\"    base\", base);\n        scalar_print(\"    scal\", scalar, (nbits+WORD_BITS-1)/WORD_BITS);\n        return -1;\n    }\n    \n    if (!succ) {\n        return 1;\n    }\n\n#if FIELD_BITS == 448\n    struct { int n,t,s; } params[] = {{5,5,18},{3,5,30},{4,4,28},{1,2,224}};\n#elif FIELD_BITS == 480\n    struct { int n,t,s; } params[] = {{5,6,16},{6,5,16},{4,5,24},{4,4,30},{1,2,240}};\n#elif FIELD_BITS == 521\n    struct { int n,t,s; } params[] = {{5,8,13},{4,5,26},{1,2,(SCALAR_BITS+1)/2}};\n#else\n    struct { int n,t,s; } params[] = {{5,5,(SCALAR_BITS+24)/25},{1,2,(SCALAR_BITS+1)/2}};\n#endif\n    const int nparams = sizeof(params)/sizeof(params[0]);\n    struct fixed_base_table_t fbt;\n    const int nsizes = 6;\n    field_a_t fbout[nparams], wout[nsizes];\n    memset(&fbt, 0, sizeof(fbt));\n    memset(&fbout, 0, sizeof(fbout));\n    memset(&wout, 0, sizeof(wout));\n        \n    /* compute using combs */\n    for (i=0; i<nparams; i++) {\n        int n=params[i].n, t=params[i].t, s=params[i].s;\n        succ = precompute_fixed_base(&fbt, &text, n, t, s, NULL);\n        if (!succ) {\n            youfail();\n            printf(\"    Failed to precompute_fixed_base(%d,%d,%d)\\n\", n, t, s);\n            continue;\n        }\n        \n        succ = scalarmul_fixed_base(&work, scalar, nbits, &fbt);\n        destroy_fixed_base(&fbt);\n        if (!succ) {\n            youfail();\n            printf(\"    Failed to scalarmul_fixed_base(%d,%d,%d)\\n\", n, t, s);\n            continue;\n        }\n        \n        untwist_and_double_and_serialize(fbout[i], &work);\n    }\n    \n    /* compute using precomp wNAF */\n    for (i=0; i<nsizes; i++) {\n        tw_niels_a_t pre[1<<i];\n        \n        succ = precompute_fixed_base_wnaf(pre, &text, i);\n        if (!succ) {\n            youfail();\n            printf(\"    Failed to precompute_fixed_base_wnaf(%d)\\n\", i);\n            continue;\n        }\n        \n        scalarmul_fixed_base_wnaf_vt(&work, scalar, nbits, (const tw_niels_a_t*)pre, i);\n        \n        untwist_and_double_and_serialize(wout[i], &work);\n    }\n    \n    mask_t consistent = MASK_SUCCESS;\n    \n    if (nbits == FIELD_BITS) {\n        /* window methods currently only work on FIELD_BITS bits. */\n        copy_tw_extensible(&work, &text);\n        scalarmul(&work, scalar);\n        untwist_and_double_and_serialize(ct, &work);\n        \n        copy_tw_extensible(&work, &text);\n        scalarmul_vlook(&work, scalar);\n        untwist_and_double_and_serialize(vl, &work);\n        \n        copy_tw_extensible(&work, &text);\n        scalarmul_vt(&work, scalar, nbits);\n        untwist_and_double_and_serialize(vt, &work);\n        \n    \n        /* check consistency mont vs window */\n        consistent &= field_eq(mont, ct);\n        consistent &= field_eq(mont, vl);\n        consistent &= field_eq(mont, vt);\n    }\n    \n    /* check consistency mont vs combs */\n    for (i=0; i<nparams; i++) {\n        consistent &= field_eq(mont,fbout[i]);\n    }\n    \n    /* check consistency mont vs wNAF */\n    for (i=0; i<nsizes; i++) {\n        consistent &= field_eq(mont,wout[i]);\n    }\n    \n    /* If inconsistent, complain. */\n    if (!consistent) {\n        youfail();\n        printf(\"    Failed scalarmul consistency test with nbits=%d.\\n\",nbits);\n        field_print(\"    base\", base);\n        scalar_print(\"    scal\", scalar, (nbits+WORD_BITS-1)/WORD_BITS);\n        field_print(\"    mont\", mont);\n        \n        for (i=0; i<nparams; i++) {\n            printf(\"    With n=%d, t=%d, s=%d:\\n\", params[i].n, params[i].t, params[i].s);\n            field_print(\"    out \", fbout[i]);\n        }\n        \n        for (i=0; i<nsizes; i++) {\n            printf(\"    With w=%d:\\n\",i);\n            field_print(\"    wNAF\", wout[i]);\n        }\n        \n    \n        if (nbits == FIELD_BITS) {\n            field_print(\"    ct \", ct);\n            field_print(\"    vl \", vl);\n            field_print(\"    vt \", vt);\n        }\n        \n        ret = -1;\n    }\n    \n    return ret;\n}\n\nstatic int\nsingle_linear_combo_test (\n    const field_a_t base1,\n    const word_t *scalar1,\n    int nbits1,\n    const field_a_t base2,\n    const word_t *scalar2,\n    int nbits2\n) { \n    struct tw_extensible_t text1, text2, working;\n    struct tw_pniels_t pn;\n    field_a_t result_comb, result_combo, result_wnaf;\n    \n    mask_t succ = \n        deserialize_and_twist_approx(&text1, base1)\n      & deserialize_and_twist_approx(&text2, base2);\n    if (!succ) return 1;\n    \n    struct fixed_base_table_t t1, t2;\n    tw_niels_a_t wnaf[32];\n    memset(&t1,0,sizeof(t1));\n    memset(&t2,0,sizeof(t2));\n    \n    succ = precompute_fixed_base(&t1, &text1, 5, 5, 18, NULL); // FIELD_MAGIC\n    succ &= precompute_fixed_base(&t2, &text2, 6, 3, 25, NULL); // FIELD_MAGIC\n    succ &= precompute_fixed_base_wnaf(wnaf, &text2, 5);\n    \n    if (!succ) {\n        destroy_fixed_base(&t1);\n        destroy_fixed_base(&t2);\n        return -1;\n    }\n    \n    /* use the dedicated wNAF linear combo algorithm */\n    copy_tw_extensible(&working, &text1);\n    linear_combo_var_fixed_vt(&working, scalar1, nbits1, scalar2, nbits2, (const tw_niels_a_t*)wnaf, 5);\n    untwist_and_double_and_serialize(result_wnaf, &working);\n    \n    /* use the dedicated combs algorithm */\n    succ &= linear_combo_combs_vt(&working, scalar1, nbits1, &t1, scalar2, nbits2, &t2);\n    untwist_and_double_and_serialize(result_combo, &working);\n    \n    /* use two combs */\n    succ &= scalarmul_fixed_base(&working, scalar1, nbits1, &t1);\n    convert_tw_extensible_to_tw_pniels(&pn, &working);\n    succ &= scalarmul_fixed_base(&working, scalar2, nbits2, &t2);\n    add_tw_pniels_to_tw_extensible(&working, &pn);\n    untwist_and_double_and_serialize(result_comb, &working);\n    \n    mask_t consistent = MASK_SUCCESS;\n    consistent &= field_eq(result_combo, result_wnaf);\n    consistent &= field_eq(result_comb,  result_wnaf);\n    \n    if (!succ || !consistent) {\n        youfail();\n        printf(\"    Failed linear combo consistency test with nbits=%d,%d.\\n\",nbits1,nbits2);\n\n        field_print(\"    base1\", base1);\n        scalar_print(\"    scal1\", scalar1, (nbits1+WORD_BITS-1)/WORD_BITS);\n        field_print(\"    base2\", base2);\n        scalar_print(\"    scal2\", scalar2, (nbits1+WORD_BITS-1)/WORD_BITS);\n        field_print(\"    combs\", result_comb);\n        field_print(\"    combo\", result_combo);\n        field_print(\"    wNAFs\", result_wnaf);\n        return -1;\n    }\n    \n    destroy_fixed_base(&t1);\n    destroy_fixed_base(&t2);\n    \n    return 0;\n}\n\n/* 0 = succeed, 1 = inval, -1 = fail */\nstatic int\nsingle_scalarmul_commutativity_test (\n    const field_a_t base,\n    const word_t *scalar1,\n    int nbits1,\n    int ned1,\n    const word_t *scalar2,\n    int nbits2,\n    int ned2\n) {\n    field_a_t m12, m21, tmp1, tmp2;\n    mask_t succ12a = montgomery_ladder(tmp1,base,scalar1,nbits1,ned1);\n    mask_t succ12b = montgomery_ladder(m12,tmp1,scalar2,nbits2,ned2);\n    \n    mask_t succ21a = montgomery_ladder(tmp2,base,scalar2,nbits2,ned2);\n    mask_t succ21b = montgomery_ladder(m21,tmp2,scalar1,nbits1,ned1);\n    \n    mask_t succ12 = succ12a & succ12b, succ21 = succ21a & succ21b;\n    \n    if (succ12 != succ21) {\n        youfail();\n        printf(\"    Failed scalarmul commutativity test with (nbits,ned) = (%d,%d), (%d,%d).\\n\",\n            nbits1,ned1,nbits2,ned2);\n        field_print(\"    base\", base);\n        field_print(\"    tmp1\", tmp1);\n        field_print(\"    tmp2\", tmp2);\n        scalar_print(\"    sca1\", scalar1, (nbits1+WORD_BITS-1)/WORD_BITS);\n        scalar_print(\"    sca2\", scalar2, (nbits1+WORD_BITS-1)/WORD_BITS);\n        printf(\"    good = ((%d,%d),(%d,%d))\\n\", (int)-succ12a,\n            (int)-succ12b, (int)-succ21a, (int)-succ21b);\n        return -1;\n    } else if (!succ12) {\n        // printf(\"    (nbits,ned) = (%d,%d), (%d,%d).\\n\", nbits1,ned1,nbits2,ned2);\n        // printf(\"    succ = (%d,%d), (%d,%d).\\n\", (int)-succ12a, (int)-succ12b, (int)-succ21a, (int)-succ21b);\n        return 1;\n    }\n    \n    mask_t consistent = field_eq(m12,m21);\n    if (consistent) {\n        return 0;\n    } else {\n        youfail();\n        printf(\"    Failed scalarmul commutativity test with (nbits,ned) = (%d,%d), (%d,%d).\\n\",\n            nbits1,ned1,nbits2,ned2);\n        field_print(\"    base\", base);\n        scalar_print(\"    sca1\", scalar1, (nbits1+WORD_BITS-1)/WORD_BITS);\n        scalar_print(\"    sca2\", scalar2, (nbits1+WORD_BITS-1)/WORD_BITS);\n        field_print(\"    m12 \", m12);\n        field_print(\"    m21 \", m21);\n        return -1;\n    }\n}\n\nstatic void crandom_generate_f(struct crandom_state_t *crand, uint8_t *scalar, int n) {\n    crandom_generate(crand, scalar, n);\n    int i;\n    for (i = FIELD_BYTES; i<n; i++) {\n        scalar[i] = 0;\n    }\n#if (FIELD_BITS % 8)\n    if (n >= FIELD_BYTES) {\n        scalar[FIELD_BYTES-1] &= (1<<(FIELD_BITS%8)) - 1;\n    }\n#endif\n}\n\nint test_scalarmul_commutativity (void) {\n    int i,j,k,got;\n    \n    struct crandom_state_t crand;\n    crandom_init_from_buffer(&crand, \"scalarmul_commutativity_test RNG\");\n    \n    for (i=0; i<=FIELD_BITS; i+=STRIDE) {\n        for (j=0; j<=FIELD_BITS; j+=STRIDE) {\n            got = 0;\n            \n            for (k=0; k<128 && !got; k++) {\n                uint8_t ser[FIELD_BYTES];\n                word_t scalar1[SCALAR_WORDS], scalar2[SCALAR_WORDS];\n                crandom_generate_f(&crand, ser, sizeof(ser));\n                crandom_generate(&crand, (uint8_t *)scalar1, sizeof(scalar1));\n                crandom_generate(&crand, (uint8_t *)scalar2, sizeof(scalar2));\n            \n                field_t base;\n                mask_t succ = field_deserialize(&base, ser);\n                if (!succ) continue;\n            \n                int ret = single_scalarmul_commutativity_test (&base, scalar1, i, i%3, scalar2, j, j%3);\n                got = !ret;\n                if (ret == -1) return -1;\n            }\n\n            if (!got) {\n                youfail();\n                printf(\"    Unlikely: rejected 128 scalars in a row.\\n\");\n                return -1;\n            }\n            \n        }\n    }\n    \n    return 0;\n}\n\nint test_linear_combo (void) {\n    int i,j,k,got;\n    \n    struct crandom_state_t crand;\n    crandom_init_from_buffer(&crand, \"scalarmul_linear_combos_test RNG\");\n    \n    for (i=0; i<=FIELD_BITS; i+=STRIDE) {\n        for (j=0; j<=FIELD_BITS; j+=STRIDE) {\n            got = 0;\n            \n            for (k=0; k<128 && !got; k++) {\n                uint8_t ser[FIELD_BYTES];\n                word_t scalar1[SCALAR_WORDS], scalar2[SCALAR_WORDS];\n                crandom_generate(&crand, (uint8_t *)scalar1, sizeof(scalar1));\n                crandom_generate(&crand, (uint8_t *)scalar2, sizeof(scalar2));\n            \n                field_t base1;\n                crandom_generate_f(&crand, ser, sizeof(ser));\n                mask_t succ = field_deserialize(&base1, ser);\n                if (!succ) continue;\n                \n                field_t base2;\n                crandom_generate(&crand, ser, sizeof(ser));\n                succ = field_deserialize(&base2, ser);\n                if (!succ) continue;\n            \n                int ret = single_linear_combo_test (&base1, scalar1, i, &base2, scalar2, j);\n                got = !ret;\n                if (ret == -1) return -1;\n            }\n\n            if (!got) {\n                youfail();\n                printf(\"    Unlikely: rejected 128 scalars in a row.\\n\");\n                return -1;\n            }\n            \n        }\n    }\n    \n    return 0;\n}\n\nint test_scalarmul_compatibility (void) {\n    int i,j,k,got;\n    \n    struct crandom_state_t crand;\n    crandom_init_from_buffer(&crand, \"scalarmul_compatibility_test RNG\");\n    \n    for (i=0; i<=FIELD_BITS; i+=STRIDE) {\n        for (j=0; j<=20; j++) {\n            got = 0;\n            \n            for (k=0; k<128 && !got; k++) {\n                uint8_t ser[FIELD_BYTES];\n                word_t scalar[SCALAR_WORDS];\n                crandom_generate_f(&crand, ser, sizeof(ser));\n                crandom_generate(&crand, (uint8_t *)scalar, sizeof(scalar));\n            \n                field_t base;\n                mask_t succ = field_deserialize(&base, ser);\n                if (!succ) continue;\n            \n                int ret = single_scalarmul_compatibility_test (&base, scalar, i);\n                got = !ret;\n                if (ret == -1) return -1;\n            }\n\n            if (!got) {\n                youfail();\n                printf(\"    Unlikely: rejected 128 scalars in a row.\\n\");\n                return -1;\n            }\n            \n        }\n    }\n    \n    return 0;\n}\n"
  },
  {
    "path": "src/crypto/goldilocks/test/test_sha512.c",
    "content": "#include \"test.h\"\n\n#include <stdio.h>\n#include <string.h>\n\n#include \"sha512.h\"\n\n\n\nstatic int sha512_monte_carlo_core (\n    const char *seed,\n    const char *checks[100]\n) { \n    sha512_ctx_a_t sha;\n    sha512_init(sha);\n    \n    unsigned char md0[64],md1[64],md2[64];\n    \n    int ret = hexdecode(md0,seed,64);\n    if (ret) {\n        youfail();\n        printf(\"    SHA-512 NIST Monte Carlo validation seed hex decode failure.\\n\");\n        return -1;\n    }\n    \n    int i,j;\n\n    memcpy(md1,md0,sizeof(md1));\n    memcpy(md2,md0,sizeof(md1));\n    \n    for (j=0; j<100; j++) {\n        \n        for (i=3; i<1003; i++) {\n            sha512_update(sha,md0,sizeof(md0));\n            sha512_update(sha,md1,sizeof(md1));\n            sha512_update(sha,md2,sizeof(md2));\n            memcpy(md0,md1,sizeof(md1));\n            memcpy(md1,md2,sizeof(md1));\n            sha512_final(sha,md2);\n        }\n        \n        ret = hexdecode(md0,checks[j],64);\n        if (ret) {\n            youfail();\n            printf(\"    SHA-512 NIST Monte Carlo validation hex decode failure at iteration %d\\n\", j);\n            return -1;\n        } else if (memcmp(md0,md2,sizeof(md2))) {\n            youfail();\n            printf(\"    SHA-512 NIST Monte Carlo validation failure at iteration %d\\n\", j);\n            hexprint(\"    Expected\", md0, 64);\n            hexprint(\"    But got \", md2, 64);\n            return j+1;\n        }\n        \n        memcpy(md0,md2,sizeof(md1));\n        memcpy(md1,md2,sizeof(md1));\n    }\n    \n    return 0;\n}\n\nint test_sha512_monte_carlo(void) {\n    const char *seed =\n        \"5c337de5caf35d18ed90b5cddfce001ca1b8ee8602f367e7c24ccca6f893802f\"\n        \"b1aca7a3dae32dcd60800a59959bc540d63237876b799229ae71a2526fbc52cd\";\n    const char *checks[100] = {\n        \"ada69add0071b794463c8806a177326735fa624b68ab7bcab2388b9276c036e4\"\n        \"eaaff87333e83c81c0bca0359d4aeebcbcfd314c0630e0c2af68c1fb19cc470e\",\n        \"ef219b37c24ae507a2b2b26d1add51b31fb5327eb8c3b19b882fe38049433dbe\"\n        \"ccd63b3d5b99ba2398920bcefb8aca98cd28a1ee5d2aaf139ce58a15d71b06b4\",\n        \"c3d5087a62db0e5c6f5755c417f69037308cbce0e54519ea5be8171496cc6d18\"\n        \"023ba15768153cfd74c7e7dc103227e9eed4b0f82233362b2a7b1a2cbcda9daf\",\n        \"bb3a58f71148116e377505461d65d6c89906481fedfbcfe481b7aa8ceb977d25\"\n        \"2b3fe21bfff6e7fbf7575ceecf5936bd635e1cf52698c36ef6908ddbd5b6ae05\",\n        \"b68f0cd2d63566b3934a50666dec6d62ca1db98e49d7733084c1f86d91a8a08c\"\n        \"756fa7ece815e20930dd7cb66351bad8c087c2f94e8757cb98e7f4b86b21a8a8\",\n        \"937d7856a82a84c163c79417d0540c47daaf9ffe662c843737dbbcbe5f865bf6\"\n        \"f47a9d2bd10129a4f498073094653c324a2519a1c71ac1279b1623ff7d24647a\",\n        \"f8fbc058c2b9f84131c9decfa543a35ade41581f670398efd61b3abfced9c1cf\"\n        \"cb5324f2370487f9c59a65bc668ea596c8d22ce8a33014dfad28357fa7d05f04\",\n        \"4ab0c9484ff5c30fa64ae6e81510c5fea566eafb88f175f8bc19109f40fe8001\"\n        \"4c8b77fff10b8750778429bf3c5497e4cb92d9b30014f4cb975dff2a45244c28\",\n        \"685179397554d276513d630234a03419808c698abf2600d7490aabb8e455c6ab\"\n        \"6ea412c7729dc140a79dff66533c6946cbe90f9da9ed16e2e629db1651bea870\",\n        \"335e6e941ab7dadfecdb74ea6cb4e8584b6e3408841a33a6cf7fd6a63294b193\"\n        \"0a60983240311672acac3840a90e64cc366ce75081b2252627e9c31197ebad03\",\n        \"e3217f6af6e279e9445dc3738cbf9ba0e9edba0455844a73648139777afdea2c\"\n        \"4d8032e214f541bf92675fb23f24df8e4fe98e0003aadfb6d8f9cc2cd799bbf7\",\n        \"ee2fdfb3ae630613b7d890977cf2515deac272a37f27e4a01961ecf103d4ff5b\"\n        \"45cc8aef53b635dd75aa51aabf71c0642555ccd3281e0388f8ca09d83258cf30\",\n        \"6a30d97cc98af6a25b673dce7aeab8d762bf2e55ea0c6dc899179281f84dd02a\"\n        \"2896f77e9c106b472f55f7adbef7b1157be567ee1236ebdac2a3c5d8cb133eb5\",\n        \"ac1176abdc5f71170183d92ae55856221b0d95590af11d9d72ba605ec026bbec\"\n        \"52d6974bc43a1efb125ff2b161fbdc616fda00f04193a0bc26aacdfa052a5741\",\n        \"59fa909480620ecc08d34531a6da1b55158b74fc93ddf68e1d242615b6f3843a\"\n        \"7952e63e798c6445cde1b07e0be09d0d711cb7b42a0e7760a593b08acfceb63d\",\n        \"9eb253319efa61b864f27bd334d7dd78b38d3265fb544e0c8edee950a547e1d8\"\n        \"db921a285774ab94d66beae933298d20f2a5aa87c62fe1e383cc3b18e7af18ac\",\n        \"81735324005671f7bdad9e685ee8257f5e0622b9fcb5d38dbdfb2df27258c3e1\"\n        \"d46d76e24c0c92c744e1b50a2b4b0d31525b3af83cc80a75722d921bdeef59c4\",\n        \"17498cdff4323bb8021e44eca6559e05d8ff9a0ef2ee9d4ba0ac6e73f83972a0\"\n        \"dfbb6d47728fa70311d7c82e154966e1b7678263b0f65133e9116969193d429b\",\n        \"228c4574d7c45eb9ba9240722133fce74abe00c7328ab30b4bde373dc79afdd6\"\n        \"e0569d36268cd5eaa2f27205fc00512577bcbb6699e1d66ed85eafaba7548afb\",\n        \"3d40ccd9cc445bbecca9227c67fe455d89e0b7c1c858d32f30e2b544ca9a5a60\"\n        \"6535aea2e59fec6ec4d1ba898cc4338c6eadef9c0884bcf56aca2f481a2d7d3e\",\n        \"e1e577aeac92e3a2b7f8a262bf2ac9c037d2274ca6618fbe4cc21db7c699e994\"\n        \"6b6671ae45ea433a1e392a5bc9eec96fd641ba8f4a047f022a04a337227004df\",\n        \"5e4424c0bcb2f0f7a2428821a9d5840a82401f4440ae6bed25c53cd9e71cf9d3\"\n        \"9904d6a375bd721f4332ab0202529c91feb9c094c3e6d34ca4f66649ee6fa212\",\n        \"56b199d63ca37189d5ca0d40006ac7bcb9f39cbdc00ef7b8a5697caa7d81d05b\"\n        \"645a146995b1151d01958f1589337e14afc6e7dd10a815170e527a398e6ce8c3\",\n        \"d2d498ff93fb03013a64f295b5bc68e57d2fb5600da578aa011d43ff432eae3e\"\n        \"0c800f9e2a53155e56fdbf5e068fe2b4beb3e42b2585531b8b16c4d8ca3356c6\",\n        \"3d3875489903710f17cf4247b5842ace6f017b1a3b99e9ee5fbc04fc7898e78b\"\n        \"12693879878028ca40c63cd0f6925fb7d0ca0412e4f06619e3ace223690f03b8\",\n        \"a013e21cd1234483c95c2ea2757be949bc79401ba39b09c316a1612d594642be\"\n        \"65ca106e12695ac3808c57c6f2980e895fd1fe188946562afc238414e1e43649\",\n        \"c5f6367d7195489e16242f912fbe0d8002e947de3a7e9c53f77b1e5e90e05bd7\"\n        \"ca395e787e34cb5f500c02da59c9d83de35601de7ae80dae74a0d6b4a292d43b\",\n        \"7c28c44c6aaba83c122f24d68273e28a5afd65b4071d02b7ea3300478d511897\"\n        \"1e1356ae57cbc70d2a177ea464a1c2c50d4297b933e789c63b1481797ae8f08c\",\n        \"af7cb42b1c70a85ac1ae1c2991b25b657c19f4fcf83af7f7dc0ae1028c1452a6\"\n        \"a17dc98929634fe6ed3855b70b96bc2caa93d82037b94ebeddc77e4c1a7cc563\",\n        \"bd56ad4c0cbd162706053da929d667253aadcf417affb483fff4f2699bf406d1\"\n        \"28cfdf5196dfbb05bb89ccbf04c5147bd2ebb3156b0bc1768ca6faa171c91c01\",\n        \"004d7b0fff9bcddf4b3913ae190a76728705a3d23874d92a8b7ff246c8fcad46\"\n        \"623cb04723c8aded0cba4968d1a8cc1375b99005786c1bcb7ae4bf13325c3ae0\",\n        \"8299a5bf5ed64f525c4eebbeca969fc1b91a81adb58c584bdd2d7676386a31fa\"\n        \"546643a3cf505007584f02fb712d708cab645bf078a1b9339f5a76aee985d017\",\n        \"ce7100f3455db1a9776a9f40d562ea998afca1f9fee7e0d81c8db34cf68ad23a\"\n        \"8bfa6fc04774703e1e56d5196b66966158fcf2a8335a58c6ba7ba1af756ba1dc\",\n        \"90aaabcb655ee921b8350229efe6064a60051cf0cac858fa3d43afd5b97cc823\"\n        \"01bd1b8cc1f874022e5af948185638783a13ca1bbd5049ace7fbf4f6d90c201f\",\n        \"3cf0a25b33ded3e0806dfe603b9987f1d6f2b3fdcb1ec7f8566828c00e17e8f5\"\n        \"9e38b3bca302396c7525ca194e6cc8501369059e2e34ae21e3141215876847c4\",\n        \"bdc5266aee339a1ff13fcf5229773cd3d14b47101e83076927c160bb71bf7445\"\n        \"590525a2012d52af008e118e16df1b6bfcaf8f22b4e45f9e749f3c20625a2bc8\",\n        \"ef8d2ba885381ab97756d59dbbbf53a1ea35d152b2d8f82c3518430aa34e7083\"\n        \"59194ea43950d032e151f576d343a5c3cfe6b71d4ed0ead9d3a107402589bad0\",\n        \"194ea5324c4179998dd7057755f255fdea04dadf533f7851e3e9718b610948e3\"\n        \"2fd28323077d9421142ac808978adfa325b668c8599a2e01c757a5a14ed2dd37\",\n        \"106984d2f0087e621dae760552bc6279072267883c204079481af6034354f1a2\"\n        \"b77c17e6c039a1063e479342aa3ccd90330dd3fb5a7d5e976619497e2d3326cd\",\n        \"a1347216f1a6db47b90c4ded3c5c75440f54c22c87d538314d1340f86f88acba\"\n        \"01378acb933ddad0adc6b75d55bfb7e8efc9c4a531b2a410610b7515b6dac66a\",\n        \"b76e4db147e0eaa4f04880654088b9d0fce518c8c377d92c846345604dc6b2b1\"\n        \"8d377fdb8e30f06d9bcfe6d7dacc07d6adff73d98d49f8f132b80f3084390830\",\n        \"acd4e527763dfd4513f0def0b1edf8ea12dc78d336b7b796f3dcc32e10687254\"\n        \"43a2f55ab4f666b27d6bf2ab39669c98293f0a9108051fd3144d31a1ed171ddd\",\n        \"10128c15494bc87a87374f676ef9fe2df20b36ffcca41a80bd40b216637b3de7\"\n        \"10efd070e277827820a7bba3cceb7b21f8fe7f9775d6c4df4d3da5349434ec49\",\n        \"2632dd5c188c6ed3a4610405fdda704add752f5424d9de65a51400fe478e26cd\"\n        \"0412e5f91ca4b744c34f4954f40a3a4254431d21954623208b527b7b4daa687e\",\n        \"45707f5b6fc5ccd1f78d77f177d10fb8b462c74cc821518cd5cfa4b5d6b40b41\"\n        \"8044900693c37abbb82367d340fec67f800d74072935da1706b4d90ae26099c7\",\n        \"56c37f31220b5b3040373d91b2c5e42fe9e601a12f7f8dc4534459bf28e484b8\"\n        \"713db243c5782c031e674003a3c14c42fd152e7188789065e82795e10f87d54b\",\n        \"5da94c899d48bd8299fee3d81662f8d6c5f8f8bc54d18cb0368b13cebaee7ad7\"\n        \"1e74ea80f34974ad166f04f9a0602809166fe4085a475a8ca86cade12b6754c4\",\n        \"0664363f97ba910760b0922e31ca880ca97469506cb007e3108c36c3ce3ce180\"\n        \"1fb4197609479339e8820632b6a38bffffee05a9adc11cc544b9aa6f5b95cc6f\",\n        \"732c41a1edaa727c04f627ff158aaff67c18efd667216132b99ab84d108996a1\"\n        \"0bb008b5d803b22ed1aa78bb0d10f8a762fd34777d7dccce8e84827ba88d4193\",\n        \"fc9c21d67e393a2b05a23a17d8db630cbaebaa3def211181749f1bcad1815606\"\n        \"27fb60ee20fae2e5980cbf50fce0a19dce807e7fb75c4da0ef008bc75d413a65\",\n        \"0453b765afc1edffa595efe345177f5805ed3abc1297ceab757ae7161723a614\"\n        \"4cb543299f418049276d16b7896662631634fab9549127c10f27505b7dee8665\",\n        \"3853f3bf024e0668e8d1ea53733a97537f97d9307c5f3a19864ab4eeb1654710\"\n        \"693bb961a344dec8a758f5e64b26fcb6dd423419c4a114fa749211a9de06c281\",\n        \"240137f0dd57beb3f7fc283bb3ead423c67883fd46f4e27471d7be57ad469a49\"\n        \"bad03a3658418bd55614678f3a463bceff85291314b90ef43ccbcb028f0a7a07\",\n        \"f9050a5271edbe4cfdb9520ec05bbdc3cbcb9bce36fd212338d3e7028a39b9ab\"\n        \"30793e561d75a2e424193264c7f0775e65599ef0c94e0ad24dbfe18252364267\",\n        \"47caa7a5862fad837aaa409a4a9df2575e645528c35159115911b7c4e2f08ae4\"\n        \"9d68de97249b31b83ce2c163f649cad4559dc6e6a7191f2922d79a5fd6af167b\",\n        \"13f5825c41fa49edf6104e3e35c9c224eba93e37374f730004c39c54e7391e4a\"\n        \"847fd61865235a3fe32224c96fbe86f7e14c3d5df496e83ec989a71b4f293a44\",\n        \"e5b55e05efe1ca6b9a96a57e3a1523d610d70f837e93b31fa98c2736d3e114d2\"\n        \"38d46ec6b6e3d19e774b253f6b0c7a2ebe69b7e60fc0874444806b2a2278df45\",\n        \"f14a586ac30f0af255f597a9aef9abba5e99c04d17b01f24427c4ee2c196b52a\"\n        \"cb1ceefc9b15cb822b3ecffdc2f7c49e11d3fc0769acee33361537d379c62e0c\",\n        \"7e2d3398807195c48e6ec52d20710bbf8b21ea8de4d1abc197897ccc58aeff40\"\n        \"259edc67270cdae0edcc686c0d0dccc5760c1495ab1cf48482dc2000ae2d42ad\",\n        \"2f3d5c5f990bf615d5e8b396ccbd0337da39fad09b059f955a431db76a9dc720\"\n        \"dffc4e02c0be397c7e0463799cd75fd6ab7c52bec66c8df5ef0d47e14a4c5927\",\n        \"483a1764d308cc494a2b543d29ba616483aefdf91c7769fd084eedaac1add189\"\n        \"1df95d317a47430b2bf73e4081f86597020e28afe2d34a22b77ea62b6112d09a\",\n        \"bfa88691ec951511651c6f14af100eeb26d87729e18ac3ef49a80d73ffeaeea5\"\n        \"3e97c4a7277a7ee9f2fba070b1c9720d6cdba407dd82267019e3f0f5662b2f2b\",\n        \"4c17c8e2e7132dbf82afebc40efc77926d16f4d2c082d846dac28733aa767e28\"\n        \"40ebf04f2563df75933466a36e11968d342e4157827605d04d9627ce9b5216c8\",\n        \"70bbfc29a2a765220af84e7bb10d759a3152ad4b5643ef6b89966950ec7ef950\"\n        \"3d57bc0a28c4ee789a60bf9dcac59139e15241d73b990410cf92eff213da9eca\",\n        \"8d1d56f37fc19b84984a6fa33aa9c2dbdbf79a29c04ad0b4cf20333e6bec9434\"\n        \"47be2416242f8cd2f9732e79bb925cc5a61a80c5fc9c079961243fd1c1f5900e\",\n        \"492fd0171f4dcd5d20ea6c0d34b5576c8894664ae5955e6737f5e3b711c2804d\"\n        \"99ccca065b7ec18c82da98b18a3029b765c51ebc7c433b36492e0ed6b8511bb6\",\n        \"7f49e8e54db7e5b4323cae2db71f3e8b8eba172dcad3602e9b7b058007a55893\"\n        \"58732d5afffa56072a46e89b1ea27ef8d556deb86b569c635d394f15d99d8a15\",\n        \"56884a6a9210d5f371e25823efb2511a9c410c26a441e07c1bdffe8605084267\"\n        \"d49c315baf6a692d7d97844b2714b4930877a5d7f52cf6fa151700fcb6980546\",\n        \"6aaef8284eef221ecb17ea3c9596f075b5155fe7b925d737ed3c6543c761c28c\"\n        \"7cd9d9d4b5e2a37b2f183a2a367bbd34b633497bc7a1737d61c8c1f3ef295062\",\n        \"38ef178f5688e59d47c375252db7b39f40c0c84169878ee7ba5086e4b25fea81\"\n        \"076b9c37847e9e6bf24ae0b343689c265ec5ca7469e619acd61b0276721efb1b\",\n        \"e3fe1aabad120777cf24eaae289b486632ca46ceb89afae73dbae5fa87c76787\"\n        \"9369355a9cc5c21ca604ed91d0f2f58c466573f3e6d88e52c62c0d3cb188e141\",\n        \"82f5bd920457bb2763a0da031a7fed47b236951b1ea420c20fd2b6de1dbfbb9c\"\n        \"4600ea7092788493e2d4be6ee24b6dba04e57af3e8f2f14d9837295420ac7631\",\n        \"6d0b26208ba9b1615067bb3ff97b292fe67e4c02d240d649c32370e0a4cd22d0\"\n        \"3bdf864be4d24a3f5f51aeccfd1afd5191e590edeb5f7bec323b0506c3104b89\",\n        \"d081083158054d08371ec84f4d3aa5aa761734ac6091a30330a861fda056f835\"\n        \"c750bf4f7981af1693ff28545366bd05cec47bccd77a7d237befb0135c534138\",\n        \"6ba8b52780b8a07a2a2015dd8f0c5e7437b8e024c4ee428f7ba91dfea118cb72\"\n        \"a939872550983317132b841b7cbc29a22b8f1cfea0c55203cafc69b55ed6244a\",\n        \"312692b0a51f002b7f06d05b39d15a5637dbddd2f4f1a73e6c88a4c841cdba5c\"\n        \"d8e69c0939ab39bb1a9c54fa35402143c97edb9704a0e9e1a98701710f6a5dad\",\n        \"aaee960de201a8dcccff95b834fccf0dafc03fe6cffc0429162bf4aff01165ab\"\n        \"07a0c9435e9cb412121b7ba010657ccc3152118602b665072136317d92fd4262\",\n        \"21fdff552e08c86c07f080cefacaaaf31846eb893bfe2e4f88c3c3cd8cbf592a\"\n        \"84500942695a5e5ae971ab343ce2695dd1baeb1f94dd4b53d678e14265e421ae\",\n        \"ca8f1a5b2172f6adb474da53b35e3f73ffd88263d3eecde72e48b16e1a065801\"\n        \"5b555ee319005a1d82802e91431ee777610f9b1028d819921e1044ad426b0270\",\n        \"ce5ab25eff9c1ddc569a1eaaa66b689109ee269db7066e0b02d39b3564fd14ca\"\n        \"6249987b7791e203d3d7c2ebf18558d2f23f94c03dd1d03aa63849e4d2889a76\",\n        \"a6f8b0561000dd4ae8b828c5f676e8c1a6474c4a042a645f1815bd52e9ff53c9\"\n        \"7dc36d5d8997f8ce332185feead76267f5b2e63f597fb3345ca0046e58fc0f24\",\n        \"fec86794bad4106c5ad1c1a2d9a1b7aae480396ec231eb5cac21c4077d17a0b6\"\n        \"52da0037363399a5a1dababa4a40e4c54b9124167580dee9108c4dbb24c57512\",\n        \"594f5dd3f4c87bdc0d81309386e9163a9718e34c7b0dcb4613f8487aa786f9d2\"\n        \"11cfb61bb247fa9f5ecef042e710f192850f5571807294bfd8a54397850e5773\",\n        \"d81ad866f25ef6a0a6431d267114da564513e5ebdcf48db7e95db8cf32a89f0a\"\n        \"b107874d796035db97420ffcf1db5f04dc1a52ddbbb960fc63b7f3f835cc8be6\",\n        \"431d537e098e9949f6a68108d55d20952e3bfcdeb7273bac3917e37790a84fa5\"\n        \"db04c33a79c113a06cf333e831d7702a00853a93fd0aa5146d934f4f71242a6a\",\n        \"4ed95636c6885ae4e63d042e82f4da830c702dbf3b9746d64770a64dd666b332\"\n        \"08315f3a947c4dff790771ef283788a9c74da83e22b97f750286a820ee46698c\",\n        \"a9bcb60b4d7724cdddddbc232b4ac70b94d0d7e9f0724b1222d918930cbb9bdb\"\n        \"b04b3ad43e3c8caf3bf8b004ee4aec6bd527ff8eb6189b44827f7ba7057f6a90\",\n        \"d6d5e44d5bb07fc4144ab6ab309f048968f73f7992beb326047e9e2cd7af6240\"\n        \"bc8abf46703c32fdb58fb2a8672594a660ef855be74f24cec09d4fb00219de82\",\n        \"dfda9ac0c7147530da97715ccf47814182255f2f2cf40287db97a4c63b43fcd3\"\n        \"9e6d41e560921492badb253a7dea0aba863c7c33b912bb59d1ff4de03a4f03bb\",\n        \"0395faaaf2e907f27779d6f1cc9c9db68ec390a38fbb0702c6475b46f7a39949\"\n        \"8d46fd8014f834b131e1e83abba0359b1f16d8fc0a393580615def2ad0caba73\",\n        \"41cb98f09029abe85d24a0f131f116c7f69f54f7e91c250642606512bf3da4ca\"\n        \"89ba70a4714a5f66d9ae81ff09317dadaff12a02057074c970f0f02a52bfafd2\",\n        \"8e8f161d48e306c5533ed614b8ef3a1979df6db7e13d0780a73c4a3980ddf0a9\"\n        \"5f93941d412c93683e39915a660c3fbec0dbb1bb6beea2e2099cd968011535c0\",\n        \"789593f0b8fb83ef9b3ec50ab8f6e1e47344f763d4f7ceab5600989e7b6fd5fe\"\n        \"f6ee5e487975f64474af6cd71ae4d9ecce8f009edea0227c7ebe73080b8f961b\",\n        \"f37e1449e0b313d9537a6177f7a31158d353e5b79c781facf02526ec94e0c6cf\"\n        \"da37105bac67098b194ea82efb307c2929a9ab8aca0e76c53e829e3f901cd245\",\n        \"2e74e745caaf2d449ab3b031dd214b48616853a512cf2e95c40cb8e7594fe5e4\"\n        \"879ac8a26d02eb35b3b96a5c9e7dcae3e15fd050a0bcc1fb3b9cb9c4df0fad3e\",\n        \"6eac7069c26082e52574ca6a58abb9b1b9faf452e8cca9f1c7023679ce192ca5\"\n        \"54892f30e38104d39088a24df35612444a0fc90084af7535fd9344fa51dded84\",\n        \"ada6caf30c4f6e3644d952366e01519af6771b406e2c447552f0c597b8dd10e9\"\n        \"e9b4e699c9a835de03f422be8980538d9786172dfd2fe511db272a1543d5aa35\",\n        \"4d4b0086b2cb05d713f2805caa7e6605c8f7dbbb2e0f92aa159aebdcd6306030\"\n        \"5f47b748f1bca6e0b6e11cf8f9697fcccb6584b878c4b54a699290728a40aa1b\",\n        \"97420b8a0ad102aeb92139da2c052d2748dd7d2dbb93a9ea79dc15b520d0ca7c\"\n        \"ab8cb7a00f5b5aebcb49d7e7f52a27180935ce617aeecdecba04064c668edd37\",\n        \"4aa7dad74eb51d09a6ae7735c4b795b078f51c314f14f42a0d63071e13bdc5fd\"\n        \"9f51612e77b36d44567502a3b5eb66c609ec017e51d8df93e58d1a44f3c1e375\"\n    };\n    \n    return sha512_monte_carlo_core(seed, checks);\n}\n"
  },
  {
    "path": "src/crypto/newhope/LICENSE",
    "content": "Authors: Erdem Alkim, Léo Ducas, Thomas Pöppelmann, Peter Schwabe\nPublic domain.\n"
  },
  {
    "path": "src/crypto/newhope/batcher.c",
    "content": "#include \"batcher.h\"\n#include \"params.h\"\n\n\n#define compare_and_swap(x,i,j) \\\n  c = _5q - 1 - x[16*i];\\\n  c >>= 31;\\\n  t = x[16*i] ^ x[16*j];\\\n  t &= c;\\\n  x[16*i] ^= t;\\\n  x[16*j] ^= t;\n\n\nvoid batcher84(uint16_t *x)\n{    \n  const uint16_t _5q = 5*PARAM_Q;\n  int32_t c;\n  uint16_t t;\n\n  compare_and_swap(x, 0, 1);\n  compare_and_swap(x, 2, 3);\n  compare_and_swap(x, 0, 2);\n  compare_and_swap(x, 1, 3);\n  compare_and_swap(x, 1, 2);\n  compare_and_swap(x, 4, 5);\n  compare_and_swap(x, 6, 7);\n  compare_and_swap(x, 4, 6);\n  compare_and_swap(x, 5, 7);\n  compare_and_swap(x, 5, 6);\n  compare_and_swap(x, 0, 4);\n  compare_and_swap(x, 2, 6);\n  compare_and_swap(x, 2, 4);\n  compare_and_swap(x, 1, 5);\n  compare_and_swap(x, 3, 7);\n  compare_and_swap(x, 3, 5);\n  compare_and_swap(x, 1, 2);\n  compare_and_swap(x, 3, 4);\n  compare_and_swap(x, 5, 6);\n  compare_and_swap(x, 8, 9);\n  compare_and_swap(x, 10, 11);\n  compare_and_swap(x, 8, 10);\n  compare_and_swap(x, 9, 11);\n  compare_and_swap(x, 9, 10);\n  compare_and_swap(x, 12, 13);\n  compare_and_swap(x, 14, 15);\n  compare_and_swap(x, 12, 14);\n  compare_and_swap(x, 13, 15);\n  compare_and_swap(x, 13, 14);\n  compare_and_swap(x, 8, 12);\n  compare_and_swap(x, 10, 14);\n  compare_and_swap(x, 10, 12);\n  compare_and_swap(x, 9, 13);\n  compare_and_swap(x, 11, 15);\n  compare_and_swap(x, 11, 13);\n  compare_and_swap(x, 9, 10);\n  compare_and_swap(x, 11, 12);\n  compare_and_swap(x, 13, 14);\n  compare_and_swap(x, 0, 8);\n  compare_and_swap(x, 4, 12);\n  compare_and_swap(x, 4, 8);\n  compare_and_swap(x, 2, 10);\n  compare_and_swap(x, 6, 14);\n  compare_and_swap(x, 6, 10);\n  compare_and_swap(x, 2, 4);\n  compare_and_swap(x, 6, 8);\n  compare_and_swap(x, 10, 12);\n  compare_and_swap(x, 1, 9);\n  compare_and_swap(x, 5, 13);\n  compare_and_swap(x, 5, 9);\n  compare_and_swap(x, 3, 11);\n  compare_and_swap(x, 7, 15);\n  compare_and_swap(x, 7, 11);\n  compare_and_swap(x, 3, 5);\n  compare_and_swap(x, 7, 9);\n  compare_and_swap(x, 11, 13);\n  compare_and_swap(x, 1, 2);\n  compare_and_swap(x, 3, 4);\n  compare_and_swap(x, 5, 6);\n  compare_and_swap(x, 7, 8);\n  compare_and_swap(x, 9, 10);\n  compare_and_swap(x, 11, 12);\n  compare_and_swap(x, 13, 14);\n  compare_and_swap(x, 16, 17);\n  compare_and_swap(x, 18, 19);\n  compare_and_swap(x, 16, 18);\n  compare_and_swap(x, 17, 19);\n  compare_and_swap(x, 17, 18);\n  compare_and_swap(x, 20, 21);\n  compare_and_swap(x, 22, 23);\n  compare_and_swap(x, 20, 22);\n  compare_and_swap(x, 21, 23);\n  compare_and_swap(x, 21, 22);\n  compare_and_swap(x, 16, 20);\n  compare_and_swap(x, 18, 22);\n  compare_and_swap(x, 18, 20);\n  compare_and_swap(x, 17, 21);\n  compare_and_swap(x, 19, 23);\n  compare_and_swap(x, 19, 21);\n  compare_and_swap(x, 17, 18);\n  compare_and_swap(x, 19, 20);\n  compare_and_swap(x, 21, 22);\n  compare_and_swap(x, 24, 25);\n  compare_and_swap(x, 26, 27);\n  compare_and_swap(x, 24, 26);\n  compare_and_swap(x, 25, 27);\n  compare_and_swap(x, 25, 26);\n  compare_and_swap(x, 28, 29);\n  compare_and_swap(x, 30, 31);\n  compare_and_swap(x, 28, 30);\n  compare_and_swap(x, 29, 31);\n  compare_and_swap(x, 29, 30);\n  compare_and_swap(x, 24, 28);\n  compare_and_swap(x, 26, 30);\n  compare_and_swap(x, 26, 28);\n  compare_and_swap(x, 25, 29);\n  compare_and_swap(x, 27, 31);\n  compare_and_swap(x, 27, 29);\n  compare_and_swap(x, 25, 26);\n  compare_and_swap(x, 27, 28);\n  compare_and_swap(x, 29, 30);\n  compare_and_swap(x, 16, 24);\n  compare_and_swap(x, 20, 28);\n  compare_and_swap(x, 20, 24);\n  compare_and_swap(x, 18, 26);\n  compare_and_swap(x, 22, 30);\n  compare_and_swap(x, 22, 26);\n  compare_and_swap(x, 18, 20);\n  compare_and_swap(x, 22, 24);\n  compare_and_swap(x, 26, 28);\n  compare_and_swap(x, 17, 25);\n  compare_and_swap(x, 21, 29);\n  compare_and_swap(x, 21, 25);\n  compare_and_swap(x, 19, 27);\n  compare_and_swap(x, 23, 31);\n  compare_and_swap(x, 23, 27);\n  compare_and_swap(x, 19, 21);\n  compare_and_swap(x, 23, 25);\n  compare_and_swap(x, 27, 29);\n  compare_and_swap(x, 17, 18);\n  compare_and_swap(x, 19, 20);\n  compare_and_swap(x, 21, 22);\n  compare_and_swap(x, 23, 24);\n  compare_and_swap(x, 25, 26);\n  compare_and_swap(x, 27, 28);\n  compare_and_swap(x, 29, 30);\n  compare_and_swap(x, 0, 16);\n  compare_and_swap(x, 8, 24);\n  compare_and_swap(x, 8, 16);\n  compare_and_swap(x, 4, 20);\n  compare_and_swap(x, 12, 28);\n  compare_and_swap(x, 12, 20);\n  compare_and_swap(x, 4, 8);\n  compare_and_swap(x, 12, 16);\n  compare_and_swap(x, 20, 24);\n  compare_and_swap(x, 2, 18);\n  compare_and_swap(x, 10, 26);\n  compare_and_swap(x, 10, 18);\n  compare_and_swap(x, 6, 22);\n  compare_and_swap(x, 14, 30);\n  compare_and_swap(x, 14, 22);\n  compare_and_swap(x, 6, 10);\n  compare_and_swap(x, 14, 18);\n  compare_and_swap(x, 22, 26);\n  compare_and_swap(x, 2, 4);\n  compare_and_swap(x, 6, 8);\n  compare_and_swap(x, 10, 12);\n  compare_and_swap(x, 14, 16);\n  compare_and_swap(x, 18, 20);\n  compare_and_swap(x, 22, 24);\n  compare_and_swap(x, 26, 28);\n  compare_and_swap(x, 1, 17);\n  compare_and_swap(x, 9, 25);\n  compare_and_swap(x, 9, 17);\n  compare_and_swap(x, 5, 21);\n  compare_and_swap(x, 13, 29);\n  compare_and_swap(x, 13, 21);\n  compare_and_swap(x, 5, 9);\n  compare_and_swap(x, 13, 17);\n  compare_and_swap(x, 21, 25);\n  compare_and_swap(x, 3, 19);\n  compare_and_swap(x, 11, 27);\n  compare_and_swap(x, 11, 19);\n  compare_and_swap(x, 7, 23);\n  compare_and_swap(x, 15, 31);\n  compare_and_swap(x, 15, 23);\n  compare_and_swap(x, 7, 11);\n  compare_and_swap(x, 15, 19);\n  compare_and_swap(x, 23, 27);\n  compare_and_swap(x, 3, 5);\n  compare_and_swap(x, 7, 9);\n  compare_and_swap(x, 11, 13);\n  compare_and_swap(x, 15, 17);\n  compare_and_swap(x, 19, 21);\n  compare_and_swap(x, 23, 25);\n  compare_and_swap(x, 27, 29);\n  compare_and_swap(x, 1, 2);\n  compare_and_swap(x, 3, 4);\n  compare_and_swap(x, 5, 6);\n  compare_and_swap(x, 7, 8);\n  compare_and_swap(x, 9, 10);\n  compare_and_swap(x, 11, 12);\n  compare_and_swap(x, 13, 14);\n  compare_and_swap(x, 15, 16);\n  compare_and_swap(x, 17, 18);\n  compare_and_swap(x, 19, 20);\n  compare_and_swap(x, 21, 22);\n  compare_and_swap(x, 23, 24);\n  compare_and_swap(x, 25, 26);\n  compare_and_swap(x, 27, 28);\n  compare_and_swap(x, 29, 30);\n  compare_and_swap(x, 32, 33);\n  compare_and_swap(x, 34, 35);\n  compare_and_swap(x, 32, 34);\n  compare_and_swap(x, 33, 35);\n  compare_and_swap(x, 33, 34);\n  compare_and_swap(x, 36, 37);\n  compare_and_swap(x, 38, 39);\n  compare_and_swap(x, 36, 38);\n  compare_and_swap(x, 37, 39);\n  compare_and_swap(x, 37, 38);\n  compare_and_swap(x, 32, 36);\n  compare_and_swap(x, 34, 38);\n  compare_and_swap(x, 34, 36);\n  compare_and_swap(x, 33, 37);\n  compare_and_swap(x, 35, 39);\n  compare_and_swap(x, 35, 37);\n  compare_and_swap(x, 33, 34);\n  compare_and_swap(x, 35, 36);\n  compare_and_swap(x, 37, 38);\n  compare_and_swap(x, 40, 41);\n  compare_and_swap(x, 42, 43);\n  compare_and_swap(x, 40, 42);\n  compare_and_swap(x, 41, 43);\n  compare_and_swap(x, 41, 42);\n  compare_and_swap(x, 44, 45);\n  compare_and_swap(x, 46, 47);\n  compare_and_swap(x, 44, 46);\n  compare_and_swap(x, 45, 47);\n  compare_and_swap(x, 45, 46);\n  compare_and_swap(x, 40, 44);\n  compare_and_swap(x, 42, 46);\n  compare_and_swap(x, 42, 44);\n  compare_and_swap(x, 41, 45);\n  compare_and_swap(x, 43, 47);\n  compare_and_swap(x, 43, 45);\n  compare_and_swap(x, 41, 42);\n  compare_and_swap(x, 43, 44);\n  compare_and_swap(x, 45, 46);\n  compare_and_swap(x, 32, 40);\n  compare_and_swap(x, 36, 44);\n  compare_and_swap(x, 36, 40);\n  compare_and_swap(x, 34, 42);\n  compare_and_swap(x, 38, 46);\n  compare_and_swap(x, 38, 42);\n  compare_and_swap(x, 34, 36);\n  compare_and_swap(x, 38, 40);\n  compare_and_swap(x, 42, 44);\n  compare_and_swap(x, 33, 41);\n  compare_and_swap(x, 37, 45);\n  compare_and_swap(x, 37, 41);\n  compare_and_swap(x, 35, 43);\n  compare_and_swap(x, 39, 47);\n  compare_and_swap(x, 39, 43);\n  compare_and_swap(x, 35, 37);\n  compare_and_swap(x, 39, 41);\n  compare_and_swap(x, 43, 45);\n  compare_and_swap(x, 33, 34);\n  compare_and_swap(x, 35, 36);\n  compare_and_swap(x, 37, 38);\n  compare_and_swap(x, 39, 40);\n  compare_and_swap(x, 41, 42);\n  compare_and_swap(x, 43, 44);\n  compare_and_swap(x, 45, 46);\n  compare_and_swap(x, 48, 49);\n  compare_and_swap(x, 50, 51);\n  compare_and_swap(x, 48, 50);\n  compare_and_swap(x, 49, 51);\n  compare_and_swap(x, 49, 50);\n  compare_and_swap(x, 52, 53);\n  compare_and_swap(x, 54, 55);\n  compare_and_swap(x, 52, 54);\n  compare_and_swap(x, 53, 55);\n  compare_and_swap(x, 53, 54);\n  compare_and_swap(x, 48, 52);\n  compare_and_swap(x, 50, 54);\n  compare_and_swap(x, 50, 52);\n  compare_and_swap(x, 49, 53);\n  compare_and_swap(x, 51, 55);\n  compare_and_swap(x, 51, 53);\n  compare_and_swap(x, 49, 50);\n  compare_and_swap(x, 51, 52);\n  compare_and_swap(x, 53, 54);\n  compare_and_swap(x, 56, 57);\n  compare_and_swap(x, 58, 59);\n  compare_and_swap(x, 56, 58);\n  compare_and_swap(x, 57, 59);\n  compare_and_swap(x, 57, 58);\n  compare_and_swap(x, 60, 61);\n  compare_and_swap(x, 62, 63);\n  compare_and_swap(x, 60, 62);\n  compare_and_swap(x, 61, 63);\n  compare_and_swap(x, 61, 62);\n  compare_and_swap(x, 56, 60);\n  compare_and_swap(x, 58, 62);\n  compare_and_swap(x, 58, 60);\n  compare_and_swap(x, 57, 61);\n  compare_and_swap(x, 59, 63);\n  compare_and_swap(x, 59, 61);\n  compare_and_swap(x, 57, 58);\n  compare_and_swap(x, 59, 60);\n  compare_and_swap(x, 61, 62);\n  compare_and_swap(x, 48, 56);\n  compare_and_swap(x, 52, 60);\n  compare_and_swap(x, 52, 56);\n  compare_and_swap(x, 50, 58);\n  compare_and_swap(x, 54, 62);\n  compare_and_swap(x, 54, 58);\n  compare_and_swap(x, 50, 52);\n  compare_and_swap(x, 54, 56);\n  compare_and_swap(x, 58, 60);\n  compare_and_swap(x, 49, 57);\n  compare_and_swap(x, 53, 61);\n  compare_and_swap(x, 53, 57);\n  compare_and_swap(x, 51, 59);\n  compare_and_swap(x, 55, 63);\n  compare_and_swap(x, 55, 59);\n  compare_and_swap(x, 51, 53);\n  compare_and_swap(x, 55, 57);\n  compare_and_swap(x, 59, 61);\n  compare_and_swap(x, 49, 50);\n  compare_and_swap(x, 51, 52);\n  compare_and_swap(x, 53, 54);\n  compare_and_swap(x, 55, 56);\n  compare_and_swap(x, 57, 58);\n  compare_and_swap(x, 59, 60);\n  compare_and_swap(x, 61, 62);\n  compare_and_swap(x, 32, 48);\n  compare_and_swap(x, 40, 56);\n  compare_and_swap(x, 40, 48);\n  compare_and_swap(x, 36, 52);\n  compare_and_swap(x, 44, 60);\n  compare_and_swap(x, 44, 52);\n  compare_and_swap(x, 36, 40);\n  compare_and_swap(x, 44, 48);\n  compare_and_swap(x, 52, 56);\n  compare_and_swap(x, 34, 50);\n  compare_and_swap(x, 42, 58);\n  compare_and_swap(x, 42, 50);\n  compare_and_swap(x, 38, 54);\n  compare_and_swap(x, 46, 62);\n  compare_and_swap(x, 46, 54);\n  compare_and_swap(x, 38, 42);\n  compare_and_swap(x, 46, 50);\n  compare_and_swap(x, 54, 58);\n  compare_and_swap(x, 34, 36);\n  compare_and_swap(x, 38, 40);\n  compare_and_swap(x, 42, 44);\n  compare_and_swap(x, 46, 48);\n  compare_and_swap(x, 50, 52);\n  compare_and_swap(x, 54, 56);\n  compare_and_swap(x, 58, 60);\n  compare_and_swap(x, 33, 49);\n  compare_and_swap(x, 41, 57);\n  compare_and_swap(x, 41, 49);\n  compare_and_swap(x, 37, 53);\n  compare_and_swap(x, 45, 61);\n  compare_and_swap(x, 45, 53);\n  compare_and_swap(x, 37, 41);\n  compare_and_swap(x, 45, 49);\n  compare_and_swap(x, 53, 57);\n  compare_and_swap(x, 35, 51);\n  compare_and_swap(x, 43, 59);\n  compare_and_swap(x, 43, 51);\n  compare_and_swap(x, 39, 55);\n  compare_and_swap(x, 47, 63);\n  compare_and_swap(x, 47, 55);\n  compare_and_swap(x, 39, 43);\n  compare_and_swap(x, 47, 51);\n  compare_and_swap(x, 55, 59);\n  compare_and_swap(x, 35, 37);\n  compare_and_swap(x, 39, 41);\n  compare_and_swap(x, 43, 45);\n  compare_and_swap(x, 47, 49);\n  compare_and_swap(x, 51, 53);\n  compare_and_swap(x, 55, 57);\n  compare_and_swap(x, 59, 61);\n  compare_and_swap(x, 33, 34);\n  compare_and_swap(x, 35, 36);\n  compare_and_swap(x, 37, 38);\n  compare_and_swap(x, 39, 40);\n  compare_and_swap(x, 41, 42);\n  compare_and_swap(x, 43, 44);\n  compare_and_swap(x, 45, 46);\n  compare_and_swap(x, 47, 48);\n  compare_and_swap(x, 49, 50);\n  compare_and_swap(x, 51, 52);\n  compare_and_swap(x, 53, 54);\n  compare_and_swap(x, 55, 56);\n  compare_and_swap(x, 57, 58);\n  compare_and_swap(x, 59, 60);\n  compare_and_swap(x, 61, 62);\n  compare_and_swap(x, 0, 32);\n  compare_and_swap(x, 16, 48);\n  compare_and_swap(x, 16, 32);\n  compare_and_swap(x, 8, 40);\n  compare_and_swap(x, 24, 56);\n  compare_and_swap(x, 24, 40);\n  compare_and_swap(x, 8, 16);\n  compare_and_swap(x, 24, 32);\n  compare_and_swap(x, 40, 48);\n  compare_and_swap(x, 4, 36);\n  compare_and_swap(x, 20, 52);\n  compare_and_swap(x, 20, 36);\n  compare_and_swap(x, 12, 44);\n  compare_and_swap(x, 28, 60);\n  compare_and_swap(x, 28, 44);\n  compare_and_swap(x, 12, 20);\n  compare_and_swap(x, 28, 36);\n  compare_and_swap(x, 44, 52);\n  compare_and_swap(x, 4, 8);\n  compare_and_swap(x, 12, 16);\n  compare_and_swap(x, 20, 24);\n  compare_and_swap(x, 28, 32);\n  compare_and_swap(x, 36, 40);\n  compare_and_swap(x, 44, 48);\n  compare_and_swap(x, 52, 56);\n  compare_and_swap(x, 2, 34);\n  compare_and_swap(x, 18, 50);\n  compare_and_swap(x, 18, 34);\n  compare_and_swap(x, 10, 42);\n  compare_and_swap(x, 26, 58);\n  compare_and_swap(x, 26, 42);\n  compare_and_swap(x, 10, 18);\n  compare_and_swap(x, 26, 34);\n  compare_and_swap(x, 42, 50);\n  compare_and_swap(x, 6, 38);\n  compare_and_swap(x, 22, 54);\n  compare_and_swap(x, 22, 38);\n  compare_and_swap(x, 14, 46);\n  compare_and_swap(x, 30, 62);\n  compare_and_swap(x, 30, 46);\n  compare_and_swap(x, 14, 22);\n  compare_and_swap(x, 30, 38);\n  compare_and_swap(x, 46, 54);\n  compare_and_swap(x, 6, 10);\n  compare_and_swap(x, 14, 18);\n  compare_and_swap(x, 22, 26);\n  compare_and_swap(x, 30, 34);\n  compare_and_swap(x, 38, 42);\n  compare_and_swap(x, 46, 50);\n  compare_and_swap(x, 54, 58);\n  compare_and_swap(x, 2, 4);\n  compare_and_swap(x, 6, 8);\n  compare_and_swap(x, 10, 12);\n  compare_and_swap(x, 14, 16);\n  compare_and_swap(x, 18, 20);\n  compare_and_swap(x, 22, 24);\n  compare_and_swap(x, 26, 28);\n  compare_and_swap(x, 30, 32);\n  compare_and_swap(x, 34, 36);\n  compare_and_swap(x, 38, 40);\n  compare_and_swap(x, 42, 44);\n  compare_and_swap(x, 46, 48);\n  compare_and_swap(x, 50, 52);\n  compare_and_swap(x, 54, 56);\n  compare_and_swap(x, 58, 60);\n  compare_and_swap(x, 1, 33);\n  compare_and_swap(x, 17, 49);\n  compare_and_swap(x, 17, 33);\n  compare_and_swap(x, 9, 41);\n  compare_and_swap(x, 25, 57);\n  compare_and_swap(x, 25, 41);\n  compare_and_swap(x, 9, 17);\n  compare_and_swap(x, 25, 33);\n  compare_and_swap(x, 41, 49);\n  compare_and_swap(x, 5, 37);\n  compare_and_swap(x, 21, 53);\n  compare_and_swap(x, 21, 37);\n  compare_and_swap(x, 13, 45);\n  compare_and_swap(x, 29, 61);\n  compare_and_swap(x, 29, 45);\n  compare_and_swap(x, 13, 21);\n  compare_and_swap(x, 29, 37);\n  compare_and_swap(x, 45, 53);\n  compare_and_swap(x, 5, 9);\n  compare_and_swap(x, 13, 17);\n  compare_and_swap(x, 21, 25);\n  compare_and_swap(x, 29, 33);\n  compare_and_swap(x, 37, 41);\n  compare_and_swap(x, 45, 49);\n  compare_and_swap(x, 53, 57);\n  compare_and_swap(x, 3, 35);\n  compare_and_swap(x, 19, 51);\n  compare_and_swap(x, 19, 35);\n  compare_and_swap(x, 11, 43);\n  compare_and_swap(x, 27, 59);\n  compare_and_swap(x, 27, 43);\n  compare_and_swap(x, 11, 19);\n  compare_and_swap(x, 27, 35);\n  compare_and_swap(x, 43, 51);\n  compare_and_swap(x, 7, 39);\n  compare_and_swap(x, 23, 55);\n  compare_and_swap(x, 23, 39);\n  compare_and_swap(x, 15, 47);\n  compare_and_swap(x, 31, 63);\n  compare_and_swap(x, 31, 47);\n  compare_and_swap(x, 15, 23);\n  compare_and_swap(x, 31, 39);\n  compare_and_swap(x, 47, 55);\n  compare_and_swap(x, 7, 11);\n  compare_and_swap(x, 15, 19);\n  compare_and_swap(x, 23, 27);\n  compare_and_swap(x, 31, 35);\n  compare_and_swap(x, 39, 43);\n  compare_and_swap(x, 47, 51);\n  compare_and_swap(x, 55, 59);\n  compare_and_swap(x, 3, 5);\n  compare_and_swap(x, 7, 9);\n  compare_and_swap(x, 11, 13);\n  compare_and_swap(x, 15, 17);\n  compare_and_swap(x, 19, 21);\n  compare_and_swap(x, 23, 25);\n  compare_and_swap(x, 27, 29);\n  compare_and_swap(x, 31, 33);\n  compare_and_swap(x, 35, 37);\n  compare_and_swap(x, 39, 41);\n  compare_and_swap(x, 43, 45);\n  compare_and_swap(x, 47, 49);\n  compare_and_swap(x, 51, 53);\n  compare_and_swap(x, 55, 57);\n  compare_and_swap(x, 59, 61);\n  compare_and_swap(x, 1, 2);\n  compare_and_swap(x, 3, 4);\n  compare_and_swap(x, 5, 6);\n  compare_and_swap(x, 7, 8);\n  compare_and_swap(x, 9, 10);\n  compare_and_swap(x, 11, 12);\n  compare_and_swap(x, 13, 14);\n  compare_and_swap(x, 15, 16);\n  compare_and_swap(x, 17, 18);\n  compare_and_swap(x, 19, 20);\n  compare_and_swap(x, 21, 22);\n  compare_and_swap(x, 23, 24);\n  compare_and_swap(x, 25, 26);\n  compare_and_swap(x, 27, 28);\n  compare_and_swap(x, 29, 30);\n  compare_and_swap(x, 31, 32);\n  compare_and_swap(x, 33, 34);\n  compare_and_swap(x, 35, 36);\n  compare_and_swap(x, 37, 38);\n  compare_and_swap(x, 39, 40);\n  compare_and_swap(x, 41, 42);\n  compare_and_swap(x, 43, 44);\n  compare_and_swap(x, 45, 46);\n  compare_and_swap(x, 47, 48);\n  compare_and_swap(x, 49, 50);\n  compare_and_swap(x, 51, 52);\n  compare_and_swap(x, 53, 54);\n  compare_and_swap(x, 55, 56);\n  compare_and_swap(x, 57, 58);\n  compare_and_swap(x, 59, 60);\n  compare_and_swap(x, 61, 62);\n  compare_and_swap(x, 64, 65);\n  compare_and_swap(x, 66, 67);\n  compare_and_swap(x, 64, 66);\n  compare_and_swap(x, 65, 67);\n  compare_and_swap(x, 65, 66);\n  compare_and_swap(x, 68, 69);\n  compare_and_swap(x, 70, 71);\n  compare_and_swap(x, 68, 70);\n  compare_and_swap(x, 69, 71);\n  compare_and_swap(x, 69, 70);\n  compare_and_swap(x, 64, 68);\n  compare_and_swap(x, 66, 70);\n  compare_and_swap(x, 66, 68);\n  compare_and_swap(x, 65, 69);\n  compare_and_swap(x, 67, 71);\n  compare_and_swap(x, 67, 69);\n  compare_and_swap(x, 65, 66);\n  compare_and_swap(x, 67, 68);\n  compare_and_swap(x, 69, 70);\n  compare_and_swap(x, 72, 73);\n  compare_and_swap(x, 74, 75);\n  compare_and_swap(x, 72, 74);\n  compare_and_swap(x, 73, 75);\n  compare_and_swap(x, 73, 74);\n  compare_and_swap(x, 76, 77);\n  compare_and_swap(x, 78, 79);\n  compare_and_swap(x, 76, 78);\n  compare_and_swap(x, 77, 79);\n  compare_and_swap(x, 77, 78);\n  compare_and_swap(x, 72, 76);\n  compare_and_swap(x, 74, 78);\n  compare_and_swap(x, 74, 76);\n  compare_and_swap(x, 73, 77);\n  compare_and_swap(x, 75, 79);\n  compare_and_swap(x, 75, 77);\n  compare_and_swap(x, 73, 74);\n  compare_and_swap(x, 75, 76);\n  compare_and_swap(x, 77, 78);\n  compare_and_swap(x, 64, 72);\n  compare_and_swap(x, 68, 76);\n  compare_and_swap(x, 68, 72);\n  compare_and_swap(x, 66, 74);\n  compare_and_swap(x, 70, 78);\n  compare_and_swap(x, 70, 74);\n  compare_and_swap(x, 66, 68);\n  compare_and_swap(x, 70, 72);\n  compare_and_swap(x, 74, 76);\n  compare_and_swap(x, 65, 73);\n  compare_and_swap(x, 69, 77);\n  compare_and_swap(x, 69, 73);\n  compare_and_swap(x, 67, 75);\n  compare_and_swap(x, 71, 79);\n  compare_and_swap(x, 71, 75);\n  compare_and_swap(x, 67, 69);\n  compare_and_swap(x, 71, 73);\n  compare_and_swap(x, 75, 77);\n  compare_and_swap(x, 65, 66);\n  compare_and_swap(x, 67, 68);\n  compare_and_swap(x, 69, 70);\n  compare_and_swap(x, 71, 72);\n  compare_and_swap(x, 73, 74);\n  compare_and_swap(x, 75, 76);\n  compare_and_swap(x, 77, 78);\n  compare_and_swap(x, 80, 81);\n  compare_and_swap(x, 82, 83);\n  compare_and_swap(x, 80, 82);\n  compare_and_swap(x, 81, 83);\n  compare_and_swap(x, 81, 82);\n  compare_and_swap(x, 81, 82);\n  compare_and_swap(x, 81, 82);\n  compare_and_swap(x, 64, 80);\n  compare_and_swap(x, 72, 80);\n  compare_and_swap(x, 68, 72);\n  compare_and_swap(x, 76, 80);\n  compare_and_swap(x, 66, 82);\n  compare_and_swap(x, 74, 82);\n  compare_and_swap(x, 70, 74);\n  compare_and_swap(x, 78, 82);\n  compare_and_swap(x, 66, 68);\n  compare_and_swap(x, 70, 72);\n  compare_and_swap(x, 74, 76);\n  compare_and_swap(x, 78, 80);\n  compare_and_swap(x, 65, 81);\n  compare_and_swap(x, 73, 81);\n  compare_and_swap(x, 69, 73);\n  compare_and_swap(x, 77, 81);\n  compare_and_swap(x, 67, 83);\n  compare_and_swap(x, 75, 83);\n  compare_and_swap(x, 71, 75);\n  compare_and_swap(x, 79, 83);\n  compare_and_swap(x, 67, 69);\n  compare_and_swap(x, 71, 73);\n  compare_and_swap(x, 75, 77);\n  compare_and_swap(x, 79, 81);\n  compare_and_swap(x, 65, 66);\n  compare_and_swap(x, 67, 68);\n  compare_and_swap(x, 69, 70);\n  compare_and_swap(x, 71, 72);\n  compare_and_swap(x, 73, 74);\n  compare_and_swap(x, 75, 76);\n  compare_and_swap(x, 77, 78);\n  compare_and_swap(x, 79, 80);\n  compare_and_swap(x, 81, 82);\n  compare_and_swap(x, 72, 80);\n  compare_and_swap(x, 68, 72);\n  compare_and_swap(x, 76, 80);\n  compare_and_swap(x, 74, 82);\n  compare_and_swap(x, 70, 74);\n  compare_and_swap(x, 78, 82);\n  compare_and_swap(x, 66, 68);\n  compare_and_swap(x, 70, 72);\n  compare_and_swap(x, 74, 76);\n  compare_and_swap(x, 78, 80);\n  compare_and_swap(x, 73, 81);\n  compare_and_swap(x, 69, 73);\n  compare_and_swap(x, 77, 81);\n  compare_and_swap(x, 75, 83);\n  compare_and_swap(x, 71, 75);\n  compare_and_swap(x, 79, 83);\n  compare_and_swap(x, 67, 69);\n  compare_and_swap(x, 71, 73);\n  compare_and_swap(x, 75, 77);\n  compare_and_swap(x, 79, 81);\n  compare_and_swap(x, 65, 66);\n  compare_and_swap(x, 67, 68);\n  compare_and_swap(x, 69, 70);\n  compare_and_swap(x, 71, 72);\n  compare_and_swap(x, 73, 74);\n  compare_and_swap(x, 75, 76);\n  compare_and_swap(x, 77, 78);\n  compare_and_swap(x, 79, 80);\n  compare_and_swap(x, 81, 82);\n  compare_and_swap(x, 0, 64);\n  compare_and_swap(x, 32, 64);\n  compare_and_swap(x, 16, 80);\n  compare_and_swap(x, 48, 80);\n  compare_and_swap(x, 16, 32);\n  compare_and_swap(x, 48, 64);\n  compare_and_swap(x, 8, 72);\n  compare_and_swap(x, 40, 72);\n  compare_and_swap(x, 24, 40);\n  compare_and_swap(x, 56, 72);\n  compare_and_swap(x, 8, 16);\n  compare_and_swap(x, 24, 32);\n  compare_and_swap(x, 40, 48);\n  compare_and_swap(x, 56, 64);\n  compare_and_swap(x, 72, 80);\n  compare_and_swap(x, 4, 68);\n  compare_and_swap(x, 36, 68);\n  compare_and_swap(x, 20, 36);\n  compare_and_swap(x, 52, 68);\n  compare_and_swap(x, 12, 76);\n  compare_and_swap(x, 44, 76);\n  compare_and_swap(x, 28, 44);\n  compare_and_swap(x, 60, 76);\n  compare_and_swap(x, 12, 20);\n  compare_and_swap(x, 28, 36);\n  compare_and_swap(x, 44, 52);\n  compare_and_swap(x, 60, 68);\n  compare_and_swap(x, 4, 8);\n  compare_and_swap(x, 12, 16);\n  compare_and_swap(x, 20, 24);\n  compare_and_swap(x, 28, 32);\n  compare_and_swap(x, 36, 40);\n  compare_and_swap(x, 44, 48);\n  compare_and_swap(x, 52, 56);\n  compare_and_swap(x, 60, 64);\n  compare_and_swap(x, 68, 72);\n  compare_and_swap(x, 76, 80);\n  compare_and_swap(x, 2, 66);\n  compare_and_swap(x, 34, 66);\n  compare_and_swap(x, 18, 82);\n  compare_and_swap(x, 50, 82);\n  compare_and_swap(x, 18, 34);\n  compare_and_swap(x, 50, 66);\n  compare_and_swap(x, 10, 74);\n  compare_and_swap(x, 42, 74);\n  compare_and_swap(x, 26, 42);\n  compare_and_swap(x, 58, 74);\n  compare_and_swap(x, 10, 18);\n  compare_and_swap(x, 26, 34);\n  compare_and_swap(x, 42, 50);\n  compare_and_swap(x, 58, 66);\n  compare_and_swap(x, 74, 82);\n  compare_and_swap(x, 6, 70);\n  compare_and_swap(x, 38, 70);\n  compare_and_swap(x, 22, 38);\n  compare_and_swap(x, 54, 70);\n  compare_and_swap(x, 14, 78);\n  compare_and_swap(x, 46, 78);\n  compare_and_swap(x, 30, 46);\n  compare_and_swap(x, 62, 78);\n  compare_and_swap(x, 14, 22);\n  compare_and_swap(x, 30, 38);\n  compare_and_swap(x, 46, 54);\n  compare_and_swap(x, 62, 70);\n  compare_and_swap(x, 6, 10);\n  compare_and_swap(x, 14, 18);\n  compare_and_swap(x, 22, 26);\n  compare_and_swap(x, 30, 34);\n  compare_and_swap(x, 38, 42);\n  compare_and_swap(x, 46, 50);\n  compare_and_swap(x, 54, 58);\n  compare_and_swap(x, 62, 66);\n  compare_and_swap(x, 70, 74);\n  compare_and_swap(x, 78, 82);\n  compare_and_swap(x, 2, 4);\n  compare_and_swap(x, 6, 8);\n  compare_and_swap(x, 10, 12);\n  compare_and_swap(x, 14, 16);\n  compare_and_swap(x, 18, 20);\n  compare_and_swap(x, 22, 24);\n  compare_and_swap(x, 26, 28);\n  compare_and_swap(x, 30, 32);\n  compare_and_swap(x, 34, 36);\n  compare_and_swap(x, 38, 40);\n  compare_and_swap(x, 42, 44);\n  compare_and_swap(x, 46, 48);\n  compare_and_swap(x, 50, 52);\n  compare_and_swap(x, 54, 56);\n  compare_and_swap(x, 58, 60);\n  compare_and_swap(x, 62, 64);\n  compare_and_swap(x, 66, 68);\n  compare_and_swap(x, 70, 72);\n  compare_and_swap(x, 74, 76);\n  compare_and_swap(x, 78, 80);\n  compare_and_swap(x, 1, 65);\n  compare_and_swap(x, 33, 65);\n  compare_and_swap(x, 17, 81);\n  compare_and_swap(x, 49, 81);\n  compare_and_swap(x, 17, 33);\n  compare_and_swap(x, 49, 65);\n  compare_and_swap(x, 9, 73);\n  compare_and_swap(x, 41, 73);\n  compare_and_swap(x, 25, 41);\n  compare_and_swap(x, 57, 73);\n  compare_and_swap(x, 9, 17);\n  compare_and_swap(x, 25, 33);\n  compare_and_swap(x, 41, 49);\n  compare_and_swap(x, 57, 65);\n  compare_and_swap(x, 73, 81);\n  compare_and_swap(x, 5, 69);\n  compare_and_swap(x, 37, 69);\n  compare_and_swap(x, 21, 37);\n  compare_and_swap(x, 53, 69);\n  compare_and_swap(x, 13, 77);\n  compare_and_swap(x, 45, 77);\n  compare_and_swap(x, 29, 45);\n  compare_and_swap(x, 61, 77);\n  compare_and_swap(x, 13, 21);\n  compare_and_swap(x, 29, 37);\n  compare_and_swap(x, 45, 53);\n  compare_and_swap(x, 61, 69);\n  compare_and_swap(x, 5, 9);\n  compare_and_swap(x, 13, 17);\n  compare_and_swap(x, 21, 25);\n  compare_and_swap(x, 29, 33);\n  compare_and_swap(x, 37, 41);\n  compare_and_swap(x, 45, 49);\n  compare_and_swap(x, 53, 57);\n  compare_and_swap(x, 61, 65);\n  compare_and_swap(x, 69, 73);\n  compare_and_swap(x, 77, 81);\n  compare_and_swap(x, 3, 67);\n  compare_and_swap(x, 35, 67);\n  compare_and_swap(x, 19, 83);\n  compare_and_swap(x, 51, 83);\n  compare_and_swap(x, 19, 35);\n  compare_and_swap(x, 51, 67);\n  compare_and_swap(x, 11, 75);\n  compare_and_swap(x, 43, 75);\n  compare_and_swap(x, 27, 43);\n  compare_and_swap(x, 59, 75);\n  compare_and_swap(x, 11, 19);\n  compare_and_swap(x, 27, 35);\n  compare_and_swap(x, 43, 51);\n  compare_and_swap(x, 59, 67);\n  compare_and_swap(x, 75, 83);\n  compare_and_swap(x, 7, 71);\n  compare_and_swap(x, 39, 71);\n  compare_and_swap(x, 23, 39);\n  compare_and_swap(x, 55, 71);\n  compare_and_swap(x, 15, 79);\n  compare_and_swap(x, 47, 79);\n  compare_and_swap(x, 31, 47);\n  compare_and_swap(x, 63, 79);\n  compare_and_swap(x, 15, 23);\n  compare_and_swap(x, 31, 39);\n  compare_and_swap(x, 47, 55);\n  compare_and_swap(x, 63, 71);\n  compare_and_swap(x, 7, 11);\n  compare_and_swap(x, 15, 19);\n  compare_and_swap(x, 23, 27);\n  compare_and_swap(x, 31, 35);\n  compare_and_swap(x, 39, 43);\n  compare_and_swap(x, 47, 51);\n  compare_and_swap(x, 55, 59);\n  compare_and_swap(x, 63, 67);\n  compare_and_swap(x, 71, 75);\n  compare_and_swap(x, 79, 83);\n  compare_and_swap(x, 3, 5);\n  compare_and_swap(x, 7, 9);\n  compare_and_swap(x, 11, 13);\n  compare_and_swap(x, 15, 17);\n  compare_and_swap(x, 19, 21);\n  compare_and_swap(x, 23, 25);\n  compare_and_swap(x, 27, 29);\n  compare_and_swap(x, 31, 33);\n  compare_and_swap(x, 35, 37);\n  compare_and_swap(x, 39, 41);\n  compare_and_swap(x, 43, 45);\n  compare_and_swap(x, 47, 49);\n  compare_and_swap(x, 51, 53);\n  compare_and_swap(x, 55, 57);\n  compare_and_swap(x, 59, 61);\n  compare_and_swap(x, 63, 65);\n  compare_and_swap(x, 67, 69);\n  compare_and_swap(x, 71, 73);\n  compare_and_swap(x, 75, 77);\n  compare_and_swap(x, 79, 81);\n  compare_and_swap(x, 1, 2);\n  compare_and_swap(x, 3, 4);\n  compare_and_swap(x, 5, 6);\n  compare_and_swap(x, 7, 8);\n  compare_and_swap(x, 9, 10);\n  compare_and_swap(x, 11, 12);\n  compare_and_swap(x, 13, 14);\n  compare_and_swap(x, 15, 16);\n  compare_and_swap(x, 17, 18);\n  compare_and_swap(x, 19, 20);\n  compare_and_swap(x, 21, 22);\n  compare_and_swap(x, 23, 24);\n  compare_and_swap(x, 25, 26);\n  compare_and_swap(x, 27, 28);\n  compare_and_swap(x, 29, 30);\n  compare_and_swap(x, 31, 32);\n  compare_and_swap(x, 33, 34);\n  compare_and_swap(x, 35, 36);\n  compare_and_swap(x, 37, 38);\n  compare_and_swap(x, 39, 40);\n  compare_and_swap(x, 41, 42);\n  compare_and_swap(x, 43, 44);\n  compare_and_swap(x, 45, 46);\n  compare_and_swap(x, 47, 48);\n  compare_and_swap(x, 49, 50);\n  compare_and_swap(x, 51, 52);\n  compare_and_swap(x, 53, 54);\n  compare_and_swap(x, 55, 56);\n  compare_and_swap(x, 57, 58);\n  compare_and_swap(x, 59, 60);\n  compare_and_swap(x, 61, 62);\n  compare_and_swap(x, 63, 64);\n  compare_and_swap(x, 65, 66);\n  compare_and_swap(x, 67, 68);\n  compare_and_swap(x, 69, 70);\n  compare_and_swap(x, 71, 72);\n  compare_and_swap(x, 73, 74);\n  compare_and_swap(x, 75, 76);\n  compare_and_swap(x, 77, 78);\n  compare_and_swap(x, 79, 80);\n  compare_and_swap(x, 81, 82);\n}\n"
  },
  {
    "path": "src/crypto/newhope/batcher.h",
    "content": "#ifndef BATCHER_H\n#define BATCHER_H\n\n#include <stdint.h>\n\nvoid batcher84(uint16_t *x);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/cpucycles.c",
    "content": "#include \"cpucycles.h\"\n\nlong long cpucycles(void)\n{\n  unsigned long long result;\n  asm volatile(\".byte 15;.byte 49;shlq $32,%%rdx;orq %%rdx,%%rax\"\n    : \"=a\" (result) ::  \"%rdx\");\n  return result;\n}\n"
  },
  {
    "path": "src/crypto/newhope/cpucycles.h",
    "content": "#ifndef CPUCYCLES_H\n#define CPUCYCLES_H\n\nlong long cpucycles(void);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/crypto_stream_chacha20.c",
    "content": "/* Based on the public domain implemntation in\n * crypto_stream/chacha20/e/ref from http://bench.cr.yp.to/supercop.html\n * by Daniel J. Bernstein */\n\n#include <stdint.h>\n\n#define ROUNDS 20\n\ntypedef uint32_t uint32;\n\nstatic uint32 load_littleendian(const unsigned char *x)\n{\n  return\n      (uint32) (x[0]) \\\n  | (((uint32) (x[1])) << 8) \\\n  | (((uint32) (x[2])) << 16) \\\n  | (((uint32) (x[3])) << 24);\n}\n\nstatic void store_littleendian(unsigned char *x,uint32 u)\n{\n  x[0] = u; u >>= 8;\n  x[1] = u; u >>= 8;\n  x[2] = u; u >>= 8;\n  x[3] = u;\n}\n\n#define ROTATE(v,c) ((v << c) | (v >> (32-c)))\n#define XOR(v,w) ((v) ^ (w))\n#define PLUS(v,w) ((v) + (w))\n#define PLUSONE(v) (PLUS((v),1))\n\n#define QUARTERROUND(a,b,c,d) \\\n  a = PLUS(a,b); d = ROTATE(XOR(d,a),16); \\\n  c = PLUS(c,d); b = ROTATE(XOR(b,c),12); \\\n  a = PLUS(a,b); d = ROTATE(XOR(d,a), 8); \\\n  c = PLUS(c,d); b = ROTATE(XOR(b,c), 7);\n\n\nstatic int crypto_core_chacha20(\n        unsigned char *out,\n  const unsigned char *in,\n  const unsigned char *k,\n  const unsigned char *c\n)\n{\n  uint32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15;\n  uint32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15;\n  int i;\n\n  j0  = x0  = load_littleendian(c +  0);\n  j1  = x1  = load_littleendian(c +  4);\n  j2  = x2  = load_littleendian(c +  8);\n  j3  = x3  = load_littleendian(c + 12);\n  j4  = x4  = load_littleendian(k +  0);\n  j5  = x5  = load_littleendian(k +  4);\n  j6  = x6  = load_littleendian(k +  8);\n  j7  = x7  = load_littleendian(k + 12);\n  j8  = x8  = load_littleendian(k + 16);\n  j9  = x9  = load_littleendian(k + 20);\n  j10 = x10 = load_littleendian(k + 24);\n  j11 = x11 = load_littleendian(k + 28);\n  j12 = x12 = load_littleendian(in+  8);\n  j13 = x13 = load_littleendian(in+ 12);\n  j14 = x14 = load_littleendian(in+  0);\n  j15 = x15 = load_littleendian(in+  4);\n\n  for (i = ROUNDS;i > 0;i -= 2) {\n    QUARTERROUND(x0, x4, x8,x12);\n    QUARTERROUND(x1, x5, x9,x13);\n    QUARTERROUND(x2, x6,x10,x14);\n    QUARTERROUND(x3, x7,x11,x15);\n    QUARTERROUND(x0, x5,x10,x15);\n    QUARTERROUND(x1, x6,x11,x12);\n    QUARTERROUND(x2, x7, x8,x13);\n    QUARTERROUND(x3, x4, x9,x14);\n  }\n\n  x0 += j0;\n  x1 += j1;\n  x2 += j2;\n  x3 += j3;\n  x4 += j4;\n  x5 += j5;\n  x6 += j6;\n  x7 += j7;\n  x8 += j8;\n  x9 += j9;\n  x10 += j10;\n  x11 += j11;\n  x12 += j12;\n  x13 += j13;\n  x14 += j14;\n  x15 += j15;\n\n  store_littleendian(out + 0,x0);\n  store_littleendian(out + 4,x1);\n  store_littleendian(out + 8,x2);\n  store_littleendian(out + 12,x3);\n  store_littleendian(out + 16,x4);\n  store_littleendian(out + 20,x5);\n  store_littleendian(out + 24,x6);\n  store_littleendian(out + 28,x7);\n  store_littleendian(out + 32,x8);\n  store_littleendian(out + 36,x9);\n  store_littleendian(out + 40,x10);\n  store_littleendian(out + 44,x11);\n  store_littleendian(out + 48,x12);\n  store_littleendian(out + 52,x13);\n  store_littleendian(out + 56,x14);\n  store_littleendian(out + 60,x15);\n\n  return 0;\n}\n\nstatic const unsigned char sigma[16] = \"expand 32-byte k\";\n\nint crypto_stream_chacha20(unsigned char *c,unsigned long long clen, const unsigned char *n, const unsigned char *k)\n{\n  unsigned char in[16];\n  unsigned char block[64];\n  unsigned char kcopy[32];\n  unsigned long long i;\n  unsigned int u;\n\n  if (!clen) return 0;\n\n  for (i = 0;i < 32;++i) kcopy[i] = k[i];\n  for (i = 0;i < 8;++i) in[i] = n[i];\n  for (i = 8;i < 16;++i) in[i] = 0;\n\n  while (clen >= 64) {\n    crypto_core_chacha20(c,in,kcopy,sigma);\n\n    u = 1;\n    for (i = 8;i < 16;++i) {\n      u += (unsigned int) in[i];\n      in[i] = u;\n      u >>= 8;\n    }\n\n    clen -= 64;\n    c += 64;\n  }\n\n  if (clen) {\n    crypto_core_chacha20(block,in,kcopy,sigma);\n    for (i = 0;i < clen;++i) c[i] = block[i];\n  }\n  return 0;\n}\n"
  },
  {
    "path": "src/crypto/newhope/crypto_stream_chacha20.h",
    "content": "#ifndef CRYPTO_STREAM_CHACHA20\n#define CRYPTO_STREAM_CHACHA20\n\nint crypto_stream_chacha20(unsigned char *c,unsigned long long clen, const unsigned char *n, const unsigned char *k);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/error_correction.c",
    "content": "#include \"error_correction.h\"\n\n//See paper for details on the error reconciliation\n\nstatic int32_t abs(int32_t v)\n{\n  int32_t mask = v >> 31;\n  return (v ^ mask) - mask;\n}\n\n\nstatic int32_t f(int32_t *v0, int32_t *v1, uint32_t x)\n{\n  int32_t xit, t, r, b;\n  \n  // Next 6 lines compute t = x/PARAM_Q;\n  b = x*2730;\n  t = b >> 25;\n  b = x - t*12289;\n  b = 12288 - b;\n  b >>= 31;\n  t -= b;\n\n  r = t & 1;\n  xit = (t>>1);\n  *v0 = xit+r; // v0 = round(x/(2*PARAM_Q))\n\n  t -= 1;\n  r = t & 1;\n  *v1 = (t>>1)+r;\n\n  return abs(x-((*v0)*2*PARAM_Q));\n}\n\nstatic int32_t g(int32_t x)\n{\n  int32_t t,c,b;\n\n  // Next 6 lines compute t = x/(4*PARAM_Q);\n  b = x*2730;\n  t = b >> 27;\n  b = x - t*49156;\n  b = 49155 - b;\n  b >>= 31;\n  t -= b;\n\n  c = t & 1;\n  t = (t >> 1) + c; // t = round(x/(8*PARAM_Q))\n\n  t *= 8*PARAM_Q;\n\n  return abs(t - x);\n}\n\n\nstatic int16_t LDDecode(int32_t xi0, int32_t xi1, int32_t xi2, int32_t xi3)\n{\n  int32_t t;\n\n  t  = g(xi0);\n  t += g(xi1);\n  t += g(xi2);\n  t += g(xi3);\n\n  t -= 8*PARAM_Q;\n  t >>= 31;\n  return t&1;\n}\n\n\nvoid helprec(poly *c, const poly *v, const unsigned char *seed, unsigned char nonce)\n{\n  int32_t v0[4], v1[4], v_tmp[4], k;\n  unsigned char rbit;\n  unsigned char rand[32];\n  unsigned char n[8];\n  int i;\n\n  for(i=0;i<7;i++)\n    n[i] = 0;\n  n[7] = nonce;\n\n  crypto_stream_chacha20(rand,32,n,seed);\n \n  for(i=0; i<256; i++)\n  {\n    rbit = (rand[i>>3] >> (i&7)) & 1;\n\n    k  = f(v0+0, v1+0, 8*v->coeffs[  0+i] + 4*rbit);\n    k += f(v0+1, v1+1, 8*v->coeffs[256+i] + 4*rbit);\n    k += f(v0+2, v1+2, 8*v->coeffs[512+i] + 4*rbit);\n    k += f(v0+3, v1+3, 8*v->coeffs[768+i] + 4*rbit);\n\n    k = (2*PARAM_Q-1-k) >> 31;\n\n    v_tmp[0] = ((~k) & v0[0]) ^ (k & v1[0]);\n    v_tmp[1] = ((~k) & v0[1]) ^ (k & v1[1]);\n    v_tmp[2] = ((~k) & v0[2]) ^ (k & v1[2]);\n    v_tmp[3] = ((~k) & v0[3]) ^ (k & v1[3]);\n\n    c->coeffs[  0+i] = (v_tmp[0] -   v_tmp[3]) & 3;  \n    c->coeffs[256+i] = (v_tmp[1] -   v_tmp[3]) & 3;\n    c->coeffs[512+i] = (v_tmp[2] -   v_tmp[3]) & 3;\n    c->coeffs[768+i] = (   -k    + 2*v_tmp[3]) & 3;\n  }\n}\n\n\nvoid rec(unsigned char *key, const poly *v, const poly *c)\n{\n  int i;\n  int32_t tmp[4];\n\n  for(i=0;i<32;i++)\n    key[i] = 0;\n\n  for(i=0; i<256; i++)\n  {\n    tmp[0] = 16*PARAM_Q + 8*(int32_t)v->coeffs[  0+i] - PARAM_Q * (2*c->coeffs[  0+i]+c->coeffs[768+i]);\n    tmp[1] = 16*PARAM_Q + 8*(int32_t)v->coeffs[256+i] - PARAM_Q * (2*c->coeffs[256+i]+c->coeffs[768+i]);\n    tmp[2] = 16*PARAM_Q + 8*(int32_t)v->coeffs[512+i] - PARAM_Q * (2*c->coeffs[512+i]+c->coeffs[768+i]);\n    tmp[3] = 16*PARAM_Q + 8*(int32_t)v->coeffs[768+i] - PARAM_Q * (              c->coeffs[768+i]);\n\n    key[i>>3] |= LDDecode(tmp[0], tmp[1], tmp[2], tmp[3]) << (i & 7);\n  }\n}\n"
  },
  {
    "path": "src/crypto/newhope/error_correction.h",
    "content": "#ifndef ERROR_CORRECTION_H\n#define ERROR_CORRECTION_H\n\n#include \"inttypes.h\"\n#include \"params.h\"\n#include \"randombytes.h\"\n#include \"crypto_stream_chacha20.h\"\n#include \"math.h\"\n#include \"poly.h\"\n#include <stdio.h>\n\nvoid helprec(poly *c, const poly *v, const unsigned char *seed, unsigned char nonce);\nvoid rec(unsigned char *key, const poly *v, const poly *c);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/fips202.c",
    "content": "/* Based on the public domain implementation in\n * crypto_hash/keccakc512/simple/ from http://bench.cr.yp.to/supercop.html\n * by Ronny Van Keer \n * and the public domain \"TweetFips202\" implementation\n * from https://twitter.com/tweetfips202\n * by Gilles Van Assche, Daniel J. Bernstein, and Peter Schwabe */\n\n#include <stdint.h>\n#include <assert.h>\n#include \"fips202.h\"\n\n#define NROUNDS 24\n#define ROL(a, offset) ((a << offset) ^ (a >> (64-offset)))\n\nstatic uint64_t load64(const unsigned char *x)\n{\n  unsigned long long r = 0, i;\n\n  for (i = 0; i < 8; ++i) {\n    r |= (unsigned long long)x[i] << 8 * i;\n  }\n  return r;\n}\n\nstatic void store64(uint8_t *x, uint64_t u)\n{\n  unsigned int i;\n\n  for(i=0; i<8; ++i) {\n    x[i] = u;\n    u >>= 8;\n  }\n}\n\nstatic const uint64_t KeccakF_RoundConstants[NROUNDS] = \n{\n    (uint64_t)0x0000000000000001ULL,\n    (uint64_t)0x0000000000008082ULL,\n    (uint64_t)0x800000000000808aULL,\n    (uint64_t)0x8000000080008000ULL,\n    (uint64_t)0x000000000000808bULL,\n    (uint64_t)0x0000000080000001ULL,\n    (uint64_t)0x8000000080008081ULL,\n    (uint64_t)0x8000000000008009ULL,\n    (uint64_t)0x000000000000008aULL,\n    (uint64_t)0x0000000000000088ULL,\n    (uint64_t)0x0000000080008009ULL,\n    (uint64_t)0x000000008000000aULL,\n    (uint64_t)0x000000008000808bULL,\n    (uint64_t)0x800000000000008bULL,\n    (uint64_t)0x8000000000008089ULL,\n    (uint64_t)0x8000000000008003ULL,\n    (uint64_t)0x8000000000008002ULL,\n    (uint64_t)0x8000000000000080ULL,\n    (uint64_t)0x000000000000800aULL,\n    (uint64_t)0x800000008000000aULL,\n    (uint64_t)0x8000000080008081ULL,\n    (uint64_t)0x8000000000008080ULL,\n    (uint64_t)0x0000000080000001ULL,\n    (uint64_t)0x8000000080008008ULL\n};\n\nvoid KeccakF1600_StatePermute(uint64_t * state)\n{\n  int round;\n\n        uint64_t Aba, Abe, Abi, Abo, Abu;\n        uint64_t Aga, Age, Agi, Ago, Agu;\n        uint64_t Aka, Ake, Aki, Ako, Aku;\n        uint64_t Ama, Ame, Ami, Amo, Amu;\n        uint64_t Asa, Ase, Asi, Aso, Asu;\n        uint64_t BCa, BCe, BCi, BCo, BCu;\n        uint64_t Da, De, Di, Do, Du;\n        uint64_t Eba, Ebe, Ebi, Ebo, Ebu;\n        uint64_t Ega, Ege, Egi, Ego, Egu;\n        uint64_t Eka, Eke, Eki, Eko, Eku;\n        uint64_t Ema, Eme, Emi, Emo, Emu;\n        uint64_t Esa, Ese, Esi, Eso, Esu;\n\n        //copyFromState(A, state)\n        Aba = state[ 0];\n        Abe = state[ 1];\n        Abi = state[ 2];\n        Abo = state[ 3];\n        Abu = state[ 4];\n        Aga = state[ 5];\n        Age = state[ 6];\n        Agi = state[ 7];\n        Ago = state[ 8];\n        Agu = state[ 9];\n        Aka = state[10];\n        Ake = state[11];\n        Aki = state[12];\n        Ako = state[13];\n        Aku = state[14];\n        Ama = state[15];\n        Ame = state[16];\n        Ami = state[17];\n        Amo = state[18];\n        Amu = state[19];\n        Asa = state[20];\n        Ase = state[21];\n        Asi = state[22];\n        Aso = state[23];\n        Asu = state[24];\n\n        for( round = 0; round < NROUNDS; round += 2 )\n        {\n            //    prepareTheta\n            BCa = Aba^Aga^Aka^Ama^Asa;\n            BCe = Abe^Age^Ake^Ame^Ase;\n            BCi = Abi^Agi^Aki^Ami^Asi;\n            BCo = Abo^Ago^Ako^Amo^Aso;\n            BCu = Abu^Agu^Aku^Amu^Asu;\n\n            //thetaRhoPiChiIotaPrepareTheta(round  , A, E)\n            Da = BCu^ROL(BCe, 1);\n            De = BCa^ROL(BCi, 1);\n            Di = BCe^ROL(BCo, 1);\n            Do = BCi^ROL(BCu, 1);\n            Du = BCo^ROL(BCa, 1);\n\n            Aba ^= Da;\n            BCa = Aba;\n            Age ^= De;\n            BCe = ROL(Age, 44);\n            Aki ^= Di;\n            BCi = ROL(Aki, 43);\n            Amo ^= Do;\n            BCo = ROL(Amo, 21);\n            Asu ^= Du;\n            BCu = ROL(Asu, 14);\n            Eba =   BCa ^((~BCe)&  BCi );\n            Eba ^= (uint64_t)KeccakF_RoundConstants[round];\n            Ebe =   BCe ^((~BCi)&  BCo );\n            Ebi =   BCi ^((~BCo)&  BCu );\n            Ebo =   BCo ^((~BCu)&  BCa );\n            Ebu =   BCu ^((~BCa)&  BCe );\n\n            Abo ^= Do;\n            BCa = ROL(Abo, 28);\n            Agu ^= Du;\n            BCe = ROL(Agu, 20);\n            Aka ^= Da;\n            BCi = ROL(Aka,  3);\n            Ame ^= De;\n            BCo = ROL(Ame, 45);\n            Asi ^= Di;\n            BCu = ROL(Asi, 61);\n            Ega =   BCa ^((~BCe)&  BCi );\n            Ege =   BCe ^((~BCi)&  BCo );\n            Egi =   BCi ^((~BCo)&  BCu );\n            Ego =   BCo ^((~BCu)&  BCa );\n            Egu =   BCu ^((~BCa)&  BCe );\n\n            Abe ^= De;\n            BCa = ROL(Abe,  1);\n            Agi ^= Di;\n            BCe = ROL(Agi,  6);\n            Ako ^= Do;\n            BCi = ROL(Ako, 25);\n            Amu ^= Du;\n            BCo = ROL(Amu,  8);\n            Asa ^= Da;\n            BCu = ROL(Asa, 18);\n            Eka =   BCa ^((~BCe)&  BCi );\n            Eke =   BCe ^((~BCi)&  BCo );\n            Eki =   BCi ^((~BCo)&  BCu );\n            Eko =   BCo ^((~BCu)&  BCa );\n            Eku =   BCu ^((~BCa)&  BCe );\n\n            Abu ^= Du;\n            BCa = ROL(Abu, 27);\n            Aga ^= Da;\n            BCe = ROL(Aga, 36);\n            Ake ^= De;\n            BCi = ROL(Ake, 10);\n            Ami ^= Di;\n            BCo = ROL(Ami, 15);\n            Aso ^= Do;\n            BCu = ROL(Aso, 56);\n            Ema =   BCa ^((~BCe)&  BCi );\n            Eme =   BCe ^((~BCi)&  BCo );\n            Emi =   BCi ^((~BCo)&  BCu );\n            Emo =   BCo ^((~BCu)&  BCa );\n            Emu =   BCu ^((~BCa)&  BCe );\n\n            Abi ^= Di;\n            BCa = ROL(Abi, 62);\n            Ago ^= Do;\n            BCe = ROL(Ago, 55);\n            Aku ^= Du;\n            BCi = ROL(Aku, 39);\n            Ama ^= Da;\n            BCo = ROL(Ama, 41);\n            Ase ^= De;\n            BCu = ROL(Ase,  2);\n            Esa =   BCa ^((~BCe)&  BCi );\n            Ese =   BCe ^((~BCi)&  BCo );\n            Esi =   BCi ^((~BCo)&  BCu );\n            Eso =   BCo ^((~BCu)&  BCa );\n            Esu =   BCu ^((~BCa)&  BCe );\n\n            //    prepareTheta\n            BCa = Eba^Ega^Eka^Ema^Esa;\n            BCe = Ebe^Ege^Eke^Eme^Ese;\n            BCi = Ebi^Egi^Eki^Emi^Esi;\n            BCo = Ebo^Ego^Eko^Emo^Eso;\n            BCu = Ebu^Egu^Eku^Emu^Esu;\n\n            //thetaRhoPiChiIotaPrepareTheta(round+1, E, A)\n            Da = BCu^ROL(BCe, 1);\n            De = BCa^ROL(BCi, 1);\n            Di = BCe^ROL(BCo, 1);\n            Do = BCi^ROL(BCu, 1);\n            Du = BCo^ROL(BCa, 1);\n\n            Eba ^= Da;\n            BCa = Eba;\n            Ege ^= De;\n            BCe = ROL(Ege, 44);\n            Eki ^= Di;\n            BCi = ROL(Eki, 43);\n            Emo ^= Do;\n            BCo = ROL(Emo, 21);\n            Esu ^= Du;\n            BCu = ROL(Esu, 14);\n            Aba =   BCa ^((~BCe)&  BCi );\n            Aba ^= (uint64_t)KeccakF_RoundConstants[round+1];\n            Abe =   BCe ^((~BCi)&  BCo );\n            Abi =   BCi ^((~BCo)&  BCu );\n            Abo =   BCo ^((~BCu)&  BCa );\n            Abu =   BCu ^((~BCa)&  BCe );\n\n            Ebo ^= Do;\n            BCa = ROL(Ebo, 28);\n            Egu ^= Du;\n            BCe = ROL(Egu, 20);\n            Eka ^= Da;\n            BCi = ROL(Eka, 3);\n            Eme ^= De;\n            BCo = ROL(Eme, 45);\n            Esi ^= Di;\n            BCu = ROL(Esi, 61);\n            Aga =   BCa ^((~BCe)&  BCi );\n            Age =   BCe ^((~BCi)&  BCo );\n            Agi =   BCi ^((~BCo)&  BCu );\n            Ago =   BCo ^((~BCu)&  BCa );\n            Agu =   BCu ^((~BCa)&  BCe );\n\n            Ebe ^= De;\n            BCa = ROL(Ebe, 1);\n            Egi ^= Di;\n            BCe = ROL(Egi, 6);\n            Eko ^= Do;\n            BCi = ROL(Eko, 25);\n            Emu ^= Du;\n            BCo = ROL(Emu, 8);\n            Esa ^= Da;\n            BCu = ROL(Esa, 18);\n            Aka =   BCa ^((~BCe)&  BCi );\n            Ake =   BCe ^((~BCi)&  BCo );\n            Aki =   BCi ^((~BCo)&  BCu );\n            Ako =   BCo ^((~BCu)&  BCa );\n            Aku =   BCu ^((~BCa)&  BCe );\n\n            Ebu ^= Du;\n            BCa = ROL(Ebu, 27);\n            Ega ^= Da;\n            BCe = ROL(Ega, 36);\n            Eke ^= De;\n            BCi = ROL(Eke, 10);\n            Emi ^= Di;\n            BCo = ROL(Emi, 15);\n            Eso ^= Do;\n            BCu = ROL(Eso, 56);\n            Ama =   BCa ^((~BCe)&  BCi );\n            Ame =   BCe ^((~BCi)&  BCo );\n            Ami =   BCi ^((~BCo)&  BCu );\n            Amo =   BCo ^((~BCu)&  BCa );\n            Amu =   BCu ^((~BCa)&  BCe );\n\n            Ebi ^= Di;\n            BCa = ROL(Ebi, 62);\n            Ego ^= Do;\n            BCe = ROL(Ego, 55);\n            Eku ^= Du;\n            BCi = ROL(Eku, 39);\n            Ema ^= Da;\n            BCo = ROL(Ema, 41);\n            Ese ^= De;\n            BCu = ROL(Ese, 2);\n            Asa =   BCa ^((~BCe)&  BCi );\n            Ase =   BCe ^((~BCi)&  BCo );\n            Asi =   BCi ^((~BCo)&  BCu );\n            Aso =   BCo ^((~BCu)&  BCa );\n            Asu =   BCu ^((~BCa)&  BCe );\n        }\n\n        //copyToState(state, A)\n        state[ 0] = Aba;\n        state[ 1] = Abe;\n        state[ 2] = Abi;\n        state[ 3] = Abo;\n        state[ 4] = Abu;\n        state[ 5] = Aga;\n        state[ 6] = Age;\n        state[ 7] = Agi;\n        state[ 8] = Ago;\n        state[ 9] = Agu;\n        state[10] = Aka;\n        state[11] = Ake;\n        state[12] = Aki;\n        state[13] = Ako;\n        state[14] = Aku;\n        state[15] = Ama;\n        state[16] = Ame;\n        state[17] = Ami;\n        state[18] = Amo;\n        state[19] = Amu;\n        state[20] = Asa;\n        state[21] = Ase;\n        state[22] = Asi;\n        state[23] = Aso;\n        state[24] = Asu;\n\n        #undef    round\n}\n\n#include <string.h>\n#define MIN(a, b) ((a) < (b) ? (a) : (b))\n\n\nstatic void keccak_absorb(uint64_t *s,\n                          unsigned int r,\n                          const unsigned char *m, unsigned long long int mlen,\n                          unsigned char p)\n{\n  unsigned long long i;\n  unsigned char t[200];\n\n  for (i = 0; i < 25; ++i)\n    s[i] = 0;\n  \n  while (mlen >= r) \n  {\n    for (i = 0; i < r / 8; ++i)\n      s[i] ^= load64(m + 8 * i);\n    \n    KeccakF1600_StatePermute(s);\n    mlen -= r;\n    m += r;\n  }\n\n  for (i = 0; i < r; ++i)\n    t[i] = 0;\n  for (i = 0; i < mlen; ++i)\n    t[i] = m[i];\n  t[i] = p;\n  t[r - 1] |= 128;\n  for (i = 0; i < r / 8; ++i)\n    s[i] ^= load64(t + 8 * i);\n}\n\n\nstatic void keccak_squeezeblocks(unsigned char *h, unsigned long long int nblocks,\n                                 uint64_t *s, \n                                 unsigned int r)\n{\n  unsigned int i;\n  while(nblocks > 0) \n  {\n    KeccakF1600_StatePermute(s);\n    for(i=0;i<(r>>3);i++)\n    {\n      store64(h+8*i, s[i]);\n    }\n    h += r;\n    nblocks--;\n  }\n}\n\n\nvoid shake128_absorb(uint64_t *s, const unsigned char *input, unsigned int inputByteLen)\n{\n  keccak_absorb(s, SHAKE128_RATE, input, inputByteLen, 0x1F);\n}\n\n\nvoid shake128_squeezeblocks(unsigned char *output, unsigned long long nblocks, uint64_t *s)\n{\n  keccak_squeezeblocks(output, nblocks, s, SHAKE128_RATE);\n}\n\n\n/*\nvoid shake128(unsigned char *output, unsigned int outputByteLen, const unsigned char *input, unsigned int inputByteLen)\n{\n  uint64_t s[25];\n  assert(!(outputByteLen%SHAKE128_RATE));\n  shake128_absorb(s, input, inputByteLen);\n  shake128_squeezeblocks(output, outputByteLen/SHAKE128_RATE, s);\n}\n*/\n\n\nvoid sha3256(unsigned char *output, const unsigned char *input, unsigned int inputByteLen)\n{\n  uint64_t s[25];\n  unsigned char t[SHA3_256_RATE];\n  int i;\n\n  keccak_absorb(s, SHA3_256_RATE, input, inputByteLen, 0x06);\n  keccak_squeezeblocks(t, 1, s, SHA3_256_RATE);\n  for(i=0;i<32;i++)\n    output[i] = t[i];\n}\n"
  },
  {
    "path": "src/crypto/newhope/fips202.h",
    "content": "#ifndef FIPS202_H\n#define FIPS202_H\n\n#define SHAKE128_RATE 168\n#define SHA3_256_RATE 136\n\nvoid shake128_absorb(uint64_t *s, const unsigned char *input, unsigned int inputByteLen);\nvoid shake128_squeezeblocks(unsigned char *output, unsigned long long nblocks, uint64_t *s);\nvoid shake128(unsigned char *output, unsigned int outputByteLen, const unsigned char *input, unsigned int inputByteLen);\nvoid sha3256(unsigned char *output, const unsigned char *input, unsigned int inputByteLen);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/newhope.c",
    "content": "#include \"poly.h\"\n#include \"randombytes.h\"\n#include \"error_correction.h\"\n#include \"fips202.h\"\n#include <string.h>\n\nstatic void encode_a(unsigned char *r, const poly *pk, const unsigned char *seed)\n{\n  int i;\n  poly_tobytes(r, pk);\n  for(i=0;i<NEWHOPE_SEEDBYTES;i++)\n    r[POLY_BYTES+i] = seed[i];\n}\n\nstatic void decode_a(poly *pk, unsigned char *seed, const unsigned char *r)\n{\n  int i;\n  poly_frombytes(pk, r);\n  for(i=0;i<NEWHOPE_SEEDBYTES;i++)\n    seed[i] = r[POLY_BYTES+i];\n}\n\nstatic void encode_b(unsigned char *r, const poly *b, const poly *c)\n{\n  int i;\n  poly_tobytes(r,b);\n  for(i=0;i<PARAM_N/4;i++)\n    r[POLY_BYTES+i] = c->coeffs[4*i] | (c->coeffs[4*i+1] << 2) | (c->coeffs[4*i+2] << 4) | (c->coeffs[4*i+3] << 6);\n}\n\nstatic void decode_b(poly *b, poly *c, const unsigned char *r)\n{\n  int i;\n  poly_frombytes(b, r);\n  for(i=0;i<PARAM_N/4;i++)\n  {\n    c->coeffs[4*i+0] =  r[POLY_BYTES+i]       & 0x03;\n    c->coeffs[4*i+1] = (r[POLY_BYTES+i] >> 2) & 0x03;\n    c->coeffs[4*i+2] = (r[POLY_BYTES+i] >> 4) & 0x03;\n    c->coeffs[4*i+3] = (r[POLY_BYTES+i] >> 6);\n  }\n}\n\nstatic void gen_a(poly *a, const unsigned char *seed)\n{\n    poly_uniform(a,seed);\n}\n\n\n// API FUNCTIONS \n\nvoid newhope_keygen(unsigned char *send, poly *sk, const unsigned char *random_data)\n{\n  poly a, e, r, pk;\n  unsigned char seed[NEWHOPE_SEEDBYTES];\n  unsigned char noiseseed[32];\n\n  sha3256(seed, random_data, NEWHOPE_SEEDBYTES);\n  memcpy(noiseseed, random_data + NEWHOPE_SEEDBYTES, 32);\n\n  gen_a(&a, seed);\n\n  poly_getnoise(sk,noiseseed,0);\n  poly_ntt(sk);\n  \n  poly_getnoise(&e,noiseseed,1);\n  poly_ntt(&e);\n\n  poly_pointwise(&r,sk,&a);\n  poly_add(&pk,&e,&r);\n\n  encode_a(send, &pk, seed);\n}\n\n\nvoid newhope_sharedb(unsigned char *sharedkey, unsigned char *send, const unsigned char *received, const unsigned char *random_data)\n{\n  poly sp, ep, v, a, pka, c, epp, bp;\n  unsigned char seed[NEWHOPE_SEEDBYTES];\n  unsigned char noiseseed[32];\n  \n  memcpy(noiseseed, random_data, 32);\n\n  decode_a(&pka, seed, received);\n  gen_a(&a, seed);\n\n  poly_getnoise(&sp,noiseseed,0);\n  poly_ntt(&sp);\n  poly_getnoise(&ep,noiseseed,1);\n  poly_ntt(&ep);\n\n  poly_pointwise(&bp, &a, &sp);\n  poly_add(&bp, &bp, &ep);\n  \n  poly_pointwise(&v, &pka, &sp);\n  poly_invntt(&v);\n\n  poly_getnoise(&epp,noiseseed,2);\n  poly_add(&v, &v, &epp);\n\n  helprec(&c, &v, noiseseed, 3);\n\n  encode_b(send, &bp, &c);\n  \n  rec(sharedkey, &v, &c);\n\n#ifndef STATISTICAL_TEST \n  sha3256(sharedkey, sharedkey, 32);\n#endif\n}\n\n\nvoid newhope_shareda(unsigned char *sharedkey, const poly *sk, const unsigned char *received)\n{\n  poly v,bp, c;\n\n  decode_b(&bp, &c, received);\n\n  poly_pointwise(&v,sk,&bp);\n  poly_invntt(&v);\n \n  rec(sharedkey, &v, &c);\n\n#ifndef STATISTICAL_TEST \n  sha3256(sharedkey, sharedkey, 32); \n#endif\n}\n"
  },
  {
    "path": "src/crypto/newhope/newhope.h",
    "content": "#ifndef NEWHOPE_H\n#define NEWHOPE_H\n\n#include \"poly.h\"\n#include \"randombytes.h\"\n#include \"crypto_stream_chacha20.h\"\n#include \"error_correction.h\"\n#include <math.h>\n#include <stdio.h>\n\nvoid newhope_keygen(unsigned char *send, poly *sk, const unsigned char *random_data);\nvoid newhope_sharedb(unsigned char *sharedkey, unsigned char *send, const unsigned char *received, const unsigned char *random_data);\nvoid newhope_shareda(unsigned char *sharedkey, const poly *ska, const unsigned char *received);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/ntt.c",
    "content": "#include \"inttypes.h\"\n#include \"ntt.h\"\n#include \"params.h\"\n#include \"reduce.h\"\n\nstatic uint16_t bitrev_table[PARAM_N] = {\n  0,512,256,768,128,640,384,896,64,576,320,832,192,704,448,960,32,544,288,800,160,672,416,928,96,608,352,864,224,736,480,992,\n  16,528,272,784,144,656,400,912,80,592,336,848,208,720,464,976,48,560,304,816,176,688,432,944,112,624,368,880,240,752,496,1008,\n  8,520,264,776,136,648,392,904,72,584,328,840,200,712,456,968,40,552,296,808,168,680,424,936,104,616,360,872,232,744,488,1000,\n  24,536,280,792,152,664,408,920,88,600,344,856,216,728,472,984,56,568,312,824,184,696,440,952,120,632,376,888,248,760,504,1016,\n  4,516,260,772,132,644,388,900,68,580,324,836,196,708,452,964,36,548,292,804,164,676,420,932,100,612,356,868,228,740,484,996,\n  20,532,276,788,148,660,404,916,84,596,340,852,212,724,468,980,52,564,308,820,180,692,436,948,116,628,372,884,244,756,500,1012,\n  12,524,268,780,140,652,396,908,76,588,332,844,204,716,460,972,44,556,300,812,172,684,428,940,108,620,364,876,236,748,492,1004,\n  28,540,284,796,156,668,412,924,92,604,348,860,220,732,476,988,60,572,316,828,188,700,444,956,124,636,380,892,252,764,508,1020,\n  2,514,258,770,130,642,386,898,66,578,322,834,194,706,450,962,34,546,290,802,162,674,418,930,98,610,354,866,226,738,482,994,\n  18,530,274,786,146,658,402,914,82,594,338,850,210,722,466,978,50,562,306,818,178,690,434,946,114,626,370,882,242,754,498,1010,\n  10,522,266,778,138,650,394,906,74,586,330,842,202,714,458,970,42,554,298,810,170,682,426,938,106,618,362,874,234,746,490,1002,\n  26,538,282,794,154,666,410,922,90,602,346,858,218,730,474,986,58,570,314,826,186,698,442,954,122,634,378,890,250,762,506,1018,\n  6,518,262,774,134,646,390,902,70,582,326,838,198,710,454,966,38,550,294,806,166,678,422,934,102,614,358,870,230,742,486,998,\n  22,534,278,790,150,662,406,918,86,598,342,854,214,726,470,982,54,566,310,822,182,694,438,950,118,630,374,886,246,758,502,1014,\n  14,526,270,782,142,654,398,910,78,590,334,846,206,718,462,974,46,558,302,814,174,686,430,942,110,622,366,878,238,750,494,1006,\n  30,542,286,798,158,670,414,926,94,606,350,862,222,734,478,990,62,574,318,830,190,702,446,958,126,638,382,894,254,766,510,1022,\n  1,513,257,769,129,641,385,897,65,577,321,833,193,705,449,961,33,545,289,801,161,673,417,929,97,609,353,865,225,737,481,993,\n  17,529,273,785,145,657,401,913,81,593,337,849,209,721,465,977,49,561,305,817,177,689,433,945,113,625,369,881,241,753,497,1009,\n  9,521,265,777,137,649,393,905,73,585,329,841,201,713,457,969,41,553,297,809,169,681,425,937,105,617,361,873,233,745,489,1001,\n  25,537,281,793,153,665,409,921,89,601,345,857,217,729,473,985,57,569,313,825,185,697,441,953,121,633,377,889,249,761,505,1017,\n  5,517,261,773,133,645,389,901,69,581,325,837,197,709,453,965,37,549,293,805,165,677,421,933,101,613,357,869,229,741,485,997,\n  21,533,277,789,149,661,405,917,85,597,341,853,213,725,469,981,53,565,309,821,181,693,437,949,117,629,373,885,245,757,501,1013,\n  13,525,269,781,141,653,397,909,77,589,333,845,205,717,461,973,45,557,301,813,173,685,429,941,109,621,365,877,237,749,493,1005,\n  29,541,285,797,157,669,413,925,93,605,349,861,221,733,477,989,61,573,317,829,189,701,445,957,125,637,381,893,253,765,509,1021,\n  3,515,259,771,131,643,387,899,67,579,323,835,195,707,451,963,35,547,291,803,163,675,419,931,99,611,355,867,227,739,483,995,\n  19,531,275,787,147,659,403,915,83,595,339,851,211,723,467,979,51,563,307,819,179,691,435,947,115,627,371,883,243,755,499,1011,\n  11,523,267,779,139,651,395,907,75,587,331,843,203,715,459,971,43,555,299,811,171,683,427,939,107,619,363,875,235,747,491,1003,\n  27,539,283,795,155,667,411,923,91,603,347,859,219,731,475,987,59,571,315,827,187,699,443,955,123,635,379,891,251,763,507,1019,\n  7,519,263,775,135,647,391,903,71,583,327,839,199,711,455,967,39,551,295,807,167,679,423,935,103,615,359,871,231,743,487,999,\n  23,535,279,791,151,663,407,919,87,599,343,855,215,727,471,983,55,567,311,823,183,695,439,951,119,631,375,887,247,759,503,1015,\n  15,527,271,783,143,655,399,911,79,591,335,847,207,719,463,975,47,559,303,815,175,687,431,943,111,623,367,879,239,751,495,1007,\n  31,543,287,799,159,671,415,927,95,607,351,863,223,735,479,991,63,575,319,831,191,703,447,959,127,639,383,895,255,767,511,1023\n};\n\nvoid bitrev_vector(uint16_t* poly)\n{\n    unsigned int i,r;\n    uint16_t tmp;\n\n    for(i = 0; i < PARAM_N; i++)\n    {\n        r = bitrev_table[i];\n        if (i < r)\n        {\n          tmp = poly[i];\n          poly[i] = poly[r];\n          poly[r] = tmp;\n        }\n    }\n}\n \nvoid mul_coefficients(uint16_t* poly, const uint16_t* factors)\n{\n    unsigned int i;\n\n    for(i = 0; i < PARAM_N; i++)\n      poly[i] = montgomery_reduce((poly[i] * factors[i]));\n}\n\n\n\n/* GS_bo_to_no; omegas need to be in Montgomery domain */\nvoid ntt(uint16_t * a, const uint16_t* omega)\n{\n  int i, start, j, jTwiddle, distance;\n  uint16_t temp, W;\n\n\n  for(i=0;i<10;i+=2)\n  {\n    // Even level\n    distance = (1<<i);\n    for(start = 0; start < distance;start++)\n    {\n      jTwiddle = 0;\n      for(j=start;j<PARAM_N-1;j+=2*distance)\n      {\n        W = omega[jTwiddle++];\n        temp = a[j];\n        a[j] = (temp + a[j + distance]); // Omit reduction (be lazy)\n        a[j + distance] = montgomery_reduce((W * ((uint32_t)temp + 3*PARAM_Q - a[j + distance])));\n      }\n    }\n\n    // Odd level\n    distance <<= 1;\n    for(start = 0; start < distance;start++)\n    {\n      jTwiddle = 0;\n      for(j=start;j<PARAM_N-1;j+=2*distance)\n      {\n        W = omega[jTwiddle++];\n        temp = a[j];\n        a[j] = barrett_reduce((temp + a[j + distance]));\n        a[j + distance] = montgomery_reduce((W * ((uint32_t)temp + 3*PARAM_Q - a[j + distance])));\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/crypto/newhope/ntt.h",
    "content": "#ifndef NTT_H\n#define NTT_H\n\n#include \"inttypes.h\"\n\nextern uint16_t omegas_montgomery[];\nextern uint16_t omegas_inv_montgomery[];\n\nextern uint16_t psis_bitrev_montgomery[];\nextern uint16_t psis_inv_montgomery[];\n\nvoid bitrev_vector(uint16_t* poly);\nvoid mul_coefficients(uint16_t* poly, const uint16_t* factors);\nvoid ntt(uint16_t* poly, const uint16_t* omegas);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/params.h",
    "content": "#ifndef PARAMS_H\n#define PARAMS_H\n\n#define PARAM_N 1024\n\n#define PARAM_K 16 /* used in sampler */\n#define PARAM_Q 12289 \n\n#define POLY_BYTES 1792\n#define NEWHOPE_SEEDBYTES 32\n#define NEWHOPE_RECBYTES 256\n\n#define NEWHOPE_SENDABYTES (POLY_BYTES + NEWHOPE_SEEDBYTES)\n#define NEWHOPE_SENDBBYTES (POLY_BYTES + NEWHOPE_RECBYTES)\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/poly.c",
    "content": "#include \"poly.h\"\n#include \"ntt.h\"\n#include \"randombytes.h\"\n#include \"reduce.h\"\n#include \"fips202.h\"\n#include \"crypto_stream_chacha20.h\"\n#include \"batcher.h\"\n\nvoid poly_frombytes(poly *r, const unsigned char *a)\n{\n  int i;\n  for(i=0;i<PARAM_N/4;i++)\n  {\n    r->coeffs[4*i+0] =                               a[7*i+0]        | (((uint16_t)a[7*i+1] & 0x3f) << 8);\n    r->coeffs[4*i+1] = (a[7*i+1] >> 6) | (((uint16_t)a[7*i+2]) << 2) | (((uint16_t)a[7*i+3] & 0x0f) << 10);\n    r->coeffs[4*i+2] = (a[7*i+3] >> 4) | (((uint16_t)a[7*i+4]) << 4) | (((uint16_t)a[7*i+5] & 0x03) << 12);\n    r->coeffs[4*i+3] = (a[7*i+5] >> 2) | (((uint16_t)a[7*i+6]) << 6); \n  }\n}\n\nvoid poly_tobytes(unsigned char *r, const poly *p)\n{\n  int i;\n  uint16_t t0,t1,t2,t3,m;\n  int16_t c;\n  for(i=0;i<PARAM_N/4;i++)\n  {\n    t0 = barrett_reduce(p->coeffs[4*i+0]); //Make sure that coefficients have only 14 bits\n    t1 = barrett_reduce(p->coeffs[4*i+1]);\n    t2 = barrett_reduce(p->coeffs[4*i+2]);\n    t3 = barrett_reduce(p->coeffs[4*i+3]);\n\n    m = t0 - PARAM_Q;\n    c = m;\n    c >>= 15;\n    t0 = m ^ ((t0^m)&c); // <Make sure that coefficients are in [0,q]\n\n    m = t1 - PARAM_Q;\n    c = m;\n    c >>= 15;\n    t1 = m ^ ((t1^m)&c); // <Make sure that coefficients are in [0,q]\n\n    m = t2 - PARAM_Q;\n    c = m;\n    c >>= 15;\n    t2 = m ^ ((t2^m)&c); // <Make sure that coefficients are in [0,q]\n\n    m = t3 - PARAM_Q;\n    c = m;\n    c >>= 15;\n    t3 = m ^ ((t3^m)&c); // <Make sure that coefficients are in [0,q]\n\n    r[7*i+0] =  t0 & 0xff;\n    r[7*i+1] = (t0 >> 8) | (t1 << 6);\n    r[7*i+2] = (t1 >> 2);\n    r[7*i+3] = (t1 >> 10) | (t2 << 4);\n    r[7*i+4] = (t2 >> 4);\n    r[7*i+5] = (t2 >> 12) | (t3 << 2);\n    r[7*i+6] = (t3 >> 6);\n  }\n}\n\nstatic int discardtopoly(poly* a, unsigned char *buf, unsigned int nblocks)\n{\n  int r=0;\n  unsigned int i;\n  uint16_t x[SHAKE128_RATE*nblocks/2];\n\n  for(i=0;i<SHAKE128_RATE*nblocks/2;i++)\n    x[i] = buf[2*i] | (uint16_t)buf[2*i+1] << 8; //handle endianess\n\n  for(i=0;i<16;i++)\n  batcher84(x+i);\n\n  // Check whether we're safe:\n  for(i=1008;i<1024;i++)\n    r |= 61444 - x[i];\n  if(r >>= 31) return -1;\n\n  // If we are, copy coefficients to polynomial:\n  for(i=0;i<PARAM_N;i++)\n    a->coeffs[i] = x[i];\n  \n  return 0;\n}\n\nvoid poly_uniform(poly *a, const unsigned char *seed)\n{\n  uint64_t state[25];\n  unsigned int nblocks=16;\n  uint8_t buf[SHAKE128_RATE*nblocks];\n\n  shake128_absorb(state, seed, NEWHOPE_SEEDBYTES);\n\n  do\n  {\n    shake128_squeezeblocks((unsigned char *) buf, nblocks, state);\n  }\n  while (discardtopoly(a, buf, nblocks));\n}\n\nvoid poly_getnoise(poly *r, unsigned char *seed, unsigned char nonce)\n{\n#if PARAM_K != 16\n#error \"poly_getnoise in poly.c only supports k=16\"\n#endif\n\n  uint32_t buf[PARAM_N];\n  uint32_t t,d, a, b;\n  unsigned char n[8];\n  int i,j;\n\n  for(i=1;i<8;i++)\n    n[i] = 0;\n  n[0] = nonce;\n\n  crypto_stream_chacha20((unsigned char *)buf,4*PARAM_N,n,seed);\n\n  for(i=0;i<PARAM_N;i++)\n  {\n    t = buf[i];\n    d = 0;\n    for(j=0;j<8;j++)\n      d += (t >> j) & 0x01010101;\n    a = ((d >> 8) & 0xff) + (d & 0xff);\n    b = (d >> 24) + ((d >> 16) & 0xff);\n    r->coeffs[i] = a + PARAM_Q - b;\n  }\n}\n\nvoid poly_pointwise(poly *r, const poly *a, const poly *b)\n{\n  int i;\n  uint16_t t;\n  for(i=0;i<PARAM_N;i++)\n  {\n    t       = montgomery_reduce(3186*b->coeffs[i]); /* t is now in Montgomery domain */\n    r->coeffs[i] = montgomery_reduce(a->coeffs[i] * t); /* r->coeffs[i] is back in normal domain */\n  }\n}\n\nvoid poly_add(poly *r, const poly *a, const poly *b)\n{\n  int i;\n  for(i=0;i<PARAM_N;i++)\n    r->coeffs[i] = barrett_reduce(a->coeffs[i] + b->coeffs[i]);\n}\n\nvoid poly_ntt(poly *r)\n{\n  mul_coefficients(r->coeffs, psis_bitrev_montgomery); \n  ntt((uint16_t *)r->coeffs, omegas_montgomery);\n}\n\nvoid poly_invntt(poly *r)\n{\n  bitrev_vector(r->coeffs);\n  ntt((uint16_t *)r->coeffs, omegas_inv_montgomery);\n  mul_coefficients(r->coeffs, psis_inv_montgomery);\n}\n"
  },
  {
    "path": "src/crypto/newhope/poly.h",
    "content": "#ifndef POLY_H\n#define POLY_H\n\n#include <stdint.h>\n#include \"params.h\"\n\ntypedef struct {\n  uint16_t coeffs[PARAM_N];\n} poly __attribute__ ((aligned (32)));\n\nvoid poly_uniform(poly *a, const unsigned char *seed);\nvoid poly_getnoise(poly *r, unsigned char *seed, unsigned char nonce);\nvoid poly_add(poly *r, const poly *a, const poly *b);\n\nvoid poly_ntt(poly *r);\nvoid poly_invntt(poly *r);\nvoid poly_pointwise(poly *r, const poly *a, const poly *b);\n\nvoid poly_frombytes(poly *r, const unsigned char *a);\nvoid poly_tobytes(unsigned char *r, const poly *p);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/precomp.c",
    "content": "#include \"inttypes.h\"\n#include \"ntt.h\"\n#include \"params.h\"\n\nuint16_t omegas_montgomery[PARAM_N/2] = {4075,6974,7373,7965,3262,5079,522,2169,6364,1018,1041,8775,2344,11011,5574,1973,4536,1050,6844,3860,3818,6118,2683,1190,4789,7822,7540,6752,5456,4449,3789,12142,11973,382,3988,468,6843,5339,6196,3710,11316,1254,5435,10930,3998,10256,10367,3879,11889,1728,6137,4948,5862,6136,3643,6874,8724,654,10302,1702,7083,6760,56,3199,9987,605,11785,8076,5594,9260,6403,4782,6212,4624,9026,8689,4080,11868,6221,3602,975,8077,8851,9445,5681,3477,1105,142,241,12231,1003,3532,5009,1956,6008,11404,7377,2049,10968,12097,7591,5057,3445,4780,2920,7048,3127,8120,11279,6821,11502,8807,12138,2127,2839,3957,431,1579,6383,9784,5874,677,3336,6234,2766,1323,9115,12237,2031,6956,6413,2281,3969,3991,12133,9522,4737,10996,4774,5429,11871,3772,453,5908,2882,1805,2051,1954,11713,3963,2447,6142,8174,3030,1843,2361,12071,2908,3529,3434,3202,7796,2057,5369,11939,1512,6906,10474,11026,49,10806,5915,1489,9789,5942,10706,10431,7535,426,8974,3757,10314,9364,347,5868,9551,9634,6554,10596,9280,11566,174,2948,2503,6507,10723,11606,2459,64,3656,8455,5257,5919,7856,1747,9166,5486,9235,6065,835,3570,4240,11580,4046,10970,9139,1058,8210,11848,922,7967,1958,10211,1112,3728,4049,11130,5990,1404,325,948,11143,6190,295,11637,5766,8212,8273,2919,8527,6119,6992,8333,1360,2555,6167,1200,7105,7991,3329,9597,12121,5106,5961,10695,10327,3051,9923,4896,9326,81,3091,1000,7969,4611,726,1853,12149,4255,11112,2768,10654,1062,2294,3553,4805,2747,4846,8577,9154,1170,2319,790,11334,9275,9088,1326,5086,9094,6429,11077,10643,3504,3542,8668,9744,1479,1,8246,7143,11567,10984,4134,5736,4978,10938,5777,8961,4591,5728,6461,5023,9650,7468,949,9664,2975,11726,2744,9283,10092,5067,12171,2476,3748,11336,6522,827,9452,5374,12159,7935,3296,3949,9893,4452,10908,2525,3584,8112,8011,10616,4989,6958,11809,9447,12280,1022,11950,9821,11745,5791,5092,2089,9005,2881,3289,2013,9048,729,7901,1260,5755,4632,11955,2426,10593,1428,4890,5911,3932,9558,8830,3637,5542,145,5179,8595,3707,10530,355,3382,4231,9741,1207,9041,7012,1168,10146,11224,4645,11885,10911,10377,435,7952,4096,493,9908,6845,6039,2422,2187,9723,8643,9852,9302,6022,7278,1002,4284,5088,1607,7313,875,8509,9430,1045,2481,5012,7428,354,6591,9377,11847,2401,1067,7188,11516,390,8511,8456,7270,545,8585,9611,12047,1537,4143,4714,4885,1017,5084,1632,3066,27,1440,8526,9273,12046,11618,9289,3400,9890,3136,7098,8758,11813,7384,3985,11869,6730,10745,10111,2249,4048,2884,11136,2126,1630,9103,5407,2686,9042,2969,8311,9424,9919,8779,5332,10626,1777,4654,10863,7351,3636,9585,5291,8374,2166,4919,12176,9140,12129,7852,12286,4895,10805,2780,5195,2305,7247,9644,4053,10600,3364,3271,4057,4414,9442,7917,2174};\n  \nuint16_t omegas_inv_montgomery[PARAM_N/2]\t= {4075,5315,4324,4916,10120,11767,7210,9027,10316,6715,1278,9945,3514,11248,11271,5925,147,8500,7840,6833,5537,4749,4467,7500,11099,9606,6171,8471,8429,5445,11239,7753,9090,12233,5529,5206,10587,1987,11635,3565,5415,8646,6153,6427,7341,6152,10561,400,8410,1922,2033,8291,1359,6854,11035,973,8579,6093,6950,5446,11821,8301,11907,316,52,3174,10966,9523,6055,8953,11612,6415,2505,5906,10710,11858,8332,9450,10162,151,3482,787,5468,1010,4169,9162,5241,9369,7509,8844,7232,4698,192,1321,10240,4912,885,6281,10333,7280,8757,11286,58,12048,12147,11184,8812,6608,2844,3438,4212,11314,8687,6068,421,8209,3600,3263,7665,6077,7507,5886,3029,6695,4213,504,11684,2302,1962,1594,6328,7183,168,2692,8960,4298,5184,11089,6122,9734,10929,3956,5297,6170,3762,9370,4016,4077,6523,652,11994,6099,1146,11341,11964,10885,6299,1159,8240,8561,11177,2078,10331,4322,11367,441,4079,11231,3150,1319,8243,709,8049,8719,11454,6224,3054,6803,3123,10542,4433,6370,7032,3834,8633,12225,9830,683,1566,5782,9786,9341,12115,723,3009,1693,5735,2655,2738,6421,11942,2925,1975,8532,3315,11863,4754,1858,1583,6347,2500,10800,6374,1483,12240,1263,1815,5383,10777,350,6920,10232,4493,9087,8855,8760,9381,218,9928,10446,9259,4115,6147,9842,8326,576,10335,10238,10484,9407,6381,11836,8517,418,6860,7515,1293,7552,2767,156,8298,8320,10008,5876,5333,10258,10115,4372,2847,7875,8232,9018,8925,1689,8236,2645,5042,9984,7094,9509,1484,7394,3,4437,160,3149,113,7370,10123,3915,6998,2704,8653,4938,1426,7635,10512,1663,6957,3510,2370,2865,3978,9320,3247,9603,6882,3186,10659,10163,1153,9405,8241,10040,2178,1544,5559,420,8304,4905,476,3531,5191,9153,2399,8889,3000,671,243,3016,3763,10849,12262,9223,10657,7205,11272,7404,7575,8146,10752,242,2678,3704,11744,5019,3833,3778,11899,773,5101,11222,9888,442,2912,5698,11935,4861,7277,9808,11244,2859,3780,11414,4976,10682,7201,8005,11287,5011,6267,2987,2437,3646,2566,10102,9867,6250,5444,2381,11796,8193,4337,11854,1912,1378,404,7644,1065,2143,11121,5277,3248,11082,2548,8058,8907,11934,1759,8582,3694,7110,12144,6747,8652,3459,2731,8357,6378,7399,10861,1696,9863,334,7657,6534,11029,4388,11560,3241,10276,9000,9408,3284,10200,7197,6498,544,2468,339,11267,9,2842,480,5331,7300,1673,4278,4177,8705,9764,1381,7837,2396,8340,8993,4354,130,6915,2837,11462,5767,953,8541,9813,118,7222,2197,3006,9545,563,9314,2625,11340,4821,2639,7266,5828,6561,7698,3328,6512,1351,7311,6553,8155,1305,722,5146,4043,12288,10810,2545,3621,8747,8785,1646,1212,5860,3195,7203,10963,3201,3014,955,11499,9970,11119,3135,3712,7443,9542,7484,8736,9995,11227,1635,9521,1177,8034,140,10436,11563,7678,4320,11289,9198,12208,2963,7393,2366,9238};\n\nuint16_t psis_bitrev_montgomery[PARAM_N] = {4075,6974,7373,7965,3262,5079,522,2169,6364,1018,1041,8775,2344,11011,5574,1973,4536,1050,6844,3860,3818,6118,2683,1190,4789,7822,7540,6752,5456,4449,3789,12142,11973,382,3988,468,6843,5339,6196,3710,11316,1254,5435,10930,3998,10256,10367,3879,11889,1728,6137,4948,5862,6136,3643,6874,8724,654,10302,1702,7083,6760,56,3199,9987,605,11785,8076,5594,9260,6403,4782,6212,4624,9026,8689,4080,11868,6221,3602,975,8077,8851,9445,5681,3477,1105,142,241,12231,1003,3532,5009,1956,6008,11404,7377,2049,10968,12097,7591,5057,3445,4780,2920,7048,3127,8120,11279,6821,11502,8807,12138,2127,2839,3957,431,1579,6383,9784,5874,677,3336,6234,2766,1323,9115,12237,2031,6956,6413,2281,3969,3991,12133,9522,4737,10996,4774,5429,11871,3772,453,5908,2882,1805,2051,1954,11713,3963,2447,6142,8174,3030,1843,2361,12071,2908,3529,3434,3202,7796,2057,5369,11939,1512,6906,10474,11026,49,10806,5915,1489,9789,5942,10706,10431,7535,426,8974,3757,10314,9364,347,5868,9551,9634,6554,10596,9280,11566,174,2948,2503,6507,10723,11606,2459,64,3656,8455,5257,5919,7856,1747,9166,5486,9235,6065,835,3570,4240,11580,4046,10970,9139,1058,8210,11848,922,7967,1958,10211,1112,3728,4049,11130,5990,1404,325,948,11143,6190,295,11637,5766,8212,8273,2919,8527,6119,6992,8333,1360,2555,6167,1200,7105,7991,3329,9597,12121,5106,5961,10695,10327,3051,9923,4896,9326,81,3091,1000,7969,4611,726,1853,12149,4255,11112,2768,10654,1062,2294,3553,4805,2747,4846,8577,9154,1170,2319,790,11334,9275,9088,1326,5086,9094,6429,11077,10643,3504,3542,8668,9744,1479,1,8246,7143,11567,10984,4134,5736,4978,10938,5777,8961,4591,5728,6461,5023,9650,7468,949,9664,2975,11726,2744,9283,10092,5067,12171,2476,3748,11336,6522,827,9452,5374,12159,7935,3296,3949,9893,4452,10908,2525,3584,8112,8011,10616,4989,6958,11809,9447,12280,1022,11950,9821,11745,5791,5092,2089,9005,2881,3289,2013,9048,729,7901,1260,5755,4632,11955,2426,10593,1428,4890,5911,3932,9558,8830,3637,5542,145,5179,8595,3707,10530,355,3382,4231,9741,1207,9041,7012,1168,10146,11224,4645,11885,10911,10377,435,7952,4096,493,9908,6845,6039,2422,2187,9723,8643,9852,9302,6022,7278,1002,4284,5088,1607,7313,875,8509,9430,1045,2481,5012,7428,354,6591,9377,11847,2401,1067,7188,11516,390,8511,8456,7270,545,8585,9611,12047,1537,4143,4714,4885,1017,5084,1632,3066,27,1440,8526,9273,12046,11618,9289,3400,9890,3136,7098,8758,11813,7384,3985,11869,6730,10745,10111,2249,4048,2884,11136,2126,1630,9103,5407,2686,9042,2969,8311,9424,9919,8779,5332,10626,1777,4654,10863,7351,3636,9585,5291,8374,2166,4919,12176,9140,12129,7852,12286,4895,10805,2780,5195,2305,7247,9644,4053,10600,3364,3271,4057,4414,9442,7917,2174,3947,11951,2455,6599,10545,10975,3654,2894,7681,7126,7287,12269,4119,3343,2151,1522,7174,7350,11041,2442,2148,5959,6492,8330,8945,5598,3624,10397,1325,6565,1945,11260,10077,2674,3338,3276,11034,506,6505,1392,5478,8778,1178,2776,3408,10347,11124,2575,9489,12096,6092,10058,4167,6085,923,11251,11912,4578,10669,11914,425,10453,392,10104,8464,4235,8761,7376,2291,3375,7954,8896,6617,7790,1737,11667,3982,9342,6680,636,6825,7383,512,4670,2900,12050,7735,994,1687,11883,7021,146,10485,1403,5189,6094,2483,2054,3042,10945,3981,10821,11826,8882,8151,180,9600,7684,5219,10880,6780,204,11232,2600,7584,3121,3017,11053,7814,7043,4251,4739,11063,6771,7073,9261,2360,11925,1928,11825,8024,3678,3205,3359,11197,5209,8581,3238,8840,1136,9363,1826,3171,4489,7885,346,2068,1389,8257,3163,4840,6127,8062,8921,612,4238,10763,8067,125,11749,10125,5416,2110,716,9839,10584,11475,11873,3448,343,1908,4538,10423,7078,4727,1208,11572,3589,2982,1373,1721,10753,4103,2429,4209,5412,5993,9011,438,3515,7228,1218,8347,5232,8682,1327,7508,4924,448,1014,10029,12221,4566,5836,12229,2717,1535,3200,5588,5845,412,5102,7326,3744,3056,2528,7406,8314,9202,6454,6613,1417,10032,7784,1518,3765,4176,5063,9828,2275,6636,4267,6463,2065,7725,3495,8328,8755,8144,10533,5966,12077,9175,9520,5596,6302,8400,579,6781,11014,5734,11113,11164,4860,1131,10844,9068,8016,9694,3837,567,9348,7000,6627,7699,5082,682,11309,5207,4050,7087,844,7434,3769,293,9057,6940,9344,10883,2633,8190,3944,5530,5604,3480,2171,9282,11024,2213,8136,3805,767,12239,216,11520,6763,10353,7,8566,845,7235,3154,4360,3285,10268,2832,3572,1282,7559,3229,8360,10583,6105,3120,6643,6203,8536,8348,6919,3536,9199,10891,11463,5043,1658,5618,8787,5789,4719,751,11379,6389,10783,3065,7806,6586,2622,5386,510,7628,6921,578,10345,11839,8929,4684,12226,7154,9916,7302,8481,3670,11066,2334,1590,7878,10734,1802,1891,5103,6151,8820,3418,7846,9951,4693,417,9996,9652,4510,2946,5461,365,881,1927,1015,11675,11009,1371,12265,2485,11385,5039,6742,8449,1842,12217,8176,9577,4834,7937,9461,2643,11194,3045,6508,4094,3451,7911,11048,5406,4665,3020,6616,11345,7519,3669,5287,1790,7014,5410,11038,11249,2035,6125,10407,4565,7315,5078,10506,2840,2478,9270,4194,9195,4518,7469,1160,6878,2730,10421,10036,1734,3815,10939,5832,10595,10759,4423,8420,9617,7119,11010,11424,9173,189,10080,10526,3466,10588,7592,3578,11511,7785,9663,530,12150,8957,2532,3317,9349,10243,1481,9332,3454,3758,7899,4218,2593,11410,2276,982,6513,1849,8494,9021,4523,7988,8,457,648,150,8000,2307,2301,874,5650,170,9462,2873,9855,11498,2535,11169,5808,12268,9687,1901,7171,11787,3846,1573,6063,3793,466,11259,10608,3821,6320,4649,6263,2929};\n\nuint16_t psis_inv_montgomery[PARAM_N] = {256,10570,1510,7238,1034,7170,6291,7921,11665,3422,4000,2327,2088,5565,795,10647,1521,5484,2539,7385,1055,7173,8047,11683,1669,1994,3796,5809,4341,9398,11876,12230,10525,12037,12253,3506,4012,9351,4847,2448,7372,9831,3160,2207,5582,2553,7387,6322,9681,1383,10731,1533,219,5298,4268,7632,6357,9686,8406,4712,9451,10128,4958,5975,11387,8649,11769,6948,11526,12180,1740,10782,6807,2728,7412,4570,4164,4106,11120,12122,8754,11784,3439,5758,11356,6889,9762,11928,1704,1999,10819,12079,12259,7018,11536,1648,1991,2040,2047,2048,10826,12080,8748,8272,8204,1172,1923,7297,2798,7422,6327,4415,7653,6360,11442,12168,7005,8023,9924,8440,8228,2931,7441,1063,3663,5790,9605,10150,1450,8985,11817,10466,10273,12001,3470,7518,1074,1909,7295,9820,4914,702,5367,7789,8135,9940,1420,3714,11064,12114,12264,1752,5517,9566,11900,1700,3754,5803,829,1874,7290,2797,10933,5073,7747,8129,6428,6185,11417,1631,233,5300,9535,10140,11982,8734,8270,2937,10953,8587,8249,2934,9197,4825,5956,4362,9401,1343,3703,529,10609,12049,6988,6265,895,3639,4031,4087,4095,585,10617,8539,4731,4187,9376,3095,9220,10095,10220,1460,10742,12068,1724,5513,11321,6884,2739,5658,6075,4379,11159,10372,8504,4726,9453,3106,7466,11600,10435,8513,9994,8450,9985,3182,10988,8592,2983,9204,4826,2445,5616,6069,867,3635,5786,11360,5134,2489,10889,12089,1727,7269,2794,9177,1311,5454,9557,6632,2703,9164,10087,1441,3717,531,3587,2268,324,5313,759,1864,5533,2546,7386,9833,8427,4715,11207,1601,7251,4547,11183,12131,1733,10781,10318,1474,10744,5046,4232,11138,10369,6748,964,7160,4534,7670,8118,8182,4680,11202,6867,981,8918,1274,182,26,7026,8026,11680,12202,10521,1503,7237,4545,5916,9623,8397,11733,10454,3249,9242,6587,941,1890,270,10572,6777,9746,6659,6218,6155,6146,878,1881,7291,11575,12187,1741,7271,8061,11685,6936,4502,9421,4857,4205,7623,1089,10689,1527,8996,10063,11971,10488,6765,2722,3900,9335,11867,6962,11528,5158,4248,4118,5855,2592,5637,6072,2623,7397,8079,9932,4930,5971,853,3633,519,8852,11798,3441,11025,1575,225,8810,11792,12218,3501,9278,3081,9218,4828,7712,8124,11694,12204,3499,4011,573,3593,5780,7848,9899,10192,1456,208,7052,2763,7417,11593,10434,12024,8740,11782,10461,3250,5731,7841,9898,1414,202,3540,7528,2831,2160,10842,5060,4234,4116,588,84,12,7024,2759,9172,6577,11473,1639,9012,3043,7457,6332,11438,1634,1989,9062,11828,8712,11778,12216,10523,6770,9745,10170,4964,9487,6622,946,8913,6540,6201,4397,9406,8366,9973,8447,8229,11709,8695,10020,3187,5722,2573,10901,6824,4486,4152,9371,8361,2950,2177,311,1800,9035,8313,11721,3430,490,70,10,1757,251,3547,7529,11609,3414,7510,4584,4166,9373,1339,5458,7802,11648,1664,7260,9815,10180,6721,9738,10169,8475,8233,9954,1422,8981,1283,5450,11312,1616,3742,11068,10359,4991,713,3613,9294,8350,4704,672,96,7036,9783,11931,3460,5761,823,10651,12055,10500,1500,5481,783,3623,11051,8601,8251,8201,11705,10450,5004,4226,7626,2845,2162,3820,7568,9859,3164,452,10598,1514,5483,6050,6131,4387,7649,8115,6426,918,8909,8295,1185,5436,11310,8638,1234,5443,11311,5127,2488,2111,10835,5059,7745,2862,3920,560,80,1767,2008,3798,11076,6849,2734,10924,12094,8750,1250,10712,6797,971,7161,1023,8924,4786,7706,4612,4170,7618,6355,4419,5898,11376,10403,10264,6733,4473,639,5358,2521,9138,3061,5704,4326,618,5355,765,5376,768,7132,4530,9425,3102,9221,6584,11474,10417,10266,12000,6981,6264,4406,2385,7363,4563,4163,7617,9866,3165,9230,11852,10471,5007,5982,11388,5138,734,3616,11050,12112,6997,11533,12181,10518,12036,3475,2252,7344,9827,4915,9480,6621,4457,7659,9872,6677,4465,4149,7615,4599,657,3605,515,10607,6782,4480,640,1847,3775,5806,2585,5636,9583,1369,10729,8555,10000,11962,5220,7768,8132,8184,9947,1421,203,29,8782,11788,1684,10774,10317,4985,9490,8378,4708,11206,5112,5997,7879,11659,12199,8765,10030,4944,5973,6120,6141,6144,7900,11662,1666,238,34,3516,5769,9602,8394,9977,6692,956,10670,6791,9748,11926,8726,11780,5194,742,106,8793,10034,3189,10989,5081,4237,5872,4350,2377,10873,6820,6241,11425,10410,10265,3222,5727,9596,4882,2453,2106,3812,11078,12116,5242,4260,11142,8614,11764,12214,5256,4262,4120,11122,5100,11262,5120,2487,5622,9581,8391,8221,2930,10952,12098,6995,6266,9673,4893,699,3611,4027,5842,11368,1624,232,8811,8281,1183,169,8802,3013,2186,5579,797,3625,4029,11109,1587,7249,11569,8675,6506,2685,10917,12093,12261,12285,1755,7273,1039,1904,272,3550,9285,3082,5707,6082,4380,7648,11626,5172,4250,9385,8363,8217,4685,5936,848,8899,6538,934,1889,3781,9318,10109,10222,6727,961,5404,772,5377,9546,8386,1198,8949,3034,2189,7335,4559,5918,2601,10905,5069,9502,3113,7467,8089,11689,5181,9518,8382,2953,3933,4073,4093,7607,8109,2914,5683,4323,11151,1593,10761,6804,972,3650,2277,5592,4310,7638,9869,4921,703,1856,9043,4803,9464,1352,8971,11815,5199,7765,6376,4422,7654,2849,407,8836,6529,7955,2892,9191,1313,10721,12065,12257,1751,9028,8312,2943,2176,3822,546,78,8789,11789,10462,12028,6985,4509,9422,1346,5459,4291,613,10621,6784,9747,3148,7472,2823,5670,810,7138,8042,4660,7688,6365,6176,6149,2634,5643,9584,10147,11983,5223,9524,11894,10477,8519,1217,3685,2282,326,10580,3267,7489,4581,2410,5611,11335,6886,8006,8166,11700,3427,11023,8597,10006,3185,455,65,5276,7776,4622,5927,7869,9902,11948,5218,2501,5624,2559,10899,1557,1978,10816,10323,8497,4725,675,1852,10798,12076,10503,3256,9243,3076,2195,10847,12083,10504,12034,10497};\n"
  },
  {
    "path": "src/crypto/newhope/randombytes.c",
    "content": "#include <sys/types.h>\n#include <sys/stat.h>\n#include <fcntl.h>\n#include <unistd.h>\n#include \"randombytes.h\"\n\nstatic int fd = -1;\n\nvoid randombytes(unsigned char *x,unsigned long long xlen)\n{\n  int i;\n\n  if (fd == -1) {\n    for (;;) {\n      fd = open(\"/dev/urandom\",O_RDONLY);\n      if (fd != -1) break;\n      sleep(1);\n    }\n  }\n\n  while (xlen > 0) {\n    if (xlen < 1048576) i = xlen; else i = 1048576;\n\n    i = read(fd,x,i);\n    if (i < 1) {\n      sleep(1);\n      continue;\n    }\n\n    x += i;\n    xlen -= i;\n  }\n}\n\n"
  },
  {
    "path": "src/crypto/newhope/randombytes.h",
    "content": "#ifndef RANDOMBYTES_H\n#define RANDOMBYTES_H\n\nvoid randombytes(unsigned char *x,unsigned long long xlen);\n\n#endif\n"
  },
  {
    "path": "src/crypto/newhope/reduce.c",
    "content": "#include \"reduce.h\"\n#include \"params.h\"\n\n/* Incomplete-reduction routines; for details on allowed input ranges\n * and produced output ranges, see the description in the paper: \n * https://cryptojedi.org/papers/#newhope */\n\n\nstatic const uint32_t qinv = 12287; // -inverse_mod(p,2^18)\nstatic const uint32_t rlog = 18;\n\nuint16_t montgomery_reduce(uint32_t a)\n{\n  uint32_t u;\n\n  u = (a * qinv);\n  u &= ((1<<rlog)-1);\n  u *= PARAM_Q;\n  a = a + u;\n  return a >> 18;\n}\n\n\nuint16_t barrett_reduce(uint16_t a)\n{\n  uint32_t u;\n\n  u = ((uint32_t) a * 5) >> 16;\n  u *= PARAM_Q;\n  a -= u;\n  return a;\n}\n\n"
  },
  {
    "path": "src/crypto/newhope/reduce.h",
    "content": "#ifndef REDUCE_H\n#define REDUCE_H\n\n#include <stdint.h>\n\nuint16_t montgomery_reduce(uint32_t a);\n\nuint16_t barrett_reduce(uint16_t a);\n\n#endif\n"
  },
  {
    "path": "src/crypto/sha2/sha256.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"sha256.h\"\n#include <string.h>\n\nvoid sha256_reset(sha256_context_t *context)\n{\n    context->h[0] = 0x6a09e667;\n    context->h[1] = 0xbb67ae85;\n    context->h[2] = 0x3c6ef372;\n    context->h[3] = 0xa54ff53a,\n    context->h[4] = 0x510e527f;\n    context->h[5] = 0x9b05688c;\n    context->h[6] = 0x1f83d9ab;\n    context->h[7] = 0x5be0cd19;\n    context->length = 0;\n    context->posn = 0;\n}\n\n#define rightRotate(v, n) (((v) >> (n)) | ((v) << (32 - (n))))\n\nstatic void sha256_transform(sha256_context_t *context, const uint8_t *m)\n{\n    static uint32_t const k[64] = {\n        0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n        0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n        0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n        0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n        0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n        0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n        0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n        0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n        0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n        0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n        0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n        0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n        0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n        0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n        0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n        0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n    };\n    unsigned index;\n    uint32_t temp1, temp2;\n    uint32_t w[64];\n\n    /* Initialize working variables to the current hash value */\n    uint32_t a = context->h[0];\n    uint32_t b = context->h[1];\n    uint32_t c = context->h[2];\n    uint32_t d = context->h[3];\n    uint32_t e = context->h[4];\n    uint32_t f = context->h[5];\n    uint32_t g = context->h[6];\n    uint32_t h = context->h[7];\n\n    /* Convert the 16 message words from big endian to host byte order */\n    for (index = 0; index < 16; ++index) {\n        w[index] = (((uint32_t)(m[0])) << 24) |\n                   (((uint32_t)(m[1])) << 16) |\n                   (((uint32_t)(m[2])) << 8) |\n                    ((uint32_t)(m[3]));\n        m += 4;\n    }\n\n    /* Extend the first 16 words to 64 */\n    for (index = 16; index < 64; ++index) {\n        w[index] = w[index - 16] + w[index - 7] +\n            (rightRotate(w[index - 15], 7) ^\n             rightRotate(w[index - 15], 18) ^\n             (w[index - 15] >> 3)) +\n            (rightRotate(w[index - 2], 17) ^\n             rightRotate(w[index - 2], 19) ^\n             (w[index - 2] >> 10));\n    }\n\n    /* Round function */\n#define SHA256_ROUND(a, b, c, d, e, f, g, h, n) \\\n    (temp1 = (h) + k[index + (n)] + w[index + (n)] + \\\n        (rightRotate((e), 6) ^ rightRotate((e), 11) ^ rightRotate((e), 25)) + \\\n        (((e) & (f)) ^ ((~(e)) & (g))), \\\n     temp2 = (rightRotate((a), 2) ^ rightRotate((a), 13) ^ rightRotate((a), 22)) + \\\n        (((a) & (b)) ^ ((a) & (c)) ^ ((b) & (c))), \\\n     (d) += temp1, \\\n     (h) = temp1 + temp2)\n\n    /* Compression function main loop */\n    for (index = 0; index < 64; index += 8) {\n        SHA256_ROUND(a, b, c, d, e, f, g, h, 0);\n        SHA256_ROUND(h, a, b, c, d, e, f, g, 1);\n        SHA256_ROUND(g, h, a, b, c, d, e, f, 2);\n        SHA256_ROUND(f, g, h, a, b, c, d, e, 3);\n        SHA256_ROUND(e, f, g, h, a, b, c, d, 4);\n        SHA256_ROUND(d, e, f, g, h, a, b, c, 5);\n        SHA256_ROUND(c, d, e, f, g, h, a, b, 6);\n        SHA256_ROUND(b, c, d, e, f, g, h, a, 7);\n    }\n\n    /* Add the compressed chunk to the current hash value */\n    context->h[0] += a;\n    context->h[1] += b;\n    context->h[2] += c;\n    context->h[3] += d;\n    context->h[4] += e;\n    context->h[5] += f;\n    context->h[6] += g;\n    context->h[7] += h;\n}\n\nvoid sha256_update(sha256_context_t *context, const void *data, size_t size)\n{\n    const uint8_t *d = (const uint8_t *)data;\n    while (size > 0) {\n        if (context->posn == 0 && size >= 64) {\n            sha256_transform(context, d);\n            d += 64;\n            size -= 64;\n            context->length += 64 * 8;\n        } else {\n            size_t temp = 64 - context->posn;\n            if (temp > size)\n                temp = size;\n            memcpy(context->m + context->posn, d, temp);\n            context->posn += temp;\n            if (context->posn >= 64) {\n                sha256_transform(context, context->m);\n                context->posn = 0;\n            }\n            d += temp;\n            size -= temp;\n            context->length += temp * 8;\n        }\n    }\n}\n\nstatic void write_be32(uint8_t *out, uint32_t value)\n{\n    out[0] = (uint8_t)(value >> 24);\n    out[1] = (uint8_t)(value >> 16);\n    out[2] = (uint8_t)(value >> 8);\n    out[3] = (uint8_t)value;\n}\n\nvoid sha256_finish(sha256_context_t *context, uint8_t *hash)\n{\n    uint8_t posn = context->posn;\n    if (posn <= (64 - 9)) {\n        context->m[posn] = 0x80;\n        memset(context->m + posn + 1, 0, 64 - 8 - (posn + 1));\n    } else {\n        context->m[posn] = 0x80;\n        memset(context->m + posn + 1, 0, 64 - (posn + 1));\n        sha256_transform(context, context->m);\n        memset(context->m, 0, 64 - 8);\n    }\n    write_be32(context->m + 64 - 8, (uint32_t)(context->length >> 32));\n    write_be32(context->m + 64 - 4, (uint32_t)context->length);\n    sha256_transform(context, context->m);\n    context->posn = 0;\n    for (posn = 0; posn < 8; ++posn)\n        write_be32(hash + posn * 4, context->h[posn]);\n}\n"
  },
  {
    "path": "src/crypto/sha2/sha256.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef SHA256_h\n#define SHA256_h\n\n#include <stdint.h>\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct\n{\n    uint32_t h[8];\n    uint8_t  m[64];\n    uint64_t length;\n    uint8_t  posn;\n\n} sha256_context_t;\n\nvoid sha256_reset(sha256_context_t *context);\nvoid sha256_update(sha256_context_t *context, const void *data, size_t size);\nvoid sha256_finish(sha256_context_t *context, uint8_t *hash);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "src/crypto/sha2/sha512.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"sha512.h\"\n#include <string.h>\n\nvoid sha512_reset(sha512_context_t *context)\n{\n    static uint64_t const hash_start[8] = {\n        0x6A09E667F3BCC908ULL, 0xBB67AE8584CAA73BULL, 0x3C6EF372FE94F82BULL,\n        0xA54FF53A5F1D36F1ULL, 0x510E527FADE682D1ULL, 0x9B05688C2B3E6C1FULL,\n        0x1F83D9ABFB41BD6BULL, 0x5BE0CD19137E2179ULL\n    };\n    memcpy(context->h, hash_start, sizeof(hash_start));\n    context->length = 0;\n    context->posn = 0;\n}\n\n#define rightRotate(v, n) (((v) >> (n)) | ((v) << (64 - (n))))\n\nstatic void sha512_transform(sha512_context_t *context, const uint8_t *m)\n{\n    static uint64_t const k[80] = {\n        0x428A2F98D728AE22ULL, 0x7137449123EF65CDULL, 0xB5C0FBCFEC4D3B2FULL,\n        0xE9B5DBA58189DBBCULL, 0x3956C25BF348B538ULL, 0x59F111F1B605D019ULL,\n        0x923F82A4AF194F9BULL, 0xAB1C5ED5DA6D8118ULL, 0xD807AA98A3030242ULL,\n        0x12835B0145706FBEULL, 0x243185BE4EE4B28CULL, 0x550C7DC3D5FFB4E2ULL,\n        0x72BE5D74F27B896FULL, 0x80DEB1FE3B1696B1ULL, 0x9BDC06A725C71235ULL,\n        0xC19BF174CF692694ULL, 0xE49B69C19EF14AD2ULL, 0xEFBE4786384F25E3ULL,\n        0x0FC19DC68B8CD5B5ULL, 0x240CA1CC77AC9C65ULL, 0x2DE92C6F592B0275ULL,\n        0x4A7484AA6EA6E483ULL, 0x5CB0A9DCBD41FBD4ULL, 0x76F988DA831153B5ULL,\n        0x983E5152EE66DFABULL, 0xA831C66D2DB43210ULL, 0xB00327C898FB213FULL,\n        0xBF597FC7BEEF0EE4ULL, 0xC6E00BF33DA88FC2ULL, 0xD5A79147930AA725ULL,\n        0x06CA6351E003826FULL, 0x142929670A0E6E70ULL, 0x27B70A8546D22FFCULL,\n        0x2E1B21385C26C926ULL, 0x4D2C6DFC5AC42AEDULL, 0x53380D139D95B3DFULL,\n        0x650A73548BAF63DEULL, 0x766A0ABB3C77B2A8ULL, 0x81C2C92E47EDAEE6ULL,\n        0x92722C851482353BULL, 0xA2BFE8A14CF10364ULL, 0xA81A664BBC423001ULL,\n        0xC24B8B70D0F89791ULL, 0xC76C51A30654BE30ULL, 0xD192E819D6EF5218ULL,\n        0xD69906245565A910ULL, 0xF40E35855771202AULL, 0x106AA07032BBD1B8ULL,\n        0x19A4C116B8D2D0C8ULL, 0x1E376C085141AB53ULL, 0x2748774CDF8EEB99ULL,\n        0x34B0BCB5E19B48A8ULL, 0x391C0CB3C5C95A63ULL, 0x4ED8AA4AE3418ACBULL,\n        0x5B9CCA4F7763E373ULL, 0x682E6FF3D6B2B8A3ULL, 0x748F82EE5DEFB2FCULL,\n        0x78A5636F43172F60ULL, 0x84C87814A1F0AB72ULL, 0x8CC702081A6439ECULL,\n        0x90BEFFFA23631E28ULL, 0xA4506CEBDE82BDE9ULL, 0xBEF9A3F7B2C67915ULL,\n        0xC67178F2E372532BULL, 0xCA273ECEEA26619CULL, 0xD186B8C721C0C207ULL,\n        0xEADA7DD6CDE0EB1EULL, 0xF57D4F7FEE6ED178ULL, 0x06F067AA72176FBAULL,\n        0x0A637DC5A2C898A6ULL, 0x113F9804BEF90DAEULL, 0x1B710B35131C471BULL,\n        0x28DB77F523047D84ULL, 0x32CAAB7B40C72493ULL, 0x3C9EBE0A15C9BEBCULL,\n        0x431D67C49C100D4CULL, 0x4CC5D4BECB3E42B6ULL, 0x597F299CFC657E2AULL,\n        0x5FCB6FAB3AD6FAECULL, 0x6C44198C4A475817ULL\n    };\n    unsigned index;\n    uint64_t temp1, temp2;\n    uint64_t w[80];\n\n    /* Initialise working variables to the current hash value */\n    uint64_t a = context->h[0];\n    uint64_t b = context->h[1];\n    uint64_t c = context->h[2];\n    uint64_t d = context->h[3];\n    uint64_t e = context->h[4];\n    uint64_t f = context->h[5];\n    uint64_t g = context->h[6];\n    uint64_t h = context->h[7];\n\n    /* Convert the 16 message words from big endian to host byte order */\n    for (index = 0; index < 16; ++index) {\n        w[index] = (((uint64_t)(m[0])) << 56) |\n                   (((uint64_t)(m[1])) << 48) |\n                   (((uint64_t)(m[2])) << 40) |\n                   (((uint64_t)(m[3])) << 32) |\n                   (((uint64_t)(m[4])) << 24) |\n                   (((uint64_t)(m[5])) << 16) |\n                   (((uint64_t)(m[6])) << 8) |\n                    ((uint64_t)(m[7]));\n        m += 8;\n    }\n\n    /* Extend the first 16 words to 80 */\n    for (index = 16; index < 80; ++index) {\n        w[index] = w[index - 16] + w[index - 7] +\n            (rightRotate(w[index - 15], 1) ^\n             rightRotate(w[index - 15], 8) ^\n             (w[index - 15] >> 7)) +\n            (rightRotate(w[index - 2], 19) ^\n             rightRotate(w[index - 2], 61) ^\n             (w[index - 2] >> 6));\n    }\n\n    // Round function.\n#define SHA512_ROUND(a, b, c, d, e, f, g, h, n) \\\n    (temp1 = (h) + k[index + (n)] + w[index + (n)] + \\\n        (rightRotate((e), 14) ^ rightRotate((e), 18) ^ rightRotate((e), 41)) + \\\n        (((e) & (f)) ^ ((~(e)) & (g))), \\\n     temp2 = (rightRotate((a), 28) ^ rightRotate((a), 34) ^ rightRotate((a), 39)) + \\\n        (((a) & (b)) ^ ((a) & (c)) ^ ((b) & (c))), \\\n     (d) += temp1, \\\n     (h) = temp1 + temp2)\n\n    /* Compression function main loop */\n    for (index = 0; index < 80; index += 8) {\n        SHA512_ROUND(a, b, c, d, e, f, g, h, 0);\n        SHA512_ROUND(h, a, b, c, d, e, f, g, 1);\n        SHA512_ROUND(g, h, a, b, c, d, e, f, 2);\n        SHA512_ROUND(f, g, h, a, b, c, d, e, 3);\n        SHA512_ROUND(e, f, g, h, a, b, c, d, 4);\n        SHA512_ROUND(d, e, f, g, h, a, b, c, 5);\n        SHA512_ROUND(c, d, e, f, g, h, a, b, 6);\n        SHA512_ROUND(b, c, d, e, f, g, h, a, 7);\n    }\n\n    /* Add the compressed chunk to the current hash value */\n    context->h[0] += a;\n    context->h[1] += b;\n    context->h[2] += c;\n    context->h[3] += d;\n    context->h[4] += e;\n    context->h[5] += f;\n    context->h[6] += g;\n    context->h[7] += h;\n}\n\nvoid sha512_update(sha512_context_t *context, const void *data, size_t size)\n{\n    const uint8_t *d = (const uint8_t *)data;\n    while (size > 0) {\n        if (context->posn == 0 && size >= 128) {\n            sha512_transform(context, d);\n            d += 128;\n            size -= 128;\n            context->length += 128 * 8;\n        } else {\n            size_t temp = 128 - context->posn;\n            if (temp > size)\n                temp = size;\n            memcpy(context->m + context->posn, d, temp);\n            context->posn += temp;\n            if (context->posn >= 128) {\n                sha512_transform(context, context->m);\n                context->posn = 0;\n            }\n            d += temp;\n            size -= temp;\n            context->length += temp * 8;\n        }\n    }\n}\n\nstatic void write_be64(uint8_t *out, uint64_t value)\n{\n    out[0] = (uint8_t)(value >> 56);\n    out[1] = (uint8_t)(value >> 48);\n    out[2] = (uint8_t)(value >> 40);\n    out[3] = (uint8_t)(value >> 32);\n    out[4] = (uint8_t)(value >> 24);\n    out[5] = (uint8_t)(value >> 16);\n    out[6] = (uint8_t)(value >> 8);\n    out[7] = (uint8_t)value;\n}\n\nvoid sha512_finish(sha512_context_t *context, uint8_t *hash)\n{\n    uint8_t posn = context->posn;\n    if (posn <= (128 - 17)) {\n        context->m[posn] = 0x80;\n        memset(context->m + posn + 1, 0, 128 - 16 - (posn + 1));\n    } else {\n        context->m[posn] = 0x80;\n        memset(context->m + posn + 1, 0, 128 - (posn + 1));\n        sha512_transform(context, context->m);\n        memset(context->m, 0, 128 - 16);\n    }\n    write_be64(context->m + 128 - 16, 0);\n    write_be64(context->m + 128 - 8, context->length);\n    sha512_transform(context, context->m);\n    context->posn = 0;\n    for (posn = 0; posn < 8; ++posn)\n        write_be64(hash + posn * 8, context->h[posn]);\n}\n\nvoid sha512_hash(uint8_t *hash, const void *data, size_t size)\n{\n    sha512_context_t context;\n    sha512_reset(&context);\n    sha512_update(&context, data, size);\n    sha512_finish(&context, hash);\n}\n"
  },
  {
    "path": "src/crypto/sha2/sha512.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef SHA512_h\n#define SHA512_h\n\n#include <stdint.h>\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct\n{\n    uint64_t h[8];\n    uint8_t  m[128];\n    uint64_t length; /* Restricted to 2^56 bytes of input */\n    uint8_t  posn;\n\n} sha512_context_t;\n\nvoid sha512_reset(sha512_context_t *context);\nvoid sha512_update(sha512_context_t *context, const void *data, size_t size);\nvoid sha512_finish(sha512_context_t *context, uint8_t *hash);\nvoid sha512_hash(uint8_t *hash, const void *data, size_t size);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "src/keys/Makefile.am",
    "content": "\nlib_LIBRARIES = libnoisekeys.a\n\nAM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/include/noise/keys\nAM_CFLAGS = @WARNING_FLAGS@\n\nlibnoisekeys_a_SOURCES = \\\n\tcertificate.c \\\n\tloader.c\n\nprotos:\n\t$(top_builddir)/tools/protoc/noise-protoc \\\n\t\t-c $(top_srcdir)/src/keys/certificate.c \\\n\t\t-h $(top_srcdir)/include/noise/keys/certificate.h \\\n\t\t-l $(top_srcdir)/COPYING \\\n\t\t$(top_srcdir)/doc/noise-certificate.proto\n"
  },
  {
    "path": "src/keys/certificate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"certificate.h\"\n#include <stdlib.h>\n#include <string.h>\n\nstruct _Noise_Certificate {\n    uint32_t version;\n    Noise_SubjectInfo *subject;\n    Noise_Signature **signatures;\n    size_t signatures_count_;\n    size_t signatures_max_;\n};\n\nstruct _Noise_CertificateChain {\n    Noise_Certificate **certs;\n    size_t certs_count_;\n    size_t certs_max_;\n};\n\nstruct _Noise_SubjectInfo {\n    char *id;\n    size_t id_size_;\n    char *name;\n    size_t name_size_;\n    char *role;\n    size_t role_size_;\n    Noise_PublicKeyInfo **keys;\n    size_t keys_count_;\n    size_t keys_max_;\n    Noise_MetaInfo **meta;\n    size_t meta_count_;\n    size_t meta_max_;\n};\n\nstruct _Noise_PublicKeyInfo {\n    char *algorithm;\n    size_t algorithm_size_;\n    void *key;\n    size_t key_size_;\n};\n\nstruct _Noise_MetaInfo {\n    char *name;\n    size_t name_size_;\n    char *value;\n    size_t value_size_;\n};\n\nstruct _Noise_Signature {\n    char *id;\n    size_t id_size_;\n    char *name;\n    size_t name_size_;\n    Noise_PublicKeyInfo *signing_key;\n    char *hash_algorithm;\n    size_t hash_algorithm_size_;\n    Noise_ExtraSignedInfo *extra_signed_info;\n    void *signature;\n    size_t signature_size_;\n};\n\nstruct _Noise_ExtraSignedInfo {\n    void *nonce;\n    size_t nonce_size_;\n    char *valid_from;\n    size_t valid_from_size_;\n    char *valid_to;\n    size_t valid_to_size_;\n    Noise_MetaInfo **meta;\n    size_t meta_count_;\n    size_t meta_max_;\n};\n\nstruct _Noise_EncryptedPrivateKey {\n    uint32_t version;\n    char *algorithm;\n    size_t algorithm_size_;\n    void *salt;\n    size_t salt_size_;\n    uint32_t iterations;\n    void *encrypted_data;\n    size_t encrypted_data_size_;\n};\n\nstruct _Noise_PrivateKey {\n    char *id;\n    size_t id_size_;\n    char *name;\n    size_t name_size_;\n    char *role;\n    size_t role_size_;\n    Noise_PrivateKeyInfo **keys;\n    size_t keys_count_;\n    size_t keys_max_;\n    Noise_MetaInfo **meta;\n    size_t meta_count_;\n    size_t meta_max_;\n};\n\nstruct _Noise_PrivateKeyInfo {\n    char *algorithm;\n    size_t algorithm_size_;\n    void *key;\n    size_t key_size_;\n};\n\nint Noise_Certificate_new(Noise_Certificate **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_Certificate *)calloc(1, sizeof(Noise_Certificate));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Certificate_free(Noise_Certificate *obj)\n{\n    size_t index;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    Noise_SubjectInfo_free(obj->subject);\n    for (index = 0; index < obj->signatures_count_; ++index)\n        Noise_Signature_free(obj->signatures[index]);\n    noise_protobuf_free_memory(obj->signatures, obj->signatures_max_ * sizeof(Noise_Signature *));\n    noise_protobuf_free_memory(obj, sizeof(Noise_Certificate));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Certificate_write(NoiseProtobuf *pbuf, int tag, const Noise_Certificate *obj)\n{\n    size_t end_posn;\n    size_t index;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    for (index = obj->signatures_count_; index > 0; --index)\n        Noise_Signature_write(pbuf, 3, obj->signatures[index - 1]);\n    if (obj->subject)\n        Noise_SubjectInfo_write(pbuf, 2, obj->subject);\n    if (obj->version)\n        noise_protobuf_write_uint32(pbuf, 1, obj->version);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_Certificate_read(NoiseProtobuf *pbuf, int tag, Noise_Certificate **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_Certificate_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_read_uint32(pbuf, 1, &((*obj)->version));\n            } break;\n            case 2: {\n                Noise_SubjectInfo_free((*obj)->subject);\n                (*obj)->subject = 0;\n                Noise_SubjectInfo_read(pbuf, 2, &((*obj)->subject));\n            } break;\n            case 3: {\n                Noise_Signature *value = 0;\n                int err;\n                Noise_Signature_read(pbuf, 3, &value);\n                err = noise_protobuf_add_to_array((void **)&((*obj)->signatures), &((*obj)->signatures_count_), &((*obj)->signatures_max_), &value, sizeof(value));\n                if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\n                   pbuf->error = err;\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_Certificate_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_Certificate_clear_version(Noise_Certificate *obj)\n{\n    if (obj) {\n        obj->version = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Certificate_has_version(const Noise_Certificate *obj)\n{\n    return obj ? (obj->version != 0) : 0;\n}\n\nuint32_t Noise_Certificate_get_version(const Noise_Certificate *obj)\n{\n    return obj ? obj->version : 0;\n}\n\nint Noise_Certificate_set_version(Noise_Certificate *obj, uint32_t value)\n{\n    if (obj) {\n        obj->version = value;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Certificate_clear_subject(Noise_Certificate *obj)\n{\n    if (obj) {\n        Noise_SubjectInfo_free(obj->subject);\n        obj->subject = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Certificate_has_subject(const Noise_Certificate *obj)\n{\n    return obj ? (obj->subject != 0) : 0;\n}\n\nNoise_SubjectInfo *Noise_Certificate_get_subject(const Noise_Certificate *obj)\n{\n    return obj ? obj->subject : 0;\n}\n\nint Noise_Certificate_get_new_subject(Noise_Certificate *obj, Noise_SubjectInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_SubjectInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    Noise_SubjectInfo_free(obj->subject);\n    obj->subject = *value;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Certificate_clear_signatures(Noise_Certificate *obj)\n{\n    size_t index;\n    if (obj) {\n        for (index = 0; index < obj->signatures_count_; ++index)\n            Noise_Signature_free(obj->signatures[index]);\n        noise_protobuf_free_memory(obj->signatures, obj->signatures_max_ * sizeof(Noise_Signature *));\n        obj->signatures = 0;\n        obj->signatures_count_ = 0;\n        obj->signatures_max_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Certificate_has_signatures(const Noise_Certificate *obj)\n{\n    return obj ? (obj->signatures_count_ != 0) : 0;\n}\n\nsize_t Noise_Certificate_count_signatures(const Noise_Certificate *obj)\n{\n    return obj ? obj->signatures_count_ : 0;\n}\n\nNoise_Signature *Noise_Certificate_get_at_signatures(const Noise_Certificate *obj, size_t index)\n{\n    if (obj && index < obj->signatures_count_)\n        return obj->signatures[index];\n    else\n        return 0;\n}\n\nint Noise_Certificate_add_signatures(Noise_Certificate *obj, Noise_Signature **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_Signature_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_add_to_array((void **)&(obj->signatures), &(obj->signatures_count_), &(obj->signatures_max_), value, sizeof(*value));\n    if (err != NOISE_ERROR_NONE) {\n        Noise_Signature_free(*value);\n        *value = 0;\n        return err;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Certificate_insert_signatures(Noise_Certificate *obj, size_t index, Noise_Signature *value)\n{\n    if (!obj || !value)\n        return NOISE_ERROR_INVALID_PARAM;\n    return noise_protobuf_insert_into_array((void **)&(obj->signatures), &(obj->signatures_count_), &(obj->signatures_max_), index, &value, sizeof(value));\n}\n\nint Noise_CertificateChain_new(Noise_CertificateChain **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_CertificateChain *)calloc(1, sizeof(Noise_CertificateChain));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_CertificateChain_free(Noise_CertificateChain *obj)\n{\n    size_t index;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    for (index = 0; index < obj->certs_count_; ++index)\n        Noise_Certificate_free(obj->certs[index]);\n    noise_protobuf_free_memory(obj->certs, obj->certs_max_ * sizeof(Noise_Certificate *));\n    noise_protobuf_free_memory(obj, sizeof(Noise_CertificateChain));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_CertificateChain_write(NoiseProtobuf *pbuf, int tag, const Noise_CertificateChain *obj)\n{\n    size_t end_posn;\n    size_t index;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    for (index = obj->certs_count_; index > 0; --index)\n        Noise_Certificate_write(pbuf, 8, obj->certs[index - 1]);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_CertificateChain_read(NoiseProtobuf *pbuf, int tag, Noise_CertificateChain **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_CertificateChain_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 8: {\n                Noise_Certificate *value = 0;\n                int err;\n                Noise_Certificate_read(pbuf, 8, &value);\n                err = noise_protobuf_add_to_array((void **)&((*obj)->certs), &((*obj)->certs_count_), &((*obj)->certs_max_), &value, sizeof(value));\n                if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\n                   pbuf->error = err;\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_CertificateChain_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_CertificateChain_clear_certs(Noise_CertificateChain *obj)\n{\n    size_t index;\n    if (obj) {\n        for (index = 0; index < obj->certs_count_; ++index)\n            Noise_Certificate_free(obj->certs[index]);\n        noise_protobuf_free_memory(obj->certs, obj->certs_max_ * sizeof(Noise_Certificate *));\n        obj->certs = 0;\n        obj->certs_count_ = 0;\n        obj->certs_max_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_CertificateChain_has_certs(const Noise_CertificateChain *obj)\n{\n    return obj ? (obj->certs_count_ != 0) : 0;\n}\n\nsize_t Noise_CertificateChain_count_certs(const Noise_CertificateChain *obj)\n{\n    return obj ? obj->certs_count_ : 0;\n}\n\nNoise_Certificate *Noise_CertificateChain_get_at_certs(const Noise_CertificateChain *obj, size_t index)\n{\n    if (obj && index < obj->certs_count_)\n        return obj->certs[index];\n    else\n        return 0;\n}\n\nint Noise_CertificateChain_add_certs(Noise_CertificateChain *obj, Noise_Certificate **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_Certificate_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_add_to_array((void **)&(obj->certs), &(obj->certs_count_), &(obj->certs_max_), value, sizeof(*value));\n    if (err != NOISE_ERROR_NONE) {\n        Noise_Certificate_free(*value);\n        *value = 0;\n        return err;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_CertificateChain_insert_certs(Noise_CertificateChain *obj, size_t index, Noise_Certificate *value)\n{\n    if (!obj || !value)\n        return NOISE_ERROR_INVALID_PARAM;\n    return noise_protobuf_insert_into_array((void **)&(obj->certs), &(obj->certs_count_), &(obj->certs_max_), index, &value, sizeof(value));\n}\n\nint Noise_SubjectInfo_new(Noise_SubjectInfo **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_SubjectInfo *)calloc(1, sizeof(Noise_SubjectInfo));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_SubjectInfo_free(Noise_SubjectInfo *obj)\n{\n    size_t index;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->id, obj->id_size_);\n    noise_protobuf_free_memory(obj->name, obj->name_size_);\n    noise_protobuf_free_memory(obj->role, obj->role_size_);\n    for (index = 0; index < obj->keys_count_; ++index)\n        Noise_PublicKeyInfo_free(obj->keys[index]);\n    noise_protobuf_free_memory(obj->keys, obj->keys_max_ * sizeof(Noise_PublicKeyInfo *));\n    for (index = 0; index < obj->meta_count_; ++index)\n        Noise_MetaInfo_free(obj->meta[index]);\n    noise_protobuf_free_memory(obj->meta, obj->meta_max_ * sizeof(Noise_MetaInfo *));\n    noise_protobuf_free_memory(obj, sizeof(Noise_SubjectInfo));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_SubjectInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_SubjectInfo *obj)\n{\n    size_t end_posn;\n    size_t index;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    for (index = obj->meta_count_; index > 0; --index)\n        Noise_MetaInfo_write(pbuf, 5, obj->meta[index - 1]);\n    for (index = obj->keys_count_; index > 0; --index)\n        Noise_PublicKeyInfo_write(pbuf, 4, obj->keys[index - 1]);\n    if (obj->role)\n        noise_protobuf_write_string(pbuf, 3, obj->role, obj->role_size_);\n    if (obj->name)\n        noise_protobuf_write_string(pbuf, 2, obj->name, obj->name_size_);\n    if (obj->id)\n        noise_protobuf_write_string(pbuf, 1, obj->id, obj->id_size_);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_SubjectInfo_read(NoiseProtobuf *pbuf, int tag, Noise_SubjectInfo **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_SubjectInfo_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_free_memory((*obj)->id, (*obj)->id_size_);\n                (*obj)->id = 0;\n                (*obj)->id_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 1, &((*obj)->id), 0, &((*obj)->id_size_));\n            } break;\n            case 2: {\n                noise_protobuf_free_memory((*obj)->name, (*obj)->name_size_);\n                (*obj)->name = 0;\n                (*obj)->name_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 2, &((*obj)->name), 0, &((*obj)->name_size_));\n            } break;\n            case 3: {\n                noise_protobuf_free_memory((*obj)->role, (*obj)->role_size_);\n                (*obj)->role = 0;\n                (*obj)->role_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 3, &((*obj)->role), 0, &((*obj)->role_size_));\n            } break;\n            case 4: {\n                Noise_PublicKeyInfo *value = 0;\n                int err;\n                Noise_PublicKeyInfo_read(pbuf, 4, &value);\n                err = noise_protobuf_add_to_array((void **)&((*obj)->keys), &((*obj)->keys_count_), &((*obj)->keys_max_), &value, sizeof(value));\n                if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\n                   pbuf->error = err;\n            } break;\n            case 5: {\n                Noise_MetaInfo *value = 0;\n                int err;\n                Noise_MetaInfo_read(pbuf, 5, &value);\n                err = noise_protobuf_add_to_array((void **)&((*obj)->meta), &((*obj)->meta_count_), &((*obj)->meta_max_), &value, sizeof(value));\n                if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\n                   pbuf->error = err;\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_SubjectInfo_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_SubjectInfo_clear_id(Noise_SubjectInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->id, obj->id_size_);\n        obj->id = 0;\n        obj->id_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_has_id(const Noise_SubjectInfo *obj)\n{\n    return obj ? (obj->id != 0) : 0;\n}\n\nconst char *Noise_SubjectInfo_get_id(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->id : 0;\n}\n\nsize_t Noise_SubjectInfo_get_size_id(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->id_size_ : 0;\n}\n\nint Noise_SubjectInfo_set_id(Noise_SubjectInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->id, obj->id_size_);\n        obj->id = (char *)malloc(size + 1);\n        if (obj->id) {\n            memcpy(obj->id, value, size);\n            obj->id[size] = 0;\n            obj->id_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->id_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_clear_name(Noise_SubjectInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = 0;\n        obj->name_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_has_name(const Noise_SubjectInfo *obj)\n{\n    return obj ? (obj->name != 0) : 0;\n}\n\nconst char *Noise_SubjectInfo_get_name(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->name : 0;\n}\n\nsize_t Noise_SubjectInfo_get_size_name(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->name_size_ : 0;\n}\n\nint Noise_SubjectInfo_set_name(Noise_SubjectInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = (char *)malloc(size + 1);\n        if (obj->name) {\n            memcpy(obj->name, value, size);\n            obj->name[size] = 0;\n            obj->name_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->name_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_clear_role(Noise_SubjectInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->role, obj->role_size_);\n        obj->role = 0;\n        obj->role_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_has_role(const Noise_SubjectInfo *obj)\n{\n    return obj ? (obj->role != 0) : 0;\n}\n\nconst char *Noise_SubjectInfo_get_role(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->role : 0;\n}\n\nsize_t Noise_SubjectInfo_get_size_role(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->role_size_ : 0;\n}\n\nint Noise_SubjectInfo_set_role(Noise_SubjectInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->role, obj->role_size_);\n        obj->role = (char *)malloc(size + 1);\n        if (obj->role) {\n            memcpy(obj->role, value, size);\n            obj->role[size] = 0;\n            obj->role_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->role_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_clear_keys(Noise_SubjectInfo *obj)\n{\n    size_t index;\n    if (obj) {\n        for (index = 0; index < obj->keys_count_; ++index)\n            Noise_PublicKeyInfo_free(obj->keys[index]);\n        noise_protobuf_free_memory(obj->keys, obj->keys_max_ * sizeof(Noise_PublicKeyInfo *));\n        obj->keys = 0;\n        obj->keys_count_ = 0;\n        obj->keys_max_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_has_keys(const Noise_SubjectInfo *obj)\n{\n    return obj ? (obj->keys_count_ != 0) : 0;\n}\n\nsize_t Noise_SubjectInfo_count_keys(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->keys_count_ : 0;\n}\n\nNoise_PublicKeyInfo *Noise_SubjectInfo_get_at_keys(const Noise_SubjectInfo *obj, size_t index)\n{\n    if (obj && index < obj->keys_count_)\n        return obj->keys[index];\n    else\n        return 0;\n}\n\nint Noise_SubjectInfo_add_keys(Noise_SubjectInfo *obj, Noise_PublicKeyInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_PublicKeyInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_add_to_array((void **)&(obj->keys), &(obj->keys_count_), &(obj->keys_max_), value, sizeof(*value));\n    if (err != NOISE_ERROR_NONE) {\n        Noise_PublicKeyInfo_free(*value);\n        *value = 0;\n        return err;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_SubjectInfo_insert_keys(Noise_SubjectInfo *obj, size_t index, Noise_PublicKeyInfo *value)\n{\n    if (!obj || !value)\n        return NOISE_ERROR_INVALID_PARAM;\n    return noise_protobuf_insert_into_array((void **)&(obj->keys), &(obj->keys_count_), &(obj->keys_max_), index, &value, sizeof(value));\n}\n\nint Noise_SubjectInfo_clear_meta(Noise_SubjectInfo *obj)\n{\n    size_t index;\n    if (obj) {\n        for (index = 0; index < obj->meta_count_; ++index)\n            Noise_MetaInfo_free(obj->meta[index]);\n        noise_protobuf_free_memory(obj->meta, obj->meta_max_ * sizeof(Noise_MetaInfo *));\n        obj->meta = 0;\n        obj->meta_count_ = 0;\n        obj->meta_max_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_SubjectInfo_has_meta(const Noise_SubjectInfo *obj)\n{\n    return obj ? (obj->meta_count_ != 0) : 0;\n}\n\nsize_t Noise_SubjectInfo_count_meta(const Noise_SubjectInfo *obj)\n{\n    return obj ? obj->meta_count_ : 0;\n}\n\nNoise_MetaInfo *Noise_SubjectInfo_get_at_meta(const Noise_SubjectInfo *obj, size_t index)\n{\n    if (obj && index < obj->meta_count_)\n        return obj->meta[index];\n    else\n        return 0;\n}\n\nint Noise_SubjectInfo_add_meta(Noise_SubjectInfo *obj, Noise_MetaInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_MetaInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_add_to_array((void **)&(obj->meta), &(obj->meta_count_), &(obj->meta_max_), value, sizeof(*value));\n    if (err != NOISE_ERROR_NONE) {\n        Noise_MetaInfo_free(*value);\n        *value = 0;\n        return err;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_SubjectInfo_insert_meta(Noise_SubjectInfo *obj, size_t index, Noise_MetaInfo *value)\n{\n    if (!obj || !value)\n        return NOISE_ERROR_INVALID_PARAM;\n    return noise_protobuf_insert_into_array((void **)&(obj->meta), &(obj->meta_count_), &(obj->meta_max_), index, &value, sizeof(value));\n}\n\nint Noise_PublicKeyInfo_new(Noise_PublicKeyInfo **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_PublicKeyInfo *)calloc(1, sizeof(Noise_PublicKeyInfo));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PublicKeyInfo_free(Noise_PublicKeyInfo *obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n    noise_protobuf_free_memory(obj->key, obj->key_size_);\n    noise_protobuf_free_memory(obj, sizeof(Noise_PublicKeyInfo));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PublicKeyInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_PublicKeyInfo *obj)\n{\n    size_t end_posn;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    if (obj->key)\n        noise_protobuf_write_bytes(pbuf, 2, obj->key, obj->key_size_);\n    if (obj->algorithm)\n        noise_protobuf_write_string(pbuf, 1, obj->algorithm, obj->algorithm_size_);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_PublicKeyInfo_read(NoiseProtobuf *pbuf, int tag, Noise_PublicKeyInfo **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_PublicKeyInfo_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_free_memory((*obj)->algorithm, (*obj)->algorithm_size_);\n                (*obj)->algorithm = 0;\n                (*obj)->algorithm_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 1, &((*obj)->algorithm), 0, &((*obj)->algorithm_size_));\n            } break;\n            case 2: {\n                noise_protobuf_free_memory((*obj)->key, (*obj)->key_size_);\n                (*obj)->key = 0;\n                (*obj)->key_size_ = 0;\n                noise_protobuf_read_alloc_bytes(pbuf, 2, &((*obj)->key), 0, &((*obj)->key_size_));\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_PublicKeyInfo_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_PublicKeyInfo_clear_algorithm(Noise_PublicKeyInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n        obj->algorithm = 0;\n        obj->algorithm_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PublicKeyInfo_has_algorithm(const Noise_PublicKeyInfo *obj)\n{\n    return obj ? (obj->algorithm != 0) : 0;\n}\n\nconst char *Noise_PublicKeyInfo_get_algorithm(const Noise_PublicKeyInfo *obj)\n{\n    return obj ? obj->algorithm : 0;\n}\n\nsize_t Noise_PublicKeyInfo_get_size_algorithm(const Noise_PublicKeyInfo *obj)\n{\n    return obj ? obj->algorithm_size_ : 0;\n}\n\nint Noise_PublicKeyInfo_set_algorithm(Noise_PublicKeyInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n        obj->algorithm = (char *)malloc(size + 1);\n        if (obj->algorithm) {\n            memcpy(obj->algorithm, value, size);\n            obj->algorithm[size] = 0;\n            obj->algorithm_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->algorithm_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PublicKeyInfo_clear_key(Noise_PublicKeyInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->key, obj->key_size_);\n        obj->key = 0;\n        obj->key_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PublicKeyInfo_has_key(const Noise_PublicKeyInfo *obj)\n{\n    return obj ? (obj->key != 0) : 0;\n}\n\nconst void *Noise_PublicKeyInfo_get_key(const Noise_PublicKeyInfo *obj)\n{\n    return obj ? obj->key : 0;\n}\n\nsize_t Noise_PublicKeyInfo_get_size_key(const Noise_PublicKeyInfo *obj)\n{\n    return obj ? obj->key_size_ : 0;\n}\n\nint Noise_PublicKeyInfo_set_key(Noise_PublicKeyInfo *obj, const void *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->key, obj->key_size_);\n        obj->key = (void *)malloc(size ? size : 1);\n        if (obj->key) {\n            memcpy(obj->key, value, size);\n            obj->key_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->key_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_MetaInfo_new(Noise_MetaInfo **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_MetaInfo *)calloc(1, sizeof(Noise_MetaInfo));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_MetaInfo_free(Noise_MetaInfo *obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->name, obj->name_size_);\n    noise_protobuf_free_memory(obj->value, obj->value_size_);\n    noise_protobuf_free_memory(obj, sizeof(Noise_MetaInfo));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_MetaInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_MetaInfo *obj)\n{\n    size_t end_posn;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    if (obj->value)\n        noise_protobuf_write_string(pbuf, 2, obj->value, obj->value_size_);\n    if (obj->name)\n        noise_protobuf_write_string(pbuf, 1, obj->name, obj->name_size_);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_MetaInfo_read(NoiseProtobuf *pbuf, int tag, Noise_MetaInfo **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_MetaInfo_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_free_memory((*obj)->name, (*obj)->name_size_);\n                (*obj)->name = 0;\n                (*obj)->name_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 1, &((*obj)->name), 0, &((*obj)->name_size_));\n            } break;\n            case 2: {\n                noise_protobuf_free_memory((*obj)->value, (*obj)->value_size_);\n                (*obj)->value = 0;\n                (*obj)->value_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 2, &((*obj)->value), 0, &((*obj)->value_size_));\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_MetaInfo_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_MetaInfo_clear_name(Noise_MetaInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = 0;\n        obj->name_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_MetaInfo_has_name(const Noise_MetaInfo *obj)\n{\n    return obj ? (obj->name != 0) : 0;\n}\n\nconst char *Noise_MetaInfo_get_name(const Noise_MetaInfo *obj)\n{\n    return obj ? obj->name : 0;\n}\n\nsize_t Noise_MetaInfo_get_size_name(const Noise_MetaInfo *obj)\n{\n    return obj ? obj->name_size_ : 0;\n}\n\nint Noise_MetaInfo_set_name(Noise_MetaInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = (char *)malloc(size + 1);\n        if (obj->name) {\n            memcpy(obj->name, value, size);\n            obj->name[size] = 0;\n            obj->name_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->name_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_MetaInfo_clear_value(Noise_MetaInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->value, obj->value_size_);\n        obj->value = 0;\n        obj->value_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_MetaInfo_has_value(const Noise_MetaInfo *obj)\n{\n    return obj ? (obj->value != 0) : 0;\n}\n\nconst char *Noise_MetaInfo_get_value(const Noise_MetaInfo *obj)\n{\n    return obj ? obj->value : 0;\n}\n\nsize_t Noise_MetaInfo_get_size_value(const Noise_MetaInfo *obj)\n{\n    return obj ? obj->value_size_ : 0;\n}\n\nint Noise_MetaInfo_set_value(Noise_MetaInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->value, obj->value_size_);\n        obj->value = (char *)malloc(size + 1);\n        if (obj->value) {\n            memcpy(obj->value, value, size);\n            obj->value[size] = 0;\n            obj->value_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->value_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_new(Noise_Signature **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_Signature *)calloc(1, sizeof(Noise_Signature));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Signature_free(Noise_Signature *obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->id, obj->id_size_);\n    noise_protobuf_free_memory(obj->name, obj->name_size_);\n    Noise_PublicKeyInfo_free(obj->signing_key);\n    noise_protobuf_free_memory(obj->hash_algorithm, obj->hash_algorithm_size_);\n    Noise_ExtraSignedInfo_free(obj->extra_signed_info);\n    noise_protobuf_free_memory(obj->signature, obj->signature_size_);\n    noise_protobuf_free_memory(obj, sizeof(Noise_Signature));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Signature_write(NoiseProtobuf *pbuf, int tag, const Noise_Signature *obj)\n{\n    size_t end_posn;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    if (obj->signature)\n        noise_protobuf_write_bytes(pbuf, 15, obj->signature, obj->signature_size_);\n    if (obj->extra_signed_info)\n        Noise_ExtraSignedInfo_write(pbuf, 5, obj->extra_signed_info);\n    if (obj->hash_algorithm)\n        noise_protobuf_write_string(pbuf, 4, obj->hash_algorithm, obj->hash_algorithm_size_);\n    if (obj->signing_key)\n        Noise_PublicKeyInfo_write(pbuf, 3, obj->signing_key);\n    if (obj->name)\n        noise_protobuf_write_string(pbuf, 2, obj->name, obj->name_size_);\n    if (obj->id)\n        noise_protobuf_write_string(pbuf, 1, obj->id, obj->id_size_);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_Signature_read(NoiseProtobuf *pbuf, int tag, Noise_Signature **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_Signature_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_free_memory((*obj)->id, (*obj)->id_size_);\n                (*obj)->id = 0;\n                (*obj)->id_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 1, &((*obj)->id), 0, &((*obj)->id_size_));\n            } break;\n            case 2: {\n                noise_protobuf_free_memory((*obj)->name, (*obj)->name_size_);\n                (*obj)->name = 0;\n                (*obj)->name_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 2, &((*obj)->name), 0, &((*obj)->name_size_));\n            } break;\n            case 3: {\n                Noise_PublicKeyInfo_free((*obj)->signing_key);\n                (*obj)->signing_key = 0;\n                Noise_PublicKeyInfo_read(pbuf, 3, &((*obj)->signing_key));\n            } break;\n            case 4: {\n                noise_protobuf_free_memory((*obj)->hash_algorithm, (*obj)->hash_algorithm_size_);\n                (*obj)->hash_algorithm = 0;\n                (*obj)->hash_algorithm_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 4, &((*obj)->hash_algorithm), 0, &((*obj)->hash_algorithm_size_));\n            } break;\n            case 5: {\n                Noise_ExtraSignedInfo_free((*obj)->extra_signed_info);\n                (*obj)->extra_signed_info = 0;\n                Noise_ExtraSignedInfo_read(pbuf, 5, &((*obj)->extra_signed_info));\n            } break;\n            case 15: {\n                noise_protobuf_free_memory((*obj)->signature, (*obj)->signature_size_);\n                (*obj)->signature = 0;\n                (*obj)->signature_size_ = 0;\n                noise_protobuf_read_alloc_bytes(pbuf, 15, &((*obj)->signature), 0, &((*obj)->signature_size_));\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_Signature_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_Signature_clear_id(Noise_Signature *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->id, obj->id_size_);\n        obj->id = 0;\n        obj->id_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_has_id(const Noise_Signature *obj)\n{\n    return obj ? (obj->id != 0) : 0;\n}\n\nconst char *Noise_Signature_get_id(const Noise_Signature *obj)\n{\n    return obj ? obj->id : 0;\n}\n\nsize_t Noise_Signature_get_size_id(const Noise_Signature *obj)\n{\n    return obj ? obj->id_size_ : 0;\n}\n\nint Noise_Signature_set_id(Noise_Signature *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->id, obj->id_size_);\n        obj->id = (char *)malloc(size + 1);\n        if (obj->id) {\n            memcpy(obj->id, value, size);\n            obj->id[size] = 0;\n            obj->id_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->id_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_clear_name(Noise_Signature *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = 0;\n        obj->name_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_has_name(const Noise_Signature *obj)\n{\n    return obj ? (obj->name != 0) : 0;\n}\n\nconst char *Noise_Signature_get_name(const Noise_Signature *obj)\n{\n    return obj ? obj->name : 0;\n}\n\nsize_t Noise_Signature_get_size_name(const Noise_Signature *obj)\n{\n    return obj ? obj->name_size_ : 0;\n}\n\nint Noise_Signature_set_name(Noise_Signature *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = (char *)malloc(size + 1);\n        if (obj->name) {\n            memcpy(obj->name, value, size);\n            obj->name[size] = 0;\n            obj->name_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->name_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_clear_signing_key(Noise_Signature *obj)\n{\n    if (obj) {\n        Noise_PublicKeyInfo_free(obj->signing_key);\n        obj->signing_key = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_has_signing_key(const Noise_Signature *obj)\n{\n    return obj ? (obj->signing_key != 0) : 0;\n}\n\nNoise_PublicKeyInfo *Noise_Signature_get_signing_key(const Noise_Signature *obj)\n{\n    return obj ? obj->signing_key : 0;\n}\n\nint Noise_Signature_get_new_signing_key(Noise_Signature *obj, Noise_PublicKeyInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_PublicKeyInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    Noise_PublicKeyInfo_free(obj->signing_key);\n    obj->signing_key = *value;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Signature_clear_hash_algorithm(Noise_Signature *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->hash_algorithm, obj->hash_algorithm_size_);\n        obj->hash_algorithm = 0;\n        obj->hash_algorithm_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_has_hash_algorithm(const Noise_Signature *obj)\n{\n    return obj ? (obj->hash_algorithm != 0) : 0;\n}\n\nconst char *Noise_Signature_get_hash_algorithm(const Noise_Signature *obj)\n{\n    return obj ? obj->hash_algorithm : 0;\n}\n\nsize_t Noise_Signature_get_size_hash_algorithm(const Noise_Signature *obj)\n{\n    return obj ? obj->hash_algorithm_size_ : 0;\n}\n\nint Noise_Signature_set_hash_algorithm(Noise_Signature *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->hash_algorithm, obj->hash_algorithm_size_);\n        obj->hash_algorithm = (char *)malloc(size + 1);\n        if (obj->hash_algorithm) {\n            memcpy(obj->hash_algorithm, value, size);\n            obj->hash_algorithm[size] = 0;\n            obj->hash_algorithm_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->hash_algorithm_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_clear_extra_signed_info(Noise_Signature *obj)\n{\n    if (obj) {\n        Noise_ExtraSignedInfo_free(obj->extra_signed_info);\n        obj->extra_signed_info = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_has_extra_signed_info(const Noise_Signature *obj)\n{\n    return obj ? (obj->extra_signed_info != 0) : 0;\n}\n\nNoise_ExtraSignedInfo *Noise_Signature_get_extra_signed_info(const Noise_Signature *obj)\n{\n    return obj ? obj->extra_signed_info : 0;\n}\n\nint Noise_Signature_get_new_extra_signed_info(Noise_Signature *obj, Noise_ExtraSignedInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_ExtraSignedInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    Noise_ExtraSignedInfo_free(obj->extra_signed_info);\n    obj->extra_signed_info = *value;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_Signature_clear_signature(Noise_Signature *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->signature, obj->signature_size_);\n        obj->signature = 0;\n        obj->signature_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_Signature_has_signature(const Noise_Signature *obj)\n{\n    return obj ? (obj->signature != 0) : 0;\n}\n\nconst void *Noise_Signature_get_signature(const Noise_Signature *obj)\n{\n    return obj ? obj->signature : 0;\n}\n\nsize_t Noise_Signature_get_size_signature(const Noise_Signature *obj)\n{\n    return obj ? obj->signature_size_ : 0;\n}\n\nint Noise_Signature_set_signature(Noise_Signature *obj, const void *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->signature, obj->signature_size_);\n        obj->signature = (void *)malloc(size ? size : 1);\n        if (obj->signature) {\n            memcpy(obj->signature, value, size);\n            obj->signature_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->signature_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_new(Noise_ExtraSignedInfo **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_ExtraSignedInfo *)calloc(1, sizeof(Noise_ExtraSignedInfo));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_ExtraSignedInfo_free(Noise_ExtraSignedInfo *obj)\n{\n    size_t index;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->nonce, obj->nonce_size_);\n    noise_protobuf_free_memory(obj->valid_from, obj->valid_from_size_);\n    noise_protobuf_free_memory(obj->valid_to, obj->valid_to_size_);\n    for (index = 0; index < obj->meta_count_; ++index)\n        Noise_MetaInfo_free(obj->meta[index]);\n    noise_protobuf_free_memory(obj->meta, obj->meta_max_ * sizeof(Noise_MetaInfo *));\n    noise_protobuf_free_memory(obj, sizeof(Noise_ExtraSignedInfo));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_ExtraSignedInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_ExtraSignedInfo *obj)\n{\n    size_t end_posn;\n    size_t index;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    for (index = obj->meta_count_; index > 0; --index)\n        Noise_MetaInfo_write(pbuf, 4, obj->meta[index - 1]);\n    if (obj->valid_to)\n        noise_protobuf_write_string(pbuf, 3, obj->valid_to, obj->valid_to_size_);\n    if (obj->valid_from)\n        noise_protobuf_write_string(pbuf, 2, obj->valid_from, obj->valid_from_size_);\n    if (obj->nonce)\n        noise_protobuf_write_bytes(pbuf, 1, obj->nonce, obj->nonce_size_);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_ExtraSignedInfo_read(NoiseProtobuf *pbuf, int tag, Noise_ExtraSignedInfo **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_ExtraSignedInfo_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_free_memory((*obj)->nonce, (*obj)->nonce_size_);\n                (*obj)->nonce = 0;\n                (*obj)->nonce_size_ = 0;\n                noise_protobuf_read_alloc_bytes(pbuf, 1, &((*obj)->nonce), 0, &((*obj)->nonce_size_));\n            } break;\n            case 2: {\n                noise_protobuf_free_memory((*obj)->valid_from, (*obj)->valid_from_size_);\n                (*obj)->valid_from = 0;\n                (*obj)->valid_from_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 2, &((*obj)->valid_from), 0, &((*obj)->valid_from_size_));\n            } break;\n            case 3: {\n                noise_protobuf_free_memory((*obj)->valid_to, (*obj)->valid_to_size_);\n                (*obj)->valid_to = 0;\n                (*obj)->valid_to_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 3, &((*obj)->valid_to), 0, &((*obj)->valid_to_size_));\n            } break;\n            case 4: {\n                Noise_MetaInfo *value = 0;\n                int err;\n                Noise_MetaInfo_read(pbuf, 4, &value);\n                err = noise_protobuf_add_to_array((void **)&((*obj)->meta), &((*obj)->meta_count_), &((*obj)->meta_max_), &value, sizeof(value));\n                if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\n                   pbuf->error = err;\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_ExtraSignedInfo_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_ExtraSignedInfo_clear_nonce(Noise_ExtraSignedInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->nonce, obj->nonce_size_);\n        obj->nonce = 0;\n        obj->nonce_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_has_nonce(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? (obj->nonce != 0) : 0;\n}\n\nconst void *Noise_ExtraSignedInfo_get_nonce(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? obj->nonce : 0;\n}\n\nsize_t Noise_ExtraSignedInfo_get_size_nonce(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? obj->nonce_size_ : 0;\n}\n\nint Noise_ExtraSignedInfo_set_nonce(Noise_ExtraSignedInfo *obj, const void *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->nonce, obj->nonce_size_);\n        obj->nonce = (void *)malloc(size ? size : 1);\n        if (obj->nonce) {\n            memcpy(obj->nonce, value, size);\n            obj->nonce_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->nonce_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_clear_valid_from(Noise_ExtraSignedInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->valid_from, obj->valid_from_size_);\n        obj->valid_from = 0;\n        obj->valid_from_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_has_valid_from(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? (obj->valid_from != 0) : 0;\n}\n\nconst char *Noise_ExtraSignedInfo_get_valid_from(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? obj->valid_from : 0;\n}\n\nsize_t Noise_ExtraSignedInfo_get_size_valid_from(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? obj->valid_from_size_ : 0;\n}\n\nint Noise_ExtraSignedInfo_set_valid_from(Noise_ExtraSignedInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->valid_from, obj->valid_from_size_);\n        obj->valid_from = (char *)malloc(size + 1);\n        if (obj->valid_from) {\n            memcpy(obj->valid_from, value, size);\n            obj->valid_from[size] = 0;\n            obj->valid_from_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->valid_from_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_clear_valid_to(Noise_ExtraSignedInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->valid_to, obj->valid_to_size_);\n        obj->valid_to = 0;\n        obj->valid_to_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_has_valid_to(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? (obj->valid_to != 0) : 0;\n}\n\nconst char *Noise_ExtraSignedInfo_get_valid_to(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? obj->valid_to : 0;\n}\n\nsize_t Noise_ExtraSignedInfo_get_size_valid_to(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? obj->valid_to_size_ : 0;\n}\n\nint Noise_ExtraSignedInfo_set_valid_to(Noise_ExtraSignedInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->valid_to, obj->valid_to_size_);\n        obj->valid_to = (char *)malloc(size + 1);\n        if (obj->valid_to) {\n            memcpy(obj->valid_to, value, size);\n            obj->valid_to[size] = 0;\n            obj->valid_to_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->valid_to_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_clear_meta(Noise_ExtraSignedInfo *obj)\n{\n    size_t index;\n    if (obj) {\n        for (index = 0; index < obj->meta_count_; ++index)\n            Noise_MetaInfo_free(obj->meta[index]);\n        noise_protobuf_free_memory(obj->meta, obj->meta_max_ * sizeof(Noise_MetaInfo *));\n        obj->meta = 0;\n        obj->meta_count_ = 0;\n        obj->meta_max_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_ExtraSignedInfo_has_meta(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? (obj->meta_count_ != 0) : 0;\n}\n\nsize_t Noise_ExtraSignedInfo_count_meta(const Noise_ExtraSignedInfo *obj)\n{\n    return obj ? obj->meta_count_ : 0;\n}\n\nNoise_MetaInfo *Noise_ExtraSignedInfo_get_at_meta(const Noise_ExtraSignedInfo *obj, size_t index)\n{\n    if (obj && index < obj->meta_count_)\n        return obj->meta[index];\n    else\n        return 0;\n}\n\nint Noise_ExtraSignedInfo_add_meta(Noise_ExtraSignedInfo *obj, Noise_MetaInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_MetaInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_add_to_array((void **)&(obj->meta), &(obj->meta_count_), &(obj->meta_max_), value, sizeof(*value));\n    if (err != NOISE_ERROR_NONE) {\n        Noise_MetaInfo_free(*value);\n        *value = 0;\n        return err;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_ExtraSignedInfo_insert_meta(Noise_ExtraSignedInfo *obj, size_t index, Noise_MetaInfo *value)\n{\n    if (!obj || !value)\n        return NOISE_ERROR_INVALID_PARAM;\n    return noise_protobuf_insert_into_array((void **)&(obj->meta), &(obj->meta_count_), &(obj->meta_max_), index, &value, sizeof(value));\n}\n\nint Noise_EncryptedPrivateKey_new(Noise_EncryptedPrivateKey **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_EncryptedPrivateKey *)calloc(1, sizeof(Noise_EncryptedPrivateKey));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_EncryptedPrivateKey_free(Noise_EncryptedPrivateKey *obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n    noise_protobuf_free_memory(obj->salt, obj->salt_size_);\n    noise_protobuf_free_memory(obj->encrypted_data, obj->encrypted_data_size_);\n    noise_protobuf_free_memory(obj, sizeof(Noise_EncryptedPrivateKey));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_EncryptedPrivateKey_write(NoiseProtobuf *pbuf, int tag, const Noise_EncryptedPrivateKey *obj)\n{\n    size_t end_posn;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    if (obj->encrypted_data)\n        noise_protobuf_write_bytes(pbuf, 15, obj->encrypted_data, obj->encrypted_data_size_);\n    if (obj->iterations)\n        noise_protobuf_write_uint32(pbuf, 13, obj->iterations);\n    if (obj->salt)\n        noise_protobuf_write_bytes(pbuf, 12, obj->salt, obj->salt_size_);\n    if (obj->algorithm)\n        noise_protobuf_write_string(pbuf, 11, obj->algorithm, obj->algorithm_size_);\n    if (obj->version)\n        noise_protobuf_write_uint32(pbuf, 10, obj->version);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_EncryptedPrivateKey_read(NoiseProtobuf *pbuf, int tag, Noise_EncryptedPrivateKey **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_EncryptedPrivateKey_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 10: {\n                noise_protobuf_read_uint32(pbuf, 10, &((*obj)->version));\n            } break;\n            case 11: {\n                noise_protobuf_free_memory((*obj)->algorithm, (*obj)->algorithm_size_);\n                (*obj)->algorithm = 0;\n                (*obj)->algorithm_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 11, &((*obj)->algorithm), 0, &((*obj)->algorithm_size_));\n            } break;\n            case 12: {\n                noise_protobuf_free_memory((*obj)->salt, (*obj)->salt_size_);\n                (*obj)->salt = 0;\n                (*obj)->salt_size_ = 0;\n                noise_protobuf_read_alloc_bytes(pbuf, 12, &((*obj)->salt), 0, &((*obj)->salt_size_));\n            } break;\n            case 13: {\n                noise_protobuf_read_uint32(pbuf, 13, &((*obj)->iterations));\n            } break;\n            case 15: {\n                noise_protobuf_free_memory((*obj)->encrypted_data, (*obj)->encrypted_data_size_);\n                (*obj)->encrypted_data = 0;\n                (*obj)->encrypted_data_size_ = 0;\n                noise_protobuf_read_alloc_bytes(pbuf, 15, &((*obj)->encrypted_data), 0, &((*obj)->encrypted_data_size_));\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_EncryptedPrivateKey_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_EncryptedPrivateKey_clear_version(Noise_EncryptedPrivateKey *obj)\n{\n    if (obj) {\n        obj->version = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_has_version(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? (obj->version != 0) : 0;\n}\n\nuint32_t Noise_EncryptedPrivateKey_get_version(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->version : 0;\n}\n\nint Noise_EncryptedPrivateKey_set_version(Noise_EncryptedPrivateKey *obj, uint32_t value)\n{\n    if (obj) {\n        obj->version = value;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_clear_algorithm(Noise_EncryptedPrivateKey *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n        obj->algorithm = 0;\n        obj->algorithm_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_has_algorithm(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? (obj->algorithm != 0) : 0;\n}\n\nconst char *Noise_EncryptedPrivateKey_get_algorithm(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->algorithm : 0;\n}\n\nsize_t Noise_EncryptedPrivateKey_get_size_algorithm(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->algorithm_size_ : 0;\n}\n\nint Noise_EncryptedPrivateKey_set_algorithm(Noise_EncryptedPrivateKey *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n        obj->algorithm = (char *)malloc(size + 1);\n        if (obj->algorithm) {\n            memcpy(obj->algorithm, value, size);\n            obj->algorithm[size] = 0;\n            obj->algorithm_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->algorithm_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_clear_salt(Noise_EncryptedPrivateKey *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->salt, obj->salt_size_);\n        obj->salt = 0;\n        obj->salt_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_has_salt(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? (obj->salt != 0) : 0;\n}\n\nconst void *Noise_EncryptedPrivateKey_get_salt(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->salt : 0;\n}\n\nsize_t Noise_EncryptedPrivateKey_get_size_salt(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->salt_size_ : 0;\n}\n\nint Noise_EncryptedPrivateKey_set_salt(Noise_EncryptedPrivateKey *obj, const void *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->salt, obj->salt_size_);\n        obj->salt = (void *)malloc(size ? size : 1);\n        if (obj->salt) {\n            memcpy(obj->salt, value, size);\n            obj->salt_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->salt_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_clear_iterations(Noise_EncryptedPrivateKey *obj)\n{\n    if (obj) {\n        obj->iterations = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_has_iterations(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? (obj->iterations != 0) : 0;\n}\n\nuint32_t Noise_EncryptedPrivateKey_get_iterations(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->iterations : 0;\n}\n\nint Noise_EncryptedPrivateKey_set_iterations(Noise_EncryptedPrivateKey *obj, uint32_t value)\n{\n    if (obj) {\n        obj->iterations = value;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_clear_encrypted_data(Noise_EncryptedPrivateKey *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->encrypted_data, obj->encrypted_data_size_);\n        obj->encrypted_data = 0;\n        obj->encrypted_data_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_EncryptedPrivateKey_has_encrypted_data(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? (obj->encrypted_data != 0) : 0;\n}\n\nconst void *Noise_EncryptedPrivateKey_get_encrypted_data(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->encrypted_data : 0;\n}\n\nsize_t Noise_EncryptedPrivateKey_get_size_encrypted_data(const Noise_EncryptedPrivateKey *obj)\n{\n    return obj ? obj->encrypted_data_size_ : 0;\n}\n\nint Noise_EncryptedPrivateKey_set_encrypted_data(Noise_EncryptedPrivateKey *obj, const void *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->encrypted_data, obj->encrypted_data_size_);\n        obj->encrypted_data = (void *)malloc(size ? size : 1);\n        if (obj->encrypted_data) {\n            memcpy(obj->encrypted_data, value, size);\n            obj->encrypted_data_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->encrypted_data_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_new(Noise_PrivateKey **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_PrivateKey *)calloc(1, sizeof(Noise_PrivateKey));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PrivateKey_free(Noise_PrivateKey *obj)\n{\n    size_t index;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->id, obj->id_size_);\n    noise_protobuf_free_memory(obj->name, obj->name_size_);\n    noise_protobuf_free_memory(obj->role, obj->role_size_);\n    for (index = 0; index < obj->keys_count_; ++index)\n        Noise_PrivateKeyInfo_free(obj->keys[index]);\n    noise_protobuf_free_memory(obj->keys, obj->keys_max_ * sizeof(Noise_PrivateKeyInfo *));\n    for (index = 0; index < obj->meta_count_; ++index)\n        Noise_MetaInfo_free(obj->meta[index]);\n    noise_protobuf_free_memory(obj->meta, obj->meta_max_ * sizeof(Noise_MetaInfo *));\n    noise_protobuf_free_memory(obj, sizeof(Noise_PrivateKey));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PrivateKey_write(NoiseProtobuf *pbuf, int tag, const Noise_PrivateKey *obj)\n{\n    size_t end_posn;\n    size_t index;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    for (index = obj->meta_count_; index > 0; --index)\n        Noise_MetaInfo_write(pbuf, 5, obj->meta[index - 1]);\n    for (index = obj->keys_count_; index > 0; --index)\n        Noise_PrivateKeyInfo_write(pbuf, 4, obj->keys[index - 1]);\n    if (obj->role)\n        noise_protobuf_write_string(pbuf, 3, obj->role, obj->role_size_);\n    if (obj->name)\n        noise_protobuf_write_string(pbuf, 2, obj->name, obj->name_size_);\n    if (obj->id)\n        noise_protobuf_write_string(pbuf, 1, obj->id, obj->id_size_);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_PrivateKey_read(NoiseProtobuf *pbuf, int tag, Noise_PrivateKey **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_PrivateKey_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_free_memory((*obj)->id, (*obj)->id_size_);\n                (*obj)->id = 0;\n                (*obj)->id_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 1, &((*obj)->id), 0, &((*obj)->id_size_));\n            } break;\n            case 2: {\n                noise_protobuf_free_memory((*obj)->name, (*obj)->name_size_);\n                (*obj)->name = 0;\n                (*obj)->name_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 2, &((*obj)->name), 0, &((*obj)->name_size_));\n            } break;\n            case 3: {\n                noise_protobuf_free_memory((*obj)->role, (*obj)->role_size_);\n                (*obj)->role = 0;\n                (*obj)->role_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 3, &((*obj)->role), 0, &((*obj)->role_size_));\n            } break;\n            case 4: {\n                Noise_PrivateKeyInfo *value = 0;\n                int err;\n                Noise_PrivateKeyInfo_read(pbuf, 4, &value);\n                err = noise_protobuf_add_to_array((void **)&((*obj)->keys), &((*obj)->keys_count_), &((*obj)->keys_max_), &value, sizeof(value));\n                if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\n                   pbuf->error = err;\n            } break;\n            case 5: {\n                Noise_MetaInfo *value = 0;\n                int err;\n                Noise_MetaInfo_read(pbuf, 5, &value);\n                err = noise_protobuf_add_to_array((void **)&((*obj)->meta), &((*obj)->meta_count_), &((*obj)->meta_max_), &value, sizeof(value));\n                if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\n                   pbuf->error = err;\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_PrivateKey_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_PrivateKey_clear_id(Noise_PrivateKey *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->id, obj->id_size_);\n        obj->id = 0;\n        obj->id_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_has_id(const Noise_PrivateKey *obj)\n{\n    return obj ? (obj->id != 0) : 0;\n}\n\nconst char *Noise_PrivateKey_get_id(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->id : 0;\n}\n\nsize_t Noise_PrivateKey_get_size_id(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->id_size_ : 0;\n}\n\nint Noise_PrivateKey_set_id(Noise_PrivateKey *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->id, obj->id_size_);\n        obj->id = (char *)malloc(size + 1);\n        if (obj->id) {\n            memcpy(obj->id, value, size);\n            obj->id[size] = 0;\n            obj->id_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->id_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_clear_name(Noise_PrivateKey *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = 0;\n        obj->name_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_has_name(const Noise_PrivateKey *obj)\n{\n    return obj ? (obj->name != 0) : 0;\n}\n\nconst char *Noise_PrivateKey_get_name(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->name : 0;\n}\n\nsize_t Noise_PrivateKey_get_size_name(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->name_size_ : 0;\n}\n\nint Noise_PrivateKey_set_name(Noise_PrivateKey *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->name, obj->name_size_);\n        obj->name = (char *)malloc(size + 1);\n        if (obj->name) {\n            memcpy(obj->name, value, size);\n            obj->name[size] = 0;\n            obj->name_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->name_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_clear_role(Noise_PrivateKey *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->role, obj->role_size_);\n        obj->role = 0;\n        obj->role_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_has_role(const Noise_PrivateKey *obj)\n{\n    return obj ? (obj->role != 0) : 0;\n}\n\nconst char *Noise_PrivateKey_get_role(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->role : 0;\n}\n\nsize_t Noise_PrivateKey_get_size_role(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->role_size_ : 0;\n}\n\nint Noise_PrivateKey_set_role(Noise_PrivateKey *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->role, obj->role_size_);\n        obj->role = (char *)malloc(size + 1);\n        if (obj->role) {\n            memcpy(obj->role, value, size);\n            obj->role[size] = 0;\n            obj->role_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->role_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_clear_keys(Noise_PrivateKey *obj)\n{\n    size_t index;\n    if (obj) {\n        for (index = 0; index < obj->keys_count_; ++index)\n            Noise_PrivateKeyInfo_free(obj->keys[index]);\n        noise_protobuf_free_memory(obj->keys, obj->keys_max_ * sizeof(Noise_PrivateKeyInfo *));\n        obj->keys = 0;\n        obj->keys_count_ = 0;\n        obj->keys_max_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_has_keys(const Noise_PrivateKey *obj)\n{\n    return obj ? (obj->keys_count_ != 0) : 0;\n}\n\nsize_t Noise_PrivateKey_count_keys(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->keys_count_ : 0;\n}\n\nNoise_PrivateKeyInfo *Noise_PrivateKey_get_at_keys(const Noise_PrivateKey *obj, size_t index)\n{\n    if (obj && index < obj->keys_count_)\n        return obj->keys[index];\n    else\n        return 0;\n}\n\nint Noise_PrivateKey_add_keys(Noise_PrivateKey *obj, Noise_PrivateKeyInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_PrivateKeyInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_add_to_array((void **)&(obj->keys), &(obj->keys_count_), &(obj->keys_max_), value, sizeof(*value));\n    if (err != NOISE_ERROR_NONE) {\n        Noise_PrivateKeyInfo_free(*value);\n        *value = 0;\n        return err;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PrivateKey_insert_keys(Noise_PrivateKey *obj, size_t index, Noise_PrivateKeyInfo *value)\n{\n    if (!obj || !value)\n        return NOISE_ERROR_INVALID_PARAM;\n    return noise_protobuf_insert_into_array((void **)&(obj->keys), &(obj->keys_count_), &(obj->keys_max_), index, &value, sizeof(value));\n}\n\nint Noise_PrivateKey_clear_meta(Noise_PrivateKey *obj)\n{\n    size_t index;\n    if (obj) {\n        for (index = 0; index < obj->meta_count_; ++index)\n            Noise_MetaInfo_free(obj->meta[index]);\n        noise_protobuf_free_memory(obj->meta, obj->meta_max_ * sizeof(Noise_MetaInfo *));\n        obj->meta = 0;\n        obj->meta_count_ = 0;\n        obj->meta_max_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKey_has_meta(const Noise_PrivateKey *obj)\n{\n    return obj ? (obj->meta_count_ != 0) : 0;\n}\n\nsize_t Noise_PrivateKey_count_meta(const Noise_PrivateKey *obj)\n{\n    return obj ? obj->meta_count_ : 0;\n}\n\nNoise_MetaInfo *Noise_PrivateKey_get_at_meta(const Noise_PrivateKey *obj, size_t index)\n{\n    if (obj && index < obj->meta_count_)\n        return obj->meta[index];\n    else\n        return 0;\n}\n\nint Noise_PrivateKey_add_meta(Noise_PrivateKey *obj, Noise_MetaInfo **value)\n{\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_MetaInfo_new(value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_add_to_array((void **)&(obj->meta), &(obj->meta_count_), &(obj->meta_max_), value, sizeof(*value));\n    if (err != NOISE_ERROR_NONE) {\n        Noise_MetaInfo_free(*value);\n        *value = 0;\n        return err;\n    }\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PrivateKey_insert_meta(Noise_PrivateKey *obj, size_t index, Noise_MetaInfo *value)\n{\n    if (!obj || !value)\n        return NOISE_ERROR_INVALID_PARAM;\n    return noise_protobuf_insert_into_array((void **)&(obj->meta), &(obj->meta_count_), &(obj->meta_max_), index, &value, sizeof(value));\n}\n\nint Noise_PrivateKeyInfo_new(Noise_PrivateKeyInfo **obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = (Noise_PrivateKeyInfo *)calloc(1, sizeof(Noise_PrivateKeyInfo));\n    if (!(*obj))\n        return NOISE_ERROR_NO_MEMORY;\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PrivateKeyInfo_free(Noise_PrivateKeyInfo *obj)\n{\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n    noise_protobuf_free_memory(obj->key, obj->key_size_);\n    noise_protobuf_free_memory(obj, sizeof(Noise_PrivateKeyInfo));\n    return NOISE_ERROR_NONE;\n}\n\nint Noise_PrivateKeyInfo_write(NoiseProtobuf *pbuf, int tag, const Noise_PrivateKeyInfo *obj)\n{\n    size_t end_posn;\n    if (!pbuf || !obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    noise_protobuf_write_end_element(pbuf, &end_posn);\n    if (obj->key)\n        noise_protobuf_write_bytes(pbuf, 2, obj->key, obj->key_size_);\n    if (obj->algorithm)\n        noise_protobuf_write_string(pbuf, 1, obj->algorithm, obj->algorithm_size_);\n    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\n}\n\nint Noise_PrivateKeyInfo_read(NoiseProtobuf *pbuf, int tag, Noise_PrivateKeyInfo **obj)\n{\n    int err;\n    size_t end_posn;\n    if (!obj)\n        return NOISE_ERROR_INVALID_PARAM;\n    *obj = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = Noise_PrivateKeyInfo_new(obj);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\n    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n        switch (noise_protobuf_peek_tag(pbuf)) {\n            case 1: {\n                noise_protobuf_free_memory((*obj)->algorithm, (*obj)->algorithm_size_);\n                (*obj)->algorithm = 0;\n                (*obj)->algorithm_size_ = 0;\n                noise_protobuf_read_alloc_string(pbuf, 1, &((*obj)->algorithm), 0, &((*obj)->algorithm_size_));\n            } break;\n            case 2: {\n                noise_protobuf_free_memory((*obj)->key, (*obj)->key_size_);\n                (*obj)->key = 0;\n                (*obj)->key_size_ = 0;\n                noise_protobuf_read_alloc_bytes(pbuf, 2, &((*obj)->key), 0, &((*obj)->key_size_));\n            } break;\n            default: {\n                noise_protobuf_read_skip(pbuf);\n            } break;\n        }\n    }\n    err = noise_protobuf_read_end_element(pbuf, end_posn);\n    if (err != NOISE_ERROR_NONE) {\n        Noise_PrivateKeyInfo_free(*obj);\n        *obj = 0;\n    }\n    return err;\n}\n\nint Noise_PrivateKeyInfo_clear_algorithm(Noise_PrivateKeyInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n        obj->algorithm = 0;\n        obj->algorithm_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKeyInfo_has_algorithm(const Noise_PrivateKeyInfo *obj)\n{\n    return obj ? (obj->algorithm != 0) : 0;\n}\n\nconst char *Noise_PrivateKeyInfo_get_algorithm(const Noise_PrivateKeyInfo *obj)\n{\n    return obj ? obj->algorithm : 0;\n}\n\nsize_t Noise_PrivateKeyInfo_get_size_algorithm(const Noise_PrivateKeyInfo *obj)\n{\n    return obj ? obj->algorithm_size_ : 0;\n}\n\nint Noise_PrivateKeyInfo_set_algorithm(Noise_PrivateKeyInfo *obj, const char *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->algorithm, obj->algorithm_size_);\n        obj->algorithm = (char *)malloc(size + 1);\n        if (obj->algorithm) {\n            memcpy(obj->algorithm, value, size);\n            obj->algorithm[size] = 0;\n            obj->algorithm_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->algorithm_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKeyInfo_clear_key(Noise_PrivateKeyInfo *obj)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->key, obj->key_size_);\n        obj->key = 0;\n        obj->key_size_ = 0;\n        return NOISE_ERROR_NONE;\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\nint Noise_PrivateKeyInfo_has_key(const Noise_PrivateKeyInfo *obj)\n{\n    return obj ? (obj->key != 0) : 0;\n}\n\nconst void *Noise_PrivateKeyInfo_get_key(const Noise_PrivateKeyInfo *obj)\n{\n    return obj ? obj->key : 0;\n}\n\nsize_t Noise_PrivateKeyInfo_get_size_key(const Noise_PrivateKeyInfo *obj)\n{\n    return obj ? obj->key_size_ : 0;\n}\n\nint Noise_PrivateKeyInfo_set_key(Noise_PrivateKeyInfo *obj, const void *value, size_t size)\n{\n    if (obj) {\n        noise_protobuf_free_memory(obj->key, obj->key_size_);\n        obj->key = (void *)malloc(size ? size : 1);\n        if (obj->key) {\n            memcpy(obj->key, value, size);\n            obj->key_size_ = size;\n            return NOISE_ERROR_NONE;\n        } else {\n            obj->key_size_ = 0;\n            return NOISE_ERROR_NO_MEMORY;\n        }\n    }\n    return NOISE_ERROR_INVALID_PARAM;\n}\n\n"
  },
  {
    "path": "src/keys/loader.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include <noise/keys.h>\n#include <noise/protocol.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\n/**\n * \\file loader.h\n * \\brief Key loading and saving interface\n */\n\n/**\n * \\file loader.c\n * \\brief Key loading and saving implementation\n */\n\n/**\n * \\defgroup keyloader Key loading and saving API\n */\n/**@{*/\n\n/** @cond */\n\n/**\n * \\brief Version of keys and certificates supported by this library.\n */\n#define NOISE_KEY_VERSION       1\n\n/**\n * \\brief Recommended length for salt values.\n */\n#define NOISE_KEY_SALT_LEN      16\n\n/**\n * \\brief Recommended number of iterations for newly generated private keys.\n */\n#define NOISE_KEY_ITERATIONS    20000\n\n/**\n * \\brief Number of extra bytes of overhead to allow for when allocating\n * memory to hold an EncryptedPrivateKey object.\n */\n#define NOISE_ENC_KEY_OVERHEAD  128\n\n/** @endcond */\n\n/**\n * \\brief Loads the entire contents of a file into memory.\n *\n * \\param filename The name of the file to load from.\n * \\param pbuf The buffer to fill with the loaded data.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a filename is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the format of \\a filename is not\n * as expected.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * load the file's contents.\n * \\return NOISE_ERROR_SYSTEM if \\a filename cannot be opened or read,\n * with further information in the system errno variable.\n *\n * A maximum of NOISE_MAX_PAYLOAD_LEN bytes will be loaded from the file.\n * Longer files will result in NOISE_ERROR_INVALID_FORMAT.\n */\nstatic int noise_load_file\n    (const char *filename, NoiseProtobuf *pbuf)\n{\n    FILE *file;\n    size_t size;\n\n    /* Initialize the buffer */\n    pbuf->data = 0;\n    pbuf->size = 0;\n    pbuf->posn = 0;\n    pbuf->error = NOISE_ERROR_NONE;\n\n    /* Attempt to open the file */\n    if (!filename)\n        return NOISE_ERROR_INVALID_PARAM;\n    file = fopen(filename, \"rb\");\n    if (!file)\n        return NOISE_ERROR_SYSTEM;\n\n    /* Can we get the length of the file now?  If not, allocate\n       the maximum possible size */\n    if (fseek(file, 0L, SEEK_END) >= 0) {\n        off_t length = ftell(file);\n        if (length <= 0 || length > NOISE_MAX_PAYLOAD_LEN) {\n            fclose(file);\n            return NOISE_ERROR_INVALID_FORMAT;\n        }\n        if (fseek(file, 0L, SEEK_SET) < 0) {\n            fclose(file);\n            return NOISE_ERROR_SYSTEM;\n        }\n        pbuf->size = (size_t)length;\n    } else {\n        pbuf->size = NOISE_MAX_PAYLOAD_LEN;\n    }\n    pbuf->data = (uint8_t *)malloc(pbuf->size);\n    if (!(pbuf->data)) {\n        fclose(file);\n        return NOISE_ERROR_NO_MEMORY;\n    }\n\n    /* Read the entire contents of the file into memory */\n    size = fread(pbuf->data, 1, pbuf->size, file);\n    if (!size && ferror(file)) {\n        noise_free(pbuf->data, pbuf->size);\n        pbuf->data = 0;\n        fclose(file);\n        return NOISE_ERROR_SYSTEM;\n    }\n    pbuf->size = size;\n\n    /* Clean up and exit */\n    fclose(file);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Frees the data that was loaded by noise_load_file().\n *\n * \\param pbuf The protobuf to free.\n */\nstatic void noise_load_free(NoiseProtobuf *pbuf)\n{\n    noise_free(pbuf->data, pbuf->size);\n}\n\n/**\n * \\brief Loads a certificate from a file.\n *\n * \\param cert Variable that returns the certificate if one is loaded.\n * \\param filename The name of the file to load the certificate from.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a cert or \\a filename is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the format of \\a filename is not\n * as expected for a certificate or certificate chain.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * load the certificate.\n * \\return NOISE_ERROR_SYSTEM if \\a filename cannot be opened or read,\n * with further information in the system errno variable.\n *\n * The certificate is expected to occupy the entire file.  Trailing\n * unknown data will be rejected as invalid.\n *\n * If the file contains a certificate chain, then this function will\n * load the first certificate in the chain and discard the rest.\n * No verification will be performed on the certificate even if the\n * remaining certificates in the chain would allow verification.\n *\n * \\sa noise_load_certificate_from_buffer(), noise_save_certificate_to_file()\n */\nint noise_load_certificate_from_file\n    (Noise_Certificate **cert, const char *filename)\n{\n    NoiseProtobuf pbuf;\n    int err = noise_load_file(filename, &pbuf);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_load_certificate_from_buffer(cert, &pbuf);\n    noise_load_free(&pbuf);\n    return err;\n}\n\n/**\n * \\brief Loads a certificate from a protobuf.\n *\n * \\param cert Variable that returns the certificate if one is loaded.\n * \\param pbuf The protobuf to load the certificate from.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a cert or \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the format of \\a pbuf is not\n * as expected for a certificate or certificate chain.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * load the certificate.\n *\n * The certificate is expected to occupy the entire buffer.  Trailing\n * unknown data will be rejected as invalid.\n *\n * If the buffer contains a certificate chain, then this function will\n * load the first certificate in the chain and discard the rest.\n * No verification will be performed on the certificate even if the\n * remaining certificates in the chain would allow verification.\n *\n * \\sa noise_load_certificate_from_file(), noise_save_certificate_to_buffer()\n */\nint noise_load_certificate_from_buffer\n    (Noise_Certificate **cert, NoiseProtobuf *pbuf)\n{\n    /* Validate the parameters */\n    if (!cert)\n        return NOISE_ERROR_INVALID_PARAM;\n    *cert = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* No point continuing if the protobuf already has an error */\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n\n    /* Peek at the first tag to determine if this is a certificate chain */\n    if (noise_protobuf_peek_tag(pbuf) == 8) {\n        int err;\n        size_t end_posn = 0;\n        Noise_Certificate *cert2 = 0;\n        noise_protobuf_read_start_element(pbuf, 0, &end_posn);\n        while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\n            err = Noise_Certificate_read(pbuf, 8, &cert2);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            if (!(*cert))\n                *cert = cert2;\n            else\n                Noise_Certificate_free(cert2);\n        }\n        err = noise_protobuf_read_end_element(pbuf, end_posn);\n        if (err != NOISE_ERROR_NONE) {\n            Noise_Certificate_free(*cert);\n            *cert = 0;\n        }\n        return err;\n    }\n\n    /* Load the entire buffer as a certificate */\n    return Noise_Certificate_read(pbuf, 0, cert);\n}\n\n/**\n * \\brief Loads a certificate chain from a file.\n *\n * \\param chain Variable that returns the certificate chain if one is loaded.\n * \\param filename The name of the file to load the certificate chain from.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a chain or \\a filename is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the format of \\a filename is not\n * as expected for a certificate or certificate chain.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * load the certificate chain.\n * \\return NOISE_ERROR_SYSTEM if \\a filename cannot be opened or read,\n * with further information in the system errno variable.\n *\n * The certificate chain is expected to occupy the entire file.  Trailing\n * unknown data will be rejected as invalid.\n *\n * If the file contains a certificate instead of a full chain, then this\n * function will load the certificate and convert it into a chain containing\n * a single certificate.\n *\n * \\sa noise_load_certificate_chain_from_file(),\n * noise_save_certificate_chain_to_file()\n */\nint noise_load_certificate_chain_from_file\n    (Noise_CertificateChain **chain, const char *filename)\n{\n    NoiseProtobuf pbuf;\n    int err = noise_load_file(filename, &pbuf);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_load_certificate_chain_from_buffer(chain, &pbuf);\n    noise_load_free(&pbuf);\n    return err;\n}\n\n/**\n * \\brief Loads a certificate chain from a protobuf.\n *\n * \\param chain Variable that returns the certificate chain if one is loaded.\n * \\param pbuf The protobuf to load the certificate chain from.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a chain or \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the format of \\a pbuf is not\n * as expected for a certificate or certificate chain.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * load the certificate chain.\n *\n * The certificate chain is expected to occupy the entire buffer.  Trailing\n * unknown data will be rejected as invalid.\n *\n * If the buffer contains a certificate instead of a full chain, then this\n * function will load the certificate and convert it into a chain containing\n * a single certificate.\n *\n * \\sa noise_load_certificate_chain_from_file(),\n * noise_save_certificate_chain_to_buffer()\n */\nint noise_load_certificate_chain_from_buffer\n    (Noise_CertificateChain **chain, NoiseProtobuf *pbuf)\n{\n    /* Validate the parameters */\n    if (!chain)\n        return NOISE_ERROR_INVALID_PARAM;\n    *chain = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* No point continuing if the protobuf already has an error */\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n\n    /* Peek at the first tag to determine if this is a singleton certificate */\n    if (noise_protobuf_peek_tag(pbuf) != 8) {\n        Noise_Certificate *cert = 0;\n        int err;\n        err = Noise_CertificateChain_new(chain);\n        if (err != NOISE_ERROR_NONE)\n            return err;\n        err = Noise_Certificate_read(pbuf, 0, &cert);\n        if (err == NOISE_ERROR_NONE)\n            err = Noise_CertificateChain_insert_certs(*chain, 0, cert);\n        if (err != NOISE_ERROR_NONE) {\n            Noise_CertificateChain_free(*chain);\n            *chain = 0;\n        }\n        return err;\n    }\n\n    /* Load the entire buffer as a certificate chain */\n    return Noise_CertificateChain_read(pbuf, 0, chain);\n}\n\n/**\n * \\brief Loads a private key from a file.\n *\n * \\param key Variable that returns the private key if one is loaded.\n * \\param filename The name of the file to load the private key from.\n * \\param passphrase Points to the passphrase to use to unlock the private key.\n * \\param passphrase_len Length of the passphrase in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a key, \\a filename, or \\a passphrase\n * is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the format of the file is not\n * as expected for a private key.\n * \\return NOISE_ERROR_UNKNOWN_NAME if the algorithm that was used to\n * encrypt the private key is unknown.\n * \\return NOISE_ERROR_MAC_FAILURE if the \\a passphrase is incorrect.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * load the private key.\n * \\return NOISE_ERROR_SYSTEM if \\a filename cannot be opened or read,\n * with further information in the system errno variable.\n *\n * The private key is expected to occupy the entire buffer.  Trailing\n * unknown data will be rejected as invalid.\n *\n * \\sa noise_load_private_key_from_buffer(), noise_save_private_key_to_file()\n */\nint noise_load_private_key_from_file\n    (Noise_PrivateKey **key, const char *filename,\n     const void *passphrase, size_t passphrase_len)\n{\n    NoiseProtobuf pbuf;\n    int err = noise_load_file(filename, &pbuf);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_load_private_key_from_buffer\n        (key, &pbuf, passphrase, passphrase_len);\n    noise_load_free(&pbuf);\n    return err;\n}\n\n/**\n * \\brief Parses an algorithm name for encrypting private keys.\n *\n * \\param name The name of the algorithm; e.g. \"ChaChaPoly_BLAKE2b_PBKDF2\".\n * \\param cipher_id Return variable for the cipher identifier.\n * \\param hash_id Return variable for the hash identifier.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_UNKNOWN_NAME if the \\a name is unrecognized.\n *\n * The only supported value for the KDF portion of \\a name is \"PBKDF2\".\n */\nstatic int noise_parse_protect_name\n    (const char *name, int *cipher_id, int *hash_id)\n{\n    char *end;\n    *cipher_id = NOISE_CIPHER_NONE;\n    *hash_id = NOISE_HASH_NONE;\n    end = strchr(name, '_');\n    if (!end)\n        return NOISE_ERROR_UNKNOWN_NAME;\n    *cipher_id = noise_name_to_id(NOISE_CIPHER_CATEGORY, name, end - name);\n    if (*cipher_id == NOISE_CIPHER_NONE)\n        return NOISE_ERROR_UNKNOWN_NAME;\n    name = end + 1;\n    end = strchr(name, '_');\n    if (!end)\n        return NOISE_ERROR_UNKNOWN_NAME;\n    *hash_id = noise_name_to_id(NOISE_HASH_CATEGORY, name, end - name);\n    if (*hash_id == NOISE_HASH_NONE)\n        return NOISE_ERROR_UNKNOWN_NAME;\n    name = end + 1;\n    if (strcmp(name, \"PBKDF2\") != 0)\n        return NOISE_ERROR_UNKNOWN_NAME;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Loads a private key from a protobuf.\n *\n * \\param key Variable that returns the private key if one is loaded.\n * \\param pbuf The protobuf to load the private key from.\n * \\param passphrase Points to the passphrase to use to unlock the private key.\n * \\param passphrase_len Length of the passphrase in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a key, \\a pbuf, or \\a passphrase\n * is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the format of \\a pbuf is not\n * as expected for a private key.\n * \\return NOISE_ERROR_UNKNOWN_NAME if the algorithm that was used to\n * encrypt the private key is unknown.\n * \\return NOISE_ERROR_MAC_FAILURE if the \\a passphrase is incorrect.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * load the private key.\n *\n * The private key is expected to occupy the entire buffer.  Trailing\n * unknown data will be rejected as invalid.\n *\n * \\sa noise_load_private_key_from_file(), noise_save_private_key_to_buffer()\n */\nint noise_load_private_key_from_buffer\n    (Noise_PrivateKey **key, NoiseProtobuf *pbuf,\n     const void *passphrase, size_t passphrase_len)\n{\n    Noise_EncryptedPrivateKey *enc_key = 0;\n    NoiseCipherState *cipher = 0;\n    NoiseHashState *hash = 0;\n    uint8_t key_data[40];\n    int cipher_id, hash_id;\n    int err;\n    NoiseBuffer buf;\n    NoiseProtobuf pbuf2;\n\n    /* Validate the parameters */\n    if (!key)\n        return NOISE_ERROR_INVALID_PARAM;\n    *key = 0;\n    if (!pbuf || !passphrase)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Load the encrypted version of the private key */\n    err = Noise_EncryptedPrivateKey_read(pbuf, 0, &enc_key);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Check that we have everything we need for a valid key */\n    if (Noise_EncryptedPrivateKey_get_version(enc_key) != NOISE_KEY_VERSION ||\n            !Noise_EncryptedPrivateKey_has_algorithm(enc_key) ||\n            !Noise_EncryptedPrivateKey_has_salt(enc_key) ||\n            !Noise_EncryptedPrivateKey_has_iterations(enc_key) ||\n            !Noise_EncryptedPrivateKey_has_encrypted_data(enc_key)) {\n        Noise_EncryptedPrivateKey_free(enc_key);\n        return NOISE_ERROR_INVALID_FORMAT;\n    }\n\n    /* Is the key protection algorithm supported? */\n    err = noise_parse_protect_name\n        (Noise_EncryptedPrivateKey_get_algorithm(enc_key),\n         &cipher_id, &hash_id);\n    if (err == NOISE_ERROR_NONE) {\n        err = noise_cipherstate_new_by_id(&cipher, cipher_id);\n        if (err == NOISE_ERROR_NONE &&\n                noise_cipherstate_get_key_length(cipher) != 32) {\n            /* At the moment we only support ciphers with 256-bit keys */\n            err = NOISE_ERROR_UNKNOWN_NAME;\n        }\n    }\n    if (err == NOISE_ERROR_NONE) {\n        err = noise_hashstate_new_by_id(&hash, hash_id);\n    }\n\n    /* Decrypt the private key information */\n    memset(&buf, 0, sizeof(buf));\n    if (err == NOISE_ERROR_NONE) {\n        /* Generate the key material using PBKDF2 */\n        noise_hashstate_pbkdf2\n            (hash, (const uint8_t *)passphrase, passphrase_len,\n             (const uint8_t *)Noise_EncryptedPrivateKey_get_salt(enc_key),\n             Noise_EncryptedPrivateKey_get_size_salt(enc_key),\n             Noise_EncryptedPrivateKey_get_iterations(enc_key),\n             key_data, sizeof(key_data));\n\n        /* Set the decryption key */\n        noise_cipherstate_init_key(cipher, key_data, 32);\n\n        /* Set the nonce and fast-forward the cipher */\n        noise_cipherstate_set_nonce\n            (cipher, (((uint64_t)(key_data[32])) << 56) |\n                     (((uint64_t)(key_data[33])) << 48) |\n                     (((uint64_t)(key_data[34])) << 40) |\n                     (((uint64_t)(key_data[35])) << 32) |\n                     (((uint64_t)(key_data[36])) << 24) |\n                     (((uint64_t)(key_data[37])) << 16) |\n                     (((uint64_t)(key_data[38])) <<  8) |\n                      ((uint64_t)(key_data[39])));\n\n        /* Decrypt the private key and check the MAC value.\n           We decrypt the value in-place in the EncryptedPrivateKey\n           object.  We will be throwing it away later so there's\n           no harm in overwriting the previous value. */\n        noise_buffer_set_input\n            (buf, (uint8_t *)Noise_EncryptedPrivateKey_get_encrypted_data(enc_key),\n             Noise_EncryptedPrivateKey_get_size_encrypted_data(enc_key));\n        err = noise_cipherstate_decrypt_with_ad(cipher, 0, 0, &buf);\n    }\n\n    /* Parse the decrypted data into a PrivateKey object */\n    if (err == NOISE_ERROR_NONE) {\n        noise_protobuf_prepare_input(&pbuf2, buf.data, buf.size);\n        err = Noise_PrivateKey_read(&pbuf2, 0, key);\n    }\n\n    /* Clean up and exit */\n    Noise_EncryptedPrivateKey_free(enc_key);\n    noise_cipherstate_free(cipher);\n    noise_hashstate_free(hash);\n    noise_clean(key_data, sizeof(key_data));\n    return err;\n}\n\n/** @cond */\n\n/**\n * \\brief Prototype for a protobuf object write function.\n */\ntypedef int (*NoiseWriteFunc)(NoiseProtobuf *pbuf, int tag, const void *obj);\n\n/** @endcond */\n\n/**\n * \\brief Saves an object to a file.\n *\n * \\param obj The object to save.\n * \\param filename The name of the file to save in.\n * \\param func Pointer to the write function to use to serialize the object.\n *\n * \\return NOISE_ERROR_NONE on success, or an error code otherwise.\n */\nstatic int noise_save_to_file\n    (const void *obj, const char *filename, NoiseWriteFunc func)\n{\n    NoiseProtobuf pbuf;\n    uint8_t *data = 0;\n    size_t size = 0;\n    int err;\n    FILE *file;\n\n    /* Validate the parameters */\n    if (!obj || !filename)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Measure the size of the serialized object */\n    noise_protobuf_prepare_measure(&pbuf, NOISE_MAX_PAYLOAD_LEN);\n    err = (*func)(&pbuf, 0, obj); \n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_finish_measure(&pbuf, &size);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Allocate memory to hold the serialized form temporarily */\n    pbuf.data = (uint8_t *)malloc(size);\n    if (!(pbuf.data))\n        return NOISE_ERROR_NO_MEMORY;\n    pbuf.size = size;\n    pbuf.posn = size;\n    pbuf.error = NOISE_ERROR_NONE;\n    err = (*func)(&pbuf, 0, obj); \n    if (err == NOISE_ERROR_NONE)\n        err = noise_protobuf_finish_output(&pbuf, &data, &size);\n    if (err != NOISE_ERROR_NONE) {\n        noise_free(pbuf.data, pbuf.size);\n        return err;\n    }\n\n    /* Write the data to the file */\n    file = fopen(filename, \"wb\");\n    if (file) {\n        if (fwrite(data, 1, size, file) != size)\n            err = NOISE_ERROR_SYSTEM;\n        fclose(file);\n    } else {\n        err = NOISE_ERROR_SYSTEM;\n    }\n\n    /* Clean up and exit */\n    noise_free(pbuf.data, pbuf.size);\n    return err;\n}\n\n/**\n * \\brief Saves a certificate to a file.\n *\n * \\param cert The certificate to be saved.\n * \\param filename The name of the file to save the certificate to.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a cert or \\a filename is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the serialized version of the\n * certificate is more than NOISE_MAX_PAYLOAD_LEN bytes in length.\n * \\return NOISE_ERROR_SYSTEM if \\a filename cannot be opened or written,\n * with further information in the system errno variable.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory.\n *\n * \\sa noise_save_certificate_to_buffer(), noise_load_certificate_from_file()\n */\nint noise_save_certificate_to_file\n    (const Noise_Certificate *cert, const char *filename)\n{\n    return noise_save_to_file\n        (cert, filename, (NoiseWriteFunc)Noise_Certificate_write);\n}\n\n/**\n * \\brief Saves a certificate to a protobuf.\n *\n * \\param cert The certificate to be saved.\n * \\param pbuf The protobuf to save the certificate to.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a cert or \\a pbuf is NULL.\n *\n * \\sa noise_save_certificate_to_file(), noise_load_certificate_from_buffer()\n */\nint noise_save_certificate_to_buffer\n    (const Noise_Certificate *cert, NoiseProtobuf *pbuf)\n{\n    return Noise_Certificate_write(pbuf, 0, cert);\n}\n\n/**\n * \\brief Saves a certificate chain to a file.\n *\n * \\param chain The certificate chain to be saved.\n * \\param filename The name of the file to save the certificate chain to.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a chain or \\a filename is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the serialized version of the\n * certificate chain is more than NOISE_MAX_PAYLOAD_LEN bytes in length.\n * \\return NOISE_ERROR_SYSTEM if \\a filename cannot be opened or written,\n * with further information in the system errno variable.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory.\n *\n * \\sa noise_save_certificate_chain_to_buffer(),\n * noise_load_certificate_chain_from_file()\n */\nint noise_save_certificate_chain_to_file\n    (const Noise_CertificateChain *chain, const char *filename)\n{\n    return noise_save_to_file\n        (chain, filename, (NoiseWriteFunc)Noise_CertificateChain_write);\n}\n\n/**\n * \\brief Saves a certificate chain to a protobuf.\n *\n * \\param chain The certificate chain to be saved.\n * \\param pbuf The protobuf to save the certificate chain to.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a chain or \\a pbuf is NULL.\n *\n * \\sa noise_save_certificate_chain_to_file(),\n * noise_load_certificate_chain_from_buffer()\n */\nint noise_save_certificate_chain_to_buffer\n    (const Noise_CertificateChain *chain, NoiseProtobuf *pbuf)\n{\n    return Noise_CertificateChain_write(pbuf, 0, chain);\n}\n\n/**\n * \\brief Saves a private key in encrypted form to a file.\n *\n * \\param key The private key to be saved.\n * \\param filename The name of the file to save to.\n * \\param passphrase Points to the passphrase to use to encrypt the private key.\n * \\param passphrase_len Length of the passphrase in bytes.\n * \\param protect_name The name of the algorithm to use to protect the\n * private key; e.g. \"ChaChaPoly_BLAKE2b_PBKDF2\".\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if one of \\a key, \\a filename,\n * \\a passphrase, or \\a protect_name is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the total size of the encrypted\n * private key will be larger than NOISE_MAX_PAYLOAD_LEN.\n * \\return NOISE_ERROR_UNKNOWN_NAME if \\a protect_name is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * save the encrypted private key data.\n * \\return NOISE_ERROR_SYSTEM if there was a problem opening or writing\n * to \\a filename, with the specific reason reported in the system\n * errno variable.\n *\n * \\sa noise_save_private_key_to_buffer(), noise_load_private_key_from_file()\n */\nint noise_save_private_key_to_file\n    (const Noise_PrivateKey *key, const char *filename,\n     const void *passphrase, size_t passphrase_len,\n     const char *protect_name)\n{\n    NoiseProtobuf pbuf;\n    size_t size = 0;\n    int cipher_id, hash_id;\n    int err;\n    FILE *file;\n\n    /* Validate the parameters */\n    if (!key || !filename || !passphrase || !protect_name)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = noise_parse_protect_name(protect_name, &cipher_id, &hash_id);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Estimate how much memory we will need for the EncryptedPrivateKey */\n    noise_protobuf_prepare_measure(&pbuf, NOISE_MAX_PAYLOAD_LEN);\n    err = Noise_PrivateKey_write(&pbuf, 0, key);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_finish_measure(&pbuf, &size);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    size += strlen(protect_name) + NOISE_ENC_KEY_OVERHEAD;\n\n    /* Serialize the EncryptedPrivateKey into memory */\n    pbuf.data = (uint8_t *)malloc(size);\n    if (!(pbuf.data))\n        return NOISE_ERROR_NO_MEMORY;\n    pbuf.posn = size;\n    pbuf.size = size;\n    pbuf.error = NOISE_ERROR_NONE;\n    err = noise_save_private_key_to_buffer\n        (key, &pbuf, passphrase, passphrase_len, protect_name);\n    if (err == NOISE_ERROR_NONE &&\n            (pbuf.size - pbuf.posn) > NOISE_MAX_PAYLOAD_LEN) {\n        err = NOISE_ERROR_INVALID_LENGTH;\n    }\n\n    /* Save the encrypted data to the file */\n    if (err == NOISE_ERROR_NONE) {\n        file = fopen(filename, \"wb\");\n        if (file) {\n            size_t len = pbuf.size - pbuf.posn;\n            if (fwrite(pbuf.data + pbuf.posn, 1, len, file) != len)\n                err = NOISE_ERROR_SYSTEM;\n            fclose(file);\n        } else {\n            err = NOISE_ERROR_SYSTEM;\n        }\n    }\n\n    /* Clean up and exit */\n    noise_free(pbuf.data, size);\n    return err;\n}\n\n/**\n * \\brief Saves a private key in encrypted form to a protobuf.\n *\n * \\param key The private key to be saved.\n * \\param pbuf The protobuf to write the encrypted data to.\n * \\param passphrase Points to the passphrase to use to encrypt the private key.\n * \\param passphrase_len Length of the passphrase in bytes.\n * \\param protect_name The name of the algorithm to use to protect the\n * private key; e.g. \"ChaChaPoly_BLAKE2b_PBKDF2\".\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if one of \\a key, \\a pbuf, \\a passphrase,\n * or \\a protect_name is NULL.\n * \\return NOISE_ERROR_UNKNOWN_NAME if \\a protect_name is unknown.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a pbuf is not large enough to\n * contain the encrypted private key data.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * save the encrypted private key data.\n *\n * \\sa noise_save_private_key_to_file(), noise_load_private_key_from_buffer()\n */\nint noise_save_private_key_to_buffer\n    (const Noise_PrivateKey *key, NoiseProtobuf *pbuf,\n     const void *passphrase, size_t passphrase_len,\n     const char *protect_name)\n{\n    Noise_EncryptedPrivateKey *enc_key = 0;\n    NoiseProtobuf pcopy;\n    uint8_t salt[NOISE_KEY_SALT_LEN];\n    uint8_t key_data[40];\n    int cipher_id, hash_id;\n    NoiseCipherState *cipher = 0;\n    NoiseHashState *hash = 0;\n    size_t mac_len;\n    NoiseBuffer buf;\n    int err;\n    int retry;\n\n    /* Validate the parameters */\n    if (!key || !pbuf || !passphrase || !protect_name)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = noise_parse_protect_name(protect_name, &cipher_id, &hash_id);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Construct the cipher and hash objects to use to encrypt the key */\n    err = noise_cipherstate_new_by_id(&cipher, cipher_id);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (noise_cipherstate_get_key_length(cipher) != 32) {\n        /* At the moment we only support ciphers with 256-bit keys */\n        noise_cipherstate_free(cipher);\n        return NOISE_ERROR_UNKNOWN_NAME;\n    }\n    err = noise_hashstate_new_by_id(&hash, hash_id);\n    if (err != NOISE_ERROR_NONE) {\n        noise_cipherstate_free(cipher);\n        return err;\n    }\n    mac_len = noise_cipherstate_get_mac_length(cipher);\n\n    /* Write the private key details to the protobuf.  The incoming\n       protobuf is supposed to be large enough to hold the encrypted\n       version of the key so it should be large enough to hold the\n       unencrypted private key and MAC temporarily */\n    pcopy = *pbuf;\n    if (pcopy.posn < mac_len) {\n        err = NOISE_ERROR_INVALID_LENGTH;\n    } else {\n        pcopy.posn -= mac_len;\n        err = Noise_PrivateKey_write(&pcopy, 0, key);\n    }\n    if (err != NOISE_ERROR_NONE) {\n        noise_clean(pcopy.data + pcopy.posn, pbuf->posn - pcopy.posn);\n        noise_cipherstate_free(cipher);\n        noise_hashstate_free(hash);\n        return err;\n    }\n\n    /* Construct an EncryptedPrivateKey object and populate it */\n    err = Noise_EncryptedPrivateKey_new(&enc_key);\n    if (err == NOISE_ERROR_NONE) {\n        err = Noise_EncryptedPrivateKey_set_version(enc_key, NOISE_KEY_VERSION);\n    }\n    if (err == NOISE_ERROR_NONE) {\n        err = Noise_EncryptedPrivateKey_set_algorithm\n            (enc_key, protect_name, strlen(protect_name));\n    }\n    if (err == NOISE_ERROR_NONE) {\n        err = Noise_EncryptedPrivateKey_set_iterations\n            (enc_key, NOISE_KEY_ITERATIONS);\n    }\n\n    /* Encrypt the private key information */\n    noise_randstate_generate_simple(salt, sizeof(salt));\n    if (err == NOISE_ERROR_NONE) {\n        do {\n            /* Generate the key material using PBKDF2 */\n            retry = 0;\n            noise_hashstate_pbkdf2\n                (hash, (const uint8_t *)passphrase, passphrase_len,\n                 salt, sizeof(salt), NOISE_KEY_ITERATIONS,\n                 key_data, sizeof(key_data));\n\n            /* Set the encryption key */\n            noise_cipherstate_init_key(cipher, key_data, 32);\n\n            /* Set the nonce and fast-forward the cipher */\n            noise_cipherstate_set_nonce\n                (cipher, (((uint64_t)(key_data[32])) << 56) |\n                         (((uint64_t)(key_data[33])) << 48) |\n                         (((uint64_t)(key_data[34])) << 40) |\n                         (((uint64_t)(key_data[35])) << 32) |\n                         (((uint64_t)(key_data[36])) << 24) |\n                         (((uint64_t)(key_data[37])) << 16) |\n                         (((uint64_t)(key_data[38])) <<  8) |\n                          ((uint64_t)(key_data[39])));\n\n            /* Encrypt the private key and compute the MAC value */\n            noise_buffer_set_inout(buf, pcopy.data + pcopy.posn,\n                                   pbuf->posn - pcopy.posn - mac_len,\n                                   pbuf->posn - pcopy.posn);\n            err = noise_cipherstate_encrypt_with_ad(cipher, 0, 0, &buf);\n            if (err != NOISE_ERROR_NONE) {\n                /* The nonce is probably the reserved value 2^64 - 1,\n                   which we cannot use.  Generate a new salt and try again */\n                noise_randstate_generate_simple(salt, sizeof(salt));\n                retry = 1;\n            }\n        } while (retry);\n    }\n\n    /* Add the encrypted data to the EncryptedPrivateKey object */\n    if (err == NOISE_ERROR_NONE) {\n        err = Noise_EncryptedPrivateKey_set_salt(enc_key, salt, sizeof(salt));\n    }\n    if (err == NOISE_ERROR_NONE) {\n        err = Noise_EncryptedPrivateKey_set_encrypted_data\n            (enc_key, pcopy.data + pcopy.posn, pbuf->posn - pcopy.posn);\n    }\n    noise_clean(pcopy.data + pcopy.posn, pbuf->posn - pcopy.posn);\n\n    /* Now write the entire EncryptedPrivateKey object to the protobuf */\n    if (err == NOISE_ERROR_NONE) {\n        err = Noise_EncryptedPrivateKey_write(pbuf, 0, enc_key);\n    }\n\n    /* Clean up and exit */\n    Noise_EncryptedPrivateKey_free(enc_key);\n    noise_cipherstate_free(cipher);\n    noise_hashstate_free(hash);\n    noise_clean(salt, sizeof(salt));\n    noise_clean(key_data, sizeof(key_data));\n    return err;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protobufs/Makefile.am",
    "content": "\nlib_LIBRARIES = libnoiseprotobufs.a\n\nAM_CPPFLAGS = -I$(top_srcdir)/include\nAM_CFLAGS = @WARNING_FLAGS@\n\nlibnoiseprotobufs_a_SOURCES = protobufs.c\n"
  },
  {
    "path": "src/protobufs/protobufs.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include <noise/protobufs.h>\n#include <string.h>\n#include <stdlib.h>\n\n/**\n * \\file protobufs.h\n * \\brief Protobufs support interface\n */\n\n/**\n * \\file protobufs.c\n * \\brief Protobufs support implementation\n */\n\n/**\n * \\defgroup protobufs Protobufs Support API\n *\n * This API provides a minimalistic implementation of the\n * <a href=\"https://developers.google.com/protocol-buffers/\">Protocol\n * Buffers</a> mechanism for serializing structured data.  It is primarily\n * targeted at handling certificates and other serializable data in the\n * Noise-C library and other security-sensitive domains.  It can be used by\n * applications also, although applications are free to use another\n * full-featured protobufs implementation if they wish.\n *\n * Except for the \"prepare\" and \"finish\" functions, this API is not typically\n * used directly by the programmer.  Instead the <tt>noise-protoc</tt>\n * compiler is used to compile a <tt>.proto</tt> file into custom C code.\n * The custom C code then calls this library to perform low-level reading\n * and writing tasks.\n *\n * \\section protobuf_compiling Compiling a protobuf description\n *\n * The <tt>noise-protoc</tt> program can be used to compile a protobuf\n * description into C code.  There are some limitations in this program\n * compared with the standard protobuf tools:\n *\n * \\li Only \"proto3\" syntax is supported.  There is no support for \"proto2\".\n * \\li The \"oneof\", \"service\", and \"map\" keywords are not supported.\n * \\li The \"import\" and \"reserved\" keywords are recognized but ignored.\n * \\li The generated code is designed for reading and writing in-memory\n * buffers, typically restricted to the Noise packet limit of 65535 bytes.\n * \\li File and stream based operations for arbitrary-length message\n * structures are not supported.\n *\n * These limitations may be addressed in future versions.\n *\n * TODO\n *\n * \\section protobuf_writing Writing to a protobuf\n *\n * Writing a protobuf-enabled structure starts by preparing the buffer\n * to receive the data:\n *\n * \\code\n * uint8_t data[MAX_DATA_SIZE];\n * NoiseProtobuf pbuf;\n * noise_protobuf_prepare_output(&pbuf, data, sizeof(data));\n * \\endcode\n *\n * Fields and other structures can then be written to the protobuf.\n * Consider the following standard protobuf example:\n *\n * \\code\n * message Person {\n *     required string name = 1;\n *     required int32 id = 2;\n *     optional string email = 3;\n * }\n * \\endcode\n *\n * This message may be serialized as follows:\n *\n * \\code\n * size_t end;\n * noise_protobuf_write_end_element(&pbuf, &end);\n * if (email)\n *     noise_protobuf_write_string(&pbuf, EMAIL_TAG, email, strlen(email));\n * noise_protobuf_write_int32(&pbuf, ID_TAG, id);\n * noise_protobuf_write_string(&pbuf, NAME_TAG, name, strlen(name));\n * noise_protobuf_write_start_element(&pbuf, 0, end);\n * \\endcode\n *\n * As can be seen, fields are written in <i>reverse order</i>, from the last\n * to the first.  This ordering makes the support code more efficient\n * because it doesn't have to constantly rearrange the buffer's contents\n * to deal with variable-length structures.  However, it does mean that\n * once an entire message has been serialized, it ends up being packed\n * into the end of the original buffer.\n *\n * Once all message details have been written, the buffer is \"finished\"\n * to recover the region containing the serialized message data:\n *\n * \\code\n * uint8_t *msg;\n * size_t size;\n * int err = noise_protobuf_finish_output(&pbuf, &msg, &size);\n * \\endcode\n *\n * If an error occurred during the writing process (for example, running\n * out of buffer space), then it is reported at the end.  It is safe to\n * keep writing to a buffer that has experienced a previous error.\n * Any further write requests will be ignored.\n *\n * If the application needs the data to be aligned at the start of\n * the output buffer, it can use noise_protobuf_finish_output_shift()\n * instead to shift the data down.\n *\n * Sometimes the application needs to know how big a structure is before\n * writing it to allocate an appropriately-sized buffer.  Structures can\n * be \"measured\" by writing them to a dummy protobuf that has been prepared\n * for measurement instead:\n *\n * \\code\n * NoiseProtobuf pbuf;\n * size_t end, size;\n * noise_protobuf_prepare_measure(&pbuf, MAX_SIZE);\n * noise_protobuf_write_end_element(&pbuf, &end);\n * if (email)\n *     noise_protobuf_write_string(&pbuf, EMAIL_TAG, email, strlen(email));\n * noise_protobuf_write_int32(&pbuf, ID_TAG, id);\n * noise_protobuf_write_string(&pbuf, NAME_TAG, name, strlen(name));\n * noise_protobuf_write_start_element(&pbuf, 0, end);\n * noise_protobuf_finish_measure(&pbuf, &size);\n * \\endcode\n *\n * The advantage of this approach is that the application can use the\n * same code to both measure and write a structure.  The difference is\n * only in how the protobuf is prepared and finished.\n *\n * \\section protobuf_reading Reading from a protobuf\n *\n * Reading from a protobuf is similar to writing.  We start by calling\n * noise_protobuf_prepare_input() to specify the data to be parsed and\n * its size:\n *\n * \\code\n * NoiseProtobuf pbuf;\n * noise_protobuf_prepare_input(&pbuf, data, size);\n * \\endcode\n *\n * \\code\n * size_t end;\n * noise_protobuf_read_start_element(&pbuf, 0, &end);\n * while (!noise_protobuf_read_at_end_element(&pbuf, end)) {\n *     switch (noise_protobuf_peek_tag(&pbuf)) {\n *     case NAME_TAG:\n *         noise_protobuf_read_string(&buf, NAME_TAG, name, sizeof(name), &name_size);\n *         break;\n *     case ID_TAG:\n *         noise_protobuf_read_int32(&buf, ID_TAG, &id);\n *         break;\n *     case EMAIL_TAG:\n *         noise_protobuf_read_string(&buf, EMAIL_TAG, email, sizeof(email), &email_size);\n *         break;\n *     default:\n *         noise_protobuf_read_skip(&pbuf);\n *         break;\n *     }\n * }\n * noise_protobuf_read_end_element(&pbuf, end);\n * \\endcode\n *\n * Structures are read in <tt>forward order</tt> from the first field\n * to the last.  However, the protobuf format allows tagged fields within a\n * message to be ordered in any way so it is usually necessary to \"switch\"\n * on the tag type to determine what to do next.\n *\n * The noise_protobuf_read_skip() function skips fields that are not\n * understood.  The application calls this whenever it encounters an unknown\n * field.  Alternatively the application can call noise_protobuf_read_stop()\n * to abort the current parsing process with an \"invalid format\" error.\n *\n * Once the parsing process has finished, the application calls\n * noise_protobuf_finish_input() to determine if there were any errors:\n *\n * \\code\n * int err = noise_protobuf_finish_input(&pbuf);\n * \\endcode\n *\n * If the application has not consumed the entire buffer's contents,\n * then an \"invalid format\" error will occur at this point.\n */\n/**@{*/\n\n/**\n * \\typedef NoiseProtobuf\n * \\brief Information about a buffer being read from or written to by\n * the protobufs support API.\n */\n\n/* Reference: https://developers.google.com/protocol-buffers/docs/encoding */\n\n/** @cond */\n\n/* Wire types */\n#define NOISE_PROTOBUF_WIRE_VARINT      0\n#define NOISE_PROTOBUF_WIRE_64BIT       1\n#define NOISE_PROTOBUF_WIRE_DELIM       2\n#define NOISE_PROTOBUF_WIRE_32BIT       5\n#define NOISE_PROTOBUF_WIRE_MASK        7\n#define NOISE_PROTOBUF_WIRE_BITS        3\n\n/* Maximum supported tag value */\n#define NOISE_PROTOBUF_MAX_TAG  ((((uint64_t)1) << 29) - 1)\n\n/** @endcond */\n\n/**\n * \\brief Prepares a protobuf for reading input.\n *\n * \\param pbuf The protobuf to be prepared.\n * \\param data The data to be parsed.\n * \\param size The size of the data to be parsed in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a data is NULL.\n *\n * \\sa noise_protobuf_finish_input()\n */\nint noise_protobuf_prepare_input\n    (NoiseProtobuf *pbuf, const uint8_t *data, size_t size)\n{\n    if (!pbuf || !data)\n        return NOISE_ERROR_INVALID_PARAM;\n    pbuf->data = (uint8_t *)data;\n    pbuf->size = size;\n    pbuf->posn = 0;\n    pbuf->error = NOISE_ERROR_NONE;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Prepares a protobuf for writing output.\n *\n * \\param pbuf The protobuf to be prepared.\n * \\param data The data buffer to write to.\n * \\param size The maximum size of the storage at \\a data in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a data is NULL.\n *\n * \\sa noise_protobuf_finish_output()\n */\nint noise_protobuf_prepare_output\n    (NoiseProtobuf *pbuf, uint8_t *data, size_t size)\n{\n    if (!pbuf || !data)\n        return NOISE_ERROR_INVALID_PARAM;\n    pbuf->data = data;\n    pbuf->size = size;\n    pbuf->posn = size;\n    pbuf->error = NOISE_ERROR_NONE;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Prepares a protobuf for measuring the size of a structure.\n *\n * \\param pbuf The protobuf to be prepared.\n * \\param max_size The maximum size of the serialized data.  An error will be\n * reported by noise_protobuf_finish_measure() if this size is insufficient\n * to contain the entire structure.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n *\n * \\sa noise_protobuf_finish_measure()\n */\nint noise_protobuf_prepare_measure(NoiseProtobuf *pbuf, size_t max_size)\n{\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    pbuf->data = 0;\n    pbuf->size = max_size;\n    pbuf->posn = max_size;\n    pbuf->error = NOISE_ERROR_NONE;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Finishes reading input from a protobuf.\n *\n * \\param pbuf The protobuf.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the input data was incorrect\n * and could not be successfully parsed.\n * \\return NOISE_ERROR_NO_MEMORY if there was insufficient memory to\n * allocate the fields and structures within the input.\n *\n * It is possible that some of the fields may have been parsed successfully\n * before the error occurred.  It is the responsibility of the application\n * to clean up any intermediate objects that were created during the\n * failed parsing process.\n *\n * \\sa noise_protobuf_prepare_input()\n */\nint noise_protobuf_finish_input(NoiseProtobuf *pbuf)\n{\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (pbuf->posn != pbuf->size) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Finishes writing output to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param data Receives a pointer to the actual data that was written\n * to \\a pbuf.\n * \\param size Receives the number of bytes of actual \\a data that were written.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf, \\a data, or \\a size is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the available space in the buffer\n * was insufficient to serialize the entire structure.\n * \\return NOISE_ERROR_INVALID_FORMAT if an attempt was made to write a\n * string to the protobuf that was not in UTF-8.\n *\n * The data will be aligned with the end of the original buffer.  If the\n * application needs data that is aligned with the start of the original\n * buffer, it should call noise_protobuf_finish_output_shift() instead.\n *\n * The entire buffer's contents should be considered invalid if an error\n * occurs.  It is possible that some of the fields may have been written\n * successfully before the error occurred, but there is no way to know\n * how many fields succeeded.\n *\n * \\sa noise_protobuf_finish_output_shift(), noise_protobuf_prepare_output()\n */\nint noise_protobuf_finish_output\n    (NoiseProtobuf *pbuf, uint8_t **data, size_t *size)\n{\n    if (data)\n        *data = 0;\n    if (size)\n        *size = 0;\n    if (!pbuf || !data || !size)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (pbuf->data)\n        *data = pbuf->data + pbuf->posn;\n    *size = pbuf->size - pbuf->posn;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Finishes writing output to a protobuf and shifts it down.\n *\n * \\param pbuf The protobuf.\n * \\param data Receives a pointer to the actual data that was written\n * to \\a pbuf.\n * \\param size Receives the number of bytes of actual \\a data that were written.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf, \\a data, or \\a size is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the available space in the buffer\n * was insufficient to serialize the entire structure.\n * \\return NOISE_ERROR_INVALID_FORMAT if an attempt was made to write a\n * string to the protobuf that was not in UTF-8.\n *\n * This function differs from noise_protobuf_finish_output() in that\n * it will shift the data down to the start of the underlying buffer\n * before returning a pointer to the data.\n *\n * The entire buffer's contents should be considered invalid if an error\n * occurs.  It is possible that some of the fields may have been written\n * successfully before the error occurred, but there is no way to know\n * how many fields succeeded.\n *\n * \\sa noise_protobuf_finish_output(), noise_protobuf_prepare_output()\n */\nint noise_protobuf_finish_output_shift\n    (NoiseProtobuf *pbuf, uint8_t **data, size_t *size)\n{\n    if (data)\n        *data = 0;\n    if (size)\n        *size = 0;\n    if (!pbuf || !data || !size)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (pbuf->data) {\n        if (pbuf->posn != 0) {\n            memmove(pbuf->data, pbuf->data + pbuf->posn,\n                    pbuf->size - pbuf->posn);\n        }\n        *data = pbuf->data;\n    }\n    *size = pbuf->size - pbuf->posn;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Finishes measuring the size of data written to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param size Receives the number of bytes of memory that is needed to\n * represent the structure that was written.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a size is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the maximum space in the original\n * buffer is insufficient to contain the entire structure.\n * \\return NOISE_ERROR_INVALID_FORMAT if an attempt was made to write a\n * string to the protobuf that was not in UTF-8.\n *\n * If an error occurred, then \\a size will be set to zero.\n *\n * \\sa noise_protobuf_prepare_measure()\n */\nint noise_protobuf_finish_measure(NoiseProtobuf *pbuf, size_t *size)\n{\n    if (size)\n        *size = 0;\n    else\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    *size = pbuf->size - pbuf->posn;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reserves space in a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param size The number of bytes to reserve.\n * \\param data Returns a pointer to the reserved space on success,\n * or NULL if the protobuf is being used to measure instead of write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nstatic int noise_protobuf_reserve_space\n    (NoiseProtobuf *pbuf, size_t size, uint8_t **data)\n{\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (size > pbuf->posn) {\n        pbuf->error = NOISE_ERROR_INVALID_LENGTH;\n        return pbuf->error;\n    }\n    pbuf->posn -= size;\n    if (pbuf->data)\n        *data = pbuf->data + pbuf->posn;\n    else\n        *data = 0;\n    return NOISE_ERROR_NONE;\n}\n\n/** @cond */\n\n#define NOISE_PROTOBUF_UINT64_BITS(n) (((uint64_t)1) << (n))\n\n/** @endcond */\n\n/**\n * \\brief Writes a variable-length integer to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nstatic int noise_protobuf_write_varint(NoiseProtobuf *pbuf, uint64_t value)\n{\n    size_t size;\n    uint8_t *data;\n    int err;\n    if (value < NOISE_PROTOBUF_UINT64_BITS(7))\n        size = 1;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(14))\n        size = 2;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(21))\n        size = 3;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(28))\n        size = 4;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(35))\n        size = 5;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(42))\n        size = 6;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(49))\n        size = 7;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(56))\n        size = 8;\n    else if (value < NOISE_PROTOBUF_UINT64_BITS(63))\n        size = 9;\n    else\n        size = 10;\n    err = noise_protobuf_reserve_space(pbuf, size, &data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (!data)\n        return NOISE_ERROR_NONE;\n    while (size > 1) {\n        *data++ = ((uint8_t)value) | (uint8_t)0x80;\n        value >>= 7;\n        --size;\n    }\n    *data = ((uint8_t)value) & (uint8_t)0x7F;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Writes a tag value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param type The wire representation type for the tag.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nstatic int noise_protobuf_write_tag(NoiseProtobuf *pbuf, int tag, int type)\n{\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (!tag)\n        return NOISE_ERROR_NONE;\n    return noise_protobuf_write_varint\n        (pbuf, (uint64_t)((((int64_t)tag) << NOISE_PROTOBUF_WIRE_BITS) |\n                            (int64_t)type));\n}\n\n/**\n * \\brief Writes a tagged integer value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nstatic int noise_protobuf_write_integer\n    (NoiseProtobuf *pbuf, int tag, uint64_t value)\n{\n    int err = noise_protobuf_write_varint(pbuf, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    return noise_protobuf_write_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_VARINT);\n}\n\n/**\n * \\brief Writes a tagged int32 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_int32(NoiseProtobuf *pbuf, int tag, int32_t value)\n{\n    return noise_protobuf_write_integer(pbuf, tag, (uint64_t)(int64_t)value);\n}\n\n/**\n * \\brief Writes a tagged uint32 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_uint32(NoiseProtobuf *pbuf, int tag, uint32_t value)\n{\n    return noise_protobuf_write_integer(pbuf, tag, (uint64_t)value);\n}\n\n/**\n * \\brief Writes a tagged int64 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_int64(NoiseProtobuf *pbuf, int tag, int64_t value)\n{\n    return noise_protobuf_write_integer(pbuf, tag, (uint64_t)value);\n}\n\n/**\n * \\brief Writes a tagged uint64 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_uint64(NoiseProtobuf *pbuf, int tag, uint64_t value)\n{\n    return noise_protobuf_write_integer(pbuf, tag, value);\n}\n\n/**\n * \\brief Writes a tagged sint32 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_sint32(NoiseProtobuf *pbuf, int tag, int32_t value)\n{\n    value = ((uint32_t)value << 1) ^ (value >> 31);\n    return noise_protobuf_write_integer(pbuf, tag, (uint64_t)(uint32_t)value);\n}\n\n/**\n * \\brief Writes a tagged sint64 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_sint64(NoiseProtobuf *pbuf, int tag, int64_t value)\n{\n    value = ((uint64_t)value << 1) ^ (value >> 63);\n    return noise_protobuf_write_integer(pbuf, tag, (uint64_t)value);\n}\n\n/**\n * \\brief Writes a tagged sfixed32 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_sfixed32(NoiseProtobuf *pbuf, int tag, int32_t value)\n{\n    return noise_protobuf_write_fixed32(pbuf, tag, (uint32_t)value);\n}\n\n/**\n * \\brief Writes a tagged fixed32 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_fixed32(NoiseProtobuf *pbuf, int tag, uint32_t value)\n{\n    uint8_t *data;\n    int err = noise_protobuf_reserve_space(pbuf, 4, &data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (data) {\n        data[0] = (uint8_t)value;\n        data[1] = (uint8_t)(value >> 8);\n        data[2] = (uint8_t)(value >> 16);\n        data[3] = (uint8_t)(value >> 24);\n    }\n    return noise_protobuf_write_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_32BIT);\n}\n\n/**\n * \\brief Writes a tagged sfixed64 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_sfixed64(NoiseProtobuf *pbuf, int tag, int64_t value)\n{\n    return noise_protobuf_write_fixed64(pbuf, tag, (uint64_t)value);\n}\n\n/**\n * \\brief Writes a tagged fixed64 value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The integer value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_fixed64(NoiseProtobuf *pbuf, int tag, uint64_t value)\n{\n    uint8_t *data;\n    int err = noise_protobuf_reserve_space(pbuf, 8, &data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (data) {\n        data[0] = (uint8_t)value;\n        data[1] = (uint8_t)(value >> 8);\n        data[2] = (uint8_t)(value >> 16);\n        data[3] = (uint8_t)(value >> 24);\n        data[4] = (uint8_t)(value >> 32);\n        data[5] = (uint8_t)(value >> 40);\n        data[6] = (uint8_t)(value >> 48);\n        data[7] = (uint8_t)(value >> 56);\n    }\n    return noise_protobuf_write_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_64BIT);\n}\n\n/**\n * \\brief Writes a tagged float value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The float value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_float(NoiseProtobuf *pbuf, int tag, float value)\n{\n    union {\n        float fvalue;\n        uint32_t ivalue;\n    } volatile un;\n    un.fvalue = value;\n    return noise_protobuf_write_fixed32(pbuf, tag, un.ivalue);\n}\n\n/**\n * \\brief Writes a tagged double value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The double value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_double(NoiseProtobuf *pbuf, int tag, double value)\n{\n    union {\n        double fvalue;\n        uint64_t ivalue;\n    } volatile un;\n    un.fvalue = value;\n    return noise_protobuf_write_fixed64(pbuf, tag, un.ivalue);\n}\n\n/**\n * \\brief Writes a tagged boolean value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param value The boolean value to write.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_bool(NoiseProtobuf *pbuf, int tag, int value)\n{\n    return noise_protobuf_write_integer(pbuf, tag, value ? 1 : 0);\n}\n\n/**\n * \\brief Determine if a string is strict UTF-8.\n *\n * \\param str Points to the string.\n * \\param size The size of the string in bytes.\n *\n * \\return Non-zero if the string is OK, zero if the string contains\n * bytes that are not compatible with strict UTF-8.\n *\n * Reference: https://tools.ietf.org/html/rfc3629\n */\nstatic int noise_protobuf_is_utf8(const char *str, size_t size)\n{\n    uint8_t ch;\n    uint32_t code;\n    while (size > 0) {\n        ch = *str++;\n        --size;\n        if (!ch) {\n            /* Embedded NUL's are not allowed */\n            return 0;\n        } else if (ch < 0x80) {\n            /* Ordinary character from the US-ASCII subset */\n            continue;\n        } else if (ch >= 0xC2 && ch <= 0xDF) {\n            /* Two-byte UTF-8 sequence */\n            if (size < 1)\n                return 0;\n            ch = *str++;\n            --size;\n            if (ch < 0x80 || ch > 0xBF)\n                return 0;\n        } else if (ch >= 0xE0 && ch <= 0xEF) {\n            /* Three-byte UTF-8 sequence */\n            if (size < 2)\n                return 0;\n            code = ((uint32_t)(ch & 0x0F)) << 12;\n            ch = str[0];\n            if (ch < 0x80 || ch > 0xBF)\n                return 0;\n            code |= ((uint32_t)(ch & 0x3F)) << 6;\n            ch = str[1];\n            if (ch < 0x80 || ch > 0xBF)\n                return 0;\n            code |= ((uint32_t)(ch & 0x3F));\n            size -= 2;\n            if (code >= 0xD800 && code <= 0xDFFF) {\n                /* Surrogate pairs are not allowed */\n                return 0;\n            } else if (code < 0x0800) {\n                /* Should have been represented as a 1 or 2 byte sequence */\n                return 0;\n            }\n        } else if (ch >= 0xF0 && ch <= 0xF4) {\n            /* Four-byte UTF-8 sequence */\n            if (size < 3)\n                return 0;\n            code = ((uint32_t)(ch & 0x07)) << 18;\n            ch = str[0];\n            if (ch < 0x80 || ch > 0xBF)\n                return 0;\n            code |= ((uint32_t)(ch & 0x3F)) << 12;\n            ch = str[1];\n            if (ch < 0x80 || ch > 0xBF)\n                return 0;\n            code |= ((uint32_t)(ch & 0x3F)) << 6;\n            ch = str[2];\n            if (ch < 0x80 || ch > 0xBF)\n                return 0;\n            code |= ((uint32_t)(ch & 0x3F));\n            size -= 3;\n            if (code > 0x10FFFFUL) {\n                /* Unicode code points stop at U+10FFFF */\n                return 0;\n            } else if (code < 0x10000) {\n                /* Should have been represented as a 1 to 3 byte sequence */\n                return 0;\n            }\n        } else {\n            /* Invalid leading character for a UTF-8 sequence */\n            return 0;\n        }\n    }\n    return 1;\n}\n\n/**\n * \\brief Writes a tagged UTF-8 string value to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param str Points to the string value to write, which can be NULL only\n * if \\a size is zero.\n * \\param size The size of the string in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a str is NULL and \\a size is non-zero.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n * \\return NOISE_ERROR_INVALID_FORMAT if \\a str contains characters that are\n * not strict UTF-8.\n */\nint noise_protobuf_write_string\n    (NoiseProtobuf *pbuf, int tag, const char *str, size_t size)\n{\n    if (!pbuf || (!str && size))\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (!noise_protobuf_is_utf8(str, size)) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    return noise_protobuf_write_bytes(pbuf, tag, str, size);\n}\n\n/**\n * \\brief Writes a tagged byte array to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param data Points to the byte array to write, which can be NULL only\n * if \\a size is zero.\n * \\param size The size of the byte array in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a data is NULL and \\a size is non-zero.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n */\nint noise_protobuf_write_bytes\n    (NoiseProtobuf *pbuf, int tag, const void *data, size_t size)\n{\n    uint8_t *out_data;\n    int err;\n    if (!pbuf || (!data && size))\n        return NOISE_ERROR_INVALID_PARAM;\n    err = noise_protobuf_reserve_space(pbuf, size, &out_data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (out_data && size)\n        memcpy(out_data, data, size);\n    err = noise_protobuf_write_varint(pbuf, size);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    return noise_protobuf_write_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_DELIM);\n}\n\n/**\n * \\brief Writes the end of a nested element to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param end_posn Points to a variable to receive the end position\n * of the nested element.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a end_posn is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf is already out\n * of space.\n *\n * This function should be followed by calls to write the fields of\n * the nested element in reverse order.  After all fields have been\n * written, noise_protobuf_write_start_element() should be called to\n * finalize the nested element.\n *\n * \\sa noise_protobuf_write_start_element()\n */\nint noise_protobuf_write_end_element(NoiseProtobuf *pbuf, size_t *end_posn)\n{\n    if (end_posn)\n        *end_posn = 0;\n    if (!pbuf || !end_posn)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    *end_posn = pbuf->posn;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Writes the start of a tagged nested element to a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag value to write, or zero for no tag.\n * \\param end_posn The end position that was returned from a previous\n * call to noise_protobuf_write_end_element().\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a end_posn is out of range.\n * \\return NOISE_ERROR_INVALID_LENGTH if the protobuf has insufficient space.\n *\n * \\sa noise_protobuf_write_end_element()\n */\nint noise_protobuf_write_start_element\n    (NoiseProtobuf *pbuf, int tag, size_t end_posn)\n{\n    int err;\n    if (!pbuf || end_posn < pbuf->posn || end_posn > pbuf->size)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!tag)\n        return pbuf->error; /* No tag or size field necessary */\n    err = noise_protobuf_write_varint(pbuf, end_posn - pbuf->posn);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    return noise_protobuf_write_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_DELIM);\n}\n\n/**\n * \\brief Peeks at the next varint value in a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param value Variable to receive the variable on exit.\n * \\param length On entry, the current length of the \"peek area\" at the\n * start of the field.  On exit, the new length of the peek area.\n *\n * \\return NOISE_ERROR_NONE on sucess, or an error code otherwise.\n */\nstatic int noise_protobuf_peek_varint\n    (const NoiseProtobuf *pbuf, uint64_t *value, size_t *length)\n{\n    unsigned shift;\n    uint8_t ch;\n    size_t posn;\n    *value = 0;\n    if (!pbuf || !pbuf->data)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    posn = pbuf->posn + *length;\n    if (posn >= pbuf->size)\n        return NOISE_ERROR_INVALID_FORMAT;\n    ch = pbuf->data[posn];\n    ++(*length);\n    if ((ch & 0x80) == 0) {\n        *value = ch;\n        return NOISE_ERROR_NONE;\n    }\n    *value = (ch & 0x7F);\n    shift = 7;\n    while (shift <= 63) {\n        if (posn >= pbuf->size)\n            return NOISE_ERROR_INVALID_FORMAT;\n        ch = pbuf->data[posn++];\n        *value |= (((uint64_t)(ch & 0x7F)) << shift);\n        ++(*length);\n        if ((ch & 0x80) == 0)\n            return NOISE_ERROR_NONE;\n        shift += 7;\n    }\n    return NOISE_ERROR_INVALID_FORMAT;\n}\n\n/**\n * \\brief Peeks at the tag number for the next field in a protobuf.\n *\n * \\param pbuf The protobuf.\n *\n * \\return The tag number or zero if the format of the data in\n * \\a pbuf is invalid.\n *\n * \\sa noise_protobuf_peek_size()\n */\nint noise_protobuf_peek_tag(const NoiseProtobuf *pbuf)\n{\n    uint64_t tag;\n    size_t length = 0;\n    int err = noise_protobuf_peek_varint(pbuf, &tag, &length);\n    if (err != NOISE_ERROR_NONE)\n        return 0;\n    tag >>= NOISE_PROTOBUF_WIRE_BITS;\n    if (!tag || tag > NOISE_PROTOBUF_MAX_TAG)\n        return 0;\n    if (sizeof(int) < sizeof(uint32_t)) {\n        /* 16-bit or 8-bit embedded system with a limited tag range */\n        if (tag > 32767)\n            return 0;\n    }\n    return (int)tag;\n}\n\n/**\n * \\brief Peeks at the size of the next field in a protobuf.\n *\n * \\param pbuf The protobuf.\n *\n * \\return The size of the next field, zero if the field is not\n * length-delimted, or zero if the format of the data in \\a pbuf is invalid.\n *\n * This function is intended for determining the size of strings and\n * byte arrays before they are read with noise_protobuf_read_string()\n * or noise_protobuf_read_bytes() so that an appropriately-sized buffer\n * can be allocated for the value.\n *\n * \\sa noise_protobuf_peek_tag()\n */\nsize_t noise_protobuf_peek_size(const NoiseProtobuf *pbuf)\n{\n    uint64_t value;\n    size_t length = 0;\n    int err = noise_protobuf_peek_varint(pbuf, &value, &length);\n    if (err != NOISE_ERROR_NONE)\n        return 0;\n    if ((value & NOISE_PROTOBUF_WIRE_MASK) != NOISE_PROTOBUF_WIRE_DELIM)\n        return 0;\n    err = noise_protobuf_peek_varint(pbuf, &value, &length);\n    if (err != NOISE_ERROR_NONE)\n        return 0;\n    if (sizeof(size_t) < sizeof(uint64_t)) {\n        /* Range-check the value on systems with smaller size_t types */\n        if ((value & (uint64_t)(~((size_t)0))) != value)\n            return 0;\n    }\n    return (size_t)value;\n}\n\n/**\n * \\brief Reads a variable-sized integer from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param value Points to the variable to receive the value.  Must not be NULL.\n *\n * \\return NOISE_ERROR_NONE on success, or an error code otherwise.\n */\nstatic int noise_protobuf_read_varint(NoiseProtobuf *pbuf, uint64_t *value)\n{\n    unsigned shift;\n    uint8_t ch;\n    *value = 0;\n    if (!pbuf || !pbuf->data)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (pbuf->posn >= pbuf->size) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    ch = pbuf->data[(pbuf->posn++)];\n    if ((ch & 0x80) == 0) {\n        *value = ch;\n        return NOISE_ERROR_NONE;\n    }\n    *value = (ch & 0x7F);\n    shift = 7;\n    while (shift <= 63) {\n        if (pbuf->posn >= pbuf->size) {\n            pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n            return pbuf->error;\n        }\n        ch = pbuf->data[(pbuf->posn++)];\n        *value |= (((uint64_t)(ch & 0x7F)) << shift);\n        if ((ch & 0x80) == 0)\n            return NOISE_ERROR_NONE;\n        shift += 7;\n    }\n    pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n    return pbuf->error;\n}\n\n/**\n * \\brief Reads a tag value from a protobuf and matches it.\n *\n * \\param pbuf The protobuf.\n * \\param tag The expected tag value, or zero for no tag.\n * \\param type The expected wire type.\n *\n * \\return NOISE_ERROR_NONE on success, or an error code otherwise.\n */\nstatic int noise_protobuf_read_tag(NoiseProtobuf *pbuf, int tag, int type)\n{\n    int err;\n    if (tag > 0) {\n        /* We expect a specific tag value and wire type to occur */\n        uint64_t expected = (uint64_t)((((int64_t)tag) << 3) | (int64_t)type);\n        uint64_t actual = 0;\n        err = noise_protobuf_read_varint(pbuf, &actual);\n        if (err == NOISE_ERROR_NONE) {\n            if (expected != actual) {\n                pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n                err = pbuf->error;\n            }\n        }\n    } else if (tag == 0) {\n        /* The caller-supplied tag is zero, which means no tag is expected */\n        err = pbuf->error;\n    } else {\n        /* The caller-supplied tag is negative, which is always an error */\n        if (pbuf->error != NOISE_ERROR_NONE)\n            pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        err = pbuf->error;\n    }\n    return err;\n}\n\n/**\n * \\brief Reads a certain number of raw bytes out of a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param size The number of bytes to read.\n * \\param data Returns a pointer to the space on exit.\n *\n * \\return NOISE_ERROR_NONE on success, or an error code otherwise.\n */\nstatic int noise_protobuf_read_space\n    (NoiseProtobuf *pbuf, size_t size, const uint8_t **data)\n{\n    if (!pbuf || !pbuf->data)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (size > (pbuf->size - pbuf->posn)) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    *data = pbuf->data + pbuf->posn;\n    pbuf->posn += size;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged integer value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field.\n * \\param value Variable that returns the integer value.\n * \\param result_ptr The original return pointer from the parent function,\n * for validation.\n *\n * \\return NOISE_ERROR_NONE on success, or an error code otherwise.\n */\nstatic int noise_protobuf_read_integer\n    (NoiseProtobuf *pbuf, int tag, uint64_t *value, void *result_ptr)\n{\n    int err;\n    if (!pbuf || !result_ptr)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_VARINT);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    return noise_protobuf_read_varint(pbuf, value);\n}\n\n/**\n * \\brief Reads a tagged int32 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for an integer or the \\a tag is incorrect.\n */\nint noise_protobuf_read_int32(NoiseProtobuf *pbuf, int tag, int32_t *value)\n{\n    uint64_t val = 0;\n    int err;\n    if (value)\n        *value = 0;\n    err = noise_protobuf_read_integer(pbuf, tag, &val, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = (int32_t)val;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged uint32 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for an integer or the \\a tag is incorrect.\n */\nint noise_protobuf_read_uint32(NoiseProtobuf *pbuf, int tag, uint32_t *value)\n{\n    uint64_t val = 0;\n    int err;\n    if (value)\n        *value = 0;\n    err = noise_protobuf_read_integer(pbuf, tag, &val, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = (uint32_t)val;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged int64 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for an integer or the \\a tag is incorrect.\n */\nint noise_protobuf_read_int64(NoiseProtobuf *pbuf, int tag, int64_t *value)\n{\n    uint64_t val = 0;\n    int err;\n    if (value)\n        *value = 0;\n    err = noise_protobuf_read_integer(pbuf, tag, &val, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = (int64_t)val;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged uint64 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for an integer or the \\a tag is incorrect.\n */\nint noise_protobuf_read_uint64(NoiseProtobuf *pbuf, int tag, uint64_t *value)\n{\n    uint64_t val = 0;\n    int err;\n    if (value)\n        *value = 0;\n    err = noise_protobuf_read_integer(pbuf, tag, &val, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = val;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged sint32 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for an integer or the \\a tag is incorrect.\n */\nint noise_protobuf_read_sint32(NoiseProtobuf *pbuf, int tag, int32_t *value)\n{\n    uint64_t val = 0;\n    int err;\n    if (value)\n        *value = 0;\n    err = noise_protobuf_read_integer(pbuf, tag, &val, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = ((int32_t)(val >> 1)) ^ (-((int32_t)(val & 0x01)));\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged sint64 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for an integer or the \\a tag is incorrect.\n */\nint noise_protobuf_read_sint64(NoiseProtobuf *pbuf, int tag, int64_t *value)\n{\n    uint64_t val = 0;\n    int err;\n    if (value)\n        *value = 0;\n    err = noise_protobuf_read_integer(pbuf, tag, &val, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = ((int64_t)(val >> 1)) ^ (-((int64_t)(val & 0x01)));\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged sfixed32 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a sfixed32 or the \\a tag is incorrect.\n */\nint noise_protobuf_read_sfixed32(NoiseProtobuf *pbuf, int tag, int32_t *value)\n{\n    return noise_protobuf_read_fixed32(pbuf, tag, (uint32_t *)value);\n}\n\n/**\n * \\brief Reads a tagged fixed32 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a fixed32 or the \\a tag is incorrect.\n */\nint noise_protobuf_read_fixed32(NoiseProtobuf *pbuf, int tag, uint32_t *value)\n{\n    int err;\n    const uint8_t *data;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_32BIT);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_read_space(pbuf, 4, &data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = ((uint32_t)(data[0])) |\n            (((uint32_t)(data[1])) << 8) |\n            (((uint32_t)(data[2])) << 16) |\n            (((uint32_t)(data[3])) << 24);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged sfixed64 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a sfixed64 or the \\a tag is incorrect.\n */\nint noise_protobuf_read_sfixed64(NoiseProtobuf *pbuf, int tag, int64_t *value)\n{\n    return noise_protobuf_read_fixed64(pbuf, tag, (uint64_t *)value);\n}\n\n/**\n * \\brief Reads a tagged fixed64 value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the integer value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a fixed64 or the \\a tag is incorrect.\n */\nint noise_protobuf_read_fixed64(NoiseProtobuf *pbuf, int tag, uint64_t *value)\n{\n    int err;\n    const uint8_t *data;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    *value = 0;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_64BIT);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_read_space(pbuf, 8, &data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = ((uint64_t)(data[0])) |\n            (((uint64_t)(data[1])) << 8) |\n            (((uint64_t)(data[2])) << 16) |\n            (((uint64_t)(data[3])) << 24) |\n            (((uint64_t)(data[4])) << 32) |\n            (((uint64_t)(data[5])) << 40) |\n            (((uint64_t)(data[6])) << 48) |\n            (((uint64_t)(data[7])) << 56);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged float value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the floating-point value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a float or the \\a tag is incorrect.\n */\nint noise_protobuf_read_float(NoiseProtobuf *pbuf, int tag, float *value)\n{\n    union {\n        uint32_t ivalue;\n        float fvalue;\n    } un;\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    un.ivalue = 0;\n    err = noise_protobuf_read_fixed32(pbuf, tag, &(un.ivalue));\n    if (err == NOISE_ERROR_NONE)\n        *value = un.fvalue;\n    else\n        *value = 0.0f;\n    return err;\n}\n\n/**\n * \\brief Reads a tagged double value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the floating-point value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a double or the \\a tag is incorrect.\n */\nint noise_protobuf_read_double(NoiseProtobuf *pbuf, int tag, double *value)\n{\n    union {\n        uint64_t ivalue;\n        double fvalue;\n    } un;\n    int err;\n    if (!value)\n        return NOISE_ERROR_INVALID_PARAM;\n    un.ivalue = 0;\n    err = noise_protobuf_read_fixed64(pbuf, tag, &(un.ivalue));\n    if (err == NOISE_ERROR_NONE)\n        *value = un.fvalue;\n    else\n        *value = 0.0;\n    return err;\n}\n\n/**\n * \\brief Reads a tagged boolean value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param value Variable that returns the boolean value.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a value is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for an boolean or the \\a tag is incorrect.\n */\nint noise_protobuf_read_bool(NoiseProtobuf *pbuf, int tag, int *value)\n{\n    uint64_t val = 0;\n    int err;\n    if (value)\n        *value = 0;\n    err = noise_protobuf_read_integer(pbuf, tag, &val, value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    *value = (val != 0);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged string value from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param str The buffer to write the string value to.\n * \\param max_size The maximum size of \\a str in bytes.\n * \\param size Points to a variable to receive the actual size of the\n * string, excluding the NUL terminator.  This argument may be NULL\n * if the application does not need the size.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a str is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a max_size is zero.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a UTF-8 string or the \\a tag is incorrect.\n *\n * This function guarantees to NUL-terminate the value in \\a str if\n * \\a str is not NULL and \\a max_size is non-zero.\n *\n * This function will validate the incoming data to ensure that it is\n * strict UTF-8 with no embedded NUL's.\n *\n * \\sa noise_protobuf_read_alloc_string(), noise_protobuf_read_bytes()\n */\nint noise_protobuf_read_string\n    (NoiseProtobuf *pbuf, int tag, char *str, size_t max_size, size_t *size)\n{\n    int err;\n    uint64_t value;\n    size_t sz;\n    const uint8_t *data;\n    if (!str || !max_size)\n        return NOISE_ERROR_INVALID_PARAM;\n    *str = '\\0';\n    if (size)\n        *size = 0;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_DELIM);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_read_varint(pbuf, &value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (value >= max_size) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    sz = (size_t)value;\n    err = noise_protobuf_read_space(pbuf, sz, &data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (!noise_protobuf_is_utf8((const char *)data, sz)) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    memcpy(str, data, sz);\n    str[sz] = '\\0';\n    if (size)\n        *size = sz;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged string value from a protobuf and allocates\n * memory from the heap to hold it.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param str Points to a variable to receive the pointer to the newly\n * allocated memory.\n * \\param max_size The maximum allowable size for the string if non-zero,\n * excluding the NUL-terminator.  If \\a max_size is zero, then the\n * allowable string size is unlimited.\n * \\param size Points to a variable to receive the actual size of the\n * string, excluding the NUL terminator.  This argument may be NULL\n * if the application does not need the size.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a str is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a max_size is zero.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is invalid\n * for a UTF-8 string or the \\a tag is incorrect.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to allocate\n * the string.\n *\n * This function will validate the incoming data to ensure that it is\n * strict UTF-8 with no embedded NUL's.\n *\n * The memory is allocated with the system malloc() function.\n *\n * \\sa noise_protobuf_read_string(), noise_protobuf_read_alloc_bytes()\n */\nint noise_protobuf_read_alloc_string\n    (NoiseProtobuf *pbuf, int tag, char **str, size_t max_size, size_t *size)\n{\n    int err;\n    uint64_t value;\n    size_t sz;\n    const uint8_t *data;\n    if (!str)\n        return NOISE_ERROR_INVALID_PARAM;\n    *str = 0;\n    if (size)\n        *size = 0;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_DELIM);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_read_varint(pbuf, &value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (!max_size)\n        max_size = pbuf->size - pbuf->posn;\n    if (value > max_size) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    sz = (size_t)value;\n    err = noise_protobuf_read_space(pbuf, sz, &data);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (!noise_protobuf_is_utf8((const char *)data, sz)) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    if ((*str = (char *)malloc(sz + 1)) == 0) {\n        pbuf->error = NOISE_ERROR_NO_MEMORY;\n        return pbuf->error;\n    }\n    memcpy(*str, data, sz);\n    (*str)[sz] = '\\0';\n    if (size)\n        *size = sz;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged byte array from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param data The buffer to write the byte array data to.\n * \\param max_size The maximum size of \\a data in bytes.\n * \\param size Points to a variable to receive the actual size of the\n * byte array.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf, \\a data, or \\a size is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is larger\n * than \\a max_size or the \\a tag is incorrect.\n *\n * \\sa noise_protobuf_read_alloc_bytes(), noise_protobuf_read_string()\n */\nint noise_protobuf_read_bytes\n    (NoiseProtobuf *pbuf, int tag, void *data, size_t max_size, size_t *size)\n{\n    int err;\n    uint64_t value;\n    size_t sz;\n    const uint8_t *d;\n    if (!data || !size)\n        return NOISE_ERROR_INVALID_PARAM;\n    *size = 0;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_DELIM);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_read_varint(pbuf, &value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (value > max_size) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    sz = (size_t)value;\n    err = noise_protobuf_read_space(pbuf, sz, &d);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    memcpy(data, d, sz);\n    if (size)\n        *size = sz;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a tagged byte array from a protobuf and allocates memory\n * from the heap to hold it.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param data Points to a variable to receive the pointer to the newly\n * allocated memory.\n * \\param max_size The maximum allowable size for the byte array if non-zero.\n * If \\a max_size is zero, then the allowable byte array size is unlimited.\n * \\param size Points to a variable to receive the actual size of the\n * byte array.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf, \\a data, or \\a size is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is larger\n * than \\a max_size or the \\a tag is incorrect.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to allocate\n * the byte array.\n *\n * The memory is allocated with the system malloc() function.\n *\n * \\sa noise_protobuf_read_alloc_string(), noise_protobuf_read_bytes()\n */\nint noise_protobuf_read_alloc_bytes\n    (NoiseProtobuf *pbuf, int tag, void **data, size_t max_size, size_t *size)\n{\n    int err;\n    uint64_t value;\n    size_t sz;\n    const uint8_t *d;\n    if (!data || !size)\n        return NOISE_ERROR_INVALID_PARAM;\n    *data = 0;\n    if (size)\n        *size = 0;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_DELIM);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    err = noise_protobuf_read_varint(pbuf, &value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (!max_size)\n        max_size = pbuf->size - pbuf->posn;\n    if (value > max_size) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    sz = (size_t)value;\n    err = noise_protobuf_read_space(pbuf, sz, &d);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (sz > 0) {\n        if ((*data = malloc(sz)) == 0) {\n            pbuf->error = NOISE_ERROR_NO_MEMORY;\n            return pbuf->error;\n        }\n        memcpy(*data, d, sz);\n    } else {\n        /* malloc() may return NULL for a zero size: prevent that */\n        if ((*data = malloc(1)) == 0) {\n            pbuf->error = NOISE_ERROR_NO_MEMORY;\n            return pbuf->error;\n        }\n        ((uint8_t *)(*data))[0] = '\\0';\n    }\n    if (size)\n        *size = sz;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Starts reading a tagged nested element from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param tag The tag that is expected on the field, or zero for no tag.\n * \\param end_posn Points to a variable to receive the position of the\n * end of the nested element.  This is used by noise_protobuf_read_end_element()\n * and noise_protobuf_read_at_end_element() to determine if the end of\n * the nested element has been reached yet.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf or \\a end_posn is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf is not formatted\n * correctly for a nested element, or the \\a tag is incorrect.\n *\n * \\sa noise_protobuf_read_end_element(), noise_protobuf_read_at_end_element()\n */\nint noise_protobuf_read_start_element\n    (NoiseProtobuf *pbuf, int tag, size_t *end_posn)\n{\n    int err;\n    uint64_t size;\n    if (!pbuf || !end_posn)\n        return NOISE_ERROR_INVALID_PARAM;\n    *end_posn = 0;\n    err = noise_protobuf_read_tag(pbuf, tag, NOISE_PROTOBUF_WIRE_DELIM);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (tag) {\n        err = noise_protobuf_read_varint(pbuf, &size);\n        if (err != NOISE_ERROR_NONE)\n            return err;\n        if (size > (pbuf->size - pbuf->posn)) {\n            pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n            return pbuf->error;\n        }\n        *end_posn = pbuf->posn + size;\n    } else {\n        /* No tag, so the element continues until the end of the buffer */\n        *end_posn = pbuf->size;\n    }\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Ends reading a nested element from a protobuf.\n *\n * \\param pbuf The protobuf.\n * \\param end_posn The end of the nested element as returned by\n * noise_protobuf_read_start_element().\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL.\n * \\return NOISE_ERROR_INVALID_FORMAT if \\a pbuf is not positioned at\n * exactly \\a end_posn.\n *\n * \\sa noise_protobuf_read_start_element(), noise_protobuf_read_at_end_element()\n */\nint noise_protobuf_read_end_element(NoiseProtobuf *pbuf, size_t end_posn)\n{\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error != NOISE_ERROR_NONE)\n        return pbuf->error;\n    if (pbuf->posn != end_posn) {\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        return pbuf->error;\n    }\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Determine if a protobuf is positioned at the end of a nested element.\n *\n * \\param pbuf The protobuf.\n * \\param end_posn The end of the nested element as returned by\n * noise_protobuf_read_start_element().\n *\n * \\return Returns 1 if the position is past \\a end_posn in \\a pbuf or an\n * error has already occurred.  Returns 0 if the position has not yet reached\n * \\a end_posn.\n *\n * \\sa noise_protobuf_read_start_element(), noise_protobuf_read_end_element()\n */\nint noise_protobuf_read_at_end_element\n    (const NoiseProtobuf *pbuf, size_t end_posn)\n{\n    if (!pbuf || pbuf->error != NOISE_ERROR_NONE)\n        return 1;\n    return pbuf->posn >= end_posn;\n}\n\n/**\n * \\brief Stops reading from a protobuf and reports \"invalid format\".\n *\n * \\param pbuf The protobuf.\n *\n * \\return NOISE_ERROR_INVALID_PARAM if \\a pbuf is NULL, or\n * NOISE_ERROR_INVALID_FORMAT otherwise.\n *\n * The application calls this function to abort the reading process because\n * an unrecoverable error has occurred.\n *\n * \\note If an error has already occurred during the reading process, then\n * this function returns that error rather than NOISE_ERROR_INVALID_FORMAT.\n *\n * \\sa noise_protobuf_read_skip()\n */\nint noise_protobuf_read_stop(NoiseProtobuf *pbuf)\n{\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (pbuf->error == NOISE_ERROR_NONE)\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n    return pbuf->error;\n}\n\n/**\n * \\brief Skips a tagged field within a protobuf completely.\n *\n * \\param pbuf The protobuf.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_FORMAT if the data in \\a pbuf to be skipped\n * is not correctly formatted as a field.\n *\n * The application should call this function for unknown fields so as to\n * skip them and move onto the next field.  If the application wishes to\n * abort on an unknown field, it should call noise_protobuf_read_stop()\n * instead.\n *\n * \\sa noise_protobuf_read_stop()\n */\nint noise_protobuf_read_skip(NoiseProtobuf *pbuf)\n{\n    uint64_t value;\n    const uint8_t *data;\n    int err;\n    if (!pbuf)\n        return NOISE_ERROR_INVALID_PARAM;\n    err = noise_protobuf_read_varint(pbuf, &value);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    switch (value & NOISE_PROTOBUF_WIRE_MASK) {\n    case NOISE_PROTOBUF_WIRE_VARINT:\n        err = noise_protobuf_read_varint(pbuf, &value);\n        break;\n    case NOISE_PROTOBUF_WIRE_64BIT:\n        err = noise_protobuf_read_space(pbuf, 8, &data);\n        break;\n    case NOISE_PROTOBUF_WIRE_DELIM:\n        err = noise_protobuf_read_varint(pbuf, &value);\n        if (err == NOISE_ERROR_NONE) {\n            if (value <= (pbuf->size - pbuf->posn)) {\n                pbuf->posn += value;\n            } else {\n                pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n                err = pbuf->error;\n            }\n        }\n        break;\n    case NOISE_PROTOBUF_WIRE_32BIT:\n        err = noise_protobuf_read_space(pbuf, 4, &data);\n        break;\n    default:\n        pbuf->error = NOISE_ERROR_INVALID_FORMAT;\n        err = pbuf->error;\n        break;\n    }\n    return err;\n}\n\n/**\n * \\brief Grows the size of a dynamically-sized array.\n *\n * \\param max The current maximum size.\n *\n * \\return The new maximum size.\n */\nstatic size_t noise_protobuf_grow_array(size_t max)\n{\n    if (max >= 64)\n        max += 64;\n    else if (max)\n        max *= 2;\n    else\n        max = 4;\n    return max;\n}\n\n/**\n * \\brief Adds an element to an array of primitive values.\n *\n * \\param array Points to the array to add to.\n * \\param count Points to the current size of the array.\n * \\param max Points to the current maximum size of the array.\n * \\param value Points to the value to add.\n * \\param size Size of the elements in the array.\n *\n * \\return NOISE_ERROR_NONE on success or an error code otherwise.\n *\n * This function is intended as a helper for the output of the\n * noise-protoc complier.\n *\n * \\sa noise_protobuf_add_to_string_array(), noise_protobuf_add_to_bytes_array()\n */\nint noise_protobuf_add_to_array\n    (void **array, size_t *count, size_t *max, const void *value, size_t size)\n{\n    if (*count >= *max) {\n        size_t new_max = noise_protobuf_grow_array(*max);\n        void *new_array = calloc(new_max, size);\n        if (!new_array)\n            return NOISE_ERROR_NO_MEMORY;\n        if (*count)\n            memcpy(new_array, *array, *count * size);\n        noise_protobuf_free_memory(*array, *max * size);\n        *array = new_array;\n        *max = new_max;\n    }\n    memcpy(((uint8_t *)(*array)) + *count * size, value, size);\n    ++(*count);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Internal implementation of noise_protobuf_add_to_string_array()\n * and noise_protobuf_add_to_bytes_array()\n */\nstatic int noise_protobuf_add_to_block_array\n    (void ***array, size_t **len_array, size_t *count, size_t *max,\n     const void *value, size_t size, int add_nul)\n{\n    void *data;\n\n    /* Bail out if the value to add is NULL and non-zero in size */\n    if (!value && size)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Make a copy of the value first */\n    data = malloc(size + (add_nul ? 1 : 0));\n    if (!data)\n        return NOISE_ERROR_NO_MEMORY;\n    if (size)\n        memcpy(data, value, size);\n    if (add_nul)\n        ((uint8_t *)data)[size] = 0;\n\n    /* Grow the size of the array if necessary */\n    if (*count >= *max) {\n        size_t new_max = noise_protobuf_grow_array(*max);\n        void **new_array = (void **)calloc(new_max, sizeof(void *));\n        size_t *new_len_array = (size_t *)calloc(new_max, sizeof(size_t));\n        if (!new_array || !new_len_array) {\n            if (new_array)\n                free(new_array);\n            if (new_len_array)\n                free(new_len_array);\n            noise_protobuf_free_memory(data, size);\n            return NOISE_ERROR_NO_MEMORY;\n        }\n        if (*count) {\n            memcpy(new_array, *array, *count * sizeof(void *));\n            memcpy(new_len_array, *len_array, *count * sizeof(size_t));\n        }\n        noise_protobuf_free_memory(*array, *max * sizeof(void *));\n        noise_protobuf_free_memory(*len_array, *max * sizeof(size_t));\n        *array = new_array;\n        *len_array = new_len_array;\n        *max = new_max;\n    }\n\n    /* Add the new element to the array */\n    (*array)[*count] = data;\n    (*len_array)[*count] = size;\n    ++(*count);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Adds a string to a dynamically-sized array.\n *\n * \\param array Points to the array to add to.\n * \\param len_array Points to the array of length values to add to.\n * \\param count Points to the current size of the array.\n * \\param max Points to the current maximum size of the array.\n * \\param value Points to the string value to add.\n * \\param size Size of the string value to add.\n *\n * \\return NOISE_ERROR_NONE on success or an error code otherwise.\n *\n * This function is intended as a helper for the output of the\n * noise-protoc complier.\n *\n * \\sa noise_protobuf_add_to_array(), noise_protobuf_add_to_bytes_array()\n */\nint noise_protobuf_add_to_string_array\n    (char ***array, size_t **len_array, size_t *count, size_t *max,\n     const char *value, size_t size)\n{\n    return noise_protobuf_add_to_block_array\n        ((void ***)array, len_array, count, max, value, size, 1);\n}\n\n/**\n * \\brief Adds a byte string to a dynamically-sized array.\n *\n * \\param array Points to the array to add to.\n * \\param len_array Points to the array of length values to add to.\n * \\param count Points to the current size of the array.\n * \\param max Points to the current maximum size of the array.\n * \\param value Points to the byte string value to add.\n * \\param size Size of the byte string value to add.\n *\n * \\return NOISE_ERROR_NONE on success or an error code otherwise.\n *\n * This function is intended as a helper for the output of the\n * noise-protoc complier.\n *\n * \\sa noise_protobuf_add_to_array(), noise_protobuf_add_to_string_array()\n */\nint noise_protobuf_add_to_bytes_array\n    (void ***array, size_t **len_array, size_t *count, size_t *max,\n     const void *value, size_t size)\n{\n    return noise_protobuf_add_to_block_array\n        (array, len_array, count, max, value, size, size ? 0 : 1);\n}\n\n/**\n * \\brief Inserts an item into a dynamically-sized array.\n *\n * \\param array Points to the array to add to.\n * \\param len_array Points to the array of length values to add to.\n * \\param count Points to the current size of the array.\n * \\param max Points to the current maximum size of the array.\n * \\param index The index within the array to insert at.  If this is\n * greater than the size of the array, the value will be appended.\n * \\param value Points to the value to add.\n * \\param size Size of the elements in the array.\n *\n * \\return NOISE_ERROR_NONE on success or an error code otherwise.\n *\n * This function is intended as a helper for the output of the\n * noise-protoc complier.\n */\nint noise_protobuf_insert_into_array\n    (void **array, size_t *count, size_t *max, size_t index,\n     const void *value, size_t size)\n{\n    uint8_t *base;\n\n    /* Handle the easy case first - inserting at the end of the array */\n    if (index >= *count) {\n        return noise_protobuf_add_to_array\n            (array, count, max, value, size);\n    }\n\n    /* Grow the array size if necessary */\n    if (*count >= *max) {\n        size_t new_max = noise_protobuf_grow_array(*max);\n        void *new_array = calloc(new_max, size);\n        if (!new_array)\n            return NOISE_ERROR_NO_MEMORY;\n        if (*count)\n            memcpy(new_array, *array, *count * size);\n        noise_protobuf_free_memory(*array, *max * size);\n        *array = new_array;\n        *max = new_max;\n    }\n\n    /* Move existing items out of the way and insert the new one */\n    base = (uint8_t *)(*array);\n    memmove(base + (index + 1) * size, base + index * size,\n            (*count - index) * size);\n    memcpy(base + index * size, value, size);\n    ++(*count);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Frees a block of memory after securely clearing it.\n *\n * \\param ptr Points to the block of memory.\n * \\param size The size of the block in bytes.\n *\n * This function uses the system free() function to free \\a ptr.\n */\nvoid noise_protobuf_free_memory(void *ptr, size_t size)\n{\n    if (ptr) {\n        volatile uint8_t *p = (volatile uint8_t *)ptr;\n        while (size > 0) {\n            *p++ = 0;\n            --size;\n        }\n        free(ptr);\n    }\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/Makefile.am",
    "content": "\nAUTOMAKE_OPTIONS = subdir-objects\n\nlib_LIBRARIES = libnoiseprotocol.a\n\n# Definitions for Ed448-Goldilocks (Curve448 reference implementation)\nGOLDILOCKS_SRCDIR = $(top_srcdir)/src/crypto/goldilocks/src\nGOLDILOCKS_CPPFLAGS = \\\n\t-I$(GOLDILOCKS_SRCDIR)/include \\\n\t-I$(GOLDILOCKS_SRCDIR)/p448 \\\n\t-I$(GOLDILOCKS_SRCDIR)/p448/@GOLDILOCKS_ARCH@\n\nAM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src $(GOLDILOCKS_CPPFLAGS)\nAM_CFLAGS = @WARNING_FLAGS@\n\nif USE_OPENSSL\nAM_CPPFLAGS += -DUSE_OPENSSL=1\nAM_CFLAGS += $(openssl_CFLAGS)\nendif\n\nif USE_LIBSODIUM\nAM_CPPFLAGS += -DUSE_LIBSODIUM=1\nAM_CFLAGS += $(libsodium_CFLAGS)\nelse !USE_LIBSODIUM\n# Definitions for ed25519-donna (Ed25519 reference implementation)\nED25519_CPPFLAGS = -DED25519_CUSTOMHASH -DED25519_CUSTOMRANDOM\nAM_CPPFLAGS += $(ED25519_CPPFLAGS)\nendif\n\nlibnoiseprotocol_a_SOURCES = \\\n\tcipherstate.c \\\n\tdhstate.c \\\n\terrors.c \\\n\thandshakestate.c \\\n\thashstate.c \\\n\tinternal.c \\\n\tnames.c \\\n\tpatterns.c \\\n\trandstate.c \\\n\tsignstate.c \\\n\tsymmetricstate.c \\\n\tutil.c \\\n\t../backend/ref/dh-curve448.c \\\n\t../backend/ref/dh-newhope.c \\\n\t../backend/ref/hash-blake2s.c \\\n\t../crypto/blake2/blake2s.c \\\n\t../crypto/curve448/curve448.c \\\n\t../crypto/goldilocks/src/p448/@GOLDILOCKS_ARCH@/p448.c \\\n\t../crypto/newhope/batcher.c \\\n\t../crypto/newhope/error_correction.c \\\n\t../crypto/newhope/error_correction.h \\\n\t../crypto/newhope/fips202.c \\\n\t../crypto/newhope/fips202.h \\\n\t../crypto/newhope/newhope.c \\\n\t../crypto/newhope/newhope.h \\\n\t../crypto/newhope/ntt.c \\\n\t../crypto/newhope/ntt.h \\\n\t../crypto/newhope/params.h \\\n\t../crypto/newhope/poly.c \\\n\t../crypto/newhope/poly.h \\\n\t../crypto/newhope/precomp.c \\\n\t../crypto/newhope/randombytes.h \\\n\t../crypto/newhope/reduce.c \\\n\t../crypto/newhope/reduce.h\n\nif USE_OPENSSL\nlibnoiseprotocol_a_SOURCES += \\\n\t../backend/openssl/cipher-aesgcm.c\nelse !USE_OPENSSL\nif USE_LIBSODIUM\nlibnoiseprotocol_a_SOURCES += \\\n\t../backend/sodium/cipher-aesgcm.c \\\n\t../backend/ref/cipher-aesgcm.c\nelse\nlibnoiseprotocol_a_SOURCES += \\\n\t../backend/ref/cipher-aesgcm.c\nendif\nendif\n\nif USE_LIBSODIUM\nlibnoiseprotocol_a_SOURCES += \\\n\trand_sodium.c \\\n\t../backend/sodium/cipher-aesgcm.c \\\n\t../backend/sodium/cipher-chachapoly.c \\\n\t../backend/sodium/dh-curve25519.c \\\n\t../backend/sodium/hash-blake2b.c \\\n\t../backend/sodium/hash-sha256.c \\\n\t../backend/sodium/hash-sha512.c \\\n\t../backend/sodium/sign-ed25519.c \\\n\t../crypto/aes/rijndael-alg-fst.c \\\n\t../crypto/ghash/ghash.c\nelse !USE_LIBSODIUM\nlibnoiseprotocol_a_SOURCES += \\\n\trand_os.c \\\n\t../backend/ref/cipher-aesgcm.c \\\n\t../backend/ref/cipher-chachapoly.c \\\n\t../backend/ref/dh-curve25519.c \\\n\t../backend/ref/hash-blake2b.c \\\n\t../backend/ref/hash-sha256.c \\\n\t../backend/ref/hash-sha512.c \\\n\t../backend/ref/sign-ed25519.c \\\n\t../crypto/aes/rijndael-alg-fst.c \\\n\t../crypto/blake2/blake2b.c \\\n\t../crypto/chacha/chacha.c \\\n\t../crypto/donna/poly1305-donna.c \\\n\t../crypto/ghash/ghash.c \\\n\t../crypto/newhope/crypto_stream_chacha20.c \\\n\t../crypto/newhope/crypto_stream_chacha20.h \\\n\t../crypto/sha2/sha256.c \\\n\t../crypto/sha2/sha512.c \\\n\t../crypto/ed25519/ed25519.c\nendif\n"
  },
  {
    "path": "src/protocol/cipherstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <string.h>\n\n/**\n * \\file cipherstate.h\n * \\brief CipherState interface\n */\n\n/**\n * \\file cipherstate.c\n * \\brief CipherState implementation\n */\n\n/**\n * \\defgroup cipherstate CipherState API\n *\n * CipherState objects are used to encrypt or decrypt data during a\n * session.  Once the handshake has completed, noise_symmetricstate_split()\n * will create two CipherState objects for encrypting packets sent to\n * the other party, and decrypting packets received from the other party.\n */\n/**@{*/\n\n/**\n * \\typedef NoiseCipherState\n * \\brief Opaque object that represents a CipherState.\n */\n\n/** @cond */\n\n/** Maximum length of an encryption key across all back ends */\n#define NOISE_MAX_KEY_LEN   32\n\n/** Maximum length of a MAC value across all back ends */\n#define NOISE_MAX_MAC_LEN   16\n\n/** @endcond */\n\n/**\n * \\brief Creates a new CipherState object by its algorithm identifier.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new CipherState object.\n * \\param id The algorithm identifier; NOISE_CIPHER_CHACHAPOLY,\n * NOISE_CIPHER_AESGCM, etc.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_UNKNOWN_ID if \\a id is unknown.\n * \\return or NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new CipherState object.\n *\n * \\sa noise_cipherstate_free(), noise_cipherstate_new_by_name()\n */\nint noise_cipherstate_new_by_id(NoiseCipherState **state, int id)\n{\n    /* The \"state\" argument must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Create the CipherState object for the \"id\" */\n    *state = 0;\n    switch (id) {\n    case NOISE_CIPHER_CHACHAPOLY:\n        *state = noise_chachapoly_new();\n        break;\n\n    case NOISE_CIPHER_AESGCM:\n        *state = noise_aesgcm_new();\n        break;\n\n    default:\n        return NOISE_ERROR_UNKNOWN_ID;\n    }\n\n    /* Bail out if insufficient memory */\n    if (!(*state))\n        return NOISE_ERROR_NO_MEMORY;\n\n    /* Ready to go */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Creates a new CipherState object by its algorithm name.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new CipherState object.\n * \\param name The name of the cipher algorithm; e.g. \"ChaChaPoly\".\n * This string must be NUL-terminated.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a name is NULL.\n * \\return NOISE_ERROR_UNKNOWN_NAME if \\a name is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new CipherState object.\n *\n * \\sa noise_cipherstate_free(), noise_cipherstate_new_by_id()\n */\nint noise_cipherstate_new_by_name(NoiseCipherState **state, const char *name)\n{\n    int id;\n\n    /* The \"state\" and \"name\" arguments must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!name)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Map the name and create the corresponding object */\n    id = noise_name_to_id(NOISE_CIPHER_CATEGORY, name, strlen(name));\n    if (id)\n        return noise_cipherstate_new_by_id(state, id);\n\n    /* We don't know what this is */\n    return NOISE_ERROR_UNKNOWN_NAME;\n}\n\n/**\n * \\brief Frees a CipherState object after destroying all sensitive material.\n *\n * \\param state The CipherState object to free.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_cipherstate_new_by_id(), noise_cipherstate_new_by_name()\n */\nint noise_cipherstate_free(NoiseCipherState *state)\n{\n    /* Bail out if no cipher state */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Call the backend-specific destroy function if necessary */\n    if (state->destroy)\n        (*(state->destroy))(state);\n\n    /* Clean and free the memory */\n    noise_free(state, state->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the algorithm identifier for a CipherState object.\n *\n * \\param state The CipherState object.\n *\n * \\return The algorithm identifier, or NOISE_CIPHER_NONE if \\a state is NULL.\n */\nint noise_cipherstate_get_cipher_id(const NoiseCipherState *state)\n{\n    return state ? state->cipher_id : NOISE_CIPHER_NONE;\n}\n\n/**\n * \\brief Gets the length of the encryption key for a CipherState object.\n *\n * \\param state The CipherState object.\n *\n * \\return The size of the key in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_cipherstate_get_mac_length()\n */\nsize_t noise_cipherstate_get_key_length(const NoiseCipherState *state)\n{\n    return state ? state->key_len : 0;\n}\n\n/**\n * \\brief Gets the length of packet MAC values for a CipherState object.\n *\n * \\param state The CipherState object.\n *\n * \\return The size of the MAC in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_cipherstate_get_key_length()\n */\nsize_t noise_cipherstate_get_mac_length(const NoiseCipherState *state)\n{\n    return state ? state->mac_len : 0;\n}\n\n/**\n * \\brief Initializes the key on a CipherState object.\n *\n * \\param state The CipherState object.\n * \\param key Points to the key.\n * \\param key_len The length of the key in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a key_len is the wrong length\n * for this cipher.\n *\n * \\sa noise_cipherstate_get_key_length(), noise_cipherstate_has_key()\n */\nint noise_cipherstate_init_key\n    (NoiseCipherState *state, const uint8_t *key, size_t key_len)\n{\n    /* Validate the parameters */\n    if (!state || !key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (key_len != state->key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Set the key */\n    (*(state->init_key))(state, key);\n    state->has_key = 1;\n    state->n = 0;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Determine if the key has been set on a CipherState object.\n *\n * \\param state The CipherState object.\n *\n * \\return Returns 1 if the key has been set, or 0 if the key has\n * not been set (or \\a state is NULL).\n *\n * \\sa noise_cipherstate_init_key()\n */\nint noise_cipherstate_has_key(const NoiseCipherState *state)\n{\n    return state ? state->has_key : 0;\n}\n\n/**\n * \\brief Encrypts a block of data with this CipherState object.\n *\n * \\param state The CipherState object.\n * \\param ad Points to the associated data, which can be NULL only if\n * \\a ad_len is zero.\n * \\param ad_len The length of the associated data in bytes.\n * \\param buffer The buffer containing the plaintext on entry and the\n * ciphertext plus MAC on exit.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a ad is NULL and \\a ad_len\n * is not zero.\n * \\return NOISE_ERROR_INVALID_NONCE if the nonce previously overflowed.\n * \\return NOISE_ERROR_INVALID_LENGTH if the ciphertext plus MAC is\n * too large to fit within the maximum size of \\a buffer and to also\n * remain within 65535 bytes.\n *\n * The plaintext is encrypted in-place with the ciphertext also written\n * to \\a buffer.  There must be enough room on the end of \\a buffer to hold\n * the extra MAC value that will be appended.  In other words, it is\n * assumed that the plaintext is in an output buffer ready to be\n * transmitted once the data has been encrypted and the final packet\n * length has been determined.\n *\n * The following example demonstrates how to initialize a buffer for\n * use with this function.  The <tt>message</tt> is a byte array containing\n * <tt>plaintext_size</tt> bytes of plaintext on entry.  On exit,\n * <tt>buffer.size</tt> will contain the number of bytes of ciphertext\n * plus MAC to be transmitted:\n *\n * \\code\n * NoiseBuffer buffer;\n * noise_buffer_set_inout(buffer, message, plaintext_size, sizeof(message));\n * noise_cipherstate_encrypt_with_ad(state, ad, ad_len, &buffer);\n * // Transmit the buffer.size bytes starting at buffer.data\n * \\endcode\n *\n * \\sa noise_cipherstate_decrypt_with_ad(), noise_cipherstate_get_mac_length()\n */\nint noise_cipherstate_encrypt_with_ad\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     NoiseBuffer *buffer)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || (!ad && ad_len) || !buffer || !(buffer->data))\n        return NOISE_ERROR_INVALID_PARAM;\n    if (buffer->size > buffer->max_size)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* If the key hasn't been set yet, return the plaintext as-is */\n    if (!state->has_key) {\n        if (buffer->size > NOISE_MAX_PAYLOAD_LEN)\n            return NOISE_ERROR_INVALID_LENGTH;\n        return NOISE_ERROR_NONE;\n    }\n\n    /* Make sure that there is room for the MAC */\n    if (buffer->size > (size_t)(NOISE_MAX_PAYLOAD_LEN - state->mac_len))\n        return NOISE_ERROR_INVALID_LENGTH;\n    if ((buffer->max_size - buffer->size) < state->mac_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* If the nonce has overflowed, then further encryption is impossible.\n       The value 2^64 - 1 is reserved (Noise specification revision 30),\n       so if the nonce has reached that value then overflow has occurred. */\n    if (state->n == 0xFFFFFFFFFFFFFFFFULL)\n        return NOISE_ERROR_INVALID_NONCE;\n\n    /* Encrypt the plaintext and authenticate it */\n    err = (*(state->encrypt))(state, ad, ad_len, buffer->data, buffer->size);\n    ++(state->n);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Adjust the output length for the MAC and return */\n    buffer->size += state->mac_len;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Decrypts a block of data with this CipherState object.\n *\n * \\param state The CipherState object.\n * \\param ad Points to the associated data, which can be NULL only if\n * \\a ad_len is zero.\n * \\param ad_len The length of the associated data in bytes.\n * \\param buffer The buffer containing the ciphertext plus MAC on entry\n * and the plaintext on exit.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a ad is NULL and \\a ad_len\n * is not zero.\n * \\return NOISE_ERROR_MAC_FAILURE if the MAC check failed.\n * \\return NOISE_ERROR_INVALID_NONCE if the nonce previously overflowed.\n * \\return NOISE_ERROR_INVALID_LENGTH if the size of \\a buffer is larger\n  than 65535 bytes or is too small to contain the MAC value.\n *\n * The ciphertext is decrypted in-place with the plaintext also written\n * to \\a buffer.  In other words, it is assumed that the ciphertext plus\n * MAC is in an input buffer ready to be processed once the MAC has\n * been checked and the ciphertext has been decrypted.\n *\n * The following example demonstrates how to initialize a buffer for\n * use with this function.  The <tt>message</tt> is a byte array containing\n * <tt>ciphertext_size</tt> bytes of ciphertext plus MAC on entry.  On exit,\n * <tt>buffer.size</tt> will contain the number of bytes of plaintext:\n *\n * \\code\n * NoiseBuffer buffer;\n * noise_buffer_set_inout(buffer, message, ciphertext_size, sizeof(message));\n * noise_cipherstate_decrypt_with_ad(state, ad, ad_len, &buffer);\n * // The plaintext is the buffer.size bytes starting at buffer.data\n * \\endcode\n *\n * \\sa noise_cipherstate_encrypt_with_ad(), noise_cipherstate_get_mac_length()\n */\nint noise_cipherstate_decrypt_with_ad\n    (NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n     NoiseBuffer *buffer)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || (!ad && ad_len) || !buffer || !(buffer->data))\n        return NOISE_ERROR_INVALID_PARAM;\n    if (buffer->size > buffer->max_size || buffer->size > NOISE_MAX_PAYLOAD_LEN)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* If the key hasn't been set yet, return the ciphertext as-is */\n    if (!state->has_key)\n        return NOISE_ERROR_NONE;\n\n    /* Make sure there are enough bytes for the MAC */\n    if (buffer->size < state->mac_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* If the nonce has overflowed, then further decryption is impossible.\n       The value 2^64 - 1 is reserved (Noise specification revision 30),\n       so if the nonce has reached that value then overflow has occurred. */\n    if (state->n == 0xFFFFFFFFFFFFFFFFULL)\n        return NOISE_ERROR_INVALID_NONCE;\n\n    /* Decrypt the ciphertext and check the MAC */\n    err = (*(state->decrypt))\n        (state, ad, ad_len, buffer->data, buffer->size - state->mac_len);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    ++(state->n);\n\n    /* Adjust the output length for the MAC and return */\n    buffer->size -= state->mac_len;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Encrypts a block of data with this CipherState object.\n *\n * \\param state The CipherState object.\n * \\param buffer The buffer containing the plaintext on entry and the\n * ciphertext plus MAC on exit.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_INVALID_NONCE if the nonce previously overflowed.\n * \\return NOISE_ERROR_INVALID_LENGTH if the ciphertext plus MAC is\n * too large to fit within the maximum size of \\a buffer and to also\n * remain within 65535 bytes.\n *\n * This is a convenience function which encrypts the contents of a buffer\n * without any associated data.  It is otherwise identical to\n * noise_cipherstate_encrypt_with_ad().\n *\n * The plaintext is encrypted in-place with the ciphertext also written\n * to \\a buffer.  There must be enough room on the end of \\a buffer to hold\n * the extra MAC value that will be appended.  In other words, it is\n * assumed that the plaintext is in an output buffer ready to be\n * transmitted once the data has been encrypted and the final packet\n * length has been determined.\n *\n * The following example demonstrates how to initialize a buffer for\n * use with this function.  The <tt>message</tt> is a byte array containing\n * <tt>plaintext_size</tt> bytes of plaintext on entry.  On exit,\n * <tt>buffer.size</tt> will contain the number of bytes of ciphertext\n * plus MAC to be transmitted:\n *\n * \\code\n * NoiseBuffer buffer;\n * noise_buffer_set_inout(buffer, message, plaintext_size, sizeof(message));\n * noise_cipherstate_encrypt(state, &buffer);\n * // Transmit the buffer.size bytes starting at buffer.data\n * \\endcode\n *\n * \\sa noise_cipherstate_encrypt_with_ad()\n */\nint noise_cipherstate_encrypt(NoiseCipherState *state, NoiseBuffer *buffer)\n{\n    return noise_cipherstate_encrypt_with_ad(state, NULL, 0, buffer);\n}\n\n/**\n * \\brief Decrypts a block of data with this CipherState object.\n *\n * \\param state The CipherState object.\n * \\param buffer The buffer containing the ciphertext plus MAC on entry\n * and the plaintext on exit.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_MAC_FAILURE if the MAC check failed.\n * \\return NOISE_ERROR_INVALID_NONCE if the nonce previously overflowed.\n * \\return NOISE_ERROR_INVALID_LENGTH if the size of \\a buffer is larger\n  than 65535 bytes or is too small to contain the MAC value.\n *\n * This is a convenience function which decrypts the contents of a buffer\n * without any associated data.  It is otherwise identical to\n * noise_cipherstate_decrypt_with_ad().\n *\n * The ciphertext is decrypted in-place with the plaintext also written\n * to \\a buffer.  In other words, it is assumed that the ciphertext plus\n * MAC is in an input buffer ready to be processed once the MAC has\n * been checked and the ciphertext has been decrypted.\n *\n * The following example demonstrates how to initialize a buffer for\n * use with this function.  The <tt>message</tt> is a byte array containing\n * <tt>ciphertext_size</tt> bytes of ciphertext plus MAC on entry.  On exit,\n * <tt>buffer.size</tt> will contain the number of bytes of plaintext:\n *\n * \\code\n * NoiseBuffer buffer;\n * noise_buffer_set_inout(buffer, message, ciphertext_size, sizeof(message));\n * noise_cipherstate_decrypt(state, &buffer);\n * // The plaintext is the buffer.size bytes starting at buffer.data\n * \\endcode\n *\n * \\sa noise_cipherstate_decrypt_with_ad()\n */\nint noise_cipherstate_decrypt(NoiseCipherState *state, NoiseBuffer *buffer)\n{\n    return noise_cipherstate_decrypt_with_ad(state, NULL, 0, buffer);\n}\n\n/**\n * \\brief Sets the nonce value for this cipherstate object.\n *\n * \\param state The CipherState object.\n * \\param nonce The new nonce value to set.  This must be greater than\n * or equal to the current nonce value in the state.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the key has not been set yet.\n * \\return NOISE_ERROR_INVALID_NONCE if \\a nonce is smaller than\n * the current value.\n *\n * \\warning This function is intended for testing purposes only.  It is\n * dangerous to set the nonce back to a previously-used value so this\n * function will actively prevent that from happening.\n *\n * \\sa noise_cipherstate_init_key()\n */\nint noise_cipherstate_set_nonce(NoiseCipherState *state, uint64_t nonce)\n{\n    /* Bail out if the state is NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* If the key hasn't been set yet, we cannot do this */\n    if (!state->has_key)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Reject the value if the nonce would go backwards */\n    if (state->n > nonce)\n        return NOISE_ERROR_INVALID_NONCE;\n\n    /* Set the nonce and return */\n    state->n = nonce;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the maximum key length for the supported algorithms.\n *\n * \\sa noise_cipherstate_get_max_mac_length()\n */\nint noise_cipherstate_get_max_key_length(void)\n{\n    return NOISE_MAX_KEY_LEN;\n}\n\n/**\n * \\brief Gets the maximum MAC length for the supported algorithms.\n *\n * \\sa noise_cipherstate_get_max_key_length()\n */\nint noise_cipherstate_get_max_mac_length(void)\n{\n    return NOISE_MAX_MAC_LEN;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/dhstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <string.h>\n\n/**\n * \\file dhstate.h\n * \\brief DHState interface\n */\n\n/**\n * \\file dhstate.c\n * \\brief DHState implementation\n */\n\n/**\n * \\defgroup dhstate DHState API\n *\n * DHState objects are used to store the keypairs for the local party or\n * the public keys for remote parties.  Once the keys have been set,\n * noise_dhstate_calculate() can be used to perform a Diffie-Hellman\n * operation with two DHState objects.\n */\n/**@{*/\n\n/**\n * \\typedef NoiseDHState\n * \\brief Opaque object that represents a DHState.\n */\n\n/**\n * \\brief Creates a new DHState object by its algorithm identifier.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new DHState object.\n * \\param id The algorithm identifier; NOISE_DH_CURVE25519,\n * NOISE_DH_CURVE448, etc.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_UNKNOWN_ID if \\a id is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new DHState object.\n *\n * \\sa noise_dhstate_free(), noise_dhstate_new_by_name()\n */\nint noise_dhstate_new_by_id(NoiseDHState **state, int id)\n{\n    /* The \"state\" argument must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Create the DHState object for the \"id\" */\n    *state = 0;\n    switch (id) {\n    case NOISE_DH_CURVE25519:\n        *state = noise_curve25519_new();\n        break;\n\n    case NOISE_DH_CURVE448:\n        *state = noise_curve448_new();\n        break;\n\n    case NOISE_DH_NEWHOPE:\n        *state = noise_newhope_new();\n        break;\n\n    default:\n        return NOISE_ERROR_UNKNOWN_ID;\n    }\n\n    /* Bail out if insufficient memory */\n    if (!(*state))\n        return NOISE_ERROR_NO_MEMORY;\n\n    /* Ready to go */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Creates a new DHState object by its algorithm name.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new DHState object.\n * \\param name The name of the Diffie-Hellman algorithm; e.g. \"25519\".\n * This string must be NUL-terminated.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a name is NULL.\n * \\return NOISE_ERROR_UNKNOWN_NAME if \\a name is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new DHState object.\n *\n * \\sa noise_dhstate_free(), noise_dhstate_new_by_id()\n */\nint noise_dhstate_new_by_name(NoiseDHState **state, const char *name)\n{\n    int id;\n\n    /* The \"state\" and \"name\" arguments must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!name)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Map the name and create the corresponding object */\n    id = noise_name_to_id(NOISE_DH_CATEGORY, name, strlen(name));\n    if (id)\n        return noise_dhstate_new_by_id(state, id);\n\n    /* We don't know what this is */\n    return NOISE_ERROR_UNKNOWN_NAME;\n}\n\n/**\n * \\brief Frees a DHState object after destroying all sensitive material.\n *\n * \\param state The DHState object to free.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_dhstate_new_by_id(), noise_dhstate_new_by_name()\n */\nint noise_dhstate_free(NoiseDHState *state)\n{\n    /* Bail out if no DH state */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Call the backend-specific destroy function if necessary */\n    if (state->destroy)\n        (*(state->destroy))(state);\n\n    /* Clean and free the memory */\n    noise_free(state, state->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the algorithm identifier for a DHState object.\n *\n * \\param state The DHState object.\n *\n * \\return The algorithm identifier, or NOISE_DH_NONE if \\a state is NULL.\n */\nint noise_dhstate_get_dh_id(const NoiseDHState *state)\n{\n    return state ? state->dh_id : NOISE_DH_NONE;\n}\n\n/**\n * \\brief Gets the length of the public key for a DHState object.\n *\n * \\param state The DHState object.\n *\n * \\return The size of the public key in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_dhstate_get_private_key_length(),\n * noise_dhstate_get_shared_key_length()\n */\nsize_t noise_dhstate_get_public_key_length(const NoiseDHState *state)\n{\n    return state ? state->public_key_len : 0;\n}\n\n/**\n * \\brief Gets the length of the private key for a DHState object.\n *\n * \\param state The DHState object.\n *\n * \\return The size of the private key in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_dhstate_get_public_key_length(),\n * noise_dhstate_get_shared_key_length()\n */\nsize_t noise_dhstate_get_private_key_length(const NoiseDHState *state)\n{\n    return state ? state->private_key_len : 0;\n}\n\n/**\n * \\brief Gets the length of the shared key for a DHState object.\n *\n * \\param state The DHState object.\n *\n * \\return The size of the shared key in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_dhstate_get_public_key_length(),\n * noise_dhstate_get_private_key_length()\n */\nsize_t noise_dhstate_get_shared_key_length(const NoiseDHState *state)\n{\n    return state ? state->shared_key_len : 0;\n}\n\n/**\n * \\brief Determine if a DHState object only supports ephemeral keys.\n *\n * \\param state The DHState object.\n *\n * \\return Non-zero if the DHState object only supports ephemeral keys,\n * or zero if the DHState object supports both static and ephemeral keys.\n *\n * Some algorithms like \"NewHope\" can only be used to generate\n * ephemeral keys during a session and have no support for long-term\n * static keys.\n */\nint noise_dhstate_is_ephemeral_only(const NoiseDHState *state)\n{\n    return state ? state->ephemeral_only : 0;\n}\n\n/**\n * \\brief Determine if a DHState object contains a keypair.\n *\n * \\param state The DHState object.\n *\n * \\return Returns 1 if \\a state contains both a private key and a\n * public key.  Returns 0 if \\a state is NULL or it only contains a\n * public key.\n *\n * \\sa noise_dhstate_set_keypair(), noise_dhstate_has_public_key(),\n * noise_dhstate_clear_key()\n */\nint noise_dhstate_has_keypair(const NoiseDHState *state)\n{\n    if (state)\n        return state->key_type == NOISE_KEY_TYPE_KEYPAIR;\n    else\n        return 0;\n}\n\n/**\n * \\brief Determine if a DHState object contains a public key.\n *\n * \\param state The DHState object.\n *\n * \\return Returns 1 if \\a state contains a public key (and optionally a\n * private key).  Returns 0 if \\a state is NULL or it does not contain a\n * public key.\n *\n * \\sa noise_dhstate_set_keypair(), noise_dhstate_has_public_key(),\n * noise_dhstate_clear_key()\n */\nint noise_dhstate_has_public_key(const NoiseDHState *state)\n{\n    if (state)\n        return state->key_type != NOISE_KEY_TYPE_NO_KEY;\n    else\n        return 0;\n}\n\n/**\n * \\brief Generates a new key pair within a DHState object.\n *\n * \\param state The DHState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\note This function needs to generate random key material for the\n * private key, so the system random number generator must be properly\n * seeded before calling this function.\n *\n * \\sa noise_dhstate_calculate(), noise_dhstate_set_keypair()\n */\nint noise_dhstate_generate_keypair(NoiseDHState *state)\n{\n    int err;\n\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Generate the new keypair */\n    err = (*(state->generate_keypair))(state, 0);\n    if (err == NOISE_ERROR_NONE)\n        state->key_type = NOISE_KEY_TYPE_KEYPAIR;\n    return err;\n}\n\n/**\n * \\brief Generates a new key pair within a DHState object that may depend\n * upon the parameters from another DHState object.\n *\n * \\param state The DHState object.\n * \\param other The other DHState object to obtain parameters from,\n * which may be NULL.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state and \\a other\n * do not have the same algorithm identifier.\n * \\return NOISE_ERROR_INVALID_STATE if dependent parameters are required\n * but \\a other does not currently contain any.\n *\n * This function is intended for generating ephemeral keypairs for\n * algorithms like New Hope where the keypair for Bob depends upon\n * parameters that are transmitted in Alice's public key.  If the\n * algorithm does not require dependent parameters to generate the\n * keypair, \\a other is ignored.\n *\n * \\note This function needs to generate random key material for the\n * private key, so the system random number generator must be properly\n * seeded before calling this function.\n *\n * \\sa noise_dhstate_calculate(), noise_dhstate_set_keypair()\n */\nint noise_dhstate_generate_dependent_keypair\n    (NoiseDHState *state, const NoiseDHState *other)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (other && state->dh_id != other->dh_id)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Generate the new keypair */\n    err = (*(state->generate_keypair))(state, other);\n    if (err == NOISE_ERROR_NONE)\n        state->key_type = NOISE_KEY_TYPE_KEYPAIR;\n    return err;\n}\n\n/**\n * \\brief Sets the keypair within a DHState object.\n *\n * \\param state The DHState object.\n * \\param private_key Points to the private key.\n * \\param private_key_len The private key length in bytes.\n * \\param public_key Points to the public key.\n * \\param public_key_len The public key length in bytes.\n *\n * \\return NOISE_ERROR on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state, \\a private_key, or\n * \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if either \\a private_key_len or\n * \\a public_key_len is incorrect for the algorithm.\n * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if \\a private_key is not valid.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a public_key is not valid.\n *\n * The algorithm may decide to defer NOISE_ERROR_INVALID_PRIVATE_KEY or\n * NOISE_ERROR_INVALID_PUBLIC_KEY to later when the keypair is actually\n * used during noise_dhstate_calculate().\n *\n * \\sa noise_dhstate_get_keypair(), noise_dhstate_set_public_key(),\n * noise_dhstate_set_keypair_private()\n */\nint noise_dhstate_set_keypair\n    (NoiseDHState *state, const uint8_t *private_key, size_t private_key_len,\n     const uint8_t *public_key, size_t public_key_len)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !private_key || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (private_key_len != state->private_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Set the keypair */\n    err = (*(state->set_keypair))(state, private_key, public_key);\n    if (err != NOISE_ERROR_NONE) {\n        noise_dhstate_clear_key(state);\n        return err;\n    }\n    state->key_type = NOISE_KEY_TYPE_KEYPAIR;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Sets the keypair within a DHState object based on a private key only.\n *\n * \\param state The DHState object.\n * \\param private_key Points to the private key.\n * \\param private_key_len The private key length in bytes.\n *\n * \\return NOISE_ERROR on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a private_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if either \\a private_key_len is\n * incorrect for the algorithm.\n * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if \\a private_key is not valid.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a public_key that is derived\n * from the \\a private_key is not valid.\n *\n * The algorithm may decide to defer NOISE_ERROR_INVALID_PRIVATE_KEY or\n * NOISE_ERROR_INVALID_PUBLIC_KEY to later when the keypair is actually\n * used during noise_dhstate_calculate().\n *\n * This function only takes the private key as an argument.  The public\n * key in the keypair is derived from the private key.\n *\n * \\sa noise_dhstate_get_keypair(), noise_dhstate_set_public_key(),\n * noise_dhstate_set_keypair()\n */\nint noise_dhstate_set_keypair_private\n    (NoiseDHState *state, const uint8_t *private_key, size_t private_key_len)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !private_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (private_key_len != state->private_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Set the private key and derive the public key from the private key */\n    err = (*(state->set_keypair_private))(state, private_key);\n    if (err != NOISE_ERROR_NONE) {\n        noise_dhstate_clear_key(state);\n        return err;\n    }\n    state->key_type = NOISE_KEY_TYPE_KEYPAIR;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the keypair from within a DHState object.\n *\n * \\param state The DHState object.\n * \\param private_key Points to the buffer to receive the private key.\n * \\param private_key_len The private key buffer length in bytes.\n * \\param public_key Points to the buffer to receive the public key.\n * \\param public_key_len The public key buffer length in bytes.\n *\n * \\return NOISE_ERROR on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state, \\a private_key, or\n * \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if either \\a private_key_len or\n * \\a public_key_len is incorrect for the algorithm.\n * \\return NOISE_ERROR_INVALID_STATE if \\a state does not contain a keypair.\n *\n * \\sa noise_dhstate_set_keypair(), noise_dhstate_get_public_key()\n */\nint noise_dhstate_get_keypair\n    (const NoiseDHState *state, uint8_t *private_key, size_t private_key_len,\n     uint8_t *public_key, size_t public_key_len)\n{\n    /* Validate the parameters */\n    if (!state || !private_key || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (private_key_len != state->private_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Is this actually a keypair? */\n    if (state->key_type != NOISE_KEY_TYPE_KEYPAIR) {\n        memset(private_key, 0, private_key_len);\n        memset(public_key, 0, public_key_len);\n        return NOISE_ERROR_INVALID_STATE;\n    }\n\n    /* Copy the keypair out */\n    memcpy(private_key, state->private_key, private_key_len);\n    memcpy(public_key, state->public_key, public_key_len);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Sets the public key in a DHState object.\n *\n * \\param state The DHState object.\n * \\param public_key Points to the public key.\n * \\param public_key_len The public key length in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a public_key_len is incorrect\n * for the algorithm.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a public_key is not valid\n * and it is not the special null value.\n *\n * After this function succeeds, the DHState will only contain a public key.\n * Any existing private key will be cleared.  Thus, this function is useful\n * to set the public key of a remote party.  Use noise_dhstate_set_keypair()\n * to set both the public and private key for the local party.\n *\n * The algorithm may decide to defer NOISE_ERROR_INVALID_PUBLIC_KEY to\n * later when the public key is actually used during noise_dhstate_calculate().\n *\n * \\sa noise_dhstate_get_public_key(), noise_dhstate_set_keypair()\n */\nint noise_dhstate_set_public_key\n    (NoiseDHState *state, const uint8_t *public_key, size_t public_key_len)\n{\n    int is_null, err;\n\n    /* Validate the parameters */\n    if (!state || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Validate the public key with the back end and then ignore the\n       result if the public key is the special null value */\n    is_null = state->nulls_allowed & noise_is_zero(public_key, public_key_len);\n    err = (*(state->validate_public_key))(state, public_key);\n    err &= (is_null - 1);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Copy the public key into place and clear the private key */\n    memset(state->private_key, 0, state->private_key_len);\n    memcpy(state->public_key, public_key, public_key_len);\n    state->key_type = NOISE_KEY_TYPE_PUBLIC;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the public key value from a DHState object.\n *\n * \\param state The DHState object.\n * \\param public_key The buffer to receive the public key value.\n * \\param public_key_len The public key length in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a public_key_len is incorrect\n * for this algorithm.\n *\n * \\sa noise_dhstate_set_public_key(), noise_dhstate_get_public_key_length()\n */\nint noise_dhstate_get_public_key\n    (const NoiseDHState *state, uint8_t *public_key, size_t public_key_len)\n{\n    /* Validate the parameters */\n    if (!state || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Copy the public key out */\n    memcpy(public_key, state->public_key, public_key_len);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Sets the public key in a DHState object to the special null value.\n *\n * \\param state The DHState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state does not support null\n * public keys.\n *\n * \\sa noise_dhstate_is_null_public_key()\n */\nint noise_dhstate_set_null_public_key(NoiseDHState *state)\n{\n    /* Validate the parameter */\n    if (!state || !state->nulls_allowed)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Clear the key to all-zeroes */\n    memset(state->public_key, 0, state->public_key_len);\n    memset(state->private_key, 0, state->private_key_len);\n\n    /* We have a public key but no private key */\n    state->key_type = NOISE_KEY_TYPE_PUBLIC;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Determine if the public key in a DHState object has the\n * special null value.\n *\n * \\param state The DHState object.\n *\n * \\return Returns non-zero if the public key within \\a state is the\n * special null value; zero otherwise.\n *\n * \\sa noise_dhstate_set_null_public_key()\n */\nint noise_dhstate_is_null_public_key(const NoiseDHState *state)\n{\n    if (state && state->key_type != NOISE_KEY_TYPE_NO_KEY) {\n        return state->nulls_allowed &&\n               noise_is_zero(state->public_key, state->public_key_len);\n    } else {\n        return 0;\n    }\n}\n\n/**\n * \\brief Clears the key in a DHState object.\n *\n * \\param state The DHState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_dhstate_has_keypair(), noise_dhstate_has_public_key()\n */\nint noise_dhstate_clear_key(NoiseDHState *state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Clear the key to all-zeroes */\n    memset(state->public_key, 0, state->public_key_len);\n    memset(state->private_key, 0, state->private_key_len);\n\n    /* There is no key in the object now */\n    state->key_type = NOISE_KEY_TYPE_NO_KEY;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Conditional move of zero into a buffer in constant time.\n *\n * \\param data The data buffer to fill with zeroes if the condition is true.\n * \\param len The length of the \\a data buffer in bytes.\n * \\param condition Condition that is 1 to move zero into \\a data, or\n * zero to leave the contents of \\a data as-is.\n */\nstatic void noise_cmove_zero(uint8_t *data, size_t len, int condition)\n{\n    /* Turn the condition into an all-zeroes or all-ones mask.\n       If the condition is set, then we want all-zeroes in the mask.\n       If the condition is not set, then we want all-ones in the mask. */\n    uint8_t mask = ~((uint8_t)(-condition));\n\n    /* AND the contents of the data buffer with the mask */\n    while (len > 0) {\n        *data++ &= mask;\n        --len;\n    }\n}\n\n/**\n * \\brief Performs a Diffie-Hellman calculation.\n *\n * \\param private_key_state Points to the DHState containing the private key.\n * \\param public_key_state Points to the DHState containing the public key.\n * \\param shared_key Points to the shared key on exit.\n * \\param shared_key_len The length of the \\a shared_key buffer in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a private_key_state,\n * \\a public_key_state, or \\a shared_key is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a private_key_state and\n * \\a public_key_state do not have the same algorithm identifier.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a shared_key_len is not\n * correct for the algorithm.\n * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if \\a private_key_state does not\n * contain a private key or the private key is invalid.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if the public key in\n * \\a public_key_state is invalid.\n *\n * If the input public key is the special null value, then the output\n * \\a shared_key will also be the null value and NOISE_ERROR_NONE\n * will be returned.\n *\n * \\sa noise_dhstate_generate_keypair()\n */\nint noise_dhstate_calculate\n    (const NoiseDHState *private_key_state,\n     const NoiseDHState *public_key_state,\n     uint8_t *shared_key, size_t shared_key_len)\n{\n    int is_null, err;\n\n    /* Validate the parameters */\n    if (!private_key_state || !public_key_state || !shared_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (private_key_state->dh_id != public_key_state->dh_id)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (shared_key_len != private_key_state->shared_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (private_key_state->key_type != NOISE_KEY_TYPE_KEYPAIR)\n        return NOISE_ERROR_INVALID_PRIVATE_KEY;\n\n    /* If the public key is null, then the output must be null too.\n       We check for null now, but still perform the normal evaluation.\n       At the end we will null out the result in constant time */\n    is_null = public_key_state->nulls_allowed & noise_is_zero\n        (public_key_state->public_key, public_key_state->public_key_len);\n\n    /* Perform the calculation */\n    err = (*(private_key_state->calculate))\n        (private_key_state, public_key_state, shared_key);\n\n    /* If the public key was null, then we need to set the shared key\n       to null and replace any error we got from the back end with \"none\" */\n    noise_cmove_zero(shared_key, shared_key_len, is_null);\n    err &= (is_null - 1);\n    return err;\n}\n\n/**\n * \\brief Copies the keys from one DHState object to another.\n *\n * \\param state The DHState to copy into.\n * \\param from The DHState to copy from.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a from is NULL.\n * \\return NOISE_ERROR_NOT_APPLICABLE if \\a from does not have the same\n * key type identifier as \\a state.\n */\nint noise_dhstate_copy(NoiseDHState *state, const NoiseDHState *from)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !from)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->dh_id != from->dh_id)\n        return NOISE_ERROR_NOT_APPLICABLE;\n    if (state == from)\n        return NOISE_ERROR_NONE;\n\n    /* Copy the key information across */\n    err = (*(state->copy))(state, from, 0);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    state->key_type = from->key_type;\n    return err;\n}\n\n/**\n * \\brief Formats the public key fingerprint for the key within a DHState.\n *\n * \\param state The DHState object.\n * \\param fingerprint_type The type of fingerprint to format,\n * NOISE_FINGERPRINT_BASIC or NOISE_FINGERPRINT_FULL.\n * \\param buffer The buffer to write the fingerprint string to, including a\n * terminating NUL.\n * \\param len The length of \\a buffer in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a fingerprint_type is not a\n * supported fingerprint type.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a len is not large enough to\n * hold the entire fingerprint string.\n * \\return NOISE_ERROR_INVALID_STATE if a public key has not been set\n * on \\a state yet.\n *\n * Fingerprints are created by hashing the public key with SHA256 and\n * then formatting the value in hexadecimal with bytes separated by colons.\n * If the \\a fingerprint_type is NOISE_FINGERPRINT_BASIC, then the SHA256\n * hash value is truncated to the first 16 bytes.  If the type is\n * NOISE_FINGERPRINT_FULL, then the entire 32 byte hash value is formatted.\n */\nint noise_dhstate_format_fingerprint\n    (const NoiseDHState *state, int fingerprint_type, char *buffer, size_t len)\n{\n    /* Validate the parameters */\n    if (!buffer)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    *buffer = '\\0'; /* In case we bail out with an error later */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->key_type == NOISE_KEY_TYPE_NO_KEY)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Format the fingerprint */\n    return noise_format_fingerprint\n        (fingerprint_type, buffer, len,\n         state->public_key, state->public_key_len);\n}\n\n/**\n * \\brief Gets the role that a DHState object will play in a handshake.\n *\n * \\param state The DHState object.\n *\n * \\return The role, NOISE_ROLE_INITIATOR or NOISE_ROLE_RESPONDER, or zero\n * if the role has not been set yet.\n *\n * \\sa noise_dhstate_set_role()\n */\nint noise_dhstate_get_role(const NoiseDHState *state)\n{\n    return state ? state->role : 0;\n}\n\n/**\n * \\brief Sets the role that a DHState object will play in a handshake.\n *\n * \\param state The DHState object.\n * \\param role The role, NOISE_ROLE_INITIATOR or NOISE_ROLE_RESPONDER, or zero\n * if the role is unspecified.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a role is not one of\n * NOISE_ROLE_INITIATOR, NOISE_ROLE_RESPONDER, or zero.\n *\n * This function is intended for use with algorithms that have a different\n * method for calculating public keys and shared secrets for the two parties\n * in a communication.  An example is the post-quantum SIDH algorithm where\n * \"Alice\" and \"Bob\" differ in the calculations they perform.\n *\n * To assist with supporting such algorithms, the HandshakeState labels\n * DHState objects as either initiator or responder depending upon who\n * owns that specific key.  The algorithm-specific back end can then use\n * the role information to determine which object it wants to treat as\n * \"Alice\" and which object should be treated as \"Bob\".\n *\n * \\sa noise_dhstate_get_role()\n */\nint noise_dhstate_set_role(NoiseDHState *state, int role)\n{\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (role != NOISE_ROLE_INITIATOR && role != NOISE_ROLE_RESPONDER && role)\n        return NOISE_ERROR_INVALID_PARAM;\n    state->role = role;\n    if (state->change_role)\n        (*(state->change_role))(state);\n    return NOISE_ERROR_NONE;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/errors.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <stdio.h>\n#include <string.h>\n\n/**\n * \\file errors.h\n * \\brief Error reporting interface\n */\n\n/**\n * \\file errors.c\n * \\brief Error reporting implementation\n */\n\n/**\n * \\defgroup error_reports Error reporting\n */\n/**@{*/\n\n/** @cond */\n\n/* Default English strings for all known error codes */\nstatic const char * const error_strings[] = {\n    \"No error\",\n    \"Out of memory\",\n    \"Unknown identifier\",\n    \"Unknown name\",\n    \"MAC failure\",\n    \"Not applicable\",\n    \"System error\",\n    \"Remote public key required\",\n    \"Local keypair required\",\n    \"Pre shared key required\",\n    \"Invalid length\",\n    \"Invalid parameter\",\n    \"Invalid state\",\n    \"Invalid nonce\",\n    \"Invalid private key\",\n    \"Invalid public key\",\n    \"Invalid format\",\n    \"Invalid signature\",\n    \"END\"\n};\n#define num_error_strings (sizeof(error_strings) / sizeof(error_strings[0]) - 1)\n\n/** @endcond */\n\n/**\n * \\brief Gets the string for an error code from the internal table.\n *\n * \\param err The error code.\n * \\return A pointer to the string, or NULL if there is no string for \\a err.\n */\nstatic const char *noise_errstr(int err)\n{\n    if (err == NOISE_ERROR_NONE)\n        return error_strings[0];\n    if (err < NOISE_ID('E', 1) || err >= NOISE_ID('E', num_error_strings))\n        return 0;\n    return error_strings[err - NOISE_ID('E', 0)];\n}\n\n/**\n * \\brief Prints a descriptive string for an error to stderr.\n *\n * \\param s The extra string to display, which defines the context in which\n * the error occurred.\n * \\param err The error code.\n */\nvoid noise_perror(const char *s, int err)\n{\n    const char *errstr = noise_errstr(err);\n    if (!s)\n        s = \"(null)\";\n    if (errstr)\n        fprintf(stderr, \"%s: %s\\n\", s, errstr);\n    else\n        fprintf(stderr, \"%s: Unknown error 0x%x\\n\", s, err);\n}\n\n/**\n * \\brief Gets the descriptive string for an error code.\n *\n * \\param err The error code.\n * \\param buf The buffer to write the descriptive string to.\n * \\param size The size of the buffer.\n *\n * \\return Returns zero if the error string was returned or -1 if\n * \\a buf is NULL or \\a size is zero.\n *\n * The string may be truncated if \\a size is not large enough.\n * This function guarantees to NUL-terminate the returned string.\n */\nint noise_strerror(int err, char *buf, size_t size)\n{\n    const char *errstr = noise_errstr(err);\n    if (!buf || !size)\n        return -1;\n    if (errstr)\n        strncpy(buf, errstr, size);\n    else\n        snprintf(buf, size, \"Unknown error 0x%x\", err);\n    buf[size - 1] = '\\0';\n    return 0;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/handshakestate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <string.h>\n#include <stdlib.h>\n\n/**\n * \\file handshakestate.h\n * \\brief HandshakeState interface\n */\n\n/**\n * \\file handshakestate.c\n * \\brief HandshakeState implementation\n */\n\n/**\n * \\defgroup handshakestate HandshakeState API\n *\n * See the \\ref example_echo \"echo example\" for an overview of how\n * to use this API.\n */\n/**@{*/\n\n/**\n * \\typedef NoiseHandshakeState\n * \\brief Opaque object that represents a HandshakeState.\n */\n\n/**\n * \\brief Gets the initial requirements for a handshake pattern.\n *\n * \\param flags The flags from the handshake pattern.\n * \\param prefix_id The prefix identifier from the protocol name.\n * \\param role The role, either initiator or responder.\n * \\param is_fallback Non-zero if we are processing a fallback pattern.\n *\n * \\return The key requirements for the handshake pattern.\n */\nstatic int noise_handshakestate_requirements\n    (NoisePatternFlags_t flags, int prefix_id, int role, int is_fallback)\n{\n    int requirements = 0;\n    if (flags & NOISE_PAT_FLAG_LOCAL_STATIC) {\n        requirements |= NOISE_REQ_LOCAL_REQUIRED;\n    }\n    if (flags & NOISE_PAT_FLAG_LOCAL_REQUIRED) {\n        requirements |= NOISE_REQ_LOCAL_REQUIRED;\n        requirements |= NOISE_REQ_LOCAL_PREMSG;\n    }\n    if (flags & NOISE_PAT_FLAG_REMOTE_REQUIRED) {\n        requirements |= NOISE_REQ_REMOTE_REQUIRED;\n        requirements |= NOISE_REQ_REMOTE_PREMSG;\n    }\n    if (flags & (NOISE_PAT_FLAG_REMOTE_EPHEM_REQ |\n                 NOISE_PAT_FLAG_LOCAL_EPHEM_REQ)) {\n        if (is_fallback)\n            requirements |= NOISE_REQ_FALLBACK_PREMSG;\n    }\n    if (prefix_id == NOISE_PREFIX_PSK) {\n        requirements |= NOISE_REQ_PSK;\n    }\n    return requirements;\n}\n\n/**\n * \\brief Creates a new HandshakeState object.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new HandshakeState object.\n * \\param symmetric The pre-allocated SymmetricState, which contains\n * the protocol identifier.\n * \\param role The role for the new object, either NOISE_ROLE_INITIATOR or\n * NOISE_ROLE_RESPONDER.\n *\n * \\return NOISE_ERROR_NONE on success, or some other error code on failure.\n * The \\a symmetric object must be destroyed by this function if it fails.\n *\n * This is the internal implementation of noise_handshakestate_new_by_id()\n * and noise_handshakestate_new_by_name().\n */\nstatic int noise_handshakestate_new\n    (NoiseHandshakeState **state, NoiseSymmetricState *symmetric, int role)\n{\n    const uint8_t *pattern;\n    int dh_id;\n    int hybrid_id;\n    NoisePatternFlags_t flags;\n    int extra_reqs = 0;\n    int err;\n    int local_dh_role;\n    int remote_dh_role;\n\n    /* Locate the information for the current handshake pattern */\n    pattern = noise_pattern_lookup(symmetric->id.pattern_id);\n    if (!pattern) {\n        noise_symmetricstate_free(symmetric);\n        return NOISE_ERROR_UNKNOWN_ID;\n    }\n    flags = ((NoisePatternFlags_t)(pattern[0])) |\n           (((NoisePatternFlags_t)(pattern[1])) << 8);\n    if ((flags & NOISE_PAT_FLAG_REMOTE_REQUIRED) != 0)\n        extra_reqs |= NOISE_REQ_FALLBACK_POSSIBLE;\n    if (role == NOISE_ROLE_RESPONDER) {\n        /* Reverse the pattern flags so that the responder is \"local\" */\n        flags = noise_pattern_reverse_flags(flags);\n    }\n\n    /* Determine the role to use for DHState objects */\n    if ((flags & NOISE_PAT_FLAG_REMOTE_EPHEM_REQ) != 0) {\n        /* Fallback pattern - reverse the DHState role */\n        if (role == NOISE_ROLE_INITIATOR) {\n            local_dh_role = NOISE_ROLE_RESPONDER;\n            remote_dh_role = NOISE_ROLE_INITIATOR;\n        } else {\n            local_dh_role = NOISE_ROLE_INITIATOR;\n            remote_dh_role = NOISE_ROLE_RESPONDER;\n        }\n    } else {\n        /* Regular pattern */\n        if (role == NOISE_ROLE_INITIATOR) {\n            local_dh_role = NOISE_ROLE_INITIATOR;\n            remote_dh_role = NOISE_ROLE_RESPONDER;\n        } else {\n            local_dh_role = NOISE_ROLE_RESPONDER;\n            remote_dh_role = NOISE_ROLE_INITIATOR;\n        }\n    }\n\n    /* Create the HandshakeState object */\n    *state = noise_new(NoiseHandshakeState);\n    if (!(*state)) {\n        noise_symmetricstate_free(symmetric);\n        return NOISE_ERROR_NO_MEMORY;\n    }\n\n    /* Initialize the HandshakeState */\n    (*state)->requirements = extra_reqs | noise_handshakestate_requirements\n        (flags, symmetric->id.prefix_id, role, 0);\n    (*state)->action = NOISE_ACTION_NONE;\n    (*state)->tokens = pattern + 2;\n    (*state)->role = role;\n    (*state)->symmetric = symmetric;\n\n    /* Create DHState objects for all of the keys we will need later */\n    err = NOISE_ERROR_NONE;\n    dh_id = symmetric->id.dh_id;\n    hybrid_id = symmetric->id.hybrid_id;\n    if ((flags & NOISE_PAT_FLAG_LOCAL_STATIC) != 0) {\n        err = noise_dhstate_new_by_id(&((*state)->dh_local_static), dh_id);\n    }\n    if ((flags & NOISE_PAT_FLAG_LOCAL_EPHEMERAL) != 0 && err == NOISE_ERROR_NONE) {\n        err = noise_dhstate_new_by_id(&((*state)->dh_local_ephemeral), dh_id);\n    }\n    if ((flags & NOISE_PAT_FLAG_LOCAL_HYBRID) != 0 && err == NOISE_ERROR_NONE) {\n        if (hybrid_id != NOISE_DH_NONE)\n            err = noise_dhstate_new_by_id(&((*state)->dh_local_hybrid), hybrid_id);\n        else\n            err = NOISE_ERROR_NOT_APPLICABLE;\n    } else if (hybrid_id != NOISE_DH_NONE) {\n        err = NOISE_ERROR_NOT_APPLICABLE;\n    }\n    if ((flags & NOISE_PAT_FLAG_REMOTE_STATIC) != 0 && err == NOISE_ERROR_NONE) {\n        err = noise_dhstate_new_by_id(&((*state)->dh_remote_static), dh_id);\n    }\n    if ((flags & NOISE_PAT_FLAG_REMOTE_EPHEMERAL) != 0 && err == NOISE_ERROR_NONE) {\n        err = noise_dhstate_new_by_id(&((*state)->dh_remote_ephemeral), dh_id);\n    }\n    if ((flags & NOISE_PAT_FLAG_REMOTE_HYBRID) != 0 && err == NOISE_ERROR_NONE) {\n        if (hybrid_id != NOISE_DH_NONE)\n            err = noise_dhstate_new_by_id(&((*state)->dh_remote_hybrid), hybrid_id);\n        else\n            err = NOISE_ERROR_NOT_APPLICABLE;\n    } else if (hybrid_id != NOISE_DH_NONE) {\n        err = NOISE_ERROR_NOT_APPLICABLE;\n    }\n\n    /* Set the roles for all DHState objects except those for hybrid\n       forward secrecy.  Those roles are implicit in whether the \"f\"\n       or \"g\" token is used to refer to the value */\n    noise_dhstate_set_role((*state)->dh_local_ephemeral, local_dh_role);\n    noise_dhstate_set_role((*state)->dh_local_static, local_dh_role);\n    noise_dhstate_set_role((*state)->dh_remote_ephemeral, remote_dh_role);\n    noise_dhstate_set_role((*state)->dh_remote_static, remote_dh_role);\n\n    /* If the DH algorithm is ephemeral-only, then we need to apply some\n     * extra checks on the pattern: essentially, only \"NN\" is possible.\n     * This check isn't needed for the hybrid secrecy DH objects as they\n     * are by definition ephemeral-only */\n    if (err == NOISE_ERROR_NONE) {\n        if ((*state)->dh_local_static && (*state)->dh_local_static->ephemeral_only)\n            err = NOISE_ERROR_NOT_APPLICABLE;\n        if ((*state)->dh_remote_static && (*state)->dh_remote_static->ephemeral_only)\n            err = NOISE_ERROR_NOT_APPLICABLE;\n        if ((*state)->dh_local_ephemeral && (*state)->dh_local_ephemeral->ephemeral_only) {\n            if (!((*state)->dh_remote_ephemeral))\n                err = NOISE_ERROR_NOT_APPLICABLE;\n        } else if ((*state)->dh_remote_ephemeral && (*state)->dh_remote_ephemeral->ephemeral_only) {\n            err = NOISE_ERROR_NOT_APPLICABLE;\n        }\n    }\n\n    /* Bail out if we had an error trying to create the DHState objects */\n    if (err != NOISE_ERROR_NONE) {\n        noise_handshakestate_free(*state);\n        return err;\n    }\n\n    /* Ready to go */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Creates a new HandshakeState object by protocol identifier.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new HandshakeState object.\n * \\param protocol_id The protocol identifier as a set of algorithm identifiers.\n * \\param role The role for the new object, either NOISE_ROLE_INITIATOR or\n * NOISE_ROLE_RESPONDER.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if either \\a state or \\a protocol_id\n * is NULL, or \\a role is not one of NOISE_ROLE_INITIATOR or\n * NOISE_ROLE_RESPONDER.\n * \\return NOISE_ERROR_UNKNOWN_ID if the \\a protocol_id is unknown.\n * \\return NOISE_ERROR_INVALID_LENGTH if the full name corresponding to\n * \\a protocol_id is too long.\n * \\return NOISE_ERROR_NOT_APPLICABLE if the combination of algorithm\n * identifiers in \\a protocol_id is not permitted.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new HandshakeState object.\n *\n * \\sa noise_handshakestate_free(), noise_handshakestate_new_by_name()\n */\nint noise_handshakestate_new_by_id\n    (NoiseHandshakeState **state, const NoiseProtocolId *protocol_id, int role)\n{\n    NoiseSymmetricState *symmetric;\n    int err;\n\n    /* Validate the parameters */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!protocol_id)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (role != NOISE_ROLE_INITIATOR && role != NOISE_ROLE_RESPONDER)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Create the SymmetricState object */\n    err = noise_symmetricstate_new_by_id(&symmetric, protocol_id);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Create the HandshakeState object */\n    return noise_handshakestate_new(state, symmetric, role);\n}\n\n/**\n * \\brief Creates a new HandshakeState object by protocol name.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new HandshakeState object.\n * \\param protocol_name The name of the Noise protocol to use.  This string\n * must be NUL-terminated.\n * \\param role The role for the new object, either NOISE_ROLE_INITIATOR or\n * NOISE_ROLE_RESPONDER.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if either \\a state or \\a protocol_name\n * is NULL, or \\a role is not one of NOISE_ROLE_INITIATOR or\n * NOISE_ROLE_RESPONDER.\n * \\return NOISE_ERROR_UNKNOWN_NAME if the \\a protocol_name is unknown.\n * \\return NOISE_ERROR_NOT_APPLICABLE if the combination of algorithm\n * identifiers in \\a protocol_id is not permitted.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new HandshakeState object.\n *\n * \\sa noise_handshakestate_free(), noise_handshakestate_new_by_id()\n */\nint noise_handshakestate_new_by_name\n    (NoiseHandshakeState **state, const char *protocol_name, int role)\n{\n    NoiseSymmetricState *symmetric;\n    int err;\n\n    /* Validate the parameters */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!protocol_name)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (role != NOISE_ROLE_INITIATOR && role != NOISE_ROLE_RESPONDER)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Create the SymmetricState object */\n    err = noise_symmetricstate_new_by_name(&symmetric, protocol_name);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Create the HandshakeState object */\n    return noise_handshakestate_new(state, symmetric, role);\n}\n\n/**\n * \\brief Frees a HandshakeState object after destroying all sensitive material.\n *\n * \\param state The HandshakeState object to free.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_handshakestate_new_by_id(), noise_handshakestate_new_by_name()\n */\nint noise_handshakestate_free(NoiseHandshakeState *state)\n{\n    /* Bail out if no handshake state */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Free the sub objects that are hanging off the handshakestate */\n    if (state->symmetric)\n        noise_symmetricstate_free(state->symmetric);\n    if (state->dh_local_static)\n        noise_dhstate_free(state->dh_local_static);\n    if (state->dh_local_ephemeral)\n        noise_dhstate_free(state->dh_local_ephemeral);\n    if (state->dh_local_hybrid)\n        noise_dhstate_free(state->dh_local_hybrid);\n    if (state->dh_remote_static)\n        noise_dhstate_free(state->dh_remote_static);\n    if (state->dh_remote_ephemeral)\n        noise_dhstate_free(state->dh_remote_ephemeral);\n    if (state->dh_remote_hybrid)\n        noise_dhstate_free(state->dh_remote_hybrid);\n    if (state->dh_fixed_ephemeral)\n        noise_dhstate_free(state->dh_fixed_ephemeral);\n    if (state->dh_fixed_hybrid)\n        noise_dhstate_free(state->dh_fixed_hybrid);\n    noise_free(state->prologue, state->prologue_len);\n\n    /* Clean and free the memory for \"state\" */\n    noise_free(state, state->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the role that a HandshakeState object is playing.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns one of NOISE_ROLE_INITIATOR or NOISE_ROLE_RESPONDER\n * if \\a state is non-NULL, or zero if \\a state is NULL.\n */\nint noise_handshakestate_get_role(const NoiseHandshakeState *state)\n{\n    return state ? state->role : 0;\n}\n\n/**\n * \\brief Gets the protocol identifier associated with a HandshakeState object.\n *\n * \\param state The HandshakeState object.\n * \\param id Return buffer for the protocol identifier, which consists of\n * fields that identify the cipher algorithm, hash algorith, handshake\n * pattern, etc.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a id is NULL.\n */\nint noise_handshakestate_get_protocol_id\n    (const NoiseHandshakeState *state, NoiseProtocolId *id)\n{\n    /* Validate the parameters */\n    if (!state || !id)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Copy the protocol identifiers to the caller's buffer */\n    *id = state->symmetric->id;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the DHState object that contains the local static keypair.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns a pointer to the DHState object for the local static\n * keypair, or NULL if the handshake does not require a local static keypair.\n *\n * The application uses the returned object to set the static keypair for\n * the local end of the handshake if one is required.\n *\n * \\sa noise_handshakestate_get_remote_public_key_dh()\n */\nNoiseDHState *noise_handshakestate_get_local_keypair_dh\n    (const NoiseHandshakeState *state)\n{\n    return state ? state->dh_local_static : 0;\n}\n\n/**\n * \\brief Gets the DHState object that contains the remote static public key.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns a pointer to the DHState object for the remote static\n * public key, or NULL if the handshake does not require a remote public key.\n *\n * The application uses the returned object to set the public key for\n * the remote end of the handshake if the key must be provided prior to\n * the handshake.  The returned object can also be used to obtain the public\n * key value that was transmitted by the remote party during the handshake.\n *\n * \\sa noise_handshakestate_get_local_keypair_dh()\n */\nNoiseDHState *noise_handshakestate_get_remote_public_key_dh\n    (const NoiseHandshakeState *state)\n{\n    return state ? state->dh_remote_static : 0;\n}\n\n/**\n * \\brief Gets the DHState object that contains the local ephemeral keypair.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns a pointer to the DHState object for the local ephemeral\n * keypair, or NULL if the system is out of memory or \\a state is NULL.\n *\n * \\note This function is intended for testing only.  It can be used to\n * establish a fixed ephemeral key for test vectors.  This function should\n * not be used in real applications.\n *\n * \\sa noise_handshakestate_get_local_keypair_dh()\n */\nNoiseDHState *noise_handshakestate_get_fixed_ephemeral_dh\n    (NoiseHandshakeState *state)\n{\n    if (!state || !state->dh_local_ephemeral)\n        return 0;\n\n    if (!state->dh_fixed_ephemeral) {\n        if (noise_dhstate_new_by_id\n                (&(state->dh_fixed_ephemeral), state->symmetric->id.dh_id)\n              != NOISE_ERROR_NONE) {\n            return 0;\n        }\n        noise_dhstate_set_role\n            (state->dh_fixed_ephemeral,\n             noise_dhstate_get_role(state->dh_local_ephemeral));\n    }\n\n    return state->dh_fixed_ephemeral;\n}\n\n/**\n * \\brief Gets the DHState object that contains the local additional\n * hybrid secrecy keypair.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns a pointer to the DHState object for the local additional\n * hybrid secrecy keypair, or NULL if the system is out of memory,\n * \\a state is NULL, or \\a state does not support additional hybrid secrecy.\n *\n * \\note This function is intended for testing only.  It can be used to\n * establish a fixed hybrid secrecy key for test vectors.  This function\n * should not be used in real applications.\n *\n * \\sa noise_handshakestate_get_fixed_ephemeral_dh()\n */\nNoiseDHState *noise_handshakestate_get_fixed_hybrid_dh\n    (NoiseHandshakeState *state)\n{\n    if (!state || !state->dh_local_hybrid)\n        return 0;\n\n    if (!state->dh_fixed_hybrid) {\n        if (noise_dhstate_new_by_id\n                (&(state->dh_fixed_hybrid), state->symmetric->id.hybrid_id)\n              != NOISE_ERROR_NONE) {\n            return 0;\n        }\n\n        /* Normally hybrid keys do not get a role until the \"f\" or \"g\"\n           tokens are encountered.  However for fixed test vectors we\n           need to know the size of the private key ahead of time and\n           hence the role.  Predict the future hybrid role from the\n           current ephemeral role. */\n        noise_dhstate_set_role\n            (state->dh_fixed_hybrid,\n             noise_dhstate_get_role(state->dh_local_ephemeral));\n    }\n\n    return state->dh_fixed_hybrid;\n}\n\n/**\n * \\brief Determine if a HandshakeState object requires a pre shared key.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns 1 if \\a state requires a pre shared key, zero if the\n * pre shared key has already been supplied or it is not required.\n *\n * \\sa noise_handshakestate_set_pre_shared_key(),\n * noise_handshakestate_has_pre_shared_key()\n */\nint noise_handshakestate_needs_pre_shared_key(const NoiseHandshakeState *state)\n{\n    if (!state || state->pre_shared_key_len)\n        return 0;\n    else\n        return (state->requirements & NOISE_REQ_PSK) != 0;\n}\n\n/**\n * \\brief Determine if a HandshakeState object has already been configured\n * with a pre shared key.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns 1 if \\a state has a pre shared key, zero if not.\n *\n * \\sa noise_handshakestate_set_pre_shared_key(),\n * noise_handshakestate_needs_pre_shared_key()\n */\nint noise_handshakestate_has_pre_shared_key(const NoiseHandshakeState *state)\n{\n    if (!state)\n        return 0;\n    else\n        return state->pre_shared_key_len != 0;\n}\n\n/**\n * \\brief Sets the pre shared key for a HandshakeState.\n *\n * \\param state The HandshakeState object.\n * \\param key Points to the pre shared key.\n * \\param key_len The length of the \\a key in bytes.  This must be 32\n * to comply with the requirements from the Noise protocol specification.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a key_len is not 32.\n * \\return NOISE_ERROR_NOT_APPLICABLE if the protocol name does not\n * begin with \"NoisePSK\".\n * \\return NOISE_ERROR_INVALID_STATE if this function is called after\n * the protocol has already started.\n *\n * \\sa noise_handshakestate_start(), noise_handshakestate_set_prologue(),\n * noise_handshakestate_needs_pre_shared_key(),\n * noise_handshakestate_has_pre_shared_key()\n */\nint noise_handshakestate_set_pre_shared_key\n    (NoiseHandshakeState *state, const uint8_t *key, size_t key_len)\n{\n    /* Validate the parameters and state */\n    if (!state || !key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (key_len != NOISE_PSK_LEN)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (state->symmetric->id.prefix_id != NOISE_PREFIX_PSK)\n        return NOISE_ERROR_NOT_APPLICABLE;\n    if (state->action != NOISE_ACTION_NONE)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Record the pre-shared key for use in noise_handshakestate_start() */\n    memcpy(state->pre_shared_key, key, key_len);\n    state->pre_shared_key_len = key_len;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Sets the prologue for a HandshakeState.\n *\n * \\param state The HandshakeState object.\n * \\param prologue Points to the prologue value.\n * \\param prologue_len The length of the \\a prologue value in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a prologue is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if this function is called after\n * the protocol has already started.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * save the \\a prologue value.\n *\n * This function should be called immediately after\n * noise_handshakestate_new_by_id() or noise_handshakestate_new_by_name()\n * if there is a prologue for the session.  If the function is not called,\n * then the prologue will be assumed to be empty when the protocol starts.\n *\n * \\sa noise_handshakestate_start(), noise_handshakestate_set_pre_shared_key()\n */\nint noise_handshakestate_set_prologue\n    (NoiseHandshakeState *state, const void *prologue, size_t prologue_len)\n{\n    /* Validate the parameters */\n    if (!state || !prologue)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->action != NOISE_ACTION_NONE)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Make a copy of the prologue for later */\n    if (state->prologue && state->prologue_len == prologue_len) {\n        memcpy(state->prologue, prologue, prologue_len);\n    } else {\n        noise_free(state->prologue, state->prologue_len);\n        if (prologue_len) {\n            state->prologue = (uint8_t *)malloc(prologue_len);\n            if (!(state->prologue)) {\n                state->prologue_len = 0;\n                return NOISE_ERROR_NO_MEMORY;\n            }\n            memcpy(state->prologue, prologue, prologue_len);\n        } else {\n            state->prologue = 0;\n        }\n        state->prologue_len = prologue_len;\n    }\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Determine if a HandshakeState still needs to be configured\n * with a local keypair.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns 1 if the \\a state has not yet been configured with a\n * local keypair, or 0 if the keypair has been provided or is not required\n * at all.  Also returns zero if \\a state is NULL.\n *\n * The application configures the local keypair on the object returned by\n * noise_handshakestate_get_local_keypair_dh().\n *\n * \\sa noise_handshakestate_has_local_keypair(),\n * noise_handshakestate_get_local_keypair_dh()\n */\nint noise_handshakestate_needs_local_keypair(const NoiseHandshakeState *state)\n{\n    if (!state)\n        return 0;\n    if ((state->requirements & NOISE_REQ_LOCAL_REQUIRED) == 0)\n        return 0;\n    return !noise_dhstate_has_keypair(state->dh_local_static);\n}\n\n/**\n * \\brief Determine if a HandshakeState has been configured with a\n * local keypair.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns 1 if the \\a state has already been configured with a\n * local keypair, or 0 if the keypair is yet to be provided.  Also returns\n * zero if \\a state is NULL.\n *\n * \\sa noise_handshakestate_needs_local_keypair(),\n * noise_handshakestate_get_local_keypair_dh()\n */\nint noise_handshakestate_has_local_keypair(const NoiseHandshakeState *state)\n{\n    if (!state || !state->dh_local_static)\n        return 0;\n    return noise_dhstate_has_keypair(state->dh_local_static);\n}\n\n/**\n * \\brief Determine if a HandshakeState still needs to be configured\n * with a remote public key before the protocol can start.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns 1 if the \\a state has not yet been configured with a\n * required remote public key, or 0 if the key has been provided or is\n * not required at all.  Also returns zero if \\a state is NULL.\n *\n * This function indicates that a remote public key must be supplied\n * before the protocol starts.  If it is possible for the remote public key\n * to be provided by the remote party during the session, then the\n * remote public key can be obtained at the end of the handshake using the\n * noise_handshakestate_get_remote_public_key_dh() object.\n *\n * \\sa noise_handshakestate_has_remote_public_key(),\n * noise_handshakestate_get_remote_public_key_dh()\n */\nint noise_handshakestate_needs_remote_public_key(const NoiseHandshakeState *state)\n{\n    if (!state)\n        return 0;\n    if ((state->requirements & NOISE_REQ_REMOTE_REQUIRED) == 0)\n        return 0;\n    return !noise_dhstate_has_public_key(state->dh_remote_static);\n}\n\n/**\n * \\brief Determine if a HandshakeState has a remote public key.\n *\n * \\param state The HandshakeState object.\n *\n * \\return Returns 1 if the \\a state has a remote public key, or 0 if the\n * key is yet to be seen.  Also returns zero if \\a state is NULL.\n *\n * A remote public key may either be provided ahead of time on the\n * noise_handshakestate_get_remote_public_key_dh() object, or it may be\n * provided by the remote party during the handshake.\n *\n * \\sa noise_handshakestate_needs_remote_public_key(),\n * noise_handshakestate_set_remote_public_key()\n */\nint noise_handshakestate_has_remote_public_key(const NoiseHandshakeState *state)\n{\n    if (!state || !state->dh_remote_static)\n        return 0;\n    return noise_dhstate_has_public_key(state->dh_remote_static);\n}\n\n/**\n * \\brief Mixes a public key value into the handshake hash.\n *\n * \\param state The HandshakeState object.\n * \\param dh The DHState for the key to mix in.  Can be NULL.\n */\nstatic void noise_handshakestate_mix_public_key\n    (NoiseHandshakeState *state, const NoiseDHState *dh)\n{\n    if (noise_dhstate_has_public_key(dh)) {\n        noise_symmetricstate_mix_hash\n            (state->symmetric, dh->public_key, dh->public_key_len);\n    }\n}\n\n/**\n * \\brief Mixes a public key value into the chaining key.\n *\n * \\param state The HandshakeState object.\n * \\param dh The DHState for the key to mix in.  Can be NULL.\n */\nstatic void noise_handshakestate_mix_chaining_key\n    (NoiseHandshakeState *state, const NoiseDHState *dh)\n{\n    if (noise_dhstate_has_public_key(dh)) {\n        noise_symmetricstate_mix_key\n            (state->symmetric, dh->public_key, dh->public_key_len);\n    }\n}\n\n/**\n * \\brief Starts the handshake on a HandshakeState object.\n *\n * \\param state The HandshakeState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_LOCAL_KEY_REQUIRED if a local keypair is required\n * to start the protocol but one has not been provided yet.\n * \\return NOISE_ERROR_REMOTE_KEY_REQUIRED if a remote public key is required\n * to start the protocol but one has not been provided yet.\n * \\return NOISE_ERROR_PSK_REQUIRED if a pre shared key is required\n * to start the protocol but one has not been provided yet.\n * \\return NOISE_ERROR_INVALID_STATE if the protocol handshake\n * has already started.\n * \\return NOISE_ERROR_NOT_APPLICABLE if an attempt was made to\n * start a fallback handshake pattern without first calling\n * noise_handshakestate_fallback() on a previous handshake.\n *\n * This function is called after all of the handshake parameters have been\n * provided to the HandshakeState object.  This function should be followed\n * by calls to noise_handshake_write_message() or noise_handshake_read_message()\n * to process the handshake messages.  The noise_handshakestate_get_action()\n * function indicates the action to take next.\n *\n * \\sa noise_handshake_write_message(), noise_handshake_read_message(),\n * noise_handshakestate_get_action(), noise_handshakestate_fallback()\n */\nint noise_handshakestate_start(NoiseHandshakeState *state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->action != NOISE_ACTION_NONE)\n        return NOISE_ERROR_INVALID_STATE;\n    if (state->symmetric->id.pattern_id == NOISE_PATTERN_XX_FALLBACK &&\n            (state->requirements & NOISE_REQ_FALLBACK_PREMSG) == 0)\n        return NOISE_ERROR_NOT_APPLICABLE;\n\n    /* Check that we have satisfied all of the pattern requirements */\n    if ((state->requirements & NOISE_REQ_LOCAL_REQUIRED) != 0 &&\n            !noise_dhstate_has_keypair(state->dh_local_static))\n        return NOISE_ERROR_LOCAL_KEY_REQUIRED;\n    if ((state->requirements & NOISE_REQ_REMOTE_REQUIRED) != 0 &&\n            !noise_dhstate_has_public_key(state->dh_remote_static))\n        return NOISE_ERROR_REMOTE_KEY_REQUIRED;\n    if ((state->requirements & NOISE_REQ_PSK) != 0 &&\n            state->pre_shared_key_len == 0)\n        return NOISE_ERROR_PSK_REQUIRED;\n\n    /* Hash the prologue value */\n    if (state->prologue_len) {\n        noise_symmetricstate_mix_hash\n            (state->symmetric, state->prologue, state->prologue_len);\n    } else {\n        /* No prologue, so hash an empty one */\n        noise_symmetricstate_mix_hash\n            (state->symmetric, state->pre_shared_key, 0);\n    }\n\n    /* Mix the pre shared key into the chaining key and handshake hash */\n    if (state->pre_shared_key_len) {\n        uint8_t temp[NOISE_MAX_HASHLEN];\n        NoiseHashState *hash = state->symmetric->hash;\n        noise_hashstate_hkdf\n            (hash, state->symmetric->ck, hash->hash_len,\n             state->pre_shared_key, state->pre_shared_key_len,\n             state->symmetric->ck, hash->hash_len, temp, hash->hash_len);\n        noise_symmetricstate_mix_hash(state->symmetric, temp, hash->hash_len);\n        noise_clean(temp, sizeof(temp));\n    }\n\n    /* Mix the pre-supplied public keys into the handshake hash */\n    if (state->role == NOISE_ROLE_INITIATOR) {\n        if (state->requirements & NOISE_REQ_LOCAL_PREMSG)\n            noise_handshakestate_mix_public_key(state, state->dh_local_static);\n        if (state->requirements & NOISE_REQ_FALLBACK_PREMSG) {\n            noise_handshakestate_mix_public_key(state, state->dh_remote_ephemeral);\n            if (state->dh_remote_hybrid) {\n                noise_handshakestate_mix_public_key\n                    (state, state->dh_remote_hybrid);\n            }\n            if ((state->requirements & NOISE_REQ_PSK) != 0) {\n                noise_handshakestate_mix_chaining_key\n                    (state, state->dh_remote_ephemeral);\n            }\n        }\n        if (state->requirements & NOISE_REQ_REMOTE_PREMSG)\n            noise_handshakestate_mix_public_key(state, state->dh_remote_static);\n    } else {\n        if (state->requirements & NOISE_REQ_REMOTE_PREMSG)\n            noise_handshakestate_mix_public_key(state, state->dh_remote_static);\n        if (state->requirements & NOISE_REQ_FALLBACK_PREMSG) {\n            noise_handshakestate_mix_public_key(state, state->dh_local_ephemeral);\n            if (state->dh_local_hybrid) {\n                noise_handshakestate_mix_public_key\n                    (state, state->dh_local_hybrid);\n            }\n            if ((state->requirements & NOISE_REQ_PSK) != 0) {\n                noise_handshakestate_mix_chaining_key\n                    (state, state->dh_local_ephemeral);\n            }\n        }\n        if (state->requirements & NOISE_REQ_LOCAL_PREMSG)\n            noise_handshakestate_mix_public_key(state, state->dh_local_static);\n    }\n\n    /* The handshake has now officially started */\n    if (state->role == NOISE_ROLE_INITIATOR)\n        state->action = NOISE_ACTION_WRITE_MESSAGE;\n    else\n        state->action = NOISE_ACTION_READ_MESSAGE;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Falls back to the \"XXfallback\" handshake pattern.\n *\n * \\param state The HandshakeState object.\n *\n * \\return NOISE_ERROR_NONE on error.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the previous protocol has not\n * been started or has not reached the fallback position yet.\n * \\return NOISE_ERROR_INVALID_LENGTH if the new protocol name is too long.\n * \\return NOISE_ERROR_NOT_APPLICABLE if the handshake pattern in the\n * original protocol name is not compatible with \"XXfallback\".\n *\n * This function is intended used to help implement the \"Noise Pipes\" protocol.\n * It resets a HandshakeState object with the original handshake pattern\n * (usually \"IK\"), converting it into an object with the handshake pattern\n * \"XXfallback\".  Information from the previous session such as the local\n * keypair, the initiator's ephemeral key, the prologue value, and the\n * pre-shared key, are passed to the new session.\n *\n * Once the fallback has been initiated, the application can set\n * new values for the handshake parameters if the values from the\n * previous session do not apply.  For example, the application may\n * use a different prologue for the fallback than for the original\n * session.\n *\n * After setting any new parameters, the application calls\n * noise_handshakestate_start() again to restart the handshake\n * from where it left off before the fallback.\n *\n * \\note This function reverses the roles of initiator and responder.\n *\n * \\sa noise_handshakestate_start(), noise_handshakestate_fallback_to()\n */\nint noise_handshakestate_fallback(NoiseHandshakeState *state)\n{\n    return noise_handshakestate_fallback_to(state, NOISE_PATTERN_XX_FALLBACK);\n}\n\n/**\n * \\brief Falls back to another handshake pattern.\n *\n * \\param state The HandshakeState object.\n * \\param pattern_id The identifier for the pattern to fallback to;\n * e.g. NOISE_PATTERN_XX_FALLBACK, NOISE_PATTERN_NX_FALLBACK, etc.\n *\n * \\return NOISE_ERROR_NONE on error.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the previous protocol has not\n * been started or has not reached the fallback position yet.\n * \\return NOISE_ERROR_INVALID_LENGTH if the new protocol name is too long.\n * \\return NOISE_ERROR_NOT_APPLICABLE if the handshake pattern in the\n * original protocol name is not compatible with \\a pattern_id.\n * \\return NOISE_ERROR_NOT_APPLICABLE if \\a pattern_id does not\n * identify a fallback pattern.\n *\n * This function is a generalization of the \"Noise Pipes\" protocol,\n * allowing for other combinations of patterns to be used for the\n * full handshake, abbreviated handshake, and fallback handshake.\n * For example, \"NX/NK/NXfallback\", \"XX/XK/XXfallback\", etc.\n *\n * This function resets a HandshakeState object with the original\n * handshake pattern, and converts it into an object with the new handshake\n * \\a pattern_id.  Information from the previous session such as the local\n * keypair, the initiator's ephemeral key, the prologue value, and the\n * pre-shared key, are passed to the new session.\n *\n * Once the fallback has been initiated, the application can set\n * new values for the handshake parameters if the values from the\n * previous session do not apply.  For example, the application may\n * use a different prologue for the fallback than for the original\n * session.\n *\n * After setting any new parameters, the application calls\n * noise_handshakestate_start() again to restart the handshake\n * from where it left off before the fallback.\n *\n * The new pattern may have greater key requirements than the original;\n * for example changing from \"NK\" from \"XXfallback\" requires that the\n * initiator's static public key be set.  The application is responsible for\n * setting any extra keys before calling noise_handshakestate_start().\n *\n * \\note This function reverses the roles of initiator and responder.\n *\n * \\sa noise_handshakestate_start(), noise_handshakestate_fallback()\n */\nint noise_handshakestate_fallback_to(NoiseHandshakeState *state, int pattern_id)\n{\n    char name[NOISE_MAX_PROTOCOL_NAME];\n    size_t hash_len;\n    size_t name_len;\n    NoiseProtocolId id;\n    const uint8_t *pattern;\n    NoisePatternFlags_t flags;\n    int err;\n\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* The original pattern must end in \"K\" for fallback to be possible */\n    if (state->symmetric->id.pattern_id < NOISE_PATTERN_NN ||\n            (state->requirements & NOISE_REQ_FALLBACK_POSSIBLE) == 0)\n        return NOISE_ERROR_NOT_APPLICABLE;\n\n    /* Check that \"pattern_id\" supports fallback */\n    pattern = noise_pattern_lookup(pattern_id);\n    if (!pattern)\n        return NOISE_ERROR_NOT_APPLICABLE;\n    flags = ((NoisePatternFlags_t)(pattern[0])) |\n           (((NoisePatternFlags_t)(pattern[1])) << 8);\n    if ((flags & NOISE_PAT_FLAG_REMOTE_EPHEM_REQ) == 0)\n        return NOISE_ERROR_NOT_APPLICABLE;\n\n    /* The initiator should be waiting for a return message from the\n       responder, and the responder should have failed on the first\n       handshake message from the initiator.  We also allow the\n       responder to fallback after processing the first message\n       successfully; it decides to always fall back anyway. */\n    if (state->role == NOISE_ROLE_INITIATOR) {\n        if (state->action != NOISE_ACTION_FAILED &&\n                state->action != NOISE_ACTION_READ_MESSAGE)\n            return NOISE_ERROR_INVALID_STATE;\n        if (!noise_dhstate_has_public_key(state->dh_local_ephemeral))\n            return NOISE_ERROR_INVALID_STATE;\n        if (state->dh_local_hybrid &&\n                !noise_dhstate_has_public_key(state->dh_local_hybrid))\n            return NOISE_ERROR_INVALID_STATE;\n    } else {\n        if (state->action != NOISE_ACTION_FAILED &&\n                state->action != NOISE_ACTION_WRITE_MESSAGE)\n            return NOISE_ERROR_INVALID_STATE;\n        if (!noise_dhstate_has_public_key(state->dh_remote_ephemeral))\n            return NOISE_ERROR_INVALID_STATE;\n        if (state->dh_remote_hybrid &&\n                !noise_dhstate_has_public_key(state->dh_remote_hybrid))\n            return NOISE_ERROR_INVALID_STATE;\n    }\n\n    /* Format a new protocol name for the fallback variant */\n    id = state->symmetric->id;\n    id.pattern_id = pattern_id;\n    err = noise_protocol_id_to_name(name, sizeof(name), &id);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Convert the HandshakeState to the fallback pattern */\n    state->symmetric->id.pattern_id = pattern_id;\n    if (state->role == NOISE_ROLE_INITIATOR) {\n        noise_dhstate_clear_key(state->dh_remote_ephemeral);\n        noise_dhstate_clear_key(state->dh_remote_hybrid);\n        noise_dhstate_clear_key(state->dh_remote_static);\n        state->role = NOISE_ROLE_RESPONDER;\n    } else {\n        noise_dhstate_clear_key(state->dh_local_ephemeral);\n        noise_dhstate_clear_key(state->dh_local_hybrid);\n        if (!(flags & NOISE_PAT_FLAG_REMOTE_REQUIRED))\n            noise_dhstate_clear_key(state->dh_remote_static);\n        state->role = NOISE_ROLE_INITIATOR;\n    }\n\n    /* Start a new token pattern for the fallback */\n    state->tokens = pattern + 2;\n    state->action = NOISE_ACTION_NONE;\n\n    /* Set up the key requirements for the fallback */\n    if (state->role == NOISE_ROLE_RESPONDER) {\n        flags = noise_pattern_reverse_flags(flags);\n    }\n    state->requirements = noise_handshakestate_requirements\n        (flags, id.prefix_id, state->role, 1);\n\n    /* Re-initialize the chaining key \"ck\" and the handshake hash \"h\" from\n       the new protocol name.  If the name is too long, hash it down first */\n    name_len = strlen(name);\n    hash_len = noise_hashstate_get_hash_length(state->symmetric->hash);\n    if (name_len <= hash_len) {\n        memcpy(state->symmetric->h, name, name_len);\n        memset(state->symmetric->h + name_len, 0, hash_len - name_len);\n    } else {\n        noise_hashstate_hash_one\n            (state->symmetric->hash, (const uint8_t *)name, name_len,\n             state->symmetric->h, hash_len);\n    }\n    memcpy(state->symmetric->ck, state->symmetric->h, hash_len);\n\n    /* Reset the encryption key within the symmetric state to empty */\n    state->symmetric->cipher->has_key = 0;\n    state->symmetric->cipher->n = 0;\n\n    /* Ready to go */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the next action the application should perform for\n * the handshake phase of the protocol.\n *\n * \\param state The HandshakeState object.\n *\n * \\return NOISE_ACTION_NONE if no action needs to be taken by the\n * application because the protocol hasn't started yet.\n * \\return NOISE_ACTION_WRITE_MESSAGE if the application is expected\n * to write a new message payload for the next outgoing handshake message\n * using noise_handshakestate_write_message().\n * \\return NOISE_ACTION_READ_MESSAGE if the application is expected\n * wait for an incoming handshake message from the remote party and then\n * pass the message to noise_handshakestate_read_message() to\n * extract the payload.\n * \\return NOISE_ACTION_FAILED if the handshake has failed with an\n * error.  The application should destroy the HandshakeState by calling\n * noise_handshakestate_free() and terminate the connection.  If the\n * application is using Noise Pipes, then it may be able to continue by\n * calling noise_handshakestate_fallback() depending upon where in the\n * protocol the failure occurred.\n * \\return NOISE_ACTION_SPLIT if the handshake has finished successfully\n * and the application should call noise_handshakestate_split() to\n * obtain the CipherState objects for the data phase of the protocol.\n * \\return NOISE_ACTION_COMPLETE if the handshake has finished successfully\n * and noise_handshakestate_split() has been called.\n *\n * \\sa noise_handshakestate_write_message(),\n * noise_handshakestate_read_message(), noise_handshakestate_split(),\n * noise_handshakestate_fallback()\n */\nint noise_handshakestate_get_action(const NoiseHandshakeState *state)\n{\n    return state ? state->action : NOISE_ACTION_NONE;\n}\n\n/**\n * \\brief Performs a Diffie-Hellman operation and mixes the result into\n * the chaining key.\n *\n * \\param state The HandshakeState object.\n * \\param private_key Points to the private key DHState object.\n * \\param public_key Points to the public key DHState object.\n *\n * \\return NOISE_ERROR_NONE on success, or an error code from\n * noise_dhstate_calculate() otherwise.\n */\nstatic int noise_handshake_mix_dh\n    (NoiseHandshakeState *state, const NoiseDHState *private_key,\n     const NoiseDHState *public_key)\n{\n    size_t len = private_key->shared_key_len;\n    uint8_t *shared = alloca(len);\n    int err = noise_dhstate_calculate(private_key, public_key, shared, len);\n    noise_symmetricstate_mix_key(state->symmetric, shared, len);\n    noise_clean(shared, len);\n    return err;\n}\n\n/**\n * \\brief Internal implementation of noise_handshakestate_write_message().\n *\n * \\param state The HandshakeState object.\n * \\param message Points to the message buffer to be populated with\n * handshake details and the message payload.\n * \\param payload Points to the message payload to be sent, which can\n * be NULL if no payload is required.\n *\n * \\sa noise_handshakestate_write_message()\n */\nstatic int noise_handshakestate_write\n    (NoiseHandshakeState *state, NoiseBuffer *message, const NoiseBuffer *payload)\n{\n    NoiseBuffer rest;\n    size_t len;\n    size_t mac_len;\n    uint8_t token;\n    int err;\n\n    /* Process tokens until the direction changes or the pattern ends */\n    for (;;) {\n        token = *(state->tokens);\n        if (token == NOISE_TOKEN_END) {\n            /* The pattern has finished, so the next action is \"split\" */\n            state->action = NOISE_ACTION_SPLIT;\n            break;\n        } else if (token == NOISE_TOKEN_FLIP_DIR) {\n            /* Changing directions, so this message is complete and\n               the next action is \"read message\". */\n            ++(state->tokens);\n            state->action = NOISE_ACTION_READ_MESSAGE;\n            break;\n        }\n\n        /* Set \"rest\" to the rest of the \"message\" buffer after the\n           current size.  This is the space we have left to write\n           handshake values while processing this token. */\n        rest.data = message->data + message->size;\n        rest.size = 0;\n        rest.max_size = message->max_size - message->size;\n\n        /* Process the token */\n        err = NOISE_ERROR_NONE;\n        switch (token) {\n        case NOISE_TOKEN_E:\n            /* Generate a local ephemeral keypair and add the public\n               key to the message.  If we are running fixed vector tests,\n               then the ephemeral key may have already been provided. */\n            if (!state->dh_local_ephemeral)\n                return NOISE_ERROR_INVALID_STATE;\n            if (!state->dh_fixed_ephemeral) {\n                err = noise_dhstate_generate_dependent_keypair\n                    (state->dh_local_ephemeral, state->dh_remote_ephemeral);\n            } else {\n                /* Use the fixed ephemeral key provided by the test harness.\n                   To support New Hope we need to perform a dependent copy */\n                state->dh_local_ephemeral->key_type =\n                    state->dh_fixed_ephemeral->key_type;\n                err = (*(state->dh_local_ephemeral->copy))\n                    (state->dh_local_ephemeral, state->dh_fixed_ephemeral,\n                     state->dh_remote_ephemeral);\n            }\n            if (err != NOISE_ERROR_NONE)\n                break;\n            len = state->dh_local_ephemeral->public_key_len;\n            if (rest.max_size < len)\n                return NOISE_ERROR_INVALID_LENGTH;\n            memcpy(rest.data, state->dh_local_ephemeral->public_key, len);\n            noise_symmetricstate_mix_hash(state->symmetric, rest.data, len);\n            rest.size += len;\n\n            /* If the protocol is using pre-shared keys, then also mix\n               the local ephemeral key into the chaining key */\n            if (state->symmetric->id.prefix_id == NOISE_PREFIX_PSK) {\n                err = noise_symmetricstate_mix_key\n                    (state->symmetric,\n                     state->dh_local_ephemeral->public_key, len);\n            }\n            break;\n        case NOISE_TOKEN_S:\n            /* Encrypt the local static public key and add it to the message */\n            if (!state->dh_local_static)\n                return NOISE_ERROR_INVALID_STATE;\n            len = state->dh_local_static->public_key_len;\n            mac_len = noise_symmetricstate_get_mac_length(state->symmetric);\n            if (rest.max_size < (len + mac_len))\n                return NOISE_ERROR_INVALID_LENGTH;\n            memcpy(rest.data, state->dh_local_static->public_key, len);\n            rest.size += len;\n            err = noise_symmetricstate_encrypt_and_hash(state->symmetric, &rest);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            break;\n        case NOISE_TOKEN_EE:\n            /* DH operation with initiator and responder ephemeral keys */\n            err = noise_handshake_mix_dh\n                (state, state->dh_local_ephemeral, state->dh_remote_ephemeral);\n            break;\n        case NOISE_TOKEN_ES:\n            /* DH operation with initiator ephemeral and responder static keys */\n            if (state->role == NOISE_ROLE_INITIATOR) {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_ephemeral, state->dh_remote_static);\n            } else {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_static, state->dh_remote_ephemeral);\n            }\n            break;\n        case NOISE_TOKEN_SE:\n            /* DH operation with initiator static and responder ephemeral keys */\n            if (state->role == NOISE_ROLE_INITIATOR) {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_static, state->dh_remote_ephemeral);\n            } else {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_ephemeral, state->dh_remote_static);\n            }\n            break;\n        case NOISE_TOKEN_SS:\n            /* DH operation with initiator and responder static keys */\n            err = noise_handshake_mix_dh\n                (state, state->dh_local_static, state->dh_remote_static);\n            break;\n        case NOISE_TOKEN_F:\n            /* Generate a local hybrid keypair and add the encrypted public\n               key to the message.  If we are running fixed vector tests,\n               then the hybrid key may have already been provided. */\n            if (!state->dh_local_hybrid || !state->dh_remote_hybrid)\n                return NOISE_ERROR_INVALID_STATE;\n            if (state->dh_remote_hybrid->key_type == NOISE_KEY_TYPE_NO_KEY) {\n                noise_dhstate_set_role\n                    (state->dh_local_hybrid, NOISE_ROLE_INITIATOR);\n            } else {\n                noise_dhstate_set_role\n                    (state->dh_local_hybrid, NOISE_ROLE_RESPONDER);\n            }\n            if (!state->dh_fixed_hybrid) {\n                err = noise_dhstate_generate_dependent_keypair\n                    (state->dh_local_hybrid, state->dh_remote_hybrid);\n            } else {\n                /* Use the fixed hybrid key provided by the test harness.\n                   To support New Hope we need to perform a dependent copy */\n                state->dh_local_hybrid->key_type =\n                    state->dh_fixed_hybrid->key_type;\n                err = (*(state->dh_local_hybrid->copy))\n                    (state->dh_local_hybrid, state->dh_fixed_hybrid,\n                     state->dh_remote_hybrid);\n            }\n            if (err != NOISE_ERROR_NONE)\n                break;\n            len = state->dh_local_hybrid->public_key_len;\n            mac_len = noise_symmetricstate_get_mac_length(state->symmetric);\n            if (rest.max_size < (len + mac_len))\n                return NOISE_ERROR_INVALID_LENGTH;\n            memcpy(rest.data, state->dh_local_hybrid->public_key, len);\n            rest.size += len;\n            err = noise_symmetricstate_encrypt_and_hash(state->symmetric, &rest);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            break;\n        case NOISE_TOKEN_FF:\n            /* DH operation with local and remote hybrid keys */\n            err = noise_handshake_mix_dh\n                (state, state->dh_local_hybrid, state->dh_remote_hybrid);\n            break;\n        default:\n            /* Unknown token code in the pattern.  This shouldn't happen.\n               If it does, then abort immediately. */\n            err = NOISE_ERROR_INVALID_STATE;\n            break;\n        }\n        if (err != NOISE_ERROR_NONE)\n            return err;\n        message->size += rest.size;\n        ++(state->tokens);\n    }\n\n    /* Add the payload to the message buffer and encrypt it */\n    mac_len = noise_symmetricstate_get_mac_length(state->symmetric);\n    if ((message->max_size - message->size) < mac_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (payload) {\n        if ((message->max_size - message->size - mac_len) < payload->size)\n            return NOISE_ERROR_INVALID_LENGTH;\n        rest.data = message->data + message->size;\n        rest.size = payload->size;\n        rest.max_size = message->max_size - message->size;\n        memcpy(rest.data, payload->data, payload->size);\n    } else {\n        rest.data = message->data + message->size;\n        rest.size = 0;\n        rest.max_size = message->max_size - message->size;\n    }\n    err = noise_symmetricstate_encrypt_and_hash(state->symmetric, &rest);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Return the final size to the caller */\n    message->size += rest.size;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Writes a message payload using a HandshakeState.\n *\n * \\param state The HandshakeState object.\n * \\param message Points to the message buffer to be populated with\n * handshake details and the message payload.\n * \\param payload Points to the message payload to be sent, which can\n * be NULL if no payload is required.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a message is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if noise_handshakestate_get_action() is \n * not NOISE_ACTION_WRITE_MESSAGE.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a message is too small to contain\n * all of the bytes that need to be written to it.\n *\n * The \\a message and \\a payload buffers must not overlap in memory.\n *\n * The following example demonstrates how to write a handshake message\n * into the application's <tt>msgbuf</tt> array:\n *\n * \\code\n * NoiseBuffer payload;\n * uint8_t payloadbuf[PAYLOAD_LEN];\n * // Format the message payload into \"payloadbuf\".\n * noise_buffer_set_input(payload, payloadbuf, sizeof(payloadbuf));\n *\n * uint8_t msgbuf[MSGBUF_MAX];\n * NoiseBuffer message;\n * noise_buffer_set_output(message, msgbuf, sizeof(msgbuf));\n * err = noise_handshakestate_write_message(state, &message, &payload);\n * // Transmit the message.size bytes starting at message.data if no error.\n * \\endcode\n *\n * \\sa noise_handshakestate_read_message(), noise_handshakestate_get_action()\n */\nint noise_handshakestate_write_message\n    (NoiseHandshakeState *state, NoiseBuffer *message, const NoiseBuffer *payload)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!message)\n        return NOISE_ERROR_INVALID_PARAM;\n    message->size = 0;\n    if (!state || !(message->data))\n        return NOISE_ERROR_INVALID_PARAM;\n    if (payload && !(payload->data))\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->action != NOISE_ACTION_WRITE_MESSAGE)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Perform the write */\n    err = noise_handshakestate_write(state, message, payload);\n    if (err != NOISE_ERROR_NONE) {\n        /* Set the state to \"failed\" and empty the message buffer */\n        state->action = NOISE_ACTION_FAILED;\n        message->size = 0;\n    }\n    return err;\n}\n\n/**\n * \\brief Internal implementation of noise_handshakestate_read_message().\n *\n * \\param state The HandshakeState object.\n * \\param message Points to the incoming handshake message to be unpacked.\n * \\param message_size The length of the incoming handshake message in bytes.\n * \\param payload Points to the buffer to fill with the message payload.\n * This can be NULL if the application does not need the message payload.\n * \\param payload_size On exit, set to the number of bytes that were actually\n * written to \\a payload.\n * \\param max_size Maximum payload size that can be written to \\a payload.\n *\n * \\sa noise_handshakestate_read_message()\n */\nstatic int noise_handshakestate_read\n    (NoiseHandshakeState *state, NoiseBuffer *message, NoiseBuffer *payload)\n{\n    NoiseBuffer msg;\n    NoiseBuffer msg2;\n    size_t len;\n    size_t mac_len;\n    uint8_t token;\n    int err;\n\n    /* Make a copy of the message buffer.  As we process tokens, the copy\n       will become shorter and shorter until only the payload is left. */\n    msg = *message;\n\n    /* Process tokens until the direction changes or the pattern ends */\n    for (;;) {\n        token = *(state->tokens);\n        if (token == NOISE_TOKEN_END) {\n            /* The pattern has finished, so the next action is \"split\" */\n            state->action = NOISE_ACTION_SPLIT;\n            break;\n        } else if (token == NOISE_TOKEN_FLIP_DIR) {\n            /* Changing directions, so this message is complete and\n               the next action is \"read message\". */\n            ++(state->tokens);\n            state->action = NOISE_ACTION_WRITE_MESSAGE;\n            break;\n        }\n        err = NOISE_ERROR_NONE;\n        switch (token) {\n        case NOISE_TOKEN_E:\n            /* Save the remote ephemeral key and hash it */\n            if (!state->dh_remote_ephemeral)\n                return NOISE_ERROR_INVALID_STATE;\n            len = state->dh_remote_ephemeral->public_key_len;\n            if (msg.size < len)\n                return NOISE_ERROR_INVALID_LENGTH;\n            err = noise_symmetricstate_mix_hash\n                (state->symmetric, msg.data, len);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            err = noise_dhstate_set_public_key\n                (state->dh_remote_ephemeral, msg.data, len);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            if (noise_dhstate_is_null_public_key(state->dh_remote_ephemeral)) {\n                /* The remote ephemeral key is null, which means that it is\n                   not contributing anything to the security of the session\n                   and is in fact downgrading the security to \"none at all\"\n                   in some of the message patterns.  Reject all such keys. */\n                return NOISE_ERROR_INVALID_PUBLIC_KEY;\n            }\n            msg.data += len;\n            msg.size -= len;\n            msg.max_size -= len;\n\n            /* If the protocol is using pre-shared keys, then also mix\n               the remote ephemeral key into the chaining key */\n            if (state->symmetric->id.prefix_id == NOISE_PREFIX_PSK) {\n                err = noise_symmetricstate_mix_key\n                    (state->symmetric,\n                     state->dh_remote_ephemeral->public_key, len);\n            }\n            break;\n        case NOISE_TOKEN_S:\n            /* Decrypt and read the remote static key */\n            if (!state->dh_remote_static)\n                return NOISE_ERROR_INVALID_STATE;\n            mac_len = noise_symmetricstate_get_mac_length(state->symmetric);\n            len = state->dh_remote_static->public_key_len + mac_len;\n            if (msg.size < len)\n                return NOISE_ERROR_INVALID_LENGTH;\n            msg2.data = msg.data;\n            msg2.size = len;\n            msg2.max_size = len;\n            err = noise_symmetricstate_decrypt_and_hash\n                (state->symmetric, &msg2);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            err = noise_dhstate_set_public_key\n                (state->dh_remote_static, msg2.data, msg2.size);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            msg.data += len;\n            msg.size -= len;\n            msg.max_size -= len;\n            break;\n        case NOISE_TOKEN_EE:\n            /* DH operation with initiator and responder ephemeral keys */\n            err = noise_handshake_mix_dh\n                (state, state->dh_local_ephemeral, state->dh_remote_ephemeral);\n            break;\n        case NOISE_TOKEN_ES:\n            /* DH operation with initiator ephemeral and responder static keys */\n            if (state->role == NOISE_ROLE_INITIATOR) {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_ephemeral, state->dh_remote_static);\n            } else {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_static, state->dh_remote_ephemeral);\n            }\n            break;\n        case NOISE_TOKEN_SE:\n            /* DH operation with initiator static and responder ephemeral keys */\n            if (state->role == NOISE_ROLE_INITIATOR) {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_static, state->dh_remote_ephemeral);\n            } else {\n                err = noise_handshake_mix_dh\n                    (state, state->dh_local_ephemeral, state->dh_remote_static);\n            }\n            break;\n        case NOISE_TOKEN_SS:\n            /* DH operation with initiator and responder static keys */\n            err = noise_handshake_mix_dh\n                (state, state->dh_local_static, state->dh_remote_static);\n            break;\n        case NOISE_TOKEN_F:\n            /* Decrypt and save the remote hybrid key */\n            if (!state->dh_local_hybrid || !state->dh_remote_hybrid)\n                return NOISE_ERROR_INVALID_STATE;\n            if (state->dh_local_hybrid->key_type == NOISE_KEY_TYPE_NO_KEY) {\n                noise_dhstate_set_role\n                    (state->dh_remote_hybrid, NOISE_ROLE_INITIATOR);\n            } else {\n                noise_dhstate_set_role\n                    (state->dh_remote_hybrid, NOISE_ROLE_RESPONDER);\n            }\n            mac_len = noise_symmetricstate_get_mac_length(state->symmetric);\n            len = state->dh_remote_hybrid->public_key_len + mac_len;\n            if (msg.size < len)\n                return NOISE_ERROR_INVALID_LENGTH;\n            msg2.data = msg.data;\n            msg2.size = len;\n            msg2.max_size = len;\n            err = noise_symmetricstate_decrypt_and_hash\n                (state->symmetric, &msg2);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            err = noise_dhstate_set_public_key\n                (state->dh_remote_hybrid, msg2.data, msg2.size);\n            if (err != NOISE_ERROR_NONE)\n                break;\n            msg.data += len;\n            msg.size -= len;\n            msg.max_size -= len;\n            if (noise_dhstate_is_null_public_key(state->dh_remote_hybrid)) {\n                /* The remote hybrid key is null, which means that it is\n                   not contributing anything to the security of the session\n                   and is in fact downgrading the security to \"none at all\"\n                   in some of the message patterns.  Reject all such keys. */\n                err = NOISE_ERROR_INVALID_PUBLIC_KEY;\n                break;\n            }\n            break;\n        case NOISE_TOKEN_FF:\n            /* DH operation with local and remote hybrid keys */\n            err = noise_handshake_mix_dh\n                (state, state->dh_local_hybrid, state->dh_remote_hybrid);\n            break;\n        default:\n            /* Unknown token code in the pattern.  This shouldn't happen.\n               If it does, then abort immediately. */\n            err = NOISE_ERROR_INVALID_STATE;\n            break;\n        }\n        if (err != NOISE_ERROR_NONE)\n            return err;\n        ++(state->tokens);\n    }\n\n    /* Decrypt the remaining bytes and return them in the payload buffer */\n    mac_len = noise_symmetricstate_get_mac_length(state->symmetric);\n    err = noise_symmetricstate_decrypt_and_hash(state->symmetric, &msg);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n    if (payload) {\n        if (msg.size > payload->max_size)\n            return NOISE_ERROR_INVALID_LENGTH;\n        memcpy(payload->data, msg.data, msg.size);\n        payload->size = msg.size;\n    }\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reads a message payload using a HandshakeState.\n *\n * \\param state The HandshakeState object.\n * \\param message Points to the incoming handshake message to be unpacked.\n * \\param payload Points to the buffer to fill with the message payload.\n * This can be NULL if the application does not need the message payload.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a message is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if noise_handshakestate_get_action() is \n * not NOISE_ACTION_READ_MESSAGE.\n * \\return NOISE_ERROR_INVALID_LENGTH if the size of \\a message is incorrect\n * for the type of handshake packet that we expect.\n * \\return NOISE_ERROR_INVALID_LENGTH if the size of \\a payload is too small\n * to contain all of the payload bytes that were present in the \\a message.\n * \\return NOISE_ERROR_MAC_FAILURE if the \\a message failed to authenticate,\n * which terminates the handshake.\n * \\return NOISE_ERROR_PUBLIC_KEY if an invalid remote public key is seen\n * during the processing of this message.\n *\n * If \\a payload is NULL, then the message payload will be authenticated\n * and then discarded, regardless of its length.  If the application was\n * expecting an empty payload and wants to verify that, then \\a payload\n * should point to a non-NULL zero-length buffer.\n *\n * The \\a message and \\a payload buffers must not overlap in memory.\n *\n * The \\a message buffer will be modified by this function to decrypt\n * sub-components while it is being processed.  The contents will be\n * cleared just before the function exits to avoid leaking decrypted\n * message data other than the \\a payload.\n *\n * \\sa noise_handshakestate_write_message(), noise_handshakestate_get_action()\n */\nint noise_handshakestate_read_message\n    (NoiseHandshakeState *state, NoiseBuffer *message, NoiseBuffer *payload)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (payload) {\n        if (!(payload->data))\n            return NOISE_ERROR_INVALID_PARAM;\n        payload->size = 0;\n    }\n    if (!state || !message || !(message->data))\n        return NOISE_ERROR_INVALID_PARAM;\n    if (message->size > message->max_size)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (state->action != NOISE_ACTION_READ_MESSAGE)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Perform the read */\n    err = noise_handshakestate_read(state, message, payload);\n    noise_clean(message->data, message->size);\n    if (err != NOISE_ERROR_NONE)\n        state->action = NOISE_ACTION_FAILED;\n    return err;\n}\n\n/**\n * \\brief Splits the transport encryption CipherState objects out of\n * this HandshakeState object.\n *\n * \\param state The HandshakeState object.\n * \\param send Points to the variable where to place the pointer to the\n * CipherState object to use to send packets from local to remote.\n * This can be NULL if the application is using a one-way handshake pattern.\n * \\param receive Points to the variable where to place the pointer to the\n * CipherState object to use to receive packets from the remote to local.\n * This can be NULL if the application is using a one-way handshake pattern.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if both \\a send and \\a receive are NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the \\a state has already been split\n * or the handshake protocol has not completed successfully yet.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to create\n * the new CipherState objects.\n *\n * Once a HandshakeState has been split, it is effectively finished and\n * cannot be used for future handshake operations.  If those operations are\n * invoked, the relevant functions will return NOISE_ERROR_INVALID_STATE.\n *\n * The \\a send object should be used to protect messages from the local\n * side to the remote side, and the \\a receive object should be used to\n * protect messages from the remote side to the local side.\n *\n * If the handshake pattern is one-way, then the application should call\n * noise_cipherstate_free() on the object that is not needed.  Alternatively,\n * the application can pass NULL to noise_handshakestate_split() as the\n * \\a send or \\a receive argument and the second CipherState will not be\n * created at all.\n *\n * \\sa noise_handshakestate_get_handshake_hash()\n */\nint noise_handshakestate_split\n    (NoiseHandshakeState *state, NoiseCipherState **send, NoiseCipherState **receive)\n{\n    int swap;\n    int err;\n\n    /* Validate the parameters */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!send && !receive)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->action != NOISE_ACTION_SPLIT)\n        return NOISE_ERROR_INVALID_STATE;\n    if (!state->symmetric->cipher)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Do we need to swap the CipherState objects for the role? */\n    swap = (state->role == NOISE_ROLE_RESPONDER);\n\n    /* Split the CipherState objects out of the SymmetricState */\n    if (swap)\n        err = noise_symmetricstate_split(state->symmetric, receive, send);\n    else\n        err = noise_symmetricstate_split(state->symmetric, send, receive);\n    if (err == NOISE_ERROR_NONE)\n        state->action = NOISE_ACTION_COMPLETE;\n    return err;\n}\n\n/**\n * \\brief Gets the handshake hash value once the handshake ends.\n *\n * \\param state The HandshakeState object.\n * \\param hash The buffer to receive the handshake hash value.\n * \\param max_len The maximum length of the \\a hash buffer.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a hash is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the handshake has not successfully\n * completed yet.\n *\n * If \\a max_len is greater than the length of the handshake hash,\n * then the extra bytes will be filled with zeroes.  If \\a max_len\n * is less than the length of the handshake hash, then the value\n * will be truncated to the first \\a max_len bytes.  Handshake hashes\n * are typically 32 or 64 bytes in length, depending upon the hash\n * algorithm that was used during the protocol.\n *\n * The handshake hash can be used to implement \"channel binding\".\n * The value will be a unique identifier for the session.\n *\n * \\note The handshake hash is generated from publicly-known values\n * in the handshake.  If the application needs a unique secret identifier,\n * then it should combine the handshake hash with other randomly generated\n * data that is sent encrypted during the session.\n *\n * \\sa noise_handshakestate_split()\n */\nint noise_handshakestate_get_handshake_hash\n    (const NoiseHandshakeState *state, uint8_t *hash, size_t max_len)\n{\n    size_t hash_len;\n\n    /* Validate the parameters */\n    if (!state || !hash)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->action != NOISE_ACTION_SPLIT &&\n            state->action != NOISE_ACTION_COMPLETE)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Copy the handshake hash into the supplied buffer */\n    hash_len = noise_hashstate_get_hash_length(state->symmetric->hash);\n    if (hash_len <= max_len) {\n        memcpy(hash, state->symmetric->h, hash_len);\n        memset(hash + hash_len, 0, max_len - hash_len);\n    } else {\n        memcpy(hash, state->symmetric->h, max_len);\n    }\n    return NOISE_ERROR_NONE;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/hashstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <string.h>\n\n/**\n * \\file hashstate.h\n * \\brief HashState interface\n */\n\n/**\n * \\file hashstate.c\n * \\brief HashState implementation\n */\n\n/**\n * \\defgroup hashstate HashState API\n *\n * The HashState API provides access to the hash algorithms within the\n * library.  Normally applications won't need to use these functions\n * directly because \\ref symmetricstate \"SymmetricState\" takes care\n * of hashing operations for the Noise protocol internally.\n *\n * These functions are provided mainly for testing purposes.  However,\n * applications can use them if they need to hash values for some\n * higher-level protocol purpose.  This may be preferable to the\n * application having to source its own hash implementations\n * for that purpose.\n */\n/**@{*/\n\n/**\n * \\typedef NoiseHashState\n * \\brief Opaque object that represents a HashState.\n */\n\n/**\n * \\brief Creates a new HashState object by its algorithm identifier.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new HashState object.\n * \\param id The algorithm identifier; NOISE_HASH_BLAKE2s,\n * NOISE_HASH_SHA256, etc.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_UNKNOWN_ID if \\a id is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new HashState object.\n *\n * \\sa noise_hashstate_free(), noise_hashstate_new_by_name()\n */\nint noise_hashstate_new_by_id(NoiseHashState **state, int id)\n{\n    /* The \"state\" argument must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Create the HashState object for the \"id\" */\n    *state = 0;\n    switch (id) {\n    case NOISE_HASH_BLAKE2s:\n        *state = noise_blake2s_new();\n        break;\n\n    case NOISE_HASH_BLAKE2b:\n        *state = noise_blake2b_new();\n        break;\n\n    case NOISE_HASH_SHA256:\n        *state = noise_sha256_new();\n        break;\n\n    case NOISE_HASH_SHA512:\n        *state = noise_sha512_new();\n        break;\n\n    default:\n        return NOISE_ERROR_UNKNOWN_ID;\n    }\n\n    /* Bail out if insufficient memory */\n    if (!(*state))\n        return NOISE_ERROR_NO_MEMORY;\n\n    /* Ready to go */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Creates a new HashState object by its algorithm name.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new HashState object.\n * \\param name The name of the cipher algorithm; e.g. \"BLAKE2s\", \"SHA256\", etc.\n * This string must be NUL-terminated.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a name is NULL.\n * \\return NOISE_ERROR_UNKNOWN_NAME if \\a name is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new HashState object.\n *\n * \\sa noise_hashstate_free(), noise_hashstate_new_by_id()\n */\nint noise_hashstate_new_by_name(NoiseHashState **state, const char *name)\n{\n    int id;\n\n    /* The \"state\" and \"name\" arguments must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!name)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Map the name and create the corresponding object */\n    id = noise_name_to_id(NOISE_HASH_CATEGORY, name, strlen(name));\n    if (id)\n        return noise_hashstate_new_by_id(state, id);\n\n    /* We don't know what this is */\n    return NOISE_ERROR_UNKNOWN_NAME;\n}\n\n/**\n * \\brief Frees a HashState object after destroying all sensitive material.\n *\n * \\param state The HashState object to free.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_hashstate_new_by_id(), noise_hashstate_new_by_name()\n */\nint noise_hashstate_free(NoiseHashState *state)\n{\n    /* Bail out if no hash state */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Call the backend-specific destroy function if necessary */\n    if (state->destroy)\n        (*(state->destroy))(state);\n\n    /* Clean and free the memory */\n    noise_free(state, state->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the algorithm identifier for a HashState object.\n *\n * \\param state The HashState object.\n *\n * \\return The algorithm identifier, or NOISE_HASH_NONE if \\a state is NULL.\n */\nint noise_hashstate_get_hash_id(const NoiseHashState *state)\n{\n    return state ? state->hash_id : NOISE_HASH_NONE;\n}\n\n/**\n * \\brief Gets the length of the hash output for a HashState object.\n *\n * \\param state The HashState object.\n *\n * \\return The size of the hash in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_hashstate_get_block_length()\n */\nsize_t noise_hashstate_get_hash_length(const NoiseHashState *state)\n{\n    return state ? state->hash_len : 0;\n}\n\n/**\n * \\brief Gets the length of the block for a HashState object.\n *\n * \\param state The HashState object.\n *\n * \\return The size of the block in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_hashstate_get_hash_length()\n */\nsize_t noise_hashstate_get_block_length(const NoiseHashState *state)\n{\n    return state ? state->block_len : 0;\n}\n\n/**\n * \\brief Resets the hash state.\n *\n * \\param state The HashState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_hashstate_update(), noise_hashstate_finalize()\n */\nint noise_hashstate_reset(NoiseHashState *state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Reset the hash state */\n    (*(state->reset))(state);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Updates the hash state with more data.\n *\n * \\param state The HashState object.\n * \\param data The new data to incorporate into the hash state.\n * \\param data_len The length of the \\a data in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a data is NULL.\n *\n * \\sa noise_hashstate_reset(), noise_hashstate_finalize()\n */\nint noise_hashstate_update\n    (NoiseHashState *state, const uint8_t *data, size_t data_len)\n{\n    /* Validate the parameters */\n    if (!state || !data)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Update the hash state */\n    (*(state->update))(state, data, data_len);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Finalizes the hash state and returns the hash value.\n *\n * \\param state The HashState object.\n * \\param hash The return buffer for the hash value.\n * \\param hash_len The length of the \\a hash buffer in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a hash is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a hash_len is not the same\n * as the hash length for the algorithm.\n *\n * \\sa noise_hashstate_reset(), noise_hashstate_update(),\n * noise_hashstate_get_hash_length()\n */\nint noise_hashstate_finalize\n    (NoiseHashState *state, uint8_t *hash, size_t hash_len)\n{\n    /* Validate the parameters */\n    if (!state || !hash)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (hash_len != state->hash_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Finalize the hash state */\n    (*(state->finalize))(state, hash);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Hashes a single data buffer and returns the hash value.\n *\n * \\param state The HashState object.\n * \\param data Points to the data to be hashed.\n * \\param data_len The length of the data in bytes.\n * \\param hash The return buffer for the hash value.\n * \\param hash_len The length of the \\a hash buffer in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if one of \\a state, \\a data,\n * or \\a hash is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a hash_len is not the same\n * as the hash length for the algorithm.\n *\n * The \\a data and \\a hash buffers are allowed to overlap.\n *\n * This is a convenience function that combines the effect of\n * noise_hashstate_reset(), nose_hashstate_update(), and\n * noise_hashstate_finalize().\n *\n * \\sa noise_hashstate_hash_two(), noise_hashstate_get_hash_length()\n */\nint noise_hashstate_hash_one\n    (NoiseHashState *state, const uint8_t *data, size_t data_len,\n     uint8_t *hash, size_t hash_len)\n{\n    /* Validate the parameters */\n    if (!state || !data || !hash)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (hash_len != state->hash_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Hash the data */\n    (*(state->reset))(state);\n    (*(state->update))(state, data, data_len);\n    (*(state->finalize))(state, hash);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Hashes the concatenation of two data buffers and returns\n * the combined hash value.\n *\n * \\param state The HashState object.\n * \\param data1 Points to the first data buffer to be hashed.\n * \\param data1_len The length of the first data buffer in bytes.\n * \\param data2 Points to the second data buffer to be hashed.\n * \\param data2_len The length of the second data buffer in bytes.\n * \\param hash The return buffer for the hash value.\n * \\param hash_len The length of the \\a hash buffer in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if one of \\a state, \\a data1,\n * \\a data2, or \\a hash is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a hash_len is not the same\n * as the hash length for the algorithm.\n *\n * The \\a data1, \\a data2, and \\a hash buffers are allowed to overlap.\n *\n * This is a convenience function that combines the effect of\n * noise_hashstate_reset(), nose_hashstate_update(), and\n * noise_hashstate_finalize().\n *\n * \\sa noise_hashstate_hash_one(), noise_hashstate_get_hash_length()\n */\nint noise_hashstate_hash_two\n    (NoiseHashState *state, const uint8_t *data1, size_t data1_len,\n     const uint8_t *data2, size_t data2_len, uint8_t *hash, size_t hash_len)\n{\n    /* Validate the parameters */\n    if (!state || !data1 || !data2 || !hash)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (hash_len != state->hash_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Hash the data */\n    (*(state->reset))(state);\n    (*(state->update))(state, data1, data1_len);\n    (*(state->update))(state, data2, data2_len);\n    (*(state->finalize))(state, hash);\n    return NOISE_ERROR_NONE;\n}\n\n/** @cond */\n#define HMAC_IPAD   0x36    /**< Padding value for the inner HMAC context */\n#define HMAC_OPAD   0x5C    /**< Padding value for the outer HMAC context */\n/** @endcond */\n\n/**\n * \\brief XOR's a HMAC key value with a byte value.\n *\n * \\param key Points to the key.\n * \\param key_len The length of the key in bytes.\n * \\param value The byte value to XOR into the \\a key.\n */\nstatic void noise_hashstate_xor_key(uint8_t *key, size_t key_len, uint8_t value)\n{\n    while (key_len > 0) {\n        *key++ ^= value;\n        --key_len;\n    }\n}\n\n/**\n * \\brief Computes a HMAC value from key and data.\n *\n * \\param state The HashState object.\n * \\param key Points to the key.\n * \\param key_len The length of the key in bytes.\n * \\param data1 Points to the first data block.\n * \\param data1_len The length of the first data block in bytes.\n * \\param data1 Points to the second data block (may be NULL).\n * \\param data1_len The length of the second data block in bytes.\n * \\param hash The final output HMAC hash value.\n *\n * The \\a data and \\a hash buffers are allowed to overlap, but neither\n * must overlap with \\a key.\n *\n * Reference: <a href=\"http://tools.ietf.org/html/rfc2104\">RFC 2104</a>\n */\nstatic void noise_hashstate_hmac\n    (NoiseHashState *state, const uint8_t *key, size_t key_len,\n     const uint8_t *data1, size_t data1_len,\n     const uint8_t *data2, size_t data2_len, uint8_t *hash)\n{\n    size_t hash_len = state->hash_len;\n    size_t block_len = state->block_len;\n    uint8_t *key_block;\n\n    /* Allocate temporary stack space for the key block */\n    key_block = alloca(block_len);\n\n    /* Format the key for the inner hashing context */\n    if (key_len <= block_len) {\n        memcpy(key_block, key, key_len);\n        memset(key_block + key_len, 0, block_len - key_len);\n    } else {\n        (*(state->reset))(state);\n        (*(state->update))(state, key, key_len);\n        (*(state->finalize))(state, key_block);\n        memset(key_block + hash_len, 0, block_len - hash_len);\n    }\n    noise_hashstate_xor_key(key_block, block_len, HMAC_IPAD);\n\n    /* Calculate the inner hash */\n    (*(state->reset))(state);\n    (*(state->update))(state, key_block, block_len);\n    (*(state->update))(state, data1, data1_len);\n    if (data2)\n        (*(state->update))(state, data2, data2_len);\n    (*(state->finalize))(state, hash);\n\n    /* Format the key for the outer hashing context */\n    noise_hashstate_xor_key(key_block, block_len, HMAC_IPAD ^ HMAC_OPAD);\n\n    /* Calculate the outer hash */\n    (*(state->reset))(state);\n    (*(state->update))(state, key_block, block_len);\n    (*(state->update))(state, hash, hash_len);\n    (*(state->finalize))(state, hash);\n\n    /* Clean up and exit */\n    noise_clean(key_block, state->block_len);\n}\n\n/**\n * \\brief Hashes input data with a key to generate two output values.\n *\n * \\param state The HashState object.\n * \\param key Points to the key.\n * \\param key_len The length of the \\a key in bytes.\n * \\param data Points to the data.\n * \\param data_len The length of the \\a data in bytes.\n * \\param output1 The first output buffer to fill.\n * \\param output1_len The length of the first output buffer, which may\n * be shorter than the hash length of the HashState object.\n * \\param output2 The second output buffer to fill.\n * \\param output2_len The length of the second output buffer, which may\n * be shorter than the hash length of the HashState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if one of \\a state, \\a key, \\a data,\n * \\a output1, or \\a output2 is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a output1_len or \\a output2_len is\n * greater than the hash length for the HashState object.\n *\n * Reference: <a href=\"http://tools.ietf.org/html/rfc5869\">RFC 5868</a>\n *\n * \\sa noise_hashstate_hash_one()\n */\nint noise_hashstate_hkdf\n    (NoiseHashState *state, const uint8_t *key, size_t key_len,\n     const uint8_t *data, size_t data_len,\n     uint8_t *output1, size_t output1_len,\n     uint8_t *output2, size_t output2_len)\n{\n    size_t hash_len;\n    uint8_t *temp_key;\n    uint8_t *temp_hash;\n\n    /* Validate the parameters */\n    if (!state || !key || !data || !output1 || !output2)\n        return NOISE_ERROR_INVALID_PARAM;\n    hash_len = state->hash_len;\n    if (output1_len > hash_len || output2_len > hash_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Allocate local stack space for the temporary hash values */\n    temp_key = alloca(hash_len);\n    temp_hash = alloca(hash_len + 1);\n\n    /* Generate the temporary hashing key */\n    noise_hashstate_hmac(state, key, key_len, data, data_len, 0, 0, temp_key);\n\n    /* Generate the first output */\n    temp_hash[0] = 0x01;\n    noise_hashstate_hmac\n        (state, temp_key, hash_len, temp_hash, 1, 0, 0, temp_hash);\n    memcpy(output1, temp_hash, output1_len);\n\n    /* Generate the second output */\n    temp_hash[hash_len] = 0x02;\n    noise_hashstate_hmac\n        (state, temp_key, hash_len, temp_hash, hash_len + 1, 0, 0, temp_hash);\n    memcpy(output2, temp_hash, output2_len);\n\n    /* Clean up and exit */\n    noise_clean(temp_key, hash_len);\n    noise_clean(temp_hash, hash_len + 1);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Hashes a passphrase and salt using the PBKDF2 key derivation function.\n *\n * \\param state The HashState object.\n * \\param passphrase Points to the passphrase.\n * \\param passphrase_len The length of the passphrase in bytes.\n * \\param salt Points to the salt.\n * \\param salt_len The length of the salt in bytes.\n * \\param iterations The number of hash iterations to use.\n * \\param output The output buffer to put the final hash into.\n * \\param output_len The length of the output in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if one of \\a state, \\a passphrase,\n * \\a salt, or \\a output is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the \\a output_len is too large\n * for valid PBKDF2 output.\n *\n * This function is intended as a utility for applications that need to hash a\n * passphrase to encrypt private keys and other sensitive information.\n *\n * Reference: <a href=\"https://www.ietf.org/rfc/rfc2898.txt\">RFC 2898</a>\n */\nint noise_hashstate_pbkdf2\n    (NoiseHashState *state, const uint8_t *passphrase, size_t passphrase_len,\n     const uint8_t *salt, size_t salt_len, size_t iterations,\n     uint8_t *output, size_t output_len)\n{\n    size_t hash_len;\n    uint64_t max_size;\n    uint8_t T[NOISE_MAX_HASHLEN];\n    uint8_t U[NOISE_MAX_HASHLEN];\n    uint8_t ibuf[4];\n    size_t i, index, index2;\n\n    /* Validate the parameters */\n    if (!state || !passphrase || !salt || !output)\n        return NOISE_ERROR_INVALID_PARAM;\n    hash_len = state->hash_len;\n    max_size = ((uint64_t)0xFFFFFFFFU) * hash_len;\n    if (output_len > max_size)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Generate the required output blocks */\n    i = 1;\n    while (output_len > 0) {\n        /* Generate the next block of output */\n        ibuf[0] = (uint8_t)(i >> 24);\n        ibuf[1] = (uint8_t)(i >> 16);\n        ibuf[2] = (uint8_t)(i >> 8);\n        ibuf[3] = (uint8_t)i;\n        ++i;\n        noise_hashstate_hmac\n            (state, passphrase, passphrase_len, salt, salt_len,\n             ibuf, sizeof(ibuf), T);\n        memcpy(U, T, hash_len);\n        for (index = 1; index < iterations; ++index) {\n            noise_hashstate_hmac\n                (state, passphrase, passphrase_len, U, hash_len, 0, 0, U);\n            for (index2 = 0; index2 < hash_len; ++index2)\n                T[index2] ^= U[index2];\n        }\n\n        /* Copy the generated data into the output buffer */\n        if (output_len >= hash_len) {\n            memcpy(output, T, hash_len);\n            output += hash_len;\n            output_len -= hash_len;\n        } else {\n            memcpy(output, T, output_len);\n            output_len = 0;\n        }\n    }\n\n    /* Clean up and exit */\n    noise_clean(T, sizeof(T));\n    noise_clean(U, sizeof(U));\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the maximum hash length for the supported algorithms.\n *\n * \\sa noise_hashstate_get_max_block_length()\n */\nint noise_hashstate_get_max_hash_length(void)\n{\n    return NOISE_MAX_HASHLEN;\n}\n\n/**\n * \\brief Gets the maximum block length for the supported algorithms.\n *\n * \\sa noise_hashstate_get_max_hash_length()\n */\nint noise_hashstate_get_max_block_length(void)\n{\n    return 128;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/internal.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n\n#if USE_LIBSODIUM\nNoiseCipherState *noise_aesgcm_new_sodium(void);\n#endif\n#if USE_OPENSSL\nNoiseCipherState *noise_aesgcm_new_openssl(void);\n#else\nNoiseCipherState *noise_aesgcm_new_ref(void);\n#endif\n\n/**\n * \\brief Creates a new AES-GCM CipherState object.\n *\n * \\return A NoiseCipherState for AES-GCM cipher use, or NULL if no such state is available.\n */\nNoiseCipherState *noise_aesgcm_new(void)\n{\n    NoiseCipherState *state = 0;\n#if USE_LIBSODIUM\n    if (crypto_aead_aes256gcm_is_available())\n        state = noise_aesgcm_new_sodium();\n#endif\n#if USE_OPENSSL\n    if (!state)\n        state = noise_aesgcm_new_openssl();\n#else\n    if (!state)\n        state = noise_aesgcm_new_ref();\n#endif\n\n    return state;\n}\n\n\n"
  },
  {
    "path": "src/protocol/internal.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef NOISE_INTERNAL_H\n#define NOISE_INTERNAL_H\n\n#include <noise/protocol.h>\n#if defined(__WIN32__) || defined(WIN32)\n#include <malloc.h>\n#else\n#include <alloca.h>\n#endif\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * \\file internal.h\n * \\brief Internal definitions for the library.\n *\n * \\note This file and its definitions are not part of the public API.\n * The definitions are subject to change without notice.\n */\n\n/**\n * \\brief Maximum hash length over all supported hash algorithms.\n */\n#define NOISE_MAX_HASHLEN 64\n\n/**\n * \\brief Standard length for pre-shared keys.\n */\n#define NOISE_PSK_LEN 32\n\n/**\n * \\brief Internal structure of the NoiseCipherState type.\n */\nstruct NoiseCipherState_s\n{\n    /** \\brief Total size of the structure including subclass state */\n    size_t size;\n\n    /** \\brief Algorithm identifier for the cipher */\n    int cipher_id;\n\n    /** \\brief Non-zero if the key has been set on this cipher */\n    uint8_t has_key;\n\n    /** \\brief Length of the key for this cipher in bytes */\n    uint8_t key_len;\n\n    /** \\brief Length of the MAC for this cipher in bytes */\n    uint8_t mac_len;\n\n    /** \\brief The nonce value for the next packet */\n    uint64_t n;\n\n    /**\n     * \\brief Creates a new CipherState of the same type as this one.\n     *\n     * \\return A new CipherState object, or NULL if there is insufficient\n     * memory for the request.\n     */\n    NoiseCipherState *(*create)(void);\n\n    /**\n     * \\brief Sets the key for this CipherState.\n     *\n     * \\param state Points to the CipherState.\n     * \\param key Points to the key, which must be \\ref key_len bytes in size.\n     *\n     * If the key has already been set before, then calling this function\n     * again will set a new key.\n     */\n    void (*init_key)(NoiseCipherState *state, const uint8_t *key);\n\n    /**\n     * \\brief Encrypts data with this CipherState.\n     *\n     * \\param state Points to the CipherState.\n     * \\param ad Points to the associated data to include in the\n     * MAC computation.\n     * \\param ad_len The length of the associated data; may be zero.\n     * \\param data Points to the plaintext on entry, and to the ciphertext\n     * plus MAC on exit.\n     * \\param len The length of the plaintext.\n     *\n     * \\return NOISE_ERROR_NONE on success.\n     *\n     * The \\a data buffer must have enough room to append \\ref mac_len extra\n     * bytes for the MAC value.\n     */\n    int (*encrypt)(NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n                   uint8_t *data, size_t len);\n\n    /**\n     * \\brief Decrypts data with this CipherState.\n     *\n     * \\param state Points to the CipherState.\n     * \\param ad Points to the associated data to include in the\n     * MAC computation.\n     * \\param ad_len The length of the associated data; may be zero.\n     * \\param data Points to the ciphertext plus MAC on entry, and to\n     * the plaintext on exit.\n     * \\param len The length of the ciphertext, excluding the MAC.\n     *\n     * \\return NOISE_ERROR_NONE on success, NOISE_ERROR_MAC_FAILURE\n     * if the MAC check failed.\n     */\n    int (*decrypt)(NoiseCipherState *state, const uint8_t *ad, size_t ad_len,\n                   uint8_t *data, size_t len);\n\n    /**\n     * \\brief Destroys this CipherState prior to the memory being freed.\n     *\n     * \\param state Points to the CipherState.\n     *\n     * This function is called just before the memory for the CipherState\n     * is deallocated.  It gives the back end an opportunity to clean up\n     * linked objects.\n     *\n     * This pointer can be NULL if the back end does not need any special\n     * clean up logic.\n     */\n    void (*destroy)(NoiseCipherState *state);\n};\n\n/**\n * \\brief Internal structure of the NoiseHashState type.\n */\nstruct NoiseHashState_s\n{\n    /** \\brief Total size of the structure including subclass state */\n    size_t size;\n\n    /** \\brief Algorithm identifier for the hash */\n    int hash_id;\n\n    /** \\brief Length of the output from this hash algorithm */\n    uint16_t hash_len;\n\n    /** \\brief Length of the underlying block for this hash algorithm */\n    uint16_t block_len;\n\n    /**\n     * \\brief Resets the HashState for a new hashing session.\n     *\n     * \\param state Points to the HashState.\n     */\n    void (*reset)(NoiseHashState *state);\n\n    /**\n     * \\brief Updates the HashState with more input data.\n     *\n     * \\param state Points to the HashState.\n     * \\param data Points to the input data.\n     * \\param len The length of the input \\a data in bytes.\n     */\n    void (*update)(NoiseHashState *state, const uint8_t *data, size_t len);\n\n    /**\n     * \\brief Finalizes the HashState and returns the hash value.\n     *\n     * \\param state Points to the HashState.\n     * \\param hash Points to the buffer to receive the final hash value.\n     * This must be at least \\ref hash_len bytes in length.\n     */\n    void (*finalize)(NoiseHashState *state, uint8_t *hash);\n\n    /**\n     * \\brief Destroys this HashState prior to the memory being freed.\n     *\n     * \\param state Points to the HashState.\n     *\n     * This function is called just before the memory for the HashState\n     * is deallocated.  It gives the back end an opportunity to clean up\n     * linked objects.\n     *\n     * This pointer can be NULL if the back end does not need any special\n     * clean up logic.\n     */\n    void (*destroy)(NoiseHashState *state);\n};\n\n/* States for public key algorithms, either DHState or SignState */\n#define NOISE_KEY_TYPE_NO_KEY   0   /**< No key set yet */\n#define NOISE_KEY_TYPE_KEYPAIR  1   /**< Set to a keypair */\n#define NOISE_KEY_TYPE_PUBLIC   2   /**< Set to a public key only */\n\n/**\n * \\brief Internal structure of the NoiseDHState type.\n */\nstruct NoiseDHState_s\n{\n    /** \\brief Total size of the structure including subclass state */\n    size_t size;\n\n    /** \\brief Algorithm identifier for the Diffie-Hellman operation */\n    short dh_id;\n\n    /** \\brief The role; either initiator or responder or zero */\n    short role;\n\n    /** \\brief The type of key stored within this DHState object */\n    uint8_t key_type;\n\n    /** \\brief Non-zero if this algorithm only supports ephemeral keys */\n    uint8_t ephemeral_only : 1;\n\n    /** \\brief Non-zero if null public keys are allowed with this algorithm */\n    uint8_t nulls_allowed : 1;\n\n    /** \\brief Length of the private key for this algorithm in bytes */\n    uint16_t private_key_len;\n\n    /** \\brief Length of the public key for this algorithm in bytes */\n    uint16_t public_key_len;\n\n    /** \\brief Length of the shared key for this algorithm in bytes */\n    uint16_t shared_key_len;\n\n    /** \\brief Points to the private key in the subclass state */\n    uint8_t *private_key;\n\n    /** \\brief Points to the public key in the subclass state */\n    uint8_t *public_key;\n\n    /**\n     * \\brief Generates a new key pair for this Diffie-Hellman algorithm.\n     *\n     * \\param state Points to the DHState.\n     * \\param other Points to the other DHState for obtaining dependent\n     * parameters.  May be NULL.\n     *\n     * \\return NOISE_ERROR_NONE on success or an error code otherwise.\n     */\n    int (*generate_keypair)(NoiseDHState *state, const NoiseDHState *other);\n\n    /**\n     * \\brief Sets a keypair.\n     *\n     * \\param state Points to the DHState.\n     * \\param private_key Points to the private key for the keypair.\n     * \\param public_key Points to the public key for the keypair.\n     *\n     * \\return NOISE_ERROR_NONE if the keypair is valid.\n     * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if there is something wrong\n     * with the private key.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if there is something wrong\n     * with the public key.\n     */\n    int (*set_keypair)\n        (NoiseDHState *state, const uint8_t *private_key,\n         const uint8_t *public_key);\n\n    /**\n     * \\brief Sets a keypair using only the private key.\n     *\n     * \\param state Points to the DHState.\n     * \\param private_key Points to the private key for the keypair.\n     *\n     * \\return NOISE_ERROR_NONE if the keypair is valid.\n     * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if there is something wrong\n     * with the private key.\n     */\n    int (*set_keypair_private)\n        (NoiseDHState *state, const uint8_t *private_key);\n\n    /**\n     * \\brief Validates a public key.\n     *\n     * \\param state Points to the DHState.\n     * \\param public_key Points to the public key.\n     *\n     * \\return NOISE_ERROR_NONE if the keypair is valid.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if there is something wrong\n     * with the public key.\n     */\n    int (*validate_public_key)\n        (const NoiseDHState *state, const uint8_t *public_key);\n\n    /**\n     * \\brief Copies another key into this object.\n     *\n     * \\param state Points to the DHState to copy into.\n     * \\param from Points to the DHState to copy from.\n     * \\param other Points to another DHState for obtaining dependent\n     * parameters.  May be NULL.\n     */\n    int (*copy)(NoiseDHState *state, const NoiseDHState *from,\n                const NoiseDHState *other);\n\n    /**\n     * \\brief Performs a Diffie-Hellman calculation.\n     *\n     * \\param private_key_state Points to the DHState for the private key.\n     * \\param public_key_state Points to the DHState for the public key.\n     * \\param shared_key Points to the shared key on exit.\n     *\n     * \\return NOISE_ERROR_NONE on success.\n     * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if the private key is\n     * invalid for the algorithm.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if the public key is\n     * invalid for the algorithm.\n     *\n     * This function must always operate in the same amount of time, even\n     * if the private or public key is invalid.\n     */\n    int (*calculate)\n        (const NoiseDHState *private_key_state,\n         const NoiseDHState *public_key_state,\n         uint8_t *shared_key);\n\n    /**\n     * \\brief Changes the role for this object.\n     *\n     * \\param state Points to the DHState.\n     *\n     * This pointer can be NULL if the back end does not need any special\n     * logic to change the role.\n     */\n    void (*change_role)(NoiseDHState *state);\n\n    /**\n     * \\brief Destroys this DHState prior to the memory being freed.\n     *\n     * \\param state Points to the DHState.\n     *\n     * This function is called just before the memory for the DHState\n     * is deallocated.  It gives the back end an opportunity to clean up\n     * linked objects.\n     *\n     * This pointer can be NULL if the back end does not need any special\n     * clean up logic.\n     */\n    void (*destroy)(NoiseDHState *state);\n};\n\n/**\n * \\brief Internal structure of the NoiseSignState type.\n */\nstruct NoiseSignState_s\n{\n    /** \\brief Total size of the structure including subclass state */\n    size_t size;\n\n    /** \\brief Algorithm identifier for the digital signature operation */\n    int sign_id;\n\n    /** \\brief The type of key stored within this SignState object */\n    uint16_t key_type;\n\n    /** \\brief Length of the private key for this algorithm in bytes */\n    uint16_t private_key_len;\n\n    /** \\brief Length of the public key for this algorithm in bytes */\n    uint16_t public_key_len;\n\n    /** \\brief Length of the signature for this algorithm in bytes */\n    uint16_t signature_len;\n\n    /** \\brief Points to the private key in the subclass state */\n    uint8_t *private_key;\n\n    /** \\brief Points to the public key in the subclass state */\n    uint8_t *public_key;\n\n    /**\n     * \\brief Generates a new key pair for this digital signature algorithm.\n     *\n     * \\param state Points to the SignState.\n     */\n    void (*generate_keypair)(NoiseSignState *state);\n\n    /**\n     * \\brief Validates a keypair.\n     *\n     * \\param state Points to the SignState.\n     * \\param private_key Points to the private key for the keypair.\n     * \\param public_key Points to the public key for the keypair.\n     *\n     * \\return NOISE_ERROR_NONE if the keypair is valid.\n     * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if there is something wrong\n     * with the private key.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if there is something wrong\n     * with the public key.\n     */\n    int (*validate_keypair)\n        (const NoiseSignState *state, const uint8_t *private_key,\n         const uint8_t *public_key);\n\n    /**\n     * \\brief Derives a public key from a private key.\n     *\n     * \\param state Points to the SignState.\n     * \\param private_key Points to the private key for the keypair.\n     * \\param public_key Points to the public key for the keypair.\n     *\n     * \\return NOISE_ERROR_NONE if the keypair is valid.\n     * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if there is something wrong\n     * with the private key.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if there is something wrong\n     * with the derived public key.\n     */\n    int (*derive_public_key)\n        (const NoiseSignState *state, const uint8_t *private_key,\n         uint8_t *public_key);\n\n    /**\n     * \\brief Validates a public key.\n     *\n     * \\param state Points to the SignState.\n     * \\param public_key Points to the public key.\n     *\n     * \\return NOISE_ERROR_NONE if the keypair is valid.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if there is something wrong\n     * with the public key.\n     */\n    int (*validate_public_key)\n        (const NoiseSignState *state, const uint8_t *public_key);\n\n    /**\n     * \\brief Creates a signature.\n     *\n     * \\param state Points to the SignState.\n     * \\param message Points to the message to be signed.\n     * \\param message_len The length of the \\a message to be signed.\n     * \\param signature Points to the signature on exit.\n     *\n     * \\return NOISE_ERROR_NONE on success.\n     * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if the private key is\n     * invalid for the algorithm.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if the public key is\n     * invalid for the algorithm.\n     *\n     * This function must always operate in the same amount of time, even\n     * if the private or public key is invalid.\n     */\n    int (*sign)\n        (const NoiseSignState *state, const uint8_t *message,\n         size_t message_len, uint8_t *signature);\n\n    /**\n     * \\brief Verifies a digital signature on a message.\n     *\n     * \\param state Points to the SignState.\n     * \\param message Points to the message whose signature should\n     * be verified, which is usually a short hash value.\n     * \\param message_len The length of the \\a message to be verified.\n     * \\param signature Points to the signature to be verified.\n     *\n     * \\return NOISE_ERROR_NONE on success.\n     * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a state does not\n     * contain a public key or the public key is invalid.\n     * \\return NOISE_ERROR_INVALID_SIGNATURE if the \\a signature is not\n     * valid for the \\a message using this public key.\n     */\n    int (*verify)\n        (const NoiseSignState *state, const uint8_t *message,\n         size_t message_len, const uint8_t *signature);\n\n    /**\n     * \\brief Destroys this SignState prior to the memory being freed.\n     *\n     * \\param state Points to the SignState.\n     *\n     * This function is called just before the memory for the SignState\n     * is deallocated.  It gives the back end an opportunity to clean up\n     * linked objects.\n     *\n     * This pointer can be NULL if the back end does not need any special\n     * clean up logic.\n     */\n    void (*destroy)(NoiseSignState *state);\n};\n\n/**\n * \\brief Internal structure of the NoiseSymmetricState type.\n */\nstruct NoiseSymmetricState_s\n{\n    /** \\brief Total size of the structure */\n    size_t size;\n\n    /** \\brief Algorithm identifiers for the components of the protocol */\n    NoiseProtocolId id;\n\n    /**\n     * \\brief Points to the CipherState object for this SymmetricState.\n     *\n     * When the SymmetricState is split, this field will be set to NULL as\n     * the CipherState will be handed off to the application with a new key.\n     *\n     * \\sa noise_symmetricstate_split()\n     */\n    NoiseCipherState *cipher;\n\n    /** \\brief Points to the HashState object for this SymmetricState */\n    NoiseHashState *hash;\n\n    /** \\brief Current value of the chaining key for the handshake */\n    uint8_t ck[NOISE_MAX_HASHLEN];\n\n    /** \\brief Current value of the handshake hash */\n    uint8_t h[NOISE_MAX_HASHLEN];\n};\n\n/**\n * \\brief Internal structure of the NoiseHandshakeState type.\n */\nstruct NoiseHandshakeState_s\n{\n    /** \\brief Total size of the structure, including DH key storage */\n    size_t size;\n\n    /** \\brief The role of this object, initiator or responder */\n    int role;\n\n    /** \\brief Requirements that are yet to be satisfied */\n    int requirements;\n\n    /** \\brief Next action to be taken by the application */\n    int action;\n\n    /** \\brief Points to the next message pattern tokens to be processed */\n    const uint8_t *tokens;\n\n    /** \\brief Points to the SymmetricState object for this HandshakeState */\n    NoiseSymmetricState *symmetric;\n\n    /** \\brief Points to the DHState object for local static key */\n    NoiseDHState *dh_local_static;\n\n    /** \\brief Points to the DHState object for local ephemeral key */\n    NoiseDHState *dh_local_ephemeral;\n\n    /** \\brief Points to the DHState object for local hybrid forward secrecy key */\n    NoiseDHState *dh_local_hybrid;\n\n    /** \\brief Points to the DHState object for remote static key */\n    NoiseDHState *dh_remote_static;\n\n    /** \\brief Points to the DHState object for remote ephemeral key */\n    NoiseDHState *dh_remote_ephemeral;\n\n    /** \\brief Points to the DHState object for remote hybrid forward secrecy key */\n    NoiseDHState *dh_remote_hybrid;\n\n    /** \\brief Points to the object for the fixed ephemeral test key */\n    NoiseDHState *dh_fixed_ephemeral;\n\n    /** \\brief Points to the object for the fixed hybrid forward secrecy test key */\n    NoiseDHState *dh_fixed_hybrid;\n\n    /** \\brief Pre-shared key value */\n    uint8_t pre_shared_key[NOISE_PSK_LEN];\n\n    /** \\brief Length of the pre-shared key value: zero or NOISE_PSK_LEN only */\n    size_t pre_shared_key_len;\n\n    /** \\brief Points to the prologue value */\n    uint8_t *prologue;\n\n    /** \\brief Length of the prologue value in bytes */\n    size_t prologue_len;\n};\n\n/* Handshake message pattern tokens (must be single-byte values) */\n#define NOISE_TOKEN_END         0   /**< End of pattern, start data session */\n#define NOISE_TOKEN_S           1   /**< \"s\" token */\n#define NOISE_TOKEN_E           2   /**< \"e\" token */\n#define NOISE_TOKEN_EE          3   /**< \"ee\" token */\n#define NOISE_TOKEN_ES          4   /**< \"es\" token */\n#define NOISE_TOKEN_SE          5   /**< \"se\" token */\n#define NOISE_TOKEN_SS          6   /**< \"ss\" token */\n#define NOISE_TOKEN_F           7   /**< \"f\" token (hybrid forward secrecy) */\n#define NOISE_TOKEN_FF          8   /**< \"ff\" token (hybrid forward secrecy) */\n#define NOISE_TOKEN_FLIP_DIR    255 /**< Flip the handshake direction */\n\n/** Pattern requires a local static keypair */\n#define NOISE_PAT_FLAG_LOCAL_STATIC     (1 << 0)\n/** Pattern requires a local ephemeral keypair */\n#define NOISE_PAT_FLAG_LOCAL_EPHEMERAL  (1 << 1)\n/** Pattern requires that the local public key be provided\n    ahead of time to start the protocol.  That is, it is not\n    sent as part of the protocol but is assumed to already be\n    known to the other party. */\n#define NOISE_PAT_FLAG_LOCAL_REQUIRED   (1 << 2)\n/** Pattern requires that the local ephemeral key be provided\n    ahead of time to start the protocol (for XXfallback) */\n#define NOISE_PAT_FLAG_LOCAL_EPHEM_REQ  (1 << 3)\n/** Pattern requires a local hybrid keypair */\n#define NOISE_PAT_FLAG_LOCAL_HYBRID     (1 << 4)\n/** Pattern requires that the local hybrid key be provided\n    ahead of time to start the protocol (for XXfallback) */\n#define NOISE_PAT_FLAG_LOCAL_HYBRID_REQ (1 << 5)\n\n/** Pattern requires a remote static public key */\n#define NOISE_PAT_FLAG_REMOTE_STATIC    (1 << 8)\n/** Pattern requires a remote ephemeral public key */\n#define NOISE_PAT_FLAG_REMOTE_EPHEMERAL (1 << 9)\n/** Pattern requires that the remote public key be provided\n    ahead of time to start the protocol.  That is, it is not\n    sent as part of the protocol but is assumed to already be\n    known to the other party. */\n#define NOISE_PAT_FLAG_REMOTE_REQUIRED  (1 << 10)\n/** Pattern requires that the remote ephemeral key be provided\n    ahead of time to start the protocol (for XXfallback) */\n#define NOISE_PAT_FLAG_REMOTE_EPHEM_REQ (1 << 11) \n/** Pattern requires a remote hybrid public key */\n#define NOISE_PAT_FLAG_REMOTE_HYBRID    (1 << 12)\n/** Pattern requires that the remote hybrid key be provided\n    ahead of time to start the protocol (for XXfallback) */\n#define NOISE_PAT_FLAG_REMOTE_HYBRID_REQ (1 << 13)\n\n/** Local static keypair is required for the handshake */\n#define NOISE_REQ_LOCAL_REQUIRED        (1 << 0)\n/** Remote public key is required for the handshake */\n#define NOISE_REQ_REMOTE_REQUIRED       (1 << 1)\n/** Pre-shared key has not been provided yet */\n#define NOISE_REQ_PSK                   (1 << 2)\n/** Emphemeral key for fallback pre-message has been provided */\n#define NOISE_REQ_FALLBACK_PREMSG       (1 << 3)\n/** Local public key is part of the pre-message */\n#define NOISE_REQ_LOCAL_PREMSG          (1 << 4)\n/** Remote public key is part of the pre-message */\n#define NOISE_REQ_REMOTE_PREMSG         (1 << 5)\n/** Fallback is possible from this pattern (two-way, ends in \"K\") */\n#define NOISE_REQ_FALLBACK_POSSIBLE     (1 << 6)\n\nvoid noise_rand_bytes(void *bytes, size_t size);\n\n/** @cond */\n\nNoiseCipherState *noise_chachapoly_new(void);\nNoiseCipherState *noise_aesgcm_new(void);\n\nNoiseHashState *noise_blake2s_new(void);\nNoiseHashState *noise_blake2b_new(void);\nNoiseHashState *noise_sha256_new(void);\nNoiseHashState *noise_sha512_new(void);\n\nNoiseDHState *noise_curve25519_new(void);\nNoiseDHState *noise_curve448_new(void);\nNoiseDHState *noise_newhope_new(void);\n\nNoiseSignState *noise_ed25519_new(void);\n\ntypedef uint16_t NoisePatternFlags_t;\n\n/** @endcond */\n\nconst uint8_t *noise_pattern_lookup(int id);\nNoisePatternFlags_t noise_pattern_reverse_flags(NoisePatternFlags_t flags);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "src/protocol/names.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <string.h>\n\n/**\n * \\file names.h\n * \\brief Mapping algorithm names to/from identifiers\n */\n\n/**\n * \\file names.c\n * \\brief Implementation of algorithm name mapping\n */\n\n/**\n * \\defgroup names Algorithm name lookup API\n */\n/**@{*/\n\n/**\n * \\struct NoiseProtocolId\n * \\brief Noise protocol name broken out into separate identifier fields.\n */\n\n/** @cond */\n\n/* List of all known algorithm names and the corresponding identifiers */\ntypedef struct\n{\n    int id;\n    const char *name;\n    size_t name_len;\n\n} NoiseIdMapping;\nstatic NoiseIdMapping const algorithm_names[] = {\n    /* Cipher algorithsm */\n    {NOISE_CIPHER_CHACHAPOLY,   \"ChaChaPoly\",   10},\n    {NOISE_CIPHER_AESGCM,       \"AESGCM\",        6},\n\n    /* Hash algorithms */\n    {NOISE_HASH_BLAKE2s,        \"BLAKE2s\",       7},\n    {NOISE_HASH_BLAKE2b,        \"BLAKE2b\",       7},\n    {NOISE_HASH_SHA256,         \"SHA256\",        6},\n    {NOISE_HASH_SHA512,         \"SHA512\",        6},\n\n    /* Diffie-Hellman algorithms */\n    {NOISE_DH_CURVE25519,       \"25519\",         5},\n    {NOISE_DH_CURVE448,         \"448\",           3},\n    {NOISE_DH_NEWHOPE,          \"NewHope\",       7},\n\n    /* Handshake patterns */\n    {NOISE_PATTERN_N,           \"N\",             1},\n    {NOISE_PATTERN_X,           \"X\",             1},\n    {NOISE_PATTERN_K,           \"K\",             1},\n    {NOISE_PATTERN_NN,          \"NN\",            2},\n    {NOISE_PATTERN_NK,          \"NK\",            2},\n    {NOISE_PATTERN_NX,          \"NX\",            2},\n    {NOISE_PATTERN_XN,          \"XN\",            2},\n    {NOISE_PATTERN_XK,          \"XK\",            2},\n    {NOISE_PATTERN_XX,          \"XX\",            2},\n    {NOISE_PATTERN_KN,          \"KN\",            2},\n    {NOISE_PATTERN_KK,          \"KK\",            2},\n    {NOISE_PATTERN_KX,          \"KX\",            2},\n    {NOISE_PATTERN_IN,          \"IN\",            2},\n    {NOISE_PATTERN_IK,          \"IK\",            2},\n    {NOISE_PATTERN_IX,          \"IX\",            2},\n    {NOISE_PATTERN_XX_FALLBACK, \"XXfallback\",   10},\n    {NOISE_PATTERN_X_NOIDH,     \"Xnoidh\",        6},\n    {NOISE_PATTERN_NX_NOIDH,    \"NXnoidh\",       7},\n    {NOISE_PATTERN_XX_NOIDH,    \"XXnoidh\",       7},\n    {NOISE_PATTERN_KX_NOIDH,    \"KXnoidh\",       7},\n    {NOISE_PATTERN_IK_NOIDH,    \"IKnoidh\",       7},\n    {NOISE_PATTERN_IX_NOIDH,    \"IXnoidh\",       7},\n    {NOISE_PATTERN_NN_HFS,      \"NNhfs\",         5},\n    {NOISE_PATTERN_NK_HFS,      \"NKhfs\",         5},\n    {NOISE_PATTERN_NX_HFS,      \"NXhfs\",         5},\n    {NOISE_PATTERN_XN_HFS,      \"XNhfs\",         5},\n    {NOISE_PATTERN_XK_HFS,      \"XKhfs\",         5},\n    {NOISE_PATTERN_XX_HFS,      \"XXhfs\",         5},\n    {NOISE_PATTERN_KN_HFS,      \"KNhfs\",         5},\n    {NOISE_PATTERN_KK_HFS,      \"KKhfs\",         5},\n    {NOISE_PATTERN_KX_HFS,      \"KXhfs\",         5},\n    {NOISE_PATTERN_IN_HFS,      \"INhfs\",         5},\n    {NOISE_PATTERN_IK_HFS,      \"IKhfs\",         5},\n    {NOISE_PATTERN_IX_HFS,      \"IXhfs\",         5},\n    {NOISE_PATTERN_XX_FALLBACK_HFS, \"XXfallback+hfs\", 14},\n    {NOISE_PATTERN_NX_NOIDH_HFS,\"NXnoidh+hfs\",  11},\n    {NOISE_PATTERN_XX_NOIDH_HFS,\"XXnoidh+hfs\",  11},\n    {NOISE_PATTERN_KX_NOIDH_HFS,\"KXnoidh+hfs\",  11},\n    {NOISE_PATTERN_IK_NOIDH_HFS,\"IKnoidh+hfs\",  11},\n    {NOISE_PATTERN_IX_NOIDH_HFS,\"IXnoidh+hfs\",  11},\n\n    /* Protocol name prefixes */\n    {NOISE_PREFIX_STANDARD,     \"Noise\",         5},\n    {NOISE_PREFIX_PSK,          \"NoisePSK\",      8},\n\n    /* Signature algorithms */\n    {NOISE_SIGN_ED25519,        \"Ed25519\",       7},\n\n    /* Terminator for the list */\n    {0,                         0,               0}\n};\n\n/** @endcond */\n\n/**\n * \\brief Maps an algorithm name to the corresponding identifier.\n *\n * \\param category The category of identifier to look for; one of\n * NOISE_CIPHER_CATEGORY, NOISE_HASH_CATEGORY, NOISE_DH_CATEGORY,\n * NOISE_PATTERN_CATEGORY, NOISE_PREFIX_CATEGORY, NOISE_SIGN_CATEGORY,\n * or zero.  Zero indicates \"any category\".\n * \\param name Points to the name to map.\n * \\param name_len Length of the \\a name in bytes.\n *\n * \\return The algorithm identifier, or zero if the name is unknown\n * in the specified \\a category.\n *\n * The \\a category parameter can be used to restrict the search to\n * algorithms of a certain type.  If the \\a name is valid for some other\n * category, that mapping will be ignored.\n *\n * \\sa noise_id_to_name()\n */\nint noise_name_to_id(int category, const char *name, size_t name_len)\n{\n    const NoiseIdMapping *mapping = algorithm_names;\n    int mask = category ? NOISE_ID(0xFF, 0) : 0;\n    if (!name)\n        return 0;\n    while (mapping->name_len) {\n        if ((mapping->id & mask) == category) {\n            if (mapping->name_len == name_len &&\n                    !memcmp(mapping->name, name, name_len)) {\n                return mapping->id;\n            }\n        }\n        ++mapping;\n    }\n    return 0;\n}\n\n/**\n * \\brief Maps an algorithm identifier to the corresponding name.\n *\n * \\param category The category of identifier to look for; one of\n * NOISE_CIPHER_CATEGORY, NOISE_HASH_CATEGORY, NOISE_DH_CATEGORY,\n * NOISE_PATTERN_CATEGORY, NOISE_PREFIX_CATEGORY, NOISE_SIGN_CATEGORY,\n * or zero.  Zero indicates \"any category\".\n * \\param id The algorithm identifier to map.\n *\n * \\return The NUL-terminated name of the algorithm, or NULL if the\n * \\a id is unknown in the specified \\a category.\n *\n * The \\a category parameter can be used to restrict the search to\n * algorithms of a certain type.  If the \\a id is valid for some other\n * category, that mapping will be ignored.\n *\n * \\sa noise_name_to_id()\n */\nconst char *noise_id_to_name(int category, int id)\n{\n    const NoiseIdMapping *mapping = algorithm_names;\n    int mask = category ? NOISE_ID(0xFF, 0) : 0;\n    if (id <= 0)\n        return 0;\n    while (mapping->name_len) {\n        if ((mapping->id & mask) == category) {\n            if (mapping->id == id)\n                return mapping->name;\n        }\n        ++mapping;\n    }\n    return 0;\n}\n\n/**\n * \\brief Parses a field from a protocol name string.\n *\n * \\param category The category of identifier that we expect in this field.\n * \\param name Points to the start of the protocol name string.\n * \\param len The total length of the protocol name string.\n * \\param posn The current position in the string, updated once the next\n * field has been parsed.\n * \\param is_last Non-zero if this is the last expected field, or zero\n * if we expect further fields to follow.\n * \\param ok Initialized to non-zero by the caller.  Will be set to zero\n * if a parse error was encountered.\n *\n * \\return The algorithm identifier for the current field, or zero\n * if the field's contents are not a recognized name for this field.\n */\nstatic int noise_protocol_parse_field\n    (int category, const char *name, size_t len, size_t *posn,\n     int is_last, int *ok)\n{\n    size_t start, field_len;\n    int id;\n\n    /* If the parse already failed, then nothing further to do */\n    if (!(*ok))\n        return 0;\n\n    /* Find the start and end of the current field */\n    start = *posn;\n    while (*posn < len && name[*posn] != '_')\n        ++(*posn);\n    field_len = *posn - start;\n\n    /* If this is the last field, we should be at the end\n       of the string.  Otherwise there should be a '_' here */\n    if (is_last) {\n        if (*posn < len) {\n            *ok = 0;\n            return 0;\n        }\n    } else {\n        if (*posn >= len) {\n            *ok = 0;\n            return 0;\n        }\n        ++(*posn);  /* Skip the '_' */\n    }\n\n    /* Look up the name in the current category */\n    id = noise_name_to_id(category, name + start, field_len);\n    if (!id)\n        *ok = 0;\n    return id;\n}\n\n/**\n * \\brief Parses a dual field from a protocol name string; \"field1+field2\"\n * or simply \"field1\".\n *\n * \\param category The category of identifier that we expect in this field.\n * \\param name Points to the start of the protocol name string.\n * \\param len The total length of the protocol name string.\n * \\param posn The current position in the string, updated once the next\n * field has been parsed.\n * \\param second_id Points to a variable to be set to the second identifier.\n * \\param ok Initialized to non-zero by the caller.  Will be set to zero\n * if a parse error was encountered.\n *\n * \\return The algorithm identifier for the first component of the\n * current field, or zero if the field's contents are not a recognized\n * dual name for this field.\n */\nstatic int noise_protocol_parse_dual_field\n    (int category, const char *name, size_t len,\n     size_t *posn, int *second_id, int *ok)\n{\n    size_t start, field_len;\n    int first_id;\n\n    /* Clear the second identifier before we start in case we don't find one */\n    *second_id = 0;\n\n    /* If the parse already failed, then nothing further to do */\n    if (!(*ok))\n        return 0;\n\n    /* Find the start and end of the current field */\n    start = *posn;\n    while (*posn < len && name[*posn] != '_' && name[*posn] != '+')\n        ++(*posn);\n    if (*posn >= len) {\n        /* Should be terminated with either '_' or '+' */\n        *ok = 0;\n        return 0;\n    }\n    field_len = *posn - start;\n\n    /* Look up the first name in the current category */\n    first_id = noise_name_to_id(category, name + start, field_len);\n    if (!first_id) {\n        *ok = 0;\n        return 0;\n    }\n\n    /* If the next character is '_', then we are finished */\n    if (name[*posn] == '_') {\n        ++(*posn);\n        return first_id;\n    }\n\n    /* Parse the rest of the field until the next '_' as the second id */\n    ++(*posn);\n    *second_id = noise_protocol_parse_field(category, name, len, posn, 0, ok);\n    if (*second_id)\n        return first_id;\n    else\n        return 0;\n}\n\n/**\n * \\brief Parses a protocol name into a set of identifiers for the\n * algorithms that are indicated by the name.\n *\n * \\param id The resulting structure to populate with identifiers.\n * \\param name Points to the start of the protocol name.\n * \\param name_len The length of the protocol name in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if either \\a id or \\a name is NULL.\n * \\return NOISE_ERROR_UNKNOWN_NAME if the protocol name could not be parsed.\n *\n * \\sa noise_protocol_id_to_name()\n */\nint noise_protocol_name_to_id\n    (NoiseProtocolId *id, const char *name, size_t name_len)\n{\n    size_t posn;\n    int ok;\n\n    /* Bail out if the parameters are incorrect */\n    if (!id || !name)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Parse underscore-separated fields from the name */\n    posn = 0;\n    ok = 1;\n    memset(id, 0, sizeof(NoiseProtocolId));\n    id->prefix_id = noise_protocol_parse_field\n        (NOISE_PREFIX_CATEGORY, name, name_len, &posn, 0, &ok);\n    id->pattern_id = noise_protocol_parse_field\n        (NOISE_PATTERN_CATEGORY, name, name_len, &posn, 0, &ok);\n    id->dh_id = noise_protocol_parse_dual_field\n        (NOISE_DH_CATEGORY, name, name_len, &posn, &(id->hybrid_id), &ok);\n    id->cipher_id = noise_protocol_parse_field\n        (NOISE_CIPHER_CATEGORY, name, name_len, &posn, 0, &ok);\n    id->hash_id = noise_protocol_parse_field\n        (NOISE_HASH_CATEGORY, name, name_len, &posn, 1, &ok);\n\n    /* If there was a parse error, then clear everything */\n    if (!ok) {\n        memset(id, 0, sizeof(NoiseProtocolId));\n        return NOISE_ERROR_UNKNOWN_NAME;\n    }\n\n    /* The name has been parsed */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Formats a field within a protocol name.\n *\n * \\param category The category of algorithm identifier in this field.\n * \\param id The identifier to format.\n * \\param name The name buffer to format the field into.\n * \\param len The length of the \\a name buffer in bytes.\n * \\param posn The current format position within the \\a name buffer.\n * \\param is_last Non-zero if this is the last field in the name,\n * or zero if this field is not the last.\n * \\param err Points to an error code.  Initialized to NOISE_ERROR_NONE\n * by the caller and updated by this function if there is an error.\n */\nstatic void noise_protocol_format_field\n    (int category, int id, char *name, size_t len, size_t *posn,\n     int is_last, int *err)\n{\n    const char *alg_name;\n    size_t alg_len;\n\n    /* If the formatting already failed, then bail out now */\n    if (*err != NOISE_ERROR_NONE)\n        return;\n\n    /* Look up the name for the algorithm identifier */\n    alg_name = noise_id_to_name(category, id);\n    if (!alg_name) {\n        *err = NOISE_ERROR_UNKNOWN_ID;\n        return;\n    }\n    alg_len = strlen(alg_name);\n\n    /* Will the name fit into the buffer, followed by either '_' or '\\0'? */\n    if (alg_len >= (len - *posn)) {\n        *err = NOISE_ERROR_INVALID_LENGTH;\n        return;\n    }\n    memcpy(name + *posn, alg_name, alg_len);\n    *posn += alg_len;\n\n    /* Add either a separator or a terminator */\n    if (!is_last)\n        name[(*posn)++] = '_';\n    else\n        name[*posn] = '\\0';\n}\n\n/**\n * \\brief Formats a protocol name from a set of identifiers for\n * the algorithms that make up the name.\n *\n * \\param name The buffer to write the protocol name to.\n * \\param name_len The number of bytes of space in the \\a name buffer.\n * \\param id The set of identifiers to format.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if either \\a name or \\a id is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if the \\a name buffer is not large\n * enough to contain the full name.\n * \\return NOISE_ERROR_UNKNOWN_ID if one of the identifiers in \\a id does\n * not have a known mapping to a name.\n *\n * This function guarantees to NUL-terminate the \\a name if\n * the function succeeds.\n *\n * It is recommended that \\a name_len be at least NOISE_MAX_PROTOCOL_NAME\n * bytes in length.\n *\n * \\sa noise_protocol_name_to_id()\n */\nint noise_protocol_id_to_name\n    (char *name, size_t name_len, const NoiseProtocolId *id)\n{\n    size_t posn;\n    int err;\n\n    /* Bail out if the parameters are incorrect */\n    if (!id) {\n        if (name && name_len)\n            *name = '\\0';   /* Just to be safe */\n        return NOISE_ERROR_INVALID_PARAM;\n    }\n    if (!name)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!name_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Format the fields into the return buffer */\n    posn = 0;\n    err = NOISE_ERROR_NONE;\n    noise_protocol_format_field\n        (NOISE_PREFIX_CATEGORY, id->prefix_id, name, name_len, &posn, 0, &err);\n    noise_protocol_format_field\n        (NOISE_PATTERN_CATEGORY, id->pattern_id, name, name_len, &posn, 0, &err);\n    if (!id->hybrid_id) {\n        noise_protocol_format_field\n            (NOISE_DH_CATEGORY, id->dh_id, name, name_len, &posn, 0, &err);\n    } else {\n        /* Format the DH names as \"dh_id+hybrid_id\"; e.g. \"25519+NewHope\" */\n        noise_protocol_format_field\n            (NOISE_DH_CATEGORY, id->dh_id, name, name_len, &posn, 1, &err);\n        if (err == NOISE_ERROR_NONE) {\n            if ((posn + 1) < name_len)\n                name[posn++] = '+';\n            else\n                err = NOISE_ERROR_INVALID_LENGTH;\n        }\n        noise_protocol_format_field\n            (NOISE_DH_CATEGORY, id->hybrid_id, name, name_len, &posn, 0, &err);\n    }\n    noise_protocol_format_field\n        (NOISE_CIPHER_CATEGORY, id->cipher_id, name, name_len, &posn, 0, &err);\n    noise_protocol_format_field\n        (NOISE_HASH_CATEGORY, id->hash_id, name, name_len, &posn, 1, &err);\n\n    /* The reserved identifiers must be zero.  We don't know how to\n       format reserved identifiers other than zero */\n    for (posn = 0; posn < (sizeof(id->reserved) / sizeof(id->reserved[0])) &&\n                   err == NOISE_ERROR_NONE; ++posn) {\n        if (id->reserved[posn] != 0)\n            err = NOISE_ERROR_UNKNOWN_ID;\n    }\n\n    /* If an error occurred, then clear the buffer just to be safe */\n    if (err != NOISE_ERROR_NONE)\n        *name = '\\0';\n\n    /* Done */\n    return err;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/patterns.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n\n/**\n * \\file patterns.c\n * \\brief Defines the handshake message patterns.\n */\n\n/** @cond */\n#define FLAGS(x)    ((uint8_t)((x) & 0xFF)), ((uint8_t)(((x) >> 8) & 0xFF))\n/** @endcond */\n\n/**\n * \\brief Token sequence for handshake pattern \"N\".\n *\n * @code\n * Noise_N(rs):\n *   <- s\n *   ...\n *   -> e, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_N[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"K\".\n *\n * @code\n * Noise_K(s, rs):\n *   -> s\n *   <- s\n *   ...\n *   -> e, es, ss\n * @endcode\n */\nstatic uint8_t const noise_pattern_K[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"X\".\n *\n * @code\n * Noise_X(s, rs):\n *   <- s\n *   ...\n *   -> e, es, s, ss\n * @endcode\n */\nstatic uint8_t const noise_pattern_X[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NN\".\n *\n * @code\n * Noise_NN():\n *   -> e\n *   <- e, ee\n * @endcode\n */\nstatic uint8_t const noise_pattern_NN[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NK\".\n *\n * @code\n * Noise_NK(rs):\n *   <- s\n *   ...\n *   -> e, es\n *   <- e, ee\n * @endcode\n */\nstatic uint8_t const noise_pattern_NK[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NX\".\n *\n * @code\n * Noise_NX(rs):\n *   -> e\n *   <- e, ee, s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_NX[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XN\".\n *\n * @code\n * Noise_XN(s):\n *   -> e\n *   <- e, ee\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XN[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XK\".\n *\n * @code\n * Noise_XK(s, rs):\n *   <- s\n *   ...\n *   -> e, es\n *   <- e, ee\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XK[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XX\".\n *\n * @code\n * Noise_XX(s, rs):\n *   -> e\n *   <- e, ee, s, es\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XX[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KN\".\n *\n * @code\n * Noise_KN(s):\n *   -> s\n *   ...\n *   -> e\n *   <- e, ee, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_KN[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KK\".\n *\n * @code\n * Noise_KK(s, rs):\n *   -> s\n *   <- s\n *   ...\n *   -> e, es, ss\n *   <- e, ee, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_KK[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KX\".\n *\n * @code\n * Noise_KX(s, rs):\n *   -> s\n *   ...\n *   -> e\n *   <- e, ee, se, s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_KX[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IN\".\n *\n * @code\n * Noise_IN(s):\n *   -> e, s\n *   <- e, ee, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_IN[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IK\".\n *\n * @code\n * Noise_IK(s, rs):\n *   <- s\n *   ...\n *   -> e, es, s, ss\n *   <- e, ee, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_IK[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IX\".\n *\n * @code\n * Noise_IX(s, rs):\n *   -> e, s\n *   <- e, ee, se, s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_IX[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XXfallback\".\n *\n * @code\n * Noise_XXfallback(s, rs, re):\n *   <- e\n *   ...\n *   -> e, ee, s, se\n *   <- s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_XXfallback[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_EPHEM_REQ\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"Xnoidh\".\n *\n * @code\n * Noise_Xnoidh(s, rs):\n *   <- s\n *   ...\n *   -> e, s, es, ss\n * @endcode\n */\nstatic uint8_t const noise_pattern_Xnoidh[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NXnoidh\".\n *\n * @code\n * Noise_NXnoidh(rs):\n *   -> e\n *   <- e, s, ee, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_NXnoidh[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XXnoidh\".\n *\n * @code\n * Noise_XXnoidh(s, rs):\n *   -> e\n *   <- e, s, ee, es\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XXnoidh[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KXnoidh\".\n *\n * @code\n * Noise_KXnoidh(s, rs):\n *   -> s\n *   ...\n *   -> e\n *   <- e, s, ee, se, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_KXnoidh[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IKnoidh\".\n *\n * @code\n * Noise_IKnoidh(s, rs):\n *   <- s\n *   ...\n *   -> e, s, es, ss\n *   <- e, ee, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_IKnoidh[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IXnoidh\".\n *\n * @code\n * Noise_IXnoidh(s, rs):\n *   -> e, s\n *   <- e, s, ee, se, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_IXnoidh[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NNhfs\".\n *\n * @code\n * Noise_NNhfs():\n *   -> e, f\n *   <- e, f, ee, ff\n * @endcode\n */\nstatic uint8_t const noise_pattern_NNhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NKhfs\".\n *\n * @code\n * Noise_NKhfs(rs):\n *   <- s\n *   ...\n *   -> e, f, es\n *   <- e, f, ee, ff\n * @endcode\n */\nstatic uint8_t const noise_pattern_NKhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NXhfs\".\n *\n * @code\n * Noise_NXhfs(rs):\n *   -> e, f\n *   <- e, f, ee, ff, s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_NXhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XNhfs\".\n *\n * @code\n * Noise_XNhfs(s):\n *   -> e, f\n *   <- e, f, ee, ff\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XNhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XKhfs\".\n *\n * @code\n * Noise_XKhfs(s, rs):\n *   <- s\n *   ...\n *   -> e, f, es\n *   <- e, f, ee, ff\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XKhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XXhfs\".\n *\n * @code\n * Noise_XXhfs(s, rs):\n *   -> e, f\n *   <- e, f, ee, ff, s, es\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XXhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KNhfs\".\n *\n * @code\n * Noise_KNhfs(s):\n *   -> s\n *   ...\n *   -> e, f\n *   <- e, f, ee, ff, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_KNhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KKhfs\".\n *\n * @code\n * Noise_KKhfs(s, rs):\n *   -> s\n *   <- s\n *   ...\n *   -> e, f, es, ss\n *   <- e, f, ee, ff, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_KKhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KXhfs\".\n *\n * @code\n * Noise_KXhfs(s, rs):\n *   -> s\n *   ...\n *   -> e, f\n *   <- e, f, ee, ff, se, s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_KXhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"INhfs\".\n *\n * @code\n * Noise_INhfs(s):\n *   -> e, f, s\n *   <- e, f, ee, ff, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_INhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IKhfs\".\n *\n * @code\n * Noise_IKhfs(s, rs):\n *   <- s\n *   ...\n *   -> e, f, es, s, ss\n *   <- e, f, ee, ff, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_IKhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IXhfs\".\n *\n * @code\n * Noise_IXhfs(s, rs):\n *   -> e, f, s\n *   <- e, f, ee, ff, se, s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_IXhfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XXfallback+hfs\".\n *\n * @code\n * Noise_XXfallback+hfs(s, rs, re):\n *   <- e, f\n *   ...\n *   -> e, f, ee, ff, s, se\n *   <- s, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_XXfallback_hfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_EPHEM_REQ |\n    NOISE_PAT_FLAG_REMOTE_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_HYBRID_REQ\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"NXnoidh+hfs\".\n *\n * @code\n * Noise_NXnoidh+hfs(rs):\n *   -> e, f\n *   <- e, f, s, ee, ff, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_NXnoidh_hfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"XXnoidh+hfs\".\n *\n * @code\n * Noise_XXnoidh+hfs(s, rs):\n *   -> e, f\n *   <- e, f, s, ee, ff, es\n *   -> s, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_XXnoidh_hfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"KXnoidh+hfs\".\n *\n * @code\n * Noise_KXnoidh+hfs(s, rs):\n *   -> s\n *   ...\n *   -> e, f\n *   <- e, f, s, ee, ff, se, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_KXnoidh_hfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_REQUIRED |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IKnoidh+hfs\".\n *\n * @code\n * Noise_IKnoidh+hfs(s, rs):\n *   <- s\n *   ...\n *   -> e, f, s, es, ss\n *   <- e, f, ee, ff, se\n * @endcode\n */\nstatic uint8_t const noise_pattern_IKnoidh_hfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_REQUIRED |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_SS,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Token sequence for handshake pattern \"IXnoidh+hfs\".\n *\n * @code\n * Noise_IXnoidh+hfs(s, rs):\n *   -> e, f, s\n *   <- e, f, s, ee, ff, se, es\n * @endcode\n */\nstatic uint8_t const noise_pattern_IXnoidh_hfs[] = {\n    FLAGS(\n    NOISE_PAT_FLAG_LOCAL_STATIC |\n    NOISE_PAT_FLAG_LOCAL_EPHEMERAL |\n    NOISE_PAT_FLAG_LOCAL_HYBRID |\n    NOISE_PAT_FLAG_REMOTE_STATIC |\n    NOISE_PAT_FLAG_REMOTE_EPHEMERAL |\n    NOISE_PAT_FLAG_REMOTE_HYBRID\n    ),\n\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_FLIP_DIR,\n    NOISE_TOKEN_E,\n    NOISE_TOKEN_F,\n    NOISE_TOKEN_S,\n    NOISE_TOKEN_EE,\n    NOISE_TOKEN_FF,\n    NOISE_TOKEN_SE,\n    NOISE_TOKEN_ES,\n    NOISE_TOKEN_END\n};\n\n/**\n * \\brief Looks up a specific handshake pattern.\n *\n * \\param id The identifier for the handshake pattern.\n *\n * \\return A pointer to the pattern or NULL if \\a id is unknown.\n *\n * The first byte of the returned pattern contains the pattern flags.\n * The remaining bytes are the token for the pattern, terminated by\n * NOISE_TOKEN_END.\n */\nconst uint8_t *noise_pattern_lookup(int id)\n{\n    switch (id) {\n    case NOISE_PATTERN_N:               return noise_pattern_N;\n    case NOISE_PATTERN_K:               return noise_pattern_K;\n    case NOISE_PATTERN_X:               return noise_pattern_X;\n    case NOISE_PATTERN_NN:              return noise_pattern_NN;\n    case NOISE_PATTERN_NK:              return noise_pattern_NK;\n    case NOISE_PATTERN_NX:              return noise_pattern_NX;\n    case NOISE_PATTERN_XN:              return noise_pattern_XN;\n    case NOISE_PATTERN_XK:              return noise_pattern_XK;\n    case NOISE_PATTERN_XX:              return noise_pattern_XX;\n    case NOISE_PATTERN_KN:              return noise_pattern_KN;\n    case NOISE_PATTERN_KK:              return noise_pattern_KK;\n    case NOISE_PATTERN_KX:              return noise_pattern_KX;\n    case NOISE_PATTERN_IN:              return noise_pattern_IN;\n    case NOISE_PATTERN_IK:              return noise_pattern_IK;\n    case NOISE_PATTERN_IX:              return noise_pattern_IX;\n    case NOISE_PATTERN_XX_FALLBACK:     return noise_pattern_XXfallback;\n    case NOISE_PATTERN_X_NOIDH:         return noise_pattern_Xnoidh;\n    case NOISE_PATTERN_NX_NOIDH:        return noise_pattern_NXnoidh;\n    case NOISE_PATTERN_XX_NOIDH:        return noise_pattern_XXnoidh;\n    case NOISE_PATTERN_KX_NOIDH:        return noise_pattern_KXnoidh;\n    case NOISE_PATTERN_IK_NOIDH:        return noise_pattern_IKnoidh;\n    case NOISE_PATTERN_IX_NOIDH:        return noise_pattern_IXnoidh;\n    case NOISE_PATTERN_NN_HFS:          return noise_pattern_NNhfs;\n    case NOISE_PATTERN_NK_HFS:          return noise_pattern_NKhfs;\n    case NOISE_PATTERN_NX_HFS:          return noise_pattern_NXhfs;\n    case NOISE_PATTERN_XN_HFS:          return noise_pattern_XNhfs;\n    case NOISE_PATTERN_XK_HFS:          return noise_pattern_XKhfs;\n    case NOISE_PATTERN_XX_HFS:          return noise_pattern_XXhfs;\n    case NOISE_PATTERN_KN_HFS:          return noise_pattern_KNhfs;\n    case NOISE_PATTERN_KK_HFS:          return noise_pattern_KKhfs;\n    case NOISE_PATTERN_KX_HFS:          return noise_pattern_KXhfs;\n    case NOISE_PATTERN_IN_HFS:          return noise_pattern_INhfs;\n    case NOISE_PATTERN_IK_HFS:          return noise_pattern_IKhfs;\n    case NOISE_PATTERN_IX_HFS:          return noise_pattern_IXhfs;\n    case NOISE_PATTERN_XX_FALLBACK_HFS: return noise_pattern_XXfallback_hfs;\n    case NOISE_PATTERN_NX_NOIDH_HFS:    return noise_pattern_NXnoidh_hfs;\n    case NOISE_PATTERN_XX_NOIDH_HFS:    return noise_pattern_XXnoidh_hfs;\n    case NOISE_PATTERN_KX_NOIDH_HFS:    return noise_pattern_KXnoidh_hfs;\n    case NOISE_PATTERN_IK_NOIDH_HFS:    return noise_pattern_IKnoidh_hfs;\n    case NOISE_PATTERN_IX_NOIDH_HFS:    return noise_pattern_IXnoidh_hfs;\n    default:                            return 0;\n    }\n}\n\n/**\n * \\brief Reverses the local and remote flags for a pattern.\n *\n * \\param flags The flags, assuming that the initiator is \"local\".\n * \\return The reversed flags, with the responder now being \"local\".\n */\nNoisePatternFlags_t noise_pattern_reverse_flags(NoisePatternFlags_t flags)\n{\n    return ((flags >> 8) & 0x00FF) | ((flags << 8) & 0xFF00);\n}\n"
  },
  {
    "path": "src/protocol/rand_os.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/* This module gets random entropy from the operating system.  The code\n   here is very platform and OS dependent and will probably need work to\n   port it to new platforms. */\n\n#include \"internal.h\"\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#if defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN32__)\n#include <windows.h>\n#include <wincrypt.h>\n#else\n#include <unistd.h>\n#include <fcntl.h>\n#include <errno.h>\n#endif\n\n/**\n * \\file rand_os.c\n * \\brief Access to the system random number generator.\n *\n * This module provides access to the system random number generator for\n * obtaining random data to generate ephemeral keys during a session\n * and static keys for permanent storage.\n *\n * This module will require modification when porting to new systems.\n */\n\n#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__APPLE__)\n#define RANDOM_DEVICE   \"/dev/urandom\"\n#endif\n#if defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN32__)\n#define RANDOM_WIN32    1\n#endif\n\n/**\n * \\brief Gets cryptographically-strong random bytes from the operating system.\n *\n * \\param bytes The buffer to fill with random bytes.\n * \\param size The number of random bytes to obtain.\n *\n * This function should not block waiting for entropy.\n *\n * \\note Not part of the public API.\n */\nvoid noise_rand_bytes(void *bytes, size_t size)\n{\n#if defined(RANDOM_DEVICE)\n    int fd = open(RANDOM_DEVICE, O_RDONLY);\n    if (fd >= 0) {\n        for (;;) {\n            int len = read(fd, bytes, size);\n            if (len == (int)size) {\n                /* We have the bytes we wanted */\n                close(fd);\n                return;\n            } else if (len >= 0) {\n                /* Short read - this shouldn't happen.  Treat it as \"no data\" */\n                break;\n            } else if (errno != EINTR) {\n                /* Some other error than \"interrupted due to signal\" */\n                perror(RANDOM_DEVICE);\n                break;\n            }\n        }\n        close(fd);\n    } else {\n        perror(RANDOM_DEVICE);\n    }\n#elif defined(RANDOM_WIN32)\n    /* http://msdn.microsoft.com/en-us/library/windows/desktop/aa379942(v=vs.85).aspx */\n    HCRYPTPROV provider = 0;\n    memset(bytes, 0, size);\n    if (CryptAcquireContextW(&provider, 0, 0, PROV_RSA_FULL,\n                             CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) {\n        CryptGenRandom(provider, size, bytes);\n        CryptReleaseContext(provider, 0);\n        return;\n    }\n#endif\n    fprintf(stderr, \"Do not know how to generate random numbers!  Abort!\\n\");\n    exit(1);\n}\n\n#ifdef ED25519_CUSTOMRANDOM\n\n/* We are building against ed25519-donna, which needs a random function */\n\nvoid ed25519_randombytes_unsafe(void *p, size_t len)\n{\n    noise_rand_bytes(p, len);\n}\n\n#endif\n"
  },
  {
    "path": "src/protocol/rand_sodium.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#if USE_LIBSODIUM\n#include <sodium.h>\n\n/**\n * \\file rand_sodium.c\n * \\brief Generate random bytes using libsodium\n */\n\n/**\n * \\brief Gets cryptographically-strong random bytes from the operating system.\n *\n * \\param bytes The buffer to fill with random bytes.\n * \\param size The number of random bytes to obtain.\n *\n * This function should not block waiting for entropy.\n *\n * \\note Not part of the public API.\n */\nvoid noise_rand_bytes(void *bytes, size_t size)\n{\n    randombytes_buf(bytes, size);\n}\n\n\n#endif\n"
  },
  {
    "path": "src/protocol/randstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#if USE_LIBSODIUM\n#include <sodium.h>\n#else\n#include \"crypto/chacha/chacha.h\"\n#endif\n#include <string.h>\n\n/**\n * \\file randstate.h\n * \\brief RandState interface\n */\n\n/**\n * \\file randstate.c\n * \\brief RandState implementation\n */\n\n/**\n * \\defgroup randstate RandState API\n *\n * The RandState API is provided as a convenience for applications that\n * need to generate extra random data during the course of a higher-level\n * protocol that runs over the Noise protocol.\n *\n * One use for random data is to pad message payloads to a uniform\n * length prior to encryption.  The noise_randstate_pad() function\n * provides a convenient method to do this.\n */\n/**@{*/\n\n/**\n * \\typedef NoiseRandState\n * \\brief Opaque object that represents a random number generator.\n */\n\n/* The random number generator here is inspired by the\n * ChaCha20 version of arc4random() from OpenBSD. */\n\n/** @cond */\n\n/**\n * \\brief State information for random number generators.\n */\nstruct NoiseRandState_s\n{\n    /** \\brief Total size of the structure */\n    size_t size;\n\n    /** \\brief Number of bytes left until the next reseed */\n    size_t left;\n\n    /** \\brief ChaCha20 state for the random number generator */\n#if USE_LIBSODIUM\n    uint8_t chacha_k[crypto_stream_chacha20_KEYBYTES];\n    uint8_t chacha_n[crypto_stream_chacha20_IETF_NONCEBYTES];\n#else\n    chacha_ctx chacha;\n#endif\n};\n\n/** Number of bytes to generate before forcing a reseed */\n#define NOISE_RAND_RESEED_COUNT 1600000\n\n/** Force a rekey after this many blocks */\n#define NOISE_RAND_REKEY_COUNT  16\n\n/* Starting key for the random state before the first reseed.\n   This is the SHA256 initialization vector, to introduce a\n   little chaos into the starting state. */\nstatic uint8_t const starting_key[32] = {\n      0x6A, 0x09, 0xE6, 0x67, 0xBB, 0x67, 0xAE, 0x85,\n      0x3C, 0x6E, 0xF3, 0x72, 0xA5, 0x4F, 0xF5, 0x3A,\n      0x51, 0x0E, 0x52, 0x7F, 0x9B, 0x05, 0x68, 0x8C,\n      0x1F, 0x83, 0xD9, 0xAB, 0x5B, 0xE0, 0xCD, 0x19\n};\n\n/** @endcond */\n\n/**\n * \\brief Creates a new random number generator.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new RandState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new RandState object.\n *\n * \\sa noise_randstate_free(), noise_randstate_generate()\n */\nint noise_randstate_new(NoiseRandState **state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Create the random number generator state */\n    *state = noise_new(NoiseRandState);\n    if (!(*state))\n        return NOISE_ERROR_NO_MEMORY;\n\n    /* Initialize the random number generator */\n#if USE_LIBSODIUM\n    memcpy((*state)->chacha_k, starting_key, crypto_stream_chacha20_KEYBYTES);\n    memset((*state)->chacha_n, 0, crypto_stream_chacha20_IETF_NONCEBYTES);\n#else\n    chacha_keysetup(&((*state)->chacha), starting_key, 256);\n#endif\n    noise_randstate_reseed((*state));\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Frees a RandState object after destroying all sensitive material.\n *\n * \\param state The RandState object to free.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_randstate_new()\n */\nint noise_randstate_free(NoiseRandState *state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Clean and free the memory */\n    noise_free(state, state->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Reseeds the random number generator from operating system entropy.\n *\n * \\param state The RandState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * This function forces the random number generator to fetch fresh entropy\n * from the operating system.  Normally this isn't necessary because\n * noise_randstate_generate() will reseed automatically when necessary.\n *\n * If the application needs to generate a highly critical value such as a\n * new keypair then it may want to force a reseed.  Even this isn't necessary\n * for \\ref dhstate \"DHState\" and \\ref signstate \"SignState\" which already\n * seek fresh operating system entropy when generating keypairs.\n *\n * \\sa noise_randstate_generate()\n */\nint noise_randstate_reseed(NoiseRandState *state)\n{\n#if USE_LIBSODIUM\n    uint8_t data[crypto_stream_chacha20_KEYBYTES + crypto_stream_chacha20_IETF_NONCEBYTES];\n#else\n    uint8_t data[40];\n#endif\n\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Get new random data from the operating system, encrypt it\n       with the previous key/IV, and then replace the key/IV */\n    noise_rand_bytes(data, sizeof(data));\n#if USE_LIBSODIUM\n    crypto_stream_chacha20_ietf_xor(data, data, sizeof(data), state->chacha_n, state->chacha_k);\n    memcpy(state->chacha_k, data, crypto_stream_chacha20_KEYBYTES);\n    memcpy(state->chacha_n, data + crypto_stream_chacha20_KEYBYTES, crypto_stream_chacha20_IETF_NONCEBYTES);\n#else\n    chacha_encrypt_bytes(&(state->chacha), data, data, sizeof(data));\n    chacha_keysetup(&(state->chacha), data, 256);\n    chacha_ivsetup(&(state->chacha), data + 32, 0);\n#endif\n    state->left = NOISE_RAND_RESEED_COUNT;\n\n    /* And force a rekey as well for good measure */\n    memset(data, 0, sizeof(data));\n#if USE_LIBSODIUM\n    crypto_stream_chacha20_ietf_xor(data, data, sizeof(data), state->chacha_n, state->chacha_k);\n    memcpy(state->chacha_k, data, crypto_stream_chacha20_KEYBYTES);\n    memcpy(state->chacha_n, data + crypto_stream_chacha20_KEYBYTES, crypto_stream_chacha20_IETF_NONCEBYTES);\n#else\n    chacha_encrypt_bytes(&(state->chacha), data, data, sizeof(data));\n    chacha_keysetup(&(state->chacha), data, 256);\n    chacha_ivsetup(&(state->chacha), data + 32, 0);\n#endif\n    noise_clean(data, sizeof(data));\n\n    /* Ready to go */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Forces a rekey on the random number generator.\n *\n * \\param state The state of the random number generator.\n */\nstatic void noise_randstate_rekey(NoiseRandState *state)\n{\n#if USE_LIBSODIUM\n    uint8_t data[crypto_stream_chacha20_KEYBYTES + crypto_stream_chacha20_IETF_NONCEBYTES];\n#else\n    uint8_t data[40];\n#endif\n    memset(data, 0, sizeof(data));\n#if USE_LIBSODIUM\n    crypto_stream_chacha20_ietf_xor(data, data, sizeof(data), state->chacha_n, state->chacha_k);\n    memcpy(state->chacha_k, data, crypto_stream_chacha20_KEYBYTES);\n    memcpy(state->chacha_n, data + crypto_stream_chacha20_KEYBYTES, crypto_stream_chacha20_IETF_NONCEBYTES);\n#else\n    chacha_encrypt_bytes(&(state->chacha), data, data, sizeof(data));\n    chacha_keysetup(&(state->chacha), data, 256);\n    chacha_ivsetup(&(state->chacha), data + 32, 0);\n#endif\n    noise_clean(data, sizeof(data));\n}\n\n/**\n * \\brief Generates random bytes for use by the application.\n *\n * \\param state The RandState object.\n * \\param buffer The buffer to fill with random bytes.\n * \\param len The number of random bytes to generate.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n *\n * This function will periodically reseed the random number generator\n * from operating system entropy.  The application can force a reseed\n * at any time by calling noise_randstate_reseed(), but it is usually\n * better to let the RandState API decide when to reseed on its own.\n *\n * \\sa noise_randstate_pad(), noise_randstate_reseed(),\n * noise_randstate_generate_simple()\n */\nint noise_randstate_generate\n    (NoiseRandState *state, uint8_t *buffer, size_t len)\n{\n    size_t blocks;\n    size_t temp_len;\n\n    /* Validate the parameters.  We make sure to set the contents of\n       the buffer to zero before proceeding just in case this function\n       bails out before it can actually generate data.  We don't want\n       to accidentally leak the previous contents in the buffer. */\n    if (!buffer)\n        return NOISE_ERROR_INVALID_PARAM;\n    memset(buffer, 0, len);\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Force a reseed if necessary */\n    if (state->left < len)\n        noise_randstate_reseed(state);\n\n    /* Generate the random data in ChaCha20 block-sized chunks */\n    blocks = 0;\n    while (len > 0) {\n        temp_len = len;\n        if (temp_len > 64)\n            temp_len = 64;\n        if (state->left >= 64) {\n            /* One less block before we need to force a reseed */\n            state->left -= 64;\n        } else {\n            /* Too much random data generated.  Force a reseed now */\n            noise_randstate_reseed(state);\n            blocks = 0;\n        }\n        if (blocks++ >= NOISE_RAND_REKEY_COUNT) {\n            /* Too many blocks in the current request.  Force a rekey now */\n            noise_randstate_rekey(state);\n            blocks = 0;\n        }\n#if USE_LIBSODIUM\n        crypto_stream_chacha20_ietf_xor_ic(buffer, buffer, temp_len, state->chacha_n, blocks + 1, state->chacha_k);\n#else\n        chacha_encrypt_bytes(&(state->chacha), buffer, buffer, temp_len);\n#endif\n        buffer += temp_len;\n        len -= temp_len;\n    }\n\n    /* Force a rekey after every request to destroy the input that\n       was used to generate the random data for this request.\n       This prevents the state from being rolled backwards. */\n    noise_randstate_rekey(state);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Adds padding bytes to the end of a message payload.\n *\n * \\param state The RandState object.\n * \\param payload Points to the original message payload to be padded,\n * which must be large enough to hold the maximum of \\a orig_len\n * or \\a padded_len.\n * \\param orig_len The original length of the payload before padding.\n * \\param padded_len The new length of the payload, including the\n * original data and padding.\n * \\param padding_mode The padding mode to use, NOISE_PADDING_ZERO or\n * NOISE_PADDING_RANDOM.  If the padding mode is unknown, then\n * NOISE_PADDING_RANDOM will be used instead.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a payload is NULL.\n *\n * This function is intended for padding message payloads prior to them\n * being encrypted with noise_handshakestate_write_message() or\n * noise_cipherstate_encrypt_with_ad().  If the \\a padding_mode is\n * NOISE_PADDING_RANDOM, then the random bytes are generated using\n * noise_randstate_generate().\n *\n * The number of padding bytes added will be \\a padded_len - \\a orig_len.\n * If \\a padded_len is less than or equal to \\a orig_len, then no padding\n * bytes will be added.  Essentially, this function pads the payload to a\n * minimum length.  Larger payloads are transmitted as-is.\n *\n * \\sa noise_cipherstate_rand_bytes()\n */\nint noise_randstate_pad\n    (NoiseRandState *state, uint8_t *payload, size_t orig_len,\n     size_t padded_len, int padding_mode)\n{\n    /* Validate the parameters */\n    if (!payload)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!state) {\n        /* Zero the padding region just in case so that we don't accidentally\n           leak the previous contents of the payload's padding region. */\n        if (padded_len > orig_len)\n            memset(payload + orig_len, 0, padded_len - orig_len);\n        return NOISE_ERROR_INVALID_PARAM;\n    }\n\n    /* Nothing to do if the new length is shorter than the original */\n    if (padded_len <= orig_len)\n        return NOISE_ERROR_NONE;\n\n    /* Pad the payload as requested */\n    if (padding_mode == NOISE_PADDING_ZERO) {\n        memset(payload + orig_len, 0, padded_len - orig_len);\n        return NOISE_ERROR_NONE;\n    } else {\n        return noise_randstate_generate\n            (state, payload + orig_len, padded_len - orig_len);\n    }\n}\n\n/**\n * \\brief Generates random data without first creating a RandState object.\n *\n * \\param buffer The buffer to fill with random bytes.\n * \\param len The number of random bytes to generate.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a buffer is NULL.\n *\n * This function is provided for the convenience of applications that only\n * need to generate a small amount of random data.\n *\n * \\sa noise_randstate_generate()\n */\nint noise_randstate_generate_simple(uint8_t *buffer, size_t len)\n{\n    NoiseRandState state;\n\n    /* Validate the parameters */\n    if (!buffer)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Initialize the random number generator on the stack */\n    memset(&state, 0, sizeof(state));\n#if USE_LIBSODIUM\n    memcpy(state.chacha_k, starting_key, crypto_stream_chacha20_KEYBYTES);\n    memset(state.chacha_n, 0, crypto_stream_chacha20_IETF_NONCEBYTES);\n#else\n    chacha_keysetup(&(state.chacha), starting_key, 256);\n#endif\n    noise_randstate_reseed(&state);\n\n    /* Generate the required data */\n    noise_randstate_generate(&state, buffer, len);\n\n    /* Clean up the random number generator on the stack */\n    noise_clean(&state, sizeof(state));\n    return NOISE_ERROR_NONE;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/signstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <string.h>\n\n/**\n * \\file signstate.h\n * \\brief SignState interface\n */\n\n/**\n * \\file signstate.c\n * \\brief SignState implementation\n */\n\n/**\n * \\defgroup signstate SignState API\n *\n * SignState objects are used to store the keypairs for the local party or\n * the public keys for remote parties.  Once the keys have been set,\n * noise_signstate_sign() can be used to create a digital signature with a\n * keypair, or noise_signstate_verify() can be used to verify a digital\n * signature with a public key.\n */\n/**@{*/\n\n/**\n * \\typedef NoiseSignState\n * \\brief Opaque object that represents a SignState.\n */\n\n/**\n * \\brief Creates a new SignState object by its algorithm identifier.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new SignState object.\n * \\param id The algorithm identifier; e.g. NOISE_SIGN_ED5519.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_UNKNOWN_ID if \\a id is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new SignState object.\n *\n * \\sa noise_signstate_free(), noise_signstate_new_by_name()\n */\nint noise_signstate_new_by_id(NoiseSignState **state, int id)\n{\n    /* The \"state\" argument must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Create the SignState object for the \"id\" */\n    *state = 0;\n    switch (id) {\n    case NOISE_SIGN_ED25519:\n        *state = noise_ed25519_new();\n        break;\n\n    default:\n        return NOISE_ERROR_UNKNOWN_ID;\n    }\n\n    /* Bail out if insufficient memory */\n    if (!(*state))\n        return NOISE_ERROR_NO_MEMORY;\n\n    /* Ready to go */\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Creates a new SignState object by its algorithm name.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new SignState object.\n * \\param name The name of the digital signature algorithm; e.g. \"Ed25519\".\n * This string must be NUL-terminated.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a name is NULL.\n * \\return NOISE_ERROR_UNKNOWN_NAME if \\a name is unknown.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new SignState object.\n *\n * \\sa noise_signstate_free(), noise_signstate_new_by_id()\n */\nint noise_signstate_new_by_name(NoiseSignState **state, const char *name)\n{\n    int id;\n\n    /* The \"state\" and \"name\" arguments must be non-NULL */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!name)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Map the name and create the corresponding object */\n    id = noise_name_to_id(NOISE_SIGN_CATEGORY, name, strlen(name));\n    if (id)\n        return noise_signstate_new_by_id(state, id);\n\n    /* We don't know what this is */\n    return NOISE_ERROR_UNKNOWN_NAME;\n}\n\n/**\n * \\brief Frees a SignState object after destroying all sensitive material.\n *\n * \\param state The SignState object to free.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_signstate_new_by_id(), noise_signstate_new_by_name()\n */\nint noise_signstate_free(NoiseSignState *state)\n{\n    /* Bail out if no sign state */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Call the backend-specific destroy function if necessary */\n    if (state->destroy)\n        (*(state->destroy))(state);\n\n    /* Clean and free the memory */\n    noise_free(state, state->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the algorithm identifier for a SignState object.\n *\n * \\param state The SignState object.\n *\n * \\return The algorithm identifier, or NOISE_SIGN_NONE if \\a state is NULL.\n */\nint noise_signstate_get_sign_id(const NoiseSignState *state)\n{\n    return state ? state->sign_id : NOISE_SIGN_NONE;\n}\n\n/**\n * \\brief Gets the length of the public key for a SignState object.\n *\n * \\param state The SignState object.\n *\n * \\return The size of the public key in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_signstate_get_private_key_length(),\n * noise_signstate_get_signature_length()\n */\nsize_t noise_signstate_get_public_key_length(const NoiseSignState *state)\n{\n    return state ? state->public_key_len : 0;\n}\n\n/**\n * \\brief Gets the length of the private key for a SignState object.\n *\n * \\param state The SignState object.\n *\n * \\return The size of the private key in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_signstate_get_public_key_length(),\n * noise_signstate_get_signature_length()\n */\nsize_t noise_signstate_get_private_key_length(const NoiseSignState *state)\n{\n    return state ? state->private_key_len : 0;\n}\n\n/**\n * \\brief Gets the length of the signature for a SignState object.\n *\n * \\param state The SignState object.\n *\n * \\return The size of the signature in bytes, or 0 if \\a state is NULL.\n *\n * \\sa noise_signstate_get_public_key_length(),\n * noise_signstate_get_private_key_length()\n */\nsize_t noise_signstate_get_signature_length(const NoiseSignState *state)\n{\n    return state ? state->signature_len : 0;\n}\n\n/**\n * \\brief Determine if a SignState object contains a keypair.\n *\n * \\param state The SignState object.\n *\n * \\return Returns 1 if \\a state contains both a private key and a\n * public key.  Returns 0 if \\a state is NULL or it only contains a\n * public key.\n *\n * \\sa noise_signstate_set_keypair(), noise_signstate_has_public_key(),\n * noise_signstate_clear_key()\n */\nint noise_signstate_has_keypair(const NoiseSignState *state)\n{\n    if (state)\n        return state->key_type == NOISE_KEY_TYPE_KEYPAIR;\n    else\n        return 0;\n}\n\n/**\n * \\brief Determine if a SignState object contains a public key.\n *\n * \\param state The SignState object.\n *\n * \\return Returns 1 if \\a state contains a public key (and optionally a\n * private key).  Returns 0 if \\a state is NULL or it does not contain a\n * public key.\n *\n * \\sa noise_signstate_set_keypair(), noise_signstate_has_public_key(),\n * noise_signstate_clear_key()\n */\nint noise_signstate_has_public_key(const NoiseSignState *state)\n{\n    if (state)\n        return state->key_type != NOISE_KEY_TYPE_NO_KEY;\n    else\n        return 0;\n}\n\n/**\n * \\brief Generates a new key pair within a SignState object.\n *\n * \\param state The SignState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\note This function needs to generate random key material for the\n * private key, so the system random number generator must be properly\n * seeded before calling this function.\n *\n * \\sa noise_signstate_sign(), noise_signstate_set_keypair()\n */\nint noise_signstate_generate_keypair(NoiseSignState *state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Generate the new keypair */\n    (*(state->generate_keypair))(state);\n    state->key_type = NOISE_KEY_TYPE_KEYPAIR;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Sets the keypair within a SignState object.\n *\n * \\param state The SignState object.\n * \\param private_key Points to the private key.\n * \\param private_key_len The private key length in bytes.\n * \\param public_key Points to the public key.\n * \\param public_key_len The public key length in bytes.\n *\n * \\return NOISE_ERROR on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state, \\a private_key, or\n * \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if either \\a private_key_len or\n * \\a public_key_len is incorrect for the algorithm.\n * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if \\a private_key is not valid.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a public_key is not valid.\n *\n * The algorithm may decide to defer NOISE_ERROR_INVALID_PRIVATE_KEY or\n * NOISE_ERROR_INVALID_PUBLIC_KEY to later when the keypair is actually\n * used during noise_signstate_sign().\n *\n * \\sa noise_signstate_get_keypair(), noise_signstate_set_public_key(),\n * noise_signstate_set_keypair_private()\n */\nint noise_signstate_set_keypair\n    (NoiseSignState *state, const uint8_t *private_key, size_t private_key_len,\n     const uint8_t *public_key, size_t public_key_len)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !private_key || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (private_key_len != state->private_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Validate the keypair */\n    err = (*(state->validate_keypair))(state, private_key, public_key);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Copy the key into place */\n    memcpy(state->private_key, private_key, state->private_key_len);\n    memcpy(state->public_key, public_key, state->public_key_len);\n    state->key_type = NOISE_KEY_TYPE_KEYPAIR;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Sets the keypair within a SignState object based on a private key only.\n *\n * \\param state The SignState object.\n * \\param private_key Points to the private key.\n * \\param private_key_len The private key length in bytes.\n *\n * \\return NOISE_ERROR on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a private_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if either \\a private_key_len is\n * incorrect for the algorithm.\n * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if \\a private_key is not valid.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a public_key that is derived\n * from the \\a private_key is not valid.\n *\n * The algorithm may decide to defer NOISE_ERROR_INVALID_PRIVATE_KEY or\n * NOISE_ERROR_INVALID_PUBLIC_KEY to later when the keypair is actually\n * used during noise_signstate_sign().\n *\n * This function only takes the private key as an argument.  The public\n * key in the keypair is derived from the private key.\n *\n * \\sa noise_signstate_get_keypair(), noise_signstate_set_public_key(),\n * noise_signstate_set_keypair()\n */\nint noise_signstate_set_keypair_private\n    (NoiseSignState *state, const uint8_t *private_key, size_t private_key_len)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !private_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (private_key_len != state->private_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Derive the public key from the private key */\n    err = (*(state->derive_public_key))\n        (state, private_key, state->public_key);\n    if (err != NOISE_ERROR_NONE) {\n        noise_signstate_clear_key(state);\n        return err;\n    }\n\n    /* Copy the private key into place */\n    memcpy(state->private_key, private_key, state->private_key_len);\n    state->key_type = NOISE_KEY_TYPE_KEYPAIR;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the keypair from within a SignState object.\n *\n * \\param state The SignState object.\n * \\param private_key Points to the buffer to receive the private key.\n * \\param private_key_len The private key buffer length in bytes.\n * \\param public_key Points to the buffer to receive the public key.\n * \\param public_key_len The public key buffer length in bytes.\n *\n * \\return NOISE_ERROR on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state, \\a private_key, or\n * \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if either \\a private_key_len or\n * \\a public_key_len is incorrect for the algorithm.\n * \\return NOISE_ERROR_INVALID_STATE if \\a state does not contain a keypair.\n *\n * \\sa noise_signstate_set_keypair(), noise_signstate_get_public_key()\n */\nint noise_signstate_get_keypair\n    (const NoiseSignState *state, uint8_t *private_key, size_t private_key_len,\n     uint8_t *public_key, size_t public_key_len)\n{\n    /* Validate the parameters */\n    if (!state || !private_key || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (private_key_len != state->private_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Is this actually a keypair? */\n    if (state->key_type != NOISE_KEY_TYPE_KEYPAIR) {\n        memset(private_key, 0, private_key_len);\n        memset(public_key, 0, public_key_len);\n        return NOISE_ERROR_INVALID_STATE;\n    }\n\n    /* Copy the keypair out */\n    memcpy(private_key, state->private_key, private_key_len);\n    memcpy(public_key, state->public_key, public_key_len);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Sets the public key in a SignState object.\n *\n * \\param state The SignState object.\n * \\param public_key Points to the public key.\n * \\param public_key_len The public key length in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a public_key_len is incorrect\n * for the algorithm.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a public_key is not valid.\n *\n * After this function succeeds, the SignState will only contain a public key.\n * Any existing private key will be cleared.  Thus, this function is useful\n * to set the public key of a remote party.  Use noise_signstate_set_keypair()\n * to set both the public and private key for the local party.\n *\n * The algorithm may decide to defer NOISE_ERROR_INVALID_PUBLIC_KEY to\n * later when the public key is actually used during noise_signstate_verify().\n *\n * \\sa noise_signstate_get_public_key(), noise_signstate_set_keypair()\n */\nint noise_signstate_set_public_key\n    (NoiseSignState *state, const uint8_t *public_key, size_t public_key_len)\n{\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Validate the public key with the back end */\n    err = (*(state->validate_public_key))(state, public_key);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Copy the public key into place and clear the private key */\n    memcpy(state->public_key, public_key, public_key_len);\n    memset(state->private_key, 0, state->private_key_len);\n    state->key_type = NOISE_KEY_TYPE_PUBLIC;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the public key value from a SignState object.\n *\n * \\param state The SignState object.\n * \\param public_key The buffer to receive the public key value.\n * \\param public_key_len The public key length in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a public_key_len is incorrect\n * for this algorithm.\n * \\return NOISE_ERROR_INVALID_STATE if the public key has not been\n * set on the SignState object yet.\n *\n * \\sa noise_signstate_set_public_key(), noise_signstate_get_public_key_length()\n */\nint noise_signstate_get_public_key\n    (const NoiseSignState *state, uint8_t *public_key, size_t public_key_len)\n{\n    /* Validate the parameters */\n    if (!state || !public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (public_key_len != state->public_key_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (state->key_type == NOISE_KEY_TYPE_NO_KEY)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Copy the public key out */\n    memcpy(public_key, state->public_key, public_key_len);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Clears the key in a SignState object.\n *\n * \\param state The SignState object.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_signstate_has_keypair(), noise_signstate_has_public_key()\n */\nint noise_signstate_clear_key(NoiseSignState *state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Clear the key to all-zeroes */\n    memset(state->public_key, 0, state->public_key_len);\n    memset(state->private_key, 0, state->private_key_len);\n\n    /* There is no key in the object now */\n    state->key_type = NOISE_KEY_TYPE_NO_KEY;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Signs a message to create a digital signature.\n *\n * \\param state The SignState object containing the private key.\n * \\param message Points to the message to be signed, which is usually a\n * short hash value.\n * \\param message_len The length of the \\a message to be signed.\n * \\param signature Points to the signature on exit.\n * \\param signature_len The length of the \\a signature buffer in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state, \\a message,\n * or \\a signature is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a signature_len is not\n * correct for the algorithm.\n * \\return NOISE_ERROR_INVALID_PRIVATE_KEY if \\a state does not\n * contain a private key or the private key is invalid.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if the public key in\n * \\a state is invalid.\n *\n * \\sa noise_signstate_generate_keypair(), noise_signstate_verify()\n */\nint noise_signstate_sign\n    (const NoiseSignState *state, const uint8_t *message, size_t message_len,\n     uint8_t *signature, size_t signature_len)\n{\n    /* Validate the parameters */\n    if (!state || !message || !signature)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (signature_len != state->signature_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (state->key_type != NOISE_KEY_TYPE_KEYPAIR)\n        return NOISE_ERROR_INVALID_PRIVATE_KEY;\n\n    /* Create the digial signature */\n    return (*(state->sign))(state, message, message_len, signature);\n}\n\n/**\n * \\brief Verifies a digital signature on a message.\n *\n * \\param state The SignState object containing the private key.\n * \\param message Points to the message whose signature should\n * be verified, which is usually a short hash value.\n * \\param message_len The length of the \\a message to be verified.\n * \\param signature Points to the signature to be verified.\n * \\param signature_len The length of the \\a signature in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state, \\a message,\n * or \\a signature is NULL.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a signature_len is not\n * correct for the algorithm.\n * \\return NOISE_ERROR_INVALID_PUBLIC_KEY if \\a state does not\n * contain a public key or the public key is invalid.\n * \\return NOISE_ERROR_INVALID_SIGNATURE if the \\a signature is not\n * valid for the \\a message using this public key.\n *\n * \\sa noise_signstate_set_public_key(), noise_signstate_sign()\n */\nint noise_signstate_verify\n    (const NoiseSignState *state, const uint8_t *message, size_t message_len,\n     const uint8_t *signature, size_t signature_len)\n{\n    /* Validate the parameters */\n    if (!state || !message || !signature)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (signature_len != state->signature_len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (state->key_type == NOISE_KEY_TYPE_NO_KEY)\n        return NOISE_ERROR_INVALID_PUBLIC_KEY;\n\n    /* Verify the digial signature */\n    return (*(state->verify))(state, message, message_len, signature);\n}\n\n/**\n * \\brief Copies the keys from one SignState object to another.\n *\n * \\param state The SignState to copy into.\n * \\param from The SignState to copy from.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a from is NULL.\n * \\return NOISE_ERROR_NOT_APPLICABLE if \\a from does not have the same\n * key type identifier as \\a state.\n */\nint noise_signstate_copy(NoiseSignState *state, const NoiseSignState *from)\n{\n    /* Validate the parameters */\n    if (!state || !from)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->sign_id != from->sign_id)\n        return NOISE_ERROR_NOT_APPLICABLE;\n\n    /* Copy the key information across */\n    if (state != from) {\n        state->key_type = from->key_type;\n        memcpy(state->private_key, from->private_key, from->private_key_len);\n        memcpy(state->public_key, from->public_key, from->public_key_len);\n    }\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Formats the public key fingerprint for the key within a SignState.\n *\n * \\param state The SignState object.\n * \\param fingerprint_type The type of fingerprint to format,\n * NOISE_FINGERPRINT_BASIC or NOISE_FINGERPRINT_FULL.\n * \\param buffer The buffer to write the fingerprint string to, including a\n * terminating NUL.\n * \\param len The length of \\a buffer in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a fingerprint_type is not a\n * supported fingerprint type.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a len is not large enough to\n * hold the entire fingerprint string.\n * \\return NOISE_ERROR_INVALID_STATE if a public key has not been set\n * on \\a state yet.\n *\n * Fingerprints are created by hashing the public key with SHA256 and\n * then formatting the value in hexadecimal with bytes separated by colons.\n * If the \\a fingerprint_type is NOISE_FINGERPRINT_BASIC, then the SHA256\n * hash value is truncated to the first 16 bytes.  If the type is\n * NOISE_FINGERPRINT_FULL, then the entire 32 byte hash value is formatted.\n */\nint noise_signstate_format_fingerprint\n    (const NoiseSignState *state, int fingerprint_type,\n     char *buffer, size_t len)\n{\n    /* Validate the parameters */\n    if (!buffer)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    *buffer = '\\0'; /* In case we bail out with an error later */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (state->key_type == NOISE_KEY_TYPE_NO_KEY)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Format the fingerprint */\n    return noise_format_fingerprint\n        (fingerprint_type, buffer, len,\n         state->public_key, state->public_key_len);\n}\n\n/**\n * \\brief Gets the maximum length of signing keys for the supported algorithms.\n *\n * \\sa noise_signstate_get_max_signature_length()\n */\nint noise_signstate_get_max_key_length(void)\n{\n    return 32;\n}\n\n/**\n * \\brief Gets the maximum length of signatures for the supported algorithms.\n *\n * \\sa noise_signstate_get_max_key_length()\n */\nint noise_signstate_get_max_signature_length(void)\n{\n    return 64;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/symmetricstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#include <string.h>\n\n/**\n * \\file symmetricstate.h\n * \\brief SymmetricState interface\n */\n\n/**\n * \\file symmetricstate.c\n * \\brief SymmetricState implementation\n */\n\n/**\n * \\defgroup symmetricstate SymmetricState API\n */\n/**@{*/\n\n/**\n * \\typedef NoiseSymmetricState\n * \\brief Opaque object that represents a SymmetricState.\n */\n\n/**\n * \\brief Creates a new SymmetricState object.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new SymmetricState object.\n * \\param name The name of the Noise protocol to use.  This string\n * must be NUL-terminated.\n * \\param id The protocol identifier as a set of algorithm identifiers.\n *\n * This is the internal implementation of noise_symmetricstate_new_by_id()\n * and noise_symmetricstate_new_by_name().\n */\nstatic int noise_symmetricstate_new\n    (NoiseSymmetricState **state, const char *name, const NoiseProtocolId *id)\n{\n    NoiseSymmetricState *new_state;\n    size_t name_len;\n    size_t hash_len;\n    int err;\n\n    /* Construct a state object and initialize it */\n    new_state = noise_new(NoiseSymmetricState);\n    if (!new_state)\n        return NOISE_ERROR_NO_MEMORY;\n    new_state->id = *id;\n    err = noise_cipherstate_new_by_id(&(new_state->cipher), id->cipher_id);\n    if (err != NOISE_ERROR_NONE) {\n        noise_symmetricstate_free(new_state);\n        return err;\n    }\n    err = noise_hashstate_new_by_id(&(new_state->hash), id->hash_id);\n    if (err != NOISE_ERROR_NONE) {\n        noise_symmetricstate_free(new_state);\n        return err;\n    }\n\n    /* Check the hash length against the maximum, just in case someone\n       adds a new hash algorithm in the future with longer output.\n       If this happens, modify NOISE_MAX_HASHLEN in internal.h accordingly */\n    hash_len = noise_hashstate_get_hash_length(new_state->hash);\n    if (hash_len > NOISE_MAX_HASHLEN) {\n        noise_symmetricstate_free(new_state);\n        return NOISE_ERROR_NOT_APPLICABLE;\n    }\n\n    /* The key length must also be less than or equal to the hash length */\n    if (noise_cipherstate_get_key_length(new_state->cipher) > hash_len) {\n        noise_symmetricstate_free(new_state);\n        return NOISE_ERROR_NOT_APPLICABLE;\n    }\n\n    /* Initialize the chaining key \"ck\" and the handshake hash \"h\" from\n       the protocol name.  If the name is too long, hash it down first */\n    name_len = strlen(name);\n    if (name_len <= hash_len) {\n        memcpy(new_state->h, name, name_len);\n        memset(new_state->h + name_len, 0, hash_len - name_len);\n    } else {\n        noise_hashstate_hash_one\n            (new_state->hash, (const uint8_t *)name, name_len,\n             new_state->h, hash_len);\n    }\n    memcpy(new_state->ck, new_state->h, hash_len);\n\n    /* Ready to go */\n    *state = new_state;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Creates a new SymmetricState object from a protocol identifier.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new SymmetricState object.\n * \\param id The protocol identifier as a set of algorithm identifiers.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a id is NULL.\n * \\return NOISE_ERROR_UNKNOWN_ID if the protocol \\a id is unknown.\n * \\return NOISE_ERROR_INVALID_LENGTH if the full name corresponding\n * to \\a id is too long.\n * \\return NOISE_ERROR_NOT_APPLICABLE if the lengths of the hash output\n * or the cipher key are incompatible.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new SymmetricState object.\n *\n * \\sa noise_symmetricstate_free(), noise_symmetricstate_new_by_name()\n */\nint noise_symmetricstate_new_by_id\n    (NoiseSymmetricState **state, const NoiseProtocolId *id)\n{\n    char name[NOISE_MAX_PROTOCOL_NAME];\n    int err;\n\n    /* Validate the parameters */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!id)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Format the full protocol name from the identifiers.  We need the\n       full name because the handshake hash is initialized from the name */\n    err = noise_protocol_id_to_name(name, sizeof(name), id);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Create the SymmetricState object */\n    return noise_symmetricstate_new(state, name, id);\n}\n\n/**\n * \\brief Creates a new SymmetricState object from a protocol name.\n *\n * \\param state Points to the variable where to store the pointer to\n * the new SymmetricState object.\n * \\param name The name of the Noise protocol to use.  This string\n * must be NUL-terminated.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a name is NULL.\n * \\return NOISE_ERROR_UNKNOWN_NAME if the protocol \\a name is unknown.\n * \\return NOISE_ERROR_NOT_APPLICABLE if the lengths of the hash output\n * or the cipher key are incompatible.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to\n * allocate the new SymmetricState object.\n *\n * \\sa noise_symmetricstate_free(), noise_symmetricstate_new_by_id()\n */\nint noise_symmetricstate_new_by_name\n    (NoiseSymmetricState **state, const char *name)\n{\n    NoiseProtocolId id;\n    size_t name_len;\n    int err;\n\n    /* Validate the parameters */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    *state = 0;\n    if (!name)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Parse the protocol identifier and validate the names */\n    name_len = strlen(name);\n    err = noise_protocol_name_to_id(&id, name, name_len);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Create the SymmetricState object */\n    return noise_symmetricstate_new(state, name, &id);\n}\n\n/**\n * \\brief Frees a SymmetricState object after destroying all sensitive material.\n *\n * \\param state The SymmetricState object to free.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n *\n * \\sa noise_symmetricstate_new_by_id(), noise_symmetricstate_new_by_name()\n */\nint noise_symmetricstate_free(NoiseSymmetricState *state)\n{\n    /* Bail out if no symmetric state */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Free the sub objects that are hanging off the symmetricstate */\n    if (state->cipher)\n        noise_cipherstate_free(state->cipher);\n    if (state->hash)\n        noise_hashstate_free(state->hash);\n\n    /* Clean and free the memory for \"state\" */\n    noise_free(state, state->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the protocol identifier associated with a SymmetricState object.\n *\n * \\param state The SymmetricState object.\n * \\param id Return buffer for the protocol identifier, which consists of\n * fields that identify the cipher algorithm, hash algorith, handshake\n * pattern, etc.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a id is NULL.\n */\nint noise_symmetricstate_get_protocol_id\n    (const NoiseSymmetricState *state, NoiseProtocolId *id)\n{\n    /* Validate the parameters */\n    if (!state || !id)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Copy the internal id block to the parameter */\n    *id = state->id;\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Mixes new input data into the chaining key.\n *\n * \\param state The SymmetricState object.\n * \\param input Points to the input data to mix in.\n * \\param size The size of the \\a input data in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a input is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the \\a state has already been split.\n *\n * \\sa noise_symmetricstate_mix_hash(), noise_symmetricstate_split()\n */\nint noise_symmetricstate_mix_key\n    (NoiseSymmetricState *state, const uint8_t *input, size_t size)\n{\n    uint8_t temp_k[NOISE_MAX_HASHLEN];\n    size_t hash_len;\n    size_t key_len;\n\n    /* Validate the parameters */\n    if (!state || !input)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* If the state has been split, then we cannot do this */\n    if (!state->cipher)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Mix the input data in using HKDF */\n    hash_len = noise_hashstate_get_hash_length(state->hash);\n    key_len = noise_cipherstate_get_key_length(state->cipher);\n    noise_hashstate_hkdf\n        (state->hash, state->ck, hash_len, input, size,\n         state->ck, hash_len, temp_k, key_len);\n\n    /* Change the cipher key, or set it for the first time */\n    noise_cipherstate_init_key(state->cipher, temp_k, key_len);\n    noise_clean(temp_k, sizeof(temp_k));\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Mixes new input data into the handshake hash.\n *\n * \\param state The SymmetricState object.\n * \\param input Points to the input data to mix in.\n * \\param size The size of the \\a input data in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a input is NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the \\a state has already been split.\n *\n * \\sa noise_symmetricstate_mix_key(), noise_symmetricstate_split()\n */\nint noise_symmetricstate_mix_hash\n    (NoiseSymmetricState *state, const uint8_t *input, size_t size)\n{\n    size_t hash_len;\n\n    /* Validate the parameters */\n    if (!state || !input)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* If the state has been split, then we cannot do this */\n    if (!state->cipher)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Mix the input data into \"h\" */\n    hash_len = noise_hashstate_get_hash_length(state->hash);\n    noise_hashstate_hash_two\n        (state->hash, state->h, hash_len, input, size, state->h, hash_len);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Encrypts a block of data with this SymmetricState object\n * and adds the ciphertext to the handshake hash.\n *\n * \\param state The SymmetricState object.\n * \\param buffer The buffer containing the plaintext on entry and the\n * ciphertext plus MAC on exit.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_INVALID_NONCE if the nonce previously overflowed\n * \\return NOISE_ERROR_INVALID_LENGTH if the ciphertext plus MAC is\n * too large to fit within the maximum size of \\a buffer and to also\n * remain within 65535 bytes.\n *\n * The plaintext is encrypted in-place with the ciphertext also written\n * to \\a buffer.  There must be enough room on the end of \\a buffer\n * to hold the extra MAC value that will be appended.  In other words,\n * it is assumed that the plaintext is in an output buffer ready to be\n * transmitted once the data has been encrypted and the final packet\n * length has been determined.\n *\n * The noise_symmetricstate_get_mac_length() function can be used to\n * determine the size of the MAC value that will be added, which may\n * be zero if the encryption key has not been set up yet.\n *\n * \\sa noise_symmetricstate_decrypt_and_hash(),\n * noise_symmetricstate_get_mac_length()\n */\nint noise_symmetricstate_encrypt_and_hash\n    (NoiseSymmetricState *state, NoiseBuffer *buffer)\n{\n    size_t hash_len;\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !buffer || !(buffer->data))\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* If the state has been split, then we cannot do this */\n    if (!state->cipher)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Encrypt the plaintext using the underlying cipher */\n    hash_len = noise_hashstate_get_hash_length(state->hash);\n    err = noise_cipherstate_encrypt_with_ad\n        (state->cipher, state->h, hash_len, buffer);\n    if (err != NOISE_ERROR_NONE)\n        return err;\n\n    /* Feed the ciphertext into the handshake hash */\n    noise_symmetricstate_mix_hash(state, buffer->data, buffer->size);\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Decrypts a block of data with this SymmetricState object\n * and adds the ciphertext to the handshake hash.\n *\n * \\param state The SymmetricState object.\n * \\param buffer The buffer containing the ciphertext plus MAC on entry\n * and the plaintext on exit.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state or \\a buffer is NULL.\n * \\return NOISE_ERROR_MAC_FAILURE if the MAC check failed.\n * \\return NOISE_ERROR_INVALID_STATE if this SymmetricState has\n * already been split.\n * \\return NOISE_ERROR_INVALID_NONCE if the nonce previously overflowed.\n * \\return NOISE_ERROR_INVALID_LENGTH if the data in \\a buffer is\n * larger than 65535 bytes or too small to contain the MAC value.\n *\n * The ciphertext is decrypted in-place with the plaintext also written\n * to \\a buffer.  In other words, it is assumed that the ciphertext plus\n * MAC is in an input buffer ready to be processed once the MAC has\n * been checked and the ciphertext has been decrypted.\n *\n * \\sa noise_symmetricstate_encrypt_and_hash()\n */\nint noise_symmetricstate_decrypt_and_hash\n    (NoiseSymmetricState *state, NoiseBuffer *buffer)\n{\n    uint8_t temp[NOISE_MAX_HASHLEN];\n    size_t hash_len;\n    int err;\n\n    /* Validate the parameters */\n    if (!state || !buffer || !(buffer->data))\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* If the state has been split, then we cannot do this */\n    if (!state->cipher)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Validate the input data length before we hash the data */\n    if (buffer->size > NOISE_MAX_PAYLOAD_LEN)\n        return NOISE_ERROR_INVALID_LENGTH;\n    if (noise_cipherstate_has_key(state->cipher)) {\n        if (buffer->size < noise_cipherstate_get_mac_length(state->cipher))\n            return NOISE_ERROR_INVALID_LENGTH;\n    }\n\n    /* Feed the ciphertext into the handshake hash first.  We make a\n       temporary copy of the hash.  If the decryption fails below,\n       then we don't update the handshake hash with the bogus data */\n    hash_len = noise_hashstate_get_hash_length(state->hash);\n    noise_hashstate_hash_two\n        (state->hash, state->h, hash_len,\n         buffer->data, buffer->size, temp, hash_len);\n\n    /* Decrypt the ciphertext using the underlying cipher */\n    err = noise_cipherstate_decrypt_with_ad\n        (state->cipher, state->h, hash_len, buffer);\n    if (err != NOISE_ERROR_NONE) {\n        noise_clean(temp, sizeof(temp));\n        return err;\n    }\n\n    /* Update the handshake hash */\n    memcpy(state->h, temp, hash_len);\n    noise_clean(temp, sizeof(temp));\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\brief Gets the current length of packet MAC values for a\n * SymmetricState object.\n *\n * \\param state The SymmetricState object.\n *\n * \\return The size of the MAC in bytes. Returns zero if \\a state is NULL,\n * the encryption key has not been set yet, or the SymmetricState has\n * been split.\n *\n * This function can be used to determine the size of the MAC value that\n * will be added to the next packet that will be encrypted with\n * noise_symmetricstate_encrypt_and_hash().  Early in the handshake when\n * packets are still being exchanged in plaintext, the size will be zero.\n *\n * \\sa noise_symmetricstate_encrypt_and_hash()\n */\nsize_t noise_symmetricstate_get_mac_length(const NoiseSymmetricState *state)\n{\n    /* Validate the parameter */\n    if (!state)\n        return 0;\n\n    /* If the state has been split or the key has not been set, then zero */\n    if (!state->cipher)\n        return 0;\n    if (!noise_cipherstate_has_key(state->cipher))\n        return 0;\n\n    /* Return the MAC length for the cipher */\n    return noise_cipherstate_get_mac_length(state->cipher);\n}\n\n/**\n * \\brief Splits the transport encryption CipherState objects out of\n * this SymmetricState object.\n *\n * \\param state The SymmetricState object.\n * \\param c1 Points to the variable where to place the pointer to the\n * first CipherState object.  This can be NULL if the application is\n * using a one-way handshake pattern.\n * \\param c2 Points to the variable where to place the pointer to the\n * second CipherState object.  This can be NULL if the application is\n * using a one-way handshake pattern.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a state is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if both \\a c1 and \\a c2 are NULL.\n * \\return NOISE_ERROR_INVALID_STATE if the \\a state has already been split.\n * \\return NOISE_ERROR_NO_MEMORY if there is insufficient memory to create\n * the new CipherState objects.\n *\n * Once a SymmetricState has been split, it is effectively finished and\n * cannot be used for future encryption or hashing operations.\n * If those operations are invoked, the relevant functions will return\n * NOISE_ERROR_INVALID_STATE.\n *\n * The \\a c1 object should be used to protect messages from the initiator to\n * the responder, and the \\a c2 object should be used to protect messages\n * from the responder to the initiator.\n *\n * If the handshake pattern is one-way, then the application should call\n * noise_cipherstate_free() on the object that is not needed.  Alternatively,\n * the application can pass NULL to noise_symmetricstate_split() as the\n * \\a c1 or \\a c2 argument and the second CipherState will not be created\n * at all.\n */\nint noise_symmetricstate_split\n    (NoiseSymmetricState *state, NoiseCipherState **c1, NoiseCipherState **c2)\n{\n    uint8_t temp_k1[NOISE_MAX_HASHLEN];\n    uint8_t temp_k2[NOISE_MAX_HASHLEN];\n    size_t hash_len;\n    size_t key_len;\n\n    /* Validate the parameters */\n    if (!state)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!c1 && !c2)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (c1)\n        *c1 = 0;\n    if (c2)\n        *c2 = 0;\n\n    /* If the state has already been split, then we cannot split again */\n    if (!state->cipher)\n        return NOISE_ERROR_INVALID_STATE;\n\n    /* Generate the two encryption keys with HKDF */\n    hash_len = noise_hashstate_get_hash_length(state->hash);\n    key_len = noise_cipherstate_get_key_length(state->cipher);\n    noise_hashstate_hkdf\n        (state->hash, state->ck, hash_len, state->ck, 0,\n         temp_k1, key_len, temp_k2, key_len);\n\n    /* If we only need c2, then re-initialize the key in the internal\n       cipher and copy it to c2 */\n    if (!c1 && c2) {\n        noise_cipherstate_init_key(state->cipher, temp_k2, key_len);\n        *c2 = state->cipher;\n        state->cipher = 0;\n        noise_clean(temp_k1, sizeof(temp_k1));\n        noise_clean(temp_k2, sizeof(temp_k2));\n        return NOISE_ERROR_NONE;\n    }\n\n    /* Split a copy out of the cipher and give it the second key.\n       We don't need to do this if the second CipherSuite is not required */\n    if (c2) {\n        *c2 = (*(state->cipher->create))();\n        if (!(*c2)) {\n            noise_clean(temp_k1, sizeof(temp_k1));\n            noise_clean(temp_k2, sizeof(temp_k2));\n            return NOISE_ERROR_NO_MEMORY;\n        }\n        noise_cipherstate_init_key(*c2, temp_k2, key_len);\n    }\n\n    /* Re-initialize the key in the internal cipher and copy it to c1 */\n    noise_cipherstate_init_key(state->cipher, temp_k1, key_len);\n    *c1 = state->cipher;\n    state->cipher = 0;\n    noise_clean(temp_k1, sizeof(temp_k1));\n    noise_clean(temp_k2, sizeof(temp_k2));\n    return NOISE_ERROR_NONE;\n}\n\n/**@}*/\n"
  },
  {
    "path": "src/protocol/util.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n * Copyright (C) 2016 Topology LP.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"internal.h\"\n#if USE_LIBSODIUM\n#include <sodium.h>\ntypedef crypto_hash_sha256_state sha256_context_t;\n#define sha256_reset(ctx) crypto_hash_sha256_init(ctx)\n#define sha256_update(ctx, pub, pub_len) crypto_hash_sha256_update(ctx, pub, pub_len)\n#define sha256_finish(ctx, hash) crypto_hash_sha256_final(ctx, hash)\n#else\n#include \"crypto/sha2/sha256.h\"\n#endif\n#if USE_OPENSSL\n#include <openssl/err.h>\n#include <openssl/evp.h>\n#endif\n#include <stdlib.h>\n#if HAVE_PTHREAD\n#include <pthread.h>\nstatic pthread_once_t noise_is_initialized = PTHREAD_ONCE_INIT;\n#endif\n\n/**\n * \\file util.h\n * \\brief Utility function interface\n */\n\n/**\n * \\file util.c\n * \\brief Utility function implementation\n */\n\nvoid noise_init_helper(void)\n{\n#if USE_LIBSODIUM\n    if (sodium_init() < 0)\n        return;\n#endif\n#if USE_OPENSSL\n    OpenSSL_add_all_algorithms();\n    ERR_load_crypto_strings();\n#endif\n}\n\n/**\n * \\defgroup utils Utilities\n *\n * The functions in this module are intended to assist applications that\n * make use of the Noise protocol library.\n *\n * The noise_clean() function is probably the most useful function here.\n * It zeroes the contents of a buffer in a way that the compiler will\n * hopefully not optimize away like it might optimize memset().\n */\n/**@{*/\n\n/**\n * \\fn noise_init()\n * \\brief Initializes the Noise-c library.\n *\n * \\return NOISE_ERROR_NONE on success.\n *\n * This will initialize the underlying crypto libraries.\n * You don't need to call this if you initialize the crypto libraries (eg. libsodium, OpenSSL) yourself.\n */\nint noise_init(void)\n{\n#if HAVE_PTHREAD\n    if (pthread_once(&noise_is_initialized, noise_init_helper) != 0)\n        return NOISE_ERROR_SYSTEM;\n#else\n    noise_init_helper();\n#endif\n\n    return NOISE_ERROR_NONE;\n}\n\n/**\n * \\def noise_new(type)\n * \\brief Allocates an object from the system and initializes it.\n *\n * \\param type The structure type, which determines the size of the\n * requested block, and the return type.\n *\n * \\return Pointer to the allocated memory or NULL if the system is\n * out of memory.\n *\n * The object is assumed to start with a size_t field, which will be\n * initialized with the size of \\a type.  This is intended for use\n * with noise_free() to destroy the object's contents when it is\n * deallocated.  The remaining bytes are initialized to zero.\n *\n * \\sa noise_new_object(), noise_free()\n */\n\n/**\n * \\brief Allocates memory from the system for an object.\n *\n * \\param size The number of bytes of memory to allocate for the object.\n *\n * \\return Pointer to the allocated memory or NULL if the system is\n * out of memory.\n *\n * If \\a size is greater than or equal to sizeof(size_t), then the\n * first few bytes in the returned memory will be set to \\a size.\n * That is, the object is assumed to start with a size field.\n * The remaining bytes in the object are initialized to zero.\n *\n * \\note If the caller is allocating a structure, then noise_new()\n * is a better option to ensure type-safety.\n *\n * \\sa noise_new(), noise_free()\n */\nvoid *noise_new_object(size_t size)\n{\n    void *ptr = calloc(1, size);\n    if (!ptr || size < sizeof(size_t))\n        return ptr;\n    *((size_t *)ptr) = size;\n    return ptr;\n}\n\n/**\n * \\brief Destroys the contents of a block of memory and free it.\n *\n * \\param ptr Points to the memory to be freed.\n * \\param size The number of bytes at \\a ptr.\n *\n * \\sa noise_new()\n */\nvoid noise_free(void *ptr, size_t size)\n{\n    if (ptr) {\n        noise_clean(ptr, size);\n        free(ptr);\n    }\n}\n\n/**\n * \\brief Cleans a block of memory to destroy its contents.\n *\n * \\param data Points to the block of memory to be cleaned.\n * \\param size The size of the block in bytes.\n *\n * This function tries to perform the operation in a way that should\n * work around compilers and linkers that optimize away memset() calls\n * for memory that the compiler thinks is no longer live.\n */\nvoid noise_clean(void *data, size_t size)\n{\n    volatile uint8_t *d = (volatile uint8_t *)data;\n    while (size > 0) {\n        *d++ = 0;\n        --size;\n    }\n}\n\n/**\n * \\brief Determine if two blocks of memory are equal in constant time.\n *\n * \\param s1 Points to the first block of memory.\n * \\param s2 Points to the second block of memory.\n * \\param size Number of bytes in each block.\n *\n * \\return Returns 1 if the blocks are equal, 0 if they are not.\n */\nint noise_is_equal(const void *s1, const void *s2, size_t size)\n{\n    const uint8_t *str1 = (const unsigned char *)s1;\n    const uint8_t *str2 = (const unsigned char *)s2;\n    uint8_t temp = 0;\n    while (size > 0) {\n        temp |= *str1 ^ *str2;\n        ++str1;\n        ++str2;\n        --size;\n    }\n    return (0x0100 - (int)temp) >> 8;\n}\n\n/**\n * \\brief Determine if a block of memory consists of all zero bytes.\n *\n * \\param data Points to the block of memory.\n * \\param size The length of the \\a data in bytes.\n *\n * \\return Returns 1 if all bytes of \\a data are zero, or 0 if any of the\n * bytes are non-zero.\n */\nint noise_is_zero(const void *data, size_t size)\n{\n    const uint8_t *d = (const uint8_t *)data;\n    uint8_t temp = 0;\n    while (size > 0) {\n        temp |= *d++;\n        --size;\n    }\n    return (0x0100 - (int)temp) >> 8;\n}\n\n/**\n * \\brief Formats the fingerprint for a raw public key value.\n *\n * \\param fingerprint_type The type of fingerprint to format,\n * NOISE_FINGERPRINT_BASIC or NOISE_FINGERPRINT_FULL.\n * \\param buffer The buffer to write the fingerprint string to, including a\n * terminating NUL.\n * \\param len The length of \\a buffer in bytes.\n * \\param public_key Points to the public key to be formatted.\n * \\param public_key_len Length of the \\a public_key in bytes.\n *\n * \\return NOISE_ERROR_NONE on success.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a buffer or \\a public_key is NULL.\n * \\return NOISE_ERROR_INVALID_PARAM if \\a fingerprint_type is not a\n * supported fingerprint type.\n * \\return NOISE_ERROR_INVALID_LENGTH if \\a len is not large enough to\n * hold the entire fingerprint string.\n *\n * This is a low-level formatting function.  It is usually better to\n * call one of noise_dhstate_format_fingerprint(),\n * noise_signstate_format_fingerprint(), or noise_keystate_format_fingerprint()\n * instead.\n */\nint noise_format_fingerprint\n    (int fingerprint_type, char *buffer, size_t len,\n     const uint8_t *public_key, size_t public_key_len)\n{\n    static char const hexchars[] = \"0123456789abcdef\";\n    sha256_context_t sha256;\n    uint8_t hash[32];\n    size_t f_len;\n    size_t posn;\n\n    /* Validate the parameters */\n    if (!buffer)\n        return NOISE_ERROR_INVALID_PARAM;\n    if (!len)\n        return NOISE_ERROR_INVALID_LENGTH;\n    *buffer = '\\0'; /* In case we bail out with an error later */\n    if (!public_key)\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Validate the fingerprint type and get the desired length */\n    if (fingerprint_type == NOISE_FINGERPRINT_BASIC)\n        f_len = 16;\n    else if (fingerprint_type == NOISE_FINGERPRINT_FULL)\n        f_len = 32;\n    else\n        return NOISE_ERROR_INVALID_PARAM;\n\n    /* Check the length of the buffer */\n    if ((f_len * 3) > len)\n        return NOISE_ERROR_INVALID_LENGTH;\n\n    /* Hash the public key with SHA256 */\n    sha256_reset(&sha256);\n    sha256_update(&sha256, public_key, public_key_len);\n    sha256_finish(&sha256, hash);\n    noise_clean(&sha256, sizeof(sha256));\n\n    /* Format the fingerprint in hexadecimal within the buffer */\n    for (posn = 0; posn < f_len; ++posn) {\n        uint8_t byte = hash[posn];\n        buffer[posn * 3] = hexchars[(byte >> 4) & 0x0F];\n        buffer[posn * 3 + 1] = hexchars[byte & 0x0F];\n        buffer[posn * 3 + 2] = ':';\n    }\n    buffer[f_len * 3 - 1] = '\\0';\n    noise_clean(hash, sizeof(hash));\n    return NOISE_ERROR_NONE;\n}\n\n/**@}*/\n"
  },
  {
    "path": "tests/Makefile.am",
    "content": "\nSUBDIRS = unit vector vector-gen performance\n"
  },
  {
    "path": "tests/performance/.gitignore",
    "content": "test-performance\ntest-performance.exe\n"
  },
  {
    "path": "tests/performance/Makefile.am",
    "content": "\nnoinst_PROGRAMS = test-performance\n\ntest_performance_SOURCES = test-performance.c md5.c\n\nAM_CPPFLAGS = -I$(top_srcdir)/include\nAM_CFLAGS = @WARNING_FLAGS@\n\nLDADD = ../../src/protocol/libnoiseprotocol.a\n\nif USE_LIBSODIUM\nAM_CPPFLAGS += -DUSE_LIBSODIUM=1\nAM_CFLAGS += $(libsodium_CFLAGS)\nLDADD += $(libsodium_LIBS)\nendif\n\nif USE_OPENSSL\nAM_CPPFLAGS += -DUSE_OPENSSL=1\nAM_CFLAGS += $(openssl_CFLAGS)\nLDADD += $(openssl_LIBS)\nendif\n"
  },
  {
    "path": "tests/performance/md5.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"md5.h\"\n#include <string.h>\n\nvoid md5_reset(md5_context_t *context)\n{\n    context->h[0] = 0x67452301;\n    context->h[1] = 0xEFCDAB89;\n    context->h[2] = 0x98BADCFE;\n    context->h[3] = 0x10325476,\n    context->length = 0;\n    context->posn = 0;\n}\n\n/* Constants in the T table from the MD5 specification */\n#define T_1 0xd76aa478\n#define T_2 0xe8c7b756\n#define T_3 0x242070db\n#define T_4 0xc1bdceee\n#define T_5 0xf57c0faf\n#define T_6 0x4787c62a\n#define T_7 0xa8304613\n#define T_8 0xfd469501\n#define T_9 0x698098d8\n#define T_10 0x8b44f7af\n#define T_11 0xffff5bb1\n#define T_12 0x895cd7be\n#define T_13 0x6b901122\n#define T_14 0xfd987193\n#define T_15 0xa679438e\n#define T_16 0x49b40821\n#define T_17 0xf61e2562\n#define T_18 0xc040b340\n#define T_19 0x265e5a51\n#define T_20 0xe9b6c7aa\n#define T_21 0xd62f105d\n#define T_22 0x2441453\n#define T_23 0xd8a1e681\n#define T_24 0xe7d3fbc8\n#define T_25 0x21e1cde6\n#define T_26 0xc33707d6\n#define T_27 0xf4d50d87\n#define T_28 0x455a14ed\n#define T_29 0xa9e3e905\n#define T_30 0xfcefa3f8\n#define T_31 0x676f02d9\n#define T_32 0x8d2a4c8a\n#define T_33 0xfffa3942\n#define T_34 0x8771f681\n#define T_35 0x6d9d6122\n#define T_36 0xfde5380c\n#define T_37 0xa4beea44\n#define T_38 0x4bdecfa9\n#define T_39 0xf6bb4b60\n#define T_40 0xbebfbc70\n#define T_41 0x289b7ec6\n#define T_42 0xeaa127fa\n#define T_43 0xd4ef3085\n#define T_44 0x4881d05\n#define T_45 0xd9d4d039\n#define T_46 0xe6db99e5\n#define T_47 0x1fa27cf8\n#define T_48 0xc4ac5665\n#define T_49 0xf4292244\n#define T_50 0x432aff97\n#define T_51 0xab9423a7\n#define T_52 0xfc93a039\n#define T_53 0x655b59c3\n#define T_54 0x8f0ccc92\n#define T_55 0xffeff47d\n#define T_56 0x85845dd1\n#define T_57 0x6fa87e4f\n#define T_58 0xfe2ce6e0\n#define T_59 0xa3014314\n#define T_60 0x4e0811a1\n#define T_61 0xf7537e82\n#define T_62 0xbd3af235\n#define T_63 0x2ad7d2bb\n#define T_64 0xeb86d391\n\n#define leftRotate(v, n) (((v) << (n)) | ((v) >> (32 - (n))))\n\nstatic void md5_transform(md5_context_t *context, const uint8_t *m)\n{\n    uint32_t X[16];\n    unsigned index;\n\n    /* Convert the input block from little endian to host byte order */\n    for (index = 0; index < 16; ++index, m += 4) {\n        X[index] = ((uint32_t)(m[0])) |\n                  (((uint32_t)(m[1])) << 8) |\n                  (((uint32_t)(m[2])) << 16) |\n                  (((uint32_t)(m[3])) << 24);\n    }\n\n    /* Initialize the hash value for this chunk */\n    uint32_t A = context->h[0];\n    uint32_t B = context->h[1];\n    uint32_t C = context->h[2];\n    uint32_t D = context->h[3];\n\n    /* Round 1 */\n    #define F(x, y, z) (((x) & (y)) | (~(x) & (z)))\n    #define FF(a, b, c, d, k, s, i) \\\n        (a = b + leftRotate(a + F(b, c, d) + X[k] + T_##i, s))\n    FF(A, B, C, D,  0,  7,  1);\n    FF(D, A, B, C,  1, 12,  2);\n    FF(C, D, A, B,  2, 17,  3);\n    FF(B, C, D, A,  3, 22,  4);\n    FF(A, B, C, D,  4,  7,  5);\n    FF(D, A, B, C,  5, 12,  6);\n    FF(C, D, A, B,  6, 17,  7);\n    FF(B, C, D, A,  7, 22,  8);\n    FF(A, B, C, D,  8,  7,  9);\n    FF(D, A, B, C,  9, 12, 10);\n    FF(C, D, A, B, 10, 17, 11);\n    FF(B, C, D, A, 11, 22, 12);\n    FF(A, B, C, D, 12,  7, 13);\n    FF(D, A, B, C, 13, 12, 14);\n    FF(C, D, A, B, 14, 17, 15);\n    FF(B, C, D, A, 15, 22, 16);\n\n    /* Round 2 */\n    #define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))\n    #define GG(a, b, c, d, k, s, i) \\\n        (a = b + leftRotate(a + G(b, c, d) + X[k] + T_##i, s))\n    GG(A, B, C, D,  1,  5, 17);\n    GG(D, A, B, C,  6,  9, 18);\n    GG(C, D, A, B, 11, 14, 19);\n    GG(B, C, D, A,  0, 20, 20);\n    GG(A, B, C, D,  5,  5, 21);\n    GG(D, A, B, C, 10,  9, 22);\n    GG(C, D, A, B, 15, 14, 23);\n    GG(B, C, D, A,  4, 20, 24);\n    GG(A, B, C, D,  9,  5, 25);\n    GG(D, A, B, C, 14,  9, 26);\n    GG(C, D, A, B,  3, 14, 27);\n    GG(B, C, D, A,  8, 20, 28);\n    GG(A, B, C, D, 13,  5, 29);\n    GG(D, A, B, C,  2,  9, 30);\n    GG(C, D, A, B,  7, 14, 31);\n    GG(B, C, D, A, 12, 20, 32);\n\n    /* Round 3 */\n    #define H(x, y, z) ((x) ^ (y) ^ (z))\n    #define HH(a, b, c, d, k, s, i) \\\n        (a = b + leftRotate(a + H(b, c, d) + X[k] + T_##i, s))\n    HH(A, B, C, D,  5,  4, 33);\n    HH(D, A, B, C,  8, 11, 34);\n    HH(C, D, A, B, 11, 16, 35);\n    HH(B, C, D, A, 14, 23, 36);\n    HH(A, B, C, D,  1,  4, 37);\n    HH(D, A, B, C,  4, 11, 38);\n    HH(C, D, A, B,  7, 16, 39);\n    HH(B, C, D, A, 10, 23, 40);\n    HH(A, B, C, D, 13,  4, 41);\n    HH(D, A, B, C,  0, 11, 42);\n    HH(C, D, A, B,  3, 16, 43);\n    HH(B, C, D, A,  6, 23, 44);\n    HH(A, B, C, D,  9,  4, 45);\n    HH(D, A, B, C, 12, 11, 46);\n    HH(C, D, A, B, 15, 16, 47);\n    HH(B, C, D, A,  2, 23, 48);\n\n    /* Round 4 */\n    #define I(x, y, z) ((y) ^ ((x) | ~(z)))\n    #define II(a, b, c, d, k, s, i) \\\n        (a = b + leftRotate(a + I(b, c, d) + X[k] + T_##i, s))\n    II(A, B, C, D,  0,  6, 49);\n    II(D, A, B, C,  7, 10, 50);\n    II(C, D, A, B, 14, 15, 51);\n    II(B, C, D, A,  5, 21, 52);\n    II(A, B, C, D, 12,  6, 53);\n    II(D, A, B, C,  3, 10, 54);\n    II(C, D, A, B, 10, 15, 55);\n    II(B, C, D, A,  1, 21, 56);\n    II(A, B, C, D,  8,  6, 57);\n    II(D, A, B, C, 15, 10, 58);\n    II(C, D, A, B,  6, 15, 59);\n    II(B, C, D, A, 13, 21, 60);\n    II(A, B, C, D,  4,  6, 61);\n    II(D, A, B, C, 11, 10, 62);\n    II(C, D, A, B,  2, 15, 63);\n    II(B, C, D, A,  9, 21, 64);\n\n    /* Add this chunk's hash to the result so far */\n    context->h[0] += A;\n    context->h[1] += B;\n    context->h[2] += C;\n    context->h[3] += D;\n}\n\nvoid md5_update(md5_context_t *context, const void *data, size_t size)\n{\n    const uint8_t *d = (const uint8_t *)data;\n    while (size > 0) {\n        if (context->posn == 0 && size >= 64) {\n            md5_transform(context, d);\n            d += 64;\n            size -= 64;\n            context->length += 64 * 8;\n        } else {\n            size_t temp = 64 - context->posn;\n            if (temp > size)\n                temp = size;\n            memcpy(context->m + context->posn, d, temp);\n            context->posn += temp;\n            if (context->posn >= 64) {\n                md5_transform(context, context->m);\n                context->posn = 0;\n            }\n            d += temp;\n            size -= temp;\n            context->length += temp * 8;\n        }\n    }\n}\n\nstatic void write_le32(uint8_t *out, uint32_t value)\n{\n    out[0] = (uint8_t)value;\n    out[1] = (uint8_t)(value >> 8);\n    out[2] = (uint8_t)(value >> 16);\n    out[3] = (uint8_t)(value >> 24);\n}\n\nvoid md5_finish(md5_context_t *context, uint8_t *hash)\n{\n    uint8_t posn = context->posn;\n    if (posn <= (64 - 9)) {\n        context->m[posn] = 0x80;\n        memset(context->m + posn + 1, 0, 64 - 8 - (posn + 1));\n    } else {\n        context->m[posn] = 0x80;\n        memset(context->m + posn + 1, 0, 64 - (posn + 1));\n        md5_transform(context, context->m);\n        memset(context->m, 0, 64 - 8);\n    }\n    write_le32(context->m + 64 - 8, (uint32_t)(context->length >> 32));\n    write_le32(context->m + 64 - 4, (uint32_t)context->length);\n    md5_transform(context, context->m);\n    context->posn = 0;\n    for (posn = 0; posn < 4; ++posn)\n        write_le32(hash + posn * 4, context->h[posn]);\n}\n"
  },
  {
    "path": "tests/performance/md5.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef MD5_h\n#define MD5_h\n\n#include <stdint.h>\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\ntypedef struct\n{\n    uint32_t h[4];\n    uint8_t  m[64];\n    uint64_t length;\n    uint8_t  posn;\n\n} md5_context_t;\n\nvoid md5_reset(md5_context_t *context);\nvoid md5_update(md5_context_t *context, const void *data, size_t size);\nvoid md5_finish(md5_context_t *context, uint8_t *hash);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "tests/performance/test-performance.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n/*\n    These performance tests output results in \"MD5 units\".  One such unit\n    is the time taken to MD5 1Mb worth of data.  This allows different\n    algorithms to be compared as \"1.3 times MD5\", \"0.8 times MD5\", etc.\n\n    This allows different implementations of the same algorithms to be\n    compared to determine if they are faster or slower than others.\n*/\n\n#include <noise/protocol.h>\n#include <stdio.h>\n#include <string.h>\n#include <time.h>\n#include \"md5.h\"\n#if defined(__APPLE__)\n#include <sys/time.h>\n#endif\n#if defined(__WIN32__) || defined(WIN32)\n#include <windows.h>\n#endif\n\n#define BLOCK_SIZE      1024\n#define BLOCKS_PER_MB   1024\n#define MB_COUNT        200\n#define DH_COUNT        1000\n#define PQ_DH_COUNT     2000\n\ntypedef uint64_t timestamp_t;\n\nstatic double units;\n\n#if defined(__WIN32__) || defined(WIN32)\n\nstatic timestamp_t current_timestamp(void)\n{\n    return GetTickCount();\n}\n\nstatic double elapsed_to_seconds(timestamp_t start, timestamp_t end)\n{\n    return (end - start) / 1000.0;\n}\n\n#elif defined(__APPLE__)\n\nstatic timestamp_t current_timestamp(void)\n{\n    struct timeval now;\n    gettimeofday(&now, NULL);\n    return ((uint64_t)(now.tv_sec)) * 1000000ULL + now.tv_usec;\n}\n\nstatic double elapsed_to_seconds(timestamp_t start, timestamp_t end)\n{\n    return (end - start) / 1000000.0;\n}\n\n#else\n\nstatic timestamp_t current_timestamp(void)\n{\n    struct timespec ts;\n    clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts);\n    return ((uint64_t)(ts.tv_sec)) * 1000000000ULL + ts.tv_nsec;\n}\n\nstatic double elapsed_to_seconds(timestamp_t start, timestamp_t end)\n{\n    return (end - start) / 1000000000.0;\n}\n\n#endif\n\n/* Calibrates the performance measurements to determine the \"MD5 unit\" */\nstatic void calibrate_md5(void)\n{\n    md5_context_t context;\n    uint8_t data[BLOCK_SIZE];\n    timestamp_t start, end;\n    int count;\n    memset(data, 0xAA, sizeof(data));\n    md5_reset(&context);\n    start = current_timestamp();\n    for (count = 0; count < (MB_COUNT * BLOCKS_PER_MB); ++count)\n        md5_update(&context, data, sizeof(data));\n    end = current_timestamp();\n    units = elapsed_to_seconds(start, end) / (double)MB_COUNT;\n}\n\n/* Measure the performance of a hashing primitive */\nstatic void perf_hash(int id)\n{\n    NoiseHashState *hash;\n    uint8_t data[BLOCK_SIZE];\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n\n    if (noise_hashstate_new_by_id(&hash, id) != NOISE_ERROR_NONE)\n        return;\n\n    memset(data, 0xAA, sizeof(data));\n    noise_hashstate_reset(hash);\n    start = current_timestamp();\n    for (count = 0; count < (MB_COUNT * BLOCKS_PER_MB); ++count)\n        noise_hashstate_update(hash, data, sizeof(data));\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)MB_COUNT;\n    printf(\"%-20s%8.2f          %8.2f\\n\",\n           noise_id_to_name(NOISE_HASH_CATEGORY, id),\n           1.0 / elapsed, units / elapsed);\n\n    noise_hashstate_free(hash);\n}\n\n/* Measure the performance of an AEAD primitive */\nstatic void perf_cipher(int id)\n{\n    static uint8_t const key[32] = {\n        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,\n        0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,\n        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,\n        0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20\n    };\n    static uint8_t const ad[32] = {\n        0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,\n        0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x20,\n        0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,\n        0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40\n    };\n    NoiseCipherState *cipher;\n    uint8_t data[BLOCK_SIZE + 16];\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n    NoiseBuffer mbuf;\n\n    if (noise_cipherstate_new_by_id(&cipher, id) != NOISE_ERROR_NONE)\n        return;\n\n    memset(data, 0xAA, sizeof(data));\n    noise_cipherstate_init_key(cipher, key, sizeof(key));\n    start = current_timestamp();\n    for (count = 0; count < (MB_COUNT * BLOCKS_PER_MB); ++count) {\n        noise_buffer_set_inout(mbuf, data, sizeof(data) - 16, sizeof(data));\n        noise_cipherstate_encrypt_with_ad(cipher, ad, sizeof(ad), &mbuf);\n    }\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)MB_COUNT;\n    printf(\"%-20s%8.2f          %8.2f\\n\",\n           noise_id_to_name(NOISE_CIPHER_CATEGORY, id),\n           1.0 / elapsed, units / elapsed);\n\n    noise_cipherstate_free(cipher);\n}\n\n/* Measure the performance of a DH primitive when deriving keys */\nstatic void perf_dh_derive(int id)\n{\n    char name[64];\n    NoiseDHState *dh;\n    uint8_t private_key[56];\n    size_t key_len;\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n\n    if (noise_dhstate_new_by_id(&dh, id) != NOISE_ERROR_NONE)\n        return;\n    key_len = noise_dhstate_get_private_key_length(dh);\n\n    memset(private_key, 0xAA, sizeof(private_key));\n    start = current_timestamp();\n    for (count = 0; count < DH_COUNT; ++count)\n        noise_dhstate_set_keypair_private(dh, private_key, key_len);\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)DH_COUNT;\n    snprintf(name, sizeof(name), \"%s derive key\",\n             noise_id_to_name(NOISE_DH_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    noise_dhstate_free(dh);\n}\n\n/* Measure the performance of a DH primitive when calculating with keys */\nstatic void perf_dh_calculate(int id)\n{\n    char name[64];\n    NoiseDHState *dh1;\n    NoiseDHState *dh2;\n    uint8_t private_key1[56];\n    uint8_t private_key2[56];\n    uint8_t shared_key[56];\n    size_t key_len;\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n\n    if (noise_dhstate_new_by_id(&dh1, id) != NOISE_ERROR_NONE)\n        return;\n    noise_dhstate_new_by_id(&dh2, id);\n    key_len = noise_dhstate_get_private_key_length(dh1);\n\n    memset(private_key1, 0xAA, sizeof(private_key1));\n    memset(private_key2, 0x66, sizeof(private_key2));\n    noise_dhstate_set_keypair_private(dh1, private_key1, key_len);\n    noise_dhstate_set_keypair_private(dh2, private_key2, key_len);\n\n    start = current_timestamp();\n    for (count = 0; count < DH_COUNT; ++count)\n        noise_dhstate_calculate(dh1, dh2, shared_key, key_len);\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)DH_COUNT;\n    snprintf(name, sizeof(name), \"%s calculate\",\n             noise_id_to_name(NOISE_DH_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    noise_dhstate_free(dh1);\n    noise_dhstate_free(dh2);\n}\n\n/* Measure the performance of an ephemeral-only DH primitive (e.g NewHope) */\nstatic void perf_dh_ephemeral_only(int id)\n{\n    char name[64];\n    NoiseDHState *dh1;\n    NoiseDHState *dh2;\n    uint8_t shared_key[32];\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n\n    if (noise_dhstate_new_by_id(&dh1, id) != NOISE_ERROR_NONE)\n        return;\n    if (noise_dhstate_new_by_id(&dh2, id) != NOISE_ERROR_NONE) {\n        noise_dhstate_free(dh1);\n        return;\n    }\n\n    start = current_timestamp();\n    for (count = 0; count < PQ_DH_COUNT; ++count)\n        noise_dhstate_generate_keypair(dh1);\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)PQ_DH_COUNT;\n    snprintf(name, sizeof(name), \"%s generate\",\n             noise_id_to_name(NOISE_DH_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    start = current_timestamp();\n    for (count = 0; count < PQ_DH_COUNT; ++count)\n        noise_dhstate_generate_dependent_keypair(dh2, dh1);\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)PQ_DH_COUNT;\n    snprintf(name, sizeof(name), \"%s sharedb\",\n             noise_id_to_name(NOISE_DH_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    start = current_timestamp();\n    for (count = 0; count < PQ_DH_COUNT; ++count)\n        noise_dhstate_calculate(dh1, dh2, shared_key, sizeof(shared_key));\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)PQ_DH_COUNT;\n    snprintf(name, sizeof(name), \"%s shareda\",\n             noise_id_to_name(NOISE_DH_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    noise_dhstate_free(dh1);\n    noise_dhstate_free(dh2);\n}\n\n/* Measure the performance of a signing primitive when deriving keys */\nstatic void perf_sign_derive(int id)\n{\n    char name[64];\n    NoiseSignState *sign;\n    uint8_t private_key[64];\n    size_t key_len;\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n\n    if (noise_signstate_new_by_id(&sign, id) != NOISE_ERROR_NONE)\n        return;\n    key_len = noise_signstate_get_private_key_length(sign);\n\n    memset(private_key, 0xAA, sizeof(private_key));\n    start = current_timestamp();\n    for (count = 0; count < DH_COUNT; ++count)\n        noise_signstate_set_keypair_private(sign, private_key, key_len);\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)DH_COUNT;\n    snprintf(name, sizeof(name), \"%s derive key\",\n             noise_id_to_name(NOISE_SIGN_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    noise_signstate_free(sign);\n}\n\n/* Measure the performance of a signing primitive when signing messages */\nstatic void perf_sign_sign(int id)\n{\n    char name[64];\n    NoiseSignState *sign;\n    uint8_t private_key[56];\n    uint8_t message[32];\n    uint8_t sig[56 * 2];\n    size_t key_len;\n    size_t sig_len;\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n\n    if (noise_signstate_new_by_id(&sign, id) != NOISE_ERROR_NONE)\n        return;\n    key_len = noise_signstate_get_private_key_length(sign);\n    sig_len = noise_signstate_get_signature_length(sign);\n    memset(private_key, 0xAA, sizeof(private_key));\n    noise_signstate_set_keypair_private(sign, private_key, key_len);\n    memset(message, 0x66, sizeof(message));\n\n    start = current_timestamp();\n    for (count = 0; count < DH_COUNT; ++count)\n        noise_signstate_sign(sign, message, sizeof(message), sig, sig_len);\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)DH_COUNT;\n    snprintf(name, sizeof(name), \"%s sign\",\n             noise_id_to_name(NOISE_SIGN_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    noise_signstate_free(sign);\n}\n\n/* Measure the performance of a signing primitive when verifying messages */\nstatic void perf_sign_verify(int id)\n{\n    char name[64];\n    NoiseSignState *sign;\n    uint8_t private_key[56];\n    uint8_t message[32];\n    uint8_t sig[56 * 2];\n    size_t key_len;\n    size_t sig_len;\n    timestamp_t start, end;\n    int count;\n    double elapsed;\n\n    if (noise_signstate_new_by_id(&sign, id) != NOISE_ERROR_NONE)\n        return;\n    key_len = noise_signstate_get_private_key_length(sign);\n    sig_len = noise_signstate_get_signature_length(sign);\n    memset(private_key, 0xAA, sizeof(private_key));\n    noise_signstate_set_keypair_private(sign, private_key, key_len);\n    memset(message, 0x66, sizeof(message));\n    noise_signstate_sign(sign, message, sizeof(message), sig, sig_len);\n\n    start = current_timestamp();\n    for (count = 0; count < DH_COUNT; ++count)\n        noise_signstate_verify(sign, message, sizeof(message), sig, sig_len);\n    end = current_timestamp();\n\n    elapsed = elapsed_to_seconds(start, end) / (double)DH_COUNT;\n    snprintf(name, sizeof(name), \"%s verify\",\n             noise_id_to_name(NOISE_SIGN_CATEGORY, id));\n    printf(\"%-20s%8.2f          %8.2f\\n\", name, 1.0 / elapsed, units / elapsed);\n\n    noise_signstate_free(sign);\n}\n\nint main(int argc, char *argv[])\n{\n    if (noise_init() != NOISE_ERROR_NONE) {\n        fprintf(stderr, \"Noise initialization failed\\n\");\n        return 1;\n    }\n\n    /* Print the header */\n    printf(\"Algorithm             MB/sec         MD5 units\\n\");\n\n    /* Calibrate the performance measurements */\n    calibrate_md5();\n    printf(\"%-20s%8.2f          %8.2f\\n\", \"MD5 calibration\", 1.0 / units, 1.0);\n\n    /* Measure the performance of the hashing primitives */\n    perf_hash(NOISE_HASH_BLAKE2s);\n    perf_hash(NOISE_HASH_BLAKE2b);\n    perf_hash(NOISE_HASH_SHA256);\n    perf_hash(NOISE_HASH_SHA512);\n\n    /* Measure the performance of the AEAD primitives */\n    perf_cipher(NOISE_CIPHER_CHACHAPOLY);\n    perf_cipher(NOISE_CIPHER_AESGCM);\n\n    /* Measure the performance of the DH primitives */\n    printf(\"\\n\");\n    printf(\"Pubkey algorithm     ops/sec         MD5 units\\n\");\n    perf_dh_derive(NOISE_DH_CURVE25519);\n    perf_dh_derive(NOISE_DH_CURVE448);\n    perf_dh_calculate(NOISE_DH_CURVE25519);\n    perf_dh_calculate(NOISE_DH_CURVE448);\n    perf_dh_ephemeral_only(NOISE_DH_NEWHOPE);\n\n    /* Measure the performance of the signing primitives */\n    perf_sign_derive(NOISE_SIGN_ED25519);\n    perf_sign_sign(NOISE_SIGN_ED25519);\n    perf_sign_verify(NOISE_SIGN_ED25519);\n\n    /* Done */\n    return 0;\n}\n"
  },
  {
    "path": "tests/unit/.gitignore",
    "content": "test-noise\n*.exe\n"
  },
  {
    "path": "tests/unit/Makefile.am",
    "content": "\nnoinst_PROGRAMS = test-noise\n\ntest_noise_SOURCES = \\\n\ttest-cipherstate.c \\\n\ttest-dhstate.c \\\n\ttest-errors.c \\\n\ttest-handshakestate.c \\\n\ttest-hashstate.c \\\n\ttest-main.c \\\n\ttest-names.c \\\n\ttest-patterns.c \\\n\ttest-protobufs.c \\\n\ttest-randstate.c \\\n\ttest-signstate.c \\\n\ttest-symmetricstate.c\n\nAM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/src\nAM_CFLAGS = @WARNING_FLAGS@\n\nLDADD = ../../src/keys/libnoisekeys.a \\\n        ../../src/protobufs/libnoiseprotobufs.a \\\n        ../../src/protocol/libnoiseprotocol.a\n\ncheck-local:\n\t./test-noise\n\nif USE_LIBSODIUM\nAM_CPPFLAGS += -DUSE_LIBSODIUM=1\nAM_CFLAGS += $(libsodium_CFLAGS)\nLDADD += $(libsodium_LIBS)\nendif\n\nif USE_OPENSSL\nAM_CPPFLAGS += -DUSE_OPENSSL=1\nAM_CFLAGS += $(openssl_CFLAGS)\nLDADD += $(openssl_LIBS)\nendif\n"
  },
  {
    "path": "tests/unit/test-cipherstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\n#define MAX_KEY_LEN 32\n#define MAX_AD_LEN 32\n#define MAX_CIPHER_DATA 512\n#define MAX_MAC_LEN 16\n\n/* Check raw cipher output against test vectors */\nstatic void check_cipher(int id, size_t key_len, size_t mac_len,\n                         const char *name, const char *key, uint64_t nonce,\n                         const char *ad, const char *plaintext,\n                         const char *ciphertext, const char *mac)\n{\n    NoiseCipherState *state;\n    NoiseBuffer mbuf;\n    uint8_t k[MAX_KEY_LEN];\n    uint8_t a[MAX_AD_LEN];\n    uint8_t pt[MAX_CIPHER_DATA];\n    uint8_t ct[MAX_CIPHER_DATA];\n    uint8_t tag[MAX_MAC_LEN];\n    uint8_t buffer[MAX_CIPHER_DATA];\n    size_t pt_len;\n    size_t ad_len;\n\n    /* Convert the test strings into binary data */\n    compare(string_to_data(k, sizeof(k), key), key_len);\n    ad_len = string_to_data(a, sizeof(a), ad);\n    pt_len = string_to_data(pt, sizeof(pt), plaintext);\n    compare(string_to_data(ct, sizeof(ct), ciphertext), pt_len);\n    compare(string_to_data(tag, sizeof(tag), mac), mac_len);\n\n    /* Create the cipher object and check its properties */\n    compare(noise_cipherstate_new_by_id(&state, id), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_get_cipher_id(state), id);\n    compare(noise_cipherstate_get_key_length(state), key_len);\n    compare(noise_cipherstate_get_mac_length(state), mac_len);\n    verify(!noise_cipherstate_has_key(state));\n    verify(key_len <= noise_cipherstate_get_max_key_length());\n    verify(mac_len <= noise_cipherstate_get_max_mac_length());\n\n    /* Try to encrypt.  Because the key is not set yet, this will\n       return the plaintext as-is */\n    memcpy(buffer, pt, pt_len);\n    noise_buffer_set_inout(mbuf, buffer, pt_len, sizeof(buffer));\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_NONE);\n    compare(mbuf.size, pt_len);\n    verify(!memcmp(mbuf.data, pt, pt_len));\n\n    /* Try to encrypt again with no key.  This time specify a payload\n       length that is too large */\n    noise_buffer_set_input(mbuf, buffer, NOISE_MAX_PAYLOAD_LEN + 1);\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_LENGTH);\n\n    /* One more plaintext encryption with a payload less than the MAC size */\n    noise_buffer_set_inout(mbuf, buffer, mac_len / 2, sizeof(buffer));\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_NONE);\n    compare(mbuf.size, mac_len / 2);\n\n    /* Try to decrypt.  Will return the ciphertext and MAC as-is */\n    memcpy(buffer, ct, pt_len);\n    memcpy(buffer + pt_len, tag, mac_len);\n    noise_buffer_set_input(mbuf, buffer, pt_len + mac_len);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_NONE);\n    compare(mbuf.size, pt_len + mac_len);\n    verify(!memcmp(mbuf.data, ct, pt_len));\n    verify(!memcmp(mbuf.data + pt_len, tag, mac_len));\n\n    /* Try to decrypt again with no key.  This time specify a payload\n       length that is too large */\n    noise_buffer_set_input(mbuf, buffer, NOISE_MAX_PAYLOAD_LEN + 1);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_LENGTH);\n\n    /* Plaintext decryption can work with data less than the MAC size */\n    noise_buffer_set_input(mbuf, buffer, mac_len / 2);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_NONE);\n    compare(mbuf.size, mac_len / 2);\n\n    /* Cannot set the nonce before we set the key */\n    compare(noise_cipherstate_set_nonce(state, nonce), NOISE_ERROR_INVALID_STATE);\n\n    /* Set the key and fast-forward the nonce */\n    verify(!noise_cipherstate_has_key(state));\n    compare(noise_cipherstate_init_key(state, k, key_len), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_set_nonce(state, nonce), NOISE_ERROR_NONE);\n    verify(noise_cipherstate_has_key(state));\n\n    /* Encrypt the data */\n    memcpy(buffer, pt, pt_len);\n    noise_buffer_set_inout(mbuf, buffer, pt_len, sizeof(buffer));\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_NONE);\n    compare(mbuf.size, pt_len + mac_len);\n\n    /* Check the ciphertext and MAC that was generated */\n    verify(!memcmp(mbuf.data, ct, pt_len));\n    verify(!memcmp(mbuf.data + pt_len, tag, mac_len));\n\n    /* Try to decrypt.  The MAC check should fail because the internal\n       nonce was incremented and no longer matches the parameter */\n    noise_buffer_set_input(mbuf, buffer, pt_len + mac_len);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_MAC_FAILURE);\n\n    /* Try to reset the nonce.  Cannot go backwards */\n    compare(noise_cipherstate_set_nonce(state, nonce), NOISE_ERROR_INVALID_NONCE);\n\n    /* Fast-forward the nonce to just before the rollover.  We will be able\n       to encrypt one more block, and then the next request will be rejected */\n    compare(noise_cipherstate_set_nonce(state, 0xFFFFFFFFFFFFFFFEULL),\n            NOISE_ERROR_NONE);\n    noise_buffer_set_inout(mbuf, buffer, pt_len, sizeof(buffer));\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_NONE);\n    noise_buffer_set_inout(mbuf, buffer, pt_len, sizeof(buffer));\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_NONCE);\n\n    /* Reset the key and then we can reset the nonce */\n    compare(noise_cipherstate_init_key(state, k, key_len), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_set_nonce(state, nonce), NOISE_ERROR_NONE);\n\n    /* Decrypt the test ciphertext and MAC */\n    memcpy(buffer, ct, pt_len);\n    memcpy(buffer + pt_len, tag, mac_len);\n    noise_buffer_set_input(mbuf, buffer, pt_len + mac_len);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_NONE);\n    compare(mbuf.size, pt_len);\n\n    /* Check that we got back to the original plaintext */\n    verify(!memcmp(mbuf.data, pt, pt_len));\n\n    /* Fast-forward the nonce to just before the rollover.  We will be able\n       to decrypt one more block, and then the next request will be rejected */\n    compare(noise_cipherstate_set_nonce(state, 0xFFFFFFFFFFFFFFFEULL),\n            NOISE_ERROR_NONE);\n    noise_buffer_set_input(mbuf, buffer, pt_len + mac_len);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_MAC_FAILURE);   /* MAC will fail, but that's OK */\n    noise_buffer_set_input(mbuf, buffer, pt_len + mac_len);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_MAC_FAILURE);   /* MAC will fail again, nonce is not\n                                          incremented on failed decryption */\n\n    /* Reset the key to clear the \"invalid nonce\" state */\n    compare(noise_cipherstate_init_key(state, k, key_len), NOISE_ERROR_NONE);\n\n    /* Check for other parameter errors */\n    compare(noise_cipherstate_init_key(0, k, key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_cipherstate_init_key(state, 0, key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_cipherstate_init_key(state, k, key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_cipherstate_init_key(state, k, key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_cipherstate_set_nonce(0, nonce), NOISE_ERROR_INVALID_PARAM);\n    noise_buffer_set_inout(mbuf, buffer, pt_len, sizeof(buffer));\n    compare(noise_cipherstate_encrypt_with_ad(0, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_PARAM);\n    if (ad_len) {\n        compare(noise_cipherstate_encrypt_with_ad(state, 0, ad_len, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n    }\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    mbuf.data = 0;\n    compare(noise_cipherstate_encrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_PARAM);\n    noise_buffer_set_inout(mbuf, buffer, pt_len + mac_len, sizeof(buffer));\n    compare(noise_cipherstate_decrypt_with_ad(0, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_PARAM);\n    if (ad_len) {\n        compare(noise_cipherstate_decrypt_with_ad(state, 0, ad_len, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n    }\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    mbuf.data = 0;\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_PARAM);\n    noise_buffer_set_input(mbuf, buffer, mac_len / 2);\n    compare(noise_cipherstate_decrypt_with_ad(state, a, ad_len, &mbuf),\n            NOISE_ERROR_INVALID_LENGTH);\n\n    /* Re-create the object by name and check its properties again */\n    compare(noise_cipherstate_free(state), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_new_by_name(&state, name), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_get_cipher_id(state), id);\n    compare(noise_cipherstate_get_key_length(state), key_len);\n    compare(noise_cipherstate_get_mac_length(state), mac_len);\n    verify(!noise_cipherstate_has_key(state));\n\n    /* Clean up */\n    compare(noise_cipherstate_free(state), NOISE_ERROR_NONE);\n}\n\n/* Check against test vectors from the various specifications\n   to validate that the algorithms work as low level primitives */\nstatic void cipherstate_check_test_vectors(void)\n{\n    /* ChaChaPoly - From Appendix A.5 of RFC 7539 */\n    check_cipher\n        (NOISE_CIPHER_CHACHAPOLY, 32, 16, \"ChaChaPoly\",\n         \"0x1c9240a5eb55d38af333888604f6b5f0473917c1402b80099dca5cbc207075c0\",\n         /* IV is reversed compared to RFC 7539 value to correct endianness */\n         0x0807060504030201,\n         \"0xf33388860000000000004e91\",\n         \"0x496e7465726e65742d4472616674732061726520647261667420646f63756d65\"\n           \"6e74732076616c696420666f722061206d6178696d756d206f6620736978206d\"\n           \"6f6e74687320616e64206d617920626520757064617465642c207265706c6163\"\n           \"65642c206f72206f62736f6c65746564206279206f7468657220646f63756d65\"\n           \"6e747320617420616e792074696d652e20497420697320696e617070726f7072\"\n           \"6961746520746f2075736520496e7465726e65742d4472616674732061732072\"\n           \"65666572656e6365206d6174657269616c206f7220746f206369746520746865\"\n           \"6d206f74686572207468616e206173202fe2809c776f726b20696e2070726f67\"\n           \"726573732e2fe2809d\",\n         \"0x64a0861575861af460f062c79be643bd5e805cfd345cf389f108670ac76c8cb2\"\n           \"4c6cfc18755d43eea09ee94e382d26b0bdb7b73c321b0100d4f03b7f355894cf\"\n           \"332f830e710b97ce98c8a84abd0b948114ad176e008d33bd60f982b1ff37c855\"\n           \"9797a06ef4f0ef61c186324e2b3506383606907b6a7c02b0f9f6157b53c867e4\"\n           \"b9166c767b804d46a59b5216cde7a4e99040c5a40433225ee282a1b0a06c523e\"\n           \"af4534d7f83fa1155b0047718cbc546a0d072b04b3564eea1b422273f548271a\"\n           \"0bb2316053fa76991955ebd63159434ecebb4e466dae5a1073a6727627097a10\"\n           \"49e617d91d361094fa68f0ff77987130305beaba2eda04df997b714d6c6f2c29\"\n           \"a6ad5cb4022b02709b\",\n         \"0xeead9d67890cbb22392336fea1851f38\");\n\n    /* Test vectors for AES in GCM mode from Appendix B of:\n       http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-revised-spec.pdf\n       We can only use a few of the vectors because most of the IV's in the\n       revised specification don't match what we need here */\n\n    /* AESGCM - gcm-revised-spec.pdf, test case #13 */\n    check_cipher\n        (NOISE_CIPHER_AESGCM, 32, 16, \"AESGCM\",\n         \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n         0,\n         \"\",\n         \"\",\n         \"\",\n         \"0x530f8afbc74536b9a963b4f1c4cb738b\");\n\n    /* AESGCM - gcm-revised-spec.pdf, test case #14 */\n    check_cipher\n        (NOISE_CIPHER_AESGCM, 32, 16, \"AESGCM\",\n         \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n         0,\n         \"\",\n         \"0x00000000000000000000000000000000\",\n         \"0xcea7403d4d606b6e074ec5d3baf39d18\",\n         \"0xd0d1c8a799996bf0265b98b5d48ab919\");\n}\n\n/* Check other error conditions that can be reported by the functions */\nstatic void cipherstate_check_errors(void)\n{\n    NoiseCipherState *state;\n\n    /* NULL parameters in various positions */\n    compare(noise_cipherstate_free(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_cipherstate_get_cipher_id(0), NOISE_CIPHER_NONE);\n    compare(noise_cipherstate_get_key_length(0), 0);\n    compare(noise_cipherstate_get_mac_length(0), 0);\n    compare(noise_cipherstate_new_by_id(0, NOISE_HASH_BLAKE2s),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_cipherstate_new_by_name(0, \"ChaChaPoly\"),\n            NOISE_ERROR_INVALID_PARAM);\n\n    /* If the id/name is unknown, the state parameter should be set to NULL */\n    state = (NoiseCipherState *)8;\n    compare(noise_cipherstate_new_by_id(&state, NOISE_HASH_BLAKE2s),\n            NOISE_ERROR_UNKNOWN_ID);\n    verify(state == NULL);\n    state = (NoiseCipherState *)8;\n    compare(noise_cipherstate_new_by_name(&state, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n    state = (NoiseCipherState *)8;\n    compare(noise_cipherstate_new_by_name(&state, \"ChaChaPony\"),\n            NOISE_ERROR_UNKNOWN_NAME);\n    verify(state == NULL);\n}\n\nvoid test_cipherstate(void)\n{\n    cipherstate_check_test_vectors();\n    cipherstate_check_errors();\n}\n"
  },
  {
    "path": "tests/unit/test-dhstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\n#define MAX_DH_KEY_LEN 2048\n\n/* Check raw DH output against test vectors */\nstatic void check_dh(int id, size_t private_key_len, size_t public_key_len,\n                     size_t other_public_key_len, size_t shared_key_len,\n                     const char *name, int is_null, int role,\n                     const char *private_key, const char *public_key,\n                     const char *other_public_key, const char *shared_key)\n{\n    int inverse_role =\n        (role == NOISE_ROLE_INITIATOR) ? NOISE_ROLE_RESPONDER\n                                       : NOISE_ROLE_INITIATOR;\n    NoiseDHState *state1;\n    NoiseDHState *state2;\n    NoiseDHState *state3;\n    static uint8_t priv_key[MAX_DH_KEY_LEN];\n    static uint8_t pub_key[MAX_DH_KEY_LEN];\n    static uint8_t other_pub_key[MAX_DH_KEY_LEN];\n    static uint8_t share_key[MAX_DH_KEY_LEN];\n    static uint8_t temp[MAX_DH_KEY_LEN];\n    static uint8_t temp2[MAX_DH_KEY_LEN];\n\n    /* Convert the test strings into binary data */\n    compare(string_to_data(priv_key, sizeof(priv_key), private_key),\n            private_key_len);\n    compare(string_to_data(pub_key, sizeof(pub_key), public_key),\n            public_key_len);\n    compare(string_to_data(other_pub_key, sizeof(other_pub_key),\n            other_public_key), other_public_key_len);\n    compare(string_to_data(share_key, sizeof(share_key), shared_key),\n            shared_key_len);\n\n    /* Create the first DH object and check its properties */\n    compare(noise_dhstate_new_by_id(&state1, id), NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_dh_id(state1), id);\n    compare(noise_dhstate_set_role(state1, role), NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_private_key_length(state1), private_key_len);\n    compare(noise_dhstate_get_public_key_length(state1), public_key_len);\n    compare(noise_dhstate_get_shared_key_length(state1), shared_key_len);\n    verify(!noise_dhstate_has_keypair(state1));\n    verify(!noise_dhstate_has_public_key(state1));\n    verify(!noise_dhstate_is_null_public_key(state1));\n    verify(private_key_len <= MAX_DH_KEY_LEN);\n    verify(public_key_len <= MAX_DH_KEY_LEN);\n    verify(shared_key_len <= MAX_DH_KEY_LEN);\n\n    /* Create the second DH object */\n    compare(noise_dhstate_new_by_id(&state2, id), NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_role(state2, inverse_role), NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_dh_id(state2), id);\n    if (public_key_len == other_public_key_len)\n        compare(noise_dhstate_get_private_key_length(state2), private_key_len);\n    compare(noise_dhstate_get_public_key_length(state2), other_public_key_len);\n    compare(noise_dhstate_get_shared_key_length(state2), shared_key_len);\n    verify(!noise_dhstate_has_keypair(state2));\n    verify(!noise_dhstate_has_public_key(state2));\n    verify(!noise_dhstate_is_null_public_key(state2));\n\n    /* Set the keys on the DH objects */\n    compare(noise_dhstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_public_key\n                (state2, other_pub_key, other_public_key_len),\n            NOISE_ERROR_NONE);\n    verify(noise_dhstate_has_keypair(state1));\n    verify(noise_dhstate_has_public_key(state1));\n    verify(!noise_dhstate_is_null_public_key(state1));\n    verify(!noise_dhstate_has_keypair(state2));\n    verify(noise_dhstate_has_public_key(state2));\n    compare(noise_dhstate_is_null_public_key(state2), is_null);\n\n    /* Calculate the shared key and check against the test data */\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_dhstate_calculate(state1, state2, temp, shared_key_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, share_key, shared_key_len));\n\n    /* Fetch the keys back from the objects and compare */\n    memset(temp, 0xAA, sizeof(temp));\n    memset(temp2, 0x66, sizeof(temp2));\n    compare(noise_dhstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, priv_key, private_key_len));\n    verify(!memcmp(temp2, pub_key, public_key_len));\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_dhstate_get_public_key(state2, temp, other_public_key_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, other_pub_key, other_public_key_len));\n\n    /* Check parameter error conditions */\n    compare(noise_dhstate_set_keypair\n                (0, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_set_keypair\n                (state1, 0, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_set_keypair\n                (state1, priv_key, private_key_len, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_set_keypair\n                (state1, priv_key, private_key_len - 1, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_set_keypair\n                (state1, priv_key, private_key_len + 1, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_get_keypair\n                (0, temp, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_get_keypair\n                (state1, 0, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_get_keypair\n                (state1, temp, private_key_len, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_get_keypair\n                (state1, temp, private_key_len - 1, temp2, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_get_keypair\n                (state1, temp, private_key_len + 1, temp2, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_set_public_key\n                (0, other_pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_set_public_key\n                (state2, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_set_public_key\n                (state2, other_pub_key, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_set_public_key\n                (state2, other_pub_key, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_get_public_key(0, temp, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_get_public_key(state2, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_get_public_key(state2, temp, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_get_public_key(state2, temp, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_calculate(0, state2, temp, shared_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_calculate(state1, 0, temp, shared_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_calculate(state1, state2, 0, shared_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_calculate(state1, state2, temp, shared_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_calculate(state1, state2, temp, shared_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_dhstate_calculate(state2, state1, temp, shared_key_len),\n            NOISE_ERROR_INVALID_PRIVATE_KEY);\n\n    /* Cannot mix algorithm types */\n    if (id == NOISE_DH_CURVE25519) {\n        compare(noise_dhstate_new_by_id(&state3, NOISE_DH_CURVE448),\n                NOISE_ERROR_NONE);\n    } else {\n        compare(noise_dhstate_new_by_id(&state3, NOISE_DH_CURVE25519),\n                NOISE_ERROR_NONE);\n    }\n    compare(noise_dhstate_calculate(state1, state3, temp, shared_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_free(state3), NOISE_ERROR_NONE);\n\n    /* Re-create the objects by name and check their properties again */\n    compare(noise_dhstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_dhstate_free(state2), NOISE_ERROR_NONE);\n    compare(noise_dhstate_new_by_name(&state1, name), NOISE_ERROR_NONE);\n    compare(noise_dhstate_new_by_name(&state2, name), NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_role(state1, role), NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_role(state2, inverse_role), NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_dh_id(state1), id);\n    compare(noise_dhstate_get_dh_id(state2), id);\n    compare(noise_dhstate_get_private_key_length(state1), private_key_len);\n    compare(noise_dhstate_get_public_key_length(state1), public_key_len);\n    compare(noise_dhstate_get_shared_key_length(state1), shared_key_len);\n    if (public_key_len == other_public_key_len)\n        compare(noise_dhstate_get_private_key_length(state2), private_key_len);\n    compare(noise_dhstate_get_public_key_length(state2), other_public_key_len);\n    compare(noise_dhstate_get_shared_key_length(state2), shared_key_len);\n    verify(!noise_dhstate_has_keypair(state1));\n    verify(!noise_dhstate_has_public_key(state1));\n    verify(!noise_dhstate_is_null_public_key(state1));\n    verify(!noise_dhstate_has_keypair(state2));\n    verify(!noise_dhstate_has_public_key(state2));\n    verify(!noise_dhstate_is_null_public_key(state2));\n\n    /* Make sure that it is still the same object by checking DH outputs.\n       This time we derive state1's public key from the private key rather\n       than use the value from the test data. */\n    compare(noise_dhstate_set_keypair_private\n                (state1, priv_key, private_key_len),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_public_key\n                (state2, other_pub_key, other_public_key_len),\n            NOISE_ERROR_NONE);\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_dhstate_calculate(state1, state2, temp, shared_key_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, share_key, shared_key_len));\n\n    /* Deliberately null the other public key and check for a null result */\n    if (id == NOISE_DH_CURVE25519 || id == NOISE_DH_CURVE448) {\n        compare(noise_dhstate_set_null_public_key(state2), NOISE_ERROR_NONE);\n        verify(noise_dhstate_is_null_public_key(state2));\n        verify(noise_dhstate_has_public_key(state2));\n        memset(temp, 0xAA, sizeof(temp));\n        compare(noise_dhstate_calculate(state1, state2, temp, shared_key_len),\n                NOISE_ERROR_NONE);\n        memset(temp2, 0, sizeof(temp));\n        verify(!memcmp(temp, temp2, shared_key_len));\n    }\n\n    /* Clear the first key and check that it returns to default properties */\n    compare(noise_dhstate_clear_key(state1), NOISE_ERROR_NONE);\n    verify(!noise_dhstate_has_keypair(state1));\n    verify(!noise_dhstate_has_public_key(state1));\n    verify(!noise_dhstate_is_null_public_key(state1));\n    compare(noise_dhstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_INVALID_STATE);\n    compare(noise_dhstate_get_public_key(state1, temp, public_key_len),\n            NOISE_ERROR_NONE);\n\n    /* Deliberately mess up the first keypair and perform validation.\n       The existing Curve25519 and Curve448 back ends validate the\n       public key but all private key values are valid. */\n    if (id == NOISE_DH_CURVE25519 || id == NOISE_DH_CURVE448) {\n        priv_key[private_key_len / 2] ^= 0x01;\n        compare(noise_dhstate_set_keypair\n                    (state1, priv_key, private_key_len,\n                     pub_key, public_key_len),\n                NOISE_ERROR_INVALID_PUBLIC_KEY);\n        priv_key[private_key_len / 2] ^= 0x01;\n        compare(noise_dhstate_set_keypair\n                    (state1, priv_key, private_key_len,\n                     pub_key, public_key_len),\n                NOISE_ERROR_NONE);\n        pub_key[public_key_len / 2] ^= 0x01;\n        compare(noise_dhstate_set_keypair\n                    (state1, priv_key, private_key_len,\n                     pub_key, public_key_len),\n                NOISE_ERROR_INVALID_PUBLIC_KEY);\n        pub_key[public_key_len / 2] ^= 0x01;\n        compare(noise_dhstate_set_keypair\n                    (state1, priv_key, private_key_len,\n                     pub_key, public_key_len),\n                NOISE_ERROR_NONE);\n    }\n\n    /* Clean up */\n    compare(noise_dhstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_dhstate_free(state2), NOISE_ERROR_NONE);\n}\n\n/* Check against test vectors from the various specifications\n   to validate that the algorithms work as low level primitives */\nstatic void dhstate_check_test_vectors(void)\n{\n    /* Curve25519 - From section 6.1 of RFC 7748 */\n    check_dh\n        (NOISE_DH_CURVE25519, 32, 32, 32, 32, \"25519\", 0, NOISE_ROLE_INITIATOR,\n         /* Alice's private key */\n         \"0x77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a\",\n         /* Alice's public key */\n         \"0x8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a\",\n         /* Bob's public key */\n         \"0xde9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f\",\n         /* Shared secret */\n         \"0x4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742\");\n    check_dh\n        (NOISE_DH_CURVE25519, 32, 32, 32, 32, \"25519\", 0, NOISE_ROLE_RESPONDER,\n         /* Bob's private key */\n         \"0x5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb\",\n         /* Bob's public key */\n         \"0xde9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f\",\n         /* Alice's public key */\n         \"0x8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a\",\n         /* Shared secret */\n         \"0x4a5d9d5ba4ce2de1728e3bf480350f25e07e21c947d19e3376f09b3c1e161742\");\n\n    /* Curve25519 - Check the behaviour of null public keys */\n    check_dh\n        (NOISE_DH_CURVE25519, 32, 32, 32, 32, \"25519\", 1, NOISE_ROLE_INITIATOR,\n         /* Alice's private key */\n         \"0x77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a\",\n         /* Alice's public key */\n         \"0x8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a\",\n         /* Null public key */\n         \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n         /* Shared secret - also null */\n         \"0x0000000000000000000000000000000000000000000000000000000000000000\");\n\n    /* Curve448 - From section 6.2 of RFC 7748 */\n    check_dh\n        (NOISE_DH_CURVE448, 56, 56, 56, 56, \"448\", 0, NOISE_ROLE_INITIATOR,\n         /* Alice's private key */\n         \"0x9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28d\"\n           \"d9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726b\",\n         /* Alices's public key */\n         \"0x9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c\"\n           \"22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0\",\n         /* Bob's public key */\n         \"0x3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b430\"\n           \"27d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609\",\n         /* Shared secret */\n         \"0x07fff4181ac6cc95ec1c16a94a0f74d12da232ce40a77552281d282b\"\n           \"b60c0b56fd2464c335543936521c24403085d59a449a5037514a879d\");\n    check_dh\n        (NOISE_DH_CURVE448, 56, 56, 56, 56, \"448\", 0, NOISE_ROLE_RESPONDER,\n         /* Bob's private key */\n         \"0x1c306a7ac2a0e2e0990b294470cba339e6453772b075811d8fad0d1d\"\n           \"6927c120bb5ee8972b0d3e21374c9c921b09d1b0366f10b65173992d\",\n         /* Bob's public key */\n         \"0x3eb7a829b0cd20f5bcfc0b599b6feccf6da4627107bdb0d4f345b430\"\n           \"27d8b972fc3e34fb4232a13ca706dcb57aec3dae07bdc1c67bf33609\",\n         /* Alices's public key */\n         \"0x9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c\"\n           \"22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0\",\n         /* Shared secret */\n         \"0x07fff4181ac6cc95ec1c16a94a0f74d12da232ce40a77552281d282b\"\n           \"b60c0b56fd2464c335543936521c24403085d59a449a5037514a879d\");\n\n    /* Curve448 - Check the behaviour of null public keys */\n    check_dh\n        (NOISE_DH_CURVE448, 56, 56, 56, 56, \"448\", 1, NOISE_ROLE_INITIATOR,\n         /* Alice's private key */\n         \"0x9a8f4925d1519f5775cf46b04b5800d4ee9ee8bae8bc5565d498c28d\"\n           \"d9c9baf574a9419744897391006382a6f127ab1d9ac2d8c0a598726b\",\n         /* Alices's public key */\n         \"0x9b08f7cc31b7e3e67d22d5aea121074a273bd2b83de09c63faa73d2c\"\n           \"22c5d9bbc836647241d953d40c5b12da88120d53177f80e532c41fa0\",\n         /* Null public key */\n         \"0x00000000000000000000000000000000000000000000000000000000\"\n           \"00000000000000000000000000000000000000000000000000000000\",\n         /* Shared secret - also null */\n         \"0x00000000000000000000000000000000000000000000000000000000\"\n           \"00000000000000000000000000000000000000000000000000000000\");\n\n    /* NewHope - Test vectors from the reference implementation of \"torref\" */\n    check_dh\n        (NOISE_DH_NEWHOPE, 64, 1824, 2048, 32, \"NewHope\",\n         0, NOISE_ROLE_INITIATOR,\n         /* Alice's private key */\n         \"0x934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e2\"\n           \"3e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n         /* Alice's public key */\n         \"0xa857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db\"\n           \"778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d3\"\n           \"2e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9\"\n           \"904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e\"\n           \"7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8\"\n           \"ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399\"\n           \"a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423\"\n           \"adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a\"\n           \"5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e480501583\"\n           \"9fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c1\"\n           \"3440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b\"\n           \"1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e4\"\n           \"2282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4e\"\n           \"b46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6\"\n           \"159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235\"\n           \"a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639\"\n           \"a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3\"\n           \"f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a2\"\n           \"7ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338\"\n           \"864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd\"\n           \"00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308f\"\n           \"ae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba2\"\n           \"15f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a\"\n           \"5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331\"\n           \"a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759\"\n           \"aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d8\"\n           \"8b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908\"\n           \"c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a\"\n           \"2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564a\"\n           \"ec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a5\"\n           \"0345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557\"\n           \"b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a3388329287\"\n           \"94579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e\"\n           \"3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a8885\"\n           \"1a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425\"\n           \"432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab8\"\n           \"9f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f5\"\n           \"4de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb004602\"\n           \"8881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f1869557\"\n           \"88c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a\"\n           \"9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea1\"\n           \"41647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5\"\n           \"e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741\"\n           \"ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb89855\"\n           \"4c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8\"\n           \"c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7\"\n           \"b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e6\"\n           \"92066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6\"\n           \"a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a6\"\n           \"7bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27\"\n           \"c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaeb\"\n           \"df5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d8\"\n           \"7a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e0535859\"\n           \"82300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b940\"\n           \"6f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095\"\n           \"f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178\"\n           \"349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be\",\n         /* Bob's public key */\n         \"0x49a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af400369\"\n           \"92d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e\"\n           \"20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b434\"\n           \"4c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e\"\n           \"5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c\"\n           \"85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c1\"\n           \"14c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f045\"\n           \"7d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed7\"\n           \"6bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1\"\n           \"aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82e\"\n           \"e143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d\"\n           \"922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e926\"\n           \"43aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316eb\"\n           \"d5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3\"\n           \"286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e9\"\n           \"1f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e\"\n           \"026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e13991413\"\n           \"68973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20\"\n           \"d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d\"\n           \"8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c\"\n           \"9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa8\"\n           \"24949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5\"\n           \"643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644\"\n           \"925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f\"\n           \"78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcc\"\n           \"a05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e24\"\n           \"6e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c18\"\n           \"00697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5\"\n           \"690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7\"\n           \"b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543f\"\n           \"cdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e521\"\n           \"8917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94b\"\n           \"fa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd45\"\n           \"27112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de6\"\n           \"9878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084\"\n           \"a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10\"\n           \"fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b45\"\n           \"8526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980\"\n           \"ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad42664500206543\"\n           \"6be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd\"\n           \"000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13\"\n           \"a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d\"\n           \"3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb5\"\n           \"6c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10\"\n           \"e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965c\"\n           \"fe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711\"\n           \"ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399\"\n           \"b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec85\"\n           \"5acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923\"\n           \"064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a\"\n           \"4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e40542\"\n           \"0d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a6\"\n           \"04374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f\"\n           \"97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c\"\n           \"9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb09\"\n           \"3569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6f\"\n           \"e4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf77\"\n           \"56b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691\"\n           \"149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0\"\n           \"b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e\"\n           \"01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce37102389\"\n           \"6bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b0\"\n           \"0912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39\"\n           \"b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e\",\n         /* Shared secret */\n         \"0x78d62ad989a3bd740f87b2cf6f914dfe8cb1ea52c4c9ad82ddac9a45ba8e59cb\");\n    check_dh\n        (NOISE_DH_NEWHOPE, 32, 2048, 1824, 32, \"NewHope\",\n         0, NOISE_ROLE_RESPONDER,\n         /* Bob's private key */\n         \"0xbac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n         /* Bob's public key */\n         \"0x49a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af400369\"\n           \"92d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e\"\n           \"20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b434\"\n           \"4c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e\"\n           \"5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c\"\n           \"85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c1\"\n           \"14c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f045\"\n           \"7d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed7\"\n           \"6bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1\"\n           \"aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82e\"\n           \"e143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d\"\n           \"922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e926\"\n           \"43aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316eb\"\n           \"d5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3\"\n           \"286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e9\"\n           \"1f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e\"\n           \"026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e13991413\"\n           \"68973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20\"\n           \"d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d\"\n           \"8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c\"\n           \"9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa8\"\n           \"24949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5\"\n           \"643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644\"\n           \"925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f\"\n           \"78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcc\"\n           \"a05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e24\"\n           \"6e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c18\"\n           \"00697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5\"\n           \"690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7\"\n           \"b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543f\"\n           \"cdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e521\"\n           \"8917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94b\"\n           \"fa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd45\"\n           \"27112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de6\"\n           \"9878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084\"\n           \"a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10\"\n           \"fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b45\"\n           \"8526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980\"\n           \"ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad42664500206543\"\n           \"6be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd\"\n           \"000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13\"\n           \"a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d\"\n           \"3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb5\"\n           \"6c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10\"\n           \"e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965c\"\n           \"fe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711\"\n           \"ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399\"\n           \"b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec85\"\n           \"5acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923\"\n           \"064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a\"\n           \"4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e40542\"\n           \"0d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a6\"\n           \"04374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f\"\n           \"97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c\"\n           \"9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb09\"\n           \"3569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6f\"\n           \"e4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf77\"\n           \"56b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691\"\n           \"149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0\"\n           \"b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e\"\n           \"01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce37102389\"\n           \"6bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b0\"\n           \"0912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39\"\n           \"b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e\",\n         /* Alice's public key */\n         \"0xa857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db\"\n           \"778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d3\"\n           \"2e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9\"\n           \"904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e\"\n           \"7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8\"\n           \"ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399\"\n           \"a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423\"\n           \"adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a\"\n           \"5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e480501583\"\n           \"9fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c1\"\n           \"3440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b\"\n           \"1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e4\"\n           \"2282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4e\"\n           \"b46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6\"\n           \"159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235\"\n           \"a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639\"\n           \"a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3\"\n           \"f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a2\"\n           \"7ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338\"\n           \"864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd\"\n           \"00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308f\"\n           \"ae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba2\"\n           \"15f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a\"\n           \"5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331\"\n           \"a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759\"\n           \"aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d8\"\n           \"8b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908\"\n           \"c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a\"\n           \"2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564a\"\n           \"ec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a5\"\n           \"0345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557\"\n           \"b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a3388329287\"\n           \"94579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e\"\n           \"3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a8885\"\n           \"1a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425\"\n           \"432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab8\"\n           \"9f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f5\"\n           \"4de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb004602\"\n           \"8881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f1869557\"\n           \"88c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a\"\n           \"9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea1\"\n           \"41647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5\"\n           \"e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741\"\n           \"ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb89855\"\n           \"4c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8\"\n           \"c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7\"\n           \"b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e6\"\n           \"92066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6\"\n           \"a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a6\"\n           \"7bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27\"\n           \"c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaeb\"\n           \"df5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d8\"\n           \"7a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e0535859\"\n           \"82300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b940\"\n           \"6f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095\"\n           \"f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178\"\n           \"349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be\",\n         /* Shared secret */\n         \"0x78d62ad989a3bd740f87b2cf6f914dfe8cb1ea52c4c9ad82ddac9a45ba8e59cb\");\n}\n\n/* Check the generation and use of new key pairs */\nstatic void check_dh_generate(int id)\n{\n    NoiseDHState *state1;\n    NoiseDHState *state2;\n    uint8_t shared1[MAX_DH_KEY_LEN];\n    uint8_t shared2[MAX_DH_KEY_LEN];\n    size_t shared_key_len;\n\n    /* Create the DH objects and get the properties */\n    compare(noise_dhstate_new_by_id(&state1, id), NOISE_ERROR_NONE);\n    compare(noise_dhstate_new_by_id(&state2, id), NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_dh_id(state1), id);\n    compare(noise_dhstate_get_dh_id(state2), id);\n    shared_key_len = noise_dhstate_get_shared_key_length(state1);\n    verify(shared_key_len <= MAX_DH_KEY_LEN);\n\n    /* Set the roles for the two DHState objects */\n    compare(noise_dhstate_set_role(state1, NOISE_ROLE_INITIATOR),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_role(state2, NOISE_ROLE_RESPONDER),\n            NOISE_ERROR_NONE);\n\n    /* Generate keypairs for Alice and Bob */\n    compare(noise_dhstate_generate_keypair(state1), NOISE_ERROR_NONE);\n    if (id != NOISE_DH_NEWHOPE) {\n        verify(!noise_dhstate_is_ephemeral_only(state1));\n        verify(!noise_dhstate_is_ephemeral_only(state2));\n        compare(noise_dhstate_generate_keypair(state2), NOISE_ERROR_NONE);\n    } else {\n        /* Check the NewHope parameters */\n        verify(noise_dhstate_is_ephemeral_only(state1));\n        verify(noise_dhstate_is_ephemeral_only(state2));\n        compare(noise_dhstate_get_private_key_length(state1), 64);\n        compare(noise_dhstate_get_public_key_length(state1), 1824);\n        compare(noise_dhstate_get_private_key_length(state2), 32);\n        compare(noise_dhstate_get_public_key_length(state2), 2048);\n\n        /* NewHope is \"mutual\" so Bob's object needs to know about Alice's\n         * so that it will generate Bob's \"keypair\" with respect to the\n         * parameters in Alice's public key. */\n        compare(noise_dhstate_generate_dependent_keypair(state2, state1),\n                NOISE_ERROR_NONE);\n    }\n\n    /* Calculate the shared key on both ends and compare */\n    memset(shared1, 0xAA, sizeof(shared1));\n    memset(shared2, 0x66, sizeof(shared2));\n    compare(noise_dhstate_calculate(state1, state2, shared1, shared_key_len),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_calculate (state2, state1, shared2, shared_key_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(shared1, shared2, shared_key_len));\n\n    /* Check parameter error conditions */\n    compare(noise_dhstate_generate_keypair(0), NOISE_ERROR_INVALID_PARAM);\n\n    /* Clean up */\n    compare(noise_dhstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_dhstate_free(state2), NOISE_ERROR_NONE);\n}\n\n/* Check the generation and use of new key pairs */\nstatic void dhstate_check_generate_keypair(void)\n{\n    check_dh_generate(NOISE_DH_CURVE25519);\n    check_dh_generate(NOISE_DH_CURVE448);\n    check_dh_generate(NOISE_DH_NEWHOPE);\n}\n\n/* Check other error conditions that can be reported by the functions */\nstatic void dhstate_check_errors(void)\n{\n    NoiseDHState *state;\n\n    /* NULL parameters in various positions */\n    compare(noise_dhstate_free(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_get_dh_id(0), NOISE_DH_NONE);\n    compare(noise_dhstate_get_private_key_length(0), 0);\n    compare(noise_dhstate_get_public_key_length(0), 0);\n    compare(noise_dhstate_get_shared_key_length(0), 0);\n    compare(noise_dhstate_has_keypair(0), 0);\n    compare(noise_dhstate_has_public_key(0), 0);\n    compare(noise_dhstate_new_by_id(0, NOISE_DH_CURVE25519),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_new_by_name(0, \"25519\"), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_generate_keypair(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_set_null_public_key(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_dhstate_is_null_public_key(0), 0);\n\n    /* If the id/name is unknown, the state parameter should be set to NULL */\n    state = (NoiseDHState *)8;\n    compare(noise_dhstate_new_by_id(&state, NOISE_HASH_SHA512),\n            NOISE_ERROR_UNKNOWN_ID);\n    verify(state == NULL);\n    state = (NoiseDHState *)8;\n    compare(noise_dhstate_new_by_name(&state, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n    state = (NoiseDHState *)8;\n    compare(noise_dhstate_new_by_name(&state, \"Curve25519\"), /* Should be \"25519\" */\n            NOISE_ERROR_UNKNOWN_NAME);\n    verify(state == NULL);\n}\n\nvoid test_dhstate(void)\n{\n    dhstate_check_test_vectors();\n    dhstate_check_generate_keypair();\n    dhstate_check_errors();\n}\n"
  },
  {
    "path": "tests/unit/test-errors.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\n#define NOISE_MIN_ERROR     NOISE_ID('E', 1)\n#define NOISE_MAX_ERROR     NOISE_ID('E', 17)\n\nvoid test_errors(void)\n{\n    char buffer[64];\n    int err;\n\n    /* Check that every known error code has a meaningful message defined\n       and that it is properly NUL-terminated within the specified size. */\n    for (err = NOISE_MIN_ERROR; err < NOISE_MAX_ERROR; ++err) {\n        memset(buffer, 0xAA, sizeof(buffer));\n        compare(noise_strerror(err, buffer, sizeof(buffer)), 0);\n        verify(memchr(buffer, 0, sizeof(buffer)) != 0);\n        verify(strncmp(buffer, \"Unknown error 0x\", 16) != 0);\n        verify(strncmp(buffer, \"END\", 3) != 0);\n        memset(buffer, 0xAA, sizeof(buffer));\n        compare(noise_strerror(err, buffer, 5), 0);\n        verify(memchr(buffer, 0, sizeof(buffer)) != 0);\n    }\n\n    /* Check some specific errors */\n    err = NOISE_ERROR_NONE;\n    memset(buffer, 0xAA, sizeof(buffer));\n    compare(noise_strerror(err, buffer, sizeof(buffer)), 0);\n    verify(memchr(buffer, 0, sizeof(buffer)) != 0);\n    compare(strcmp(buffer, \"No error\"), 0);\n    err = NOISE_ERROR_NO_MEMORY;\n    memset(buffer, 0xAA, sizeof(buffer));\n    compare(noise_strerror(err, buffer, sizeof(buffer)), 0);\n    verify(memchr(buffer, 0, sizeof(buffer)) != 0);\n    compare(strcmp(buffer, \"Out of memory\"), 0);\n    err = NOISE_ERROR_INVALID_NONCE;\n    memset(buffer, 0xAA, sizeof(buffer));\n    compare(noise_strerror(err, buffer, sizeof(buffer)), 0);\n    verify(memchr(buffer, 0, sizeof(buffer)) != 0);\n    compare(strcmp(buffer, \"Invalid nonce\"), 0);\n\n    /* Check that out of range error codes map to \"Unknown error\" */\n    err = NOISE_MIN_ERROR - 1;\n    memset(buffer, 0xAA, sizeof(buffer));\n    compare(noise_strerror(err, buffer, sizeof(buffer)), 0);\n    verify(memchr(buffer, 0, sizeof(buffer)) != 0);\n    verify(strncmp(buffer, \"Unknown error 0x\", 16) == 0);\n    err = NOISE_MAX_ERROR + 1;\n    memset(buffer, 0xAA, sizeof(buffer));\n    compare(noise_strerror(err, buffer, sizeof(buffer)), 0);\n    verify(memchr(buffer, 0, sizeof(buffer)) != 0);\n    verify(strncmp(buffer, \"Unknown error 0x\", 16) == 0);\n\n    /* Dump the error strings to help test if the right string is\n       associated with the right code */\n    if (verbose) {\n        #define dump_error(name) noise_perror(#name, name)\n        dump_error(NOISE_ERROR_NONE);\n        dump_error(NOISE_ERROR_NO_MEMORY);\n        dump_error(NOISE_ERROR_UNKNOWN_ID);\n        dump_error(NOISE_ERROR_UNKNOWN_NAME);\n        dump_error(NOISE_ERROR_MAC_FAILURE);\n        dump_error(NOISE_ERROR_NOT_APPLICABLE);\n        dump_error(NOISE_ERROR_SYSTEM);\n        dump_error(NOISE_ERROR_REMOTE_KEY_REQUIRED);\n        dump_error(NOISE_ERROR_LOCAL_KEY_REQUIRED);\n        dump_error(NOISE_ERROR_PSK_REQUIRED);\n        dump_error(NOISE_ERROR_INVALID_LENGTH);\n        dump_error(NOISE_ERROR_INVALID_PARAM);\n        dump_error(NOISE_ERROR_INVALID_STATE);\n        dump_error(NOISE_ERROR_INVALID_NONCE);\n        dump_error(NOISE_ERROR_INVALID_PRIVATE_KEY);\n        dump_error(NOISE_ERROR_INVALID_PUBLIC_KEY);\n        dump_error(NOISE_ERROR_INVALID_FORMAT);\n        dump_error(NOISE_ERROR_INVALID_SIGNATURE);\n    }\n}\n"
  },
  {
    "path": "tests/unit/test-handshakestate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n#include \"protocol/internal.h\"\n\n/* Key values for testing purposes */\nstatic uint8_t const init_private_25519[32] = {\n    0xe6, 0x1e, 0xf9, 0x91, 0x9c, 0xde, 0x45, 0xdd,\n    0x5f, 0x82, 0x16, 0x64, 0x04, 0xbd, 0x08, 0xe3,\n    0x8b, 0xce, 0xb5, 0xdf, 0xdf, 0xde, 0xd0, 0xa3,\n    0x4c, 0x8d, 0xf7, 0xed, 0x54, 0x22, 0x14, 0xd1\n};\nstatic uint8_t init_public_25519[32];\nstatic uint8_t const init_private_448[56] = {\n    0x34, 0xd5, 0x64, 0xc4, 0xbe, 0x96, 0x3d, 0x1b,\n    0x2a, 0x89, 0xfc, 0xfe, 0x83, 0xe6, 0xa7, 0x2b,\n    0x5e, 0x3f, 0x5e, 0x31, 0x27, 0xf9, 0xf5, 0x96,\n    0xff, 0xc7, 0x57, 0x5e, 0x41, 0x8d, 0xfc, 0x1f,\n    0x4e, 0x82, 0x7c, 0xfc, 0x10, 0xc9, 0xfe, 0xd3,\n    0x8e, 0x92, 0xad, 0x56, 0xdd, 0xf8, 0xf0, 0x85,\n    0x71, 0x43, 0x0d, 0xf2, 0xe7, 0x6d, 0x54, 0x11\n};\nstatic uint8_t init_public_448[56];\nstatic uint8_t const resp_private_25519[32] = {\n    0x4a, 0x3a, 0xcb, 0xfd, 0xb1, 0x63, 0xde, 0xc6,\n    0x51, 0xdf, 0xa3, 0x19, 0x4d, 0xec, 0xe6, 0x76,\n    0xd4, 0x37, 0x02, 0x9c, 0x62, 0xa4, 0x08, 0xb4,\n    0xc5, 0xea, 0x91, 0x14, 0x24, 0x6e, 0x48, 0x93\n};\nstatic uint8_t resp_public_25519[32];\nstatic uint8_t const resp_private_448[56] = {\n    0xa9, 0xb4, 0x59, 0x71, 0x18, 0x08, 0x82, 0xa7,\n    0x9b, 0x89, 0xa3, 0x39, 0x95, 0x44, 0xa4, 0x25,\n    0xef, 0x81, 0x36, 0xd2, 0x78, 0xef, 0xa4, 0x43,\n    0xed, 0x67, 0xd3, 0xff, 0x9d, 0x36, 0xe8, 0x83,\n    0xbc, 0x33, 0x0c, 0x62, 0x95, 0xbb, 0xf6, 0xed,\n    0x73, 0xff, 0x6f, 0xd1, 0x0c, 0xbe, 0xd7, 0x67,\n    0xad, 0x05, 0xce, 0x03, 0xeb, 0xd2, 0x7c, 0x7c\n};\nstatic uint8_t resp_public_448[56];\nstatic uint8_t const resp_private_25519_alt[32] = {\n    0xbb, 0xdb, 0x4c, 0xdb, 0xd3, 0x09, 0xf1, 0xa1,\n    0xf2, 0xe1, 0x45, 0x69, 0x67, 0xfe, 0x28, 0x8c,\n    0xad, 0xd6, 0xf7, 0x12, 0xd6, 0x5d, 0xc7, 0xb7,\n    0x79, 0x3d, 0x5e, 0x63, 0xda, 0x6b, 0x37, 0x5b\n};\nstatic uint8_t resp_public_25519_alt[32];\nstatic uint8_t const resp_private_448_alt[56] = {\n    0x3f, 0xac, 0xf7, 0x50, 0x3e, 0xbe, 0xe2, 0x52,\n    0x46, 0x56, 0x89, 0xf1, 0xd4, 0xe3, 0xb1, 0xdd,\n    0x21, 0x96, 0x39, 0xef, 0x9d, 0xe4, 0xff, 0xd6,\n    0x04, 0x9d, 0x6d, 0x71, 0xa0, 0xf6, 0x21, 0x26,\n    0x84, 0x0f, 0xeb, 0xb9, 0x90, 0x42, 0x42, 0x1c,\n    0xe1, 0x2a, 0xf6, 0x62, 0x6d, 0x98, 0xd9, 0x17,\n    0x02, 0x60, 0x39, 0x0f, 0xbc, 0x83, 0x99, 0xa5\n};\nstatic uint8_t resp_public_448_alt[56];\nstatic uint8_t const psk[32] = {\n    0xf3, 0xd9, 0x4d, 0xa3, 0x74, 0x53, 0x90, 0x36,\n    0x62, 0xf7, 0xd2, 0x16, 0xfc, 0xd2, 0x0f, 0xd9,\n    0x9f, 0xc0, 0xeb, 0xc2, 0x7a, 0x62, 0xc0, 0xc4,\n    0xf9, 0xd7, 0xe1, 0x25, 0x18, 0xef, 0x1d, 0xe6\n};\n\n/* Derive the public key values for testing purposes */\nstatic void handshakestate_derive_keys(void)\n{\n    NoiseDHState *dh;\n\n    /* Curve25519 keys */\n    compare(noise_dhstate_new_by_id(&dh, NOISE_DH_CURVE25519),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_keypair_private\n                (dh, init_private_25519, sizeof(init_private_25519)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_public_key\n                (dh, init_public_25519, sizeof(init_public_25519)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_keypair_private\n                (dh, resp_private_25519, sizeof(resp_private_25519)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_public_key\n                (dh, resp_public_25519, sizeof(resp_public_25519)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_keypair_private\n                (dh, resp_private_25519_alt, sizeof(resp_private_25519_alt)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_public_key\n                (dh, resp_public_25519_alt, sizeof(resp_public_25519_alt)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_free(dh), NOISE_ERROR_NONE);\n\n    /* Curve448 keys */\n    compare(noise_dhstate_new_by_id(&dh, NOISE_DH_CURVE448),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_keypair_private\n                (dh, init_private_448, sizeof(init_private_448)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_public_key\n                (dh, init_public_448, sizeof(init_public_448)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_keypair_private\n                (dh, resp_private_448, sizeof(resp_private_448)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_public_key\n                (dh, resp_public_448, sizeof(resp_public_448)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_set_keypair_private\n                (dh, resp_private_448_alt, sizeof(resp_private_448_alt)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_get_public_key\n                (dh, resp_public_448_alt, sizeof(resp_public_448_alt)),\n            NOISE_ERROR_NONE);\n    compare(noise_dhstate_free(dh), NOISE_ERROR_NONE);\n}\n\n/* Check the behaviour of a specific handshake protocol.  These tests check\n   whether the initiator and responder can talk to each other via the\n   protocol but they do not check for correct bytes on the wire.  Wire checks\n   are done by the separate vector tests. */\nstatic void check_handshake_protocol(const char *name)\n{\n    NoiseHandshakeState *initiator;\n    NoiseHandshakeState *responder;\n    NoiseHandshakeState *send;\n    NoiseHandshakeState *recv;\n    NoiseProtocolId id, id2;\n    NoiseDHState *dh;\n    const uint8_t *pattern;\n    NoisePatternFlags_t init_flags;\n    NoisePatternFlags_t resp_flags;\n    uint8_t message[4096];\n    uint8_t payload[23];\n    NoiseBuffer mbuf;\n    NoiseBuffer pbuf;\n    int action;\n    int index;\n\n    /* Set the name of this test for error reporting */\n    data_name = name;\n\n    /* Convert the name into a protocol identifier and look up the pattern */\n    compare(noise_protocol_name_to_id(&id, name, strlen(name)),\n            NOISE_ERROR_NONE);\n    pattern = noise_pattern_lookup(id.pattern_id);\n    verify(pattern != 0);\n    init_flags = ((NoisePatternFlags_t)(pattern[0])) |\n                (((NoisePatternFlags_t)(pattern[1])) << 8);\n    resp_flags = noise_pattern_reverse_flags(init_flags);\n\n    /* Create two objects for the initiator and responder,\n       one by name and the other by identifier. */\n    compare(noise_handshakestate_new_by_name\n                (&initiator, name, NOISE_ROLE_INITIATOR),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_new_by_id\n                (&responder, &id, NOISE_ROLE_RESPONDER),\n            NOISE_ERROR_NONE);\n\n    /* Check that the \"needs\" functions report results consistent\n       with the requirements of the protocol */\n    compare(noise_handshakestate_needs_local_keypair(initiator),\n            (init_flags & NOISE_PAT_FLAG_LOCAL_STATIC) != 0);\n    compare(noise_handshakestate_needs_remote_public_key(initiator),\n            (init_flags & NOISE_PAT_FLAG_REMOTE_REQUIRED) != 0);\n    compare(noise_handshakestate_needs_pre_shared_key(initiator),\n            id.prefix_id == NOISE_PREFIX_PSK);\n    compare(noise_handshakestate_needs_local_keypair(responder),\n            (resp_flags & NOISE_PAT_FLAG_LOCAL_STATIC) != 0);\n    compare(noise_handshakestate_needs_remote_public_key(responder),\n            (resp_flags & NOISE_PAT_FLAG_REMOTE_REQUIRED) != 0);\n    compare(noise_handshakestate_needs_pre_shared_key(responder),\n            id.prefix_id == NOISE_PREFIX_PSK);\n\n    /* Check other properties */\n    compare(noise_handshakestate_get_role(initiator), NOISE_ROLE_INITIATOR);\n    compare(noise_handshakestate_get_role(responder), NOISE_ROLE_RESPONDER);\n    memset(&id2, 0xAA, sizeof(id2));\n    compare(noise_handshakestate_get_protocol_id(initiator, &id2),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(&id, &id2, sizeof(id)));\n    memset(&id2, 0x66, sizeof(id2));\n    compare(noise_handshakestate_get_protocol_id(responder, &id2),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(&id, &id2, sizeof(id)));\n\n    /* Specify a fixed prologue on each end */\n    compare(noise_handshakestate_set_prologue(initiator, \"Hello\", 5),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_set_prologue(responder, \"Hello\", 5),\n            NOISE_ERROR_NONE);\n\n    /* Set the keys that are needed on each end */\n    compare(noise_handshakestate_has_local_keypair(initiator), 0);\n    if (noise_handshakestate_needs_local_keypair(initiator)) {\n        compare(noise_handshakestate_start(initiator),\n                NOISE_ERROR_LOCAL_KEY_REQUIRED);\n        dh = noise_handshakestate_get_local_keypair_dh(initiator);\n        if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, init_private_25519, sizeof(init_private_25519)),\n                    NOISE_ERROR_NONE);\n        } else {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, init_private_448, sizeof(init_private_448)),\n                    NOISE_ERROR_NONE);\n        }\n        compare(noise_handshakestate_has_local_keypair(initiator), 1);\n    } else {\n        dh = noise_handshakestate_get_local_keypair_dh(initiator);\n        verify(dh == 0);\n    }\n    compare(noise_handshakestate_has_remote_public_key(initiator), 0);\n    if (noise_handshakestate_needs_remote_public_key(initiator)) {\n        compare(noise_handshakestate_start(initiator),\n                NOISE_ERROR_REMOTE_KEY_REQUIRED);\n        dh = noise_handshakestate_get_remote_public_key_dh(initiator);\n        if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n            compare(noise_dhstate_set_public_key\n                        (dh, resp_public_25519, sizeof(resp_public_25519)),\n                    NOISE_ERROR_NONE);\n        } else {\n            compare(noise_dhstate_set_public_key\n                        (dh, resp_public_448, sizeof(resp_public_448)),\n                    NOISE_ERROR_NONE);\n        }\n        compare(noise_handshakestate_has_remote_public_key(initiator), 1);\n    } else {\n        dh = noise_handshakestate_get_remote_public_key_dh(initiator);\n        if ((init_flags & NOISE_PAT_FLAG_REMOTE_STATIC) != 0)\n            verify(dh != 0);\n        else\n            verify(dh == 0);\n    }\n    compare(noise_handshakestate_has_local_keypair(responder), 0);\n    if (noise_handshakestate_needs_local_keypair(responder)) {\n        compare(noise_handshakestate_start(responder),\n                NOISE_ERROR_LOCAL_KEY_REQUIRED);\n        dh = noise_handshakestate_get_local_keypair_dh(responder);\n        if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, resp_private_25519, sizeof(resp_private_25519)),\n                    NOISE_ERROR_NONE);\n        } else {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, resp_private_448, sizeof(resp_private_448)),\n                    NOISE_ERROR_NONE);\n        }\n        compare(noise_handshakestate_has_local_keypair(responder), 1);\n    } else {\n        dh = noise_handshakestate_get_local_keypair_dh(responder);\n        verify(dh == 0);\n    }\n    compare(noise_handshakestate_has_remote_public_key(responder), 0);\n    if (noise_handshakestate_needs_remote_public_key(responder)) {\n        compare(noise_handshakestate_start(responder),\n                NOISE_ERROR_REMOTE_KEY_REQUIRED);\n        dh = noise_handshakestate_get_remote_public_key_dh(responder);\n        if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n            compare(noise_dhstate_set_public_key\n                        (dh, init_public_25519, sizeof(init_public_25519)),\n                    NOISE_ERROR_NONE);\n        } else {\n            compare(noise_dhstate_set_public_key\n                        (dh, init_public_448, sizeof(init_public_448)),\n                    NOISE_ERROR_NONE);\n        }\n        compare(noise_handshakestate_has_remote_public_key(responder), 1);\n    } else {\n        dh = noise_handshakestate_get_remote_public_key_dh(responder);\n        if ((init_flags & NOISE_PAT_FLAG_LOCAL_STATIC) != 0)\n            verify(dh != 0);\n        else\n            verify(dh == 0);\n    }\n    compare(noise_handshakestate_has_pre_shared_key(initiator), 0);\n    if (noise_handshakestate_needs_pre_shared_key(initiator)) {\n        compare(noise_handshakestate_start(initiator),\n                NOISE_ERROR_PSK_REQUIRED);\n        compare(noise_handshakestate_set_pre_shared_key\n                    (initiator, psk, sizeof(psk)),\n                NOISE_ERROR_NONE);\n        compare(noise_handshakestate_has_pre_shared_key(initiator), 1);\n    } else {\n        compare(noise_handshakestate_set_pre_shared_key\n                    (initiator, psk, sizeof(psk)),\n                NOISE_ERROR_NOT_APPLICABLE);\n    }\n    compare(noise_handshakestate_has_pre_shared_key(responder), 0);\n    if (noise_handshakestate_needs_pre_shared_key(responder)) {\n        compare(noise_handshakestate_start(responder),\n                NOISE_ERROR_PSK_REQUIRED);\n        compare(noise_handshakestate_set_pre_shared_key\n                    (responder, psk, sizeof(psk)),\n                NOISE_ERROR_NONE);\n        compare(noise_handshakestate_has_pre_shared_key(responder), 1);\n    } else {\n        compare(noise_handshakestate_set_pre_shared_key\n                    (initiator, psk, sizeof(psk)),\n                NOISE_ERROR_NOT_APPLICABLE);\n    }\n\n    /* Start the handshake running */\n    compare(noise_handshakestate_start(initiator), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_start(responder), NOISE_ERROR_NONE);\n\n    /* Starting the handshake again should fail (already running) */\n    compare(noise_handshakestate_start(initiator), NOISE_ERROR_INVALID_STATE);\n    compare(noise_handshakestate_start(responder), NOISE_ERROR_INVALID_STATE);\n\n    /* Run the two handshakes in parallel while something to read/write */\n    memset(payload, 0xAA, sizeof(payload));\n    for (;;) {\n        /* Which direction for this message? */\n        action = noise_handshakestate_get_action(initiator);\n        if (action == NOISE_ACTION_WRITE_MESSAGE) {\n            send = initiator;\n            recv = responder;\n        } else if (action == NOISE_ACTION_READ_MESSAGE) {\n            send = responder;\n            recv = initiator;\n        } else {\n            break;\n        }\n\n        /* Check that the objects have the right action for this step */\n        compare(noise_handshakestate_get_action(send),\n                NOISE_ACTION_WRITE_MESSAGE);\n        compare(noise_handshakestate_get_action(recv),\n                NOISE_ACTION_READ_MESSAGE);\n\n        /* Cannot perform the wrong operation on the sender or receiver */\n        noise_buffer_set_output(mbuf, message, sizeof(message));\n        noise_buffer_set_output(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_read_message(send, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_STATE);\n        noise_buffer_set_output(mbuf, message, sizeof(message));\n        noise_buffer_set_input(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_write_message(recv, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_STATE);\n\n        /* Parameter errors */\n        compare(noise_handshakestate_write_message(0, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_handshakestate_write_message(send, 0, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        mbuf.data = 0;\n        compare(noise_handshakestate_write_message(send, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        noise_buffer_set_output(mbuf, message, sizeof(message));\n        pbuf.data = 0;\n        compare(noise_handshakestate_write_message(send, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        noise_buffer_set_output(mbuf, message, sizeof(message));\n        noise_buffer_set_output(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_read_message(0, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_handshakestate_read_message(recv, 0, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        mbuf.data = 0;\n        compare(noise_handshakestate_read_message(recv, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        noise_buffer_set_output(mbuf, message, sizeof(message));\n        pbuf.data = 0;\n        compare(noise_handshakestate_read_message(recv, &mbuf, &pbuf),\n                NOISE_ERROR_INVALID_PARAM);\n\n        /* Transfer the message to the other side properly */\n        noise_buffer_set_output(mbuf, message, sizeof(message));\n        noise_buffer_set_input(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_write_message(send, &mbuf, &pbuf),\n                NOISE_ERROR_NONE);\n        noise_buffer_set_output(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_read_message(recv, &mbuf, &pbuf),\n                NOISE_ERROR_NONE);\n    }\n\n    /* Both handshakes should now have \"split\" */\n    compare(noise_handshakestate_get_action(initiator), NOISE_ACTION_SPLIT);\n    compare(noise_handshakestate_get_action(responder), NOISE_ACTION_SPLIT);\n\n    /* Check that the handshake hashes are identical */\n    compare(noise_handshakestate_get_handshake_hash(initiator, message, 64),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_get_handshake_hash(responder, message + 64, 64),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(message, message + 64, 64));\n\n    /* Check handshake hash truncation */\n    memset(message, 0xAA, sizeof(message));\n    compare(noise_handshakestate_get_handshake_hash(initiator, message, 16),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_get_handshake_hash(responder, message + 64, 16),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(message, message + 64, 16));\n    for (index = 16; index < 64; ++index)\n        compare(message[index], 0xAA);\n\n    /* Check for various error conditions */\n    compare(noise_handshakestate_get_protocol_id(0, &id2),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_handshakestate_get_protocol_id(initiator, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_handshakestate_get_handshake_hash(0, message, 64),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_handshakestate_get_handshake_hash(initiator, 0, 64),\n            NOISE_ERROR_INVALID_PARAM);\n\n    /* Clean up */\n    compare(noise_handshakestate_free(initiator), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_free(responder), NOISE_ERROR_NONE);\n}\n\nstatic void handshakestate_check_protocols(void)\n{\n    check_handshake_protocol(\"Noise_N_25519_ChaChaPoly_BLAKE2s\");\n    check_handshake_protocol(\"Noise_K_25519_AESGCM_SHA256\");\n    check_handshake_protocol(\"Noise_X_448_AESGCM_SHA512\");\n\n    check_handshake_protocol(\"NoisePSK_N_25519_ChaChaPoly_BLAKE2s\");\n    check_handshake_protocol(\"NoisePSK_K_25519_AESGCM_SHA256\");\n    check_handshake_protocol(\"NoisePSK_X_448_AESGCM_SHA512\");\n\n    check_handshake_protocol(\"Noise_NN_25519_ChaChaPoly_BLAKE2s\");\n    check_handshake_protocol(\"Noise_NK_448_ChaChaPoly_BLAKE2b\");\n    check_handshake_protocol(\"Noise_NX_25519_AESGCM_BLAKE2b\");\n\n    check_handshake_protocol(\"NoisePSK_NN_25519_ChaChaPoly_BLAKE2s\");\n    check_handshake_protocol(\"NoisePSK_NK_448_ChaChaPoly_BLAKE2b\");\n    check_handshake_protocol(\"NoisePSK_NX_25519_AESGCM_BLAKE2b\");\n\n    check_handshake_protocol(\"Noise_XN_448_AESGCM_BLAKE2s\");\n    check_handshake_protocol(\"Noise_XK_25519_AESGCM_SHA256\");\n    check_handshake_protocol(\"Noise_XX_25519_ChaChaPoly_SHA512\");\n\n    check_handshake_protocol(\"NoisePSK_XN_448_AESGCM_BLAKE2s\");\n    check_handshake_protocol(\"NoisePSK_XK_25519_AESGCM_SHA256\");\n    check_handshake_protocol(\"NoisePSK_XX_25519_ChaChaPoly_SHA512\");\n\n    check_handshake_protocol(\"Noise_KN_448_ChaChaPoly_SHA512\");\n    check_handshake_protocol(\"Noise_KK_25519_AESGCM_BLAKE2b\");\n    check_handshake_protocol(\"Noise_KX_448_ChaChaPoly_SHA256\");\n\n    check_handshake_protocol(\"NoisePSK_KN_448_ChaChaPoly_SHA512\");\n    check_handshake_protocol(\"NoisePSK_KK_25519_AESGCM_BLAKE2b\");\n    check_handshake_protocol(\"NoisePSK_KX_448_ChaChaPoly_SHA256\");\n\n    check_handshake_protocol(\"Noise_IN_25519_ChaChaPoly_BLAKE2s\");\n    check_handshake_protocol(\"Noise_IK_25519_AESGCM_BLAKE2b\");\n    check_handshake_protocol(\"Noise_IX_448_AESGCM_SHA512\");\n\n    check_handshake_protocol(\"NoisePSK_IN_25519_ChaChaPoly_BLAKE2s\");\n    check_handshake_protocol(\"NoisePSK_IK_25519_AESGCM_BLAKE2b\");\n    check_handshake_protocol(\"NoisePSK_IX_448_AESGCM_SHA512\");\n}\n\n/* Check that \"IK\" correctly falls back to \"XXfallback\" */\nstatic void check_fallback_protocol\n    (const char *name, int fallback_anyway, int trial_initiator_decrypt)\n{\n    NoiseHandshakeState *initiator;\n    NoiseHandshakeState *responder;\n    NoiseDHState *dh;\n    uint8_t message[4096];\n    uint8_t message2[4096];\n    uint8_t payload[23];\n    NoiseBuffer mbuf;\n    NoiseBuffer pbuf;\n\n    /* Set the name of this test for error reporting */\n    data_name = name;\n\n    /* Create the two objects for an initial \"IK\" handshake */\n    compare(noise_handshakestate_new_by_name\n                (&initiator, name, NOISE_ROLE_INITIATOR),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_new_by_name\n                (&responder, name, NOISE_ROLE_RESPONDER),\n            NOISE_ERROR_NONE);\n\n    /* Set up the keys.  The responder uses an alternate key that is\n       different from the one expected by the initiator */\n    compare(noise_handshakestate_set_prologue(initiator, \"Hello\", 5),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_set_prologue(responder, \"Hello\", 5),\n            NOISE_ERROR_NONE);\n    dh = noise_handshakestate_get_local_keypair_dh(initiator);\n    if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n        compare(noise_dhstate_set_keypair_private\n                    (dh, init_private_25519, sizeof(init_private_25519)),\n                NOISE_ERROR_NONE);\n    } else {\n        compare(noise_dhstate_set_keypair_private\n                    (dh, init_private_448, sizeof(init_private_448)),\n                NOISE_ERROR_NONE);\n    }\n    dh = noise_handshakestate_get_remote_public_key_dh(initiator);\n    if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n        compare(noise_dhstate_set_public_key\n                    (dh, resp_public_25519, sizeof(resp_public_25519)),\n                NOISE_ERROR_NONE);\n    } else {\n        compare(noise_dhstate_set_public_key\n                    (dh, resp_public_448, sizeof(resp_public_448)),\n                NOISE_ERROR_NONE);\n    }\n    dh = noise_handshakestate_get_local_keypair_dh(responder);\n    if (!fallback_anyway) {\n        if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, resp_private_25519_alt, sizeof(resp_private_25519_alt)),\n                    NOISE_ERROR_NONE);\n        } else {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, resp_private_448_alt, sizeof(resp_private_448_alt)),\n                    NOISE_ERROR_NONE);\n        }\n    } else {\n        /* Matching keys, but the responder will fallback anyway */\n        if (noise_dhstate_get_dh_id(dh) == NOISE_DH_CURVE25519) {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, resp_private_25519, sizeof(resp_private_25519)),\n                    NOISE_ERROR_NONE);\n        } else {\n            compare(noise_dhstate_set_keypair_private\n                        (dh, resp_private_448, sizeof(resp_private_448)),\n                    NOISE_ERROR_NONE);\n        }\n    }\n    if (noise_handshakestate_needs_pre_shared_key(initiator)) {\n        compare(noise_handshakestate_set_pre_shared_key\n                    (initiator, psk, sizeof(psk)),\n                NOISE_ERROR_NONE);\n        compare(noise_handshakestate_set_pre_shared_key\n                    (responder, psk, sizeof(psk)),\n                NOISE_ERROR_NONE);\n    }\n\n    /* Start the handshakes running */\n    compare(noise_handshakestate_start(initiator), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_start(responder), NOISE_ERROR_NONE);\n\n    /* Create the first outgoing \"IK\" packet from the initiator */\n    memset(message, 0, sizeof(message));\n    memset(payload, 0x66, sizeof(payload));\n    noise_buffer_set_output(mbuf, message, sizeof(message));\n    noise_buffer_set_input(pbuf, payload, sizeof(payload));\n    compare(noise_handshakestate_write_message(initiator, &mbuf, &pbuf),\n            NOISE_ERROR_NONE);\n\n    /* Read the message on the responder side */\n    if (!fallback_anyway) {\n        noise_buffer_set_output(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_read_message(responder, &mbuf, &pbuf),\n                NOISE_ERROR_MAC_FAILURE);\n    } else {\n        /* The \"IK\" handshake was successful, but we decide to ignore that\n           and change to \"XXfallback\" anyway */\n        noise_buffer_set_output(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_read_message(responder, &mbuf, &pbuf),\n                NOISE_ERROR_NONE);\n    }\n\n    /* Fallback on the responder side */\n    compare(noise_handshakestate_fallback(responder), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_get_role(initiator), NOISE_ROLE_INITIATOR);\n    compare(noise_handshakestate_get_role(responder), NOISE_ROLE_INITIATOR);\n\n    /* Supply the prologue and the PSK again to the responder */\n    compare(noise_handshakestate_set_prologue(responder, \"Hello\", 5),\n            NOISE_ERROR_NONE);\n    if (noise_handshakestate_needs_pre_shared_key(responder)) {\n        compare(noise_handshakestate_set_pre_shared_key\n                    (responder, psk, sizeof(psk)),\n                NOISE_ERROR_NONE);\n    }\n    compare(noise_handshakestate_start(responder), NOISE_ERROR_NONE);\n\n    /* Write a new message back to the initiator */\n    memset(payload, 0xAA, sizeof(payload));\n    noise_buffer_set_output(mbuf, message, sizeof(message));\n    noise_buffer_set_input(pbuf, payload, sizeof(payload));\n    compare(noise_handshakestate_write_message(responder, &mbuf, &pbuf),\n            NOISE_ERROR_NONE);\n\n    /* Optionally perform a trial decryption first, which will fail */\n    if (trial_initiator_decrypt) {\n        memcpy(message2, message, sizeof(message));\n        noise_buffer_set_output(pbuf, payload, sizeof(payload));\n        compare(noise_handshakestate_read_message(initiator, &mbuf, &pbuf),\n                NOISE_ERROR_MAC_FAILURE);\n        memcpy(message, message2, sizeof(message));\n    }\n\n    /* Fallback on the initiator side */\n    compare(noise_handshakestate_fallback(initiator), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_get_role(initiator), NOISE_ROLE_RESPONDER);\n    compare(noise_handshakestate_get_role(responder), NOISE_ROLE_INITIATOR);\n\n    /* Supply the prologue and the PSK again to the initiator */\n    compare(noise_handshakestate_set_prologue(initiator, \"Hello\", 5),\n            NOISE_ERROR_NONE);\n    if (noise_handshakestate_needs_pre_shared_key(initiator)) {\n        compare(noise_handshakestate_set_pre_shared_key\n                    (initiator, psk, sizeof(psk)),\n                NOISE_ERROR_NONE);\n    }\n    compare(noise_handshakestate_start(initiator), NOISE_ERROR_NONE);\n\n    /* Read the message on the initiator side */\n    noise_buffer_set_output(pbuf, payload, sizeof(payload));\n    compare(noise_handshakestate_read_message(initiator, &mbuf, &pbuf),\n            NOISE_ERROR_NONE);\n\n    /* Send the next \"XXfallback\" message from the initiator side */\n    memset(payload, 0x66, sizeof(payload));\n    noise_buffer_set_output(mbuf, message, sizeof(message));\n    noise_buffer_set_input(pbuf, payload, sizeof(payload));\n    compare(noise_handshakestate_write_message(initiator, &mbuf, &pbuf),\n            NOISE_ERROR_NONE);\n\n    /* Receive the message on the responder side */\n    noise_buffer_set_output(pbuf, payload, sizeof(payload));\n    compare(noise_handshakestate_read_message(responder, &mbuf, &pbuf),\n            NOISE_ERROR_NONE);\n\n    /* Both sides should now be in the \"split\" condition */\n    compare(noise_handshakestate_get_action(initiator), NOISE_ACTION_SPLIT);\n    compare(noise_handshakestate_get_action(responder), NOISE_ACTION_SPLIT);\n\n    /* Check that the handshake hashes are identical */\n    compare(noise_handshakestate_get_handshake_hash(initiator, message, 64),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_get_handshake_hash(responder, message + 64, 64),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(message, message + 64, 64));\n\n    /* Clean up */\n    compare(noise_handshakestate_free(initiator), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_free(responder), NOISE_ERROR_NONE);\n}\n\nstatic void handshakestate_check_fallback(void)\n{\n    check_fallback_protocol(\"Noise_IK_25519_ChaChaPoly_BLAKE2s\", 0, 0);\n    check_fallback_protocol(\"Noise_IK_448_AESGCM_SHA512\", 1, 0);\n    check_fallback_protocol(\"Noise_IK_448_ChaChaPoly_BLAKE2b\", 0, 1);\n}\n\nstatic void handshakestate_check_errors(void)\n{\n    NoiseHandshakeState *state;\n    NoiseProtocolId id;\n\n    /* NULL parameters in various positions */\n    compare(noise_handshakestate_has_local_keypair(0), 0);\n    compare(noise_handshakestate_has_remote_public_key(0), 0);\n    compare(noise_handshakestate_needs_remote_public_key(0), 0);\n    compare(noise_handshakestate_needs_pre_shared_key(0), 0);\n    compare(noise_handshakestate_has_pre_shared_key(0), 0);\n    compare(noise_handshakestate_get_role(0), 0);\n    compare(noise_handshakestate_get_action(0), NOISE_ACTION_NONE);\n    compare(noise_handshakestate_start(0), NOISE_ERROR_INVALID_PARAM);\n\n    /* If the id/name/role is unknown, state parameter should be set to NULL */\n    memset(&id, 0, sizeof(id));\n    state = (NoiseHandshakeState *)8;\n    compare(noise_handshakestate_new_by_id(&state, &id, NOISE_ROLE_INITIATOR),\n            NOISE_ERROR_UNKNOWN_ID);\n    verify(state == NULL);\n    state = (NoiseHandshakeState *)8;\n    compare(noise_handshakestate_new_by_name(&state, 0, NOISE_ROLE_RESPONDER),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n    state = (NoiseHandshakeState *)8;\n    compare(noise_handshakestate_new_by_name\n                (&state, \"Noise_XX_25519_ChaChaPony_BLAKE2s\",\n                 NOISE_ROLE_INITIATOR),\n            NOISE_ERROR_UNKNOWN_NAME);\n    state = (NoiseHandshakeState *)8;\n    compare(noise_handshakestate_new_by_name\n                (&state, \"Noise_XX_25519_ChaChaPoly_BLAKE2s\",\n                 NOISE_DH_CURVE25519),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n    id.prefix_id = NOISE_PREFIX_STANDARD;\n    id.pattern_id = NOISE_PATTERN_XX;\n    id.dh_id = NOISE_DH_CURVE25519;\n    id.cipher_id = NOISE_CIPHER_CHACHAPOLY;\n    id.hash_id = NOISE_HASH_BLAKE2s;\n    state = (NoiseHandshakeState *)8;\n    compare(noise_handshakestate_new_by_id(&state, &id, NOISE_DH_CURVE25519),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n}\n\nvoid test_handshakestate(void)\n{\n    handshakestate_derive_keys();\n    handshakestate_check_protocols();\n    handshakestate_check_fallback();\n    handshakestate_check_errors();\n}\n"
  },
  {
    "path": "tests/unit/test-hashstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\n#define MAX_HASH_INPUT  128\n#define MAX_HASH_OUTPUT 64\n#define MAX_BLOCK_LEN   128\n\n/* Check raw hash output against test vectors */\nstatic void check_hash(int id, size_t hash_len, size_t block_len,\n                       const char *name, const char *data, const char *hash)\n{\n    NoiseHashState *state;\n    uint8_t input[MAX_HASH_INPUT];\n    uint8_t output[MAX_HASH_OUTPUT];\n    uint8_t temp[MAX_HASH_OUTPUT];\n    size_t input_len;\n    size_t index;\n\n    /* Convert the test strings into binary data */\n    input_len = string_to_data(input, sizeof(input), data);\n    compare(string_to_data(output, sizeof(output), hash), hash_len);\n\n    /* Create the hash object and check its properties */\n    compare(noise_hashstate_new_by_id(&state, id), NOISE_ERROR_NONE);\n    compare(noise_hashstate_get_hash_id(state), id);\n    compare(noise_hashstate_get_hash_length(state), hash_len);\n    compare(noise_hashstate_get_block_length(state), block_len);\n    verify(hash_len <= noise_hashstate_get_max_hash_length());\n    verify(block_len <= noise_hashstate_get_max_block_length());\n\n    /* Check hashing all data in one hit */\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_hashstate_hash_one(state, input, input_len, temp, hash_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, output, hash_len));\n\n    /* Check hashing the data split into two separate parts */\n    for (index = 0; index < input_len; ++index) {\n        memset(temp, 0xAA, sizeof(temp));\n        compare(noise_hashstate_hash_two\n            (state, input, index, input + index, input_len - index,\n             temp, hash_len),\n            NOISE_ERROR_NONE);\n        verify(!memcmp(temp, output, hash_len));\n    }\n\n    /* Check hashing the data with reset/update/finalize */\n    for (index = 0; index < input_len; ++index) {\n        memset(temp, 0xAA, sizeof(temp));\n        compare(noise_hashstate_reset(state), NOISE_ERROR_NONE);\n        if (index) {\n            compare(noise_hashstate_update(state, input, index),\n                    NOISE_ERROR_NONE);\n        }\n        compare(noise_hashstate_update(state, input + index, input_len - index),\n                NOISE_ERROR_NONE);\n        compare(noise_hashstate_finalize(state, temp, hash_len),\n                NOISE_ERROR_NONE);\n        verify(!memcmp(temp, output, hash_len));\n    }\n\n    /* Check parameter error conditions */\n    compare(noise_hashstate_hash_one(0, input, input_len, temp, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hash_one(state, 0, input_len, temp, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hash_one(state, input, input_len, 0, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hash_one(state, input, input_len, temp, hash_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_hashstate_hash_one(state, input, input_len, temp, hash_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_hashstate_hash_two(0, input, 10, input + 10, 13, temp, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hash_two(state, 0, 10, input + 10, 13, temp, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hash_two(state, input, 10, 0, 13, temp, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hash_two(state, input, 10, input + 10, 13, 0, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hash_two(state, input, 10, input + 10, 13, temp, hash_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_hashstate_hash_two(state, input, 10, input + 10, 13, temp, hash_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_hashstate_reset(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_update(0, input, 10), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_update(state, 0, 10), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_finalize(0, temp, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_finalize(state, 0, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_finalize(state, temp, hash_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_hashstate_finalize(state, temp, hash_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n\n    /* Re-create the object by name and check its properties again */\n    compare(noise_hashstate_free(state), NOISE_ERROR_NONE);\n    compare(noise_hashstate_new_by_name(&state, name), NOISE_ERROR_NONE);\n    compare(noise_hashstate_get_hash_id(state), id);\n    compare(noise_hashstate_get_hash_length(state), hash_len);\n    compare(noise_hashstate_get_block_length(state), block_len);\n\n    /* Make sure that it is still the same object by checking hash outputs */\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_hashstate_hash_one(state, input, input_len, temp, hash_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, output, hash_len));\n\n    /* Clean up */\n    compare(noise_hashstate_free(state), NOISE_ERROR_NONE);\n}\n\n/* Check against test vectors from the various specifications\n   to validate that the algorithms work as low level primitives */\nstatic void hashstate_check_test_vectors(void)\n{\n    /* BLAKE2s */\n    check_hash\n        (NOISE_HASH_BLAKE2s, 32, 64, \"BLAKE2s\",\n         \"\",\n         \"0x69217a3079908094e11121d042354a7c1f55b6482ca1a51e1b250dfd1ed0eef9\");\n    check_hash\n        (NOISE_HASH_BLAKE2s, 32, 64, \"BLAKE2s\",\n         \"abc\",\n         \"0x508c5e8c327c14e2e1a72ba34eeb452f37458b209ed63a294d999b4c86675982\");\n    check_hash\n        (NOISE_HASH_BLAKE2s, 32, 64, \"BLAKE2s\",\n         \"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\",\n         \"0x6f4df5116a6f332edab1d9e10ee87df6557beab6259d7663f3bcd5722c13f189\");\n    check_hash\n        (NOISE_HASH_BLAKE2s, 32, 64, \"BLAKE2s\",\n         \"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn\"\n         \"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu\",\n         \"0x358dd2ed0780d4054e76cb6f3a5bce2841e8e2f547431d4d09db21b66d941fc7\");\n\n    /* BLAKE2b */\n    check_hash\n        (NOISE_HASH_BLAKE2b, 64, 128, \"BLAKE2b\",\n         \"\",\n         \"0x786a02f742015903c6c6fd852552d272912f4740e15847618a86e217f71f5419\"\n           \"d25e1031afee585313896444934eb04b903a685b1448b755d56f701afe9be2ce\");\n    check_hash\n        (NOISE_HASH_BLAKE2b, 64, 128, \"BLAKE2b\",\n         \"abc\",\n         \"0xba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d1\"\n           \"7d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923\");\n    check_hash\n        (NOISE_HASH_BLAKE2b, 64, 128, \"BLAKE2b\",\n         \"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\",\n         \"0x7285ff3e8bd768d69be62b3bf18765a325917fa9744ac2f582a20850bc2b1141\"\n           \"ed1b3e4528595acc90772bdf2d37dc8a47130b44f33a02e8730e5ad8e166e888\");\n    check_hash\n        (NOISE_HASH_BLAKE2b, 64, 128, \"BLAKE2b\",\n         \"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn\"\n         \"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu\",\n         \"0xce741ac5930fe346811175c5227bb7bfcd47f42612fae46c0809514f9e0e3a11\"\n           \"ee1773287147cdeaeedff50709aa716341fe65240f4ad6777d6bfaf9726e5e52\");\n\n    /* SHA256 */\n    check_hash\n        (NOISE_HASH_SHA256, 32, 64, \"SHA256\",\n         \"\",\n         \"0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\");\n    check_hash\n        (NOISE_HASH_SHA256, 32, 64, \"SHA256\",\n         \"abc\",\n         \"0xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad\");\n    check_hash\n        (NOISE_HASH_SHA256, 32, 64, \"SHA256\",\n         \"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\",\n         \"0x248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1\");\n\n    /* SHA512 */\n    check_hash\n        (NOISE_HASH_SHA512, 64, 128, \"SHA512\",\n         \"\",\n         \"0xcf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce\"\n           \"47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e\");\n    check_hash\n        (NOISE_HASH_SHA512, 64, 128, \"SHA512\",\n         \"abc\",\n         \"0xddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a\"\n           \"2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f\");\n    check_hash\n        (NOISE_HASH_SHA512, 64, 128, \"SHA512\",\n         \"abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn\"\n         \"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu\",\n         \"0x8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018\"\n           \"501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909\");\n}\n\n/* Formats a key for the simple implementation of HMAC */\nstatic void format_hmac_key(NoiseHashState *state, uint8_t *block,\n                            const uint8_t *key, size_t key_len, uint8_t pad)\n{\n    size_t hash_len = noise_hashstate_get_hash_length(state);\n    size_t block_len = noise_hashstate_get_block_length(state);\n    if (key_len <= block_len) {\n        memcpy(block, key, key_len);\n        memset(block + key_len, 0, block_len - key_len);\n    } else {\n        noise_hashstate_hash_one(state, key, key_len, block, hash_len);\n        memset(block + hash_len, 0, block_len - hash_len);\n    }\n    while (block_len > 0) {\n        --block_len;\n        block[block_len] ^= pad;\n    }\n}\n\n/* Simple implementation of HMAC for cross-checking the library */\nstatic void hmac(NoiseHashState *state, uint8_t *hash,\n                 const uint8_t *key, size_t key_len,\n                 const uint8_t *data, size_t data_len)\n{\n    size_t hash_len = noise_hashstate_get_hash_length(state);\n    size_t block_len = noise_hashstate_get_block_length(state);\n    uint8_t block[MAX_BLOCK_LEN];\n    format_hmac_key(state, block, key, key_len, 0x36);\n    noise_hashstate_hash_two(state, block, block_len, data, data_len, hash, hash_len);\n    format_hmac_key(state, block, key, key_len, 0x5C);\n    noise_hashstate_hash_two(state, block, block_len, hash, hash_len, hash, hash_len);\n}\n\n/* Simple implementation of HKDF for cross-checking the library */\nstatic void hkdf(NoiseHashState *state, uint8_t *output1, uint8_t *output2,\n                 const uint8_t *key, size_t key_len,\n                 const uint8_t *data, size_t data_len)\n{\n    size_t hash_len = noise_hashstate_get_hash_length(state);\n    uint8_t temp_key[MAX_HASH_OUTPUT];\n    uint8_t output[MAX_HASH_OUTPUT + 1];\n    hmac(state, temp_key, key, key_len, data, data_len);\n    output[0] = 0x01;\n    hmac(state, output, temp_key, hash_len, output, 1);\n    memcpy(output1, output, hash_len);\n    output[hash_len] = 0x02;\n    hmac(state, output, temp_key, hash_len, output, hash_len + 1);\n    memcpy(output2, output, hash_len);\n}\n\n/* Check the behaviour of the noise_hashstate_hkdf() function */\nstatic void hashstate_check_hkdf_algorithm(int id)\n{\n    NoiseHashState *state;\n    size_t hash_len, index;\n    uint8_t key[MAX_HASH_OUTPUT];\n    uint8_t data[MAX_HASH_INPUT];\n    uint8_t expected1[MAX_HASH_OUTPUT];\n    uint8_t expected2[MAX_HASH_OUTPUT];\n    uint8_t output1[MAX_HASH_OUTPUT];\n    uint8_t output2[MAX_HASH_OUTPUT];\n\n    /* Create a hash object */\n    compare(noise_hashstate_new_by_id(&state, id), NOISE_ERROR_NONE);\n    hash_len = noise_hashstate_get_hash_length(state);\n\n    /* Calculate the expected HKDF output with the simple implementation */\n    memset(key, 0xAA, sizeof(key));\n    memset(data, 0x66, sizeof(data));\n    hkdf(state, expected1, expected2, key, sizeof(key), data, sizeof(data));\n\n    /* Compare against what noise_hashstate_hkdf() produces */\n    memset(output1, 0xE6, sizeof(output1));\n    memset(output2, 0x6E, sizeof(output2));\n    compare(noise_hashstate_hkdf(state, key, sizeof(key), data, sizeof(data),\n                                 output1, hash_len, output2, hash_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(output1, expected1, hash_len));\n    verify(!memcmp(output2, expected2, hash_len));\n\n    /* Call noise_hashstate_hkdf() again, but ask it to truncate the output */\n    memset(output1, 0xE6, sizeof(output1));\n    memset(output2, 0x6E, sizeof(output2));\n    compare(noise_hashstate_hkdf(state, key, sizeof(key), data, sizeof(data),\n                                 output1, hash_len / 2, output2, hash_len / 2),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(output1, expected1, hash_len / 2));\n    verify(!memcmp(output2, expected2, hash_len / 2));\n    for (index = (hash_len / 2); index < hash_len; ++index) {\n        /* Check that the function didn't write beyond our requested length */\n        compare(output1[index], 0xE6);\n        compare(output2[index], 0x6E);\n    }\n\n    /* Check parameter error conditions */\n    compare(noise_hashstate_hkdf(0, key, sizeof(key), data, sizeof(data),\n                                 output1, hash_len, output2, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hkdf(state, 0, sizeof(key), data, sizeof(data),\n                                 output1, hash_len, output2, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hkdf(state, key, sizeof(key), 0, sizeof(data),\n                                 output1, hash_len, output2, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hkdf(state, key, sizeof(key), data, sizeof(data),\n                                 0, hash_len, output2, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hkdf(state, key, sizeof(key), data, sizeof(data),\n                                 output1, hash_len, 0, hash_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_hkdf(state, key, sizeof(key), data, sizeof(data),\n                                 output1, hash_len + 1, output2, hash_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_hashstate_hkdf(state, key, sizeof(key), data, sizeof(data),\n                                 output1, hash_len, output2, hash_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n\n    /* Clean up */\n    compare(noise_hashstate_free(state), NOISE_ERROR_NONE);\n}\n\n/* Check the behaviour of the noise_hashstate_hkdf() function */\nstatic void hashstate_check_hkdf(void)\n{\n    hashstate_check_hkdf_algorithm(NOISE_HASH_BLAKE2s);\n    hashstate_check_hkdf_algorithm(NOISE_HASH_BLAKE2b);\n    hashstate_check_hkdf_algorithm(NOISE_HASH_SHA256);\n    hashstate_check_hkdf_algorithm(NOISE_HASH_SHA512);\n}\n\n/* Check the behaviour of the noise_hashstate_pbkdf2() function */\nstatic void check_pbkdf2(const char *name, const char *passphrase,\n                         const char *salt, size_t iterations,\n                         const char *result)\n{\n    uint8_t passphrase_bytes[32];\n    uint8_t salt_bytes[32];\n    uint8_t result_bytes[64];\n    uint8_t hash[64];\n    size_t passphrase_len;\n    size_t salt_len;\n    size_t result_len;\n    NoiseHashState *state;\n\n    /* Convert the test strings from hex into binary */\n    passphrase_len = string_to_data\n        (passphrase_bytes, sizeof(passphrase_bytes), passphrase);\n    salt_len = string_to_data\n        (salt_bytes, sizeof(salt_bytes), salt);\n    result_len = string_to_data\n        (result_bytes, sizeof(result_bytes), result);\n    verify(result_len <= sizeof(hash));\n\n    /* Construct a SHA256 hashing object */\n    compare(noise_hashstate_new_by_id\n                (&state, NOISE_HASH_SHA256), NOISE_ERROR_NONE);\n\n    /* Run PBKDF2 and check the output */\n    compare(noise_hashstate_pbkdf2\n                (state, passphrase_bytes, passphrase_len,\n                 salt_bytes, salt_len, iterations, hash, result_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(hash, result_bytes, result_len));\n\n    /* Test error conditions */\n    compare(noise_hashstate_pbkdf2\n                (0, passphrase_bytes, passphrase_len,\n                 salt_bytes, salt_len, iterations, hash, result_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_pbkdf2\n                (state, 0, passphrase_len,\n                 salt_bytes, salt_len, iterations, hash, result_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_pbkdf2\n                (state, passphrase_bytes, passphrase_len,\n                 0, salt_len, iterations, hash, result_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_pbkdf2\n                (state, passphrase_bytes, passphrase_len,\n                 salt_bytes, salt_len, iterations, 0, result_len),\n            NOISE_ERROR_INVALID_PARAM);\n    if (sizeof(size_t) > 4) {\n        result_len = (size_t)(((uint64_t)0xFFFFFFFF) * 32 + 1);\n        compare(noise_hashstate_pbkdf2\n                    (state, passphrase_bytes, passphrase_len,\n                     salt_bytes, salt_len, iterations, hash, result_len),\n                NOISE_ERROR_INVALID_LENGTH);\n    }\n\n    /* Clean up */\n    noise_hashstate_free(state);\n}\n\n/* Check the behaviour of the noise_hashstate_pbkdf2() function */\nstatic void hashstate_check_pbkdf2(void)\n{\n    /* Test vectors for PBKDF2-HMAC-SHA-256 from section 11 of\n       https://tools.ietf.org/html/draft-josefsson-scrypt-kdf-05 */\n    check_pbkdf2(\"PBKDF2 #1\", \"passwd\", \"salt\", 1,\n                 \"0x55ac046e56e3089fec1691c22544b605\"\n                   \"f94185216dde0465e68b9d57c20dacbc\"\n                   \"49ca9cccf179b645991664b39d77ef31\"\n                   \"7c71b845b1e30bd509112041d3a19783\");\n    check_pbkdf2(\"PBKDF2 #2\", \"Password\", \"NaCl\", 80000,\n                 \"0x4ddcd8f60b98be21830cee5ef22701f9\"\n                   \"641a4418d04c0414aeff08876b34ab56\"\n                   \"a1d425a1225833549adb841b51c9b317\"\n                   \"6a272bdebba1d078478f62b397f33c8d\");\n}\n\n/* Check other error conditions that can be reported by the functions */\nstatic void hashstate_check_errors(void)\n{\n    NoiseHashState *state;\n\n    /* NULL parameters in various positions */\n    compare(noise_hashstate_free(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_get_hash_id(0), NOISE_HASH_NONE);\n    compare(noise_hashstate_get_hash_length(0), 0);\n    compare(noise_hashstate_get_block_length(0), 0);\n    compare(noise_hashstate_new_by_id(0, NOISE_HASH_BLAKE2s),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_hashstate_new_by_name(0, \"BLAKE2s\"),\n            NOISE_ERROR_INVALID_PARAM);\n\n    /* If the id/name is unknown, the state parameter should be set to NULL */\n    state = (NoiseHashState *)8;\n    compare(noise_hashstate_new_by_id(&state, NOISE_CIPHER_CHACHAPOLY),\n            NOISE_ERROR_UNKNOWN_ID);\n    verify(state == NULL);\n    state = (NoiseHashState *)8;\n    compare(noise_hashstate_new_by_name(&state, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n    state = (NoiseHashState *)8;\n    compare(noise_hashstate_new_by_name(&state, \"BLAKE3s\"),\n            NOISE_ERROR_UNKNOWN_NAME);\n    verify(state == NULL);\n}\n\nvoid test_hashstate(void)\n{\n    hashstate_check_test_vectors();\n    hashstate_check_hkdf();\n    hashstate_check_pbkdf2();\n    hashstate_check_errors();\n}\n"
  },
  {
    "path": "tests/unit/test-helpers.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef TEST_HELPERS_H\n#define TEST_HELPERS_H\n\n#include <noise/protocol.h>\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <setjmp.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nextern int test_count;\nextern int test_failures;\nextern jmp_buf test_jump_back;\nextern const char *data_name;\nextern int verbose;\n\n/**\n * \\brief Immediate fail of the test.\n *\n * \\param message The failure message to print.\n */\n#define _fail(message)   \\\n    do { \\\n        if (data_name) \\\n            printf(\"%s: \", data_name); \\\n        printf(\"%s, failed at \" __FILE__ \":%d\\n\", (message), __LINE__); \\\n        longjmp(test_jump_back, 1); \\\n    } while (0)\n#define fail(message) _fail((message))\n\n/**\n * \\brief Verifies that a condition is true, failing the test if not.\n *\n * \\param condition The boolean condition to test.\n */\n#define _verify(condition)   \\\n    do { \\\n        if (!(condition)) { \\\n            if (data_name) \\\n                printf(\"%s: \", data_name); \\\n            printf(#condition \" failed at \" __FILE__ \":%d\\n\", __LINE__); \\\n            longjmp(test_jump_back, 1); \\\n        } \\\n    } while (0)\n#define verify(condition) _verify((condition))\n\n/**\n * \\brief Compares two integer values for equality, failing the test if not.\n *\n * \\param actual The actual value that was computed by the code under test.\n * \\param expected The value that is expected.\n */\n#define compare(actual, expected) \\\n    do { \\\n        long long _actual = (long long)(actual); \\\n        long long _expected = (long long)(expected); \\\n        if (_actual != _expected) { \\\n            if (data_name) \\\n                printf(\"%s: \", data_name); \\\n            printf(#actual \" != \" #expected \" at \" __FILE__ \":%d\\n\", __LINE__); \\\n            printf(\"    actual  : %lld (0x%llx)\\n\", _actual, _actual); \\\n            printf(\"    expected: %lld (0x%llx)\\n\", _expected, _expected); \\\n            longjmp(test_jump_back, 1); \\\n        } \\\n    } while (0)\n\n/**\n * \\brief Compares two memory blocks for equality.\n *\n * \\param actual Points to the actual memory block from the code under test.\n * \\param actual_len The length of the actual memory block.\n * \\param expected Points to the expected memory block.\n * \\param expected_len The length of the expected memory block.\n */\n#define compare_blocks(actual, actual_len, expected, expected_len) \\\n    do { \\\n        size_t _actual_len = (size_t)(actual_len); \\\n        size_t _expected_len = (size_t)(expected_len); \\\n        if (_actual_len != _expected_len || memcmp((actual), (expected), _actual_len) != 0) { \\\n            if (data_name) \\\n                printf(\"%s: \", data_name); \\\n            printf(#actual \" != \" #expected \" at \" __FILE__ \":%d\\n\", __LINE__); \\\n            print_block(\"    actual  \", (actual), _actual_len); \\\n            print_block(\"    expected\", (expected), _expected_len); \\\n            longjmp(test_jump_back, 1); \\\n        } \\\n    } while (0)\n\n/**\n * \\brief Runs a test function.\n *\n * \\param func The name of the function to run, excluding the \"test_\" prefix.\n */\n#define test(func)   \\\n    do { \\\n        extern void test_##func(void); \\\n        data_name = 0; \\\n        if (!setjmp(test_jump_back)) { \\\n            ++test_count; \\\n            printf(#func \" ... \"); \\\n            fflush(stdout); \\\n            test_##func(); \\\n            printf(\"ok\\n\"); \\\n        } else { \\\n            ++test_failures; \\\n        } \\\n    } while (0)\n\n/**\n * \\brief Converts a string from ASCII or hex into binary.\n *\n * \\param data The data buffer to fill.\n * \\param max_len The maximum length of \\a data in bytes.\n * \\param str The string to convert.  If the string starts with \"0x\", then\n * the remaining characters are assumed to be in hex.  Otherwise the string\n * is represented in ASCII.\n *\n * \\return The actual length of the \\a data in bytes.\n *\n * This function will fail the test case if the string is longer\n * than \\a max_len.\n */\nsize_t string_to_data(uint8_t *data, size_t max_len, const char *str);\n\n/**\n * \\brief Prints a memory block in hex.\n *\n * \\param tag Tag string indicating \"actual\" vs \"expected\".\n * \\param data The data block to print.\n * \\param size The size of the \\a data block in bytes.\n */\nvoid print_block(const char *tag, const uint8_t *data, size_t size);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "tests/unit/test-main.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\nint test_count = 0;\nint test_failures = 0;\njmp_buf test_jump_back;\nconst char *data_name = 0;\nint verbose = 0;\n\nint main(int argc, char *argv[])\n{\n    /* Parse the command-line arguments */\n    if (argc > 1 && !strcmp(argv[1], \"--verbose\"))\n        verbose = 1;\n\n    if (noise_init() != NOISE_ERROR_NONE) {\n        fprintf(stderr, \"Noise initialization failed\\n\");\n        return 1;\n    }\n\n    /* Run all tests */\n    test(cipherstate);\n    test(dhstate);\n    test(errors);\n    test(handshakestate);\n    test(hashstate);\n    test(names);\n    test(patterns);\n    test(protobufs);\n    test(randstate);\n    test(signstate);\n    test(symmetricstate);\n\n    /* Report the results */\n    if (!test_failures) {\n        printf(\"All tests succeeded\\n\");\n    } else {\n        printf(\"%d test%s failed\\n\", test_failures, test_failures == 1 ? \"\" : \"s\");\n    }\n    return test_failures ? 1 : 0;\n}\n\nstatic int from_hex(char ch)\n{\n    if (ch >= '0' && ch <= '9')\n        return ch - '0';\n    else if (ch >= 'A' && ch <= 'F')\n        return ch - 'A' + 10;\n    else if (ch >= 'a' && ch <= 'f')\n        return ch - 'a' + 10;\n    verify(0);\n    return 0;\n}\n\nsize_t string_to_data(uint8_t *data, size_t max_len, const char *str)\n{\n    size_t len;\n    if (str[0] == '0' && str[1] == 'x') {\n        /* Hexadecimal string */\n        len = 0;\n        str += 2;\n        while (str[0] != '\\0') {\n            if (str[0] == ' ') {\n                /* Skip spaces in the hexadecimal string */\n                ++str;\n                continue;\n            }\n            verify(str[1] != '\\0');\n            verify(len < max_len);\n            data[len++] = from_hex(str[0]) * 16 + from_hex(str[1]);\n            str += 2;\n        }\n        return len;\n    } else {\n        /* ASCII string */\n        len = strlen(str);\n        verify(len <= max_len);\n        memcpy(data, str, len);\n        return len;\n    }\n}\n\nvoid print_block(const char *tag, const uint8_t *data, size_t size)\n{\n    printf(\"%s:\", tag);\n    while (size > 0) {\n        printf(\" %02x\", *data);\n        ++data;\n        --size;\n    }\n    printf(\"\\n\");\n}\n"
  },
  {
    "path": "tests/unit/test-names.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\n/* Check that a known mapping is present in the algorithm_names table */\nstatic void check_id(const char *name, int id)\n{\n    int category = id & NOISE_ID(0xFF, 0);\n    char adjusted[32];\n\n    /* Check the expected mappings */\n    verify(!strcmp(noise_id_to_name(category, id), name));\n    verify(!strcmp(noise_id_to_name(0, id), name));\n    compare(noise_name_to_id(category, name, strlen(name)), id);\n    compare(noise_name_to_id(0, name, strlen(name)), id);\n\n    /* Check that the name length must be exact for a match */\n    if (category != NOISE_PATTERN_CATEGORY) {\n        /* Doesn't work for patterns which can be prefixes of each other */\n        compare(noise_name_to_id(category, name, strlen(name) - 1), 0);\n        compare(noise_name_to_id(0, name, strlen(name) - 1), 0);\n    }\n    strcpy(adjusted, name);\n    strcat(adjusted, \"Z\");\n    compare(noise_name_to_id(category, adjusted, strlen(name) + 1), 0);\n    compare(noise_name_to_id(0, adjusted, strlen(name) + 1), 0);\n\n    /* Check that we cannot find the name/id under the wrong category */\n    category ^= 0x0100;\n    verify(noise_id_to_name(category, id) == NULL);\n    compare(noise_name_to_id(category, name, strlen(name)), 0);\n}\n\nstatic void test_id_mappings(void)\n{\n    /* Check for known names/identifiers */\n    check_id(\"ChaChaPoly\", NOISE_CIPHER_CHACHAPOLY);\n    check_id(\"AESGCM\", NOISE_CIPHER_AESGCM);\n\n    check_id(\"BLAKE2s\", NOISE_HASH_BLAKE2s);\n    check_id(\"BLAKE2b\", NOISE_HASH_BLAKE2b);\n    check_id(\"SHA256\", NOISE_HASH_SHA256);\n    check_id(\"SHA512\", NOISE_HASH_SHA512);\n\n    check_id(\"25519\", NOISE_DH_CURVE25519);\n    check_id(\"448\", NOISE_DH_CURVE448);\n    check_id(\"NewHope\", NOISE_DH_NEWHOPE);\n\n    check_id(\"N\", NOISE_PATTERN_N);\n    check_id(\"X\", NOISE_PATTERN_X);\n    check_id(\"K\", NOISE_PATTERN_K);\n    check_id(\"NN\", NOISE_PATTERN_NN);\n    check_id(\"NK\", NOISE_PATTERN_NK);\n    check_id(\"NX\", NOISE_PATTERN_NX);\n    check_id(\"XN\", NOISE_PATTERN_XN);\n    check_id(\"XK\", NOISE_PATTERN_XK);\n    check_id(\"XX\", NOISE_PATTERN_XX);\n    check_id(\"KN\", NOISE_PATTERN_KN);\n    check_id(\"KK\", NOISE_PATTERN_KK);\n    check_id(\"KX\", NOISE_PATTERN_KX);\n    check_id(\"IN\", NOISE_PATTERN_IN);\n    check_id(\"IK\", NOISE_PATTERN_IK);\n    check_id(\"IX\", NOISE_PATTERN_IX);\n    check_id(\"XXfallback\", NOISE_PATTERN_XX_FALLBACK);\n    check_id(\"Xnoidh\", NOISE_PATTERN_X_NOIDH);\n    check_id(\"NXnoidh\", NOISE_PATTERN_NX_NOIDH);\n    check_id(\"XXnoidh\", NOISE_PATTERN_XX_NOIDH);\n    check_id(\"KXnoidh\", NOISE_PATTERN_KX_NOIDH);\n    check_id(\"IKnoidh\", NOISE_PATTERN_IK_NOIDH);\n    check_id(\"IXnoidh\", NOISE_PATTERN_IX_NOIDH);\n    check_id(\"NNhfs\", NOISE_PATTERN_NN_HFS);\n    check_id(\"NKhfs\", NOISE_PATTERN_NK_HFS);\n    check_id(\"NXhfs\", NOISE_PATTERN_NX_HFS);\n    check_id(\"XNhfs\", NOISE_PATTERN_XN_HFS);\n    check_id(\"XKhfs\", NOISE_PATTERN_XK_HFS);\n    check_id(\"XXhfs\", NOISE_PATTERN_XX_HFS);\n    check_id(\"KNhfs\", NOISE_PATTERN_KN_HFS);\n    check_id(\"KKhfs\", NOISE_PATTERN_KK_HFS);\n    check_id(\"KXhfs\", NOISE_PATTERN_KX_HFS);\n    check_id(\"INhfs\", NOISE_PATTERN_IN_HFS);\n    check_id(\"IKhfs\", NOISE_PATTERN_IK_HFS);\n    check_id(\"IXhfs\", NOISE_PATTERN_IX_HFS);\n    check_id(\"XXfallback+hfs\", NOISE_PATTERN_XX_FALLBACK_HFS);\n    check_id(\"NXnoidh+hfs\", NOISE_PATTERN_NX_NOIDH_HFS);\n    check_id(\"XXnoidh+hfs\", NOISE_PATTERN_XX_NOIDH_HFS);\n    check_id(\"KXnoidh+hfs\", NOISE_PATTERN_KX_NOIDH_HFS);\n    check_id(\"IKnoidh+hfs\", NOISE_PATTERN_IK_NOIDH_HFS);\n    check_id(\"IXnoidh+hfs\", NOISE_PATTERN_IX_NOIDH_HFS);\n\n    check_id(\"Noise\", NOISE_PREFIX_STANDARD);\n    check_id(\"NoisePSK\", NOISE_PREFIX_PSK);\n\n    check_id(\"Ed25519\", NOISE_SIGN_ED25519);\n\n    /* Check for unknown names/identifiers */\n    compare(noise_name_to_id(NOISE_CIPHER_CATEGORY, \"AESGCM-128\", 10), 0);\n    compare(noise_name_to_id(0, \"AESGCM-128\", 10), 0);\n    verify(noise_id_to_name(NOISE_CIPHER_CATEGORY, NOISE_ID('C', 200)) == 0);\n    verify(noise_id_to_name(0, NOISE_ID('C', 200)) == 0);\n}\n\n/* Check the parsing and formatting of a specific protocol name */\nstatic void check_protocol_name\n    (const char *name, int prefix_id, int pattern_id, int dh_id,\n     int cipher_id, int hash_id, int hybrid_id)\n{\n    NoiseProtocolId expected_id;\n    NoiseProtocolId actual_id;\n    char buffer[NOISE_MAX_PROTOCOL_NAME];\n    size_t posn;\n\n    /* Construct the expected protocol id from parsing the name */\n    memset(&expected_id, 0, sizeof(expected_id));\n    expected_id.prefix_id = prefix_id;\n    expected_id.pattern_id = pattern_id;\n    expected_id.dh_id = dh_id;\n    expected_id.cipher_id = cipher_id;\n    expected_id.hash_id = hash_id;\n    expected_id.hybrid_id = hybrid_id;\n\n    /* Parse the name into its constituent identifiers */\n    memset(&actual_id, 0x66, sizeof(actual_id));\n    compare(noise_protocol_name_to_id(&actual_id, name, strlen(name)),\n            NOISE_ERROR_NONE);\n    compare(actual_id.prefix_id, expected_id.prefix_id);\n    compare(actual_id.pattern_id, expected_id.pattern_id);\n    compare(actual_id.dh_id, expected_id.dh_id);\n    compare(actual_id.cipher_id, expected_id.cipher_id);\n    compare(actual_id.hash_id, expected_id.hash_id);\n    compare(actual_id.hybrid_id, expected_id.hybrid_id);\n    verify(!memcmp(&actual_id, &expected_id, sizeof(actual_id)));\n\n    /* Format the name from the identifiers */\n    memset(buffer, 0xAA, sizeof(buffer));\n    compare(noise_protocol_id_to_name(buffer, sizeof(buffer), &expected_id),\n            NOISE_ERROR_NONE);\n    verify(memchr(buffer, '\\0', sizeof(buffer)) != 0);\n    verify(!strcmp(buffer, name));\n\n    /* Check for parameter error conditions */\n    compare(noise_protocol_name_to_id(0, name, strlen(name)),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_protocol_name_to_id(&actual_id, 0, strlen(name)),\n            NOISE_ERROR_INVALID_PARAM);\n    memset(&actual_id, 0x66, sizeof(actual_id));\n    compare(noise_protocol_name_to_id(&actual_id, name, strlen(name) - 1),\n            NOISE_ERROR_UNKNOWN_NAME);\n    compare(actual_id.prefix_id, 0);\n    compare(actual_id.pattern_id, 0);\n    compare(actual_id.dh_id, 0);\n    compare(actual_id.cipher_id, 0);\n    compare(actual_id.hash_id, 0);\n    compare(actual_id.hybrid_id, 0);\n    memset(buffer, 0xAA, sizeof(buffer));\n    compare(noise_protocol_id_to_name(buffer, sizeof(buffer), 0),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(buffer[0], '\\0');\n    compare(noise_protocol_id_to_name(0, sizeof(buffer), &expected_id),\n            NOISE_ERROR_INVALID_PARAM);\n    memset(buffer, 0x66, sizeof(buffer));\n    compare(noise_protocol_id_to_name(buffer, 0, &expected_id),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(buffer[0], 0x66);\n    compare(noise_protocol_id_to_name(buffer, strlen(name), &expected_id),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(buffer[0], '\\0');\n    compare(buffer[strlen(name)], 0x66); /* Check that no overflow occurred */\n    memset(buffer, 0x66, sizeof(buffer));\n    compare(noise_protocol_id_to_name(buffer, 3, &expected_id),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(buffer[0], '\\0');\n\n    /* Reserved identifiers cannot be formatted */\n    for (posn = 0; posn < (sizeof(expected_id.reserved) / sizeof(expected_id.reserved[0])); ++posn) {\n        expected_id.reserved[posn] = NOISE_PREFIX_PSK;\n        memset(buffer, 0x66, sizeof(buffer));\n        compare(noise_protocol_id_to_name(buffer, sizeof(buffer), &expected_id),\n                NOISE_ERROR_UNKNOWN_ID);\n        compare(buffer[0], '\\0');\n        expected_id.reserved[posn] = 0;\n    }\n\n    /* Identifiers in the wrong fields */\n    expected_id.cipher_id = hash_id;\n    memset(buffer, 0x66, sizeof(buffer));\n    compare(noise_protocol_id_to_name(buffer, sizeof(buffer), &expected_id),\n            NOISE_ERROR_UNKNOWN_ID);\n    compare(buffer[0], '\\0');\n}\n\nstatic void test_protocol_names(void)\n{\n    check_protocol_name\n        (\"Noise_XX_25519_AESGCM_SHA256\",\n         NOISE_PREFIX_STANDARD, NOISE_PATTERN_XX,\n         NOISE_DH_CURVE25519, NOISE_CIPHER_AESGCM,\n         NOISE_HASH_SHA256, 0);\n    check_protocol_name\n        (\"Noise_N_25519_ChaChaPoly_BLAKE2s\",\n         NOISE_PREFIX_STANDARD, NOISE_PATTERN_N,\n         NOISE_DH_CURVE25519, NOISE_CIPHER_CHACHAPOLY,\n         NOISE_HASH_BLAKE2s, 0);\n    check_protocol_name\n        (\"Noise_XXfallback_448_AESGCM_SHA512\",\n         NOISE_PREFIX_STANDARD, NOISE_PATTERN_XX_FALLBACK,\n         NOISE_DH_CURVE448, NOISE_CIPHER_AESGCM,\n         NOISE_HASH_SHA512, 0);\n    check_protocol_name\n        (\"Noise_IK_448_ChaChaPoly_BLAKE2b\",\n         NOISE_PREFIX_STANDARD, NOISE_PATTERN_IK,\n         NOISE_DH_CURVE448, NOISE_CIPHER_CHACHAPOLY,\n         NOISE_HASH_BLAKE2b, 0);\n    check_protocol_name\n        (\"NoisePSK_XX_25519_AESGCM_SHA256\",\n         NOISE_PREFIX_PSK, NOISE_PATTERN_XX,\n         NOISE_DH_CURVE25519, NOISE_CIPHER_AESGCM,\n         NOISE_HASH_SHA256, 0);\n    check_protocol_name\n        (\"NoisePSK_N_25519_ChaChaPoly_BLAKE2s\",\n         NOISE_PREFIX_PSK, NOISE_PATTERN_N,\n         NOISE_DH_CURVE25519, NOISE_CIPHER_CHACHAPOLY,\n         NOISE_HASH_BLAKE2s, 0);\n    check_protocol_name\n        (\"NoisePSK_XXfallback_448_AESGCM_SHA512\",\n         NOISE_PREFIX_PSK, NOISE_PATTERN_XX_FALLBACK,\n         NOISE_DH_CURVE448, NOISE_CIPHER_AESGCM,\n         NOISE_HASH_SHA512, 0);\n    check_protocol_name\n        (\"NoisePSK_IK_448_ChaChaPoly_BLAKE2b\",\n         NOISE_PREFIX_PSK, NOISE_PATTERN_IK,\n         NOISE_DH_CURVE448, NOISE_CIPHER_CHACHAPOLY,\n         NOISE_HASH_BLAKE2b, 0);\n    check_protocol_name\n        (\"Noise_NN_NewHope_AESGCM_SHA256\",\n         NOISE_PREFIX_STANDARD, NOISE_PATTERN_NN,\n         NOISE_DH_NEWHOPE, NOISE_CIPHER_AESGCM,\n         NOISE_HASH_SHA256, 0);\n    check_protocol_name\n        (\"Noise_XX_25519+NewHope_AESGCM_SHA256\",\n         NOISE_PREFIX_STANDARD, NOISE_PATTERN_XX,\n         NOISE_DH_CURVE25519, NOISE_CIPHER_AESGCM,\n         NOISE_HASH_SHA256, NOISE_DH_NEWHOPE);\n}\n\nvoid test_names(void)\n{\n    test_id_mappings();\n    test_protocol_names();\n}\n"
  },
  {
    "path": "tests/unit/test-patterns.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n#include \"protocol/internal.h\"\n\n/* Extra tokens for the unit test parser only */\n#define NOISE_TOKEN_LARROW 64\n#define NOISE_TOKEN_RARROW 65\n#define NOISE_TOKEN_ERROR  66\n\n/* Parses the next token from a pattern string */\nstatic uint8_t next_token(const char **pattern)\n{\n    const char *pat = *pattern;\n    uint8_t token = NOISE_TOKEN_END;\n\n    /* Skip whitespace */\n    while (*pat == ' ' || *pat == '\\n' || *pat == ',')\n        ++pat;\n    if (*pat == '\\0') {\n        *pattern = pat;\n        return token;\n    }\n\n    /* Recognize the next token */\n    if (!strncmp(pat, \"ee\", 2)) {\n        pat += 2;\n        token = NOISE_TOKEN_EE;\n    } else if (!strncmp(pat, \"es\", 2)) {\n        pat += 2;\n        token = NOISE_TOKEN_ES;\n    } else if (!strncmp(pat, \"se\", 2)) {\n        pat += 2;\n        token = NOISE_TOKEN_SE;\n    } else if (!strncmp(pat, \"e\", 1)) {\n        pat += 1;\n        token = NOISE_TOKEN_E;\n    } else if (!strncmp(pat, \"ss\", 2)) {\n        pat += 2;\n        token = NOISE_TOKEN_SS;\n    } else if (!strncmp(pat, \"s\", 1)) {\n        pat += 1;\n        token = NOISE_TOKEN_S;\n    } else if (!strncmp(pat, \"ff\", 2)) {\n        pat += 2;\n        token = NOISE_TOKEN_FF;\n    } else if (!strncmp(pat, \"f\", 1)) {\n        pat += 1;\n        token = NOISE_TOKEN_F;\n    } else if (!strncmp(pat, \"<-\", 2)) {\n        pat += 2;\n        token = NOISE_TOKEN_LARROW;\n    } else if (!strncmp(pat, \"->\", 2)) {\n        pat += 2;\n        token = NOISE_TOKEN_RARROW;\n    } else {\n        token = NOISE_TOKEN_ERROR;\n    }\n\n    /* Return the token to the caller */\n    *pattern = pat;\n    return token;\n}\n\n#define CHECK_FOR_COLLAPSE  0   /* Check for entropy collapse */\n#define CHECK_STATIC_ONLY   0   /* Only check s/rs null, assume e/re non-null */\n\n#define E_IS_NULL       (1 << 0)\n#define S_IS_NULL       (1 << 1)\n#define RE_IS_NULL      (1 << 2)\n#define RS_IS_NULL      (1 << 3)\n\n/* Check for scenarios that could cause entropy collapse due to the\n   use of null public keys.  Entropy collapse occurs when the final\n   encryption key is the hash of all-null DH outputs even if some\n   of the keys were non-null during the handshake. */\nstatic void check_for_collapse(int id)\n{\n#if CHECK_FOR_COLLAPSE\n    const uint8_t *pattern;\n    int null_check;\n    int writing;\n    int all_null;\n    int involved;\n    uint8_t token;\n    int reported[16] = {0};\n    for (null_check = 0; null_check < 16; ++null_check) {\n#if CHECK_STATIC_ONLY\n        if ((null_check & (E_IS_NULL | RE_IS_NULL)) != 0)\n            continue;\n#endif\n        pattern = noise_pattern_lookup(id) + 2;\n        all_null = 1;\n        writing = 1;\n        involved = 0;\n        while ((token = *pattern++) != NOISE_TOKEN_END) {\n            switch (token) {\n            case NOISE_TOKEN_FLIP_DIR:\n                writing = !writing;\n                break;\n            case NOISE_TOKEN_EE:\n                if ((null_check & E_IS_NULL) == 0 &&\n                        (null_check & RE_IS_NULL) == 0)\n                    all_null = 0;\n                involved |= E_IS_NULL | RE_IS_NULL;\n                break;\n            case NOISE_TOKEN_ES:\n                if (writing) {\n                    if ((null_check & E_IS_NULL) == 0 &&\n                            (null_check & RS_IS_NULL) == 0)\n                        all_null = 0;\n                    involved |= E_IS_NULL | RS_IS_NULL;\n                } else {\n                    if ((null_check & S_IS_NULL) == 0 &&\n                            (null_check & RE_IS_NULL) == 0)\n                        all_null = 0;\n                    involved |= S_IS_NULL | RE_IS_NULL;\n                }\n                break;\n            case NOISE_TOKEN_SE:\n                if (writing) {\n                    if ((null_check & S_IS_NULL) == 0 &&\n                            (null_check & RE_IS_NULL) == 0)\n                        all_null = 0;\n                    involved |= S_IS_NULL | RE_IS_NULL;\n                } else {\n                    if ((null_check & E_IS_NULL) == 0 &&\n                            (null_check & RS_IS_NULL) == 0)\n                        all_null = 0;\n                    involved |= E_IS_NULL | RS_IS_NULL;\n                }\n                break;\n            case NOISE_TOKEN_SS:\n                if ((null_check & S_IS_NULL) == 0 &&\n                        (null_check & RS_IS_NULL) == 0)\n                    all_null = 0;\n                involved |= S_IS_NULL | RS_IS_NULL;\n                break;\n            }\n        }\n        involved &= null_check;\n        if (all_null && involved != 0 && !reported[involved]) {\n            /* We have found an entropy collapse scenario */\n            printf(\"%s:\", data_name);\n            if (involved & E_IS_NULL)\n                printf(\" e\");\n            if (involved & S_IS_NULL)\n                printf(\" s\");\n            if (involved & RE_IS_NULL)\n                printf(\" re\");\n            if (involved & RS_IS_NULL)\n                printf(\" rs\");\n            printf(\"\\n\");\n            reported[involved] = 1;\n        }\n    }\n#endif /* CHECK_FOR_COLLAPSE */\n}\n\n/* Checks a specific pattern to verify that it matches the specification\n   and that the pattern flags make sense with respect to the pattern */\nstatic void check_pattern(int id, const char *name, const char *required,\n                          const char *sequence)\n{\n    const uint8_t *pattern = noise_pattern_lookup(id);\n    NoisePatternFlags_t expected_flags;\n    NoisePatternFlags_t seen_flags = 0;\n    uint8_t token;\n    int role = 0;\n\n    /* Set the name of the pattern for reporting test failures */\n    data_name = name;\n\n    /* Verify that the pattern is supported by the library */\n    verify(pattern != 0);\n\n    /* Extract the flags and then advance to the first token */\n    expected_flags = ((NoisePatternFlags_t)(pattern[0])) |\n                    (((NoisePatternFlags_t)(pattern[1])) << 8);\n    pattern += 2;\n\n    /* Deal with the requirements */\n    token = next_token(&required);\n    while (token != NOISE_TOKEN_END) {\n        if (token == NOISE_TOKEN_LARROW) {\n            role = NOISE_ROLE_RESPONDER;\n        } else if (token == NOISE_TOKEN_RARROW) {\n            role = NOISE_ROLE_INITIATOR;\n        } else if (token == NOISE_TOKEN_E) {\n            verify(role == NOISE_ROLE_RESPONDER);\n            seen_flags |= NOISE_PAT_FLAG_REMOTE_EPHEM_REQ |\n                          NOISE_PAT_FLAG_REMOTE_EPHEMERAL;\n        } else if (token == NOISE_TOKEN_F) {\n            verify(role == NOISE_ROLE_RESPONDER);\n            seen_flags |= NOISE_PAT_FLAG_REMOTE_HYBRID_REQ |\n                          NOISE_PAT_FLAG_REMOTE_HYBRID;\n        } else if (token == NOISE_TOKEN_S) {\n            if (role == NOISE_ROLE_INITIATOR) {\n                seen_flags |= NOISE_PAT_FLAG_LOCAL_REQUIRED |\n                              NOISE_PAT_FLAG_LOCAL_STATIC;\n            } else if (role == NOISE_ROLE_RESPONDER) {\n                seen_flags |= NOISE_PAT_FLAG_REMOTE_REQUIRED |\n                              NOISE_PAT_FLAG_REMOTE_STATIC;\n            } else {\n                fail(\"role is not set\");\n            }\n        } else {\n            fail(\"unknown pre-message token\");\n        }\n        token = next_token(&required);\n    }\n\n    /* Deal with the token sequence */\n    token = next_token(&sequence);\n    role = 0;\n    while (token != NOISE_TOKEN_END) {\n        verify(token != NOISE_TOKEN_ERROR);\n        if (role == 0) {\n            /* We expect the first role to be declared */\n            if (token == NOISE_TOKEN_LARROW) {\n                role = NOISE_ROLE_RESPONDER;\n                compare(*pattern++, NOISE_TOKEN_FLIP_DIR);\n            } else if (token == NOISE_TOKEN_RARROW) {\n                role = NOISE_ROLE_INITIATOR;\n            } else {\n                fail(\"first role was not declared\");\n            }\n        } else {\n            /* Check for role reversal and message pattern tokens */\n            if (token == NOISE_TOKEN_LARROW) {\n                compare(role, NOISE_ROLE_INITIATOR);\n                compare(*pattern++, NOISE_TOKEN_FLIP_DIR);\n                role = NOISE_ROLE_RESPONDER;\n            } else if (token == NOISE_TOKEN_RARROW) {\n                compare(role, NOISE_ROLE_RESPONDER);\n                compare(*pattern++, NOISE_TOKEN_FLIP_DIR);\n                role = NOISE_ROLE_INITIATOR;\n            } else {\n                compare(*pattern++, token);\n                switch (token) {\n                case NOISE_TOKEN_S:\n                    if (role == NOISE_ROLE_INITIATOR)\n                        seen_flags |= NOISE_PAT_FLAG_LOCAL_STATIC;\n                    else\n                        seen_flags |= NOISE_PAT_FLAG_REMOTE_STATIC;\n                    break;\n                case NOISE_TOKEN_E:\n                    if (role == NOISE_ROLE_INITIATOR)\n                        seen_flags |= NOISE_PAT_FLAG_LOCAL_EPHEMERAL;\n                    else\n                        seen_flags |= NOISE_PAT_FLAG_REMOTE_EPHEMERAL;\n                    break;\n                case NOISE_TOKEN_EE:\n                    verify(seen_flags & NOISE_PAT_FLAG_LOCAL_EPHEMERAL);\n                    verify(seen_flags & NOISE_PAT_FLAG_REMOTE_EPHEMERAL);\n                    break;\n                case NOISE_TOKEN_ES:\n                    verify(seen_flags & NOISE_PAT_FLAG_LOCAL_EPHEMERAL);\n                    verify(seen_flags & NOISE_PAT_FLAG_REMOTE_STATIC);\n                    break;\n                case NOISE_TOKEN_SE:\n                    verify(seen_flags & NOISE_PAT_FLAG_LOCAL_STATIC);\n                    verify(seen_flags & NOISE_PAT_FLAG_REMOTE_EPHEMERAL);\n                    break;\n                case NOISE_TOKEN_SS:\n                    verify(seen_flags & NOISE_PAT_FLAG_LOCAL_STATIC);\n                    verify(seen_flags & NOISE_PAT_FLAG_REMOTE_STATIC);\n                    break;\n                case NOISE_TOKEN_F:\n                    if (role == NOISE_ROLE_INITIATOR)\n                        seen_flags |= NOISE_PAT_FLAG_LOCAL_HYBRID;\n                    else\n                        seen_flags |= NOISE_PAT_FLAG_REMOTE_HYBRID;\n                    break;\n                case NOISE_TOKEN_FF:\n                    verify(seen_flags & NOISE_PAT_FLAG_LOCAL_HYBRID);\n                    verify(seen_flags & NOISE_PAT_FLAG_REMOTE_HYBRID);\n                    break;\n                default:\n                    fail(\"unknown token\");\n                    break;\n                }\n            }\n        }\n        token = next_token(&sequence);\n    }\n    compare(*pattern, NOISE_TOKEN_END);\n\n    /* Check that the seen flags match the expected flags */\n    compare(seen_flags, expected_flags);\n\n    /* Check for entropy collapse scenarios in this pattern */\n    check_for_collapse(id);\n}\n\nvoid test_patterns(void)\n{\n    check_pattern(NOISE_PATTERN_N,\n                  \"Noise_N(rs)\",\n                  \"<- s\\n\",\n                  \"-> e, es\\n\");\n\n    check_pattern(NOISE_PATTERN_X,\n                  \"Noise_X(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, es, s, ss\\n\");\n\n    check_pattern(NOISE_PATTERN_K,\n                  \"Noise_K(s, rs)\",\n                  \"-> s\\n\"\n                  \"<- s\\n\",\n                  \"-> e, es, ss\\n\");\n\n    check_pattern(NOISE_PATTERN_NN,\n                  \"Noise_NN()\",\n                  \"\",\n                  \"-> e\\n\"\n                  \"<- e, ee\\n\");\n\n    check_pattern(NOISE_PATTERN_NK,\n                  \"Noise_NK(rs)\",\n                  \"<- s\\n\",\n                  \"-> e, es\\n\"\n                  \"<- e, ee\\n\");\n\n    check_pattern(NOISE_PATTERN_NX,\n                  \"Noise_NX(rs)\",\n                  \"\",\n                  \"-> e\\n\"\n                  \"<- e, ee, s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_XN,\n                  \"Noise_XN(s)\",\n                  \"\",\n                  \"-> e\\n\"\n                  \"<- e, ee\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_XK,\n                  \"Noise_XK(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, es\\n\"\n                  \"<- e, ee\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_XX,\n                  \"Noise_XX(s, rs)\",\n                  \"\",\n                  \"-> e\\n\"\n                  \"<- e, ee, s, es\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KN,\n                  \"Noise_KN(s)\",\n                  \"-> s\\n\",\n                  \"-> e\\n\"\n                  \"<- e, ee, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KK,\n                  \"Noise_KK(s, rs)\",\n                  \"-> s\\n\"\n                  \"<- s\\n\",\n                  \"-> e, es, ss\\n\"\n                  \"<- e, ee, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KX,\n                  \"Noise_KX(s, rs)\",\n                  \"-> s\\n\",\n                  \"-> e\\n\"\n                  \"<- e, ee, se, s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_IN,\n                  \"Noise_IN(s)\",\n                  \"\",\n                  \"-> e, s\\n\"\n                  \"<- e, ee, se\\n\");\n\n    check_pattern(NOISE_PATTERN_IK,\n                  \"Noise_IK(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, es, s, ss\\n\"\n                  \"<- e, ee, se\\n\");\n\n    check_pattern(NOISE_PATTERN_IX,\n                  \"Noise_IX(s, rs)\",\n                  \"\",\n                  \"-> e, s\\n\"\n                  \"<- e, ee, se, s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_XX_FALLBACK,\n                  \"Noise_XXfallback(s, rs, re)\",\n                  \"<- e\\n\",\n                  \"-> e, ee, s, se\\n\"\n                  \"<- s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_X_NOIDH,\n                  \"Noise_Xnoidh(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, s, es, ss\\n\");\n\n    check_pattern(NOISE_PATTERN_NX_NOIDH,\n                  \"Noise_NXnoidh(rs)\",\n                  \"\",\n                  \"-> e\\n\"\n                  \"<- e, s, ee, es\\n\");\n\n    check_pattern(NOISE_PATTERN_XX_NOIDH,\n                  \"Noise_XXnoidh(s, rs)\",\n                  \"\",\n                  \"-> e\\n\"\n                  \"<- e, s, ee, es\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KX_NOIDH,\n                  \"Noise_KXnoidh(s, rs)\",\n                  \"-> s\\n\",\n                  \"-> e\\n\"\n                  \"<- e, s, ee, se, es\\n\");\n\n    check_pattern(NOISE_PATTERN_IK_NOIDH,\n                  \"Noise_IKnoidh(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, s, es, ss\\n\"\n                  \"<- e, ee, se\\n\");\n\n    check_pattern(NOISE_PATTERN_IX_NOIDH,\n                  \"Noise_IXnoidh(s, rs)\",\n                  \"\",\n                  \"-> e, s\\n\"\n                  \"<- e, s, ee, se, es\\n\");\n\n    check_pattern(NOISE_PATTERN_NN_HFS,\n                  \"Noise_NNhfs()\",\n                  \"\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, ee, ff\\n\");\n\n    check_pattern(NOISE_PATTERN_NK_HFS,\n                  \"Noise_NKhfs(rs)\",\n                  \"<- s\\n\",\n                  \"-> e, f, es\\n\"\n                  \"<- e, f, ee, ff\\n\");\n\n    check_pattern(NOISE_PATTERN_NX_HFS,\n                  \"Noise_NXhfs(rs)\",\n                  \"\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, ee, ff, s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_XN_HFS,\n                  \"Noise_XNhfs(s)\",\n                  \"\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, ee, ff\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_XK_HFS,\n                  \"Noise_XKhfs(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, f, es\\n\"\n                  \"<- e, f, ee, ff\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_XX_HFS,\n                  \"Noise_XXhfs(s, rs)\",\n                  \"\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, ee, ff, s, es\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KN_HFS,\n                  \"Noise_KNhfs(s)\",\n                  \"-> s\\n\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, ee, ff, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KK_HFS,\n                  \"Noise_KKhfs(s, rs)\",\n                  \"-> s\\n\"\n                  \"<- s\\n\",\n                  \"-> e, f, es, ss\\n\"\n                  \"<- e, f, ee, ff, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KX_HFS,\n                  \"Noise_KXhfs(s, rs)\",\n                  \"-> s\\n\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, ee, ff, se, s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_IN_HFS,\n                  \"Noise_INhfs(s)\",\n                  \"\",\n                  \"-> e, f, s\\n\"\n                  \"<- e, f, ee, ff, se\\n\");\n\n    check_pattern(NOISE_PATTERN_IK_HFS,\n                  \"Noise_IKhfs(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, f, es, s, ss\\n\"\n                  \"<- e, f, ee, ff, se\\n\");\n\n    check_pattern(NOISE_PATTERN_IX_HFS,\n                  \"Noise_IXhfs(s, rs)\",\n                  \"\",\n                  \"-> e, f, s\\n\"\n                  \"<- e, f, ee, ff, se, s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_XX_FALLBACK_HFS,\n                  \"Noise_XXfallback+hfs(s, rs, re)\",\n                  \"<- e, f\\n\",\n                  \"-> e, f, ee, ff, s, se\\n\"\n                  \"<- s, es\\n\");\n\n    check_pattern(NOISE_PATTERN_NX_NOIDH_HFS,\n                  \"Noise_NXnoidh+hfs(rs)\",\n                  \"\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, s, ee, ff, es\\n\");\n\n    check_pattern(NOISE_PATTERN_XX_NOIDH_HFS,\n                  \"Noise_XXnoidh+hfs(s, rs)\",\n                  \"\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, s, ee, ff, es\\n\"\n                  \"-> s, se\\n\");\n\n    check_pattern(NOISE_PATTERN_KX_NOIDH_HFS,\n                  \"Noise_KXnoidh+hfs(s, rs)\",\n                  \"-> s\\n\",\n                  \"-> e, f\\n\"\n                  \"<- e, f, s, ee, ff, se, es\\n\");\n\n    check_pattern(NOISE_PATTERN_IK_NOIDH_HFS,\n                  \"Noise_IKnoidh+hfs(s, rs)\",\n                  \"<- s\\n\",\n                  \"-> e, f, s, es, ss\\n\"\n                  \"<- e, f, ee, ff, se\\n\");\n\n    check_pattern(NOISE_PATTERN_IX_NOIDH_HFS,\n                  \"Noise_IXnoidh+hfs(s, rs)\",\n                  \"\",\n                  \"-> e, f, s\\n\"\n                  \"<- e, f, s, ee, ff, se, es\\n\");\n}\n"
  },
  {
    "path": "tests/unit/test-protobufs.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n#include <noise/protobufs.h>\n\n/* Tests for the \"prepare\" functions */\nstatic void test_protobufs_prepare(void)\n{\n    uint8_t data[128];\n    NoiseProtobuf pbuf;\n\n    memset(data, 0xAA, sizeof(data));\n    memset(&pbuf, 0x66, sizeof(pbuf));\n\n    compare(noise_protobuf_prepare_input(&pbuf, data, sizeof(data)),\n            NOISE_ERROR_NONE);\n    verify(pbuf.data == data);\n    compare(pbuf.size, sizeof(data));\n    compare(pbuf.posn, 0);\n    compare(pbuf.error, NOISE_ERROR_NONE);\n\n    compare(noise_protobuf_prepare_input(0, data, sizeof(data)),\n            NOISE_ERROR_INVALID_PARAM);\n    pbuf.data = 0;\n    compare(noise_protobuf_prepare_input(&pbuf, 0, sizeof(data)),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(pbuf.data == 0);\n\n    memset(&pbuf, 0x66, sizeof(pbuf));\n    compare(noise_protobuf_prepare_output(&pbuf, data, sizeof(data)),\n            NOISE_ERROR_NONE);\n    verify(pbuf.data == data);\n    compare(pbuf.size, sizeof(data));\n    compare(pbuf.posn, sizeof(data));\n    compare(pbuf.error, NOISE_ERROR_NONE);\n\n    compare(noise_protobuf_prepare_output(0, data, sizeof(data)),\n            NOISE_ERROR_INVALID_PARAM);\n    pbuf.data = 0;\n    compare(noise_protobuf_prepare_output(&pbuf, 0, sizeof(data)),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(pbuf.data == 0);\n\n    memset(&pbuf, 0x66, sizeof(pbuf));\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(data)),\n            NOISE_ERROR_NONE);\n    verify(pbuf.data == 0);\n    compare(pbuf.size, sizeof(data));\n    compare(pbuf.posn, sizeof(data));\n    compare(pbuf.error, NOISE_ERROR_NONE);\n\n    compare(noise_protobuf_prepare_measure(0, sizeof(data)),\n            NOISE_ERROR_INVALID_PARAM);\n}\n\n#define is_int32(x)     ((x) >= -2147483648LL && (x) <= 2147483647LL)\n#define is_uint32(x)    ((x) >= 0 && (x) <= 4294967295LL)\n#define is_tag(x)       ((x) >= 1 && (x) <= 536870911LL)\n\n/* Check the encoding/decoding of a specific integer value */\nstatic void check_integer(int64_t value, const char *varint, const char *sint)\n{\n    uint8_t vinput[128];\n    uint8_t sinput[128];\n    uint8_t output[128];\n    size_t vlen;\n    size_t slen;\n    NoiseProtobuf pbuf;\n    uint8_t *out;\n    size_t olen;\n    static char number[64];\n    int32_t val32;\n    uint32_t uval32;\n    int64_t val64;\n    uint64_t uval64;\n    int valbool;\n\n    snprintf(number, sizeof(number), \"%lld\", (long long)value);\n    data_name = number;\n\n    vlen = string_to_data(vinput, sizeof(vinput), varint);\n    slen = string_to_data(sinput, sizeof(sinput), sint);\n\n    /* Check int32 functions */\n    if (is_int32(value)) {\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_int32(&pbuf, 0, (int32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        compare_blocks(out, olen, vinput, vlen);\n\n        compare(noise_protobuf_read_int32(&pbuf, 0, &val32),\n                NOISE_ERROR_NONE);\n        compare(val32, value);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, vinput, vlen - 1),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_int32(&pbuf, 0, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        output[0] = (15 << 3);\n        memcpy(output + 1, vinput, vlen);\n        compare(noise_protobuf_prepare_input(&pbuf, output, vlen),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_int32(&pbuf, 15, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_int32(&pbuf, 0, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_int32(&pbuf, 15, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_int32(&pbuf, 0, (int32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output_shift(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        verify(out == output);\n        compare_blocks(out, olen, vinput, vlen);\n\n        compare(noise_protobuf_prepare_input(&pbuf, output, olen),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_int32(&pbuf, 0, &val32),\n                NOISE_ERROR_NONE);\n        compare(val32, value);\n\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_sint32(&pbuf, 0, (int32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        compare_blocks(out, olen, sinput, slen);\n\n        compare(noise_protobuf_read_sint32(&pbuf, 0, &val32),\n                NOISE_ERROR_NONE);\n        compare(val32, value);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, sinput, slen - 1),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sint32(&pbuf, 0, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        output[0] = (15 << 3);\n        memcpy(output + 1, sinput, slen);\n        compare(noise_protobuf_prepare_input(&pbuf, output, slen),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sint32(&pbuf, 15, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, sinput, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sint32(&pbuf, 0, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, sinput, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sint32(&pbuf, 15, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_sfixed32(&pbuf, 15, (int32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, 5);\n        compare(out[0], (15 << 3) | 5);\n        compare(out[1], (uint8_t)value);\n        compare(out[2], (uint8_t)(value >> 8));\n        compare(out[3], (uint8_t)(value >> 16));\n        compare(out[4], (uint8_t)(value >> 24));\n\n        compare(noise_protobuf_read_sfixed32(&pbuf, 15, &val32),\n                NOISE_ERROR_NONE);\n        compare(val32, value);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out, olen - 1),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sfixed32(&pbuf, 15, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out + 1, olen - 2),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sfixed32(&pbuf, 0, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sfixed32(&pbuf, 15, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        val32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_sfixed32(&pbuf, 0, &val32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(val32, 0);\n\n        compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n                NOISE_ERROR_NONE);\n        verify(pbuf.data == 0);\n        compare(noise_protobuf_write_int32(&pbuf, 0, (int32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_measure(&pbuf, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, vlen);\n\n        compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_int32(&pbuf, 15, (int32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_measure(&pbuf, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, vlen + 1);\n    }\n\n    /* Check uint32 functions */\n    if (is_uint32(value)) {\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_uint32(&pbuf, 0, (uint32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        compare_blocks(out, olen, vinput, vlen);\n\n        compare(noise_protobuf_read_uint32(&pbuf, 0, &uval32),\n                NOISE_ERROR_NONE);\n        compare(uval32, value);\n\n        uval32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, vinput, vlen - 1),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_uint32(&pbuf, 0, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        uval32 = 42;\n        output[0] = (15 << 3);\n        memcpy(output + 1, vinput, vlen);\n        compare(noise_protobuf_prepare_input(&pbuf, output, vlen),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_uint32(&pbuf, 15, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        uval32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_uint32(&pbuf, 0, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        uval32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_uint32(&pbuf, 15, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_uint32(&pbuf, 0, (uint32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output_shift(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        verify(out == output);\n        compare_blocks(out, olen, vinput, vlen);\n\n        compare(noise_protobuf_prepare_input(&pbuf, output, olen),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_uint32(&pbuf, 0, &uval32),\n                NOISE_ERROR_NONE);\n        compare(uval32, value);\n\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_fixed32(&pbuf, 15, (uint32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, 5);\n        compare(out[0], (15 << 3) | 5);\n        compare(out[1], (uint8_t)value);\n        compare(out[2], (uint8_t)(value >> 8));\n        compare(out[3], (uint8_t)(value >> 16));\n        compare(out[4], (uint8_t)(value >> 24));\n\n        compare(noise_protobuf_read_fixed32(&pbuf, 15, &uval32),\n                NOISE_ERROR_NONE);\n        compare(uval32, value);\n\n        uval32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out, olen - 1),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_fixed32(&pbuf, 15, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        uval32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out + 1, olen - 2),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_fixed32(&pbuf, 0, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        uval32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_fixed32(&pbuf, 15, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        uval32 = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, out, 0),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_fixed32(&pbuf, 0, &uval32),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(uval32, 0);\n\n        compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n                NOISE_ERROR_NONE);\n        verify(pbuf.data == 0);\n        compare(noise_protobuf_write_uint32(&pbuf, 0, (uint32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_measure(&pbuf, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, vlen);\n\n        compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_uint32(&pbuf, 15, (uint32_t)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_measure(&pbuf, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, vlen + 1);\n    }\n\n    /* Check int64 functions */\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_int64(&pbuf, 0, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare_blocks(out, olen, vinput, vlen);\n\n    compare(noise_protobuf_read_int64(&pbuf, 0, &val64),\n            NOISE_ERROR_NONE);\n    compare(val64, value);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, vinput, vlen - 1),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_int64(&pbuf, 0, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    output[0] = (15 << 3);\n    memcpy(output + 1, vinput, vlen);\n    compare(noise_protobuf_prepare_input(&pbuf, output, vlen),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_int64(&pbuf, 15, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_int64(&pbuf, 0, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_int64(&pbuf, 15, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_int64(&pbuf, 0, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output_shift(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    verify(out == output);\n    compare_blocks(out, olen, vinput, vlen);\n\n    compare(noise_protobuf_prepare_input(&pbuf, output, olen),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_int64(&pbuf, 0, &val64),\n            NOISE_ERROR_NONE);\n    compare(val64, value);\n\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_sint64(&pbuf, 0, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare_blocks(out, olen, sinput, slen);\n\n    compare(noise_protobuf_read_sint64(&pbuf, 0, &val64),\n            NOISE_ERROR_NONE);\n    compare(val64, value);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, sinput, slen - 1),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sint64(&pbuf, 0, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    output[0] = (15 << 3);\n    memcpy(output + 1, sinput, slen);\n    compare(noise_protobuf_prepare_input(&pbuf, output, slen),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sint64(&pbuf, 15, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, sinput, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sint64(&pbuf, 0, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, sinput, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sint64(&pbuf, 15, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_sfixed64(&pbuf, 15, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 9);\n    compare(out[0], (15 << 3) | 1);\n    compare(out[1], (uint8_t)value);\n    compare(out[2], (uint8_t)(value >> 8));\n    compare(out[3], (uint8_t)(value >> 16));\n    compare(out[4], (uint8_t)(value >> 24));\n    compare(out[5], (uint8_t)(value >> 32));\n    compare(out[6], (uint8_t)(value >> 40));\n    compare(out[7], (uint8_t)(value >> 48));\n    compare(out[8], (uint8_t)(value >> 56));\n\n    compare(noise_protobuf_read_sfixed64(&pbuf, 15, &val64),\n            NOISE_ERROR_NONE);\n    compare(val64, value);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, out, olen - 1),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sfixed64(&pbuf, 15, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, out + 1, olen - 2),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sfixed64(&pbuf, 0, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, out, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sfixed64(&pbuf, 15, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    val64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, out, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_sfixed64(&pbuf, 0, &val64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(val64, 0);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    verify(pbuf.data == 0);\n    compare(noise_protobuf_write_int64(&pbuf, 0, (int64_t)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, vlen);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_int64(&pbuf, 15, (int64_t)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, vlen + 1);\n\n    /* Check uint64 functions */\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_uint64(&pbuf, 0, (uint64_t)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare_blocks(out, olen, vinput, vlen);\n\n    compare(noise_protobuf_read_uint64(&pbuf, 0, &uval64),\n            NOISE_ERROR_NONE);\n    compare(uval64, value);\n\n    uval64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, vinput, vlen - 1),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_uint64(&pbuf, 0, &uval64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(uval64, 0);\n\n    uval64 = 42;\n    output[0] = (15 << 3);\n    memcpy(output + 1, vinput, vlen);\n    compare(noise_protobuf_prepare_input(&pbuf, output, vlen),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_uint64(&pbuf, 15, &uval64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(uval64, 0);\n\n    uval64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_uint64(&pbuf, 0, &uval64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(uval64, 0);\n\n    uval64 = 42;\n    compare(noise_protobuf_prepare_input(&pbuf, vinput, 0),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_uint64(&pbuf, 15, &uval64),\n            NOISE_ERROR_INVALID_FORMAT);\n    compare(uval64, 0);\n\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_uint64(&pbuf, 0, (uint64_t)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output_shift(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    verify(out == output);\n    compare_blocks(out, olen, vinput, vlen);\n\n    compare(noise_protobuf_prepare_input(&pbuf, output, olen),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_uint64(&pbuf, 0, &uval64),\n            NOISE_ERROR_NONE);\n    compare(uval64, value);\n\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_fixed64(&pbuf, 15, (uint64_t)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 9);\n    compare(out[0], (15 << 3) | 1);\n    compare(out[1], (uint8_t)value);\n    compare(out[2], (uint8_t)(value >> 8));\n    compare(out[3], (uint8_t)(value >> 16));\n    compare(out[4], (uint8_t)(value >> 24));\n    compare(out[5], (uint8_t)(value >> 32));\n    compare(out[6], (uint8_t)(value >> 40));\n    compare(out[7], (uint8_t)(value >> 48));\n    compare(out[8], (uint8_t)(value >> 56));\n\n    compare(noise_protobuf_read_fixed64(&pbuf, 15, &uval64),\n            NOISE_ERROR_NONE);\n    compare(uval64, value);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    verify(pbuf.data == 0);\n    compare(noise_protobuf_write_uint64(&pbuf, 0, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, vlen);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_uint64(&pbuf, 15, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, vlen + 1);\n\n    /* Check bool functions (non-zero is true, zero is false) */\n    if (value >= -32768 && value <= 32767) {\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_bool(&pbuf, 0, (int)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, 1);\n        if (value)\n            compare(out[0], 1);\n        else\n            compare(out[0], 0);\n\n        compare(noise_protobuf_read_bool(&pbuf, 0, &valbool),\n                NOISE_ERROR_NONE);\n        if (value)\n            compare(valbool, 1);\n        else\n            compare(valbool, 0);\n\n        output[0] = 42;\n        compare(noise_protobuf_prepare_input(&pbuf, output, 1),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_bool(&pbuf, 0, &valbool),\n                NOISE_ERROR_NONE);\n        compare(valbool, 1);\n\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_bool(&pbuf, 15, (int)value),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, 2);\n        compare(out[0], (15 << 3));\n        if (value)\n            compare(out[1], 1);\n        else\n            compare(out[1], 0);\n\n        compare(noise_protobuf_read_bool(&pbuf, 15, &valbool),\n                NOISE_ERROR_NONE);\n        if (value)\n            compare(valbool, 1);\n        else\n            compare(valbool, 0);\n    }\n\n    /* Check the use of the integer as a tag */\n    if (is_tag(value)) {\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_uint64(&pbuf, (int)value, 128),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n\n        compare(noise_protobuf_read_uint64(&pbuf, 0, &uval64),\n                NOISE_ERROR_NONE);\n        compare(uval64, (value << 3));\n        compare(noise_protobuf_read_uint64(&pbuf, 0, &uval64),\n                NOISE_ERROR_NONE);\n        compare(uval64, 128);\n\n        compare(noise_protobuf_prepare_input(&pbuf, out, olen),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_read_uint64(&pbuf, (int)value, &uval64),\n                NOISE_ERROR_NONE);\n        compare(uval64, 128);\n    }\n}\n\n/* Test the encoding and decoding of integer values */\nstatic void test_protobufs_integer(void)\n{\n    /* Check values around multiples of 8 bits and 7 bits */\n    check_integer(0LL, \"0x00\", \"0x00\");\n    check_integer(1LL, \"0x01\", \"0x02\");\n    check_integer(-1LL, \"0xFFFFFFFFFFFFFFFFFF01\", \"0x01\");\n    check_integer(-2LL, \"0xFEFFFFFFFFFFFFFFFF01\", \"0x03\");\n    check_integer(127LL, \"0x7F\", \"0xFE01\");\n    check_integer(-127LL, \"0x81FFFFFFFFFFFFFFFF01\", \"0xFD01\");\n    check_integer(128LL, \"0x8001\", \"0x8002\");\n    check_integer(-128LL, \"0x80FFFFFFFFFFFFFFFF01\", \"0xFF01\");\n    check_integer(16383LL, \"0xFF7F\", \"0xFEFF01\");\n    check_integer(16384LL, \"0x808001\", \"0x808002\");\n    check_integer(-16383LL, \"0x8180FFFFFFFFFFFFFF01\", \"0xFDFF01\");\n    check_integer(-16384LL, \"0x8080FFFFFFFFFFFFFF01\", \"0xFFFF01\");\n    check_integer(32767LL, \"0xFFFF01\", \"0xFEFF03\");\n    check_integer(32768LL, \"0x808002\", \"0x808004\");\n    check_integer(-32767LL, \"0x8180FEFFFFFFFFFFFF01\", \"0xFDFF03\");\n    check_integer(-32768LL, \"0x8080FEFFFFFFFFFFFF01\", \"0xFFFF03\");\n    check_integer(65535LL, \"0xFFFF03\", \"0xFEFF07\");\n    check_integer(65536LL, \"0x808004\", \"0x808008\");\n    check_integer(-65535LL, \"0x8180FCFFFFFFFFFFFF01\", \"0xFDFF07\");\n    check_integer(-65536LL, \"0x8080FCFFFFFFFFFFFF01\", \"0xFFFF07\");\n    check_integer(2097151LL, \"0xFFFF7F\", \"0xFEFFFF01\");\n    check_integer(2097152LL, \"0x80808001\", \"0x80808002\");\n    check_integer(-2097151LL, \"0x818080FFFFFFFFFFFF01\", \"0xFDFFFF01\");\n    check_integer(-2097152LL, \"0x808080FFFFFFFFFFFF01\", \"0xFFFFFF01\");\n    check_integer(16777215LL, \"0xFFFFFF07\", \"0xFEFFFF0F\");\n    check_integer(16777216LL, \"0x80808008\", \"0x80808010\");\n    check_integer(-16777215LL, \"0x818080F8FFFFFFFFFF01\", \"0xFDFFFF0F\");\n    check_integer(-16777216LL, \"0x808080F8FFFFFFFFFF01\", \"0xFFFFFF0F\");\n    check_integer(268435455LL, \"0xFFFFFF7F\", \"0xFEFFFFFF01\");\n    check_integer(268435456LL, \"0x8080808001\", \"0x8080808002\");\n    check_integer(-268435455LL, \"0x81808080FFFFFFFFFF01\", \"0xFDFFFFFF01\");\n    check_integer(-268435456LL, \"0x80808080FFFFFFFFFF01\", \"0xFFFFFFFF01\");\n    check_integer(2147483647LL, \"0xFFFFFFFF07\", \"0xFEFFFFFF0F\");\n    check_integer(2147483648LL, \"0x8080808008\", \"0x8080808010\");\n    check_integer(-2147483647LL, \"0x81808080F8FFFFFFFF01\", \"0xFDFFFFFF0F\");\n    check_integer(-2147483648LL, \"0x80808080F8FFFFFFFF01\", \"0xFFFFFFFF0F\");\n    check_integer(34359738367LL, \"0xFFFFFFFF7F\", \"0xFEFFFFFFFF01\");\n    check_integer(34359738368LL, \"0x808080808001\", \"0x808080808002\");\n    check_integer(-34359738367LL, \"0x8180808080FFFFFFFF01\", \"0xFDFFFFFFFF01\");\n    check_integer(-34359738368LL, \"0x8080808080FFFFFFFF01\", \"0xFFFFFFFFFF01\");\n    check_integer(4294967295LL, \"0xFFFFFFFF0F\", \"0xFEFFFFFF1F\");\n    check_integer(4294967296LL, \"0x8080808010\", \"0x8080808020\");\n    check_integer(-4294967295LL, \"0x81808080F0FFFFFFFF01\", \"0xFDFFFFFF1F\");\n    check_integer(-4294967296LL, \"0x80808080F0FFFFFFFF01\", \"0xFFFFFFFF1F\");\n    check_integer(1099511627775LL, \"0xFFFFFFFFFF1F\", \"0xFEFFFFFFFF3F\");\n    check_integer(1099511627776LL, \"0x808080808020\", \"0x808080808040\");\n    check_integer(-1099511627775LL, \"0x8180808080E0FFFFFF01\", \"0xFDFFFFFFFF3F\");\n    check_integer(-1099511627776LL, \"0x8080808080E0FFFFFF01\", \"0xFFFFFFFFFF3F\");\n    check_integer(4398046511103LL, \"0xFFFFFFFFFF7F\", \"0xFEFFFFFFFFFF01\");\n    check_integer(4398046511104LL, \"0x80808080808001\", \"0x80808080808002\");\n    check_integer(-4398046511103LL, \"0x818080808080FFFFFF01\", \"0xFDFFFFFFFFFF01\");\n    check_integer(-4398046511104LL, \"0x808080808080FFFFFF01\", \"0xFFFFFFFFFFFF01\");\n    check_integer(281474976710655LL, \"0xFFFFFFFFFFFF3F\", \"0xFEFFFFFFFFFF7F\");\n    check_integer(281474976710656LL, \"0x80808080808040\", \"0x8080808080808001\");\n    check_integer(-281474976710655LL, \"0x818080808080C0FFFF01\", \"0xFDFFFFFFFFFF7F\");\n    check_integer(-281474976710656LL, \"0x808080808080C0FFFF01\", \"0xFFFFFFFFFFFF7F\");\n    check_integer(562949953421311LL, \"0xFFFFFFFFFFFF7F\", \"0xFEFFFFFFFFFFFF01\");\n    check_integer(562949953421312LL, \"0x8080808080808001\", \"0x8080808080808002\");\n    check_integer(-562949953421311LL, \"0x81808080808080FFFF01\", \"0xFDFFFFFFFFFFFF01\");\n    check_integer(-562949953421312LL, \"0x80808080808080FFFF01\", \"0xFFFFFFFFFFFFFF01\");\n    check_integer(72057594037927935LL, \"0xFFFFFFFFFFFFFF7F\", \"0xFEFFFFFFFFFFFFFF01\");\n    check_integer(72057594037927936LL, \"0x808080808080808001\", \"0x808080808080808002\");\n    check_integer(-72057594037927935LL, \"0x8180808080808080FF01\", \"0xFDFFFFFFFFFFFFFF01\");\n    check_integer(-72057594037927936LL, \"0x8080808080808080FF01\", \"0xFFFFFFFFFFFFFFFF01\");\n    check_integer(9223372036854775807LL, \"0xFFFFFFFFFFFFFFFF7F\", \"0xFEFFFFFFFFFFFFFFFF01\");\n    check_integer(-9223372036854775807LL, \"0x81808080808080808001\", \"0xFDFFFFFFFFFFFFFFFF01\");\n    check_integer(9223372036854775808ULL, \"0x80808080808080808001\", \"0xFFFFFFFFFFFFFFFFFF01\");\n}\n\n/* Check the encoding/decoding of a specific floating-point value */\nstatic void check_floating_point(const char *name, double value)\n{\n    uint8_t output[128];\n    NoiseProtobuf pbuf;\n    uint8_t *out;\n    size_t olen;\n    float valFloat;\n    double valDouble;\n\n    data_name = name;\n\n    memset(output, 0xAA, sizeof(output));\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_float(&pbuf, 0, (float)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 4);\n\n    valFloat = -56;\n    compare(noise_protobuf_read_float(&pbuf, 0, &valFloat),\n            NOISE_ERROR_NONE);\n    verify(valFloat == (float)value);\n\n    memset(output, 0xAA, sizeof(output));\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_float(&pbuf, 15, (float)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 5);\n    compare(out[0], (15 << 3) | 5);\n\n    valFloat = -56;\n    compare(noise_protobuf_read_float(&pbuf, 15, &valFloat),\n            NOISE_ERROR_NONE);\n    verify(valFloat == (float)value);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    verify(pbuf.data == 0);\n    compare(noise_protobuf_write_float(&pbuf, 0, (float)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 4);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_float(&pbuf, 15, (float)value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 5);\n\n    memset(output, 0xAA, sizeof(output));\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_double(&pbuf, 0, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 8);\n\n    valDouble = -56;\n    compare(noise_protobuf_read_double(&pbuf, 0, &valDouble),\n            NOISE_ERROR_NONE);\n    verify(valDouble == value);\n\n    memset(output, 0xAA, sizeof(output));\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_double(&pbuf, 15, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 9);\n    compare(out[0], (15 << 3) | 1);\n\n    valDouble = -56;\n    compare(noise_protobuf_read_double(&pbuf, 15, &valDouble),\n            NOISE_ERROR_NONE);\n    verify(valDouble == value);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    verify(pbuf.data == 0);\n    compare(noise_protobuf_write_double(&pbuf, 0, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 8);\n\n    compare(noise_protobuf_prepare_measure(&pbuf, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_double(&pbuf, 15, value),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_measure(&pbuf, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, 9);\n}\n\n/* Test the encoding and decoding of floating-point values */\nstatic void test_protobufs_floating_point(void)\n{\n    check_floating_point(\"0\", 0.0);\n    check_floating_point(\"1\", 1.0);\n    check_floating_point(\"-1\", -1.0);\n    check_floating_point(\"42.5\", 42.5);\n    check_floating_point(\"-42.5\", -42.5);\n}\n\n/* Check encoding and decoding of a specific string / byte array */\nstatic void check_tagged_string(const char *str, int is_valid_utf8, int tag)\n{\n    uint8_t input[128];\n    uint8_t output[128];\n    uint8_t buffer[128];\n    NoiseProtobuf pbuf;\n    NoiseProtobuf pbuf2;\n    uint8_t *out;\n    size_t olen;\n    size_t len;\n    char *value;\n    void *bvalue;\n\n    data_name = str;\n    len = string_to_data(input, sizeof(input), str);\n\n    memset(output, 0xAA, sizeof(output));\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    if (is_valid_utf8) {\n        /* Write the valid string */\n        compare(noise_protobuf_write_string\n                    (&pbuf, tag, (const char *)input, len),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n\n        /* Read the string back and compare */\n        pbuf2 = pbuf;\n        memset(buffer, 0xAA, sizeof(buffer));\n        compare(noise_protobuf_read_string\n                    (&pbuf2, tag, (char *)buffer, sizeof(buffer), &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, len);\n        verify(!memcmp(buffer, input, len));\n        compare(buffer[len], '\\0');\n        pbuf2 = pbuf;\n        value = 0;\n        compare(noise_protobuf_read_alloc_string(&pbuf2, tag, &value, 0, &olen),\n                NOISE_ERROR_NONE);\n        compare(olen, len);\n        verify(!memcmp(value, input, len));\n        compare(value[len], '\\0');\n        free(value);\n\n        /* Truncated input data, shorter than the encoded string length */\n        if (len > 0) {\n            pbuf2 = pbuf;\n            --(pbuf2.size);\n            memset(buffer, 0xAA, sizeof(buffer));\n            compare(noise_protobuf_read_string\n                        (&pbuf2, tag, (char *)buffer, sizeof(buffer), &olen),\n                    NOISE_ERROR_INVALID_FORMAT);\n            compare(olen, 0);\n            compare(buffer[0], '\\0');\n            pbuf2 = pbuf;\n            --(pbuf2.size);\n            value = (char *)(-1);\n            olen = 1;\n            compare(noise_protobuf_read_alloc_string\n                        (&pbuf2, tag, &value, 0, &olen),\n                    NOISE_ERROR_INVALID_FORMAT);\n            verify(value == 0);\n            compare(olen, 0);\n        }\n    } else {\n        /* Invalid UTF-8 - write should fail */\n        compare(noise_protobuf_write_string\n                    (&pbuf, tag, (const char *)input, len),\n                NOISE_ERROR_INVALID_FORMAT);\n\n        /* Write the string as a byte array instead */\n        compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_write_bytes\n                    (&pbuf, tag, (const char *)input, len),\n                NOISE_ERROR_NONE);\n        compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n                NOISE_ERROR_NONE);\n\n        /* Try to read the value back - now it will fail */\n        pbuf2 = pbuf;\n        memset(buffer, 0xAA, sizeof(buffer));\n        compare(noise_protobuf_read_string\n                    (&pbuf2, tag, (char *)buffer, sizeof(buffer), &olen),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(olen, 0);\n        compare(buffer[0], '\\0');\n        pbuf2 = pbuf;\n        value = (char *)(-1);\n        olen = 1;\n        compare(noise_protobuf_read_alloc_string(&pbuf2, tag, &value, 0, &olen),\n                NOISE_ERROR_INVALID_FORMAT);\n        verify(value == 0);\n        compare(olen, 0);\n    }\n\n    /* Repeat the tests, encoding as \"bytes\" instead */\n    memset(output, 0xAA, sizeof(output));\n    compare(noise_protobuf_prepare_output(&pbuf, output, sizeof(output)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_bytes\n                (&pbuf, tag, (const char *)input, len),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output(&pbuf, &out, &olen),\n            NOISE_ERROR_NONE);\n\n    /* Read the bytes back and compare */\n    pbuf2 = pbuf;\n    compare(noise_protobuf_read_bytes\n                (&pbuf2, tag, (char *)buffer, sizeof(buffer), &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, len);\n    verify(!memcmp(buffer, input, len));\n    pbuf2 = pbuf;\n    bvalue = 0;\n    compare(noise_protobuf_read_alloc_bytes(&pbuf2, tag, &bvalue, 0, &olen),\n            NOISE_ERROR_NONE);\n    compare(olen, len);\n    verify(!memcmp(bvalue, input, len));\n    free(bvalue);\n\n    /* Truncated input data, shorter than the encoded byte array length */\n    if (len > 0) {\n        pbuf2 = pbuf;\n        --(pbuf2.size);\n        memset(buffer, 0xAA, sizeof(buffer));\n        compare(noise_protobuf_read_bytes\n                    (&pbuf2, tag, (char *)buffer, sizeof(buffer), &olen),\n                NOISE_ERROR_INVALID_FORMAT);\n        compare(olen, 0);\n        pbuf2 = pbuf;\n        --(pbuf2.size);\n        bvalue = (char *)(-1);\n        olen = 1;\n        compare(noise_protobuf_read_alloc_bytes\n                    (&pbuf2, tag, &bvalue, 0, &olen),\n                NOISE_ERROR_INVALID_FORMAT);\n        verify(bvalue == 0);\n        compare(olen, 0);\n    }\n}\n\nstatic void check_string(const char *str, int is_valid_utf8)\n{\n    check_tagged_string(str, is_valid_utf8, 0);\n    check_tagged_string(str, is_valid_utf8, 15);\n}\n\n/* Test the encoding and decoding of string values */\nstatic void test_protobufs_string(void)\n{\n    check_string(\"\", 1);\n    check_string(\"0x00\", 0);            // U+0000\n    check_string(\"x\", 1);\n    check_string(\"Hello\", 1);\n    check_string(\"0x7F\", 1);\n    check_string(\"0x80\", 0);\n    check_string(\"0xBF\", 0);\n    check_string(\"0xC080\", 0);          // U+0000, invalid\n    check_string(\"0xC1BF\", 0);          // U+007F, invalid\n    check_string(\"0xC280\", 1);          // U+0080\n    check_string(\"0xD0\", 0);\n    check_string(\"0xDF80\", 1);          // U+07C0\n    check_string(\"0xDFBF\", 1);          // U+07FF\n    check_string(\"0xE081\", 0);\n    check_string(\"0xE08080\", 0);        // U+0000, invalid\n    check_string(\"0xE08180\", 0);        // U+0040, invalid\n    check_string(\"0xE09FBF\", 0);        // U+07FF, invalid\n    check_string(\"0xE0A080\", 1);        // U+0800\n    check_string(\"0xED9FBF\", 1);        // U+D7FF\n    check_string(\"0xEDA080\", 0);        // U+D800, surrogate\n    check_string(\"0xEDBFBF\", 0);        // U+DFFF, surrogate\n    check_string(\"0xEE8080\", 1);        // U+E000\n    check_string(\"0xEEBFBF\", 1);        // U+FFFF\n    check_string(\"0xF0808080\", 0);      // U+0000, invalid\n    check_string(\"0xF08FBFBF\", 0);      // U+FFFF, invalid\n    check_string(\"0xF0908080\", 1);      // U+10000\n    check_string(\"0xF0BFBFBF\", 1);      // U+3FFFF\n    check_string(\"0xF0BFBF41\", 0);\n    check_string(\"0xF1808080\", 1);      // U+40000\n    check_string(\"0xF3BFBFBF\", 1);      // U+FFFFF\n    check_string(\"0xF4808080\", 1);      // U+100000\n    check_string(\"0xF48FBFBF\", 1);      // U+10FFFF\n    check_string(\"0xF4908080\", 0);      // U+110000, invalid\n    check_string(\"0xF4BFBFBF\", 0);      // U+13FFFF, invalid\n    check_string(\"0xF5808080\", 0);      // U+140000, invalid\n    check_string(\"0xF6808080\", 0);      // U+180000, invalid\n    check_string(\"0xF7BFBFBF\", 0);      // U+1FFFFF, invalid\n    check_string(\"0xF888808080\", 0);    // U+200000, invalid\n    check_string(\"0xF980808080\", 0);    // U+1000000, invalid\n    check_string(\"0xFA80808080\", 0);    // U+2000000, invalid\n    check_string(\"0xFB80808080\", 0);    // U+3000000, invalid\n    check_string(\"0xFC80808080\", 0);    // U+4000000, invalid\n    check_string(\"0xFD80808080\", 0);    // U+5000000, invalid\n    check_string(\"0xFE80808080\", 0);    // U+6000000, invalid\n    check_string(\"0xFF80808080\", 0);    // U+7000000, invalid\n    check_string(\"0xFFBFBFBFBF\", 0);    // U+7FFFFFF, invalid\n}\n\n/* Check encoding and decoding of a nested element */\nstatic void check_tagged_element(int tag)\n{\n    uint8_t buffer[128];\n    NoiseProtobuf pbuf;\n    uint8_t *out;\n    size_t out_len;\n    size_t end_posn = 0;\n    size_t end_posn2 = 0;\n    int32_t ivalue;\n    char svalue[16];\n\n    /* Write a set of elements to the output */\n    compare(noise_protobuf_prepare_output(&pbuf, buffer, sizeof(buffer)),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_end_element(&pbuf, &end_posn),\n            NOISE_ERROR_NONE);\n    compare(end_posn, sizeof(buffer));\n    compare(noise_protobuf_write_string(&pbuf, 3, \"Hello\", 5),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_int32(&pbuf, 2, 42),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_end_element(&pbuf, &end_posn2),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_int32(&pbuf, 0, 3),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_int32(&pbuf, 0, 2),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_int32(&pbuf, 0, 1),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_start_element(&pbuf, 1, end_posn2),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_write_start_element(&pbuf, tag, end_posn),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_output_shift(&pbuf, &out, &out_len),\n            NOISE_ERROR_NONE);\n\n    /* Read the elements back in again and check */\n    end_posn = end_posn2 = 0;\n    compare(noise_protobuf_prepare_input(&pbuf, out, out_len),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_read_start_element(&pbuf, tag, &end_posn),\n            NOISE_ERROR_NONE);\n    compare(end_posn, out_len);\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn));\n    compare(noise_protobuf_read_start_element(&pbuf, 1, &end_posn2),\n            NOISE_ERROR_NONE);\n    ivalue = 0;\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn2));\n    compare(noise_protobuf_read_int32(&pbuf, 0, &ivalue), NOISE_ERROR_NONE);\n    compare(ivalue, 1);\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn2));\n    compare(noise_protobuf_read_int32(&pbuf, 0, &ivalue), NOISE_ERROR_NONE);\n    compare(ivalue, 2);\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn2));\n    compare(noise_protobuf_read_int32(&pbuf, 0, &ivalue), NOISE_ERROR_NONE);\n    compare(ivalue, 3);\n    verify(noise_protobuf_read_at_end_element(&pbuf, end_posn2));\n    verify(noise_protobuf_read_at_end_element(&pbuf, end_posn2 - 1));\n    verify(noise_protobuf_read_at_end_element(&pbuf, 0));\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn2 + 1));\n    compare(noise_protobuf_read_end_element(&pbuf, end_posn2),\n            NOISE_ERROR_NONE);\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn));\n    compare(noise_protobuf_read_int32(&pbuf, 2, &ivalue), NOISE_ERROR_NONE);\n    compare(ivalue, 42);\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn));\n    memset(svalue, 0xAA, sizeof(svalue));\n    compare(noise_protobuf_read_string\n                (&pbuf, 3, svalue, sizeof(svalue), &end_posn2),\n            NOISE_ERROR_NONE);\n    verify(!strcmp(svalue, \"Hello\"));\n    verify(noise_protobuf_read_at_end_element(&pbuf, end_posn));\n    verify(noise_protobuf_read_at_end_element(&pbuf, end_posn - 1));\n    verify(noise_protobuf_read_at_end_element(&pbuf, 0));\n    verify(!noise_protobuf_read_at_end_element(&pbuf, end_posn + 1));\n    compare(noise_protobuf_read_end_element(&pbuf, end_posn),\n            NOISE_ERROR_NONE);\n    compare(noise_protobuf_finish_input(&pbuf), NOISE_ERROR_NONE);\n}\n\n/* Test the encoding and decoding of nested elements */\nstatic void test_protobufs_element(void)\n{\n    data_name = 0;\n\n    check_tagged_element(0);\n    check_tagged_element(15);\n}\n\nvoid test_protobufs(void)\n{\n    test_protobufs_prepare();\n    test_protobufs_integer();\n    test_protobufs_floating_point();\n    test_protobufs_string();\n    test_protobufs_element();\n}\n"
  },
  {
    "path": "tests/unit/test-randstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\n#define MAX_RAND_DATA 256\n\n/* Check if a data array consists of all the same byte */\nstatic int is_all(const uint8_t *data, size_t size, uint8_t value)\n{\n    while (size > 0) {\n        if (*data++ != value)\n            return 0;\n        --size;\n    }\n    return 1;\n}\n\nvoid test_randstate(void)\n{\n    NoiseRandState *rand1;\n    NoiseRandState *rand2;\n    uint8_t temp1[MAX_RAND_DATA];\n    uint8_t temp2[MAX_RAND_DATA];\n    uint8_t temp3[MAX_RAND_DATA];\n    uint8_t temp4[MAX_RAND_DATA];\n    size_t count;\n\n    /* Create the random number generators */\n    compare(noise_randstate_new(&rand1), NOISE_ERROR_NONE);\n    compare(noise_randstate_new(&rand2), NOISE_ERROR_NONE);\n\n    /*\n     * Check that the two objects generate different sequences and that\n     * each object outputs different data from itself each time.\n     *\n     * There is an infintessimal chance that these tests fails with\n     * exactly the same output.  The output is random after all and\n     * every event is equally likely in a uniform random stream.\n     * But the chances are so remote that we can ignore the problem.\n     *\n     * If it happens for you, then hooray!  And then run the test again.\n     * It is only a problem if it keeps happening.\n     */\n    memset(temp3, 0, sizeof(temp3));\n    memset(temp4, 0, sizeof(temp4));\n    for (count = 0; count < 100; ++count) {\n        compare(noise_randstate_generate(rand1, temp1, sizeof(temp1)),\n                NOISE_ERROR_NONE);\n        compare(noise_randstate_generate(rand2, temp2, sizeof(temp2)),\n                NOISE_ERROR_NONE);\n        verify(memcmp(temp1, temp2, sizeof(temp1)) != 0);\n        if (count) {\n            verify(memcmp(temp1, temp3, sizeof(temp1)) != 0);\n            verify(memcmp(temp2, temp4, sizeof(temp2)) != 0);\n        }\n        memcpy(temp3, temp1, sizeof(temp1));\n        memcpy(temp4, temp2, sizeof(temp2));\n    }\n\n    /* Reseed - no way to check if this actually does something */\n    compare(noise_randstate_reseed(rand1), NOISE_ERROR_NONE);\n    compare(noise_randstate_reseed(rand2), NOISE_ERROR_NONE);\n\n    /* Check message padding */\n    memset(temp1, 0xAA, sizeof(temp1));\n    compare(noise_randstate_pad(rand1, temp1, 29, 51, NOISE_PADDING_ZERO),\n            NOISE_ERROR_NONE);\n    verify(is_all(temp1, 29, 0xAA));\n    verify(is_all(temp1 + 29, 51 - 29, 0));\n    verify(is_all(temp1 + 51, sizeof(temp1) - 51, 0xAA));\n    memset(temp1, 0x66, sizeof(temp1));\n    compare(noise_randstate_pad(rand1, temp1, 29, 100, NOISE_PADDING_RANDOM),\n            NOISE_ERROR_NONE);\n    verify(is_all(temp1, 29, 0x66));\n    verify(!is_all(temp1 + 29, 100 - 29, 0x66));\n    verify(!is_all(temp1 + 29, 100 - 29, 0x00));\n    verify(is_all(temp1 + 100, sizeof(temp1) - 100, 0x66));\n    memset(temp1, 0x55, sizeof(temp1));\n    compare(noise_randstate_pad(rand1, temp1, 29, 100, NOISE_ID('G', 55)),\n            NOISE_ERROR_NONE);\n    verify(is_all(temp1, 29, 0x55));\n    verify(!is_all(temp1 + 29, 100 - 29, 0x55));\n    verify(!is_all(temp1 + 29, 100 - 29, 0x00));\n    verify(is_all(temp1 + 100, sizeof(temp1) - 100, 0x55));\n    memset(temp1, 0x55, 29);\n    memset(temp1 + 29, 0xAA, sizeof(temp1) - 29);\n    compare(noise_randstate_pad(rand1, temp1, 29, 28, NOISE_PADDING_ZERO),\n            NOISE_ERROR_NONE);\n    verify(is_all(temp1, 29, 0x55));\n    verify(is_all(temp1 + 29, sizeof(temp1) - 29, 0xAA));\n\n    /* Check for error conditions */\n    compare(noise_randstate_new(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_randstate_free(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_randstate_reseed(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_randstate_generate(rand1, 0, sizeof(temp1)),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_randstate_pad(rand1, 0, 28, sizeof(temp1), NOISE_PADDING_ZERO),\n            NOISE_ERROR_INVALID_PARAM);\n\n    /* Check that the padding region is zeroed if the state argument is NULL */\n    memset(temp1, 0xAA, sizeof(temp1));\n    compare(noise_randstate_pad(0, temp1, 28, sizeof(temp1), NOISE_PADDING_RANDOM),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(is_all(temp1, 28, 0xAA));\n    verify(is_all(temp1 + 28, sizeof(temp1) - 28, 0x00));\n\n    /* Check that generation with a NULL state also zeroes the output */\n    memset(temp1, 0xAA, sizeof(temp1));\n    compare(noise_randstate_generate(0, temp1, sizeof(temp1)),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(is_all(temp1, sizeof(temp1), 0x00));\n\n    /* Clean up */\n    compare(noise_randstate_free(rand1), NOISE_ERROR_NONE);\n    compare(noise_randstate_free(rand2), NOISE_ERROR_NONE);\n}\n"
  },
  {
    "path": "tests/unit/test-signstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n\n#define MAX_SIGN_KEY_LEN 80\n#define MAX_MESSAGE_LEN 1024\n#define MAX_SIGNATURE_LEN 128\n\n/* Check raw signature output against test vectors */\nstatic void check_sign(int id, size_t private_key_len, size_t public_key_len,\n                       size_t signature_len, const char *name,\n                       const char *private_key, const char *public_key,\n                       const char *message, const char *signature)\n{\n    NoiseSignState *state1;\n    NoiseSignState *state2;\n    uint8_t priv_key[MAX_SIGN_KEY_LEN];\n    uint8_t pub_key[MAX_SIGN_KEY_LEN];\n    uint8_t msg[MAX_MESSAGE_LEN];\n    uint8_t sig[MAX_SIGNATURE_LEN];\n    size_t msg_len;\n    uint8_t temp[MAX_SIGNATURE_LEN];\n    uint8_t temp2[MAX_SIGN_KEY_LEN];\n\n    /* Convert the test strings into binary data */\n    compare(string_to_data(priv_key, sizeof(priv_key), private_key),\n            private_key_len);\n    compare(string_to_data(pub_key, sizeof(pub_key), public_key),\n            public_key_len);\n    msg_len = string_to_data(msg, sizeof(msg), message);\n    compare(string_to_data(sig, sizeof(sig), signature),\n            signature_len);\n\n    /* Create the signing object and check its properties */\n    compare(noise_signstate_new_by_id(&state1, id), NOISE_ERROR_NONE);\n    compare(noise_signstate_get_sign_id(state1), id);\n    compare(noise_signstate_get_private_key_length(state1), private_key_len);\n    compare(noise_signstate_get_public_key_length(state1), public_key_len);\n    compare(noise_signstate_get_signature_length(state1), signature_len);\n    verify(!noise_signstate_has_keypair(state1));\n    verify(!noise_signstate_has_public_key(state1));\n    verify(private_key_len <= noise_signstate_get_max_key_length());\n    verify(public_key_len <= noise_signstate_get_max_key_length());\n    verify(signature_len <= noise_signstate_get_max_signature_length());\n\n    /* Create a second signing object for verification */\n    compare(noise_signstate_new_by_id(&state2, id), NOISE_ERROR_NONE);\n    compare(noise_signstate_get_sign_id(state2), id);\n    compare(noise_signstate_get_private_key_length(state2), private_key_len);\n    compare(noise_signstate_get_public_key_length(state2), public_key_len);\n    compare(noise_signstate_get_signature_length(state2), signature_len);\n    verify(!noise_signstate_has_keypair(state2));\n    verify(!noise_signstate_has_public_key(state2));\n\n    /* Set the keys on the two objects */\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n    compare(noise_signstate_set_public_key(state2, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n    verify(noise_signstate_has_keypair(state1));\n    verify(noise_signstate_has_public_key(state1));\n    verify(!noise_signstate_has_keypair(state2));\n    verify(noise_signstate_has_public_key(state2));\n\n    /* Create the signature with the first object */\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_signstate_sign(state1, msg, msg_len, temp, signature_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, sig, signature_len));\n\n    /* Verify the signature with the second object */\n    compare(noise_signstate_verify(state2, msg, msg_len, temp, signature_len),\n            NOISE_ERROR_NONE);\n\n    /* Fetch the keys back from the objects and compare */\n    memset(temp, 0xAA, sizeof(temp));\n    memset(temp2, 0x66, sizeof(temp2));\n    compare(noise_signstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, priv_key, private_key_len));\n    verify(!memcmp(temp2, pub_key, public_key_len));\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_signstate_get_public_key(state2, temp, public_key_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, pub_key, public_key_len));\n\n    /* Check parameter error conditions */\n    compare(noise_signstate_set_keypair\n                (0, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_set_keypair\n                (state1, 0, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len - 1, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len + 1, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_get_keypair\n                (0, temp, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_get_keypair\n                (state1, 0, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_get_keypair\n                (state1, temp, private_key_len, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_get_keypair\n                (state1, temp, private_key_len - 1, temp2, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_get_keypair\n                (state1, temp, private_key_len + 1, temp2, public_key_len),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_set_public_key\n                (0, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_set_public_key\n                (state2, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_set_public_key\n                (state2, pub_key, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_set_public_key\n                (state2, pub_key, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_get_public_key(0, temp, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_get_public_key(state2, 0, public_key_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_get_public_key(state2, temp, public_key_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_get_public_key(state2, temp, public_key_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_sign(0, msg, msg_len, temp, signature_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_sign(state1, 0, msg_len, temp, signature_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_sign(state1, msg, msg_len, 0, signature_len),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_sign(state1, msg, msg_len, temp, signature_len - 1),\n            NOISE_ERROR_INVALID_LENGTH);\n    compare(noise_signstate_sign(state1, msg, msg_len, temp, signature_len + 1),\n            NOISE_ERROR_INVALID_LENGTH);\n\n    /* Re-create the objects by name and check their properties again */\n    compare(noise_signstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_signstate_free(state2), NOISE_ERROR_NONE);\n    compare(noise_signstate_new_by_name(&state1, name), NOISE_ERROR_NONE);\n    compare(noise_signstate_new_by_name(&state2, name), NOISE_ERROR_NONE);\n    compare(noise_signstate_get_sign_id(state1), id);\n    compare(noise_signstate_get_sign_id(state2), id);\n    compare(noise_signstate_get_private_key_length(state1), private_key_len);\n    compare(noise_signstate_get_public_key_length(state1), public_key_len);\n    compare(noise_signstate_get_signature_length(state1), signature_len);\n    compare(noise_signstate_get_private_key_length(state2), private_key_len);\n    compare(noise_signstate_get_public_key_length(state2), public_key_len);\n    compare(noise_signstate_get_signature_length(state2), signature_len);\n    verify(!noise_signstate_has_keypair(state1));\n    verify(!noise_signstate_has_public_key(state1));\n    verify(!noise_signstate_has_keypair(state2));\n    verify(!noise_signstate_has_public_key(state2));\n\n    /* Make sure that it is still the same object by checking signatures.\n       This time we derive state1's public key from the private key rather\n       than use the value from the test data. */\n    compare(noise_signstate_set_keypair_private\n                (state1, priv_key, private_key_len),\n            NOISE_ERROR_NONE);\n    compare(noise_signstate_set_public_key\n                (state2, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n    memset(temp, 0xAA, sizeof(temp));\n    compare(noise_signstate_sign(state1, msg, msg_len, temp, signature_len),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(temp, sig, signature_len));\n    compare(noise_signstate_verify(state2, msg, msg_len, temp, signature_len),\n            NOISE_ERROR_NONE);\n\n    /* Deliberately mess up the signature and check that it doesn't verify */\n    temp[signature_len / 2] ^= 0x01;\n    compare(noise_signstate_verify(state2, msg, msg_len, temp, signature_len),\n            NOISE_ERROR_INVALID_SIGNATURE);\n\n    /* Clear the first key and check that it returns to default properties */\n    compare(noise_signstate_clear_key(state1), NOISE_ERROR_NONE);\n    verify(!noise_signstate_has_keypair(state1));\n    verify(!noise_signstate_has_public_key(state1));\n    compare(noise_signstate_get_keypair\n                (state1, temp, private_key_len, temp2, public_key_len),\n            NOISE_ERROR_INVALID_STATE);\n    compare(noise_signstate_get_public_key(state1, temp, public_key_len),\n            NOISE_ERROR_INVALID_STATE);\n\n    /* Deliberately mess up the keypair and perform validation.\n       The Ed25519 back end validates the public key but all private\n       key values are valid. */\n    priv_key[private_key_len / 2] ^= 0x01;\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PUBLIC_KEY);\n    priv_key[private_key_len / 2] ^= 0x01;\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n    pub_key[public_key_len / 2] ^= 0x01;\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_INVALID_PUBLIC_KEY);\n    pub_key[public_key_len / 2] ^= 0x01;\n    compare(noise_signstate_set_keypair\n                (state1, priv_key, private_key_len, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n\n    /* Clean up */\n    compare(noise_signstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_signstate_free(state2), NOISE_ERROR_NONE);\n}\n\n/* Check against test vectors from the various specifications\n   to validate that the algorithms work as low level primitives */\nstatic void signstate_check_test_vectors(void)\n{\n    /* Ed25519 - From section 7.1 of\n       https://tools.ietf.org/html/draft-irtf-cfrg-eddsa-05 */\n    check_sign\n        (NOISE_SIGN_ED25519, 32, 32, 64, \"Ed25519\",\n         \"0x9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60\",\n         \"0xd75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a\",\n         \"\",\n         \"0xe5564300c360ac729086e2cc806e828a84877f1eb8e5d974d873e06522490155\"\n           \"5fb8821590a33bacc61e39701cf9b46bd25bf5f0595bbe24655141438e7a100b\");\n    check_sign\n        (NOISE_SIGN_ED25519, 32, 32, 64, \"Ed25519\",\n         \"0x4ccd089b28ff96da9db6c346ec114e0f5b8a319f35aba624da8cf6ed4fb8a6fb\",\n         \"0x3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c\",\n         \"0x72\",\n         \"0x92a009a9f0d4cab8720e820b5f642540a2b27b5416503f8fb3762223ebdb69da\"\n           \"085ac1e43e15996e458f3613d0f11d8c387b2eaeb4302aeeb00d291612bb0c00\");\n    check_sign\n        (NOISE_SIGN_ED25519, 32, 32, 64, \"Ed25519\",\n         \"0xc5aa8df43f9f837bedb7442f31dcb7b166d38535076f094b85ce3a2e0b4458f7\",\n         \"0xfc51cd8e6218a1a38da47ed00230f0580816ed13ba3303ac5deb911548908025\",\n         \"0xaf82\",\n         \"0x6291d657deec24024827e69c3abe01a3 0ce548a284743a445e3680d7db5ac3ac\"\n           \"18ff9b538d16f290ae67f760984dc6594a7c15e9716ed28dc027beceea1ec40a\");\n    check_sign\n        (NOISE_SIGN_ED25519, 32, 32, 64, \"Ed25519\",\n         \"0xf5e5767cf153319517630f226876b86c8160cc583bc013744c6bf255f5cc0ee5\",\n         \"0x278117fc144c72340f67d0f2316e8386ceffbf2b2428c9c51fef7c597f1d426e\",\n         \"0x08b8b2b733424243760fe426a4b54908632110a66c2f6591eabd3345e3e4eb98\"\n           \"fa6e264bf09efe12ee50f8f54e9f77b1e355f6c50544e23fb1433ddf73be84d8\"\n           \"79de7c0046dc4996d9e773f4bc9efe5738829adb26c81b37c93a1b270b20329d\"\n           \"658675fc6ea534e0810a4432826bf58c941efb65d57a338bbd2e26640f89ffbc\"\n           \"1a858efcb8550ee3a5e1998bd177e93a7363c344fe6b199ee5d02e82d522c4fe\"\n           \"ba15452f80288a821a579116ec6dad2b3b310da903401aa62100ab5d1a36553e\"\n           \"06203b33890cc9b832f79ef80560ccb9a39ce767967ed628c6ad573cb116dbef\"\n           \"efd75499da96bd68a8a97b928a8bbc103b6621fcde2beca1231d206be6cd9ec7\"\n           \"aff6f6c94fcd7204ed3455c68c83f4a41da4af2b74ef5c53f1d8ac70bdcb7ed1\"\n           \"85ce81bd84359d44254d95629e9855a94a7c1958d1f8ada5d0532ed8a5aa3fb2\"\n           \"d17ba70eb6248e594e1a2297acbbb39d502f1a8c6eb6f1ce22b3de1a1f40cc24\"\n           \"554119a831a9aad6079cad88425de6bde1a9187ebb6092cf67bf2b13fd65f270\"\n           \"88d78b7e883c8759d2c4f5c65adb7553878ad575f9fad878e80a0c9ba63bcbcc\"\n           \"2732e69485bbc9c90bfbd62481d9089beccf80cfe2df16a2cf65bd92dd597b07\"\n           \"07e0917af48bbb75fed413d238f5555a7a569d80c3414a8d0859dc65a46128ba\"\n           \"b27af87a71314f318c782b23ebfe808b82b0ce26401d2e22f04d83d1255dc51a\"\n           \"ddd3b75a2b1ae0784504df543af8969be3ea7082ff7fc9888c144da2af58429e\"\n           \"c96031dbcad3dad9af0dcbaaaf268cb8fcffead94f3c7ca495e056a9b47acdb7\"\n           \"51fb73e666c6c655ade8297297d07ad1ba5e43f1bca32301651339e22904cc8c\"\n           \"42f58c30c04aafdb038dda0847dd988dcda6f3bfd15c4b4c4525004aa06eeff8\"\n           \"ca61783aacec57fb3d1f92b0fe2fd1a85f6724517b65e614ad6808d6f6ee34df\"\n           \"f7310fdc82aebfd904b01e1dc54b2927094b2db68d6f903b68401adebf5a7e08\"\n           \"d78ff4ef5d63653a65040cf9bfd4aca7984a74d37145986780fc0b16ac451649\"\n           \"de6188a7dbdf191f64b5fc5e2ab47b57f7f7276cd419c17a3ca8e1b939ae49e4\"\n           \"88acba6b965610b5480109c8b17b80e1b7b750dfc7598d5d5011fd2dcc5600a3\"\n           \"2ef5b52a1ecc820e308aa342721aac0943bf6686b64b2579376504ccc493d97e\"\n           \"6aed3fb0f9cd71a43dd497f01f17c0e2cb3797aa2a2f256656168e6c496afc5f\"\n           \"b93246f6b1116398a346f1a641f3b041e989f7914f90cc2c7fff357876e506b5\"\n           \"0d334ba77c225bc307ba537152f3f1610e4eafe595f6d9d90d11faa933a15ef1\"\n           \"369546868a7f3a45a96768d40fd9d03412c091c6315cf4fde7cb68606937380d\"\n           \"b2eaaa707b4c4185c32eddcdd306705e4dc1ffc872eeee475a64dfac86aba41c\"\n           \"0618983f8741c5ef68d3a101e8a3b8cac60c905c15fc910840b94c00a0b9d0\",\n         \"0x0aab4c900501b3e24d7cdf4663326a3a87df5e4843b2cbdb67cbf6e460fec350\"\n           \"aa5371b1508f9f4528ecea23c436d94b5e8fcd4f681e30a6ac00a9704a188a03\");\n    check_sign\n        (NOISE_SIGN_ED25519, 32, 32, 64, \"Ed25519\",\n         \"0x833fe62409237b9d62ec77587520911e9a759cec1d19755b7da901b96dca3d42\",\n         \"0xec172b93ad5e563bf4932c70e1245034c35467ef2efd4d64ebf819683467e2bf\",\n         \"0xddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a\"\n           \"2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f\",\n         \"0xdc2a4459e7369633a52b1bf277839a00201009a3efbf3ecb69bea2186c26b589\"\n           \"09351fc9ac90b3ecfdfbc7c66431e0303dca179c138ac17ad9bef1177331a704\");\n}\n\n/* Check the generation and use of new key pairs */\nstatic void check_dh_generate(int id)\n{\n    NoiseSignState *state1;\n    NoiseSignState *state2;\n    uint8_t pub_key[MAX_SIGN_KEY_LEN];\n    uint8_t msg[MAX_MESSAGE_LEN];\n    uint8_t sig[MAX_SIGNATURE_LEN];\n    size_t public_key_len;\n    size_t signature_len;\n\n    /* Create the objects and get the properties */\n    compare(noise_signstate_new_by_id(&state1, id), NOISE_ERROR_NONE);\n    compare(noise_signstate_new_by_id(&state2, id), NOISE_ERROR_NONE);\n    compare(noise_signstate_get_sign_id(state1), id);\n    compare(noise_signstate_get_sign_id(state2), id);\n    public_key_len = noise_signstate_get_public_key_length(state1);\n    signature_len = noise_signstate_get_signature_length(state1);\n\n    /* Generate a new keypair in the first object */\n    compare(noise_signstate_generate_keypair(state1), NOISE_ERROR_NONE);\n\n    /* Transfer the public key to the second object */\n    compare(noise_signstate_get_public_key(state1, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n    compare(noise_signstate_set_public_key(state2, pub_key, public_key_len),\n            NOISE_ERROR_NONE);\n\n    /* Sign a message and verify it */\n    memset(msg, 0xAA, sizeof(msg));\n    memset(sig, 0x66, sizeof(sig));\n    compare(noise_signstate_sign(state1, msg, sizeof(msg), sig, signature_len),\n            NOISE_ERROR_NONE);\n    compare(noise_signstate_verify(state2, msg, sizeof(msg), sig, signature_len),\n            NOISE_ERROR_NONE);\n\n    /* Clean up */\n    compare(noise_signstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_signstate_free(state2), NOISE_ERROR_NONE);\n}\n\n/* Check the generation and use of new key pairs */\nstatic void signstate_check_generate_keypair(void)\n{\n    check_dh_generate(NOISE_SIGN_ED25519);\n}\n\n/* Check other error conditions that can be reported by the functions */\nstatic void signstate_check_errors(void)\n{\n    NoiseSignState *state;\n\n    /* NULL parameters in various positions */\n    compare(noise_signstate_free(0), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_get_sign_id(0), NOISE_DH_NONE);\n    compare(noise_signstate_get_private_key_length(0), 0);\n    compare(noise_signstate_get_public_key_length(0), 0);\n    compare(noise_signstate_get_signature_length(0), 0);\n    compare(noise_signstate_has_keypair(0), 0);\n    compare(noise_signstate_has_public_key(0), 0);\n    compare(noise_signstate_new_by_id(0, NOISE_SIGN_ED25519),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_new_by_name(0, \"Ed25519\"),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_signstate_generate_keypair(0), NOISE_ERROR_INVALID_PARAM);\n\n    /* If the id/name is unknown, the state parameter should be set to NULL */\n    state = (NoiseSignState *)8;\n    compare(noise_signstate_new_by_id(&state, NOISE_DH_CURVE25519),\n            NOISE_ERROR_UNKNOWN_ID);\n    verify(state == NULL);\n    state = (NoiseSignState *)8;\n    compare(noise_signstate_new_by_name(&state, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n    state = (NoiseSignState *)8;\n    compare(noise_signstate_new_by_name(&state, \"Eggs25519\"),\n            NOISE_ERROR_UNKNOWN_NAME);\n    verify(state == NULL);\n}\n\nvoid test_signstate(void)\n{\n    signstate_check_test_vectors();\n    signstate_check_generate_keypair();\n    signstate_check_errors();\n}\n"
  },
  {
    "path": "tests/unit/test-symmetricstate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"test-helpers.h\"\n#include \"protocol/internal.h\"\n\n#define MAX_HASH_OUTPUT 64\n#define MAX_DATA_LEN    128\n\ntypedef struct\n{\n    uint8_t hash[MAX_HASH_OUTPUT];\n\n} HashValue;\n\ntypedef struct\n{\n    HashValue v1;\n    HashValue v2;\n\n} HKDFValue;\n\nstatic NoiseHashState *hashstate = 0;\nstatic size_t hash_len = 0;\n\n/* Simple implementation of the HASH(data) function from the spec */\nstatic HashValue HASH(const void *data, size_t len)\n{\n    HashValue result;\n    memset(&result, 0, sizeof(result));\n    compare(noise_hashstate_hash_one\n                (hashstate, (const uint8_t *)data, len, result.hash, hash_len),\n            NOISE_ERROR_NONE);\n    return result;\n}\n\n/* Simple implementation of HASH(h || data) */\nstatic HashValue HASHTwo(const HashValue h, const void *data, size_t len)\n{\n    HashValue result;\n    memset(&result, 0, sizeof(result));\n    compare(noise_hashstate_hash_two\n                (hashstate, h.hash, hash_len,\n                 (const uint8_t *)data, len, result.hash, hash_len),\n            NOISE_ERROR_NONE);\n    return result;\n}\n\n/* Pads a value or hashes it if it is too long for the hash output */\nstatic HashValue PadOrHash(const void *data, size_t len)\n{\n    HashValue result;\n    memset(&result, 0, sizeof(result));\n    if (len <= hash_len)\n        memcpy(result.hash, data, len);\n    else\n        result = HASH(data, len);\n    return result;\n}\n\n/* Simple implementation of the HKDF(key, data) function from the spec */\nstatic HKDFValue HKDF(const HashValue key, const uint8_t *data, size_t data_len)\n{\n    HKDFValue result;\n    memset(&result, 0, sizeof(result));\n    compare(noise_hashstate_hkdf\n                (hashstate, key.hash, hash_len, data, data_len,\n                 result.v1.hash, hash_len, result.v2.hash, hash_len),\n            NOISE_ERROR_NONE);\n    return result;\n}\n\n/* Checks the behaviour of a SymmetricState object that was just created.\n   We walk the SymmetricState through its paces step by step and verify\n   that it does what the specification requires.  Essentially we have a\n   second SymmetricState implementation here which we bounce off the first. */\nstatic void check_symmetric_object\n    (NoiseSymmetricState *state1, NoiseSymmetricState *state2,\n     NoiseSymmetricState *state3, const NoiseProtocolId *id,\n     const char *protocol)\n{\n    static const char *data_vals[] = {\n        \"abcdefghijklmnopqrstuvwxyz\",\n        \"0123456789\",\n        \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\n    };\n    size_t num_data_vals = sizeof(data_vals) / sizeof(data_vals[0]);\n    HashValue ck, h;\n    HKDFValue temp;\n    const uint8_t *data;\n    size_t index, len;\n    size_t key_len;\n    size_t mac_len;\n    uint8_t buffer[MAX_DATA_LEN];\n    uint8_t buffer2[MAX_DATA_LEN];\n    uint8_t buffer3[MAX_DATA_LEN];\n    NoiseCipherState *cipherstate;\n    NoiseCipherState *c1;\n    NoiseCipherState *c2;\n    NoiseProtocolId temp_id;\n    NoiseBuffer mbuf;\n\n    /* We run two SymmetricState objects in parallel, state1 and state2.\n       The state1 object is used to encrypt and state2 is used to decrypt. */\n\n    /* Check the initial SymmetricState properties */\n    memset(&temp_id, 0xAA, sizeof(temp_id));\n    compare(noise_symmetricstate_get_protocol_id(state1, &temp_id),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(&temp_id, id, sizeof(temp_id)));\n    memset(&temp_id, 0x66, sizeof(temp_id));\n    compare(noise_symmetricstate_get_protocol_id(state2, &temp_id),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(&temp_id, id, sizeof(temp_id)));\n    memset(&temp_id, 0x66, sizeof(temp_id));\n    compare(noise_symmetricstate_get_protocol_id(state3, &temp_id),\n            NOISE_ERROR_NONE);\n    verify(!memcmp(&temp_id, id, sizeof(temp_id)));\n    compare(noise_symmetricstate_get_protocol_id(0, &temp_id),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_symmetricstate_get_protocol_id(state1, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_symmetricstate_get_mac_length(state1), 0);\n    compare(noise_symmetricstate_get_mac_length(state2), 0);\n    compare(noise_symmetricstate_get_mac_length(state3), 0);\n\n    /* Create a HashState and CipherState to simulate expected behaviour */\n    compare(noise_hashstate_new_by_id(&hashstate, id->hash_id),\n            NOISE_ERROR_NONE);\n    hash_len = noise_hashstate_get_hash_length(hashstate);\n    compare(noise_cipherstate_new_by_id(&cipherstate, id->cipher_id),\n            NOISE_ERROR_NONE);\n    key_len = noise_cipherstate_get_key_length(cipherstate);\n    mac_len = noise_cipherstate_get_mac_length(cipherstate);\n\n    /* Check the expected original state of \"ck\" and \"h\" which should\n       be the padded or hashed value of the protocol name */\n    ck = h = PadOrHash(protocol, strlen(protocol));\n    verify(!memcmp(ck.hash, state1->ck, hash_len));\n    verify(!memcmp(h.hash, state1->h, hash_len));\n    verify(!memcmp(ck.hash, state2->ck, hash_len));\n    verify(!memcmp(h.hash, state2->h, hash_len));\n    verify(!memcmp(ck.hash, state3->ck, hash_len));\n    verify(!memcmp(h.hash, state3->h, hash_len));\n\n    /* The encryption key should not currently be set */\n    verify(!noise_cipherstate_has_key(state1->cipher));\n    verify(!noise_cipherstate_has_key(state2->cipher));\n    verify(!noise_cipherstate_has_key(state3->cipher));\n\n    /* Mix data into the handshake hash */\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        h = HASHTwo(h, data, len);\n        compare(noise_symmetricstate_mix_hash(state1, data, len),\n                NOISE_ERROR_NONE);\n        compare(noise_symmetricstate_mix_hash(state2, data, len),\n                NOISE_ERROR_NONE);\n        compare(noise_symmetricstate_mix_hash(state3, data, len),\n                NOISE_ERROR_NONE);\n        verify(!memcmp(ck.hash, state1->ck, hash_len));\n        verify(!memcmp(h.hash, state1->h, hash_len));\n        verify(!memcmp(ck.hash, state2->ck, hash_len));\n        verify(!memcmp(h.hash, state2->h, hash_len));\n        verify(!memcmp(ck.hash, state3->ck, hash_len));\n        verify(!memcmp(h.hash, state3->h, hash_len));\n        compare(noise_symmetricstate_mix_hash(0, data, len),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_symmetricstate_mix_hash(state1, 0, len),\n                NOISE_ERROR_INVALID_PARAM);\n    }\n\n    /* Encrypt with state1 and decrypt with state2/state3.  The encryption\n       key has not been set yet, so the messages should be in plaintext. */\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        memcpy(buffer, data, len);\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_symmetricstate_encrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len);\n        verify(!memcmp(mbuf.data, data, len));\n        memcpy(buffer2, buffer, len);\n        h = HASHTwo(h, buffer, len);\n        noise_buffer_set_input(mbuf, buffer, len);\n        compare(noise_symmetricstate_decrypt_and_hash(state2, &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len);\n        verify(!memcmp(mbuf.data, data, len));\n        noise_buffer_set_input(mbuf, buffer2, len);\n        compare(noise_symmetricstate_decrypt_and_hash(state3, &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len);\n        verify(!memcmp(mbuf.data, data, len));\n        verify(!memcmp(ck.hash, state1->ck, hash_len));\n        verify(!memcmp(h.hash, state1->h, hash_len));\n        verify(!memcmp(ck.hash, state2->ck, hash_len));\n        verify(!memcmp(h.hash, state2->h, hash_len));\n        verify(!memcmp(ck.hash, state3->ck, hash_len));\n        verify(!memcmp(h.hash, state3->h, hash_len));\n        compare(noise_symmetricstate_get_mac_length(state1), 0);\n        compare(noise_symmetricstate_get_mac_length(state2), 0);\n        compare(noise_symmetricstate_get_mac_length(state3), 0);\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_symmetricstate_encrypt_and_hash(0, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_symmetricstate_encrypt_and_hash(state1, 0),\n                NOISE_ERROR_INVALID_PARAM);\n        mbuf.data = 0;\n        compare(noise_symmetricstate_encrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        noise_buffer_set_input(mbuf, buffer, NOISE_MAX_PAYLOAD_LEN + 1);\n        compare(noise_symmetricstate_encrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_LENGTH);\n        noise_buffer_set_input(mbuf, buffer, len);\n        compare(noise_symmetricstate_decrypt_and_hash(0, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_symmetricstate_decrypt_and_hash(state1, 0),\n                NOISE_ERROR_INVALID_PARAM);\n        mbuf.data = 0;\n        compare(noise_symmetricstate_decrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        noise_buffer_set_input(mbuf, buffer, NOISE_MAX_PAYLOAD_LEN + 1);\n        compare(noise_symmetricstate_decrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_LENGTH);\n    }\n\n    /* The encryption key should still not be set */\n    verify(!noise_cipherstate_has_key(state1->cipher));\n    verify(!noise_cipherstate_has_key(state2->cipher));\n    verify(!noise_cipherstate_has_key(state3->cipher));\n\n    /* Mix data into the chaining key */\n    memset(&temp, 0, sizeof(temp));\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        temp = HKDF(ck, data, len);\n        compare(noise_symmetricstate_mix_key(state1, data, len),\n                NOISE_ERROR_NONE);\n        compare(noise_symmetricstate_mix_key(state2, data, len),\n                NOISE_ERROR_NONE);\n        compare(noise_symmetricstate_mix_key(state3, data, len),\n                NOISE_ERROR_NONE);\n        ck = temp.v1;\n        verify(!memcmp(ck.hash, state1->ck, hash_len));\n        verify(!memcmp(h.hash, state1->h, hash_len));\n        verify(!memcmp(ck.hash, state2->ck, hash_len));\n        verify(!memcmp(h.hash, state2->h, hash_len));\n        verify(!memcmp(ck.hash, state3->ck, hash_len));\n        verify(!memcmp(h.hash, state3->h, hash_len));\n        compare(noise_symmetricstate_get_mac_length(state1), mac_len);\n        compare(noise_symmetricstate_get_mac_length(state2), mac_len);\n        compare(noise_symmetricstate_get_mac_length(state3), mac_len);\n        compare(noise_symmetricstate_mix_key(0, data, len),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_symmetricstate_mix_key(state1, 0, len),\n                NOISE_ERROR_INVALID_PARAM);\n    }\n\n    /* We should have an encryption key now.  Set on the simulated objects. */\n    verify(noise_cipherstate_has_key(state1->cipher));\n    verify(noise_cipherstate_has_key(state2->cipher));\n    verify(noise_cipherstate_has_key(state3->cipher));\n    compare(noise_cipherstate_init_key(cipherstate, temp.v2.hash, key_len),\n            NOISE_ERROR_NONE);\n\n    /* Encrypt with state1 and decrypt with state2.  Real encryption now. */\n    compare(noise_symmetricstate_get_mac_length(state1), mac_len);\n    compare(noise_symmetricstate_get_mac_length(state2), mac_len);\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        memcpy(buffer, data, len);\n        memcpy(buffer2, data, len);\n        noise_buffer_set_inout(mbuf, buffer2, len, sizeof(buffer2));\n        compare(noise_cipherstate_encrypt_with_ad\n                    (cipherstate, h.hash, hash_len, &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_symmetricstate_encrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        verify(!memcmp(mbuf.data, buffer2, len + mac_len));\n        memcpy(buffer3, buffer, len + mac_len);\n        h = HASHTwo(h, buffer, len + mac_len);\n        noise_buffer_set_input(mbuf, buffer, len + mac_len);\n        compare(noise_symmetricstate_decrypt_and_hash(state2, &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len);\n        verify(!memcmp(mbuf.data, data, len));\n        noise_buffer_set_input(mbuf, buffer3, len + mac_len);\n        compare(noise_symmetricstate_decrypt_and_hash(state3, &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len);\n        verify(!memcmp(mbuf.data, data, len));\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_symmetricstate_encrypt_and_hash(0, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_symmetricstate_encrypt_and_hash(state1, 0),\n                NOISE_ERROR_INVALID_PARAM);\n        mbuf.data = 0;\n        compare(noise_symmetricstate_encrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        noise_buffer_set_input(mbuf, buffer, NOISE_MAX_PAYLOAD_LEN - mac_len + 1);\n        compare(noise_symmetricstate_encrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_LENGTH);\n        noise_buffer_set_input(mbuf, buffer, len);\n        compare(noise_symmetricstate_decrypt_and_hash(0, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        compare(noise_symmetricstate_decrypt_and_hash(state1, 0),\n                NOISE_ERROR_INVALID_PARAM);\n        mbuf.data = 0;\n        compare(noise_symmetricstate_decrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_PARAM);\n        noise_buffer_set_input(mbuf, buffer, NOISE_MAX_PAYLOAD_LEN + 1);\n        compare(noise_symmetricstate_decrypt_and_hash(state1, &mbuf),\n                NOISE_ERROR_INVALID_LENGTH);\n    }\n\n    /* Final check on the chaining key and handshake hash */\n    verify(!memcmp(ck.hash, state1->ck, hash_len));\n    verify(!memcmp(h.hash, state1->h, hash_len));\n    verify(!memcmp(ck.hash, state2->ck, hash_len));\n    verify(!memcmp(h.hash, state2->h, hash_len));\n    verify(!memcmp(ck.hash, state3->ck, hash_len));\n    verify(!memcmp(h.hash, state3->h, hash_len));\n\n    /* Split the SymmetricState */\n    compare(noise_symmetricstate_split(0, &c1, &c2),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_symmetricstate_split(state1, 0, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    c1 = c2 = 0;\n    compare(noise_symmetricstate_split(state1, &c1, &c2),\n            NOISE_ERROR_NONE);\n    verify(c1 != 0);\n    verify(c2 != 0);\n    verify(noise_cipherstate_has_key(c1));\n    verify(noise_cipherstate_has_key(c2));\n\n    /* Check that the encryption keys in c1 and c2 are as expected */\n    temp = HKDF(ck, buffer, 0);\n    compare(noise_cipherstate_init_key(cipherstate, temp.v1.hash, key_len),\n            NOISE_ERROR_NONE);\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        memcpy(buffer, data, len);\n        memcpy(buffer2, data, len);\n        noise_buffer_set_inout(mbuf, buffer2, len, sizeof(buffer2));\n        compare(noise_cipherstate_encrypt_with_ad\n                   (cipherstate, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_cipherstate_encrypt_with_ad\n                    (c1, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        verify(!memcmp(mbuf.data, buffer2, len + mac_len));\n    }\n    compare(noise_cipherstate_init_key(cipherstate, temp.v2.hash, key_len),\n            NOISE_ERROR_NONE);\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        memcpy(buffer, data, len);\n        memcpy(buffer2, data, len);\n        noise_buffer_set_inout(mbuf, buffer2, len, sizeof(buffer2));\n        compare(noise_cipherstate_encrypt_with_ad\n                   (cipherstate, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_cipherstate_encrypt_with_ad\n                    (c2, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        verify(!memcmp(mbuf.data, buffer2, len + mac_len));\n    }\n    compare(noise_cipherstate_free(c1), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(c2), NOISE_ERROR_NONE);\n\n    /* Check errors that are only reported once the SymmetricState is split */\n    compare(noise_symmetricstate_mix_hash(state1, buffer, 8),\n            NOISE_ERROR_INVALID_STATE);\n    compare(noise_symmetricstate_mix_key(state1, buffer, 8),\n            NOISE_ERROR_INVALID_STATE);\n    noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n    compare(noise_symmetricstate_encrypt_and_hash(state1, &mbuf),\n            NOISE_ERROR_INVALID_STATE);\n    compare(noise_symmetricstate_decrypt_and_hash(state1, &mbuf),\n            NOISE_ERROR_INVALID_STATE);\n    compare(noise_symmetricstate_split(state1, &c1, &c2),\n            NOISE_ERROR_INVALID_STATE);\n    compare(noise_symmetricstate_split(state1, 0, &c2),\n            NOISE_ERROR_INVALID_STATE);\n    compare(noise_symmetricstate_split(state1, &c1, 0),\n            NOISE_ERROR_INVALID_STATE);\n\n    /* Split the second SymmetricState, with c2 optional */\n    c1 = 0;\n    c2 = (NoiseCipherState *)(-1);\n    compare(noise_symmetricstate_split(state2, &c1, 0),\n            NOISE_ERROR_NONE);\n    verify(c1 != 0);\n    verify(c2 == (NoiseCipherState *)(-1));\n    c2 = 0;\n    verify(noise_cipherstate_has_key(c1));\n    verify(!noise_cipherstate_has_key(c2));\n\n    /* Check that c1 encrypts in the same way as before */\n    compare(noise_cipherstate_init_key(cipherstate, temp.v1.hash, key_len),\n            NOISE_ERROR_NONE);\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        memcpy(buffer, data, len);\n        memcpy(buffer2, data, len);\n        noise_buffer_set_inout(mbuf, buffer2, len, sizeof(buffer2));\n        compare(noise_cipherstate_encrypt_with_ad\n                   (cipherstate, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_cipherstate_encrypt_with_ad\n                    (c1, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        verify(!memcmp(mbuf.data, buffer2, len + mac_len));\n    }\n    compare(noise_cipherstate_free(c1), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(c2), NOISE_ERROR_INVALID_PARAM);\n\n    /* Split the third SymmetricState, with c1 optional */\n    c1 = (NoiseCipherState *)(-1);\n    c2 = 0;\n    compare(noise_symmetricstate_split(state3, 0, &c2),\n            NOISE_ERROR_NONE);\n    verify(c1 == (NoiseCipherState *)(-1));\n    verify(c2 != 0);\n    c1 = 0;\n    verify(!noise_cipherstate_has_key(c1));\n    verify(noise_cipherstate_has_key(c2));\n\n    /* Check that c2 encrypts in the same way as before */\n    compare(noise_cipherstate_init_key(cipherstate, temp.v2.hash, key_len),\n            NOISE_ERROR_NONE);\n    for (index = 0; index < num_data_vals; ++index) {\n        len = strlen(data_vals[index]);\n        data = (const uint8_t *)(data_vals[index]);\n        memcpy(buffer, data, len);\n        memcpy(buffer2, data, len);\n        noise_buffer_set_inout(mbuf, buffer2, len, sizeof(buffer2));\n        compare(noise_cipherstate_encrypt_with_ad\n                   (cipherstate, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        noise_buffer_set_inout(mbuf, buffer, len, sizeof(buffer));\n        compare(noise_cipherstate_encrypt_with_ad\n                    (c2, (const uint8_t *)&index, sizeof(index), &mbuf),\n                NOISE_ERROR_NONE);\n        compare(mbuf.size, len + mac_len);\n        verify(!memcmp(mbuf.data, buffer2, len + mac_len));\n    }\n\n    /* Clean up */\n    compare(noise_hashstate_free(hashstate), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(cipherstate), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(c1), NOISE_ERROR_INVALID_PARAM);\n    compare(noise_cipherstate_free(c2), NOISE_ERROR_NONE);\n    hashstate = 0;\n}\n\n/* Create SymmetricState objects by id or name and check their behaviour */\nstatic void check_symmetric(const char *protocol)\n{\n    NoiseSymmetricState *state1;\n    NoiseSymmetricState *state2;\n    NoiseSymmetricState *state3;\n    NoiseProtocolId id;\n\n    /* Set the name of the protocol for reporting test failures */\n    data_name = protocol;\n\n    /* Parse the protocol name into a set of identifiers */\n    compare(noise_protocol_name_to_id(&id, protocol, strlen(protocol)),\n            NOISE_ERROR_NONE);\n\n    /* Check the behaviour of SymmetricState when creating by identifier */\n    compare(noise_symmetricstate_new_by_id(&state1, &id),\n            NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_new_by_id(&state2, &id),\n            NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_new_by_id(&state3, &id),\n            NOISE_ERROR_NONE);\n    check_symmetric_object(state1, state2, state3, &id, protocol);\n    compare(noise_symmetricstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_free(state2), NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_free(state3), NOISE_ERROR_NONE);\n\n    /* Check the behaviour of SymmetricState when creating by name */\n    compare(noise_symmetricstate_new_by_name(&state1, protocol),\n            NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_new_by_name(&state2, protocol),\n            NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_new_by_name(&state3, protocol),\n            NOISE_ERROR_NONE);\n    check_symmetric_object(state1, state2, state3, &id, protocol);\n    compare(noise_symmetricstate_free(state1), NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_free(state2), NOISE_ERROR_NONE);\n    compare(noise_symmetricstate_free(state3), NOISE_ERROR_NONE);\n}\n\nstatic void symmetricstate_check_protocols(void)\n{\n    check_symmetric(\"Noise_XX_25519_AESGCM_SHA256\");\n    check_symmetric(\"Noise_N_25519_ChaChaPoly_BLAKE2s\");\n    check_symmetric(\"Noise_XXfallback_448_AESGCM_SHA512\");\n    check_symmetric(\"Noise_IK_448_ChaChaPoly_BLAKE2b\");\n\n    check_symmetric(\"NoisePSK_XX_25519_AESGCM_SHA256\");\n    check_symmetric(\"NoisePSK_N_25519_ChaChaPoly_BLAKE2s\");\n    check_symmetric(\"NoisePSK_XXfallback_448_AESGCM_SHA512\");\n    check_symmetric(\"NoisePSK_IK_448_ChaChaPoly_BLAKE2b\");\n}\n\n/* Check other error conditions that can be reported by the functions */\nstatic void symmetricstate_check_errors(void)\n{\n    NoiseSymmetricState *state;\n    NoiseProtocolId id = {0};\n\n    /* NULL parameters in various positions */\n    compare(noise_symmetricstate_free(0),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_symmetricstate_new_by_id(0, &id),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_symmetricstate_new_by_id(&state, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_symmetricstate_new_by_name\n                (0, \"Noise_N_25519_ChaChaPoly_BLAKE2s\"),\n            NOISE_ERROR_INVALID_PARAM);\n    compare(noise_symmetricstate_new_by_name(&state, 0),\n            NOISE_ERROR_INVALID_PARAM);\n\n    /* If the id/name is unknown, the state parameter should be set to NULL */\n    state = (NoiseSymmetricState *)8;\n    compare(noise_symmetricstate_new_by_id(&state, &id),\n            NOISE_ERROR_UNKNOWN_ID);\n    verify(state == NULL);\n    state = (NoiseSymmetricState *)8;\n    compare(noise_symmetricstate_new_by_name(&state, 0),\n            NOISE_ERROR_INVALID_PARAM);\n    verify(state == NULL);\n    state = (NoiseSymmetricState *)8;\n    compare(noise_symmetricstate_new_by_name\n                (&state, \"Noise_N_25519_ChaChaPony_BLAKE2s\"),\n            NOISE_ERROR_UNKNOWN_NAME);\n    verify(state == NULL);\n}\n\nvoid test_symmetricstate(void)\n{\n    symmetricstate_check_protocols();\n    symmetricstate_check_errors();\n}\n"
  },
  {
    "path": "tests/vector/.gitignore",
    "content": "test-vector\n*.exe\n"
  },
  {
    "path": "tests/vector/Makefile.am",
    "content": "\nnoinst_PROGRAMS = test-vector\n\ntest_vector_SOURCES = test-vector.c json-reader.c\n\nAM_CPPFLAGS = -I$(top_srcdir)/include\nAM_CFLAGS = @WARNING_FLAGS@\n\nLDADD = ../../src/protocol/libnoiseprotocol.a\n\nVECTORS = \\\n    $(srcdir)/cacophony.txt \\\n    $(srcdir)/noise-c-basic.txt \\\n    $(srcdir)/noise-c-fallback.txt \\\n    $(srcdir)/noise-c-hybrid.txt\n\ncheck-local:\n\t./test-vector $(VECTORS)\n\nEXTRA_DIST = $(VECTORS)\n\nif USE_LIBSODIUM\nAM_CPPFLAGS += -DUSE_LIBSODIUM=1\nAM_CFLAGS += $(libsodium_CFLAGS)\nLDADD += $(libsodium_LIBS)\nendif\n\nif USE_OPENSSL\nAM_CPPFLAGS += -DUSE_OPENSSL=1\nAM_CFLAGS += $(openssl_CFLAGS)\nLDADD += $(openssl_LIBS)\nendif\n"
  },
  {
    "path": "tests/vector/cacophony.txt",
    "content": "{\n\"vectors\": [\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a0ff96bdf86b579ef7dbf94e812a7470b903c20a85a87e3a1fe863264ae547\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb1a3e3d80c1792b1bb9cb0e1382f8d8322bfb1ca7c4c8517bb686\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c781b198d2a974eb1da2c7d518c000cf6396de87ca540963c03713\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c77048eb6919fdfe8fe45842bfc5b8d1ff50d1e20c717453ccdfe6176d805b996d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"61834d7069dcfb7a1adf8d5ac910f83fa04c73a67789895c6f5f995c5db2ce88e49b124178\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a4b5da00b0bf707701c15f5f54d13dfaa53404c812aaac98d55e2a9463bb94\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7cc120945f3d00ce194bc60172accedcc168607551c226ef02e602\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"09adc97d36e5b47f3b81bebd1920595e9480f450af4e71df38babf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c5829c1e26ce3c64118a83db0d71c7d164cc64681ada524a46e6ec45b8a434cd55\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"de3b8b4d2785222a15ba1f70ab6fd12b2a76cd7c26242a00e2488c513020f479c721d5cd74\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ff34a6759d06e7733c83aeb5556c15bc762b664b3ba0556b1e7eaea4168bb6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79285da88da3535f52b07b70006c85706de7ddb1fd3dddac995b7e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ffdad3a7f0db4c39077f223659c5c1d107666405566ecdf4ab53bf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2b9801f5084b9a7e9df57382fb4af099a63cd8ff97bc3284c4c5f28994be58ae46\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6c94a97c5de175c870fb9e8d5c50c59d20752b0695baf24e151011ee46a184a65b444e9d97\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d10cf8ef4ab895bed3e4673211f0c9337039d63a450c7b28196b8a0ebade00\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e50ec882703a1f34bf4957d8cafd036d34e02930f672f424c676e1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"35bb2a728d3e8e5f47781d486089e4a37c5c2e4261256f44569a9f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"69ee82006e16b79438a34ad9de37ee44d83c267e355750ecf49f194b5c50403030\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c568b641b01d2f644f2a890538c359915ca50552e55129c029d3721866c2646a7af3fd1eff\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e5542247f888a7287c99e43a2b0a95bd6080d248cf2b6d9f9b05e2563f6f07\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b8004e4570dbf47915c337816d44cc5f63d3622ea7932dbbffbbcb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"651507604443049e8d21f7e9a0e49b67c770b8f3ec208fb4e4f030\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e1459af13c1c6ea8d8a93a72082e62dbd09aaff416fbfbd58a4059ec45d37fbf6f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3aca5d75477059b1bf86e7fddbd237b457820a972ca6c6245ccec26f971a1092fc2de9a109\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a6b2bed67f0c800156045ac6295c39f087e695bd459620220c8ebf9dc78170\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c87bd120e3374b336e4ec0f3aa703c273124de9361de5db889fd88\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"893fbd6d490fbbdae6b6bb34bdc4315d4de3f45f82740ac7ccdb3b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8fb190295d58424c408635b4d311eab9a5de4017e1506501d46419078ee336e07c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ce4c83cb4354c6ba6283fad32f829ac8863e6ad6a694546f3d419b65c4e1e0e035798cac1\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e668dc276b2f33defc6ecf5a549fa779e67a3388367d0944e2fc40c747acfb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"97e4fd576aaac3a9bf92c58058ee0f7f13a06a46aedc66c2525d38\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"614bd1b75f11562f0cc5b09d090da32db1f31c8d739b3d361b4d42\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f75d42bd4fb545f3f9cbe573c8d5023aaf9cd663e01794f0812387db078905fe14\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2f267a3b923ce6f9561220db3810bf03d0f8a8ed4382b256bb8c902f6814241e5dd2195aab\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6519c7743c893b53cd05e9e2b19759a7ea0280aef0644ad6166168c08d855fad\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"93ff0821f9516b5329e3a964908142fb7e6aeae2a9afffd34bebb7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c6bb6fbb1695bc7a9148ae3b65f41bbc25aa67936645e98c763f3a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"75423afdf6eb62d9a0a20eabbd4769fc30de337328d71599323d55bb1e775486af\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"20ff20d85e38f67e12d431399933ae2efa37fcc1d5172fa501db6ae4b60c1b4f29dec9bf0f\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843934ff73eebb9d930ebf62b8e4db8133ca936872b5551efd7c9989c646d8cf0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8d372b94914e80018211a344b8b1c5a2869492a0db46990c0362f3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e183b0abd55550f9955fb05476d988c6f27628d7bbde111c39ccbc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"167293a79ad6a647114c4f4eb55bdf713a0d44ae48765c07fc4e57743100825021\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2b67a18ae246069c51687bee89141041d9d35a821f852975d169a4f80f75c735807a1fd157\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f01eddcfafa2580bf4b9670208b19eea75586d8b0352dd82aae394a668e50f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a267e88b70a00fbc099d3bd4438073cea04835321f89f028f421bd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d0dce53724a6e38d5c0ee4bcb19bdc896c8e62d7a26fe71f7c3424\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"91ab3b07fd6cd6cc8877ffcf12cef8aeb0c2f8c8d58cd52398899a29b8b92dc8c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ff76c3fc888707743dac49d4629f8009264aa4123b8e0818a396ef4c2ca48f2beb7c9215bb\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435637c95d5175db82241df5bb90db690493dacfa51454f80512c3e223de17f7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"017e18dffa3706f97c3f08d9318fa68784302749e9389ff63a31b3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ce88f443e45f17ada7021df6150b2dd590d985e2eae4ea17c47f5d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"714026c2b7100d53d6ad9d7bebed71e684779bdd0dee4ca12015ab3f2f7efd78f4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"83ed741d1bb903b7b26d3539d64dc42779643dbcdd3df5f65e43c91b969b1edba029d12e12\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430b4b427c7ab9fac9f434513fa08726db51b1b447074227725c16a35f6b37c4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d37117df3063b2dd15b76ab8feb70d1a863ed48809447faffba69\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0637f52a8c2a4fc85335e3e54ff6f354c640a748db72134abc544a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6d2a593b40932c40c700d71f5e4223e0ee4401e8682bc1e9c756523f34b2354fcb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a5c747fe5132b92fc0819925ea2e2cf6ce10fd2c52fa8d25a4480c71fcd0d508a8c57adf54\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65767406ab00bd96a9e287f72db8ff268e761edabd28cc88e2ae74b09678f1be\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e4a649ee06ad86de75555bdfb9765cb57545d334b0d13a6e5f416c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e6570bfdf9e1a09d18f75e99d747534bb1d8861f14c1671500fcbf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5cd75db3bf4524a4ef5fd4594750cb81ff56a4f38973f9eadc1d68086540e22af6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"01848683f6e94ac3d5c9efd9428a85a2b959c7228d3f2d52d6be782da842e5eb24ee523d16\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65408d170f99b5acdcfef1fbce48d4415c24a82f9fc4019d2cb6fc384c7c5ed0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4d37b333a22b40bddb8e580913b3988138e2a3c4bdc15707056c58\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"69a4b526cf5b43bdeabb62e325bf7f57dd460117f2162e0f9ef2ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da2ace1b25fc5e3e49c05917e633e5b72bba24e1f4f17a4df9864aa4ee9881b0a7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec5c24c0697c24768b5c44118a1e14d3571893edb726478a69eea4cb1ed94a546ed825a728\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6520b632f7382974d87c5e214e3220b4f134dc2e793231e4e6bf070398538fea\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e787cf813add5e3a44b9000c21e5995f18c36e3b314c9f03531a60\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"95e09e1296fb4234a0fbe3e8d56685f31ec2ed1a973ec6283998e7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"628e57591e31578c54b0d85f57cf69ba6aaeca720db9e4bf2049d65d35d6019448\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"11a4ae0a9cecaae8133cab05f00dab1cfc6aa0ff0b2c1203d1eecb19ee97aafa87167059d7\"\n}\n]\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a5c795fd17c1a982f66a874bb8f77a821d9662f5bc5c5c9197fedb534ba474\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2e1ca24b689ef9fe91b5cf74af500040a94b8f7a6e2afc27cc2ff0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0dd23d76390fd08836a69fb27ff2d5c9818b6f83241504c6bc85e6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"56438aec60b8211cdc40c4a1ce35bbce5f24be84b9a092d20e108639ef53d7e9f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"caccb1ff090e066cdb62d6a876d0ef605d1cc85ded52f5c6f0c9e6a7fe4c1730a24283942a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794420495e1c45aa6d48bec75e6c0194a30b8482f680a58d92fbc94d16ccd31473b0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a6c0a0af9e78614cb0ef972d4bddcd2160ef8f5bb482437adccb926e6577b1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9759720a3d79f72c9f8dfbf0212aa18f33e2ce417cfc4cd336a6c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2dacca87bae103cefaedcafe626484a98e325fc38060ec1ec9ffbd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f615e707fe6460e0c5409092c9680fe5f06ea271a5f3560288085c52c83c0ce11c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f379ba4c38463438bab34a83691ff1be8340627bc35753e29dc8c3fb364ed552b89965b13e\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c60565f06c1ecccf2d200338e37e56d9aac4047a564b204ce64eb7734859a144\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ddc9bc4a3f65af7e08aed5d5c15c1ced3d74cf0eff611c0f924049f3289486\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"514a20493e3e5958e856c213d56e955f41ae9670efb220dd72a58e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7004b2c02555ab8ee1880eccaad678660d604ea335abe8781531a3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1b1051bdffc11e1ade8cd6e828cf76d3cff6d18b308753e2b01944205331a138f1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4c16da9f4f106751f509c724f89759b22901a5b50a0e6c7f11df172eaecf6b690564b59de1\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f7637909117915e89c63f4c0f6f01989d893d5de9b98b29b836cc13833e26163\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432916e049ec3237e4695bea6f390c37441da0b8bc16d325657c1ffd800be3ee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9f966a164be23663a0d1b55620f5c2add84a739ac7c911679d9c4a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ac5e4fa5c336d7e8e34c81fb3c719ec368c2f76349a3cf9d433495\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"885656ff8f143bcc6d458aa0a01dad9ec5a006b71eae68a62f270a8b5f36158d74\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6db9da5ec01ca293a0ede40f299b580424bad94b83c7cebeca326a0122541afd65d0f3001f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ca0d1900d1628790f723d3db19a2a7bd430402499bab3f1a747e3d65b4af8a58\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884326e202dff275757339b46d205dee14af9c50e7229bcbcdaea76a19ed55cd38\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"77daca71ca5d9b0fa9ca00dd5248bf56ec329833cf656b020e461b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a23afd59dec9df87fcfea362def4d7174e459c16221e95ee44e3f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ad15a2da750b03d7c3849ea3420208c48e95bf3ee3e6b798534c007482a06317a9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b41123439536073a71165619efcc30ddd11eaa21256ad36fa882237df87316df00623ff324\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a36e62e8f9ae48bfcac7429ca388c2db0dae999bec76da21b4ffd19c220a6f303\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a3b3db2f7f42d6cc14db97a27a56c1ea739281740e95b9d44e52f75491a18a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f85866ff1e5a9c2bb6f52247ceb12b98bdc79fa0e57306b294b2a0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a3a22ddc65e7aaee29838295ab28382a48350d6b05b13ae65ff93a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"69021f4172e19454391ee8f925c96d26b7245d3e199bb5478f06c6cf74b4c91b6b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"499c2e912c2520a7a17e9c8da08ca80da8605b76496911e1a812c7cd27b382a5e952e64e0a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aab0033618ee792170a06cc5a464ee8af51713d487bd96570350241225d78d95d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cc6cc80bc85a6df5477839c7d5aefb809e203ea22efcf7dfd3ff6413c6aea1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6fe722a0aa4dbbd173796ce01ed1462b0f47dce79f52008a1650e0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ca92b79df7cf00bcb84fc432970351b17ab4db1499d5fac7c3f09\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"72b511c80155447aa633b0d5af1ec9d105b53695281118b3f12f83bdff2d0e3946\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5310642a1baa3b301af5fb2ac6c43492b5c54c5dffa5b98d78e5a90bef99f11fe67cdd9f99\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a20baa0ef69cfdc56ca73d6e306bc64052c9fae9d8e2163981cb90c5179ad30be\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65aa700c5c11754cfe925a375afdd4d08871da0b6bb0e25b24090456c6aff2d6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ae753ce899f8eb26d0f5b0522b5929f7e23d4150e4732f717cc9e9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"66dc2e5ec9944c3fc621701acb7b85c1ac54f1fbaa39a62cc704af\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f5cf66b7a528081dcbb7685c93f65cae97d286676ab9d67ca3602d597e9a4a248d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fe2b8f52954fbe8bc30d5d4aed0b70b8c6d7fe31a89e2a5047d4460ceef02031a216de4918\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a421712db87227168334f408357fd72788a6c95ebb6235f97b8dfdfa8c49f4c52\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651ef62cc2c57b0d1eca5dabb2ca46d0913f760bc2e01df93c1b8da9f107e749\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c5243b2d7b329d8faf67253943754e44a7235d8015040d2d5a089f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"736d7d9f3b16f85d647fded5a47fdd5970aafff7da245824179e35\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c59c8f30ad08c654abd024d0f3b0d35489eea0deff7ca6ac78e1d8e843f6bd8bb0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e96d133ae2678d1ba8373f6361894278779b3a4d1d93ef772ce17748881b114eb2148f2de6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944caca2122244634abe4403ac3a0ef93a1109fb645cdb5e2cb4fb0090564d1faba\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ca4b77867e81852a1d8bd5c7d36783551f660a4abbb6f51864efef8c5a93a4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"42f31769c7ba4e521bf7ce5ba2fd8cd5d19338c10c1da2bee4e8fe\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7cb4c491fd21e60e2fa9b085d112ad5d664c2e067c2d54f6b2f095\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0264669642fe348056012d7b13f68f645e6ed5275f5ec25fe13d003bf01e7e3e20\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8aa868febd35be2d863e2ea5de991d55f922023ab3b55f416f9859685a09cf3176a23d59cf\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ded642e5c651342892e2e4a4be4d9bfad1f5e72f29d4ccfb0716e9c1c639d489\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843979f8dcd76e02e8a557e78af488b8faabe12f912743fd1b5e5453002b59439\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7b8ccda124df427367da425a7c57fbe5dec4bd54708ec06d251352\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0a6298ddd9acc4ee98bc087044e4529462b198497cae9fd8929572\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d48f42726593b05d577c16c69d2dcd91f821afbc6eede4089535abb87a8d5d6a8b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8afd00ea87bff1b2a5a4219526eacd37a329ab1e1c4b1c35000a38fad79575a1ca89fefbcd\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794413c7591ff289ad2f891589e103626606b5908283cba02e15b056819caaf15c65\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843beb163885073124974659f6f4b03dac43688ad7bb5989e28d3ce8e04510c87\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1dd2d82ab11d44da5a007e5621c83922c0971fdb56645beb2be9d3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"112d8dac041d954774c691ea7c92166a31b83bc51c7269ac23f644\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bec42637c2ba95f41caf8b958fe244041a1481367ea366058a0f14a6831e409fd8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bc0023aa06bf60542bd622e7b235e4fcc70e6b98e68ff5e5570367fa488f4153f8e13abf63\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e0bbebadb5c60bd098681a1117692a4859e15d1570d74c400f7ec8aa1155f5db\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431e16e0b1a2ecbfd41363e67a14d68a4133c2782be5b98575efb254d1b3e6d0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7c0c29a7a1d99dd20103e00bdc41520c66ffeb8a6b2a55d7d9566a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f29e9d0e9ced58ab7a0d0c21e017855f3ad23ba1649d9ec274edbe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"af726d3b68597d804f267f80d52a2ab1c9e959412325e1e751d7d5f4da97060292\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7e9b0aa031cf38d3ea75eda74ac6d62c46fbda04ba19cd84ee97b07824c3c0462df8f7a112\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0c5a1c26a23c6515172f7ae2e0108c180925350d13e62b471f01b417e6078222\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d16ea7d533eeb0d018941b51b4a6b26a9b5cd302936328dbfc55efbd4c0ef0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9ea23c6001c362a7295c41c7a3fa9f6ce998b7ba2654da0241fc0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8d4838197f9dcfb4e476320eb1943c5b4c1ae9c7df07a5205c5dd5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"61572b79b28dc1d8fcca764d5f7aaa73314971c86610ea0d06256fec669b452e92\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"997b1ca50f7525dfc79143799ff327fd0721f4df510e75f5f75871ee2eb1be5d046458f4c6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7c113eaf6c7e6ab2751848ffb6a3b2a582e5e3dc0bd0b8f81436782ddc7ad2c8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f9122fd87c1ca30c56236c52951dc643ca09f080a9725a05e8b2de6c4062af\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f473b6ba6931f90abc4ef49846483b04d832aa5af33a5ba08b8f39\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3f4b694840819fee0dc79129091dd8c7f54ac45f58a166b976a296\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"00d1104f576b2685cafbec3eecc02a763a4e04a14c1f4e911ceeb6e2663cb2a762\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3908edad53b01234ac34c31fadb6686dc00276fc7f0eeae5d50d4da1dc06d5fd036f59ad23\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a877e021049b4cc1be728fa1dbc2a52ea042f0a482638bd9959d966c80873eded\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656cc3fad94a23e2f206e8c95065326c9de054908dd7cfe9d43761b21e317da3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"38a607ce41b5cb6bf70c8b4d1741aedef4c77f349be3f17502dbf4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5610f462381e6a1596fa117fe3a24c5b7284cf323b56d5a17a82dd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fcc9eb8dd448e98e05c0434410d063a9eebdb9cd029c4d8491b2747c2100ac869b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4fb928b496ba1240f768b9297e643ec8b34e118b78ac572dceb7d39c2067787ad11a2be074\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aadfea994c0fb7bf4cea334ef024623531c3b3f5b978b31ef0d5386af0405ca77\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658796c9988b9cf274c2b3b9c0d6f6193946c9a070e4646c4ff55e86c18e7caf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"762b0fcf937e7a203a829f627bf8c9fc5d49b29674c6c863266a87\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"315c8b34c36753bca8fec4a65a8b1390bfc0df8c66c21715eb3f96\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5191e8187a85c8e6ec2257b1a1029696569fd01e2f85ede68fb2ce8e9d2a4ec6d8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f39dd38167b96125782bb800d696541bdedf26c41c1ff3b74de03fe992da6bd7ddb8860e18\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f8278c9bfd4ac8797dab12ad727f3584ee2fd7ac7f91598f796ab610fc108e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f60f01231c3f26f501ad5e48ea49f4bb0a2fa8068ed2da64e28144\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"404ffbacac392332d78ef2f984d2790cb3368570f4811664dcf873\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4a00f8718baa702633899a4acd2abe7d4346ba2f44cfccf47f17055273a9ffa905\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f9522ead1a98211435587cdbf28d6bd06b74c46449ff671c969a4e9395a726845666e44ae4\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884327c58a2b5f5fe8d5db489178ababfe2ce8dc7917f5f879339ca03bf465de91\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"83c2ebea1b6348c5af73a873594613a83eddbe60099b6f1e8a492c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f153153544aa810a6b09ac8ad2036d79d8b14fc5cb7c32fa327de0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8f0f6277e311d6f1104877cedb1b45911f9ab6c7595df5fef0c3a7bf1e9256e007\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b3d56adc299f4ac44affbfb9ca7970f66b52349c4cd7016d9a509184d13b6499cad6cfe5a6\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439007d1439c3dc50d0f9ded2680d0995f10ec0e960871aa8a01b8165e6e297f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b79d477f052726df83371225d9f14290b85be44811e6a5479ac49c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c31f5db821af2a7b24fe039810b8d4f07653e16b33c8b954c8d86c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"004c129957669013562bc14cb11c868ecd4fab4dbaac1794916b0e7a49ee27e19d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1a50c6939a635df3d49d310f8f5dd1a98ca799aabcb7210e2c0c610580978e6caadaf7c913\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d7179edeba31152b3bf6a6c2870401ed8000b5c5f2eebd4d12d7349a2bd52b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4f4945412bb3480c283fded0104a71c248ad9a39963324e9fe5887\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"07ddf2cec5a015dcd50dbb9b5ee61febc436db6b0f4e6a6a7c88da\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c5df36d437206734b09b1a1a3d4e382283f3b45141d5db0485121fb8e652aeab37\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3a4b0ded5d48b644b40a2226ec009866b4470506319e66fe678c55d8ee66727368aa08924a\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ac2a77ad3681ead887a719b303d560d4d0b1bd6de9530a1fed8b087301e6c4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57a2d76cd9b374848f77f69c380a4d168515cb0d696d85de817d53\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f0e2be0aeb9943e33fb7b25627f6a1b6e184797e4c07bdaa7672c6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a83c731fff0903edeb4a784572cf648c7b2cb2d2904665cfe3a3bf18dbe1223cd0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e2f4f4d7dadd271355a8aada8d00bb7c7ebf1931c1a78937310d05f184d9295a38ef6e4b71\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655bd4c690aa5ea483874178c8d0ff1cbe33cde3ec50c517c1b214e1579c33c1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5193d045da652ea8bb4d6c381b827f278bccd20f2137ef9895a600\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c96561ccada08ab8e93d2396dd0dddfa31025d0dc70c3d64fad845\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"70b63278381e32a860cd6cb92d35a4b2a594f022eb9d0cd18c6947220bfc47d114\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"565647e282a2743a88037944def0559a801764f94fa2ecc6182d380f8f544e8cd081187798\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c1da28ddd933d4722cd351e10aef9ccabd54030082cc649f2eed8095d9a099\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ee12377fbac4f5f31784d0ba8822382106c1e400d06d1983f777c4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a4dff6d5ef8b40b4605c38d30a9d55b66bf98205d9448af0926530\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a1c7eeba99cf338895e9ba1699d335b1b125064fe15d1ef3e8ec9691541be4cd8a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"936d1348aa57f32323a94acac1046e8beaadebc8915065ee30303d7a52422aeb7bc6e53101\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657e3485d81e2d3abb637efbe9397bf2660bc58694f02e577f6236df0413dcce\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd874d1df44782707981b7acd8f07a3c4d3048198e7da1bfb9d9e1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b53bedb92cb6ffa98f0ac8c50dd0dbd423bdfe01b23a2fce5d9e7e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a7bab81f349accec44de9d4f7527d6c6cf7f244a936c8b81322aab984295d73530\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d97a2d0487e82f57a9474b56f1ee4d0e8933623e73d3e6584f8e842fb2ba65ba00bc13d8f7\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435a3c4ed5989f00950bc6b7bae756d71efe3aab64ad205327b707923803aecb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1e82588a49c35bec1703ad39e03525db224beb2c3b81a5da4aae72\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5787874f33246c556f9454d7861c90e297f49bb38e2dfe4382deea\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7e0e20c0ad0e1b71ffb16591fa25bfeb9111ecfcd1feb2f11e1cdbbaea3fae43e3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0a02e2d245fdf5a24c86c7561bc2e08ca3afac3baa63dd5dc8b6eae8fce0e0b8777315bd0a\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884342572715597789b9cff5ac4d22bd9bf7029598e08d7640bb80de3123cba611\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f4c5c325a955d4527443950cd0a391ba7b8f20e0370efa0f201410\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"58a69359106843f38c9790c426179f2c7bdf614d1f1580b582001b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1b0517c372f57ad7239aeeaee9df5e0925532ce52b6b48f3b1ea635832ffe52fc2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e602d70ee8f8e1e6d71d8c92da42caac967eb1bd9c21a2e754c2e489905fe12d8b84f01fd9\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843345fbc11fcd69c47a6f288543f67f43aa0b92bb896ae1254dffb30e4346ef0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e23aa08fc5895591e1022609a9fe4ef480a04e0b1bb5634b648914\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0654ebab5d058c4a3e977ff5df043c2f4b99d3ad645963ae99e7e1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f0c1799d485374c13c37095bf3c691e04609d209467236c0a0346692db4e32666f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6d38916f60e4e8369788ea780668bf942794c14070ab0398671b502041a6ea80a14893cacb\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843503e3b49ed81584598f7ccbadcf05d78dcee59d3dacc833613594ce169aa05\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c37e6247a9e8d03cc95bf8c8439a5f8ffc6fa193a36a02198de085\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"df5ffc1c3c0e49ec48adc68d1708d39af4dc25074adc99b17d8eca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1ce3258782fb9b1332f5dd0731fef8535fae84e2a9125baa6353c2a076fea03666\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6ead69823a73e23e7afc27cc15dd1c6e81f94669f820a0d8685e3072a2c68e8369d845c7b1\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655085110104d54598c965660d2774d6eb65552e337fa78bd791f8d6c2c384b1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a4145c0b3921e5d938d6481f1dfaadf7c2467a2aa06721dfc0e22d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3a1cdf3cb928d842f6842321e19c4df69eb675d10313c7d035f0f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3550372eeef9e0264c5d4f1dc93b55fa737a6f973a5e0674d5f748fe803d393fd4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb46d89ea789e8292db31e3341535f62b9be36604b3c293fe8cd60d5bdfd7196d4b065b448\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654942e0f64f3c52f39863d65c8291424af5043342ea0944d6ef4267d7d63150\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"54c1ca1b03f28d439324d5be5eaa4822a9e048d73071a0448e67f7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ca013e673e9e8a1fa59dc23402f6a7e33810f03cc4dd9831af9b54\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"97da1e6f132fd5b9c15f396ff412289dc4a38edc7ecd2fa8de8f1f4af87aed6b95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"947729039388f0d4f9d33bb7e63d4b85b0335adaf9e979f86b1b9da839cc25e4c7e83f4dd5\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650702acb352326bb2e1811d445312bf1dea1bb2bdd9c84f9cfa156b5430503e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b8f18e24bdc5f8fb0a5f82140bcaacbbfddc9ce624c38338cb1266\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"78b1c8fa75b2597d4e9a968b11079b5f6524271881228f191c5899\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7f2c449fbfd0522cd0449ed63f0b6cd77500672589a554ca63097bff03eb89e8a6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"26541f6846a81c6e404b36d6497e615b4e392de7b9b3a2e61acbb0592c04cda8226646777d\"\n}\n]\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65fa8a25f082273c5c8b268d52ac9188624380ce398f6b1e881e5b4d5ba0a6ad\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"667e614c1100432ca2f6f597dfc0553ba2bb490a5a1ef2516df1ee\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1ceaa4c497c3911a8e737899d3c3dade1d3464dbeaefa0de258199\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1e763fe75c2d76fc3ebd24c16934fcf5f01ffb1f032182cba5626b4397ebd58d0f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0f29d1b1ecb06d5defd4a2af3caa54a92580c3658c5ee1b3ed294debe6cdc8400888624ade\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a65ae8ed928ec2995b3524a5fe4a36d548276d6fa800391bbe57e925cfb6bdfb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843351d130d2d2011a5261ca0398cf4f9c946787d256a801411bae6e03d90ebf8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"447ae47ae526c23a83b5643e96f555be7ab6ab905f6e053b64e421\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"48f89639a34944ba1465e9872cc82f473307f84722d0b792d12276\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b94d5520fa2d80039e1428c17446ed5a2e6273086ae9757f40fc83395de7ddb792\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f7da6ebd0879fffc27976cfbd619282eeef451814a5370374eec79739b29caee292015e2b5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447353a856018ea0cd3173be19c1ead24898f22cc91394b394a9b95e8de95406da\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884315e346ae33529836b9994b280405d8582d392c0f1949ab479db724f36e769e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"180c7e57a48b715b0d74f4bf27f2d8f969964d7f959701142a1f31\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1262888da1e8688af4bcd8cff66970b86505a7d576ffaa047bfd57\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0b345ef2a9eb51a4049f1fe8cb3e1870f3c3ed8d0266072a0023fb55da85148d90\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3824c98e41eeb15f3e14cb944ff66499b58e818c44d2d981776b99d21a36189e86649b5c80\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d498a3cc7c9b24ac490ae346067ef9a38334096a0b2f5be5a1b0d4c4c303a8e1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fdde9f2e72b53fb7d5f40495804517a49511c8c57cf52acc809e724a7ab6f2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d1cf52c33c64140611511db95dba16e9012429aa124330ed11b8b1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dd2799143f2159f2cc5aec53e6e073ef05fdd22eb68e4711a810d6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2f238963edbf6ed69a8acd00b448769c37dbf80a51b12a5040475162bd6a1ec4f8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f9480b576a3affc22b2c3207466b5a8c777a991975057613800bbd11eb2b8eb3d5b0215aa2\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944392077a138cf227ebc0ac116b2172653cf05b9dceff53f5d99fa28bdacc709a7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432a324c9e37ac03b5d1ec10b87bb54d0a355b053e8b169ec8b41a39e537819e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4fa7166a566deac5abf284432567afe4f5dc5046326b6e9b151ed9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"85fa2ad7564e9433347650e8d90b15847f4186e0de1dc02c6b6458\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c8646d0fc57a5e005730be05696ac743455b62ac45928db54d4c221e6116900c21\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d8721c2763a3ea51289b4437e8724374606e040f4aad769a1f20f2a03b293b8d277773e78b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aae1a3a235aea99afbcb27684b9ecffab2512a3256ef9232c1fe7959a441862db\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ed5f36f8ac892b08b417df2a3e1dd67075b83fe77606a509b8dd05279807d1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"96861b6a9ceab2b323496df9b0c403404e7f855174796542cd3df4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"eb5b547b6984d5d750b95daf36130d02a001b211c4215f0c579100\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ef54e1d59209b96f9a43844a8fdfd4d19ca8a8715c67622a1545c5e56393e69f12\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"07ce25b29de53696e803faff0adde372e9db5ba624ee96c27739a0a6bfd0ee32ebdc11e3bc\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7e29f8769f9b0e5ac3df1e36817454ce80ed404cf2b8d11a59cc329621b202ad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652d3c98006327e5d8d3cdc5ff9dca2ac98cacdc6499ac8371f88b6cd6de55c4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1a741cdaa709e4459cef63c4add034f7db75ba3fe07f915dbb5e0f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fabefda8fbedb5d4154c44efaa705bcb565b435d66bce5699f0978\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1e345f45f2e2543e72d81aae006f2fa1f5e84edf04eb76e844aef6c788548075dd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0971eabb7656e6db753911beb328f11ce0e2a35f19b6518314892d43c192448c4e6c75715c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a600a3513d42583ed90b82a379a31b10bbfebb017e19606ed32be1a16f39543d9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ab78c66a8b978e07901e9fb0d8977a3bc845d905fbbe8f56e4aba3df139bfc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9cba2e34236ff34bfa166e76de13f0dd2834662814732413dc8e0d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c4fc8eeb4171963b68d1668e6fe1d284ae28750ec35d00436da518\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa713ea9972bfdb6aa013c73d5e4651f7e4f27f56b40741cbaa2eae14af7c58d5e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4bee11d33cb7012f5361d22e694f38a9a6b6536c8e3eccf85ce40dc9515162afeec84b8e33\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8e9e8690794c681cafb01aa0ee2d03e89cebc00d58603f9f31aad5ab144ca953\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a3e35e8ed14a1dc5a9b599859775cc166482b06eb77eb0cc7a4f22d2c2c0a8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2f0355d90ee6a8b770724b4cf9f0e39cdc658628725980322b36e2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1bb6c812494bf88b4258525372b33882bbe60b0f37d57f74137f10\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9d7e820df864516c6140e7269371d02912747df26cc3dd4454e857a2234c10da75\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"752cbb79a0cc6efcd7ec3cef4f941925af879eb25080af97fbbfc433a9931c7cde279ca0da\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944067b1be98ca7938871ccc75fe9c0292daab02a686afea0338fc6f6364b542801\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843da4323554d2ad5858354c0612c99f91094ab142f9de4f0227daa80153d0f31\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4f239b471c042eb1be43e7a693bb652b6f70a93e36cadbc4ee0012\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4d46fd1735f5208b8e099b9de455ad63f6eb20bf3ac2da577e7c34\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"86c4987860c6402094233ce3a128eda7960e42a5bc2524f73d3ee55a3fb57182be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0ced12cefeb5ab18e3469cf487c16dd337802d49c4108381d614067ea3ab18e090d698bc48\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794429fbf55c442e1c3dc5a0cfd589a4b5f07a614a42d2bb30cbd55d39fa99930498\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430c2aafd88f7ff6075bfd4f853dede8379ace41d4c1ba422d3641da241b7cf1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a77e6ab84f086119eb1f6e256a5ca9621fc09d8f0edba9da43d5c8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f27634333e3018e460d6119ba4f353fe046925f44bff502bfdc359\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a055df8f8dc43a02e1b5f50c3f2022abb2dd45497750f61ce25cc4c038b86fdc0b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0edd0a22a24632c9ec65c9882ca2f4032097eacc01bff3f50328e55e229de9a519fdaf65e0\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446538f3271913f0c8d2152ebfec903f281fb98d124d5125896da041c3d43ad0df\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b355d4debb8fb655536e1d5cd8d89df6a668c0d8fdaf4a95aa6d64346d55bf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2b6d2c4188535d6cf165c1ac2a48a3e7df9c5a7c37d41477a59cdb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f0c5e68489daeb0e11da72284ee44d15f03fcb4ac4b2ff64304b4c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ff5d2dbebecfd4a22f430d65cd1e14fe2a4479803cd159964a53003547035a8203\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"317eb4fc9b498cfdc795e75ee6a4aa5088dd7bc7b61ad43f6e620b40c7b7d063782697a3f5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449fd79fac33d4927b8ddf1758b423b71e1f082e2d24a69267a7c3a3b887dbcd18\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843625b5aa639bbd91e7bbb3bf195b9b8c658bdbba777d82e9b52d4f47a399c2f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a5d60b6f64837c7d5ccf8ca20e27990e513aaba609d3a69b260aac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c1ee3fe092f3999f43b3eda607a444accb1249f9bdf85de3632eb2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5e303a32385bf45b7c334ba8f7270ad6958f98830f6bb5ee6d8479ce27435eeb3e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"be978f33a2364c908cacc733e9b1d29afe2d4a497ab1c2dca19774074d85165bce5131de3b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a687bc397c3e284557f649f0a204dcd12d5aa0bed1ca81e1e0ea3243d850393ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65eceb1dd01b71197aeb16ae514abe675bdda20a577a9ff74212ea3affdb831e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"35a1e9756623e1851ee61304afc202af7a26c0ebcf548af8ad976b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"801e4737377de3fc47ed85aebd30bc0a86d76eb7e55e4fd2cb0542\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ab53304ae028fc567354af7949a11ef6cbbecbad5e8d701843f1acaa6d53aa1550\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2c3171e96ed7f96d43d33db1d4abe797fd23c5d088057ce32268375240abf3522e10cd119d\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac45c089facdb534928630922b39c8389ae9fa1f0505422ce1bb2cc2f4ff9f8be\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a9e63ac0fd3e0170c8744ce3a52395954e2407ba2bf0d95f0fa86d4a2f7552\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ec6d1ba0155f0636d18379505b4d01aa1c246221eac0ef09eea786\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"718063848dbfe8045a720d4c2c85bd8a8cbf89a58615bfff24a53d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b8999a6d9064b27bb02fd3af26d02ae3cddc584c0be065f96cf1a4ba339a46fcc3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"81038a3e91c39639c56561b1da07374119ed36beaf15d88fdaaa44c39e63a5024beb9f17bd\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a47387d4b1e25b6e81c46eaed8c3d5740f288cd6e570314d8bec040cbb4274ada\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651d9f7d3642d5d5840196a8ee21165ab3b734085ba71c9872aa2b3de2a17c9a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a1cad89e53d2696be3ba7ea444b33b61e256fe3ea7673cb124730a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"829b9a8cbb3057196aa69eb0b8c5f9175816d9de0096ba2578645e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ef9673ab672d852166f3307e97024389a7511b7ee2fa5d0a757f3db550568b654f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2d80a697f06a9ba1c5e24a6daaacf1457e467bd70da8da7f7eb7d35f1f29864d61147843d4\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6395b0c459a016538a8fb96b4a314a3ac9fc5c5a01f0e70c4fe6f7a0cf84eb11\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6536494cc7b9ee35bde9523682e417a42f7d620e35b66027329ce08e3fbd933e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3907ad6dce753c1a5d02debd7903f4feabdf29aa62bfb62add07d0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f2d061ead34d0b66b7bb723fa40e5a95922921523b63fc8b32b3ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b6b77f4b6f6ef1b06cf85354dcffd7690e87a67971ccaa1f8d504a800a0a6bb050\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2d4ea87c7a2257d228074838445810221fc6762f712452d3413bb0a4d23b37f622f922f1f9\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448134d00711fdb390a0d178fa008f6d47d2891e5ea18ae136c3b4c23ac384efb0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438ea16e3701bc0d77744f117bee22451c9afa7f4cdbbcff00c04a8ee0913c88\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a62de29ce27cb80245d440d986ed816c156e9d757d7008df2198b0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"174a35f11c689f4530d7208618e0564ae12f2f50ba8eb4df5382ff\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"337e475ebb8eae60f91974c4e455a5af38d1d8628d1803b160d60442874b0a1777\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"047e80e060b7bb08b53c5a23dfe9920cae135b9d1dc6302fc475003062723700366346ac9d\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444bc2296c8eea30b5482161d29ace420ef8b63c1e6f026b61150c535870d604d9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884315059cc8b9a76e12fd9b33b9e07f3c66e8732a6bf06b6bc1b2c6fb40b0782d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"18ecb8118b223145bae7829f9c8d91be8221175d0bf585f2e99e60\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6a19c0843276fd4c37a1b0053d0ce7c3724a4ece8f7cfed15a3a2a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47afae3fd6d853c3be2835fcb249e7a31821782635112f4828e6edba09fe9334d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4ebc1f72fca0525982f97530426bd3cff9eaa8a84f4b3fbb8ad420079cd27b367c77594a44\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794454ae7612d1724af42adb130160a9a94e67b5b169b4e00c189f6467cd17eb7cad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843986a5c929337e337ac8b4a074af12ab9f76318a5f18c8b599a443af07383ce\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"550027c7a5d450017bcb5e12b8253b1c53fd2213aeda84891d5f95\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dfbce0c38210ccee35e830aca9dd8b8b3997b933e75bfc8864b759\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c487a88330c7c65e44d430addf3d92d2a15b081a2892b96693e00b68aec0adac2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"471cb9f8252d8ae7b25c93f4b4aebdbf25e5baa23f14bc743559e3ef7fd065e69cfaef55ee\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f3041e39b0c8ba56008f2d1183fea6ac83564ead0267b0842ec4c521ed1e1407\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432281dcc1835131f305dca14525e15e27d1f32294aa835e40fc18be480c1db9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"357e24e9f28ba22080666f7efacc01b2a0a4e358e742aeeff2aaf5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8b23b34ff3169de06a39551e969ca7876cc5122a4acff74bf2ec29\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5c104779b6f36e59fca73ed94b0ae092eae1d76dd109caf5060aaaedba385d7076\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"34ae0518d0cd3aa641ed372ea94935ceecd87f8c4b422ce21a33d3f6f5493891e3e915d83f\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a59c70bb11538363388b6f1c65854c3505f34e1d3034b83d87f6150989b3cebdd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651bee976f2fd12d1802a4c981f072ac2593337a86605bc1e39f899e099a8c6e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ef03495864cb3fbaad4b3c0c86c87b7fcf4489642d7cc260b02136\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b8d22a8dcf897ebb7ec8d5526064b1674b4ce93b13a25c6683d710\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"13ea3368948d86df81566698d068edd2d2124293742361cb6173923b3b82fe3bc4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e8d442715d946d2f10e03d3f8b6178bf89a87219fbff0745daeeb97d46fcd27c3ab98ca007\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a19db470e08b2ce2e0cf61ac0f0faa1a3c4125404bb7b7c05fa1be3856cc9d0e1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650e749cab990ab45a321e17efbc724f1e5dd8a7857436490aa4ea2a795875ed\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"20d1509341573ba17b1dc3f6f21c6d5bc76f7fe4cabbc6b8cec742\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7d9bd5b00b41dd3da945a801392d59978c176e95444cfeaee38cd4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"16821cf66a16df5cc9a34be03907f81809a498bc90c30a471826b54fab9d80fc32\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a94f6a6f1340180839448aceddb4240fcede1fd40c16ec298171ae7142fa2ee4b073430189\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a54c0025cb2f2e561c4e3503cebd2a866473e55c41cc684457168690d478a0e44\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653d2becd580ea4ca37cc75720d6b11752f42ab95faf7d81b879e58f4c4e7302\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"53029c808752cd373f5e0afb11ddb52dfef368b914186262ca098a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"888603ac00eccdf02597da2f2f8ba6df80e959257e8bdb96e3fe2d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6d1b1a2069d9809863a0ccdef1b82fc3d9ece9fd2a69c4dec102db378c5a4fca35\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"30d0f5d2157b92b15b384712d46962e220e33fd227cc7ce929fcad0874dc70ab8020766c6d\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae985336ddfcf5c24c6b3b5476762c2752c99ba1c9e3445644aef7a99c94b2770\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6524ed8cbbcf765be28ce3b55f565101dee08ae16d32b4d152e273f0de3dbe21\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1abb554fd0781566164b6617cf0c8918e10a4dfd108929d6697221\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ae9f8b8742cbd316d80cd9248776ef0b4deaa5dbea5e24d7b6f018\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e10210094c1bbc4188e188289740917435aee86139a5ab0efc180cc897622a3a18\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"12f562a91f657d54b7d851ed979143b8aa0e4c0fa5dbcc7103fcf17a24d4519f417a6951f2\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794475ab4d66d222457dd414bc5f296bc7b4078cc7d72af5192628b68bca7d28844b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884303c7d89310502baa8299520ba451624c3c0492e2698f8d457c32400b91fd8a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"304f70c37c93573099228016d54cb15213af94eb598d1b17df1153\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a1bf6c954529f29b31d8ae9f67d2c18dbd332aa1a0918690c6d80b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2e8f3e51888360b2b2d83a64dde9943c7dd3c5e84ac7c4b4e2d5cfc025b6c854d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8498bf41212a8b87c9eeb408274c75b3558fd0530865b5a7932d4b3af812d85b3df27e6f33\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944648f51aa930fd7d9d64c13e0d94f6b0e72227dbc98dfccecfb2c474e05ce5c82\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884313f7cea78d381a0b98243bdc46040115147c0a7caa6faa0ef49f3b0a4e8258\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0a0cecde12117879a0aaa10b67404e1329f2edaef2d849b892659b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1ef1c166c5ca068f10677a3385397e708642ecbdc4963adac6a5df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"db97688a0eb78d7b0ea89ebbf28840a721363d1c83409484f5cbfc3360d474dd83\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ccdd3e605f17652c0c5bce7d2d858b033a31c323ca5d81f0bbca534c865276513059a8fbe\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794483f5d1437b1e7fed8b1cb7002723e37d02e2d0e1d04e608f12de976727761472\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438ca2b3224a8125b51153ee96dfd7667074b4e99493caa98aa357b3d58ae15e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2b2460a36f7d55f9ef9b18534da44b6ef65240997229a6a386b0b3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0434368dc441916a4c5417e55a10a988d85385dff44f2f8018115d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a5e327911aa238f5123e3f9bca39521a9990ed44b6489b483447a67fae74aaf206\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"33349104fa5d628b3ad86764513fae49536260721a74e95e547c1b50d1bcf2bc8feffd20b8\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441a2fd66fb1397d8d7b7165acfc695e7f26fd702eb0eeff8680b7a1c99a13ce09\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843259947125be4dbd015e5f7fa1023d269f81c3ed76cc3a7712b0dc1cc255c64\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9cf7016579213e0c25d5e7676843bf99f4062cba40aa67fb6e78c5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"30e0e39dc24d5fee76a6225945e220817c394f7dabba439874cf04\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5ae4a8839694d2f0895e5d6eb0aa68b68a231bc2db04f6bc97cd2e416c839a690d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"40a95e70ac2c5f4a421bf580c3de4169a019fec1a63eb636c1ef0649306db8b9d16d2d2112\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aea9dec970e8dbc9ee4184d2bf88a2367d253a1812eb122a902ff836c74479e8f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c9799f16c3049bbcbe3d7d5a8fdda1e454942325fb7714e4882c556b27e56f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d8b7ab8c97aeb4ac9ba88224459dfebe162fab38039cd77cc1df5f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dad338b8be50284b724774345e10db7c2c4c475e7d0c7a94478edd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"858ba6ac5e8792c6ffed922315348632ca932642aec7eefa4c4042c0df18029f33\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6b3b8ebad3d4f8b96b69dd2c1ed5b1326afc916974df9871b1bd261bc9ea3432e68dfcd580\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49adb6433e209291ed99efe0f2ef85a92577fae5e581046ab98b07665f5e7ce8b1a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655aadc2ac87aaf84b239cef2d1615c81fc86c7166fedd7421fb95c493823a16\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"93be59b5d419a926ae538440bdd0ee3b4163cec7ce4ee30ab2f0bb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d0677d4892eb2261f04decae75414a3cece1cdecd58b3073f2f061\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ec0c44c44f2f25cd5a06ec3f5d00b883184f49f261ab424c1f68f3d9dcf1ca259e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"655379864157bd67b92f011b7cc1da695490b759504ba67b220ba1b213fa073b4aea4b3a12\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a271ca3d26c20c02f6c8ef914ee6476cfb21f41d782b4254e3b9cfcde62bad16f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650cadaa31d847eb9e40aea077104d5e43e7738b1e4cd9980bb2c306d76d86f3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6c6b411510e64948932c3944598fa3fce2d4204d8b292a3fc17145\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a889587d07e988f64d3f0009d0e19096fb76b18a18aba37b8a85ab\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"46760e9385671ae83bea7a7b76c060df74a55285b25374685272b93c4e2a21e043\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"33b86f3c3055c853f1c2400d7516e4f8a12f0d4f1923fcdc39ff59969797763b10b33ccaef\"\n}\n]\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6197b20fa19de1850693153eb2b200c1d985166e439d2eba12cca2145a6535dc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e136d7f3537851f9cd8caabe8679ba15361a42b3ff8056777d8dfcf5c810a4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b1945f456a6efbdb309a99f63124af154c29a8dfd749f30714b55a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d697aeab9a08f80201af36f28fa0b42e941836c22b29166d1384fe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4eea622240eed0f182084ccfd2aff80d4e336aa64fe4ae7c1d8f511cbc86083f7c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c58dc28b03ecdfee8195e39dd7b12b14e73ac65505e944d5b39e62c436cd11c12131bf9af6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f549f1c39f8a1d295f7af9f666d251b025802db9624eb3466beb22c1a1e7bf3f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843330f590ee3c55a62a717a712a0b4e03eb401cca54a4f261e4c10ecfdcc6716\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1915a49b704ba3b95df44e29196d7accdfc653a702de4265b60244\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"454426f2e9fd9644b8cc673efac0ebc779aa185f54b1e8b2616c9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3dbf25e622137e12c401bbf6cba926e0ca952a30cd2a59f37b70f4287e26abb304\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"455641a05cd3c39a790b93bf723a015d22dd80955ae14c6eb598ef0a001e58f1aeaf96a22b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794457d91eb7854601281d174e4a2360b8d33424fef451c56488358403402ecd6b71\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843afb0b53844f0038ebc77bc71a7b3cf9d6781e5095841bed5d46bb5043f5802\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e7070f6acbe627c4035d233a22e9b4dce843625bbf2caf9126031f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"52837c11c29e58025542d190af07cfde4975e83ca7bae4d5cbd3c8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ed2947c6c29f51e189d145197f9e3bf7f6b623e3f56ce15aec2583b2e4cb0f9df3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0b9c2d0dc959d92bfd9fd93795d2e97ced0a9d012e50c7b7b40e72b9d4280c0fdadfd95a3d\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e474857c977859b6f30897465eb5ef2bffa0eed836d2f68157fb4436fea1a9b8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432ccfb9437a945c14bc367fab30f409eee41ffa93e88e6a31acf1c00a2e9ba8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2820f4ae60c55eb5aa014da2e1a495046e27dba15cf0da304eb6ba\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"45b4d2582414df9319f6e0492c6b590177b80dc9da3074bd463fee\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2ea99f96b39a1f68239b808b43a7913d9b83efb1f1059f9acb2d7f8aeb7f3cc113\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0d0a84274049c7f7413b4805ee378b95d33e481b0e9c7b1d929b0443ea3c733bfb9f72efee\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443da3b4cb325d99012dd21ca7c9aa656ecc750c03d2ef716daf109b7dea39ab36\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b7dca7bf787cf79bd71103bb563e90f019b1f95be9380a1fb5964c63aa3acd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"38ab47d54af8141b514a9e089b3771c3a153e2b75343f52a885207\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f134c73ec01705bd0c7d446a95927cea6fffd34f2fdfcd3bc0d69c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"07b8025e855e7ece35ac6b5404c031770d4a02c565f35ac4361b2933f292adf1be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f9489083b101a4f8da6200f566ca863391853a4a054804e0889d54419fd6c98e6ec3138203\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aff5e2713a5f2496e4ea098d56b333dc22555629bae3f71252079fbe4bf60e616\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652066d23a24595b54dfe5ae30bcaa77844eac9366330927712c4f9758d79fa9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dc312030f444cc1cbdd77695cac1f245415558eff00ba863e17186\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d9fb30857f9d2b01349b711e9859c555dfad5af78203d9a5294ec2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c66c7b17ddefe6abb17a1217ab8a125b52449337a5957020325db182d82aa895d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3aef3a22fe40036dc3605e7fd243fa3d4c9d7750760789593aec8ad5219d35d2d7921af37c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9e568bf672c293df1439e8aac51e778180c2cf39e2d301aa49defbd91f674ed2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d61f035e5555580768630cdf8d2f5523b9a259025826075912ccd95993e7c3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9113c0e74603bfead27c4ae73cbb90488dfe112ca6a53e2e675d7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cc4f86c0805856817c4c432f3a6478b52a65ac510d5a9d51fb1934\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8f7bc5ae08cfd1f8062804a804493651d10276f2524429f0030268176073be40cd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"66f3511c0dd4b6e0d6029d0af0eca78e6a2f157ae7c80999c96d9e68103a5947c7577eaffe\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a39e491d7a517f53a9ecaaa875502c0b24d177e1468de29028d1d8ab8ad8af2b9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f4aa4c1e7d18d7580d67f0b30314623a8d09c6f3ec692465017befe874e440\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9aa7f2a45fac28283503db6a5e411c90aa921afd8392bc03784ded\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"12446adddadbe7616cf8839d73c743e9c49178452351bcdb26a543\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a98aac5ab203efea60291d6c3ca3b77d7b245220ee214d9482f0f0b7f0ceceddc1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2d2d9becb3ac5e2d2290cee1c83d703243c6ee8c27c1b91f0030a07dba38d3d6b8323e9615\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3d9bc6cf0fd4f7aaaa5232e6f50f57d993e798223350f065327a01d383c6e09d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6585ee38753592417c3edd11c758e5e21bdc9ee4ec81905651d8834ef34dd380\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ca9aac963b6e6bd6a74395de954d23953639e740346df37fb4dd3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d59ffc84cef9a09806cc6179f28f162b3a58286f90aa47f9a51c85\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ef8bc23f298ec9ae1cfbe4f18b87e8588a4f8b3964db5aaea2387383d67698e2c8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0f1c9eca9ae6b97ea59bb947837c12a2f298bafa469e4b8b5aa02e48b2140503eb89f7ed80\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440c44202c7af65c19db946728bdefe9fb9ead21e7f5adf0fa89e0fd290a862a33\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843098d3453da96ce029956c4040c5b717a6c9175bad2459f843aadb7eba0b633\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb92061d7d64102bb8d86dec4acaaf9c6c1255d112b5dfaa9ad089\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e26d7a6fb91d3922d55a52e36a9751e8ee233e5e9f5f69a0792f48\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7dd9fcb9cde72360e065330d4e6367ad91f27fcd38cb1b29c09ed25fd2bd07fe2d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6a913b8186fab8eaf653c919ea1a35635ca93dfda90c1f2691a351560e3dad2136a7f96e31\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794492f0e29950bcf6322b461fc0b8053180ab1e4439df713893b4f349e0f9d96960\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884305eaafe02e155f393ee5b93d386355dc6a572ff1d18ed236f594adcb0a4455\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3fe613c8bfcc4ec2cbea6ef68857a963a0cba764931d714dc531dd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b3c6e009a0ae2847688293e052db9ea5a50ff3960a436b50e53d2b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1f597c36d2bc93044c92b971c8c52bc0fb2c4ecda6a95e1546926090391a0eff57\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"296f778a83354646c3d76b2caf95a30e9624fb2ffd34222b874b43867cac6d96ccd3712c30\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944219d5493d7752c23a206fc14cbc3ec1f60ec9775288cf967fdeb41e413ae06e2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c0f2a2885579a4474cbcdc7a82ddc1bec617e673bbd84363aa1edebaf7720c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5cd95b0032a214e84d64921c1181379ada5c120caa5cb123f354df\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cbe5534e8c62ed6988e26940ac4ad65c320eee1d33572e686d8826\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6315e1311805219a66c6fcbe3a8d701a812e236bd98e9408648d878c3b330dc80b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9f72db6defcfc8948101e9f5a3d3637bb7a36130107b5e984f7f9147f3619596ebb5b24da3\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e0e7e80a0e31aed6cc7a5f2cbdeec752a50277bf0022bec135092030c8fed054\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438c247e3027f612363b307ef124e5fe52354e3cc36b47479a9ba7249e7c5cf7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3fe290bc20a0021de1eee593d2b2dc898f17cd1801c03deb3a161e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ef716d291f23ec0c8d64cc9b247f1fb3b09b8a680aa4eb3350303c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f87845a6a84ba2bf510ca062378da154136dc72252baa94bd5d0b5e88ab80bcc36\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fc4bdf098d5abd85bd86f5999bc013e70b5069e193774cc7da9809ad54d0e4ea29c7eb4d3a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae31b2a8c7ca8b04bdd8c8079bd1914dca446bf295329af232b6bcb6080a65c97\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cbe30dde2c3092d19ea9c2651cc185c3647d4cf136feec5a595f8203ad3a58\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5a58b20f0cbfc5903d05c6c2a3f4f0e40e4ce8184e374342d671c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e03b7ff5b7c1b5c4fb4eeaa978ea6000ef11d05e4dd9168457cfad\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"687e542a56e9366b6b1ad6e750a98a01ac37718a2799c61f905c44df325fff4026\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"817e1ba13fd2e9c7f0932154c4ac678e211d466e2b5a6a55b354d86cf386d7fb66bba0b7cf\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8045d0d6243250311137d0edeb0dac5634de4440456df14451cd943e231abe7b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657f294365ab038e9ab3e72e178205d5a6eaad17a2ae127d30bf486b94971606\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a8fa15dc9533662e325f5d6484527f3dbeb2407615e11db405ca26\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"167cbe65e88c3b010ad01df797ae7fe5c36733f63c4fa2e487af13\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3a5d04b2fcaa9ac6ff7d9676fc89951add983be866cea25c52b583ae135e20652c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"75b8a409db72b40af1a26396a6b9761f07ee44f42a58c0e0f44b2ea7f9d5db47b6b2b1fe4b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0ae73d50044a82ea16a5945a4ad099ebe01c303a79d5397bbc9855ccd68c8167\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65648c80b52083f1f578bd7657c8dab5f9437d9fe022d78c84ecf3b5afcabd37\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e1742ec2d8164cc6615b4aac6485b9d5df93610d3224f486cc1212\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"62dfb4602461357eb9b2a6117bcb1aa5544963247be86b359a14b8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"682ea0b9f20482831db2a56d8ae7c952b953cccb2e4dd2a764d79d3128c28d7e81\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9829ad2743221a29592b427b366f876f7baf9da83c3b7fffc83208612edae6070592daa1b6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af60a8ed6dbe122560bccf1f9fc109e5938be36f9268dd44c9de94eddd4660302\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6597388e17542f4dd144ab02bcdf73e3613d0069f05da66a2961c93971c0b15a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6b18cff87f562457f62afd13562cbb83d46c536bb4ca9e5645f686\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d538d1d2aabba0021aeaf01082a4df5c2a221036ad03305ba3042e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ec3c66d048e5335781fc437d576f1dd7ba0ea6fa382cbfe826f637ee47065bd6bc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2a80d1fbe276030f3f562e7e3b0f16d2f1a39d11fdab8c4e70c33dab7718d2bcac95cd032e\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440177015efc1fe7a37c629af7120a96274e6ab7afcc9261901d0e09ae32a5bb96\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b274d3429adc47ca093ba63ef90f8da89fda108db471dccfa4894aa7b00003\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"966b05bc69ec01b8454d3160a214e6f24a3d884eb31ec2408af63f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0ad887fba4f611bbb4afe44ba3556b8164332ca7d5934634d63d80\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"012b28ae646ae7830e2c5472cb023eab071c1db3d8413ec69b513b83832f974c2d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bb3e6a48160d9c5971d37f975727294e0d868342db31832e54d07191ab0ca3c3703b5ed3d9\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443dc7ac83f109398a11fb7390e6683d53b326b6456f28638ffe86dee5f38bb771\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843014594ddf297e92b7927aa591f545ccec50efae8bc7b85aef1a104f7630cf8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"44b1bb44e215cf03f8ae9b92df8a3dd06fe864f22c51f8ad9871a1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"891391acbe76f40fa5b008aa5c9eb3290e124b30efad5671eede5a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0ef4cb13f5fd2aad8c3e2e0f51af5aaf0d1e635925705d0026cad4c7c90ce989cf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2e61dab18314f9ece736ac49436f0a36deb483d9262c5f9e7aa46e993629b7f404ef33eb56\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944266a5f53784aa3becb0f7485c2759c328937867a4cbaafef07422b0725e098be\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843008aeea5d76d6abcbab87a18502c8a8352d9933ac11e2a7d228038d721e31e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5f92113edf78c3e56e6d67201f5f9e0c8f2930c3e1ffb64ede0358\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"30ebbd9cdcef7f40d99c8cd11e880dac28f5c9e5032c1059b3b56a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b011620dc31f88abd1788db50912952fe45da56e9d0907ab2cbce5f609b58b1cf2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a0661971e9047b28a815c7b1f62fefb471e4d34bc2a5b48149e7f80c3772b8e4aae8b44baa\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f79a1d4b21fc3ea4a0c87213b8b4f0599d758682c26a3ae5e09195a3e742bc74\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e20b1bf85731f75d7e21b5d54baaa66341de4292c3d42571c1bd7e7f1abe38\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"25bfaa58833b07cdd6af7c07f2c51daac681a8ac0a02dd373259bd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ef586cff556dec8ef0053871ff0d4bf3f2c72e842487ec6d1da69f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3265d50513550a354425d0218ba1e5f25d4994ce8990e6964398dba5982dbcbd85\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f11c02d5c3223d7b9281b52e1b134962b91bc3bfbd1646354dab9fc19b66bf6c1e0a6f431e\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a29f58a4d146ac26d3ff330088351546f9f7b68885e7a425d974ac66f22db9019\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6587e6461337c86b11dda14340fde05fc9ab9759b4119f3ae25ec009468efee5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d7390bafdbfa1dd5e0ab3be2c53a5a25973439db881ded9ea87f6d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"242096934d7476d35f01d6451efb16d3676d233dfc4562c86dbe53\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"01a01c52cc55d2610579c898d621999db420d61ec2d281b5bd6698dbefafee2b51\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"04f182e7d18d89f98394a2c392e71b8abca82cefd8fa17baa8a21a81e8605850be0c1b722d\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7f8e83e83f34885a0c0519256c9c279d5d3c0b925d29f558fe48b31c49961384\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b25974494a3903f47f74ef4be731b9e21421e199fb2e65b1502ad5cfd57537\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cf600476a3aa1a5ba2f465ce35a3c5962ab4d5a46628c5abe7c32b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c4dc1af2617f47628ea828c8f74122d6a7d1b7a38ba7a468d06e96\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"93d528a175d2d3e19194b5ca5ea6682f029679b9c6e9b6265dbc3f6763172b066b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3361ddc11e32e90e788b3415d9ba731e4cae5a3ec8ffc9d0b612c22dc0dbb44a01a35eeeb2\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac4b2915120135d1a053a6218e5529e5fd20bb62bc8085c18f9d779512cdeb7eb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655c891d5e676b1830d0ff635469eb5a291f43c938c2435e010d334332d02554\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0b011f5bdb29a7c0c20f6fe71f3731238dd576aa466e5bc5d95b45\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"43a1980c0e9b2596520d44f7740b886efb2c533736100b4c6da7c4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b210ef402d1666cbce951b65cca3b6d0816e22c49056e3566216dbe71ae670faa0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f5150c5211c646cb515a62456b90c11dc898fe4e9d752c8481fc84ea5a30c8daafb5f9eec2\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a67469ece170b9e6581b109147ebe0cfed852d9041570f542084511ca451b801a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6539a1ee1aec0b7a8264945632e023549f8e14ce5cb3f15ec3d88a597891eea0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0a2a8b37cbad5e64b23bc9fa07f59c43db29048600b5024dc84b73\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b07c7ba3b8e3acf6bc0723987aea86f623d19d8d82af864f74aa01\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"28455b3d950f08cb2cfbfd3d94d54bbccbe423b8d74b8b14d7df0152a2a0dad75e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e2e40df583d49fc3ac5e7a9e7653093062a3b832c1417153d88e2838ba5c0dcc11b4b95c2a\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448564738a841228e693caeec4c497a8bd562231c3e51a1f03c4fd45dfe3a67870\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b94504c4d83506f5dd2568b68490eba8ed6f9cf2cca194a273c56d7ae3c558\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6a5c10a201d4e3a08f79f64949e55731f774913a4d949bda3fcebf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4e8a1bf06926fdd74e2f516e2b0c11cc1dc3387fadeb75389d4342\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c1df7194ca8ea51d4dd99059bc9b90288112d47237d8481f1773fb26a31629a05c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3edba4feaf590ee88dd8f5fba51db4bee651cf41afd410fe476c524ac9b1db24252fc55ff8\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447068e6943c2417e1635fd81a57b705e4aae2b90e4756df032d4a8921b7d14c00\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884348845ac8d14035060eb85b324208e1753299d00cf5d1d338033f85ef4772ff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"59a38a7b36acb1262f3eca5e9f4451f75421187208a6a124bd80b7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"66f10116608ea56d3333c49f277e90a6aeaa0f8368e750a21809e9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"15658853f385f3ae27877c86e0a7e5d6bd3a184f6dd72a8f6c1addc7902c9bca29\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"535e0b3daf5f3c293043c0749b8566b695f8bf64ff558c6e3f8886fe9ba8bb1ca55e2af46c\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448268c145c90cbb2062a3123bc75c4a641271483bf41e4cb1e18abf018ef3a620\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430b3dc39463258eca343deec6e7b6ce063f4bfbf485a27c3da92d4ddbbb10fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6049661ded916ce3feb0e86d514238ab3679bece2d63777d5a337e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ffd7984f726bd14b00af7579318f305be9fe1840aa2e38ae120db3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2c3ccd9a85e772f07df9428e30297d96c4f27a990a242d7453e2948feff915852a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d53e9dba5b4490dfa7e1a52002f6812e9d7de5be06cf62fe0c1286182fd41b924660aa9ed0\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944235b7cf4d863cfaeb2101fec1a10a9d92b9a42e4387a62e1b1fd7ea0350b070f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e44f8a9ef3ac9c9c82e7217f5f387583d7ed37bc357d15fae6b52aa6c36823\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"db58238704498d912cb53710ffada26c7a467ab9c432817656964f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c7e2a43c2ffd4fd53cd85b6f16e91b5496298c5d6ce6f482775954\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"770cf4828b18e397e1db1227fb74edfb75218e49cd4749c74674b6a7db8caab96e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d4998b074f906501520e5684f1d62e5dc2cafedc7fb5ad265747226302c44717c92692b8b6\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a80d03fcac7e3818d355846017b38b37edb20f2fa3f39203deea3f65fb1e46d6d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656336f616d2922f336e2bc4b83706c0aa9375f54747b155986f0f28c3b3d183\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8d70329dcd69e8b6436fbc39c21d53797b7b829c9a1a7fb4f5fb18\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"69cbf13918ef28f3e606f74f7d21b0a95ffccb7b08e16f838e3db3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c91570ac3863342e0d2acacc7eed0f53436004cde16d1a434ae227fa7fcd40408d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"222a1b4b5a64882ed908d43507ebaff1d81bc5a8cd869af51b3b0817d7242540ecae8a6ff2\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac1c15087af22c7e287ade62078c74c2448f77c9aca1ffa155490654086d15277\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c687e973afc39f218459f922e0b14453bb31f28f4e800d8c13cfd90e68a493\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"44f9bf2fd7d0d69862814035384cbd4bf0b7ab133e254ec9864c9c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c6e6ba9daefee7198d84faaac0c40a1b5bd10546974db1c2454b04\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2a65a19346bf5aaa1286f5ea8327d43e6430b9d6f7a9ea665718827f763a6adf90\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"adc6246a27dccdcaa19ac1ceaf3e093f3cb0d626d30953b865d08fed3313335b96733f1b8f\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1c1820e94b1a471672fbe239aa916dd48b17b60892e01de3ed9cae7874af2f78\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f0d44281a027c8db983c61f3aca37aab2e80a629691c379b88e4d3fb403ed6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98bf30d06a3d9fe75dd3d95e6166601d74dc469cc12d2ce25c34dc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3b54e18a09bb6e4fe476fc7c98816932521b02419cfcb5b719cfdb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f330e511276308d03f8f5f35a4d63e13f385437de76324dff4a485c05b14f5a368\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5ae78f45e5ff13e630674a75973a7cb61796bf9667ec731535a93229811ad4b2cb52ee11b3\"\n}\n]\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49afa95796c2f6c62f6b51d95f3a5e7e8b9321245f1e1e93fbf99fa31fcea681ded\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ebf00aaf79f66c1aef6ca81819d3ca650aa1154879443b4d49f1a6ed5d06ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"109b96082130b3e6ee3450edb618879edb627742eaca1ae16def49\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0a0bbc5f74d7c4096de2deefddb0beb967ec15f1daf0025575bf38\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7ecd6bb90b45821cd4b2d9822079aa36c0c11360d73809d780bff7945e1bd76dc2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8967de74a0078c2467e8557174b91dec268eac9ce60445cfee1d25539e8d274f737d4469f4\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794476415e6b108160224917ad037b998b0bfb71a5a32bb7acac81588e3f3ca18d66\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884397351b79eef465dee0bfdb87f8c2e3d212cd33fc16a1023f806cbf436eae4a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d4ebb8150698b76ac7f7a5dd7268d450024b2bce014ac845a195f7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"49af03449d096fb569a1e5f1aa4b49ddf26558265322b878404de3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6bce60abb55143de938605c2e0b4655ebecfe048f4c1a4921577dbbbc797c46de4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5064c2b7fe5c0ac0c3f28c8420336a4d2bf2680c42705fae5e85c45dff7379e875284f1253\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794434533955bfe7b5d59ba6eaff5f1f7bccab7ee4e14cafaca8d71bfb3f84170dc9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884394ddebd3a529b19f944de6aeea88d4fc224cbaa7e845b90618ed6a2ac82def\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4c4cf594cc431ce55b72265132ca13411302fc08eba9322696957f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"baf565edc19d1ec5d2b44fb08f3cadfdae00dea806f7d37a6875f4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8d2aa6b98b704b5c79e6126e734b91d50b25ac0e6985f8aa2c5f9648c8ddbf449d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a59655aeda1c0494917fd3f4b7ef632eee022d866ea4df491067729f4bb2539f1e1d2333ee\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444d4e3ae04c194811e88289fd3d9096eafe0dd53effcceab593b6710ea5877157\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438d976349cbe39cad4348dfc1069a74327c040b5b5bb2ffaf5b837dd4b4f2db\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e1a1fa044bbbdce77e1b17e35ce874c09775f54f17ab32421fecd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fd79c37064d53fc8ce38839cf4fdb4661e5d82204cc8761835263e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5864ca494fe32188f90eda4442910ca2f0ac6c9d947590b858af25ba4730169349\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e33837984d2cc6395c0e28c5983df7a92d67e8ae68c3d86fa76e0666181d4677d2103f3155\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444ce9375e8af156de99b0cd1a70097ba9eca5e6a3cd3d50d607f6d6e0f513ffeb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b5121a4b6b343e8837f27dcab1158d3f270889be64e254af8cc8b56c66ccc1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8a90a025ae0476376884b0471e9a110334eadb1f9b0a4b72ff1357\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2fd5652da35306bf7836313c7e0790395ee3749a279a940ed8015b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"446439432f8f8b973dddd1fd839ac8fe0909e318f0adbb1f44cdffe8b399f58980\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"17c49d81848c75468ea268c39e1b1bd49e2bcf1e1b6f39c6d569780689e9b5a154540ea598\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49adf16dfe9c71d6817a4bc11f79fbd2c43daf18c87c8d9b0d8ca2f1048d8d6ba26\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659e534c8b56b960d89c7f408b6d41bc9da36406b01752ec59312e3c01ad9995\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3f9a7fbc249a5a3b99531a8427786fd543b24f908ec5ff8b9b06c0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1e0f1fc0574ed3b3454b3998519a0832a9b04d3412f0a55f3f3d11\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8fd7b09118f4d2c714ccf3b620e5d1286a6e931ba491a88aebe2fe61a86c8e22d6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9602b4b10395da57ccaea6d742ba27b1c8018d11abfb65af761f733e962954b28a217fe4de\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a62790b07e6739f602e0e26e43c2c5f2c8b15fc5217765c02df0212b41cb0916d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655f24e6b17c848938fa30694a7c8769d6c372ca9677048cab9ef510f764c0ee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d51ccad9e61a3e13e6ec0bb560dd90b0c6fcebed818a23daf30690\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"89dec0e3b896183dc886d8e057e2a35198bd9328ccef25c17ffa43\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5cc786bda7606b099f5e99480dcbe96e7d0641317152e836f2293a265d045b6e02\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c0e0a0ad717ab941e16b9557189c356d2fa21c754e6c4362190f91f18187e1f974b9fc6994\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a63a79a7003990bd697e01e8e3d56897a38bc77ac364d1f1ae5df2c3ec9c83a0d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d486951522b3b16fcac128c745dfd419f66629886828a1539b233ad6c46b36\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0228c68c3ca2a21c82dc0136b5674cafd6a06bf4c0853d5672f128\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"01be08615a89b0ae1d038524bf5625dc86b22f533a3279d5969a52\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6939aed1cf002c7b124a7add0db1cd9a43b2969a597d048caa76eacb1be2fc8788\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f1c947e68d7a26f849d47cd388ad4d603678b7ec8a1fdf5298166a2a4b3a4c6af46d547dc2\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a07b9d6dda645bdedfdaf35ea54ad797dcd94219c1cc93a2cc7357cd39371cf72\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e349497684f19e9872b4ccdc05cd09b70f5fc2249983807c8798ffed48d363\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"35d5df7d91b5afac89ead05eced03b7fd848fe27e1a14770eb1ff4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a7fc7c372c79ce8bdcc63d99ecbe41178efa672b6b10fcf7a5916f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47808667c316d23d4f7704175d40ba6ac37f49653a2b2cbe1c44da54a9c4a6d91b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b6644d0915fd1f74ea61f68e58f36a5a17d87af3e91325736649bb66245c1f48a49b8be90\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794410b921befa0a9e2921ef6e12281f2514d513dfd67c5a1937672479b68369edce\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843965ebe55c7038c23445ef86dd0782e77d3038ca6dee792a5c7f27b748331c4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"579556dfd1f4ece37f6090aac77e063b8f91392f39278b443d66a9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"00e854a3846bf274673e7232c5235c8f3cf5ffc6cfa076abbeed1e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fcc9f1be0dcfd2ddbc9f545dc1fa43ee44231a5dbd840b7492bf0d3359086a2f95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4d7ba816de3c4f0e26db44fbf8de5de8d68478d943d134728a58061e077de46da96d217382\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794434394cb70f0e29f91cbe9180b3b95659c053ed142ce7c281424f022b5711d8c0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843da007fe8635db14538a891d20ca922aa84a5f3f1c319056a9f6647b50885ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"43116d98bbdd3df655b961954763a81a4a1d52c3271e76dc0b0dd6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1465ee9bf83f274b8adfa72168a2cdfa448de3de09a560b853abef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e431151bbee70fe4ec7b2464c3c41a710038ef0d4804a6519ba18fa145c8d33b3f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"94dccdf362d906eb4e133afa9f9d269975e56313904611ce2de50b559454e094ddb4fa3897\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f499d222d4c24f7ed6be2b49812231c9e34c94646f76e5f44de19a3a7374ca08\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843450fd6e386b608b49764df56ef4020cb5f6f718edae0005ebf6402b54927a1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cc1707f797a3cde23f4b9a0629459a1cefc6563f76fc26ae35d8c8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7d2eea17f36034c3ae71e0a3f4bbddc7e1dfaaff87b3ec9b28dd0c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"230e0dc616bb56c4b2e3fe058ca2ac53b760e7f2e6430a43263a1eb446022b41b5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6221f95cabe2c49a07019c4d4c8426f54b7b03cd46605073c7e426ccd9a3b64183b445d422\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fe7642cb901d9b76928622d91087dd1b70a752a433249d548f7e1f60bc09ed9e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884340fea0088fc44083188128c3fb7c4c9a9b401bed4b4d01f931b66cb24d5242\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"704235ae596d455afcd3187a253f5aae3ba761c3cfbc884869e290\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"72afb7393724b4f31a17890ef5795d1cbf9e90d2e8d8d82f2420c7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"246ce51a23016e67568600a9129eedc8f4de1273a93577c162092cfdeedbe492c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"58fb231c6a172a711e5b920364c3d23c0d90e230a31340eb62f8d58a4062a6f64d4c997340\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49abd2cf3b905b2ddd9cac1f92c9d6297c152b73d9216c65f753146639142ee2994\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6546430f387c086d0515905edfe486aa23354a44b718a69f96cca13eab835df0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4633802956ccd4dcd03127986ef4814e897b4540c6a435fbbb8f12\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d83e2a0e08cba11ed8065677e8dd7341627a745aa312dde7e9c9a7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"eeae589f1cd159218d2a038d96542751509568a10de98523121e6eeb0fcfbd05ff\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"88996cfa25482a85ffb6b50c8863e8cfcb81ebf33677c6ce5691db22b17cad310ce4495b96\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a81078bbb45617254b1c47b84df1a93fd669141ff20e4a0a33d53dadc78e16fd5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656d2c758445ac561f22f5c530ed466cada817f2c6d7f9d98318515b688fa6de\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2be99202f8be32fbcbbff8d6557efbf37b889361788fa920cc76f0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6dac6481c3c3994fc18d2cdc6415d0e8d51f321560a4ac94cda420\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ad2d8c190b0ea9e6800280eeea55df9b05b8d0a959bab77d0a54980e41ca8eb2f7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f4b262e3c746062601ed58337175207e9ac0c98fbad115b0f6c9b593d7a7d44f742cb9b8d2\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3832945a3b7f01c007b82f2bdd05485a34a805adb9d3ca04a5385389f0e6b30b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e76efd58b87e1a73db516cb4cdc7010fa5396a71bbad06d52c06ac212b5480\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1de87f78600667e953f24f2bd0ebf5ba88d5d86700edf0a3aba9a0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8d9ed773029a3ef082f65f5efab07f596c9e8264ea57424cd4267d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a6fd1b8f15ef318e6e764722373e0ac2be1e9042500217a5554783e2253bc82481\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6c380f8f1fb674bcc6bcecbf562ece9208be9aade4fb018d4c4318326176994c575216e3dd\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab653ff4555586da3b7e60ffb828b1ce327f8475afd4c148af08203a08bfd6960\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656dfc7c700533a6638060a930709e6c6e7f33646b9d713b6404f850b45e01aa\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c8ed929ac8bded941a45ee4b8daa13f01bfa62c80f76d79d852bac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9116bbcfb1159490e4a993e0dce2a0fa41bf0259c0793c75c84b4e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c6b9ba66661545e65c5948a5cee6812512e258a2046e176e354a2d1bf1d8270f01\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6f4692e549ac306a035e71a2c401292f2408af8b8093041af10e608be77e1c757d6ad76ffe\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430da8899553a0e2d18bb3bcdf632634e25dd60e400ecc50c371de2cd83257c7636c5913e463b6bd3f3efe3eb1c9e92f10dde5d45c312e42ff98cfadd9f9e92b01ec7604e5d2150eef5db0aed53ab203\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"deefd230bea16077f1ceecaad5e4284c3bf2c564e20f694a61b9d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6bfa60de93cf432f460dcc86cf66716c22ffb502125832433808c0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9c9608d8fc3ef689ae393775e8bb60c16f28ab12ff5c94015961e54addb3d64983\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2490983755cc8a904f08a5876acb67db6821de003421b2f72f9f2389b21105ed4d43c4c799\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d7033a16d017752931eda232f53de376186ee0789814f8602f8846caed931f8b37a56e1332567e55be4ce8d6dae2d01cbca863ca486278a09b3fc8c31c483f257c05eb929eb7f996a03873bd816bf4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ca2b559d543393f35f58c3aeeb5f63f2175d93c64221b16ef2c8eb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7031c94c6b57ceb356700623c3ac019480b1c0c81c23c07806b08b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d1bc169936cf4d4e983d7605506abc57b0079e8c0d62cb3ac1d2097a79675bc33d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bf377483f96ef5a77c8cd85524ee8f246c4e30d8c85a406f5a2bddd9ce86c1590cd334af2c\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431b7ab475ba0987fba04b749be49e6b43fe538cfca25a1c591a7ed09f19c9b9e7d042761a2fd2762cf2cb2062ce2c61253452b8383eb2ddc9ba2237b96d97b4e866ba73f55165a736ad03e68594ce25\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5ab8adddb31ab4f1086c55c3f3ed053f4d78eca7aaf7ba09d486f8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f3bbada5c0a4cd615bed55ee18046ad55efc4f30d318c57b4941e1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c1372cf03d2727f6b74f656b587735109ebb6159434a40a65e2e6095c12db5f01c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"de040777d38c7bf60c4b8c0ca730a9526ff067db990848ac33e9e9970b01efdf00bab518d0\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fdaf85de47075ed5e21615917ab0102033d6d1386f48638b4a85564f1241fc9724442a45c3a4593c2807c7535264cb7c9e9cb8f278497efc16ced9b2105e10b89323f13d60f847508a32c040a993a5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bbedcc446e8aea8a083113d1b32a290ba453cbdb7f18b3cbdc9e84\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a1a6f9f34b07e415516191df57e5dbc7c7e520e59077cf2b8bcd5f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b570f24ec64f2f1edc98a361c1e67e8df01e0c2267a59481ad41bb4ad0cbac11de\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4492601a1fde255be23a84a895cf8581ede55d853e1e9e9a98930b8119b117dc6442d86252\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659f08896843436600389d57e0085fa46eb6625b6214780a95c0d70b62f470679c3111694e6e7663659e70420c5f729587386bcc4bb339fa665805c01d40dcd73105c5f563bd89bf8f4493099c64a1b0c3507a0a1e376fab84e214faccede1adfcc99ffa11b48d21\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"34241d94b732ce9842e5385c5e3bb5bb53e6219bc0724d6c2c2193\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"532490eabe28d0e275e732f55d58399b2082e73febc4dac586da25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"81fd8a8936837253b1ce3613443c72f7dec8436f7d9c04e0e32b43dba2ffbd0daa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"117d82419579aa62e9720045476fd0994b9c303806006aca3877f5991bb65a0b5a486da3a2\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ec11be4037c7220f2e19cb4fb1af370779fe46dd058153f17b8c41a508c86b68fc81c657675728e33b8531cdbb6f70fc151b340873638849318a8751a6412bd79cff53658df724f42907a46cf23e4d1bb8349a2a7b57bbfdd87c5a18d2b4e3290533637ed5a32e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8f45ac42ad4c79ed9090319361c1a3e407886536ffb765b736c368\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"142a945d779df890329622124550254c9f1dcc078bf22b99f7ff7d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f7a3a141a7cd7deb7f30b2063b85abcd6390c8fe9946361f42a4356bae4c884140\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"100fcfcf35496d72ab5aa66316531bf23c8f527e58703fb66d9e539e87a8d42446672992b2\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65449ea676ffc9826f62af7be416c13370cdeec1791b8935b25777194f37de93362458212186ae9578293639e8c708e1326864d1b2e1c670a7f3942202cdac0b14167f0867f1b0fdb2244d799a25a89f2fd6ee73f7fb7f3d965482853cb816478e227a445c2fd6de\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6f5831cd9bc1bad75faa172226de396d0207b9e09010541c7b2b35\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8c333a9d151a332cfa50b75225c14322a12fff197a74a59611bcef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"de8669b45f41348c684a92fb9da62b5640c37c836936b5dbe85f1d69f2c7b253cf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"db5cb9ef11e91d995795233e217b14153835116c80b193360a50c79a2ef6a5ef86ccfe23c2\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653ad17f36c685b1f7d4c00e9bc11c2d1b94167278fe7a88b2f725003828b7a4b4a0eea36c0a9f54203fffc43d07183f945930eca10dc34d39c9262cdcbd2d6421c25ba8c098bd863154904e47058c45b89a1c5dc00216b7c9036e9a29010b6366e5565ac0c12f47\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aee184ec41ca0dcfe7624b7da926f30f64b689619ff21eb3dd2911\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1ffda1ab55d7ffc924b4e1739aceaec802c49e8e9070c4155d3f1f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f91e52d8903843b1b03588bcdf9d7eb25529369fb7f36959cd6238863d2238c7cc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8a4a501e9204d1515708b6f0c1d23133564daecccb47c9a5770bb9cc018937a4fab312ba9f\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435783d9758cb7e00c45a7d00ddc333aae968443c64f650b54a2ea7e0c1b67c27553968441fb058c1e460d676214dfbca9a3d5a445439da611c7a5697b6e6d488332952854c05202c76277d5e02b374d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"019b4087a1fa140e05486824cbdf79ef1744271ffd2124feb93d97\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c8f304c719ab66533a42878b47b23dc8dfc839b962c675ef2bd383\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e9c0a2537d92e85b88fe153d731f7590b8d112e75e465aeaf91339d68392ed7fcb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1a882961b52d92829830cfa356571bc32efb9075c43c7e87940464c939755bc9637253e7e7\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439001b4c268d11b6a164855a0256f6364413a028a16eec989e037e8b4d45517cffbe267a0123b7ebb4ebf15047b9682cab57ff9465d313ac72ad66cc8c5e52c304a5ae2c4b4e2b107a82a9cb6a3b4ce\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0b31b958cd1c1d7e1b2d472fe434096491292e3ef25cb6980db346\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2c78876993fd5cefb2cccf9340ed233b81a9d5dc1a5eb0cf5d07e4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"372756557590d30cb5c0b281763aaedfa0e7cc7d8b51ed399f73bc95560ad94ff4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6639ead7252a0a27b6659ff524d733f9c115d221611c959acf8e113f23e407a6f10c6b55f2\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884367661be9886996e90a56ca596d4b0e6f22fe29d32dba64362fcc576ab67d276717e2bd7e47071b2b9d5f8ebfc7357e12fdd459b5009b08612bd4fee2baf9e29255289699e0a7c7055592a422e138b5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"edbaa07da866568883780d27a7f69837e916987f7a6a08042d7cd6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"15a23f17708ca26fbccd33d2da5470fbf401226112fc19a5e7463c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"739c7def45af2d7e2a9441e87afc106aa05165b13f5e9ae865083a99b2cdeca147\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"72803d92737327693147757cc6529d6b27baaddcabf1166cdc3e3ce7f1c9f716775bb9cec0\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b0e299ae6df15598050390d1c91373e4e4cb4ef114daf5c59b370c3a3ccbf9721d69aebf36d53b068d9553c1b526493968d9dcb729cd61a318b9caf39804c8d6110ac0757573128a2d1986f43cc6c1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57c1063e3cf724005e2132d61571e675965cb3104fdf8a15d0e41e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a9dfa65ee518240ac1754fa813afd40b25059add8dcc8d391857c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"12c8e46abd0c6d72dd47e353f5baaf582415347101fec994e9e0e79f7400807b27\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"175bde09cd7b995b7d32565566d4329bc23ea368663fe5ffbb63375cc8dba7374d047f1b15\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658a5a1e15fb5641d67640ef7f8ef39600449256a8c577fa61eaa3c5cdd35f008995cdfd25f906494175801ce4c01ede4d7b23fb2a99f32a704a4ebb0454c47337fab988977130405393072c798e2a1ac72a897cbddcf2e216f2a8756977d348290dd202eaa1ac22\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"26820b91745e56977fdf5c399f6a6c8a78853d0159e5eb2c172e31\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"02196f7c426a2dcbeb87ca5b14320409cf8eb334120b702cfd95db\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"460c0348377c0943de684b854d2afad5e4faf4f184b94b03226a68d59d62ce9595\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a00dd2cca81f975f3b04f9044918b061f714286967a730b6567aa2ba6510a69535b9f154d3\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65566d63cff46a2bcf74e8583094ba8482e7c894854cc54cfc723303b2883329ee3931827ce07bf5271197e16bda2157cfeffd363c6a991461dcae708c0488a3bcef63339bbc22ad5a5fae021401ab1a9ec500d299fef8a20e0d182658efba2991ed411fb87d712e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3648ba18ba21230f727ad52068984bf88aaa5172be0643067aa855\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c9bbee6779e0005a8adc86e62705faeda68a66e1631eece3d58ff7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7c7d42138b563c6937a135a339bef04e416444061b5eefa22e316f57a83214b727\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e41d08770130bcd4c8da3130685e7c3e0dfda93a17b82c1ded00c73eeeaeef57d2c23ae58c\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f13559f11758298f7d24d65a87966cb68c4697d1a11c74c7727b3a7b2f1f58eba43b326ce6b5a0ba343843be4724fcf46ebdb27c995a649c527a31fe2e2e066c5ae0d458bbe2cbb4fdd4b03eaa168f5ed3f14cb7f4049e457e3427bc8e2bcdc54fe46fbd71836b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"da1c6a235341318242275f3026fd98174cb89d43911c2247ebec27\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"42dae0f87f4dcaf82834aaa553f6479609c28b6fd5bd695d648429\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a864f80e2b111c5475e62235f80a030fcf50e2779e86160550fc249b370f5f50e7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"93af354fb85861b5de053b8023c4473e53b7318f3376f5268020649895f28fc5554a9e2778\"\n}\n]\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e71186467ee6b768ca1d22b76cfc6ec204ba740d23fc1ef563ea091220d90f10e834baa7a5ba046fbb8e27e39bcad73dca33fb52a2afbb58d47341b7077be3eefd85414e9b12d166fb82792d8003be6eeb3a4c6b1c64a3659ff5741f979177e2366a62debab921\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a7f5e026f3a258ab4f571569e5f6ac9f0d79897c069135b78d6940\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a8a00720eebbf057e0397ca0f473f70cf5aad433e129b23ec3a718\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"89844ee5e5e72ca903c54850d3a7e81d7f5c2e8d8cbf7465c6897230112fe43a1b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c5194503dc56b762ba6e8994e6b4d1dabb7b1ffb1fe3997a952200fffb3e84ff799514498d\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794444094c4ea59fe46133e70c52e348825c7af421845c979c2e24511704128cb495\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431fc2289030f2b0793ae525e89c38e4ee7b06ac5307efdf8cdd9ec4f9852ec039891d038e818f69a41ef276f95ced5186d397fd6d4d3ad6cb261fcd978418f2720b44eb7335effe27f2da21463f0639\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2869bc177fa2e68cfbbd5824c10bcb718552886c0cfdbe2d69aae5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"791c53cc5c0084cdb541920df46dd9d634fc164c69a39b3940ebe7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c6659d27259001b65c271614c93e1f7081e8ab1c2315946396794a04585b922637\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dd9506983b83ffc12c5144cf0b3c847c5e26a61ec9f580e845a0b541266b2181428d7691d8\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794451e62f25e385cb884d810b9782afb1fa66a02e681fbf3e315fb27dd861f6a9df\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432c5b98bddad8f1a6a60fbc967b90eabd7085eb59f0a27866f1104ed2772e494b50376193a2a3e2a007b46d1f888d64a06cf5fd8eebf14ab55b10aab9f131dce0091c98653df78a6c336e6013016b18\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0d8dba2a4d6160aa415146d7e9b79a13fd678a9a7e1b28c48b0f97\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0cde408e79c858bd7af5010f4e5d54fcebf0dfd27a24e65519759f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fe11da13f6424f5c2001211cf88a15e82fefe35ba4bae54580cae0205511c02536\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ff62b857f484194129b9719f5ae815abf39632e835033c359f0e4b668b1c41ea80949265e8\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ebdf0b38a2e794ecf475bc4921db79e218af28a9b5fb96d1c0ccc318ff7ca21f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430aa1f7e77299b88a852ca0201678c11ef8303c1ead5ba5616038862cc65205317ec9deead27fcbc1639e2dd34265ef8141fc321ac6dc512cf2c26c609b74bdf05f97fac5d09a2efe9412a376d521a1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"588cf7b9fa1951692393c3f0fbcfde5a3d11be7aca257acdab9f8c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dfb8907fb0b457d374cfd72880b9b9415d2f6732d3fb3bb95828da\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e8c1e753f940aaa0b5b385d2955ab0c331cb15d01e1bb1ec426fbe36c1d6b91e14\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e4fd35adb3a05a873ad372993715640c46bf484ce75eaf46bd732cae8513319f4a843bb7e1\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944483c3150f0bcd529dd0fb865055236c5da4b18bbc9cb56f3bc2b33ecff2ae76f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431c1a99ee0dae031cf52cd1357e3377ba15f3aa1928fcdb33b1cfe3d75d433735c155091cb03bcd64c6efb01005fed18bf0980a5505b23e0962b14f2d6a6743182446f65be764b2353fc9b517bd5627\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"26078488ff517ad80c9a2bf424f410cb3fbea58973710972b2f156\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dd9da15a8db588339d202fe32a3b3185ac9fb81f7acde0c6e4be18\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3bdd80b764b2985db3f50f001677610569e55134d1aa7b261b9a6bf481eadc0390\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1b36a9b0c3ded133b98b3e2e424efc8733512c78975d5b3676b3b20e02fd63ef20bc3454a5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab5813b6b5983ea40c17240fce3b1d4131ad3f68e7150c4256e2757eb9ac4656c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6587a9b2c251f08031325da53326d725c11fc6110d2cf8916e0cf427773f1519505c45ecd03046eea07ca5e166b4f04a33102253554df9fe5992406047f6166948123a5c9ebb6842d966ea69d02fc4c847aff3b93064f68783676b0e7803a7c6a3c6b268bc60fa7f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fdfc24c6d2c99bda7749a79b0ed746fd5fff53ec6f33ee51391839\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7c48b6528e3f756cd8180789c616b63fab2a51c5e3fd7f47b0ed18\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c9b955167bee4f25f11bfe6a58d41f3bb672f0939b1b90c6c8f74271449e4f7b82\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b6448c936c2a4d80ebda98016c05c45924396e60476eafadb8ef2f83845613768f68c51026\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8fc986b04c44a86245e33cfc823808e78b8ac07f6b0fbdb817b28f9eb5520137\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650727e7d3e304280233d93ece4a4f88fe12b33108b31610e1385eee149e39655b3bbd7bab369d6d444ff8d0747683179d0cb0a293883f3531854b4a2e119a6a79e028925ab02d3ec7224bc521fcd0324de8191f6713845197364aff1be4b0fd21d0b39c0fd9b62e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"05b94b055c5d2b74758c2c5d1b8635e0a01710c28968f83fcf7e69\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6eeb04a00a71ff5a6642c2f75114e1226f6138902da0e2f37d7a9b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1ea09b2e5207c17e8fb205aa0b5631b6e4a49544bb96e5173586cb25b819473555\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0ff610dc0e070ded046d52e742f42ff2e9af7257100c80713eb9ba0cbac50eef0bbaabcfd6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1f8257393787e5e065b8a000c0bfd28a498b8401cfb5dbd3e89a233a7924001f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6541c36c2701f0f8970db6f5e24b127bf39560c974fb8e1c6f41a4122a0f748d63d15ae72168efc82f241df9a445e7559e712e1fcba39b81fb8474d473d5641e9f1fb664cf9c72869a7df149485d5a15d059863d8d3c1901d0ccf507fa89a3ed5dc27d8dfa23e4a5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6c188d12d839f59632efa8b894836f3a5393f69d647ec197865f28\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e2be248c5a36916de90f575077b37abdd1652de893ae11e7394094\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2f52022e3445090007cbe522aab398529fc83a937920b7d624dac007eaa9958072\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"366a5f4c26c4f1fe83961d6d5d4f4ea83a32851bc4f1688bd6a64157b1db70eb6ab77b59db\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9555aff1d8ef090856cd9619e2ef50f1be59540a06eb5075fc3cde030169f675\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f43735757285010119c29f762deeab1d4fc0d46c0670363dfc5a5d2984865251cf11234517b520ddd1540227c6169a902d7bdfe6cf4dc1ef0d756ff11db82ecfee204ea00eed50e052e9d3c471370bcaeca6f60bad719199dc0827290ecf78cccd1a61574e01f1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4421420cd8712c0bd2bc876456816112255148127c940130da23ae\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a94301168c0db69b9a2252c18ed4de46060bc7de380ca667f4ffd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3e9944d57bbd02f8406873d93cafa06d618b5a89f80bb104fbb84abe1d67381d60\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"30c768c988bd58dbd0bd8c36f8fb5667da2ce224451f930c5398b78ac19311cb7efb8ce05b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794477b45681bfbb44d466cf3042a089d8c2c377285ebaf920901df86c402632c6c8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431a5af2628a26355b5daf8c15828158eeb4e3e39f7131d6fdbd97e237c706653057ddc61bf31391299945daa253ce0803b880e2500e3fa8b27c5ce9fc798648055ff96653765bc389b79fe92c93c555\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d7492f5e63b47df4b114c66dc897ceb9347065a379d3ad4f9173f8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"884dbfb49383904a53e431f94dc9a866085b35511fe9eb181491bf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"14750eeceebf14bbf1f415715555078c6152e2c2cd1b2e30b92eb81eadb544cede\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"93128930ed7d67dcb1be7215ae530e1529b69711e95d9277dea18aafc7f9d55c5031ebf3bc\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445ba9835906f2a4494af395142ebde825e0ef0afa5568033c7ccb35ee7e90432e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430e43892f347d61a6d72b1852c862f7cc303949337a1d93bd40a4935e484d69d0dd2cf12494fe663c8095c7a28daff4407b2f4beddfb9f2f32fb18680aba7e0d1db7051db4031c021a33e16ef2e1388\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7d6e3b7ad62de8d20698cde2b5437ec20849a827101fa77eb5133d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"809172e74ae6c6cd774982fa41010c9e93ca5dbbc0f34aefb302d6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a5e2951249ece0a6fc64997f9398fcd003dbd68e846f8e65e0148c5cde322ec8a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cc0e5ac87a5965f9af7b9ff8b530f115f81c01fbc13e70cff679e0cf382d8a6a6d590a38d0\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794432841526c1fa5352669d837797576f7c204787a24adb5b4aa213d7a1c4496a54\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ac221c95ee26f0fbcb96445c39d02d269ae7e1b1770a17d9b0a680ba2885d0ed32c36d40638e63a6a2ca800bc0eef1c626d25e405e9d35a973a6e68b0674276e8c9a52d987a4817acde0679373136e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5f9d36b959c2001eb9b59071d6c374768c9eb1af3df6e32e373321\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d6b827c3254b83ece57430b3cbaf364f4bc6af22cf1d2f8598f8d4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cdcfd51b572e95d85ff57414309af6ba7a386defbfb4bc1b93bb8684c6edf2aa1e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d2e7de69331868ac62a8e2e6a905d406e3280e332daf4bc85340d5bc9367a53bcc39e79646\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447ebd375d9be8e39ddae52946dbcbf686a269a25fed9d0aa5698a8a8c26aa73a2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843411efa77762cf486c19fc31ccf880219861340edd08d44f2b400d65539d63da690d47bc058657554e3a4be567fa623f444f15dba7ca7e3e7a9c00c482943ac83e53e6643a933ecfb434012157ac80e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"93705383ab81bbade63a45e80cc869a9737d4808710dcfd162effb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f56f577570f929f68dd904de5b164a808c826ef9549d3d34443ce1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9816dc9f542a6836836f0690365fcdbb5299c4051c3230c48aaa4f752af6fc5a45\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb57994ee1d367742365a85f3ba4674bf1c97bc93974e192a7252d480c1daf06653302b139\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a09fc7e89590122d86cd3d2cf87e2681f61eb49b9d3aade7eb6290462a9d8c7ac\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f148cf449e103c6a63b0284f607df997623dc66a0d3aa265831110230c83a75e6549baec5a94cdeab546487999a841eb173d89a928105b043f15addb9ae56d5448ebcf7aebb6c56e3cc089ddeb3b9da68c3c82a4d1c3c5508ec9795e7626c392c553329dbd1dfc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aa3ec17bed0c2994314b4f2a9afcb107532cdef2fcdbb326eb1ddf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c20338569339bb395aee5ff60b4fec9bb6d66b4794a0ea74a4c121\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"152a43e076c708c9c3a1c415df5d18e0a38be99eeae07da0c24abb0b870804facb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dc6f1fa48ebd25542cc444a44740fd801057bebdd80883b39cadb19095f4ac7f771d3c6226\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2cfdb2ced46f62e4454b45cba9132e8ca65388b889a96e26f1583c2fe2f01052\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65eca65e716dd5c6165faf61af05f6fb66aa2006ead2fd1fc597864096af59ee48067029a9960ee18500b15bd4486ceb617bd0e0dcc272fa849cd585f8326e89c58fa94377359b2c7883e9a32a298181f20ec902d8ce2b5b0255dd41ff920c9f1cbc05443f0339bd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ea8ce2562c1cbffb5df65b99a8f97229ffce21fe1c07a968dcaf31\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1071d01cff6a07a02f5b37a3e0518228fec21bfa8ec53aa2743ffa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d744995c3bc233c9606e94b01513984d9fb393ddaa577f1f0229935c85e95cbf91\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3252114319f56d619c036bc616bc284c5e77b53b3ed2fe18762638df73173b6226a4b1da79\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad62daf2c12be5a07a6a86ff053347e43a8d7ee32bcebe5b2ac3abd3c4bc3c6cc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65274604e2c820842f7c9aa1c21569f10233969e96de12c3fe35ba2866aaa106f38f9ea163c1622b8b19dae36df3fc6cc33eeddb88d0ad11702c55409645aef28f61a8dd9f52b6d61a03d665a80793ffe2bdebc0a4e98da0e849bb0f318d4e866c7b864d9f6ced76\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1afc01028a87cdee7e986db71e9fd03c8f330ca9a794252bca04ae\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8a5221704fb9ab33a383b090ecfcbfd35fa05a48d345df4507760a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4897217c3a9b4a07dd06a9ddb5c7759f2c3c97a8c081462aa76a719f4d5a8493db\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e1a0bc826b7f1d4521c7bfb1a24f775a3f580e06d51f7316275ce74653a1bc0bc8c2eea00f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0b85fc67ef799cd1549715954b69a45ba6852b23d302c9ddadd66381c518d57f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657f4962a487c0adc782893d2982ad198a06f185f075043fa38639cccfb8f324a18e3d4abc261a12e156c1e24c99cf08af8320a43a18ebdf4c93e0f1c5273be34d1347de01dc4f6791dd33ec631fd591bfebc8919503f2531bef7c770d499ba088ae60770e532ec9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99e590310a54dddeede1633ee11b117aef8390ed14d35cee821394\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d7e26c4865516823f43c4fb471dc0c38b48b9b4cd5c32454799c81\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2870e1c5b31d6f594fe188e863d1aac62a30bab525de58f2d999d8fec4c98cf205\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"20253d08dc73baa468a1ac5aea914b52939e248a3adfd0ea8b1716dd3f4c4bd50d91e7ea11\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f400fce4ce95902ef59044faa56f82999d54d154f9c8cce389d8ba9750a34744cc111762c06149c801e4d7103555f751ed24e5a9bee462de92d599511f972c7d19693f003517f6516d2df9151f8ed8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0c2c3a1b073d149dc3473e01b1f2c786a8d40abdbad68c6abd6759\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e7687d04f3067951944a64c95a4ea276d579ff20a79ed62b99ab72\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e723068d557e26737d15254952940c36186d7d355d0d645147ddb7bfca9a651946\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"87bc5857e9d4df2786108193ddcf00b6776c64551ce7119a795e5dd3229edf32bee28d45fa\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c410b14446bef6eee46b598dc198423c558fe06916b76a2bd48ea99bc8a185a0411a11ab82f1b3f7daad01c2b0fe53302fcbd499c43049a00aef3ce744345118ca886330c0a009e81f625d9dbb4047\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"212b33a9bae8ed80458c6885eec041506a9b2d9a4ef350af7e1ab4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"350e9456633e1241e9209024b75f74f8beb0a94edb63a08914ba20\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"20ceade6038e18e3aadd7c35138eaa99858c43e0eb7085424d36c0194363679d0c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"27cda5ff7b8ac3b1aa7a1249f206e2279fc28e2120187cbf3ed52145c217d8b0dcad5e84d9\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430f37fda6c6abae4b0f54f9ad38b22fec739d5c4925a8d76de6cc7cf4a931711cd826b2104f120d624f4c7f3861f79d1e2a0b5867b1013a1ae3fd76ef9443424eee0ffdf5b6aff9fd4f162e6bcbc2e8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3644419f0cd1f8d29bfa77ae0102ab35d947e9de5d26588c885168\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9e2d00ad34457ff17b09c8bbe65e840d5899d8abfb9cad8b62e008\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ce3704a625817987d94952215471ee2f38c1ce68a6b60630780a569fed6efe1d95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"466b03c085d7426507a6d510c695e5a311a0e43576bd381afe4f67243d1e17cd41df9387e2\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e147f7de56b505f9e2170c13779c3bee7a0fd9509c86668c6949bfcc82071ac9b423cfd3b920e6756e861fb8fa8c5469c0ac5237ad77f0bc196574f2a994e2f208fa358bec0de07a402de45ab6cb39\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0c77a72d328678064bcc38969d2d54d6fa06e4a6a13e91651e4ffd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bdcbff8836325d7fadb52dda98266fe48e38a839fc5bb0f887fd7a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0868fb7909d6e6e98a71c961a9cbdfd2a34f87fbdcddab2e52066a79dbdc1ac8b7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f680c7586f7c22df7df4e8ea98e8f66d644187f17838b9c2dedc0980afbd1b7621dea2915f\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65abbc517cb4b51961b00f13a577b6c79fcb7b3ea41c839d0fd642e5caa1c8cc2fbb020ca86a73c94264316f24f17d5f522a6b115d69e036922843930e46061241c56191c1b150ecbf9b990715ef54acf5b1d24d5b2f648e6b452c77a728c9da6ee4e0197a6ce945\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"36a9ea8b4cad7538af889340e0927840636099cc6f38de59f21a04\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1c092b45ce3718f17846a51fb3cfc10809872ab5cd6116e9ff191d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e05c5bab1712b6b500e462b5e270266cf40b9f6eb6c4e125ec22f963e1abbe5497\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b036e6758931c8769a25d913dbb88741b343961e8b02cbe57007c037af7b2f0ed61d6fba22\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651a9210c915fe23d6bdc87dcc8f5ec49dac1beee766bce9f98e55fce8ba00a3935e7f80370a78c28aa5b1a1213f28a008179ddadef73f8ca4874e6251116de9cd70f7a11e4a8fbb325651e516a5e3ab261db12508fd82191c8155bbab3e250b302c517518296cca\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2d73f8eb23240b22790a0a25ad9492cbc4547a3bba2f49e4488464\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"089732e2532614d94b91980d9e3862ad3f23c02fb477d1c2b44de7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ee2093dc7b3a8173b8a8c114732c83486a309dc35556d5fe9fb35ebaa7ea476dc2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f12ad331068db240840d1d387fafbd7e17545465f7668b097324aaf31524fbda61a6528939\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e628e17a7d9d0e962d7d4ba35fa2947a4540bb598679867fa1b9a472cf4f12dec7d27e4073649d98cc590ded276ea6ef96740eff65ae9b1c28d316610ed24c2e5ce42b98507814bc0e14e297132923fab081ad4fc680bbb16fae0ec330b5d0ff64425168037b95\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"68cc03d997b896c0bef7039fdd4dd034b4f64666dc65a68d2e6bad\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cac392b5ed74f3465951bc435e01569aaaea72ab02d878ef6c10ef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8a69b570ccd1cc05ccaa1a8e969a039b45400df835deab0c4b516e044a0e073bc1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9568efc62cefed21a8ed3b7988c9b1507fac46924de87a52ff902a083ac89d2c13f0b45b20\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650308115ba765b54f3eeff57ebf0101804d95b5488673daff0f06f4c16d3e3f882bb71059ae1e6123e0a2e7f947ef651c23e024ab5cecadd68d8f2a31d8a0765ad8d180c89cd4848b26afd4c9085d78226b22e71e16fc6e859fb24d96bd5c38369efce87ada5cfe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"be0e18ed5c5e33faae0875bf45d9b976e5d947c64d58698e9aa17f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ace042e2461f4589f9f7d8625ac0b1270703629b8f127d7494c201\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f1482fd7d6e870a570dcbd5a8a0f8df924539bb8ba4dce6c2ea534dbbe236bc0c7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1680568ce44aea171ce72f48e6c37974940422fe68bf3600c633693ef0311bf6e2af267f49\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433fe0cc494a11d8fc6d5ed97b43e8d83fe5a22449be08177b3e252a26d64f5f64e2ef7887a1293a597d2c46360235c1b383e7de1601cc5a8c12e12fbda1c1edad6c55db3c95b36195e27b1cafdabb02\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f0ce459cff0821f942c74a3aff72c451144f25c45bdf36b7704423\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3383b14fd43611b1e198baa0132db4c7f50873ebf1ef20969c2d14\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bbd07cfa9ce062fbada58ed6042320eb4fd8dc8c51e2114bec65a627f771046c3b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ccf9e14a838a09f94018d50d25b1d03fe8aebf0ef4755e82cbf4d7e28deae7ff8b6356b4f0\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fe68220c2c2546d7d6e9f08a8ed67992861b8474be89b13c67f97ce79c85b958967080626a54fbf502791ac55e80e82dfcf7230730f0b90d56b347727c9bbe0901ed9c9ef351a81dfeec9496bd3d70\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9996edf68773f3babd73997aab058aee441c0a3dcd7c40c7b95dc1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b7be774185f7730e146583b0bad9190089c29b14e391d76b0a1c1a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c394ba4a3f8f2f770cf2e76aef12894ddf8cb7ecad020d8d507febf49b2c75601a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"66ccf204325e16e91a894deb6e4a4c520fa911023823d621ca3e4e7b5a1761f47d85cce93f\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433bcf02c23e28cb93f303bd1267df205108aa6b365c84f04d823abdbf3c730f587e20225d9e1ce2c8fe314d2073252929eef4a044dbc8edd8899347b63bc97feb6f01c1e054487488339d26d68df8f8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98c3989de1c56f918ffc9c07c6506a6a9a94edea87d849c65daf8e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"63215d6f441df2d39f639338e6d1783b144fda5a87311f645f1e9d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6f24ecc07a3da0f232c2144c622c7b036fe933ba4a17af7a56e426e7fa8ed9f198\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9935afa363ba7c8e21eda939831df42891e663986dca96c2830f68f610276a73ec13edc50a\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884364711bbe317c6ed6ffb8d0548be79f49e2627072c58afcb8fdae8dfc6751bd8235b5913e23b48bb8795d72f89b944c738bef970f69ac41abb3ffddd49811a1e771dc560b8239cf52a353f4777768d5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"45eb805f9ebaf2ac0c4e2ff4df37688922601409c7510f12695e85\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"738ee47a536a29c544bc172b62ca29bc99ab6c5f2a1af416a55150\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b9112a6abc25e9fa6cca75d2be0ab54ab6b943f554b0d9832d57899ab1428e0467\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0320e88db0faa9f24b5f6ebfb4be140095a05e246fdfe4d6b58607bb7c111e0a6a513b97ba\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d60fc94e27704bf134e2abe259601aec7aebc70895a30b61658ab1f1698ef501c934954fc6d60f4c355c3ea85233438e2b2daf0bcff18455943401477448f862180cf6ab8f537d8dfe10940af5626ca7b93b10ec0148712022ad4943bd79d1d781a32d41bfacd2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99c1c036a54db86432db26f22a3beb1c5e55b306db997b596b169f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"92affa6d22e5284783fa1450ec2a0d1d79a30898d8bdc0ca9af884\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6e1735eb1a332d320148430df14bf7cab9b5ceb0d7d664a7950f380b86573d3c32\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d243dcf14760097d0895c660718d73c3d226a2ebf6dbfe0772b25015b1c65aa0d038b07738\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657d36a2790c4d7d30830ec27fc74126110a1ecac8a74dbb1fa38dd318cc4034c31efb7bced79e85c832d3daef4729db5b89adb53d343a7dfc3d193aab107e56f186545c828bc0bbc952e211d448e13a2cc4ef254e4e09f2dcfcc85397b4f70876184ccd8f5abc81\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ae779788b48c9c240c5e3a094da700c223a40522d0a1f8a4165a6c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"97a14d1b84519fbaf5ebdf0f6169a45034e3f8cce85faa8c26f56a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d798d63125f4de8080e9c57510bf31aadace69d71d2c1c78ddc948e88ff28a63f4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"37ab48241307e9ea2d89ad9aa38198195ccd01769bad9b53b5f25e13de2f1832047923b97b\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65426d4449aa6f9d9a192aed23d03cee897f597045f0efe997ac3e1c3e9fab43a83d1f3fb612ccf7f03be19511dc25c3665363f59685cbf8d0f52809e1bc3c4f3db0d2a1c1cc0355c0faf8523471a3edfa46ab1c7f104a4dac3026904c55db18d71e33b4bab6cdbb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e7f9131d83442a7d5023eaa421de8ca376afe94b5d4370e394f41c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"13bbfcea1b7372f91a3573e44be5656beb616efcfe33847ce801b5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3cede0eacd8caa8e58c46637cc424279626ea4996794ba0d22819259a81c558a74\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"834c0873a37e5d1d1d9bc1ba3809b414ff97acbbb71bc14d05a7c4972935af386d2dd54c67\"\n}\n]\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e49b46bcd58834a3f175bfdd7620c9d8d2cf00beca612a7063de9fe3644f235d38982917d8c902f57b3bf0cd3debdee16ec7595389d5a341c98ec43d724040663b53869b6a06000e1dd9c3de22677fe01099897584462c8ec50a45f12161d53088e6ccd344d614\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ad5c8dce1cee6a721e15c33f8274f0dc6b480aabab9e48b05c9f8e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1c8f376845a55434ab7c7a55bceb93561216d7253137e2d2258b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b7615171f6df09772c9b75d52849d2cbed656633519da39eafce0e5de7922ab2d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"69df7a006cc3d6be3270bceca9248be909e9513ead16ae7cad0fbe047a95d6fada21ef4bba\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794403032bf1fc65077ffafc6c1f2b3fc2a6af2c59b12dd2014096c506ccb9dd8b15\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884322b188f2687cffc6b4eda97d05a5e1d44a3575bc95ca2d5284a1d001b88239612e26d451dca13ccadf2ff192e762b8fb3d2d37fb2e520e2ad7433d019b4c444d3306c6608102740394bafc766e2ff9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"89689fe2544c7aa04b5818c96e78ccce16c46109e0f1e828f70b57\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b7897c001182d064547bac4ab4d973108ac5d500504a5e9c46a566\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8f249c09c959d106cbfecb5865231025d5dd66b3e05b5ff8c2473b2c14dbd444d7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5729997cd4e1a2c46880c1188a336d49b3e85966e4d9565c14475310b8f3f5a905d8019067\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446896783af5dab8197ffb1a65bd97a4cee84990d96180b508dfa563960ab3dae0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d5ce9cfd0332ef4d57432d79b2d99c1520f33a6c59ea1e04aee7074c1e9ecdbb91c8515f079c0ddf4f025cd66079cb7e1ee610b5d6752605ea269e5953736dc6e5019515b814883418e9801e20c39a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"56a95d19ae2e4073e72d605f4c687a44a3b8b38a130edae8962b45\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1bff0046355926bd1efebe43ba17918d8aac680c47e3ea3d5ed10\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"177219e2b63065babcdcd885920a2af66fd62b3677abe1e54a1134b01dcfac6ef5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a39c05c13f695c3fda4dad0d0b88fc2fd983368aa3213a4eeff614c3788047539eebaf29d6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447d05737162250484519f32d07e7cea6932003e15303820e167589623f1602445\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843456c5403077d228bab1d6566846f3240c322691cf14196af76ea1b5c396d646cb602f74fc5c4e0eba39b960e0a2c4294205fd4a25af66d4e0c4baa920bf3fa046510db58f9d3eef7ca28b4c7e7532e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2c3a1494ca4759baee6e51dc2a460146bf533be3fdf393838699b1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7b1c5bf6f77a3565bf53b908975c5ce5cfc83b97360589c6c5357a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3a749f1d10e8ab4e548c00ffa545e55a3cb52f7241a1ddbc216b389b05cca3f847\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4aeb09d16f1d783b2b6bfd80b382c3212651ea456f7a3853d7695514ece6df80b7d1ccaa92\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446c5ccb5d4c9aa951b1cee3637ab45e4b1cfce485e94995a8d71c7608ee6f7be4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884343adf81684c25e7139403efa302e246c77e08c63d7f27a4e40d773d453bfe0869d74ce46acee23a5ad88b48b33d47ac1218784714fdaa873be08da26344500f1d81ec4ff354bfd0304d2a5408083ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"895dd9b86e8e220c96d27d371af33ada1c9a631854c551c325cada\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"49b38823c9a6b7b84227d5e2229f9edf4634ecd1a5e165544d3c0a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0b256c64c220d5382b2f28229170de188f250adf583cb20fc35c023fc8c5d11407\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2b6c163aa4e4f18d06eab4515ca032187451e139c1e35470980cc06f7fe68a3160f7f819da\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab4bfcf8a911413be498f9c99207a32765a72a8c1d899e46f087dc7c0a2715fd3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65753fd2d1d290ca916ca30f877cb64d5ad5102ddde0914bf60b95f911fb9ac9e573f38478d74e3ffddf0f76ea934de49125c8fffae376c250ed7c3612afa6ba18d74bb1138bbd0b328e1da61231e75b9a05d7fd8f5e67eb28226c53a888985e3b0a7e524b241341\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f96ce20f158cefd4d45d9fc2372fe7c22402e0b1dffc46bed393a7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6fffccb59ca78dde500c8f4aadee3c1c835f6b94a1d414d3996179\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"553025891c2bd3072ed7f88d08d6352b772d52ece31bf89b914dd342528c58d6ad\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b5648327b90a6a5967525cbb976e41b4507ced37dbfea6f7635175040702118a20c770e136\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4f53fc33ca9d8983f64aa1b7c148edce4e0acfa50e450d32c5f3cd00ca9cf927\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d09bd9b12cdf15d0d00929126e08f4c999a0deb1dd89a5e042a9a7fa3cb221534b3fe94b7f2cfd68cda783a8280717f09ccef82a51bf22a1fa4d44c3c31ff5730f911b7980ea9adae32cdb1c76388e104410d1ffec591aab503f66fcb86bd00c126f0939c2419e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7d73b0ce70f8774e096bfd7efeda108e6cd7dbb8e2c4b9e04d5344\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d35d8e24e139efe9ea5253f0bd5029787df08c91648014cd9e1ba8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0222f24ab6cef54b052a5c8ee8c7b18a5a79af9f6817cbd93e14a13faaf123cf6c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c06a020fc23a4928e3daa85616f1070455af12470b5a0e5ff1c0b1693526cb21a919bc796d\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af8119a58544f3cbc17eb2d02732b8caa1bf2020d8c0e697d79005385ff17fb7c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652311657ac741a176a6944e5f124aa3c9d28302def8b62a6e1ae73632b5b7b00292fd2de874a72785e8940be304f7f6c525eaab8967e447b809e34624e2207de783c05653e4335a5a9ee4c10e7af44e6a1434deb257dc985b917692d10f70d80ce97f1f0c74aa44\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ec45d7197fa78718cb00f013ea0ad9c077478420831fdae0db2f19\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"824bc77edf1e897b4e4446d5b3081462dc3ce6a8bf24099d8a5886\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"392719b0cc6904cf2a3a2ca14293fca537f0e13568bedde148dd34dcbc76f04495\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"75af4d0500217f23a4df2c960f6713c03149e85d0f03971f2a0e9a8b5a9d118905a85f7b64\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a264584220552ab7989fbe76ea8193d0e84a0d79d21b81d54e730a76a6b1b0278\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65518bae1bdc714250bec8a278bf31644628763e1190c356625bbf9f513a09dd25e248767a2f3d7f1a5485368c09c0f9e01a5a25cc8ff14bc9eb5478f29bd81d672a98713e63963b0123966a211f4848e765f8bdd8242ac0e3f1057f1331e38dfb0702a3112ca877\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79fbf4b5a12f7456e8774596668ba523393a78af1a560b0ffaaef8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"af666d81bc55c6ae1f20e02daa8cd5276ec9c3f5708bb099e4623e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1f4b6d5c5a6b169d98b6e765d6d195740c88195d89ce4385bb38956c44a515669a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1dbe67c6ce1cc0c0d19bd63dc26b07a2c559964c4560818055ffd4f0feb8cdbbaec1eb97df\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cf80f9d43236889ea088d29ec7f27ebcb8d89742413e8fe84097c431614a9dba\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843561b3cace96da98fd058c97ac5e04ecec79f9432574e7e074ce1910ce3b6b41d9869ba012e3da060ae09cd28217bc072cd5b3a1b141537838fec6d73b6f3a569902e4ce4fbc14ccb5fc1ca080f8ee4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ea3b46a3e871235c46340ed923873fd9ad6a02760a0c0c57302b19\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8e58e13ed2dc37ff99dc06e3c00c67ef7076cd3fb027ed75cfa772\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ca52c68498fc1500ad3d40072a8bcdcae95a3634ad2e9f52be23fb173973614763\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"42d21a2b8504c7221b36bc901df972b4235f17d306bd87d6fb1a3eb9feb64a56f03d590adb\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c623a0e749d369faf73c8bc6312598eb87a6884f7514f5e2a18b0a67347973c3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884304d633ce080b20aba38c501f7fcb13bdd9d24f8e427715dce89ef5793e041bf92365a3ae67e82b12655a873cdfaf5f0accef351a0cd0351c541876e58adfa1b8f0a350655cb8bd2274bd810699ddbf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"22d1fd5a74547ba8626d9353b04fe837bcdfd9486f37fe09f5d4ef\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e52666ca5945da204f5756f00eef6bce4499b7f72d546f46dd9ea2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"59106eae1b0a9a64b4a134bdb6b91945df50d88bc661ff1901463afd1e61f7d59e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7b2938a01b821991635f99d01fae2800e08c92bfec5ed8f2a71fcfbfde7fd03e9c30e1ea7c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a144020e603cba4d991d28e4bf82af76e2d0b6cb2f99e83b6ca91843008035c0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431eec9864e0b07cca50ce1fd552b21e4482af24aa6646999165185be77f58ea3d1751b41f0a95541010d87eb22308c1631f0a62efa74446f2985773c3f928b25f02f107be24e804c981ea3331a26698\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9384fc6287535cf2cc9e374748e9959af63eabc8485f5cda084ecf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6aac3258809a346fab108c3f19ce8daf33d71e34cf9101b591dae3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b378c2d1f4889fcefb361fb8dbed455026f47f42dc4e44bc64d1083e590b7c7c73\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"38a516bcc0ca4344014a2a7c751c1bdb57c40f313e4589862efecee78191ac8b08c236cfc3\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794475ff5be31ec56f0a74fa365e6c3dba683a12d5ddfacb6cc916902d101df94d72\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434afdd70ee3a3fb9527a0e0fba2eb70a3b785c3fdf21d4228f0f983ba16ab71d62f6be639edd0622a7c7a0182ce30b7f634f345f0909301e0eb4767d60a8fdaf8ad389e244bd8a55488d26480902638\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1b8e7d6ec9cd4ed9b97633a227d56fed48746afb3e773b1e2bb229\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"72524549b620ba2f2e727ddedf129fa43f224dff3bba2b8089d4bf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1b1ef8f836eba720d5ae327a8519a4fbf885bac9d5cfa8d0c9ba1711728b27424c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"af2d2adad86556e2dc0cdc390cd999ea0709a125b0e9fcc45f0b3c9fa3cddeaab1077503ee\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af3dbd2b70fdf7bc68e0e5b1bb6676e35166fe79871fc3ffa0c2afe1e66ae77d2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656f39b08252772f781b73775486536b19e512fb0fbb9ab3df983662bec37308d76eba2f5d6cf4aa06d7d97dfd7e1dab640d4ea1698545052cacbc09f30c149c37ed66134c0cccf238436c55ae7cc8925ae7822005d8a4b032497dfeb32ae63ae0065cbf61b9e08a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1a9b620adb6c18fcf57113728eaf15eacc25def8344bebd3e636ee\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8cacadbcc9a42e1b7c00275ab67895d31e49728e06dd5247607534\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c406caa4cc1c6a4f5e681b5e7cd243e8a725b2356f6c53dcfd0980cd4848bbea98\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ef29a4c93caf2d0d77f566553204b0b024eba4081ea6adeffe272b8081d70980abea19feb6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8f11b392836bfc050270b778917c1d8da4b8a1dec3a15213efc3db7afb3f33ce\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658fe7155014cdb6cf0f08078a7691484fcaeeef0f5df3854dd230ba56a84f15c758a127d837c13134a20e784bf33ca2cd9a4b84a372aed66f91c9a88c4fc351456c8c125a33b222c7ed0f307fe4f2f6241e7047598c71f14d9c644806f4d2e4bea3001247c96f17\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0c952cb8a72989c67351e5dd730e27d8b2c4d75bf9e5dc21ab10f7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ef6d54c7a86e08a1a7941ed1a7e2c2d82580c4d63113883f233b44\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"dc633a5c00255fb6a1cbe942cd5b9dd48737c9ebc63da2cce626ba24d6f6a9e191\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"90a325c744be075f3f69913c06a74af80fe539e60515d3de9db31b34ccc2bd6e89eb3c6958\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae5f5ed002caf26601cb417cf2a0d86185e303a0cdd4b905ca9b2bdf1a8daff04\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ecb71b135c598b919b02ffe3e542a1b497a05046ed9ce9c24b0b44cdbe4ed739c9bb16d833b9eb764f148b3238c3882de19f4a1e557f0b91b7be415c662152d4f618d8ec42c4a2d20edea628ad98fe410fc33bcd6fb6057e39f49120b2a70269e03f7b9926c63b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b5ca73ee7cb159633019c64745456da1e794fdec06474b04c7a5a7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bdc85aaad2ba15b9022928707a4b742833cc33751e5ccba581f88f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5701a0187827c11190cc616150d03891d4cd332a1e9dac458d5a0ea4649118c7ca\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"85f7c674a7273f8dff8efb4282bdf463d2fc031ed95a345d2a6aaf3762820287002a67c373\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49abc8fd049542226d73e17631a5b9f03adac838181e25b1a74faf70a37bf4057fd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655814ace283a51b605c37ef9b82fbd19f33cc8e01467140c262abb5798a4e960417c87e8573bdb41a21ee18f908629d1d2dbba442a4badc8635e082da1a0fb13b91a04daa64e97db77cd8e649f646186837cf714c26eb76dc081c55b6a5bb10231acf918831bfff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"32edf26c7c0fb6011e71bfd2d393600808b078bfbca6eada86fce2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2d658d55b5b407a350b1739948c04d9ba7bc49b982cc06bf859094\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9b16684ad58e15a78a91f9d54ba76f2d6b58d0aae33c77ff105360c7280382b0c9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"08002c2e5b1add7ed06ebadd032c2965ebeea22b254e01ce03144957646bbf421fb3076a74\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cede969108db1d801a3c5550fcd4a68b48f7e29e56d7806723fcb465f91e89\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f8332c0aa6726115565aea0afc6d28890e24fadd512e60c9d8ea2c22e87f276f56a236002bbb58d0a1ead5ad40c262ab2bd138391cef42ef97b500cd5c745cce1e25f2420809dead4e6f28\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"05173034244d88ec53f37457e682743786d461c1f40ebeba92503f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e3f9c0732abc45f4c544246545d68248db15f3810a155901076e16ca135dadffdf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f5ee4ab80ee7539f4c4b168c70ca31f1113f53e38cddc59ed93d4c2152e682afd177f39a91\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843603fefd75d3524bb35e612200154777839737b9efacd9c5ac397da74b7b1e0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"83990be5d1cd5ad8535c24e8f7d63e4b76ff919b63b68d09eba09c80e085ad1dae3faabd1c61d51553fbf774fbf965653df38727bfb1f02e39b879329c847e676f1e73887e9f6986dfb4ca\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1a9979b11dec7ed8d737cc9edf840dacec362cbbfd2b4394cd981\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8f5df3c87def8592b868b27feb8cc1407a8cc7c442ef4c939fd3b8be503c7b97c7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8e3cd4197146a968b39de21eec484cd9d45282758a7939187c33ecf4043b645b9c3ece63cd\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dc00ccf629492772082cf28c171db3ec2dbc406aa59cca67a7a174501ccdca\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0bb0ae2b390d37a5aea005ffac23173e212f2234bbb4da3013ba0ad8ad8ec2f8a1e941c22a19c6904bee596238ecc6f5fadbb2881461b78ad9230a7838743e6160919412061d383a547510\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a378ce38a1df8f3e80a85c5a8709f3a17581ff8a2888e2a8446f65\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c9df700a1e9c118572703d0d7f55c33fe4b07be30914a7a804a4cd6fdae90a486e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e371be686b36e1a101a7989f805d8e1520fc031b3a4a6085df1e386da28bac940d615cd9bb\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884305d2ea2e8f8ff7966541b6805e3f5f0fd6b68be05d1c51b15074a0b9fbf379\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f715c17b399cf3a6f3af2f526ad0a7a05fb7908c35e0fce4d4a2cc85ac56358064089ebcdd3d7ca383443ad81632e3d98ea5ee64354d415c3a34776b29dbfb353e8697406fa89794b9d7de\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b7df22961c2f557eef73ce9c793edbce2feaaa634813c9a8c7a7e9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1db24f1ac5740f1731f2dafd7178549a71c7bb3cf6b61af2552b12fc13f2dd18c0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ed7a84ef366a3011ec3c103b9310ef4a82c2177125cdb3d67cfb8037f2e41c9fbc9278ff47\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659d7ee5708c26ca8bbafaca0d0dcf800256e4f185ccdbfe78a15ce754a2aae6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ef91ece4d6e44f4ab5a072ac106f6512919d332d0f7ae10b66d4887416f88288c80acdd7af64011d317bc3546c778b3603d438c147c57d50f706abb73269f112bba26f7717237a878c0ed69764c546f6002decb9d657f5201c7d0deb48790a33a99d02\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"740e02ac1208f946bb91d4c05ac7c4b24e871a79038958db572681\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4322100cbcd5e848ac336830111acfa71974ebc25a102aceb73b323f6daa20f1d7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4de2fd237734345ed0583db83e03b67e1e178971ef9a1463b3cb84d7b7be7580045b02a4cd\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c101f1215a2746e5e6b68a36d9c489f41a5648052e853ebf2e21e856b666e4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7146f024dc5bbb044cce09043e49e80c5aa955b903d11d219252152744ce6b146f18e41bb8743cd58ec0fbd1094490e53a82194522174e7832b8870c084f3207e9a1a21d3e0a4947f1f69dadcc2ebec18486b44c98bb6c6adef1b5df01bfa493dc9b0d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b75ae37d0ccd009a2db8d581aedf599f36ed5bcb7f8c2c978f3154\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fc63730583959e6fa33818693144477648dcbe1e0fd36841dbd4e0856aadc11250\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"64a59ce1777f02d0113187212e5a155e7bf8ac6306fcac0f7f567f063c45ee9fea497246df\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6517223bc07b7e517ee07b95eaf94a0fcd4794eb21691f5d8cc5f5d884df9188\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"500797ee9fcc957c14cd1c74e53d9b7f83b4e9b9cf7a44bb92fd1ad2662ccd0d79a0e7865cbe8aef114d7c60e4facb78998f69812c1de695dd5b86c2ad17e1b86fd1b9f0801840ca7c45e8280afd86b404c448ed259b4859a9545318e8792c91d0d9dc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"12c64da5baa850bb313647cc03e2502a7b33ad4fb2ba9d45b8f144\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0df5641fff7db2cf5a9587840d7c4bca683eb0763752272dbdf7718d15d0423110\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9a6386475cff37c51686d736bf535c2a76592301f753207152e6883c6031e94b2b5508f754\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655b9997ef8f4bef576b00ff2d44e5cc002c1e93dcb301b85248873eb46cbc8d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f3de394b4b48a48257a13e19fa756292ac2989ced979b7ce97d9e8ee8467103b7ae81776d0b5789f5f8004623ed4b99232ab984695a565d554833916001b70a411e7d8d3c7a5a089f86e890922311ffd8f8eb32df71aacf6c56072fb8bd174dfc60ae7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5eae86e24b6f19cbe5b882f14527525cc892f9b314615de57f5e3e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4679f5e67ee05dd67d19d3ac269004073372be7db715be15d321a8ff99b307e4a0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a78fe8ca1be902948aa6563aaaaf03fdb094d48ba0da12d58feef29d5158b1e7c247a2208d\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432609b1c16c1a7b919a1b1599ab7b31ffa65db3f69ba01d5555389f8bd71ef8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3f36cdf504eee34b41d39cd0c6bfcc1d1a49e01eca9332fe2bb20547ccd72e8cf86363ccce188e9721381b87b151949f1bc8163885dfc259461e9b5fa7dd43f1b41e257352570e22623e29\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"42f8a23fb33bc1f0ca3dc2ba23fcdd2bb50b40f4054f3297e77129\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8180b4694643f5b32774e356e2db7a849f37599614aa86c5493668cc76a44f92a4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"870a4ea3433b76c31a3ea48bf660067143acbd7a5e9977968adf8ed83671fb7dc995120c75\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b315cc605ca998a2810b6b5895b3dbe5d60d5f84528ace0d16ff91c0308f0a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc1214cbd87194777857a306bc92800a978608ba64d60122b93f2df79d324a3159e3535093583c197eb3222694056e9664dbedc25b4d94000035df4a99472b7fdff9b917a7527d828b70bc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"60fc5ac223b02be660ce2cd31efc83f903761a4c61031567e2d29f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d9a6678876566a97f0cf221ad1e345eea9a47ed82dde5e3d9067976d2329c73d97\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e8c7abfb2e0d49fd5b4b9b0d67a1576c19ab3ad2394c95d5dea2b8979b6a39ae92bbc78b86\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436b422eea287020fd7348a72268e53b142b68e939bb7eba9199e496ec747c5f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7c7697de28513f07700164253e67124cfd12341fac382712e78de74b8265d0b559321945ba11911aae3a8381c02c9e7b6b93d5cad28cded658c795358f298f4d3153d7756f5869f0045d45\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"acf40e744efb9b4ba076747fcadef9fab390755c4bfdfd4ec294a2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"86e89c9f9ff0e39e0351df871462413de5530f4cb2f3088ce1fd57779ef26d7537\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a61708868b53cb92254588dae33cb5525050884f76a07e9f5fae927dcbdcb79874774a8d77\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f9057ad4bd91a51a985b19651b4c8b611bea3800fd19ea4a79439af34f9d09\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7f60a5c7c718ba1a349ce7def2bf0703137bfc97b33a11f271606b88560fddb8fc7a94c70dc903870b223060906d2a2325760cded4fd0ee01297e5431c7a1819f3637696dd5f26369e343f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"144adc82a5812b91fcf7d5246a6d5dcdb5887b437924971a9b9d97\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6f45866e5a980666755a4c5eb877ce182e41c92eca4429832220ebab0c4d821145\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c8fd97203e5dae52635aa81644603ad2afed9be80806c3a5bb115cb53289839f718bdc92f4\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650265ab4a955a7fe58bbaded481cf03174b5861eedab2f0cd63cb423a948f7c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"da004036f9c943a7cb17bc3f51e353860813990fd382283228028ac3ad5eb973199068d9003885ebeaa5ef1fb4e92680c1ff7e271b629d70291de74d775a011e6dd00d389052b349d95cac6970cdb890cf10b677939aeda14752eff675cfef46d7aed2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b86fa270763863c1847a099d050402192f5d8282da04a5e282c3a9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bddae1e7f62ffcc36d0f531e30e96c08c223bb02bd58839c108b64241fc83080d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b0e740cecf9fb0ab48053c77281b4b103b9ce34446b41f16868447fa0fc5f2b0ab013ca3a4\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65144d3b0f84f72bb02acedc24526c80d90446689f6016870a8da23f98bd2313\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ab96d433d00fad1ce7528b1f5818d7f825fd94b8e18fca66a471fbf9a8c78d1ee0537499f31a315f964a9e577e1db0be94b83a1b839d61fc0cc142c6ed259b8aa10b6146770ec4b6671fba31e72a645f2cb907698f8f93805f9449b4179bce66ab6621\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5a0d827f81c4a368a79e92c4215e0feac113b80650bef0d1b42464\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5fdae8eb5760ced034434338c0fd74bb77e64d618522981fbd194f2b62cb32a380\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0bf0c3023c68af0b74c846af7b62d2c35a0ecab17e5798921067a4f62a6c6a3fdc11c91bfc\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6574fbcaa65bcb85d1487ae4cfbf7a762fbcbfb3ef39d20ee5574b4b7d0c8bbf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d69f0311bf74dba96f0c8c429671e5c08f65f33b4824018b1a9d5a27cae669eefe36be9fdceb0e1e411aff4bb9c02ceb73039a4af57a2a7a4ff2c42efdc26d25db3e9320568b5880fbecdc64939b2a29638da16784b15df27b89b253cdc2041a417165\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9814ed6d954b03441b37151373a51841b80c67f6be5de9ecc709d2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1bad94ed64430dc9035808dbaa1bde20e5e40c1aaf9b806cd2782743a5492f5a24\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"271e828f315adc258d0877089a8436d7b9d59d3a01e5ce64207ffa17b2bd4db0f7f36720b0\"\n}\n]\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f4f945bcad4a32065bee0a636c6e95e8dfb6edeadefa07c9749a4b464da932\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"345e994114466fdf16e37ead5ca4e12583a927972addfa7b11aeac679d7b304b152c5d6ad551703e6a9a4fb77628489b2f4484e93bb0461648113f8245832ca2a1b145f09085e02399356e1d7b1d68769caab02caaba15e009ed9ba365cd8f8a1e9ca2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1cd1e09ee09d5790df214c51aceac7cf06c9cde9af328c33efa3ce\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ba050e92d42eb42f7ba99c02557de80eb534f5fa320ab03ba6c205000fa7b21f3f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e338a47f718bd558c0d11272ee24a5640fdc474b4da6110437b6b2930d3dfd214c899b0967\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fc237111166c9b99cf2fda918cc1d3a1430b4a39cf521232e0ba78d20b094dfc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884369a26cb4196987c3b65d57b5ce2734851fee87cfe10e9659e62ecf7279a0ab\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e1d664d9b527505ae953315a38d007c037c7fbf333e211bcee174c28b49e85868d020808d43c057c6c12dc324980bacc40bb6433a9773d1c3881eef326a01057664d9de25980fd64045a1c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4d5a41f2349e92ae144cb62483936bf1f565da97ebcb5b9ebec88e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a0987682279f0a89a60026ce30cb05f19e2eae9f3427b55fd63feaaa7c2672999b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"41bd2c5f088a433814a45362da8bf530a408a44e502b04c53d60680086e4ecc40e1ff0e104\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ecbec331b2bd826f0c48465f5a821664e6078b0fb5a033dcabebffc5b21c2c14\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435b8c60b3678dc47a9a1b1045148254b1d758da93d7ba465e72f032905e768a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e6235441ca6100bd9bd6b91a7c34a4cd6981ebb1459e4263b2a8200fac375010319c5fca3096fba0aa9e12237bf08d230b42029eb53f0a3e6414d7a2a133d2fa853932cec005f39d2f7cc4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f2187e5411cad371b22eb4bd1b8d3616cc8688b8594cf3b01a109f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"07552955150ac4f316881e9a0fefd2e027f2654c5e335e0e53f13a25794f37fcfc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3db19ee9d40dab3082d76392e59821a0976c0b33edf675c4b6a7bb0a2570a3cd543caafbdf\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c3055fda0989cb6633dd54d9eae5ab352da06aa0447590bf75709c2ec8f418f8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434289377839904c9fb4651889ba92d2fd7fa98614726d4e1ab90e2d4abed71f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd5f08e5debced7e8b49e16e68cbd93b046adab74a9e7fcd03c4e1523d81f4591afa16d55afcefdb84d6747a7f8f585fb5c058fa957ff947c358a930f5ea7b22e7055493c3007bcf4a202e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"53b202420f41032c3ef471c4baf43c2a75519ecf4e2e4a0aabd6fb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"81f9db8846eb2e25193578b2bb709cdeaba48f2134bdbb3e6f3675d6bf40bdf2b6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cc0fa383f74786272950f1cdc56a6238367368dc545cb5dbd47e6a6cd5cdaa08ffeffc9075\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b5402ca6ebd0e1b638052b67eb19c7ce7e467e46fb98aa4ed546ffeadbe1e188\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bba3839e13a8709c3653c348f83d4ac085ffdb1a7401facb31b8b9f38c7622\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc0d1f476bab25806f5875c3d961b50add5ed3cb814e3a9629bf684797d1984ffdd69521c4dd06f5d59c3a8454d546bba1f165f74b126781a771f9a6d6b85c69b1183021fa6fa7235280c7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"be147e31d4a9c2354d38515c5b521b6f8844fc020df4ef8791d03c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b64f7d2d72dfcc4a4f21160a651d295b84b87db7bb6cf2bbcc856b851b930b2cb1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4cc9a63525cbb3161dac93b023ef79a0c904a03e052d3984de7fb71dff1e52106aca8a60a5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9ff93e0977729925c3000cf1639289ee719e1b893ca2d7d03c810f92ba618f62\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65775dcd06d3a94564b28ad8704f4b61687f2ad1e313d61599a7d1b5769bd2b9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d173c115efba8a627e0dd6f4fa94daaf7dc7388e4c6fd8472c7a99b0d5fbcffee63c52ecaca79f3388662aa33f464538559ab85dfbe8f5433c277f01f226186d1e495ace4d70967b5ef88c26798ee84f383657238a4b6bd05c038b52a5dbc81a307e6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"21536cf6d7ea7003b65a74a5ac5549de7b12b52d196bf833f0d133\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"11ff71b443921266dffae788ca59c853e201dded31583c44a5af536b4ead5f688b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a217e2464b04b5d5d2c08ccc8e4303e9751c141c27be1972c8ef3ab14f76cb7996acd0c48a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad130fa686446b7262ae647dc99ee8171a8c0a1b893628a469e7166b6d61a575b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65360eecb72de41b0581dd079e92984b67786ba29515c7bdc9ab99506adc4a5b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7f2b9e536a29fcc28b5e58eabcd903dbc158a3b48f7210522d5edec52e8fee778fd669b37cd5128497f6b386d68bf583e60ef7057f4d766e2047ee80890b7cf7d1a457acc9ac2a5789d9f52fb1f8ed5c18e7de8df3b55c3688f4d1b5e1ad744ec58b37\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"00b20a8900a43a8f649c3f589dfa9ce24d3eddd0294645507474fd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fe1d25735aa1dbeabb00cb87c5877bcee3325fc8c9b1c932334b59730f601c53a5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"27ae56efb52963c4e9f1d85bcd9d8023413274fc37267ffa19c142babc2e901237908dd950\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aefde213f6816f268ebfac93299b1d967bc829bacd758d19af4a777bef5748f2d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650a3b55ad2054509d0b219cba72be8f523d5cb0fd0e64f5ebcc6cac5749ee75\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4a22da5598858ddfc75cb356fdb3c6d880339c1e4a8c97837e69d135d50d5f8e4180712170dec5e5e06423210b101113da9a6f2396af7795498e64f850f10acba0799ddf7639cae8b5aaab0f402c92b0c9aabac82bfbfd3d18e2ea25d1db8d6047809e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cd9a7c7d2df6af9d2324ab6b5e9fdcfd6b03d9ddd2efd0873c3765\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c22f42fa58e010d7c6c069f5f95e3a5f23c49f81280e423d766ee42d8e3246d28d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1842c8dedde6216eeb57388fee5f02fd8253bf96176070fed1e7c694e70e7abd24cb0062b7\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a80a72c24d67c52aa0ed8df31d1910fe3ed290e50ac7d404e7ff89f80661aa9fe\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f6dbb6287db1db3d95bd5a7b6a1b8ec97f8d3ea6788bab26dd9e59132388a3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cc5a87cc5b1db5fa84ea09a77a47698750f3a6b7d034fba64935deca4a23e3161e6133f9f482c295facc9ac81f5cb180b55b14a73b4aa9764cb0b54d166ec397e007560529db130571f53e9bda4098443491a66908b2df52c05b073fd14475ce02a1b7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2dd6229c5dff693d588b7f02303bbe9b02481a30a869f9aacee8c5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5e563f38978b77db0fd0a98ba59a47e7de147d2d126d1a45a89617340c00487b0b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"38d023db732ada3b97109ed2d5bc9e0d3215e7198da4ef9f13a615fcb94e3de8874834b132\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794465163ca4ef9b44973581d2ec445d0b93275ef8e187e70d4afa0f71f095d04ba7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a09d83dfc93f175b8c1caf3f79a5e25bcc59bd63c797531e905278764a9c26\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8c661e823a520611236ec757996848528fa5b42c39409de919af8952ae86dd2aa7d8766a2afd6c4e1d48b732812a899b1885219352990f38972853335420f3714975cc37b01e2e4f2dc69b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"400e48255d91887cf45c04fc97143fd80b76a7fd970683a6b038d1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cfd618e244a935a7fc96d70a6843723cd99b3c4c974fc0f20e3723bcf77bee7be9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d0d45326ff72e998c5f36fc6d5940aef7d948790a4270a2a294b1cf6f1fdaa32546f216907\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448fc30d1319066315ce9181bcaa5ef2b259282473a0cc79660fe352b994933262\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d9dee211ef2ea1710979f4280ac80429834648b989580a055cd218c9486c1d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"47342bb425233d4aa701d07c21c86d902e6e45d880ecb8da656553cca03df7e91bd243a260bfddae287176d3a33927fda122e361adeb54053f70f41e9b2e9fb15ef18e8a44cd4c75235c73\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f43d0a42560bb40c3a3650fc0730fd90db45fc4b6b2c743f6a0b50\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a25aef83ece7c00a4a6ddd8f973aa1c69cf14c87323c998641a70b18da788e6616\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6f4be3b44e60603e972223e91ced9c90db6ae1ea1d6126f6cd2bb324116f38765b0d13d164\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794472c8591448f13bc645a2bcc4895665d645b702b44a1ca29f91301f5e0312fedd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884317192b7feed7553b218280e4aa8b8694ac213616e9182735e61ed8d16737dc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"566337738635fb06a2712fbcd58210bc5cdf7fc1efe9ab069d8fd008fceeb781209197e74abc74cc4079ebcd6fdb4c9a15808e6bd786cf1181d04d3d0f7cc1f622670a0ddf326b5208d7b4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4973bfc09b7e026cc4c8babf66fea94588f898a6d7c6cde222792c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"184a5d956e1ccf480ced8eb2fad3dc21c5ba74df40dfb743423e75a2c7971ce4dc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0261c0d077b863bf31be0579bf2916c7bf56b569b62900b5497cfb8ba0c12717c15f4d0160\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b91277dc103bf9ff08bbc33339586405af2921b61cea04cbae013a52bd1da3b4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843af0ba7b1c8aa6a38fcaf1b343c695043b955e46d6fcb76a95c482d77869a99\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f9e93394cad92939e148ad06ab7f75e6ab089efc4163e17ebf032909bb5c49d973768091f7f8038f024303c052a037d1ae3fa4ac176ab0d452cd1bdd964d8ff50d81d74f8dbd4445081a84\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1855ec99d72a57bcb1c54d7e0595d87c1725fbba7832654a2d9fc5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9fb4bf0e27c55710a5a2e21be6d0c3a4383ee3123867a7b5d03933aeeaca6ac449\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"308181d044468369cb10a32356c850db0fe78331db1e32fa4f7dbe2b0fa9f253a0df0018f7\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af0924f4f8efe7cce9385658c2d51efe208579aa03406801500d347a141ffbe93\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b02b5f1a1931864da99e75c615f274906adf0bc3faa65c7f8c2b86b0f9b656\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9c1e4b2a66d00a9b44b656ae8b75cf26d9f2589f4ff071d43593a79f4c8529f8e2a1b7c5269c22b1fd53125961277ce6a000802c1b4ef7a0a06f7d3ee85db984020a16a5e58278763db15880e11d2c80a4e59bcde754c56e5f0b3744d127a565472f37\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9d1b6e5623845409c2501beee33838df26b9f4118a1b8795ebfa8a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"50fd4411434cc54c3a735d3066a23f0f8b9cc5e1692ea127a3309669079a069478\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"084d3d560a8fe8ccac2a1e920623186049f95e052a766a981fdd6b27c26504906eb82ad4c6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a24f320c48f15b9313981a55d57c1a174bf37eb1edad431fe4c8a558ff2f2f023\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657f72320d5de489132f5328867307e2de35fbfe3a3b501bb53a3fd46a648db8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fd7810164a6973ef81e5069a0043b80e2d9115737147f09160034ad94aacc9dd7ce2a21cdf48d77b07eaeb244840064e9fe28824c8a2a2bbb4321486031f988a870aca311fffbc83cf2addb59ac174786595247a595d4301f9f86462ad6c54542a95a0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b86d2cd35ed8c5c189429cff9bbd17546374b81ec211954be04d1f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4f38d08350dadcf0321fa3a1d1108cb5f65c6ef5e28a8767c28e783c604d45a831\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1dbfb10619e6d7817d34f7019b65801e9c0936df5e25ab12ec0423e9674e0668e06073384c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a85017817f3111246217573adb4391f6b6ae841d0935d455e15f1043f298c3e76\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6593270cde30a4c46f453bd4ad185ba59c7c026b1b69be9c67b5cd49ebda1380\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bdd17243569bf1e548d0217a8c93734deb44bde08fe4f11019eca1be7b83bb96a1c7ef71efb6ede90c4c4d807b95562a4b8ca71832c0e4f6e012d22a6b5aa3fefeceb6e7014d6bb462e5f9b94c9a7baae7ab0f2ae8805e1afcd057b112b10570dd9581\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"965f6c664a9ac60f4dd53b6c6fd93567b164a6a329d73b5e3f6544\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5e5ece6d35919f8fc3bba5cd1bd8ab8f791f7f4c7d636e6979abf338bb6c305486\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9465570d65b728eb2b52b1b740c353625735bb70f48d927580ec12e3600f404bc1c5ebb5e9\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0c84d1e1a264c0f18e4cc9cbe5fded09b4888faf524c05c177d2bf133828bf00\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c7c5fcb4dc542b3a68a4a44f196ab05cc627069d1cbcad485ebec6dcf92ea4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"26adecc6f271903ff8a9089de3fced0e25c94fbdcd2816fe9c7af534acd5938f560e9e5fc2fb837e5f5076d728562aee1170c192cdedf9ed379f73bacf2e0fa2e5a581aba1a4a007b9d472bf64d32d73c15cbe38f3b1747d8c5b18f1fa433792dfe7b8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cee9a59bace6c7a2ca48daa6edb663a5c5a7b3507240c1f7443d83\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0aa7cbd1c2eba56048573c33c2f990ff22fd71549661f46554a9698adfdb7c57fe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b79f3db4961171a5e5e761bec8d4128bb8a3e0c7641d92f0a5fbfdb43bd51dae73da994a37\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431855403951330e472780b89acb829315a31a8ef71156cec601ef4e41fd61c8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"018b1a5b9d8448320c2c9557ea66909d73e45c1906b5d887225aa7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0aa0f7c92f13b56ff02a3a9d128fe01b8a58843a9167da13e3fe27\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f3c3e5cc49fcdc79f84f0302de823f75712407c4a418f472727c3da75e14561c9a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"02420a92672a3f7f4bc4e4b1ed94cf498ac503dcf5a764704801eb0b993bc3b2cda94b7e74\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bed2c1e4186417079ab713170775dda6375f5a6b92471a047b0ba305231da1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8bab0573396490b62091ddc57ca1824ec4c95b31f84931257513c2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e3e882e2639f5efe19ba93d50ac2594838f51af06ee4897cf506f7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1af585d7ae1fe6e1dce8f3cbbeda64afdf7343f61e98b80087b65302933b3b2f0a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2f6a330052a53c2471096f41c007794833a762ff45dcb36674814c5d1a2bb0cafd2088461d\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432830411f43b780306e3f94b9e3becb18016c41fd51fa7ed38f1a6217bdee11\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"822184f6ad708b7539c99ed858caf5ba56f2c57ba55d34dd3b6778\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2f97e72757dd3b46921ce96827cca0d01e819cfc7db9aaa85019b5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bea8ecf42785759819282424c5547c1f98b871a67d1d6e3fdcfb6c2c65d54f2ea1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3c9d968a1c6036ef29ef6a031678c621d1629cb96e25d8f11dfaa29e1591c5648e22089217\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884361eaa73dcd5e987bdd28993ef87d0e5b9bfa9da40a462f546b6b0eb6ed00be\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a239750f6fe23939dea706034f1334e42f5edfffa21dd6b272283b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"81acb681b3523314c5a9f2c8843659789d42992e1b2addc50e9a58\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f6ae46773bc88e05f6967bb1427490fdd122cb5433db1020ee63307f6093ecfefe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8433e57518cc5bc88d1b5c3b80f5d946dc7b5ff774fb01ea29cfee78c679fa3eaa10fd7cac\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652ebab07b9e3efa78580dc4c9962e02e8a3f94fa667f31260054748ee299f78\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"15161beaeef11204e36c3be8208aeed493bd4c726e5a46f2c95bac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"91f771ae92bf8593dc5d6eafc696c695a899de8531ceaaa58e7636\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d89d0a05de0284f60013042319f75f2898b61d4090978295bd077923191be167b7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"09200b424a5bc6e8110a8f26e86fe219ce2bf35a1db7a8ba830faf376744fd87b97bc545b1\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a2f6e5c6b45cb1666e8f4750ffcae8f2494e54bf4b89e02db9a132516feebe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8842f3892d5220e432339be7616428db95b1fd33ff0576cc4a6498\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0a82cdd224fae620ecf7e9ebc0742bc5ad9c3a2f7e969d8df33aa3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4b306eba8ad2d12e1b4c35837add9ac29a629ad907c405c8ea416d1cb6157b709d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"adb24e94a4490826d0a797ab4ffadfc1994b44f904168562b692e768818f103d2486d9c9bd\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650f1bcc5831af8ebd4f66a7fddc53886decbe8df041560c908616cbc7113f2e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c205e34dc1786cfdcb14837b98b5481fea572e4a75e1f2b140f346\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"08efe9acf50b78e00db26a914201cf989ab8820bb3ab5ff1e40288\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f0ee087e615de7e46cd49be196c66081bd87d66bc88db5f2adcc5d2e439d154168\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"acbb6a9b5cd774af9255b13fa7934024e337426268bb4b10a4e53caae85bcb9f1b4b5b591c\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656551e0b679afd00f10e9164d6a39046e0827918ed398d843b272cc0c5f18bb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a1159e7c33647519f336b6a937d7484ed59af9215f9372ce1897e2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4da5700e70afbe48a0be4fece9d402fa94f25155bd75bc35a74eba\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"604e9a49d6404a052406235f5bad6d1800f5b379498a0453e34eb323bfa3d37548\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"817f7b85070892b0f00cc34ea8f0ef1dfed723a362a6c499e8f12c068b6a91a066aa697829\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430dc5a5f812c94a493da4e62c41bfe89f3aa7e414897f44f3447fbdbdc71173\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7071f1dc6fe0626f2aa7b140d56210d84b8e6711a47dbf697df53e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ddcb0772ff0fb9ff7ea63492353e55287191bcd1b2168112166f8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"66acc4b051c29df252767165a0b60d18bf869892233c5c48c9b530c7c689c999c3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0e5bf2f00aa7d9ed4c3d59383e9aa776c509dacf0381337517cac4214cbda533ac1b686cd3\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aa5f86140972f5dfb166851dcf6516e5343785f29a48fda87a54c8995545ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b7d43fc6212aad43c3f95c2ae06fd3fe5559bcefeada01ca7a3626\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a3f8d52800d600207fcdcc76846cdc25076547595d26539aa65f61\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1c58091fc3acc395576804acf620cf4bc8fd9d5ac9bae44bf4d9e9fc2250c5f202\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"180a513c739a61f1007c74174ceea252a6bc4e81d11ea18e852f2c322be9daa088464939f7\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f452f44ffe6348e3f7564617bbd62f576b58e638ddd99fa00bf7a2fdf9900a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dae823216ea3c3b4121ce0abe3fc97886aa5c1d0e4259ed35e14e5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5ad6ecaecb518e701091053fb4674194b06bda3fab117b6351d6fe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cd34eec35445f97ffdb067c54545dce49c5fed18503701b1a9d78947b5e7c19b77\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d6eb559ebe549726ffe0150800f564550cecc340bfc496d8a180c4ac3ed21b8264989e39c5\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b19d7b6728da022936f9e2906c6d79fe720b959b53709e7724ce28538a7a56\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"338f6dbf91995cc8d682392b6bc7b88ff1423284fa4cf6fba21738\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d4a1bf00c4b0e2ed3109cbaa08fda8e689f496557cee2f2383adb4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6c4ebc6c3f2d27343cccebd7cac3256ced73acebab258322375007fdcf1df4a656\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"461d4dd9634f470bfd98d68794cf792ef63a92818f2295b80468443dbc9722f2a5371a3a10\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650cea34dfa717d42cff42661d898b736e5a283056e94b47bf32ae8f3fe05eb9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0de3734e890dbb95f738b232e4bac2f8f1ae98abcdd8a983247dc2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ed3d13cbabb6ce3e2be64fddf9383159f6721674e229a50dc7d6a8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"68f381ea7c422817ea8860270afdfe67957816457a840b51cac081113ba336fe78\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e017d12319ca9d1bbcd1ed34e8f7819ae8d9e13056fc96a0d644104f58ba97d6379c3e851a\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c77e36614ef4499d00b3efd227da4362cde82b83052f9c7977835f2fb7053b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23a876cb6e37930448ef9d7dde2e02a6b55e330bae229075cbf1c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"107787d23f6bba913957f521cf91eb1f3bbff7ea89993bc8532d0f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"06953ad94337ce31a169965611f6c63c926a1124cb6c0c2bbadfb0bcbec78d6b27\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"505a098aee5a7160b8d31b0a53aedaa36acd837fc38a0ee84c1018d65ffbd87d6e710625b3\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659a9b3c9411d1402adcddc8bd2a8960b9c68077a1bd9a9d967817acf0caf6c8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9fa62685cff13be722960f59aab6e029e5903b787c127040cb254\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1a15598a113a83172d924fc0daf633a349e77ed83d1802ea0b7334\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3b97ed2b79a63ede478c414d6bfb97296a45e3d27dea2d1d60af3a2ec76c0c1fb7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5845e323e3478c1ad528dc82f58c2ff72c4fcbe67a406792ded7ae6fe291d4dc3c1f551e94\"\n}\n]\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b8ca58250739533c0fedd6e49f4fe5109d4307079a2d7d7922f767a5054ffb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb20fbaa7a20dc726f55c4fa99e30f1046985bf88729c725ccb1d8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"40ad58f77eafb4db2f1aeb18292a74503bfb2201fd4c8479094cdf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"22332e7a1522c79180f31d45b5c3d975aa1829d848c152d330f06762e6b4d87796\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ac8a6fdfbad4386523968e6118eddd3a5d3b940f61fd29be6e7f0287b381d01fdbdbb3ff46\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c8ce6228a954c08df1ef52c94781d79dd77067533755ff18c09833b684f253e6519739da5bfea95ca2842afe42c8f586b5dd1ae93621af4ff6f869e46f1de1f43f6f37a94ec850dba2119d96d486c18e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843589fde8e32cce5b8638ebef41d3d2d59c2244e1ca569a8f5cd67c713036b06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7aaac3d752f0b110ef65a547020754de1d702849b54140b50ce170\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bdfc44fab02af77380e5dc260729d42dd4e9ef8c470ebd7c81ca7c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"df35768c2614405596a0ee01c7000a5d6f5d61bf564c7536361c6605b655bf24ec\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2322b20f5d22054da2a9782398a6473b762d4b957528a0e1950e207e31a067a3034253d66e\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f15d51f479091f937224955e412ba2458a684b680a09b512d4332e10d2ba19b24f6e77ccf3ca0f3191db51f8a15620c397b25f1be84ab32ee844f0e384f63bb7909bc9d037e8982c3406386bd5eb29ff\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884310ff6606e0cd4aa6415eecd11fc56ebd675833b6af18ea2508eca60f4800c0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"855861749fc928107e076743758168de7861c45f84a4142f1ffd9a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f39cac6244c2e3ed09f5e8c3463f67fe5a30c346c1f599b454daac\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"05dbd2ffc8a6b46a73f50cf7912c0e8e32fd547843364c06990d705562d63d414f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"060ce9a73b614355432afbc908c65a2dfb28e20ac8c222981fc1cb19eb770f0776efb8b141\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794458edc3477fb0b1d5a91e1944fc9ca6895734718dcd7a9bce8710281c82756e53f33441d719510bb4c63eb712c578c803e7e8fb0a495cdcb8109fd2a0f30c8a75542f006a5e03cd46ec4bc8d7e1332577\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884385a653c530a30fcf444784cf3326a9fd33712162dad7f8c355c06ec4c187fa\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"05dd15ea09e610e70e71e311ccc2b951f1d8bc08f624327b514298\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b361197c672ec44063eb44f6d5ce7a4a10aca4be332ea6e00dc65b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d660f8b6d18e809cc5d2943779c8bd1c7c1963afc43d5c3e220f3ae219b1c4cc92\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b0f3f516e4798dfccad37132e8e5c09214bf2317d207fc81c3120d069173c8c28a9f012fcf\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442732f49bf19e1569077a8599413b73301c813b59ea80cded57d0dcd3761ca01457caa66df7b7c331b2519b23449b1eae1bb6bfa3a39482a19a2a9b6643ea386cb4134d6218f768c2303bec99a3e3ebb2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884312e6ae95f1d9d027f298b3fdfaa62bb8f2e696936a8de965c32b2597ee1993\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2cd59ab3e1649ca41abc82c89c8928e8f62edf28cef73fb0071352\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2766ad73c7ff5824a1f4d9510132a56dcb1e2903c0c062ee63cfa3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6419678cdfda46835b3cd1e0b558d4415dee8ca9b9002cc7b2d2e8b4d77e626dae\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ae11e3faa60865be5db94a87e97b3e1f6fd123a85e8ffb0f3857277e2282f6dbffe4cb5dda\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1d80cf7c348eb9ec998d640577b98c8126dd16b98f767aba66385f566132501848a216cf226529e41ae9570890b81bdfd30ae6e381254f90f78625f21b9ce79d3cd8911ee381f36a6c927c0ec5a44089e369d1ffb5a6146f0ac72f136f70b0b7aaf6598f53928e35\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65248ad0e50fe3fd1987d5543ce954f90adac363a7b2bdd5069549394d483032\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bca6921178e3669718511651e311e90c7d0ea8308a7ff8dba8c068\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d245d9caf4b17bd43549f0fc745ffa546d07254e7f9be7312b4733\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d3d6d16b73e0c89f05ba9b4e9bb035bd331fd37f4079a3c5c3a108576c7c7d208c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"80096094773dd4b0fac7d6866fe05b9a00d0a8ade5b49cc8ba8151220ec19c32a61bd46fdb\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a10052017d89b7853324870bd73e9dbc109504270c8bb1fb159f89945c7ae86594bc94364ec6874eed243477a812f981b96dab8bebb2bdbb9812cf34e95420757970bcc323b11cfaaee1027ebd8d4c8149f2bf185bc7599687125d44d282413cf0aee243bcc284fe8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d676342c8de8f945c3cf7f1aaa0730caaac57850524ba15bf13b2e4289538a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98a10872728d36129d52917bea2e70e3b54cdc9a186cc39daf5782\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0251efc6222e2d626692c4c2b8bf1a983714b33aaccb07a436b3cf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"62831fac9a13585627a363b13ccd83a66c370943378680e3e7a8c4e643442aa855\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"faa5b5dfe0bad1003cfcb7fa76bc42c2790e4f8eeb7c4d55e049ee88939fbd0f14778656ed\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5b61faaefcb454e92728600af5c3a34945a904b2c28f3a7a15b6035ec63a93b668bf978688fa56835ae16882ddb0e5c41b25f92368ae9c43e0fa7e3474af6bb73084c211b867e5c8e45ef40622887a67af31881660255a9f3df134bf649f553ce8b3420852239383\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6556002a40c16e2ca27b228ea4dfe0b94f82019d0a90f623ee6e01b8b1f465d3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ac09cddc17bc2ebafe0c63f830a6714207486d2e290c6f6780f6ba\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1f414a84df64f86604cdfbf7b0b107c10d6bba39cd50879ff09f8b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ad79e423179a40d0c1ab6ee9c3cf86537605a49becf3da634f982c24d43bf80863\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"33a7ae5685935f2387ed43bb67f04991c074c39fd01ef281f9abf60a27e3523879b5761a5f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9a5283b3e60ec4bfd4519a698636461449cb3135cf7367a1fb1a8c11b30a8c9ffaa885dd348c7c7af7b04e790645633408dac9e63698757e8c2ec2de5ce8814299b366df0128cce30429ffce5ba091a90edd298617dd284f7123a4561d8476dc0d16ff8112344ca7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d8f6b961357ac469a5ae78b6af75a7d2bfb4070de88555747fc727e0010692\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"50ef50d1be9fa400db8f4d554c784657dcda02253419dac2646d01\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ea467c0ea29ca8b9f5e918462bda31caeb96bf85991c7b8dac54b1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6626d42f19bd2fb309ba11f27c6d8284feb054a3ccf5586055e98aff5909c8ac2b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d36f968616eb6469b6a7a8532ba4698253bd491aedd6069d4919b0bb2593b6289d31b8e383\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b114ee25fcaccb8bb4188d8c4d38a8f6a23ebb2422a804757b4bc63e2aa9d9819ce7d1eccaa80424b87a05387d105168c35525d83cfeaf7f2b21c06644c65e412deaa87adc6a97854c8bcd98a165b07c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431e03c45f59837ee5d13a84188e4235467117bc0e1baeae66cb0e50ed6f21fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7365b14daefa8447d723d3748b11e56bff5eb1ce491e8f1dae492f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c57f5f4fa85d3ad7e9aad116f8fa4ad0359f94229fe6d7b4dc960f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e075748412d5bfca2e49e920aa3d6b131581c992a410dc91f4387d20d5c4078da4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"976e752e4bcb9ccd6f5bf2154c2407790e4bbbeb853119e4e9703c185a541797c6969eb8fa\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440fb5401f60d11ab90175d602b400d87c88d85fcf2302fedd78f40f5ab40f8761b4c0458928cea2105f9f249e41d40f89b0fb2931c3d46f1f641c3f18c250c40db6744ee06e866c1f1bd87b95b113bb71\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884338e374f98275b4e49c5e9ffd40c737bf6d438243cdbe82ad4d0504c9e6b99a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9cfc687081b82535039dcbc621c665420f454ceefbf19abc90445\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3a1f3f66c76214ca0f0964690d476d21487ea281beffa5c8a4d8fa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"386a6c01f0747eb444d1a6233e769104dacef5b04e5c8a0fdee56a0cc26e31e6a1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7bb3855e13b7e654486d63f61aa0b87c7abc635c159fca5c4a5d0f77ad662e9a7bac10a9eb\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442f4072e83ae135ad0699f346c89f5d6ed60ea938a2ca69174c511ab698d4b2ac575207920137a05fcf627c7553d09cf41881e90c90e6ff1b73b96c66f7ece51f03caa8b8069c4c9293154617dae52e25\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b48808c325a573c373897c8f10c6e93d42807961043746a61af31a619d4646\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d29f62a77ca2f4e56051fbb7815f8fa70504232992b1917a5ef8f1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"811b66558f68f0b0e5c106e72bc96ca1aea0e58d684972f45aa292\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4cbb5e06a688b10d8fada2d356e005fffef268a035808eec1103a254de4240413b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"27598eb845280d365a624e13c3b845897ef4cb7b8d038b8770337b9703b6790c9c74694981\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f64daf7a0092fc75b8597ceb377afd37579c975a84daaeffabc4960e04b32072d4d6a13d7e8556ef05f8b3ca7824d63d0bcef61026e6405f8f81ee00146ac8c0fc19eeade1e186020d3435433f49651f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843de6beaa05a8f5cecd969505ba4869caa1e1f5a9cd6ad1fd0fbf1889800659b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bc730bd9461aef56db21fc652d73b0c0dcca4ba92b3c240dc0a3b5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"68c94c17337315969155c431969cf204517779bcf9090de1b50e7c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fbf930eb8f06d3aa462feaa47b8f156c02d2d7e6835433b6dea091729d8175820d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fd387cfc6cd98ffb019507ea71f1b42da82ec1acfcc82f6dea13961c9844de615872d7dd50\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad11932bfb1dfbb0b110e9ac4238bea2b19ecfaf61dc57e4c9ec72821f4a235367c637bc228bbac3ad6813941317100e8020a360349dbed55764473b89f13a9c7b91a769978770625a2a7ed8863fab09000c1d1d412fc43c4ef4a72df1b505c9ef9a63e01db296857\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650c4f7d8864132e01bc651dbd3e7e8e9bed95f68a4cc3547fac1daec61411eb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e275d2203d05cf8c12ac9ef487f2b094b860037621579e895581d0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"98b92203252099cec595cbcbc232a6bb3a1e39c8a3077bdb799e12\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"29239223e4317ef1f119864e97951a7bf19cd53998181ff334ba88eae37cf1c6c2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"267ed1052f27fb078c92feec1379e76daadfca74997e08f0409ef2471ca09cff888eb61653\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a72f6793448b2d401d5bb2972468acb6843c3af47334fefd2cec6f2b8f618084fa83436272dc36c9ff77effe52ca2e2d27870d523731270460aaaf978e335fe39e413579234c35e46d6e73efe21b089adcdf13d0f4777f1b6878b9221e431d7e472c21262d366c063\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65bdb88111454cbbf1d794e8076f3a96563a4bfcf4f7b76393aea023ffc81d26\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"50388f6a1f08da4fc7be3f103b400816465d0aec0086952bda0cb1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1f5a89515a9ac36e09a080150d53f331bbcae90a2e603405da0300\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7a1aad938ea95ee762d978e06fc95d993feccd34c03cd5b71d56f0f14a1fdad674\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"03bd435c36e323d72b3582745e1317b5bb8e492fdb804c2e4045e69463e0fde26f6da0b4fb\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7cb5f044544b828456332f7bddf21818cfc4165e5c34818d429e1e06867b6d455aced345bdf6930c9e034331d4b5dcfc2dfa4d46860ca53ba734aa2d3c5d8fc7bf49891f9715cc7e6436ff851a2ea79b9e87dd95b00fe4ebf21bd456e5eba2c59da4a67514bbc9d1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6591e59db339d9b0ee6430911cc710dd14637753044b36c9edfd770fb97e11a2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"389ef748d339a6dcb4a1bc836620d57b953993c935a52f106644f5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e0eacbb1bafbc231e2d67c5742140c1acbd0c834d05c7320adc912\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0c183eccfa7c836113cbbb81e1bc8b468078c52ec7642cd8eb11ce215ccb37ed7c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8ba0f9154eabb6be3f9de06281a9b0567d24a32382dbb58a3a7a89492115e302012f3afc8a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0d92a05a5cf07b68cf9ef548086a867989b4c9061ac26b96e1c7bb023e1785927d4e097609b748d0c39769934169120fec7ebf1c6b5e022b202be3c511ce53c68491b67de18e01079200a36168d277f92d7f838dbedfd739bfbfb80cde34d4b3ef48730e21c7f015\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65799511b20566ab2b11986a6526d47f7adf250a98dd13e2e4be836654e16d9d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1862b8d50314718700529cbb08d186de2f34ee384f664f421e5835\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1cfe9f84efdb24c4e88306c006936e287751e1b86e8dc7c9eab30a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3d3e6546f475ad086179bab6509fd17d83f56268b7ed06dc00c755682511da3b27\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a8ba398e3680fa18ce236e6ba2f86ddce92d317c4e5eb7d659af24cbff6d4b1443c107efc6\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a3785af283c991bab613473804356ef6931f83acf64f99c274b93570857cfc5e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433a4534805fa9fe4eb8343ace6609160c767ad9b832e8eea1d9b7a2111818dd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5d8e67b9c1b8e36f5dc674bc5cd2ce243fb5d1710fa57de0370da7cc979015398eaad94603b05498ba9a613d2fd923dcaa6fd4288dfd8d70f419bf737efb4cd37f5da37ebb728849318c82\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3205e1265f809505e6edc092839d3156745d2abafbfd946b261e41\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"470bcb1ae099555ff0d729500df550418d6ee5149d9e40bd2f4c6b3d263cc818d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d7187ed9d217ba6e91cf596e4871012ccedf7b5bed0d4cb8f7affb020fa17a95a23371e0f6\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443e6d6a6ea5368eca4ca6b98d4bb43285de802de8da92d5248f7fe7781f719f4b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884380e1d99f9ef8a5b3f60f20288c4f3879d426538b7f5dba3f5ffa086a83d2e3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e5e11ab592a0dcd30d9558e1ee0318449d5c303c8fd6bbe42b9bdf2c38d7fb233cefee410004a0f07b4e65689b2e95c479c53ed4e35f6dbbb928bcbc2f59178100b8e0283a39bec5502a8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"56219ad4d36805401607114a3f96d3e5a07bb0f7e30201f5197024\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c231ee2ef52ea3526492d7c9f294dfbc42e7b3284cea07012c9e475bcc4394fae5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9b95440000ae4b609e7193264b0815d3231918c6dae6a9d8368818f143d84f4e7d5ec197e1\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e953bb4cd3450eecab157a8ce632f74fcac39a3fcd5be08267d5923ca353d4f0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884382521c3ea09af48bfa39627819b007e7c0e179dad4a9a7482841bae32ec8eb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f032de86c8d3c2099478fefb9b2e6a1fef904d3b2470949858ae9f497ff068dbb6ff7cb43fa51946bcd8a87863849aa7f0e663cd83961c752ce3be41384de8a849e4d130d9a2d717a5c7e8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cb54ca2168a55a150760c409e2157b9e57ceab823d897bff36eeab\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"948e26c8a5348aec2711343de8e7c8faa7cae4b6bf51e9026eab234ed4f3e8e8fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dbf0cedc457d87e0eaa4629b7167a7e552ac5197d5436a20a1b5ba001ca21116e22669773c\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442806e28405ac4325fcf83607489496d6d326ab3fe084dbb1634f801405a69297\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430ea4de2eff2cd3b1e7be5f7e792d87395f0863722ab04ec030529d6c5820de\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ec9136de99472b49eda3ba9fe84882d48f131b27386784b3f45e9f103ad1b6efa2f2e95f0afce5d0d4c8052aed81438500be54a8fd8dd4f5ba04f7907b312701d0d687716a30b23c22f568\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d6ea0c3364ed480b415d44c3235fdb311dfa8d6e1dc1e6f3a76ee3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"59f41ca9ea14a8305bae379bbdd8b4d5cf9bd308d2d7e042e2bf03c48dd910b37b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fa23ba8af343a3934c64219d3d0206d66894f7cdb180b738324608e15b0102095ed2f44d4b\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0f65f28205d5d9eabcb52e1e007117fad7c11d941bb1d021adb5ba32c1032c65\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655b7457232da7ed63d09a78488dec0898304497d3cbd57b1a92c1cc8f246f0a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"12ca018648eec78282b45ec95635f171c8ed8f3c474cab69ca17666e790b5be2b5ec4ef70bb14ea0721f422721f81100da6cc124ba16b90c05c5aee747d73cc2dd3831a551222af4c7b5bd81a9738c0846a0518c48020142a7ef8a6276b1016884691f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a59a787316269d86556c3bffb41671766547a03e36901e9a3d7b39\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3001c0fa334c17c91a7e519de17e06ee8ee51b9bf54025876264398e1401180bd8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"638ad5027b3d946a0f09d0290f2eb2cec828ef4a112dbefc50e2744c27dd08765fea299806\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3e994b7b78a1b7ef2e151730e1e9b020a3c8b584b747c3c3151561a44e67441c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65763bc337634cbf7605308913be26156a8b78938e9511fe3e56988e43ec7351\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7757af3e5c850d86ee7c9f72cf448b156831b16d51bc6fd6d0b3568c626063c2c4b7b5c75173b1c431731897f092e5e667d98184d061b03fa9a2a381a5beead7505a6f8151a0accd33432f962427e403fe8e405867fb9c32200d8574c7df19a9238714\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"355a0bbe56b21fc21176b270b8c673269e91e34560afbd90e476c9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da41267a0465d617ce1eacc17c2d21032b6755b36576a9486e9f6c1bbe8032031e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ebbe4a5414e8c59c952e44c9005c26d57822cdaacf147444e4f57b84e86ffe34925e865799\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aaa1402f8298a61905d65abcc056fe83dc1133a4163c0456203f3993b8cd260b8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6511c3201cefdc283274cac832f98a1ef9087fd310cfc8409a46cd44fb8429c2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e337abc50ba13aeb19770ab40ec61b4d28fe8469c00aba042b154c7bac799e9f93ab9511d27a1fbb9fdb80c9510dcbac94a1cdbda7353d118abcb4db87019f6e4f6af68211e07491128bbcb3bc06a0059f986537b6efcf353adecf2de6a16a888d1d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"92e4aa3ab3c9f7107ec93169852ed7bae9e704d0b34edddd1c4ab1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"447ba7e6bb44aa3a7fe9b68634c2a5b6f951de79797673beb54106f8125718754f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ecb0f42daaafc529074b469cbf6d2c223ed2880843d8618a25be90ca68e442c53b81566b88\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aea70adf6c452b0bb148c9334320f0bb108379aac37d8c033eda2b95318954a11\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658a6842d60b106a9e5afb2cab30c28f70cbf8b8c2c6393eb2e195bc6261e271\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7e307b47fde68be233b5380f3694720ea3b9ac1d015c0b3440940bf6a4676de3a7842b5a2a0a7bb0fcf879a1b885abf07c518708759a702c1b4759c4d49e9a37929ba71125c02a69788f3013fcf278b3d2a4ab26a8af33afad244aa3115be36282a1f8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0adab5a89c407b1c5cc3c3e20bd498ec7174662bc23f4eaf9dc95f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"02f7b5d55eff453c86155f450d588754d25594aeca45d779e2589b3e5aa2b59a12\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2402ac76c9fdff51313f77ca5bceaeeb4f62daf7051dccc8e66baeb4d3bf140ac81680fb61\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e11634ba393ac9f93896f767741fe7297c64b52a95b20bc07a8c5983eb100a5e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aabea6c8883a5a6de7804420322c70994289ffe724df10411be50430b113da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99e0eed98437100ab575e5aa157f20ae23f024a43c58628646991c47e81e64af9c46165872069c5794e99a6d116142986f3b803df2a6c12f39702f669d5d7818511d6b41218f19cea974ea\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c0502067840ee81f03a76badcc8c4264847069452a9f7531d74f68\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e2ce8208bd0c04c6ad779ae52b429d8cb6128a245297857e2c593576c75098b071\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5b75e02c3584b6b202de94cc05d6063970c9da7e67283c258820381207706cd767b5b1152d\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443e831b17811ad1eb2616b8a8c399b8035fa70012c38e2d5813c9acb80320e163\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843986455e969de88fdbb8898f879a9af5634c469ca3299eb9a28dafdc2ccc7d1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d35f86cf3bbe880a7643d128684bb756a08c2dc4e0cea86d80452699a6cd3dbd58c38f883a59205294299ea0b907aebae561e6c917ce7c72512c3c7fb203be2cf645659357144398583e88\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b4de3e0f823bc2b88fea40829801d8fedd7187a6f5919f96b724f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47852c700080610dbbdfacea62bd9cf9bd4cebbc79824a270002ff040e135731be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e882e8e61bdbb84f3ae3cf926f924bf1e7afe51ed96990bc05cab5d64ac3079dad354376fc\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944667a3ba0a0190f21244e676e76dee25b8265eedc829564f8c35d648088a4b203\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b1fa0563f478b6669e17e4de2f06c2ece52d575579ffbe1cea5cb72382179f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d36b68bf75b56f3baaeeb4966ff05bffc866bfe909a46231511df2f143b8668fc6988759f95fc1e49787608ed34dd045bdc3a9ea5be2f45fefa2e214fb264718574a2aea9d76393a3aa495\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1603c0fe51653f7d3dcdfee097e576f438f4fecdad48f663f2cdcd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"53c232bf486223e0db69d55acf9706013cb62e18538703edccefdb3a139aed2503\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9085d6a6b4b8ca6f5b13a2eff03947de23acbedf1b8c63966e93580f4803e16bf8465c2415\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ad6293fa1173853daa7c1d9062bedb9c990a032eae2491f6175f437a9b4e0f2d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437bfc7ebe6ef560d4b9697f28c86f9f1bc71f46bd2172bbc578e68a6cd1e51d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f0f0473709ee82b8bc32f256c4db39efffe74331e3eba24801795e9101ef3761e4d4e34e17104ef9fb3c78e984bb2ad995eed94b10b72fc23944b9c044136af24bf65cd8706c0bfe345e39\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d3b1fb197c89dd57f2ad4e3aad1700b5d175ff554009c2b1cdbb25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c24dfea06769cc94d3eb5ca9867bc28d905e6dc9ee48aa989a657566ef524066f6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ef0a20ffe6430b540290012635741659bb85de0b79617a4f21ee708a74b6d6221c791d6429\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ada2f7399c3813e14a38f45ec0e4ece9469323717770b70cb1e2c003d02e71d4e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ae59225a1a0c59c3431281bd312e6ead0537b816dcb33518a7b339fbacf086\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3ff24a619d09b480bc49d105fea8b61f409d777c478cc0cb58871ac6f396f2de5e28727ddf29feabb255db69f0ba557c702544bea1a42b1c93e7ff89b2b7804db12a3ddd8152e97f08660eb8abaef70e5ba2037e06d596a56bcdc3425b8ef1217551d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"14fc44403e9265662f845801e0e73cb2aeb9009f3f6a7619bd19c6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3a96a8c768e380978ab0997db564a6608baa525defe41d2727c2ee77900ce1ac1a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"758433c9f46b424a0b0bb7e59aa19b0d0ab0fb6df4db7ddc29509c076ee6491f387b5f0b45\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3f6f4ecf4bead8fab50f22cad003547594042dffb6d39f0500cdf0916a0033dc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cb9e17311c5fba997b8f52608ce899a7ce07a06d10c1c26c1d3dad849c829e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"231d0bbbf3dfbd61a70b461c00a1343c89c2b673ec83de6645c671ec00f5318e507afed0ecaca09ae877461654899be36486e63399e1d308e7e822995669d50c1efd4cb915be5b811584d57481a4681cc865dff6345666cea69e123697dc4135ebca6e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c403c841062c5c10f941e7abf1fc98e3184b8034a1a0b9c1b5dcca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0c81623ffe0b24e19fde100970bacc825b4336e10c0acc8d0f848c3c7447c1e9d0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f230d4475a7ba7f53b004274a22f542901fcb416f7d897d5dd0a34bbc74ec33d27a4d04a8f\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aff5dcb7f650f6c421e5d5f7f482847f68a40001ae3ddfd783e654b34fb65705f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e4ccf81bf95b57411b1dfd9445f5fda2429c59a98ecc61ff5efacef7810c15\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c2dc1fd0d80f24270e99cdfbc893172270c95d335c62ca429c0a57fdb4e7d62bc8c2c5368c76d4fef563950379434a90f9b697072590a4fbf774a768c696b7fb04faff1dacba0e51f391cb05434ba49e5a75b7561bd9046287c2fd82814a7cb3292803\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ec2aac37415363cd61a575c120c30de0d55e585c5760dec71a6de1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5c506f5d00ecc181f64311cef380b0a807ac9d75dd8945b5e52bff17c50b54daeb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"22d7a62126b3e5008f6a3b8f7d5288cdcc0092a04401575e326256629d98859cbc2a9381f1\"\n}\n]\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab4ec7ff6ec7f8e8426a7b769daf37050b5cf36b734f80c4dd9c03a55ada74fd3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6575d6fbaaae8c7bd8732e8d0e132a13ffc2bc7694d491e0b79d401c505acf27\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"40e02672b0f93171b80522214d8f1da922f8848dd1eff5d379c301129f53410ed949fa25b7ade8bfb4e3dab1da88529225d572509018e44edb2cc427002237d251ba3e18c2595d6b39ecc66fc4e3af07e0748e6c62f8cc86f27da47ec685fbcd38da7c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0f5ab37507e46961ef53765696017b27364d1b79b54950559291ef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"57781b9bf8d51a7c847981f879177bcecc4805c0688bceef3ddfd789a733ca76fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"add9496c28622b223c509fa242483e0d482cff609c43fc41b95740570795264a89cd5411b6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448c847bf481736e1825ab49d6e9ede7e7f31b70b0c969c0e7869098fbeebd8ace\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a5af26b637bd4215a7295174281040decad7e6e4ff0da22d3574055e081ab9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3154680e81a7544222f9ae71f1220d9d61597100f8803c13ee2212d85b2c548faacb2c5b6613f6f5010990041c3685ed39f1b7aa8c78e13c65f9afd3f901fa029940acd8d9520b42b462cc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"943fc3441104898f2d65dc581c11b66d89152e69ac34871fbc3f49\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b9b00788f44799fc2d1e9cf4d7fa87d1f52917f7681d056d0158e9c078da09d482\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e5b3384cbdb575c04bfdad4351e93983da16c98635fee53f7695ea20b3615f399c50bf0903\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d45960343a8afa7ed6c03b982e58e19e276cde0d6f47c3b6e8c9e7120fa05417\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439f521a1b0c44389f2f0ed762499e4181f482d956f824fa84d7c0f912e4946c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"710f7d88a1aa6abf417e7236f26e2ba29ca5d5d0a025c06d8582cedde9331b7f6b06a663031e0f972fc3bc994bad6e49e3f50c632067ed148f6101e6b1be04e5121778ffdb0936357343fa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9c100ddfcfb344cdc59a7c3c3325bd91184c8060833edd09e2f786\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0e4211f9b01b3d1fd76a32e3f44d590ef5ce4bff96dc81cdbd4e5a910373e381f8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cac2f689b83443ea3c776eeef2cc847068c204e2d71a1268f019d510a65e9a098cd9b891e8\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794494316842de0cab8b76af88fbab30916ceb1e3484770970f6c283db2b6d840a66\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433ca42a9e00ac6639a86e1423ac4f7bc9bae30e5059f71cf7782f67a3b38551\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8c8fb2f52a171df5bf34562543963e5cd321141f858331ffca0943feb0fcb94b75376941afcd4de56d028bba13f709bc343c8bddd7b373671e106a7da94e750d90d21fc94e8b7f38358c69\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9f1621173c0906561cf0b1512795802edbe16a34cae5e5ed70e99b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7c37b2014273b912ea83732036b853ae72407e5f689de5b43dfe43ff3ce6c612be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8ab022f04a76cbcb898bffe6a7457cd021550ba59778801b4d5a3a7da374211265f08443c9\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794432b067b04df93536a1d91a46b2607d4471e69c1653f3601f5523c8f211346d0b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432aad673fd726ca6f09214417da7587977a805eef112eb7da5b04b0cf038efb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8d8443d5b6f1e79cf48ee424a9a7d6477c3bcc506d303f9120017e7c6adaa4dd60a1feadfbcd24dc1a23edffb5405c8f66b7b9eac4837a9cbc2f87ba3809036c49020596d90eb8e8d51b9b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9315f9d7c368ef4b01990707d375baacaeeb565b0e0e9734d4d504\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c0e52f9fd5451a17bf5be8582a549ce8d675795aa104df836bee4975e8ee7dfcca\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"72fdbc31ca7e8bbb1118bc1323a8f34e97cc8fd360490fca801e4e3184a938b99283c14d8c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5fc47606d1ea43f939ed46799cb3fc7d501bd4734d195d9dfe9b021768932162\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65381ce290ac30b9c355a40b97b6a4cb465160218dadfd01f0a4db70c340efc1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0d85bb8da6f77dc9ccbb9383b5d9c5b217dd0f3189b340f72f83091b1d2f6af37488ef473b9f3b694b05ab56544b13ad34b4ea25fd286ced3a42147f046b1849c7b18f0c422e26371111dd2551fc2d3d335e76337ab1d932ba67d95289885e5cdf4e18\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a7128475b53c05954171bad3efb2736c55ccb5409cf473d2a9c69\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"97cee06528151bffc4c28e3019b7a0a238e23f178faae3c02918b5a7a36cccc720\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4223a246c32b33a0dad14eed878101957477e13b2130303a8f0961971f1b3cefae28a76b9c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3716d7cfb600f5fa32293884ef84d437df3e9d14d4dec062e4767329d7d060eb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65499185b8189dd3a0ce44a96e1b364e09c086aee2d7ccf04b819fb3f21eb517\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aa5c0a86cbf620256712e26d93c14f96e16b66c01c52fde3deee63d69348040602c5984f201f94bc57a612b71061b8a41bc305cfe3ddd1f53e7223c041d85117bd4220ff7769f2e7ece6741dab90626b225a676a611f3f613f304f8601c1a9696fceaa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e9e0c370af71a99d0ad1b0599b135f38fdb6e00e5c79892ce957e8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7afef82cad94e66bc0b78363829c6932792c624e947416b98c013e2d392547e3c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c4a082a4998e026c24da04dc558fc0ff2db21e004f705025d17453c4522e3db850f91b2bd1\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa5501acbf365a3a929b8e0b9c2bfa7bdd6c7fbfcb3acbc149d0236662a64a357\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657b919bdbf6baae239cf1cf672a49171a932eebd1825c639a23ad2af204b4a5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"37b5065e4f90820cc7110af1b8afba0d9d0e13cc2e0b47a4e0391a29d06b27138351bcfa889073bf7cd453d3d9d702ac7a648201b56c9653aef74c00cfb667ae84a002fdc65111fca71dcb3cea864203289c430c009c071edf0c803f2d60df1b47b2ca\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f504a75c9ed7e4c818edb4bc2a06fe706d5ac2eb538e467fc7fd29\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1d214eff8d1dc4dcf44fb3168623c6a2abd68680a2439ad0a34b34ff438b6fbf67\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"46f354175d6e900e862bcc93b22ce8566435816b0685084e6e4967f75319fef6ec05b1af7c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a672426aedd8cd3a868f22110306c5c8e02fbc00c7bfc9120899020ae2a0dbad0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650d2ef37f93f22192bf19a4008aa3030bb3322982958d153c5e093464213389\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"512e3f7c3d47c107eae59266500f5857eeb39bcc42014b6dc385cf3f7c2ff3d7da0c5fed08ef82f146e69435de859f9e147a97b55ec556b4e510d081656a433e4b825f64673797f0398c7784731828f9ef67409bd674088b7879c011daaa3b16001351\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4dd6e7a43ede95f2ff377b2a815d2473790f7ff9cbd63f6f53061c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a1b1c6bbe18e8d130f9596af0d2d322d927c0f547e97e24710e7ff89328a3a242f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"46e33c146bc091eb595d8e24e6bf4257f35d751dd175f44e0fbf645dd425749f0691f3b86a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447079ee542399f363aa000fc0ff471085cf9042894697f4cdbc1cc7ae82cc59ea\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b2b2f41b24aadd1ea14f8648d92bd672379ec994faabcfb5250778b323eafc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5efb0060744ee99c183a6f049a86245235ebb4dd94852296793017c9c65f976e98520c567f335cca5b3424fbc2074c43ea82c4850a3e5ca293ddf8440b05d8ca3a870dc70dcc69ca36ca81\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"07596a2fefaada1396d237a7a47053b44de3176b42bd44cbf6ed61\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4701383117a838c5f74ba0fa1ef31260d8ebf3cb6a43012c271283f8670e557b3b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d6fd0c6ff31749b244840bb1a0f87194dcb4061f5b446b554a8456bc435dae018026d67c2e\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a1fd56083caa07fa1dd3533c7eba55933f1f70b6719a7f46e1cb6fe68e0abae5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437652238ce2980fb7f3cefc23ee5f1f2d877ba2283ac0881cc494bc1a12b65d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3eaee24206f27c0954829ef01439eb6ec46b993c111f733890f54de909833e74324ea1ec43ac0e345eed866832db0e20d3e556361ab13042fae17217c7bb89572124f82552cfdcecd0e586\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f61b3b0097f6f4a48530340a9cb566fb1592ab5ddaa0c0165062c1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b8873f784c192727bd7f7175c970c2bff50124385d6409da2768c4951cfa515154\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"00fe3a53da369260286b3167c7ec9581d80a8850f834ac7b98fdda1856e6f5dce6d587b292\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449da19e23131c7594f5e2fc33713d45aa79792d4cd5fcacab0b8126b5361416ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843364f7209a3689bc1b45ea2af27cf6d11db24e83f2f91e7504484a5d8b68b09\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b5ea592cc1d30896babba26560634203b8f3969263865f2c25406c65ed3bdeba06cde0ebe16bb3d8dcf0619e37eb1898b38d4a951d9fbed95fb0f98783bbe30f4bdd414138e914b6092fee\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6d436f8171c022ee641198593d10b311bccd09713c2bef792c8a52\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0ba6b4f648ffcee2a7d2152f645576672f0e2b8b877279a4b320a1fabef7e93f25\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a9203a7482411ce5f4c6468424d338dee1e24ce645e092fe27393700511fecfe5faeb3438a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449196140ef78fe4672e3b7a249c285f0ffd3805bd73ec23cee0d146dc3e2abc87\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843665b24ff062685743bd2ab4070adf28f393397aa4ab41d88f453aa63210795\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"64e47c1d1aa6b405527ce46e25971c44dd6c85c551f85e6bb6bbfc5cf12fcfc5303d0ef94a9756cdfcccbdcb2e10c92018b318a23acff3888732773608a470dde8f2b141077aaab3507d2b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2b68dfa1628c282811ae7e181cb53d05912c024c1525be883b6cd5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4ffeea748bb9a913bd5f3dd73e266e3eec06a3e1b4db77dde0999b9a1128578041\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7b3fcc8eaa0e830e79b4625cee69292448235ad3e090ccd268901688e3a9cfa916ae3caf13\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6e44b02d373c58b6fdff305224cd44156fa44c11a22a1ad6abaedc80e43fe29f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657fadcc082824e12d4c52254202be3d95f903e9d25eaee4c50bc69e5a6308bc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9a02c0029fd9bd4b4681117f8b03db9dc18061c37a11902fcc72b515b6416a2f3bba315b0403fe4f6e8852d9c5ff1fd5ed696e106af708ff2bfcaaba88f392715b261c2205e4cdba5cd869b6daf7954ff13cab0c3ea326b21e64e8ee0eb374efe4a37f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9a0df003b56eef5c0404a33c2cdb71b429632b99cad9873d9cad27\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"97d9e2c69eafaa81d33a969ee2785f2f690abdc071319b94159936b9ec90cf6782\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fb226d276f93a6647ff9cb319be12da0a23b6e7e05d0863f84b735d294e3199d76044ff412\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aac52ea6501c4e225f078f08578d89fdbfc60a0459c1b06c828b849749a94086c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a04be935a1fb94ef57baa18cd1422fe616f01cbab4364d3483819f630c25d0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a938f183c131d60cff19bf75eefbd07e83bed9141933f31815120696593cc266df7903921e53375e2e8c5043c9cff4a862a535be744a48655872885e5ed5c7a88c0021a58be1f404308b2b74aa9bf4b97d411c0bf0b30a521e6295bc6d510a63843b1a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0b6f6437cd00bda3fbe56d1072efbc7df12ef9287a348168c06a22\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2031b356ab8d264c887c8271a57f8ec9f340f25b1f64e930f825008d4954e598b7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3474e294994f7cf22a060bcf64f37cf9bd9e3e7e94a27421a6fae2aeb02b5944236c0eb1a5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad56467e8ec23dd1e64c986bcf6609f69eefff108258e2a7999cc5c450cea710e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65da763e84f14fadc6ecac03cd47797fb6f944417f672cc05969e58198c322fc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6ead4df9ab9677fefee6f99e474aea3789fa6768b0fe3eadb564143096d9dee912b4a674c54822bbb49098a7b08cab071243fa43448d2f473e4f216a1573b5b7839af2147fa89afbaec62a693c07caea7ecb84cde4840a82abe558ad3ca48b0cd86261\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b8de94695f4996f98d4f9325035259a1fff3758d30dac3929d20f8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4cfeb50302c4ba14c6c5be69b4e1442a5f7b8eacd701ad0265696d4dd70fde4952\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c40fd2a8268a3bc9fbca1e9151f1e063b799c09e0bd8bf0c0fc074829ad91e1becd0ffdaf5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aef60168d577dbb8217c162b2bae9afd5e0815516520711796ea083c12f2c8822\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656f238647d818fc8b0e6ee3ddbe85b7d1f0782d0fb4275ad2184cfa42753480\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"119ead2f95f7fd5fde54cb37f492664b62ca3a5e7ff5ab36e53046522a67873eaa364864f0c7c06d9d6d9facf2ccbec394da4eb0be6e2f98d46ce1ff70e975f40f468d8f60de72476e2e4c372ac9a9d26d6ac8ff9552f125278c5d4486e7b4251a42a2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5b62c0c72e05af00f0c7b28829d0bf208b6e4aa27d17aa281720d4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2b9796745e9655dbb22143ebcb657db49c90a9b51784cd48d2fe26504a537092f7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0893d5d1ede4a0b83cceaa5db8fdedb95072c30f834d2de2eff8efc5203d8e6120a5947201\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944718da798efbcd91528520204f904b9bd6c7413dccdc214d951e15253e39987f18146e8cd0873654207148333479d4d16c289f0294b29960a72f48e0b7bba2e89083169825e59642148d492020664ccf7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435361e70b2ed446e6c9ec387d1d6b3b840f194e373979d241b203c4acafccf5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"050e9f3c8fac16b68dbce8f8c4bfbf6617c897f9ada4aa29aa19c8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"344233a6cabb7141d80f3da2fedc311d9646bbb0f505afe403a667\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"62cdeeb172ad7ade7aa7d9e069da5790f12331bfa00177787a1d0810c67dc3b2b4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"029bead1b40992327044d409d9a1f3ad8f36c3c452775d557e18bbeb2e8dfcead32d514024\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447a2281c0f1aee0c48c41333a1abbb349ee4bf12e09f8c4fd66635aabbb7dad346081a79f59e2cef812260cfe8c9e6a99d12f7c7ffc9fe5513818d9cf9b8778d1ebd1ce70c8f726d7869830258a788910\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f58050451a0edd2a40bb8b0f6b51ea8094a07e3ed31ebc516b584fef6eaaaf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cae0b6af5460d026e80e22c27572a92048176872538f91a056a8df\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ab1440d2b5892c638a11a7fa6412beaea5cee62342147f02d75a68\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0263ed778a193155c9947202e0b9d35eb46581a902449d091e1b6575a9a59fbeff\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"95aedd9192351379cb063c8d5827d5529c7f2c8929552dd64c57029734737ea2a405255dcf\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440b03ddc7aac5123d06a1b23b71670e32e76c28239a7ca4ac8f784de7e44c1adbfc6e83fef7352a58d9d56157400c0a737b1d171ce368229c7b752ac25b8faf4eca690f6d896f543be02c996ab2b86b76\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d9b5a8927f0ac9655ef76833bc7e5561f42e691ac8404efd6fbd6308b6a27c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2c256ed08fcd08c2980f954ee4beaccb61c9581340f5dd2fd1cf3b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d6033f70eee20945c7c9dba304e397ee3b284ff5e00fd9efb095d3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a9c068ca5d8babf72560652d8e851adbfac35c8a66e810d560863173e96adf4cfe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2a09d8f459e5927e40fdd2eddc99bdafb04e13a26f145cb5cfe9e6ba34c94331ebc17d5156\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ba83a447b38c83e327ad936929812f624884847b7831e95e197b2f797088efdd2f88f1db7e1fb0e99c64419097af91cee64e470f4b6fcd9298ce0b56fe20f86e13bf70439c538e3602a7127af71a29cc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439f069b267a06b3de3ecb1043bcb098e9af91d9c64748d998c7b47890871571\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cd54383060e7a28434cca27fb1cc524cfbabeb18181589df219d07\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a856d3bf0246bfc476c655009cd1ed677b8dcc5b349ae8ef2a05f2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"49063084b2c51f098337cb8a13739ac848f907e67cfb2cc8a8b60586467aa02fc7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b9709d23b47e4639df7678d7a21741eba4ef1e9c60383001c7435549c20f9d56f30e935d3\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a352150d389c72f1c32176d82056f4c3d850e048d3affa79c96f7fbe95dbd9ecaa1927467e6abca0d7a52550b3c12b219a0c71ee0b44c49eb01a423cf950f6b56591e9b88f3deeec40935ed1845f46e218bd2e6c90a5463f53c00c5be1e4bf8fd255af7d38c35b9c9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b886b4efaa37a3d770129e31a33d13edb6dbe95cbcc33159d40eca0219a773\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"09fcd21f19bd0a7e1b00eaf5c48daf27097fbbe22a711bb3501030\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fd9cc62d961f6cb090fbd7fff83f0520ea1ae8e5505aad134299c2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e21a66b8818a361cd4d30d91cb6d5408cdd1fe5ef45005c28aee3b704d7b8c4c3d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0a32e2b75c6aeda577ebf46a34b02ab94ec6e16957b7ad5f0617e28c7bad36125149e02745\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1c15cbcb45be690918b6502c7ad6225bbe1338dd37e181bde79b30fdd9a486d024d063354d7cce596ec4acf3051cd54ea90c56ab85d1661efb7f66f74a345ba10030d20cc55387b00bf2bbf2fd1f3f284ba18e36d9ea5c6f750d8dfeb9833f0b7bcd541d03e1a155\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6576eb73ef62b5f680bba7e7c4c6db9acdcf5547ae7092ebe404898104b72983\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"adaa61bfa33c31487c95457639edbb63ba6e493129ac180bdec1df\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1e47c4d2292e515be90e4cc9930cc500dcf3b0a30f08b3a5c77121\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cb2912c81039ac4a808013bd52835ef235de1e08761e4b8cb355c85323f58275f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ead620e1b0733eb87d0246d70ee190c91ea75a5b30e36c7a4d345b73fcc659e2df500276c\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac05d03d95a1aaa6d6fb3a9adb5f0308a5641c7f53283383050fae60a134c2c716c42a5644acc025c40ed4ac02b3dda677eb5a468c04a7d28c099a354beb04245459515b51edd74b939d89199d4f4b5e91429a2365ef7ddab5350ed5f5c39baeeb0bb514de125a593\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65700c426d0b1f3ff52ab76c7767f16cfa40fe248cea535fec1e17d0ca93a46a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0ce59c0e9870d1f6fb0077623de2b891453121c4425a79047eb982\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"204a164a29f774b0d6a73f8d1722ad759eeaebff5b0ab9f7d9ee7b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fd71b6b5f1646d134c8d6cd2a346469b777ec4216af68208d96297758e0a8396d1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e09007536cbb699e261bb59c9367e3d7d79885bdf4916ae662e7e9263be265d77163710bae\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad722bcaf1eeafbbc35a7cc65168143bf6e6094ecda0baa69fde2da8be4fe7894a13d0040e7d22c6335155fcaa3eec3ca846f5b5a4483736859d1d299ae6cbf092ce5eff52b05e2bc0a6662372ddffc98acf00a42517902d3e12aca78b503fa29ef300896aa39c92e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65780dd82f6a9d1a9c02155f42719918d9f74b90cab7b8778f3db61d544ee016\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b47460956428b1badeaaf611be498746c3728ca5299670667239d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5ac6b40533a66340fedd4a1a9bab395978212d733de9d1b0ae237d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"12101f0bbf13ac105c03e2a3dc6aab6090cf4282ac1c87885ee572ac65b8aa2d2d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"87ff954000cd67b9853dde79ac2cf346dbc2028b1f862f99e65b9d047f155cd76d72503952\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444e417bc55c7a8166c993356c1be41ef67818a292426f301556c7f26b21d25ddb097153891a9a956cff47b83e63ad8d701c1342c209cff1ca5ecd43402762ac249e3bd3a4c0a145fe07cb5dae28ea13a3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843af2ccf9972e22afc67aeafcd25162f7f98c363b7762e3e4cb7d272e39f27a5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"66acfc92e3197de166809e6d4d5d003dcc819a84bc3522ca53c9d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"71f89aa6533a6de70b0826864dd75f60806ee40170c16290189eb3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4795a3423550c8bf00386bd496a3e2c76c10669d2a75ab8f79b5094c5412a25705\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aa0bb39097555c918e40be82abc2b909eb79d9eb87adb07e268fc37323a6cf904fd01fb391\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441edc6a898ac79b09a5e21a391d717cc9fe6207726ca03a1ec47e7efa6ae61cba2c392f2f30d00850077641ed02d38c0f11bed6a3a668b33ecd3f324773f791921f8ee5b0d422bd6831686aef505dcd88\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c9993ca1fc214af8c6a4e228b2b5d66106b2bbc5e4537cc17655e44ace079a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9f752880da6468eb9bf272293d8d3d1bf88130372e4d26f12b921\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9bec50cd609e30cbc702417247b3854fbed537decc2b2366bf343a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c27c79d9d975652bdf091c566ccdf385d2f6f8ddffecfcafd80d9dad70b7f6ca5f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"12f01efb31171bdfd3263e601784d51d51872897e169ac8a382388de223103f3f6c211186b\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fc16af5edc066c93c77be147f8e6785cd6bd7b27e0f660d02a6a566ceb61b22af4d0dcc8560bce79b2a1fb55f68bc34017319936516ae9ce0862fe172c77a883f241700cb26d145dc8f8c9fe80a29008\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884319679a2f2fae0ee3700b9d1f532eb77fcf485567e810eaf95b2f9eeca858fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"daf849a4f4bd8b0276f120b017b9dfdbc9ed667ee98316e95de1cc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cdf2321b9584498d0ce313cb0c995c3ee2d679c1f3c22576ff1e90\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"abc41aa7b17f5d7c5b8454c203668718a15020b72729f1243490ab54150338293a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"59bafe529215e376187e06fcfb6772d6ca7f0946877e77aafb4a90a5fc6c4cf82344d5c949\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794410ade309f400533fbc81fb0e8b55288091ab5fe35d8c3d5033dbec503bcfa06269d8692447295ef3f3f47a1d6e6048bc4889db4631c5f5d18d37edd34e113a664e2eb59ac55371831af42186f54915eb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884361923da61bbe936aa0e52e679c8a0341ab3e9ebca061b0423d0758f1c92d86\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"76c378c26ad0616d8b5d12fb30069a3d2006f09c736d133b1b00e2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"44256a9fc73f965bb05905cea2c7f42446fdaeaad4005e3bfd5363\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a760601455d420b671156c561657a8fdc110686208d9ef8f524ad3841f5718ffa9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a718f0df83c0a5e0715f7212aff997d406a65f06660102a7f522d9d5dd8bbd711789825bd4\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a35bc31dce105e1d7ed1be79a962b967b2039b1db3ab05e4afcd9320e6bef8834b92f81097f23d50b6c3dd65e5c5d6b6cee5b95f37b4fd920cf923d6ab36b5fdf8e8f9102b31a09e24b1c8f14e2beeab428c285527e9ac1732ae499f2f39f80702db9a74dd4f716a4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654a9ef2030db8569a07942f2c5718280a72849321235249df7a6266169812f0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ea91c9c61d3bf6547958958840df010f2e33b6acf5a79488586622\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6697fe69b0e1c6a7399388ac29cfc3dddf677f8488318ed2c72ac9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e26360b6dfa860d87b615b6fa1587223541fc523f85556d37d570345fd4b2e6b4b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"502a028a54a55a64263ab9e1acd6d617e318fa14fcef75ba3bc45d634285cb7d4e672460a5\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae06567777271548a8b3de33e22b571a24665f093cb05b9942ba5439305da7f72bb010d9fd8765ed60f9cdbfa333ab6f35cd0800347bd47e7598f11745114ac32cfdff9089e018abfb7bce18aa15a43b3125296342f6584a567ed31b04320567989cc89bd50867f2f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65842330ec3d2166677e9cb05f4df49c067342b879e14739157b1fc753640db1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f2abd6c5759d6f77b4e002db75d6a9dc63b67cbec718b0d3fcc9d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"33a25a8845eb71c01548b2394749a327318e426f4f4d356f9613fa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e7060a8b711c95df83fba69d6c0c21279d64626d1d3e3686821554c4d736caa785\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"946385a433a56e4e40b1ee62ab5551ba86f52ce69baac29734ff96f4ef3441b9bf3a97054a\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a633fc1290f9c64b68516720d32b92109bbe4f14876d501b61fceb77de8d848bf72a26ff5e02fe59db61c9b33751a1033ebb03c25b3a9b91369b6497d7a9afb4b7b208dbcff9ad1acb83b215502cad6d93790c34cef4f32a10118228683c550bd44878cf1d52c6216\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cd7ab5fbb4c5220ef8d7fdd0692dd181372ce9ec132179342f3321cdc6106f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79de3d4e9c5d27277941fba3b37def162816dec55f343ceec4956c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"08a84e1c00e7bddace7e4e3304eb6af2f9b22a2b783ca9475d7e68\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"04a7926e9691af7681097b126f3d4bb1109717e4a2372ab8c4dcc217034c4630c3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d5be381d294d3425850073103def46fc6970ed99041ec76115e21711a3cc561b883b887296\"\n}\n]\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a47cc8c62c6572fc88fe6c3cc02b1318e33d3ee442c8d9d7d81dd55f0320f504e9300eafe6eae4e69e754003ca991d02ad3547107737c0c4d215588053407deb2a24449b5d9752498c4257156b977c199a86f7d8c146a2bd7e443e91a2751f4bf95cdba3f7bd06fa1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655ac43cae3c6a2fb98e3c2ec3ecce6925e6eda7542ef33652219d28dd60e5ac\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bad47053153e9b211958a6497520ee4c9d2fd1a7536cc6649ccd83\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0cc501510971a685d711037f4292daaf82a8c3cb23e722fd784848\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a0b2c08be6cbb100b21698bcafa4565d521b0395b52229abee81d046834bc065de\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"acfe9e853d9b65ad87bf30c152c9080766e7826f8f08cfaca681a38246bfc9b408adf22ed6\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944753ae7206c8e05b2cc321bffeffe396c5e4e850a3e1120ca3ae5a18432026938fccd1bfb135b376c5b275ad1cc2562521eacf24f79c1801e6d5203a93d7e9a204703d3bbcdbb3949e4d40517442ad737\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fbede839c8814834ca161df0e52468815352cddc94cb3ccdd4aec2cb88b19a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0027947113f43bec38b1955e725497299522b0ba87c318225fffc8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7586e50d59c5adb36ce7cbba234cac8ee42b544244e7a90ee8a6ab\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6dd4dbda6f1d073e6b15e5aeb6daf23de84646c1fdb199e094f1ca107a1f83fe9e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a6e71855d516e6a50ad65b954e1b9f9b693f134374bdf659167a30d43d7212cc4e6c0c55b8\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794479faff4db49cc985d64016262fb217c5198d7e9b1ade417e4e26b37043065197d743fd82e2bb3271fda1b7cf89026a4f98f841f73aec6cbd7eb2f77fbc323193244cf8ea1e53a70dda5443c4497ece0e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433d7c9fa15ada9c13d1a2d44092923abbd27686f04c641f012d4c7bda655a5e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"82ba36ace5331d947425fb86cc516b3163ed739893ea8e576635da\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"148211ce570e599ca782dfd595651f3c663e51d57e0511a503ca7d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7e24af1c6d0b7df9a30dfdce6fee4fe17574c3b27d5769bf567bda50636ad74fef\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"151fe6ff9e70e70d6ccaa440d31c9d92972e7bfb391309dc29343ef6361efd8886e3f55c57\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f4cb9ef431635780e38d6a16ba2fdff3a46527b82dbc8f513fe6677e6ded22bea3aed1359b60d51602549ffb5309f4401cde13681675e679882af3b4981465577ff0d32cdd92393222c2268260179177\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a942ff735231f1ca044f7971b9ecbd2e2b825c6a4852f68c31918f414b4b0c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a08af4ec58d421d11b7c83b052a53edc49408c57ae162763c3c4a3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f7f8a24cdaecce6da55f53d1e2460269b1b4c0ee5156e6afddb971\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"efd5ba713c7282b5c89448eb0816c384c845207287a2fafb0e4c7407db04a17726\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8a09954087866c55dc835e9e82360254075a5746635ffa2626ce912e63b1a14bc221779615\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944645dfdb5ee102555e3cf230eaf1ad7fb4d8dc3d0333920faed1fb44e91cfbe37306e837073fcc080c253df20f065cbb529d58380a035f6bc60bf230052de4303038f6a89a1eaafaaf7d3f85a83659f0b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437972e42f9be7f7cf007fd3b12caeb871322f6189030c2f5f940422a580bc1c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd42eadc1460270c2cf9810ee16d2263bb25ee60a2129f6ff68565\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e037a578311aeb39dcbd879b60157138d9c56e9fbf559b4569bbf4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a3621aa9b1b2c6c637319f5bc036dbf556287904c42263774741d2c469487b794e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d118da4abcca38f6e3d91a3a1a0db5e419b654372fe766cd79e0da5f59c34517be31f5fc2b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5cca82fe5d2785097f9c6b0a624cc6d1ca17f3c17339aefdf9eb4fec9afda04bf1b2f1149ec5e2621fd59645cca404a98ef01201ea76a1189764e82a7a7a736c61b2456d96489f994aa1f457a62447c0f779f38f4eb22cb9c71bb31f409cd1e9cd7c294483f2a521\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652dd11ac7bbdf7ac46855e0099b34409ee1acbfade7b4d1a31945f78bb40069\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0cf396f60e78ffdbe08454a4b0ac23ad5f668d9ce9aedfcffc328a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"71f5badec45a187bd2f1f9291ec7e4995c2c31e0f195392e8756de\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ecc5a70a67adfba0f57305a010728add2c000ed62bfe72a3fbfa349f7c8f73c9db\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c6e273e9dff96ef90aedc1d10813f7eae969fd090e534ff1fc21fe926883c58d2a77a169c7\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a67d504568afc115ce91f07b43eaa9f94d8a09e759101f89a4243c85e92cbf3fa692c6719d69ef7e56356ee73c9443fb5b35a05d773de802b9dc6412324b8c3be7d00ff7c9c03ed7e5e7dd7c3a199404eb3a4525fc6c6038bdf6caf39cd917e7ad0e674ff7226ed7d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6553e14ca0ba586a7ed0a6de27f64721e53945259f6ed60f6b39afc87c169af2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3e1f57a02e49f76941dff38288fc1723b370e0e3efc3634a06f367\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"38536f2a77e367454c66818e2c8faa5c3734da8728d2671bd75d1c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8caa1c4751c8694adb5b36ce344e602ed9f7ac86c0c0c499aae6f5bf5d87974be4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb9855272f444431feb112cbb63b852c15326223881d85751f2f3a060254b5fe9b078b212a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a251403163fe8b58ff0f9b0217d5fdb37ea1fdfe5f1c3f62e1d8fef4d72c7d937a1110d8f0fc978b625eb6ef96e8d292b466791c6edfe17843efee24dd37203386fb6d853da8c54b5ae5afc7f6d54a4bdef50854c834528a1bb102ded98cdf610adf4dc665440debb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654e799bd6613b2fee652d2e29cd830a2ec9bcdda5fc27c1b2c27ca09ccd1ae9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60e0ab28810f2095494e4020eb0e7e8ab835190bdc9e9037d75936\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ad01000b48d38f63b0115bd1e362b65effbbee36a2b138d9c9df3d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"768f9bf88b9a71b64ba2ace8ebc3dc38a1999c2d0c9219fd9d79360a13c4605434\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"28b9ad3b2990630796d112ae686ad8f1ea194f66a3b456a5e84f4c405c04a1810e059c328b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9c59741c4aa756a6eaca3721957c13a65a01da456a7c56e75d116af5aec7a7b6f6829527e0bd6a480fe874c89ec5627d8219be48f45e7468b787c648cb6553fb7519f1578f3f25c104f991e1f2780ade7106a99e94f44c3f454e6c2a7e71efc7c573b5ba020c5b10\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65764a1062f2781180b15b1ea637c2080449370c4d22f6ce35cafaa6955f2c1f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0271a004b361de8dea371f90f4ee4607d35f19fd5ec7e89783b232\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7ea9e12bde42b11d622cc2254f5b240b35c503c7ce5e0ed085ebd6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fd01e6000926ca53ac960d487c86703b384b27184110c8b1013aa678dce838138c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"27b1f6180120ea15a13915ce6aa4fd4e3b63dd2f34dc7b1378da1c9e48251e175d443ecf55\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e9f0d76231b1a63bc4d72a5873f2f211c908b463729d1d86ba96442c0534275f1ecbe2321ea59c71323032ced8c273afbe65c1baccdf5fa56fd26438359b188c0f2fa593b21ceb9508589650f9e8e351\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843eeb0ac7e0650910c3dc556d7096b6bd832bb9cc35ff58131919bd23a202e8b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"94a1fd1817edc8365ac98f3cd16233374b07e792e376c97a753639\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"85786071c061e569a06609a50a18d6cc3afc6bb50cc791df2a351e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"abff44b6f7877a4221561cd5b53e753e037f335a96f6ff2b329f5e020bd3fb2982\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1c8a81c7a6386256c0cba7e2a5f1d164d4f09ca0212fac34c267e5903a7669b4db06813bbc\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944843e14620d32a4eabcbba05c5526bc9ee9cf3f781f9c438a7cb92545ac5643a2ca47ce4fc8dafaea4180266882b9d5c97f6643a75c1d3a5d4aaeba3ce5f6ca39d74948b2f257a2dbc1c3c4cac982aca4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884387ce548738f4b5462afa929863bdfeb23f21a8bf999d70ef7ce4157cc2d4fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a08212f9102d57dc5ec972224d65bf1a564e2d634073a060530356\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"96f6c63a869c62ad739da8e7a05d438c36642ebda4bcf356e58d4c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2e4a9e62f28f05f2d7997830b6367203083688f1c5daf5bf3b76b410475822e919\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1706aeb288b5b79446c642b1656c01ff014442e8011777fa09f47d73aa12b0a253282e6c74\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443357a040687f966e12f8251d4b9633f900fe5d17aedc0c6aa226ed5eed2e0ff4224104acc5b0e8bd68af61ba997bc9d35f291b9b850c0f1dc8b2102473066daaab495bee8d5fe8a59c2b7e7b9b111bf0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432c672fa65b677678c48119e27d592aba989578762647e90f69b28ee4501f0d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f08a310abd4be9611c82809f3d8908e2655d30e5f54412b2ab8938\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c94e3be6f718e72fda1ba0d3dfb7b3fb2362163bec738c5e900733\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"87fea026ca0a9a139895a22724bcf9f8cd74831d9aa3fe574c79789cbc88ebfba2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"15d3b0714805aceded59e94d175d806c69d840837d6c46021b8ceb38048d7335c46f2d3965\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444ef5fb2a6349943a3895f34d29330a7993447006cc3434b9d45252e82433ad1b30446cca29c0b91e901cb3d095c3cb72d802a642857e23105879638b5f4d691c3a4c39ba824aaafbf1bf3f0d81c3ddd2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e56f5cbbdfcc68603ecff42d4f0fa64d31743ebc5b9b9c3aef0f39f6c9ffc5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1696652f88498b90fceb6e483ce3b1512ba134270075a620c13366\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"02b8fa2a53a8b8402b0e923b992d68d7a8ee54ee46d873d484aa9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9fb539b005ee30b1d47591df6e905d1156a03920254118baa1c303d5df82c6970a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"887e8fdc145fddcf36282934a1410ab7da0c79eb80e51c94b439234d3f7f0df1a4104e1a05\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa26f4d25646d95a14c1d4407d8fde7865a1ab5c5eb42c427022c76056c7dd66b17d98eabef553ab9b4e37f47378872a0f3e5208a65c82f5ef60f2f23190992253f1e725734540d205e954f5eab095538d952e4e716858577665eb9825ca7cdbeb0943eaa7706e8a3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655d7360a81f42d2f3a0adc607d9e817d07e4b0c7ef3f8f352146a650965f0eb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"691d64b1a8de9e93e3bab2481680798b2ad4dde8ab3934e8ce7a1e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9aa580a7c5c9dbac851536376b170cd2918f266649c257d7d18310\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"93c7e4dcd0a9ad2c771ebd8efbdd25f63a8ffa38ef9635a4f098452648b12fd746\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"81ebd47108b5650c6955c55f5f2c8cc0c8429331d9b0743105d9dc9a6eef3f5d95a0d92873\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab212cb80805eaffde97fd6f594388f121b591af0681b1b239a5f4ef910ce2493b4c06f6d4446b91807d29271319c10300ab55bdafd2faef5c373801dadf7a2d61736393816ba55681a1c642242f20fa2c5546ba0f0f0ee33e03cdaf374c03d9d9f046a815d0b94a5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b3746ca857d89d29374ec5914e69e76b117a11ba1e554ce7739fb18926e443\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"46a0531858abbcb86cebcbd46f208b4d52ca16742c244b11c7b577\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5f2b92d9e01ab2841493e6c8435a0805020933bdcb8ad466da9fcb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"edc550b57c99026e3554e26bf03a0d81c38c75cfcc7ae0a5e633192a81d79f643c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e9a69b9b60420682a71e813d63ef250d3c5f51432b011dc969a7e076bb917a1db37287701a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a944351f082ccb13329195665ba7c982b8594d4c2304835df9e1dadfce29ca6e992c26b799945e561ce7fee8a09b2c432fbf5ddcfc29504b5cc5fd56ccd2f2561909dc41590ee9b0d1e7f96adf39482d4375f2b456ffde6410efe6e628fa69af03256254882276937\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65eeec69d615850b9bf28bd3c524522ad3c07e5c4a07ee352d36ea39f0df74f1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c630a9e53431e4b4e8afd17f9b61b07828b59518be220acda39c0b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b1748cc5d990f364b6dd02e55d5638b340afbaa1e76d9db5d47915\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7bd9063e762d5c9920cd15b6c9d8848e8a7a2c4950117756f9acf062a0f1d7ee17\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7852d467a57122663b95cb941193f3185505a6207181e3780e82602aa7bc770a4341bc2dba\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49adaee9ff12193a0d2d90e4cd73b3c427eedf455fbd62735fcff5dcf505b2d291e611eca289fd6ad433c51b3e98700ead64f08011258cec47f9bd81cf31488c6dd3ce08894ab959357a399a593add7f9c497446ab849ffc4b8c86587173a16670a354dcc4345df874d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6563900b951f43de5ce17e2159c8a90afa2bb1e321c408041afa52a0193f48a5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2be15d22e17556054a5e06c94e9208f8539024d123a9ecfe2422ea\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0fac8a34ee4dcb6aa801508a29a92785b5877e62e398bb6cac697e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"55396b7068921adf7cd7274fab2b4239fc58f886b28b7d9936192b116c2388d5bf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b933797b2edab66e755631d23088c97fafc30f1b8916b489cf0e96738af3ad831fe123c702\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884381cbad1f276e038c48378ffce2b65285e08d6b68aaa3629a5a8639392490e5b9bd5269c2f1e4f488ed8831161f19b7815528f8982ffe09be9b5c412f8a0db50f8814c7194e83f23dbd8d162c9326ad\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c7195ffacac1307ff99046f219750fc47693e23c3cb08b89c2af808b444850a80ae475b9df0f169ae80a89be0865b57f58c9fea0d4ec82a286427402f113e4b6ae769a1d95941d49b25030\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"96763ed773f8e47bb3712f0e29b3060ffc956ffc146cee53d5e1df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3e40f15f6f3a46ae446b253bf8b1d9ffb6ed9b174d272328ff91a7e2e5c79c07f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb3f3515110702e047a6c9da4478b6ead94873c11c0f2d710ddb3f09fce024b3a58502ae3f\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d7c6169611117c6e843085d5ec1af406d58f75d17052f76fc87b7e624027b002be220520a7766451ec44fa8388d120354c0f8c8b8a83eb281d131cd231a5f3cc6a809c5dffb06cb8d792415336b4c0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"438696ce0ba3e21424cad39c48b89839fc102c64e3f3e81b6431c0c915d7983d0d7d87e611485ef5bf005c25a052289c949d3e1dd51b536bfda2eb3d14988f9c3291a1ac64b7b4cba0a019\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"56430f48030039cfd44539edb61a3b87e1cd461a765cb539c3f4b6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0709391497714d94a8f62959fe15153996001daadbc1dec326a03ba8ff416b47f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3d5f431ceee58c3ff1bdcdf874aaca9f564b743286a995ed03dffa8b65f33ac45c8c4b196d\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437c365eb362a1c991b0557fe8a7fb187d99346765d93ec63db6c1b01504ebeec55a2298d2dbff80eff034d20595153f63a196a6cead1e11b2bb13e336fa13616dd3e8b0a070c882ed3f1a78c7c06c93\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"46c3307de83b014258717d97781c1f50936d8b7d50c0722a1739654d10392d415b670c114f79b9a4f80541570f77ce88802efa4220cff733e7b5668ba38059ec904b4b8eef9448085faf51\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d5e83adfaac5dc324a68f1862df54549e56d209fba707205f328b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d102c9029b1f55c788f561ba7737afbccef9c9f1bf2f238167fd40ba9c1c134867\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb1ce80960382c6d5d5e740ffb724d1432f0310b200fb6f8424120f506092744baa415e155\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430505b6745ce64a5f33f0e8e3b83f11ce8802bca507f4f2d8b564dbe277e1966116e132faa2dfd70b8b077b9f94b913df5056ae1319469b824a98d54bbaa82c325595587064f978c4b6d104f7596e6f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99579e1c1ee15e422a57ddd6b16d37087b17558e8369c18991b4b2ca3a824abf904cdcf5458b5431a75af034ca9e9b982de039eaaf156775e2d580cd4e5ebae89c3f8cb2594b556d8a8169\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fc56eea290b3f3a21aac0c70cd5787b5ee99be37d2f4d751329b55\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bb31c9da10d5639a4cdb88a12f5c61de41bbc7df09bf75d94f8184fe4157f5c68f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f6199cadb152fb27f82be0a0891ec76a33598ae92a46cab2fb5a8ed5bf48b7f267f8370af7\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658269b54af7a8bb4f35fedc879516f10c1034ccd93c408c2c388e2f6ee009f4b7bcfe41fcb48c1804b015b37fdc0c814d67b38ecd28e1ebb4e7593c13a896ce253a874321d75f3dade5bf037a67728ba842a22071143673473eb3c217c68b5a2367a78f35ff70ff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5b1ac5d03deb7cd4ee5ff337d5132b2e5f8e38e0cc9555dc4929175f4e963ec9fba27b87d9cb909af7648735e5ae0ac529e7a301c6cc7851003bc841ee2a98fd148704057f872b82cadad144b52a6094673ff255d3702ef0a2d9b343881fd0c9c2ddf6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e6004dc4d3cfc226ffa474dec3107d6445204c4287c7996e984985\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"76b0ff01e9bcb3dee7fffad8955eddaa357d5eb7a7376debe37cf9c62aaab2e183\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7fa78724e77de8209256327c4d5210c4ff95117810f5f4832a7b5463049bdd33d042917101\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e97ed56bb229af09cd5a7853fd48a0a764b27663602b4774d42e7c61a3cce33e5c7ed3595135578d9c620976f42d01273f17242291e4a2f2ee3b0621d7ab1e8c531b6e95cddf2b38aac9c9d4bdc18ee6008326dc2b736cc5ef91b1e07b8e781d2b4baca02fcbcf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7f269e88932739be86484a89fce5151d0afac70a26384b7acbcd76fe782bbfb060ecf37d59e8a0223fb9aa890aa6ca472cd0aa728341db6da7fd91a29be0ffb0d4ea2e7b1457c05373425b9189c9e8567a11a9666bef8f3257b693647c9a79ae14550b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2b52a782a91f25f8a4e0520be46b344531308a3da31b4554bfef31\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"832bf36d0a584dd31866ac80425b0c1034d615fe48cfc47254679aa801a6372bd6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6f853b19b1eef37217d3b0c6aa81a3ffe1357dd6af97a77cfe34bd17c0541142f68419c59b\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657d2aa90e1b30e898c03e49f761318a1d8ee26775698c2aa63426e920ee4ce8162ae89e191eace820f61bcba5ed40b815c3333bfbeda8406e9ec12b1231435bb0c5c94edf5d1caed406d8c27c6d432a5fdc77e6e5e7cdcb67d3afcde16a9c787916fdcc2186843e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1748e3f62df314b65f950428dc6a5f3ef2c3f73bbd2ffba853c2a7a893d7e1128592d61a53dd7939a3d1223e6d9fc939587119286752b165d6b93bf39d6fee498338ae3a262ab9c9f81f5e226beeff4715ef74ed612bf747f3d297fa441a4719b2c00d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6eb0b5ef812535f28521a69b99193e97b9948ae0d8444347451384\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1aae55ad9b0a6e8f7040247d3cb7b1606f85517238a69874227f6f4258d6ad35a8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8fe7803f5cf41c1deca1320c74b64640a10d0c26e22e60ea3792ced93c8b2d94be537c2c35\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656b7b04c0e19828bc0ce30fc7b271319f645702ac2e6af3c00f1f57f18fe3c9754a6669fdc0b40fe7b83d5e1eaf67fd960c125327c69bf835fb5c3d118e21b737edfc35b30a5f7fc43eb31790e63b70cd1208297d5e75aea6f658d7363a700ddb4789f0c50a054e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4d30fe9c4ef4135d17c4b5d915cf1b9d88f782d3ce4a022b0a59d6e780baf549b8d1febf5be8bf12d796d2917937dc589f8b46958c1fc4a2a00367cbc1401a648d80cbcc68e5f86ad0a1384b257605ea76cacc075f22347c71548981210d7db67dee5b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a6bd6852849d84d9ce24d818359d748fbfe6e9b44b297516790451\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7ffc6ec7e1d7af42be95acb9215669addf2d569255f706fef6e2c20704129f34a7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"29299b1184c4f91bb4f7b15921dd158ba88aae5f8016d5f921d39a6c98075d229dafc4ecf7\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843757117acceb05bd7a45733bc22015c97a9d0cbaf41b80446d5988ff5127235d76b79eade70f473d6a4ef521fdcbeda5340d01e028ba793fc059f2724a83af05f12dda0448a7621a926b379a92477fd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c90f1cf77eba4e50edb038991565e36c9758943a989229b6051244dc4fbecb6946744b401af2ee1a5881b65fbb87fd07cb6a328ececc9ce6ce84c399dc332d4fd521fa4bb7f467ce909395\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bc3fa77f6aca3e8466d7dc6bea10013e88a6a29add5132b461806c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"250b01074cdfe0df2ecf8ccbf1737b15a2ddb5b52fd9a396604e9c793cee3b3bb9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"449d4d433b3cdc3d02bf6fc881774b9df54366ebcffb9689bb13f14709822cd7ef42bcdb4d\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fd25f21a1797f62ac8960e3b8b37ba21dfd9b202859ad8f0011a179a0054b50205997c6746578d5bd7e8a2a1a9fa068b77f36ca8b1417ec18ad342d9734eb94eb89915ce5e9768358d5e29d7c624da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5daf793909ca9cd970345c1bcd7d1612278fa941d8f62761bbbe278b7a3130c6c523872960931080fd3472c0499c214f45f03bb3389cc0a181176289251c30d67f5b7a59a5920f7d1b8aed\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"11a6e4405bf638c751b57d0714c7b5138ab09e939c345d05a7fa6b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f2b926f127ba4ba6b40dfbc86101b20bb120f8d59a5babd665824d9dee31571af4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3e4b185189bb0bf4b535431344ee0726726f8632ba59b78a6b0cecffdf00b7dfe28320dc05\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843634564bd977239d69da02ca48e74df0b51163816ee3a23b2b5c18f070438f510ddb0d8029e11bff2822f24d428d360fb854e385a4bd05b23ffd951e20662611b4351c0d3a6554bb15c8eb19a36347d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0bdb0a4fbb0c13bbc9974900c401a9e84078cf813ef0159ceea5eca94fca40f43b5093c7f6afb2f44990cb43dd8832959deab76fbc9c70756b3efc216b345d8d734e16624e2d9b8b28c1a2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bda60d063b3fdd955d4d8eb1d1d0f2c7f446d29c95f303724a9d99\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"18bcd3467fe240f01369d9738b2ab0aa8744ec9787e5838019833e04095bd5e964\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d150aa092584136a9ddd3ee7573ab9e2d39ee6d817306fdcaffd4f4af41bedc2f767530688\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cf031a86733a890297fda30d4b471d0ceeff97124c67a7b656356862398ad52e08b423271d80894ace0fc531c39492823f2cc8f5ebe97a7feffaae500aef491ef9815e8e024ac906b3678983549ec8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ee1c5e4fe3060d7014884f9328573c4f2e3c5593c3ef574b418e8bb397792a77db4cc497ce5db0c79d29afbbb78a3059d289413105384ef2738071c015c39467f6e9b61eb3e2f1db47d5f6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7ab9b6ee246550448f838ec94ab1c3cb93e7d475dc8aa7434e6462\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3d741aa91dff33adf4758746ddbf2b6afef8b64768b1d589e6bd999f7e7c7e4287\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6645a432705ba19de0dedaf6c9f2c4ecfa2447d48eac868bffd3ae8d899d6656a0a00c5699\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6505794a84d0af56738307d215a9ce0f4f30b078da97046b9f957aa8dd94bbe64976d49463f40a4b2a7122c3d416d4097fd0a193319783da620f7264a9662d23424962b7ad324d64a64424d0ee631b9a4cf84f0972704fa238a91960e023fee0dbc4879ab7df53db\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ce28d208639c5e88a34c4126d794a0ee24e67807a1ce86ec247c4ce047f67ad80e203768558941ac23e7b3282bd4e687b9d3a7759cc6ade407ecf0a9f1d2b5e43b18f550bdf1c14d274772c01212665f1df16559042a5b66f59779cc2090ab4d4b053\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ac14cea0069ab0991b0ee1cda77f29db88ccadb48745e6e9ed7d97\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d3110a51d3b9804d26d1b197f03a3b894010e5cb1c2520b9042f7a76ec709d433b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"76052cf75d7468cf733b9394b40c05b54cf28617546c4902bb134ecbc2bfd4f43a96faec27\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655a4e3c3b3e28088cbb7356574405c5b5a66de233a533d2f3d5a49415252564497cac366934ddb6d14340d5e799e8217c1b864824350a8f24407df1b7168218b4e37e71a60401a30f7124cd0dda5c5cb48ec3010d1df4d1a166bc3bf926d58e0d3969fda4a979b5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cf6411586c1252a04dc33ef6d3c44cd8c47896f889e414c180478298f06d1dddfe3bcfd4391cdd916d8decff95f9295cceac6be376aac2b288d7d70360c00bf8dcd535e6461ae59f2cf36e9cdcd6e44d70776a9ec532e2c8b2f51fcc89ab8ff4fa5fe0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4cfc885a8ec3e55c07a8f468bf36c3c222fba3598cebdcf4cdd6a1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ada1e633a5ef954ae2371acd9858767e4dee19b1f3afc1635fd013c7714aaa0cf4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4070206c3af79f68a7d9f0afac22bb32ee1454baa7c27f52e45c79ef64036c4f7fee71d194\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a3bcbb2a252517c5ba4d4c27c8ab2d04731351eb766430aca8f82f973af41e330d833b350f6dce9bf06aee6b7822c6a14d010ffb8f2d79157ab220ad614bb6fa2266965e804b276fdf04d7bc5b0b36a14920d8d454e4de2b54cd1c695cf8eb2e7d8281aaee2754\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"68ac156bda3adcaafe3be69565704482bfd36088246840ee210d636030ad235cfdcfb42583f9153c90883ce1a71b28cd7c35cd150ce1433b9e7436e8e5a1d8f040ec923a0ff745440eb2d58aee5127d3cdfced43114b1130eb995c9b79d4c4bc5a2962\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9d73faf3e0e2fe97ac976166d9784078a639b39bd0f9dc4c6d48d5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a47440e5ced3d70b7f261dd472854176a73502d1f563459368a4aa82fc114f9cbd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"543ae48b11e0ea26172e92f5250a86f07aa98e625e49863eaf849cdc59772392fe21a5af8c\"\n}\n]\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656b5104e88ec0a25ac061a7133a6b2a12afedb990b92fa7ee241d13da8a48175fa5d88b6abd5976ed4790c183ff71d96987fdfd7766f2974ebe5974ce5f3b5c45605958453ffed2a587b80a3bcb5396de2cc0e3d78893c121346da00cdffce8b09f8822d0146157\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4357707702598ddf4e18ec9089761cab124d2c31627a76050793eb8a3791116ca76d3aaaae11636d3ebe4670bea7a0c7b067526bc86a0774f7aec8ac7b25862e74a3174dfd2d97ab01c7e2d79e80914a4eef78f754962f9935eaa31a682a7f98af164f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8119e4a785938817853d78e89f75fdbe5fae0b405bb8e06b1ee8cd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a3b8b306337c99689970141d6e77db43a61200c1f5b0b37acc2f37530a74b0df8e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ab3792ada0ac0189bf18ec919f9106ff028a1e66fb346e7f02c850f4f6202e03e27031380d\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449f8ddea3e713f8813c3ba5765fa26b90688fa9055bffed80f696dd59a7173551\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433863d49e43f6eb913421be46743e68ec5a939305ea758606b59811eb2c3ba441cf28102e3516dc7ad18f43fac2889463a01bb28f155272d020edfa3bd149a6ab9dcc60a5c6c9cdf3f9b5085211ed58\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aa98156e541a2308e05b1610fa23be4c22b7cfbd617ba68542a6afc7b224c6681feae2eb47cb028ada168466ea4d424404359106638a1c5060a8a4750b2a1b0bee93c00a2d437ed6a850a7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4fda7e55ea65eb577840f187102e80035f5b1fbb0a621204f23e26\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e9973d8b9c48356389ff11c73e47e607843eec7783bc90fad3d1397ec9cf2f5fff\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bede0f40784df369b123c55e0fc697da74964322131f71e4ac208635b17a7073b24f68d23c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e461ed8f3fd8ba8f140d6ecca1538041165c418ac07c5d898ebcfd4ae19dadd3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d069f3e2110a621f6f6239e5d0ba504592388ebccc26a6d0c49ac73802a57206a5cba469c57b85def419494d4145abdc714e0b1adcd6cebdf9217f713b3a7893cfe8ca4813f17537bf2439f8118743\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c241b8b93e14e7b89ff6eb1d6d806d06a1fb724ac8d169182eaa28cff7a660e4c6c5d6fb4be11fb6794b07a584b4c71171f95c9e7aa09c9c7fb512156ec5ca5b87ca1b9a660150938b1fa4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"167e2daa0d1c30eef052c75054b3bcfb3988be6951fc7d6abf43bb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"643268be5684f9ee7a99345a2360cbf86e27ffca5eef0e73cf2d9c54d3e19062c3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"86095c0e9e2b9c67cea07c541469ba486f0e0d18c1f1c08543c26f700f5ac385923c39138c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444eb67ff2241abc10cb7c7c787b448eb9e4b321b0e48cc71141b62349372c1316\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884341fb7996aae876f5280700047a68341933060577a53857fe3b63a0ddc3356725b609220056c69dc5c526c0bcba15cb5ad68a7bbd36d9e537f3a586a34a4cd9be7fc83dbaff6b3d79932f930c3d7ed7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b5689c221af80d4bcd03831c51f0749ce9c833363400371bc469359b5e0157b22e81fc9f329cdc364f799d3a77761b0e2bfcf2a525ec978950eb2714b54f4dfa7d7f72b6c2474460ea81fb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b779a04bc9b8bac6fc3acc5a1da8d00f1a6b88f8f334540c4b5c6e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6c7af52fd404bcb9b1a70d57499f66c1b4e0ce01e365e14aa3e997feba2b454a07\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"82896c3974ed11c6b287227612b99e7fb09124f9797f8795938be6da791c011d96ea1eb81f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448f091c6757c1c8c352623871c4452feca58a09e12a54362e4b766565489d4f07\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d8a075e128f457ed5f24be7c64e1ce59c7836f5b09278d8f76d7aabdc318ecd9033af2a8845aa6a23895a0883cfea54593033cec8996175076cdad1356a7422e861edecab92c16684850a02e9495c8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fadd8d314b41078dd76cf878f47b9df196c96befff198b3f24ef1f0f9c0a9b8dbb4d69d965f18487692bc49b2f07de674318584923d35b9525c88c3d319f20010d5e148c6086a6c353be46\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bc4b2516f6729b57d66f7c3e75fe8cfd4b8676feeb1d28e1a79f72\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fae864bfb866bb6b2641209eb3bf5fe6d973117e2d3a06f00f63a7568158f3eabb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b0e85594750ebcef9a9fa08138d5a391bf474b6390b5333fea4badf57b9ca1594aef1bc23c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a903ace99075d1efa0f19477e93b32f377b312ee383eb2aa983134ca42e668a4f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a493f18b5560a8bc66642f84c9cd6ac705ae7f8d507c88fff5bb1718bfe12c5a262b7e2374c4472883e2c780ddfc18f1c5538a5ba8033cbd9f251aa0bf4d2fd0052b0337ad1d734c98699c2e938eb29ff4c9e0baf23ec565f6677771262b9fb74293d574f50bd5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"24f4b75d36e47fe8748f275cbf596b6446a5eb1f56a02347ad4f79119a92fb58ef60c8a3f3e8a03aa1dcf8c8636a1bd964dab62525889703854793d9d5cd7c3edb600c13f4b51bef9ff0c39af559328be144c4d4a7afb2d9415c3153d96cf9ae153dcb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"375fcb2839b38da8c12b6177baef44e4ef7ad247f2e58e51ca5417\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47545184bcad4f97c7a9445fc8a174a20fea60025a6e77c39996ff22ab0f6cc1ee\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"39679aa651d4faef5d8e78f0c36f3052ce2d42beefdc3bcc622275212e95a40889a10e63dc\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a31043b98da9b6e64350b590582409bd8c8573c49301664fc5790e2686da5b783\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6523a27d6caf0dbe59b3f0d6e56d344f21c69863c7d2e6dcf56f9b8188b4e9d2041c36fe1b91eb1339bf53fba3d3cbe87d4594a070cc798882c2af9a0b30f2d060a583e6a66a61402a27ed35e78d80536f204e2a2c2b4b44f4d1a81df690c1673459b9d0ca304adc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"90998c9efc823ce3f59228bbaf5b8882fae0077ef5d3b531fffe7625ea12592f7f7fcf5cc6cff4c30862c3b40cd7fd90f3ec41c765351d44ab0ac50af3be44c6a826678da883f8ed90e0caf0bf5b97ea752a5a4b8581d9ca3eae2ee8eb23947d48af2f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bf724d37878aa05e54f7fd8c3a1bb9287405f6503ab138911b22ff\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ebf3b3eccfd0565ab30dbdf02e477b96da710f7ab1b6fe4e32f286b37629d392f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"36690d350f5e13cbdfffd9384c5907a034a632882cf6b63ecf8d9fb7dcaff22b7a9ceb34ce\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac7fc5f32112487596a39ec8c9ad94e65c333ebd74b1eee8238db0efca1b8ea49\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651754e114f0fbd7fd77cdef12e470964ecb05e121c9268a126ca8bbcb0af76c46d8623c1c0fc464ffee268e89e59e1fe79b1be8c59d90f52c401e349f7e4ed3fc9b230608d382e97883abac68348eeccbe15486a771aa3100b968c7efc4a80b31ac7cbfd3483a5e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f83e0f6208fd9f272605e44f002c97c422b609be4977cc90e2f3a2b5c9a0eb66d82191a7b015b55a5f46efa91a03380a3072ccc90c7137a3c8cf8699ee03b71353019d4c5015181df4d52b84b321e2becfd60b2f0c595c78f12cd6b3ee10f8a7413a00\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9ce082a328f929c8ee4157d52e4879be8c252e9f8a88f3b0116087\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9328be417791e1c2a9dd9c993d341ec1eff2c049b8e1a4ff99ff73f119a3ce838e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5fa345fba5c26ab5acf9883a6a16929df09eabefa4e55597f48ff414e3208229294bef312f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2b4256d322ab109ea1f44c61d68874f5b6c529c004a9fac12ea800c62004d764\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d0e78709a53b47a84a7fa30c9d581afdebaac438b1c237a99cb90a1c68d2ad016e4a4f283c7a69630e4199f0ca4c5e14780745941a1252f5f3afa56abedd7593e02d86abc5bfb3ac128b17c5e1bfbf8c2a695bf08bb868350dbd90ac07ceefe549e0041a7b4022\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1a7a79d7ed5a3cd756b8046f72a2abb1fae55920b9e3f013404c36166b8ed0545431b35f3432a3a08a20fc23b09405be3bd4b2581015d89f0305ab1a9f0e50c1bce8ab97881ffcc0b9f546f8fdd5af8243db650146353d35ab6491b4e43fe430da3f79\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"92bcc03fe7369b7c7c5cf440d9e57928b495c29d188abea18d7775\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ad2374fbf8cc052a05374ae833353db9693f77139c92d27bf7b4f229fe47895f5f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"997935d1d3881bb9b65efaf7cfd90e93dd88367f342e666facfc5aa92f285964723efc476f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fe8599c8903ac6dfbb02709f894247b5227ee8923f0411bdcbabec9728ed133e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e613d93121d9da3fc6985d5df73ffc14018b2ad24f0500a745c0a1ea681fa3e355bd84084f2a44a8a5a4473edabbd0ad1a9587c5e6f6edcebba5f731078d03b2e496306ab61f3ab1fe7eef8780a6d6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f1314aafa14a685ac486b5cd681a0c1d966d94cd99185c39df0f74030ac13cb303f64d061985733da0bae56c5e66ce900f499afe2bd99794ddcad29a1b9b061d47701844bd21a295f70912\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e16a27bd7ec7639893af4e826ef1f46d38431aadab0de7bc20d411\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"243555e9de14efa5d7841fa2ebebf760a946309d2e771105a0325185d9b6f1c960\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2e8f935c11f36a9a202cee9bb647ec7f5e428ade56727701ba1b665a692b0cd4272603ffde\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944aeab634877b77aa0bf3f9e4ea8d4ccd9cad41e1409aa0385704eee8a61d96d2c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438e8106d1f76bc92ea6ab2230222ef8d49a79b492eeb1cfb9a2a36983873dd55813428ef44ecfed8aa7bdf497e69a441134ec029f2d6f1a811a061d36704d108c0ce777856cf48f4b4472d9bee5380c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"96c7c32dc823181ff676e5d66fbe457a0f885d06056e957cf0751f1a419e8c80247dbab90defa9f61291520ffe8a38ba3e2d52c3d22eda25172a250d9389fe10605f8f9cb31ac87b619e9d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4eedc56a62f646842da3078490fce3844653aee8225dd49146749c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"128b08d516c92cb32a7e092f19837f68b771bd96466ff050fdcbe9d593cd49dffa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ded4526bbe397cd93633bdcba760ecb9170156a15799fa1a25a13751e41993289daa31374\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944af12169e2c2e0294890e09c377d81b410738e17dafe499794853ced7f8dc5d0c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433d5add60fb4eb37389b122cbcfe751e1efa573a91f7708ce6284fd1039e8cf071ac504c5fd8ceee5bf8d9ec53ef2831ac7bdd8269d000b2d50746bc1b8df89f1301baf8871607dbe4ac21a91a8b892\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fad884086f0c60d98c6af97937bd1557fcecad7e151a5072c936bbc501118bfebb0b465477baee25e18697e6032d4130542a940e55c952f8bf7ae0c1d11f5f60e0a3636f433209398fc86b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6e058df755ddd5c5f188ceee4bf5f5d95274792fdc9ec110099406\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b19f477f850d760364c7fde936ce57393e8cdc07fc286cf5934aeb5e0f6f09d822\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"377de1023e1e65978306e77fb491a586a081b80b6254383f0c42777f9b006e5001f585e5a1\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794490ac1acf8386039a302cb72b8df39e279d6df40ed7d1e5a81dbd555beb1d2cde\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433ea47b6902d156e237e2f70aa5d1141abcc183261499b57b8615b1772a30dd35c982d6779aa8a9618b95e89c4467a4c880ce7f364695f20b4249757134612bc7e6a585406f800f885069835c647cd5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fbe533c76eeeb8ba9420afa5ab6cacec26d00bf9970c460dc7a5cee9a49945e5b8464da4dd58f31822cd261e0a8ea7ec3ae066e08671e529bb35ed460d7882fc236d0140ebbf26b1f8b2a4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3509d4d297399ca85397d729989cc88c36f9173b8055d457ca7b1a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3dcc6b541f7f3993fe4cffd1cebf4297075b34aaebe40cd82e81655d1e06f930e5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7326bd72e6b5bbdc7cec2448a8978e044e410b85405902aa89c4626cb7efd3cb4ccb19ed60\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6c237d817e40c05485b154c3c942ece77efee7c20e55ac11df7d29d2f12978de\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65eaa2184f47603487bf23df9d346729fb3922b2765b68fbb2201b4f48c47ac5fb6951e7e9bfb0b6e707f9bf1311b433ff3b03ac2c238c7257e46df218226afd027dee6996ea0caef8a63fee704458809ca9ced7d09cedf44acd3afe2841e6498ae178ac10e08eba\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"86086d8382adb6a31dd3ed4e16845be2cbe94ee592d690e30bb91edae7c4fb67ddee264eecaed0eb19e2ec218610ed8b2b2066c319cb7383768e3e28f4fac27f14e21b50f09a8be21316f4f4b970c152bed516d2ede972f65bbd014231e7d3763b63fc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6a44125d1e9e8c12e6d10e8fda7fbeb7a6c9131fcb2f8c1f2b4319\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d169822b1e42f1d352f831efe7111be77af99c4ce75d0685f099335564de11563b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8cf1fdb4af9a42c192c0a8f698ed8b1d7261e570b6fbb79390c3f83fe8988281c2974010c8\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae72df09f5a0afccbf3c18658e1a90632fa6f70210ffb3ebb96a6947b87b0662c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659ffdb53fdf63b99c64e58710095888f5cd0d06bf9a21de159058a4d2ab245a7f5185a40b2189a266bf76c56b2ced59c12f0557748152f7819e7dd79ff25497ebc9d45da1434fff7ce6a94a1b1400db1ffb8d7fea8bea65db2b43b7e4580ed4f0fcca851c514ae0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b7c101290bdefa1304451e6ce0e0cde708c6e2aba7ff39c2efab0c179c63a36a5f2042d76c0a69b82e512839bfad9abb8b9dc6b8028a03626ef993afbeb4219a2b31715aad08f988cc11c9056af01392b9d48885d5f6756e6eeb8c6d4b12fe02e6e239\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"77b1a65a438508e47b8f7c2d5856c7883c20f28bfe015213808ba2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ac92ead0b793d66e3ed54ceb5998aab55f3dc4086747dab7ccd815ede0eed94546\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f54852ca65611b9668fa4795b75a4bb027ea4a4428fd7f84f198589fd9d0d44c17c0a3d3f4\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4bda3d60aeeb60b1aaf33f9c321525845ea789bc171a6fd67a9b227875785c01\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659454751b279e227b4ea460a528beb8e144a316b42c84fe487acd500f0433d32ebf5708cd4a77bf2a4e46a0cc674f1b2d7de0aff06814d592f4066e133113e334c47495da9ffb2c82714094002a009c6322f4b3214a84c2d7df6cbf638e479322ae5790193cfb80\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5ddc1ba6fce83bbd6661ab9638879bb19dd83fb642769053c8e2ada7aa2396db3efa8ddfb74ea8e2ef371b7b826ed82bc12bf6903ba823856aeb81e2b3f0c829a072a404eac176694959512bd4230813b570ba8b1a82539fce4b49fb0d551559601310\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3d943c24e104df3d80252018871419b6edc70d80431112ca8fac1e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"abb6abbc6032b61ef048d257ca18e265433dfe87b71f68aff9f5945751ab94eaa6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7047f8d27dd235b53723142fbfd4213846364da8449968433ef1b23dfcbb51e38d81035ba1\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab99a002ce177ca783216989dc30695cc686adbafcc61f67eac2f65c4dacfc376\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e732bde674ea612872e3ab1373daea5771315c4341b5e16cf2c6353411901af9976b32e2b36c9052354ab8d6c7b1a9f86c766d521fa4b2efbd900d10c92e9eaaa7518c81d97a4873687d3d8c5020a0a3bcaa104a3a8c17cf35e89178f6e20da3c9b101b34d1363\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"abeaa0da53f66515cf16f431ee469ea64f5d87f9b9477ba74b532920ddb0aff052d0304a3ef074dadeaf9702d3bb7adbd6e9aef0b1ac38203a5e3ae40f687da27f27eb9214e9e6198794396d9b9629772bbff3a71801db9d10ad285516bc74a1a0d556\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f6f5db7a58c9cf6016010ef593e000bcd371d748bd62bef0c33361\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"78605a07dd9a1b1b0cf4de11bb1c0b46805505df265bce7a66e0f891c3163c9da6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b34857608d65593ea18b7f38077b8404bae6a3942551ace818e168b90c8f7decb7e0114f39\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843db451ba0cc81ba55f01e5aeb04e3748f337344ed2a494219a3fae8ef756f95054f06f10bbe3e8a27bdf263fc314e16c300bf822646c34d35641d9635ea993c4694966ab721281c5093bc5d3831bf0a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"90a3ae2a6f1c0f3c2b7a81c5ddfb3a068376a18b9267745459497b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a54a54e469da6914ec8edeb1f2c1fc7434ab6a4834a0736b34fd9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8c4238fcd84fb9bb2be8cd2e3de1bb0098ad04b67c5b2f51275db91aa3641eca38\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"39a819a8befe3e151ccb045ad6adb3590f3326936e8402e1e896435b3d543fe4cd423af3b7\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a8c94b6012e129e22c357ebdb69a5070d2a74cedc0c449c48fe41e16f0dc1e82506a0c919cc2554906ff69c085893ebf8defd89a8d8d39f8df99519b0ced32f92fd0f9cf71e73340a234a27e918872\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e6b02914c1e0ef7651cea6844c3482741791ea374afebf93f48281\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8268b258b0a792172c5fefa524da0f0a16316c0620c65d6a59d1b9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"04d7faf63e58c81ac3d6ff5f88e0fa4056ead60f55cde977eaaebc14dfbd6ce055\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a01c4f95e57c7620254a17f6c328ebee726867b20ef44518d64d54158a9365e28fd0c3c3b8\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884398e7f90d906b0948dbc71ea7020ce711a6cfde5ed7ad1d43def67fb5be6190b5028fbb2556e9378b65b5e86195a7cd4cadddad64de91fbd1aaaae8621d31358a73dbfd6b68b96fb5bb8972bc28c2e2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"62bc36955e7d6399c18531eb05fc8f4646da466a98a7e5cf1942e7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6be3ee3f7e5ccc4152754e4b22d87ee0045e6cd84654fd2ceb3720\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"19b242089e28f5b8c2881f36dacb6953de1b576b722359a0ab8ac478c3c8fcacb1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8db09f596ff2651900ff82316220328bb0ac49a520c58ff2504c67bb02c550d9546c483708\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433f1aa60070835da4ba78f09ccb798953addc1f6984ceceeaf7427834306b13e8b82f3a7169263013a03c31d16890c7359ca7ce81760aa3b364c79a2694634b9f48f73a89d832c6f48b0bb1c7d8e6c3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7b819fee364e9a7e59f86c2866ce9c858ec0168cd5b4e06042dac4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"927111f8a96c5eece70962dc4aca610b6a8af566dbe92f443609a2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"645fb96284174500f9e74e4ba02c67c5bc5fc3e202480ada0558601c967179ef43\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"45f0190eeb871a978a68348f3b3520503c24aa9bd64eb1fab9a90a59e1b107b4beff18c66f\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65bf94bc9cc43da3c5f68db91b1abc39537b2cc38b1d3fc9f9687b646225bd5552401bf8d84b560f0514c97752ed7441092cb2e5f2b0840893e6ab773815d281ab1931e5b34fad32425dfb5f31c654c8837c875b6b85ac61c5270429ff6cd4b5aa6a3298551c6dcd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23331fa6615ba57a56080247618405ed154fdb10dfd1e84d814b2d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b2e89526021b307d6e32a9614e4036a44e03d48951d01da6e1adb9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2c42f9f5ee7a6d3420a2e857daae767eac53683c61a54f290e52cc626446299009\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"21e839681b36a8be5e8377ac52bdeeaaa680810b9a2bb172568b6515121b72f14f351ab9dd\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65821f0342e0763ef821f2299ec565ff4c3b8785db180edd6eaa27b910589f33446875a5f73cd694fb3fe144d22ba3c2022728993ab93ea7642cf11d33e611badfd770a1366f1566c268c7835476e3ce7e95d967c1622119986749c789a7650e926c9a14403f2c63\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3b9920ef3225e34b2052d49da7c4fd1003c4a5ff57dc465fa53957\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4df2a13fca2f2c78fb2319c2abbbe2668da16b403c0d0b188c6b57\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"528085b4b0533816af1c8b48ae5f1421c1c8cedad7d7e1e2fd0436e41767f8d1d8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"07d7c967e55e96334c8cf925d24d4a07b1243162481cb6816e1c03314cb9b9905905d6c8d5\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d7874d6828c0c00efa65934038f3145a1884282371f7fa666a7516487b8f415a1d695560a164f7f869cbb89383eb2d5d7ba9276d5848aa9c66e557d080e88be46e4c965cd2ca28a2c6f3a4fff00a98d1c0bc91f36f4de94c4610e345692a6d9a160152c62840ad\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d17df2b5403721a7f0f73f1ed3949ab377720c35c2015f865ac2ed\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a51247849f22f6c8c0aa1661927180ed0d9b82516e37804a21a1eb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"40c1f5ba7b6c2ff605bb2e94ab18d7190a6a2606f01e2dfc79f35b8e6260664307\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ad45e48b62fbad3c345d6c9e5013a5c2753b08a127c3b384e70d2eed18826f002f54f739e\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6550da8e8b4cd2fc7e105b871fb6bd5c8b941faba1a7b51c64b5390e7d270e7d11792be415bcc5e226107d050ffd105dead50771398d043c7ad1400cd5c9f88fa9629424c2927db559404411d27241755e6fe5b9e895402cbf5e71391cc93aa24f21e29802e06fee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e13ce0f463777c111ec8789a88126117002e6ab0a996f6894e1e33\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2335bb41fcfb4dddd113a8c9990cc9054df79be479f4d04e0c19cc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ede96a7d1f0f5f24e5d733283e3f850b870403c5afc7513e9803b7ddebdc9e97e6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f942624af70c1ddcd6e7af5ceb315c99c6511244edc5da8a05826e4a0c27b2c1251adec180\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884381f5e7fd3177b25f05504a881c3d9abb4ceaa6e8ab72f7925bc1ecee7f533d4d83453c68b45114148f3d11c0281c89906e4c23267b3d038eeb789a7ade71edd08ef12236e741eda973e5baba4bc005\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60faff0c912ae6003ff00295f240b28e8f68f3442e26661701cd7f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"746cac398c37a680d8ee7836a7826a164383f562bcac347bbde807\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4b5e9102aea574262f84bcb6bb32ff74447d843d389811990b5a55bd450708f2fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c70aa2cb23b02335b30b44e46da0c9ec2569bfaf389431a92566c794787ce9c7702d7f7bdb\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432df8ae0cb7413b6e054f2aecec92a8c6b31c15238f68452a284b7048bc6692ca00507e87a024d5968ba9454895f6c1b201d493783a0bd78ba74ac91ee7255dd010a3437cb14e77a31094d22e0bcc04\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6d2ce47395bfc804d5253e2c717eb5ff3cd9ebbffbad808d75ca2f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8813f7127ce7547d65acf9fa12f8e473d59b4526b90720367d454b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"509212ea27de5322ce4fb1858edecfbcc6a68c8354ff403030af9c5c0ed829a332\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4bf0fdcc7c3e2c2a154dfaa5bbbae4c20600a282ec7d91b9891234dfc5eb3d75910b588aee\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433ddc33505b3b2e6a4bcfb3841b666cc8bd8516a3cc74476a7e88673b78fbaef981b0d21ae6399d3838d2a6de8e41b25a23e5b7745586e66b461ac62551e192319ba94d524947bf8f16b0a8df1fc40c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"77e9207232a196a22f1860e7b2df44ce1af1659c4626b3473043db\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cf23b9a63f1b5a1ad22d69040315699cecb9f3efe6d060dba5d643\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c47b3213ee998bfffb657ab25f3bc6765bd8e909640fa6db3797eb3bf458ea5f0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cf4f81e0dd05abddfe8a3870d774445312fe343dfdd37c2e09cbbe75eefa22386e8b7e37bf\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843354c64e8dc7c2dfaf991b57efa284f3456648294eee0fd40ec4785feb26c3f7232eb8d70848e49334fd1df7001705f1411bc58def92e31f289c33b7d18e5f9f8a8f6481bbeb027f73bb7c08818c672\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8db127eaffcd5814ba26dd735c5600053ee8da3e745c5b28000838\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e97b5634fb6be3146fb7279f63af831104931f290a00309d161ab\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9c928e61fc0806b7820df0c046a113f7e8e80011a8251ce3ccc2ee12ff8922abea\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"860b4db6381d9cdb9bd8b5d02eaaf82bc695207c6f1d41857c1384cc83a75a6ec789775a2c\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653dbccec6f09e2b3558da2daffd597e2e4c75c89d19a534f81e49cb0d710532729eb0ad0f7a0620f4362f179f56dac77d522d57983872a8bb6d65b4a7caea9b578ed3af05b45836955d3398e2fce266b445a903883741fc62d34f94abd334dd0eda6c869b815b4c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd02ba04b6d8fd728eb4f408e5c8ef60ca5f48c808e490d7dcb99d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"248991f37fc6661ea27359e9f8141dd56d0422126c01a54e79c3b9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7fc0943b31b7e44d696dfc12765410c03465e4844640414a2eca2725e5e6cee1ba\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"355a3489825af83729766d5814a017cbd98d988f9ee3c0ee38e348d25a0e3f44bd5edc1a54\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6509e03b63fc59b54ac4add390f7c6417e903a214eb418905bafe22969a99f90832745f5fba94917b9aeef0fba5d855aff3bc70fbf9cd74f8dcbd3c727e19f162398e87a5e1abf9e32473e6cc271b0698c289373c2fefc99e53e3b9a626407953e7a66bc871ae8c0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"96bd5c9597a382010329933fca5bee442b86033101858dcf7c04b7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"488292594437b6a050b7e1fc87af4851c30b8dcc19893dd7857093\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c9693d874714385cdd251fce6510be70b35e0ff89c5bba46ac627c587e7b219bcd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"db34b195b361647599294b4868ee5251ed0a954e7a128b0e83c1af89a0f0f703677af3f9bd\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cf86bbbf3615d8c0217d25197cc0e854b5d2f1e3dd95df38a6cfe10650d5f5e9ef4485c5d578ec4b01a67f1defd4aacfbda12d6b66af60d76f6b37376a80d026551b0f0f7960280ee557367be63b9c2fdf20cdf137c9e12db7fb9d25d5a82c4efd0a74179b66c9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ab77b12aaac7091183e1abbaf1ef597f8760e8cb395006e13cd536\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d3c9663dd00d96230490d9d8d1218d06fe0058efbe9ca872bb447d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c3c5416f86708bb5c07ca68958dec6ad29347b0b4243cc7f4a93f91dce5322a7e6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c98aaf9d8dfbec7211ba3643993d8661fe9a52efe8cdab63a608637fe4c12a52ed2f80ff13\"\n}\n]\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65226d2a8ca153131fb2775b0ee792fc7136674f3d0da10f934202f647b7c22f4e0c3324446791c7036b482dbd2f5930396f34280bea0eddb61192e95e5f8e959a176c76644bdd61b360ca4859043449cd1184c02b7fa2c67c9873df018397d35f41ffa371e3171d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8a2a37b427062d16a344d02b77d67be0b84ca083a972f11dad1667\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7accd526e7810ac2319f48ee64099ca1e9b0e4388875cea2cd7f22\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a301d1a2116d39000c9ed4810d10035d1291b3df29af53ae12eb48717ae4559996\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"60889a19022580395d5ea9f0c4c48fc122ae5d006ec105e606a7a701b95c6bf8effb828990\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944900bf0b214dc12a50455468a360e6f2527106b3b835b0be1c9b7020ee110d54b5e88097eea1101d33a17f346304ae92c7c339478eaa79b8c48adb467bda9d80b63ed86055a98b62828fc15d7090a9e1b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884300edd8d17d05d6f0e7e04904cdac9b2e60c33466fad572280636fa0dde4c6b02ff157d87668a8afe5f3e3fc4b18f0e3f4bd70629e3a0861ca13632385ebb6e08497601188caf4ec75f6d007b0ac087\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f7d46514108441d2fe4ff691e88ab53152e5bee7f9be03b31d0410\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fdd6d425c16a63741f00c8ffca608af23b0d42d88ab9bce3bbf0d4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ca0d989f51d3a8a3c4c9a8244603ac709e257c39d007b6b92f9a7c3d02a4cc8907\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3298c6de363bdea1a90fd6f752f551084ca9c91e75339c4d052062d7a1139bdf5cb3e0cbc8\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d7e374a058f655bfe9a8f9d371c391e9eb5e141f8d631b7f194d450a83eff8ba9c065ac013c6d907cf8fe9a77dcef0bfe8877cdbdca0e703d7dd2598710045e68fff28ef12028f1d3bc7e43a6e9f8dd4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dc2aa734ea6dd643136ec4071a6e051dd0f4e22d8c71607a6ac8450c82903e5b505a07c605daed294567a0494ae10d5851ff74033356a0d7f53f0dde8fb6a35c99bd851cfdc0e3efc48d4c90dace80\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eca275a34127a89ff1d2564ed16fc05dfaa009496d266cc3605765\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"21670b2d0987cd8196a525500ff3be42b673d66ca7f758d3dc5a65\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"24281e4d3fbf574132be22bed12c815c6d8fe3edd2018205ef4448cb8467014029\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"049117351514d8de9646b7acbfe05bf0f4d3bde869cf052562dcb805e4d9b94f1324d70f1a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b1ad8a3b937680483c453f4148f40bd489a7ea90e1bf2c7acde8b263199164b293cea79828362d0214f5af93d5ce79aea9b299c03c86d2b69af9b132b99b579d28eed54d625bb9d4a2d8f9f25680883a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b9329144b51aa1b1f3fef0445e2f36a27ef315109448027d726d53aea7c9282edf798b85096211c9358c2ba7645215b3feadfe4f6cef1782a8ced977598d9b02adaa2d660c904183b7efeb2a0d0c91\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"058563cc2e1a73d8befa2324510ef43083fc2aa9f97db89f2ec7c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0c15a5be3d830c925b0a1856f69ed0815da2a925d93e2be786f628\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"90b8da7c0ece7178e7aa35e964852ffbab10f82ded24cbef299134adf349183c5e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f0b6434071db733472776918b40283e6504060100319cb7462f0578f41c52ee247f100be4e\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b816993560ae38221b925ab61f361f11150a4d21cf806f92a286f89a6a07f8f491c5bf011a7ae2fe40fce372ec57c879659445021fc395d1ab5a9f764bc5974f41a62d401026db90cd360f8bb01360ef\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884387a9b8ad691dbcb222ae780f3974e37203f221bc55c3f892d54be77b3a804fa41c1b8c9b7a757da30a183d71f0c61d6514b525f2d185fdca3446c71608e45b9c04e3a1d3689292b18630e99edf23ac\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4a99e92f68bfc6e83532902bed22a67bd29e8bd836820e12031930\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b33015037e441a7697e187bf8f02a34d112aa838f8062e2160061c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b2bbd88b49b9ebb9d8f66775e30a8d43b71c45aea2eacfe952563765e2f8153333\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9e514dff8353f073981fb9e20f4a00cfc92d0480ec36a2278787281e8489272259c3495cec\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa5bf1e68e80c2b9c6de3a18964e7fd2ca367cb1767542a2b59eef612ceb4d39c73a263f36c9595466cd6acc6772d19d4d5dec9c37c7b0b2e88afee2649e0d19e8bb5ddd691efc7ef746d4ea915f5eb101c6215c3321d3ab497c3d32a01fdd0e6f120dee08da1e007\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6546aa883e3267ad6d78d99027806f162675400ecc7d98b7e826a2f06a8a482c0f60238243e988ec6aeeeec0c1c03ec670ff90c7d16cfe04a030340347594e2f6b2ad5ab9b3e77b17f67ca424aee4da81d8618846a1389cdbbbd9b72487b83406f2ea72d698d8acf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"911be8cc40e3cd9036bebc698f34b2f90f9d1a1fce678107466992\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"89be291828a2d31eabd80edef6e302ad37150cb9f35d5c3e5df121\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a36d3daa0e1856085dd52746a83cc31e05bc18f05d116a112f7e0ada0885a1cafe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b6d3db8f5ddb1c8443d8913e9ba0b0023cf46ac5e65a30815ab5f3491428b13bd3ac051a8c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49adac16a834aa332b05b4b625be774c0696dbd0980adbfc460ed76fa98b6789240319c958e1d70b3d706cb46a27c4d9c40937b145729c701be5594685ce6e8c4b9b730d990c1511f7c6ddd1f3f47924caebfff7fb453e6d2884d55a5e60555188e09889330e4e4d8ed\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6589dc47fb8cea7ee3a3fbe5b87900e185d3a265d77aa3ecb4f4f57d113705b187542ed076cdb5bb0f750aa97b141c8aa5b69c6598585913b08b9c54bbefacbb3b378c81cf0607569dd39f09aac3de6b488c4d7e0e855c7aeb5683bd901160e8807040b8c4fc9fdb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6249871b7df105e4805921bd10e9325456d60d812c56762afd0749\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d5669814afecfb915095b588341ea1d99c204d88af398da731d2b1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"807aa060aae20ebd4a9d0ef61db4907865c427614135372dba8c062ab674482904\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"18fa42991df6e16b7fa2a5403ee66bf009bb62cd52e009e8881f41cf387cfd81ad43ffb2bf\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa41c290cbde823ca516b5d6b613805286ef6cb02d07a03d97aa95419c4eb4ccdd67cd6fe86896764962c2bb3a0ffd92039b6a1eb19974a49a20c3c6c71480e3d3435e5823bdb34d9f9eaea79556276b3703ca036b9be8b6b53c49ebfdf3f075dd6abeee8454d45cc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ca7569402a9d9d6e664285239b9c11e532bbb4109ba994e1ee6f0d760ee378646d8acd1c08c55d5debb6be7a8afaf8d9d6f44bd8ce48e99b4c96365df007b74d07143063d37708884cbf9e2105629772d76029008d5e6bc2b35a6d68bea28cec43cf23a9205de2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1a64af8d114ea3a0b760d1d5bdfbf5c9c27e2c8f5553dec064d3fc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e588b2d550270bd069bb84041a033992e46f226b9d28e24051b99e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"816797286eef58b7ad8c6aeedbbba824048f1eda7ff67fa346b414520f050a2478\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"95868277cc9b7d60393c35c7df6d4b20d19ffdca99fbfe25cf6ec43ae10976811eb6617979\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aad527dbb8bde911488a324ccb827af0c4c79d26a39b41b7df1e4d7edafe98f151153f53ee358c98eaa4091b0176f4d4c0404790f00f271869d5ed9c90daa9cb6e40daf6dfd9949ba32fc5eb431cf75718f35f56fcf7ce207db3b94a9e3083275b6dd387acb888544\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65783e5c2b77791553d7ce373aa91a86eaef524ed937cb0d09b168416d1b0709e21127eb4a7ca76ef9fa95f6aed942cb73ff9ce972a74fa50c60f7b5f040ae419998febaceb5cdaffd1c2ce05f97accddeb6425dbc14742b704419de672c9341ce8bc43f9d30086b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"219c9bf301746e89406522b92f266877e2007691aaf00e121a2e54\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b19efc40e97159748085116252d7cc7d426c9d6d9c75b887d0b112\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cbcb983c8ca337c8f0a16668d2d84317aa64f508a36151ad446a159241d38b147a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c88b608155c4294fce68460300609246be50a33e4b9b976981084a894a5606e0c040e0402c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794498871925038be6bcb87fe0daca915ea8095f7c263bff614c609af67e1b3191f65b5ba49c349bb4f7249273ce60bfd74074c9c134bbe934c2191e4c53b9dcf262d495c50496b222070eeaf152af0cc10c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884370c503d4ffafaa7ecd12110052208aa2829b65ff51fd6e0e333c08f06cacea20ddf16ae421f857712ab880638b06607e888b77c8d3e450f6c2f349bdbedc96a932f6228cac65f8754ab6bac24768da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"05d17110351c56df90ac7efd387d76bdc070dce2d6fc8539f1297f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"06dd411cf49ab0f4b5392660b40beaf95d36371f80adf4ccd72fc8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"27f91e61a15038c4db1ec571a77ac16ecaeb867e09a590332f2942163575a676bb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"031bd8b21831be2921cd784ff3118678398b591bcf6efe33a690a75956ae68c800806ab9b5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442fc16a42c501558d793dec2be3316c9dd2631c4990a4955322319569b11d5e216d201c13e24c3fce594fbd71e5ee8151b3333ed964e16e082c5415dbc7e8833e3cecc5d4045a3f0f1e03863836802f85\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d6939eca917b2b7a88f62a00a96c8fe9041c9809e9fb9755aa4dbca139d1f3ab4662e1403d67880d1dba7509c89aa536e4fb5a92814bd0c3b24469a74bb654a86c85c9ed601cb59aced0fdff32efd6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"04b792205a2da01e3ca59ff35a8d01ee017e2273c85a23f26f9cff\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7b457440f1696bfa98ee6d956699d26306ddcffdfba88ceeefaa20\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a1c2ee0c7f310841ed97089c94fa4abf563f237ad5192412100ded1553359180c9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6cb434e357bf15e22f097ddbbd31c16b5682227413290ecd690a66c05f88303b72f5afe1bd\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944dc7b98f0f4e4e3c504c85ab423bd2ab441a84712a3575dd6814c51a87f73478c6e09666e6bc159d918ae3eaca7666e0a477f370a5a6a059e9de3fc8e6ccded2edf0d571d2076d5bea558386b56d23cc6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436cd513787436a9c8aa974a0ba6ab2c9b4fd236e7c6aee57c9fc0f041719c084f4fed30e6740f8f66df4cd4a9190e81e08674d63431655675bd8d331330b27ab05e61ba17da7ba39473407efc06e80f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"92b7c8185573d2d7b5e5d608333eda025d982cd67c34cb9db927ae\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"85805df2c552d28ac306db67c2c504288f77da2958b8dc0bbc8a37\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c210946202aef1acc06a3a8731a94c9aae1eabd3ba90c9a5002d2ec5f87c64e2b0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5c4eabf385e182aa44041b8cdff34c12b8b57791b8d6bce9ef493915753c0413dfb327fda1\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fc89facd1b6c91d543c6466fba70c80d6fbcfabe77289fa9cee92ba5960526d62e302397ae8be4f344617b35af11abf73b365013a12a8347a6ef406610dcb7ab404ad5f4d74658f988fd79c4e4e24446\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843497caa2466f559a0a7c3dd4ed6c677c31a777f30b27b4367a6c9e64bd45287fe0c77bd7d5378cf54ddfee5f3b927d1388b714d5bd56eb9ecdf24e9a1278da8df5928913d14fadaa630b0f5130cb32f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7177ef207b8d1709befd7c960bee25484e1dc6b69016b2439a382d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"622b1f01865e80fae646c28806656bdba8d4e59524567c577ac302\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"36eb33df314aaf4caf2344337a7e7aacc3e6cc5b7708a48378d12dcf46f9849554\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3c0ba78d030d9957978652e4d08be8d505457b601a35839847506cb4e6c02f1a37dd0995bb\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a13b023c42e14f7d02a94a7781193adb71d20d8da72779e0c0a9f32b0e35be9ce3859128566b3b7011f7606b4fb0ee5785c2443143e4fd44844ecdcf4d062d0d74f70716454b948742bbd3779f037c13c2c6d4d62eef114861f492e4ac35d181891b52efed456bf9f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6504902d04835b03584bd76cab0933249186e6fe0b274e03b0b78937525eab2d19b79884273e2f15d20700200bf07593d7e3bd3380566e846985f15cd142b87d6cdd795ab92ed36fcc5385623f8681176a57fbe3a16494b83fbdada12ea4a638ef718b0190eec551\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f906ae3251a3423247ac821276c65fa120a70f3adafed577198af1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4b8af204d3d70fb670904ae5512841578286626c6c16959ae9d985\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"093ae31271772a8ce19d1684639d753f5f8c129adc1879e7c7ce7e0da9cbdd2f49\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3569277951db2c59cd69aabcfa891dae4f648bda5ed3674645fe48b37d8d12aef6f439856f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7df2e38ba29fcad61618c626ebe8d37be7e2122bf1b749f81b391cc503328957f4b0f9542a83cb1c1941edebe851c8ca26563cc8440afcd32ad59b79768660261ab8d4b1317943ed4697b64d789e2560c817d6041a679885bb87a61a8d839769356558da3e94a36f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65986be9040b140ad76469b93cb00c59cac2abc82114f8209d36e3546faa0f6c0a5a850f38e4fe45be7af01beac185b7ec9f332e7867f66f1e30de12f2cd2c95f0ab1550f11b81288a794c394d31c2824caf830b5f96594c6914e0e6beeb335be4896b78f0bd6b8d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2ffc729b47a5e95839e0cf3fb59e932466e17e31d3d321eb2cc5b8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ee2924c220e87bc155e54bf047aa3175f0ff35de64383a16f097f7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cb60bd2defdafae9e17c29177cbb87422d1cf645890438d7d5f4aa441a1a711894\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4c896d9e77ba5bbe7f54c2d3de8e6af69744128daf97509e80e176238b00612521b9dadae0\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab4d9709bde152b8f7608d99c03e36fc42566549a94d36a6ac2a207b087c133ee2ed9b968f1d5c95db1ac231f9a87d5f047b0ebb6cd24cb7ffd21c7ec8c7518b7f92a479f9e686e1aaf03dae4033fc74d4a81e4c0df50b25e3ff825eec7300ea59a02d97eb84f5f39\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658a13145e0ba7cecc57e3be5c2dfdb187a5e58f7e6816987a21de2799e78ecba96c2c33b6e3b942ba4d51d5926d46af104e9fa6890d18453d99633939b9138de5d1770bd6d2bee08749deacc8107eaf1a688cdcc9cdc49a90ced4f9e5730a0294496209118205df\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f51df03e314d9b5f185d33d7e4101270a229211e14baae745e7f64\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"eb8a02b24ff53eff3c382958c4205fe166bbac76c3cf2d62cbd650\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"565d72e6158b0e5c4cf9d400e3a4783d0d90d9cc20ebfe8927df38cf3b03462fee\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec6db71954253ea7edbf9eee10021cf0b7a8d9fe618b5a7fb1602704eddd13cc507c3852f7\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a32bf511ba81ba64f4b3511c288fabb03daa557a363fcf99bffe266a9c13452c11607ef5b5f35bbf33abdae09679f840c823361f4439970db57c88b9f3a7a86fae165a79f140978a31869a67d8337c1d7a3172d25ce4a19560c7b91c6564d359c169457cab343abb4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e964d80512b79e72457f31f289a9138c59eb2e472f5b304c119c8bed1d907a8592813945db63b07b93d7001d9ec56b248b10629688433d22848a6a46023bc96a45cf1490f605658308966adacd79f244f92190ce25f83086a246930b37e439ddcff75fc007ffb9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ca8e4b359643556fdcc31e6d2e77f70c755381c9597be8301cbc7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"18d766643469d14b0e6c4d98be8670611a812f1bb5ab4f11872100\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"29f7edb338b511b0cc27e9f0991047445148c6f36a14e94b8ff22e0198fb68b32e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"718bc2f6688fe1c648e47dfa0d15708becf29144a736425c26fe4a5825acb77286cab667b2\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794430db5925e72ccdb0333fb13bd1f920cc34627b8fe30f81383a15d67a9ba306ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b9546f9f6bc43ff1ab776874425ddd59a45f6294633df65c8e55ee14cbc175\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4732bd7c598a84a15a477ce67562f54bc4fac4ef04ea178c5796c9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2fbd9d4fd39df3bbfc22b63525ba454cdd65d1cf9b3ae658612f5f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"81619224c9c0d7ec75eb670b7d3154b8f97bfbd07cf0fe3df2f538b7d19dc5f21e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8c21c98a5236dad958a67c39829d1bfcfcb0d529af864b17902185f56f3cb7bd86998ddc29\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944da67b782436a213025b5be5607b5a4fc85f5d59c88a12c2e3e607018eed82d9a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c35c82fd4ea2ad8496a80eccf6a7171603a9f055083d4a5d228d5dc59e4634\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"613eb1d40376258161584d1e7a55b9c88e32cf2afefd59dbdc0f58\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ac910c4180f0deb6ad4987c9b521e91038c6fce9d09a56c44e17b9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"50ac079bf53c5195b9d28b005133271b9e7136f01c7056c14ce1a40ed447d0fb9d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1a704179097f544665d98a65475a5bcffa589499b26a3de300f56a0b065e2761d07830e81a\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441b168ed8bbe8220b52bbbde6593d109d78c299b567f6e69276efcf2659c39073\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a7b5d1962001e9c4d965ea5f133941e9e6989094bcde637a582c34b954f34a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"16ff2557d5d671abe58c88d2a31b58e3a494ab3a6498124be0ea3f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1a6e85b0ef71c38db2c2bf3ebef1d41dc93e26bea6899187d5633d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"00ad2b7d0a03a748d0aefd3accee7bbbcc0bb0ed64d685b2ee8af78997a0245e3f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5631105c749b9550b27d7926dec0c5b83d4bf207688deccd51b50dd7fc9d5e337bba9c3177\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794493e145393e742220f7d46ee2d19db28f99f56c13e4b434adf2403530d61f2d4d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"6e2d9ea31cf9daa4a98c0bb691c51c94ada9e61422ddf6c852d6292c3b78ed\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e9bd8264cea01a9967e56bbb7c305bbedb6440427ee113716aa010\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"70f12312f1ba4e3b8fba71fd6db55698d7014fb15be35d76a45922\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2553c4c4196e0a1a86115e74073a6a0b4e70e1df7a84de6056b0f5992760e38026\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"08cfdd4c4eb84b32ccca6281a56f43ae4ba8e420eda369d9ad14cfad966e4cf6d4f5f0fd20\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af382acdb301644445b8ee0aff3e03d135d9896f8ff0dd23f32bc1fdc15285504\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"d2fc84421336524b01357d7affb42d1cb01d1b4ef3436846428f79b1eaaea9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a6d6666e536fd820fae8bcc16200a1c2ae2c18d2dc0d117792bc27\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ba6fd2dc03cba8e85f34c04f5913720232720248b2a12060aba4c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"40f6e3ff80bcfacd171e3cab93e8a38d6700ae8407fe6e05eda05f1d0f21d1477e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"01aab50618fe6ddf8c066bed1fb0a4ed7cd1429a7e91eb55b781624576e280e61d926dadb4\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a562d21fef6174fcd3a1a3ceabe1e5cf06611c5f9aa78c665f1abcf5da8bd2788\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"72eaa0d8ce9ca1f439ca55f1e64475b9e3e3f18ae0f44a61599b855d23f5f4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"815f037d14ae1005807284df1550e5d768ade76074ae01e203dd2d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a71e802895ba50e56c0d4ee9c3296ada608be88e590cefd357d4c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3c6f2dcd6e204269b8cbf26068e1d4e22efdc49998b21eb8edd854d59716f9fb38\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c1489b6847c42356e651713af2d93d1d5d62343623983110fd0c534ded8cffde8ba9d33d98\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a16011945e3e447fbcf6323440067452d619fa51a6f6be3cb83150ed5595df54b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9ed8e248be4026920ecc895e02c03b8935f5eb33badffee7e7a305c8514b13\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b82b88755f8ff1d1e0658539721bff624e3aabff093859bad789c2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"70e1b9b13acb935fbc37c2baeb54a2c2a983ac661740a811b693b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4ed8907af817bae0cf791478e5670721d2b919e95dc5a3571151c2016930815261\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a10bde0081e243993e85340fb76a2d757ee837f8dd415f27ceb955ad1665d12c9d40b3da7c\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a18cb11acd18b7a4aea058534c8c35b4c78571edda6bf2f2c9b742daab8f5d726\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"7d54fc3e9e2d5a6583862c1fb64bc289b2fbf7da93c8bea09dd00e63130caf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b6c13ca1bc13045db3e4afa6f04f328d35658846b655b289e55a6a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6b2aa1cc5d2046004c87e62b9cc6b6183b3efe35a795f710b6a209\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c7fb78ff47a57c5689e6a8c7d4c3eb5af362ad9b33fdca98e686142807d1b0cb34\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7e66c0f22d9d6ef331bd165e5f88194156becc66da10fc816fd7a16626ca539d3a9391ef73\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944579bcbff029d662564fea10d563023312ca97f6dcd2a0ff611e8ee5352825435\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"ece41448702945ed9004d6d83e98f24eadf3ba377084829bcc1508f37ebf52\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c23a5f1fbd44cc5ccf9f5173dbdc269cd62e4d3da636f9f7d86da8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3f75522cb7de92072d28d7f2aed8eaec0a16e4a2f72cfc533656c8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a6d69707c4915cb7322a678c01e212005f11a948e5fb22506aa81943793c6c289f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6d1a4b057667d4b8ae113f219c53b57c4c3574b259701f0e0e77d762c1188b04fa76d255f4\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442e342fc24bc3e384f0d6bc351f9d3b64235953d3ceb030acdced0d3d1f92f11d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"134dbd942584fc54217bba66d70e7956d6f049bab00e880191572991e1fb56\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f347f4cc451cf99f4f2e3fce2564c7c86c05d4365418f4a3350ad4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ce5a7d70ef7e0e37293e4589f85202319f4c99de4c7fb37d774b3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"849639e55808f64fefc8f941e9af6f5f7d2ffe170db389aec129a723c37f7e4454\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f160e889105be3b13893f012b208d2a603b3b87524fdc47aa031f98ee48f001f521850c7ca\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440fb66c2b3a97f3b979942822a283b39f96958b4d12e90fbb75dcde68de9e1bfb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"dbadb0090cfffd942d5972854f5ffe14dd54659034515d1cf6d622aaf0d6aa\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57da3193394d2a3f9786daba05655028dc81f86b96f712c28d520a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"176cf54926e099aa0677a460cd997729ce9d995989a0f45937eb93\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b91d07b3a41db36927f9d576c44d3f26a78369f16d7890c4f1ccce76ba959657f4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3d7b1419c8ae1f165ea703a3da3eeb11174975e83dd6f4687410f74d0b23415a7834d06d63\"\n}\n]\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944337354656b1179fb9d019fc19c92170f92c2cde868e152472b44693e956a6f70\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a56c949386fa7de01b3161569601d633dc0581a28c1fd5bc9092888224df54\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f12bae154626deee61eb38c0bb501ebf2ac7b47364c709379cbcc9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"58cba311ea4cd1907fe7a719980cad03ca9dbed670010dbb78ea38\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e21c5e45ae44e8bd544356c5a6b2eabd5d83976d8c0ba477a12ab3d1dee835ecfe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e782b0cdc8d2ea017042237ee740645e9b75925f7e1e3c17ca45aaea00c8e9c1eae82ab16e\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4b29a3cde41da986275128f8dc46035e5ff6b93ccecfe27b10d7d755038bf42b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"48455e308d36bb85a256d5c33189d2479a28be076db37e9f2622fb51730106\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"671fdd819f79a2034b8ef8a25037bc7e2e387e4c551ed42cbe5992\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0af444a383873414f50ed3254a0612357c48f41a7e717d48ecfee8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c4ecf7591af2f35c975d7c3dfb482a79cf2124b1a64273a5986b2368cda7d53a7e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"51887a4cdd746d8e05b60fc1237ca9ddf85d47508d754aa71e12ea37121a99933f5502b4a8\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2bab2c7fe0ead3cab5e9a5cc18e95fdda1588964f96b467b2ba6e15002500a59\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"d66878e694343c6a76425b2997350de787fac2eb3b838c08ef7935154b7c5b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3c81278d995a8dea06945ba739d21d4bfd3aa4aafb6b7ecb1506e2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"124274cf933f6cce7a569a5c1c26283d072c734b38981b4cf0ae81\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d4472be4dbe0a3334f6a7ade4b33e0fd3690e0167f99d5c969fe2b56bfe507a23e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dbeeaa6fc0300c6f10292eaa6b772840078b1a0166c2bd666ef81834f63ef0068b1c50d44b\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af5835cccc494aab2d753ff2006c32a3ca9035d52e1fedfa16d41a2f54e7bf000\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3adaa7730bed8c0020dc6d2fb7dc202e8ed586a3afa23ee12170387d834f54\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"261fb0363c68fe3df37a9eb0ce0ec31a4bfe2828d4f5aaf8dbc9e9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ccb584a3e805e07aa9dae431cbc0aaa83b663b239780c5c68b1f9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"af56a51270430ea3f6197946d81bddc6d13aa27ecff6c1114b4415a92c2be54959\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f923cd305cceaa496b8597eea4504f1e746ad3ec16b1615deb336eed722f9fc7f365274dd3\"\n}\n]\n},\n{\n\"name\": \"Noise_N_448_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a73efd5823504af263f6f354792af1bc00f581e764cd1925fd386361d6b169684\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e75c441c74196170f7b2a7c8e014559cbc6d2fee0d681ccf783316714c3062\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3be9dff1699688b040d8b53042630830cfdfebdd26f07f0686906b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"be274f050cf060ef00675adb892285780cf6b895d98ba4920cee25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e83c2325b843db080fb28f1549124843f4f9a3e54caffffe710405ba6cee04c502\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b731d622c9c07867e4c1b223d3e03454649234601fc9070b519b717b4df7004956f5f53e76\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794426c0f91a0a57187dbcd081ee2b60567c9d74c7d2c55ebe2227078b6a19e7afa2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"7c2804fa986831088ef15bfbb161d61c2c34ee0d407e643bbc3a227b9131db\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4a4b85bdc21464355dc592ded1ecd470731f5a014454c50020ad32\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f28afffb236a8983023f702d2e719fec641604150918ef3f743d26\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47a76321a07c5169259d716f110147dc4d7498e844ab901d749203dffe0aa0bf15\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fab5d1fb6fcd7732bfdc8a0640d50b9eabbf9706a5e501307ca54aaa3acdc4e62af11afedc\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b594cf6ca40637519d85f3acda398142a71a56da58aa90ae87197dea1e0eeb54\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a850ebfd54e96118450933fad08987a121c001f3e53da8a4aba30b4b9f9d91\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e60e027e2f0cc53a76db382eefdf2effb82a136a2fb5580f0e5cec\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a08dedd57cc6d9af65011914cbc9bf5b191b10a8778ef3f97eda4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f03c75171e8973306732b6c3c8a4095c005c37101d13cf6a9ce145d6e18159aec8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2f2f3044dcc40a37158ea36006d4f51f6154b312c67756013de17415dc46408f9c7ebd0a00\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b02146db2f35e2b3eba558973e0fde57b25e7899ade8389a1b95ff90ed12fa97\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"cccc02ecb5ed5a98bb1b21bedc72078554bf800dd3c0914280035237f2de24\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7385465241c509a2cbcadc4c03984788980c3e7cd189b499bfedda\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e61ed6807fe8571aed32432e70730bfb904ae3b9320f2e909a6984\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f0effbce578b70312beb8795ce3c59ffec65b13515b31bed11a4f721db87c16ad8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"99d2e759db9c1ffb38f3891b9880fe68ea4ed3d7405ad90948f9152b6626e8427ec8e38cd9\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e9e41ea4ed699ef1f6feaa3dc6867d1de979fb21c9828064ca01830ba557e485\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b46c94316d72b976cc618b0be8ea2024da0507b80daec51afe62a00ec9cc27\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"96ce85eaa88068bbfd59673048c92036d8495cdf8c9bf9ffe5b91c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9569cf1f3ea0fd80656577968c6d896cb4943ed9ac4b7aa7da8e8a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"03a37710a61f8cbcacf1b0edbc2b6e611fa6c26a445ad2aa77f876f68831873707\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b231df0d8fd5435b0380dc448ff0343e6a6d1463a814fc513837527980c421aceb2b00d1c5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9ebf178cf203f06288817899eb2bc0af07bd250a1377e32d8f5cbfbabbadec74\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"34d3554a968311294de5d7c49cfec56fb8b8da1bfcc412844b779a69dada15\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cb5767a7577d01b0ee420b9314df1028a8d6ca45a03e814f087102\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8f1e044b77e014e6de2b14c76f8f570b44f2d0c8f44482a71196d5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bb4a891e4213c5ef6309f2b6efa05e565bffddce29740e179b0cf8f002b9e01d7e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c8f193d1a720850fda14e2ba2b7aaccf7ea8afcfd3ef6c3cfe3f04eab1a53a6e9bb16b753e\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a374fd83c6e12cc79196924a8402da6d3e993f9ebfacd70dcdf4ccc73b8f1887f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e768ce558aee30d267f2f1abe4556194babce5ed4d9822af0579c670cacb28\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eea89f40e3a742031c415870406440dfc74cef8b14c48431781a96\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"05d01dd74ff465285f5c765821bd702f746fa9bc887aa5d0825136\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"306a8eb6a205ed07af147b22911e904b144fcbfbfee20986a9d8f93ee9c0e40d68\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"deb49487500a06f2e1b027c944604b2c756e0eaa87c29a1b4e3d6c6ef69a4918e864dec5fb\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a63ebd3c280a9bd4dd6f0585450a5cafda85e5197392a2417c8ac9547cdac1894\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5f2b44a610805e39412a6b0af3d148a55346957cefbbde30d811222d6d13e5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2043106cfbbea8eab96586bf3547d6f6891bbf74655345207c56a3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"679aaf09b443b13ae4edc90d6b287c1debcb2a63ce1cbbfbf79a9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"06a64a986c39d5d4c227cd173b743a7308f8a9360870e3ee820c85463a74c51ece\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"25718c2787bf9a0097c69ab0fd0b21ee38f5af7883a8587f952bff30ea2d327e60394ee91a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aae4c745185332594c9dca9a27937d9da520cf4c18a9774a951cbe39f0dd41254\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"41a22bd81aa00e8d63f437c0352ba1c43d794881814ea6b37d83f2a8a5b0a5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e0b095a5ade6bd09f2fecdfb20f4080304ef61358b244d62eb663e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5ac6193da6c8022f333e001391dba85d5f1217786b52e83f98d642\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6586159f6651f51b7df6ab4fd0fe56e6cd677afaa8b70cd64cc65b01ad9bb978c7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e48158d9a60b3eb86c031f615b762228003f6b0a7b296f2dff9a5fd715a329592c3f0ecc8f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d0c8deca8e11858d5d21f88acfc9e9eaf04045b92bf58c56b97643af159e25e5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"0d35ca62c25c6e964b183c31145c7c0f7cd9ac2da7da3febc4779dbe577d80\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"38ecb88e83abbf2231de5fad1c24d4ef9eed9c5d33a62523b6303f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9375c03ae61747c0bd784235ed071318cbd345589b49c9749e4c18\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1d70e539c7122aaa59c91894b82c5ec38a140391d2892b9d308cae89c23da868de\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d5ce5977529e8efeb42582719f95124335ccc25addf361782dba77be4a0a748b4844ec958f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445a2caec02c6b194683dec1d2349c4df5554de16ad1e819dfb499de19a9dc0bcb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"8ebaff4c8d80eaa279b809ad311870ead9fc4dfa68dbd5e1169966ea68e077\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd6e9bcd8e741a8d8a462781e4c6b947a07454abd695b2ef853677\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d1b4684ddc30c238456205f4891d1ed38b38cf4840c46328f4fcb6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5bf84dd903dec0a6bbcde7a562df8e24dd0b7311e7006a11c5254de0d3428dbf73\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"faa96812d85c368098d81d8005aee4ea510cb906c453b1bf72299618907a2638e612c78527\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c0bdb7f2c7984cf50ff6b94a0ccb6c55ff9e1e0e004f13782b4b9c7d1c2863d6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"98718bd8cba806fb910f7272bb0d3aa77ae0f733d4779fa65eb4c070fc483a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1d6ff14432ec35538ae1cbbf3c8f38ccc56652ffac227ef9e4a27b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e7aeb78f4542f3383cc21a1cb488158945070e718507f98ae1adfe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"620e7a84dca8d61f6302805abb9e18c1e0c81dc1c76225e632aa4dbe26136f465c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"24a240bc8c9a44f5641ae0fb75e4640799fc0b0736f925ca7468b6dc915fcab166d82e3583\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f8d8e08d9f8ca12cef9fa8a9c5c53c8d37417f85346ff7ed295f24a81d8aeb3b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5a537fa5f429310f31241335902ac582a48ac21296bb404c8afd77ca546c20\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0de484a6da1fcad22800546bd37454f0b9449edba84fd9b1305c66\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0c07085a253ba6aa01b8b8cc566b0150c81c38cf4fc9da9c15b891\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7cc9376c91e86203b6ddaaad7e4a926a6ee0079a19c88f9a2cecd4b5b65a8ed406\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8fba42064a679f05b789a7f46debd79c1bef0c53566f1391bd55adb4c0d7e721907f81755a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8f6cf1c4590a2f778a5364227008d0b7f57b2e255b613fc4db7c0fcdbbaea0fe\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"83196806538a69c42e08473fb75ecbf4da95055c513acbc7dbdcc8011fc8fb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"537596301c8221fe48441b75941fc3c7488e6134dfb9467a0e0245\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c5f18fbb5c6eb9c69079af3d5b69ac19a86c6f1f6c332dd9732cca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"dc88e5423fb0540d93679c869384d8239bd9f5b831a1289f06c5f35e0579eeed44\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1db3e9ee117cb6a90a6c2cf13599bf9e364b40e2bf0468e10921471263afca16d4c6de1ac5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af1848552a226f9b834aa44486a2df9d2252501f40aa01700fd848c99d9119db8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"695aa6b966d11b127075a5f2a29430142f05fbfbc64bb793ea53cbf0e6e743\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4171c45eacffaedddf0f83c30e1fd82957998416dbd6df9cc30402\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e65ec638803d885d2dc94690b1335a334c0f995ff9c0d859ffb4db\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b45fa63bee7b9374248fcb69a070dcd39b285dcb7cbf105842e6dcc5262d3e24c2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e831b5ecab8dbc58c57ddc2bdc28f32a7d7d239a7e5b397e858ac94c6070ed951cc69aed48\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aca7fc3d0bdb8df1e4e3633c0e8f29cd7d2fb5a0bb8d6fe15dcf0db176a79a00e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b1745767ce406b37e13b50f812161b7ae2f1f86be56df22c462f0e66480221\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"daca61e51e394a5d13200df0c9710a6a60335be41a6d47bc979997\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"08a77bc63c4da2362a959ed2a311a7da6842752566ff52bb0547f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"207c7c0710d27e167cd2ba0714d528c2aae66afc527478a8a12752441a1c107a28\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b0852f446b9a736fac633daf72e33991aa662b7e125bcac786ebd1a0dafc2c6903285dcfd9\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aede468321c9c7e5f5ac154a3db539298316c1e29b619306cc896e2b94123c9ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"00f8fc50367e7f5bb87a5a0d31175eba7edb415a9651268f502c4a273ec6ce\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ebbf330759e0c010b1994ba6b71f6717fd265d34ab4538e1d6031e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e564d1ce77521b68fc1507e196e494f14508baff43c02163548025\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f20b4eedcc3dc3af66c5c11bc4a37088cdd04937d56d66e84fd6f15c87a53a3446\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6d2d3067fda685529a1e4d37fbe093dd738fa4ab2169d3957bc4e9f2a5c1f48f5980f8e154\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794418467a8f8358c37e189cac4aa41dadaa6573febe24d52f366661eaa09018ab2c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e1a9bb158e6b0ac7e1d0907b52cbba5deffc834f315bb46d259b892191a9ab\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"307c62740fe0ea34cd04c82d485c080d9fe626cc4be50d6891c55d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0096d1705d8e078cd2f6d27a4411defbf99e6eef6d1de7992a35c4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa0a021154663c491da9af10b88cad02008f06163f3abfe409b2f7b3171f084b93\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f689e1baf168dfbe6f7a61418c78062b4a657323b5104f62f53375adaae067edaa9e9ac0f2\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944580e6c0a44124624fa494afe116cf1b9ca62039867a57b7eda14d2c1915ff6ce\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9c49476aa746bc8f1d75e69bf46774e537d88b1152e8dd385e369a6e8ff267\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d166ba833e2e621810df98b99b1437ed58794d2d1308e4958060e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"57f64a1f64c88f78f1b3d3513839f33fb6323f535bce53b86d1d98\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f8de03b4d223298811bd2f7ece8337ea706f8ed3965349c118983c9bc733dfa9b1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"37d9552cbe2fa2f805028a43da90f4bab20f79dc2161df601b6395ae858e88356062c660fb\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443ab57eb07c96791ebddff95c2ed2ccfe412d87270c753c0a5b5fe46164087647\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3e7b4d83fa0cca62cc0b6d202da416c0b59289e518982742851e534f1916f8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d52fe3eee4de396b592afea7eb632020587aa4384200ed9bca9585\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"51476b0e939b9901d9c265533d2845591813dcca1ce834090f977d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"24848a58c0cf7be87fb648166f3ac49cb6e76d08a353d4c4836006d48bc40275f1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"95f88b7496841fd0df89d5834b31640bddc9ca51d4b466c929a8833d263c2771d19720a5df\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944885229f6a2df09fa34da59d165241538a858b5e34393676ab4e646c771db0e0a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"faa4ad33acfc9d16c636ebf587c425dc9a0a0fabb5b975b8e3cc15350b77da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fd34fab878317f67192e27ef2d58baa3d41c13bd55e27d7ee1b6aa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"09dc13b2f7cdecdce30b8059b02e24c609768fc054a2051228b146\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8e42d678033ae8b60cde5cbce291df6eaefec3e26cd173883987639acfe0a0c76f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"748eb0219e14970038bb79154e2c915fcfefe369994c84a8a3d9678b491a40e684925f0c44\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad37511bac6093e092ff207761ba3f5a5bf15d293bb8ba245f30ef2f53212691c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"789d95029550cb12bca33ecacd7091f2fad2856c933dc9be4a8893e7418b38\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7439a2a484fcaa8b26fd8f7ad291848ff4a6b945fcbac1db28828d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4e12fbaf75ee21f24c3337209df6e3fdcc02a662da211d9f17ba8b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"24960123e50c7da732d681dc4d3cb76a21f712048fc60059ec97c665435fc602aa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ae78e59f57d7c608947148b610fed8432b176c4b967385f5d9571afb113e4cafc7ac7a897\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a227b5a2b3b52bb4f1986af09e5f54cee24fc31f889577c9c81cf552628af7543\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a6c10b646535046e09dba60e47b7c1de802cf8d8b0ef61de439d318e6eedc8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f079680cbab14150a93a17414fff9358191e4871556a95eebc88b0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"140fedc307154a949ccfc77cddac1ff45e60ee891ff2804574d194\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f8058663198c5731db456e63c271164d460dd1f12317f16da92a0a053eeba7e116\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5c20e7c781b29270fc49b29031e7cc7cb99f713588e483258c67129a79562b09701a70e67c\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab32dad4e7ba3451acda153f79224be2fab7ba9f13c1acc7a58e62e4d21d7ad09\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"1cb421580c58c88f520dd952638d8e763a41b2f990c43f294079e098f2fd3d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"212d450b2baefc48b53a6bc95e2da2e9bc0d033dd41c3e3271c648\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a2abbb5f0d3601fae4fcf4698c6d799ed15a7cdf60942432771e83\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f946df25b2ebc3bdcc3aecca657340e2ef7017daca6c0ee29912ac10f7f45d3eb0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0e41ee26e285da240609edeaf8755c5c98f4de00ea07f09532445d6c1c2e2401743d6ecfbe\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a101efe3539dd822f632b6974807b6165432431bb0955693eed6aaa75f29e880b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b6057b9baaf0d94e092cb85f7f3b7d8722a3dba8e1850be1d8b5ae0358b013\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"36e54dc162ca6a3da22ffce788c82ea2767b737127f4da1e86ce9d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4c262117d2053e929c3159a606ab0813fe1b3597eaacbb099e7f58\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2947044c510d6c253ef932b4da4a6c1d0d34025745b918e4bc03aa12dca78376c2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3297fe495f0fbb33a59d4f2c7a88a21757d59937f91be1cdf26e2435d23572451975603d25\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f75d2d26eb79461435b90a9f4076d5a5277b8d38d1568b56c6b3771d783671a0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"236767f037ced36a107c5c1bfcd644cd2ae03b869e81a1badcf03356216fd0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8cde7c4f4afd43409d484b1e84a35da1beccaf89f0b39266550c50\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"63acef2b861e6156b1a69fad0be572434b0e9d35f1b8a89cdd001a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"00a58a555ed9683f9f3b977fcf43caf9d8d791e40127193a9a54cbc055d12f5d0b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b9b47f47f3e163e62e870bd30623feb950a45cbf4cc0b4ed18ad828eef637fce156b4cebba\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c475220fe03d228bfdafed956aa5dd35c306cd078e4607a6310eb150f1b7adc7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e878821790b84c7a966ae5fa1afda39a0f0c897fa6366bfec2bc50edbc872b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"14fac6f5884f0f0f5ae7266e7539b80eec18ffdabd6b7b56457c04\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0022b12c28152781846ff2a6b8fb4b052ff475ca3ead32c972cdbd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"104e2801bc7d97c8a7aa62a78617e86f66c16c0474003f755a2f436d5a27aa3bd1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4e13ecef31bb071a1374f1b1d7a8f480a07475beb3895facc5753c5d84ea56e9275f8458d5\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441949ee2635dd251aa85c53007de1eca27f61cd1d2c4b44c045e181ce8391b25a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"212aaf2bdf64f5bc2ab12d663507af06954aa3d8f795acf115274a3c50cb3e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"760eafa5143678ea60bc8454757c77011061e8a295fbea9e87b286\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ea241986d081f81120e9718bf67826f27019fcdc1a908786a91c56\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d91c7fc214b70b39da82c298fef3d90278b762d641321cc541735a0c9d7500d1ed\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5c688a3cfe7d8c269d4d32a86d34fba705f086151f08092b698d07ebe30725570185b054c8\"\n}\n]\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445732b72e5473d5bc15e86a5caa0a1c78de9bef0254d0658a259aec25520d1eff\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e0d1d43cd8d5a15c2b15a07524d67fdc31557708ad71a0660bfc5d9a590b7d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d44dcea01d1d25fb3036d151d9794412bc7b5469e272896ad01bf9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5729d9253400806eefa496b6ab7d6b0b0e677954a1a7fee2424fd0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da4291f09c9c54a009dc5d9cbc3ff1534aadc92d3e79582bbcd56b47b6ac606178\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"926bb761946433c1902659867cac3f9fd6868597fe05bb6b4a6a550ed494e6618028db6b09\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae297099a05977660a649682933e71271a40f739b4219b04eba766d51529e02dc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"fd4c331881474bd12195aa28bc8f9e5a0b31fdd16c9b47c9cfd47b3efc4ee0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0069e3fafc00e09cfcbb1994d6f3bd55281d5d6b6f824a442ad840\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"08d8eeb31113b25832fa2695fc3f8eea508dea82d0acc02dc605f4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c5d377478a5f7d3328515d740ff6c5fd14a9c8c4955a53477cf82e8e9af07e253\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"712c4934834adefe41ae35569c90b5bd72edb6716844802f9e7676a70e302564d86167ddb9\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a60cb83169eaee233bcb4a1101ae3147f03ddddf93fed8d4bdff6c35211b91733\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f53fc84202ae31b08685c3ef442b510db9634915996c9b0d25ea13514a40af\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"45e284b8124dc8f01bf87dd3e94cafae861d41826f5dea71b4d3b6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b74feed15936c9acbb2e0e70eb1a857fbca6aeeeaad50090f8dc72\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"72281300fe48110635f20c692e4cf74d017af8c43b997558547d5305ae373dc695\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"31305518b62daf69ecbbe6df83e63e95d80e7a429cfed4eb58fa115ecd29cde3ae1dc169e0\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0a014eafd0f74867924877978f17cfa3f576a7ff29b20bff9cff426126f16be0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5d7ed64452f9641b697aeb388720da7e49f83a8a2c7e94e42abf897996fa67\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"48a2278316872e59dbb4e3c7656867e593669398de5aafeb334196\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"44b5f2ab0da9ffcdeb47bb98f92b63a68a03491141b100fb76ab80\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"65fcf82caaa5079077081687d06d8e270ecabd3addf86901d07aab25ddf9707db0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"675ccb7e6282605258174486de2fdb2b3cd7bf5b167328f9d1d72039c14c1847a012593beb\"\n}\n]\n},\n{\n\"name\": \"Noise_K_448_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac7da443f766a38167774de55d31ac7d6a11a5babab40bdd7ebd41a8387d24468\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9509d102826cf5677e866be770796cd1d6b6d2f5214c05597d82c9c8cbbb0d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"24593e8b23657b5330bd21b8b2d3b958e47ccd9aa0f00110c47828\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4dc61df9b999578344197126bd3a74945e5235bd50a5459a32f1b3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e1079049d6b3629d4041b55e217cf6772aa9e1f6fcd0c34c8710745f5e600aa5c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"788e48cc0ece0f329032e7c27310effcba81e1da7dbbcc4f94213df567bc10f002d7925dca\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794456339ac55a7edc741972c1267ea1da33dd7d85485155cfa4b336f9b62ccdce5d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"4264383e5be0bdb427dc3366514adafd40ed971ebe78dd997eb397f7f78c81\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"038d179a9cc674042bec91d376add4e2baa6a95278a233a8fe0ad0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a448ad67029c6362779cc623c73eae9fdfd1a479b09d2ea92f349e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1fb7c8710600c4fcab1ba53c4333e62df2d64ae68e2355895fe90f20cc698240da\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6a4f9bc5ef1e4e6b01ac64192fd15805c21ccfb96633374a9d7ae35739d5492e8e07d0f27c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794464ce7cad73934f0d0a41743e3f8202128ba2d98b3e2a517adddea67ace823abd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"762b169bb364aae608da55b76e692e862f50aa334b5db330753583a2adf451\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9259c4e4363244c7496f5f10f373679ff8f33ac09481422a966b8d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b43b7c17fe8d86ce09970c2a74b899520fde685c37c9c9ad4f986b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0b5f824bdafbf00d64dcac95121278e6750198f4a3334f6b268129aec5a525c2e7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e2741625c41fd4bf8a4b069a9c39afd7159071e903531f3e4aa307144d66ff7192b9c74273\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c392de257b8ae61329472c99acc5243ee01dbe63b2d3eea43aac4bd6e32521c0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f08a5a0b2701123a3550b31afbb7cf29ae5c2851dffb7f2c4e303c27f916d3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"94777cef2d67a4dccf3362919c7e36dad591d34b7f0a22bda638c9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4c28b1e454c584a812714ba1f03a09e1473eb5fb34c09013a3e4c6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c7972c42baee3a6181b3b011c97c6d499777d98c3859244525080f11bcb8185556\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"705009cb1b36950ef36f2c5f554c1d252a8e0374f85e1bf9767174bd12ddd33322102d031d\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944abb7749f8819cc1425563fcddc404f64d98011d0e10c86aa44f0f03014ee405d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"0d57f1edb0c7dc556fb547e3b9fcc140a7f9a7772a44f20921bc120505fe7a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57c4b3fcb78747f81d5e3be418c5a93eb989c21824a0a95e6b747d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5afb11b5b2585b36a1f8c6e765b41cd380ee7d69c849ea0ebc0a69\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4e845a4942feb106023886bf5fa2cb9f02a46c8c1ade59c2c744d8fb1aa95d7cdc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"84e55d0f9a77c16d66439c32f86f9b0a8f755560b059a81c8cba7bb04367e134d446dd3605\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4255d4aaf200bd5671846806d2b396e64e9bbfb7196bb45affb3d81b6dab5302\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"68375351f66093c21935fa8d67db6c801e30fafb0686f5a51084a787054b43\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fac13aea6d67fbe4ad08a877ba2e56dc9d0c3172a716ffdc25450c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3d1b1f96835cfb00815dcf8342b74677501e3c469e30b4cbbda4e7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5df9f7b1bdb974a8b3fde6df654b416daa7bc4b6c14adba4108cc8b66ac5ff1abe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9c5fa90fbd3c10284e27d5aacb3bba1dbfbb8f1c14f230a70b46cc58d183998c51eae30cd5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a00dab972dec8c4798ea630fe84597c95934ff60e9edcafe6c325582dc3816de4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"44739f7346d92aace3ee2e27715cdaa544170d1914b090258bf1448f98848d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57bc955e126d6ebac0cef9fa88b30aa07097f7aaa141b5ad1b2a0b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2309360f875afabf5c59d9ebd4c6c5125320c1e67d0940f6488e4a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"256166baa2c90616c2a78592cfaea2f28a94d39ee078f1819ff2a9d42a8e59b46f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"02da740ca1571287baddfde7240cc3de6de09354169550c66b31f442446b0c7918481b25a2\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9f446b66cda8306990081a9831686d3e101bcb5566085fca8641357d9092664c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"88fefc74bc985661fd67ac5dede547dbe10817e0153c7dc5aef47a0a936013\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fa0bf86d1ab0179c16c30a31bd95d248cfe881e50af809ba2163d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f03525eecd2cc6a40641f499832ec316dc190d67ea461f9894beef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2cd3f8a83f98cd73ef5986a486e9bb232ca90e97cefa89016ca85bfeaa0c988899\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c33545106dce64a4d994f69a8ffa85d7bc997fe83729fd033a4ac35556aeb9ab309aaa81cd\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5bae52dbf56017810f5d4e85b6cfc5beb85318d76e1f181aaa6ffe842d7ba158\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"1f0beb0896285c9e792cf7427d1c1e4fff4dd9136dde1649873eae756cab96\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"87e1d9c2c01aca980644472f40617ace9f60bf300346ab7899ac35\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6a2ccb0000461a0c0cd5b823db1f9787a3f8b81c28501c84aca55c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"14084e89de9f3bcdb73fea8fd87f71d666ca6689c25a6c43aef2a3a0e10d0f9bec\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f54c471afe61302f4c2bc613fff032bf3815f9d228598355db307b46b9dd883e18df9476bd\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794440b3b65e94a4cfba8ecdbb0232d638d5e4375a6f7f835bcf4b472153e5cd4254\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"55d5dfb1d59b3e1931fdddf3c9384816863d7ce50c76b0e75ceb0550efae08\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fce540b2faeb0f370f5075a2bf90a67739163fcb26a2036b23754b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3989268e1ce0202c90099a8a7ed3b988cd3917431726f43514265d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"439de7db0d74f44aa7d09fa3676c2022ec10a1e34324a62f7a3274240560d42832\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b8eba160a69e0ea7ea3c6eeb1b7ac9dc8a6abf5fbe3edfa631c870297f812ba439a6a5724d\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944195638b3c76ed20914b7385e37f6a08bd256d76b84ec6298ffe10872ad300d66\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"42098c3f5f2f7c8f0530b02540eef0179b3d2e2970a896e5b834019eb65390\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4f7566561aa41008319892b48aed889fe396a31782b812fcf664cb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"36647a23ab85e160239e434418261e5d3834a0ca9fd0aa0d1c7c0c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9d86b62f83fb263e2f1026e25d3a3df9a55c1cb725753f406d7a15ac2c9525291b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ef876d6990010196048ea5cac88f5dc8bdfaee1e7e4a6b9bdf7e6b957a85d50ee36f7077dd\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a5295ce743470f639bd37657eb2ddeae2aa33a18b2740773b66d04e3e0efc596\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"aa860b0e86d4e196fe2bd682a2ad0cb65770679323faa5a2bac801268a9940\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8b4c30c4c74d98149b810b53cd570a0945a924a10e7031c1580ddf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"272eb8144883d46173f129558d4388ad138cd09dfc2a011eb65068\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b51bcd5408144a527338d857d53ef5dace53764e3319584b9a9abec334bb6a4258\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"94bbc9e7833ed754bf2a222b10d1abfc40f7ebf4fefcb1eaddac3eb121ddee70f33c7c4f09\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e7f0f539443caaa38a9efa19d4b741d77a804fdc28ea580373e0725d2e0aa900\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a1d684707663e42124f834d745e5a686060fea201d73602ba48a0feb3d4d28\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a2602100406e8eef9d788689af33b4ee3bd49100165264ba474b49\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9565dbfecc1554450391dfe9efbe51fc285d33ab06646aacdebf4b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"502aeb356a4129f095968932ee3ba2502b63c9c428a2b54af6947efed92ce62cd1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c60b3a7a011926f346deafdf7050a7def0e07788b2702a93b165de3225744080855b960a4c\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8168913721472c9b96fb38ea32f8f902df44804f82739f17448008b82506ce0c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a7cf6c3ba2118f1bee888397d20b95acec13e4dd70967ff750540d43e05c4a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6c28e7ddfd919f8b4c7417f75df720be96595c43f69503b46c82b9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5541c756dd43101ef47997b4dfc39e00b07eff322fc7d684f7928c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0278631e9df558db183142decfb8faf555d93027ee98d91dfcd98d02211411e180\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"06737c3ce530be30c03c8fc690001ce03bfe6167ee1420f4a13aa0fbe0930fa5c5b41aa389\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4510d4dff576b9d2ca5f3f8330898b30bb4b38d81d6631e7b29832f2d0ab1401\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"6e4d4c3f9dc702f5dae97800ce07513daf987b9fa8545a3a5f1d548be48a43\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"45343f08bfd062fd6c0c24c63933dcc85c08abc814a844ff249796\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"397cdb7055f5663c2cde392da85c4494df952782278acce61b265d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9608f72ee5a3ea175059bc6046729ea75a33fb53265c8d2263e8cbbcbbaee3ce5d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ad6c6dfad013dac618849bff8f1ba743eb7e004acb7c4482af222b72419c4869083e25a126\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1801d85206ae770b8da1b11fc7dba4ac6d6201bac6e63f4f0c97c8825bc7d46a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"69c298e9e823b958e4be0d425cf0cfebf6b68389ee4ba51e343d2c404808ea\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5f1c83a4878b37ad7b82d0602e4e2caea17917aeb1c35282bd3b6b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d7cedf68239c8aa7b9fd146c33f620d3b202c6dfc75dbc7ad283cb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"30143ea73a74323d19c065a78286be5ea35bfbea5f03195475bc958e680d18538c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"129da0c34f02dbfabf5773e04e004f85c678cb520df0c6331ec2c9ab4433ac04c002e48abc\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49abb7d9847735d92575f264222bc68136396c8bb88b700aa9ec838d7dbc4a20b3c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b16a04d841325c84d21584a8eb17ed664a50b2bdaf01dfa1056e0474f6e3d7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6556cdd610289bddfffd1ba8fa3ddb8d16980369433fcd789e6633\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b665d926619ea199402fcbe6de9963c83afcc2431e34f6f19722cb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bd593cd31e916d9587d8557c3eefd68743cbfe6195d7dddda71a40f8d8742e70f2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e9db93cacda5c1d5ae338cc273a2136a14641528bddb60e7140f77f6c8530fb6b9b1c9eb89\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446c15957a594079a5bdeae05d01e089fbb7cc6ea2ecfd209b941f73c9235213bc875f7283e9e17ebdac8112627915b455fdc3aaa6de60cb3c98302f370fdb03ea850b9b0cf22fec13e4dc0707245c8721\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9868def631af6242aaf00c35218275832d8d022af1c67b9fc5e8ba90f4d91b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9fdd2576d757f880de49b32b80abf53afec16ddc86769f0e92daff\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e5a48d10dfd648145b78012bc9edc8440cbb6e9e237eb8d5b9c25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"11a3818b2523d06a64168b814ff680e60930e7145378cd813055f00e1725b5f9e8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"184a48a82f921ee36371d880e2abd177f8967349e992958c66fa51bff262a37845a200d26a\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e465e6336e9dc7c27864ea11606eb99e1667859d77c62869ae845650034f17e212b5d9838bcc763842294a55ba018d29fca2b6e8e44050d958fdfe20ad6b8ceabcba50c169a4568e11ce81938e675c3c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"358fcb7bc2b5ad0af5ed0bada66282559b96791900311d4eaf277c5e2af275\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d672c4a13bec9cf79c8976da6b61478a2142db9897e5e36e787732\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a2fb6508e558f771d155227d8184067785f7faefb451e9f3b614ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5b96a7f64fd65452c2f0591e05b19978ae46c4fea33a54e5c31559f07ddcea5a86\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fe4a7b0206f4bf8964e066aa54b11a465e9f4e62a42884dfd436e004326165b53abeaf90e1\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448bc3b729d16d3944f1bfae9fa98e0d306234bfadc44880f99a69c6e55b6c1458e9c9dacab3f29aac44b435c57dc436d0830ae461a4479228789a38085be55b13e0128564987994de842e73dd0a5c328b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"aee89720731c98ccf15f4495ae3f6f2f7ed8e2164a1494c9e785b076e69cfc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c88787701dc4365fe9dee7c0f23d91afdc214a459eadbc9f1d0220\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d784542b85444798fb7d5bd1317f61ad701b43dd63fe3503efb267\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fd60a2da59e84a83e247f291752c71036b01f5ca996d8c24f324bf9260b6809d02\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1897139789b0cf8063b7ae9eba73d1e49e753ab7bb3f19316e54d3e20c69f25e819789c85f\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446c81e52f35c193f540f853e38ee3ddd5d5ffe3cfa8b0c5b93c9498bd737ca396ca4dfa63e3f4878fa875a480bddfa3c0673aa4ec7600b7ea42a1f444512e3c2524c19acd86468bde6b0aaa7dc2fc5069\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b4e352f51eecbb9552dd7ab7240619d18aea21752d866e8687ac0181c3177a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3bd6fa95f3f6eed5f01e0c02df392a7fd96ff9416c36f7311f947e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8bce3062e9348896691a45e74563a5d57866e0ab39fa8bde2bcfca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cc7610aad99dedc9fe14db2ab59dd09c380bb5f2b5999dcc340739f597817b7c67\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b6dcbd77c157bc7ada2f28966068d18529725b2d34571415f507e92a6fcd9843a8cccb63b\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa784842ab3409c9f58025e9476335ed3751022328ca0c5d8547d52857a47d5cc8a03b37f97fbac547a5b98f1aa8b68391a4702380896da31837b85be7599f8ce8e31abd8352e6028f1a073f03a5945ff2d522921053d7b0cca602bf41d45ea7d2d8d34e1643b7ec3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"8463a9f0b0664b613e4cdc24fd7a147eeb8a680ce13b8f2455c591814ca443\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b32d7cc3bab7edc3c9709c90c6d24732a766c4187edc3f70799615\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"71e2ef00fd73deb6ceb5697c9a99c5cd3837611707071d3b1184a0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7122f9b12dea61dc3a14bda86df9dcb3b7be1c9c42c831d8f76aaa737bffc4ac7c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb7da0a813547202ecf0353dd08a520b60fa0d6bd98725f11cfb1c0e91fc7a567122bf3ad6\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aefee6bc9c191c048f7f0a65f1a4c072ce48cbcb3696e410bf7d689f1f677fc66e8eef775ad10de278db69465407b9ef12827b87a3cce6ed7aa1962c3ba641a1adab2306538d941ace280ff052f4db9b2ccc2c6ca1afc05c5c3bb92f1b1947074e4163582e435d455\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9c55ab0e63f6cd4822964397b2f8c02639846e3f333d860a4aab76b5355a89\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b0255c22b1b1a8c9daed6a74126fb9b42e66d973027fa32a560993\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cc7c7559a13c1255bccd05d57f3915d72c3d1020a93607c359b3d6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c0ca5685d4cf87aa972c149472cce9f14a3475b4fd712bd0e1fe54b87451932178\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c2770f0cd4b57e63fa2ea4f17474645fd915006ff3c7e1d82e5b32d9fbde278c595bcaed12\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4106ab0f66368f517459692460f63f51da025f794371accb4dcb7b274866a70616cb3852618b23d6cd34c522e9808ba8e154f4ac80ec1f0735a3846a28c94492ffb571aa9c21118516a239e52097a713f73b933c29c38c25afb29d6e86c634e17836bd511f502d23\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"2cb3b26e15d0626da39f1e30bda034bfa49f42b722bee6ebfa527b004d3f72\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7541b44306a69327c0076eed466a79bc33adea4417bea5fd55c864\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"94e106ee0d4171e5b5cb59723749698bba68e27cfaadfaf36e4f95\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ea7c85445106acb12a2ee518999865c6f14ebe0633e417c316f7ec2bb832480f78\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fa20ff7e243e42892c67d270ab96693eaa645ac96ed27b270e5f6eb6656c597a8de644dc2e\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aab4ff5bbd276169f8eb0af2d89ae5ed655bbf30a0b9536a4190d3c3a44f6a10c8653c24f02cae0ba00e1b3172d2bdfc3eed30a2a902ff72e57e80210ff2cd542882ee881ddb81ceaa9cc7685bec2c0d32a70bc73eba0c3bd4a9af754e1214d13ae77fb62dcf0e77e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e675c9f9255b16e16740517723528e7785ab59669cec796cc4d479a2d594ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"526eda08eaccdbbe8b454df08ef6adbaaebb3ee3c49200ce1ae932\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e23531946e48fc7ad2f40228210d69714d3a2a4b5556b52899b9c3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"766d6c2bbf4901831b1554f43609c692c62bd40076e27573f3fa3db1a93d1e66a3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0195e2a298640ac8975e91500d91c432dbce031185f24f7fd716fcd788bee5f21ac801330a\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794470bc7d4db4b390c2b19e03d60cf1ee8630c74c121706378730dcf60ef41a212c23c47ef2f4ab632abfc6258a30ca2149e2c2f8756c40d832fc206e31a5f64087b6fba7638c9a9fdd2eee96f9ea816629\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"68356b58d8500a2edc2c10a5941b9aaa0cb9b9e47cc125424300a56693775d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d783c351fd707625359d5a1de888fa4be80ea48ad0a1fc3a42fe6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d121d6dce3ce77ad12ea7542dc23f2e0fd24b62ca7035a85a00fc8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a97fc0b1fe571b2e489dd6b8c682084a4d14f7c02b380afddf8ad0e031c362c20\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7011c403c92a9069047e2f00203877ad80c565c118cea0d4d6813589e9a15701d62e2236fe\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944184139746130960afbe8dc1e77469bf6ab8fe3bc2da546f1e3c53a6a27d7c9bf3ea78aeac27365d52bc2e3038ae4a064bf32348223eca67a135faf757cd3f5192ea9013f6ee1eafd5a57198a96fbea82\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e0374abfbce3fb0085ff0f871a837475af5e75d9ddbfa8401a1e2acc96bae9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb46215641bb992ecdb74d3ee58ff268d936953be1d4dac2dbbbbf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e5d9f1dfe7f1749c08edfd6c5d8c2dfaf68c01be76523eee00c50d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b5c39030bae825ed28d66e013e445b4ae5993e6423a58904c254f516798af49358\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"df6c2bd55fedccda788048ba0eedc263de0bf96f17a504e76d2c98569719a6044e86db23ab\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449f576e1764071fda109a30c81e6eb50c70342d7265586e0909af97b16b14d4ea0ddab1e67042bf7192e13ac97f5d5d7844eea4e7994b41439a6116fc10288e74f873df33ccc3547c2b9e4503c331a7ae\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c01d07b279be868b5e9cc3155554603db5053ec629967eb1f2415fec382453\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"87f140b1eccd1b1eff985f7c101dbe4949b7796b3840578a1cc084\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f131c1c72ac8764bbf4328db52c0acb54b96e65da3130e592ea53d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9d102dc4d16d6d62f212dbb1de5d7da6d61eca6824fbcc2293675dd8778e72ab1c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6b6afb5dafe948f14b14b1fb8d9964e1b1a73f5dacd71a2eb13a9c7397acbdbf4271ac3578\"\n}\n]\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443ec36023f6a460bb69c6e18a191ce7e649a5bad8832f4c3123922331e6da43291379263f6740cc2ebb7d8b0be7c3e03f993b8cc1eb5d790f281dff4a49403f44e0608b50ba0a5ca01138aed90ad9a610\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"daa0eb97d8d1d077241487ea1726f911c5bd2b74195884c32652bf33127edf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"151557dc878ae5fceb0435de441b979dd38f197e2e6ead6161c1fd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5f3f5383393879e30183ac307ef5b91ee451a4e386b2518cf84181\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"599cccdea3db5033ea1964b989b12b33cc8de870edf60e04bb7460c6a5181f5a51\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"741fdf3e21c6d6e1eafe10ba0039fd5d4fd3161e5a95c83f5a8d7e1b54a329a538083313ef\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad7dab16095211e964e23dd968eefd00dff8b7c071c7c0ba28b948a242464cbd06da28e4b311d4cf3c92a09fbfeaacc2437aadbc0dcf3a1eca0b2a9512509dfa7535135d2b2ee2f9218ff556268939e1d40bf5bee49e224ac28bab1afb1dcbb41e9c9f47448a711ea\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5b705288aa6b8f260ae0963a9a3c1a900d53afc9009ff3c67e8d0da1cbf484\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79640597b9ff4f9272a8caef6eed64cb65bd8112c0070b5b32819e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0f3250c687d60cee9dca86041223d630fabbe9eafa5d2499bebc2e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"38c3a5f19e745b2b371f79102851339e4978f6bf1c7f510903732060227aafb104\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"09f93f86290a60a996aa2b6c0c189712f7c18f2dfefafea2f6a32e1f317b5728c6dcb13717\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad507e3c84c381ad550d1a1b3055ae4718209d256b22f420146560c1805935792ac1d6ca5d623bd0946cb79ab6e45188ae149a18b357d02bb3bde81712cb13b36946a80b5896239f9ec9053585b86271f9f3dc618a90c45b561d8ed3bd7e87b1f3dda21380c363f30\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b6ae94bfd30e9b3728668b4ff6a0fd6ae2e68b07cfd678288590b9becdaf9c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0eb568553987317e63bf42bd19047b600f087ee1347c196c2dc106\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d7348bcae5150f60b5780bb211caec778b6dc5706abe8f882bfc44\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ec182e9c1699719d4cbcb648f6a7d9dffbeaeeef306fbe7fd8cf76f0f782a27962\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec021c04a982bb01d9fcd5941b8e9ae7517ff0cdb4e342fffcbf70e2e5c457ed3a70367e12\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a21805cb979980f1c87fca53d277edb49bcafb2ad62d4f18bbfc6230d9f155cf485baef0241221efb4fa218958e4a60ec4e2696f2afb368316db4bd2df7d49f35bf401116342ca3f989e2f15a3a5c2feca9d8623b61c59892a89a4aaa740139d1d1b03490b0094d0e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b8f64e7322f8d66256c1bf9a588cadab949800c632566a6d0dd24fd6e18a06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9881acc6cfc75c6b15056f970ca286dbfcc2bbd8f2d2597e661245\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"79a5e8874681c7159001e533cc65fa5ccae187c7000a17b926d1d3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"627c6a0651a41c6f2d2d62d48ed32c99367e1c14537915f84bc4e27a8c35f92b4d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"10c60da2b84939717daf50284bcd04c6f2c527983ed7ce126e483f73b7da091dc2aa740537\"\n}\n]\n},\n{\n\"name\": \"Noise_X_448_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a899d3bea8e66d1fe751f9d3268b1b4e1e949150a8bd21528530d353d65c4a286cd737b46cbceae8d2e6082882ade4ff6e372cfb95385529f29a483ade2527e26f04f5af2a91f6b024c1bfee06d455b72aacca4da60c61f4e46faac2f980c2672915a523ac70536d2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3eb07aaec7227e707ed371f9d5d42482319df7592fd6f1f5551890abf11dd7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"256dec34565c0ceb5954193b63ec4dc2b52ba1a6699b976b364282\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"99b7c3b2c732f40e77bfabaf1f6a95ee16cc6f99ba2ebe1f237b86\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6a08c0f9b34bb1ffcb4982c63d7c30368a85b33856b8e2d8353f9d84d343dcf661\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"894af0ec756adf097763a1ea2ba306b0051faf8331a0c42fc6ca02b4ac70f97e0d244f0b5f\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ac471c977f8e8c3d0f6b0dc320232a47fe83a6cef150b5894a4fc8ac7463a2d9505ccbd3a255e1bf99fd9f46aac150cd29ee5bab234480487136e6f8b6ee33d50933cbefd9c45fe3b9e05993abe87415\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b01228ce5f527f43733c049f907b8dbc362cfae5ae2e7546890546f5dda750\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"77f0e592e3b398fba31840fbed0308a9fcd175ac8f63baa3c491fb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db7a919033563723cea2ae0a62986687ce481b94fd8ed5f6fde54f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"72592e23aeef015050ded0824c3a4571e9f96e13e8202c71d95c8b61f9e6454f3a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d7a35b420d9b2da690931de3006e0b5a6872c08bcf1fbaed235958ea83c8f25ae45ebc4bd0\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944514dfae5953b10a231898d58b7b915aa9b3b7b078c481d57672b6b25088553c34ae69d3fb29829f95ff78ba170a108260616a609b2e956cb44610169edf0f1d07fa187af35d007ed41114e5bb3de3f5e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"7ffe1cecde9b49e1824cb518b72782770a5d6b379bc4fd66fca91062d7164d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2dec4846418527c107e5ddbde5f3aed98dc636b627fbe455424a46\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"aa6d61f3d4aed683323fe18e7c4421c7b73712960dd7e02d3d4084\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"66a314e2eb6e4413fe00599c82539bb91e67afc4f9922580ceb2cae3e87ffb3d55\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f43d3fcae2b3e9f82010155c17a15566444b052485bd0d8055740b626d1b02df69ccea9d56\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cd2a7f52e535ada073e77ccf3c3e003968199963c83517af4088752417ca18d6faba6677322a3281aee83f3fec548e4ab440b6ebf156d7e0b85963b10e0fecf3c1ae21dc7f4ccc5167c5490813ff7d9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9e259ae6ee27eeb27ee8abd130a10d1665ab62d37ffd5cb4fc180cc5be8ddf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1f655c5068074d68ab248205a7ced0e665f576a5df36ee41d327db\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4dff70ded91df100e4eda57b7a869b0caa2e6154c07ee57db003a1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0931a951952fb6b4e41a28ccc8999609e87a7aba12a6d4d4bf816b68394e7dd3b1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"944d3d277591b1d3f668a865bf4f91d4cdcf0361b33cac2d165210676603fc24e7e3a2de62\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cea60737f2591b9b2ee08739bd72410e3473269c9e1de4dce7f7e1ed8ebdb4ff25a20b909d3ec0c82f1fdea4056a4712bb1290df7c4ae0261a21e3a7dc41a8f9b8390dd23277fa77107640a3d7d361b4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"6b7feceb4b3ac3996939f70ef570f011d7281cdf8a628a80576f0546aac230\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"97d7774a06797e5ca135f58bc4151416e8dbafb90236910e45b942\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ce5ce0440e6b165b5b0e0f935d91d4e63b3fd9d5144f2c3ebeaff\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a2f0a2622992eb3f7dbca81304f12e1770a5d67a7016ec0eebea69a712616a0f0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5618f0aa13565985652fb88027880a5e8c23dfac83a88e528a58bcd8141d35612fc368c08b\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a49a39dbd35c2b2e02ccfd34d697c1bb52b3ca4f0aeb8dbb217201b73d92ca164bac7b75fcc973ea1cedf8fe721631baf7789ecda76fb4ef678518b136f3c1c07d024461d352d8f52a038c90394e1f765bc44bb50f65ff9696479a425298a113ce68bd2cd96037088\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"8841fbfa45b8c89fb32708b15c618656d6c0f40ac9967147a701d2346a2f0d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"527beb71e29f85eed4d2def434e4129cd183c7c90277a9639fe8af\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f882c06ea183da92367cd7d0652064a90096adb51b78e8490dfda9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c588f4e17ce7b3ee005531369e8eac51e10796beb7ac9deb0e074ab8f09b8a0ba0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"400f08c7b93067a09c6af5d26deb6712c14bb6c0f4c4ea5c10155eb8457ea734017fb2eed5\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49afacbabec75d2ce5e81f3fb5d09403e857d74696d089fad248781f754da18289bc9288c2c2699743439c2c1af8497d55a6e02b30b1ac4d9d120b899afb5c3d92401eca0f80d10b19bd892e4e7782aabce9b4f2b002daece272419560954f97ea6d2a6414a59682302\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b04d9b82ce09dcaef04d8a59d0cc1647f52987aa92cd17ee7aa9618443f19a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"62bdab21199447bc474f85ed2a0963e394dd66c240ecf99d58fba1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7b5db787dc916f194ca1d42a9d2752f1da68a406cdcc075f47558a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a3dc17b9fac9b1223fccd03ba426c60671a1253349bf0cf9a01085b29adea7a31f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a7e9c3765b8330d7ff5705f876a17843f98bdae12a9008644cc07c1da6cd76a1cd6201eabe\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8a0fbba600b2aa376d9feb311ac088c86a1cb63896a92d77eba13958f6c12f0a7d22bf46e27e77c31b905980519ac24ecff51faee8abc663f440056bc162a0a7d505d35744bef78b6cd27f77b8a0d2ee4260e80cb19f1735518168e45a4a45ce8d3a1adf139b4dc4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"bc6f29215c03fc8b357e8d3c45e41ed1dc119fb48b2971f1d0a22319c2feda\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4c207793e702ed9838f3117ff159b6c95e07fa2fcfbe46828445c1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"da82be46885f2d3e57d15960a9f09299ba71a16f2d5e16c0206725\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fcf8391d67870b1a9d67c5a86006d410d643d38cbc4ad711693d78499968ee4d81\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"83efbc615229447961bc62628dc5a05323bff270337f7ca9cbbc0aa34bc428f1b65b10149a\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2ac97995d3a4503df9ccfe51d14c2b7a573255ffdd07de7664253b249c08e5680fe2c94d72cf435a77ec2873e78029369f0e5d9b7a238a3bc9b9452e1c10be40e9ba7383809a14f964444ac81216bb95be8ae0254105747979b7eb912c1236019d91b8f070f79e3a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3beeebb16fb2f9990be308c7bd85f2410524338199aa5d402c7793116d24cb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e498809dfe8622964b5113fa40c6f6652ec433d0a1fefa5467f311\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8548249241e60c152bab5c6ec5a21517d9246db38548add71c5d5b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b3c7b1142d8c1c38171e66550f9ded7b59f307a8dd727e3479c83d9a2d9fe66003\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"12825ccb6770eb78c1afec06650df8abb36d1f777898f4504444ce6e8a7a235e1b677be5fe\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449b6d7bf7cbbb81e9f434abf2e4fa6467573746176b319473b1c7f61ca3a7e0a3627634db87f95766696de71a52da59448d47f6a72d9d95732319834eda819394ec89a1e38535c774ae2d5d471df06c14\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"7f0e52cf9e0676a2d4144e066e5e9b7b592646378d2da599b7ad4d610295a1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"af5e2886746ecc612a86c0d3606406ba78c0a28a4cf6965e575225\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d028b21d9d41ee178c1087fad03b1a8e7332ee340d851bdc495713\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b3f57265113c040463771f4e737f02827bfb3860d291e91e0860a0d08bc521c600\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ae70a06b8beb23276fc24237e329797ac50af9e7cacbb9bfd113fedb299bacaa6126cbb68\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794472362dc65213243c0f9b901a9792f4eb0a95b038244fd7e4370492a0c4430d050a89cd7b7219f5bba2b787bcaeea6a9d87f1379d829ddd5524c2e36266ec64f45365684577c8cd370935bb970614c4a0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f6c49494a45a47ffa481cb05ea5e4b99cecdc606d67825313dbacfce7d4678\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6a78c1ef4007356dc6118373d2901b62464557f0d6307d34047f00\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7e4a99fd868b671ad72187830f1df5941e1c82633c100806abd743\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f55e2497d9e1d00dcb70c8cfd120bd36df820f9ea6ba11d995c94d0308b75969a7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6da66e0e73425244f70d0921c32f8c3cfbbbb344fe307e5a74585ba91407603feefd0d01e3\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444ba50e9fe3eef58f4696d1303d879214cf1e7f3aa17fa098100fde7b02811fe13e263a3b0a42c9f0b864071b5375e9db538f14c2aa84db87312d4caa6164269ba95301677110ab26ac491716e75b15a2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"7ed48aa761e76a6cab2576d836bb1ea2db7cf27a24d16faaedbd799b9dbb6a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c88fa100b1cd4c5b0a7b3454f927e345363588f5e96066637aa482\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f6bb8e70b4d2d2c057c8738899e422cc0c288dcdb4f27395ac84ea\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"10a5b925be1e2ea9b403fc7027a4a75c7ba38493a65afb327b11ffb9a17256340b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e53243e383f804d1a5fe41450b52aa04d83ffcc11ccca7c00d9837e15f823c8b9e95d3e753\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794411f895f31407a77efcd65840a077009408bae63298d05bdeccf2bb911b0a1bf15990adc9afc587cfa0592e537d2a61d24ae25a8b56d54ca013a8208540f2a4d7cd2146d3152013a37ff985bd57ccc9e7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"89e531a66c60dfa61b55efa8acfbf7bbc4b0680a84458ea330e19c7bec2fb7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"601a45492cfa7d4c1dc2a6f0a5795d9d200266d25bea5e29778132\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0553ecef3b69aad7956eae3b4ea7414317c2a6dce51bb2faaee6ca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0db05f470c46d8e8d9ab2e6be9707d520e9fd8f191848d1e09ea9f8d6569e20c5a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"57df9ac9c7e5c38dfc9577c915d3a8290397b66161b68c37229af5b237b78020c014dacdad\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a493ba5b898b59c83a55694e6ef69369e532d826c08e2588a9bb0f2d0777b1a699f5c3ce02a582b1234e63aac907668ab79cc2cf6fe76cad1ab07310bfa45ed3592eb6dd3f93c6e6e9e76524ee7d15f00caad7e7788c8a33c5c417b7b74e834ff20f6596e0a528e55\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"80159a34551dace6226a802bdccc82e99d38cad5e46b0ba99da79ce2cdf78e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"affb325c4a00c384e8cce66fe0d3249ef1b8c79e6a0fec7a949293\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7b5e4b8acdf9635caa19c9186a155e6ee1666343d249880e2f64e3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4b5f7376c8d00d49c4da33173092155ec2c6bf71e9f8bab91be82fdc1b965aa3be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a7d7aef864d98912e9fec5431b5e84ff6ca138708a6da00298804f778302f0a16a916dc5aa\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad752a2ce9f853b6cd4c45c15e7c449adcaf45ecd06966531b36037044b4af8bf95f94c0beef64c8631ca30fcc241f35214f05b40e632f07a9d1e962c205d56e571c8cd443ad648f87bf88c1a744a4e6b6421f69e954c81d7b1957d3e22ff7f44fd5c32259d68f3e1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"61657284852879a301be96f1f3f443d48b8d9614e215a8b1868140a9c4fe5b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"34cccb620479b65ab3525499784ed7bb6cf2c4814ff385b61c2494\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"820e351170cba092719f2b1eaf818c45b980ccb9b90a83e438a91c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"25f882dfb51713727997b73f49cb7bddf71da5d6d93e80503f5f378b6a6e0e5a0f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d3e09b248f65d0fb15f2bd490d08227c2c6e7de326e608dc96ad5e61391e6a197f6d042ecc\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9a78b02d60e89ffe25f512f1f4ecee2714f8874153861fb1f3099c7e3f18c2499738e1431f575b2cd882134b8afc042bd8a5c3346f59e8afeda9208a59f2f73800d445cb61a39db1beb2954f44a70b1b3c91c0f8d5d10cd9b52472d53951ecec4fbd224cfcfb6941\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"618ea89f01e728bf184304d6dd2dcae1c39445efe2a4775e23c2d9e3dd6c92\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e3017a9b75c565f523031a2654bc970a8d56532dbd15fb59be7948\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c8d05a942cddad35d0f9684626be71ab94665ccc44e803c2eb520b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2db1c9ed45bfb299250a6612fca10a50079636047f3a18373bff6982ebdaf069dc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6d1f893fa1c6e77459d18980bd0a40b7721c50773ce8ef976a4f52829606db5dce30a94965\"\n}\n]\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"4a6f686e2047616c74\",\n\"init_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"4a6f686e2047616c74\",\n\"resp_psk\": \"54686973206973206d7920417573747269616e20706572737065637469766521\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa063b1f3a1c65a53eb52828e359df173a86d650eedd18689c2fcf3f9791602fa83086dc858ccf875ccddc9f4b93a04cb1d11c275c7f6bcf17108d5ec129387ef6739537abc205bfbfec7794d3cbb4743a68250b07e5cf69ca59a11123abce95d65774218a09d9880\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e5d69aec1c7ebf0b0626cbc531473238a91534445bb6fa8f367348198b7f62\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c68a62b11117587a1994a13fdc8f037928caeb722ed3f7a2321193\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bd0b9d5a3010221c386ecf18b15da5cb349b17b0ea3c442c754e19\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"286e5464f790e1bf801615f4ab3bb5451c32bc08b11507c702e43144453c192937\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b6b8aef3345b1ac5c24d6f6f302d0327da2962c20d4ed3a8b60a42d29d962c9fbbf5d553cf\"\n}\n]\n}\n]\n}\n"
  },
  {
    "path": "tests/vector/json-reader.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"json-reader.h\"\n#include <stdarg.h>\n\n/* Note: This is not a complete JSON parser.  It has enough support\n   to process the Noise test vector format only */\n\n#define JSON_STR_MAX 8192\n\n/**\n * \\brief Initializes a JSON reader object.\n *\n * \\param reader The reader to initialize.\n * \\param stream The stream to read from.\n */\nvoid json_init(JSONReader *reader, const char *filename, FILE *stream)\n{\n    reader->stream = stream;\n    reader->token = JSON_TOKEN_START;\n    reader->str_value = 0;\n    reader->filename = filename;\n    reader->line_number = 1;\n    reader->saw_eof = 0;\n    reader->errors = 0;\n}\n\n/**\n * \\brief Frees a JSON reader object.\n *\n * \\param reader The reader to free.\n */\nvoid json_free(JSONReader *reader)\n{\n    reader->stream = 0;\n    reader->token = JSON_TOKEN_END;\n    reader->filename = 0;\n    reader->line_number = 1;\n    reader->saw_eof = 1;\n    reader->errors = 0;\n    if (reader->str_value) {\n        free(reader->str_value);\n        reader->str_value = 0;\n    }\n}\n\n/**\n * \\brief Recognizes a named token.\n *\n * \\param reader The reader.\n * \\param token The token code that we expect to recognize.\n * \\param name The name of the token.  The first character is assumed\n * to have already been recognized.\n */\nstatic void json_named_token\n    (JSONReader *reader, JSONToken token, const char *name)\n{\n    const char *n = name + 1;\n    int ch;\n    for (;;) {\n        ch = getc(reader->stream);\n        if (*n == '\\0') {\n            if (ch == ',' || ch == ' ' || ch == '\\t' ||\n                    ch == '\\r' || ch == '\\n') {\n                ungetc(ch, reader->stream);\n                reader->token = token;\n                return;\n            } else if (ch == EOF) {\n                reader->token = token;\n                reader->saw_eof = 1;\n                return;\n            } else {\n                break;\n            }\n        }\n        if (ch == EOF || ch != *n)\n            break;\n        ++n;\n    }\n    json_error(reader, \"Could not recognize '%s' token\", name);\n    reader->token = JSON_TOKEN_END;\n}\n\n/**\n * \\brief Reads the next token from the input stream.\n *\n * \\param reader The reader.\n *\n * \\return The token code.\n */\nJSONToken json_next_token(JSONReader *reader)\n{\n    int ch;\n\n    /* Bail out if we already reached the end of the stream */\n    if (reader->token == JSON_TOKEN_END)\n        return JSON_TOKEN_END;\n    if (reader->saw_eof) {\n        reader->token = JSON_TOKEN_END;\n        return JSON_TOKEN_END;\n    }\n\n    /* Free the previous token's string value */\n    if (reader->str_value) {\n        free(reader->str_value);\n        reader->str_value = 0;\n    }\n\n    /* Skip whitespace */\n    for (;;) {\n        ch = getc(reader->stream);\n        if (ch == EOF) {\n            reader->token = JSON_TOKEN_END;\n            reader->saw_eof = 1;\n            return reader->token;\n        } else if (ch == '\\n') {\n            ++(reader->line_number);\n        } else if (ch != ' ' && ch != '\\t' && ch != '\\r') {\n            break;\n        }\n    }\n\n    /* Parse the next token */\n    if (ch == '{') {\n        reader->token = JSON_TOKEN_LBRACE;\n    } else if (ch == '}') {\n        reader->token = JSON_TOKEN_RBRACE;\n    } else if (ch == '[') {\n        reader->token = JSON_TOKEN_LSQUARE;\n    } else if (ch == ']') {\n        reader->token = JSON_TOKEN_RSQUARE;\n    } else if (ch == ',') {\n        reader->token = JSON_TOKEN_COMMA;\n    } else if (ch == ':') {\n        reader->token = JSON_TOKEN_COLON;\n    } else if (ch == 't') {\n        json_named_token(reader, JSON_TOKEN_TRUE, \"true\");\n    } else if (ch == 'f') {\n        json_named_token(reader, JSON_TOKEN_FALSE, \"false\");\n    } else if (ch == 'n') {\n        json_named_token(reader, JSON_TOKEN_FALSE, \"null\");\n    } else if (ch == '\"') {\n        /* Recognize very simple strings with no escaping */\n        char buffer[JSON_STR_MAX];\n        size_t posn = 0;\n        for (;;) {\n            ch = getc(reader->stream);\n            if (ch == '\"') {\n                break;\n            } else if (ch == '\\r' || ch == '\\n' || ch == EOF) {\n                json_error(reader, \"Unterminated string\");\n                reader->token = JSON_TOKEN_END;\n                return reader->token;\n            } else if (ch == '\\\\') {\n                json_error(reader, \"String escapes are not supported\");\n                reader->token = JSON_TOKEN_END;\n                return reader->token;\n            } else {\n                if (posn >= (sizeof(buffer) - 1)) {\n                    json_error(reader, \"String is too long\");\n                    reader->token = JSON_TOKEN_END;\n                    return reader->token;\n                }\n                buffer[posn++] = (char)ch;\n            }\n        }\n        buffer[posn] = '\\0';\n        reader->str_value = (char *)malloc(posn + 1);\n        if (!(reader->str_value)) {\n            json_error(reader, \"Out of memory\");\n            reader->token = JSON_TOKEN_END;\n            return reader->token;\n        }\n        strcpy(reader->str_value, buffer);\n        reader->token = JSON_TOKEN_STRING;\n    } else {\n        /* Unknown character.  Note: numbers are not yet supported. */\n        json_error(reader, \"Unknown character 0x%02x\", ch);\n        reader->token = JSON_TOKEN_END;\n    }\n\n    return reader->token;\n}\n\n/**\n * \\brief Matches the current token against a specific field name.\n *\n * \\param reader The reader.\n * \\param name The name of the field.\n *\n * \\return Returns 1 if the name matches, 0 if not.\n */\nint json_is_name(JSONReader *reader, const char *name)\n{\n    if (reader->token != JSON_TOKEN_STRING || !reader->str_value)\n        return 0;\n    return !strcmp(reader->str_value, name);\n}\n\n/**\n * \\brief Reports an error on the current line of the input.\n *\n * \\param reader The reader.\n * \\param format The printf-style format to use.\n */\nvoid json_error(JSONReader *reader, const char *format, ...)\n{\n    va_list va;\n    va_start(va, format);\n    fprintf(stderr, \"%s:%ld: \", reader->filename, reader->line_number);\n    vfprintf(stderr, format, va);\n    putc('\\n', stderr);\n    va_end(va);\n    ++(reader->errors);\n}\n\n/**\n * \\brief Reports an error on a specific line of the input.\n *\n * \\param reader The reader.\n * \\param line The line number to report in the error message.\n * \\param format The printf-style format to use.\n */\nvoid json_error_on_line(JSONReader *reader, long line, const char *format, ...)\n{\n    va_list va;\n    va_start(va, format);\n    fprintf(stderr, \"%s:%ld: \", reader->filename, line);\n    vfprintf(stderr, format, va);\n    putc('\\n', stderr);\n    va_end(va);\n    ++(reader->errors);\n}\n"
  },
  {
    "path": "tests/vector/json-reader.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef JSON_READER_H\n#define JSON_READER_H\n\n#include <stdio.h>\n#include <stddef.h>\n#include <stdint.h>\n#include <stdlib.h>\n#include <string.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n/**\n * \\brief Token codes.\n */\ntypedef enum\n{\n    JSON_TOKEN_START,       /**< Still at the start, need to read first token */\n    JSON_TOKEN_STRING,      /**< Quoted string */\n    JSON_TOKEN_NUMBER,      /**< Numeric value */\n    JSON_TOKEN_NULL,        /**< \"null\" */\n    JSON_TOKEN_TRUE,        /**< \"true\" */\n    JSON_TOKEN_FALSE,       /**< \"false\" */\n    JSON_TOKEN_LBRACE,      /**< \"{\" */\n    JSON_TOKEN_RBRACE,      /**< \"}\" */\n    JSON_TOKEN_LSQUARE,     /**< \"[\" */\n    JSON_TOKEN_RSQUARE,     /**< \"]\" */\n    JSON_TOKEN_COMMA,       /**< \",\" */\n    JSON_TOKEN_COLON,       /**< \":\" */\n    JSON_TOKEN_END          /**< End of stream or error */\n\n} JSONToken;\n\n/**\n * \\brief State information for JSON readers.\n */\ntypedef struct\n{\n    FILE *stream;           /**< Input stream to read from */\n    JSONToken token;        /**< Current token type */\n    char *str_value;        /**< String value for the current token */\n    const char *filename;   /**< Name of the file being read from */\n    long line_number;       /**< Current line number in the file */\n    int saw_eof;            /**< Non-zero if already seen EOF */\n    int errors;             /**< Non-zero if errors seen during parsing */\n\n} JSONReader;\n\nvoid json_init(JSONReader *reader, const char *filename, FILE *stream);\nvoid json_free(JSONReader *reader);\nJSONToken json_next_token(JSONReader *reader);\nint json_is_name(JSONReader *reader, const char *name);\nvoid json_error(JSONReader *reader, const char *format, ...);\nvoid json_error_on_line(JSONReader *reader, long line, const char *format, ...);\n\n#ifdef __cplusplus\n};\n#endif\n\n#endif\n"
  },
  {
    "path": "tests/vector/noise-c-basic.txt",
    "content": "{\n\"vectors\": [\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441b168ed8bbe8220b52bbbde6593d109d0590dcd71f942224efaa932b5e4a052b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a7b5d1962001e9c4d965ea5f133941e9e6989094bcde637a582c34b954f34a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"16ff2557d5d671abe58c88d2a31b58e3a494ab3a6498124be0ea3f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1a6e85b0ef71c38db2c2bf3ebef1d41dc93e26bea6899187d5633d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"00ad2b7d0a03a748d0aefd3accee7bbbcc0bb0ed64d685b2ee8af78997a0245e3f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5631105c749b9550b27d7926dec0c5b83d4bf207688deccd51b50dd7fc9d5e337bba9c3177\"\n}\n],\n\"handshake_hash\": \"b8f873f062adadd42d7dc66ad2e2123f7cd16f6d222010dafb695b794e74e29f\"\n},\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794493e145393e742220f7d46ee2d19db28fda95abad781740f7dd9cbf05416e68f2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"6e2d9ea31cf9daa4a98c0bb691c51c94ada9e61422ddf6c852d6292c3b78ed\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e9bd8264cea01a9967e56bbb7c305bbedb6440427ee113716aa010\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"70f12312f1ba4e3b8fba71fd6db55698d7014fb15be35d76a45922\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2553c4c4196e0a1a86115e74073a6a0b4e70e1df7a84de6056b0f5992760e38026\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"08cfdd4c4eb84b32ccca6281a56f43ae4ba8e420eda369d9ad14cfad966e4cf6d4f5f0fd20\"\n}\n],\n\"handshake_hash\": \"6f6cb74a488335f866477a7edafdcaf8ac693457e9259d94823dfa3d342a53f6373d1b4a875678b77880a8e272790972dec83148a55166da25d3527efb51d701\"\n},\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794430db5925e72ccdb0333fb13bd1f920cc63fa47e95a405d72828740ea31b6d580\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b9546f9f6bc43ff1ab776874425ddd59a45f6294633df65c8e55ee14cbc175\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4732bd7c598a84a15a477ce67562f54bc4fac4ef04ea178c5796c9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2fbd9d4fd39df3bbfc22b63525ba454cdd65d1cf9b3ae658612f5f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"81619224c9c0d7ec75eb670b7d3154b8f97bfbd07cf0fe3df2f538b7d19dc5f21e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8c21c98a5236dad958a67c39829d1bfcfcb0d529af864b17902185f56f3cb7bd86998ddc29\"\n}\n],\n\"handshake_hash\": \"2333b9c5c614bd7531e2316e65a8cde0e51773535ee01f58485baece4bcfec91\"\n},\n{\n\"name\": \"Noise_N_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944da67b782436a213025b5be5607b5a4fce3b254a76eadac6d0912f167cef5a0cc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c35c82fd4ea2ad8496a80eccf6a7171603a9f055083d4a5d228d5dc59e4634\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"613eb1d40376258161584d1e7a55b9c88e32cf2afefd59dbdc0f58\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ac910c4180f0deb6ad4987c9b521e91038c6fce9d09a56c44e17b9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"50ac079bf53c5195b9d28b005133271b9e7136f01c7056c14ce1a40ed447d0fb9d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1a704179097f544665d98a65475a5bcffa589499b26a3de300f56a0b065e2761d07830e81a\"\n}\n],\n\"handshake_hash\": \"561f8bf77d3f032b2b31e200790228df29714b123ec4b482476c9aaab4dab6c88b134522d93fbf68988a171693ed0a7b55e1f5fa208fe1fadc80bd66fbcd15a9\"\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a16011945e3e447fbcf6323440067452d0915293a5c64df9c300ceb9ffe659a36\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9ed8e248be4026920ecc895e02c03b8935f5eb33badffee7e7a305c8514b13\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b82b88755f8ff1d1e0658539721bff624e3aabff093859bad789c2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"70e1b9b13acb935fbc37c2baeb54a2c2a983ac661740a811b693b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4ed8907af817bae0cf791478e5670721d2b919e95dc5a3571151c2016930815261\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a10bde0081e243993e85340fb76a2d757ee837f8dd415f27ceb955ad1665d12c9d40b3da7c\"\n}\n],\n\"handshake_hash\": \"502c0496565cc1dd43f22ce7eb9f639bacf7e0ccb9a555fb46cee05341c1e793\"\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a18cb11acd18b7a4aea058534c8c35b4c9d8d1b3920bb0f65c98adb5aa05abfb4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"7d54fc3e9e2d5a6583862c1fb64bc289b2fbf7da93c8bea09dd00e63130caf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b6c13ca1bc13045db3e4afa6f04f328d35658846b655b289e55a6a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6b2aa1cc5d2046004c87e62b9cc6b6183b3efe35a795f710b6a209\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c7fb78ff47a57c5689e6a8c7d4c3eb5af362ad9b33fdca98e686142807d1b0cb34\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7e66c0f22d9d6ef331bd165e5f88194156becc66da10fc816fd7a16626ca539d3a9391ef73\"\n}\n],\n\"handshake_hash\": \"12a3fa044bb90e88966a72913bddea01fe1551f6fab5e33823e09a87098da1070d4d6513dfe158b821300b5a305160d7a440c481fd1476ff993653f4828cee4f\"\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af382acdb301644445b8ee0aff3e03d131a9cc0b6637cf81c2053e9edecee7c9d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"d2fc84421336524b01357d7affb42d1cb01d1b4ef3436846428f79b1eaaea9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a6d6666e536fd820fae8bcc16200a1c2ae2c18d2dc0d117792bc27\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ba6fd2dc03cba8e85f34c04f5913720232720248b2a12060aba4c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"40f6e3ff80bcfacd171e3cab93e8a38d6700ae8407fe6e05eda05f1d0f21d1477e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"01aab50618fe6ddf8c066bed1fb0a4ed7cd1429a7e91eb55b781624576e280e61d926dadb4\"\n}\n],\n\"handshake_hash\": \"bb6da1932f9d00b9778fdf2e751d8c7d86a4757eff6c10e41cfe3d44398e2860\"\n},\n{\n\"name\": \"Noise_N_448_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a562d21fef6174fcd3a1a3ceabe1e5cf039e001968f3c012a8836a3b4b84c03b9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"72eaa0d8ce9ca1f439ca55f1e64475b9e3e3f18ae0f44a61599b855d23f5f4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"815f037d14ae1005807284df1550e5d768ade76074ae01e203dd2d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a71e802895ba50e56c0d4ee9c3296ada608be88e590cefd357d4c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3c6f2dcd6e204269b8cbf26068e1d4e22efdc49998b21eb8edd854d59716f9fb38\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c1489b6847c42356e651713af2d93d1d5d62343623983110fd0c534ded8cffde8ba9d33d98\"\n}\n],\n\"handshake_hash\": \"4541b8827d60dfa6a25734c36d07580dda509bfd4a370c9243c5e7ba96c9d81820802544c4e89bafe17561d1c3dfcc92f30f5ae46af23714360f1c7e2cdb8f01\"\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440fb66c2b3a97f3b979942822a283b39f7d6e18b67146507b186816e02806a7e4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"dbadb0090cfffd942d5972854f5ffe14dd54659034515d1cf6d622aaf0d6aa\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57da3193394d2a3f9786daba05655028dc81f86b96f712c28d520a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"176cf54926e099aa0677a460cd997729ce9d995989a0f45937eb93\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b91d07b3a41db36927f9d576c44d3f26a78369f16d7890c4f1ccce76ba959657f4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3d7b1419c8ae1f165ea703a3da3eeb11174975e83dd6f4687410f74d0b23415a7834d06d63\"\n}\n],\n\"handshake_hash\": \"27758d00a6e11673b913ac2a0c2bb143974676180d3008e93f54b5464bd7a86c\"\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944337354656b1179fb9d019fc19c92170fb4f96d214a55664f8d3068d486b386d5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a56c949386fa7de01b3161569601d633dc0581a28c1fd5bc9092888224df54\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f12bae154626deee61eb38c0bb501ebf2ac7b47364c709379cbcc9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"58cba311ea4cd1907fe7a719980cad03ca9dbed670010dbb78ea38\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e21c5e45ae44e8bd544356c5a6b2eabd5d83976d8c0ba477a12ab3d1dee835ecfe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e782b0cdc8d2ea017042237ee740645e9b75925f7e1e3c17ca45aaea00c8e9c1eae82ab16e\"\n}\n],\n\"handshake_hash\": \"5cd7b52d62437b97b1d5736a4b3950ef7c22a047e7969e3faa1f1679d8c8275964b2165492dcea4fc527774d66a7cb2e8c57ddbf9ad87ad4c73ce0eb9c4827d9\"\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944579bcbff029d662564fea10d563023315b0169ccc7b59ce9c45807238591a248\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"ece41448702945ed9004d6d83e98f24eadf3ba377084829bcc1508f37ebf52\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c23a5f1fbd44cc5ccf9f5173dbdc269cd62e4d3da636f9f7d86da8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3f75522cb7de92072d28d7f2aed8eaec0a16e4a2f72cfc533656c8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a6d69707c4915cb7322a678c01e212005f11a948e5fb22506aa81943793c6c289f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6d1a4b057667d4b8ae113f219c53b57c4c3574b259701f0e0e77d762c1188b04fa76d255f4\"\n}\n],\n\"handshake_hash\": \"e0ada57e5ed2a075a4654cd6041870c33a68ae3c81a365dfea019a89540b2fbd\"\n},\n{\n\"name\": \"Noise_N_25519_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442e342fc24bc3e384f0d6bc351f9d3b64eb5eaa34108388e0294ebecc775e0cff\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"134dbd942584fc54217bba66d70e7956d6f049bab00e880191572991e1fb56\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f347f4cc451cf99f4f2e3fce2564c7c86c05d4365418f4a3350ad4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ce5a7d70ef7e0e37293e4589f85202319f4c99de4c7fb37d774b3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"849639e55808f64fefc8f941e9af6f5f7d2ffe170db389aec129a723c37f7e4454\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f160e889105be3b13893f012b208d2a603b3b87524fdc47aa031f98ee48f001f521850c7ca\"\n}\n],\n\"handshake_hash\": \"f6f642d23e2a9bced4ca974e207c25a99d160f4a1496c1e4388e6bb8f8c087c3d6185b65a1b3604afd70fa4265600dcd736b0b220394bc4a4ab725166c73b89b\"\n},\n{\n\"name\": \"Noise_N_448_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af5835cccc494aab2d753ff2006c32a3c154b8f989f218b49c38ac8aa2a5182f5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3adaa7730bed8c0020dc6d2fb7dc202e8ed586a3afa23ee12170387d834f54\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"261fb0363c68fe3df37a9eb0ce0ec31a4bfe2828d4f5aaf8dbc9e9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ccb584a3e805e07aa9dae431cbc0aaa83b663b239780c5c68b1f9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"af56a51270430ea3f6197946d81bddc6d13aa27ecff6c1114b4415a92c2be54959\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f923cd305cceaa496b8597eea4504f1e746ad3ec16b1615deb336eed722f9fc7f365274dd3\"\n}\n],\n\"handshake_hash\": \"a13dcfab414f896149c9c155754f3d6859f8d594a1092319fb44fadea08c5023\"\n},\n{\n\"name\": \"Noise_N_448_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a73efd5823504af263f6f354792af1bc01f5c4389efb1997b068d62862825c828\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e75c441c74196170f7b2a7c8e014559cbc6d2fee0d681ccf783316714c3062\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3be9dff1699688b040d8b53042630830cfdfebdd26f07f0686906b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"be274f050cf060ef00675adb892285780cf6b895d98ba4920cee25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e83c2325b843db080fb28f1549124843f4f9a3e54caffffe710405ba6cee04c502\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b731d622c9c07867e4c1b223d3e03454649234601fc9070b519b717b4df7004956f5f53e76\"\n}\n],\n\"handshake_hash\": \"4c10ad97d5b6df96e71a44fe6c96cc4e893cf40dd0cbcd4214cbe6d66555a89ee85e818362f254362daff4c0beea545818af743740bf52d23d9702e72b191632\"\n},\n{\n\"name\": \"Noise_N_448_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4b29a3cde41da986275128f8dc46035ee318e46850e123a2327c05877111548c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"48455e308d36bb85a256d5c33189d2479a28be076db37e9f2622fb51730106\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"671fdd819f79a2034b8ef8a25037bc7e2e387e4c551ed42cbe5992\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0af444a383873414f50ed3254a0612357c48f41a7e717d48ecfee8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c4ecf7591af2f35c975d7c3dfb482a79cf2124b1a64273a5986b2368cda7d53a7e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"51887a4cdd746d8e05b60fc1237ca9ddf85d47508d754aa71e12ea37121a99933f5502b4a8\"\n}\n],\n\"handshake_hash\": \"5211170f28a7955e1c33f50959af41ea2d5b816c35ebd2373b0fc1e7f090a397\"\n},\n{\n\"name\": \"Noise_N_448_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2bab2c7fe0ead3cab5e9a5cc18e95fdd4292799aa443635f983c497cc59d6b2a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"d66878e694343c6a76425b2997350de787fac2eb3b838c08ef7935154b7c5b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3c81278d995a8dea06945ba739d21d4bfd3aa4aafb6b7ecb1506e2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"124274cf933f6cce7a569a5c1c26283d072c734b38981b4cf0ae81\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d4472be4dbe0a3334f6a7ade4b33e0fd3690e0167f99d5c969fe2b56bfe507a23e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dbeeaa6fc0300c6f10292eaa6b772840078b1a0166c2bd666ef81834f63ef0068b1c50d44b\"\n}\n],\n\"handshake_hash\": \"c22b58d84fdfb1398e6f4142785dc27732de632db91757d0022f0930a0b83728e4051dabacf7af8fe06d2be681f235c2d00748bc4b46734cafcbcfe79aa0a918\"\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944605865088b28502ea7e416683346213b0b42ee9c00893b251662efc70310f8a7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b93b3f79c83c8a1fdee6c607681a0d1133f25892e2832c83b31848e325c39a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6532af5bd0238cceaa8711c1df942924bdb355fb11b0f5c59996fc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8df44841dcd1f8e4a6522312848c05e812d2c93a5811e98d5ff247\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e224917834658fb0fdcac0b9d763d2012ded31a20675e1e89779a3c1841eb60ee1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e4c2c0a203ddf6b1c82b904209023ef57c34ae7ccafde0cc8a5a59f7efe4a376e733ed36d0\"\n}\n],\n\"handshake_hash\": \"3892b911c2a7b27beb56acc6e6da721facd2dfe97c8bcbceb3fd62b7ca756ad0\"\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794401bb1ed0aaf1d9e98b83187b079162f370ac8373969cc8cfe9f8e245fe2873ea\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5a55303a1225f31c2ccd51ffa8af535c9181ba2dd1d4debc2b57514ae006ee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8ff172fd1542ee90b4f2be585977cf3a0bedf664a5e26d50b49469\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"12f3a572f483eb99eafe2ce926c11e8a707a4463ca156014b52e62\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"98fe1032506175a1428cdfaf1991b2736505291d102947721216b29aab67b034bc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"be510c5cbadb76a6f7c9a3c9aaae849b9e5a671ba4d11d4c38309641a6b731c7a7bdb23999\"\n}\n],\n\"handshake_hash\": \"6f2efa895469763857b11833dd70b8ac1c0c606116fa4e85af3c8867f610d451a4b7b949ca1f8119a866028e459c9f98c1b6cd703de21b503924deb081ed2760\"\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794477090b4a4e0b19f0aa9d19586bfeba63683e8fd7b1b35d307737edb45846a055\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f4364c331a0734b1c88b8b56f00dfecbec83166b639faa30f3e66e690169d6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd94839339a2d329024e5e3f4a9c7743d013427aa1b4c569158cce\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cae07282d810a42dbfe03df6532f1ee4c5049e010b92d06fecfb22\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"64e5ee38248ae45788788417a7e9f82656687df8197845731efb861a59fc74ba27\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e4954b5c35a8a058089cc097e9d2fbb6b854c388e391e256c6f5f73f7f780283995d18ad59\"\n}\n],\n\"handshake_hash\": \"4acc929eedff7fa07d1ad0721c8461e84f4226fffbdaa4e1d5825013cc44144b\"\n},\n{\n\"name\": \"NoisePSK_N_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794439be8d01273654f12cbe5cd5f7fca0754fbf2eb6619efb61ff091ee79f5fa9df\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"555ab347796f1bd3aa6a96669af53ef52369e0d95ea1c7fe4e09ed536be431\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"52bb0bdb73674c84037304b3b95c06342a3fc58bd00c1b737720fa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ed489a9517c70cf171e48853091e21a097b66c19a64d75f7312765\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5f2e2f63a6a5f242366c5f104a42c831c856b20c6fde6f3a4ad5cfa351d5b51c6b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"05552ccd75977e3d8d1bb94265795e7c45344eb0735d10070f6fb73e1b8fa78e68b9f97af3\"\n}\n],\n\"handshake_hash\": \"b940059896445287d9623a212628b8bd66a60cf511c4d0bb53c660787146d0e68c5cd55c41a9bffdaae5b0271efe05b60cbd70c6d2417f4640c54a7a552a7c35\"\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ace3417c881bab557d57807598cf32cc4944a3ec8477d6405d2525bf52b778d8d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a9c65c90ffcdfb93c9a9f052338059ebebea12e271886629003c0297d8ebb6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bcce15b7ffc27818c68a50f69bf33f0172f1d272827d124109357a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"82c26df9381bc7b45522a4608986ff6e0f7a29b851ba24a3037f26\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da8b66bb0083d83d32818a1e82ef7562320e88b61b349e3e214149fa812b24ec81\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb486636bd6492cd7f94faa72ecdcc915c311dcfe703e06a846c68a5b52ac146dbe7b13ff6\"\n}\n],\n\"handshake_hash\": \"da85ea8e2525a7f38412643c9ffc7393428e1eba39f3b6509b5f14be79062e71\"\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a55daa7cb7c7602d006713d9c5b160d995c4e899102071358385a55e159a9d384\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"ab7cc8eec6f50c191cb09dd5d05e8b2de2ce8c21ceb2db4d1abf8d913f571f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fb081228d488831ec2149da5576df306d5eb38661d6b142afde4f0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a031bc80e4f40435c7193079ded2dfb11672c60571acdb502141c8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f1f22abf48ecfe313b4baad1b1703f50036cf00627ecd97363433c15f30883ecd0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8c2fec0387fc1c5e9c7960e480ae7beb550a63512f9650503bf41136300f196746061293e6\"\n}\n],\n\"handshake_hash\": \"64ed391a5f376984a170c050ff91ee9cb6af1734e9622e69af98c9096ede807689a6477f10d9c05d58f3787363f0a8d19d51bf2d3f5b6b5abd6097be75e08302\"\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8510cec27456b7f67c13141d64fe0201f29ee9ff154325a8ec21323428065d42\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"af5bf7d7ce1691ced63b870b8fc693fe8d04820bb410b8c539ce87cc8aadc8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"00b7273602d4f4c672939ea82d860330209dab13a11eae7d0fb0bc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0cb0454565a163e2fa00dcf9fb0cb0789bc039d4cc97cc59b4e5fc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"426d1494f54fd047f921e2d52c38b7f255949df0a8c79e9e9fc6546c97678fef23\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c515d3a4b019be275555663b863d595c6c3ae65448dce2d3e959f5b832ac5a5b2de2efb8b0\"\n}\n],\n\"handshake_hash\": \"cd3723020e4467bc3bdc21210780b1194861cf49cf3ef0fc91f61efbd7601f0e\"\n},\n{\n\"name\": \"NoisePSK_N_448_ChaChaPoly_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6616f72af06f58487b1d1a645e8a4a4ba1f3bbbbbc910842d59431ae22701e01\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"bf80249d57471a3330d5a8e2515553ab31a0861b4875a48573e90ee84e3890\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd3c91f2376a64dfec70ab92c9bcc353e53f18b02210a6e60bf916\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"01f94338c01b8fdbe997829f810de43b3a674585f1ba37adae0de0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d7d6e2873fa4610dc28457a90c009fa8928abe7599f00cb33225c7291ac612c0aa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"254777451e716eda2942307191d04abe51ac6067e5ace82398f2e1f692c4c4f5ca9fa905d3\"\n}\n],\n\"handshake_hash\": \"da39a738921871127e7516e92ab42828cbe6b4c75b4314ed4c7f915e415d8bd3b9a27b12b3b587b5cf0f06043b4352ec62b5b19e0c6fda1ef0445573bdecaa9f\"\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944034e6c275141c3e37c660fcad477a344a429649b4d6ed7d56a467a5278c6eff6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c449cf373c86284ce2d8ff03d73fdc92d1417137581e315c44bde2ac7d7eab\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b757063925ed9596785445013a7d0495c62574dae7dd464fd8c79e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"89b02cf4f150cec1555a707cefce4571219049a4bef1fc8f06d2e4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"421cc2e25729857b2ab80af150746d4bb1925ed9555d74eaba0b5cc620ff905fe1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"883276b7a27932773876f1ab0554038c0db1dfab1e0ceaaaa724a6ca5f31f4b6309cf21f9e\"\n}\n],\n\"handshake_hash\": \"cc3410e6ac4c745f7a99388d39faba787f062c8d999a9ce4aaebe47cc51a6d7b\"\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794426a5a9da0ed0703db24e8939e085a2fdd837230ff43a1745ce713910e16bdd75\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"eabcdf3ed56fa678b76336d215ba30f23e4eca49ba899042755317e3d5daf1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0fb76ebd36304c36e04f4f1752eac5ca24e2ecb51bb2a64809f61e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3595db0120b787822e246dd42d6fafec3e7cdf191c77395118b6ca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7995b321fbb4baaab38890562abf1799d4545a27ef939abd1ee0085279c1f2f145\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5de46b3b180f7aa7ed206e2c961fe499340f935d0fe3f63f05c33e00cd41da75af6630906f\"\n}\n],\n\"handshake_hash\": \"9e6a66c4e271b883e5a1f7f76d50af0827328226e2b99bc97d62ef4e53edf35d678d9b9032ab099353a0a5a910cff37d41c601000fe8e466953605729665a1dc\"\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944494ee7cfca0d066f1ee2971046cc2cf9252f2abf0b03a2d55dfc4a3f77c9c3d5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3f3394934bfa6120b2908214edeff4c1aa4eed96c864505fac19a406bbc166\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9f08b99323a2d9572bb7ec73aa33292861f8f94012cd5d04e3c303\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"63e53d9463d3d4c2ce3faba834122752aa1829aea1e99ecc80f3d0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ebc7aff13f80c492c03a2aec884ff5a9058c27156e43efe65d50811a9044d23e8b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a729497d0ab1b2072a36d1f7a0df0dcc6f1c508299c4d16f73070e9bc07988271f94710618\"\n}\n],\n\"handshake_hash\": \"7556d9f2406522c5f5ce24c06b75c7cf085128c455c7d0c31d136a4557e78735\"\n},\n{\n\"name\": \"NoisePSK_N_25519_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bb8fae1156fd35d7702dd4d67ae537dcc384824a306a52682688d46cbe721399\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"8b1cd3c9a8315eb0d6e9194465209cd31d31f75c65d41868c14fda181dfdd2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f5e0de709e30f825a9fa402cb79741b7e479896a06a3aa92a8f49c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bae89e6b1c0095bfd0dd5acff91595954ff2a919244ed84637da63\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa940a0c09730d140d8e9289cc58c2444ff11e143a1a5f91ea5e8e3915cea0106e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aef260650e704846ed6fb769612396bb1d9bb9e0b4007ad15b8a3b66e972ef728b34a13680\"\n}\n],\n\"handshake_hash\": \"ee9318b2684f1bf00d183ee9b13a330a53ab73f6d37cda8f7df557db334692cda6f460aa8715bb217dfcdae048e63de85ab91b1de638771ca9ec78b2a12cae79\"\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_BLAKE2s\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a30dc7bccdc87959629ac10fcbf6c8400c841389661889e9225d42273b417f3e0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3f77ab407da971e845a3e4351b1b9f82d7ba4b6136ba61279819479786ba5e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d5a874f585c8e85fec84ddb9d0d23d26ec8a3ac7a5dde954c25d6c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9958260d2e428db543e575ca6e3e3303315fb716c530dca6825c2e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"933427edd7e7c7ecac9a0df00aa0fff56e0abc8dcfdbe7e05eba065b51b1c5776c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6bed45540c45d654e215a2476529c6e3be1ea070c8fa762f79c1d13cb726d66bc2a2278704\"\n}\n],\n\"handshake_hash\": \"c866d4f56c3545d3bff9c14034ed3dfa6beb229defb33ca6a64d5ff973009b82\"\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_BLAKE2b\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4dd7ce72b16618ca1de739cc43e2c47e1a1b8a07baeeefb8b4c86a7f955ab0f8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f0f74d23cf808a2f928e6ed61df3be339891eec7604d715bbbedd9d5cfa0c1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"601e974f4f3fdd676756131ea16a61a4c20d6d9f352d5438517fb9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"965292e503c454e85e19cc62ddac7cd820db12d2d7ee71fba4143f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f18d0f8e732b50b27c8b43a06c6849fd5242c4e3967b5bc8f8b1731ceccb453f89\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0f5354eaa6001b13b86674bcf1c7f6cc4d9d501d6681c7a0168d65dce322081544a1875584\"\n}\n],\n\"handshake_hash\": \"f686e2fceaf2c66baf01e56d9f704acdbcbabd9b7da03b25c43c61716a1452e0fe992581a2515cf308bd254a052335fb464457935b492ef6ec8616cd07c5ff44\"\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_SHA256\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a77408c1235e0b50c6673fe60b2916b12c9a35b2ee5559b28dc1af3528ec07740\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"16893d548e02a07e6a2505407321dc5c65d9b42684d2391a77c6824dd7cd6a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f97b6fcbb2c869a052442a64c7399b4e36e9f929f583487a28b915\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0b84b133ce3759c2617155227f760c9ee510383ac7ff01bd0a031e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9af23d522fcdc2d2d7fee1f2c7f7007a2278e2b28d3bf2669d1bf0b10539abc7b6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e4aebe9de849ba1ebff1057d19b220bcfeb6b2865de7f2ae913f9e0f8b375df08f6d959f64\"\n}\n],\n\"handshake_hash\": \"fa79645291f54445c2f500bb4f27c33f3c162bc20a745f89c23656d5737c111a\"\n},\n{\n\"name\": \"NoisePSK_N_448_AESGCM_SHA512\",\n\"pattern\": \"N\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af529c82f84bba92d5fbc4163de5df0a12ec769005762191eaeae7ec98a74545e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b74fe3a483445c5a016c420d3ed6389e523a4a989a71c13be74512f11d148d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dffc97d1436fb64134795484f85ebc75e5bc91f11ba4353dcb6f2d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d21f351d2a52f41d2f9de775e17cef1f2583e01dfce09e63c9e87c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ff60446830db254f16c79d85f4b0252558e755e06921af2d290a74a4dd8f0d331c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7e79379c78763f028cf4097deb34efdc1d7e82ad93fc19cdab377150fe5814c868db729d2c\"\n}\n],\n\"handshake_hash\": \"b8705d7eab2d15d5471d6a710a2e0762c26f5f60571a7feb46a80887078cd6fb64a91760a9d81a0bea151b765c04e3bef1ba74d93c07191572d22c02c9003543\"\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448bc3b729d16d3944f1bfae9fa98e0d306234bfadc44880f99a69c6e55b6c14581df5d4b8a62016a6d7881bcf1d53df2a830ae461a4479228789a38085be55b139727221a332addc1b622bf1570b60675\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"aee89720731c98ccf15f4495ae3f6f2f7ed8e2164a1494c9e785b076e69cfc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c88787701dc4365fe9dee7c0f23d91afdc214a459eadbc9f1d0220\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d784542b85444798fb7d5bd1317f61ad701b43dd63fe3503efb267\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fd60a2da59e84a83e247f291752c71036b01f5ca996d8c24f324bf9260b6809d02\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1897139789b0cf8063b7ae9eba73d1e49e753ab7bb3f19316e54d3e20c69f25e819789c85f\"\n}\n],\n\"handshake_hash\": \"0418acd3842530a97ad50ecdb4fb0ca9c93385cbb5a050234903dca52974bca8\"\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446c81e52f35c193f540f853e38ee3ddd5d5ffe3cfa8b0c5b93c9498bd737ca39642c0d723f4de4e103d867baca1ac0ae5673aa4ec7600b7ea42a1f444512e3c25361f2228fab8a0ce3b7e265d58465c76\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b4e352f51eecbb9552dd7ab7240619d18aea21752d866e8687ac0181c3177a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3bd6fa95f3f6eed5f01e0c02df392a7fd96ff9416c36f7311f947e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8bce3062e9348896691a45e74563a5d57866e0ab39fa8bde2bcfca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cc7610aad99dedc9fe14db2ab59dd09c380bb5f2b5999dcc340739f597817b7c67\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b6dcbd77c157bc7ada2f28966068d18529725b2d34571415f507e92a6fcd9843a8cccb63b\"\n}\n],\n\"handshake_hash\": \"b7e942bf64d2ea41336201eb7ccd2db50356b55508099bfb398525c98449464f38b450e855369f687fc5fd450227f812b3d2faae918557720c4638c7fa3462be\"\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446c15957a594079a5bdeae05d01e089fbb7cc6ea2ecfd209b941f73c9235213bc14ed87a1a4a0b164c11a5999be0f7bf1fdc3aaa6de60cb3c98302f370fdb03ea6fe2cf18324b0812663aed65fc9eafdf\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9868def631af6242aaf00c35218275832d8d022af1c67b9fc5e8ba90f4d91b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9fdd2576d757f880de49b32b80abf53afec16ddc86769f0e92daff\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e5a48d10dfd648145b78012bc9edc8440cbb6e9e237eb8d5b9c25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"11a3818b2523d06a64168b814ff680e60930e7145378cd813055f00e1725b5f9e8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"184a48a82f921ee36371d880e2abd177f8967349e992958c66fa51bff262a37845a200d26a\"\n}\n],\n\"handshake_hash\": \"e5cdeb715c9553e966ccd446aff7f6df1556d0ecda39ddb49ef24c876fe249b7\"\n},\n{\n\"name\": \"Noise_X_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e465e6336e9dc7c27864ea11606eb99e1667859d77c62869ae845650034f17e26d6ca6547dcd6de1fc7fa55d3390a170fca2b6e8e44050d958fdfe20ad6b8cea6ff911551c6a138dacdb929d4863baa2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"358fcb7bc2b5ad0af5ed0bada66282559b96791900311d4eaf277c5e2af275\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d672c4a13bec9cf79c8976da6b61478a2142db9897e5e36e787732\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a2fb6508e558f771d155227d8184067785f7faefb451e9f3b614ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5b96a7f64fd65452c2f0591e05b19978ae46c4fea33a54e5c31559f07ddcea5a86\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fe4a7b0206f4bf8964e066aa54b11a465e9f4e62a42884dfd436e004326165b53abeaf90e1\"\n}\n],\n\"handshake_hash\": \"0ea5a6a7707eaa42c6ad41a90083e7473100b26f3a826e9c5c6ab2bb4247d2276f88d57ba36f37f225f122f7949fcfcf7e749d89d6cf79387abafcd279afc460\"\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4106ab0f66368f517459692460f63f51da025f794371accb4dcb7b274866a70616cb3852618b23d6cd34c522e9808ba8e154f4ac80ec1f07ecb83603fd72f9d899d32c8d7323673816a239e52097a713f73b933c29c38c25d4949ceb3b995ba034180b0f86b6ede7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"2cb3b26e15d0626da39f1e30bda034bfa49f42b722bee6ebfa527b004d3f72\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7541b44306a69327c0076eed466a79bc33adea4417bea5fd55c864\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"94e106ee0d4171e5b5cb59723749698bba68e27cfaadfaf36e4f95\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ea7c85445106acb12a2ee518999865c6f14ebe0633e417c316f7ec2bb832480f78\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fa20ff7e243e42892c67d270ab96693eaa645ac96ed27b270e5f6eb6656c597a8de644dc2e\"\n}\n],\n\"handshake_hash\": \"90b42a56063973791f6e8e1e2383352a90465df6ef02f6fa08ab3df5ed4b3e88\"\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aab4ff5bbd276169f8eb0af2d89ae5ed655bbf30a0b9536a4190d3c3a44f6a10c8653c24f02cae0ba00e1b3172d2bdfc3eed30a2a902ff72e2116f6e94332adf15a84cb91dad387b6a9cc7685bec2c0d32a70bc73eba0c3bdc8d6f7129fd56031dab36535907d946b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e675c9f9255b16e16740517723528e7785ab59669cec796cc4d479a2d594ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"526eda08eaccdbbe8b454df08ef6adbaaebb3ee3c49200ce1ae932\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e23531946e48fc7ad2f40228210d69714d3a2a4b5556b52899b9c3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"766d6c2bbf4901831b1554f43609c692c62bd40076e27573f3fa3db1a93d1e66a3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0195e2a298640ac8975e91500d91c432dbce031185f24f7fd716fcd788bee5f21ac801330a\"\n}\n],\n\"handshake_hash\": \"bb528bc14bf255e0892221a3d5367ac3daa061dbb679688291c50c01ca32bff101aad07944642f7f1207e2b322534e999080f2bf89861c2ba836941318ffc852\"\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa784842ab3409c9f58025e9476335ed3751022328ca0c5d8547d52857a47d5cc8a03b37f97fbac547a5b98f1aa8b68391a4702380896da3138df18ca21e2ba9c0bc685c8f6fcaf2af1a073f03a5945ff2d522921053d7b0cca86335c4873aefad3e769a805d8062f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"8463a9f0b0664b613e4cdc24fd7a147eeb8a680ce13b8f2455c591814ca443\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b32d7cc3bab7edc3c9709c90c6d24732a766c4187edc3f70799615\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"71e2ef00fd73deb6ceb5697c9a99c5cd3837611707071d3b1184a0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7122f9b12dea61dc3a14bda86df9dcb3b7be1c9c42c831d8f76aaa737bffc4ac7c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb7da0a813547202ecf0353dd08a520b60fa0d6bd98725f11cfb1c0e91fc7a567122bf3ad6\"\n}\n],\n\"handshake_hash\": \"287dda3eaf465dab0c8adedf18f03e283c98e8900a033110bcaae3bda9f6554a\"\n},\n{\n\"name\": \"Noise_X_448_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aefee6bc9c191c048f7f0a65f1a4c072ce48cbcb3696e410bf7d689f1f677fc66e8eef775ad10de278db69465407b9ef12827b87a3cce6ed7646e213b7924aee86b7c6b73c4522bc4e280ff052f4db9b2ccc2c6ca1afc05c5b2f80efa8e52d6cc326931a63f628fb2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9c55ab0e63f6cd4822964397b2f8c02639846e3f333d860a4aab76b5355a89\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b0255c22b1b1a8c9daed6a74126fb9b42e66d973027fa32a560993\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cc7c7559a13c1255bccd05d57f3915d72c3d1020a93607c359b3d6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c0ca5685d4cf87aa972c149472cce9f14a3475b4fd712bd0e1fe54b87451932178\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c2770f0cd4b57e63fa2ea4f17474645fd915006ff3c7e1d82e5b32d9fbde278c595bcaed12\"\n}\n],\n\"handshake_hash\": \"0962b0a6b0e4ccadf21045474ec487e42c45c91d400bc37fa057f1731ccadcbc6a57139ac3d844522ce3ac434c53d4e3e1a3c69f23d85ea74a0a04dfc212067f\"\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449f576e1764071fda109a30c81e6eb50c70342d7265586e0909af97b16b14d4eac0be8bef899a837acf3b020e148ed9aa44eea4e7994b41439a6116fc10288e74c5dcf2f34e2d772b216da79634460354\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c01d07b279be868b5e9cc3155554603db5053ec629967eb1f2415fec382453\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"87f140b1eccd1b1eff985f7c101dbe4949b7796b3840578a1cc084\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f131c1c72ac8764bbf4328db52c0acb54b96e65da3130e592ea53d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9d102dc4d16d6d62f212dbb1de5d7da6d61eca6824fbcc2293675dd8778e72ab1c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6b6afb5dafe948f14b14b1fb8d9964e1b1a73f5dacd71a2eb13a9c7397acbdbf4271ac3578\"\n}\n],\n\"handshake_hash\": \"8282974cdc1ed2b2d6d353262aaec11cab888f5a14fba504576b48d975b0994b\"\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443ec36023f6a460bb69c6e18a191ce7e649a5bad8832f4c3123922331e6da43298995c99d1be8afd251f766cf45ce52ca993b8cc1eb5d790f281dff4a49403f44e41c03cc34920f15653e9bdc13fd4e27\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"daa0eb97d8d1d077241487ea1726f911c5bd2b74195884c32652bf33127edf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"151557dc878ae5fceb0435de441b979dd38f197e2e6ead6161c1fd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5f3f5383393879e30183ac307ef5b91ee451a4e386b2518cf84181\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"599cccdea3db5033ea1964b989b12b33cc8de870edf60e04bb7460c6a5181f5a51\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"741fdf3e21c6d6e1eafe10ba0039fd5d4fd3161e5a95c83f5a8d7e1b54a329a538083313ef\"\n}\n],\n\"handshake_hash\": \"2eea3883c9eec705b486ce084a70adc4f571dc5666daf7f4781fa11dc1db09aa35447d1942f97c70f54c82ede55a595da39b4a2e8596ba5e8ee0cd717d470eb8\"\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794470bc7d4db4b390c2b19e03d60cf1ee8630c74c121706378730dcf60ef41a212cd71a3028564a450fa9fbb8102338690ee2c2f8756c40d832fc206e31a5f640874b6b2f51c3e6707639999826b0b88489\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"68356b58d8500a2edc2c10a5941b9aaa0cb9b9e47cc125424300a56693775d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d783c351fd707625359d5a1de888fa4be80ea48ad0a1fc3a42fe6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d121d6dce3ce77ad12ea7542dc23f2e0fd24b62ca7035a85a00fc8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a97fc0b1fe571b2e489dd6b8c682084a4d14f7c02b380afddf8ad0e031c362c20\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7011c403c92a9069047e2f00203877ad80c565c118cea0d4d6813589e9a15701d62e2236fe\"\n}\n],\n\"handshake_hash\": \"94edb5a6222e949fee234060618d4f0bb1eb3d97daf3c290e19366cb035ba1fa\"\n},\n{\n\"name\": \"Noise_X_25519_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944184139746130960afbe8dc1e77469bf6ab8fe3bc2da546f1e3c53a6a27d7c9bf448237dba5f1a16b04dd227ea68edcb4bf32348223eca67a135faf757cd3f51901e4f01bc1805be44d95b6112fd2d3d9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e0374abfbce3fb0085ff0f871a837475af5e75d9ddbfa8401a1e2acc96bae9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb46215641bb992ecdb74d3ee58ff268d936953be1d4dac2dbbbbf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e5d9f1dfe7f1749c08edfd6c5d8c2dfaf68c01be76523eee00c50d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b5c39030bae825ed28d66e013e445b4ae5993e6423a58904c254f516798af49358\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"df6c2bd55fedccda788048ba0eedc263de0bf96f17a504e76d2c98569719a6044e86db23ab\"\n}\n],\n\"handshake_hash\": \"65f3c0d4d740845793c54f5205c3fb1d080f780056e02433e86ba08ad99322c6e58089cff4ffe39619a685ddc000fc48b20952cea88ef354fd5f2648cd41013b\"\n},\n{\n\"name\": \"Noise_X_448_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a21805cb979980f1c87fca53d277edb49bcafb2ad62d4f18bbfc6230d9f155cf485baef0241221efb4fa218958e4a60ec4e2696f2afb368310611040be7a746d54bfa8d195aeb13e489e2f15a3a5c2feca9d8623b61c59892552663b8e4a0e6626fc23be206b5160c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b8f64e7322f8d66256c1bf9a588cadab949800c632566a6d0dd24fd6e18a06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9881acc6cfc75c6b15056f970ca286dbfcc2bbd8f2d2597e661245\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"79a5e8874681c7159001e533cc65fa5ccae187c7000a17b926d1d3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"627c6a0651a41c6f2d2d62d48ed32c99367e1c14537915f84bc4e27a8c35f92b4d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"10c60da2b84939717daf50284bcd04c6f2c527983ed7ce126e483f73b7da091dc2aa740537\"\n}\n],\n\"handshake_hash\": \"501ce9b5eb172a0bbc765973d338dcf5a2faddc0e07aad101cc1fd50b6c22eff\"\n},\n{\n\"name\": \"Noise_X_448_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a899d3bea8e66d1fe751f9d3268b1b4e1e949150a8bd21528530d353d65c4a286cd737b46cbceae8d2e6082882ade4ff6e372cfb95385529f7eb14ffbed31e42ba0355c60e628be394c1bfee06d455b72aacca4da60c61f4e3fd8b28c4abdae8f1673ae6464798d85\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3eb07aaec7227e707ed371f9d5d42482319df7592fd6f1f5551890abf11dd7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"256dec34565c0ceb5954193b63ec4dc2b52ba1a6699b976b364282\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"99b7c3b2c732f40e77bfabaf1f6a95ee16cc6f99ba2ebe1f237b86\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6a08c0f9b34bb1ffcb4982c63d7c30368a85b33856b8e2d8353f9d84d343dcf661\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"894af0ec756adf097763a1ea2ba306b0051faf8331a0c42fc6ca02b4ac70f97e0d244f0b5f\"\n}\n],\n\"handshake_hash\": \"2e84281a107798d0636651a34f4e6c9108e5dabc7d998e4a208ea706be7b461ae3b37e324168979ad2fb78d84b9151bd866f33fe44edf70c3ecb653e2046717b\"\n},\n{\n\"name\": \"Noise_X_448_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad7dab16095211e964e23dd968eefd00dff8b7c071c7c0ba28b948a242464cbd06da28e4b311d4cf3c92a09fbfeaacc2437aadbc0dcf3a1ec79862fa5309c0bfaae6030e2cd7cd24d18ff556268939e1d40bf5bee49e224acaca937829777a6a1533ae8518d417eca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5b705288aa6b8f260ae0963a9a3c1a900d53afc9009ff3c67e8d0da1cbf484\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79640597b9ff4f9272a8caef6eed64cb65bd8112c0070b5b32819e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0f3250c687d60cee9dca86041223d630fabbe9eafa5d2499bebc2e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"38c3a5f19e745b2b371f79102851339e4978f6bf1c7f510903732060227aafb104\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"09f93f86290a60a996aa2b6c0c189712f7c18f2dfefafea2f6a32e1f317b5728c6dcb13717\"\n}\n],\n\"handshake_hash\": \"9253783465f8a0b7ec6a0f9e543654d251890158a013c21a6051c3ef3157cdc3\"\n},\n{\n\"name\": \"Noise_X_448_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad507e3c84c381ad550d1a1b3055ae4718209d256b22f420146560c1805935792ac1d6ca5d623bd0946cb79ab6e45188ae149a18b357d02bb75b466d1844edcd822dcc559cf33697aec9053585b86271f9f3dc618a90c45b5429b4787986da640fe7a55b081b279a9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b6ae94bfd30e9b3728668b4ff6a0fd6ae2e68b07cfd678288590b9becdaf9c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0eb568553987317e63bf42bd19047b600f087ee1347c196c2dc106\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d7348bcae5150f60b5780bb211caec778b6dc5706abe8f882bfc44\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ec182e9c1699719d4cbcb648f6a7d9dffbeaeeef306fbe7fd8cf76f0f782a27962\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec021c04a982bb01d9fcd5941b8e9ae7517ff0cdb4e342fffcbf70e2e5c457ed3a70367e12\"\n}\n],\n\"handshake_hash\": \"d6214a36d554d6bdfc295ab653c6a253d66d866f2faf3b234923e27d0a37db95d616b87313d9bebf051252356a161da94dbac12a7495c2d91410aea852384915\"\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944af7542d3204ddae703eaea43f8e02a0d557d557331e3c8d0cbe1deda510767239b6a9cd6951340b4e865a42fc161b803067ab229a2032dfb82a01894870332728d32085de557fb1ea2a835316e2ddf45\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c3411167981cc4198aa7000ca1f7f832fc46334bb1901b02110a24a2512acd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9f4e7fc31bd794c3b561f4634dcb449c9fe0b84b7a432bd675e10e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"abf5bcdb660997cf7d58d5818ff67fc679c636348a7411c7e792c0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d11abc2ab122c0218e55888f263d034de10ec49de096c87cdd59f50175351b5673\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"07fa98d59992c3a93dc91816cd01f044c26be7682ddec480dfea0e2007a451178a59c31d45\"\n}\n],\n\"handshake_hash\": \"34b36f4923c40e1079ead930910427c1def3d07e2feff30a52f707dbc6d0eeb5\"\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441e6a250fb0ede134eadd42fdd013825b62e97e04cab9eba690a4a744ae3092d9bec250aa80aa9d2971162e0b5add58ca9d7e4aedb1716a8a026075fd5f9b6105f9904a2a96e7c673b36496609f4ec5b4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"4e232b9f96484e8e8c08ac757d78a9f72117461dc3306ade43d44f0e715d4d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60eee6b66aa064a955708cf93aa232199a5e1953896f9910720859\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fcdf0de878e8d327f47d429b11e173f59a77b502aa05ae713055f4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8dcbc5ded04679991b2c5ad41edd8d205abd1118c1baaae8ab7faada4461f63733\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4093583aa2900c7e44fe43348546642a8c37064cb236198b468785cea9e0fc418196ff7416\"\n}\n],\n\"handshake_hash\": \"1d4320c0e820c8044f554c1855f198c53eac6c19c63c6d74d58822a75c7f3547ac6de2a4e79c3ac6e96bbf4900dee2f962d6b88e63972cb801a1e5e9890d60aa\"\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794462bc95fbb1bea20de0130d17afa0efa05d7c16f88485d5c6b4683ff805f120b139f9471b68cb0924dc268a044a9770c7b13c3b1fa2b3ac83d0ea02ce8d964339aec3ce87696508ffde62e094ed5a2b16\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5620d33f61588fc9125f0237f9ff2aa06c657d1867366eedcc27d78f7d953b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f1f91a801a5db6165ff9bc78db21661a99c2cf6610d938542a6a72\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"62ae3624808c253ff6f35ca79c230ccf966fb3dd06f5365d5fe052\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"79b7a5056eca15d4d2a13012521d670dfc7ab2cf2b130ddfc5f116f6d26375bdce\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"421ba01ae4dd01e86055c55f9f9606cc59276157a9a9a48783c7854b43b12d97b62535397a\"\n}\n],\n\"handshake_hash\": \"b1a365b8572f73719d5ba7391d767f78a24e73f65df9207b7a2fe4f6828aecad\"\n},\n{\n\"name\": \"NoisePSK_X_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446a1c65bb299f54d816635834319eab643791af1036de81b28aa62229ca734a2b5a9139708d94b71262964ab5413ec156f58eac10916abc878f1754c3a72815866f452efb2b121e865269506912e08ed3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"943b0f30577134ef917c5774bf54c40551017edfd117d1be757f630b02b46c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ed6278d1200e036829704234a8e4d8a65932bc986a94afcf8f68dc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3b661448a9a96649e34c9b4fd15422e68ea391a634412573acdbf5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bb72e19e199db4107675298ed110d922ac088f0d6f6c3d545e1ced4a914396ff03\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"281570d419a7281251316f57e5eee4dd60bf0e72f845eb939a3ae1df847d5f397b893ee9c7\"\n}\n],\n\"handshake_hash\": \"a59e4ab04d01e339aa3b09c071aafcdeaf4c84f2a6579de65d15cbcd66755e8bf5c27645ea7be041f79d123dda50d6ed18fb83dc7088be886b18544a093dcbbb\"\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af57689471916f10fd5fe94833cf0e4f308aa619ad6a106831b5764266c5a8017911fbc7ce92324e59044bdf2696a4f4ef457597d6753fff16cfa22ed5e86a568ba55f30fce4c0c6dcd26b1f2aa9e7b7ac20c2cd0a94e62481171003c8d869ee1e559979c17901bd3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5021dcb3080980f390e1084ac428d479b06dc9fa35c3755bea6a66a361dabe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc910e27dc1c658371e52bde5ad468b3ef8ac7f038c8172a0b383a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6410831ab70a7805f930842c99798c0fb434a853feceb4b3d0bf91\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"571f9ea4a283370783f53a7d4042c9a80674bfba85ff3aa36830faf1f9d4339162\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8a55d71c38161e5abddbf8151e080b570ba908030c1990be5b036d684ea4c2de7efda07551\"\n}\n],\n\"handshake_hash\": \"8baebda2341066d41f86c099a70d2385095cd3f92d713c155d3f6a9368bd032e\"\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a78206ed3dd8c7a164ca425a4d525c42f643cec0d7066423c43a000613a49dfe91b4829d7e4459e5cb5bae98ef9f1b0b7733e99b189fdc5baadedfa3118b60aa0dccfd349cdac3813a5b07ec316db6dfb80e74a369207adb77c5ea1ae665312425f5ae2ffe520d395\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5219ebd963df6550978c2ce860feba5c29f02fa785c277ea914f9437de1670\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2206b951844bf8503bdf45275a50798873ebb9516d7e919e98ec6f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ae086c0d2fd01d04f8dab9ae3088ed833de8865926c867fdfe9329\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e1850ab18bbe0c378fcf45aa566bbbd95758782ac64bb7a5b05bd4f7e2aa52f7c2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ee591c104d1d69ddc7b7292d6046b93cfac74d9bc3ff50f5c0afe5a5f9b442607f1a3ac81f\"\n}\n],\n\"handshake_hash\": \"36c9cb02cd9b154a20ae3a9790beadedc02321238509c3d8b46bc27561c441eece0105b4af3e510a034a86d81f5f327607acc302953e136318e883ff5c0b9382\"\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae48ed2a6324598015ca46b2587f2cd90cd4aefe5eee808d832ffc9e3651bceb141988979354f7da180154652ff3d100f0eb7d5277bb530d9c03c2dd7a8517163157f0bc8654d03b6042c2b9bcf4e81bde2ad904d28ce06e4a7598ac558a33441e33513446525cca3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b02b8fec9cae16ef1117c5243d5d11630afa70763bdc108f7188dec7c3bd05\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b600f60c2e195090616346f93ff87bbcb19300269ea09a9f471561\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"92a6f8a13a48b461ab4ac4450c331045f30ebbf68c05d3d414eb9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7d3a8acb5d5c428afced619920d0939053f1792675dad08e74ca4b2ba9fb20a70b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"41431670cfee2a056d5ceed778526b02f7ff13d4aa8df7f95decdcd915a610eafa9d0ef29b\"\n}\n],\n\"handshake_hash\": \"d44fa6d1dc5872b4a446bd6cb34674423cb15b5266bf8874aed97bff1bbbcfd0\"\n},\n{\n\"name\": \"NoisePSK_X_448_ChaChaPoly_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af4d0fdd55bd2205b5c1fb68c16eb7f3053475feb5f0d61bff992dec3f3cfc37dbd2e20bde1399e2ee5b0a55962278e3d4e57d9c203e084264020043b9e3a11427d38d26dbd4948ed78a5b78488d8c9bb420754733554a33642a420d7eae9649e30d21c9138dd0387\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"6a39e7870e8c43e14beec8be6a3bb0a6800eb42804fff23814085acd81be7a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60efd6b1197949c0e5d74460ce6cf2995ff39275b4e9f61f9a6e63\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5735c2863a0dfa80f0a1ef7150b72616748fe840f8f9534d6a159f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"56f28e1b5bc413c40458fbf4482ff606322825a0b32d649556e4c1a03ad6eb5ef1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6300c3f138c9071b53049098eabb9150a867e42b960faa108e35edcd2120fc17a0b64956b2\"\n}\n],\n\"handshake_hash\": \"4c6f7adf1d77fbaeb9e23770719fdd61c34cbd0849b5c57d94c4a0a6b36e22d5f1851c02bff7b7329219bd15f6865a240689e67e36c645154ec745c9f07996dd\"\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d00e207f4c25869c62bcd4e551e7ad8654e494c1dea1d980a2a328afecad220b6f3d657dbc975d7ca54878a744f29ff828604274f484f3e0364f1945496218faf4b4805dfc588ca74e9fd3bc69fadb00\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"d91281ed9c91d3fb6fe0f39981e6fc2433ea85a0938e9a49a53fb5f2b8615c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f370b1850d5eeb03f95fe25b36b7b5446d75ebe387936f9ae3a5f2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c24bed9e76ae66fe9b80028bb40adb11feabf317efc178c86e29bc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"07c6e1e495c86b5349e6ddb313433cb67e180ea7a631c776a2ae22be676da6c2c1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e48ce50b51714b76edc87d11da85c3c2db4fb80f1e09894c0d1e5804d8e8b18365ea961c7e\"\n}\n],\n\"handshake_hash\": \"766f59217e5db41bcf687ddbaf64549385300c7863e8637f20d5a28071a256ea\"\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a4998aa06c86eadede3da51ee6c5a8df97a85e2cdf9889227490afdbfa34552a9fa02c43e68ca76ed7b9c671ab60ea2be767395b43d24b098f4360a6fac6f1f92bc0f09870a360b6297e22e62571a3e5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"62e4ae2742423dbc023ab06dc7c5bf381dcf46d8740daa22f58d37420f43a3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f143c82bf2b4ca15d21dcb8af3be963b711349ce285e4ebe8342ad\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d8f1f6579ddc19c5bd215ce61438372c7593b1de383f4491559cba\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ab0e50cc0002ed5898f6d63feb8095094879a24c08faa96d6650a11809edf8f4eb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5c752eb837156521e1d573a9c54abf0f219960f1d54deb1940b80ff22b3a1656394f4f4bd6\"\n}\n],\n\"handshake_hash\": \"7ff4ce70cd48ab28c2522e8b0c3516352da0609b4b7b6b08249e2f2cde2121565a1f9dc0d941fc7d5ad9dda23381a0528992ae7728d52ae4fdb083de29843d84\"\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944283ba9b29a05cee999d7f21c540c8886de7fe36c8a2cf178b77bf40a8ab7299a19740a34c8a7a6c1f07fc7a6f99b72b03cc3ad9ff64097ec107d5329f8947267e3e682a3f718aff01defcdb2be984246\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"552cc35897cd5f1385289da8680d0e673ac0f1ff19bc9622edf4b2abf6907f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"daa770e6855e320d4864a425a2d5ef9fc45f9bd5514917df6c23c4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"62c7b3746e5c61efcb9e4dc00fcd3b41e8bcce8afbf3bed3808cdd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0ba2d333df0d8adf027a0939f547147eb8196456b31ef699d35b1cbe1f97b523f6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"04cffaf4ca48d40056fee4b430f29087afc3c29d22d35924c4e7242f1e4b11d616967e6113\"\n}\n],\n\"handshake_hash\": \"e37cb2aabb5eb90bd93f66895129f4b8c428c6a927c29b4f521fa991e4837d63\"\n},\n{\n\"name\": \"NoisePSK_X_25519_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c5d0ee6998aa80d066ffe621f04304bf40f2ef04162ebf176b5fc53ae25afe72b7017184d20b3f3be6ad9c72cef486829b735c78627f9ecb7f459244bdd585e4c33ed03fbd035c242ee64d587c48e87\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c6576ba3e89833c1a741605af677caa552eb3a4437d68d9e7a98855d879f3f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8f58dd988ea20fbb82adcac3dd640c572d43b47800d0020621f0ef\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"96ed1b64350458ebf1ca5bfc85a9b252f87b839d6cf36930675c31\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"008017b553440e3887e621de033fdc6f7764d0704db76247b2b7a10341ac3112a7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"34b5d89f0cfd3377f586ce9d85800242304367ca530ebc6abd3b572653ce88628ddb6e96b7\"\n}\n],\n\"handshake_hash\": \"fe4a03722085f3f1599f0f572ceb0c6bb82c9bf313ed50d64773abe11265ae1626be8133b3e7ea81f1bd41f2cdfae8c5fe2b1241b013da85911ea9ade8bf50b9\"\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_BLAKE2s\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a86cc0e07861d146eb47ca4f0878e2b63e30bf82dce86716d665d6192a5509ecba29b3252fdf23cb5b754b4e175c843838c700c77a2e27e2479315740c26af3aa631e34625b4e40bd1e874b5cca8c52b3be6a5d50b9c2a1f81eabef42acd0d9f2086d40a1967bac7d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"988a253776177a7d2a6c27b36c29841de5e73634f0b45ae7dba9a7c9251871\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"76282b69da0aae7fbd428fa8ff201964de1452f43d4ee4122e8458\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a2a462dcba3e6af790a5f738aa6dba30db2d1817020e733f38274b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d3c3b523d994af1145de3cba59b87412ffbcafd918f5af8ff5f6e88543044086aa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3607729a9a7446a9e24aa7b5bc80f85b756a90821f6af17f5f67c7a7206c4d791f718eb2d7\"\n}\n],\n\"handshake_hash\": \"a4e68570bb9e597fdda51556793c0f23f2fe350e8502f9601e83b5ae1b1557ae\"\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_BLAKE2b\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8539dd970d1e137753c1a61d97077ad2e074a626ce437b44379b1fcd80150860d7cf657ac52aabe556cbb28116e8888785e783c3c6aed2e56518c012e8895f485ef5da84f7a7b002dc7e5adda0edef89f2bca5bdd808e56ac297df969c98ce39979f93dea6fa2c44\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5dc73dd02fa49064c24df4e16f14646a3fb78c0556eab1d420a8124fb0b986\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6a0ba4152eb1eaa01e64fb0085773f5f7884dd45430dc9d86a6875\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9bb10d5c3e2ecb5bb7d1f838a58c2610d1761489df7888be69fec0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fad82e42efbb1c8aa9db5438bc7d547477d4d757f4c7e124d7ca193ce2038f7ca0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"da400e0f6681117d24f59c7610e593b88c557412fc6e16ddeb91a0537e14bc0db61601e544\"\n}\n],\n\"handshake_hash\": \"d8c1ce1b30934ab0903f9dd075c1766f82c4a16fd292a81ae60feb216747914c184562c47b39fb9789ddc830fac509f083b187cf0cf3203aac70d0ea1f75681a\"\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_SHA256\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7c197a2a6d038c335221a22575439ba07b90e43fe9d856383731af67ef663d4ffc058ae42bec51b4cb1aad38f0bd3084f2c444f54eb3f7b646ed4d639e8da0cd2d5a4f08b63618f002c81464a101fbcd8ee312254163a3e93d4827176dc28150e7281e7f51c85557\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"89060e23065016b7673b91384293a1cb79ebfd3ef0a0cfcc84aecf9f628f4a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"69de516706baf00c2b14170cc01beaebff95eeb05fe300a678b3a8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"17e9d70a056cf65694511d61a0db3c9ff540d2ecdb1829df4d4766\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"047e2776644e7ebc94ba29830e4eb6de6a2f17d283e5de6e92e90d6d3691c5690e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9593d8b7fce1da3e5b82c6ca0b338438492b9ddd9d5998aa15ffc19cc0488ff96fca40d986\"\n}\n],\n\"handshake_hash\": \"ecd0d70479bac86cf798cd39fd5adb8dd5133fad198736af691ed9323cf6df8a\"\n},\n{\n\"name\": \"NoisePSK_X_448_AESGCM_SHA512\",\n\"pattern\": \"X\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a59a31621bd05c9df65294648accdee561967ebc7780929492ef380f9c04e0e020ec884f559ffb375c0a9b76389b2c7d7bab5275811d8709f10baa5634f14a7e2197354eb4f0b0271072ea5558c958eaa46983ced198744fcb693aca0870fab7e43d3d6fe8f72c2ab\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"cda12cdd9fc6c3b08db362282173a1cfdd4d84da39c71807b770955bcdb666\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b15de93ce61e681816997df98dd1d251d15f0f495d5dad7b0a56c6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"da56138f08918f1e40e3dbc63092cb947a0242c087bfb3ed2f77ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e5a3ab90ca5d8f35fb824b051d3da14eaf038456e7b35e16b3f295f3fd394e3ff5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"10b41edcabff11bc4599f5b5260786646932626b2e7eaa6f6095faf6bc0cb46a6ac4c167da\"\n}\n],\n\"handshake_hash\": \"58a6ea25d8466022db134f129f2207c210b0cacdda57e94cbd6fb5abcef3e8e0ea93a6bb7dc7f1311962e844b4b135746dd233e6f60b3608b45d61ab1c4b5b83\"\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443ab57eb07c96791ebddff95c2ed2ccfec49affc5ecdc8895ba9f796df4659870\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"3e7b4d83fa0cca62cc0b6d202da416c0b59289e518982742851e534f1916f8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d52fe3eee4de396b592afea7eb632020587aa4384200ed9bca9585\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"51476b0e939b9901d9c265533d2845591813dcca1ce834090f977d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"24848a58c0cf7be87fb648166f3ac49cb6e76d08a353d4c4836006d48bc40275f1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"95f88b7496841fd0df89d5834b31640bddc9ca51d4b466c929a8833d263c2771d19720a5df\"\n}\n],\n\"handshake_hash\": \"efc607a41b06f0f7cf81217138e59cbacfe8c4325ff780c38d24ee8c0c907de5\"\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944885229f6a2df09fa34da59d16524153882972086e09d52e756ce809b5b9399ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"faa4ad33acfc9d16c636ebf587c425dc9a0a0fabb5b975b8e3cc15350b77da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fd34fab878317f67192e27ef2d58baa3d41c13bd55e27d7ee1b6aa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"09dc13b2f7cdecdce30b8059b02e24c609768fc054a2051228b146\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8e42d678033ae8b60cde5cbce291df6eaefec3e26cd173883987639acfe0a0c76f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"748eb0219e14970038bb79154e2c915fcfefe369994c84a8a3d9678b491a40e684925f0c44\"\n}\n],\n\"handshake_hash\": \"4e93d4baf0f99b624402cc1286609dfdc3bcabf483d4a2acad7d6d36c31c54b3813dd146958db15e6646f8ee4579e82fb9261ac1bc396a1a09e6f7988a7eac86\"\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794418467a8f8358c37e189cac4aa41dadaa7b33c1905174d7705ac86185d55ceaee\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e1a9bb158e6b0ac7e1d0907b52cbba5deffc834f315bb46d259b892191a9ab\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"307c62740fe0ea34cd04c82d485c080d9fe626cc4be50d6891c55d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0096d1705d8e078cd2f6d27a4411defbf99e6eef6d1de7992a35c4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa0a021154663c491da9af10b88cad02008f06163f3abfe409b2f7b3171f084b93\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f689e1baf168dfbe6f7a61418c78062b4a657323b5104f62f53375adaae067edaa9e9ac0f2\"\n}\n],\n\"handshake_hash\": \"215184c4bc4e30d1a6504e0d9ce6274006c1dd68c5b7ca4b29b0af3a79aa27c9\"\n},\n{\n\"name\": \"Noise_K_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944580e6c0a44124624fa494afe116cf1b9350e8115dc635382fea4bba5c4786754\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9c49476aa746bc8f1d75e69bf46774e537d88b1152e8dd385e369a6e8ff267\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d166ba833e2e621810df98b99b1437ed58794d2d1308e4958060e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"57f64a1f64c88f78f1b3d3513839f33fb6323f535bce53b86d1d98\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f8de03b4d223298811bd2f7ece8337ea706f8ed3965349c118983c9bc733dfa9b1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"37d9552cbe2fa2f805028a43da90f4bab20f79dc2161df601b6395ae858e88356062c660fb\"\n}\n],\n\"handshake_hash\": \"a85ac1d775bdae4034516f8f3513cb348067c14ba92d1da6beeee4429d010b4ccc24ce27d970b43b8081f315a178290bf56c58d7ab0203cee3e61072946b58bf\"\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab32dad4e7ba3451acda153f79224be2f844449fdfcc414c6ebb9ac94c1d930ea\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"1cb421580c58c88f520dd952638d8e763a41b2f990c43f294079e098f2fd3d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"212d450b2baefc48b53a6bc95e2da2e9bc0d033dd41c3e3271c648\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a2abbb5f0d3601fae4fcf4698c6d799ed15a7cdf60942432771e83\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f946df25b2ebc3bdcc3aecca657340e2ef7017daca6c0ee29912ac10f7f45d3eb0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0e41ee26e285da240609edeaf8755c5c98f4de00ea07f09532445d6c1c2e2401743d6ecfbe\"\n}\n],\n\"handshake_hash\": \"0c978a4610ba9086fa746c87280df7a172d30e3f60fbd73dd29a101ab43631a7\"\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a101efe3539dd822f632b6974807b61652939f701b3e5c66582d925052472b00f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b6057b9baaf0d94e092cb85f7f3b7d8722a3dba8e1850be1d8b5ae0358b013\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"36e54dc162ca6a3da22ffce788c82ea2767b737127f4da1e86ce9d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4c262117d2053e929c3159a606ab0813fe1b3597eaacbb099e7f58\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2947044c510d6c253ef932b4da4a6c1d0d34025745b918e4bc03aa12dca78376c2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3297fe495f0fbb33a59d4f2c7a88a21757d59937f91be1cdf26e2435d23572451975603d25\"\n}\n],\n\"handshake_hash\": \"7f21b3b926f048e66df7874fc2242c6a61a85363bff891089f42a44a99b7cb1ba74003f1f6529b94170511f387073810bd95b4e9695a102d419e25ff17360082\"\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad37511bac6093e092ff207761ba3f5a53bfe353d4efff73f0fe38a94292d6ac4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"789d95029550cb12bca33ecacd7091f2fad2856c933dc9be4a8893e7418b38\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7439a2a484fcaa8b26fd8f7ad291848ff4a6b945fcbac1db28828d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4e12fbaf75ee21f24c3337209df6e3fdcc02a662da211d9f17ba8b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"24960123e50c7da732d681dc4d3cb76a21f712048fc60059ec97c665435fc602aa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ae78e59f57d7c608947148b610fed8432b176c4b967385f5d9571afb113e4cafc7ac7a897\"\n}\n],\n\"handshake_hash\": \"cf331b171aa83cd7334a6e44e4d98009d5dda35ad0612fb0a86de24925f396bf\"\n},\n{\n\"name\": \"Noise_K_448_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a227b5a2b3b52bb4f1986af09e5f54cee9c21dd0c14a3628b32125b627930ea35\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"a6c10b646535046e09dba60e47b7c1de802cf8d8b0ef61de439d318e6eedc8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f079680cbab14150a93a17414fff9358191e4871556a95eebc88b0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"140fedc307154a949ccfc77cddac1ff45e60ee891ff2804574d194\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f8058663198c5731db456e63c271164d460dd1f12317f16da92a0a053eeba7e116\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5c20e7c781b29270fc49b29031e7cc7cb99f713588e483258c67129a79562b09701a70e67c\"\n}\n],\n\"handshake_hash\": \"77305c2ed2abe7b520e3d3189afa42b48e7647ef0e36f4a607540494fdef974a4bf44084456bfe17984eb85d1cca9fdd4adb6d856e8ee4c4c136302b45382b8a\"\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441949ee2635dd251aa85c53007de1eca2b34e4ea13ceb4c9cd841120ef92e165e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"212aaf2bdf64f5bc2ab12d663507af06954aa3d8f795acf115274a3c50cb3e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"760eafa5143678ea60bc8454757c77011061e8a295fbea9e87b286\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ea241986d081f81120e9718bf67826f27019fcdc1a908786a91c56\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d91c7fc214b70b39da82c298fef3d90278b762d641321cc541735a0c9d7500d1ed\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5c688a3cfe7d8c269d4d32a86d34fba705f086151f08092b698d07ebe30725570185b054c8\"\n}\n],\n\"handshake_hash\": \"b97a1b4c06d3dba7ac5c1f9a8bcf55174a14dcfd50a7ca599c438d01b0f9b38d\"\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445732b72e5473d5bc15e86a5caa0a1c782df6b0bfe1a143f14689cdcaf4e7aa45\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e0d1d43cd8d5a15c2b15a07524d67fdc31557708ad71a0660bfc5d9a590b7d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d44dcea01d1d25fb3036d151d9794412bc7b5469e272896ad01bf9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5729d9253400806eefa496b6ab7d6b0b0e677954a1a7fee2424fd0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da4291f09c9c54a009dc5d9cbc3ff1534aadc92d3e79582bbcd56b47b6ac606178\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"926bb761946433c1902659867cac3f9fd6868597fe05bb6b4a6a550ed494e6618028db6b09\"\n}\n],\n\"handshake_hash\": \"3bae3623e7468edc7a5df3b15f285fc734cce38a491401610fe5f2ae2db01d7d00ec3259da6f622048861190ecab20b060e23fa52bc9e4da173e220b0486a3df\"\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f75d2d26eb79461435b90a9f4076d5a5821f7e291a5f0836965690977c4c8190\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"236767f037ced36a107c5c1bfcd644cd2ae03b869e81a1badcf03356216fd0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8cde7c4f4afd43409d484b1e84a35da1beccaf89f0b39266550c50\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"63acef2b861e6156b1a69fad0be572434b0e9d35f1b8a89cdd001a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"00a58a555ed9683f9f3b977fcf43caf9d8d791e40127193a9a54cbc055d12f5d0b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b9b47f47f3e163e62e870bd30623feb950a45cbf4cc0b4ed18ad828eef637fce156b4cebba\"\n}\n],\n\"handshake_hash\": \"e9d317ab3034f770d2403ac4d6c29bc8e431de9d42180563f16b8ae83cc50a2e\"\n},\n{\n\"name\": \"Noise_K_25519_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c475220fe03d228bfdafed956aa5dd355e1b08236789f3d258bc0f8a61b5ba48\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e878821790b84c7a966ae5fa1afda39a0f0c897fa6366bfec2bc50edbc872b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"14fac6f5884f0f0f5ae7266e7539b80eec18ffdabd6b7b56457c04\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0022b12c28152781846ff2a6b8fb4b052ff475ca3ead32c972cdbd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"104e2801bc7d97c8a7aa62a78617e86f66c16c0474003f755a2f436d5a27aa3bd1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4e13ecef31bb071a1374f1b1d7a8f480a07475beb3895facc5753c5d84ea56e9275f8458d5\"\n}\n],\n\"handshake_hash\": \"fbdb5b7bbc7edd28e780ee834ee558703664678009c7ba92e54e06aaf706835b5b92d13f81017ec84aef7ff9ab051e536ec03d9b2a360bf10575ff4e92c2dfa8\"\n},\n{\n\"name\": \"Noise_K_448_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0a014eafd0f74867924877978f17cfa3af0420629abec276f8a4f993d352e701\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5d7ed64452f9641b697aeb388720da7e49f83a8a2c7e94e42abf897996fa67\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"48a2278316872e59dbb4e3c7656867e593669398de5aafeb334196\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"44b5f2ab0da9ffcdeb47bb98f92b63a68a03491141b100fb76ab80\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"65fcf82caaa5079077081687d06d8e270ecabd3addf86901d07aab25ddf9707db0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"675ccb7e6282605258174486de2fdb2b3cd7bf5b167328f9d1d72039c14c1847a012593beb\"\n}\n],\n\"handshake_hash\": \"b64faac1bb6b7b608f14f731cbea1923f060dc3006dec464b084973d414716d0\"\n},\n{\n\"name\": \"Noise_K_448_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac7da443f766a38167774de55d31ac7d6608560599376fde4f10747caf00db3e7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9509d102826cf5677e866be770796cd1d6b6d2f5214c05597d82c9c8cbbb0d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"24593e8b23657b5330bd21b8b2d3b958e47ccd9aa0f00110c47828\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4dc61df9b999578344197126bd3a74945e5235bd50a5459a32f1b3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e1079049d6b3629d4041b55e217cf6772aa9e1f6fcd0c34c8710745f5e600aa5c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"788e48cc0ece0f329032e7c27310effcba81e1da7dbbcc4f94213df567bc10f002d7925dca\"\n}\n],\n\"handshake_hash\": \"5616d97910e73e0b065744f8be3d3e15c795f866445180366b6afbc2d6bf1a7e6f6c4f66bf9cfd0d1255ed8c49ab028e8e5300c82098afa49f974292cd00c45c\"\n},\n{\n\"name\": \"Noise_K_448_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae297099a05977660a649682933e71271d3943d53264a7ad6aada090c05726f9c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"fd4c331881474bd12195aa28bc8f9e5a0b31fdd16c9b47c9cfd47b3efc4ee0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0069e3fafc00e09cfcbb1994d6f3bd55281d5d6b6f824a442ad840\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"08d8eeb31113b25832fa2695fc3f8eea508dea82d0acc02dc605f4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c5d377478a5f7d3328515d740ff6c5fd14a9c8c4955a53477cf82e8e9af07e253\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"712c4934834adefe41ae35569c90b5bd72edb6716844802f9e7676a70e302564d86167ddb9\"\n}\n],\n\"handshake_hash\": \"b646510ba3e03257ab6d7597027fb0d8829f8ea16bc55d76d4d9a0c88b743bf1\"\n},\n{\n\"name\": \"Noise_K_448_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a60cb83169eaee233bcb4a1101ae3147fb090c449002776bdb9faed725996a3d5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f53fc84202ae31b08685c3ef442b510db9634915996c9b0d25ea13514a40af\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"45e284b8124dc8f01bf87dd3e94cafae861d41826f5dea71b4d3b6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b74feed15936c9acbb2e0e70eb1a857fbca6aeeeaad50090f8dc72\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"72281300fe48110635f20c692e4cf74d017af8c43b997558547d5305ae373dc695\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"31305518b62daf69ecbbe6df83e63e95d80e7a429cfed4eb58fa115ecd29cde3ae1dc169e0\"\n}\n],\n\"handshake_hash\": \"e2ec851dd3909d6bafaee401a00f9fce5a9f87120f98a718aece0ab2c25a073099898414ca01457d1315fc50cb5a718146903fa62a222b37e2bc7283f9992e29\"\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443412b02a8d0a31bbdef7ade4761285d66b613cb9ff4575d80ef1801fe37b878a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9f265259a35e0274300c31c9b236eb4ec5d9d82f4c0e0602a277eb24c9ae03\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"20616d5b73d1be637a422774c8c51fd432ad3443e31d0bfa910c81\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e63d9677e82655d5241fb49648ef3bdf95e8bfa03e64a3c4bcdccd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"413fc9b2b4e5515b6f6c7b86a6f24687fa6ca99c421482f9684b3aaa844ababb93\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fd035bcadfb1003d16548fa6d7e6983a09697c76fd59263719995d39d2a540a4d6a4281fbf\"\n}\n],\n\"handshake_hash\": \"70e56e0c3e961a12329930b106a192abffbe1b33f24d89af51e0c21f1cab21e0\"\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442ff90cfadcc7719b0c659f62cdf3a33644746106913c57346c44f6b97a1d735b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"b1497b851d440467548239d2cadcec80f3571b588e97ab98076e7ad2802d8d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"19a2b0ff44754946c4f81e7c5296c69f1e66434c3494eeccfd61fa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"10678a864223524c4965cf5e5eb8644ff86d65927338183c056baa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5a4993fb5f29722005e82f9aa297c93416fc5d30b69b04f9ffa86ad542468e3c9e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"68c4b7359e7a5cd0fce8c603b0a7af2c8b33a7309edaf3ff7cf466798e00c913b4c0bd8496\"\n}\n],\n\"handshake_hash\": \"94409a8f0b59540de3232bba95a09cb85f2c7a869a302a572665c62869ecae27d5450cc847919ffd99fe69ec2217dc48a45e63557d07fc37ef0d279412017913\"\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944de7fc772fb91011277a141419adff1cc6a4df5527f9c97efab11dad75f918c77\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"745cf85647a9055a79ae4e3c9655755b793216a61f59060fb68d7dd8a2f370\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5b8d5dbcedf0a93d3fac95937d3379f78be8e120f2e0db644b8af5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"abf2ab2daec6d62a20bb0a4198693eb5d8289c48a42f19b1872a7a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"52babd6c2b075fdee3547fedc7b5e2dbb2e33d6f44722935e04e43904db1440ede\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2afef519ff93f6cdd0b7d3e5edab3f54570287aee038c21b20a606d4eabf9704f61b845bc2\"\n}\n],\n\"handshake_hash\": \"a58ff959b9016d292e41e86c3e0364ff117d1ec0c8296c0f9ce4f5a076dbf20d\"\n},\n{\n\"name\": \"NoisePSK_K_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a2dace4d44246b5a5e497d392b2c708396fc4ef0331e86899897db860adeb810\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"34349a53647f7998f8e9125c4807edb58912eee6b2688ae5913cafeca708dd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"906fd7408b42a6e0a2b7dfcbb36263a01bc8303d92156cfd273233\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5c1b53a1715bb24488ecfbf3e97b56c92aa760f9b9c3b23ebfee6e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"16810e978e527e2d3858a028994f254aa6d781a21068a2266d5b713a0e85d8eb47\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a675c22add7ee4b56b131c8255ce0c1a1f4c01e78ada5e7c57534817203640750c841969f9\"\n}\n],\n\"handshake_hash\": \"56b51e989eac170393162f3c927cab3cc46a7a2aad8e99562446a15a1a37fcc82ef359cbad4034bf2064fd19372f791ad85ef1a2d6c5ba447df75b2bd1e996aa\"\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae2e63e2bef6f8c3778a168ea23c48aec51227f9b5dca61052d9c55f87f3ab3a7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"93abd28e34a18877807cb6bc752d3ffe805c0a38d3b6019a83e52ebbeeb7d5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5e6798333e24c327e69833bc674dbe345d483754d5e0ad56c63116\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"eda9e003911f7a3f89f3ad98cad8c0a3e8d1e4c5f5b692e3d11a00\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"081ccf571f5110adfefb51ddb0cb0b44f3dddd0e43124d2f3280c9e6718f9b972e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0dee4aecd566b3146ca9150652151ba6eb1e0a90cb0a2eaccee5422d8fc4a64b0554e0fcd1\"\n}\n],\n\"handshake_hash\": \"52643b90fbe4969c1d81f8f7ec0d2bcc2e2f864471f8818c349886f4f08b903b\"\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7e2f51106895b9bf43f962d34239251eb507b6cad8179f651be17a22896f8103\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"af5514c3a4eaa6498da59566514b959a258ffd700536214b6a57696fafc062\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"11f15a69d4634df8824a3a69c104aed9661864ee995455cf8f84cb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ac4bdfb643af9a728eea0e4f8b2f9fd32606a768741895f20e03c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d916f6b047efc5602cd17dc4a066ff10366ab310d1f7e6cbd7ef79144433a4f714\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6050d3a7a4ade19a6a786e7ab6bbb0a0f7fb86ce566bcf90db0eff10c6e7afab9aa3fcd0b8\"\n}\n],\n\"handshake_hash\": \"3d2e13bf022eba2c71cb59b48c22514de54c86f7622a6ee8d20268cdcaa944c9709b05522c5c1df00a92b4e886d1f362321617845a47b3b149486d25aa8a02dc\"\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a28cdf0f1d1fb98d45c9a6a9f8185fe11aa366ea66223866314eaef1824511c91\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"4640c5b6b42aec87d7d37928e4b5d836de43b85fd5490a1aeab2071c940dc1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7c6e4299278be9bcccfb907d3b6eab02c1495c009cdd9eb3bfaa93\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b965f9eed214b57ae860674109b4eaddc9f668deefe011ad1fdfb4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c0513576c81f03bc4770b1300760134d70c86c80647d3145ff3eeb55b0b91a74e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fc21a1fdd13d61b4a79af88d80ea30b6847c6177f1c94216a3f58a4cc00df78464aff95931\"\n}\n],\n\"handshake_hash\": \"68e48965b2d1798b5d72c93371132872adc41a9934958d49feb96fdb9d7e23cd\"\n},\n{\n\"name\": \"NoisePSK_K_448_ChaChaPoly_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8e5adda2fdf7ecf90c0d5c3a5dd7e88ed0d14fc2ed8a222d797ed7ed61892556\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"9d0d4dd183a7d47443219c5c7bcc3d296e62851143ec231bfcb340b41925cf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"04a43e8cdacc3cc9d510f87289a797686b904ba41457b6c55507bb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"596096351aad2a716df467fadd66383f7f5e34b69d6350899edac3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ecb0984ea8e14b2b2775b68997c4cf0b8f8ddb4e4794f69b1a311064b6a8fb3392\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"036b988328438c11bac1caf6076c8526b8bd0c72d2574c44aa68c8e5caa500e6ec25c4f630\"\n}\n],\n\"handshake_hash\": \"77f5b9f3a0cb6ba4ac005de0d877d9b5b5800f15dac6616b1f21b41addb55ef88f49d36b7d22ae5e4e13a9c440e77763c322bc5c8764e3f7f8d4c4b91da86353\"\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944af14aab02966a75b28a67122ee38be6509081820a11be2b7ce2cb6d0e4a3a54d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"2e813dbc981c36e1e047c6b54f633264facd4b02cd31d0bd14402e2612c6d8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"49c63d4069cc54fe1bdeb5795098115686b61105193f2b572d3a16\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a83260c024fb2b0a49d8ebf9eb28fc8745c0dfddb52489b91f182a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d5449884ad77ec729ece65849499e40824ad3639adb039c379b76c8d114f8e7496\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"423c5da4acd231cff09d2e49f34329a0b59e737fbedd72037b73b67574fa216e955e5ae818\"\n}\n],\n\"handshake_hash\": \"cc142f9c77cbc6f63a13add7211c04780d3534d71c49eda3cc476fcb54667103\"\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b2e924ffcdc267310a5aa1706aa8254d742218ac9b27fac8935f96d338b46204\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"084b7f6d915dabb2f6cc073c56a40ee1dfa06774a4496393dba7b3f72cecf1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7e1f6943d5d671e6ffe752e01134b5b6cbead4d671612878abde43\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"33402ea83776d6cb49b723d533e5538831aaea60d7d9c189dbd05c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2a6de8909922ade75460e32e7d18c9118a7d48b3de1bd439c39c2500166fecb838\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c0efa7bc46fe07119c7b13a87ff5d0257800a0f219029e381ca57af433e240a96da7ab85a0\"\n}\n],\n\"handshake_hash\": \"0db72a2b5f6028acb46ecae7e49fc7e09d9184ef8c63c0a7e371afbe23297a45f8710c490dbf9c9bf41096f4b769a226c419c5a59ccc17da33edc21240a77714\"\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944976bd4ff30d7027f1c0f56b636f6bd6531ac463676131a13a0a11427013f7d62\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"5d603cc6912bcad07f017313fe35994cb077ff32f37b95786e1aa1d893e3bf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb80198a3d58492e98528106f27717e9cdd651f9cfd50b00a81e33\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0430ff0b0f96767e89b75bb729e26a971e52eab6c728f1d3c0cdbe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e994908a28dabee48278e0cd36e48d23d146bbab0848d6de36c2d7eb349dd9ae0d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2591087698acf9648276c01469507fe03ce4d99fde5fc2137d2ac4c2130972376ae6d5d52d\"\n}\n],\n\"handshake_hash\": \"706451ee19574460934e848006bf9d495bcf335e6a65b8b5ad790f4d068f6df0\"\n},\n{\n\"name\": \"NoisePSK_K_25519_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449946aff187e791a1a0dca477d1479706351382de50b4d00e35609f5d85d7d28a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"af9f9e7b4f39070bc2e31639a66b60a7c24122452cf362d9cd59ff989d4524\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ea1ca34307dcadaa0e09b08cd2d50385903ff3df8fc958e4d6572c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ccbedbbe31dd0a2d7fab5e49335e27d45e9847cbabac414bc1718\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7f1bc7efab804d12a2bcb9e0afc0dad68d0a85bcec3a0e56c1cc9bd4f428b67f40\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"09d3c08aa1fdda5b2807bb40af367089a61d53b4b9aa38bd721bea38dc409a236ce8a681fe\"\n}\n],\n\"handshake_hash\": \"86f219e98c205623c738cd91cf586262ccc916836dcc8f9d00833d42e23cf5d6edeff18b547a8662d03864090d6eb8b81e8f4cdfe2666df8538090ed9b714b0e\"\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_BLAKE2s\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2d75f1a9d7cafba99feb37a2d6feed61290509da3c777e3b61c14bf69e70ed9b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"deb75ab273d5485bb511ca0aad640e5a85fe473c7ec027fe8e3cd0cbcbebca\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"18e2e9b442bb5f14c01550a02f501e17ee4a9fc489c7331aa99c3b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1d64b3663122e6c4ae7c32dbdbd6d6a9e0ee9257537ac05375f23\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0bc53632d084ca62818f75147d2121e7b3503e1388610c467fb9d4c7c0c429e347\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2c78925eddf8333c84517c79e6e0ad8cd72cfc0cabc81422907bba745be55330f55645fd16\"\n}\n],\n\"handshake_hash\": \"e8d49f63cfcab5fdbc38cbb229326886f4189feb8b17fc71f30e4ab57fcdeeec\"\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_BLAKE2b\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af2cf3d458cd6fd844ee3a52517360e7fae7efe915656b92645ee799c7e4c5b18\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"c946c53a6c3179aeb3315f639b3a92115f1436e5c9ee8dee60d352564e977d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"85999eac2965231aa52fee9939afb59eb6125acabc13f9cd16f3be\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2948a582790155e8c54eba169a71d9cceb207af4dd6d9d3a8909a9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ffc5105b6a9ecd79bf108853a1c74553780fb27bd79ed3581108c0dcd85c809534\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"937b6fa9928e71deb6a52e810452b92aafa8f33904fc6f7ebe2b3a622a446ba6bf43d9e028\"\n}\n],\n\"handshake_hash\": \"6df52bf19a46541bcd6afc6e581a90cf12c53d7154f0ed26b6d40dcdca404586cedd9b84508ccd89970b57199e8de6bac0c401871bfd9a4c8360b3665f9f8c6d\"\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_SHA256\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8e64914e2217e9eac3b90c564542721f9cd465d99e6760476c465374388b5587\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"e516b88f483392c406d69dea657d1ae35b3453bfc826e3cae77dd8b6de785f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8399f35b129e0a2fc7e8d7cc326299a2878516ccc2f2f5f7f1b303\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"097b8f79abb0125429e663abdb1c85ea2530f2f7be648163f72291\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"66d2a0862a10b7d3248a12859bd8b4705e4ecd745551ab371233790177923a20bc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"093c8f6b1ab5894e1aef933fdb6e335f4582fbc7d41a6d56455fa7c44cf474b3746fad379f\"\n}\n],\n\"handshake_hash\": \"ebf71954b58452005892d30720039a5ea60d59a4c687f753611ce38062c07565\"\n},\n{\n\"name\": \"NoisePSK_K_448_AESGCM_SHA512\",\n\"pattern\": \"K\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aff136dc01f91345da34df1cf25c562f1cc0bf20ccd89715709590519651e6a12\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"736dabb0c34041bbea593fcd04727d69776548e840d1b8d52046a1fec5a8e9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2a5d17616f2ded91b967b556358b549c93d2a24da63714f639327a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5cdafc48a7f8485f8525230d008d4c0e17a7887182dbcaad0af280\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"01b139a2cd000fbc5c62bd09dfaeace2559e606f6c5871478a322740f3b4872b33\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9d22b01ec3531f365eaf7bd1b432d3ddf0a941e367eb04485004cde65608470ead38434293\"\n}\n],\n\"handshake_hash\": \"3b29ad582e1c9f581426332b54d0adb3e36911f66ac83457f902303d9ab9e54d03757290fd0741c992b2d98132060a189d7c0e0e0ca7ca4597e81ddd226e16f9\"\n},\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ff34a6759d06e7733c83aeb5556c15b56584ed0ddadecbae8878c170fee361\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79285da88da3535f52b07b70006c85706de7ddb1fd3dddac995b7e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ffdad3a7f0db4c39077f223659c5c1d107666405566ecdf4ab53bf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2b9801f5084b9a7e9df57382fb4af099a63cd8ff97bc3284c4c5f28994be58ae46\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6c94a97c5de175c870fb9e8d5c50c59d20752b0695baf24e151011ee46a184a65b444e9d97\"\n}\n],\n\"handshake_hash\": \"ac2a3111b17b0b852250bad55299915cb7a38717c325f2ed432c466004c31b8b\"\n},\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d10cf8ef4ab895bed3e4673211f0c93ba112a1eb52acf3a3f459cdd5715955\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e50ec882703a1f34bf4957d8cafd036d34e02930f672f424c676e1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"35bb2a728d3e8e5f47781d486089e4a37c5c2e4261256f44569a9f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"69ee82006e16b79438a34ad9de37ee44d83c267e355750ecf49f194b5c50403030\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c568b641b01d2f644f2a890538c359915ca50552e55129c029d3721866c2646a7af3fd1eff\"\n}\n],\n\"handshake_hash\": \"d726c33acef40f118b1dfad1898936b432f07576ad892dd40cf206bd8157366962082641f6519a49f415a3b32713e6e596f3629e5572170cd1c08e92bc08f7a9\"\n},\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a0ff96bdf86b579ef7dbf94e812a7481d8f4c68907c4aa441057a30cebc1b0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb1a3e3d80c1792b1bb9cb0e1382f8d8322bfb1ca7c4c8517bb686\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c781b198d2a974eb1da2c7d518c000cf6396de87ca540963c03713\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c77048eb6919fdfe8fe45842bfc5b8d1ff50d1e20c717453ccdfe6176d805b996d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"61834d7069dcfb7a1adf8d5ac910f83fa04c73a67789895c6f5f995c5db2ce88e49b124178\"\n}\n],\n\"handshake_hash\": \"ac2ae5a7e8ea36ee502bf8647fda092657082519fdae56dd8014684cfca9fe96\"\n},\n{\n\"name\": \"Noise_NN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a4b5da00b0bf707701c15f5f54d13d5ff7176a5819a3939037cffd1f2d1dc7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7cc120945f3d00ce194bc60172accedcc168607551c226ef02e602\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"09adc97d36e5b47f3b81bebd1920595e9480f450af4e71df38babf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c5829c1e26ce3c64118a83db0d71c7d164cc64681ada524a46e6ec45b8a434cd55\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"de3b8b4d2785222a15ba1f70ab6fd12b2a76cd7c26242a00e2488c513020f479c721d5cd74\"\n}\n],\n\"handshake_hash\": \"a351cc46c7d774b0462212c83cb5726a71d3da7dab3c50b617b858c4d35d99382eebde253e73aa571f47dffac5f4d43ea706b07cbf78f51618345b5b579af92f\"\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e668dc276b2f33defc6ecf5a549fa733136d7a569ac525d0f373fc1f828ab9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"97e4fd576aaac3a9bf92c58058ee0f7f13a06a46aedc66c2525d38\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"614bd1b75f11562f0cc5b09d090da32db1f31c8d739b3d361b4d42\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f75d42bd4fb545f3f9cbe573c8d5023aaf9cd663e01794f0812387db078905fe14\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2f267a3b923ce6f9561220db3810bf03d0f8a8ed4382b256bb8c902f6814241e5dd2195aab\"\n}\n],\n\"handshake_hash\": \"e969db6bad08e99a6c0ff08b4fbadd491eaeb862114ab883805098107a858333\"\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6519c7743c893b53cd05e9e2b19759a7cb9d8757a351056967c18cdd44d9325b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"93ff0821f9516b5329e3a964908142fb7e6aeae2a9afffd34bebb7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c6bb6fbb1695bc7a9148ae3b65f41bbc25aa67936645e98c763f3a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"75423afdf6eb62d9a0a20eabbd4769fc30de337328d71599323d55bb1e775486af\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"20ff20d85e38f67e12d431399933ae2efa37fcc1d5172fa501db6ae4b60c1b4f29dec9bf0f\"\n}\n],\n\"handshake_hash\": \"954213f634cc4b6db61bf1983823d9ad0f24aa22f4291b75efdba3c9daa9ffce6a70fd81e79f4f794d14613f7e72f9493e988024642b9bba4b886cb1f36eef28\"\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e5542247f888a7287c99e43a2b0a951e502c5f9072e772e9a992e749acb7b4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b8004e4570dbf47915c337816d44cc5f63d3622ea7932dbbffbbcb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"651507604443049e8d21f7e9a0e49b67c770b8f3ec208fb4e4f030\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e1459af13c1c6ea8d8a93a72082e62dbd09aaff416fbfbd58a4059ec45d37fbf6f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3aca5d75477059b1bf86e7fddbd237b457820a972ca6c6245ccec26f971a1092fc2de9a109\"\n}\n],\n\"handshake_hash\": \"a80736ddd23f57de88b37d9eb4183b4044f1c76d2f557261d8e83e8927e265e5\"\n},\n{\n\"name\": \"Noise_NN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a6b2bed67f0c800156045ac6295c399bfa2d4512c876dd9d238fc7bb8f7e94\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c87bd120e3374b336e4ec0f3aa703c273124de9361de5db889fd88\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"893fbd6d490fbbdae6b6bb34bdc4315d4de3f45f82740ac7ccdb3b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8fb190295d58424c408635b4d311eab9a5de4017e1506501d46419078ee336e07c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ce4c83cb4354c6ba6283fad32f829ac8863e6ad6a694546f3d419b65c4e1e0e035798cac1\"\n}\n],\n\"handshake_hash\": \"102cf118c88a45678bc53962db5fd23167e398e23b4015debc9144d4a30e5464a44d7f46bb82b446b1fd973356a1e0e05c1f7e62af6fdaf7fdf150493e06874a\"\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435637c95d5175db82241df5bb90db698b549be70f0a4f81712b4094122ea1e4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"017e18dffa3706f97c3f08d9318fa68784302749e9389ff63a31b3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ce88f443e45f17ada7021df6150b2dd590d985e2eae4ea17c47f5d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"714026c2b7100d53d6ad9d7bebed71e684779bdd0dee4ca12015ab3f2f7efd78f4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"83ed741d1bb903b7b26d3539d64dc42779643dbcdd3df5f65e43c91b969b1edba029d12e12\"\n}\n],\n\"handshake_hash\": \"8324f42829961b15b447940d5a21545e6f15bcc265c045d91849c6ea504e6bde\"\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430b4b427c7ab9fac9f434513fa08726de86c0d154628746b45980c3bcaaace8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d37117df3063b2dd15b76ab8feb70d1a863ed48809447faffba69\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0637f52a8c2a4fc85335e3e54ff6f354c640a748db72134abc544a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6d2a593b40932c40c700d71f5e4223e0ee4401e8682bc1e9c756523f34b2354fcb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a5c747fe5132b92fc0819925ea2e2cf6ce10fd2c52fa8d25a4480c71fcd0d508a8c57adf54\"\n}\n],\n\"handshake_hash\": \"fd0743ee61f5f331650f2758b3339a6e57b28bbb569f83f702dbdfe72b1226b5719ce61379224a7056750ae1be4399dd8c4a2c533e05566101899d6b19bd6ebc\"\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843934ff73eebb9d930ebf62b8e4db81367558df0619faf69b2eeb30655c69e7d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8d372b94914e80018211a344b8b1c5a2869492a0db46990c0362f3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e183b0abd55550f9955fb05476d988c6f27628d7bbde111c39ccbc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"167293a79ad6a647114c4f4eb55bdf713a0d44ae48765c07fc4e57743100825021\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2b67a18ae246069c51687bee89141041d9d35a821f852975d169a4f80f75c735807a1fd157\"\n}\n],\n\"handshake_hash\": \"6669d74cb1543323be9a61630a8fbb16d131431415a88a317b394a4fdafdf330\"\n},\n{\n\"name\": \"Noise_NN_25519_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f01eddcfafa2580bf4b9670208b19e615228e0cf611b4263b66068902b7c4d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a267e88b70a00fbc099d3bd4438073cea04835321f89f028f421bd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d0dce53724a6e38d5c0ee4bcb19bdc896c8e62d7a26fe71f7c3424\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"91ab3b07fd6cd6cc8877ffcf12cef8aeb0c2f8c8d58cd52398899a29b8b92dc8c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ff76c3fc888707743dac49d4629f8009264aa4123b8e0818a396ef4c2ca48f2beb7c9215bb\"\n}\n],\n\"handshake_hash\": \"bcd45c7e0dbb7efcffb4f7569050f0099361014e670f26724de3d4cdcab15f7403af1fbd38ceece5019ba3b422c9795240e3626ed2a4fe57d0059928126176c4\"\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6520b632f7382974d87c5e214e3220b4f71521b3b81e0cc310638109b2a4409a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e787cf813add5e3a44b9000c21e5995f18c36e3b314c9f03531a60\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"95e09e1296fb4234a0fbe3e8d56685f31ec2ed1a973ec6283998e7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"628e57591e31578c54b0d85f57cf69ba6aaeca720db9e4bf2049d65d35d6019448\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"11a4ae0a9cecaae8133cab05f00dab1cfc6aa0ff0b2c1203d1eecb19ee97aafa87167059d7\"\n}\n],\n\"handshake_hash\": \"4860a0b30f1f124917f1498e6c510f7ad746465c38e7a745787e615abab5f9da\"\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a5c795fd17c1a982f66a874bb8f77a64de352187a497197b14350766677a40\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2e1ca24b689ef9fe91b5cf74af500040a94b8f7a6e2afc27cc2ff0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0dd23d76390fd08836a69fb27ff2d5c9818b6f83241504c6bc85e6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"56438aec60b8211cdc40c4a1ce35bbce5f24be84b9a092d20e108639ef53d7e9f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"caccb1ff090e066cdb62d6a876d0ef605d1cc85ded52f5c6f0c9e6a7fe4c1730a24283942a\"\n}\n],\n\"handshake_hash\": \"627bbc6642b573db0e9341d31ebccf08df9da387ec36c914a0d6b590c30d715472447c2378a22b0189371f3b960ea5db59a128af4311c7f47ffd36919e6366a8\"\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65767406ab00bd96a9e287f72db8ff2631c658b4508a38f2853cd5f7e3b06a4c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e4a649ee06ad86de75555bdfb9765cb57545d334b0d13a6e5f416c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e6570bfdf9e1a09d18f75e99d747534bb1d8861f14c1671500fcbf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5cd75db3bf4524a4ef5fd4594750cb81ff56a4f38973f9eadc1d68086540e22af6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"01848683f6e94ac3d5c9efd9428a85a2b959c7228d3f2d52d6be782da842e5eb24ee523d16\"\n}\n],\n\"handshake_hash\": \"e151e78aeabfa25cb758d6b751d95bf19f8d64c57dead4ebd4bb42297429121c\"\n},\n{\n\"name\": \"Noise_NN_448_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65408d170f99b5acdcfef1fbce48d44160e59f2cc4fe8c54c77803dcfb47dd67\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4d37b333a22b40bddb8e580913b3988138e2a3c4bdc15707056c58\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"69a4b526cf5b43bdeabb62e325bf7f57dd460117f2162e0f9ef2ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da2ace1b25fc5e3e49c05917e633e5b72bba24e1f4f17a4df9864aa4ee9881b0a7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec5c24c0697c24768b5c44118a1e14d3571893edb726478a69eea4cb1ed94a546ed825a728\"\n}\n],\n\"handshake_hash\": \"6729315420ff46636f330042276e966d8eab4dbef9f50a005f27b81fcfbfd703320f0e0ec3d0cfc9a8b16f1e0f2daf7c00e3072b5ee5402cf6492a25ece8faee\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446b8e856f84e72088c7aa1f7d266799e7fca6b8cf15d521e4545b802acbfe002f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433995cb6736cb8a23c7118a28182b3b1c7d99faf2224a838e153d0d6b4a4981\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0f6e677d336be82bdc401169a7415970f585e8cc4c90638454a66d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a483d93ef8ad714fa6e76e069fcc433a2f80c22a1b2d9e6d6697f2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8e319d68ca9ddafe796ccd89370a94356a8c989f244ea2ca3576d1126804130d15\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"08a56e221f323c86545c90de94809fdea88ba858168909a8763dbbe81523c2224d170a1f08\"\n}\n],\n\"handshake_hash\": \"2a0c0d8676f4ee3089958c554399823e398b67db785aaf540d9b2a7b22c05a17\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944da5f1f1922c36537cbb22f4afa3fd669c06bbe7f76de11b8b55a37494d3b6e11\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434bf1abde207cb38fc5f453ad92437dc2745b29dd0c909fc880ce622c07bb29\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ba7b4d09dd64c3ffd1447dc5c67e2d212be17dcf3b84cd491c90fb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"74f0140ffa40776b8a22b08a808c40ed5952a06b7308cac667dc3b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"48a4f894f4dc8c0115711e71aa2899f0a137256ac000991ad275d40fabf860deee\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"274d117efa7f196f944e23f70d59737356d41accbcae5ebd60bd3f234b886ec2d03d87f6ab\"\n}\n],\n\"handshake_hash\": \"1982b61a83cdcc3942fec86a2c9285b01247f4ad880aa172d93d20c0e2605eee1ed21438c8e81fe15d2eda3f18585fc7188025f5da64c97aad56b5a05a4eefa5\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944904bfdf08f2e537ab64abe6bc7c242f1f45f2867c5d0e5a95cb06978b4e46aaa\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f3d4afaf674c8ac8b83bac515d943da0ab80572905577d910531e3be711576\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ddf0ece9a2bf951cce933806a9c63b0710598ea0980603108cb38\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7db7ccda94299b99e4a039b43cf6181ade14376072b24bae4c06c8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8fb5c128f39f122affc4dc0992b785c01a38626b066f9ea102e146c14005feda6b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2dfd42c35d4781bd327b0e688ddb3af8f5ddac74c166916aeb5fa26d066a15a23a43b0a8ea\"\n}\n],\n\"handshake_hash\": \"59f9c0f0fb6fd4956b4a41538348f4ef3caaed73cc8cfd263ce4f9c515ecb018\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fca0d4630c2db2d9c8fd4b7b47166281db9965db44368a4a6737e007b8bf3346\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843072437a09d9af38c040568a45ce3387e92d17baef29bc4e56a426c55a225fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0999531697562f7a8855fe8c9853771790d98d0b7a60e57da1713e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d4c9f8f19a95058a398bb2503acfb3aa1786d99958c9a6e6ecdc6a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"02ca1c762b03bf631c07ab59d05b779f089c57c941513c8e7bdd0f8eafef443133\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5da8936419a9debe6a42612e61578ff5dc1ee484423123cb31a1b7f790768f72e4f0e73c8d\"\n}\n],\n\"handshake_hash\": \"d9af5b76e7c60401fc4186ebc3fe4b27b4b3ef7b99031f8addd2858279c16cb46b54ca35454bad669934a4feaef9f642c0973fb8bf25d7a240c0a130649c438d\"\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6c2bec07e9c1bb96fa90640304faee938c64315bf37b4bfba5bf56ae8033b1dc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650d2df9b38a55f8b323305f1da219da8f3eee47696cd67f3e0957d717856208\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6e2e568b073194a3cd917e6c3148e4eee0cca381c5f1f09809e102\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"983e2eb69bbbe2b75fd6b56612c32f5455b331f8ee9d3b5b6246d4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b223d8183f71ef0a67b6868206880a81553c85037bdb4e7075493870f148fe1d21\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d738f634c366ad6ed59af2d4eebe9ee4688f41379e909eec36ec8e795a9f2150e16fd25b94\"\n}\n],\n\"handshake_hash\": \"dac7ea6514f657aa355836b0a6fb95b11cf1b6c11ec446add0b25a5b77d1302e\"\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aecf0bfee13825ea4cfc95dc580d2e23334c71e9f2eaa76a9528213c6a681b3a7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65068331d0a8957328a393adb29061773b15d1c7d988e413a2a682c633168e0e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"994268edabe7aa5f8567141a0f292bb6fda7ba1c75d22f9dc691e1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a96b97289afd5c875ead8c1491e373f9e33191a21bdcabf35fbd1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"00734ae90a199478c1b8744f1528593784b0d0a0d9e09ccdf75207ff5620cbda91\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"494a7272a39eaa34dd97af779b44c867521176a96f81f499550b18d817f03e88443dc6914e\"\n}\n],\n\"handshake_hash\": \"5a681d95cae1b882b54e680a29901ed5136d25b1a5b7b0c7ca3ce3448eba6196c0b9eb372cc83e78f610c64507b5e210933f43005ffa7e5441bf40c963ec5c69\"\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a94a4374b4f6b1e7addf55254bbbe91f7401bfd4ae17ac41121ad749abd1dfae8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65053206a5904cdb4d29b0f5224324ed6b8419918166e822451282d726ab70eb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2c41624504071308e43da8e64870760b4b985b437381012c80d877\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7181fe8ccf7b237ee4a20f57200721ed7bf65976265367016a5ede\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b368fe2819b98475df06099da05cc8ce7989672a00bf8a21a8b5c288a24ee6fd88\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aed6e87df13c350eba6469374cf788f62a8c568bc191caae9fba235edf12102628bef85b81\"\n}\n],\n\"handshake_hash\": \"8bad296012eba284a21a77c6df65de51c7f78d4859fb36fcc47cbf825d6f75e4\"\n},\n{\n\"name\": \"NoisePSK_NN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a193c19d9372df2837d1cce18c10979172bf553813989207af48d7e23122649b4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65977712f227cbb4b807a1b1a9410b8ca009da3e188cb38a691cc08bdc47177d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3765b7cbdd20779bd8cab7a57123f7aae680581d813e02264a57b3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5b2bc3a7f6ca8b9f25e4e2f6fd12cc1e8e3fee07d36f040631c832\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"607726d065f762fe06cca84104065f9a37257082c7015b6227bd5a6bc0ddf4d6c9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b655c6e4ace46d046d69e6e81dad07c8627b0213363d1c58d252a0d3f4237f1c9f43d80e6\"\n}\n],\n\"handshake_hash\": \"298f90bf41bf7f8e4f101918f9e7a843dcbaca7e0d28f8077346fa00614403ea799e6c507ecd25e4e694d2f5622ca55b58f7ed9f2678d8da3d39f64a9e62e2a1\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794457e27efc6e78930ca91be1afcbfbf6628b3ec244d49d8e37b743a7189ad0e1cb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dcf60ef54d62ebd991cd1ae08d4cd5b2e8722b48db0c860dacac7a4dabfad3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"de76a745b2f3c9afc79b92f49431108a62db648a6da3e7259144aa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"65623ac05091d7b01d099bcb9e56d9c5fa0263bfc2e53e8fd92af2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9028b229dca6f9a300fd8acf81494ae6a3f565bc8c0a4dda840a53f3872d96c172\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4f0fd092fe1b4d92ae91cbf74fc6b2a92162cece4d23b962d9949ab5fe7478438d19cec837\"\n}\n],\n\"handshake_hash\": \"2879312d935f29cff800a9e018c746edc9394ca1f1448845ccd632cb949d5f03\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445a4d9f6c1b59c15052a5c09e52a23fda0140212d38d4e7d8337d7599db888fa5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884391013bc7c4661f2052ca008b86366f42ed00640057701ffec9bd756317c7f9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5816397203ed037496b1bf2eb27e21d11df88a4fdacaa2a1d0e10b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c02377b158ec82dd8d751587edc977b60be842f0c0a95843d4acf3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"89e7939e1ebab44b19866f2aadf4c02ee7a8bf1f4dd3d0ae18ad47fce51ae694f7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6426993520509a4e8d43ed9c6c43fb5567812c4f720d8ca29c8bd066593bf2a0cd0518ded8\"\n}\n],\n\"handshake_hash\": \"ab524eb4bf44300aeebb4da8adc5cc3153ba02fdd3b3f34111ea8707881f602842e6a67389fcbed7e44f52b17313a4c86be2bc8fb44b4831b582581d3e3f731a\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449d6e0a6b52584d8fa0da1b95e78ce7b414a47b49b0b4e01827a6f7e94fc403df\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bb6dd77c65d7de22b3054a1b57ac26fd26a967f584b38289587549d0cda60d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2b09d17cd111c032dfa875e906f39a2c75db6c797369b0a5ec5655\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d2c1106cfc91c3c438f0fa6261128d6943176cc09738f8f731ad6e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e9ad26f540708ae7d05fabfadf8184659f00e75b327783d8d87d50c9891ebb2c8a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"87fece4ae1a94e0cb0840a6f6405e861d0d6c2c491f1d7fa6fcb62e8c88042d44c740696b9\"\n}\n],\n\"handshake_hash\": \"759d3a3e263b8934b1a45abe59a77ca31a6094fc3467be68fde1bc1c28e1ea72\"\n},\n{\n\"name\": \"NoisePSK_NN_25519_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794410497d7c4947595fc68f1e366ab410cac199b7f45ccc537fd1cc019dd528a1f4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c2ddc74f33f052f851301791e9f3a5a2a836e183a4e26b74e4b068a04428e8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d10cd69474e3af7612b9f0441da388569f84416351d348e8427042\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d1b997d78f6576d54c2ff6be3ad7894ae36f1d5c4e8f7cf7716263\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8760a95e27d2058006f4e77e3e4520b14f97297893a86002560aa1623b2b49fb7f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"96c0b3d499ed2bdea39250c9ec53b3d745ea8a13fbaabc10fe84c3c6ecf689363a9934d3bb\"\n}\n],\n\"handshake_hash\": \"5af8a3e636e683cae614f4f271596580429c8281f1a5432f8b931d1151b22c974257fe8cf66aeb09fdbef1092b745b23cc2aabf53809a7d53d2b56ad436e5ac7\"\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6843d97c68cbe926f11efff0493539d480b2516c0a2af8dcef59edd29865104f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f57b53c480b73dd8c2383f8f40dd8460680404dcb6cbc9d7ff04f9ab7767a2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"11918121934e8385569712ca4635d7ed41de2456a4963887c19a60\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fe9a5a2513dc94e203a457cea63a90d35ccfb563cd0454c36cdb1f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"84ea831d2418c32102f63ecfb1e403316531fcc19fb0656df75bfa40ccbf905f36\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"89dbc5917539ecb3eda846c25ddbb976c3aec960bd5369316645ecdedae9ed23039654165e\"\n}\n],\n\"handshake_hash\": \"eef94b3d74bff4589f8947d5aa4f3ad644aae297945c0800b876294f19e31785\"\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9dce5c0f8c05a7fccab1606f03ae51934994c2fbe77669d0f713406a9c6534f9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65afd7d60ee1cc61bb888e8c0b7064e55323a2db8d337e9ce380c06d0ffe5afb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8ce4ba796402ba5e3bf8328949aeb7a485a2ceeeb12c6729bcc9f2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ccb35d73c93a03ca7298257117fc28ded4beaa709b48783175a1ac\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9d894e9c52d4347a329df7fcd5ca47fd01f1324b35b451c89dc49b289728e71bc8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a07115013599e1c946c474edde2b7edb32cfbe0ab9241986f134b5b8a2aba79a5b8bd5ae07\"\n}\n],\n\"handshake_hash\": \"3dd8ae64ba579941d61ae7efa26f0ed844e0e1b8b9e25c0e63bd29253380fd187122fa520394ebb5e0c7157b4d695e6a1e45e0edfeb86c586f7b5dcc65f35422\"\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_SHA256\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a80b69963732d614e378549723b8324217fbc44939048f5f6d30ba720919a1957\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653f0d7b38f3f22a351e3e994ecc68b6a3a65b561d569b9941db7333893a2945\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ce39e01323fda47f51795db7f0c78dc4fa54a2e0b62e7f2e57641c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"eef823f0c5ea1bec38b84e4a89905ebf5a2cb9991dac1d9cfbca0f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"eec43eee4bb6e919082b95907e844b3d10513739bbda6c53a0d0df9d6ec6ca124c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7f50416bd0e46cf073249c29bb1bad28c18509ee04d4d6a125d4204eca43790e7153426695\"\n}\n],\n\"handshake_hash\": \"e3791abcef62a8a1672cdb6e6a86e04f9d9b4c591b7834446243f162c658a06e\"\n},\n{\n\"name\": \"NoisePSK_NN_448_AESGCM_SHA512\",\n\"pattern\": \"NN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a641cc1697f2876d9a1276775998ffd567bb3061002c38b80972379d21515af6c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6596bf6133cbd84669318aced38536d639cc5cae74e803fca86755c1c3612a9f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d20cf54fb02683adbdfe3d49e85495d88f3d7ba9e1cc900a862fcd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ab6fc70fd6adbd260e765cd037f813b3496c594d0ee8bc6e4b5c4c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"aa90eac7760abf69ba6bd22d8de28d239e01e732193f668fc05cd7100f517dd461\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"94dc1c9f42b47426cb08a9c3b49d8c0aee654f75da99c7ee5686f8fdf6c00dc6f1e28c142d\"\n}\n],\n\"handshake_hash\": \"90ac95f43d977e4776c1a178e35a35ee3f74933cf14e42a6d47b4842626aa8cee7cf023e58d091f059b09a96f2ef7a5010a5f691d374f23c5ff7c262d390e44d\"\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794454ae7612d1724af42adb130160a9a94ebf8c0049d31918a38863a8c1df699584\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843986a5c929337e337ac8b4a074af12af5208c35ea046ad8c82ad9b7e612eee0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"550027c7a5d450017bcb5e12b8253b1c53fd2213aeda84891d5f95\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dfbce0c38210ccee35e830aca9dd8b8b3997b933e75bfc8864b759\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c487a88330c7c65e44d430addf3d92d2a15b081a2892b96693e00b68aec0adac2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"471cb9f8252d8ae7b25c93f4b4aebdbf25e5baa23f14bc743559e3ef7fd065e69cfaef55ee\"\n}\n],\n\"handshake_hash\": \"bbd40bea16af673411e7faf2747b99da6af1ccfc15f6cae074b888e0066da909\"\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f3041e39b0c8ba56008f2d1183fea6acc9a221fce2945fd4e40396e046e0246b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432281dcc1835131f305dca14525e15e95bbefa674d47a13fdf88fe9c79dfca5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"357e24e9f28ba22080666f7efacc01b2a0a4e358e742aeeff2aaf5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8b23b34ff3169de06a39551e969ca7876cc5122a4acff74bf2ec29\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5c104779b6f36e59fca73ed94b0ae092eae1d76dd109caf5060aaaedba385d7076\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"34ae0518d0cd3aa641ed372ea94935ceecd87f8c4b422ce21a33d3f6f5493891e3e915d83f\"\n}\n],\n\"handshake_hash\": \"ae43dd84698159fea33f3638733584bedb74378bd418576f6cbfbb6702c483f7e6ef17408a2aa6a991bd6758dff089253c571816b0340145ed34f6e1844ed03a\"\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448134d00711fdb390a0d178fa008f6d47f49a76e297aa164052a3d842aa8ff7d8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438ea16e3701bc0d77744f117bee22451628b075da65d4114bd343e2d93006c4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a62de29ce27cb80245d440d986ed816c156e9d757d7008df2198b0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"174a35f11c689f4530d7208618e0564ae12f2f50ba8eb4df5382ff\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"337e475ebb8eae60f91974c4e455a5af38d1d8628d1803b160d60442874b0a1777\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"047e80e060b7bb08b53c5a23dfe9920cae135b9d1dc6302fc475003062723700366346ac9d\"\n}\n],\n\"handshake_hash\": \"d5c4ce9ffe8bcd940aa50f842a5d4d90d3f7163f4b3916deb87a5d747712d718\"\n},\n{\n\"name\": \"Noise_NK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444bc2296c8eea30b5482161d29ace420ebb664963fadec9a3ee37815a0dac1dc5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884315059cc8b9a76e12fd9b33b9e07f3cd044dd7d416ca6a18f1d870a485fbf6a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"18ecb8118b223145bae7829f9c8d91be8221175d0bf585f2e99e60\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6a19c0843276fd4c37a1b0053d0ce7c3724a4ece8f7cfed15a3a2a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47afae3fd6d853c3be2835fcb249e7a31821782635112f4828e6edba09fe9334d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4ebc1f72fca0525982f97530426bd3cff9eaa8a84f4b3fbb8ad420079cd27b367c77594a44\"\n}\n],\n\"handshake_hash\": \"74febabbc920c4a4baf20b3f1c1dd886e7b0fb5203dc4da1feb80de61891abac036eaeb04f90f02884cff5ccc1cb9dd86cb1ed34fae5f40c1ce4eb79771818c8\"\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a54c0025cb2f2e561c4e3503cebd2a86646d85607b18e743c2c96a5ce49264fad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653d2becd580ea4ca37cc75720d6b117defb9ee1c1544cbe84fb2aedc40ec343\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"53029c808752cd373f5e0afb11ddb52dfef368b914186262ca098a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"888603ac00eccdf02597da2f2f8ba6df80e959257e8bdb96e3fe2d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6d1b1a2069d9809863a0ccdef1b82fc3d9ece9fd2a69c4dec102db378c5a4fca35\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"30d0f5d2157b92b15b384712d46962e220e33fd227cc7ce929fcad0874dc70ab8020766c6d\"\n}\n],\n\"handshake_hash\": \"f2f1f2771112b8b8508d013f6430c3c2774b4563212684a413a90151fa94a176\"\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae985336ddfcf5c24c6b3b5476762c275adbd820a31c93d21c2a5e335f7b98e71\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6524ed8cbbcf765be28ce3b55f5651014aed6e183ddf69e3db74d3de49801ca4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1abb554fd0781566164b6617cf0c8918e10a4dfd108929d6697221\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ae9f8b8742cbd316d80cd9248776ef0b4deaa5dbea5e24d7b6f018\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e10210094c1bbc4188e188289740917435aee86139a5ab0efc180cc897622a3a18\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"12f562a91f657d54b7d851ed979143b8aa0e4c0fa5dbcc7103fcf17a24d4519f417a6951f2\"\n}\n],\n\"handshake_hash\": \"2717528c1dda87faf925c106f3a3b1d7f7a50310e93d480ad7837bcb8c532d8acd16750c8d524b357c70f621e2f9376f8c8a7553300426d983f5d728817d77bc\"\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a59c70bb11538363388b6f1c65854c350a65dfd25f0872d94c71799c3cbe5a1a0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651bee976f2fd12d1802a4c981f072ac47cedb8ba49f1fdf641dc530738b256e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ef03495864cb3fbaad4b3c0c86c87b7fcf4489642d7cc260b02136\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b8d22a8dcf897ebb7ec8d5526064b1674b4ce93b13a25c6683d710\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"13ea3368948d86df81566698d068edd2d2124293742361cb6173923b3b82fe3bc4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e8d442715d946d2f10e03d3f8b6178bf89a87219fbff0745daeeb97d46fcd27c3ab98ca007\"\n}\n],\n\"handshake_hash\": \"6175f8794661fd308b3749af5e66a70de6cf7566c1c1903b63218b7f5a2d3820\"\n},\n{\n\"name\": \"Noise_NK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a19db470e08b2ce2e0cf61ac0f0faa1a3de0b2c3588a5a552f7cd199a5fbc3b01\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650e749cab990ab45a321e17efbc724f424a095c290cf31aeda47a09f1e54e54\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"20d1509341573ba17b1dc3f6f21c6d5bc76f7fe4cabbc6b8cec742\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7d9bd5b00b41dd3da945a801392d59978c176e95444cfeaee38cd4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"16821cf66a16df5cc9a34be03907f81809a498bc90c30a471826b54fab9d80fc32\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a94f6a6f1340180839448aceddb4240fcede1fd40c16ec298171ae7142fa2ee4b073430189\"\n}\n],\n\"handshake_hash\": \"590e9413da10f215e1199a96a0ef55a2cdaf626d637bbf2aa61bf4dc6bc6e986b6d4d85fd4e3e9e10ce3882b8bb8940a6f6bb8b6a3f0a91034c483ecf5160f97\"\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794483f5d1437b1e7fed8b1cb7002723e37db26825ad21820d2234c13b0d00561772\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438ca2b3224a8125b51153ee96dfd766d43cb34ef872b80253936b35b026bfec\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2b2460a36f7d55f9ef9b18534da44b6ef65240997229a6a386b0b3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0434368dc441916a4c5417e55a10a988d85385dff44f2f8018115d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a5e327911aa238f5123e3f9bca39521a9990ed44b6489b483447a67fae74aaf206\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"33349104fa5d628b3ad86764513fae49536260721a74e95e547c1b50d1bcf2bc8feffd20b8\"\n}\n],\n\"handshake_hash\": \"77521d73c09a3d5149af40b5484f533aec24ceb90c7461e672e784dfad633988\"\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441a2fd66fb1397d8d7b7165acfc695e7ff365fc22d6f7f9e54ce4229cbda5515c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843259947125be4dbd015e5f7fa1023d29be85e6dcd5394fbdb930f1add9908cb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9cf7016579213e0c25d5e7676843bf99f4062cba40aa67fb6e78c5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"30e0e39dc24d5fee76a6225945e220817c394f7dabba439874cf04\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5ae4a8839694d2f0895e5d6eb0aa68b68a231bc2db04f6bc97cd2e416c839a690d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"40a95e70ac2c5f4a421bf580c3de4169a019fec1a63eb636c1ef0649306db8b9d16d2d2112\"\n}\n],\n\"handshake_hash\": \"01de425c24691cce2b2cbb283af788704d22d17fad5853bdcdb0b7e96efe26a7480701ad4d16edcbc273e5916113d99811682315ffb80ef0de27688c8703b5b6\"\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794475ab4d66d222457dd414bc5f296bc7b4bc12a38be4e2a58c27e0a57dadfc7fb7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884303c7d89310502baa8299520ba4516226a7e161bc6d718452b2e9818eb36e58\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"304f70c37c93573099228016d54cb15213af94eb598d1b17df1153\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a1bf6c954529f29b31d8ae9f67d2c18dbd332aa1a0918690c6d80b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2e8f3e51888360b2b2d83a64dde9943c7dd3c5e84ac7c4b4e2d5cfc025b6c854d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8498bf41212a8b87c9eeb408274c75b3558fd0530865b5a7932d4b3af812d85b3df27e6f33\"\n}\n],\n\"handshake_hash\": \"d9c23e22d61ecbeafe0db29097eb5194e5f1b2be357e7fda56fb60f7e2d1bba5\"\n},\n{\n\"name\": \"Noise_NK_25519_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944648f51aa930fd7d9d64c13e0d94f6b0e4379499f935d7efd5d326e6fe6984f75\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884313f7cea78d381a0b98243bdc4604014ddd0706f9d386a8bae7c4e4d8e2a081\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0a0cecde12117879a0aaa10b67404e1329f2edaef2d849b892659b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1ef1c166c5ca068f10677a3385397e708642ecbdc4963adac6a5df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"db97688a0eb78d7b0ea89ebbf28840a721363d1c83409484f5cbfc3360d474dd83\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ccdd3e605f17652c0c5bce7d2d858b033a31c323ca5d81f0bbca534c865276513059a8fbe\"\n}\n],\n\"handshake_hash\": \"4e540f7dfb24f3289e4367d982069a6f1d72c5fc257cca36f0486d989efc5109b90ba65ade32cdbde7fab0920213f51681cb14520244bd65feb6218b9c9647da\"\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a271ca3d26c20c02f6c8ef914ee6476cf5676ee4924555e3fca6544548cf45985\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650cadaa31d847eb9e40aea077104d5e8d77b3d470a0ef9353cc82ed9db16724\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6c6b411510e64948932c3944598fa3fce2d4204d8b292a3fc17145\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a889587d07e988f64d3f0009d0e19096fb76b18a18aba37b8a85ab\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"46760e9385671ae83bea7a7b76c060df74a55285b25374685272b93c4e2a21e043\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"33b86f3c3055c853f1c2400d7516e4f8a12f0d4f1923fcdc39ff59969797763b10b33ccaef\"\n}\n],\n\"handshake_hash\": \"4f989c2386edb74efb2a1fffd4bdb3cc413bf6bdb4bd66c6ea16fc0f80798d7b\"\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6197b20fa19de1850693153eb2b200c19238d66668c1bee424ccc277e1c7ecba\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e136d7f3537851f9cd8caabe8679ba2c637fbcfcd931d65019695444727f11\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b1945f456a6efbdb309a99f63124af154c29a8dfd749f30714b55a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d697aeab9a08f80201af36f28fa0b42e941836c22b29166d1384fe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4eea622240eed0f182084ccfd2aff80d4e336aa64fe4ae7c1d8f511cbc86083f7c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c58dc28b03ecdfee8195e39dd7b12b14e73ac65505e944d5b39e62c436cd11c12131bf9af6\"\n}\n],\n\"handshake_hash\": \"7a03f2eec5ce88ea11359b9de5b28145fb2c69ba0d4c61d90c774d5f883138c0ff961724cfb897f77166dfd06f25c9a0cd862b1e8b34dc4198bacd29158ce610\"\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aea9dec970e8dbc9ee4184d2bf88a23670c614ff91143c36e1af0e7ef4b34e5b0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c9799f16c3049bbcbe3d7d5a8fdda17b312a2438d247da3d5f48a98bbd527f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d8b7ab8c97aeb4ac9ba88224459dfebe162fab38039cd77cc1df5f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dad338b8be50284b724774345e10db7c2c4c475e7d0c7a94478edd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"858ba6ac5e8792c6ffed922315348632ca932642aec7eefa4c4042c0df18029f33\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6b3b8ebad3d4f8b96b69dd2c1ed5b1326afc916974df9871b1bd261bc9ea3432e68dfcd580\"\n}\n],\n\"handshake_hash\": \"d11a5a3ce1c7d3cbb7587dc5ad022dd098583c09a8df0d91b1af9ea80cfdbb3a\"\n},\n{\n\"name\": \"Noise_NK_448_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49adb6433e209291ed99efe0f2ef85a9257a79c3184452f0baf10587248869d54af\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655aadc2ac87aaf84b239cef2d1615c8dd4ded9d78c3c624731e64282bd39711\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"93be59b5d419a926ae538440bdd0ee3b4163cec7ce4ee30ab2f0bb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d0677d4892eb2261f04decae75414a3cece1cdecd58b3073f2f061\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ec0c44c44f2f25cd5a06ec3f5d00b883184f49f261ab424c1f68f3d9dcf1ca259e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"655379864157bd67b92f011b7cc1da695490b759504ba67b220ba1b213fa073b4aea4b3a12\"\n}\n],\n\"handshake_hash\": \"1885691c0f0717c58285b89f883f98bf5890f304ffd161314f5f68799d8b370436fb181a50efe9fe049af5d73f043b1d2759aa1474507cd90bb8701b17ad9e54\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944877273ece0b1566d5cfab38f3891114630befa803634b70f2c05bcc355310b41\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843db1a0ade323add7a5d7eea2fbe48ece1203da31cedf06ac55f1977ec08fee4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c700acb7fad4affe7768e63367b46fd1200341204d5c6fe82b115c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7980f4de2d4f7177f492ac331ee6124d3b990b62689de663dce37b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"819f977f210bdfbd463619a98713d1047c5d291896816b305998c52443b9121409\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"18c3dfef71d56e898773e4836bd670382e366b820779333a81975276ce85dec9358ad17380\"\n}\n],\n\"handshake_hash\": \"6d82c988522a9a2de7efa5f65632410081b51f782764d2bdfc4c9d1179be0c33\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794441fe5a44f2d691c708fe2b0459947240755617f22b3245612f8d505ff859983f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ffe66f0ddee626647b5060e3ad8906478d0653d2fb74db3b409abb7c42dcee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"44ecc816fbbca4510c7dee4b70b7878eea26d13c7e9cc863e64c45\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cfc183e21578d42b9fe42d3a2d47621433928b0d25d70cf648495b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa09c110c0db791ca57afa36e753928e1ec750097b298f564e5b2c0bb22577b40c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6dac5b12d58df5fd585d9b58da61a635e41213a7fdf85602649096f248dd3210a7d4ca6d36\"\n}\n],\n\"handshake_hash\": \"8ddb41f6b2b9a268e29041f9183daaa561c07f7720bbfaf945078900ce907239271933c30f862b4db80dbc8119deb8948d820c4bbe8d0f1bd34a5974f8fc936f\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794473a90060705bd6bc5f14809442d32406c5ffdbc70162579be68263485e727065\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843346ab3b566c708b6d5a552e33679b8c791ecfa2f829acd62351edf73646c77\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1244bd02e87d6937e6b8f729658c158813f8507af7e6df7b87c8f7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4dbeaed0e01cd988be6daa8b1056ab50c12e2711bb020240fe29fa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3fefff7c620ef34b9bb8cb2d28b1698911336cf7cfc97b562f5319350587a2400c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ca73007656928f3e1d652a8b5e5de2c60f079ee9c97081ad1de6799abe7b537e82a7497cde\"\n}\n],\n\"handshake_hash\": \"768dfc622b3a02b4db407d115307d8fa4f41d343d8434ad5e8a434372d897bfb\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a781b6d2943938f4b99305f35205be9bc765507794cf89095e1f856538608c3a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843adbd9f177bfa66db6be0cdbb4c4fcc400630ba9e2dfd533ee174e5c7d3ca78\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3cb5df0f2bf3ef889d5354e9960d41c584ebffd52819d6d94c8dfe\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fbe52a3f3251eabc8eed68233afd7c9cd806b940b98c9741d39d1a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c23b0a4ff080289825c5fb643ff5f84c3aef174662351c10ec5ce7eb1f9b3e2290\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7d812cc4ceecce4056da1b9572a99cb3d040b4793ad6f67fd1246870438092eeee3094f814\"\n}\n],\n\"handshake_hash\": \"6530310a88e3bd862f76a805bb5a9a69cdd1ea3dabf26df118220d84b1de78e2d07025d0ab8d0022fa895604042fbf304568989ecae08a95af812277ad35aec6\"\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a29c21580445ca78926ebafcb7ae3eb06850a15446f13ea1ffacd892da110b83d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d8612202c8e612a41fa09d6f4fe6094c46ef7d2079e0389dc4c8a9e8f66e20\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"457c42f79ac77a4e04768c90ec1b756939da245a1cc67c92cdff4a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9a56c488d2ac61e0289d645c1e0054d696b04c529e6d85c71e53d3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"58dc47a5a10d4350dd99681e91062f6572543bb4944b170939af4bd8e60cfbf15d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"142a240845d8c41eb5bd2d2c7b244cb076405abd6bc8add003343e180f4ab279078fb455a5\"\n}\n],\n\"handshake_hash\": \"b4db72fc71368e45d0d0d8201820bdb58df31284d4a0ea07390130d9a26c9008\"\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a65dad75ec48642995db114135ec2f008c5df01a66c81ec81266a3d38cbf473c4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659c47fc43527f951d46da291952806b870c7e564efea01dd634bfbbc103f5d7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c7b5fba01e074315c771bb2c405e35e7b94abce10b9d587c38f5e7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5f15ccaaae3c0872574d4b940cc15a2c55eaa6eae87cd3e7ea041a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4d5795b5e1dda12f5e99211a65b69c294902c98b985719178f549d79080462ba8a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5571ae67412377cadb50ae4dfc692b03a1e94683dea0315f34dfedbf18bfeb233d117283e5\"\n}\n],\n\"handshake_hash\": \"a847882ecc12825e499bc176c5f608b96aceceff4afe37b3df7002b330eaadeacc7086de203238af9f008fb4a1faae36f023401448e10d94268693b3672775b6\"\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7456bc7011812f3167058cb0b4001f57a777a917e567cae47228e8f94945a537\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659b28e4e2914a56996606c43aff97924b69e8df8200430b15778b8fd2cff5fc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bc2bbfe0a46cd49a23ff5fe4f7572ce6fab2610ce435d9465b93c0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2042bcd32bfb35410447bb47da7c9f17178d9936b84901f854f4ad\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"452665914f5e9da2e88edadbb64fed0c9f49c94d209db0bbb3efc8cb98d1194ce2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a1a45800943c2ddee85c4d7e3ec1066b8296b5ab346ff416e8f5adc78056c9323965f0d48b\"\n}\n],\n\"handshake_hash\": \"cfb8ddbc6757e30861fe7915795b90b97587fb19eb49f935ebc57b6706ad0eb7\"\n},\n{\n\"name\": \"NoisePSK_NK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab5b97a0075b14affde4f3a59b87dda1fe1eef5a5c1ef07b2f5432ed74bb9fc5e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651d49ba6d90ed63887fac59d55ad97f6648cc55d5228d26469c21c76f57a9f5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2c53bb00bdbfae438485b48ca1129056cf0d9d7371ccbb68798b26\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"babe7dc5b0f0d6f6500e92c6b57a03e2ba268d3746246174996bf5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"eafc7e60d41e09b235fa5858731c6b2160d70101637e3ee750c5abb35646b11d87\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a6e6becfad9db7878cd68a69c2f798976d44c5c0ccc3b4eea5f290820b86250a1579dd5775\"\n}\n],\n\"handshake_hash\": \"536da86422e937a9132c63a05f6b4b603ffb71e0105dc5fe38c88c007846d23b7f1012cfeb90d4c5c7a2c9c49da9218a9ba30b86c273f6d4ec20e645e6469d4f\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449c4639602c00151bd66e840ed42a3d40afacfcb18d45855f6aa0354c989f382e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f4e7a1f04bf3cb8162a8e72f1ab2a23220c88d22c16653fa95e40dafd5c61b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3c0c3b05ef3a5bd5059ed21d938e7ef48ea0043035e61aa19b1412\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5cfb036ee329a456d5a9efacde5e396c376f7f78d90b31655e3e98\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c6f98a34a6992182e96679a1d11b00dde65311028f1b4df915e1fbf57ec26c245\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"63f284e21c89315ea2538829686052de81939f906b4955a7ba23479c762c86c2f8d7c5dc2e\"\n}\n],\n\"handshake_hash\": \"dbeedb8b87079b0f74d732ae89d5f8f9d494363cc40e86992612f28513dfe248\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794423ef4007d2df5327232694094937927eefd9cb348f560488abedd70cc53c0905\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fa2d70a69c68f77dec7d4ba5ba64a2036668d065796c11dd00fc0465ba06c5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3604838515d428e23b3cea0cc5e5481c9fe1faff958dfa7318c86d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"83a47cceb56c1d689d80840b194cccf79a577217a881f92db736e2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4b1223df6006a6585c718b3c9571350edf7216cfc9818901498ea104c08a42d14f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cedd01f99b3ea8fba27d8a28bef825b7326d4fd12f2123fe0c36a6c3c2ccce034de44496ec\"\n}\n],\n\"handshake_hash\": \"d0d2154b07205cd5add5eaf1fc387a9a4fa707a19400fbadc858334f632cd139c5d960ebeccf885da4b52ee214c81c8d6b07d2d67fba6a1b6bace20e790d2ab9\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d6374c4a6157058dbd2f15491b0dc824cc8b6072a5353dc1f6bc5308f1b65a65\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435122280b0065ba9152697df553ac7c368463dd4eb413a81205b36e5a526df1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"56cfa80515b790668cf01a233864d1c93e5867ad86fe840291685a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fde1a4e8d374c6576ed5ce678982c3d8d4ae50455fc98bfd4a5346\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"92eaf5288f4fb1ff969f1ebd892bc6e038ef50f71cebef5cc80b79f83c4aa21cf4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e39851caea8b5a60dd161b0606d6085ab8e8dbea7293e34b2804d69d049a3d63767ba42dcc\"\n}\n],\n\"handshake_hash\": \"080f29b0c085ec3695d3ea23ec8eb4417997fcc7575b27220ffb3e5e5e0a18eb\"\n},\n{\n\"name\": \"NoisePSK_NK_25519_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449f899771900e2da72e4a649107a73135dd81a73a7cb000bd39e7a7f4e2556017\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ba3216b17175371a59f3a4159c7c9de5ef2fd6b38ae828fd95631858d7dcd2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4589485d438b04ca2ee26b6c94cae2a1952879c085490a921b6848\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"086dd47017d47a3e9cb8bfc2b1dc254d013364fdac675b04b5f234\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d2a626b0a6efcc24644b8998741deffd765b0306b51259fda40b7359ea4144cc56\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb452f3a60576b9a8ba4835ce0abee16fe5c34fe964f47a559aadeff0fd72a393ecd486ac4\"\n}\n],\n\"handshake_hash\": \"33764b82a1e1f6c054d6adf90cb8b365aeb6110683ed50eed4c9a2ef81c987688a1f2629b82216905d9dae6b6c0666105bc0e7d00b75bd7dfd08a7f66cb6a573\"\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae90557a0c9b24ace45a829d182732a12f85b093dd7b7a5cdaa4aaf29b386f370\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653e1039d9e631ed7f151cd58a1446f8f063cbcd723db625913acaa845e07e91\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4f0d2a22ab154982a1b909698695566a7d600d34a3f97d5ba598d7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"339b711396e2d18becab8619b0e7cc19eb1e391060acafba8e0066\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2a3c19ae16a9ab8e8b017ad059f79a8c01baafdbab2f121a2b10eb297c1cd960d2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0c98bb0d2f3bf21f14a795caedb92b0fd87093018a14d876935baff615375ab77be2aef574\"\n}\n],\n\"handshake_hash\": \"e8362f1c40c0962c87357c930cf2cc90474adfc7e851496c964ac47413c42eef\"\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aae1d6c1ff05fa68154ad3e967d356c3402374d4a6bdc8f3abc4834c7c484b6bf\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6570bc81bc272fc5f7f5e148abd796f118498c495c99f5ed3859549932eed6da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a4592adc58226bef47ea8e444597dc235b9b5f7bbff27d3b2f8e0f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"aa25ba8364519620f1a8ac5e014cde976076629ee2c253322dd4b6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"53d5edd9176d349f7c14f4d4a824e587272f1362677a0220f5537af3819867c42d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8ba405519d2e5d942e728efc2a48af046d7356a8d5c3cf0167629f357b2a05246c3b13cb54\"\n}\n],\n\"handshake_hash\": \"e8958796c8f773266b57c8cdb9dc710aeeb6196fd9b81e71764c283e2a889b4846f2e52c6e032fda9657dfd6a33686232050760e67005b245ed1fba46a16d7d0\"\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_SHA256\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49afadedbf54486c0b565b639a59f9c4031a3932a370d87b372cbacacfe256e43c3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b72356542855290d17fbb9322b0c76df47acd5df02b3c674f2b9b1ad74f80f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cb66dbf3be6cac2a8140647d00e7a525056d441905edec336d56f3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fa66969b056c8010b016127d794ae82f23460631e1d419dc3c1d0a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d54600d57d851b25a509de0ea4f3ecbc22fbb8b984432d9cda70b2cb0357e7dc7f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0c34f20f09cde22ce6454e7dee1d6292ff1c3735b4a7ee4f6755f227e0356d0dc55829ddff\"\n}\n],\n\"handshake_hash\": \"fb8ed30a563999f92306ee7dd7f9a493d8bc450c856a1e5adf3818b65a17692b\"\n},\n{\n\"name\": \"NoisePSK_NK_448_AESGCM_SHA512\",\n\"pattern\": \"NK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6913042ca51ff21f702d285cc153c8e1de014cd3a4c63705aae88f043e2caf1c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65526f315ff583ba7e1440ee66c86e856457b7f536081d5f5b3dcff90f8e0179\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"201640d1d9176056d47dffda8509cf61f3efe6bb4296df1988a2f3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e070f39ddc1c52767bcbf0cf6a4600c15fb5e7c17947939300bbe1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d821a51740e68d5a43fad95f32d935acda0152ca73b59c0af8e62274ab4997a9f7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"af81210089859f74d9aeeb87c5b9ea0fe977d4a12e8d06584548a9e2a715748f6a85193c7a\"\n}\n],\n\"handshake_hash\": \"170c884a92098b768906c4d12e51a2d55006e048ea3ce2de767f7153a7df633db4829cc2ed9c0248da248348724979b40669ef9ef49f8e64f2a7d3255af4b292\"\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431b7ab475ba0987fba04b749be49e6b43fe538cfca25a1c591a7ed09f19c9b9e79c91ff06e198fe3362f0e80e08fca32f3452b8383eb2ddc9ba2237b96d97b4bfaada3d35d3275ac222e8ac31dca1af\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5ab8adddb31ab4f1086c55c3f3ed053f4d78eca7aaf7ba09d486f8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f3bbada5c0a4cd615bed55ee18046ad55efc4f30d318c57b4941e1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c1372cf03d2727f6b74f656b587735109ebb6159434a40a65e2e6095c12db5f01c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"de040777d38c7bf60c4b8c0ca730a9526ff067db990848ac33e9e9970b01efdf00bab518d0\"\n}\n],\n\"handshake_hash\": \"b9eba2c920c997b1036f3ae839a4744fe9558779b5080a0483271b71397bb539\"\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fdaf85de47075ed5e21615917ab0102033d6d1386f48638b4a85564f1241fc9781c782b05b868dd767a953cdcd69bf069e9cb8f278497efc16ced9b2105e1041d2fdcfdc697c92cc857afff31f9a76\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bbedcc446e8aea8a083113d1b32a290ba453cbdb7f18b3cbdc9e84\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a1a6f9f34b07e415516191df57e5dbc7c7e520e59077cf2b8bcd5f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b570f24ec64f2f1edc98a361c1e67e8df01e0c2267a59481ad41bb4ad0cbac11de\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4492601a1fde255be23a84a895cf8581ede55d853e1e9e9a98930b8119b117dc6442d86252\"\n}\n],\n\"handshake_hash\": \"33eabd4fcb103f61a849b3073324934d31da1ae482814292c40415098458f59bac8e8c14b2729bf447abbbbf3ec0a0c1ee49cf2ded3838b19dc4701c2e7a50ee\"\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430da8899553a0e2d18bb3bcdf632634e25dd60e400ecc50c371de2cd83257c7636ad472d6e5dd52a2be1835cde11df10bdde5d45c312e42ff98cfadd9f9e92bfb37a7694022f84f3e1cdd9f0e31be18\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"deefd230bea16077f1ceecaad5e4284c3bf2c564e20f694a61b9d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6bfa60de93cf432f460dcc86cf66716c22ffb502125832433808c0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9c9608d8fc3ef689ae393775e8bb60c16f28ab12ff5c94015961e54addb3d64983\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2490983755cc8a904f08a5876acb67db6821de003421b2f72f9f2389b21105ed4d43c4c799\"\n}\n],\n\"handshake_hash\": \"7418154858fd1359351c48c64040bfc512d4f895e982fdc4b44b1b004d62d68f\"\n},\n{\n\"name\": \"Noise_NX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d7033a16d017752931eda232f53de376186ee0789814f8602f8846caed931f8b94dc497614298f6ddeddb653af233596bca863ca486278a09b3fc8c31c483f67a7b8bc4695372e624387d4be06f41f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ca2b559d543393f35f58c3aeeb5f63f2175d93c64221b16ef2c8eb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7031c94c6b57ceb356700623c3ac019480b1c0c81c23c07806b08b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d1bc169936cf4d4e983d7605506abc57b0079e8c0d62cb3ac1d2097a79675bc33d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bf377483f96ef5a77c8cd85524ee8f246c4e30d8c85a406f5a2bddd9ce86c1590cd334af2c\"\n}\n],\n\"handshake_hash\": \"3879b2ccec5cd327fac5461770f0444f5d2437f45bc575a90bce80afc220d6b976f52f965f7ec4e9397ada358e57ef8838063b188eb0e964e85842d40bdc84b5\"\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65449ea676ffc9826f62af7be416c13370cdeec1791b8935b25777194f37de93362458212186ae9578293639e8c708e1326864d1b2e1c670a7ff343f0f17ff8992dc6b3c5313f1d1cf244d799a25a89f2fd6ee73f7fb7f3da8db5ff329bd6b563bd90548687bb596\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6f5831cd9bc1bad75faa172226de396d0207b9e09010541c7b2b35\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8c333a9d151a332cfa50b75225c14322a12fff197a74a59611bcef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"de8669b45f41348c684a92fb9da62b5640c37c836936b5dbe85f1d69f2c7b253cf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"db5cb9ef11e91d995795233e217b14153835116c80b193360a50c79a2ef6a5ef86ccfe23c2\"\n}\n],\n\"handshake_hash\": \"d5ca52cd7029805ed1ccb2ae5745ce281ee05d3e32e995bf56bec5f1fc7e2dbe\"\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653ad17f36c685b1f7d4c00e9bc11c2d1b94167278fe7a88b2f725003828b7a4b4a0eea36c0a9f54203fffc43d07183f945930eca10dc34d395e448df210f437d793647314d751d99154904e47058c45b89a1c5dc00216b700d11bc9d88894a7b2e524a7a2b78439\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aee184ec41ca0dcfe7624b7da926f30f64b689619ff21eb3dd2911\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1ffda1ab55d7ffc924b4e1739aceaec802c49e8e9070c4155d3f1f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f91e52d8903843b1b03588bcdf9d7eb25529369fb7f36959cd6238863d2238c7cc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8a4a501e9204d1515708b6f0c1d23133564daecccb47c9a5770bb9cc018937a4fab312ba9f\"\n}\n],\n\"handshake_hash\": \"aa8fe866313b2a073998da052c323aba2e07702b4d776e605b489e98f17f61d516193dee73c4c1813c00f68fe3a53b6182b511068c6eb2f6287a0011526fb1a5\"\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659f08896843436600389d57e0085fa46eb6625b6214780a95c0d70b62f470679c3111694e6e7663659e70420c5f729587386bcc4bb339fa66f35b677f627fb7f42b7f9e401fe04ec84493099c64a1b0c3507a0a1e376fab6c01f2b764d2ee352d2bb5f3d67df1ee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"34241d94b732ce9842e5385c5e3bb5bb53e6219bc0724d6c2c2193\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"532490eabe28d0e275e732f55d58399b2082e73febc4dac586da25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"81fd8a8936837253b1ce3613443c72f7dec8436f7d9c04e0e32b43dba2ffbd0daa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"117d82419579aa62e9720045476fd0994b9c303806006aca3877f5991bb65a0b5a486da3a2\"\n}\n],\n\"handshake_hash\": \"de7f81358bc33ca1931a2f6a2811b8f7ab25bccb061742e567620fd4444ca970\"\n},\n{\n\"name\": \"Noise_NX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ec11be4037c7220f2e19cb4fb1af370779fe46dd058153f17b8c41a508c86b68fc81c657675728e33b8531cdbb6f70fc151b34087363884939a6356cd95da793da5eacbca158d7f22907a46cf23e4d1bb8349a2a7b57bb199f6ada7a8b984217a61b72f5136df4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8f45ac42ad4c79ed9090319361c1a3e407886536ffb765b736c368\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"142a945d779df890329622124550254c9f1dcc078bf22b99f7ff7d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f7a3a141a7cd7deb7f30b2063b85abcd6390c8fe9946361f42a4356bae4c884140\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"100fcfcf35496d72ab5aa66316531bf23c8f527e58703fb66d9e539e87a8d42446672992b2\"\n}\n],\n\"handshake_hash\": \"4a2eb1408610c37bf6855ebd2ed47828ff8a764d8ec2e3e66ce844d249aac2ff608a31445bbca3dfe2c79c8a821436af1e624e0fdd1e79dd29e8047e7ea01795\"\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884367661be9886996e90a56ca596d4b0e6f22fe29d32dba64362fcc576ab67d27674ede4173ce52d4602e9eb06e09c96218fdd459b5009b08612bd4fee2baf9e2f0ecb0a97c51ead9800dccc828067df2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"edbaa07da866568883780d27a7f69837e916987f7a6a08042d7cd6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"15a23f17708ca26fbccd33d2da5470fbf401226112fc19a5e7463c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"739c7def45af2d7e2a9441e87afc106aa05165b13f5e9ae865083a99b2cdeca147\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"72803d92737327693147757cc6529d6b27baaddcabf1166cdc3e3ce7f1c9f716775bb9cec0\"\n}\n],\n\"handshake_hash\": \"1959f1625f107e7afa7250cc9747e4b9f5087b852a2ffe5e0b9c596dbaa0bc6b\"\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b0e299ae6df15598050390d1c91373e4e4cb4ef114daf5c59b370c3a3ccbf972d0a401607439a67cc9b43a55103671bc68d9dcb729cd61a318b9caf39804c8380d1e363909e93a207dc7924e309b27\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57c1063e3cf724005e2132d61571e675965cb3104fdf8a15d0e41e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a9dfa65ee518240ac1754fa813afd40b25059add8dcc8d391857c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"12c8e46abd0c6d72dd47e353f5baaf582415347101fec994e9e0e79f7400807b27\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"175bde09cd7b995b7d32565566d4329bc23ea368663fe5ffbb63375cc8dba7374d047f1b15\"\n}\n],\n\"handshake_hash\": \"6a30ff5f0e399d6be854c01a8990a0c0dd76c357a552cd11e2a0381666a1d5f7c2ded3045b0f7013306ce3c829b1ec2bd1f1e5f8d5a99fb47072e8b1a7fbdf01\"\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435783d9758cb7e00c45a7d00ddc333aae968443c64f650b54a2ea7e0c1b67c275e12409fe8353d802edb79c7fde0f0bf8a3d5a445439da611c7a5697b6e6d4894c4d15b1245c11d08000a8ab6bd4142\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"019b4087a1fa140e05486824cbdf79ef1744271ffd2124feb93d97\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c8f304c719ab66533a42878b47b23dc8dfc839b962c675ef2bd383\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e9c0a2537d92e85b88fe153d731f7590b8d112e75e465aeaf91339d68392ed7fcb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1a882961b52d92829830cfa356571bc32efb9075c43c7e87940464c939755bc9637253e7e7\"\n}\n],\n\"handshake_hash\": \"dbf2a72799be434236169225fe41e5c948a1986ca8bd6f8dcb8b09ba3ed071f0\"\n},\n{\n\"name\": \"Noise_NX_25519_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439001b4c268d11b6a164855a0256f6364413a028a16eec989e037e8b4d45517cf6fd9d60ef9db7d837a68b99e051daac1b57ff9465d313ac72ad66cc8c5e52ce9f773f71f7542c6cbf0de19a70a448b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0b31b958cd1c1d7e1b2d472fe434096491292e3ef25cb6980db346\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2c78876993fd5cefb2cccf9340ed233b81a9d5dc1a5eb0cf5d07e4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"372756557590d30cb5c0b281763aaedfa0e7cc7d8b51ed399f73bc95560ad94ff4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6639ead7252a0a27b6659ff524d733f9c115d221611c959acf8e113f23e407a6f10c6b55f2\"\n}\n],\n\"handshake_hash\": \"6626d38e7c3c193fe4ab1cbab95437df3f6044033f34d2ff796a85f96adbd8c65469ccf2e5c1af06ea47742625835301c2e4d26a197e1093bbe87e892ec50470\"\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f13559f11758298f7d24d65a87966cb68c4697d1a11c74c7727b3a7b2f1f58eba43b326ce6b5a0ba343843be4724fcf46ebdb27c995a649c875e85d9b20505f40d23fb25eff0a22afdd4b03eaa168f5ed3f14cb7f4049e800d7b57a84523f420f8e27a50b36a87\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"da1c6a235341318242275f3026fd98174cb89d43911c2247ebec27\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"42dae0f87f4dcaf82834aaa553f6479609c28b6fd5bd695d648429\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a864f80e2b111c5475e62235f80a030fcf50e2779e86160550fc249b370f5f50e7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"93af354fb85861b5de053b8023c4473e53b7318f3376f5268020649895f28fc5554a9e2778\"\n}\n],\n\"handshake_hash\": \"29d1c5d52a3b80c20d78307a2d9b421abfc7e121b67f090658813930c5d8532e\"\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e71186467ee6b768ca1d22b76cfc6ec204ba740d23fc1ef563ea091220d90f10e834baa7a5ba046fbb8e27e39bcad73dca33fb52a2afbb585d958c1521bfa171cf849ad190a58254fb82792d8003be6eeb3a4c6b1c64a3e9fc28a5f44f9e20dc363c92e01280ce\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a7f5e026f3a258ab4f571569e5f6ac9f0d79897c069135b78d6940\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a8a00720eebbf057e0397ca0f473f70cf5aad433e129b23ec3a718\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"89844ee5e5e72ca903c54850d3a7e81d7f5c2e8d8cbf7465c6897230112fe43a1b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c5194503dc56b762ba6e8994e6b4d1dabb7b1ffb1fe3997a952200fffb3e84ff799514498d\"\n}\n],\n\"handshake_hash\": \"455ca2e2affa984d06fcacd259d149d9781f2bf5c0178c894efdfb4f12ce52045112dc59cf133f74d723731d1b98a97ce35ee3362af4916ea9893a4e12b273a4\"\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658a5a1e15fb5641d67640ef7f8ef39600449256a8c577fa61eaa3c5cdd35f008995cdfd25f906494175801ce4c01ede4d7b23fb2a99f32a7000a7c6f5767490da68e8a02b546133c193072c798e2a1ac72a897cbddcf2e26cc66368883d137df7de2d2f06890a7a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"26820b91745e56977fdf5c399f6a6c8a78853d0159e5eb2c172e31\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"02196f7c426a2dcbeb87ca5b14320409cf8eb334120b702cfd95db\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"460c0348377c0943de684b854d2afad5e4faf4f184b94b03226a68d59d62ce9595\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a00dd2cca81f975f3b04f9044918b061f714286967a730b6567aa2ba6510a69535b9f154d3\"\n}\n],\n\"handshake_hash\": \"584625d877dedf6605152e3808ded871b674ef5e9e9112443d6f14b54af63851\"\n},\n{\n\"name\": \"Noise_NX_448_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65566d63cff46a2bcf74e8583094ba8482e7c894854cc54cfc723303b2883329ee3931827ce07bf5271197e16bda2157cfeffd363c6a99146141f103e7e5be7188eb255e10cbf7ce5d5fae021401ab1a9ec500d299fef8a25389004ef3f72cfd117afacd874aa4ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3648ba18ba21230f727ad52068984bf88aaa5172be0643067aa855\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c9bbee6779e0005a8adc86e62705faeda68a66e1631eece3d58ff7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7c7d42138b563c6937a135a339bef04e416444061b5eefa22e316f57a83214b727\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e41d08770130bcd4c8da3130685e7c3e0dfda93a17b82c1ded00c73eeeaeef57d2c23ae58c\"\n}\n],\n\"handshake_hash\": \"a046355123a66830207ce4b36098d139201d2bb9e664885ccb7889ea54146fddea0702f33bdb673fb12ea2c60ad4994420ff0f2c384005ba903e56b3ba041b1a\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a25531f1fd87ef870fb019eecb87d0e1a52e09a5a9a2e7fb6ff011d7aa39ec71\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349b3d9c5e8bab7c4dfa5e4a63a1c5856878448e1b8768561724f5ec0681230e560faadbd4a6503c166f2e40a7d9d45b88b4efe5378682020e3b1a1de1f2ef7d9ae7ba950e1d3805060628d1e6b2ce0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"41acfa19ca740c8e15341667391881fb4e240cd61fd40af3e4f2a5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"32bdbc6f63a28ba9d9e799d8b724657b31f9f45736196949cd34da\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2c95665cfdf9d0ece5bcacb6b463e97503c16b890d0b605e770af0d64133e8e072\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b980a61b2e2e3c4eec433253e766554dcb97a69ed5a91adb89756f8781c6b5bc61464e7cd1\"\n}\n],\n\"handshake_hash\": \"f053120e10f1f481d632ef5235be5c3b98d90e663694da0e55db39902da9149e\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944eaee21107321efb9447c27d0b0b011e7ea6857489d9ebfe31dd6fa42cd34e7fe\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f005cf654eac52acb5035c2ef6e57b9107ef0feee1c581096e1100cf990196df515a3b5177b6903e261210db958cec197ecd92bad46f3452cc50ccf1cc3227478df922f1df3b168d403b6390fc9df8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cb1e0b0b1d45b15309ed9cc89a416fcba5ce90c491140f98bedada\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ff607598dd9060465f318b31a13e3340a0c65820e057f7eb0a9b70\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e2cbc3ee6520845460dbd1bb039b47eda7c71dd007717c69711d9fe4897e072621\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"891520652e05d8a54141486b20d494927e6e76c462bdcee4def65db78abe4f37c56c0e132f\"\n}\n],\n\"handshake_hash\": \"290848b4ad5e5a6c83624b66ef67d6885a28c6d0557691ca5dcc2aff6c85593b03d772c8ed08ff70d4980270e172dc0afc1ed731c587d04b7b1c1e55f515144e\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944821ffc10d14db7734030945f618835d4b2933b6776d4d973f2f9988741ffe090\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843da4692a56ee5eebe2b726a03fc38e4ab6fbda77b8c158d05097635568580b65a8df224445a18d9ef390696245175c50d85add6158af5661ed1752c5cb2caaac81af930d08dc9c1e7d70aba03726523\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5c05969453775e17e31cffd96b3e69f5ee8ff974d5226bf187ebaa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"914ee5bcce0444878138ff550c1056bfbf3f8d3d23f4aa2ed4be24\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ee66c7618a8fe1954dbec131aa82ae436c6daa16a0b257c4180fcd0c007147b76a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d176911bdfc8301075d6df58407bc2b2c357ea85e49a7d76e20e4bf375c4e51cb182eb7e15\"\n}\n],\n\"handshake_hash\": \"33cb2fa2452035edc80a5533927d9144dec98adb6a8ac8f1a50ad2dc9d401e7c\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446edef344033dee61c4eb2d4faae1950a32bf3ff8677aa713240021099ee94959\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431b53f5a3999add1d4264a766c9b17456504b2a4470f9a5ee34b9b3f1fd5bcee6c81f3799b0d35605d352237ebb917f560add741893d9a15386fdf8e6488cdf34ab202da80c865b48bd7248391bf6b2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f827177ab652207e8c75d0260f9bcbf89969216863bf2dd21d215a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"da0e18d211092831477919f76a9e0a3334b93caf185c05680b6fce\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9af298363f9c495a93d8d07845259cb620d83107476ce9c60fb24aa77b42a08388\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"088ee7d8fb1393c1f27e378df794949cdef41fcfd2f6f243520109af03b6cd871d63147cc2\"\n}\n],\n\"handshake_hash\": \"4b0f0d6f904bac493203bc4a9bce77917ed89b919e699383974f409f3b5c3d9bb960de46c06cbdc9c014c0f8b9ecca742dc41e97985588f9694987396a3489da\"\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a19d5eca3508c4001dbb9d54269fe1bfc9095f74d9f610a05b863ac19b17f7945\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e4a01c61615b25787f6b97ea7dc89201723346331516974c92b02fa113e9b51a105e4d440c2c98fbe9be488306aa0607f3dd7cbd2e1e04e9a2018144c3d49c2114cb5fcf2e23033afd4d5e2b95c2b6d64d90c7261474c6510a088fc63c62fa94827c4db1ba60be\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4337454c35d139c3f4c088a864e79d311c4bbd4e2da89e77e72e5b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c03de6eaa0f6406f89b6bed26a6c9a6d74105a65084c5fe3613794\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"508b04b5dbd1eee06a1564f2df66a30a0abafb5ca52a19a6faddc811c4b714c818\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9ba64cb91588afbe523a885b2e5fa97f3e9a875d0bba3308232d43c16fa0a030e628babe8f\"\n}\n],\n\"handshake_hash\": \"a98dc635b9d9785dff9d369069c79e69ef87622dc4a3f63d7a7865ecb0c38496\"\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa8c80483131ced6a12c477d2798321465a295bced25c525f68a9f4072a9947f9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657f87f093b83ce02142670633dd19755d46dc4d24e145ad84d3f577dd2fdd32af54a1563e6d1b107e134aaf8acf09dae2dfab2d98c742731fb76e1445c8277e3cad4d035991722c54605d4fc5dd5cff8c8cd35676c13cbc0a68e49e0fea52902d065db6ada899fc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb7b13e5ea403571b88d610763cd0186edb6d2f1736e274dd85df5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0b30229092c10058dfe485d0db34401af806ceb4130b6a9324010d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0cfdb07be8de03efae52065cdf46af525603a901396d4d3bd2b72369d9fa76caf9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"deea877603fe4b4b44a7cca1f14d2555bc7e6a8be5cebfa9b4697efd94a899a50d4541c568\"\n}\n],\n\"handshake_hash\": \"1bdf96546f0177af29bb911e5a8b34957202055cf8b976c2b239d902825bba4ba3010f19cb972de5804f05d4d9b97eb7e9dc5a57bde3c0bdf95e42660c4d775f\"\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3f45f9d27e1cca58e02dcf32679623126d144bd9ee3fbfc646529593fd6d4c42\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65efaaef9da6f212778ca4d659a3c6ef57b801ec318402a914e10ccf7293629ae9635f3610a7aacd2dd10489d6ba5794d867eca34adad5f009222b346e26eaec2a31f6ecc24f23ee4d79995285dbbd496c040c28fb25704768a58586e2751e77c71ed2e93958ad2b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ec65ec96e731e13699b281792877dc7b5074fc1b4e0483671ec8e4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2e0e05d78eba96354dcadccff0ea442f9aa65e3da5df222fca664d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"74c555bd54c448676a763c1e8ddf0017337b592ea3140ffcc84fde96ab71383bdd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b18a194875c7676fdef8786ab354303986f618c0a7c91613f3cc9dc9afcb785e469ab898f\"\n}\n],\n\"handshake_hash\": \"1408365a5719b97c66024e50e73a81577bd6d55743a762dde3623f00b703b344\"\n},\n{\n\"name\": \"NoisePSK_NX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac2da6a37c3bf9d8bfa83ba27bb37079ff00999ec8f79c1ec0c7ea9a25869f344\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65222822cfcca94c0107154298b124c14ca0e144a937ab28afc8550e92aa36cd68e9fa45f4962a77bc2b55263c08e179de144e830895eb3e9b81df2978765e7826ff5b28299d8039d9fbbd9dd8bfa361b1695d84d103020dc8b1e866abfe6cca95f6c10a68704793\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"28dde3fb28dd8f835f1327f86e6de795082cd1bc5cd8ffc218f138\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3b8f900b04793c8a4f9db259e03d49aa6379feab7bc09215ac8345\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"674af515a6bcf6285aaabd3dbfe4637df5727b489712e7ac02f5e8d5f197326c71\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6e2c6225e4ed83362be1987d1e3e9dcaec5e2e1ffc0758acc1fdcfdd1c0923721e00685304\"\n}\n],\n\"handshake_hash\": \"8a74ed28fd211a90dd08abd6ce11e8935670e5217b7fc5e4b6efb4364d8a75bbf7bce2e55b329d6df8d01de9399d33b659c94ccfe5702b2fe6bfc6b7b70bbfb5\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443c0dcff792c9caf5eb4bcc54aaea528f9ff00150d6c48c17d4b0f907a103d21f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884341903159814eecb5d2f6b149ec9297ea49fc1a38e54e600b2d98ae27782da5b75dfe34dffda72016526db4a5ff4e8fda5422c30cf846c12e3e0e4bbc1e60eb37298c03f6636c4e2b05ab9841763768\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3e40ca75d2bd335b9c1dc8c7f4ba645bb56ac2491a3d8cb40f8932\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c869ab928ae71cc958cf6c3dc8f6d787dddc879fa71ad3437a5015\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4b2615e1d6a0c36e7c144f0e617fcbbbbfd9b9bb42ad2259c9c60a7430752217db\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7fdaa8b6767a0fbfbb1f618cbd11f1681fbba1dd04e8d7f0d4dfe58493ad4df82ed3eab2f3\"\n}\n],\n\"handshake_hash\": \"94cf2b4e8bcde2aaacfb1a2b553f5916b27edc1bc0197c7c5aeb5c7841e5aed7\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441eb303aaea84c2e80ba0f213659fa301bce41ebc54e34e49bb9dad09a3855792\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433b3b672eb936e3e97d45b3c7a22371f150da684ca0a2ef1fb58348e753c080ab9e5fff98bdfc0918d00d2a7e5e88a93af14ba952ee0c11d17722f812947f62ca448bca4ccc50011e0650682b62c830\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8363114a9eedcbd9f29a60238949a6a4ccb9d186d9bd86464801a2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6ab7360091192057744aa33668711ea478722f548d33e12753ff42\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0026376a87c2591bf50d716487573e67ab8625477dc28667537296db8e3017dd12\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"303d1296b905d4ef65adbf1cc22a802192add771cf9c002b155a7b3b6888f9cf1b9c58ec8a\"\n}\n],\n\"handshake_hash\": \"b0f94b60719181fd0eca95e4cf80435be5e3e5c74e7da35aae9bd0f6a5ab885cc3fe7a25a5d4d5db601a3fcf09d9a91961827a9b4c1e21f1547b711f04501b51\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446a0c5925dd0ebae7c79a524171206c5d0b5b9d89ff01e6be25490f8344f52ccc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433c46d7b80e7f0dc239fba73561e4e90ac1c9dbc2a4087fd1b015256e23df52abda82de1ca5f63a4e3272d2ebd6f3c8730918f64bc708e60092c6c31d5f846658bd1ce80cd427dcbd626af3c56398b9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7c56417051890ccb8c61b8e0d31429ddf42e5ffb23a103753643ca\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e010d7e43bf7aad1bb65223f933ec2043f3232b58b74be69f07182\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"25cdee65928846044514c16b07cf2d899e29411905d99c882a1056cf434ee0ed14\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f8239782daa808e2c193f6cef57e9100ed9b6973030a1e6242b6d2e95241c7284e72a24cb3\"\n}\n],\n\"handshake_hash\": \"899ebe9337760e46e0acad5577e0ea6da7b49bae66faddf181b9c8a241099825\"\n},\n{\n\"name\": \"NoisePSK_NX_25519_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441d650b28b431bbbe0231e9443e6dbd3526dbbd073072a4abca82d483e1c4a8e6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436a6ad2820cd41eba4de6293b8320e341cb49098acd667ffaecb2291ea1d8905c13c64ce442d0b19d6b2b4ef835723ccf7a94c5aadd66c233131a1666faa7569b972f7703a2ef6e016ca0f759fe820e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7648cad3869141b66b9231034af1ccf130f3d0b6ce979c0e76e0a8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e4483486d8d4df7f5ad65bd2bc8fedf775ebc71256440be542e1c7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a192c5cb61442745b79685772525a11dbef0b977f1273a8fc3faffe592bdb32d05\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bb4986baac87fd2fc8aa65780c63067a675f78a8c8c2631252677e274dae4cd19768350444\"\n}\n],\n\"handshake_hash\": \"c3c86b721ada0a6705697398a50a696f69a1bd5a7ca0fb3ce504941330aeea073d3bdbc534f673adf3e85026e78c92dbb1b900e0b13a8038959041e5aee15224\"\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac5b23185e3e054fcf9fb3e5cd33797ecbfe7f3225a85f66f7f7a6a46f362c9be\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655b1966c72c474d34793ba976451be08983431d34ce037258c3c5c8d7965577a37b1670d5da71cfa92b494680b38a573db4d182b193073f2165847557c85a02cd821f47f8a87a874bc80855976317b1dc14e00343d9cd0dba71b9108ce4470a70559707cab7aa85\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6397067bbfcf36112dd834fc6b4ff799f08dbdeb87734c9395b636\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"35c7718c0b431b2b0b4925d9d2c888ee4717f3137f307133f4d9a5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2e0641781756b6030f9d96428b951ad237579c46be2c2234ea1717d9a7f8c55454\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ce3833dce4bce0cd5d902b130eddb2e07a2199195ed6f1e870479aba343430e80ae4118bf2\"\n}\n],\n\"handshake_hash\": \"90ef14088f21ebfcd2ee4a03c2dad205b31dbf0b409a7640940d626fb1db5bae\"\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae97ea06fba5f0264347b00b5ab1639f7e3ae2e94344266f5f470b590ef426364\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654ed9b475b7009f35b864f24c4dd5aaad4ff53fea95318aa576a519c2f4ba49dff5229222fdb73c55aabd1bfa00cf35544905f35b2881894136d6b438da7e7b67366c30e5b35dd46fe252130718f5466b1c0106628513676fcdf66e32e87ae187373aa448928f3b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3f96483bc998bc425a23ff6c1db0b90c89c9be5758e10354b35eb1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"13f5453742aceffb4d7d9fc020d060c797ad90ef8a6d0ee44f2564\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8b34f22f4bda1fa8804483e5a24a1fa672e17e05f78e6fded540d73edbdbee4103\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b2e1b6f61030dbb0c0cb6e67395ce541a1d4cda4d085bd893b2495c92ab66016eaebbbffb\"\n}\n],\n\"handshake_hash\": \"1598d6d9a3e203b2d288e4de65fe32dd2dd07d210cd47da3d26f0bf436699d92fd79b8f47b3830b3c41a7833b3a7a78d6f3737993665b15a0349481005820741\"\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_SHA256\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa556ee8956c6ef46a96b4cb28e91901fe1d58a5efbb342183b0958eeb240f38b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650190db0ec23bab29f16d17b02875b42822646738aa466b0bc5a0fbdb6c88138f8b9ad492a021360a772ce56aefb92e57b2f6968dcad7ddc3d32d6055e535d68772ba16fa98988dfc8d5229ab35f050b289933bd6b14c24a59431215d2eb7cc1bf94206f90a4ba6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"090efff2d1b36e7ec740d277d922ae55232b96d7d8d7e4e997427a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3b37c713ebe1c3e497bc68a0a87ecc0f8c8af8848ed7f01e4f3603\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0b36ecc5f87b982f858e3f216df094da665fdb5f4b889fa82dd3d75a835e54ec8a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1ec3fe43d9614546b837f305be170a9403444a45dddcdcdf123ac67823c4ff0c780a0623cc\"\n}\n],\n\"handshake_hash\": \"fdabdddb46d6f356dce5ee456d08f8f122d81791ae5a6d5f0f6b3c450cbab9d4\"\n},\n{\n\"name\": \"NoisePSK_NX_448_AESGCM_SHA512\",\n\"pattern\": \"NX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a946461303af216e712d7df8d6a67de53c5f122e356f5321ede54e0585ddc5fe8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659d342a72918e318eae1861f27515f9178c4dbd8f5c8cff8100bf84e015149d1b4abfe4e7cc953d919313636f722ce81f4bfa2932a7152b00e367bb1db57ccc3f236b08d8a758c6f8626739fc11d292726e85356904edb825ca217b7497be39a6689d9f337b9219\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a71357951ce0a22ded1b41cab5f5501a092e0d3431742438013fc9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e812836257188a9a841378c50b35d6380949135869127fc2be7e3c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"13e3889e71e898e929dd4e4e0e1a7850a243283a2433eab256dd3ac333b19460be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"028cba2c0ef6da125ea048608093c03bae15d6417b36413f2cec2cc55278491dff913a7ee5\"\n}\n],\n\"handshake_hash\": \"a2e33a71f48e345ed844efc79f9e488c2b22d1c906a7fc9e7552897abf48e617f7eace49552b333faf1c0f4ddd98c9c0c8d33548f6e1e8082f336375bd8bee46\"\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dc00ccf629492772082cf28c171db38c074865c7018c47abda2b2a33ef7ecb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0bb0ae2b390d37a5aea005ffac23173e212f2234bbb4da3013ba0ad8ad8ec2f8459eb94f171a62e1af5d044cc2c34903fadbb2881461b78ad9230a6563ad6df7cfbb615d39f9ba6e2b8bac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a378ce38a1df8f3e80a85c5a8709f3a17581ff8a2888e2a8446f65\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c9df700a1e9c118572703d0d7f55c33fe4b07be30914a7a804a4cd6fdae90a486e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e371be686b36e1a101a7989f805d8e1520fc031b3a4a6085df1e386da28bac940d615cd9bb\"\n}\n],\n\"handshake_hash\": \"0e4f02325ce2b9c20ba68c781c80092f51966d4fb66b38a9e8032350fb106d81\"\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884305d2ea2e8f8ff7966541b6805e3f5fd95f80479b92e5bae370effe52d6b51b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f715c17b399cf3a6f3af2f526ad0a7a05fb7908c35e0fce4d4a2cc85ac563580b0d8949b6773fcb39aa3ee5a055a53ba8ea5ee64354d415c3a34775247f778e55e30760f0ce06b47f00e94\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b7df22961c2f557eef73ce9c793edbce2feaaa634813c9a8c7a7e9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1db24f1ac5740f1731f2dafd7178549a71c7bb3cf6b61af2552b12fc13f2dd18c0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ed7a84ef366a3011ec3c103b9310ef4a82c2177125cdb3d67cfb8037f2e41c9fbc9278ff47\"\n}\n],\n\"handshake_hash\": \"8070fb390b8edb95ecd2ed978e4bdf0ae2a86f1c9e5aa91f1cbbdd16e0fed16609ebee70cdef25fe513ac7d18638b776f1c0ed38811b90e775d4855d2886bb6c\"\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cede969108db1d801a3c5550fcd4a6773faa5f50ac10541b4e50d33baa0b6b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f8332c0aa6726115565aea0afc6d28890e24fadd512e60c9d8ea2c22e87f276f9c963ef20fcf3601085ae9b23bc405c92bd138391cef42ef97b500c1b0c2d73d1a731c92c427146ce243c8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"05173034244d88ec53f37457e682743786d461c1f40ebeba92503f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e3f9c0732abc45f4c544246545d68248db15f3810a155901076e16ca135dadffdf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f5ee4ab80ee7539f4c4b168c70ca31f1113f53e38cddc59ed93d4c2152e682afd177f39a91\"\n}\n],\n\"handshake_hash\": \"aa6345d285d47a66d0ae52c6538aaa818060f189c0c0545edc5bcf3f97b6905a\"\n},\n{\n\"name\": \"Noise_XN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843603fefd75d3524bb35e61220015477aedda13081dabb580c925100d8bc457c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"83990be5d1cd5ad8535c24e8f7d63e4b76ff919b63b68d09eba09c80e085ad1d0907494a16dced136efe8d592253c3973df38727bfb1f02e39b879b8ff8b0860b9c85e84eac3659d1a4951\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1a9979b11dec7ed8d737cc9edf840dacec362cbbfd2b4394cd981\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8f5df3c87def8592b868b27feb8cc1407a8cc7c442ef4c939fd3b8be503c7b97c7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8e3cd4197146a968b39de21eec484cd9d45282758a7939187c33ecf4043b645b9c3ece63cd\"\n}\n],\n\"handshake_hash\": \"f4ff081bef20277d9617a297ac0b48e1005d50de9478edcb564aa8d8834bd3fd838b7e9be6c0b435c3ab984d67c4edf2344e62400db4a46a3082acef63043938\"\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6517223bc07b7e517ee07b95eaf94a0f453194c8bf5d90f769a31e7fe432f705\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"500797ee9fcc957c14cd1c74e53d9b7f83b4e9b9cf7a44bb92fd1ad2662ccd0d79a0e7865cbe8aef114d7c60e4facb78998f69812c1de695c519c9e650d8975a18d484c3b48de2a87c45e8280afd86b404c4489541a2a882dc87e307bddc80c8783988\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"12c64da5baa850bb313647cc03e2502a7b33ad4fb2ba9d45b8f144\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0df5641fff7db2cf5a9587840d7c4bca683eb0763752272dbdf7718d15d0423110\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9a6386475cff37c51686d736bf535c2a76592301f753207152e6883c6031e94b2b5508f754\"\n}\n],\n\"handshake_hash\": \"410c8536e2ccb91484e367d80b5e26553abf56d704d0fe31cabfd4df8fc211c0\"\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655b9997ef8f4bef576b00ff2d44e5cc14b069d755b4c3b7ee8288a12e79d657\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f3de394b4b48a48257a13e19fa756292ac2989ced979b7ce97d9e8ee8467103b7ae81776d0b5789f5f8004623ed4b99232ab984695a565d5cc428f7a4b1c8f8199446ca8646da361f86e890922311ffd8f8eb3f322da577d3f93bc587f39ab7dc78660\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5eae86e24b6f19cbe5b882f14527525cc892f9b314615de57f5e3e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4679f5e67ee05dd67d19d3ac269004073372be7db715be15d321a8ff99b307e4a0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a78fe8ca1be902948aa6563aaaaf03fdb094d48ba0da12d58feef29d5158b1e7c247a2208d\"\n}\n],\n\"handshake_hash\": \"ad9751fcd0582f67b14d5749df19c32bd681a3799ea7f807a240c8cd1db903f98d387fe0652102f6ee59bc7af21088625a0072c8adf87efb81265b7caafe5cbc\"\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659d7ee5708c26ca8bbafaca0d0dcf80519a77bdb255a95e30aa5cac484d1447\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ef91ece4d6e44f4ab5a072ac106f6512919d332d0f7ae10b66d4887416f88288c80acdd7af64011d317bc3546c778b3603d438c147c57d502c92fd5bcbbe9f89d32e62e7731711f18c0ed69764c546f6002dec67bf68931682797c1aa6c48892cdb4bf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"740e02ac1208f946bb91d4c05ac7c4b24e871a79038958db572681\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4322100cbcd5e848ac336830111acfa71974ebc25a102aceb73b323f6daa20f1d7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4de2fd237734345ed0583db83e03b67e1e178971ef9a1463b3cb84d7b7be7580045b02a4cd\"\n}\n],\n\"handshake_hash\": \"eda904545fd1350f9f3b34ea89e5c3f611e6316d076bbcf144dd16a6f7780f2b\"\n},\n{\n\"name\": \"Noise_XN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c101f1215a2746e5e6b68a36d9c489b8393e8c755d97dc1307b12f98c5b6c4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7146f024dc5bbb044cce09043e49e80c5aa955b903d11d219252152744ce6b146f18e41bb8743cd58ec0fbd1094490e53a82194522174e7850919c70ae7fb05025afce601018a6aaf1f69dadcc2ebec18486b4e70c6b9bb2df8c91bfd87509ca248295\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b75ae37d0ccd009a2db8d581aedf599f36ed5bcb7f8c2c978f3154\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fc63730583959e6fa33818693144477648dcbe1e0fd36841dbd4e0856aadc11250\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"64a59ce1777f02d0113187212e5a155e7bf8ac6306fcac0f7f567f063c45ee9fea497246df\"\n}\n],\n\"handshake_hash\": \"e2d154dc4e3e492190eaf948c841e2cdadf1254fe2b684ab0aacdd527d6b5342bdf87eaa9bc262f58ba27780443a5bbc57ed9eab6b5f9c49795eea18ac64a2b7\"\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436b422eea287020fd7348a72268e53b80b606699af1b6bd07a8c701bb51ec61\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7c7697de28513f07700164253e67124cfd12341fac382712e78de74b8265d0b5bec44018012edd0e782565591194d3656b93d5cad28cded658c795c007fa1bdb4075d8cc7739a45780671c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"acf40e744efb9b4ba076747fcadef9fab390755c4bfdfd4ec294a2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"86e89c9f9ff0e39e0351df871462413de5530f4cb2f3088ce1fd57779ef26d7537\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a61708868b53cb92254588dae33cb5525050884f76a07e9f5fae927dcbdcb79874774a8d77\"\n}\n],\n\"handshake_hash\": \"02a22da94b6d0890d98d18ea8abe27bef6ef142d31ed1aceb798bf697f7749ed\"\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f9057ad4bd91a51a985b19651b4c8b53d718be6cd560a9e996e100b9780a06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7f60a5c7c718ba1a349ce7def2bf0703137bfc97b33a11f271606b88560fddb844a54eaf5cc436019b0bb7feb5b1977125760cded4fd0ee01297e522d12376b310e82552377b882ef385e8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"144adc82a5812b91fcf7d5246a6d5dcdb5887b437924971a9b9d97\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6f45866e5a980666755a4c5eb877ce182e41c92eca4429832220ebab0c4d821145\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c8fd97203e5dae52635aa81644603ad2afed9be80806c3a5bb115cb53289839f718bdc92f4\"\n}\n],\n\"handshake_hash\": \"47d81d6e06a552d2b486ab2d011ea52819c10da25f66e5bda3eead3e21ab4638420e11f14ff2c522b4e3e222517d3148a04fb292819e0fd072f294d454ee74ac\"\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432609b1c16c1a7b919a1b1599ab7b31951bc3434c517370e0c05135e7329300\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3f36cdf504eee34b41d39cd0c6bfcc1d1a49e01eca9332fe2bb20547ccd72e8cd1aff1e6678e02aaeb6f47a0ad82dfb81bc8163885dfc259461e9b02c1d8f1c4c41975cdddc21f848b2d65\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"42f8a23fb33bc1f0ca3dc2ba23fcdd2bb50b40f4054f3297e77129\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8180b4694643f5b32774e356e2db7a849f37599614aa86c5493668cc76a44f92a4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"870a4ea3433b76c31a3ea48bf660067143acbd7a5e9977968adf8ed83671fb7dc995120c75\"\n}\n],\n\"handshake_hash\": \"0d60a3e3e0020196a658223efa18a7333ba774b4bd4d2b90e8dfbba38208e3c6\"\n},\n{\n\"name\": \"Noise_XN_25519_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b315cc605ca998a2810b6b5895b3db9983e1a5aceddee15b2ece6329ead0f3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc1214cbd87194777857a306bc92800a978608ba64d60122b93f2df79d324a3118e29b63a2787bc8a4dc9b4df7f2795464dbedc25b4d94000035df1de54df850be94e855fbe4c5a7438bf4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"60fc5ac223b02be660ce2cd31efc83f903761a4c61031567e2d29f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d9a6678876566a97f0cf221ad1e345eea9a47ed82dde5e3d9067976d2329c73d97\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e8c7abfb2e0d49fd5b4b9b0d67a1576c19ab3ad2394c95d5dea2b8979b6a39ae92bbc78b86\"\n}\n],\n\"handshake_hash\": \"615827d56cad0f980f89fe0f16824cfaee7ccdae3d99231b3f860e4ff6d38cb011395adb4072c88d52da61af1afd946132595bfed9d49ac655581e19eb9e68c4\"\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6574fbcaa65bcb85d1487ae4cfbf7a76bdc871b1281ca2d2cb1386cad2882a40\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d69f0311bf74dba96f0c8c429671e5c08f65f33b4824018b1a9d5a27cae669eefe36be9fdceb0e1e411aff4bb9c02ceb73039a4af57a2a7a3ba496999e25d23956264b2d1683aa5dfbecdc64939b2a29638da173bfed69f2b6d2a31e3654f740b53c96\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9814ed6d954b03441b37151373a51841b80c67f6be5de9ecc709d2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1bad94ed64430dc9035808dbaa1bde20e5e40c1aaf9b806cd2782743a5492f5a24\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"271e828f315adc258d0877089a8436d7b9d59d3a01e5ce64207ffa17b2bd4db0f7f36720b0\"\n}\n],\n\"handshake_hash\": \"a49c8276d9e1541856278f364e36b9ae04415c5734bed01aa4d6c352b61a3c82\"\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f4f945bcad4a32065bee0a636c6e951b1ccffe4464f736f43f4042d9a03092\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"345e994114466fdf16e37ead5ca4e12583a927972addfa7b11aeac679d7b304b152c5d6ad551703e6a9a4fb77628489b2f4484e93bb046168eb5444ad9ed3397a073dd23be6073f499356e1d7b1d68769caab0d34242ba917e2409e4502d7510da2944\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1cd1e09ee09d5790df214c51aceac7cf06c9cde9af328c33efa3ce\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ba050e92d42eb42f7ba99c02557de80eb534f5fa320ab03ba6c205000fa7b21f3f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e338a47f718bd558c0d11272ee24a5640fdc474b4da6110437b6b2930d3dfd214c899b0967\"\n}\n],\n\"handshake_hash\": \"e12e5fa14e3568f65479257384a9e8d5905338c6decd4eedf8248e54b3bc94b4f8896e715d242c244093f8b5445929800f1f679dbfc76b73c90c1c2cc6f77f3e\"\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650265ab4a955a7fe58bbaded481cf03a6c216b4cd2e77c32a15d6ff51e4e847\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"da004036f9c943a7cb17bc3f51e353860813990fd382283228028ac3ad5eb973199068d9003885ebeaa5ef1fb4e92680c1ff7e271b629d708ffd861ee877073635b8474d895654dad95cac6970cdb890cf10b66827a78293aeaec401504fe76de3cb50\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b86fa270763863c1847a099d050402192f5d8282da04a5e282c3a9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bddae1e7f62ffcc36d0f531e30e96c08c223bb02bd58839c108b64241fc83080d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b0e740cecf9fb0ab48053c77281b4b103b9ce34446b41f16868447fa0fc5f2b0ab013ca3a4\"\n}\n],\n\"handshake_hash\": \"82981200f944d9589f5a270bfef7a169d19ad93741bff215ba80a0fa19b97a65\"\n},\n{\n\"name\": \"Noise_XN_448_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65144d3b0f84f72bb02acedc24526c80f2db508239cae7a22eb4cefd3eaa25c6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ab96d433d00fad1ce7528b1f5818d7f825fd94b8e18fca66a471fbf9a8c78d1ee0537499f31a315f964a9e577e1db0be94b83a1b839d61fcf7d4a0a0a4301656605c12622892984d671fba31e72a645f2cb90716ed314696005d0cb858339a3f095e0f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5a0d827f81c4a368a79e92c4215e0feac113b80650bef0d1b42464\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5fdae8eb5760ced034434338c0fd74bb77e64d618522981fbd194f2b62cb32a380\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0bf0c3023c68af0b74c846af7b62d2c35a0ecab17e5798921067a4f62a6c6a3fdc11c91bfc\"\n}\n],\n\"handshake_hash\": \"63cb190086b77b121b852af95635772903715525565a3974149458408511a91ad4ae9ce316196f9ffb2362785fe66af980a248c4e58e790fb4fc8f6191f7b07d\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944baa21b1482729bcea07fb45cf2622a6bbac1b44088ecf32957e6f4bcef35c24a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843caf699789d1080e874ad24eae35369f29ee4f99a790c8420a91013fa16b605\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"07eec058972050d21c77f32af979c0b7f36cc06c63cfb1cf1a2197d5214d6b954990f80238a84f0324f866db8540a535b7707bf6efc3f64e0cca09405543ed5b5eb591051a36b22ab98a63\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"71c4341608367cb6335387905f824ff58a83a5bd63d128a1f34558\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b6ced09d1575d03fa08436459b1c559ca5859d789b673883dff79c52e954da8f82\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ea10dfa082018962c1f519790018536ea7c006d698861b7fe9712899b9730d01a59446f92\"\n}\n],\n\"handshake_hash\": \"6b3d43f248abe9aed1301733dc1399e1ecdfcb282142b203ff0f0afab83c1d21\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794445e5acb30e0b6c2f88527f1a952a138a3a64c6125a9c79db45f739060d64b31c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438456986e78609147842a1a614abad1c9c6084049515617115840d1d79f5c1f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"716fc03126047cc8e4d7ccfb4ef3560f0600005bf67ac64301fd19dc24022daddbb34304760b5f41498916ab88fd0b70b637a6f6dda690aef589cff2fb702d2a66c95581cae4d1ffb2f6f2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3b2aeb0355d4a6bf02c01a7bcc2f35fcbcb5a1d32142e7ba19247f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1da172a45696c3a4bf67ba8737de51395326a4bba0ec3f8fcc338e70c4f7a049e2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b1658e34834e58778c163ecfcaecb2e2c0150f5b8b8f876c18a3df481f517a0a38aeb736a7\"\n}\n],\n\"handshake_hash\": \"71555334fcb525f372e513b05f8f35ae32aa54ce27e440042e95e9fd46fe7787fe355676d3c322d399e7e56a8cc2dd68f02492e478414368449672115a53b35e\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440824e40f7bcfff03267b6d14ce185171c9506ad54a89429778ee5bbf1c63b539\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a0c206ad9e9313ee2ad45056573010e0f4c9d302550c1b2c34653aa9c9aca2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6389b4a7f8296bb6c5a19715fe54ed9270939b0e4d09a802a8c5c74d75a978e52f86e74f281c5557c527ebfe3db3600cac78583c83b38fed96098da23962ceea0e276fefa8cba3ecc220cf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"54f78dbe10e8611616d4ea9290683cf72dadbd3f4f401ca33eb6cf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"653057fecd8b904facbc984155530defb172933251bd10cb49826f8168b1303a29\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d877b3085a472c3145dd0c2ef48dc72fdbfd9d58db5de06c05064277776cef775bb4323a01\"\n}\n],\n\"handshake_hash\": \"d156ce9c4e664a091d2628149e9a8615d01f363b5f9a2b3be4d1a2b3f14416a6\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441243a9c40db48e152d8e1aa8467310a3c8116290cdadda56a5df2d9daa4c7db4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843315e81a5bbba1700be89eee7d534c0fe2f10238a1a5b42d0b2c067511042cd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"65ffa719cedf7d8eb346f4a5efbfbdf5d4b91bc8ed63c76f1d453c92129b580429ab64a75794bff4de8e7559cb8aa86e7089572cb9845355cb1695bade382d0335f5ee12cce46910e4d2d8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2742a45ce370dcf1481cdf5b22289025ecd230eb9f7a144a5e656e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7ce78ef2697672b4edc730e6df6318e353526aa88095e0f6fbced35bca280b79c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bd3010e7a07f8ecce69297507d92d9629d73a66219766b8013abc7d69ae254240bf4127b17\"\n}\n],\n\"handshake_hash\": \"ecb180e5cec68fcd662a3166b6c2754e5793f0f4ccd81c8703fae83b16f85d8487d17de8dac825769848d262d5d4a11f88ccad7f4974fd0c06afb74dc3bc24e0\"\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0a6b85aef1b433481d7430dd6163fb8765269f3e84247c56b88f4d0f9b5084d9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ebd9810ac81da8c93179ddc2aa720e84e30e501ea6452957229ea7f2cb3bc6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7a633e68e7d6408622c7042406779f9793cb03a73ea6e52cccefea726a4363f0a32ed74a9a961598548ab665cd66eda53dec67887b6629f14504e6d2cd21390f15451d0774306ba37b4eb70a3f4da093a26c48e22e66ebad9794e1199d76e6aa34d1df\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1a098c4dfa1b8287a75177aba6ebf5eb9c7683d3faaaf518a04cfd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7a45e3f2a1722d7819ed20987f39344477246c4cc10aafd66fa8734db2473e8572\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ed99851e4ff3e998f5f1d0ecadcaf2a41c58697b84c3304df3e3b90833a04d746a54287489\"\n}\n],\n\"handshake_hash\": \"964171751bb330bf2ebf5b44633a6a5ed027113f01f82ea1455ee61dfa3d345d\"\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49acd2761e1467525abbbda905f16dd79e96d1a2018a6b0883dcee639eddb3f368e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a63c9b839f3b8d0ef8218d7ad1f262d8bccfadb7d9df4ce6abb3d69c6354cb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cf158d505560ff6cddd916d1caec59bd132f0299d8e49f9b630bcbd977f5f92e8998611a168f4f544e0bef8b4dd43ac229ae4d2fbac63d43413f9a7ebe2f0902e49996703a7e094d6f01d89224fac01136b89f3a8730c966fdc3c87434cfb6c8055834\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e344fd282edf6d62ffe1b667b0679951c51c31e95d3489905cba1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6fa40cacf7e3b68b8c4c49e1ca6e3a1710a6bd5b2c149f61d3cb652ef04eef9857\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eed9f72203812eda04b8405aca790c1dddba35a91bfeece189c473aea3a8a9c86ace7635bc\"\n}\n],\n\"handshake_hash\": \"1e66b724b11880d6620d6c17ace69120a474870cec1ca3b4e9e04e7c076f12270e04061ed1acc8c06512b6349003163a25125c79caaa354708289e221f6b9875\"\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a239c1f07999fbebc7ef4447f5fdc0c545498df81f363aca526333b557e819e7a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cbb31bd75d9ae0d3735a94835477dacb6e7abb33c59e08d305bd219aae5fd9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8f9c22468b313c13ebc9a4c3a073981e76e64704a57b44c3152665ec9a98b60246c619c442cbab30fd005aa683fc3c260115cb4f6ba1e9cab1a00f4108d0be536868b3ab6a91d844e2ec3831b5e2176a940a468f447a43b1e4b684228db9de051df53e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b63269d8b5066fbca95bef6d3f51c4eb2ff3acf68179168d1abee6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ed4e4e95d14dc5f385f61184703d1508678cc8237826f360f90cca520fca42a699\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ca6f8bbbef8cb158869fa3985dfb0ca829db52349cc7b90d8dd12faf35d70a00e90fad5756\"\n}\n],\n\"handshake_hash\": \"9735d45a67cf9b871560a1c1eb5b73c6549511dad09523530ef8d252c859a8c3\"\n},\n{\n\"name\": \"NoisePSK_XN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3e9b2cd708ca7228ddf36143335008e1a4727f12e886fb38b4938c46262db9e0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652d3d1201875c6d14a925f2889ba28dc90f2fc81d969fc29a07c015059184fa\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d72b59eba0c171d31d28b5365f93cbc1cd1c9023be52d3502cee11351be12e79e7692fd07a156d0f96acdc0f8dac8b52c9543b9de2840fcf718aae5fc0e8b3a1e9828095d46f6e92c3ebf27cfbc65b4602e03be464cf2fb0c9fa65ac33aaabe46dce92\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a9d97855bb08d83b166088af6b446318715f2ef40716a1cafcc9b8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"dbadf357c56cfcf9b82187b483a4911fb7bce0220440b507eadf446efcd3e1349d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb34cc963598a02d29f252a8764081a50585fe3d691ca473b8d0d691bd1b06005c56a63c78\"\n}\n],\n\"handshake_hash\": \"eb022d2c3142876e58c527c0f91df1a4e7ed562bc9936c5ef89206d9f75cf49d3f69e41225836c36b45105099fee2a59525e71d12311999b8180b1004fac1c05\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794422167765b3a92f4e46abea037f483a949b366cc9c1131728e7651a3f104f2b8b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843178ce47453a950a2a68c1e7e1dcdf15944ac1ee6b86c516f95f13812849126\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"91c70a63f05d2b05f309e71d643e31bc5d6e7c5f8a0d41a926e18e5c15ff3e3c8e94360e9d6c10e35d9218748a4859eed055430943178247068237030c267cb2da333e8bc6f118c7545453\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"563ccb88deb73225b345a56a313a83f3f641d57438dcc2a77895d7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e897f1ccf96f87003e6dffd770533d02200abc182db849eda3c127fe99d9d1ca0e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e36115fbb800576a5bade412e8a518fb23a30fe5aeaf1b9c97343f7a70188ab328c4ee44f3\"\n}\n],\n\"handshake_hash\": \"4fa4015b0d41f4569b0eb5708ffcd45266e73d0a18d3a4f4ce3e29f4e004ccb0\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794497e58507be567d673570db83afa84af372a104cd2aa271078af1136444a521a4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c8f4af0e670fc248083978e6d6595d62425ca2e58f623f9d1ce8fed82c4721\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b75309de41f51294aadf8484489b573d6b978e9fc14edcea40ded0f4dfdb0ef4fc84a6902605b7ffefde2cb3f374137d706d4f970aa9ce781ed50594f2967872d9cc43b85a287437e3a5b2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"849ec2ad717b09e0dced492d7b5ea51acae04926c2ffcdec5ebfee\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"11848bd04a45a45edf33c16d52fbbfa14bde68a9d0ee8d184185a2759dfd85cbea\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ab00fc21aee6c672584bc130f71b9fbfc2867c9fbdb85e0ae6233da8751b230b8c79a11c26\"\n}\n],\n\"handshake_hash\": \"29765349ce285a0b3cf99a0ed2ab81efc2c865dac4466dd88098a837d0be1228553ba0ddb7168edc1214bfc6429cc2a7cd378d2d1e48bf9702747bd4af19b286\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444a07cc885713df72d8c2efaa5f56a4d6e1f194c28b8f10ffea09cb27bd55d4cd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432b6c6968982d1eb217faa5c9a64f73939026994565b35c902e509c11641bbb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d2deb407f80c5e652520f705c47fb8557609591de66ec16d1d528129ece2fa7cbad641d07b37c92b8370b35240dd79554552b9d5d9a179460e2b20432afccf06d2374a91b0b309d1e6018f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d40973adcb0d6f44f973998bba30b671b841f8bb60b4f33a3dc82e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1ad126c25afdb11f00937be2eeedf0aeb0237ecb33c508deda1809c35168ea61c1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bc968d4faf57d05c9f0cee5f2921828a77f47d85c393a98fb8422c9e80ac7e76401383b04d\"\n}\n],\n\"handshake_hash\": \"315b7deb8af27243f23ab95a11d7a0cfee61060128e01a7cfcf5786d9b72a054\"\n},\n{\n\"name\": \"NoisePSK_XN_25519_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bc34e9defb3ace08041b632b87c2672b2e5b529863724fc4222d0980c3fa4508\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434fd32cb24a16e46d531455c7e594da0a9da629a35d28cf4346522ecf6c2478\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"101c6ebe6589b8c7b8df43058d31ee36e986a123cf4e7fbf726d87d3262ae21d3bc2bd6b5dd96f8d61af97b937080799cbaa05f244522e2d46d62a1b5c4ac5db24cf8e3aede8872dc6a2c6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"76a7332c5e8aa90f96f6bca1f75531370e676f09d47b63676dfbce\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d3da04c1fba7f93cd2f84632d6c9881edaae8ff899f00cb2f9bd734313469504bf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"77748b293e6d037757feb3206717f2fef99111dbe67d5fc4d037fb1a42cf017ee1b723a809\"\n}\n],\n\"handshake_hash\": \"82a6a85907018fbdebd5ef7e27add7a7ce3d8370097602eceaa85bc5593a52f2dce806507485baa5bd9dce99a196944f21d2d171f885979343881741a7b70478\"\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad8a0715986270aea04144e7bb1e04d45dda35036e1d7641dd34ff258e3701a33\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655005d226bf85a5679206bbd0ee59b818a46d356f73628e90586f4b212dd274\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fa49bea21d325cab277afa2d45ade7e6d6a1bb776804ebbc95ef28b53a69589191ea2268b535ec0308d2bc9450c19ecb458b83eb36dde41f43dbbcfa9107f35ba8511d3fb304a9cba3dae0cbaf7d5697d00da6678c6180b74ced0e189363e82c464867\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"96cc7263ca62b352fdbbe1d2fd571c2b393adf912fb04c72f090ef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b22ff51a6d72e7b845c06d7217c446bc25814e48aa0aa230c783021ca2caee989e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"02edcf951c858400364539305df671a5b5b31913b88f1a776012be3cab113276ac656507a0\"\n}\n],\n\"handshake_hash\": \"b7715532316f8222ed2d98ca4ab12c02e4fb10f42a1b037920f2af3d1e637445\"\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a57d0c1a15631208d6827d581e37e2f085dda20a2d271bec7e1c5edce5a6a330c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c83d03ef5e3df8f06dbb500046c5c9ee75a8cc1fe15c3cc88ca016eaa025e7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f9969f7e0e1a66f5202674b253e2d4483dcdf56c8a8eb6ab2cda58b4a94222e83b106164fb18918ffabfabf17938de1242ac94c3db3fe1f6688f961cd04dd000c8ca84a55941a6c6f38d8f2a67794f2c58a9717ceae5d9463e533921f460da48f80464\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"87bdcd0c344b0a22a16f65f834c869fadae3e2e3f7e1e05db55a2d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1b1b4d06a063b7c9877d05e6df0020cbbf3db23c00448b37ed58f648c016ef86e7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2074f35ba540bb5893c746cb932f5eb1667ac22e8ca5434d187e1950262b69c13850430596\"\n}\n],\n\"handshake_hash\": \"8edf226807586bd88b31e34046b92e72f2ee75fd177204d64d2aa93533f3a9d0d17051f862f9520ea9b169c1f4a84d09e83e7b893565fecfe69f640571121b19\"\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_SHA256\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a70d464b8d1f4937c3db2c99a5a62e839318a2dd2dc735174e389dd278b5aef2b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6565d51f1a87aaaadfe6877c250cb39169d5d8fbfa19594ae6b5f0b32e991318\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6d714f228f48861efc362bb2476b0fe5ed0bc5c01b95a23f14b7f677d0e0fa9cdcdd060f269051fba6e7b7813c3c8f6d3506a5b77018786b7490b98342a3aaa71086605895937ae1873c6cadcfe9a7b2fc1910199bca384051f1a7c2b40abe04c2c909\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6e60f1811eabd8784a56ddbd95a80517167037c01210a33da5a24d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"822c90acd4dd8b8a340b6c412f4c8b328b31aeb210fabe868e756598f36b09c105\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"543147b47784979b6470d0c54bf81dc35ac5eac2eac9eb92eabc253b57590cd72bb31a1186\"\n}\n],\n\"handshake_hash\": \"e2831b23ffcf8a6d8c5d789280e9df35a3fc63ed2214440c41d7993fa0d5041b\"\n},\n{\n\"name\": \"NoisePSK_XN_448_AESGCM_SHA512\",\n\"pattern\": \"XN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4cd7adf683ec2435399f753a65502bc09527da228175fcc17c28d8c830b9647e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c64987e995b2f9fe6aa9f0859c4c00c9f0a8f85027ee2681768cfddde38ed3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"050f60336a71099e11150da0b32888eba658fe017acbce783154349e7769072889e5a4bc8ddffd73ed8efb45832053ed5926b7e414e60f91cdd3c81b90505112a15987a5a89fd7a7e30156265bf520423c004473d4e91375271d0de72839b9908dc0e3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c53e89a50dd03d8d67d3bc36d8dde75e8e7726d6dfb7b50af0f222\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"974115caf601acf8142b587ae0e4927af763bc2601090073d5bb607d43a0901ee2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7a27ef7daf5551473c22a44bfc3ecc1a454258e685a6c1a1fa1e187b7222b3e9ab62c11365\"\n}\n],\n\"handshake_hash\": \"4b2a7ce31d074e13e6e7ef53f77962bed4a6cbad45f50ab423da3c157ff10bec0fa837560cd880c3d56a31822e804ec89810dbd05c32fe7347f9c62dacfe218f\"\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e953bb4cd3450eecab157a8ce632f74f240ccbdf96894814ed8f1b1f39d05f86\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884382521c3ea09af48bfa39627819b007fb62e28d7f4a39450b2b27cfb20b2658\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f032de86c8d3c2099478fefb9b2e6a1fef904d3b2470949858ae9f497ff068db631bb60378945102053bfbad68bdda9df0e663cd83961c752ce3bec33f13c5ea476eae49df95d4f6b748a3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cb54ca2168a55a150760c409e2157b9e57ceab823d897bff36eeab\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"948e26c8a5348aec2711343de8e7c8faa7cae4b6bf51e9026eab234ed4f3e8e8fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dbf0cedc457d87e0eaa4629b7167a7e552ac5197d5436a20a1b5ba001ca21116e22669773c\"\n}\n],\n\"handshake_hash\": \"6e3c56455fd34b4fc565d96ba83bba31201a61fa588c08123acebb6fe8e48978\"\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442806e28405ac4325fcf83607489496d6cd5ed9c63d592ced817f6f7d12aae249\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430ea4de2eff2cd3b1e7be5f7e792d8798b026824913a31ec262a8133f881267\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ec9136de99472b49eda3ba9fe84882d48f131b27386784b3f45e9f103ad1b6ef218b770cf880f25dbb2a99477bb220b400be54a8fd8dd4f5ba04f75d572ab5323b228f248db4aef4a75598\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d6ea0c3364ed480b415d44c3235fdb311dfa8d6e1dc1e6f3a76ee3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"59f41ca9ea14a8305bae379bbdd8b4d5cf9bd308d2d7e042e2bf03c48dd910b37b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fa23ba8af343a3934c64219d3d0206d66894f7cdb180b738324608e15b0102095ed2f44d4b\"\n}\n],\n\"handshake_hash\": \"d3aa4d482440f2d12d4fe0e13269c77306d2fc3912f98bfc26f59b75c113315ffb5a0da171c77e1a7fa2f21c8c10b5b2a5267b25c9a3c83943fc9d980407f0f9\"\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a3785af283c991bab613473804356ef6f6f2b62da8045c2a09d21b404107542d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433a4534805fa9fe4eb8343ace6609166aa62b33a49adbffaa09fcac8710d3c0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5d8e67b9c1b8e36f5dc674bc5cd2ce243fb5d1710fa57de0370da7cc979015392b410497a747e8c643b342b426b06653aa6fd4288dfd8d70f419bf1262ef247cedf3f54cb0b69e7cbc63a0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3205e1265f809505e6edc092839d3156745d2abafbfd946b261e41\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"470bcb1ae099555ff0d729500df550418d6ee5149d9e40bd2f4c6b3d263cc818d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d7187ed9d217ba6e91cf596e4871012ccedf7b5bed0d4cb8f7affb020fa17a95a23371e0f6\"\n}\n],\n\"handshake_hash\": \"c7fc7c515bbcec7001e3b09df01f4691ef55912ae6c0c1283581557483ebb29a\"\n},\n{\n\"name\": \"Noise_XK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443e6d6a6ea5368eca4ca6b98d4bb43285c56859970d46ee6022f4171cb4a28eab\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884380e1d99f9ef8a5b3f60f20288c4f38e8f42fcf5068aa9f4366c67a817d6475\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e5e11ab592a0dcd30d9558e1ee0318449d5c303c8fd6bbe42b9bdf2c38d7fb2cb1901c70f42bb460ba9ee07e4559bcc479c53ed4e35f6dbbb928b58a737ab84d5c0b527b584da087a10ba\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"56219ad4d36805401607114a3f96d3e5a07bb0f7e30201f5197024\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c231ee2ef52ea3526492d7c9f294dfbc42e7b3284cea07012c9e475bcc4394fae5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9b95440000ae4b609e7193264b0815d3231918c6dae6a9d8368818f143d84f4e7d5ec197e1\"\n}\n],\n\"handshake_hash\": \"8cea559e71a4096dbc407186e75fcc9b8c87ce7050e97f856fe1c48276273751e97a322da3d74476a588366164d4c6be188461c050ed67759e67ade22bdb7350\"\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aaa1402f8298a61905d65abcc056fe83d89d298f0c395c401542207c8cbca22b7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6511c3201cefdc283274cac832f98a1e4be1977dd103efd0da13637b95a60047\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e337abc50ba13aeb19770ab40ec61b4d28fe8469c00aba042b154c7bac799e9f93ab9511d27a1fbb9fdb80c9510dcbac94a1cdbda7353d1ed3c19425c1cb381f1fb41230585da941128bbcb3bc06a0059f9863701902aae9fb7cc3592b8c97bb506aa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"92e4aa3ab3c9f7107ec93169852ed7bae9e704d0b34edddd1c4ab1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"447ba7e6bb44aa3a7fe9b68634c2a5b6f951de79797673beb54106f8125718754f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ecb0f42daaafc529074b469cbf6d2c223ed2880843d8618a25be90ca68e442c53b81566b88\"\n}\n],\n\"handshake_hash\": \"073cd496b74065a54eddcf55968a29d50f2670c5739539113b0683cd69baf5b2\"\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aea70adf6c452b0bb148c9334320f0bb1665015cc579393df9c60feee3a045fbe\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658a6842d60b106a9e5afb2cab30c28f9a053eeb5c9e3624b28878ee96070580\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7e307b47fde68be233b5380f3694720ea3b9ac1d015c0b3440940bf6a4676de3a7842b5a2a0a7bb0fcf879a1b885abf07c518708759a702c3aeebfc04eb6ef8d6948a10e61064b27788f3013fcf278b3d2a4abd9fde5ee0b36d2e38c5e17a03f213675\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0adab5a89c407b1c5cc3c3e20bd498ec7174662bc23f4eaf9dc95f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"02f7b5d55eff453c86155f450d588754d25594aeca45d779e2589b3e5aa2b59a12\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2402ac76c9fdff51313f77ca5bceaeeb4f62daf7051dccc8e66baeb4d3bf140ac81680fb61\"\n}\n],\n\"handshake_hash\": \"b5bee7fedc1cd493ce8ba05dcb681d02910225f1aed574488e37d2599e3a16de470b8bf5c5b173165a44629d4eb00db49afd5fbac06438f444525ab83638d1fc\"\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0f65f28205d5d9eabcb52e1e007117fa0a697346718dcbf7241b7cf2bc5074b9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655b7457232da7ed63d09a78488dec08a68111692647c51a5752d661bb1cc389\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"12ca018648eec78282b45ec95635f171c8ed8f3c474cab69ca17666e790b5be2b5ec4ef70bb14ea0721f422721f81100da6cc124ba16b90c474e6d6a9b828078db14c85c336c5f22c7b5bd81a9738c0846a051cd3f105d1c6ac50058c631f0ef2cf0ad\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a59a787316269d86556c3bffb41671766547a03e36901e9a3d7b39\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3001c0fa334c17c91a7e519de17e06ee8ee51b9bf54025876264398e1401180bd8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"638ad5027b3d946a0f09d0290f2eb2cec828ef4a112dbefc50e2744c27dd08765fea299806\"\n}\n],\n\"handshake_hash\": \"8e19c9a9dd8c5ac6354a91fd567ff4bf89d9adaa550750e556e498e5d4dd793b\"\n},\n{\n\"name\": \"Noise_XK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3e994b7b78a1b7ef2e151730e1e9b02094e2cdb9ec48d5da673a1ced7c958966\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65763bc337634cbf7605308913be2615b7a29485d014a6dcc57ddf2ed9d76bf9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7757af3e5c850d86ee7c9f72cf448b156831b16d51bc6fd6d0b3568c626063c2c4b7b5c75173b1c431731897f092e5e667d98184d061b03f75c7c63f4f2c8ca1b1157438f31f61d633432f962427e403fe8e4009eff267371b0cd11571117066b47d01\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"355a0bbe56b21fc21176b270b8c673269e91e34560afbd90e476c9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da41267a0465d617ce1eacc17c2d21032b6755b36576a9486e9f6c1bbe8032031e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ebbe4a5414e8c59c952e44c9005c26d57822cdaacf147444e4f57b84e86ffe34925e865799\"\n}\n],\n\"handshake_hash\": \"d65b018632c86367a6bc2348a890ee70979ca09df1c86d88a054d688d95b5e4e0c206e74a14f1046257a8845621e3526660bd1786b8e1e320fc951b00783cf27\"\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944667a3ba0a0190f21244e676e76dee25be304f2458e578ae7ea0cd6133cc4d771\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b1fa0563f478b6669e17e4de2f06c2a437c6eef81791763bddaba369bfb8fd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d36b68bf75b56f3baaeeb4966ff05bffc866bfe909a46231511df2f143b8668fc880384a6350c91b0f6e87a2d524591abdc3a9ea5be2f45fefa2e258f9693a329c1a59a0305a804e3fc08f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1603c0fe51653f7d3dcdfee097e576f438f4fecdad48f663f2cdcd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"53c232bf486223e0db69d55acf9706013cb62e18538703edccefdb3a139aed2503\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9085d6a6b4b8ca6f5b13a2eff03947de23acbedf1b8c63966e93580f4803e16bf8465c2415\"\n}\n],\n\"handshake_hash\": \"56aaac4e3944aabc049da1df092f75b8b47014893f747a8ce9a889d84bfa1276\"\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ad6293fa1173853daa7c1d9062bedb9c2db50a586865571dec45f18764a31d0b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437bfc7ebe6ef560d4b9697f28c86f9ff53b502c028aeadcffef55585a5188bb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f0f0473709ee82b8bc32f256c4db39efffe74331e3eba24801795e9101ef376145602ccbfb9edc111c2903d0c6fd6c5995eed94b10b72fc23944b94f7e6e025c1e77e81aaac754b9415f9d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d3b1fb197c89dd57f2ad4e3aad1700b5d175ff554009c2b1cdbb25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c24dfea06769cc94d3eb5ca9867bc28d905e6dc9ee48aa989a657566ef524066f6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ef0a20ffe6430b540290012635741659bb85de0b79617a4f21ee708a74b6d6221c791d6429\"\n}\n],\n\"handshake_hash\": \"97e2c1ade726c6d862b817485a3b9ae4e366531f3c16a18c676477b40f635088e8195da7f2b74d3bb1dcad016d3cd6603427c42176dbc5269f8e8933ebcda9c7\"\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e11634ba393ac9f93896f767741fe7293209cdaa63a93a69e59e1016404e56bf\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aabea6c8883a5a6de7804420322c70d6072bcc0a3457373d3a00de891b67c8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99e0eed98437100ab575e5aa157f20ae23f024a43c58628646991c47e81e64af3162e5fa44d546ae327c520d154a1d2d6f3b803df2a6c12f39702fb863e978fa15b1332a849462e5d1a55d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c0502067840ee81f03a76badcc8c4264847069452a9f7531d74f68\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e2ce8208bd0c04c6ad779ae52b429d8cb6128a245297857e2c593576c75098b071\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5b75e02c3584b6b202de94cc05d6063970c9da7e67283c258820381207706cd767b5b1152d\"\n}\n],\n\"handshake_hash\": \"cbe4e06a17e148cfa6606a3faa33d145edf526aedd756a4dac1637ca89e53df6\"\n},\n{\n\"name\": \"Noise_XK_25519_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443e831b17811ad1eb2616b8a8c399b803d3069fc71957a6b9b8edb29dc499def8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843986455e969de88fdbb8898f879a9afe93f5005e6c7ab9432029fd2fc4ae338\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d35f86cf3bbe880a7643d128684bb756a08c2dc4e0cea86d80452699a6cd3dbd1ac0a0b817a2d9ee74429392d0f3db22e561e6c917ce7c72512c3c2162d744061cdee2926072e5059b8068\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b4de3e0f823bc2b88fea40829801d8fedd7187a6f5919f96b724f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47852c700080610dbbdfacea62bd9cf9bd4cebbc79824a270002ff040e135731be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e882e8e61bdbb84f3ae3cf926f924bf1e7afe51ed96990bc05cab5d64ac3079dad354376fc\"\n}\n],\n\"handshake_hash\": \"02417d91ad5908909fbd6887c8c04f85e2dd0ae9000630ed462cdc94faaef7da93ed656ac83f79e6aec36483109cb44c73c618ae95afabd338fb233d016a9c27\"\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aff5dcb7f650f6c421e5d5f7f482847f6603a5c68a6279b2e99b5259b04a821a2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e4ccf81bf95b57411b1dfd9445f5fd14dba06ccc7b76f2f4aa4de688be115c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c2dc1fd0d80f24270e99cdfbc893172270c95d335c62ca429c0a57fdb4e7d62bc8c2c5368c76d4fef563950379434a90f9b697072590a4fb486c720d6e55a139f11a8ee0c6d6817af391cb05434ba49e5a75b7649c916d1729fa2554d66d07f4312a08\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ec2aac37415363cd61a575c120c30de0d55e585c5760dec71a6de1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5c506f5d00ecc181f64311cef380b0a807ac9d75dd8945b5e52bff17c50b54daeb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"22d7a62126b3e5008f6a3b8f7d5288cdcc0092a04401575e326256629d98859cbc2a9381f1\"\n}\n],\n\"handshake_hash\": \"9fdaaedceeaedfa293e21383745b21591936cafd2b4e90663acdfe70c8c93ad0\"\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab4ec7ff6ec7f8e8426a7b769daf37050caae0ad0b9f728f24b1ad8234c9513ff\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6575d6fbaaae8c7bd8732e8d0e132a13091be9e0c52d93a7f2731cd08bae23bb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"40e02672b0f93171b80522214d8f1da922f8848dd1eff5d379c301129f53410ed949fa25b7ade8bfb4e3dab1da88529225d572509018e44e09458448702006b135ac06e22eeeda3f39ecc66fc4e3af07e0748ec866fef9f2d22b63d1d0fd47b7e380fb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0f5ab37507e46961ef53765696017b27364d1b79b54950559291ef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"57781b9bf8d51a7c847981f879177bcecc4805c0688bceef3ddfd789a733ca76fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"add9496c28622b223c509fa242483e0d482cff609c43fc41b95740570795264a89cd5411b6\"\n}\n],\n\"handshake_hash\": \"8cc183e6507ba200ef88581a5a8dba1777be24e0ed42cd0d0557e6a967fe64df3fcc3e12fd807a2c695ad3836651b48659053bbd564acf80e02b9397b37e4434\"\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ada2f7399c3813e14a38f45ec0e4ece945fb800604481f6d9e68abbfca12ca550\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ae59225a1a0c59c3431281bd312e6e06aef393d2f9d9bdb8673db0e6d7f79c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3ff24a619d09b480bc49d105fea8b61f409d777c478cc0cb58871ac6f396f2de5e28727ddf29feabb255db69f0ba557c702544bea1a42b1c3c9a0f21dcf175690d40752e26c0b81508660eb8abaef70e5ba2030cbd453aa9851ec3d1a7479d4355c54b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"14fc44403e9265662f845801e0e73cb2aeb9009f3f6a7619bd19c6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3a96a8c768e380978ab0997db564a6608baa525defe41d2727c2ee77900ce1ac1a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"758433c9f46b424a0b0bb7e59aa19b0d0ab0fb6df4db7ddc29509c076ee6491f387b5f0b45\"\n}\n],\n\"handshake_hash\": \"3596322feeef116a0891a668f41402bd53b956556fd8fa93036a7cc3259cac76\"\n},\n{\n\"name\": \"Noise_XK_448_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3f6f4ecf4bead8fab50f22cad0035475d9e22aef84eeb6e8f0f9e07f8db98099\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cb9e17311c5fba997b8f52608ce899b5cdc718a7b5efed547ad96045543f76\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"231d0bbbf3dfbd61a70b461c00a1343c89c2b673ec83de6645c671ec00f5318e507afed0ecaca09ae877461654899be36486e63399e1d3087c4c54b3d3cd8e0e165a1b236e92f5c01584d57481a4681cc865df43ae54fa36fe2382287cc7c295d56b78\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c403c841062c5c10f941e7abf1fc98e3184b8034a1a0b9c1b5dcca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0c81623ffe0b24e19fde100970bacc825b4336e10c0acc8d0f848c3c7447c1e9d0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f230d4475a7ba7f53b004274a22f542901fcb416f7d897d5dd0a34bbc74ec33d27a4d04a8f\"\n}\n],\n\"handshake_hash\": \"38aef3c0539bbc94b81432824908a70c1ba0f63da7f809aee4a0dd8db7d445681854c1b5b433e0810208a3fbaf0be5e4153fc1b4f1e9b4190a3d42a60d54ef34\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cba82e4d0825667a37dd68aa3d31ec5a55d77c6c383413184b95230fff75074f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437abb33fbdbece80d93a414ff40e60d7fa630f43a6c3712fbf0b58ceec931a6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3447f4fcf4f7a15ea8349ede4055bb4e7b605a69ff5f3892ce1835c5bec385c964f9e44acc15cb179bacf69e325f6c281e20cafe47d2a8a805a4b825a3d37ec942b6d97cb7ac4275ed3b2e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f9b2b92a0c21e29bbde245e22ad02fd67ab490bddc0711e54d3231\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"befdc98d5dcdf4528ff3c0c0dacbb9e669ed45a8d1ce6b409bbd14720d63941107\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9f4030a2bbb3755b0e89781002a660b48115c97db9d827c0ab2deb3e1b092b42598ef535c7\"\n}\n],\n\"handshake_hash\": \"79267ab15d1c1f1355fb1f595d404ac137243abdb0854a4329fe810fa31012e2\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ac2d1fd2764bfd6e1ff74d9935492d21423eefb4eaf2c092f113d338f43c53dc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439f0d7834fb5514871426d4bd4c3ec71b1639cbff3db660579f7c2b64255ca7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d2fc3d6632bb0cbfe3068271717ade1726a0b77c8b2eb4bfde8f7622c8d61ec2869cbe48d977dcefbee1c15cb7ff052fbe2aecff95344567147d55d6ccff571b2f6d7e86f6ca642449167b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c95c389bbca1f2fc512d8413f403f649623622505e0d6eb9b2b497\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0a8e3f07b2fca52b0968c27f1d1e3f591bd0ae0cd361225945d6d69ffa4c65c3c2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"33c248c5aefd951257f92d374ecd17691e52644df0a97b0f76d144cf7b555f4276f2076e65\"\n}\n],\n\"handshake_hash\": \"f61a39eca24d5351a8dae7d8213dbaecd8fa781def79f5fb8ce540715ab1f7c4db3064f399065892b411dcb15f0fe2e3901c3fff3b1b6310b7386e978a4e424c\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447d1987ddc6913f3f157c89f9e0e3f787606f38d5b8c078b157ad1cb7aaa064de\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884378cd5eec8a9d390b088f96e1a72ee52e34285eeb8eaec7debad808da3b1fbb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cc55178d8a8f140efa9262c80861d6ce6dc93907e1939366aba7dc486023297430f921f005e8e65c1997f32fdc5b0322c558c83c0db537c36a90466c198be503a5200012f10fc93871db0f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"419627a38bfebb57c649bd07f0c32aa81953030e2123ed5e2bbb53\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"206dc5d96d7f5d74766e9d9ae17f9e2475ae022302f3d806f4d15c9f4bab28647a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aade3629cdfdb5350ef272c1ac1d30c5f526bcffd882d74345a972a48033b5fcbccf684b62\"\n}\n],\n\"handshake_hash\": \"b0a860243ccd3c73f1a806a3e669afbc00d61a818c28c8fe25511e77d2849cdc\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449ff441d0928a486d98d29665d67b8c5595cb6a0064081a1eb11e5c6f2d9810e0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843eb52287eba4bc0b64dd5994fedee4573e8aee34572d88d63ebdded62eb04ee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"96556318adc9bc4eae6052887de78a33c55bea41c3c85ac633e8fbac7d64c80e7c6ecb91d3e82785d7e0223479b1af96c97ece1a6d399aa0ba888f69dcedf5ee93c5e877754f4cd7c90f52\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"39513596a42bb437e2ac55bb31a19305726e89e4d1dd80ca83e990\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"adbc07e2782a1fadfa5dab7008bf553a9ce25d42a978f4982b66f5339cce3545e1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1f5de0a93af51e11fa31e636a86eb2121c9a8183b8534b445c1c1772be9088eead387eade4\"\n}\n],\n\"handshake_hash\": \"2c2108addf529c34e78e15cfc6096507ebf9211b7d13f19146e35964297ca7d3e7de753b04762c2243b15c740777b6c139d739d35b32affa43b0e9176d708bd4\"\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1a7218767743a68eec42f6db8d816883ff9a332ede707ea4a5ad523f8c1fe28a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6535cf2c246ea04d587f144e0d4f5f6763da9c37cef8834c7f70a3b59fa38f2f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9515847847de16773bf4f1963357f1e3e92ca80a66923a950284bca36b6b3322b0f831c778598985d3a55d8c661461519700900fa9c54caeb3d20970a9fd170952ddd135ac0e7a4c64bc371a9c30e24f730843c089d3bf14b044337ea4142e950ad4b2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c1cd8a8ec653428f3e02b9c461c5aebde4b6fdc203f0dda9562646\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3587331607a0606d2549b860df2003e2b31610f5ce18b7974c67a8f2dc6b33dc5a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0d9732641713c163257dd6dd5a8bf1439cc79644dd6e58f4f9804fd36db67e300cefdfbb9e\"\n}\n],\n\"handshake_hash\": \"9e8b169c3d016e6e7ba96eb8b5a5d26f3eca8c7ecfb3b4e7dee9a42b5ea3f891\"\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9dc54777d15335f46e38df7e16375e83d4a63779603847c856fb2df256f603a3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652a9c45303d125e2d26ccdcd88934bf3c9bf50004515a4a024b929d2afe9190\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bfbbac4549b062eb6a740617bc6d6a9ffef76c2f6c784a19a36edf944275051619d132cae6f1b190fc360b3f23d292a5871d4a4bd8c40ff8eb591a428cabd9ebd67d5020567eb85d479f83d9e9aee6f3ccdfa48c0baa0a03f74bb012606e54090e583b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2163cc207fe87b19935639f8d2614ee7165b26abc891bf96b3d5ed\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6f2ced3497b08bdd829b1075dd78f842b2dec03f4193163628ab4d56922eea1231\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"003af50801d27900237cdde13d7dfa21014b4e2db2cdd1f93fbcbfc316d388738f8b68d471\"\n}\n],\n\"handshake_hash\": \"b5e0399abaa416bf0e2fe95c0ad13c7bc737cc85ba8201580bb27cda85ebc7f5e940b1c696aa5ba8500b96a7ff69b4465dcb0ed1814cd31ca7077e7afc4696d2\"\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a33da06c4e5ade28ab5f22de16730aed39a4a4f893e22f44d9c5cd096791534ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e9e790ed06979685f937c868a2ab0ac623e80c9e3f1797d92055bf791af7e8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"30ec2ea3a94e9e51408733fcc86d24e1a18b599facc43cb3b9f906137baf4748d68c13ca93f619fe1b55fe4dd5568c9724d689da664866662897f079efc93e2416109eb3f974460bea2cb2a521af72a54cd1c990262f424623c1cd0c0f111fea6b1769\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0784cb80b497cb5a504561a27fb31530f606fe1d932ebef74cadac\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"45ab934e09461535b5cfd2c5d31ce6c1c8e2b67974a6f5ae795580489f60777f56\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bec3e4bce2623d57504cf3968e8d16bfa27fc2d87419924bf421c0eae28e563c3e62eaa0bc\"\n}\n],\n\"handshake_hash\": \"b29f6de9821a0c746422b78ba85c95b5b663146e8becb9efa8e7d164f87ac462\"\n},\n{\n\"name\": \"NoisePSK_XK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0a721fff289e398975684451e9c921135d8163f77d9153288290acd5545fbdc9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652ef44f17ba5487ca0baaca1d86206860d16b24fbdc0d6174485b4b5c47ac84\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b9ffb03ef0ef763fbdf886a1da8888c28cac88e4bcb5958a3ca9ab4e659e341596a801373fc57e4f2a8530a43ef84ecc540fc955c6826d223d54de3ff9cbe7c6800e1ec6eec077c2e6b6384347e594edb262dc33f9df30e3e3a6fe871a56a4e3b01d57\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"89dbc666b79ae5fe1765e9d66b331e2be2a2eaf94fdd32043bc698\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4d2b59fdd93ed385995726e0ca38232702b2c4014a9ba2809c26a102f575bfa4ae\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"865378939b165995cff62f6de816b54ff104a78dddafdebd10abaacaebdf439ea22d6be3e3\"\n}\n],\n\"handshake_hash\": \"3219c68e76c200e4027c9370e8f80571eb8d66ec7e441fba04d61e855f31a621f42806c163899adade906949f872e4570abf8a8f1e209aa6179a16539fce27b1\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447e711c43c97783418a7b45abbe8c5e7ad1fcd742ba5488f03860c4a40ec0bc76\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434629dcdf2ad461c9a805b0adbbff73cc2b7e445a2880305d03f2a656602797\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ffb2df7e70177f3641cb0a2ed366f8026e1507057ca4b1b2a3371cb59e25d7ab66c9a2379dd136c4edca75508d438f6ebae370334f04813b14be93f4fa3c32d0e85713b947be200c64796f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e76a722ecba1cdfa8b194d1e80cf020fc0da600495a5876c1e1aa0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"583c6b4ccf8477d9146a79e46b4fab080dec12d64595b3c26cabc50bba1b9dce3b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7a4682154ef125aac2a320fcac6ee51a6a002151495a4ef4ac3c84dfa3bc6f7c9d5cd21843\"\n}\n],\n\"handshake_hash\": \"33605da0efbfef154d84e56df6b3f59db2e081a23628bfde673cc49e7400001a\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b90ab42121ae75a79c2c3e9b719abdd4dbfc3e0557df34510ed2c59d39e9337d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843175bfef765c28c74d0dd409e03a8f0d147155f5f6b7aa707f443f215461aac\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0a00a78505f2cb53dbe288e55c0391afa9323c3902d69199839e18c17314b5a4d5fcf2dc5ca9dd88e5c5693a73b6c62d7ae1cba14a1fd658691df52073c71c4d72ee1929922ab68ac39a51\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2d1003d4d017fe77f457554112655265caf271163c17acb59dace3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"69864789100d4f2a5d2f0340c5d780e21fd94f365bc81f8ecaefb3d95575726881\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"240abf71208fa19f7ef219990f0e5fc68d260cf7640e9132fc7319c190926db4056cad62f9\"\n}\n],\n\"handshake_hash\": \"27421c7027be9aad71a932bb6f8cc0d385329b5e36026043b09fe0c4789077888e15a0bc6d682750ee39aaf0c3722d14752cd8e164904a73397f2043f378ef06\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944532aa814afa6b27173fca02f0ec83d3a904363acd67d0c6b2929b35c22742776\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dc3381704a6ae019b955237b1dc1440c29b11ac83cf4c2209b272942cfd7c1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"56ef4c1081e8bbe8d94fd0228a8589606edd36faa6cc8b75734764c2d5b35512afa18caddecb19fc4867d777c1c8d05ac11622c503a38d7142e0d056598b33df431f8c445e106472b4eea6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cd630847fc92e9c1b38c5f75bf6a44ac2eb7234177ed33b0630289\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a7bfcac8c61f03453ac188e8920cf31b63414cde95f68f008aa255604e8c7fe3b6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ecf2d5e58b423432249c27b01f49cefb4db164cf2c342b60afed277dcf7c7880063d5b3ee0\"\n}\n],\n\"handshake_hash\": \"88b9e67b602cbd484e9ed836a0290dede43405b320bf7657a15d625a35cf45a2\"\n},\n{\n\"name\": \"NoisePSK_XK_25519_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bbc80cd7203571defac7161e2f8a61972c398f74fd98a760275f3c990c58a40\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d2a2a81f2c5c871d87515d2cc64798e80e1d51e66369e75d4b26a612d31244\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e9879f1410dc1d33e121001b8132c9cdbd2c207d3dc683d0999e9f0735e16ec185e15cd4265f6a0253c29999f531e1b77817bfb109615936d9ca9e6a958446dacb6560e780acf77b4ae0a6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db0af71e04253cabbab8dfb49aad2fd1354851d0eddb056b15b979\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"585032e53ab7f5033643b6583faae11e2936ef3ee5f844408b289d9b7f83418a58\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"23093a23a7e6c2e83b4bdd4e310dcfcec52f3b06e811f83b5c3585790ac1b99f5502c25a1f\"\n}\n],\n\"handshake_hash\": \"6f9e6401ff9bfabe5dbfbc4cf6505ea8036caab264c8ad50b9a8b3e339351c2876da4f99af86484f83c3f60523d38bf532a799b63663cc614c81c03c74609f3d\"\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a64b6acb3d9a740e601d583c6e107ef7e2507f66d7552c26edcac658accc0e07a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65580b9d5959645be2849a245065723b5f096ee373177d3e128fc2c745211cda\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"018d31c9bd803599de31721f0a3445e4a529e326410de7114c4371304ceeaf87ea756feae7952788258c135a7054fa4dacc76a3f5e1093562ca7135dc8672b9e133fd6a1303df8867814cf888c81c55e6a400a4ba3e6e281035fe70f48a09e51ef88b4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6696ab18a2d19b498a4bc1a1a3c8a96e50564ceda6bf6d05f1a7a4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2063856a69a5bcb3607c4b32956b19c50be5b7b787f5ce9023276ad15b94a76617\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9d5454a97ccfc8290a84a604a42d88d5f831ee5211f2c18974774e52eb784bbf0c35d31aaf\"\n}\n],\n\"handshake_hash\": \"d2258034af7268b75d5230273af0f5bf166e8cd0cd827b4dd592342c70936cd8\"\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aaebed4d007428016e7e06dfd4e2a48430b13329efc34400f00ca1c3fbfcfe814\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650c4fd564b1276580ad16c4154db7e987ba2517feb6ae14c482a5ddfd1adb99\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"39dc48f28e77d8fc59e30481745456a020583255a57a7f3f210688aa53c9435731d81cb20c7b02f7e709596a276e8d27569a31c9be191325f73732aa91496801526bbf9bfb7f24421b28aafe2d512df1621bd7d67a156a96ef12da8aadeecec995c2b1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c5cda10e1e29c958aeb04ec5ab705810a27d0b84cd82849557afa2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"63a77567c879ef1c179233320db2dd5354726ed422df23e8ff5696358383423ae2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9eb8d6d5e10e7125c708a614a36dc54656c32764316275bd6fcc2cd9597a9691f92efc9ac5\"\n}\n],\n\"handshake_hash\": \"0a45bf9e705799a773ca30fdc9de5f365842f2e767ce2a8c7b99bfd7ef3f4a00b2c4ee1d27684c8c3cbab7123cc36813dfd3d69e851fb136237b654284f8e541\"\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_SHA256\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1b4c494166297975d690e0b42f84534a641b0f7fa9d57b2c6ad6d926fb29872e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6530e5e2bd1418003df901bb073d35979fa4fd0477b4b51dde1a2848d685c642\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9f7012ca7b3883f941f4beff863cae4d9ebfa4b41978a0039ad9d11ce524ba29c5e67a27bbdd968ca2fa5825c480a4373674f0428350cdae5ade2b7861c3d36af1d181ff54c9b24cfd8f98267f5d5104c7288d992c5ca6aeb062754b68b169aad04480\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bd4fb2d62af4d31a55abbe47bb25179e5f76114863d4500634cd98\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1c19f84ca63464713d202168f31372c6a4d7108f39f4d2e4645904da157c0b911a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"becfd7d707ad0437b76f7288545f5fa249f00d8e9f5dd96afe647087ec41d23663bb83ef5d\"\n}\n],\n\"handshake_hash\": \"4e2649ea8923f0a0ac4060138711835de834b8b8650fc08b42616949c25d380b\"\n},\n{\n\"name\": \"NoisePSK_XK_448_AESGCM_SHA512\",\n\"pattern\": \"XK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae16ab076af9d71a4b582fbb2ec7d5efd8415d859a5323195ada0fe2fe0357641\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b627f1a1c40fa1573fcb55fad69eed316ecaa6491d80d15f9a580825c62b48\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f96f179958c527690db5127f899727044c6ef899b6c568931f6b7d2a809ed70c1d72c77651916e6093ed8dacd7443ab9614cea80ae24034ecc20930811eb197ce4ff15da566d66257290fba142920731d4601aecb38281ace76f9895a9d21af68c4ebb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ccb72ecb579c18371a71d3c852087dbdb6bc2fbedcdf7ad427ac6e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"74fa98f1fd15a3ed4d1716d4606ab0a8687db7d03809e7c8c1879c9efcbd272c3b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b2a621e5893a557a7f807b93433462ab5ca86574a6ad89a8f021bc8a7b6101670986b95d66\"\n}\n],\n\"handshake_hash\": \"5415f22226fded5270d43b0342a9c743ebb46f70903644859f68efcab2e0bb3d5dae5ced977306450c7be20051dbe6777bd4db9db6a70cbff02699216fb6c1df\"\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437c365eb362a1c991b0557fe8a7fb187d99346765d93ec63db6c1b01504ebeec5a11745edbea05ef4097ca82afe861d8aa196a6cead1e11b2bb13e336fa13614136f53e3d34be699da5983876f700ff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"46c3307de83b014258717d97781c1f50936d8b7d50c0722a1739654d10392d4176a11f5a0f70968037b0e0bedf68d18d802efa4220cff733e7b566970e749fef06ea55e598cdb819d0a33e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d5e83adfaac5dc324a68f1862df54549e56d209fba707205f328b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d102c9029b1f55c788f561ba7737afbccef9c9f1bf2f238167fd40ba9c1c134867\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb1ce80960382c6d5d5e740ffb724d1432f0310b200fb6f8424120f506092744baa415e155\"\n}\n],\n\"handshake_hash\": \"ff2542ab6833ab2243a6a19599fde5e2b2ac5a6dc4f34a9be3046233fd790d41\"\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430505b6745ce64a5f33f0e8e3b83f11ce8802bca507f4f2d8b564dbe277e1966157671ea3b8853f41ae9fb01b5198b7355056ae1319469b824a98d54bbaa82c264bbb329d7b104cdeeda568b40a097c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99579e1c1ee15e422a57ddd6b16d37087b17558e8369c18991b4b2ca3a824abf55433b8625300437ffbe733f1c6cf40b2de039eaaf156775e2d58021e5d46b9cb99b280c73026b50f27736\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fc56eea290b3f3a21aac0c70cd5787b5ee99be37d2f4d751329b55\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bb31c9da10d5639a4cdb88a12f5c61de41bbc7df09bf75d94f8184fe4157f5c68f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f6199cadb152fb27f82be0a0891ec76a33598ae92a46cab2fb5a8ed5bf48b7f267f8370af7\"\n}\n],\n\"handshake_hash\": \"7f6b8a1de1faf8b5e153ded74c950d09c5caf62a8e2eeb73277671d4e65ef9ca2421a748a4af050284fa6f3eb40bb77f4ace99b7f3ea01db2953233a546a72d2\"\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884381cbad1f276e038c48378ffce2b65285e08d6b68aaa3629a5a8639392490e5b94a6d8798832d5372f220f161d9c2df035528f8982ffe09be9b5c412f8a0db5d21351f20af1370d0bf8ef1a8c59a30e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c7195ffacac1307ff99046f219750fc47693e23c3cb08b89c2af808b444850a8589981dfbd651e6ff4724a781cc2aa6158c9fea0d4ec82a286427484c5b8c8123a7a6002b1de9f9775fc97\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"96763ed773f8e47bb3712f0e29b3060ffc956ffc146cee53d5e1df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3e40f15f6f3a46ae446b253bf8b1d9ffb6ed9b174d272328ff91a7e2e5c79c07f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb3f3515110702e047a6c9da4478b6ead94873c11c0f2d710ddb3f09fce024b3a58502ae3f\"\n}\n],\n\"handshake_hash\": \"852a28d2146785c54bd8334f4e460c80d7fe4fd0cc5bc0abef2a24a3c4d44d5f\"\n},\n{\n\"name\": \"Noise_XX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d7c6169611117c6e843085d5ec1af406d58f75d17052f76fc87b7e624027b002af87aacae4d3aea4dfb9236c5b9836344c0f8c8b8a83eb281d131cd231a5f323196526dc323212216e30e4b948a37b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"438696ce0ba3e21424cad39c48b89839fc102c64e3f3e81b6431c0c915d7983dc1bdea9ed43ed2ebd3ea204cb2652478949d3e1dd51b536bfda2eb294bbfdf4294a3287864ab2099f5fdcc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"56430f48030039cfd44539edb61a3b87e1cd461a765cb539c3f4b6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0709391497714d94a8f62959fe15153996001daadbc1dec326a03ba8ff416b47f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3d5f431ceee58c3ff1bdcdf874aaca9f564b743286a995ed03dffa8b65f33ac45c8c4b196d\"\n}\n],\n\"handshake_hash\": \"0e348d483148828421c26748d7c5d79866210f3444a6431c99199d7f5c518691b923624579cd0bd8a55b1adac791401f48006e0ef46d8b9bbc6b52b4a1010b03\"\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657d2aa90e1b30e898c03e49f761318a1d8ee26775698c2aa63426e920ee4ce8162ae89e191eace820f61bcba5ed40b815c3333bfbeda8406ed52b5986a5f76429aff14a53a93fa95d06d8c27c6d432a5fdc77e6e5e7cdcb9757c6e2b7cf37442271736b1231ab15\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1748e3f62df314b65f950428dc6a5f3ef2c3f73bbd2ffba853c2a7a893d7e1128592d61a53dd7939a3d1223e6d9fc939587119286752b165bc09dfd8f2739a7eb353e6d9a9812256f81f5e226beeff4715ef7434dc09fc93f5725f9a925ea0edee4153\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6eb0b5ef812535f28521a69b99193e97b9948ae0d8444347451384\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1aae55ad9b0a6e8f7040247d3cb7b1606f85517238a69874227f6f4258d6ad35a8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8fe7803f5cf41c1deca1320c74b64640a10d0c26e22e60ea3792ced93c8b2d94be537c2c35\"\n}\n],\n\"handshake_hash\": \"4d8606b2025e1f02e6af0f536cac4fa0e19b991d2b62be3eae08d5126c288af8\"\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656b7b04c0e19828bc0ce30fc7b271319f645702ac2e6af3c00f1f57f18fe3c9754a6669fdc0b40fe7b83d5e1eaf67fd960c125327c69bf835010d52566c834ee74db5693edd33cbda3eb31790e63b70cd1208297d5e75ae9d35d940953f429a60e054b126d22385\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4d30fe9c4ef4135d17c4b5d915cf1b9d88f782d3ce4a022b0a59d6e780baf549b8d1febf5be8bf12d796d2917937dc589f8b46958c1fc4a23345a5ecab5b10137ea9d2ef33e1ace7d0a1384b257605ea76cacca6d9e6645e63d04a2648524c48c5865f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a6bd6852849d84d9ce24d818359d748fbfe6e9b44b297516790451\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7ffc6ec7e1d7af42be95acb9215669addf2d569255f706fef6e2c20704129f34a7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"29299b1184c4f91bb4f7b15921dd158ba88aae5f8016d5f921d39a6c98075d229dafc4ecf7\"\n}\n],\n\"handshake_hash\": \"1c7b6e76922a7205aa17be2865bc4ee09756fb6c389df4fda40f933357b4849544b7c8a4ec394a5f8053332d5505fe76c187fe8af1d00a0dd433a2b15cf59c75\"\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658269b54af7a8bb4f35fedc879516f10c1034ccd93c408c2c388e2f6ee009f4b7bcfe41fcb48c1804b015b37fdc0c814d67b38ecd28e1ebb447da6f6d9ae1955ae95f83757e30e799e5bf037a67728ba842a220711436731b4f598bde883f599c64a0de12aa5776\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5b1ac5d03deb7cd4ee5ff337d5132b2e5f8e38e0cc9555dc4929175f4e963ec9fba27b87d9cb909af7648735e5ae0ac529e7a301c6cc7851a0125fea37ee64ad9d3e5afceddb3effcadad144b52a6094673ff2740a1e8a31e5d37d5ef9301a6a028447\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e6004dc4d3cfc226ffa474dec3107d6445204c4287c7996e984985\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"76b0ff01e9bcb3dee7fffad8955eddaa357d5eb7a7376debe37cf9c62aaab2e183\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7fa78724e77de8209256327c4d5210c4ff95117810f5f4832a7b5463049bdd33d042917101\"\n}\n],\n\"handshake_hash\": \"92f5d1bf714a980ef1a8515d6ed613459b558dab759f931edcd281df6ef49c19\"\n},\n{\n\"name\": \"Noise_XX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e97ed56bb229af09cd5a7853fd48a0a764b27663602b4774d42e7c61a3cce33e5c7ed3595135578d9c620976f42d01273f17242291e4a2f294441ea62e561ae50d774f41f6393f78aac9c9d4bdc18ee6008326dc2b736c575315ce0bb5df7c1c3b5d7280c94820\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7f269e88932739be86484a89fce5151d0afac70a26384b7acbcd76fe782bbfb060ecf37d59e8a0223fb9aa890aa6ca472cd0aa728341db6da2948511167a1d734f83945a1cc7e5a473425b9189c9e8567a11a92108222322b3e1047e796461fb872e47\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2b52a782a91f25f8a4e0520be46b344531308a3da31b4554bfef31\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"832bf36d0a584dd31866ac80425b0c1034d615fe48cfc47254679aa801a6372bd6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6f853b19b1eef37217d3b0c6aa81a3ffe1357dd6af97a77cfe34bd17c0541142f68419c59b\"\n}\n],\n\"handshake_hash\": \"7dba392488e7f43ba7c2a83504734c59e167760d05eb61e425c8cc9b82c9d85a55d45fd2f96fe36f8f30a9b5b0d93a6ef43813af5570bee16e21426863d744cc\"\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843634564bd977239d69da02ca48e74df0b51163816ee3a23b2b5c18f070438f510b13e1751948a3c0a965e2ae49b3ef649854e385a4bd05b23ffd951e2066261d5077f946e5fcc5038a99a19ddd4a02f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0bdb0a4fbb0c13bbc9974900c401a9e84078cf813ef0159ceea5eca94fca40f4d7ea79f2ea65bbd71aa7541cd2a350aa9deab76fbc9c70756b3efcd936aa9df1f9165501100ba84a0d8fe0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bda60d063b3fdd955d4d8eb1d1d0f2c7f446d29c95f303724a9d99\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"18bcd3467fe240f01369d9738b2ab0aa8744ec9787e5838019833e04095bd5e964\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d150aa092584136a9ddd3ee7573ab9e2d39ee6d817306fdcaffd4f4af41bedc2f767530688\"\n}\n],\n\"handshake_hash\": \"4063c9b72b8073f118418dfa6453658e8b93cca4cf64c072b3a98274327ba85c\"\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cf031a86733a890297fda30d4b471d0ceeff97124c67a7b656356862398ad52e4c628bfccb38ba4ac02432e68fdbf7513f2cc8f5ebe97a7feffaae500aef49e8e0c6135c737b0ef7a147d8421964fc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ee1c5e4fe3060d7014884f9328573c4f2e3c5593c3ef574b418e8bb397792a77ef7f69c521aec6ec77ea14866c74eb23d289413105384ef27380716d332b6337253a59d1e9e24ee8cf5d7b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7ab9b6ee246550448f838ec94ab1c3cb93e7d475dc8aa7434e6462\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3d741aa91dff33adf4758746ddbf2b6afef8b64768b1d589e6bd999f7e7c7e4287\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6645a432705ba19de0dedaf6c9f2c4ecfa2447d48eac868bffd3ae8d899d6656a0a00c5699\"\n}\n],\n\"handshake_hash\": \"c69b86bcb1d164c3e47a3973bea8b2566e0a35498b1b2387d8623167e4bc99cc599f130d7add4e6286a10b8679de12bd8a3aa94d94e00eaaebe2cba24092b551\"\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843757117acceb05bd7a45733bc22015c97a9d0cbaf41b80446d5988ff5127235d78c9ea8b1c117179204c8a49f9a83a7f640d01e028ba793fc059f2724a83af08e993c1d87032f536390f1d612be65f7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c90f1cf77eba4e50edb038991565e36c9758943a989229b6051244dc4fbecb6928dadfe5492c3bf6aab568b11ddc6ebdcb6a328ececc9ce6ce84c336e421a792bc6eaca1d9d2c93636f8ff\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bc3fa77f6aca3e8466d7dc6bea10013e88a6a29add5132b461806c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"250b01074cdfe0df2ecf8ccbf1737b15a2ddb5b52fd9a396604e9c793cee3b3bb9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"449d4d433b3cdc3d02bf6fc881774b9df54366ebcffb9689bb13f14709822cd7ef42bcdb4d\"\n}\n],\n\"handshake_hash\": \"b1fee4b75a0da34a3d1e338b093de8e46801eeafd1af0a7185b020cd27007ce4\"\n},\n{\n\"name\": \"Noise_XX_25519_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fd25f21a1797f62ac8960e3b8b37ba21dfd9b202859ad8f0011a179a0054b502591125bacc2f4bb89f29a1e949f53ea377f36ca8b1417ec18ad342d9734eb9a5e2dbec22d66316cd9be100de7e8428\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5daf793909ca9cd970345c1bcd7d1612278fa941d8f62761bbbe278b7a3130c67875b9f2e8f138481cc89970713cf1a345f03bb3389cc0a1811762ddde2a7a1a5ec5b5ee51a9b3b7e886c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"11a6e4405bf638c751b57d0714c7b5138ab09e939c345d05a7fa6b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f2b926f127ba4ba6b40dfbc86101b20bb120f8d59a5babd665824d9dee31571af4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3e4b185189bb0bf4b535431344ee0726726f8632ba59b78a6b0cecffdf00b7dfe28320dc05\"\n}\n],\n\"handshake_hash\": \"2bc165ee8a003c7479a9cbaac07d7a4c5201ac467ae7adcc6a303c4b6f2af7f7241119189e42a6761ad6b9e267912b337c4839b357f252d4fd151985aabfb144\"\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a3bcbb2a252517c5ba4d4c27c8ab2d04731351eb766430aca8f82f973af41e330d833b350f6dce9bf06aee6b7822c6a14d010ffb8f2d791574a53662517b97e66117dbc671dbdaa5df04d7bc5b0b36a14920d8d454e4deeeea229763744ea0dcaf065628eb6515\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"68ac156bda3adcaafe3be69565704482bfd36088246840ee210d636030ad235cfdcfb42583f9153c90883ce1a71b28cd7c35cd150ce1433bf2b2d690332fb1e6355f5e32d22016cf0eb2d58aee5127d3cdfced3d61a2761eaf3b23ced4ab22d44365f1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9d73faf3e0e2fe97ac976166d9784078a639b39bd0f9dc4c6d48d5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a47440e5ced3d70b7f261dd472854176a73502d1f563459368a4aa82fc114f9cbd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"543ae48b11e0ea26172e92f5250a86f07aa98e625e49863eaf849cdc59772392fe21a5af8c\"\n}\n],\n\"handshake_hash\": \"9bc90ff7a1be76450a3d6f61a7417f0fab2edd36d395d1c40cf3415477ddb26e\"\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656b5104e88ec0a25ac061a7133a6b2a12afedb990b92fa7ee241d13da8a48175fa5d88b6abd5976ed4790c183ff71d96987fdfd7766f2974e9f3ccf7400058df4f0f9b67a8d80406587b80a3bcb5396de2cc0e3d78893c1e5237b940fbb13c1a6bdb5ffda7a1796\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4357707702598ddf4e18ec9089761cab124d2c31627a76050793eb8a3791116ca76d3aaaae11636d3ebe4670bea7a0c7b067526bc86a0774af3044553c2bd5c654164d074bac595701c7e2d79e80914a4eef78f18864e6f6a8053b41408b71bb205799\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8119e4a785938817853d78e89f75fdbe5fae0b405bb8e06b1ee8cd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a3b8b306337c99689970141d6e77db43a61200c1f5b0b37acc2f37530a74b0df8e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ab3792ada0ac0189bf18ec919f9106ff028a1e66fb346e7f02c850f4f6202e03e27031380d\"\n}\n],\n\"handshake_hash\": \"c20570d051b1b9ef4b9ee1562f171dfef86b7c1e6a84482fcc447d32db8a8fcb2e83d6f017b85318c991aea800944ace42777d87a211b38768ca466bca94cb20\"\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6505794a84d0af56738307d215a9ce0f4f30b078da97046b9f957aa8dd94bbe64976d49463f40a4b2a7122c3d416d4097fd0a193319783da62aebb2ba77259e28a8de476ec25977bfb4424d0ee631b9a4cf84f0972704fa229620639f814b06c965972ab960b1c42\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ce28d208639c5e88a34c4126d794a0ee24e67807a1ce86ec247c4ce047f67ad80e203768558941ac23e7b3282bd4e687b9d3a7759cc6adeaf32a935632685ec3d735dae96301a0fd274772c01212665f1df16eb28f64f7d678a12e5834b748e31636a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ac14cea0069ab0991b0ee1cda77f29db88ccadb48745e6e9ed7d97\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d3110a51d3b9804d26d1b197f03a3b894010e5cb1c2520b9042f7a76ec709d433b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"76052cf75d7468cf733b9394b40c05b54cf28617546c4902bb134ecbc2bfd4f43a96faec27\"\n}\n],\n\"handshake_hash\": \"ab10a9eecb1858c3806419e105059ac2352a0f36b7eea7f961ec2397fd403589\"\n},\n{\n\"name\": \"Noise_XX_448_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655a4e3c3b3e28088cbb7356574405c5b5a66de233a533d2f3d5a49415252564497cac366934ddb6d14340d5e799e8217c1b864824350a8f240043ddd9ac700bac25b0aa46b4748bd17124cd0dda5c5cb48ec3010d1df4d1a876e9a127bc2a8825c9be2c3da411ab\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cf6411586c1252a04dc33ef6d3c44cd8c47896f889e414c180478298f06d1dddfe3bcfd4391cdd916d8decff95f9295cceac6be376aac2b2d8af67d3818e3dd4b3d7e64b4cac39252cf36e9cdcd6e44d70776a422c946785c6d85a005a91153e3fbd9d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4cfc885a8ec3e55c07a8f468bf36c3c222fba3598cebdcf4cdd6a1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ada1e633a5ef954ae2371acd9858767e4dee19b1f3afc1635fd013c7714aaa0cf4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4070206c3af79f68a7d9f0afac22bb32ee1454baa7c27f52e45c79ef64036c4f7fee71d194\"\n}\n],\n\"handshake_hash\": \"546ad3a1d7686d0978c553989e7372ce95bf58f4cfccc6d62974aea3707550443433b1215be5dae09e82b53061166e4ce13e720e3643ca743b76db13eaaee311\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447e2c06c3bc25d1e342ce7c58cc8e4d5bf94991d8888c013d81f6f53bf014976f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884380eebc8920b7af270062717c87958df9248046be101ab021f2e3e513165fb7c61b723df251ea4a76646e6fbc68754bc8e70775e5ca24e41b7bf3766215146f123fc21f5534a1c33dac454ef83d4204\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7df832cf44c91ed715514ac52ba7983d5318311ad5be735ebb9b9d8d6cccba75cdf13c119ccf562012b8ada03ab421e84596883015e588c890a09dfbbd4a7aaed45dd1db9413bbcef29219\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6650c5e91316c63b15d4c829a3f881ea15922a22b94b67dabfab16\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"721f6b14c96434a92c37361f1ac40091a75a347e94c4f87ac466908aba92c3c459\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c86de311bc0b1d75580a974434177340d32c76ab6189fc82300437a91d5748105f910a467d\"\n}\n],\n\"handshake_hash\": \"ec33973a1e9f1dde0fa4f31f2ea296c351a918a6ee43513ec45ae85e59bdcf75\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e200679e1e15e523e4da61c20e20627b93d747ef64866c88f97cb2e59946acc3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c973821b22d2fe0f51d70c5423bac0ecf66a68c084dab11e8d9ad31a6bedd5232b71ab7d0defa58820c05f8b9aee748a233c5695960efe4aafb1af5fea58a463c5516011b554c43b756f3f50d6a0ee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c6e22ca04869f6122c3ab1e9cb9618fbe4e14b597b31c1a6c4e34979d7d3e0ebe4b637f938f8276066068ed588e80d46f5a4f469e236207000cc3be706c773181b8530f55727d00fa4d94a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e4a7ba3dd2efcb0b2523ee9c3266d8c2c230bb0d516c17128baeba\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4a745fa1d509a8fe2177e2f9da074c9e66da73d70774ed2518eb10a9a61b98a8be\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dff2831f98e635c4896f1eb01b5dd76507f380a71ef7ed2e1cc67844ab8ca00e79dd41c5e4\"\n}\n],\n\"handshake_hash\": \"a8e7b2dcfc5f06659724a9f79cb7929d73720cb98186dd380ad31484add25a83433fe180d5b82e0c8f5ece3292b18471ea3c1afd1eef262af55427c435549aec\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bac627f8bc685a9c5acf29a524abd452235aae71c87616b1a091262633a73df0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e5b5bc8784d7ac3fca795220e989129afa52f8bf5f0474f562014e6f5b88228a972aa1bf435d1748a251e03b2a45b2a1fd5f53cdea5c035af255f4ecb42efd137eed496211e0586cc1ca7fea1ddb07\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ea58fa3776b2a743b222f3591e1913bd5dd3b3214d4a13f5f344c29107a9029b3da045a43a11b7d8cb391badab0eedfc72fc7c3f936279106097088177fc26edf99053b709089d8bbca25d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"686b680edf5c63334a4c235c31e4e8c8c1f9e1c7166d047182544f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"90764aee4d92015d5b7fa01a304d381f9b6f41e21471ba9b5b8aab3e37ed9567ee\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bd76075608b63be20b0b2e6607ee0b468834dede060ec40fb304a499be6674fc57394799b0\"\n}\n],\n\"handshake_hash\": \"7ee18921ad0667a12125d0fc1d1a1f221a39d67609eff731a71e9b0f8c5dec53\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a75b93e7df15f5b53af422c01f07d82cfe723d35ec185e6f2fe40ccdeb01b254\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437e206ced8e1cb607746acdf9d9d0c7e168d704dfc13a23a129f6889b385e2d228cf3132e0344ce1ef54d8e7af12275ff33c221a8ec41e87ceb9c4e656f1c615e68675ec91f0e1d189880c945e1b93d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"228919c9cf17873fe333593a615d5f091c43dd8b1d861bdf1a0aab795a029690f0bd9866cc7a2b99f1e75a5bd053ede6b785a4b831f45699100e025cbf8176fd5a1bffed670523b5c9b24e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"22e010c89e44f078a04db5ca9c91b5fb01978aa9ab80d8125b5dc3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7f9197e0af1510ab62787e840fe044d6555201e2cfc66d197092672a614cbb16e5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5730452f99313f8cfc06018b07644da0f444255845c770ebef4488cfff94bf8e3b8e3d631a\"\n}\n],\n\"handshake_hash\": \"7c9ffc23ae73acb039173610ddd56614388a1e1748398145bba6a6cb43d25b8e178de75f8eeeaa007fd831f98ead81269d3038c22e967ff1b2214fb83a6287ba\"\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aee0c6936ef5174201ce87078f326c74bf98ec181f19e16082f2a5045c087cb5d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654be3342a547f71584e621812e9f553aa136b9eeb01b718b52b16e308330e36f387b8e515d7475d531776ef67c5f31b81a00a0528ca0c0b79ff48b0ebd4fb20e7b2593115c3b2cbb6ca3d910b98d4c30526a9dd4ce6ab404c097bbba0d7deecb4bce64f2eb14aeb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9e46917456b25cba5481b17b3375d9b3ba0f6b19cb28a439ba170a45a7a5072868af4654eec96ce85816edbba1790049f790434893502d040e898318a1f65315e648426a3f270237871310068da6768b7220c312b2c9b500ef0fe2866858d5b2aff021\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ea9b56fef9055e1405e0cabc5839bd4997b6b76ac2352e7bc37eed\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"82b5513a6f6896efd28a9c17f027fd05683ad31621e4e6f887acf5f5545ae96eac\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bbeecd838c137a6830dc3098676762df1434b857760f83e00c880671cc0f756342cd45f19c\"\n}\n],\n\"handshake_hash\": \"69604183cff80a6ffe791a0c8d0a42231fe3d549822f571e4891c5e3fa1845c7\"\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6dc0db95193c5f501a6db95b41ae76fce9c2c7d72493831c582546a7bbc23847\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e5579b7c6d626429d7e0792e0be3b4e2a89cbbbcbf075bb6526a09237d854fe43356bd5631b4a148cbc617c3fe6a862bc9a537cddb5b815427cc8ab2b48e001f0e49bfe2517fc4e0534c1dfd477256f1e92038fec72382da3dc0ce201ff35aa3fe95b492976b86\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1df33e67c5856b6cea3589bed98e3cd5874d947d7684b9d95295a46c46fd28fb7d0f0b1fb2e6265824cb787ad6eef2cb7fb0340d649cc441f722a312fb4425ae6f3d10adf5c1ac357121a8dd167a51e2b2e24293e2a09d095d57953c937e81d3cb47dc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a1870330ab2b316fe040085e0eb5c3f43534bde1987aea2800a415\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8584537b4d7edcbaf56b692eb5a2ace96c9df29172e03bf672e40146e041a49428\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"36cefddaff3eb01035cf79e69816cea496e201944abb04b29e38205abd7351ebeb1d1311fe\"\n}\n],\n\"handshake_hash\": \"286a6ae32151cd1669d38e5e809ffdbebee969a5c91d56c8790ca8090504cc99052a4df62987f5b96b989de8bb3418db31878ea278b64c8f33b1061fbed9f7b7\"\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a17d75ef7bdcbf95989706043fa34872c491439325cf9f8465841e2b68f468656\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652678b9c355acb37cbed860a2e354e935301fbfc5ededf4a8e6992584265259d91e0902ef506ab6ac56c148dc912eadee10eee8f7c69b91ab64bc2aa6941098b562f80db35d233eb660d03ee8ab7b86a30db46a9bb3037c12a2ed96d72f7d7808fc9d96bd813052\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7e2152e0e3be2a256c1104edab93cd940ef51f7c26af6fbf45c92c492b85887b8a435edf6525538017361419e965b6b15896f49882ce8c5614ed34f9b736b1945b926aa2ba52fee4144286b760a4a727c2e1cdd439eb65e771b3af71cf129a2771a0e8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"194ad357003363c326b9d32973f2811eb1ff162048633be6d2a18c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6e03bac93cd4daf9a5f3dc61f117ca4a028b8b251d020019d68ef205aa992542a1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"081d7d9d0d741dad5d6fa77ef1caa24c3f717581432990b3ddd0ca0d8ab521cf059e5991b1\"\n}\n],\n\"handshake_hash\": \"c893eda42631ee5e8ce6b8c980f3b0e306548b10a19e2395eb18ed9c6092b317\"\n},\n{\n\"name\": \"NoisePSK_XX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a978d401451ebda82ba587b40ea065ccd27b1844a41ee8727cc0e27338e1d265a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654f17f4de7457729a24b6d23276d873c6b9d3820d2af9b7cb466a2ae4e9b576fe7b87fa981ea28679c14f32237337828b1449ff7020236d9d091572989417a7a2afb8a700dd10b770a889b833dc446cb6e30aeb9ef0bb1fe2369ae37e6030983f14073ead07101f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aa993a83b4345c1abff03faa864d17e0bf44ff145cd3fd0f5b1dc45a63d6b6b35b1906aedbe6f99aa553ebfb83c3b66ce9142c05acea14fca038317d55ac0a0cc595597d541b6986a475df61243723caa6be326a1d402d9cd2c0b130831f97de80a190\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"81289d4c7c40c8d98efdbc2be45de86dafc91b3cafa59b1043168f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"aaac476e0c3ef7debd3aeab577abf95da8b57a4a98cfd9704e3ce9421e159a71e5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ac7005deccb3ba576f782c1e84cb63cb4a23703789724d317054f0377319f76dfabb5a8cff\"\n}\n],\n\"handshake_hash\": \"04c638c07cb647112bcdcbdda69aba49d4d7a645fa93c5559d837e1c0a740bc8d4fa49a047112cd397230d03842721b92ab45b39ab1f4a615173a3987a332945\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794455d8615ad235eb8cfb7f74db4bc9c709392207bc787fa432796456a994ced14e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ffb4644a957a6f60b68434ee6b1297f17cd0572e659ae7d7692882af3f9447dc2f7522c376d684c974274069920a0edcb00d32ce57049e730f13767670ad1a66df609477971623d20bf005b752cca3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9c79b3b81f1874ae6ed0f3e49d834e95834f466f72342ca45678b39973e597a32073849f1ab922513cb10a5f043cfa561b98db1724310136e51fd09299feeccb4c9c78c7d6f90c1d576b88\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e186da897544b891ca39e12fb19cb4c1d6318bd47f4fa377192f06\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"78c3d3b39cdffb0a120b19ae4641d1efa76cf71754900679a0c00fe7a4b6553277\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2063fe3dbe59786b09b449bb118b78b6a2dc13449e96512913902a9c50cfd6146472fa16ee\"\n}\n],\n\"handshake_hash\": \"1f7bbe5e6df28eec9d5d997a30591712d6a21b442dc998f1c79c7501935ca697\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794498b107292a6d094f7168fc0a99f3024e50ec6e7d18be760f5ffa46af4de36f8a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a60c2888409f64a54e7303c4fb17843f8d8ffcba6ef31aa4175e05fff6d83189c6d0a798426370c71a5f13530a84a17321ccb6c3c60a2eb82d1a446855e3ea43951561650b76cf4cd06a82be9b18e6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eafa41a57e0e80b5bfb431cda7886f6238c8495a2546313e8cf3ee7bebd0ac5730a4050a25abb284f8085e58c26e8601b8a52b60d0108141a0981fc5139ae7751d0a864b70667dc8193607\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b8fdf7c2d8994d6e47b3a849a03bd24c05f69435eaa2676cc851ea\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"02112dccf9389d141e3275ebbde223d44e4dd783458b69d80faab2c1bff0c407ba\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9f2086225b21e32161dec230d8adf965b743877e70474d7bc1c753c0c8faf9aade9f384fb5\"\n}\n],\n\"handshake_hash\": \"aab149315f856aa3ee2b5a69b686d64864b65f809bc5efa6624f319ad49cda3fbd85a1b097cca24789af428389406c2c2ee4385aca426a6ad6432bf143d35684\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442c26ce8808d3263585c84bc435a28d5201d758ff918b007512af281df7e28aa4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434a44f48d5c858591fdbfac06f454a51eb1c0d2ea8dc83efd687972fce37b82a02b2d304c40f1f3886289d1b7928caac1a7e5c9a82f559af7940035bdf2e5cc7b74395d2108e03b6ed2e65b2d142ad1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"46d187a6d2400c75e6079012a5a0d03a5c4c17e0dee1ec00aea2720fc27b2be7ef91d325ca2cff898d544aeac2d067f974cfe6ecb5ffd42cab02054b8f27b25cc05dd464a73a8b9e00f7eb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"15983f5feac4dccfc855f11c8e8f528ca56a3c0d893629412a450b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5641d6c51c75b947cc279baf03d4b051845314d972ffdd0c4a9ab125abbe2da49f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8409b8c6238d687607b6c4ecb9ddeb156f86b6f3eaba847e3fe0ea0b82664cb4c51356d33c\"\n}\n],\n\"handshake_hash\": \"c3bd4e971a8673ccee16f6f53398f02b8fc80073a91c5e85606d3f7a7763ebf8\"\n},\n{\n\"name\": \"NoisePSK_XX_25519_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944476d009f9241289a9348d14b512fa3aebe6f772d6f9e6becc70597bc5b331a90\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a94a5c5c51dca7047c3ce9a42e7f65ca143d83c1fdfda5f20f62b2732d033af07f839b1065546aebae5f644e61f298f6d201a31fe3a8f1cd49ea2ed695f023d786d0eb914f8ee1d6b52b2825c6e1d0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99b6b4131447cf73c4584d8d77de264eaff4e98a9a008b73177257662a36524d5323e330c879b678920ddc14de2ce9ec4f95d7437e9700d3bae0ec3096bfc77fb655ceb937c1a5721595a1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0c6cf1cd19c8cc50befa4078e8c5eaedc3672aa063a164ea6ce22b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f09e7555bd82aad25dc87bd2c66db3c13ef77bb519af47825f75393d420989a92a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4eed965f90fafaa0456265699c667f9d7b7e8324b875184bb8b249c7b84e5745f1b78761a3\"\n}\n],\n\"handshake_hash\": \"a8435572162c3cdddb2eaaad26650dffcecbbea73581129a11b3ce27fe4f5c1c5138b3939015e29cd5d8b65c0a3401951f0a109e3ae7802501c2f0bd9e02f504\"\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a14494b751e46f7576622a8b727cf59b3cfb618eb597145539bbbfedd86c40522\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6553b422bc8703a10c071c6df74698a6e206c1e9bde778d93d73a14c5ad7f520a730d06ec4f4628a723e488a0216f50d65bc74c538777372cc66e2847f3e11c81e482d95fa5c7f37647e3f8ab7a8003172b1d362e89e3ffe13c56519bacf7fa950810d0bf47a5bc4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3911888bc99ccb35bdcd09862bbb35177a1872cf72006f719529b243ba9779ee56c5cc82335369cd8faf5c54b3fdf725d75ecd6625e3ffbd291be6f07ada2c22fc9be025771656a79a14fb533d0c7a2896a53f963b4a188c3f9f1b5d444a5be45e6fbd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"062b95474dc85070b39e1af58a12a09f4e389b58e4e7c4a3b5dce1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"63187859664043966d12b326831922b6395722d656898efceffd017247eaecb3d4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"27e6f66aed5737f7eaab6eff3b5f42331a36142259b265e17c8e67244d0085ed172172e741\"\n}\n],\n\"handshake_hash\": \"be23bfd61e0c02983062ecf813540ab43c1cda7f753d3627b1b044b839159731\"\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a79c536638b8bf65f2d2d7526670edc5932cd0e47492619b2b15603d3f628018d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6592d4087d36dd4d0be9a2db7384a5e39bee325d0f3702a3d2946c72534f81b23e3779e2e10d66b2037d5880f511ff6e3c9534c25526750b779c3691e8e329e4585abc2cb7041c8b06a13708440422cbae6ff238155e445058de461ce29620dcc4d3036961795133\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2d4e2ff78d092e766399cb071c5c84ef2f8bfc6baad08556ab89c2d432933e52b1f860ced48d44f03e016cbc18d457426a9c00e482a5c4ca2dfbc5e38ed6da6cdbcba941e79afc47b93a7e0cfd2f643572c60a5c93961325a65edf057f49cf0e875b80\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8719a326f39b39e5080082b31061ffb4d0f5f7c9e70b2d40a6db69\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"99cca91e20a371b7d0f8afb913c477eb9bbfa08bf07bff122467b949b76343b4bf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b4080de78f1c6c3def3424c9dfe850cf3a3ce04d0af667a4710af05a78d740334ecd3a282e\"\n}\n],\n\"handshake_hash\": \"2b2490c56413ad4edd0f4b8a6f845f3e1e55ebd34b9482bd6f6f0caea184267f7c2cec66a3e27d685c59d895e23c00dfda5510d8e670317efab04793ecada2d0\"\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_SHA256\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aeca6f63a322baaeecc9d27a88adacfe1cadd9082beee685982e1d5a90ae1b911\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f01061df98ca9637b78c32aa5fa593af05f6cd4b9e8070f0c224c7df114a0e424050fec44463880fadd7e0797fbfea7c4d64c8da7a6188e4bf20cbe3a4c4440824d40bb4e044477ced0442e57196b75266e340e54d6229372f58f1696eed743f66e219822f7b56\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c845154c0c52b157fbf3b792ab5fdae2da4474be1a2e3a19bd0ab4d96e03a428d169c37ec9fb9e566acb17f46bf19b6bd13c2d78d0c46e62974d9d5b8c1a145446a29568ff4d27a16c8c0d283e11f2c560ef389d05295194119510f593b2bbd27b4d19\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8022c78f54e81d41160d74463e71bd3bc0ec047c27ecfe17d0bff9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2050cce725f0210b9134d7cfa3107b4c6318be4d1950a2613d93ff79275f2d2826\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"25ca076ccc8b687ae2a53d0db94073c11f40d8ba662e492cbc9be7ddfaf9b24297ef1d3486\"\n}\n],\n\"handshake_hash\": \"57d248925f11ffe9acf8c7c2f5bef757b65aba0ea2c56958b699fc42f2aa194f\"\n},\n{\n\"name\": \"NoisePSK_XX_448_AESGCM_SHA512\",\n\"pattern\": \"XX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5456cdcc56ba312662a0a02bf966083b22292e289849c75528e2823999ed498f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c03682a23f0a07273eb102e4a759680c0183a0aa3c2f80ca532f050dd9718a1308ee064fe5863e7aabee3629dc4165447acd5fe51f7d921695f699dd4450f32db73e152c9bd9c760efdae133385734870b52e9a55e0687d8ef981ac955cd8894a52ca7ac9c3149\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8490aa62e7f6fbe11dbcdced4e9645b0a08289a4a7ea9434c26ef7a38b6159f88c9b1014bef6b0215d8a6fcb5ab5ce8547fad63726ece65926a39d48dcc24e754a15b9f9803e6ce6235f0f73737ba1a14a261bbc004dc500a9fd980f8a16f241b173da\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3d0bd06a4b1709d96fd1042ff7d8f91dad0c07340ce1f43502144b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e94ababf6225c5ce83ca84054723bc5cc310984144a0bbabc474cc38070787dac7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2902a81c702757215aa150e87aefd5001b60c3eb8431eb6c706d87d278e9bd2f6537b3621a\"\n}\n],\n\"handshake_hash\": \"1ce8d1be3e691c34a7b1f239d0fef699b818ff237160cac186e9ef9dcc65f2c87c919e4ffe6aaabdd63c9e5bd6032d4e8b158a19984c525fa7d640a625e0890b\"\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439007d1439c3dc50d0f9ded2680d099b25d888b41a213085a3455faa4f98825\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b79d477f052726df83371225d9f14290b85be44811e6a5479ac49c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c31f5db821af2a7b24fe039810b8d4f07653e16b33c8b954c8d86c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"004c129957669013562bc14cb11c868ecd4fab4dbaac1794916b0e7a49ee27e19d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1a50c6939a635df3d49d310f8f5dd1a98ca799aabcb7210e2c0c610580978e6caadaf7c913\"\n}\n],\n\"handshake_hash\": \"1408b285f98d4116484405f8dfeb1b15f80aeb42c813bad85fd7734787ee3e26\"\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d7179edeba31152b3bf6a6c287040181777b61538630f4ff72695e3a1c9fa8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4f4945412bb3480c283fded0104a71c248ad9a39963324e9fe5887\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"07ddf2cec5a015dcd50dbb9b5ee61febc436db6b0f4e6a6a7c88da\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c5df36d437206734b09b1a1a3d4e382283f3b45141d5db0485121fb8e652aeab37\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3a4b0ded5d48b644b40a2226ec009866b4470506319e66fe678c55d8ee66727368aa08924a\"\n}\n],\n\"handshake_hash\": \"92cc6f032fcb8a139b6a3181e8f4741313da195bfe01404f0664ded4b89ca7a6504c09869d916f321af8e1e1d85d965faa92af9cc6db1cdf641466969055eebb\"\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f8278c9bfd4ac8797dab12ad727f358cd35b7ed31d0d1300d5422aaf1cbe01\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f60f01231c3f26f501ad5e48ea49f4bb0a2fa8068ed2da64e28144\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"404ffbacac392332d78ef2f984d2790cb3368570f4811664dcf873\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4a00f8718baa702633899a4acd2abe7d4346ba2f44cfccf47f17055273a9ffa905\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f9522ead1a98211435587cdbf28d6bd06b74c46449ff671c969a4e9395a726845666e44ae4\"\n}\n],\n\"handshake_hash\": \"8042189b507f0cabccf920656d4086247864609b461c5c026348e46c03c53a85\"\n},\n{\n\"name\": \"Noise_KN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884327c58a2b5f5fe8d5db489178ababfe4587a65c45d24e6e085c3dd36d6738cd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"83c2ebea1b6348c5af73a873594613a83eddbe60099b6f1e8a492c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f153153544aa810a6b09ac8ad2036d79d8b14fc5cb7c32fa327de0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8f0f6277e311d6f1104877cedb1b45911f9ab6c7595df5fef0c3a7bf1e9256e007\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b3d56adc299f4ac44affbfb9ca7970f66b52349c4cd7016d9a509184d13b6499cad6cfe5a6\"\n}\n],\n\"handshake_hash\": \"1afc7ec2234c405bcf4cd3978c6ae44126aad81920da7415478ae1817a2cbc25af61980bbf50af001366d60f3b5eabf2c114ef61e066227cc750dd029c980045\"\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c1da28ddd933d4722cd351e10aef9c08516589039ad8cb1ca87c47c4dd4b3c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ee12377fbac4f5f31784d0ba8822382106c1e400d06d1983f777c4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a4dff6d5ef8b40b4605c38d30a9d55b66bf98205d9448af0926530\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a1c7eeba99cf338895e9ba1699d335b1b125064fe15d1ef3e8ec9691541be4cd8a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"936d1348aa57f32323a94acac1046e8beaadebc8915065ee30303d7a52422aeb7bc6e53101\"\n}\n],\n\"handshake_hash\": \"3356c4846c7917cd7d46b9448782c955cd3867b4c7dd5d667cc3b79595ecae63\"\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657e3485d81e2d3abb637efbe9397bf2f56f18446754bc436b96976a3fbb886e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd874d1df44782707981b7acd8f07a3c4d3048198e7da1bfb9d9e1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b53bedb92cb6ffa98f0ac8c50dd0dbd423bdfe01b23a2fce5d9e7e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a7bab81f349accec44de9d4f7527d6c6cf7f244a936c8b81322aab984295d73530\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d97a2d0487e82f57a9474b56f1ee4d0e8933623e73d3e6584f8e842fb2ba65ba00bc13d8f7\"\n}\n],\n\"handshake_hash\": \"8518d72e8fa1cae76782543024dabf7115d4f72d3eadf8d5f66632707fe7c09d831e7561f9061eb2b0f43d407ee77df445f088f0cbd71cdb189a91181394e425\"\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ac2a77ad3681ead887a719b303d560331294e985e5cfde0193af1bd8d90538\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57a2d76cd9b374848f77f69c380a4d168515cb0d696d85de817d53\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f0e2be0aeb9943e33fb7b25627f6a1b6e184797e4c07bdaa7672c6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a83c731fff0903edeb4a784572cf648c7b2cb2d2904665cfe3a3bf18dbe1223cd0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e2f4f4d7dadd271355a8aada8d00bb7c7ebf1931c1a78937310d05f184d9295a38ef6e4b71\"\n}\n],\n\"handshake_hash\": \"3ac04e9d8a107218018aaa94ccfac370f324c5037dab6bc896eae3fb266b86eb\"\n},\n{\n\"name\": \"Noise_KN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655bd4c690aa5ea483874178c8d0ff1cc5ae9227108f0f9f1ad551d9ba0ce98f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5193d045da652ea8bb4d6c381b827f278bccd20f2137ef9895a600\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c96561ccada08ab8e93d2396dd0dddfa31025d0dc70c3d64fad845\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"70b63278381e32a860cd6cb92d35a4b2a594f022eb9d0cd18c6947220bfc47d114\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"565647e282a2743a88037944def0559a801764f94fa2ecc6182d380f8f544e8cd081187798\"\n}\n],\n\"handshake_hash\": \"b71f5161256c889ff343420984f80975234a676ee327922bf8a6685573fa9908cc09f697e3737effd0a892a0bc8441e5fa61d74cc02f89f8653dbbcfb64ff8c9\"\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843345fbc11fcd69c47a6f288543f67f43f7efd2738ebdd986e7612a3ab23645f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e23aa08fc5895591e1022609a9fe4ef480a04e0b1bb5634b648914\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0654ebab5d058c4a3e977ff5df043c2f4b99d3ad645963ae99e7e1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f0c1799d485374c13c37095bf3c691e04609d209467236c0a0346692db4e32666f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6d38916f60e4e8369788ea780668bf942794c14070ab0398671b502041a6ea80a14893cacb\"\n}\n],\n\"handshake_hash\": \"d1b4ab94d2e2c3637a08f05edacef7e242388a602a18dd7a1af5cffbbaeb09af\"\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843503e3b49ed81584598f7ccbadcf05dfcaf56bd8b19a979717d6d879fc81618\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c37e6247a9e8d03cc95bf8c8439a5f8ffc6fa193a36a02198de085\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"df5ffc1c3c0e49ec48adc68d1708d39af4dc25074adc99b17d8eca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1ce3258782fb9b1332f5dd0731fef8535fae84e2a9125baa6353c2a076fea03666\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6ead69823a73e23e7afc27cc15dd1c6e81f94669f820a0d8685e3072a2c68e8369d845c7b1\"\n}\n],\n\"handshake_hash\": \"bb4fecfb46b299845a307b1d936010a78eaebcef60b07ddaff06c88426aee149232300391f19d182b2adb1afddca5780984e506e59327cfa567be88349ab5fea\"\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435a3c4ed5989f00950bc6b7bae756d7fcc86111e5855e2fb4776d8414f19cfd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1e82588a49c35bec1703ad39e03525db224beb2c3b81a5da4aae72\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5787874f33246c556f9454d7861c90e297f49bb38e2dfe4382deea\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7e0e20c0ad0e1b71ffb16591fa25bfeb9111ecfcd1feb2f11e1cdbbaea3fae43e3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0a02e2d245fdf5a24c86c7561bc2e08ca3afac3baa63dd5dc8b6eae8fce0e0b8777315bd0a\"\n}\n],\n\"handshake_hash\": \"990dd76803ade5ce7f3647458b4c94d521a5e6ad9dc46565d79a88895f5c9d9e\"\n},\n{\n\"name\": \"Noise_KN_25519_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884342572715597789b9cff5ac4d22bd9be19e7d5e252f2d9cae5c3a4395fb4825\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f4c5c325a955d4527443950cd0a391ba7b8f20e0370efa0f201410\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"58a69359106843f38c9790c426179f2c7bdf614d1f1580b582001b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1b0517c372f57ad7239aeeaee9df5e0925532ce52b6b48f3b1ea635832ffe52fc2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e602d70ee8f8e1e6d71d8c92da42caac967eb1bd9c21a2e754c2e489905fe12d8b84f01fd9\"\n}\n],\n\"handshake_hash\": \"51747e75dacd0b6699915476215f7cacc7714db8f2831e6204831dbb1a3148b8f3099f9b8f9bb16ff9dcce99c42b501b376d1c91e0a1ca0e6795a16b386aee39\"\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650702acb352326bb2e1811d445312bfdc3f467c0f0265198edfe1ee13d9d039\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b8f18e24bdc5f8fb0a5f82140bcaacbbfddc9ce624c38338cb1266\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"78b1c8fa75b2597d4e9a968b11079b5f6524271881228f191c5899\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7f2c449fbfd0522cd0449ed63f0b6cd77500672589a554ca63097bff03eb89e8a6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"26541f6846a81c6e404b36d6497e615b4e392de7b9b3a2e61acbb0592c04cda8226646777d\"\n}\n],\n\"handshake_hash\": \"2e29d3473ddfd5699970ca470251497f59b3a32f9a788ba6cd0cdad8ba0089b1\"\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65fa8a25f082273c5c8b268d52ac918835181a588877e239a0cb63ba54878e43\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"667e614c1100432ca2f6f597dfc0553ba2bb490a5a1ef2516df1ee\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1ceaa4c497c3911a8e737899d3c3dade1d3464dbeaefa0de258199\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1e763fe75c2d76fc3ebd24c16934fcf5f01ffb1f032182cba5626b4397ebd58d0f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0f29d1b1ecb06d5defd4a2af3caa54a92580c3658c5ee1b3ed294debe6cdc8400888624ade\"\n}\n],\n\"handshake_hash\": \"1e78e52b8e507eea0c72a0adbe2cea19f422efea23f78a5ac4ef23f080095be0b91baf83151d14fe58b0361e954853921ab73d101d770c61c244b647130f12e8\"\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655085110104d54598c965660d2774d6ae47169c8d65cfab121598dd63227fd4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a4145c0b3921e5d938d6481f1dfaadf7c2467a2aa06721dfc0e22d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3a1cdf3cb928d842f6842321e19c4df69eb675d10313c7d035f0f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3550372eeef9e0264c5d4f1dc93b55fa737a6f973a5e0674d5f748fe803d393fd4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb46d89ea789e8292db31e3341535f62b9be36604b3c293fe8cd60d5bdfd7196d4b065b448\"\n}\n],\n\"handshake_hash\": \"de0e69e31a40a64174bcd2b4929496c19415cd3bcf05e4f7263d96a41ad98819\"\n},\n{\n\"name\": \"Noise_KN_448_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654942e0f64f3c52f39863d65c829142bdc8751db112198da1e3d81821e253de\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"54c1ca1b03f28d439324d5be5eaa4822a9e048d73071a0448e67f7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ca013e673e9e8a1fa59dc23402f6a7e33810f03cc4dd9831af9b54\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"97da1e6f132fd5b9c15f396ff412289dc4a38edc7ecd2fa8de8f1f4af87aed6b95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"947729039388f0d4f9d33bb7e63d4b85b0335adaf9e979f86b1b9da839cc25e4c7e83f4dd5\"\n}\n],\n\"handshake_hash\": \"0a2dfdfdcc0e6d24db4eb3da8e4ad4bab10349373330971d68991bdc4cd210689c4a725cf92f5ed90261194975a55fc80931926925417840722d0a8babac69ec\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d0674cf5eddf982939b026885bfd3fff1581e370fc3421961bdc7e58760bb1f2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d3e7189b77531eb011e80e0d3f19020d80a1064feb79e354c931b80ec90159\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1928a6bb88f72d3c26d125ddc11d5191d161c1a909dcd494e67724\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"42444591e64facaadb94f50848222bce0ab544b417c7a90fd3a017\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c2d7af28483bb487f11b5ca53592486258de63d30d68b1592aff3676140d3db119\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d02ada89b9bfcabfa9e40e574cf58f9f9ec938b898a3944fb8d9fde76add4c4f5190492064\"\n}\n],\n\"handshake_hash\": \"a36c08a4cd59df9b9e713514459f2dc1d93a21acc138df365f088ffd409acc31\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b7928ad9e1344a5ecc8e46bb484c0307bc774bfb7b6afa2b241c6ed760264810\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435dc764ebb04e22948cc1a9d109d05b6679a99dd271c02f4e00ab19ba5205d1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0a188cee4bda43610db115b1238d1f742a20b12b6afe244c318d8c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5b2fe96c76277f6b1c7d94c08cfabd895b924a08b312a16d3adb82\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"531d44e720a7a3687f79b409620131f36f8e0b88964fb874994358514717d2e664\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ee31fc0b0678e41bb1047e18e5b8379efb42952ad32e4949f09dc524928655f4fc46e80e35\"\n}\n],\n\"handshake_hash\": \"26c5a52903a2833eafbda073a7bc85fa04cb096b0e1e011cc26ded8bff4093b0003b3203ac98cbc4fc5f5e5cd77812218891ee0e3315af6224d5e4bbc36faa38\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cd2a073c048bedf7bde062dacad5ea2b0c2a2f76800f5ed6a94a42217acc8045\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433c023d3ba98a32a56260b70f3663d35281fdb2faee0f5ec92ddb7551fe1820\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"00fe0d5946806e21e8ab50b543b5a3062ea1e280d8663b0c45fd1c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e9ce1cf1ce89afd97c5de53ea497ef9d949185801f654be74a7afc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2312f557ec8af62d6c6885d08feb0718eb133e84069b2b9f1933f8289455207c33\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb63029bd9a76f5ba3c32d29bf67ac3e5f3f29fe82914e3028e7831f5e299e2b96c91d8cb9\"\n}\n],\n\"handshake_hash\": \"de4fbab6d76b24988edc9e39f1de3225ef011be00185b6f7738f3e9c4110434a\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442ed6ff587d2c8d12d18e3fce772f933732ecf985a3f93afad8b0047fdf6d5a25\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884352c7418bc2fd7f3fbb511fa18705ae0f7d89dc3f27f8a4b03f6b567beaf831\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cdcdd5de41f3a9e807a53d0be87fb33b56d1a05bfcf2f8fe19e151\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d4e704e88c837b2bd6420b048e1f789605cb6d7c3c413170b3168c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a3ac82e7c478b6dfafe00014b0a727ac1bf4e2c06b7da435632ae2cc7b8532ede9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"389506942785471ea2da5871dbe34ab3772754e03c2dde992bc62bf81025056cdb07067279\"\n}\n],\n\"handshake_hash\": \"ac578c4eeb28f0b1b38d6a4759fda5e7b6276d0cd47921e095436d5a84c44ef006c774cbfaf3adf358f1b7a23ca6b3b81e0e66e7eb181a583b728d2c56741fdb\"\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a24e6a39b256e754da7c3b3f13dc6d1d4da746df74c39e281c41f9691f6b07462\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658c046f481152b78d1b0c158a0009dc24502238d8dc7ce10298df3ef74d21d1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8a148710145847996dccf99d45eabda4363e30b79661f46e4f02cc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b17fa144fdd13c902ca3388e6e1098157192b7d9495658747691fe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"323f345e66d36a3b1ad25c43b80ec5b009d7ed94df692f943c28d5956cd6d9e240\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8d1cfa9b894240f9a685102df759267ca6b06074a3f095a26b7d92d75fedd5a7ecc82abf1c\"\n}\n],\n\"handshake_hash\": \"e1b6b3ced43e1e183e2e00d854a30eb41c7afcce0eaf56c847cf891686891cc1\"\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab9149891544fc6e83ac2fe3aca1c45e3b3ad3d1825d18f82cb64a80c0a899236\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651f275cd615d717c6578907de7affe0a8a1bfd230cfcd8603fd5b08b858c108\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b12d433ab23a6bd7c7e5d5f6e7688cdffef47a5ed11b87120792ad\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"afc8348bb7694d7e2ee064d92ae4f9a9586584898e0f56b642a4ac\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"022580acb55c0c889418f0c69b679823b26e3d9c7993436e2aab12f2c259bfd163\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e6822ff803e0d6aa4bd2b43fcda688c9045dff97ffe71ed87a1133d3e3dbf0605113cd6589\"\n}\n],\n\"handshake_hash\": \"693537321540886567f17b3a24b1aca66df86fb75f6f302020ba5feb50ae790ee261b32546960752e84c9322f808f6bbe1eabec3fdb38a64d9d170282bbc7a2e\"\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab2c43727a10fa7f8d916df427c45dfc81e830909acff3c03a34774d698a6d57f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ea34e35d6d47f6ffef1099f82b4cf6ca739659c31b579959e3354134907c39\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"654fe559cb0b2e96b775fa7f04d6a45f5a72e7bd96bfbf90cc5d14\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cbbec2cb4ab4210a55eb4eb7d1ba3058a2f594d980d32e721e0371\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9158a5eaff87fec3e542c8dc506fb59fc8e1cf653a7d080eedd57c3deaf740f9ed\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d6f872287352e9aa308a29b21fd0b84c241768395ab269ab5a2304db94d66661ac10f302d2\"\n}\n],\n\"handshake_hash\": \"660e951f192b0f1eb0c6c6e9e42faa3b6f2713cd49b8194d31f18c9c6eb3444c\"\n},\n{\n\"name\": \"NoisePSK_KN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a90f5996d6859eb63e7205f5f6604af7e7239a062a4c60726f4526a28dbf2684d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65fe16cad3bef273eaec9c7d2733c2873da477dd15a5b9a7ea607af0bbf2cf6c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d42ae9a46587b9fd9d2184da605240e8c2854e43673b7c7a6b6c3b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ec9f7ab1c0b5cd091f02cd55d95f500476c3fc32c17119860d08df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e2664b21090ce5dc4bbaf0c7de7b4453b30c2e84e3f2b001621533d4a942887dc3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a16901d3849ac142cfd68f6c977874495c93fea72305067ff68a738893bf97fe1d8e7d5115\"\n}\n],\n\"handshake_hash\": \"4c5c60bdef40537e31ab5e751533ac973c8cd90767b25e6950b4501ffa2fb7a1cda674f05975529c679d8fd5e2be03806918ea1c58ef7a313ada85d3121b26b6\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944af5f5a3c150d810e90a955a44a7b436dfc58c82e1283c67102b596dfcd15aae6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435b3b8287329c3df2adce695b906c77834865a50d773e80a72334c3791f742b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5e2655b8903d614e880bb98d086f723aa3aca8ee466ecd26a2c196\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"29551d22fa66f9b53d2bba7147d9e1b08ce294e819f97639bdc989\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"57dc8175e65a421b74192222b84361e7e2f937394c12436be375b83d4da7da15b7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"370af7a4b140bcdfd71e6851a2680c7f13b99c61613adcb2787a9d39c2248e5e0f0cd12487\"\n}\n],\n\"handshake_hash\": \"e17e136357d1fd0ae0152b96476a058bffabe5df4cdcafb45447285f1f338c13\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449633c91d7ff85f37ae82477f11a259d38bebb2aaac172e643209ae62d499f816\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436b5f0deea3ad17a969ec287fd03725ca11f30b021a49baea18ac4bb2d3a1b2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"65788e275f0fad6b6129bcf2f63eaa68b112d548937cbf833a0756\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b832af0b08cca91b17c6d008af7a7c9f537e36da2bf924c521a5d4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e46ec3d259baa3a7abee8ec6409a1fd7c921f3ea765be68811d53d20ee0154ccfd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e43267553a8c1fb29627d5709f3ba0ba3f906259220d8217272ed3639dbec450ff2e0976f5\"\n}\n],\n\"handshake_hash\": \"2a35443ca6be8785c1340087fd8c09bc755e51fdb7f2f17e5665e4966dc2295491ffa7361696dea85e1a32d250d11d9946d6c39b705874c771ce2fb75f218b99\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944407b82d596d4bf531baf2fb16e5b3035a45ed68eea9299deaafe10e340294f6c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843795f0f6ef1026631775be1eaca1f331b0bc0f3ce63362ab3da757dfb8921ab\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4a43581acbfbd30cfb52c9fca1b0b606a2040a2a05abb2253f59cc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a15eabc48f94651d7b1672325b1c547807b77d7c3bee0e06a216d7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6436efce201ae6862e112193962ea9d57f4dbbbaf431fba59c08729780cc2e791f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"82efa5a35cfaf5d065fc0b1b6df88151ba47bda7eb6bc5b7bafc27c41f86b6fee2eaf081c5\"\n}\n],\n\"handshake_hash\": \"9791b62fa5f9e4efa70a13ebb24d255e584113f0ae49f506001d5d57cc4ab883\"\n},\n{\n\"name\": \"NoisePSK_KN_25519_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442f25fd33cce5c5cacdaca04c9484c511d9ab76895cc1e1fc63594a448ca310d3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884392a12bd9e97dc9413453cc6027a3cf5bfe1e0350e735ba85ae354fce9671e0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"200c5a85b85801276afa84cfb9e57a59625a70dd7f71bc64888ce0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5b34b5ce375756a0762433111531f92dcd3030fa9cab7c0195fe22\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1979dc37bf08665e4d2ec03e2e510d5a1dac962e82fc0bd0222e29444919444cc3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c5082af955108d315ea1440c12e8e4d82e1124342e73207a067889664bbe07b3134e9a826d\"\n}\n],\n\"handshake_hash\": \"a15c614cfbfd50a925323666e608938b7c5d550b5ddfac0a3d54c56aaffd082b246a160dbaabf40e0581ee7f0f3631c8bf3b51f0a963d247575c02a38bcf8198\"\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad463f20626034676bca8670247adba1a2da73354286f46e2749f3fb0895140d3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6564f248d01ebbdfee689740ea2a4a8d3b78290784e348aa7dbc2bbf04a63bb8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ae2437683b5e25c32254d881360e458169c9e72452e0044a6f0e15\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c5ee458ee33759b8a045e2bae02f1913d602d297c838e6b7e6cb3b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"68df3e7d33ff6c8d4ed78cf0e41c78c4602e9c34ad7a6a0dac8ac8a59edd4521f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"331673986847d45addf03bf67a34faf9ec1a050fd5230b13988b4230e43763562b4fa2a814\"\n}\n],\n\"handshake_hash\": \"e72cf48b39d3440e3dcace7bbab37f7c76bec8bc4f308eed3006867f6667086c\"\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0eb90166f43b8f7c6c44ad452e7ab2e81a9670a47df18fc61e0d6c985c5a67f8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65734fbe9ead4946ab12b10e995c64bae9e77c703061055ef10953ac90da1b06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a512868c25636a8667e564bff975ed02809689fec358f01d2ab163\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e7e60fb1181cae9a21c75537212829a37b8e586cc3204f19d69e8d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1ee62b8eb8927b8fb8455e75264ef2a37deaea320b32687ae3ebec5465edc8c58a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f046bf938db42221eea38411646b0024c283aa629c4c97f6ae609adca7b0b25dc520c36579\"\n}\n],\n\"handshake_hash\": \"64b6446a6cdcb80e41188f8f6cbc7527c1fb1990dda039a562da3764b442a58e0948e9fc32560f1217509940f5235c8928e8ec7d2fda74d456750f97e913b7c0\"\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_SHA256\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa0db9e49298d926dc465d7dd91bdfd41587b115e41afe51c260d57cd45de8c08\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6563f0f48867c6ddec6c9cedbe56eed62b29a77bf9d49a20e7dd2233506b26b5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2bca898fda5844298fa097cf438000c1ac5f70df8bb466ed88ebe4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7886bc91142bf6badcf4674805d5915013e2430b1d498b731273d6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3135ad18c814a32e5102d6c2c994c042d5d38f45a3a6bc7e118fa9e96f98ced161\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"076d272c559d9e79c96cdf27ca633ac2736e54dcf920d8ba325ea938fa97a37431b589b57b\"\n}\n],\n\"handshake_hash\": \"ee5ab38659b29ccfc90679842fd1dc5a0fd40bf678de8ae18e18e8c8bf68381a\"\n},\n{\n\"name\": \"NoisePSK_KN_448_AESGCM_SHA512\",\n\"pattern\": \"KN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab2cbe81423d4969f9a27152dd122be2e9edd3415f45e4ffaf6d0425cac02b73f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6561ee648441d16546f171911fa442a2c56962da30fad64cf0de7ba32c7c605d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"30cb12cba6233c33048c11c864f3bc73889a63484d9c7686d96e83\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f59df61112d6353e7d9bc650df05a4e7bd1d0949830a3509666543\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"737f183bd70d264ae500bb6a0c9ac125baffce7a8ba1e4af94fbe0cbb0aa9ef13c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"79db1e240727daf0a7e489a766134de0fb5fc07fa7fb9cb3b4a3d79eeb9cedef3a48f647db\"\n}\n],\n\"handshake_hash\": \"7658caf1da2fad0f5b84db4191ffc0e9811967ed2e73e13ce45d3eaed3fd179c26ebdd7f397a83cceeafc3cc72da52504ec90fe000e16318f80424defb9b0e35\"\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944266a5f53784aa3becb0f7485c2759c328757f5508153926ffada1717f0336177\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843008aeea5d76d6abcbab87a18502c8ac7a0017854df05b99fe1dea479c6473b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5f92113edf78c3e56e6d67201f5f9e0c8f2930c3e1ffb64ede0358\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"30ebbd9cdcef7f40d99c8cd11e880dac28f5c9e5032c1059b3b56a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b011620dc31f88abd1788db50912952fe45da56e9d0907ab2cbce5f609b58b1cf2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a0661971e9047b28a815c7b1f62fefb471e4d34bc2a5b48149e7f80c3772b8e4aae8b44baa\"\n}\n],\n\"handshake_hash\": \"433808b89eaea4e44419b98c5ab4d621535b13d19ddee8aa9eb38eb06da112f0\"\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f79a1d4b21fc3ea4a0c87213b8b4f05921228879fb74ea0d39ffc64619dc9658\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e20b1bf85731f75d7e21b5d54baaa6a1dd8690bb26b34c92c02b152d726c01\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"25bfaa58833b07cdd6af7c07f2c51daac681a8ac0a02dd373259bd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ef586cff556dec8ef0053871ff0d4bf3f2c72e842487ec6d1da69f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3265d50513550a354425d0218ba1e5f25d4994ce8990e6964398dba5982dbcbd85\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f11c02d5c3223d7b9281b52e1b134962b91bc3bfbd1646354dab9fc19b66bf6c1e0a6f431e\"\n}\n],\n\"handshake_hash\": \"449b8bddaf3d2f8999318d213d1db80a90d373bac67ce7aafcc444fc895414a97e82fb7797b2ae85f29199856789e9b8aef2a58faa828267ba4f2b09d89692d3\"\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440177015efc1fe7a37c629af7120a962783d1e99e9766611dd7902fba7661273c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b274d3429adc47ca093ba63ef90f8dd2770c7ef5c2c78dc0ba79f2ce665628\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"966b05bc69ec01b8454d3160a214e6f24a3d884eb31ec2408af63f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0ad887fba4f611bbb4afe44ba3556b8164332ca7d5934634d63d80\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"012b28ae646ae7830e2c5472cb023eab071c1db3d8413ec69b513b83832f974c2d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bb3e6a48160d9c5971d37f975727294e0d868342db31832e54d07191ab0ca3c3703b5ed3d9\"\n}\n],\n\"handshake_hash\": \"36570fff832ae7c579a72bb814d60023a94fad1c618ce8fa4a358c6eadcd97f6\"\n},\n{\n\"name\": \"Noise_KK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443dc7ac83f109398a11fb7390e6683d53fa17fe175bb54a2b22cdab3190b7f20d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843014594ddf297e92b7927aa591f545c6f5eb3a9b1bf0786768af8b8285a13a4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"44b1bb44e215cf03f8ae9b92df8a3dd06fe864f22c51f8ad9871a1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"891391acbe76f40fa5b008aa5c9eb3290e124b30efad5671eede5a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0ef4cb13f5fd2aad8c3e2e0f51af5aaf0d1e635925705d0026cad4c7c90ce989cf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2e61dab18314f9ece736ac49436f0a36deb483d9262c5f9e7aa46e993629b7f404ef33eb56\"\n}\n],\n\"handshake_hash\": \"ee3d7722fdad53460305c65efc7bd766a526961f1c7124ad76b77137cd910fb112f24b4e516739e4a78a52dec104f1e614d6dfcb990f4cd82847280359053136\"\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac4b2915120135d1a053a6218e5529e5fe9b1ed188533350ded82ca4e8d3bf2a7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655c891d5e676b1830d0ff635469eb5a237e894646c59f4ed832e3fb5859d085\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0b011f5bdb29a7c0c20f6fe71f3731238dd576aa466e5bc5d95b45\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"43a1980c0e9b2596520d44f7740b886efb2c533736100b4c6da7c4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b210ef402d1666cbce951b65cca3b6d0816e22c49056e3566216dbe71ae670faa0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f5150c5211c646cb515a62456b90c11dc898fe4e9d752c8481fc84ea5a30c8daafb5f9eec2\"\n}\n],\n\"handshake_hash\": \"cbf116a5ccc813eaa8b848372f1969d5d24f391732c7424860f63c4d83117059\"\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a67469ece170b9e6581b109147ebe0cfe3a3da0974f1019a582bff5d5aa9d113f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6539a1ee1aec0b7a8264945632e02354a06ee33ba136c414a669d93d39934b9d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0a2a8b37cbad5e64b23bc9fa07f59c43db29048600b5024dc84b73\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b07c7ba3b8e3acf6bc0723987aea86f623d19d8d82af864f74aa01\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"28455b3d950f08cb2cfbfd3d94d54bbccbe423b8d74b8b14d7df0152a2a0dad75e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e2e40df583d49fc3ac5e7a9e7653093062a3b832c1417153d88e2838ba5c0dcc11b4b95c2a\"\n}\n],\n\"handshake_hash\": \"c77b77b219b290514470a733f82865257863e893a323755e617c2d81c3fce225a4697e271cbacab99a707879da685281c3c3600b2e4c0be6d777cb6c8300c813\"\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a29f58a4d146ac26d3ff330088351546f03c124baef7c7d40f4afcf8f0366aa0a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6587e6461337c86b11dda14340fde05f4bf9cac46f6638107c2751b40dc1b696\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d7390bafdbfa1dd5e0ab3be2c53a5a25973439db881ded9ea87f6d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"242096934d7476d35f01d6451efb16d3676d233dfc4562c86dbe53\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"01a01c52cc55d2610579c898d621999db420d61ec2d281b5bd6698dbefafee2b51\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"04f182e7d18d89f98394a2c392e71b8abca82cefd8fa17baa8a21a81e8605850be0c1b722d\"\n}\n],\n\"handshake_hash\": \"c073c130fff5fe9570c03a876b0277975e867c465bc4092b63e9b914337cc732\"\n},\n{\n\"name\": \"Noise_KK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7f8e83e83f34885a0c0519256c9c279d5ac82f3bf02f5f0b13f8e5b99a4fb5db\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b25974494a3903f47f74ef4be731b9c2b0a465e7c592d8828a1ea795c31893\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cf600476a3aa1a5ba2f465ce35a3c5962ab4d5a46628c5abe7c32b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c4dc1af2617f47628ea828c8f74122d6a7d1b7a38ba7a468d06e96\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"93d528a175d2d3e19194b5ca5ea6682f029679b9c6e9b6265dbc3f6763172b066b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3361ddc11e32e90e788b3415d9ba731e4cae5a3ec8ffc9d0b612c22dc0dbb44a01a35eeeb2\"\n}\n],\n\"handshake_hash\": \"c8d063c982a5adf1bd63d66ce73cd287ac75023b8489987b16cb19597b868fb81040dc99bca244f3ed2cefa0df5a46e16276b3331b682f8740595ad67128c7a6\"\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448268c145c90cbb2062a3123bc75c4a64479ddd2dea33f9d2a67ebf95a0f8610d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430b3dc39463258eca343deec6e7b6ce0b984de41c1dc5b1feeaa78c6bcb4c63\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6049661ded916ce3feb0e86d514238ab3679bece2d63777d5a337e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ffd7984f726bd14b00af7579318f305be9fe1840aa2e38ae120db3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2c3ccd9a85e772f07df9428e30297d96c4f27a990a242d7453e2948feff915852a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d53e9dba5b4490dfa7e1a52002f6812e9d7de5be06cf62fe0c1286182fd41b924660aa9ed0\"\n}\n],\n\"handshake_hash\": \"400b707048cc25656243a0b639b350ffe93dd307c0c3aaaae90de9e2b7c278f3\"\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944235b7cf4d863cfaeb2101fec1a10a9d9a0d709e8c0274aa9a2668d79bb594784\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e44f8a9ef3ac9c9c82e7217f5f38752f4bbda48364ed7e7002d82cb92f2986\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"db58238704498d912cb53710ffada26c7a467ab9c432817656964f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c7e2a43c2ffd4fd53cd85b6f16e91b5496298c5d6ce6f482775954\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"770cf4828b18e397e1db1227fb74edfb75218e49cd4749c74674b6a7db8caab96e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d4998b074f906501520e5684f1d62e5dc2cafedc7fb5ad265747226302c44717c92692b8b6\"\n}\n],\n\"handshake_hash\": \"a5c181b174f8fb7c9f48e5dd2c6011461ce53b3421edc4d4065e8e8adbd9f6a8ca895b602ed4c81f983ccc54735b4915befc9e4acbf5658cf0cb6dacef159e3e\"\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448564738a841228e693caeec4c497a8bdc0b39784dd91bdf85beb1b2671635e92\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b94504c4d83506f5dd2568b68490eb5f17fceea56a9fc9d258ab2e41fa8ad8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6a5c10a201d4e3a08f79f64949e55731f774913a4d949bda3fcebf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4e8a1bf06926fdd74e2f516e2b0c11cc1dc3387fadeb75389d4342\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c1df7194ca8ea51d4dd99059bc9b90288112d47237d8481f1773fb26a31629a05c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3edba4feaf590ee88dd8f5fba51db4bee651cf41afd410fe476c524ac9b1db24252fc55ff8\"\n}\n],\n\"handshake_hash\": \"8bd1ac7d20daa36bb31bc011a59259e4c0b06e59b5f53448a010584f28f1f6f8\"\n},\n{\n\"name\": \"Noise_KK_25519_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447068e6943c2417e1635fd81a57b705e49e14c3e1a4b2f5625fb8ca81631fc8fe\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884348845ac8d14035060eb85b324208e1dbddd8d85d85373d1ac6d40fed9cee85\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"59a38a7b36acb1262f3eca5e9f4451f75421187208a6a124bd80b7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"66f10116608ea56d3333c49f277e90a6aeaa0f8368e750a21809e9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"15658853f385f3ae27877c86e0a7e5d6bd3a184f6dd72a8f6c1addc7902c9bca29\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"535e0b3daf5f3c293043c0749b8566b695f8bf64ff558c6e3f8886fe9ba8bb1ca55e2af46c\"\n}\n],\n\"handshake_hash\": \"15bdb1acf49a1ce4179cc6218e587d7f9da51ba102b3ffe42b209fe4a22885ace2414b910ac21b9902e74299e0dc40c62d0bbde8ddc7bb4c2090db5c6fbed30b\"\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1c1820e94b1a471672fbe239aa916dd496d87085980013f1052f41d883417897\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f0d44281a027c8db983c61f3aca37a7b028d32c79e245f024f07529b9aabef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98bf30d06a3d9fe75dd3d95e6166601d74dc469cc12d2ce25c34dc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3b54e18a09bb6e4fe476fc7c98816932521b02419cfcb5b719cfdb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f330e511276308d03f8f5f35a4d63e13f385437de76324dff4a485c05b14f5a368\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5ae78f45e5ff13e630674a75973a7cb61796bf9667ec731535a93229811ad4b2cb52ee11b3\"\n}\n],\n\"handshake_hash\": \"40323324fcea6913df22a9133a83d6065bc3b977b4aa5f422e5f4a0072d851cb\"\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49afa95796c2f6c62f6b51d95f3a5e7e8b938c7e78f6083e3c0d927794706185697\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ebf00aaf79f66c1aef6ca81819d3ca4a8868e9a48ef5a385d978b591519dd4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"109b96082130b3e6ee3450edb618879edb627742eaca1ae16def49\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0a0bbc5f74d7c4096de2deefddb0beb967ec15f1daf0025575bf38\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7ecd6bb90b45821cd4b2d9822079aa36c0c11360d73809d780bff7945e1bd76dc2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8967de74a0078c2467e8557174b91dec268eac9ce60445cfee1d25539e8d274f737d4469f4\"\n}\n],\n\"handshake_hash\": \"b38b4a773dd4d2681a0a3d8b4d95adb9918d03c85730ade7b69d74ac65727dad9b75d42aa23d8ccd8aca084b445ed55f07ab100378e9d1906e12f2e464df70ad\"\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a80d03fcac7e3818d355846017b38b37e22a26e228f1b92593b942c31d2f09694\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656336f616d2922f336e2bc4b83706c057887385d25317008da4c8e3cf4dde17\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8d70329dcd69e8b6436fbc39c21d53797b7b829c9a1a7fb4f5fb18\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"69cbf13918ef28f3e606f74f7d21b0a95ffccb7b08e16f838e3db3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c91570ac3863342e0d2acacc7eed0f53436004cde16d1a434ae227fa7fcd40408d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"222a1b4b5a64882ed908d43507ebaff1d81bc5a8cd869af51b3b0817d7242540ecae8a6ff2\"\n}\n],\n\"handshake_hash\": \"5f929a0e2e9532a6b7fd06d2f3f37c0ef55b651873f8b696da4e892cbef1c309\"\n},\n{\n\"name\": \"Noise_KK_448_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac1c15087af22c7e287ade62078c74c24a4d4a883647930d635e291fa26be40a9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c687e973afc39f218459f922e0b144eed83b6a1d0a71ec3e2082aa6d612d62\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"44f9bf2fd7d0d69862814035384cbd4bf0b7ab133e254ec9864c9c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c6e6ba9daefee7198d84faaac0c40a1b5bd10546974db1c2454b04\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2a65a19346bf5aaa1286f5ea8327d43e6430b9d6f7a9ea665718827f763a6adf90\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"adc6246a27dccdcaa19ac1ceaf3e093f3cb0d626d30953b865d08fed3313335b96733f1b8f\"\n}\n],\n\"handshake_hash\": \"19ed13c11859e28f2257f7af028086075f11d8936eb31fcad346a8f09bca8f011debf8ef06570848846afc44c11e408ecebfad7d76deb6679775f815473002f3\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440ee330f2b77e282604f86d5ede37286d61d5cf7ad52eaa273e4578b5e8ef5c25\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843da1ab4cc2fedc6829d5d5e2048ff7c804a302d80ccc68b5b8c7554fc3e6083\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4afee1655cc520f37afb895765804a3c3a62d56900abfd05ee7292\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bc618969291649abf03a7c61982d332d112aeb14aa4ab840b0c41f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e4580381aa3fe7c04b75b4f294294a376b2f9299fd41fec4c7cb139e6ec39caf3b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b602ba06ff1494be546dd98703d8bb87fb3631902a29b0688b8569018b3ef6fcd49ef9f40\"\n}\n],\n\"handshake_hash\": \"86e430a6dcb98d1c189e12784d2019696dec48694cab961adde065153c25fe12\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440bb91929296f5369de28396aa66ef13dd9527fcfc75e3aa80601be2cb4334770\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c1c4ff1ee4feacbfb4a561e2cda871f1855e12b51fae5a72e3ab1030a0c66a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"82e0ba9efe427384249db6fba3436cb3fa601a1e68b188c7327cbe\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0cda93ce5026a6f9e727296b83db7d7512187b9bc77b73bb21f03a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f34b5eca4bd818bbd5877b670049b6120000d75d1e488efec1bb34cb36d2f6c69b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"839d93e5b08eef7c0851308558e2939b49d633c80d37bc2c61a17600c9b1eefb319eb7ad5b\"\n}\n],\n\"handshake_hash\": \"e1511de2ab47200af26889e361a5891acd23c6eb1e5372d8ccb53e94391746e2963f5fd2f2c10af73d24fbfb005e11283583da0481e0d19664198b020f391083\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444368da9afbcd8119433b23f2549c634f601ac0f3dca1d67acb599ba2372e8e03\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439746eec1f073fc2d513e881fd2c925807e8bfd0005f01dad33bda635b03b50\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0e2a417fd017973c324d37649ca3214008697219be6f04c56e2df4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8f6a865055abd5a9b270a3a333910619743b177495bf7f7c209b17\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c33da9390dadbf64719223a5f97518fe2a930cb8e88adc0835a9f809412cce1352\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8ab2dba3798ba870865df5cdcf765b8901c81b7106b460ba789fe3350a763568bec890be85\"\n}\n],\n\"handshake_hash\": \"521bb955b83283f2ada752b4a068dc55c5e7a5305a1c0b369b31225eae82f37a\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fec5050c09b9dba3c0ed0875a0f823007a32af6591ffd43f3f8a44c30e00e9b5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435c035face978d5c614a5d6aef53a359cb612b9493206ba30f9bf9a38f0c6f5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d002ad162737f5fe661d970a5471195a19b324ebeea571682bce99\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7fb225702e02983009445f3770838dc7863c9cb7bca039f968b51b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bb150cca8079bb33784ddef3d75e849ea0b5aca40525f4cc89b44f6a52ed6b1d8c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f82b5e497ba75d114f21453c94b160f4246b9056a1c49f47197f50c5e1d5cad58105a81c9c\"\n}\n],\n\"handshake_hash\": \"6db0d2af8fa7ca8331f813a4d78f13811cbdb5f268c0ed19d252e00111b34476a3f59c99d64cf54af9f9d4c9c0146df5403b2159c7916d4557b645fa0bb10364\"\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6d8cf1b854099cc02f7816b4ef1fd8c8597eadd234e9a3c479fefd31e097f7ee\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6595fa39499d8ceca7b714d8881083cacaf9f60ebeb865e7176418d2c3e8d18c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ae2ccb4b973147b9437401ca264c951b2d7637ae43c621dba8cd17\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bae42062068034f8e4ec1bd5b10a0712842034954f8155c3f7e537\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c84112a20bb2376c6c1684c0b5dd7e17395b653f2302439f3b45a6a361158a12d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"04a5f18e4188b7b17ce9b7e97c18c743e138e87cb26f9bf9fe237ad93512b602caa9226767\"\n}\n],\n\"handshake_hash\": \"3d888ee5acd6609a97aaea8d4410d130f3ab5ea3df49fd61f416b3e221975caf\"\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a477a208a4125b4b4131cf787719be184590673e4c2b6f054f585309695054d68\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b332dba12c0efd92ed8552f70d197f6638029ca3432bc4a3a8c1f853f4f40b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8bfc0c6e99f7fca714a9fb06899ac1e70e4630002ef08a083c8259\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c17139b0776422a2f4fa6b67575908ea36f83b91d206151454ac34\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6cd4b42325a5c4a462a93239ea6b1f8758fedc63c80c444c31fec3e25a5cb3b069\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9a599438a149b6d0d0528bba598c49f41121ac437ce6f142224192661dd45bd292132974d9\"\n}\n],\n\"handshake_hash\": \"6c6671de0d2a15a3eba38b9b3c67a0b87e0f2e4e4112358eb705ef3c15a21e5924239ac3f82a65406b470ba127faa7464b20e1ee435390edae686b39e0f35146\"\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49acb452482b73e8f049f5d199bc1ed2c5ac8346f312a5551a6e402d31d440db707\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a9a757d162e62cd609065404b7b2a5e1ea07118f96e8e220e8851342869c05\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d212429231c0790a350cf5cc4aaec6829705629977089826507b7b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d076a571e56952fa591c39e2dbc451d8779842d6aacf9e05856aa6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"233fec5fab8109bbb28f1a1dae2f4bdd138901cd424973803934f179b53bc28b89\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3a74a2a4a86551123161adb35411e46da926530e1b53da7971d085442792470e322a805608\"\n}\n],\n\"handshake_hash\": \"7ca3ec5e0e7306fb3d3899949afc511b9f79fcfeb91a93a5e62b39f4d7f9055f\"\n},\n{\n\"name\": \"NoisePSK_KK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa97fd02590ae7c3f105b183d7b4a539b2a65ccdb6fbf4f6c06baa1f161b54ad9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650275eb571643827f7ac31735ae65fdcdea0a45e16b04089f48aceeccae03ae\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1b2595115d3338c9b333b399f46564140a82f541e067d0ee27ca0f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"02a022a4f815149a3f7abf6b64eba84c300b75287c11650c951032\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"77330e173d0cd3db330d7506222e999cacc1c189caa8a345ef4606b576f1c562d2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c68495378c2d1fbaf4106021b9ef1f86ed25f5df6fe2e2949957bb482c75a94d2c4eab4d95\"\n}\n],\n\"handshake_hash\": \"5c57491b94530673956f4b3c9748b9f87e9be7a546da99bcf8413ec9f31dae2c6b90bfbbe289b3490638c841422cf32de8c2b4803d1d64eb8a06857605f58ed4\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ab68fc19d022cb8157a50a89a1c1a6de44fef2839276d33c7312ba1c064d1465\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f467e1bc8170f2c0868799703d3ffd7a17640734c610188bc88113e65876b7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e87a01dd8be0a0b69c9888eb06d41f2a760d79e0def4c2e637d6ae\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d10307060c79272a5ff0f177b3d826eb325b216bce2a2ef50fa727\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e72dc3b16ecee61f54f732ee7e7a87b03f55902e8a85fcd1ddd90695467cb7eee2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"81c642b6fdd69dab28c136a7744a60c749535d39f6b1e162b031cfce48f99fac8c7f6367d2\"\n}\n],\n\"handshake_hash\": \"2fc2c63ef94a740b8bc94805ac1a7002d546107cff650b85ed703de004e3d042\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944918d0111b4ef51e92f90632a61e8271b4438cb2ce99681d380e81ee9946d7b2f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436cae18d12d5f8e5070d3efedddf26f8d7166b5ecdecdb28b23743a6801f737\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"29f6a2b1e76cb3586a475cbd9501ed60a531c71455d7b47fc913d1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ad7a5bec1e66201bd4ccee671301971f793efd40fa7039e6fff4d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1cab56189b9088b8e0f1dd496dba0d616196508c34ac8946a1eaae60a48a38c98c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"54fc37e404adf42f6e8b99b02275e6fe1a2b93a475a99491b0c82b7ab804aba13e36df1ed0\"\n}\n],\n\"handshake_hash\": \"e63576d51a0876c3990530575d88a90d8556c6b254d25e0c5845db355234d8caad61090332c66451ed48cea0c53b090b53183e1a2b1208981b1071d725a0a3cc\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794427aa4fd53224d131701afbccdcc874fec6f418e814036e19faa68beca4f965c0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ee869d567094ca6076dac1fefe99b5f3d9554bd77fabc7d5c6952e69571ebf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e5ca840b42eeba2f8fe3a3d9d9c808e7013c23d1eab8f088d0a57f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"da76fac301105531bc772fac05cec148e770a5366d2942887294ee\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e2e50c287bfa6d6a011435dfed3246e039d95c3fcc71db8da39248c892a3e5bc85\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e162ef268a885eeb078a955e1c17c2c9b671dcd60f618b3837965d55365358b7cd8e49cc6d\"\n}\n],\n\"handshake_hash\": \"b6f0b7fdf7b2c2c065e0cbfe4d0bb0499fc78d473ffbc480b374260fb5b25bc2\"\n},\n{\n\"name\": \"NoisePSK_KK_25519_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794460b259d5be35beb714866072cb8f1eef9198721fad789e09706444bfc1ff71ed\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884395e619bcd66996518f6ea4e8b323bd9ec307f4a5c1f7be995c0cf36a45e08b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"28d170206966dbf98e17a35c100f8eeb892f90ea7518335263d0ef\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b1569054cbcae9a177a47c78ff452d2ba552d64f1d821e42e009fa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c58c7076429fd7a64a97c3962dbe0161df17401e2451b6fef8087574aa09430ccc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"050b9746408827e23da44b45bc383b3aa862d5814e44ad64b73420b445edcb653208db5c1d\"\n}\n],\n\"handshake_hash\": \"2dff035e5a86371efeb8acfe0776cf25db1bf484237a889e9af64ad97c3e72d0daed4f07fb61af00a40f6c69003b053231983ea1f9451b2238341c7cc9fccd81\"\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49abd6b4ac86b60f4269e0956bd0d8d5bbaf0dda6fd333f805efdca16aa5dc80c8b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659d4a1ab5b5dd6c039c00f75067384a9c0192b10bb6fa933237709e1646594f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"66a3f0084b24bcf1bc698779d07c448ebd2a54c1659a22b5c13e40\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"09cab9ae6fcc0954797679fa022a1de45a03653aa99d94af5611fe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c4f0d2f88f61d2d0cc3a7ae1bbe3ce720f3054c3a26b881437256d122f26cc8e98\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aadafb15ad782d8e11543c7e51525ea8ba3685c8fa5ff91b92930b124371da23a98944e5f5\"\n}\n],\n\"handshake_hash\": \"9ddbe67db88e6e9f2fdfed314b45d4fab77bd4682c99598f89ba663841260dba\"\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9b757f8fd05f520e8ec1b708dcbbe3d2d6b276e8bb0829549b3fb19dc1abc1a8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651999a91de763c11e1e29c8332cf2fab92cc73f5355063c9343514187cc7851\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b5549d995d51d23324676579eccdea40a3116835dcbe27586a11db\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"792f16ff2017752d109bd1a811612478129d77dfa8308921120d5e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"44787d7d3d26cff55f3f3be905ef10293f3980c83ff35dddb0a896fa9ec86230d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"38f70c8bd14cd17195416f1b69b9c05ec4da865fef4e4f909072af96cfcff2db1bfc74d9fd\"\n}\n],\n\"handshake_hash\": \"600c7fe6580562d072562c4dd56a470a55dccdb9bc1f7e6b13eb56a37ac9b615949950f03fa61e11d6b16a53e51e83e99347d00d9d6c61149b110a2bc9be24de\"\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_SHA256\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2a38c904890db0af9eb5b33587ed40525014f6fa8ca7ab73cfc6ed8acebaf261\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65243eb313442963a62abc86bebf03afea2e05380b8f116e8755e24be01141ed\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"de1d93db7c631fa3ae4fa9708a3b7426100230f5cd909be242e389\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e69d2d0186f9b6b35f219aa0aaabea8c63fc28b4dfc15ddd5a8cf6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a9466624f645c5f6a235cb2d72b56ca55765a735b9af2a3610f1f0611edd6adc6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"21eb671b2f31f50f27503748de92560e07da7336f23ed1a4432a47460cfbd6955bfd27d1e0\"\n}\n],\n\"handshake_hash\": \"d70ff639f877205a288255048ea43272904cb1bae1842cd26ff57961c7be1711\"\n},\n{\n\"name\": \"NoisePSK_KK_448_AESGCM_SHA512\",\n\"pattern\": \"KK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3416222bea39a8d4d114779e3d1c338253aa01f57c4432561ecfc012cfd873a9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654e627f474df04f21e7de6e15480069d4855ff64dc220f5a5a455774f28691d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"676021ed0d4a0b5f689b37faf41b6e3562e7a67cc7cad19eb9acf6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6dda173177881e754c5d1153cccaa28d1c37b6fd379abadf604ecd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3b01e57b9cbc2d81c855061574c9bb0b2feb07f62234ba3e675b0d98082b49e8fe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2c722e4ef66caf55a2bb726ee6f72f61a426029c7d15b2f3ddab6369c9fe30ecdd92b6d50b\"\n}\n],\n\"handshake_hash\": \"a8ae80048144b0b631d0a2eb8e244bc687a7546ed93d903a92ba2220d1b46033abfcdfdb3342f0da670a03348d3d0d181b77cc775dd8422cb09e0ffc90b5bbe6\"\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430f37fda6c6abae4b0f54f9ad38b22fec739d5c4925a8d76de6cc7cf4a931711c6a3c65023ba99a15f888b1ba3b3e773f2a0b5867b1013a1ae3fd76ef944342981df765126feda0661e870eb96a7791\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3644419f0cd1f8d29bfa77ae0102ab35d947e9de5d26588c885168\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9e2d00ad34457ff17b09c8bbe65e840d5899d8abfb9cad8b62e008\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ce3704a625817987d94952215471ee2f38c1ce68a6b60630780a569fed6efe1d95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"466b03c085d7426507a6d510c695e5a311a0e43576bd381afe4f67243d1e17cd41df9387e2\"\n}\n],\n\"handshake_hash\": \"cf8ae0fc799701db46ea154790ea3ffeac9ee5d03d58de8710194e532e632301\"\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e147f7de56b505f9e2170c13779c3bee7a0fd9509c86668c6949bfcc82071ac9f2e118c16ed9bfdd670cb12068707bd3c0ac5237ad77f0bc196574f2a994e25050154eb09b67e48798b8fbe518adf2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0c77a72d328678064bcc38969d2d54d6fa06e4a6a13e91651e4ffd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bdcbff8836325d7fadb52dda98266fe48e38a839fc5bb0f887fd7a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0868fb7909d6e6e98a71c961a9cbdfd2a34f87fbdcddab2e52066a79dbdc1ac8b7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f680c7586f7c22df7df4e8ea98e8f66d644187f17838b9c2dedc0980afbd1b7621dea2915f\"\n}\n],\n\"handshake_hash\": \"23a5cb1e979f87d54127af74d2d1caf919a7fa750f877604b80af37f6940a452fb99071a6082b30ab3aadfa4b8d6a3751f2a2574a20abc983c5681063f43bdc7\"\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f400fce4ce95902ef59044faa56f82999d54d154f9c8cce389d8ba9750a347447d817a4ec2812936c07ce7cf04ff9a39ed24e5a9bee462de92d599511f972c8d882d129467819babc1ca1bec11d658\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0c2c3a1b073d149dc3473e01b1f2c786a8d40abdbad68c6abd6759\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e7687d04f3067951944a64c95a4ea276d579ff20a79ed62b99ab72\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e723068d557e26737d15254952940c36186d7d355d0d645147ddb7bfca9a651946\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"87bc5857e9d4df2786108193ddcf00b6776c64551ce7119a795e5dd3229edf32bee28d45fa\"\n}\n],\n\"handshake_hash\": \"f9865c56ee367f22ba60a96afcac12639108cad0d33b8e2c0c4b67ce64171a94\"\n},\n{\n\"name\": \"Noise_KX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c410b14446bef6eee46b598dc198423c558fe06916b76a2bd48ea99bc8a185a081c9739cc3bcc6c077fc20b2c82a8bfb2fcbd499c43049a00aef3ce7443451f83afe95bf2e7293e26eae387350294f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"212b33a9bae8ed80458c6885eec041506a9b2d9a4ef350af7e1ab4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"350e9456633e1241e9209024b75f74f8beb0a94edb63a08914ba20\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"20ceade6038e18e3aadd7c35138eaa99858c43e0eb7085424d36c0194363679d0c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"27cda5ff7b8ac3b1aa7a1249f206e2279fc28e2120187cbf3ed52145c217d8b0dcad5e84d9\"\n}\n],\n\"handshake_hash\": \"a685d447e680411fa91cbf12d41bcc7c6ab604b831c9f7e84e5077292decbb964b376b68ba112a5ebd55ee38d339ab6a94117acb64e4248c20e4201a94d9666d\"\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e628e17a7d9d0e962d7d4ba35fa2947a4540bb598679867fa1b9a472cf4f12dec7d27e4073649d98cc590ded276ea6ef96740eff65ae9b1c8036167bb2974b291c4510647d19a4370e14e297132923fab081ad4fc680bb3cbcf15616514bb813df931ebb8b5024\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"68cc03d997b896c0bef7039fdd4dd034b4f64666dc65a68d2e6bad\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cac392b5ed74f3465951bc435e01569aaaea72ab02d878ef6c10ef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8a69b570ccd1cc05ccaa1a8e969a039b45400df835deab0c4b516e044a0e073bc1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9568efc62cefed21a8ed3b7988c9b1507fac46924de87a52ff902a083ac89d2c13f0b45b20\"\n}\n],\n\"handshake_hash\": \"51f38aac47d0e72a67e23a1e747427ae4d8e37d2757f2b38c9f11a5ef90a21b5\"\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650308115ba765b54f3eeff57ebf0101804d95b5488673daff0f06f4c16d3e3f882bb71059ae1e6123e0a2e7f947ef651c23e024ab5cecadd67928c5de58b4ba2b9e99dcb1aa56f57126afd4c9085d78226b22e71e16fc6ed61ad25f4174e727ab271f76641e1568\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"be0e18ed5c5e33faae0875bf45d9b976e5d947c64d58698e9aa17f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ace042e2461f4589f9f7d8625ac0b1270703629b8f127d7494c201\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f1482fd7d6e870a570dcbd5a8a0f8df924539bb8ba4dce6c2ea534dbbe236bc0c7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1680568ce44aea171ce72f48e6c37974940422fe68bf3600c633693ef0311bf6e2af267f49\"\n}\n],\n\"handshake_hash\": \"333054d12d3c6b9575d343ed1d565d260b4d63027a572ad255bcd54d77e8422bc4da6933606719f89760422cb4c490ca2e2e3d8dc0086170f03ebac551405bdc\"\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65abbc517cb4b51961b00f13a577b6c79fcb7b3ea41c839d0fd642e5caa1c8cc2fbb020ca86a73c94264316f24f17d5f522a6b115d69e03692c699e73d07b03d4b476b4f31122fc4539b990715ef54acf5b1d24d5b2f648e7dc3dc11353c2f0bfcae3c3169ffb345\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"36a9ea8b4cad7538af889340e0927840636099cc6f38de59f21a04\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1c092b45ce3718f17846a51fb3cfc10809872ab5cd6116e9ff191d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e05c5bab1712b6b500e462b5e270266cf40b9f6eb6c4e125ec22f963e1abbe5497\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b036e6758931c8769a25d913dbb88741b343961e8b02cbe57007c037af7b2f0ed61d6fba22\"\n}\n],\n\"handshake_hash\": \"2c7ac4eac54d4a33097db826ceb327a1e34a709d1fff992128e5f59f18a07cb9\"\n},\n{\n\"name\": \"Noise_KX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651a9210c915fe23d6bdc87dcc8f5ec49dac1beee766bce9f98e55fce8ba00a3935e7f80370a78c28aa5b1a1213f28a008179ddadef73f8ca4c67edebf9d73be1779ec650709466b615651e516a5e3ab261db12508fd8219feb0c0af82c3fef78d8f09fcc3db561d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2d73f8eb23240b22790a0a25ad9492cbc4547a3bba2f49e4488464\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"089732e2532614d94b91980d9e3862ad3f23c02fb477d1c2b44de7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ee2093dc7b3a8173b8a8c114732c83486a309dc35556d5fe9fb35ebaa7ea476dc2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f12ad331068db240840d1d387fafbd7e17545465f7668b097324aaf31524fbda61a6528939\"\n}\n],\n\"handshake_hash\": \"1562301b4276d302ef4b1206e6e5aff7100ecada8fd541693db45d31782b27daa3ddb82ec6eda520332247912c4c78d3505b5003d04fc88c1c3947241ac0b172\"\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433bcf02c23e28cb93f303bd1267df205108aa6b365c84f04d823abdbf3c730f58a46960bfc5253a61d83625c62ad6f2a6eef4a044dbc8edd8899347b63bc97f7c1cd75fce65315f7cfd172b7fcb86b9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98c3989de1c56f918ffc9c07c6506a6a9a94edea87d849c65daf8e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"63215d6f441df2d39f639338e6d1783b144fda5a87311f645f1e9d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6f24ecc07a3da0f232c2144c622c7b036fe933ba4a17af7a56e426e7fa8ed9f198\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9935afa363ba7c8e21eda939831df42891e663986dca96c2830f68f610276a73ec13edc50a\"\n}\n],\n\"handshake_hash\": \"209777b2c2c8cb0123254d09dcc9dc3eca68b4f1cb972cfa46c0255c5ed99838\"\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884364711bbe317c6ed6ffb8d0548be79f49e2627072c58afcb8fdae8dfc6751bd82a2830a439a88e0b894d0e02f2bfbdef68bef970f69ac41abb3ffddd49811a1094f5d37b4c4c8354b5c334a97a005bf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"45eb805f9ebaf2ac0c4e2ff4df37688922601409c7510f12695e85\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"738ee47a536a29c544bc172b62ca29bc99ab6c5f2a1af416a55150\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b9112a6abc25e9fa6cca75d2be0ab54ab6b943f554b0d9832d57899ab1428e0467\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0320e88db0faa9f24b5f6ebfb4be140095a05e246fdfe4d6b58607bb7c111e0a6a513b97ba\"\n}\n],\n\"handshake_hash\": \"2a2503edd33fb08817cd0b044fb096361b558458078114b5ffb529d577dc2ff099ed85274ce181f9dd4bec71d2e1c781417e8421325615eb07fd7f70014bef8f\"\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433fe0cc494a11d8fc6d5ed97b43e8d83fe5a22449be08177b3e252a26d64f5f642a3bb3c975c6481483f9dc38d1d7f11b83e7de1601cc5a8c12e12fbda1c1ed72ffb76c9cf54f346f1ef65570bb1829\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f0ce459cff0821f942c74a3aff72c451144f25c45bdf36b7704423\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3383b14fd43611b1e198baa0132db4c7f50873ebf1ef20969c2d14\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bbd07cfa9ce062fbada58ed6042320eb4fd8dc8c51e2114bec65a627f771046c3b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ccf9e14a838a09f94018d50d25b1d03fe8aebf0ef4755e82cbf4d7e28deae7ff8b6356b4f0\"\n}\n],\n\"handshake_hash\": \"1eecc36bcfe9a295d5a7fa02eabd31469cb029e1581a8da19c783686ee2c5c18\"\n},\n{\n\"name\": \"Noise_KX_25519_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fe68220c2c2546d7d6e9f08a8ed67992861b8474be89b13c67f97ce79c85b95840534fe049c7fb6b47ac06f383660e81fcf7230730f0b90d56b347727c9bbe63427d40c9772f87e824faa027820c41\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9996edf68773f3babd73997aab058aee441c0a3dcd7c40c7b95dc1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b7be774185f7730e146583b0bad9190089c29b14e391d76b0a1c1a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c394ba4a3f8f2f770cf2e76aef12894ddf8cb7ecad020d8d507febf49b2c75601a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"66ccf204325e16e91a894deb6e4a4c520fa911023823d621ca3e4e7b5a1761f47d85cce93f\"\n}\n],\n\"handshake_hash\": \"884bad3eda460c42db8998f506d1b082fd624d2452d77675c30cb1fc14b155797cadd8db541ebd51466b130b379f87d5e8e6709e98d5a131eceeff6c6d55fa47\"\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65426d4449aa6f9d9a192aed23d03cee897f597045f0efe997ac3e1c3e9fab43a83d1f3fb612ccf7f03be19511dc25c3665363f59685cbf8d02ddc28f640d5ce3f803d924296fa94acfaf8523471a3edfa46ab1c7f104a4d97aa871f3d119fc5d3fa2a5e1c4f21dc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e7f9131d83442a7d5023eaa421de8ca376afe94b5d4370e394f41c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"13bbfcea1b7372f91a3573e44be5656beb616efcfe33847ce801b5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3cede0eacd8caa8e58c46637cc424279626ea4996794ba0d22819259a81c558a74\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"834c0873a37e5d1d1d9bc1ba3809b414ff97acbbb71bc14d05a7c4972935af386d2dd54c67\"\n}\n],\n\"handshake_hash\": \"ccfa3c7410c64a1a847b4a995584c8d6d6def1b1fd5f9306f1b48110b1e1d275\"\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e49b46bcd58834a3f175bfdd7620c9d8d2cf00beca612a7063de9fe3644f235d38982917d8c902f57b3bf0cd3debdee16ec7595389d5a3417d2389feffdc61abdfe6b41a4ee8c7571dd9c3de22677fe01099897584462cd9d2e11795d7edeb291e5ddc7fd527f6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ad5c8dce1cee6a721e15c33f8274f0dc6b480aabab9e48b05c9f8e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1c8f376845a55434ab7c7a55bceb93561216d7253137e2d2258b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b7615171f6df09772c9b75d52849d2cbed656633519da39eafce0e5de7922ab2d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"69df7a006cc3d6be3270bceca9248be909e9513ead16ae7cad0fbe047a95d6fada21ef4bba\"\n}\n],\n\"handshake_hash\": \"75058241e01f33a1fc6fff130b6d931d47370a0717529c5bc8d4eb6a88dd4de1a468e8ee201daecc2812a82436d9913d7c5e82f13afecb22675101734cae0bcc\"\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d60fc94e27704bf134e2abe259601aec7aebc70895a30b61658ab1f1698ef501c934954fc6d60f4c355c3ea85233438e2b2daf0bcff1845564d807ebf25d0edff8306c8be34a749bfe10940af5626ca7b93b10ec0148712584e9a9d9dfba6ac8fb25ba25ad7b34\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"99c1c036a54db86432db26f22a3beb1c5e55b306db997b596b169f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"92affa6d22e5284783fa1450ec2a0d1d79a30898d8bdc0ca9af884\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6e1735eb1a332d320148430df14bf7cab9b5ceb0d7d664a7950f380b86573d3c32\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d243dcf14760097d0895c660718d73c3d226a2ebf6dbfe0772b25015b1c65aa0d038b07738\"\n}\n],\n\"handshake_hash\": \"afb393993f92cb78a6849a1ceac4d4be0b4501a2d4584ae60f6e6d01c305248c\"\n},\n{\n\"name\": \"Noise_KX_448_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657d36a2790c4d7d30830ec27fc74126110a1ecac8a74dbb1fa38dd318cc4034c31efb7bced79e85c832d3daef4729db5b89adb53d343a7dfcddc687edb645ce07203c22bf0ed347d952e211d448e13a2cc4ef254e4e09f2d1ef56426923a9f75c6038bdf1327fb9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ae779788b48c9c240c5e3a094da700c223a40522d0a1f8a4165a6c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"97a14d1b84519fbaf5ebdf0f6169a45034e3f8cce85faa8c26f56a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d798d63125f4de8080e9c57510bf31aadace69d71d2c1c78ddc948e88ff28a63f4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"37ab48241307e9ea2d89ad9aa38198195ccd01769bad9b53b5f25e13de2f1832047923b97b\"\n}\n],\n\"handshake_hash\": \"3f528b77802a5cce6a050199d8bd4a0a5df3e3d83342405eec17674c9f393fadd727934a3e17958c930b6560d61c76426c5cc9f6557766b1e2506bcca7348e66\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440f371495f53266962e9591a777abb72c1450218912673a29adf775799ddf9951\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434c49e1f06cf144b8bdc0cb0fa24069f6270edf73a376f92a1b172d61d7624e03f26927318fb23a0418998732f915799a7b62640859b4cab87f591266861cad96a732febdc9bfcb0210e3fe09dba38b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a8463aa247af450e36ec17936d54fbe3c7ce9ff3a21a94047d96c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5b3da500a9d01de0b0756e0cd140af32137e5102b1bb9b69cedc96\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7c8fa176bd6d33d20f823e9d94dc3aec39f409143e0776eeaaf4e1dde809ee5d47\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e3ee0ae23a1d6c8f171ffa44e6dc5fcbdabba1034e3068a3feae0e54c365dd68ff9eb04528\"\n}\n],\n\"handshake_hash\": \"54580ca14faf2a32e5042c612ddab51611a85f8fe20346033c8cbbe015d0d87f\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944dc2f059b680885c612b2052d78477236b89b51b68c7305eef4055c57624f2e95\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d46845448c60109670081b8c873cb85b786712484bf43cf12c13c011497b1daece883f56c33832e51238f3cacd1f34e16116b535555685c544ecb04fb6a1dc12cafc324278d620a5937489833566a7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"273e30e91d668722b11f16a30bb095ac5a4a6de040a6f1c4015f3d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"659f5907b95c017bade5bc356a0a6b9adf874b0b35f4def7c88dcc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ca0b22f0f1f13a1fd832308cb3018d0ee44328ec9f8a6e944dad69cc5945c9ad8f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ac1e2dc2adbbcf31d9009a320ea5ab42b81a63b80d986c0c7d38de29d865424892c825b91\"\n}\n],\n\"handshake_hash\": \"96306d9994ecc6990203a29aadf48994ca4f675ef2524804253135aae3f5884be8f4f0d6c0eccb630701ed984415b90aedd3b7612ab305c4968d4547cde02d35\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448c3e9fc8cd1b2827a45b6bc130a594ba8dee639e699cbc6ecd9035a24e76e802\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b8d2f59b6b4518652e1f5247159562add90d4073da78365f663890dc53236df90b4a42920f9e7c27f833d796b7045239e4b6e59a6185011b4ba80e83c56c8c450b0d1ce37268a89ed3f2b9dcd6d1e6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"09abdd22da1621ea3ff407c359fd6ce0d7d22f45eac2c60782ccef\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c89ac66088dcc6634a77fc5257dba3e504474b20883ad5894ad2b8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d38ff5609cefa43adcc09f7f062fe06cac5a0c6849d021b1e19d8692e047009b86\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"97a896e22cf3721a9b3118d68957961f27b6becc3833659cb024bc63baa13a87a3594e75ed\"\n}\n],\n\"handshake_hash\": \"6077f27b2f2b719127111183e85a072a9c2d5772519a31058a5860de5d660c79\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444511f1f9428f2c5b36989d82343ad9016658d07c7b9f638aabff736a1557f0e8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439ba64104411e7da970be0e7055afb5ca013b338d64b50360db4973430219117dbaadc8f0b035cc1a138161e5333475831ddd036e9b57f816a4bb54b52c1acffed3d2fc5ebf8d0d0def30275a64448c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3522094d0d117a97eace09f8aaf78c8b7f49f1e9ed668d303de152\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"81e4d4b51f451586fa171614d58872e19b3e9cd97e4f19f6125ff9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"dd08306b95e6878bf39814d461b79e014a1e56fc5d93e0fceb9fdf224975a5b0dc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"03564e1060126339cc2b7b5ff69b4736bd094891828588fcc35c9b36e76bb2fc925b4d98d7\"\n}\n],\n\"handshake_hash\": \"ca055c41af4e642d225bc479a1b105a75dd4fe9cbe57fb97086d92de94398c165c3d0d40cc1d050df0c39d3cbf5b915b140d00737d300fbd53175ed8baf35000\"\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ade2e0339473525abe07f570eec9e34de06c40599506737879a5d95dfb0982995\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c34de69db2774464440587f1638a054f363efa1c8dbe9df5e29582a04225a1ad965b05a6b115bcf3a35ebc81f90d57fd7f489718cdbde40afecaf71735b9c0a42707a1d1b1892a220e6e765d2835b8f712b0c2ce3ddc39cac20d7b92a009d5f7a2a85cae897c47\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"712b65b85b643a63bc21585d99165d14ed0353cfcc79796c6bd378\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"52de4ea6728e2c45c2e10d54aceb127c6099c0952192c2a41a3cc1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1711e1fd9e1c43c239c37dae0852ad59e1122a96fea458734a488e6ca27cfcad8c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8be7b2ddbd0466c2d1eaa1df562fcb4cba6bd04123331a9f4e05e1f47b3c3afc86225960c0\"\n}\n],\n\"handshake_hash\": \"6c0ae274e72913679c94134f82177392fc92ec41233de8b3b3bae3323cd90a5a\"\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab222da8e3162a15207fe19f5957b1efc19418cfae5afecbdaba192a7db51d99a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6523e31d5ada9539a881baf41a761354f7444dc630661c561598ab34c595d8d48fdcda073e93bdcb676b82e2b21b0a126f98ea44666e20cb6e816be586aae856b4a4a3b089f4eff33e0ecc76beb7215f97e16bba9f292e1036e5dae85dc9e93239138c7cd8fa04e8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3a949031ff7dfbaeaa13519eacaefc5fab590f7e023999dac8dab5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e416f3d60341f863b2602c128c1b368a3ef280fd5855619bd098b3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e9f1eccc42e538e178d785f171f56b70bcda38000fc4f68c1c77d79cf3c7a9c881\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9e04f83af5b03c19e3d05ecadba6c40e46db33e32a9545350989f1b475de9cf39e13b7c465\"\n}\n],\n\"handshake_hash\": \"db5851a9759e80fe9c77b16a1f332dcc121a3eaf69a9a36e99cdc4afe9cdcefea92e368cd7307638ce7d72a9eab8aaf7b3ad85174a20e78e9b2e730223d123f6\"\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a446be54f11ba718c445798e400afc126bcc0013b772d44bed11b8b0cf4263809\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658de30986406216a0ed85a9aab7b9bd04ef673e49d4349c7a92417b54db2f9f11987f4090e9c24f257adaf09adc1771a9dd3afecfd60a69e30c280bf6ac7e9340d9abab0a08a9d5b9c84abde79b0e4ef2b4653a3fd1b7e432553a5b014abf47853b353a20edb023\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b90da8809dc80caf108c40ae4883740ceee0efb88e119937304463\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4aa1cff00255a4aade3e408a2fb624da42b72ea0e2f0b3a41f0a71\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ef62ab2851c686ad7b20f494f09e02867f8240e7b0d1e5082a45caa64fd0a15a95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5f56df359fd90d3e6104fe4fcaed4086b994af5ec70ee82f520407de76e441c9c1f00cfada\"\n}\n],\n\"handshake_hash\": \"c4611a22f096f8be7c2cac77bdb20867d976c514099ba50091162e643ccbf370\"\n},\n{\n\"name\": \"NoisePSK_KX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4ed84194420b545ae8e912fbd27494f199019c2436e6c3a8bc49ae71f01d0fe1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f0585c1549b0de0dfb9b05afad8219306eed9d8069098f8a87670ce57301de1795d0964ec31dae5084a4bdf132ceab0439c1b2c92e312699f6d609b3171fd8d9729a38b84d784f3d94b185bd10d986ab546175961fac5bf133bdf3cab944fb64e614acef560e2d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cda6e2b572812bcbf58e531686d00cc2e4b1235a6be31396f8c3ba\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2f9ce20b65e60db196a04066ceedbd5aa39d1c60ef0d4c4e92cb8c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d075ea9a3cb76bac313b923dfe13ce69f1e3b0b23ea149fb66928e0153fec51f9b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"44098c22e68ed1a99fdcd8d5176e65c484b9389218847bfa630759d4a5ad6d570aac43de8e\"\n}\n],\n\"handshake_hash\": \"04830e8b1521eff585d2b51926576ed4b559ef4cc7e900bad04d90e9bd5c5a9da3097d1e6bec8b481760b7636eb46b93321a95cf2e034ec80245d0606bd34398\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944dec7440faec6026732a86b48537886411b5c5b6bcaafa68c6effbf1ba1dc4a3e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843276c36f466cf18d05e4ee609a74940adda998b6d35f29b672b214139a9bb84b3e228c899a3042a692e20ad3c42198991693a20d92e493f7330ad36908202049d72e925447989282c4c178b69e20427\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4f1c9fcc104632e908342b5b8c66507b2c965e37366c5dabf09850\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a5d9cb361d54bcfad6906b9fa2070832161a89f03bc08d4dae1b7b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"05dda92bd0cce4992faaafa44249858ae56ebcccc72666ccae6006c502d831fbcf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3dbf8aa0dcf0f989cfa1915a2120dcbef130a0395a0715c8eee6778f3fd6139cd7ffb95970\"\n}\n],\n\"handshake_hash\": \"fe6bac7c2f5e9c3ae994d24ee897ea71d6d947d9962587ebeaf2a058d8f3e7cb\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444865e266914658d4a2dac39a3eb90c21ed577ab9b8b6f926f159e5033e27631a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884348bea9be7ad639e7921192453ffcc0c537f0a60b8244a798885f94838b425fdfecd7b72a237be8b496ce57e5556d7eb08c2f2c694c0fe22e8e1afcc65912b61bce24570472237e03f91c6f0551a566\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"89ed6505491e2229f88e6ffde35cdcba53db606c4da1dc7fe0e52a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"aff1940f847f58c0c69164494bbab8f13016b6d474918fcadbe39a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b00a9de7081d8d0f41d9027c01fd697486075a2aeee28d46904630fa29465f810a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ed9f6bfde2671fd88a62fee1a7fd49cf8d8d6beb47e63ae6a3f3446351b3cff4dc493aa1b8\"\n}\n],\n\"handshake_hash\": \"cbf86b8e81156620d0a3597d933a476a0659264bde74e1a4224f209fec5e6f7589917fe6859d25d10b94fe8c0bfbb96e562798310aa9ae1ad7974431c3c599a1\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944984730594c187666429ed22b7f457dcf51a2f14041771a0f05e6b9fc92c445fc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e82d894f0090922d05944fb7b4e8797e69fc10a51a389a9e5c58d551bd8d9f6eaf2765266aeacd1f0a3473e5e0edba0841ba99ae5193050f2e7c0f14d524b81e6e037b13ac2354237af911f4bb882a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"46cb448019e426720d0056161f1637b2735ea34ff5d27185b497fb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"61cedd9410e873cc99afd2a5b86ed39b33b7967b2e419064d14d8e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1fb66568be0e15dcba992787c1b190aac9f895f85a131102b1a0a63a2d41494efc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"52d2aa9d330b3488c6dec51f7110cb9a8fc78123874f57c40beed06589d0e8932944bfedef\"\n}\n],\n\"handshake_hash\": \"8f08d3b9702f5f5d7b377dc4a1ee8ba32d580c0e5c2621639e4f471de14d197c\"\n},\n{\n\"name\": \"NoisePSK_KX_25519_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944faa31c4de58d9ede5af7d738cad22a4fe2fbc1c44735258a87fcc932f861bc27\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a58c08aba83d3a63bf87150c13f65bd1cff4a0837d115121e9253a3a97c6a4c7cc5813bc98f90b45021b690aefcdc3c94eeb34e6f6c3d7f34782e7efedf3cdfffcb7e4cdb9a93d138afcb6473a187a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a30bc5827b0a96e4fb955df3ec474cb594f39d88cf5c140c1cec58\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"78f1abda2a9168037e3f027982cf625670fab57f50aa95408781b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9bcc0c23a6a60a360ab3fed2b6a4442a10467ef126e4655332f6fe77393f8a0bc2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7024bcc73bcee024fa910270cef104c08fa31d754ea7ce954f0b0634b53992e14a1d5be64d\"\n}\n],\n\"handshake_hash\": \"1a3fbd05303cc8b9b99f4312c55e77bbdb95b23260554cf82068ef5f4cf4a8d382f2934f3564f5974b9cf6db133300d688db30297893f8dbdd804addc4a986df\"\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49abae469d20e0ad767455e29234c20ad63405a8e9102383457d1bab4280c14bb04\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65dd0cf226a4d6780c924e577add9915005c59bff577d0ddb6df8178dd9e22cdc6835ea977c1c13ba4c1f3337a520a7b9c3af36311a2a80c808225604bec5438a7ee31dc4b4c7fe88093c72a227be71bc26f469c5bee67387a95a50edd0d3b85d8cdb9712b37c7fc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"953422de8386e2ae40e54c5cbad9fe109496a9871bb5ca32b813f6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"02a801b482f8c67434c73a442b1bd1acd55a78c0c9443f9f679325\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7c09d4c393d6b50b77711c49eecd65ebfa1b6b0402cd09a7be3737a8b2345e661c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6b28124083f294407588cac99bf63016ae9b6ef2ed7c83b0c051af9ab42a1c0af917137a55\"\n}\n],\n\"handshake_hash\": \"b59f704313d40ff235bcffbd1c663162e78d20c5630d1832f1e1385f61bf2824\"\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1633c13b0d6b055d245e46d1f7d3cd87ae69c61a612802d1b911274e2ced97ed\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653e489f6f51bff2a1a9eaff253717a8acf5883e2baecd4d7a6c4b6cf5252e3b6723b04faa293f20f7ff193aa92672b1428a2569c15de9749033f7d875382aa0df7761e2eb696ee28e541e43c817a8c9092593c427b907c23b3f3d8cd381bdc43866b9f462797217\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc19e1d5cb1a17d2048a4a629c11dc64de6f9d16c75d4af5cfc72b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8194d45f1f934f3889363510cb207792cf5a540401aeb16413b330\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f8c211767643621bdc90102a6f11b66fa7443bf970a36dfe799657c57719dc2d7a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"25c1fc7f60138eb9c60b2742674a6e768cab4a714a4aed0e8cdd146200150934b5b1b8c577\"\n}\n],\n\"handshake_hash\": \"906ba9f8e4efceff8c66453e445ef3a6dbf037e9cc335064ac656ebc847eb722348a6f8ed906159dfeb3ebd84751bc6d5e00339045ea6aefb7ff6ae64613c654\"\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_SHA256\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aaae4e0ba04e3644341c7e1b6d4fb71167612a7758d409b63584582ccf77e8c6b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6556563cc0b623a45c34a5a69d9586115e09779b8f491fcce9bbaaa4e2aa2b599d30cc21f5b04a6563dcbc2819114b2ca6017c5e2741e624eafcc51e508297fcb835ee2eb72ca4de8cd542902707513be23b675fad6f781a342ae7aab60e861d3aff8c9628a3a121\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0dbc323af18e5bbeb65da4d95c12a6578926e44d8d3291c0e33f93\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cebe0b64762410f50627e8763ab30084fa14c259ab67025517dcad\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da31cd0538a6ee9eade326e796bfb5d5dd8d88c31bb45f5f2cecd29a2ab830eb61\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"52ec9a6a8669f4abdf390251caad716d13ae55a51b3ec1b150ddb21276908d572fc3ec5e5a\"\n}\n],\n\"handshake_hash\": \"acf239e1b3bf24f08c5a86c23717caf3fa5a65e79bccf07bc81b703cb4c74d29\"\n},\n{\n\"name\": \"NoisePSK_KX_448_AESGCM_SHA512\",\n\"pattern\": \"KX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c0\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aeb364344e71ee1cf668f2a4fb59ac9728413fda6638bc6870309e1ab9386814c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65bf3508d6f33d3f5fdc99d54560345542ef2113dd0d79cdae3c5141b7d11ba0cc8eef4a910f2c77027f9268672c65461d4a5a9917f57fa8c87e440591ef1962492b2b24461acd3b04031cab325bcc6129b1468e0bc24b0de0cb1ddf6f047469bf5bdef666fc85de\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98358df4bd72e2be260d1e996f4e1d097a1ff7f37377dc99194381\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e783eb940c881ecbbabcb50e43b21e42dc02d9f48d420c7331ebb1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b8be570bb5ac122e6b3104bd5d629ab187994a06dd1a005649e9462a8c515b7165\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5cb0ce3a6a4174f11a2eb0b5e9113084ac0b7d646eacd834ed49a1d00f02c8299663c32d47\"\n}\n],\n\"handshake_hash\": \"04e3648f952ceb807990b4d629d6069d43d395f4fceaa6d87d3f94e8838d29517744d933526af2046e1427128071dfd5975859af41c6d01377b2f088a6f03535\"\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432830411f43b780306e3f94b9e3becb3bfc4f1efc7e77094f5b5b8e7ccdf8da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"822184f6ad708b7539c99ed858caf5ba56f2c57ba55d34dd3b6778\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2f97e72757dd3b46921ce96827cca0d01e819cfc7db9aaa85019b5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bea8ecf42785759819282424c5547c1f98b871a67d1d6e3fdcfb6c2c65d54f2ea1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3c9d968a1c6036ef29ef6a031678c621d1629cb96e25d8f11dfaa29e1591c5648e22089217\"\n}\n],\n\"handshake_hash\": \"cecec35126dd8d59b4327d3cae3f028668b515cc32b3adddf72b577b9b316d12\"\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884361eaa73dcd5e987bdd28993ef87d0eced237c5b109fee819d1d0b49b956bb3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a239750f6fe23939dea706034f1334e42f5edfffa21dd6b272283b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"81acb681b3523314c5a9f2c8843659789d42992e1b2addc50e9a58\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f6ae46773bc88e05f6967bb1427490fdd122cb5433db1020ee63307f6093ecfefe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8433e57518cc5bc88d1b5c3b80f5d946dc7b5ff774fb01ea29cfee78c679fa3eaa10fd7cac\"\n}\n],\n\"handshake_hash\": \"5aa8341a81dceb2423ec350cedddac3942fda477f374ff570b0cbb00d0259dd6d4385074cebb60ba9bf50439dd00b86534b91922c89448912437ad090c1a7bdd\"\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431855403951330e472780b89acb82934247b7cd6a2281c92c0e62adcee051e3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"018b1a5b9d8448320c2c9557ea66909d73e45c1906b5d887225aa7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0aa0f7c92f13b56ff02a3a9d128fe01b8a58843a9167da13e3fe27\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f3c3e5cc49fcdc79f84f0302de823f75712407c4a418f472727c3da75e14561c9a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"02420a92672a3f7f4bc4e4b1ed94cf498ac503dcf5a764704801eb0b993bc3b2cda94b7e74\"\n}\n],\n\"handshake_hash\": \"10474f58c93de53d7c567432798ea690a94d3ad43f45d5c0ccb34e862ea48be3\"\n},\n{\n\"name\": \"Noise_IN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bed2c1e4186417079ab713170775ddae2717713f0a47113aba72b8b09b89bc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8bab0573396490b62091ddc57ca1824ec4c95b31f84931257513c2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e3e882e2639f5efe19ba93d50ac2594838f51af06ee4897cf506f7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1af585d7ae1fe6e1dce8f3cbbeda64afdf7343f61e98b80087b65302933b3b2f0a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2f6a330052a53c2471096f41c007794833a762ff45dcb36674814c5d1a2bb0cafd2088461d\"\n}\n],\n\"handshake_hash\": \"8a96dc58cdbac2ab52290706c3bd5e61b39d1a66eb331d04a7a80e808352e10c0258e840f63abce23588e8daadf15a3f2174aecbd84f3ac948b2735837841b42\"\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650f1bcc5831af8ebd4f66a7fddc53887968cde6e467846467d5a994cd313c90\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c205e34dc1786cfdcb14837b98b5481fea572e4a75e1f2b140f346\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"08efe9acf50b78e00db26a914201cf989ab8820bb3ab5ff1e40288\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f0ee087e615de7e46cd49be196c66081bd87d66bc88db5f2adcc5d2e439d154168\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"acbb6a9b5cd774af9255b13fa7934024e337426268bb4b10a4e53caae85bcb9f1b4b5b591c\"\n}\n],\n\"handshake_hash\": \"baea748031a93062ca032471f5cf40caee1f5cd1a1b6e62c54d9121ea1e13eab\"\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656551e0b679afd00f10e9164d6a3904f175db1f8efcaec9231c4c1d0d6bfb37\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a1159e7c33647519f336b6a937d7484ed59af9215f9372ce1897e2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4da5700e70afbe48a0be4fece9d402fa94f25155bd75bc35a74eba\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"604e9a49d6404a052406235f5bad6d1800f5b379498a0453e34eb323bfa3d37548\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"817f7b85070892b0f00cc34ea8f0ef1dfed723a362a6c499e8f12c068b6a91a066aa697829\"\n}\n],\n\"handshake_hash\": \"21fcc0aef47db6beec767e6e1e037cc1a3af7fd5f57465b96b795404d21e246abd523fa4b1d9250859e40ded8a793ff282b8f2604097f0d3102b6af87ad282f4\"\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652ebab07b9e3efa78580dc4c9962e029e2aba7332564376ca7f0dba00caeb6a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"15161beaeef11204e36c3be8208aeed493bd4c726e5a46f2c95bac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"91f771ae92bf8593dc5d6eafc696c695a899de8531ceaaa58e7636\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d89d0a05de0284f60013042319f75f2898b61d4090978295bd077923191be167b7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"09200b424a5bc6e8110a8f26e86fe219ce2bf35a1db7a8ba830faf376744fd87b97bc545b1\"\n}\n],\n\"handshake_hash\": \"00e3f1a9ca40b7478666dc189e760bfbce8df16b89447e37c76b5c1b4f7455e9\"\n},\n{\n\"name\": \"Noise_IN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a2f6e5c6b45cb1666e8f4750ffcae823730ab7c5e99fcd468caabc7ff86fa7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8842f3892d5220e432339be7616428db95b1fd33ff0576cc4a6498\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0a82cdd224fae620ecf7e9ebc0742bc5ad9c3a2f7e969d8df33aa3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4b306eba8ad2d12e1b4c35837add9ac29a629ad907c405c8ea416d1cb6157b709d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"adb24e94a4490826d0a797ab4ffadfc1994b44f904168562b692e768818f103d2486d9c9bd\"\n}\n],\n\"handshake_hash\": \"be4772bb9c3f7b0bfe60fe28ee8c805aef5fe6787aeb5544b9e2f96d5d03f63920dbf302328fd972a755cc86322e361981def9de64c8289a138fd0695aeb8e95\"\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f452f44ffe6348e3f7564617bbd62f3ee8f9b7dc7cf8e5d4012e746f3518e4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dae823216ea3c3b4121ce0abe3fc97886aa5c1d0e4259ed35e14e5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5ad6ecaecb518e701091053fb4674194b06bda3fab117b6351d6fe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cd34eec35445f97ffdb067c54545dce49c5fed18503701b1a9d78947b5e7c19b77\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d6eb559ebe549726ffe0150800f564550cecc340bfc496d8a180c4ac3ed21b8264989e39c5\"\n}\n],\n\"handshake_hash\": \"7cbf67fb27d74e0ae7f46a6b647ae0601a4c5c2f222d800525bc409d74dd22a0\"\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b19d7b6728da022936f9e2906c6d7985b54b5c7d18b066eec6fc71b0cecb28\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"338f6dbf91995cc8d682392b6bc7b88ff1423284fa4cf6fba21738\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d4a1bf00c4b0e2ed3109cbaa08fda8e689f496557cee2f2383adb4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6c4ebc6c3f2d27343cccebd7cac3256ced73acebab258322375007fdcf1df4a656\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"461d4dd9634f470bfd98d68794cf792ef63a92818f2295b80468443dbc9722f2a5371a3a10\"\n}\n],\n\"handshake_hash\": \"f1bd5b15e30ec880102b356f5e34563b7feef493a1136814afde52b0d1313c04e4ef5bfc79beb42668f3cc9c043274469c4cced25b203e66015af73c08201ae8\"\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430dc5a5f812c94a493da4e62c41bfe8b868c7b65b90ed9ae451f071861e3c05\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7071f1dc6fe0626f2aa7b140d56210d84b8e6711a47dbf697df53e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ddcb0772ff0fb9ff7ea63492353e55287191bcd1b2168112166f8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"66acc4b051c29df252767165a0b60d18bf869892233c5c48c9b530c7c689c999c3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0e5bf2f00aa7d9ed4c3d59383e9aa776c509dacf0381337517cac4214cbda533ac1b686cd3\"\n}\n],\n\"handshake_hash\": \"7132be422d64bb6fb2a31f3142419febc58979ce10cbe0e8d3ed164568a60ef1\"\n},\n{\n\"name\": \"Noise_IN_25519_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aa5f86140972f5dfb166851dcf65162d01d3f296042f48a4031d85ff9447d0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b7d43fc6212aad43c3f95c2ae06fd3fe5559bcefeada01ca7a3626\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a3f8d52800d600207fcdcc76846cdc25076547595d26539aa65f61\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1c58091fc3acc395576804acf620cf4bc8fd9d5ac9bae44bf4d9e9fc2250c5f202\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"180a513c739a61f1007c74174ceea252a6bc4e81d11ea18e852f2c322be9daa088464939f7\"\n}\n],\n\"handshake_hash\": \"7011f1e07d2d65cda3f47976b67a55bed486c43ee7edad6546b554cc9e23b9460a0ed0c3826d2ebdbbb307f86e19833a5ca7cccba4e9c37892b3ef16b18c9884\"\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659a9b3c9411d1402adcddc8bd2a896036201a90db10895b77a74bb694c2cc41\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9fa62685cff13be722960f59aab6e029e5903b787c127040cb254\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1a15598a113a83172d924fc0daf633a349e77ed83d1802ea0b7334\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3b97ed2b79a63ede478c414d6bfb97296a45e3d27dea2d1d60af3a2ec76c0c1fb7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5845e323e3478c1ad528dc82f58c2ff72c4fcbe67a406792ded7ae6fe291d4dc3c1f551e94\"\n}\n],\n\"handshake_hash\": \"79270605b1c0dbcafa18fa3760a19c8ac43a24360e71a56c05364c23ce1be3b0\"\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b8ca58250739533c0fedd6e49f4fe503c13922f204d31f5267fbd366ab7278\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eb20fbaa7a20dc726f55c4fa99e30f1046985bf88729c725ccb1d8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"40ad58f77eafb4db2f1aeb18292a74503bfb2201fd4c8479094cdf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"22332e7a1522c79180f31d45b5c3d975aa1829d848c152d330f06762e6b4d87796\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ac8a6fdfbad4386523968e6118eddd3a5d3b940f61fd29be6e7f0287b381d01fdbdbb3ff46\"\n}\n],\n\"handshake_hash\": \"79e85722095e97ab2e04db32efdcbffca8e6e8894f7c336b73f13ea5edc936f9a5132d09ce2b62160923136372543f3b2c6d3911748dca4c791ee67b46f27d78\"\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650cea34dfa717d42cff42661d898b73b1f9c2efa205f7ea0c0a15ac66238b51\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0de3734e890dbb95f738b232e4bac2f8f1ae98abcdd8a983247dc2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ed3d13cbabb6ce3e2be64fddf9383159f6721674e229a50dc7d6a8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"68f381ea7c422817ea8860270afdfe67957816457a840b51cac081113ba336fe78\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e017d12319ca9d1bbcd1ed34e8f7819ae8d9e13056fc96a0d644104f58ba97d6379c3e851a\"\n}\n],\n\"handshake_hash\": \"49ffc2ba4c7507e262a1c893f19f8c0b9fbbaa80aff3f938c9f0668fc7921595\"\n},\n{\n\"name\": \"Noise_IN_448_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c77e36614ef4499d00b3efd227da4346178c82f7a117f07f6683b6794b8fac\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23a876cb6e37930448ef9d7dde2e02a6b55e330bae229075cbf1c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"107787d23f6bba913957f521cf91eb1f3bbff7ea89993bc8532d0f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"06953ad94337ce31a169965611f6c63c926a1124cb6c0c2bbadfb0bcbec78d6b27\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"505a098aee5a7160b8d31b0a53aedaa36acd837fc38a0ee84c1018d65ffbd87d6e710625b3\"\n}\n],\n\"handshake_hash\": \"d5b1a71af33c8ebafb822800cdd2f3e9daefb007449045e78d1ec370b9444fa17a16dfc33592a77181990348816d5d731a6500a3faf6e98b4fa874b7ecb928ed\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794450db77130535b92b03cde79535661df3e96c706490b728777aaeaaaa5246f856beaef821d1e9d129268531cdb518cafa34bcbca9ff477b981f5f2fe450be6c2ced5abe993a4c814cf251a78def4ac5a6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884335380b2383dc510d9326c7443aebebfb71566ac2b379c7d3e6447c2444253f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"64e7faef28e93014f7e109135cc774482422dc28901c0f73b10ba1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3c34e097c5899506225e3b698c64755b948568dfd03f3090c4b235\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9cee3cf27f7355ecbec606b2f0a5fb509312408a7d355d2b9ec43c53bc2aa90089\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1dd5c99eff92d8983b5bd566f2a3b4701963f87d0380359c6bfbb0e07dd2b89f579e22b9aa\"\n}\n],\n\"handshake_hash\": \"a813f84a72422a282b09795361af91305cc99773dd7957a9dacb3d7245b3b698\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944dd2d656a43fbdf2ff9d94d4622b5f32bd83e44135ce191b1fef07c06ece394c0dfccfa87386e811406c62fa9b05ddf932228dd993603e4abb345fa9ec608f9dbbc13c46a13b427db5827e26b2f441be8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434f4ef91dae2f7abcf7b4863020f1982730303f5cedf66366a79584b14ca335\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d13de190eb9de3720b53d2c13b47b11fa58632698e030a3d04c867\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c2429d8bb5370f1340b588f269bf1a7b82b3c72dc6f18f43768a23\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d4c7cc53b540b854bf37e62252145bd4cd6c13965dc86fbe3a91bf2eda2819cd2c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"586b62e52e54315c51e536f3bebd26ffcc5c01cc2237a6737db75a7d16a2d690f4b7e7e70f\"\n}\n],\n\"handshake_hash\": \"3ca0b0d5dc0004f80da3372de01c1749800eb9c658373b4a401bcfe1f0495415a4e6185fe62c163d88be9c35e3bc784a963c63999a8865e61129e967a9d05655\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944617f3d619f318694e0aa35d42537f9da693061473a1774ecb3886cf3eda70e0d29c5a149632a903896ba9712a8f8d2d00de526120ea14330dda15c3805aa19ecc779b9dc4c5fdbb55d2df5b041496a9a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435fb423ef379dd2300061afd4f72f4dcff23af11b8b190e1771f1b73cac330b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"36e135c043487e6afcf7b9e4379618843be75a61b0c28be1da9d80\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"de10ade83d0246f1594d7f913c311c1ada400da04d5a3071544c26\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"96dc3321f2a166408040df0df037ce2f9a6b6a571d0f1d604595541c5c43b8519a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fb0aa6a9c3d0c7d53f204888675fd35f251adbb3d6b40be760c29c93cd8b4dce9f4817ae4c\"\n}\n],\n\"handshake_hash\": \"e35f4ab520640ea05acc57ae760768d143d07f6b72a20fcec4cbd7a87ed2c530\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440174ca7a010f813a89aa1978ab3cb67e45e726c551adf4fb465967f7f293d34a44642c6ec6bee7a7a79b6b6e90ede4b7612dcc03650590556e9caea0cdab99fdbe1e07b8cd798a2262e508ae9fe856c1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439e0b5d73be4f7e4cf00bba6094531af89dc1e44acca9243c62b751a14b6d06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e20e5221ceb44eb58995c323b3a182406ea1ed3fd3e874bb029bd0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6d79e44c2eefe55696c3d51a074b680dd69c258cc55240487d66fc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e5cac22f16b8b43d2f174ccfcf080fc9e4ce4dcba8c4f89c5c51c57866ebff11bf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"148bd3fcee663078d9f8792045ca59fa7b9bfd23d1fc647df13068cf17ab051fd4af644ae2\"\n}\n],\n\"handshake_hash\": \"6b23e4738c13ccb8ca6c14bc83f15e354df78dc1de5c1cd567e8cc6ee6d58d6fdfe7dd560205b3c31d924d4a9b81e9a8d268df7847139336a1759af86a076ff3\"\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a83a6f0729bf102709cbe6c728b8f94029c0293a69d71095d5a437733c6e18197014d03051ec6db08ab04417a945af1e9062f095606a4e55b1c21d6a210a99f55b33dd9a57696c6bedf9d85b53154de3d8af3e713183867fda1b22db681733262ccaf3b47b7399f81\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65fe0fae0595e87a88d549342a92fd3cf69775a8a601a23cb530981e1e3f0ee4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ad82ec8259d6b9adf1f612ef0d532940694512496aedaeeb00ea72\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9e60f72c667d30560ffc113afa3e5b5ab18d8085dde6f3b3e28579\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bef8a69e27deda11bc2a2ce4a78e59d24459c4f19bd3594615ef0ca8be18a61491\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a9b5dd276fc3aae55387549ccebc002844faa9ad8ebaedccd52f11d1210f799791ca7564a8\"\n}\n],\n\"handshake_hash\": \"1c61417701e900cd151173c90c4624eefb09195c0b3d9473ddfca09059d7a704\"\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae59d968f0c85d2852d00563197ec794f5683fac13b1949044eaa85755d9d1b5b36b598f604d095fc1452416098af6ef56c2370b0f4ffc2116306dc876da6b39aa7389b1e30c19a207757e817e09415963e470e2a25cb013843e83f94b48401cef3c71edd91916f00\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651f733cb22dce233f978b79022e73bbb9c7eaf6308d13e97e27436fa0aa6208\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"545763113462ee02cdb562f0b2b3e581ba3c1dc66b9adf1a1749bb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d6b63973078f1142787367bb9eb6b0f5548d242fa5d3e06908af25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"23f3658e8ad32a40d2cc722733a360f1dd4cc0f774a192feacd55b0e7d38f3c22b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"871d5ed43434a833c04cf89f5b8ee457952abec5e0fcba6dc96d70a61e168436d31cac47d2\"\n}\n],\n\"handshake_hash\": \"1991f54c306349e62a0e2970e0d2ee359c3b68b68d157051c366448e1c6c1545982b01849b680b1a1cbeb10966bd0d2249b33e499a592589ec922763d2ad95f8\"\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad07ea9d81e108d7cb52d680ffe738c96fa437eab19e9c8073677bdc2d3dfba84952c366d15323af0423b974dab7ff62d9141b9d8a80c0270310ff3929e863850f5428faefeb0725cf6498b9a5d9e98a663fe98b1fa90c97d688dfba4dda4a81b68ecd3db01ea2e48\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6593746d01e3ff6b995500c741b4af6dc79e3c1a095fea4a4f6f3cac23ef5a9c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2cbb6e8460ec3d7be2963f4be70c26ff902f89cd822472fb619b8e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b28303d0c7bed17aa76a485346c39a9a1385be3573a0363b64d262\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"48f72598ed7e7442871ca50f72aa346bc8a936f81eb5f11ddbf64a11789e5ce9b3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d1099d12d9d13c089f2a5d3e7d5f6a4ad3934d751912e92ab941cf21bf255d7bf728b9e881\"\n}\n],\n\"handshake_hash\": \"410454019ff9f9a3901690a17b19a35b8ed3c0909a942f4747aad49604fa098d\"\n},\n{\n\"name\": \"NoisePSK_IN_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49abf213c19f6d5dd265332789f269519f89e1c524c90016d9c6237b384ecdcf6334a9e277673d697d666a0dc5b22223bde9e6654c10e7bf2d00948439448b23c5b6509a827a320439d8fd8d0208cec8233329658ced1f599b3d6f40ea4747968f10e3c94c76ed88ee2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658cbd6af3e0e481830e0224b1898ccd4693791ef3c4ade3130c6fd5ab28304c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7bc8b6d0131b0cc9fc9f3dd3f5d2bbf87ecd4bfe312fa2dabe69ea\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3315b2d1e5e7c708bb18bff7e676b2d05ed1bc9bd1b25b962f2aec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7e5ae94b116af9328b787747d85280cf90f3ed953eca99990231d3040cfc76deb1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8203a45b366198875474674edae15938467e73f07b1368f8ab513f7752a91c711263e26808\"\n}\n],\n\"handshake_hash\": \"94e1995157a0b1f178cde01834c119624d96b816c55bbf8b6207c8add67ca4d5d78585b9263c671d925b30ebe70212408fb238da3206321aa462664b19cac3be\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bffdaed3232eb29bb2f3f4427b2b3c3b6f35fdc2134c0e0a24679d8e099e1bc2e3bbdb1f1690848862b4ec95be2545a20d3b8cdb99f5b65a9df928b3ad6e6f036a9d66c31c9acf49b373d2303aec3d3d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843acb8355d3552ea99223e9aaf3b1900dbce1f825b8b6c61d53c476f80331cc0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"df86c6622fedf17fa6d2e6caf1aa03da83ac04ce466c64389e6208\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8508c137c6843423527de810960ac763cf365ded995f0a0b7fc8d1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fbdd16ae23a85af7a901bc65c4ac716fba28cd95254ba57c10bfd719f11e460b4d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9937edb2b833ac5e8153145808a8e8f8225f4a0940aee0d09f26a972be085a27d0f8827fab\"\n}\n],\n\"handshake_hash\": \"82cd053b6175b686b3b09691402bae8dea062a3be6b5ea4f434221a4d0f14a56\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bd21a65e240439d5d71dac416f879ab7fe0b36176e8278267a8394e717114f930fee393af9705e005251896c437c5cac82203fbe43e55ff1ad81095e7b1dbbeefd7aff0dc6abc9306df051c05b7d223c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b9711aec6957c98b52f70003012feca1b6878cb8bada4dbb7ccf9894ddb44b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"765f0cf177e6b364375db77704309ebea6820d66f50ac1f3910885\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5d7861939a6ee8f212084b67cc30aa97de40ae24b423e84aa97f8e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"382341300143c162a6ff550ac6bb581e300e9a8bea77c96f1deb101799d1d79d00\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dc791a55d673e69ee9b045d14399e598e52666816c8707c72b4add49cf797c8cb646ab6671\"\n}\n],\n\"handshake_hash\": \"2c7959654c68019a59e4ff9f9ff759b7f5c3f8d98bc8a849c3f3b93b80f4282d8c2cb26e9323d3867a364b9091e5ddc52216853a91686dd472b84b78efea2e07\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944aab6c1c5ec48ef622121211fbea39176166dc1c4a00d5bdeffbf122f3ea90bdd1171860b03739dc874fc20af0237f94c8da5fe06d4a5db454e020a231ff72a5b9068e710ba848c52b17e5d6ac582e77a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436a3d8ac8119b4e5acff5ac49851540ca32f9b88311852cff2ed59bf7425bdb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1b749ddc92e8982aee0aca0b0be4dc101e1f159c541209816980a9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a9e38b343d022254f9eb17e7e39d6313e788733586deab80177245\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"43413900ed25ae8f0fafecce952011e5adbaf1556dbe80b83c862d3b2b0c67af02\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"984223adb6dc5a293bdf48f4c7c907edf3c90af6643e9f733fd347a0e89a63539b45b4b947\"\n}\n],\n\"handshake_hash\": \"a366e6ed0cc5eb561775ebc14d52d9f934879022da186e85901fb2beba5b1547\"\n},\n{\n\"name\": \"NoisePSK_IN_25519_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794478dd08c585f8954c46c7f0938a49cda490050e4da6cb6ebfb749e0a6077fcdb353093c9c9798eec5bc9cc27441bbf8fe90a6d3fe579f58897e1a945401ecb607a001259c6fb429634953a4d5456b3a4a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884313936debdbd036f53e7064748ca660dc511fea1930903fe6f8f97cdc3b5ad1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4e23144ec104ed2c5987240daa6e8b27cea5557a8da31deecea79a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6c2d020118ba86e0ad7146cf424fdf8c6679f9b342d25429911450\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"61541bd8ecdd323b6f61aa7b18802e0f73ff28951db428fb9639044f9d67b6e005\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c05b887acef1478ee9fd7d812667576eeb1c2ddeeba36a45476b6da972e9da1c7bd1a93a88\"\n}\n],\n\"handshake_hash\": \"fd8e5bf58711cb75c8e5b9200b39ad978432fe7844d252b844f208684ff6bce45e1c54abfb543085efa514287f53e86e5d67a48a08ed91307c65db33cad04b84\"\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9498182d158e09f0336b810afa7a33682ff98d1427a3eaba91fa0e41e845724a02f3e574538e4986bb042d1ba9920807d2e8d1c4852a86527a50482f0992f59173038345829150d0d7e8ea09003c76b57e41661a55886552c6d6a361d3d70dc170db693ef687ef9b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65fcd6f6801e07cb7b97156d665de283898d5d954619d7581e90b2961bb5aef3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"80f20f67601b7eb5daca2412d885fa4f07d656b251297e801282a7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"903f07816c8d0252139fcacc748c80c456d95cacdbc3d91a618219\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"908d6a0abc505c4e19c6b8b63455e3ebccce8100d2d1febf7d56a00d92ac506537\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"76e0a718d3b7808aafb87ea8b494ae013c6202b47a7d7cb7db0df73c0e6c3fa61f82bf1454\"\n}\n],\n\"handshake_hash\": \"0ba35c01f2872abbfae498627b8b1ab11ac13e267a797fd94cfaff6bc97d83bd\"\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a57f8d27f10aedcc601e379c78bed7670f03b98c6b71154b34c56ea1e0d8e6a44c22c9b4864fb3d241f41f9c5fb884958309f7b46ac65ee80ed443345f01de0a1942f1eeab57e9c17b6a4054f1ee57deb68bdac4435568bfb6df3324800209a9d762572dcdf7b7d14\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e94f4b96639d5dee3318d3ec495b09b6f1de08bf2095260cdad1668a31b580\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cb7c5278b7f9c5b596df6428b0c0c93af07f339cb7f0e0bd460a2f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f9f3bbcb24447c230e8a60be04f4e370ceeb4a51d57db89a3a9d40\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7a492d62f8f3c4effb417f2463d1f2c90abb4bf0944ac3325c2f3840b9d9ec3fff\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3c23e8975fd7599c97296f99e35ba79b5db57fa2266d2e08612b9e2c5e042f8f61f1f05881\"\n}\n],\n\"handshake_hash\": \"a000f1507741f15798559ba05dc1421491ea13d901c8439e208727ba59771be4a518ee2717b425844b81040179bc1ab22083e877180b9ebe871501e582e7e57f\"\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_SHA256\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5d6b0383c8249abf512fe9557107306af6540881b6085fa59087e31967f9513bca4c97b97cb8f4a46a28ec9fc2b137951c2f5bceaf2fcbe78ffe4c4187626663575adad1566e6e4c46b9404193a07a3bd32103738905af1769d82b7c193c8e02b668c53eb046574f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d87f8818daff6b5087049e43cc8b30ad1670da94c9a8ceaab3d0530c00b8b8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ed5db7b829ee1b88e4b95a1523fc3054d2b2d16279bb74312c63a8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b8f029a94bb889e8e3d8ed25775fab0d5bff2bef921372200d2a08\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"74cc86c2b0e87a2fef1dd7de8741fa42550d22274c4a55cc2c2af3fc6f15f8d291\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0750c003584ef4ffda436062a0b9f295a1e96fe29744242e3eee6675c46eb14c7afa81dd2a\"\n}\n],\n\"handshake_hash\": \"26e4c6d1763e484147c66edf4ea4ed9e69838b39bb92f4a725f1144b40a29e38\"\n},\n{\n\"name\": \"NoisePSK_IN_448_AESGCM_SHA512\",\n\"pattern\": \"IN\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7ef512aa8040a6212fd91b3bae12a0e460f575eef58a3e0035891979ae13a938324f906038fd47b7ffcbd3bb583398a2f4f0aeb0917549462b0a805ed0779496c2ad2be6fb563c10445f594b88ca0381e6552782493cda5b04ff26e1420c82c10e52655d4cfc4e66\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a1d166d6f1220b9f5273c21e96ce29600d6516c812730b9085dd47c01ec82b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4614a0d31ce4a81a96a3872a72737cc28d34e5ccf8fcb10eeb9974\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2e5f2ac941e174e6d9ad11da99c40d6969850d9234f75a74a3cb5c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e93f3a0428bc76fb774f113f48939ab8b7cf5ee853d12a864fe81b75695054e94e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c3c14042900c17ee67e11e847bb1398a8d502c0885e2442d8d191e3d12ad850947f15bf6c9\"\n}\n],\n\"handshake_hash\": \"35d166abce9f547af6d14ea955c08452d567e783f32048c0cd2b8c6ae5d8c792f520fa05d585455a783f17b6eaa25df96b6fbee96737482caac4016f8340a407\"\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440b03ddc7aac5123d06a1b23b71670e32e76c28239a7ca4ac8f784de7e44c1adb78f2058771dfd4229fbdc85c5fba3b587b1d171ce368229c7b752ac25b8faf4e7b2fab7326f0d6fa1fdbef58de623245\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d9b5a8927f0ac9655ef76833bc7e55269c081ec38c61031f76fe15b2aaaad5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2c256ed08fcd08c2980f954ee4beaccb61c9581340f5dd2fd1cf3b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d6033f70eee20945c7c9dba304e397ee3b284ff5e00fd9efb095d3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a9c068ca5d8babf72560652d8e851adbfac35c8a66e810d560863173e96adf4cfe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2a09d8f459e5927e40fdd2eddc99bdafb04e13a26f145cb5cfe9e6ba34c94331ebc17d5156\"\n}\n],\n\"handshake_hash\": \"45e34c56ca0de9c348e104edcf503035e5559ceed661ac22916f6f171696d994\"\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ba83a447b38c83e327ad936929812f624884847b7831e95e197b2f797088efdd232fe541af156ec6d0657602902a8c3ee64e470f4b6fcd9298ce0b56fe20f86e60d9d933ec6e103ffb09e6001d6abb64\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439f069b267a06b3de3ecb1043bcb09807c6cd101f3826192a65f11ef3fe4317\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cd54383060e7a28434cca27fb1cc524cfbabeb18181589df219d07\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a856d3bf0246bfc476c655009cd1ed677b8dcc5b349ae8ef2a05f2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"49063084b2c51f098337cb8a13739ac848f907e67cfb2cc8a8b60586467aa02fc7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b9709d23b47e4639df7678d7a21741eba4ef1e9c60383001c7435549c20f9d56f30e935d3\"\n}\n],\n\"handshake_hash\": \"00e51d2aac81a9b8ebe441d6af3e1c8efc0f030cc608332edcb42588ff6a0ce26415ddc106e95277a5e6d54132f1e5245976b89caf96d262f1fe5a7f0c55c078\"\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944718da798efbcd91528520204f904b9bd6c7413dccdc214d951e15253e39987f1508bfd10ad143e921328082a3c3b9e50c289f0294b29960a72f48e0b7bba2e89f20d17ed0e4dcf718749c95a941a620e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435361e70b2ed446e6c9ec387d1d6b3b3380e00f0055bd7b310e12947fbab8e7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"050e9f3c8fac16b68dbce8f8c4bfbf6617c897f9ada4aa29aa19c8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"344233a6cabb7141d80f3da2fedc311d9646bbb0f505afe403a667\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"62cdeeb172ad7ade7aa7d9e069da5790f12331bfa00177787a1d0810c67dc3b2b4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"029bead1b40992327044d409d9a1f3ad8f36c3c452775d557e18bbeb2e8dfcead32d514024\"\n}\n],\n\"handshake_hash\": \"3d8748e8f966293aeab5cd9a2e42ad0e8d0ebd83fa78957c4664bc6718613eeb\"\n},\n{\n\"name\": \"Noise_IK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447a2281c0f1aee0c48c41333a1abbb349ee4bf12e09f8c4fd66635aabbb7dad345826d359e4bd6ebee659f5c6cb3d2d4ed12f7c7ffc9fe5513818d9cf9b8778d1502f90649c42ab4a1e3df7199a3d6a13\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f58050451a0edd2a40bb8b0f6b51ea63e1f1f429f1afd583e5d6e53f44da1e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cae0b6af5460d026e80e22c27572a92048176872538f91a056a8df\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ab1440d2b5892c638a11a7fa6412beaea5cee62342147f02d75a68\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0263ed778a193155c9947202e0b9d35eb46581a902449d091e1b6575a9a59fbeff\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"95aedd9192351379cb063c8d5827d5529c7f2c8929552dd64c57029734737ea2a405255dcf\"\n}\n],\n\"handshake_hash\": \"48d8b650f042c4767cf1f3c26b22ccdd4bc8cff341166603109954eab8a9bd20915d284b6b618a325e93a8e949a23f4b62ba3094aad0b640c14cbd4f14ccd1e1\"\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac05d03d95a1aaa6d6fb3a9adb5f0308a5641c7f53283383050fae60a134c2c716c42a5644acc025c40ed4ac02b3dda677eb5a468c04a7d28b0667c289064efe9347a5a021ef01e3f39d89199d4f4b5e91429a2365ef7ddab0189ffa11c0725f80ee11dcd3236ea0d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65700c426d0b1f3ff52ab76c7767f16c448d5a545fcb6cdba309de89e459b8d7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0ce59c0e9870d1f6fb0077623de2b891453121c4425a79047eb982\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"204a164a29f774b0d6a73f8d1722ad759eeaebff5b0ab9f7d9ee7b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fd71b6b5f1646d134c8d6cd2a346469b777ec4216af68208d96297758e0a8396d1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e09007536cbb699e261bb59c9367e3d7d79885bdf4916ae662e7e9263be265d77163710bae\"\n}\n],\n\"handshake_hash\": \"e4a237172b6680c86ba09a68a8ee15f6db73b42136a1a7507e59dbedccbbaed9\"\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad722bcaf1eeafbbc35a7cc65168143bf6e6094ecda0baa69fde2da8be4fe7894a13d0040e7d22c6335155fcaa3eec3ca846f5b5a44837368940c6e1e655a2a33bc5a5abd185445550a6662372ddffc98acf00a42517902d349ff9e3bb5b419f05f5b4fcbece667f0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65780dd82f6a9d1a9c02155f42719918e39186b52265cd89153af9b481882f90\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b47460956428b1badeaaf611be498746c3728ca5299670667239d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5ac6b40533a66340fedd4a1a9bab395978212d733de9d1b0ae237d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"12101f0bbf13ac105c03e2a3dc6aab6090cf4282ac1c87885ee572ac65b8aa2d2d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"87ff954000cd67b9853dde79ac2cf346dbc2028b1f862f99e65b9d047f155cd76d72503952\"\n}\n],\n\"handshake_hash\": \"b2e9d3f00b0f9fdd678be80aa63e94b297c6a67166eccd7ef561f7039ed0ed7a7770a77bc79c57225e639ca32845f5cf2d90a90be1b52270899cefebd92883f5\"\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a352150d389c72f1c32176d82056f4c3d850e048d3affa79c96f7fbe95dbd9ecaa1927467e6abca0d7a52550b3c12b219a0c71ee0b44c49ebecffd0dd49d056a7d44697ec8d3374940935ed1845f46e218bd2e6c90a5463f580e01d0302b963499fed0e83defb2814\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b886b4efaa37a3d770129e31a33d136ec940d4ec0b7f1071968f2914e3bf90\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"09fcd21f19bd0a7e1b00eaf5c48daf27097fbbe22a711bb3501030\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fd9cc62d961f6cb090fbd7fff83f0520ea1ae8e5505aad134299c2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e21a66b8818a361cd4d30d91cb6d5408cdd1fe5ef45005c28aee3b704d7b8c4c3d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0a32e2b75c6aeda577ebf46a34b02ab94ec6e16957b7ad5f0617e28c7bad36125149e02745\"\n}\n],\n\"handshake_hash\": \"04feb3d8ef7cc637280368e818f11c3c3cfd97a0d7f6c17dba8bafa6906573d4\"\n},\n{\n\"name\": \"Noise_IK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1c15cbcb45be690918b6502c7ad6225bbe1338dd37e181bde79b30fdd9a486d024d063354d7cce596ec4acf3051cd54ea90c56ab85d1661e0a89e76b8d93842b4320d45627a615c80bf2bbf2fd1f3f284ba18e36d9ea5c6f2b93fab42a353935093afd04ae107a36\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6576eb73ef62b5f680bba7e7c4c6db9a1d9a2340efa42d38b96f65f631eacfb4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"adaa61bfa33c31487c95457639edbb63ba6e493129ac180bdec1df\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1e47c4d2292e515be90e4cc9930cc500dcf3b0a30f08b3a5c77121\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cb2912c81039ac4a808013bd52835ef235de1e08761e4b8cb355c85323f58275f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ead620e1b0733eb87d0246d70ee190c91ea75a5b30e36c7a4d345b73fcc659e2df500276c\"\n}\n],\n\"handshake_hash\": \"a458b082dfa43ab9dd20863ac914f2bd1c7de9e58337126c8c3e0f1553910527a63f3f75ac5ce0c3f09bc996060aaddb3fa82d7a0657c54edea43bc0b6e73dbe\"\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fc16af5edc066c93c77be147f8e6785cd6bd7b27e0f660d02a6a566ceb61b22a262a00686a231747101174e118b0f2c817319936516ae9ce0862fe172c77a88328fa71c0f70a901242ad1e6b863bbb1e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884319679a2f2fae0ee3700b9d1f532eb7edbb0612d133e9a3fe48b3fe619f81fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"daf849a4f4bd8b0276f120b017b9dfdbc9ed667ee98316e95de1cc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cdf2321b9584498d0ce313cb0c995c3ee2d679c1f3c22576ff1e90\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"abc41aa7b17f5d7c5b8454c203668718a15020b72729f1243490ab54150338293a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"59bafe529215e376187e06fcfb6772d6ca7f0946877e77aafb4a90a5fc6c4cf82344d5c949\"\n}\n],\n\"handshake_hash\": \"35a3fe756500cd50c3b175f5ecb783af9a267c58cf5f33efbad3b72288966b8c\"\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794410ade309f400533fbc81fb0e8b55288091ab5fe35d8c3d5033dbec503bcfa062a19e1190e00335b5db72fcf7f92729794889db4631c5f5d18d37edd34e113a663d3030e5f0d30eefb9ff7d5382614dfe\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884361923da61bbe936aa0e52e679c8a036e0f7d9cf57ba5f9c4b49a8b0175d9d6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"76c378c26ad0616d8b5d12fb30069a3d2006f09c736d133b1b00e2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"44256a9fc73f965bb05905cea2c7f42446fdaeaad4005e3bfd5363\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a760601455d420b671156c561657a8fdc110686208d9ef8f524ad3841f5718ffa9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a718f0df83c0a5e0715f7212aff997d406a65f06660102a7f522d9d5dd8bbd711789825bd4\"\n}\n],\n\"handshake_hash\": \"de93c698690f0e82ad2142733828b73ed2f5b0526cee7fda6f2544510c5ecf30e2a2d8af3bb156de01de63deab64fd8723d0f14f63a570971b8864f961174eda\"\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444e417bc55c7a8166c993356c1be41ef67818a292426f301556c7f26b21d25ddb1fa3980401fc1769e480ecb825d4d88b1c1342c209cff1ca5ecd43402762ac24cff1461c9ac3a0bf0cfdbc21a7ca03c1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843af2ccf9972e22afc67aeafcd25162f56e3986936e2ce44927ca8b2340e761a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"66acfc92e3197de166809e6d4d5d003dcc819a84bc3522ca53c9d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"71f89aa6533a6de70b0826864dd75f60806ee40170c16290189eb3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4795a3423550c8bf00386bd496a3e2c76c10669d2a75ab8f79b5094c5412a25705\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aa0bb39097555c918e40be82abc2b909eb79d9eb87adb07e268fc37323a6cf904fd01fb391\"\n}\n],\n\"handshake_hash\": \"603cf7aba57e042ae14057b9b0683079a0a6507e24c3272f88c63372b66b1d3f\"\n},\n{\n\"name\": \"Noise_IK_25519_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441edc6a898ac79b09a5e21a391d717cc9fe6207726ca03a1ec47e7efa6ae61cba1ca117d247b3337697d237b2eb9a333411bed6a3a668b33ecd3f324773f79192a61da0040a388504432b0c5c84d84f8d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c9993ca1fc214af8c6a4e228b2b5d62d7fe46802b1e5efa3bf9f4471b2a079\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9f752880da6468eb9bf272293d8d3d1bf88130372e4d26f12b921\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9bec50cd609e30cbc702417247b3854fbed537decc2b2366bf343a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c27c79d9d975652bdf091c566ccdf385d2f6f8ddffecfcafd80d9dad70b7f6ca5f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"12f01efb31171bdfd3263e601784d51d51872897e169ac8a382388de223103f3f6c211186b\"\n}\n],\n\"handshake_hash\": \"30bbafdc96920ffd054fdb588a6bdb5f1965f9c3c183c881d8119e0d0b8bcd455abf8512b1cc38b19dcc03259c0bcf569c36ce8354d3e51230af359602fb99fb\"\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a633fc1290f9c64b68516720d32b92109bbe4f14876d501b61fceb77de8d848bf72a26ff5e02fe59db61c9b33751a1033ebb03c25b3a9b9133fa074e40a9a7a11f91225e00b13792ab83b215502cad6d93790c34cef4f32a1c94659563299eafdc03b8dfb7286a408\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cd7ab5fbb4c5220ef8d7fdd0692dd1fc019fac3b205c7020ae651e31f9ed0b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79de3d4e9c5d27277941fba3b37def162816dec55f343ceec4956c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"08a84e1c00e7bddace7e4e3304eb6af2f9b22a2b783ca9475d7e68\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"04a7926e9691af7681097b126f3d4bb1109717e4a2372ab8c4dcc217034c4630c3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d5be381d294d3425850073103def46fc6970ed99041ec76115e21711a3cc561b883b887296\"\n}\n],\n\"handshake_hash\": \"edd827cbe082ef591d53d04d41c3df8456c4058ecb73fd7b48ef75cc951db81d\"\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a47cc8c62c6572fc88fe6c3cc02b1318e33d3ee442c8d9d7d81dd55f0320f504e9300eafe6eae4e69e754003ca991d02ad3547107737c0c4d6e097716ae3b7a4b14891c0762446b81c4257156b977c199a86f7d8c146a2bd7c029876c9de30b7c5c0b0b17039108bf\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655ac43cae3c6a2fb98e3c2ec3ecce6965ec1e820041e9f6f8689f5b875935df\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bad47053153e9b211958a6497520ee4c9d2fd1a7536cc6649ccd83\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0cc501510971a685d711037f4292daaf82a8c3cb23e722fd784848\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a0b2c08be6cbb100b21698bcafa4565d521b0395b52229abee81d046834bc065de\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"acfe9e853d9b65ad87bf30c152c9080766e7826f8f08cfaca681a38246bfc9b408adf22ed6\"\n}\n],\n\"handshake_hash\": \"47130c3edd303e10c57afbb1c7bd5d6e18ccff23ee325538b74a7032d954437a1fe89cab1983499c4441b098f3518341052bb7cbc9f70b7fc3da564324250ebd\"\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a35bc31dce105e1d7ed1be79a962b967b2039b1db3ab05e4afcd9320e6bef8834b92f81097f23d50b6c3dd65e5c5d6b6cee5b95f37b4fd92001d30c9606ab1da279450549fc21b9f04b1c8f14e2beeab428c285527e9ac173cc00b8aab050b65db7b8695eb07348c6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654a9ef2030db8569a07942f2c571828413825c3a1bf9a5e9ebadb8a4c666932\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ea91c9c61d3bf6547958958840df010f2e33b6acf5a79488586622\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6697fe69b0e1c6a7399388ac29cfc3dddf677f8488318ed2c72ac9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e26360b6dfa860d87b615b6fa1587223541fc523f85556d37d570345fd4b2e6b4b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"502a028a54a55a64263ab9e1acd6d617e318fa14fcef75ba3bc45d634285cb7d4e672460a5\"\n}\n],\n\"handshake_hash\": \"094b60c3fa4de45db745752cead6b2c10f532cbf16ac66094f2c35b976c8899c\"\n},\n{\n\"name\": \"Noise_IK_448_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae06567777271548a8b3de33e22b571a24665f093cb05b9942ba5439305da7f72bb010d9fd8765ed60f9cdbfa333ab6f35cd0800347bd47e78f9afc4bf3fb368f58474d62d459011fb7bce18aa15a43b3125296342f6584a596383384c6d01899eb12439685033da4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65842330ec3d2166677e9cb05f4df49c4aecf87f7cb3f4be746480ededc0b0c6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f2abd6c5759d6f77b4e002db75d6a9dc63b67cbec718b0d3fcc9d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"33a25a8845eb71c01548b2394749a327318e426f4f4d356f9613fa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e7060a8b711c95df83fba69d6c0c21279d64626d1d3e3686821554c4d736caa785\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"946385a433a56e4e40b1ee62ab5551ba86f52ce69baac29734ff96f4ef3441b9bf3a97054a\"\n}\n],\n\"handshake_hash\": \"9e8777803463b5a36fd901dd01145ec01fc325c1d49fa189363c5609505173c67f21d1073dcce351caea14694f56497a9ab70cfebc26122d7d119e346a734f00\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442f780651238b1a1f410d4770cd4b664bcbaaacef4ede90d281656817eca8cead2f5925d8b03e3128c4bae8cc60846c76e8c9c4121afdae2ccb304798c54e298985f3e63f5e746756573192c5c79e9fc5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884340b3efe3615138a4e7fe4f45b395a43f58f05356a19e607ce17c69506e0849\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5d20050ba055ee071c27f8de61efb44794095e059d3f100c71c1e9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9de1baec613e6414ad2177f2a1b9bba7fcf2e18a3775075ce7f802\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f368830c1586bea4ec8e0380700102ac26c469185cc1bd6e4a910da6cbb47b311d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8ef37c02ae62ebf3bdac644ce4ee03353aa14fdb688f72bb40a3a69ea17f9fe58325d7743b\"\n}\n],\n\"handshake_hash\": \"741cee7ac8a61503ef10b292e21f8b4e441bd349dfc69dd4c271af0a12ba69c6\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fe9485b3b1f14ee10d98bc472c3d6ae5f9a7387d313efe80249666a6c3ff10d182168735f5dc0a7964ba77116a75fabadcd457174a6c6d7fe5abd4d50eac88ce92dfe49ba22e123bad5b3662a39f66bb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432a0d132596e2975178e4d75e248eb0245abef03886269f9f3942aea53489db\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8ae030ebd1725b4f9a81cb12c453130afc7ea86955a858a572db42\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8845167c061a301d1c77416d7fae86b6e9ed36494380351d7b5e1f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa25c67953bbd72c4e7dc9953eb8924e9079815bbfd705dd5b69d109c425b258ea\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bf33191e0d0500e869316e6375f2ab44d2ff404b04ac577482ee2dd7036d4a8890a729b986\"\n}\n],\n\"handshake_hash\": \"a83155ddccaae608ce0b67ab511fb93605040988befdab3d28bdefbcadd0e3f06a9c2253463650be7035a7dad06027040ba0f2a4ec16433fef08bda855c2edf5\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794484884dbf6d64e5958710433c214261a60f86b70553e9096df2facda7c67bffb03920690ee3e4657c5a5038f30d37bd9c24e7cc0082d768a9708be8d54cc85995e3fa42ff5763f8ad67c11363a136bf29\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843869ef2a5d04171bfe13df1b8a12b425add1db2d0af9b6af1ac1516b1cdef67\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c3c72a39d5becda2e616bf7bddec80dc7d1d311ae65ce587513783\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"466ca9687423b75c7ed2bc359800629316c85c656527e07bf25769\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"429154b19c94d70d065b8adbd952c947181a66739d70f23ab88896ba8577d058b2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ac98e6cbe76dd58d205bdc80e268a9433bf6313d21ca5c2501059195f70138912767df11fd\"\n}\n],\n\"handshake_hash\": \"a98ce62724d029cba4b84818691b4244fe5db6095597625050bfd5581a7c888d\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bb13785befa1e2132dcf7d09c18aa0607286200c888789b472a4a778b45d4b255f75dcce85a77d3d55ea8f6b3b9b0dd545df0fd610903696cb3a82b3a0b4d1735594c20c36e6d8fb1d0e6de61dba5d43\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439b28ea1a53ce66d5ff8848bd668fbea720ea88f137c4bca73492edd7fea53f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"958ea47d7c65f13c4cf6be2641f62fddbeeb5113050e2ab8cbfe78\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"473ab8e19fcfaaaa8b08281a934c9c82961d16e038a92bd7c57580\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d6a6ea1b2052e74c279f221d26d13994648ab439991975be5aeff75b40a300ac1f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f03250da7da67a65f71030010fa459b00567d717c9db5ef6580c040ff0e2c46bde3c92e692\"\n}\n],\n\"handshake_hash\": \"17ff3f87f26626ff570829e2412fec37fbdd86b3d2853740389610bfca2784c118e813f467cf232cb0e05b610198b6264b118094ae4eb35bc0f30e5f5a745db5\"\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae25b18ea83bcf86fd5a9159e6a40b1a666b37ee29a60d826c518faf4affdab4ae845b4df5610c090aa5f3643e9ed06a11d611eac550b189fd744c461e5c0d5c6d305aa9d13a7d6f2e47e30c1de123651be65fc6e26ef0a5c826e7b430dbb92d862b34af29c6f4cd4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6518d32f510f35cad6700da4c5f93f4d5edb49f54d5df8209f43976c8f21374d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"69630404db63c58d86ba01370b9ff154670b5d0b814b079feedb3c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"09f4c0a2d9f7f863dd36337ad54b561fff65bc65f671771d527dcd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c9d9085063b95459bc4ec51ed55b760b15712912234e8fba3d035465d8e3133b89\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c7e798290d1e2b1ed950fe6310564ad6d813583500340a59cc5b91ec78c6ca4cb5977f7794\"\n}\n],\n\"handshake_hash\": \"9c47831fc8ac40f13635910634b0bdb076885950e2e9100b88a8d61333d0b32e\"\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a12a51d99f285cf1893ae4b6bfff677b5ec2c62e29d6d832620070395b76a9fb16870462ca4ea0a3879919b633be5d3a5dd7c976a0669fd73e614f054bf7d3eb2fab86de1b743bad2088bd90fcaaae26a1a03f82bc1143482fd3c8352d722445422c3fe0af18dea6b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65bef1788ef4fd8184ee35a03537d422c911ae16a03296b5f51ce9e7057e5228\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"52d8edfd0339bac21f5ad3cb011f1dbec6473915d5844cc0192f6e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b675c153f16d5b234404d9d16f82142a7bc16846dc44925cb083b3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"da01c6db48852cdf4a2e4f8276ccb8b5427a1bbcbdeae931efce57906d29625dd7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cf96937c67daaf373568dac7bda8bc9deade47148de5ecdc4347d778da4a0d8ce5db9b14c4\"\n}\n],\n\"handshake_hash\": \"e91085fb015ee00bc9ad9214d3b6dca67c75db69e8fac58d95adf8cb1bd031df1687618a55b394798050e01febdfe97c5969ec96a2708279a25ee5c36b6b6a02\"\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a61df3d1b2efdcb22b38cafdddc52f5c382df42ebc4c9a422284a518a38fe1af416248a49cf8b3268869fdfcbb10f149e7c3ecc7e39834696016f6bef5edf64abc9891165f839b5dbcbc153c628bb8c7cb5689d870c0ea9a0acdff16e3dda68936e405a16a2ab13dc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653aa2f35ee6006071d3ad8088c3d9c0f1efd30b5091c72deff24c5a5be584c6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cd0e8737c6b61af78911c33851894b8cdff3718f8fde6fa1519aad\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9bd0430383f5b1c233083fa13ee751eb52ead125c6c68c28f2ec4a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"260ebb0a75e400e9ac9dc1b35c0fd16e111c738669c001ca40c915d5a10aed9057\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"68504d23e9bf49af3295f82a40966223269e37c906b6ef5b5b85563a8aa8ca8f97584009cc\"\n}\n],\n\"handshake_hash\": \"fe4cade11c8ffababfeee1519ac2aaab68a4366a719c49d418ecbf4be4fd62d8\"\n},\n{\n\"name\": \"NoisePSK_IK_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9a9145e4b53871def81339c05bb258399bc0603cde5e4c8ff75cd4522cb81a6fa85b23ab8c1e846ab65c9494f6be403a9c2cf35f9741000e45c059790da47dd879e368377e19dfa85dca35752dea85a7631ad148e2a363c663f5d7e186a2196338c4d87341859c17\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655b02e8e453c6acb621bebfe5756dd9443dc0664d5863d5a5f541c5e7746f21\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"253c7fc83a6701bd6cf433644c126f7d7bed761a1006733ae9ff64\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"133e5880e1ed7201c2c6b0c9c4373b9df6255e26633390988b263f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7339ce6bfbc8029e10d0c5381df7c86cf7b5d2d8052a43393db4339ddc4a184ef6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"55aaec7fc778f04d8237b27b189b9060a8c3de568c883d35705942b33072eea23b1d7b5720\"\n}\n],\n\"handshake_hash\": \"842e2fbc8ad5bd538cfa833873fe5f503617bb16f91d55a5a0ae1a79adc2d22f1b970671300ac8ca6a9bfc2b0378e4dfb56827ce2b749c6324b2e1eaed7bfaa8\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794411a788ed31c54e315d200e3c6fe347c461d08757819e70636f0c7c4e4412a5ca1ce3f8ea7997016eabd98d5675b35e089ab6f5973431b460a6f41e52e295ee268985675a81c954935f18e1a663c3862a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f8777a9a28ac8acb0a71776f89291d7c9947221b828092b3b606c3fb049c86\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ce560861e9948ca32bc10291599f2eb06c0d1d0622ccb715ad87d2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ee385805edc852b79c84a44a3ab73b29bf51b127ed522697fc866a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"dbda46939daa90d1f6f934016d41512710b074668d1ecc2dac30c3d2f3740306ea\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7b58ff35f1c61d83d7f7437d9777a4e87429b982f66316e6754d9089fc3588f87e5e6f915a\"\n}\n],\n\"handshake_hash\": \"d6bc0580ace1aadeefe15eb0e654feb788dc812b01d9cd445e33fa28b4e4bd68\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449973d94b7f9f36d070e3bb0ef86d84924f510f7fc84e22dd99acc81471e2e8e41c77f36599b80c5b6a9f60752a52c6842ea22c55ef7a932a441d65bc950dd6f5bc7cb116a31c586eedf1c134786c82e8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884390a3f0f95e34f6b240fe2e4b5876dfd9be4a0f089bff2aff3ec5453e4ee9a5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fa9fc812213aea6aebdc88c28458cd7f5f20a370725b768631b14e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a7b4d418f173f618eed369f614cb432143b62461e770489b5151a6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f956a5a0b720d334268ddca895f141ad7aaf191d6e094c42e6094ea2e35f47cdd6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"88232248963641da0b616f96e943dd18e5a44f5b429249fae45c34393478cce650729e8a6b\"\n}\n],\n\"handshake_hash\": \"949682d97fc28ba224014bce524befc02f89279570a4fffaab985d3c070f9f191669971a7739af4d0a37becc452ee459b51e1d1d4d918aaf9dfb3519861090b6\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ab32f42bec5f2ca24158f7584008d0c060d99d77d730c609ba13c4b31805c3af6b617ad95da0f6ff5d1e1c6ea938a9297b0fce572d863808e5d9a968b21c402086ecfa61da8635fae61a4b15987500a5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435f6cdf165cf5be20f75cc708c2bec6ac638ca6301466eeb63d0ccaea7ee6fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5564b72528147a031dffee45e07ff7803f8ba19ff07c1df51af38e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"aba795dc6951dbffb8eeb50836d5c68f21b1605be737ecddebf041\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"59d6bfc3fc8cf54df918acd0ba824c9732241f3cf62e192a40053a7a5be1a4caa4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"adee6d0db0855f5043fcbf5a4535d699181b8bd58a35a45e3e6b392ac2c754bc6440dedf05\"\n}\n],\n\"handshake_hash\": \"49f7893f2d77e81fdc1d891d217e8e50d3298363170ec3d949d61c8a8b101800\"\n},\n{\n\"name\": \"NoisePSK_IK_25519_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445500655d49ffa7cc6453cfeb5a379be059fa1b525a0873d413846f9baca3a6be37386aec38a381dce77d0f514f207c3dd9507a1d2ee973f54a648c18bd9d1c0f1546f67383eb3e6faf4b91629701f158\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436c95f7b1e9079c5f9cb61791b836c16f3d7c0e451873a7a9070036c2dafd02\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"28b4503a19713241f5d123dd139cecc928c11f5bdc85a4c1fda022\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4857113a54c24934910c050aa74ad6e3747b8b7309e4c42e74e6b0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1bf4f99838fae7da584c0fe3977693a9ae0f05e0a1466dccdddc61abe030cfff42\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dd4276f0a0c583c27c0bef4dde2fae44c8f837cdb7d1c9b7a3949c2c166bb0ced1f05da8bb\"\n}\n],\n\"handshake_hash\": \"0ec8002922f27effe5cc90b3948ddd5f52635874136b6279f140f79056505abd5adfdbbc2b910c55b87bd88ad13ed00c8333d779474a8a17427bf6766ca96895\"\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a305f7951a3208b7ba3adb69d49742010456de708cdc54faa783ac002cce2547ba9ef420cfebe5e010d16d66df11440f493714e9c81d275cb92309e61aa0c8da69f02d0c756cbe6c77e30b6123e16a1c15fdeb44b711e860a1bfa6825f12e22cdf792635349dbb96d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a1a6890d4c07044fcc9e29948986b3245f78fe9e93867b0e750a13dd7f90d3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"70a2eed3c00338ba6daf4443bb57c93825aa0cccc9d7b3aa67db74\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dd270b8d391f9331d2bf67ee07ea44a6dc7c9d5820564c66429136\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3da392e163dd1d41aff92388f7989c396badeda2e327677f85d2516f21239d7160\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3a0046edaa2a551ffdedb767faec878eaf75518737584df3a0483fe3cad96f4c9eda204c5c\"\n}\n],\n\"handshake_hash\": \"01e099e3e98bc4e8f776d788e00ec52d26f24c0ef93f898f76f5a25877ccca8b\"\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1eb3f82e3336646e6547567d3595124fcc0b609bbe56d195af5c6414430a333c6539b0b53b14dd791e091ac479a7a23cf9bb27ecfb3ed08e5c8c7a70b0ee704d2d8fa71c731bb06ed8f3f80c53f799d8d7a96de7dc50f9b0d20afc5b0e88a455b9fda2b05f38f8de\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ccbe3bb5126c99a271b81996cef67ac85b5c45b97f62a7945c3d13cccd7e19\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7c46d90328885ea8687269e3f65b8da3aeaa8b7067493d1d18e6d0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"68ac077313b61fabdd82641c03f2298ba3f5139197705e9658d6bf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a2964d94a956cc26f86e38b175535cf3875281d5def36f5b0ae50bb8e6c07822bd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"78e9425433606b9e904eacb7bcdb9d47bbe5faa451f71ba1206e7d02f2419d5c9a42500c43\"\n}\n],\n\"handshake_hash\": \"fb1e1a5e8bfd5edd6cd70ab2758adf675410db1cec2b216450a5f14872a5e59f653c8f9cee7e6cab2c9749ae6c9deb1e221dc4069b7ddbaf2d6c81421a0a634f\"\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a47e6674aded06a7181994275a2874b5847995151202b0ceb6d29d92b4557fe339542e9ab62b726036897c51b7f203988330682b14894d7fed2cc6ea66b30eb239c0be1c545df3765ad8309bf6ac1a8903d709b7f9b0f94928eb69a91059be0fc2e333876549c40bb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6513ce928e959287f7f65a928559aec77324928702ea89c968c803d1a261b38f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c6fdce41a0b76ab6290f34c11180dcefd5a72f375f30edd237ac55\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9aeed8665b4a24fe83acc78c14559745d1d75b5c22ba2582817635\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"99e13422586e70bba87de3b080cb2be3423dcd6e93550713431a33595e0de7f55f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7df4f942399e2e63920b477d1ce5a0913a3e0ce47f92bab7d5bfe128149d29f8f2a795cacf\"\n}\n],\n\"handshake_hash\": \"73c06b07f88b960cd774836c6f6f2fa3c26e25305eb19721fb881e6ec8ad5e8a\"\n},\n{\n\"name\": \"NoisePSK_IK_448_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"bd200fa6d50db3a743797b00aca1b70f417bfc381b28b21b5835d84cf7a6da6abba19e3ba7d46b253412b74665d4627b65fcef3f29c95d3e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab8d027bbc6b8d3091d2cb22b76d17b9668bc6b37b12121dd7c9e1ce4336b1e690686e6501409dd5235575eb399a04cae7027ce7b5d2e5f0ceaffb71ca2e3ba1fbfaa3441e86da86e7273f89367a80966e340c32e23999bc85b58ddd7d8e1b113fe0d5c076b0329bb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65196d9aa2bbd7742b975f24999a4905f307afdebfb36d7db4d1f5023e2fa4d1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3feb44abdabf2ccd69254569e5257b47f9a3076e664a373391c761\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9a784998f748cd76c97526421936abc488ff3e217051760ad67be1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"217a51158f3948d111960c0fa7cb0bda4c514b8f445954ab575f312f403659dc54\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6fe1e137eee3d267beecba49df255b4117fafb8ae55e31f5589d47df5e0076aa36940a1442\"\n}\n],\n\"handshake_hash\": \"9fa9568701bd96f04e063db743633aad59c998990dce979466fb5601e727bf34cd781614f5e1ca2d89d912464bebd58f4cbd83fbfbf33dc4e7a06295e3b79e7d\"\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884398e7f90d906b0948dbc71ea7020ce711a6cfde5ed7ad1d43def67fb5be6190b58f7f2bc459404842b1cf77ed0876be9badddad64de91fbd1aaaae8621d313593fe671d93694fe4e21d37d5444f56b5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"62bc36955e7d6399c18531eb05fc8f4646da466a98a7e5cf1942e7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6be3ee3f7e5ccc4152754e4b22d87ee0045e6cd84654fd2ceb3720\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"19b242089e28f5b8c2881f36dacb6953de1b576b722359a0ab8ac478c3c8fcacb1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8db09f596ff2651900ff82316220328bb0ac49a520c58ff2504c67bb02c550d9546c483708\"\n}\n],\n\"handshake_hash\": \"893128b6090ac69da1e19e38b3fc035e580e0fcbc41e5e3d600b566b4d7d0618\"\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433f1aa60070835da4ba78f09ccb798953addc1f6984ceceeaf7427834306b13e847b619d0fb4d4c0a707d41fb2be1ee9b9ca7ce81760aa3b364c79a2694634bee4d52480a3926572f5203ecb78cc1d7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7b819fee364e9a7e59f86c2866ce9c858ec0168cd5b4e06042dac4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"927111f8a96c5eece70962dc4aca610b6a8af566dbe92f443609a2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"645fb96284174500f9e74e4ba02c67c5bc5fc3e202480ada0558601c967179ef43\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"45f0190eeb871a978a68348f3b3520503c24aa9bd64eb1fab9a90a59e1b107b4beff18c66f\"\n}\n],\n\"handshake_hash\": \"c6298d97d3a62d83204d7549fc030024ad02f259ebfa2a29c746bae4686dbb328e6e3ad30b004ff10f9869080500bc79f70d49bab6ed25f6da48c8001768dfea\"\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843db451ba0cc81ba55f01e5aeb04e3748f337344ed2a494219a3fae8ef756f9505dd7ddecea15fe10640118b1e4ef3d25f00bf822646c34d35641d9635ea993c84504874d990b3b8e784d661c6e324aa\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"90a3ae2a6f1c0f3c2b7a81c5ddfb3a068376a18b9267745459497b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a54a54e469da6914ec8edeb1f2c1fc7434ab6a4834a0736b34fd9e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8c4238fcd84fb9bb2be8cd2e3de1bb0098ad04b67c5b2f51275db91aa3641eca38\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"39a819a8befe3e151ccb045ad6adb3590f3326936e8402e1e896435b3d543fe4cd423af3b7\"\n}\n],\n\"handshake_hash\": \"a8e5fadcb5e8d6b7e73774cbef57cd7042c7c3dac9a6d3ab3888b9c21af6dd24\"\n},\n{\n\"name\": \"Noise_IX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a8c94b6012e129e22c357ebdb69a5070d2a74cedc0c449c48fe41e16f0dc1e82785941c3d0496af2d37b963a317c6fe58defd89a8d8d39f8df99519b0ced32761ae95440b35a814bc7e0f78edc2c06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e6b02914c1e0ef7651cea6844c3482741791ea374afebf93f48281\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8268b258b0a792172c5fefa524da0f0a16316c0620c65d6a59d1b9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"04d7faf63e58c81ac3d6ff5f88e0fa4056ead60f55cde977eaaebc14dfbd6ce055\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a01c4f95e57c7620254a17f6c328ebee726867b20ef44518d64d54158a9365e28fd0c3c3b8\"\n}\n],\n\"handshake_hash\": \"bc5121f937c1806aa73fb5586269f3d87fa45b310bdfbcdefa0ab19bfe6a894c422a13cfc05abbada924f86f0873a0c79af98259447df0308e2325a1b1306c64\"\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d7874d6828c0c00efa65934038f3145a1884282371f7fa666a7516487b8f415a1d695560a164f7f869cbb89383eb2d5d7ba9276d5848aa9c243f49f2f9e1928998990100feb61d51c6f3a4fff00a98d1c0bc91f36f4de9a4721876955e43a61b43fff9f24dcf6d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d17df2b5403721a7f0f73f1ed3949ab377720c35c2015f865ac2ed\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a51247849f22f6c8c0aa1661927180ed0d9b82516e37804a21a1eb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"40c1f5ba7b6c2ff605bb2e94ab18d7190a6a2606f01e2dfc79f35b8e6260664307\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2ad45e48b62fbad3c345d6c9e5013a5c2753b08a127c3b384e70d2eed18826f002f54f739e\"\n}\n],\n\"handshake_hash\": \"089fad5d07a262ef9d05939a12c9c187110c56a6e5ddfbe8fda082394f4917e8\"\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6550da8e8b4cd2fc7e105b871fb6bd5c8b941faba1a7b51c64b5390e7d270e7d11792be415bcc5e226107d050ffd105dead50771398d043c7a4add8ac5bfef6f71f63446b9220c00f2404411d27241755e6fe5b9e895402cd9fc484c43077c9953ca683ed67dfbdf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e13ce0f463777c111ec8789a88126117002e6ab0a996f6894e1e33\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2335bb41fcfb4dddd113a8c9990cc9054df79be479f4d04e0c19cc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ede96a7d1f0f5f24e5d733283e3f850b870403c5afc7513e9803b7ddebdc9e97e6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f942624af70c1ddcd6e7af5ceb315c99c6511244edc5da8a05826e4a0c27b2c1251adec180\"\n}\n],\n\"handshake_hash\": \"08af7d3e272dee8185f93b792035534c77cbaca456b40e06febb8d41ce71ddde2ac27994ce9ca40b10742abfa5d6150b527becc3c5ec1aab39a8c8a386e3b172\"\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65bf94bc9cc43da3c5f68db91b1abc39537b2cc38b1d3fc9f9687b646225bd5552401bf8d84b560f0514c97752ed7441092cb2e5f2b084089315d87319acaf2e5947379ef4bacf8c765dfb5f31c654c8837c875b6b85ac61118b5424ad43699b705ebb18319eb4bc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23331fa6615ba57a56080247618405ed154fdb10dfd1e84d814b2d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b2e89526021b307d6e32a9614e4036a44e03d48951d01da6e1adb9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2c42f9f5ee7a6d3420a2e857daae767eac53683c61a54f290e52cc626446299009\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"21e839681b36a8be5e8377ac52bdeeaaa680810b9a2bb172568b6515121b72f14f351ab9dd\"\n}\n],\n\"handshake_hash\": \"73432de279b502a44e46047c22fb2d6f6d3063c175417d88356691feb84d14d7\"\n},\n{\n\"name\": \"Noise_IX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65821f0342e0763ef821f2299ec565ff4c3b8785db180edd6eaa27b910589f33446875a5f73cd694fb3fe144d22ba3c2022728993ab93ea764f3315d63aee268533eb3e92c88b7b19968c7835476e3ce7e95d967c1622119183b1362f5f2ad7fc08cc22ebdbb87bd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3b9920ef3225e34b2052d49da7c4fd1003c4a5ff57dc465fa53957\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4df2a13fca2f2c78fb2319c2abbbe2668da16b403c0d0b188c6b57\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"528085b4b0533816af1c8b48ae5f1421c1c8cedad7d7e1e2fd0436e41767f8d1d8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"07d7c967e55e96334c8cf925d24d4a07b1243162481cb6816e1c03314cb9b9905905d6c8d5\"\n}\n],\n\"handshake_hash\": \"d9a0a724ea983e73e3e21af6b46a0da229a05d2b3f27fb8d6a86485a598ae355ecb16a4a9d01a6cff1f304bb9968fb192aa9b5b10c6d993f53d3e20857ad52c9\"\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433ddc33505b3b2e6a4bcfb3841b666cc8bd8516a3cc74476a7e88673b78fbaef963fe4de787c6297f9f2842e93eaa527b23e5b7745586e66b461ac62551e1929c760f5b15d6cc0a87c5ecd0012f586c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"77e9207232a196a22f1860e7b2df44ce1af1659c4626b3473043db\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cf23b9a63f1b5a1ad22d69040315699cecb9f3efe6d060dba5d643\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4c47b3213ee998bfffb657ab25f3bc6765bd8e909640fa6db3797eb3bf458ea5f0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cf4f81e0dd05abddfe8a3870d774445312fe343dfdd37c2e09cbbe75eefa22386e8b7e37bf\"\n}\n],\n\"handshake_hash\": \"6a977f06276dc9fbc6586b22bb90b19179c97ea040cfb5593cd3f3559758843f\"\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843354c64e8dc7c2dfaf991b57efa284f3456648294eee0fd40ec4785feb26c3f72787a306b201f33a7c7357e0ca9a3da4811bc58def92e31f289c33b7d18e5f93fce83903346bd3fc5f3d7ed3d13846d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8db127eaffcd5814ba26dd735c5600053ee8da3e745c5b28000838\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e97b5634fb6be3146fb7279f63af831104931f290a00309d161ab\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9c928e61fc0806b7820df0c046a113f7e8e80011a8251ce3ccc2ee12ff8922abea\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"860b4db6381d9cdb9bd8b5d02eaaf82bc695207c6f1d41857c1384cc83a75a6ec789775a2c\"\n}\n],\n\"handshake_hash\": \"bf404c613a904172eeba8234b7dc41dbe37a48a1751008deff7f9e37e74b8e89594310ab2e759d407f13e8cc9a0f8697efa3dae745261a5a5384dbdd8b9b84ee\"\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884381f5e7fd3177b25f05504a881c3d9abb4ceaa6e8ab72f7925bc1ecee7f533d4d2148ed3454f8f8f5c1335ab5842eb5b76e4c23267b3d038eeb789a7ade71eda032bd7a8d16602866790bb7113e5810\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60faff0c912ae6003ff00295f240b28e8f68f3442e26661701cd7f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"746cac398c37a680d8ee7836a7826a164383f562bcac347bbde807\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4b5e9102aea574262f84bcb6bb32ff74447d843d389811990b5a55bd450708f2fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c70aa2cb23b02335b30b44e46da0c9ec2569bfaf389431a92566c794787ce9c7702d7f7bdb\"\n}\n],\n\"handshake_hash\": \"778ad5fa6f7e70e3ea45fa04b74c8d90db98e34235a33ed79036be9e8096dd40\"\n},\n{\n\"name\": \"Noise_IX_25519_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432df8ae0cb7413b6e054f2aecec92a8c6b31c15238f68452a284b7048bc6692ca00a575764d1e92cdb076389e300018c901d493783a0bd78ba74ac91ee7255df9da11ba450d1682a891ad5ce0a6aeec\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6d2ce47395bfc804d5253e2c717eb5ff3cd9ebbffbad808d75ca2f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8813f7127ce7547d65acf9fa12f8e473d59b4526b90720367d454b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"509212ea27de5322ce4fb1858edecfbcc6a68c8354ff403030af9c5c0ed829a332\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4bf0fdcc7c3e2c2a154dfaa5bbbae4c20600a282ec7d91b9891234dfc5eb3d75910b588aee\"\n}\n],\n\"handshake_hash\": \"12609c93d234f88d5e08d157096adb325d3019034cf63cfb8739fa8e2f27115a96cadfecaeaa8a20394e765a47a78d2412caebc74f8ce2d376ee296d6d8d7165\"\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cf86bbbf3615d8c0217d25197cc0e854b5d2f1e3dd95df38a6cfe10650d5f5e9ef4485c5d578ec4b01a67f1defd4aacfbda12d6b66af60d73260e819477d4d7039c5d58bf86b7979e557367be63b9c2fdf20cdf137c9e1baee99cde2fbae20c4e80eb53262eb37\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ab77b12aaac7091183e1abbaf1ef597f8760e8cb395006e13cd536\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d3c9663dd00d96230490d9d8d1218d06fe0058efbe9ca872bb447d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c3c5416f86708bb5c07ca68958dec6ad29347b0b4243cc7f4a93f91dce5322a7e6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c98aaf9d8dfbec7211ba3643993d8661fe9a52efe8cdab63a608637fe4c12a52ed2f80ff13\"\n}\n],\n\"handshake_hash\": \"02728cf56726aa23e7c0ece8db61f8d643c894bf127cb3af74e3c23ffaf805cb\"\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65226d2a8ca153131fb2775b0ee792fc7136674f3d0da10f934202f647b7c22f4e0c3324446791c7036b482dbd2f5930396f34280bea0eddb67fb12bfdc6bfd71ba7dbee047b6e596160ca4859043449cd1184c02b7fa2c636b42ac00d895537137c699e54eea599\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8a2a37b427062d16a344d02b77d67be0b84ca083a972f11dad1667\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7accd526e7810ac2319f48ee64099ca1e9b0e4388875cea2cd7f22\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a301d1a2116d39000c9ed4810d10035d1291b3df29af53ae12eb48717ae4559996\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"60889a19022580395d5ea9f0c4c48fc122ae5d006ec105e606a7a701b95c6bf8effb828990\"\n}\n],\n\"handshake_hash\": \"b4a539e0995af8d3e04e0c7db4793bdeea9d8ed7cd96d120f3b2f6cf4e43120e7b05fd73d02c1aa03172bb6f2bc67820a50fc82366ae18a099c44553ac87dea4\"\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653dbccec6f09e2b3558da2daffd597e2e4c75c89d19a534f81e49cb0d710532729eb0ad0f7a0620f4362f179f56dac77d522d57983872a8bb1448320757c26aa6b06a4e9d493451c55d3398e2fce266b445a903883741fc2b3e884c5aaed31a7f5c27d95d04f97f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd02ba04b6d8fd728eb4f408e5c8ef60ca5f48c808e490d7dcb99d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"248991f37fc6661ea27359e9f8141dd56d0422126c01a54e79c3b9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7fc0943b31b7e44d696dfc12765410c03465e4844640414a2eca2725e5e6cee1ba\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"355a3489825af83729766d5814a017cbd98d988f9ee3c0ee38e348d25a0e3f44bd5edc1a54\"\n}\n],\n\"handshake_hash\": \"eb8ec270c660bbb8ad009224ba28c3d5726982e840e60ce96c8586fc682640ed\"\n},\n{\n\"name\": \"Noise_IX_448_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a301551eca1788f4451c269beafed110b51f08c0494a8de614a184ff3d467d7defdfc7c138e4669591108b69a056d25cafda289f22d1f32c04c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6509e03b63fc59b54ac4add390f7c6417e903a214eb418905bafe22969a99f90832745f5fba94917b9aeef0fba5d855aff3bc70fbf9cd74f8db5e53112bd8cb62049d2b362e75b930f473e6cc271b0698c289373c2fefc994441763d07a11772dc31c100d20ecac2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"96bd5c9597a382010329933fca5bee442b86033101858dcf7c04b7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"488292594437b6a050b7e1fc87af4851c30b8dcc19893dd7857093\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c9693d874714385cdd251fce6510be70b35e0ff89c5bba46ac627c587e7b219bcd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"db34b195b361647599294b4868ee5251ed0a954e7a128b0e83c1af89a0f0f703677af3f9bd\"\n}\n],\n\"handshake_hash\": \"ec2898fe49c6972901ecdc63e2d4d1e49e385ddd3ba0154a565feeb8585c6d3d7a7c65d9194e770d38741de5a6c80fff3da1359ef68cc7f97a6f171266f3e5cc\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794460dd2f7401dd99704b5c646a782383ff7e611a7862f86aad711aace2b3c9289aa4fcdf706fbc9aeacb8138710daa4b127c637cf50188a8355a8a2008b2b6487b31a016ae6987ce5fdbc7670e2e22c3f8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843331a1953b40fdc3caa1590885ab488fb4ca855dbe28a3cd040eebc6acb41a62cf39214a396bd66b2d8421a3239d5ce4fb3d19dba8dfd84edfb435c3ea765b13019762836db87de14abb41af83df25d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3ca215935a647837d725c7f31aa8a5b3d8ec584dc93c6fc0de5f97\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"70ddf7817583f5bf3aa8b431af3dbd9844bec3996d578239be0e67\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f21ef310d2d30061b9faf2f8088457fc47baccfc057f8739171608e8ff43b9b3d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"58a89596b37ac1e98e2baf9890f2fb34f96fda637811755ec71ee91aba3df20643a8f22704\"\n}\n],\n\"handshake_hash\": \"aab2012ae9707bbd0a78e2cfe9b6b58966e91fadab14c46bbedcc7c541a8335b\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ec5d0b2169d91f71c5489bb0f9fbdb52fb8f90a9e43ee40e86d0d6da8ddd0ebc82ed9eeee88813b695ce2c92701870e3a004319eb47512da1b20b1f384aeff91698ac43ad59a20717328ba68b37b238e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e6207066367752c779bea68aa72cc90f4694649a4f8c0ac3a3365a3c98b465ca21310f38734b919ff3dfced6f3dea7f74096228f32ec575a26d677baccb739d93bdb9aebc628bffe2c5b328e73982d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"69df38995b817a25d3b46ceee0a9f61c80dff0960e63faa9fdbf9f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"53c1ff80d384652dd4e2e995bd291dd3f99eaabb21ddebc84d45f2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b032cae556d10fb258ea65e07258f63ebde6ddba6c4bc8cd0f28bede43e387aad1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5326ad07ec988d48e067751a28e50bb39b21e7bb9483c308718f68d635ac390dec246122c8\"\n}\n],\n\"handshake_hash\": \"3c36916af1c1ae3d47f3064bda8b9da1e910b3f5d248637c974afb86b3916a1a0b184da5e6fd8154059800af52fc829dcba7d73f30bcb1403a3e7b35b959fbe0\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449fede6f92353f9a653df74e9da2a91e753c2da3bf33216937241e05f3bab9d2c410d7b1ee1607c2e1def8edea96ace0b7e9c56b7d4eb020e1d943d19b5f9f0e2a06934eb17596c12dd6d625dfe673204\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b15aa9fd72081dcb22a1c14836caab90303c6144fb6f379d8bb2ffadf5ed7e6d973860698b45f26d539385df5bd915788c502f654d1311b8ad679112088bb5a63219c441ea5961d981b3bd470cefa5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8d2fda03b6b33ace77552b26c467b4bd59145b2ce2666658537deb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6d522f53b56663787cbebdd500d74dbeca8acdea9a1abc6033db9b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"64c859eb6a55d49bf11ae6abda454ecc9a3a913bfd67c9261aee4d476d49d8e36c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bcb19521c9fe5f2dbf6aaca02976f3b45f534fba648191864d68f0676347f65c162913e2e5\"\n}\n],\n\"handshake_hash\": \"d5482c220d8600b630b521f5eac5297f1ebb9fc98ce1d6b7a1b720102cce25fa\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446c7e576a19ab3457d2ccfe57827d48b55a109da50e5aa8f0681a3e624a348eb917e8d8f0c6af9e620687688e4fd2297a0819602da2724d94d2c833b83c206dd95a6f88721ef008eaab6d733d25e34990\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438a3f7445322bea5f1cb3796213278d7e2e9e963ff021159b80c976fe012e37b2190f45f6c32aa36333e1c493167519b7bc62b117a76f86ba9a83ab7ad475824eaa720fa430f9efcf2d856d052073bc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc31653a9f1cabfde6b4c78807d5b32dba72dfa7521b7aeb18fc5f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cf36a19716b76012549358bd73c95c2b16aafa7779a989bac8240f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4d05481b6b4b3b084c9eb256fe671d010c7ad47f2a4045a1b784f19cd818f1338f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"57ba0b22fb71783272b210f3f131bed7782f8d8c8e8031731d6847ac8956d58352dd74860d\"\n}\n],\n\"handshake_hash\": \"a185904f3067b72a4c91bf54800244be462671942cd7f7d99ad5e770936ccc216feeff716c1bb1fc6c6b8fd11211983a25fa5f01378990fc2ee9c6533ee8627e\"\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6e43430876773600602dd59216c9ab0f0cefbd23a2e2b6b1edd4823e1e694a1f309e99a4233bddb7040236d94280cc9620f3b9a086d8011d45e30c2be68bc9fda530ac65db80f4320104dea3ab62c98565325c6f614ef6be0b6c7314033ad3b869925a2a482911a9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6539fa4440a6f51164e4fd00306275a9235d215437a9d92460dba86d269bbe28b24395cdab23ec8ec29300ce6f338f06e9fdd2dc6f2a532820e9539677bae751a14fb8b9ae5dac4865ab8ada22509013acc5ad05bd7f464ee3a1ed180f200481af399f85c044acb2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"eca5570b3a9316cffdf47464d44ac2b5a222d8900ebccb5ff4c9d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4b2f6415e5bb1f154bd44e1ac0b493ad1db38d38ed527d87d96e0e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a4e8672572a6676394a2de7b465acda4702a4c1754bf6ab9a874b866546746762a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ef951c4d7b4ec04baa5a3e6e0cda2a9f7a41993cd70003eb7bdd240eba21e0287f23b236d0\"\n}\n],\n\"handshake_hash\": \"41df2b807ddec4ce218d300fc15522b2958e4b577f6e7809b41a8d313955c4bc\"\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a083fea484b78bb8e22c9b202acef41570312b88887321b94a3ccaef03f502bca6dc0fd03ba5f41ed01561613993f4f7daa653b4cf02585a527e3fa10a1ee4e93fffa9200bfd951bb49cff1a4a78c5fb8d7e1404ad08afd5188c46ba0d87c8a158158d4908a7d8386\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d16c3cd60c49e8915fc3c423de9861bea89a2bf182033a9217ed543aab06a024249514d233317516562daa1e4de6418c183122a4642926b62c37a7612df8a22a9290f397c7d6b8217c2e7b6f336048655e0a10b15a67ecf551447637e3bc0df910d0cb5f51cde6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"16783312d24c9f654f2beaff33d45fe9dad543302efb189a86ab3d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e437e71a5af117e8ca1e039885632476d5480acd2b0564540bbc4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"317ab8210de2fba167ab76b6b367a4919100f9c2997080f10fb94fc927e4f7a6e7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"08c58d2633eba113757299a0548407683de19339f5dcaaa1eb75cd7ec0800bb83548bd51b8\"\n}\n],\n\"handshake_hash\": \"2902257276e01544f757cac12218f7e323f76e362788ab43eaac5a17e34bf6e927de78af66f57c87312c233ffd882abd1df285af8a78a8e110d6f2bc75969148\"\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4aab1c77f5a9d4119db54f9ae9c97a6ae70b6922db0e1aa3ac069fd3e429110be7fdc43e67e695342a5582004a94088a35483a427f8d732339d944c2a12a3038accf3f49652a914106fba3cfe876529a3203a653f59b36193ac089efc78095d3bf70e733162d51ad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f6fb1e1478a1816ae0aeccd613f925791314a5ae6b329171a3f64b798d21aabb09e2dc0cd93cf19c5ddb93d4934a0b22a8c5ac9b1427e43f6041fd79693c1d6895424e7c2ec404a7ad9682b4c00e57c96fe212bbb2526daa9d5b9199ae3a6f1bec16ff395abffb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3b394e977368235bfc0c1d33279a23651c381add7933f5bdff2c17\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"07a31bea1218a69ad6929dd17747f843f0efaccccd67477439ac26\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d1727a5ffd3fb973b25dcdda8bf320fae628345be0de0e5bafefb50702ff39ce04\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"766566737d1e46769a9af49f1795551af1081dc9c8e4a1203c54f117ddf799be3b4a93b8e2\"\n}\n],\n\"handshake_hash\": \"da9baf310d5754d29b0603af6c0ce3c0d136bd7b202c22cc642cea9b1dd3dccf\"\n},\n{\n\"name\": \"NoisePSK_IX_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a06e7597b9a4b4082bd000317a82e478316ee60d6c5ccf9c48c2599a4b67ec534714978d17144363e8dcf2a36189fc2f25b2cb97fdaf79fe49da21c9c15122353e574acf1f16b4109b7d93a484673b34e21cffece0f1247b65ff9b0e1f7327c5f881a0659d9921c80\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6537194b99b1cbdefac271eaced9caf309f8ca54de1a244508ae33572945e99470fa9c12a512c3b848ca9a6097f4ee033bced71e4c125f1ff6b6c46988c1b558387685385659431ef7257319b03485666aa946412f006c6eb35c32717b9a6afa149ad4be02567c0f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"011cbaa1270a0460341799ee277445736f1377029031283a745c5c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7f22d8fb0e1893680a9a9a481eeae47522ffe4ee14b5938c03e72a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4998259225e86c0b19b483e3a05487d9b82d838beb6e1c6452ac61b55ad93d789c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7e47dd21e7c947ca2cb37b9b2eaa8a0bb1d6c34d22a07b36395c56faaa2a6460ab66d35e51\"\n}\n],\n\"handshake_hash\": \"3918a482d135cd23c54af23ca011673d603a3637c05c5868a2e2039d4cab0ae1b183934890422777012dfe18295770a72fc15ef01ead0104a0257c65ed74b8ed\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d7ab555d3bc87bd2235d7f79cd5002ca5103cd562e0b1b874ec88e9f4f5d1dd20d58af8a5ff4eea2d4448626d555fa71a13e08d4b31b9f25c167ee4f3c8cc3e696d18d85a83ab69388edd2c33a0b47ce\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884388374a32802fb2a9a6e39b1caf09e4491b54a7be0ee7d99ca9f21c2f87f690c8a36bab854a8b9fd26c28f14bbc5a25e4f223b976058fd15b37f1eb0896cd9f5ee52c38dad4ce91971c02a9cdf03cec\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a361ea7364d42d3f468493f6008282a2b226c88771438a6090a383\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cf42caa84d223dc8635fa100c333610ab3e386c0748a964f1841ea\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cd404215af32315af562788f55a4f2ac303d36ecfcc4468c01bcaddd1c6196d72f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c4c2950475c80da1678a4a0a2a67726eca314b39023e8e96e83e8d287184c763f557264db0\"\n}\n],\n\"handshake_hash\": \"f2a5e9a48a4e0257334ce4ecaf700b74e3793ee186e7c1f50cd771fae47d97de\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444ed2fbf3ec7dc9424c59de532831321dbd4402fe073356c5d86fc34079ef1452f3dfc5b35720bc06ec476bd1644afe891501b5451d39cd2c6773632d9b4854bd89ec6720de96f84a2ea01bcf29e0159e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884391998b0da3a157abe1673a9072113490c30195760ab6c81a4a57853438781305a720a19a7df3d4c9f2600dc4c112bb4b5445dcbe2474adad6b42a0786dcb6740b33a3f070fce091c34dc20842f9cce\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8210c2fccf9a8d7ad67630dfbb9506466ac151e26b7f52474db862\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"205d3b8c860246253a6416e8c2bcfd0020b47a90fbd888f50dea03\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5d77f5f822efc41f36c0da180314c6464b9fed17df8575c7121e84c1ff83648451\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e7751aff68b046c0910efd9772ea5081f88148e8436670dc404fd8edd9a0814ff4f0b59943\"\n}\n],\n\"handshake_hash\": \"6e516bb47f31e8961dea3acbd90e66a4273d1a0fd087ec8cd71c9793eb667ef2b526ff3ccd3a1c0ccd943a67a1f39cf70a22af03759b33d737d2023abf1f3284\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447f1c50822f6a286370a3d8670397ff9374beba5b817dfba26ebde17c428ed3b5d8c83ef8ff715aaac97b2941a89e9cccaabd0f4c6c75a79aae75baf9598d97d0ef9153687a76017f86997a7e9e6a6d62\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884382bf6ddf8479617b564d13180d182b73a39deed432f5e64a3fbfbe005230515f052a6c07b73f2709225ba8acaa33f257e5a9aa661d5e744c62eae3eda7c4ad4d3da28326e47ed79c0d2898bf006d33\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aabcf461e8f650c419c36f907bcd49289def58180e89a91acb55c1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4a0a3a7347fd1e0eecd563a1a297b77d7524be017607adcc65352b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"147ad9c289512b8acdb086a581013ffdbed626112724a0b9b0c3d980fada8c5f0b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3fe196bfca99f2eecc3b486996ecf2c8b2506fa66e1333e0ca5a9251499db9c9dd9a891217\"\n}\n],\n\"handshake_hash\": \"886f01fc2c8a6a8f3ec2374c00fefc0260d3008fba3141976474e5ba73bdbc19\"\n},\n{\n\"name\": \"NoisePSK_IX_25519_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449cfd5c5fef7408e00c0fd84193508b1864a86dfcdf4244f7f7691dfa6fc1da4cb179a33db8b2756eeab9ee78845cebc6ca379ed8c8c5f42841c44dfe3b414b76b30254f1ba781a018682339846ba011e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434608f799d95193453006b8bfb1c966f90502402473d9a9b6f87dbbd2c252853b23aafd7850475a78b883ac72609353fae3477b903f7e7418e5b322e0e89b562a06c3af1cba6a2c7105b93f38875ccc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5914051980deea53007b7ba84e83b64c4ec52e48e83446b451c7e5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"64a9b2e0be0e9195ff2b27553b9d48106830d6d81ccb5e3e765939\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b7c65606d497b1df66f444e093022a06814589aeb7a862680be4ae7855480eb32a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ba8ff9d438ab482e1ece83ca9d2e115317b3c6866618b139d813bd7715d5e5eff880e249d\"\n}\n],\n\"handshake_hash\": \"69f3725c1db580957e1475d0285a03b04e55bf183186eda3a0ea3137c54c94dedd9feb270a487b7b6e3cfaa84a939d842bdaddafe54642ab2d615afeec672135\"\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aaa5c2e8575dfcaf47c980ac5860465b9eb0edc22f3f312e4d2159318ed26d8124becd41d44e6483439efcb965c93a0982030b24342448f8de66e0e3e47cb183ccd6a32b7bbbc84e3fc8783731918093281862646c6e33d2281a46b4d6e860635e9d438b629614855\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6527f9360d6f588fc79c2ea6600c44786cede164309e7d2ad2e6f25158210d317315406136760f3b25fb284f5a3744ebea2eb400a1c5b0feb60c97d3bf131b14af43880a017c4a93d399da1da30e315f427d630947efa04e7cc7e528c99ddb71900ea377cff36012\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"31bc803ec57c4124689261bd7f331ca296046cec07876d496f9150\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bafb8e90745abf2db8405684d1c52273d7a820f556d2ed800633e0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fb7a80a46024bfac8f2b2ad7bab66e13fdfc0570d51858c8760f03625865e90188\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cd988e2d5d2366c0dbcfe5f1b4ce0da157310e1cd24825a101a6ad7a9e11d8e4526f2f21ac\"\n}\n],\n\"handshake_hash\": \"f9c7cc85149ccacdb44b3b6180ca23b9ed20d24c308831917efdbf769b2d9992\"\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9ebf002f8753e27f102457b876d96f19b032dae5954f5491e9769d0d9957cb9f1b66a57491789db3410d23bf8220afd309c812c6835a371c1140faf1a0d33b997f2ce73f2cd667cd6280be8133bdc5e72d08b4cf6d9409b114a6a9ee906514b438cc0c9c30b6f3f8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65da49c3593e34485618d95324bef71ab5f5a91c99ca2b538b1228c25da0bdecff95b46bcea2222cbad1ed005a19e5fb4337190d799b146e81b897bd622c5933b235b6fc5e681f8e8e3d54ba92e2d5db42453124b6bad0a68d9cfcd7b2e43ab182c1f125f46d9191\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3a60bdad8f0b14e71f5cf80ea35e6a26495cf9f65f06e62abdcfde\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9569f518788d6f15316c1296be81a20a67d82bd9c568b284866a55\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"be302612244c970d6a02eb353289643a67a876c15565ea49dd4f3559337759762b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2134d913f7de581cf8def1eb5e3db349b79ec0f54a5ade8102c0f2f4ddedfbb4aa339e5a2c\"\n}\n],\n\"handshake_hash\": \"d5247c10a68a662bb3e3fbaa67c99e22d60399c82de9ddfe17ac170d0b427d84c3d2798f56aa4b9f2675d4389bb2935d3368f1b7827a37b6852d6e750825f495\"\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_SHA256\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a91003ff1fc8e57d8045381b366a94af7c2a7f91b12fc7d888eb0deef852cd2bca1eb18b29a41e09f375503ebacd8ffb9065026d5297df679f0f64222587f8c27ae3d94600fdbc71a686ad85b0b8b7d8f880e3f05c5e69900c6000c23ede4c20ae1dcc07d46fc2c5c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6559557cff44e45e5ce919bc2b2ed7e82da8d1326a8e0aa89e21d51073bc662ce59f483b35ea4c0276f2c2ac9c22d28511abe87dc1ea51573e6adb9e7f5120c40825f1c3517c1884b752b581705020268b1f5b1a612711a25926f9176ce3e8e10981bbb6329ed0b3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f6cea18461440312fedf5d48f9ebe77095588f94d5b4ffc0a58cdc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9098154f58c6b493f03ec769d650c4603f071af7158f28152fcec7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7cc29720555c96ccd7524a3be40d7ce709d4d18a9d3348f8343322981f2c0c8209\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5eea511d89fd72bd8992a48097e8ba52088dbbda3f489ccd226ebc094b3e3112c6161ddfe2\"\n}\n],\n\"handshake_hash\": \"3a34b46adf79c9a769f2cecea596c5a5706b82e90026000281dde7895e833300\"\n},\n{\n\"name\": \"NoisePSK_IX_448_AESGCM_SHA512\",\n\"pattern\": \"IX\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3a36519f00956cb2f8ff4b3a1791d953073835990ab14122660ab396d2c5bb371a0000c01ef63bfd725be46f4d4d5c3fe4f4ae6bc8c44e5abc733b61d3f565ec58e7378902471e23dbbd5fd0ae68d2082c8d0779bb02819b381f00b55b8481f245533eb864dff4aa\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651af0e37840b577bded701f02be892861e02c72f808b9b5ba8da568e58490f23ebf46f768470ed552d0e463655a640486e883ea834c5e5422bb4dd812ae241eec5a3e3655ea44a10f036fa4a44c8197735622c6de6b63326797e3634654039f08801f1c4c5bc2e5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a847915d703f3f68b66ec7111618dfd5a81f81337dbdea0ff03cf5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"00fd9307e066fb0672ff75969248398d611645bfe3b1d100ba4666\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a43a82d2a68bc8a42189070f7265ab169e3540486b75dd239393a0f3b5c4d0f15a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e097eacb722e46925c7cfd37bd28af101c38bed48a9dc342f50743b40b74f3597b09d2b434\"\n}\n],\n\"handshake_hash\": \"31b4c2eb57fe0ff9881cbfc4092aedf2e34fa6e4b91ba04572382fdd91cab63e74d62dea508bacbd8f648ef50bdb237b57e827744627042d4aa958098d09f27c\"\n}\n]\n}\n"
  },
  {
    "path": "tests/vector/noise-c-fallback.txt",
    "content": "{\n\"vectors\": [\n{\n\"name\": \"Noise_XXfallback_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944aea61f2c1efc2d9700814dc96a8d8fba4351274cc18ef3cdf9aa8488c631200600a2e13226dabd61a6ee54f294d3275a4d760796d51f12d27c25fad320cbea15db09f78f3125d390ddc0c791f20b6387\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a40f686fb88e6c8f3bd4118270ef4b307cd0a48ccc2ae47229331d883d706fc8478163e29de1ef9d569fd272fe5c4a5f2ac29659aee6ce683df9139413948262cfc43295dfc39667b275b92d75db48\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"01b3fe36dbc8e08d4d5407b7e4aafcb6d4b670dec1a8eb50816eebf94964ea713cdc8954d82be8e24a6821dc8dd45556ab69a29474571b0d8ba936386b6a72b514ac45b8df99b8f70ba02f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dcf3293c98642cd2791d2c6f3232ef939d773f47b859f512dca93d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"76414651614f48038de613c234da59c2e75bfbb5c87e33126e8e57c97fc9f721e5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"016f26702eb62b6822c50df2ca05cd9e467d254232cfd8b497bb5e3f976aa1861bbd7e685b\"\n}\n],\n\"handshake_hash\": \"54e424c6564898d6540f925faaa56516967c1b7847f4cac83016b6d1d318288a\"\n},\n{\n\"name\": \"Noise_XXfallback_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794444c103b601479a745cc5cd1ecd456f07a5a585a145b4f0615d73bc68b751c82579de1ae62e1fcd8306ed051c75490898075cce39b302acf9860aa7f091a62712e45e9e51fba842fb2a610aba665fbba5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437714fb2cf42a1fc018c24b3bd16731f9a1c1e476d4bd0d0ebcc53cd970d46776ce4e0dff06f00d13dcbac05019986e45929d9e70ce9f27b60ddc4b7ecbc06093bfe336d88f9fc2f0c923439b76bd3b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fb87f74cbf441d50f7ebe2e1cb265138de3f2070cc34a12461382ecbef625feed719f4e89385e0875a81e64228b6763b4eaf0ea4d6f0f9822534909bdcd0f5d1966f62be436195577993c7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a1ad6dc722186ef50b242f90f68a7c713e922f257c2739d5dfc956\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"733ad645ff63a8fc84129292f40ea7436b7277637a57b434a2d72eccf5fcaf36dc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5cb9704868319542e03376b53a2ca844910524e7826c4f4a8f5442a6466db486b8ec9d72b4\"\n}\n],\n\"handshake_hash\": \"9ca839672840ab3f239a4d1d7136ecde9b3cb8244c0fdc7d6c56f4e394144a54d28326d042ef30d8f253c977efce03d8f728686540672a9eac53dbf9b4c28b57\"\n},\n{\n\"name\": \"Noise_XXfallback_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a5ee5bed9cfbd66a10caecd9c3d7712389cd8b2b9d6f085cf010d25d4a8efd8088e4cf0f017e5421a790b54b870c619834ebc7c2cc0b3e94ccd34041845046332081c1bd470deb1197d20a352dedcd80\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c95caa5acaf9a7cf34254947f0d8da9233b3a4a57993c4d824696e4b1cef496cb18dd4f1769969fbb0551ee2d4b6edd0084b2a393fd6abd60235cc1b608d2df210b208d2f0eb8aea090a565d95d91e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1ec24f2fa67db6f7335bb7e2848571f4be76ae6702fd2123465e59e6f92f020aec4171e275fc91649d9ebedc91a507ec5bf745ec726d4ff246b6d4f460ac30e6b281174289a9ffd34722a8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a5bfb0ca1ccf0e51d4fb1db0b6ca2e4a7d6e8c5f99a855f9acd085\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2b9ceb93e255064971cd959b919cc6f005563e4b23b13ebf302ceac191c753ea08\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"174007173d84dad19f968e1721b7bb68095143a4377a75d7e07f40a07f79a52deda1114224\"\n}\n],\n\"handshake_hash\": \"ecabd6cfc98cb5d46b2abdc22bf2c3e8dc97e40fc019eff2da912db4f19266c6\"\n},\n{\n\"name\": \"Noise_XXfallback_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449696832c68f03dc5c478860c0b20e43546beedd2640fe3a2ae34e0bcb8c4647c1355b54c1de9435c66c5616c97259848aaebe8552de4e2b11d2e9aefb9e9e1c45984760b05fff746dc78497a202fc03a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439b7bf2045bb041eba16516c75be8c236f1edd76124683d1abcfdf9d7117845d16d44f3cbe90f1c74265994bb4547f2817ebee6dfee7cdad411681201c4f540c948fc078c334693cd902b869be79f31\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d75c6f5b38720f723e50a535ce5024c38f59131cf64d84d5edb6f38822c3ed2966a382934b8b9d0e1be07babed66b10e83b87cc70ae80c847a3b85c4d8be581cdd9f15eca82a13ea35de35\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c394825f74019ec285183c85f29cbf73fb3d196d3413b183b572f1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5b5bca4494d23102268a964d9d33429a1f60e9cd4a27313424723bdd44a2d8c080\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"869499944f76ca0e32898c0b4148bcea144f681ef6ed6857f820eff73488fd86a29d9a25d7\"\n}\n],\n\"handshake_hash\": \"8a6cce86cce99ffcca5fa8ef912883823debb06721311b77ea64c2db7eba364d37f94f712dea812832b3515857296f028a9c8b2b5f44185b559f350a11849f82\"\n},\n{\n\"name\": \"Noise_XXfallback_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a1c9fb75314a4337661ba095bea148c5a86f0655033ed028603baa2914013341a610cb722ddbde4fac7b059db3017ae6698e413efc10b3ad4f84909bd471b46011f7d6299258446a18d3ca25aa944e39b2788d12fd16fb051190c636779d20a2628f790ea12be00a0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a426296cf660c9ea26e3b18cda4e17641803b576f36602a4ac045cb7061a12ffd06a24bfec1d48abdd6a6f21e07219e64114809080da13d83ea58bf5c57efae0e115c10210ffef8145846fd424bd17a37caf3f2785c8fb7656978e8b521d733505758d790e5079\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0dfdc3c05c4579fdeea20a749efe8f4928f2f758fce612a6e034c29ddd8bc036d625f3d0a3fa08643188090e6d4b516ab8c4122c0faeb9cc0932bcb80220fbd7b4792ac2de175334afbe01178e5be7e1fa47f3da3091a6bea39a95d60e1d6cfe8d2ba8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"706eaabf3f044673be8145ec2d262604e91785d38aa569d8fd7419\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"45a4a19dfb026011088d7b1288b901fcde58fc6d4bd48c062f140a03013ca4b01a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b38eca8387cdd312e81aa7b0cf4741ed38c3c314bb977124ace6e6453e9f80d5fba8bcc425\"\n}\n],\n\"handshake_hash\": \"0ab5c9187ad6067d744167f5f6d9a62ed83e07e068028acf3652d78392f7df59\"\n},\n{\n\"name\": \"Noise_XXfallback_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae9aa739fe2e9c7298ce8ec029fa3494f81d0328ea3b0099f6325a5513ec5fb299e29e18f054cd8dff79709b7df4b504dc4fa18ffdc4105e6525de88d9a43f64cfa30558df80df09303e247f8b02f6df151210626442b02a7c40b6112b8eac8b5b4b535f3f9fd123f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653fa19fe4572278a6dc212edbec10bc6455886e01f8c19f1ba5b1bb41dc274c7861610f0f0c26ba925b577001c92d81600c5e6f9def9a4d3628fd902d98228771bb08a45ce1679333a410b10507b905718ac089dfce3ad0b76ec64c58803232287d30e71d9b0e72\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d7fd1cc6f7489dc7a825d6aeba474db8197046e9dfc4c4c6f4674805a5da53fc7132ed3d1f9e9541ef05058f949f5f255a28669c88b4ac530ac135b5abb414a51482e9a54817479334e2133841cebdd4b1ac27218afa61f0987994bc1968e820290755\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e4968ea041d9a0f1546c65549acd8c2688241b3b8d7d99ece0585f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5a8829577727ecc1c1fc2abc38a1a9c5cf169706a2d0dab79655057efd111a9497\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"30f97128ab5fcaa7e6e8a8b0e6dfdbcf154f21f1882a8ae9d45a863711cef907a4ab16d455\"\n}\n],\n\"handshake_hash\": \"8a122f88d2a5af1edc736bb3030994befe0b6a70e677a98b0947eb8f5647a76f78dbebf95ec62bc70a3824c6dffb08dc76b8de859c5024497ffef09ab5c067c0\"\n},\n{\n\"name\": \"Noise_XXfallback_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5a72a7c68c6a6570fd7e10844fa71fd5ba92cda371022a7bc3c6246ec79fba07d1662d49e36a8ce98ae6f7e9b85588d0f11f09f357c037d701ab29281dfd2557149d81a086beb4c7124afc80edb891bf3fd20ce905c2f0c644bb39569d996241c793c3b11fedf776\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651b0102372ad56de167e274a49d635addd7f3bd09d36b35feb42489f812e502ac1d8bb3a70277ccd95fbe9d23996dd10bb2d399f6cb4ec0a99e8e6a499bda547d8711da5b54f523c4262a95c6911ab82b34f6ec06a4695918122d232b210994ebcc4bcfc52340be\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f0426a69aa49ab91b831a30b4b1d309d3b009d2b8f7abfad8c0bb1686e1e5042dd3089a04c9bc81d3f0ae77afb366a0454d972f51463666da7c44ab634413a9edae1b3dada295f1ff8402930ae1d27c504d16b6c8421f1f22d979593226f0eb6416f19\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"14bde11b6ceb91a2b59e6f8986284a0495a3b13f33a3ba96734174\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"14b3a47bcfce7f7d6407b7e1852a359b9a19d1593e5b44e24a77322006611fea78\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"00740a8f775548a95d21bdeb8bb54358cf0f9b86b6ed1e318bdefafd684932590491d04654\"\n}\n],\n\"handshake_hash\": \"de10233028733afa576e3dcf938b94d3590151694649bbcea353358c9efae202\"\n},\n{\n\"name\": \"Noise_XXfallback_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4a75cb6f76dbfe3e066f3a6b17702c25d1402c885781cb9d91e22b21ea94382768fdc77013fcb85bb70065edce126e78eaf7546af3bacbee3ddbb886ce2c35e480dda812ad8666608a0af51462ae91b98a689c9cc633bf10582ef0ba6a032f7c4f608b5096c52be5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6510dae8c52bcfd491bbaf84d6a827e2f39735d592b9f8df23ad0514f61efbcf3a1ee2718c1dc74fd2e9ff588a26067d9461b9691aab571b880915215d5c65bc891fec77ff486dbb25b48f3b1c3e10b3b4b8a712ddb71e565af64a14722f26155f6c9770f3d912d8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9628752df13126ce2fcd7e546521046988501097547198ac37318d2c59aa707426a08102a504573d3ee55db48cc375feb4619778fbfe81298313ea31d659d43524b30e9ad504a7ec543e2193308a4f93471eacd3248a3d4e048e61e93b080b182ee60f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1aa79b9afad10aaee1c89a51f50e7e7033de4e1e5f00bd4da770bb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"72ea08603a9152ef03f9f5fd93505dc7e7089068649397414f68a06a63ae8f39d9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3b5dc86b673ee2521ae43e676b6b5c441f4573c42cb6c3532d2a4a023f6184dacf405959e6\"\n}\n],\n\"handshake_hash\": \"a21b7bfb5df71b1d848070c239a740556a81492587004e2958d2d02dabd99d5da36af7e270572f78f0dde2d2bbff24ff3e18a46b6dd9efc48eef7d836a4aedf8\"\n},\n{\n\"name\": \"Noise_XXfallback_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ed93427f5ee7e5dc36e2c7af485bcfda1480c4dcf85fb8ae926a0f8fb4f8b68afb0aa6610e645b04fbec834602d138e25b5ef7e9bd3ffbf1b1c260f6325d933ebf184f0d222a6bdb85f021d26da160b4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436b7001264b33fa645d5cad525a8d5087034d53ede68f5cadaa385670a348c03ea578d5f4220cf2a43170ae4da54956fec41a8419452017121575cbbcb05921404891ab9a30ec1a2d46579a16e4e8ff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b598f88374aaac2dea9220750a5cb679abda62fc035b0be5c5495cb39fd031f4c57c39498a35a2ce6a667bfb3794ae4255a3e22711c68700a772907374d586149dc6f141374a1474288166\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"66b8a3a2b3c6617d3da97e82635c2120dce581e90637568aacdd10\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"31f442c4b0b10050d9973ba6dcc014c0c595da40f14005e4d7f29c05c9ff082a7c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8525d6cf5bde8485892af48c4ce8dcc80c5edf55d42133b8cdb2bd6c79bd77ed468617fef9\"\n}\n],\n\"handshake_hash\": \"de0e8dbbb962f0b73378bccc25a2ef40f4ec3f8b4e43baba8fcc73ba8df94484\"\n},\n{\n\"name\": \"Noise_XXfallback_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a3bec64026bf7a2212bbc71f2ae92411b8bbf4dcf1669077d7aea24eefa6346d0599b3599c0105353c1d0cb8b001aedec0d5d87c86476a5ac021cd1bbb7797fedcfdc796e8da71e9d555e54f64ba35bb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884381469e1b2a26e7264f47d96962498496bd8c3337ab6816e4f8fc32bac5f4975c4fcae5bd5c8b29a23a729bb6109a1deea2e45b4403e7a8418f399cea1b950549cab2d30dce917ef8ea32c9214eab81\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"790e1f3073ef8a3d71c807a62e0c401084c20ee9a3973a500fdf870d5aa1e20eeed6d24d7f527448e3d1d0244f2d72cdc88ebb73c85d6f299d34e9b1a56fe664446d57c0daceacf39c2d3e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5dbee193adc0271c3fb937332e08480993d902bcb6f2cf3d07d0dd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"deb9b15e5eb30116b86fb8e79af7485f279c3dbcb14d53fa51abd705ec606f4ab0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"62531f912d9e78b2360e906a5378c604cf755bdd5c7dc78f5486327c2181766f4403264781\"\n}\n],\n\"handshake_hash\": \"9a8d5d4cca5e53e3ed14f9e4e9433c98de38a66ca75ab774e482aca933c220d03107b41de066a468467a883c4e64a3840d9663cfbdf4f240b4ffe6ba72d08630\"\n},\n{\n\"name\": \"Noise_XXfallback_25519_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b8d8614bb060f41b87643b3aafb8212040d88e76814403c76a78836002844f61270ba7797d441a896debf6911afadab12354107db3c9019bd97d60a87c11e917f7d6d93aa265404c8e8b83065fb8f73c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843824e059afdb8c2f7397b7b398d84a6cde4178068ad7976bd04793a16ce9d308cc9f2e8b305a36473303f9ba24d6a92d02c279ebeeab1283fe1543fce646f4b086d148d0475becd37d9cf3f2e32d862\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8c2db1c7f7485b1c5dcc2275c19665b2aed8f0fd9dcb02944ffbbd4ea4f4553fd6a39413af97ad06e1bbb1ba65b8eafc616c6fbc51d425b1c8f4e114cb017f58286c87ab62e06f6f2f51e5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"da246c13a9f1e6d5a18298a9970451ba151b295c7f15619ce5f7e6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"51e0d9073c90840f503f94564574dccb5eb7055eb0b175f1972b35b6b0a1dc5a78\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2926988f3d1036a019c5687f12e8b8c3f6b7b750013cbfb9349517355f35e318e196085154\"\n}\n],\n\"handshake_hash\": \"07c36d69147bca9eb6b2027bfe8dc6b1ebb24b50d60d99365e402164786204e3\"\n},\n{\n\"name\": \"Noise_XXfallback_25519_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f550090c72302515e2be8229fca829f6fbe5e08ae6e8b948c972af4bac986ef0e6481799a93f945aee0ff21374d789625d61019c705f9e83f44d4673571701337ece1142de87b912ebe77d140f2b3614\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c6d37b52a6afef7f91a0a6f81dfda63969041193c75495b0796d5a7d390412b574dc1a7e9aead70ba9f251a3fbcc03972c9c9d2339bbc3f41fb9cae5d9bc71444f80ff0be087587cdd75414fcdd220\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6f810ae925fcf83d38f198e3da5115206421e6dfdf4e5979a064239cd2491e934255d9f70483c56283dc65d75ab8aeb45132680f0f0a9a8fa066105e6094bff8a401c1c6e7cfb53b7a7e2c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bf88963de8d3f841120557881664410fccff4b8554f9389501b619\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8b0a9f6d4e08863352eb76b039b7882fe6f6815c6d4ec66a8ad5dc8a2d4a84a274\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"93aa1992ce6fb3a89959a105acd7dbb3670d479c99f1855a30063ee9e7be3d7e2860b48ce1\"\n}\n],\n\"handshake_hash\": \"2f56227a97846c8c3ff0c780e88f5764055a0b1a24a37e2c021f79c42b09c9d2a942c3010146b615df038f0b78b1abf1623058f9ef5a468b778ee77320797fa4\"\n},\n{\n\"name\": \"Noise_XXfallback_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4afc65bceecf28e88c008c22c92f44934bbf061779edc7950fcde24b7d5b1e41dcc5d6c4d53d31ef14cb0c86d06fb3457ffa58a5dc3882a6bdc0a5e7e8966a1ca79de77f5ceed376575b847e14143af503acb6bf551cee8e969e860f3d50c27d8fc6d4e3f1b24c7d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a8034db4b52494c622dcf3cf3959ab235d8733dc123af9bdcfcbdb7186d7246589959f9c04a8082e071a5fe36f1170d6ab4932ba90918d45ef659a3869bdf7dfcb8764c1b04410307bc5b914f4dd0408ffa509338d56dfe12d0f061c93a902080a3d757c3fd161\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"90002d83461113e8c8d49f57dadac8dffa4a34d84b4673113fa03ff40a0aaf5edb182dc081f6945170c3d2df2c5f3ba4f5664a4a9ead9ae0ca551a29c446b00a75018bb54f2425e8e180489fc5412cf3588cb7cb95f4d97fdda8ce82e00a2e9736a01e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"967cbedf1aada220cdf95092aac558a4de47ed030fade7b33c8876\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1c4e0b75382651de7eca060dba1ac209aef73ace3d272ad7963a73c5fb08834820\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7250a70844a039a14ff803265125277d633614226986c2887f495a7822196e70f23c84f9fc\"\n}\n],\n\"handshake_hash\": \"93d20d7b293a9fc4e9a548c95febe5a9f13e248e32f172856831712a3e56dcc7\"\n},\n{\n\"name\": \"Noise_XXfallback_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a26e75bdc71ab2b3b22f8a143988174533bb0e978d70487cf3c6d59f42131e94bc437871c53df277f9fb104d96f2f3b0d05b4355e0b8871f35c3f582d26032e4423356e613f00b170c5e62bf3795b77585c797a2d40bbf213294b02e74e97107dc7453f0c0a126683\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d9c4f5041102f8fc61ad53f81bf008bf9026cda540f34aa2874f60bfd22a26b7bcf4e763d795782f8fc678d944eea3e726b66620193b0606bb44a8c6e3ec4603d4fc9a8d5d8f003d30f6f82f2831bc2bcd46647282178c043217c1f9735fcd87e9d05289078113\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"009391e72d8c7e152ee634a4f99d82515983a73d9d2fd8d1e91a34339b21b42e74a78c53e7fa0506a283f543cec470b20cef9ec88ae366d9ea2eb1d3bd93e22607d5580761bac34a1e40f044106454225378fc3b8988a5f36842e3e273cf1bc6e20cf3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"78554caa9002c25c3c89757cbe3c4e724be365070ed00a7c751f85\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6116f2bf2cb8e46d2946987aa3108a2e752ff19c6c400707a326eec728e63be7eb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1f5420d664a3dafbb3212904b763e854a776204bd48e54dc1c9c02517cc6b96803d4d2b194\"\n}\n],\n\"handshake_hash\": \"0c1345204682c10d63b2c58b6a6ee117a825cd21fa1068c139fb856643b2ecf389c5643b62aac702de84b4dd8166a734180632c7f2ba6ea8b079de2c75da2263\"\n},\n{\n\"name\": \"Noise_XXfallback_448_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8e3dc70856f83026092cf98287fe6227302514a249360e503cad31a177769cd23bebd2677f327354a8103032fc29eba6c1471f7462713b558232a1d2a6bda1676947d68fa36cd1c971769223f9d3fe766aaa4f3d8fe2a7be13b9f243dcd3674ce0a2b4cc43ee66ea\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e3f5dd1bd99e586a596897316cca001974f992be11b428efb07efa43e9d13a8e9855d3261d405e10fda71c009f421c52824453c6131d6dca0142100165b3c277de879fb8488a76fbf20bb35d5b1450c76889efa2083d6846cfe4fb122d27e5af7a2af381f03910\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"443600bc473f16d344ebdf4176af9e0b9616a900c881630eb421712872eb366643bf0bf07c2b38ad01482ee2fcd700efb63deda41599ed267f98941364bcc3497ca2cda57d6268328ec856f4b085a8e85a9f95802f7f52dd72d87066645a640d40f347\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1a6ea28b0a900a4846148ec91715dc2e2dd6063588652380fca42\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a96e14c139da0b3d149f44e696ba02e8f1eb9ff5d8eeac4c83ebbabd6e9d6f239\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"720a621e4a7d2a089dd10be48bf8a227e8e63beb7ec8363203f507a5a44033f6b660c70e7b\"\n}\n],\n\"handshake_hash\": \"1e076ced4d3be04fe743b451a9ccda8278807e47a2e4d239e3014fa385781d05\"\n},\n{\n\"name\": \"Noise_XXfallback_448_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9148a3350a7891935e87995a4103402d4082dab0ab7869e2fea0cbb45b36666ba7f15ef86598df3b2db31381bf8a8f26804b55892b07250d64e9e0f9c12682dd53b8da8a749c31e4b04c0d504835bed2c56895ab9ec1f68eb89f6227a704177d69dc61910d6f5cd2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65645347c821c27893547aae940c92b5b85b31190ea4f57df58fdc3dfb80478e521940a94e900568559ee5a586f188111196f66e1945995caff575f967aba0fa30dccf9b3e4457b9d99ad8831013e6eb4eca0adfd6c494eb5ad3625025dffd0bd47de9c9015f6b1d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d1a8f8f2615c14e7d637245c97f48b8a3b77fd99ffaec67d76159e611bdeb32c9a6f1f70c2fdc951ff716e27aec30a9d219a750d91f667224594f3e063d035ba5480290b2c2c1444fb05d3494e3eb7387036caf21b9391786f81c1e44b3116bb418319\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"31c604954fcf9d8a820185e4328b244ca4a40ed91c62bd0f2d1cc9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0264062f800efa60ca039b068c5f0d5337aaafd187a4e386dc55c8f683981558b9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d712278e43763a32cb64f237d223c306d2d65aaa0bccd90cfe0d20ef7606417092c757bd5d\"\n}\n],\n\"handshake_hash\": \"16725e642cacffdf4c8ce31e5c87323ee2b7783ce690cf2ef3c038fe604041bc65fa2bd331a079c7b920b981294d61c0bfceaf531e50870b46dc9d9fa66a3261\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f9080c87fba2f571e9ae404761a0a88868e954cbd4b1207464b5df724d941752b2d40b264aebb1d02e48e15ba239c7f3fd397f3d0efe5e6b682d431a44cdf81863a96b8e3ddb4afdec80fbb6251fc10c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c8c179f8abc0320a523604181a0907f226d8cab79deb7f002a8a9bd4764bfc3052aed3cc17922f7714d9827e8ed950f75ad00b105f5df874196cfe96734fbcb6e20020b035d11c2a798a46a042475a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0cd470f5d07a6ec525c9a50fcc82ac7e4fefa45352b987330c926981e6e3ab86e6dad4849d734b967ecd16396eabac25ed512860674a228f390e3d55eca81c5257c94029d7df5300aecc2e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a13279e5922025e97d19315ab17b72fe515240e01f04f67708a9ef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ee768ba1bd60886cf41e62be42ba732693a313729d415d60672615e40beeaccce2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"78a238d233244a5b11033142da365f0834252bc45a7b45139643c215325c10adb303080dc4\"\n}\n],\n\"handshake_hash\": \"6a278b58c1790698a878a7f4fad6f0db0e236b3669e16676fc7b84a2252810d8\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fb317cd6458017baa41ac209a79f3fadf09ebb071db67a95e151f1833431b288eb8f508e3612420a7c25a0b90910dfca680aa2c0e95d9e6cd977c761bf5edd702f22a61bab59d4494be5529e982466a6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a6128930f12f64e7078701aaeeb7201967d584bf52c20dd8603cf6f4a7261b7b975243b0360dd0a089f6552bdea587b5017a09731a855e19f2b497e6e8aeb1465b831b4845c8bb7960acab676c5fe3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6653c7a08673c3981cb4235d87e1834df9dbdcfd006f8d6d211441afc48c88ea907db94efec403021c3efc6b3b41f53891796dab3a322bdb5e50e44b03d13e0980d7b957db883cc47d835b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c8488838c4fe3f4ae6150cd2cc9dff8e2dd36983e475c53a46cdc5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0722744e07e333a188b7ba64b75e59319f93d73790490f4c964735d22e70c98a8c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b4fbeb1eb03cc97480928f1d01fe256e438d8d1cf393af12c277aa94a3f5ef9b489c5c5103\"\n}\n],\n\"handshake_hash\": \"1a2439e5fb4f6461b720061821fd1a1975f6f64e6f27e0a59abbfc9b9af5efddff0ebc4f05d39952bfcc5ae3d3d4e2b791779d15276e610c8874573d510c03bb\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441f69d433a5b1a5769ac2367774c9712e0547462f17cef1cb357e7104e188951f19b2130ef98095e670a447aa2cf93321c4ae1c3dd595ffc678d803f14dd03b1edf6d2f784a8c6a9df47162e271531af3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a7955c666ad33cccfac35381adc95037facf26e4ac891ebfdcce94e4ecdf4a36c172929c39ab7f98cdd9bbc143e94319c5b38998418dc668140d9de215fbf8807da625a3433de0303dbec995a17715\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e9f32c2836c78221d259b43f712167d86662d9b42a68d5e825b10fd86ecc1fcfe8e221d5442d47c7fb1aa3b907424fa71504e7f290c32ab1a402f9b452e38fdb6580c37a92e159293e590c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9a4e5d26c3c3ec2c096ad27bcebdc6ca6cc0b15127454a8a228ab1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d6bcf5eb07a30bd08162420cb9fdf27a6b51193208ffa7dae915b19abfdec82eeb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9ad4eb4422298e37985ba59eb02e686ee0265de2ac4a5f1379dc1c41a23045aee0a30f3c97\"\n}\n],\n\"handshake_hash\": \"783635536d56c2881420defe04ff7a0f8eec61341e79561d36789dc715ba966b\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d5a9eb8cfd88ac6b75bb7506434ffd2b0a141a342472ca0a98956f5facc0c58bcaa405060adeb0819eefe5efaea00ac6fc8ae69b0844c1d744aef1f3ca6b48cdcf755a6935fd5b4f611e7b9257827db7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437f855e93038c1edbc9b6db7e15b06cdd83b1e90f1c1be0b948a4ed2222a66505d8676fcb4afb36d77408974b8636a892793c5f4532bd1fe2e509c45999540e8fbd4b69919890a611251e41dd6436c5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"49a10b08439760767c2b102a01bd7e8b84f62c5dc5bf99db7df542703c62dfae406f86e091e42fa300f0936126667a7b3ab3beba2975fb44671f7048c7e93ad27e1cbe560314382da5b690\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d81dd5807769fdffffb9490fb4a5403271847c2c92afa09694c19c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d28ca5d03a94b7d9c391b88d728f3a30d7dd886a63bf5d865f198bcfae27799b3c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cfddeb277c655b618cd3c24cca39c61dbc6f59cc82ddbca10406f156f8e29ff63f06cab4d1\"\n}\n],\n\"handshake_hash\": \"ceb5ef3ca4e60d860fdcd9b80eb48c1b72c7f4ef9146a8b7a4ac406c5a78968eef60ab328b57a6a2778778eb3ebebc1101605175fbfde77fa86ff88d13ef51df\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a20dad44cfd9fa3a8ca5ee13e1400e6b1536495c444ef3dda1477a7cae35df3c04f421df2f4770a18b3b20aa2402319187d82ef43a4dc9ae59c0f8eb58405b2c9e641263468a956013960a00dbfc33ae880da6e89c8b2dc8c8be7cae8311f49c4adcda999e5d64931\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653da05e112f3d58e7075c62231167bd9f7077f033a5d78d40393b5bd3b58e65942691cca28a829adc7c0e75e051987b879b5131c4e2a5f10859d043d40749fc90c959125edf0015067181316498d0e210fa2448a381f965b1062ba9ca8a359a660ece7eac3900b1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"39e590b0b34a97b2505f8677dcff4999dcfb2db55c353b3c0ef0e79818d923664266bf8560604f89a4ea37b1942e91cbcdfc24f72de8f97d2d432ee0147dcc02d24aa4592d5a09266dbbda614682b8a674bc8325622aa0a43abd00dd1eeb58246b832f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"804ba6b7b38613b27a94ddd28c8e5054dcfc87ec12162209871a13\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c7da16e36854216e941a89e06753b4453e002793927cefad920e75d138f23a59eb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5e0da6241339d7bc0857c90b619f157ebc84331ff6bb29eedf7cdf8d2f02883da88e69a500\"\n}\n],\n\"handshake_hash\": \"57edb263b0683a4531ce808d1709a42c4e7b8514d0ca415f4eecca68e796b76b\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a7f2235546356c67ceeea17a90c4983caa0fb8c411ca48c90805cfb0921630676a366f0a8c7e0a6806677eb377e912ff397a9fe780afb7b1d0bcf6be4898eddadd465efa2d1f547458548edac0176d9d6df9d25b91961042bac96d39ca0ed041c62b732213d8a59ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b53e3f2849ec10241153cd91b9f368665ee9117a930fb0fa2ae40d3e8ede23d955aeac9a5aa63ffa23558d9e6034a3404060107185f5109db0e06ab66d3430b197509f762fb9a8d4f1205d9979e489274cb9acf6b33f09bd353ab2bc1fbb69261b6d709d73557c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0de45b83140a1df1dd25bff7f92edd139a6ff25ab23f050b6bf5b48f6f90896df9a118a5d24892801b1c4cf7fa6b6825a030aacc8cff0acb4185f944bb76ecc4e6df0a6f8ae39f718475ac4ff98205737294d9b00629cfd0a6bc7a447582bcd891973c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6bc324158a859898eb50192a86f09962e342da10e0b488b26bc935\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6ab58592427369752672534988d46eec0dd1063a5e8a3ef0a4ee61d68f2434e9a5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aeeab3e5eeb0bf2f86f7a12b23d403780868b542036fa56afb3e20af16d50b2bb69bb736ef\"\n}\n],\n\"handshake_hash\": \"7f1e0c96e6d02158c5934430b17d0dc1e408983b76f770ef0c6466cda0fc49e32c442d7a07b1a100086daee47d86cec3401b706f2d588f63932a877d6512d237\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_ChaChaPoly_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a582911cfdc9f9c30b7ea7a453c466c8b5d0d8b00da117a103b4bb116ea70fc58b0ab9e1fcb07e8344af40518aa4ba8933e4ae8f95f3a6be00e2e0586c89d73e7fdf029a3fd23b3d4a7efb2c06082b3693945f0ff6d13da4e58c8691365e8dccb1163c0031e51fa6d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655e9def612ce18772b9135ab5647ab25c677537f5811b7f2c2b66cc9604bbb2fbcc37707b367b53fec2fbbf9b1437f6da2a49ab925daaa3b544ef91bffabf69c0dc523944532e65fdf70a86174bf1727bf58d40d1ef5a5b16b945b3e11a87bd8caa5b557e6a02c0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"29a1f09860d0463da840a924a0e01940cbdcc8f343b7e1f738e7fedf2f805f2d8583deffcffc966e7981452b1078a75e5803403af9215da6170921e359989948b32e6c8a565ec54d4fb3525dd59517d93dd8d6180daadcb9ad188e204e8ce3d67972f4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"80a4bda2427022b85d8dc3fdf03ff31de5ac91bd61546262c10309\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fbad81df47ddbb1daf8b51e1e5da2808fc60875e890292aeb6aaff3a1db9f53703\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"909f204ca99fb74d5ee7b3c1d7daf368cf07e6e7cd9b32be9be54fdebb7df247087f3b3e9b\"\n}\n],\n\"handshake_hash\": \"bb597c0313f32c1c45bd6210f427673284ee5961bfb999c5bf2e4246260097a4\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_ChaChaPoly_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a22f1e325f87fb1f18936541f2733d9111032cd291edf920014ea83e817dceb4b9b535b3a37955896c67737c38ebf20f0f5cdb021d325b4a32b95856b5efd317a0ecf213edfc0054c8b5d510c28ab31c05232e1c6e7e94471139bf52117455bb07eed29522e052d50\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c6524fc458e151a103f0eb02e63171a85a92fefce591812fd39300faa0514656db58a2969e47c437b0fd3e56fea9415aadf66ee9a2e33605b7d88c996770470004569b89b8f2b1dd97dcc1c93ef90bc7372d7363fc7815011dbe355fb54e6fc0a07c52f3737ac6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"87a0476a98a42ba59bacd5766b593339607eebedb408758db02dd5f83c03005524aba0722c3529a19828434ff5d2b85eb2e3d5e3b8316e62f8e8ac0194c71d5767c814f56e4ab6011141c2d247970098b94cbff3560ddcae50ad4963bbc9b949d2ba53\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"48935c135550348c7b7ec37811ca0412834529f9593816d9aba27d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5302cb9953164d5205c7e33a225e8c03c8f772ffd14053bc3b43ac3b6b262e99ef\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5743c77d3184083b1a9f5e445183a545b1a21524f1f9d5b43f298d14a5192be0f6321b6528\"\n}\n],\n\"handshake_hash\": \"cf069aa84a26764c71ef6bdb86eec784e3e04f05d256eb2662554cc1e73b0e9d1f7074e16bd828a6dd7a46e6d991ef1b0c80063962a39cdd59ac8daa93ecccbc\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446be797ec19e179439bdc1bdeb6e944f5105ce70dd49140fb9fb94b54abb70d4e08ee94a797b7c462373c4de7ce197ff50b8af8e398f1faddfa727b6e3f6828f9edd5020d9d9d9b004791511ae05da29d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843312c0cd4dd50232082552da3a722b861fba742c09260ea94fa03ff3edfe7f9904159ec287d967a162fddea369045850b3494dfd37582d6a8dc6327d03c94b62b79c6ffd62ba4bf72eee68768d81ba0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f3c7db8c2b63c5efb0586b4eebc465f368f01edb58440f2a43a5d9b2b20cd86a555a1c34fef23119c45c5da1dd04fc3ab6dc71de8d79ac8cdda56a82b77e2d52bb1c3974852978be79ce73\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"97c8e2c368c37824e7f89989eaf24e268e9034dc7348491d910f72\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"63c9160362496951a48ac982403f111ee4992c891caa23e67816a05220a0524730\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"118fb2cce7811ea82aeffcb8e5e84fcf6ec4f74e67284dea6098270127db0b4c3781a5105a\"\n}\n],\n\"handshake_hash\": \"7916e65e10ad089fc982bd18da1dff1d0a1ddbe2989f25673b5bb71047d1c02b\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944efeaec745bf5131a15ecab70e86a0df181d5af2b83120536f05e51b7b78c1a0af457499b86444f74843d34b85263f8d73c61ad08d2b0a28a73e01dbedf0c1f17dd828290d94cb771307a5fece490ea36\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884312d0b484f411044ad1394cff6e4ec41d51ab794e09c00f34696be320c99004b94efb8fffeaf534219c88e197f3300d24d7b04542a99a282fe367a7f4cb45d4e70b1e823173669be659e962f92ee94b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"be1a3253cd59063bae8639e669a7268135a1edc12a340e0bea71f71cd546e066d195794f3d39d55471c50e9d7e45730ea2d4da13602a7ec159740eefbf69d8f077d5cb5374a7f08cefae1e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2e3b9f4dbf720b837cf04f8aeabe2d79759117a06c6439507eae89\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9ece71cfba614d7ed0f8b5971f2eb795951b0d999a8c04739d6f6d47c5e36575ff\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ca14e4a5a55d3360dae74b855d92a83a10efd3fb1a7e2681acd191cbc6438bde4d07b73acd\"\n}\n],\n\"handshake_hash\": \"47dc0060d5e048b4a0b86b4325dd6e42fd8d0d89f7fc17b207c062d29e30a193a4048666ed7d476535a131a3cb3634c2a3dd65a9df8cda99b03ffbcd5dea310e\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446e9f5cb45df94fd09c294523f1396609114b02ffceff3e8e22d041ba9ceb7f0ca64dda1b34e418c2558216447dec77968e2c1d9ce7e4a55c2640e0ee686d6bb9652a830c5c0e687f0642fc1259874a72\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437c92f141b0219c0ceccfc5d6c8e8008bcdb867892683b91fd228b0cbdbf6bf3f9fb9181d225edd5d5cb9d094a27e56b1b3af4302308fa586b11e6aebba8df5b6497960a0ba55771c97f79f7693a898\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c4a943691d1faa5fd411b700ab3efd3942e4cd29e68a3f4e217d29c139e20ba729e667bce303079183a907af61af27f99aeb643ba3cce69c75e41e737ddaed95baf589513dcb9cd797aec3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"01de8dd4c318c846f639b7d021006499fe9a67c89aeef435cf0db6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"91a0ad48c59dffd2cefc750d142264fab4446b3b29cea6eeb7279778cd57cd194e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"441541720f14097d0425c480ab194c16b6345a3e1e6ca6044c93ba25281d4466b5131c2db5\"\n}\n],\n\"handshake_hash\": \"66f4a79d0d379e9b101b1ed04347cc04d9af15822e5202addc8abceb3fc8a8cd\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_25519_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"25519\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448529d5f8bab4207ad0f23405eb2969f34ce021dee131879447e831fbdd1b1d8586051a258a0635651b382c196c03108df5af09231ec6fb7caba715c6aa8cf2373a42807237d721c70f4f006aac3286cf\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a4cb470f1f1ae1aa28eb8be0619f65d41a2277f518150dd66571cd4afbd09d307d4192cfb73eba539cd3bcde0c2179281dd4141db7e1f468fc7417889e3e7df2fe87686b8c59426e220885189aab4e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"83aaf86f645a7d269aa0b19ce45926d7f29e5a4c1985e4fd7cb98b63f6b5dde5a7f209cf7a842151c9fc9ddfad23c6601de808f01b47620600eb134501af0405e2f0ec6b9587260729e8c6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"59f7ea1b42c66bab7cb0d36a280a323f7d45ced6e7e1f8ba2d0272\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d8ac98fe99ef702eaa52b1ace23d0bd3b076f72533830e3bafa086e53582816441\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cdad8f7ddbc42f08d775f8f6514fee1085aeddb13dd1e2d0fb4ef4378f0f3aec0aec8dc817\"\n}\n],\n\"handshake_hash\": \"770c1c216c4ef6ae235c97c2a55f7a366cbf45c32b141fdf58a5b3f872ee3aac5b47200723d9435ddaf0de2821cc1c00d0b66aef27a89aaec2717669984c0b40\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_AESGCM_BLAKE2s\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a94ce889f5b44eeecf18114cec785bec4b94814ecb1ccbb3b204634f6bd9dc1423d7198daf31e855ef2037cce4f45e83b88e15c6db6634ed1da4b188b1b317939c1b2573a95996a41d62ac09e8cd9f5dedba0dc4d7bb7d5f3716519190dabe9b777c2cff6a2bceaad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e0133c83ba4ceaa03bac7d605905c819e8b9d66ce8d51294d971bb8c92f9da2e0cf1f0466b5351de612710c979c2746bebf564dd4f48d316ecdcf359a328825ed878b48e692a1997f28394ad748a29d647d4cf278d9739aa24b1293d8516d0c3e29dfded5e143e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"85162177c6780dde0bdc9126f06f6b7087475c7d33d28baf4fab6dc1866fdfd851f89a8b8610180c87fe5f80bf8dc10a041f10acdd21ebcae2cdfc956f5db852ff0ca4d90d37a972dfce335edaf04bc8536388f8597f9dacab302e5d4d60ac4e06bd27\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1f4b2927d1db295885dd261504eec119f7c5f8ca826539076c98e6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d304aa672709c810f770d5d56b015a46c85560f9f3c993069af1f13c19b742dbaa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f002bec94d754eb5a65bf96ee58a8d8b0ae8c88610b5a79e7afe426c71543afca7f817d3b4\"\n}\n],\n\"handshake_hash\": \"82b28df5f96ef45d4fec9c97fbdd445a46cbed53353f46a1ec7c4e4e603a6cbe\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_AESGCM_BLAKE2b\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a785a44a5bcef19b5563ebfe37745d37d4ad66609cfc1e4bb35994b5bcf9325c338856996cbbd91d3a7a708285d99ddcbd0c10491da1ea4d444d63041fb3b0ad48b079d51895f5866a3c902584ad3911131c75bdc0485eea1d6d5fc4b8ac74a3e2b5e407643123ef0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654cd842b45f425181dfd18cc67b4380df00ac9770a2c63be2f1b71ccdd74cec246b5b5abab726dc8efca4bccfdd9db90df1f04608bbeaf587745e698d13c8fac0a74aca5dd656cfb24518949ada8bea4f084bd9888070602caff5d911a5054a1eec4890ff77f9bd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ff918beb8b069ee1c08b8c7fe2a61c7fac58016f2715fbf409c125f140664d037fcec60781fef9988e5d33c33b59e7f55df51a7307723d1269fa72a6c13732e7f480e7473cf00b9f7035257eda77c616c0ea8085004009e764432acf400d8669bd5688\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"459056e339e6c13056bf4682bac9ad50bd0f78fbf0f319b1cabb1a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d418359644e3b04c735d2f559319c1a9104954360bf3f772a35807a35f0003c633\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"946998b0455bde95af837e8858916b9e48a8f0c86d072f4667e814f745ba39a85c1fc627b3\"\n}\n],\n\"handshake_hash\": \"a98e309713e879c0aa169c2a3aec713e1b95995aaac4dae5b3e722e75c5b7db6f55143e5c6bba0ae3e661f372fe5341479f6f72b9812f889576d206e412605fd\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_AESGCM_SHA256\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aac5b7983c661c55f0f00ac43bcdcf4b5d747947c5fafc73e88522d77dd094064aac7984c044d947086186c0608c0e428864725fa628b5023a9d76b646a001e2ef1c7737e214a2d1ef87d487a58f0d61a0d7ec64c410fe2e0cb08b3bf1dfad39401bbe3c365b8b826\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65745f6a88128fc6164e408fba88f325e64c5c4bf8cc53867f8fbf932f6a3c21873cd64dd7d6159dd78988928ed5f8807de930f4a01671556656cb9490afe4bf6082c340b8fd0b1bba5c9552c7d854b4c9d5168a109042fd042fc317b6a8146f3af4916bba3955c3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60cf0c5297002de9d0d94fade066f7e30e70aa60ec8a1e1c6bbb0fae1be7b7ffc2ed681acee6d7c538a7807903c95677e9d2f861f71859200f755b00594ed5af83029104ad7bfa1953d260d3365c4cd1d5595e07788f27283baa7f15668fcc0a911d57\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8b7208da5767bccd25d4812c5df76c8bacf73fe21f9211fef27eba\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f5063a4860a16bb61bee8da5752b90f53763f8affcb6da36e50e7377039fafcc95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5ab6c193c4f15d1176f983ebba4364a6e5f974c515f4878ea87d8ccfc2527e66661ca55867\"\n}\n],\n\"handshake_hash\": \"3b1abea99476c99fd149704ce9d22ef1a7224c8b85f55064d687670526253fc2\"\n},\n{\n\"name\": \"NoisePSK_XXfallback_448_AESGCM_SHA512\",\n\"pattern\": \"IK\",\n\"dh\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"34d564c4be963d1b2a89fcfe83e6a72b5e3f5e3127f9f596ffc7575e418dfc1f4e827cfc10c9fed38e92ad56ddf8f08571430df2e76d5411\",\n\"init_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"30abe60dab54851c91895b57fa5535d786c2144d183ff1bcf8ce245c83a22c60109b4c08fbd15da24a3884de1c914a03cb04cde8d9fc4fb1\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"a9b45971180882a79b89a3399544a425ef8136d278efa443ed67d3ff9d36e883bc330c6295bbf6ed73ff6fd10cbed767ad05ce03ebd27c7c\",\n\"resp_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"6cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab6b0e2cc2426b853d0bc62b5d3feaf2e4593a5a06bc1d97a38a5d0196a667fad82c6442615ce72c1caa464c77de7d2be161f507b7cb3374d5bfc7edaf80f97c8bfcaad195543f84b91ede736b1608a902fd485526a55fbc31d2b3ab717aa169b6b0d93f0b475cd91\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65411644a8d37a67a65c9a3b02eca38cb7bdc2a8e03238e8e9d3db98efb6dc5509bb4a6cd2f178c401f50b39860a0de8c5d10f3d03fc0db5692059886d3630aa69a2d3575d2757a9e2726a5b311c05e894803260a87b7e8477b764cba823f6e9c0d640ea2fdaf9a0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ccf7c31f56e864a02ef8e4504eb354ca6646916bdc24f63ff32809c04a27c6873582ccdbc221c4834856f0181f129b94808cc06613ba800ca194e6279be5581d4b577d4dd3aee6c0d4881f9a775bc3b315a6f4e8b21161d46d257aa73d66bc7a7e9ba\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3c9972895df7a1048c227852753f314ea3f934caa56e78a437f647\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"88325f956ea4a61a042a4eb9292698e08e9f58f44bb94fdb3f8f21ffc9b0e592c0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dd640b5fe00d1c8bfc7eba797ab64ea62bccf60d0ae7aec721aef68a103cb342483cbac07a\"\n}\n],\n\"handshake_hash\": \"0b243a83f759685c3c882afdc540453f52284162b37dada201f2680a537090f6e4dd731a34a8efad9b5fe14c0e2eb76fb55bce8817b48e2019231e86bfdfcf3c\"\n}\n]\n}\n"
  },
  {
    "path": "tests/vector/noise-c-hybrid.txt",
    "content": "{\n\"vectors\": [\n{\n\"name\": \"Noise_NNhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d650bef23d087d228e5d860e127f1eb802aa36a9fa5e632c10e74ad6cc1161132\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ba28151597f956dc9286dad0a71da99e4d0454a3880ad6079ea3a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"787b62269b2e815fe60b8d444ba1c8c606f288ad32a051613f0700\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8f97799c1a71f8a7e07cfd7e8afd9c5b16cd6e2bf083b0f7ef4854b5b04359fa4b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bb60256dfcd1a8255db7ac777c569aff65c2d43e3dc8e0b91407852f93c852627003980bb8\"\n}\n],\n\"handshake_hash\": \"f0aa1e29265f604818d5ea3e330df1841b77c08fe91fa98dc727b4db0a38ed4e\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652060f720df620bcbc33ce20f205bc703ad131b30636aaa43c8e568c530be64\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7cd7411ac8d3972b6048bfd1c95ad3648cdf32b853433854430e05\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9a7a58916463bee1bf1fc0a68b4239a10bb757a6f6bd7f201d8835\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5766e357ef42f6081a1a8a9e042edb674375c211dcb4c33dfe7c9207626ce69004\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aa4ff8b9dc79bcf4aa2aa56f3c630da5cd7683df53a8467d252e74e7b65b83bd0909759c39\"\n}\n],\n\"handshake_hash\": \"7548af1fb7f0a1cb7208cd869768586ad6f5268b5d972eb46e4184cf58ccb79adb0f82bd2edf2bc0a99a95b9e2c22aee275ec073af7d42ce61a7cc71448c7cca\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6576701e8afaca333594aed4c73c29006eaf5640d7596e400a0dd81814646728\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4adc110f1264f58c3a0e8987bf6c8d7d94af87eeb4ba70384c5d07\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"151a26ec90160884539adc809e8aaa725f0c70c9bb1dec3187aa2f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2c203a703e0cb9e2a14479917bba5e49be36a184975dd19f844bccf06293592671\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b087f19be9a0e45ed676ba6be0262905bab6d5b6a87aebb8c8efdb584a17958a2ff782f241\"\n}\n],\n\"handshake_hash\": \"3112fcba310570a21d1c87932fbf4ac5bfe39589f59610eb5a9b3280aad3bd1b\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6585615318cf1b4a70a3c69728405dff937bc9eaa3b28fbeb12b6863e801e823\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9221b1bf4aecb47049e648de5a576ec97525149d07890a42896a2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"821dc74f5f693f91a776177343582ec9bc0912a49326d733940f9a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5ef651d882ad8fe50e546a68bcfdfef01f7bc913a2ac5ad6a3ea6f79704606a6cf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb27088ef0588db061a0869e0bdcb6a0a34c2a53249010cf95179d1b826c50069b60d4577e\"\n}\n],\n\"handshake_hash\": \"e62f1247d91ba6ed251b4049ce94ed970a7435254bccc4cd8bcabe46dc2d9983ce6eef8e1a43d19f167ce22afbe715cc81af542225cdd3bcf60e05e09bab78b3\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27eaaa3766f46af1bad4367c3287d93ab15a89fa2fba4d7488029d0ed3944a87b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9a34e8af429104e9f475c178904ce84044cdfde43f5428c7a3fcfa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b9beac58c743a2e4e3ee0bdd36d3762451343a5704ee8508c3f6c2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bfb2d80e1bdd35a414e32fd5ba527b21b2c632563817e665ab738fa38c45c7c63f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aeb9c63fdaa82c4c6cdf5cb02aa6d514875ef7829c04eddcdd4dccc0c3a98987b09d06a320\"\n}\n],\n\"handshake_hash\": \"a1125535bd13559a5c7020afab3d24d79b076936ac6d7230b12665bfcc225ea6\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ee818aea21b5ec457288cd266a0b61dfba6626bdf5cf7f9f24c8d9056185dc0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ddd3af092cd7cf556239f8afc19c007e7c1207a36bce54d46b3a9a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7016fbbea9fdd1d53af76430a21a41325d3fa9bb8d2bce4fe43ddb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"09e7a2c37fab3d048b83b5c3abb507ed073a7195f9ad16e64e3b90c16bdf5cdbae\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cda25717af9133bb52f3b1225883650fbe09cf1493d0de9e9a7dbc1072076b5e343a7d5d44\"\n}\n],\n\"handshake_hash\": \"b0ee1360ef37d81d3ad9bbf3f37264e9e4e72c5bf04826a98e424faafd34e108cd0e4fa6069a91777580edceb389ab9c1b623bd1500844f336e44a55234f92ce\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27efb076778be8eb856b3830b76ac233315521c739d417c7b5531418ca5fca347\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c7af168d8d7b4c010c288972cfcb564d00d73d89ddd94d0a60b89e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c21b4b1ceedbe41af8d688a016efcef207f5e6fbb497d6c835faf7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2a7736bf81be918a8a02b593c4ed544dfd4cd7ba1f1a206a0a72af579e47f8e3b9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3a477a06b7d45e8ef61382a1c6b0e33436809cf3ef51db27d1345dd26c720afaadcd14a2dc\"\n}\n],\n\"handshake_hash\": \"0103a098f51e44119f45d808c339a30853b13938b48aca0f799cd8e28cf37b85\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e7b6a08d314b9454719325b974f09911d2a21c926309a6835103f88e22b9b26\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1b734ac2d9a83643a9a9407b0dd79b818ba9134bb8367b7aaa7cf8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c07714ea6b691a7fdcf46b8857e3a2b1a5b65a4407213762f6d628\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7a68a1f08e331adfe706041b1cb441f648379f1f4ffdc93cf7d7dbeed2715e409c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"92daf5891628e7ddc23d17e61ddc5d0a65655068f826d2e9543619bc1630201ed9d08ec849\"\n}\n],\n\"handshake_hash\": \"535d5a18273f551d8b9e36bb055a9c8ec44b99c116123aaae34fa579f8d7d74c1989bd00234c959c7c0e97340157c9805bf55b6cdd8e899540d528652fb0c3cd\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651842d73223c99bf06b844ab85baf887fbdebb82790711cca97e6a7c8343a64\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4a3f757be94814cc43b0056580f8e2a976b572811cf08917190538\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5e98d1243071591d0b74dd21d0cee1dff5b9cbc421090889ec3417\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8635bbe31e95c4746ae6d7801c6c69bc7e84596c5f4277c6c847b5efb987314491\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"448384550d28d2cd8fb1a34d60c623b2e1494b274b9e3ff54501ab2ecd7fc33a0fa2e05b4f\"\n}\n],\n\"handshake_hash\": \"cbeff3abeb37e4f71b7ab2a82fd413f24f006015ed25897680ccf7e940a6dbce\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65548844233eb19ce9342a27dc1484de4320f6c975327af2b53aa6763b43218e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2f74c7a6049d1cd2c89af31d769f89915fa20df52bd1707d5620bc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"81e537bebf394a57c319612ccab6981d87183b66891dc06fea838b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4a5a84173f443c1adb8c7feaed943f2f9075ef2ead2a37229d46705e7c3facc16b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a569fae8a9edef148a88e4f7808e8b3c66eb5d5aaee31eac4ca989050a8fb05502354fa3dd\"\n}\n],\n\"handshake_hash\": \"70a16907f4af794738bea3d6562815b7da921711ea40e05dd63c0137c91fe62f12cb5341a2980d63db92a462903f588a52228258419e559e9b6672121ae36ee0\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6592635a9c44796b6a69a47d34530cf881d3196c56bf90fb17d0374e2c9bef67\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd2175321d3b3e633f27dd9bc970bf053c5796d329c910349da683\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fe00bf2728ad3521cb9c9d622e48be005145ae059e6528e6e71ed5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a5d80b4342cd9b391ced7641741e7b9c081aefcb540795545fb70c8a3789fe3bf9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"27123861f8b689c4d0926ef3e4af1606d2fd53a30e6f50e4fcaac82ced0dfc028ae925e7ad\"\n}\n],\n\"handshake_hash\": \"66d727c6ac4091b12fbd68ef36f727a90d427bc567d4b76a972ad0b215640659\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653bdc4345472414a141d7652d688dfbc4d7b1e2b080b70c0caf66302be2405a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a27063f2babf5a37363eab244e30a92543a2c47def4db9a7f2a25f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e0665a15f7e85275b231f9fe5f93da7aec0ca90ceb5fd6dd348a3a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0576d1341bf44819eb81bdea96010f97b899915e1e97f4a09a2952da1066b08980\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"51110f386a52ed7a09f180dec20062b995722b0533acefee2bb858452d2d83d0dff8adc422\"\n}\n],\n\"handshake_hash\": \"39085e23b2642490661fa5d80dcce6ca6a5e49b90d0df8f47d504ed4981eb4c93739076996a4f6282c8bbbbaee149e5b7a8763fb049a72cb0aec774512168bb3\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e3d7ae68fcbe2c109994ae2d182fca3dcb0118cc5a188ef1e14a73d19f8415f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57ed547f1415284d6b41e292e9d34357d1037ed28ffd86bc176395\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a268c5415e549ffe3a4b57a5e1fc03e9882fd5206d2afc8a711f85\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"aaf66ecab96ecd59683f43ea8f1098cddea2f7e966ccf99461b8cfc952b68a8f0d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec7ccfa66479c81c7cab958e12efe2c404945446d29f7cde4aeff051a6355ef13f46263201\"\n}\n],\n\"handshake_hash\": \"dc14af035d8107dd41c84c40902866e003127f48eac57f97cdc3a6e7a9f89c12\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27edc07d07ae0c078c699a41d0b424ec3421e001939ddb1d4c2952a9c3e5c01ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4ce61112ba3f776f78b1f1b6156cbd01399df2f16c85633ed44125\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e95d9f3d4bafcb017b2e65b8b27f6ab82db32d7741a15cc61aa0e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"00c33913fd2a585e802565ead4b3074a0f51fbcf4fa7d60219291c8cf5d14471ca\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bd78760b91007fa5952fc54688997e86f85422d332ed031716793a372fd627af2bf0a5ea05\"\n}\n],\n\"handshake_hash\": \"62b7f59bb1ab95859382e2c5e961b411a25e84c29eb1a43b49bab0b7fe823180ec660be6f9a6b352f218eb0c8ef3fe961118cbada1c81ad9e0af67b36c730194\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e10926460b13bdf2babd3ee50c97d07219fc1e92aacc7cf92ce1452e6d96ced\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"50c8a3cdfa5483c7bdfea4f6c80a02fd1473b8b167bcc44bfd694e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"980070b420688e9922c9a0868033a894454936229ea1e5144653b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"936a4d8e39a094a94f209a01db91e1f00a7054659b13abcf107f83682bb6ce3fc0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bfb99e816b3c11d756e8eb51bab3dd95584b73812e5710fd9686ac37664203fc76a1c49ed5\"\n}\n],\n\"handshake_hash\": \"0db9f67297dad2dcccd1e3bdb5f79bd84fc181188a8b8a8f6fc2de27a70a2348\"\n},\n{\n\"name\": \"Noise_NNhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ee2886986afb88c31fc3669ec0938b49faed748983403f3a818502f4cb3c83c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8237ba14bf998deeef855b98f9fa4a824b00976ebc3324ee0fb3c5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"283e93d1348de9c6c707528c6a2a58ae3bae256715e0226a450ec0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cf466008e561c867b542fef643ec80ad7a6ef8ffe9cff40a4298dc39fdba96952e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"61c29b91d3cd38d37e3a5a8686b1e204d5143030778915e326f7228d886941dd6740187891\"\n}\n],\n\"handshake_hash\": \"56573aca3b2c328a8707503b824382adf14e892a950523168997746b509fd4db0aad06867e7e841a3a30fbd027b25df9b148264030e030de594465d70e877451\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443e0436e97c7c430ab0cb817330685028c3ba1ea1abb8c941c3edf5d070e5bec8f9a88a15ba2157b613505233e2e400dc73d07fe5320e2508c70593ff10a204176128cf792368a60a2448c28d2ce9bc050420eb05278a9c7c7234bfb0532a5bcae4860a1d4a50c70c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437aafbc9e889112585c51b75a98b8585aff0230bb21946b0ef0e6c4822619189be8d693addaa4d694203da69ad54423b2432cd0454770f2cd1efba9a3c073437cf15323d749fda11e4cccfb5ef1c8f3de6114b328815cc0f54bc2e14fb2d2fdc1a17a7261c62d31\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0f460f163eebc032c16e0d4de37a2646a6bb599428ccddb535fef1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9bf93c2bb09f1b805790adf057f6e7d500ba2458e5226e691ec231\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5895a17cf83bdff44363692a2e85da0e9a31a79c6a401ab6cf79a4fd70478e2e4f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8c1540958a6773cd00bb25fa64abe463a33e8d58dca49dd4576a362817ef39e2498be06fb5\"\n}\n],\n\"handshake_hash\": \"5fa936b52aee698a095304627ccc69fb261f668c4eaf6836292493eead8cd6cb\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944016b76c305d24bfd58c00f6b1681c405938df314fc1021d2c29d5b8d736cbfbee6e6c751309d6cbedf52f207882bbcd410af2c5f14ae3c8437fedb3bded68d982518ac969a89d26b62a1611dd4aeecbe8522f88e488143aa7cbad47537be05d5c298386e8c99e5df\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ceea22d49fc2bf8a69fa4c06e3453b25f3d0a155aa5b37ac9135d25bb7f2533d2b7790f7c3c4ea611b3e7a1e23e7077674afa56779f8f9e26c67288ff6ad70ff91f839b23bac8d0404aa98be1201c9633d3c36d969a9794766504c56965259087f973c52284c23\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"09a2de23afd0ab1c39d0c77804f2f7aa7e2b4c5703b5e90510ed75\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8075f625f2c9b07fb89e7bd3073d6ffcca9ecee3efb1d04c949c27\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3d3bcbcc16445742544f2252f917c98b41cd96d3d6eded8e2bc02d13d7f7cd99a1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"84223a13df75aa6729693f388075d38ee32ac662712414f493ef8bf27b1247fa0f104bee49\"\n}\n],\n\"handshake_hash\": \"6cf769b4dfd88978ccfe34dedade02ade16fb06d52286403b610e48a3643e76dfa498b0bad6e3f3a1d13111a1bed1f0a31a71b189934f61e54d6ad14af9ab859\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449ae496a4c050df48e6c6cdcd6e0423f2d5ab930eb25a13ce0bd87ddda9d4493a81c7335d03a0f5d40c1b646a45bb9af579e7ea2746b1158381f158a5204eadfcc5ebafef49b38846947b631b78805ca0f1e118a9b5e3853624287683455e1e9f7746a048c0fd5141\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431f315f28f3f3036ec562e4bfb5624e4eac1a9059fe3aa33f11dd4b3821818efe36f80e27e8adec171f31e3ff41f4115b54d6a15902f9146369052b1c3d4e75b9292fd0866dc13a65a368bf833b00d51a71076c8e35f19bfeef8466ebe0979fefdd0dd0b5d0c99d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2210e1663427c03aded39a5a03565976118e8f7c920dbfe8807cde\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7f116431d5e2d0813f2a96c84b9e3c42a3e54eae60214934c48743\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6917031be94c2796fefed39d51dff5322ec7f75469eadb598c0ada3a74e6e30be5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ccb94af944f4e8d480f8029bad1a263c62c0c9d1db3212aa4f71ebc70145112b433a1e1016\"\n}\n],\n\"handshake_hash\": \"af8d938b9021ab82b7dff74a0545c2d1b0253588e9351501d2ac61188586b15b\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449bb2fa290c7a8acd4d92f7d6099fb6e7dd9c724183e8adbd395581521e725a437b0e9ca6f991d0b8981db9e95f3bdd0613d4d89706651ae4a78321a95a1222b74c77d649a9467f1466538c77c1f53ac2ba9096b402dbfab3e60dfa5004a6938b87537d0513ed42e0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430aec655294b3ff6684776dc09967ce93ce12236270cf96982ce51937d6b3511a64d5a79c4f4d480505931f61e01b7a5876b3bab8ea26001b955a1aa397d9cf65efeeadbe7547df36d517bd57a370872e6e0ab1a6d88a29fbb55b031cb9d639b83db87a6fcda7b1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"81747d487295fd451bc0809648fb137eaf990c538f190bc491de3a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e31b1984c6571d9876b9d20dd450e767abd30e27844ff0dbd8ba36\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"99a497e95d0fb0ecfb889dd9ff72ad55415d7b7781fcd5a1a4a76908ca93ff0bbf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7f11355ae20bd6f7f791f405989ded5b0580da2954dbc1e8608c047d3d7806f5a08263299c\"\n}\n],\n\"handshake_hash\": \"547ccee106578ea38183125874ac849b5abc59245f483a939c0559e4d881e2027ff9e5a6d3f7eb42973e00c6143d2b36ecd938bec19bb53c1de44154b169f183\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794472583ae9a545fe05bfc842793ff0552da07d41df7b0ee8fe22b30865e56edc1931fdac88cb70421f91fdd64fbf228c81eaa739d612a70dacf93d9eafc92ae6c71d7ff68a671837470697d3877cf2caee9148671dd60d21ed84389a9fc6d6ffd16f49dee58d5da50890f7382b5a9b7b7ef66f4ee34da7fbfc9e51e5bb00d6c33b4851b459a3e1ef6d54927150ca376f2e90805003d52b4fbbbdd908a6a3da26471cd200f9c12b2431cc2050d0b2ea3c265a1b9a4842156531ead371f4a6dca46c1fa52fd3d750600702b4909ca8c83a854b841ba217c60df0b141e8285dfb6e717bef1fd43fa59fcb13b32bd90a30163447bbac3c276e77c43d0ab21155672fdb3f03f3207bd64ba9d120325568264b78139cc4efe00a280ee7143836887e63e903465e0dc7a3eda2ca62ec573f05b5cf200e5994efba224078d36ef108ca86fb70a5079ce3d068cec00fd60e4c519273480781c79d89e547218eed6e37c16662679a895a1a950ff0126c095fd2db848acc7799454b6379361aa0c1f38da613201dc7314686709d0c6c3eca370ea8b7c37830ca7bfd79c0d6a651283e2ac9d55a579617d746e82676af7e2db49db32e8b84f60d836852737c043c505059bf3317404cc6e637ab0668d8376d1b5573a32ff782d5d280ec84862920c4ac942b42e170b6e7d807831ed2b0daa57f0eb48e1c883d796d6072910e8f6fc9fb1b1ad8b1224cd79ba7134583c349f7df1b5a97c1a00af8d9730fbcb81fb806c439a8f63e0f3aafb1af62fb11835f483317f9c6ee34be79ddb42adfd10843521e36ff93e04176446d6c42d46df7474d681a294462932368865d298ddabecf8bc57b60e94bcac89748d91757a9dda865def3fdcafcca4220f7e11dbde2d8c96efa86e5c35f054edda3d43d60684358a3753cff8e41c3974c9c139fbc5ca5051ae11e448b79a18893a0f978a128307bb587643ec784356af89e763a87b3eb555bbe97d7fec0bf3381fdd6e4f847a58945fb3e23ec136399b87eec316eefe33671fd04626a366d01a3a6484a7c53868a2a809bf898fe4149aa5f09e7136754bbc9ccdbb257a5e8864596d7411171c26c6f7ee4014a89dc9f828ba36789fff3c808b40c6d446a8c440e09c83711ec4d4e5bbd82d8512af67d420261026aa0518cce65c9970aed415684cda47b8fce9af06a1d6c2c38d56a236fccaa643d149de8c893118e3b73c2115f03684a11e741d2db2360acabca9981151add98a9e78633133a111dd2fe89653ed459c5a34cd26a0af9de5ffe9b6d59a54193fdf24ab06fa96a6aa695d9831d9009b29e228af76a55141bd7187deb2ba04f018e86cbf2b3128e7ab41293f2c7793ff39ffd1925548ad390cf9fc850c64c9cfe2d8cedb5b4471ce8e85b299960a26430ba1f1f4b136a77c5fbcf410ae261f80d4de145866917c26c3f6350aca4bfd71c741668369881b2b5bfe68c64676a9e188d6a76a17e4faf289f0a838410e0cceb0ad2c493f66d4a99103f31a9fd959db56f65267e85b4ffc5d4c28f266a0dad74af01e6792e87932e19e260ca60f51bb174f60658b17862ab5e92b4de44314175084cf17733c56b2e9b0f1ab1ab08fc0c5fa0205071d49ed831fa3314c8bd76e1375203f4792c02614069bb785950a599e57b05fcfe6123bd62803cce337ec10bf5fc37ad85e99d94d55a266f38afb95ff83490d423a235b8da05aeeac31c9f78417457febfc952739fa888856080e4842c61d20e0658f4c42a2af3276f833d39c6d7a7cf0bbad626347f254c70027abacbd6f820213f0a8ef28e9c0c4e93c13dc394c5328ac5b44d062eb37cceabdd36535c1432780f32e51b5c66bae9cfd9e2de9edbc1a69f1f149260e6c05d833cddb7d2f08aa63f41c658bff4841fbd2bc38c95518e3e7b93b619b218c3b8e1fc51fe4271cba7e7b4f481ceba17608d4b79cacf36b8d4018f1f0302b90d7f21f3bc5ca79be08d278eec1665b3b6303b49e951fceb0bd14cdd06a708a0d049f001933a3246c957a8b6eef5679411f2209cfd59b0d82c498f87e9adc70edf6be2bf0995c424e7253acd71916e358185ab88974996e82040cad3856831a094d36ae99321bfd793a59a409527e3245233c2255aedb34bcaefdcd330ba0811baeae4456da2821b2fa5ce8080b7a934851bb27ed99c10e30369705a4012e6904431b3be1773ee96c90c53b6d62652c91bd016169eeb82be312013bb91020714be84bf133f4b78ebe89e302e1d1cd055d49674dfaa3f504616a641c1054875b3a317a1f6428a1c119f020bbe91767f785a5327cc4ce80a5037ee76d2a4d5c9546017bedd96f351c5b84036cee9ee658c0051a1c46b5d4c19566bdb16cf0bf5241afc4341eb526ee3a9b3e19d9e00a668757cbf5711e094a43a2e2b9e54762779ec3e2f937057d43afe82c7a088066cfeec7571f046e9203ce2f2f4f9f29ecfdca45cfeb30b4d970f623ced83c8e38ddb3bfd0e4e3449c31d04a7f56dd430079df774e9029a465962e9403a6bc2fd61eba7851ed20e1c692e84c2c2e44e3c9dee0b708e0534c170d41acdff8c8bc460c2059f9cf73246494403a262e77aea6193056cc04c884c7bdc427e11606d0a8644609086da2f8e8ef2a0f4588e3caf94e7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ca293062ce2f8e62c261f40be0f8ea4514a550a77ca5301cf2f1cf0b2b53f2f20ac7a6379f8476780d6d7d8249d4b9d4f44f4de5a120f157e22c2e8dcfcf449e0da5772a81ebd39cf888a96b285527934b18181a1ba52416f143baf69c7619be28ca6871a69a99f1dfa8e3f0f67d529e3a81cd475fe0e9342224bde3d12e0c9b3e1f59b4896dee4e51e1d3cf2ee2b303ffee9d2c64c0327a83db9cb5853fe3b15314341500593e3459836dc7a5c6724d80e12cc2c009e8d88a504225a30b0430e626cabde42a961b080e968d67ec32078f8a30d929c68c6929d270f489ec581bba80c4a1193b72797dc757b3fb805a15b6d15b32d33eb43ac2963e82b0dbb8b8a50f502170efd9295a8329a5fd006a7720ce2e69fcb00490510133ff4a2164a803880dfd43142ffa06d8982cc93cf30673ddd6e508fe7c3eaa8da00ef6fa77f9c2c32fadfd92f6096c7082b062acc651495c88b80674a7dee7c21beb9e1322d8b762c7b2bf10c516119ce5c77547a0b942a321ab8bd62cae7ddff0c3040934043e6895f3e3686da3d84f25faba7f3cdcba0ef28a64a45f401191d14d2c363222130bb22ad9ed71f53399631433bba3ff52687506fa9af6218290cb0c1248574d05169196bd608d8ff22bd1ddfeb8196c104acb5f312b77d39b09b6a8a02b3ce65b6ac225a8b52d814fa125a00baeb39c9a930abbafb29f09b5455d884d788078efa921e4c8eaea599f0f8ffe926b847b02efee40a62bd4455ae2c392ff596f98bfe8a240d134cbb2234f8e94e2998f3406146f6a6295f4639b5295b0cf5861edbe03950fee7f88f7945532178004a1b1e65bdd36bbaece11bc48ab00ba98cd2fa5cad3a6f2074d91df27eeb2b8c8addad73cde89f220f62e44425208b11df8b674cad1a62595153fbaded8e54502b01da4008ccd79e8be92aaa12e1d0169a126d3ddbd5455399d1b6d1302abdacffe882d97d0461985b39af08b49329e22a0178044221c093e6431e3d20cbad74b862025a6c4db72731aaaacbf492142809319a4cd8a333f34115dd18150810eec7372324a757261295daca4fc01fd40f7e744ef75337dee63131607ee00ef1e84ab808f2812c3165a6eedcda18bbeaf10a36f1fba28eb0aeb8070d55a4a319b8815f564eb9190b9bae2721454427e4348358ed30876f726e3e82b67d995fd6198d1cffe39400e60f0dc7906049e5e35a59a9f52557f05bfba5e8c2f2d2a7fe05f9abcadcd810a023dc0a3c5f7f8b9493100e9431ecedcf2bf83f552678d7ef889989e13322b145e8d8bb7929a014c0f170821b68c1c900cea235b8dca47c64a8108c43a1931a44e1a97131742400fa094757bd5117afe3a28866ce036c708213d5942702b9f9723b9edede25c0a564f1d73f639ef766621237d4b0d155a916e64ffe8a663c58b080cec7a11d685944dbc09a0fc4ae82de32e807e9a221edd04ee26e4abaab704f791ea11ccbeb0b817456b0599bb53f0fdfc562a042b7b916874fea4a855a12a9c627a97a19d20df08b4c7ad435d04622ee5f844c4870dbeb8b7dd7ad87b4007e5813bcc923e631cad88897df315e65a7e6d3cb9b435422b10da439f380d46a68a343f4d4c6f31394a9ca1786226ae7eee7cb112c2c072af81c2ff75b6020b71ecd0afd0db8baeb155a452b5401b098a2181628b90d6f89795610d5322f031baedebef53988f4258483acbb30091e882e6bee9ef9aefdea11001f532207b2c9a2ea78d3ad83305056350a2ca0579e9871f12c15fe6c16b03d7ac2f5d04b7cf9c944b1acbff53f3513054abd21effe385cd45a8caa7cc58b6de4b25650881055aed22277173d5711da8dfda97f38b213470a7427e36232e336030a0212b4f503c5975ba151108333d1a1c81a1b86ea6091d8a9404b1660fd10cc931d8121f4b97b487126f71ce1c1461a28c70bf50d5f00d3462cc0fc11838a363b2020ffa2e543c742fbdf2bea2472abe42d7575b9a70051f155a81966d79d88e2c1182f9df3623a4c40ddddd45aadca027b72000c71c7de7112055c045afc9fbe43895cb93af8992f9cabb88b08d9086796941273ac5bcbf3df63ea6af8afbd4d16b36390fc30b76267fff51d72e27a333e464ed7907a90555232f4c62298c93c7f1ea97112ef24e8bc547050b264fdf23b695a71e4d3f5a6ec294b47c959028c1f88b896d7c7fce2c958ea3516cc30b1a60f4913f07833be2e401a1315fe7ffdb9b81c02f9b720a296b20679dd46f2008d21bedd748bb059576d1034c9ab2fbeb0ae335cbb38fe9da3500ece9279cbb3fe2f126f919b2a48ba33f511ebffa35bb3b3c2c5d30e73987b398fc4701af74f47ec243291851b7c02a9f835b12c2fd2c23f9533a8c214f14aa993a59142698f0ecd930d2a2bc2afcf8a97ffac538b47bfb026bd816972a2d7f9f30063c2deafb34022182b546ada5812749e5b5be7487b857fb17f216ba6a39b9012aaa2f464ead9458716b600069d2f218a2e2155553e414aa14f5046c79a82b33f7d4d289349b4c678d749e4d6621578b929f60071236036907b209aa40fd3e1f69a4b3ef1574c9717bb9d445bea948f43ad39b7d0839606756160732248d214b8119adc9e14bda3ac13e0063c7cb36f5f080109440a4a2341fb1df6a2358f3ee468ffd99fb2e2741ea2538307620169b50198bf3fa046f7f0dc24cb86e56f12696d0c4c5a3a4c951973d352800c407f337a13b12d5919bbb3db840c4ff42edbfb7f4203001b19ceeb0c9f98b4704712e0185a268aed280f0a1add404e168a393846e03c68e9d65ab9d33b3ba9fb193ff67a3e3c943afb59bb222815f9ae490117517475b2043d28ffc510b2bf7c60d4e1ea8f3a9b79edf64760ad0f153311070c826d98bdf0aaf279261be1f0910d6235e99b75bb52750c7ea972ace401fa1ee11bd21bc244f1bc70f0391bc5f87a7336b2ce22ae1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"38855e6e3f90f2f85cb0a46fbbad5932216635cdcd0a6deb63aff8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"492644ece0503c170017eb1b9dccbcdf076a05737e1c98e6aea690\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"730262cad304f1e3b48caf6b74de1d126c2fb56a9d88850e3de4efd147cd26d062\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7c317616c2a799533c0c9b0e19a7ad5642c7006417e9052046a65527e9c136d98798541a03\"\n}\n],\n\"handshake_hash\": \"b116d282a88a96b9cd83e2c6965ac2910bcec8b67332dae67c830bdb30412b8c\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d213d068427fde1dd12fe01b65cafdd04ab716f7f6f78d52ad77f01794f576a9f866a4cf132bbe34f0814ebff435781ff26511fd9dd74f53051d18361d1ba2006f2e7f224a574d5c61b59d3c5c4a8fe16d18fd756eaab9429d10e230607ce9c077486b6c009cb2141185b73c8776408ffe4e62672c964e7d709a8ea1607bbd2ddd5a1f2daec6e27f772c75a6af2510654158110782d3ac5f4d26410c18e6aad0a73e840605471ce8c03533e7e4e3b54c197faf6b3a6a629e927c1879be06b10755660424db19ce3d6a5fab683ac1a98b451f21e5a3ecd4f74de17014940de59ce2625b3f1260b6d7175df63d44bf92f8118ca81c1db51f437e6f13319b904642608e9dc829d297f73ecafd504a743bfcf741af39f3faf4ead2e54f9545236b644a590bbc73f9894637174e188d55ff84ecd675ce356144d9439450e77d65d4f87646e724235230db3bec93a407855131d195f1f1d4e5dbdf3af175c255fd03dea950535b4681c68710636e57c3a5d5521cbd0e6dc79d163ff6d3fef87a06c80e05099f83b87156d0a9af13d92b94b452e5a0c5e9d3237779e71231115b4ebf2e92565109f3bb2aff59ae1eb461602850ad344498168e9be8b23763af607423c7929068eb63f45a115f1b9039fef6c0e5f909353884e7befcd3f08ce8765d567c680572def063e6bb6bf943da96068c0fb61db2e190ba22675b098962ea0d9d99fbcbbfc901125c425e01a29746626854599e2e51da721ae8385aa6ca6fcbf5bff7e51381ad11614b50d1d95656cb51e5db971af141732e9d5cacafcd7a382d7f48ec425e26cfbb22904bd7b43ca9b81c27cd649e1d4ce3922e13d5b77391912d9b190f31761bd35b122972de4ed571cda14e0ff35452ff7e21fd0755551add5d32c5708ca20f2b1368c236201f4b793d9476aecf7c5e7b3a6be3a2068a1f0297721d24f172da6b817ea981258dd3176d6ca2bed26aeaeeab8b67c7ef7f43e61f079efce2478e5a7dd7f6ef964f5abb7312bf81145c5d472a3464221b06577c17d1f1a48efbaf184a7479c0e7d68fcd88a20d53c43305100aa32a76487ee05caf0e9c3cfa3341a8e8bf984723165e4f4b32a719cbb424095c98b7d2652f1af5117ebec98f9223928ba2bf001c6b4f6b9132b01774f0db46ead7995803e52df5669bcd41a1edbcb9a8e44a04bd004f6876d8ec5b9d716f4eca12c8f4aa3d281083ad830fb46b87f4d8d5f62def1afbca762b35698f84fbe207bf36edaf3d12c176cd985a6bf8e7a015afd67141311f7fa41ff6bb40cc83cdaf04bcaf6c362f6d4fec22deb3b3f6e89161c2cb203b506863750babc23d520ebb8c2fb2e61dddfb23a5da8e9c2357fce8feedc8a90fe943efaca760f04daa72257f0f27a439d3ede5f460092398374d415ae99e9f0a753f65d68f88632b381ecddf4edb51e1fe746a80578047b54f4644899096ed89983938c3d5c61117b65ad67fa77923259287a3ed6894d82f6118326d392f01f48a22e35bfae64eb8b292b33b57767cf38a6fec041b565b32b95c652e519749ff481045f77b6c5a58ef1415389f2cd01467352e00edbe35e817d73b0d0479ee7dfe09239eeb9b0061f70cdf682aa09fded7cc7c1b230ad7e7a8bfd2d2e7112449f855deae72b41b8e1f38de71df4f3c60ae1006b51cd736b29f6819a67d855a7f192016e3b3180b5f712e4dd33c0e63ee1ffb02fef7dee39a335e05067b99060b669dc45c486e79295d80cbf01391377a17d72483fcf374b53972ccfe84e6b2f76a01d3584a81753b9e4939534d14d617bcd42e2c7c473774cac0fe3a60b2bf31a880d8532ddb6dea74245bb811eb5234ad2591da304656b2f75b977bf1ab93a09bc3cfadb43c6f42ec41f64a821314825274a27423893ed0d7ededa2c55b67f497e277cbc0ca4792aa63ad787e4c825f30841432e9fc97c1cc1a3f9b70d58e4a6988aac900938a9e006e04483d1a6a7d474ccf32119bf359f2c50083e244e6dc4a327f107047bd94e6dfb21d54bcb14db64037bab9624357052c1bfabc729ff488e7b9f1e93a714020fed64b576ff3b12002a72a41945665e208f16ac50033aa2ec42efa3a503b725374b5e4b0f21acba7d92f3bcc6acf33acf0204af736eac9f523528b79a2f9a60626d767cc68f5b3ac70eac0810242ec3f1d3e164d955e5268c1b4d188ede44846764c55deac04273aeb58f8e71ec10ada63c9fa704f88ef985471926385a8d6a362063ede5109c1005564473bbaaa98bf9d54c3575e2e7275ff3bee50b03fcdf96754f5a42b3e62519a6135ffc4dfe4af1724f8bfa2c711d31e5847bde2830f5dc7fda39c26cac65ca28fea5b4a7bea2f4645c4b4e36c8505a798ec6c914e287ea23664bfef6d2d7d92a3adb559da5693c4a23bd2ad20026cfb7762f877c0da49281328cf49f1b37a7335ec39c31dc8d025f6f90552d886d634afc0af94ea626a74319e5b67ac358f185f7204cb2942f81544d8b4e302a8b1b52bb8e8331dbf5c00bd7015fca2b7f70dcc78706a503094cb8d4b36f9bd8b10ad33d8c827a2120b96c504968c6b0836a8877e35294d10e2ddaf1a4093643460bdf8fd272970c783076b376a7ebb6851ab70a169ca0bcdb193081d51374e7435a92e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ff29d45d0bc6d7412df88515c8b1e7d3d6466ba30045dead1a5a166daabd2fecd072505e0f6d0960d4484f8743d46407638b9680dbc3216f859303eaadd6fe122285ecdeb62a880eb878065c01aa233aa3f23316849176aa9fa8679905a8c6f62cbfdd0c6e03686a26c62466af93af4ef1f88f18c31d7530421f09d656f2128362e4ef5e8e93035318fe38a2d19dd3b036f37177cf5bdffdd9b81336f9341d484345df3f2769b801399436c4b1ffe54c971e45c5ca128c4626b0ed3771ef143c980f5e78ce6a186bb061f580f5b42e8df241deaf03a6120d234d4b0564b59487480ec451d3e7c6a2d813bac825f8d1f23e109a0df11a4ba0097ae5c528c94b7ec9a1715bc39aab6d841e3418583761193a2dde0fc9d1697f45310088c8eb6106be9492197052a25c4c858bfeb5be73de9b51e353cfb9cb14664a48a431271b646be52b4d192b8f1d7f03c8d58229fc4bc209513a9bf9483253b7a7a53d81f56b42824de0e09bf540fe005c50b6fc64d1bc085bdbc06373cc88568f19b7c2d6fc4a3d99b3ddecd31efca6788127f1c008ba54b88721413f1791a71080c226815dc7ebef971115bbb2968ad04872786ce85deeee6483d46d805012c407e7b4f75b09d536b437186427e661f7d2d636e257cfc9eb9faa177286e60da5064a8189380dd8976b1c131a3c9fad0e03120ce3f269b7c2cb323cfeca71bd5d3d2051b7768f60c24bfcd6d7f4a149cfa9e6c2268d7520fdd550f87040d2640cc69d033b9d21f61ea7d64d846d3622e0b2cdbb21373d4e4e1ea401fe05de23d2f2dfdefae268f449219112450f009385724eab686dda2b13db9073abb4e888fc40d05839a62e0caa258dd43be72784bbea16e752528c6812f82c9686fad8398079680322c0ab88176ea3f995b81f55ba9f576e27a52dac6eec09c3f5a5ea558468db5e1fd72c25f93de8ea34752c02fbb5a6282e92a87cbb771ee2c3fa65c657748f2f2a0cea7d2b078393b26ae4ab1e5ce3506290e3314e068a0c840561628897ccde2aeda2f4ab7034e666768adaf352f03593fdc87c7e36a3c788a3eae67c4b9c215e3030cc255ec770b045b2ab98871fbb246c03215c42261443a47c1291b5857d06ce5d424deccd4e309357c6306904bba478007e2038d258aa8995a22528e2239d305b246710ebd101244b422d4e378a74af562e4a661021b40c49a8b2cb63e8088e53230f8a0e5e5119e6f1a28acc9ebacf10c418e50ebaf9d81db5cd6230bf534e6986bceda04e8a15844699f542acc4f5b500fd3c4119531c10cab3f6b35e8e199cee2155e65ca6265f1bce926435f1b730c13874219228f69ef4e3abad1e706944788f9c0233b7dabd9e8e30e4df3efa341ea33239fb82b049cf74e0f1d35df9664f8b1536ef500940389650c2a8fc491dec3641f638a37ae42d5c851b0447079eba372d1ff6b68204d61f727988671027814018e4c67d70c1d35b680cf91f9ee3001d1a46517735365eef820615920ac1fa278ddb451e0948459c17a5dc2df6100aabab63557960ca2c6c1b5ff22c421da4248d64fd4383d1a476898027a09b8e381121d2c90799a94b1d412116c0c1a4897ecab0f6a28d8e7852f97b6b1ea00ce7ff962cd46f107d9f3281a377173afbf42d175a921432e36ea5102e8010969e73dce3b5c1135a4ec1efa2237dd19aca728871a177bccca07732c0f81e65f53fe4d8dd3cec0688224cf5238dbddadc82327fd8423745dca6d8e15a4c2d3f99d7730940240290d4abc33973eff5e6e5d8a629972461ab4b783db85ec7c9e94040c21451c609e6d831fd3996c21151c73c76447842138c1bb8c3a5d248c40191e61fc397351cf79a0715510a5baa61d8d785f6790611e9512d4c2e64de4bc8bd2b15d472933b362f69b1402a873cc39fd495e1ef5a82bb02612a073a62abe7d6317d5272b7a8184140b84c9a87a917fee09c06627bf382af0648d9aadd7ea050daf41c8206d5fb7cfea88a0f516cccec272a410f8edef1c33c2ecb910152b4c0c8a608f6dcf43d6322f02fc1045e767825b6e7b6b4a4d0e4b0e885c193aa861abe526aa78cddd9ebca73b18018df409aac08958e780576597aecaac48b54cd4e9de11db8c9bc09773f63f8496244c224afeb886e37a574335d9fbfdab67606ceba274fa3691c5d47f96778b9895f7c85d6ef1fb8657cf7ad045879186aabc45d717cd048631e0dc58d2cbdab05906634704743093157549cff6d462503b8367191286020babd4dd429719f07e5c21b52cc2d949629a87ac07050a81b3d61046c5faa03e57e90e4bdc4c5bb8398ca64d6d7439afe734862c66239af4a6c9903ee6ef1f766ddcfbf6b7683bc96dbc1b8a21836e3a05ff8a3f5b43d3dc1b975d36933f485a56c4d01de237768f79c0c8a435b6ea5c41428ef9771477ecdd0ed7119f67331ab2efc9b8a72d3bf15b7ef806762e0f281a5c51526dd2d9ccfdae78d65526e9c977b76e919a96bc8a5e02bb31ca432b322cfa2a87d2b7b65289e7f8a3753297bccdb7ff23f39b3360f260248e6f6949faf657a7c5a7e945ab25614d46419ce32cf21398b6bfd064b251369a403d4d6825fc06dab5268337085b1cf8a668db72bd64a668fa6534c7359eb0d450b57fae7408f2647ee3acc625354c55114799c190f23cfff6b35b0cda9a098ff096d49fb70541c3bfd9fe0584708bed0172f658228ff7baf65d0569a8d04fbf0ff3466aa71a36287a7b7bb330658205736fe258494898a8bd11d40072961c129a0adf192e47fdd9f52e648f5657587948465d4fb4643693b450a8d0dc54ed28fa466b4b065a309010eaa20b8814de8482ebacf4ae6a452d8066e305c7445c5c6b7181b0092bc3aa2b0d99fb33d500d93f077aa440c5bdb50c00dce8d2479460ed69518cf4320eb9993ee0db2489e2bb55fcc2e3809cf24e43d8d4fb64853877f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c4b97891d12dd00336b25b951aceb35c89ce4018300c19b2fa53f7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"21187fba33182be82df4090605028c7844020f394fe3b1f8780c8a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a387c874b9a3d892332ff3644eab86873353033b3f58bd2a9a70a721d389c7a8b2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"17ed9c4a68407f6a9ab06377d28d9b2753db3ce77a6b5327bea134f7754bb77763a129b5f1\"\n}\n],\n\"handshake_hash\": \"7102b26871bbe2bf92af681122ef25dbd496c640fe82cc8c0c6d453a91469e0a66e8150c7ce009d3fb5add95ca6f993cb3de27b4f054d66a7f8946ef2f44ec3e\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944eb72a847eeeb76cd4879fe33d840f14233786df53a8119841dbdb771d518d59b37e3b3d4b691aef0419376ff7e61c84804233b4cbda15d11e3bcc9760af0fc5ec6e19a81dbdf4870e6c2fec5d1e6fe6a33081c960c1d2dedcb6bf38f43a3e06c6ea2d701f3880faddba38ccbd1697bfbbd750f7869ea3e489bdfca28cafb96d423a53d4c075ee5793dae8727c937399ec8346ee70fc491a82a0ff491ceb7345dc6e1e4d7691d08af89d6341ad7c461f11df1791bbc478643e4b348436ee18e8467a4a2a713be31a03994b04434bfe66dd1c360d0ebd782ebb7dd7e7b9f5b933830143aaad65f0798010a526c35699a0c535d31155d03bf6026938f69907ed874323774cb072dff4bb10c73771f9f9ad811055b48cae784d4b1d2f7e954d523d8ebc383ed05597766a54229e9fe43312897d08d9ecadde61308dbb627ed2ac4aaccc8695637ebd93795a2e90bdf0c13bd53bb0b15b82aac90713af6f2f6fffc97c346c4da8fcf3e70ea7ea6fef1e045b02af149a6a1ca27a237ed6b9a91604a10ea6f9a110df7bb3fd34488ae0f807498206153c5f489cc1eaf1f7d3f448d8a7e51d96e933637f10e04a8432b88a64233a1664d39d9bd442e59866ae8301d8a6ca7ea7682c6bed042377ee42dfeda99d9d3019bf05e61f7f1d927fdf56953cf09ab4755f588ed33a35a76fd9190122870a0bdb91fbb819b801ffcbff1771a31a2380b8d733a63d07a95511449bbf17c4ca41234800baa55d63a94e1bd8518d8d26feec6d031ec503f5a61dafa3564059ab0b78f06347b05afc16e53777518ac818b4d4ecf7320897faabffce3fe789f631b2d3164e0b6fac2a84a430b84006db169846d2c608675d9ab8c80ea7abab1d0cb92023fb2620291caf2445953699e7513088f4c8c2bfe05199e85167fba936f33b7c88b80912d55c3a5eaad9fcf2329ed9e9159595525a38a9446661b3a5cad1293d513f3d8cd337c93e3ad3d40cd31ce2e405f1be59b706124c0ad234bcad66ec315ba4890ffbadfae1fd2c94fa8b327c359d0e05dc4f5944745910713f995ad3cc0a40c766185cf657863917f7144a0fa55296943905c575b1ff2991263513f2d93c86e9f86d855951fb1d504b56f17936d35f1e6e6767af7e9188c4b57a592c1d4c8264a0b6118582039ed393851fe5117beb1bb3790df17ddc7a4d3abf00b8da65abf1f5d148ec80e9f3a25eb0cc718c76408f4c1d24adec4ebc5eafcd7a670c5cf50bcb42214731c5a6088d327cf17e9f465ffeb1203587e3d2c8577db34df7c1097f4928b5f85616643977f6a45e8774d0e411a7cbf67736d1d3b6b3819c57b5c3c3034557452631b0be2d3a9d43beb94498482c98d0749889e672ea0b47a1c08f35659168c9944cfb202b67c92b1aaabae747f6113191a0f1f51ffa7fc12aaf0f544218f6cf8513320d645c51f38e0103831dcc97d27b4b32cc9a0b643d3acc7f618311f3739281c8e7aee23ca8ea67f7ebd97900c4124a605a66ccd1238f87336566ea7d2320574d1f6028f11120ff90c14839a1eb512bdcc1b449a8530c2919367f9635a168b1f5bcbe439e9f95e2d0179dff13f1e756aa89b6bddceb1b6a8819ae92596dc9214f75116757710ce28d7c79cfb161585019d003278d7ffa49f2de53e57cafd0f51e9f59a768033ef6429e79b466be6c8cae1cb95020890d968a541a55f2159872b0c6e134bf614e19425b349710fc0f13384c72f678cccac56e43746cc4aae64d60e2fab41683d63aad89d2fabff7d0c242b2e10c2f037c1188588ad3348934db80f04e8d2c1446541752a2993fbed2d1bfb830f19b3ac2ebfce17fec0403da36bfa7b48608892a57445febc1a21231deeecfac2bb7c0ba7410b2f35892430c20ed4eacbf8936b01958acc54ce484a71a856c771b738c74443b41268c69f48d291093bae3f172196ee9db413da892bbd1d8cea2fe8b57ac44adf870ab56d7bc132978842476f96a4a455b386273dda2fea4c03366009f64fa9bb2af0b1b11f6db62d6c453cc6bc713eaa767beccdb36b33d44026a73af6ec63e2b02f6a0285eb834ace1ee7c0ef9294e4a8350b4b696ab2c507b9b68e1fa5238eb10a9d8c8ef7e3bd12967a135f61c87af3323eacc1091a5051f0622058082bf7e5d3765e11f3d14499b46bcd946432290204a19676f2309a4592bba2700cad90c32bca7cfc47133cd065b16502a3f7bd6f94ab822804aebb24abc7e3ae08587f5676c3afaf9fd93116f0aa54be81600ed82a05ddaa10cfd6e370cd087b48c307e4f4317e5e49577478da8a78b2b5487a574d4dba2a92784c8c45b847d02d9114ef022af033fed658215752a83b9256fc19a0fc362a5ee3d5690e6b37a111faa063b1ba75a087e8a344e3deb9a8de2eedfb0b7bf944405d829390c8d74e71aafbe1fa8b960e7775bc5d70bf0803ee807dfa3b79d127fca8e710056e1ce35e8f4284cf95cb9fdd4d101fa9f0ad8e105ba46bbcbbe19a544201ea61b7f1d6bb5c937cc4b661ea2a926c122e02f70f5bae3f0ed51b1b49d873250ec0136a887f371f02ee068a9f17708df601322e1c833fa2e2eef550c43baa4306512091125736fa3d2b7c01d176c334b83877a5a81a3c87b047e6f92ade4829dea7aa\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cb23bf3536768db17b7bcaf938db6268e7e03b79e23436d5a70f872e8ab0fb8beed86d527b526a4ba9ca14922df7cd6540272dd019d3b1b6f8e994dfd0f2027b9388564afdd039f43cf2d63fd78050c50af400427c3aec27966ea975ee50b4cd3f37da040c1351dbee70fa3a40a989e596e9207992ba0f38dfeb926f6f437a52ac157163c976b33c1ced01beffd1ca6e6fd7d58e73747e6bf776321ad3b8e091256a86591152a966aa2490c3ec25d8d04f713e028bc0bb2071e36614d079a557b0b563cad4c007ef8698476cc85d5c8d22cb5ed5c92b535f3f446312395fbd4cf8d2a7bcbb2c5923415c22569b320e02f0f29dc044c67cf7a33d5d32f118bb7f855e51df0f25302279892eeaacd22b00607b105232d357327b26f8c3051a92f1da4e806254eb782b4b37a19700dc56a7c4eebba637bcb9f1cc996ecaace3dc47f064a6f986d4a5b1c8d3a540f944fa76784c661aee8917afcfbe733fb61d7029a98cf9fcd41574a3f26080b6690ec35d0ab8d721144f120a59aef79f50dab1c43fff7e3b110c63b0f6a301b676410cd0ea3000945eb7878479c06df5df95e69f6dba2850eba83080b2752b92b7b4183be574257d51f06935f841eee77946d17b2e840c747a231a953b50f32fef380c2ed069afd197c5c4c3257bc61b66591461ce000c6774dc8532c1a23bf1986f6053f5341b502d11a390e26989146ab3e4432706aea67a855f6566bba2cf75dc55334a62dc943a6736a15398a36c3f34fc1114efa965e9c5468fea7d90676a7ef7057bda2243cb4b6772a36e07a3bfa34509fc589805e61a412220eed66854041e54242a21e326e3cf3bd7b3293af1141731ab6fd492b8554a6dabb6a891ae1aa984837a54d499b349068c037b2c641e35e1e3add31ccdf05af62292c7ac736a76d55fbac54e5c2dd489cbdafec8779eec5b869751837c5f792b9cddeed136896fffb9415c05a215bc4338881391336fc725b920a5f761ad6c62d112e8cecd4a1236b5b0a711b40a8061470c641f9a63fe42fd64ddff2c5e86cfba9ac58e957c6f4fc079b68b4fb4af961a35526ad2f2b2fe7c55d2dc4fe7899df8a3be34d057ad6a29be1b0b0b87f0df58ba8547afd0809afea857393abb37620e10f802c582947549c84234e43e70a3ca860634a694be4f55a20ea68f03ca3efc31615814540bad37aae488f61b91c1c6fa196ba5e58e37a9c49fe74349575552ce5be4ff451098b134e84e2d69b6391c42d6540a426cee87b953fc28df4d11fefd686281d866dfa2019ac0b1f9eabd816faf617fe82df821e51013631b51ddddaedd7376fb5818a1df57cb22c41b3c22f81c709a0722a3d95e34fd88d658337a7e4ca2bfbd8d0edad454fd40ac7cd2916165e62222e26a53fb3f86ba6eb7ab60024608cc20c99a29e15e76bbe5f6a76a375d10ced6419c09b6866ad6284ffb58b56901c42ad9974af2fc3f77deb557e7b4da82f41e8b9a767b78f1f4921f0921633a63a1942f58c978cdcda531f81435ef197c1e13523fd455b19c1ef412b6043a6ba12192f8016e512aace42686165375dc83c13f99543b006c914d8f549dfe3de778ba08f70e1d8b55bbf2b4f9e178164564240962b8eae1496e6b2b81f627e28f0e93a3ae62265a10c46fb16422231e1d239c687ab92a4c3d2cbc6eb55f8adb6674a8f3c26ce0da83f0c26fdd564f33d64a7f7e6fa8461188a33571d09f2c69d3aec8d7b7bf87a88d3bcfd0ec6357c9ce4af9dcc04a000bb5401f5a6ca03ac3fcd061b2ee344c174f9a3c6854fa8fbaf765089f19ded550f1e271ddca612d625c6ea869666c5bb63db739a45468fd5d008cfd6a1dd00ad971c288eac7b165b9b9dd05b293ce9d36bd389abf977b0e83759e0bee2a4238194fea1d5ce826d40347b563ba02b3779e33bb821b7980281fde54b783ef86ac4bab0ccb778c099f38dcddfb931c391a84caea3b2fc2bfc8243d7b5d822590ef7c5e67565f1eb9e130ca57c065f1796817afb35f1cce4ae852ba8a7c8162511ee3c6f395349dad652eda6fab1519c1723be8ff77825060cd0c2d31fb208f9c894ebb2c2c1111e852e62d7cd39eca41aa4e500e8a6c7da9d67854f227e2aa550da21bd41d10062fcc1dbfbb5fcb5c8fe39246a871242d224f2c71d2c08d198a833259ac65d32178175afac853ed0c5be6c121e7631ff31d0f0f02f61d90b1b2963d8dc95cec029ec432ce66de3b5b1831a551e2b6b64490978dcd0947133fc25ed7186856dfa58c277dcc911b236be35465a99c0eb2d77f7d55153a9b057f0a5beecc457de65b204f6435703a3d36679a7cded93923ee7330e3f48870567394637ac2305d9b45f8cb3e299d74ff1124f89aaf123d05819e1f17d081566d3eaa2471e3ddc681e8d9281b983e5c60a6539e04ba6ca56ecf9d21e1dd68650c49ebc5457d3c1b4dd1304532d97ef0d701c24ff49d8e652bb147b1defc0548ea90e505ff459eea81a174911ce3ba6088b14e75a196aa927c36beed48bf05360daac47780a7e897dc7b8e99414c7e4e4068bf0b02171ab627f96d28dba9a7bf550c9254d0ef7dcebb7c297c40dd93d0a7287cf3358b7de0a223fc2237226fb3d9860be9f4ce13fd60d271cd42dc6cf7771f04ff6ef613d713680fa4cba59761924a1bc4706880ad8f2eb466e8cffd2ffb1b6d2df458bb83c1af6d199dbba03707f294b5a4f288eb6ff818e1de58f9ae96707bfec0db3ca7237dc8714ebe178a92c85549f1b8d6bfe86cbf6c68cf059486a319b49d77026f2108f5c709872fbddc00bdc409555a444426a36611f03d0a5cba6424a32f5956aa87e7f84a6626d8272be2e3dcad714e48bee2a5927c378ea9874a2c51a9f9cf8207c9124106d2ee3c97cec3f17c607e203f93ce9cb425571dc279e52806dbc3159639078c0463c15b9ac8548f6c93dd8a6c1c9c99b1af107628\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5dcbe8039d3666bf2bb451cbf438cf204c137943bab2a2dd0cff6d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1f9690b3e1ccac32274a834827223024433df34afb9b9fef55d29a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0b823592278e4b3405a2af8742fd958596c1fe81ec5c60766e3e02f6dccca57a6e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9c83965bef7ab12b2cefdf32e2058f5014fc3fe125acf1baf0178349d557922af3f6bfc2e4\"\n}\n],\n\"handshake_hash\": \"4036f5b87e711a7205651d4586ec7209f2d34037e818a21c6d425b2a9c1d5275\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794453ad1a7bd2f1ce3c9e9036dd7c19dcfba73bc3d0628e7968f0b7cdcd2e241c4eb49c817378aefb112d9152d312b315c51ae68a50754f04a2d8ad595354f08a978a0b4b5f9d89d18043dcd93a998f8bc0cb460f334efcfea9bd4af094cb80234a6af6955453bd38b4cbea464579e3e880fa1e94d20455bab36337054f421d33431938dde00fece4c03db79c403dcf83b73b37c557dbd1af7391dfe4a2eebb6249d1dafc24ff1d4526cf72533f39e958bbf1a2873665a62e9a2ce18786844c324689e85699f2ec9a2c6990139c61f304dc0e412d38b8d5c9ef54a64d1063c2753306534a7db13994fbe14835fa5044593d3c1ad822cfd56e2a4a711c074b73b43a888a9820c502025cdd99410654c99e629e45f0f6176c4dc9dd1e83a9299b59f63cea6d8f7a6d0a92b587a702a4e2072e05669e33495f2eec70f3682db7d725914f9aab9350cce6d7439b5689c25292907e107befc02087857395e79c483cba33667a86702fe5247bdfdff6f395d3591c2596892714c99ce9f5f3ddec689c1a84dab34d5ecfb913a3234ed1de10ed964fffc40ad14634cc2011ccb2635a9ba0a0f18c284ccd9470a04fb8cb4d613d2b2f458463debeb1f11cf9900054b2672ebce23547617110804bff8b938da2d5ca7fafef9f44b64ba294de119156ef8fae75a70b8ce70cc5e47e32ce5b39a25ab1b8514a92f7ad5f1a2b4a7611a76495c765bc6638791b6f55b4f4bbbfcbd525dd8261a6c5f746ce64fdf2a7a739e34b33a74b23b231afd3efe79d2dd1fd9277edcc4edefcfda17664fe9dd25632b23d3812c5c36e9d87330a1015156dafabb4f8617bd3d796f2191350528bce22c0daacbe9f29f41094cbe1fcb8adf91fbf498b797a902e6bc24de3b37c2d3f5460436fcc8f78fe43ee18aee32fb74543190d8d07e90737396eb753d7a506dd6af41b0cc978c37806ef3f5b68771215601d1bfd1855c244415fb211f1d359944f90c5d92b3d3caa1abc41d3fd92be0ab0a14341db9cdaaf25d334f43976b94dbd3011a9ddcfd3be19fff2f6abf886c8f80168f439b8fec0239337b38fde6f5f46bd10be33c54df97b5355cd355c0b5094c718f917322dcdf6878a22daaa04dd779ab9d988f5073dee0920e9aec441265a552a7cfc266cbb6bf8e5f592b7b0b7583cd4b6c28678fdb8874f7adbe9b78ff0cdef247f7d76cb9d3aa801d68553cd2dcd27237b954e55559c811d4836ca7ed6469dbdaeffb3f7959b7bc18469e161f7c58738f5a87d302b9a46a314cb0d233bcb57799b116d7c874ac848e488239f9a2d64d3ebf931a2e062e96bbee070a69eda99c07c4c21c854a1a16df4d10929d7ea6cbb7d143c677921eba6948231d205ffcfae7814f38b995ddb79bda77d8cde510949cc75f5f39e8be4825e77ebe2b20cc2da20e5ccb91b8e7d3cdbadabef811a29465ce52b42664e9cf1b793fdf1a9e8fefb69b1d2322a3f5d42af2df8809a2338ffd8b17c24310aee3cbc62159096310330ce5f8c5e056bc5d353462c9cd2ae35a44bb9e8532f8c9b91f2c234d974b970d0b7edc1b59cef6ced2d00e273d51aa36839226b276bb3bb429d4eb48576173a43b58081ce0ebd20f3533eb71b809b8c5a543e6e26a3aaf1026b38f53ab974b39a9e380ad9ecb57f44b918c6a9c92103993bdf4488998db15ece253151b6c6e21ee41710137814c5f08db1ebef26a59a2b23deb12b0b4a719812ac954d6663a83f68618e919806321aad14ee33a25e409a68556c1c4328e6b39da2c2fc31df5e9808e2c2c134b0f9424fb326abc14bb1ef0b504c3b8a9330fb3b696dc450188806ac4d439c2b8402c8db5a60fa076132dc4f77259d02ecc76a501058cdc0d3b1556156b3e7a4e6ee3a373b7bf41f8022dc421cd4f6198b7053857dc1d998adf7a37a5f9bf11d3ce80b8fd3fda48162ba577a4cddd4656f7cb388bf864d01293b83796ab1038beb6409e060b437268d9cc167612d8e76ba9c46b789a2200470f030850b1935403bda7dd26529c20019a8e0e437ed04ca7852eecd84b59721e6cdce6a768772af85e96276a1f0eab60f611492c38a3d8c95e48e1222df30922a7650b03f1bf440daf78b974845b2cb572e14c6014034c35dc14f39a49e8829a4c077bbe9ff22fca2cbacba50b60d19d1f84ea02e074008eec3bd503192eb5a043bb538c858804068c8874be8ea0d482d42e592e23d0db0ecf354b97aa5a75838a59e4fed54e2b4fd245db1ecaea6d256ad0c77cb8df98d7e62d332dd6855b16761678e0b1f0e73c549ab475c5326b9cbf4fb67ba60cc57b4cb173cf67db80ed390aba9a9d5d566d1b7e3d9a3752dfee08c5efae085648ec7f3fc49466419ef0ec16bede5d8066b24041b294f2a1a221fc211d63471407bcce969b929f04ea48a46ed79f826cd1acf0b8c7a19fa8d6c20a96e703a8c59412e34764eb08fc24843b20b6ee5de51a2175c478bd1a018108de6791a581df461344f76861b0f65480980352f5daf7d1e2e194e9877e76f2d83044691b2b770d00be2cab8ecedf630a5b859cd46cef4f47fb0e15c3f06923a8ec2a612cefb91371b23a4b3dbfff8bc616a96d8318b4ba44e69b2904085f18ab5711c9bb7189c32113ae9e154cb2d6f8a1a4200\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884350db9251ce34488b747f53c829a68a86304b98391f82b0b54f80790eb08676c9076ea6d52c713714391dd54e89ea7c497764776e81f3aa26886ae92cdcbe56d0894b336e672090f78fdb760e6b2e7c326afb49247f599ed36232e38bcbeefade70b5cf539460df75c73a56e0a926455c0bcf2eda03db8f3959180896d590aad5fff2a99e2d97d901c7a6cca28b14f13bdeb84856c9026f498bf2d37ff844c1007aa85f6bb9f8054b3c1e8a39a9f855fc6ed9fe9c50b8090746ca3125239c691e8032d17e1d49db003ddb108cf9ebb307c38087803e6cb266e14fef276de94179f69e7438a8db780336ff416d89150eda5ae50c19cfe34a0b359383e68546f1281171388a86053479802e6b8554c5f46065b4ba22f7a0e290b0c2090f82d319779017b29f6d37f071f5611d101417a02652b14b136dc5d5ebe0c6c0b076f7564865d0cf9e425c455a0bdf672d2bed22fb55eddf48bf06574bce8055c70fd3abab5de36875d784cda55bf1898c38a001862bf2fd371f5f74b5ace465821781a9b296038458830e514d500034c8f8af4ea2e7558001394d973661ccc54313384db09bd02abfeeb9f3c0d71340ea8eef8d6f64e587b2fa2c8fe60b876f1bc05bc0802e27863220262ba66e40589955fd15fb715305b54b439e608cf6330d5dd0df0505bbb22826543bece2c4caad0357e0aee861520df10b05f1685f0b7a3d73ad0ddbe550d546c77ab9347ae384e4aa846b4305d4400d1864977fa7871c2bb5a66da7d9104d43a81dfec340133f7d68fd87b6cadbb1e798688b1a27f827eeac842269dc70cc85fe5f3e17f4e7f36d33751f13f4a5acdc2da33e1833d2a273babc7953dc0e5104afab5abfe2da9cdc7d8117df2a13658bc3da132c74c73dfd32c0c234a9d6a00adb8eb99dda136cac6ad58391c232bf6c79e3c8e882e01e29c33ad2cb202d3acb69c1f7fce19b7804108d6ce741f39c367c4d6db329a18cabc0df216cf3a2a0e04a00b10d54c21f9f3b8e39c1230f81ae6266e9634ead5dc14b2154eda5adadc95b6646774cda48ea2d2ca7ecad9e3c3b37a2771e93bf203f4e226dbfd27a49334b1d765fd33225e3275dac908c8b99736152d23d4a7ccc2e7a65c3afe1c27b2dda609968326c8e8beeb8ffa0daaa5dfd3d1a9a288a13d46409482e39d1c8d2ac3f644935d04253340c2afe71c3458bd0709a74afe95b04554beadb13767f61d0f4e582a94360475b37db7d68fea62f052c0776f965233da713ffbcdae1cc5f04685c6727912ca20f781b303a632bf8e34944404ab67e246638c6f31217bb2ba58da99d9b411719388d31ed845a44179d58e02a7d63f66d88fedf2144bd008f14b311f8601348f4ff8cec95a54a4011f3bbeee7367d5fe4d2d91d86c30dc53ce262861c14ee723944aa15b5717c67c76e1c14ce8bcc38c64d3dcf5d89d309d99bc009f0d12220d936f209090bbf1163d40b3143e9eec2e45cbf625cb85b0c61f4065ba698ffa2545197e7497da838922edc5ffd91044e98e83cd626a41309df1d541f8da57629f8dfbfe82bcb1350713c268531dc25dbb833b220f812dbd82112bea57ea37cab8ae1ef9abb010a2f2b65ea1ab2a999489b9da60511272f0fa3683e31d4703baaa1a43db85ab85929371d4928aa94312755d2b33b3e11255830e56185a9100b1f6e8488bb5520bedba8fe21245a287eedf8a26ef51be8fbc5f91eaa435717487f691a495a28fcea08308cb984c1de9d0590e77c55ba43c2251d0a62958cd5d7e4f853e55928b8c98e703918424c7547f0a0597998b5c81bba186b343e15c18246385778cc65992419219004467995fa60ffcf206032941af93c4bfb0f9f13f149122f3278b92f1d88be875217ba7dbf15c8faa052ef8e1f841ee1c4c57d3af73cc8dcb9d76211adeb6aaedfdd6b61ec7431a98e058ad826688e775dc9422663aad6592f9b86d3dacba9bdaa532e6f27d65c0dc38e75fbe1005f2cbdd04e0ed368a69110f286585fa135251ab2403b263c377c9410cc729a9b0808c53a1ba93baeb869618a05b8101f51d5dee354429cfc6613ba36809bb4ef7891f313683a5512f8e9f9b691dab8a25c4d0593efae446874b7601c920fffed92c7b811a9efe563e1d81467459e357c72df2609eea2428c668bfc4792506cd3fd9e460057de384c67995818a13c8402b2b8464d31782b02ea03da18a9b675914979437f1799abfc5d2185aa1c1bec4529db85dd59cb89fbaa8ad05851282b3627ab220b214a761704c4e3be273fad5ac937252a00460df0f32712a9d1499094c1187d85037dd3ea41ea1a4354c2ad429e0abd9722b09a79beeeaca2221f1542250c279b7d42f647414eed0203e21b37462c1067374374308b5b43347b618cd93bef480f0513f98ce9cfc0d1780ee028e38bba083d8e9af195b6bef0d90a8daa5a24d6176fc4dbf98b746dbfa1d0efea9a7bc1ab71b97bd78aee8707e1ec6b78d3eff1814f14c9a5bdcb2f88cb2bb9ad384b85fc22dbb9467ffeaa69a93edcf424a202d27998b7ff3f1f3daf1e3f3275032f3c1beabf57aba33949afd3a71598fae0ef8b7928d623e434eaffbd3e7dc616989859eb120ba4e59bce94bfe35215da175ca78c141fd1483e7be65eb98409639cc39d186513a5f5369667497635726d2b4ffab686cf6ebd77441db53c84be833c15b2dce5fff599c2263b82f624d7427e45cb50a2afe9960d1d2dfc0cdbd6efc2432c67f2092d10f9a2af699605b25b29e4e8f3111858636dcf569f73b1ca0b13833ae4e879456f5c522bfc10047782edebfb9c230635fc780a91e8ab7838c464d8ff6ae1872ad28f1b55ffbf2826275d7d30c9e460007b3c1d950ac211123b48898265d2e7d1bded9627c5ccf760d22982447c5296a04c12e7c3c3e771ba7307e10b28ad3374ba3b40e26e0844a27602aacea49c4cffea906ccb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d3a9c91deadb635345f2c2eb05ffe5b11eb526285a621c229571e3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7220ae0722c4785ade20e4bd7d802eb53e2cfcad261d631c716d03\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e94b6fc6a942a3dc61fdbd376ab2b0f20382ea1bf470ef10e1f2757238a176e65c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"844ff1d33705ceccd07c6dbedb7cc5d8f5247b5cff2484b60d2a23b97f94b840c3e644c1b1\"\n}\n],\n\"handshake_hash\": \"00125b1563e98118877613297037aae621e5d5eba5da67f46e7627a46fb8a53c4d2f46069af2c8bfe920bcfaab099c669f7e921c2a502bd3a5106fbbbb87cfb1\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448adbdc523c72c49da903bd7ac8a43ce0c70a87998553f1f449039d7f20b7bd3da1a9c24f290cc8798d01d4bcdf96fb0f6b4acc5550212d0dcbcb1b2b17e2e74ecd4feda23ed0bcbc3767573eeaf38741a2588ea0d36bf115146dd89dac5e5cb253a329a4fe02adb3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884320750f42296f5ff241247d6bbfaba5852816a509ff4dceeedbdae0c49bdaf70d00fbf2455d7d1a4b511f9148bc53b96b75a4f74b5b1e1e49cd53618622317c639da254b4eda17f994eb88fcea3f04b51ae76c5d08fb51878542317575bb380e754313b40122aec\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"564fc109d396e15e5be6266629899dc1e16031f57be42675427f20\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"26f478af277b2928de0da95a675933f844ec2832e6f28cefe33928\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1f2b2bcf86af72d103bfa8c1e7ecc1b990ff79cd0e50e17889c24ac4aee56ee46e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"05db14f2bf646951d9da24f65a54d41cec0ae7c4a325c287f11b1bd89f01614aa16b9285fe\"\n}\n],\n\"handshake_hash\": \"472caac0a53210b6e169290ee0e92893e404244b421c880a9238914f1f94f888\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944084d82d645f926ad8063563fd10b2e1fde22b4e70de1b601f6333b24330b4d01e315d671a8549a2db360b14d9304983b170285aeb997fecb068d134607485331af93ab7bf07acd4160db8aff34e9e80eba6f7477045a2d36a883ad4b00dde587aca3adc002a45869\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432a7016315def3e8c7f9bf1313bf895531804d49343b262c7c253896fc096e6c3aeab76b642fbb7e45d289a460c2363c108293e567b2a06d93847df5502a3b8d5e63776aaf72c57db5d038997e477d4aeea7c56f0ddc2b0bf015b40c78945d1188a97ae4d043b98\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8a5b461aed62915d2956e0cdd2f9b93babdef9defc2f7bef1f20a5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a26c2fc8d406be929151f47a351c3631602cead74739ff2382d0a8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0228628feed982c6cef5f389ee7b4189ef690505d7dc5def8463db3d2a44719ee2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"efc2e23288f1229d6a8270edaa8a6b4facf0955cf0d66a3c722d5cd66ab1d7557200f49715\"\n}\n],\n\"handshake_hash\": \"b567520f24f93be8eaa37d11e45dfef9ced1fabd663bae4fbd5c113a25c0b67eed35cd70b28607c892b0efe8f4951120d1b81ec492e24391cf55f4c4183305d7\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944952b5e6d67add4d148137b5f3f9ef751d58be3126bbbf4ea9b48d0bb4919153c9482588ed23b8393a8f574ba59c8a8b6f5c7bef1ae7b50ca647465ed6bbaddcfb66207c70b32910d02e78ce6ca54c72094bb5f82f5b3079fff35bca05fe8c54ae75d314247145c44\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f2827cd6c1c78fd51bc878ceaaa1173ee8936d08e4e65ed34b1829057935a21d53d45f9271f1dbf0e87c03adc52f76ba825cf4c2109be27b665bcc27d8bad0af480c4adeaf15a3421b1ada9e99aba6d313dfd21dd7cab8ae1850da4a73490c24ec9f5bf7e8a8d0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d97521376061fd98271e8cdd7542bf51256aa5e50d6a4d89929482\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"68e8a4488909dfdfd4999141fd98b2407566f61d00a13e8f85bdc0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"37662aea3b82ecb4ab4e55582f3fb005e4093f4e3401065e76443d17907542b6b5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e3251568ef91e3509ad669aa6242e02046b4f37e9a8a6799e373f3cd86075ca09a15e18904\"\n}\n],\n\"handshake_hash\": \"1bdf79c89fa5f8bf44c69aa4b5b78ce20e20a54983a702e96cf585ef6d8c4a49\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442daadc79543879ac212167e265242d2aca6bf48963907c40d850130fe5611af4fb8a6ad5d22e6afb5bf1e7288f3bbdcff99331dc653d5f515c15a1dcb0b0526716863881b319ed91315b1828431e0f759a384e5defda55d69db34d3daacfb8a12f14792c46709f30\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884391cc2f46bb6556ca4a2d4a8732b81d50dca96ba01e146abd7bd26a2a613f6a9cc3619ce5b5e7cbeba448337ad7565f54256ddb24db8c608a0e9dd941a93d929034b6bbb8e9ea598d9e38bbeb0733760906e0f8c167c1b974e5e4ddf45c03c817e73ee8d09c1aa3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"12320743f7ad35d3481fc684639c8d90b34ee5e55a83eb7e4e0e37\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d7f5530fd38038aceb27aca854dbb01528bdfde63471377d916df2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8942939ab9f7eaab7617bd99ad0a610c5160ac0a1985925e0b0e2c75176e39001e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eda4d322e09827ff9ed59fb42bd9d132878c7aafe2d2682ee63b532917f7e894d0dae3347e\"\n}\n],\n\"handshake_hash\": \"a565c5cd2681208043dcf6849e86ee65c7c9bff6a2c53032c974c9831877e539f61556ea59cedf974e087dc781fa26c98efe8212d9c0d1004d4519e4879ddd33\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440d547857b46b554ddef728f621f58ed569d9c63aa9b1e7a829b9c94fc4084986c1d45609c29650aa467cca9c46613c472e603461ff90bb0faad397b0e3a243df916691f543a37d11bd558166798cb7f9ed70b9d0168bb2e0ea0637e4341d13416ef8a93498e90c433252e9fefe7a6eed805f901a188670664f744f6828e1b6ed50796db6d9f8460ebc02ed500287474537d9cf1ad5fdad7c2bbd38c1830758381ae69d83a3635baa347a7e861911b721acec9f4d00bd9892d3ee9a97049af16b361014b992dc94013f15d5da5e35bcc21e3b4a6153e3314d24a681d446aca627569ed4de07775bf195da94cc8cff6acc08e2865a2c384a7f013ef419380702e48df11a4127ee9c7655bf1357dce9d9081c2e8aea11a5ca80659b3a24a174cd00a08974a69ed99bddb458a5c7bf2e36aeda56416cbd26c8d34c974f29039c782c7f1f2a202438dbee03a2416a05083d826e7af8562baa27b6bccaa595ef1b7e5cf6d62ff9f450686faab24d43fa171ba9ba990192c79d409c41e6f056f1b3420e61fd4a4a9afe157a650502f7e932b81e34b8041202fb91b1739d4d65485556a57049be5775aafc0a71ae6341236c56210234623c387a99ee771ff1b78d06cf1029fc786a9edfac50c7659c1a6c87d21419eba76dab784a929c31c97e73117eb6ef2a7be5a10951326a6074e44f75835cad159b62097f0b55b2ff55f05bc6417234848bc2238a6e61f9956b7f4860acdc4818a9c416499404982844340636bb6f776388bbad0883dd0a59d5bcc630fc510e32d5416ef2d8f58a765eec00da2033fb28ae03b618c0a47b48d90aca97190d1825605f877c9d8d4d405c0ae332b020c07a6c1af29ee7d03319c0a4b6fd3e97bba4dc01b7c59bf4a97a2b461556c09150b4717a144fac06da975781b83b3e40abf02c28041abf0f2187769d9876877c9850632ca1d5e9e1cf57a11fabb84f30935e05a7e8d00973e7cedb650db9c64530b24fae495a90e20d320319a0b69b9cf0c3a2e2b2e35b1872c0014eddf163c2c045bc8588012efd6039bf854f259815e4c03fb7ac7de56c8f2e2ab961b6eaf89c72e7f5d02b9b2896ada49b85ae34617ab3f814df1def43d0657879521ee36ac95e1c55728f23d40e45f8990cc2151f2a5cdcb444b7e0b17d27eded9d03aae957f9ff750e00f7cd3c057fba807e62ec6cd5e3f0e87ce37577e942bb4a563084884e08d7f685cbec0ac0b80d86a797c5ee18ffb7742a14a26e5893d6531b8ac8456fa095888a6e2c763a8fd5ab1be8184991c91bc2f30d8161f038d90e8966d3b39822595928b66738a7ced3caa60e101757679ccd5ce3ef23d9bec72d8d8939ebf4f13c75579b54f1712530c721fc47e7996e115593970f210c570821c1f329e559726ccc0e3574da239a14ff03d8ff88ba8c60d8ba8973ca447f992dc8f03f88688fcf91230623b8b65d32ac873c3e528ca4a9c062151403f981127e5eedcb2acb9bf6c8381767dd87c5ae2cd5cd4ff45c9b74f1d98fce2f8d548600e91df98477e3a7facbfd75758730662cbfffb57e7cf3a234154879e1d64a30ec7ea6953c230b357b6964daa319b299a70dd7b211cfed8676d306cb2388addaef0633008994db59d6f21d82f79a4c91d3f4019767e1d49af07fc2e6678625f028d889747e6c92aa1ad3a4295c5ebed2078382fa1ecc98443350bd8e550a0e4c8e4dc99dcfaa9c2e2ac5c35cc935b98453449983940496b8e7100fddf8fc068cf4787580b2ecba40390021979b011c95d58baad6ee67c1b8d4a0f2f274cd807721fd9b78063be9808149a83d81f5fcf55c92abf5a80bc446cda1c89c3f167ccae0077e2af18b39bce904661ff670e1bf009c2f0ee7beb08a628a88cb474ea4a86c8ac7a66d35c440621277fc0e012c8126fbf9518fe9a059b9ce8a28c95dd857f9edc14bcbc8d9f0668ae9e0bb1eb1da82202022312351a26109241e23248a015251eabbe7ff2974e814628f32088eb803d55a8e7e13e07b1348fd92fe8080df764b6e707d7c5da1c0fe02b161e7ffbbfef7423b34f299a0db106f073c90a37bc8bdcf12a46897d583435083d67cc78053c681f1e76b8a7d615e4d8ab24688ecce80ce7080818fedce4893a7642c8e77b7e9b4c3f47a8cbc03edae189fd971686ec699474f4fe68752fdf7f5422d22fcee0e4c1d2f16b696698c50065d469d9e397e015bcaa12f2a252abe0c2ed2c4b4db9adde90213aee4c0933c4a9af4ad73c258a5f4c7296c8d7512f71a5cf7cfc946812500a524aeda36f2c59567da8f32f6243a733ab68d3f900185bbcdf71a591ffd508a0804c3a6484d8c2d6b07202bee232d6259af05e9b0b2e39feb183ce41350ed1bb8a1683652760ed2156792299497d49247f2c90f01ec36fb56d92e7b09ff93f16a1262da712d0c5daf8fd60c594ea4efdf53820a02b32506b27893ed5259216729de2538e9b65e18c70f27d84439b84bad480178339ab4d48146572dbde72d95c134082641bb94e82914fa84b6628ce230761af128e6a518e1ac3ec9d28c13bdd317ee20cda7577f2955fc8856d5f4f201e33d640ec9c8808d0119ba1e923957377f18865b4a597f8cc8fd0d873d3205bb62d0a6fd9adc8e376e72422c01f549\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438043f2245470a2f5f0df743e5cf5a55c73860fb05bc1a8b7d818c5720ce5ec2eb2a836c24d5f107f13e8034c96d2612c1d5437562698fc3ae3353b206b4e94ba72f619b0b4009c4c009faac7994fabc2ed481328d5add7b7a2ed2951e81d5f965f109fb2ed7b74f9ed7276c6f320c2ff33ea45b074418476756cbb5e96b05dfb7a4e5750b18b2ab7dafd9e084b5a4a984735f4fcaed4062961837e06ff6ccbb5ace56e5736b7d0bb0151332c1b2e79f9cdd68b3979d82418cb2ddf6ee1366970577cc28ebb3a13582c9062b601be2f909714f4fe68363b34b78824b34c8d64b2d5f4354c5d87469202f90c0a85415ac0b337d36d3b533b073343e527d1d9c04e12cccae9412cf0f5c8a76f15c7fcef08a1f18aeb80b5808239da9496eb37bf899fcbec8daf9cfb55a1941be1235885e6677bd793bb0efe6df8fd5f9210c822ac025bab0c974f86a9f334e5edbe67aeb9c900eb4e6d60d333167a6aa58e39285129b7393015ae573d1a7191232185482340c71d2f95f6726c8017b74c3a924b58eaa9746303c9e5bb894b2bd5509d366a439e3258d8b71588bad97d5078cf53148205815195d970bc931ddb29d45c04ac7a3c214e07dd1c7a6271974610247c33367e83856997628b9c28019f95e6994827449f3efdb12b4e46c1c23c8bd17a932dd0547a1a4c7fd8921dee9fe88d1205b28b8fa9b4cee0a40b9cb8fc056eca1ca2d3c9678a346935f7060f1d4395855734bb7c14349da44a7591c9946b6d184002d3bfe32e02dc071c5827b27740505cb8ff40511d16cf615ea0c00c6de4def5846c9bfe4d919d52aa9a33acfe363b9087284a6c6246ecda4398edf8983d19cd1ef389499e4f802c9c5aa5e448d39528362c1c7abbb9e8564a9c575be1cea767ecae090f6affbea8417f5a085be11945f509e4965c80390ab439807f61aa623b530fe1a98fb70e8ae632b6201a52f49274f12393ce266dc4766a8316db07a08c5606427e020536b5c2041d409eb2073d5fc2f552abe11956e5318bb0f3a55a43188c209afbb93edb9c01eda87d91ebc423e508e13a2f6da78397b46cb1fdd148878c5ec59f3625f86a4db7270324a2aef04d5939e9f3aed3cc345927128446ef8f09de57d50106a3555fadbf844d8749061873ff70c2ff0ee36be5fc2963298abac135c3b9d37ef2dc05c5bfc1bb081837ff19e50f0a6e79220cf849d9dd36fe08ae90606f9c7774355ed192284cfc95acc5da2d3c2ec4fb4fddcdbe1e4c862946dfce191b00edc41c0f0def754bbfe49355a720ff2a205c7afdea91412fa1545f5c058e16c255d1ac72cfdcd0ae02fc8d6c7bd31261f5323c451178e94c3f538085f97d63e7ac394dd865fa2300fac09139ae2311a8b58759e24bb0fbd990aa48fa2813b5f00838936540e42fa400741630b451931beb3916433b62a9d31e04618d415b5a5a6f66068ae6852b8b224fcf3bb8c2ec59d60e998518ca0e63d8d8b45ca0655c803a1987d5b5112ba11b5d93c7811eea6d116b778afedc6def7609da93c9396bf82dc74299f05421af6bad8483f5e751158b7561663ba67431f11e891d0df3d2b3fa76c97e3fdb08d49831b96aae53786dda411d322f8723693d6cfc69dfc0cbc4eebc6f934144f67e742b736d36929eabc3b087d4f0f112c405ddef28c5044a86dcb10964d8afddbe2ec9be999a1b5058a8b219d083b0a2641448174e93847a3c27d6d99aee9fc20d97d483075de67ec167fdf4bb8833ddfed00d28a4629eeca7b4b2bc67eba837565ac70273328036c80554ccd8f8679b971ef8d756fddb371a2f4b8aed2d567790a5a6df4c313f8ed82b0a6a353f371e1a0708c851f1a3471536d77b4316fabd37a3366e452ea6acc9a4c9956b19aa6df89f731a1627625646715ee81518968dc93d80b155d73ab80af13580dafa32649016ed59cc66cb25e0450b22e1c8a8cce73b0e28332bd5485d929fdcf4b0dd07c659e4b0a35b9849f73b4e0be9c7fcf8012b4eeb93f4188d7649ec13f5669a4f5a5e0a3500e33d315d87ed159176a05300233a135c5300cb0632f1906734f54cac478afff13914957ae621d63f4875c0245dc48d101973de816564a993fdbc636bec0309f3de9d9bf1fe1e1f6fdc97040494df355df8c6cc09d41f455096048b69426a454edccb0aa397cacaf28f45c293fa72faa6a92a1e9bd829cefc0fa0cfddb158cf2bc069ece0f657710cb0c08d46bb29f83f2710e42c84b7b2b5bf30a4cedabadc4e5b5421679f3877daa3cfb922a24b6ba690a1254034660dcdd95677ae238017fd09c33f457f79bbd90e2b3d334e76fa1755df34797254e235510d92c6a951b0c1ae5864716b955b9e693db87d8df708816aa697705a3c72f5d1e68d52121eabf7aa7663e517e2ce0d8e9dc79a7c000878f1b1af4eed79a6c9c732c4f59a956eefdb13b38b903a05ef0bac5f344b4de753c5fadd5841c5cf404b5d94553701ec244aeaf0a18c54af1542de61ad875ce07fe24abaa25d177d66f2876894ef3bc8cdd9736e669809f20af1f3ae9804aeff889f06a47fbc1430d56073e1d6a413cd0ab0685c271fcd86bce2264de80da7a70a79b2800acf34a4b788c536bbf798977f96e7b34a9d22eef5017ec792b3adc571a83291479278001c4bd7ebce4eedff5d40b72d4da5707b9aee982931f17bf97b47c53fe1ad060acf494e915d6b2bb219023684f42c3454e7b694b7d2a91ad02bbc5245ddccb315d77b622b20bb88cadcdc5d06f545d5e2f7758db74665743d1ee8671b80e6e1b26b882412dc795422dca3a83d78e0baa69aecc0e05b20637ea14ff0e4c34bd43bb71b5bf684c89f429c530f234166725ac0088cf637f1e622762ad3b7f94ad23d99df1fdf4ab42d6c889965a60d61813250e0528f7676b1a818dca2d143056372a1d8d5b784cc1c85404583e34268b735186c66b643f0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"672cdf7b87e4cc3bf0711be010367beb1c3ebbcaa36d91c4035268\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"545b1b9ce656b42d74b865037bc160d23d93a8174a39eeb86dfe1a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"97a39e95a5187bd1e820c46840ee936fc04f4c32e39fbe81bdd5daa6df725117f8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b7ce149ee433f34c064310ab2c1737c63d5e652a71e115db3fc4a8a1978f5fb08827012739\"\n}\n],\n\"handshake_hash\": \"523639cd82826a77d413bdbae5491ed0ccebdad918d69a9f4106f161c3e00bc8\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a6be8ec5c4b0fb95ac854a23300d371e442341df71f706c12d5c00a4401b5028adbf2e8a4116255328b73832f6279afa98e18e13e8f0179e79fd56e0824127ef7d102c48f922594c8bff546a514f13f446b1dbddca5dcc066298f14c4dfb29dee1a173a705905832371ceab46f51e203640029664834ea4909146c491a08ae07f06a73495d251e836bf9a8f8c5474ccf318388fc9a9d6d1e02cbcf0804c6467ac89c3104e8dd3b93c565ff87f7af6fbaef7533de4f7b8100fb25562a3be5993f0b6e261257965a0c293eec6c3ac9d4d42ecaee4ee409fa75da9781e5b99f741aa73b1b9a060fa2c598c58dd87eac8119c1293b6db77c89531f90c975f4dc9316f935d5ad234d7420b1ec34e25099f7b132e45f27eff4d19272a0675790c8b7b7acefa27cdeb90322287fa83d8415b1478f7ea61aa3ed1d167451dcbc6eb28dbf602ff65e170615609599ecff5054b6f507569adc5c5c2f249a42219b6c884bd3fb43767aa676fe147d67f33b2b719dbcfa56387bbd11e85942683e3843696691aed21af99a6164a8e25cb882b04402457189b7cac010dddf14460d4d665568bc0fa5e1f00e54a21bcaa60626d5e8466882883cc8fbde870fe3263a0f5c4cf450ba1fdfb79e96417cf133f5ffae52465efdbb853ddfa414aa0a9e9dd309fd3c45f65d894baa5ce9bdeb3204583ddc8a2098f879ddae08cab57db8237f7f1ea9930b808707776fe48ce5d7ab195ba60d94739e8b5209e9b3649b98b940ede4e27d13ee11456e598981d6e0d476e8844654271da32f5665aaed7b4ee6489f0159e7a445c18eeee4c3fd7b4f47e45fea8d1b6ea7c7c2a29bb3f25860f4d10a171396fcaa153dc9f4afd2008195ebd79e505f699de10aee29a9897f20fb6583d729bd71f4c57f043167bc6aa720577d46bd524990c72b7d26a297a3a35f196a7c19fb4c4090acfd19dab484a0a705e9a746a695cafb8b4366157d79d8c6466fb7dbb02b47ea131d04237ea6ba9fae64bba19b8521261f510854f5383fd47a20bc8ba5329a9bf7236fa3f97ae4993ffbaf9bf486b0043d0b5c0d37e96487a7e0cf5d625bacfa1f68206a62bcc4ac71ea6981faebd922749dbc1353c186a3d27d725d1219b5d17004f7bd89da88e19598bfa9d21f58035eeb8c2cb747f5b2e9b1e7b27ff26efe60bd99cdcee0706ee14684c64c20c1159d04f86f0d3f7b4268da76e291652bf8d91b61e0e84f2a7a5f2c804c704fcbbba9e9b047fe807221831125cec4b6d204be519bf34dd32ad8e7c7b3bf29da3cde030b62559e98454fcb7c53796998a5b37985ceffb35dcf8af064ef2530e06a3093537e497130bb909e5e18b3a0d2ba789223763b3bf0ad77bb014ee5ccc6038485409481927f98b718339c1100d56643f478b5f797ee30f182ded90ec83ed1111144277522ce93941d08576a818724cce265e944e30db447ebed5c01ae3e1a1875ee9ed1ed8da6ed5b4c72c42bff2d1aa2c94bdfcce210fc5e327e6b2a66cda18c7c650128e39aa0905975c289a01bca474f45ce333f84729453ceda33f2c845935fbba657995c480bedc77d58ce1495da39a1307f80a8ba26cdd0ad7e860f45f16ddc0859e689553f7be528acf80609dd80e16b26b273a7b63cc0fe6ba4ad4088b4271ee962b9c4b6a40adc9eaf40c9c000005eb23d6f15ab8b4cb01b0fe4df37018dc6b4caee6245358478d5eda45178b8add26a3a802a487af525c4c7736066cac2d5361c1508b0258890d59bdb5369086e2372ab0111d42865b38d532db2b01fe0be0989eabc609fc4edef7dd158296cba37ec1267c17b0d5e0c975b399d0515995771d184140e69b27a31abe3e3e878e276915117709bc43038f1fc16e84a874936a246663abf2a5f884f9b14feb7284217685fa66c1c0f1ea8f1c495abe645dd532af8d156dcfdee386c44ffa7ffe2f3c171b4023166ebd26aae030995db042d4c2dad73e6591f2b2a2d0db7b78809b6a11f829d669530f5f9d76af418b77cf15d5c532f813ac033f50aa3f5493591176597df7fd3df3a4ceb140e39148b77864ed3daa2318c1d4535b2e82604e1078810624c78bf9e3a7781506caba51810c0d001205fd3adaa01fb517de99a5345a004dba8dd3a029b00c768a4a9d58713e1c1a6312648c7ac24863e61935f2b7122d534f779b21c5bd3adb7b474c81f270ca0f696d721fe1f9d6c647662ed33b130f6123cfd446fdbc77509bc75dc71647ba8894f8e9b8b2a56c7e1ebe8b581f716d65689eae497a64c9eeed8e1ce088c271df6cdd4a44ca6a7f92cd76f5aaa7323b30f07b502bd55ee4182fa0450983258f623210f28128a76158e9e485bd74ae7ebf20380810f1becd1999bcc5d0d462613a4b4057e83ddedef7d2c2d88e4403befc60247c2326ea36109cbc8f15fa160f3c6be603cb95a4f3f173d726e2b72a4e1c1521d55cb13cd620198bb25cdd966c32ca1f3e8e58ef09f79069bd2c10333507650459cd40186ae7ee8f9cd4be8d088835ed85ade6583a30746ae16590ed8b9776433f60b879d2b27f140d3d3f420701e7dfed3d3efdd0fd2ce0c80ade5aaed29fe195c53ad614ec5e4aaecd11519f134242c04d981eefd7bda1a857f5d9f086719d4e55d3febd846\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e5f4b9584008d5244a632296a02112ffbac34817c13590a2518e1f2f7dff71de668dfdebc13b4ad31cfd87ce8bec4b82ad540bce5a16e1c7dc2f65e8acb34ba3c4931d59dc57a40fd3686b62aad64150a609c43b99af88eb45dedb0267770ba6e911142968b06393727264043cf44b8da3d60b0a8290a38fb6d47bce31a04cc5517688d580817fc7133eb9aa44179b589bb1126084fcb0143f26f0bac9882edfe981d0f6a187730726be000fbdb284d80c6a5de219faab6b546c1c6f64f51ddd9ea0058a311218ae0bed04e75a38a0f99eeb7f8fc3a5be4c9386d947d9b505175240253009b9b8f8e0e7057a3df7152f806fa420dc6935bf48ca8b69f1e4f91335495228d6bc6700c3e1b61f0c2aac5ec7b450db0f14c4300d086a93300dda99a4a44fb8be4c7d6d9aa1228aaca33ca15de14c5a94d7622a96835977012f5df15e2dbd521f75c8e789e2ad50824626f6aec1e33c8ca3beef1d0841a30c90cfeb470f6be13d36fbbfff45feca2fbffdbf994a795b6f871aa2ea7b5cfda9f6ae705046e8c6f8c5d47d732eeb20f7174a4f47f0f4e0f975b974818bc9cfc51bc8ad25a3920632cb858e255b3ff99aca2fcc84d0c9e0ef7a720702a267dc425f00dde85351c0c91603c91838b74f01bb025ef5e9e0eaf2cafb7701b0e76b59196cb5923b338d1274b06899d6e432e36674c0e25c06a2d0e503d5f15d112ab139096e85a8b794e5978af374f85d1b522fdba9246f9ba84de57b1f5f6966b28e28f8ae7eb594ac9229e73173932564ddc10c6bb3d3755ab64a02e9fc9d3485e02b6c9e04e1e36cb073f1e1fcb77e98bfc9e0916569cb2bc76e3f71269d100cbf039f1699beb6cc4bb85bd46d23f6e7deeec2b68d52d2a73c6b8db2260e84b5a7ffb5a50d5994438bc30b19483c5bd9c32c76a7af5ec82146cdc65e412e4e26beb7ad478781adfd0e3bbdb027a5e0139710a4612859663d7a950b1794b46cbd577656cacb30d9c0b9452af6bcd190fd6cac8ec8705281220d8cf0ac3c8dc314f8288627f12b1a029e970b1b8f61b9ae7c7ff73794e48044386757ca4b4c99608b0dd8e9bfb7339cd76c93a8829c7aec1af9b4311dda858212bf066c6a3e7b2a5e17efd0116b5a93870f76635fc36fa15ef9426667235a4ec74f722a66df657ac9985f14faa9f5e9cbc939652e101960908d0056778f8c4837e3feccc6892306a10c3efc3933eeaf8421b3ca2c9966d5334ce9575b116878d6f4ec79d942f0c67359bedfd298a6ffb9b2c6af3e04576ed33f12e1cf0504579f3004981c21ed03f6184d9325957e533b1b79d435d5bd48d50b248f0637412359c9638477373c63cb372b277b36415fa7c7f607853e3e444aa77ad506dafea6cfa264b8bf0520af1ad6ea107c59f6414ae0b40efd2966930d00cfbb94f396420cc6e5303e2763629059a28923a9cccd4ab4ed41bf0af496de0771adac28eac98534123a8a9f31e31aa871008ea227bcbe133f8d2719fe329b2bfbace85c01d1b75f2adce78e87cd7062e8e8cbad2d19fd7ba87a3385f01ec851b51cad2656cc4adccbf4475b0e034393e729af8c022ec23b06df8ddb97e7b05f91f41283f7d75fd0c33b33f6051f4456efef3f1e2df68b9e9633ab3dc6a9ba5720859e49354f594081c9e81e3d856cfbb5f0a0cca426bd844763fbb69bac6fd9c93aa41560ec14db2deaf6d6c1b4f6dcb73555a9d69cc4df60b3bbe55ea41a4706e7813e72e9582c04c8708c5b3fa87b8cab011be772633286dad137b00c19c05f791ded25fe3a3220b28dacf535961e6bf3692a08a3cc10a0ab81ee492f84ddb53136787819391f93ebb97a526925d74d1a23e6bc536f0ddc144c6d4bb2c3dde169dad2d7352cf4e1a2e8521b897f905cf1a1379e5919c90310ec495e9cbafeab6bfda80dab01b46e1ce970abec9721f32eca97fc91b85df2cbdd76296b7b05cc7db6cebdb2452101fe7b9517c181a2b7d7385589f627e7defe7d071dd71281f75f9bf0a65109a44cc6dc002efd876bed257452a057f79ee8798bee73932e3af031174127a01bd192d05e6399e31f6a7fdffbdd4785b10890af1fa0280c5374d17552b6f25edea1ef1974aab3a8a3f5eee77d45eceb19365edfb42b87ef49ef5096863a5dbdae1a13ae6cf3ff9318698c94d9db47b7a160e4c30de4fc8624e3aed1b3eef2f90a85c28b97ce9228df9f0d897743623807007b0cf0334e2e6d83d3faa591285b44687593e731f31aa69bf907af8456731650aea9124c5f24a846554b9da185e57f92ee67f003f57de23e3fba9497814cc2156cacec169c2bdffa99c4c85fcbe41b9fe9b32c72bd2ff3b3e72feec0a358a0fdd4ef533e1c557bd52b78de921857174e04ac6daee59a553bbcdd911340f26bc9c643d66a0516e3d14ff572c98b5bf86fee432c92d1cf4f603d6d926cd5d87873ecaa1b6ea29119bf5186e63e9f0f69a8228a71fcc01c28d9416e64aa77872885b9b93b18608a555c93b8a8e7d8d98f08b1522f2bd76611d8e63b59a09187e348a787a7570eeb73bc7174428f6fd066f9af5bc38b3f7cbb43847758a74f94fcf473ad530dff8cc66e446a17ed74f12fc09477f5432c0d11d098b081b657d0415feeab3af36ad5be800c2af5b36a7292bbcb51ed29d9eb5a17c2d8a6ddff729fbf9de09adffe02791b1397d04bf0493b4ec629d32c36e344ab93ded2c8a707b86e8236ea01ee039ff12cce22c9a678f3146a44e1b74f1971960cd45406471c1e096f519fa57f01616fc2268fb8f968286e1bea99aeaec2c8cd73c958f8ea402e1dc9219619fe6b976085d8fa19c14b76180bb2fb3456ad4e9872a13a2e3d43febbe5c0678825680055318c1b01949bf7514cd4cfd5e29812d9bb47a0ec8491670df08814bf8e73ba03dc3f0aa914fd10aef3e7f68ac002f70f86ada9383b10c143816176b5970cdd06db\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"100ad2d94a9798f737dd44b258d3e09379a7c637af75b80dcb1b7d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"af6d0bddcfe96f15835d966c897bf4eb705d65c3ed136d74ab3ede\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0d097605f9c035f9e67354e161780ae31f759dea478e76d9d4bcc59fff42cff9d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b1ab7c52e12e55bb2d62c00caf0cbdf063a32378b550af07cb1bc5d8f5cddac454421a5c66\"\n}\n],\n\"handshake_hash\": \"a1f63238887e5546969a6f959ac9e69aa6eb616f711b3c87b5844a6e6536f3b52935d0a2f8ca7ced7a8041a0a0a89dfb2e721ee769236469b9d7a7086f922f73\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441e9129af675f26b3e370fce1e6a07baf2d46e27ceaa5dac1453699bb3ebc7efd77ae9c8c930a466c3db58482fac80de86599d8890e684e459c99350a93f23b40a5da85df183a78a975ecb8665861a12a23ff64962a57758bcb825d688a53beab9cacbadd24b3627ce44f9ad0c8e4340258e9bbd0badd6a73d56a85b9a2dd201dc87fc23c70a5ef4df2ffba46a2729acf2b60b1c4ec35d70762ba7ab0bbdb1512715d309d61a8b665c80f8d360ee4b8826bbaa2b3a32c69057294d74bf1d852f8923fae1d80a925200776fd2e69fefdcf34ea43facd468b504f051c3b8a3ba2568efb1e81c8e551011d6846f5cf265a22869b8d27b83b2e84ac95a37004e2a355cbf68f07f820eb405e3939f7930fbaa2f1f6c02d8afeb00330204797c84e6deda68fdb2e6bfce635664ae31a6812599471041cd11ecda9edad74a895f4f6c2d8883601b053c14a3ab0a378dd24b87c3bfcda0b8220947f451bb96dc42361ceab0aac099e78da30c24dee17be3e78a390b8962b8c4141d83f5e2d567394d13ac4a273146a90f4f51d5930e269e46ae83d40b28bcecfe9dd995c02e910550927b2f969f2bdbb7e23421d24ea4cbca2bd6e809dd0815b42ab0edb67b6c820cf2e54143ff1f1cf078eaac0f03bf1e865a4fd01e0f5e305529d35019569ad7f112153504568a85aff7a4ffc23a0b8af389267f612400126053e77ec1df81689a2420f5b908817b7ff6821a4644df30c05024d1e6ef4e392f7b9d01c12adb33617335d53304c38c873e23b9f540787be57611a7a0bebfd1dd3c6327f8401c0b5db64698a0365c0247cbdb8b9404fc04c1f54ec4375aa9f95a48b2056ad8586173e656caeae2dea0698650cd5e9d1a590ea442f0717e81c99ab3d5ca00e50859c46325754edf86ccbb91cc2ecd90d9e6e4cc7dc29387ef1f81ebd25ecf7f15824967b1b7d7e2b09c23f4c8c7fc951589c8030fff58c2353e6070888512db3576b00a4cf9e427684a0601a98d3211b5db8576752389c381bc599ec9b71991cb5dea95b4475585628db714ff550a6a4065deb4788e099242d9857b845ed2265a4414563b46a4416017a4f6f20456360c431bc832a175804e5cc49fff177c247496bf4b1a55b005119e316e8940effa78c5b30c6298884cf032da90d22a65c0663e0810d02e2f6741960e012b2bf968ff508d43930a69611baa7b2a82dc23c2fb9238d69f7ac17bc87979030a87532826e98d68463edfff8523a87adadfda620a122a47700da436f7514b852a74c5d91ac47a240f0faf9820e36c86727bf15441230f4a4d5c8c02ea6611905220d81aa38625cb6072532f4581548a51805b7643e9cc537ba768dc9e762158e5f1e7e721e2cbe08c38855adc64063ee79b334f97a570fb87355b63bf913da2d9de4fe54400bae2448225010a4f18f5e742e77b1105073308e55bba76ed27cc10bdf987ad6c71cf1e6e033b08af8d71862b4295cb016591396971e965b8a2b3d2e31e2f70c2ef1cf71d0d96da281d5b6df9e256822acb1d030bb8e5243f3abb4faf5bb4a81cdfdd9e78d97a1b6c5558a911e0a9e5e5fec006612052b50b6b55e4fe8faf584e38c5488266582d04897b8bab717ee388e5111c0ee6bd29169923f810628991e299c809403c6f358674897ec50477171c7466ef642f1ba51e08d5f1baef8ac31396aef1c07f4fb471b3567bf69c40fa1a24dcee4e90a50e4203c3e73ae7e50aaf4286bd8ad6273bcaa847c41dfd623d25e19d0107a15b052618ea4907ede8f7edadd08ee4b9b6ef095af38e8caceae84f7ebc339a8da6e58479dc62e0042d8e9e0d77b1356f90cb25ed9e9c3380e285a5615f349bd805dfaa2a084a6324b9bdd68fcc628e8fb4568897e9c8f39f80731a52002536ac2d5f2dfa18878ecfc7697d836172a86bac3e9582737b94ad4cd14234f5a26694816659950d12e959425a6cc717c7e78f697629066af0f94f7f20a624bdbf0af655b7465893fbf814aba9e516eb81a1bb5cfab9a04c9e6f92f5048deea0337b0364cd43b138801c56773cbc6e2e36b7e834d72995dd887d92ee01e618f3439b79489b1bf310b600422c2282d5c4f3b36f891cee32cb60bed96e4e7dfee803412dd5f47d7a1a7a114794cc5ab0f10a4eea1487723f301df3a121321019311f2654cd690621d61a74535e2ab276e5ba0d2083411c7e2c11665eb96e52f85d5c94c7de793568956b4a4d2ce7917b7b23fe79f81b484a62fd6954f09be4f12ad3ecc823a25b8b1534c4bc1f78c6ab7d962ec4943417993e758be4089ced31a3f25475392ae050895a26e7e5ac76f92f87f14eaccbfe9344a603a111f1ed1f58020b3f1ab1fdbeaae9bd1833c735833d40200d11a53902d3fa789837d01a2c27a2e187ab20d1bbea2efc1171697b19bdf1c7afb3a665fd683a26f0c88b14e5db756001efeffb89b3bed2983616dded66a505c66d2f7c384ba61b7e762850b4844be3ba79a55200aa5ed1fae3070bbf2b6b06c829f102b3d9a0c02a0ef0d43b792d5e3e35f0060608de3dee8a7092bb9e4e7dd61568cf2c4a987ee0029c55edf51231753532d2b07fac8cadec01ddb9859c35873fda259ddc0d0a2bdaa55b0878bd6a20ee4462b8c2b454e1435f91b8d59ee\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843895b3ce9bad40f6dbc753365bb9bcab623bb49fe3a2384903ba8d4fd54ec9a1e47491ac97befee0d66d97d91688885aaabca9e4b2063bc0643cb1db761284be55492226458cbc47780e86c2f7eb3a44ee00ad46b6d3e350beafb12fda07ea008f512a53355b6425d83109f0248b6b278de546378ca753b3670b127959c512ee65d53d83e35104102621b0c05faf4d36cce594bd9b86f5c30ac5da547496734e7888cb054113757ea6e020861cc1fc5b178a1b9f114ae6bc4e436f3c0497678bcd587fc32a710ee47871fa45514b19c64bb671dc87cbb7ef751c24dd3ef220502a6d6112820b406a1413629dd1e347b2cff7bbc435834d8442844dc98b86baf68cfe47c7a50741a5d65e665c78438c8cc877d189214c94aa9c7afe77ec989cc929494fa670235ab977db5493a2c44cf43824300153444bc89d9de7a703c777dfe06d3ebfc224f56ac5d753d1ee8812e8dbc614fa9ed56301f5d4916557544519915decb05c45fbcdc6a04a4464618c55580aea46329133fb0fd1b5df9cfd13e29fd78554cd0f6e121d12c84b22683a6d53f7587e454011ff49a5d23752eb5b3f5aaf7516aa14dcfef6e7c1aa62973f7b936e2f310444a2c2715cb7f0a65ad6e812c354e3b40c3db4c078f2648f9fa326437c559a63f9bb8b5656dfedab3b48d6f9811ecefb271433c2c26ce10f856a3fd16be9974d0552e6735aa35420a962df29b094b4dca68bc38a302b789d2fa31ea7567c721ef379d436b5cd9292a6dfb90feffa6c7306d3b8d3bc6bc46b26814a5ab7279c5c2433ab9d1246707ad69e3cd54bf2793b19a5e3d2644a027427ee5f3eb4a4b2b90f1561d3dfeec3ef9d804b43a7b48112955448af684dafee2db6f72cdd54f9bbf3217f60a758ac24fd65310e1ce6f816c313403197e6c39c7b038bc98067c0599ddbb31c614e8db0fc2d4b079ec3ed8cf31a8c79dbfb57c7492e354e24fe91ebe46ec6a0d31e772831d30382bcefed9df8bfc9cbd7fa0d27f789a355f5d9d01220154652e174ec62ab83e3d3b2f4193c75a6f8b7cded65d7f00c61fc0837f01c3485d0ce0d7aef91ec735a4646c5c0d49a06732bac5abdbe97a247b09b10a3b3d2442ab19b40a5378275ffe4476bab7ce0a891ad7c9ddaf19fc92d982ad110df25923fcabcffcafef1fcb4f55a41c5aec33e798ab1fa0d50d7cc1af1336bd401bed8c47e1cfaace8137114dcd39896456d644a131ec08737c12de64113f7149b25d15d0ce44cb1a0c5600754fd7559572a16af6024703e9ac54a8fec6739dd6fb91899ff5d48bff8c59157d1eeae22c14e8b7328ae1aa588bee8cd35506db7be4d09a742386e51a0e52cd99166b33ed45e2512a28d67fb7211d01c2941180b3d598e7b3cfae32429f0ffb5a3bdb98f3f9800e62fd4b006d832709ab147c95f1bd774277672343f5352a135d910f775164d5ae59b462c806d0ddfdfc13ab9ef981470b41deae17321a313f62821f0d0ee33ea93baf7cf63e61a80e7e6f1920fa44866959a4af92c01b12811560762f606ff122411ee293c8d02e9696c3c0be8409e754e7cd4a657ba90058040610bdbe9acdbd02c840e8eaa4a7b61035e55c7afa6db756b4b4cf7d30f443f96dac09595d892a09079922da4a3210e8dccd22056bf764bdbc30dd8805dc94c4a65505fdf3dbc6e730c5061e6593de6ca20fb3bd7d580f4471622ccfc4fbd958c0850b0b83bd1d133131541896619164561f293a57355c90b54b1004fd8ce3a129fd029a2008ffccd98b1bb9691f78b4828c1e3a65468d121ac56d5c639161fee73aa85383eed3203d0709b9f9399e01463ca37a01b13c1af50d8474192b94b02e2e55a506d82cb81588933ad0dae1528c9bde42a4ca4b16a1fc754d82aacaf942038334679e127c95fe2b3380c0a012c208ccb0c32b29f608e90cbebfe8e2bc9ec629369be0e0646a772178195faa8a5d556ec0234660dccd3890038b53218e238bf8ae045763528f8b9ab8b7d08dd221c28522ad72d5441c966241b5f996da4ff4a0b75cbeff6e695dec3b806e9618add6a4d8f8fb691edfa9ddaf7c251a2fd606ff8608da69ea22d1fbc22857b6d82e4aa4533083367f11ca50fe27bf29148d8aa8431bd5d3557a931916268ced4e438d8e301155a49c3b7be475c26644e99a2bb099c2ac670e2b4a7cf314e55ffdca5d5002429fa76547f7eaaacdc57cb7cf921da257a2aae1ddeee6671f8a5319317f37b682de7e014aa74b497128713f12bf5bded18b0e1719d3fad23cbdcda9a59d5bdb7cb9e5c964a23668457d2feeee29a75622cc8a50b19ce6c95c73dfd033f433745c21c588dbe78d14c5caee9d418f9479dae794c2f7088778da8f115773a703df1211770e03ba68abf692aa85aca33befba450d62748f1a92a090849473e4b3e7dac9a4564afc8f6d482b705e75b28e5335e01b0eca0cbe197a55af436ff32b6a9c25f25f5d10a678b767dd8f4842c2042e4e27b894f4fb0242069a0a385a952067e1e35657f0b8aab98e3cc327622e5096d9c47b3e71ca6a1f070d8154f42e5154d2f0e560aca50f915e15f6f4a3a59a8ba2d3d2c522c12674e60e35ba5cce1085437ef94484ca5097ec09f1f3a857bb39e5433ee172c32bb07ea917742da4315e9b3fb921fefd80719d66e351ae08212e7a17724be67d00c76823dd72197bc4150c5e1962c17a485269dab6130911f63a08de295ec3ce288a570a9b6a744eb9293831da3daacb6939e056c777b3ade9527e691fde599e3758f82ff52caca2c51c574a571de8b585d064f84aed694ff6bf437f7b1b9cf0f22a889dc74e078e15852fc2222264005ad96c3911223a7ec014375c978ddfc560ff9d9b1bb331b16623bc11fb70c9fb38999cae551a5b1f45502e04d87e14b357eb5f49a34e9af6622a9059fddcb53bb1d97e9c5b49e758cab2b89ca73ac2dd442da806\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5f967cba3dd442f2da977094eedfb6ddcec3b74333e735962f9029\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"50719fce795421ed6512c358c26ae25fb192fee1abd96d031bc915\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"99067d44e6a1eb38a70f5375c989fd6068da6f96f8a5f68ca2c9cd8880d17c7732\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"71ac4f6a6cdaf48f395219d0ff9cca9935a886a14497813a519b628b2113698a351e21d7de\"\n}\n],\n\"handshake_hash\": \"51195a09d3718bc882b20aef880126dc78b2c8aed1fde1e787732c238f9e2467\"\n},\n{\n\"name\": \"NoisePSK_NNhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"NNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c3fc580d208176e2e6db28935d3cf3ec0eaa2ca9a8b685e7f4a690d445d587aaf0b0560bf45878d01e7aca33481da4500ef2b8b817af14bbe8d0a5ebb8783aaf9c76ad30d2699bdfa592a2dd5c7304a1de764f04e0259cdda65939c44045e9af68a36c466a1efa4a4e40f5d6846e4f82325fac6c7fd0241ad6a3dfd675ced9b1ead9bd472e4f14084bb86c00139e07a1ced379c10bd1eb9c3a6c1e22113c7d18dfb23b2034b37ef6dd3b3967433b622c2b4726624a4911e67e7cf1257392477397356d44d50f8551e18862afc1b7d522f186b2944fae6379bd09edce0dc8665e71e7e3ec04ba98c700cfa49f2e47d638f5d34eeefb874634f8e586de9f35cf819bbb8eac25bf5688df6910cb4ff0d42a1414d1d006f17b124c439a9630167c2dd3e59260876e14aa61c7a1b03b4715e41a63564c2e60ba33554aa39fe8c91fae750cfd65acf096a8a298d2afaafa4e923edbbdf6c55c40062e0b25f4970bfa29a370b799e2aedfbfe2ff1502e04cda345e00121765b9d3b6ef72cfdfdf8191d30755284d14eb22b94da22130acb38d87f4d5b413eaeaac67da92dbe325e46ff6442a110f6ec7ab609c448082b411d1a640b9873abbb7127b852a6c30a94406e6f496e28fc80ebe7a7b9d4f9cd68e782f1603b8f9f155e0142c2dd646072745e08962eea1943abd896601197479f6c093d50451238b056dfc90749f4daebc68e8de56193bfbe208b3dfa74392178fc46b11f2206ad5cfc32a80d0ec04e922173b427e9b2a23f7c59cfd0c043741d5b444d50e22f954f1fcf352ace189a0059b25b5ad0caa144ca721f34f845e20b85d5961b1a63afe85d105b650a4f5423dcde62c5aa3b4d7cc7172014a38e373315e9f3823e8c8ba1773a8d309ba911593a7cf8fd7bdb5502bd070fd2eb459da446d9dd1aaf8d5091559b82207c758161b47d82d386af6b72b150e1515570fed8238b01dd506a60e9ecb831a7112d81ea4af005ad92c56a0610510162595618226730519bef47f5272983d0f238f6b8d1e2554f283cb89b4a9cb9f3a8e09793f2542485be695a5ce0e54a3682cfd58e4ca486f4f3df85f3ccd959d19fe20e1099dac86b16ea749f6e99d89fae15aa8d8ce184989ebe1e711287ac440c4e4963b8b944c8b30db73a7bbb5bcc0d476dcc58caa99e3617ff6710202b0e186fe3cd3072f1e7c3589251fcaf39d0a24da7cde5f0c473a5926c41042eb2bc16ea20e16a5da5dffcff6989c878ae5e689560b75c9661b731610b238b4837c27f6c279a6c77ba2fc056e68659dfae01648a5dcc88b356385c1ccc231ad61733c9f909aab76dd7e8b6b78a8577c473886fe187b84a36c56732ee535695bb59f4fe092d358e6976dddb42ca6b2f613d78a1bd06145eaf9fd686c217b33bd88eb21729afefb4bb73a4b4a3fa3fb50718c264896783363fd9ac42f5bf9e12282d9b1f395157dab16d868bc0ef68974fcfc0a20aa61b5a97c82f7321a8f94ce2dfb02acde82636eb4ff5f8307a87d38b3cb55f7e2bb75448cfcc59b139c1f2555928b99b14d9429ee19fb8db8971e66f86c3965887e6fc9bedd80edf0a5f918ba8c6a28f3cfca3a572f00f8478ca8a7b6924616b90ea073ce76cc315be9c89c9918c0bb81376126bd6ff3af249242e6061042c5d2aaaf9d6d7ac038bd2c4701a013b492ae8759149179ebc251025105ee5378700dce50188808bd9341994c14bf7888d1c30ac4709270b618add5af2db8ddcde2cebf2ea96e5e2ef73cbae548efe5c95e02ab219a7b3a1ed3e885297e94fb5217878d4bc8b8458a20f6c6529d46e51818fb09ee2aa77c62f7906ceae0ea0be8471c7003204c97af2a285ebd2a5d8f010bdce9566d82c371e6c3f7bf6a31d17d0b8a66844973bd2651131af7f27d827913d0ec565e51f1134c018e60262f83a3225ee605580f7871f514253fe82b6814f87f156c78ba65a018b538efb1e23dbd2525cb21eb3ab61d3c44f285e0d6e41a186253e9ecc10a37963d084dcc6af0ef77d94133bc8753c9ff463a205fad5e08abb87154aa3e282d3b36376be0e0a0f18e59d9443540465676b959245426aaf533f82ba38edf4d9749f48f8d82c5587869594b5557f1ba6494218ccf31ca5bdd183c82e324d2a4ad96d69f502b53e6b650caa289945904509183bddecb09e4b61d95a51759c9fed16c563a64fdd0018e3409fcd4a6c9349c0df22387bc29680bb3efb82b6af0cae5bd98b81a1c107f50cfb842c2cd1800f9336ae7d286d58cd87e993a1fe95d19bf8bf17ebae10cdd060aa948b027d078b43f7a2b4496abdb61bfd82708b13b266f83b48da0c7d6f566f9ed915a751e32395eb2f2a7dcda3b7630fb341a9b3fa92eba62a9f4f1d7e1fe2d7747d3bd1182056603a36a5951eec388db5b03686e6ab60a1a3a90ddfe43fbbbe56e1c383d78b984c1a00c4e13d653a6e64512fdb682789fcacd6760daae14e5124f19945d448f259165838f291fe760eb8528c90fc41fdc6541fd869b20c4c05244b806323ed2e1ddcfbaae69aead569c888e3f5b938568aa79cc4812a3bb433912028311f69c294b2d96bcc0700edcb8ae232a312bc67416dc9dd3c7977f9c210511bd38a78ca4554c05665b132bd7ea2e12700a19\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843da91cd199deb96455678de0e2f25631e538a2c89447f829eb1930503f811f722f3994464a6d07cbaf7426d973431e0ebb82b5ad5c261b83fc2d7b92dcc63ca904e97845dcb5ba2f8eecc6095c784ce5bace35e6c751611021152ca5d102751f426fc2ed56534674d001eb1659becb8c91e2b5ffae2fde369d84f31bdbe15bae68f4dc521ff36ece1ffb70c60fb12384760c849f5bae907e86af9d81e4899d04452ead592e60027215947bdb3314926100fc1f1582746d1a3420a0b5033766877d2f99147ee96baa32cb0d8d05f56f6c123c67eb4ca2190563c38853aa9977cf8b06accf68179cfa8371bdb149fb8dcfe143e3cc274d664922911340c670ecda29a3b0b34f3d3b037d246f199698d9748b096f7cb5db8d8826cd43a8e50485c1fb1f477fc5ecb97156e504ccb06c2e7f32856c0015673a54418a1f18aed3b6113bd77047ffe535bce9eb696bac6583071c54e0c8661a22c181afe9719d823132ff5dea41d4701fbcc0440d7eb5a4cbbd53b2912018e005fe987debc2bbe23f1b4ecee0ef2abaa8d6a37c414e7d0225435d3da1ac4d44f811e583729e549e4f1b2955bb9a7aafec54bcd6523d198c6df65abe4966a785b6c5846782c88d71e861d551a9fd426031c2c4e36b8203ff730c3f19e5799e529f1195290153388d4c43d8ad04717d5597421162411cb0a5d09225ca72eafdb7e5b74aef98be82f2fe1138404b3f832d16b60eadbf596407f758ec70510e110f5b0a621f18fe994bcd1a2e9f89b00abf45288fad383f4ffd42fff747e95eb4cebbaa2eea3fa4298e71fb7d4c4a34213e7b46aa4db63f7c05daccb712337ed682e45f696889fe3b73ebe71dd51f81a47d259a5a336d6a40c595c0d92a6f04be3c56265bad29fc4129821662445aacfc5fb0f201546c841a4da0ea048a89818f6d5b035362de8093c5e4819ab0b780aa6758967563d1472378e40fd098c163bf0f3b4927c68c953596c6d42d2a95b3baf794f3d89379d0c83f17f78b7163b700d9508210ccdb4860259c9b496e4d9cd49fc811e2663ced6bc25e294f09471f163c1652d66e501dc28be4f9bcad63e2213b9d067fbd8ad8f6ede21b37ca09b224d477ab86c0789ffac090ee9d375d88ed31dc200a8fe36983ae23e86f96b85e7212be6bd3b2d8ecffbb2ef87236cf060a26ee8f1e7a65f7e3e0b8c05703fafa52776634efd35cb4d24f91a60d14680e9524cc18bd7fed208077a58509cc962d83df102a354741605c29eab5a63345be3b5d0294772bf5975bad360815d27de14e769aa46779f88e992253e6878e117f0f176c6e252869a4245b2c8c735bfd0fdf8755260253e8eedc59e2251d0b33d5271c5190a3479eeace53ae4c6b60341e0de1f5f4d85a465005ed877be04938fc7585b82f561c58c1820466ee922724f2972fe1d7e9da044db3e02d4997763ab6bee24dd6ec033c6452954ac1ab8713170b0f47e83d65e4451abdbfef305d99641655d7e4e88bdcacb67ce497b29261ae8655066394c88e0d61535423d58d33592fdfd6f6de210db7fdd5fa1b738bd32167ae7bf39bf1cffd4f4566437c62274bc756f03b76a9f47436d460b28cf6ced02ca7dc3775a389105b8db97e9d9199a1dccd23c436a3896601aed97c55f3bfd6d3fcccae3fba4ba835327c99231e869d682c837a4a7f883e4d20b49464feefafed974297ce9929635bbe9655dc37398dd9e7d3ceb5480052adeca2855479bbaac756cc228d0ad9e14d476ae6cbd757286832381f0623f3c06dd32dc58b08ce9e3ced823521b70cdf7b4184f9c8269d2903935f0d8e6a31c30de4f7bda421c6aaa3e1ef195e7f54017994cb9e926e5a19d17c85a8ff56dad9d3dda46c2d53031efea1eaa51b856b2e3156fa62e7092e9f3f680315c34e3148563b34d4a5280c6c89f6506eee3ec582a5292b251486ec9355ef762a7d933edac146b092f490143bbc76c0aefa415830bcd31b853f45aedc4c6a82b336a88cbe581177aed169118c10628147fbb5ad9f0902287544f89f157e0cfc45f13a6e628552cb1412a56dcc6b259f60ea8f43267a229813bca98dd6b2f1aed53be1d10c573170da465793afcd7789d98f1807f8a4162c89a4f252baa9cb8e2e4bdf8f1f333c9dedb7d860c7766d2d7bf4d77c7c64d3d7076d07e7c391800587cef86564d5d2ea39fdc76feb8e8ff583597f2e37b266b3a1f2aea7e05a5b58282cfc747c9eaf9ba8c4cd8c0c8d0374914348dba10b730a0c9b374d9806466d616e2fc5a675f3a340948d2be084bc1254d14b68a55b3dd73db471e52d29e8b48f9237ac95fb195107bfe4e20c30546badccc035080f7c624f51f787cbe4fe9d7b7076a723e4b508ef064bec3e579d4e20da54cceb58db1a5d650062ca0c233095026193b1d098f5c3c46b7e929e573e4c030f9808742433a27b403b69bd312f1fae6b0e860bd5b6f1e228de859095ee5f82612f6fcc3c1dbcfdec392b79dc050952691eb2df64a02caa9d7305ea7b9b16a2bda6216a7ef95a6366d5dfff6c0a33886907a7587c4f77c6223751f1297025b1e43ae16c4bd91be9dd502828fdf5e903f4b1e5fe280090adaa221bd942f3372d55aefaae398856796bb4b7f49e33b532d1895e33cd0f08778c9df22de3f847faf6e065af768548ec053a1cf67a9c5755f1863124bc9c11e74596521c66b7a3ca891634608a453c03f4807d68721ff0c5f093a625775377e6538962f9fe720770a8e2e7643174fedb520802db7d400a45ff68a996f2b36241abc88ffb37634d27487818171f20827724127c762bcd41eddee246c9b6df895faa537919c5f284c46b04df4d20f2611fcb5d413fb80551a4fc64c6ce3cad7ee97fbc00922ba40dabf98c32a1acbd3a5623fb00eb947aae784873bff35b2f778e4b9adf2f9c8c02c9013b2b825a8efb0002af77bc2cec7168d3ff4432c28f1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c3f326f8f97dd854c70a37dc72e35679d076418404ae56392508ab\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4556f22e02fd61950a5b7dc5e6891c33d412c369105dd2f97e3313\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"83807193dc0464f0392e8a14b8c53a98d2126e1667bb2a51cbe14134c8785275c2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"060a7247b19eceac6b3d11fbc499d5345461804ba52ddae948050ee7100b6665f7fe5f8ac7\"\n}\n],\n\"handshake_hash\": \"e7d3d4287601a4be92e52d283eabd201c2d7f9ea30ac5b0334d40b2f9eb12d0a3e79c72eeff987ec9cdc0cdd0bc32aab11e8e3f0f8fa9e0c92bd061406a9309d\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3bd0f834cb3c8a788c758fea5eaf874054aa469d09bde272ebc529e0715a18c9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843801d986febe2f8a98ea5f5e6d3bc2b7a7289ca5c2360a03215fcc619bd1cd295963af8ae7cd14b25736b21199abbf7a2314d05e9bfeef8a95552f2788dd976816b1a4ed4252ab59486b84ba717611c004f7c59e62a3db8802e41c61226524e864ab16d3cab77e2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"596f7b5d3f28d0a7206837dbfc4af69d109f73b1a355d36a2c43a5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6629debd055eec26cfc2e37ec5f5ecc4ed18469891d172f192fc33\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"159c6a609afa28632e82b713e982f4705df8ece699c83930840471ea9faddd79ae\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3266b8a7eef656f9d183215b4c63d1e8f38b2ca3e721e8b1d53be182b37e44ddf2cc359ff9\"\n}\n],\n\"handshake_hash\": \"810c14f8ed3af05e4be6eb9d22f78b0e529c5b7e523b59e23d82ec4cfb6c70dc\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a10aaa50b568d03f6c0098c292d19b4a98dc19c2fc103bf38e3800367ed6f04be\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433bb35183a92c98b346eb9d8400eac76f11170ef48734c7e0b8fb858600b440397aba4baefbdacc7c87c9e2650b2d96dc2d7be19386beb8ff1c818c41b0c61a81b42a2c62fffbce52890c81bb5984ad31150bf8d3faf774e789bf5ad225798c9692a5c1856cb275\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2a6512051c705d8d917b35b772fe9d12efea84bbb7b163c73239bf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e538ff37e975b5738213b9013a50bd0dcfe20b12b2532e5c2001b1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a1455bc40805f20d26d7c7b1f0ec59f0c78526b4f3f3a89e881e12a8bec04eb16a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8f5eb7ad324507cca12ad0e5b57924755815a5af81b10cbb01564d1bfd1cf85de2d1f39de1\"\n}\n],\n\"handshake_hash\": \"5ae0db2f693eac293902feca8b581a386110164798969489b4c79e8467c753d9b86dbd505ff3d52b85340514bf5814f785f0797c0f8e577769a3527294601158\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5cbc4242570e46a7fa0a5e616046407e6b1cb2cad30e07f2244d955ccfe0c3c7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a70ee8632e3415dee220d2def531be92b9002739276d1778a1acab5bbe7f5359db4160b2ac6e67c6169d54855e5a4f94ba4e83599768e2b0b1420aa1ed1a0492d7535cbefdaaf2ac6ec7f1914857306641b12114b4dad5bfa07bc71e94919aca3efa967149ffd8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c14a696de79c57258590ac67ff0c03cc886c3e4e0652f66372da36\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4e639afe72f390c444f165928c5de311ac9c6e98b6e3a91212fc43\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"989b6518fac5b0a7630421221b919ed1a636e03ddf3a0c97e6ea03231e538a668e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ce5f23981f89365c4f9c9046ae98462a1c99208635495c8ad57e95ba914e3f746a817699a7\"\n}\n],\n\"handshake_hash\": \"73bb875c0ada1cf5b8c87383021f4b6d0ec445084cac519226400846632a7a25\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6fd41fa5c5e7572053fb46e141c912748b327ae68800632a665e62e45a25de0c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884374296078cb38e90dbe5403b9d83da0ba1908be35f2ac90eae3961618ec1ff10cc8f976187b05c6fb587a117c7366813c3896070f67c73651e497eb48c0efdbc27a4412247568e6afe5d1346e6a2fd644904215856bc9e470cf54e8d97677d879cecce09046868c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ae247a04f2bf354c413c4df42c4a4dc43d87ee76813ed8ed5e5c50\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"904e174aff6f9529b08c1dbe6a00746b33de16f398e8444be81e20\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"aea7ca5db4de7a07b760b7ca9c7536141e3dc04b52c347fd8838ebc8acce6b8376\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f3d1e3457f9c3929c8ebd9c907cba8455c0bd58c833e1a6077a42e03bb80df52fe369e3632\"\n}\n],\n\"handshake_hash\": \"70a5d38a0f35031d29d57693eea87a297181af5bdca91dfac8e5a11781e0797cc1954aa9be785992e18a511e4afb3909a388e0c08d923984c3bc794a1589d6e0\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be2bfb70cbe6f62a3e9c96bfe4ac8c56debd45eb322c14fe45f14fddecef2dafc3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431749a6072c28e8e0cc2cfd1583cbaca2e05330fd5077a0753be02975fd2466206cc46f322e5799d5c1b33564453a7028f9b30967869066bda90144a6370ebb85d84598c69f19a4bbebbb769a19571b6fa612adabfa39bee278e015dac596f33532b537f8c7ffcb23939b6de4e5edc2670808b0a29b08930a7ab2f4153c74ae700eef7a4563ada44f2b8de92f6ed2e32dfa4c76634e81fc172987a054f7f428c6fb9dd0db2e45c676c04d111b6fb32559e287ab133a145bae5c2ad62330ee943002f8d6a60e8406a292d9818555b56654380660d067a7b6e9fb1d5fca58ceeb23569d115021a5f13dd0eead89720b048925934f42c5423457def37bcb84cdeccb64e5200a6606275044098700b130ce7e2d61e25bd656ebb97ddfd160d1e7a4202b03e647b145fd4302a3bac24627d948f4b540fe153aafaa6d47b8a92719b5654abe99451a1e975e028d6e0ddad96b730dfa46ef8bfcdef75144c001fee1c3a18872b8843efa6c9ee1f434687b78f8928135db5bbf0bd220038f5edacadc382da835a43567840eada82b539e90172eef05370f8dd47c503622bbe1efcf55e670a11882874e0b378d198be1c906397e6b20be72e949849cbec15c9f65a0b6f37d8b751592cba99d03eafcf5e435fa0d09bc0e5b73f70efdb797336494545f4a79d8d9c7b439f6cc2a6c14dfd9ff228be2a106164b9a7ca4d51b0312d8846a9dcd14d9017ade6ee831f41df4f5e894ee64ea94d9b2299f02cfac7999bd176bdb9e4092ad213f28ca1dc5e5db16fe803d3654d89ce22b12f56a76471c8e6251940fb1ed6cbf1152f0db2cd0ad3e3048d0f19318dd96e9a06e7adbc32c0d74728f81aaa537c99c3256ae4b66affa90c9769ca1ef8834f15525ad431675cb48b22a13939fe814fe479ed4fa8234eb850e79b4bcd9c2ff2f78832db62a9774fb11e62ec21bc2590b7101bb67cecf75e803ad8e61adbf4861d81af14c886e739e613eb08ceb6d2b17f7012d7d743e1fc5e6b046e601a8be2ddba9e806181c805fc25634d42dd2733e54d3e0b0b20cca554c970c8a97dbfe4b08bac248a492ae266caaecbd1f13aa9a5c615fa56c5cc92108ba0e5a7ee4d19096c7e1f2eeeb9e42255e99595aec85bf511ff30de415a0b7c163f80da1846da8ee01caac39d6fb1ee6406ee59c7758ca0bfc00ce706323e23f18da3a9d68a3a6b37c36fb196094818f9008293d59a25780fc2e31795e0cdd4ce7a9a5e88a497fdf9f83ee19b1454d8b88e96f65101801adaef0634fd6c67e338cb8604e169880167e036a07507b508e371cb77ed7bc0d4d1e026c4edfb63dfe6c95b4b8c33595df890497e9a9aa71ccfd739f8033b4b319a2a9d5231aca151e672d2dd7626f51f25e0e3cae0a1121f290f572e8f27f0666c0319a4f7c0d1c67a2665fc5a437007e646661822966c86d57c6887fd6983b27a75799a33f51eec6f6051d3e9e9eecbe33f8baefe80e1d803a883dbd0537805f82ae10e6e8a37abac8c83a059de96dae5bbad383be2582d1e9a29d41b29c2bb7d015b06b33a6d796e72ab2e2080eba2d4831332286e992e210147bf6af07f9013dfcecf0e9fbe817e8f6174e16cedb5435dedf4dad5604eba680b0384e4cec0a5ab08c58f8f069664a7a4537b6001d6cf4f7f293e94dc691ff8814f690502b37743ba08a52c01196a526a2bb6ec9a1942f63b30290aa71b212113bbb571b19e43de929716ed94fe88d06bca10c3d47629903072bad76efebba4670172c1bf86ce982d1f5946f002133d6b2ec60545c0ed4a1ef99f1421694889980ac24c2d4afc520ac85e58df93a22e0a21dfb690be1873154b335fcf91d15f07e93d5305625638b0e504f612a4ec1b472a7f63e9ee8e5e9f25fb58868528ab3c06368b7b379f64b82c7d97a1f753e6a06c75a89ed1464c6e112ba41746f958974d2a840a6030f238430d08b581052f39fe6b35622670658fcc70b41f914d51e74f6f2395a75f15b4e8bdc633c74aa833fe304fa7ec0d69cfd2ff5af8e01ef8b9f4c93e4c96bdb12f46c04198f6a6cde5b02c9e233ab90aaada3fbc9505e9e0e08ceb425552adcd2faac8467ef67e812614c18fe2d3bb0bc4d4c1eb6599697c1dc1287357199f9a05e89064399e3e6e0ae27068df49b06bb62164ed11ae7ee15a2c14783347d4b8dc7e290b995df074e2cd35635ae3acf1fa6325206027dbd6ff18997c4e26b0beb3fa27357dc414614f67edd16e96e9dcc225d60c09c6f33350534859d9b0a7cffe670c5e728b556ba8fbab8bb1c866eb2b6c64a24b01435a2a0372b56aeacee6d938fab1015d6bf1ba2d9689b08f348a29279b0d713208794e65f7339c0493064ee11ac013321b4794e67839e84a38bec0382287e4f4736a3e6408742dbb0203444c69097c9ff8ff136fe6c4a72539ed91f3e5385916b39fe7336968e8740c008681aa34ff9529f7297b108e1f2e2f210c0d21179d2e9962b5f80e9ba273122f37bfdee281d7dd273382606d2caeb19f8c2bec3f1d9af421cbb21ddd083ae94f541e187c92c1a5f0031f14ca891fa04d6204cc23389ed236c2ccb319a7da35772e164c010e274b70cf4b4c70e9d39626f9855a433e9221f1ef34950f5ae5e690b19d9950968bd60d704755ca985bbc25457de002cbf9b3293baafafc29a6c2a36480b46abb4b1d682181b409b9788edb69dbb2de87427f757f983e0bf0278bd6829d29ef306216fa9e264b1164ea3701517f4fcbb5f5a1676051030238564a18e76e73b304d17240ee9a09e85419d8e1619cfcfbf62597644bd5cd7f186933e4d1356e779eec4eff7478997f6d1932372ddbe79f233a6ad50436a4878efa32002ec12be3f749e9c78f5d7774322f3f2e750c0a6a007766ac8ad13112b468c98040dbe539a273c432c527d9342f3f40c4b51a9e52bef12166629ebb1c75c02332f79fc550f16c4b9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc48e42e4dd697342d0c132495ce7d75719b9b144e017dd285e66e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ec0dba469c849ffa3e4d3cc893b8c8dac7e4f2a2b96f047a7f0aca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"55b069e241a82d8f937ef986fcdee6cdc30ad0529f94bf33c9d293b27fbd8cf8d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1d6f807a0f1009cf0cb3fc6d7eaa8d91b30150da4616471f3dd1c2e09ec5c6dcfe9fa16f09\"\n}\n],\n\"handshake_hash\": \"17d2501f51fa9aa456cfc69d0c99c22afbe0fb3afb1bf106f44fd73ae1c70fcb\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be0389991a2ad30172310d622216a89ec81bf78ca69877e4951c187e17795e9cf2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c9ef0fffea2bde0e977b3350db78b02cdcabb733fa04a71d045a235d8e082d0e2a3cc3f44ab92f17f355192dc7cf5f67a3bb1d05211c385eb349dee3768d369736500667e0bc01c18843074757384db9342b5f2cc9d0f16b0eb3d5e4dbdec99f078451d00c671f9da95c7b77cfc6bbd6a6e5fb6b05d75184f1dcb77f2421891f60e001018c8a24ec16f9e602c05955dc09955546069d79169abfa45bef90ca58fe17221aa9adfb7ab4151815c84f6f20a0e43c1fa8b758d8ae742d218922e1d1a811af306ddbc3e1aa6b5c1c2df9a8330b52141bff5133d9edac3f38ad93cc51f3f8ca3340cf7158e43c4777fbb0c2052e56d4a6c2ea5849a2ed71973055c104b8f4f75373c9d6a8f16b92df6b85f740d08a3b029d6994adc2b1165bea33d06fb80966074b9e6286ccffff0fa695030412fd3a917fabbf63b6e1dae6a2e8e11f912a4438f58246296a779a0b4dc688e27e7d9b60e298d86218304be0db3ceb603683a9d2d435c6b86e65add13cc54d421918347b93ac75250b9c3c2d644b2252a47f2bb9b98a2b881573eab92145008f43438456f308ff996c2b1d9d3e457b537f05e887ae14e5253aa7765cd9c01acfc7fa52f9055a321211cb7e8745f9c80885c2048722bda7fdfde9be82ad33f7610e5c59dc3671342aeb76b6119cdb849915564074093c5c631f75bd07fa3385dcd81f5786a84e461a8be66d0b7a3daf395b7f6a207444e599275708ca05bcf4635432b1dd3fc8204a2b6c65d5f6495a39b8e97265ccd241beb7e849abb42749fcb984deeee147263ad9b84d56faa9c8cc6848f62b608e53f37988f22c7202c5908ddf43df5715c728c01f6217803851011856bd30279498414f071f40e4f3a351df185d1454b8d60b838c1c8323021a783b8be5a9aaff1b983e65f79b6e03218227116608b2fae15c0e45349cf9023586762add850aec028f4720d3166cd7d5886ae5964c6613bd615d8f078a39ed735c170793cf019e6f1bd6b9aefd3d1831ac549cb8a6f14a8f9d51dcc59516289cbdd9ac3aea1658cc5d592040d0faa83a8fb28922a40283b80e6f01863125683a8945e0ad6e3ee52fb838b6beed8a0b9e2e701ffa38b07774beab8f27b7e0c0911f97e2dd1f969ae5664856c566561b03cb48df45b5fe51b41741436015da588188ddcd3a4f17985314c9db88fa0d75566284a82900c0b7df634d06a8504c86f057804f603fccb8bba8162b3a91a56cc23d9d0de237a80654590c48c7956fdeaf82558826b765f12e5678bb26ddbf82b2b175d229fe8ddfa815221c75abe35c7bae908df46dad98b9b3a86eba38f21efd6010c8d0fbfa5be66f450568b6d77eef683fab9050350984a5e5c2ee62b6fb2ef2815c58168a383a3a7952c2454338822aae09c7c30c291a09a70f3cfa269fb6eba6c7894e75a1eea0ced285ef3c22ad6f0bd86b943adebbab899291a834e0b3b39e05d043455d2e3d56943fc50adb2850bc0eb6fc78b59a731d54ae00ad7748aaa4663de640a991198b6b9d7c4d343c5a572bb9c572021534ef3d714518258be4f94c9c2037626913676ed8b313a1b20c80c56772c126054ea16d1bc1beb2ddd952fac0c47026dc93614d6ec70d8eaf0598baa0496eda0638a23899cf3a425a5a9cdc4d65d1a2b090871984d31ba33642c6e97e06520475f38cfcf47bd83f0f0af645789156f6adb3cac53a71058fab09c3f0d2829c5afa5fb6dc5d09f12acf59d5edcc3408740eb9b0fcbfbe7108c5313f214d454f52f5cb59223b7ab5190444fc6b6f793c8e20f97d9bc9a67a8567113744f6326b59b8d6aa8c6bb33c9d19629a7ac44430216f96deb93a93b23477b32b943f1b19e93d57cb1ae30d2c889fdd055ca49925a2bfe5209d172a4bff575301e408a45c54f8e4356a8b0cad6bff0db626b647f2c936bb4782774fb67f5a48a8ff302ed9eda02f36b421ef3d0fd86ec0949b972944b1a6467b86ee364ce8cd9301ac2fab982388a4a5c4f5a6ff391a4461ab9efe5f56cc4ee85b5ab116c5d87f2ac01f4c52e531a5d3c23a37408898c2df1e29f40a28641d03e1f406c12c5b747050e83de5c0f2647ab359fb4ff94ec779d3dd04fe9f862fbb0c9a8beebda273fb816f1975a52b9f3329891078766e251676f60ceda9c70eeda0fee7eb88f7329b1cb8ae298ef1d783d58e2910e5ac7701eaf5fe4f8e0f82e5a06c1cc7fb28d0223f0ad04e3ff91e5b3cb82bbe29d370795d5a36c9182f54fc737f13b5d4719aaece018de9280ac7680959aad4a81d5ccfbdcf03be2703805a275e9f95e3932e5ea7c134a9dfb278dd43693c2301b38cba0691b3a8d971cab630ca194205b3e9ab283f75075c369298f29aa59def70664a85c15e4f3b2b38162786b7b11123b756f65985aa4317d3f55ab2e2b75e654d852a2aefb313fca4e380390136860c1cd329e9471470664c0bcd4c52aa95ea18e623d615735cd8c2540275c7db624bda036ba5a195e7e0b362064a4a313acf5c26138bba815fe44e91b783e68b5dccaf552e57d3866d8f502263e556a47d9bd3f64338722914ab913666810552b6f6869ba055f3cd416989703a270be48f908f8d3e9733122631fbfdfefc8048932cb907170b7b9072aa6b30003aa2a15856c3ae3c54f9d2979c782b393532a8630f1a7fae2725b3d0c57085f4c2afd6ed78a8ac73edffa1a266e164329ec5c3486753180a5181b1122dc4373c6af5dc190b26580f0d1389b3b26019a48818781dbd4baabcd35b69cd937e919ad6f29a09379a059a3df38d867e7c5305c97c392495b5505500d4829d8d071d2c081fc7241eeef3d4cccf4688a3e4ef1add77d369a39aac730addb1f298f78204b3e6072323f7168e0507a998c24c52171b84380d490c655b2dfe4bddafaa747c8cba4f71702b723347c03084f5a650707551b05670acb86ca569b3827cfe438b44a19e7f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f9b1749b3de97893356dae7f66d6e78ffc87422acb0c432f98f62a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e69bfa91f42636258462f929e495b7333587f8e70d294a4e571120\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"552e8d510b67f77a646c22b1d084de6561ad3f498301239a275c5fef4d52c5022c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b7e7af7feb22ee0104afb25e1f047013516c7e97ec25097358897dd4faefed3ed0a2d32657\"\n}\n],\n\"handshake_hash\": \"9c3ef999f8d96c6b0ca8e2bdf4806cec2a8fb4ff796e8e96f0bb535066cfd39adba9676ac2894b3b19fb3f1ed687663cd4c22ee55ebb0cc8c0d61dacc3081104\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be5134098dc4efda7d7dbb4c6adada21ef515db74cef826cbd6251c794a927e15e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436546a8af9f7595d641b559cbd9252189f9d1c9513cc4058217076b9b3d5c827c6ff4c95685a5d48b286fe5a8bd7ae4aa5c05138f3c78c5a349a1a953e431c3dc1d2ed45ace24842c91be91e690c48d6d61da4dcc490c6f229d380c93edd57075679bcc56416a46e5b05f63e9594a56196c5a75b9b44f30f51473197c5b325efe444c16e94a465cab11d99fffa3cbba3b75aae8e49830ad1d1e3a3995c9a085747c01f8dedfcc447a555b14d76e4ddbe4c1df247e57843a698042a4c95ab4b2f6bbd2cc793b6df364c98c750c17219703744a8463bcf2d16ddfbd62777d225e143b5841031c578a5d70c955495ffdff5095ac00c6b598fb32cef3ae4683b2a2bd181d4ee2c7482b2524af50043aa39d952a31a44db41a9f3976a71729bd46a63ed69313d5d161af8a4b91484cac0054608554d8453281b791b5553a1d95ef6f846e22bef1de38c6558fab46c868fee56482235766cf182ae2707129c36ed04e10d56ac119e65fb7b80bd32181a3ebc8767a77a5275f1dd24df0e2545c01644705576ad4f593dd7c2c9c530685cf9a2e3f83446ab6de785ceb2bc57baf24ea5bdfa28058645edb95c4e592299901e35f6d7e05ef12510b46e5306c12429893f909a2d3b3081389f8963fdd3898e027b5aa740b83d0be9e444c84fff2301c318cf599e9c697a1ca868a83dda070ff09bd999c07d80aa1ad4a5dc8cc1213834ba8e7d7feb35763a912f8b8b62904672af95b20d1135132a7dc5e5296342dfed10e34ad7652201b4f490a63b800ee1cd420aac810c566cb3777bd6d6bd66a38bd3da108e70afbad283efae9febc05a0c00e9d0e734e3a319071ff16c987f9b0a959172e4eeda8fc64464ff12496f0c479867e39720834cec86267481ff2e1d08970b7412e6ad8ec725124570c18159db61f35fe18b5dafd628fb0c952d9e14689f5ecd232174572d7893c5f699a345f5b5553c5272023865c793200386c22224afccda02dab6257dcaafdb0ebd513ba32f776d4fa80a7720a0b7f459d3a16a522384af88e27a197c2b698e7bd69b90e6757d2945954b9be6692506ef5cca3096ab93ccc6ad7f830d082e88442567eee1fbd4ad27ebf41e06c047d27fd7ce0b3a3fa4f8c7f89cda1e503850ca7fe7bc725493e3e140b58773831853ea178c4f06bf72fe96047aa97e76de954e26ab92c676db84e5ae509ff64dce1282f4cf8729c7d7c3a36d817b7b3fa602d71a4e9c90e632dc89b133ab37b98bf98a78639b04b769ae67ecfeee8730b8aa7921d3f814f9b45c45eca2c2c6e507d6919d31b8fc8e65c6e82d21c29144dc9a8d12c45b57c57671459f57c0ef46985dbe64bc0944794d9b7df974249cbd0c347821c04535ca477ade9af6f64ff6e139ed75da5d137c9299cd53bd5a4b9c44c8971032929decad8bb5fe136e1032fcf90c9311bb0506f436ee67f84dc8df94ac53b167336f319b5da8549c486299e75264cb3157f2cc1a9aff658362a18aabf7ab2c464ea5133d2355adfa97a3258de5e46cbdffa7a3767835c3ad5748994de0c241e1ab1f0334ec4fc90f0cba9719bf54bf6bbbee67e758c9dfe517a01119eed97f10dd5384becd995f08f8dd7fc52a53541f417669ed1b56f4d7c03af8a6cd3b069d2575c7e27370babf6d82e153caf6f09a272096d891542b4394f9d91c9c7d49de38f2d6ccbf27da308b6e8cc5705e6221fa8a48821d6914a7169339cb0119655dee0ed4c1d7bb9cbd3309c882731424d22e0032bc83a830796e7ec4dec44cce0b63831458e9d645c86772b2d7273a1ea0172db161ac081110af10efa53a4371e0f17c96374aeac79ab4ec7bda60cd21eaf71370efc54d0f19d89bf84f35e6864a27de2a45358d711845167b98b3a3e1d79e2e0622dee9be3ac269d4c700867f7a1d593c563f2b2165f7a333aa903f02d49f3f7480697a39b993900eff5b894396d7af5ef40a6f5cdbfea7a1451c491faab680f6f480eaa5f33ed771e0e8b99d984df2a25e6b3dfb5f219b1d829c3babf297dc404f20981e96832db6e74836e914055082799fec52cf8b6b2a711e544bd436bfa901740abea154d6daaae76c58b4f802181084411f40141a4d2911cedc4036763ad8c2aa2c3daf7e09d6e55e3d1d8db4e1efdefe382d25118d7bb57cd14933e082c75d22101816ec8b2d93c9f2059a7825d23d0e4ccfcac6a645707496ac00615b6f533aaa2997eb2b2d986784c5b38d01732380f5604988890e8d0285b35945983318241e65ba05ab27784b9ade3b6455de2fd5d6eb071f3bd7e31054ee98606d26f142b92598ca1d970d06b81376e57f6697f9525024decffd6a4fa517c096572b90dd5d1a4833c2122cc6b481dcc83bd7ed2cf4f4395aa8565c098e866f93070b7ac57332a767d4915ed8903e8e9cfaf32d671576b6d4007af7be12a7c5514f42f06338fb1d43ef482841ad348098211d21a5a488ff1c4810891646d5c555454721119f642596ed61b844426165ad06268f58ccfb9e30e1b62b0ffe5d9fbd98dcbcc0778e0be4994f64a609d3dbd8f89d908ff33c0049345acbde39674334ffbbddfc7eb902a7f213efc6347f02742cdd4723e4726afdedd9d1e49f505494cfee4be55b6a0de6b64b8aa52ccffa95eefcfead9789401a116793cbe020f8fdef8e7937a39926c719bc552c5b0e06b638cd4f7c41a519b7974bded6daa4bc3ad418ec981b34997a57a2e6828926ccb0d138616ed2acf667f4f498687a3a9ae2c1d6baab3755934808f56e7c5f80122314413fa44cb99eff396d755a8e25094ad912d81ed2910ca1eacb7cefd23c14dfabb600e28546604341213cbd1b88120f94ad8a2865b54af8fe3681e3a4bddd5dab942b12be59f0244d48b3c44c3614f00264b5fe0c34d72989af1e069d9815f32600495ab38337839e003cc8c5147f0772c87da9c29642230df06219844ee31bed8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b1c7b12ec6d5b634ed6b2dd37c0bb03a6e0b63537ff77a5c1ce162\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"528ad6cabe7d97cbfacdaba765918220866cc38851749158c951a9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0b01473603537687c7b83f64904aab3e843a48b36fca39edae68951a945e969b73\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ac100c597c8c84021ea40cca82cf55c543746d568788e0e9f0ae8f71db22d05e92721430c3\"\n}\n],\n\"handshake_hash\": \"b35a7e5a28cdf475b190f4aaa52dec8d1bcfe16c309b80643778f2446786cebb\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331bed18462d3afa38aa62aadc2980420450544bc94e5e2692d514a420c8d993c0517\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884358afcf5047ab40ca6be9d7a02c8e094217683986bd1ac94fd28b86c04fb5bcdc1c335d06c6f5d04ca9b6002f7f899e8d3d5abb7ebd9c67aacd89b89e01dc6dfdf31dca3a86cc5c1ec7640625d3cd7a064ed92a474458afdd0e6839e8741ec61dd083a9ce5abae8aeb2d6844c652e2c12e5e82647cfcea820dc369ff44d60c14e7f11ac3a297c934e2620397b46e4ea2b4c9d298b2a9de1bcce63a3642863a383fb9063c34ff5fb8399cda4d3d93847905c19def48e4c1f81da0d2fe6d2c98334a47f57cfba76f9b1b5b92434793dd44dd10adf20f9b57a965c52f8813c7322c1315b82fccb56b5bbed8d182cfda1b50e0c88da9bd4d622e9fdf179d18bc1fd3cb96112cd4ca7f408f526a4b6e0594b6ed902dca258b5dded305e4f08314ee64f28823094c2cd240e9a4eb33c8a69d41fea58d6833804dfb50d71acb7b3bf37de1c08be2ff2cf4d3b22daa2a3995488af11b5c90b0d2298ad7e76d270f7911a214e6894c969bad8c7cf0d206523c76149e6db11ec77c87e6579b11491fd6683f0faef14e12f0ee38fd03e9dbda49a0c969e44ad40a5019bc7efd8535c4a55dab5eba5a106b05093b54f664e7f9b9849e8c6a5a594b690938d5bbce9d27065c5a3205e5e4d3dacfefa74d7c410125999949140d432f70d5fadfc736d5057fbff4641b0acba4c45f69416a56c0f7734948c92f10c8c2b9ae468a8a5eb8eb71853b48ed0fb521dd9251a2d05b312cd0c2e21477cf277e77092194756571e6936819d4f0e55c0f5fbed6328ea5c5eaf3f97db20a66ec8dbd2680adb46894862e43486240844bbc3670365987d8acc2e6aedeac132cb7c215c0c6fe5a77deae3991fe20f402365f6584a5a9f044aae4c4da1356c28d334ffd6b98e54e788ac9ee75504636e24316ef9af336f9051fe700e77077b0b97a7a2d3cb62b63066eca591a2dedb8bdd333c7c87262960a1b6af1708bf903142d7c9fb8ecde7b013778ea410df5dd8e7bf2b38ba824a9e2d01904a896b92c12199c1cc3f4491dd9e137eef63f010cbf8b391563851e25b8548fe7f420fa57bf52618de872bc129bfc43e5cefe32ee1df4010d555c38479e50bfa47c977427db0cc940366eb4fdab3ea85eca0d60ae50988b082b93dd56c83813902e3de3da48e1021d68ed55f730cae68829aa8f6ecc31ce44876dd74cc57ab88138d4c882aa7aadad7a57d1352e30b70a58cc8578104541dcbae359a36f5ce35b3befe2e2184d379a1998fa10d56a161cb78e6f2aa91fb6f47cce81d699c928fa58a34d494cb018a10a8e0995a73c8678786e7468b1bbfe5c266e19a079de1e251bcd63c14cd601b53b6493bb7b934fd000bcd4fcfd8d8a8e3f2cc3605c5883a0b54ab5fd83fac29873a9930073468cbbbe85cbe1d553a0302a9854c962b23c2004c93a00c25598ca1ea6fe351cc77c8442c8ae8726bb4b018c170151b8ee838d205cbf791495294956ed14b2d604318a5f73c78dabe9a534eeae867e1309545967edaf85aa26a1ce186555608117cbe38951c3acf91f05a7d0b5dc64a1384cd8ebd15152801b881bab0608890a7fd934b7e8f561e26f4179d5b45b13a36f9eac6cf3f8172eee3dffe71ffbb24aec2358e67e595de67f9358135931b03843e66b26b5a27af87440517f56a47fba35c63cc1e06cedd4dcf9333a43b5d10c3f5920d940cbad34f739e70eb45d475488af9e99f0aa71c9985ee7534d20795c3b7b1b6cedb0ca1d722824e9bcaecf5b33049857010219307b53f4d68ba548099341ae9764e7d4405be08fc49ed67640c9208107a137348ca875fbfe48e13c695ce457bec9e50a66fcd71024eba9749543687272fcde1e42202e29398b59599d9927b1418f484856a199f79d591d0ee7411a707ea3385963db35e60a9c45eae9f6cd01a180b5a359ccdbcb57b75824dd32e5c652b6a7d9a85ffce2486ae095cc6c5b8fc528b2db6a61a6aafda4efebb08fafac4f65a08557bb1775f98bb0a65c7d106fe4cdca87995a3a9ad36c970abb5fbb74ef33216558f4759ab1330648c9ac3df5424d4a5b8484573763b8744e3592b641215c9fc22b8d82522ed68e11764d8cceaff9424db11964d253825e3106bae185318e43b98d09ea0016af1706096543c71ed52c0a86331a066d51bf248df9f6955dacec9850252b62dee7e2c582e3582de642d15526a6c417cb82bc677e1a22bcab0d19c565c4d51bd47bfb9ef9c91675790f26156074fa95413683c06a87ae2bc7e6767ab2f9bf4fc00030cbddd7ea6d9536ac0aa7c4580fea82accd5f701a8c5a1e4909754ef94f20bc49b3e6e6e922bc24900695afac6716c117db09635b206e03de2109214aac10ca814754980db8353947b36830fb80cee1d5ac6b8faf2e9c67aff706f0b0726db8bc09fe2ab01e5d5a0aec9ad1cd1c4a1278f4b41379a6fe753ae8aac20c3268745fdc8255044a5a87e7494ee4e06005512680874385e5aab86ded5a51c7246c48ac46e5c215f7e4b17a078023ed07911e8979a7db950a53e6c6d23c673106c5ff6c2f2d9868c70bd96e00ad2aee07dd26750d7a5486f99e876d44ff0ad91ef2d8e3e69c794e2576d7baca901a5026cf5d9b8bc2df35f103799c8d9c6a3ae8f0c2a0c0f3ba1a5e69087e3af5e84c3381791c467057ba02e4f46e718d65fbca14b1ca681277df72a9867faed54d23ef140886531f7e87f75f29bbb03392244dc71a199c17ecf8dcbf95af1c005171a8190f87e86af7eeead9dc1ca547e4f06451d9099743c7d1730c4883db8f8608830221f9584c1f2af89576f27301c787d2c58cace6e7f72bafdbd84721c92c12e1c51d0286cbc6e028b7ba7ff72788beb362c3987e83d9862a3ad81eb38f427d5b4fed5e813ad5ea350b58ec1e8f1aca37f31e79cd24a2f064ed455799babd1e1b0de42916a9cd23804086ce68db6a3c76feda60287074845f6f4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e7883b60faeec2d8d88661d504504f419d49db107579ade7ec136\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f378b3b869fc05b29c38482015f858fd5dbdca736aa8b22fe5e210\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3b8f84634ad737e6fe36abfa18ebb3306803ddb0e688d12dc057851a379f5514d7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"202e76f56532535c14546195685d9ace359ebee353b17086d1f9f3423b977cdcfbaa7b6fac\"\n}\n],\n\"handshake_hash\": \"85ff6016b4ef0cf60e88ae15bd6e076b40237f47f915670530b4c60d34d2752b92128c80d749264e99a247c0e7b5c8728dee4e1d5bf0d6e4af8e58ba59527400\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8dc79ef97afd3cf3128456344a4420ad4d2ff8ece494216023360a06e193ee70\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b5616d885a4372f00b9029ea6e5f1521a6174172cb160e639dd7559f0b0258b0a0a44cc03891d78dd527b63efd3ca9680555929881ea6fb0abf06db47b133cf6e6f78d77c9c4ce3ba86310d3cbc589e141e724943126b803def0ff0350b82cb50995da615ed1e8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b381296e3d28aabbb13c09da16d447f823e5dcc65095f68aba9e96\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"52e7677fafafd1d6749c9cba5e612fcf0b8ead2b5eec23dc442fe0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"df22f9429d946964083fffdfd0ea42edd0c52affab2b2c026c7abc5d6385488463\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e84f0f9a31c24b8542b8262e6089831065e59095330c11e1b7eb202dfc5b9e0aa6d51b71a5\"\n}\n],\n\"handshake_hash\": \"aae15020ffdae43143c1c7f14591d0cca879e7ae87aa90771deae7ee5e7f31c9\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c91d7978d402954e267b067b2496f2e10af865603e9c8c601cc26af72d26d26\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884385aa66c162b9dcf1cfa399a24957d0e3a800473a9ae8cd4457aa5902c46fcaca89b5b88c8d1ea0d218195526060e5732ac1b7231567303af643fb3231eceaf2290c2dc9700fd4ff6810280095101e57a209687f85a9e6aab607d67c7825809723b9afb3bdc688f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8bd3254e341672c1e2048777f34f831d84419bbaf38e6990403f9f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"373c089c8ebb168e3e0301b033833b7b0c0c0c8e12f3c747f981e4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"94900d19cfe51f38cedc58575d09a8ddf8129f18244c2d8492dee46e0b0f49dec3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bdbd79eca10127399c93d6faf7596c75cc240ad63faa9a431e89b3075a82e02d0bd6848cf5\"\n}\n],\n\"handshake_hash\": \"87eefb7979ecbf90a3a5b87c921136f85b8c7960b57b5c4a5e96fbc5f4fad0a834b5a90f78d961b9e37bbd9b67be73887b7c0bb2ace3fdfef8c9689b68a6b9c8\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae9231a0599ec9f13d0fb2fd03be7699cd43c40c4af93d1c32c046cd32199cd39\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884389a37b8b15937e77450acda6405ad14802a5c5a44482960df9d1c2c98e8d1266584550cda8d4c33211be45264f77b0cfb3c606e29d1d749662ea75befe9ca60a29520934713558e066c061a2a7765039a0c44c944ba530f261aa35d8596676e0c56a265f45157e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1bd90cf067a79790648d794bc110a535c6a8780a744d27b6ec3199\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3be5f2006ae000b063923faa3a0c4d83ef93937bf13306848bef4f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"448ae5a6f617b3b19ece0e4be0181c952d6b80c29c07e7b2091044f3089469eeef\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f0b3065cf5b98543cc01961158bd1a04cfe156f774602b9fe4ca2b7b4ef7859970f38972d5\"\n}\n],\n\"handshake_hash\": \"f7448c2fd4d2ca0ae26a117d6ef9d09f9ab4eedb3c53a6ba6707b781384c64df\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a5ab3c4b896dcf875e86ac00e25963cc826475ae2aef1b5aa0687ae19aa0eae42\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cb68c2cea6034eb643447d359ecc794ea909f31351115acccdc440ce126bba8fb30c32c37f6a39b27d277719712605883a347134ba2781e0483df65419266589bd846aa1494191cc09db70c5d71c36025923552c3e8d4912fd4b48656c06d01cad95eb8efa006f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"352b6a3420a9141aa89f2ec53ab1c55b7f6e48ab0ebb22ea945fd9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7cba09a958b4644903ad536c22593bdf843fc958236a36ba0371c8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4ab8b22f10c2b3729734634621d9506c0dfdf08cac5cb4cff2b908c9da0e09ff24\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7899927eef23f08a43c0c0f335f98937c63ebcb8402cabea64dcae74ebfb9169408dfe2a66\"\n}\n],\n\"handshake_hash\": \"49a2b3c47f0c6835e8eb35d2dc7c2e5f6aa14cad239e14bcfddf000d65f70bd4e09435061c607835ac7cea2252ca609b776aff1706c8889fb6a7c2104d88e1aa\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331beb41a286395c8176643312f95f2bd3c0825c1daf46a42754b83dab144e48e184f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439a60b8b0e093df84c1c7423517511862896291487b82b1f90e70944ac24d31e1a92061027e9a91fa1e1c636fe4bec9a9926c5b962ce4c954fbc1e9e70263b08f9014eeb650afcc3f614c2e903aebf5bc3d2cc3f96d019cf4a88fb12b121b3ea0c8727069eb67f93f4c525ee0acb33864007becd8b2a425b36accd6b576e8bffa3c485bc7965cb9376de22cd49b74449da09559d65f5ef2774d3568eef560edda4e0420a5488ae81bf52a567d607cb5052ba34b9c007c9d57b8ea257669c82b26c8634d7368d884c914761ed81e3ffdddbad4c63e5877c74cceb8dba280336752e4b7f01eabd071f0adaafbd2769fbc15bea8af0999fed58dc1e5e1c68ac4763984c918d8f0871d978e88b0d3eea557272a07bd6aafac62dba2aa08fce17fdd9965fe208cd64d4da319fb53178e25784f4c6b2a8edefdb5c40f6030280c50ccadaeba9a668b11cfec9af448e80fcbc3ab87c326d9097bc9e190304e7b00513e50ce8ab7fc83357a6ad010b8f32990e25eb6a7018c9bc3b9326761aebe6aadfa088a62ed73a99b8618129f7038ac74a7f176d5b040cd8c97003b1f82f63ac98f97e12133c68d08412b651c58470e9316b6ffb3cbf12e30fec1ab3e5817a38e0d15405e065f9b911aa4ce04048cc3a1bae610f66c8cd7fc36fb20b22ea6d377401f9f01633b4733f8543a539b235a8eb0b1120060bfe6c69cc1647cef1a538ec7adde5695514e3483e9d1bde76e792fff2e2e0af934b31319102b9fc3ecdbe43bc2acb2a3dba464e82051ae186f2f5f0ec8df68fe9fe5528310d968601dc2e742e41d7742e1a08d162e8963416f222591a3ad22bdb21c60542697931136cd87edbcd48bfda8005e798166b421822bc6118c95447bbbe8de2c4d28b954656ff294f4fdd331d93056b43d7f480ec2dc2a3979e912dc72a4a3fc4f18e6d5bb377418821ad8ded4b706fb743f9cba27923bddc26e7dff5d18309b1e0ae7b664b799057eca6a35e14b36be53300e78c4ecd3f0aaf363fff2e785d24d150cb1472480e69a311750c18afed0b47e47e4944228db7a1e657c8d9983473516f619a18520f1f523b5600bc0c02eaf87e234aa5f6f32f20be01b7efe2aafcf8a864183c0c823e4cb29af1c7b591f79ba91b17733540a22501418f338e09fd58950177846ecc6c27fd211caa5c99805a6bcfb27a13a29f9fa5d3a9718438d58bea008a1a1c4f064518fc4e5c1f47f57b25baca89f0d91422c891fb81695e0645329b1cd844ac60016f547007136878b111ac023bec093eee54f6423233062edaad9d4591a330c123e1959f2d3c7b560ae78ace06a0d48c65f4905848e4e2197b61394772e85e2bd0c9c41c4b9dbaef2a79048637e96f147ed5b4ac9e40213ed29ac1862b110edaae70f7f5786deed29dbffbdb36c68e6284153de82d4709be009ebabc43e29ffa7e872e954dc7cb957236f251545b5ddd6942170b9e8cfb5c72f8ef15d52cd0b5676cc1bdca4494250538ababb083bc0115fef5a4fdab30a5335ce5cc60692718d84dec856189f5c5e438dc45ff8b54030ae000d9ed2f24bdf65dd3b9801f65424530d4c7f7ebc83153644d01b192fb3b595c99cc5277d275e1338cedef7e7e94781738cbbaa595b7077d890415596438539656bd9133db1334426d226486e1abab4e68fb7cb059f8d61548cbd25be2dbc42113c9169de158da21a701b1c40f807b9a02b3bc27045b014ffd345f26f3e6c366eebac81717af38cadffc033cc134342714ecf3cb0c5ad0d208f2ad4290e82b4c83d5eaa4ea375f6864c63293d19b381b3504a9dddca961f74add594d4fd96a7f7b8f67cbc7db6d9961205b415ad2ef3701bd21ef4d47922f4617cdf0fe487d5956d6792c685cdf4531e7fc24b765518c20ecf744a5a22455a5437ecaee37a7be5007a84426f5ce1e9a7e45f7b3ad88168b1964e0a19e1a7287fe832a287486f063872eb402486db589220b768b87271a56a7277978591ba2ce5800cc5e4830e640466932f3d583766b8f8f3a77a25e74fb347812efe75a256aeed9e258bb7b547ee08d00e49d2668e986b084d186c8215af2b46915f1092f1942d658c22a4b4e1feb87152f87dab20fdb918bdb21bcfdafe5ee1c686d9b7528b32ed3874a61b061abe106251bfc97efbcf207335928b5e0cb9da57f51cd5375e03cb19ff00711c933b7044037e88d3fe48bf1ee9b8ab497c506c050913050a1d895c32c244306a81684c0f0984954d91665c68ebf2f19761b9b77e56d681060589f56827cf34c1eed7b96849ce794453591f6a38c4db6033fe954e12d79950e99ee1628ce7672c83a0aef6a3c2136a593005589237d1086ef85869d6bcc72d8daf9a0c0e08bca7ecb58d594ced4c233ce62348fa9b69f6e1c841da3421f8e9e146c6c8bc0b4e520e8869d4b801f3b7059a1ef203afa78ea597f169abb96b1cff47d60ae058750c84ffbe26ffbd68c46250d89b9dc3eacfee6661b35c38120d410c28ea3ad55b7c0094679c68728f200f66710aa88e93a060a073811152ab7954247f347ea580fb99081adfb3a6026f8cc08d72742bec7eda530cbedd57078e915be07da1071950b78c6fa8a783f89ce3922795763ca13162ac55a9fc08a7041823cff9fa1aad255ff896431a2193ae25ceebb001929f9c0bea344015d4848573bbaf5f3d53e2d5a8ef060935bcd3a2f7c2135277297faf88c45cfd57a9adb80425cf68052592123e54ed7743ac3729c0fedcacf5ff805d58e08d1e6addb7a800c87ce5d938f2ea6f4dbb1daa9f821678ac7f296f8118540472a19fa3c4bb3790462b805ff4c42f5f7c5bede820fc0ac1fd1215b0bd649c23d32bc287fde0c4de837aa804af5a0bc2faa444ec0e70494b47929619f6ce7d386c36a2a010183863d1f19f0939da8f13bbf7e47a83f48937a047d345ec2f8de82c8f509352020e9ec433ec6d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98820b4267039394b3c17fbe3c269af2ce287e995e2f03efbf790c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"61abfaf6cf8a2500788ce2887d1692966a54986e942b9f46f404ff\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a4c97da82e997cc544c45341bee73e86eed10b0ce93d3b3fec6c089d4c3d102784\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1869a1d58aa6489321697c3a228e9ce23eba460dddd750d6e592d7a013aa909ca47c75d82f\"\n}\n],\n\"handshake_hash\": \"d8a1bac0b8cc2fbb3d9a32af3af26c06e03337e35f232ac227b597d0c0d220ac\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331beb4be50b42f2388cbb0cd31e10cfc963e77969fa7006aa68fa2b72307b4566d26\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884352837d4df15781ac45980f513c69ea4a3babbc9f56524403456a7eba3a2b0d2abb46fae15a8c6a2640936f21b95882b4b4b86a71b6ca69d5be23ca2c2c77a389570879d938225fa81bb1acab14c64c152832d3fc6a9f18028c60089fef4decab22f56b3eca4e3c50eb08362fc8af357d2d3072177f28be5f22369d7e8d4a5731abacfd7aa216b50abd4e726072e41e7f606e93da3218c12f3b26b2d8de08b6d19a1d7281ddb02b688be286974ab0a56232d3f2bf6f7b746721d7d4c99dbad0da3c1ae9495fa1d736d8f77f626fa33812e5f2edc4488a42bc703dbc6fceb7385709703f42d6d2ae9debe978558c6e4ad70724bf0c94cb1fafa4d26b81fb04067ade26fd37fe513dc4edee263d6a0202c6931b07c2886b4292a62cebae9e8e7b50163c5f3fce7862c09ba51002e680065b2ff5754ee132eabbabf8c9702b04f293a4f4d2bce28edc7c44dfec3416cb22932028519f906b22e7a2f1d9c478bb916f49a965e369ba76689a8d44675a0d344b5347ee52fb57237b499993e38d1704cf928e8005c9074071d3d78fc5170c4191cb64033a88559a4a4c9e1285e837bfca565c3215762ba40e046718328d1012e73770e9a590c7799941a3af940c7d5e79d10f54cd97f1fbc40274ae05eeb451d4aa4d4b7bc2f5142239148a65f3e72a214df9b10c59ebf14668d1e38cfa5b1cf9c23226b76e190cd2ed0c3b1af3ff1949f48f1e11df457e7bbaada5221d5bc3d5275084ddd9fcfb1aacad02bceb38ffd3d144eff2a89b65b79ba12a34460f225b432b3890a30decc9844ad3e3f12d124e6c3c815cffca928fef42131bbba040f3b26bd2d6024c3316b74a8a09076b6e74f75a8b776630368b214e2ba6d8af34831f8f2c0386bdc9584a264f4289c9a555fe3c24979dc2c7f5287451691e99c8c68cb80d6dcceec432523b07e54bd79ccefb2a7c065e055683f1068cce7e863f074a2f9d205f20a272696cc7b6e426534021b9ba17709dac1ce3973c6a56a867a7095f250004ef7e40e686411bea4bcabf0b1957be19ccbe0bb610c0bb41b0f392cb0449a372cfb7904c11a139845f586e03964f1c643fe0c216ab8b7a6c89be752a25b65065db3d70476cf19fd397ce32afea238ab685d31a6e9e6bd86a6de98c4ac8d0fb9e00dda4235492050d0c5f26cb37d8ab3c7766ca2fd272216c840460b1a1e04aa161d6f43fe48bac013a7c1d5e0c408f83bba56c256cbd39592d008b584e5ffcbd7707e93622de54bb27c03651d5ce3c846226db5944d18c623fe770d46e3d172d40aec2aac7a7ad0bc9ba26f93004e63897de59558d9ce82ffbf6f99cbb0caff523ecf28817fdf76e7e7fa861a1517e910be251eb57f92d549c79e76e0024c76d8d36c1b3bdd9147ad887e6db5af0fb5d3c8010a1b39508f70ad99216e81dad4118c05837cc366f77ef37c28ec5269c4f4ff82ace44fc70fb7a87fb33bcc23d3e29b2a3191666fa2df0eebc0a4cb4b0577aa46dc5e266f466875fa29859d09d3715381649629feef6ae3fe8d55ad4adca4ad96df0b8d08f6f09dcdc8be2805054de46c52d2e6cf51be4fa7d8dfcff242c6d435ae2d6b27d72365e6a73cafd518ddff5d3cd4b7bbe72c526d570201047dbd70f8c3c114f5806407c4b0d5d8b174252085d6b49c058dc970220aa3f04b47485566d297d1801318579340ae12609d7e240de61337212ca81733b1430886dca5950cb5910c09896186d669c717da7e1d1c8565442a8ff721ca4d3223d24d5afe4bd04c6c78bc3c45e5aa63b192819a3421b2ff709805c5eaf69bb7f9caab0ee4b0691026b8b76db3af88a2825ce5c8b70c68796467779ed566f34387cea2d4a7c9841f8aed36e1c8d0a699b8415b63c6e5ff32c6894eb8c767417bd6baed243b09cdcdd011243bf817984c2d16d260806d278f6663b06032959ac2473de027112fd861100e4fbc20b1abd8509daed9134bd805af00b7307f59699d8c5646824f1e6a306780bfe72e5f9bfdf2f2a55db2b3bfe32f2828038b58a2456bd4415cda527da59ddfbed35e8fb02de1d3482efac38ebc1edcfb8cce6535d887ab6b9197b2595a9f48c03fe296829dd643bc487d66d8eec3beb537e185ab9b40c4e0233d0add9e6a7919d1c23c40fcac6dde5fed6fd84b797dbe31d5ed22b5a66b932ae935f006572a68f04dfbad6aa1bd726d24800544919909305005947b3d22d841e1083f617dfad44be81d5b621746be78e50338591cb54f7da62c86839014518f235fef16dd719753635245249a85abba11faa855d5fb32738e86de664df6b8b198745ac63bd166688b1219353bb528f66e61516b44eebf2e1928342f73f3a5884c45aacf31a31dee9ea4e4e9beba0ffe9da8789e9e71a9cf7cfe4f438ab204553161d5e855364ff9a91b29625bbe682892f4575f87a4092f41004d1ced5a694356a1c1c764c278534c6a16a4842a106bf7e6a2fdc6f07c139468ec90a88fc3be9c6dc6d0bc1bfefcecfebcd5a7c258211ed0acbb554c766ba528923164242c220e7f461e535b6d3384cb15fc8340db16507934f9471ab254ed0a4f932f80c3f743d666a88863d1c2a6427336659ec7ea83fd205bf80e2b7b1e956b8f69b97f011da249a4c12f163db7e4889f91c3a50e077be023e3f3c6143b547a6d84315a5d6bb7842dc42f69cf28910c52d76a7d3ce348904863a434a4c9c8bf83fd9485e6ec1f6a7f5156f5e3e27719d129a15b9191c3ba87b5e678198d419e4a87cda8d274064efce22c0385943b2e9cf29a667f3ed687ccfbf6a9d6179201f83e198b7ebe2f46db96bfb4d0304fc7794ef01dcf6719e2345afe9052feda3d9457ab20b88d42020d01450b5e6fd027c061ac1e5d4e5cf802e549a1f363e246ff191b4a55524d412e90f62f7ec19342ec8313cb9787e2badd81a802dc803bee7bcd595e39940d697f4e948e80a3886\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5f17d43c5385b25b97adb1cd449dfa29cc41bdbef4e4af3fdfbba2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e601af269492166bfa240f5a6b49adfd31bc10785fd6b5216a95d9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"96693bda4a5534aa91de6557676754cc7c5d6d6791ec64ed4b43fe739f0ea00014\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aa7a4464f5fb993badfddd307a5dab2bff90a13ca71d2b256d75e02a871fa7ff9131260c3f\"\n}\n],\n\"handshake_hash\": \"f483ea22b4f6703c8e306e64688958856798e8667134f55abe07be2f202b6a006c97804470a78f2dce70dc714f27b341eedc6487903c8e80263d49207c86b2cf\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be5c2390705f86688472eb6f284c3e0cc73f18b3780b2b6932a6acfaf985fe1ac4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b23dfcebcbf2759dbf67e7d0fa2b3a1fc58468d321cfb4652a588185a0d4c066e5760469c001ed7781b9e574e4f00527762ac52c8581543393033dae5fe77d2a48c5dea82db461d644ef1c41dd1103c4ff03b8e8528cb7fbfd95f96fe3fa21889ade712e5598cfc0800700d3e599353b3c8b8d66245221260f13c5b5300e337e08481044cb300b10db7c0477a4ecec68a10b3131959d9f36105146c7f5385d2973724796ea5911f0f3ea4cd05f745a1a746c70bb9c1d8a850bdeaece4d6ba87bd3fa85715d82accdcb0e792386a6299621c079f4a20025ad80a61687c7b91e848a73d27a269f1fea8b42a53ec7081a0525fab0a5430e1f30dbb69b9d338c91afb47bd388c93a73fbd81020960c7166868353151e64e6d52ed4ac5409e706eeeff1fed255f290fbbcf444990bd9320f464332a2be1fef2205de1bda90110e9518439c8610058f54180b91549b59302c8c780baf07f93ac38493df5ba3d3b8e904594080523f21b86d1a1f86ba59186c95e05ea59f5fafbfc4f95f55243c127a7d5ad52423f496f6e4395c16a55b219f76d85aec36836eaef2b824691c57fc62faadd7879a01cd9f544d350df99f61de2904ff6509fa5e43f803d41e20c9fd3204807ceea0fda11fc42e21976264216a92ba4572812ecf36ca907064f53991259b223fbc5fd03945aacef7838e5f5285860ab22614faf246ae54cc56e6fff04fc8630588cee503b29678fe25cc7b6fc46dbbc28883d7d698fc9fd14fa6d08947ecc8724d4d244c37cd7fed865160725514ab885e574ec6702d6f1ae61ea4446c37fa259655da22d5ea3463b7840d72d683fe93d34d9bf206d694baff8dbeeefd882ea9756768f60c67560ddbb63a77654596676618df8e4302556f5eccb6171b6bb6cb50899f176f5c24ead9554868c2e0896ef7831a8ac596a5f5cbd970b166b32dc93daa9a43179444817ece059314eea58bc19affac01d268722bb27092607b308904b6383f7f56867e8286173325b9f4c74f1cca5022365cc8dc1dfe602f2391157eb2c11315b07e2478fd34d44b5ab4232f40c979128eb98877cc8173b26f4de1ecbf2b653ff95eebf941e719e5a588267a9c959fd8f97098d5a07d73a1b9c4e9c78673bdd26536b2613904a3930829643acc5f0e9d2fde14d8ae607a10a5109bbb187a914052cac696062b57e9ef9b912182ed5cece392bf79559b25c9ef4497217298b834bdd642342426ebd08f124a91e41f40dd9a8074b49ba1bec3eb0d460170fe91225b6a8570149f1c95c5fe68e5292a856f054fae782b6c58c919db9c4e40802c2767072328247e4298cd778775b60f05c9337c882048aca1b4736def920c8f02a52385d5921ca0abf19abd20b2dd02a5aeb0c5a6926d4825c39b0596789c941cb77824de32ed88641839f28678decfa1b47eb8d2969b1da6b3837c2399968210071438b21079b240c46b4dce5ef530b6ab1ddf30cace6cc00a55d370f8affb1e89e8800ffdac11eee03a000be995fe5503dae01d9742a61f54120e715f7d583d4a74d5c8e6b825ecd252f36da7ae43114240aa7823839b39656d12734301836b2154329ef53ff988cbb3621e3463d86ebec294c8c56a4905f441ac021a7fd07b39f322e59b2369fcd56436c630044b36fac002f2e5651eba114abbbaa24285b9e6f01b3719ad409b3878f5c900b057a6682fea2bfcc641cad4366d205a4c4b9f4ae2a079566d87461f294b0b50981e2ca98dc0b490438aef91d2fb6ab1c0f3cae12f7bb046677ee36734bca0e5ed42bfb8e6f410d386d4389efc5970478c53a25bc74b28f120cb2d0c114d4e08d4a88a2311a8529425722d16e576bb2ad4270d55fc0bbf45bd4b97c6eebccfb3ac4f16712e818579093384ece9876e7b3accfdba93bdf42908082e9558cd0b1ae98a6e9a1f9793d57b8c83d53278c83a41fc0df32e67288662e7a3d308b04f13937416b2fda176f3e60a0d751b7950b53b98adb3d91840a93007e5fd8b01ac5c04a85e0c268052e9af6749d4d0ef98f869cd83a833e58f40b2913890d7a934fc2e9f997891d057844faf9e509e7134d9e345cad91c95ff4facbe22fe36fd01267c776c32673303cb3593dc572d11f302451dddb9afa6caa4edfb45ea99be4393f35612467fa45f7f1afbdc029b0f26e31042310f5c39f1090d0e151d8f9f20367311a8b218a4be0b549a26b5683ca29b748337123addfe9e2bf5f9cff5ad4aef8f160aa754e60154f532ce670d2e222fb9808e22eada8cd585583bfbcf08e112d9b236bdeb5a3838d8573611c2d381a2753fc82d318881ac0d4cf188f10aa0114b644503ca228a126dc943c58a550ac7fcb5234dc73a31d00a2b3dfc30784940a414395f09b97a6b7d67b84dd035f77932461cec00593a87cc1e4ba25b13912d87a78df5b2be6b20acdb9ecb588e2caccc875d141cb15bb2e6356161c10f608c022bf431a25d43260e7c116248cd79299474238db40d75ff5339753cfd2b4568ca302f4f5b925dfbb27a86db2b8b88e58a73ab994632917c17a374ba487a33a4f7457819e4e7d49fb94f64236206acec3c4240d6512919ff78347eca1295c46690782397180df936b4539b96ec2b255e11b68fe28d37828e3798e927d808a2b28ac922642e5ed62097fc1eb6dee8fb69e5e40ac9d6e219a17d816887349b31d7eda6f576f200ca7a12e861699a130a722aca12fea79e12398f542245c55860c0b75a0e84eed4055c90810a0e6f9a0d2fd9a99d2f5b6815fb46dcd9a1d0afcdca5eccec242c7e3bc234390784ba91a82d5c74284e1f86279c7d47b7317c7861d901ca377b9ae3bc0f7a1e99e8f3af5f81e9be32fd6190d4811eab81a7cc64ebdbf57a22b0e587d182ecf83c9a32d26ae59a3c7d085793b47d01c2e46e966b6dbc77fc7301e1e6f62728f274d8564633090854d6a2afadeb1923081286\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3fe17ddb28d8ed03e796ad9027d10906ad7f804edfece6184e9aac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"729a4a30731bcfbfb5e1b6155cf01181e409a8afef282a3016671d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b8697c72f060d51cbce2ac33f0262927ec00c9f8f2e577e55a45f01770b2c877e0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f89245e0926eadb1f7826d6042c5a34ca3849ae482cc5e79a860870822594a4477aa292bd8\"\n}\n],\n\"handshake_hash\": \"3d16b213e484f4b91fbd019c78238d949aabfbfabdbf97b81209d9def69eae1b\"\n},\n{\n\"name\": \"Noise_NKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be667455fdb34455b7dfe71fdb8bc53c23dd7eeb00750e5a77c355e99aaf80a9d9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bc8a88b93c6216569746c92b936a272f290c8acac26d742c897600555705e09adbf6afc52868e1c24d8aa9a0b82b2398d7d8a359714838d7f54e5e28a33ed80d2aaf2d3f5b6170a62ca8fc85292cdf31a75ef484123b9f4c351ba48a7d063323b691c78e8ad74839e81867ddb2f47029bf281e160704c95ba6e778a50c266d1836125157c8c5e1e87ea7a2438a155808a47eb37e4e5fda956211bc97a5497d1d72aaf67701079f6768913606b23dba5a0b42838e07d7ed9e34149e08293d9bec519537dae8afda54eed5f32ef0b3cf34b90040b413e94f8b18201736e9fca8c1112e6a9fe8f819341db7804f7f85628d85c119076bd2f796ff8fe45fd66514ec6326fc84f9c2854a942e022742337cd1f109d7285c3476592d91da27afadfa3011b1681b7874662535848961b0adfbc6b8f371151d33a76c3fed8785bda65701189d33d15a35db3dafa2a25a73a74e35dcb051489e1a00e89eb7b0e32d01b9251b97a79ae8e9569d2bc35dd619bffd67f28d02de1a96ccf93e57b83835557dbb8a9d3185a2cacaa93c6157b925d61bbe3a2f04906834404d7331e6c32d9ea85beff7e16e7d1a25fa0d6bb00d58c275b07a14a251e821456de031671d7cb63476e6c52275a6261e9254b85a31a713ce007f6b1b41bfd4df263e71d5656b4b293fd62a4a5ff8a18ff0353425dec5a0d06e1610e6ef451f403e39b98f3f7b5d921e5f6992ef1b3209333fb8f8bfc9397d99256946d227040f94d04a86fd01e11a21daaf1262804961e113b6edd9adb616c7bc48bfe38df44dcd63c38eaaeef8ca6e85ab8a273ccc4513f5b4119ec9182286f833e760d63329912a37a62c8a27761d6e8c3c39937683d25846336bd2dda7a940da8dd196c895c18913ae5348537669e4964d527227da70d4303c6013689222c7a9d0bfd891187aac88d875711aad4220e61ba4c30d4a9cb4780b252a80ac4fda67aaf930e8cc8cf7167096430212f0f6e251b310791840b3ad389ba09e388a0bd58b06f64a4b6999f150a85322ab13ab4b508e34bc0032182cfd5d050dec201c38dbcf2dad150f3c6ae65f6adff4074c1456f9c2c8491afe383b598a19cad1e3d98ce582e84cbd69c41d018521ec3ba6eeecea67da01538400d8f3aad8751ce323c36affbc861b55f6cbb400967f325a387a44639aaf7d02e0797748aa8b33318fcff5c7eace05813e33af0ec4fc429b357cd2794e3d234188ad1ed40463b3a441ca3089add29b788c3f3f4ce90c4b59ac80cb62addccd742ee1cb1cfe0fdd906d986e76be0392cea3cf6f3ed8ea7464eb3380892abc62369cab977df6a18f7ca1fa94c871d3c7c5d216584b4c7c0978acdc314f70ef4378797863a8bb9cac4d8bd07633a15c972707e235b0c99d302453925f74ee53b57633ee11a40765e89a92804df0c5c4ed8c529fa8b9d060878ddaa00ad0a5ad9b340027a960589cfca38ae0c33b74f4325477b48cfcb935532857f5180dc4716076068e7ab7e2c44df66388f554c3e49abb2d63a0b0d9c35f0ce2f8d8bc02ae27b7ffa6dc3f27161aaa91039269f9d058168984f7797c3bd7c215f37fd72bf4b77943749ce979ee5c9e9a524d10346ae158ad9adbc4d6762f4177a7aae4a4f3cb52cbaa7a51b210b9c60e20ab58e583c75052bb593b349259f8abd518ed9c46bdcf9f9d07bf4483c6148c2488c86e4b0206a5afc4c0753b1520b10b0245c287b510720a8c96b69740d486b770002da9dea7f2ba0d6e35e3cea4fc74580fe1bcae100846ed698a5ea6a0a50f2b6fa26197b0f7304ce6e171fb9cfa16804d3c28606cdbc15ecd7f19cab55194dfc33e15626b6610ecbf09001605b7fcc5fa0eb0b7f67615ea8d1bbb907e50c989eb251f48bb1c7e764f24f32a67ac738e20ffa226ab421c4c07f1aa3c6330470ad6cca1265538a5b1e9a2886f2c8059c7670a056d7b4db4a3b267e621030a22dc1468aeeb89766c80a7f0cc39af99665e4e009911b61069afbce2e87e9827100acc0369200ef876b134efcdfa9b5f1fe6a9c2360573df48d4f9db780b74e5a35bb66914ee0d91a974794df5806fbf429f9d387a073fe8c9556e6013395bc9cf68aaf473c7c136c1b7de25eb1043c110c11b6867fe891867688e8d920cdb74ab789077a16833890e77b2ebe38a97e03764890ccaed7e80bf94e2dca51fa4260fe1066e6e48cda22d31ed87480a52327ec68def98759dbcaa531e3ed4de1881d37707ce3388b4de2287894cce54aac9e2413e0043c23723398b7216ca44ca394e25b151b49576f1f3ca552bfc263df8b862e8b4a6c207bc9bf99c6150cb100cd8f6f6e21f4e8211758feb8b9c71c6af127e8b4151e9fc1b2b3284b5610d7687598c6b683f40fa1aa4d219dc2787e0c64c0409a2dd695a2b9929904161fce296f4d93d02bbc6ee9e9480b520b31b940b1568976bdf4c6d30f32d5b07d23101782f40c2c5f532d6968f076a66c6398a9683b8a6f3150b9cf9e3bc404e45655647abaedf967d5228ee86dd88a77f8998debf85f3329a78c0e3f07e7ddd9473d844d708608950e21fb74e16544e0d8f3b5c25609258fc4043a1fe7db043fba85921b99adffe0023efe346616be887cba16909774bfa77c676efc02842ea05dba0c5b7f3f7fe057549eb742bb7139a7ff23618b7cedc1a4d9ed0a2ae7cb4467ff37451450fea0b87beabeeb905974701a9e8cc163f99359314410a6807d7bb9e943036e5785405eeb6e2bd2c825e00303fe04c909e9ce71ab07844bcb4de1a2b7e951bcb006d729c732b735f822c1fe6e3ed15b47a22fdf7c0182d1cbbc1c15834c05c4382853a80f7afec3f7831ee1ddebb25eb294062954ab38ccc970bd9cf2acb507ac7b876e950c6108350784593a3df2053bd02cf213ac84aab1c416b1001365ed85a215a947c8b92cd5dbeb64e21ca96c998aedf629e8f014e5afe6b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ee26f98ec0d938e9baf9524dfa12a92bcd7fa5e2f50d6d950b84aa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c051b6e577d563251603c717e1545be43659fe1be23e2dfe1ace8b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8cc91ba03323fe16c6898707c5b72bdfa83d480a98c7c3c6d565a5d2902cf26839\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0e9c9e6ec2b358834953177649764d6238a3b4c24edb03868f7d93881cd6f830852797f62c\"\n}\n],\n\"handshake_hash\": \"1e71db78376c66a0cbfd600807f93787f1f3f87a2ea64566322829cc4840dfe92a1f1ca9bc3e50d0706ff1bde97a1e0e13b4afaa7494aadfc2e412119fefc5db\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b77b8538f91af3a179c94efea63e22ec247ffd4cf5add8ce0ac6c4890ce22d0b980df750c5ba3f8ebe6779555ab4ab75bebf79ae5b09ac62526bfe3ad9915d0341f3b37455a431832281aab7f9373ef8b72ac4593dcab73dec673458dac9ac0b04beed0fa4e73ceb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433cb0a85ecb9200cf2a672f1ca3d3ae7758dfba5e274b6966c45f1e4bd7d262a250d439f03ba806179611faeb9306fdfe4e3a01933f8482aaac23f1da8a9db69415359e4b2891543b0631e3d48038b54f81020cc0694453449aad57e778ad8c8abf79646c806c81\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d48ad290d01f827cdb410ffa1fd7cd8d653fd42e278672ae68fd51\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1403d30d982d851ff7ab2e544d4154edc100280074fa667f0b47ac\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"463649f1602c9cd27934f2cd2f3f555c7b993768a952496cdbfdcfe7748267353d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f0de8630c60c5270fc9b690113d3c1b6114998711e5422e439d69fecca9fdb59c2cf6c6750\"\n}\n],\n\"handshake_hash\": \"95ff612647599b4d0d975383083aa25fe0caaa7c669b279c2c666debd0b51160\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cd9942fb0d1a1e4ecf61acd8d7f60011ea35dd12474537bbe12601fc00e47ef4a5e6db3558df7b181420b88870abddcce085be1b7b8ac5879a7f05bd0b974e16e1fde2f8d29893b3b0e411c00454a9d1b4764478b9533bd29713446749d11f5a8161833786503dbb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884332d20eca60af5ed637da0183be08579b9b66d6c2b299e44e6f58f1695d4acb6be20b1f1044139eeb6335c345f83e89b8f448c8e1b1436f50d834d3fad759e14a72cebcf94a6a6ce0c571fbc79266257a3765d5c7713a7c725f28fa703bff25ef0f3b7827865241\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"37c8176bd91f4c3ff13115ab5363d0b26d996bf21842a83de138a9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"23a95c0e82a19ac480f2287dbb84cc1fede8626f6cf6241c2accfd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6a92b8728736ec43d6f5b2ed713d8781c9d812736eba424352431eb0c391892469\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"05cf7549000de2b5ee4995e68a8440fd9495228af7e77346ffc9de17f8f6275abdc536d92c\"\n}\n],\n\"handshake_hash\": \"81b3e39ad2d386868da7adfefa5c7b444412922eb3d9b2240a7620c29e6e7362e40926a58802e8e970cef4db5d1f9b81c79a368d3ef834f4559398202d484ef5\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cff415418051c41c0b8aeb1142f2d715cb03a50b3966099d510c08004d8301e88d7960c535c4b5d6bee9ed55ebbb950cdaa77b301f9da7bd90830ff68fab665332d2b4cc41525cea865ecf022a7e727da0a4c2203c3049c4a2f4ccb7121f1c3b39c201f3b606973a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434006898863233ba195d5e42b3c160b365d06337d88d09a4911e9821ed1c2560a6eba35167494898e4801c21794d2a1fa1c946eb9db48ce1113493927c71a501dae3a2011f227534dd9b63ac0fd96e73189cc043e9aa03cbf03cf91856229b9b15fe83054a6a5d9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"52d32b0e656e897304f7fe0a4f474c11dbfde5d8bf4b933e15ec17\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2fe5281fe2900f42db748858bbe6894cdd46ecf103c0784f1de214\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"968cf5140b4d08a491aa5fcf8c0216c06f151c99afa7e951edb4f4ea5e03868197\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e752ee550f97da28058f7184fc6b20cdc555e0ea7675871612ab9210052f81bb26e4784246\"\n}\n],\n\"handshake_hash\": \"087750a335898e4e2e8d330992651c0e28ee8dce9b2f37a89c5ba94b15865b8b\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944feb5d109b9b9605db044d433778d240e041cdc3682cc4847933ba1bcf20794e58ff44df2c0f97b455e47790f29c23b53ae6f979cb7081a356c61791dd70d5966532c5e34ebe7cc8d1280543de0b38fc4d343cc6bf127e9ff8821b2fbfa691c59dd0842ed206522c2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433e36ba35394751973f24628f6556194849079b108deb191ab99b5a8874400c2ab2b5df1189000e8be9ac371dbb86fbff12d19ee55e4193f7bfd73e4acc6547e800006f72640e68c4ee3180cd664479e388882cd38aeedfbd37fc85efc3b1b697faf118fdfe51d9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4c52d55389dcc0805927a198e0884a3a6bebb2725472e27e70d08d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3ed23c17a195411df1d44cd19928cbc466ef38301dea1f7aedc06a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0a214c7db293c4e05d92a9fbd8014308779d8fce56382072f94539c1762ca0b03a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"70bd939f0aab4ec9b290c620339b3e99e443d163e4eac9d43128ee0be09434a52274dbd329\"\n}\n],\n\"handshake_hash\": \"2a020d0f16ac8e383bf8b4b85c5ee9f90934b715a3118f02f7d2ed067c84737a45746d35abff788cd0baa92a63ea880ecebba3cb2790c9eba802a4c84bea151c\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794433a5131b5c0141a825d48f5b4b34d33730a332852c462e8f943df42506a8d124381cd9ff5a21bd989754c4cb783d5dfe9ae490f9a5c05e17e33eea66b534fce9ac3877d65ca2f38805bb55f3c164fff6051666fd860f80a88a142f5ca7a861975ef2a473927458ca009e3d76aacc2a37d630cc2037cfc60ad9b80222e9aa0241969e7da8ec68db43c388a6e2c480c3faaeb330f4ba2424e3a9787a4d3626edc630b324c3b583c42df8e73dc21e154c4f97014d39e5650503f283a156cc61f9f71fa33efd471f6acbe60ddab953a0c7e95d097fb740db0615fb305f71c1b60556a18d47c937b9060d9fc0e5fa4bd9996b9da89d6735aa523ee66fa310dc939a210a6f7fbf2eee0fcea758d5e43dd59c4e8d1dbfb9bdfabf33a0af441e853d4283021090341146aa99584a257d8a8ba606adbbf93acf643ef0908d027711ed82b83073dd0a6ae572c2c062f4c6c25069b9a7398cad34751194518bc4795ba5811827dea88e9b6a45fc035d17afcf66814a78eb67cc1ae1993c30a3a3572fcc763e1aa0a65fe04618c2c94b4ced833bbfc4671e5235ee1281cafe50defeecc0e7e960bf0fb31b2cea02502839e6a050c80280da6d50dbc6e6ca5e08b21b8bdbbf00221592e53ccbf7427cfefce03570104ec4d6d09c4cff69f617a388b8d5ca0126e82a6bb0a900b40c7b0dced74c268aa596070affd40a4dd760f07fa6c489f48fa014b81842cc1ead6621f8af59a7ec3d8e0da5fd5e22d4d5c5413cbfef829d011e47ae4a88ac1e4afb7e194813aba0ce28f1a0cc6bf9a1c785b0d615f2ecb47dbfea3c79840e8be4a9d3a161c8d8ad251aa2a8112158bf1c2877b1a167c48d8c8d884db908c0220fb16ab428308e4af255f5499d884233c8523f691296c409668971d9336dc99525d00079564594ffeda910eb25e22d916c3b62490f574f826912ef6848b9654721438c3be33f483a6d58e30a556f773a4199a6c3525c4eb166baa724a4cb55c3f673153ed2c5e4bccbd71b11455e3dfef572514f0e84ed4c80baeb80af43d42a7f7905ac1f98f58fa0e38de53a27ba3f59d6f8b5ec310792494fdc0f886b70c686f0f6929c5dec8a14735484d9c7453c316748b1219cb0eb059e128eae37f18a12cdfb4b8bf8647a583375bc3b1de42ee3c8ba81962edcf24b5869a21421ec53f054a5c250f1b2cf698d527153de2e027874b4543de2cd40b073485efc7501528127910f3250a2f8b89fa735b488905f604427fdd822e9edc72e8a44825baa0799a1ad7174aeb51def0ae6e2acd51d8ecd242147131249275942c6094b71e2523e02c2d1dabb4083b0358bbda685e40327aa784228724f15270582c6c0bffc50c33fc38166e1a2b76f1ea1a9fed742c108c29682431de8bb0e2c92dfc116bb05c1ca98217de6fa0f8603f053575a7d02dc260db06e06f55f77d91131468a5163f6734e1f20014101caf0f01e8fedea933da90069799896466274fba58fecacbead71ea6b5b7a7dca09ac7cde2786464d5b68ca31b6455953601168ab71a2a3e4ba32451133dbf68dd892634eeeaab641aa8c95d71fc61d4ade4e4e956bad5dc9f1d0b0557d6d81274961c113307ecb9074a77212c1055129a20e7423e814ee4c4eee232dd61a00f9242570d00ebc512a8a011e62d506e9a0225f15259437925d4e67bc10602fde8ede11e02c29468ee31e5a1d710e7865d5839fcc9c47a8eefbce7d25a4bbad9a4036a9b59905974083b3de3a99c7bd208e8781a9992fa6012600e0ee0f180ec2d2a82eba095cfb37d227b1007c1abcd2a02f40cf5ec4ec584591da33d130952abce4f6e8c1b36560212b3f3c2e7530ee80dda25e231205fd14fa00cbefb2dab32f3ba7bad4ec2bc3f2e227261eb2d237284ad5b0976cc6515bdbb82cec16021d9ecccd0b72f448de8226d1d5f6b04a5f6dc0d1f8137895d2967a61982681a417550f1a08b0a4f868c6014291e880559a6d289a653e03dfa0e989af864ed8d50ad62961bf0a0c042dffd282258668e04200de87a3d8456f3ab76ddd68694dba523bcc8381c19528ad7005c4ddb9b02db5dc87294b217a9264876c741365950f7f59137bd60c12815b76276b4d514e1ec563300175985ff0c354ddd1c0c76ed7dead536658de23c9bb9c0f7a26d8518595ad85336f2c14130acff464f79e5729cebd1ca7a795283265be1c41adcb34d2f06a4058bd86cf1efe24b3c18f881abc4bc2e3e14daf6200ae6d8e8189eb2443194e17ee921fa5eb143309dac0bb42adcf02a3ac5df3ff05d5a0287d55843dae290b482a0517d386d488e9a50f9af19bb4aec562be9ee43d6e5931c9b1a92939a587720e85d045bcca7591e106d8a42d21436e7cad0394a28b70d3c9ddf9d03e1bbd13ee480dafe07db6eb753d9b621dd6093022fa29ceeace25330d046aa99455471e9ee79dad6448bb036bd2a72f109553f302d7087be57cfc2b4eb40e1cf1818010a40448894c1a86832fa937ec990c015975399e0cb54156afb45078bd2fbe09a305c892e174beb8ed25c3291d60e85a38e713146e568e83ec2af826ad45f19d82ecc5adfd7a337dfd31b0796042cd56e702ab731c488ec24aef58864fd106dd2761c79891efe5ab431aaaa12761f2da8d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d84c6844cc2357c69ea3464c371e533d83887808782114efad3c6d60a88cdd45c5f368b6a9db9ba40dccc9795d89d6610cad58df4313215daef8c46053e6f734acfb30d05dbfb0aab9056403567b3da54ae803c4099891bcf32b3cb58c93fddc423fb2a1f9bb38db647eb6af238fbf8d0bbba28040b7fe036f30ba60b134fd3a2fe6ea412dcb4773dc2304b3b865f5b6aa0af4be9a63a3a035faf05b029318647d3b8eadb67b3a0606251a0aa9c9b8b5930943a07e2f65bdd7539a242d1870210cab49fa301a77c1fa4439d338781fc89b0653a49d6b9a8642d07a3ab2585d3e91855c1e87f97ea9dbae616c7f1770253c4c802ec4bc44b359d55e9c465c4b3634220139b2b1195a1a24fb4789e319029465ae80b131940756ab0180142b78e5a9f9ee65b3aa5c07b88441a56b20e8f82db4a6b2f77fb12d1f2b27d4c38ec9a54c543fc811732a18bd44f1484ed42a8b983e78ed67ce7b5ba00a689c07a54cccfb533d1d80bdf56a1adfa5ff5e54aac09c910a862f9f27d618446b0eca64d5ecd56d76573d32f7427d96c334fc8b436b86c2f87b51d5180a1cc23e61f820866cdc0652f54ca73fdccb722e4c73170d72ea57f082792d6c20d9ad548664d405e6bef23bef4069161e002930216e873e33fbc99ad05f468be6e8bffec21ca741df39792522bce6050726cfffd1f9c52c33b1c2c1fed5eb389ff48c1d053eaaba02f4d83215f647e844be2e6d22b2f84cb76bcff4bbbebeaf71b88b6941d082db968476967b3541748134e9c45ca3cd7343c570126008449ea7fcca3ae7ff4b01991f8cb112add9d6b1c8446b2cd89eca389118b84686ef744990abf036372a2dbdee839c0a1a45befea46676704184574bf719e1fa123bd01a80f8d0dedfd35a8c669b44a01df833583ee9e0f6074b6c415970ddc61ba9bed438fddcb9af253708a120d91eccc5cfc3040ad332ed1e6cbc76a7e3801af34edd75e7b686dc6a8a381559415d4aa4a82a78bb8df9c293387b255e047e035ce8e8b6c707a5fe510403afa577d107ae489ffc9aa7fa3af03b32d404391009d5ca23ee6c4454e35eca30f5625a2f081a130a814e23c59e86769d4b56b113d7280189bfd31cb2d2e0db428f652b5f0a498b6d0e026ac930e3bf635702176932f75daca019eccdb4cdb900d56fa7a64e89370118267e2e472592d784e594306e33763f51837d0e5d8fb2ccfd0aaa9f559d905968ccc4ecd63eb952c94a62fcdf6113cb679b8b2ed72d529d993c122e1cef227e18564e80d053fc9bdd4996089ec8204b2de01f8feccbaf0b66fa003b56360605ddf0187bc708d7352c8cfc3977b6abffcdc2f1bbf3a114104eb51fb1b759dfd9d531926bb54ec364122ea577126acef98970bd1cc507860704ded0140ad2d9b7ab521213c4d3c5a3245767547dc8ce704e1681c718ca8f307ea975e7b559d2613672f90bbc1806b744c62e48206abb24266a789941487bfd1d98b7cf8480b6e2f246decf97dd7aa3ae925604ad5887bd0768824a6485fd5b57292a0f56e7be5ffb338a8bb993b68cb46f9a2e775142860da825842e56c4974757914c74235e2f3ff1cd717c52784d223f5458ba4375a63b7af790b3c47cbb433dbf47da767aa747cdf0ae9ed1aa6b6979c492c208129f1cd22ced88d601ea48bd44aaad9ff2a1b2872d1285ae38bb2e820ae23f4907c04d7dc9c84d82bf122375f2f5383e72f35f312acd38b5fd47105daf0ee92c8acdf77123bbc3217a2200093b77e2549e49eb946eed2038d2d9e3d112c43444fb6691cdb0d16a6bd09c92b1d3b61b54f0d8c92135b95d82999ee1b2acb9f4140b2e0b6857b965708677b8727fd25a65d6380d6df9fc25a7e00c0475fa08293e0ff7f1dcb9d4f9db02c19307764fe198dde4ab089c1ed649379365a17843034769329b4e0919a821a4c48b6409954fe21edb624020b45a2b7a3b87dc3bceb0ad7e44d0f1561b9b9a1c7d1df1cef02c7e08d81f0f6df6fd4650a94366eeb58104955a1b806a3093f9018a76a9f6a1c3ed43ea6e95a1064f217f745c6808d376dd339bb93eab2b9e8e2266c210655c648fcfccc3a524f405a0c8550ae96f07fdac2b81f814dbd3c27257e3ddc0966fb460b9b48816553a528e20f14dedeed3dfb0b3b0e411eedea544a00281b08687489056b98d8e7cba6f3e3bbc765d0cdcb466b14c5a758be36fa602bfa48a9791473600a8213336b9044a206ad4ef8362e4e96b3ab796f6ce85e7607752e03aaf9cd817229bdd80dfdb3df1b153c38e634db7049a2bb18da56c462983437aa70c36d509b44d2ec7614815493cc84437a90cd643828071f85adeee8ecfc35628951376d22593346b7d5fff0f242939d6f0ea7610d19da542b76fa6772afcc83385bc21c1d2c846138c3a8b49a30e7d3895596ebf69614eb028983ab38024969a4a6eb0b0fc1770d98440d9342eed916ddc7b0c31524a5904ba2086029a2243ff9cef7b92b303c31c2bb8f08c4386d78e5dad01270b37a09e83b0de953f845c3847409d5b8559bb07f7af56932b61d4dbc8bdffa194ce29bda282123892ca7251bbac1e0a969ed2bb9283ea37f5db1f89b3cb2892baf31b2044fae538e9ad635dc35d46939112823f1528d686dcd2be2ed7bc2bce98a0866b965ff29320236f3f74d72b00cf2236430f1f435474f9aa4de80d9c373129f985cfcfb556a55b1638436d92405815b626831e22c5b77ec30cf0b3bcd20cefe484a1c4bd39eed8c7e0e609919e536c38984cc4a2d67b1751b216e24e951563f6a2359d97e6531b9234e210fc251ef6c54a317e90e39f53c0aa917a693373789f8297b90ec45665bba39a0e126ca65f6d36209b1864ba5ebaef952a64c8703742ebb4b27dcc7b24abad14fd34b1fff03643491a0d1900fa9eddda7717f932b9eddff28fac07b20ff809aa6b3075579b5997d0e814cd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d91fb694148cca90a4c813da1a5955a3e564a71bf96bc56eeefc2d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d04317356e0c4afeabebe344069053ce5c8e1cd8dccd3cb89ca21c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b10d3864832e62303f0dfc7cea21e85008cf1544788e2b216fc9b07b90c020be65\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"38091703616cf9bbd16d75ded10cbc72df67437977b276b4b49c9bc3a2c784a44156c9dc57\"\n}\n],\n\"handshake_hash\": \"662e0b12fb1d35f73ace58a23b64ed0ecb0fea22a0e20803bd4183708d4e8d45\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c555d269261bcb3e19e1f398583462a1a587ae8dfd23b29ebefbc5dad4e06a69b5f4a98ff3c3ff89f484f9bf31e33baea2ce1b0928713d5285fe1af323e9e78a4e3375b8c1bd503ac82750ea879d92be67166411ec17756e0728b132ca456184fbb0de9cf22bc9ffa5fb7001a6b1f3d1d555e03e375fa034c1e7d638e31cea3a4c038f11b299137c4cf02bf12123c9bec7a7baf7b09f5d81e3a1be6efd04362748cef64cfd6ab418e6a7174b9a188248c209794c305acb955cd6c2498b6d622e514d3422d33f308825ba742f19e3f43385141fba3319fd8d97105c91ce965ebb2d183bcb2c96505e4efd0af7338739556c93e6bc866ef05389769cc4d976db4153cca3d3824c26b10777073e7ef64c6904f25bfe9a0d32f9530605092063425b964da6ec864e5eef05d711857bf066b99b701a5163ed43858fc850786c7c40ed6bd318939cd8dca79c8724f9da0e4ab3f00cf97eb8d39d18d8eb6820cb8e5590a78f321704403679716eca3f1957732572710526a52ebc7d1d1af8e6eedadb95b53fc7a1520131d6862b2c1a40f285a8db0fa00fc22778a9b7934f3c37ee881d2ac8ea144b6c3d626f30d0d31609f67f27712b3d729102fbdcb820b8f3435380ce3da41cf4333bd5feb4a81158220cfe5b85bfde1f96320f653ea7d6d37af227c4f5e07b22a8497822afe11f871d6c2a3601cf8d714158345429da464ecbb6edb22f7a8305459e7fcd67a6742fd384b9fb0765c148c4d6f335be9f4c73038874b7fd5b1c926c20ca2ddd93dcf5b0ee760e51d5ef9d363b2d9f70634233636dc8232f0d23f3f1af9596bf9fc4412b6dbedc84e96b2a1796cc2a3b6c27b80bae00d62006dcc67ab8b443f4c2e049d75d60c61d9bb65a9ff885ca019547568f12a4f80b54be004cf87c8b9de89e95b512eef3768ea349dbde0d705d3bbd58fa5ef8fd889d4a23452bcbac81b6751659157aebe00cb7d76abd64f3103f98d75cc2765a177c46c7079c720d7d8ef7e2b26e306d24d25a2843f4f525a56e9680ffe87db3894a8de9685131f1e2835b3896990412ce0817b2fc2f5e4671f4f6ae8ef7308e13e23e29dfef3de9c9a0e95983042536eec24b9c9efc8373ada13017c5d4b5a77ed50a3d372a0ba6f34b043f80c2b13631511c84e239390e8dd09f8bb9f4d69a1208da59a5b75de2c797f141692e264cbe384b7018141bae9b44473cfe72d9fd5069ac4074fffa26f8d8748fa6f0a241f86dade907505c6f75f0d019b602fd4c1ee5d445d00ee14ef2a38409933892d5d2bdefafb7faefbb0288fb1ef0b6291c4491cb976ed682ffa2d35ff2736bc60a6d2eba7387eacad5aa311e2a43470a79abe05f50e542a25a0699aa936a2841b33815d9c01776c864229e23cef728d56eb0e3adf94ec8fa74f39ec6a856f29c2799be67f8b8a7c630bfe2484512210c0e179339189e3fbb05e3890330defb4f1468364d2276f9305a2bc626f46a4f7817858b2c5738ac0c7c9c58c6162ba51a65ff43f402c3c880b07cde38412455100c052a052600fae09c7b36092d19ef2f35cac890fcf341324465b5c00bcc7c2e68077e78608a51e8d5e8ebf5656c6605c8868423df81155165bc873d6f0fb414f973d4b699edb01291255bbd64241149734a6f74b37e4a5758f436f0ffe0fe50ff7adc9a2f746f7289415d6ba7d2ed5c0fc0f4b9a179789faaddb9fcbfc8ae36d6db6e7987a18b34e54808e54b2f97ad33e30e0312beb661f4243f08a6b0a13027eb466dfc92f7d7d26361e0a9af5ef6251bca06fa9462c807c9d414758436ab4ace0c97eec1640f700c16c8523875df08dca3828307f5a634542446e22468f988888f812bae057e771fce85d7aadb348155dd82948ea78cce3a33a9c5f074fbe73eba1d329f34c9e34a46cfc7f08d13e066810ad6b9d2830ccf59fe2b36b16c52204086ea6e63130cdf75d2bc388c6a4868cdb8b2932580381693b4c9ac358e0fdc92a839794b676da91614b6cb27092bafd501704a51c93fe25c82d4ebe0fb0bf19cbfd6c61a64bc3b1c0abfc9dc5f590a5e5a38091ba0ea7b16640846523478a84e68487d1877100f995b5f1ff7bba9bbc2eb630c2231f890a862718e8fcbb190b8599b101aefd97e5649d1e38772cafb493964d1848903da2bee398d705889a526c580373454919b8a6780c62cabe0703ec502c3f6c1af3e453b24cefabbc9ca7c8238e965afac6ae394084e7f49cc1a8059d379297d285743e0297611e8926c78f423773e892e040b8e3b4b85d49152949d3b90fb46471ba2832883260a26b9859db1128f1a90630999e1e8df5c50b610a2323762720a3e30fba20cfca082429cbd26976f37fcdc7759bfba0e62e54bc9075addf7a22ac49b2ca6c10760e99ba10ff94040918b248b7ea07bbc5a5e93fff674ea9b64f61d8c65ca13fc5fa51f730e08b2c23720309f0a3b5e6a0f97d63aed2487ace40676bba8f498aacdb6c7379a58a204442f407ac26d3b4df6b20cd01f8af10a66438f2c44f9f61a2ed17a287d0eedbd6c4294ad363a04024cb85900a66aee82131ced8ec08c9e1684ea96066667c8e5965fa55c6d3c8707a2a7e8dd50e98c181dde1c40dd210e8d3f14a9c123b94d64d2a67e372c28a1cdd6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884392a3fdf7fe50550d7f3a9c6779b8a2cfc0aab42bea7c47e961442d6bf69d1f0e4aa0b24a37da6899f4e7ad41dc0e55e98e77e6f888c404750b6493db503bfefa46b080caec535b327730b8982919d0bb3d21c157866728ecbb8d17a1008a4beedacfdd6b635a2ce5fa15312750bc85afd2a0f0f29e10aa1ba5010d27face7aa8f78a7f79d35e7dbd3071e60a562f232292c6c4c5ac6e3c17ff121f171f68be7949985561a586264f4b5e6b3b103f494d8bf35e6d9a06ebaea6a6fd67583fe269083994fcb7f5f53930bc80c2e2a6e1df91ff1f2fd641c169da6e0dd2dedfa19b783f02d3e61276950191526da1c98866aef1326019c7f828eacc66582e6a3e9d530a8d0dd81dc7282aabf326a6d522838d64207e7e530f459d1471009175be675559b193b56e9252163f11ce3818552e329b70c3d1e1e868296e4eadb1010c860125bae1e7805ceb2de1194bf196683d80950cb1ec7b55bc2daa485725e568ef053130b8aa29b3913776b0476bd633bdb6c165d380b3638d214fcdd7be81bfbd339378313837947ad537b50adcc2abd6ae9289fedbd9334dddf59cc7f7670e43242dd19ff558c617e9b6f5224559021360efb9582d348456170cabfc5815758a7d1b6f113fe9c3879b6095bf579093c82290387242e8fed3443358f8d0658d7aadfeacf01af4fc31e885117db748bc58ec347cd5900df23a219f4a371c60f4c4cd00ffee6f924fbd5dec983dd1cdcca3eaf0e977dcc44974c33e8c9aea3ef187aa71eab3afb9d0932b8896543d8ce4ec7e78471d16a90caaad12ce5254192dcf92a967a2cbd69799a13b626af4c1cfe0ba90aed9648c03be49c1bc658f98360d1755c7ab5d49105903c43b65b0e10d9749f9909e06cc6da94460bc31bc8d5393d2618b64b88a8f0f9ab54ec691a4706567ea96e469b7c0a3207a2afe678e9a68e0d8c0e7be8970a7cf93cd223b50ab5f7cc5c7e236932c9b5aaf05948d18b4fd1528222346d0da675ccea441181dfdbebebd08d917a53c87e5238e55823b5361546e0a40096c345e0e3b2c75f3cb157feeae4c8a049e5febfe031f8a2691e097d62e4dd9898c686cf37db4b92ed281fdc4d487fb781407fef84b8c7dcf69548aee449c5549a80d123a13ff5f600785ed3fba1505bd0ce1a1fbab6a31fb0fc4ce87f89a4cbe460cc6d7b03eb02466517147b53253688956fa2144f26887f6e10212397e8e3a724c779bacf0aada7b9a16bbdb46b84f0df000dedde4fa389d47af623afbf185ff5ff1a4ad36bdb8fa064574041b4f24b9d78575cf5297984cf8c17aec76be176d862c37842db1acee1fd1fafd4cfa54bab898a199a59de1395d386cfee01b583fdc84eb43bde91ee50e19220ab11db8a22364bbf04e5a6b8cbd9ae1a644a552acbeb6ecd90a7c6151fc4908e486f7dec30941d6e18ebd123aa285f058d66d033e2f2bb0a6c96cc531b26a1e33470d4200c3edaa3b87db4c9e047d77a8c03b9791abba57ae38c362dacab3e4747e894fd6cf9ab1db879f7ed163e8be3211a2f2999ff8dbc8a82d4c150d066591328ad3365bb48bfadfc3252cf757b5b7d5b06adb2911304053cfb4667b9c3141153935fd474f6b662bc08a8bc1faae79e49b30e44a894dc28534d166cb85aaeaa25315332e3f94827cc8c3c89ab40829239c27186a95b52d3421f93ba8f40ea11cd84d61a9630f03d99869c6d4623190e34f0e11cc9b4834c801dc419fbedea21974336ed70ee296f3570da2aae063eaa1682460ff9cbb3bcb08fc089bd67b7bc3ff52934702f342b5a3f6e8bda21730e3cbb61a86369d8371f7c8b499dcabf8d485ec3c56d89405ee5337b68478fe4abd51867e874bd4e291426f79ab40003b42f3aa9f548cda455d2d8bbe5147ab7c7896358922f07fe5cc1e09cd5fe05b316d67c4bf2fc32f332b5d0cf8786cda6d636b940ee0f14bbb3fefc19295482fd95fcdc066c0fe7631950ef764ded218d3c12195ade1b92f6dee99e6c48a3faa027eccd54f20de8eaf9669f78726f2b407051ea6b909eb8e2c1ce0c3667fe988d55f25f37b84869fb8da772f8ae068696d5020fe718173a0509762dd2e6c0fa2f58acf1749f964bb7cdde526c675b652d26f48fae79836be72e23b2216396abc30b3fba72e3e02be5f7dd2b52620d724fb8d1f26438aead3bbafe0997854850bf7467bf43c0ed690b43976e3668fadb98f871714590030829356296d467e872e63ab33ba3ede8d29adbd9e71f6e924590bba91b6de4e0122e484143c7a97f3df6572e8e91b030582452af09acbafbeaf7142a70cfeb846fcfc171c8be1d99ce6726056edccc31871a6b808b94210c8a9165964572d87d1d6ae21a294c26d8d5220a77d2005da55509adf20658612e6237bafd00d195b89e02cd1c040b2f3e06c81bd8c05ec867ba26a4fb78eee3310363f6c71318f921701fedfaae0216f4f98521fa6e152af084e49c559da69a3549b94a2b53f8085827d1e1306993a6cb49d18065db47878a6a890dce8c2d96d0edb21375c943603e60b503e56ba1f006334d5b45c4bd044a6be9633a8b66d037983d996063d2b6d6409a951e5b32609d8f2ed0d4d5892bf4de6d15a20aafcdf545b776eb99dad6808f25ed38c796094feae6c07ded162a0576d9d9dbc26c9850da31f521986c2686f694591acf18b40abd02ed55bdf0c54526676b4f32e8e02f1cc8ad22b54275dc035cf0b180c197f60efa5e22feb7bf0de373213c0c32bfe49e882595f51faac8894edd427add0a620a488443762e566bb0e8ca49871e4611f19fefa66191584dbec78e4e10e343f41c4ada895d1dc200943fb38c4bdc0093686e7eaecd5b4cb194161bd0cbd5244d52943f1a4756265d59a51340105a1de676ddba7585b8d2ba2a70cc5fa7bb1b83fc88cb4b95b5b9c0b9bf3ec20433d8e3e1778fd0518fb15e6c7dca69bcf5a04\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"93d2c19391e64a79d0a54774b1c118842e86e6274590f156774874\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d42e5edd61c98251c33c5579556d2f9f8b9959c8d01761f7e026ee\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6db370378cc82aedf81c5706837e386d6b7b4b07ac6d4c484dcfa6be8cc8456a5a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4a65a8f695054f11b49fa6fe68d9893d35f271739db93006c343a164904b5f5af020c823e5\"\n}\n],\n\"handshake_hash\": \"944e763a4a0f92502643519321ebcc5088d3cb4b3b4fcdc40db6ea41d8dda3afe855ae671c0b5c786c124efd9b07e75107ee1ee6a99b0f89ec5b575c32334c68\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bf78283ea86f4eaa0570b48287d494c1266c0e75a27bc804c494aa837b225acd5deb803e9c7564ff1c30e6cdf52d118d9b9ec60c4eaee43964b4d605235e300a53b4db667eff2614ba5b744e266ccaf69c92da9118f18f1ffb0841ff94aab32c07f57c2db98704fcdd444b6ddd3391b1650b4a932c86493328442bc9a525f743c13d9a9ad642e639d6bbb28ef36ef7291973bfb8568a1072fe32351eb474fa4377f7b30c0d454f71d75e368d81a9944edba42ae607f48675f98208a1648a99ccbab94d608ee453856f0adfe2784f8ae15683062316197ab5d38bdf87a3636257274ff550a8aa8ed121790b99de91a714f927630972c8b083bf11637502757188f900b662087a1ae847583d36091e6bda1ac7fe71cb12ba765f1b983aaf3d124b6ba71fd2989319ef1d7e2013bca76b3bf0c02fe77dd7c8b324f0c731edd52ed315b236aac6db625e1feb4306d28aad514ec722076a14a1a195bc42a0a193ef96f2a58e25daac10c9256c50adfaa25e083b6f08ca56da8a908bdad6523fb6548c4eaa1fbd1fe1a7958ec7cc898d40842c08aedc9d1d3098cc26e205deb53a18d90509d2d718c0ed839e87362fb29b146a5590eba8a1a5c1c815686799323563cb810cc9cd08e49b3f69d8c289350c79ca4830847696a0632c53d252e3342d68fbd519e95800de89bb67b4d4ff43e4749efe6fb636d768f339c181abb7ca9570ee17f1c5711b6c5bdfc5041561cb65d5973076c5d8cebc36ea860ad586d544eac778a327a36e7f8c72ebc3c0b62ee1b091a908c2e3ba9715d08290f8af326712293f4d60ca2b8b7473bd1dbef8a7d82b956b6c905eb9b307db2cd7522b85058789f96a54323cd269596ee8e3bf9ed4021eaafc33116e29637c5c489c05ae1535e704667d36f906e20fe737bc1afa308ccf7333a56939d8c813a5db3938cac3f8f3ee69a219ebdf18014d6e4060a269f4e6497ba982a1bc26c73549e5f4e1a893687d72aacad5c0a02e82ba14d19db78d28ec61543085165c2d8e7dfad2d3d61b936dde5df4d74948d5677da92212136e53beb9211245d0c58f50ea1239679f6c841aadb25cf2e4c5060a4bbf00d240cca8262ba66c2f6ac6c3959706abc58e3156974bdd4dfad08dae75ee1495e5958acf1f1857ca9b582168d7bc3b4ef4bd2ac7f6485e3fd7b34a5778ee836d1793798ec0de38edf5b29f52eb9deae5a781a0c1da287c43112935c69b19c7f1ad80d486f372db865fac262c341291672cc86bdfadcaf22f7af6f63225914a6e91251e0ced9ae000ce4c3f0c7a3db23b19c9923f2b0bad16b6a99bb76b6d1954413458a19adffeaff8fdaa19bea544a9514c4f62c8cc6d8ebd1d3862a36cf7eb1b3f7a71753c8f87488e82ec333c9cd9a86224913d572648708fb937114bb3581ceeff59d55b17e243d5c0b7f59e91aaf39103fbfbf10f27efdf7bb9b7baf803a31f290d4f601f3a9e5e7ad2a76d0408a2932219f65be0bba621221d955c9e6e5bc7a6f7d00f9eca8771c442c64ecd329b07f761188ff15d70d38898b92adffa324e09afaa9c0b9d5c70b7814d1aeca20e5a24c641550d303d99bd32631dd75ba73924969e5e1f81dba9ed82f976b71667e8ac350ba4459b8c1400ac52e0df72c70a4eb610cf54172296e64fb47bbca33647e4cc943cbe1936adb7a45735f01f825ba31825d9e383fc5b960eb6152da05846991ae763bc011b7efbc0e8f759779bf50dcdbea3d7893ec9255a4bb15b60574498ec120c4dbe0cb95fed4b6f8012b35b213936f537c1f86e3d770689c26c292ba9c074d192f15e68ef1ca9c7d5b1ccb183dc76310bebbf8c402285cce7b3f64edafa7ae888ff4c1bf3f0753def07832c98fe5a1e8ce9afda8fd1e1725ab7fb4785d002d0cf75aba7799cd65e1bbf13aa76c423aa1d05373ddffe975b085356cab2b1d95b46af28b19c17ac5aca1b62a48402d31479abe59de5370128a15fdc1c789746678dfd1bba929f8e6e35390a242029a56bb967f7555f617c400898fe033bfd33ff4728ff7339832fa383fa9e76fc57655f90dba5cc27b30ead71ebab209795122c62c624b73aa8e39caad0b9f936d4f37b828e8623153de77e90b46af19311c6ca86b7187376768274fbd2b94d8fe762bb392ebb3bf6a2212427e407a4d46bfd990d03635ca27c260afd5f8f0ce16eaaceda1ad6fd7a4eb181f08d012678f8f30f2d3abb4b48a78ebc997f36c669be95b02db189b5320b756b0425d6adaa93ac16b82c85f4cacfd7792ab8bab17730d374988657d99b72cd16f89f7f6f9744106d729d9c28aab8803fe98c892eca212e125fd241e891b78ea4b09f577c2697cb86ddd1955617423836a7cd97911d820b36da3fa24900d66625d8ae9a36e732b123f89963939abc3b3bb70b274b849dfb2c26cfd31a97b558af97bf1649aaa54549c96b4649ae21dbcf4a47f6534f7aa28603bf1068b92584e1df12bda99a7ba96d5fa86fc5e9cd440d9407127f1bca87114f57c635c46a194f30745e52407097b5eeda2762c5eebdc00a17785514cb3170709a5eabca781ba6721032f2a5f6841950e555117a5f9b977156c9177c116a5e04d29f2d7f7dfe41bf2cf65c5d919d473a2f334b0b2cf45e7ac257bbab31\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884330c1118a934600eae64e936321f632f8ded2ebff78f5615ba81c7d9ad4948a9227dbf5779c1956d42972b8f99da633fea8c18d8aaf7a81ab0ed1f0f66547d98d3b17545baa1b4072692a5ac14a4695d8cdd18daa556f34b76d2e5db8266ca91414b23956f3896fd3f12d132f337d8c2beed476593ea89344394c8a22b17296e062a97d00654495a08946cac73961b7a70ffa4a069deedba0611ea892b25446d9b2cf9f372a9a2be2ff7c278767c6513d4cd4703e9f04a32f61532832e0de3ae1f3226495710e384340956eb962ef2d53807be86434168acf8254543c42c1d3b783ae7dbbe8acabcfbf53a434bc6192a00c4179beabfb6019768ce9600527c95e5c32dbbffa9534ab094bb29bbe10c2bc53bdc89e79e9825c3b89f2dab05f3354d5d066940bbe14355cf0c25b8946a630ae803470af8c0583cb1a6a854f7a2ddf02d15717a510bbabe6d2b1049d62ea1c4fe518d7e1c0bc28b3d23009460230e269f6278e51dd49a1d47a6bb10541aa98cc8f9ba28248a4d1e79b7c6170efbeb180d1de6038dbbcf9a7e842ff532e965e33b28d3455f72fc7d7a0599a1447965c9afe35394f1ecb8bce545b4b62cc1e7a7d2b8bc3f2a4e545086775f4a5f091d7ab41aaa15821d3515a933675c9d240b0346903ce91154fe6acf7d097a43caa9ff538dbacfe3316b681a111269dd8a71554ae20dc9600e06587eacbd6e579b5b0866e4cc08420518f74732101ddb18d30f9ceae5718d4c9593922babbbbed256b73af0a2ea2d2b56229e1e26ea015a82aca1902275f035c5eddc66beaeb539715b803d4d5b9435912fbf5120ed2628e7745c393de1e2e63aaf726c62e6e609d7c0784055249651489a8bc75d3b281567addf9ea017fec27a48b91d35758fc99ea356f834e1a75c2da67dbe5c7fc9fcd32163682e60c15bc367ccc9d98415dcb49ef808eb82663fe88958a93b28e2f3c263f148e27f8a6a72061e1bc9bf95a32344f355a19125bb8088316a57cdd0b784b120d14610c5936c5dcc57432d4b4a39cabbb9ba7bd7e8675b9576dbdceb755ec035fa1059f889af63a28dbdec6672a8a9ba40babf203f4f8b064f4583bf705042bdbad29be022a178b3c002476df7f484290bd8dc25b33067f862a98d12c2da2477959672f8b1578dd95aedbbcc8af9bcdbb383e3548c614276793ff1249e6fe299477896336197abebf0c5eeab69de0def46dd03ee0172a481afbabbc04832652fde8a14a72d09d9f249811cce06ab900283f5814c20595043819db56ceddd0d915bfeeac59283943ab27c5da9bb298899c2210e8daed3d34ac5a4978d335b4c22db3738ccfa7de94528d80f2ca18b6dcffed950c07c453016bb2de9ed5fa800a084a61a6b2955ddaef0b3be4e584d11864e1e54a0a856bdfac8bb5d99d9008e3a3f81db5b5159b006ed540b4f5c823ab0efff71bc27ba4bc84a6a085c574aa74c0fde9a76d299c2f75722395e6ee18cb004e43b321b6ae5d7d3d9bb823ac712a9a615d74fda518bee2dee81fb54b2cb10a981c71ed3b30b2b3b9ba35e44600eb1ee0b63ef5533dd0536b11669c919c8c086c38db46789df69ac26d5e532b33150acee6fa95ede10b7893e90f697652a2549752b5463453272c044b8efa864df88f25342a440ef2257c17424d08a3f047eac49ca6b4a8f1590116561149b36caace8da61b8065c831ffb83c8cf673fae68b63c956580b7872403569e780c2790a5d5ac19645c4f11104b6f59025a5d599350c9e46d980319aa00e0e67466c51071713dc140314cbad1277a7819cca03d83177e664ac01c2efbe97cc259fbafdaaaaac1d48f1f535a329c50d077a25c3cc705f16c1043dadaf90b168d51c0a3d40ad6d8066eaa28632ba9d58a4321dc1d60dab3797aa1497564ade9db55566fc5a58a802d350a6414794c04b63652f843a5901ee5b6ed0b5a22832c4ed5d390ab216d31fd10b6e17db3d428a6b32e724aa32cf25e0b80ae6064a35ffb20df9f191d0e224917049a13fc3831f185a93f41af4eb5c5ab4d2b524f786edae3cd1df0c0b23b09f1662e085d97702a0a9a707e2e2c44d2487fc360345b5b991421f7404a4672bd724b1c60e82e76d0fa044128e54daccf1dcd3888ec3008dcafc124aaf35f6a89af8b12680393389701d4cd8979eeb3216485b22b024a5a6cf7bab3ee541219f9e6fadaf7616ed4495d44c1824db2eb576d72d5bc2d36589db2ef37ebe30948aaa30b9539f2ce874fbfd8a2e9d6bcdb0f0bd813a2e4d19e5e04ca066c435ad2fa4f666fbada91b148171dca3b522817554630c76e44d1d11fb033ac991d7ca18dc214094ee51c865ea470f2c9ef33504a2fd6ece0baa0be11654c635a99da946c7b4b3bd437fab1331576ff459b1e301de951265724145ed4127a418deeb7041dd21419f5ecdc3a8585be0c7ee8326f6e013d30d69f93e4995d1a04eff637c9e95ef5506160aea3c9e53730fc5bfc0a4517fe3423460ce9e781ee444a4ee14b34c8efdb057ceac65a51c49bf54cc79a98a67e1301cbc766865ca2a8bcc9dcba4a1bf0dc50a8b0fca5526dd08d9e7c135ed04f281e24c9a9ebcfad108d3aa531ab26fb5027b55fa07c62a8b4a3cbff1e2099c7848b7b07237754ad70560c0d3ab92af5563552324833ebeef22afd1c18541ab5568f92fb867c450b1b1767cedc2022d59a43f38c20ddedf7c898fb7ee9073ec49c3ba8df2e89c54b05cada390ad40b8fdfddfc56ce09c7041a1742d50a3a10cb69205a51bb8578f02a728bccca1bfbaca2da14a708c69893c1f83016f64810154ab33ca7f39c9448e7f3a7646bf5a22e04fd0cbd8a73999a207af1a672412640e6ced18190e504433f4e5cbdc0d5cec43c01fcb20e6f2faeb8ed8a7714c745a96a46e1b21c0d0c192be6c851d00311d275230f90726c3058bf8b95bc3ede60ce78b9bb580fa3dd662\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f12aec6111f08115c02df06212ec5c3028a2a5c5fc7af82320cb0f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4e91faad8f58070076602d0ade9e7a2b7dc045ebf958b08e9e5a62\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d56789d0b0253b263963a24ccee0b26fd582466b0cbe8c8b3d7619bd284d2b20f2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"662ef3d900c69019a9bd6dc2b14773f3900f75e10818b53b32786853ab031a50c9db2dc920\"\n}\n],\n\"handshake_hash\": \"02dc56e2c94dcbb88fcebd22d20e1c93208cbdbd419ca3964709947e0398a28e\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944635b10b0380bcf2f518e245ebbb62a79aef3c3b8ea28437dd966dd8784a8d90f24363a09e60452a97d8e5644e73d90cd246528f36d0a6387e2be2a9e395bb8f32024289e8863db5242746ca2406ef3d84ac9bcdffdf7560c6c91600663a2672f32d1f705815756e8f8d9a4cc461d714db0aa219abcf94d8be48d801493ac147f19c9d27668ee112a5dcd1cfc1c0a716d99e1e0ace2a9b7672e6562b92b9a72d5e2341ed341eee3e756f1e0f3b223072dcf8eaf85c5d1d393579f2325913b6208a04b502e754cb60ba7e63e5ed701277a7e90f44f7117d7f2c20f80b5905b06a939dc379c97f5d5b1f55a1f37a84098f4cf3255d84b4474d99ab61561703e2fc13a134fda61ea98548bf60b7ed143d3ee4d7e232854497afbf8c8a4616e38a00b62d282b58a8e8d49eedf75876545b1874cfe5e4d8474d019fc3634379a9692bbb19c2dab5a4a8b1c9af576810f1972247cc18edd3696e88124b4fbae75c8f0db79bee1d965ca33db2b6c264db98fd7bef1aaa0f1a3ca05a81b3193c62eadef135900a343f3e1ce2b3ed17574db705d02271f1d385594b4348459247002bfc6defd58bffbc98a332419ff61b3e1014ff509e4e18648bc892a4a537ff64c7442669e50c47a1d1d54df4b243778fac940ea88eda175790ba3bb86558d5954f8bc40096c2067ddfd793bed875d26de6c885544ab53f8eaf59551da09d3e015f9dea7ad4fd895d12ec734dce49ffebd83986bdb72259b0fa58f644a9825a80245708a75893407f4e5dd8600bea08f6051cb43a2ec55477ba893da8c2d93bafa5334439ca1331c91f5930eeff94924ccdeeb17e8fc8685176a0f1b7f14ac9d06e366a069455a9452284c87b675503fa93cca39ee2d912e8cb38b45dd63829a842ec4633ec517453d80ae9e191a84461a64dbaef9798e0fc6ed63fd45d35823e28f34a31fea97b9431242f99178a8e9c8f0ebb870263b43c91d4a9a80adff9477ad464c92eb7ae7d837d251de294d8ae84262bbf45f0d594b282584b6ca1165d7aa0e92e763fe835d341ffc46474559da371af6eb0ab3d44ab53a585af107fffa5cf62e4be8daa0e8758233a659b3af20855210d931918a8bbf3ae36c001734a62fbdd928687d84cc191b90f0a4f286a83cff2fef581d7bcd319a5d1cc82507bcdd82d9c01e55f95668366c27c664b61bc1b80e2072acb663a726e827f01f8b671a15f80f1665966b68b52e0de26c6c942d5935207707fdc97ffc41c2a0f6fac77f91b964b59d03f9fdcd628baa44b0d6e69e3f6d997d11e4d0a7f532e42d5b78bc7f1e18dd61f2916e4d9e7664a0ebce0cc40d73ca674cccb9da73f100256ae01d5c009530ea45a7f8575c6bf8762724101f53de55c1295e2effd3c51604a381a22679c32a9f2522c7d37cfcfe9110d07294aab008382493a768a97156e6ebe85e11953814bbd85abccc61e612f9220b8f4bc952dcf7643b944fe4398e029f29af9599ed24787d40819224f22e90b3fd4abf3881d66577b3d947570dc8d52db946906c8e504e2fd2c972bed92c69e8add1f7d5262cbcff186514b430f306b1518dbf961ea4b3c009934860e6bd06c92ec3ed87ab9a1bcdb5ddbbf93bfe130de374d651315687dd9fc17d4fc63bc442cd14497a449649cf803c123064852f12fd49399d403adb523e9d4e3e50c8225b5220c955040f3a7e48bb45ab1c5cbd4f4040436df59abdb1c2ec3efae289942addc6d871d297efa4d3fa9435a6d066e7223aa63e2e8798086eb292834821cd02ecbb68eeaf0516089b9acf97378d14b3dd27f7c58ffe58dc65dfe6e1ed7f307217748c180849715ff626b05eb01a0a7b0b1efe36a035ee4529aad5a3f2f2ef822f1e413b650efea51453b3feb116b82606de5d0aca47ccced8a4786fdc76c3ac6d0b017581c56b0a6a15305275576ae13deb9681cbb219509effafd9dac726cd383c2bebdbca742ac2ee075ccfbf9c5d5648ec3606d8febd5dae29b9bebab181bae96ec624cfeb0cc67561f9be03462c9a757eaf182066cfd892d8e0b8b97de18202cf11c90b645ce654d59e79626c32c98e1c4a2f9328117ec43bfbdc561cf0b270ff643836b8645fa5a43f3aebeda7992d89449f27c28cb74792a421139610b7a008f85e7f94b40ef180ebd3bd3499b6c7d32b36bbdaf24f7da5bc4a1f8a5012d160f2e65301de08d3d547a0d70804d5f8f6d137b233788a38002998db34240b1f9b7fb60b0e5d1bda29471aa9eb6b446ae5abe44348714626db4ecde03785e1a84ff1ae340f3867882c2953943f4851f4df1f8a55c890ce06b7993122603a1e93e0eb6ebc65ac18c81e002c132c45a9ee5ec68b462cd60fabf3a559faae94ff71c8e0338884b1b9d056a125cc392352341e50033547aa2c61cc3a05800c5b7abd06358521f1cec1a241b854eb1e0b32700efc83c4ee4f24c32ccc3a94f4f6b3912f4e5b622df991d28905487c1abba4d205195c1f96be5ec0750899a6db3cc2c96d001c1c26242c8c418387e5b15ca989ea1ae67814ee7ce63b54816f6c7353826714cdfb8a083c507d1e2cc68d712f95d6535e7ea98c1ca6f2efbf795b04311d06a32bc62f44528e1794c359e6ecdb551442402f1e4b6875d53fc4b75bd7247247a1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e852694d6a2e88331b32a219c3486065c3c7a3f36e8b6f0bf7bbb79957a3d5dc9a02f33e239e4c0c97af413d422463f0664af4d5037171114f5ecd9e5ec1d37bf3ff674ab6d83c3af62f0a2c20d91eff5e29f16fe5531b7cd4a6843b6314ab0569303ea1e6f90022ad64a413e38d9cd2d97e405e7834d22cf7b11ba319094d66ba5b5d4b5ef18ad20c0f5ba84fa3d3c587c982945b8663c411650558f2e82a2ec4a603977417071d7090508e7f213e4e6efad0c396bd892d67b8f4f80d5ae1b805139f74713b29afddc053a9719133eae4bc2a0fd265ae2efd36fef15f5305f1d30d0efb1ceea1dcb710125f1dc8c9817ea6d68988f9ae5ce792eb973492f609fbd1b9b4ba530f2fffbfc92ea6603ddb54192d98df9d690aace841f22f00c92f2b15a524520c2a89e145a3e55891a7dff8e153e681c9bb5cd74199d7d1bd0e77829edc3630766d4ed9ba650c5f235b38d24fa972c4d97dc4616843a9fed802419db2101468eefac1bf2b3d09c71438fc84923fadd80a8997155b93333f9465704a285edb3a3af91abe075d2736fe54b064add7946b02f599088e093798e652b948ff9b22c10b4274d97f4f839b6a8d2b63c488f432329400f8d8b1ac2ff0f68aca93bd26c6e90698dcac7d21073744c4f5845ff22bf972cc3e091bfe8788cba8f275d93f7c1d52655aa5027daf33c863fd08393506ecb8210d31afbcdc50b3e15055e2146f171a485748c47ecb3164a8e212cf80ceac43ae3de4b051961cfced4e68ae51d1541347704baaa380e68e1453cd1af3a15cc28c537140c3522cfc4e6b98e479d1d37bc51b0a158988e06a64f5eb990c6d5d6ff86b1271cc5c6a8ac75427f3e773a0c85ef2b1a2b246d118b755389bddd09d653644be5aec5d27bbd01b7a34a251649eb368edd09825c3c4fb713294fc56aee3a4192963669b871703340aa11a6972c9f17d0d5cff4e5615d2779d2790715d33c582d504d1939fdfeb224612559531bd719df9728500fc406d2c485c4b62412138404a5fc6e320063f9659a1c779bf7182497766823e75ce52d7fcaabc5c7414d09b9bc5015cf3a939e0223c231acc36ec7dbbf509c16f22689c24bcf0b6b143d6bea1aabc621bc9a7f60afb74ddcd9acb28b4985efa4cd95edfc9349e418263aad9af6dc70492e29cb571f8e07b130d61bfbfc2c81eaa35d0192680b23e290e25f0d0ae7b74e45557b37e04a565502afc11ee3dba0403a6cb4d9d9dbc2d714c528df61a7873f3465440bf7ac81661eeaaa9eb82d692159559562ee2486f4f64837bbe24fae174628a5434d30162e63fdd03670d94c5d379e3d415444385a17a472c59d1a0b527da6883f4913a67f5780ba9548e815ac5a3feac4a8ec5ce554b19f69db6089eece31e8e743ec83643f401ddd8a31a8ee271044dcf9ad9fdf4bb82d5a1dd38a6b9b3a94668a6517555a80571cd9cbe9bddc5ec2983c2228442c8611eb09450943d73bf63fbd35f801b6ba9ea5fc2631739be375dc34da796807cacf9f76929cf6cb2a76402e2ba4c7466da8bb88983c13841c97355b3a388c401f2bd361a5050d29f42fd802fb41278b85b0e82d72da7ff0623707052be65431b88955ab90229ee27fd23ca738ed7f50a0ee7b8e6d5d3f9cc7197a4b3249afbbee4d2ad070f8ba907d686ee81505edd5f2e1ae5f5faebd2a483f40fb0f907088bdfebde0cc1895e7798904b301256e6b7cefd48dfb27cf9a0b52eef8bf64d63513d04d9ce76b9dd12bb0d23e4c72b6b62e615461bb99ac4fe630267ecbec664b0612242dd2a4430f88b7324351f7088146291737904baf919255d896458a6e317fff8fac2be46c2a7ee26933162b5fe1c6eeb22a0e3b668d3496ccc197c35d1966f71f97a9aa6ae137b556edac4b088b1beab0278f98aef8384581157340d25f9cf114e017e1c6d7597e49a9fc4d279a7939d5806aaf32b50e3b1e1a8c8981ee917e773ba7ee843f4b726cdafd962556f1741233e84b54ef233ac94ec89b46fcedbfb5729f32c57683190a163f9425d20df638e7ae7bdf1c474c8bf6ec583c8e7b675531d96e8bca552916ed4c02d4661335d924d8b5517d2c21ed93b94f92ee3f2ef7270748a21d198787901121d43728e7beda6a5b1898a5e6226a1fe2b40f0dbfaf5e31ad822a6b694102f341442912be0cb05d3d2c92aa3c29bfc81e1bfa5e31624772455a71597a9bbef348de18de558afe66eba950207769f5c34d55174c533c21b473ff65c0ddf9d87212eb535bb42246d94b36c5f4ee485b3b6793e06f386269ee8033db7b4e68c09acaa67e989a6427bf824a4e636802373673d5ec959fbc275c77877031a06f9674cf53548a5140614608443f2d77e05f092d03804f45b91ca3715df1fad958045af0408f654dd952826fa29ae1a1faa467bd5089517dfd3b9e9b4c0a24be44d9fc507faa71305c84ecb55e734f737616c0992b39089c04b1d861088d606da5e30d7c9ad70803cb31a6b1adfb2e677e55fd45188a1c31fe302c008cde93467dd45b9a604903de2db958c1d68b3dea51ca86573a217514f3d030898c7385937d074855d67c19d377c00c451705efc669d7fd8b307f243a3a1581d0658e74b348461934b4c67e894e5afd7fed8832db15bd709077ecfed4022569db951c54dfa098a39143b726fb872b15bc0f5a169284ffe9feacf3c42833e03569c91e62a7e3ebe0c14013a8bbee8cd20d8848231ced7e0245bcf43bf0d3f7fa14130b4634278d58123074735a8bd013908878ec6fe210c119638d2094258ee4d0260d70f73b7e6c596f98544ae07650ea3a2474d141d054452d379705445cfd812ae53cb44a7a84510763c059d55fa7bf096c431543f00dae3458f7d9fd8e2edbad4eda0e4ba9ada1ec95e72e83c7d471a98703060755aa5a1b1a04bfa65441838fb11c28c17560e7f4a77b25a751a834a9e6d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"61a6a169748d2f9b4d47adfed24adb447e1e7d41406fded0d2cebb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cf8006a122cb3f8a3b2b644fc6bb2d36238ef1bf65d9418ff2c1ed\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a59ce971d9dbb85cab99f28badae602b9a77db4575faabcf835e7efb8e5f2bf0fb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b0011c5125511650349ddd8cd51c65d83e8647e10d87152a3fe7a329143189b6941d7dbfa2\"\n}\n],\n\"handshake_hash\": \"7d8fd05b905a8f2aded4344b30d32b08616367a316f2501aa35a7fe94a0ce46bd32cf69ce33e6885a32ff79bfc3ff85fad7156ab84691ab6ea7525781d2445a2\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441c0e0f4ce83794475f9d3bd3ae9cdbd804d9e4ad95a23d877e887f6f984aa1ba98eff4be0d3ddc34e31753ff2233beb563fb626af4039c531204ecd9fccfe05ece068f97e0e0fb4cd34729a6fb3e97496afc0a2b7c28aac1755edde107363fd149f6b68d850ea436\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b3c4982368be26096fcdbedcb19be3145783d16fe552442c0894bd0026f3c925c39d0d10ad379a34e46d9aa9f6d84c3f47e71acbb361d56754b5c72e8ac8a2e4b9859f2f21eb23fbca5c579fd78f71d8529684c836233dcc9ae969431c4b62d90b486322e1db28\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"96e76f06397107db80c94ac04a4f7bc20cccdb85a3b50e8063fa85\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e95c1b1f4997a95d8fe8e50a4a64247a53205e53839a65ce117250\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3f976f4270274b3593431eb8ba027f4067c0cee9009997a458cb6dfcea2a595a46\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ebf3f8fab513ab02e35a9e7f92b842e193fe8a2857054d848e4b8b6ad1be50f5f35e495ba2\"\n}\n],\n\"handshake_hash\": \"613074199d67cd77c59d730ff08a50f90fdd30c2faaaf7e846467d3cf44d6a60\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fadf1ea021f15b322e7145ac2042a10848f9d104f1b9926dbca05d6a085a95d4c1326b8498b06acf33c5bbddc37a96513d33e4c2c763274542281faf22243d8c278eb8620e4fa08748ea6c55c03b9f724c2f33b2e95e39162fb26fdefdf0c39cf4ea3c65cb330cad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884330f542387c3ab9366c0eccac46c6e2c2ab56ddaad59959512d5997acde5e7a6fb20255980645f1c738ea862de7d9c46cd40f0ba4b7e17ad725c3c7a9f21ee87b9915518a1f22a428e255b17022383e25d0a8b8bb6843f1ce7f685f9f757aae2a582b362736fa83\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"48ed760dea7d26546d7eea3a33c14b2b56e953f7604f9f3e01a901\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0b41f92e7bea73c3e6fe1c7571ba23ecf732bd703909f874eccac9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa042385da87765ec539d69a943c40ab25a94e2a5b70b63de9e334cd7516b7c8f8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"dae1fcfa531022fae2078f188ff90707db8fb76288dff2508cf40c9f4dd2bee11e7b77c8a5\"\n}\n],\n\"handshake_hash\": \"4b00ee0ad6774eeb25a67d455fb9308012bea10bd927e514778bb49266751e1f1282f97794c93c5ac54486590f0ecb92a6e3dff2254bcd8cd58fba8376f0131b\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794492ac66b28c9fd0d1ca48d30ca4b1e9872f1d676449767315259b50e6d5249cdd03135ca63f18bfeb9a62225024697353264bdab38df7dcb24774b67b1cafe7d2423590ee467634aa79e48f17240d3defe458fee06f48797ae6d50e1b8bf879ebf911c3a6b4d486ec\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f54479a9c8ba32d23886014e360448ab25636b1f29e96dacd8aba7ef62ec69d066e3a1d83128e7db1a668ba907eef0037299d751551fae34488c3dc6762b76c9e3b91dc8dd7920a84adc2858be9b0ea183b9d5ad2493f7d7e4a9ea5bd504dbbe9107acb3a815b1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9fcf097bca9a925879974752bddaa766772d007550ea21882fd594\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7c634ce0137fdb7bad45bc3f9f0215a9a34eb8bb3444c7b08e3e76\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5200124e89dfba144905fe12b325adb551146c0e7bae0cae83ff0270618dbefc3d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"49694bc3007f6c817e786cf7f7b73b032ced7187a024caa0a3df3628a9f20c99b6636073d3\"\n}\n],\n\"handshake_hash\": \"ebf54051dd363fa3c19d0cfd1ac47c1ffd5706275caf9e581d93883bbaa3aad0\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bab7fd1975329ce6370aa938561f45267c3dfbe201273814d6af94f3088683afa17454714ff5b9ec0a91fd8196d004a3f13b3c05908bf077b0e6e46f757a25f95fabf0b988c4da56d0d0ffd6e88d36d7804e6094dce1f7db3f9f8eba7ee46ba33877a55a1774a1ed\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432d19566834b1ecac8e6371e7f807d836c76d0c17b8180c8cf1dff5e068609a75da20c0fa550f11c4a76f2c7735423b67c6cc367fadd9e7cf0fd4ee1f874b1fbe8740ceee7a2016a777db150f801916aa57b18bfacc0f74f96b2c30af77e114e9ade5ec491c72b4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a8c9b61b7240768a33cb4ab954e61ce43b7324acc708ebc6d54e77\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6d8138283349a491f1b8859726f2e96804924d4b4426f8e98c2118\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"708995609818155fd606120f0f274e781df5f74eade187d6bf5155a605c6bdfff9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8cf786c92b04aabc66193177fd6520fc1b577d84ffe6deda0e3e43045a06e228196fd486be\"\n}\n],\n\"handshake_hash\": \"d84a8304ec4786b4308c9a9cecf279235965a229a1e7f43e8f752a22929eafbd4df77bfdd03d30612d6e9e14d4efdc99dc91dcd4bf645fb3ecd2ff301ca8c52b\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944baad1f90033f8769c0377399c51890a1fb060981e966e9d437f8e73dc45592c5c071df5a7c3365a897ba2c087d1445d01c8eafad8fbe7a3dabb4d3a5c6da574be4a0428838fba5889d501b299fb60fd7018bf1a87fbff4f6508b09720b45e5fd398844775704e16bc1bd635e03882553b9225bb202cddef15d365a99027da14bb0405381f8b725e3092191e0bd918876cf9291b2ce9461e75660df20cbae583d569cb36e3dea1437bc3907cd362d0f9d212c11c1634eb93aebd11dc545024e5f8c578437d25cdd2b809295cbb696f1c9b836de7d185ab2abecd6f32d347fa4542d02ff1fa25c3aa66b225d74903e52ebf5d21c1e5198047ef8e78fa462e782fe3c92cbee4955c9058d53c09f5e8676aeb04d1d9dd866566bbc6ce5d45a31f71cdc533742ef7e2c357d0b14a37e8208e12e4833c4472d56a820508aa5ebabaed0fdf192836cd31039194d2abea1ac101ff923209202b11192c871f815d3638271b0caec3aa3dbbd41aadfa7a8e08e85b86f44c31a6c96a902a27ef48e972c26fdd71067ded9470c064aecf670103a537e91ed61c5d310382ef7f568be51297a7f2eb139240328815f5dcc898911933bb6b85ff421e4501b5201909c929eef800f92cfb52082e7bef48d28bef21e301302b1643bedd9a6bf494bf94cbbb2ee6191910a4b75c7c7921c489654a601eebae904395c3b18cb7b0bd60abc80809465de97edde5a0a8d88e18b35f4f6237977493a4ac52f93f810f31f385e6af8fc0811c2d837f4053934ae3df103de98a953c5d7cd41441df1108065fa4ac274ea37eea9b998547f5b3996eae4ca89e8d954e0469f7916932b396a36fb9446f0028a21abb569e7a32a611cc34904dff4f653d38bb4a36de0118c42d22f08bea562963e73088138ecbbb331c1b1d1642d29cc519bbf2db74bbd9dd5a430621d18ba40e5e341857e128a2a1406a807817ff1de1342e67da09c936170a7e155101a9520344b095838707b9e2e77c5dac8a0ec654d197dd2626d8462ee5286225ee80a4b0d13fd9a735b6513b2a2094557b524029520932eea265144114584ac04708662fbf5bc89fa7db35324f6c97e20c48672ef8a88d13ae433561e4faace03649bf2b5e8f7a969e08633831e4b3c1af2c87e019d5d0bf76f74819162a00f8d3de471f320f9a78d80bca508bdca900f59b4ea3477c3fd0704946fd8fe3bd73f351941058cb0c46b70dd5f3522bc2e78548ee2896fe6f58becd716ccdf21f7acfc8383be261765a4c5da3145af078265e91d4d18bfb7943e1bd3794fdf34a7a280e164f878edd49b49df51ce78d573887d86b53ee653239eb881433f5ca8e154eabcb65228c53fca79adc5dbb847042a8318ba9d32c6b5be63421b15e8532ff8b4702a5601786d453dd08d98618cb1b69c65c200179322cfd891c7b49f30ee20bfa0368b060b26d178defe41890bd6543fd7bbf9fa5b8ac7c23ae2fe25ced410d9c265e5abe17477fee8281083c69575420217849395141ae8b4c877c387f5d8fd5bc336ea3806509ddafff0ca75ee08e9b7d9d8dc0e7167b4735bc6b92f08aab1d6b557ec13b32178c4e645bc260f6e38b114569e912bfd65103ad268b9b7097d4386d619535dda2b3c21d251f0ba7bb0a5dfc10e143dd781045b0b70db396e9ec15c91bccd9a7c185b7a2206765468a4ee92d8d2d29f97b7863559e6d335540c77c91eb0812803c4529d14f719be42084d2590f95e3199921305809ce2fcab3f397322fedc1a2f8ff26713e78bb6be5110cda59ad4c032835d91bd2d17f43f9e257f06502b5e21539a8e433583af3f10ca409bcdae8b30c55f901d84af0bb96186b305d7659fb959d66b45f43120e99cd42f1dc9e77961bbbd58d7bcaf7e3872163010b7bbb7834268c80ea6928fb579321961ea6db961e2bc621aba81c3029cb55ab75b7302c2d4ea9628424e2431670835e56a76e169c90780932594017b403fc29c241b1bb3820fe2082fd9efa01530a4c661a72f00e80ce3b037528426695d016c23061a9871f3144d6b8e699dd2e8ac93aa2ccaf7a2e37aea5f8a45d08eb855e998b36860b475d458227d59af9c3d8319a3ea7decbb48b3ae40dcaaff31a423903a0164d2bc01e242c3018c6d905aad21c695808055797299141755fd9cf0fd90316eba232ad5b4eb96ccc26b49412ee4ec75bcc3ac7385f82e0b49f3c596cb87cc3246bc71795e973abd8977e9e4f64243fa60f91e4a5af07b43b4dda382f333ad3302319373c44dfdba63c76e5a3154c78645ebf4ba951f4d3593005ea4c75747f4aee1c2e327b7794b50c42ba00c159e71cd1b4a066900ccc931aa64067b283b26390dec203e50b9f0e7172ce09b84096bff0dbec81791854aac28c7c26e9c707a449400941b87999f0b60ea330f055095946b04f6a2d9df4ec8196ec6c382bdb08e5ad1ab8d3d99d105ebeb9050ee4c8b4b461a3ef425a6556c3c00cd8c32e1c5360d752d4ce6a308f8a24ffa77ff7e8045b933a6053e95bd816b24dbad50558a6ac5ec4a2463583c42fad8cbfb62edada005fe4fea6c3e58fe81ec964c120e34455bd94353daa6bf3890099dd8d39324a0a1ab2eb6839e12b5b932be1dfddca5905525f600942e877cb82fe6caf4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884399367ed05d9c7e14f239e2eb504c5b65e5dae9df7c101034095709ea6d1f0e5a6f02a227bd5771a79f03983a177aadd2d0d6d86f773341016a78ed35ba93f18fea1d1f27ef566375875b6500e23c7e51741dc5d8bc24320422d4d38550b9e4e93cbcf1ee32bf04d3e726c78164ac3d51606b4483082e503a3c7d56ccacc2e5b186ec2aaad9d9bfaba5bc0e571701aea5fe7c71dfeca2869e6fee5375dee6b8f25419fe61064afe08560da49df4f8a27e24839986f1cdbdc679c732352489e820d8846c2b449095c0ab7e4badd058da0dc06a356128bef96e9c48ce6b05217349080169717c33194a831b789e805169334dcfff31ccb590e37e943bf0315399aa355955fc3e8ea7b7adeb2c0dfa36ecb05518b83c3a41ef2a256372f014443165f9595a750571aee21fdee541103c45ef1a80da68422784caec9adc79b9cc0197f80302104abe936b4486bc9a006c037b871d832d4b787a2a167e19bca2558bafb9499f055ebc1c07be2181b8bc2ad96665ee5681edb570f3d7f6cb672fbb68f27cf0a3b2c27f17bc738eb033d9e64d84306a8e38d9f6c6df09e8157d7cb6d03345d7f87e5af07f4163328644a00bf89fbf853b5a9fc4503fccc4bd9c79c1860bd0e4e6269822dfd1fbbdd3c68a7ff4f5147eb3f98981f7f492894880c3daf8506857c15c1f4ad6b50525b410d3a228adcc2f90c19e05717a8b1f977f1a0f792e23a3b548842aa24c69cb3e241110fb9970097b40d9e09fc3a052116d7a62c9dfcd0bd991e67c469a7c11c0c2e4e792296d25d921e181a86f21618e67aca64bc5806993284fd7fd8132f905c3664e820fca1e773adde0ecb7f28e599c892f429865200dbc28557f3fd1d8ed8cd9f03d29e122c836c3785d4cee450797a1d38fd0895e71da89c3f00101b99756dc521638767297f705bd52f93efb385371598a47a7c048a10f329e510ad1fbf406c3445bc5bce58d51bde5c6641bb664a7a9ac228baf969f8ba39d933e971b4224198ad1b189b54b43a36c9d9015eb77f22cfb7cf38d9e6b4f1accafb63f701d937bcb770916591f0189e6ccc249d6b327b946de74c86f852054b0d3a17a0352abfb13a75eb55a482a2102651e3d028d6526f272c820051f15e43045b1632fab73aed01e33c8ff45d0b151c9977ef9c8167c22aa4f934a128fef8328349d3cf80679ad5fcaf210bd8780657eea5dbc6a21b694bb74efbdd7614a035480bdfcfa6995d269266a6e8221b673be4e0b782c12c6898e744e5272625f893708a82d63d2e0a1b065989f6311a35fa58d50a28236b26c35868e25523e35b1c0b2862fb5ef5527571b332ceeb297b7175c905ad3717d19b0670743acfc3b2a20013a674ac943406828d9154ae0475e5b6e76b8129da747fe3c11e6c6f1976bf5526ac416869c598cee04b371ab44dec4e95c5de32d2b25455082f231c19284d4a90019c5de2bc66f3724b443391f7281c4ba7f5f16a4b3d896c5ce61df657c88d9577ec7f728bbda86741840787128aef48e23a6921d624ad98f3711def5df49f41d68b9d125cfda96bd0eefbfcad604231129f13a29fa93b8a416d297bc02f34cd10a96cc3bca1f0a4d62a200acdfa1d9686db3497e6c134acf8ae5f70ba45820e2f1d9f26e4fd999693b0a5aff7757e44c2d13c1269755db3ac9df72c917fff074c6ca1d0357501286c8710bc0ca657014e8b8dd417b4f55d08e4bde6cc335c606173777d9cebc33a02939fc40f32e9521d7ac1acdf8471c7e9aa19bd8920e33e847b49245397753fdfad656144e68297a93a318bad3af980dce1704902a0d796e526e80692586acfb75fe42f28e6b66ed47aa34280f22450f12f37c7920e5b4491618a733a904c3adb3501652300cdefe3ef90d00ae48641aa126cda42982ca6bcafd5d577f1b3fc40730a8702ec69bf5fc9e84be80b46cdf88dfc4e9803554492e415f19d90adb5c9a52c6620d441d91d1eb59f353cd106234fc3f9f49540e0c5e552cf9cac5760995a795589728770377da51eb1f48ed9b4923fa994c6eaea0b97bcf88a18d16cacdaad64b509de51fcf0dcfe73df045de16769b7c22f661b6bff9339e9f5e91c15cee070c1b82eae02bb77aa62326651e254ef853452e86840ac785ac2f8fd5299ea9e446f85b3436d4ea155cdefd33e514563149db70f4a330c5862190c825e2ff8e57e4f4d241e82e3b721bf50477551e93ae2eafc7a189a09c638335287c96793ccfb513ba7f2641d138db9a7cfa81bdd4c0e67685f96d66fd91d46b20840e6cb4c93a9008d58c701524cae62ccb89cfa18aa578fd73be1f7ea54339be7e62b58699fb2442e51cbe88571a06d3905e5a042bd8074b63a4a15dd0a33c94259dc7a62f4bc0500ed0c68eff7b8e71c55c4d4f2b512dfb537cf613e4ff15bc8d6c5818a462d56be14700196eff8a00fdf0bbfe90299e228a516063c901d7d44ab8910e4d75b955407d6dbafaa19ed55630eb34d96a610e5fbebeabd34055ab1224ced9d6cb55f75b55cbd7a1db39427c754d1f5b3cbd60ed67fea326ca61bd5171693b72c863d7ee879836678c642f3601e9e0d7e4f0fdc30025d253880494afa4fbc5f56f95f00a79360aa36fc0187e92bbb81e8a606d2992a67c6877ee8fa6e5a68b886161cbe30ce46ec8998901166a4583bf3581de0ff1da4decbd947df9939bfb0eecfc3d69e9838318891ea9c8515b78f52ad08e155167d854161d6bc78fdd062cb60d214183e396cc146f444f2878ea3241423375238e08ce8dc2565fe5ec0e26c5723f78db850b8181a054c4a14e48045d042eed2f6ee4ba15d4cfea3ac674e660a8a4b0ce3e066064954e215206b850f9eecb973adaf6325d5713e4c9563d1f3bbe27888880f7fc60e2a0cddefbecad50537f299b5c5678404076ee387453f4d32af72e8e311e920bd27256135887bbb29c7bed5afa6d57e4fc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1c2448e30a2e424d41db2f89e6810ef19e97cbae7c7baa44d0d695\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bea8a84c227e1eeb8c497607722428c3785db9dff47a00ab9bb9ac\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c42f0a591bf3a0689bd0f61c7336b0486f255bed12524ef9d8e0143ea45ff2ae6a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"45668637c75bbdc14a471e9e35c6fd25e72284c9116491aee03111335b1abe1eceb010a3e2\"\n}\n],\n\"handshake_hash\": \"d575962b2d5cce058bdb8c29ddd7d5d929659756f72f27d3410d2d626cb4110f\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794465c98d606dee6b68b05f75476e15eee828149a12db22c776f4a53f9bfa4ac48b2862483c7210f3e08ee6e4aed6d45fc37636875e9d6c14a45a0ded1fce954395ecd974b6838f60e13c1320b41071a339242a7f18a3944a319a0cb7596e6fff52ddc60fb9b601ee007434972833d1967538304b37272e7d05ddeb9aa468e7c8adab5782b53fe9b717066a3c239da8e44ba58f6826a1526f1a3d9e8677728a008f69b396bbe7f7cd303a642c40ec822eb2a52e21551c2fef62f36fcf5d39bc0b6692c0f6cd3223c92f77eaedfef1766c2419fe71f9147fe32021aec4fdefeb97f230c09ee7222dc73e8d1c348b72c2fe05489ab23c3669967b0c110ad2750dbfe5c3dc085f926f6f081dc3903a430d27a318ad02543cbc01108305a92860989604ae59317308c88640ace007ecf7ac0c49b4850268cabfd82f5a49b38b47ea6a59194bbab83873f0e63e5cadf6cffbd6a2f2f1a74a86125907429b46cfe45d9285b0ccbe35961fd738df56987d7d010bd027f290cd7427b3535e40b87489d87d0aaaea23f2f15d7711b3edf73f5a62ca4ff2ba095207421acb3302f0672a67a8fcedb946c06018220e3b13247ef37f025f8a70c098f2daaf984c60cfd16fee5a1ef9148964799f77417d75633225cd11356f74af787642267afb6dc0de697984ffbca208496f696124a6f69ae8d9211b8d3eae1359cafc658c8a7e77609fec8a7e01d24484bc03a0ecb30a35e1131c21bc29ba6f95a704123d5252223499dbdc7dcf42928a14432c8be03511b12890c61b21bb3a937bd9d0bffeb32797015ef4b65d3075565f4852a9c9a4fbc05953213ea467015456f78e661d79618adec0ee5625cfbd549b4252433f42313b0bee5388f9358b2e7c18b6b4647a16d95c462bea80611139e40f03b19a306cd0ba4a7941690c5ac938c7ff4cf8d24fc985ab09ffa382a5d7593804272b8726d5a83d40288555d952fbe5e7de0f30353c8138a331e164adb01b6ebabdc93dffb7de38f9a9fadedeb737c42e2f955b5eaea43760c5ca68d57f7fd7aa144cd59e09ca7004667a5e98d2a08dd5d54fe760abd010fbd659b5e595ea32c7d0a856e300d9cd1be44fc40d3d7f4967194b03a1c14dd8a37ad3f1d769b478e2a7fe779978149094cf9139329305fc2fd1fa969af26164ecb5f911c49068b379aff5def21ef10d9616ba013af0d987200aa7e601a1103f6153cceac557aca844a9f72193b04961c6ec910975d722ba5f3453889c3956d89d47a694cc73f5f603cdca7d9fc0c4597ba61fa46483def09682b36af83b599df749b30133b56626d552a27a1e2c054d9c03231105d05ff4e880de0034760836797b801816bf3e2d7cc2e7793b18d1ca02e1419715adbb7671865d456e6d340f2d4fc44cff2f847b7f1a238d824725f25d6e5ba0908ba8d9ce93e80adf1f57e1e7c38f7570f6688b1f48dc3e5cc9ad8e16f02c0d0caaf47fab76e072f419a986b26d43f1217f658a779a85a2eb47930f487c4cb5fd9b0da2c58747159e77efdd814c6f7097fb25175cc30e2dba4160159bd08e30a9d87a5a6f13aa44c641803b67d85c0b8d3e1e90b5689297b75ed7332a3efccdc9eb4b683474cbd600e57532d1162a5e05d9ee50032618cee500f8d68c789d538212a8faa7849d763505bb549d59418769f14625f60c84d46a3d1e70204f4352ee1e248e4ad44f5646226b2fa4ab8dee37fa698c2f90c7a67e2ac5ce7bdc2f5029e1e3e027071e6da2b4d2a8cb2ee1d973d9841abaf6b78b6a73cb8a9347c452746802e87c76c7b630e8c5cf82fe4d534c932984137ab4f0e8c3475e0936dd7c5f0c7f994a15589e1b359a8dd075836b4ecd08cdaf979edfb25f305d7ae2f3de578c6402995f24147914494ad4539a6e13ac2f7c15d20e9c39ed7863fb1fb9651182127ae02b10b924fab864cb92bc59cf86e1bf822adbfb43e2c4c0106089931f6cadcbe63163d8937df4cbfd1d4f832610633effe907486e100f62c7e4ef43d59152364a7835f6b25a029aae8a6079cdac0fb1676319862686ab01533d0b453a6f964f000fd0c9a6ad8dc2a53659462bdee6c68108e68073021cb966fd2b9d0b1d7d95d8a35156ffd1ee5143f67bfeac287314af41dbac6d43b0ee9ffe60d675cabfbfbe3bea9e589c75f98581560d9747a89a419fcee2b288272f97c56a937a0c74fbe0a49f1da688e78cc7ce9f644a6524a2d1ce3a74ba6a48cb3894b4b54119d50ec9b4396f89f3e104e8dc5854d7f9a0ab96a9a63cb92d81be4ab91fc672def187611a0723d1065a922e9c052834a7b866b122424b3a94babd517e500525cf9c1643413ec0338d5b441ac647f385865bd09673e817efa8341f136a580c3d9a5b16e0e4e22d58191e76c6b65b5b628811cfb6eb73a334a1cc2fd61b4d8f05a40eeca232440e723652ddec19e4b88dfbe963f466534fb530879261d8e630a6667f5d5077ad737e644d32be90bea253272ba9ed83e1e97be93715a43abf00a17e47b69581baa97e2f7aa091fbf766d291565ddd5d60d6b24278522a8231acdc221a05ab5a072fe47518697259354e2bd7ba64bd10592a3701ae4fea3d53511767b703881f65ab9e8d55e78c4635e804aaa49f1cb97a1abdddf42da20a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439d04d48ef85dcb950a22a18e4c9de49916a2d50afec615ae8adcc52439a580aa53e6511fce6806ed76aa38b960118662c2f8bb408f3d5802d202fb6a7c29c387b322daf8c90e9a6ad51c497b2809e4fd39c043d9d03c48b01e12097341a3cb46aef5d1e63664751b9d633527e69deab910b4b9e2b1f165bd1a9fb1737e4d28c3e046b55322051e62eb8eb24ea938293925cc0a8f7f0807e3a8cee7b39ce553904f38060901fbae200f927f72a3a0381c7b2d0628cc8a6d28fd37e8eebbe56b95c59e9a82e3866327ef8c57248d8f5d295c538b09208ecc866dbae0026bd70410faadb1bc98e5d327e6312483a893144e27f1548f1db5d174901af4de3569ce2e0a200c220f7d62a5d8d6e3ee11ad2d50ff937bd92ba79c154aacd515b728eebc847fca7064e1e1b4e8030047a658a0f360ac5c896f7172f91812ebe6cfa1c0635131b87dae798da1da075c8190151b36031663d0a60a0cf01d060974bfe96667c5bdb97a545e388d75f5a47db72584844ce1a21b346376fcde65772bfaf9272eadd89d337a46934c7c3deb0bdef6be7d7f0669ca2b035933053f0f99139c108d81807cefcbb48f8cb5cbbce7b77b00faa61cb7cf38a3a669b695578d5831d763bcdab476f4854bd3025f9b0acdc5b3576e9094fdd81e7de6c3c0f1c2eb082dd820ccd9e9d3d2fe2559aa10766239c5dc324e8c820a6065170ca5700a21bbde8fb60d7265746b18b8ac758dd503902465c422ee00c380991f908daa32a4374f4f66df1cf5203833fd633df50487f56c57b6631867f1af8761a40d4bf068571d79957f29d79b44c97da8d943e455c57aa97d55d9b873474219be276ee76b82536d4b5e61d0ce5941dbdfbc34fcd8ead580b172f0a382b1153f8efdf0f857042f9417e2407d7027cce447801b4df090f597bb33f8edfdae2d8876ccbd4ff042565e86ef07ec91f46fb43ad29b25598b6bcf2e2d8e10ff2629a5bb5a30ff15fc7efbf57d07cb6589f796b7a98052aa238b1194f08688a012581fa3c26a5b5530ea9c5b380e6fa6f73e37a2e0ab71956b76339f4ca19e255dd356d5c1a84571e8e86f3376e87ad8af338c7f6568dcb43e6854b8dbd2bd8c0f022446f8b284a26fd41a2f8b6b738203d51514bfc7fa7f8fff155adeffe62cdafbb07e665a7f22d1f5e44d3748dc709a160eb5e3ab5f93ad0951bd02eb7661bdcfeeb7187dd6670ff4f0906c5c03a3c318eb09fac2ea0b5761375ef48d6e401d2abf6058353c6e5f95e2d73f29a48956207ca3a2466de30a5abf5d593b5e7e16dc36dc057855a10e13516ab28f8fb04fee6cda26f2aa6c35d3c16b730feebf1e25fffb07e52467529a5dc88f7d70627fda879896d341e0183a8cfde7bd5ae7fcc99b111c4e8b531665677b1c3160bd774ef6447c72d9cc92bfcf5091ac501427757f3ae5a0c2963ebd29a94db9d0cf28d2a37b82e704b178419bdeb06f1cc35128647917693b68b9885a49c8374bc56f5d8ced568da017a4e0700ff0adaa3c97025b352eaa82236ee8d8f3be16ef8506891f13ce2f6a9d717dd9e0563dfd04d3ba24731f03c95b0e421d30951f1df9566dac794d58cec0376aaa06084b769d92fb7e1fe909eea240b70b47c0e0f2d02fbde5cb85ce9c162edd47db41e2bce691d5d61a0980b1b183cd320b8408e00e99285608751c936c8379ea62397784cf30f70830d742487664a00edab40c321c048dad4ae2f4d94ee79ed69aa1fe7a184ccbe6036360780aaf40efbbe305de92427704318e17fe44211def88a32d2f78f77418f1255b4f5dd282652aac582f30b05138cb7ef4ce46f0dd4afc0d273645fbb6aa19d32d1ba8961756648f944d2792fd23e71f20fd8224324ccb336bc2e1cd6bf12e7fa103cc70420f0ec397df80d16cf58144f7568d4ee71682cb41dcda71c686f4bb017ce800fc254f613e907729633cc686947c839cba4ed632c6f8a53c1ca71b213b6256549c3e7090fccec7d459332ea1aef7f047cab7271a02f7a654b539428956833ebbcf77b48e8514bf5824a346ba6de0af7c995539512a75875fd16007946c79fb73f9b9ebe14142244a2ebe5a95401cb4890effc2b2831daa0109bc4ac2e8080e272d242f75b343d0c1be4c5f30e8d8f074e2915a8a5a1933a7211074ef340ba2799baa2a3fb79cfa96f6e367c958a61721012c413fbbf461404ae8e94b4eb79c05d6eed280994f5146bd9fd66f4197a9ea727f73dfe8a3d7bbd54622f3a6000eafc9bb2212a65b8cc4957c95cb58386411b06195d500c165716db24a794d7c71c9de9cb90e2da9a38e081faebe171dc6e8ec9f048f363f8096a1724e9572e3553219fcc12e457de696098cb21852a2f1c8aa84415e5aa61023ec3a6c23ff87f8e4209a88c01341f1f1e2297cc95892e5850000662f53bbb333fe8d0be3ef0f26e89b32cc7d0c3699620c394d53f4a30cc35ac2ee8c00f646f2d12881d658466b7535ba454eb3b3145435d7e7501c3a73de24e3e6060fd98f69ac85e36c986102de9383cc11fe2760720096d470aa48328bbaa323e084cdbdb41e65e136c710100d486d3563e6f1bc43e41ede69b0d29cf7930019527991b886672b6b06eabc6ea27ec67ff6a98d2d04b9c6af132a6818ce74526b82494349e5db9579ad80f84627eb1d8905336424b65a35924882b8bb64bd33a9d532c0db13887472f66e91ee31bcc95055c8b3454b01c5ce6181e5b5302d5e20826b4d8db9504d9d049fd30e4cd679640415d7ae5b16c28b441045556ec7b79159bf5047681b9e62a3bb9d1e0700c2f7fc8c339b904388d54a0f4a34f6743e5e1477e31699373e4f7f9d36f1921d4d69a12cd7f8883bcaaabb2d6e6b4603ccb813c6da89a485336800254a0fafdf5c1d264c5d27cb2317f9d838c571c07394facbf8ff806d347bad37745477f3a96c7e1c009fd85c4dd770f7075a85ca1b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d67f6704254792635555fda075f3d8b0e373444d859b085696223b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7918efd67d61bda2c547048c3783de07ec1c4d463600946ad795a1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9968b2ba38160ea274985a470b0207c26a78014895c729f80f3235e0011760c56e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3fdbe86f468c9a373e97e5b50d165dca5820121f9ecb979b361702d9b0151eaf44c8270cee\"\n}\n],\n\"handshake_hash\": \"4d9eb7629347c0f4d743d9349ff94993865fb6a5124dc1362b2ec58f99180e6ef5160ac51b9fc0a3744c4ba40f4291fb8e55f7f07f02030de00ef69c3ae427bc\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e7ca6f650b9b1b81f0f51fe4f4dd66f793f3d34d84635adc550e25b2e1c7e7eed441a3ecffcfdea15180e873d8395a93dd94f51a973d5f6081ee4213d3ab043e1ead867a28184fec88bdc90f5a52d8bc8c9612e9ceb212bdf8a37983eca7dc42c9ba0cda53140102db319225b85840f707e4abd22f3beb7cf3a0a9f5ccb1e0d81cf81be3107a583f9eaedf830ae14def0e5954f24ecd6aa22805122af255bea1adc338676f07580a7469c5369f3344ccc864442a80eb2fd943aac5e628cea214c8d5af47745bfabf81d5b6047f0e72c74c1f97283d30cd5d511311c7d37ce34907e6df8a9caf15e4adcab02129b71e7fbf6e48824f0efa627ec1369d6b528ee301dfee6afa3f51e092359a1b9a93d656e56c5885b87e38eeb43d88c535ff45252521f5861b043dae661419d258574124387bc2d32ff95ca258ae42edd3e8ed283b4828d17fc393e347f6b350bab7f48ae2a09187a8257c102aa3060747f12ab18c490e4b7a20b87aa26d4fcd8484f12fae5547f37154c28ed4b3037be32ae40c40ba538ff7a5ac60536ff5d6f6024ec5a51e2a216a3e2be1752d0525f7ce05cb763666b0f6e56ffc70f5e2b53c66bfd710107869397f729d4bf4c5741a32cb2d934c4fa49e7746b520596422fb0d368bb835cd04efda966b71ec93095a610d0cb8d6ef6b8a809437a11c055f265ca3d7196857d5e6db3e55d213feaaa99e9f69d68d4593eb69b0cef7f5c52e126e3d7a243bb3089f200c4d4fe7ee40ca792a1d2493bc5c8eaae3b1a70410ec940f55977dba90a7cc0eeb17b419bb98bb061158aa7ccae6c14657697df57386422b55983935fee8064cd9f478a96f523d50f4fb5a5aa77193d954c0ced002f22c9c058810088ec4052c812e5d7682992ae6c1d17d7cc470dc876288f4cb9f85903708be43fb920ed5cbc3f774deb8f1bf0c2a1ab2a812e55ebf36090a76ca8d0f35a08e2fec2a0080d8149baddb1b7b68270b868ccb5c18cb3e57b3bac5eae122ddf2f21c924744f00ae857336fe8fe0a6979b3e4e3ea4c67effd37fd77684fdb947f1830adc93975690bd558f55bae5f843827f8b8fc50c3ed944d5588d06d8cd0506f3cdb3e19cf221aaf57a5a99ce8c86c5040606838d137d5c303eecbfc6acd1d4d589c4d8a20028ce6e9eb60e96ceedb16674fdfbfb8cb594ac90e8c42aba1f0773c88edbe6572ec4fc5b2656593332f5240864732efc95c3edc541901571058d781073a0087e56540aeac80d96c78cd1662250f4ac8faa432001e7cd549437128cc2be85de66c7e6aec0adc5eda87ce785269118ad246f5806c8ddff81c7d33d7e1b4bfadd3349a92129d477af7df6f9a47cd5301fef02e81cef8ceff87221f458a5f342eff8cf33d6b629107bb2e9471b5cc9e520bc6ed52b64fc78a74ca9099430a97ca8311d09a56300cd09c3aec5f2f587dd2459e8d5dbaa71a37119613ad43b9e39e9591ac73a8ecfdd6edf6dd84f77edc038b26b029e8902c24bac3567d5cf39ed9d72119ab138bf08f74f9cbf877e0d6e4492aa44fa4612ddf431119173f95d81bb5c22813ba340165d13e39a74248e74f76f871aa94859cb45c9a4e56badda9b43cd7756654370a41919dce5903ecdd4f818a96c4aa9fb49d58403a42c37924e0e7960753c6d089cfde7b94c70ad8228cca820b8f25962c9b04c31920558648316504750c723ad43ef3dd362eab6d47b6613b80528df5fd597bbf89e91ec74f8e95cd84a36efffca5945f8285d5aac4f13d92d62926b74033b471e6b31c4fe84815a704a4e96ca2fabc044fa5c73450605cf2fabd7cab3f6d848ea4ac0043e9c71dcb88435090a91db59addf091922529016ead38c1076f1f269fd612f54f8ad699fbe39c1230ef4551b0fcba109a1c089da77f0380f396934725e8a950c3a7a8b192ab6cb735a2708bbac6fa67fbdcc37c70181bdae09431c9aac5f3fb7e19ed467783ff66dc8902eadb643744736539751e45841c10aa4241181ad43a389bba2b170c57c60753b3088af40a73ca6a993eccc06a1401cbe7ada58b7a191c1f2b1874f769136b1014bf871360dba3fa7accd4c074726e64448a69f1ab1533a6ad59e5e539c1ee83979c876c2f227fcaa196297791682544f1271e0b4290a3ffaa7d812fefb135504e4d2ac96c614336cf510f2d00ef7f50718158c32f3f14b34dda0275cf0b83f60066262c013fab9de2b3b62872014703a66c0b34227e2dcb884bcc321f402c82ee66b6f408d8ac051e60bd733b388a9b7f43a1cac6a859f70f7d62e81acf062f6a30c6edbe722870af1d98a7f689747764d98c58fc1ba008e446eba40cbc6d2c0f0c1be82d7199f5c0d2d1b932f7c951cd8ff5dccbec0cd03a0d2c9e9bba967eae32362f23f56f0969a40320323696e5cb9580975baed7b0214d159ab07cc9fce05cb41cd088514f65917e9ea08d2479f24133bd65ac93c6904944923d0b0e027c319a754ca279f7ee5569a437a3e37d1b65db15bb1480109fba92f9ede860c05446a848b969fda914f16dd6e780f83f07f1bfc15b128b3f4fc429121174fc7d0fd2b90c5a795ea3c0e4e318840b1a1227ca9fd5976dcd4c07e57555f63267cdecd8d62d5a84d02e2979d22e31f76be2e5e0cdcc34\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436810f7d21ecfdfc72a0a9f9c42e52c75470a4478bdeab585bc58800a8317bf330501887c9ec240e09edc071b68f9cc0ef18e10077abb297167dad76f8cda841af190fae6f4bf2a9e6bd68a5facfd3b55853404af9ce8c7f3c3db124866c1e667564bb9e3357561cac4f9cc2e0a9efb6bb6c2c04bc4d21f7a39d95e7bef5500790e619777c506f6577b54805756941a00010b3cf60689d8eb4d3de77d6760e9616ec709c7d4674e52cb6e7cd69d437897436a82d52d1c877499fae9f2b3182261d6febdd12103e955c6002c33a768d61390b291d5c170f7efe1cee624f9600f9db88b33594359c56d37fa50f1a1c71c514948d4239aa856ee355228107841ae1db2e0937a3fa7052611072c58ffa0a75098d9de67137f1e17755956aa23d708a2e7a01b1f9f2c5b8bea509f6e560e23ca2901dee092f1d77dd556ce7a733c07f2fa551b9283d3a0e4d1efa2ae9205880d2a1a126119d59bcb7172ffbfb5c5e880f253ec1d4b3cb3f6eaac3b716b5f6e5f07cfe3a885deb1da193cb2f6b3efa381bd988e689f0dfab6268a3405de5c88200d14a00de91469261939f3f6a1d849e594136042a0f79d9701ab6cc29adb743ae5a8fb661e281983f8544d56b597697cd091eb877145cdcd9bee1515b4b65be394e400c079437334d4c531d1e91068569c0aff92fb428637cb63f2120d8055a3c3b4933b28bd48e9a97cd978b88f3eda7f83554361f1595dabb9a15e5d65026d8416d8caacbe2128ac862d77482a2d4f3903bee6e7e084387790754faa80e4c57bb5771f79e1956a622e6ad22f72363cb0f928f755c39a4c1e1c26a7eedfc4c36c277e32da248171db4a219e42c509125bac6c2ac22f92ef24e185f0a14d14c34d8c620250f574d955b7568cc0bb6446997600fdb4f041e4a5c53e65ac2bac7f27eccdedfdb9197d0b84362baff581c0ee36127194a50f334cb8573867fe6f39916dec28306be14c71f7458f7435e4e29d0abe1e6832c236b060b10584051a82f29afb0f14d4dfb849c1441ba07ea1eedc52ae5c015b556b4b7368f19be20879d2b424e8afb3d242b5153d8fb43d96b7d74d50da79a232287fada98279295b9ee74be3e5fb2e30c4b250d684bea6bddca4403d91a7d250ce6b2d736bb212b7e6e0924c2da3cb817b71f834fef1af44b17cbbed1d388b9037f7998529ecf7f64e92aa52f19dba6f640284781a22a5310d854c0685f496806ac4b7627196dd981314bd1e4b5f92887b0500d3e72aa6bf67b538cf1f15b6fdcfdefcdecd9607a050e66b42534ab8d53ea9873f2bfb7625d991f0a0aabff57c8121e0229ac66a6dde7e87d324bb4a15fff88ed7b86092c87d6b6d71a27199314f144ab7a6bcf1b2bd4a0e34d3405053a9c548c7a0646c4cb86fb036100c2e208af411c495de2313213739a3a8e4d1aa0381d3968a11c5135ac75d5f00974a12bdf2ecd89e69d201aff13e1fedf4d13fdb71910cabcea03a3ca01c052753a28cfd46aca936b45ca810d32c784e38e4f82fa29f1de24133e6cb67a50dda1186439dbb1e95d685ad15705c2eed81a97d72e58f431682c278637165c785283492708456ef37be740cda597ce945c20d53f0e6445e1bfff367393ba49237989d0276d10dec4dba250af80948608548a1ec4880e9575800dfba688fbb58499bc3ad553621c6f962c8462f3d4e875925e478a123d5f98be68be9a58c387f4d4e845f6242a05222047bce68dc006e21132c2ae7cd4acc46ab4de2678de8c585f4b4ce060e26154a098ca2b1e013a2511480a2c652c757030bee7b2534a3804028d8735bcedd294262b7fcca3d14797e137f8eca5a9e46505778209d3173866eab85ba6b8f7550990b9b013022b8e47a7cbb3f3ac15e8c6894eb5e2e0880050d13587a30ddeb7cc2e163e2a67a3fde52226a3699a2ac567f3f1510141f397468abb442b0feff19c7b7201449fdb24d7909a91b261177433d13af33ebd9031767f551d37069b1784d0b56287d606738c74b4dc861b74030a5f745d44817e1b09da891494812fcc83007e6280708b934de4386d14aa5b217e61338d0a03927e8861b07f1737a5f3bc4daa530b69eb2fddbcb97dfda77e7d91d0cf3808ce95d4e2601c3db83cf23f17f10ad6ff4996f7ae04b2e44cb37213f96c7b9deb1b6b2a37e360e7e253d141470282287785c72ac705e9b001d20d237cd59a0366dfc06c7df081c6011bf3a586037fc47560c10ead29a847a8b3b2dd53c0f128e429a5f3778d2d150b8808c5a1656ad30dea4aa8ad9199f4f7d2663f4cd9a3e53f7c33cd85b1b39ea3daf47daa7a808cb60c0b57b250309a2e393f26345fbf209ad6a5fca2262fa95874c53badf3c3a8e5c1a425bb0afbe148254cda90c9ff4bf283391b101621bd908c913416fed4af295166fe06ba134bd66a262918a6c99dc144fa9f1b9e0f21e8810ad2807a5a9bd7368d2a545fc6c9d0d84c4ddb8ade08a2a3515fd887837120b13b57c17bdca10f97193a3807383cc45653076e9562d703fac184ccbbd6dbb99b241603c824bb7f1d8903f09c889f9ba0ceb4b315211fe8424945b0526e98f45e6695669dc5c74970c6439bc895092192f29d05f7c27ebcdd56358999c9797f368ef9033a889c56dfd802589bca1853d01f8dc4d0b728b832e551bf30e1e0439cd67ba7b7192d022c65773fc41dc688ec43d8cfb6ebc69b7effb52b83da8e51bc4dddb2768267ab3c2c7301242576ad295b72b493581126f5c724bc48bae8c3120186859c293829c08ae139ab8f0d5dc91870c978fd626f1c9ced61c2f8882e7046ee08f8885a09dd4faad6acf5c6a1a28786b9572f4715c4a443ce834edaec15450e34ff0421e0f0ee376ba0ca776cf1dd1eaa4a4b3f1cc4d84dd8fb688394236594e91be14f89b765d3ca003c0e581c412e92249e030246cc76853679cc049c0c8060741efc275\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ef8dee46bbed9f5fff0f5b8ad02b4150d037aee34d22ea5406de80\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8d9086055638b9214c59476f594b6197b1de6060f1da014b70cb67\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bce21eee5b322c9ddec0e19e7d192c7f73c4ee40ad9bde9ed4d3e40d8043d90026\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"94344cbdb80b60eb313af8444662dac9a3fa7f78f982dc5c3a47260480afe5fc3934b520e5\"\n}\n],\n\"handshake_hash\": \"c4ab1fd48804043e7069cdc88d4b13e36199c9ff333d2743701a76e381553fb2\"\n},\n{\n\"name\": \"NoisePSK_NKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"NKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b40a9b6f4296d4efdbb419d1759381dd745ce771ff3f889e83b1b5a86d57c7ab4ac9eba32084fdcb5dbf778dbd64105e6daed16a1595a7c9416c838da5fb0fc4b48c0adf0bcb8591a84b4dc054d7a2ec699d887f1941e5b1ac0fa147a931b8ac15b2f6646d20103e9904cc1f7f84b84908c256bf08d3d30da25a0c1f55529ecc1e1b2c4cae532f63254ebcbcef3b3758d8bcb0b2df3c0c2569f409cf76d9eca4a42babdbe16df648b1a81bc2e6b12cf61f083f0647c161b962122443dcbddae3a876399662e0ef8f298d417693ccbb67fa99dcf5521f1aba2b1ecb3ccc0e994d5041aecf5f7da5cb89bf05c04c3a3eb7d013af4ac02c5157f02bb96c2b3a12b11c17575050e1e8546e85c4b5570191277ef227bb00ed5536947fdd349b652a367cd9ff9d31ff348cf751b95a5f41a2e0bfce007fff9bfc39e99d8e8664c6f5e517783b99e73b2e050d8c81149ec54771ea629800375730de8daf632b686bee8f9a07dc61a8d80a42a3bb8ef794dfe89b71fb4f3cb9e0af8d261d00b0054e2d875ebc81b9aab82621c4a76f7dac262213190b9b285f7092b9c1e07520f3ddff9077995b6bdf5acc4b5fc64e34b0f281ba0687d4a5b388ca268d0455f2e0308c4beb131f3a62bfb738d3074061a40551ef97a266fd81788b2d37b35173333019ccf5bb1796468331bc95b0ecc1bb4fddf5000f42b0d38f69e1d0e1bb4d1e5843af034b147b8fc2c213a900c47d16cfcba2a94cf3c40c0b43f15a9a728c581ef10ce2356a5df8f711fd61d8c04bd4e93c838695803e32605b049a5eab5422cdb26d4ecb30387a5754d21fb058cded9ec5b209d251e0583973596ddabea47d9aba7ade1db5909b3230f32aa136b758a5a85afbae8c78aba1bd4dc7773617e97dce1184aa4b7d3a0cec7fa3db5ab8898cb841e93dc882abebd7b517876a037234e855554d9765f2819552f60f68e0da7bddb8e97601b0db0be22c19c37fbd36394633fea05ecb3b49ee8dc34de15a0147d7a1a5ab6670dcc06f950d9c4f05fb93138b10cad9d2bfb117fc057a8d6fb24fcd751c13fcf8fe75b268bce69029f9f044bf778d9bd17a6e8ad9ede91df70a06e317a2ffcffa56c7ddcbcf53dc383194906d56706d97d3d1836d80b444076dd0a4dbdbec96cdfad809feb1b91383b5dde427e00f05255b6382fb067fdfe031588a6ccf86ece7e45b1ad2a85d81dd42c755fc18c7eeddf0dfe07dc5d9f5c9722277a519fc6a2a5d9d9f5a8358e687e826f11f1856b72e11de1169cb8c33bdbb59de7a6d2cfd855ef6cbb46a24e548a118099fc3d0d73b91b44f4b3cc86943edc815c0021264c8cc04b27f65b64bcbd01c813d3106d6e1c4fd0d928384bd1ba52186efed24b61fcff72d961faca2db60983cd595d410442f5568d02c92410dd27f1c2bf9a61942313cc40be9de71e84221cbdf8db279776a255c1809ced14e628c56c06affdefd6a7ad58350d3e92c8217914f1e68709fada96e86f43f2d4dde6d54bc9d95f0564c8631c2ef452cad8f3b3c8b26b7aa786a5759d97f6b12e2e1287bd34308bd8fa4188fccf872cf18e2223a32e4e7c3d22b9385241f1cdb996fa32ab21457978dbd93babcfc41c13daf6f5edf2d97c06ff10794b95cbee4a2394a76581e0985f65841f746b67f0dc988e79acb86fc09930432d9468ddbc7ea3e75c6f8450c783ab2655fb219760249e4d978acd5964c3c69998de472a56eb8b0b6e5707f7df26d7c6e31dcb76e55ecce9a8f3a5a99abc542f7b2cd161d13924e3fb9b2383459c0bf3faea1574a6aeb1d3b59be7d3612740af94f6aeedaeada9549539a39b08f442eb02e88f6d21f8b2937e849036c9b49892c6407c189da2b5e939b5cb5c42accc60bbfe675c69536300d39b80d33fb298ba1fd1f45e70aec1806b51179922aa5285b5da620f9b3c0f27865864f96ea0618ee319ef120536f6df73d15edbb6c3fe68ecf5bbb0e8a511a6c06af475961171dddd16eb3ee6cb1e78cabc3fe5c72a5611cdbddf340e2ffda789efb6adfe6289c53075878d29eb425243eff7ec35007244291b815b7ef15f12f7bdaea70f815aa2dd1d79d0c3c534bf2deef79c318dbd57189252dfd896c6df51da8ad3be70593fcb5ecdfb2b3cc74c9ae9bbb5a2262e0005ee2911459c580e312b1792b4d3c604501decf87a6464dd81890976b85885c23f767d4acf8c0bd0d81cd28ef8f4c68bfeb6735b04e38075c519b541a28fe6f20b0ab057ecb19d51424a5fba6809e32f64464dad9fd2158f3576753623bb86b7efae0d8e8ea1ca6fdb2fceb540857c38dfa09f570c86acda0d3e099e15d641c10bc21a543095cba91a4f5519ce8effaf7182d3b3bd93ccf8b134c2e162a647c056d522aa69ea5ef8c8504aeceaea3ae70402db2bffe55dba7f20003f14dbd487fcb37de211a37f04aa307a0871de82eea441b645f88c7af077a4d5e189188b1eb85e5a90e3d91e35bca90739dd45ed3a0e8106aa111d6d83f3e975282b21445748a1508a32e4eed3645fbea241b17c9a72291bc1a2f432dc064ea5bf5c6f3337b3efb199e031a3c99cbe7f59f128fa8db6214fe6d73829f4d2cff424c61a6f5e84f0b341a1e9be7f5e1d0931f66072096115a33a1ecad8c5a98d2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433ada85837217dc2f4d4b44dc021fb48360a22445ed51fb4b38aba8f41537b2a545af2b79dda6a46176a73b0b45f62d60e3e2438dc7eec82326265bad309e702ee7953e7d1e994de9ad6df72f76c47300642c33de0312b8473db965ff4c98e7a766a24f5de948bc10a9020d0c7f8379d16a89fa9dee6df19920d3c72186c25749ff44c84c5f33c9cd915490e130015214d2e9b87251462240a82c9caf76b23f653131dfa21c0fea3a183c6d7665099a5ee58e193f79f65f6210bfd6cc548b045bf23c2a389d1ce422aa7614d5915fa61fcb235f0a2243dc360bea61976475851b9dca51a64eb88071d8b8ef962c7f3083f4230de57db1fd971f8e3e044f4d8759a3ba3ddf47783d44b3814d0b8e73caed0f617dcdd398db7ec818f3de9083169baf7f74d13c6c8c217c278dddf71d536fb74268ba605ac570a4a09228cc0bf71c42496039a4f4b457de1e23f18521996586c15ed3a6cc5022f5a934abb8a28545549ec46e6c91bbc41c74c54ad22c248df427738c64041e2695a296350ba4f098e90ad96fb6f537d084356018398b33537ba8a3bc6cc3562e34f894740f7a8e41876e88aa26d46de04b92384b228fa94adf066bb6884a14ee3e7e6155801777b1ed0869dc1dd08d0e48cd2df8befe16f46fb29eb6aec53ad39b4e8adac8033b074ae90cbc647407f1387e2b62a8993b4d78f64d7b5d0656258030917d4cf31280fe6389b6161c7e21bf377442ab6308aa683d5766dcfd7a0007af15f086f7d42bb70782c014f30890308823b9eba627f926bec42ef9c82460e7c50930f6514b8dc25087c3f15e9c7bc9999eef8ac05b2f4beb4a47884f6e6a0463d07f26e04017bf04c428cd111ddc981a4cac07a6786480c050d4362a32e3c759c2f4289c22fb0babb10977f6001ca8b1688f355f5651eb68992a51c1f8c17f04ca7ad038b2f8bb92ac9a3e3bd7450789a6e813defa3c4a689f3f360d245ba271354f79e0d0ed5deec9c1424cfccfffaab6c9427651efcc893e3cdbfe88b9c736460b1230d0678476aee7b4111ff2b1cb424df600ed2dec11cbec5cc46b81981488c2ba32c8f602c90cc50fedabd52ea8f94fd88fe18074fe6d573db39a7b1cba5fb15d0059dcb0bf5bf08b1e17b90c6815b910a0cddd8e2a362c629587dfd306cf068a552aa4d298916e0d120a55e28baac76e92754eab89e988b193dcff5e6bdf856c4cb55805f60bba8b5ae700577e048ae8cfece5fc9d10010569a652ac6be1963d6bf5d09f694facb25c6323fd68d920acb96b74c1e82148774df9dbd4c5a565b828377721ce22794ca7a7ab9d7aa3723d6eaed975ece45df12b7c9fab2e2c37af9adbbd5c6ca89a4ef45da9f989ef9ea0bbaac7c5956e805d82a445f7376e5cc0b67087952caf552c45b2dff134589fc6efaf316fbf8a7804104726fa24f6cd362d01b07fb6a57bceae2407695a4ece7af825a27bc19d31be048c16f30007cb3493c9a3efe0800eefa3e191fd95221c42ed8ffe070fe99234219a350a49e9121174a7b0fea5a5b32545be8b717babb35f48992a39aee6a868cc461804d787ab3b30d1fac52e54ea2392b0da24a98ecadb121f957a45dd84ec6ad6f24c9529b88c438674bf9073c07f86d85f209f70bafe5e30372c0ff9d41e917e961e47fac5f9c3b266d66fa55db80ab09020a3207429b95fc87ebcf7acb6d515900f600ee54ca2183bc42c5574a5bc74fab142484e53244cf1f811e7b2ddd0010aa10db73a7e22666022dc1b3087351d5bee95ba541da850de3df5d77daf58a18c20f8473093732b1faef895b0b50cb69fbc455a9c5ca3c915eff7a22455d24e9ce36af3cec1d10b05d3efa0730bce8270c5a187f3a8ea3e9d9b5c7499faf6f67a3c1ba36a11aab20e04ce73bd37b6b490387371df99f45acebf93f226a998d2d50c62c1b57ea12c1bb97315f07f08e3385341f65270f3e22b748473362d7100a163786a1b52f1236eda162a7d9d9aa6f27a4c6f4b868e853ae2bd62946e0f95446984f174176edfa20636a0231b7329e2e21f1175f9e55f900d2c3da7ae583406628357123bc21aff371f84edcd9e65e3135706dde2eb779618fd4a2e0b493849b7099c769cdfd1bc0c304bae14c647687cc4b8c028687f6a7c241d82f3314948e494f9978588edf61c5dc2448564bd4c239601c480930c6cbdcf9f1716c09cee2c484878df2f98ed20659cc0beb32d0eab889388679b9e69308f4c00c467a8b79a37434a334d05646bd04ec2aec931b91b0eaa37e4055ec3d586c1c902366a8dadadcbf2669da4bcccd1e10a811f1702ae14e742e166ce7a550caaa878ec1c7a6da191f692cad809893ea418e314c19fadc021f1ea1be963b635bd1c6170ad6dbb7ff05f3e1a39fdef3fabe7bbd40f3fb6d5494f2c4366ca68cd18226f6953f119e4ff5312de5a74aad567670f456cee9ddd0018f0433dd0c65cd6e55e965cba6840578b2cf04a6e8b35b9708acc8e7c8f0acb3c7ba326a4766a8221c1fc2d0151aab452abb59739cc24d444d42cdb7f42ceb3f7d49b459a3174692a4ae609e0d5e9ff9e4901d18e99afb9eb877d0e588a55013ca1d7e81d7c8cfbac5daf4289ea7966d00c35b2689ed8bd6742a31d0d8614d9e6968bb1f4224a42d797fb363a65174ae5b32204b4b26d4f64b8e6661001ba01d288c4a1070c1d6faaa420f71be37e447d71cfc9f45071855f906e03a464cfe22cd15fa90dda7371b3866787bbb05b54a8f87dea7406636df8225b414e165a1c3cde3501d14ab4706c556f9ec0ba03242c37e35f0aa3a453e24a853fedddc957f0c4f8119616771f24abb4ff61500f5eece9df63281b4585afc986e12b7f2f8dca520728fe46158a86b5c267ae4f574a27beaaeadbea662e031c18f6391339297382d6e9de6ab896ee6f1b468c63c3a4f135bf3a16770c26b5071a1b1b6221bef8715b0f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f9d659ea3953efbfc5395ec40c98748e6d075cd76b2e34c14d1771\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2b5c514abdf8f53313eeacf238a07b9501cf5ff4e5c949f03b6da2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bb7db8b33e7de9c3f94f4e62947d10324f5fd8eb3a916bfeb31b76fd64de520414\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"363eb458fcdd7d70a2f1bb1485c3c661492b0b5c3e579454be51ba45b9f74bda4077b88c74\"\n}\n],\n\"handshake_hash\": \"7464df36880d53c548eed6625fa9432e2d64678e4b40c21ef244744ecff949efa446f9489a7fd898e5ac7f78b3fbcc5f21f2dcf56d6a18df2b8d7ef14ec32156\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ddc8d0ab6842bb0baa414e77f9e7ace87552a1c72077acb8664c37b62e9ebe514afad4082d6c605344a8deabbcc9252a580886576af7f28e7f83119bd3e7179733aee27ee2d9f6b991e864c383dcb3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9c41f739b007221b325205faf2e2ffa3c843c2d769578f7bd5a9f7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"485a701fe3822cbe1008ba7211aa4b4ee7805fe146f1e5872358b7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c161ee6a013299853326f6b79572e1828c6061aeef55cae136d490bd679ea69077\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"93d4c5a1e890630484189a7e6e493304d85e78b2dfe97d1eadbf596dffdd425a84307bd86a\"\n}\n],\n\"handshake_hash\": \"04d5872625dca2b3f8717821394f96b51866cab9928b58b386a3f7c3625046a5\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a4a1b157715b92d478e1a6cf93c135a7388bbae797fd0d54a246e52f1e5720d09efbb4ebb38edb8d0261213b4f8f1197315fc8d116301b9b54fe41568178f70af073fc7df8b071b783552190cfbefd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d5c5c328aad5de00f8067ec48ea0aa3445217ee296aa9290f1717d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6884090ffff1aeb8907e1cefa7da44ee1df87a142e300d852c4120\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2df7cc80688fad79abadffc853259057069f31f1593dd2e5b48ba452b6c1f44795\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d43b69cc348d16b06f5b3a70bb543adc869bc9c27984ee69c52230a85d7f496d7358ce1994\"\n}\n],\n\"handshake_hash\": \"e8bf45124aa92ca6b7eb36a07c688990cea4acd3221fa82ce96c2d0c5259fe77706510490c836dd33e83bcf04fd343feede1f5bdba4f73fbc1d3645459669368\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65faee06da9d629d74f1c6d62b8d6a4b71e1a42fe32e67f85ff39f78bd803146e8b7cb3d05063e8a928a7f445627c5ed4c266d34614e3f2871e14638641f9d47f27063e8d22d82485d516f8b4830c464\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8985d188f02b5796abb69da177c1c9a75846932022471e2a67875b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2064558872aed6402fa9224939a8aec56638421f9ba5c3fd3fef1f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"51ab7299e9d997b2b188082fbd1e2701125b07a6b0a86e343183bd4d8cf399afca\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"33503c8dcca299ec89fe93623e78cb6ed6b55a86687f02830558f68e9f8a903e9263434312\"\n}\n],\n\"handshake_hash\": \"ae24cc2f15dba3febe63a676969de1409afac799f62958099e79f73b7a8c4f29\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65bf0d0578dbe09949934c6243b016fdf259f2dae5c1e411e42ee34bc8a961dee6aa8e534e97ea68ccc00443c652425f51e860ebe36a3020cc1d48111d374edb2431f1f6c38d3557d15a2ca9909363ee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ed735c53fcb82735cf5db1530d5870fff99d1f488ee84af6aadc40\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"409a2caef99786d9a30cf35c01497110e01a5e7d51b22fd9747556\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5389086a0b3c62f89c243061bffe7696d5a4da107003aea687f417100ab998c068\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d8195270b94ddc2d83f46e83386d2c4f6e28287cbf0842e62ce5d248bc5167c8bd80434aff\"\n}\n],\n\"handshake_hash\": \"d1f174983a9d14f9e48e3f40fa03353cb81e098bed16e3c3b4ee52598342c33ede470b47757e68a94b57fe3fdc6a95a8c15eefbc1cb02b1c84673ce037d78031\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e754c397f57050db66d02d1af26504f1d38927eeb5ece4b344da03659b8cbb45825e8392191ac002f3af88fe51223d4205d46926732dd8c1d5428bd746ca8304b98807e2146099495ddd748593a4ddc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc2a88f5ad32c740c1ed922c4ed2b6cd64c652afc81d9a3bc634a6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"90271ff567e4e47e36666ad807cfa570432cb978404b79f2548212\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"178fe6aeee5d2798077c99a7aa975e4f0a6658ea4a9a66c6415b8f44736ee62a3c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"430582b74747c902b6043c7566d02f8db217ce48eba096f4956d0c7a043f9dc03bf089578c\"\n}\n],\n\"handshake_hash\": \"cf72769c1836a46334eed4432e1c1d049b660b9fba654e79899cc19d71ecac5c\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e866890cdd7c2e39b7f42c62da9bb1817d8cc682f5e66c7f32ef5577c43ca701a25fe4070dd1a4b22869d441a86c4483b7ebc14fa6844e29a5512054c87cad58135bc14e4bc82b8ff7cf852610ff502\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7e690b519af67f4455d049f5900eaa6f98360cc06606fb5ebae637\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2011d1937f41ef3f7cf4c078262aa8a89ca3a048dd6e63a877c3ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa10beca331784b2e8992560d3525aa9ec536eef3ff8963f844f3c0dee7b3d7c05\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c610fb827e98e84f17f0962a88d604c73cc1ff63c4d3e95d82050ed34882695192173ac510\"\n}\n],\n\"handshake_hash\": \"2ab0cdc0557e49dc47db46d62bb4cb886395988fcf65ed8de63f9da2f6af6bc884823c20eb79b76d20a71ffcd66c3bbb7fc3b5a18075d3e8f951e78e1acae7ef\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e469543b591b384561fcae88bc42ad7970010157a64e592ee60a292bd913f08409db768a4592afe072408c578a2de3ab12e81032cd4b6878fea1ee400d64e4a46e71bee527b98525c1fb067d8aedd20\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"506c6c95b3b3a0627799293fa75f00830a4efc33f41a5a9c46d5a0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"41511bf2c6633da30019a8de550d555c11d2105abc710ac40533df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a43be70b9f861d21216dd236fec10d43e3d993326fd7e704a276aae663fb70704f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b67300e995f58c2364804b77c0876d138af5e99ae7b16edde4372cc356caeff13e886b3f48\"\n}\n],\n\"handshake_hash\": \"f7949ca4ca29c5e55634437733485b24ffa7c7ed72354771332d6ddc6a17aaa6\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27eb84861a62d7b96574a041b6c1e8867a08e02aedb23404845897d15d4edb39108b737af214784cd8090f7c610a049aaf9dc216aa4dbe4a83a3e8d7e4f49b2c8c3e719091ea21cad27e7d5091f4f5228\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a7552e697bc94472941eecbe13b7ce57d03bd177ddefb1c92ed86e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"548596d401ed74acd651254d07462e13a68b5627e9297ffe221ecd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4af58f8198e970c08027980a734424759c28a24edaaff56b1ee568e5fbf7742d90\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6012c0f72052ff60938bef28558995037265d1630a26127ffa66ec550bfc2673f6cc6fb72f\"\n}\n],\n\"handshake_hash\": \"33a56876c998cf6236f0b7506422c64feb58405b3af3fc135f9466a285ec0bcf8cad00e5ea1b95c42036e0af50a08dd6ec4cd58d4c7e1b51661308a409b8df02\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c5f0291cb7f095fbb65a0bf60818fc721e2f72f4b90ddd5b97b5163d640bcbf0d06762d299d11d249590e13d44e3302714d5b3e8717a48e892949b04798c64b0e16ca7391243699c22b0e9d53d8ad5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"74c10c2f62c7932ca9e8d0544a531aa1974f559838d60127583b18\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1f3bbc8b35666b8d2ba372f9c6668646206e21908097ca87f8eefe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d5fceb01e3f1f80c31e0be49243711c61ac2652ccbbaa8241e879f4f2e62a2a0e3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"03a9f6aaf9f68c3c2ce0e05dec874cea081343a4437dbcdf6d606bc0e3d2fbc8b025d26f24\"\n}\n],\n\"handshake_hash\": \"910e5170b27670dd832aaaea87229e4ca1acc01f1f572f9017cb3b04dc8be374\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65eb3925532dc2faf4b2d9750001abb6b7d5fb81d135a894a0330057cb1545d4e91fd8bb3545ba19582cc34c220a277d141472777403010707a216a266c43b33f816a7ce403581ceee6a86b171dacf12\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f6b898f41302d3d190c06f1f27cd708df507cbff916d06fca39888\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"691e29c84591196ed65c24348939b48b7f5a043642ab3736dd0a90\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b395bcdfd91619b647dc0db6ea316fb2d26ddef5e0255699c094ae465c7879b4ef\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d3f8e6e08397b0ebdd829894bb65eee389306de4b184dee8b1e38d80126f6cd4a3b8b71a42\"\n}\n],\n\"handshake_hash\": \"183bd7595fb0cd5bed6f984658a3e0fdc3f0bbe9baf254c666523e851fc764e404869354230b0489d1ab244fee0ce642ba72eb3cb0e6d994a611245c6778de03\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6589e463e184fda89e57a3927e4b47288b7b44b879ba861fc693dff62e6f161000670d62d2befb776fc84950d3f3904de65d2cf8a71f32134d4dd42354b1da3a9d18122d2d077be83753748d992099cf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5892df1d255747955b1c78dbc3534163c65fb920aa051d53666eb1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4e7ee4d4eb24ee45b6a5da0f4230479ec9c8e6717e1ef2d8a9b6cd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"65060a40d55e25332acdea084f94ae1abe07a60ee0bfa5dbeb279714f51abc1ad4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"189438d01024fdeb19e4faa2b1c562e71ed1604102d86360a4a20c915ef26a121cf95aa6d3\"\n}\n],\n\"handshake_hash\": \"b1bd0b6fb365e973ddbbc644d08313003ba846d6d89b5d5b13400b10eb9f82b8\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6594aea6126eecc346142e99e594c6fa9492408a23bca214bc578a8618f1e86e730ff1a7f93f7325b7feef23898009aae3d89a07b5f97a4d2fb03f8d29130b00f5cef0ebf53df39098280a8f1f683209\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5a8c1899883a229b2cab4711e4a13c91f79bee6be7dc2a6fbbe605\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db83d2015b893cb08653692d70c9526c1b5f3ff20de0044637a0e2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6d643566e4eefe4f74981e28bcad6923743a39432c5022b65214a0342cff6b8581\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"113fca0742d1fa1795d2f2b4bd64a0b285d0a8b281b1f131c9e1c635b15a6eb0754ab3a408\"\n}\n],\n\"handshake_hash\": \"50f26bd042bd8d27025dfd54049a251602d61a47d4fe26ceac092eb88a3dfd3378cdc29a5713129c1630034739995f3351a40217dfcd5341ac178908256e711d\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e8bcc9caa6002087d7896d57f6c3fd377f8d9cbc94d7b0002df3aa392618986c17515e524284b7cd611625efde0f87821bae607c565433f74ad2652e6d12a654bf0406e1d1c9b38dd671ab6cd62b082\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a6cbbe75705c8cf2bbea7bb9d41e0f4239ac693fd3e43ec9e799a6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"30c426f5402c1d1b068e793f7df9d3b4c5b2913ff5afb3f410f576\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"550d5742237caba18a721d567864031069f4b75845b0ceda3b1c727bed09502f95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4baf960ec8619435062b67b125e6f4210364c2deb37f6835061aa19ead324f89b337adffaf\"\n}\n],\n\"handshake_hash\": \"9892252ed855cfdebf17f2e2e35d2fd7180126edf9e62414858247372a927d7f\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ed66813447b44c207de3d573bfc42543a8425af81659739f5475f76e7f7b62d43204cc3a0d5d4eba0d57984a4e7e6dac2cac2b6bc6e9346d68958012f44e2a4aa0b2cfefb4fcfcab3ae93b925f9f31d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d1a44119895afbc3d286b28aa9fcf55038db7139a739378c2e6d12\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"94f2482e3b947253c966927cb078e9e181448bed5d4886a0a3693d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"62e50c59be7203a9d422d41a3c662d8ee31f3bb48f91631578fe68169559cc7f06\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"89aa0236ef916e0cc4bd791263d7cdec1b1c66929e0d28ea42cfb64c95c83ed560d190b8f0\"\n}\n],\n\"handshake_hash\": \"b484104a344f6c7c5ddadbfc8b83355b00455637b5e0b4d1ce139b507e491968dab158c044f334f4025aad84e88cbe8165b017dea075f0e37097129db1363244\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ed24412976c74f6f76b263481aa2bef4e1a0b4939826fb91e7dfd9b6b85e5542e0220b1a07015b64149dd629ff8627092fead894b11e60d05c19061cbf156a004fa1a4f57c3c7be870f1aa800344bf1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3681fdbdbfa02ae26d0128fa1524501fa12473d4d67efad54bcdde\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"36e0b9932932f74b5502f839521042ce26c36f0d585c166e9955ca\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"165ffceb89809d215a21158a545137a7124a8033d033ac819181345820279fd134\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3cdb4c82d04903b5206f8bae179d7dca7ac0d83750da1b8f41d77690ff8babd84cd017b724\"\n}\n],\n\"handshake_hash\": \"33ee2ec75bb1b688fa4d10fcf8e8a4874781e07c115e9d7103aebf0cd14b363c\"\n},\n{\n\"name\": \"Noise_NXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e87cd5a0c95bff4fe9bdf89e811c1890fca41edb71933757d526c2ffc8a2aeb64eebdac99497bb2a7620ace5fc0736ff719d70163c434a98230f308583dd6f22a4289c19e19c627d06635ef831f7898\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"65c5f2c0a0464ee3ec20455622a7b6407065e2028458e3529fec0e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dfc55e790b906b616c46db27a52652b694a328a079f36e25b85937\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ad290fee19489e8806d2c3c53c819627cc759b858275d4ee1187aa338e03d916ae\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8ca21252ee6f3d0349b04db030ff10cbe148b08eb3d1379101d89aaccdd89055a910283eee\"\n}\n],\n\"handshake_hash\": \"8e37369162cfa1069f94bf386f09a8c274d302db6822e4458ca90aabbdbe032300617b12d4a295ed54ae815e0dea7b6dc0e64c5dc2a8b15e8a3233c3adbc2a9a\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442406c4e988fdd08f3e6097b422f5fa0aefaf737fe540387ad7887c349f9ef5553b78f89a8d354290955a72075bcac113591b7bfcff23dd92ad38919a87d5f7143e925e7ca112bc2d052817996b3eb4b1458256392020f8c387040be0723112d1d22a2d81983bceff\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884304053ceb58ded4d2880d9931c272e5ba978fd03574a71b698cc855dd5084d573539acce6263066c08130400817bb7a0b8f8cad4d1a520fd4dc6fc0f00acaeb657e713240d47bdb5412933989f880b3078853f78bafb5a8420bc66ef72884093eb0e4c0e803abc294341eda0fd66ae5e28106d5882fae0ddbb3e9d92160f643aeba9ea7db0cbaff01fcb2e2b63231a283eef3419ef53790\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cb73e8e0e8511d8df9c196c7c5cded5b9b5fc79ab46612021dc62c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5edacfc0a0c59c050cc81fc2053fc7d5db8673a94c0d1b9ac2f91c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a60c4165cc615bd98335c8261d257e8ee239c7679a5fbeacd890ea76d2d1a6d802\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"64e7ff5de0cea85b4c8c914b32422ed9f2eb5aa88783c3dbaee771211d6346bfd52a506332\"\n}\n],\n\"handshake_hash\": \"96c99d9499251d9c86255d6bbdfa2740cf065b74729f7f5e2e0cd7a4d3c0f624\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cac3a0810c231533ac5889241044e5f4bc3b9483bdec1135a8d6e03e9e4195b0f2441ac14233022b27cf1044f1e7d095eaaf15b782062efdf3dc951076b75411b14c630374bd6261d02cebdfc6e4e30404d8e48f4b0f8ac0e2d7b1dc330057377e2990fc97535985\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b5642fcdc8142da8916e0a91d055152bc1874b5a290a4ecf30cabfa24d7b1b5c287c108daf87ee7c6265bc85f0543ef6d6a1eb89da65e7adb28e352718c48c848f7d4ac78e106399f4d2dbe4e1edad896194a63ecd16e95a5cf31202646585c10250a805241c7ee991721156262fc4a5a00b29f8a4bb9c915ec3161c373fc953edded6f8825263c571e01afd1e7fcb347581b7635c5ba9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8ce2880836c35b875e9dd7768cc11f870e183732a8e52a1c614cfa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3f27249c89e19fdcdb6216bd4070cfceccb2962d576bd6c065611b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"961383f5b67571e1afef90fec25e602802b6b27987af374dc77b6e96444ba0b98c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5e239c6dc8ae601e1d6ce47360d2fcffb7aef5fd09aa38cfbd00f644b192f33a2816d937fe\"\n}\n],\n\"handshake_hash\": \"ac1ba980410d115a0f026989dde30d8320368ec81a7821fc957b3a56d86354696be10cf28b074a662951dca751411f4f299fb6b00e93d79b280e5719034df4b7\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ea33d749cc551b37627b1ae3726cb64aff7f333d88fe67db1e9813ed353f4f1f2fea9d9bb491712109ae279ee4dd5a11cd56d4a0f45abec18716d1af9a252dba4ed52c5f2db897d9729b977794edc6db6d76bfdbf981e41e56e4f6fa03238d4b55284ab7659a9cfd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843025a868207a4146ebf0c294a4ab3d5f3cf220ea68e421ce9c93eb3efbcb72ef3ec91af5dc010c34da5c4cecc67bf15e4789b0234866aafd616bfe2f89e85f4992dd1dce7676527ed3079d8cc05d5e0103e2a91ce07e87e5f102e2d3126f6ebc553865750e1409e79b30fee36654b1e34667b789fc0461f91e59185d3084603397d4fe7f747f886790e2451fa571bce99914cda3fb8148c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"73b08ede872d34755f58ca09f45e6bb9946425e414c569d1591a7f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"81d11d8c3a7ac10cf3894df8525c9777cc4fae161f4efcb6a92ab7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"92999a73ab596fc8ff4b1d76b5371ac0b4e07133ee3dcd6db3cdc21c3bfc70d967\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"de65a32a46573e96c9aa4eecea95460384acb8fcb398c3a5ea0df78c9fac8381d787afa1ce\"\n}\n],\n\"handshake_hash\": \"819c433af147dba7d0d89c6eb8053deb22593d9e958f14e0ad77d7c83bdddbd2\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446f4890b5c5dfa42fd853169b6015e528fd7ed9e1c7ee6c20158f42d9303e99421cfca17dc8ea9cb6f30e4f42f8759be9823f82e84075991ed1a8a94b20b0b32bc6beb7465e4741844e83de2974396c5b6dea5c07810eb2f149e37b8a42750d2fc18aef79df47917c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439991100d1c9d9451911c2afbd17b6d7517f2bce4503ba8cd5a38a01ff74858ff547871c7d2c9c1b82e8178420d2b0dcf1d8e2bf4d6bd9826a507c6fb5b275904e3a30f41ea60a87b1e972e661150a4257a4e4c07ab1233fd9f2d7b0d43bb65bfe577d9d519f385477f2602e6f8dde75b2a5f4fbdd6d80108949c00435b7e1d621d19e9f4fcfe609c0b54f374b173bb3a863b11f1067355\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fc30e9a625ad12ed0e774cdec8487dadeeb71a38578ba5fb3d5b65\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1711214647c2faeab17008316f189afcfb473c532d229eab043df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"51e967f220470e67f29ac357171e7f9d66008f7c23754ebe8427631be74bfd0965\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ac17269cbb60b91f5d603d0fc0da44f5068448ba795d5e5dee0af38018cbb1f487b805c8ab\"\n}\n],\n\"handshake_hash\": \"76c5223675aeecf8c783c60811a0bde45b2f40733e1c18767b89d29e03af66d5c2270f09eaf1ea229195a1eddd73254a0fc4907c823fe025ef60cfed997e0b1b\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446f0ba13c33d8068c9ce922310704f0632f41465921dad2ea6401d2f540f58ddd1819d87a20f8a94b60ee58408580088167bb4b9c95595cb9be3b4c1eaa2aa5670382d055475157dde22104a8449d5141f62688285ee744e731bb6b7ad472b3a5118479264ce909e9a40eb3bf87e4a801c731c8d122bf1a5a53ec37d75d9e9ce92a5d6fcf6db7c9fe589a3cfb3325557dc042f73aebcf939d5f25680d1130fd99bdcc4389fe0d51f753dbac4e57a0e751d98bb703529d5074cb137d5d947a22f61c12ac5668bb6ba475adab24419de13b5338990a565628cf1a64f80c97f113deedc56fee39fea68353295d1da2597a39a40b3c9fdde7b5a82758c565ea0dbb68315ee2c8c4a873b12f680418dac8a86390ff547b423c337436f87aae262902dcf06a456fce6c90d43869d972af422fbcfab149f9e44ba64b44ef4f0dbed3649809fb4af9441b9632805376bed88492a9fde6bd10f7f43f8686d5fe73983374f3af99d06474bd3c078e6195c307ce611433643c1620bbeb0d0eb2ece8f5ce91b35e47e4ca6e95ec88f1aad572f083acd8eb56fa3b87c7d5dda6729d998672324bbbe212ac2a9177ec664fae34769536e5822252b6b4aca05f5ce87c74991cdc9c9e4d9e404e0890bffd9edfe5fdf9792b660e7c39bb7b545283f2a80b6154cd36bd6d5c30b8664b3507a10f54cd6b5fab10bcd0793e9fcba9d6cd3503c1664e876bead888f3d346e3ddec39218d4da6bb3a9afbaf3a0d4042726cb4ecd8f4198491d80b1ee787d2d51f0b1a63ad06f0a1d731091099f5a8e113fb60823878f7b4fcda179fc3541e871fa9c4bd30f1bd7f88380deb6161f6e5bbb3b14b4961ff065326760af6432cc8aedf5800585f29c1bb70926f93a605e2caeafd557301608d2c1f81382dbf995a123922ee0d72407d335b6425c86c49f8b5cfa659ed6d84e6386c9f9847612cb04024cb6e757b78efde23e6b2f40b9db7e9f62d2852285ed5253389d799ab71457be398af879d0df69339ead4e664d068b2d042deefbfb29883089f63722ac9d5ba4666920ee0198a052b0a19d60024d04a913175d344578b4c610399993024fbc9c27254a4ef483c95eeea78975d2c93d75b53b8b3b8c8c5687c4558452daeb3a721e431ba7b4c41e637b0922d12188ab7bf81ec9ff7f2650940558317b0876477960c9f1bf509682376fb3dbfb576da6bdff4b25a4810088aee63083110e07895a4307e1bf9dc9ce1bffa79aeb38b3247946ce681a637e5a32be08d5446fb713f8c51f71607c646632b09f434edca33dd9c5f0ee6a03379b077931b7ef1a8495b61288dcfaeeae563c1aef4f7e860bff2fd7e1ea5940cb156e8fe7a45354c733f6fee486a5669e05bbc373f7cc9ca952b8428a565f970e07f0f736e5c7e993e9e6dd1e84de9353bb37ab3cce3d8542d5f92172db237c5cf6ece8ac7083e8e4d94a76ce5582e8ad3077a8dfbe0cb0adbbd2e0f7f53a4bf7ee884700187ef9641a86a7ab12eb778c7819bc250f0e04e343afc00bbd883de945ac64fc495eb5b6975c7c0575f58df99d2672e1de6512924220a52f9bcff18e0bee5fb3030c179d7395b44dc32416be09dcf679c2a560ae64ce96e984687f52a80f3afa7cf2efbe464a8be23079195d77a93379ec3e8318934a61fb4f91fb7556c5f1c2492556d212fa36732b4c0197578cf0a8f2dd36a184f95b66949705094b8ca0eef68281ecf50e9a7a4edb4d40b3cbaa69683ddd15436736d91d6fd84d628d704134edf6884989a96cdaef7cabbf875789ae613de3f295df9c1cf7f7332c4a32bc84fb05266d72f66428b4b9e99f293118ce066ccb9af44d3761b706c38ce852f4b662f2714963dffe28ed0819e4bce22bf8c64c5e8bceaf5f673c1cf2165ee787b30f449e580455aecac771eb97786215a288cc251a4f083cf46695fa1582112fd100db0c9ac0e058c4fb19eff8eade529071b417eac41507b01bbbcf0b2dc7041c7925a9de0f41755264fcc74782592492752f490d59b0fa6cad1e7b36959f10efa3382deb92cb9a3d8afdb5c4af003bfd5df560c9f2cb1a04807f8b1345b6ecc60a40bd7b6847f3de43767d0f7c4f1af213509b02f3fa3a9562a2253c532e81e0a52e864caaa24d05b007810392caf7123c0cec3d1d77a04c5f5ec3bf4ed60f1ffe9a9c4b3361c1e6bcc1869ce3ff9d931f20f8c11154b94abd1c115ba4034a9a51032b88ad9825870184d32a4fb06291e152581414cfce88380fe9ffee67518a656d7875b22a09f9b2e7e1116e8ce0b625fdcc1a9f20374bea9bc6b589b2b1c21a082f2359275e579bb6f4cb31142d824f856d2be8add18578fe09fc52b179aae6f2d90371aeba5d58f4f371315e6f4932f56b6038bf7b9450ed1eff050bec5ddda75eb0abb7cf7a344b5e17736d9c88ea2f1fd8d3b5e32af1c5554704f0d889cde8d9940d9c5f51a989a398ecf6bfd40ebc04b5c31ccaf8f26c96c138dd4cdb2e14da09b7e095cbd8f9c85a197d511d613b03f091d41167c8e32058391dcc29d28a920dc2e09765c160dc8510e0ef87310884422b397e9632ba9393a5a979ba709bdc5580e5c37e9f44c20dbdf532eea20d8003f6a6faa9ebe22628014d5b4fdccae25bb365c38dccfe689\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438245206616d4277c0634bfb4aa833f76116211fdb110c7ff8614ae8301d83cd016c70faec88b7ac88cab8fe76f97bda1f70d1462ad7edcf5a29a0799cb332924cba7f0e667b8d9a56a0e14aa50eac9c91b60e4fa5cfd4a41589a5c90b08404e292c206b02218f764af9d500385adcf8b17cec2aa33bcdcb77d9c5185567fdffa86298899cfae1136a475ecfb8929d8c763762eed410c0d42a5b473b92a1abf3ccd320cda05fb21c81dc21d00817542a9f5dab2a61df35cf4fb119032e53cb96acdeca728fa791e4f967c2ec0e57a464d078680f412bce1a1349ce28333ce34c076e61617fff50ec7ef69b06d42fd8d17b97960bef90fb8615053fc2bb245bd8b1505a0c358aac5e135ed71a16ebb659810a505299377ce9b1930f5e4b73d4faad68bca49dae379484dc8bc6a278f35283a44aa8bdd8c768c07730bb874352dffe13737422b6964f22b8f12c80d6e780779f7d8c9fa1c62c62373bbdf901ee77975cb7ac7e85ff931846b2680a3f2bbcb732e4ce00011a2394bdc04d17c6f20479c252ce4772fff58a455f250fc16b1a78bdfda39a40aeaacf585af39415b0081df908c817b59d3a21829a87f25e6b29a4f5fa3f5d15a17889101e3a6b79203cba0bde980b257ab2e1118c8cf4918278459f6c7b1fc0ce3bd16bd0409fabcece3595e11c27db6feccda123cd5657a5a877bd5221ba78546e37367d15c465462d0b32b1718ce66fa2bb7664c5ad5fafbfd2cc95d9fc88b3db253dc26817b3a23fadc9493a4af5e2481901f844c9fd2515325bb263984819585a356740699ce6eb829dcb976c2f485932ecc28380ffd3f39971af1421b87e2a12340ffd427e12ffc98f241c55adf85553e5f4ce1ae807d49e7d7be451586660047a3093b6953763739438b6ef4fff24c8a0af3e8cfb9441784f5a7356891364d93dd28351fa67ef5c42c164aa92dbeb10982869294d9b27ee1af930a2ccddac25d04894b7cca0c0bcf474df384a52e540c5b2374e3c82b4583340888df030d8348fa33858c6b341e19bcddb7a2fb02a81e4315ea50057d886312eb6c0f06eeeaf5a12a8c4846f3a130737c37b6b14f3119e8ab010287d366c63803cd4d0f73aad2231a6315d3cfae4ebeb41f2a1186e0a6c728a7507d3e3c1b6b09bb57e6c7773ed2a8edcd261bde3e1a628c3f8f26e7aab3953446986d1227946834e14b74a6bf8155d5f06d0312ce80059f9ed09a297ff4830a5a69269a77a347d396e967cbd86a59cf5215275da32565f7db9829096d74e7a982705780192e9d25e47f87a76070c4c3247b93afe6a5863f470598659e553607dfe42f6dc6b95e9024d6a0fb9f21cb9384def8f903b7f49dc37fbeb2b6ad71cc8370af459b5da10692cba10f7dc399af169aa9096b35fdb0d78e27b7a95f3c6329564734c2215b97023e15412ec2e65967493367afc7ae9e57c2084d8f1f65cf784195a35df5dd8048e4ca7173fe868184671d103dfba1508e992837bbbd186bbc34774f91045423112449fc5edd7429acdd938020d48ee2f630d0252f46d519cfdcef8f8176e43330a67c783587ff5674db568f695217c0b238efa6d345e47d08cbd7a96c56e3d7681b10b930c24f7347e7132fa86b4d88badd24c5d64ef4d66e864eb1ea5c67d6952f114e6add6ba77bd72a442b7a005ee8cc97f7b83d6431f8b2813798d3dfcf1c8cdf8b1503f413bc1f6dcb38eefbb2df290588bea84fd646c3738ab6afc917df9c96c0c6c49893a9bb9d9212097edf2768273d697c91bf1f6ceeff42fac7a921b496fcca246aebd5129e63b6b3e954e6a92bbc204c42f1f4fee0cad10c8b9b047cd64443cb7e6606055948ade14816c369a668c0b15453f4c99b8c9e27f4af35f6c67951bbab26f10f2e4078b042b6cebaf9e3606fd58191ee19b67472c98dcb0ab3bc03de46b229e86c9e7c8d60e64e094cbc10a12119bab535840505a9be15960307a4e3839036da8483f97336a4072c6359c336862164472306fb8328abe457196f1bd54f2fd6a8977a617ba59627c9163095c0bf17d5838b94018bc6cefd5341280f2a46c586f406df456d7562dc17ac0ebafb5760df7dd18986cb46e727cbacbd997847dc9f390e8cef16c866525ac99da83d293940e63a7d9157f42f09fe7785f4b859d94552b6792349ee3aea2689fa31893abe7726d9af9f1f306e663ed3e5581471e04d99bbf878f0febe08d1720217961ed2bb68efb4b4840dd36949e3b6eaf89ab3ea527a08200d95cc79dba3f595c10144e2df2bc8125a715f1373e76b3eb3bf1cfe92e41f9b3ce765516e2d8af70be9c312c9eabbdb0309ebddf8b4a167841f87f67bd63f1bf6ce950ad29a8044f6d3376b6f682fc8e3ce355a308eba8a5bff7fe528b4aec48d3cca3bc7a4e4cf9ba2654dd84e2272e9d1474bedbfcfe70f90a785bd31ee52c3571f41ae8640e3583500db1b144290ac89b71e6840dae3843134b1fab7cf7b50ceebb610d6d502aba82b00de520409a1828175fccae2e763c7394e28ac39a6a9aa7db54685fd458e3d5f6ec64c1098e7a1fe0370e078f64d0ed51114955f08300eb1c87112911e484132dd47ca762d90c23728197137c9fd797adb47cbc3c9bb4c696c55fa10bb620921cfc9746729628010674dc861e150176396eac8fce65c8cecec6387881de37daf57ef82282d69a603b3296e3db404b440dfac6d5845ae8e1c3f49c0a3d0d60a765fbb201ce72cfa0d3f9a438c468a5ccfd3ea022b9a3f001d19bbd5ae83dd3256a05d5ae9173cb02e670beb21f2544c8fac4ef278d75242702279b85fa4d6a9470e8bdc2900f9c49c9f7b315d9555dd906b255e712ba220f62277abb45a483c0842e207bc3cf35a1c6cf26bf567a6caa7489d7623fa25fe0b6edf57926b5a5c1bf665718ea7755bac8f4140cb14599c3fcc42a24665a73f8858bb1d217b6410fc32cf9bf6a6ad3e975882908ea675c031040847a4f1d911635441151e6b48be8e0e3b229a31021570a16bba9b92563b98f74fcb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1839d4cb20ce0ebed823b9ea4ffc160cad7ea62bf96f28784cfb3b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ec6c2ff1273cdbd118635d595298a7da4ce7dd7c30c8bbc16ec73\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c4d7e0b94089af9269620f3d63af39a929ea8acf5ce3f87cfaa58cdeb9aeff97fb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"da5f1e030cb42989c41fc39396731a683e4a5ca212fd5f4e39833386edad8cd7c1b36827b7\"\n}\n],\n\"handshake_hash\": \"7c1819190428a267ebb3ba455ee9208e681fafc66705171512ba33c345eadf7f\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794452a7e410fb948771be0d011d436de87e498b93a5e798f86df4705d1e08e060869ab77ce85e3b5fc2a290dd7347c96a47a8e218a9495bdfe52bd1278a90d1e8a6ffe80359da2c291a723bcca0c31f2262b137b66164d45258117c26fe4340464ab790a6966f8f456abd68d5e9a53407bf82e025f8babcbcae412ab62b4633047b842a8579acd95d2ed6225d2d6f4b74e2c15bc40d3a1feaaf20a407068c78f4e259899b61a95fead6d7aa85227faa53db8218f92de1bbb05ad2ac5ca2dede21412fd8d263684e6a11534a0232bfbb3695b3599047411246ec9d746ff05064e185466f00d88ff9bc81813ab6217d4e066bc3a611dbc558382b0619679b36172c51a87118788fed8d9aa0d70ba3dd204c0414a2195b7fc56290a2e4976192daa2bc25678166e015f9da4bd43ce4ae46a32dce66d336e14ca0cb68ac2f71a6ec22e907506de83b86dce0ba102cf6ace16594dbb0327d2576118203a8b9aafb954079368e953999237f639614fee9835dde1e8dae56c744e1e50f8708f68f70e2d8f430f84a48316f95aa1b5f5a3da2636ba04aefcc0f168e20dff3a41a85118f81008ef4b1e2adf4653516420bc15bd0194c29a8cef590bc3cce2620f0b7b30f1a3a7849c71839e8ff873b069ee83b9b58c90c52e3ce94467d819e9298c7f69f1454b7ed23888b1298b9ad6a8d3998fdca60f7a4cdf988ca40905d1b5768d5c66fe2acf36e47828e1f8df5349862637d79100c5219616f56352c6673066175eb382b5cd76eac5f102e0391dc87b28e5383f40e0c997b9ebe552edc7b375f61ed5bde85c0ca9076549f159dba068a84f1c4119629ff68de283e97494589bd720181b94595669920017a1a0953bdd9ef42f06cf541c415bdd220c9f6e602791ad884bc419e01a4a596fecd15185b5ec1d91b95fdd4e5bc5fccf8b21bad176f67f1b42cc0bfa36cf4cd8845b8f4b241c978c2ce7a97516106eefd12edcc7d0b494f3f482dd2052724df566fdf9a157044ad08e338a0b2b2b6d91415217fefd1431b3865ada104efc8495104944d509afebdd0ca0cce8f52f88dc8ca6bcf8ced08d900da60a8f52042c0d340c78e4cfc2186b36d6426295087cb08511ed9d613c4ca1798e472897c9b1851385d3b4599c0d981b523e778587c21f4d7899fa39ac2390b44be0ea482102c64b535984885aa37a445028260fb1f9a2c53622ab073d8b5b89572e9dc7f0d3f155d301bb98d1c6b1d857430f8aa2806851a184a3256ca93a9fd945131dde5c0ba85d95a41846b8d6b907f264725f5730fa60abd0ca93c24bc3be8f0db05972200bc145d64f7ae9c33859ada07c2cc7e5de5b425ead6305f19550fcbc5dfd4eb34f1dcb8794b4e6b1c56e768b7d989f6fabaffde75617b716207d9d051bc1d8c9d706ea829f639cb7226926260fd3e4d7cf6b57e2d9abc45461de4a6035a6c622023a2e222108a674b9077c15557d025bb2dea0a5351cdf40ccb4aeb07e476026b4547cb2bc11619e749f89b4e4a3e08208111698f5a5b2db2375949305ab5fc877b1efbfdba951a21117a7cfd3bfd06da7f8443c5487bcc60c2548543defda5b601797ae6f82626690e4e129d2e2021d15fd50a5d6e3b56bf14164ab52f068cdb5ce59d7a986310769bd0d41aaae60632a75cf014ebc06c2653502abcf506b01a648b15ea8915ca2c40f3ebba3eed45614dff57a1ec212a2b692561983497e6483da6bd7648edd298f6cc8c2ba9765f7506a5663cc998ed810eaf32fe6d66ad5c2a8074eafbd3d76494f42d555164c81935e5eff51ddbf5b2f19a66f0ffd389092ed07d97a87080a72909289844c1ba4f0659607edf246665662f14761959ba03d6ccc8bf224c199ab85ba4700835eb143055b77d5d5c1224538d8a9051dd43a0125deb631e661012f7ff0f4b311d1500f728473e9b7cfea3e3aba7fc55003eff1e247fdaaa8cd7a15f2f31a62ad3f6e44d465d0d296d48126f79c9c77d103c3c18342eda5cfe64920d5dce79eb249d63225ce61eef556512eeeebe7b27e320120f14833e7bd163a8b3e845b120086ffa18df12b6ce94e631aa282f8ba9775ef341da32642f9f1f7b5ece506bc439a9bb730b81b9930e5df2c41cd1d440421274c6ab4a6bf1ba13463363d2776f65dd99dbb54ae37aa93a252d7d3751943eee9400cccd44c4e4e2e1be46eb92a35a19d01e7b74684ad96bc18a1b8ec44423b2d32a903e101465e3aa4bffe6d6e99d07f248581b6859a918362ce83a06e7f3c78f8173d0e9e5e682c99652b9e43ea9552315953eb7bb7a05a9e18c934cd89e130f7c75961f4978f86f692b783d2b733648fa097d56ee3178c4fda3fb5b52ff13c7ec3e2e9f32838e4a35cf33c86d3094e6f704d42efddac00ba44a9260893a87d62366cf55f3fb8aa0fd2d376c5375062cb4ef039849c699dc653814c037f1515dad890da61d8c74c3af11b55b2feabe9393e1d63b48eefd2f846104661b89bb4c9977efe822c4e7dff86b6671c87a235c5ff8ef155018b5dd9191f39f7493a9f7cd67a64f62cc595235d6c8b9ff5ff2cc1172b49be62c18f091cedb55b5264290c2cd026415f8c56c12dcba26fdfdbaeb6238f350e4eeb35eb01ad15f1d9f3600d10858e65f156d88d1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e3381b97fda26f9ca425bae1299ab5ac8936bad02e9ae076d793b8f7578eafa710882ab516b9adda8ea5c5d3ee3b7ae9cd8669931b76966087a624d3afc97d51de64f739d80b6eb01dec9393f20230b494647b49c00dc37cbde1e0c0a6cefaa8ffc69fcf78ee9114ca153af17c9c06774848cfd5e8fe71caa65a35423a47716419077e493de7d53343efcc4483b0845537337363be880ecdd9fe4affcd602958ba25d7eafa95e61acd744a5f869456d8eb4195b0732c30e0eb574721d053e78bfe4602c4ee6425e6ef9037672dfa1fc95ab8e2a8fed8967b64d1d89057d55140d2a7e565d9b07b6cddf002892e3e04760a26aae8f6b29bd3f363d636af914c8349c673a9be64fa6cfb161513f872c4c9428adac3680b3f8093d44e73dc5597fb8b4d96c7855f6a9990fb61e670de8880e149cbb225cfaca9a59de604dd809a406626b83eace7dace4e0bcb3c458d7f249fedc30fa14d29cfe6238bc37da6b5f00ea0e09d7dbec8233dd1bb9992f67e03699e0a933a12ea5a3c641a5af057b97e3488f9867565e1e33cd205d83d4a08fbd49cedbca99f00c8b679498ecac391a17acfe5028099f3c1d00db5af5a90acead6548eaad7d9e31c5444693dfa3877b7e8565f36069578eae6c9da56d8037a437673054f9ffbf8bd4b66e1df94faf4bae6f1097b51450eba626b2226356a24764fcdbc0a26113defa642c87adcc8aba3ab754a58e490d31897d271a77cf2a9ba37e3eb850d68930128d121fd3f2c6b3dbc49b9252101cc8ae4de378e8dc25e2986d6bd2130231241fa7f912a78c2c1f4cdf8b8618e6392613486fb650a24d1424c744bddf2f652c925ad75dda0fcaa54cae0e3d88d93e88065220f594662faf4fdcc9e50d8442019a884cae3408fa550b45da429879798e0310b5affd49d5c653dba60fb4ad63a2cbcd41c14991c7b45ac048b2080cc4e5e5fd701862ad0205e325e461383402bf610acfb1e26bc1f7cef4b6dfff15086ad98f20a3b970a3c19b08280cca39e0dddf704070b0ec1e767243a300ba3fc0ef50688d28f030b8b6fc9bd3f55a9fdbf73e94c79f655690f84e2313084863547ec93e91751f201a1c24f778e41baa89715272a9650ed075ab7cc5258b50db523803d68194fe3b247bf50cfc6ba35df5f45af58ce55fb45a496f4a5827ef306605117c8ad4cf29d994502a7697c50c46f03f4d90cb9bfae15f1f1285ae2fe7407adf5649afb2e40524f739939d26c3c44dd8d6048d7f393491f6c5f16fca002d868d1367a12804546ebf6128063429838bdb181909c990cf7345229079c9acedc54818ce6603d405fb46734f3b76ff177350161cab0ed77db8f7a271c8a3e6db091e3678cbc79bc5b995b9180f7509126a165fcc605b652e20cd99cb522d6550b59c1feba286cdbd8d152535550e081bf4258fd35ae3530012cda5ae5da70872ef6aa86c998ac0f8545330038df4917428fea2fac25feca493baeed07033540a89127a297880e537bf6e22bb2c5044541522e591d1645ad7773baa57a709f71ee1d4414b3ba92ca56c30be40b37a206c587960adb0d49e53af465754d8edd2814be025e3e36270346d3fe29be134a7548e68dd59eac49e5ea578682370510da49e33b347cf46976ae003cd103b95c83d9584ac9cfb03553d75a245d5b8def96ced31263374e4f53660347fd2897177cc074c94c9e2d1c4a363559672c14e778e1254cb0fc148e42952ebf70c769deb6259583fb646d8b8f98c677590a4420bb27bc60124b55c858dbf7cd1197cef023a6092d5b022c681ab3258e55032952772eb5d1973d628be7e910ba357a16ea3ca737131193c0640798ce9b640c11e682f2820e3cbdd39b5cabc5137ab8bd9ec18656db943e842d69f70dfc25f0d2788f04023cd107b2f0aba0da0fff6e3a3fc9a75eae81728c336de7a069d91e112a5d5f99c9c1242215e9b99098850ab6b0def282b792dff154cdfd1da0e1180768f25cda0b97cd8f53c5bfa9692c5f29d32c84c46bf70bda336b26df22854e9f4ba94473c5d5f93099f9fc3d41933351aa94f2cc1d0e91cb788bfc295d43d22ef798b8a3bf8795db32a96e4ba8f14a8da5e91ccf4cd0abd7f7330ab9468146dc88d45b5a5894dc668ba2ee566d881d8cf6b4c8566d46b93d52a4b3d28a27383ef33e10318842b3c683c4d3abbdc241d93cf29f577539b32246096097d88895400bda9562c92f5d1f321cfaefb84c021d6fe5fa96c9dc4d89cc5cffd54e8cb2464d604008c9b3ccb1aa625bcfd1ebc73141e2bf7b1fecb6fe61c0188cc7994f08fcaad3bd8578a2edaa298c1047449b14817c39cd5c971a82ddf6408da7029acd2cd2753acf6782aa09f2fa3ac1945547f25818c9d2185de2f74246b19c15ece86cc110f052131cb846d7a6f771592622f1b4837bb101de3827e03444ef86844ae9cef3b7a8b3c2ea154a0a48a55a90928cea4887df03524466f5fa6c86268d9d52aab2866ffaa59e1b8facac7acb94a59f1e00fdced5b90a2a4f5caf25198766e6d8cc82270250938c95a8f8f14f1126a6ddfed71ea89a7809373b4e6674b09534a21f8823f6cd0b4f3e58877a64c3e34118f37bd207918bc0a30416913e941591b00d8f1402f8ead05581c79b3a961aaf1d6d38c8f18cbb21840c7639cde88c1c66e5dab3f1c468ab597cb87afdcce35c4e6a9ae72437d530b07568ff35f3a95a5265c931bf09b7f8b28ca1b1f0f163bf65ca9ad3b15a79a7298564212f1754358949a7773736402fc4af6621036fbd2d3034e01ab5ff8c971e20349cac46cdf8407deba45b98c66f0f615acb4242b84b52169d89cf324b238f190f785ced564059697e4e0e1a84b4c03a98949aac9c15448931b470771e08dc9306f53a94b89185031353ddfca63af032a121486c92393128512d8be6ff47ee50be059ee2e4e2d204c38e69be138a4cb84f286db559a80001ed0c38660781fa4167872eb38cdac4aefd6ad7cc9de3f14b2c8d4d371e996f35fd2960900733c966\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e3e787ec616033291e3eff2eba2c2e6ea79153532933c6124987df\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"57aa0ac136f80024051b0146ebceb1753dabe8ec02d9e2030794f6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ed7f1fe6dba717c22e2134cbf4b152f7dcc2d552b1c19c3e0615870cf5fd671b4c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7efc71c3788e73a1c0c700c65e1022929ebc9103f187f8ef3df51f0c5112f672ac5e85b878\"\n}\n],\n\"handshake_hash\": \"f95f79b2b26d0cee6139590554ed150cfe6b368d09e19abb145f812118baa67a26daf8aa3d1619f528fe8017bd7afcdc0b00825f2aff1b267104454e16c98089\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c9f0e21f5151aefdbf9cb65b62eb5223716a1460a456140ff50749d3562ea5bd1db105ed86a99ed9f55c5dbdf2827f20cc7610bff07e1ef3e8f9df8c9d231651a91e4c0c123c66af03fa3b7b6d88f605bdb006d7023619c2c7e187000eade1f9fb2967874bb5f5f954cf7843fc56d1b735bfaf4a3ff7ceaededdc75ab7e77e1fca8f45d8b95fac6459b21ca4c8aa351610703f9eb30a74909d8d65be7a7d0fb15b2a8f3bc1e440577625fbc0d768eb067ccd54139c30b19af6055fc351b50751d6021ee4dc61520772885ad931e113a27e4765c30867575ce992786af9e91c82724ea58be515e58e4dfc228d1981b2f97fbc407817e03efba45fe9d44bdab15fb0784ba4fc2fbb5977e1bb82b37c3224c96dcc5608691831a25acc0252d4fb4914c7968a74f6f91caa0092a9c91a746126c6f2742fb871786c19a1afdc000de0228f3f501d811355420ad319f68e7115ffd7fca93ed867c255f8124f69325a79a8ac586c8f3b8924f1949c39ed5168267e1bcb8f06cca2e9c94db740ec3d6e031267a088a65aa2253cdae54b5887ee4fc83a94a9f0fe16b280fd7685dd2863698db8e3b3e9c9218a3ba599237dfe69713950e50fe033c19f206e0cec6f1c43859b08b11f91e56d9badc7ff6c5d1098a5ac22ba5fa1acbb29d8cbb814ecf230a6a2531425db1ddc2ee31e393ddb1b3dd0c4b187cb4ae818e3e50a94b7359a01ce47a138a518a26b710c77d5fa8d72068995ea15340bc7c2498665c1739b2ca7e3f8c54135e00525aeee2fa45992bbddc5f37798ac6d426cea1dc3c8d0e9014adef2071646e8c88f2c226cdc116ce4dd55fcbec1845170af28d2e91715bb5d916c2b5ac0dd252006a9658b9e0a50a316aa814816f45d653f1afe206f834ac2a9583a20803d3d9d62b927df68ba15bf9d226df46013a3a45f733101dd8e9ce16735ea449a1e3b6085e0476fc8e64831d1921df4703db0868551a4336007e7a4fda1e1081f6d5f77f28ba5b048c168c582e71162773d96fd821d727e9c343a89d6c01beb68e869c68b1887e6cf7ee01570a2174340cc144f76272c098247a1c1a3a87a1d8a2009da2e61e101dcb204bf2070bf956d5cbdf02f1766877bb3f4962d271af50e707bd287eaddda342b2849171e7c82340e75672e0c8dbd98c8363b761aba9bc05e30527a215970e46cc08d0a890f9281ce4b89437dd1efce81ca1635c0dd0b8143bdead1ee716aa9fbcd702a7dcbc10e49b7af3dbd2207eb0206fb77ccab78a26be418a84e788a1728459fc2c3afe7bf800145a36a1a73ebdc99288607fd25d435741e7f109f9770b7a7c48f011b18ab3e5c8ac38e7fb705c65ed849ff31035db26b998618c5fe784b075f732e9fa0b5ab34164523437b21e6120eb2204c95e33891040cf2eb67501778823807b76400ea3d441b33a13b8d4093df83305d673764ca1a980ba973cdf982113e9026f672536d65130249c72878219a7fba2d515ed07be14ec6253822928151df5a871738f048d7f3aa7ee97f523d153c6d1c57beb58615e1a2fb38334c7ad7ee04ef75dd4f11de0bf9b9213868b9a381c5807e460f0486e625965aebca27aac0ca7612dfacf74758d71525ae97c3c8247f56e47ab583b91f3176c61205827abde73c47d3a4f4fa8fbd95911dfb8222f433df06b9a3fd1ef3d8e969c272a3c0bc0918aa994b1a04839eb02d5e09efa035d400e0308bb00533160ab8a7380b4b941f32f3b5ebc49d29292ce558db92f5f0ff540cf827e1af97fd36259ea8919b250db62293051a1beb26ca312510c30347ad88d894584174b9b684323b73fc9ea400a38bfdce962d29c1cd4cbc4c461b473b6598aedff3b373eba92b07d8e0ce9da27fa3e1fa85d2c1ab8c278e8e40866024a2ec28a15803284f34b7eac1edc305aaf972f1bcd3000b5074ff6c469eec9108cb014f76418f0a49282fac2b792527f592153b8157ef9eaad5d8f43a4081fb182c53d46219ff0da4dab8f4cb1f844d58c59577f037fba17ef969e09eb01a3ce519cba4444832d2d4aefaf7b1db8f051846664c77917721a93cefc664cfd449ac1117595488cb097da8a4085f1283bc0f3c0530acbd8c2a16173b949ea20f35c42fe5c358c98d651572b62a2c9cd7669bc2fcb8aa57e6ffa099f9f196551ab7c8473877c98f8cdf3c5af6e84d8fd9bf7509ba4495776c6a4d697f3c891ea27db166fa23555ab412ac802fd5c81aadf8ca0b23334406e2b0e653ba20876f874cf632e51ffbcad60f4b87708a06cd1ce770dec4a09660526dc72a57b13886be20c7b67b55d87a89221460079c7241054209f5346f0bfeb99d84852cb5b83d59cc798f7dda86bdb01466f838d3244223bef9a8802f5659a4531e600ab401829107fe2b7119af85bf8a71ee07bf7f5be510e5317e3ad013ff0fb5582f81f25ae1c7a84884f523396ff45f7a27a00c0df30d71609a50929609b5cfe2bb6643facaf2d61864c86147d7571d5e93d9931ed406f20d876918eb2a849802687b22f268cfb4299fc7912fa3486a72bc463f7eb1d99b8900d21d9de03b66372276d7bfbcc74668822b0183717a7e7600adecef5f5c388101c1b8dcaae1e589af87e813aef2caa985c84ebc2c8b110cfadf40c7ee015d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ce1aa7e7711ab37d61156c680c4101339b5a2ffd5a0be66c292c631e5e5313926429cb002f8dbb476df2ef4c87bb081e1ce4ff99c73f50c64d6125c217660c6cab905ea60500d6527cb0ca20e1936a9a214ebcc68052adc16741a04438f74245743d983886a609f3498de171345e470d151519517551e0e1d331ab9cb95f0924e94b4e4812b040c94f06928e28c0454abf725c6e73e3123d91e7450a80550015d34d892dd82bf0ea261179ad831d3a7277bb0892ddbd42695ee02f6382ddb2522e45bb0024451eb01dc11db3311191bbdf6d4357a49da3b8ae1ad46c6423689f07726f6d68001bfeae70671a834b370f322db5eef1debbdeecb5ce72c1420ed44ff3c7b2baaca05a138d20f7fa70e89f7aba0d76edccd2438cf8f3f0583bf6f8ff04d9c7bef63fa176355bc5e1c0f6cb443b8d66086f5f4b365da0e4a0066b81a5bec044d9343bf9d84c06b9070ea68905cdaf91972a41c00f7b73de5ae19efe9188bc03137918bfbeeaed8a524a8d165391ecec29e57e30e660c60183975b1b0fe52c05514cf3a2b2c5e59a93d2e483c007c97394aaa6c0697a76dd23b4ba141996eaf747bfbe2dfa38e8204803ff494ec6bc432289f8a4f1151b532f18b73609b82b771b9ad4205cb25696369a864482b79c8cb4616cf66d528eed45a9ba2cfb2a33d041899d1884a62a16c502f8a87a857fbbfbde37802737b0b3d0fd67ece45f02a6099a4488b15eb1b3ee081d5706002c7d69d3f5acf990d89ca1a354ef4789dd5e19b4568203977c55cd81c2195d9dbdc39d9108edb9bbf6812b6318d990a64d77571b0488050a8a8e6d9498053bedde9be02b8f36ddfaf73c3df02b96df04692769e47a4098f21c49071eb59bdbb356fe65387cd5efb64a178ae1588f2e60bc328c5646ea95452ccd2d1c45f8370b6b2708b61589c663a7652a76c2fa587cda4271091d1c49a01e83c18fe8451e8d554e2fc8a5cb04931fe0414440f6f2a0f654688171f467d75f855ab1ac3b56190835a8061562899f79865650634449991efc36ae6b48ede4b42709b2407d1b27a3680f3d8882d59a5cb77dd14702ec13674d87990d0543171a978e723f2ba4b914867d00980583784b23d7c4e3240d076af5dac97bd154dd01fee21a35c31d1f21550316d382f82b856bc2df9614802f1c1ba6806a8af73051ffef49dba26ba68c07cde04bec4426e02aa23dd7469148e3c633ed82e89f517d33073db322af33a01b2a8ead87a0e5a2fed6c4df610b2ffbc208b053e56b43463388ec75c679b326652757b265ed56df480d5694ddff94b3becdc23322932b0f887b0638002d27a2310983feb9f9af0916efcfc09d4e8d48599b11df5e25ddecac28c78a57040da1d651b487d3840f7bf71e59be54836b255b3d0e2759dcb2cc99f1f7c3f232009f1c18675ae2b2b6b06e2871505d5c01ff2df0804e4314f2c67321c80ae541fc899db58a607c085e16e2491017319e179bf3f6daf2fe53293512d8c8f1bfa682cf2c832566954f96f296ddfbfba9b2b1397ee40ac412fbab467cca902d6a5f8ec0c2d859a771a2f07790dbf373a67f0ee4d0750667eca78ad1632faaf440beb3b8ee0aec3444a27e9986de89646f8c4bb22957a97e55281e5a8d63980b350de806fc9d10e97a31a9e17a4a52b77d757f2cf92c4ef5ffbcee78437c90d0bc5011965119198cf99d19087b8c84b42911ad9ec43d9aa8529cbc601c24b16b6e338d70c5b3c9b1263919cb3f9c495808b2777301bfc331967b5e9e3d2f949903c3a0dd199e49d9d2b3094a1fcaa5d504fb787ca315c50d5f0252d0b35f5fdcea8181145b32e1b187ef29e03d7387ed1dfe4937aac7b1f05879dd241a5a3d4ad66d645e3b4be1ec4f75bf9bb511b4e8bcd4af5e767d7c7c161ff9ab9b2e3fbe825b8922ce33e0c7b3737e96599736c6ae953304d9610b4d23bcdac29259b858cafe7e434b8a0ddcaad14bb9b68db688478704837332a78c6e2f0524cc84f2388fc640fde9c3f4315484d25b19a234cee6a52b617805a25216250516deb36b660aea0c11343bc93dba0bec5b7e856196279566079fc290830733a1bf3ec990161518c52ed9f48c3d737002aae86eb51914a12102d83dad8d302ca036bf513ad0082579a7125982dfa88f13606f5ca097bac36840eac6cafce5520ff3e57a5468406a1342f38d75938b992710dc46e254d38ae0f71ede614373dcee4581a60a1dafb5ce9254f3fc0016472bd37b7d266ce5b3cc9427ed1aeb2931763729ba6515e64e33b3a8c91567a13302f5c857c6177d342d66c93e8314a1ac7c652dba784176a731607781f86c59fb6e494e9794539d702fe32a547386a33242b329739e7316465d5248c74846f98f83c14807b42f5f612fd310533c2f4ca42564c8b06ab37743112d202e822eb874f7535c1252db65207df99e0e02fe2d5ca50d947c63b97a051160a682e58c2cdfa10817ffb5494061632f15aee32bcdc4f247a2cf438981bce837e2d72e01f9d15c6419ee8bb77601a32c2aa4a2506245efe60003ce826f3f7ff3ac54c8e41cc7db71e8608e6b097d04b272306383440a8d343ca614bd95ded7446f18d1063fcdebd884180e6ec1724b27e5123f280236021a5cc09c98b7b03326b603e6bc201f12461b679fe112228db3d67b4f6dc49b6ebf118302d9089b79eafa05839471b9a1e8971bb2c27c98b530aa219aa2c06967d19d7e8ff7a6056d975c6d5f0a9a88ee83fbcd754649b64c79c1f259cef2dcff918c190c2d3009a8677f107b60ed22d69b4db9833fced9203676df932e03c254b3c6944f11ec88d2a3582a424dcb01f0cf73b9188c35249df0154d3dab5ef4aa1720f614e24cbbf6af512cbb879787fb26ddc41215a187b0f6dfa71f3eadef8d03a0dda80c510126a43f29dc9f89d292a8fd3e6b0016c9d16dedcef78cacef7c6800d632415fe85c80a8cba4418fdf739e67f87b2fc719f44e58cd811e852634c7010004d6e63aa6daa6652927ec0c3c781b1bc179\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e6cb0fb4be08af8c65f07ac2d15a34f5211d11f85f56a23cce59de\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9efd89cfd73fd3659ff37462e4808d6ae46599d9ca4cdc6a30fd04\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"054eb9f2dc565849b4e4bf0d34a88eeb6de95c2fed8552771b6ffea44ad60a7369\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7395cfd6048259f736dddedcbf626af204258e62fb2ea844ae6558e4dd72520b838e917d2e\"\n}\n],\n\"handshake_hash\": \"630b0aa84a008b8373d902400c4220c035098b09b98508acb6e56a21a66a01de\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944782df41c2123642980143ddcf06ffadf1e1511d2ab54ee25677ccaefaaf8d61bca689d8f90ff48ab5a7f6ce3b100b9c2747574b92dd602c547951f2c4a18e38ce9f63ece2594fec612c491906d253081aab910e259a9e6673edbdbd1272a929ab8f8549ed92c486914d6364da9776cbbf930580a504ce2a167aa8e9e94de5de8fb8298aed4fbb51f9488807c38152dc4d2e3c7bdd8c10142927497e0bac83ff24cd63f4f027a012b16251c95fb785bf35a3a5db943e051859ae52a70d8de4076288b7f8a730b96ba54e8cc717ab329c273b849d5e4172d59fd78464405518a908c49b0c53e4ae7dac3b05fbedd977bd94ffc3f5ae8bf280d14ebc5ccdf865d468792690117e5a4a624b59c9910921feac02af22eaa4ec37f67d3e5c35a0d0f04e7786dc4121b7fd077b90ef57f5ef4e7b95b14973cf27db9637a4024f17ccbc47bf14e40cb38110929a9d065266c483c3b64410c1d81acad0ec90d2702ec057b75bfcfe2be2adfacac651e80c64ec60f7f2acfe63b2f18bc15c607c4c89e6d567a5e53837236c12a76c94b8c8cac5a2e9a8b6484895d86908374a8b07bb111e79e00c10a3b36eee052827953662286307ce8a2fb4510dea65b25e92c0474298525442ef02de57951c3282f177fedcf74e35c0a145a1e9b3c7232eddc14f8b59341c7e78dcea1ca5ede3758740a4141b7ef14b12b5f6e3b5a7a5f2217233200582cf65bb860e114630722705d854fc7d3b36462c1d21edda8412db8bd4300f0ad8c6efb8024182e0ec8a5786cb49d1f106568fdbd4721ade3fcf9ec70da6fe08a6e80de45652149a6ef181c299eec474f3fa453e75a53b9832a6bb2a9586fb2ca8c34d88a572b4f35ffd2b5392a97fdf6a706177926f5298eb77f31ccb7f7f4c429380ff267b25bf5a147987eb35c4063e1768ad21b1e3883c10e6bd7339683355b0e95881f995194427289ca2e769270484d8d6fb04cd3fe393a93b3a6e45f61143be2561d47cb1bba00a99e4d7e146123e42a2f95ca5893b8251512a972ba879215f643eb3110091dc23c9eaaa95b57d6ba3df49f018bd14516481e7ffe9f4086242aea55c3595650a51cc70b572952c83976472341303e7b9d6465df44e577459831cf78c4ffefe8c6f000af82f10def28d67e0d1370c9e9c473f1f47a5e304a503d333338a90f9bc99defca8310d66e4ae7b8d176b46251e9ea15b31fd2b0213b0dbc0b7497554e13583aca9e81239bde56d49e9cd122e1c649ee19c524187f20874b4ac145a70485b5f4f80ce71110f47d994aad2f879ddfd6f4a869cca1dc51c205b47787c9383a3d9bd0d1ba792164890fef0866c7ec6270d4668a1cfff938c2f299895aa1bb073f4c869c25c9752a8de4d2bff7c3f8c96817e9060cdbb84f0d461904414977bdf401732f444591a2dc219dd03f51bfb272bc3476db5293bce91fb4c8056546b80925a24a7b362a461a466693eaad7afa4b67035fbc29499171fbd594f3a113147b42b0fd899e7b08c4f3675f0e3035fb4c046f68bfa113b1241a57482a795b6aa1d8a9e4eb250774dfd4b3447471c85ab58f8f2430e9f373484752b2dffc20312e1c5235974e0124b92d6e6760aa89e5b4665322e45728d5b1e83912de7791ec41d83f5cc53947a5fdd774ccebebfee5261f72ba182d410187774a0f54e3a7e4b3313a7ad9d827e9154e331479732e0c48faa22bb4f9366c078b230e103b9a11072bddd7a30193d5da58e20c2f895bcc2c234a5bda6bcc42913ab1dd29e1573e2e5e88a8a0ab571d6942f39b17e55ed251a100047927dcc7f269ecb21d512c94e0c6b24fd50d817adba592ac9bdb0b3514423e61b6f4503284370d1f8aac65ec563cf344f35af86cc78d8d152b34c196643a4e13a01a71e70f37e761a86043535f820e22b585a557b08d151be8b26dba1364eecfe05c132fd57059d79c06b3cac45cbbad9e9062b618ce077ca11016d6b9047f3ab0f1b6c8481963d82b15659ebedf02afbece57318430ad84dc36aebedbe7935acb76043a138f8c4ecf743b4da246fc6e8154b3d4afc114c029b9d7713edf581169b052365a8dadd233076eb4bdb21de9795fb80c737006d25ab17cc99b13879a710a373636477e55d27531a967e7178eb009a08cbb80f88f23e946b268df15c0b27a51c24925db31edd81e6789a67c2551701a1de62aa6f18f21e9a6137acada64e2ec1adf6636ba0c2c804e26eb198cd40f4a3d469d0bbf3e81aefa8a19ad69009ff1a909e3182e96cf1fcd4c044bc7571b9445a66e1e00760fb266f3497da732fbcca2e40b5670a9529f871593d042f42e053978532f2ddf2d12bd835370c998cfa944a128c5e329cfc3008a2e3eabb9b3f1fa4e5d380bd56fb6d6c56c72567c2a321665c20efcc2780ec136a7e148c5312ff2aa5268dfac650f5de38cc5b7cca92be4f71f964ef4d12774da94ed5ccd7ef47f9645c28d5a9ddf46507ba2e73e9515cb7bac347328ff4fb7ce940068abda5d6d1b1584e2c99851dc6478bc3b16c764a40a88dcf14e9634baf311e2313e2dc22d4664afc28b5e943f28191157f16bfff72674f90447e4bd0416a01a1bef4496ac4e0a9ef5e075104e600093d9ea8b0eea01d668dea5217560326712b8b883\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433e46707eff25d14bab56a33c984f2beb69d1f86020bef6bf3ce8c8faeb4e340c637ce9ce1143280370d74b7e0f19fc80a58c70bad06ca89ee03961c31299d1d3be71dea467144fd685836eaa924ac69b313b85a8bb8321ddf2e73c09fa7aed77cd150884b06aae39de2a9a7794f4e556c65334c56046ed6a703608cac0af2ee4fdef40175803f100c26ee4f268ab6ca5ccb21e90ab18a3dee2dda5c8aeaf756a93c938a5c2d5e47234764f339cbe28fa33372338ba86de808484b5be7862a2edc913abdbc1d7ea6952d182e19efb502f6f97c173b9ca438d6389bb124520d173331e48ca5eb6a7044eb5b172e17e94ddef773c5b8bd892af96000c9e045fa9c3f073a6d66119c0a3be884a7d3a6f7f028f9f652a3451ae7a1092f593942b084afb2241980b558cd84cecd29c4bf3c83a36e75835685a0ab8a8cb2d2f35aacd397b7166af458d0a2a5b5d6bcf496553fa0fecd14cd8c195d6888b4611e156fbf39f96a33f80255c6d15166e70c2fd004fc17a637096a9434b8a9b3782d500a5af6c67be7b6d6cfe06bdf7f3d538f35fdc32f21eaf1bb10cc9876faad724fa3f840acee6dd92b826a6460870928a33578d5e13f95f9447c251e70e621a6e693ee23b761884288b32bd6c5f150fb29494b9554031a62387151e6c735a39b7aa27e15ee4e867911a6e06725baa08754e3f5c04d55521e3b615030b312379721b60c4fdbd79bc527f30cf21787d51790a2abbd6b9eca0c61d9bb80be390c71089165d61175e1b7bca1631f87c9915ca08c0f331c4e3087120ffb0bce9d9a95347d040751aec24b418e7950d793ebc9ed4b35794b9a24a6c42a57f7b95102495af7a890d230242bbb79b09324984fa6e6ce4753aadc34309a85885b8a64e7e61381531e39c620386e27c517ce8204c97ca9b631a6f12ea90e3c8a37c27d558cf9c8d18fa6081143ee04531620816b5692a14678475f9a322adc58710ec034b399efb09656a23fcffca4dae05d9ac7da5021ba05752474a8f6ead957706b515474f0d5aabadb07cda406efb1db9f99719defb377b4f0a995bc9aae898317ded6a15063af6747388c085702884a620c6972889d97c3f8cf7cb2f92e636f67e50aaf02e69b790ebdd4f8b645effd9e083541dc50f93d842dd58a944f3eb3466b56aff04abae313c4872f90c23df611127b3ccef98cd2b69a40bca6f4b607cf755cc5e3f3ede19e7d397ed43a1b197961f3253ca9bbc6d3ff9f22392e3fd0d2631a08273f6a8e63ab07c10d495cf2ed85ec394514d67a0a526e079715d59e8ff6cf035ba158a25375a243bc12b5a214c48bef47280ac628a96723e2e071a34f32cb4212be89eab5b6b99bb5796fa6555ca8e91a080c034fc336910389844eb01c904d5d13c5d25a28414c59f029cd1349ffb1a144c671946580e1a0a35643dc65e30bc12db203c9c0fac5bb333d7b396b17d33c76f8ce9831edd228f2fb0ef86c191d1980719e2baf88d35911be6c6b8d8882a3a039999b38f9011cc1d2f2843bd4be124cedb96b4e2ca761a7c3c88d9cfe1cdb32fcba71426ddf3b978e3ea612ab15248b3f67dd41d04744494030b4cf897cfbb1a1c9ddeb3a8270aa53a16142bc0e56d18a7297950a43a8959159fd19b8ad3e531f95ac49c803a51e1975b425684e316337969b6bf3e661c39b0e0e7b01c643ebfcd795e9bd255f0503e969ed0f1efa619c8eb27a9eb504c525f7908ad1b4b17905441dd0d3508b154d914136590288ac71a059a1f7f1939999c0ef7a9a14fb9e74a5147472af5f5a1a3aa601b88141216376ff431976984ae8c2ca8a1a74fa417ee5fa9cd475ff841112d899926cd3d5b089f8cf8fc266a610cf43cdca6522336ff7b6e511713b4591e66e25adcd630f0d2404352dc9609452056d06c1bef8236e74a66b6b1eea14678ae83fc48c8f046f9f4c6356ac29425448cd6d24a40c064cc7055d2a3e75ea8d93d933ed4290b02cceda2b15d7ccdd3a297b951b65bdb69596878c25e82e18044ad0513b3bd0d8f9a09dcc66df0b4851e5f55beb20e6fb6ef9765f026c506b0aa35ddc13208de6be3966c85030892b54637f81fd19cabf308851060cbb2cedcecb3958e2cfbadf90f863e35a06da0c7f187630762c499c29f27a92fe9df0872a05f4689d3ceaffe3fcf7b97ba682601b84b4109cc8fb88ea6fbf38a4227ffb692c040f9b375a7e3dd573ad7969fd24c0a6d30a41ad1a0e22c18cc38efa3b1da4f518b85cd3373b48604b214e4785f0b5853a5a9b95d6b27a3df8180b6ba2ec15eb3ea7191d1e897b04814b3cbdc248a15d830770bfd4dece2872361e30b2d52a0ffbe2492b4940a7a5308afec085b5f0ddb46f9abf699aff3c4e534fe242a84ac7a4a06a72dd21c4c646324113919f149d585de688a836166ef038790a006cee6e125fbaff320fdc728b8db9077e4289b0cd71c705d943b1ebef1e3faac011b502c7f487fcadd7a45428843b0ba47a383b526f977a373b1be2e5deb091f3b0108a8e9f9e719ef749843ccf1504717e8e05c244646bd2de076c733435c41d796724f24fae31c892b6eecd97574eaea5b314d1b2893585ff31cee7aa0cc256f46359857a8515e46877095991a27fb492f309656370d6b83b6ac245df42658369927d2c1797f7c5aa717dec7bdc5bbf29e5d886554f569795653dd309f470a1f0040d2e82292a77fc18a9ba51130649b5fdc0e901904589898cb29d9d6817bb3381fbdf9c5585e373011fb7e94e95e70f633fdf4c9d768ef6b99d0e2acfb408e23b1b2a3e1fb469c67ae096defef9ce1cf2a999f2e71e2a309e36e646d1d66aa75542f530814252d4aa1b14100ad05dad43632a880e9ade8f110e7aa4140b10d6739bb81aa7f60c76698ce3da7d1a0221d1b3d9bbff8925d2d4bc2148f12511f03a932be515f90fb00a9015d190143c1353b82ea51ce11f8a8a71379cc7d9b7988ff3d6bb4679799546b11083fe92935a056665f484bca9257e0fe705686fdd4e3329ad864148175\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6a4f46556975eedd0a1b006297fa735325d5926c837abc086cb86e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8db70a7495e303c462f55028bb76d9b455d8a3f6d04bca2158fa76\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"902d5b09705b19c59d96e133137fbc0b4ac1e14d9e7e76c80caae50174f637e3d2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"79246529b40bf6b72c54491df278ad6f03f9580a0874e584878a5b9f2a26f3d383739cf5e9\"\n}\n],\n\"handshake_hash\": \"91b6eb280fffd5c2083bb7f676d579bb9325d78548e6a545a973ae61571008d2ab47d5f11d125c49da3b7ecfabdf8f71cca2a0ca18ed1f61a7cbb7022ea559f1\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fb0bc1c036c68d2e4eb5c29c52f0e57fe49913429402948c71c72b56d723170b262afe28f2d217819291390b9fd1d42ce2a0eccd6aa7fdedb6b6b607cc52f1a54490e31ce3e2f0377953a5a12207899f1dbb09ae9d65d1e99522d9e936221e5961b1818614d67ccf\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434353eda9b1caa80da6b6d4eb058c87fc229fd403642f3f428ebf040d9648f26e25f9c16f7efbb52f3cef0330157602ecaf4520d26cbe7facfe56640eb34ddf9bd8fd8e3cc288782f959e1dd5a7e9a07dcd51ba9a03df7e3a1473616d3824721a8dad386b8a353dafa21c8094aa6e79a2f9b93b4d38f43e709c6c0359942c71e51366f05b08cd5b02dac8e2e74ba5fcced7ad82448557e9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a3168aead2a8740f2cc045be3907e3c53ea5391076b5553ff3f307\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e49b5f848033f15253f2726ef4e53bd874917816b9283e054675e6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"308231520b77c3de78742c4bb0d541e079372094c1d6905e93e61b9fcec00297cf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3ec150bf34245bd29937f33a84f042d3ec54a657ce47dc398ee4dd26f5d09b7ac0d94ab813\"\n}\n],\n\"handshake_hash\": \"74ad4c6925708d37172b6a7c356ed03443c92200129ad0de3626d511c42ad180\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447501166fdc031c472cc23f577b5ba95a4b10899c5a777ccd21a61cb55356bf56f768e6cb62e4da0c5b339a732ac80b3091c08f2f4f7403b26d2b64039b4d7dc7ae857049481735a982bf30b2e9abd6b2e7a5192d5868fffb9e4b47291cb9f31e1898ffe17a1c5ec7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439ffceae94218ffe1ad15d21dec02b105478a80ff5c74ab6690ba3c6849198238ef1690ca4f1bedf5c070e9b40badd876b8d4f60fea825ddfd178657133d4dee9af8885100e276d9c19f3223fc427bb5baf4775a2ea05bc6b35377da67b32cde39eb02e4c2f2ba8ed9a02454a3edc6e3e7e6d105ea0b74e635aa9cd1733a2d1af0c8e3baa8d881f83465766079454c77f8f16fa01374193\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f946e2f3997e854bee5e69e0eeebd0c516e87e959fe91a0ce0cba5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e001328954806de76b6b4543bdb5897da9138dedf161dd710a8e1c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2b86f81056d4372329d70b22ae0cf54c0e4bab46c8edcefe8dbc5a8e4b3cbca9fd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6e30dbc5f8a743bbe6420da76b407b25457de6f13745602bb9111671780905a300566a7a09\"\n}\n],\n\"handshake_hash\": \"7aee93a124ed0525088901baff83f16d1a3ecc6416b4f6496d8613b825f214f95ef85103795adf9619cd6fb90b12e30b3fb790769ff358ecf2b0533b768e2587\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c5f5ebddf3981dd32d5a5b72b8942382aa9d0a38ff2cc9a39fdc7c6a70f8988e135ba14e3a225ca893c3156f203277744819bc00cd14efa772ef043af38333ecdb2018ec536441b5669611dce881384e7699f81f7c54d5decff21f1642462ea76538a4647297b751\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884357412c4cf5ee71d39f7a43c16b7b3204f28ec167c9a6596c3d5474c6355ba0d03d06cafbd4c24bc8d416806af1aea5d60f222c70c99eea7e8f24de9a1d8026e9a9947d47b249682ae97b235d7540b15d3d97ad29793908200ec4c8b724e208978994a04bb64a8b728f4168f2fb5703312819e886e37c67fff078b0835a455db0270d26f7969cb8b9fdf8b59299d816a59ab11c2ffa3154\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23990e97ca7b701ec12e016e9c8fbe739195a21f9bc45f7e42beb1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"84092bed890364b4f9aef1e9309d80588aab9d4edaf81836676136\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b39c1cc5d0451c375c31bc89138dcaf18dfb3909fdaaee4ca6b618d1cdbb2e10a3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f452444c47e13d2fbda643a25c7dc128cc0fade29959302969dadce645360d70dc87a45553\"\n}\n],\n\"handshake_hash\": \"e253bc07eb4088383500c662e2c9efb345bb59f4b0b092f5273a99074beaf4f1\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794428d3f15886df1e2f833f2e1f28d4a8903d3a0b59dca66361973a50b84f70843845631907fc7daef379d988c86ed0656c827960460d7f109c138c0816e157269ca57595c0a35bfc5790d0071de042cbf23804dfe3e6b98d78ddbbe9d909f4b7797a94812f27161ffd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884398e66c4354c6428d254d86303a34a98b3bf5cc6cc1dfb80942849eabc3606c6a787d322153d15c175c22482179e2b798f1a0854aac573d7472bd471929eff7e9961fea2c154cd6048b139c5f3d944f63863834ae9b2f2a99fc0e3b48d66db0d860b33c2a89386ad4905a83e16d93c444be636cf66bcb2fa9c0aaaa4292297887552ea128a459eb04c23cd3807821aba2e4c8c840877225\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bbd359c19833617c3fade1e8eae65962e268e129d982407f02d4f4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9e1f1ea82cf92ce758201e46472f72d4857d0aeaabb3000d867ceb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cb3218592be6614ed7fb243de25622c0bd11b0f3cfe88d10ed67d3def5699ed3f7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4338b41a75790bc8a9d3107df9cefaab1ba5cadc831f9978ffa773812322c2a620de9b1274\"\n}\n],\n\"handshake_hash\": \"9e34249576eb3156de2ac1d90ef64367a3a319e367a6b3948cca7668b69bd418bea8785c2b004677f4d6fdca82b76bd74bb5b2733017e0507c909f6a08730d75\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443b6516441612d15ba0d5a01eb717a9713cd9e49ca83a4c4ffc67164ebb99b6c9731b7ab54f4dcede9f17130938a6aa7b019d969de2ffe9ffb06da1d417d900a32908b9a9d4a27f2a070ddd8ab369c1c849ffb6a88bba8ec5497b04b74f223753abecfd235495724a38a9da60a847a9360b51f69d941a867dcf343c1664d94dd6e91125db100f5a3dc85006bd5e54b2b2bc928c82659aa5927e0dcc74799410d91e8700688552183d5ea6b34330b0716197863137e17a37667ca8387eff8a83832f9d568d9f3d529b1a18ddec81c1dba6c23fcad0ca52300cb008de3ae42452bcf1e9bdc95b0da7a3ed92f4f6c08c64e0fef26f4ad4134b815e88a5071897f2048c8b07f3a3cc2e519c52dc07e5bf48e8e6d9107ed84a9a80efb21b97c27b14b9fdaf4b6aeaf935af9153ca6b23cfd42c6fe3649ce87b4cf54ecec122eaa05f817d4e6bc571d3bfd482fa6a2e2c4f0744977582bb444eca3e91a72141c79f34f4463dc4d7ccd41ca2d8d0a69fbe666c4bae299bb69449ee710436c6b2c36739a2131361f39cd7a8c5e5c27053ab6ac76474275790e3a24898f9d0f8bc54df58e669f0b4f26e3570a24d10e9ed764718f6281a5016d7033d8729f62dcf33fcbcbbd46a18995152e5a74083b5d5a051b613d50f51d4b50c288c8dc0dabfbc7e1ed4235f40cee43a36df9d510a183daa35936f44d015405961df1d2b09efc48cca691fecf6217af013fc9a8873fe6c02911690b1bd600e1c9685e3b8955cdba1ebe79ac36167f3c8b5a63e5b288aa0ebaa93ad0327a3bb85927690790165e7c2563267c016ad6e731a2ef7d2f6d4c396ce516a55ea9ca1509b5fa6b1708f81c884c12651882af266749953ef9fd3ef65098df9b7f47afa4e004e175afb6d53f789362a4dd69bd3134e514d519ecfaa4d108ee08a8ddaa337292bc44cc32f04c2a2101fbc741d5691324b5e8439cf2425af8e46f698344247cc3922a68760f0bfd4244b2b637a9fca363b0d6a8539a795d49201e019b2c59d47d13763b7f7353cd337a98a52a919d21aba60d53c447e1d242d723b4fccf91ccfb6cb924231c2d42669b36dcce4799afac1979727dd4b6a8f29935d897291d95f24c4d0097b78873129d435e14e450d1c95fa16ba2e488b5b87ac232056f9fa950d49c21b8b542bb3d9bab3baedc3f10f8492c6ea0c45fae038346f8ad8891343787ebd61062249cb15c8821f62718b66c09a064d3e672a343dc5f9d739e9cd800c431dc62205997bd0d9d9495534f1ae3c1dea94d579e766360da070b33c4f676391a80865b7444ddb17da66d7cea4f5c063ca74afdb78024b7069cc7a5dd77139eaf1108a0db97f42520243fc96fe69d8735c4b5061e4b7c11009f0e391e63f45ef310a5046f24451ecb854254152adc3615846795e9c7d1fb391787eefddc9ff5e42a5844ff01ea1891c8bf3509c5ef771c89f77dc45c5281179115c32086fee731e41e5c3f6bc96e6019fd5fa373beef507dd99dbecad07d82643eea805c46282952d4e45e89e4d6f644bcac3dfab535905d4fc701a72903cb03411cb352d974dd776fd9e32310349923af59f605c6016b652ce0278181511f54a701ba621ae09cce679ce1e9472ae537aa4f34a895b570a4d9d94949246664cb5f562d20cfd910aba3e6404f22083d7795dd6d996c2ba0336622e61e8510fd692f1bbcf00902a8bc18982bf8c184b2a3f51b7f8940c1a43a79a9513808ec6ffc21bc475eaebe1141bc74e4d615ee6aa3cc2469d8ad9d64a26a37525e59e952bc86f0cfdb9ea6d9e91f753c8505d6f3c28f41e9f5af03770c956d26bf13079640956d1cc26a7a5add39dd0931eb29771808f3b2430d996d779d2cb02f6aaa0f1a32f9732e696cf9397404084fed75a23df8d755f880066211788c7632f89049256ddbed98000eac523eadaf6a9f2c587864902d478031733f434d557f3de9a3a5a636bbf19287004133cb6ac97c9132423e9f58887031552fbcfed20ed190069fc492ff70283ad9b8a5be75646eb1ce9d17b0735ab27d1c46cc9d5b41694fb516b4840a98cbe92990afe91713cfa0d12c6fc0b7d8a60ea179507885f41158ddafc21d8cba8009f12ba33c74d6b5871f53f59d02eb5bbd467b66e97bd23b8affb8ef3250128730ae8032fb8c286abdb360636cb0a55d5e6cac21aeedd3f9111566e4f159d3821dc2078e39724f5f7fbe55abea1281456ec26cef75e4be9129eca9c2d611280dad944ee9c960065ecb50f2f61da9df81b731ae907ba6d888d3a2d6daaf5682906efc134b6af469bccaed92c02aadd00606deae3f41fff59f721aead7bf6398e4692d683754325a0fa789eb7d51716d3ed98fdb64896994ede3b05bcf7746c1be972b947b63af9ab7426825e1056e700d2ea8b68d9a9ed4958dbfdc0298e345439d02a64b7b634ccad033373451fc5211ac644222b437e3e4630044b7d6b0bf216e5c4bd94b54ce677e3368c85470f3d12ae75de49a86cf7d32c98b9f189244491ff6aed339f6c543efcefb31afd36ebbca0307a37ac73048e8ad4a0281e945ea31d7fee77999daf9a9cb33e97b625304bb8320e15da751fac771b2ff594a67804623bf424f869952df356acea67cd2c61bfaafaebe178709a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dfbd07e7d18e99cc888d3dd7bac683afde4f9465e6b6f287deab4ca12e6fce16bb0c9db9043263d3a028cb943fc981a9148147fc37dfb3cd040fe9ed23925d12d92e9cbbb014ea25ad9f12f71e1b7c25466fcb15f2ae07934c875c01e0b10e28db976b91f9a52f6b5bdd550435f0d75ae6271e6d81150ec0a03476057e53dc8db0307a5a09e75d49fc97f59a540ff22d6908633a4fff898ecd8a0d14ee66c8960e059d36928a4c49a8ab429a0f9ed260778fa900bb21558af93bc5f0f2f874e5bcd19e1326e339e40ae22ef909ceccd3ccd4048a96b269a85967a79d2d48d6bd6331ca531987b939406177199a66772728b1b0f532eb88dd86111b979039cc703298be1b8d65f74797907f2054c4557c6922b5cee0d2aa3c95fc27025655de758bd244c603e6bab25069546f0fdf4e9d0ac86908895eba208ea3ff67151abfdf207c26126383a51a8760660f672dfaaf1005427f7b32409cdf5b64e9c7cf18f2996ece7080fae746c3dae01ad87004871fe68e976efc25bd68b30daf25cfaabad00bb28f92a9d8b22b39bc140618683532c65da0361d38200a22fd7d617e9d3d1e3af23c40ce8bf71884a3f81ff5dfc487040fcd40e75cf1d2d46055f6208d2edf5f86fbad95c73dae8d34ce701959b2539773f1e02321c0125a0cf407e6153c1d893b5802310b2f6e35c24789bceb71d428de3b47a5033edf695d65a1f7e699e562c3a90fc77b2899439b4645eb344f2534d7d2e18bf0ab4d866fd791b56a0799b07769e17c199c16bf60f5ec26860ad177455f6d84e58f7042adbb869ff6cc85406f72f1a28a3d5cfa0771e242644267372f3916b98d77af8136ae27a051b6255c142a6c5978b7bb521573caf5bde5410bcd3a315e37de72016f87491dd9aa63dfe5605856b458859a7be8e5effde3639b3fabc1151c2d49b1400a7da965e5aa139ff3aac119b693404e54a90ae60e6acb4806312dddbdb33c9fec0a90a7ae6fe55168f064532bae7a13d7fbc8878699e44b587658fc4f8d3385631bda8ff553361af1e0458dc7ece02ae72ed22df0e3e64c34ad519f6457bfcc035c8d52d1665a13438408c56c0515d36166de448027394f221584130fdda02ca2f0509cde656556b0c6e577493f4b92d5b45fb80786356ce1b747dac4a16ec9676220a43f51f9a83e242f67a94d580175dbe0035f7c5c9bb804f601aa810debcd3e5f3674276c5128974e7960e654ec156d40f29527a0c9244f5dfb077275da38875855ae9f700f7e53f6012422758a8a1a829ad2a2e8e705b4751c60ce782c3c65ee2317bed5425d57c25cb05b9c960f4049be7acba68b9f90b3ab5f9dabeb30dd1d9761ffd027bac1fc1c8e8231eb7dc9e387faf3b02b6ef71d2a8af8e837d72e111253cdbfff330b82953a7cd748cb27c27e701a96d35ecd6a4d454745040748344728550cd44da05855e82972d3df704e1de42c6f915b12f9d5146dac731268852a9ddf0aa2bef38c57c9dfafd47cbf6589ab58687e78570cfa85bf22c65796115354f1dc6f33d066de823f5774e454ad4c042fdb65569e8fca107211fbb35249c26c623eebae49adb653f8f11eff8a2a54c50e17df3ee8f030e6a872a60f438bbde6cb266d343cd18cbe20060e6a031d659eeb4adefa2a9bc65827b1dd9bdb634c179604c5f161d33ed8b47abe1a2f15211df224a5f1b7364efbd18da685039d978982518f0df5cdbfd38ba6eeca3194c106894859a3b55f87c94b3f4a978e428b31e2e93e72eaae8c9c7b68aac947870811e00d290212a391f847ecf70c4eb598390620782c9ef43af78654c30c594304f9ba0f9d3e52adc7ec13128f98d60d8a967c647265beea9b5c4fa1c20bcf72e3167182a05515ba64ac927ccd04b792e40f75db5f80bf0c8f2b257dfc5a6a8e661d6eab926cc7b4da8d470f4c579fd2bcf556478fbf01121b5d7af1878171c6384a3bfbcf5cc9e19f3761f7fcda433b5332a92fc0fcd7d6c640b244ee45fbf9a42fc0206007640d89f22bf1feb92a4bf36ef357f68e8b1189fb8f6a5850127eb3822c53177f5a672ca259ac18c4b1f9e250e159bd2982db01c0b7202635bab4d843e7dbd3b5bbf9a7abd80c31babbbef9f4d95931ef5bc23d9b91c02b41c8b6a7b9828481eba3f756970227d38858bd602f1ee2030d086fbdfcb0e436e14b4fd47dc15e4ea2b6d3a0fefb4a9c6c1f6b501e71d27f7db47547e226d7c7fa8737dae2ba1f7fb2c04f05a5ce87842fed5ce95f4da8d96de125996409e50f3eb845994814e9c52b365c5e088eeb1dfe7c8992f6cd7114d80480141fbfbc4829fbc1bfbdf03906785c6d2e77080d10ba934cd9f75da3cb0bf4c57e867d9e77fbc8f2b17325d1ae1255edb3ba33f7eeb6f5b13ff8528740ffec270628f0e14bd3f5c293a841074d650834c3e296b0efcd61d34124e27f521dc8da02b9af918fe5137684bf7629929c314f852db0b117da9a3b552754abbc582b246d1d385da8000a2f6f0e4ec81c6695edba6762e4f7f49c0801974c0e6a0cc044a224c8f0c48a2613b1cf83256450b88f2bee117495609824c0273e3abf73e41ef0b7879e46c6d94884354c265276f89ab1d626e9e44e72d05cff1855b504799118c3a421e0b3c9cec16890c4662702673dcf9dea2ada360c25f39d8d03cebb7264bb125ae30ffdb38ec8f95357771acd624dae52528fce7a043fb768289e695bef68be69ec4917062255cde1bfa8fdb871ec8955f4c2b587d96c6552e171ad6928e08997298164646dd70ba708865dce8ba4ea23a0b1abcc3bc163955f158bb16fe732fa2dc8c29f46e0749fd238354de371d224f0955869dd2a6b4aa87ef9e25fffb11941ae387a8feed6beebc1698bfd751c0b49cb78d205d0e9eb03e66091d7ce889eedf6cdadbbdc2be49e778db2f4dfcac9f48cd5ad3e99dce82dc4aa3bc5dd68cec4962ec1608eed7bffd596de026dc0336c97478bc4dac7b21ab4dbf0648becefdd260219d219dd9a13bdb79bde31d4b2be4eb9f60a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5a8e99537e8c207fb1b572c4d2a5a5410b5a4f145472aa25adadb0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"96660a80c2b84465d7def325f4c3c8da967075721cf8dc827d4286\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3691ef5e00f2a39be160dc5d1d77c837776252b75246af364537129cca515e2e50\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aceb2a197e705eb0fe3a6bb4e7d70dd7b55a096fe7d0bfc3cf74b1d5b026fd35bd19f83f4c\"\n}\n],\n\"handshake_hash\": \"5e38bcaf3f5552cad9acc2103a366dd6a6209756887b5211aa93ec9867d3896e\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b13c5a6feb345bdeca3d72dd628ef5c2e91606dfc30d5998c0028548eb2abc3c528188f677a1889e62813196fa1965760c575fd2c15069a1990aed5a72a37545ac17d00c68d333bb6349dd3ba145ca58eeb4f081578bddf36afd277fcc102d32dbe1fef9d30d60798158f91e5a6d784897378fbffee9d80091da35a515d75a9190d24d758c5169f0b74ea6b9a445f3bcf4be096b137cd0b228d0f2088fecd03cb04f57397cf488471a8cf46276c8e4948ca050e9ab4f2ceb893642f0d3f2913452cc268d2d4ffbb0e1e70240b5519ab1019d929be40a6bc658eb532dcc4e4f748c4a43d703c71f05c1e2837288ee406fd3bc7c44f603fc2ff80b4ee4433e373beb3799ec2ceb1b56eaeb38b83c4ef95f2a0490fc466038063111b503b2b12442e1e2766ede3eec76239d7a55e7feea98c4eda6cf6d907ab7bbd3348dc4551033bb6605a25743d2f5a4ae665078e6f25dc514a76d571c392b9e2b51de6b8155b7cf4c3651d44afb3da0160bfa3d4f75bb396676674c82c94a839fd70091d4d594a13c79dcdf39083d56bb61d0b4598f0ee336cb8090ad4cbf5b93e6e2b922ef090d24e05fd7f0864aa576dc83e6059c85bc4a7c48c955c9f0b3524ce3d1ad3931778f75f3797a9957654c901b65be0783dbd6c2cf6fea73a66ce9274dd85dc52e1eb2a7944bfefcee2506c5f75001295cd8f87078125bc70c6fba94e0aac284f1dcb3be42956dcf8c61a867300856f6e1c396bf69871e43c2df8bd407bc8bc2f04c26a7962dea0effdce01b1431be245e3b39f91031095a33e5dca3184be2f02ec9b4fb15cd52c23f43dfeb42a3085fbae3ec0c01ce744686d931aa49d89daa4757a8fec479956be98812349f0132b2b28be137e659fed6927ca13c0a3837a42942c32336c9094c16b28cf13814fb3f5af14960eaca21780d9fc3783d891ba888c7134569804dfaec8471fafd8e37db937ff5649d429b1da397fb13550d3ab0e9b78296f427758ba9f4c7195e8c9acb3b1f30b4ee0991502dfb65a6172c6390aac2166aa5bb1676a0fd94bcfcb54a8863d717c2666892b229a627f1415f1016c95a4240e80d6289e095b81d83dad6a494136c99febcd54907f1082328432de9bb09fad96de68ca27773daab7fb7a22c3577204ecfc4ef5f1b1ec0a1f5c41d5739972c7ca561f21c754c0dc46ae774dd9b12288eaf05ddeb1da0910560ad5a74f538234203155d39dd4af023020455bf77a7b2b3ce73b6eddd7188b63f39882b79f79aad865d02fa3f7d2d28088e8d97c5a06f9f561ce3c061c51491ad376e3bf6824fbc85e770debe2a3067d5d08f3ec510dfd7e51eba7ab67efc40a5690426031c525927c44afcac3d7c25fd4f108b204a3440b086fe3c2deeb837bda70e0982d53ebbaae547356b333cdc471ac3739d165a17d2ec9a88c8e78eaef6079ffd1ab34f38767d0ac406e6867e49f49742ddfb2caa1d02ec74b231757737d7f4148ca0ec732cd3efbfd33753874e878cc5eebd172b0a50b8b5f750f5e1097dda0e6ac4505ca4cfb90a1bf15e134c0a9d8ffba251de37093376e65fe604b50653d732f4abc182cb674dd063117ab4ed7e4d3c0127cd29db82bb876700b270f4a83a1d3717300db7825af61f1b1a5c97093759a23fe6274e2f3fcb3481a77a76d9999cabeb8b9e223884402df52df62e9be9491f1a0246c33eea75c174ab3e7355a452ba3ed5c063e3f3a9fd1ffcf600cdfa26ca8f7b045ba50dd17a771e1f8a1793a373c6168fc1aaead9ebf8325aa7cbe4330079af2a0100d60f022086fcf860f9c9418ba9c01edf2ce922c64177104b9d3ff741390e356dc59384eba7d3f4fc6fa121757d311e3439b7573683559114f18c2696187ced96c7cfdce14904f54b9b637d2b56dda00d5cbb5fd8eb7076918602eeb0a5c2c5a6eddde44b123e48c703b4a37297bc71167ba32aa1f49410d9bdff83372f7feba9e390777290b07681c704b3db3f7be8292365f2969b4bf93e886fc2dec9c49794a7be72bd1ac53422a441274ebeb3a39b042e3d5d5eb9363a4b3cefcb0fea0664d08d68b203d5747aea184fcf4c27ba4707c95755172062e387cbd00092ad3ad9cc580f6f096ba86ff076ba300fddc66daf3c93e69b780b370598fedd63d36551f02e89071636d963562ee5118e6786290f0144e5951669a2eb81ba8a9a3d805c997f4267c6c6c448751871d941e85fc5615a391f3443ebbe678c7da430e5275585b08cdf8e2ece631e11613389f67436f19f080df7bea8eb6baae32265106e7adcd200c895432cf920b5a74408c24b245f676c96994452646307284e723b3398eaf8678425a6c909da546ed93575e3323081639db821189880239a9044efb2a664979e85eb33b1a0d6838095f554fb408cc6d463ee14ca8524daf8ed0968faf3151df1eb05d39b9918115df7a5327179623b4c42424c629fd7899cc1d2d9ccd4bbefea5dcc6bb05ed00baa97d2977534301740dfe4cbfc3ba09b3987b8167799b750c6e4483a7f6200388905eab652c9b9cf022e03c4fc8628d4aae6427f06f03f2d1a516d3cf79a72e01b1d2f3323825b9b2385b0c6a07819db5d61c0f37711a0d2bdaa335a604580cef6ced98fdfaa65562a2a33a8d582d0d1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cdaefca4dbaa91ee2c36eccd79aacfe3caddb58af6456f0733a9d3a5e3e67688f53b7ac25e0afa26cf8f079a09352068c3682b001aad3c76c42117fd4a73e9d32a1f15c6aad29cd332e061ce53f5972c75d6fdac743d26dec5e9a285b5e32b795f487e1b648ecdde6207d41fb45cd84a5914d5ff74141e5814e6062ae40d8b8501228d5e6df0deef63df4806fad94d16c9fa7999ec61d537fd0e55b6e65735c314f812f99e6f812c4dfdcdc30035dcedbe8f8651fefb2b29c81785ff8be7175222ed2d986c7146583b2daf24c4869f97edd6979f4d194f93788f36ab157ebebd503db0be56a11bf56af733f2747566e0d114d75120480a736cfa44171261eac64018a89bb0126a7fa2cdb7eaa56451e1a58c3908f8c0542c71b6723a8dc2ef773d76fdf96447e34ddb8fcac75c41d288af207706f6f19719ef7e60db3ac4db8ebf87f53a3641f25fb956fca888315ed40bbc1fc5b29c84ee4fe4406517e59778c4930f64a4f941697c6acca0868933c301ec63b0c206af9744301fd8fec474cd31a5912ee329054d2da804401f36569b4640371515b02e515e3b7dc08c5416bcec87009846688aa3440ef33f417b733867fbf1ea98287ed5c4419e7976d58b8271cbf6191f4de9a662b0622ffcea69fc6ae114e6f9c73d2ebb8c7f868bd5e09458e88befce45848c3ff948308bc4f8400df9d86bc13a6fdeae3884b08a76cb565a41259a041ff666cf2c038d36aa9128d1fe09ad796e7ea4fe182344f34a8bc0ef15dc188b7edae1f4e934a15a75264383c459158847b37db60a6c802defa99f9ff8a8cda21cc00e4fa5590dc7ca3c1a090bc38ca962df38713a73c5c2d08e3f9d78857f5cbc959006d3dc83b151a020688e24a882f57f21f02a6895a0bde917be6e7490523b02915a1fb96a795ad19e2c7e6275b9303a79ad2e79ed63e34039ac8716d5d394822095fa6c5206f9d16439904b2ec9b1d1f0d7396f7b3b87d261a0124a41c6627f968c1456662e05482118745d499a0dec9e7eb452deda5772156f6f433d43e0e8b0a77c0503c52a256ef1bbec90f2ab429efb5085f0ffad9025592a71a74fc1b00493202ae77c21b83368f733ac1b5f36d7ae521eec908d8a3de0ba28892057fd771f2d5ec16f1595a628eb98a6dded5ea43486d62c0a017e10eb41cbce998c7b193acb40874436eaef6de80ddd4cf32bf82672b1c3b3cd9542dedac76496de1b435dd0b3b2aa186301b140deba443b755b81d75f77e335f06ab41c533de063f92f768910fb9951f2015d7d65321b103a35fdddab90eb3930d9c39224428d99e179c4132be4c3878695d1009a14c7b23eb2f1d57ee09ca63363c8005382994b8c5d096f1760b127df81fe37b9c56e2bb871a26aff95faaf5cbe0add37528ca30c8a057b9e56184c7e35dab101401e8e5f23939147555bfe6689196eba8bcfa017189d36df03324ad32dc6353141c9a349982381a91dc5cd160b83e180d0d00d577fa4345bd7d6c01ce74164f8c5b8bbd2e77463d9328aaa1a176856db3edd3352e3c8b5c6936fff306989c315891b51acf8617a22ad1c3eecf242f9405a13cdab1d33efc2ca458d70c94f4d939e522fc9d2b971c177811da1bba4bbe4dc07b80bff12dcce868fbc42df2d0b930da9608bc87bef2e473727cd88c536eb66dc78d22ca58ffec301ecb89e7d867e35ba626d63208b9987a722dc9479110471335fc6c3ca4eb13c53df6ca6ba3ce5e49be07a8d350539499e36dcc224d1f8055665e2e207bbafa80eabf6011cdd6753c3589de63723c0e05f3cb947492364d30bbb8a384739b690821aa5ad342a5cf38ab465a47602a51b1d620774318f8601fdb1c78f7823cd01cd2b6f40d6dce0247d40ea50a3fce1aef8359c4ce5af416f2ddfc0dbd80d0e2b6ba61a81f62a049a2e454a637b8979b9d774a08e08451030a3f20a9da089a7fc906de7bc90fd25424df32a5ce506d09d4aacb3de9a9c55932bad21b6f7a00efa5db965e6df9e60292d26364ad57ac0d3af122f1c920fd9cac8232073999772ab77548436d23b067966623dfe330176c1ed2456138cfe7f81237a0742f309db82549aa75693c8724d4beeeb2ee9a41c92c888fda5d8ca73e5d27349b37c5c7a84440fed28089a6f894b1cc7d23fc583631377e33729bf1fda9160290eef10490d8825f65697ca1835ea46f200c3cba0361308e1b353a02df5aa0adbdf470eb72ce27991f9a8394dcffab16189d3cadd2318abb5bddd983559c67facbfc7edf0d8ff2a95fff1246504a1f655bf4e1bf87a761a3df77cb1ce43b36ac9f3a535a85f79dc7f8d1f7258ae3975936c5428a15207dd57a1eaec3dfcb153731dcc0dc36abf42362772713d2dfab5385cc01dad2ce8688f49500864729424c364e48ac375503f42c20765b5fdaba313870e4662ca3fd305844666626eee017f442791560edb4ab496c0697bcb8486b0ad6c16af6ac0f3e94a0d3dbe11593fe645706f9b008ef2e9bcb97e28d82a41821b8cc57d24966dd545b7703923ab6edec560922779c8efebde2ca6a2028b054643d45a651bd2926b6573fc5f390d9830c6f59f10a25b25bd1edbeb7582c8b5da6b39bc26d6337b12722ea1c94f46f64fd78e1613340f30bac9de204d41affe0502548ed232f03de5d41d4768c4abc23dbf5a44e848ff8f4e3228404425e0a848b35331c35a37625f6e12769aab1f5de4cfcf6515bda06b8371fbd79121b2ab4ab200b0a42ea1c7dc78cf337587835c798723059c86221224beeba627a6076032ff879a1e1b9f7fff16ae6f0ddc5b611a001288455d5f09b8529c150128431d2a0548bc72b4ba3876e0bec3c070cee943410d37631b3e76dbcad28fc9133b256c9797ed855f9a6ad440413e2e1148cd04ffa48a9477c21e6f87735a5b24434ca0a633d2077ad32e2b8735774f760e4e9abc95fca75e9a7c2c69f4958ca983f9342d354ecf9fc87d2c15eb2930925e07ee48ba99be8c94ba34943b1168ddd769079d3bca4c01aeeac8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5937e0ecea1d28d051d1c320de5761e94ef2d13c94daf0fdb98077\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"395f43857df75067bd3da65fc3e4413f2912444fa89ddd9da2fa52\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ee2b8a224de9d2c8a3f487611a9d514f7de03ebdf10e92acb219339fd1c3121f15\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3043522add20ae0cf7b40d79b39a9e887678d5db143b483400c68e27c4d75c987ede276517\"\n}\n],\n\"handshake_hash\": \"a5467307d387aa1bae443b53f82c2ff8ac5959d59dd6e9df210ada92a1f0247da9cf2f1bab35c99e05beaf9f9b0212b7f374782a611ba8588dc9a55c55c1dfef\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794443c5bbc64e2a2f20b9743225acc4cc328d7a3917d2fe78dcfec181bb204d88edf8fee29579d335ff238a72a9ec0af547a10034114b7a6cb68e184b89d0dfe2b0ead01e6f09bdcc14fc49fb37121ea4f48ee65357569714e8966709ee3568ff9c5c03bc246e5e3c47ef675c32ccee006ff00786dcf1e6c2bf94883d7f7287ca010c3775a172c732d590769a23d4e82af8d88662d6b62d85ca4cd811aacd2e4401e21a713bc7d7a3bb2528acc1226313ecb6b404a715404bcb36deef296959f775191a773bed0eea55f7baf3296f1264f8938b0ff955755ce7fc6831e9f55f5bb04aac1016d8c0d6aecbede222f2d4e37d19654786ffba4dd30bdd6952df8d5b7279245f57b12c8742bf288c01ccbfc551bc4678ff5a4051b7ccce43e749bd1047b9018addfd3c324b9f4353e918a6255e7e47d605eabdc1e827e799ac05bc013a2b603213089c4646f461961c17487466da75b83cd0c8111badeaafd4a43dee0da5201b4bff097effaaae365713db2253acbc96f38b103cf3f52b05a32cc16f4045c8a2924ea5049ba9bcef19eda1da75320d2df5a3e3fe7b5ddecb5bc9b055b8a5e5dd6312e291a79f9ccfdab08876a5c5bf9fc048588fb5c8e9d78ea70c5575b4b825e7ca98f8c44cf947e6a529514906c035d8942fd9264a06fda1e9f203df30566197969c7b4fcea6b39d1fa40585cbb0593324c7e89bd0a3cda596cdbb8c1eacac56a4141316716b733da993467665db273c7602267ec6962b0f3ee7e16cf4918b3ca41f7da5ca913072b57f5a2408d1522b1ad45b8ec95110b45d148d6eadf24ca1cbb115166a5eed41c92b4bd2616dc744fca6f50c91df658086b09a91b913d12262ca4c363ea81bed401642bc79b62c4e4273b88fd32fd7b8f5d515799d45cc7ac353c4fb4be45b57714da80e3a94e5c81f1153138d3030db45af14210cb889c419e5b210d3c0de5769c7852336bd501544b364dc2fabdddb7e0ef3a8b45c21feec2eeebd16ae8f234afa06ba8061afb934c485da392d904e28a00d113341cbc9e4425021633056ab277914f4a1fe8d1e77e496f412852f5bd16f3052a905abfafa4d1ca7b4b5cdf6501d4c4a92e040c5a2ec03d607f148713ec642a485bc0397503e900dc96250c6124b72adb2b97144f807c1e3f88de712a2302ba7a15f27704e646893c5b32a5c32e34ecf0402b8a34edb09400421e0d38d89e1c5a94ede5d99a6b9b4fcefa8766814b6e891a8968cb7364d1e9de1621df43330e196e6c6463fc3cc76664785b6b0a9b9ed34d0eabce95ee83a6833f78d6b24f48be432bba909e0af34907ec7e3655c27d2e0c487d47a1611ee2ddeca95d70cd90ffb608adb1c615ad47d8138243d61374100bfa5ab8c01d51b52b5aa5097645d27a5ec70ccb7351fb51abb05d9ed209c699585b9567413d8c1fb7bd8de8b46a4d4c25d9ea2a4238b876bb5511658c581ad4add6d89a85621a1025dbf51fc0dd17ec73583d7f4f967a7aaab3a162a19c4e98daf708db68d78f96be6a8366b2cd1989d1d41c0335950a631434c3108d0364527dfbc9949e419a8ff0ff5d326bbd1697a05d897b853979fef9c2b208f5be51280f661a792820e2956bcd4e280f8dc01049d8e07fbdba219cda3f77b4d11f30ca69681005a0bd62ed3bd9e6df129d64413620d2f1acf0cfacdb3abcf3b840d4652683c27c6f8431f79d07c87e990341269c19e0d286350be4550913a80c9b4c01038ddec67551542f28c748ef0440fdf0c9fd071d035f64beb25283d635a8a2df575c2e62fc3741fbc859e14000f2e89b9896a7ec185dee2b1df8935535e1c2798e6ee49ed4ce2bdf02093de541386f93448a00a4a532cd26576d44d93f34d1461e4113162ed71da76e5363bdad110bc6ebfc9659ac19955c1bfbbc62ed0aac9e511fe1a308d4bc21b4cb4f384aa8feae5bbfc8af8c4a3449019e9d43ac17dc893bc0fda2736d40e11ec88e988b64177d0b1d6709a6f5508492e124fe733ce7d1caf5727c8f12e6bf98ba48b580c2d5042979457b1427cfc0bf45b45e1c4d80debb7b39521b7868178195cf5d20777983d23f59e3293b478f9a3c5816a3e3eff59deeda593f9dafcecca1df3706323e83b219bd7caa75e58c4f083ed742c1c748eb3ae06d0f8c66edd26a45c9e63e4006c26a149663fe3821513bfd201b8790d59d35916ef3541ca663cc261509e070f889c9209853d66aaa4a80566b5e2f3a7e4bd299c3c3f4eebf57a1148469dc0f16020728e880a03dd63bc5170c6386338781012a0dc16f8b7c9186f0f59e3a81eb72bdc825609c2f523724725b62603409dbda78db9b5dfc509008be8762ff3d1cbb19a85caaedb62523ab5d6a88a2c339912b354426bf26da9023c8da4a10b1701fddd9d5bb4e4ce2dba2c14ff5861fe0eb9b52af5080aea171ceae5bc5451c6223828a66c05c43a5242d4a419599c9c7c21dae5794788f3fb13c8a2149f83c6445a0fd242978e5713d84beb78db01ae2c2c9f4bbc26965d22887b3e883299a8f7292032e26c804c3496ec11ddf7b9dd7dbcf314d297e17b4e432ff62cc2f008054a0cfd9ef7ec7a209ee8b0789a160bb7efd4e58b17b54132b72d6a81f8080f8e2ce05b8addb606ab24f72e1c809795\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884364b7220a61ceb42e8b2ef71ea8ceadd9220cd6b4182b78b8621e35877da84fba80ed7fc76f39b47c4287719b7c14e1d38e9b8794041005ef672c2a538ebec6d07f8583921839ea585f0b1c0a9976a17857f307cc826cc125ded77c2e0f0e83c437995f5cd229ddaa43dab2a5af009005656ca917b7ea4f85ee82ac7e6e5991bb9aa43e3b8d019ca32082aed78b1c8f09e00e61292014847978d9b40df884c239c032e20003afd80dba9e27f97264062218370590b0aa5402ba469de6c7beb794ccf9f9678a69c977a25485fe49b85c70278d324fc10fefdb50397159edbf9e2fe1cb19acdb1d96d550d6a425258edaeccf5de256144f11dab508b7ff7d661e47a45b521278b2bd6d73147bfc4e0ef20f09111f29ef715533aa36a256f1252ec2f4ae0e2693b853b72ff28dfb81d9edcfac63d711d7e22d4fb2e1e077b52faa731db3cf1d40f429fd9a2c2d4ab5ea17465026243019b74be5a7ee2036c96143fbf5bc818bfabb787d85441730a2ebf3f9539e5f159e1a85b8c8b7c3aac5d1c4a32d1f8027a8c532a1994d9b6e01cc213fd1dca39a8b4b244a3e7368d944758eb562bf1bc2ed7abe702fbfd4eb73bba5d6e381503cfe727ed77fae7bcac884703ee4b425167fafc67430f39cf582915c9b392b77db3892d82fe6911ac9d7314f9d62cbbe930905fcbac35ba4a888bc30bcf5e391a7e4606caa5fd01fcc2c05324d5e5642fef034459afe1174ea994e2fd6ee1ec3adb40322fcec006187e863e31998e82d9c29a5bdfd4e13ae601af75ea6cfec886c5e372d8e76a02c20bb5743cce3a3177556795e23107f0e10a815ce92d09e80bc9894620fd53408edf6e416f8de09022da0373faa864c0a3da0fadd9371161975b515538c7bc4f8da16f9fb38dec75dc7d658ddb33b24210db02bd37e45a05622d9700623b27de5e5caf920d537a632fbe0a88cdd088fd08308c4c51632981451067f325b0de9a91919f353c5715eba4717bfdb746571537488cc972c53d8219842786dddb77d86c25d8cc02e00e2ce668a855befe7539c90a65faa20b92855eea5efb41e12db540d558be481b5bf2c3947cde3c2d73985addc07a2032ff6a5bf371e84f6bbb81afcc0aed70e93ba619b81cd2135730f4d8cd27553904438c1f93e727fb4368b42fa61d07caba21bb4e1ab32930b6f5ff77d438dee7149a01fbdb44bc19a93dad776a71cb35679690bd6c355b570936c62875e3dac61fa94a0419b1df5b21a2b77cce417cedc58b6bbb345d2ecd895724ab5c05244431ce505c3eaef8b993e8ff4fb09f1b59f7fa83158812dd3355d9756b2f931e0a63acfbb778f0b2376a6b1db65448648836c86242f82c16531e66d98502a131d84dd50fedcda39a5a272fc632bcb56006464d7f30e3d637a95e12cea683a89eeaf23981d8996f410c0aa966d869238481428ce8f1ab9877865a8e3a15649c7476505507b966fa2d4d779d17e07f913bead92106934c5e4808f81e0125adbbc0cc96f24e8b7f2474a41a630f7040b6aabfb40edc74e10461c2dbfb767ad3b8f89051f36b8eb85cb1594c317a5024d8cdf5580cef6056e9cc0d9642e31a0803c7256c93e439bce4e2bd804b08e4b616212d32cb8c4080c3bd946987b3c313fa2ef17f25ea830f71387b1daa60d94a99156d0bf39952d763ee246f11eef37cf88cd7bbfb3bec19aac7518fb88deb183893cd6ecc495238e04acdd5910beb41e33dc28338e4d341200bd132e27748fadcf6ccbfea085d563ed0cb2ab9aac0b544140023fffa1658219c2682e39089374be50a2dc69f77bae5411c19094072af8feae44bf1cfd95d5eabd5fef6379fbd6d2b52a9ba58d58d448b776e970a900c4cd390d806fc2ee590f9d411cc0debf79f618490a160fbcad4d3943e3556082b34584c8303179f9f840f55d3c805885bf59cd8c47fec6f97cdfb8bf7a9462f937a8bf65cb983b952f818f13f3c4f3bf2b36c767cb3fc709173436c34eae19c924fb925ad7ab65984d510cac80a8f28ed14326ba0dd49ce916191f7e6f8448c15c35dac0187a164c2543a4f646724596a2978a63604295d443e3e363a537f492b99cf2f076283be105adfd9d4cf9e41998b8111603bd3d0b2afa09c19096d2066206b2f09b120c0b02d346e3990f14d59257be2d9051b4f1b7b7ae49dcd8387241273c45f5275a3ac6259a7722aedce04b113fdd7fe9e3b6b8e064c8b30675aaa80e28b0ee43a4e71dc889fcef6329adf8ba007c168e490f5adbfd6e14bba42ec211f7cd56d0144130ae9a57f1a591afa0476395409be609db43a1bda1e744d8807f158a5bb5b67dc45e22fa921e4fe4b27eb035c7596321eeebf1ee08ce2508691e762519d0097875efca5cbec8f70b96833665349fc9cdafcb0f22e0517bb05abb3ff354407e362b391cde07baf024163370629975cc573bbd66f2026059a98c49db6febd4aaf9406d17c42a58da9bc62629f3ba716b4173cfa0af751db534c31439802b019670f4b494a72c361cbf1b4faba41672b042f865cb36c7a2f38caf6e8681ceaf34556e6d4b85aead6c2b907d8db68685decf998a1b7c6fae9289f9f47664a4ed7f69852c45f1ce210d610050788cc63bb27362262bb798a21ab4577b7e0e17f95678d42d6473e1c84b0d0fe7e8c223231ce204b110915209fa1c50a57aa4f7ede3425b34921f1e8d3e3ee707c698a4062760378e38a24eab41bdf06c4b77f0c5f5f9c2d032dff94166c8422f02f648ed2fbd2fac5c1b2de877aa9879c4c825fcd7012e48e121d61b07dcddcbf3eab34705f39bf9f18580d01d16ab68a986576d53c800fda7045bc45332a0c0ef55bcece2bf03c9731c6f2fe5cc90450cf60821e1317f0cc57827d0275e14d147cbc22ea90ea836df3dc1c3be65d3b6cd48ed2ed52d2c8341bfb5b6238d5846031bc8112354eb21f53692c71273ea5084e75d0e75d1974a6099ff9fe5e893100590530f4830aa7622af9233c9c96fbe854bb8f26cd7ae3b385ae23a3dd446c331\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23a1922796e1412e9fca2769f40ad3a27ac6a2b4ddcc226d776be3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"27f3c9394e31c7e54c0fedde26cf02ce7dc02c447c3885fcec3b34\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fe23378e9cd63a36c73ee4d98e24e4547db21aac975b93d198792160d07890668a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fdc40de3c3f0289d9e076a938445a4ea1f59b24bec476760ca94996c2bb3670d6b4b456f1a\"\n}\n],\n\"handshake_hash\": \"6ea63a740eae1a7843a2cfe00879ad9aeb85d79cf87eb5133be8f742732a2ea4\"\n},\n{\n\"name\": \"NoisePSK_NXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"NXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c227409a3f8e1beafc4937bf6a6f74edf78f7ea06800e7e671bcd5a6a50667db4c19466235e8ae31184e51aab279d7d3b2599b464cc55d311e7980c0274e3cb29018da8151be673560eab44020bacd0e9c6e05056cc3c7b1b035921801567fedf256e2f7fe278cdd30f22ff865cded35a183cd93896689b47ea89c10e85b1deb77f279bd169510478894bac27f27780f715240a7369d36023b049edd0eb8daf21c870bfb41386ccd8afe817a2f2bebc05014bc19c041cd93cb431b698ee1a0ab43378f37a8bb026cbc439a18c67a64930a89be5f7cc166cab9e3967464588a516d5e9a70552d310423f741a5db3446b096a66464a24b19c1b672517372f53d573ead3cf097a9de46d24ffe3ef02bda5bac40aa7f9302962b34371714f5cb6d3836fb2425276304a227775e6f278f9ad11d96c845df6a35a3e5feb3cdc469a3569c85eb70c0c8ab5bc74786e858fcc30c14e8ba5fea64031296d99c7d19266d993521e2d788043cf6d06e1bfb94c09abcfc2755f4f7780897b78059fe1307dc95a5e173ffaf35c12fda8dc85e6dfca3815210a69d29a93ed97a29b9323578be8c0abb0b3c54c19987af944f95a1f55e0bf883f654756dcf041b668f74ad361ec2d3246debb18c771c78599ab6ba47ac8814df7fe8f74cf6876a15fe057a44e7c3177ca944b093e2d3499718b6e93f9c19014550ce31e5fd8de9c97c92016a665ee83915c575843cfa7daa5f25420bae1bf3016bec4d91d7713a9311b966502ef34592cda206c78ca8c1097748e4a8a05e45616e22fff7320d0818088bdd86ca15282e20d9a08feda1c7297d37b286a30dbbf2034f0bb940050b5d4921f3d64d753390f2091cb1c24e1a5bde463c2288a7a9cfcd81943a36eb936fb312d1ce18dd0c50fb78a5b24de87f9fa84a977706506796fdb21b74c1e1299e016f4e930eb9c4e6e2dd167ce033dd8602eca1a03cf26f8b3591a511059dd614c4ac8196bf3e0426d9bd0017000fe39602ea7ca73c96e106e00303036ac8f582ebe5656e5a140fe168c94c71cff6e61ef365349f253383938aa885ae5ee82182d15195bda884e01ee4b98a939cdf33b36258a8c312b790cb7f7b29d22fe7bc82669070e92c87b4193837f9a15f6f00bb76e6e731bbc34e69844986b205d7fbd58ce3c76a287872781d251757fd6eb7a0ab1c6722bcf779d9f8d778f90aa0eaa0949e38fb65ffae73a844dcf688d8c92841e67e07cc39dcb22baff55230affe02d8bad5887665c6fda67071a5c722cfc0f2dfc087687387869b74f6cf41d3039304fc9544f4d1928385cbd12d6f8c879786c64cee320bd3f6642ae0ed7ed04e07028e2d0ba2937713c6c9a8bf4b2d16bab6259add6345f2133eb03e493db3525beb9a19dacec3f9a1b9f46eece99443f6b99cd4a46235f81c5c50fd79c41cc2d616568f160f0f91e2e77f10406434b2f05f09815e2bb86774a744160347541c09058c6eb20d874bfa2ce5686f2262d42ba86443ee2199dff86461d057a126efbabb7dbb386079b4af6fe6d7971e122610d14802c380b5703d551a2da9b9d6ac4a1bb64527c1ee368c38232a54554ce5e296ed2387edc6b7f0621709536623b89cfcc13a291f04b63cd66765da35a2df5295c4d3f12ca333caed3ac66dff84731bb46fd1fa6eccf3edfb6a1df674695dc1a39a41653270a315cf657edb82abaa9cba6396191168bb3c29b5b18d1b42d1421e55287119ac0cdf93e4dc5a1a5447249c4ee6a313775d976d17ba3fb28d60131e99450120c8d4d673fa806f73420db868cd55a5dbb24107c91e21dec0fe84e40762c81e1d4602f7829cb2ef1897b199e03240747f433502cd325c28891612f27cc146be58a8279d0ca0a2e28ad8ae3da127edb0bedef7f0bc41fb46dd9ba2b0a4e848cb6050f9ee681b039a85ffe8bba8d1a757bed060fd844ef5c5e5486c2f5e3e5f2df038b21d773102827c1f63afc010fe0fee938d6a2fbebd4c2fa13302178b9e31a0a2f5621b6ce4ceab030ed9b70fe5b599c054e9e002d9daf349308178e205f9dc2a95b19792e0f710900f1fb243f42f86ec33993b5f4678af46f4cb2301a98144602d298f81fad0f6574e7f0d2ca826afa67fc0897f1b457db96eb96ebd3ca7e79c60179d24e64fe5afde40c85d7087b7250f710936dbbe92a0c3e9dd420c64fd37052bafe6680dbbe9e7708b98288165a63ab44e8c9de610b8d6d4223ef1218a959cb1bd8e0b6b68965e5c583dcd3cfd73bdf90011ddc81ccf3c37e72a083b62b623ffff0e62e7dc1bc26bd1a69a929e76707a7325aa142310fa468658c2bb6078f6818c8fa53868ce3e358b5070a7cfaa9886bdd7852e94ee60f60e92fb923677f1d5e9fecc84f3f7782fd11c24a8017cf8d2f7e2b161b1adc2c401b2666f27a6d23f66390cf7150acdb563ed6f003c299ce1520e68f448dad55bb012ffbec49ba6788fedc84726329cc9c067ed94a50ea6156350b973c9dae003195ee6b8ad2675742a64361be38ecb3db885fbbad77cc7b81733b5a5c510367e2294a5242247c8e697a507fa666aa958a6ef2093d84c53388cc327622c0db5938e0c0c3e7cea821746b7bb4bfbedc8981d93b2880a49fe6687ea924bb38b40a77914f4645497\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884381928847d607008283c81c9a97167e658579193266680103ebe19f578f091a9f20f344e0afe8c863c131e630ad20092ec363bccef0f3ff6411cc714063b1086ad9ba9b2088c0c18514d9e771b9c172cb454d469114cad07643ba454dda53d16b45d3dfa16a6a2cacec4dc034521525b611cea1e5da87e4e141adcf6d0deb0c18bdebfb6a066351fdb08f5d46ab49f5847b83f22cb8dcf782c52f767de7fa6c443d45ff863d53e5ea11ada36c6833258084a620e21baf8313fe021736001ad1a2d85e2ddca29cf875b04f6a177b56ea0b8cbb12c84b82f7d961b0f17cee26a6181c648cdb763c53542b26dae4b7ee3c5a993959e6d39980bd33eb22eecf14fb59dd3fa2e8d257802fb5000269aec18aefa7f6665db1a3cd16862d218f3ed796a7a9ca09ff813620e02ca62806fd1d5f37418449d9637550880284253c8d46f398e5c069f6583ad3220848cb7b14a5c0b2f35096a6e20a39087303d59f2e0a36cda8bec9fd9c4c3a350d7fcdb8e1a77464a1120d61c0c190076a4b99ae3fc3c26a7a39783f07a57202e5294ef9b53796abec9577f3c2a3f5fed722a85a3f0de3874c121d41a5d26eaed8cfe78361bcd9b3376af0f32a2bacfaa01b836d2e6c50dd2d34e3f763d53e7d841f33c2e4d4740b75192b73c1731e8251d742efabe358f08acfba5ec533d55e5ff5fbc289d24ddad840fb611489294eb86c304ef51daea17adedd15bdde24c111295defa5fd5cceb3dcd17fc6d6f68579ce8703086d713f147c62482f9bd07cf8c328e99535afc0ced681a40a00698dae71b402a1b54ca030fd89e8b1951ee62aa194fba374d5140db708e30e49c081606f21aa1baa21845dca5af434ba513af2edfa3615ac9dc89d2faaf863169677b208e8b87b09ce7d464632f78b3347377cb0493c8a0a108eb0afe4df7c9117eb87aa04132f7b9f1e3ec8c3130407dc37d35b87f98ef9f806992852d70e28ad588d959c1a2160fe407b3b1b81b0a74f926209fe6c70fe9b093b1437cbddac0a5be2b31ef9e99f89f75d2ad6c414356030382c2a5290e96c7d5d6bffa6ae5607be7f9ca33d0d56aa961b618203007273f5023f79c75ff1944956243b52f799614233299c2392d47fd397e8682e5b3b469bc97bb4b2d56cd9ed9ce7d7a47955858b6783a4a6d83331ed77c952d29b976c8ee4d8f6b70064005a687a376174a704d5b507b670f509dfaf0a5168d2bbc540aeaae3ca3b74bd83422d88d7044e7707dd0b91a0709848f0e209e855bf3ef7cd9276e95a6f311ab28429b7a152b203d16d1ede851b554aa26007782c66957ded6c793c44c92e24105cc032313a92c2235a135b699cd6d036c00252a9ea2cef97dbbe4711bee7faea79da3141092770ff9aef0eacf7fecb2a52e1382ffd8ce22d8939fa2edff01a93cce5daf2de6413638c6fb9f0400aa3abe5ec8f8dd980f9bddeb568d01aa1762cd80e3ece4b4481ad633c2cc6730ad3832487c3ae5bd3a96a310bb29a6be3a76b8287fddc27a604390cdbb3c8af5656c9c2ec3b0038d92b47dab9783dc9610d03125fd9cac0d7024c6810a3b239603c5290ed6fcb0fbf71a5aec68a9becaa2c677cbd34f48f09976a99121206f349d25a979568c2e364fadaf5bfcb99cb2d51cd685171acb8db78b2349646898b52c1197ce11f264533494fadc998243256ccb6cdad9ffe2c6c9f24b8560c55609402bae3d3c98fad285ae1162d4b346fa39dc3c58de5df573f57627b1e08d0bd878515e32f202517aaa4fb974478d576a83e900f30a4e97141e20e39cbf009f069e1b562ece71552d795ddb1b3a3154fb06214d85ab07045ddcc490d896325f5845fa7a7bce34fa082fa93a0dc660714472a36a3bf6c66912d13f6f3f7a21fa41bc77f1e38d3ece151bb250b3e3b000a2ddc16bc21bf3176821abaf72f5826eea2d97ca74a91e1d2cf8e68b06f5a8399f7fc5c034f1213c2ba434a1688db938403cd9982480ec62559f877b9c490e5a12f0ed347a9103815d1b4533995bdfc3a421ea4da0c53e30f46031910f5ddd52210f4d8f176fb8ad3551ea4845944a2bcf5446ad2ff7c22dc3b0f15d3f1800b33d2ed567655544db478f8d4f4ae57176e97c3af3351bd2c0ed6fe13b7d966ae9ed252a7cb981d6aeecce458b3b0361f0ad213bc8709325cecfa4853240187f7b3610aac1b9013ebb48c0bf1713d16a16a205c25f06e470fe7537fdf2e5794e07715eed7d4c521ab9499775df85c9db1aee1605a48c52c0bf5db50be2f7403add8626234bae1de97ba2e4cf1a6abbbc0c2f9febaa2913259b58f7c964c0f6d98e9b174a6dddc968647c9fbf7514effd9286106c33ac0c7d4650db7e904762e7e04b47aa768a07ec7febff2662985a0181714f7aeaf09dede03099b1b1970ac879ffbc2171c55f3837b08614ea28164c660077a3193f50cdecb7ec62ead7945b07ea05fe2dfc82e2ea2c9e5c3cc6d270dde9282d1b8266a059fee8eab18903399cb515083de9e8fd943f488e62ee33da7ca903f4d13a5aa2f2a8428d64f693f216cba8c607479b77533a03564a854c921748346a3834534be2aa5ccab8ecd9c3c406ddfdec0e1641ed4f27215e9f620e5389e61babd53f09437d00be685370d7a9ea84ccfce4a0ed11e05fc86beec974d1a99a79feb1bb079cc045ab1e118c59faf12da48c4a83e219e2b9edf9c4dd7a2fa8190431bc316ceb71b9751888f0335cdf614f5f3ccf1b7a6c9515fa7bc9294b2935c1eec39efc520552147f073970dae553565db3f6b754ba8dbe3996fd85f640d6ab98a0dc989fcc65e3abe3b2ce9f7ba881fdad3ab9472d23c87cfe76d8e04940ea9d23dbd10d0bd84c0f377c5fd458b3c04cdc30db486ae4e662732aaba1f7747e8c4568ea02bc8bfbf93011816b4d40e7a04e44b44764efdd0c43b04343c964d3aab4f24b8214058db48dd0e920c3be8e17c604e0337c4ac308443eb51d755619153e82f4b7a2a7273acd5e4bd12de3906d462f08c6d1433c2e05d6c165c3475d2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"83c399818d742b35df474daec67b08facb617317aebd23baddc8d7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"096e097ba7f8841f9b73ac6882aca2c60681643ca5e84f3a837f63\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a13a7645fe4e65cc8d14b4bd8b9eb644dcb87d7b5818cde5bd865d21714c95d905\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"593e6300a96c76b7d2d6952d3c47da5fd5c12814277be8dc9beab5eaabddd7b83e5761615f\"\n}\n],\n\"handshake_hash\": \"4198c2e73d20029f59eaf46f0819e3b356ddc95c69ab65d935457d5125545d7c1b3a7da0d03bca3e371c764a8f8ec055d730cea4abc86fe12ca820e4a9be2b6b\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654c0797a89d773b1b648207526a581e86337629a7bcee961f4aa03a4b0c98a4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e3d965fa1a8f57aeba442320a3e8561180bec0d68e06807560fcf9dac56186c7241a60e2c4cae2c8c3743ec2fd713d1fdb27af446441d5c25d64174354d81fa8e3917ac79c36506c6e57b3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3b46530c817107609cc822eb08d5be753e18cc6388ef33eac79238\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9a0329990010503d366c6c4d4bbb5f481646c68465a741ebb992e1c1238fd6e3b6\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"891a906b82d62ccda257b099ab5a591f82187d639d27fa31e7dd492597f00c2d5821158caa\"\n}\n],\n\"handshake_hash\": \"8bf48da3dc39ceaa42eb89e8773904e6d5e05ebd8a3b37d27649280c2d3de8b5\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f095c717dbb30da9357cf32fb13ca0efb5dad1f2250c8119364aa73cd6a623\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"31a6bfa558a8450196b7fcccfb2a8a1344d0dfc90956805b58a44550848f3497d7d0aa9b5e179a98bb7f3df700d1385c4d64700620ccbf5f99ada829df9a0702e732f51f323e0602e90dc6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3089d0bda908c97a231c7d6c2f7c2131ba991ed4a1dabdee164a54\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"542f1693093341b3f3ed18d83c76bf94e174064e87124f3182ed6c37870883cea1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fad1dc7e2c6d356538cdb0c4353c4a2629c959e6d806fcaaabceec2749aa9add7584157d86\"\n}\n],\n\"handshake_hash\": \"ee42dbcaa567fb2210ac230373903bafe85cef6db695d4eade01ad39ddc34fad887556eb6233a575d526c74bba3c6713d632f8cbd101244d1027c228a6236b7f\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cc2ace9cf33cdb0a6d0083e189e31290dd187ae6de9c83030bc4aed4d83e47\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"45972611a8a2cf23f85914c06607b4948bcf903cff384988c2431d7fba525acbbce00c9a2502addcc74d3ee37273e09d6558feefd3312386f2957b59c6a8856a9e18e3a230d375e133e837\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6937d7f7045da4e73653ff0604c854beec7507fa9c005d35b6bc77\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"707264343c5207a13173dbe312b1a3ca74f56cd63e7b9055a497e71792d0f38311\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1305a17cb10285bca1d122f3e05101ada221bb3bdbb226c9a8e1c247ca74a11541cec465b5\"\n}\n],\n\"handshake_hash\": \"2326a9122dcc7658dc8567ab94005b8bea39f828ebc3e23bdf6b597e7e325ac2\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d60e934995775a7f53cf45c5ab0c169bf31d20e3dd91e43d7df9e4b598b18d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f8c71d5353328ad750f970fd7f780aced81b04bb95adcec3e776f89e6a02e9d2ae72e6f2ce60eb65d72bc2198c035063b920cc82929df9b2fea9e11dcfebc73d71d4dacc551e4c8c410269\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"06efceeabd69c985cfc151df0d6752906144cd1161ed940901b24f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"18a6ec022f3f51148505e491509643463574af0367f3da8965f8e6de708eff1894\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cb9b8de4102ba4b7ce5db12e515cde12ad884341bcc531dde62409e9ce0a931ef89cd7c87c\"\n}\n],\n\"handshake_hash\": \"65899d94143a9c5a64af334c3a13a750081c22ed7fa25fe65197ca75491cb8148824a6c863fcca2eb7dbe3211174330ae73e40f272e25a3b117cd799973130a4\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27eb95086648d36cd053f1e56e7537e89be3c0754c157f50fe0c6f360cf2752cb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f79f964ee42eee6cb461aea7abbd91524b5eb430d8bf9e9e63990702bd908347e4408071a5f5cd3c4c43c20a449ea2ffc119742784e4a089161b3ba2bc548ff894c332af455bee9e7611d2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"79e702c9e2794dc6463685934d92d0040e9a67676d1fd1ba247c0b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"20d056df799298202c440c3421f88ec7cd4fdb77e44e0775ed3d0a8aa1a6e88293\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"df25f2dca92a03e3eb18ca9fa930961749e534613cb7bc6331a6ca576d8aee3ad4eb0f7faf\"\n}\n],\n\"handshake_hash\": \"a448397fad0d108a98a5d649ce69dee70446682567eb2b77b4d021c1f29732f6\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e5ca9bac275e7063d8b74c3ff0fb9bfce45bb939c2effd174c615c4b5bef16d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"46dee861029f88166a55b40a36e8e474c5456c36f0d1608046331b0fb3b6e53cece756c4eaf93ef1977893ecdec01d4ec94a022286a814b0bb607f5af1a4c801728775dfbe5b9150a78b83\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"469bfb9ec5900b8466b7833bd94426e70255df8c8ddd623d59a7dd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"52f928f13de05ab5b955aa0ef6b3a4ae9cb7806e28186ce1ba9da4a26a200df53a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"15588aa9c4368f8c15548646e03c5720247a4a4180d52273f087aab2e3f19bc90380c6e915\"\n}\n],\n\"handshake_hash\": \"e46b3df5c0f93279f4b3ad4a83c8610d64b81f841e0f2d33fd924b857dd14cf3defdc7ac9631c352b12181dc273adeab9e2c3d43895231ffd8a4c12d1712fc80\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e12aa2d58db9e7b1388bffaddcb8cc4cd79402c05ca758411826483566e1a1f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5a8fc21664b0e6b94364db4973497f7177e34c5568015035881660b55b9046d44f1d8596ab9ccd7501749511e42155d8df020e2804fa185aed9f64f72b44cc8d5bfa31b8cf6430afb0cceb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ba5ab049640b0ef52438355f0301a5bffc648bd2af722c12e8c21c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"53e457925904f9b09e7b7528041e564637559a3f1df54cfe23cf5c1b296dc50013\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9dd0de8a3dfbb8e017ab53c590c65519a1186329300c8170ebfbaf4d99b2367cd9864581e3\"\n}\n],\n\"handshake_hash\": \"9b98337d0648102d51b3a3ae8686dcec08b141e2259255370443b5d4b3a715c8\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ea61c1283a50041bae32ac543e2861cfb7a3f1389a4da1c6614b37e0f416da6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"56407b343b8cfeb273a07b42dc307db0fefbfcf2209886c9b8d527be6b029cbcaaea19b1e510550fd5a3ab6fe2686d1b353dba157604d89e49b55e02f712c962f33218697e279207d4b101\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"042488622b363eb46e10d5e712c215ec4f3beb0f355c213e0a36a4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"26dec9d63f953704103e6b2aca26f0bbb0fa1e3f04167c6e427189eb7e8e911125\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"efb396e19a750a331fd964f0c46f1472f60286510fa7a27cfc5c0039074e6ea40beea993c7\"\n}\n],\n\"handshake_hash\": \"67166b548dd6f5d2d60e201c7e20073eb089389be1cad6835a468482db20e0435aab312aa460f4cf607dba78e94d1ad6361a0aefd768b8390366c6df5e9490d0\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ef8c25625ba44872bb640c6b04eb7f0dbd267e47212e8f9a191974445f101a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"902baa5a1056cc76454921fda7da9ccfda95040d60230819ae2ef61e5df0f20e84507f3a979b34819b2fd9dc9b50c88bb4f31d8e3762a60ba0da4af56cde165e0eaa136eba5243728cc310\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4fa32d5c873fc9e36258f2ad325e48e6a3bec1cd916b9000f643b1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c1d7be027e908c62f688387d9ab78dbdb61eaf3dd591812184610c067a1faa2a71\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"190b4f596993fa889ffcb5da8bc4a23382720cea0ce281bff251e8f13f40e1abd65a67162a\"\n}\n],\n\"handshake_hash\": \"5ba803dd32ff9d8533416763b56b9ac68e97a38a6dbf2d14b4ccf9cdd5cef7b0\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651b3590e29627ffe91b493fd275368417eec90c4429559eed9c4a14e281da5c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5d78200cf1c0ea41bd3c50b8939ebd77e8e5fe0c6f323d75725746a2474af0a3e3c46a2f420a032bdfc8078b62bb5f7c48256dc3ef2f60e5c76741537e532d9055c81b2a39a9793bcef4bd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7f2e22d7177450eb23097160f7d1d37b82c024fa9168fed52ee0ef\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f00f9e701913e3064e80e8e748232c57584e65f5f46856ff7bbba92e1f6e896614\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a9f711c8307566e12d30cd33e77ef4227f8bd60bb52df98adec189da7cb8470902273d28c6\"\n}\n],\n\"handshake_hash\": \"e2de2f642bfff4b4b785ca8cb1d7eacf22c8e1f36d8d206bcf2f378562324eeab6b33677e37c6a0e53eacbfa5779ae7507100ce993bfd1cb3c5c9fcdd45e271a\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652fcdd0435259f7fea931ab7c49d2e01d383396f4a7636dec5d3794ab53301a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a72ff1b82e82d27330925f3d03711f2e7a63cc8494b6ead3be12b9e452686fe67091b1a28a1a5450f9bc66a5812da2daf4acaf443a0a4d8f13d9035990d155905aa82676904f18de89ab93\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6b3fd2691720f0e208e11a45349ddf3f1a3ea122eccf29967070b1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d83184852d21161ac9d27d65070f4e7955a1a4606e0c26f7f105598eb925122783\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fa27b7b8d3116bc0fae0617cb457d82d19665de4f5bcbf46f847cb6c739d2670298c05dee4\"\n}\n],\n\"handshake_hash\": \"f4222069c708fe1d39801d1da03c061fe9d794d2c854693bbfec0b4d9e0c5135\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f79c60586d91bd3bee3139c22e5b8129c9299840d75405f102c2236b178878\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5df2293633c55dd79f6ddd90f2bebb481393547e0fffe838174eeb35ed79dcc5a476e2de9e2b4980632575a0ea37b67b379a301981e8a1a6c98ecab9bd7b02853123b295db3ca07bcc7dcf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"97cbc541e52d867cf9dcb35d6f83e3953bffa149bcc72ce3005c37\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b6edd88e03e62c1d1ffe76d7e147050858fee0b9d69b49088982876710f17bb8f2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b160972adf30e13f7c1ca496aa0c2f0e6652cbdcb635b3949a0fab4b22b29171295341af6b\"\n}\n],\n\"handshake_hash\": \"ff4dbe233b4a0bbc3b385697a4cc2159246b6ac77c34429f532b118e80ab3292485ae6003919e01ce3d0b0f9c339523f0680755a006e70d8ec36bf45119e9a4a\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ee697efe16a79fc2c788c77617e35577167daa1a0e5df14969e1e7aad50da6f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"21c16ccd7e8b9beb0a132213825f198b9e04e39961bbe4476fae729b2598068bfcab33b51cdce525c3f95a21e32d67ed550b86ae21b1134d6ec30ccfb6028f3c30fcf775714f31ec516c1b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1d5328a8ba2ea02ca38f97589c4c72ef62f47b71d0ee923022f998\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"36a2f978f39044c2a8d2a8202f8a4a7022ff07d0ac80dc4beb1b2dda5f8e8f2962\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0d81e2d4f158f8ed1e82b7a74fe89ebc58ca4943bc9996faed877567271bcbb482fbf65818\"\n}\n],\n\"handshake_hash\": \"0c2a17cdf3f56c032af90450879d15373d7470547edec43814f85384a79304b6\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e992ebdd8ebe96232380423bf3853fc5b0671378461e5762f9608a9bdf74394\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"30027ce9e5ff033bded1aae1e9561e86bc0ab1fbc6769f8a0a34b9e2e150de6f226b4106012cac5651c4a0c7b513e5bc287490a4ead075f18e28f08399f0786d976824f23d7179496d3d09\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"478a84d8a89dd3c4fe6816d73c76bfed27ca09519796cf49cae895\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d7f3856a33ce7305d22b91506efc649adb1e792cbd3bfa8895b9a08d4d64dd8f90\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2a3e1391f6e4c7c8d2e9ebc225dd99b49a0739dfd30050434d7a8ef4ed80757aafd7617706\"\n}\n],\n\"handshake_hash\": \"c0e1d58d0e2469c08e3fe2ba953189b946015d8a79069600227b1966b4d410b7f9a5bc9c0b263cbb04203a1e3dd3c60fb7c177ce1a03670c74bbfee7397e6d1f\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e0eff86b69a7c4b4ad810f60cf8d094b9b83ea7002ea13aaf1a36f81ec8f922\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"53fe36eab96d56763d5dfed0150347dcb6c2ee8e580d66f8d13609fc1e55b65b7634da821a07367fe60b4c1dff24c602418da9bf4f1bbeeebab76cc1754db8effdc5c8b38ab51d60faa0d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"222f0a783912e4fc0caf0ab1ecc1f20193b38d190722db91e61782\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"51325087844f253e69c75cf9f04abd227398dac78489b035146c5cb814fb075249\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"314af6136e3b0d2086be7240969b70f0067fb1bd48eb1943b65602ae001d2753822311903b\"\n}\n],\n\"handshake_hash\": \"4e4f3318947d6e15614dcfa4b7874196a3667c81892ab52618875cf86a0ddb91\"\n},\n{\n\"name\": \"Noise_XNhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e6dbe31813f807046615ad7164cd58f1b6ed5f5325eb3155c9c2f429634a6fc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"73fcae51a25ab99c694105bf7ea5fe16db875230d727f20fd3508c2260590fec5eb40476212b3eaf0ac704f2858699faff8cc5b91ef5792395fc708abacba686a06f8fa16ba2083916b0e3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"273c2982632116e4d2d28b35badfd5653e82e57676d9b456872cc1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0effa64f30543e87dcf0572b090bfd1885179bad730ee35c7190dc2325bffc39de\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"35add510d689452439fc51f8391b9854395953782206455cbded4ecc9181fb273893a994fc\"\n}\n],\n\"handshake_hash\": \"d4f5774b6a82ab87e1f29475564d2079f9325712038ab111f8d077fb536d12de3a13211e9f203758c4ee14cd9582171e2413b5fd6a94d20625b729f845ecc172\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fd160eb405a1cb75c23f3eb83baa34be7c3a3aeafaed3cce1bd8778d6876eda093b86ccd693b34dfbe819d2224d0926b6cfdf6630904d6d4daa299a2015cf0c5328df64521be9e4332845caedd8c413ae05dfdc794d835d7913045a4290ff3e777c3d7a2a4dee5cc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843823d1dc6c403d1e702078f1c26db9aed719f4b3322ddf6aa5e016ddedf3a7416b4c2a6465774298f376074de6fd8df181471d5fc26bfaf48c27fd17cd19764285489a195e805dca207061404bc7b0d2e88d5d163e6771500ff5cf976723759df7011e2a4389a49\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f5a0931686e76b1b346211e5753c4b1374427398187fe744ce7dcf8717ad9088417f9ad7a1ff424ab503fccb7ac25a068037c118575dc88d741eb399731a27500909b89934c89f6b73aebf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"39a8e9f9c194c590330329ad39fa9aa43e11c82c5812dd14be5874\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f2da20bf7dc5dcd4220342c48f16ed1cae963024410a97e25fcf2a61dc69320995\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d1fad1a128a4d669577cb90f28ed44d2c7aba0770f1ea147d5131f408444c5218a4db57127\"\n}\n],\n\"handshake_hash\": \"dc9dba5c881fbce69fdb3958aba99332f92692e19a712ad1417dc60a9ce34cfc\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794418d82cc0803bdf6deb070fe057afa8569ac5da7584f24c37a04976a778e45883cde079a1ce747c036dce20180970209da73509665367ad0ea390a0a386d1f9ed8086cb182b26cd65249df312275d0a2a505bb9ef69e1cde10a5d933d06c3dd9ee18ee7cc405bc739\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884307ec32a05443bb3ff94ea592c4436817053c8eff65ea49bb1a5ff707dc8d422a12fd314449da66b7b2d72dbc26b3c911dcfd1a9bbfa12c96f2fb795633c7c9f6d04b6c2ce5c7ccc9e692124e0e1d99e9a28c64d205327ac7760bc881d5cae49026d7e3db126aa8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bb7a1b2db36d8e9ab465e6c0e0a8c5aa2d7ec6211639e76412ede739c59d52eba0e365f7111a0851f2c8750dc1d49000cd2d346dc5c7ab2aad85f6ffa854c3870bb9c31919d8d79380a0d3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"882130f7c1a1bec104b5ac2d3dc3f16eae3b892d7401bf7dd77231\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f870d73cb1e17ef367491421282c195eadbcfbcbb0f0925942868509c079abd2e2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"610e067e75f18c95dc22cb89890a663776c889d2a541928e530a5680339bdca014bb7e9e70\"\n}\n],\n\"handshake_hash\": \"4bac2160218c31a022c3269b193570283e1bc98ff8d653a0ea3b315f1d13daf2698110e7ad1b313d92081b07708b46d4c9e558e3931e4398f8507b5b1684d1fd\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794407082bd082cb9ba3709953b3e7386acebd7947b7df61e88e487f81471aa838f412e83fdc96810f8cc611b1e70cd4891b9716ece0a949df9a9ce9aed3fcdd7aac13291262d7a543c75fb892384afb70f4b96b8123a23488bc66b9582471843c6f344bc90a2d5dd028\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430ce244e0c14ea9a6b7e5be3f3d0809ad8801df97c3feb2db6076f0b496897cbfa7305d32639b603ee7c357ed592a48dfc2f2617fd9be2329295ac9c38e6fa3ae7e18f09767c0c60dd246e59a6d2f585d998bdce69cf1cdceb3f39e96f21ea8f63270a0259cc448\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ed473c2269ee09f6b32d5771cfbf4fa76a2e12fb3cc0784c042ba4bca921e5dd234afbf093991b47dc3616d887d52adf795fc50a293f6ed4fd1b5a17d413e33deec556c2dc1e9fdc7594aa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"977bac6cd7e5f5d3e4db90022ab02c8cca47029a697f78a94d71c8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7a9111f6ec4fbcd5b3593a0a10e4bf2fdb93a782c5812a50b08e5e31860adac4a5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"42c63cba57a020d1368dafe9a85bc5b1af3e535b42440c3354899437d9b1aeb0f40b7a4047\"\n}\n],\n\"handshake_hash\": \"52d6ce3c313e9078d6a74745d546ebe817dfceb8f76369f6070c85217c05057f\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944dde4bb9c1ac4a9a55354a319bf7c121abb5114aeffdb9bac4a1e35a7bc35d4ee2b23251b9535eaa0aacf53bfba14d61cb7b4252a8d139fcc740cc165732225b48400ce16ebf2dfbf0483f4c137221ef52c8ca974100ad08cd0314ff27716ea8d76ea1c22907bc676\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aef6500d3cac40b0a3ef721e5798c6597d60931b4e6276197a08b341e103d8c1ea5d191af684d4d5ddae47484f2acd1cf017e876c7b928ccb906c9b2aaaa079fb94a7f0c7693032c33accc5a6b7f15ae8adcf680d0004a7f0808b640d6b0b32d1aa1e9df31fba6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"028f88b3e200ccf2c1c9fcf929db021055755ef799e81b670d934bd64e5114d42dab5760011bec3d0d1cb0da9bcd2c0a56e226499ede7e188ff54cd6d274b36d24c99f82c28f66bc895cd9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f398ce2e4d5a9a50d3c0d6432f4f6278e331009e32ff7ea0f9f4bc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b3aa4e95a86a79abf762298de3d9bcd5b498e5d75d1387acd5fcd7701becd049f2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7357882ccc6e1e61a1b16e21e32e8f960848b202bb970337c677eba06dc6e7cacf12ada108\"\n}\n],\n\"handshake_hash\": \"f73475201af460f127d2fa35e8993ed422b9d9e620030a81cce564686ddc59d240c5750b2f74096f00fa11ef61b92fec635efc9a141d11f52b29e162ab1bf5b4\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794428fe7ba150a691c0b991a36974c8530a8772c0930d5efd05965cc9d267f458b51e3855317239c317a1fa573e5ee5e24d867944bf6774c4db4dcb00e6ee4b3158dd2df5d58e683a7e5f086e290ddc2488f4bbe3aca7674a67a01bd63b2c3320bc6a0f9f397259b6a6c8d27d66dff0e515dbb4be79f5ba9645b2bbd83c91bda46b9127bedadca85bf570efce6ae2a9e6bd26068f304fcb0f7ea20352a3aed5464f75fbe89151841af35551874e2019175c5f6535dabf0d362ed80291a31b38853d85570682061baa18b670294c5aa8a83a1db74d8c9a65b5d2ef39bd50bf05c6f30515f55d00dc792f71597f9c761a9ab22ed1513e97f7d8959e690c7efda57cd2cd85e4db46bdbfe5cc085c46eee583745b4fd27e180e2fa8a65791ad49a59ac03229e08d9d4ace5536b0374fb86bfaef6cd37c4dcdb1612f8e234b59a2d2e3f16006687885fee125ad6cf631d27eb2b1105b4f5ec91eb94db17a021b207d7cb0c5ef16b1ce1234934830322f08d4c549cd318dfbc2e92b79559084f4dc6847ecd92f9432e7247cef6a073c6c41dbdc527ac91cab03c1a9c1bf5b65bb703b9b1b8523bb3b1eaaaa1f9e18747a38695526335ec174f7e23b18fddfeca38564886a0cca3b24842d68e1438c96c560346516cc0a2920a028b0c4d03e6218effab9864485fef4b06a9468a367b55e3c5bb56f57aa0945efdd58aac0e32b3a434f1ec201db11f295a57444b01462f90a4760041e265e90a023a2412e551b0b595c0a69b455e5f43891bb9a7999cab61ec548263f406d0aded0c8e9c914bcf674f60d71b0ec8b225c750f5c6dcbe1d51748102f23c716a6ec049970594b5deb61fe0a90dfc818d72886725d74de8850de45631dcfdf9d65b640eac679f7c6790370e844ff04d3774bbf853caafc714fb4659d047d79cd415f677e5831bea810561adf37a3dd8d48b38f6562898d3e390a9e8b1fcfbf14b8bc8da5a99ee00eecd58d49f695cdcd1735ee02198fee68ffb7e45c0229e58b4bad8f56b1fdc6da74f5295b44bef478a045f698f83d9961332278a722cec33db12647ac1341d78b7ceada7255dc54c429dda6b69ab88fcaecd8bdb7b8d14a642a984232adddd9406f4c98c4b04c9bfa2d29ae48318bf3694db1c741f009b0e6933599071b5aa61c0fb0771fe58d2fa197ff2e2275ba34a7caff3782faad73fb3c4202836de91c880747fc46cfae1de03815b4a8b163e8dd4f06e20140e3e88682100dbc131cb6e91d011aff4be46a386691d6b12f6eb7b147b7891e62246fc0f76a16fcc85adef0c2e27fe34b1335e2e93e67ea0231c1269c0f38876b55763fb487ef7fbfb722e792c2a1fd136ef8be6215e3196ba95a21eb473929deb74f4a3fec29d3cf6ae47996d5c76a72ea37faf5746dbc75a9334098397804c74ef9168ce084af2a1a901f93ba33b151076361756c18d99c3f9f6be2d63fa97fb54ff04a72318bee7e99ad10f34a1fe954b077b5c3dd19a9f81864b9aa5440c838bb8c03aa28272c95648fbab79ac61a6ba5aab7509ed4766ffe248367df7b62f1ee8aa4890b7c104b39824ce8244a490abb0dafcfbd6308082074de2940edd43404eb9a50ead54fc1c090bb9aaf4a5a8408aae75c9005b768d339173d8d32391a0f9726d6cdb4ec6c4f7d983f310bc8c52e02bdd49d3dd67873fddc54653aac315282c1f0901955eb1db29a4af3f813bec4d2078719fc96f3cbd8a91720bef9803af9d3e4e661f1b52bd65de22e3983f4d5e6fa1b5c26636ede9a2b3244cececcf56feceb48b98a17862fca3bfb4d05395dd665da618278be3484b15bc0b7b3bd60ce7682d11f71edf1cbb912930baf994656ad8b7b055a86bce4642e253231523e62b1440d3aa8d7b063ecb8f750bf0a9cf2709e4098bbaa69384a409d128f61c63424dc83c4d083d6cda83dc0e59a8b0b9f3d3a62b3cd5a81d945957a9cadcf292a21e5c66bfad6eab26d9456667c3a9be4a95bf418fe6edfd918de05b478f016e59bc2bdabe8745c8b353103d3b6bb7641169cda10d861cae2ea8e246e6a5f364f30484085fd7836f56b689f78debf33073e06048788b69bf286ce7c856db28cdfd7dfed00c5c686bcfa0afda64e8193c0e543c4c805a509ae2eab08a0b06d3e356e2c2b3915aa772c8aac9096b31cd2f30929abc13026857ee54de952f7aac9d39752f2d019247fa79415cb6e2e45e6b6d678b0e4ad27cfb69ff03558dff66b6b3705bbd932c05f2776ad2f7a5df46940178e81aee2b310cdfd698c8744a088fe2b41a85e6255211c26aa780782446b7d277e8c9e5d881a78c0c6f8f083afbba605e9118fe2cbd1e33e1332b735823d32ea9fc65a0e2986819f1209762fa6a3cd2ee7badac0c6b600e2d7f6374e786c2446203b920f02b2c57e01a6b45df2b6904881f537f7d978d00beaa090e1ef1a97a7cb49da154dcdec5644c638076d7d4ba95b2872f34aa5803df5d2edb39da701b3b54be091b92aeb74a32440dfeed3aa6f9487c32b0af38c0560c1df69160004f0960892fca10cbc4f6fe3132d748975264f3c5e9511ce0408720da39acf5e35fbb16174b88f208e30ddbf7ca50b5c35a2219ddcd6b0ce342587563acd076a42e8d3a677aa05ec01ed60a87c23\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d855afda4db3d98ca7201c3ba664da297c114d8cdfbdc26ba8cd2381b41f284054670e4ba0e7cdabe5874bbc2fdcc3285d98cee81c42538f8b5fd43199d7f048d664ac35a65ce450804aee0151e80c11695b4224f55c4ee3ab97c67159bc41859dd6072e745bb3640ec50d9a00c5479dc265dce066e542ddc40d97e8b127d30ae7ad14237ec358c7640d94e0733f38f43dce4d125c5d0ed552e3d1379cf6c257cf81c05825d48fab2581dfafde559017f095c5a271d769c137cfdb233ab1ef129329a93dafd09b8d790f3b14005a5aceb9481b124a4ba87e0301b2eb3112aa6a378c90f31e1ce98facbb6337491fa2311e1930019942489ba3c8616bd086936f2834f962ff48a03013f3f4b00506311a2e08e5008e2200c902e7a7ed7154f316977d9a9e66bb50f423f2239ef6ab606fa56537621c104c16978d30d608ff92d7523c2f43e2f333ac34397baa895274c66a36faa673abcd0d7dd399093a2272721f81b4878f246083476d9687b89e0b9756156a48cdf249e15baa09932cda9cae61fcff72bffc6ad1453607760685776c0856d6224a081eb6b58d59a3c586fc28c7c22fb0494ce8d5ebd1da301acfd75e50fc4b8d7cba4b7bb63a498a1f46bb13ec95417e3c2532a6a8e73384d4fcae5403e1c0e42db4c2fbebf9e37c64a12c27cc796aba538f95717c9e94a809ce9c588cab40398f5af9868854d11d491bca754b830d8020211f118627a7ddffe44a9973e7e7bf37297be37254699d02e17e2abb5bfa1b697c02507668ba20004341bf55b37529f4bf81e610ed411354c9cbc79b95b41c005643f091a009623cac8a92b6125502cb705f3e5527de849b1c6046416c5a1c95684a5fa8dc38d16a7d8273f5fa60f108eb74141ec8e7e3d7e2e7f9258195877ff34b039cd5a0dfe86a2fea1dda0c69390adf9e4021de42c2185f2a304a7df570f59a1fcf3b93c52dbf6be1f1b80314811cc975e6b251321d7f20e11852a0205ec9debc738b912982f20886ac7059d7f79b4a08710280c09261d9d4771eb3da98f1c22d3c4ede3a6ca60eb85b8a6d72f74b16b778ef186f88540903af33885cc4250e3958ecce71e93f512db542b5a950674cade3f15c40d2b5ce28307391b6027f9ba5195ce0e99f1a2601f23976e6094a872ad9568bdf97f10e5b3ed3ff3b1d81ed26b0db18b8bfeddea77770745bf85c345e388d4ad146f1d0c9ba8315868caabf9333ccc5a2183d52bf0fccf779850cbb7de6679cdeb1b8ee8ec964b27b63eabcf80cd9c03bb89884adbe528ee35e7664ba6b16f30f625aa2d26786c0aa41e63772e72bbf0f09973e1fc414c108684b380b079462e3d6bfdf675dafa5452d719fa63ae8569e0a7ba75dcc3d2af353c3a9e76a9a8618d6121602244e40558878ede18c374a4003265cc592078ac50b622bfd38891503b8a4618431a0be7cc6ced6fda6a39fefd63eb4f86d9ca87ee489e2e9e370617781c643e0242502890af642a9a34c2c4d0f1d0b46a2a00620c8ed0cf8b42528418a4339964783556a2ac8103d08746c1a82ea12a21d13dde1fa17f45c206c8a7d896831109167273b1032a29afdb573af1ac7c22f5b835f04a5a048092626f4a17f2f8c1635712a51f2c4a55cca0e4610bbfa589f510bf92649c2b1e49102f5194a12978cb0906b8b38ed20ce21c4af9957b362e2563aac83bcbd2fd85f5d6ffad4611a35307858cd86ea1b0c9b69824448d8395485f69f996f60ef3c497daf00cd2b9864f3d5230218e30dec0ba8b585ed6cd8474e5f172f149b463957adc8da706824aef7bbbbf066d2cdf522d67d2aa4d78d3de1f074b977c038b5beb91acd3f1f93526b9c698e8ba15e5498d756078eb53ddfa7f86efdc2b5557ca59e51fa5b9f089ff6c9cd7f52f2dcc7924df8bdfa4176e395115f844bd2a60f9104847ab06c3572484a6995bd75a6ad69d3585e2ded676ea12171953b8457c494e7d6c337d0426ca45cd54f0327c2ed028de6b4ab1d04d62333c26a0543cd39d2f76267f7abff069e7ead7c94fd199e3ae18ae49c5f67ff02682f5dd498e4a1020e9d351d0547d0af963bab4d4e338d7f88e3d5e5f1abe12b1fda3fb40e2a87ce79145b2b7217c96f8af5b58fbf10afb4c3395efac3cfcaf9777d452dccec9b432fc05b2ef861b49632250c60d18dce6154a1117aba4812b2460cb30585feaca1dc260c0a336fd7f723241a0157bd9d42f1031df4291d167d846851e2094eb703b1ed862c4a83e75607372305bf0a8f67d31414b36f7462560f7b6e6d385e64462e31a6d5fafb02a62f987ff938d6c4358ebeb3b57ade8bdeda48394cbed94c81d28d6233582ce8f9ec9b4b786cc37593994ee9971b3fbab3048e4f5499cdba95544e86ef040f9ac9d53b12b9996775065c1b6f2b67692aaa76ad4abc5623b798a73aad5df235a88d1bbb255f687743b235f3e2c66ed300b79769e1cb48d47a7c86e4eaeda0b440850b223aeff0faea8a2bb3dfffc4a3ecb4e27d2d41e9a98e19062ba318382c2b19b862726e2460bf9ab9355f126ec7affbdce04eaf7fef227efdaa34d58b441a80fcd0a5608ddafbf16bf4c5c81ec1d703f2a40b810d79c0fbb4700e759fd5168194ba3dfbce3da3ef2bc7128c9f80c56ca9213bd26acccfbe9f5053049f7def1e1769979083212507f20bb5824f6085b22622c9b3568286cbd8100770f9565d583b82e5c77498180cc6f1bfac8cd9a68af9f58d7877fbf8291d41ab8f0e58470295a8aa938f326a34df837cc8525198d61109f234dde9db3f9079d30ff0beb0b50b71aedf5cdcdcad9575af9cb5d2524b503c14355817e0939d73b8629f4a64c253f88e15baf9f5b47cf206e004ee59edb2b1463132dfe799e3660603e742153c56a219549a3e3b230eeb555ca2ce89b61bfce59aed96105196697ce70e491e7f1fdaf6ff34fe0835e77a6d806442\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b327a5e114be903c75b2a81cf870239729cc371f2c1c96ce6af770e849ae1494f5cd1b224c7eadf7034061dae5dbd6fa2fdb5c52a8caa0191e84d6ebc43a1b27ad3bf9477516e7805e7746\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"64d9375e1b15b61a7162c53189a0753baaaeab7998b671fe93de0c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"beb8e4a4ea6b364dc0be275881485913ec79572a8f099e9370b449b71c84e99271\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e55824cda33662ffc52d700634dcf8c172c2a67c204bdb3d9afe4b0ff9d83c9ca1a4ea4105\"\n}\n],\n\"handshake_hash\": \"46f2f624007560131ff217093d07b47240d6a4c9bc35a6596df9747d8b663663\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794475994e06414a28b4b4763dc361c861d06936cfa4788f33cbc8fd8f2d5cf5f98ee59346d80911611bb6ce08c6564519b417ce57976acc265bc62567a9fe8b75074631c43a48e726c9f85cf726203567554020fce6bb7c89be664fa8a858634ff182acfae51417f28e53c8692078fdf9d9704126137790427b847bbba868658979ea47adba5affa82a55ee04614a45d704355ca0e362a96fc4671493468c54b3cd7e9e7064101e5900f940ed5fc40b6aaab0739fd93d79d941ea5ebc8da0a5723e06ececb9955387847c5cb09004aa5a8149fdad0d77c2ccf00cef1c7eb526927b0b9d65261ae8b968279fdbbda6db0d1d75078e1cd3a064d76fa2b9778b10edd0a94921538d7f17cbd632a747f74992a40b16bf810b6b23d8a06cd79aca5a9e6d21227abb1d52348f33d1480894e7fc511e41a636481decd40564cd643239a935dd8dc7707e184cf66e7dde5f6a4c74e1e0c0a1a84598e589a5bf0932625455aae5655d4b2aa05ad4be1a9ba5d308c50ef76a1f295941e86d36bedadc06956ccded43e8fc78a38b3518c7da9144f94b28fa8c978e48575b6b2f5832f8a2104bf9eeeaa6619a33ab28a7cd80e5c4fe00e7778bada2afe598cc0b6618b503d10632d719a720433b1ca8366d268d1d1e1b3fd68dc180915b99fc295acc2bae1e20e96ca1e2bfa98b2fe8c4c76dbb81ef14dc9417c62bfdac38213ed08525c6821d78e5ce991ccea853a691bbc9a33541742893f57921f3918b5c30dfecbad0e43f213a45737ab61bb0f794ea752bbaa6a8a852d6e4c6ac96e9e447d0dec7efea772b95242e8a51accaf403d81e3ecc06b6c323a6085449b0f4d3a9b376b6ed80f8b1549d69e2c802cfc64c8b34ddc04982fe5598e1d6b7b83b5a7cf9a813079f9add354ac4ef57a9ef5230884c6eccb32c05474542648bf4b269290033fd53452bcd67524ed3914eb28d45ad9dddda4469efb289d759875a65bc189f2fd779d6b6abda316dd283f628d69315b29a64656b2e353c0f15f47f70b5650e5ec8dec62acefcf820ce80d3147202ff225128c1d53e86d9a445bfd1b795fd08852cade0e52c63b35bc04a18a2be5af17dd9c2aa863de78a7599d168696c88fb7b32c0d40625d7dcc5616194f7c51212e0bebeb2a29338245529a1f9ed9f1eecd85e57d60bff68b4cc1e429872287776cc3e210a51d37bedcbb0fb7865e114424fef0325fc382879c8a76239460f1d0077cb8e4f92cb49e0b97eddf235761b8b69a181c2f6dacc019044caeb7f94f480d569d15995d8b1bf0f0a7475de4b85de291570f733b7b69c94a44197aac3f3adf8b78ea589017f65a0b4d5a75bf20bb4b332978658573354f53f852f007d26c5da37883312e194165e8730dda84b9063df8e632c41b97b9f0f9e109c959df1f7862d1c898578b2ca81c5e75d3703eb19ecfb710ddde5524e8b83b18199ec35ffc677f0dc75389c1f2a484493f2660176c5ec4563b77070b5a7828343dd6f47089c468f886ba0330e060d7d76d0049844e79cf34e84ec4f5e8d14b3435b0f2ebf55480b5f3070838821667a94eba4fa7aba36ebb307567aa4c292f6f350ac8edb7207fc2c96fc3cbbda7397bd53539edc6f19f8153a5f70b20c7c1e8364e387d61ad41d11a4dd59fc7e1ca35784ba43f9e10cb2e12cf74db6a45021ba11dad6a5fe342c883987e4eb344a521895527e78529fc88310f7a664ccc4b9010e239f3d4c973f5393196151bf05640551c23b51fcd243d9e2e02a5dacc4d99064319efc4549dcd57defa69d8d3d30146ee8d88febf2dbdfd36200d025d9a9f9ab3ab1c4388e46fca5e1e234d08459433751d06f4ecae9bebf9af419a348198c93f5c0f4a2b04282fe2851f440faa29c3cab2cd3a1f84cb1f6a594b0dce1f9e657e987fac1d45624644800c18e1149efba668553a720604ee59c2fd65b692754f8a69a53173193565f9de077c5cfa823ff57b5815fdd8009052a20c84b4552ce719a1f01b51095d354915a532ea2d61bbe9a423f3452835a1fcda45095558036ea3a16556063052586735055ecf90608ed84b571d9540b15aaf2f55cd6555641fa1ce8331dca98b69a001ed5c51a48b39185c6b69d9c8cf39238c5df149ceb5b0af371afa41c9878e76c0f862d42402f30bba81b05b366132f38b7a9f89bb85970af782ebfbf03dea544078778995943ad968c7cf852baccb4e2e2d755efe0933787652f59e2c9bc17668792fbed1a5840f971cbd2e8e2f414551a67ed12e10505a7e17bed437b32a7f9d415fc5957aaad36017b016bf2b4a0aae28b3515a38ce48857f35e1275352a527299c07ada931e02b4cc282b128298c2f2dd7ded564fdd28397593aa5103d680e0f814d13d92463e2610d3366506f1c59aa346841bd9d1818e7068621054aeb418ecb1e5330d19957a524481af43a2a269a72c0d125fa27d0cd3dd77eda9405811d62b71dd970691bdf98ac12d09ed17dfde0c7d638d2b92bd02d2b68954a39c937748c15ccd94f48d70ec5935d323000e3d1f1dd81423c257fa3771f71b9f2908c2a7d97ae0e2a2e5e2041381a26875bc32cbc2306d0414c2baab29b68e67b170514c6919934fb3701155f274e502bdd150af87bec57ad10ae5eac9edebcf92\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d2dd406ffb6372b12ea5fb50a25eb4a0170dd2d99892f68272fef63a59c4610fa958f6b12aeadb26e89987457f00ad786173f715044332dcf0e80fe59054a7a1da7c9c504d307e3bff50381be2dd3edf756c65ad9eeef555a52cf4fc9f36d4d5450882abc7b5da10cba0b468bb63692509dc0f1a8e50b4ff50c14ee05b7a33221c25f8f1c95680b58547c6f003b92a1aa5ace45bd4e551bd34cabf1f6803bab13d0d86685c589f23d7ffc0c1dbbbaae011c0ed999e88103049f5b1c14d0e45d3b8ac1593e511700f8eff25aca837e74b24a804bffb5245b628e81cb40eb4a13c80d5316090a55478a381a231de85956bd8e9ab3f115eade9d2504eeda52dec14b8a1b8b8e8fb1af30d17176fa440f31fe511d623c8685ef6b2c53a5903e556ee7ec485d17808ad2ce3b336ff987a32f17e126de10a0dc2c920430044164d7b80c789f4a7bc9a6d171859e8c5a54115c73edb79624308313f34999072ea7e126ead43bf0f4c9ed6da7b29ca5cee8cf118f97b90370ec394f362dd880288d8b22c0b3fc451de1e3f6b255f1b492bed837f8e3d3fa7eae66385c5370920af640834685e580e7dda32ccf25f360f8b0df597aa8a1d8ced139cedf4e81dc401ff4b643a54517f6e5bb4af915508d8281ed446873ee273e0c7aeda72a28ee52caf44671dbaead06454832a23900ece43e822b713727166dc63dd6c03f8913a0ea8e3062dee58ef08ce81f5572dfd41d0f2369373b98abb5be50d2a0ba0e8e57c7858f8ab1a5d406adae2806a2220662fb386d1d5f270100cca596b5630bd168ca415725394b752ded0beda30b78d0b21c66b41dad9574b24b7dd5aa8c20954a26ac8087f33babb6af6e857d8a138e6877bc7101122539d5efb763846908b1474b28c5653d51b758d72eb2c8ac8a523aedf9768fd9af031f952cd7af0ba5124c0d4b13153ad0416d9ac82470f58b8355fefd081711cfccc64d1a1aef36b664494e61186f4b87460fc0df57de0f197e9014dc83dd68d14b57a7f022418fc5cad9eacaa18b82c7d634d71f5d5d6c75f0753474aa460b1cac1138f598a015ee9279213b194df793d947f0fba3c08667748643bcc731b927c38e6004d8b9e4ad96e060d4700646140210b8f996386117d299a5da2fcf2a5022873fd56b2b819276b2fbaea8e7953babee2910f50ea4962a0327292c9fceb66702d742aba605cf014e05962e45d82adfde62077c8756daf74f85f9890712743c8ef50d822687b902c4faf22149a450157ef23d8dd2930ff7467fb549fc83db5701fb0d2c2b2c27ab6809b016b891f5767401b7e39c66f0a72fd96872e4ece7346159a39f14171875780b37de4e8e58a68263c160ac56d3730882fd940a82399afb7f41a19fe119edaeb2333003188ad6cdebfb77a60d5a682577b5b62c75967098cfc6507625a1fdecad2d4fa19ec0642d5f01a12641e78b5d51bb3828822137e1971daefdeb9d9a225e7011247f1d6df5b70c17e43f2419bff1b979e6db0fd92b554d6e4643f48e1b15afa6f82ae618d93d3ad02505feffb6c3170a707154c29f8cfd48cab5f28d03f0bb304514b46f03c9de126bd08825521c99ddca3142da4c3e28d5442da7bd256faa672db5f476125d7da0ccb3aa8bccd178d22e97570c1c4093194164cc89ef8abdf739ad5691dd1791ca51c3db1abbb4b45e8038ebeb3630660ddf0ccbe624fa4346e1bbbfc65945b41ab4af490bd23d76c33884db5101edde6139d2b66ece01b5aa1333bfda19af61e27d3d9ac6ff1fab546cd21c0c3b51fd6fa0c4094a699f0a50c0002ec01eb32435afb621f31614c1340b671ceec0ec9b32cad21ca9650fdc8d6f99fd955089550080ee7f507959e23e6cca3373f916c30e22af380f83f055bbae80f12d1676b453e76611e6d1a5ddac5eb2d2a806d0ee30feb5675509635ca9dc823aec1d1ac118a400c454387e53f400eb09db32da1d72eb1c6c48588f5224861df89b6130893db733096373c4f4050bcfa59a506e6ab81433b0c7017623da8933b46e47899256f665de1687e473724749266c3e17eabced83c52251260372a6e97e273a32eaea1f982affb810ccdc8f9240dc3dc88cb57333572bdba8f0b3d9487d3adf0be52e81106a7910f8aed553fe025309d9941f0e455010728e8d01f4198d6ce1e8ac5f545eb41b84fe92627dc262af3bc2cc91144667b2d2495bb0e9436feb52cb01b544fccba0e72a0614f4a16493d462b1422ac507fa550f89c23e93acd4e721f104e97a332c18523eac46e74a138c8bec1e60ee7ac95c32ca5e6e25a18845a1f4c6012dc044104c2e4c1622b848675ea7045dd29ffa569e92aff4a79bc3cd75163cab198013c685a8f7b4b5e6d1a1d17e9a3571e00d751b9f8cd8f07ff6f7444430a650643bc1a447dbac37427fbe29e01e45a7aefaa9da0c41f9b2a7618ba912c25657b39343bf977f5fec8fa287c43e70cb9386a1578a27ecd67c0d54192c94a3fe93433e037bca4e5eba3e0a859efdb3fd523e7a2e1cdaf73f16427aea369e2b6d544544399234fecfc610a0a3c59c8ee5bd5d76f2b97aa25bdd62b9f47b4d0b983d8d9609a2416be6228cf01d7cd346865d49f59fdf9e07647c7c121db26dd2f25b0fa9d4bc8a8e695460eba564690766031eb9eb16d8f40b2dc974c74c43b00eec43b2252eddaca4e45c763c665bc3ecc6000d794662955a6e4ff330900ee0e57ae1aa8d0e1545b5664ca052c057c0ecd4ee6ab2f24617fa9c03ffd2c27afbd3aada3506086f7bb1eee658a7925c71b1f54667693782a4e1d63a46690c19a6cf70c3ba1b3c175eb621e475f5a27d17eb62562c2eec64319538b5fe9fef57258237b02cfc42762e38f4e429f77bd6e6250af46b8c96b3a2e03d073270dd6372a5fefcff936f16955f5c6723d07121466ebcca40012fb5432a9ff646754dbd37e0a4331ac06cf5f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"548ca22726509a3b2077f3d7f1e36e5dadd9c76ed236f7991316aab085f3f9d738034b7fbc770fa8f4e3907d9691686255d28e255f6629dcbd5ecaef2edd58a944b9e176ef0944c96045fb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ca5004b1f417f69a016a491b5e78f328a605386358938436eb1bc8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e731d7fd342de044898d287bbca451d8718f541144de3d840611a7e3c311d41017\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d219e64a47e8cb5472c8e9e9c5ccb3f57ab6e08d7cd8f2303a808df604e0ba9eeb3f2257c8\"\n}\n],\n\"handshake_hash\": \"c1e2c9e7f10d094b8b522f830f4fd771c345d7ad9632f622e56572b05f68a49a7d97f76c4cf6e4363a75504136cb420551e0dfb6922edd93f48992d0c39aee61\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cc1ad6a1dbf0fd51f50a2f3aa593da42165839b77b5eb3a1292b7b3e3ada01879ff706eb099b6b3521e9531a06e975743751326398058d224776ce51b7bb91699b8064edc5184ac25a41792b3a3638278c05541b444b74eafd200c2ad0abd776a040b7b39d9d5a25dfc2391829fe7e7a421666d72db115a4312093c83afa5fc010a5145bac88d5108e97e3f77fd33238212d2e29d0a97042928386cf60bb02ac916cbba54d56ce3bdc69a1dd8906dcdf9083727777586219ec1b201f960f7509faca7f3ea1a2f31c2c9bcef96db4a300891dd5f1e2e80e71f41d20c0ec0bda2200dc2738b1dec029b5f87dfeff512ab9b428be6eb968d4de88f3d73369ea55a5dee576a83f37545f7254909e86f41fd362fce58bf78d6e06d426864ad305926ca8335ac8b4938640fb7ca4b688e113a6591c5791f2cdcbab7b35b8de3cf0dec281a092f305d7a2b68b104d7c8af73ef9b3060cecdd336b22c97b3ebb1f98b5b15b01544e92e9f2beafd2617e33e0f0b8d7ea0de0c4abe365ad38a0dfd95b83b5089bcafe4cf44dbba0e506b51d2e49cacea51beae4d35ca4351b7bb83499b32ba8c4feb7225a0f3bef59e6c90277955dbe68c178828f2dc25cab0bc26b1b2ce76e686c2aa52ac3d9d4d21e4f68e72ece729ede072cfc36afd74c8d22b8f05acbaef5b42b94c056948becd7ac623c1a5873731fbc0a6b618910b1d1c7457365238120ecbba844a75b491a0378b70062f149e111054bdaa9b2bb3954bc76518bbad6627ad862292d60f0178449c0ad2da7f3c19a229b2b76a21f1bc524c668849883092d383dda9cba09915bc12ab00c16a7f23627d2b57f418f59bbd2e87962b7ad1055a346d019f76ded0d429c77d46c6061ec684da3e9cd12416c88029b47604f10e96b4bd106b47f8e221537ff05e6e234c34516aadb36df7887c21d094b424bfea09ca2cc54c264025215d3dbb6b82b65cec77983e1e222d9fca0c804b96928ec3efdb26a33f6bed4f7c1852af78b26dbc171a13bc9b79e0e03ddc459686847df7577235f0ba1437c0a354dbe0ab0a69ab0c2d31e9660cb319e24e6a36e8263a886e05ba42276c93549b3d57b7f08b974831281d332ae640a6fcb3f0194ec2bfe1cce8697f1f058c80b2c3f95a31eaaf16b2b0016a473309508dd6ac927f1ce6566abfa80aaba35e87c00384c665d26917204a4c9b5d734cbfd09246bfa24f5cc0abd3e65441f7047a902be00179b64552987968e7763f5af8a2c9440170aeef59d67b94c55ada857d7434324b3510e13ad9b01a0132c7da80cfa6199a9c0aac459ec5e25945106cd26420504ee7acb1fdc3dee9dcf80b43d9c6957ad81da915936dd290c872172e49809061cda52a47c61ce5e019be862eabe544816ce6b8bbb4c96bad60fc73bfa4f0ae06ccfd785d4a615c6f259f9349d6eef2c17250111441a1e26a4f932329d2006262e5f2d45e212d5f24b763ba41da1fe7d99edc3666b122001425439421aa0f3a46103ed295c9d654dc1502b4da29b093ac5884fad208e1b20431a617bb9393f64a3b19aa646bba33e42966ad8a21913ca11cfec9713a9b8adfc8385f10e5d2d495976a2f8538db4ebbd3df9ac0aef0b7cdc8ab6aaf6ea3e1f5e65b738a2c5d1405b0e0da11c3eba9e12af273bc94a99031033640a9277d551ced447fea822c88d05bb52ccdb421e8ae2f3e7b67b8af1a0997b004dda2e1c3c4d63ad43fa467236a82fb04a72f7d6938b54bd2c4896f479b271e5700d4bace649b07ad8f52cc46063a6d3f8ad00523ee6cb61ed60ffce4db29e6106242442618051650ec9883259a8b78d16f84888d65f665b064c7578ea829464a8efa3fdfdb12302f9b78b17a04876aef90a8624e363ae0227bdc64f92b9d4a3db73a36843c0063ca75bae4d6066c5875e1efce5826c3b7a57ffebd2f9af4c37e96f887f5665d40ed1382d007d1e32c5ef88bc223e58e7779960303097f766b9794451253eea30f04dff06b5bdd2c8a5a63725855f0191afe84e7c7a04c14b0ef202b050dd743d04b6bf5df62fe3ba910753d762c503a36c6bd089028c959983972ed0fc63695106aba931e4d18ca69b8af6b8363e257a9e2168f9bca485cc3afa0d7d3d21da24cc302b7bb6ab00e33ccc898586dd2c6394cc3ba51f2bb4ce74c9427a169eee04f79a6600f913c9f80b44a34e79e56c3a4751fc440fa89074e2cbe314765d784f7da8f99ff5d77a4d742ab2df4e73b797e00b6b117864d930e2f743e11314fee1f12f4fc8054ac1db95f40ac4260b349a1ecada6270cb984179714bb38fef2e9a6aaacdd0afe40bff6c19cb986aaa3cc9ffe352490377d12c9dbfeb6feb811a14a5b17ace66dfcdd8e3c43765b82c5af21d99c483705f004f2945dbc6ff5f590fb4016a6635a0220773892684d1e3a57623d20389f0ef0fef3a599452bc203aa0cbb596228f6298c511d0ee0261c835d0a889dff3e9fc870efe221e8ac8d017f360a47da04f8962d2cd71cde7128656d1261b6d50a9db1622f24eba1ea3c466cf1329555eef1f254d249c14df12dfb065c376a01068f0da27a1d1ff0a135ae1d3ac9f76641ab6585eed79530555ae5632191bc82574264e3a1d7e6be10d1a888ab3d6474407603b17f1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843317877766043a603456604c1c2da0edbad00860fa306b2987c18624306b972eb9afe51b6b07fffcb15f19a05a65f62697e1d001debc54ec77eeb2227bbbb97819ee262acade1e5b2a41106f3df1a9663543e4f8ed7c1c5d1e3a69341e5c3ec06ddb93b3ae9a402c71dcbfc996bf218f09af1b7a439cdc32beca6141d0c70a2c34e90882f619f8bba002d6e1a1f4aeec6b5fc2071dd9b29ce52f39f6e13f7f3fe3811d5cdc2939a4a0afcb7a7472542a8c05036d84385ade883e38d9a18b47bc374f812422eacdfe03d7523fbb61125c101742ece5683873ddb04be0a61fdd8c0429d0600e52f3a36cd172338039ec7aff12603a06200a9c5f8277184a6cfa0080755325ca0418b7d2171499f80d71fcedfe783e22c6458ff30675a14af26a04273e4b2c855c2ef3fcf7b80fdcfd617be519da83c6e0929e14117eafd98c8357e3e5e41e959a3d63f592c68dc2131a5e4c94c26add62d4d64b5b40647d0715fb529ae69ee97aad7c6b5b37ec20d994f29581ce27451bddabd4fcdfd3f46efd95b5f340d5b430524f6d34db431a5fb232f99c480c50a3bde9bb54500d6d2f83ac58ec683bdb0e2105e0d1bdf1a482917ccc9296ebf5f33cc26677d6e020f1b5229c4bb0f564a0495d815eb55a59f92422b502ea32e818484054e7db848c00ff33e236c46be18b72203b8a6f433f3af8890f2b6b28b89d62ce72db9bd34be294db96965acffa94612fafbbc2fa455591abe07add409d034999de462f5a80ef032ca077f51c6c8df84ac7318669a2854192defb1de9af7ac0aa296244d29e0fa8ea3dfba978f9b067952cc405339cb5a7e6331612697a5a6080757ddd60d37ee5bfb2a47e044050a3b3e8fa0c91b9cb5bfc04132d904b0ab574d60609937088253d8c51e66aac3b1ce46f949e91d450799b9ac9fd1ece7a94492ab053912c124a4b9ce291e3a5fb91b6df54c501fa1c260fcc586f6b6ae74efaf551d9eaaa0293d7c20fef28c1b01932cfb1ef212e03a20da1e8440a6ef8e4bcbb8ae02ebf16df54e5e5f0495298d75ae4b38446764b1c58e0844c89e23801c66b5d536e699faef4c6fb55019607f6c5d27461c660cd4a4b113e1d6607a5c49e5316a656e1cbc079b69936e4f4d93ac95024961b256129a5f1dda6e141fefd7e5d3a1275d9f3d000c29c93308f00d0eeb71a7c0427a908e90dc7ab02aec3b63f0f5ad7e7b7d087ea2a8f7d99558714bbd0082201676569cc7d6a4c90aef700a035496eeb4affab3d9d2ee0dc94c8c4ff6a72d8f6c55d6c59f409d1fe1fbe5ab48548864b0c09bd59fbc2d47e88a896d334b0e2f700d224c594668e98d45a0e2302f32940edfad279bc859866b2ee6a78f013110ea796360649238cb4be40878e21a725757e5459a556b0e77e603137db858436bbf13d33d497d72d78a9c6aff6c0c1a37f7157af0537140038d491612784e966d23fc6569c3ad12265ee63ad816b2ad95e137f85a47e37a92b0f9c13e6feff792aa36dc4737bf929e0521396a181d586173d2199f5a8bb5e5f47f53c8d88491bb093a852ed88af2a19c57c3650abffe29caaaa612918751b84eeee5312eb22ac4cefe12c5e289f253a7edcd735b91771dfd5058a44b23911bf925284c9225d7bad4a3bd00e3b18a42945cfacfdc8673f9f23e979ab6917614afa8236ed372d6f72ddf51d2e3f1ce448a5f6fbc31efa255b06fb494d1df12817232e10570ae0e718c67e28dd4386b937d45ef6c19562dcd0def3c50536d8d214b4f007eb7c864037aa226e92a4efe935baa1acc9421a830025c8509346890f7d3f79eadbd994b5b4ed44d3bb7a7410f69253de44568082358b6deccebc4b3e1f75b223e6625e33404edbb6452f27560b70a4761096ee05f26639852325e161868dd8a8454457a92e45b2de3970dcec17e2bacb331eb935a361b705baa0db174867f702bbd47ec220baa43b5adf357757efa4973e3f7bb6043bdbf79d2c3bec850b981c228a96b75630d4861cb218b85baad94ff4bb2edeb54443c445ec412747a0bc5f75143bf683763c92bfa0cbc7304c8b4f857fc25e0a6bde45ff6fd9a4ca11e9854b69281f5c722b6427b3fe3362e3cec771e0009a510188ea63453161e1c52717f9d31c8bd0670aac788e454598dffc6ea1a160fff67095511adfde03f6586ef9f37a3823cc83e235f32884ad822865e38794129398ce25a5f5995249120e92badb2c92618eb1c602ebb4a770523f2567e31759bcbdcd0e2093ac214e67196a80792dc7f9fd5aec6906f444f55aac1ab10db566253d77027c171fb970cd62f2a5453fdaa06f949ae98a4a5f62921f13c1946960b6b49b0c306893a6ba3b0770d22d6653cefc0c1e792576f307f17150b34d4b62fe585187320eb3cc5802601bbf020bb26d90576e4ba17f1a12196d9d000399eb732ba967b300f80ff2d486a8a96eecbed37300cdecfd6ae0d170d5b3d13d24cd2a9ad21e46e1ff439784e03b23bb1d4ef171b9fb4912813ddb1c0e08678234f60abb0a54caba965e23ad2f1815f83c47f469c4240bfbe9ebbfc658585c696bee94e904eaa1fdd1ae0d2539678254faed64dee30337f1afbc62cce72734cefbba54094a1cebc5b2a7b18be1f0ec033354ad451c771ef4013744310c82d601445445b3a6ed82e4732a388c393e45858ff69aab64a38cc708a904f8d791958a7b19ae5798ec7c60d704311bea1d72c1948ef42f5055119382fce1ded0a1a31c58660902ddc288278b1a1193d6bdfb7f23150a409e7a55996ece514611afd731bc51be58cd0f44e5267a4ceff058c94ae6e035fa3102be0b01e75a240ff1dcd8aa2df665b3e9b1917a70b333659c3c4bea5f0ad928ee5a1911178e9136135fa78ba31d7595feeac1cf9b58ee2b9f24dd25ed7d12275219ae919bdaaa3a812cf84bcd51d631eb1d4ed553affe23d73f7a8275257c48bf5cf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e521f74f96c2b4e224265d991f6335789980dab5785a92e9e52e703c091e633e12f56f9e6c944e2f967da991f96a1a69ebaa742e256c94df0c600180c6090f51d9ee7b3e93c27908b03df0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d48df51e795cbeb3f2d3d85b4aaafbbddf5ec0af9cd216b293b33b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"865a4a32f2ba394d91edbb143d6975e5112646de8da89cc623d35675c6b71ab574\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c153f67cd3fb1a0d7e022ebe3315ae6a88150a1e14743744977367f1abf289c5586ee7ba3f\"\n}\n],\n\"handshake_hash\": \"f23f4ae0d1d256a011c66835d828f87b19d53a41e80e5ada324eaa01710141f9\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ca6c03408743402125f36826e16e2808ce5051cccbdf93ea5e8b2d060348f311db267ec71aa4bc0e70a15ea732f911866e7712af744d9c0819c7386d0677c322a8af2ae5284d14dca5665832ea9b72a919c42165f593b982d5b0abd1d80ba941731419042d9c5613f0a4652c005672f43c33b164295b1b080ced93ea165b65df48b53c154a87dafdc8e9c8e93fe023e61eba5398378336fecb8dfe8a597178636e7bc859cf1ed522fdcdeef8f5c076e5e20166da67b0369dcfe494d6593f38753588c88d843b345822b6ecf9d489b1b4bd88e9c5925635d448c0b5d1bab2cce334d488e33e84fb28dee3e761bbb377679a11cac8e4dfe68bd1f462a4068b70f19fd3e2be700c73f27fc868ae6a7d35e518e942877c4f08d598399180ce138658dc6aab06b05427d4c3e80ff47974e880c48898597ba4ccb9a15c595c007d05c1ce3b8b7fb5c4a000260c719253a5e777386446a6e4c5343424e42e6e40a7149424798c798d87063c4f5c00d8362e65c6010ea742953bb5150c471c3b13e7882f8ec09cbd58347b22752cfb3ee6be0c1ce8e6005fb7e0a27666ac6c039b59d3a0e2ad9de11a6aceaf188d28a2f53760952bba37a5cbb84c437d194afc5e05c8337fa1c6f1ebea20da818273e45da2ad9d695759ed89adc755cbe762d095cea0c4c1699eb37daf532d7140efa59a9917acc53841bbacf17739b9ded9950f9f5d821e48e37c233285a22c1840ea0f7b768f15b1ce7486dcfcd08c249e240022a07974d0f88e1a04ad80760d84a2097d100b83af02eb02a2a56b79080162ef16bcb3be30dd5c160b8804321e3b47a4fda0d785a4a822632e9837f5087df284579973e7425679034e95e4a763eb88f3515920be73978b29be9061966545520cc3863772908bdcfe4d8e7b2ca35944aefd358b8953decae739309890f55f159c3f6b1198d3b9a78e9184b1996c3f4e0d6c525ba0ce30b677966e5c36292bf53ca46de1db6a13bdf4fe204c53e132d960adc42279226398eb00c63bf10a1c7e90538063f87d683fe462e009966828a3b7699d0415395699fb9ab450540b70619402434dd9a9fbdcf2b88e60a3c1dd285deccaac3f744f8847f94a43b51e9b3b597f7586a2320ccac712992e1780ac51bf62915791e4a0688e790f9a1b74a1a519d374151053621a3d660872d6f551a2f34666a727a86af615ec094ed2c77c3c56946d77294f13fd7a21796f3b418196cd46d45cf82c8ebbaf672756d3bffef3d1f34a768e318121f1b6fd39da4ed6384cacf7ada89fa4e1b2bc8636035293108a95f34f608f2b9b9da99480c2feb483b45e500f48134355cd2dac884faf8fec2644cc8de583e61668740cd0a1cf2fe6109ae0f3aabbb823899f9298e1c4e26c84557d992d225607f4b725f9d588e37976e9ad25034db1b5c27c227cad8d6f457dd1745598c44d06af23c569bfd49de180f63c59c7125938eb3bb0350a727a92351f72f366f59102e21416a14b38de0d0b0052a814a74a8a22268db89faf1638ca20fdf9aeec426942eb4c769a9af48dee86b0f9dc3ec77e9da33e814de2b04345b5d3e8e1bf947bdfe7e5dd30de58438846f5ade87f7dfae9594449f9dda7186b9eaa0fa0d1c9ecf523ea6bba3f0f1e4769226b6e58bd68c3262ebe37e9914aa51a84808f69885363a5facd32163bc0906382b989741bec94a4051cc47b70f392c61c13c1146385af3c96bd65752b7af65f40b97405cafe09dab1d4d98cfad637a56a43c1743818f7f0a762ede28e81077ed5f99c92786ce11a8e9cbea39b1d94364378666bf8541d38a2886182041e74da5033d8b477fd9399e4d8da48981f0bd5046b5bb047ad433495d6391e68f47503dfe9f41d8c379e238b7e48be96308b6429a131edf70bfd8718188df793bdb455d7e0eea1c4e08831da1cea5b983bf53c6b70de97b7136d372159392cdaaecdf5c43a0d2e86b3d1672d32754b2db0e89a20a24e78de7c2bda6160d73213bd0166f3a11f581d87eb6022a7493064ac0d4fbd068fea108e3cb99eaab9e489185e0137813f0761f732d7451bdcbf239976b9fc2698dff0ce687cf00d711ca04a5071ea0117d298dc9ac0939284d0f28727f23f7f8d1d113bd79ba5e70967001dcafdfd86f7c7603a45378edc6eb3d7a432b7d14225714f897f1be8995c015cf849fde37f35d5a0582c09afa31f6f7bd1f3f74a5183db37e1deb4b25c4069ccf0138723ecd247774bac10bd7318aee410b7e7c5deb2d17dc8a48c47182ad776a00d71c46c06328a5aee6f2933f5437d81ef2a7a508d2e5d7ef1c4894edc2493aef704e70a8fd568d4229441b599f68944c33c34e9f6443fdb4b54477e0780f754ab9c3547287a42b5059dff0e2d840aacddfce3424578b35c6ea941e37a31d995d3048aec2ca4a3f5013369dee127231aa2b0bc5239598461d07bad9252e7aadd0044da5232f5096471e36224af290db976385d9df968a6dbee508c0e8f3ce644e0a5771be9f8ccfebdb5b9f96526fe6ed7a4127184147d51420ec8121e6cd5f323e2603cae790bb645e682a2a1d802244d2f7de787968cef89217f98b8eca4b4f4ef557210647523f6b3cfe34c8edbe8ac3ad00a13452c1709a63ef41ac76c2b07c7a106\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431bfbfd64e3b96e296c885bdd637b8f42b90d3e03abf7c98e8e256d07f6d91ae4470b4452a8479bf13390842201f7645dd04dbea2e569cabc94102d08b7566f309aabc2fb994896a1afe0dec4dc9b63587ed79c22b8c8405622d79273011033b3ff447a5ab771501c5dae6448f16360bcc6cfb4afba652606d30808969a4b3c5905df2424fb6344860a8e474e9bf26e8b4d4f4ea970026f4f9f451313daa6db2f06b6dbc5a55fee84efdbe075b0345b2ef42a34d61ff21cdc4d2f5f0e063c2fa654095a6bb553817e3f2a8b7a9a9bd6f4556209db7551b5c72500b993bb2d8e7b6713a779575eb59d9264174bca7f0f25f413d6087380bf1ae920b1504258b95a5df41ef222c60fdc989aa503b6d2d3f1041043f9dc7b5a5e9dc8c5fca8ddb980960d22f792f396966bdf1f19e8a332776d91c431cca17ad24d96a9f7199cbb1226c27ac28278834599ba5b226e97c6e9b7d1b0dc0ccefb21fb95b70d1d9a4472796c140a78daf17bbf19783014c4a028ba6f279d6f7fcae6ba099d602181f7d3d46a9e13f0693928091c43a8fdafb10143d72be19a14da91775ff8252d831fd7e6d5a7710bdc886a2804075d6d0f78397001171005c25082b0375af07fd375eef33d9ac95adeb7a8c43cee1631744d12d53a3162ed343462b8a1930a3926678201853c19c966ba807fbcc7a02aec96cffeb9106ebc7b27f472a523a22f6fc931207cbdb57bec2404bfef655e233ac58455091ec8931284864a334ed9cf55f090bbdf8b5dad07d422c86aa10d4b94a746edcf4c5936dbe12b713090ac5089518d4a4059fe66c87b28bd0db8c7570df08d285ef66f9ef76da65931e78d1d79a5176cba43378d31c42cc94501d1d2b08eeba7cb7b7fd643629d2fa4c29f5484265610a6decca3208ccff99e92a5d2d1698a723469336a3c594a9b99da3a0475c6f93506c43672a80c0319a9845113c59a68dab2c42e1a791b28bc3faf021c9f86e408012c37304cb4debeb593c0af3d0322fb1c62ce66246528571b919e6f2c56b78334a1146721ba62b845a5ebf4d8218c465ae98313991e51977bca5367569bfb30cbcffbecfacf21c25640d45c63fc5fa1173f22df1fc49301f201ad4d36e1f9d307cfa7d81f7a779cdcbab9e8c2fcc6fdfeacd974731254c5e8f2400a4c24c65ff5e2f68d4e75c8503629652fbb2510d3006d7e8beeb19934a42378673232ebbcc7acdc7f8af7c9351c05d94160f3df9500c4fce0c0f39cddf581732b63652f68c3c6d3aa65ac37209670dc19c2d0797bfb75586955ea87099d031c92b85f2d5872873323bc0ece5f66201a1cff0140da895d17e97afe480ef1e69b29ee77da176d31afac98e699487d39195d680805de76390036c9391b4df2434d2819d47e89b9deed8fca8045bcfa9cee96619490e213b12349c02e9f46d84464c7e9a965bd1ff46611442fe25f43ea87b5a897cda06ef81eabe8b44284bc46d89bb8ef7cc1310d9b1ee2b812b87cf5f7d21bd76efc63a25aaaab98348c0c7cd6deba7567eda9935f26f256aa37901d51e473b6b27d135480b6cb716b3d442abf1bf1c08c6906fc511775ea243a4225f8b77e05d85d3dd1502936d3244a82042bb9f005058970c206b436825737c497a297d57ca1a545796e3c771f69fc0cced78d702418c6745d75808a66b243bd2e754eea84ffedc63fdbc7e5bc77c44333c35c28637e9c2d4c30cb2ac2de7c2969739a3b04b275f9168daab009d7600ecf3e93dedc02dbb6fa883fc12f0d400374a641ee1c569035bad2c7c020697c4d7432605702c3e92aa4f1fa0e867df15d33a3621a615164f8f15036332ee5bbcf1fe0bdb41b82dcb519b70915f768b55a572b38cab1c7bfea1e8442e28f6b6265618b6c7d6ac816b7968018e925961349464ae3d38070a75135bd2ab02dbd961e25d52807230da85020f7b31fa747f5340f9e028d161525ed87acd4ec1adae279561d2df68078f6a44609bc0f1e6fcad3c5a2e4c27c9b95f45cbadbca16e3eea9f7f28525c0723a386af7aba756b50c59b44e97fb1ab9f1b65fcd44484907af0076d11b8dbf01bda94c4ef424e3e87ab51ebac35327e6f2eacb682852f0e7179fabe0f106d163d94384fe3079c7d89b1f98358617920c68b1fb760abdf76e6edc6850b364db231fd607104329d009b4b0dbf7661ab8b20ed062a2d5423fef5665fecc2769bb7ab26d492b167165f0e6e0dc6bb131b8f6e463f47525c8f2fe2c863503b1711219307fa9b7320acc3606ea59f543a792ab6bec8804099813eb6e731248a48aa8b7a84f415a75b7ea0b3d74cf2b4e778049ffb51cb84df8f323134342481cc9786dc5eeeb2ef4be9b873855f85c2faa11a97a3f772036b3c09f5de00a6e133a82ae8f81c3e816bea28466991b862891dbae94b232b3703c054f5b4c635dcecf41c8d16cce99d7eea977b2e3314648eff9076cd2df260d36be3c96bd11567536f7dde88131f07a8d9e8e11547f8a096d59ab4d2bed94a8ff9b83df990eaa5074fa66b72fa2cf4a0f6732e1acd86ee2bbf6fd32dd49ce656d76b890e16df6ad5c9891faea40f81707d87b3b6ee11750f457939592913a81503a9f5e447942ae94d5c9dbe1a1466831dd87617dd992c1e3b3c27bd311cb035a89620560c7f5574aa8f15b8b1babb094e05f13450081d9cf4e1d844edcaef2f83acbfe8ba763d4e663bee7177e28a489f22b839add4286670827f20682a384f97f75d06368b179150ad6ad814f343c2e18cc0f029c31661187b62453ccf345dd4e67c9a979720bc18f01124b8d219c217dd513ac2311ea4082729e737067864369e75b98ec31aa6dfbbe777e82ce26540d9afdb3fd573d596b3fcc82f17ca7ebcd45831be5f2b89bf42367c452dec60deff4683bc69cec4a4778b8f766106939a02f31f7f3c187537a1d3a98e0d645e47fa53966929c1f26f8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"88ea736aa136ebf620c06160e1697e676dd49c5766fc6ebab80d0159a7bcf911d95f75032b274ed66d26bf0a15ae7588a15a748798bfe729558da11cc9fe5ffba2e70942fc8dcc116630e7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3ddf4aef1a8861a341ea28e2a938e76d0122ec0258548771a7e224\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c7d78197932c289ab20743b3e7a013e0e5dd5ad4c3339783769d6ede3ea8fc4e1b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d510cbd7d4a01b87b1c49cc8fa83018a3db29889cba57eb5e21de59d588a37d8a37e298949\"\n}\n],\n\"handshake_hash\": \"a91781c0c452e6420b815c08471e703e0b84058896328241fbf71bb75316d17a487389ebd17228d7da0c6605a9f0ec8179b6160255bb0c5a742743b9db52eb2b\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a877ad1aa24df92cbe75473b64f3a0167dcff1a0f516c0df42a063d4bf4227da47ae21aa080258df385c29dde7c3a886c0256f1325bde0b15a62e3e5ff8423dce98e26b1aea52633f45d3ffcd6d276cd9c79f55379375c90da51508a829d9116a5bdf0dbae2fc705\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ce7d0608878c46b57ce6e26c7aea867172291c6f91902715491463cf2ab17d85bc51170dad76634c73af87decbca3555d06354428b8d45041f59a260744ef6003a4b0c7e9588bd7ab779ea507ada6de5b18dcfced19334d7b28697ec1fb6bbac0cf040a18b58bc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ed22c52c5327bc3378a095e114bde0265c022932fbd2aa3261b81c2788f503362ee01c7d605d1640ff421af56491c38b92929302c781eb0a00d85093318778a2ee2d8436e2fe9cf9502dbc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"859f0d680949fe7fb78014f6cd3decca1afc83ccfaea4af0bceec5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"eef7cc73f12046bb726c94f12efa3b5a58ac7a53b8b9c6b6d1e6e0a5445bbd2b1e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e4e3f6833843327fd86b0943ff8bfb0a3a2a47e33a07b0f4449db027daac8c69f76b1002f3\"\n}\n],\n\"handshake_hash\": \"b1688b69bb2f8f284b072ce464298cc7c77973b602417cd34fd65d3692f4efcc\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c36c5af7ca566414883f5cb1e8f3ecf84a2968af00918b4f7090d40146752cc5a25c13b0cef6025972c361f6d377564f3a9d46095e102453aab62df49138df8f2da5efb1fa826af0deabb876d1348b9c526346ca12e1cb1b01e4801e3d3898c219d17afb6cff4616\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433379c8bab28d50aa4d268b5976b9369802ba1d2ce704cfa6b4b338fdbd6fa6a1c737477d2e5fad99927048eea00c0fb554efc8317dc7d794942d3c3499f4743a985991c5169e322deb43cb111c2ceabc0507bc687290ec22ffa8f89c506ddfa2b19863960847b9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"76f6e9e85d2e7f7ff9608ff52dd04df4306db5514e1509478ffea537fe26d9e91ba909c86c2d6f3e6e0c7ce3797f92b15d545d50c5595e1aa3ebebe730173bf61abb80c09e54d9860609ea\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"aeb44936262c97078c660bc9ed8561d491c1fc21c3fd153df2a7de\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d9320b3b5ddadc98d0390eceecd18926882cae877658260da16464d919b178c86d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"735ea9f28b7013b97f7e88ae51c641ed2a8f1d5280a801700a31435ff5aa199a7c029fcc39\"\n}\n],\n\"handshake_hash\": \"6594035048849e535c488b1fde41f5c42897c1f97ae06f3f3b0cb673510b596078c4234be5c267add3a3466853b69194ba7bca22815a99ab188608ed0ce972be\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441b4abfabab5da34b233c200057b6704e219a1cbc206a9e07d30af16541856a11ff95e109e7b35067db0c3aa64dcd3fa9e416cb03a6d27a10bd57ba70516b7dc7e9cf7a228887c6e88fd99a29822a22c5da1e8f99bc6ad17dab8297d83275283654dad8deabb8df08\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843efb372565e44c9ad52fdd6590b3d2d33a97c754412f9690e47a000eef2f42a467b0f02b2f6e0a6822af9f6de14e566277b1db5ed8d8ecc7223fa8648d5122c3bbe82d60262a85638a2ab3e9439a2b876f0316e4f0e2cf35d708f03058819c90a34af87e4437585\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7a3f939c7b12db97ed75d1006ab0532d70d64abc24034789e1d647426fd259943e15faad4d8420b7ffe1c947d76c32a46a225da39d88f6fc563a85a212e315edc7bfa44cc1fb228ab0a0c6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6c6a864e998480a76a0d9895002f855ce384f5a9ecf415df8ec61c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3829d24d64f5de57318d366a828358c87eae507f925b7147a5254850a59be54b3b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8bb07eefc08c28a180a0c99f2f51d31505821a20dae8b4ee8db3e4b89868f4e674dcc029d5\"\n}\n],\n\"handshake_hash\": \"c4c57c7141545ed3a09262c62168544ae08254a0bd35e5379f946414e4869b1b\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f5d0f6cd0e2554852294b51f795a5c64a4f9724389d386ae5aed5c4c9707856587be2ab5cb9e0b36adc4453ad73f1b8a26df31ec9e0f879b1c3b4065d1c7c8a407c80fdc0a18b127f60d9be7f03238f8039c6dc74f6531d93e5356e88949afa1f53262b05a93af9f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b0041e0e7f5c0398cc41c34e3ae7816a39d531fcee4726509180832bef90e9390312165c98aa261c673bf7321d4cae3d3604f1f685ba99a374ce5abb728370adf0a6ed9706224f21737b1a483d059a4b37f5e6747ce15b874618c2dcb237e0bb1eab8e7597fcc1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"82b736044d11da9808b5fa931f7fb17fca923c6d7141bfba1078eabc59a1d23581c831e2a5d560b213443022d57f5cedd5f3cd5ddf0e7d98ca5f03be0b3c9941456601cd9d7cbd11517454\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"792509ec9944585010408a75f319c96aa01cbb95ebbca385d6ec2f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b7c37969ba718dc7aa667b205f9e5879ce29e0635fb67b7d5a7ce67498010b7bdc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b02067f0c8481bb2c20efeac670daf4d06a43bcf21f0b796cb8e9f33da38eb7ed5a23d2d97\"\n}\n],\n\"handshake_hash\": \"04529b733bdb296b4b28db68e6f8b39c8dfd83bbc099fb380980f6b9a2a1757060ee577583e2db5f2182ca50789a336c93201744e789ab1ca9241d09441963af\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ac8a87092013dada8f794c0e9591bfa8d150c823821caa928fc468b9d9fe5aca71bffc5e2d181b63feebc2ad01f363314e8f54a13ee2e36e0842ca2d8aeed39dbbfaaa98ba32b137241cb1bf12c67e82a622a4e17dcca9ee417bd2b6c59653feb2d5486463905379caa7c27072d6b993b0d10e6ee916b3e5d16faf6e8e1d6e81eec7dc2581921cdc9bdbeca0691093cd78d6095dd63fe6f82f2de554536f234d7a1851b57634ae06bf87c64d2c763c895aaf2ff3c088f73f4f00530409f7a6b2b2117d7c3ec385b432daf9a8c142112ff3c31c0efa4f67cb7393e387cf7c4fd1d2a055134eb4a9b6384b281b86f82b85a3b5e5a396757e0ebc33c85691de2adcc5ed3167d3ba2b824fe587596a476b54c26037d3c1cd39a53fb437f27f368a3b72019a4859446bb0d4cf2971786df11ca90d02dc1177137be101eba240c2e3915662490b63f514e43dbe06218a634cbe79bf6d7590aeacb0253c263b82822936c40b95cb4f886446db1e1f65c240356df8a65477eee98a3294aad4251fc0e7e6254c3e45f8b0a8505a6abb394604ab1410e3e88e08e6dbf34ba8fb6f39e2eaa104d905cbaa62d95cf02df2bcfe90d91288f80e62d022bb057b49befb48136b42b3da360047729283320d6928a8089dacc312cbb481fc8b2d18e0072fa17fe01cd51cebc778eb879ff7608610407ffb699a5162878fecc664bee48b6eb2a54b1ee433c2e2918b6a9afa407f50b6e8097e86d694c3698a32b0740ac42c295f6e05b2e429ca62ec179ded77061f415bb0ecc8ec75e129f48379b208d470815bb9cb5add994c94a018b63144b82b5adea44242c1a28931f7525cc55da875976de6a212f32d98601d66288702c2b9272364c56a3236e3d83953b12cb903e65a367f4e66fec976e2ed25ec3143578c7737dea6c1352de6515c6693e1d42521016e3606932f2250ae999b0b0f515acb91a3bf24e1eac91636ae3f1c2176c14e8c7b4dc9082b4474daeefe72757d219ac81d5cf1c59dbedee4a7bf4f0834d3432381485623c7081832b44f08a0c675ca27467f843b4caae04c176ba7b5f0a368b769827af3525cb97d1506f916a6e6ea44b38e28ecf7c8cd67653430891d179ff4ad5ba687d015cd60ecbe47fba3a38287a2a1882a2537273d6e4b2f3c631aadc4057b3a134542bde272098c35f94cfe85dad113a0158a4020944df758e898155d91843df4096889c0549c85f0e1de779444ae61a43953828155c4b2c79f28fd868a3442b7ab728eec49db771c67294042d2c6535982cbe824043c9c76e84b3e9f9cf05aeb74eb9c25efc109c12c0ba7c098a3bd8d26df41c427b9ab848dd7974568b10718e31829307b8296633d9465235958e9f7ef2bbe83e7875416c463a8251b9619ea0debfa34028f723dda14e748f1eb8a6b339de6ddb6edf434e5f2a7e30fcef8fcfb751e140896b8f39d3a936c1fcde21a2112bb195b7a68448a1978648a52483c09f69c3de3d0b0d8222a29cf8b56d7525683a8383af0314419d280ac72eefb9f08331ef2dd10da57d3d38c25938fb457b3de54bf02dea2a3b61eea20b5463c8ae3a4947a785123ef618bd4ea63947a9bcfa19d9dd943e6f43ca4bb0fec34ca5ac2b12300d282ead286d176a83d27dc602bc74eec29fc51d971c4f4b139fdfa817c738e8553a08832037c73c1d0951a42624e758e65fbc7132b874928c1bf2ff5cda7f74ff8c7402f6e9f0dd578ef78a7e4592bba3b80b326f741791c0959f54e7cb47513524cb34e2aa800baf220ee9f315293536a6e46f3251abf58f5fc6ccbf66d095c8bcb875371a5a1f37b4365b4823327900453d54fd130eb36a6dad3dc4c8cd63b2e82ea523ec11ce728b6b0a385f8d0160444655877a741cf4d0da38a9e11ca970e201b9c042adf03d1dcfcd52364bdf41d216e8e271b80f8b2ecbdb24d5514390912bb9503a9d2bed5d0ffc32967c2c1f516506e9183693b8eca0b8f58a6b64bce16468676116d2153cc43151a77b8549132f6ef6bd034ac3d062b7df638571cb2c1956f43412c12368466edfa5ee3f07e2d196e0097daacbc743f1db3c8068c78e27042b261f1a81cdc4082d269c3902f9b549ee8f505cd5562586d95fb0c1823f4ab702c8a8e60c28e0bc6f46e99e4c72238fea126298bb3c90e0245f878399a4a3cee58e08c7e73d47b0386ecc93b6688788d2061c6e287bea89430821f4d258071e840d34b00d8c82b369a37d692493c3b8cf23e5b6d54828f27321bfba2a4da2b5bf80059577aac135e2358f5c9cd92a4193db7b224cd56ae409d286e0762371703ce03d5c1c5c11e06ffc09d27ebc2ce103c2fe697a1c985024ec98ce796853b19ecbd910e10fb9acecf54d8f8b448046038bfcc838702cf5f243da33f1042ad2d3b2058a7e359ca06f27cb4fc5f26346a3d5760f973e0f43f14290fe5f5e9f804fb3206f0d326b187e4123df5cc30471a3eed2eb2d479bcc96beba983ce5a65809ff710268513e75cf5b29854ec22eb6f5b4d87c531fec919e6e34b53921b419cf111d1a5b986b4e8ce9b6e40b3cb0a779d34acc0ecf25228f6a2da1f553681daa00b8bc7dd2515c6aa27abc2be26da37b67c0f540d195aa460560e6a157007a9491139d685d8b2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431fdfe95d85e197d36729bd23ae9ff554dd4ac8ac0e6e46b75c5849e2c17a541ec9253f61cf96abd1e5073ab8a1cb67b28707483fdff8d1f385fef72be011b881dcae35385a540d19a2010d42e5502683c26ba09c5771f906d9b70ccd97b0584017e85a6258aec4f846eea59726f01068270c2bf0ee0c7e70939cdc114ce485019f7828abdd244f9e1612e94e25af8a7a02c55fd1c683bd0530fbd387dbad5f6f2d3f823c7eadcb516ab24d935df588734c5245e04af8b5ba4e11ce17e9a04f1a2ac9205ada298262ab896b4def9f2a478d18d8e795657fec446f766e65a88b279b8def03109e4ccc3cf8771c64e2952ab7180a3d9bff5a19413af57db009b8c95852a652b82bb80c45c91021fc0320a48954eef8054ea3938f3026e46bea464865d74f209045467537ebd7a3ec70178867ecddb014fc4625694e0f821be9fe3774465cea2413a40623e9ebabd6f8494bdf8b11c31977175e80ca7c08c4ade34a4d209b19f5c61dc8f5c19ca585c2f482b0814281dde53881e6bf70e4515c0192611cc9fdbbdbef2cb666d16b107752fe9d125fa637690d91f8449a90e9f4d2dcebba419cc6950f768cc5f0b8fa5d5d0ff2226d37a6e6fa597521b1e9d9cce99c1f05eff6fbde8e1ec4958931d793a030a600a2a8d1c532a54dd3caeeed395cf73cdc5177d91859b8ffbbd733b5ec3d4dc26c2a3a23e433530ba9de219b34d41d1c8863ffc030b368fc42aee02f3dbe3f95ccec5ef20686980f61223ccfc4d04486f3ed87a20487c77fc81c22b77aae60d15f7688441fc5a585e865a473f1a40d9561cca5a73481493b63a230cca0951b1634f249edbc050d7ac893ae71b5646ea23f7daee9e525bdbff03b8db709dbd178db647082d813004629330ed279923af01885646bf8fc9dd3059ad763a9e6f7087c72ff9b08b210126bf526c4574b55ef24ab57f6f260d06306c0331e66456c6df80f738dfd0e18434e4e459f19930c7f71fe990596ced67bbf718d84002f8a457c73a16fbeeff3cd757d2bccd6029a854b6400db50299219d26a739ec71aa29fdea6354b7d83e9e6ee2b3154f9c7d03e6570d0c7e5128b54e0da298e5ea97f674cc7f490075f782ff6a09e28634556f945d9ccaf63322d264d2d57bef1ba04c2beb717e17a82ce8833d543947c5cd2d2a7cac5499ab86811ff917f749bb613a46a59d14a916a809e6f7174770ac8c01ddad38066eb5e87d21d7b0d382e803effdf77d560b2485b42d8c5e78f1d1918bf661e482c713ae8b5aa2f00f472f4fb91bd163ccc76809c8b043a4778e1b74fcc000639a5b9f18e1e8be7d0c26ddd470136f194a36d51471afac00dce52fa00106f7a887943322e6c5e3a746fd528b96717bf4e1d214db93a52f1590a51822ab1db4ec7268095ec0f9345a609fa11e9975e4af351b2f6f8713f5e8cb3e3171e01900a78f8a202ed73d430a36fac7469b6f500a0715a69d56d4ee835eabd5849d65ba7c40750d31118a279904a08cc5280aa77890a5ccaa1a6c9a40f2603427d4d66b00e7b5be024810fdb579250f6fc3f419aa52a33317b8e5dd69d72fd44efd0670ee1d58ec9328636fbf0e2c97764fe1f340d6ca57c442f9fc994afe86ce98a1a9891ad24e89dbc873f984c919a564f233e72c9dd490df0ffa27871b6f5d61432c0c4e604b5bb737620ea6a8bb81817cbf6479af336a6e158ab90280f65ca9c10243d245c629be098cebe2fd4ec0214fa64396e22fd9a047ce32403122e4f63af0a0d1f412adeff58f62e33d5e128c5927c00e209fd9cf65aa3eed0f104cb7ff977b06ce05c4164562f7a83332a0ace5673653a6bf74aa11e81c851c2436c2e98410c27451345816736b046f381bb954ff482bffa7c70b034b4732588fcd7c9b2b29bb01c108a51267d9748f671e61c4c29f94cf836f090a33a0f9cb3df9338031180cd7f8810d5f8014885aeb083b26e599e7494c32947ba0b6302c966da04f5b4edc23b97bf5d4a59052349e75e841ea32647d9b64b698a332e246ae2917c47bf8f466d1ff40e9de9e21fcab6b5006aa04f722bd6680b8674e6861f644a70547523e127e11e73ac06d0271031e1fd4d1f82c8bdedc6112405e2a90b2f92f5d740cfd2768740c3fa9e717e8fa521b55e4d0d1f00756af22a9f04b2374762f37a200632264d290e2c462f98b556046a8434b055033dbe741c3180af7bce648da30bac7b384518d7f3466258d33c9f6c7692c650b681647d8bba9e457fd1d9da845b8d870de2b38a08dd31f6dd1442c57298121e04854cfc30bf7c94a21561bdebe5ab44d5e32c5c3ccd33755b81aa5a3f3a9a4e9a2838394489a3ec5cf0a429ba3c0cbc23bd063363ab41f186b65013af4ee524408604f70d7353d6b6bc6a69466b0d3302ca06370123d918661582fd37e3dcd00e1d7a2dc07d2b1b5f93e141552647a20cbac1a168edb8a87c753744357b2286bd8f8c130f8b3a70a402a122bcfd9f7239db4d4b2bf1b6cc58e2692462ae6500ffd171de10134299a1e9682273d477841253333b64c3eb99629af46bdcb4469d050922b8f5c20c5d9cf626e8766e0b74f4dc0908bd1b1a0cf69865a2ccd3845ddc879ec0e6f0b2f790c11eebdb4aefe5d956b99169bdac403f77aa6d1847da04701c08cb800c409e5a72c62535eb04f9267256a5edac8a79c9859392f6d065c3c7e84551e3081f7fab47ab21b07268e120a8633923782da58f9217d615dca33d1398db2a06dfe469d1cec1ad4e075a4e20fc5a1bd9d6e62207331860c605bd3ce20a7fa09078050f603a3e2fb139dd31ae74b01b39a5935f976eef96c7cb562fb0d3baa7accac05d291435784f21badd12500b980e64065738d6531fcd0096e068263958e6ea453e677b7a7744ff5fe85d231bd0543f241482b855760236b7d4d8959c2f3a863a360417a483e232c4c0c6d730a03b2a489b06e9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c8333780a627070179b76049bafbf5138a34e3472d4d0fa16f84c9f3216e269b0f7f569229644f4b9ff7e36c695b9be9872f8cff5152cff27e933ca1cc609249ac3107ca8df0aaba21106e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8d63952ab9aad69698fe96f774e683b0d2b0cfc8c8211b0ea1392b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"760f21878e9f9a3fa69e2a9fe29bf6f52f0c8cd7f2ee4b55b285ad54a080298934\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c154433c5053b7a186aab566e3f834b6eebd15280f3917cdf3ee2ceb1a2126a706b4ed0896\"\n}\n],\n\"handshake_hash\": \"d52a540df20d8c28e8b829cb1cffdcad892d26c7229a1412ee0b3af7b9864b96\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794408ccf3bcd042a5f18c501c71bcaab6e5c9e17d6261cca84653f1043f37dc6ae09ce7bd036a3c95cb402ae82b789e6f061da5e0725918426e4050695d7bd003f9c0285eb1ea9309ada888a8ffb235198673f7cfc0ca6232b8a23216820cc76aa3e281fae8fe2dfa9822685e15557d6cb7d0af70947163fe0fc2d8e1ae282e54cc46c4dc15147237da8e7893ef934c168a602739daf51c9de2660e57e5e79d6ab3973ac58e51bce2538d7f9dce73ea2abc7ead352011487bfea0ee96cfee784f18ca7652e13e7c95e1c49b50884ff67c5021ef50ac6f69ebd8bd632fb5b54f277d414d2033c091625eb40fb1ec4768725e7b9e5a0b9cd403de1e4e698b37027c871cb1fbf76b9f97c011ac64523403537dfdebec7f86ba1380574e3e25167d9f06f49dd2b5479f950711c5624af2f7fa33c9d7b5b395a07cbb4095f08b254af1b6cdc9617ac9a44fb158554dea7e32f46dbb4572bf102ccfc4758dbd5eda0a0fb0487136ace78fd3e544b0399e061b1cb15be9200299a6af2ab9ca3b90c8adb0f768a3747d3249efba4aa7c0a122242ebf1472efa63d714a832de76899ba5d1037291e3cbcf9863f5ec6b0f8a4b0e6eac0b58b2a29cf667e04c006fbbc8686ee84f97892fe026de7b7059d3a22077391490fb2684a13ebe05eac30be4182ef722a9b22068257c0c64f04e4fd5ee7bcdb1b98276de55631ee083220fe73169763c5ed9962b2ffb564fc7ed32c42c929e841756c006bd4ced4cfc6bf5dd925e17e7c1fdc4cefaaa6b9848651bfa6c5ca848bd0a56b0f8e33f3d16b006aea122160f89176d549e0429a036c6129eac97f68f51c5defba8f5b37a080d3ef4f9a6e648c51b9c9c4da47214f539bc6e58e7fa5801bce3f3df1787d290ff0b09321138fd4f5d0c2219309339fa33e57ed47ec1296dc4c8da3860c483cbb8940f3c713e3b2d96c8fc2f456d9d1de4a1a13d2c43e56f1aea25a22e9aa67dd405381db42e69203ccd2989e27274799897b0bd7b7b37b61b80ec168f989e4f7c2044c703ae565940eb7c79a2a175515ff2c3622a87d18857660864824a4c7bd710494172db027ac9676859cc50279dedb38925965d75b53d760c2bf612dc2e70352d740d9564d029f625fc00d93e002e75707756fd6d9c2860eb0bc2c7e67337a6fb957d7f9db2423ebed69065e274f90ce9061d1b703a320168b1f7d92c1a115fc3b22426be12add5ad0ad999e6d65ead495b498f9dbc99bbedc7c9603ec3446d6b4e86baf0f3663902acbf17569ca1930272254c660998a2aa2b9d372289cfe7eb54d6683280766d7909fd270ee968685568e76f6a0350f4fa0f3a9717d4914b601d7d9400b1a6c15cb550a20a375909c6ccc576902fb85d5cd4e3a922bea38f3ed110631f4bb1bb990120a5c3a5a7570638fa982bde0453fad564ab1e1485367d23d3cc1ce9660702310f697ab9d06f65aea3f8517f0a5da542856fce2048b6e663dbdd36ee53e748940f590991007e7548eb56bfc09fa67bb8a6441101b0f4dc104f18c6185428f4e9339e35f6f80cfd7ee46dc071170431088267e6d6feb63963d15c786b1c05c0a9aba894e817c8f711b48e46d2b1ac5f10332f97902f0f36cd034b7a37befefca1b24abd78724e9cb228a97bfaafc3ba668c74767878ce0f25edfbda08b17ba68093521f037da12a5979766983c30a7a6ba8654d5648bf55ce7d1702f6a9b26b6b2b3f72390666401008544a725feeea73f180652987a62d641da1434cf7af5c01704e047dcfeb44589b20c6d3d2fd5f2418485fd5cfbb59083d579a65c47d875a175f75e643048ec415bd9b0f10c9ce05f1e574d3a6150adb1eb09355aae67a30df3f157a3dfff5a6d2e9c898714bc513227b508c2f7209cb74c453941e5fc5a056beaa379c9d368752ae7a09af95144f152f4c8883d091f6e721d2ac09ef37307f5065d3089d670d4d506bb209830d865ff80c6e310556789fe74b29e731fe22b43f31c04dd9e94dad753c15cf5a73a19cdb4a5c6e639e215454882db188b56b590299b744f25b8f1ca6e1025d91c0cfec20fe027df55d2b731a2082199f938e5199e3ee79f1b1f2ffc6b52a4cbb44d1b49b05ea8a26f9b84f3d3ed958407819cd75096108ef9f47e446f0fdf16bd2a741a745c4321b05abe83cf2b2fe0ddb827b6b901a78b429ca38e1f5f224b98f9822eb8c485735ab55b2563cedf16a96a32adb81bb8351cf053a46c7b46b2e5baf0180d323d5e415b5f6543db4bda342713372f36439a980b350788a1faef5f5b4c2499a8937c43f4cda0d0d32b91b0aae5a1ec9c5ca4f08a6b0aaeae23047c939cb9758d463ec8681f3526cde8ce33aefb5e09d374a3ab758c5949269f962a905794f9c1e18b35971dc86398870b9a6f4edfd30fe1619aa4eeae06abc65b6dcaf1103e22d7a9d74fb6e7b842c0e3d4424a5a67bd8c5f78d68b9e0fff9d42c73ca6bd6cb0445cbefd53696fb8c4fd13d0ef91f02e8d97c7497ddbf65ffa926ff0f5d637ea057bb645ebccbfd1b97b01f63f5b23307ad9bc61d05bd7434bb3f28a5d1a2b3c347205176492dbe2a1581cf9c0d79d0b8fc18d9113cf1f2cd1f46649dddbda9966cae7450d01a8b8d869155997673873357103989e3583d1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843299351f26f75e85c9b63c874900718891e34a921a1d61691ef025331ed04f8a6a9d610c82330c73dd2d578114a6c81daac05f6997cc03f7d0897c0f7e41a1f734c034efef1834ff432aff95b9ffd0f462c4f2fd518c828e58dd024a8ed7341b0afe4a18bbe5906bbf4473a4c2f4c82c59a328cfa0f5b7851af4ce454e849e35aeb7d7fbc6ec47b0a891eee617acda98ce6cab382e1436cd001e1f9918f88ed7dc012804dd7059a573af364fc95874c519406dd9e28f1f1a33b047863b5c6d192a072ce28827a7afb521edac9ea27dbe6e7ec2a5d3208b4a0e6e77a1164735e1f6da410351114eb6441edcf3c9b99d2a89398455486326010295a40b65fce7bce6357c1f6ac77c59e7cc8861c0c8475f59e4543adb13a8c88647e5e717c7d0f86b04e5f1399ca29ed0a657e72dc60d71f5ca5ab04a61e5a401d5ccecf19e5c9f2372cfbb004e372e4094f3a08f81f3921e77f4ddbab72d547952b9da86874eb1d2e989374512bb429c18cec49f78c150ef325fabb406ef9d2ee3de87b1fc615324e26c08c3f4a32c50d050d678e9cc02876c8a80d4647c3a8da70285f59daedca3f7568816b64fb69174755dbf325c2cb27e382968f21fcb3591c2489a247bfe1233faf7ef3b9ed0741cfb0469b1775fd6bcb14b0c1b7cf027d21f86f226b9b592473acf6cbe3834ffb9d70e3885e480cb16d7980e1fda3e9b05302eb8720de1efaba3b1aca73d98d6632de605691c3fc987c8ed8a97910ea6578d9e636ed0d1c13e58035ed41f817c1037dd7223927c5de1f221e002f119d55ced9b9d08034fa908889f0f859f1885979eb5e2ea508ed6838d46792d7f785d787a78cabb7478fdb97f12e8f90d071736ee3d44b06f497fccd55656cfd6cc5a7b3def5bf415e49b1e746a071884ff835338ef0d50b23aec5c538ce0c1181ce60315a55836396a2493e36fc8032f38d8036b50516d4adbfe0bcb52b20a2a56f48b75187b57c0dae9b34c51ed91f695c0ccdd29373cf01a3e435f21a0504cc97fa083da7c17a8820800fe7d7cdde9c88b18315a4e7d4d4ef8a9a46b09dc888a6025516f04b3152e49c40c37ca10e772177c1e728e11d336b16c0e202546fd03aecb2579529cef5fb0370a56ea9c8cad8b2b28164eb5989d9b4a25b0dc4ff1b8f12746148fc8e3e15e1c95099cbef1a7946c51e3d52cf682cd73e23eb0956361424d5d8d94710d4cb4ac043eff3fa9c8e045ac6cefffeb5a896d550b9128f3e91d5c9f2642d87e72120a0be4e05071da233a59659f564d790983b668cc542745e46065c5cc3b9f7504fa1193f121ae719eb2f49fa76daddb5d7a8754c0531de26f160e09b1e16af833eb3f9024cef32c0842fadf209a259218271a05ea09e46d491e6a49a5d7a50172cb7f131b88ea82bfb0686c56f00c453c5f9a54d3db36e369065308d667f4c52239219942e96f902b7c4f442315eae4aa3323680cf8fadb3ad669a9133ebd4269b873cbbe63c9b316e5465a7bbc1fc25540db8a85f8ef11fe5c3ec6fd424d31da855f5b47f3f497ce584a377b7429d01ce7098c9b3f6bba451d26a9617165f8ee715c3b30272dce1f8f29c7c758bd43da5859ca833ed6e8453953cffaa182a29c62668563759ef33e3d769351f1509c646643f2c74a0d99d2248c9a89687f597aaf60f8675155cf42885e4946565b55a42886ffd9f43ac47cc429d02c54db10ef3b6639a86b69b995dacbb303c8df8ff4ef08c205fb49817390adb8292852bc8843cb1be1b37a734c49fdc583f0c6ff1fbb62d64dda51b6b6b8d5de2da24bc7cd6099e76e7c128750be1eb1cf5bbd8c9fa0c4101789032085d8a78f5020379d9da4258793c1547ec7dbbda4157a1636b88561a12090e45a08d9a978608ebedf2f289d9e9aec8f6692aa2d60ca2195d65dff0af8f354ea4ee9e8464875f1109cf61e81e5bdb8df457c25ab252bdc871c290eb7e56f2bcb14605c76ffd029e407e3a287f789c011f22b10ed1c7902568adc8aeebb8e587702ba1eae6a8d811f11486b0d11f414316f5a75ee6d228eb40c500130a19750d6fff8d012f18985f1a26b50a31ad06b08a585764d878076d90d2f0a0a493f430457dc0f66ba324cdd1c712a626bb780edb52cd1c40b2f241f02f60e17e2399bb9a050e0677dfbef01ccf091d98deb5666daf6881e6c79404913a760fb31a336ab03114adca4c82a4d0f8e34aebdcebc8837013df34059118cf9e12168440855795bbaea9ce87a39ada0417fbcfb869e98fb57a2446ad405e01da70452c841614f528d6a2fefdf7b9ed007b8f92648dd83cd8ed76d61c52fb0127d30799ffec63d4081b5f70a3fbd887adc9ad50182a6732ddfba27f106fab73306ae68575996cf09e9e7e7a0b74e07482c532d0c6bec433bc0b38cb3541b6a722f0f36b6d8fbc182a24522cf07ce1f63ffecec50c2c9b719ab32eb28a3e9c5f8c480993c51558fb675aabcfa4bec95b90a53d41dfd55effbed5765814363f1ec8ab18400ebd18c8885f97723e1007d462483d59b0f48a36773019f13b451cd5809fc85a8a69939dd1a70ad325cc6a093020d08c29cdbcb5da366b2193bb046c78975bb2757b53a908600c0b3336efce0c6c065025b452bfbdb927ed5a88a2e828ea10f221b4f42d32ed2295c3a62f26cb0e40874b7213632c69ca2485d31356fa7207f53756b929e71e721673d96ac38487a27527303a27326e1ae1a91b783fffd0ec427805080d5d7ef4d583e4cf6a5e65c739af13beaa1ac0df4e418a6421b5e5565b87a4ba51adeb6dc2077ed83d6ea1c8b1ef1dd2b6164e072990a10f4f7e48f1074ae6d7a3ad9b9a7850630f68a2aebbb2aaae88e8f07d7686c99fa1319e8392f816c2055bd64b0ff9fe3d98d33c04f5a44b8b8738dbe2a803dd48eb3df3b7139869ee794f45b1474112d0c9c8ae6fe352c80a46af271e171294e67ce5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a9eca8e5cdedf7b8dd93b1a1b97a89928c2ca41968d67edcccbc37a555caf005df42f1a9d9d2af962741a0231e4988227da14df000a8acef7cd9c82c0eb5102b4d73961a05976104d8976a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7c3eea0c027c89ebba0bfc85d592c44133c83cbfb3167670b22f2d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3dfdf50de0284309d60a1e88d46be005aefab69cf4569eb2bbb0f88972f73915f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"592860b7821b680d08d0964f73cff6b9b9c4f839c2999e3fdb993d18f2473be0b8588326da\"\n}\n],\n\"handshake_hash\": \"c17b37a84372b31f6073cea93cce4cfe95489c886b390f40843b95d27b12f0d01cf6103fd2071fca014c5a4c984852fbefca420fcd13eef2261e48cffc53a5f8\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ea43318b582b02ef29645b022004e1d321a9b038d3315c315f7aac2f5796a00f6a851ebbcbda26a84862ccd51409cfbff19b811841da5f1f24771b15101ca1bee46b990d8009e35f51ac1b4a3d553b27128a65a0d62d720e7a7c1a7e0ee88c8c3835b369a95285440a43f3658820660b0fd906cbdfa6d531ee265e2eae4f82dd9cda3915a7a161073eddfc04e928cd5a40693864721e32db303c258db3be6dbd3c2721e59f38ddc9a16d5f43477ef794454deaec7d28cac12edfe5dfc632914150fdaf0548cdd4027d29a9082f1f2c13e1e0837ec864d4798aa48c915c90369355dc83c525b5bc77172bcf7e28c2a397cf2563408109380b0c28284cd45ec21dd18d6be892ff5cb124c2d479147fd83046677036285cdaf46a0ee4f9f95f2eed4d05a2b5fc0b49f3c4444caa9df6a422ead4a15d84a4aad3ec6c118ceaf00faa6917bc21a77978bc5d7e1aa52bd4eabe902620bdf29fe3d9c411f0a11def8b7886f3657f53829e0fbfeaa668881280c3ec3e99c1f8d415d145c427f031380eb5a83908f4613312dd6325255b2efa49da4cb408cc6e263307158052151288e0fb803680420b16a748da31c3854be12e01b7458e7bf9fc292368a3f6919a5734bbe873f826ec39efd3c9fc4187aeb9a33d684125792ace5d2babe0ce835708ca1e7ac5878343ba66f2d5ce6c91559d68303d1d6af1726bdd9bd3be7d0fd0e86733866c21b9e88e0bbfc96d42fb6f3cdd514cc41eae1fda4972d6e4a9dffef7767cfcd0d2acb68035de55dbc5ba9e8828a339012956894ca939e1e1ac7dfcadf9de960f6f74b183ab306b31a1cbb6b2471705b2e44f6eddabad3fe716217ef783867f5879ca1285389d6caf901b9ab5b654105f9f449e7c408c5907fb204a36353917b928501301fe102804370a0540f70e7f3dd48d252e8c5a456617b3a02055a5329463670caf32593a77056c5d86b5c27ea951254297ebe4401c2997ac6c0ef9e9406f67209c5ba68e54bd8db2f9a1dab56f6160e838c954e3743d2a7b075180ad64203d3c919476cdec3e6fe2a66662dd31bea4ecf507df2adcd84d6562a20f2612e8e501dc7f6ff75a053927f1c47991e5bd36b816212799bc5b44644c76463fc2925bf7fb6fe0d2ad230907f5d7ddd5d93ac49dad649a984ce800bac3bc951baf52cbb34f1d84294e5a5db1adf34a0669fe6f282acc59aa7ca2162615218e159079e87e3573144d4d9f127f2022199a04b41b4474dbbf97659c2675bd7b597931a42abefc2b9b22156b9fb09f2eadc6833288bb87cacb930701538604ad6317c6c7dc0d53d534b13d3f3b29e1df6c58d9b85472c3a8736b1cccf2906210e2f25b7bf2da65b6e2fe2a9ec6333c2c75edeaf27741fa01ff76d6a558abf25f7c46a525828c9cfa44a9289357efdbc3a6859c8f0f81201e6e53aab97550a77c16baf7b56bd334d9e712bbe858fe0b85a5e2ba4ae8f1601973426dba56bbea73b10c412e474c78634eb01c0dbb27b22bb6c75b369527582ba51cd228bd4e0b31bd6d1536a81fea34725774a3a5522d5a2ce3d8934cb1e5f9aacc390444d2f2357d23f27448b98b938019ce2d4795a530f545cf41fca67cf9a3d0a990827eb33e0521fb2090e7105b5175a1ace99fa3c3eb5863643c1c55040d0382359f5f1fde583d30c30fef19f985c3e8b7000453a079e72604427fa20deb2048f766f6039c15401e05f14487e356379df568444221cf5805134a5e35b74d0eff6fbadce834d6f027a5b8015d1627687185790b056d550dced7e122c47a9349d77c46bc365199db83dcf009c11736b5899110ff5a0c6eb39fa8b0751b1c58492f24b8b2d7175ae3ee0856dfa3c719ab51d57b0fcbb7b3447dd919ca1d653a7be9d1c46a5aed35145e5f05861b9724fed27634bfb4a189de147cbb6c33d4a8ca742de607a05574eb0b2e9753f02da4fbdd4c229d69556aaa8bae9ea36ff3eb00975614de702847cee5fc210ae27507a29b01225161fab41ac2cc7b50c76e3cee5723d6e55205fd1fb507a800ac9e9b68f59bc81fde48e004d295aab230ccad0e16ab75d7d34e1c142b297d8d7b0b88658ff6b8aac08cf3cc88b8ea10e2b6c2443ec5c50abfa269fd44ae8a1fa66bb70ad95df1f4f1431dfc1dc9b5d2e64cc189ef29656fe5497b376ceb0a521c971525f07e2767902241eb67be84cd6ad3db89dcf182d20156beb5a939c47fa38982cca89cb5f83f27972087d2a33065d79f38092ea3417ec0a010473e2c50d4722c73d32f4606180ca4b9d6a748dd5234b1501c673bd306f83cc213b63c70dc5566e076ea03df3d69c8d3939b37775702a28cda3980135e37430b062855724829b455d4348d252888e2d5833b75c329f0eddb6f832b4797a726d3a19f161d52a9f38496f5f0deb8f74f1e6e69965788ec3d54dcdad22bc1f3f58b841762bb7b65582c360adaf32816006643b393478aa8d7ec841e21d873c8ddc603e12bd16f46440246ee58a212792b9762bfae7e3bf79f35caddbd44bedb2a0af0e8065c93a917e4a49a6812d8d23d6f72e10923b36c25912f4c4133d4889fae6fa9d5a075761a569e3f7bddf51ae77cdee2da31cf20646e3fa5b7e8b211fb030a91c2a6c978d09c4cf6095e9a363f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f2ce68e7474d36e88c1c8be221f96bcd31b8a5e12aff28eb4480e5057f305f9c3171e6a3ddb747cefb8af82a8f9f37e44242b5011befe1ca3229885f385a9795f05ed4ae846bde3ac4e6431e408455225a1c18a696deb0d3c889c75bd6d426e6eba81960cc968052225be7a86c7cc224b086db41d89e905d88728ff86e7df20f2ac8a167488b131799969070a73d23e094a4800d24912112bb817dff486ee912ed68a9eea8706cec0810d34431e1ea8e920420776a0f2bab4801dc0fbb712a884140eff755ba574bd1d0729a7c05ea54410ef012636f9a8f65b0b0a746a8ddcaddebcff7ffef74c7d22bb3f011699fef036739fb3ec33c25cd55ecfc397818285232353d1002e2277617d733a1475624e4d5d414fa716907de315542795d1623b011e567aaf8fac7ffc54aff13938ec5a16c41c3a2b8829507db937267e87c748e210ed381598a5979b50899c316a0608a1bdb9131c0087fc633b823cd543849bf62258c5699c5c0d16be18ef262126aabb18b611599a32cf4d3a401ee073a3528aecf5eb73f4eae10b1689e82f37cea5a6f2ed7ce18bade0f28e659744d70d3036307964b1f8cba0f54e663f9517e62d931b532e65e1b5052344fc894a283539e667b7ed2509663a7eedb07c26f57b5bde8c9b02cea646d8da4b86d8b63da6084b757acecc73ef82b31a4fe3bd8881becae1ad379d0683d00523eb52f843487c6d63c1c018d96d6bbd3da7aa8af2a8d6a406173e6586cc8db16d3af397e03c657b1ffa02e7e54382838b809f640624c086acfa30eefc703028e8bdb08c669741e81cbac934bda11356891078f09ba61f1e481cbe9565eefa1ba314e6d053fe5080a7faade372cfdad706ab93155236aaf5893f7c8f452cc9c8c4c46fe67df8a46b760906aacb83944aff31bd5fc03e08fd9fd2a138bf2c3683e55d0e8e7909f5fc2f312bf3f7d4cd7cfb0a02a5700a7e7fe1e217da1610893f1af34424b8c67d4a5cfd535ccf29c40d58923e31038d495f7d9ed4b310eaadbe5016784d2826b20c8e624f00e18276f331b8c2cf9a23616a48c98f4e788e27f193246a33260c3da06139f7c5d9a6e3a250abb2373107dc67ad787dfbdcaedf27fc1e996951368a19e19b088ba073a44e4352356c17709ad7c8d3bb75c6cbab7d62a7e8cc18acb8f7d9bc5afa1ad10161cd9c92b4a6353294609807a563158ea2e464a6451626a8849fccb3841724984a8a02a69c0c262f558e8785d4b6d44577e2103a07e77883257b7bb0e13776120315a932b38ea51a9fee35897192d9f1693675309124934c30351248d7775f4ce57f702681879aeb144b6d309c040be455f3715546b40785335b7bc55e67b9bfea6a133cc598c741f6257c61dc2dd28952715a720dc21fe6ddcf8c5499a5df353f0f838cf62023eb69e02eb816abb94594dd8d82261e8e78495c16ea1eafbb28155dbcb9936cab92a11fe2cfb5892d04250b987f90457dc12bc1e2adbaeb4dfa6adc203d8175480165cc205daa8fd0406e4e514540e76400edbfbf81f61e85d7cc6cfdd8251852668770dd59da7bb817f3667a2aa5f1d6cd340f6d6225445f8a6d64eba1857e9269c100eb50892b03aa724d74a7f6521e6407529d1b657e428d7cd289ac6434f6ec37f5296f6c4976dfca0c0cb46b0fabfc09e535948204d1ac1efb382a002e3592cb6ddcadbdfda30762cb8ad172e387e2a99017ecdd8be77cb8be0c9fc1b01310daaebd3567610920546f8df4b9032a314e4f1db7f32245f497b304f31979c9d4a444fcb1813cfdf94a2d9887b6799a0ff529ffc2c2d974fe16efcf1811c7e6e4798fd5e75f0066ddbbc55f2e282f66c55e2178e027711529e6ef9cb182ea67b23f2aec445e3ced6db4ff5a50572cda7b12ea419ee51ac077776a45784dde47e5ef6dc8d99572121f4176bfd624595f4075f66d55cd3471b19d94ec076142482df4621ba5a0fcdbf133eee0c0c30e88086a44d7f16572d30e6766faa09fddc4a3ace3800a88199712477772cfa16f86872cbfdfb35a0680e414b93c28de68a35001538cb2fcd984381723a3de8438193c2b3caae1e7616ccae384887d25f40c9ebe55963064882ef0c69d379f0a6a4971b74bb067cd47c1551e0cf8c08599baa395c7dd7161427376be04d7e2e7fb92a3bc469d68ca5a2d97c7e5355d6b8bb1999cbf42b75531f5362fcc6eae10b998a1145becf8dc361542a191670da257da52c43217017b6642b6245bc13da6d6940042bb0e100b58a45a27239ad42b5d2dfaacddb8bb1e57466af7fc1b8f6cefefa6c8d476929898eceae6ccd180d890b69fedd73d01d6b4b82d02d6bcde8f0296149cd7edfd16bbf8210d87db7f3841d984dd4ea9ef88ea072a8f596adbbf257e8f64c137630ec3443d4e3daddf3c6c1907d6cd78943940fef7d53a91573d137b07138ddaf6945ecb252a77bf072c0d7f43893885dce97c50bea970cb507e4615d4d1c28e20467ff71a2026cd5c8b3990103a6ae9b8d2fa204613952f053d21a464bbe4867a90a8b31694e38019b96404a4cc85afcda1e142f436ef9b96f8cb7ca6ed3449ed67257690efe5e864fb7d1af959b257f3e7c112c10f25d2d227df5e6f9c8a44e1ddb91f639a860df034757ef33913b5e79cd16318ae5800a6fe4a8fe43aa283953dee70a51ae40afb6050391df40982d4593626bb85afa9b15efe74d510349a949a0ab255e91cfa25399fbae25f85b7f11d72e11ceb7c0fba721efbbb72081164530c1059ebf1ae85446a1eeb2aeaa19ca912a9aaeedf5642f6d147abad326f23de565c10bd3ff600cca110dfde96ad6e738bb0c5f2978901041ebb075d989a0915a3afd06aac824024973e8d2e6e568d9ba3caea9c3a9e52bd3b9484643732918b4ecd246e82bccbbf733ef3a06593554d4e218b7cd49fe2d78e7b60e2621d71225da37daff7dba4e6138\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b68f7e305286bbdd2fa09a48539d12d90cdf4b313f945234e3ec64cb877ea83cb862c9113c6731f101a4a8a7007610e0956ff866ac225844fcbeb0f2765ad723b41d3f53d9c3c5746a9032\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6378452fea21ee5f2c53a510e047adf0e2723cdde4e0d72194e014\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"37bbd616820868a0c757aade53c172b5480b1081d7fc12c6fd055c40449ed57d64\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8a6d6c0edf38e83c5d3b90160489cd06586f62e03506d4c42e52d7b51d35974e8eb073684c\"\n}\n],\n\"handshake_hash\": \"5c4fc33a43e5a9f3b082d2c75e512b98a0f863cbf2146be4c6af3af5df8ccb30\"\n},\n{\n\"name\": \"NoisePSK_XNhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"XNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b5c2d380c98bfae87c648ecf1668450cfa3221fa2bc0204d40ae48d0a372cbf6978113ead036d9b5a1acfc9ce3cddf9aed439f39f7946b892314d815227ee2247cddb32ec59a234b00cec895f9612a03b39522420decaf4208e944bd13c27d7ce30d1abb537baac52873be5cd72f01efd5571289a20c5b3321afa54110a7e404162bd86b3eed33558c33c8159916a0a16c91253ba068ee02fdae015886c86999af885a505473f00d6eace3a23cc9b30830102d8c4df7cd7a3751f7822f91f332af8e1d85030ebd59e74b5fce2f3bcc855e676543f41892061b82ee1e5438fd6a10df39d64f7001799e384cc33ffe03d0d94690fa34c05f171d06df38c2be88b6d5703ef006b99f9bbb002fa26d4f6d8ca2f0e73d27cd9f9cd00bf383463d357d78c84236760cb3dd6e94242e3352c8b42cae58894b38a45d6cf1078c9fd485370c1ac0d6cc8206162685b743e10d3e7f4358c58e7a9241c11e0585c7ffb197b32e2766ddecf452b9054cac5d10f9714f6fa0c454558750fe3f5135e75363fcad4a5f4ca876955fac23421262570a6ce4221a262bc8403974e75d87071210a350dc149db4093217cf9cc78e4ebd38eefa06d48a601ef51892b3c4509cba2690c4d92f4c6f63b33d9a6b48010bdc9f4aa7ac10d789a12071dd647e894d20d7f4fead50e63d3adeca2f1ddec9ae43237ab5059c62bbd4f1f6e1f915bec9c6c5ee6520aa999bb5f475eb45a6f431f7be1cdd3ce04cb9e57f744fe2979384e6f4f291b0a1d1a0b17c608ea0749f3f8e8ed0bf4a2332dffeb740bc5b70733363320e24961edc99f89365e7bd7baab4664a5050f13e2e265e7d20454c245998cecb981cc513d443337ccb3874086b1ee6c499bb27536395b8925c1a227b74634d9a327ccabbc9b1fccd968c84de2748659f4a5fcc89640154cab7d1a53ee6764bdea5c8859c1b701ac0973eeffe38055874fef9af0b6b196806b048799254499cf56927ad904d45c237e7683bccf9badf4dae6c17906658dfa556d9c7cdbbdff34a662054a125e5a6b1960531f600dcfd154e0ffb9a51f13f1d0bd29956d73ea74af776a5f8f1a83e31377c5646565366b88c2e0289823878229a378a125fa6c97e443c3c18e0ce2e23b15891ac1b2718ce3a340d200a3c4504bd738f2662cedc660f58053df2d66e0bfe3c974daf7f4e1114ffd597d61092ef382cce5d51c6bd820bd44699bbf9245b8e83c543cb3048ac3fa6c6e3323d56f7c7d026e626213683259bf077c313d400f96d338995eea7d2ffbaed057dc867f45490db01e8e1a84fb13bf8f4d7b8ee5be48ef84d71e26cd7af38f6b59b8856ba364aa49df84d42e8015a170260a2935c4e1a755cc429dcf7dabfa3689bb909f9e253ce1012c4d27beade4ac578ad0d793973f9c7dcfcc9e3068043c639b52ee10b5035d7dd8ba229a6c0d063df3aea5add1ad7bd39455ddfe0db7dd50e587a84bc5af6467c5ba8da0cee851876e2caa995f9670d83c1c10c9819959abdafa61fdd8ad31f8efa0dfc7e642b70a36e7ab5415629dcd351d5a83304ce23e449facf52bab3ebb73f60831818268e6dad674eb89b3da675c7eb0d5849c2245abd9dd918d7263196ed49281d60b1e922b0de10728c9f4b83da357d8456d5a003cdb0171a319e08e5d368cc06ad47fe98a9ec499fa59839c8fa0174b4cdb313337446284337309583738f81e0540536951480f23e67f008857d8747bd3346dba3e652afce16108844601d42ec9b4ce9f752aaf591876f27cc2f5811ecda7eb8280593db4c0526e4933e7aec1fb6b2c4f1f4b2dbf02b8cd7a8ce680bb370bb917464adb8c26ee474105c38856172de426ded597579653c008367b6b2fcf4acbc3f2d38531ad55b7a3e6a5d40b66f31e0598ca91c3677053a72912ba3567f4b28f25e06513d4995ea066eb0018e47157764781342403b4894ffec4d422a6a5350b4b0f65b1911f6f127015569454bf6ccc7120b4426cf39cee694898a91939ffa90aeedf8cc6f85541d05606096768df582fcd2b224a0ff89bee730b0ab76bdb2e9634255eff3da5f95eb659f880e26f50e72ae5b34b3bdac8d905a4b9dc7c33cab5d7d968a4cb772a403c118bf157a0f5a034dc0eb8637ef2a08f2738a28f3e4551e0a9e1baaed248e282be720c64c69f4a48d7cadf93ef420e4fa708b68b553c2979e76625a13bdbb24b34a158077015ff03f547a7029904de8a65e0565e0d643ebb1cd56b3028b20b2e1df819aff5dffc7d725f74fcf215a0996663294e0943dcb88586b761debbb56d2208debfb507543c02b836073067b71185d3c8d1a73759eeab176c752c3e31c4b5356144876d239e4797b546c296622bdd30e8fcafc03a46e6715bc686e583f1b203c6e771fab3bf5c21ad86b169fe53051e9473f1841ba0a80a43f7521e31806bf126095c95e3644ea743948378f3fae14c03af4d63263342a9fccdba0dd48a1710bf0854de26eb0b56bdecfa4892b889e11f966132682eccc1412d6f54eefb9cb16f63bbb8c1128ee0efda23ada34fe5ee08cc8568b97fb31b4c98231639d69ab6944ca89da41841ffc4a36d09fdd170fe62bad3eb6fb54c1e1665ea7c7333c1f42c6c0a7ab468245b79a259a4a83f29e99a7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884362f2555f3b9fcb387653e1b5ff085c9e0a7ddd5b1f3a14fc498412c10a910ea0386e3292447270486b2e49d20bc395a69e7d5b2fe03d16134641f0799b992351c62aacfb610b917ba3ed75f1ef73b8fb4ec6dda45824cee3efc5f6507101a444af7a7fb5b062db839cd25782bffa49a488bbbc7e68e4883cdf7163d14a5f57955075d39cc19c3ebde2b6167ad33cbb5f82c5d995c317b4691f5d9842a740d5bbc858b6065ba9f6bfd15610484565bdc5d8a30e77b456e4bb60c048f93d4ffed64d2ee3080460c713f20d25439bbe9999f13202b4fec4003b4de795969f7c31985601110cfb041d7e219340f6d1f7a83ef8b7ca737f945ee64c53a89813300f9bdd2a6a1f1dfd4b6a359de4001f6c1e5e1f172a056fa32ba604ca9b7b5bcb05c79deee7cffb251a0d5aa714b47aa141de693c70eb1bc2bffb7c7564f6c7db8019a2a91bbba6a2144113989bc2bedd1853ee84495a780ee78f29eceee5ae19546e14c66a1f7bd06ae7d687d2156215e51f989d6f8d11eac0cbe9b3e8542f98fd750332c86528a16becb610386f3a6b4dcb56643f140ba95341cbe207938b7b2b4f7cacb5119995b1e16d662fae803b971b88a02ae192a0f97d0d3be6bd92b75e9433a150e8b319520ad8504dd7952109cbd06819edeafa7754852cd101d98df015899a2164cd2254efff5b1ca2e89fcee73786f6617005f61eb59f2b514dca9ab7f4e0b5460b55ffcf080786eb0505549313c13789358feea7b0dd9f469382bba4cd40b5c9d0b113979349dea1a7a1b5384fdb9be126695b1e0592db77cad078dce1ef6042088e06b701510dd928f446e582d172f2c809adc8372ec82279c640ace69d200e9485fcf23d61a7829ae2de44e80c606c0ef611b55bfff4c480805437f4d0d41d6652bb2e2b50e7304fb173a1957bc0e239542db437b0e9647550ae8e4fa0804a0dc8e2fc8b0f2f76ca1c77f4794209ffd82d010d3dfd022b9e71105af6250df6d269af9ac14eb4127ecb2e40998905cae1d8ea16d6365e609bd4b9ef543d1a7eeb0251bcf206211bdd036a70291e25352659bc7e771121560654f4a668179085c0c258a689232ebd0a5b2c2cd44509157e8a1b620d230d10dac363201c90d426899ba7870cce298e635bf4f3c7f69c466c11db53e565a85269c7485de9bfb0a1f333ac40a14140fbda0918e56da2ddcfe6d870e547e5eb7df98f89a1c9ae833cabd1bdcf212c033d08fa6af175909226b50fba1648cac36967d195a0010f8fe55f7df0a8d8441831abb3729bca7df5aae4f315e875a0cf1830f3a0d46cc47fc740d6454dc41207a213d5594b1a5358c74f68eefc56ca82116a916b50be77a6c2ec51cc08003ffffac6849759922d9d482d30e02af3fd7b688bf73d7bd005b9c909e707b210661e104671cfe4125ff03716308902d5a77ade294e25bcdfb64b4d2a0a85b7a86ce55f6211b492195344385dd619b9b27af1d6a78cd4b1ac875de07c20a0290c5468abf21f38b923980b289bfcf5a22474db5b56555514b753cd6ac176eb7efa0533dc27cace6c01caaf1d84c329083b2b91d1fc3a75dfc68b37e33cb9e9f33607c98d0ffe011aa52d8f8e69eada0348b263242a6ddb3858e3f4a6b10ac7c165677e69998348c30c708a10e7109bf82012c9c3ac15f8776258af17dbc47457f76d0e27c0394067e7b30b0322599a1bf041b49bc90b74001056acbe54e6bad67c0c0791d5d4925553212da5dce687ab7d118bf858be4a9465a837c3ec0cb356f6e18871bdb81d03784a7732710976320c23b4db90c9ea5d413b3eee12c5f6aa26952dce07b4906884ac26d02044fd9d3764bc087c79fc5b9cec02cdfbbb36b905673b6f5694a7ed69e452fb0dc29f0d4ce9eeb933def40170c45ddd3745b5fd5fd7ea8b66263f34666414b661c71bf1c90231cfda4e8a1420845eef2ca742f1af36b330de510d39c73d4933aedcd816818d61182950294b203273330a0d1b34570918194e06455b4ec4931dd5157ab74d915c7da5d3e7b8918ca8eb77e9b14ff87f91bb30723ecfd72cd4dfbd0c7d05e7c7363704a5911e9f78e584c015efbc7ea4462c8e310aad9144567f5d5ebcbd03c7957b584019401e84cc5d191200bcc22bd07a3b821edb60538e30799acb42eb934d221ffffe33511f756b98295957cdb79926aed335a54abe2efa49d87880d3419505cef4300d7e39b57181620250f4d92bf52f4e634575525fad6d27b293d96e68e17f6733bdffb025e2b9058de98d4d221559df596991443e2bfc2372c861752a4a920c4e5cbeff50d30ce73fa1274da44b98e5f9d230aca9eeb2373d221e8c11d2e8f7c07c699085fff58449548ef793915490c25ad6b85a8f61b58f3342ea9cb297f2c37a9f22dd6880f4cea840e453833237012f7206ceb3625d7cb4f92f9ed76ba7a6a6a6a226a6bf482b80594de0b0b7a7ed324ba6ea8bf16764aed5e57a526a34bf88c5080a3bdbac0db5e1c70450d5befb9f89407e924eaaf966ed1662cd10e4cd337294b40812fd55c44a2af11e9dade5aa593e135dd63634d4e2d6cded954ff133f6453e67e046b44a5abc27b4712f808ea4dcb92fbc21cd97ecbbf09961f97751fd745aa55608241ef64f1a2a1f4fc5f2a583725187008dbdf67c99e69fc73644b32d5396b23e180d87de72d7450ba811d63fdd592af19f4f56adcc5417b3b9dd63b9a86e9abeaa1b7d0ea9eae16a456a07e0454391d05917633473d7ec8c406eefe46597b0c04d71d7e3b141e0b27587ed7674992e0df113a172d43b01c1dac104e33cfc186dc01f173f9a9b0bbc3b093840684c199a812a48d2e46512b4a40e4c55299a43a7ec6ff1dc33be7c92270c4bb4406ac82b1f255ce424cf7db5a0762c61914a871560a66722f062134bd8df45df8ede58f7e6a7d7adf3d84441761f2141d86bc9b163fc7ff94dd91a8966\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0919678bcf2acea4a06d9e77e9e8ab18fb5eaf75531bb3a84383700df009049126e6afd5f1a55104cda060427bf991cf396fbcef95428da20ba63278b3bf2c39c85f1713cae95a16d3be9c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5696e32fa9347d9f5c548f0e02fbfb0f3defc9943ac7d082408b9d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4743166a4d40684de1dfe6aaf26c1eac68b94b240a0ec6e9a41b23802742e35d7d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"af5f3785832d4a399f3afd50fe58479e71f982925cbf852ee2c54940d27e0fda247a3b24ec\"\n}\n],\n\"handshake_hash\": \"812993356e5e4e9345389c951d2c60d4b174d54cf16ba2b416f4b54fc7fc54f00f87021d29b45924a8f7ae6cacda1b360e6314ae068f1b881e404e551dfc184a\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aef706acdc1da12d991e0343ef787969fa59595bf69f8f6bee7b5836652d07f3b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439c3a3c46d4d16a08e29d33f5a2cd44ce818a7b60216853fc623b6e84dbc30dec293fde3e1ed9b6a5cee408204622e97c4731f782ac876f1350c220e579210a93157a6e93c33146c5774e5484eec1dea80da43c09935ad30cf67af0eeaef8fe9789d5ff4367f84c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"719612f7c48693887510c1d43e7aadf032480b8a82cc8612bbaa0d9a3a26cf5071b0655c774721c24ea4907aa2298f0dae18e17f5acd610425bf7c1529786bd40c8a50509e73d17933b4d7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1f465d0527dcd79f851b7b608af98a60fb3a4492ac82304948d39f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e500b4aed9a62b2a63276eadadc6dad5c12eacbc85f73784dca950db3f7afa12bd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"80e478b47dfa6caa3db77b4c5c0f31def894dfb370f3617ed0cd293ef8b089d1c0121860d0\"\n}\n],\n\"handshake_hash\": \"1343126790ea125e9ac4acf07a8d178c6c4150ee78795d249c9c20c81dc8d64c\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a09aef1f49334c32dab3769fe6dec10961977cc0782647814680bd48ff39eac1f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f65a3a9b90e1826ebfef6079b5f169fa7ba266c94ac140d887ba6e89be8c0b72c74d29b2f5b164f5fc39b00e6a987e7f5e014e6998c5e30290e66b344260c00a375f4aec29d0537429bdf60692e757fc97f5e7e5d039b3fb635a88f3f3646d09b7ad1642386053\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"238d0d5678f4f910a03c34124e41c1a0161c894d7dec5f2d56cc46f370fbc831635a3ef457a38c75d5a4cd54759e74d7d1419c37234b98efadaacb0f3914339ccead8ee56ac3ba6d22cd1e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"731d0abf61a690208e83107d33bb8b6b4922046cef826857b31217\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"372e486dd675e5f9818e39183762de39c41ff1b7cc72f9a165adc07afc9befacfc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2babf1a78ab6adb6ee2dd332870a79388b737ea54afa98f8c74b8e6c8ebd28698d1e6543e9\"\n}\n],\n\"handshake_hash\": \"9746228897336f77e1469a50f8825b63e8b0e405a2c451dde7ebb0f3d89ac682426e96567e1947a8aad7c1d7f4cfdcdf3a9d55e633c23eb3ad78248297cbe2b8\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a46d8ca56943224aef3ce12f034fc83772cadf5d9967c051c44f8bc06674623c8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bc8a6ffdd8172f2dee6e78e888cf5c5449afdad263a229fec04c501f53b0ffa8a5f9cce00cecb567471e2553b4aaf7015c895ffdb235df2ab617420c31fd04f78eea1ba7b9569e28ce7555d1884fa96dbf5ec5eb4cef68afa862762fcd985c9c330f3e817f7767\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"47f787e3540a5ed836407da134c85a99c441fe2f240814ca3dfbaea25eaaf865da85acbca478cfbd02f33d2d5f68d94c2f867a796fdde43bd78af7587d702178470fd91419ab796678e2f8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8efea7062b8cf7b6cfb22792928ccb23a21d5b9752e91c03c16251\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b93c7ce11211bd2b623efae70c3221e653a425a7e8a71f7975f92e992207d8f57f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"df2c711dc0dfdeae90f30e9580a36dde20bcc60f4457dff718bd49b1f3245888e2004b1480\"\n}\n],\n\"handshake_hash\": \"049caaf3836a75f5460b5d6c75ee3dd1b1284a3e95071bb1b77bc356091e7905\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a0d35f30443aa46d2c2696be0a8c866b88488050993e15c675274f21ff99fd483\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f91b380051be73796935b77b0bc3ac6af575a6dbf820c8ee57636b968695e373c6aad01267b74db3f87d6d671959893bad9bee3229c42864d8a426a2eb4709a5cebf79579abb7328a6aeda2a59afeb44e0997540fb2f4f1be46d473ebcc87afbf2cd88d56fbd26\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a5ddba2dabc951b3510320ade29370f70ca62371874b30df1bca55cf584353ca9350b24be4cc0c66aa48d08da3a002d32bd0ee7d3297e21d1d85313b4be7cf448a41fdd12d5c9d1e4a942f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"840bde50e2be5bd39321c9fc2b7684a676e7d0fb38250fd75cbed1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cbbf6fd10a23bd06853093af2f1f5c2c791c5461f1c79c63b8a87d367fcdbc25ad\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eaf1fd8cc1d8edc14fce49389d36b7b730bf158161fde2232b194e71a64fb87b8cd7b04ba4\"\n}\n],\n\"handshake_hash\": \"9799853319df19d8cbcfda0077d1b7729c388597c061d8eb952437f94dbe5132ca97fb9c83491dce16a48293a68587b3f36e5851776d526d6f268bbd9fb00cd5\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be56c92914c0589332c8aa26956906f7906c9676eec7473e8440b715248fd055ad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b3b53d34df68457243ad5e91cc44588bdfcdafa615c7a89026a791569d0046fb88398091b46ef279c99de8d8486b1adb12dcf81131b7f361bc4bb4db92a4fe1f88469b21bd9228c9b0170ce68ff212a871d0f479cd71cee768b48db88a0d4c444e1655db6a1ced01eec69a3daab0942c82b620eb9e8f1b5c65081fc8435b4e28a9446a1534b68afcf20d9aaaea479d62e23ec3746ebcc909bb21e8c0107de0c2349149adef8f783f75288df00f68f9c8728217b41598ddb1a07ac6a580b4863246c1f0483ddbc11e78d93246e2e6b9066f3149947918643692a8c19db87fd869d7fc46a4121512567ac5ecbf40431ee1ba010b5d716154f15339a861eec26055a397f4379498d483ca6b21910a89e44554e2e9dd2b10fab8aa1b04247db896f6eabe5495be417a7366e029dd23391cb64ce37424eb2f9449c33a528736d3b14749b94b92b79f304035791069d5d1fbffb5c9e54af4db87ada0b91f12d3e40c130374a5b2d66e12d78976f808d7b07bd0a4c44b576614191d517a00374f92053de6ba1c47ed7c3428fa18d46c1b84e4919d5712e2e53a6d3c66c9f87bf6fd344e36c9503ae049a025da7e9e9d4e216b0460351ce5b41ae2795b83f8e4cad8a2dbe590901525dc1a44b8dcefe5ac84306be29f1eb98dc03fcbb7d226e741fb372b487c65bc402b8dd4b6c8434ad08a423624a556fa8711e8e76b3b74eb8fc08922054c40d50edb85f51065a11d9ea58d980ac61ed09605cc6813ff24313910ec653f84ceaeb56690ac701da839857003f99c37a4be9e3de81e6569f9461e9133386c9785dea74f3643f795d54172418ad1be4f4fab88d9a31e4f296270c4c39dde26bfcc14e9e5ccc8bbd7d08c211d0f681ebee45f173d8948b3447d501bc1f2eb0869d3253fd3d5ef7a39d58173d7c1e633e18afb6feab780b9589310ad05c6af41bca88617668dc58c076b2b1e391a65be8ff07b7f78a39433677baebfcf1f04d6b9fd35acdf38fb1c5a4c94a3f46eeeb10dfcb4acaf3748f7e36050c96a88471e854faa0679a72eb7a463d4c96767df555cc6f2e74d76c4f2c2331287ca33ec6ca4374bd77febcb2f08967617982955959645c5cc6bee5a276a5ba40efb2e73eb7dd718a3e489636c400663550bc1f667070eea516caba4b4c3350e81c2c149432b871e1c2b1c1012ef2ad80ca358ad7cf7248924bd4cb351a8cde7f8be558551e1631528413ff9e72bc4a4009d89a3d88012f7132837260fea428ef54a90317dfe375757293ecc9879bbab7c79d1342ffa9a54ebd4a019c7e354cb06b513033fae2a1a6aecb768af0d939f87b70af0ff44409a465f580915a9e34782503d8af5aca597331361d2badea2324b3d351a6aa725534dd000cff96a3401f31913711a5999da9e389e71abe0ba7395896cf835c8cabe9e03732dffc5fbb9525b21703da926c4c37f972643594d344b95120a33b645bf3f3e6762ff103fc3d21ac1bc0069734a4deb09274c341deb8d1b97f0c65780fea01f8e9772039e547094f7d642ba4caba3603faa9f0bae1113bd163749e1a6138c5b1d939642414a3773101292fe885b2f4bfd2b356ca47374bed492ba8b14307776ff379d2e1822eaf2f2467ce57ab982dcb67acc22e0ce3da3402f262d44173d78bd3ced47ee73cdda9abb302a61393aa598a86fc74d2352ae8f2d011592213fe7ea181c64af363f86885dcc2cd30e73c7cdcb34d7a426b8bb532da12bf3059d915a396a8bcec27df5711bc47795a43db5e64a38f39993e61e347a959a379fb9e6805b9e1eccefdb5d66dcf2f5afdfa1a39a3cba6fdcd5fab1a521aad3d5e41b14c8085fb5b87c20e01339100f32489c2debe996c1a08a240e3b3c6447c58ce6ef696ca15ff1f9d5c0adcffb3d5d64d281bd2b61f6a8226e923aa20440426065fa0cddacfecb27c67b6bac78ed26ba0733d2971d90dae7b76a55dece11db1ff3744779f58dfa5075ed153a97942a54a98570e9cc3178d9fdd9e267c2209557fb0b8cca0bda6ae9e35cedea022b8c74cb748ece8c6b58941692859b1f27adaabf0372aee7c2e7fe3be4f5bb1221c294cf34a3f3d465653eb780318def5d4208fc616b064494336594d315f01af38167dfe669f7038e7fa9d00bf09a9b963813dde380418d077817505be717b2d8b3064c012281bfbbb1f7b5eacb708509b07b3852d0da8cc1e1eb34e98d688e00a8b0c976dda33214b1da37885c5891983191d556b18b5b94c09c85c05be469de558d720a26fa4527bf340c0c53bbd7a9109d57ddff0505aeafd74c3feec4c1cd02740899f2fb6b0e8eba3aa93b556e882c36aff4bec3df8e9b712b4f6ea62d72c370a9f23e09d3720beb9f2aa340f25bb7b392c350ff7a858ab8df6baa5f42e49c8839ca27798af05fd5c69c8ff89a8113f88b815467f75992fecf231aaacd013419dc38e5ae3b27213b205c255d03d27f576e119092a0da7381ff4cfd95e8af708115dd0e45f083ebf865a3dcd08e1bf0e6ba7cd4dfae11bf8e855a1cda9af0c61f5639ad0b1bf1cc29f63b6f21ec56e8dc68dd0bfc67e40e0a3a1242c0dc840826fc24d87b9201e79aef4bf81cd0e98cb278d762ceb55ed075137f8c9c973232156839441eecd65a29054b79d41724c705c269d5cfdacf0b61122d3195780f61f0eafd9cd2c34cdec88c14f4599a0b70a6a868204eb348b46cd83fa758a6427f8c13e598feccee42c8601011388eebbb3d0d8ed32af7f8aac456735367ed484a27ae5ae402c55049e99dcececb1a9053b5f3b346922494362695f313ec9004975bd4b551796c61024d553185af31deb26ab5e1a5424615ecf081ce41dc3a3a02ca47b4c35b0915a0e06c019be13dc424cbf974ecece69e95921568153bfa9ee8c685c293c095351cfa7dd33119767f9db3948229bec326d57f5182d6600cf5df276dbcd7d8fe43e68c941d0b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1d8b677d4de8ecfd8a242862d7a4d96422932e87f4f5d5b18b303c3d2603b633a768ffe22ac79c513e40f3dd00b117a7045ee6f095c97f6f2a69e4cbcfc3a9aa9956b366504f30be0b075f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0a23fc0ee568a3953a8a3f63f8db54c5ec718705455c2b6370402a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"239fb44f58a5c83a51cb4c92bf80f5f9a82f0d2cd940928283de62cdd06cce4f70\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"18147a2f12850d15fc1608ea46679f38b86fc19e1971b748d2481f5e41a5f18ce4fa84394c\"\n}\n],\n\"handshake_hash\": \"11608ed134e8c8e1fba22ea18dbc177c76de4b99281d8faa1a0cf10601b3d94f\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6f589ee089d9db2351f61bc7fc2159795400c7358384be084b936cba97643ab7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434caba3089ab11805d3a7c80c9a802282fb10501efa17d07812465647f787f5d5c2189391017a81a5638086bae70999fd27a918cf7178d5d2e2f5845cbbd55e8fe2bc7a990df463f5f71ebaee77def5d1681d57078a8ba09ab560764cb4973b2ee51356544ae98c37530f463c5ec928963702eb1de00082afa7877ac829971c46f43cadcd65f0aa6ccf8662e5e6f6b7f8c07b3f9ec6d3aabf36aa1fa830cf2c9333f3bf65a0efc56fdb29d7c1516d72b5e399ef56d60595314670f20781dce720fc87fa750a8d94ab8e11f894d97b7d97f982b2ab3095ddb696c6dd0117165efa9e9d95e460a5c7610300d2e40e7db301c8cd35db53d51f6f218737a17df619034e4db26367d1e9d04d320347570151e8a0927c7caae8229e382595158248da639bc1ef379bbc483bd41cac53894ea222519c2f14d24bad4becefbe8e44ee43cb10d1a0e037a5ccdb6628b8800fb4bd0e3f492ff94f81a6f0bae744fa6a92f0682a7d7ced3a2553fcfc0949d5e3aa8c60459aa060c9f3256dffaebaad14f6e749b296d8871d7fc58ad587f03007ad5b9a3e96d4d9737fed283cdd1b133cbbc9ce9796bbdcedfa3d057cce4697aac71e57cc8bb50c7a5185cdd3d09b33394d8c5dada5eb224d090d1ec05e442b4211c6bb24ce504473be99017f42462074747a0351eb8666562d5c6b2997d53f35b5c36f0572b07a39f0f135aa1394600d7004caec68ecb20a3ea219d26781bdc20bc0067e9e732a61bb5c015db3b1b21ee4e53a12050b3744ed73298763e0c3a6719bbeb3cf23fcb1d47807254bc9f9bb72440757fefd60e4760e715f4488581e5e8753c08b678006be3ff129676087b00f99f29c6feda960e34db9da762fc855875a7e54157dabd99dd4cb16132c1a0dafff73c80cbb2c79caea3f44ddc8d555ce499b6db994549d62b80f0a618f9bdf620f97a059295c18197ccf0ac6fe93867fc8aa202f8b33f668d091d07c34a70efbf7386f4038cb241ed4760026ade800d66614332f6593813570293a2c7451cf93e144ee3d216fc8c5e2f46ff8da9881dbd472df2ef983aea0330b56566554188eed09bd97c7ad4a3c79eae48231819c5c3e7443209aa2b8b36ed296def9df3971d18bfe7fef9d39c5f6abb4d50ff355f85a361ffdb08b002068fd3c3e7163631a1fc08b81760c9c4852038f521b1d4c377bff4a747079bf95e876469199f5c4d9eb6f8021ae123bd1a246a248d31badeb0ea94221af47e82351fc14ff3ba4597476d464ff5572d4e3e7a7b598d3c2c777f5d84644fd05f667ce40b45bc77429c208adeb2e18dbe5a4a11d139b4177a46b55099d330cc27c26f4421893eb00f2a3cbd9263a2287dac1e72b25d8ea0d550b36082fbc9812de1d717efedfe799ac3d5a1358c2215e04ad84f32c9b5bcc5b601ba5b0ace9b428ef243b6e8983cc222963367b49aa0075cc0b67014fd4d04045ccf8f1d46d699de0b0909b2ba22974de2378d3f0ef1b741fba458bccfc2f0f94a11450fa0ebb9a45f2465e80b4fae9e1b1146dd33dac89830c13669eb3f1b0d4f4431132fd994d5049c68329ade58440f0be1bf5345e036d4f1fca7ca87ef70d68591af9f8fae5530f980173313ca4e3f2726400e2dd41664924c0a891fd6a340af9e76a155a6a1b3e6b75bd195a94be7bae9b14302751eb5d214f51cf82dea390e84279e1ce60a4a94f05d0bf6963dfdd70180b963466a23402b28bd8db4490b8777b9bc4037c833b620b101e240094adc530c3ae69b558fb6418f4b24f8455e3d1462f4f303a7ca3a5d97e07227cf55aef9e664357cc0c999cb602d9fa28bbfa5d409d45f14ea9f59ab07506bd14036ecd13f6077009b8bc913c5a3b8db71501065a68c7b7fdec180ba1c69f8b053a117c3396ecea776e481a4b5f9897c2b4c3faaa4ff6345c4ac2fb82fae15ab9fd09fb2baed764b27f0c9278d562a8df66ed7deb7ed665935a97e7fc2c9513449a7c746efe902efaf2819d44bc4379516c00aa4ee0e1d957d4bb16b6fb4517f7f76eb9842c704295af26531736e25fc2b788d877a44eeade1b4f655d7a6d34949c69ccc9721de71bcecbaecc304248a7edb0ec7a2b239964ceaaf289556fae90978c19b2c6963e3ee2c683233737fe5b6413bc617587c7933c1093d18a94f80c2d519f361b5305bcb7540b717e19d226d285eb812653911bcba96d9bdccfebbfd30c71f89343070156a1f1ef68fb97d89b50d3cb001d851990861e662dfcfd6ea1b6154aa8bde4cbfb7ce29d2c53d6b751099bd3c7db49b2f1d8559e8a7b3dc3bedb6c45ef19c1c0d8a230957c6118758c8d37d1f781aaf1f0fbd069dd2308db4449c4830da4d95e95c09cc1304e9ef1f0d6bb77163275af111e901b57ec48653a6696f4b40a407749d75a4f7cc53aa38640c1404304765007e334e06dc58785ccad28572961def42f95d0455e1a67c72e91995beff134c2aa3a469dc9832564f69c396c3470d3d3737f79f0dd75bc9a7ea582027514ae160e158db039150d52689a577c2c0b0b4c04fa160607b77f1befed1e65da981ec4b2fe524914cbbfd80844ed462bd3f83b9c2a3293a5a44206a50f4cb81413c0117dc1709b4eb6461d8abdf941d4e3e11a0344d578e34926a0d195d667676ca3d89857437818f84a9f2044b2ad5de71097bb155d1dfd7d0207ecacf7a2b0d12f63c0c979efa585ae15bd0cf3cfdfa4eff747fc5e7ee557dcb53347500c4f496b71f863162efbdd2d0271424e2f386b7f8496201165a9651085abeeb8dba9f56291104bd1f387d6682b1c10c98a60408ca19c502f2bda8639b46ccb9f9d54ca9152db3dc6542081f7d3e4d121777a7aee54b71283ad270c771dc241e1e4a6af4e7fbbd839edfece7270b90f81df4fd8bf72d6d320eae17f4bc4af710934783e98ae7be1d1cf8c5bf9b44df53321601a2d3e81e6b331f4b7ddda2d42\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"21ae7bd1a8ac69491e667e8aa71bc3f410b205539793d0f083edb93f5242d8b9276f7f7d4e4cba0f072585cc2ae463ff21adb0af0d4eb136b4280e42705e3abbbea3ca4d52039e19fe845e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0f011a4cf0ca1056f8ef4e507fa9fb6a8737fee4aa34bc544fc15e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9cc2c4c165032c8c79e7925d747561ed7b6937181c70e0aa1b48276d6541dee5d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"974f34012b19a67219b67be196fd27fcde0b8e9acbdc7b3e49f218a1e1ab43067e62adb14c\"\n}\n],\n\"handshake_hash\": \"17dd68d455375d48f71f7f51c6f946a5d9803cdd877110a2a96ec44aa24a13a7dee3cdbd954e556123e884342d8397e976d468a5794617ef27703abd8a172e19\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be376c5c8135d40ef30e535f02c0d6d4bfadb4e151fb92da046cac7e804fbfb98a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fc6fcb6ba64770feecfd7d9865a0162795d894b134e408ac66629553266fa5562571c413b338368ea089b9de7cc5262c2cf4be2ae42db1187cab1fbea45a367764cb908c3b4a649223aa1064a412e6bdecf8fd3adb4f971915d10d907679558fa8b5bd0bcf88cc9d3f76a6dbc68c065361e720b756f3cdf06550e9561926a5391c5c570beea3f6597a2d329b1ad38bfd8ceeeb2477cc48b811ace54eb4021a03d7150323ccfa83419dcc7573559f5b8d55038b2f3d77f1c9f80347907cdfb9ca4986a96fd67d68e497c5723239fdf61d4a0636b8da4ea5a63ee605f2d62a7790aa1067efefc6c193b9f57e588563d3ac86506d0d6d025676a9d1f6aedd97e4bd0aa6ec957e7b80bd9d58fb2f7482e0c19b17f918cfab9970d6eec99062f02505b168da941f19e3b6be1565e0e2c8fc4d5f987ee40367b116f18bbbf75936f57531013961d7412e2395a54ea794c25504a659028705c27bd931d0d690d6ba25bce8b74c8b2078fcb29cd36e78d7d0409ddce10e4c1b68a7269c4545ed3ce392f9b50d5bdf0d018e8571037a212c1e985dcccc9019fbe1ac37165561bff8c442b107bb517e00ffb9ec74dd029c1ffa86ee827143065d1147727068f1304379a5913c559064e2013126850efdb70f4148da84949d1afdd0fefe6e7d762fcdd373351639cf9d8ae3f6477808530c82e88c9077669d56a4a0ba945041383ce0ea932b5cf5833eca12cf8d802d3653f7332cf65ed96beecc704ef554b8b36b00110ad70fec4a601f3df77d8a1a34d5d16d05600dabd3b167e2be464afad292ae1afb3d11c461e169ade7468403b58753e793935f55174e530d25ab87adb26d82c6cae30e38086705155aabcade2c8a3b1248e9ff9dd9e8c9a1761d8b9ad66a9ac78eb4ddbdb957f76683d409e5ca9b55e73794c02597df375afc7d0fbc8fdd10feaaece3f1cc109b67e475c1226f0cc8c2794106e27a9ce05cae1ca4bd965f726d4666a223ccbac5180e6fa1dbcd2cfc34cb1ac492f534c65a23da402edf52d93596a70dac15196634b763682ad03bbe5795c15e5eef4413069397171b46543ac26542c2fef1b861fe8609ff9238b2e8348842d5510628c91282a5e398d0c8733b26e6bca7c5384016433ddf5fee19a020536001e5b923a0ace1644c1ac8781a282227c52d4e60069ccd43e662de0f22e58b400693e0ccea988aaf99501baaaa53d78330b5cb00a5abec16bf5cb01a66cdba4d742763b5b7717c1c83eea60bd3a55badb1e1ca261b99407d8f1eb8a9defa32829d08b371e0befca63b8091ab454ac991ee2fb3cf6cd57063de0624d57ed88d3df9fdd1e804f5828b3aea212a1a1f0551a3a47f5a699e9cb917ab86bedfd815d26a94b60ddd3f211d286b62a31e628a2e04efcfe0e74b0d4267a6535c3eb6e8a89ceb9d0f817ed9ae3ef423839692116f775e015be3901c4eb44fe75efd6ac4fce13d12472082cc7e1661b2bbd17c90591ebc39291051587c5268c323166fe171945cae558a28b64dc1b350401bcb5f896952e228d99594c95d4f8172344f6f9547cea36ed0af283c9ca65da74d6eec5c573a5f285b25a410e27bd83c62c8c3da983b923faab09677add2ed0018c793f2c8161c098a1f3297dc47636cc54c4d87a8e6eba6247f375d722513e5a8502df152dc72319cb6ca92989f23a1b1447380276b6c470b2b0a652f83b962c33b7e0787201fc274ffdfe240da65b7d989bb690b10d8017b75de804d09c8b11622da6dbe81f0e5f4736ea4c649a7e2b8a3ea396716f9f3848847f13cb6b30743bf323df77a4292aca2ecba23292848dbed475af7f99696c1cb93b269deaaf46350a53083e2b0160a650e4694569fc46e48789aec5be038675d4b554b99c7f83181399d6e11ce7f96b09a8d4d3aa5b8fcee82ca934b5bf328ac29a0493d174ada4e7891db0fa5db540c67147efff950e9dc3b17bb45d9336695dfdfe3ef1afe2f07174cf240bc73abe74a4ccc790634fc30043d79063b1a5e9906a0920d2474ac732fe0b632a8f582b840c429ab37f9c233c45a1c1f7ead1ec4ceb09bc10ab68b996372abbe979fec24ee6cfe732f2d6287b1ac3150407922b7fbcf5b76822326f021e8270be3dad8a5a697f002db6dd916fb7f17646d030509f3779b3552be468d5f5c6bebbaf21cb7c5d0b52ddac16da5c9ff2b438722d64660cac08f0d9213d0700ffa933145f72a142291d2e31b4d25b80d64999b3e56a5383015ddf1f2c7bac22ebe2e1f1f694065227f6cb106505eb26bcc763edbab39eb19b880257757a1efd3d6d588d05ef835c88f40c97c0b113176d78b779e03fa5741991e199d15b5c55c087530fefac0a038ffed4f7c561c9bf8d7d72bdf707f48ec393df029c4756357fbbc7ddb0c48e6d4b12e1681026ae2e71f3fd229aa842c0bd72a286971e7ef3d558791191a838bd7dbb4cb14e62108653c282b7a3bf69976ebc980598b65cc644c9f6c73ca0f4d6e9f9efed4089a74ec77087a1d43597dcff19d3b4e35612adb95fac0a915f4e393a736a7de0664bbe89cbbb4949d69b1c91ceac92594a344312545463b31766f302f269c3880390160461f8b8457269e90c7b922d7b135f0d879932e733e8693d45ce880d2d5286fa84b8aa164a1dc6980c4e73546d7d1c0ebe402b26d297840cfc7bdaa113e117a156f80013ddae143f4245d18d05a8b832aec4c97f28970a71793fd2b41aab0ae54f364c35d1f8c4b91edc25b4735a7ecf94498ea8e019a38da4c83e78e4fbe91affcfb2a0ce6e00b59aea5447a0bfe963b120a23d6f2650a11993f9e2febcd910f4d4c74654377e111ff86981a210c176ea60ef0d2b3f3864860c812b194962fdf7658081c002a164730195d27b416ee8b9172fd346de610b5a0f84961b9f965d6232611d91dc176d4aef91e1db43c5fed7a5a06acfb244877dc059eb0951e68\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4b7372f2e5bd38dccf046da0108864ff5117a6b4498774b49fadb0a5f2aed162f85858fea2020f7de5d5a2a804420da20420f99b54eb7360ea907ca370d1633b06e1bfe1e00f02d6f3da35\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"38c5322e1977b949f2b9b9a74758840ebc0870e53aa419d140a72b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"19d6eb5ba7a5beb3bf4300f547467bbb9c54940e2f864bed5b30198edb55f11219\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d46b10570a68e95821c9a230407052f9c9970b335af5e23db1fe89dde17a633929a41486b0\"\n}\n],\n\"handshake_hash\": \"c21361c585ecd80ab839fe6d91931d659da5231673b7ae000d1439075b00160e\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be00c749067d0a8993f7b1ed7fdd29314bbb31e6d14d063c2aff7c3ab17da6cf64\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b1479ff4ec1499a857d4d5d6394789dbcc205e670f890e80bf284e0fa3ce1ff0b956138306c049c08fa0f40f8114f7089da4a7404e00bb44380ea53dfb8b32b6b948661b720d848e9c230821c1bfbc09146ee9f05dd00b5d2b313bae0539246e514969aa054d2676c0129c685bfe61aab1b8f0d1a704ef87bdefe0c5f2d442696e476b1e1fb6a6e8751355617702f6f1017d4edc6e7cb05f911b3b8a5b9851cbb82a74fa527427a6517248d4592159e4c5bc8a9380a3b44baab9504e89676c5f64fde0e3742bcfdd399451fc9de60b85519ba63d6bb52e60b71d6f02ecccff40dbf3627e3be41cd7a31b16010a3b04ffd8f63e1f15f2c16e333f25ee2a4df3d4195f28b67d51f767e88aaa7955a0cb6f020f76bd843e9c2454bbfe39fc9ae16b6eafe475e92b1938fea0fae13cf005dfe4b0759ad6f0c65211c894cb3fbbed94288d1d4ab45fec1e5e4e6d7af2ff8ebdd6a82818e0c80faf082521acd60c2f67e8982e43ab32fee216f2a4228a2da54a892fd4969897a309b31061ab36a7dc495890cc251e9861ae832f78cccb6b49dec2b8b79c4a3e1d73a65bd0a474a7a281de8a01d081abd023ec10e5a01cf5b30f2d18a402fc14e39ad255c1286dc6a8a0d27ee4deac79aa958f69e817c9257bd71cb484ff6092e3ea3326b19f2e29ef688292aa8d076eacb6dba1f2bc082fda8bee28b970a7682b9bd4a50f0c3880ec005b5534477c68d12957d9e505a4b9295461b1bfe4d7da29f41db7b10d64dc1b2c76e4a30fb747cefc226ce9ae51b0f346b8265ebe3eb11a1de72011fc4960c321ee2e5580016427cebb4a6b0f4d6e555ba7d8cddbf3212c22d744f52e37f980b03fe134913aa5ef716f57af96c1a397e38bed0c0c9e232680829507b2e95c878dbacf6e5330cab35264b4f9dcce33623020b1177f568310342c5abe128ca91ed07f4302f3dc55efcae02f99e1769443fbfb42c2233abd73e1fd55bc17a8ae11a6468070c296a2d454d2d5b4ee7855f0bd9383a36da9c22d7dc8afbc80644ecea8e12897d6567f515b7becd06011aaf3f8cd6247b0b093bbd363a50463faf3aa535ce3df721eb1a564e5d275dea0ed50b00c6fe6f57f0fa0c0d19517a6aa52cec07eb234b7a970efd8e09cf669473b712cb175d2bbee15858e2ac8753fe8ce9f69c7dc8f6f9419997b37f85cdb129582aea8b89eac1b875913740d0a34a7813fc94c5ed224947c4b61ece318498c42fb0e87eb8e88ae973663f51d70f4a6c9e5fdcb80b39f9d279b68e6e8b02c6b08e01c35685cc9e834806246b6742351986a98978d4acfb6e7790184c664373c84b2a3e1fd7b423bfc7e1bc62b69fe31e465b2cd9ff631e6185f67ca6108ba72fc4d9642ea1b026742bfc62230f52cfb65d211764969664b2fef59890d76ff3591fd9939a3d055fe9b1f5c25acb2b9b4446c27fdfb13de4d25fc0cb7add3386ba43947a7f8fea695b55fc5009f81f4e9614a1ee6c125ec484cabcea220e02c5de45defc05f8535a4b62ce166af750f209aac065094d0e8619d58bb9e37e32eb8fcb4e178290a4f64947995083a772cbaff65a846b1b31bf5007abc601eba7afd4dda7998483143e156b7e50695f035d37a0d757d115d4f2314230792c1c3aecd35d46789af569c0b5245e85e6c72e65c2cae60e204dcaee86361702131f6fbe0db539fa3d47bd10fa4d69677aba7e0c0a4570152309d263b05da1aa2bc9f46b7f7dc7806c916d6a1cf8f6f5c951e1a122a6c730d8a74fe074ebbec7d1555179381d6731e413f6ae5c3e32bdc1781668eb77679aa29ffa18edb26242578be2e935369feba167e99b4ffa1c1b952742e1df8b09226f4b95d212b34ee33b1769f492815b3eb128f9819117f4a9008b305f93344c0844d8d91a2a56f7568ea0f884ea36f334e7db8a44a59468651645d2f95f47eecec3936633146882971ee060c81247f9fd7a0ba1694905f267ee519602fe7392b6a0983a13bd401a032cdf17100746926815f813abff72e6a0a75952b3dd15799481262e6f806d790514bebc1c5bb8efef2bb18728d6fe6ddab29880558066aaccae31a0840b8d95c705561f7041a4a5b4486c60a6ad6c21835dc5c1a0f9048ce85f18561e693cb3d37bb3abd4e10c51028800825efa55edf03bb9da6bd228b4909ec3f3879ad73820e37e2a7eba8443b1b8da9b2fac1c4a737c3c660e0bdedae3fef6e37033f60e2cbc59616fa1c5268498a960483815cc0d5a704cc11c553837962e00b925ae01c5538931ed4f9acbf5f7cdd5d4a1b9f3a3d43b6bf392e97b71fdd74e9d05da06ebaadffebce6ca9f49eea65e0d46db72791208d23f9d2840351b654fb00152c8ad6ddc8d9e1c88d73418a34eca150162fcfcafe3352c3762ff37370caabb8409506ff09610597717979cee9729b4254ad8697584120f133d0a0331331548019848a32e711f8a4e713efbf5f29bb7fd25a58f0d3074a78b062f09365ca2ae59857206df1af2ddf7224ba2a477d9f14bf562a1dcd8d9c2ed8bbc9378609037588c8839d90d6f66da22a9725ac879283a52bd1bae5c480c4ff21eca6dde5a05b4f42d3590f047dbb10509bd669e7284e4fd6867e56c9adc76adc0578a800ed052a46df8b5b2e4df70a6eecfc927741c805a632e272fc5a84a416d5f1f776707e0a232144749105a6fc736a225fe526fe877d15a243cb4dd509687fa7581869d86b1c7e878fc43094164857a38832add7d5bbfe1da549e02c7b498cd8fda60dfb36b3e1f9b833e00045461ec9ee5f8d40f0459d690e2328d960183701387099860e9b0e82f490c718db66d84452f42a5a2faa77abc1fbb216afdff7e43549ff9943cdefd12399dcb211f7e833b8ae24c02109e3d26391d595c4825a9d52c5bb0f56d942bcae984b39b532551cece02608f2c7f6624b3af50c3a6f3ed3a7b029d80c133a18c12a7465c9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"feb6b16e60fc7cbbdb3fb6bcfca22c2d748291913ed927fe47f579fd94df32b160288e48654b9fdd93db059f86f996528ca5b998ae5f8541309a5bb44e996a4bf9024043820a501787b989\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"21df00873cd43e24dde2a9789793fc8e8120c5ebd489fa3bc67a9b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"084872f8aa724cb8e052336080cce4613260cda1a5606b39d7d34fb6560f129834\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f54774e0dd0f43a78cae86cc30842a3d5c956fcee4318511e247fc78998c8630469d348bbc\"\n}\n],\n\"handshake_hash\": \"39a5bd1fddb6c1c0491ab94e08abc5907119c4af80b3ef37e955910607bee1481467d064ddfbd9c902c646665d087f92eecbe0f2ff359b5ff7c62ceff3c0771a\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ada35918d177a27b3229a72c2f83addd476c473af002d59ffafe7d28dacfbdee8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431b218ff7a8e6b536ef6cb8c2178246f0f5b07572c6516d48c90a84738717310555e78389011494f8c8fc7c2c8ab9c38b78ffd48e624ecec5345c5eb0238d0363060cb18ba2c183f16dd02b49cfef9863180c4d1d16b88dff29a5362d99056486b7b457723b8b20\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"59762ce6a93df4deaa577e4aea8e7f53a739d61bbdc0084cbf3e0bce46ba3e2960ddc9a844cf147e51f277a82c96fa43e7cbfc3f1b2420657b08943cfb9251252529ce1dd53978b1c9c17a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e41181b37b0ec997ed793d67616ff092d588bdc81bd885f1108871\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6f5858e66dc7261ceedd0ef16ff5c7d618c46c2f43c2dfe2bd8aa90af85ca21ae4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e009417ae51d722613db0cbdaad2d20aae09e74664f5a6fa3d2aa5e63adcac248173c84637\"\n}\n],\n\"handshake_hash\": \"e16341c82f9f25e7d92df8f7ce2975927c993fa25941b2040aa748dffd8a647e\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a584cbf38a1b27373479727c6abf3e4dd00fda17a6adcc564548595222a10c483\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aa80b358cc769b67a9cf06ce0b1a67987dcdb8d1cb43a690988d50b03492105da723d4a88a37e185f80fec77ca751055d31184e878b0adc68b32f7f062497c4717dae0f1ede7299b8c937c85a30cda7651e07881f3aa8599370a057bd8746f57074f57470654f9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8f93c15f4ba05e3d6970a08fe6905ac979cb3499d6fcc96b2f67c8ea6682f18efb992412a083db57f0d36ce3b2621d50a1ff6d6cc909b5d6a0b52671d35f20122ae6e945dd0fc3ac081353\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e097dd09ca137d473d415748d15b35f8daae59ad273568666f4a0c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"535bfe99ef322d5e474f6cee2c0e01429143700ac08839b8669a5b5d2f8df97f54\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"366307339e4d5af601c31ab8aada41eb07c394e190a623574e5cb5a4b5fbcfe048b4fcc6cb\"\n}\n],\n\"handshake_hash\": \"577301e3e1bf5d75b522df2c10b175bdf126a7251ce8d03ef5d3283f0f3de0618c154a8500312efb268940cfbd6b1b4a3be0abb7e84a4d88b00c71c8bb566201\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aeb56cd4575ab735eb75adee7fe9bab73a7bc53d0fccf0186bac8e10cebca917c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436d393c43bb05790cc30df5fa12928d3a7ae737dbad7661785eb32879af1e75eec4dab293cac9d0aea252025f81d05404a5d541f81e9a776f4c606a2433e9fff8ea3045e38e0a5274856ec3343be4b1c8d01fb429a39dcf1a512611f56da864839087e65eceb2ad\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0a4faa04cb491b9c821900dbee6d63d3ef6f0964464e36d5c1d22c3b060fac58a311e90c6712ac8ac8bc2095bcd6309b62da507902ed52572db386dd91f5c47f7b2ca6f2cf49b1f706d856\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"01c01ba80661754689c268373cd7e4193d1111a77fdbb70384f397\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"80be2d97f762fb424884274f2f0c3eb12bc374c932891588c5be0e31109ece2990\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"005a7dbaeaa614e4c9ec0aa12202fd11be442ae0ad190ba6da717025abca2c189c78ebde5f\"\n}\n],\n\"handshake_hash\": \"c99df7a44c2401eaecd5ff7e3e98c84414d29a972b99ea84ac2eeeaed4b606d8\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a351a4b876dfd20ad8431dba69405e49bc8b234b698484a5af76e69437fdef83c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fe99b1eb77056190d533120713b3e51d5504e35007bb97b3976489b07ac11085a78421bdf5d1a86f30de6c2c51f373a2726f7638e26873b111f1fdffae82e1b6c7e9c04e63dae03a3636f4ed19874d12f0cc931ab66512b49b6a93db3ab6738aac70d7f57a54ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"89a2504ec968b37051b6d0d0c4ea6546a40cc5f7aeea7b326f070fe2ad89985db065a75047148bfe8bc5215aa7bd3ef75e2bc3d1e88fbe3c59c07f450178ec6b0d7e2f141ff5ee393362af\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ca96902f14d0cc4462201d8b9c7a155cff8bd4b6974e21b65e6ebc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f2fe598d8e5f83aaea1010c919e54a0cd97195b2b1c1e588323b76bcbd8933f36e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"304c4e4fd61b1bb372d99b9aee0c69845a0c06619cef8021a10d688100aa02d84397442151\"\n}\n],\n\"handshake_hash\": \"6935499cb87811fdca82b582b617733d3161688aa59a7eb4dfa0799815e26c45a0c4bbb5d148e55257bd35792008ca43a002d16912c631c232f92edc94b8e27a\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be1b5c75d7374185e85d7103b213d2bf13da3bcf581ac1a0e5fd1b77460c2eae9a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884330683cf7edf0b748e76a1424c4d6f5370f288379d2d6612c5b26d048a54cc50e2e8c0b70750336841d7b06adad550f9d0e2ea8ee7c9be3dac57b971ce59523b4bccf462fdb33d71c677659f532e48e6d83df014300c61f9dbefc668df8fd95bdab1fdf4cd12e8b232e4bd6021d28dd8822c6c759fa2222c71c8afef06795c2fc011bca49b42345ff14bd1e08e828cc84a830cc78d05e84962f51ccd09bf2f3b19c3505cf8b40ebd22add0edf9bc56f3fcb8da07d30b10f14f0ad37ab96195ac900b7d4a247119b9aafa84766049c4d2709d22046651070863490f7121ed41cc4c83bf20ba0009cdb1f2777972835e155822dc950e28828e72bff1ff85d888b3a31047778992e81176f4f3b95e0d8c13dc67504053048eeff78fcd2bbbb91a252e088b80527ee30bceea18e494c8761921cc869ff1f35c0b5dbd0b2e8dfd0678ec073d89344dae844b92b2c97c3004099ba582fd52b52dcfd00ca6391e3b5e700810ad2767a8933122bc37e19eacc596ae7e07e6351b83b544e4546e89754cf6c8b591bf24e7088c2a9f826d19ba1efe23e77f8b6e5f6f36d494ca400670aa79f0331e833228f2cd4fb58547818d42a52a6f6b63e5b063b6bc18ab65453e624f850325fbdb13d60c943acbb60efdb7651c924afaa33dab24cf74bec6877a99b4a9d855bebcc51cf30ac46819c95d9ef9cd36a7beae2c1caeb0619b1e8eaaa07700523cb2860d7f8c654add3449b27870263e1231ce716e9a54bbb23cbec01b48571e22bb77e2202d1c99c27328ea851a1dd014b3e4e329691d741580cc442e8e03b7b319577ef2583a806323a86fc08f9f02f48ffcf94e2d40d5295794db66587f5427d70b25266d659c1390560e89e3bc9da72bef4e23d9071f35c19bd9e04d9e64ead95cedfd3c0e28784c7356775eeb705ea0801ca67a6f4ea0e9a341434b1bc2778fe8bed82226e403c77e62c1e489aafeb9dde2abcbc969ad2cb6a18bd21d6988473bb0d387dea3257ca66f14c9d94219b858e97def967f8e2e6cddde6cd23b1d65de7d68890c26959ade6bf3056fd0cd28541a57c10edc3329422b6925f2315053651483011493788ba177d9818a4ad1e72ba2a08b0f1152b98b83dfa311411ba202de6a02219a0a7dd26186c078b6ab7c61c60b98a487a6487a260300969befa699743c0a180ddeb9fa83f49b5f2a0135fcaf9cee6155b5a9dbd2c3dbd932152f20f847604657e1f1fc96b2b5aff8708c39cc24be26ab9606732bad18fe54ede30d72f6b8cea46738fcc8458134e0006724a929de93b7072adf8eaab9b733caf17110172622f9ca70c791aa35eacae63224fe4cf35e34fb6e1de11d794c0ac0806a7c6182406890f8a42c0c97e3c131a1e8e46c601dc526a796ab03463edadf1595bf444e66b053fec5830d6dd74ef3f8b95e46168c65e066035861e430ccb52728c30c1ab31fcf4be9023f6255dabbc16ca63892333d3088bcfa2a6a90b1644d6229bbd358d38cf2177f3dd4dc63185e64e6d28d885e627c1d9d238068a8d61e266c6a6e3d728889212c0baba87470d837fc9aacbe3a17ade34d090c256f8996999a7ebebd613a0f6980b77ec1cec9eb6be6cec30c50dc2934f28a508949939e6307b41a0a2276ec31072a1f14cd01c709716bd50b040c73415f2b163ebf2007ba1d6c42b8774c8b457e3fbf048b8690d68823f585083a9bd0ab2318c47a8ea101132aaa742a6de641dc41236f3380184da619695efa60e3e077ec2157534814b0ac65e1ad3ef99d1d07ff63e980c2ce4e1af53bd46a67505e8cc8f170a0ce175f6ce7ef4fa09dc16c4ad7ef75815121c397df5e07ec72caa79e40d2d231d5d20781530f639f1a7e5b00e76b45e03341252be140ffecfb52f47b07a4cc7ccd3715cad8fb875be17660458b497b582c0536514eec90953aafb86c790c0d12f4da8044dbe44912ede74f602e6adca802912f5f00bf4defa4eb0c3f26f08d47ad250196d6d6023a48a0999f3a43b7f0df338293c4b207c3919d2f2cc4ea480856ffd630e1eb083483424e627b616ed21bede145bfbde84753c938d334c93a7d76136c6098e4fd13c72403f357e04cbdf14fc1fa7494c6fedad01fdd1c4dbd511fc3fff7f3eed4944cf9a325679f47df3e9adcadb776cb8c462b023c4af3f614944529984b7821097b446231cc5394ee2b15f38efbe9f77c2ebfa1c88c959166d5bf313731470e624c7e0dc1fff5d6923f9170120f43172a24a91362670c190b731f1f99f98466fd1bd9a1a966c7d2893bc96b95890611e4c8966e1d664c1f1ad8b45e5e8144d0976929f98864288f215962d4aca39e70074e1aede60d9cf9c37eb3e7bdf33b965957beebc766ac08ee27c0f0ef040da3a2b560ea5f8d662fdeb61f753be5c3f2da8d864b9b9b2c8c66c3b6bb2ce7bba687837530422716084c719aec965e88f97742beac92c2896b8584ab4475462b66ec3aafc2c64f4bcb33109ca1be65b67d7865eddc0b9c428e3db624ac05453427ac9638ff0b6185145b350cb48299d38fb23fc2e31a55c70325a7c2024c42a79a4c871bfccf8fd08a72a9cbfc1b4f700c660a56eaca45370c26a77f194d00cde4ad39397652dfdd0ae28e03ed878e981755c9c0dc7991de4e88d3383dd9623a99478fab57e6b5df56ffa139c2d5627e15d5895be7bbfdd36260d9130f4acca5b36f5593820bdb27102fa11adebab193b0567faedf3bfee44c036f7393583bf3fe6851cacbc03b92f4061017a8b1c7e64a242b59346d0d461121a0c82a659c71dd81da6dc5ba3895e668a0610ae16b9d6d741f4945fbd9162d74e5ccdb25c2cc99887dd96f983b2f751b755fce72428711b5cef5a702419f2ac82110f8bbcecd17251ac515b2957e094b1bfeb25c835e44be9feb9be0910b79e449b606f7076f031625341d7231850bd3ca9e2a8b7094c6cb9c0541e238c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dcf3009b8bd4c5848287c6e316bc23f261ef5fb6e82b4facc9f167cf802e2608c80fb4c399e4146fcb0c64f0e000aac476651b7068cb1977375a76e2e54c3ec5c46f52eb5ac547c1a376e5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"709eddcc9a000c281773ae3b756ae808595709303d09f9a2a7c7b8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d4c8038608394b7b8ca67f8259fbf611aa763d6563d79eb5d942a038a15441fee7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"38f2841da6025f3ed5906309d4d2d745bdd5c1cc13a73b790bd2a27c0458778d5d345eefa7\"\n}\n],\n\"handshake_hash\": \"ac692ef84e7d4489ac9663cacc705e721d54f1c455439feb6eab64b36ae1921f\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331beac5ebd5c0161b4753ce787368daff9da144bdf25ccdf3afb8bbb9984e104c789\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a6702f2f1d3dda9b79b2399da3be999006de7fdb9bd5ecccce644b734d3b86cb9e79312c98a25a0baa8b48eec742d54a467503dd0024dd8ab8a1e8c18f6ae705f6911c768b362b07045ab8f05c1d48a19e66477c2a83fec4845998d44f0ce65238faa7807745d02c3aebde7be56590970c95670c87c386ba6146a1f06b83c8660a614d2934e5c03efde81e267a8c05254bf32b410d04894f49c882b561f13423481fbacb264b28805f09e4bdff3ba786ff3dbc1f0fdf9e54eee621d1cb5431c21cf83450dfe340361c025b9e6c96589e2a6eb10642580361ae6eaa6384450be1df287ceef785d45c89820f97d5c6f6a7abde9e50d05dee9ac46d62a93eae7be40d33bcb98ad9e910181fcfc97aed49dbeb5e75434927b1e7ce688a7b3840517edc8826b0bc5740daa97f4965272f5049be900778d5b908c8bc2b401e23cf6d328a995f738e621bcacaa5446495f7ad705e57b9675d0825a701ef0611f037ff3b75057ad3dfd91b3a5eeb4e0f15c9947f305c7d5c429b05edb43827f6087b5a43d065251cbefba199ae9d4e4a3c8d77853a53a5f8862834b0bd944e4bd555576b6b10af27eff12ba4d3f8c181f6f85c9688a1bb61727e7be0a4f29c775ca4398db10629823708d9c585ae9d4d4a05fe19419bc34d1428e5bb35e2a3b873073e8d76e69744166b86fa94ae5645965c34659bb5d47f59d4c90bac4915c4290fb79bfc8200f78d39cdd53e3e31a6071293157415a7dde7d19fadc21a83aadf78e5dd6396bb290f7332e425d8f8c5432216bd4754a15ba63c8264050b2eb46baedfb3ea55f573ac06d624c761ee0f59eb64a6a066d74948f14f5d2293b86994497de8bbe409f2c769f8ad2d101b6580b132953871c9867508d8c480c40454de6cda8de91a0802da03162c1f11b73346b7482d43d98e64ba39d1a5911899a1ef77a799659b1d2e7dd3252052873f64559edef7a1f2f0e99480495c099f5a9679453616bdce7ec96ddda7579e3f1ed1a53d373b082db6e73d4da12e814a8ff6479df3b3546b30e07a7936d6737c1514c5ebd194b68afcce21d8f953b3bcf69db9cedef9c58d6de37be2b0e7396d1a7f4fa57b842a83f0ae265d94c7aafeb47f34b1c673ed15b238a33f3e944dde42a51cc58b1e7044105f8e13f3252d73e21638c81e64d371f3b5966f5f0ef3b16414f246e32c0a5b2a1d48dc88a8d1589c36aeb1595d5a59a0ae5cecac7a4a437b8c2510d82d0e16d394da249c1645df850def05fc8b24d35512a0bdd9c1125b307775390849ad8f32c7cd35e36904706db092be79ab3258e42a2dd46a38190b50d8366fb7138ec74cf512f7ebd54ab8b813339651505d374faac3ac5e4fa245e481f39dfc98ac3abcb1c13a4e632ba7b31b5119bb3991085700452b5f309789de9686fe1e4f117bce609018f71cdb4c36975c03b34ab01ce8e7c0c233ac8198ebb17c5d7f426091eff87afd90ff294436b0f4eccd19a55fcb585d291b5ce3dc8ffa1c0d9653b9f9a1f300c6d7196132ad79acb0dcf08894b358ec5ad6c9ae8a5087b3bb9b73ffda91ea467d0090fdbc162d12e373bf4c4beb7007ede4ba919c0f05b6a8339c399685fa73f4e4191d7693f64a5c1a698c03db00fce0aa49969493c7e64593cd94480c771c0e503101aab5d9b213fad0c8b61cb20b6b38444e68b28d96b2b52d7be0fe922eb0f3914c24c6a946d8b8f8d28f8bef1edace8846afdf8ab21a07a941d84784487ee54300e56a5d28ca848b71fe47807b2c968b2637165fbaa52f871ae176256f3cf3561836df4a1cd9ae379b8f7df4f7bfa2c6b326aae5c87fe3d7f261fadb210a169436f437891b6cb29205ef3e7093488910f2f812fe3b0996834fabd54bde0344e30265b30515575f2244ee4b39c2ebd3e9d5acf14343270324e02d66f7cd5516100eb68f93018a5c7d7f1c37fb443a61170c46c0e97c647c41becc6e4f62816d94cd03fc88137fe7ebbac5117c948a8ee2a9ac7bf52a45a4df315f4dbfcce560efa9d44fabd07cfb4680c48a30fad97f89e642560b78902236aa6dd519cb673e61b0f17febbc077f93aee46a84a7feeac503dc4f917c8d52bd5649b6ef1a4b95cc8d9bee42b218e9a5254127475df689aaceea850f1b743afb0f671bea6f56ce4a29a341fded77768c63c34cfd24ad9984053a24400b0f56035e59f3904cc4fd9e011f30cfbbde78cadc82b5e51aad3ad00bed0961cf78d67f0c41d703c16e515ada6c9b64c7a27f593746b5942531c2eb78cdbcd3b8b1b9de87bf6c56d75f3708ba1ade68d1fec2f6f3fbe3922d68a7a3efc48338ea6d43c43c332a4219d55e4c30cc8551ebd56afbb7807aec90fd3c49d1a42056abea3d7eb5199ec7b7b4ded5f8935d9e6f04171788f63ab37d841f0ca07599a0d706f6fa9709ad05ef37083f2d0b7ccb268099f6038756b252241997955949895805749b50be3ac9ab16f8ebf596171a441317d13ad58ba914b5889c30f1c493c0eec51a0173ea12382c91e3058f5e78f31eeef405fead25917dd4d91c15d1d6c528096f042acc500e2e7dce4ffbab6da02bf08c9b21ecc0430819df7bfa6b6a6b795265d89845187bde6b6e7bd0101269e218bb425a0a77367c55d804ac348f17bcab9e8a3216a04024a689a11d74b6b4173b4c0d1112c0f6ddb47632e5cc7e4434e502c132ac135b7abd162a2528a6015eaa76bce60ddd3ec6c10d11328307d972b54a922f5b3a8e4567215f64ca5227719616cdd55abfdde77b32123fa7f75de25680a0bff7fb0f58542a9561d6e87d834cb9185914425c595037679f547b4a1cfb8ca41abb64775c339e8229b7a7b0ba61024e9617be0521fcb2eb84b1f30f098760644178faf984526a78c32a2d3a16b4cbb9513ce63d0e941453d0bcfc1e86b32b586cf806d0f7db47b871026670c35cc3b187122d48613e98d2f93dae382271\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2249001124de42ad4588fed8ad49f9ffa600104dac060bd759a75ea1dcd188791b751c857be99db8b46ee8cf4483dddcc47566f6bfa9c7cecc2adcd40774a0ccadc5e8fef30edc47e6038f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ccb3e66daf4273b4ad52667cf2b98a33e869be6d2ab01cdf5bfceb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f691e2cb3c8c1420fe847c6c24cba7b9aa98a6ebc0d22db3c33d51090426bef3f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ead991289922e366fd1993b8c2e93d76a90760c0a0cf85afb5679198ae64f463d9d9b71f3e\"\n}\n],\n\"handshake_hash\": \"15b7979ef752abbb3006d27929d86778aa699e5d2c8d3f17f21d33e1abfc7c36e350c3ac4b9f0caf53636bef328bf2a7368754716d0e535fddc7a6381c122f61\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be0c8303649c37cb8d7653d5e8b55fb0bf811ed9bcf87fd6128bda3d9f83755320\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a18c70e839f15bc5024c360fe887d3d582fd051cc60fc15113342282fcbe08f9f4b21ffc989d3ff811a11c36353f90a1214faf5a1082f49ce19243366f9fe26ad5369bcfc2327abcb84e447d324dfafbbc7a6806febd147ca3de1fac319644b7a3e360b04cdc8ca79e08f5cffa66fda0aaf9c2c19380d1861890c42ba2ac57ccbe59088615c3aadbc4594d1535e51b3d6a755ed697d8892f220a17269509e6f7119dc1d4ce0f1b2ac988d09dfc7b43d960ffb7e0ab273a5277eef765e9a3d5acb2e9cd94e7155f82bd0e748bd1fb161504ad122fd8e28f724f4cbca3c45130e764f7c6a8c8113a814230f47351ab46fcd0749c3f562812edb4562b81594c210395d46dee9f325b69bc62ea6f800effec127d471a536361c4869989b0f11b1fce8eaad1449f47ce73109572e229b2aa6e198c6740a94876a82c6404b3eb2a990659eeffb487dcd9b51df3cc0b2853ab701e618c2b4f1276236d7495183398af981a80ef35b9a1f8e966d39eff4ac7b193df1061d1bf2bff9ad3ab6b38ba40c4d85e183eb9f861de4e26954cdccde35fe3eb6f6937426f4a2cd4b5e3b9a358bbfce9c1819ce9aa6c31d347797898aa9444e83a5a1a8eb2c2fde8eb9e9b6d83e608993b59070c376d2358a4208596bb164b6e0a6f63f2736744e5323a5343062ebd086a33efe72f0a0c51bbf5545cbfe310d4f85d2ea91f304cb04bc0bfbb12d746c7275e100260d4941b6726c4ce90c84ef2c59103f220b9d981875360fc25a4a8162375904303bec01e465265e7d4e6d5ec86d747c5fbb41a2de460343731a136da6dd9c3021e301e2d09a5a7f18f7598e16eae5d4a9faf5a38c8ffae6465a7ab368c395f2bc84ea3e9b85b71c9ae92358b148b1f70e9a7dcf6c1bd739f1dca94be0ed88046315d37a31c3880177e60e31d1e620da82333c101de64474e86ca356856f8df8ddcfb51c8f99fcaee1311889b62c1c2076afa94714311fb0891d409461307249493392b01b538d8333a876eb0b74f251850cb162f445b423521c2998373c76e075d78d51a30a0fb5ad187fc1527cc8ea692ccab17912c8cbfd35fccd77272a8bb1bb4ec3b2a13b7a336bc17d54e6513d213b07c0f83550c59723a974f6b546d83248853826ff000f1d4f31e54e3d141a4af07b44bc8a82dd4dbff74e08f94c64f476452814d23069cc0682f7436e6e61225c11cbb76630c7628144d1d5f2f280667f1c3022be20014078685808256b314395b32792c123ccd7b0b7f72e6956724a9a3f0bf933c79671fa1231bc8df4630ac2585546fb3bf1ad332c9874ea66ed7eadc442b9e23adf4c099bf7c3b49be6689e0e6e593fcf81d5e906b0f9cc5600c43f0824e4c03be275d40cfe8e32acefa54f7bf61f51bba2a6e1c1e8eba9255b4c00067d37b496fc44e859dcf2a95be447dad8b3b40bedac0d26f19a31cd3caa3bb0e9f800c3a5c6fe56710b21a1a730d983f04df65b82578d91bd8357053b83e4478382707c52ea84f46145e065baeedfde82a642c251e59db5f73c555adbd6acaae9d6faad6f190e46fa5059b1aca4ce5997818d77992d7f919dc16d64e3136c16a730f95c27815642d85f7c5264ad1308f14357471018315a1cdbe6cffdbf6f9ee33c6835ebcababe6e4de67033a0df4d4197ddc1ba1de7eab7dac5c449053cdd6ba312d1b51236762d80ae65e8274de60f236e843dec791d53bb17b8d470172041d09811bb8ddf86376f15652bd158e33140f4708c350865355256a70c66fe0d7f18326a3b077c38299cc18c5667a392f4802c742758c6833e79877b852fae1516629b6b139fff5ac487e08760777b86e34365bc1cb5a2bd89c66f370c570d3414adcf169d350efcccc06b0fef7a4752f7e88fa059bf20bdc7eab2da10d1328cdd2e124c954cfadb4a13c4dd07632edf6bf366c974021244284c383331827d4c126eeb08d535a7878cab8bfd8692964e89b47c7589b9e06dbf6cc87f50fc7c303824b82baa9292e9d41edfb1b4988370c3d303cbce4cfe3b149317f0d397dbc5a1c27f7981d01d9411728d7300bd342e52cacd912bbb1b710072eb9a366559805af1cfe848ee3b2f13ac7cd032007c5b4196d1b2df68e5afcfb1e8dfbaa5ad0d3b9e3835e4d1bb7ecd134a3aeec687b649af1c158d7d89239ca761d38e4ea505d75c438dd66184f4cdb20c455786a7ba22fc5e28186b8d2509e51f79d02e661bb56014813afde8a0b9e5ac37ab825c93c465b1f01bfbe7d09df60fa8e541a4c4097da961289009a291835c3e044259554dbf2edb64c761d92c2d55d5cd7f0eb52a8e6b2f76dea725b655a68f8f784d981e885d632a56d7a75e90fa4dc6dafd13b29154a66a7a235b280cf7a1b4ed20a759cd6bfb3d19ca0bf54e862abf1fd23f3d3277e2d788a9a6f4ed9e27015ec51d4cb0df1eb9c0b612c3a718cfcf46b297b58028dadbb80c3303c88076aaac7b315b54d6580db7cca42404157d0036f6e35ba5ed2af113730c18c7196a19000a1c9798e6d39f44c3dae8e968b41cf82f5e0f46e8ad6376a0fc394c5d84aea705956abe65d43e15b59b7a8c3d35853a1ca95c3ca13658450f27855218ab2faf242a55cf1db318f7bc733de01b95f87af3953f3494dfbda6576653ce36976f15412fe30028082597015086fb335378c9b5d35baea72f01c26b98087c6cb8d85b73a5b590ef75d75de4cbff6ca0c98d7ff572836df359317f89a81da1509acb02b917e3514243e8a26848d18b8dd16105a25a97bd091226475a584c819a0183036a1e34c659325e6c48a273ad92a7959ef78a3b5d2f5f25abc355bc375cf8cf70453cd22a55e9ba5375a0d4c70605ac0a190161c6d55028e1d57e4632afb0758ca56a1be195ccf9db0efad4b84aff923ca6152582d911a1e8b4a4c5d8450f9e0769f89cb9ed8c0eb9f0526a04eb01068c7fff9f58fa97902d6dbae\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"709d3f4f13c171786f76a013522ac364709d7a8dfe496bc73dd21664c4ffd7c809d9e8523506db0322c689ec0de348ed84b89e6409e12081f1640ab1c4e4ac61aa4c33999281d7293181a3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cdb8d8299596095f1fbe32772a11af270baf3d51a7221e973b36a6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fd56f7cf2e674ed234d5158bb79f87992512d0b154274f4c6e338a15a78009156c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c679f791988a3ce2762b9b5ff0277ac2d819dd8eac151da38a6473b5918c868535b11a4979\"\n}\n],\n\"handshake_hash\": \"db5cf18a148f0dc5155e6403e9cb0e0abf02f5aebc8d1ae4fdddb48da0b436ed\"\n},\n{\n\"name\": \"Noise_XKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be68731a34435b6538f465f67adbc1fd40c034961f3a758aed87646f590bd60fe6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b3fd283e5ca090aa434fb6cbf6dd89ba7d29f824d2f3e1374b5a9148ed028ae714dd0e6106900a29202e0b273c34d3ccb154302366b5cf3e80fce72188e50e3afad8b425ba86b8e772e981f1de4e2a5615e29b02bf711e609d02d0da7c0b4256f27677e2418cbe2dddc2cd1956065c22a4eff76a200a473d13a16a21d6e2cc40d783d6210ee2cd6131821ef2be64df21fadd5b7f2d24acd65c3da190bd4a00e239a45f598edcb85694af9f0e38fbc9d8b3cb3310b0d37397aa09373b4b05a4e6b89c08079e138d9cb3d3ea426a7a26658ed2fd75de93c3ee5736d9e354fe83a85edcca73bef3910348674caafa3840bf8ff9ad4f065a3290b68f835e5795aef237505c4db3e825b460a40fa91b6ac80ac0cf279fb48ed1d9939ad895ffa0100ea85db0f25f9d7085f40bb2f4c47fdc59ea694903bd14115908f9fe5235736afabfb4c3ebee2e208f752e56299e16fd8d9d441abbd37a56a0021f7c81e618b069e69dec2d2dacde65702b5a8143a0fba0a7d3819867daadb93cf5908543a14faec6e405e463ca22710921ae804634732e4b0a3b697a71a9fdd19b2c88418dd3b136813d4afa1b5cbc7ae803442fc9890cc84cfd6e1214ce0307fc6409f5993ebad3193a2ed5560b86e0504e22f74a1f035a4132b0abc3f8d2c8d8df2f68c97f06e6238cc0dcb1a7a631119c7e35ff1599f2ed4da47dbac42b7aded06d3c421e6b78bbc86a8e7a68ed032974e8de12e30733b5eefd7a11eb7119fcd727caa3f29cd22ee90b6e19c4f2fa731201758ae92c0ad53dad16ad3ca4b2ac1282ca646990a12bf523b04ea8491ee546b592ed8ed643dd9f0a41f2a26830bf28c498107ab87cdab473bf0a451440c905bfd6b08493bcabe2df43bbb0ac218f7cc1da3d02f427d2567291f9726ba90fb18e38e8bb133a8275e8d8ef79d9f70348620ddf897df02901b8e9261345d7152ec81c1492773ac1bdfb0349307c049a1fc95565b4c8949969a5333b242cc1baad104120edc0b789975600738a8573e71faee2fa3f95321608e4a6d4ac5aeb70dbc197fc10b171fd52f147804c49c9f78e6646a8f9e27c78c36256738762517b4201fe97cd88cd90705a23f187b4ebdad81246a3c9d60307f6e7c3b90b28c84da33a7ca4b73998108bd8d30fb272099b9e230878ec1335990331370e52cc6d67667d5e1d8e0c7528fad6251c173c3a0ed39d826c327bf96a55b84eb24fa4f52f680c6c7f153163559d205fc6a1696f598bcd5a2f78dd70945e64cb5467091b980bf87ce0861f30f27a6103d6a1e555848b189b16d8e71f8c10cf376ee52e47edce9988a9bed1bc1384f76b268f564a64d090a33afb64fb5306d1e28139acecf1b4b7e1762cb1b16b18741111cfe11e435932745bf376ac650070d3efb70a36bdae4ba3c330b5c4b12fe7a01737e6d92e81f1dfd7b7b75bf3d37bd9547b2a80e6df6a7ad5058904f3f3225bea9ca37a00a0d4e4e650c3049d854f2ec9aa9d845c1c8331539fa7e1e4bb7e9cf7f41f1ec6d76ebef797a5c763fd44c9df11477597ba6c553d5311fe7bde8e479e33f28badd85d589ac0337892d772527ee75e90c0e62662b5a4b02be1bf1c139138ef623efa5ede626afb5a2734334265011bf9e60aa29c3cce54dbb157c01402fb197ca6dd0f0db805aedc1620afaa2ba70d23455f8035c89391c56bbfd5bd4896fdb16d3f250d64cb104d3b71d042065f27f26606049be945151f93a74c4f3f0c56c2a1b9f63c3f0f5c86c7579926f24059e7200a5d496bb255a87512ee2b72e4c9088dc0a1ed3e9411eec3e15cee4f82c81ce344aa2be95ddb2551734e502d7732032372a2255024487fb57fdb60f0e68e4d43930e9e202c74e1b0b2f26cabfb562e9084a0e4f2644fc2e051f2251e11cff5dd8bdd1fad789137517a6851493c882c502948bc0de11a50fa4b906d936600b77f1af0a156d7307c73f9e383303651b1a7264979d9cc23e1c836f1d1a2dba744a05c2778fb853c1dfd0ef7c45bdc3c3ddda951dfd7798c8384755c66742430238ec920b4e5915bb5bea70371d098ea9471ae8bdb9d2e3f012e3f907032b123ee0bc081d42c64cc5297af008028d9cf3d4fa5d857d92f287fe82d30c3968540541a91601a6add63487265b7b195f684071a5c4fa483af9b3b4a96791a87b844ee21dcb264b068a0de5ab8e2da22b0d61a94cbd143c21f6bec0ccde36a7df03a825a6657d81df104f03379aeace3eeb6a244a6068135f4b229ca3a733db46f1fbac3af6bbb1ba10e5a87ab7aa048aa292de8ee51cf89d09e4939a4975ce0b1de6f85bfa0596fd3f0c58a3d605fec033f9dfc273d560c908b280b67aeaf9cef40f929eb1d1a6461c60757f11e2ca9b363aeccc997766cf4d21c2c8564009b2b6a2313a18d1583bc48bb0832e26ca3a0ca2db47426c620295d77244635cfec630061c83e674b91a47526d75c8bffe91e637cec687e1b18d9ff57579f173003bd22466ec66db673b72cee4214f9e6913f9faa054c45b550929b7c470e7ee624ec53b607a326825993f74de1bbff65ded0e5a55aab0bda5aa8592ed67a371b44c212cb79afc3bfef6b9a2aee9191e7ff8c659efe8dc19ed0edf65e859d2d6f1ffcbad707c9c99ea6a0e98ae88b1305fba51e99c07a322fc57de2672117395f920db672362ca035ad4e951fc2055d5c4df0191adc8da154dd0a78130d06fc5a701479653dad6ab0df646f769e7308720516ef7a4160149673f83187f0b816075211b17efdf69167a053d285b683e21a6563fb1380553c368ebaa8a457a25e3ebf686e63c9b89e98a51494ae736dc8478ee4ab2aade3376d9b4d423b793793fc845426974f012ef4216dfbccef75090da911c4f08d3f14f150b3b6c6d98b3b0a684a28a1c87e8f81be80552d646469b9efcb189572a76d4ad52f9c655b3218ef9582c5d0308fd8bbc9e1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2458f321a307949da3d469eb33631171beac14dd17570295f522d353676727b8823cecc3ff11b9efc91e36f6cfc7e94e4ec10be2f5f284260febe226c41b58b2a6900388981ca872f58572\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1e515c695b0acbdd938445a548da691afc3693e29b41c611505fe4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b9331cef17a65272fe5671a91682b71bd636de3cc0b2cce505c1b82e36a9455e73\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0f7f82740a6413ea6a5ae5c84c8319d208694e34b3b787308043204b40e94838481f0379bc\"\n}\n],\n\"handshake_hash\": \"f08feb464abccc02847671f9407cd578f9accb49fcd0b316eee007f422a59c6e1f266ee9fa4ad10bbfde04bd1b6c8c7491eb6fda9f77f26b8b2450026329c850\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944441aac4476feec0fa146e50e74e8ec9c2a185f72d7da74d307be3d5fd188022830bd4fd57b80e92b3a840667f2c022118a13bb65ea49d4ffae223d50e4cf490bf503199628259b4f6ce7b683631f6143634af64d95505e8ba1741cad1cc818a538c87f940cf67479\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b96fc75f8037f054aa4150203ceec1e6df830bab0b285707b8759e7e2ce228974b95f93eff6e0d7923a9b6bdce7f9f3579a4d225d90cd29f9e7d7f496144c4aab9149ca7b6e61e03562a2b5a653692b52e4ebf72a016740a0c5681a55369e1dedf060005d2862a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4c0258cc0d16f15f5ba068a43a2ab127bf5e295f5adbd3f1e51c99d3f2841d516cba17b69d7c0cff7d83d39a3c8058c33bb5bb802d0ff1acfca6767014d43e84e36382353f43c47f2844f3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"66420a3d50767925ec617a8cd5b6b541e65a93713769cee9ac1e25\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a4cc9030d6bfeade7999b8d27838bad0eb68b34fe25ccd0c453d788682aa91802f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"26457c7909a26f0b62a0293af6b8c4071859ce559bd0eadd21de85dc0d6e1b7e2b1338cc03\"\n}\n],\n\"handshake_hash\": \"9be2c0edc1685adc6bcda02a43a2f4389efda553bc2e017d6832b103bbf17791\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445a0d12edd4bb04cc1629379546246b61b11a256fe9a211784da21b80b8a0456bee65da26affcc72b6b36d31d785b5a6674af3a83a3961c97ddadaa40345fe03768f3cd4e7be7a8f9d0ca8538ecca334e81e5d6db092cee26e09849aad71ffcc22f0d63b44a62722f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433419fcb8edb4839941bd43303333f6b57d7c9d2cf9e327563dabd527a84975c94ca5ded71dd0ddb88fdb975fdebf93a1cc101d2f6383d8bff6dcb7f282972849cba7eb3f16d1fdf879687007b03079ece102720f8b27b9d849d0aaa77099916283587a97688116\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"164a62e1fd051d9c00142e50ca6939c967a2c7d98f2f88dbc6e04bdbdc484355ebb7c40a7291fa66870f3c7d537da34931a69fd7e28904bcff184d82412aac5301c676263f038337f98439\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"05326cfc1804c9d604913342bb32ec3b4a5bfbbf7661353c9dc167\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"db753f104175c293f937e657022e3840800ce76de37523de9fd457c97b9ad2a1f2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a2b6e50e49df54ddf94f1ced79f7d2454fe21f4286b87d55f61c0a5214d77fe85c1ecc0f09\"\n}\n],\n\"handshake_hash\": \"0e5f9e482ee166007f5b73fdce9e9f19672941fba56acda63bae2ef5b21f574ddab1a02bbc70f1e583231ae4aa1bb8c4e2b0a3929bc4e03c3d6cac76d8c5d12b\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794470660b174b5d720d27c2528aee0eab53063052c6774d7964fb3dd1f0b65296b5eb5519e8ad3554c57dfdf2749b05f4c8180773a26477140af6e3f86f3bb08839c711787c7ffc489de5b25fb3b66f8e509ec8defb356cb47807dc08abfe0b0e12ed2146a1972ee98d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843807266c64b4f4e8173d71833fd0a12747b76ec2ec154d92f6471c4b7ad32beb30d106eb04e6fb1d8abc79d6ba312b64fb21120a282f3f8b5b6f863291a6e8b4118034453775252c8e71611e6bebe0f081d413b7ba1be3245679a48f2b372b8deaaf13daa2ea0af\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8a52e17fad8cacd6f7555e7e52425b3239b8546844de01645d994c5e6b6047ecfcdb2b43b30d7f65c6806b710ac3b0b60ce194c8217314c3be99f6348d8f68e8a7276b7903afe3c6c9f096\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7d93b0488bc2c82deb2fd11388277cd7a6d028db2487b2ef9c1e68\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"70627901a58d688ac769ab989db221ed306be204bb851eba31d6110d2db890e1f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"48307f91eb4e5b52561d51f1550ade0c83d739a67021028b1ff320d893c8582b7807176a82\"\n}\n],\n\"handshake_hash\": \"f797fbda8d728dd6e709d1cfe8920c90f22fe92445c543f747aa30ddce03a5c3\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794499290854cb2a3a5ff7d7db99665fbd64823ddb6f0631ec74ac836c628e010e989fffc4ead1834c18fac645e017cf822430a480a18619a7b76e71abda7afbad37cc261a0e10efaddad6a5558aea80955dc65e0c9ea9bb72bd2ab6e167906479fd0290b59c7bbd1264\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433a4fae9bc2bd2b0a71cae82f9074697a2e0f44ff05f9f835c39f66089c7afda9aa440682517c0b7ff7da50f0c2ff0aca104df11919d6d8cfcd96a58fd0a00417be6f518b788b79ef2e6f53c5f254c56c5d26136f904e22fd1d6551c0ab4e9ef71da6c23935f177\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"27fb59640d89c1204a7387bb483552bdbe80cfb7862658ca5832509cf2bfe9c6b82d706e8249f1b5997a7cb1b5fb849442dd0b40dcf1dbe14f8e2e3e56f155b073aa885380050e7b11d0c3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e65d04eb4f5708a07159a512a996041baf294b1ee5e1c4223e001b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"975d59de029b384f4948bd2dab452ce98016b5829c3e58ccd846c10419c3d1ee03\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"068248ece62ca7ce198d2826318e51fa3c20353b8464f2e2a94ebb51333d6ba959004ccfde\"\n}\n],\n\"handshake_hash\": \"c16e1c701b82581d5c1db7bc8fca2fc5d41afc88b2d38a20aeb06b1d003afc16776b2e5a93c0b83cd5614549754fd35e89bac6ed0b16ee5a59502c0b5e900766\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944406be10f61da8593f359103fe329d7eb55705607e1216b0af8f1453d1b2ff15997e542dac3f1bf8208588f11f44a18b325d6a8c0a30a14eff052950197e344dabf3c3faf0a47f77d8bff7bb75eea0f1274263fe9027a4c98f5515b0951e955242c2a4c50e8d743349eacbfb56267f62b2f10391226fae81c03b70dea367d33f15628637ab164ff1feac553d04d0981bdde8ae7ce6d96e867f34862e653a4dbb7e3a2f161ba0957d2ba30fd8364a5cee066a896663d71f8a2af042276e211f68077ba7c147265d3f3ff2f585bd972319632a7cc6e45cd0ed49e571ecb5dc4548087757d2a179a5462141e00cf5a3024d36a169a8b45d82ad53d67b44e86759cd530a18e2043c6733e18e6648452104924f93345706e22fb188e4b5c5764aed4c76cc68e552e63e8d7f5dddb3235072d47e33e8c9d6117fbd46ba0fdba475dd35dfea4af8085d3d8e16434b3b93d10b253609f43cb0cdce84e45424b388a002b07cb6b8a4d3805ee724b12d124873d744557086d478177239c7bbee1ce5230f3161cc2042b0e163789540fa97411700b951448a352ddf264dc4c0a2b398c644acc41e055cc69fa05a12d0c636727a155cbb9a700abcf0626605949a9fd9c867e8be2e38585874a60bb8f1c590e676e6b8f5bf86f099ca479bd5dca658bf7c86acf574298114c3b36ff875f6e151b3a4d15137b58ea03d2e84dca7a23761b7ac792ba8c1c7ca35689562488fa7962f1d793dc5a8ae046a1038b6300e0a5c32acd2f2d9c327096e7d92e657d614d8ed24854ab08f276d5c96fcd960cd1e8aed1dc357553413fa71c7d27c5e6296d679fe0744733924498715890627888d089a668ac63dbd088fadd9555db748bd6c2d4a71ea3212ea64b69f12ae44db32bf3ff2874f00024deb1841d2a97ec29ac3aa2354d4c4686b1c9571ed5c92946a545c4d615e7ae1440f699829acae6fc147ca661f1b7364d1ad6615d0400af492e5a2749dfb5f2305eac42a2dcc7a356658d2aec398efaa3e00d2e552ace78a32cc7fe21bcdf96008e320fcee37c03db3bad8735e732a88f902180d537ba787fb9bc2cf50c0ff3b673469b6de8117e19623305a967504760de4c3507cef3c612a5a20615e93493b6b6b761d0d6f5f8483b39c3bd195794e64c7a22a4ff75eefe7eff59336fcec4a103a00cc4073c7eabb235d861fdec1660a599ff39def70dea005d56ff18c88c15834e93a8a9f82c4eb36d64484f5f5b6720f0ca88b15a2bd8c0dd63e2574adb7d5f591e7c08a26c141273060f31bd0d5ec92f60010ff62fe65346cd56a07a91610dc498977fdeee6e2f39e7dbb9c6b40aeab76ee039c2354e2a0300e1f9187c16e77c4fe7d6dd48dcd24c0c031ddf3285b50308e4296052cdf0a2460b657691d5edc8acda4fbe5c53ba3bc480df59bb040392adb799a9719c0615ff16d235f0c5f222818538fd9fcdc22f1fb856b797672656bba97346666d4fb40da4df5c798aa120fa30f721471d2f02b07112c68db6d0f6609f9131308bcb9f4a0bba436ddc07f69077402cfcb3c552cbae52f310c2fdb3378ee824523dd04f766328fd20361adcd11333acb07de106d210db769e8b97d461355833c99e70edb02eb66c3dd92be0a9b3455c028d6405a3610cad31d6c0f9641c30dbc441c3de3929133e4fd9ed6c29b8a44d1a23bf6eb0c70ea440b5e6e88e3fa2b66e9e464918573e394129e7a44e0eca55b8e989242a5ee792cc1a84da9ab5461d6f3f9b5a93c7101e1c42067a6e6c020a98879a4a02d48b12f655fb037f9b523f4970e17fc3d5a0385075b7d222946503dc904b7b5decdb3cd594d19733664327abfd0ff1740ab763dbdf5fbaf756fd154583a15c91069aa449c45f7f1a10365458334b30163bd56cadef870d81445fcc80f42d95daf0f6e7ef4a4ebdcab8ce126ada40c43b5972c75d8ae107d5e19578065fdaf2b56457d4dd1f5f84bebd30c48c602b384420cd0c1ffd16870e9e02fe378f7856a71bda01cc855a5c6740061c414c13b1bb1348a638706be9f6f1a4151a6e70bbdbd111143922d53417079648bd00f948ca18a027637b95e0b888f058dd8779fa51b081563483162c7c0b4e5dc32fa443f19156d3546cee40d7c35bf5a6fa1087ce9e475f89d53243e789d818ce1735053405362ca86e5f52a9c425da54a6901cc62bbbd64fa0e446943849efec99a0a87a058e26de9d4ac841c16117444eea414adc699c0726ac0cc8f0097d46c34e6dc714c56eb90445c06f65a54a5d96b18385810d01bbe70fbd85ed86368780d8854943f60b4fc0af170bf3b0238a629e2639cc9fd46fad2cdf7632c9e2172d28028d004750efcb816dd6c0c4a6a516543ce5deb837918aa733aa0abc169c2f0fd8d4bfa617b494b5c4d1e74daeeea5f2b248017fc6fc2b04af5de9bed3d337c96f1515b7562d01593789c806d17cb2b1cceba558bb381c0b70a2662b35ef3e65ceb384ef64cefeb297eaf5af9fc718731c849032ee7b210888a452df6e54d6d281e88df02cd74c62ee76a4f4c092e58506536b1abfef27bd6944f5eed6bc418bbf317600a09a812debdcab37d3945a46ccad99e2b8fdc1bf2334aceafc68b51bbbe68bcae72c5de0242edb33dd406b4747578f5f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843841d8427b6d6818ab5a252ea77306cdf26284da134051909e5ebf9aaf4c239bd8262d05a03857dfa74695aeda0587aa3db38f098bc4e426c4f69206aecbfa8e306b3f6c87959e18f4191c300762ac4ae7d37a5a45d1650ec52c40340ca3897b5bc5f19fb7243177b7008dba0bf3ae8e8c2fbecdca5f254a005528e950f3e0fadfd6a8477aa0f1f3eb00cf346feb7a81d13d263fe27a1d16f5639020a9b80fa9f389b2284492a1dd2bf930da9b3261fe77efa38ca9eac1328d7a75b23308ab464c9a5c1c3d2acb9bbe9cb19900c8399287d260bd0dc005024f4540e36a41297537fabf858b36b91b48fd71f694fa3aebfee469fb843ea3bdc854d38abbc010eb971f43c528a1ebdbb14625e1426bd9c127663bfc9ac0d382e4ce22a22323f094702d0ab3dfd037576faf423ee257478187e8cd6e736951a7ad3d1fd3a5332de54cee1f6258dc94c28c223127c52e9ed84dccd7c86a403d88010ae4418ea3831b0d5a7bf787caf789cac3d7961e4a4abe93f8d94b72e3711da417b5324a96340dd7b32ce9c32f38a739b6b4b5a8043135de1aa6f053390e3227ce796c9e0796eb321b0f319eb6e7c63e7deea78556ad281d891bfd7526f0466ce53359358cfca796f838d44cd61ed7a81d45971d901accaf06350ed1101d759b1ae7c3a022c4f190ee59db483ccb94dce4f2de0da6bfb640f706c7792f2360f1ca4624f26ae35f8b30c36fdb621226d99d8e655b0019c809e1f2ad107ecd79c8884566fa3402ee4edaf5820da5ac3b3b92b5ae549bea6b05e097195896d722feae9010b26e252b2ff86947173dae3b5f032bf92cb672029a09ea3486a793b77e36264467f32450c0c583a01c950e3e1e944cd35d412fefbad6178565c8947430541d419846a9b59df2d90b5f667f0294de63fc56302511eee34f24436be6e62cd74abb82805a083f716ff5a846ba4b7394d01f17cb17c1027462256b9a693e919722f1ca0dd306b6dd89b95446f44eb54e406914c3f8645b67ca02b5a111edadd36c40f6de446b4a48a6be1559c9d30a156ab5a50439668f9c7d5f410ff0047e99904e274623710a9098854295327a0af72dfc96930ea8d20f57024701234f0c7e25c4b2a69a1ba3bf6ba2e17c7817ea005488ef717fb107a9acd0a1a554c77db64780875142875d35d67d03669d646ddf80cb41b51c9dd2593e1e28539b77ae1a78faec8e4ebeb63e7d089e5ee8882bdd49c1e6c62a475a0df28bc5bbf17d15de3b9b8af37750783c2efea6966652a61206c8b5b7a85408d8f939f7b672e4ae9f2785658315a0850abbad1b0bd648dd9633916a7e5ae52a3c1efc12d9d44daf82acbbc74c6155c208cb0fbe55953d594b2d45ef72f7532192db883cdbef75cf4fa70b2630e4db2724b979b49d6325e98efd34a5019c6742209d804cde69e960eba3f58345a299d05312b4a58162679211d1d90d76aae0933b18fa800c909191ae6e7be7eb91668d2ce5d678d049468bc2c0ed6cd26607b6cd95c5f173365414072e973dd6ee39019feacce66bce78ee21c7c65dbf8daebae90892b5a17155b60a7270e2ee63d92d804ea3ce77d5c9e3f02efbdf8cd5c989ecc76a595c39b06f5ed3e17a8484e539f98612fffba1474bd404b9a488d989f230d3c726ca1b8429d3463599baf565f13ba7b47d56c50a4a43724217e07b8af9cd16213d986e2eb44ef81d8c8d817f4427e8a31fd4bb48ed6d07928eb843ae3a8ee4d933481cc63d9db38441c9910024ba32a0b7459037564d77e59deed783b27d74d5ac87315457b1cd962c3fdd3ad0eb442075a0b65d35c26dea6454f455bcc3230df4d32877b250c07aa7826cee7692c6a76c1751cce94de414b1779e3b62b4315f8c7a5c744ffc0ffeb23e98a3ab424064b1085d50d84546cd6eeea28951aac2f5cf7156d45763dc738438a1850252d079703e5aa61e66dbbae35053a5c13f29cbc360de78d0997975b41387d326ba94bab0268abbefd8a451353839f07f41c43131b255f3b888e5fe0942f90ca7de1f07e9c6993b56b73338c57a67bba765d961501ef4d9a3556a1f1fb23447367e517d8c582f79f9cb1a1654869bfbecadc953b0a08802c5c3cdf28f5ab3848d0143644b72b53ebf09795911dea6e9e792d804b20e3d85298abb972f220cc15be0a38ca4a40a72b9fa461453906618fe742a1802221178ecbb012a8de3ee24b37c556c25ad6aa4c4eee4675da89b4c22bcdc16f7b88f3269e4c13f7f67f9a93b586d061566a378ec80ac57115f176b7aa71169fc926657dcec292dc99e1c07f6490c3632f014bef320d9aac29c87420d544a1421bf4b0c44c6f1d0a640ba1d9af9b85972e8c1ee9626d078d27668958a9017fad890d216f752fdb1bc2b6569a2a0d08bd890333586c6538cbb62b33539673c6e4a7f69374c767c2ee8fbbecff126a8c337db5a30b6907ac74dc843d8f8732e21637d3533f8b67d92a7fef609f5cba46604ee8450d1adc95a8dc34bf16124202e08967062e2a542febeec33e0881dcd8656e777800de6dc8fa04dc81b9d5e49d856eb16cfaae831002590ff1f5b1c7a59b5881c0082d967b706b4b990563865dee2a63cd85b1ed6ae2ffac897376d22135ce7b90abed40c8ed0e8e5d6b568b2346a28f370d9b664ebf33052260a7234e271a0a02aefaed6ebf1021daab89e87bfb50b0faad73eb8f9ecd12b3849a5afbd98366c219cfe967c97feedea107d41d57da898799eaec378954799280748a3fe9165176cbca216959b9e2dd1cdbf130d2e3b6a3e2a857ddd248e6df036dd70ab4d48df21936ae73f124832568e237037e80388eb330691067ce56e0268a76696b8b9e8d9b59d04b540b47563c1e88b49fb14378063d9008226ddf6357fd94c9c55318b5d86ef90cc2d30dc76ec35f98624e8d3eeb102409eea830b349a00f0ecbfe1e4ee60b5a0b642bf948\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6bc6e2fba9f37a3c9e3d2b56ae9ff2bdcc3461aaae24f6fb6be5b15a5c9f796a779697dbfce0a0959f0b504eec5eb3d8ac593de719ed822eda25013b74ea6577cc03c53424b27483ad22fb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4acd6957fd1fe59cf902c24afdb52ebb919fa9d69764b1bdc5b354\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9d41fd42b930a4fa3c6cda366f0c4b7f6da755b797361d9ec9a4a4993f37b039fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"738cd69feb4cc309a735068e6f4157a0719a549495fc52e5828e6280f9d2866781bf725e48\"\n}\n],\n\"handshake_hash\": \"c82906bab32b08ec8dc970bdb1e3df8c98b3c254bb783d70a425dd8376b1f3d6\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449913bf6e4249f993cdd53d129bd755337705a356424fce1b4bd225085ed673b494ff0de4646dffb0393f2b599529bfe9b358d608b4292b34099ec96933b7cc934b52c3c62f5032795280b5d65fd1c51fd917927455adb784c4c22f13c00860be9f40f22f968f26b00008128d5d93015d1e30e57c50fb093e5ff515eda95f9da67aee3f08d9eceb64dd72c88c4b817899a794b7045487875bc8b3bd4b551a06e66d3b14a9f20c1583a37be408f85319c3f0c089e068dda6f4b55f0cdb073a9c6bb4e9232156732f1078078cda40018f482382d392503a6d799e4deee94e5919eac4600127b9f10c6f0afb35d6a2ed68bada47810879062e4b17feba2d2302d1d7e9a593c693bc9460cc6d05f00d3331bfcf2472140d13d2d564f9f1115cac48e4700726bb90a7094b540ae43adbb7f6353e95b3d57927b6ae46e5a7b20f13dbbf8c7ba66a11e32978825c859634b06828e5eaca592ffd8bfb0bcd7a117912c6606a4738f5dca960197b1260fda3ea551f249310c4802024e436f6b2a97a6f2687d3b85264a4134661889d3d2d8986d7b9c7f5efc78f2e98b1da8fe24c5c67df38b33cc40e62a8fe7127e35be60aa7ad42efac4bb2f96840c2f1f7793f58bebd3b4bf29ad8013723ae02e86b3337914c529ad3c138c348f92297cd7034fc7244aeb2e4df88efdd7a2e44d3354c8f83cd2f309948e45cde6ce835a780332bbef4777a7676ff3ea7e6872d86a210e4e418178d23f40d029f424df504ccef1709fdd7dd5708d956a3c7ee9b76b5bee8e9388f8aabc2c9f7527b5ec51b2697b5ee270246b98aa0a9823e65f48e2f24fd20714a614653403ec4430f433c802f3aac5d0acf70c2fb760b4834409a63ae87a1385806e53ded335db9738e79929a11901669260bdd6477b561915ad2a2d2f6ee4c79e7f52768238acf70de7bc448e453ae506c4fad84a98590cb808addc3b396af43adece653785d1f347ac4feb83d694f5123457b3025fa7f46bc8c1d3e30859f804b80c7567ed208cc76aa355f1baad02a382b31ea696355e1b325a09bed9ad4d2c8f003e6c64aef0ec44b8636bb30fd25bd256c26ece01972731816c106116f5ace1aac20aa4b04cb0674cc7faafff624d13fdd91c353031e37867179573a6a27c83f49166289c46d97d5c19ba760d69aa440f11d7fbbbbd3d023c298d1b88b55aab793a43e4204e19ba473b740dab25c6f4da1a0b028a73a0c9d2ee8c10845a0823096fa9c9c75248b461faa19e9099984841e2999b8da14a96d12dbf8ed456ad66b3ba1d5d4ab3a32689b4f128f937f5d629181cf3dced3270a7c2fac057a687c8fafeee090cb42b5f7bf16727f8ec405e1d14db8d5e7736e16c42bdae1f54950b324c49e4bad79060a0f0b02462d7490b6321c78f8e0bb277659054194953685f20bdd33ee53d029ae4f86b2e4fd6755ac66880222fdf930000912b478063314f9c8e454a7260fcf5cc2238289e25b3ce6e2d683f461b383bb64d28fc8fbab3404942c54393bc23b10d8873c4da10f1d558b558f067b6710a6c011177018e9f7337766d7ae59b4fb6147435cde7c2f3f00b363cb336a827b9d087057f4f951e73f54acda81a880d4a26c76c83dbf8c153e5c2beef2363b8cfe74abdb5dc8e025e81ac9c4fad7bddaa95139c5539d44fb4ad10b450c78dc9bb936e7092aec9f34391293e3e6121759b114910171b4b77e4d0789fceb84c4c9664fed85523c97e2a4f141c96df8a30a36b2726660e4df6265cf165fed679c6cc08f32206aaf1601b4290a4775700efb3e7fd3e3a58a5e1cbf78ba43d7bfbbcf8b3a32a4af826309567dd40dc40c1cf883b730b1c4d519ad8a31797f462594cc066d01d6003d62301b302c0d59c45bcb343d2936a6d45a60cd87c7c2c4d0e1816555364abadde6679fb69d668cf1fe3cb617afcdc0f5230cc5df30aa2f6b2efa6250480f5c8d9a7bf05ac4ec9bec8384862c0f4ffadf8d2eacaf6356c3838b8637a247295e9f70e412ecab014a925673149bbc3d6b9448842ea5dd63f3b87c0cd34ad0a5f791ddb2202b38b46eb387ca296656c15cd59a0c98bed87e4b357960dd71b09939f210dad45d0cd3357e25b73b23d70de64d3c1b8060b9f437f6fa11a82685318d3f4aa8c1f5e59c3a841261eba288eca318fc3f3ba2cd79ba458f5b64bbf8950ebc1e754e7cb89bddac6f3b1bb282ac977c4e7d938225195bcda5a8c30b815d3ac8483bd68850f9049d1fc02c932af4a5f59554335bb56e2aa6fe61144498791278d32092afdbe2c4792210552dc94512fa95913ec4fee470bfc8238b1a9c01318f5a2f902ab336684a59b4ab18931669f3388efdb336a000df887b4d2f654188d923a7c89332df7f25390ec838d43c102d0b1c7e70996d7b765a44bff8d51694d61be189dc7d4394e786544f1c71aa9af6aa530ef84464944628ce28c114bf4bdd96c22f1545984a8993545c26212a783f8006a7e30643b8da309e3634edeee557846b8f22f4604faf0c2907799e13b296b06feaa6fe5e0afc9c5d7234a0f49dd194d73263bf33d09d77ced9aa0e8aeb6c1342be61a7072add71b17032c64d1d758d525a68dcaeae4b4db26d0f2e353277c6c31047a181d62df41db79cd9b847dfae\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bca4a11992062568260f623ff43ee93183e083e5d79ff8ea2cf50fc024765fa2a7c67abe96bfaeb3d905a8143b0a751d603a702a5212f386878663e94920f4ab395d503290407f035413405bc3de5dcca07530e6fd84995893bb4730f2f40a78cd2d20ccae2558fdc3f86da64bb6febf9eb41ea19b335d73f6c0896abd551f1ca82849218e1fc7c2a93c44cac7bed84e2829a37d538e96a18b65390f0470b549963f443de2a5e773c133797d76a9e121e7b17d1b33a628ef0b55ceb0f20ddd95cebd4f6cf97dfc4508bbb49f4b8fb42d7cee678bf1dd27e6531ec3e552850806027fca71782f31eea835f967f76423164fde14db8b7f13d8762b6f9071abdb0c76e2f32a623b36ffc03db4e937b979a6ebc7b9a3987a35c27716673c1a3b3ad8a18d81c2e6fcde1770f84cbdc0580cf729866fc0eb0843ff868cfa9a13053b37c52ca667719457e1086ff1b15f674272ac6662d7af5e182a2857671f3acc38a06a982e806630cc0aa8bbc72b7da21efade4bcb5dd9deb755dcfe92d660d67e44d66b31d1ca4de8881b968cb013df172a259870029f67fb18d48c1f16d4ffbd0f4016a646d6e772fc13335bbedf47c146cb45d9c4c8557f5f1efcae8d3a120968a9069e7c43ecd9ff63b16f93c9ee248842f721271b03096ef14dee0714c3acb32ae8a5da4fe83f21970171f67eb8de0966fd14cc24b2558bff1efb4fae1715a03e31fd96193399c9f228d92a88806ff3c63e928bbc802ca1ca881876d358763a64018a6d72b85110aba35217840d9ed73ee6907a1c84679d8119e842959e45b60deb119ca68843726592f0a406a1d2ef019294498622b9c6e765e574143d4cd518bb2a9ac4c70ccab6d1b92e2f54663dffc897fdf96a7e3bb984ea611e2919b184d5eab389d727b7db14104ec43e8af5d464c489304bbb5e4488d018331cbb67697fc028259ba35bd838b6a9b47f21fab81ab54cc157ed660b88908f4f53368e9bc94fcc68ba06af68f592752a21ec91bbeebe67942ae445b0f8335eec472643dda5f183fe94b038488c8c170c515a7bd5e4df15150c4b6e2c30855d689e8e67a42cc6edf477f1aee96e2128c8e7e8cfeffdf31c71c8d96fce5841391df2154bd38b43a93f36b3755faf49f54e464c52520de60fddb0d54984eacce2f3d6a7353fb1347d2e275e18d6188232e4468d5f50cf1403c2703c4f93072958865f6ee44d0f1ee5ec4a41c0d00f907d8635f870d1093e0ab1c5ad14f7f89ddfa76cc56f4eaef0f4d35f55b746f1cfaeabaeff68f9cd6c02feef443e61b2a033fd30329d470b7264f40a24ba689410a276f71de7382a35a34d43d019713468da70581b090f69dd12299663a1a0b40e2f213173251250b20694d621569d89074fbb0594b720de3f0f1e64d860d4567cd652926fdebd7c95288c4a6b8f9cfd17e4f24631a1179161f608a12bea0399646e7e5d738259db6cb7effe095deff1060ef94394cb273a4807b925f1950dfbf9159a15258e7008d09c2e0e39d1ce012ca8da303b6aa9d17363ea133d5f2ba87be76317df6ded78f7798c1859770c01a9680ba41d89f59d0301a3b6e2575ec7490ad6701212f2f39f0955eedab31103fd3cfbb9e2ca61f677a630a0276de3da2ad9e557b31d4fa93184246e86691eba7c8be2b372e47206d40a1464b38d28ba6ce89dabc880b7876eb508faab853aa850f234d05b9f1ccf79815f26a4e0aa3b9f8d4f447c24a4779ee0ef8f2c4b0e61b44f010e8f6b91fac1782edac4e05722ee63f38c969c8a0fdfd0d812dd59e29084afe950d7e0c8d31098b8637d229f3c89a8217412fb53a860977ddbd219c7625c8b10474ed6dd0462ec47b454c6b02953d07e64876b37448a66153290ef2d686c92b52c658e3d9f9bfda5d022dfe652b9c418e1c4368507c6decbce1ae4cc08fecff106c241469db712f9d5135ab01d40dcadab4080d26f876ada239dbd3dd11fa55e3a27fa7791530c52a0edd633d12e1737a729942b62f832117c42ef33e15159e4604bfae7b10f3a8a412ae27bc58d5850591280e657510ed57389dfd0bb8334bd13a04c41d6429b8686d3fa92b2774fec958d8aaf96d7c8bc39ea4ad8bb6054ca90073113fc34cf099c16c4ecbdba1b9fba08870562131910c6fef8bd1e383cb70be838258cd4ef01f90e6dcd489c3487062ef9292cbd1635df96aa4447af490b2844bf94de36a43a2454b176322bf46c3a5bac559c1fde9a4fa043144202ce5b21a44bd39e674a467b003a25bbe0253407c869be32f48e444b14a4a37c19a2133124a7168dc23cebe64f9200ae47354a35507fb8b64f97a042540740973484d7601c35be892b492a37501b8bc657ba2aa4d63ff6b988a55ac09e7a10555dd1d12f95b43187e7316e910513de6f752c25366fc1619d46bacc152dd999a91c4f6e928326b226042708c7784a9429384f1054594ad08af47d8e05e03f3fbb6e62bd6bd297a9550032eb3c835a404535071c049228ca2bd228ac9be328020f64e2b5b88a33be2a2076d4e0206083501fc4889286b6068edc8f0668594acf1a7eb0ac0ebd152c300be2c53abacf745089606287409bd9a5fa6dc449293f49d8925bfdf26719646ceb4530787532569d12a4cfddb596b522deec793a357c5c6900781603aec4841a1b90e3c1c8f77a5f6e20a3dd13a46168bd73d50c7a8f85f01f3d7f2eb96b5167d31bb9974df1f39742237c5363d4b499aedef98eb12aada7d8576f169e581b749cce8c4ab78d582bda91ca4bfbfe854056597f7b7eea1cef1819764e664abc02077450031b386176863e0fdd6ecbf0120349cbeda9157ad94773fb5f6ca89bec38288c6d463942688895b3c1105dd50131c3ecb3b78070e5f3535a408da7694d6f86f8147079d0d1127a96a92adf046ccb7a9591a2fe05ae97b17c6e59d03f1577355f01745174c0778be7c0d1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1600b19ffa7e54d52d4c84177f60993f2b6130f6028782ca068f4abb5581b3c0417bf4689f22aa79ae3170f005dbd3368fe2730ffa14268bb25b880b86bf2407462e5e6712cf4e0aa94e52\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1784c3a7aed51481dd131a0b9391ef7e009454b80ce0a7633ab5e5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a98c8ffa71d7ea0904f115a6db9e69e32fa6fea8294b1b01ed7e18741450c7060d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ad09e3cddfdbb8485f85a081601beee6beabceee10dfe9c4499fcdfce9bde5a035dafaa3be\"\n}\n],\n\"handshake_hash\": \"1db39c7d5851be1f3590ef6f5d35bcc0bcb2b15ad5d2471aec5f8b997abad66578d4be51660e022ef9e8186450b19d7ebe382d87aadbbb2764a96763d17f9b72\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b3bf221ef23b2609f93906f1756d9f5fdd84474b69945ae2d89f2f66a19d3bd3712eff181fbab46aae74be6d8c8ef75ca6d4b40218bce12fc2286fb88e5f8e3cfbfb526d1474f9a134c49d4057761383a0bc859443fb036f00e9c46d5970cb107f0f19e9a9e228849344c2f77a348a8025c0caa9fb7f68b9692d82ae48a020b80d35e40c6eaa01b7ca3b5a27452bdff9997dd550ce2879ebc47990ddbcf1a11d31b6a91a122f5f33c2bda4b17cdcceb4147e3efec0242183b358ded9f37e4330d310ff6eb84eff2968c1a6bc9de94d112cf31878ddea6adb07afa7ca68cd3405de781341b4218d877a155f621def5d5d4456797f3fbf2d988151741cd2dd28b8d3ae15f293ae20317944ca511fcb941534f4877240b79cbad1237c9de49247cd200147d35575b00de54819e408b6b0ed53cb769c2199e8163861697dff9807b683db8fde73383e2538591fb14731b999a27078021a2fa6b49f500ff36d5fa3416d69a3aa2e7064e1291103c8641f156421059d1476fdcd63b2d999d887cde55aa4e7225908c0ed544c48214795b4a47d3b071ca6e0c4d5b33c2959bd6dba1b7d51501207fe9810c8174a3b8bd35608049540a6c2258d30aa8f5fd4136e3a76ff2c140dcae443b5049c247a3ea759e4627cca0c2092f4d49f6252ca342fc6942a7ff4063a7faa53a44bf5425f2042dca6946915da5b40272c388c11ce0101c29ee209b563c4e985a9ddb94ad7d9bae550e14357a5699d9134ff4739b5029121c90b735683992b2c2e23a03128f0f90786bfa8cf36c288dfcb726099682ddec9bd42e989da23ca6ce929bebea937d6e0042cc4d1d0925ed47983e2ac0176671428f9d45b506482455b1ce701fd497c74e2b1ebba2f1e2f1264aab3bca0ad73c862e88ad463caec325c143a3a8bef26a07eaaf16ca9edef16f0b5f803fcc479bec0d54c89e58520e7f7f33853c9152453b64294e141d82f6ec6244b2fdcafed5e1c4e11893361a4b06f269bbacdcbd8106af6a45dec40c4710a7b3443560102fd4bdc0259a1ede43a18415d4d33595026eae3249536e1df70a73c1c7a17cd3ce9451b311a3c1dac87a0377be075e75c106d49555ba0893477ffe5c6ca3de981ef651c90e9e958cdce346db8006a8c0da5a2c7455100b5ca7c19d80437a228f2b28cb32cd5be94f84343ac7da406377f856111e0e3d341c37eba1940ce296c8b074931bc5a4a6488895cf41bbb8eef0adc91c86fe1dc7c0344b9f96d036d64419c4f77ec4ceba808d3050314d87b2e2f9e5baf9dffac617d83c848a8c86b0fe7486a3a0f1a0c1cdd6660f501e21c55de13e953155ad7b3e5407c7d9f910a1ee8ad4ad92d97c8c020569a5fe5eccb254c8f5a43969e084ae2700f5a2ca7a92084499a9960a2e971bc13b7c211b251afec030c14308307a26baaa72e2ae3cae703ce09993bb2806808cddc8502f00aac1a4ef7fd8c05ba568a4f8fca4b7ec6d3f02baa59893c94273b0a09b40f6ac5d2e66cb45061541a21eabc26edcbf3ea06d07496ec056caf5f01d85d16ee96cedd2f44e8b4bc28c53a1428215329d254e89168fc71cfb865ed52e2e517cb9ba2499f53794bf0b0eed355cdc57e2f4dd01d99117239c792c7b6b05991c77f833affe77f5e911f900fd5d15e53d0f05a1714858354626a5428c97b9da36831b0e8e581a7256841acccad66eff1ee54f585f572ae1ef5c795b60cc547e30ad921b0be9575fcc504ac6b2450aae58770171db62b4321ad277559c845bdb6e77d7a76ad848d0d098342625ec1b9462c3c10a4279f7ed51d128658a688e07f49d39aa4ca79d46a5b12f7d9fa5d36d2259c886fec3f09f0b4c3f133660aafefbcffedd2523b3470b86b58c8d6c67faf7670b6af48faed5d213485b99217c5f82097bf51cc794cdda83dc00e53c6837b6b0a8a6b940ae340e0ccc811dc2d03d095e77e9650850837d1ab63a90f27d18a76c413eef8d2eff5b4513d047c43c517e5620c7c54ebea7d4fb5e31b1a52a7e073d0974832bb8539aa2e75cacace6b5469bc50f871b55961888832db70cb5efb367d976adbba13aa0136803a10d07d94eaaca2dffd670204a4abd4ab6b88d3c8cdf9b4b06c29744b0bc04af54a335e3cc2e748f931678322ee92be0d331638f8cee9d62049679c192f234399a3b9fb9f958d0cc04b9ba39448755502f8e7fc0a57b01bf60614a9fdda9ce98a1681b19061d01eaac0c39ebd23dac1e5916a4cfbeada5d181d1a2dd4813b6aae7910bcf3ed0b3a7412990fa0e52e395f828a3de76af299f18feb08c26a55f427766fae2ba7ef76458407ef68d343d9bb2230c483037b183e2a4ee01422cc97840c778011aeb6ed24a7d27ecafd3ae9ed50853452811bb01c7bd08465db8133bfe9bbaad077f78be21e1967c39c26eeda28c39cb1b7f4bca990172111279ae3e63158201a8cc66cae316cdf8449ea3ec9383ff6e87decada0cd973b9d6980cb7f3632b2012f7585d8cbce247439d30b972858c1a543f43244165cad66878580188a245543533bfe23824af49de1e8bdfc5dd6e500daa96d767d207bec6e7561f835298b9373fbe063fe073bda73c1fe6571ad4491be1405ea832c78b5273d5fba69b30e2f0d382ecc0db87362\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438f38e579043008d3a8c6c0f6a07a21856c78f509a6f8b08e1eb03f96c8e88db296bb8d562d6ddb00be575e7e122c5b952f2e3d68bd7359bcd01dbaa60c64d7fad207379fd50256e7311e582b51a514d22bc76580feb7df2096d28e6f256392f7df652c1e3b9634864d6c045b161b362da5646b53d942ab2992c1a63c68ecfa6dd35a6a156ab6f1c4eb432431ddb7433dcb6f0016ecbe85c0bf391d0a19503fc3701b8ac559f3ab247975dddfd999aa719038c8430f78cb969c59d6018d8fd83d5d8e98b23ef12f96c2c2b884c3e1290f60746d3981536c67b776362eedb0002b2edc22cd0334f5849736060f0a5e7372fe4346241fcdfaf54dce2457b49932111354127551edf4cdd34a700834544063c701c75ca43d7c0cbcd117f400b66bf159d3741ebb2996b92d25b50d20622f6fddd6608fc1f5e55da7644751b0f44173643377009f2c7b941b68d2c8c250b8bbf37c33e2baf17c44f9412a9af8ffd4d846d660321aaaf127c223f8b70e549aea8a77210fc791014018e79236ee256b0bab15ddd063b051c3d6e16f43b6a9a44caedb00069beb8ac98ea4e129509ef949a61de9374b23790a0beb5cee5e5e8e64660600b88822f643d83bf321b259a1bcf4fb6a9fcfa2a3b956b0b776158193f0d4ae1dcda118af5b868f99ec5322fb37454927fed1510e66a3cc07f96ce816587531b0facf1b0ca2d01c43c8188dd8fecad8b76ec74fc7de3e0c85111309912ef280ca0626659b5f7f073ae88cd9f879dc704e2644d3bb9aee52a4afb510febe9ee03937c9ba48fccd1f0a4675ce30e4f19ce54f7235d85a3d9067db665d74104f1392065c876d5ea3b744e2e50733370e64851ad16b04cf5eb3358c47cf2fb13eb3c0d8391aaece47d6bd11b4aee69383449cd1f25e02ed5eb13a8b7eb3d5e9d4e7aae8c77b0f7813d4f5fa2fa52c68ca182b8a3d9dfc313b3ed2850336396633451dcfd38914237c1e9bcd4bfab02efc248bad802218489e282a6d76a04f2a1bfe826527ad319fee5e00212fb8c2c7227b6fbc2b1c2c5d14e64be7e1701bcabf225ac5f73d91f746418e8cc84394c5c9537d1d48c805491b7eb1aca4f58dcc8805d4803640ec9c6b6c717a4242fd7d37e138b0575ee4c26f741d72008741671326bdd6d09fa5cfb39c9c5adda2b0bbcbf038e6857d31199f7beee0860a6cd665f2c978499324d27ce9dee1b0d06441f1e60024db07ecd1b9839c5d86df78afc9989db66c8e8278052a9d6c20aa4f4b47a52d6652679380309cc1338c2ffe92842c3da9b0ee4f30cc13d99c742b7bc4bf04bcb25126bd2dc2e8594d2cda19098c5b9789db6d296d7f89ea565a5c8d1a6e19034ac5ddbe38113a4f0feb7f17f26cad184d27d1f28bc19716602721a6486932b12080eca0d286c05c959d4535b6cb67fadcf612ef250c522915e48f63108b72880a0ac89be2747f2fa675a43d8db00a727b6b2f35726b322c804cbf587f621eceaeaad9471485709e5ee6851255aa99c07f8e72af028787b52f59a0c8a5d7b2bb27f3cdb0734d60b4857f8d0fcf7a9b1fc999acc98bc131415a6a0278258d73d5c38401dc85f2f8afbc4a77a1a7eb01913a02e05aa5d4b7db6bd69cc5d714dbed5efedaec0288e72394f6fdbb0a2954605a2558746f20f2e6c7b9776d378b7a91a9f2308d136ade4ee484c29da755734ba97faa197368b1743118ab133e133d14daf29656f4450908cb36563fdfa05f0d50ba71ef50e8e57b429b319fd859b78d5705dcf950d4a15fc66115a8155a37db6fe18f9d1dc4bf4a165728f2e931adb7118502828b055a72343ee4bacaa08a0004506a5822a9560a18dac6d86a024cb5bc6c5e77fedd75a667b4864b69c67f8e818912ea117fc6fa1892df0b6504c53098e036fbf87a030efe5d1abf6f148dbdf629f1a1005e4ac472a5e403a36555d4858470e43aa36a0ac68d62ba2025029e188e18287944a8ac66d84e5256f5793775e61aa83f83e964429a86a9209a7f008784fd05ad710c32092f7dd18668753b835606d75097d5d94df1ed28e302f16fb2329721ca50e9e5e75dedd06b4a2890cb7a892113c28efd977540d27b37edfc0b283782b53ecbf8ef5ff3fe9db0c773351874023972bca98a332b7e780261e17907749c256e1a5b733ec96a74231b26a1da3c2d933e26621740dbc0232f40da1300050d82f7ee374cc3004db59550c6218fe426f2ff3d46b596c7b84f792e049f4120f0edd9ef1a920ef8051489b954a807ed2112fcd5dca60d63d1ee5d7109ae778941ba1f23ddd445a435fa683a6b61c09f741a9eb6813ac7f7e1c550f970938a8c72fc3f818714c03dc3d0bee67f7ba27c9563a365303f5af7ecdfb413ed37de952b54c64faabc8f69ba157afa0a5737681c536b0ae698ed46eb331678c3393aa23fec89f6c6fc32a022d81463ec1d46865bb2fb11db4792a538c1094db3ad26abfdeb43a8ac6766705b501411e6a818516a709837795787071463dc434221f9ea6c1ed0516185598ef2f413f6f81c79ec1e2c2ea2deb62790bc808f87e5db6bf3442e4a525ad47f3b9ff06022e7a6c946ff4b542fa2cb8d9a283ff7973adee69d430287ed5e8ba2ccf94e06e5e59cb1f19356161c057777378b3d010a4dcb6f35467aabec255be48d9de56889b79dc929a22497260be1c365061d0ec3ef0782d31c9271f335037b1269b0712195259b98738c797857809f69fd83030931465299254fc6fd1a3d47ec8980389639db10a2df2a2cf8c42b401f9865ea4a5e0d70cd16ae9d889dfb0ea4651b3261c9569dbd7e08ec4721a24755538e72be6884eac9fcc45e327963c1101ee7b756b7396e3136e4cbbc854c67e6026594e7cf0e2e90db82ca27ab102c39ef941b74272ccc04a2b927319fb5c7e301576c9a9ecaf938097d9b891881b773f21bf88cb4dfc25cdca06e2cce1c865458\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4fb4347bef9f41a5b7462b633306afd093f137846be70f7821dad872477ffe1c848c23dac5cfb0cde196b550e329903721923ceb7e26ce3ef18c42c6b435d8e111a23bd33f2f71400d1fa6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ef201c588874d5bee73c11c08852d1ce3c079c19fd1c8f295874c9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5a4e6dc2c0479bceb6945e63f83851488aae89bbe9a00610b8216d903bd75c0763\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"799877ed409bbd26c232c68d6f7657675a02aeb49db68a53d09da878183990c1bbe07e6da0\"\n}\n],\n\"handshake_hash\": \"d5fb760debb482219c4c5d59b9bb07e8083ea288f195c4e2c1b8b65a5aa83f58\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a107c77b61b4622d12d7de53be075772d88099cfbd4240b0edcbaaec5d5f34140da71d4b7c1a4e8e151052a068d5eeeb07e2a34ba05d188bde4f2b0af94593632aba1e23081f4d62a4634041acd7705e26c5f230c3afedca479e0e002119ddf5f546191e8c821451bc34dfbc62745ed6cd75f309263a961218e698ab4b111c6cf508b9bbc15a3db16fadb772c2c7151a4ce6bf8f4ade3abdc7ecb792eb5cde033698bdff539799185c205a9503c4350878f191086f5b79508e4a2c420b52636b8cf1509f686f5f14d896c7c1fc209757989303d79c690fa3058087e26300a579cdb90ba71b7d8646294b11fc610ab0882e92d1ea575820f385982d6ae95fed7709c24b744c6ac6c75392134ef39f0dc0c49d348fea36eb4dce5c49f6f6d734fc9219a616e38b83000d581d91703e044eb04a75962920e4940293951b29ec0da78be39698e4670e84b22072e74159a6f414c122e42089d79af443f3a1f5d881d0e379960a846ad46b8ac0b38208b35ecf9dd5d350a54145cae75e7a45c85ca9a90da77545773b816c005b1685ce418048b24da9048f23764a1ad5ddfbdb9dc95e506300fdb5db99c40c3ba428ddedeabfdd6b31df3e2efd2d329eb75eaa4f7290fef16aeccca15060d543ed52aaa3b2f79e3bdfadca3845f6906c44107da752c282b536917e39dd458f599ae33e31be72d2473feefae4d6eccf18748d8acb0d6f094c63bc3da8298b8d27e942e33f6b7a60377fd33f7570d788986ef058154a44ab44a24232093c4ba8ad5a2379800be95ed5ff15433f14409180e518143831e9a6b7ddb232c0cc0981debc16a3db42995295a49bc1592771bdaec369641c752c97a1b6542ca4e6bb74618a64d9e8f1638ba9ea4130d3d956b09537dcb1c64a74343ce898e235eaa4942b22d525505f4549ffee4caa358032e92bf93e80570f4c8687a35aa39a2b3f39044032ca626388b53f6e6182d15449a4adf14707b383c7e7a4289da83806f2b4dafbcc44b6b343d630d2feaf40515ff9f56ea9e7ab55bc31284dfbabe8d5abfd0c3d39cab73bf1e9c8c974355cb90926e5602a65f64095e07ed6e76caf24a41982d35e67675aa94b8ce33d41069e554e0bddfea78a34c485704181fa8b11b448b4a7f91c73d766faeee4c0d29e2fcadebecc8e311e712fccb7f0dcec72d7e0c987fe47d1bbbb60d6d6830baed2ffcae9b76798cce36eb5f7ab9f293404116c935b495162239f60075b57f0cc3532cd74b33bcaac26444d2705bd886ae0a83b47dd0a085c73749896b3956cd8eba3b2d9864e8018dd02b7209add501f5a473dc7b6bd7a505f6469bc353d4a6c77009bf44772b066f9eef231160c17203bac296b5a1770912df146f7dde699044eaf4e308372a0ff35364e842fd01e1d5caa1b55b7d4960da00ffcf0036a04746913a2a2e4852dbd6524927435d8439634d295bc570fda0e9e8471fae424a854f6e5488a40e67bdfda4d6b6d981430c1c7e5720a64dceeeef8871fdb77bafee2f103833c0421ac79154c05734600655817b23f6dea5627b6e3f2df86d2e921810c93acacf2b112aa94412a873335356e4c46fc2b282f519cc7c341a2e2c55383396c33f2e9a1499b8142ec784a82c8a0172f23a6350d5125429738e20f588359b26f76cdb125f7175a5e05fd20ef2d0c49e2ddb161dc70057649bdbe7575e53a7bef4803a80ca8e6d412eb7038083752cf5551d25176b8b03489cc1e2458195688f71b311a9305ed988d0dfce5f5c119ca3547b27aed8d8725904933b5074e9cad2f90a9dd3c4e7acf82eac435855cb09c26e96017c30682915a159f4701e6d79d3159f90902d719fa19ae65e51cc7dd089109e32f95bb1761c1b81ba878aeeaba2627f088e91cb849434d1f13932c65a4a59a4a6193d9ebec27a063335991b865d6484fe40d48183a882100859220a4a531c422a1c04500aaad84fb3d5673b73a0908a4992ea3703dbf87bb708643c07c6565e9adba2d53d9b20804d70b801cabbbcbe94c6279d2d0f01356814d860e8ca5f5cad3cfdfe14511b69a4390dade869cbd7a15c73384b95d8f92e9d1218582f5ed980f4449c71bd058bdce9fd86c2cda54d2ccb95b3e7fc326c6f905ae63563b906b04e46ff94c4418d0c29d3451d0627e7a3f26f04f650700e0bd51730be25b39ab81b5cd4876f3e1bf58b8d02d36361b9683aae93abf7004dbfae8c9ed5a1b8f08081b6196e0a8bf5a8291a2dd87db13eedad9d971ae774be0d05baf7a5d735788921b647fe10ebdb0fdbb3ab74b406af74982db02348fd5f15501272d3ba674e876a7dfecfcf90732dfc555af3bc34f87768778fe6aa2302a9521d2083051869e0eef79d8b108010947b6926bdb0a6692cf692388d287acacd1d16226511459b6c360d6098dc75e752c842869baad1a0eb199e77668db5bdb9ba6a425fb315ee68d9b1a94b9f63bc66c06177a92a02734b084d68242255cd3711147ea49135f150cd8b3b47c89a6aab92137fa4e77e546befa9e6013658483c1d59b6949300d759abe31f83d270bd2375ad597b2ca7015ee247d8ccf59f1d2e6c71e2a61181ea1b0c44d545e9a536c279288be157a037f94bd1de82017226dcfd4447909f701fb47531c8396ed34\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884370f7b0c40f56931630b1eef5f5c0559a976bfc98d22522ea52599aa3797b8f7d0e78ab38a987856dccfcaa4c829f1f3e727e3d2f1ac1c055a8857754f854ba84999cbeed424fc0cdc452aa79ae3e7682632d88257ed2ca462e40bd2a9839d09bd451b8297068da280984e4ff45e3d7bbb42f8bee8d10c9091e5340f36743938ab4b18e35b84098cfa0d6a9ab1f242873d82221c07497dce9a49e5ff0317f7842944355f9501644a2268532e9286ebe3c7e75726423756b89cc291cab188c03b175f03a55c09f345279bf1332091ba0753da99f5a9be3a8e18ad375c8fa6449675a57daaafdada44fefb8736191cf99a0572be58724780dcf2f94a7d276ccde1c7f3309e3cd244959f63de82d50d59bd36d68f8c9fb135a5385ca24cdd7582263a9c8f386df6922c4f13a22881ed0056fa42f936edbb997c6c7f3ff5133a31f0b6b28959960e6e6c5ef6b5945ebef8c314f70b07d876a0b23182206c73f7f77cca12cf872e518776ca99c7ddb2d5cef3f48a78df63b0d8188317361b20123207152da522a3a8d57f0c60c1a82e54d57a7bffccc72ebef163ac4a4787c10766e3f45dc3849b9139222ecd3502e1af8f5fd82b3bb0bfcfae7e7c5568c5e3402236ed3205344233941e4fc3acc74d1665c1a3aa21ccd8c3304be3b2087b04d7435cdb8116fef6a8553709d00457bdeee17698266f4d35512b59b1a963ab023939482813591cdd97d98512173656f8b65160f20ad62708f7c996caae6e6addc60ec713df8c270e19ce01180753e4986147e8f4592efcd72ef3e0d57d4267a6bb2a1d17b86b4c244376e59133fae088dd352195990c59982e573f4a6fc1499055accae3f606d8e7111f14a172e04a5d3b8c8a3a277d8008ea2bce4c77ac6a6f7e9b5d5d10e9e1a2bc3dda9e93396f415a9db5418e5753d0fc989a2c4cac32e487643af4d69d8c68614e27e9fa5f44643abdf25b1f98a3b5fe5ee30d2ba675d3f5e6b96e9636f9d736eef936be0b9a1748a029fd6efcf0cf723140488cdde4df62c0a50dd845c75e7f791dc4f324814471db61e2fb3be130f27e64de924299b187e7e85cc1699ef1c7fc98164c2f48b93db4210174f2cb2e0b019e5ccc680e0fbe0a73a90d27be1eebc792b074d613762b67dc3e4481119e0e5bbe5b8673eb567d000aa9bf3221b3a5bc8fa5f05a77b43c5de1c365c25dcbf51ead41c984bd0d5772c2cb2fb6b397c935af0e337ad04161aa38dc9832b839c6080a894c719545316c50f321189be61230870b97d6935c3e9e481377fe6c704c2e34d0b31729c8965fd17f0b055eaac07eeeacc84edd08980124edc9b8596f7fddec42b25e392fedda231947b51028affe13c171362990c4d2cd3c107318151e3b731518efeef2bdde0a74539604f360f20f7ceb03d345395c492bc79d7428fd97db962f97e2bdf05e1fe6fbd198fbb044540879ec8ce962ce302ce296504e6acaa2b6a04f353dd0e5aa4355a7a3545ccdf917f7355703c6499e1d70d155071b27289807236c0f242c504c850bda30e04b6c96941123b57d42d2a1ee44428c116d06e61db222a44dcf96513506ab55ce65ed573aba657b14612915fb6439e185d5a1e01988fc9ee80bedc2d3699669cdb14cc1dd12055556261965f4bfb7629587b30bb87a00b544b801396d2097e2ee807c5d336349ddad4228c09eed57cb4368736e2e55a29527548049927d566b4c3c66eb63c41d1b6ee61757582ba273feeb44aa0f3a752742de43f427787050287839e51243750644f611f347d8d8159b36b66a422bc00f81ee1c247b5c3926925a906b26ff3dfd0c4f57ef48a502e3150a940360dc7ea93d95b0598321fc067098a069ae73fea086fb1cdd1ba844223b705c244142ba6d525576dbd8e5cb0e19bd52ea919350b4beee18bd9ddc25a7ccaf15fa3ac96c6d0cd2953d00db4de918aaa0c40f586b7ea01df0c9b685327cde2701761317b5dd1b261fe2f3de83a6c45587ec3a8089142c442fd7653688f12ba2adea0059ffde9402330ae92f66a843fda94e1d467b7bcf077021e8a1d73deefbd01a7127c635f2d51f2fc4536cf76ff9956755be87a1be57230d811885cfed83cf573b81d0ba7daca8edddddf351a29be71dfa8f3de43e9ccada89336573d8295ce75c3ecc3a07add26e2b98200325436f8962ad36c74a4b5ccf8e08ad339f2f14007be6965bbe60e77e4c63b679e4b2bea2468c6432c1bcaaae6a7cd5fcc39116cd47ee16dddbf5fc07565f3bc5d301c4d70c4693dbf4c0cfdb4b6ef9b645e03161c030d142206fc3921b77fd237703bf67d83b30cde7d9867d4cdc2f22b6c3fc4e9a84f00e52314ada3dbd3e8826ec7b76a46098d527b25e95101115891629302f590e8701c04e7e1e3755403aa7e9ab848c4b3cfcd7bb3cf093f511fe410bf3d7c83e190f3a9db4a896ccb35a31c349fc903fc466ac071efaa4d652a111b917fe4d0af955d5f8dc1c8cb9fc53b80dc87222fb36bdf699bc4fad7372403d2946552fd0d3596e0c58ba5be1cb1b22e7cd787eae45419a014afe0f8cf6471db2b302245dfb6d65331f95db2ea4b637931cb3543f999b303ff04a10f356bc78f8eda4f2b5990b7d6b58833e4c0f0acec4704e185b59f057108f569856362cc4bdf77a2d27cabf610770aa8999460ecae4ebad11e00198817048ed7b374f8e957b766f7fd7b1c2c4b457b29c7d8aa1942d739aae7b49bd9a1fd3391be98da8eea01d87e052b380d04508769b074224b94eb17e01333795deddb458d0d00dc9757e522451cdc4a1c98bb5098ee4841e1ce7aa2822bb318143ba53a47f7f6169007c4f1c74b36276bcad2321a03262e6639f666d47654d383dfd7f271dc4e6f34c7d4f0f1768117aad952e0d7039972ad7854234cb79ed0bd814e4a435b259059115ba0389fc2523485d3b5212fdf658463b393f3938259e76b2d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c34665acd4b1461b1296e10b4f67e6f42ca43e26383bfb928ef8aee972b7720ae6a887d133e182b963210d9162aea24ae3b8f75cfdd0a2ce8807284af9c5d772d034cc6bc9e1f1ae23a6f3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b1f12445caa932ede0b6225ce2764190f3271f0cdbe6c63071d905\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d406b7d2042c081f583f528b0c2e528ff426df1243559ff736b45cdcdecea6da46\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4a4ec45d626dc207b8ea0ebc0f4cb433fc1c11637e9638aebd72386612a5e62e7ebdf13136\"\n}\n],\n\"handshake_hash\": \"04075a7b63282abff8b7580a87c1f6149a3072166343f292206f9e822e3b4769a8aa86ff22809c9e097fda0c85b70ecdf0af223cc98b2b88e9734abe3374b740\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445aa9a2e07116b0d62a714be5da5ce91bb521a00e20329303347f9c484abb84eccc1eda7276b761b1726c25dd78413c5a04a0b96a67b259658b59a7f396da362c5b15c71b1d180a2514fc2caa6ed539ee7fb3142ed437209a692380d1cc69fea8de30953e0fe74d22\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d9d416d58379f5bc602decd8055f07e3248191a78dd08a70bec72233198c870cd66c741de57963d525ba46671d0a97cf565943d17a4f036aa310a68c1c76d49bc46a71a9b27ff209008544917d819db2becd05d0200923a3fa9ce849c743d064802504c638f206\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3e5c35a17383ba43e65d454ff5e19240a9d6bed63f870c9cf6672f86c8a3806784672c8e3b024d9f231e60d4def4685f33b41a9598f2fc46fb913979b93c01c7871baa0f7d5182b10759bf\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e7cefd470456e14e3b9a92b669ef5785db8ecb871e0b2dbb70c05c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"278e2343ada6e21e02d3823aa29dddc99ff81618d5e8f668062d61286d61495286\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a2b267a228f5ce148ddc5a51fd9e8b0cdbe44ceac3d066b55b42abf8712c176fecd4a08eb1\"\n}\n],\n\"handshake_hash\": \"588aeb3cdc9c1b54702e4e2ec6b00204c8322a4a37613be002dede6a72047c1d\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944904ddd0d215176f05f018bcfb45b27e689ea3a4bf5998e862ad6cc79c1e83510f63bed18bf1cf43ef70d046869f0dde47c031515fb4f3e9c1d2997e892088bb7c649d70e7c6726819064f4a7f26020c3491bc174cac08b5a441a8d80881cd2ab2bea1be40c94d5ee\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843be71ee9c19687c1db30da4ee2a10c962b984e90d03076d237f06daa82abc6c11dfbe9052f5dfa3b12c4c4ede4c28cb5b741de5da9be8f4155ddfcdc48652647a6b18851276f8483893425a85c5dc1dccb3f88eb738b17af8eac373212aad70b4072dc1db834e88\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ac998c65beb4c5ac2db8d248c2695469ff42c1a83485ab0a7447224d0cfdd98663f007f7617a839c851e1ec35ae1e9ca2cb98867106e603681ad94def18b65d9e42420652a16faa82ef6ef\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6ac130ead346493427de67f2bb26b0f16713bf59e9c9c1317b59a8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"57947fc39e69378d8d99429838bbe3e5614511ecac7073e432ab3b77e2117438ae\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4f9662350330a7ad07400a2ce882be41045d27365cf82b4a893742d74d664e00ee8b59d726\"\n}\n],\n\"handshake_hash\": \"c9f0fe45790632630f1416b3451d5124e78610d41899a3d75e8927148e26b16c0404fdbe7f16e1e394e26d018c52d8b773e92c458b112747e627644ebf182a73\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ef0777b0cc25557a4017d39d24348afa736dad3ee8a9480488b0bd7087e870bdaeec4f93475944f07ed43070616c560a12ab01bf37bbbf97790c7aad7e24811edab3aebc7782ed8213d0bc6668180817890b970179e8eecf557a0404e0100be3bce241d21cfcee76\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434cc21568118d82c29202d33909ce23e33e9703e5ee8cfc9b1c5991c5b09addd9fdefb7376559a1b2d3490399c2c00f75903de144fd2ecf8627786ce605670e1573bea9d81d51ce5856c61b184b2fa404c5128fbf431806754a96a3c5874f8f6eac05734a8bb307\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"db94c6c542137514ba68ff8560f9ee6218bd04a1b6bbea0e860af4018269fad89a7a8af441e1102aeb2b33ba9387e352e4efc5f2d083df4068c7b92c62d2ad1c33356de166e721bd787349\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9aeadc3c1a6936485a98e92fa8190ac554499c3d21263c35a6f784\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8ff85c741a2ed721f278d64a7f0cf9e1bf43d120df1c6399b31c4459ce557ebaa7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"322bb993d0586df51b0217f062005e016254bc479ddc089a027e70a50cf8b49829b512c72a\"\n}\n],\n\"handshake_hash\": \"bbba76073469de7a976a2cf5466ebe96049bf0a26a0529488e50d43e69fd04b7\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443b31b79e30089b8e99084d54a9bc5de597d2970c7051825f3e9483855e12d6f714f2754e9888438ca708f3096914ede8abf198742ef206ce99d230d174ce6ae5d41aef94423b6d4854f01b0ba8261f3615b88182c474574f7c3d68c7d7b024e0b55cab94d83dcf19\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434a5bd89623fe24450a3f46416ecfc912275fc03b15ab626adb5eb1cb4a1f162fa5aba395d9c0c35078d92d2aa3d41e9fb1a34a64c091f7d27bb65f08e25ebe6d5009f77a79afdbc97d64683f94b00b53dda0f04ff926ab50593d0a68d30aabb4252aa215ff04af\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ebb308fc648dbbee77083758a6f9a89e1c8e28ea4b0a98b32df5d3c08be0b5c62f6f0153db0ceb6f3d34d7c529e9d8ab6be1839c00f5fff20474c4116284aa379137fcc42225cefbcb3a6e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db6bedd7107c43ff458b3cb099b32af97d7dc74478c1bacb3a2bad\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"623e913b6ea829dddd31f6134e404be06cb168ded24bdb5db2496f9000ba6d57c0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a2f39fd68eb39ee8ac3bc82e1fc98986155a7fc8ede91c4adbca3c38e83e739775bc3e5998\"\n}\n],\n\"handshake_hash\": \"0157b0a04199ca69a668ae134ab8f17b5fa132a6dd22377794b8bfc8f68adad33a0b7f42c74e68a073f786efccc5fac2821a4c570c00d467220f40134b71299f\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449218292144bb0e8aa2f849641cf5b32b7bcbf6dea219138d978884f258186658bc05c665c0223474375bdbd4a4c0f1608c7f5f378269a57e0d8ec090acff7407d21759cf0d25fd942eed55912ce1733ad089674bfd765c883f13d12a3cbefaa32968e1459ed5da316d50ca0c720c542a99489a036e452a0ffa0de0767fc3a5c99c9e7ec0036dee01c422b3d820da7b1c3d7d1d583285e4e2bc510e3c75dc1e922d1a0d93f21e8209e5b214503bb75f98fedd25222868343abde937dbb77a7338527f821473a64385e2568e2108cd921293acadcfb77ed0c885685726a72d97974cbbbd5c56e1c6d23786a7d4ecc27af6773528a4c0dcccb30dce31b362a119343eb90a72c6e5ee95a3f51181a87a242090b514f7c31acd27d98756f778ff9c28d570b4706da2724c2b15e8a8ee78e437cf11e58aa5324cdd0e6eddcc292474b1e3a618bb4dcedb6af4a62cbdd0e194f800b971e8a614bd6905be8a7ef24c864d6e9f21bf26ee25709ab032d92ee6625c09e09c93467efd1a80e29e5c4b80373d042c3a8ccbf023525d86090a70b54e46ddedf7a6a17924440d9eea310db7c616f002b0c5f9a7ed799a14532d32acfae07645a09b61f05935d5a099371d4f6c71266d1e978a9e19517962433902594e05b480e1a4f54322afd535db9c8056ec405b1779cb5dda93d1fe58aea3174739a2d2e70f5838f7974a21fafb96495668caf92b548bcc2e55f4a91185f6c77cb40428a01f44a17a2a91cd4f110a890c7a0ac6d4cf10220ef759048421be3680e3b409d8b3b15698b10f01f3f79f0aeefcb363428b03e4394222d2ae5bdc2b3d1cd25407ec84360192701789e1685f3e514cadf9c417afb7c9b4cfcc43996e5b6d8071c0382d14506674bbb069a44a9c5e80563d5b91e2886b03ee66143e7d9d3753246955e894ff8134a457aac54a79aa3fa59bf30ad799c4cc8df65231c1f65681498e826cdc19ab4916c5c1c25e5dc54bc6818a40fbe5a9e932c9946ea28d7ffd48b8dcfd37b2ce3d63e8455866a72288bc3f926b58f010a27b12ab079acd2841b976d3f8af9c4de731ce242a455812952949e4ee896c7f1126b73ede8f37116364336ebc3a4f57a7271eebea8741293760235943e505741e58be14d9c37be0962669dc1b778fbc25dac261fb7390635620f4862ba4e5b314ec91fb30c779592bdb9c68e274037f402cb327db25bf13739fd5aa109aa78d2ceb9e1efddb082dba4a8e7bce0eb533840e9a2cab6385838c18261b510f16b7772c7949b5934b69be81258c25d685072876027732f461fbf73d693709a1dd62a6c52e33319115967774b0ccaeb5611b6e40ba84d255e5b37cfa83b0e3e9ba371a0aface3e7d823cb8c55353e06d23a2e9cf3c46ac77906e44171cce7b1b5edb3da670abca6cee3915ce271442cfc921df4e1d1bba1643d7fc5b8c4c717ca30961a770b11461a89e71ae02b854cc6847c324f32911127e0c715f73e5751e9e526f2b67b41e46ff2084d45ea0f1f370a974ea6e55bd8809eb5ead96c2ec2275c50fb0fbab3d0c728150149de582f3be7a6b603cedd5af2ee0235f7ffe1030ca869685fe0d0e18a0c7025ee1214c4968994f77ad290c8b10fffc114e12124dec27b23c1337e7afd651677297e74fb66b4834772cf57a14cde3c50b8f34b99bf6e1445766e3876a4e0ea050c84cafe756fbf1fe0cdbe26fbd4af95319c8fe32593f76b73c710ded58ba03f114fbfcee1cc5bbb3fa3946d5f9c0dc52b245fa1a73d5b1f8276046ccc2ad5e5903cd815e8a8fa112c132a3520e8941f3de7c868fdae6cb687c62c4c73a0f5aadfb34fe66ba2b962cc6f29d43a3d3fc1932d75ceb95dc9dcbc3477f6e467607f356b6d2bd5905c007bd09f7dbea12c71561d57d6f4a874c3f55ca8a108328c25c2d19547d24edf51fc243cb115306e02432f460f333dff4ad89b70f05d6b0ae02950fb10887e7f96e37faffdc87abc080bcc3973bc63b0a35699b46f26cc41434e43b09e67d969f49946e916e6ce0861f0b71e41b06cbb8aef3488ecd34bdbf95e3e73f6a043720fa941f7f0daf3bc05b73fce1321c01bb574cbce65791b69ca4c01ab791f61626dfe842c053918bfb55e60bee38bafbd167a9b8b9ab7576f036958bc1697a4d22ca31569a371771331e7667e56aa3151f803e03522f7e22861b7c07838359967e40af920b4fad2dcf62648d50432d64bbf709002ac2523c29fc34efb3ab2d6a82315373650912ebf7417682d07945d0c953fe3bb18d0e00b1d59803be85dcb9651b59cb484f325fef373abc1a8667444636c02cb6d0c5dcdc151f29c4b05114f976d8bf8e2f648ab63f59016f60093dfc92c13db854e796dfe46967f825b21d006f174dfecb3ca5a55d8ffb1ed0bfb5eb8a2584914040756f6da5f1f8adf8d0aea717b68443d2e24fac1b603baa6cd2205f7c102d9b8fdb6fb1b36dbef3615558cbba05c52faccbc1494c509200b422fa95262ecdd7e43c8c80e0256f7503d71d406b16cb528f9606d6212587a3fe485a7ce23ac6db7689943a7367721f9f17d498142f6eecc8cd0f94434fb22faf19148bda59f5942c5ebca6020ff6f2bb8f0d08d28e0d36f39ae2c47925ac5ab11a56a5b2bbe26f92607d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843af544a36b53d8ea8e1a4d3adf01e50b861cb0e1315507ec76405b561b14a79161a503c5843383c63527c34d0060b9af8dd877f8a653f193c4c2184572e1df5965e40a97cde4f758145e31e917caba5496bf929253ed1f74436a11bf9f20d797f4ffcff79081bd917f61a932663fa2b812177dfb412529cc8fc8d775525767a1febcb91040adfb2731223d66ed42868458821566a724de8f3ab6552b92e2fa20cd84ca8c8bd15b1100525fd8692d4c95d78095e58c09339beb291766f20b20b3ac2cca86e5918f42e853f82d87b3681a489f8f125da07b126bfb9886e9c13be04431da07aa9f83b7a7c893f7bc34d2a86fad797e4c5d7e26ff224df4f575e13cc07544912e98277fe64bcecdfa9b556a6231e335ecb90721082cf8b437c7f1e6305035f1188c691d25417c36228ac3662e9ba5446fef383a288dbc2bb092cca6c2dd71a95a92cb40835da1dad046f8c4de04bd00fa2eb21d1f7c9913f2d9be1044c9686ec9eccbfebb550f04297db0c6b6db44ae66607cdacea5c405135e45709fa2af8799c8a72477f6bcce6fb0973f5e6d4e7c1814518430bd44c66e79b1b04ca6c7fa7205884cfbe77ecd72d4314ca0286a6bcb0fd150ed5accfe27c1f2da4d4b0cbdca53035912a7973c8a4f7f7f162a4c25bd39de7a2551006c20cb55856661d5a78ef60678f4972f6300137c3ce99e14ece52de684f5cf0b0810b9eef0c6327d255df899b69c2dadb9d5553a01f3b82a0e53d4c3bbf68c6849c1828bcb3d6f2420b2b11a2e936bd65ea87dfb2f2e9e47474c5ce1257e3e2c8ce4c244825f7bb9a6bc599090d6b436fbe7b8b5c2c629535d2f0b13a4388a7e41aee1abb6ebd1df826e0fc0f6e0c362c3e564e17f68b7b7b5312387b852174387c3bb8417aa7d63932ead43d01fc0810a3b3d6980f1a6edd10d1579e7c1e3124098fd1342cb920fe34babf268373c6e73137109b0218346ee8c34abbc35bdefa04fc66c6f1b0fcbf2edbfd09e0dfcef1e53fda85a4656cbe73469a40968f8f308126f93f913cc503b7c190a01653d332c8ad90f19ebfa46678f9d553b10c97ba8fb2d2f9e950655a4c17f578ecec2666114e397448c190adad29701794d065f9d9b57c9bc35acd11ead519e1bf97b01af871fa3bd99af812cb75d08e71ca0029269c278d4141770a238d57932e2cee93e46ce03f7e22ff419b3ccc563e8bb30a88439aa435fac9643423412c35cf3e2dcd2cb5e614dcf7ef4172099e0448f9ab0a898584386ad40c94c55f2430f56bcc53202373e6f2af115150d4bcd19b2642d4f8407235326f1b3b368657b28499b7669a24a832cb75b18062aff0014b6e2685af9caecac3abcd301f66566692291ca16a0abe4ce4a7ce25bb704830d70dab8c60b58329dac70affeb36fc48cfe8f14839e2ae4e3e6694d9b35b4bb19e56586a51d4f4ff864123c93143a5d2dab57adfe0fa1dfe390f1af5535c96451d9cb03ac7bd26cd82b8542bd183724931cee8792c3e63741b78bc2216370965ee9316ee464184e0284bcf30bfebfb0b2a766d59f0614c65068a3826851c74a89e7b93b159814a51586550a2a87887d2f215e41e090e631f81c98c2c1d0ba98f442b8c088010758d0218c2bab01e49a2ca31cb42cdb971d3463286324e703ec6121df7e3662b39c1adc13ef44e975758c0f7936b04bb59b2c12861f05a0b82c4f3052933bc3b7431a480d00bd38b02e0a45b608d72495d9c25f8258c2092ca21d23c405cc3355cf8a498f086a9d27750a0eed1b299341d84f61e5bea3d61adc0a0a5cd9831a0584d2898fe93a424032b310ff8d86e8692dac92c5d0afce1050a27dc1cc103baada0424cad8a705650019087608c06b767525c0f02066101398e204350ff80fea57695f39ec7dd6ea40eeabbea41742c53e98c867722675195884f90ff0065d7aa72b9c99006b3d5bc99a2ebae2af44e8a44c2b860d2b124c68aac031dd7af8d585ea1baf49cb45e03c4c0ded26024878696c707cbd5c05547340437217abf1c49cdf675b7c63aaa5106dcdcef11d4f76d640a76d4eeb2b357a6745a098a6c6a2d7e6c5932c73c721a9f5bdaa1ccb22dc355f7705771c148543f1026ee9241f76006681ce6cdf2822ae92f8043c4d63115035227a338315825ae2cf8d9ba59e6759e05789477ea2ecbe6130aaab74a448e6940ac010c0a83c7d7c0766f4542f2ed94e276748888ac252482a8e51f3bff302f7731c0be746e57a62731914b4a69daf3d0d28292090ff5212ec38caa0a12e6b2d7ff7ae1d3dd7310e9893e221380782869fbb2031c56a49177aa8d69c4777b2b1ced7d8575cc9adde4c95014b41cd180b445a10e3d559fda071389c23a36233bd811709f0606f59e7cc66842c465aba67f1edd8523bcb0e487b362674092788b99aefec0180f789f2cfb179abfc213b349422dff7964c7ea310329682421f54c72ebf6376b954d7d5ff1d74c61b8876f8f244676d9082b7caae4f5c65230ff01304667b337cadb339aaeb04f026ff901851a07bdd0e971fdaa41e0eae7b9aa6bb3e9e6fa3f7e2567333c9edd1e3f054bb35aa2f3386f1b51344e91b9e78961dc36426a1cbc008fee5f03654059763387a6a5e1059552841735c21285a7d203d796c936549c232e5f393a0de77984b7fa0e50894c3fb4b6970e567dac4157b88565efed0614364fc28bab72fbc3f8f93f7fc12c2ad66f9e42f3167693c389cf357234663eb7cc62d4d6b02d860b5f7e48861573ba986fb676dcdcef950d460e5d6fef2f3120bfb845ec99c2096d8e749b8faef3bfc302de634be45e8eb977ec5088b379d83538104255ca63065ea55b81c511feeeb6552e47687ee5655725430f6a1c9da2827891226c70479d0fa3d9b45b4d1e125ac866c013724ce155501766008563e412615d86459ee2eb2a9d201412ef43108aed56c7a1176aa224ed47\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aee16c9ae5d6e50aa03388c12c8517ad966b63f70641c9f1e46c90494828fcb3475f654e2bb9fe3148716f92e8886d8bf2f02e521eeb166e19b90cddac079319d1417c9bc7b22e2a2edcc1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c0aec7700f5c75dbcdb8f56d6d0d0ec8d8e162c4ca127bb7c72741\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c15eb6a8e102ea746ce5ee2efc7bb767df8e30869641c879ab5fae5db7c7672270\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"10f6c4e68eb4764cf64c751dc8b8a05b4e2b86fab74e464c728222a8088ef4c963c11add69\"\n}\n],\n\"handshake_hash\": \"81387b35852ffa8284de01f82d29595ea799df3846b9973d7dbfd0eb5c96b7de\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449af99a32dc1b882523a7c16080e7fc4bbde46d34a520f2d1ee4d3650a060a1a9e66fc233b6c15a7b65bc80cd49a3df332d3a3a9fa2df5e814b38df6800851fc3a2e36217fc413f13b2f36121b4d5f4a61b66c4736fce9d274ea2c9a213ad8ae5b6a45e33babc7a0fbd4a93c8051f243dd4faf8e7fd9c63ab5e993372267e830a59365c3e1d611a39a231938a9fe93193140aaa18af1922668f8c8c02825570c7e3e9dd386e53a346892c11562062018c267076455b5616a8d375d7b9d15ca4ceeb1286450784363f753555610dc84993ed580cc0c99d3d34e7ce4c06abe7a2055a9239d0cc7b7ec7eb63ae20ebf19f62b881237ebef4302fad7e685ce0f7f651924953d53bb252892671292e388c2ad931e57fd86dd90ebc88c8c7bf579d8e061f14b1c06ea733ee686230cb4ccf10b92dd1ecad61b139f756753f41b30c5e576dba05913ce286ab10a6c69aebe7fdcaa90e727a34154b58ca1c6114e77f677e4324e62b9bd58a8e442337a7a61917c83b03244b46f509ae96c13e30d40e7aa7c5ca93407fc1ac78b0acbdd21a68601e0dcecb456779da6d511f7d1ed9b007158ed096de0b124d3e09cca9eda43304b2195fa3d962e5e0f7fe90263d4ac0eeff2dc926739b415dae6281bd57f21988a27436ceabb48c1efbf87cf742057360ff96bc96c2eb19b85690df1a66c50fb71ea7333dae93d02756cbdd854136cc072ab8a75ed1de6e876a7f97490d23dfec646671a53bd59c4d3cced2d7dd4ff5477a43eda26ba7c40bf39026cc25c805861e822614974192d18bb3c358d544902c9e4607bd2895df537c9ad5725850665940eb30d8b09d2ddfc35754dbadc3ae1f37a4b46b493cf0f23636879eb300fccbdf469caf0161a1663839d79a8e117f2952c91bf0410cc496109c7b4712a8946118fa28d2f704d8e75cea58b9e13e22f4dfa95c82b1543eaff541d46fbb1d24dadb74f3bbc535e5bf6535fad282074952078345cb8bbfed54634e405631f5e8c2b44f2129a741d1a7658b3cd4c261481cb9dacb2ce3e93ac20c4097a31c2a97c0d8b0e112a5550035f1c2df9b4cadbccac7436daddd347d8116befb6185b883429a4f98a896e4ec3ad615034e7d47af2082954032ffe483a9c65a231fa1d409b3c351c4ebe3aa68abf682210b8221f84db25a276b5af5ad3b3d00a0a1f8cbf3bd05ab9772b053cc9fc734bc0826ff09ee74a35d38c99f527452827ebecd1e74ca4173b7468ce19ffc977833d40749bc2577247f075866ab1ad9359c7aed625eaeaf5948f041449184c4d6c83032a034ca93746bb0e776750df7a7dfb72822a45ce733ef743130bccd2be815d6a06d7a8228dabe11f9cfc1bbc981613a47cbe96ee349440b93d8f0d72e0340cfe8710fc7a42cc67ccf0e09cfde289c848472dcdb251487706d5ac5887c3791b77d2ad91eba99c1be15ff1a1d356e12ef066ba07fb2f475ac9d16102675147e8c38b03dbd0a366b0aa34def6cc17b4fae2d199e38e4bac0271027ab4cf2713ea5df1a556f9fa66bbdf32f92f85be6a0f5050c3984b5baa07f752ecb31ac589aa346d48fb4c6f9f7a3395cbe36178b1dee18bfabeeb892229f340e793164cdd156bbd8e80fe7309034fc100677d9ca373e9a1328b8a7cb73598573d3097665be9ebc3ae35c8f9d02126c5f4badaa3b040833d6518d4aca27485ccd4b61a1bdbbca85ce020c8c4618071e463105e4b623a62818ce8b2c90ccc5c47522c91325b484c1513824e6ffff52398da7682eca243f9e882fe665db2e9fb6bce8761fbb6b01e2ca7d1b5ccfec694a832e921a27143ba642d5ee4b896a1d7834eee5511474a2fa1b2ed96773782d1a5642808a63c153b398d2d71bf4ea09f5a6f89a217e47cbbd82fb5db15f6cc3eaf6ee739480e53f6bd0a0e6f3ff7a9e263648af2344e4faa2e18f9df9d1d2ad6f292f73a4b07fa87be530a50a78be1e9bff910f4e01439e55395b23ddf615836e7668e4d50cfa4d0aaa6c05b194fb0ca920ceae9eee0f1ca42095281c45e59b602677b583904fd0720f446e4576fde80b769744297e137481e82f985c4820b3a622193bf1b64ac7f6e36b53b2836189a653dbad64dfd5187b52d1edaed6c7af432be8718c429c7067da0c25f307b3df700a21c202ed10a99c32763f8aff488ffefff36dbaa2799eaa952cee2631297fbadcb28df0bbdc63d26dc826f526c285dea1f889c1872b10c59c2b468a2511c14eaac5f2a250d41d436cbf74539c90875b480f89941d82685242156944627689d80da1bddaf6e56a65c0f90e5ccd184919a005964b09b458ce2dc21913a231b769db1eb519cd812d8e4417d70b79281e6c9758d5d42cb22adf3df128f37ab6ad20f06375f1e1e877c0f4a59256771b8189acdc71bc1442db720c8f8d03bb16ab49d8e3560c044cf0c311026c459fcc1ae602420e3306247d9c616329892bf677d2f690744de89fd5563309ec191e8d528d2d0b6750278a5113fd05ed1447f24e054d12be4eb69776c2c68d7df0163cf1427ddb1a1a05ddafaa1c97b0a2fbf817994b443a0f08188b3dfe6a631caa80caed4ee38b49bb8f7bf5b63ee6b281d732946bbbbe137ba3dc5f42b0b6f497635f4ba6aa37cceea75e9446cae1e1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884310b2e0b413b93691e29c8b22dbf61bd1a6a3349c3a549a02a4da54244b4d5e5b05998b57dec76402c96ca6ae5f12baef83f585f96b56e8c423794f1b02898b9bee7e75109eb3b4d6dfd7bd42e16d4face64adb4b91f2de076496334df6a2a2d5f412f8d1789704ab0364a6a45f4b10ec2e22f987474f7f591bd42f1cc07ac7272aaba90dc2e4d07874179f0d5cea31b7818e6c7664a651d0b7779fbca4b67474db8c9e50fb14ff912ffe422c7ef7ebfe0eaad47b91e233199b9e5825baf2bf1f331746f57cdd9bcdf9651d23f507869a50e2f75077b9bbe638fc7e289388a7f0ffdcb850d209839b921ddfdc433bc5c3cc502120fa6f0d0ca1e0d41cf437c9bf4e9f51457c12cfae018622fe868b94386ca2eb0119a762a7235e72efb071f2e18a38e015a18654e71ad3f348aaf5769f8879ad427a35266ebdea01cd2ce942e497e8f623b5b89edf043bac20c35e03391127755d8b132dedc39141035b81fcf1b38276c34c175bc1a3e69a8148276c75c05755d8f0ca59d4f5c314800b4d9d5ce58a0a4f94ccf39e3e5aeb69ce792a84ad7ffc887bc81f5b6cea8e503ab1bdb82f65fc3d6e770b5777565d6edce1a7b2a164c814da2d4330db299b855bf5514cb2e332d23c9d76417c707d8651e509ab0130c25094d181e7f2f241a13cef8fa6b9edd2d30ba1d4fcf12b842baa837d8f4f2740e67be6e248a8668949dc287652423690242d705270bb70ca04ecf5e338a851834ae9f603d3fbadc071b0effea629df69cde8f33b55dbb2ab25e97a29002ecb236c3f7e64ad5e12cfcd34a4488d1dee2b810a24b4105edf7379194d046e232474018706ddab67e6e8782dda9168003ecf151d8ce02f7e137fdc9a3e08e44289f9f53eca02967f923e513d4e763b5e2e25220708ee7f1e2489c58baf0c97da4a5dc0f79f6182ae90a6ebd8a85bc22413740686d827857506993a52de8490e649a827f54033860770d8751c7a8c697148a44447daa7118509be8ef22d724e641ed0c9a5a22e9849eeea0cc378c96c97c73c5181fe868e7238b51e2bce712fa8cb20d6abc3b5b4e1a4f1cfc8418e177b82164f1c807c7af57f236ff518dfd44ff5e7dffcc7d7715320348a144c157e76c7f0325b8b24a64dcd6d6077d640a4f3fcc9a77bb1faee79476de462ea07ef5a100bf4cd268ef78ed44fed1abfd54cd79dba1a157bb893a93c5ce660a41785f051e502b9c29ba31590804c4ef33cc55781168b974287cfa221efcfbdfc37d523301e6eb3b49a51829ce465f7c2fbd01134e01f65f5b55253cf7aecad857ded796f1b02f1fc2f292d784aa1381a0a3aa9e1f5a3f689aaa622079ca61d1c743766349dccc0fc26ad6ef8e68abd614118ff36ab3793ecc33aa5f635648a887960b8c05e6ed7d4c368751862fdf8458cf61e4e07efc9a1b58c02eee2b78ab33ae4ca15f948cd5db4682622966c7fb53fe60b8a58199e13fee5817f759f4364edbff6ed8e8eeee7c5cf7e52d548b33039265f073e3e2b9368f66a1a033a1220a3037153cece346c21eaad767df0675fa2f6698473dd1e712e62eb798ce59d26563b37f7d7b51fde42540b4f8ad14e37ee0e4fdd80d8974aa3c6852fd0e127874405fbefcf80d2f0fe7cf5f741495444f9c37481d8433eeba4e3cfdfa76ae32c2273157cb2f78285a2544e9b5edab0a8c9b2815c2cd1f3a763f271aea1d753ea0a7e0dea1290340f354e5e8c08ed56e2e92a08a70c53446422ed32e71eda1da7b722ea225167879989a452b8b03c3991647ad87c810c54d5545aea9ed5ac2f29fac4831060b3a54b9c0a77e25e64fbc1fa7392f7eb5c9ce70bae22d5e2c5497a5fb389244c83121d259d1b7100b8fcae5cdb84b5e236c905a7f27ee6a0a15098ca9af47bd6741997b40b8035d10fdf87642100081f756a2e4d91491efc910cf5751453fc2b88fad940a33422b3db241be68e94d642bd651e315fa84b803ca669b6667d27a63fcdbd62ad52dd8200b8dfab9fbb00cfea6c3bbc68aa5c508a177c2ac191fe1161d95f236ab73cff7daab0999d8724e46474a7a4b4910cede76a94d5fe2c70de1c551527f14ecc0ff7fbf68d0780d445d30a006269abeeea32585f9e4c2c4477a94cadc3749d47f4e27bcedfe0723d9f59822185d2c0ab249e4ed78f2330c088f7e98f6f70ec2cbf3aabeb2da2281ed6146e8f18efe69889e6e0b5e2142bed73a6241cf3a76edb0d549fa99d155555953b533ec33a9371802b945ea75d4db6e97504a6d7a7b04d7488f54f4537e59b9912d30d43f578020e65ea9ddf0c8849eb707d0528c5dd0e976111cb5a95ac960e818568b6df43afbe2fcd375a548902b6fd230644d19c668cd9552d9b1c1bc46354e7cd31904b548a3f80a58de73d87035c50961e04832527d4460b27732b71168e1ee67ac99d132b2f8f7224dab2099a46c48e800c0b15a29f2dce8b2cf88e5c3f9fc329d31329b0c2fdd1bf128b9c67966b2c735a0442bc6d94d08a8fd9be9aefe67710d9350e26064c9bb24b37f8c23f3bf826571470a7c50936951d2a61619667a0b81d9545c2336f46dc1a9e9eaadec257ca97989b27ca938bfea249ebc692e326befda51b84bfb873b1ae5f0e677e23d4729f7dfce4dc9aa4ae013d600d9aa11a08ab940ea0119efdbae3621749372c2ff2e882448ed00c8a645b11aacf00e9c3f3f1fa4b2ee793813ed006e14cfde293ee1e7006d1917630aea3d27bc5e7dc7f5a04ac1aa74f8a636b0cc77edcf256eeb5aa636af5e66f5ccb5ee7910a728bc79278d1450111e74d1b96f9c20daf37798e22b816446e622af9e92e1be20c1ce246df3e7c97a65e8f4521d03a3ec81f37d0b9399d9e9d4d6e528a6a3393009275d46adc48a653dc1d94f634789b1fdfd4011c16484bccce899c35e267c16f8792d584edddf4e35c30cdeac6e6225d6034fb67ed349dcd2ecd4b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fe8a4e3724f7b2ad6c5a2034dd7268d890212f3776a8aa4cf63cf7c81b621369679864a6f2f713cf2fb6fd0d9e4dd6cae1137ed7b3464a4c454c0243c3ab815275902b53bff71666fa408c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8512f7eca59dafe0aa1f683a32429b021ca6132890b3cb7efd8672\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"50dd983e251acd4de6b3f0424fbf421523b174e3182fb1f15ece786c3c0e701289\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"098abcd3054e699a5da8d8652b3f214f691eb0ea62c5570e3a08887a09d901c4b220a4fa3e\"\n}\n],\n\"handshake_hash\": \"9bc26be312763a42b44b89e017f9a0c7844d5f2e3f65ee8051f6bc417cf1a557ad158f12f4e9bdcadb5d83e2eeb3dd453350c581f15322660cab4b25e4157b67\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794486f7d421d8ba2f8eeff251b435fa6fbbdc6a09549b4335fbaabe0e6f9ad0b4c5d1026b9eca7d7b6155673b822daf90aa9f2da507d2287de8ef779b84d440a5781b9b0c2135d5bbeb8495b660b303fb5969b4ebd90ecd6b572fbc53625b4a33523fd2db00e2b6822f7e5c86ea2e75294569a2f21a38269eb259ce65dd14af5d5472cdccb73de06923ad5bcb6b45adcaad27bbfb165c98ec4ebd4a41c3832e877a5c0bc8e7d45160a522883cae94c391d75351ebf9ab35804c8b7cd83181a6f73f00c14d8374f6c60c8708142c427f3a41667e67924ca5217533af7643495450583d2a34ee02d211195b63db368f99c35ad666dfd6312446836dce611ab2345148db378fa406d3ac730dbb9840ed5ef5f2f9002b52c487ea22e420327670832e9399c45fcfcdb48571ddcb5e43e5e843a69606827563a2f9b5b55e0b0fe340777ce489de9ea07d8ea6fc3869af3f1fdbf7b0b0d6119c461c10527d4239169510af27d7af99b5e5e2f43f82cb023e7cf8af1903834d5de6d0655670e69c2bd7decaf27ca77e0ba00b2396da6a70f4b4ad83d4cf59e57798c27010be31095702e4e5db78a91a31cbb51ed7747d43c2e77d16137ff4f13c3fc515d022e8bfb1da111f74543788070cca4d2a27f733a65f088f1483462b01eb0de5a38b4b7d95c632c00b61f0693514c4501d1236a764ed4d7b88b3467f3c13ac94e6a79792132aaafbbb8f487c47114fdaf84d43a00f3750709ed2406f213e9c185c29de1b21b55596060baa710c9ab4123c73fb428aadd5c844a568b5261774eac4e29353d9e24a5e91687d7fc7848ca80b1f90dc3e475ba465e0000805b8a327f2d46401efc9b229d54841ff21e0f998e229a757a8ba607d6d3e1395adb0f8a3e0ec548d127ad6534b208d644c9f44c049f7dba0a073d183152182c8ee26ed4eee91293d6de6d49ee6bbdec65e4182728d147241647f04af450a52be5fc089a1ab7dcd9fe0314f95e2a47f2bc1032ea127b29dbf0abde8c48cf7ae035c43e680ae59f339a1c6d7d4ad2d5f268f2ab3801a28cef2fadbeeaa2cf854586f9d7b0f37ff7d9fbf087c4cb603387a5b51e916b96c61ecf0e3725d1cbad83906674201a797dbe54372b32b766ff4e6268a26cc7d44abdd87f7744a1d1a37cd5c6b3a47c2a7beb9ddc6b224cb238a1f0c005575e93166535464afa92d7f0dcc1cf0bb6a9d75ff576091d5c0938eb7765f40d2cf4210acbab15fbae343159366a31fe9a3c501a912fff0f167ae03d7147c373df5fe57506df87a8e1a15d6e459cb49d038df45137eebda614fec874da69c181039801721469efbfd4bf46940ee34d7af7b01fc00a927a89cb564c00d683a7e54c0984aa95fb2f7d07fbe5a19fe2ee61d2dad7e4ed18932e4bfd9284674c9d96d9c09bc190129f3a57dd09c915de986fc278f47cfd659a9887e8a1de23b92a364bc88b7bff11e61f340d4898841ac0dafd050ede14cccc0830534d0c7c04f49c8e7ba5b21720045ef89304160d8bcde81468988652c7a32e00c544f45061cf088df32ffc49d27e4533164449a18cc48020ca4147ba70aaae32d2b5db24f88691a51f10eadf7536b55e413ea908871680df9909a726b4a6b3a8866f74fc03410840277f7ee0736e1d048bda00a8cd2d30b6b49cf26fa550f7a3960a1a4e47229db96afd965dbf4a426de72d106e50dedda06152d070ec810c5700993777ea6a0b320f46be28c1ea75c3b75797dd89043487a598bcdb36b2c94450ffeee8ab15f384c284f677326619f58a90304816412d4b85704a0367b321388bc959a03d2fea09318bd158320e6d1e027a34b63dfc1421afe31b32d5169a57c43c9678dd22f4b29c5c4b3248f759cd3ea9df6080e49adf7146a435f1815f627c7ea8b56740bb88a5a852584e12c0aa05956dc64c3ccc8df322f25b2d3f5d3d073f6ce08d19b3fdd2b585bb3a34bcb92ba7de917d3d2d9e5a6cf1902280be744d0e70a9aecad5a0758b5e49e41aa1bcb52011e5ea52839d48fa5d7db40bbf2508f74ad51d460d5d2e5d3b3a7f80b85485d7bbdf3655784898da731cb45cb1d00fc88b91be43c75b5bf5ef011ebab4f5d3cbe8df980ce77d6650ec5e8d3eb87726854dfdc517306f4fa56551340459ee50838fb25294f7d9fa7b78de33d38a997df3d0f7ad72adb465bd37d535213f9b87225f5d7836c0d44a6afc3ca346413ca82bff26140a6a1fc1b8d07cf97b0c835666346fca147bd36fc8fd302f6f613d1528b6afcf3d3a9f9f99c21e2be452e11d9185b072d850a4da2413cb2e2598e70094d886afaa9a046b0dbe173c635f570a4752e522b58845928a3279f0526bc5219c8fb1c46e319d8346db9bcf2e44238d5b6ba2fb515bac280ce5015b93bdada171982998c6f4532d5fff2dbe597c34c7468544139df77df99275f5244601b6edd2f0643afbf05a5b54479ad598ce2872355ab799ee853a1d3f020366ef1bc36e6b450f68dc10013116b4455ac3acdb7743fb03b73f9922690b015ed1798c95d6e619c588fb6642f442b31aeac6b8252df58ef7f722ba722b39944b92009dd31106823dad98d468404c7a38c9ace7ddd2f69b91dba4af0fcc375427d52783d3af650aebdf057ee105f2364f0f6ecbe80\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843032c4d7e0e6ce46f35e91a8c14855a21d12477c2ba131fbeef219836a20c4f461ea88a1d4ead9202eb50542e7254d5e2d4137f60ad7d0e5589c0033b51337bc84efc3dc698763f57be121f1e4f4656b35d56ef734c3256d6ca52d92f9836de596c6abf96e39bd4128768e6784a8448d9999ed113ff5c1032d40efa36ad02e097d2b4a71a23edc00d1d2ca98d041a9eb120808ca8b0016ac986f3bf31a7d0aacc9ef1121a8bc748e060665b36addb30b8cf8b364c1b360ce10cd869c63d49fea456d24f810b9edbe5841abfc40f80ba1bdc2737f1b50505501e095dbd23c9a3b8ab0a314d00225b5e11246f0a8a4a96322dd8c3ac87945c7b70d20eb3a9b068a4b691b5222ffd1969671472fb00dc064ab3e0d7981b01e8109c4085eb0640f3fedd93be0342b72e67970d242d8e742b4b91fce3ce42d08657c528088c93edf08a2b597dc67c8498da15b3383425a175629aade9895926069b69acb45862edde3a9a1716e92a5bcb518d8dd96eef6b079574fcfe437a6da10f131d0daf0229413a4652b2adba0397fc19073584b6936d3de3c4c519fe3d897424a3f8ed12177d5bb310b0e7ad7bb81e4cfb16bca4420418af5f061576fb151ccc155a57b7fd27ecdee8dee9985fc3e4ffe36aa251b6a75e29ee5b2a44c3dadf92959babd240dc736669a1ae4e1df5789ebabd6379153330b9f4285ab083b5f1cbb37cedb98e87fe7b10e80eeeaf1d8852e9eeddc545b83d87637c1175b89a4fca082217a67d87f6f48377a7ab5e4661c7bbd700a76c4d50ffce341bbda9d5ba039d5fe052daf53907b611c6a4b29b67b2d8a56b76d859fa2807648bbd57de0c2c785410d19017e7232b1d8607a02d2a5c871b46ec3156eed400b039e5d936aeeeacf1bc81768ec6dd5cf4e523cb941d46299bdfe3195e290fe1fa6decde0a7db82fcba4f2035bdd18c37ba12baae29f22429479f5f65646e1cfbf6d70dd5f698a6e111c9d907a28847b5ebf356401665bb38f7fcdc55906cef5997a023ffb63c1fab6a9901d9e7fc1d2b821281f1455fe337c6a64be9bfcb231b6f6ae8c27a9d9d1b657fda1645c63b65cfd2004b122bd34f326eb69d03a2c7ffd4158192b5dfd61b1b1b3a4f94fdbd06535d8ce9a0a1924d5f951f71c378ed37f4c4e0f648558231a684ca0a3304df594fe4b70497ca24ef7ee5908ba9300da1a46102e963096d5fb57220122efb08728c9764250663c97c07a21e752fa3d3b6d8704f444bfa3c0a2465e3e9a57b48ba7896d3f6e5edd584af46eb0b4ec647195470a040623474769317db04c118397fb03767b7ae53750ceb093ab2c7794871a3fbf29000e2e76fd2d8a67e9e401158b8923d2a81cd05d419c20d12ec894166f6f0cc7181289adee14bec8e2b773e7612e222379495fb69e116d9019f02be7ef53f5469572cbce874d6e7e0823e1469197c762a650934e547cc7a9b9a1e4d2b3f75d39051a8f2d3ce77848b0a8b15f8a620f6e211807ff26f611cc42399eef1c3d9e99fa6f06bc583e7a0e23dcef1afd3a720566cfb9a44904fa2d9207188b4701e23b8cb2796ed9670e26354c9d47f090d9e3f85375cba3ca23d62e6ecd94a8bf4cdb3d7760f525d94a477eabe1bda5d0a007830bf3b10dc92a9637855ed20044a44ff3f67e1c315bb2b3e9a07daa5d8889bc7c390caf73fa8a02f31f6e348bbb90711bc049b9b3346c7b7f53911b54c27ddd77860803fca671428c3e9f5b2e497517730a276246a584412fdc3a6e70cf4711d35fd3842d5e5d28b82a57bb1ff0dc3bdea43213f4342a11d462a76e0d0212f18fe2bb7faa9f679de227ee9fcf031b29adca7c7d65b4ec9143631f73fc3d60583c56b1ba0143dba9cf8da77c6f8926b74d783b7b279c53d5b21a1ddffba8a757c78ac6ea13bd70f3262bcc3667f837d5c8989006245b327dbd68161b13f62b1e649ca983287ffad2d794beb6134c23725467fe3a548b337a3bb1e22298802534eb53d84577986f1a80ca26d95f6f3596b76a8d52f9bfe6346ec25c63afa1ff190d1f690b8329d497bd99d896d7951f4f8415dc6938a7509775b6a1c8a1d2265e68758776180b8a7a5d33d861eea7947b48c0ac0f16538b1fe9873269338cb9db375a164907b468051796e72201172d3aa27695a240333e6ceb26914fdcff0b4d9178829d6186b852f91663cb3238451f39ecc41d21aaca14f697d13ffc3b57f77526ef3d71850332d96277cf7acad984e2d4852770705c56af8ec0113bc3a6c7e0cbe454ff7c591fa3302a9bcdbf8c20fcf677b0e0e041b6efae9365bf58dd8b1d654c38380d3e0488d52d13b1acbbfb0fd1d550707d6aa1c2182954563aa153161b63b4972fb5cb70e8efc4bef927f7c49fe107e7e014b618bde6956261b9c444da19c7a1dc469c5e142087e16b4dbd317c4ab285d45622e878905774637ab251d86b1f8544b6af869fcf7427dd3ded9d495e68718497989feb8d8009fd79b53cf4b5f71af11024c80a24edd3a27e65a8ab3577826f95a64144fc92831e94f8213fdf7a8b09715f990869723002ca673d863532cba6bbd47c34072e16a8d78ad9101d2d559b03329c74eb4d30beb41fa23e083166fad36eadf64b62c744d3b32d6b9210846393a9935cfee16eb90e32afb8c01d8ff806156c24ff22a614aa4334eab669d3e60c62a5217fd2b4f81fb2b9786fd0edccd947ebe2bfc467116efb6db2f75837ee1e55d5926797cc2ec7bf8123b7cb23b77847f4dc76635f929b99b0961e1c92c1d1aec286dce7de58ed2343b21ddaad773e9ff43b23f7b429cd8d2e7eea5f3c8a897f4e72e2ea8aff643b219254d0febb16d27251aeb1157cac60e101a5da49ae2cda22bb3a03a1f151c34b1410549e790298fae65984ad145dfcd06c647e6cb5e22253d6d939034fbf91a89a8da199975c685157ff263f0a86dd8b3d38573a1ac97f88\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8324a226b4bebaf65724262902103ec5e1e42e00e63703e7a44514d3748859dde3cb23597749fefe2095423260473489bf1ee45f1abb3ce713dadcd3d99ba1cecf4eee585a256720a0db79\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"528a71475ebe2c6f4678ccff7a5ff6f01ec33db0c4f6dd07372847\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cdef3dd1129241273cd2d049f6ef67e4ab9a0821ca714e4c1f13b0235cedc07cb8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e93c5f740baca4d86efd4c013674335ca530cc50e58576ce03e7e0def391b5d72e4fbfc517\"\n}\n],\n\"handshake_hash\": \"0983d41d247c9a5327c109724a2ea6dd9d52ac5b1c5e2ba1ea5743a0fa2966dc\"\n},\n{\n\"name\": \"NoisePSK_XKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"XKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944496b0f4f8be69aa59dc06260aefb6c30d9cbd07a6984544fcf75055516519e75fc4c8ef4cde5ec5e096a798faa8de8ab71b7b4384ad05fd8607c725dc5df1d29e02cf6889b669076e41914820b3a3678bf5c11fd39c4080cdf75ac94f8d7a756c0abb3a258a9167bbdbd88ed139d9f6eb92b90e21b182a0b7561226e3e6ed0bebe99aed88c2e878a5c74d50b4058fa487f9ceecd4e861ebf7d5813d14c13ec7df40318d2703edcc4cd7a31a79e35cd0b2c2d708ab7be440c04cc939f87c1c71201911293eb107f7df5a801a9f34579ae6bf5b74b67ab8c3329da3d90c3b3ec614fce8bd33a713c149b9a2be5d898a44f7911e240b079da7ea5aae618de7caba757434443389509ae1f89ea316000b40d9850d6114bd60e6a18c54fb502094fd1618c8ca9fdcaf9f205920db25c56b69f43aea8b4f8efa7e6877b697c63fe8ebc75d657aaf219d50529295e5b36bc10fc6e7e65436c0445b58343f252438c92a0b0452466e00d173313153ed331581339a94ab2390cb3abc0c15a64b0e0171d7bad17d18d05749c21c803803882ca4167b58edb7fc38c9e54f1e079f63e800763bebdc7c19798bd476634c633b317b1b4e3d4c95e8d7d03bd0b3021ab33cd9c4ecd57ba0fdacffe8af6e7106492735347190ea2ac181641021e44bd6a74fd3f700dbab1aaec1df863d813bd9c91aeac0c650523aa573685b87116ed5a8c0c37f43d5bd4ed8cf7637b9e540f83ce184f10a0cdf54d053f0a9502934bea16c4beac3cd396e9e7a605245847c3f30e5e0c626e4632591af19d00e2464582f2b239b5e8d22535457518d39ec23251b24ca98ea10381785779800cf16ff6f23a46ec1cf111b91137f6bfbe06ebbe39bf7ccc882a0e3fdab8361aca35c084953b478c5e33ec73b7dfeacc4bf3178ddbc562992a5d4d50b8b8d0ae11ee78d71d6b283a75f28fdd817330cfd565c55797978095c44646d2433b5db5d659fde14baf98be48eb1ce0c9b7be6e433f8cbe0511b71343381baab1a6a2cc034d4dbe1ea9827d200179bb9602382c4d37a3aea6c6a663d86ca3e53dfd2d0260ff89d41da99e7c672a29b4037b091318336e92cdb6f32d9a2390597014ee0b297db14afc161eda2a21b21f0920a01e575fa99844214075baeffb2ba660557054b95aac62ac7fc7a84c54b06a17f3562ce3cf4f6ae73c886cfcf39f1d520f36e57a1fecb87802d4df6c52da1f5ef62ec890a5230a0a5c5ea6f62d89a57fb5a1be3c48b10c9b558908fc018a74127d33e2d75c425cf288a85129ceab0d6d0bb233adbc849df2356b1399e5f50b358f8350de5a884745751d18331d9385fe9bf226b0f466be67d16ad3ac82e1ac69942af9fcfc0612bbcf5127d8e44dc4a64e924bd543bc8ed57731d4e0d6e1da856022f2a9fce4f08e66f8dce7c2d3009a226286509ede2e64e13fa146b5b5f91158a82814bf641aa4833b631242e76cc96e52ea3c09a334b925f65bab31053694f1af70e50ae9ab073bb02a8ea7bb4d14f86ebee4df44fafc5cac1a7d890acea3d6d28b8e719ce6edc1eb0916151b28db86fbc29609d22e41659acb1f9dd510db89427389e38317fe2c17cb9ceba7018cbbaaa69a614aface79a1635008e98cec9cc280b3d6b9cccb8e1a0e5d47c779d7e1d42c7132386ddae6f27099a0d555738470eda82cf289506a8e08d04e8b5b3d4b7becffc00bfe4540670c3387a97dc68169952f4f06de8d1f4d24971acfed7dd26e48a3dee110d2523e7945857bc8d52d0190ca4e02b097962d6d1c89f15b17ce1f640e9feea43d352ffbf81335d659199d15ad07691657c99a52976b15be892750a3b4cacccde04a82c8f007c9a221b46d05285ab2507c800f38b0155dd7783f4b24eb548d1cf618859a28caa49cdd18f616027979f4f8f8a46ebd21a11e309e49efb423fae9b31d3272218e509b7c7dc33170c6e670809ea5060e7fba5c8bdd86b0c6aad49f5c35f275881818d694052161fa3508bb6ff3ee59ae45035c33e39a46b7932bec233b39181414f29a6062fd5069e4021ca89146bec6f485ab82e784bb682e4cb4f7ccbe7780122708c75433a7fa55401220246c49e18bb3ec2f2b2f85a160db60f13bc2e414f2efe7193a95d782a4abceac21e5cc9f0beffbf9ea799a544b2849bf04791159e8cc13b7c2c4c76b069eb8a99a6cc2d670b86181ddeab47a869c821715f3531d13f70e9d159b5e22a791909f78ffd28e3b63374aa380d0ade7dcd822faad7c7b2eb803a445b7e1fd52fbf6d306dc2e54681e847b453921e8319ed10b697a7f1f35d810455a6dd1c3c3961037931c3a64c2ad16a96070dae85e2f64d8687a7f4166258b03ec95ede9ba895e5135535af476f7cd4b7c5bd728b5f1e589bbc6ed1d15ad76086695aa6f2ddf8a523a5b7be818ddf5eb929e70c2c77aed2977c99ebb461baedadce9b01c95d23ec806d9a97e60c8f0da3cdf00870688b9ee8267290002f7de87f462d4f8e079a3cc2c9053e7338486842fe9b44fdac79df895034bba608cc838e69005f7fd0b7786cf314182f316badaf9efa4360f2408eea702c448d2b5ee3be859a54f9f28965c6913b3b2e83fceddcec63149939da54747becdc5c346c27853ac730c20d98ff9b27b11\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d09a64fe1083e9958a094d65790a573cd08bdf325dbd5d6527edea4a01e21c0d3885f8904e2c11da41e8051118a3b5718626a103697951d0ae0a4c01494b446b8129b17f02eff1d5f337307c8f1c0f9c25cfc6cc5274256abbfb4c34d3657546fd5ea896f43521d8d39e2c5e213655a600d32ba2d6c3140c8db9f2c590bf4b41ad80d37d2d3681c7a0febc1ed13d64a2878ad5e8ffdac3168c3234da356be82ee56fa97abb2a49826d0dc8a13d2a38239cfcd0866e5a66b6a2330dc60c519aaeb6ee4aa0411ae612588445f0c03d8299c66adb76bc061aa19f802b3f0f82ac4a9fa76b6d69b33d562e44c2fc125b3163db2b62e401d64ebba7e7e93af11af28f30f3d2ec89ca2f5f13cd6c93ef48895d1b619af7993f0586eb6e0bd7cec41614d231a4be6b7336577f197aaf0699a0b6e755065f14ea427289146db64b2bdf8808eb8ba62831d82a819d15cb663c611025b3241cdafd110fc21a4b97defc653b06ff20c26e006ea750f5a9f573df42990b1cbd8ad1500bdb303575758deb0607c7a62195edc480e2038e16403c57305b2efbbd851459c073699bb14d67e7006a0835503398cc94da55ace75ee9db6643837ae8662a4b6254f0bd25916bfb00c8b6643cef3ef09b1f1f116457f9c80452c7edd2338469a1b32daa31961dd668dd23f63d5b3c0cb1a8a6be6e70d744178c250981d0c5001ab04af17447e97d307c6ef226e9b922e54a8a5d84aacecf18720686aa90c35064df7ab195649075f41cf9e9c7ba0599efc7f56db69ff83609c9a1f2cf412c656b60a21b6b517b0a77247201c41ec041c9449b43b44cb1f7835247be03b4589ba5f3dbabba0ea2edaea601d6b03cb1dd61de0bcfb3e7206b2084a9c153b88f0d37e71ed1012404bbb9718b259efd93674f9ecad384ed671caa4ed303895d4d6bdabe8fdf49876a42b075bbd5c70ada48749ff7274bda4e0a37ff7ceed2e143132a7f8de3b4db86d91c292118cd7fc660e32402f6c87dca0b9eb6fcacc4074895e6fddde48f491d52eaafaaa79f98327f76a0230fe58fe47bc2206756b0bcda670c1910faeaf69aac3c91ef3496fea97df9fe265a33e5aa8eb01fa4112b95c99f0e0cdd1586a5038f3f535e24f6a371da4241b7b940d94f69f2f185cd3a99676f4e7d02b2b10a6c95c4d6c477b0839e6208c0897bcaf2c734236c32a756784e03c1bc630ecc6605005f0f0ac3f8ea15f6ac878c3d0af55187d8f6e22e1abdd44681fb88b3db7cd72acd8361904f316903ad9dad5da02875d1190d1021c83981d4ec52f045f9eef2d2861c0f3301bf30fa2144dcf9c691e2d67af6f20d9be23949f9301990e87f314c2947d4725f5ec44d352573c499402b4e16dd91d66f22a8bd2d952fe30c41dcb28213c2873158cb3a09a6596a11629ca5f398bac6130d6e7a9310bed091400051ebd6263bf571496cf93ee296694af253ddf7597106f0216a577ed36572b3c0f8a63ba5f3cbd456f2ce34717c036aa57e511a2c29e59a23698726b1b381a832acdb0aa952e4c315229e1d564ba2fa0199aff246faf6618290b6560bc29f0432d58db5835798d1c93dcdd0880f8d3b3d6f86a7b9d3fe7d6e7db216e666b33ec29d7cdba2d9dc8d5bf9e216e7b60cbf7f890b033971b018573aeee3d0c60e8b44b11ec24cf2b2c713953501f91771a9f0a4cedc01b82814f49135a5368363bd1b155bc3bd955dfd031720ad800c847eb35c68db33880e6e974bf74415a6a3c1d497382d139eaea160c4519c635660201a7de1f23fd5e10743c5e7b05c507dc9bd0407e1d9d31c77f0e61c035ed8245fd2b2cffd5e64c014dcb30db3754437711f2e000e00aae2af34b53b38e8b03ce88bc3f821c2684563bb38ad496249ec73e5948eb0124314acbf940356ea24baec256c13e4b983d344b205251cd9a8535c68d00d3db4ff6817e1de26b2a6567f3228aa0e7f1150360cbb446a110523a872bfc867857dd53041abb2cb8786dbfe1a810446a2b0de57b0c1f8ca52454b9a8063a4df80448b35624995c73004da78aea52f2a3a1f2f55fc3d74e16275a55fd27064c9d0d83b2876388b4db1df9e84eb08144d50e89cb07356068e2711f12e899ff3d880f4aedd5bebec536b267731632c5af8e3890d59d14037a906bac645de06c3c8d9f56afdbdfa389c84a7d917c705e25d3b78d8859a2a83e5c0f2a9f1031d008572f944688389370da0439e95f5bfb54e9e8fb0dc83a0459cb23920eeac5762128523858dccd4379d012798e685fcc5d20f04ca8ac2f5b0b4e3ad0528bd978eda594a4bb460bef0b9a88011741189c154cc33bdad89202393e6d3bba06f0209ea36feeb2417bbb114c4211a98927ffb2ceb3d21ed7025ce4c22f84f6f0357f7b701ad1c0b68ee6f48418266c4e54f7d8f138ff17f252e357bb79b72b337c71b82d4178298a25b09d2e2b531234df0ce75548255adcb999ee5eb2af94523a4d9fe210a436231b88d4a2a97cc50a82325efc33f4b8ce51ce4278b45cb22efd8723d292a3c7bf0c0d362e7390b85f0659ee7f326c2428b3c1e69e1facff28a872536b8fe55480bacfbd893022c4228469bcd9b5de5bb091ee789ea70b6aceb0bf5efa72424becb77460d9739a0d4f4ac23f875e0d856f529099a24bbcac32803f2c9fdea2f98e55890a54ea845f0fa1c6995e547f8b08f3fc3b9aac5fe487ffe4f28b0c55c9f1ca3c8e8a02ba09c08b9146b2cdc82eb152111b4fa8b7fc44b514c65d2e1883c02f9a492adb33918d2412d34444da9f27aad8db8629095a14b5a77143409063466afa28e887afe351dec8121a96aef5cb27b9f179c3f48fec8a4a21fb80959eb77a4913df1629e019b2100da729543e3638b3d5324f79b56d24250b22dbd199144174f4f2c85698e74fb9c4de94b2cfa7fcad9a48a68c338b48da7a1e9723a5fd4814b862454391cff574cf1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"35cfdcec0f6dbeffc7ce59271a6e03a53f6f13e4c63b86683f4837e47107dd88eb9c86169da5912769944a4a4a4487017f4e92bead5b5c03de3811c79bb752473847b8a63ea86b109b2040\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"906e70a117c43dfa4dfd3694c7831469e2abcaa2a3a319ef248959\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2f85446c4deeb9d85eb55cfcb10b4d010ab389a172bea7fd6e27264f195ada5e41\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"45b6796e8429a77e1c2d11fb8f5bd7f65d4e6d8bd619ee4fb5e5eba5d32e9e162976d39b25\"\n}\n],\n\"handshake_hash\": \"71a6a8ade9d0ee11a66170c54a7bdd767012f290724e9a433ca026fe0b7e4079bcab6bc10c3917d798661bf52035dcfcb4ea9c037d6d7b56aa8115b599425862\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6592896d45c3c201da7138b7189d613e388995d26640445c50e63cfadff33abc70dad3258d3a4a10f87bd1f408b02fca1dd98681ae1be25d7b9a1e5527e5bd99d9afe69bd9a3e2b8f31ad26fb0201d23\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"041e3673598acb0e1ae84c17e77d8866b95673d57b561044bf90ef99db4b8d6c31914478fcfe6486beaafebdc2d9c73f239f2b4902b37088a0428e85066c587c91d18893b27970c873872e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e22c817f59dba950da3e498cb10c5519af2600058ef7d8369271b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"dcfe0c8872f6e0fc3b8186ed8a5b1ed46f5ac2a0ccccc954426f149badd6160693\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4893d761358929cda4fa5603bfb8113e388b2731edf7b299d3f34808003018654a952395f9\"\n}\n],\n\"handshake_hash\": \"a098ddf8a9c2dbe44273befd7b63298461a2b05af8919e34af81da7f3abe8f3c\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659b4502d47bded7ca726724ffd16a92fd8d1a25ee52b7101677315632d1322dba8615a0c819070ba2a18eb02971098ab051e523b7c27cd8bbb09151b6c3e6fcb32fc931e02227caa784ec4a0b7a83c2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a5f63441560c16aa5b9ea3a737591b6eeeb16bed35a7caf0b9165a4222e35b516fa40180b319ee6c358d4bd1caf2a5db41a61edf562c17786950aaf21a258fcfdccfe2b00630420bfdda38\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"600bb085bf1413875e585d0222b441949c12678b320f654d4e045f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3e14e3224d6430a72cda9b63be77f4aff9026c4c88476a24141feeeb70b6906bc1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9437b92a822a44f1499eebbe25ee11afc8da6b2928b18413128a2f52879542cc4cf570797f\"\n}\n],\n\"handshake_hash\": \"f46fcd8f122c2183e321cd59f8df95c3cf30c17c34de393b7362f08409e5b627630f3745a5a717141430730653e52d8e8162fc3e172ce76f64af528960865dd0\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d657c03afebb1829b32373ae14ddc38ba10dbd5a2d985681c77a45cea934f895f36f2dd39f8c33a41ec060475aa73f3433223c112cf24d5c6d8e86dbd1d1ec4da3ded702145a426854d77b976eaeb5d51\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"461e59587fbf6e4a349db23698bcd2a9765a1e42dbd3d5b647e2b109797033617ffa8b18438dcaef877af8b78a0f1bdfe5a1696b5ca32ceeff5b8da1e9f28fca02cc6b49fcf978ba0631a3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ddd9a9d8703156eadc4bd4fbc5a3a57750999938fb4ee72d889f9a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6668657678d7f55d809f54491011a33b322ea951d961cca34518e63d53decf135f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c09e8fd93bb2526c86dd8cddeacd729d89bd92a80a39bbd095cfce6d7012701e26fcadae59\"\n}\n],\n\"handshake_hash\": \"03cd92443674f43dd64b7de67f9f631fa6853d28df6037238ecdcfbb01f03d58\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65efb0e2db090033f93b184b7a217c1e7570d606fb0746bfaa2185ee511bfad3285ec3071a195a33779d027d8c1d5bf7a1bf0552c5763c9344539abb756836363e210a8e25194296a93b99561e0f58df\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"68f6ec2de2e0038608cf7109f29caa07ca9a2ce3486e68029c985b733ae196beb9d361b88cf5907839c01b241743de3fc3fc950fb3867683b249d9e4140736ae1502a4d8d557a4ef68d4fd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a398fc76d72c80c1f8e84c1144a7befb9d845764a031918022a1a2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6d32764df9b9298b24a2eb7b2e482871fcd96d3fd9a9817076bc70a36452e5fdee\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2bb172c2cbc0150e8ee8b67351d4df0a6c844442c9129be61a45d1462132a131825b7866d9\"\n}\n],\n\"handshake_hash\": \"5001b6bad31f5bdcd9ef3c1f169e52d82ba8b970a510cea1c2eec9059ab66074ed2c5286c25373dd2872857e90bdad4bcf75a7b45f443dc456e7d6bf03cd5f3a\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e4d41fdc6c60b450ea3f53c82d31dc0e170fc53332f6ae6942ba22e113f4b2edd3784ebbe51c02823b762024f20951e3d44f02c2ef6c410ff63f82e1ba36825364814445aef2271e9a887d8fd0845d7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6fcfc564e99eaaba8f746a8e35e90500322124608f586ed0950ec139aa34724495428fc650794e80f5f0cdd5a2e2c1245c1805308479e820a7a572f93b1b651d35fa1f5443da75d57ddf60\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ee5e8c05ab12f0b39553e3e8d303317274397d71fb1819f3b2702e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0279a57dff5a7f638f54092e500ffe324ef143f98ae2585399e2dc0f1da8169d27\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"60797f3beb13530a8845b5af9aec58aab0702219b4698d7e959a385b7f8e8a173437803e00\"\n}\n],\n\"handshake_hash\": \"671280be2c8d934f797d723538d45b9d711bf107df92710e0e4fa6135a67fb0c\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e9a93c8e8d457b11d3fbbbd23c531c3a5ec86f52e73469efce5891ecf26619819ea86396e8f3c6360d1b3cba5ea2911d8e0aee7372c6e6c52c2eb18e92f44d6314b6050d7356e857b92c24c281bd36d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e9af48052069be2fe2164cf9ebcd11f4de00867f7ca74f4d29d171cd23762b6524d140691984ae5bc7fbf8dccc5f8b4c927d6e383310c768893bc897171db9d8e2b01630c1bd78e7725090\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b3844f42c8174899c700fcfca25bdc7eb1ff98419a0036ac8bd652\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"67a3defc0e1a8f2a63f497f936e8a4162060974fe7b547985d07d9010d73b54dd5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"19bb503242461faa45b9ed8c78ab43f2781eac3f45a4dea495edf89022bab11a2c5b6dc296\"\n}\n],\n\"handshake_hash\": \"f1eb745a365ad6f09e2452ecbe52a83fecb7e51da6768dd681bcf5632aab7af6c44aa40ef3b8715638cce14f845fa4f227ddc19cbafa92e9b58b8b6cd8ec463d\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e4b007abb971229cf51af03a6bb8a880871088f75eff00189f671b509dde97a4805ea1ce0463a404c4a580bc56212e04af0fa0651bd37ddde5b71bb4fa24de961cff8f34cfcd6dbed1622b4eec66e9e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b947e4c9be79e53c610fda182dbae5516f089a5b8ed4c0ddc6f1a258f89e00714de8de22d4bdb3de6b6a9214ccdcda0e3dba57a1679e01485e38866754fc7b92846091acd1c6b603e7cab3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"caebd615c949e274d912e22e4d0c89ab7f91dd1e71144cd042c509\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7e7a6164f490d50eac14ffaa6422ba914904263ba397bef852a7c1c724fb12038d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a4ab02d44a2d864aa35ba30dc9eb3cc282da6e597b445fd9da0b3eedd9dc2ff4fc1ab74e8d\"\n}\n],\n\"handshake_hash\": \"517c154d1200c185234810c4212b65b395b814139fc540044f452d8ce16b57a1\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e13725a399baf4a3636869b65846c720437616a86a4a658e7ee487274e4fd2bdc40202967eaf12515cbc7b51a992a012037a62509d36d45b6c24996d8fdd324b2484ed61ede111a5f3c7871ab99884b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7444ff336ed6b83d4399aa6b27f6106824835bef958740d15921377629848098b43645c0df4fda2c84ec9e31aa196b112342c5ed8ac3e06ba9af3b432918563ac7038c275559f5e0e941db\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"164d3037fc54f20e6ad25c1df0aef028c4821ae03a0b4d3b570673\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d99e0aa77777cd27b95b54fa64154cb7eba2d9b4e06bfb29a915cbfa4d7d336f9b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d28a686b16090e4c1ce7ea5f8e7afa7da3829e53def48e8afb06d8a6d968cf4b0439166802\"\n}\n],\n\"handshake_hash\": \"b3f180033448450ae3143d75b30cb4107d7669f8221d3094b5ced3e76de7344ecc1044338bc839a5db77d6690d9506e08214a4e792848ddd95f27c2e1f5bf1d1\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d459d223d9f78447f629f5235c24a06dc67cb8c9a0cb136bc34f140f221f6c998be62eeea68101510d19754961f8820952882973333fd181d14e5824005d7f8a0e3937b4481a32b7da621e51e630bf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"37b72327a308d3a76abcc6ed940fdf8a7a76ef4e73081f81a9cb1accaa041a3ec3a1dd1933d783066bb0fa7c1adc282bca79297772b9ac043f4dae13b7d80f36f32febb90968513d39ef5e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7eb71ac7b74195884b84656064d76187260d48ec4df6bdb2d57aa8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c549ca95f967ac1bd96447586b6ac46f72de8ec17f2f9e8a1af59b6a16b9709457\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3f1938e1a678d7f680b1636599b2a702d4d8def34df1dd2a11d64cf9b79148275875900a37\"\n}\n],\n\"handshake_hash\": \"07ac77d3b72bf15c5e0579a87a78a71ae745c79001afe7ee07e041c8aa0db415\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65055ea905e2fa391d4fedbcb8e00bfd582b34e08b5a0686137b9f0c9f642182976e1ef0b6d6c8f7d3da1bc0fc2b92ed8b99b47dc89263a9abf51d6910d7f61cb8222207d05fa2b0ddaada4296fae6f0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c065f5764e22985e2c9a78d5d3a7f804c7438a9df691e349986b5133f14139724e72b58ae282bc65e358b765df439e467a8d8f1fc459c5264b646fe9e7f413ade8b6681aa93d09f4d03afe\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f13c830df454550113c2dd7d07d26e0fccba78ca5bc6c588d679a3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"92a8320f915666da2a3b8ede99570beca9515bef1e2db02a41dd28047598c9939c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"302f3337666a49377c174d4b14a528791f3983707785aace2c77634fdcf109922220f0f25a\"\n}\n],\n\"handshake_hash\": \"c40417b1cd2912bb8b3feda9324f9f3819533a9dbc270928b9940156ccfa3693add6a262828859900d515065e204ba218493ae16cbabdfc3267d7219d21cc37d\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e74cae920e7276568b23b833ba80c2ddb3596892d1d52ef182d517b7d8d92bcb6e78e3db0f145be8ecb2fba93595681c71b1d991374598c184fc798258a2a111cffc3911bf601f67a3f67fc5abe5f9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57bd694959420438f619d1bdd57b6ad3bd82534e22fee7195b4da514ea96a44a06d77d87744fc303d054cf7258acc141cf6ab7d23cea8b81ec7b0b78167169c587978f9ac8637463604dad\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7ef90cc8b7da369d1db98754d9305bd67a876526dd140aa47b4cf0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2bf9784f0408f01e6ed51be176bb2e1620fed22f976c6fe8d4ed284c99f84cd858\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"11f60489c46cd8711d658d489a44a3aa5f221bfb9afbc09c24bd8d94a3716bb8f09ec5e7bf\"\n}\n],\n\"handshake_hash\": \"bc560b8626c0c93322d14377aef0d0bb5a0f9c975a65cef49bb1e61465b0dc81\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ea21a61de5405adb1828c7df0718665ab82cc358c68e7f4ed1c6fbd5aa74c94f34f3e0befa1b96ad30dfcf1d1aea0749510fd58945019c09986f43d50e8528ce50bfa04684cf6fde4cc2aefbdb7358\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2d25573f48db99e191970df999e84dbec445d50e3747ceaa0c0505bc1d39e8b20e4ae26257ac115aac7747cf8c6cce5ec6fb6e35441b7f66b1d274f87a388e9501140eed3ada226a53cd0b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6b64449780330936d5ed802b13f82eaa516a000cf83c4139882f3b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"648599fe25232b94d4ae6094b04fd56b8560368ccc302fcdd4bd562dc8ab4224fc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c86a0f94c22e629911beeebcfae873a93a8b2ccf2d38afc452ce953b8685d5339f5fee0793\"\n}\n],\n\"handshake_hash\": \"c78ea7f7249408b29bc77ba2c91d43e6ddce547bfb90dcecdea01e89390e9be9299185c5b0b9a57484a00294f2bbcff134e7c408a9ee3511e9aeb35a322ccf1e\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e9c68df74d92b2cd301d5726475f6f0f00dd75f7bb923465d3567db9bbdaed4f9d27577c30fde096dec95563b70437164dfef0e52f14a861bca54b4744a61042d3cd8da3038b0291959848ebe4d7610\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9616bf3610b3076770edbdfc75d9610124e5ec833cd7872f18a7d8c439333c02bcd1fc7af0ad7dc7bb0f8fb368e7cc13e81e0025c8be335c121c41614708e19cd26deecb6e293fd4736c22\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"854d556db93d568de9cf8332feac51ae4d58336cf8e6e220d88479\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ce19696ecffce2138bd9d7536f7f9f1c9c09e97a9ae4594bba56529f329609f6c0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"add8c46626cfb6a2d7a3eef689b0c5efe909fa9b0f0b71c431610931bcf5fc48b7f991a482\"\n}\n],\n\"handshake_hash\": \"533a4f6654926cee22aa5e90c9a83b146ef829e4e7417d69c51e20c8f594bbb7\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e519a542b465f11818b8a8948e33c1edfbc9860a4d025a057dc695192b69993eb6c345c1d93d7985ae7a01eadd2f49b8484810834aec8200870daa830bcc95cdadbae767a762f88bbb97a84cff9b01e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e326e771c6372300a8688c58d5c752887bb0fe0a3ed88edb4c9d6490a6b25c3a972c85d0c0bc30e32326195ae24bd3dffcf64f0d6ea1b3eeff9ca867ec4a85f0e7375e8a7287dea6899946\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"93774ec0122690ae38a604f0b40a91afdeebed2d85bf8a5a345393\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e95383d81fb4588c3e09de301150976f07d1dd0268aa0af3c18a20c737bf5ab98b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6f3b448d3aea0986bb790052bc07ec06d079a08ee92f382b805bdc23d8595cc492faf3c921\"\n}\n],\n\"handshake_hash\": \"441fbf5d1c78bb9a8f2a2772f3942a59bd2ccfc5155f977a6bdacf3662008ff5919037859ed4549eda8876e7561ceefc6221ed05748cfa175eef8155c3a39906\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ecb1a0b31fa09c3cc909fbb0afdce54f873f6946f7dca4e3d15ffcdd4182d887c110d91391d5e2954456775ac5ccda304b13cb2bc6e009447cb07fc90a920c9e62e1acafd8714ef27e88b2835cef280\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"370ba4cd28eaf777adf9acfba5478d5c5ee885ef7f00dedd2a37998d1bfc2362d15e8ab3a89b56ae80ebbc8363498487ae95ead34f37680b46271b86195367495f585e2b3dc031d5ab8147\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"defd550bfbafeaffba6f917952b8f510896463197cc37188e75e45\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5541b931c7cc0f9c1a051185a92ce44e9c981f0bc15ecc2c32f259fb3ecf8764bc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7290b4a02c4facf55358bebc957ae01719694fc804f5da4f18762ddf25770aa911fcdc6b25\"\n}\n],\n\"handshake_hash\": \"eaaebc7eb601f89092b15ef140b2c5d55e7592840d7f83d6e13df3908916aeed\"\n},\n{\n\"name\": \"Noise_XXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e74a9de05918ccabb60e096b05891551ce3b8570d21e2942ffd07fc92ab036080a28a814eaebc67b5ebf4a4e14203a07342d6df1843b5771e79c3c249c1318504db353aa3fb51a9894675657debd1ff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2707b4f8cd3db09f12f7ff48a473fdcd94dace3405248cb5d77640c467d8df074bc0d31949cf9e151fae506e843eb562d5a45ac082b540f708c339c06317217189ce5cee87e499b9655f4d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"82d2456429ade11c7afb2a3adcbe1729010c559a02ff96878e4830\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"05ec1ec8b9dfc8ad96ac4cc858252a502d0614d2b7b27f629e5fc981ac6443db81\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6342f45d8babc2eee0955e9792ac939b0cacfe7b239aed4e29d21d861fd3fc9abb3ab87aad\"\n}\n],\n\"handshake_hash\": \"ddbf7c35cf2d3b388ad52cdb0a4ca6bddaf777f995a0c28904a6fe9f0ff4bf1d065f2d3c0bfd239a6072b91e1f54181271650964f44c932b5bec666303cc24cf\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442619b84567c909032c8319f417e0561346fae53c60f2c7d2e4335cd6929fb6a5c426ab2decb260187b9be4c3998641dd309a04b59e8aad5466d7635fb10210705cdca4fb0befe603176b9b952cf93787da7e7685056cb3fdb09a64243526ecbff21dd0cbb0a0275f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dc5828733bfc6e6d836887d683693cc92af1a60bd1962a2bbcd229557914491a00f682073a45edfcb76890e42b141e2aaeafd60fa2cc9d29140429be2598ebe6f8ca13db700f431544a04295ba81a2de03cc6518f45996c3a54a8cb65c399fa6645495e6c9a3b595258c94b12786173d297143c41cdef5dc8dcdc25306ba6e71b8ff7b09e43713f358f32e7ebd9a46dec914409ff7a31d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"89986af34ecab7659fceff4809fccf018e3023ff8d777e07012ee57afc99d284e703c7cd9555b3326cf3641e19ea105b618b41571ab2a5a9da854e246cba0667a29e4e741666ca3697b54f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a50c50eb7702d3b6c99ad06f3ea62cf31067a025d053f32fc88a89\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"84184f43ed2a1be5a38cba0b63696c5cbbc284dbb56796459894fe55a9deb140b8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fee3d6ac547963657234f88c8651cb3de97a389e956361d5a86b05fa420097f22a1c7d0eb3\"\n}\n],\n\"handshake_hash\": \"56972440d0c4d144ef118a5abe36166207d76e8ef07f5074df480cff9ec7d485\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944198fff55d7159078662fba0af591ea4277d4dbc4eec3933c1b4aeed5f2fe50978f95a135735581dab26b39f306e461be400ca4146670bfc468ceb097cb8028b044b1cd1153df3aaf8c37fd0c67a5a4637261ea52ec9a94c75e08228292cbf65a2a768383e82f5268\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884331a35dd283d4612f7ee62d8959fdabd867073342a378ff60c4005a7bee1f5ffff02c5fe4318e1448a8df2226618faea8df88d3f01422cfec105697e3e1d7746e43ca0488bd5ecc4a3a90e21b9f558ca83260c11297a14ffb9c2298597ca387a5c066585203bd5117c1272234b74f4564236b2bd626d58e7123ec7c46a7c414efc28ffb5fdf5e3b556494c8b7ad3747a65c43720bc43fd9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0ba3466f044709f11d54c45051f16baf4d8de7ddf4cc59f80a652d9b80ecd74b508b38d33851245152f38dae7f369c3a73f6cffe051c77177cd20ff11a626c1c43350a5110639bc8cb5f3a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0267e66915398145f7b3d45bc6f69bed67093d47fc15318e3bbf46\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cf8f0c27a109e12317115df43c7ec7572d41bc7eef799cb6830a09eecaa378503d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1db0f92b2ac4e44ea79388614dc504297ce41b24d5fe608aebf02e72aca248bd7819c27446\"\n}\n],\n\"handshake_hash\": \"e1c3370afbd640cc754dcb7c3032b5612c49f3c5a3ae0f20b3ba78a0076f77d0ce6ab2073b057f32b4688ddd7339205b3db79e851db53d0859ad2a2b9e142d8e\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441e46d993212d917ae4d98702e91cb99b6dc6deaa20c9fb54acd117787a30c1bf7fddf8b57ce06cc5536fe1e4314a54b6b20e82f51a290304d3119960d184f72c7d20de48ccc3354a9345403c418df5950ce8168e4de286f262d3a9c0b0ae343dedf2660c9d6651f3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432f7f218b12534fe0e8c740cdd0ca2e5d6c5ca1d181e25b43d48bd80e658ababd2cb538e7daf0c8d685d5c79c5321c623e0e3c0549ed4692bc42cffa5b163e27105f493fc823ff6fc6f29b894dce3934b4a0314792d1cdb268d9e0127336ec761949608dc25dc6bff00a46cdb6ff03a971ed03b3c3ec9364daa37d2b386ff6a71e5d518846258178542e5266ccfc0242786100d44dc39d6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"95241747bf253aef1a77f4f8d8449ff4ebdd32d28f94436be3e515f7f5223fdad087429488281ec0d7ebe41e448808a457c5adc58cac487fd4a621ed9bd7b4eba4f1f269c840cc46cbc014\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"00c3d2dd3801ca50d59dfbc89f58bd35a7edc736e78f2b42616684\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"613308be3d7830cc635fd72e91ed4ce689c9357c73862d9ba5de1222cebc5a9b81\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6b05033832259b17fcd2c3c51fded79fb4f4074e90e339823506423344b4b0fbd671e900ca\"\n}\n],\n\"handshake_hash\": \"b2b80099f426050ec1199f6327abf4846f5dc9baa1bdcba0a3700cb2d441fe65\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440b7a32953ce5027b1545dd9240cf78dd211cf7e330bb78dbe558d21ad0ff5f3ae9924b29120c0bba370f8ef164f4c1ecf26a7dbdaa140be873bfc76f5cb0f5e7fdcd025d0e4d12c20e08c7d137159aaea16dbaede611ec56e36ffda7bb90201fb33557d352ef646c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884309d1c43444664f20d54bf4b10a5d1b34e660ac0c765068c7357a86d594a2486a03a66a0a923e911161d876dd6aa555cb318df5193871252dc665f0a77a86fe13c02985bd8df02dc86fd81ce6dfa6d0882e70e6e8ad8142c86adf816523adf9f9b4f4ff56a4a09394c74829a3cac4b9be50edeb8358bdd71a6a83a3c2530d323ee3b0570baeba4b46765225353880483fb7e45315c09adb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e2aeb450d8fda7a6090af0708b3330b3002bd8dee67be6a6bfe7cc27bc177fa4ce33528a43eb06df40d9a7cbc592130f692a4997466dba556cbfede31cdf09abaad0c645cbf849b277557b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e55b5216bc978d757d9519eef9ea9e719ae6bb74c9f85da3ad9d33\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bb541780cafcff9eeb2dba2c70c2d6661753df6a6e2a891e091874421c8495e156\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"133dd645631d5de186e029d0fe43aaf9d7064dd80d701f744d7528f490758ce331cc2c2ac2\"\n}\n],\n\"handshake_hash\": \"a49010a36028f347abe47b31b4d968665a5ec7e555afe7e173b7b72a54b6135f941a39b60730b3510563a17580d0df394a2e6ea088bc4c3838b66cc379073a1f\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b38cc19505a0a235ebfdb9e9c0f8359542cfbcf8064b5ae0a0d1ae71035a07455afa9b1ea9b51641103510a267886fceb118c518f9b5cd7ace1b6d138729431b0cd1f7ce63d356958839de761f7cb0da28d5e7af14154d19fcab0659d81697150a54f7dc072d00416894015612089684f268a8b2d7e7a520bc841defeabb17c7a0263f7519cbe48849c19b5c45abb39ac8d6c346a3e783517d0c57aa1c52a47aa1a6ab70983892d6e301881341c04aa7aee8397c338059e8f3cd94ab96c5537afb71c3216c65993db8c90a81483111cdb4ce9e23d27699ea9b9a2ec9b7142c136ce5c5c7e29a518570c4ce8d17ed7619fca371124b229e46233b867a850748254eeb81c7f15c0c2bf58caaa1e43c7baabf75e60f618fe229a22804fea8c9eb1dcfbd969932a31eaabe7d1ea1477ab23a29dfdcdd7a081a17aba0b54dfd55bedd7e4709804813ec2624b10e2c73c317c34a3aaf03bfe5fa6546271af6d054198ef454710b123710b0cb7194c1d3a0c4d8ec459eec2b5b700ceab47fb65b162539da1ed0af983089d882f10b0cec0242dc3ed03dd4f27a6443f0ca01dcb7eb631b2efe7320849ef966f8ec071109365278e53cd2ef58e22b6a34b3da03177d58f08f8799e4f21b7a9135290eb19772ab9b77bff8838bec2bc9c1771fb5e04a74161b74b3d97c53836505ab59d6e54f07557c863c672e27b94133a16cbdbc202c2e9ee1d6d2bbdc7f83c137945612d783e6b6864b3abe4350174118eb051222833f17881af5ac1383249b89bdb005230afbc129c7ccc7909f5f8b826b2af805a96109c18599a62e261ed9a59df1bcf9577955bb55a378cfbb4c89e72dfb0222f03bfeedbfbc754e3972d8632f6cd3a21215a838c1cc669fda4ec648d998be0089a9e46571cbd2fd65cfbd84587bc894b8b4c00bfbff936713eb4eb95a4d271095a0104b9f5fb9e98690b84537bdcc1e45b01dfcba0c55396a2acee21ac9a5b80ed9c3b454603243f9d80f55e1a2f81e793a0fae367b73aefc45a1dcc9b9e63013fbd67025ae3f339b2a530cfa55ddb994915aed5db253170e2357060f11048263cdf4cbfe4e588b9f56c651594cbd79bee4347be19ac99997a140e88e7eecea8f6cf8603ee3349473d6c5bb29f60515bc380a5041e775641aca9d22b02faf283e961945f510e813c01a6fce8eac08de92c834160733c6013f70d25909a54489e9e39ea2c1478abdc78bc208d78333eca3e5c55d4655a0c8fd8d82d5a53098bffa4347819861733d9f98e5d6824910d1137175c7ed522531724e5b3d3d2517f96fc9591c11665b511cbdff0ea2e38d594af0ed9e45468aeca08dc6d34e02ff27844a9fd77459edd6516499e4ac13a6121ac35d6b3cb03641f3855f3743dc74049bf9d6d7f84903d5886d943e9f7576c2c1dd308d067f81b13c82e173c4c1bdd0be0f57d09338fe28d730026633ca841d5c03c4552da1e121b4e4a5b716e32a5b3e9b0d1b85f93cd8bc49755840df3b14756b0fa6cd401abb0b8ebb5cdd24f5fa452e70a65e77d2ac20ff46687aa0eccccfc575ebf4c26f77d5a2d28181d70e0049bf340d6a096461e2af46ea169178485120dab60bb80498cc96337c62bfb2a5db1f7a4017ff541d6829db36fbe2b0b75fa67ba843517496255a33e70d94fef5c92074ec9d226292c1682dd0f151621d4575e2f444c7e55afd64030981c6da9208e6d04f5bb4d4876005d66ee0c39f554384ae95fcb8690d6ad0d20c7e15eba9ae8a658c1ef56b2476023a9544501fa08a50a79c5a4cdd8d3247da9bd7447ba1ce7add55e6ef9de3970f60161854f6ac077715d1b94c2351f3d5c445b131b2e1c7b2e6f6773fb476024695f0acd6ef4c69585040dab945397475269a2c10a196d00743eb6ed3d71b9ac56e74ceb2e5e4a562f28eb48326f8ca68d5ad31a6adfbc9614ab995a0c668eb0db472d53782ec13b9861098e9d312bf83565bf637d70aa2e6a3ea99e26aad581675b529cf3c43edec99e928b0f141154e8c59fe6073ecca90b2398dc4a2abc05a56825fca83e62d8ad1daedad01f661ce9c12a274b82ac6514468237cb44a7034fd0b9d6f9801140bc3639e8d0e3038dd9f52df97b61042b4de10bcf9c08158cfe86471cf373d098fc86f41df2a80fd7d0255ad1dd60fa3bf1ce372f8eaddb1b2ccc774762bf8f670ed77a1a96f187c88484df1d212d0ab2451d5b70dabf607902d0edcda07eabe3213ba4dd9f85f892f5ceea0716d51bb3f4e537b58205fac922fe53fbfd509bb036bb43ee0871be004489569683a146bb1afeb15137b84f1bbe914e891f5e2e95a990a9d3e3aa2a34546878b1e4e6441bd644eeeb3c586c79776bb10389bf75feda06a4f0a1df2378ca22411de27a3a1997afe80d6a2777c73bc92e70a89f1f829186ad7a47cace16c8d462f13945cf67b9d59988049e220911b5093fea7068aa20d02a45b466852f704f3adcc7fa42c4e4c9e9e92c5754ccd71ace36d270d1c33a4ff1fec6c0f4686ba39faad2d4afd3bdbe26f3a98a77e32c37b8fcb8fd94a596a57d234812319c8ec45f7052120f42f4cd8d03aa7ccf913e83c113864881f77e0bd179a091a78bd6fbd7955444fbdbdaf5efc2a93b885bd61fa37a463531298\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f8a9fb8c42e89e4a0fa6bca21a3692a2d2c970217e5d468abd3f39e4c11aae47032aa9ed46dd243a02761956302984056655d827012058e633d85775180cd268bf5d8cd6d20ccd39a93554d7325cc0914aab1395ac1479bcb08f5f3542c616cb4a3591b4967dcacb58da8bc1a1026de026f178f3b5a1c161f5941c7ad5779283b49614808a217c8921895885d588ba0d10fc4b342e0ebcbef9e81b24fe2a76121c5d2ac3355c971a45fa9c4478cfeab7e5121b31057af04ad14f1ba22883eca129aca78e902431d9f80f533ebf216753ec85bd36552067fcbc35e4a837ce35580a44660f6960daec3e3de7c0ec1d7ab209922affd4f8cdda256e2fc19ab436557115dea7f619c9d2654df2acf91391b760f3ea6eee37edf45931bc5b98f9b4a1be4a9a97617ecb630568613fcec9205108dea237f73230a8d39feac9922c8d767572c8bb9ed4dfd4a71bdb41b02d9d1b16f8527e63f116493e4f81006c3ae0a3dfa32f50ca14c2d0cb339196f118abfcc2ddbc6720ce613aed85902dfe667074cf9572bb38d2f6e91482ab325fba02551bf47e7ba9e8ff31a083ab58d1397748c04fa613ef033c81f57b5394b9c2089542accd6cc38a7bc868c38784a542c0097665544c9903a1468fa65b4979dacb103deed575f506500f86412da7a9c19a7ad794057413b75e0390f4fc764b2abc18e3ab67af02c996e89398936da65e0c706c850c8d59905859bfdab10037a5fee967a680817a77207a223463bb5cdffc5d2ad5f38b8c1467f725dff2823553a915a5d3448b653b4baa597f6464721d2d80562cbb4cd5ad266ab1c9a46f4fbb884d43c73da614d7b06c708b231301118725c5f0ef2d984f4964edf2efff344acf9f36437fa7322edaf8e0a2b4fbd5c497876c8ae6a61767739e702c79a0c6bd78628234dff46a45c2dcdb2c233d451ef03568dc0e8ffcba21129bfc75e82bc3b73e91592222e9a979e709b13c3c43a539b00ba2212aed0515a29bb61c787b147c4f5c80b6d515ba10df1fda5eeb3e73cb79474442fc33c6e89518e5b622834d1365c69731b77a8b669f9f39c0d6e0aec4469624705bb0c312b8b1f50bdefd5cc235658f0bc297aba0e2c0b904892b417dc56a887f51140400a541ead7c4d5cf38ba250c7343fac9e917f073fd1c300ebddb4247a2e4ab6ae966c13252e375ed50af7f774efed97ea68845fe2db8493fa40016ce042069882c439b7eda28f64dd9b236e4dbf748613b741a50c00f593e909fad80f51b4303b16a9d1e2446a22b36338891fa678bc2b9dab108616897624b8774e7acffbb5d9f6addd4064244d068ba968eb959c942d775011fe07ad81f21805ae2a174c92958403087b4fd2eb96f0b1dbed4bf0a47076cebff020cb7f62e393389a4426a35d481450932dd232c440e183169c6f0721f0d49a3c5f29d37fd8a47e39b23b457367eb51f613429cae64c61a1ac5558585e174a86282107e0a496154a398a274abb3617418b1bed4a83101e239bdf5057460d5a9bbee0d403dad013c6106a33bb334bc8ec716702c17e6f864bde5c4cdf43bebd8ad75d79f601a6a39a2e526f8507194b86c0101e5ab514e2e5a8ff6a11f4ed6cfad73ce39af555ab32075f1cd8fbee1be6ff1457155ba4bbb48e88a6a5f36dadab9d955501246215c6f0da23e89e31a1fd3b30188ed9a6c5d3e62222f1b0a99f2d3feadc648506aba4a51163fa7a72501164bf6ac5841123ca45e7092a3712772517144cc6051bee8be8e474fc24b6a0b9c5fd3f39797b975e7118e281dd43a25a86cba5bddc26ba9e5112b5bc35f5f398fbbffa0c75c248fd22b34a907467454c6d82f6cf3e88909e4160d8423fa36f7767fc1b41a148900b83194d9207bc2786a9078ad815661d49467072281d849ea23911e8e371d852e0c24e89692c8ad66be6dc02ef751882e7d8c1ad263afec8dc632f6075512a5f941c3ae21c4e855b5bff794f03a581d83c2a2af8cade06ac579649573eb36fb3b1afd4bba8781c75d3f9ea8e1b4c53f4b05a45e4bef09df155f28dcd40400b95f697df01ea961f1ddca30f47b6f1899a75d90f9e270c86737c60dc2990e2dfae9738417f105d2e149b88e67e000a0b8a5149d196918d8e8ad2ba146dd6be18f1c4c4242a91e9d610ba44817f1242e801ce53b8f982acc02aec3e455df40324562881f09c6bd34517aa3368edf4dd622db627d43521dd181888e5e056d742ab29e887728ae69d1bc6ead350916921d7eb6b5de12f712721b480a6d6722388bc075f295405b68ab2ccfcd54e65c120fbe9c8b476b3221a792c10d45b8beb597315996fd122eb9d4b0c970dfe7f2c79819651df2f583c8a435e5027f1a08e00c3ac41aaadc0bce747c13ea7813a41bf76844640c9579f2d90f81bffc1f0b6cd187d56e7c3514272b6f56eba7e5413aa047ab567a78e6374c18e0973a69edf669a422ab5e416aba12752bd719b1123bef41b703bac5ba54247c6238338b9a80e683ea684d81142b4c3a41998c846ee5567f19319c0e6a0bdb8df59ecd62ae464799e032e289e39d73892711a79e6f1eee8e12c220037747cd516734580818d746d1a9804508490995a19413169b637c310a88076dec1ddb097351a2a6dcbba1a5ce051e59be69ac76c5789508be3ab19531e72e58573e0ce6f2529c672bf85048cef95bfebb67059220be7c86fcb765ce038c42085ce26937fd0af786bb8a0a0dc7bb0b9a579511ff811c5a8f879de0e762876dc72155460afb1d047837988b49b38c7aaa361c5b88edb9bf283f64669337d532ffdad5d6b848bb57d7832a56d6bb96e025120bc9f3e54f7a571f1cd4da2d682e7844689c855cebc6649dffa7b31c2b6067ebc7a16ca0fe83a93d004fa329538589be0480c947e94cf3fd51b73b033e150685c002ea6521bfd6559aa88c100a602fc63d95f85889cf0e00579fbb34b5219e2552df83913f7e4954b0a3ad570ff021b113631b22b6721fcaa1b13ae40e589a3737501b1cba7e311ac20bf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60a560fd6ec0b53fe8c99b475ecd30080bf0ec4c95ba87f188e9892165edc6e5401e6b66d58064391d01a2e871e3e11c1bb2b684bb15aa0dffa659cbfbe9669bc84b76ca4cd2ec337aa5aa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"280b5cfd6c1ba80ea65533fcb89188cb185e63b828f6cf5bd7ff5d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"80912f0191d81bbc00ef47e020431782ce424079f1e0b5f705b070b132de01643d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"327be3815c43d68c4bd8dfc1ba0da48de35bc3d1920d589aff17c0d9b3c066cc36b9d34fe9\"\n}\n],\n\"handshake_hash\": \"a9f6b2ea649572bcd37e0f5d320123692428334e24a6451193d4c9f45eb29d9d\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ac1e336be054ece9ede7ea885bf58a9af2347ed95dd82f3b13f0a573770cbfc27449c892294ecd93f9aea7ab61b649beea8e578ee495f643ebe5202b89ee21440b631c81ad3dc7ca38e41a1ad9293c26fd1346ce3fd381986ef38fd393e2cb66f47de62fcba09cef4b03a39e1d3b3584956d0068507c7d2139a4f9fe5db3b12f20934c14cf4adde69f9f0aa10a64910502cdffd1251b07e384ab52dc30184124d143ee3c6b53c01008ffaabf4cb019ed91b34f1c9385ccd1d6448b5dcf532347b3c16ca0a3f2b6cd545025556fe6515dfe16f8748365c510ee170a4f822d167975479a0cb1f1775bbb6a68aba27cd909c32f80f9d713ef4041297c1bf4b1e425f4aa90850bc593821c9ad8fd39ebf986beefc0d30f92b530019018c7ef0d375ba0cc346f95fcc95ed6974205c78d48a295de1e788f07fbf49583602d4186f18676ce54850306c57266b6dbc50ebc4a9ab4631ba672ddee059acb6da4ac899179c9fdf22b5ec350ed2c1c2599de32ca6e342a7b034d084ccc2003cb015c092ee806dc2d2fdfaddd7f0c87bdf6481b958c019989fa6af9949ab873de703e70f3b5dc755bdc1c08902bae116479baca42c165e39017f88b0ea06316e6d6e03f83c105e1a9271010d079c10329e501acee237d15492ba0f9c3766f119a2bf77f0c9d2e386acb4020b9e53a9142b152de703fbfcac6953b3080ab7761504cb08360344d848e9f2efd3b15418c3b693fb21dd8576df1c0b865b17c03900d2efdf6fca46e33f9b23a6b8c4573acd1038cadaac057a0f158894c0ff8980ba5c617593a639df974269fcfd76aa898c71806c5e898d3eb02d9cd73cbaf584e788f4a1a8496bdef069d7f607d91048c3ddb6355ed0f36d3a1f4a96a5b3c8e1563c7e523564f1719749aa06676a8cf8d549dd970b472c1143901dffd991e03cc0834e0e06f1dff074758815d7ab55b3c154928f8157151e2dc44dc34d749e34ea1a442ecb5bfc93ece87c09122df8eeec0f0a309c1b76a707b1f191777bce9a6cefea0c79846d4cb0f009c89a1b4dfc3e35030d5e7830b5ca2111619728bd0ae466d623f6fb273f3dc43cfc2fda34cc96b6121e882e024cefcbbe8a7d1f97e83386285e8d8c5c116882be50dd269b5f533cb1ff3159bf97afa4b9042389de50b4c1d9ef9356652a758ec13c2c7e6e2b26df7d813ce5e4ecaa41e9ae2628ab26eb481f950b90d44f599919f54725a0b2ad9e3ed93bb60a0967caa0ed614ffed63bd3c4616011dfb242990f6978985aa2fc4a0ac041a7e5d6e07a5820ebae92d77a06279690ab470211ba0d12bfdfd68a5c8c859dc06a3e0c8ba974d87584c1307f4e926afe855c2e46f0d39ef548b14e2dfefa67f09bdc73b591a17ebccf1d23e0c45be7107717b331323d6c12ba79040af3c7ccb91fce26f3e3ed71004f2688f05cb1b7e2fea207eeffdfd36165c4ddde0e1051a355c1641623c0ce3dde46160076703aa86479df14598681463e148e2b35107113244b83d5805386464f32bf778479a5154eb952eaa75d60335a3a6dc854778d0db80e1999425325542edef35495fd858aad012b110f9fdfcd6bfe6b6c76101d929bb3dda27847d78c673aed4694f8cdc76aa1b68e2ad135e9263899d25e5b8b330a9e4c1e934d2607b1b119ad3cc9262a834ff326d22913bc54944f925cf39e9c363334cdc9a2f8549f285c3bd06d83d24350645137367fbe3e14db24bd8d876660dc6ce5382f49176ec65e4a32166653afd43f67b7a6b2945f2ccc9814f98c0abe711e8833fa3f890503aa1ef30ddd129060eb5041c668f82d3633e9212b64750bc782a27224280e84702bd8ff828bac084682729058de5e51581269c62e8510b2c9051a4a62c17202f62be2e7de243e7c625cdf5580d873e7824dbd89c5efe3283764e11f7abf57bf730c634b7cb5032f196a97c1721818c6baa7402fc41f96869f104a21a6075713f0e5bd4a8e597006e902643b0cc042506d72ef8205d5b2b2173fcd4fe72ab120596873482f6dcedc869883a7361ce98441e20c086802bdfade75c2946d47a84e672e7cec78c241ccae2dad61a6cda84bd078f7858bf9f5f2fe806209e22d103c4b17c91fb2536400a5ef2e98fb4188aa02b40df246275146d31200cda2b92ebcd667ad0336bbbf633d5338cbcbb6adf9893857809a00554955aa328bbeda6a85d5389d1d3f33c2dd9d8f4ce92592bfab2591a595a7bd799bdafcb7a9a43b6d0b82b7f582a778987e6cff2e404a65bc609217023d82bf1c3426018d599ded2639d95ff151a7278cea200480e43794183ba60cc088f753196684ad5fa440097637455f0201cb1e692e0f0b0b50661ee641a3a50503147af8235ea17c38aa928d25691d469aab2a9b42ef6e93ea2bf46aac5a9354f133d09df818ec0d75ac0f3bb76a997e200fc85e477d5dde9da5ebc72e3f5bfc7125b9f6a7a1e8f6a2b0f2ea62853f4db93f8b972e36dd136b075bb9a9485b72fe1f0f0e63131edb21e4deef5f2dd047be13f54d04446fb83aa4c6711ce8baa7a8a928137e9c0f2cf38f1bd217aef43eb8fdb3c85bf7b3229495b28ece68fd0d5fa41dee080b0bc9b1322a0cf96122eb79820fd161617143763966495d795869377734e52da\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d9baab055c6f68dc8d18f15ed1c690a68a86d209843428397b5dda11847875f1dfde3982d83dcd28f1319564ff0c7c209c0b4abd5612b9457df4acfa3fa7848536e6f4abf65b6bd9d116e3400b82619906fb54fc8738a175a0f7bf7b68309a255ba0a21ce37d499d41d467168a75a391e9f661fa6f47440c0be8c4f03ab4fd86380bf667a864aa79420ab34e549b017873b4c443ba10b9fedf45259cca8fcefbb668727a16fc266009426e5e67889dd53fda89b53efdd640f76fa99e6e6f5f627020c8a1bac03fc930fee7adacc2ef419e85f5065b842cdfb881b61f1f145ef3f7ec914958740b62134f0ffab0fa86758901afc3ea48e916829113bf7341023f1dfcab5d365875b37006a7817548f1eac378a43a6940b804bd5a915dd79e6688bb650a3bbe108f6be25fc3f03a77bed92e9aa132c5d7b5c09b5bb838c88a80ddd42acf2172466e2d464270d49a9c8e128ceb670afdb123d7aa91ef867f08f96876280c2e15d2d7ff1deb71c0561650ac9c6ea5737773f5bdf7d770404dba2af402a60994edc58b532b45697ba16143f965b8d5686cfa96ec739665a841e57cc05144a938362221619fc8a6e5543559b7bac50cb29d4436d40ffbe72c8e86c0f16c263a30495ccdf435695e155cc4d2bff2cd38296c004679c2423fab8f3de67574b60a2647a15af39020f7e73a7f0fdf4bd83b0206e8ff8c2d357832ada7fadde27992cb06a33f5296f67d98ed8d8bf81a65b6373f2189325ccabfa538e29e86ed08079250d69702a8cc8bcef86c0477004c7191797b6f20009b58ad3ac7fb26e684a451a06301ca96cc11acdfdfd3e856276cd31b0460b140b135fe8833e07f5543a07673f0cba4ffda55076387402edb014245c7bb9842e4fda42c47cef4598f740d3a2083a08150a846bbc90ef4a9d7eb7090abd3497c035950e86e43b184cc77c1dea27728ab7babc8fd7adde45ffd82e7e6501ea6d17df7340ea85fa333b804ca2ee7199611f3b7f86e346043b7bdda652d57d0ad11265d2ad4d1e6ae34ae0295bb7924a5ad664644f6424775ce22ce30de4c3f840852164cdb6f4322aedea0fa8bfa0766f48ccb4e3be102d4bc83f1dfbc8a2882bbdb819da00d90411172afff7f614deb18215ebbbc58e782f1b3e55e6dcc2dec9477d4ae3e4d81bf3e3f37700000e09efecac61d040a8e652e7f1dfd80cead1547da6670c8e3361185c3d77a31ad9d918b2c5d375287c75d0c52b44d35fef3698da2ff3a053ba3109e796f9c5a136d9c33995d0ab6cdc20910ae33e319fec2892839398050bb4572c6c9227f519b74b7118728886f63b13872139aa2c9b2771af9500653b0d5b5f03819b14caf61cd5c9a3b623956f5fbb761928056eabc1737dc08e92bc238a1cc50cacc20eeb3254b7588a1687e8074e2275bf816950198af4d88f6327d59291934228a1db09f771d6cc274748140cb94ceb73a7531eac4ad767f5702a5743be178aef6925a4bae24fcdc968a80f0e4811b4c9b3946e89f5d44675aff26a741850fea54d384d6baf6ef582f41ff7cb4aea4dfb8e2ede8a58c5ae18c33c006c55c61d12a3adcdf358cfd71081e01abf1f97fc9b10a8fc45596eff2942ba00a3de400af220d9f5d9f6fbce3a87120a39f4421db5cfaa4074f3229ad56e43c689a5b36aeea65cc9cf17ddae908b108133da2f63e30aab375d963603e8a8f19c8bf2b6771c0e9d70afa7b31257e44a0dcbe1700cee21dd736054826f609bfa42933446c88e41f99fa3cbc0665269e90e538a75e17f140ed62220ff92bed0331e9c56d57e3f9373b9a9540322b04d39925375ed29ffa0ab8d2a1048ff36673c07070b8114cf1def1b7e8b4400916636ea57318cfc82bb46b047cbb8cb8e6e565ea27c06096a77af341c219d1640bedf16a9e245c57a8fe9786adff41074c69970bc60b8cb54b15d5af691daed1fa5b87b99291bfe2a158f8f296c73aed463d6b3116d97fe253d7cca0f2f3a79ff368caba5b7497f786f7a144eff8f296cfb431d51322d61c4322f33d62f00bb4c6b1f3efb5e47b4f0b0b700f772f79a826a1600c9b9b6b67e0add77475488ffca804309459e7225acd5cd775667ae06eee0167caffb486b44e8d9caf0f2dadb0608add8da36e0159037bfe64c4e870d9d80efd9c39dcebfd446b09714ff58b9a629e6bb4f8f14de9b783fbb4ee46306f22129cae35f23993fca99b6dbec6bd779e54d90278e03a48d64269c00a8eaec586fa863bec512c85261af7fd759b88e69f33dce20cb3faea09967df5fe8a997ad98f2d0b3afe22c0eb28fe87a8642d5b655ebfd1d89e8e5291fecca1263eb943504d87b5f72754ff07e1181a7848165281622a3c244a087b82901195521b55c8a08ca6a1f631811fe2a2fcaf32f6b7d2a4de9a774bdf413e1d619487aefbb47cf8cb0c5602ea2ad31162e863114470359a144e266e5e52b172cbffc5e493e97d89a68eb6bb1a29dcacc2cba839511736c251423b34a8403376eebc70e70bdf1d23c153ad5346269b241c5444442a9f279aa2a9194a4f5a439284853f1f965f91ab862db7613f488d70888d31a30eaf380b5042421bbf7c14c445af7c5271801a661f28dc6bf78105bcc58f69fcf5ba5466173e18d773c4b44f363171a030db534575aca14cd4d929aa65cd5681acbdeceafc1e7a8751307c38ca1d7f2c82c0c23bd19cff949c2e693d336a7f10e9229a8d33ee85042ed292f0fa432c2ff6dc96eada61e4ac52deddb8694e3816b9894dc977537315566e26b33b4eada82f58e78a6219e385f0aeda159dd75ac063c99b7817af5a63168ebebfeef269f61d81951e0b2b69c4b063ef6435c2522944246b7ee8ab1931dce769154db20bc56404f68e6e66eb5f05bcf3947b9ebc8974068b9c68e89c09bc950a1ce6469c00ad6ddcdc83f21d45e9987eb6c4fde425481dfeba187fc3de209f5d00f1952daa2c20b40a9e504f4427289074264d4b7641ea43f9847cdbcbeda229f33c5543aa0b732be51446130ac7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b06e542bb1fd695236b8dcd98605411c66af9250de9f818cca8bfbe68c5c00a815270fbd3af7100c491e15f6f03797a05c823c766d7512989c186702021d278dd16414b4b5a85cf042f35d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0e1a8df2b13d865fedee1fe3497cecaafde0d51b355255e33d0777\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d0684cd74798a509c9ce28ed14187607169445f785692325785270a8d6dc34d7f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"068921969ddd65005edc88ad01e9bd4f526f4a292cb3ab063f731bdafb5ed9127d25789014\"\n}\n],\n\"handshake_hash\": \"0a7d923bf5a9e776e65dfa6b8e6f00d67a50c12d20660c179c331472b4448066361fa64175a20ae1c96fab71cbb96ad3bea99bbff01e8b66eac73636e8eb1383\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794476cde8b5c71f3e0dbb206249587e5811302e2108974893d4cc7181992cef8c355d59a62609b623dcc88d9a9860d9813c808027c007be1989f0f38e3523c821c9444550512b3f8413577d6b3a4b8c5188f4628fc9015c5bbaeb30afdc77e0b004e1046ed7e64d3b1b23784dd0c70d1556c631cd4c3a6fd935a19f262b678607a3ce52812fd356ebdda49ca54dad5644b5a996d3cc19a9c91df024ab3b2ab7dbb5d88e039958628ea27127d3e098f003fe8f842d98ddde6d288c496bbdc1936e5fe9e5fbbd764afb5ba6ef9b95c0ac76f88da4da44a850633f3dcbd0a3cd7341866ca4b9fc639ebf6fa77b67406cac156e3c4f9a86bb6748ab4d2eaff840118570862fcbeb04299100cf88d740e34f37c44e73ee5055517d30e041d3e78ff1c6af3d85f9b241a87acb576f8603b03b81fc560b901adffe98dbf7796da0d5c2d29f1f1b63fd1f874184ccd34048f7c0ab9519dc4c1e1df4b450cfbc0a9bb203c7a5d02eff44659f37bf1036b385adba7a4c051dcf0990ab5c884cce16f6d19925fb6c40dc2e0e1ceeec1bc85b4485655fbcffc34ef0c7cb85c3f47d9b4ce2c7e8904c97f7e5c33f5f5bf0fa0f5a6f65182cb238ff967dd9e946623bf089fc157014e398a02e87bd4929bb9e9ec1f61b5d09c6fb7d122fd415041d7d30aa6cb531f691c86d949d7dbda757ba9dc5f2ad4b2b51e4f3102f4fa08cdc8b9bb4eeead5137bd95cb010ad019b51f569720ee7292b4d438be9ccc7e376795a79fd66216bced544c3aba0cad04c89fa71d5033d27274357d0a4c61ca302de3ed6f2bc2e0771afde6b445adbc44dc85e2c087d052d6fab58504e0d2fa7b9afb0d80970800fff67ce3d25d1670bd527be1b878ea50ded828ed94231df30e74b6478dca1da14af704fbf98c56510cac25ff53fb1122d17e0c3f1995261211ef1529705cbb09c9e9ebaf5900ccb412b4bc82d1620bdad61bcfa47af8438e456c3109d7e4afdfa195b21fc7dad42f8e4cd7d775d7806bd4a66412e54697f476037df69b7a2b679beb20b94e216662542d4e61e6da4f869f4ced68208e0b047effc9456dadd1562a4c2008558b965330ff148da5416afa153a26fdc7d5a57e79a5b9dccce1b7b18ce94b81b4c67cda96c637cf44105e030428c3d8eeb8a4835c09d76a284ed9c8231699479190895ed8be12106ba10adc5c3dd78c360bb56b1adbe28220428a8205b1134c22ae5df02f829a0b99a4d227ec9710772c2c1624cce7dfba06cd5b67433c6eb8914bb9c359b3e6001ae0d1abf935b4993db6b21ce78b14284f71daf3353f97c47d35710523c872aae0dc491d0e1dfd3c2a535d95eb871f795561378cb5ef42409a29373cf3d2531800880e726f6dc4ef7f0aaf97b0e407ab3925a45070bc239356e488fa6c319f359b692d8099235b89ed76b3e0dc60ccaaf290bfbb3e80e2351e01649a7a5ce3deed4352c5a0cacec617239e92ed7dcee66d7b2ce2cad5b569ce785688ac84d3126a2f0d9eb8692c5ac7ead68d8b25cb131502c200e6875bf87b29fd2b6799003f87b6c000325d7ecc5f53ea2aefcbbcc279b7eea953c859e43a822dbdc87696a2572d2f38c76f18cd4b5a83d3d914920f46ebc6afec1c34af40dcce32af533089adff163eaf5eb864da228deb83549edeaf2be260cf3b56b84e1c392e539edf76d29febee7fdf548d7af4911400d322bb084774e2ccb7e1bb7313fda85d8c283e767c4890b53a9a6ebb1df895476d42c39437f9c466facb4f7d6228aff4d5122ee2813a5c69a9249942c92d38444b502ea6a9e7ad4d70c20e481ecf9bf5cd8a8f62382c761e85a8080daa672a961fd6db9ec4cfaeb691daeac7cbd9ba611476f552133aa49eb26a221dd3b3896d0f926b8faf5e94a513b05846cef1c73221f6debae45254be944ec3d71ddbc27b3a5a5d55a665f0c0c5950bf6acd83a163357b51efda10bc6be346c632408cbca156ee1ed7d56f0b90bcd898637b16b5d4f284523845538e73c92f2af3981d99bcb7903ad0635604444fed7549feadbcb5709a46a927a36d99b67064a16131f85973bc5fad989e27430845fae94648b84b4d04f4fd31092b4b30989e0a2250c3413f95006b196b1bdfd6027a26c55dd2d975ff2a4648153e777410f3672daa2acb8591131b585be01a89e05c40e1f2b1de15e3f912e2a786332a561ada766a49a5d7417ed0541e5b6535c90d73668c0b9a440c52e6138c2e11b013ce889b2f38ca631f77a8d59b2985b9f39758c47a0104a7e48fe6aed5781998a03abe1df7ece1bec1a46ac7ce985f5c0c5e8777fc23b2fb842b497d5122f720ad323b665ebf6a63a40cb3a12f310a1d3f5f98cc3289523d65fc947549a76876fb961c10e9b5eaa95d887a24a2d42856fdea2019ffea870d77f0569258a99147ae273bf658772d923feb3b99841a224b6f1ca1f1757cf609b963b4c9b9a6e7bc0673be88fb345b23928b773e7d49b8f5998002f3a5b7f2962719c1bc8474ff3ea59a5f901c8cdfbaefdd10e14a010eedac45c1d6899a01ba9d8ca274e8c411ff29da08f750fc0f7227de46c5b092f59a9a3a51010e11afc34893811b82c286e0760849c268588ce71065b84723b7721897965c40be97c5f7316fa3f28e4d9c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fdc20ac42f479be9e2f07d6b870fa613b582cca0de56bcf545c4fbf623d6674637dd6ad44b26f0396c10567f940ff4a9a44889b24564cf51a87f477a7c529ad233d3f7c3488b367f63f5885511485a55f3aa8cc49698de8e098eaa3bcb857b2249fec3b5097f2e1ef8735e25229906477535ee4437d8c2c559af918618f75c6efd4108b9a47f7f7c9622ff3c5656b2882fbc65b2919dc7eea311be62e8a8e890127cd80b0295f4fb15e9e25986f72d5c2eb74ec41664b94c0b5967a6469cfa21f2c383cefb17f97f3fe91a84ff126b985376f9de2e3e39095cc67c7d949848136b8dd40ce5e793d730f84b72ff53ac795bf3b60929b57670b03dd8a5387d77533befa4a998f0414e618bfc7468135fbfc89660266742ea536ca81947decc5812514129682a56c09900cf5a3d9bd01f994a4399c892d040b8657b141e96d354c4d9f04a7df51571c9334f473cc677e464986f92a799b631c5b19caf9376446bfc481560a0b43e43eb752ce0110c80ebf41a50f4a0542c59760d0bd14d22b4fbaa1fee6e3694f9ac97c0599c921337943c8cc14061480cf24e4c70ea64a590b91478b32acf6cf4a1f2d01973896ef88f166fbe243aa8032383eb5d6d5ba20c4fb17707ec9768763eb157b3497e13caff5b4171f97c86d45b36094060f4142a6966845acc94c12346a969bdb1635d9977f4b1c8642e41066755e974449fd16116ada6a3708b722352e9f062d8a41b8e3bc7b6de158eaf304b2824137f88670e91f304b90930586769e23b15208aec5f68e2a5b22ac7a0b4cc4cb3ab98fd24eed10b67687ef3aaadb1e55fe6d3cb17d4b22c49469d720a479bc36a5c7166725fd058bfc7a199bb9582ad61433f10864f13adf1e26193890ff4defdec2a5cfc9f955215c0a5be9fe2abfc45e3b285113e9026efdfb43d6c636928502112b494725d25a29bd2fd0f9d5c1eac07caceefe9ca570bfb77ddce9cbddef79793055d04298fc9f35c5679160293eb945d52d21bedcbe3bb7f44d418d8de07414bc359c370f038ac8d2e1276fbbbec3c6d2aa2b130d884b7fb0aeb442ea0b37ea32a7b456f09d257e92ff4b0b75ff52e43d2c8faa100f522deb7eefb250bbf598a4d55fa7eecac9b30bc2feed08749e64966e530b855379dd610ce22535431743f1f1c7354c6b11737517a905d066b337750874f2cd3f8ab031a318f9fd918e08779dc44a1e030d029c4dd4f51188033b2d7524a832b1fd8f28ae8d432ada34a073bef09f8d0c20c033f108add0efa45f5be582e6b50022feb4116d16ebf51b36a3343ceb0e50d132e4ad837a92a9c3bddf3bcec2c0efa2a0532aee8cb6e8bf45f420966dd549000690fc08c45aa32736470285a90b41ac1bee75b471b4223fdbf90f1248734d3f139089f3eb2656e1e9126b4bd0706dafe5fd12132c0b93a8ae0334d866c8398ab66a8eed14c1d6f4d7211a44efea81341091fd44222c7977c7586188dd6116ab1243f78a47897c947f26e37005b3f47effe8b4b0280a1fb8554542c45c2a28fb766a5518747616a54c80aaf09618d9b22ddc4be025fa568b037a49ae8bf25ec797e75655502003c0223f04b132edc23f997e6e8f4df51a1eb6f3ba7c32bd0574437af9b5c7a87aabc0ab8e391351a46d7b784e4bfe772737f908604f25a47669660e12034a88e7cbff6a451d1f680efa6308727c2575c6f7f89500349deffd6adb7b92d5dca1c380f2380e9deb1578d34a9dd65220f97bb4deeb7e50ccd9a814b33283b55057054f32c17b9903fb08e8d4b6e06a6f7a69c6136da395e43e34c8f3c2f39ddd62430142bcce274510ae6f9f4d060d76867fcb662a27228cc77acdf6f78aad01576e27f95e7caa48a0e04a14bbb819e3fa2aab3ac555b83f7f4f1f8e620eb26777e579fa50ffaa176aafe162b4b56a5dba3a4ad53d80d6d078a6b922678d013957a2bffb7f37dce491c40407cf10f784a2e545790cae3f210745f2c8201d8ddd3d9fda8444edf346166b58f05bc6bffa83363e54836ca62475b4312aa760a2498be7c27919c2b7cd8ce64890a0df9218ffd6ea7363a93f1202f138ac56222c3ea64cd7524c7229fea2338477b8251b5a17d9ef02c81ce8adcbb0738522bace7736f958194fe0dd3f74a7c37211c3e2be6f0441e4d43d743bc78a7560e4ee93d7717829d4e3a12569c96de5ed85c73cebdd48971f1008263e943769a695a8c54816262ca4c4d7fc38560efd4d21cc77cca67f28d315ff6768abfc21666bea49e0dbafe88cdbd4deb8834edd63fcceaeb92d50b2b08f07e81e5f6bc61cf8b58cc09ca63640162908cd951a0a3a2efaa2f091c12a679456cc12512618e7e9b86490ab7f06da82876d2c1d4490d26d7c1cfb15739c5deae109194a0cac8638bba024608483e0fdd68efae5e2ae1b693e54f01308e25adeb0596155d0aeac3ce561c4760c86f545afe46a6380663b3ee45c4457cc3cbe01066d28742fc64817e937570e652d227040efde0313300be1b5c63b58e89ed6ebd442a212cb7c4826e9fe62d0beb63e05f7f5debb80cf93bb7d183919bdf5dd4ae49776080cd50445433469f5c607c129b8afb5515c52549248750462d30ff756b50f36753edf19a61db23d72eee834ab3754eaa490a0518310550ff6a298c659fb5a555092c69ee73fcfd8b6f848f5bf96bb4143e580a06d7bad998af8b2b46ec15589fdeb64d13259716ad40a402e6c97f714ee4fbf8857a5b0875d5113f4af45e50efe5c69d1c0e6b14cde5424f440d129f38e901b6433e7c3131cc59c4a0ab877a47d92492e07d967a4df9ba7edc9d8a2e06f5c79ac1973b904c3274c4a3b695fe87563c9f5340434391ed0870fc76062934f52da519b7db3cac7681e4c991bac87882206479c3c856475d7ab8d1bf6d6906d9810094444d59fd832887c753242e1bc84147414ddb3ccacef12ce1cb28415011f8d68ed736f3a46b7520414363eb8976f47beae7cbf126267c870bd072d2342e75d0a31c9b25bba17d746e92f47595\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"29378cefbfa67b77daf4b3456d41c9aec6b72aec9cc91df273c174bbcbdd75e3c578cc84effd66d1c9251a1981d2e30738d9a1443c7dac879dd44434f46df1e1d613f6623befb3834803a3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b576f785dd41ee976a48cc48d947494494a972bd0ee00aa5772d64\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a1b9f058181a00a2aa3666a6f650d060802d0999d0ad03ca5cec7d5afe5df2de67\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4664f37dc4206e624ce8e90168e1eb7508046899f015c53aad6cfe8ecaac6f935117198410\"\n}\n],\n\"handshake_hash\": \"7405925e396cd54222e0b8f708ac171350ae518cd4d8ef9a28cf604827545272\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944acee81d92f0251ac4f8cf29bf79e7662dadf2fd58744f2c7c881d6dbb2f2743fda207faca6aba314c72426437c758c0686250ccca5044676ec29d984c917a3211a40b2a0bc7e19ccfa7e1082cb2f99935443519abcad23e90000cc89823c3cb566c5d5f1967392d47ad4d9979080efcdf5754625fa870af47b2fc95283993b3e9fbfd6155e20bfbeade2a33e3638aa6a050723846ca412bc1a134c39c7e57e6eebcd3c9e864b6d1e9e2823e2ef3418b0b7a727aa55bf16f339145adc5c40f2376add05b50b59499acaf99f9e1352d2a8acadb9173c7fb71489f0817f2a6376d40dbd4f8dd077187af24a936e0b64d2039b898da58041fcfca08e3d9a3a4e08f6a77f186a70d2438fd5472c30db1bbaaec572ab05b0ca36c1517ace9c2585a1ad3a32514b6457d8438e587cf13fbe28a33af81c6368f511e5ec131cd0b00f0a5d470c33eb9116a13af90c0974a1041807e08492f9b701b765a3c5d6e02a950d127a05eec2b1b2e04789c0d23734af93a7ee70475ecf51344fb0b7397aeb29bea02680329b3b633406f6e6438e603595f8e741369cfe71dc6fa4545bcd572ebef13a57ac0e13b6c4bf700ad43eae1d67c2889100afbc33482536b282c1b21ea3e66ca661e89cd8a51d78fc3e79548103e760381a3860b25bdcbd67996774b8c26bea886690e1043e1e042d0208ba4b99b9c3de28d2d5ba7fb33bc84173b45bcffef5b7a1c4d12eb902047cb2b3857e0017f5826e433458a48375fdb782325311d78b5387d4ecf2ef0211c0de84e707e340efbb29e14e7b7e0234bdfddfd4c1f4c85118eff04bb164b38964c82f405cc60be306891c32a50675a9960eeb6a0128e8567139526e5d32852a8504145b59d6798b67daa66f890b08ff8ff2a4f34d4fa55e9ea1ff408afd58ba970d7ddb273173165cbc5da1c9f207ec7ab334bb3f0678a8a596e9e17454431254d56e43d6853c9b98e0702a40f568f604c139abbaaa49260fd7fdb0d175e1f7704d15b64db70f2becc3e72cfffb2805cfd761ccc5c974945357a4d1e9323e18e2990a6942af7334078c94184a1c253d8f464a4edb91322de37b02958bc9ecfd189ec444fb8c447ba4d9377f35fba0ea716232d6d2153a7d5a876c41b442d2a610521cbec1c3c6113ff590297947b2420da10ba16978aa423e1b6c506ffc04d4ce28f94f058bc8d1db23622beed83c308049f8010b026af13bcf0db750d337ac57dbb8dcd77aa291d1502127f6d9af0fbdfff9d83363c99cd8d1c6a5fe151419d0d479d0f869d77a00feed5918a04a05e185f44dba53752bba1c545ce2a400f91ff79d7c15882e8e5ea91c4e6ea2121f8d4b1cc0c6b8dff710f436848834052c7670129a7830efc042429c18637650a3f3f9a7242efffb6f71ab051b767337931cb43bac8f7d9fa98cdc271f15031a8e72a97ed19ea11f8d6baf9ec1b1b36021b9118167c2f1465e8416e1015c0d4dac22751699112cc939f9e9c8f7fc4f401073cb0bb251baf3d122dade35cea5ae276624027c59f26f565adf6f334943d244f70d2b24940b98de00578f27418e5e9613ac5658c67e16c495a67661b586dafa2d5bdddcce0a4d4e5c5395ad07676ac77a460adb1b300018ca2cffe804000c782bd930c7a3612f01123d5484acc8467afe04cb068b6294c7e1d9fdb33d7d6fecb989a0912a5b6a95b7cf3104ddaf104d65b3f84ba269e55ca9f26bfcd1d621b50253fb843955284eb0309df2059f354661e9652089fb2c3e9f9f9a283162278a3e68b3d1b407bef2784dcf325e4ca3be73fe059f7bba166614e3528abbfb8757881c8d295ebce4b8169fbdbab0cefcaae76104c3eade22186e3b543dd1c62bbb2d1c872c87114465d4c7d070db8ad52e6043862e9c94f66e93fce2579c2771f02d12467dce04f8184ed949a856c75b5e03fb11d5bb2ad81fd8662563c9b92999b4e09da01fa7adf56005044e5d20c8f12e1db5c5d7b1c176aa7499cd54c6cfcbcd22326fb605d517f552436fa3ea8d415522fa07eba88e85b9ccdfd09fa011eede3a8bef2a33fa051e2bc57814d5b19aa087913cbc9a08fde8b7709d9479115f912474a4826c19c746ae5cdafffe2afa49fbe38000ebcea88d2f2f3c7693c5904aab6ce9b8efd8af0486c12127169558f43ad5054a19d67ac65feb6ab948c36b08f8cf9778255c1eea9fda9b90f5eae7cf19d0d9014bc6f49481683d8c7c0e5b51577ab8fb0684e4a71e1ec37a0edc58fc1597d8443bbe6b82eba2265b6cb40cda965c761e56e5520b15976767497559958a6ae3b5608449a240eaad3b32eb6256374c57c660c9c869ec03c52ec6ec1755780ac49a0bac6c1f4aa620ecfc76b6d998a0a5605ffc3a96f4bd0117aa81121b46c2048ec7e0a0a09dbbb53765363ef349536c5d335c2e7fdc967c563e7f6c922c89eedc7928ea6540cb472463882a595d266fbf6ba0d803ff4d6cf04f44c67498b03ab6a7324ad860936a7c1d63c581f1a792a34f42da4d6357dcc741d2a24334cae679b23559b4c5e10b2a338d1bdcfe2dc4b9a39970d8657bc009a9991cf11304dcd9c005914876d3a6d44ad92c77aea47229607c9c090cd87f0f59f62b4bf68f4ec444d927f859a604ca79b61cad596b0348dd18\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438f84dac8ccf2928921902429e8bdeeb339dce9e9217236c8f145da8da6e1eb531dafa33e187ae19f3195cbdaecb5bc89d92cf7da1eaad075399bb05ba8cfee93cab77612aeacf3726f14c6a9a6422af8a8ffb5ae5cd9b8790179df399a74a71d29da819f2cf78343a14094a4b07dbd266027d2ac4adb0c5a1c56bf1a490ebae00c3087ce90951ec20bd5d245d252683e409a25f8d05631882dbc4bda5138b136c0b66083592deca631ce7ee1fd4bc18b10bc85cd4112ad35f30c9a0321e1569cff71874be413cfee1821acb0e830fac9463050ea182efbac22366059c8943377aec302e0ab45055a4ef572912f4b304193a819b658fc675bc183997d3d77e0c9a3b6051b1cfda984797fac59c57aadfbb60273263dbab99f078970962470ccac98882927d2b658eb2473d00171e50a637ae041dd5a47f33ab23ac7820e80650a01824d48250851ef867779afaf89d217c9a131c301617087b91aa97ccd16180a126041d4898c33faea6498a735d89de4585ea133b124c0afbc7083fe1f3893847f330086f9d532c05f20fba6bee279a7a36377e0c501fa87a668fdfea456292ff886a1bfabe874ca37d7b8766319d43b8dc9e323daad0bede7cf89bcd251463c459b7d913b6be81dfddd6d73b223edf6bd5e45539efca9676c011a566de609bc998475500e9895ffc5d4ac57e65dba6641160cfa2b01397576c32065ab5c9b9df149136057161eb7f187ba61ea347e98f5d3dfe194e764a6170f2ef44658229a0265e696e97d25b912703f1bd8cef9772eddc8600048f8a990804a6c70d6ef262ced927583418fa9a916a4e1047b3cc7799a010cf3cf28923fb544059d0cf2121c278bc9437f8b9583348340fec457745d35a8a8744b3573f123b9054d173254aa126807373111b5f2dca69448fec589b4e225cb92864c79e22c3a7024e4c88223e624b628742ef75ac5e786830b14b0a75e542d847e9f9878ddd45b840f177e3b7a1b61bb689a1215124104afec788c2faf66e3df91e1e586daf138ae0b0361614f91c9e1d930523612ab2f5a7d211da66fe54f2cc87ac4c6b4e82c6878a5df850e1865b03c8c5a14e77d2e01793e4a62cb1859a91a6fce9d3582a00dfb7ce90ff334e56718ed4a790d482e51329de40231f47b31d6bcd0ad2d8a8cfd7bb9db46c9d5ea49ad33720da1db0c4d67d3b73b14befb4ac47649763502674f5c83a9799028e513915e4d26089f16ef3b4040d10ae2c40cc29ef1e875ef327f54d25353bcbd301ff042d92001a4b4699974ffeaeca3348aa2e99dee9ac1baf95dbe98f92a01e6b90c1a5a20ba1a3459b7eea74ba5f8b954fc51e32f80bead60166a5677be5ed6de15533849fee494cbbc6e68cf5a2c4ce465494d2c1bddf8bab36d208ec049665447fcfc99ee7d8fc4b17a3ee4a77a34b66a1fd27dc4544d8b931deba0da4aecbd3585130583f0344b6b00f979b57db09b967f78bc5d5282ab1929d9d981845a2bcc1bc36c2c7d9e9c3de3d7f13f6efba9667a01d9cad09ab37f40d3a460a6741f5b6324d3cf1af05b3d4ca06f3eb318283a20bbffdf16384bba5bd31f4c98090c922491b2ec2f95ddff03ccd2ef0486c00f79990687e886e8fbb0e8727f74b00c6c828a276f994ecf38ad7eac58e305d6a9e48945c04d210f9fa9a00bde5462c5224405ac06f60fab36020e00b72fe7c5e3a90cbe45e9b5134039b47d3020fb77c7b07472d0c805a03318d02e05688746f3518ca4b46704cd7a07f7d70ba3884f481229efc64a9de883c2ffca512813359d3e7720e47b7a0dc5d1aca033ddb04d516523f29968d0cdff695c5feeb46087a3954a27e300ae4b5ddac3ffc552a7a431a9649576b4046ae3eeccf014dc5549238073ca7600a0cb92c3377c2cc312fa9041164e2b883cdfb2870f95fba43d5fdce05ba4de56724b94656f7ce19d8ab756e53cde0037b175c9a4738698a6fc2978233e3afcd65aff99be4aa6c703dddfb612cf6fd8db5c7be9e02ee061e7cad779d4d2903b749a89c3a3dc0bfe1f1aae38a90c95c0d47d328db6c1b3f623b170efd58a6ffe6c33cd604353f973aa8885d6ca8681eef1568039fe2a23fe98b9cdf8c86585f1b98e317903f01ed8b86f6c2db1ec06bcbcc30762100eed5a9784d40de681cd8fe8739ce7c77e3e169fe660b660f2da6afaef6dedf12c2f0bc3d7c22366081de203bfe352f68be768162babf1c0abacbf0f8714a2ab2d4ed6f57e09dc4450b05466f0c932692e78009c546f540c47062cf5687d7b48f6bff5d5730f40cdf8f6c3d808f37b3b500c5f14ad535d22fd005ff00a50c4211462fba4b615bfffab06c99095e4ed668f4ea9c0509fcdcdef60415c189624f5b203f242018fc71b0fea90cbd1e94d058003c29f83d3bc97d608aba43cc13b80302967f2346561247cde504e23286249588858e78b9ba428d97a111c10f0a89fd4e1eebb0aad1722b88e3162b67328545e1ee7951bf5343019d5cd2b04b396be4b47d2109bba5a2ced9af099b1abf3a808eb1daedd3af0ba0229d8a4edef19371569db620c02b28f3dde5e3d6892bb4ef462f325f56590e165f7b2e2e1648c4a89407e30d713d982bea71ca6b9b16ec89271a15a132c4fad629a84188fc8e59e1f38a33637572c9f1e18311a3440d829233a33aebd2b95d5b1fafaed1dcdd79cd94a38b229127ebd81d3937cf2ac7cf10ee135e65d986fa5c775778271e1cd3fe83f0b46a6bf2e28709fdb3e91f7ea0362541d25bac94210038e7b9125ed5545351441f2cc0e33607e94331f8cb725085cc96959be1b944cf3d10680b203ce681b0b202357344c53fe3aaa9bc7d9f3def9cf96e9115c314d348e1e6a9e47e9325c2d1d0b1f9701651577d8dd6008be85ed92007c7ff8892914499df6fdb6c8c24ca017729be3e5e579ee4952f45de807886a74df48b2c40bb2fdd371cfddf9aeadd59c02f5438ef581b343a97aeef04cf9984356e480ef213274b5fdcd2e6798e79ae4e0ee5569e63ef04c98f53c300d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"51bc80af07431b84bc19b36dad65c778ade017069a0a089c772fa371ecf88ec619e9cd6bce593ce9c5e2ca26ca7c6a8897f8011a99c94512de6a202cccbd1f8185702ddee3a4d0ebd57ec2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"05c7aba0cd6b37ab758b4162b4d1195910e6e3e671608bbadd6722\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1ade8a0444efaf451f59258b2ac3cc20452b5c7e5ccc0a7dd4f006ce960f89c55c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4cb6bf0d2bd5c9dc03ec109533606ca913cd22be153e27b47829368144cd750905b0d0a8c5\"\n}\n],\n\"handshake_hash\": \"9f85008b16bfed3d8758f9b47bc5d84cc5eea127466cc5871c0f08761dc68743310d2fb4819d419a8268376305007a7316f5b15903be0e87417f56418fba0675\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441081e0fc57bec485652d2b75b09e09f39d867a05ff9cd7f258b2e1670f8ed8c3e7a10adaa07a83f32bc5a7006dbc8bb8c9220f2aa7db67b418d2be7bd74445cf6983adb477a9d82c4e5406f0ea12c104369ee31b321693df5d9182463b2758051f37dc53e212dc74\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a86c4297ed0e09e7c984e2acb561fefde6ed70d507c0b17e56fa8360cec1a146c361505ee9c1eeb496667dc9c53d6a660a18e9c76593e48131e3aa55fd28d50fafb16c8f35bd6fff7f5a06b6355f97ec70b6d44441ef0ad9278a40a4e3776978ab61486fde26042a57799092f522f67288d54428c6a33e99f33fc13e3ef198dc2bea01e02a153d485d77bc62cfd93658233899ae34dcee\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5cef7e5408854cf4004a909b8feb60b4be398c71a4aa4b80926d5af4b3606b489040bc9daeee63a41b70f3b332953f2440b8a9c03d7bd0f2edef200e482ff6f450a6e2b767fa2d30cfd745\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5d8971ee1d2e9fedd3b9df70aeaf7c0037257e9698a2d86c429dc6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d0b8a81b2c5b2047bf5fcbeab9c15eb7dbd61fb7c76b52552e69ae5417ee9bc88c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"28e57e539220158aa44d29ec4ed2edb69601c138f708dd38df432df69c976418c2b2a06ea1\"\n}\n],\n\"handshake_hash\": \"596b9b5014374cf8089bce23762898d6bc8a1a704374770fef65d4378b666365\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794461677a8046ee6a97229185a38e3ede1fbda43c843305bc20b1999c6e1f67936ce42a7b3fdcfabe391c3143c49573e52f3dadb2c6b6cb0f44464c2d470953472007ac4846b7e3bf25c98174dd9eaae2179d7644b0595a615865ea7b2b4f74196116ceb4b06c081456\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e4dab57699db4fb9562908d482b4a40ac8a129c98cb4475610e43e3438c5b9c534ebe20ecb232fbf6373798dd494a4bc27597e810c062191ad6ef913173396d8118a1f27b330fc2653abe080723fc4c4f11c1ac9959f115a758e75925b60099efd7fb5be435d741822fb332f7d58fe4dba1541e880932e944bfdd0468b60edb04c5d28a02eeb04d2e13b16d0bb062613bbe7bd48ec75b9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c81b88f53a7ba2436112525b807d1b9c3e8977f3ab51e3230a41bd0ab9f981d9449d6d07678503cd8530c95162cf0066c537ec57e5741315fd42b1bea37ba22b05ddeab76563ec08524fd4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ddc32dfdd4915cc159591091de81e5ab8ea3298f730b46d98e90b6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1c54a9e5c04d8b912cdd855e05fb2661306d24258418182f5aa793325aefe4d517\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ecd3ccc892a96b76fce719b68beca72cbed96e7602af737babe1c70d4a854bd0f28665e6c4\"\n}\n],\n\"handshake_hash\": \"c626a7d01c7fe18460be93c01d596489eb5dc8d384ce2b864ed82efffbee5a3419576488d2a80e6bcee90ba88eb529f1ab856bb702bca8334f8411c763788f44\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b1045cf3fcdb15a334163cbe94e0eef2f969d56d803128cd322542fd665e5a7bb738754344fd0b2f65af1b62c16e85785056a742959e9210a221abb5149df5c01c4b44e8d7c1b928cc02fd73d449d4c180cc05e735b0b9bbd06d2e5f012832572d02b8242ca8b644\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c8e3475e1e486e9bc75623988c46abcde33420e8dac73f359fc3a9e18636da5a876b53721bd4d846450082b9df2253cc6ca363f0c5074d7fb6baccdb4518c68f5f303442a4036087558a57d0a38fde85852e9b28247c219d28e2ca6806978510abb5699c0dc9ebae7af55f8ee14065e5a0cab7560eeacec873b6703eceb83d6abd7096967cf2b6e97d43ee67cb2a4f8bc2fe3d34a07b64\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ba0229913bf5aaddd4a1db9117066cbf3f56994ba0813c075d12fce9386523b2730a5893a4d8693579d7b3d35cdf8e8514709248239ad321adbd8ea58f455f31ece01c6e1015213342ea11\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fe104f2cb3ec01dd0b57d9b56d42c2c36376feb52e2acd8a0b4675\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"04169b35f75ca3df9f6fb8781b018e859b63786204f36a0a43348bf11f49c173c9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"28b5b2c8205b6a8c7a49b233ca4229f72a99cc72fb26305a5a21ed95058121a01668e5a1ba\"\n}\n],\n\"handshake_hash\": \"3765a1c0beb397971977a42a43d1fae6288d6131de557b7dd38d42ba2db1946f\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b8c1ecb41c3f69eb3d1eeaf33283c441f2453a999bace8aec2d8e934d7b2dd051d10afd93931a0fbb7b25ec9438c7954e99fa06500b33099c58f1133457cfbb6fa884fa7d37755fe3c1a30386f39d6bcda1a712cd2fbdbd1b5bf9b12fc4d815a9ba26483bcc4d2c9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843920c152ffe5527f8dda6c89a0520545b4f08dad43b843ee4e8a5fb9f319e41eadd2e37ac4f7747cd7f76729adcd05afe4a6445a25ef959f5dc7ff47e0472064a775a75c247a9009e71b253334ef1e29c7c7ed0df1a2dacd46f4295ee69a4a43a1ceaa3c8a524a225e61c470b3ec8472150cd823d4bafdee8c3fb16f9c0a453dddd684ae986a0513d0a09517308b9d9b3acfceb61f5d157\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1eabfbd4529d592cd8da05ca4627749e27b9a5e5f2eca5596cd5f8c4b4fd43bc88fa1c3682f8f8e43e666af248930e0c152df87505aac977c07b3065e3ba0ba7f5234ca8f2f26d7bf221e6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"34a56196a0b1ca940da631932dd4b3a8e47b35bb557577dedfb262\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"25c56b53c269316edb366eb63f36a541f5bf8b2f89cde83f5d5c8ebda0ab9f9b23\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0a4bd57e038b9c5a49d3db234c4384654da3667a7463867bc6702e6d37c84a72e995001de3\"\n}\n],\n\"handshake_hash\": \"9c1245bf2372e266cb5fa018bcf9a40a064ccceea73f13e7fd6b0d4534efe2402d67e42ce47138be19b92764a08b71e8ac375c7080873c0f69e65c2943a6c8f4\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444eee755abab0093c31892ebca1c4417017b42c68d1c9f96ebcc9f831bd2fdc2d4896778dc3ae11d745c0e1cf936077df2a269a3d4960aa2aff57a72d38f74920498693c220245b56bb60b9cc7a741591fec8cfe16035abbb076656ccc1e686cdebade903e007377dc7f1ec6e0b1d3ca5ba91f2f3986c48bcd1cc092e4aee580cc3df8470a416c675abe0698348b7dd2476f83464b74836ccc043f2d5aeab2ccab535adea12a58ad7563be422dd85b20b86193a59d9b16cc3e8ee5fabda1ac6fdb07d124cafb5407048a45c1e19c6e3ef0f2bd8f300daf9eab36a81c359e867c84edce5bab3ca623f35035d99a09ee1cb5497f1f16ea56c88aa2208cafc86b1c0e0211984b79c0c34f46fdbed402ea6a6bf56ca5165cd931e7df538d2fd3ecdecae2102a8e1a75b71284b7868e40f8917be6a8374df17d6419009c4796171691a62959e3a49002048d1b776903a16104bc603c25dcb701d586156c8873cf621ffb7e8da7be3355426114aac1ff9061495e122955424070fce0ae7149401f4497679f30b18326683096d75751004ba32cf1c0e5a4090e0d5e5d73ab4a3c321ecbe7b49af96019be2c50567ccab138701ad803b6f154651c155b3d56435c5b7da92f631e3c0934c1f99f41e9466640ca03b6f88d0b61f1cf571ab3ff865c35fe43da81bcdf1c9ddec43f91e83b9c30c713ef39b7e86f89c39c23fce6d6a5469822db27831ae5e9e3f0dcb4af92aad4ad5a75bb137c747645c28d61acbc9b6500f78b471f3f71b004281d91ec892cc1691c74264ed5719fab90ab43d0fd967fddbfc51813c496d78b92034a92e4188a84ae86c5d3bc5379d290523c0e8e55501cb43fc345019cf4051e531fa145a2a3faa701228b5e6102960d6a22813bab0b626ceca7ba32ad45685e0d77c898ba6c4f5418fa8a0a1fd8cd9755a7ac617894b7ac185ca0cc6706e2db067ccbdea15584338cb8ae16ef9b22665f38b66f8a82a13e1eef52a46bfa1d164ec79eb6b9ce068daee3a12416aff65a3dd716a17ae839c36e147d0ab8b3d83026b1866aa6a5d945f3b3e7d2df384b6f229cc4d0a2e8682dfb7156d2729e4b5287e4cc0d3c2def6ec55688150fcf595748626f51963fa8a2fe51fe082326b38be548842577be5b4d0034c46cf563d320cd64d11970c8432cd3dfd21ddb9ef714de29fdcd15e071477491e5614c6b36b8d8287c6924cffd39294cc6cf44c4dc74017543a4102c61eac6e3a5be61ed166716ae9db8be2f05afd70e953fbff33b20feac389b9e6b6d1c3859b6898901ba43e52e5bd00993f573c341443697f55fe7d633eaaacd5da10a13ed339a00c19f6d072944ef4ec2fa220088f0a8a0bf0ee5e7d2952afd78d28186f6cb19f832c0952c3523da252cc4c917bda2e2a5d2a7c472ab6c22c9ac201aa43d2ad2380d52037dcb0bb0c1ed9195e229722bff759010a62a841c80a81c496b920bfc1e6147f42caff264f6f841065a5dc623dc6f92dae7f7ebdbb5cdde0a620e1d66b68edf04c1a68b2607d8876521db64faa6f83cc7eadfc457204f5b9031306f3388deb7019b4f42b42f81f5ac3fc3fd7a294d0685256ee0c2e2de3d9917ed8f141b96bc4084350aef290285fccbcba4cd8c4a4ecc395e5c0dd56be49c0034e3602bb068928cdf90faf3d495263d0da1726ad815d3dda52154a0eaaa07c87c5b964b37f5e8afae2835f13c2efabf0b7bc3126f20a7992b06b82648025c2ccb5a6ee440a156ab462f7df8d024164aee1b33ec27dd9cf14d394b1333ffdb16946243696a0b2f2543cc87330ba37d9b78067926d94531a6a81ec80d1da1991334f91aaa6b3940b58adcf474d9146504b4545c817f1a5dedeead783a07cc09caf2c03fa1aaf2ad5c66aace69f0c9f1bd1b9dffc25d5a55229e0abbf8b1e65c8983c050df566853d374b14fe3533a2ae254b82898c509eff87f01036433c57b976ba678d4d0306a2e80963a227346664801b960565820e9d19488f1e0bc8addd893db0c31cc00c5dd95355e7d4b98c2bab4ea411502a78a12d087aa19f9d078090b803c61f41208be7982de786014ad2149b86a48d031184e9fa2130fd98839df2c940dac6bca9b560e755eb6b8f924bd391665bebb3bc4914d6b5a32ca12f218955be0a496feea91523daa3e3b02886e484cd7092ff3142c425ea0d7e3dfdefbdf78dce03808e18d5c836e49d57eb11bb999d27a3cc3a9df7217386c78d405de6a036367c0b359695c037c7364b99b2685fb01ada05e7adedbbb7ddcaa16bad18547f7b0244e30c3fa39d07b342a8835bfac44c8c7d1cb90f6dd5df134271b4638cff3d9e86618cc500a9b9b4703483648cb895a62bbccf4812276f1398ce1d0084b2afe1798224a0c7d3a8ff2e0d7aef76302d2fcea9a057b860e85abf9b0f44259746e86e74347cd97e6823af2cd5c9d05f9c012899e2d061af7d97e64630119d8e33ee2c38830128df5fbd58c712a78df4a698d7188587eaa70f72681c45fa8e828193831826cd64f610d91342c5534726cd1db8c3ab326f48eed359b3ca357735787c00ed1304a7c21b165e9798830939586393d43bd78dddfac65d70b5c78362b2b2336ce3bbee78c1d99c66200f7ebcf5bfbf25383cbbd12e8fc377cc\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843418235b493567d24746d5e6c230be2f60fb87268ab5aba4d327216ff548932c685cf076f16a3f70b58f3d4b52c4626239a916135f431a9b6d74c8afdb87628015823d6c5141bcd2ab5eb98d72b92364f37348fdded75de266a9fb73edbb36637500bf07b37976b448e792973363da7d1117ed43f979b3af4c1393dac8716045cccb78f6665fd49ef14ce7aba73b4817c75166fad5043ca2adec3141747d3bb6b6805f991b63a80ad23a664b6473c73c25c4d946615af49bcf14a736a5fd1ae6ab63626f08b081bda58956fac0bcfb298849acd3199eaafd1b8cb6fe648b04561a09f8c3d8c33d160733e6496f4223ccc4ff5bff3114e28585ad8fc4774fe459cb1678f8a7b400709b027926223f8be4e37796b0890068e4520eb324065bded37bd3c8867d5885c7b45dd378ede96719eb5ad6e3f4d8d73db6554b179cb8182cf4b4354ead4695b7e0585c9496f81ae8cec1470249646b64a599f0692893b9f73dd2bc83d3273f27f97e1b22b2ff973ae29c3db5886a0406cf466c0f099c7a4e88f9aab45ca844714492e25b917769ef1a30efee1d89996ab446f4c40d50ffa78a2ea6de6f8e0e4901f7245190c764c0877ff9011fb43787ed2cafe2cd788b153247aabd43869006addd1c3f967cebc7acf5f90ad08cee48ee6aa62d7bcc6bad51a51855a94829597c09c999a8cf88b5b25b50f9d02c2af4ac53d2e0a17a6f45be6fc0451df0b177b19ba720e07ccf9197fac48d6cbfbc017d6d1492209b9efd6301bc4fed07092469441a5e701c3bbdaae3ce6e16290f745c3280a541f34b8ee0a9b75eb5e9c120490488d2851271d129a0b5f8d805ca1e5ab2c84f1c6cea8c8bb0b44ce1ad2bfa12e14d96c2f7c02ef9194f3342db57e0952f49086129913423b1bd1a8c4a1db79dcf0a6057d8b0e9260310b17fc89c538bd2a8e902c0b8dee6ea5195bd7885f05993ec6e58697d1eb43aeaf6323c77fb3c0b748c7fae0e7c6b1e669a94e1d7c7cea2f344498853054530c6f76a7b85d1e19caf5a934d61463a12fc0df9657793e3a19ec2b506d0e3cdb44aaef47eaaf1c3fdab5e477aec06b734b2b364f0ae93266ea38f4668a29d0c971fdbe0b723432dc43e86b6e0a75cc33d5ea79aa33ec33fbfc03ebaa2d8b7624f4989eab74dedd0215e41589883de94ecf4443221bf444ea95aa233b3310b10adf2cbf8cdc5102ee0a5bc6c6ebaa831636afe6e793d3b93c387b9afbebbd0097236482a3196331db8c39cfc441c520bd489b675c013f20db3acb156ca348cb58b6d2b0ba899fbdc78c4a4ade1c27a9959f1f8022595ceefc88f592165140e090a37190ea7f17c07a8e67565a91bcb9d5f6c0ada9f2908be0b42aa2c96d95c68fd617d26d4f1e204b002979250f7765e57dd9f8849c15292fbaa1a5817881f994442ba5c7f15ca1a3f8f8a37635c65e8b37f179eba135298b8d3ea4ab9b716d66752f19b7b69189fcc54ce95e9c8107a27bf5daf09931e6d5fe708817f983b0028e94f1ba37bd3d04dc442bd34659a27b7fb4d7f1f157e09d76be73dff56eb21e17856025c19aae80465a32f587bafed802d2cd3ddd6b0e94f9d6b6a5804fcf79474d9d02046fc558e01e0609ba8bcfdded23cd1422de488ebd24fc1ffd3f0102efd7af87f3df06c45c346bef0ccba854353f4a97984f1b5c2f619e74bd48062776d5c68074fc15ffcbf4f19a05867cbc7e1a1354dae2f29f96851ad60fd443718cc95089bd7648cfe0958cbcb05676a2bafd28f4d7ef1a20dc01d11d35315ec922c03c609b4193a4ef4dca8fb1c0aac59fd8d193de549a34e762c0c2b7fe10d62e98f04702554683456d2325876dd7d2857497afbbe3cb230411c8fa5d2bd651ee3f38e157c713c6833c4e3e62885f0aa6437af33b3a2114edd780c3f636a181170d01294ee5ba4156c716dfa8f7cd3e08b4bfcd0fdc29ec8af6321a28980105ce477d66c0f1136fbdfcaf645230926a4b2aab8ceebd31cf05e36e3bd92b4d06116f48de87be833d559bcca9d1dc93334ad770f79777156402b79c2ee4df8453da3e419bbfb8bbdddd70177545c8c1cee99e1863c2d9b2dd4cfbad3d87b82fb4507d56cf1519adea6ae9cef349abde82029bc848b81fa8352f4eefeea3bd0a3a3cd8992abea14325dfe807b7fd64174172ee2110a7f400d066e1a9f09c6a51cfe275e2f438b790226e7ae38c3790f66a60c594297ddb210aa5e8f21e77ada3100f97e99faaf6967715d7edb19ba43758ed7f87140ecd338310fe5489080099c3dd1e08e9a0251d01da0c367399ddc6e532a651ce40cb260118d2d3167e04f51b8cbc274e408ec42cb5c59731487d2bcda403a73de998cb9e2957b9d36c1030fdc403e50e41a6fa02638542d31933c88f2aa6eb636ca8103226e5394e21f0653d3b07221fb7cbc293147eb4158d41515c6bcd1003d6ec077b50f1f3577d82e5c9fe4252c57e2cea0b0e1066d8ae9dad180c583bee54e9df79327acaab095f7688f5b8d0627770a378f3008a362c321d7581666f224688de51fb22bc462422ce562c57fc5e2909163719cfc86215d4684f583d59c6f1027bd3d4c2e2945233bf60ff02b6178075b1a3b91ac56eb0942c25416de10996d5a5a9fcfac496826d0c3659180c6488e2adac180dc508d62b82043687fa5deb7e008281b334b2bda4f1d6c8470f9c014fc653fa2b25d271a1cf28b50b5db9858f1fc21c1a7895472854119e04d5170051a3a0de60e50d5731036f3d985f5ec7d7d7b125587bb8a59398178cf70a3b1c5441a80f43ac4b2bf6b305d08768d4ca962415a373637962b19ef335f5899d5ce5e64ef7eefe0948c2bce211d4c6794ff576e7baa64e9e82b1e9e4dde8688df4b830f749162a72dcfda90c744765bd126a1c0009a1be2d1f781d8018a729618c62ea0848879904becead3304f1a2b4d61a6868c90b1e39951c5eed7468123152608f1630403ab84c80174bf9ad4e4b7e22e5fb860142bc0c98f86d415a4c86ab64bbf6162b187c7a03\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"52bb444a9aefa0684bb0e4a7ec3168f589a087cc560dc7bbd1f0f2b4c312ccf0aee1ebb1925ce5501fd995887332c8dadc611ad1721485ae5827d61627e07ef70c9e808c07487ed2dcfef9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"37edd3dc441c7b6b22b3cfec92ca8ec04df83fa29f2c3b2d60daa8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f2a6ef540615ae3b0cd913734499da5b6c48af292d3ce3f61c2b8ece0557447bfe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"824583d3449457234d6d5f9230b9dd7b4d2f0794ae470a0515893ac888d394214ddc442154\"\n}\n],\n\"handshake_hash\": \"03b0dc3b8164b0bea5424cb72e89936514af70ddaa261b77ccc30922fd1ee243\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944402697419934b3521e4d4e5b725a0f252125c3b861c416b5290dd4ddef4daee581947f6521fe00732bb814a6fcb6749866f7b0b668215ebca024891ac47d3e0fa4cf8c6d80c2492e6ac9ac18297fff68af8730dacfbfe56815e89e44826fbb9cee4aa1ec6bf7ad1d992a23f6d562abe4589b57875efa8415b4baf7832471289c00c389e6fcbc5846c3ee3546f36a357d276694269a22c41f8a93ec3654eb42ddb945d6654e8bcc8c904e898c16db38e7f0a0ae56928f50d431da0c1521dc1305bd1f603a562f5723cbe0d22f89ae6ca4157151a3bd9baec402eed70b30b9128862c4601faf5c9a40c4f33994dfba91f4c6d67e406975a841df8366d5526f521738da823bd9e9f5e04b9db329f1898fbec7fe96335c913772192fbbde4e1a98bf1054033f3c301b1b46bb4900a6f45b55da9f0966dd16716aab7c9dd489861682bc6d0162ea4930289e82d83a8556584057a5680e3ac037b86a1d0a5f2ff675f6d9ab089675da3a9726e2e3f6cf75d344fd2f4474d1e09ff861563d6a2199531236da39f7bea1873d1f06acb0520764209d868dce464549d7e001bf3ea0bcf0699f9804725caf1f2e430a858b38426916986593a5a06bb4da768bc9aae7c8299cb3732f6b6ccc0a7f63ff717d988559284055ba10ac7a221fc8f7283aa69a5881c16177b067400a96a98a05cdf36dc520a2af1c25518d1433772428ac0b0c3c633b1430369e6128e4c2b84fc8c541bf20581c7dbd6ba761077fcc3ce4dfbffd316f456a9025bccdf8a0c176262b7b068db713416bf82ca4b954e102220a2e57b2f30da71326ecdf3b73234784e85b7f1f3c8525e1d2656ad6da94754740bb639382b270b47b4a2ccb47ee531f6828981b79f35831d8f782f89cead09b2675fe717803e6b22445a48f478237cd9fefd342f472504f7c9ede6cc0bd3f6c24c1ebaaf125c5a0199fc22c8a66097246f332addadffc2234b3c4a91ae65a8d7859b5d9fa79e4a0f2aa2dca19b1e1823c58d73f677a5ce78f6d67519d98e73e7b8f37244c12aa9c700e11c5f5c0f5c8147eba5cf3cc06282c6118a4efe12842846062afcc79f162870dcb1e4af608dd97f6af314f6aa938155e469402f9ff2cfff6bbb7b6b88d0886327690e2d352ed8983d023975157f5ef12de1f9666313e09251e0ff86993d1e706450b29e3fd17b71e4743297735d529ec405482064c96972de29facf96f835661e212402ba8572bf7c6ffcc7859e396877f7aca65af0ec5fe206e0dc514f69541fa307ca9889b51bfa9da4d1a1ccf07b5b241b92d797c96967da2229983ccb2f6f932b8d6604b93d932c4b916e08462f2934fd96b68c3d16999c65cafb04a9515c7253249c9b426a5b86b55208992c99d872d3a544dab12e8b234cb0d8cadc7ed0f4ebafb7e61239a8745d6ed31b76f7a4361764fc0aa3fdb58c5512e3aa832dfe4cd6214d2752188f8db9336da41c2f2c70adba896c6928d77fcc4b8037528f39cbea64578460025a9d9bce4c8d23c3a34c794c71d9ba6cce80c39af345c2e257d569e03ad25ecad96c27c210ff6bc63b0bf32d4aa9d5a0636f88fcbe3f55954240520da97b038f0e3feac8cbc006a2bcc2506efc8c3b0c6974dea4e1304401efd4a1db0135b45394a93937160703c5c7fe4b5011c0ff41a1b29de6ce24698d5d28f527b0b1d9385bac93c5a1f34950a03e306ac330400d47bceb107bd4e63f474c0734dab61e599a3b73f45868cb2cf85a1c62fa15b4a54a4b4460bd3a34009886a219280c004326298a75dde9bffcff7ab3f50cf2c84d418ab449b9bcaaf8cf55bf24ae06a5c4900903e6a93750c2655f052dfa00cd003060f4ed9bf7654a4d3d49d350fe9e1fbe1e55697271ffaebef7c9f9379d7f47595085021b7bee4697290ab8ea24da62c7e4e3d7a0b5efccba200c6d68c673800b863da1c37fcfc07c5affb35b420fca72f6f72c7b01af5d0554ec3097b3b46270abecec0e204aae024071dbe919e7051d9815878f4732c425d1f752102ef5f49fdd6b87d8a17c3edf923ab78a0fce33f5b56b3ef2829574853172b8925ece029d9ed39e99c78a8c199111940f3981f1a14a6b7d0197fe930de01a31536415cb7c8340b1cce782f961c80a67b717388974c2fc8be2eac0aa666bf805386a66d5d1b92fa9713edcfa8323913a230d8485f12ca1e9eb15d68630a23f2af726829558af424a81b3faeab02e1a9781559fd95c6513c6fd7f2b36e462adab6520acbb7f863b06d72765f2f5855ecf9a41b6087daa940d6cf382eac2ae75971dd5f74fb9b4b50bbb201eff5512124da28c99981a6ed5aa786e8d7d845401886031edacd438b15d808a3d04a6f0830246c035b026e31cabd90166f3b6c8be017af2103e8250df964eafa8c7600220bde7ff22b6eb06ab2b5802292316820ceb524ac0cef86f2ab605deae68ff99050ef10d3dca4b5263bfebfcaebb3a9dee8404c469d0ab5c2adff2cd501403144e7324595e0c31fe6dc975077d58460adac8f71fcce63e3b324d74ae80313b512324e1ac61fed9b92cb5668e763c737e1c6481b5474f421a8143ec08fed59c1d2e9e0af176d018c0f891a557fb03ec0d4d3ed8ed17b62a74f825690ad274bfb97a98ac55d1906ef65\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430e4fe1c8fa760d6dfb738ff576627a954bbdb203f1cb286c3afad65b648a3c7689986c1ccc28b2bd9ce030ca5580bf9fb482e60e59f8f8bc6ad7e8bbc9aa3eb7f226d05dc88445930ccf64bc72d3216d9c62d94e0a0a76a060c196b90b59efe74369756b788c9dddfc421f33707e216bcd90cec3eda582fa69de041b15c20d69873c668e08c802d272291abcedf6c7221b27f78f920aaa0c0d5a45ff7ce52ac525d51596b3ad8f07743ff0514a6bfcc82fe70bd6e00c17db10356ea20ff70b3830dcfefc11a3811a5012502a0694ae6261296ea4a59cccac9d19887ff1bbb40573d880ef8fbeb52c0bc6580ea3d07dc700c8ad96415c1175510cb614e6fc0bf14ed61399f34b406fd15d743789c792ac238aa86cc7ae1e2f220d7077723af0375dc85eb887c966822544d6984f6896741b6932610796a8334a3d6acb1e7b8f51ed46316bf38474c343802765c1e556fe82a1f624012fb9b54cbdbc2f8065050489e943eba16427c1bb0839a7f778c77d3d08e49bc5a832e02a1c0962e3ffd2e6b3941317c1ca1e0eeba590afa41dbd6664a60b6633339d7e88ef730d5c1eddedac50dd5b9d1820081d219473b0562af679d3a4c9a5427f7aacc4f31db1ce7b884e2585b9596154a4d81e246a53899e528dab6bdc685f6d1888e231115b262b9c3f2b5b5cf04773923c453d1ca221691d9ce1a51f86cd41cf89fabbdf6e47d58492a75145ba7c2e2057adb8839fa4da037dde218a7118f0679f802c99fdac54e133af4cf84bd3d4059862a004ac8c5a0f93ac7289d1ce0ad385ad0f01ac701d18a4011caf5e916879edb764d4eb86380b3741ac28b9825160102ee46b92e0d38d955abf72990a99511013ea892047ec02176fa652e162a05a1a7dc8f80e34a12509d41ea6498a9b6b15585760fba7d1d930d68d0f8f789b93739408d7507421e4704760d25be19cbd1de8c5132f3ebd8b90e5786f747983be3629043bce296ade6416b28adc9a6630d72a373c7662c2da59a547f3e296ed74b8c58ea568ce04c8aa147eeaa5acc729a1ee4441b51a047cf1c42f18b4e0da521eb7a91d126079b2b3cffdc83a14af6ba018dbb6ad083db44fcd62271169b7fa77b195ba0f657491560dba16372e5583fbe43ec9a7c1c01cc261c31748772f6016834f5b17db456f60fae564849232ec18f12f3f124b3debba52571c32ff983b7312eafd93978c37082c5af970eb3450537bdf34dcb0369a0756fb4278a48030a7b785143e20e5afb53e811d1ec30ada7109323afd6f0c410c42162eed5f1f4c986048cd58e29e62c00cb997196b033860ab2d33bdd97e87e53a82f2247af50be282784688b8bb987310db17c44292b07f13856af1640a440ddf6460d85be59b52a92139c73da5decba00c3a8ef556bb3800be25e4501b4730aa52ea72915de31413451501025f8640ca7451290437f211b6a0e41d03cea83da0cd7d353c7a5a4fd2a0428cfe6acc991405c7964ca18b7cede369728a84dd60ebd24a9edb465f70b68d4e4c5b45fd33873f105aadde4cfcfc715c7826a01d5554aeb7e54b70d5303af34dbe76702cf94e86eb5db0c4d22a40dec14cb38c3eaff2db964f232bdef08a8f43b1e3f6fe84011f12b4d7bea87e62a5162f11dd0af714603ae0c73ea0d96890962a7937674bd919f957d4d6e9b3f745faa29e25a0e8a8baf7bb1d2768b097779c39d0560e3e9256d67a432040839ae5c952bd76b31b2a49d9e942d46d896c4b803a0125faeb0c92a65e0bb2e1c0a4bf971bdfb7d65b57aba2df817a3f883fc400405875801b39aaa457f38c15ea36ee6497d39e3f23b96a1e1c013e38a37480363a8ad093493c8ea2047363673e925397df78573a823dac4f94929509b54f5a7c2ccb74e4af01276766076c5225a92eede5bedfb77d98650bfee386f8177434dcaeab67fb3f2dc4a42aeb45f6f3fed18aa785782f6b38fc7e061d186571701dfbace6e400166134fbf9f1a1ed3249a35c5f05e245eefeb4b633d8108f165eb2f976cfddf1b076b22e78af8fa05c891844520f73439847bcb8597159c93119036dcedf10b52f59d6cd88627ceec0945fee5b7931bcd8b0873c350766fbffdfde6acc687966c7dc8ec084bb19fe84043a726aa0e17c20fb326bcc247f0052d2e4f423b280bd75dcfcd25b30706ed3a6edbaf961fc8e265c861aeaa3402f250f6c41e353a8e764b1a9f77dd574203881379833613df805d5d763e13e38d06fd5fe60723108d7851b4e83c87235b8712a508799276f42f69d9310c7be7f52c56ff4baeacae179be4bce9454f6c4dcfa16d04fa12b388f639fb2f3292a1dac4dd84133fced15c1d11fa8f844e294c732d5babcd5eb840a72d8f5711e916b75e2d7ae7d5458182ee49f7a27d41581eceb8678f901f8524d8e2ff39f31eeca7e80929207509ec3eaa9eb63d4998f3c785d4b45167435f4eeb899871ad38c70eefcef233c6556b17c33145d76dec318e4ddb2487d546aa5d11ef7ef1ab9af6e90bc4bf5e3e74b9fbd41441c2dcf6d807308cfc857b04a1d08b6d070e5ca0ef1f4ac6bb7d572922e87d1f337dc97a0336423dad84cabab71b7eb030c06dcf9ebc75c74e5937b2a8b15c5b7f3053123631b66b646760d7133899e55b7889e31e90743f5ce3f8bf2ea6a54f9cec4ed733b01eeb8a9538400957f2f78436897c4f21b1aefe57a8a56f9abb453576d039ec7d9b4724350aa8cdf2ec274863d2534b6b9dd5ddc526044889c95d695d11f68cff1713ed5c3f922e5a747133a5dc0b999b32555ed010c11f682ca0ee60959929370da66bb9a2bfd48ef7039150b42607909695bf68ac2e88b383504275c397fc8aba5de165bde0c7dbcfd459595fdd12ff3771ffd4d32bd73da770dfc8379f1f1537e79c7ca069ab5318fb6be2dd9484d1b1805db89803dbd4013da02fb3d9153f9565e2fddeebd3b10728d057c88707325bdd219a63e220bd21fcf1d35b372b660ce7055f875d9d2e0d2ac010c4702d7ffd81c6f70b1783e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b2dc2ac06aa72ae7d7c0eb257a687bdb34565a7a304835aa5ddfbdb9d7cf0f4f8581628f56e5a71f079b550e4faa15f7a520ff4d6dabcdec44602714cab6d93c4ca1e444df8739c7fdfef3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"13954327d67bbdc007e96a3c3e97707a5d675b63505fa3627bc544\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d4d8235f87fb989d63951bf823bc4b683a32d7e841e871186a480b8dc9e32ec1ed\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ca17120167bac6dbcec4e43c2a762c7450ae04af8775bd7bdaba9ebfb81b95f16cb40ead50\"\n}\n],\n\"handshake_hash\": \"faf0102ff166ca46e7bf0a29848c278c4b565eaae00cc7a168784145afb4d37b62013d6a200205cefc567bf363f18629fcebcbfbee24a357c2e52142f21c0d53\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440e62edc221a8900d48dfa71e350b49d2c89a46c44c6d62983b3f9aa8ff85017c74488f935f0872708308b702c236a79fa0a56156c7832ba5d8b65f0aae3632cf7cd64a12a28138fb0b8ddb60402452e3569cfdff09af553e84aa65cc0d2ecbdbc728c92eefea043cbfeb79db5689df236732734ab2deb6ef328b0b528754fe51d87858eaa1269e104e6559a20eb3ab86bbb2bab5198189f35728eb9bf5c6a580818607e4658c82f5c71879084a5bf1c3af22d8c0411ad47d146ec98f1240622e50a737dc5cfc850249be34780f706c4dff61e49add1ea1037cc7302fd28250b8bfa1bc31750ee0d9fed417ba2d1f52748a7c6295dae40313703df49f96141a886646394f05c7ae0ce72c7a83f29be267d431f9e31ece6d6876b0fb61904789ac3057d0fe10fe46ea82aff51940ecff887088c2faeb2c4fed55e26d4fb25538b6f131bd48f523e212a0d7da5a46b44105ed9c6e1d52860ca45360da41740fe310cb8ac44691075fe0720167116d456a4808d2ca26a84da4e0bae2d0407ddb2a02ea9c591b20eefb08eaa80dae5b995a7ad1b94b30cbabeb47613f6890fd0392ba0325d40fbf2d741e2d8e250e2b0c28ccb2046a05fdd1da10425b186a7a29d3fe7dbd77733139ecba382124acf905a23c08cfbfde6ccec8bdaacdcf73af72425b9c5031cdb715538ef5db9f8be0257a0be45a1854af2dce719ad61ddad4d1c654cc34415cb15d3c6ced7fb261ace5bc26d1534519ed340567b2e1683cd5d5f2df42f4ee46028c46ad16a1c62eddd5e55585ecf23808f9a704a9935606be75d22c2bc9ea0eef2f696584a414fec3e7248dafcf3d95a6356e25439618d2acb00edc9a26e9127055e04eeb2f8f0a86d2eff6242dc3bc575fdcaa1d4c408a30e5c24aae3ac22b94dbfe4d9330fc4637e6fe680cde56b17c87010f8f1cb8674d8e921a0ac4075f55504a5d0be9dcaf1285e1b9c6dc9cc5c57103ff01347093c1ecbf6f8ef9ba124da22f44b25e86588ad4b150bd90627aca8aea4c36ff849f3327b80a349cb06291ec537b07073e4e3d53d97f8f2de08bc0a71fee3e9e996875f759afec0b1e08e5f85bee2130fc17806755f8141bde0e1f0c0e3d13a7c061b16a6a94184fd7a9fc26d68601379c8bfb9d3b2b13377204597deab48aa013c67077542b540bdca29cc34135e2ec942de7325084ee3acca0b92a3b54fc8453ce491070b6b2be774070290d456f45fdc0d8e30496e31fccf1e795c378a519550bf8bc74e337a376a67fdec60f0044c5997ca628ff421966c1d7573565f191d5ad28fbd8b197761fa72576d70e3c93c791fb887d0400c8da18fc783822c180b22ae66cf858d3494e84159d98a244baf3bc6fd72107fd76aa0bac902a5fdedea780467c0575d576a1f2f3a4263307d255b5827f866df082f4253c437cb5f8f9e22bfa4f50511b07e0b9043e08789cc4bd5a6e7260d12221ef102f028ccabdfecd1a3d1b1f790feaa86aa1d788c449aaadd40ed80ebdb570149fe63abb0abfd7e2c379ab30f7928a6821abbae3b5aa31798e2231607d3e950563c5ef04c9fb0e5235a00b884d3f9c81a327ea40739b0e50f74e03f0516f3484e4c8627e9d7c0cf6f1741013f6a65a2fcc435db7ddc099818e6be56865295d94afff02432ce075c35bcfb6902236c8b50e1bb3733c4cbf7c4a351fa0cb058cd7c0d4afa5171c80aee571a577f59419b428afb8aed7ca8ab1ba426d593945a17ebd0e7f331f7a72b9b65fde49f424c14bcf0a1431083a803b7b4731a7a2c0b9d58ef01d6ec24d421f5004a9b47cdfc81391620ae04bf8323e7336d61e900055351f728f990d1ec1833bd9286e89669f0616ff5a8435f98dcd71f997efb2ce4b0e6088645cac6f522c6737c508b2dcf6883e7c1b9e5f42993aa00d454f4ad2285c1607c1bf1ac07b0274af5852e06e504da38e71a44c187510d9fa2481fe478e3322e0a9840548fe67df7e47952a3693b9d4a8d3ab4a114f6c1f9ef7e9055f7bbeca617b4af7a1e38be2252892836bf3c512c62166985230a6ace8b04e941dda89df68fdd712f7446cfd075de3e2faa59c627a1b01685ecf3b317e74762813755d97341a9992042d36775317d0a61f8de70553a01c4b70c6e90fbf3b894b5fc1b995e67e2a0cfe928775293257a1f3cd0ff6af6d1c07a778d611146211b330271cea32a31a906581ac8178b7452ba5120059a88f36e43c2532e1766943aa0b9d5e22487b3b6a993198449cd7f2e9fbfda5eb5d7f204743c30989bbf62fb99988d0203e90e35237342fb4fc7506bd7a99f0500aab8c1ef5c3723a7bd5e88d443e5c06ca5a6bde2d95b5bc9564d69c979c81ad7531280773673a4ffa05162fd08d9487eb12198885bd88038d8245f446c5120d101060d10d7fb330749ccab8519d346376329d4c17aa28c026c252fa19370388152cf123caca6174ac01da976a04e7f93c7a932f86fe4ea4e64bfd0cb028df342a2b33d9c95f6b8abe065f416646ccadfacda72d0f37044fccc71fe28af9ce069dd868c54815e46bab5b035bd43cb96e94361ed0a9df12febde8cc812c3bcf32348d8cb73991adab2e08e93beb2df0019314af5e717fb96b993ab3b967f5752a043a07e344d11c833d903328\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ca7dbb335da2d6bcb9f4f16475d21754b57746d6ac006100eb4029e9bc9ac4842969900296b7710764a47e72d56b508b832fca0fc595cbf912128463ac1ad18cb26cf58ad61ab5ca141b02ffcda058a42409c5695809b1bfd191ebc49bedc7733f4c773f16cc9b33dfcc6cef507748365b8eabc75534ef2ead7c40cd7dfc27da1ae0cb58283edf3a56a38a83a2de8332d04d9042dcd12d6638b764d653cef38520621106df2957cfbdbd6b05da57044b6cb0159b68aca55447ab3f5a745b287edb0aca5503e41ef86001837fe5d483edcce0113ed62ca2d38aecd0a7240725d26c6b29a498d3e8d4a87dcfa64eb2a727b3484a6fae0fed1e8f6c0dda15cd0a49782083b04fe7da9f75fb2e84617a310b4459cdb902cafec5fd56ad950c9c01321ffd50d0134b66375f5c38a4cc593d3f3b41ff1a5a85b04f4cf7a2a2312c844a1b4bffa4418ec4ce5076dc17583f7a5801e0912201f7b377d400818a0fe75d06cf74ebc85019f67310c547401273f348e7210df055022ff1f71aecf31e9ff3dda52a105ac8db0aabd4d7683154eda7806b531311d2661e2220a67dca4f7064fdf31063d3fa52db3e12c243d4ebe51886e332c7b9155e098fbb035d81e9c2ddde389c9661c3661e116bf63a1c4749766d98b50ce5ceab6d5aeae404bb045c5fa2395518e0e0f26fddb15510fe999d045d364321d10775b761f46056895d823f262ce89fef68c78a81aa52819c0d5c9a89e7dff529281f9ee92f855d77097a1c78733ef98d03d7834ec20744e5535599c66d9b269af1c21133ad68668c9c50f0e0a4e031524d64d502bc960e0400b807c6dd17110890bb9cc28edfbd20bd5686d639e7ff629e3f7d711f246f22a139c6896dd354b6431ea9c87290bef341c656ef94feca701f8039582dd88448b60de2913629fdd298e5afd1ebf262c0aca4ca7ec026d3052d4d105a46d9619b1d02ac9960545bffbc593583c3e8e20ed42522f1ba5136251142122691b276fb8a2de1d3a1335f2ca3566a96cfcca39763b67531a4e6590027c7490808bc8c9e662a2384e71a5a26d33b485823f65203459cc29c48b962a7188bf8a8a2218f538410a787d4770a45f309690f627dd6c84af72d6738c08c91755283851a7a20b7eac230453af4b7650b2d34845ce7d011d610ca1a22c0b3c5990a04ba32d5d976255de41fc67d9ccb08f27d53ef3666de8001e1e95eff3c632ea14b8d13cd4134484c0bb20c69176bfdf91427ed89c911f44c2881e7a26b217f43d5e1aac83ff1484507f3af9d9025db588245d479d2164c1fe708d3e07457d08dbdf3685859ba7ed359dcc2cc0da8da6a0475ae204eafad783dd5adbcbb12c658661e76e4ec084b97af87b4cd9957e602b483cac4a973a2010b64c8ad3460ebdc1e088bd51be0961366807d6e21a02fc7dfef9f8bbd2e0456b8c50c86ab8a12825f7b480021101e738dd87f2c49abf866ae49ba0fbf951409cf70d4a2b65993269eb2a71de2197e4d47bd6542076571594e21fd2343ef37fff11de5c7b95bcdb7d311eca83460f0fa90b625a95a3dc877823e13f737bdab9c83d3d7824e1928300709e32429e795da1bb9f9d3557994145b080bfd88164d05be552080a813b5ceb3bd0ca5a08cc82cfa86f91baa78b3373243acae51ba83b6f37dc2b44944cb267ad85b87ed6a1dcb3c9d86d5649b2c5e892f17c7a861b966ea4ffe97668e6713b4494b3f5d39718ad65145a6b456f9437870940fe6dd48dd55b83e392680154e81c2658fbbd8275f7649de79dfb293e1d141e05aae3f68da3cc5a3cd85446694494a5b6a2e9a76ef48398255760d49bcfe17a35f79b5ced38da68b512d32a098731469e70f1cba5d7614ef460567ff7949244aa66813f5cb89cf0e8beca9eedb6dc1a31dcfa5290c6eb85a7e0e02bcbc5fb1f9d0dc382d74249dc31e935a02e30a45438afe8ee01e7079bee28fc567f7c03b655f4e39a7fb51a8d6a113b9323be24db7c4e7b43664424050be65bbd24f7d0af1350768ee55addc5e511ff6ceccb3b8daf0086f5185cffd0312e890d0d787c8def00ecc16b6588df58a25bea4ace1cc59845c7469af461380fdd111f5de216f4e579e3b6cf9068a101fd304407d67394d485ee555a94e89a58162216b022abe2c10e0ef9ff82469e755a2df6d29d9501890452cfe8511efbe6aafd83159e8f4b52391a01e0007473cd73a37a7ef76e90e22d85ead432c9c7ed0c9374b0c6ef74d85d57083355ac08fc1683386d26d8e5ca39d238a21fe751639d0a163890313f45a388a6bf07d8b6d4b10f673cc6f5f1a888dd05b1d71f7c2ec8fc84a9ad46d982e4642c2ecb3112828769be37af6966032f6d56657831e2029128e7914f7dbe004fb936525b7a808183a21a996f3398b67331c3677110d2969c987cfa660afd705262e48fd54bf44e2cb503d9f29efe533245aec53b77e108755bd9c3d5b7da90df592c6c16de4cda144f4cb9a3cceca476cb431f4ed32bad28810989574a0b88dca049e1038d9993821c1aa707300b3e24e8c56cd36fe78253462aa8e6d3a2ce98f2e036a87ea7e37e80b4a05041fd1ce784a244a4ddc59ee5a22055eb8229ffcc4bf867d603448216ef1b2ce900bbcca80c95d6ebbbd9d5704412496abef82babad7f6df06fda05d44573ee24fcbabc68e300120fe8072e2a13e4bd78985e4b106bfba0328b9286522a46c66d7ee079f4167a01a2ad7a724e8c8f2ab9f3d398bd77b47c89732df6b81cdaad95f16944c4d32f73bfb83265269e04d2cc5bc6df8d21ef230cb015eec6389b89d2d2933c613a58634261804020e19ae63cc580580a1b1c270f3b5bde36e18822a4d2601050480d77eef1e467c33d4484a7fff9bdfee8ea6b7b96a7775b2a87d2e69beeb2244fc68b2fe3b98af5b3ab8806ef921f278330b677f02cc10e567e549e2c6fb9079757d65f6a0d6ac8a10f3e8bbd7ddcf0b4a4928ddd8efc59e93914d393f4a35db5eba7f4c89ae9813fd6d24827791f787a0753c36\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d139343b897778719526d5cf64d348c43c09576978e9f1dfc2a78f397eaa1d4e246036e382057f10681fd2ec02dc1179b48c3af2ba232f6b193f6b64039ef54c56ed627aa46524fb45e730\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1ea4d83282c4c384875174883cec660c712d249b7de6bde1a5b3fb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3172ff3c7ca23a78cebefc9994878b2a4d7bc8916f804151e064643845eb44236b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2b5ee24063ce2ebf16a234d9d5aeedb29684f9928381e574abbdf14c09b96b73b2ee187acb\"\n}\n],\n\"handshake_hash\": \"1b68d0cdfe13cdb27335f69064c2bd4a13a8f5b0179143fb8c6a69da96f77532\"\n},\n{\n\"name\": \"NoisePSK_XXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"XXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442e268e89609be1056b1cdaf07314f296ae71bff7081a39fb55f450397b4259bcb3657cc9213c24640e5d66285c8a50f90074fe8d193ce90b5db8c73081ea982977569b327498a8b4fea54d75fdc41a10cc172aead6a6e4d60618aae51638adcb0e615a120f170238482e320bb30cf3c3ad688c70ad1e4829052e635fa296bd6f089e2414a152afda3dac20921857b7aa5eb6ee17c7b7ffa520f1b5427dca3f7a65ac21856c4de78ac97aa162c5236208bb92b48c70e398ed0da01742b0b88f1871ea669982abc1f3997c1e2df1f5eaa1042ded654a936756a2cec6eff3f3f3e58b879dfe8f1da85abc5668b4e1b7173e47e9db087c51b65c304e805aaceefdea24eaf8b55054a9b0fc7e888a63493878af9506c93cf95b8fc64ed45ada18d7ce55bffcfab31b77bcb075ab084cdaad3937dd64b86308bf99cc7ef9d20f347a749ac54b9b25f9be9b628cf6694d055bac0dd0e7bb67b1f3aaaaa2eb456bd0f5e97a8bd4c47f96d28db580564d305715b1c027e13f51034319eee615e9202231bb77556628e51b89da350b1da9e10e3dfc2478e06c96dd95c3aaf015012f7b3ae67e291ed960a6886f34b308d01d2f516a0dd0360fad44d3d710a44ad78529661ecc3f486d99ea3c572231a4fdaa6348aa2e0b4599c0f66982154bfae87805cc65200475880aebd4d1be18c167216c79875114f068d1f18f99baedd06e43a103f50c23be9eae4f1b34725929004b6fa56cbe029760c0aba81c148eec987ce9af698aa162cbd39144835c072f973584de6b785708831a600be29b3f8da320f387efb8aa4b81ada0ee178b00dd9d6e56480ee0b09b1d8da77c22133b0975934f9b4ba919fdb218a7ac08c0b3eabba34637e343d19b3d86fd6be2214582ee1ad7868093a0e84ad90bac9ebc66152d2a35292d0bf530694ed9572db05cd67396f88f36ff9debcbf1f0ce9ea20205b12a7e64f0815b5f8cecb7510b094943c668cb41810662c63ec0b190f4734faab65675e2f12f93ed34fc123c1580e6e186a0168f8ee116f066d824866d0ed0c5b56fc37af59d204ee425399d015b5082858008e2015c8694c56a73697a3ac6e0fa735f546f1f98ea9df7871ee968dccf0d6d239708bdd064f2ca76ccccb1edada990556e96fc345b7604269395d6bec13522637f66f7a336aaaad5c6949d04dd4e6c0f8c03cd97b3e31f843790690561e425ad8afa38d8817c5e8c337f3f447d5ec60c34abc3001c92c5819646a0cc2b5893cc1f678f7e7a13f197042860a1c8039aa28acd043ad1e451ae76713e1be95ab83d4f137b7727d599ff79132916ca5ec1be8b6f231208cc94025ec71fc0ef4d450d2033f83bdf30b27e16c54b261a60b2ba9c0279a816168f67e5a154db03f42f97dd1674559d2f5de7e395fea402ff19a710791a5ffc36297b2285449844686c2513ca46d478b248156d8a89559e5ec3f7aac07fb01cb473d13dca43ff4c90a12ee156363a2c19eb5495895a472203fbe61bef4ed86f0e3e9ece7e2eaba0b0464fd2bb38897ae372aac369633c66309839072bfb113e5ea3e1ccd941c9ccf8174390dd2e52beb7b246bdb803abd88b7cc37a90d35a5c156bd558f44d45b7421a2a3ade4a054a53cd399ee53f4f867fc6c2255bf5cba98e87f2af8f87f43996fdd6bdefc02ddf3b257ce34a2b0799cbe0c694e006ae3b2593494068d086e54c29c2949be16dbc66bca6fbac967b4a7eee63fc6d62133a8797776d00c2af2ca093a0926a073830bab1a62fe6f552225fa71cd100d795d6fbe7793e3d1de215a86dec0efaa42d4071cc0ed0da347cf23da79c193e1ddb0b82e841787e985fb38883cf455209d194b99ccf831d315a4f2337730f576972250e4bbe1aa4e5009138405fb74acc16725a22f99349202ff201a1f4fc52fc7287540fe9e65d339e8ec737ad3770beb40b2ed6e3e3146911e7c9764c8f9c29f9d3856240edf95023e3e0dfa33994107eac0b0599c99a1d6c44153195a5ef5d30f8d9b79478c32201e16b21ecf4cdfb4e8c654d0dd34da51d69cd08e8216773fcb2c3edd39774b720d8844fde0e66d874c6095593f805a9dbe30b5cbe73d80cd62c7bd672e936d3f136fbcf803093c3ec388bb5f8a53a2be953c54d15fe72400e512d0af77932734b0b8c0fc01cf1a018ad37749ae14ca2f134a6360de1d60c3e8b273fbc2e3db28fd045c7a5d1f7582bbeb5b6ddd5ff27f5b4a6008c291aaf97274fdd32fadc8e664eea82ad9502138dd52ad05761a6a82b4ba7b569843a4378d8012eac1f7bd1a634516805e143c76dade165e34605f352b747638085e6503281ec2c436c8cb3a46ab495b91f87b958bed6837bd23b37252502a8ac5a942e2b731b8139141c8075c7eb9e678adaef1055e47125a7b86223986af641dad2f69088f4cf0c3d828e7009725d861ab1a29ac7d908aa10ac1eca06479433eec9c7b163727ea54308e8bf69700446d1ec4f3b69be0b46c94eb9037187b5afd948bea01ccd96d49c3d33351897b2a2a537c09ef81030a3f1123cfc624225afaa8865deca1141b67e2fd1eb7765f7a1b0ec4672efce84fa33aa237cd13fd383455fab3c2ab4def51b54846093c39ec1dfa790771863ec0a451dd4aa1f28d45e53d0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432f5e5ae2ff3240c6e5d59f134ae480d73bb64371976f93bc5fffd3596afd28469367d120ddd198358aac82dcc784fc6aae9e774c26e40de5a54d1bebfbc6df0cd882903afce9ef0e6fa40898248ae2438535aab591c734512ec300ae4ffeebc4b2e7ea56a4b5f758c3ee738cf02ee3aec7b36b0d2785038fcfe594b8e8aae296b510c8b49aad654f74052c7208cbca9579f2bb19924081330b9a70b8401773a9d4fa493ac15bb94fc5f4fe655b731ea47036291b094ea6530d06788fe02fd56259e2eccdfb78012789195754f76f16e9df7d864f97e977679c2c7174069a5881f8cfdc9b03ae2a274df16e68e9787d6c3a3c3e86c026abc5e1685d67bac9589562ea318a585ca61d3cd4886837358965af256168451e0c9ec860a6bf90d4adde76246a3b1d7b95addd15160562c0bca0b42b640b29b84833171552a2db6ba63dd38b3c3199939a0a9555136dcf61f01968046333caaad8c62921cbb91ae1ea852e1de536f9854fcfde27305bc1bc64908f991cfe2e03a0de6711546d647b86c9b372540d8cccd43721509e42814dc055a759e9d2b406cc98858662f2a31d15a35fa1c0b889dd48371f9c5a00350e782b0b727191754177bdf471eae760aee72a0aacaac086310ae16046be8f15df5d2d092971320bbe661884c6a128d467252f98628c208fdee5cfeed0d71af95605b6ec59794683149811c2d948224e91ba080dbec02de165f600db883fe719feb6a6be49b603c3507ca12241199bd025f2bec2191a06fc5c4903bcd09e620c157ad535bcff126f62e1e058f3bcb5c3a9d2ec674e5fd346be981cf4a3aca95440b0a9d8c2dc2b46370b1d3dd3c6b3b1a7ff91e94db907bd99811152279921c05f269e17607e62c73c849093387d7085b4d94f6ca739f955bdea938f99657607b84c32266f9ee94dc6bf5ae825889313639975210138134ab31eb6b5ed0a7ea227081408e682bb3d16f8e0f1fdd4c34c015c948a32db77250da1ee1f5e2ba48d2bed9c77fed7ee979fa69fdf70edd8eaf0aaa623d4edc27e3768a1d48d06a6c93bb265bfeb66fb56960f14469d984a353361703c200a2365737100fb9d07c90c234c974e962c6f68fc9d5a8bb50ee3cf506cb317ddbd853a6b37ed52ada013343bcf4e7fa9370ea4f749312b1bfb874ced15bab79c037e510f5ece68478717ff0cabe6e05e2363609a79e6f6f557574d7d05c87b195de0e4c6864030d73cae3a0ebc0431573f94750e513ad5f2a4b9b0c381d3dff44ca38b9eb181dd0ba178870e939be2036c6a835521226cec7cc8fb4eb49ca80611a06a086439134ef00699824ee4af6c225e7a0eea94709cbef98dadb49de7ae1a2a4e34218a523f1b211f64c261fea470f51741c633a0c5771e64814a133228d57bd3ffb64123703e1f141090ddccc1065b70f48e0da1efd9bb1bf443c2beb5fa6792718b63e40d8b7896e36d9bfd5abdf2f48ccfb8e0c6a138206f290f5b759817ff5964c247c8a416ede810b1e50f99cf2e42c307f649de274f47f77408489226d67d3169fff64b8542b4a76211b7156c293d21755155a181fe9d35eea4b2528bee025948fb4e8c2394ee492fcfd0bbdaacbc22321e188f6098c5c2947719cbe6fe955f42a6be9cc6dfc014442cfa9c21a6be3f68bff99407e7bfc407e04ff296a45bd78784b73b27a1c82280f2c3e2a683f589f74fee89329a9d3e2cf34be78636480b18e5c4ad353450217141524a333c318850460551f71ede7c98bc79507ead7104ca0a2fdf9bb7531d569dfb9b0e89c361e692db066f3df25ef989238f82e996185201ae64e15552b4880b3bb6fae2672f3d7e3e4b554e6df06e25fe440e1693a26d69cf53905b6a7cf37d0ffe96b9c1c9c88f84b6de7670efefdb8acafbb1e4b293fb438e18772ef7470443783dd0d3a62b7d027936e61a29b7eb0e3044348192c10cf3b921d003cc35698e776dccda523b8c1b5ae56d14c3055070d3e88d4bebf8a8acb4edbee9a1af15868c9a504dd55758811a0f26c198e5e069852343d4cfd06880247072b3355cafdf9db5a95dbb1a85a998293f0b28688edcccb7bf8f5ac716394bf7cf1984b02af95f2a4a6ba22103cbef7957a7c8986b551d777a127e56eb7eb841e40926a706198d2ef7bb1423a42ce2debeaadff8e72392f0ef92f7274325eb7e4ff9f47c28783496ce8dc7bdb0b73de162bc138df6d545ce445003ff6752f9f7270b685217fbf76af28ba8ad43ecf778a9144f36a7db6367f5daa295ff535e3a9d8fb49e7f2b8626e7a9d8077e56fc867c0597719352db860d8d42947c01dfcf4625ba71e76e17c38041ad6c305bd0294b7cc1202854521c3798b4b4c92e41ad07c86330879b71166844aa3a0d1b57484c786e4c3dc414adf34ecf7754b85d9ae384e29c106a7fa4e21b0758c79f1013d1322ab3dc3ef2628fd4fdab6139d8fb8ca8b4da600276f55667bb4ba7d5515221f60c1d86adf2f4c30c07f6049a1780c7cc7efbb192f18c4a30892d3332f910dcb0a9a950d7b3f24df74d365580c7ad2bcbccf288568291d55d20cc83511032cf990474f5e17d66aabf5662486ee0d29b5f6d220fe0b3934bc2b9afd7b4734a15d2de34dc25ad92d1b6338da96aebe5b54df5967900145fc273969f6d5f670e400e412a6f9029b418f858d0ce9c4862891e3be9c99c4a512bc997a24055e1f6dce19bee8333ae4e95ecbd7f8b38127ff1db49c6836f37acc1a0a892a8ceb524408e59be1f7ccb3d3fec9db68054f584a40246ea12c7a6064079d9e7ed88f437a08aa41e659f2931a37678252ec61c202a48d01cba895a65cb6fbb1a18f0347de6f86d0d2c564ecfbf8a02d994e833fa9ade949170e3a8632fa53ab57b0a8e42bdff392e87cfca90a0eba554f71bc2c8c9f583d2b390ff3653432f750abe884f8408d3956f239183715c158071c664e008e680f583ec839fe730fdca8df3b09d8982581118af72158ac51339ded4953ac606cb81b38e79c575db12c7bfc2cf5f21a6c8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bfd3df42910c70a80135b1396df46d57b65fbfa40614235c38fddf763a2576d74e2aba9c29134e27c3856db935d53b0283686ef7831ceded6028efa663b385eb349c6caa41b06344316fb8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7656d9fa68b6b070fb1e81dd8bda969cdf0695d18c47350a3066d6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5a6f74dd47ecbaeb8adfe45fd1037c7974400834717f23a5575aeaf502ead04da2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a1aac34bebbca794a2bba87549b4422dfd4ff3e8663fa6602320af2086e7bc33437ea74977\"\n}\n],\n\"handshake_hash\": \"2341ff9cca460741f56ce61287d5ed19a73348f2a109c2b413e875c3bf02464be04c92caebd8742fbd7a54838c0ab0be0ae7347c969a3755357f137fcf413a16\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d14a10ccf421a91cfa97778a1cace7180c5c79428ab06d6bf80f7034b8de53\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"828876b5cb35f90e51a21d4c4677f98ef9cea0c37bfd609a2a2d4a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5c34e3820bb6f6f893977ea15f6632316e9f4f41cade1ead6d24c6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ab582f3790beeec39047a0bf17ecf313385508016b9f75e3c16e2dc0acd183fb48\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3b9454a555aae6abc117175179e42ab89a6a0d4124d777c7ec7704d6d30c3e4ebd58e19856\"\n}\n],\n\"handshake_hash\": \"98ebb85656831668e5dc3bc87f729de08dbbf8d20cf9fbf2402651879aee0e80\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65417a908b22a5335ca05e71da3cfe47fa02f9f7ce88c499340e932780029e5a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"334e011e1ce03552dcac698ccecb0b169a49cc87e501417b5ac7c0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ae680beaaa4cacbe7407eeb5a70945242b07d7238bdb2588359fe8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b53921e4903d3d38177adb6fd826c5ed5233d70badd4418ea2657a9dca3414f59e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e25773e969505e705f7c03b522319331c982aec2b3c01e9984fad0ae07f257fb1e45ed759c\"\n}\n],\n\"handshake_hash\": \"387ca658cab12f39111aa4e38494b446f440ee1b96ce141e1fab07ddece7917349c777a90e37e9e5be340b2c8ad2eabb81bce1e9b653fcc16e124a950dce7ffc\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d6dd3db2f3acee7f82ebb753466765b897cf468f4ec8024f1d32914d9fcaf4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e2df9618c3e07b0f360363bf2b20683fb3d0d5fcaa9de26c0d4f00\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f85f483938031dec8d3ea40959297e87d2492f0277ce592b5a5f80\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"48d1eb8a5ca6d401c47e9c31f0e6f7d257d01b7398674939664538fe54d979ff19\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c343f2b8635a78827c00d47cbb81331cdabbf295673d4e338c7ec642f45b8035b42d160e51\"\n}\n],\n\"handshake_hash\": \"36d7c2d310fcf43f3a7fb91088a5fdd2a0e25ae83e315676918b4b20e17ce8af\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a053970a51da4661ed40bfbe9700c7e6bc33f3ffa28ae08d3893c790679b8f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"61d554a1b4fda89b19c0ee34bb67ef3c4ec0a7f373399dfd5417a9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a004da8ebc86150ea44fc9afb148a337a28d34226de4555392d92d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"58fbb1312432e4333d293d87b75e25f874ac948a4d91a84922bb89040d7a50a6dd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"57ee0dc045cc10e12c8f7808646765692fc1d01c2e79ce175519e9b85b1552ac22db2c3959\"\n}\n],\n\"handshake_hash\": \"313c86b6adc65116666032a9d664ba05787ec41bc4dda9a6c13943cc31297289867f301ea8d1acbb8543f508110dbb808eea520fa86d2c45017492cd29018433\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e892daa13781616c3378e6b1d07c219923e286d6ad01a833113fed2207ba6a6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1d258b7689cae17efa865ab1b24a3fe40f55d56e3791e825ca3ecb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0ae72cd4df64eaa2d29bf60b2b89c45192d0e3e24fbe6da48955a2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"724a430eee40b751acd871a3840a64920e46a66104a1df67f26118175360da5e8e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"14b9e6aa9f1ffce930652703e7d937eb897b74d1405386b3f9048c27c23eceefaf3e9b943d\"\n}\n],\n\"handshake_hash\": \"c5c047b9490c6888e128d6b3512ee884bfe7a47a53c22444d1cf097fd6291d20\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e1cc330a4dda5c8e0bd5a983779e698aa27c38b0cc6da5bc8fe895e48623729\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2c7d6b44bb74f452cf2349f7144f4a73ff4d68fdb1c8293f22b5b2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ad743f89d0c5a9524689d096a901543e29203b60d97724d3d61dd4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5c6a01de83a85c45b1dc9d90ee76c6eaba3af5f3cd7f60795736ac9ae1373604da\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2edc6b0309366b99c27d8e35d65c72c8a7731c8f4d59220120fd939852d4b187ab3b39ebaa\"\n}\n],\n\"handshake_hash\": \"1b800c7923cb5760e1666cca8f013b45150188ee53432a5618dd06f59d8015b44d6bc313126c68903802ee9469ab199960fffd7e51897cf2510c456ded5191a0\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ea019784c5e88b68f933752287a1c922c06e4ad14e9080457566e4b84a6582b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4dd3ed138118f4142dfd5d9334f7a80d0f7adbdc41e8c3f17cfad1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8f2c6cf2470bab1983742b4b6bb9a68542e94f90a623ace2a368f6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"bab314ce093bd5018d05796f2eda53b9d3eef348a7951f94ac8604375f73e93404\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5cbab57a41b289337efa01d1fe21290ebbfd861272774711ed4b889f22310dbaa2967b3724\"\n}\n],\n\"handshake_hash\": \"c52c326971298e24ddff644a24c034f685b81998c3228b3ffc2a00ad4ff9199b\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e11bd3cfe2917563f5a6ef0b09294c47e6acf9f63ed6fb7bdc6dbb998dc24a7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b311097a3cd3af2670ba08715f9a19ceb1b8eb18752c3941d0b1bc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"57c0b326518a6f9531d9fe6db67299caeb529abed59360ec1401d4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"779a331dab783fd28619b705ef5ecfe4549a5020446855719e800d30c1f393313c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5a937f9b7a42a35d04b1b50c65833be23ebe96a8fc3c0f172b6e51869712783925e6afb0a5\"\n}\n],\n\"handshake_hash\": \"7b88b4c488c2e730fa6c05c3bfd3e49f906a0fbfe7505d7896a072069b1bd11c017cba9e7813f15f0f2c77c509855e3072b05f4f9a486deec75545c498b0b421\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d653b677b1fa7deb87cb536b2752ca41eb9501c04354d47d8d3b69af9ddb0a0c5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"917b54c9cbb5f0fb976d6cf3fa35c282e99e52cc89e2bae76bf13c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"31f94df328eef0d08bb593ba13ae1d8c1f3cad1e3ec85eb31f9059\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4ca7a42ad1a87a3c470a4d2451a4c2cf718e70e87555704ac87d487ef6783bcb05\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ced88d34e8c829ece30b314e6c79ec45cfcb4b5cf66384c1c4ad4eaec66443142ffc7bd4e4\"\n}\n],\n\"handshake_hash\": \"dc98b29d5536c58c50edf3b6c82c32e5687914e40b42d586f4e76f82185f1b5a\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6539b2e5df489680325d396e7dae460bb79cb91904f5bd02f1375b3bdbb3e805\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"43f282b88c2060a93c256e369ed93e382fa05df5a6e18f74a66a1e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fd9c9f9e8d112df6c00e3f593ac7b6ba08449616381d1f00e89c16\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7eb081b55740f6aa6882603ef17887f9a6f4b7661182af00e14939d1dcab869182\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"970526fcf7fc303ad91e52e00e84fbfe0774566078524650db9a336315b8edc7553431f5dd\"\n}\n],\n\"handshake_hash\": \"4f328892197447dddc3ab7e29c1b908989df7ca10d7a19fea618564aabaaf6bfb6c969bab62a5f47b7eaa7e3f48b10fd485f0b4b947c7313f40c07dc8eb73350\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a5e74f54292d25b6d9067f0589c61611b216fb79a9710fe0ffd1566ff7e604\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"92cca5d50cef9c6222f821338d14c5d90aed32bf38fa06423ef17a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3815edeccc7163c6d47d4b765c1990dc50bc826040427e569adc8e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d5d4da38608215d22caad74ed4907bfb077be0cec47fef11275a732fa71087d6af\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4711128fb86a5c72f94a91952c5ec4e14a3e8dd4f40c77224cdc0d6e623ff2ad2d485d7fa7\"\n}\n],\n\"handshake_hash\": \"9051b770f946e27fd4be1c91dba1a3739a181da478d0177515acaa5d4cbf0aa2\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d659e1ae5d425f81a8cdf6554fe011216d14f6b38a929a53ead470e0a30450ebc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"469a2e4e1010a9d18a783122bfc9ef2e0261ff914fc77c4f2dd61f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6d13ba15250bcd22da381320ace39d7ac6e65b05cf051f557b4203\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c58064c154957ac21afc8ecc5fd57fbae743a29052ea343917866da5d7022b0df2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4f27b62faac6015468479ee0338ac0e041fb3b5de64734b8f984e6cb7d25cd42309bd8dde6\"\n}\n],\n\"handshake_hash\": \"588059d170bb98d6567cadc8fa8d75d79211c91f2a823013e4f51073ad6d52c6404ad95c690bc11c2f623b92629985664d3817c2a5426bad5cdf46084bcd6272\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ef7a8ee8cb10ea2d46767846b893f69b2bf9ad50df6d35428693f68b9709b00\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9fb320822634206f8ec4d306c880166d11a6cedafd49b1e584e554\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bd3dcaec36eae630181b9836e1b548c4418ec3a7cede638986bf72\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2ae25d0b5c0b58e6f672097c73e3fed3f77f14ce6c4a9fa2fe8ed5945f2a8e1d19\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8d49fb9eaab531ac7fc5aedaf38b9cd5754b3e0ed06b36eb643a6bd61a0f29b0acfe10f912\"\n}\n],\n\"handshake_hash\": \"844ba38ef86fce30d711bb0dae477b67f21674c3c9d239d542cf59241cb97182\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e702f69335cb4123d0b901f0362351b555dadb25e040c9b3b7e48eafc8b65c2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60c515462fe7ff021495696ee17e7bf2ae2068f085359677c89bdc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9c4d67c2e9dd5d21fe8d7273149c1bf8159b90a59b05d1fc43e1b4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a68670929873d46d0c17635e0388ba07f31d27e912f1ad841a8022c5c413b42b8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"81d48408564c85ce92d721504b9ec54d7e6bb7b8c7c86582169f4835e44f3176cc95783b1e\"\n}\n],\n\"handshake_hash\": \"d681be07fda5273fe06ce009f996606fe2e2aac9529aa114ee2c517fdb074422354e8dd1d6535606b8a433093fe3993030b18f87f95b8c9dee07ce60d6c652a2\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e256057893b39b671f7c82bf2444eaa3325edc4a3f0f6d4dc050d63525c4f93\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0f4d954f82ba06916721e3f49666b21fd208c65d0b052fb5bdb73d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"02b8380e5dc6e9897c0e834f37823d7292590a525eddf3705cf8d3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"78d5a29b54e0be4109e5a62376555e225fb4d5cfca0d1d5a4e6f7d865c8ae78875\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"63bbd6f329a9587e9fb08bc3aad95e6790d07ea1d991fa152c7a3cb1b953e6cb8e46ec7c22\"\n}\n],\n\"handshake_hash\": \"383bc1ba4eaa696d1d7de424cbc29c9349f7e328379a2399355ad531bec2d71f\"\n},\n{\n\"name\": \"Noise_KNhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27eab05e35f51999b1a88a94185e35f7896a588d91d551960a130eaa3e0dfea80\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bf9306f0a25471b52357305688f2f956954e7ae7e0ab521b5b0598\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8a322c2bd4e3019c5e5e555bc0a48b48be695863d34e8b19f4dbe5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e1f8b265c7078348683cb313752cacc72587fa3afc0c84b0f9e5af97380be0f2e9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0186dd09a13c9b8895fe029e36b8c31ec34ad9e9678eb7a663e39d9102acbe402a9e8f13fd\"\n}\n],\n\"handshake_hash\": \"808044fd601350b769467163409fab222fafdd64088117ead753b9a904837f609fa111727f26e833d0cd12a38bff73f509d888a13b14867614b4f864424254f8\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447605fb60c8edacd74d0019ae6da40f6ff0d0123ab13544bca9478c2f209ff5788cc0d816942cfde781ad5cfea139e0faa6a2411857409e21ec916868362cc191b9b7af37ef15a2dd04a9933023e351fa8798c5cc1198d3ef1078ba3c5a8d38a6773aa498ad3ad853\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c727b754850f82464129490cb68e2b961032c426e520630677bc7db1e8fd4dfff1b27e148cf56ed995db5c4558cdff99a3ed93949fdd44d9e2b16581287f7b3f8b4fa2706720562ed50dacc2ab60c849004c240820412eb7481b68d10bb930a74c167458aff300\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1b4f92441b522f3855ec8cf7d4cfdcc6fc36e26b4cf4795997c35d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9bd5e10de43fe308044c1765bad4254fa7b112c5ffadfd1c6b99fd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ada15052d46503de31003c238d02528a783348f06789d5b40d430fd11e24f1a2bd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7a4ff5fabcd1ec608eaf75d48ebb2829230b2878a99a6ed191ece64c34df725f41494be209\"\n}\n],\n\"handshake_hash\": \"5a412748175dc26a0be860c32879c711b685e29b4bd210aa8b792804de85ee59\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f5dc25ec47914f52937ea953bff13d5c0e84b4653c9b2054757f7a833f1e1effd629489760b898021522e6d98bd7f650228c7a340a0b858fc0e49016612e0d54a1b3b9cc2f22c269a80fd90c96129a867c3b1bc5da2e3f609a0b11b9a3e0e85f4b92af9b431002ad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433636ac84300ca19dc1cf305664de0db9a93ee2b9b7d48e014d9acd64eaa6047612a1f2890b93eaba275dedd867d5b47201e5efa32eefa31da8aafa3f1b9e9e58c63b09bdc4bd5e98563eb4d0eabdcc3e134375fbd2f19769c80e21730b9e0eae40dab9f4b16f4f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b5943e9df7206c28393b0a8cec6d39b30ccc6c602525e78258a58d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d126cb28db29e13c09b799ebd0561d9bdc530c70afa99e973a80f4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"94dd263407630fe8c86ddb6214b8fb181c90c1387287a64b8e48954a53ec233b42\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1ce8f451392dd23485095660ed8b0ab7dfd2f10696ae5ec082b6243ad14b755244baefb257\"\n}\n],\n\"handshake_hash\": \"66b9702f509c1faf160d91779e7eaa3aab5ad9e18cad2860e8c9b6a5fb5b07b1059deda299c94cdbf8fb25850afbe84bc10414fa1303b5d55956c755487eaf19\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e8a12bbed5aab1472a3e041f460ed7421be02b68104e43075e9fb730197840d70750caec598dba9385c6726c9d07d42defeded87843acddba39a3c03debfcac6b50b8e77a969f42c0651f619fa18dab0a18bb718fab168658101ebd5eb4b07f9f40adaaf5edf92ec\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e8e4cd2bacfe73107bf4ef88ef430392dbd24ba4406ecea129d9dfb1d2cb6f456051d4020bc863ccaefaae4fc143cd65f2485110b219a1205f4906dafb1d4ffc7d0072206737b24593c189b23c9e3730fdc0ea0704535e7025f064941566adc6c65856f983ac66\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f1ddf9d9ee9eeed612e5e5ce9a827017c2d112ca7f44078aed936c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"50f62e2e807ccdff25e61428a35d421b911b65df69f319f408bafe\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ac8e4fee97fddbb0d527372ad8180a365816009a91e93dabe1b2b34496aa5c9cfe\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2545ac8fb5fd8c94169a05aa0ec9d1b29a416554ebb3c155dfe83d420f9c6b5bc25d067749\"\n}\n],\n\"handshake_hash\": \"23e129218a4cd866fb6baf745c62be18fac0500ce53f9f64ba30f5fc246cfd08\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794411eb37a8c8c781165938651e02c81947ff4a3abdd3e3368bddb7111b3ffdd46994335cd178c5c9e8e8501c79afef0d02a3ee52d3523335a00055de1a4d8dcfbcc3dc9a8b43faef1edd48f69e1018064761545e7c008cc56cc7c7b90420420d04214169a408284361\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884308486f32d252c5bede61e4753d45f5cd7804d081da64dac9108aaddded5ad52fd852f824910ba2744bcb7f7773c1a741aadfcb69b08d5edc72384e0b565f34a0dc7d42a1d8c0162daaaff3e545f228c604d527cfc4c6f05389a7a8052dbef1ad858bb09b777e57\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0bd95a81388735d2bc499dc48f01cf841bc5c6807547fe466bcc3d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7cd86460380ba72362fcc375cb205e29a147e4a56cb27ef7342c9b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b5818ee2af3e94cdd304d8e4f7bbf62138535fbc621ec890585e664e1bb093eb7e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"045c76a135b99717bc81d6bafa0294d66fc8cc6d62e6347683c327a4cc9f8676725e218258\"\n}\n],\n\"handshake_hash\": \"51a395fb55439701e55bc1d4c0b7d04d7bfc5cbfafa4238de5952f83e1f07e757071e9abccb5c358b241878662b04fb9f785c83d2bf25e49f712ee3843fd6187\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794432a7e5c6088e43e5973952bb6e98dbe9390a18fbb094636ed5dac7fe0f4632eb3b358b6fd026ff69d2331fb615303a155b218da4230f948b5f4ffc6ac222a454e6cb4267d4e30b04708ff296a1f10cc7d813f9d6a849647849a4cb445a50664c3de6c9c8f92fa80edfcb67a000c6b6fa5516adf1baec30fd3d6368c6bec248e062373a7ead3325dab37bd5ba0a0c87d91902d8045183c42a1a38fe998b04413b9327e108ba90535dcdcc370894f1fe428293098eee36780712e4d99aa88e34c28b4d969126962c5d2cbf0bf30161d912a53ddebaafcf6f47a329d554c899197a54abdb1b79c074e60d873dee5a21776eb0f4102ea19d1a745b426cf542173e5f7f13458fb71dd044d59cbcb181a510d6b9ffc38d07b72a84b9c2ef5c0965a41159c7e51d999aadda1bad782e6c2b1545c19c5d74d11a1575bb5b6c28d0cc936d972a3f7b64539c4d1ba6c0e41157466cb20220a8df67ebac1683320620518f5f918467f2562c88800f51db04933fe987c87073ef15d62fc7f4d808244ca9e565352eaffbc5a3edd06bd575448dd74cbd102b9b3524aa273182363b1eb786e4734e82566b76a8d511418ba4b5f05425ccca2fa47fb837ab9e6b3385a8a5bd8910e96d2747369b6c7d288bfffc6ac8b669ff548b130cc2662d680d4503726fa07937899e94752b2f32aad690a1de5a4bf597ccfd221ba76a87c60ae79af681a75695b9754d5e56e16f22ed76d7da81b49a28845d28df203ad3a4ba5d9e41f0cc3cf3b7157055f57aadbb57685782bbd598abc689be20f4c76d8808ed69e6bb4d69f4eb67591b759c500929170bb345a03510ff52b15f3486133e2062d559f13ad7073e34d583f4e26b723335b0ca6e65a4764c93eb5de12d68674b147673a13ae5a3d16a4fad796b449f8df4b24f03e17de5a274bfb3ff6b85dc9aebba861a357806aeeac55d0ce88f143d4268b32104be6a9bd5dd3d1e2b4d0615dede02a305346d898ec515268ba0487fe4230312028815411659bab8ed06967c7255b6498f4e90ae16adf58e1d6ae909ad72b6c6ac4fcc2421dde1033fe9f4edd608b5ce29935bb2412ea926d8575ce554a91cd09d0fef525a7385fc229f943963ca1bcf6d1d0db9278752aaca8587563728b0b6cf0bd1be4a9869a0c1f87f5e0926b9a76e2e047fe809b3f7d617b8a6c7b4b090c6ee6cebf5c1aed10c6c831843353bc984ac554aca17b9df6d2f20df6f36525a2de6af4527e5b6429f2a27a17672c0f0ac15ff88b202e99c0a4ac3ebfbdb0ac1fcfeecf4092e40aa26b6f3e4102bdac64e90f58e77be61fe1cfd0dd9b729501ed2a4a60f7ba1cc78c200690f681e13a8dc9be1083499561f2c1f33faa9a4d0e0f550725b113459ada1f7682d696491740570bd91ba87829e81af594cbb1626e96e1efbe2cb4ccb560be5edc6dc0dacfd45503bb3fd561cd71377fdf120ef85f508fb68c63af1c0d873d1a41d47e2fe4b12284c615ca444f1724dcd6eaadef9b97d402cb0a718b2c58d03b72e53846148f671e6acd5a79608dcf709b94f5878c4d1f1ae20d2d6017db46ffa041cc5ba3c04af1270133e1022dd4541b6589d1d7e7d87cba2e0a8d43b6ae4903146d4411c2674b11267f6ab8f97083345562c515aae9d0f95c467230e28d77d8e109b9beb64c2275ddca8a90c876a51f0335000368e5000e40d511e7a9be128eb97f29ff5734ec72d9d6c227c6a106a81c36c2859da518a76f10fadd6017bbec0e16ed6c16d9ffa341047040fc493328d2317885c5a6c26dbcd3a88a17a1b8c95c76b7d45134da614c78a7faf958915fe5801bd0be2ef44970b76e624f25ed6e68646100259a3307741e88b09c3bc4e813f10a8f44523b91039f45546522c218a9f0274ed311bca16070abd8ccbceb4523701fad05bace4de20b9eace84542b63ff739c9c139086daf651a4d5014a2d54c94d74a9515daa0bdf2e44462d7ef3c2b00dc8d35c02e65c745ad85d83e95911dfccacfea5efaa711ace54ce1cc73e77fe99772b29ccee75773ab3d14ca9228468d30a712a862bbe7a76bf242de157e0de6bd95d1348df574ebd0e97b7e738807d724584a0ef5a06589ebcedfd73ff3b85d3b38a2bed0d67fc5b6e03b84d906bc04cdc5c5ccac3f6b8914e0ce83c8773a9302d27d9636d68e7b1635c1560de56bb1247bc8f8dc92be05dc05a3c1f200a951e2f739f9f94767e01f4dec49d5fab019409f8a4af79f87854c175cac794a4b58b8bb3ce850af614b8b8cc79a4207a1ae3ecfef43b1d2a5ebb2d36618c9005f03669dba70cc773fc032dc8c23648aa49f5d5e47d440a4a7ee099f37552a15823863cc72321c23d3866be7ab20fef2fda5593ed0488358c671a1438fdf9c3a5e7c3d25281d46e58061c6936f752f9534ce136630c877bbc7e3a97f0e7b4973074317509b96154c19759110c392bd06cf8f50ac6c23e97e3f6287dc75d6cd484c97d079343fbf237364f5e5b951a206e78e671658c8a8264cfb18788c7b62cdff4a037488359fb568536fbc9cd317c7f4a2d2a71a17838338d01805efbbba70c5f7e5f442526db35720320133cbffeb0c480f6f6dbcabdda3444b593398d358a1e9bf50303af0fcd54507cdeac3d7ea5ca33d4426277\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430d71a43fab0b63652be83550b5c230606101ce979de49667d09b3ac3496ae22dfe6974cc0ae3c34754dfa3d50938c3436a6dca1ac4951b7f8416a343bb367527ce80068ad08ccc1070a90cc7fe2d140f292ee74dbbda60ad9735561a6644f3dc26b0c1f24b01c897c05113fa15fab4878d182672c850821a0f1c98b20e3c8b744bd7068ab34c0281e12ce1320320ca41a8150cab7ff66cae48593f7dc15015e540334538ad87cbb4a77ff69d72fae1f3b5054c515da51a2e27e3bf4d4983b47f67792ddc9c4cf6cde385e47ce01ecf62243b07510591341476de100cf024273354ab2057009d85cc3c8ae2473f01ae7826ee6bf66d766ba5134f807898573b8ab90da1238fe988dd1d94303f5c07c1df3cf0b774ee859b0f76cbd8afa5f262674565dec7c597383ab76571a53feaf862fd38e2ec3b573f13c0bc70cd7e05de88a4d2350700bc7e16f6c90d558a2931ca719c505070c31ad5e9e00c4354ce3362dad69a78446aafa9256d0ec6f699b06cfbcf550960e95723a51a037ecb442599075a365819780ccc441c0368b7a87775c26f26b50039644f523e3954c931bac56e8fa58de2e7d9144ea97f70f24100d04eab48e83f929b2fb5a213938ab6786d17ce246f819f7f986602576088cc13bc9819cbaa9c3f59fe283bab28f0ea9f8876663e8acd639d29338bbd63fb0d0869f69828fd0728e805e5baed448b6a8804098e378164b93e39c70cfd61a1bc41b9e7d31c0869548dd0c959ee2f0d8d992173e6ee0480fc64b1a92db3a94600fbf9bb758767af12bb1f23ed56ae4a1249c7481f732cd1c392d2f13e2df6ac4053487e5152c5020c322c26a08a7e00e12e8e00e1834c1c3f63e0241af4c5ef775e3a1b34809c37ab84318392964a19daa8324bb991d0f198c4a64b53e12bf49759585bb4701cfa97ecb68ac5a58e25cb980c3fd1ece923ff6f813f8dadf5ad9e8553523f8490197b4fd9b8709d3721e910027fa43ccfa0ed83258f0bed24683a88c287f65f6bda56799cc02182958cd88499509d5b04efa964d515a3ebb6e44fe4245229f57df97cee7e645797141eff9015db7b45a59a1691140f0b54bcd900b0c6c6b9319b2a5ddd90a805cb51ad5e85b9855714073f3422f1205a1e2c38300098e27362d70ca34cd4c52f3717fce653bf7860c582ee84440db326901cae756bb21ed12faf8be7c7e9e9ff4ae7fcbd5158d68c546ee80b14493012835aa86731cfb20be38df5a278a633ac7f73eed28a12977b8f476ed85c305972954c514d3b90b0bf270f71674e31c8ec7568203df7eb05c5c4bccf06283eadcf0fedd97fa3facb0e612e1f10ab8450dc1f8f14066c478d1b78d0485a1928989f6a2c3d3b82b236c6bd4e5269cffab82a49f3c58c71cada087436d7c05b2919e53826121b127294e148fb72529023c09d3dfbe82f711a72e596fe8ba1c4e732664383df1fd0680db869f14faf94c800841b05799d3810d597e9873128e0aba3fffd239005da8646782b97f905fc5f11d7aef66032d079f1081e00684d3e67f587297b77fea2b1bf586f0e9c9fb6e0ea6d2e86ab83c7598306da4e317efe05e7686d3c4262a26e8de2d3ff080ecb5a6a8a9c32bf99dd8a014d0cd4f06d7921fef69f7270f170d649c1054a516cdebf69076b7548febb6c3a1bfc5e4c0dea3f2a017c5ad41248447000e980925e59b9fa1f60196eeb8ecd1bcb6b00b1b12ffcedae5e81886fc69ccc34d159845f31817dfac97d3ec0c918d484f6a1c12dbda470ab333c60bcc3f03c05092545bb2bfb6c4491c88a4dbab21714b7c3d353697fa156be58a386e78eeebee988e5911a86fd2fd6637d15c387f049842b1247a980c040b56506cffdd15201ef047bd9d2112c2f24e232f892c0903f7d476429e60650ddc85139ef21b30db158221aaf27f2057e3088d5af6b7ef696d65947d074df35c4eff0e927622f74f34daebaa721b4a2e120a9aa18a4a1142ff255aab2ca0211b97bba14df8e32c76ddce8ff2fe23f1f511aa3fde49f64175ab4b62d8f225143ea6123093897d0a6ff83caff48ea0155ec344b4f255ae1a8c2e7769a7ac75473c1c341d3f45247585af132d0e898b074edf809ba5b364d19867ad21eba0557895bdb18b1913c4c2142b1a08d2f39b5870920b8346fb67ed7124a18bdc833983a88f90f79d5b8c650d04f0f6167bfec2bb36cbc98a2bcf42fc69ad35bfc9585ea972b3b9168e59a9e99a4c03243847b2f4bafa7fc24ed775fdc1433ad7c6689a4e8455d2a8c39db5066e945fb9f763a9b3f7350662b365cd2b2d5f4d10c766b3865be640adc4eff4e85e621ebeff704e0eb83f95f94f3d50febbed106d483e19861135bf62d51cae93198868d6888a69060a5a9a28eb9a555af79730d4134e63ae1cddbd4aaacb6a66861c2b632e2d614710ec9acefbd652e7b5b388db1c415585e583b146ce232c41acf01afd5d4b1bd3f3043ff8ba2f1d2ed630341c4785b712189f90c064cb5af1cacbd1795182a9b3d042f5c283193be17d0293f279f63478850b38d3995fc52315bdcde2f7cd78c95a0f2c4b01908c54144708f87d1f843f2d331cd16e0fcf19ad2b1ca8a90d8d875d36dded2b9356995bbcada62bc146828ea51483656c0c1b124da8133447893acd9142278ff505c9de428bc6732bf19df36f558f20e1c4afcd4ada7d4afd8b14f8cf94b08cc1c2568236fa44f0c07ba48d293e2220cb5512496f0b35e664fe7d4c67b209b1eaffd3e78ee45354f89d09e999c627cba2824db76a16911f8aed038ab76720dcfddc919b4fc1a6b7aa06080624f1de3e458fcab0eef60b6e5545d0963cc51880f858a5447e75e8340c8d89f3f5efefb61983fddc1264785b8c3825e129b9bd9cd6ba39e13abf12d6edaf2abb239937f7e997e0ea66560f92555ac66762c96f6b912d7deb056575373c934bb9501678cca\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"055e1df005c0b45e70bef6a8d75c8ab212d69ee0712d7656e4d505\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2fe9aff1d1a94ff76d33f5eab4e8b40140dd1ebe336e157a393cb7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e545f56c82f9ac03d7a7c8a51bd0fee5a2e0bae7ef694df3614952c4fef864b93d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d6769fe102ae6d8b4cf0abdf8b16056cc3a965c6179c1bd1273e23c523b7ed7bf6d61a0052\"\n}\n],\n\"handshake_hash\": \"0c533d487210972654d12aebd07392bb85dacba84998cf1d1f5a297f23fe979e\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444cd3112a9874d628df064789833edbe1e0e694282b3cb478ef347de33cbf033bdabd42b13cc9f52c63ee21a4117383b91f602c8830f322d4415431096b89fce376c61d67f22f4d41b1a40a5a23e8c0af959c8d305188b18878f5c703271ffdacceccf833c4f06c87b036f8a6b158f830b6599a6377dd16b15b93b8be7b38932c6d0506b7272d2f3cef9b703cfbe60bdc100d675f0909414f6066064ed64a9a44bac232db6a4016b7db1527537819dc093d61e7d10982e941ceb83283ca7333fc13d8ab812150233bf66223497e05dee1160985b75d8509cd2dd54aed1079db6794e2a6cb2021079d15ef6cbc7048b9211d48aefa3a21fa07bd8a00fbf542ab123e9c2443e9e8859a8da8046722a403b0a7f81968ace656ac9ac5f13a0cd61e158488507b361f95d66dce7ca060016a02b853bb185e445b0de5d2cbe6df7d6958c2db4d91f842154542b64e8b8a5ac9b4182e5f7f67b854ebeadd65950566172ff6eff4ed2280144142bcba51352746d5bd26e7338e7a60297bebb911794ee00ea4773582bfc6ad364c355edbe19af360d2b4ecf794811da956e77d15d1e809cde3656d23f522c599b6d2a341d0b1e0e2ab67ef8051d9599c68bc6202c00db5cac318cc119998c791edd16874efbfb30d9859039722ffc62ce9e44685a00ebd38ff802f75f78bd949bfba5a8ec1257f1a276d47b65518a64cd39a421811775985e075cf972274c2824f49ed6a5e5737d2ec3fff521f226b125ffd117a51bef93103c213e66b5bddabc74db88a32d65503a8cf35d1aad233cb98b31650c96eed5ada69444ef13abfcd24462325b0248420f0efcae7ba48a0573239fc728a7902f48f970ba482dd6f637d86b109e5b2ae7ab6f3deecd0538e0ffd9b081c5f78e2438a894a884ae4e8b4fa45f3b6bc318b5c59dded21a2a46d400bcf3e8083bb9b25cad8f1a2091a1fb0fe3e38b48aa58ef020fccddc8d9e262626f5c2b578f7769e7d3728ec8d382ada7619f2cc34293433a9681ac1954826254fc1e1d04c8ada3aa2e3e6d3125e819fd106a765da62e049e91a2891feb739af4005c88423bc3649430a53dd1c5c2002f3d33e93062cc2ca2f13b9dcb31e22a555b71f8160f6c9099f3ff43a32e1c5661dee0a4d24aa516cb10cbb1e773702fd84624d3a218b94aae05dac6cc32efc951febf189b076d8179c6cc4deb1b9ccea50437c82df55817091fe7690c72cfdeada1a2c5db0b0d33232f2316b07f25c686de411ce0e2c8429ab79d501fcafd606f2d673e9f0eca648d26e8920d7bdaacccca331082e4b488d6242bb0cb41ff0da5672dfb53da054ce1ad520799054bc8f04022f06e47ebf0346c2d0b6f851b39f02ff32cfdd8e8df0040d0c07182b044afe8a4138272f7bca8bc5d48e8db9eff80a43bc99f567250937a6a94bfcf569937d7dc935c78b218f9e290427c314b07c60b9d19cf86a93c4196c755bcd1c9654b165e5f6ab89af92fe1c0502d3dc7111bbb613e52bf04b09e1158babe85c63b1357e1bf67c8fcfd2d98f4f7278129a2018b833710f184da39f1d2634c9fb1b464d91a5d3d8e4764934f2cb59b8286dda69805719cdac9ed314162b1eaad55c9765daa2a79ce18c42e9d8689b32779ff668eef3e9776806d71e4f259a17f5cd612dc1b6db84266929c913bbad0555ada6706500f49198155b4d7787120e0c2bbc139e43ae3bc30588a8b73f4cc9188e8b168ea4f96267bd85bca68c75fa84335f55a9a10a1b67d559e58a60e58c25ba4f772814be9c7f4d1ac1e0920d0d85e8e35fb55b03175af48508e87db8f04c0daddde7001f7989ae67bd2053db5b8d72a54b6e08e73c19c8be161baf91ce0efdfd8618af16e49983d8a1439da33929982ce04aadefed066dee5c6d4dbc6c8aafed1a9a687288185e5ca8dbb14edf4b2c3e6db09c6edc36c0f75d60713144505383f7ca4bc975130ab0a2b2cece7336a2239f2c26908042e8ed0b48f7af8ccb626ea6aee5a7b14f1d0ffe0781a1b33e47a31609746ea3036773206a872ae92901ce51d4a2891d56603b879f263200566e53b8d87ca19bcf5ea2b3f5004e3a6c9d0d41575d3c487e47e6628b570a5b2e1be3c5df9183b77c80b9adc56c94479d3e7f38ad64b07d70876990566e7233c9b19e9f66c3cbba40f01544e18abc845ff6c70351a3802d9cf9943ac7281a71c443e0b1ae7cf9c95a794424c4ad241bb80827bcb07c496d3bdfd4785db6b83bae58aa898043730577bce8fd3c6504daf94757fbe5d4c8f5194c552f5f5b1bd3520a2a0a818aa77c74d60f52f9efbe47fca0f061ca399048473dc6cf9afa32073868e18bf5abe7f80cf96ae17894eeade99cfe018044ec8732105d6b125c699a70c7839343474771fb12655ff223820a85a74c30b195cdafc3227996279b5e02bde95d1bc42e4b99c754d497fad877e6f10435efa4169304ce57e0628fc69531010c6d576a2e2040e5ea44f790262981c6c7d0cd2c36015612eaadc4a840e8aac2e7c4bbf89451e8349799394f1852d6f80630e8526cbd75da790408e4ec8c2af288a56853613dd076b689e23408cd370048c6d0f9e6762fa81398408ed55bf5b640fa6f1f857497f48e212fb9a26752b93c22b432bb3bc082524d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438f812722f9215df9e0a7a1368593d37b86fd17385fb71bf4a4db6780b44a8606e0e2b8d7ea44c6294fa7a57e3a0175a359b440b4d997e7fad92d7e4900fcc1e3fa3c08973a0defaf6619daef40990d7ea0bac5ef98f113f7fda3754b5bc0a773bc757f51e043af4c882fd9c5d35067738e3491e62032f6f6ff8f2cc71128d5eb1c88f52dbcce7356572a1447c56d97e7adea33b5215b5a7f8e8c148d642442aca66cc50c88cfd5b83801162007039ccd81347e4277d505309ea22f53a243fe43d73f5936996a1ad0e1f8a820e06b000afc1ef936c2339d4e391a1b5bd5c4df1ccaed48db3e20a34fe352a75121d064494d21dae07abf8f63b55b4d2fbd3c3040eb5f3766f0aee30dcef3394b30f4f42bb6d1c94266f16c7af20a0d04c0d6bd42e95512a8b25bc175027a04d13467df4b4f78813e18ef0d83612dc5fa48d17395d49984e6c8da247b1a982bf4a97a0930711badcc0022b9af9d3d9917665f913936a2b285643da32c487cc7a8a0ba67bf8a5f962fdb8b26157d4cc6d3271d58009610604ad5c0a8975a2d2c2a55ca0e69cb3458daf6c4e3aa3b9cdad6da440213df6e3728e9a5b6a5ba65d0bf4f810fcb7f78b53db673bd7b4f8b0d870ac47751514a4d1a222137a61c36a16d07bf05a6f33af04eff1016565b2dba66908c6f47ce2a1f530f48996fa63f2271eb30f26a4efcf540e292493557757a1cccd2662c541c65af51520922a6a1a40c46ffbd8c1d13f4afd3e1e39df1c99980676c2f0925753827b95d9736d3b71ec27ed90823ace498a97910e2ed003f4baa88b0649154da9231ff2b8afb485577b9633552eef158c3901ab5e74d09b768082ba9e5e3777680a573af3c527aeedb20c4c8c4aa7153eaa48aea6c14aaeece3141540470422131bd5934371029d882d4738b97713b72ff4689a0e03503fa3516aa4c387e607f734ae0259e24cf1b6813ad9c8121a5f3711bf5244ed3bbf2b418c7e78895caee582cfd55987266ec10769738f853f3ebb720eb8bf0b21868cc4a4065efa7d4f8c0a23faecd7c74b11bf401c28c888ff6cc6885ca96d20970eae5dc121ba9c48d39a238140fada53ca03b600aa46a07faaa02971d0364956ea3befed4699c877640aa810293360f7284e69c31c0110b375be772f3b4bb561795650b3e85b12afbc019475ea60409d373c0014ef84ff9b8da0af20e90b2b360fc62abf7aee6accf0301f5c3d63af3206bd6ce9babe19b96f7f924a0ec178315f13802e6ade6f4c0a30d3a87474a003267b48286af9ee1eecd374adbbe5017b724bd860f0a654398bc36ca10ebee411ad8cb07a87c0682370807271f7f61c852b3a84b5f80fc6456601ac36d87c3e5cb9e4908136096afcd1d09f6b88eb7eca18012b85c1870e0df51d8eace7c769d81bcdd18fbb3a5f91a076859e8a59d27dbeb90160c469a67dbf460f84afd20d3c5085897da195bf3349cff8453e1209bed80d7c45e85e94c1b2b594d80f4be1e937e632ecadf605a5ee1bd60592f2bd5610dd177b6f1ba552f0c09861e12e4cb7c99107d3c79933c17ff8b5d36a3e62ee6dda83c3e260b297c6c4c84a51dca8329d4ba4e8e44113ce2d597ec54f36e852cabfaa50f9bd1863c20224633a9227b62a9eec667940436d0f3724c17f7ae1934d65fbe7a54300b16a1fc0afdbea04d9827ea22f92d93ef2d4751187b90a16fc6ced5609af804efe10c9f7fa45b6500bc11400e6add85de6d249147b6d46a9d8b657a7f40010f6ea6458fa09e805ab24eb89c9a0ea4cda2f41b6e8dcc50f99672b5455aae835b4fb184fd4c65c932a937497be8b22c9a41f3901035b7bd81ccc2f442f4786177e267ce9bf28c491d418b0ccbf7aad50838078e20edfa8e48c07a3eebd2b7601f17d46dae84e5d39ee029566b9565c460fe1a09f18d8abeb17e6c929ff5ae462bf7f4fa96b3daabf9bba4fcd56bd3a3aa349725e39017dd60084413c70a117ac0c1b65911c2b1ad1a4005559e4b771c0ef32443ee545530e9be4553aed78d24c75e66d04d9b7e5bfae7c3556852640b1ade778fecf62f90a829819bf8c414e7dae4e6687bb78a399e8896d8851189306d922ff607804c3651ec7e3d9fdf500e2385b6ac1cd397acac3440dc71fa1102c9b9c23e547598325f354355c840ec211709c9815e0730f584995dde911c9933e1f924d8d8c9868266f0f0d6e17715e7460cd873629f08214fd3a7bae9f4c4ee527e222c49fef53b6828ba03feaadd74aaa1981ab39aa21061dc9fd6ce2cbfe3bea5bccc716589a48e1b51af06e8815525929261d30ae5146d2c68bf46234e8f0b2b01d31f7482b1e00b66ab74e3aab3c9060abb0552af6009ae4c83cbfd2c828340c6dbf621fe4908b9a59e581f6f8354c6dbdef14b21c87c3f32573e024d0dbb39bb03e9d50c8b65ee938b32c091b51990f4560cd218473b93f4d6f7be2bad8e64824228ddd2ea80a9335e6d5052de828da0cd0e93b74842c5df9ffec42ed3817b16c099cc44b6b3e34b94b2b04561eebd9096c84c6acf0282dec51f4b600ceb174d8211f113b79f97d9c00538edd72c5d69f84b3aca487579ef53c22c53b44e951af08b3d3e3d4499fab75ad51ca5525dc7d82bc4726d1fe97bfb6199e1f91b8606250a8819775cecf0608f0e5f666ac808d34aa84924945f642fee8de695cb0b604e002bda0fed395215f7e192acabe23fccca568feadb235197f3a3009c397b44ce1935c9599467b3bf51b82181f9204344964bf8fb5d264740507ceb07044b46c9d874b394c9a32972d4d4e8c074eb9a9933daa36943db7f363a0e45631c26127c467226b81c1d4b323b9c61d86a31ef1dd1d559b776d71c13d4374dd9b0e42fd885a5eea0f7744742adff446aca9ac27ffa9ee0d957e5a73e972188ab91882f95f411daf54689793c5a2186f6614d5dff5b7c061b929a6fb50349e8e6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"039ab36eb0dadb66b9f5ecbb4273c19618e5d53f71bbc19d7bc55a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1d345fc65c79114af9bb6181942c75174e984efecf8a6954100559\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"db79866915cdeb23e1f1b3a5cb7712bdd6e9e5ebfb3bf0450dce5b7f7037a7f0ed\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8a3e3a1057cb7fa3aba4f64f0283df3fc450c907efb5e8aefdf427d394e18ee27be5b1f5a3\"\n}\n],\n\"handshake_hash\": \"474f59d76210536d9cb2aa3539bc3b6d5e970a87eaf05d6a3006bc4ebad666059c96bad1807a94e9582416125dd62e26b8748ebe392901f571f700824e8389e9\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442be3aa5b8cd78880f44c3c79bc8e1a759179c1be5bbed17df1c0fdf001ce2060375d274af6bf4dea43b5791fdfc0331c707f87d4bcfdfe7ab5187fcc18c9de084419ee87b1162ed52aa74abfa43fdec18d34c81aca2287a329145657ad5ab0968a82d3623073893c39c2ba93e5c122e270c7e605816aa85ac17210a913630de8b5b982c2186f2412acd1ff02cb7123ff001520013e8dc39589592733de685182416ae5e878abe1005910729665a798b36e48daeeb5e41fd719df522debe43e12217cc40ec2e5876d7ae6a443666e3a7965abe1e1c5d3cc5cf7785407a652c34f14134bc6899dd3573b1ac1899c29e55f3a5d2827dcd5921af7ed4b24fbc39112f06c473dcfc36839a4e36a7a0c3d74f08456ff2f9b6eaa1c3ee63ed23c3c2d4d1c0b68983e09812463341a844ba4c2034adf1e14101e676041132eb7e01441a85e7112b9330b7e5a9e88f1e05223ab1f45012e7f5ad7e61d6dada8ac13812e982d765f41224a384c2eca96987b8e4e4d953e980327347fa635f3a8c0adf03a5ed665b907f6b5a438b762d0e4d2dbb253c9bb4f67b3820af31387427e1062d1eea6a882605c77550699cc522ee882b254968a4fe9dd33da11185f5c83ab177e1509073ea593e4c6244a48648025feb70792c1858d807087aae79568f4847f93d83eabf88cc7bffe5915d76834ae2723a3b1a86b4add0e9705f924dfa4d2871a93ff10b50b9e3b118817295edc03107b080481f7b416c586021c29a061acf4e2b4cfeee36cbb843918cf7e73ac25199374d82e9b647f3c6023c53fe57411c2994c248495f29b69f01520f54da06f00d2fb2883acfe7c56b5bd85cc0c1f51b3aeaa7d690a3008f534e903e5379f0ca14d62647a3cb015571cb3190937fb55838da834cf22c97b58c14d2c56c190d65d30a5f16a9d634c84b68e13436c913643c71da85516d9f2a700d90e1885e0ca215f190891cb97ffa4a9171d90aa13faff74b5cfce1fa78d878cd0b3e24a8ecd92a0979636e78b6350300cc35ab71876f0c05b4b13e0cfb904ab72b31a51cc904c5d3c9081630a01e1176b43f58b3a8e47bfb71e4914ad5a59eb15a364e9ba2d6d73b8ecd9d7264acf1863009c4efe511e8b489630e1c9353d58def083254cbc4bfd43a2364f0946eb537c622d98409bca6228485938e50507bfd46472a31e9d13276459e2aa9174cb9a240c0c9149e1cbfa1f50e6be2c20d5b3256d914cbc4ff1d0fc777f05b776288a49ffd520e7456c2ff266e519d90979b27fd8c7e08f532719c300a349e639272c618d1ee08b2cb29d4b6b5c2fe05293f9958d357b1c0cd435728d6f8be53b4ffcb3a1730486ca4bdae0c33848f0448b478c7e0f54f0d82cdf53b726f32e4d14063fc33b8386bfdf67e0459d5fd8745330c0b06efc27e62ae3a1ae1571d2dda74882b0c6a7a43f07d6d31a76244994cd051a58b751ebfa43cd4624ac038d45f4da4b1d9b68dd13ab07ed852e651339403fb50f0c330d36b4f23f20683dcb91abf13a6f258e053234c4f6ea51d7bfce17ef446da45bd9fe68ac1687aef837b04f00ea45bbf240ec3c212f2b4b946ba2d0ad873ffcf465620b60d09748b3ed1a31d1e6e7281a32a990cec078120007db750724b0455f50303fe21c113e1ba69c83184a8b665258a5ea94b9a193f85dd92b68ca8442dc55fbd501d810daa0f7fe72e06a52d6a8cefd835bc332aee7545c2d67f9e6f05993f12723d71e26bbc56dc6e6db4bd0ce61e79c2cd2eabed348cddc194b48d3327c13259490341aa6f54b82690742a53762e508f43871a668af328ab61f98f02afe14420771c196370a75d180b163178036f9e48dc921f4bb5c8023433f3687098c879bd23f2db9223bd5a9f906004e8681d78b30c44fd45ae30f953c728e4d2b9f4498837cefbf7cc84cffe6e2367577c412dd37263bd31917e2f7b5247db0bfd49beb4b7206fcc70d7d6c3b6a744645edb41d434b03058aac08e2fd8741d46019755f26f6401841867e73120ed857c5ef56b353ae2c6ec72275ecf9a36b409c6e744184b71c33a9a3fa8b21cf23d73d0434449e5935506314bb592745421b83aeaf99349637abbc77486fc4310994f6bdb87627a890b49e3316f13764aaf64c3980977980bdeb589aebfe1d0bd306a9210cc59eadd1ec1e9d89161eea1e81eaa39e2de1651976062e1720c73de093ef35ba5b80bcf6dc57347d069a0e61a78eb5be2a89769d07fb55205c62b5e2d0914dffc1f10c61793527ab68f28d738170fb561a8245d57fd06c7dc887d37803d38c07ec4dd8b6cf3c3a6515caacd5556023ba967816775a022e014700a1d55aef3b7cd55c83dd08504284923a9ad77b4d594442fb1af3f9b848cec7bbeb6c20b06b301894e88b62a26692a7fd3903603718b82b57daa57ba6f7694869d4592abc25c4f113f613adfc61e7623d5a2e06ca197135b05f8f00b37e9c254898eeb247f6227685125a7f3de93107f4e3ee05f92236a6ee1ccd2288aad958b9c49fb7a8c059966cc9b27dcd5cb033e9e41dd7ccf5d146f63d0a0e049cdf14713e57fd2f54a1ae39c09ecf813fcc53a33769ef80f1c0fe175993ead984db4cb682dd76b4f5e3ad2492efd2a6a7fee3ffe6866a17f58443d90b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431a9899b6e1a39b51cb9fd186e5e148541f9b6afcc39d9eb4a230f04dfc95b9acdbdb22f24ba1855f03e49a620a3edd66f7da6ad5c33c0e109a1d9b4f1dc807921b5d086f1e70dc201b1c8010a48e0c722a9bc2bd9b1d01eef608f0a234d1d2463e83c998fa6e41d4dd25b24999e9be951f989d2134bde1c9711812a65ca70f179def0ba4e519b4dfd98e7fcf2ba18eeeeee08b9c8f7581190d0896eaf9ff1ef1be168221e37617cf8c04cf2a72d4164a84c1921958171d68016d5a1c3501c9ba84b35fb34b965084054a742f6108de41d22bd48c3e202bc01941b7ea02a06782c4e54a5db5a6d97cbe29acb8041fae471daf5b3df0e501bce5f38e752354eaed14adca4bd30e3ca38ee57f52102f36458bfd911a09128dd845d0a78796d71ec2276c74438030299b63f4ed1b23d0303fc62ca601a479d5ea030eac880a159ea536957b2285643809ea03361fb3e02418082736be48e685a2fcc3e094424e676e23d24b60d26663b5d6aac95fc388a52fffc2d46ff19982a9846f6acc9144bc63e10bc41b526ad1c66b234afde7d0c934eba3553fcecdc3db82c3b6e736719f704c990b487d3f50af3876c75d076be76c00fd7db0c169812c16152190257d9670951e054622e4e84baeef766658161aaaf699ef97653d80da4ca5daff4882fa503c7f0ca119af7b6ae07c22664e740dde2da8f006ebdf0cfb3b35cddc39fbfe1ba31e4509e0262eb57680fa1719111a36f7e0438cf2f8109701e9269708dfcb523dfc1deb35b86acdf1af124bbfe4eeec8831f410700b0a247835dbc37893c60119874a201298a9e0780c5a0ff28609d1652118cd099b5c114cf403abd98e16042a330df832ef38030f7e6cad442891b41071bb1e9a2b5434d26270598962769dcfc74dc1b022753e0438d3ac0280aa297797aab5760171638d909769a2d4c5ee55d59a85dfdadc8259ac51acd56442dff5a26ea12622f47c7ffff4d3f2d8cfe0ba1200b4d8fdbb7aca7ea49c47c019c3e143b27bcc30931552e7eefcb5168c47f02a50cdaac2b2908665eb893682448694663846255fc14f083fa335f2e8031028a3bc6bf5c0a227afbc5ba024c3f5b83def3d8415b4408bcb71c2d8625d753374d4cf1013877975abc2b3dea207af43bb96ec89bcc3b040ae1342df8cee07003c6d64af37cc02c5f3d95db97fe3cacd9b9d4bcb166e81c3541e1bc318c19c8763e814521dbb2e73099e3b486e382d9118e6b2bf3dc24104b1b3f4f48886977de841b53603ef419833a67dab5ef9289bd4c198749d6a150bd602fad9ad3b02bcaf9d05ac7b1c451079391692397f6387011c7f86fc9ed9260a600e03324f2adc7311388c45e4c6536b93fef9ec91422a8373e37ae47ad05f9bb7479d85b5ceae3003f9823107502e0414855a85c8daad63076ee118d06d68743b70e450eefd6e3bb8aea3b20373345159e8b830a5184fc2f930c0d1f361bfe9f26de95e44579e8e2f4b9446cd00e13ca7c9d2e6edc7dcbb2d89ce54a40f0032ee12465f2ad12ea2618517782cc9129acf64559731da3a3d025aa6f718b3a01a4aa556d140b5df8353512e8dbb4cfe3cf6e2136af60497c1e26f238629abc5f0be92c5c5ce4dfc797c8a675d0290060c58db7a4fb8e158c21a93b9ebb88f42954a02317e9ead4d8d33e1807ee0c69ec04ff16b6f7df65e50e927f02de1a4fb94eb6087f3758299e5d78581d42f532036ddf5f17bfb4c467f99087099613ef5927c6a4e79334ef683acc24e4754a975583ea7836e4bb7021f91d360b6740776b372b257839d9c73c446008a0c233e1c0d1fdddc4d2b10dd1ae7fa406be351096f213616a7fa5b0ac67dd5089fb89327b9d7598780cc49f33421010cec8aaa8395a9c9de60b13fb2888d8206918d7b2dafbd659382cb37932740147c0ef0244a7214da2f3858058b4c6ef7d97f21615d6eb635adf89d6b91bd67645995f5f437b8a168c1f3511fc1e07e9423f622a8562d2c1bb2c4fcf4bbf6012a911d96d80ba9153617843839e518319c76bd5223af00f7354e1b32ad9fa722a22351db672646c48eeef0e4a41af422305b1b2050ee286f9b9363100a9bae32d66437e43191968cc30b266e94a0dcbfa890e8197da7b0e79255fdda6908f831fc7541464d9f6a4154f7879738e39ca1dcb64c050d7247c9110e408c206817688c33fea438bdc20b3a914c916aaf1338be574557601d04c833b8c43ecedff2fa977323c23dba5a8df5b48eb475aa503b50975621518fb15e6dee5f4f57351d18c6bb565162707fc7aba7adb746275d1a2bb7a91e0df2dae1b72588db0e7ee0be5ca527ebca3f5646bfe04138cbf296d63bf6406b77be98f8a8c0e3cb2cb4b019918e2e4019fe376aa7f509b65ee49a36b70ee97d3ce64e3c89da34beb2d80e8cac2e0983268c9e5b831dda1444c98b46a99dd5f53c11feada16f54759b01ef56f42c41e2c04d88100d1a8d3889af83b31b54ad21bbec0db10a0ec2c9c47b823da352e6584f0dff1eb68d7ddef64b6958da04a061d3f3deee2619eee9585763efb02618b11d1a587b1714881feb7c207718981b3ce0117d9e53debef6bc353e19a7cd7334799641a785a95affa9efde507170351d443d9a81566e6cbee65d9d69e5492f7d12effdf1e07c91ef1907bfd942cd0cb41f5dcdb9312cfd8e9a1da3a5d1e004951e7fa2ee6124371ec53221f0dba566d26fa0b42ee14644a0ea71c68325db822c4bda68855c388a99ad456e80fe004d7835537ecbf691342017f9f32c8cc4f8df5a89d448b1ad8a3462dafdf1ff0cc760735a9500105dfa94e8854fbe32a5cb8b9fd3d38b816aef0e54a061dce67ba3eede085ee00375b2d67e6a199af1f5250a5e8afc4dc547901b7db2da33f8d3adecef5c822cbcf37b6cb1aa0fbd07d06753c9b5dfcc4b685ff02f504b145a554a242462dd66a1250fb3df\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dce55aac80c34ab32900413621589bc8872376dc54074b1093e45b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a135aceea912edda743999c1c6624857fe59e195b378f5f81e81d4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0c63553bef5599683c6e176e7749d15523cac8b9842a86db6a0e62eff29ed8facc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ddce611db82be037e667f74c012558af517c647c30525f676d41f8f506e3af0f843ea86438\"\n}\n],\n\"handshake_hash\": \"69b386eaa2c2c73d2595eb22c33d307f657ea58155575751fcfb8c212ae48b50\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794495ff122905b5fe3b03884c1cd071cc361df2ed28774f25f70db887e3016d5fd0d1ba2ed1f9c49757838037f679824f831be13e8e0109e12e50801e1e0df1bf25192b02f01b4b577062a41d69883c5235791881342555d74a52c4cd9f45bbdd666b0cc314d7508420b604afc1d3ed364637e1356146d2bc64f628d83aae5954e635d3bd9ea5f63397fe67bf1edd185c41d67b14b2d815f0371bd11811859882b416300aad1f7dfc6879fe87de01ec9ddf5e49569a6d5d260d5886e7d4eaee54c7e2dc8c9f2e9a594452075e4b5cf6781a156852d128a5fc57271efc29443ab1b6a25f2aa05871fe8e55cf7c3265db6321cc9e019c6bd4077aa78fd8883062f1f33a9801591eff499db96ca72193d32e9403204d6438a04d4a292f4d91decffc4d2034d9b5333a69f47d3a49a583cc4e1f8623132bbbd5d346997ff88db0b50e9f895c4b2aa737d93e9f1f69b64833470bef1fd9de63a8b95511160314151e22d842925f5f11c120b69884c2621c22355da73c0f409b021b64dc71e2c237a4b68a34d71f8b9ff921035247835935de925c84f47d681deb4a517ab802f73ae0ca1e4d513d895f54cd1edec754f5aa79167ae4eb3412e6955377c0bba84484faa8d9e9b4d09a36bdd93b310f0351990a920ecb5cc772625ae7cfd19224415781fa51667aabcffcc47f96a2de4ec547472d0ed6385436bfa17208c00b8cd2ddf4ed767be9b1e8409d1d15d4cbe204ee710769d09fc5a9813d8c570baee94e51d59927ce569fb72be5a3a54c71de68fd0c275a292b7ab84260fca7c61f52d96b106d1ceb970a39b844e4765474e1d4e2bb76aaf2082f16124f31e1ce810e48fe20305157a98c2e2058b83124746fcde1a9f1430922a901fe4b619acf78e3358d2638af75410933e24a734de3a7a9315a806bfd0dbb5d1ea132fd6bb65a3eb2f80776a2379c89bc2c4c08995c0993139f88c49dd8ced544eeb71a7678637f44ba625efaf589bf0a8d4719087da483df3a2ca9b540eab5ffea962f1ac00acce8b536a63a4df6036f1c55cc978e6c56d7680aefa19a8929f3bbb21cc1f8fa388f33481089d5ea478b7e05e54beef07f6c137979d28dc74d042869681bc8231403fb8c0963feccf7fb1f6e96e7ad243ee287c16d2fbc7cbf4320f529021d5b3232840544eb251794c3c791acf0c117b2ed8334ad1a2986a11b78815c6a2a28442e0feab5dad18c14a78fe2a9141bda1abe9b78809709b5e7f24a3b966bc0049c8ab60eff7d2c591a94317c59065b15ccb9f20b13d8c39b367fc51fd6518471577f32443e85bc8ffe7ca2656d4905ca101d28bdf1dcb7adfd942102a2255626ca224469cf5c7288d880685fb7afbeca3f1f7a701c1e0e3f2fd323333871ad41bf4dd296c678fbbd3ffa56be13138385b39287e9233a11924c45e0fa74d97101620f712d63162673d1205483d197f24cd1bbf46ce02141be78135845962db76b4c7bfbb2e039531b33d7c88d7de1176c0b7f76ff2326fc6674628b3157ec0186b1444bec346643e15d3634ea26c262e077d5aa8b20a04ddf0c8729203b9bb5c3a827a6a9aaeeb10c842de4b2afefab25289e8a167ec4457f3e933916befd05f0113179c746a0a364d5691fd3eeaf8eefd60d6f470414c7607420fa3a8e463101343dc7d93e8c6882dada84b4dca3d0a25d0cda02fa84667365293483ef4ab131ff07016c3758bd3d379d3244b4a1de644e107f03a5ace69ef112ce27d3408af435acefe721bab5a80f84ec1addf8f07cf18a7cc1c633e66a36565f4c081f50120d16ec443accdec7ae18ad1035d14345a4cf90a1192aca42a4d4edec31347ed503a3ab34065ac370ac4c230942d15c9f90ca35a99f468ceb65166484ade1619446bc49ca6ee6306de2e6a8d24782d5e7dbadb160f3ebcc50a7019d2d47abedf51af721a0ba47d6fa1e15ce10d53dce5756be1f17237ec6c95c813361e76dbd5bc13490346d08ffd435d196f1ee9d081914700c21ad531c87bc2d0535dc7918e470efaeaf6fec5fc0ccd6de3ee2a5cbc6b96a1c6e5ee919db010b7dbfb50693ab7cfeb154ff43938eccd5ad08e81102568c8aa0bc9e3940d55695de4899f7c16b1e0803ee989f68a96bd16714cb976e818fe39a30ddeed14c57dfd8517b6f26cc667f82befe2833fc01a67c0de21c196e54faec2a26d48d86a6b39323d6726c8878ea46938c7da38176d555691036ed80519725fbc6b9f4a7fcc29c0d74fda9cef6dd1596ff59ffd428feacf00871a31983f631527f76aadfa6ad83e85b19a701e1dfee03a0a0d129cf7211cd697c4bab87e6d5d3586a68f3bbb4c0cf40a36b9e776270dafba7c2fdf80d944859e8c2e793f3e3b1ef9f0c9aa60f83f4d074867bec1ccf8971e1ccc35eac7a77fb66d778c10d69bafa9d3a61d1ac3c54ba8ed0caba464daf999daaa0e31ad5a61bbd4ec0e617c583d92ae430ff45e20c5ad59c6bea150859db1fc211f940d31e039b0b19949527cc97d298e3b594a810d698abe4c3e2dae32721cc254eb7fd5d71a7aa7532bf986e950959b9cf9b16050770dff8eed9db14671ab50bf822149b238d5bd9a8086a8a918fcd2e4142065dde70fa4909ba32b80ee84415497cc001c93340074a13bf106eee\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c76b38e6fde321ea5e5715b1bba14d7254417b04a561ea28828b2093504fba9b8911745c4fd4d72ae965733cbd43be2fb53615e22c21ec7e5e9fec796c9b0a643203ebf89cb0a09f8c7777365cad175df560cb0d87910678876a30c4ef6fefb6a6342237cf3157a27e1f77015af33175cd6dd3c9dc35b74662570edf0c5e9c4f4dd4f89afb236cbe776d52a4d8fecf140c189f56ef6b0442beb792d7ee92da70cfdb691e710f2d5b0fc0fbc95a8c56a98123c2a9184deefdf863067af8e5f42dd1120967b979c7ebea3aca26555e3db5c816db9e6d7324c47216977a310293e3e4554db241362d939ddf0df906c4c83b3bf5777b7d51c57e68a1075dd719bf6414f3b9829ff2c99c2624e723ad93987a795b70f9ffd1830e45f3a880ad7a1457b533a9a9ab3b64c61a2558bdcc81d9896c16cc70d17028eebca82b3f98110be1a13d20cb69cc54c83d9a871a73924333e85ea5d8f70b77f74cf90b6bdff42473af1eee8096703339776454960c353c257bf8203e8359e68b052cc137d55ad4a2e7e8d1f4c0493233061ecfa4ed67a2e2e8506f40ef2e384c3d9990211e24dd7e9299ff3c2919203f494d93cb9e79fc1ba0a4bf6605773a92d04bbe47a8f5df7b527bddf83c16b97342cbdfc4dd944360907f6621133dd2adda5a45676757b36054af36d43ff93f4766cececa2a4e0b872a308263d654f5d64559da9de0b99380f6ed675c8e96a75407a8a4848431b9ba076f572eddc3b4f165b2a8b0649fd2ae72979783ef29bb8a28ee49aec12b3185218bb8a2d4fd4fc48f83c4dd13981037c854b099ab1b228dc0e1d664f24e014190316f788deeb8592d36c75819d310b8932dc28faf4c34724f2dd4b39d7e1465245774eb590b832691817ede5c4007d310832fdf5122ccc1bc4b662e1b83d6861d2b314ab2e9ca172a16e4c5f49d23ec3a250a55601ddf48dc826d036a7720360e44a1330d58af90f257f9b27c28924f5d4c3c8e2af0bb1c25c90b4662f7c572e7d7fba9c88649956fe766cee50be3b8a123a64d005c1511719290674431462bad6b88cd6b3203c108d8c37152d675f9213080dafe1e3055094d4d9b01df6829c9997ef7bdd833d8921417e5c71e06230435a357f27ccb3e42fbe718c00a7d604afb99c299a59c955d18a4fc528db7bd3cb0cd4471083d4352dd1ea12feaa901dae036773e69d42bb42409b2d38b6e5b2d29e4d58ce67f01190f9bfdc33194ce4bf1d3670782ffc07af601216056b27b48fbc7d662ddadd2ba36d076c631cd813b73a7f402c6da7192be885e4556f32d7be4ec37e270caf5965e4f707e62ad190e1771a53c031d00690044c1bed72871cb664b81f165013132f1984b0327d19b63964578735a69d6f1b71bdb27c718c1d14fc8e1c67b62e3831af29287e637f2083d5aaacb9ee237f5225c1cee792cc95e113d95a8925e99c3fc98a30b0558d323bf0c64d8c7a368a3015414d3729def6eec29508380282aee5d7204987b40aed609e11661133fdfa81419a1d89e63a43725eccd228ac4b08debb63be19a283949b46d6808820ce66363384e041a8b5b9ca4c7ecb7aedb3b78ba23de858ec1ec4489b1205eb08fe16999152cb8ebeb4948c2c2cfdbc56aaa41e57b7dfae18a15442b0424b23d2a00eae8a3ae0232d825d0cc880c4c77d118e334ff76b0240f9761b5dbc6b799fa89bc47c8634a87fa6cd97bef85e6fc7e7a6d5ec48b90454e6b460ee4ab16bd416c0414486cb669d813cb281e13c82e441b1d6c9ac9dd7456e9e2df8e0ce45f8c9746e14d4ee2472d12400103ca6772db9a9ab8fae70cf25dbdf6674f84ebad1d679f2eeb5301e2db619f09ed602ec5db075c0f4807f9a167c6563dff05bfa5d6c0bf12a547993aa3528cc0f97205cdfc332043463084fa916a7c40ef53e9f4407e52d23c7abea8b83ca208787cc38b23c45a3feb12d3c40cc56c690b235c19ff3f9207f33c3112faa17c5d2b907d73a26c3c1353bab6ddf692016dae4d57aff3ca19ad074a49bb46b9b15222e33db44820a3b7c76c86fefac7ae4d1a5f0703a63ab08af215eced0d51329daa0c1b4e7780255bab97305be5583b3d6d76ee5913d784ebc0bdf5d639fb2581b1b4ae8b109d47f6b1116e93948424fbf7ddf5fc6e0237f7a92c7a1765689a577d999422cef3e62d3cfd3ca759546b7ac1cc58325ac3576c01bc624161afa048270aa364e7bf68e548fee85a62f869088feb11bf1fc4e79532c273176bc1d219a064e7650bac4cca82dd6957f6bc54f199bf4f8fd3be250cb443413f7665047c999add454b1c11a81765035dbc57358eefa57888c779009a28ce43694f8f1bd6186786c4345ad1d09286cc0a2d0e0e0d189212c7e1608c62830d434d835ceff7b2762bbca47a578dad607a7c52e55974de59fbda85f95577ebbf0e9bea74964c989e8d56fc38a7dc5c5227cb484ce8971d9c72c0d005ac8623de0380ae6fb970b308b0555c744ded309904f3b28cd1d8d3b4df99b3a4fa3e2897f55c533c49cc1332433a7c16e2165434aab2f064f6e3859d5adfe2033169f6b004b3ebe003248904ea03ca80224cf8255f5a1fab2c03d6e17cd5292018bdd0b8ede0c52c4ab014c0284330658daf810da1a4e104fea46f2df18564238b268b2ab51974191612e04fbaa5319ff3bd29203cce6a4066a647b88aef0130f312956c1a84e54e7d2708323a944f8d363788346148bf64c9db5d57132e03a5a6a2cf62b1e504558bea43e64c9d277663bfcb90e7c6a2b538ca128a579baa91580bff800d581c76eef95ea5c3a74242fb756328ee36d188092750b7f885a085ea07761530794ff8f02eb0e8d75d69caed31327b9edea6857ecc8eec5357d785ae2d7eb1ac473d67a7f2def15de7d8285a4197b9d5708fa43ae970e941daac84eaee5e7e534ffddbf8e681146187bba289520c38cb35b3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ae0e9d08cd3a0f0c693ab21a95845ef1c902778f9559eed8d0e972\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"084c2c6949010bdcd7f06c28e09bae17682b5a9fe491b8f248ae4e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"13db896905b2d465568d5713880ae45d7992fdf55ee37ba8c7677b51adc9cad543\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d4472d8b170d825f3aec431f81d63f54a150b6548be48ee3e88445c572359e694c011cf9ff\"\n}\n],\n\"handshake_hash\": \"fcafde9b60d6f606d0e9425b294ea9a69e0a156b75e91a7559253e5f2b07620c579ebd7ee64b56b0b84b41268003c4fa9fb3f7e2108cffdf89a0e701c0b5bda0\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445c3ff01d8288fcb7cad88b4b05d56ef0ccf4d31f0d07e657e440e85fdabc44e8b4a930d36b2f9f443268903f418e8c247254f8e50aca41cedbd298e1be71903264b3808c2f265d813b864bf28c7fc1655ec0cc20216701764996dd4b91ba90121c1a7999a6e8c614\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843918579d002ae38dad2797e50c92cdade9b37d3a982dd60215092e6f28b3a12673ca571040e8409b0e018bc39bbb43dc75de5277f4ba5fdcb9501f7c9f5cf50547155b220ba266e6b0587cfcdd2d3803d67b37ec3ad0ade6ef6e89719f052031157cf45da8bf60d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"02896e56613eed163a085703afb5a398208674eedb2252ccafe0f4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"55e1e8ac2d5374395264d5105b26bc2ef7db132f57f0adf00f5e14\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4d9fd8ee532c8b2180b796b521d3b755bb9bb760ce4d1bb8fc4c7949012a3e2cdd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b08ee8fc7222bab7a2f09497bd8a609af2bb3657fca4d8bf5790029a70a9d489ea6669ace3\"\n}\n],\n\"handshake_hash\": \"e47a19757f288d02e031d7de1da3627e6dbad545dc0fe16a1b71ffe589326443\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ee6ce5dbbe424129ecf2da6c08a8fea3ec0d0fca172e4aee00ecbce7d6f590ffaf8947ee55e8af29e6e231e623b582462b846faad7271fc8b27183e98f9273383fdeca5f786421b9a09936ccde88f63c3a8e6cf1d4840d594b65b768aaa5d5d345646f8f9b3b13e9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bd1466ef4aadbdcef341914a0aaabef1c1a13618f26643fb49149c94a6ded97b06afb5e1aac7fb4a41e45c181ed2171b550eddf42a553ac72436d758479f5f10b49b33fa1750c4ff2a740d18bd4e14d94a400285d2df5329b0c380c9417a54c7a03bdde3ff946d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ca675ee5ccaa26a3e03e882694a29a75077ba13f124138b2aeb154\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"89c3f719a3207a23d96168d4ed25cd63d850f798256d901f61cab1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0dc459ee751d2b5a7ade4d0a42a8a3dc917135e9c1e591ed3da893fede5bdeb4b5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c6c526096b05fd5b3b132f9f8e11b46e1329d386a9d51aa452bab83d3eb272cc08a5fb4bf7\"\n}\n],\n\"handshake_hash\": \"79df5861eb66c904cf0a398e5ef74f2ee04589606aa225aa77aee51a4f321ca5c594469171140621ab793da0de3b6e17bfdca8cd3c947664c09b90d9aeea62f5\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449f37012af866c13094552bbfdb9f1b96cbd515128a0f696b1fafb1437b1d980cfaf4ff4fce35ea5a128fbbe456e71ca05cf05ae0814029c8400f88c3b5f1135ca89a68d2e8b15cb2af7a3aeb645022213579dbc92f9e760f79bf15853fbd4207ee269898f3c5191f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e18911df247e7855e5f2ff0001732c965011c82d47a6a66a4a9067d775856bae149b3fea8d5fb2d76f9c2680b97c24f554a4db90acc5615c34d23e62b3cf7ecfe3999548dee680f4f73be784bc48e0b02c02459764da5489cc4bee915e21574772c699e13eb2b5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"802ef3be52645d532b92e6a45a2e299370704ec82648b0ffeb2497\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b78a2012743002627688f318f2e4cd3ebbc92f00d869d71979d7c6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"09e216cb5ef741c1cacaef94afabc55dfb03d955a6b3e12d5ee1a4370dabb1941f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"668f148d0661b5ea7b6852de5ab71989cd804bbf6e9652b3f2fa03c57c63cc966679e7c831\"\n}\n],\n\"handshake_hash\": \"23caf56e45cdfe373e8f8c37f7b27fbdc91389677b09f6322c4805e4a12be5b4\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794414b717f977cd7a06e058ba936403f2650cb85dba41bc93e50aabeff57b2fac27bbbc227ded6f80a62fa9c9af098da5cd9c2d47e126580e1cfb26b4cc7dff6587a2ca7e5dc03957986c3b000ada0f378b2e50e63ee9cd8dabe55633e75109b560c1a7bbab3437f8a6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843239b0c72caf90b8d242a31a9bb01bf38cef2e8b04810002f8c6ce4ace6b97b67f202a47940d0a07e044eab5b25f55dc1fb4b8aa45cb6b6edcc38bdf18abc421558619a5f812e638e32c019ecb8979f4f4e94ed0980110cf2dd3560928e9cad4aa59c10d7f851fe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"41d6b2c612b9ac14e00be99cab8b29dadbd32fbb64191dfe08ba3b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e4ebb6f0c639e09f4693aeb9b69bb9c74244809d335afdd4a7f4ff\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b4d2c92d562857fd769cd7cad466f13b3b8de71d7e304b15cc8ba532ebd56c4c35\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a9a50fb5483615bcbd5ae7defa3e55555fa242607910a44cdc93608d04fa1fac632ebff9ae\"\n}\n],\n\"handshake_hash\": \"591837c90c536fc54b6879d661dd0c7c3661a4b446f3f94982403969c1c89a385dc5a3c4fa9b57318301266b922724f4f26816994209687d83a85e88fb6e0bb9\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b76680117588657c53297f76613c8ad0e0cdc409cea8084ad5680ceb0d39bf05f4cd13809f17b91c7fd8c2ec891df67b2bec67bd48f436940ad7de87d68640517ba2cc797adbee81b1e6538d714962a024c0f0c7c91de3ae3be756060527d4b31d6f7f6a570fbc9d0a5c88625e5e93f04575341fcf9492c603b559373ea448efa76b38ab5375304c95c1d50877b6d6a2a85862efe5626876e8e58bbece63d178b682cf3e5686dea615c5755954ea55e513231cffcc51ec58b9f7cf93fdbc410317d8885f64ed78619ae1fb388e46a28339edccba3d97e97eaa4d5dc9988fb4ee1c32028076c03b492d347f1434cd7952ab47c8998f9050c7085b1e04f76cba9fa86db13f4d7d0f05533945cdfb462a85810d99058a3adfd55a329c98e0daf9b62a3ae7e1f0caa820331beda1b2af1d97c269bbf862eb7f95f88e07a305e236b53abc71355aed783e46738f62fb61b3adec4683fd968171215d754347ff3b25a07173be278af487f3b319cb104b57d8399d47866bd82d4205d19d7bb5dece6ef777023ec7471939a8e1425efcf9717808a332a859f03b3695ae83a1267fb51b9e16eff1e523ae1dd831f5b9b673c2c0b7df492a14efbc03cdfbf6d10843cfef4cc888e0d93980bc66aea647189717ff65401576e49694210fdedca5bda1d121c1b835127ac19fe2e77027b430c249277ee6f707edb1135a8539013b215873d684180115becb3b3dcc1d43dfe4b77d21f5ee9ecde2f412dc21d6298fa6bc7b95f0fb956c0dcac3aee8c5b533fe5c986861d3dbfe57dbd01c76103a8d9a31f350198be14ea39567622fb57eb86f64fa576ce9eaf0b933d4616d257d8ec8c948501e87059c54367b10f60b519ba409ebbb2343b879aabc263546cc610d7ef1dfaa7c08616d70fe3b72fab3de639018510236f4948c6a75eb4b8142ecb5cc3ca18ca74450bf5d9cc949ac2ccfe9d6b3c946d451c68efba551e78fec2a4f00d42f7fde977b448e8d1d3a04ab11dda614be69311a7a8cb26ce116c5f4c11e6e5a46eb9a05f7c53875b84c3ba957b3f3fe128d6d2fd2813f36fd841cc3d74bb4f5aaecf77ae451b6dea5e395f338fb3cb20706702a5ed360b9a0b656cc56d0e1815d8f17dd5d4d4818e344458f2c617381769083bafb043ddba684af82ede64e1b804daa6cf6ee97b964025e4507121da417fefac0c63b0b0e21bf5a05edba7d5abdcb8b7779109dbfa1214f7c7ba5490e0ba46a80b7298a3e9f75d3474fb336859660af4850ebc4f19f29270c907ace04f2f0de52c2b68f6f2a7979d52c44619262c4649b6a9f7a053ddbda9bc5a43d729a2de453a27bd895370590b97552f781796cfbd6adefc6a3c2b7e0802e5dbd1d56d4b4286fc4d07cb99f5f1480eeef6802fc3b7ae5b1a9298f68ada34605fac118855bbce811384eafb4cf2aa87eb9356052d0c8294723c0462c1e5cc7cb0aa0882a23f98a7fb2ec17ae047107b2527d37002db1aadde33644be09e54145f37ff3c90568dfd58735fd2e93ecf2a6a13dec707d5029fbe544180a68bb5c539414f2df8afe66ec6236f494403c4e2715239c2a7ff12bd8e6063be1e9f3f35c633a4c78a627a5dfff704f9763cc0d3f247302458186c15ae7b497ad93b9c989765e6dcb8b5a4fe90736ebd2566169913379209a802760c43a71e8abd67b5da5c5b3b91d99e49aae1e223a2a8cd2342e07085a499408d56fa813485bd4e1112f6e0ade94928c1bac13731c85a642fe17c59b3c76f54e89cc670fb1be0eccfa99775151975a70e86de63ea9ccd1924fe6ba14416b070b196ab1a7545e6fe339615e5cad9421d7aa8e11254dff35d4d69529dddf1fb861e441d3f42af1767bbbda860a36067256dd6547cca2d1362f13c4c5a4365acfda6d5f130ddfe311d4a3446f5bb3cb14f5e3c2015f15f57a337bcaf85665a76205c08a06b193e0d45c38ca2aa5a7ab961d28fb78788ac9ce637b5593de3707ee53dc9f3cf10531987e8026b494c137c8fe7230526f909a831ffa412d6b5b1070684b57932251df7605e8e81c41842f82fd002fbca04c1fa4b5c025ebefce905f7835bacd9c14c452bd5b4dccd594267a6197fa049b68f405e467912d429f450e77360869306aedf7decbb4d97df3e0510f77e027bc0884f0b15bf4324bb816af702e5b7c83ca907892db00954960f4f130a0a6034590f0713c84aed62e53192c165854f513025e1b6c25ff314a2da831d3e0e0838a99f695eff617e13190c782a0ec30e7315a6fb9f6de83f8ba903f46d5f657e5caea525af62e458701b5a3288f9a6d47f5b475a914ad6dcd0b14d548e9acad242a6c08bf0be8deed67f0d691bac424cf4f4b99e2a601cf0ea218bb2811883fb3ac925f745f5f1b36aa25644ec52a07cebf387ddf0f890663c8ee982d4f433a3b6ebd72b885ca4630bae7680f64e9e0bc20d22a6fada361f7ec078f7d40c0c8334169226522f7f83bbf48c487909d7135f5859a89879389a3c17b1bdc4e34f5a166875ac7e2f2d6fb074ef5edd17907e06fc222f33c17f063c1af93eccaea83dad71433cbba7c437ad988ac257080d766b1c90e40ba3b06da905ec08b5a5501d8f65f6e8b322ab5ec5398fc85d0eef392a1b6b48439e1e42e42495b6d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884386d933a642fecc67a75a1da8d939d9b405a35f086ef3b09f589d4e4e46bec2991d3728f9b3f7ed0d09e323105dbbf8e11350f53e52901df9b7858a2a55df77108c4ddffda4f14308ce4600cec8df611b689fb0ebc0e051f3c659c2e1134b18ab9c95459b2ad719875b647121d619494b51ea7ff16442d19231066ff124e0ef9bc4b6f07de807392f5744368089daa760493447f0747a210c6edaf175403a4cc2e29eade5d2b054326406c8d04f913e6b2fa4d23ee21557e15b1c29986147a2b936dbc459ffca60c02298e253aa18bb9d4e44ec8d5896fe12bbc53213730d03fcaa2c3ceaa0bde5ec3e617eb55c5901534ce58f958bfbc499cf07d6edd84f018632d2e24a3c75587e37f3db9bc4794199baf0aa402f5a8b58b5316a57924d6e6db71e49f015328ca7529fc0bd06d6cce82eb6178a47b3c9cf9ef25f67f095bb87e17e4d638491d7f4578a1cce71758e021faf2b19823136ebd6d5c80431f1b887e9e52f094569ad45afb5eab3340857e3ba2937816c1d4087ff0dc22fff6156777ae7557b4605c36013d418d12d177d5f47a3904c0415de6c904fbac5945bdbd70a2b6b81b514f4e4b194daf9c9aa5ed169482bb5fd20a3b6b42c4443fdf9ac603a7136cf158515beb04a76265f6f8bc56ce8bf60170252d0329c65c74b5cdf24366196baf587f87a496afafc2054d78b0204e8d5ccb748351b265caa62e8fa9f0009e96a62775ad6f8606574c6f11c4255147b263ba07a024471dc888945db5bd3270145d194635e7b279ab54c61d4a3b888fb9936e73ad912a376e98f73eb67fbbcfdc8ce326a6ac3793cc21a008bbcb44ecfd861f63154f0a51b907105570cd613987ff3522bbde487eed0b8b93d91c83f22cae3320007a4259dcb6aa331a96141c46a55767db90ddea48c02fba6108cf8849e06686bbaaf64454f76dc0adab7faa3beca3fff8ff106fff1ceb4fbe50dcc61409de75ed14fc8429ebb28d205cda4d20671f0c1bc4459440f42c9a76e4b6e139db8f14586186ffe5be56489a03ffd05eb03f33b9b2384acaaa3bd54369a21e468ad6997727785c347e989ffb6d5d291d8d6ebaa9742efe2d4ac5741e75992265d41286a0dd2b35d622eacd5b5fcf5822e6ea7ec28597bddaec940afe22478855a75e066ba412e5eedd6762f4b61b45fbfef04f2abc1e4c1493691522ff63ee01522bd350222cc30cde01a06955ead2d68895192b84a903e71ee7ecdd3b000089536fce072a4c9d478817ad6a9e91f51093c7cd11feaa38485e1f85272b97142ab75c75d17141f94a2ddc40606d780ab0d51061e1add20cee47c69391b31318beaf9f4491657af9a062ca8f881673e40984d5552a982492cf2dc140790b417d1f5d1ac30eb16abfa64b4a7bfb9b52f642bcbaddc6558a8e1bae40a54375698aa7663201c4f8cb96b2ab2c91f004461b67eeab15b587126422c838e84abeced2271c62c080b01a264f2124177764dc7b75a4e820ad8798d102cad91266fface317dec1d0d53799e9586bc0be377929e3e87b1c390a1186d98b93a43eaaf7e0bc1468a6256d79aa616262b07073a2e21d1c056b23189b2d513ebf8b7d4d4466a6b89061d3067be3f41659f89358ee7210a5048d739fae5b69acd4a00e12c35d9849cbd14b66ce75c749358c648f8c1b5c4a2812afebdd7f033e5059f7741c1a8ca0130f460dde1a6d5f4f8d304ef5d22a122c59f79cd5a07f0acc0d3b6dd5fd610f2d2fd866fd23e0df8a556095be2ad4f893c718153d0d14c13ef0a2b54d0d3413891f168933194898a40dc7df1624c71729a0436ceb9cc34f8fbc945df48bdf3ed249a2475342323db681dde79da8b0181a6ad203d745d3f0618f35ac6f489025dd1ed180e0a57a2a46c055b707fd192a6e80e237e8f5d5d3bbb1cfef89961ff6776f33230d3bc5d77dda58090ca94560f933d114fe9fcd273c3a0150af3079efaf252662952553ce5fc338c409b35bb847e50ee81f29f1e50e0570631e275c16bc4e864a271a943c8ca49270be2023732d60ec23ad30f72f14ff11315f0eedec9621313f9186191775137f6938b83d51b813e77867fc67ef2c24de5d4c04e68d06c02234e608b0d25b50469d95259fa8c3efde8a19893321a92583e8928864a8f5f313df31e9e5a25f8a97110eac601773dcdba1a3eb005a9121c4c9df060f4a3e78795f0dbfc4256a2a75023f006ae0628bf1e3c78421b3514257fbb3849b11484cf01d974390c8a72d3576693dc848426b246feb9f125105e03ff416f772792a3c7c915339a1700348cf789eb4ac258bfb28986c36476521841326fe8b7014418e2a3fe5a60eb2d8cb47686c506311b2f4fd853105d0fa42df5ca494d75449bb55aae352a98ef1e94466e0e5da22bb5aae8ad31457531cd16b90f938fb7532ffc8d83f1e43592143094b45a382f3db04e8e5a8795c18f741efbf2a4dc874e6f31524126318405bf6315855af83432123780e7d061ba403346c2ff031d60a5923a0c2235617296c7d6c246dacb16ef1bf718f3cf73d712442df2fec6ba49064a8ac1d177dd23c7a4d24880af3fd3e3ea52fea1869d4fd4dc4baf873cfd513e6673f920e556caf3456b7980445a19cb304f703bfc7d95499a94cc8718dbee1f26f54fadfa267a1dd9d39780c4c564a5ceecd5b1de98a161786512ca72e8ef112683e0cde75646586f4fd16d087592254a097c84c30badf409dd594b6b6936e7ca12f70360ccc9e5fa179178004551a493f2b397d71c514c2d74259d79b4aef56f5d0643ddb317e39899d1b4de087959b5a46b2cd2b0853bfad1cd46df5ba1d3c0923245f502e1aaea0fcf8d15bb9ca71475126795e809399f797e5bbbc107c38f3a874a5f38b11a1df2c333c5ddd83985ef4ccd1963550cf6dc62fd6ab6960551459b70573c143bcd85e03c39bdca876570e6980d5f5c4dd7b62059\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6ec0fbdf22895ecfd2fe990dfca26eb68be7dfb52a9bdb0a79e808\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0bb781202383f6f2dd72257cbf636eece9ef565ccbfff328c1f07a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"892d4b86fa4dba4b7c327476d76aba97d4b085a43667e3b00f387268a17403d721\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c43deeaa26c6fb480ba1d97301adacff2f8ff72eaf36b5faf25771bcfa763d07cc0dd5a716\"\n}\n],\n\"handshake_hash\": \"d5a02d90d40f00ad2c7d9793ce7d4d6ab036a19efb68f4979dc4513e51ff74f2\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794482631cc5f0425201958bbe0dd63bcacaa0911dbc544891c70def56c431568a412a98179eb1601ed3b62632154691ed61cf7ec6f0cb90ca121bf46b1149910d64dca3ca3fadb7856db368a08a5d54c6306cdb5544f18978cca8b5cc8450479bcce6d095a2ff6dc86ac10972bc8d9ba08c6ab5dae602c4f871cb64e949d60289b8957165ff6d14576137ff54f9d3339bc4fb3156dfc57c0d72700e8d5a7642a85679b7b8de2b32a1a5da97f76845a48d2388885158972b8b52dda01ad7acac2d9ba0d52ae64d6f81fd5cc8f4311646ad41264eeca456e45c4a9b37e7b5713c78d18fff8951d574100312baa4c08b3db9e9eeb99b1e8214c97a2d331c5d4b2c1bf0665ef166e0ebc6484f187efcba557c1e176ef22e2a390c80e8000039ad465cb79e9f32c4fbad5fc0e8bb672ec1f3dc0a5b633d86165aa2eab74e2d30282d09b7cb797fd9e95486aa0b8cf4bf91473e0c63778f10fa0ea023c6c5566e2aeba6800c31f32f0a9f41006cfd7eddf2c114be2f2fea3c50f01b57d35fbaf5cb4386252d20e233d306f86f79ffa6f21e62b965c44ab9f85a830abcd3ae1519d0c0dfc55c38366b01a975ef0c63aa3b1a42867bb7ec3f39ab5d281f7669b6e505e80a002851ca88ddd68e81406eb7a87b657bba3d6910cb8ed7bd9ae9de9b612f7a0c601a8de4e499780e760017f2f8710970b07a34a75d31c280bcb1e0e934d5a5551350fcbb7fb4bf279307593a3cf73b0b684c92a6c2343784f3bb07c7a3475febf8b1161208fba2ed912e6b75c7742f1e8fa7278a3e3635c947e873c43227b05afe8c64e1a68ecdf51943ed9f1b040e712a4524b70d51e9d205748295c01fee5521a6a7feaae13fa1f31a9b4d006b8b51910522e0f98a7dbb492eab5d4f71d8ba0714bdefc31ccc254f0e9375b21d49b34438a6e826028b79e6940a18619c3619f5720a74cae67604453be0e05898bdb6998f46668097277f754901fa60e491d8b78dac5f84d64098b0fbabda97aa1ac15c37ae6b6f598db1d380cb4451613399310f75e8f56b1650ed273d701fd6a9945b28fae683130e18e9e32a17bdf690b9910adf145235fb51b453ebc36f109407f60fa558192ad2cf72a8b17d667753a468bbc09effd672d8b58518626bae738f6053ae735156cca0843d67ebaeb9487453960fd07ec94a012edebf2e1bc5dfe40b2152aae2e529fedb43fc24aa2fd669292f28caf6bb073d6ebdcfdd1659af6ba5cece0058aee7ed44663be79ee977ccc4c93ed9b4a695c226eae522b5b50ccaad385d171a7b987e4c64d4855fe7124551f2692b3640759e0caaad78bde69a70546d044eac516e836946d1e98f062443cd419778a23413891ec59695f8b6c6ffc446a694b9fc9777c8c36a42afe21e03e2691ee4e8ebce65d30f3dd4c20037b4138a8f608ed0a6ecd070145780ced47179fd4b53af88c0fd3afade609437771a19214a46ea570da4cf5859402dce13d951f4718554f0b8a87daa1942df5efd26014f53165f9630b06b98ff9cd2c5c571887bce51d0c4e13b5c79605e64ef8802622f36fbb38f6c99b19adbc3770e215fc8b56112fc5b8a108c65f978a20dafd07c1ec580040f3f33356e0ef91da36321c2ac6791f5d885d6d86852d0fa2475ffd0444cc12e48c69875cf0f6b3b95d144ef68e2e5748b621041c8fa0a33f366e7b197286c3556991812ec3e43fe63000d73dbead5bb0a5c794b8aa48a9b633fcbad17aba662b4d8e19522dcc2a02943dc54de2b8f3c0f229f889a20decbb5162a40994f3c4054ca2695cc942cca226980c7b0baf3b57158927927610ac96a736be592ffa7485e46ab4f0ca452acee2e373fd51f95b4c594b1082bd0c3d150702b98beeda42fb2abd85b5a08a9617fdbfd0da8104066fec9b54b5bb3b1d4bfb5eb54963755f15df1a7cf6e0da67bc09179f8ab75a8cc78206f8bbfa24b54436f07cfc5611b70c7224351dd40c1f9b4e47bcbd1a4c6ce878c522864a72552c2febdf868b7eee4e362ebf22bc6d1ba3311b42eed4ef2f7a5916c07b3b5f7e7d550fc37b9af7664905c6121a21c0f4702f90df45ace8eeaf38db35725afc57347b939f155f422451cc02e3530ad337ddc25f5cb33f270ff9f51f4cd977a16c5c43b8bd30942601c81bc2fcaf2d9204d67dc275c6c4d5d8b1d01646636635d47cdbf7c6c697d8e688ff057121139ca45e6ddb3c7a29267eb9b795f1796fedf0c3626e6f91604b36f6619fe11d683e46830fd0396dc2cba999857ebc800e9f529fd1163c8dfd4137d620f3ea2534966c88c0b59af17057f48f5f7e87eba1999769aa68ecaf43f5f867a1ac89f4229f970572f159a02b88f97cb4adc5ed04b531e59454d8f5bdfb80b7452f50c94a97058a2875c0f48bd6583a2d19d33917378ad7dbffece96434707ce90c18ab018438bfd0b26f5cb09ff32c32e2e178084dd72abe7aa25c40cbc1e30d5d71dea0ee7519dc1c51dd16d4e63b6ec94e8c6b0bfb3edf53d4280be4456389bae7ce80e4bf0d6c3f570808a55425b6d92e440089d187bac2c33bf188d474ac013a711070525f4879791aebdf0c7d43bf680a941f1d4880484520a3450f3f10067169cefc924fa07717e4be94a7f3ef2d13693c773739b799228\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884385ef7266cec907287e19c9c6f8ab3193ecaff09bfbcc7ae0213c839365486910aaaf37ccece45db411bb032820101aa1f4b57e13109fd412e8b08cb21a39a44a8e90bf6cb997b572d153b2bb02e11c0d4102c7c15f7d4391bb9336545bd8a3297287cbb3f24f7c6f4cc047082b66dca8b0695cbcd86d837171f6c2fa89ec33b95a2636e7b173526d44155234e5b2a2f5123190ae8175864b6ae7cf0dbb309dd55aec348a23a097ef2e2a9629c211f9cbb7b992418de498ce230e63c89d3a7578c65bf5cb6603835be1a63227bbef171f0a5c6765150713060298a15ab40612addedd67666ed1fe1ba4ac6863504fd65e548a1f53d4347643d315c6421c23fc3a47858d8732f0228533c9718475f96d40bccc6f53505d2b38609f18241a21edb84762240dd63bb58108179a9ddbb8c8234fca44bc4c4663b331aedff189dc27470a6d5fc2609cc2190d4c41b986c00cc8e9dbe6a47c3ef6f8af313657aa0ef31edca482b7cceeec3cda03ae2651f4e3db74d759dfdcb57a1d6e799076aa5918e6961c88b054050f616d4985123f4b1a8300f066e35f1b2c0962bf5bf58c7e9afedf85ab29bf17f5e68692d18e03715cbd273a5275a58b989d574d24fa12bd20029d61ff84bf1a78da2052428109aef7825c8f897f4d5da38948d22888ba9afa4b00cf365ad20b9335f76f69cbb553cfa69f7e40b1bd8ff3823257b9c92048e1f3d276351544b446bf8628d25b500b46470eb003fe36685ac46dd08d6ad08adf67849744cf782aeaaf864f656e1fd056b77ea745201915671304d6a9e7c85a88f56d4446c62d736e23fed90b07a3aa3d459002a3a0387a0552469cf5514b0cd678f51d0c020ced445b6b90ec452316c949811aed83d8501aee8a431b16f919f3724dfba670583e580ffe5b147857185b4a68b4dcfbae87ce44483abf95303c20a7d57d8fb670d74522080e28a413a5e5c66b62d978d28af1b51f63bf78a8c143bd0fa877b7689ec2787525d6497ff6852ff1bf375b70ba035fb57b9fd716933837abbc95aee339b0c45647c940bcd5efb06baccddf5dc5720964a316c8f4970402dfc2955f19455846b5756ffa16607732c7c57e2c7a770481d67dc133aca89976f6768b46d871db58648709564bf01fbc0d48bb92aa7703d23a6c08442376df83eb685187cc0ff30e73630dcd832e1f0d8b025ee4ed294c4934bf82d7af41bfac927bebd8ff2098fc17f1f28be7518fa5a910e833a72f59097425d93119b3267d13148f8e86b6bf669a8a07d1b28151fde244ee2e4302ae93189558747cd8327df891e3d32d464d030ce462a74ae4f4368ea71aacd1a65d5b2a0b8c0131d1b82253d42479095a32a2af9c1f11a6f0b27256229cf52f21e7acac6b852a394aa07511c0545214d08e24a89949429820ee0a27fdc84e024281cdf29cbeef2639330ce49d227d403c71e32774508f7bc6e1b026df092f118e0a70d1553096b3530db3d39203c522f557722beff18bd10e065a242908006ea75afef1276e581742098c4160cd1ce2b889d5dfd27909df6beda1920a84150e056ab780a5ec97b5c60450d4bf5d6efdb7fe8fd50789e381487dfa492b71fb9c5fcefb4bf610ca9bb0b6ec6c7a4f0ea26e567dac5b6890951a5e1b1b5b1d9601b9763dc5c672e9e7c8afdf099dcbf4869776f2ac01562c7fd947f16167efd8f94f3564454744569dd2a439d66cdee28e9f723a660c2d4ba99c218b3c680de8bb9458c27908217e031337872a109f123579105406870d2925d31aa8b7f05d4b427454484f465e7c8b7e9fc6ceda46af737d26f7ffc1b0cb700e84191be7e1f6b216fa713cf2d216f47ba2f49c08c48a95cf4133d4f26cf4d19482ad0d5da569d762b23269bb0d0d0da6aed7ef1d0658b9ea9b7c179a6c73f078878a19d821bb5f6456788e6ca92d8abb3d77a0aa442f70e2383ef46252c2053460dd8a0c110ac2f4792f2ad38ad5835f116926e754db26125363df05709d7577f1acb3ad4522aa8c1927d1c427ff2a0037f4e2d94b9bf456f5595217f6168cbd5c3eb7bd33f83241358b125f8e03fbd7b55127915bf0c0ea686077dfb11cb3d8d7512626d97afb92c9d75027684493a56d2cd3a334cf1238fa8f7abc884e8c9f2df65f79ad4079b46266bc3e84102c59a639f2b8277881ff6c1a0b47cf32732f115381832fa67f2cb7737828f9bb3e6476cd418f6447d1b8b29ee61611c06cb44dcfcb0bc2c5b39c665cfad163e136087df9d56dc62fe0761bb70f63e0fc44a1db95b700d6430dedd145a4fd5502642efec4b54e2f52b6fe3d6a7a1b22aac98c3d1023ffb560db90efdae0f2e2cd87e041a60f4ef7ac7ef2501906f3d1f124a5f3a78b0a6a6cf44184d03513f2b270c0440c5b1d0d5b709798d03ca86e8043f75a777a9e1d002761dd288f932e91b983d74b3d504731ef51c2045304efdcf284109e7cf814e752cdf34fb371266be9d21d6a2e8667590ff4dba3d374f61dd2e801e6f98d3b77b9e17323f23c3f03e11dc8d5ba8c08e410e62d06eb817c7ec6be1e621ca92e1309d7787536e87b2f0a6d86b95573aec9cb46040c40dfb032f9bcab6025d5614587a007e61667784598f0f15648ced8e8f629a5535873eba882f00dc9f8f26809992cc79516e74dee39cb36ae6c78583444b135dfbb04cb77538e076dc386a26ae346332fa1009bf447a79bee2ed2715278501c7a43a565ebf839f460bb965ec3239292129499c66d58d4369be6057fde671ddf4d915b09bae723582da9af3d7db4de70a77c5d313ad0690cdb48d885668ead4d41edb0bfab4563dfa8d9a8146287426ceb3c4c362e913c0cf53f2febf79489715a1ccec292b43a788ecc4484cc2f086daa134fe01fab0799b9a2b13eff425501bf3978c9f2e5ce874befc62bd11903550069bfdc8df1f9f6a604c69684e5de970526ebc4e2e1e493\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"91ff49eb8b0026cb25e1b3e2fe67b392a6ec98688412bba5853666\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"40ebba659cefae9f5bf97a2ab9cf535b28b508e30e809a69935592\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"201236d087f6037fac7d69c6cbe057854e850381e777f23af6816fdc32cdf9734e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e4d6b611720193601c4e5a5691cf28b1dbe023806679b467f2431037c4649192d8c6f70e08\"\n}\n],\n\"handshake_hash\": \"1224ab726f7ad0b458b86f1e63b9a42141e17372897ba2bde514c8ce73c4dfef11baf30496a76166aa450f05816671f6c4d9ed2a6ef58a1058a51104937e5959\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445fb75c5dc9e2c87fe3d7617ccaa6e402d3a329dfada0d92894b17b22292dd38cf00c424a6f76ed009774289438ebdf98900e9f4ee672f26c1b837ebd598776d25eaa10ab4ece1c21a1a632b10221085e6a2bacfbfe2c037444f0f48add9e64cb9379104fa64a000b501c48c13b76e836ef2bf53c2cfc425820ed61d55d64fb087a8153cd7126d8c03b01ffd3ee9b7fdad91d4bd35ac7c4ef974bdbf5d035ccb7bf124694b21c7e0a8f213edaca9c42c7a34126d81bf865b10ea3ee19c0d4c08b5b7f39dde57730a107db5828f0319ca98d101ece1e0581d8a2e30e8fc81e1debdbe3012cd5c81519c28b140f6fad6316402be01cef637a020d4c78cd2acd4f9dea516fc94018ec8661483e7e8ee3736789693314cb804ca9d86676bfd27a7bfbf8b11f222ad5d6ae22733da03ee884016f6298f7eda64972802a18b73d649d5e52555876be2122bba089c0b975b7499075e5ba45877af9b5cf6e09a594b5cdad31ea756388bb05c04d2c4430f4d29c7e2846c015dd8dacbcabc775af5b3a192e9cc04b8d7caf323003a386fec437fd084a8d3568894bb77fba791886b0e55e6bb0675af45ab8012484c19fa2f409edf9945b11702b04a3c255ca625cbbafc770cbcbe4bdb240a58f12572b18594a4d92fa6ec90c1b3fe9205c6f8b6f19678706e8218dd6caf9c6e46eab3b2976a87a318de33fe3569a3ac36439ce73a7733e0129cd957d9d29275f2318a29918229ed1093d2c40bff1ed4b89275e902811c308b46ee95d45f8573a4cdd3c98344ddc81e45c6c17d86724df95ce7215fd4297f538c78f6865c5eae400006e6c2953c5ed0d660aa3c336adf11ca6a8c641de0117d4f28e53f97370acc0fd95d8cf20f455dc481aa892e6cb1c069af114dd80ef93b8e788a8762af90f413f8b3bc1f599284162d1cef6e48e303e0b8ecdf76000fe285f66a0a60848bf3f0ab8523f7d66b6bede330dbf110a44953b12f64fcbd4437ce44b73b07b97872c99bf4c33a21bc6b9b8261c9ccb1bcc2451d04a84722c5e0cfffe6eb8ee038849cde7c4116401fa4832d9ab1059261e56d94315c6caa291610759001c1e9f8c53a3ad830926b0940f87413741f7f3d5b78b144d0c26882367c140e8706e373e8ab57b8790f715a968796472b4c322eaa10c253b395e9783667c41b55a543b1409c0cc3fee456cffaeff1080ddf8cb34992495b48e749f11dc08d1c49c77d07c74d56377ebcd197a7cba73994655e1f13ae89a0d2866c2a929451cb52e6133c800c6262e771f66c4382eed17ffe16bcba4090b20534e1305177d84b7f72787b3ca930d5130b37127526f6b3f9dad7b359aded3d7b1732246d6dd7b951c517288dd6da6ee6c3cf7229ab3b9b4547b2d6c296e506b14dfb6d90019f20b1a659f6e0784416009b0c3e936efd38dfd8b7f03509402e4cf3b20a695ca33b487c7e5eef8151ffe4ae21550301b0926ff9d4abb77334483edaf2c1cce31cd9b36a3db9c4c6f9179b76785dc324b7d1dc7d3c1c6cab187f6dbabf35696801802f79c3a15f83eb3635ff9b32c451b7c8f9953bd37688c8eac69610cd9fdfaecd1d367bc10502f363e4f37ba3db5ce5cf757e9b5706ea3bbbef98e3725c1d796071966906126237cd0dfd481808b56744d874ae42cd3324ba9fe10a2689ba34d9d1f3719f66470457414df6dacc1af632a4ea10f74fb7db52ea9f8edf1028226f87a1ae6f5c61701f9dca73bccfd6925ec991249a37a861f56afbb1c0ea4dd54fc0bded446355aa844734ab8b64e08d9e30c00e56a074806c426129f217eb5e89046cfa34b3d41564a69ae9f3a03c878f0fa3d778a317d97eaf153dc3bde6f939b2bc05d3eb03978a5dec27196926ded23bd78e0d72f3d5063b26c7e1cd84e801b22bc6732016197cc26461ca4357ca68089bda20898ec97e020d6df73c673ceffa161190600c264323974311fce5050021fb029b249c95d19216237c4ba50bd19e08a6cfd8fcb02e13e117a88d502949fd5b7e30823dc4b064df07a7b03cc143eeba748b569d82f0ce0b07a458f23b4092f6660d1252a1d20f0c9318661cd950c8ecb01fc74c719ed2be8b331bb36241ca7dae6a78590a413b7e5a5a053e11f729065c13f3c786d917eaf80fb6907f88207a964741977630f01e7ac06b78b7029bae53c1d8130fef327c9783197caa91631883087fa08e4c8c9d5296cefe8106646743bc93f99d5a670870681cdba3d7d276dc6586f919a044e0767075353295d3927c3326a00730e92196dbce30deb06ac00a4036ff855109052b502157d89d8e676565908c8fe7e537a4fd4333c85589229c19e842858f9067bb4136d35b2fc2b3f805b6738914c0c4bccba7040710e21821113bd171fd56162a6abf6c7b73d193bc547f5463d47e3a29d7c2541bd5223dc2c7eadc1cb213cbcd039a8d67c61fc5b50967682e5eedefbc572f82cfb58bee47a3e63352962b81ea0967389af6820d945a1c0fad2e0f1e58886c6021727ed6715ae932f04ef887b57ea4ad01862f9b1842894673da74486a8f9ae0129406c6731da0ad80172e8b2eff74ee3765a4a6cd8bed41ee91ec41f897388650955b6af6af3763d34a48902ab869586b2b5b1d20b6cee5a8dde452ddc9f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884326be9449d247b600926dc38720ec52898a2d91ef6abea3978dcf08690981edfe81f9706aae68fa2246a82ac9703d7d3575de33e6b5405ce481bf6b3c7084832e020a4f946e5c840f223ac370a9625f662399552185e3bfe2131b2e667d6d5e51584df9fffd047b3cc87fa2332019dd2310fbd4d2386578cb033872c232a196a4635bf8c198bc8c6566755be0450abe34eef159da145e25f8d4b079e067e4f82cd935fc941e50c4d5662ff1a7bce26d8e951e0990e3fde1cb593887dfd1e45c2311e250b3e1162c1493ff253d286db2031df0d7bf36f0492e3a785869bc825b8b7eaace6cb12c94b46b8f647a5d1aca82418cd687d07714f930f52c54c7ab00c4a37974eff74ff80e76178e5579071fb5baa256513da44fc632c64228204a7e5f6ef80f45ae4bb0e9c0d9b6da906d306b1999215a193ab20af846d7f2c37f292718282e6f2abf50c65638cb9a69b5ed9794fa006078df14e0416eb65e1d0b647d71d2d468714550f549c7fcaf9a2941964f9f1087b70681d70abafa45e2bdec132420d8ce61a03d17ca4a3ce3090b73fe9e30e4aae3eb5f081556d14db42adab57f071c4d54f93251f03415bad00e9011c654967ad8a374a8c9a81c0d2fdd4380533f24bf91348fe31c15f760ad7d47756592897f98332e4cccaeebd6992edfb27c6c53ad0c64b6fb722ded765d8a5add338678d83cdee8c2ba6e7ee6b128f009f94b000f8bf43d569beb8386b9fcefb7878767869b05bf71cee8a506fe9ceecd74e66e244d52e0e82f2e5b833ce99e6b361f0b3c350cf54d83bf59c146484bf2233b2ea0d9fc278f5e724383a2d0c84fa20ec501a996ab67ef59891ad25d1ee49467eaaaf5357630837db112d6576832878840cc1348b771bd86e7c903890ffa538fe98077efc67398c7e309ce625128b15bd995ef8de98e16d856d6d5c0444033d107155ac77e5e536fc4870fb26375ea28204d43dc98d3552b9dc86979abd17f237e66faa9bde0a66dad3228139adda9ad471556bf0a55480340c5dff10a1aace41c990c4aa7d058dda9dceb11056a6a01c076ebb76ee0ec97bb25dcd2718e1fef02eaa17ddacc15f8017dbbb8669b9a02a94ac84a10083d9853da9b71dad494c40b4dc58944705828d099b22209b674c798e585d74836ecb73d8fcf98f7f6922be9a762dcd83e99d23d84ce757b17d6932dba41b020d3823ad1f74049ec41b613764fc7272f8e5af182e7cca8df1384195f2d86a24ee8937cfd00973ea9eb2f4792f49cdd6f4d63858e265144f150d42cfa5116f0a9c7cd50a3e8e7a80f6745ded666647f29cd8e161376bee4e3d357b04a48d05136aee7efd7d0d39a9c1e1e29c8db42927c24455d2248d6be00257f8ea15a38c0dd664c041a571568f14e5ca8051e23022ceae63a92c2eb44ae96f696a70b2e6955a818c49cf2c03e8f65975ca5b2e89067e0513f5b66945e060ac3f314c4f1e7636b1be4d9c5f60e9e3cccaa8cec8cca189da6e8411870dd6e4a09b90fcbea311f4da68ab41fd4b2b6e218657cc02c5b6c494965525ffa06a281fc61fdc359bf60dcf838e4665c8573c897d7c5cb25a5aa0cc7227855e2259cf7caa4478e0b0501c5c192bbefa0c7f34c0af2f7243b105a770f3aa037aa75f45c9611513ab55d7a5c5bb71e4467ec4139eb70675b175b05012197075e7b61d859e1ad2e38ac9522f70ceb312f1df67f2c9f79acfaff2dbab8a13fcad93bbc519a7c8502a7d503e384c098518aed97a59f2d9783ccee8056ac1f4ed11a73e45351877ab66debaa8ee5a16f78918d8f5126f02457360fbb180dd593e9f9eba8fb6ae51ffee223786d7f2a0c20ec5229910832ead632c08859444057b3dab6cacdea9428e90b3f847ee87f40c5630b441e21ab0d026ea4c6baf66beb678e247c3e6df24b518784bef88f6d9607344d9b212c4024824e8ba73df2b682fda0d644fbbf536c9c1be18ca6ae3e2764bcc02eec60062531b61b93071950b02588d3da7903ed0c8b42fa0d7cd0d1a5e2a1d28d46cebbc986afbb99dcd37601556224f7de1b5714f1eb38decff96c0470b0b72bb6d19f9365b5f1b76919bd9a040310fd7ae0ce66b4fac51cfad57079167980285b901c56bc5288516000b0b192e9479566bb8afab2836a6ff1856495bf99dfd920435042bd644cb057ad6d690c954cd648711b2e590e1758463b3ab2c678ff964c5c85df928a3a439e52b05b7ed15174734b2251c3eb8c6642b340a1d08359cb22d3b238a06e46ffce714626003c6d85715c1b8b611806ea6eed40c23fb499c3169a2ba519b0431a9c10d6f51e3e95628dd6aeeada73f642a5cc21abf2de452eadcb420334b95439e0af347644d3431e02ff658954fff86855c8c5004d10608550391599c48e39bc613e56ab55bc0e986f685f6920bf4f22cffa581177807cd1b09f0ad27ed7fab72b90dec3a29c53b28551e69b90ea6793c882c08adf9b4ddb529bec945eb87a5712e44a7dd6fb8a153ede314d37d1ee9c735c8d194ea96b77e9c16e49f932ac2590902e16640a05e51efe87e88e9464becc1cffb0fd0169fd96f549950da77c687ed4518339f81573720c8732913bef4b7b30648937498adebd900aa8685542b6f3e0145c11c42fcb08a0e120b6d77ab53ef4fcef2bb9b4e14a171c7043e66bff8b6be81dc4ee5f839162d1accd6ebece538a74e7569b34297dd6bd7d1f4dbe20e6fc8b566b582bce597f23407621f22e4af3b21a8af718736252eee4a9f2ce63460c9f5fe0fc6bbfedba96d9db1c6e617ea7fd1dbc250a1eed58b5a8f12ce07aab0c42c106eb674a6774e58cc3c1aa5deab90976290e96f406b6a2f0ea06928f224afe23eb5211a1b490e0d22f42faba5c79ab9d75d64a29c04e7f90531d2a4200403215847d49a13556d15d292e51f85f2368480a2aa6246b239ec664df0bac22d785db687c6a1f1f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"40596466093ed0dfdc4b30593aeb0c794516e9fca29b79800a03d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f69267790d6e971f69ec5abdf63167ddb0445046aedf2f74091271\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"97049490abb237aae630ab75eff272b8b73522fbd50e2bf0c8f7f135736cf088f7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"85f8e5de4beae38982e897b1824b5bf7193fbc615351e1af6633f3d1f4dbae6ea791f7400d\"\n}\n],\n\"handshake_hash\": \"fa7586f5dfa3b734596e6960270cf5fcdb98263567f9261136e815dbb07145f1\"\n},\n{\n\"name\": \"NoisePSK_KNhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"KNhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944617e6bbd60230cde32fa8514ac036f26357a6e0cecf330832e16db1ceb0a079109ed11f8210b0039dc5d6a4427c2a0d51b45772c340ba8aa5fd0c2f539787fa2311246cafca3f8d13a87752a02d9e014d392f638ef520c6ddea068bcb70629349317da108e26c1ea5318fe0e2ce3c4978b52ef20341142614687f95760833143d043cccdfc47eef4405d08af6b381832cccf21bcfcbe7a6a00440e02ddbd11f1eef948f8cd0aa32b9b217d5370c4b73b1364fc61feab334cadb980959b9b4975054dc32720bc471e079795b05461371ea7a33bab0b36b8da5affab8e4cde4d529a415d50b1f4eba5552f682a7ac5a68817ff262ea30676955bcc44d3b8cddb62089cef460e84f2f087da0cb6839a203254845eeb4f5ea918325e567297cc5a7c2fd5c9c2a94e66f0d4cce1f1629c487b3ac7f7cf9cca2bdc056cdf3183cc1cc4110288b5428a2e4534c4c98ed331720a6767d81f7e0cc1c771f7524c7048ec1a42794a968a0ff6d1b9af8d2e472ccd8959022d832f34036930db1fb7e83616ad5a33636e0c1dced9f72a3fed3b72ada72f80bf6689df3becadaaf05abbbf80177bd86225bcc3abac1357ca5914cfbf3a93f7c09c0d21da25a2224bb0d6ba7bed70aa6ce208ca92477c628068f959df9ebcca32c6ba44f72a85d4a780f8e3da59c30b068766c1bddf49077d15d2807b4cad03e7a3d617080f3ee7fd614e4b9aace2b2f3b70bdb44fb1fbb7decbcaacb781c0f67fbca150270c894b763feb8766744b708e823082ac351ee0a2449ad5dc6af070f946a35bfa5c4f39e7840ef94cadd481ef6aea457f7bd948a1b98eb0840b22866bb6ca1934d4a671381746de5ecb6a35738d914d805baa90c8c8a002afabea7db1dc1b3677431d6c447f584acd45bd8a15bafef4c534b8c4231ca6ba5d6e43021f8733fe913dc758488a81a3e2844a8bef220f114586157b25cadf23215b5b381a54d61cd294c045c6415c977af14141ab279a6824ad1b09add5fcf90360e86703ca79244be767b42096b62fe6f86676fd174b3b940bf7cafd1f132e5b7820610e6eeab5fd13b7f5e080e80c9f67522caebc1eb17bb7621e26ef7fd9e35b684367d001acd8b1929d489efeb0e796613924f791337ce24ccb5740103a22e2cb29b59b8c854260a216b5450de291199de51ff3815f9d7f71c2a1a7b82aea6919a03aad6ccf98f6e991402b1afc7bef563e74914968a7b2610f6ad3b4e33ca2ff17078c8d19c173240af9d251259b7b7bfc1ddc8293f0ce7e6b76a9049f98c5d92013ccd62572b513c575c69e42e470be905e60211be92ebcd5134bf3c531a41e44ad8281d738ada68489262f7cd80b9b489e639391dc49bbdaf6d3ef6ec9667b7cfe7d02633ebe29647bec5d64a308d74c9124150379951abeae24201ba56571b3aaef99cd710128b05e68ec1221f3bc19c6d9daeb2222d7851626b1476cde935b1ca6551c9e4c16e51e4c64c7ee99697e57e7724ce2fd0c78d7eb67ac5a91cd4bc4dfb47f1ad503a822408fc66ce1366586eb4f34be2c0792ed79d001d3a19ae1f2ce12092b19b94842706c5f71cfb3c5ddbd65e8b45eb57e18ecd0e51692a0f06cae9dd981eb0e26b515a25d0f1ebb8fcc6fbf9af2e4fb5de4ecdbe392324bb8c427be8d44286d76d5e8676182b3779374527966ad04ad4d607c060989cac119d9bbb4600f1858fc30d1296c5ce5baaa527a4001bf15f78722031a814832f610505a09e88cc345f85ab25ac55e16a2b90e6c7eaa31f9ca8c7ff3a1a2729bf0f250f158b4e00618e2cdcb3a09f319154070d996a26948ce8497d98052bb93b9a4bd35fd053e44e2f0e1968bf957c736493ca8d486478f6f05b6224b418ccc6ab1ef727a6aab0f14827494a2db11d462465a07ecdc8d1a092148bb416d822c540ae347d76bdfb167d2600793848fd6fc98f26ed7160f10c2964bb7f0ce5f71237e9a84509a6a58b9e98d97a3463eb3feeff7c7b9211f116bcc0144fd2e4a17abe2bc6d0842949858c7de6ebc94aa7412236e9124cc9b4ed274c7bb5499b4054bdb7c44d152005a6b3251856daeb2bf5c2698163931eaec04c54262f9e8b2dbf3c430eabbc5a381b49b2b6c969e58efc68e9eadb98f620bb98ed5338e99752cc638a038b577392b7ca61d46abe1b46606618c6d8a2435efe06a1b4c2ad2a910ca696f7d33b4a5a16716a9b66d089efff15c1a221096e9e0aef89a3a922d08ba3dab5030614da62ee80e04512d95a007bd9a7e05b73341eeb3197d259502eab290c786171f54d3e4d74e2743840cb86d0342c03738c2ba44f18b2bcac962f9146a26f432b4c42f2a3f741b900b448b0a7a8974d48ebd4c5a20f6191c2c96392ed08f25f554dfe5ff6d046fcd4d41c3276ae8e8a5ac9cda63fabf5885d866290a9d00e93179328ff0c60054918360317b8d55337ca5204f3129237af690d13c0bd07ca5e254213578b37b3eaf4126fa82aab1c986ce26de72128fa7b6d149daa84939c844d2e9104bd72de6b420120878398011faf3533f1b59a4e80a7758b2ce99bf46ee1f2caaa4604a947f442e3767e680ec41dce28022d829c4dd45a77858bceb6fc7b218696adb442c60dcd2b7ec1cb448c00e01d81cfbbf65e86028d38\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432bd15bf98256106ea1b44ef1aecf8f4383c6f1e2a0d17e60a2b7d6ee6be05156f9901b0f1b5a2f1e1f524f1360bd1ad0970bb27f77742b9090e30a16a0476a5951f9bf3de1a89824c794c3a5deea9a3b2df41f3e26dcd4cc406e5f7428f8ec0b2bea52df1be14863e60604f744e57b0415b729f9b87c486f6189fd513ae0e8f981024b5202953af8406c63659a441d856589de471ab835cce9c7984d84d7eea1d4430925b57cfb165a4ec310d32729246f220cc421011b900cafca13992763e9179ec1141d63641abe7f922a76e71aa61ef30fd014f7f77bc9a01bfbe6c848993e927edb74d5b47816803511ea72129cbf224185510f424aff31b9e1316630ae50964ae975c03ef637eaba35d9b77b17b818df3f654a1faaa0fd71ff17e6d918df2e8db21504304395fa4ee8398226086e88487e5c0a283be389f3ad4e0dc3c97f321a3735c641fdec653d75d77569a758ffffd0f0098b1ebbdcd7b75c90a97bd61a006c69aac772efd4739adeb5902fccdf2d9599005a73ba6419bf3687cd60a71df6bd1c771189c032a55f0fe47324abe5a24de121775d461f6e6f539e7070b1e2e95624edd29590c54d5127b3d7a03472a9e08e8b0c4fb99686597e5dfe8649618d8997046df4fc6693cf0cb84046db35c6c247d5fa37e64d3f411c1249a4f8faf8d8bab6cc8933a562b31d0d62950987fd4dd3cceb2bae5217d93bf585947b1dc1603bf206cdafa01da24935e8ead508341236527ae75a0bde6c72a1dc8f6537d094566a5b083f02272fafaa3f74feda611c200d7d775e6faa156f69898ef8888994c3b8abc596041d622ff865238d249b121520143a9a2fe61a884e3b46fe2138b46101f3ded9d1ae0ce344e707bf3a59165e9c2ea0a025fb2f8b1d242d458e18f5c8c2e29e4f8adffbdcbf82bce10cc2b021ae41d2a4d7eb6d1cd76f880735ef10baacc291d3ba4f841bd5e26122bd20a7d658c4b180e967d4e17909deafec86a504b16baa73d8e595fe42cedfc1151a33615b38f6bcb786fc26907b13038a5199400c6afa8a9b871874d25383e4df3a6985dc23a4ab407a5ae3a2d1f58196d290e8da2be3d25df84072ccbfe2129dbbe08ce1da27da2a53261249373773579eedd90cbad7ba0efd84612952c3bdd9e75dcdc48d4b08dfeded6a790b984b82726a12db0ba7805f12853047eb5c26a56750efbf2e503ca8fb49923b6e1ac350603f69863011a562da0f82eca70bd58429e48c082599b908e89e8bf87de669e0e0fe5f0855c790f976e9db870d751a4f35fb812a7899186ea7bb636b5751bdccc6bd902fd92ba6e358dacb060c4d6c58da1f4151b521e423f6f2b8a92a8cef3db7fb11e3ba89691ce28169f713ddab914a845002624c2d32dcd811734706e7b9bfcbb7630f9db3b49dae365e0f0c56cfc0cbb29ca704edb96f87f409fa12286f041389c5be19b9a3ee77547a7f55cafa0609302f5ce39aee08dd893931b308e95549510ae99804004c315bc33b9f4a8f21f8fbc7f5be8fbf93bb95ae990ebf82ca57489eaff17a95139ff962bc945066f0c1dff661106c200606b75f6859d2429f01c6435ed8382af1fb18f4d08d68b0764a6cac03f951a19a0f9dd7b106d556297f77258924fbe11f1af498409f4292eddbeb115188e7eb04e7d7c6ce904f7ccd25e77c0fd48b214227733b342f97763f5b1df7fa0e72872e98a526bba2bfdad7edf56ac95effb25fd883b36163c65d8606d4d4ffe6b0b43d3414f6c47539a604530e133589c26b9cddd961e22dbd24fb18e552d7340e9acb1f43376aa2798f2c43071f9afa6d1af751fe4bd682bf864227e607296bc0972055ebbfcd415704ee656a55f789d7969d0bfe29f61064cccb696a9a4d2826c3b77059d71ee27c3402fe5f8bd1eb840cff74a6d99421b4f0673be9054713e6afd3ec5bf1fc8fe4b46694b51ce4436633ce87e59a19c1b4b09738e3e49947a43b1a1bbb515cd33accf99fc93ebb5e7a13d4a8324d7b8c6479e13c19998489c50196c422cc4a2f9a4b19c29c032c3a0b6ab947659991aa874a4931a8b6e3dcfdc1cd3cf3ddaf83566060ddc855b0b08a63dd5916bd0a322a0bec5ece883a1642d71c67d8b10a2845419c00b45e1827a9b59ef397deeb6787cfd62b48801273d6b6424a8b762a85e5ba5d638fb32b75423e5890f65a0e7d4512d4fc66e5cf3965c1c8d3683ff7ff8b12211ce0ff45f87f0a1b001395897b8bc7a97ed84b7098eba464d2b715178b654354acf87c0ac4a92e2d55366350b0f088634959846f9772ba80d7740adbc9706780548361d22d60e0f803f5f6229d7c058a86e89a3219cb09bce7f6ad58c242f3be93e8b92ecfbdc9a30c0219b753836b24680449df37f207fb7d70d1638465343984e3cb707e8e0661e875cb92ed370c3944c7a70c0ba174ba8adb418f846ad53d00e09ae4b34aef964a8e4efbc960e21fd582565f65565be95d7d8998047e74e62ddfd26e7aebd5289ed069bdd2f519981c8e26a9dbea5a5d67fcb2514a010804b49ceac9f6b944856147b752396c3a5a02f42adaaa4f4c87d1951abd3270d7acebd278124d156665bad0923df4a9ea4316b209aa91aaf4a620d5b726bfe901f7558ac39afbc1517017a741bc2932b5dd2e4f27e55d25f6652cbbcf8aaa86c8df3dffdde4e77d163c73580c4d4c067be976c8f4a89882e791e93b66aefa6c73eebad76046b4f14959d755c82f02ec220a9f2f79edb9b78bd4c4a51aa4eaed2a4378c370805e0ffd0e646a20892bbad8fe54319f7ec117aaaea46a7012d9a9fe98d79f1a96b8e38bb764dbe215a6d29938d601b519493549df7f960c9fe28419a32239e8a39e5adb621c298fcdc823eaa51c9bb7422a799fa20ff4e559177590406ab2938ab6c11f26e9acae44d858108b18b83c344e83f41c035e5a418af9d6bd643e26e1de6ca037d659469c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"afa50b67ce7b9f452795eb5a20b541ec9f55bb5e44ed1844c4e895\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"23a59228b2d9bac9751a39c19fb0264fd9c9aab3d0a022cc31ec09\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c49a0d022070aa7200edf59dbd2110fd97108e9c23e22ab44564425f7dfee3966f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f162315d371dd7119fcd9ae05ef9ea7d8216dd1d3e1e83dcad9edae49ce1d42883cd58eb84\"\n}\n],\n\"handshake_hash\": \"48f0eb651678aa3cf7cc9830f551157d4565b31050924a1670b7f6b0c28043592c8e71e485efcbfc8c92499e7f5a377c7ed2d872dce9abd323f9b7e60a8f35c9\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aace770d94825c3232551870de637dbee85ab99c6864feb637a9d911321d451e5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436bf2ef8dbaf6eb3ddb9b2f18876a65f8215d29e984a3e56b9ced6c477d49369029081f00b9a05d5588a6f3f527a5d1e63bbaa8a14cc425e62b3f0cc492ee09b6d3ff22060430c5fdc3aaba6323554d94208fdd5f8ae71dbfd52ed3dc4ffd767c2ddf31570159d7\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"834680fec1491d6f429ecd5d672d575e7121e7e72423a85cdb6103\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"866be07be70aab443ab3dca9279e6eedc7b9f11bf2eea92b046990\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"674364caa5cc0d124e5b4778620c99ab2ce9cc00d443adfa2d2031d687a401f707\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a0043e2c13456407d8768e7e589702e1e20280a7c716d02a95977d03fedade55afefe8ae66\"\n}\n],\n\"handshake_hash\": \"1773a0f3c8363d9803b6b1287604c9de3166982e65f21e53e20c459e7b973114\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ac5d55b91be2170ad0105ee65e3ea59decf2affe11b62f313fd759045889618d7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435857598b685116053fa1d19f31fd5ed0217c6fb3afa4065072a0e65b470f2c45745fccdd8d7875857c870eb86ecbda11f04dcb03ead118f1c2ff6c36f7d113b095cdac58061b36b7b1b1d0fd98b82e05b7f6420b4f0af803476e952eb9808c288ec42137c81013\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"10fcd9ce2841e2183590e3704b69be56500f491ef68ba121d4073f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"21e32c3ecdf2410272500a5c40d4ba3d61aa48de1a73c6f9d595fd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f6f1526bcc8398e103161051211e02c8151223400aa69f68d51d7646115d33db87\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b00dce364d079f150e6002d7e6f6d624c535ce03123cb20cc8b1e479c9a6fec1c275b457bc\"\n}\n],\n\"handshake_hash\": \"6890f69a9abd50978d9eaeb85e6ebf9a710b9a7fea22e7a35a762576b58c794efebfffe6b59d9f8ba27de98b92cac945fe1dc59aa3beef2b37b0239910c11daa\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3519612931ed8992a929bc51bd1401e638899c8086658bcf7310e8fa8f281a7d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436ffa6e1ecf46027ca22e0c168b7104857989f8e26fd158a7a14fbdcd9ad4021e9f839d1eff0ad39815d1e61f09f07a59bb681b09aafb4b4bc5e2401e69eb2288039f847f89f346228e48b1eff39d316d8bb9ca1ad982d7d342849d19ec6e240ffbccfa52cf7d1c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fed4f0e19799d8276921c1ae02672524bf39f9c014ad064632de17\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b4a5534464e39b9f6ecad83650a23a285973f2296bfbcda07bf0d6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2db223f745bd062a543b0147027bc6f01015742885de1c5df956dddb97cb534ed1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"abfa6458c22c1f26272f155728e553aafd0bfc54c39c3ad2e33492bac47b150d1a9acb29ed\"\n}\n],\n\"handshake_hash\": \"976abe8a039f6c866dbae31cdb23750c92b1d52be2761a8c310b6f77c1197ba3\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aa6f28708e75217e2ce96c8d44a106fb3c8b8c90d9f4d0cee58456ca6f58a6a3a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431a7c8879051a5641ff9ac5a3e69dc43c6055e9a3f9301a4a0b40675e882797ccfc45a7280b059ce377e0a66daae34c3d1fef02a036b31909c6ad9096f528644eee22f930c2a2f9c7f24f4f5b3d2056b754c4f74b842df3e46c3a1ab4e35fba0e676bcc531cb144\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"00e5321952d3d6e5e333353a07e4a83789555a9a812c3f32f7e11c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6e106c1355b30eac1bfa71f92566ead7fb4c5a0409db22b3a42549\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"24288b7ceb7915b73d7eb03baff9b9c3442aa8bcd2554630b81f49e83ac74b7903\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2e6ad162baa15c5d22b98077f7127f671d4a0f38c68f406ca3feb3914cf626ab2cd1308b74\"\n}\n],\n\"handshake_hash\": \"a73df7f8cae638a162cc9e667e7e70ba8840164e1504e07b530492f702c5086a846daa3181673c23ee54b6f0a76173dc529923cac60d2874840c868bcc4cfbe4\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331beeda8e1351d246fa639205c6433bea5ba0ac656363462ce42aa22a4a65a029417\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436d14b21c8dc0e5962063d4556add052943570928c12a601efe4a6ae0b831c83678a9d9f4fad77d9230fce53c441e5e8222ef951f14b549343c901858ab80a045f12a86e56de3de65e8fbfeeaa2f83b62a287634f839ab551b16a2461650c4d51229ae903c14d74ac1f7e23f1e7ec88a0a5222071a6a790410d6344a2be7f00e6185e020b7d8106a35d1f7b8c7e7574bfe78e320d3963472880e00db98f3493a1a4d68b7bbf0fb9f8e7ddee8b90190b89693d55bf420f983f31b7c0f2f38e3333cc9ef7f58cf1ded6a2bd0b3a3b1ede713d9ee85c0f9f170c404d4f93c204147f294d670272fe4d8756533d322c4c050b9dcb56bd11e3753f161bc6eb2b198ed248fbe6a51a7a00254dd5f9ee831e2433064af3ce8b513592c58ab467cce35d03b605bed8a8331f7d34dd4616e8d2af4998de650caaa99baaa7f82723c73f250d5ff6d5ae82e4a61cf86897779da5170de95bf990f1330d28e0d2b4f5ee6d5938c2dba59a81e17dac5a68c3dd89cc18e579e1988b4bcd6b2f7c9353b1aeb9506ee472a804ee019036690076b178dc6b34973cfd07fc4bbff36f2c5aa83894d2bef389546115fc40a85aab03f22395de1211650a144228c0251601864b2647487466f1d68f44015f71894f27bf96590fe09e24aef24653a104ca5927e6fc0b9000324685c03b2fe246e66fea5362c5c87023ca8de2f526e1e2cbda787b8c50808bcfb87612f931def8112e3405c1a24e5089e8e3bc07049f4dcf4d6d7a1695342cbf509dbb6f7a8752a1637f75cc4ccc899a339c2b072be49e737c9f0df0a6253bd00f1e231b840d95de8e0ff8012a2f16f8ebab862bc08f47790b4ed58d064eff6cfb28fdc598e633cbe4964a4b082b2b6d6b27a0e16b726385f700bb1b8f09041b6741025bbc8e9ce1abe41e55e61ea11513752c27eacb7bac114337df969ec1cb2fd9551356e49f672745ef5e3466b7684f92af106448cd87deb57e7180f4bf3a4ac6e00998c3055e87f698d95ec5ae6b90f879c49da45fad263d77daef59e9f4a2ee14b718cce7811625744ed0ebc4a944a6b17f0f6de451bdcf48a8029ab58f53f01e4cd1a0eb33061810159a7d577c1a88f6ea768e508ee5ede69797344d3d22dce96cbdf93618be1b34a8368e5b74acc7dca8086e9f9355de0113ed14d07542c2873c60840b2563d10161879a14d262c8a9d7ce62b32cc21f7514f75fd82f084b9569393428da5d3b709fe25eb30495194360c193834154c33c95914062e2be54c77a69541bdb42fa515a9e9321298d09a144eb412a115f2b4673c658d04b7027317d174607da166215e447fbcffea9375cb638b50253fc7cf40d0a69b944b86ef7b790e15dd027b91ced596076aa1cb5bb196c8b7bbf0464b48883a89e29b9ab9cf7fd36b3128faaea4d83d68df12ddac3e242ec42f6ae7820c08fd89ff00c1d68b38f24708f54e0e8a78ced67ad448fddf2f6b8323780e2c73d05dba8543d86368d685fb18d024fbef25b7f60768f48b852fd437a8f2a5d03cfc492cd9bb5a0ed0b65152b61ec763493a22aa0d00db3c0c5565928b0418eb8bcfa843eedcc7b07b0e0b252414afdac2126f0b813f5338b2f8514b9335a4423429df6268c4ac650ce773007b24ad1b408c93ba52086b11fbb86706ba4110ae609a92848dfe40d8594dcd75f0cca6b2a446167204d238c7c762f06af21827ab7028578657a20ce459a3768724531628c9f4abe08fbadb923339c55efc1ff67c2beb9501eef3a5dbb1a1e10ee7f5cbbd52f7ed83cd9ae26c272bc7acd1ddb361f440a7524870aa2aa5415a5ef4795e8ced8b80689aebd135281911c4235df7ca063f9a326b1072ef4e1129b6444089e207646b7c61c279c96367dea9caa24ff1f24bb40f0f560ec580578976be67a7753794fe6e847f3f5d2a3c5a288e4e41094654092a74d61320f0ebe0754eb135b6f9221762e35e015f40df3596eb3c6479f8a01f7252de0ca25491101db5b8a186defb9f31fc2edf05c3e0c726048ebeabfe84cd586a0cfa1703d63c7c22b28f88fd6286bc2a60e69d7a25ec53548d51fe41d9b50159a2ab46a8b59b6a81fdee9819db8c77285df191057da5232003e594bc932a088dc318b9ac78c56e5fca4fbb40d37330318d45785a528b72ceee4b9c41e708279761304791ef49db6b5cccb182d90ab8203609cb05486b78cb520bda4bf7cecb73fa6b4f08e3129637745c2a0965ea4c460dfeccfbf45588f376b8a2690cddc922c2cb204c8eff22f964cbcd8609c6f00f3c121c477f55c4a4ced06edc5d13f8d09cec52ebab1892d2da58f94bc85bb8d246f44969249f657fbc28f41b054fb1dc768dc6e2c3594bfc33aa219e5b222cc99512d565bead42fa21d016601e3e3ba328955703cc08aae5a3558786568922a8c8149312bff6fb8963b3968e972bbd4e21e8c224795564cb6a9351e07ad0ca7a581a54da2f299b04c215f3add3b76a539161a6c1fd3933d73393bc33736dc4c2717701689c2b54ebcc141ec0226e3e95a52f451b61d12213599abf2bd8247a0720aca973ccc88170d7115f413c703ccd6a2752e27ccf759d7c7d6b295ef18755d11ee9411bc851bb23c61d208d84adc47711918a702244c0addb29819c7a58f9ef9fc11ff1703745977cbde662db63f0b4d828b3cd01073bab8d6d9ef9d5f10e3262a389c82dc8fb5cffe3c591b57f7748d5fd99f6a924b9ece7f5eca11621910c2f999ae86b58786b236b1ce9a222e6762e78119f717dd4a63ad4e5a86a76674256f625f844cb002a956d1b3db0f41a236e2123237132cb2b69a3c04aff6a26536ef10b937dadcb402d55cc45b56cf1b15ede2a64ae368d89739e5a95ddd60d9bdd2dc42faa615a32d8ff7cc12663680683e2eba098a47ecea84495326b35a631fbb4c4a3ba49f1cbce6edfe3e534fec4a33bddf3e7746076a9e5588541e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bb04db91aa803bfbfdffff81372ec4c402f768cf138f1b5ea19d90\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"afd14405f76460a136478671bb0466680ec4cf6d2498a5b01903f2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8adaa88db445e7be3079f082b2eff82277333ba60c5b0e33fa84e024ae97b41d90\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"043b6f4baabfed4f8b08ed4c424b7dddae9a57b05260a27ab1d32a8b70bc808be1569b10c7\"\n}\n],\n\"handshake_hash\": \"119345485aa984f02db5f6854a6e2334d151cce6d09a9ec736f0342adcde2c59\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be95520c79654ef9ff6361c189de38d9ca14cf93fa19dce5c9791497b59315a709\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884338c51119499da0d3481e8a58372d4167c157cf232c58b0c31aa20cfa1efe3f2f3da7d05afcc46d56e6ce758d8995039ea03764659364a90637d62e06cfbb684d0e97be6cf03198aae685ff19fd4bc986bf0f46e0c8ee6144bc85a29007a4306dc3f84053dc5ecc766062bff31e2c76b3e130bb940a7ad5ef3f92652968bf19badcbedaa9cd62bb4448e3fa30d14d28b1214c3756f8cdb1e904eb6261450b2d761407557aff6884a739f76856ad7971523819ac3ed0a42d6f8fbc9ab715d704d79edc70afa6ec90687d9cfd5747a9bd694787c00e7166d1da98d34b946edc95198c15d68ff5a5b4ca83c58d4a37ddbee21797170a7258410a7f8406c6358e4bc7058790984c8ae273a2c73452281eda33277dc3fa2cbad069254b8cfbe525240243d92b0619c3ecfb49bff60207830cf3fea859aec4e03aa286169adcab8817af452164339e89cab69ea9f9c679e06c681eb5e1203a005825621d97416259af750cf585336e3a579b0956b419b706d98b84ae380205fde0c784bc82865a604f70fac2942b7cc403c0092530dbb3280bfa725b164127778ecca1ad420e1d18d7b25dcaf974a9c1669e9d4fa5e97ff4eb074a26bebd71f84388db7539c238201e160854e0de2139277e6495ef68ca984435be9e47e4f7bff42434df14eb9940d44bc776c626f1baa8da46dd6c7cd41588d0223de933bf317a720d327e711d978ac05252e6d21af1cdaf9a6c74fae1a05fc839bb52fbd3cee3386b00eda740cf396c57860ddec3f31e71e185c8835113d0ae975e0582e6c751da925f51e113c31cc8e5197a112445405df59520c5e4b8350712ca7454343fe2b63a5390dcacbedd575488f2b6a7ae5f9ea4ae2fea15eb63b36af5de6b93145456c76a25eae7e96c4b79fb61e5fe0b3e30adec6dcf2f4a3b2d7f1f9456c81648ba8aa50338f9db5199fccc0ccd1e0537796817eeb5c8a494ad7fea621399e8be1085ec710be2fb7114600b11e4b306376870135c076bd2ec73077c39d2cdef62ea2ee40f951a03fda71eb9fa784434971267edd8e8bb0db1f0432e00e86b514e9febec052b38d894a0e6e5c40042d1d4d71345de41ebd760d648c2010219c8ef4d6ab0b3415e814beefae79f5e2771f9cbbcf9ec05c46f23d502ad0dda438dc72c2f64ed5bb930360d7004910a4b0d3f710200b67e6f5ecc86a31a7098fd8104f47e881e3b426e72e74ef8010b59f3b50afbe604d0721e4b7b97dded7f1151a1e1cc9eeadf70a6e1d89ab8cac9b6f330e504b70c7395cbd0aff81b448694f3316cedc815551db88f2fc4f3fedb551c3687272bb1afd8481c9479b32e8fa0c67f1e2c97a803a67650da0f5c3dc0be87e78c81acd4d71c7621d35f4b1bc2d386c16dea6183cca88c3bd3f39fc3d36a36ea9e8c5e7ceb97c5ac3718c553fff96ee5e6ed55bf160ad429feb9657aef8200cadaf32b9619c801a29a6d413b7f01591229279ef81f0f0a936a0c59ca8bc0d07c1ba880e2e5f9963a3bf501796d9317bc2a741a0bbb320803e953190a8c36aded72f123dc11f2d1cce66538634af71cf999cc17718e30f1f2fc7f00c3ec54dd6598de3a1fdda3f2983aaf88759fe5e9efa27777292c5d6f4376cd964691fa39ed8311eb6a791c8051d6b24357e09ee2aad36ebc3acc7f8e0d8e6610418946f23089c5416c66fc2986b1e2f869c33b68e2e5be8856c39b03325bea8aa2261a4c68df905f315f8224d6e396d596ef6ca8be7ec763a03f324a0787c0e401c5f20baf24f458eee8ffc05127be317d095d964d585f958b24714e7e737efe4cc68a4565892784a6de13af3180d55a1bbd205f84ba222c3cc3cdd9a9811e2478f83db41a7136e7689a2fd6c002bc662c4d4e5b43f7fc3f63872eb83eec302cf9e8d3c258b5db8a758995a471f47884b58e43449dc8bfbdfdaf60d41ce42d6e0db4ca2ea05423809087c0a2983d80e1d63db85d04bb1d68d33dfdf5ad8137c8661488d8ad7c86c176271458dd2f9a2d41032d0d6a8e7b9473d7856d638237690c730b98b286a4290545c05cac1c878b03fdeff0b4c9a178d70e803e207ecbd34a8c4db83a4591b1a3db08289f2088602feea40e2f8af008f7ee3b2a460946837ed04e1a589ba4b096665284313da8e46b9c774e56b3d92a953ce1ed241a90e308b69748404604b1545152ba38c01202b17fc91f568bbbfcf5185ea0ed41bb93a9461328ff683c438191d2f3cc1f54728a35f73aaf6c18dbac5014c7701484a6c4a45866523e998fc2662585b57011c50bd5f4b95dbdd128bd63a42d43a277acabc3d839377eb00874c431b75072ca139c8252ce8820d04869a6f141d18d0d8a56b5d1ed6f5c0a37ca84536153d2afcbdb0248d2a07cabdbba3cb54b07df463fec6ed821475312533f54a99ad4b0b375e4e9bcc0eef4b07dde51da6558fa5430ebf2fb0e985475005492d1a2c1925f30f9307acf11835afb05e7f69ae98a1fd5d780f6f9d4b7323d680c7c40eb147d8932f5e47a65542a39a6bb204f80090070c7f6b5520d2d52ecc4f6c843a292924e87870da1162d05e8e381e926392a670e15c063604119d62ea97f56359d9d4e7548ead97299f365c3557ab6005f69f880ff0e4d3ae3b6af5e4a153bb97699cb483a6b821030a071bc227b3e47096187cfc7dec8335d8596b8c9ff167f82801089f8d0836e6138fa0e446ebb8ae5d2066b27e102c53aa93aa6ec905598f64ac956210ca4ef7ac1914091f942a7a77e01d021955eecbab7d20913f07094e40b2156ec8c3b869cc57a231f57eb9ce6dd6e63f3971b50a8e3c78bfcc7c66b8feed0d9c2c42a4d9f181bd5e057c722737e01d37024fb45be5c4623349524ed543d420c71018944e26553f60860ca273c13a363030563857abb3798e3b1c8179174862d00f8cf6b39a8d2a1c3ef20584264c778b228f3f7c373c6f702bbe3fdcd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5863a50ea886cb7a014088d84c280f9e68a6b3c68db824a43d41e1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0d3c53d3f397577ae75703ac56241e7c31a12a3c841e2641bee8d7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"264322c6e42ad14330e6a7558cfc3373055ffb1f5f4c948b4a7cee4c46eb3a4c8c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0f6acab03efa53b9fb1fb86ae87280352b0268b295c012485216f14925a8b5e8056a5faea0\"\n}\n],\n\"handshake_hash\": \"a08e73e80afe8a62d571e4fe61b3d0e8ff83dd25e97ad0faf3eb9ecc7f479f607ee1bf281de6a5300c11ac7b44bb1d5202f4e39e96c052fcd083cb25a0c8a96d\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be895b474adbe51e0f403f83b3843c8ba8830a97eee5df17fc2cff809727e66d08\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884327eaafbdcde64673a3248d57c8a3ec84e2d9eec7f9c079ffad4d29c4c94c31561da7e1428330beaa4c1c0b3f279b6bc8fd6095e63af805600fa89ae70289cde3cb8eaf6eb02ce62d6db50b0aaaa18bb78194289d26f2e4fd99a119ed235f3904524afbb1307e60a0270aef93c4e89c1f3bf55f432e87fe3347e283dbea3075f9a5081d29e4fdb270372bd82e66e25b81cf7dcc3720a1c2d792f47a7d24162d1c95b7d7bcf5235c6c2b1240886f8c8fad26448255c398843062da31671a87293eecbe8df6bb41e41e964f7504486b0e4a38b20173420a961c90dda99699fa5d975cf1267e80b45d0dda61a542c75bde4513cb6e024720b5967656dc2cde4433486e3347cb13c63451862ed52ac4a46c5872e766aef7c381a3799a86930650264abe1cae3a8bb868952ce6c8d9a7a3b4cfb0a0ab96efb2f1dfba9d7b2393388e2d7409e4c81725be546206da7ea3e503eb03ccaa494e6c3985997d1c4beb795f441deab950a1bef10ed00d10a500b5e4a5fc57c06d8c54919431891ce7f887ac8f0b79238339cf72c1754b69dbf36c15845ca53d4938f6085c715899363b87aaf82bd621161d4b15202a855779c0fd886705d11405c3431f41e6726fd112388bf0cdf58d44937b41948d5cd460b5a3efb603748f5b8fa4f692fa97712202e7643f4709dbacf4505320e10da4be17b9d6bee4847e703b40f295358803fec30e19a3c95e78e9b9779aea88e23223472f3f3d6f45e9ace41ef2028c1541c95031cf495e3f3934b5f2b435d3f66564f91407cb78368e239d8786a4a0bd37c401362a9d2c9906f7211e800563f3f8fd5384bb55d4dab9b74b8899655a597624e0f0addfd7f9e7fe2e531b2cab630b1903743a3435741bf73ade98a6f26df7de7bc52bc5d3c0ee75cac1bb6e0352c2adac28b98350ed44ad14cceba4e38f9fb06461eb1bfcbb346e273f5d199d6a8e7b7736475cf19aa00e30fdae9dd6b0fbbd460eff993003b8d37db08dbe6b9a66860005df6befc562eb8b4f4d5bd10e34c8632b894e5a3a84591614da2784ea4ccdc5d9d208e682d3b8a2ad9000854a71bd4fa8272d0414179fb199101b105856b351ad489d8f744f8c084b0688679ccfdabf38c2c72e3d6bd9cafea993548202a8862e22c94508d3d5c2b91bf9f486a0a4284f3db0b82dff2f3973207d44037f21f21f4b0761a57f375b70399e310e02a51cb134bcf3aaff0dea228beca6c72db96fbc1e8a862126f1f132f843bb7c4414440bd34a58c9169cb26b2155e789dc720922ab1e52332e386e14aa0e5b4f5fc0491910c6a813e5d85a439725e2ae7b505933638c1d462fafff6cbb23f42cbcf9882a01e311322f3b39efcea3b06e202281ff7686bddd45aee5a7bae5e242c171e9de28d3231aba4797603625acbfd182b9483acd5100273f3d668fe27c2ebcfdb798441420acfd93dd6b7077695dc785537c32206c354ad9975d4c672c70f8b727bb670adacff884dffa84121a9a321c17a617fecd01f8163401fc76d606fb4379865b048ae9bd05ab06823b3021462395767216d12148283d32acdfd431779e3eae7ae569649f9304463c79b204322b0d79882841354db9673cd40d4596b8e0456a8556e63ea648fc7f22590bf054169c463fb18580e84b35e1090aeca0a7f24450a2251c2ccfd68823c449cf6b34c713e171a7c4d837663286cf6682a616ad8af914d656509927acf4ca478adc6e59e7fdf0b71a28f6cfe68b0607accf452b1ecf7b1c7979fd536e99e42212410a2f12124bf51c5a8df6238a393a07db482aaed30031f820a191b09eb80d6c781befe9db882afb29e82f21b61e0c239c6ccbd41f0048f91462d8f84429f3927744598ad1b932c7a977d96dae4bb5884f89338dafaa1b3e79e9ec0ccc7c6bc5b19be2fbd516a6644b3bed90992da27a2b05936c88dc66589a0fa2f90578609ca23af84a23c5b56012bd773ea75e828b1edb3648ee5346e16b9aa621279a7aced88dcaa1de5bada3f6ddcf01420567330536a62477800f51ef9e189bc7533c95d721accde2d58413c7edd3a661e053a28d42488ed965955c770bf3bd7663dd377601ea4ea480be9363b79f20439b169d24a68fa1ec761d3e5a8b3883691c3188c633b292e478455e5c7d11aac6a43c11a346c7a982d6b9175a1eced252bff4950b6ddb6fb4e8a030f8d860a62dec786b86d6918c68c089f0803da9d3a8cd9e744459e3d2c18468dff43b45d83301b55c4a821ed1a6bfdeeca23706131543f7e8e35f2802b7c45555afb7c70b4908c2cf6af706f0fc0345aea5786ee36de17d8db9e5d02de5fa7a4a0e4f4c0744cf8e421e238406ad976f4a3f34eadba9bac937d3fa83fbf5653d50b2eadbf6a28c6e8ca65f2054981e1175b4d0532d311c645e10f48cf498b574ba37624e6514a710479781d6b836bf56c485d536430e205a0a13731c343824e27b01e047d1a511bb87d6f882616f3937ec49037c46ae3b01fa8b26bb2d50eb6899ac0c9d9747b8e1ada0982b61c5add6cfc8c17f6ea1a7039e7542f0c9c4bc40471c4bca3bf59faf007bb9df4c40a5b22819edceb22a0182497fc624648bd0976851417e4b948eecd0e31340999bd905dfa1c00cd1cc5836e92ce527bf5f4bcb5c7108fdfab1c6eafb4938ff4475e6cc210f0b6414fcc2029947b39d334371468f427f6a66ec4ee123cb13ef8665930a3e6a876e376e0e604e5fd8a1098d11930d8cf9a945cdea5cc9ac57b9265c8a340be2dec8426450087f44f600c85d58bc67c71e64644964d0cf8226b15e8f020c8a7ce585f1a23985d65cb0312e6895fecc23608284ffdaec5cb069a6b8a626b22b4e9b09ea49575f4c626d8a5540c5f45cf74c283dc1292ecf6a522eae69b606e8fa54df2dfdfbd40e8a7e61dcb4f960e4c1405f78eb18dbc911e758884db16559b7dc2a0053018eacb5208ffc4b06\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a5a4a12e6263ea364ca1c6d8141b86398ec330dbd3e29e2f2f26f6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"29f495780b533e60488c75455bea6de98132c6138afcd56b803bc8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ed0ce4c0a5ca8785ad7617d37b59664ab886b295dcd9919117ff042f0e6c65b627\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ac85ab18ce584dab185d6c76826aba0f1b1e90dba84549d6bea517765dca4aff4f7bb87cfd\"\n}\n],\n\"handshake_hash\": \"5dc4cfdf9f04bb53abd224f36a480ec3b7f9cacd7715b3dc36df80eff201d94b\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331bea9d3edd1b676644b067883f79aa1af7f11e5a2d3d77c1a97af511e919e11badb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dfb9c20d6f2d4cda27985b6b9410085ee2745dcc847235829780036611d4ff079a07f06b750e1fbf7895aab8806ac0c3c10765591298f352d9c9a1d67e261d603a373a6c60e3a66da98a37ea3e870496da80a29f737a867c4c36f951cd04a9d360e45d922344e821a7cd81769b212cb893f08936af1045aadf67dec878673a7b7ed9980158121bdd9680099a7ea7eb6500939cfbb054de4d67c21de2132d6627bf36f9425d56143ed979c1cd4335ed33bc5e836bb3bdcd59ecbe265df2c99b6c07b10b0080baf290c9031f6b67d9431a28642799ec7cb9aa4393324162a259b4dbb5fb0acc2359b7feb83e3b08b708541befbb48b214f46048097851735cf821117ea10e0fbae626e4b6c559ee2fc6e3c9e01a0f44864a94322aebaaaac167480938b8e5edf03acb4996feb7045c71812227dcc324b395c4767d59bfdc797d260c12147c0011a4296dda9a373778d11cb0b51a584abc495ea6431934e3de8519b48136176630a3dedc2b1af6daeebfa95ae8d676896766df643fa53af7ec684c354386d34aee842eec158a348af9a861e8cb232abfadb69d0a211a284537aa0390943b525eeef0443cb7498dc75ec71de599c8474d43e0d2865472e5d789389cf4d2bba397ea386028515f3bae5d07a1cf5f55a9f564f68165155a24ff2dcad18a4a6ef1eea6f36aa4769a9309980b9bb22e93ff8b7954640031b8bc74f36ca76f36c0ce3da0c2d9dac596c5aad537094072dc3bc8cb94bc6ff43b3a3b9a05f5927b9166ecd5781374de486fc6e3b0826d795535d476551425218097e9534a00acc039275555d202ba3944b9a721a26c0fc62cfe46d392a088d8915689babec79d1dc38c689175feb6847cc4f114a6197eab90ead393f1f6cf91d6d1d06410cf6012a0327102e9b07a893859f0f26e2a3cdece6c17ec9ed849f2e4caa2dbfa1e5e1545e81b9899eb8207da2858e6f49861a47c0f352b8743875553cdb529946e3b7bf734f2a8629251ea17695ae872cbfc42711aee328b9b3ac192bcd57532d0156d5b2c4c94ba91dc1b32435df5c978971204e1667bbdfc158465232b6ea68cb2cb41176b2d051daf2b1b8ebe01768ad315c59e011a8da0b4b3515a72349d79d5513a860e7d712c873de49eb426d174b50256efe0ec6303293c0991dc9a258d051fe1497a7c6b17a312ad7a26e42c54c73546804a1be0b337ca2fc107e6dde3c03611c4b692dc3ae5e2f72b073d3aeb9f5dea095586b236837195b7bbc84a185d4da04c5408d32ec4f87f984577dd1ff28cd2cd5093869c47e563330acdc7eab1c3608becd050ecd978dbadd139f69bc30d7da7a93b5dbf4834e78a2f25c83af0cd140f9b57f4db524f1eaff3173d663a33cbd6fc6436c50f577929ca03bdc575841414747f12e9ade6f66875d06b44decb65434260e0b2a65a93df9216a1e232d86dc83abc4357ab910d8908062a44d8463b81f7bf3729f7c06e99225859acfd53d0de9ca164eae7a12daeb826ee00cdd6bfe3547fc867ff163c578cce62065b2d87e15ebed95f9ee98f0a6a25aca0a689cd0c721f4796c1dcced742418aa00c0c2fd0d622276f622cf721941a067a56da4dd28570ebe0541f31002aa0ed23cd2660c9452e865fcc16d5e494c56f20bcc744ffd37ab5291cc84f66609ca5677045c36c09f5ff816464deba043d7972dc60eefc1dde372f0dc5061a7ba2822b4a2008ca673776d12d1e266369923928e534f527d8f9b1da8373a0624e0d53f7ac3f13b9081765e3a31c1091a3e2066365f12116d9d3641b21009c01903cdd78721e4dc52d0364f17f51583f08de9f4e578f929ecd1b004467083ebf7c0aa157bd153ea272e50b5327101f86e5014e11957ea615e9697eaa4fb84466ef5c23b0c1c594dd1893a90656149216d81d2e913823b294844555569e789da36fbd0bd3db85c8b04ca29a2c52ba2f42b90542b38a90dd0156395ec5ebdec946337a3b19e0e5994b3dd79d8231685bc86e90fa5733ef8c3ad38599f7a3a6514d07a17e826901bf6bf1eec9c7ed25620fb1ffe7b993822ec5c6714dbecab074ec6aee66ee761bf9d91544849e2fae2d8d83a4b67a0ab0746396ce79289e162ed2aa093ee7b855630c543bdd7fceb6fd3c5e164e4e442d15347db511fc3d5b06fb16b21dd59ece156f0e28dc0e1341bde7c5e9bbcfb2425c53923a2714fd0d109056329fec601600f1794223fbb1743f1e2ddacc296c139b5d11c87b163ebe7f87620e9d336bef8012b44c2b0584ddb1e1d66bd316a6c13dccc6aaf62dcb80110b5a1cb261c99508b82eb6164b80ca1e3d838bed9ac6985a2122be3cbb42924bd4a8425e07493e1bc52c244274cee34695a9ca474e927d0b3b2fd9e94b3a26763076d673f23d7c45f89a503e3c9cce1a008a0cb7fb078cd7657055a8d3be013ad6d507db96cb717a62a32fec775be45f16d654cdf9f5a7dd1a81ab3a69a81e94d05dbd27617bd83160bc19f4769f2862d85a638c6e14563bf84c2cb252534733f739286b4e47e9ed9dc9440cc66d63d67786abe7507c39862eaf6814a03061cb43c609d9d5a2329a13a410d6d89a340854eb41e9ceb00c1551350bf285af8e6a0cb79d6523cd7391744220930e77447d806d9a7e8d1856143867406c0d4f70b02bd1cfc507dcc5d44474f6fd50d690d203cf4fa833970e37b07927f31f27ef0f76397dff2899802cfdc76aab3bc668762d138853a25d544e2766fc0085ef30733e5c79daf90b6b9d78f530b8bfb7c1bdf1980011fd487feb2fcc71b9a4cebe0f7fa64c0c4d9e28464ccffbe4ce8d6d7eda19c6cf19b0b46c5c919db7d8767fea336aa1f7414fef6ed41606e0c6429eb5aad804ac0563ecd092665e7becac1727176d74432fd5113c475237567466b3f60379833d2ec820caeaede8912efb507dbbbbc34b754278a72d3a56b3d1a70cb6ffb194de\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"154da1d10e0085d8e3a6c9fa0191c28a288056b977d7474b3159d0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8747f72d45581794e5269adf86ea81d1d94f08bfd0e28bbf274661\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"dd9f154490c22e700cdfdefcfecc992f7941bfb82a5ae84cf13db9c28ace810141\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2b9655bae0569a89169106cad24358d7496b3da0bfee651b05e4ef63175511ff78ef6e19b5\"\n}\n],\n\"handshake_hash\": \"da00b7979429eb0867b8074669c0599b28204e4d01789898c3b9a6e8e13e65b31c592e27a3c645fa445b4359f1d4ecf50b91daa4bf53c2e282eb019155e95a41\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a2139c9c72322baedbc699f8fd92c76ca675358584b142b3ef0b304d94bef1160\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a17ac1bf855351ed958f1faa608197e09e186de475b9fefe0383799a85f799450fc3e0f699369fa9e470182c5503dd901f09bfcb72b569b47b766dbdcf3b794711db3ebe28d35da8245251b1f475075aaf469f703fd675d151a0a911736f5b56f8d4a41dd6a21f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0e94bd1f43d124c1ae601029db05e03be5ae5fb21ca3d510fd1a41\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0d5e415c5492bc145636166dab195d7bed0e6716a3e5cb5d6d819f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6c60d272180d98f664f0a76c7d481a243b64475f80e4300b04c03cb37237c35c32\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"964c83ea586965a634a664dfd67a723895e07b8bb001d493e175c72c94e91b15f44323e256\"\n}\n],\n\"handshake_hash\": \"2772c48d77496fccbb41a07775d7b40ecec6589d8f1fb50574269b30c6a43b33\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9b27181420e77b48e41c571d281f902d046860d85eb979be2aacf1d5a3d2545d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884305a7648783491a5a6733a2bf62f5dc90de857e3f703a6d3513a4933afda01663c0eac7a2b73c6bd6ae87ae7c974b9a56e5103caf7720c6ee13911a8d461c042223eed21d6e2757c15f6a7371dad3001b1bf4ace84c88c9989196135d35de3b26fca4ebe05be29a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9ce05a5f0d021a74cc5bc8de10735da2d9b0791eb79b0cc990960a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dcc34cd091c6b63b2efd31bdb30a96c804c2f87d0a063662ebbb06\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9979dafd8525e4cfcd4407786a6d78905a3b6fbff6c082293caafd361af4ca3fd4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"39ffcf0bec4c79985369c011d57a94d777c0f4223dd718c195d38a90c92a72a5ef0057ec45\"\n}\n],\n\"handshake_hash\": \"a0d5738c63c49d71149e32f295196131372fbddc56a6105e8871f7b61d5437fd4bb84bc769c0eb101ac3796f1fd8911e43cc7765412f133dce7553640cb0cd41\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ace970769ec43a9788747cd968641316b1c6d64cf2e84af6bb5e013a96cfc9524\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437cca3c7c216304d4e3709d2a5aa8f469fdee29563741c9508a712ee8faba9b55f5136c67d0e4162b349e8b0ece621a19cb36bde96316cf1f0748031a55da2ea0e11d963cb594c0aaf14f9436ce88a5916c8f51e24d8cbaf0ffa848344cfec19088b4c973dd55e0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d3fcba1bbbe28d8bb617003158116221b0aa1f65dccd5a2aeac690\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e92dbe993165a3200fada856379db8e81916a2725362363e739c88\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c644a7b6c3da19d1901d2e0fbe2166dfac45af078e1c2c95bb7fbddade35aca4c3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"509acbd74245bcfd04072a259ac55162d3e193877f1545f2242b9e05ae27a6e696222c6e1a\"\n}\n],\n\"handshake_hash\": \"9aaca695ca3b7a0f7e05e3d32cae24f4d81166f18421dd1bad35bb756db6fba2\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad03709834f1a0b2deb255b8331b9440b84297b1ffd7d9c8005ecfff64ef515d1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884368b2fdb5ff2a2589363caa1465c90623f2d5a2def790626dd7542f0c213b5b149c2f544cc3cd52f414fba7ab0d9059b37d7d156006ddcfb1c7106737397b8394848e08254c095f0210a90b24fe8836ddeea89ef57bcee7a628a4b1e60994183a9f6e169d5a554a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e57d5f47978ae98c7a287a60269f0f39f4b6ec8021d68cc52981f6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ffea78aec4bc9d96629fed5d9d94335e5111bc12d91b93ba8fa360\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8881df68b6e573cc01450393373ad71c1c8c70820e32aea6f2c319fb31ddecee07\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a13f4e274be196a2fa8e4e02f89db25bc85a30dd75ed8343b378a2537c9e969992a3e6c71d\"\n}\n],\n\"handshake_hash\": \"53714b3b546d60dc5f19848e2fec478dd733004eb8cf801b53b38cfe977df99cd53210ff38e0bbfceb870817a022da12430c82bcd5270159a871228529fa6065\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331beeb89af702f48328117d1b42ef53d9b5feb0e468ee4a13cb0ccd6f316a11d4dcf\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bf07de81d1da10b8328d6d940b4660ea1308a357dca974d92170744150a99032c98005fff84bcb1b675ed841261eb864c646b8ee767f7fa319cbd7546564c2d94580fb38f9e085fcd4d9d9044fec59037b750a6538993dd94dabd3e12f803cfdfd7bb8c291da2d961127d0454a2f4d99e091ddcb2f583ce320dab6a85bb7e71f787f8a747032ebfeb873c2feb8a2ff5cfa3011eef74bf9030f135496ee3ac43b5969e1d06801d8c4c008582903c2660df85b7fb3a778ad6f01cc709b56904269af1d12b3ede2c1de5d3e4805cb7b386cabe85698690cf65a977bf65fe8cd4b10f89f1a4fa9edcee27298b281d4aa673e23e57378d05b138376a67f672e4e3e91fb9689f1dcd9e3e8298b980eba46a5c051cc1e2dafd3ca5f82972bbb3fb3dbed6a8c763b5b8d0582bf44d03707731c5292b181748ae537a267aa76877b746d4986c266dddce667e8353ff7e19dc54df5b777c8eb13e99b4686ee7d786d2c82901f305a87c4d762c0b22a7272d6df24c90d558ec9cb6eeb6fbb40eb1f74942c27d7a9c272fc01bc898f95aa2c3adf8506254cce56b5ba928722f1c0fa4670b3832ff8a83c35dbefa952b1556062d33a5e8392e65531777abae918e386ad0c20611da14e4dbd634009d2bbc33b026386b588734c3d74b6e00a5e031b6d774d135ba62fbb89c2920ced1879b5ad82b7fe1e3ad10124b178adba1eb01d9d2a303ac2b0da16f0f35baac87405efc8f1e63d05947b8314c2f850b45052db47543810272bd0a04fae259924d88d81de7bef56d9b8393cd97b5fe91ed66b15626eb3d97dffd55723ab5898e04d181a132a6bec2ba3e21182e9bb79125ee1fbc16eba9c0e64c96c153516a054ef78f2356bb46fe395215820f809cc56e13240b882f59ef23e035a4dc185c783b678bd3b157a969b5aa8c88115eb409d2ae4731c5857628bad19cdce2a30b556f4f30c18035b7ac88c525ccca878ee6c70f3a23bbe5720d49f87e08a7b0fd16ad6b11675400ac2aa13c79a110e336e2ceaff88da4c8503f38bde4e7ef65bc4d404ba37980e36dd0df973ff23e61f5df722d4176bc38a5771e6e64d360526ec1e2dbac88faaecd21a97c53ee2a519b41e9d2372751bd728076d3aea8f2641277fdeb732aec7d82f8a2940cd9d2c229cc56f83040929afe2cf67fafa5f4cbd61d630b05a00ca54cf86b6e0f1f53cbb6d8c873c35a6554dbdb9aa97662ee71532163944abac62f2239fe8a2087f7fb72bc01c32739c2b8d8352ad752970343b52645902f1c4089cc0c3037ddaba05412a9f346f5e4753f510c2add3b9d30fe8432e79ffdbebf09e1351f286dc361029d177997f48f0e577d5c1d2395de52a3b70265dc4740309a1b12fbdd2f8f56c7584724df047989103a45a90a081045a3b2f50b43ce3b87dfa5aa2762c47ec508d14824d9b8f2fbdb720e10c5da6d6fec58b80f1c7c35f7bc579e85e7d30db9aeaa2b13141f10aff2deff5eca81a84a598a6f573e7ed5e1d651701d63fbfb7c9955c5b0ab23bb0d59331a58c7ef1497d89799d20a088c7280e052f670cd920e64ed6f12b8884deb5249b608cd729d3f9f69094f6b71ea50e7078d59b8abe4a6e7d90fd4bf3f0cf63385bd18f4c5a1b76c236ee0f750715018ecec564942f67b8f329823f4937079b3dd7392b9a20a79d8e35046c92d5fd345fc3363da832c5946fbd14e364b979668e691a25f41cc847f1a8ce289125cbf5bff0afa5248041126681cebdf66e74f564629c4c3381f428f9400187731f142d9169ed3303e8cc21ab499eb5eb8fa2f969e45f4a3e0578cbc4d60914fde9af28ca5308e5e7962654226abd0cb24c449bc1f0667ff525174e6b53b7f643db0aeb2bd93207e425897c5c3d9dbfc036e1332c369e5dc505205d81f8f60a33b40eafd394a041fd56008fd271aeb296f7f467bab2bca95c7b233d55bb12d6fc3b9c5887e5f46a39d8b6be1754553d952785ac77655d51204862ad8cdc6bd594f0daccf923572fea2254beb7cee0b5ec03133ea57962b0a652ccf795b662e9d4875ac46711a17b951bc78556cce31cf0c56b22ebc7517b204492c83889ec9c424a44070c2abd3d289cfab4d6e96e84707b6c6bdc5762c30ae5f3f4406a34b96f8d7f7e2e9279e8c102965ca078132f3cd0294087aa9f8d1d4bdada66e3e9c350c667cb45cba7774715c8e665d10b819e76a381fa635b5b891015764e20e9df42273837b1e120a78c97f094dfc6b1438293a8ff4a1952696d535f2837c37cb21335b6caa8f78bf3cc82e004cd6dff7630176c8935558b48ffabe27c527b62534b8aaeea1d88df969578af3e651aa4cdc9540816977b9ec9b5bf8749098843374865d3e9a8f841cd2c0d7a2951e8ad2e9698ddfc98f61a45014901624f10bd1557e43d347f85649c42bc7d8f955b30dc91be8d389c5dbfc93726a8fbf68541bd11cf6a6b85eb73bf26e5f500bbc1a983d754949acad6431c68ca82fb535a8e11ba0ec692ad20c6761c2d4d5250393fe13780c45d287a53a9759cc690e4942d53e7da586c68fe343c767df23d847a1fe71c1b7b5b2933a1ccd9fd28669702e966fd1cee5dabf9845502c42a9157c72b896e1052b8041f1d2b267e2b89a795cc43cb1ef75fac709c7e0c12e439d5fab36d3b30cba2f8b17d25ccf4789db2fccd201879d2919d33d65c07b268582d09c7fce5671cf8fc5cee57661239c4399419dc1f1fe2fa4cc11ce4786c1e676b450f0b33ea0985000ce94872d571da75f169c6f2517579349f88913e413666ca4b93123859ad40832e31bad9a2cf63c74d0ad026a6b02f0cb78b55fae4787c803c39dc01f12b4d62d7d7ef6101d6055e843897e9795be6ce2bfc172ac3e4a35a5944ed16abf3aeee2d8a99133e7dde7b6f7fd2ee2a008d2878c0c2e679bf670804eac056e40d7d11e06ea31d64d2e3e987e2816bb200483ef1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"637707d6ca8b2ad0a372a8656700262e7a2ce1519638a7ec913372\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"22dc410d385821877bbac009ae52b3f8f3a607bf9a68a8ad56be79\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fca1ad8f0abd239b126e5efd6dc12abef9dc618340f9cdadd50a5af43c57ae3de7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fcf8abf1a8abb5219937c8c1773e026737243b85022bd9c4b2b00247b953602a124b1db6e9\"\n}\n],\n\"handshake_hash\": \"f5baae304c7aa53c70a2a0b5b83f04d28998476535c3dca52ba058f5be5ed172\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331bea9e72b999ee2656ec44bfaa604cc58878d16416b98de6d576b995537140f417d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ad03813f91f5b87342e6717fa7d14001fa1785a5178e81b9871810d8fd49605bd197a03b0ea654cfa363cfb085a77b84fedff9dc4cf83f25296136029f95d0f7afda614e55159400098a518df26a65a1f795c0f819db2e9c80bcbabb8fe4ff152948144e8d24690e4d06c48b9d1bbb2c5bb0f65b6fed48128e8ff641701aeb6f4886fcab57f4f0a094b00c51be91c525f583fadf87f71985afdfb61df7c0395afd76ebf97b0a8c16fde5412063d7adb12b17f8bee8f1d83607499d0709dfcf9ba725e995c7335068234d8198e0cd8c57481f7a4d500dc120e8ceefd3c8a16448ceb6caaa6a3fef63bd811cb5ddf770ea1ee4b3573bbef088e50d268d1c99d5de1c0ed51b8288f5f2d281991e817b46ba04db3b0727bad46c7a641b1e0346976e20834bb9c67c37d7d4c47df0dedaba0ce7e1b1b9e4592c7c278d333010ac0ea02c0732f62a104a5ca0e8c02608f0c8280db158fe0608e4ab142be827e593168874f5803415b82fdf85e556b82374db13904ecaf5b7250f8515a4759418ae76ddf411bfabbbc6b671ee11f802aa9782603514d6614e4f8587caf355521cf9f26108ba00f7a65f5bb7b02cc59c48b68d9d44bd185b220cb0040544238c6b402a08ff6ef3953e1dc527a4d1ce999261dd7305982369dd05ee8ce8a83a50a715f42cfc70de3ea04e9c96bdea7c224daea7ec68ed56627e625d18a016c3d755fd96994f38cbdf588e3f7dd65cc79fcb9f356185beb2ca3dbb4d07de784c50dcdb9518744493697c1d55cb5285ccbbce9e16c1ae5738ed94d8b18c5eda6f3332efa139684ce6627712fe8498d70387f349d686b5acb39f8c8f928040018e749656d48b31335eaa6e5a3e746a2b771b33eed386a14e4318ca282bacd4b9635c9c61dd2f9cbbfb93858b0a7f4233ff16235fa72e2fbdeee883add162cac94af67144620352b18bf29b2b4805b8e7dfebd841a2806011e9c3d3fdca4fab8cb5250dc22156853e3f93cebead43b7cad51c707947a1f65ebd9a39e93798c6f329554d67b13df2628eab183d87466001b3df212dc8761079678b9b615148c05943cbd01077a95001947e9a69cd89fd0b7b510fd324fe58bb87f024e40b77dbed8114fee3c41a35314857010c9acc9d6f9cb7d64605c0e115f2ffb250107ef59905bcb11c81df19b15c9aa772408147352fd3ee9de142797fc91e319697239126e1e805509d66c972d235875b76ce205aa1dc04fbe9ad9b7e0db6fe7aa44116438e8dfac90389d33be4e738ee63570c6be59a6189f28c65b5b7bd3e79ff40b5463396064c263bd172df09073f723f012192d066c11d9aa3aff4885a9c675385f40ad5e26b10a95f5b623628f9dbb1b9c1b6719ee3c9fb435ce08086200872bfec58b05548f70625a83b41e559223f9b4359cff4fb46f20ff7cf3dc59f4465fb0130ec310f65325dbc9a9222ad25d5b1ea2f922da0c6df1df75069613f35c88629ab1764a5f53d4e1b3abd78dd222344ea09a2a14e4a0143022b0209acb7d07300c6dea82277ce1d90d42d4aae298bdbd57f89a9328ccc4c39a13d35fa17b599fe4dee5d29b7203c9c41a42ebdce1f56a8e42793c2807330b760feab94ef9ee14e14aabdd188d96f1ed839eee67335b82275b67733f0c437bfc888f978a0fcd1cf441ad5c804caea9fea27c8d61f73f07c22626b0537fdd0de27c9276d1bd34d377c982cbe9eb01e6cf630538002cc4a26bfef94ca415b408f641f7f131f06d9a69c4a7ce62f5a17ef71c631122dfffbdf870bf38e20f264f1ff0ab4206502d96faa064d7eaa8578a864a2adb61895dba524e1c665bcefa3e4f969cc2dba845317ad85c7e789fa9fa91ee0c2c18e8e0b354306fb3acdd3f599365d85efe15ebb582c0b1b7c01e602f927f5cd33ca35f9788b8b5db5001c4c162c4b38ac77de0bb63a8f18fad7b5be174862cc675357256f995cbfb0c4fff42e496665f7742bece8db7329ef3c761269b2b765d4951a3f594df6c88e1bd0484afd10dbee108de7321be25458561455c9f311395c30410a17aab49e827032e399b58215ceb7518136cddb19060b266d678ed80aa8908c3378143ef6ce47be63f1be9129baf807956d51b401771943c01bd14bdb0a4374d60c6a7e3a53fa1ed170e2d9bd7e2fa9296d83250642c5e4685abb0716a7dbfbc351f87d89b0dea497754f6708fc017e30b64d66f98f8ed829804f7bb3e9ca0d2ad7a799055b80c33430110ee112ec4c1c20070567f92b7f22ea4ec1be8711be433badf83a4d296912e8dd47b34d887448741c394974ff9de66237eeae530fe60a556d7d6fae6a147595097a7710630c378fc1060c6eb7dbe86ebd71bc9363161906237e1c113c712a2b352c40e8583689368700629c8514d6e917bfd826a30b30e7089c477c915d04fce38cac585ccac39a35b6251c1417cc88412aff98accd4e2e3efd57d4ecf12c376618b090681d8107add7bb175fc7052e87e1013f1a418bf9c253a146ebe28bacb9c4252eeb7f4430e0ae0577e9d021c77550d1c9be150cb8b1674948d3fb1d30265b27fd6a5ba90a9d90f55c9cb87579b702f0233ad38e09e9ca4eab41dbfad5bb3d482d10bd3ab6956a34d3ea9fffcfaae991c95e3cf3a5a294c3b5660fbf234c49cac95c0f2fe10eb2eb8b6c08e2c3aabd9b6129feb9cbfc37bf4748075955cc7d758f32d78adb8768027067a95971845f14a1f3e17709a2be30a1ca1980a18f5ccf4ba743e7c1019c59837c178ca9848165698ed9ed6fc282a3ca5987424464440a9e54f083e7a2379005a4bd2ffbb67b7c315571c97ed26e23c7bd6382669f5c15420ca1c627ac4469c845e6a52c9c310ab912ea25b09b6e7c8e11b02d2c11b5344491ff75d394b74d8a3a0e2bab7b7ec32931a4c065b60bc034f1dd4a9651080506a91f521b9490e299f09926fdb9a25e0c4acc8d7f97e7f4e357\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d94fb9b3c5f44a4a0fb2d12db0c4221dd08ed783d89d8291a38ffa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"56104b18b349709005c1c67f13e2784a3954a3224fb08a3a7eff05\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ca35b449d9003829a357cfe4be63e35fe58f7038153c200b0007ddfb31bee981d9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1955eaa131c6d1d8b13e74a0caffc50c6c60b29e71fbcd7f02b634f161ec74bf4a223997db\"\n}\n],\n\"handshake_hash\": \"bfe51a3ad1ce64473c1633d7fbc81095ff9a3c5bf4d17127a42afc5571160a74c04da23605134439d153eb07d8ee3cb593b072f78c4ffacf5aca914654f507e6\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6502433bb5d67d788ed1dbdaf7e8c4af87868ad21382523e517904717a0ef5e0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434f5844ab28d0a81e34b6d79a7e433e7cf941916642f9ddabb80cacba24dd1286039eabfdeb453210a2695d21105595a7e9521c0ab5884f372504d1cdf9af04ab98a89709f26af081be87e1358054a3349e1f7eee567bc840a8a9f22e50ca492b60ffeca445573d3277339e99c02d30a6debe7489300a3ca660024afcf2d62047c5e8d25c749934e81aaf8fb2801dc9f52954012efc2f28568600d63097b5c27a9bf750b79aa153d3026e431a27a428993746fcef151e1735060b4d3dd02f7991f27f8d5fbf5df9c02ef31fd64c33fecb66dfc6b9d991e65c7a4bd724e3e9355cde686addf447f12853921c250befe6e5c8596332352e841b5a80209ffef750a0855a927565b9583d7d5821035a97791f927886557f39cf658ea8489d27117f7b041964a8a8ca083d37729e7fa55d2b48df5571160589dbb457a65e4ad1e3b0de583bfe60c2faae1105ce6c715e15450465e9164043fbf2d51314d0a213b1fbea92dc35a6f8405c5725b455bc145b7f0e17da28a87eb1188c7abe3b28cdff7f0e9bae6fb7aae494072e9d06fa111bbd4b4f8f278477f3f9c25ef321779d11889064f4773a0b99ac9b0d4b0f5eaa1e02cd2a0fbee1e5edd037ae65f06df0eafbbe0b5954201bfccef4cd8f9d0ef0214373be842f422832330b29833cbb15d31457071df55623aaf9c323169a9933a3d3a98b931151f310f727851198782d4e4cf72d294a14221d062bd1981d484255b2a7b9fb7b26241bb96d939ecea8ef72961e34c82002f369b5d1ba9ae986c9c7773b4b5592acb26dc4a3df341ee5ec49908bf4d77199de4ed2c20cf09a28030a9bd3f46cfab08adb2570b314aeb14d6b2453b1da1759e8a2ca468e7403bbdc08ca45ff4a9f2e364b008ec36b44bda2a7dd3d27fbe9537a16af04179c9089157c2c66a8f9eeb0f3943419ecd74d60b37e358f01b966a4936a7cc3f019de9c1aeb65a9fbb995c14d2e58cd983aeeca05107c5ff4d0079b73ddf7a16353fed2b317e4172d725fdc3439a489de68965a5d289dd535c9103fe38e58e7a2bf3e6f96d1135292b5547bd0eb6f12f6f67fd2b59b726aa06811c6fbd537fca8343d577184d3413f13ad9860f0678bfc01bf4040f1ef4e800e8cf272d891428ad1bd96f03b80da5b7578dc19d1d187bbaf38ac2a7a47a8cb9f43cb9b93cf4a2b03a66862cef8464f5d919ff1e751cfcb4886d8a2c57d4dc179b097ed28bc928982bb8043a6ae9ef63832e761d1f8f801738d5aef45bae862ed15560023a48f1c5a6d871470a7336e66798ccc546f870c7dcc349afaa51bd93d47ffd57537e3a4ad86c9b37cdd6cd1a4a1e81cf3f996527b75ccb355831f3f66194d2606ce142e60ad854c013c0e1a0a23b013133b77c62dac980d2af90025e49dd029502a483aec1f16ccdb7b7f0010b96ebf7f62f172a801298fa180b72b9b28fba66fe16a3a84f36799518c324be7c3584c9bb957b258e35a7e4998fd7b78c42ff8682b9001f6830a0615bcf019778cae4390f064ed21490279da213192e6bd3f500bb6fd3035e1d7ab189a6f5542d94f5dee1abe718773f7ef918b5d044a81c41a3bcfb24afaa4e3198327fb78c91958b59b128624b4c5ca666d3de812fa3483148c1c373c413abb95dde4e135226da705dddd9c1831e28cf0f9c8405ca3b79cbb88c57ee32932d1616a88bdab704417ec4e7f71dd31222735ea6bed34e03b28a6a9d5f5a5c0649e696e02df215a9e3301b4eb0111140565868a4ede01a8620910fa10321564e0516fbb9727309f886d0144ceadf34e1d2a839e5b23017167c86130bdacb14bd9e0682e63cf08cd2f8c7e9bf09224d021d9301b61c1b86ee2bac70d4c0c95418f81ddf027a02892280d9d6ee44526d2f4167dff0dd9da3ae17b9ee0156f2ee5b5c59f99a5f61424da0c6683e51961f7aab01b0f294f212ab5e29c7d8a6eb6d9bd75440999c65d8529b1ec39f75ab91bf3fde89833838d53ee8cd0ed0a2a4c57a1420f638fe9d857c140d01b352684992da7a7f682647f3b03617796442bbea7408216c890836bc99211d58c8a5ebb00365bfe61bbd0920c2155e8b3420235244a246c105c239487403bdd266988f7c79f7940a4925f5cf63bd69450ccbcdcff5eec0f2484847b123e051121b3b29cc4e260d0610f11e49a30034c857f83fa9a628a1bdd96f2771690b337c0df1d31b34565a5087ba02955a57d0b903c1939ffa60cd714d3dedfb2135197f597b6824744164a4c5ba243871816fcff1fa8e0f8c94539dbea1293724d82cfbaa293a532291eff3e84f7863d589e04f3fa3b5266bafec052ac82078c493fdb72624cc9b0053c4469405fc96c42ecb64db14511220990f687de0e24c826e4d436bb11cee5bc0a334d326a98b95322043af65badd2236b391dfb4e1b58918fea97c536628c2e5868a440edee5ce831a8b063d313549cb5952f1aff8cb725970dcdaf003264003f8c74d072fb3573916516f462bc2cab7bdcaae9f5ef60c892bb6912221c57e04cedad61695310cde1359b3f0d25a605f44ee586a0ed379a60c7120b77fe71d2638bbd9c43dea4eb39662dd52a1a792491f8aab6c8b299ed9b0632674a5d78471c210846eda9a8b9bffb6dee824ec69c469c167e28eb38759c8fe32a2e2ef97cfc373de8939ff36338167433f52c264d636036bb82af3d230bc74b7673ee627a2d080490bab84aba35bb2a336fcecfc7ec817580c8ac0f50a043a518f57c750a2aa26a14fb148e2f4ad2ab9aeaeb6183c48967a164c19909fe956eb2bc16d33c7a0444e0b0fe716106be84adde5df563be2f76733703dc58847bdc496a37c30a1fdfab60d97768b478d550d18bd3be028993ad0223b503b86ca48737f5acbdcc78a0d4f06f15874165c3ffefb47affa6442288c9a60aeb3f644bb1ae01dee05b9f02819b0ec909675a652d5914e9274af0180926\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"282a6fb95bdbe7511c7de8076c7f124a1b9f1d603ef178eeb8f1e5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"24af238c0bc50d0ed0f128599e80fba8936567ba29cfdde90d3eb1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5783a413ad57baa8ddf793081cfd5fda22e8562681b844d38ee98a9927ce45337c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"24880087319e4dfa5959ca2a48f21d9cd9d3ab33d93b5b5cadc06fdf3e27095ef0d72369f2\"\n}\n],\n\"handshake_hash\": \"c8a42aefbbfdbf2f7cd1259571b1a12256197b05fd8c4f4f7076ab9ec10e693b\"\n},\n{\n\"name\": \"Noise_KKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be3a618dfc57dbc8adf27e213b7271ed9b59c16f13c3de3ccc3811dc10a9322205\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aa5ab347ddd517c5321101bdc2a0afd07643bb3c6003bc0c1649ed1564466ef0f740e4b34d6e367501052794b00b87675f8e261f0563b6bb6e79fec502d1fb91d61f6340e3dfb83f0800440ff152acd6a62b2ee063c84a55711809e72f20a35341b8b294aaa2428101af59bfd73f0687ce776fbac69a8e6d1a79db918c81a46377f99acfaf5dbfce3927f6f073824ca2ff4311987aa26b5820b78e433c7e2236ddf7618e8270db938f3328033fc73988cb1cb88cd384bbd2a177ad5106213de1ac216208c3a2e414cbd1951dfd318b91740c0bd2212468de4870709e175b8078ad232ec858e7c51d7c975a7e8b62dbf883daceee208d553909fbbc40c4af6389bc12603183546d098eb5b05ff9a46675717b4cd1718ba516dfe2cc40aa77bd6dee5e62e140e129c3d276228c56f925351ccd0d12ee865f202d643d6323b02589d43c0910261779233604726c29a55cc2b23c4fdcc733efa1de23612565e4b1a55bd7aded9abfecbb4c7e6c889c3c75f96eac593ef8dd888012f6a295a200b4e60b511a56a5d51f6f1692c796135cfdad727e00557ed057f7dfac88f0be208a26567e19692f6460be707779c300f40bf656bf2a4e9b4953751f0a0b101d3508c02304ee50b7d9763e7a12934cf1492e67cdb26e7129f14685b8bfd1d37e0fc126a49255a3b9d00c356ed4679225ea227b43066ac6bec0f88a0cf2b1f0073472f932f678836a917cdbf3f2e9884457e7b59772820663faabac92fffdc0ca76111430060aa969d8faeb4f92f552b2e7bfaa7ba14ac451ae8e54e2adfab15db1b79610a032a068e374f72a5ef913f8797b33c8600261980f2a3f14aab21c67b71c6568986861b2388b622aab51979278152421c236bedd6ff2337969174258938ce541e7575abc45a2c001b955e5ca62cbbfe6e85e99f98c208546100047ef4c5782f718fb59cad295fbb99a66ab6715bd34b1668d7cf6a833a3dd924650a293b5f50a74f9d764feb190af138fe904b9f505b9d6dbe08af2aea4e6c8c4d8c472e1ce0d868fc672987a7d021423e11ba65101b2ff5f4096c448039c5543f3e30ad2e4f5e20c7c407b9fc044ee449afe30f744742f6b46de12ffa92d6abe0d7f87f03b054ee4a3ff34e57eb2e0ebb7daf72d2f3fb593e7c4b4a7412c19876483faf6295299241db49559778ad1c9b726bf750e6bf76bcf17090a1dc3c1c533ce6440a83ede5e0cb78491f0bd5af7cfe5ac5f51ed00f4afadc547843aa25d07f9a494ecbd15abcc5bb250abd1123dd7f2e428052517af19a876c29226aaf0be7c0754bb5a2855a57748cec87f039024793f6f559465aaa7f5de02b5a32a9d201d2a9cbc2d9352ddfd2b9476694228aa46adb1f7610bc14254aa283f8f5a313ee78a1eb4784388ec033ca1cf8882849447d803403f1457a89aa84ad2daa2d96eef8daef25c7755f4bd39c7d0909fed629c79d3833271daf185a1daab8f3c972a0b749a39196066f8b56dcafa91730eba84a5d76ef6e14a39402044435503cdcacb8357d8d6414e657150fff6b9124c8c24fa93e2820296256dcfb8cf5642a5a2df767e0e28c5cdd1d3e0d085af0a696333f3db39fe60980370212e396da4c9833bee3ab96e5238ca1100dadd7cc9470073c7a2ec1c7ceabe51503766a460ec243b3b06eca7f1333a2f3d2339068c2a665a89317fc790ba076157f70ed1b95cf4eb3a49e28caa35b2b253b2661fcab6f17d52211d1eeff6aa2e3bb73cf898014ede514c3733e210c06aa88807709e5441f7648fa4077b6a5ea9d1c0ab5a5263539c4f6717e907e405d894f3c435f4261f22b9894d9c37226d755bb28c6f45e94e0fb15467367631302bd8797eec2471beab87d17934261df183d1d2962895fe0bcd727030258a7f977344f4e3c67f2f5a92c64ce2f159b8be4fc9a23637a3dd6341a504e6db9fc90f50672c4ef6bb5ee0a0ed9510f54fc171a0da865494065f96632cc1b7b90c2d352b5af806d5025ce6c324ed563e9c55bb4135918fc5eb37a84784e00dbbe6b6ba1caec9797550b57f7f83ecb8a7a8af60b53b61f5b28c00a04bbf08319c8cec8880b49e15d1936dac6031bbe9b14c108f40b8e3322daae13eac9a264821466616e11c849aeed11379fe8cf18865edce9d5a621a826a974ff2bb0aa84ceb57d485a032f508532e801e70a09cf89163b2dc03e625a24e64d7ae5e8ebba3a898534c634ba8e51458b1f986cfe1b2d7c275a27078957cfcbc280d2a73e43f4d78ed475df6f94ab4c5c17bc897909c5c61fa712668243806f810ab1bdd6580da8d39a253d07994c2e127ba93c84c891b7404906de1a89cbfda48c306710987034b02119c974e438b7fbf36d3c573ea33f8363ec7d5b28058b62998f150e1696b7bdb20bf86df944ca67fb6e1cb1f6a2c5ab3a10829584df970f56ee885800d225ac63ba84afb489374ec62bea2d07d1ead229f05d8b430b2a945bdbc40784ebf2cbc7c8cf4235ed78449ba5a7c5cdfedabf9e31af79491b2161b38faa84774e40b3fa1293d419494e4b51c49ec6549132a6d03b1d8e837e896f0fc7561621df76f4d0d20f57ccf6b3cddf9edc6bd4072153cbcac6c9e35c7b78c0834924fb597d33318afc81ae4573ae4bb3bf254fd1b453242bd8606f69ed15073fb164302d17d48a0dd897b857305c7e97f5740cdb3211cace61bab59e09ab621752233b46ab1aee743a1e68c63f459fc0ef24954adc4816e59db774f5c19ecc4f2711c3d1488602257ecfe3f4871272af92a111542451e32ec5f7fd8fd7dbc6f08be43a6318f6e2bc2c2d00290bf5aad3eb8ea1120116dc18733b31c04c2524bbde3f90c9aa20cd9a981d02d9ad97cce8de730e263b494c750526667f70fa4302511930aa27cf31198b91530a63b83931093c26c07ab91d5bf6c562b9d7be2adfda0aa69d6a653ad65039ac843086869fce7d6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ce242ac5ff18469f5a381ef784013d05dbaed09122aae4eba823ab\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"eb4562a1305ff000f8836e1d53c31574b25835ab4582902ac1bb04\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3f965c5edbfcf5fae2ae8c3762aba351da86e31d5498578542678f7aaaf7ce3458\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1990503684c9faf384557c5b89954f4afc4e7469f9023b2b946748be1facf4425c3cdfe94b\"\n}\n],\n\"handshake_hash\": \"9e252a87302e3fc3a1fd49738271ce2fc2468e2aebe0ddeb830ff0ca4e6e3dade486436797c06287b6f08566d79f21962e8071bed57120a2a632db87ac5ebac5\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bdd2d7caf5f0003156e916b71aa64effc72437ccdbc972a0afe0c9f20c9b61e7fb79cf690fd9c4b1770ef8d771382a84a3eeacc966d8aaf86c6f5e06276e40f31c739be5d67cab81408441ee17fc4149a3509cb9329ac2d21d85e7c8d0ccbf49850917f403147218\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884330a7d15fc1f00f221f909c05bf69082b97803e71225828a3abfe97de2d72c358b560e070f22ff37ad333145ab5a07415ea8b544fcbd3636e86f56e3c331c9a4e962b852f43795c85f1f61200e200548c197c0b7b039dc80695220a1117568ba845566d92f8eb15\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c94707247e1668a06f4aab4b90740daafd1637712e776d169fbe82\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c32d5e1aa933ffc02c148c05375c400367044f42fa0d8b4ff6c6da\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f7f0419df5a82cb0ce0a7687b42e3f279d4609951966c6496825f7494a51e87a03\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6f08f54697787ac96d594c8ba4af54024b631f12ca90f0cbbd84daa895d65add73807b866c\"\n}\n],\n\"handshake_hash\": \"029696028f73b11ac3222120341136a6fc6cfd4f0dfd1c2a0c93fdbd9dced3ed\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944bcefef6e91d09865b0fb9d051b7ea4c1f21c0b259b7e42ae66c46df49813b38470582d4d9610d636a281ae73f33031ac24d928bd785393b76757f6094dd6e5872f4982c8cb1497d7f9b967dc3deed614c5ea319deebfb5b8de6f174e1fdb4cf35dd1b898f517845e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436172e305e8c5d3dbcec27bb4c27a10689762fb5ca71fb0910d6f3dca9075912c2d9f0283d26c6bd94e504fcfd95169fa13e653f5106dd7be886e94a59ab65afad419fd884a18479e45839747321251b7c98c097f83ab6ab9b7ab4cdc8adb936e274fbca7a03ef8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f48346e647f10baa2ff4b365a2a62193bddd0e28c7b4c2e5629424\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b1916aa18d17f2dd9260ab4a9f4fff4dec034202f87dc08ff3b627\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"46dca6e948d51a9dc1a0e49c138024758e99f45ec8bd3cca8af2fa90d22057b43c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b225901b306956e4ea0134c352f32314017edeaeb6422e735821593bceca94ff3dd104088b\"\n}\n],\n\"handshake_hash\": \"cf268a86c95a3e50f73788be20ce1ddc4aa62cf097d70c4b72f66d933143cf1f36133ef10c5e8ecda1761affd2f84baae6b115b40e2234cd862691ffeee24dc1\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445f6f6c2f86b61c8f74b542b2dea9b69f7d1f0b19d9c3115bb4f5ada5826e80ff8acd7695a316e63d7553a2e06f26c9ef12080b93b3bdc2a3dbc6e58deaeb4ecbba7f14dd5cc7e39f86b522edf900144cd710b0ee1f3e59d7ffb18c4a2a23ab7fa70595b0798e85e1\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843b18674c00828c43256d11c61eb96afc8dd5ce81bb2c53e30997acfc6d674f96563b5c093e06ec8029b25fdc93f802118f212758970ab37f88ac6ce9a1d8b3c5973daa38bd5491dff957bc17a5ae46c93a683594961080549ad7676e5b45e8fbfeb34bf4a52f71b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dd7459dbf81e3265c98588964f8bf0c7d5575e3c83afa0f59562bd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9392fcf632746c3d24439cc0527a3ac9d00043fe83a91754977c48\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d328988ca38afdb7b2fbb05fee4c4acaa04e6012ff4f00df3f9988b9a117ed9fa2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5b17cbc393a2760d0f633da68ec0d9e0539f22de31ad95f328478e2863296f6c583ecae8b6\"\n}\n],\n\"handshake_hash\": \"cfd5bcd56f4aaa56cb8cfaf7340ddd5cd8621cdda4562fc77a9f3862b8f9c17f\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fb1afc0746f709fb376ba5db76b19df96f14ed02fc2d5bbb7802d2b59b8b9306e45080298a47d6f0a78f9a752b68b0873bf50c6bf1e5519c092b38f61365d86cd8b566d24dcd583180600d85e1090ed1f5e29d1a663e170677b9544ad297bceba3a666fcacfb1264\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884310800d9eca178fbd398d66f86e6a4d0058f7bcdc2ed9db557da53d448487ce165c50b72234470430aa2d9b5a9e159ed6deeb3b011e7451e21b25cd048e785899bac1981c76da53ba25748c1cf274e41dfe1227d26cd5060e2c5df08be6629b94eb7f6922c04cdf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5ddda846e0b3c85a74b9661af1582e854741ede6c312ee46231e8f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"44bb97751589cc59e634d630450f6d64a15853a0393e5d098c4f07\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1ec471b062f30b1188d233068dd7ada8510c6d3685913855b9025509ecdef182eb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bfa6501411a506f360ad2ebada062e46f54b1af3dd94e8b1221da68efab196a788eca9a2ef\"\n}\n],\n\"handshake_hash\": \"97da10afae5e345bb8a764a97cce136a66fd474133d14137e581f36cf2980c60b16bdabbe22e295b52a5063af6fff2fa0358f307080c72ca0964aa412705877f\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447c97bac9a9410e0fb2daa98872905d351aab710e566b1fce777cefa02e424b0523be8ba81c0939325a1d84dc89094734ed9fe0affb4b461e933009d27251efd0dc5a4edbd9041f08bf6dd1b4a5fa08c6171502e921d35199504348d1ccab9abec258512858e54642e95e2b9bea57f88b6dca3e513ba70fd4a1ce7755139868fd3d9133de4e884a94b0e80a8a98cb9db540b74b2371f4273b62e7c5057f604ee21a9fe731efab239e61a7c6fce064990e6aee9d5c7028ab03624d51741605f325e67547791cef5b2c7eab4806153c5b5579c7f610989de1e6f83ac365770fc8149c50a62543b56577c63fa2df8e74fc4f5fc3ec79bfda578d2a4a5f50842b773bea1c0ab5f9ed3f9219d56f6b5f4794329a83962e71f0231da52b4eab83dd780e1b07cbd21a3ba0b99fda6b8416134ac9f47a26d2ba076fddc5ce44101ff1dd7f22d4783205b225df8df0a0131f5422d1c57f376dd4a728f43d2bd9ca537341fc0bd3ead5c2daae2c5c0cb144d7df9fdecfe3adfd2d80aa5ee90315e685bb8eebfc1889c0f1181b469e80bc670dc32aa4309783868b510a36f27957fd90fc3280fc6776a2c651001af0875f2d7fa77d2f5afe64d97564a653abc2b2ce096049a6cd235ed958fc4fa2b4f628028a5d1c6a2c32c7d3a03b52db041cc0603c97c732cfeaa4361d1b3c884c8e2f6abc2bb874006c6d128576a9d759ef695bc1ceb69e9aac75d488041e7775769951a2a16341e3d7a93158734ae9dac925eadb56e8bb7a290d731509a0982974ca0516e8233ebb4a5a0853583627e5debfa97243a1e6511c61f0198f1bbf1d7300e1add4dce77cc5fd67b21963d9caabd79af1ec722d0f26e20ca9cd88608b3329a8f146bbf2161c9a5f2154a7c9c275cbc54b17d0e479e08cb0fbcf0c6f5cb6685a4581c00437d11ddde82a5398db156506425633419f227c5b4d377dfd168ff1d5bd4022b1c81b6a88a7882bb7c971f9b1e1bb60e6342d834cbe20fc9eb189a06d93b938e428abd0ee26c91600cf5c44d4ba919243c9daf40475a1fc0c0f745e1870b84c1105154052b5a208064576f626cd4da79fc5bed6af9abe480251e450daf001d585d68448d48d046d3b75cbbf7208d5b3b507b62ec0f7e00be80e23cd665e8506fc85a196bb51311f3ea6f9f0d709a8de8b9683062ad1f0c432a8c91532b6bc78b40dbca520e9b079b200d825ff55ea38af0241a81b6dd3d9b5cc6d90b634714a5d957ead9ca980827bf83fdfe767f42b152e243cb0ae3ee1e75a6afa7fdcc95b700ec9348b6245ebb4dddb906254903dc5fcb9e70ca4658d9121adfc83b0246474e6a2a86d51ce8d00037427e5919ebfdff6a1acda2533047650b356f2e21f60e362bf5fd9e9f8e709415664482df8140b1a700d895aa4485716a90837cbdc2a968fdb5912946b3562cbf14281ff5d8632f262dcd6c5c37168e7cd9e8e89567918e8e1ea45aeadea24a98021d99b12ee6b83612ecd8e589865378adb89140299beb9ad518085a8ac6b76c8fc4be2e46660d5ca7bad00bac93eed50bce8be99b00223c7084d1f53f48a5bc5bd7671020f00fcf02fd8aaa89c5235aa67063a621e354d05dfd3de69ad2b8248c53c2e43a3e661917e75138d9e23cbaf65244c5babeabb9f201b80f802b23b34446a64a33e474a493a43a0e91b3aec61c82fbef9f5a9280a0775e362a925c5bb32579950ff757bce5e9c9e3bb96ae4c00786e243eb143372006e9c49525e62be411eaf9596572e5ded56e8b552e5c37a09e87185d35ce38b65feeeb0a46b64bd19181fc772e3748c0744e7a95cacf632ba0e000acb176bdca2ae9fd99c747c67b18662f981049d913ea7f6758221face6848e1d1ed35c66d0aaa4d5839dcb83a0d8cc0c67cda18e87ecada7eb9f174e2bed47a5661021ba99399b1b04ebdf9f1ac3211e4160f7b0e59d05f041702454bc8f8d36c4f4698c9275b19602df38d6deef3c878390c4f236e37d52dee75393bc2ad9899f4c3b5a7330bf0159d3e2dcdc085e03f2dfe6eeb8655cd5ffe6b442a77980f3d50ec28a5c7bff694b03515be7b33a59f367b349f88301737e0de748991c1f5c762863cd17a39a24a498bea9c1b5c398e09814505561eddbe643b3787d9f330f4310770fbc0a98e8210b79e35a8bdd3a7c4e0f9f37d9df1c8f9d811c49f91e8f99c697bf7d8dfad191e250f1101b667f74ecc76ccced47abd6f61e8378a8fd4b167dfbdeebc954e054b30821751d8622d06611ca43e321ecf099cdf1a9a190a0c38f6afea3ac74233dc53d1848fbd685900b61d819e9e771eb87061c1000fe9d644db4abb1ec91c6ab4c5b255a97f8ab673b324fb369e1e771c067000959bd46943d0413b23b90ee27fd7e1421dbb27efe9496e2be141fc51de9399362acecb7b1cc5dd3fa6f82933f0ce98a14471e114563ade9279d1b7342dea307cb9c2e27e64258896944cd7d66eac5a3fa1bc89ea1bcefe293c0ec306ca366a1cf6ab94624196fc3565153a6857eb8d548344fd1bc7529d5038a6acf348852b617927a59957bbc1ecfdf0db2249170a62e0de4379e20f0aea56a389674c211e0d4af4301e21395fa17c1586b3f0e35fe3125b2d19489ba2bffdd73eb543f722cbf7bf367dfa04\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438adf46ac85881387d0bef7fad01a951a63e6a66d558eeb73c67b1a9e2eee9824c2d360b2d39b52e838da826e6330dd11e4d7753d3d531fc2aecf0b66ea66268bc0131bca95bf68ab85d42ec01cceb5d28cf8f65a9d7591b4743d9887063ac6690780bd80a2d623d71ad0cf7e05f738a185076eb3518bc335c8732b0329368793d3f75f53bc52465df16563d1436bfe626ddb701d800c538d637573c5fa3a86c95d07ed1de3b0ac25edb3f71cb0e248b8eaabe214a5e6226e5225a0ad8531335140cf517f18a2edc47c8d7cadef68c1bb98e09f282f1d6f0cb04d04b9ed88c91ad4fe1cfc4dc706f83b0a1a7e89cde8d884f92874d4a360b75fd6de7d33ed8dd3a212e50e3fe98fdac679813b57873995d4f9dc06a0678c97c739ceec059a6645ed54e556faacef265a64c4be0ccfb751f6915197bb9afb8b8813388eae321f17d0bcb762e457d523d2683440c272ad86e6d0792a32d62e8ac4056349ffaa23bed0576d1249132fb3f340532e6f5080418bef3d03ee9f2d0a6cc362b7ad7473dfd51f2d8583812b0321248af0bbad48e5bf29c65938481c7717979e98ec50d1be3da6360ebda3ba4851c6580e43548f935cb427ee0a9a3a2d154b1ba1f10224f52268981194fc8d8a86809d8c8d6a0f1bddee09fae367adf0c6edd6563a4224c8a91609ba3faccd2a13565a1d5fa06bb1f355e116839fcd2284d28e9f3ba12deaa69b8bb9ae580cf813fc2cc85dfad1248dcf5d4085794b6ea64c52f916533d4574a7b9a5c66140a47e4e3487f1249ce481c2ef77b2aa353065f361835a36ed65d61e151e62b9dc979b9654b77e1be0956f27565fea443a2e7069a30ce137acc46e4f2f9dda4cf3f6d620ac6eb6feb91f3be0399cd603eb6446d446a803f7c706fbcfb8d21ce1e384b68cde1b3f3610dc8104ed7f54463ab58d7e11d35595955fe6ffcb81e99570da79e3dad117ef2a86f878c9599b3e9ad3f0f3f13470ab9ac5187c7e7a3f54172b379ecf4ac476990c83c0be323d0fd38a92067822fe64507327abf0704fa167e4d2c9e964f96939dd0746160fb20b92c15d418e7be0465fb26514f8ac82459fcd5b4e5fd0c1dfc4d2b6f7fff90292e7a0dfcf477338c04ea7f6d611454afed143d353dcedf1882093484205dd63d50905e38fe550c6c9ba3295307195ecd6b58881a5eb6fc46fcf352b0aa5b41b708d5d1ec89be6f89fb250f7c6352d05326f3e819235d6ca0272094c161a11384be3b8032c3654468beb9cd6578fd9a8544f5915ace8481e32e918ca4fcfa17d99d591f690bc2119dc9283e911a5a2b781ee1fa565e7b9a00af3a693bb37350cb7cc2cb576b7a66a79a10976c3ab757cb7a9da0ec3efc4b9407a20029d76f17f47f8b07ec62fb28b2234765ebfcfead3d99a5c9f6545fd1ef900eecfc73999f1ed57305784eee1601a62c6b821ff4233faeead28dc0f976f36f21f3304f1eb6187ed950105c4991485155f794a4d31eac8624eade21f9e63564be767a4fee2a3a892337c07d5331fdde3500a5c52eba1f254c01614f1bcd2a56202020e566ea272f5bc5b55564fed649a779da9a2fcc9a3715af986dec5e2bd3bda709b909ee2308d676b8db8e665ebd60bad31956c1fe7b6f4176e9cf0f1349bb7d9ae73b546ce94139b170150dee0e64a22e235ee09a2a152e23181ce24ac6efabac1e3f5ef599423ab22eb4b3addd2b471ac1c40792175ef35129754d97b1b80aaa87604820d61e954577e0dffce11bafb8a60b8cc3081a420dc9d34dff7691fe74a1f7a3218174c5bd910d88a1040b46c1e624cf4a7ae3f1e425110d919cbef04f396da19bdaf859cf9facad361cea58b8fc91dd25874ffc0870e315ac75daba49cb1fba76afb4f30edd88a761af0ad16dca364e17e652c587570c78e731dedc70971da5c40d0130ab9b3896849840acf1f7ccc57fda951357d6cdd691eeb856bc9db1d0bd8059b617693b511ad730980851ae1e00fe9ffc536251a4cee070bbaaf881fada54be31af92a58cdc54fdb48fd7c3bbda6010e9551effe3b8f97ad2c58d45129bf31646b00a5bfb3370e93468c35e8ee47082a647807f8936b6adf5517d74bc3fde528bb5c15ae95d9c6663d5b4ed6f6ff425bfd246926d8174cc5fff06dd6a08c8d6e7ad04fe158be4dfc39e5c1165eef15a4c8dd0b83ed74ea06dd0711efaba57b2aeb12923b271d931468d097a6efbdb41a7b7da563daab598f5cc893afb65db8e9b9dcac4cd3fe3813cd3a13fbba2875a0ce4d79b14c0f1b69f83c66d7b4c4bbc0a099bb242e86b61b4f06a88f2f07aaa32d894ed5bb5e9d8c4b0dfd79f774a1b267f9f621177913dd429847f146cdb64e8465e39718bbf6228da7b3ebc6d1c57495a94cd8bdf0bcd386b6dec5939f3db4db82add92757892a2d30d8f078d017d6e80b0f3e481e4ab063d390be156998df46476b825c25a210f1fff8ecf4e8d5f17b827cfdbacbaf8751d4bc114c76606b6a04e6b03642a0e651f49bedba1e4cbc9a50c86632d32c1c9311ed600a232aacfa46eafe9e2dd00b887a1e0ec6a2913ee72cca0147a5a3ac4b8c689f633c8ee77c7010dd1d95d3f5a770e180cf969db094b1e974d422e48950c843465f2b4c12e9349a1dfdf72ebacb94ec662b1645abfd2db40180b057fd8712aa06b95c43278623a26916e259fce5bd078e6706e9910b9e72cbdd54fd15bbc79b9d530251b495f3bfe60960af3fec8bb7361c11ea43e5e9f2522ec52d896d6f3f5a8c3f0d48fe94d2156ac0d1f47bcc27d04cc890244794a294d30716cc43646a89b8527b253e6ab8f00119a079390ac2892f8fe6309ef534d1dbd5e048c5988e39fe05448b9d1e37b34f87d0e6501583b437c5d4262292e527bcd977ff36c816a74c252a3a47e306f2eae018d06f4af6e78a74e6122034045652c08a946872852a8aea984d69ea0533bd2244\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"73cb91052e040417bfb8591120db188bb0c6f2eb1bed86fb94e798\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"702a9731fe577d57d25ecba76878e0dca8dca53c0e8ec72847a35a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3838aa726a41a87cedb55b5859eae1a23b71697c7ea64f5ac40bddb16172d769a9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"451c2258af5b16825e022723116d3e05b45fb34548f6204f4a5f08d73ec6dda1632108fd05\"\n}\n],\n\"handshake_hash\": \"8fbd41663ba7c4a8577bdf895050f20805d5cb08b326ec70a769f8ad6d3e1e2b\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449cd836818faa5ce9ce4ec07af9abe6e181b8a52a061478215b1e7531d3088ef963c3bbbbb88a9a1512b134f233442ec9c35db8ca551d1c945d101c58f4ee5159bcd72849ae1cfbd57fdd7be52133149b03b3bff4a6bf42eeab85902bc49d32ae54217f58b3a308b47034cb3ac392df0ee9f6e869c0c147dd5d8a8b095ba6b55f586128866c7a9f5bce363b30b174741d3998b89fa553a49c3cb7c18784291addd0bc4a768de56b38a7b9d3541948df772e634953eb5378d8119950e553e1a841ca1da8504207f32f44e2eb0a81a01bb5c1edfe047b9ab77e41bf6ec7c737b77ca00aa547b55db67050921f4abf5e5742eb1dfe7c9631392aae8c8831a043e8e8bef4882a8a8d049a41f2291350b58b327a984ce97ce07208a9702db3e2393d4b39f39177148beedb20815c688eb0697be7816f24a8871ad1aca2c33eb1b2c20db32797a3592d145c543c5bf5b6699c9bdccdac9d96d623c054f2a8d1ab0d50ad19f57af0fa100c54227d759cbf2d9180ddae60c0ab54acba1117965347455dbfb0627cf0992b234c1fa31580fead34d0a042e18bcb51bb82b05021efc25ec0b06a79987eae97de524e60258189e7ca59cf698ec3adab697ca3bbd7fe30e0943825f1b05a725d82abff91c120d520aa1f46067f1bd2254c04c7d1a60e4ae8ea960d77c837be8338e603b89a7ff18b395f88780a33e0007a71c6269c5b3d69b2a2526e39f59b66f9d82cf2446d78c1c43d8b4eea7422206a96e6306d2a9360f0b224d459049d12c34cdf9e22f06dc81b50c3e8841b3751ed5343f82b80f490fccf700785745858df352153bc5266031738da965b2e70d30d37ad2fa996f55203d9f7a2ee4df9810707aa3a69a4eb0a8e1adb521f451c781fae65ff4d57a7655223ce599e22bb6c969afc7b95c079349d3c5ea357de2a40f1fccf6eb562f217879ee7c06924ac246dcaa5809047245d67be740372c9da0965532f8cc43f561360f81ca9d113fe47b5f5fca5b24bc95044e6311da293cd95e8c57034d1a9da541703ca34c6132f3267ef45565ba1b3adeb3ec575143270413c3416d67eba8944b4718cbc80293c36f1ea07eb41bc66ba5d53a8e2c23bfd810c6fa7d5dde45ffddcfc33a57e28b9f14808181122857a704a5b90f22296b34340a4e93a3c35eac7dc81fc46e909fdec91d080a7995ed961d4b3e09fdeb0df2b66a0f6cefe180bb455461d354c9138a42405abfa43a853797205fc90187293a25b7433a8cd137c79d10b3ecc95e0219e512ae6be3591a3f4d3b5122dc09c925842ace58b781d1d5ce89db177c0884146a46d0fcc48867999fcfe8b641ba811d20602c8b6fe8235abb8f90e140a42fadc7d3f4bbbf71c55fdec6aa0f5151c8011eb266484854b4dcbee17d842c53ba0d069be884f3c5e0d21eca031c72c71f7f5cb116c2cdb827aec7c9669cbebae43a8ee322cfc0501be745d8a8d9018c880862d1c22f981521b20bee9de6dea953ffc66af885d84865a86b24108672d5467a9f622a6b058936a675e088ab0b54d2646f17fc65bbc78af496540428e0bf53edca1a2ef295e7bc10f03b0a7794c5ea3566a9026f98a89d34b0d94b118a89cebce0e90b0e269974d409719582faa3ac67eb04fb0126d5d3bd4885f374dc996750ab9b8966975b7bc92fbaf629975cd4db7e40233e2faef5e5b0c1a78b47d990bfc47e4b9d2c9cb47d782656f717c14331c90f9b6e50cdbf567a4276cf77c8f895ac977cfdaa68c9cedb12b54a5dfbbaa79397f8e426e33862dd9b3e17114afe650dadc65a0c128498ce214b67266644c3e542b2ca047f5edba8167ff594033db471d387cb77535fad410eefa2293709655026ba58d642a7f837f5031211a6ffea98f681aad0318ca8f86b483f0e61dc0ff527943aa6b053448d4fab1603e35221654f303dcc7d3e657b340bb7991e48ac3497e5da7833e1e794a213721066ba6375185622c3c95288eda77ff08df06713dbbc3187599694ffa54de0bf3c630d65a2267630e1de03c533977331aa3c65833f3562f315c34b1549a4f768988680dea26d14142edcbe19a11af944468cbabe13b07d193441a154c38bc362e6de1fb0e9ee0fca4ffcdda1b111b8b0e9fc8b52cba865ef1c7aa869d2aec7bffa0b1592e7a5b16231216ed8dc086b23febaf95c85e5c9339838f3eab44f773e458e8c9a05302485bc0bfb7435da68910eae7ba7b33619feca14b5e2bf4a3310badf0f0fa7bbadc265accc13070165cb23c480925d81171ed5feba543d9e39ebfff446edb9c98d78e1fcb50df07d8afedac94c30cc4f4cf2c592975fc2bb7516ced69dbb32c67c606bdfc9467d2b869654170f417b22d103ddb2b704a2e7288cc758de0e859be7e10fa3795beb9417ba3f7b132e1bc7508f14c06604c776b33b564a4d2d58ccc6a3a128f9083cef7e20f96aafd44b0318f4fd227a84c4b2f62a573cde1de5bdf9c3091a914804676e4ef3d1c3da7cf924efbb0bf0c6a72b6659b23d84e58583e427c72e60b1ac5c283b1fee48c75c1be0ed6724679e7a3bcf8d0412d5d385b29dcea80af1b7a504695257b9c337bd66398d1158893f90f8d85aa0cf9383f75d8cdaba64c3c4451896b0bb560f71bb49a28c6ba7883453d0f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433a6f7dd00a974e6265aaf6355a87e43cd12898153c2bd6798858ba5a44acef49da2107806f734f47cd5485c9402eb4b3ef06a54beb12647fc6b3298a8fc9c34ad8b480a17f4ddebc5d59de3bb468e5d4d1ad521b200d40586158d2700c0aa0fc62dbe8ac5fad35cc47aa9039a82d86bb24cb6b833a2c88d66a4463b51b813795e31821d508a22c17533a50e7a20d9e6214b76804028f6976916c1db4c5079cf46b86c1b4e329d7afc2c0cf9abb8083c0191056a005298b036d9942302396e762374c9909f9106ec2ab07007d1eff452e1429eac83cb1ea7b8faddf70effda33327309887a3f79b9d07ac2feac200c4c6bdce915cb19c3573a73265e47b6bc54ed3b27fd01c522aaec3c8bf74388fc8d808a388a2934b9a7e2be918fab836cf9b68af65ae3e26d88303935e0a083406495d5e603522903aef51341c78902e714964cee55c758891dc4200f09f9784b3b9fbfe3bb1c594b109c14ecaf6d359e43774bc21e65373bbef7ec32f6c3c6f9e9ce6b7631a92a4cd08758fe3df8cf43ffa7dcb25d7835202164fce55567103031543c8a88866059b9aef9a000cbe0644136a9cd80fbde84b08ee171f3d8099fe8ca5785001d61eade50312a0eccc38ec5a1c45b044df92b0f6c41eba9ad5cff9ce6ba5c26947845f759a84685f64ebb857a285ab4388451f23f647df7e7eb133b36a9f6855fea4fd3c5468ac11faeba63822c45a2c453149c295892baead91d09608a897318988ab9e379e80511506986a71b10aa524d599392ba0a988165b8b4cd2ba175022b7d7d0c2023abb6504895a9c1f65c7e6a7b5a83f047cf5d31573bb12f517ddbabff3bad4f80dffe9e29e110777de920f8e2a1b8a00cde13854343c43a2e864a72f448d413a059513eb95fdc9bbdcb67e34db1dbcab720f548538b56e8b07526882e63e00d610965dc5c56d6af1d24a3900878d9f30ce81abc8be58480be0e7925a16b91fd089f53ff8d80e11d64bd7e13f1e98cd12049b977cd63742f5c4e7ebe3302ac3a2883689cc6dc923ae495feaa2258e387575211e24572b748cd03b9bebe983d9e5b7ff1186ad5954463fc6380c8c9c889dc3c4d0ca1e1f608187dff1d2e6b2c415f370242003e2a2ed05741e1dfc8563747235893f8cf63120d35d70968bb576f5bda41b176729d762c30ed2c28973ecf7d5b5b9fce4681470a68c2df62cda2a32aa935582204b4a4255886243da25e7b6665a914a47b2168e6395aa428c41d2bd202df5bbaf3a38aae923121cc371ba3b6c7a80d61b69cef32a944de2f6d6e1d691a86a058430a87127a0eec5d69493a22215ffe6bd49a64880ec529583512b35b4eafa01912c2d9c2cea02af311d002a4d7ebb0eaac4e66f60e9e8066f0552181569c786ac87cc22e8c20788c1318315f0211d78917d2024dfe36cd3b2fc037cb0af489b0fd7fa733dbda7555fe6e9526accb4ddd0684566c32632ffae916b08c76eb595973bceb5b2bba3d9194978f43557b5511478c8158783b1f6187d21f173b80e5936170a51868c5b45a4087ad241a411598417063692cdeaeb48bf39b15ac6676de79c38c380f005c503a7c48e8052dee1c895bba44909229039e7b2483f696c8b65b90da9d754974014859a2853288e10db99c9e3cd478192b703036bc790700d57b6b0717619411df6ddb93d86beb9ee7cd07f9de575003cda747c17d149f98ac9badbe9f1a999b0dda87e6eb53a85d7d9cd88b22b5b52bc92c0c0648bdc3668f3a4fd28a6e15417c1ff7ab688c36f3d4f5af04f8727d7862cfd0e9571d48353d9729052d7b7fcd9db504efc8b757d3093ad731e59e005e27b3a3c9b9bdba98d1141119be02c0c9482112606d4fa20c2f71933ce79fc8ffeeb3554b26cd2db5b0f54431ed0fac2ae0971cbe386e5405ffdc977bf30f0de0e2d355fb2b1b821f277b872131b02745be8c0b2c32baeb5334e060ef26986043f6ef12d5e3ceffe318c28b94fc6301743f600dd7691c6783ea9279b5fb60f9dc55ce902c32509f9b98b23a83544be5cd611ef9f15dcedd45d8fe3786c950e9b6f012c7c4255465db654373dfaf57f150ff01237bd8e8ced1d96bae839e02ca43ac06d128e439d5d1da9d7c243031fa6213c4eb992a3efd2ada4b0c501eb6a01265ca0eb2884da6baf6d81816852614a7adc0eb082d25b88260f045be58d12af62a592d8dc7836756d88b191b8a1d0af34bd0d99f4c34b862f56d0597dfefcf1187862988ed5002c424e6973fba2839eb5a3d46aa081a3a0c780ede11fd35c64ae74b86958ae5dffa5a37a633131dc4c1d09ad582d826ca7e2ef250fc380ae48281a1580f0353275d3f09a899e6464f9b80564164bc93ee305678fe208b41170cd3c256a1a6074cc21b6195454d6e282bd6f9ea5e8ab6d615defcfc16d1573aa28ef80df757094917eeb4d13d34fe672ffdd514244cf9e7c7d089bca74e88ad01aca76f1a7b752cda873b70b3144c340e3a8cf3a3c2e3c889d305411b6d21f08dbdb9feacdea428d01801e96f18a9e7419fa18b8f4472aa947f5e49379a58d6e7518aeaa560e3a79f8a7c50dc1d52755bae6d9d42322da68004ac53c2ee25edf9040fd66070f0efac05e76f428fed5535f9caf431d50c4e5029f684c65e2ebf1b85fc185b5d24d65c1adff8938ef54ec70507da1b66cf7911d185f765a52da718bff9216adbb15f5266c5a120d93010a11453cbbb924ed81b805126b063024eb8ea62a406fa5771aaf651c07844c454f5e004b9e684666bb117ff7f4feb5fa32a3cf1c6ab3623f02901ef14c1a3a5123f3261996074c1d57f06d5cc76b7f03a5857f2e6460289bb517efb3174f795bdcc899e9deb37817e8e4787f9c4c348842c9e70c4917fa1482b11cb132e7383e9f55fdaebd6008a6dbdefe058b953aa58deb5520791a08070286e88be9f473feb08bf00c2a7e10df5dee5c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"049898472de80b24186e119a459168f4004940c336cac457e05285\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5ad130abd3701bf86e473621039cdeacc37ae4a6db50b4a9316aa1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"84905176476b1262ca5aa843c44706dc001893ffce67a09988d447ff055b4546c4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c79d6e4ae53c2f6f2dc0d2ec4b8026c0ff4d215497f672c92c53dd0394cc9bd5c321f2b205\"\n}\n],\n\"handshake_hash\": \"30f678c1207e52540299939cc0faee95a48d50a2a4d1276e981fa1622c9dfd8dbe65226e79d458415dc417b3d1560d2d0b55626cac03721faa3bf08eb83466a4\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cff2ec38c43befc45ae6820462d74e933807f429d826b027b2b9f72cdc3384f64e2010b508cc1b1ce6401018c4a2d82d34cd37cb5d7e5db8da02b3627a1ce06eee8ce1585a69b57bedee02224fa7ed23525a2eb5b883d0cfd0a1ae4f68419f4f579ddbd34af1b5ef761f6c1f01ea40e5f7defed08430274aaa63feb0fb1f061b0dbb6225f8885984befdcede75b0b125725decbf4f20d2bcf268a373fb99e4506c103622e288284ade128d5b5d1cbb8ca921cc216cca48d32f1223463872c3d0bb625da6043028293f9d09e949bf3086b9ac7bf88d44ac7ca81a11b4fbf4e16843d82f8e6608cc9bfc36f1a757dd24937a3f38bd89cc7feafaa61cbd9cfb5e67b12f52a8ae515c168fc4d10917354070da28d7ba6a57f208e212a3b21ec238d0e7cad4d19c7dba87b0a2f57fa7b458f3779a3f69e5383fbd23e6fc6cc9c41a9d61607aa476a90ba85b4ca4758df7dc57671c619e490d69ad58ae29da0f87184630fdfe5c4a517e9877bd96aabcfa7eb3320a9440ea053b44f47f2bfc7a7c374ec39e45cb3ad17ccd0f734108765e01240592172e1c4867fbbb7db40f8881da7f71267feca32f380921dccdbf4db16404655cf826ba197deb782f528918b15d61dfaf72829205e56c475ec382a9ae94f0c66824504029f8e19490b6d4f32b63492f8a8f93a5871650675c1f6a61eab7a2626c19ca46329d2277c6b6273f656f1e80337d8fe80b266547f88c84fbdb0c3b8a67a151abe78d0c9783a97535d0af5e9d04dce9baeffe6b732c27035b097b5e1d8865b00eb5845c661e243242486f394e68c619b4f96c2278801fe3a9e9c5707034e47e110c91aec12422677cfbfcab8a361c974318cedcb3873519dba70d83ec0222fcac898017524935a07b2828482b2348e7c5ace6ceac88ab33bc8478c45e62f25e2400baf6cc75f8f3ca681078d59937f7a27aeb12f7d2615c0542ca1bdfcd68d66cbdca9c2467fb0fa5a392a94b8a1107c90861a19c02c442e35479a3913fcba8ee043cc4cdae88979dbbda7d788ac52e85c1e8180fe1d306960047fea59ce78e8b3917e7841e8623fee81e5537dd96f210c83e82ab4eebce83a05c31cb4814a8dc49a3bda0b63387edad23fee76d4bcee5fbb033aeaf3f6c6b66fee1839d08df0913ebd9c3de2f49271d2806d1773a3955266ec64fbecc692c3aaf193d6620087f77639f2ee76323c7b56c779811fd8cdf644943af0aa78be69da6a0254268eb89c121e1156109c3e3d121e0acd5c409b5ba8a62ce27c441fff023660385ab93158a2a78accf3ea9009f8cc5c39a9a1e960060fee8c009934d7f271a628ae0692512596fb622d625f7d92d90f196bab1f816c1748d230d6e6512e30c7c6209367027cb8f7db2f149706986704d14888eb8bd65a330d5c447e2a314ba98d18b010cc6dbe7ead788f6515fa687470be8bffd1a95e525e7a4621ed87e26501f4d70a48b82e3734f13238661139277c78e624d9540b03fa7ba986ed5bae9ea4e8445d53f166bb7dfa1f54458a99c60309f5c5725d551381b009050fcfae92423205291a0d97082e11789538f1ff0d44fdb8f272e54131d2fb239ae2bd5fd5f8b5e7b696d62ba8848eb312480bf6544f7a5962a620e34b080fb543f494bc13ffc6b3986a47e9a0c7a97248b1f3438955d726aca3e9bb089a7aed58221462122d5744f6c2c42e255f0b9e5b3f550a54787552084c62a226ce82aeba39c0db153ac45bced2dd0f260335e01b62cfebf286ca01a024bb4db20070b1b60b769fe914d6ca5888dab528621405eb9bebcd3e6eb88e3f11733058bacdb0e57c90936c3982337f18857f512d1ccd56cea89c3f9bda714c3028b30986993358a35b83b672f89efba4cea41f59120d47abbb5203afeb75a1f742acf06ced896509ceb60a58320253023bdf1e67bb90016566a5b11df022cde1426142725b10d5d2990a017992ec04d1c8fd698b27acd9ec139be6c785f66006257971868a291e2f42ec623dc7c859726162d5464c28603cd5d8431eb0276e99c125fc3c0e5bf4d2b36f043aa7d04256ed479a45e83e5ff151e3ff87d12a8a6effd0e8e39570ea2f226cd4e9891c070e7c47517f915e838bd78a4e4672ae3200273c07fc2c9e1654dfbee67d5868e5a2b6e313f9e3d401b08db7797e62fd24299028281b2f8ebe1c3737d4ab7387f11c13986026b325e598318e6cde3aeca927b2d1c4b0dd8658eac49a5d16c642db9e203066a23d1194c73c57ce08e55802d3503ad612e5b40a67fccea76605c01f5281efbc9cecc738287a0259c7512737119faf0b3d2e91d2cd1ced2807628edb7c24c64d999972b8199e746a65bdae7842b4ca27197d692d61a8e176c0b4da87a92d55b069977163e64624bbaaabbda8dcac33a3d6331bf799b3268f03b428c991a7bf4677d8657b8b5d1fc0bd6ca81e5f26a20b06eb725d4f1dbbcc90f1a0bd8561d6ea545d362690416a1a2ea1ae8027591a8a9e8228d03f267453db37c595aae92618dc165c70445cc99729b06944e7d688c205d52ac510822a326f3517e78c9070b1c41d6795799853ce6ce2521cb7077b7d471135e0a1e6dc77b4820446c141c81bb6032bfd0b6fa2e8b33a8c84ed9abfb28d4819a0b64b178\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d02a66be4c07bf90d46e630e661063818c741f9a54e1ceed3081986a3c1b3cc521caaeb7e78b70893b492d0d8f0c51e7482e48663561fed980ce6bdfbc2b6dd295ba1c61311ed81428cb3a537d0316fd0a6ba2b7643994a68828de446e72a1a53ed3fb55b87e8197abf6c27cdc3f86017402541dd78cfe27e2745073898a59b899d24025ba370ba08267a65c074266aefa3d36f9efb1e8f6eafc5b5e13705124dfbc46519691e859ef9a3715faa9dbe8b33af5833a303e70a7080905345f043a4d3b884de8cfffb394b4c654b1d5671da2f8462655ef8204a9e509e4d36a09084b85a24ba2e533d699615da508a86bfd60230b44af76dd9fb946fe15fc71807e8230c82676e854962ad090470958fdd5172f0215dcd7d2594d2d58d941318deb0bb4e600749139266744d2960dbb1d0daf5b4b8903a4a0171eb52599ca834886367475d33ac4bc66ba6587c037a56abcc089562f40f598474e051826476fac15a7e4da0c0c4f198bade3d8f318dda1721de44b1047ca359282e52775957c2149886f7a3636fcda8811b583dc91711d3cbce6fb4264827e5f8f1ff65d1be2f702677fdb9fc067f79719c78f5275d9cc2f412d72a45b6dd4c788dddafbe292c2f8661a7e9c3ea2a3551d192b2d2e8f9a475603babee19a547bccef635b6e43e27c69c0d9c54317e700fb80f51551a7b0b32d2d3a3520caf15d769b411b95a43efa1c95b0595ebeb38ef2f8ae2ddc94548817c2a6ec68970dfa0974a34ee2525b0f39bd1b4b4bc8c3106011126ccea5c39ac8182188c0cc24ebefcdace899d8a1e5a49dab0f4a8dacf9619049a4de99b21e52719ed97a735a8411cc7f22a6e4e2665fab9180551b1b6ce95ec1ca2f17042dc9745da3a832c6c37359f0d27b195d1e7d09cc4aacf0a6df16df2358675bba197ca72d4c676c83d639d299f219ed04f576b0b1ca41e447d26af55053215f6a72d19898b3581b62b261ca06605885558a9479acee17571dc688b63b09bd78b7c0d3abe872fe7ca27c9114f948fa8b248f2a6e76d53d4165a330aa64d9937678434f69485c5f47c2e3700afaa8ecd98076f9e9862f4115d57e6d8c195f91b786e81c7980218c5a280641ff4096d7a48e21acae778a6dc18b4e3eee93c88bbff9662c7fb90600402836415529a772a0b57d48dd6e2494f4712bacaa031ca86bf77949c1f86c71f676fad04e6af1b51e68f73cbc12964dbdcc02b7805823a810dff9c2f4e611490ed2a7c0473a33267010532aeaf714fd67bcd4bcd703d553724a614465b68417a079662ac30751ca99bb6489038e6a2f2693fcd36da6e5060a69af9a9957d6713ad122a3c20a5f1f482a19c8d99cf03438bf9cb089aebdeb8c53643fec51ecf872c8efb729e3625718f762494ac53d4564f60a948126eb3e467d42b6e2718dae0db78a5f310e6d4cc828e2eae991f0e7c2e865200da138f121e5f080b8aa727244dad2fc9658c1b09f40589cc75adc5cc7f8f213b61d47f7c344ec2c82a6897dad9a1c9275e301a174d6e1fa669971b7d8d335636180d8d2b41d4ab46ce2238d8db78584c61d5ed8d2212ffb4b5cd4295e65097a7efa28b5b75cdce9bd2738fb9897e9c5af5daec96d206cc931e154ba3cea4fd4d5e2a4a6afd3f4a0bed8654863d897b3265eadf91c9caef5352d6ca5dc7be527e0dacaa7749b0fcdc71e0b255b320d191dd629182759f4af48cc94c3163d62eed0f41c1698e5979ea2d54111bf4b7a957e4f907ee864b7a9572d4ca0fe192d70243f52cd8ea3abdbdeec6a5eb87f1a47810e34d57ae45be11e06fdbcfaa010d1d77e130aae689fc95b80b8ddcf70f51e82319337180c164f5a4a486b703ec712549f83affddeae03f58e754769fd4c7a1a8c955e8c10cd5dc43e04a3cab4e8608b80600011b573d8653104360d4cb3af1dec1fff7969ac578d936af18913363e35005ea52a3229df2d8c2f1a5220fd0828ca2f3f20ebe2fa0b313af0c23e5385e3f478647f81acc7fc2170fe688f0df881844458ab0a60103b7a48d74c8202627411f6fb9ca6f273185016628b137fa9cd204525ae09793b9f62ed1211264ab152a13bd50c7e5b32a811195a29c7d9603e80e8f6b791f93e0c8acf1f8864d1aca6f5ddd1382b792dd372283676b95786f76bdac60388ee2ae2196f5c6c2ef64b4b12b293e7574c78957ffbcf4dd823ba122cd2aaaa965bd548504f3713e5b9f012de8de4a8c6bb30c3a0c23cfcdd9e202ef6a1e27bebe54d7b431b5b9a3bde6f25efa96d3ae7c21eedabbbc0a0f1a3e83595d81636e1724e1ffca0ffddad4d589c10ac3bb30302f327a67022fad1f5a6fb4742ebee3715f537706d72291b090d74d0216924c176fe450b5a94a9f4ee6763098a6c40d77a903ee7ac8fdb14361ed5fbd9003f7ffb39e9dad3af1b92669542157ee96ab50af8ae69936c1386865238abd1adb816d577769201a41cc686212ecc9c1bdb3fcecb1dbe779eacb11f85cb135d968b847636d6ab54ad2604ec4716aeb9e8f3216120b86719296ceadb9b58a581ba52222857e084ea3384aff02b961c5a09c6510aaa423bdd64616987ea50432d46977e0a632d75fcd84623e9203da0a15a4d62f96d82b0654120b4daf4a1bfbbd207b1f77563cefccd0ab6fe1e54c80c5d4daf2f27c5d24e892ebb300532564b2a2db848ccce37453f656a3007aa15f0e4fb2e8f09d986deb5396ea0da134c42b65c1dce9f826fdd89cb4a977c4ab0d6963e9e854b4cae2cbba2e7e112f009c352ed0331d1ad38f9d406c2830e83c905a9a1432fde29e931a46ad5330b50cba1e1b13406cd9f5dbd59ec6335c2d27be89cf4cd19d31fcdc1e63755605205b316ae2fb64cd0f1b83af9ea0cca9230b96c36f20fd3f5d967ad0ed2879a4f296a316ead9160a7f170cd633679d997515847c0e1ed42ac0638be6c5a2f07e1f4f6a68ea34a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"98607ce9748b1cba9ab1636f6110a54b82f1e5f3420451c14a3aae\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9262a788b1d62ac63997d6021af8681652ee6a1556681fc6f128aa\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a44a414095ac980ece1692ce21d128746a4308f75b7dc0e3b02a2645db8a636610\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1db4632c452201f4a5d60bc6c9390763bb99856cb683a3a60021eecb0664be1169295fdda3\"\n}\n],\n\"handshake_hash\": \"be0be261f2027373ff311edac62424d2531de8198f8639209ea1014a86c3539c\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446107a525d858ecd6d616727546cf8716f7086ef41dcaf0be5464f61bad7fc714caf02e9d20ab28861420a886506544d9165e9913d53691dbc4eca3c21c6fce2bc8ef521887ad9d9743454a7166033dee7503a19250b6bc9d46bb06bd1bbb800bb1b19e9780de4c9108bd15ffb22f6d9024137cde738e5081ca5f7e166af79cc616ea0918fe5eeef8fb0d43661091bb42b2f65459264763b98def635b0d5af2c73e03c781e6731a7cfa0b5f12fd9a689cc60014e59ec76e78b25e736ad58313c5dc214d58e2d65e75141c45805ee78666838134ac40042401252ef7545fb3e875f17bec594b1ffb4ebe8db93ad39e62b75dc5ac8bb39a98c67fd7d6cc7dad64b6066aa02e4f176595788ec43ed31ac06d2c1bb9f7a26ccd3ee1f81beddc882f5b6c778b34498e1da2e7718b993c702e77e07304e9ba2a32acd178d57483152ce2c45989414554be2cad5b93fdec950359ed2caee8a4d61031e127a4d16e13bce63e4dc1ca0c355a53dd7354bd41424d43b73754826ff3d969058d85c8bf3c8565c6d5df35bd9a454d2af9786e32bc0931ee24034df7073eafb44ec1e7e1e424c7127d2b9799346f1d9b39ac06fc0112a19db47ed40e202b7f2fabc8aa7ddfcd619c49301b4180c68407d088b6acff964558ef121efc9eebe7cfb29481832eb6815780a2e13f91a35584fc835201a5bcf007839827de362407ca4d9e90171fba5fd12ee76881f75933fbde942bf16fb5bd093764a2e985660cfa357db9a8420839016c32ba2adc4a920e12cd8fd2969aa1bff0e8c41a6b388f0bfd4dde9b7161525d79740602c69b5069c7da5bc22c27c054d82557254cb54889bdbeb55b29636a6c083f06c6491fc9d58727bc64ceed4be429beca0215968a17b75e83c2c278af3dd30da714da87546565dca802979231ebec527566f7fd6cbfd33f371054a566db62731e539e0be17c924ddea90db22c4a78ec70645283daa57fd0f401eb2714816c596b154234a7cb3c265b49169f834de76fbe4813a9e4a7a8fb411e0b59cb3a2df6ccaf8b86ac7c4e28075e4ad2ec5cd402c4c7b0cfc0da367167a9791900982a21b4a7f4eb59e250e2533a6033da05a1cbc9e76835cdec41d7762729154579e87a2c247ce1fc5ca7340a5231f7967430cc2c88626691ac3672367adf1568236dbbc4fc54b328b6c64aef871dd768f11cdf5bec4c0986610c82705dddfb19ab504dde3ed6aed6909dbbca666fec93d0194f8491fe6c0d6b0abfb8b782617a52df8cb5905b270b81bfc5ec97269b5e514d5a162048089508dc1f4be6421b412be6fcde087c4c6c09c0dd4386498710f702a1ce37ba31e6a49e3faebb277381675f304f756b350ba5407a767c1f4991b3d1bf8d9f7ff36357ed7f8a0776164aac65f19cb7f7f128b58aff5e259accdd0a17ed1679c65929a80331a7c1b5b63904d7c2bc75760b911a0b0259e3a3d25486fc22b44716fea2c43d3523c2c7159237fc285c9bdd9b29933cf5f15a07de24dd1a074d32cc03590b093068a4a8565d77c0f9b513bc2aea82e6aa913e85612030ef4d83c45753ef9ebbcee0e8bb99cf8fc60917463a52b41a69cf2b897523f723e9425639e460381a818c8ebe4dcbc20bf71735789956ac38b6e482c3f24a85e8767bdfcd7b63de9a05941cee8070f5a9bcda06990147259d8553e57e622349cf17525455e5c567dde2a47f0e790092dda3b29cbc779f05c9a3ecdc90696d7a1212f5db16165fd8af8dc03f1af560a2dfed1d0dd597752235da11cf7cd140eb33217469b0bbf389f0afcf9ced1ca1f5d20980f3067f317434f819350e0e5c218f2b3e8629f5948aa3c8d7be21f7bebcc11af1ffc43b6a0b448f5294aef192c93588b895685b92ecaa49c9a593ef13f6ad812ccf6009b678413c4695d1e8a7a1a7143a6a38cc530f0f06850d020d82e3a700454a31255e1b7bc4d81285141d73d541b8545a721ede84126d45e19876d0d6e521af72159cacc4b88b0612e02867588d8d7f42e1e63a5374e7d8338d83019a2f3b44f017eb4e230989bff57f9dcb6a4c908cb7069f769f4cacdbca48458beb7ff1daae8e37e7fdbafc455d8a03519ec8da69d35546d0a8f8ed87aff43d53551633df3d6017722cf10b9300ab0e34bc3566cbccff3028d4cf5b785c8c9a62027926da0e47c0a16341c376aac073f5a8a16c863c2ebc972b041e3c368105339fe4a1ec6d418bcd4464ade53d4c430d2d0e6a53ef52093df41ba3af5745b7adc4a6be22c59811dd2c7b44bef812b3c6f58d43bb1e9d787908a8c9c6595dbd7d1e80fcb6cf50d167473200f68f47c1023adb360e27254992d098315606b264a3e01a3be0b127b34e0b40f6d070d26ec0562209daf38d9e1004375cf7580e086380dc299a34b7891f2540c7c50fad37fa45841074cce6016aecf7310c03bcd69938ef3daf0111694dedab3b0559c77aa476cd6e538ee40cc1c8d153b6f3698f74627d30cdd368a1b27c1466611f07c1b5c0003846078af6aba7807785f16634a9c0df8d2e3cbd6564d999a24746ee805018cfa9a9e99615fae4effae13ef764f0d028b83cee6942a44d2a7396a0951e6fef127c8c75bcd68c8ed85f76dc73bb296e4a436d568d725d42254e6dbb5a9514\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fc082d620020602a3f70987f02b9eb803d59ebf1940642afae0221a065d291304dd9a0f3256086511f84feddf61d4df5a1e7e4d78c529c9ab0051f92bac1cec525babf4273ec4dd586f1514041cae8024d3714c9293dd4a20e07de61c46af91e5ac2f3d95d4bb0d22a460d56e44fc8e2e9f67f66b73654feb0071b6c46ae27a747f22c97fe19fef51c2220d2fa2630d97f3732daee6ebd9d806ef5e455e786b2b795679a659406e25282172a218c26e30b34354f1b264b00f01dbabe3aa75a615667399bbf058fb4394cd08041ff9d151d194dddd2f2f245c8a346cd5a77272d60ef7078c83a64fa3f4e952a05c01fc514a92828f516df546bc85594336b00a18606cc954de4fbd728b6705239744ed09906a59a017ec2bbfcaff1d46a931bce4360cf07a1a0e92fa4efc3be6723942a7d7f381a2c0ed0d89c3add68d3154f44c1f0f6d0c332fcf1266ccbdd2a43a877c49a81b99111bfe94b8c2607137191c05c3b94a1de83875ec5a4697a7dd0400f1042ae4b781d8e8ce96f332dc8444b3b720991fce49499cbaf52b6c06838c19c680dacab5b85a7d99a1a8be125b200133079e7e8e344d3199782cce7a4c2dfb426f9de728318b8fac7b5239034f8888ab142478fb2831d9f26d2cf6d2b73708708729675b406a9dc6385f524ffc121e6d68ea719c0ab881b76704368123ff56d391045088e8b8cfa94ae3c8f782f93de8fddc8c2d519c4526e8fbc137097aa64efbed7f652b220384bc8da3484a627f5b4d43e25f108a1ef1c3424c56432510af13658d13d94088747cf5a920140f27d7c927545daadbe8c58bad470bfc146b9242671105b6401d18a35907704e939879264cbcd0fe953235ff3d7b449b97815a352015cc0d8ad3a99ddff5f3e29e3c8577b4f03acfe36d3624f24bcc278276cc03feada88fa36290a952e2a2583631fd518f02b4e23610646d696e645a6223bd80947181fd41fecaeeace3534089b18b184e80bb933963c159a1329679f99bec0907ab56273b1b696a51eb80862919f7b14caed9d7d0da705f538f679bf4e17eaf29c374e528f99f449cdcef09276fa108fbb9ebddba07ecc128d237f722e4ac8e3f226f85a111745fdec65d2859302bf55c185e6b99ecbe451c4f02c33374c3214a42d0c854dd21c076ed0b3a1de461ae920131326a94ec9ccaf70cbd3d3bf3c94331f08d00eb2e5d4b43ec64d0344d7c2c913ea441cf203e2a11586f5e44a0f9bb89b0718ec5a3acbf5d0a4736ca66cbf807fa8b86049c3ad5112f00bf6ca3e63d360c61ea6f64163ad9be25d3671fedc2a172e0894fba62130fc7cf2d093c0bbc7435944b6330104f67ce2afd44cb12ff7ac46f1bf71f5f1d8d281023883df88348e8a2bd0224fe4f2116c598629381477bfa50445a394ab034b1fea7558b4b85ada4424c52a4ca856d29fac7fbc9f01a0ee9d0bbb13962566fc0571e9e9ef731caf3a7710d0709ef8a19e4b3d9701163b672caea667c3585a1433511f42a70853fc1af2642d44c7a0762a49c96772a28d0e5fbafde0133c3d2112e84590e470965973f23344455fceae2fe22a1ceff9ded49a4ad377f93e458da708a41ef21543c9c822491907c4e299c3964581c1b8ad310c0900ed3b67820274979417f55d98ff05590e98660b5101edbd153a8887441d09e098f9ce681f5d02ca73557460fd1549e209c67c7abb8cb3cc2ae55a6d36d50ae76c4eef4445900b6a50db99e8213ae6144147bb3a9fb22111aea4e931b0a61062d268f65ab4f9e67d2f7092a276e9ef80182f457e0a2a18bcd1914bb2303990dc6d7fc6777fe9c0723015a71b3b714c7c56b4b23792ab5d3278ff50f0e774a05e92affaab1ba6f6b92e9c09d3f51b2165237f8f95ecc848d8f132bc0674c9348f7084bc5d112714c00ae9c17b30647103829cf5b3164069d3bd2849a923297006a6692b9c3c4accedf94ad648e61aec0ef690eaad80448d8e6979638251532a40b92a6f994a74f7f69b313bd917824a6380fa2a10b8f05e61508993ed509018403ecb048b652fdc219ed45f80c386c81d4c614aaa954bf4c21fb0dad15b04efadd63c752fcba82e74e6b4c8d018af56b67959e1e30fe521d85f0b431a565051a6a8c149a8eb5e6278b2413941e832275703ac92436d9184e231c94d94b271e2caffc851664915bddfb348d1df71a81a27c42ea3c36d4a3130ce7b02cf8bdab934c59abff422e95d2cac78ce87e679aaa7c0d2477aa72ce398aff8a43e70ebce17f1afa994192b05258cc1d90b8ef10ac71e1c143967de1861f935391c433ad1c85b48020da3e911c249917228f9612ee517a55cb5cc93eace37357407e99ed91687f40ab38e89e51bac718baccfcb07490c2c0ab3b1794dae6c592bc022c8d9ddaacdea6646375436da6c04d8a6f09f4b1b6a925042287633927ecfccf7f49943877b2893a80aa72aef7dd168378faad7fd6f04407afe81537f6a94ad7842316f39b30ae6ba59312753379bd0cbf8c49480a169a8486950c6221998c811959b2b11fc7943360de95e103e5faed36d9e0a1d6ce31054d0d66a553e527783ebec21e794ca2add3a4267086d545f90b9d981a9133621b07a26ea37b200fa20fc5a53ebd672b1bf9281670541964a375c462c53d7dd7cd9615257a781a8b1b92dbcad98d2b2a40a4a97122db7829894398b4084fe92f9f6290b6676fcb3445606debcfde78d0de41d7da439295ca5f85e92b84276dc41142460e3f3c390240d7136590b31ff16c183ca3df6d8ac35ce666c951850cd0ef4e4a44e47dd64b1256f900830491818f1ded7e45c37b9d7e9e81a1b44eac5e4b09938cf762c5b66a03f78bb69de1c95b8a79107968c7eda71978c8069fba649f2e7450cb53f0cbb98aec01c88125a2a9515f30d5d98e7914188d80196fdb0ccf2b09b3f08c6e30170c956a3ed24a09b7db4c1fa26\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f94fd0d5da663d897b97be2761bc73b3dbd94c4ef3a538021e332a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fa570f3446a413ffc69f8356c23ceb6951a090c9f978b602ae8758\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fccf93f9b3fd021eb0a485e1b002e5835ea08e4a4f09344def7e6ee52b058fa337\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7df35b1ff7558ea322687c43bcfcdf658a77a3b7d5c203f3c9c64b5e7d25509d1af3ee49dc\"\n}\n],\n\"handshake_hash\": \"fb8ae6faf09bced862f214f091e3f472e012bad2db0cf730e8c3376e21467b273a8e8ee42cf00b9dce2dd447e56450c1daf52ef762026fedfa03ebd06a1435d5\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944aeca5bea449cbcf76450d09d460364818e610459ad1e18b8e741cb02b4f528fc16d2dc225b8c73c5fb7a807f61696427f92bcd2e6b9e693c03c0d61e68631ac4c1cafdd47721b0634f8b8079cfddf50f3384c2584c23d46de9ada9d9a615c9388cdda18185be333e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439dc05283c726356a3c45d5091e6f4cc2ae29379a2b00bde1ad8030f13c81a612bf534a1077a1ce4df2f79c2ac97872339fd1c02c5fd0f49947bbb7b58db137e4a0e063ba81f9fd964a07893b24ddad979d79750497d89667ded8f65d989cf0cd05fe4edf5fd837\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e5d2fdb6a7d3abee957e1037a067c986ed4ad16cac1bd8ad6a3ee0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f11655db4f8acd8e5a2bbe77199f0e5250ac6bd4bddf8853eb8e93\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c4a51bb4400fee62c2b3bdbbfd6897ec28f02c94450010258600e86e21c8462e7a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9a233f249bdf758837d992fa6f4cddad8f92e32bcbcd88901dffa54a1b975dfaf94d9e3fbd\"\n}\n],\n\"handshake_hash\": \"9f9fcbeb0d3cb382641e8e1cd20e2a9dd6a9a8e3486c148e1f7868c6b7b79154\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448588c3b9da63cdf8269ffd7d1743b941e739d8c60f75788859d370f50c8214614d623ca371388b5e09089cfe9ab195de2cb71b0b3f3eea14a3b4c2bad9a8e384d5e84306c46c1d5fb7aac66ff1a82d310da67d0d27c37d58998fd47e90f7674d897baaf0b8a67a1e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843fe8bb8dabeb5c71d1f91267b1514e23ab42212b615f26841a547fb1ea96393d0db0aaff56b1b547b8abaeff75b11c8bbfcbad3de6845547dbd19b4be3d1298b510ae68fcea792b5eb8371079878d880a59b997e4dfaf8884e52e7daaac8ad11e6eadce968d5473\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f06a8be06319a525bcd5d3ee3b051790a07b36da3d2210a96216de\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6db982b250e512b48f3c5059cf8064ed0415753843090eca994f4a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a12d770125993c80008a682773cea9c3804916b3e3e88c1f4f02c6307b3779e17e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d4a7eb51f8def09446c7c78396edfd60b8386cf5cf72a7f64bf13aad268296f11e39ad5987\"\n}\n],\n\"handshake_hash\": \"ea7172f221ea050763c0d80c644550c039d876bd2dc0c428eb7139417de7c909cdf221de6c3db8df4a82a89bd0deb860ac300d5f5884c3b59246d4edd98491ea\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794404425c08f8d2391874618bb725ef28962bf58a6cf0efd8b0ba0b3b5877a0cfbc383dd828d87581f6bddd6de923cf3f1e57122ebfdf2f729ab44e80c9010cc397e8fc9523c9303935fdea34b489ba8355c2493fcf8a7630ad0c05af6dda0b63758dc4c4893d28538d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cef02e2ec73cb56d51f80dfbc274d7fceb78769da9e7f4e98772ec4508e095af92d6c1dd560c8e49cb16175ce53e0f33ced5a43565ed1c2db2e34a474adf2c16e9f84bb1d3d8d79a4a8ab88a40668260c226ed82e93ef2f0c137351fcbf681dbe680ca5689f0b3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"855efc6c080c1c49fffce818d5f451a1a6709d25c6d26a21a6c09c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c0f2cfa08b4285dc6539b37569116eba8543fa85a82bd6743eaebd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b6eff7d271e5231ecdee627e19545c972fabc5b978bbda0dfb38143c3b49042fd7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"538d84b259ed16959511e6420d6a722603827d338dfd743cb58bfad81814785f242f4ff1bc\"\n}\n],\n\"handshake_hash\": \"ea71356836cfcdb4904011766b385751164d6a70f3e776dc4ae459127fea4ae9\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944769f56ef307711bc5cdd64ad4017422a77d76481997e93316844bb03e39e5ae1422bfb622167c6167ed701440d4cd4929ce317067ab5ba3d7368d619823b12e2a073a638ffebc222021024418f32e9aeba1d4179ca877ceb035ead95d2a2f634648fa23fe9aaf80f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d0bb78014ceac771678b4e74a16f8ee6243ba8e4b066f3fed60a9ad971b821a39bb65b6eb1e9187c733356299f27f627a33ccee17be564d666eec0ca3c67944fd39a6bebc6dbf80a8d10107ece74949c2f7f03f8f8dd700dcb96606348e3253ee542ac10d0486c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fca8e1a52cf2403963f35bbfdab9cbde301f90d4e429bdb6d2adfe\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"724b042064a31347e11892a7919a58474b2f6031f5836be27af7c1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"feaa7714381fb2dc0f6181702573def8f929dce0e62c77b901b552c7e8d2fe85b2\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a3340c6accbd07c88d08a893a852bac08a304009a78f88afe16e7de77c48ea1d517ffd7f9d\"\n}\n],\n\"handshake_hash\": \"973f2e09d87288dd03b4a88ec52e3bda09ecb9cece0471326bb100f0f7eca7b4c326421146fa84b7ec7e5a3d234d29a58fb5e969a57f0e16294e92a7e3d7edf1\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794476aed6129ba7a8e8f00062290e863381552d8e1d154095786795dcb9c1d927e4cb77b3960a20c13c289717759625179651a304a345e2ed68bf5b31ca50d95f39ba526c1cadf4cecaaa5a6551776709bb92efeca4bb34e11cfd0eacc187d79eac5a0fd9d21e396f9db8eafbb998709338d9cec89389e61026efbee443ab71a9021cd7165fe197b582be3a3cff6505fad53265718b9fe447991c0fae0aa7c6f433178702293a25ee486175867343a2f94f3aabf28b00036dcc8ae41eea7135c13c57841b5e5ed423002c2a4ecd4cc787ba8ea965b0dc133b8c232a123ad2a8b6dfe61154e90d63af6be05275b86c7d634823a3db27fd40f791d58239d75a957dfa932a2075dddcbf7faa40f6b9f2ed4a325655d79b779b148fc9b43c3d1f15fc3b7b2a1e86a4a7f649642f160facc6185accfea9a01c1856c4c07ad163983c9106030941d89daf7f00f37ed2c3b78cbe24c5374205ce78e243681720457adaa41fd03d1b3031d4953ba08bcb5e36c94f62b264b7e62bfae2d45cb6a2e30cf779128d55cb13e9a700a8b5e17080b7feb10c2125328d88cf164f0e3b5a9b6033f2c0f6d88c5367ca56a985323f5707075c94fdcebb60c2e18724bab49d5af972824115db3344bbf43d6a1c22d23280032ce53d5d66be29f22f95872c2c793224d0369bcf86702c669aac4d62a0a5070eea6dc2c6d42f444fa59f15ac7d0cb485529a2943a4b51b348957c59a0bd3847b94fd6ffd6f442c8526be5f1d6f93f01098da6243dacd1db561b968cd9de54a2ba2e57bcee161c54100f9a6982b407378966f36cc7105589995f6b9853f23d2555dc6ac7cd19461481bd9a112f9c005326785f3de072681eab38d92e54666c0d07da4c45ac80dbbd72a946efcb5edd3a89debb2cb35bcf9b03df23e5ec1cc0a790c2f708ccf0708171ead9547028854397b424fbf30f7f20f7c04b77b07494e275a0dfb07b2ce592a50a036571f757a958f6fbe4a241c317b66da7743cf755895b91ce721efeebc6fc35ed88190b1d28156812c10cbe8969ddbf72981465864d67605955581334511dd02f0fe207132d445a763bfba467193fd79a4e8462e435cb705405f1046af73c8076a453cd3c6045590085a9340bc74c96fc25791557a3660df5a2ec979a5365b4ee68ad84114173b6a46c1f60369ef172348c671c67bc7643ca41bd8c3768434c139677a27554a237852f32f264b701b78b9592bb53cdef73e12a936e96194aa2b4038375e50217f9dde334bfe5f927a21953deaa92661738e86b0a0f3eae4b3ad9d8da0225458478dbe9c4ace7c4d431a957e1ed6f876923cae9ef9d45063b6a1a57b561349c34131b5250bc289804025f1b291560e3d9f97c5e8b79a12ef9710a7c669932b29dcccc5309c4948ac46c0a2717a55d430e0b6e5ed6d6f8265775242a029fe1d3072bc6c133049fb79235181ec46c348493573b4cd55478fe6e6813fc9b164d2f76bd0dddff78e8da31ef96fd2616aa8c457fb647c508bf84e5ba3e76d95a89b28cf496eb7afa8e2fae700f70877cf82aa479c0aea7d67f1e8f88035d66b9df9d4bf67f186fc68e3fe6b0344238e120751200d8685ec6fe41395223c0be0dee669069913007b2adfa46a61a5ca9a759f6d0ad07e34b88d8e55c0fcfd51ec6603d733af1286b39326527ca507b9107e9d8bd841625feb8cfa428fb688406601b12da2c7e6c197bc7ccf67e22254c000ffc808bcc8175dfba57280a4509620a02c966f77b1548bfce4965132cd1f1708a9641414a6008f4f1087a1a4c902f33cf0039d57ab3cb84427bcd0ca3dbbceaacfeeb4b5de9bbf21c02755b603a44899de8669e413549736f7ba7db1c213e2bd7604769559223a784df96c8203a9be7ca3d7823f2d3e55f06308e01c1701d4e0f346f56e22b9d5530495503ad3492a56dfad8562c228c202aed671124a9b2aa105cb456a37e82d12ae3eb0b494491472ce29c6ef4bb07c5e58bb1348a9eaeb9680347d2656ba9a23c1dd71bd9e2a77efe1e80cfacc48d7bfce4b727e961639de91aa50a44a694b91d28637bbd7ea7761584e87dc4d771b9e7d9db5e4867005a3bc6bb32a97c09054b44ab10be3db0dd8af85c0824772cdb3595307c6943d098000875a21609ae63f563b57bff025d71a34d0e84be4243d95b1f9cfe0e5d5d349e619437fa39a90d302a2f176fb2c7713af3d203fc542ec1b67951b7e732c71002c0f2da207b62a193e47284b46af648b6086e2e2131d654d8d238d2f68531a5d3cbb4faee00210669d3e3380ccd1dd85ca12c5690f0328e5ac9f6cc69a443c4c7f66b59c5d59cda1a812fabeb6b8744f8b067d49b856ebd34bbe752ecc7bc2a0750055ff63ac062a770bdb063c9c03d2e0e2d49409e71c12c7b7c1fecce5827cfd0a4c7ac047123f7957a77026749b96c91d9b691575bcbd73b00f4cfeb4e910bc6a55409a3172530abf0b51c8792bc1dfb12c224aa78d0e936380915c38367951157114526e2301614a75938523b9f2965bcc554f0894dea90e15f52ab0a116b45de5552dd1e9a1aa343da7cfe4a71ed2496f157f7a7eda0766f1b428637a0c4f76a013f975bd5429c104cde23cf058e193ed6a65d830a840c937423a85de5ec4bf68c4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e3efb3c279abc30274de32d333435677db30e7f21ff68a51ef283fa3c7dd25533f8c169d76d49ab0696b942f08f365826ff832adf5f6e37812c91deaee15529b01a73cb21a7b62a50c8e0f97127dafe8260731480e4ac289a734d0d6d42a508cb94b75b85956d4d04a2c64c92efe8bf85012ebb40f41b57a50fa7a43428287ddce51a05fd2bec8a1a7bb391fa5117c91fcd48781d77ab7dfbaaab0fa77e6f79b317067b39c3e1014dacd2ec255058a485e274a37fef70c741038d9c7426b9f18a9df7b6421dcfa0d4cd108511899a21546ea709a9dbdb938325efff68bae2d35aa43591e7354fb8da47c24085ec9c5a7666fc0330093fccfe413be3bac0d13e99da5c7ccb2e05184a1f32ec7dac0df5cb06b05ecda8d0700cf5715d552a897aeee79587a728081c835d12e604ca6afd6974fbc59c73732035a16eb2d83e6c474094da4db7eac6cdda4b529529b60843b6464b5d1612da654eb500e634a3ef049e6501c866653847b7d22740d573fecf06be0d3203a3bf161654c36bef4f270290400669b4051db932cfaa9860c4571fc2a59fec0c3aafa629992d1ddb9e50877ac9ed1e4ac45190a16eaef55cbd01ff73104f2bb8f2cc54ebe3136c842ce806d7e3f3510989eb1f663d1605e858f15e199456245eac08f5676ccba5845ef402e57f5bad826d9759747f2bbbfef447fa7b84ea4fb3c70735ec620033d1fbdb3ff636c72f983eba8c1964ffe3aca623e563f4d2d08fc876c390e1df1e3c69450403ae55f17a1cb23a3c9b722ea47824452a827059e1e0e397e4c768f471c0d5accc6d07f1f46c0791d011666181c155500859e6b9dfa2bf4796716fdb4d08a3ea44e9b0425b735e7191cd3deb621591355d4d66cb2cd35540f2ef87acbb465e2a2fb6fc5bac8e5460a3d068bd63bdb2c0e61a3d45f6b7119c4eadd15353b5c3a57f13cf1ea61b0ab9d30742b997c0326e896ae8c11bfaafb68bf2d98818da68482ce799c177de0e639a1e945126785c3226c7ec07a5f34d9fc026a0ebd66260559c2a0fb86c0b4a89926ae0d432781a4467171b3d0e9b4103e173bca2a509e95d4a7e4057d25d1530a3cb9bd383f85d4df4974e9cbaaf8d5cf4c27bdcc1b16243e4d3a25912082423a4a85a8aa59e8bdf927a7001c811ea1acaa13d911a796e0f9ec612b4078df5a785e407aac960b41188206211899ca607c7344ae7cf21fa1556ccc0165f228a0422166661374d6bf82d18a65c10e9e35a2b4006728080906779b5cfc5a15da3ba1a464d5d15b5bf3b6ccdd6df92dac1e3d61e0b99a1788436f62d84e6f902a4237c6246298e4f9f1c7b9a70e108f7358ae71749d44efefe96f82abd9354ffcf6570e1ee0c231a4799d77edddeb4b35a3cbb5a324a126b26d93f95484f253ca262321d5ed775bdacf43e8238a79c30fb056b8ebf4edc72023ff7fc9110f825d9adf3b26d3a9626ea124d1d1a79e4e09a8ede192b9aecbe22dc75b87e1e3ee2936913c376c217a0fb971ae64b7bb4e0bc101e19d40a309c748b6b913079ff4c05456b273e809e63aab010884d28e058eac26ebb69ad94234016995f0e71942fde3afd238c9c6c282f0722db0d93a34c8bd342576163345d8eb29aab85ccc901331bd158e8ef0ae8065aa1bafccca72d51c8175baa4ee8040b38bdfdfde70bfa8340e97296b8accc82e921503bdcf1c6a87af09cc25cfdd1d30213850fdefd461a195a0ab98da3cdb6cac3abf0a0ea8f0c9c0b308279dc70865107f0e3b033c6a1a556c102050ad7bdb28af4045ac914ea5deafd7a4239704ab8dd06621cb05e44ddd0fe775efb30935f1d7ee807ef2e167045ad5605502bb741e01670c8b590180354c86b4ac345560833af838e10d67cce973c2d5af1bd12c3a9a1f37de1215446f7dbf57725b4043d5a651e709d35e47fcfe1a039b456aa034a3195670c3d28633602e48068fbff9e1b546065cacecd318fe7d8ce0154aa449b4dfd7d0edeca9749d3bb0a5794bf26966f73e20426d2fda4dc2ee9754e19276fe8818240946391a4b0b4f87568b74bb065c0666806c1bb5d9d73246694d1ddc857b8d594839857d3ba9f333476b266bb50c4fe25c9fd2548c0b4e301bd00b920cc7da9bf137a394afcd93941aa3f36049d98238bffd9fcf61d0c27371bcbd1ef95ab4eba5a5c1d6755f6c43c1de8f9f9247b1a62e2d544b4f7bd65234df6d8e7524c3f53f8a124fbf08d9c48ca0bb11fdbf87be712d14ac5eccee2fd395b3eb7381e8b4f6bc7ce03a5a130dcd657d6b94bc593df5c18d08cdb2cfbcd4ffc127802b2dad1901fa298007d9fb2c9ad30805adf46d955a4ab3b480d9f7e5599d1be7f383bf7e0b7f93ce2d39ff4e1eca2eb9041b8a90e65f6a783a2ec7140afbbd1c8a9e48a5b6fff1e95cfd85e009637406e1e2aa5494bd294fa30e6abaa3734cf59d39ee912f2a169a530408223c6044a030719d39b377b9d4320b592b6eed3d1636d1c1ed50c3dfcfb0a220ee85e04aee71a49a95014ec711e7b6a3ec4877210d3d67af33a70e74a51c75398a040f56e83109f15a842f042d79b8fd4f2dee07f404dbe3a86c3fc1ffa2e693cf8349f90a0bcf3f65079264f856392731850c1ba270b23a06323fdacb2430743baa7110ab25153a9fbbb594a52fb1f37795df8dd8af00b1b3f4f257a3be99b71f530602fcd9e6af715861c99e39b26480ac5a142a49cd9d29755831f974a50dab25842c0496a7b8ea40b0fda33227d6e8cd051bb294b288aff5dee3f7fd3347a48463b6fbeaae80fec02fa6fd3df9f8b5c37742c1bc9074648e8b72e89afad7496ef887e9e675f84a2cf9853b240198d6c4d7ea9aa47ac1f0bb89bc79ed21a8c6d60a8f9a7aed8e64df24a1e6299f19f57d1ddd2b711b1803ef8dcf569cccb052fd561ad9ad06010ac99aa623568f76ee0a5e71d58eb71fb2efd4051b223b528318b0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"339c0e02c8bdd92890d7c9d8161135a80305655b2a35040efca114\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1feaa30c7da16ef2579bc8aa8e63516e27896d3d80ae0a771a32d9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"13d16037f64b864d1f8bb5c10e314c362a6df6e52a2332d45a01663e26a0d865e1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4745cb3dee9157b0accfffbc13877574d4d50d58fb53dbb69c80109b22c0a64a6a6645d745\"\n}\n],\n\"handshake_hash\": \"4074e036129da0c0b2881d851e307fd8eed3676a0015ba41d4673543c31ae269\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794497ca613fd95bb29a7c8918fb7c856b7e521efde87fa56102b6d4dbf72d1a95a7a585cb4f17c88820b4dc328b1deaea1028025ea56f5e85844df26b910c9d16b6ae650db2a78501b611a1fc4afd8412966324e278f36a3754cd806d8dc2e71149eadc51289a79bab10dfddcf4569d85554927c06994fc2f997b8d46d3c5ddbe4269b8f21d606eac6cda25a80b49aa65bd0bfadb60035e45f09e0692cc6311d55a71db9051c849e5f464fbbe1b794921578ca8d7b2c37aa7c83d83d67978dfbaa6ddb76aa4652557152aeb56f1dc8023e7ea2f29fe7fd9a2296c42a45562018e2b3ed019e74ae7edfe43ea617c03468f8fe93ec37d9427c5c78bda6de6fd108a055c85b116cff90ad2f76fb6b347f1a09fa583ab938892a279e9a111f05068623b7fc43f699e84904756acc65301742f8022f44aecbad46e23ab831f08cdf8472dfde88b90c71fdad391d5672def962b9d398b98420992822b4cbf8a573f986e68301c7e654230a2a7d770b7f9ea7714f09146e93a7ef065d3e8966be1ccfe079a9d2175ff31eb9941af9315c4a5132f0dded20d3ed2e80663dc73cf463a13ea64489c270f7d09e00a62dd4bff79dbf6108f283866ddf48c0a45109d23f6edb22aec66ee767f25a5ac4257511aee7f92b634bc46c609752bc2e189b8fea8263b77eace112f55f4275516a4f835f1a12bc06d7ca38332e90627fdf69d0c4f7187ee9c3f34b6ed62d3753b60f4bef5b578fb84b1d039987c0eb0e3c248168a016a2676954355b419fb9abd88f233d7271bf7d5668d28f66d40c7979d6111a4e6a782a6990d0b8bd0f88caab70a4592c0453845d702c7e26feee88ea5cc9b1c6798a036c44c3b5db8d21ea924aaf8e8630967f95a44e2fe384407d0f9d17e735e01e18c5a0553b41b9b0dc494950f5d273987145c779e27cef11340cf6c6848acd756ef714a3310df5e82ee89f25f31308b90438380ce503346ab4f808fbbcea15f32c66a819de3d199eeb2a2ef9b53103d465f80630c5aeeb5757ac09f067b81579357f851fc501a0380aea8a44086fd73ead4ba4f3625f4c10c1aa8f873a86f1ade64855e3fe55ec06f2873b039c6760e8628de7d32a4ea0ecdc0b95832d86a70636930f740eb094c9dd81135e567ee452adcc72dfd87e55c4ee64f235b3b10c2f60ce7c091e3b559ebf8519e6e1ec46450223db8c2751883275162160b63b327da3872be72f0935725f4667a95d90ae4332140eaf93d41384069a0a80d5b1410553291736eeffa9a6386d7b704133d4300d027c0c0604199bddb352f6f95dc241b7bfa70e80715992cab0443e734b07d210a6f16812a3bdad48ad8a395ec37ad04980f094fa20b9fa44ea0eac9e128b00837141517ef6c540c6bfa611f7b7685872473706e4e096c8da4dd7f33e8bc8853cf6f9b9a7342e9d88a842b22140bd2f6d9b5d6749077c737404780bdf77a5e91a53c728d40b582a019ca8f7775221b8d167d0fcd72e0631764ccd77a84b2772ace772370c3074a019726d07ba1fcded1ecabd84ca900cb2181099f5d00bb1e78a001a4e68f68f35698fb558838605eebbe555e5f29ea46ace5d8647c0b090c2da868b86fd95e21b0efe28875dbcbf95499716328782a39cab54710cf477e9f91cacc1a73f22b9fe682c50c792893489e3f0290abbb6e2f56bd77cfd281455d49bb49baf0ebfc821769f23ea47fe74f5e8c95d05fd1e002676da652dccc8a8e687038173e07768e3de7fcece9ecfbc3300e5b058dda84bb823c42999ea7b6692ac79294eae167b421cef57e68e1e046ba6525ab1515f0b816ac5b4c0aea724d0e16c7c6072da9981fbcfef4ce4bcbea846be97e3a710ee98815976b0a065c916b6e16fcbbb6c882d156ebc7df77485699af7115e0578b3996a74bf9670db17a224f12a5d7b545407f24d75de8b522e386a1128f93ff15258193e7034234288a54de92663dde5e965fca1767b5c8152db47c6fb500b90da7245fe8009e474e1878f37d10e4aade5b105c55a405977cd38e6292985a4d1892e80e30a5ec36a172706412e7a47407b53a94dafb5a9720d0d4cac9bf9674d5858154f3a2e645e208d1f890aa27700f3d276f6fb4d7abc5b5dc216bab526edd6723c0a0a1a72b46ac7a59539e14e16d55ec6eb14e519805d095bd5dbb5762050eaaa62ff1c91bf3a6d0e3d488f23fc13c857a329e01e0bc5f1c8b1ae79ffc29a6fd36634f7e9692c550c8a6240bc3425e1fa421dd0264b652c4e65ab898d382a048c471c7f670d38b2f06a4d5134466ad2f7a16908a958b07e2e0da0ea69c70524872acfe6105ef2223dc6353b8b1dfac623371401ca77e5d33eb257b751d774ff9243d960360d23833a64fe889fc382ee206a62d24b3afca3ef154e9095427f69bb7ea6f8b9c3cb25657f38877f1949d4ef7c2b335df3a06d01cad4a002f8246d084a923a1b30d9acd0f4a11ce076c69623f5628ae90fa5d732d4f135a8582c5d1b4b6992484e0270dcb3221aee2f4cc77a63d8564d47e16a0aad40e30b4a15696325bb077951fe5bfd97870abcc45b5386ff916f494a6e10c9102943a12f16ee4687038666286bc1d9716b47103dfbe6ea32a3c5814b8555469b9b5fc3fc7e6ed09f90cd8e7b88a48\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d5f9212c71ad3809360b464378c16f9618564982b0102be8f6d77b16ba8acbffffc91fdb23eed3dff23f010c96631f9f9bb3936de025b36dbbefe7b72aa56d05f598273bc80a3654641f67f8e06eac18af26544a6ca6a8ab1c7715a0a925da531ddd965712d1c112fc40ae647f4c33e468bfc6e34f3cd1149ea989415a3c0ffe570e5ff1ca45f98466cfed3ccc05b65d7b1991fbbf5c42d22dea4083df7aed0f7f655b8f5865c886755254a61c05cb055f6f1b59cc8484f4a3b340342f4d9bb0fa7911da6df9bfa0873ecac45ac91a8dcacc3d91d8a3f3ed4c43b138f211a7982ca180e33d34aa2b9336f9c252061c3c840c91cc00221a9cea0b7be58fe72b8940126bc79a3abb20f408d67ae3937a718d521c79ab4b8655b14428a21053f3bed6aa800b0a18fd57fc07015e5573478b1a95f48f7729f20abf2e3b0063f5c45afd99123234fd04d04c04a329592ac726a6e421bcc75affcd390d268a562febf69bad7723db1e801848e31f58780476ea77c6c1665cc4232ac8a27b91d2ae0382752efe179cc327b58016b3eba8c6db9fce16ff316074f1ba7bac62dc255799c8f478fc93fca7217574586d5cf1d32c64db89871f7990dbcc60c6ec23842e37d26e7a4b857d8fe688f37f1c355424dfe119eda2a518aa9c7d3e5717c85bbdce7f37d3874f1e9902f1dc493e5bb076ba3e88775d3838fc4c25bb8bc82fddbc850d99abf20d294c1317697ee18a325609f08d4fc220b90db194bea6bd0cc7bacd8951ddac89898462fd0ca3829439f9bc60f25944255a8cf308bb6dbd91964a1a4bfb623ec8746798bedc424a879072efc4e41eec2c79fbac3bcd3166651ca38f8211940250170596ae4fd58d8aa600915bcdf69bfaf0e1f718d16998e97bb2f6624104f84df7de46efedceb7da65b1006252f69a8c07ff5ec399029ccfc26b35701c156734a218b532addbe3abb54ad2103f45752e9d0964b8292affa05deaabea07964ab60b0b5c6d962d4876c4257a5f71a082c15febb6e592b6ab215183fcd0a93bd624fbc8b1a97239ee59fce05b33ea0f2447defbe636ec6661e66f3e7c0b5e395e03e076c472adbc9f696f2e8b9c08304a5c137b87b17c78bbc6f20c3390e19e840e0608240c8c46646410ca155c952daecf9bded025fde18c529ba989526e58c633c27222b9540810014a8737d4a23044733bc70b8707753ea195135a73b796ac847b8f879e4e09b2838cdb4e1bd4dc43a26d2696ad30e7b1baf163da9357994f9db97a6292bd5f041944d49c0929111c2e6ec3183c6da929dfb5c29c7568890b4af5ab985eefb1ff33c377438b3b3d6f9df72b8cc8f9b04ba178bc363653d200ed7ee2365f36342a9a3fc494a2d3d521739db4344fd558983df1be032bdc4ff73bfdeb4cf24e772f25adf1dcc9ff7bb78a16ac68fa816d0541e73966d74ec33a7b341290f1fe2f3531d6e957b434e6f6ae757d3be0f07ee9273d7a8ca0d016e99bde8ceddcc9a0fc42bdf59dd33d3d99fc88868198f8d5fc4c295c80009f61838b3e6913916aa51c907b92aa171501d2047b4d3af950d604838d94858fb666e76306a888c50208829a17a509eae9371741a3b18f539a5d87822db1f33adf5b06c317f4898b892614023b99bd95756fab7a5fa7e4243afa7da61d02a58356440373ba35fe7aebfbe03283db37b654b7998cb5c5827a637d1d3bd95dc7b93c92535d95e169d59d0bff24d7c7d2b3bbd8838fb491759c291a08234261989787338240572ff8d307ac75104124b1222e7b7fbd8cc10043329ab41632b54a0418d8a36df15dca83896695854087b2767205e4ca90d997541c005a5bf1625424bb714b0aa9ebfcf274294bc8a590bb76c272015e9fe62ec26070689bee44e3e23549267d18a53c169eb4ea0863a4158852a8f8f7372ca1afb5b1f8838ea106d7a2bdf163ed99964ecef6e26e22945e72e539454204e3b3227af053ad28567b4f55508a5a93598e2626b4c783cb39bd77b4c5e749c98672a0c3c27380faee43ee584ee2ebe82febcbd964a64e5225aeb29fa4d15fd3f0170793d0b71f67b85ceaa503e7ca1db0cc31a80596da6abc367d6b02f635521e8b084f7fef2581a0bd679afbd8ce0150a4632c2d14dd73ea5a5d3cf3daaca1d3675ac630d069349bdcbd1c735d23d1823d72eb65e63f1db8f15cb8a05c340bf917ceef1a12aa78a9cfa1fc5668593029a1ce60a4f157771500c7b278732344aec2b4afaddcef70b0b5adff0a60e2632bc02ce236ff5eed0f2efab907e166e3e57eaa1032a863ff0214b2699c07f632e166d453758ead6ddd0a385248e6341f8258be1803fe2d723045d740edf71365da08a93a56b1cd4e83b911e5d7a92006c2e4b35bf436b0cbdd1978e6adb2b37044214c1aec26f2b3736836238704d3115a8d19eb73c42aac300caca577750c84b81c664c385c802b4067c14b3ded2eb5538e39af6e4b7a86a462d94cb5d0792e5a0336eb34477a547c14f74b9cc0092177349b2434ae260b06eef0bbe163d5527f62a1680da029848c8f307ff657d0f1d3d043986616b129eef1fa6c1c40e832cef6d58544b3fe1f9d78a6a5f696dfb42945ef92f2f149fdd5801297b83a89b9fecd912a129084c2effd4a85ec13f9605b94f0eeb4315e69228680d9120fa58a5ced186ff9bc5d0db6e9c235c7ed5e7e5609e366f369b87b968b7523767ec35a3637661b7fc6c7134804d23fdcb04bc8b0fe3f224c3e7aa8654fda8da20415adb693ff1b9a06d256f039cf9af25b5d7d8cd39b241c428f2238737fc63bb0dad0f31bd29bfd68d16cc40c6c6372c4330e908ed945d62f8bbfdea8cdd0971b78e158cdbdb0d35fd40d47dad22ef1ae096d4e3b1a999915b75084392ff57aff73ef8d7e95a49149c5fc9101ed5bc99c322d0cbc166e203698880bac8f3edfa567dc6c87ebb84707af02ac07\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7a914dd782861ebb4c3b465c99966d53b11a19c16f4f4279afb86c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"972f54fecd03ede66a4275a4b4b2ca9556896f8924347b4886ec42\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"39a40e5b9207d190d56e1fce0c18edacc841818add4ea6d068083799becb24d578\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"6564109f8ee7b542618c02500df82ea00d516ef61f62a3847218880400356a86ba37bed145\"\n}\n],\n\"handshake_hash\": \"9e327c3306649b1be473f30bae3b67e9a487e6b95b483b3bf1d0d7e7897cd49ca2f9e4505ebfd125189d62fd0d919cbff1b89fe213c4ba2c2e8da662f56a2139\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944db9657d40223a7c18332252180f540fa813d1d29be0e1645ec2323e6bece62ffbb4e8aa8b44db57a66f22efd2babefa4724154035691b9b5b57abf232259e507828d55e43416c24556cfe75d13174b00d96d2236680a01c980854b65946e112610af5f5620acaa3cb48fe5b70f97843ebe55103faee672a4a9d82733ab97d17c3681ee98d79cf3c6e6fd9a8c0a720a773d6ce61e8f739ea9058bfa960478d61ac699a7c2160f23272f0ae6b5f8af9e4d54c9ad7608dc3af21ec52bb4528fff2ae230f12be57a484d272586a925641a0bd2cd5175574460a50eb82f9bfae411257177df0e662e11dc5a49d66d5a693e0fa0595a787f5c5a242aec4e79baaa53b35e1f2d7aab34e09a0c047f00dc540f4222647b0deeea65c65098942811c68bc5a9cc20b6a69dfc925fb8f1c5d79517c7813eabc69eefdb32f6f04841f97b149dd97b389e4ad8e6d30ed423ad559fb6c0910f059cb9e1b79cd50768153d7b54767a5c4553bd6ec58c059d3e9f666f92e042f375051734d34f41aa1cae105f09948fcd89d7913895e5a4cd663e75e1978882f8ce7739bb1f5c655591ec501f47511ed2bf9fb27b6612129f021e59da49c4663e46e5fcc4f98757cbd6b62b0490bb6489e789e59d312039f722d8976ee33f3da18ba0c71db6dd7167469689bab20f9e0aef9514a4a17a048f431e87fb07f351d7ee14728f51c0e438b723af9f6df2340ecb24e7a15d7eeb86aa36b0da42630509b6a40668fe32939ab25aefc33eca18f90eecfa5d66e8ef9df9361d51c9ff94a964d8fa9a33b8dae8180ad36e170d3043fc3fad5cc49d5b2913e5f85fcdb1b4502e20afc501920de54292a85e4f56be94ff4fafe55d93a67108f4e6c40f7736b9e8d239ce4b17cdfdfb4b5dce2a53303fb83f5f42b3f00d40ce7a5900c1f8712aab1d47a9dee1fd8d7754eca1f0b58d8fe116eb89eafa4ad7f0a18259cf5a931ee230448a800442fbe3fd69c1a46bf679223b665083f58d74341f97aec8bc231aa3bf996bb4b5d1cc1d7dcbaeb46c70bc14c45ba2ea82f4c0e03b19e787ab08a7f4e09fc8fe8b466e3081812c3b859aa4c4837a6496784f9db2b8411e6c9e22095e99172fd4e5830c12380525c96581b77e60cbcd9487bbf979c8696a5467375acd6c317f2c37130168fc8b23342de02f870ed8612e59aada2f3efdd734798953861d85d3d7900f9f65839a20db3a6203427d75a0bc6fccfa779f3c40b82e713a6a7b0bf8a43164879403ca87aceb71e2a74d21eec563acefc44badb0ea9aade8301f5b14416a20cf31fb92e4cfe4a3f331ed9172cd1eb47e721aa676a747ba7b24187f79ca00933b79fb7071771e66b658c84af877f3bd102609193c94944ba3db0ba81170c2f8336274b2985faf4c37107e089e1a9f036d501a0a708f0b229d27d54df42fdf99f77ddd2d6762066cba7cbdfabdf222f691ed084c2f4b098148ff3b59908d463102d87cb4ee88fc46b691190a58c0749361efe05e150c532466b75a157b35037e7a1dad6c9e4d7f3d214e5ccbf0a2488d207d0662832e26c1d30b607baf745b7a201519bc4aeb6f7839a6a9f065c93d9f3ba600816c2d4b195b271410ab6535086122c104d8aa83a5e710fc61d62b87dfcaf0877067e2e0a9b5a18721568c9afd20e78316e30164e2116dbd1599a2ca2d47e6e04c9f2577903471743fdf5bc34ee67ee13f01487455d5e06db7a4449ee4fdacd8042f4a507685a30f2da65120088ec6ba8ff138bf0e9ff76ec99e694b84f1eef6756ee14a53fb02e26ffa0b18d193784f90a1df795a54dc3d646bac13d5133b717693d97e5dd8f1d780e3851a60fb661b27971c066c8efa0fb6dc8375fea9be9af377b3ce99f5a222c7d86ede05fd6bedfa105372f632ec53cadb5803ed848e6dd52c0edb01e5abb88d70475805ae2c1e04e57611eca36c83eaa6f9419bfd1877cb123652097bf2285b78c9c30a49086ce39a241a2dfeb52d005a26458855d4758ae7414c3d0c2f055efc89e1c68c85b0a3fc807305a433e8f37bd48ead3fc25e31285fcd396417ef22aea9eae7158a594d7629db9275cda37eb59f874f2f5d0fa61ff54753c5086ddc223df620ab0d99185914a96e6a1c78c89135346815acfdfd3d1176b450f781f61cdf213297f6fd9f69e7b9b35abe1d39c6e2775770263266faaa19681e4bb5de8ecf01bb15128537443b746b5cf3db9202cb7129fda0c2786fc9d720e11b451a8a92b46d9914e2f76a59ea713c8faf2f6e43394d6311d16f6fc705e5c17154df24ad1522b7d951159463180fd3bff012620cfea85f29d2af8c834df5df407bc70ec5d475dea4f4d7b00167ccc1c06a47aeefcb3ac9bfa92bea27fbefd88cf01207a8fbaabdd402e3e0c9109a036ea68042edd37facd6d05303413e03b2c77f835667267d80125d16752f01b4bf19f4a9ce1b75c1dbef8ee5ebeae5a1ebc12d28932618d0c37c9304239d1f10c80c16bb7ed150586c6d342de868314e91f015424e635ca07241cef8013b304332b4cdafba1d6dc0a2773a5b165f73f192875fe7ee5a6315b8e075ebf19c1cdb52f154fbcb3f9a8f430d58b26be0338a22846f5135808b78d3e593e89b77513069bbb1ec47a78797b9609dada92558\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431186ffa110d5632a21be2b11c30cbcbfd4882269e3e62f82a6574cbe5d37467b64a97b6aa4695c54842493d88b9d9f19b52e51010710dffa2ed132d2be22746f2eff3c09639514fed7d698e966c08afd9d546fc3494b7049d396804257feaeafddbccd78578dd4db9d6cc8803ac03d0792b8edb5175ae7526b8369487fde21724932c7ca71db03b53ad58f8621aee5f3daa424ccc9c85f66b8e96ed59d09229d22a095de9437968bccf940bf1c93e9f86de4f5c421f8002bda4eeac6f36c89a538a1322f07dcdcf426ee11914b4d593e099ed7da56d7dcb906658dd2f8796db53a7ee2d664dca17a263c230aede39d7261005ed2c599c5c8110ecd7d3d05700615b8001ebb72b575e121830f74055da918bf382e486980211427576af046c31a95e29698c6f33c0d0fd75731c7d8c520949812baee1f043721abd3ffc783c3da4dfb5d9191a46ceea147dc1cf347e69bbc81538945be60c45cd83f689a13cdc7833da8e7b0fadc6487178147a7f6923b31066206513786f405939e6269df262265de658233d2417e58c1cdcc301ceb486691d28d6577e43f0d0660b39a63f0a38d3abf2d68adfe28577530747ca35b94b0c73e908a1b23bb42603c6e4f58a2bea3833829ff16d0c20c496225de59d15282ca741ed90dd6c0946273a9d28e2fd30c98fcba8cfbbb5b2a64dc7b509ce6d8583f02c03e9343fcbfea5f4dcfe4aa6e2afe2bc1f319af4ec03ea8a31aaa85620ff66625e12a68ab02c4e66f0582cd0c5d10c582e2db606aa9c253498100d9c67618529121fc5e9848750204075bcc0a7882812a6266596fcfa82eb08cdfaafddd43867ec3c8bb8c71ffa585e5d2d72d9f312b7d844a6673b112dab9be5ac02e45494315ac49f7ade1766ba479ba46d2f91e44e9c750aa695ba946f7f4034c26dcda389e842cee08965ba680436651a25502f0471c2cbb388dd43dbe3574e1e8ad4803bdb650006aaa0d2909bbcda96b2f7ab49bf97794da854197a2ae82cee1c9fee5e1ef601600078c0edbcd4072ebdebda03544bb0306f2e133e6fc8fcf7225ae73ab3bb2eab05466227236a44f0b03bf66c50dbc1afa5824e3d36ee75cb2bd2156d2c29d911b68ec9249ce449209d3a3b546ff3e954453032b6274adc30d77ad1121cf686edda3df798327cd99e796d8bd65ee8233c40091fad28f1e495b87c4ed6ccfa1eb7ea23049956d62277cb66baff14f0eed058f15cee3b7ffff2441192ad02dc275cdf122b7c18ebba04e2855a537a7408d0b0015fe5096fc34bad71bc0340532eeead4e4a56db4bbfcc3448f8634f5f3e50fe553f824bce07c03eb2ac4a2f6512244fd72b901e3347cb39f94a68aa0dcaa0e52db05fc6c5d5347039e704e1d54fa74757313294e30a1a5adef775a05ff5f8731b24d69a461c78753b0cc358744dc263aae7030626165698b4c526c9575bf8ca1aedcae805ffdc3dea3351f919bdcc403004c7c796833c2ddce95eb56d4938b0913c335fb4f1a1a0e59a91cbc5a94f699398a87260601c9388e61010033f23062c69cfb7877bae823b8783643341e9ba29c01f08b6cbe3ab337154789502112ae3530a82b8c9ed690aa44742b9648d36f0e999ef74ab9ee1af79b6b2d90c6a8b131346bee8b5f12d078ba31f7210addf97ebc7c71c5d7bc5393abcc620b86be87dfb7b6d030a6282eeeb2c7df2d3ae4fb38695f667c501381654da7eec1ee0270e8a8c821db933c7ecf0c85ccdca7a85fdf6d4606948bce9e122c02f7fc71ca1c3fe011c4393dfe858117814fa0b883e2d121bf0ba3ca25eae8e59c614015327e146d94c89986511e3de7af5e1dc4b2c1fcaeeaed095ca4d07d61d9e1a41fcef467cbe37aecd7e0722143b958cc9648620e9df1dfd511dc15367604c5231f008f644bb8810938f86a5340883aa578da60767bc8aa9ca20ef469ac6eb2795fc83547d383555f930a0e25565ef0c9358c378c1f6a9270823e08f5267a74e4a471bbc9551c720c00629be58e7d2e7cbed7c8d9ac2e6e6e03f024fcfa3ff58b3cf3afd4ecb77d58c801e7378e0b7f9baa1fd284766c621e368ca87827f025e1c262e9a734745e7a18002cc7249e366ea2dcf61f2c6709fa6f22b07fbaaa792c4820d05d02e6dcdf2cc55ec30c5699242b2ff7bc68456c9d0f50009c190687fa2c5f4237ef3a6952d2090d6d496989c9ce166dcd32bae4759de80f56b27de0fd87e95530aa53d2ebaaf18426f065f17ad784237937e25e80b290b098ecf42b312330a9c940bab495f7ed32b5e32af986928399ef4d636a0346ed516e3659b53060ac1deedd591b2d6fd83eb50cfd2acefaea1e95ac0a4a9a566d8162d1b471c1675bfd124c5997a66f4999952a0af6c04b2fa46f7a2513b80a7eb501f66ae4b650e4ec01aebe897270965fa502366ddcf45d18602af7cf9adedfa2d0bb15f1596b141af6825592ffa0e51022b2cc7ca4a825e91c2bcc9ce00d36cb234b513a503fa42e31d7e9bc1fcb63e7042c82ad6916f2f3390d6d659fa65ca79680a3b7e81c5b6a61676714e0900b4885d9bb4db157fbcff517f0e8ac227b24a57a35dd1cc7a9026417a264708dbe2b1b2d801ca1463d06945e09cc48fbcc9d948bc4379148dfcb8ae860b643cae1a21deeab8a2cb4e85d89c45013110c045298d5da4080cf4cc7ed5d464552317f5930bea90b30b0206e8399ab37c501a887f22cbff28e77e108c824266a27d4313c4563fa6857086f95904fdd7e231dca6087ae2d81038b31eea0494bb5079effb3dbf8b0066de34fda58abe7b96411e34d1cbb7f8fff54755161adac0ae83d751b9631a4cad6b87f083175555cd605ed23b69d5ca6c1a52bc6a758614d763194609c8ed9758eaeacc83a8fc6eb9f82b9235c4fbc10844368ff861e2625921f12a59684e3da6fa20424ebe66d84097f34a9b77d0c117b8ff45c4fc2104357a4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c120e186a3c02b0ccd1ffa760188de3c99c5fd4a8e1c815edf2839\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c9980cdcc52ebf138da4caea4d1e5f7dac3cfd21c0b73fa239df2f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7abdd2ca222c89433efca06f8859924cc42b8d3eab820b4b0fd5f5f8577cbcdf84\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c5d915f36dc3a5d6c6ac660b7c53ef46624483dd6a5a4d8b8cd155fc12f8ed16cb731c9fda\"\n}\n],\n\"handshake_hash\": \"a98754a1e64e93f58c1a5cf31b2c0d9f6b5301806db4292a59acf5dfb71ea5a4\"\n},\n{\n\"name\": \"NoisePSK_KKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"KKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f619a989d21acaaffe0bf2c63ab87428854c61b47fd6af1e11ea213b5dedf2933ed6ba5eec07121209ee23d13eaaff1b33a02078159423f90d36e4bc74dba832d4150f37c1b176a967109c2dceb747e8178b6ceca9ab1afc5ecafde6523a6d0941b0d32dc4a951e92416791ff9e05e4c420024743869c8fc96b9b0367f78f399ee6d64dc315b3df7124452a3cd0de0a5e2b9f84c4f0d9d391161b97874b41b8b2eb42e44c10aefde6d61a741d6656b104dc9871a35b5e355b4115ba3ed24b51246a201c204cae2b3fd7c743d87516ca10df2eaa78fca4b25b48ef2af1938c6f3c9f6f3b4f1c0c038adccfa16d226f8c46025b7c6dfbbc511b791673b0367230b373b34db0d7d591563de9e68552567f6810076ec873a294ae6c1077982edc7ea148e064a9da06de25e8446121349882df85884035f1a3bda7801b7b8194c217e8526f0608d7a10c3f6c49328130b2e088da034530b8ec484bafb36643f67a0bcff35d590e30fe786b28c1c9ba9939d41878d71ece1394235606e0f5466417badf1a66ba078f63cd5e1195b29825e9297b21bdff8e78bdca14f9296ded68ba2bbdb9ce66294a14574e51ab5e1fc0c0d168fcb205f8ccdae9a9fe6370246393e550d66686eb58862ee4b1e61b1d9a3d12c8ececc7169a572bfddb8858a8e8f419ad8815bcdee8e8f5aadc2dbf5553a9f0b61698fcea4b9bfdbdf03162271ca162ff3815fa80b25445f74f8102f22eeeb734bda9602778ec31ac09b088c667d7d0ebc871a99c67106ef11398383b9b3d770761e0a8f5ef0a7cce36eea0b62480cff0ceb4ef26d34f3d9165fc1c0c1a741d6d9041e9572272b56adccc4c493747726e902eb66512e4095059971412681f4c85de3723399cc8915c9342cbc5485dd328653a45e8b88cbad75b8bc3b0dc13a12c159c9aebb4197aa40e937e872bc6bad27122001198c83aad1edb64fd3f3bd84d82e2c7cbeb2c96af75aaef47128a86473c6e21c67a57538965346aea9a8ac9aad51fb57f435a463b069ec6b495ff830a3d1cfcf00b825377e1a754b95b4757de9239faf1ec7ee90cd57ddb4f6e1fd05d11d344cd0cd22aa56630b145156940d01bcfa9c5a2a9b847bbc85eddb5aff00eb98056cb7b09a0d97e2d2276305575a0cca484171c455176529fe5a7823a96207ec46ecc4c8a636f5b6048f1a6618e45bc2256bb7a3409d539a83db4cd66b3a329a4a254aac116f631dc7da09646094866680ad24a7b97c88ec19f4a27bf3c62a9015a54a961670ecefdc0b3e48cf164febb3152cef0ca054be2257172e1fa7b80e129bc50d0d54acb70e47a3739abd92b0d098fd18a5238573decadd73c38f253b787de3fdeab3ce0a2bec549ebeb97753a818817323e3f74539e84ef614ab395364a795bd57987abcf1740072f83eb33404f0d73090bf03f916f6f1afdb451c1cf531de2f7d2f6b8cc8bdd4a43f2c8d8bc58746d803614656485550e73c6cd390b96e2e057d62406986dd67252c38bdd6d550973b25dbf8c97ec774afc570022513d6c1ae689acb13f60f8af899f2c1ddbbf6079c99dccd00e97666d5e28051a8893498b4b1da0b5b5fc80127504b9b21d4f0674e12bbf498272fece3879e5a7efc9eb2ed40bb03fccf1a6cd1bb2124a07d01a8da9901eca84d3d2281ed12c61f5960dafe7740f1cf3774cc1784e15f6d3d06a3a137c1cad892ccd1b30495a2e8477c06f14cf79896a10c0b2bad122342271a4f2423921b3892ab04b3441884db331a9e4d875f03a76ad70fcab3b902e6ba88664aad0774102933ef7598d6ba0574ec258d062f8f006c9815e176a512812990226042fdc495d5f0557c4d8c213dbbdc951a4b86ec0aea0e879942d256d0a4e2b3d2698ed68870fccafc53cf2a4e9faf9f32013557c57b047ba7578b71b9db7e88fff22d5d827d0f8e8493a6ac1639476132ffd9614dcde7fe42153d1e7bd3fd2a3f2c55126d550678e94250217a412dcb3f8b67f603f60b9f3a501f9acfd3cb462f9c3045f61c808dbfb4f49ff1985151229b4376248d97db1e86cda33cf40542897137d66bdfba3a26efb527b7e66a31928b2ab9399ed607c4c5d38472d95e75a93bc31434e193397ca5263e54c4ebb8414f2a5893f76d965646cebfc58cde06077ed2043ffc3d7ed1e57b0d34249a523e9ce0b197fb89eb44ece59625bca2aef0841d67353d331a43b9a6abf95d1a5fd1fb354a5c64f7c372e303a1ce11063e2c327e3cc6c237107acd1df50792c8b8a3c3591682d2b0c3448a7e9597a9205cd04af359f4f626c9a51d4838220f7d570e8bfd77bde5bc308718df8be0a6bafc4ec7d47692c0b1f87a42cdd96c028db1c470fa5d81a692f2669b24ab0b45959136ca8c3dd7a8f2866ade9c5570a75c858d1c83089dec44a1461e88ff8d48a86e216a22855eed277cf41a16ca168148964b034911b8df40843d302e8022ba3ead0b537db4a2002c3dc837da9ed153c8fe212752bb836828967c4f0c4c8894543809e6acd316e7652c16e6924ffa8bfc0677a5b3d906d54de5e2f6eba5e7529267da2bf6159bd2f6d5339b02efd8c58014abed1fb13423a235e76909b7997f9a5abfaf951fbfdf9e122898f86b4e6d286caf5195da0b183e1a04135a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843191f9483c52a593d9eb30b51fba2094ca1c8bc2ab6627ec21541ecb3d1ec1c5acaeaeb1ac08a652993bcc27c605b3d65b10e23028c59f7ac03c202855423a07b206c87c123b5f17e0e1f76db6c5b88a4de80623ae68f511c6c56889bf7df0024a5622b5eea62f7d9977cea59cc6af899fb362bc6985d306acbc4dd10e82140e377badbefc4340e4515f235504d70cf603d79c67dc2c16f8dd1c1166fe0d3074cf1fbd7478754a8261ab755d2769521f46bf14b4685f0b1d3a09dffb566c80d38188c7507147d3e995cf50a7323dbc7fd1c57a357e593872152f3b13229940939ab942c7080275120b8b1c7c8b965ba7322613f4c4a74f31e9531636f4cfa1bab37abf8a9ac9fbdec661e6602b52c790aea9c36e81845eac8afb58fa719157d9bb1ec1d9bf7cdb322a1826d1ce32b67916d13c8fe6e4d556ac617c22dd14cbb61e57531fad7ff0663792d16a577198bf09fb1d879b0b54a3eeb520f7d9d3f0261570e7bedc9b2e2841899d7067355c372e91305619f8acd03670493eb53dd2d00d81966005543a63e98f73a8db4ad4778f75352d16a07d88b17dfb69d4e0c7c3736937532c50fb218c0b8db9b91564d13997b0044acd10e9a787f53f156525a85f07a4966bb1a73e6592460642203b3761a7b7eaac268894e1f826df487e90f3691327e122c637a8b92f0537b0bb7e1201a522f01a3688536339b34804a69086b4cadc141c6c1a6726305974b8780cdd8ec12506bd452c396938658144642c5fb6de34e7253caab9a48c5b466323e791fe8795048dc51c6cf0e08de1123fdc16ed49a80fb2d50072d9e41b296a0ad57f8c12d0d9eb67ffdf98a2de873621bb8f865a2dba1152b2e7f890e6012e9d492c946751f61133d28121e9954defdaf308f06fa01a4542379f3ce2bd912d151d1de6eb5b72e0d116d40681c13a441ea41cfd7a84be3d6db2d06ea3fb71f63ed537f4109efb9871c8de8dba6668cd3d904401a1e1a5bf9e588301ab9610b919df5718736ee41294bb6663dae4abfe0d70382c14b7ac84167fcc66c87ff6fe46a0584b43f3321c33b9eaad813c8de163e94bd9d6d1548e38086377b42dc4fc420f5a48764830e9627102df94b6aac21444139ed6a8115aeeafdf88b034b7651d4fc59376c9e1a454a713234b67c717b443998759170a95b9e4394d4a1f6faa400b18a019844243e1cb6bb51d3c006905b5e4eed68afdccb5ef9b227d2da67487c6616a8cd0b4d8555bd73256745229c2289a31165ef07f894e298f4668c102de2f02391e74111dbbb1656af918cb85dbed3259708a930f9f77260337a78a989a3d4ae8effebbd92bc958b1e2d62e59fd16658e8c2633711a28942a81fad0f32770c87bf5a81f66b443681c0b130fcd9682712ef19ad1eea7b3147ce76cee052b2d644caa7e498fb35544614d07564ceb7f7c3000442ee81728df0756edffa2f005079d0f25c0d33ca7288130b8dad3bd5417e8d6d7cafb9fcc7a47b2c8449341f17f6629c177bd96a0bba12c46198ac9aa074502b747519b8f4839327029672fc4fa85d1de8481878d6df506cc504f1abb036755f226557af6b2784f007b4ea501c70927fc4eee41c7343d46b7ce1ffa61f6cd13d72ced3a70d7f38063fd713af9e1353d3629fa13a10af448165a6d926b9c1987dea583531a0cb579e19b9ee4836a1bd4915c6b3dadeca4cf3e7910d73ee4e45bb4b191276ebcf03e52deff85c0bc4fd811ff6799f1bf2447767fda062c3cfe2529a24b4f5ccf39cd5ffa37eb4e1b75405a07a2e77ffbdbcccbde1466cec1388e182f596db0697cab3281be394144d74fa471fb266ffe2b5cca1c93d6aa59bc226cb50a188eff935572caafdc032eeb39d8615f90d7f4fe810309ea98a48fb965d8a5835a04346f9a8569e158481ba47d32602ea25762009b230edec855e74fda92d6b4da59b4ded6d0ffde3bcf2f549995f2b2d9ccd591b30be874e2b208d94e4493db19ec108e27961bd41ee679cbcc1317796e423b81a02cf67d3b576dc736d80cd963b303215f4132fdac95143d986bb52536d5f2aeef8f30585331f1064c2821e8f9546f8ad36cf3dc77073b942bc2afd42e7710be19ffb74a4a95ee138e3d704b8f4ed48b43c8de8309c1e5f882c0c104695f25ee7bcc68ac6ab044fab5420762e1b1193615fe5a7049f68d876cd846fe8571851a57c5d57ce6d86fe4407e41b12c630c9aa8dd417fe2685c48bf8b306fd65404b2753a83e82a3b8b6dc6aae4d63ca5f9f5657fa22bbc6e6f48a696d5d2baf6b1e59984b83e13b5f9ef135ef342f1bd112b28c8326cd111685149db082d7daa28fb5335a7237e8adae75787271f36b4c102577ecde50ca34a1c67977fb8382b552b0c05f11f94b28a5ce4cb6dbc2134cb57ce10e068fa6538c8efe4b9fc940fd83fa7b4efa8f440af655625e7e8697425a06901300713ee5c7dd940d5b7d2e15612c473e937534cb720eb30e729eaca8e2c3a9478d99df5641c69363c448cff3a985ca03d99c60e23aa1fd85eeb3bd8ab1c61a5abbb82307d85313240371905b4540210d9bf53cf2917fa3552df2e78a4b4c2aa4f98e8719da401772a7de0ca41ac598979299892f1815b073a37b187619fd3d118d181cacdc6e442234ba96f3bcfcffeaf66defd94de344c5867dedc3818d1d1173d77f3eefb0262e63afb2c88b996bd81b65637462f6a9d9021171a3cf4fae737981fdadae5c13f3feca8e0ccfcd6c02ef828eea5adea2ea87dcc5c63f9fe119dc488981e52b15d9543ab0decdba94064a29e66399c4377862a4f9e90c73ec47a227b7e370275053c08215075473300bbdb41fc771976b879fd86ed35694c4695830ac673ff053ba051efa48cfe00946e28bb5de6c4d38981228268910379792ca8a6e4afd9aeef5b7b06886508927e438ce912d21e998af1d8e73caa3e82e928a47e220\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"60760b144f9b106821b73e6e55f1e4858e14877393b9ba6d73bc69\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ba07097e27e396576e9846b5d3a7078b82cd906c06c0b59a503fb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"13a986e2c335a42a8e728ebcb6058b5cde64d96cf649b4a3799ecd6b5f6d8aa9b8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8762a2e68841dcb47239f2d160ac118285f24e05d9c57fc8f9f076bc6c3130bcae6f2b3f6f\"\n}\n],\n\"handshake_hash\": \"331ebf33eb97cea9e6d873246f7e79b8674b37c225915fc51d8bf567930b8cd7fde06390b399be88eac7e029a0d138a2f8e5ba67bc2452026e32ee03541dbe83\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65fe10375a67296b26378ebca9a5141706c5892505af7beff2f4813b6af0847e8b815a8c2433939410871b2f3ebe2b43205d745e32f075cde324ef4cc746e257fa9352535836db639bcf73ef04943df2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7b6116944740dbf632507120733d4239066543322bc3100c3dacd5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dd18e83c15ac125ff548a29d65e1d433638e93717c960082398822\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8fc909ab2a4fb6ce5013936b23cd50952e5f6e804576dd53503165854a016a1183\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a31f2d129287ad11a00166763d301aa2870d9ff9981c2bfd7f3c8035444bd7242c7fa18e6e\"\n}\n],\n\"handshake_hash\": \"29b6f8af045b7be3467b18ca0889579d6f7fb7431abcd43f6d6bfc34c0e1b40e\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65ac78f144c1c3dac66450eaac734eef0d51a0baf09cc9ff4cc6cd431a9dbfa598889a47d15673d7bca0868a51031c0226357a774213df6f23c141bb8284f3990390f2ee261e13641dca293cfe3a39ff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"de65f89f59621c5a06899e2fa7b836fb286ed2ba21cc776426ab06\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d00973ea4a637780c83862852698fcd277957449723cacb33f6d49\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d0ec4a176e91659b8a321a17c5635f288d119ef3183a07276ae603e5232e231e9e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c6c4e1f611fffca85dd130c61f2285afd5588918054a27a4b7a5188f45398d944c0b9fe3ba\"\n}\n],\n\"handshake_hash\": \"839a62376cbe2ca71c855311f8289b1c41fa61c014a34e16caa5ef0626e1054f4bbb4a6d4c27ff1dbd27098e1c23b2174ad5f989aa6bfdbf2094dae8000e76cd\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65f68d97d45dfc6b3ccc7e04dbb6314f49a3b0fe5cb97bae16041121350184c067eca849bede354475a2102c033d20482f29fccb02d3e1a136d37bf88d60378feb7477bf296e23e1f7e3df7153703e56\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e533e7c2435f6e8ea05750068f2875699023f4c2349687f8a46994\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d103ababa48336441db681a3e2712ef7ca149589989aa5c1b37283\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6bc88bf0d90ad7108f67a4e63fbdc9368eb535c7e1762d1b0b2b685441ded6aa8c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"57803e0168e9ce0b7e03195e0a2ec4854dd1a4a3f8a1cceea46f17f64fcc86e78ab36bae62\"\n}\n],\n\"handshake_hash\": \"cd3fdad25efa6bdefd5389da4c947038be0953b66e4ddbbe7c309125363cc35c\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65a1e952037c0d03e70422cff60242a7e05fd488cebe3c8a0edc2f9ce0f57e8125323f483a3467e7428ccb58c06d06ea65c0bceb2be6a86d95fc2f91fa6ae52b6e81f7e8d4f241404c9d8069a5032d3c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fb925526f1e006ff7ed8cc5d5d646b4d1693b002ae52a39ab6d7b1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d05441abf7c0fb7c91d10826ab1e4ab2e56b0bebc3d7720628b905\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"78d1104124017c271a4ebd4705d0d230119d726746e8ec437a42ed249d4cba4473\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0c8deca65dbca114fb8a0e30534c9d24fb249fe9b2762174618e7c88fc9a52d648c7a6d384\"\n}\n],\n\"handshake_hash\": \"9716cf82c84f59ebe81c9131a217ae25a8deca498e35de14f26ade0d7dd40d3f3acc14ff01fbbb3bfe27272aef3a0e64dce1212d6908a0499bdd7c6f57fc6e24\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e2631341e81c2ccfb8b2c851ef43bbb6ece613ffeca549adf8bc71d7870e1face2399829c253ce90d650cd52d28b4001fb07b610c47572731ca030d25699b6e5894e8c9d6b66510f4776e0b9c1a9b02\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8f5d0c4f20749a96603fd0cbf517060ac3095a5a929dde755c1d06\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db4cee030ef49ad3ccaa8957bdacc361a99321b57a333c73b0ba69\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f8b0e08f8370a9759f57039027d343b5a9812ab5c566165efdd19f68a64f2632c5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8edb9d144d627da92165fc707ce468fa67e7157009bfb92d51e88654720dc05d0e30d8efa7\"\n}\n],\n\"handshake_hash\": \"9d1f3aaf0c1c154048b7f7279ba93c6a1a22458e0e9f7f175cb9387eabbd0e4d\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ec59104ed5d34cedfae5e675c5fa9700b875d08bda2ebaefa565682db17bdbfe53bcd5de5b0618b8c54dddcad3addfc8e401aa2eb3458cd404af89bd2ffd7c0502d8dbf04432c63bf07f8b4df6505da\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e6fbda0bc987ec0eb27cf340f42771e4d587f11f5b4936823eb037\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"efa434f5a1e2e184c71288dcfee9e14421de4bc459a4c1bc41871c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3a355e6e2fcbc61055c29444fa9b340faf0a4793d2873e9a9e16cdbc1045cbaba0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fcb429b083ecb3aa3ec03a4801c4a8d766c276a032b606500bcb60fbc570258701eee122ad\"\n}\n],\n\"handshake_hash\": \"9046bf9848c160790ac1c902e96cfc65319c18ece3ebaa6e401f03a2b49932edb5063639b20b6130fa1d78b22e249a80b8f7a2e856b213875d89513a5e39c755\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e123fc9bea7aa818030978fe47b74b32b29c6128b9507673bed07c075ee159bbf66f2ce9ba64a47713c8256dbb7ab20c33f1f516f2d1b9394ec0e0c0996b08c00c9733170bccd1e4c7e3c7175a40912\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e364f51dabc7a3a1c6ff754a8a46a3d884881c4993628ed7541cb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db00e430ff0c45d894e09732201633237db65902e759739b43d742\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4987e8d76904ba32f10e8929468e705354123acf0d5b928f734847db7a3c6abb09\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4090b5e241dbfc3cee89cf6a2b4bb30d41610b58a53b2b7c2f6311b7ed41ce683bdea72d5f\"\n}\n],\n\"handshake_hash\": \"4ed19278925be8c306aec178ccd7386637b166b001dd309c88dbb9230d38477a\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e4c5d4083a7ad31cf875f6ec52409cf6e8794757d91e31a47357f5ff39285fd39b85b27614b09f5a324b3a72fd27fbc41900b748016c4fdd85110e428e6e141d8248a7c95ada966d460034054f4a5c5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7ab343cd121fd7fa5d74efc029abce946fd1f8b938ea3e33de67fe\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f0f627b32f0b586d0f7d96363290171032598134b18642c62ed16e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4830bb344c78db4d5fceec10e8c1304f397f5b01edc51b0f37d117ef03f4b02508\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0345a78388d5484c8845d9edfed2e35cc3cb77a04ccdf17d7d0bf287f26e31edcdd3d75ad3\"\n}\n],\n\"handshake_hash\": \"12c5b055fe621e89f51c6438460003ec292bf485e0bb9fce2db43d84d5aa9fb94233b022859a7077dd935c5c39ef6ba5371451113c2a58bc33c027471be8d5d7\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d655b787d553af594d7825112f0d2b7554003870032657cea10cfef9da90a04d37681c0907e5fc2fb663169ee122205e82b9e7228025355920d6020ff00fee40ae6a5c22a329793f262338ddb3ee3bc36\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c76e67b1ecdbfec8373fb4d1e72acafb8386ad16b761778d22f9f6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"203dc028d3070ca7b5508f194fac023c0dc05398f2c337b1a34385\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c09b86ee09d12a849df79259783b739ce45ee4f46dbd9d5a0f6aead7b4ab8aadce\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"090298b01068277b0f608447f4b40206c4615392831fe5d1aeb535dfd76d0a26c4d1b08305\"\n}\n],\n\"handshake_hash\": \"64700df5f27b53112362d07ea22d82b1ff5270f93fcc6278ca033fca885cf140\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652d28db39f5905609de7ce3655fc67d2d27c2e27b8ae211df988b5460f70400fc66ea5b70dbf835f827d2592159b80feffc1bf77ded760495ab7cd9157b1cd92f0151e9c8a8761d81ee33ec66d597e4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4c9f665c4a24cd36871568a0ec5a7b070e44dced82488251929fc0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"23cf805839f12d9c2b34c140e4e1bbbce91fc2caf9f3222f3aad5f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"645684e02a8c69bc7ffbffbc7d84a17abb2114696268fb61338dc8597c21a555d1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"be8077152b10f0b8764001c9d572d352697d94385a0b662e0887b9f57f578bcb8a8e7ed24a\"\n}\n],\n\"handshake_hash\": \"b7d019059bb966f547dbe63a817557e85870b6a14f1b287b6142435e0bb8b8e42f444df04ec8194ab6f5a30833eb334ad1c74ae0aa27f1d898b31600ee81d26d\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651259633544aac21ecc0eacf0b1b5c5b32da32ec720b31b588c34cfa6fabeffca1dc8dad87b3eb8613da93ab02b22b199dec3e5a83bdf3c158496e35338dfe922363f0e28bf3741cd5b5441d7aa7c92\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5010e5fe427bea5381628e01041b38199eb836091d8f1dc02e25a8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9c7367158945e1ee2cdce0db567b2e722c6c34144921dc36a046b5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"47678c916baf91adbf0613f9792ce5826348e5a55f22b3cf4f2146dc3f944ada29\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d2fd8000379f7bd515b90805516780f1dde179dc206d53e9c560b87287d40d964fca7abdf3\"\n}\n],\n\"handshake_hash\": \"11935d7f625e411d0106252b084c5e6ec134cc7fd44a4cc168d69e4ccf662d18\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651c28e4c622b628ae48a8a5f6318406cab1f9a30f6c3bc7778e6e67f3cf1e051ea9cacae2f869e6466be44704075af07f40e571694662fa248d1e5d2e18b5fb4d0ed53a7f4db62542af7f3fb342a028\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5a9a6179b21f5cb1c77d84740a5828ff5cdc8be676bbcccc24ed9e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7396a7c86d6a61ca4c71cb917bf0e41bc17b935b5306f2c903a428\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa76dafd3f53028d6effb25dd8f0f237718414ca372fedfb0a7a8a0b664db266ea\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"04412ccc37987fa346ddb3c6b264009eb92689f510422787c6d536d744ffb1be0a242c8521\"\n}\n],\n\"handshake_hash\": \"fb2eee574ef7e7f2cc0530b01413ddac57509389427952216e9301ded15187c8a3a8bc4ac464b3309e6773e5e27da6599386a49b63153150eea8315d300619db\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ef36edd7311b02efd304c14b7f5ece08019139f1932c35fbc03275173e18949bcadae8c6b072c36dbf3ac2674ae43b20d5b3ae0fc65b2c2ae86f6bf851b0c560e51832f10d122ee527b54292ca36678\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2ddac203aff24ef51d06f8ed9134bc5d7d98a6fc62a7f0b2f67d6d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"856b4e02143c0d3faf7bfe2628f9e863ad5731aaf732e8440e34b3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"3d938abd557ba818cc3d95723a7c19ddc08b3da1e8a04b54b26dd0418c94e0f9f5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7ee17d64bf11bc407abff2c5434003908a79793c486f8a4580ea30ca1695493df122880232\"\n}\n],\n\"handshake_hash\": \"7d5783f5b15d78239fbc69bfdaf90d5830e19281661d0bfc4da915d180b0e9a9\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e0cd02d93e0158f57bc36e4a6d8ec6d85544d2f40653cef3a93855889ac4cbf8d52980120a1ef12c05154defd9e775b0645d3cf7173b2983d87af6fac8ca1a6c8d999477f5f4ada39c37e2313805fea\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d71ff049d7d0d138f02cbf61367102e6f1b86091e1ed4a8c8435c2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"54090291e938c1bdcfa4e7e631d1ae893bbf15d5b548a18b919173\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6593f4dd52e8406ba8512aa1abb0a1e646c5970a8635642b2bb530245050f4d35f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3996e8885cccd9a5190e2ff060d742e8c1243dbfe8081994217321a4e049d4f742194a60f0\"\n}\n],\n\"handshake_hash\": \"0ccb5e7c9a061671aba74c2f61dbcf86e3cb8bd38d2ba6755ebb7f514522d784165150aa9f83c2190bb0d3812c90c07043df1bdde1c045c81d96667fee7680c7\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e1d33d9a2b4cd792eb84eee3ad9882e1197dbf974e1e57a09fedc2658845074e37538555a31c5003eb91b5f20c877e4f448cfea587f6fb69064c029accf32a3a8cddfc1c15ba65da1ac5432ed44a168\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e96c56622332c7254120275215518216c081d30e6097db16232dca\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4596a90e0408160c521d31a5bfb0a9c9e1eb60c3f1f24b71411193\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b34bf59dfcbc1ee1f00ad666db77e2c582b05a13bbc73fb2a8eaacdbc016db2b6a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f38e452048e6a031492bf8a2c3a21b4bf58dfc2be6a18fbc2512faacb1a474b45e96be6088\"\n}\n],\n\"handshake_hash\": \"6dcddefbd10b6184369015ca8a9691e8752e2eae6388df847bacea46739cfe4e\"\n},\n{\n\"name\": \"Noise_KXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27eb9491a29749d42e48b9e88bf8c2c2232a24e82afbf568e38148fc1a13ed8f0ddaa82bd24ff885d5e7e277e9ced91c708fc3d7a936b178ffa3d3c67d872c50158b575e03a53df5644128d0b8319f567\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"161a84aeddb83b5bde805c56f21ebfb7d53cc586bfd12edb8adcfc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"36bd0949cd84231368df5252c1c4ca6749e22d56b3929f3a9cf245\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"979a3949a73152fb7c117d3e1fd088e705c95a25d2acd533150f965b6ee3998d34\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"36e7480d71276c5edf87bb498fdfd14b2e1cbfcd6fbbd0e4022fe650678c8e151bece98736\"\n}\n],\n\"handshake_hash\": \"e009dbda0f5d010fc6135d27648e80c3b1265d0f860d5351380cfe4113bb105b3f1fe374dc5ada570268ff022dee554bf5368717d15dec52cb65e6246227a6ee\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448c87a948b4c5b9c9cf82d0050739ef8b74e7397ec01bec01e2411327fa717fb01331140add0088a467ba8b031082d2ce74a7f043f3fb4d8bde86c7a2321e17d8f75d607546820c9c861652173ddc4604b7455d36faf56416bb3ab6de6c0a02a38605616692f26081\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434800912ae55d5f07faabbc808b758795ab404d9c3b8fe9d7aa00de1e19ea80779b7c42bf85e98a2234dc8bf6988970c88affe7d897256c9fc9af3c8648960ed6d85909ecd802917d2711fc423bd2709bbf92dab89c1fa5058eba9003781fd52dc4664a8888c0e2497a61118394a6603c3ca8520789a16962201c5b8b40935e957a726d365141d64652ed512a541ca9afd959930d9aca8b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"29faa3fb9783e10b84b15ce762ace1a16db8aafc1b4629dadf7358\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2a23d3828b01921e02c5adb7f39e0445efe13f2a6c47f7fec6a44d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c50c61ef0301079c2f0367d35709681869e30b20f7fd14f1713e667f4f1b14eb0a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2cbc65539ae892d44463d67c04466c38c305f86a0ba5813f3f2318da99c52dfc8fc33d5445\"\n}\n],\n\"handshake_hash\": \"ae632ef90471f9c6e400f6b4be74b32edb05085dfda48af782c7ef2b0592a5d4\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944df03292e1f26c61e456411de244b74f2bd7e8d4544fcc7f1cbafd0cd70bb03fd3925d0a1cd8e0aa26571b6441463e9554a2113b9ede60b65793481c357e9fc8554494fb5c10104e45860bedfd241492c9d5711ea48979f5a0b696693d15cb73048842d08f24dc406\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431ef93ef7425289ee467012915d45f5021f272a7b272e5cc05211042a7dae27bb67d8c86c66ecedb41662f33364301ecb3f9449a31c05f88618fe49d95e8ce37e1e9cee2c890ce7c509ee9c0d523128cfdfb800a8590a8cbd19567ccea37cf0ae35929f1987b3463d7d59c55b3342b132d949b8e77a625a8019b1a957e7e96c28a5970da00f10a320a02eac81bedb03dbaac09ba631c5a6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"10978f8a6f8ab0c48ca70f16a199800af88d087197bf2e15cdf777\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cd42299eac5f6931099452be3260ad8949451e2ef9e0344200dfcd\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6ea656a2990ecd036331b7d1a35041e33ecb2bd8a2521c9b956547327e4581954a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"664ccc6a9c8e96b0a48d8fe5c43b3c7a5e4a1ef87dcbc0b392eee4e3d1c962dcbbbcfc9407\"\n}\n],\n\"handshake_hash\": \"b88583b355fc409d860589b9ca11bcd68128d4eff388882120f8185c8eb7dea1429f29da417dd7e36619b85c2b896af9ddb0cbc51385313c1892d14aa3ca8e9d\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442fb98ca79ead1cd8e1ae77de4ba8c6ad08c9c0b6cef42776562b9b2298ab6afcd6b8b51a4d1740a63cf6d5c7b7dd7867d339fb32b29edaa17ac378df740faeabeeec58bada6916e39a1d3efaa80067d4f9888104451f488e074e1db331238d76ad18b64de57eadb2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430a8f19edf7b892d90994e5ccb9921b74b6e5ba2e0c76974308df9c300669f6aaf13ffb9a462ec2dceea52a6dbe15247da9914d0e6dc5ea72f0ffaae3db4503e3f83cea2add45b99bade1cbe39cea07fdf4453bfd491a370b4449ebf7f4c1ed31dc5186d605b630be3b94b6c410a06fd4a1ea06a7d34948441906ec6a69221ae6fdfdd25bf3b0c4211fca27c324f36adeee13f48f90b3ed\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1eadfd20b8b123067f65cdb2711a5b7fde7232d267f86269cce114\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c8461b368f31934a4ce48a25b68f2ddd102cb133d1fb003403a084\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f71df66435743447a17b47214bfab60c82bcf2712653a159e431a42a898a0977bd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"65b3e4d1b3e936139f76ca85f303fbefebc21f80d859cc474f7ea7fd2db43d5f0e0cb7d8c1\"\n}\n],\n\"handshake_hash\": \"38eb41ea5be2483c5b7deb6e69f36273defd39f67f3981d2afc29bce76f3a19a\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c73a52dcbe1cf077c55a87557ab951b9c5fa35acde6ae550e8ac3ccff45eeeb71c8522c15ddc9931c51b0f386bec732a39c2c1fe090576b691866556cbebb0d5645c304cd0ac6ab36649d98a7492829ed020753eeccfab3dc52d162850f92611fb8b6bf01fdef3e3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843347e4433313803f9f4f91e7ce7bc7fdac32781c8ac0071ec0d6273b71db304abfa19780651a41abc76823ce61597f724fbba712e38521f2c606cc8c5278776b299404aa915dcf1b2ec04ea57f11ad8b62f425f4efefc00c3b960e09c1818cc373506f9f5b4b3fde49fcd278b7975288de30bb53e9fcce44d3615a597e75e8e7bd8cbec8f113b96c9c56fd9b7a9926cff015bbb6a426c29\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a15bcb1d54c4355cb990fa5d153ab3add4178efa6e32f144249a74\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"771ef9a3c8ff8a202f324ff268fc52054fdc968a18d6fce1b2948d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b0dea31ab83c198e2996dcf19f985c1aa4870ec4a1ca3da85b0895d914bc62b8e1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"54e1f7dab5170fd68e541ef5b36fdf4cd4523d2f3608192a6b9417fd26dfb613a1df7dab6a\"\n}\n],\n\"handshake_hash\": \"e9ee196e0ffc7424bd70e94f07b8a2ee3688e9f87afa233b17d0b52b26aef01362459c68b54bc2f562c74b59b0c7df9b5042b287e64bf3c9eb5ad03c0ef459db\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443ee078b86df9ace253ecadbb6fc02d1c34fbb2b1ea24e3508fa6da030136e514a6559c5d225abb50b8a1fc71b81ed8c21a1a4d9d294878cf0d9507435d21bcd3b62e42db33316f9a27d06d5459b1555c4e56e96e27f2b63a71d9abb1c2336cefc6da3c8b332b9f5254e835307a75d46e5ab3b092dd21f49f8cfff2b50d5aac95f5b05e78bd54299cbfc4303acfd512480c116b56eebd4f5a4dfaaefb5123a1a48b0aea221ace908980fc48f5fdebad1f77cf07c50faafeb692375b390400941d6bb4991843dec373d299ef898a2553af5f247f3bc05325ed88fb03d2aa98a307d3b5f6488d57d0abdf60a5616f736cf36e30f2a0206c49e82bb69bdbda34acffe6ebb04decd68cc339a15de2437815e402a7ade65458b7f5ecf06a0d99c80bafcc0e5e358d6ed82a61f732d84d8660c8a917f520bd8fe500574c0c6a6756f681bbf5b08bd6456c65217c3bddd2f272c87b50665b9bbbf516e7816984835374314e8f0b8d89a2e91b5c7cece290ef2b04a03889ea4191bc7500a481d57978d20231d02c71c9bad5019d346ddf31709c137aeb940059ce83bc2d2677694da5ded29c2eb80259ba199405c19a79dc56d03e67ae67b7457056ba8e737915323ab95e4a3d209273940131b7387cfad1e5de8c009511556fa7fe750bd63649c8fae7d1e9c3a6ec8d83b86fe5c222990740612a01e03cead61f12853a0cae30fc4acd803cd87730d83a3b5f69d29e3d0ad89998bc49e5b735b04d5f14166a6ad52cc5a4dfec6bd2b8774ba860334e85169e87805b0ee0c75553427f04793b0a2eceedd2d5833f58df7e97cf4f295adfe4dfccc3ed1f8394bd792ef929235f41785d9c1d94d37830935a8cb0c7a5bf28f9844625ef5b5a56692e69d87fe42ec50e8bb9993c7d02a4c70435c577f3cd7fc1849b93c07db5c3fe28652bde0d79b8eade981a1aa654aed3d8ca87d0c45c5dde64a6563cf848a26a90e3cdd6c0535e91bf6d3cd07e30fd2c9e3f8be7e1449e24dd1db4d82ac0183dba1c0715fd2e0467206610787e538249504ad3d5baa4519d6034d82004e47cef724726d7674c2a0b1fa6a0008857f86fbf04c065949827b7d3d00a5640d3ddab83b0670b16a5633f485cd25a834aa0e23714bd1d6576f0399c3b5430f6cd0d628ee72c1b84054d4f3836054683a232c06de569fe976329d64e77b0b183c0cf3c73098461f1ac2ceececbc6521671407d0764a998633fed2b5b18f800a0dd1258c2cecf94fdac55a173b129aa87d173f8bf0b6fcbd840296ffe86a7bff07bfd4091af4fe722c7fc12a9cef1178e2cf539ba36fb26c08d172a29db0316453e0b9f31991e9dab31811bddd9c79a73c9da12067fe75677a3f002e76d8e0946d5b41773e966966945830676e2f68410b5b75e7366bc2ab31f6aebe999f00e1b8c1a8741933d989cea88951ce4ab4655a7e2e9a13036145b44c21d5f67a40c3f0e421d9e44f8aad128c7d2063508b451a50197780ea9303ba21b669df5053127fbbe669b1863a105fd749f373887b9e404870439c9ac6abf86c60456551ae05ba729ed1a3a85d59742a522a9855aa50b3f190845a64f6d3e7965fe6551e1ac222239915ae111d34214b823c82abe60019abec159124aa58b3ac46f68c8fcae2e9ebd7f360825ddd238cdfa55cac7ecf8b27b4c2232fc936723658ba8017d39335e78c2d27fcc84fccd802c1f3b9a2460d799ed9a22035e40ffbc58cf01f77c29772f3b4eedf2654f57416092d314d1c167261f5da453006bb3f99b324f69bc9df13efebcfede57b41d3b56c0a7026134b83afd545c9d6fb33dded5162ecfb10e8c02e838183066ab4d26676fbb079afc6eb29f76614c9a3f5f3af88036309c53d6322f677e78ffd6511d4603a056d2a8911f97daa91c94f9a31fcf621eb969e6b653197fb60f2b6fd2759a9d325606ce3edada786b0274307174be33f31296b472730cc26138d0aedc7bfe969e7a6beaf66952b65567b7d5c64cc709f6d3b1094247fd7cb67193d0e52218a904d7a708ebd0e32b2bdce05ee429b8a97225a1bfa8951ba0f2c221c8a87b9d6d342ac93d2e56e21ea2646b7d8deee7a80fa109f331a4e7d4e88c1939e63856b288255c7a919d9ed9f128ae6196d800245538f9308cd11faf266085f415be83d6745ab297e1aded4b82c763ca253a158e479ceec54478e3fc2c6fed08aa0c8bdf3413ba18ba06e6f21ef56c9202969f730f38d7fbca88738466656ca373764c48c9c8b4dfe65ea2d4fce12c2781075c4bfefec58ac8858e98589e294f1e0b5b9d0d46e5d0a8ce12b05b2dad8fc0747fb5f8385345aa94296779a89fcf212a3d5216ac29add0209f6f81c9872362c9b92187892a292c39d94cbcf3f8d3a88eea023f9bea468793598c5197572eacbec6bce31028db6da49a16d01a55b532ae2be63ab5776eb22d60c394fef723c7f6b44bb3da7a8eccb622f7141c4d21cd4de3ef4a703f3b10b3e11fb96e86fa68c760471489a77e71ae9b0c0e9be53a8928dbb32415cce9a10e95bda13e3ee75e50b2a1c6eea83615a92e20dbfcfdc4f3b58d1efded4fc8e313d5b0233172fcb2e41a903c787873a93241f972f640770a027c9fd58cd1bdb193ddc9a883b2d2a07a9d9654c9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843997f3e68e9e33e0f4a0ca5baad0bc0fde3cdc6d31b261694a25b2f1ec190dc643fd0e2a4b2af367bffb39f6e3323625fb53a0dbaaed4a6e508e50319ea5aa203effbd58b482009ab6e8ee5da93df08032992ffd5ad1f0ec0a6b5c3d4db79842084b1d01e866a1f5a61c24d9dac177e3a74d24c10591d5bf90a3e202248df8238e0a74c4a38ee9753b4f5c8e63f7fadff42fd811c61bd578c26d5584e2ff5aec3f1da5d5b7da065cc3478e0bb9b2d421702b334e23d8604e55bbd4cf7890761bba8f3c4c226e72144bee6cd30fcc423aa7dc4a0291e157627405bedddc070f24041edccfcb326418f9fa2fc34ecf730e98741d2266d147fe46386973715d16bc1fe1fb4bc0a9823c5c15dc28fe9a217fc6314f4319bd8386a82ef1b86267db5f9a031a6afd64a1f7e9d0c66ecc2bf910dba73e7bcc17c75b9432be23de4019c8eb11165440f31f0734442526ae1d33a182c24f6b02e0cd2b3a5ddce1c006791692b67eaefd63a013b2cd460d170b37a15ca622fcd515e4fa44d1d4e91375d6d6aeac751ae7cdcd866b8effcd70989501496fc023a66d6da0d0fd5ed63cc829f1775cbf5633b56101f65e49da0a568265b76e32a738b144c200531e0a2ee3dd2da9fd73e879e2290c0c719639d2a2ff99e9a9669ee352a22581da92137f42e62d41af156cc4debbc81fa9b3692b60c75bf1cbf3cc20db0687d9834a98ce8fa79444517f61caf95c81ac7f4a75133e95a747fede145ea2c4aad0f685b60b32ebdf18b24bb85bf84841814cad3a5f9ab71af97cb99e2efa8e21fe7369aa12adfb4df727e0303e3d7bc5edd1b9f38823d751175e07eb72bc9b63d0f6b5c699b188465120b2b967af54982c7d3192ded91256b3f706df6eb8b587de73c0fe5628de3a5cc1b76e71e6921a503b4b7ed04b70d238479b37644584bd073469d50276795eba897a998e4dcc6efde9c20d61a5f3b93adfb5158e56d47d61792f5c29a7378b86a047b71e8702c5c82e106f51e3db8094181a78d0b2426f91a5d45c320bba46350915eb804672eae145ca2225605c4b3713b42c4bafa2f16461ea56ac4f9f9cdbe55a38eab6d22e13b633a47366fead8f0437117d7903e0aba1ece6e19028b39bc974817656199a0059ce501aae1d51da0cc660fa8f1c4936250aec69310ccdf7442f6c43317145420c8053f834b98343e138864fd20f2f440f9aa835ce98b45fb87906e853fbc3e0555fe5275717b93e6db2731cd1c3c9fd14137454c9d2a411868cdf8e5132752e470d1b09fca5a037d7c737e644afae47ae84aead5048b89b8017f107f1fa3bcbc195b835a26e5e9eecc231350c6eb41959673b5fc7c40ceecfe42cd6adfaa0168f05da5771529ad61fe026aa51aade5f76ba5803a3cd0cc985553aaa3ef85e6c549c14921fa1ac44c36f356eae1e468366aacf614b78d8fce0c615764c7345677dab79478efed88456db7c4fcba41606314ecb73b32b690ee8035a94b802618e0271cb1eb451d4f5bb682d2f06d3b3353cf9ef7e8cdbe2c8242ff1a575f305d1ae384b2b23b51b9fe35e04bd43d86bc251ebe6c110006bbb4f6d0b815720f90db64b6ba0b2af2c5110b0755803663f35e74707e84287034ffdee8d0eedaca87e59b5ae8a0023135270ac4f9374a6a09ea2e24452c8e8d3771dd373474b74e2cc6eadd281da1f6db52e42bdc2e9da3ecf4925b6edab024ba39313e7e592d13f35564758c0af18de07fce4fb0049f6b20edf0a5996b693321ed10bcf53a31520951df9e7feb1f4a80d44a37f855bcd044350d742861e9bd5d16d967c2d31caec7a0174c6f07b75525c764b54246813223b724a6193b9ada892bc287f4fcf867da4005652f739adf8db0d2a0486f7e61faeadaac24541a5ecbc2c90edc3fbb571e034ae9ee06f681884b2adcdeef8da15ac781bb8b49611238281422256cbd507a62990edcaa48c344b9a96a333f992f8b1edb81da347f52ac63e1d6a3368773c1250381ef88ea39af6dc4c2caf261e5d2f14c99b491ffbc25286dfc2b3760f199d22935ecd758f388230d81eec15a495c7f67223b5b3090ee45a23b76e401219ae5d36e38880bf115fcd921019d90223bd18325f504e0a62e983df1e0347ed746247493ec43f9a8946fd75ad13e69d345de85414b6f8a4146672e77d9f29d8aa89e075f0a66e33b9b2d60c442a398646817b3e862cf18eba9c3f8a1f99154f895faf259b69f9133e92b2a9e8fb26e26656a90da3f6a0d025bd05da8810e9913c4b334dc54e103d9f79c2aa6ace507fcc12bcd39eba2cc290694b598fb9c1d4897e75109a055b20f32483439f26feb35431959f67281a7a22b3dc1b4a0686c35cd5090dc80f527d63cb071dd2b4d18100d3f638c06c56d48deb5ba435bc853cb1db018e50a61e2ade93ece08bb0ebf440a6348c298ab931f90a52047c56fb3af1661e4f380f4c1aac01b58ecdda3418b44f65225a049a38210af9e9cf8b51d1df970a4783208f5ae6adbb3f8ea06d940a77683117869bb9adc4d66abacaa0d794a9feefc43ba686948003e717b52769a199400c5e5a5f7c76f0c5b30448f77172501d8d923d84a4881dc667f84d47575cafcfb20e26bae1238dd40df209c6d3d0b1c71937421fbbfafd44eb9679376243a352edfbbd2a4f60c71e89521196272747c1178e65e2d9489660a20ed94a09a534514d11c618c2ec512c76f49eae1fc088d36b43cc0f2bafe6ec116dfb3ffb9f5dd31c2dec3caf045b5a7c6b6f3da14f47aaa856554e4b15c7c5718e5bc9d07dbead4e2ed7d33628d9b30306fb8545cc511cf8138e4b72ce2dd0dfb0b26ae8323a20d23de6d7d3869eb06b7141aee93121bcf3a22e37b51e11fb2952eb82e5ef2afa7c92625ab85ae2466b1fab72e6e513e39e632cb412a4ccf4c86ab5f81bab960a684617ceec88233aeb1ce9cf0f69c7485360485258992f836f4afdaf118fdc8396b16cf0440972e6a64dd65261c10252d27418f8cfb6e0a4b344cc216c0e09e9b52876d74a4\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"40c24f99b0504f90a8b03b0d381762d4e7443c452fd37865fe48a2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"64114b7cfd856d9c2e65072eb16818aeb586f011692671c9ffbfc0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7fd15eb83088420f271f36a1458e255baa4f67ffde97dcb7f37f269eaafae966d5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8f81ab2f18bfe54561371d73b2b44651c41b5e22424632a3b5aa0e4d80d6828add7a854967\"\n}\n],\n\"handshake_hash\": \"ff82f6d8501eaab27419e34c3880f820b892bb61d55757e6834bf21f5db0fe2f\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a5dbdaee9d901fae3dfee45ef7a901da65c565e4fb4a53389148ec7a4c87d58a4c248f9cfb70b569ee964a53047947c6548f3dc1768c4547e7dd819113ec4f53a83f4f48718a73343a8b67dfa8426f851edee32a49f2e09116da05977b266cb024e23c2277693b05fb7078930df3a3d63bb00bfaa242b89ca91953bff576dff95f20182594e659d225a9ae52db72abdb6b1d7707d28d9d85748b0dc3edbc99bc742e67d81261c38de3500e4a3d0b7f5186aa26375467a7512732c03e63a555c74b3c1675e62c432eb3a99b3fb4ad8961cda042654df0aafeb83aed46621de174956c896b664013b7eef1fa707599af51f2d485b38d57207130e8b0571f3a7a5f22ecb00a4369fcd28935db6275482f278a3f27a6d328de2e53f87d37dbe66a21f701cd58d3a3fa5bfcf46878b418e7baba39a3e3d353e32ccd1d34516e1ddb2a053c7195ac954072dc06a33502699e999a1b98bcc26bc046c477937a7db5c8222602c48ff6a050319a039f0b9b5b0ead5c53b541508df38e6a4630b6d034179243153596618ee273fddb31b8d92a2ade55d4244f07f34dbcc4bb980f0ffa6e609360ca4f1325d2f9299b8791957b2f366b1ab422c6ef8022e5276c02afaae90a497ef43615fc12c015b6cae48cb87e73ba7c0bc7372cf2d9e23c326dbc46cc4eca03c8bf90ad09ebcd2c174780b3fdff746f63e24a97e09891eba28805a6396453f861c09920098430ea6cfd688d37ca1695edb8cd15ff4b6489c812e5585fbdfb2ec44521643a53d667ae7e9786765130ce9be994dd585561a86c99ecdb0d6b3525eccc54c7881b72c872c5b58d0898eb84d97d11c19fd861e02547865e91c94c6dd3da5258c89bfed64531844b60b3d2da935d4c63d32ee91485eb7c93407eeb6cf90407a889785ef455c4ef6f10dd2c9197a9f8e0abf54cbf4de8a693d094f1bc8a0a343641e3973a15c01cdbf1569580724f54d6851f025a50a9898613afe909f557839fc993e189675b907fc8817904ed3aecb03c3f60f226424d3783045c1d72412ffadde141ac37944865fb4357cb189111179492d27db963a0559a8144cb5731177a269ae70763d77af5737d675e5f4bdef37ddec37504902095a9f17fe98d468de49d0d924404929c292bb6ca915dc1665dcf5c948f4c0163309a1f5a78bdcd7cdf7b9609d1b0f234de3dbb461ee8dee77d9503e29cc3a1dc3bf55d8b33ec8b5cbe61ab8088a4e7b3e8d730359b73f84b4e1653658db01f29164fe4f9ba765b9bd73c9b898665956acbbd987a69cb79747ab6862844d023c60a778b9b9f446ca7fce40cf1d449c3141ce23ece6dcf5f9b58fb8160e7f6dae6ac1bc368f0b7319dfa8a6e312f9c93319b9dab9ce93812508b5aed1be5bd28cd6d1a31a6f22d93be73eb376f447d28a6fb19f42ddc9a7b316843fae4a3f08644348cb7b72d170b072dd5ef08c20a920f150d996c7691f5cb4d971264894eb5f7f8f65c9182e370791d8477eba9a14f2009b8d306d159109a634fe9ece58313a3502cb12accd474fb5f04a2d512111a4cd5f123ccb9ae770db2d0afdb6adee68619abbce838766c2465af940c9468442851352df77cafd2cbd75515a7139bfddd2b145c173356d2257618ca064d27388093efc485266f35938f32bf64827e3a08aa661cc31b208a7fc054964cf4536926fd112d20aab47aba45160f7e627a69dd76390294823655d60c4b90d95ca19fe29ef3df67386e106ca2282dc66a330ca49200a726de67fcf2804b217c42cc1e22b5b7608bcb722b9f1125384cecdf61851d6ac523f568d0370df64986c33bee26a4f45a43cfaf3e376afa875fe897264484f84e8d63602b07bd396f56478bfa37d17fe5f93eda57bdeed38d968860d7bfbe1cd0e5eab4138329517473029f050ba9ab069e5e17a058e4cea3ffcbc6aed5c1857a7ae7af0f0ea21d5261523ce4b0651bd54c25fe94dd601a26d17237ee080c5746126639ede0cf0bd6e2ceae23a79f5ec64e5f90c119360ee94afefaf681481037b7f4607ed4753d8ba22edab3ab9399abfbbc302748370701805abb88d2cf019f23e76987b39bc7c11914b3eb9ccf98635cb368392628e5dae17759ea36b1abd624ce4af926d5eec21fd29b8488be7628ac598b88535ca747c8956c9cdccaa6b25e9c3ac7b5b257e705287b45686e0a0a6d970205eb67aaa2a7458a706a9c0bbe48dde030c81e951bf891df5485af7dfd53ae739f6e1a92858298c0ab93d611496dbce62a8d6f210d4710e7147b19cbc3985623461bcd725235ebed98ded1794b49409209917dcfb70b488b83cebdc9645ae11d73c898fb288c965bcebebe5347a7d1a126c22a1e9ed44b5f5e3f19bac76bebf2da223bdf36181cf1311ec5cc3915e1c6b16cac55b4991d5667bfa9f6b3e37763f5c02a0071668751530f1300247d16d618a10cd2a9ffb218aa2abf01186fc8fee0346290dda742d9351738fc4aa677d6313788b8008cf0f7f60770236591bd29da1e74dec730901b952258c93826eb780d8acfcc3b7856fefab7d57989b6d1a317641a9e4972e0a6b08ff63ad385c9fb83b626645aff4cac07c54f354e97aa72900f848f90a7c714f65db342906797e2857f57176634d990620e1df026\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432ae1029f6aa760032e82543f730a050fc407c245fd17610740a1e362445b46a5a4ebbd32fa687af89dd798b23bbfae59bafebecca8503bc670042891bd4ca0cb2ba45f70beaeeb56978060955544dcfa26fcbe0bd1bdd8cd4e6fafd179b838ff2a8684430e7b06728f8467d46c447510e50e26f9bde1d2d2abae9cc7934d221cbee6d429b389f90bb3f75d54c36a7ad3fdd9ccc05e7b7f376a565b3ff9fd7685e438bd9d18e17ed39bfcc13aa694f75ee2af1172c0139d130dc01f3ac72950b5fd4238e5e4cf33bb0474c1c78b1f47b005d0c1eccf7af6b9bb2969635acda69bd9611d816156fa3f37f41da7e704fbbbadd50df6fe3a4eff0eede6f81437e4537cfaf843265db6896061d0b3b0292207c64bdaa232ce092717e4e54ff7232224e02214b75a785097cbb1a851ff2228c106d824cadbf947dbea98890a9db4ba2a719640a40dd6ad6a772216aacf6515af8f3ea17f81b6ee2825b828f4ccc4dc7379617bf2247c7ec6b54c7a267a608a618098baed0214e145a660f1f01fbcc38952029a1c3351fb0e90bbb517d9da6b712f6a8d59ac5f5abc468ee41edb2729037beb2f8fddc7a869bc65f6f70972a6ee3dceb280c7ff163a8be551fa743c3e787afca1ebb77820332e00752665336c4021fc584bd1052289dda8786343ed4d8fa1a5c3ee246792109371fdd8212e85476571181b6d2546613c90eaba410248a8a14cecccf3224699cd7e8642f800ebf9d9235c20f8b46db0044607e6a0ba5b86ce4c0a98dc4e6fc263661d20e6afd2861e39bdcf5da4987a75e8ab339aff283deaf721d31f5622442ab59ca8703e3e70733ab2a404c3a77930d39f01a4a8924e3c847e87b37bdb8f4350b650233c6428e50c38b6377d4ff70d9852fb860bafe034b30bda3dba34233a6a8c2cb2b33ab71638a5f3be78c2c67bf2e7f4a8d62813f9506ca8c7b107116e8d7f347886f5c723e9f192d734a9ab51af994ee0c9f1109c2edcee96c2e4a64ae039866b16756303d08d652cea29ed18ac1fcedb20d2ee6cf6ef6f1328e1d59e3ef645f7e956bc7ae35626483349b5a84fa5688ba0fe36a88b835d1f0fdd26811c4de6f1514d916eedce2982e94cd12fb7b1163cae8bf282a6cbde1e44390b1add3e35cc81b13d19f408a22887971e207adb4ab12f4deaa71ae3bcc433dfb7aaeac45035e78b2d3a488a5acca177b1712a01be38a2b2bab43c1f2e07cf8e92e9f1262f05aff9cc32233cb230bf08d0b6598b72a17e45915ca06e3b3caed31b89caf44f2b08be204f7b54043ba497e837eac58ad9e96a92175101f528ebb16e482b527f56ff9e3bfbadfdb475f538e883fe66938ad21779f6ae1eb3b16358dcbdd4760262dc4cefbda9bf70ebfe4bc61bd0131d388ebe8fa5db0a15bcb3ac18be506d4d8f13f6744ae02f1fb698fb8579874f2af56efd0512f89ecb64fcaeb619667311ab18d3f9a7fae215f2589caae965c6c9c4e8a0b85d1de2d39d2c7b966af0eb04b7dfa7b4647d07cbf0fda87dc1d51828165dda8b90411c23d9328e95ea0cc5888cb6f278de8385b4a04bf79989f90384b9983760b01f545a3873ad6ecb4e514a46ec6e7a0fda2e7526fe15d15757ba8acb6008dd6751611699055c41ae50de78fe134e598f8dde32f12cc447de921cbb8be884765bed79efc0e7cac9278e47e9aadf978c9f7ce2e663b83a7c63f3ba5627ae1ad89dfedbcd08a62dd374d141b6f95fad9d2fe3bccea4604beb9282ba59d592a12e42dfd926e31bbfe9f80f69f25a356447ee9aa21315c3c0387dadb59594394eec50b22e28a3affcffcb2849d043b2df65ece42be2fd3823afafaa7859347a200a0315f501d112e7198d1d03f79d78cf083bc99c40bf8b3446931f82adaa5175e8d63484d4e7741f87f47cea2acfe6bdf0d480897e25660f8c18edba89ad5f2f74c75380ecc3b4d7002418183fc988f54c7d64ccbd3eb340048a5ae5884e77c922962a6f03783acb00df07cfc7ce552622362a7a60e22edb999a4cbc83722aa8a341fc03f694f48460db245572bb3102b761f2b4fbbd188fc778cad0f02ef35d6c92f09f8e34e4092f019dafe71e97c0547d4e24ad14bdd4ca0915aad631b12a638d80f052b80b2d617f1de28a9f1ba475641f2682b957015e95b91a1617877ba68112146bfc33e506bf9950729f543a95347feecede24381cee876233174f5fe448b75d5e80c8b08c5cfe00aa73a1bc41f1b7e49c853c1a8429defa89baa347533a992a8c86a4d9435447b71af9e881804b81f30e68122006dc9497946c5732600046473f6c21bd7edc38c79a2db19c5a42b0c5f799fd0bdd301cba11407827bcf92716484f5d124527b0eff2dfed03cf2c722a6114d2f802d4c077088231b3225e670c37b8f8342b0c9371c09c487edb904d5006606dc90533b204a7a5deaa4753d4ff392505e53b9eadf3ac22463c174605021968b3c4b7b7fbdcef737bdf14e3d9fdb4c43c04c0d70ba2925e97ff39032a2ab8b416a7ed75f7a29ce3a3e99e6b0cd0dbec9990cccf9d5147ca605b0e77e5a3bb3fa07fe986cbf3d31e108387d2143d5e434130d4045d6dd313a117ad90a1eab963359634fb973d925de084e793463c868004a4e1acacb615581674a10398d643fbdac949c874bbce9b9fc86ea7a600b0a6c7a2c20903213f0d668dc34661b65bc97df2932e8a72d95a44110b5769ab9261f926aa541e0143b3b90afe51372baa415282b5be365e5c1106a763610c036e86f0d8504cd71cf27d8f81a322dfe3a0ef2bfdfe85a548250bb74b1fb5fbc6554c9857b29e607f50981d30fdbbeb84aba06b3268a262b28efd878df92b0e24c2adf1dfedd8aa43ec1fb8c4c393175788995513d419435b4b3e96429789a1103ca0e29c934a35ca4f7518602b46710644f1fb0f6da11a241109a5f9260654da87910b7ef9edae501bf1f5e7b6881e02c288c772e431d1218845403225fc6d88059bfb7179015bc722089aa2c8ae5ce831c0a3984bb728695ebd7fc6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"411aa8a061ef8b7044ae31f9ccdbf31dfbed5f5d47633d627e577e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"91d7df4bd23271d675d3ec077cabf815dbd029aff9cdb3e243ce05\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a0196fbdb23efa10887eec8d868783234cf0c36dd17e1a89d059a30cb8d5ec9577\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5f3f9f3227ff5b94e519c17e992b2031a4eba50935a704a155cf5fa27e08d198dd27a01a8b\"\n}\n],\n\"handshake_hash\": \"f11c54db53e01df8e36a62f20a284bf862a136e0c955af27a1a54b567f81c93ab481efc426e427833cf69303dc2e3e1f6afeb5e55d1b41e23b85553bf27439cf\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cf7f0e30f199f698af4ac5df760c5fb74485e0bfb346f450521cbc6d3dff1019689a097c25524be3a1e42f3746f7ffb859b7fe0222dc8b3d32fd417ff7cc183c3d60e1762824098776942bcc5ecee2cf0cef62f306d5e1e4eabc4d1552e6b84b865f7f420339e8b22dc485646079e11657c834118223639330150c034ef81d26862974ed0d9680851c09e157be3cedfe468e2a49f3e5d4f1e37562e7ee94cd015d11937deb324779d088407f66f9407341b2313dfadd51b5a45a41d602df64d4c28fd0c44c23134af0ca913334f464acc29be1aefa3a26e28a93022d5f75ad1c9bbd436e9d322756cd51e42b5e1de94ab31d945be7fa51fc238dd54825c6c190c85cc65f27aff54926dbe0653a313217901878fa40cbaa0aae41f37fb79db5aad963ad84d23a3cd0610a2cb1821d5b11a452750d85f5aa6cfd71dd5bf74de47194a39bc490513c0d446bbc7aff644ffe2893439b1bede8f91c51882f8b1468fcc32257e48f385dec4ff752f8c02c7d1f42b8f07cb1d9354c91323e33b7a69dffae85800c570ef8025442337b83c54f8fa8b490920cf36fa31daa6bec7535cabdc147e547cabca1b36312b65485a8c58f00cbfe00d2a2b9a7b78378f02f7e95f5d37e982231e2e29385f7acd0d42250a4cdf2aa860c3b33e91c3d43c20f82e48c05fd5c1cf84fd281254e79dd3619fdfbe44269dbde5dcc75228852cf27f7f1e42d5d3116a02086981a0c6c1f42443a959a95882f2c7769ec3c73814922ed952321658acc9a10811eba966b5e6149ebbcd0dcde3797ea12e13f18836995f3dfacfcb73bee8449246f3c848e8e0d8e8a03e29f38e5f4df446ab4d60f703ff6997d7cf936cc6a2b0dcd09dbe67f86bcf6970c6aabb92c0ccab5f81f2c902f487255e1f7285cdb503db9b5a4d4adc699dcfb005c0068b35716fa71d5cb0e0ee3eae94adb838018ed18b13fedb716e29ed2573911b3bbd188a20c656701497cd6064d382ec5b73a85f27f4515d24e965e296c84fcf305c9b687023fb89d3f58ba65e246e53cf554d2491dbb24fb1bd88ac6a31b28b5a14937a90f1f89b4e46a7cc331b4b636d46700ad7b3025b3bea160daed0a2b9744b04e54d1eb2dfe7392dc7dc3434e75514a8c15bc1453dc35de2bda9726e4e2c0b19e4e73019f0fd80e5596add29532c6e077bc927253abe75ef4c2613125841e0d49d241a267a10703ba8bcddd4dd61aa1a6c53264d58d3f7a37b7661e42540dc6c3092c87fa13e6e90fe25549ad2b28a4da979420e78e82dcc3b8ea1eb8e323dc9d334f6b98ef5ce1b7b58b1f921e56bdf2821e923e4cd51db3c8a5745f133a220c757a2b01649c4ac84a8eddbc6e0ccbc734b66d4cf6d6f23c7c0808914ce7c5ea7222c2314a210d609554ab6e19b07130ffd3044a5f8f73ec57ca34bbd158ac84c22b2c8142c2c19d6642c076b40484987db014afcac53d63f9406454c68a962500159ffab1f0609df088f743e9587a1082167fa29426d165e39fc037a3806ba07fb56e910b68dcafb6d447cd0015ba1e76cfdf8913534610987a983c53d9c6e7be4b1dbbd2535a2b7a80f76e5213740f406ff0bad21b4f285dc4386de9fc59923f7fc8b6ff2a07c8ece767adad8e4a27462df881c3705d9cf54aade12aa62bf6e8dee3ff9f0a9eef153a5b70247da92acffdeb1a1dffc9849372c8b9eba2e7069e6eebb8eeffb64325fe334397bf039a627e6e99c7ca55bb700399804e41364012a90a7647940915eefb89c05590254230a8cc5b349f32dcfe807adb2d9f4261d71e80fefc7c76964482bdb800ac9f26a0c0a67c7460ae82bcce4518e63d037591287ef4023740ef475ed54fefc4c4c1769ffbeff0f27b954792918c42883b5230c27c5cf61cd87c70e94e30054d71946a38ffbc28565379e7b23b70d1ecf8a9cc7993d0aa37d74c6124a5cb8841c0c1d4b324189c949f4ffb22a5ab35f014d75ba0e9895cdf5943ddcb5f8d936c71878701c2def75ece13df234d987e6d1a2710c816bbc6e452ac3f8932d3aea532e470783228f99b3779c4e5fc2e19b9153a68351bfb481a6f3712cc3a4dd29127c3e8aaca1ec8dd17501307f18d96258dc4f0d8ed25af42cadfe392f054460177fd3b88df3f6f93ee5ee194b9090f085a71866bf6cb6f54b11cefc928203bc1d533740018be4085a644a8fd578ef35270d780a9b0ba94b7e5a0d968d172b65f035d0682cd5384e580362361b7a10a6f269a637a140806e9bd9c800a1e266099f5678b371c8dbd4102fc33225de0722c6595161fe35c4e36773238b9ab0a62ab1b46f4e99576172fd6c5be04a541281243f6ca0564aa0fa51229af1ae530302c501ff92593e999e13829e2453016ee8f091bb4743bbdea3248103a1e6cb63b27eb15bd0df9bdfdcc6fd543459d7706c24c8fa7e658cf39b2a756a7f46c172e64505fd3a1cc6c2fa390a94129851b14534c051122ec1bc1ed7c68e18b64030b4477b7bd9cbe53e2be78a1885f4ed2269486e521d1e02319c41c62738d18990991fce7ad7e3fa021c4bf2e18dc1570ba8e263e6601cecec012714c94273fbf876102c451efb9ef4c06479f0f88c40b3517726e8bd2ad160bda9c3aa5fa4254e80b5f11decb3f6b50518420920\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843621c4d097a00155a8d2bf62580747738658a5dca5194bd219dea3e484c06e396c2b703e8c6fc5fd639240c49f5d7016e6b21cd9acbd27ff57eb387f8fcb73cf13a81ae3afd55800afe9d6be10b46fe397778dab414c6a10d8532755e34a3896b9541b35d109524f44d529d34a130208a6fec01d5ebb9e31618e3c156f30d96fa86b272b145fa29f82e01c19609ce0c4ca3d804967045ac5c891fb5ddeac3a7ab53d331527ef5cbd6333803945be65e8b5693e78dd44b4f99860a7b76e2c59b03e669e19b80a6e0b7210fc256fbed7cb3dabb18c9122650aa7d734032c8f70cfed2fcbea6d38cfc8a7b7c02c276e8ddf55ea4ef64ab70016c4a58dfc2bc72e46c71940455b7fa5e4c9deefb35095449e6a33b62c944f7a6c904c6b57b2f2253c84775180b4f7ddb88ea1db4cdab96668d224b99a819e8f5ac3d0a4661ac618b3600f949c69538c07ff86cf99e8e603b0684866aaae7e83ff20c3591587da183e73b4ae4301a7066ca0287bc6e8982c8d7391d3b46cd39f010194af6992d10e29c209b612c6a2169a1e64d04675153c479195ca501dcfdb6d7ceb980667a162b11933793db905cac45ad12b61339f13a3f95d051d3296a4ff9ba967ab0a45b972fb25c822a40e1be56720460ec86f6b3dca5c652ca8d03213cae56532221f980316492a6f89a3670ee5531e597e021b5f1600e03a025a0af253ce8d2fabdd75d3e62f97a586117a3eacaef08a5e1c8465dc5926b530dc7fc7b678dd88d68893a784f1e74c126f5a3d0adefa56da8457a29a0aead78101124fca2240294577fbe4c4c8b1ddcec812f8febd7845ee3f11dc89a06abff85623468ed3152934241f7dc274361ebaf7458852e4fd855de32e53f645c6ed7c2e0c7eed13a9512dca00c38b393cce1d71614bd877049f24e5aa3359b71fb186995cfb552c70400e49fa8595ab5b634d0cb6531d66c5dbbb415f78e6a53f352b6f601cef3cc83d30682b8304bec341effd22320b65f7b9028b9f7fbd011c48c93bf69a0852178f7c6d53aa2a2f3ea7508b5d0ce921ab857d314e2acff5f91ed992c22a41236a6961a7e822ad63c38b16d22fb46c29503a961ffcc8b65cfe6b1409ad4e2896ed23adf1c50eb38945e6ec6d4b4e98179343590b287744314ee997a1ac2cbb5bb1712228d0f2919d311dbe08982f732aa71d0d2738f3ff95f261e625b5f438d657f39bb36933fc490678ea7034492fac7c699aae154f63110e2247fcfcf5f0ebbf8e225589351f436c1339b35f7f65adef111041a982270e3a1c22f691e16efdcf32b8776387cfacdc836c5f6027d04746be368524efaff8bbc269e69b0401a1701a0686ccf1004cafbfcd614c48a9ac8509dc7018e940c906a6c5c2babb48ef6fd9206594cbc5bedf068c760c3f8e6c0785c976794abc1a16dff816861427b35407303c34fa2906540cdf6b61629ea6a2b7068bae011dda46724c6fe2c0236e6fb85b8d826f7dc040c7947ae16911dba4d924fd942f72ca43706e779407ee0ea556dcd3561f4089ff345c2a8c4cd89b159a61dc280e6a1f1c40958687f6c7c7faecac2bec437cc2926ac11dd711bc8bf9d713eade87638e46a7502ff605c0ed7c4fd765d8ed2d8081188e7306115f51fc1be486cd238e03b9ce9b6b02a029cd96e21fc72517d05849c4984ade5df666379d58f2b73fa8a4139cad0376f4f4a8fd418c297084f710b4e3542820e0401139e8ff5c74cb88cf8fd538296cbd0adb3765984202cc6eb5628e000932d819ed940cc62c373b465d01134334d4c91db214597a2a407ea1b9d70741f746a6890f1e41e17a8dba47ed8a360d3edbff939d438c4398e6d84b2a7eddee91f823035dd9d6ed9b95a4bcb9fb20fe20320a9949b361154e738d6a2854215eac710de4d02256153cc5f5b9ad9d9779b1a8895e42802aebde85cdba894c132182013ddbc472c7829a818ebbafda9810f2d79272d6a866427b6e3ecc09e119bbf94c1695283dc6e2a9bcc624f3b1859c7477d2d704ab58821a80ba9585fad7ff7f6d4dc777401fa5d0b4aa050c9d225d3f95749e2e6f8295fc036acc2b38b41c68598c8c772c55aaf9071e6976264af42fe9399b8dcb74d448d92e3d303996614a22899e1a295df615b59caa035b83650ce6626bb76b0053eecbcb25a64558446bf292201782bf263c38dce7cc73d102998c4463bb0f685d06719358fab992b97490187e4968871effd54db4152712ac0dd8d868e2c80da82c190f7eb389f38ad483bf17159634aba09f66f055cc8c72f8bb0c3af9f2e8f606ca03681af5afd822f4eeebeeccd6906e3525023f87c3e5b74b4bece27f216e70b9c695da9b047cd5ca404cdb2036679a9ca7e1fcb40182803aefd0a4b20115457db086bcdaa4ce216f477b5e0f3da43db1f590c1c0d3bc120a9815aae4a84f131f6b910f2672d4e9bcf460393ad8943faf0534b52129e44880710c3f61a47a9125fab308c28f39eaf24a4596fa8d9081d81b166cf854ff4f4e385a8df5fd59ff2d0c732336aec16a5e14fcce433d4f87b681855844f0cc1fa7ae84b12e36b77cab3aa864d24e4d08e9a79534b9ce5f46143ee0626a3e1a9a7d5caf93ea2df18f1c896938fb302998273c09bb2c33ce562afdf7994b3987dbc68a4ca7c82573a229e86919e7765a7501dd3eb434aa602a06fa4055b8d88acdef13797c1c59c88670b76d52025a657e57c7a905eec37f681f0ef949459b12898a5136e741e703567697c94126095c4e85ae7296bc0b733b1d593fb51d3d9e8254be3809a6775a3e4a461e9c9be017e6e34c8d17138044ba3a50b69897bfd539b4a029051d3bd81e6984bb830c0dfca850fa9cf4d579ca14bbe9b1559e87076d3691957ff0f286a1200ff31a9f66d882cb68b75af9789f95e9e2c5b3ccee24a366f60757e6e4bc01c4c4453571d1664477d5a4be3f0a5916982bc488372c0fccb5cba0964816cf1265336898b30f6fe0c69299ce32e39b428cd293d4845dad88db5436c48e90dbb1d77\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d07e017acf252a6910f2563c28285ae4d4f2058e9c264bebd2556c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"72242473d5ccd72c883cec366ccb14d13abc35154156464e1e0fe5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"75ffa316c6e5c74b661c70dbd07937191ebbb23065cbc42f62e998a01a1bf10f37\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"622d46be88ad9822580de5d13bf543bfa777ee2bcc03d970794f3c1f6ba8675c982147d6cf\"\n}\n],\n\"handshake_hash\": \"abd4495b93ed24a0b18fb4b39ecf3a0befe7c6808f6337dd7e7093414f7ef9a5\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d70f34b4f8df904857ff13912f04ed701931cb3d39ffa9b37a68d357871a3d62842de5ee63d7ab73846784843940e5dd39b7132af13907ab18179177e618f08894bd00aef7a93d6e4a0c4a8398753e8a98db14eecd5c7b45ad7158e9898464bf215937e165757e95bf3d76970ed9fabe01ffe80a011147bc2618129b5627348f1f13ebe2d5a9febc4de46790b6d2dd707ea1e21fb54b038193e2e4bced6da5acd2fb7d7afdaead313c3227360b7fdf792914428823c3d71556be20ade7f7e14a25f75ec0071c1a8c5b3f0bf888ecf28d776cb6380c1f625fb976f44281b870b0d0707b14eace460418239a62432234341f3aabdabb5bdd6c431d343ec9021d696a463c911f8068962a1f855ce85fd2c3c5144d2377490ba50a54e8cf752ca84bb1ef742bb59d8dfc145caf2713fb641546c175c55f1a94ccfefed06b91e37bce8e4823ebc8cc435e4c5f63e3b6e467e8b2f5ee3638211883ac588cc12d53c2a4fbf6f83327f1c18ecbe44e3c026233d481246cebed2be9266b42950f8f4301afefc9d517a73d9cf103c8845e217cd96fc77f5b818d40929f7e4c7a797365319444299031f85283ea43838804077e4d85a822c66707db61cf5b6e2e42fdd7884c65672dbe412f5e418bd919bf6e70991a4d1788699c1b1d7cf7f681d8c5b1eca271ce68942f3d6ad6f38309bc21b8901603b40b5b4b85c1a141afb3c55699ac5764e3b05165592c3a55fa0ea813e4bf1f94e7c05b2e4c172ecaba67b998bc7303f30122be2a0031b78fc0f26caac7f1356cf317cd0cd57ff8eae351e58f96091896614788ed2f0e77524e65bf08e8f3aade25a9d3cdba80eee17095aef2f74c49529955f62066aad0175dd66586ae43c48080f52f294025f0b1ead8dfa53846a892a852ae435583d434a5b8fcd63daf33edc5b0dd2710d990847dd324d6f702c3e1e1b4333ef61c7aef11f5003e04bc0c119d6bb5e7b9afbed6691f65a09303503bb0d24e12a088b8f7a4145737e960f95808b3b9d56d5d4cf6b8389bff74cccb64bc300845840a6b24830549d867940dcb86bd4a1bcf5fabbb7d1a22b4688e21a56fda7eafbb646585850910e864388bc11773887ff15762279b378c118aa03a8632591d49872532381d3196589d24c317a4048608b178ed0015738f417b8658f2773067cf01b7361912522652c4c161dae2b90ad8222d21582d2341dd3d3c39622426ec6e53fadc1d920d96093f7a6870e8092f8fee4932a3b12e178a50a15772484ecaa85e928fd6ad77e6a4ce0ce22b6caff477b7dbe32a03058014c69889a79f1885fa7993636315924c4cb0ae8761a0b64c4af14f78b6745bc89118f005541f1185988cf6d7f089abc18f8f0f4c3b7544cf1de2b5aea6dd9ea44233386acba02c065512258d244a3d399321bf11a448f50187270d8a55196bcbcf2c3e03c57be9f3630c4947d042f0304840443a39c3ad515e02ee09b36de1c61513eab3a2fcaa9cad4b7ac878af797d5291af820d4b75d5b7139fe4b92e731c64157e9f97d2f57d8438c189e1c37bc2c9be2b56bf40031b76a153b0335d37fc44941ec0db12841ed6531f7b4554cbe14e4eee777a6096e2500161a3f7d7c42a28cd94a8c9f35c51b7eaf400174ded5d0f0116ee20779450b0858f7bd84d2109e3f5baa9345023378acb07a375048f3cddc4f2c4c95aba8713908b6c60370e7ba48044ef1d1fad9de9cd9c8a1056d16f2dc5c1980b6671a80214d81a7624abd90a407a619748c6cb6c4832e08af91fc966738beddb3e86b87265d59aed7c80b638c4358ca84690cfa561ebf122e61bc887dffa77d0795bf12ee7baef6a42b6b5b06b7e5b5348918a5d10dbe0d38e9ae548377f706703eae87e9717997d099158c92256740b36f93f370f1de834ec04d6d3c51dfb9bff713d6c13dee5be0f6935d0631c1361b0d117091e5a9bf7a58237dda7c9c4c002f8aa9e71e60fee2e65b09db9aff0204630cc882b1988daf909bdc9390d910f12432688d9ba1679987fb447038fa3e6c124f62f80730a4bb085ae1517a826930c973ab708da3af84c596039efe68f4e0424978ac50963f73cbfe492f4401d7ea44323d07f70cd9b99779697500fba0a1345309ee6479480d63152de2a3036d3e5567ebfa43c16492c0478dd9b642b11c8efa7752014473adf7d949ac8564cacfeba693417a0d601c95e24a0ce9c9505608e058f3b21cfde16cd51ed780a7c319fc9cec23b5bafa9b62bb1c4867c6307e66cd4494aee58116ee32e2ff6346f80bd3546af999912903873804f4b877a1f63bbf7d99f3d3a79f267992dcc3aef8e7d4e7befc6c8e5a93d9ba9198b5b83c42c034447a0d2c88457417430774c1e08a6b50d3083fe3f6acbbe37188cf3246845ffac4df0db57049f2eeb465e89e13c37fa288f5a7ffe422ead63451a63bcdab5d97d643ece4fc6ddd9afca5195fa4a0d5fca9df121a0e41987d208c43a44781b8b5756289af521b0027f255cc9c1938c7239700499426a0787ce42ca8b0012ad954d421252ab2bcac3f6293e54bcfdcc6bb69a4aa4bf1b20fefbcc802673d764477ad6f9c0a37557b053faec7e38d891c9cd1a2dbddc9fbca3db74df988423461b39eefa2aaa59415e61182e32eb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088434f35d7e22cd040106e04bdfaa253b985688835620713cd3beeccec171b17418cd1cfce9836c00c12f0a3b5ba37838d3462c2b826dd3a14eade175cce1b309176810f39343f175cc753a9d763c367fc91f20701802e2ae5f8559b04da1a359b674b81e7c5546bacaeb652e364f746b343e1af088b60e3a9858ee6985d0c96e5d9c2db0156e740caa8d33a6fdf7b66d641ee792a25c547f8b3e16c56859eea73f3953d4ff712c8aa645a81d6b6807312b7c2a710b1651af94875024c04a3994d8026c2e0781de29d91931056f11afad22486e06dd451ea15e574cc4a9cc39d482e67ab8e12cc92a908398e6b01ce36f6635993a748fe39a39d94795970fc3a25b123dd6ccc932c70e49b1938ca7d8064cccc78f759cf3ce0722be05911acf50796ab4ca98bad6f5c9ef5f40b8bb8cb1b384d78db046daf4591366c3672c069bca0d4fee40457ce54f7e3e97b9bbb25fe970a60ba40709aa5b42db90083bda39b9f06067c8988482715ff0c3d41bbb70b940262d22e4cf84c97ea1ec2942e0328e2e2ba006db0ae7e209253c942617869fa31f953030c35628e6270a5bd4b2406331c545338332f37e922ea5cc310f33b84c5179f4852178acaf5a281bbbf059477a64ea15b337ced7af8024e98b36c349eeed5ef3477633e5a5536a8d1910797e503b97697759c9436cedd9f3234990d3116748a1a377186f43a43980246d1ec44fcdb7a1d76a46154602dc9b1ad4e07f2fc99d9fd265836b74fffd53a2896c3296cb09e20cac59672781396ba9c91345e56a5285378eb5aa1e683596c3d09aceaa4cac8ff2d89ed750b46e81e28f498778135c6a4859dacffa596963ff45acc1c0836b632f5cd1f6f0e53808dbe93e1338855119171c1c6cd453b51dea4621e21d931f56af4ad48accfd82040b664d05eb41d75452e6346e3fb6d46776da53c22a7a955a77bcf15655ca1992e14bc3fd7a0c7d3fa029134853dcd3dbf790cfd5011c408dfe0563a7b04afd89e0703e324e35b1c89dd36c634584c62f919363d7ee934551eb7bc9016be52cd6335e19b9f784a76d7d1972f0a661af9741de3a912b0468675b0cafdaeac1ccf20f9c4eb1ec88fa406667188746f55da002e12e98f1ad32af7d9f6957cef47179ccb66ed871a71f6d2a5b93dc8eb290f87647727898f17b67e7c907a2386fce36340c5df2e75895a5e5faa9e685158d0ac46b3debd0d747ec4ef0e075d53cb7f0f45ce97298296d1cfb27d6626ecbac59102fa40cea5c86aeeacbdbdf2d0863e72e5d73892840fb7be0b2501bcf6a2acecc927d019003f5aad3dea9008b8d484004c1a165357c509b7132be235adbfcf5a9dac714f2892f5603bd3d6dee1f1556ca51b46145e3451e2c045af025d84853cab00744c0dbbf9d30ab02501992de76e60321e09c9a69dc74e0f469612a2a1af7bf264804973067dda11fc25d97c9e283f33b28b726ae58af877d90e718ce4f07e2ae005eda39a75132de665c252d8c9283bcbf7a3e9db71088ee492f2ee1bc2506170a75fa2f3b77eca8dbfd99a5bca1b8f787fa95504c76d2a631d92aa5773e5b82edc35c5e5f0c3891a59932da26df63b185871f613a401d69435e4bd7cedbd0d2d5f7c564dbc332bda8e5d5f9886882959032ef915da6bdd1705514666b728669b2e8aa75b0542ddf3daa9784055a5c10f488d8f38294190cda21c0df281acfaf54ef71746491ba569191bcad39b720a9e044810468a30c4e0b56ff02d5699807659ab25052f45cafc26fcf3a4bfdf330635a34eadf95b65ea439101afa2ae846f9946b3ea9a82601429bcb3069104365786624bc89b1aac6853e68cbdbc90986bea69c08f01d3c718a0a18f8a8fb8185843a293a2f29db4565811929590cae8f4a4a54b91b2bfb8376f734e090a341f06efba8169a2b97db270e1434ac53d272a06f67903ffbcf84ec96a824f42910c1c1fbcf86ccf6a600e4d33a00074c1d14cca4c044ce21d41a370bd6e61de9239ae3e4281f4aa06c63a0d62bd8530612454bac0f5e2bef7008981440018a9be7c84cb2f00321aa0d0ff0b5c44bc6c4d9a1f70ed79ae6f3e52e36c2e69292bf39f9050308374ad2b115db9c7514e2e30f311f23f91df3bd730c09808a9ad73bf6156e3717773fa3bb3f8548e4ba99e4a6ae8df697f2552abb4f898eb31f89b7a500d27ed69c642823c4b01308dcf07d9361cfb443790438ab055e7a65e9a5ce7e88ef241a75d6dc3d8efd3aa8e6d42e31081693bd69d042f647a24b1b600603742d2f8729f5e85b20b7a722b9a49d1998c41e4dc3cf83eb17bba23825b5a13281dccee5278e86c71513fc505f99d872082b3eec898245ae1eac544bc135aed0310df8b6130f333ba6307e9fb99676ee57ce9beff7c201df11ec7067b47d9298e7a8019301694cb23c32f9ae9be4410bca5f854faec5fcef3d43f2191d04432073dda8cdbc209d032ea0ffbcaa55ae978949cec58f35eafa2ac0bbf91c32fbb0a78900bf7bdf05837ab269fb48b02246f521cd99e7ee194613e24a5b8616590973528c4d3b102b71edb0064a3758de780fd5994dbaaaba3f74dc69b239db576e9a6eb6e2789c8beacf37179d5f7c728cf8506676811ed529efcd863826491d3249c7cd22329769fcab1ffc6880a27725238e4f72b3be525181c92f06b74a98ccb53f6c2be69f581d77a9d172aa69a9ee3799ea2791ee94625d3d3fb82717bba439f7034a5029cbb2279cbce1997bd08cd4cabd97555509339df9a177b82aa5f62a1f9b4eb375ddef9214333108e7bcafa60b0ea0dc0b370f1c3f525d89da12812acddb8425ab6b979e7ae17352374a5a85e37b2324c219ef07d4ba00bb6d64e6e22eb991093abc38241c16a5f292553e5369fa3fed22bb4831cfc7c9a2a548e03875bff2fd4dd4aae36a7fc97db7f851b8ace7d3ebc3d2068d46658289ef447c8aa118cf57486b4089a6006b815a58a92824f22fbe1d97c26cfc386a7376ef07e7f738da0b1fd7f737394b73f8ad7f2aa825e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"78346a7d2d58cbfb17562026a7beaed7a42edda785bacb3f525b3f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"75d8492098a30d328304132345d2c78853a48b5ac110c5390fe200\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a6bbf4fd543fb45846ba437b0a742dcb6cb469364ffc3b2ab3532e13abd947259c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2735f98d2a7ace10cef6f0606dc1e59350c8557fab1d8444e4f3b36f6a2773c2c06f1665d8\"\n}\n],\n\"handshake_hash\": \"9b1c3129b3b53e0c2b4dfe62cc5e83f221afe43d0103791ffa65d86a0e67a36bb0463ed0b3a04bf821eea8bd7e39e362b47cb274cbf183614e5dadfee5823fb0\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448e1ab423524378497d6d49f0e76262209afa9cc99bb56d130945a5c2a103497ae0950504f4e47084fb18f6da05190aceadbcb79a1877066330d64bdb8d1eb2672fac5b495deecdd93714edaa486284cfe70e13b186c2ff25041ef66db0a4d93d9bbe241d6060db88\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884314eec234b25ab95e83e938bf140e0cb00300c15f5c4c459f3a0ab8207755b13f0cfdeb7cff3d953229373d94ab2858e625def8dc7b6d60d781eaa26e5749fe1c388fef0161d45960de7e39b087bcffdae635f5381a3947510bcc45c43ab33e02a4d3f7bffa05688e3ddb93c3cabf4bda02e277baad1ab456b77a8e3279e22c6d340017dd55975ca2f7c906133d1099119edc4a104d3069\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"259d30ffa356e2230366ac81ef692ef171ef4a9b05e361e14e7bdd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"107a16bb6fa3c28afe39cc5284cc58076149d2925b7ca555cea1e4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fad6e9175453b3c9a4b637e864417a20a0feb39a98b962be9e5ab3ac4ec0922764\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1962606408fa548c2eab9a741504b4e37b103796e2c00ae6f3fd304c9998e56e0a6fc42886\"\n}\n],\n\"handshake_hash\": \"31128e4168d2920748a90ecc3b51ac792e4041055c222f18a1775861de733d71\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944238622b3b921ca0bb609b307937a7aaab5aaa1e9991b4c8bd0efab0fd6adf4808dbdfe20a7ba7401a504c47d08056bd1dd24ab16d7e281cd4f5419e5ff12f559f73fa9dd08d34c106609d2507bb6cd58a202ab79628111ba7ec7b0080a9825a243f37b5116c54af6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843246570e1caa0c59e45ac91d4b9872b1eaf4cd9ece68771701d02dd8582309fbe6ba5848262bee4fd14466f31da6cbaa59391d8df986d7ad057cd131e01d724d1a8992bf3e41682c3747c5bc7f8a9e4a3ff833b339fdbfaf06d08d5490c0730034c2edb82fe8e7fce9f9a1c2efc7ac464146e11ab427d1dd5b2cbc4dd60aad8df529f4e9b65410e639345b3a28f8fd913168b833381e98a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"90dbcaf4d8c4c0dae5b59f41392d609ce5580a976a6a69fcfa9225\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bbc51f0f170abddcf7e152e100ae72b405d078957b4073cf56861e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"35066316945107dc66c0b86c0713ccd1be6228a4cb25bd937a8eccced11aafe93c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bf3c5fc88215191a8bc6b665791a14c584b4239628c36a40182534e1c7f4ea19bb77836c11\"\n}\n],\n\"handshake_hash\": \"91dae0fea1aef35247ea5554a4e180eef451affcd4849168f717cca140886ef81e332a791ea974b2a9ed0646153832c73d2094a6676292621b690c2ad16d0c38\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e40fd17820c8309832a861400e3ee628314c1c65f6cfb0417a9f150a3bd45afe2c6d81d5a3e4efcc8759decb13bfe75d839f1647029f8918d0b6aeb726baa602bf0c5f87bddc67bc3ac1f085b1140aa7b1f67f05e1f8fc14cd8fbbf2873b0c66d1105d65c01ff6f6\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884373ed82ea253546805fed52f7a569b30cbc378f90d1a69760e7c7f4139cfc3ff96cc9db952f38dfb079b02c1b17c73ff717c672db422e739e520fcb0f12916b21a768cdf7bbbd2c7f4ae0a7d9b2f79c99a56a60e128193d5512dac58c590dd7ca02ea5a3e588252cc7b70eaf0bc1aae6c03a0d353c7af5e91616229922b5975eb09a2c9bdb942ea08c515267655826ca78ad8df2acbac4f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d5d33f2581ee1d197dd1163cf3b154199f58f78da4eacea831b689\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4184c2f1254059c2f7811c58cdaa9db56b198452adcff8ff9e0c53\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"295297f03c9dfc709839d70bbf2d0cc11888297ed55f09af645d30238e3c402fb9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4dfeba99403287e5bd3d7bec07826eb2211faba173de933c076d202a2bc83cf7d784c3d90a\"\n}\n],\n\"handshake_hash\": \"07d38f3109764efcdb49d3f0f366fb84faff854f6a5e9ebed833419d4083683d\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d780edf85045186bbfc98646f33ad3ffec1dac39bf59a6351f8dd2c2958f6f512007d521fe9d2e1274feb2f576bf6d03c96cb3d27bd57870f27d41847e3b4e582c2a5ddee5f67e17054b96b9004dbe99ddaa5e073a3e7919ebd3a3cb44878b6acd4d3dc43895c913\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430ee45fcffc9ec20af832d0aedce047dd830c40117f480d03d9c92425e553258b02425c4152dfa317c0b937eea6beb33520e16cc45a51b0ba77fffbda1ee236cc148ef240d1d68f30170ade1ecbfa3bde3404d6d5b6421a5b8d13d9e4c6f68a6050b55010e0fd91cb70a5297f1eecc8c418faa9fa780da00253ca54b4d223e3c6b4ad4b1b5fc3fbfa61703978d7fe758af2ec4022571935\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"79a4b050ec318993714dd2f0128db6765c5265606db18cb6bb0826\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"376a06650a2cda66789c563f84a9e7cdbdfbd80e6daff722f150ff\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b3da7aa9175004078fdf8b78315bf2d006ae4ec5cd6812ba1548be5549ef522830\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"216f7590ae58e0c01df9954b1386c32b7075a2c527b80a2d40a28e904da527793d99fce633\"\n}\n],\n\"handshake_hash\": \"d4b95385912a9566e9395cd2d3b01f600e2d2b4880be2ea41d316739dc78f09473e348f750ca0301cf4f11af079ef9771882556f90656f56bb0b8b93ef0ac5db\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794408634fea279d6be0e7fb3bd681f7af218e830d73af5a4e274089c62f18fd10499e609e074e450ac6d42bcb8d55ba9b1f762a016b8befab7a1ed717b833ddd12e0d2be5ba5cb2b672ec4f5f6d038faf99fd620205b70ced2b4872fc59ef28838e137817aab7f1c81a9821362e4794137a1ab6f7c46d9db5d35ff8270ede9e3503f3deef2d365d0e9b7a1385569ea632de3b1ec87fbe196d2f8c8f5e6f49750712e75b6907a1b441a896ebf8034af4cbab3bd1d4bfda19cb6f3051d1893b707149f9b32eb0f3c0932ce3fefcf00dd76b75c18757ca52a982da2cf6516f73c1b9de439af7f17e687580c73e0490f1a321dd2ebdb6acb2e4844a6cb26e7a2d5b312be0df035cfc980903704a00baafe1f48a1852f87b66793241a4a98229fd5d9971e956e00bdd5216c46d508c4542a1d0f032f0bb739ea4fbbacc0e1917ee51a6d7925c089048e1acd8dc28fa6edcb52b0cf39445c7497cb8866d036f3d9b4faf68e52b06ac99559a64bbd307f92046413ff67596f23b6244e18d3ee4d6a1039c7010d42effd2b97ef619bf815c5067b59008b1da0c4ebeb206dcf4623055c5843768831fe93fed8246c1984b6ed66ed0d575d17526de6bc9ef6226da1b27d73ba2185c998dd82a1fd2cef49bbb4c93c6a165a621d2fc82d6cb7f680fcae37f9110d3c8481cc455a0d9675eb8cc40029aa0e44a669dc478883d5006f3fb3d1aefcd24fcce221c633425d9ab3aefdf094f89a0854307b89366e52ff0b74b06eb80b7db945799c77fb4dc8680cfeab41519d78342858942e908c3979a55448b90a58a23d299c7d64f29a89f0196b0b7cac1815a39d08ef13de974f820b0616a899af95ec6be04a6debb77ac004b4fedeb2c8f46cfb24bc922d4abf5143bfd5e11380151cd1f7229acecbafeb0eb244eba434dfdb0a4a25e4cebdcadd398fb86a2e1725e307e058698adf9a3e870f5aea8ad86524754f606ce38f25556a6f65f4357971841fdcd26a9bade8d4c633697eb8e78e14d49a9a105bc767f6e6cfe7e1a57969f73c5bf9971400e9b627eac089195c33f5dd95fd2dac079059a1fcfaa9d0bb6370f4641290ed269ea14919279633fcbe8b9fd912b77901384ac2b332c3f787b519c41301db0a59a14270db04911a6af450cd1210b10ab5d8a15117d5dc96323a552ba416d1630de222ac9369ea9740d63dbb286156d0a2fbad14cb6a951ac4e8b5849561d15de6946f91ff9d91648791e145cee91f4a050acaea1757cfd6c1d41efce7ce232de6a59bc29dc4c1df264cd4416982fc16b96cac79a5c728fc2b566bd0404c3d4fd83fadc1c7b71eca5994b1b427bf64b5424ca5a25161e31cb6225dd3570c5a8241a6c9ba637ab1a8a49d48c22ac033d538fa4d27e3ac8ff2b527bcd8775bb48765be578644ec6e677775ee48c2559de18515a6513aae588f5b28660a82e2b0811ade17217ce5886b715c85f4cb187af2dc8b3af93f7c4a3bd62d349f4ece43aabc77e7ea9e8e73730230f56209932aa3aacb548e782f74e206e8fbdadbdd0b85237cb8d2b73d8e057975fe86ec3ecd9b8fe41d03132468322a2599c40dab080a0093053df26049b63dd2b77d627339fdce6195a6ebdf498087ebfcc1eb7704c7f07b8baaf146697fe79fee53dcf69ae5147b47deceb9a817d19674983b3d56aee7dbaaff6cf5b7fc45b282dea5c41010c69f3365ecf09f3dba5d19609cb52c8cfbac6844f345fdb3c754c83503c3f6f6f0085c62dd46af1491da818869ba5a1ce7c970ed53c628bf44b4636556853dd7a419f31d8c0ce6726278fbaf9b0c01580c6adea8375fe99caf9afd446a3139c58d2dd8f7aa63bf9229c9038bbcd3597ed90173995aad56234159fc3450ef4616381a902c38bad9a3abedcfe191cd4415f0e09ae44b73c8b386c51f553070440097957e4e3aa253b452a0a0e9dedae420ba46b0283ecad457461224c367c877ccefcd4af2c235fb842de1d07e367999823c6279aec312fe4cd82ee23778617137927d2b7f44f65b319249b7d964a8858c695128b5008bfb133770bcbbd4f92bcbead7ab0acd8f3407722fd839a151cf5ffa8823b8ac77880228c19a99f349b778eb2907061b09d489e21abb30d50a68a10c8e2fc63337eab296f666afe7d029a0d303e83b4dacd078e2c691b8597ba77e58be8f9debde9c1b376748a36a363e0ff65fcab3beb241f19124bb2da2103666a3b9fab55e68989adfcb59c21141da1da46aa6ab063f143aea3541a8d806895ade3aa8a2aee54016b59c7bc84fe184b6a406244d8b94cdb0ab78d1fc46105911949a6c3b0027293d1a4647545fc97590221ac2bd9cd0e3349b7508dfcdd13e966639d94a75e048aa4fa5ffd7f13ce3105b953fb4f2ea53eb3286ec6be95ebfbc0a8b2ec845d9ff0fc79b7a1af25e0ce2889b32a6fe0b9e345267186a2e7f93ea18ae19b61373a30f378d73838c907f10a6ca5cd7fe1e24f4253f5b317fe599df39a0a285822b0afe33dfc629df81ceb306bb2f55eb3ec8e741a8784cbd1e5057feadd81dbf11f6c26037c216c8813afd7dea7ce7a4c458764b833d5e79a814b845a74a516a748ebfb6d2fd9d59ba36a6a1b9b333946cd42de12886ee737bd62ccc1e2f95273f6f44d0f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436a7ab411e10d35130ab7d4f0588b43584e186af3c6fe2d37e242b2754508960501649363de2c86191a836e73515aaedbdebb6166eb56e7c28788c497a6077f3b23460e74a18136cda571c0e87c01ae7661394b8cbb37e6d01ac02f5175e8b72b888c83fb9ab46b030e6dabf96728ffcc0f62fc50f2d8c625fce98ed52f6e0e3fd961af66defd5b336961b3f55220f1af831b4d16a45eba4f4f67d2cf101c93daa9047e2c0105be027f2188d2ac307a9bf6de883cdd7866bbba2a508ca096a8c6bbe859823f6289423fe61b02b34e9d4a724fedcbe1e6665635602bcdcb378b1754af55804a8d0a3fc5e2e2573e045314f57622b41d49ce6dca465183ce25552fa73c8a4787c3d6a0d3b5931dd900ebbdf9331b87ac741c4af3601f8db68b3374d03fb62ff78015852aeff201e0c0f6cd7f76a894c550033da93a648bbb9c909cac19c49818b389642eee5676bb6f1ea69e53c35285ef3d747b2691ef1a91e559ec5d027bf8d6b81abd28e536491fe3b2d47ec9abbda1a5f3c0e19dd2158c329ec05c38422089b62cf8d16304776c78af483780186d607e752daa13c99ba33b3bf2148153036aa0b6a0e0f70bbf33f4a649348dead27ceaf5eab8f0a131e01992554cde33206d9fc122fc779ad486f805695bd68faf4be80584a2d4fc2347631e2da1cd063728cf557ceeebe5afd81c4c0cd9155426e9f9f0107894a5b3374ea1dfc85653453989efd3b01c19d057c7dc8bd565a2e9be5c8a2e948258a4d21a26ddc53b334cc4027030a2b641832e5c904ec7be1c2b8ad45f61ca4a5b1561095ea26b78aaf037e750c722fa7d06ef2a05efc642329176baf50ba0ab41645bcc0203bb099616f8c996cedb030461c8906ba09d77c5ec2a7710b82f33d340149981b03da3ae5da173948cc90daec8d8c84383b9fe0de118c6cea7b5ba0a8093aa1d7e8f3929f3568d03698d794f31f4ca0447be51bcc1c839eb8856fa62c4968d8ad8ba1c434712d8c067078d55b58535537f164c09b864349815fd453f164c7305234e8225838a007f794a21f57aabf270ee346bad96c122033e062bcf3824a524e84c8aa97cd0b9963b306f5fcab2827ad96c282b36ff02bee77acd110bda9de78661faeb4e6bab8e021a8d8f2d41f3d13116e9ebd7649ace073e8b4cfb3050be289553d6bf954ce47238af9c396c1a562e06a78ec5696a741f5534891d2f2fbf53ae4057514d711843a9ef93eb2f3fc909e7996520188c9f2e2d8477d8758bc2c51d48694ad1694b6f3613c4e779ebc9f6b8a55eb8087ec4f60900cd89095a6d355fe25b2e1fc8bbdb92ba91f22b3da5a7923070c9124b72366f74f9fa6841756193fcda43d6d94a74049e19442e166840edbcc6ef864887d7f6bb7d561c06c703564931730b69f837023148aae80eb84e18a05d52aa62b62209b581577298e38d0d6aaaea6b700af4dfae7e3d6a33af1a8c26a486b663ff32c52d46d404282cf19f119ccfbba9640c11c949943b66a69c5628d30a2660d525161fb3271a0ccbe4e86c4fa77784c888d9862278047a27a88d14b36f0cbb111735c1305a89759fc3363e97055d0311cac123bb8d8d212c82e182aeec995befca28285bcbfde275f67e972744274c632e5b07a15b9b1f8ec609ed0a612fc3ba4b9468a404116843fb3b423dfb923463a8d0864c4456a31c8ad95a4cd4d9748a4cc44126fa70ac5d8fb36e3b866759791c677e64005fdc1c0de102c92de092f96cca00c7cc9d0617c99eb3735f9edc6d41ba7a80bd14f9a918a032d9197f06989795883f65e879b7fc831d17e478c992e4b86fcb3bdfffb7a1e81b9eb1da96e044fe31b00c89623ea3f67d52aa57f495378e9acc9dd98a03cd4935ffc6aa2f6992f8cdbcfe1e62697b0a012d9f5880ef3b8b5063d0f01621932ff1b8f2cc017b6b98dda13e115fcde7d24255c5cf293b63bf7a06f7a108fd8626d01c807d40ed6491da2b526be270de86aef2e1239c919bb2e86e1c5082775c58b26d7bf976766ce79e5f3b2d9967120f4a29cf769ad2b9e707098bcb5cf9573d078b44a941735f9c1df5f9c87773d3f45b09c9f68fae5b278caa4003993efa9afe6ba92ac26c4e0bda57004a1c3416183040c5ed920ed0272c1fe0b2d89085c81326793120722946b3444f851a04436e25a58e93e0a5af5775e3b2891d3b33d070380be2553300b553d0585bdd85383d442d7632b01b7696e787a6eec088d8278c7c975274ce24decc2933bd32e5d9e73381c8aeac68ffc43e518c129b2dde91080889decae6dd2174959857cbfa638b20c0bc514fb929fd1c2d4515444884a867540d283a1e92645cc951533e7e59738bd737c4a6e03de77a51b1292987147daf7563f2ae2f6d51020e36f0023346ca7513827e1019d6fa84ed17e4313b370dfe71a42502868d8271b60c21ae1b7521a6c06e775bed1372d90e15273699b83007e9c98a6ffbb26743ca88090a9ffa7f3a21b221a2085097e37668e71366007f5584ea2efd99c0151558e3d5b163bd392847609860537e6ae7e3e98084ca44b298579bd7df580bbe0940d4964f5fb68d1a960e79b1bc517d722116fe067dfcf9b4c5999596ece3b29e87086c21afa7bd5b17be2d2f46e8427d44bfd8517c71c8911991961c7773e2a5111642eeca7969b9ccec7119a259880a43851a4c1e30588c717f69557c38350247b005b999acbb31f511c5025daff135b930b31cfa7324ce9618cf4a0e14fd4f20fc5666f31d5a917a1dc728fd3cb5eec34f2a4785df01601d98a5b5f27bb0896bee4b179169255d7c7086df63b10d5d614970317ac20b76b87de0c4dfe73d88e23116f0016f951bf442719334410b6f7b3891d8b614e5564cf7c2ae17305d8523ec2431d06cd7781bb6cb076c2d1ef225a839f2afc0d42aad22b70ee058d3c4b2732fb3bb335f920c658711820b26561233a030be953a36efe268652b525ea576e2e19aefd34474f26f8c2174d51c8a43b0136cf9d1fe502142dc03a9ae1182f20d7d95\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"021d372430b78a04e2f5f255dc86b6792ed9f11521336fa42d0e16\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6e6ac9e858f90711b0d7df43990e9ea974c8ab737e7ddd19896eb5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"718c5bbde9515e8b93851b8a20c1a0de18b358de36a0b19aec56e51de4c256e052\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"06944dbb347d59b0821fbb97bc5acb2738bedb41a9bea572234582a5a44b288e8d775154f3\"\n}\n],\n\"handshake_hash\": \"5f874889b5f51f8f4ccee76064c1182a6a9db7ffcb59f4a3473a0d28f8fbd840\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944186ec585394bcf09e32d4d1dd2ac49e172cf1af705065b9667ede2d9d0d00880da0b2c157d620f3cc79d5b3228ae0059bfc5894498677a86192fddd3a4921fa8fdc55c15660c79dae3ccd3a36b8615e28e335d94b1ca52bc81d9539e2bc048a210640c9361634a967c97cdb25ccb57b3ae7f9df1972da6d742de3fc5c022b0fd6c6d9eac2a5afdacf11e02d37faac678712f8d6356dbeae1ed95133118e81a62780d0a743b93320797d910149ce4befb6afe65e92af73a16fee1b8509239b76064a0f9e2bef419938a55cd277c0536285184a2a7133d20f425a735f36df1755ec62c94b69bbd4a27779e9769c805c903210fb4df1a6ba0d87ae7aff54f21f24c9082c19c43491910b607b1f545c9053a0b69d0951dba318fda852001353f381613360ffe1300db99724b25f9b68536165a4a9d5998436bb2d9813956d482e79173f6ecd9afffeeb1e7fa9a3b0139f61c928ed708e3a3d1aa67d4f6e2446f015ab717303ba1e142f2886b0f3fb97468ab3b815cf8d6ce06122f4276c5538f9d12f1d6e038180032d6fd90780f14c41f36dbff4b69a9a85522f100690baa4b28b9e589f8a82da55da81d8b35ae48f5920cb152bc6d5d429c06d04c780ba7ca151a7cd6749ebd6ebdc5447edae871b89720d903d492c1b2bb9871458707f92fe63e516bf98bf37b099dc9b1e13d40bc5d3cf9f12a9365ea8c777514fca50ed2669f32a0817ad808765589f83138ebcd34b86dc9ab66ef2eef6268749d2a94e95c720126e5fad8e616774acae001330e4605e81940e9bcffe23bf0aefe707b762d035fbc5513ac9407224d8c31a7655d4297336c7564088ff4fdc2b9351e470e720747e302b453a0885250b69b367d059227852a3cab9a27f5a793e791bf53e46a1566d6e2643579bb8f0876160662fb6f1dc7f82c3c40f46908cbcc09fd7cce168e948d0a6f7d8f8f40c31339a3632ae2e0195541a8ddd96e15ac5eceae810e38d490e0fb7dc9f4ae3cc4d00ea7fcbb160a518c1dda9c6903ed1165784c6f0801eaf80a8f908327dcc0a70889ca9290dc147d0b22371787bcddf09bc5ca2f846d4feebf96d282fe2ddbe1d3a279d811c82111f7a42dbe5cf799ef95c78b39c2a6537fabca1c6892f177a0e28e2875e3c90fa30ad5717b89025870ff772a2d5f521071daa41963daf1329d3d985a134dedf6735758815023b7f5e42968be3f008ffef5c6a99cdb602c7b5d5812d1be4cc5546c74ab6e8d081e7f8acf52360a84aa60e044adfddc75db438f12b71f0252766126b5aa1304e6653c173e1adec7ae046f3fe0e0d22efc46105ad39f31af7b4be1a97037354c875c4853dd50498d3b95c831ad94a498f8353fc1e40f764087a57d1d417bd8e1adb55161917e1e3b3a18701bcc742e7f28e519465c3a5698b9dda977bcdca1c133d94f39d9f5e9150bd724450548635faf7b767c810d589e7ef648fbe70cbcda3e73c0e6e58486bcd01ef140a46a85854bbb57027fb30bc156134c584e11cea2b507145c5c74f066cd4102de6aef14da46c5bf34a5c0fa1bd08851b4b25a935973e71fbb40d2a466752d374eb89a4c0df37839d7299d5a80ab4ca45eff7264b9dcc44b4457534866981c831e2bcd37d5c25adbd54142c2629364cf7856e0f0f76b8b2a807ac72ca7cfcb1f01a30507e5a3c0c2913371ce714589366642014580abd3370797e0f69bb02b8dea4465e6174717f0ec36d1096da50fe4fc118c5c5b5d3a29dbce4fb3f29f809dd401f958c3aa3a45284c8b928afa87c1e6c99c7ec57843bd2fde589ec8f1a49aee520e56ddcd64d181f425a7cc6595c1e8f396a5bf63f3e0cb4ccba06c6e118c9be96a8893483eaa6a190c3c88f161751c97cbbdd217c3b8c7a9a34f1ff08815fb1e83f3e3afbaed2fe1da95c41fe70c9cb6872aaa22e9a2ab66fe3c50a9e200ff7dfdfd0c047c36beb3166bb0261ae16f6a1aa9106cfd0f8c5aa41f04990a2235f792eede90b509fbb1062f3f3443d3f877b1e691d0e187b5259ef59a422d6350f6d3d51e268ac2a37cb7fb89b3a1d8c92ef78064f39c210dc3a8e59b03463d7f13609893ff4e8110b990f806ef644f630066ce7a8042ca3b03d3b946baa8858bcd7a3a3752a3c288de1bcb9b33eacb4997e11499b51686b4d70053dbc51ca9f4b1c79cd741e430496f9fedceb9c896c72db80602a6afd63bfa5df01801412a89be9da1a1438d546df28a2c3790ddab8407d4b298c0ea503a1444290c7a91f83f3bed15e488e9cccbc675e87604bd6dd4c0ab1c1aa7a589852e4916c670bebfaac6b78edab501e8c5e1b84d1c51dc16d4c0c110a88b4418e0620ec64c11ebfda97170213c10e784ea2aac59d1f57865cfa67e542d94d4ed16eeea1539df18f7debb9fa7d22aef922cd2633a8aab265ec7a497ba335325ed028fe6f448f9fdac6fa87d5c7e55bb98a81ba57f61d44ef8b73f1976ffad5aed25344c4e2d895f54f517ce6de9c231d999435e265e750dcabc07c0563d5c3924fda804efe6f655987e7ead9fc944b959ea6fb3fdcd6cdcc057fb72bd35e090834f3c2e70b322f3bd302b6b92edae5287d564a28af888c43c9881fa133b54b35e6dc023159e3968910a2ef31c490565d97828219c056d0995\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843eb1b7bd50d1a36727d65f917f8e8a35e0b110c730e1232a8d08027b70ad114bc56f1c1cd57f00b6266cb0c2873e46e4da3d264fa60ebccbedbb6f8bd3bb731138c8b059320e5d7c4e8aad4906b89281c0b500daa030cc2d207465137e2faaa9b6f12256227f312fdca2702dfb2610c27edca8fe7842be5076cd1d7d5a242bf15b92cb6f86d7b11dbfd601bff72921fa204fdee735a77f7d80deec1b55213b69161f659e28b6ec0a64458f4976bca8b699cec7398ab5ff8db4e0134557446ead5707b50fc08440478bcadcc1e00e1e454ab44b362f5875dfc7b698909b480fb63f7bd61e8b7ab8932156fe263d147c1449823303420503878217dc20f63483c79cd9773181cb6835942a295c9ba7b1b8296b47f719694d7a225ceeb63cdf5acbc843fc41be947e9b76c3e711dbba06b75f2f7bb91dfcbf3d254d163fb1b1c0891102995272b7cacc2ef957dfbbec2728f8fb13173d10d1be21243370fe3e6dedb4e9993ae8a4150d969ac71573836bca757ad84b845c1208f6ee8c97754841c3cf6da7994ba79c31627c1dfced35c32ef73990ef955f052cb31efc5a20fa6bd84ceff315281cef3e3284429286046d5c80884f7422764c62b5f26fb3b5cd95918b133719ad1334c99bd1a78662cefbf776a8ce08405421b01e568125f6673cd6612adedc04a7d72e194de0c06f133bcae95f7cd6247f575f91d3041c05e7945071f438e66d2703ce34f227a4a82ca69d936f614deab5f22acc8f5abc856210a343f329520cfb853b0839080d0bcf098269b91d911e0cb94e35cc33078e07dd164d571f9f148b96a320086481edb0e3480d0b064f52cce898aa4d8aeb895c2646939ba6c13026e89a658e126030771991261fa15f4fcb31a5930e6c5abc5c3387658cfbe18d5eb3410e8994ee608d6289c01f056ab2ecd4c6b4c6765b9a5b59dbcc2e2f4f94f6b77c339e45bb707035975d96fdbdaeadbd431985afc71b1513410d72265c7bf9a3687da04bf2464592a3a2b58db3a1d7496852f84a25dc914efa3c3c7efe15753fa6aa57833457a1453cac22dbdc4d4b48af4e2c1348f7e4c7fcc811f527caeeaa36e689a5e7f9ebce0034b132323ea3abb149bd455e9d2bf3d7fcdf791c0d3f5745f663f6a7dc3288ebd6cca94ecc36d917bd080277e75ffb0dc97f59c70f877647c4c5e7b01a34fa67934d4067e0e624def24fcb307473024e8e7c2ce7c8f4a082243d105e95a3e7e5c67b9e187214ead28759b32afafaafc2dacc4126ff6977bc1914e285f795846d00c3f62ac48f273dc4245dcf82ad16e4ee0a69f8ae4cb4e1f793c81feddf720f08eda06ed43ace3dd0d9974ff77df3bfa86e8a96415619444e7e424a6ce5906df6ad667011657f56584797b5f0d0ecb045aa820e14c42fa3d571834fe694ab787e3ab49ff6c528b23e1a3fe2e9600ca3bf0d9b554fecf85c2195e9b5191ab79bb972ce217182f2220a84d2a1619a31142001d7fc1f577e011b2e5a104f31eec39008b0983f46ed0a7c7a87d8a9dd4a919b9f267524223bafb1003e59c0e956c9c8d0993182fc29e3abf0c951f9beb9de1fc51033ffa4b28c71342e7ed2f2b959e61983ef026b98a06a1f4e8a1e177f44ae79f2bf1ce00dbdde109320800668bb2960e3eb4dbadf13a0beb6d6070bba96a676531a10c6eb7ee252e47884b47718be76ae947f0bcb13666f0ac576956cc97512b26e642e869389cd4756672e388bb5abb742a4eac578d21349898c7805758974174498a6bba841b4be0fa39a80e10a018c4ef4f9abc8c9742d65474f9b8f52404f0044a75717d7855ade7a59800b4eef24fd97fc11a281d03e669b1a8c2381364ca8f2156b7be06a25a1d200351a95e3e93093f867591ad49bdc4dd46390894f06cc352f884beebf65c5bf1e184ea84b72d9b3e81f125728eb7176b0b5a44d5fa8c8c92f77f4ddaffda99d1cf9ffaf149f77b45639fd70bf5adfd16ffbcf27e4da6c9e1a98aa5cdc154af6768170987c6d27579d72193be7ec87e64fe3adf3bf1d02736505dd0b7fa790d3c50881bc74c663d1048a28eb5a6740c5825f6119e17b4b3254937a9a19ba6905270fce05be84b11e3584144c5f98560860afc1450ebf7559f5bbbca06541ca1c1f5ae545bfc7fe879b6a405e972e353b7fec0dca4a70391a712347e697a013cf6607715c472af9f0b5535bb0d474a2af971c751436612a99378daa69f468907db8b1619a598a82c0c49ef780a6247cfbddd107e802cea7f592e8be8c29df652cb2da8143a365c20ac3b0e4f7aba495a9531bcac645c40262c97e53c6b9f82de105260d093f4152df9d210c8a43d2bb0e05f150322799f5fca6f9706c8af6507e9aa0729eee1c1203aa519d217d0c298867fc14e56c7e5ef35793c5cc434dfb887d9ce0f74eea33180946c9b5dd1657b022eaa0749376af119a2f65f52d72c65967b123e7999fc793d414b8a4c80bac4f94d7581ba6c8f1d16b567032ffb09549d596aeae1bb581e83096fd82472cd0e721895bde578693d1448b464794da7c8d95d704cc7a05d278f1822d349b076f633403a5a7eceb3f75b60e824ba111aae8d5d54f88d97b3f19aaca097c2262ce8440130c38b4ccb74736dfad2e44d8fd09d0291fe4c2a34c1cd34be1b1fe706433c3329d366bc8d9d0b61bbd2ff8706791b3811401a67171aacd204bfb5f88421da573776f933647198a344a1dc9b47fd72e336dc65f78be305314b4e024e243b25b6f0e7bebedb4c9b07932b979b04f66a1275830b14160df055f572937fad7ece803c2a62e9a465c83ad9ae48276ee7673519fb99f701256f8c5ef63fe646d77019bace7fb87aebdcb4cc1ce111597bfddcc7ce3827f1295d5d11ffb98880e4c4aea7220044b072a6313a2f6dd0a24f9e77f776d12287c1666bdc07b2aacd7d600418e8679777fd180608af97f42642625fc3f210d97c9de5b97effd95f58b2d4b382d3de686a377512ccd9da43e9614a94eaf14a4def2e8d44e998b53bd8043e026c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"315fdda13e7f9548d84640a5c89fb2afc1657054792c8e94f177f2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5ee6d751537de946ec88ca9dae76ae39a93a4a7cc7902b51597aba\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cf6c8132c1bd08baacf362f30086c3da2deeb4b55a8901ada164179e8ce2a6adc9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"cce288072228ff548361ff718e570e81d15a385976b84bf2eb5b09278666f78dbdf4a6b990\"\n}\n],\n\"handshake_hash\": \"405bb142cb1a00cb8f22334a9acba096dd114c7f0aa5ce8e415f68810549452adde7b0dc39918e9ade21f6e05b7b151a907a83c662032171261eec3afcf81a25\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442078bbc090fa98094a40f82d4b1599c13fae63da562810b9f6568dee0ac66dfd345edfad600e8ae5347bf0d13648342aa3a611ca87246d1f3377c6bb30a3061b333c22cba52629db38dc1659655f3d91205f01f6316c863a0ab4bac7a31b8684f4b1dfc51f03c8866287ebf76046f36822616c03329c327763ad1be3fe11ccf5cc4c0abe01f36775bbc6bf132f9163006292794b0eabe9f05f5bad95f2b768be25f7b936309fe47840c879e564b639e32bde8a754ee69103a71cbfbe3f9116d9e594aceebc27cc19ddd635a47233c83b66a99f5633f47b1ccdfdfe178009770fb7625e6685df0a8aaf656e9a47997bb76251f08358cf26996ace3fbfa320b7f40ab914031bbb6359332fb3aacb8d08be686fbd568256678162a36d0024ab39921f5e5d3cd9b4aa6fd340ddccc7dc420fbdd9ba9185d24f7d005212db0962f70d82e8a4cfccae02114670ece73c1f92a9348b38e9ef4dd30fb13b608e80c78f751afdfe87c7cb1664a0b6809410787f5f68135f2e46b3d776315a4a0479afaab4f8bf8814d9815fa8725b9b5a45080ba8a7052bf6909f523fa3b4a4953d6dff6e597172b2ab0b702681c0dd87d790bac6bfc073c1cb8ec05b19d8330ad3925a81783f965f69a69ceec0e5014cf6c4d251ef65d3fb3b3713ee155e650e53bb734f94cfcd36c64d5b1c09b5f48cea9ae0589b5413b71d97fd9a39ba1dd2550315ef8cb51b5bed9079bc062de3079ee1931f17f6c592923547409ed38bae302cda21ecbb6cf606f2b6945bec356452cb343f752eb1b55b4c94da6161f5086e015a97fc1eab0c42528305de753fcb064563337e7261a05cfd27b2227db8e462aa0ac4dc69de83843b799f70f160e1ba5c8adf7d235dd1d2c238a0b5e7d3ec2bf1ef5c224717615b5fea7f427f8cc60a8b73cb237d71f83bd75d03b8ef2242fe8aa7869f07e9b7478b9e73bffaa905f0ee10f52cd93caabeb3e16849257c7091cb1525cd86b105a348608803ea43ef6d9ec2192f5e5323929718834ea7e47ca5e73f0189b78cc532993130bd914fd54c4210ec176a7d7ecdd9617f02aec0a3dafbbd3cbd148682b14bbae1d856b2e4031088bea522b0e4e7ecc4a05c87b9e72c5a784db7be05a03551dc16b2f6efd8c4ad35a50d4e48217e5ce91a13ac00ac6ca270f4e7c00a5bd3e4e1d47e898b4209eaa54ff8a4c5e602155344f67b32b6818162302253ec2861da24b5686e2466c87614c63f4ee561d40d0837a7766554dbce8809cfab37b98996157751c61ac6d1db1518cd883f813a93160a9b6c2408f2b905fc77d87cf1b1b5971436daa2d7392bafdf245450ba0d790471e0d46b7e4f95c27ea3088251be4f972c4ed317956cfc796cb9abaff725f5009800e9bf8c9a2e41230717ae03f7ca81b0a1065ec85c540730e48850d799fb15a3620fabae7621702a2b5eb9c2e95cb5950ea8a554b216c69741bca8d43796febb5bcf2e81a11d6f4cfe4aa456cbbc71ea2b1ffa60310b8ef642a44705ef2a33765b5de89f291416e3b3a1060f2d807de862ea153f61b44fa9935b56f124a6f0da7947b766986f46b2836b7793c7b353daf94153fee6bfdc9e40a2042c54c62bd50d305f6f092ca630963b548822346f6aab102e6cf54735f3a6677691836096a8a051b942a3073efb57062bfdebf46bb8f4297ba254c2a53287ec579ef454bfbd2ea7612a63c024873048f50cbd4f495a63d9c9ef6aaf09e705ec687b5377e738255b16429a656be2c11886c6b38b25af5325d02d881a19a3da72aabff7b9caf800327a28c32cc84b2e504c9f941f738662a0dfee8a9cd00c14a5f7579e794a369f5fb5fd14c67dde073729fdbaf4bbf8f2c7111bdd668dab8de268d62e01db8fdc6b0059b298cb703a290f4e199f7120d3111c651ac39c9cc5327e5b0b0df74d6540d1eb127efbb9fadd8f0ebd31159db8ef53b4cfa1e877aef1045ebe5de7af8b0051cb2ef33175314d21c8c7c3f445a3964b11503287a68c5cfd8d120511d5162b436f4801126e5dbddb5224fd61ccdefbdd8be3455d19f0f05b1b508b49426e11a9ca7bdb79e3b67c6eca67c30f43dc7e92750f82dedfd9221011faf6217f85ac795eacc039781640e0e8ca70b108437bbeea899432a40f1889bd9eae9e7ca1f8bff06223ce96c85a21a3b88e46405f52d3e3ce9e96a0b21f0c0dcaf05761848cf103b0d5d23f0949bc9600b0edb046d25d86ddea3bf2f24aac44d4396709a0ee711a83af5432f43e97ef3e1059d8a389f45e5f7af9e31236ced4b1e0c038278a4f1399ed5442f60eff6090249c91559839554d50a10a53d0ec27206ec47634681759a8ee7a760e41b512d35a14ff29123a6284e184eaa3cd521c3db38a724f39ff76f64a627ddeb7956cd280a737f7ca5e5810969e5b2ec04467dfbf3ec67c1e627a64a00962723e63904820dd8073dff1247aedc835fef3e44c1a55ddd106bcf72f24d2608ef0544b8f84cee0e24a9a3012b890047a01fc250db5d0690360cfc9590e032bf30a93c259f98d070011ad180b4651e11ba26ca80e0a1d8ed2b706b7cf64ef1e0d9e74d6990573dd1079ac2719caab2d361c2a7e378a037e49424c109fa2cea8e74bd846a0e09fc60d49bb50029b412285\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088437ab5c5c7322c6538b52d2805693be4e1519d09139758338f1bb17aeaad7520d271a563c38c206573981381e9d15c878d47f0b82bbca6d45ce2a57c00edc0388370860dc7fd09706cff728d7502ac43883d631a58c0cdfce74a62e37323d3e9c96b05ccd57cdba6a376dee0e3809944e232daa85968e6e8c15cd78a51fb2cd4a70b97da935ebd6ce30946298fdf3fa1149006f2446430edfc3ce5e9e871b55ccc3e6e594a703bac4643808e1b79591e404612f5b78bd3290f70fbe19214737c2502b5808772bb227a57cb1f83d0d404ed6a15520ab54e0df56ec20c7fa01f53d6e0e81dd4192a7e6ff331d153e3d6976e412cf7280cb0a489d52b569744d11ae48ac370412cab2ea1f143a9b30660833c6da3c4b2e6f03cae3cc9962a8d6f5b0396abf1d549047210a09c1480051a7fb4dce058e134c4f5aa2f5f961ffd192aac0c38860c451f4c4a89318868ac8fadaa4d6b534c298ce03775c1c60a28231f6212f3884e93ffb22817b4e0b083f8ea632f33f2e6f268277883693e39c8450a615ff0f7e5ffa813faa98b8d2faffd01f6dc309e0b1b25f67c8791c1ca90fb0f40ca83ad12ce43a3ee77bbce93c70a521aa63c4b4b5382e10135e45ae162656fce84b505bfaa1f2ec7683c90879083e854f67454e6c48e65acd35862f73df8c546f68079b19b92cb92b9c129cfa09ae02bd088a618116ff6cbb102e2ab9ed19d099f2ab9299ad9b2da293e90f8e1c50230aee88868c28bc601131ca235d7e7c3e3ecf9856b6c70841f494871ed39fba02ab7e3d0a988c213f2a656accb5c9e6f3b4445a1717022bbf22d03d8708643c5c1ab51d84aee0d6cbb4dbb5146a8766f1367c5050df3715b80134af53b350de5f49ce389781b2fc92ea978934fd10372df68a23886b81bdf68a6214d6c30574d327ffa9f0c214ecdc08ba20e95565966310fc3a6b7952fcc87b78620c5aae524c80d5348f12b8cabec8df97e2e85ab5cb872ed000d35b02e2da7f65957731031745809eb3375926b0ebc2408aaaa133142d9da4c3db742c5df00c8de0052e7f4325402ee622e0ff033ab1ac7bd47578a31c5b006b2a036ab455dbf2062dc1205c2f2737803fc12a969d92044b637af02065e390063249c9c1a8660322d238330713cfe2a476490150c8b2c159469fe0344e1732fc6503c64fbb5ecc3f352212863edadd51997449e83fe53ca5916138087534dc89a7a425c1a28a96271c1e651f094348d002a7b1c2b6e094ca16a79faea6f469252e7562a26bbec75663b4e56cca199c1dadd0112579400af9fdea0878904652a85b1f086dddc06502bbd43014dbec0c562d01229dc82bdcc3b4858bc416f33927b989f5503a9d393314e7f5fc62c4017dec3c3ab27816d73765ab684f026c54dd673fecf51193a689a8c6a197ad777401ac11cd0cf912c894930df9c057e2f056ecb78f0b842583cd88c34112d7004cc521eb0c668f774e26b35f72e3ee59b717dc1888bb4d96ff5629da50871c5bbbc6381767e48a032306ac2d2ab88d82d574b19d57af7e097d4d27ad655cb826acb3573b547a5fce3ecd52c6826c56dad6bb080104154bd114d49236bb4e651b3033e4dfcdd40607bd944acd42a539261270a16cd3989d9a94cbc6348e4d06523154d26237bc8d333db767d7a7f7245081eff4f04a35ae2d8109aa5e1cedbfa98cecb2061b89a8750b6f7acb825331a3f7dc975835f52daf3f9327d03d79ca5b9c048e95a06b5972ba675a713b06946c8753676b12666557cbea677b72585c8a62787209b10e703f46808a022bd377284fb383b13a33b367250a796556b745bf85398fd20052afba1deb7b0178c1ba88702087673d1330cbd812a417fedcdaca108065aad915768e5f50ae5cf5369fa6744811b0b1d75dd9a16e1fe1a6d058749d33782fdc3e5f4206b89a54ca931c959d6159445556f278520e61dbd406eda379eff6c119c11ec103deef3af0e0653ad27229f7b5b87fdff303aad51efbca6ff3816913258493ee4b3a5ae39035983e517bd7dba04044dfda8abcf1c730d9d047c652d0dc9b8880bd917b564fbb78a9d5169efb4af46c5617fc230887f44906cf19a4acdb574b0eb975af4ed71b5bb297e2493db38789c30b7a519dd7add34d4998f878e6ed1508961be9bf61cb4c01e45edaefadb978ae85195e44bad5d403f945c343575cfbeb3a5e87acce90e2d491154aa54ed631c0fb632aab08515f0d0ce31bb3775c78bf4da29bd608a04b7da8a249b5de1d51dfad4f15083452d4f15c14e1ee06f3e8388a5065b0996476d7aa9f0e482195a807142b7562ec51c6b470828c836875666324cee722d956e9b71de60c99c0d225edcbe7fa5d0921262324893eb45def14458faeb54f8b5028a81c2da3efac9583d9decf12d9c0016e9177092a1296568967849e8ae52771eec6faef3d07393621a96c5c28fa9980777d368228d5ff0df34611757c7c10d861333e78b79d63d2f4c8a7c994988b229fc792a48f67822cc98fe5a44fb81d93ec26296885c67bdddf7ec46517f5569f9f2c175f0a34427b443a671f2579c63fa706249b319734ad1187661cf9f40a81bcdc29c9acbe734833912dfd4b36b89b6cc6943b54b634cd014600afae609e142a3ba88a2669c374464a9185654131cf61059c5c93469fd8e921dfdbfedf57c86a21ebd585a0844d37d47b8853100df4a72a4a93836a3a1ad876e615b8dd324bb8851611e4de0f97a71ebf7b836f32e755c51c9bd0832d3e2c319920ddce8bcb02c09488c968ba696baa462797f1e9ca2485f2c1ffd722ae51af8ca3eba13bd598e635dbcb3f3863b23a518d327999144cff5e7771580181036c153667bb607e4716e697e52d2553385f8faf8573c54916f868d273bab973d37ca7fabe31ba35fc7650ac3359b344770cb18f06d4882680b21c4e3467e876cc239b521c77c0a794d0734cf074de40d12fe737c1dd7e184d4b15540c9d6790007e5975d2daa8a9cd36138c19569fa9b0b7bf9285d234f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f84488e235afea3e28d56fe540655a1787850cbf7c3d5dcd9d9b30\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7f97c8c8b8f7b8a3c87327cbcb336238ffee7b4783afe52e5990e1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5815ba04bd1d5d0cc5c9b5aca7d0218e851e9b091aec53617fb260c0a057181f69\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1e6d5040068a5ccb9047c641244e9ad50922dad8267c46878defb48387f3f2ec36d2e7ac84\"\n}\n],\n\"handshake_hash\": \"3b976f71b397c57c40820455ab45d5b28203dd4755b6ff2f1820d8b95aab3ce4\"\n},\n{\n\"name\": \"NoisePSK_KXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"KXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"resp_remote_static\": \"6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cb5a5179dc06f97fdf58ff06c398603ec32f0895901ba16b4f4a9583300763bcd559b55e4ba3627b561b87e61ff78d5993b1a7f67baab72294ae5f26f8fc81f262a09d1b8d2652a8b69585aa8c099248b4c05a3bc72a1a3392cec6a11869cbf1b134b2c82e6971f5babf178336e44ae5a10e2f6e5442807535aba1f923411fcca4c1a5d8b7772f72af1b3f703a4ae1709e60cf33f33bea82ef9b0da641178ccf84edfd1defb7ba228c88c3d3617cbbf7e2e31386a3ebf95d20f39bc8e7fff910096d5eb6d53e4a85d1fbf196c2f6204a6dd5ca2f4d9f2224d4290b2e9f1181c4580ce0de3c561a7d9d4c5a9840d39bc0e275299f20fc500300a122f0f5b99ebddb49c06ffdfbfa2876f5e673945add2f23521e9ddb46b0138506b2a8f0c61aff49cc51549db9c6fdd1a1935973895b22ce795035eab867f67e071409c27f068ec9f129a29e4ee5178d3495a56a72477aa577ad8f840002e13703a5fe1fd94856693040813ea517d315e9c63fb9388fd9ab3f869b6444c413147d5231997496c76ba9ab4e0a3904c24c154410d380a40b22b904d577b0d41c4c917b3eec796a22544bf44c46fd9bb833cceec541ebc6e983effa786f5a1e19491a160a106653c7611d3978a52a1db93ef73a75f63edc942fd391fcaad9a29de56086369b368e1be5c1a38f090d674b3d441637388e001138464b21526fd3c7e0f77b1fa354cb000786d20466984517595ab6965dd2f0197b20734e266e9244a937635978b4aac3367277381312a699a70f7d80c5389198339f96ea87203ead3655c5aa5ab793e8faea3a6eda2824b4ee310a72ae92ff9141b89a3e1969e622e1580c5ddc70d63b8dd9468fc498744db5e9f6d9934fed8e9eac4fb5bf915bd25313b8b49328733029676a073a47e4292fc45c15c262145cdb569be55b01f625041059c1341ca5278a1cf2cd616f0223dda2b1e79d2005d03af38f0bf494493ed0721c9b7fce0418b7171ba55d7677b3664524b372b18aca63f0b706aa5b91b4d19febb6e7ccc92eed09af23bff84b262c119570bba6dc276d6beed3a754555c713681f591cd3d5352d97ba58b1296feebe33e8861c1f7dff16bb206e4db80b6e7a3058f15a6f1feda4ca2092e105a46c84080e8bb1ded7fcf54ba775f2fb3fed6020863ece394256527a148b57a2b65326cd84ae51d5a3914db73e62419251e68922a17f20b6ad7f4b1cde4fac0390b0b2c00873246aca6d7b49c64f8e44290528a151ea86e067b1e7f3e83c7688a8994d8cc157d8043c325a5553345e7bc484475ad7cf4eedcbb75b2fa8de8f5f06221e4d4cdec556140a2f9b701579a6686512d1e9d3c8fa3ac35f8eba4315cedba3d6654a6dfb6865c1dcd18ff79fa3eb0d77978a7c31149ae9b81a5b77140084dc7aacefc5f86c8c1444aa0d1231abf749188724183cf269485ee02becd431130bb6e89d91b283e1af5239ac9b27efa4073f87d63742696cc7108d2180d0ddcf52e474c6ede7c61f7ff09f808719595289e8759abf7d3ee8b0c72385f1d2ab03d56a6f8fd26fe9a0b66c63c3550a1c2ec942d839e71385726489955a4556015cf51e9d916b03fced8432aacf321fdebf71034655e13c9d355fec8039a2664abd6060119badf2ea067a2a76fa0885a3ee2384dfe47d1786a463dfa7e6a7f9eb77904196799e599a084f4e1a75a89019ef396048d3910663bc5d57c78cf2b3e9a5503430695e3bdfe864d7b9cbc42985df7b29e774ab675659db5a3304ce1ac531b5277ef77ac88d78bd217b36cc143a99a7dd4745102ca0b73a64404e3579da6ff608329641d69972fe3eee8789be11e637189bb9d2e40368b5af62574628b61e007c2960d0d7f91dadb086343dfa1baa15c2e132b532f31eb9ddcef3c3f518f927b62b72873a43d99120cfc6af60359596fbbd5a28585f67f62daaf64ec180b05350628017bfdc88be62edbb9f10f4da777ef41849c63302d3f4ed603dd8895a9590bdc443b697f9cdbe7ee249bd5b604f061524e08bd74c050e7932a4a0445dca073b68cc3e299302583603503a5bacdc8dfd841efcf598f6f4c5700194b9d4be541fc68f7d83307151d4ea1da3675ac69686d4cbed33bcad99d22ab4b94f7d9ecfe3bd477132587b44f2c0f1c6e07c75f6ba0d3a710bfe76b5089ccf20ea342d6e8ca34df1e8276b841089e8c2dd85f333fe6a48a6bcd95797789471dd3d17d6fb2b98c62eb3df3ae8bc9599601db3dbd3fd068b1e64b7a9c680ad3a6749c6cb1ae7efbe48e1b9dc40a86ca831992323a67135614daa66f11e26f69d5cae3286c979a2820dba3ef72b6750f5e1aecd978524aebf18bfefe26c23d63d3d895aec25bc8bc71d4566757257e533834dc028862222e54699967acafcf7741e890b7ea6b4e83f274f4c92b62507bed9dd83d43ffc6a0722bb75b8fb4f3e156a335602084f08104e5e552260e3fb8582b2d2d10a44f23ca32adff1c40040f98802c2bbd75c7eea0466913ede02e08b4cd8432523a5a8aaaf5f3167224ad9f473acaac9c3c83b691510ea88b6f5338761c353f2ecdc02c2b7f12ea980001ef1d8f23ad7b36305c21a3d279a28c52cfac9fd2e1ab902696150108fb4672967fba6970afa4cd49d023faf070\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436ea3f753ef37849e95d113bd12dfc200ca1cb28767bffef86b7c8e0f4f96a74bb550c7279018d6b48d9de42548d01feaeb22c691c8240cdbda38bf4935d26dd0ba033b8cf69a166ebe0673ccb20ee3cea1f1b22474459ce6690ce804df177c5481eef0ce7563a5fd5584f49078188d876678dfc14b0b2fbb157a2d1e2a19a89b5447cdc5bfb292296f048f39c487d62ded855fe594815e0e918e5a3bfc9eb95fd8786ff9d3c547ba33df981d0f96e104dd83641a5aa9d34748ae4e80d5e48543237a428c32b13c091a18afdaad4d1dc08490de2bfabcded48c48c57cc43bff3fc0ea6a38c3d2fc2bcae3191dde3cfc9f336acdb1a5233baa5eaaae3c18f8b9b4e4e818c2d29bd183d8620ba10e401a78a3d083a1bfc622707737ad7f7e848a18cecec83b6b7c7752473aece0e5977f6f728b807b5c1f60e2b5633a545adb6628a6c2e53ae4c36412cb21b9505e85277258b56c07a01938d287d464141d7f1a67b6af39c153b67d1ca8208417fffbe9c80e026cdb0fb8230af63fc5f5b95901f9355e90884e6b6b60836ee4b3b9ac69d9e25e999b8e2e756905236d53d5d3c2189682ddfd0b63f893fe24588fad4679b8e8568fe4042fda37b61815d0b2028c604e541c6e58068ce2acefb68acbfc0cee49de9f39eddd93b371563fb66552430bd3c552464e1f1570a848ba5ab74379eb160233f346ac0f1139a8bd8301c54de113dc7cff1e31b9d8310af2d46754959a898be2b0a796c288fd82a25a247119357587e91bdae51503dd90fe691fc0c879cd34d4a4d21ad0e87cb7d278b53dcba4be739aa4efbb2718bd882657622000d006838b0b89808fd2e9e4469a22b828cfe0cbefd99bb8d6ace7bd836a5e2b581e5f54d752572cf5e56629eb59222e9ae1d5c774d4bdf5536f7087edb4ebc3d57d030eb2530bc3155cfa61a0646d0b038ad244770f376fbc5bfe22bb4f06eede73565a0738f8ce1fcd77a2737212d397007c08794b76a5512c9f23b36bc4e3d970a29f7ef5084d335466bf5542caf7fa29091f9f240c4bbca62be61f80d43f717f55948c4ec56ce940349c7775745dc5e36f3fc8c791c1e1c01b1da9dcea2f0ba2e542525761e555bf0eb3493f6c94c123f7e650bc3890124c89306af631557f4ad5a4c387e265117a1529aa564150dfe6f3018eced26f40c4630f8dfdfb604a1c928cb5def3b547e82a50cbbe0f38a18966090a5dbb4ada82f4d44719911706004afa94e94af9de243fe7174258ea9a8b942994b2cb0359387b619260a2d28edf8709e58ca385842c2e0fe039cc9cb09757a462c043536837f84b5b5aa1727adf5def8245f3aff9bd966390ac34d88475d4da473fe0b86617dd87eb9d98788a70ffa3d096870be61ea83949f46a45733ab1c8b6cad3ac12c767aa57fe7b8dd374574679405e3bfe03c569b3db71e325ecdbcfcc122ac36748d5f3a2470085faea7547081d6d74dd79bf5680bc138d6acb48d799e1570d7fb9a333cdbe78d62986bdd6828bc52d197ef0918d98e1948b5b7145840e82df8d3e67a1d481c97603d4f28c80df13087f45283cf659fdd9d3409afc637ed6d079362101f184dde589fe17c97e63131780c358cb15ff7871549d293059cd09e4e29d4a9f65cb542f61b7caaed191d1344fc7dcf46769d89281e3f89a5e2b36de980962e0bd9f1c62bb99679b05e639f3860a3463dbe98a74040b0541758ff3bd78aade8babee0e54e585508d1407a9503e154be6e70ac056286d26a2f6d855d7da87f017714ed0e9cb609d3708b3c0fbc2c8c675522e3f80c5ffd0947aee20a650c8e83e45f905d5e4dc36c6ad426894bd72ecffba89566f2f561b24fd5534aa2745eaa6a646a46376bd49bfc2b5f860451130c6000425e2be2c451dd53b46807a0de34856109d3af569b0c1d604982d88dd7e96a382f78dbd1350fb2ffb0a51700d09bd5fdaf46f93ee0752ab994a773cf0486ab752f3115f01243e48aaa1563edeeb26db9ee9b697479f1e57f4c1380ea9d54b8526d2034df4d63ec1f1319a689f342bae42cb4101f5df1aa3191bcee7dc9fb2420c70f6d665fc67fb2dba5574e8a42dec54e6c18dbe185afb3df69b8399a501278fc3f0e5289ed3012fee55d06dfccc3933e29edf03aad06e8e7bff16a255974da617d61ab85464601b1cad5ad095d79fe68975c15d1fb92d30e756d63816b8eb4b22a122455f4b99f25cb3890644b9d0e6258e02daf7097264cc4f4025fe5ce7711f3ca30d74ec4b478ad4a13b96a0d5a69476a80082b18f99ae468e13eefa69c6dc63a9490f43b368386a69aea13a1cbf58f6e9c05d19ec62372bb28fd2d0dffdef475d036e8af2605e171753d019b9aec9c85b11f65895e3e3c36eb576a79659c6ca7872eee0e26f347583f461746def3fc6ec3daa2d995307242c9a750ace22db8bf250c672778af4044eff60fb0571951f8650c437c3a3dded02919bf3bbaea4fc6c5f0c69e7775ef29d931a0ae0856f059793fbf160b6de9b784ab4e84b890649f0a9aeae57e07ff1498d85aa49eb2333bc0113e402f12d190597f4d0fde8f62dd10658203d59ec0b9b4c09e61c89d207a61f97fd0ce0932f73a004b296d647c5ac67ab287081ca04e3caf28f10a7728911031dd10d1b57116f0a801c0a2f999a3a20a75929f6c075b172fa8ef5d46faf57fc2cd6f493d749e286f8111e3aa07b85a9825850287ba03cbd7ee82dd2f824a97430eae91909a9f031bbafb2b3997708443f9e7bf2a5e0b4488cd449715a1857f001e2da14984c799527a36d3ba2f47acecbed9700dd9452b29acb36312a45f275e6385a180863e52e175ce7593cf827a29c4e59b88ffde1464e8305370049ab559393c1a8f962faa93be22386a2b686c54e3a25b554048ce77375aba7c188cfd9850463ccf56b6790c37c7e649c274eb604b94aa552f546d37dd3f08070f75e3161abf410ac78c1c67b7a7d80259118707aef148e1110528c0b04c1bb9d330bc838bc441c4b52ba841e735e91cf9a26\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7e3b91b9127a3ffbcefaa9d33d235e520d93c441232267e18abb4f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"627d2c4d29960700f3646bfd0c4c02f154b73aa142926141c9a806\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5c355a41df7ce045cd54324b7188ecaccb55a43d17c93ec4ccabc35399d7d43e1a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"99c3352557cd0f38b03dcb9c62328238206cf6870abbc50fa46d7866008ee812a9024a5b4e\"\n}\n],\n\"handshake_hash\": \"f37784640d9b63896a5fd95337c05ec4f8f68973d49f0a8aacbdd73dbf98c8bdcd1e0c0fd7927c8f593a2df3d359013a0733971a11b5738c6b8d37dad87cfda9\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6525aa7acf7479425fd18471d31bbc723616ad422b5c364c3f0106899e683c60\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"7776fd8c4cc00ec159083904c95acb892c84f729499e687bd67490\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"740f6e70ce419a5d843d85c066fb97e35215e0e1cd9dbea91d2897\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"132bef8e95898fa454c6b30cb3c6a5413f84a4f3ff8348ca00508c4b851c98b7f4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"afb19065650158a07e692ab67045c5f16d089953045891791f101fe400b655392ecee5d91d\"\n}\n],\n\"handshake_hash\": \"51ed621d1aaed13d7365bbe9ef69eab90799a8ce35f7c6463f21e5105e422be2\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c4af234952b4488e9dc3354937d17c9996d0e374510fd37257eb9c0ce67044\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"548de0be3eec827fa13d6e8b788514113da6d9ded6c15f8f577214\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c800b360b2785357f1756c6003cc381becb4f4605d44a632dcee08\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"345eea174207486814c49170e1941039cbda26f7b66f625612c993ded6b1bacec0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c40cba459d71781c657cd83995f43bb52ae17a87f6e32b46426956fdc2374bbe6255b82647\"\n}\n],\n\"handshake_hash\": \"647c06a3cc41fa3802cc4ecea6802289b6c67b1d470e48465dbb049186ae28d32b3d887172b8ffc4bcd313319711bde34f456fcb7edd77fcce0c05a269c00aeb\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65af9942d9b325e3b3dcdce05e10cf25378cff60997c293c221b5e6401467bc8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3200e52cda820c38888407d2417e67105e7b22807b4e0ee7a77f02\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d54421785bf91d4094282d51754b5d481b387e49afc3eaffbbd399\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0331af710bea0f36ec4218206fd614c0266f506c4bd631d1c1a6d1fb762a1d3f9c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"df113982c72d26af4bad0cb5921f42d6b2f244941a79dd79dc3c2d088f5e8f07f14217fc34\"\n}\n],\n\"handshake_hash\": \"f0c95fe29eda8c7685f83778d624d875f59d639f9930831849c70e81bfdd5995\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6594e3257202d9b01adc10e0cb0070cdb1279f413fd95d8d53814879f3e11d36\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f3e20c2b8e5a1cf252d94da1c7aa149596f5ac3dcb3f4d379734e3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c279135ecd9b422f2fff1570300de7da4d878a76210267dd6ff85f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ef08480b159399b354a577bd51b64f6703e7103ddc89e270f91c56494168332a7d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1d682393219759b1bff4a3162e721f91ec01dfb5eed5548199aad7c3a0d6fcb7950654b036\"\n}\n],\n\"handshake_hash\": \"a1b4f274d373c0bd9dd72317040e3fc29b8ae41c09d9404041d409b4ed9e004163619d47f25f8e4626923222806dacb5d6f304f15ceb82a213780ed422735957\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e5a13a6f022ac6e8da48c890ebfd20a213c3f2409725e51211e5ef7a150caf2\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6e3859a3c8e81899566b376ae1e7dbc87bab22dcc0cdd1995b643c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f6e35bcb76a8645b37e9b71e52455f19f91d3112779a33e6b3843a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a645c3ba96e8ee6edd73f4f7609687f4d4847c2a3d6573116f3ef5ec5ae976727\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec6d233ad36e4c2a3f08dfa56fb8c3de525293bbfbabd467ec91b7ccc4a8112f00c45cb37b\"\n}\n],\n\"handshake_hash\": \"0aa3d918171204d136b53af3c166d7a60868d81b0d407242bddbda9881fafd98\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e770463c4bdf557785930b8abb299e10e82ee1317c7d4920b2cb88c6e665f50\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"30be9720133439df25cf073dff9c4835f6354193e384b01ebe005d\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4150b9781a44b19864e71bb797a1761b029d93b6ae01eb1318f999\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"45b0d2a76ae7616b243f1c2bb1c5d7a165d957eaa1d68939dc039ba7f8aa96b43c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ba86ba963527a9df50d7c8dee4051845060461c048c0f1566df6c5baa4705539991820e624\"\n}\n],\n\"handshake_hash\": \"e9d27e3f526e2d04a01184a93ef870e38f948456eb7054ec4c62e8d7ebc30d8c82c1d0a375a8fc8deae2e122035bf84062b2c7d83b155967ab440c1dde51fc29\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ee8ee9120b689169aecbd362950bc635fa9cf6c5821949cbb2911e0c34abff6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3ee6b88356deecbd9a3aee5630bc40e2b3838ebba7698f41dc067f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9eef866d34f21bf51302ddbbd3aa8c6e52745654687729447d3a86\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"994edbf0d50641375e7fc0a4f394ec25687c1f44b206e6965d7d216bdb9a320504\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"70385415cb75fdf443410bc962f27c50f052493cd67ac136e53e66bd6617f1a25deb4394a8\"\n}\n],\n\"handshake_hash\": \"9754e3a868d9ce3c5bddb57802f75e246fcde3895b31e53834e9fc01692c691e\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e858a6741d08e0235b791103a4b61421ea3412ca0a056959290b87e0bb856b9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"abd27702a70488cfc54edd08369fc37a4df4642739d0fc41dad25a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"03296b572e99557f0b2ae219948683d8ecea67771a31bdace24342\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7aa058b166e2555c2b947207aa64d87fb89ada82e46a0a5f85af6f530c398e7ef4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f539f11de3bf29f15bef73746fe5421af35fddea32085ff4210ad40522c74d8f7f0309d39e\"\n}\n],\n\"handshake_hash\": \"47fce49cb53a97bd00aecc6519cc50867f7ff280f5bf6b9a74641a27a98f0dd6ff34c123f9230dfd459b0597571a7a890295804f70c620434d0631ed6a8cba6b\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65457797433d5ac61b5fe7296e89d70286a080b2d2e95f16eb521a170d11664d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6ce68e632a46c333764f2eb0ae2f9147e9b23d8c79d64b38ed858c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"9f07ad5578e9565975618b79bbcebfc606e54bca1f2c31794ef486\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d14f5c4d9acd6cf1ac94ac3611d3f916dc9692baf2fabb1a81d3f62c01bd8e2cec\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aa8cde9682206fbc024e64399f91d83673c22994fa0153ed793b39716d39a446693ea8f797\"\n}\n],\n\"handshake_hash\": \"991be829788402f1be1a66eba4a977c45d68df14ed5427f6b57553dc1dc4acd0\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d7c49e18df6b92b6b673d4fb0dbdd77acaf9676d9aa77c501af3d7d5e22c23\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d1970290b045bdd7b89fec68b2d0058fd10bae07678950d98735f4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3d190491fad7742058168e644982ccae5b1b45e9ebd818ec72a8a7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ce5ae095f1121bd115780839b46dacbdccf8abe05708aa3061d21d5d2aed9c1182\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a6e617478838e358f43246a0afc4fcefcf51341e80d96f31520db46dbdedfaaf52f9af6702\"\n}\n],\n\"handshake_hash\": \"473c1ce3b64eb77d37f8208f489dbbf81c7eeb0329c94bf422cf375b706c3c4b3fe8870c1009e2480e0abcd0f7524dfebf53e2f30ebe16eb30e4d9b4a50c4c9f\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65c32531ebaffbdfa6a8d1a1b1562533a0bf36e277f41b27c62841946866b72c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3ada0b34af0e384479ae17d1377c5308303ce48194e5c03cab3ec7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"93a7fd161991e723e9f0808b57808826cf049144d3c09febc4d9e6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1cc6a430767e445059345ceadfc3e750671510d4461580de2dd7d8a1ffa8ad5f1e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b96396621fc3ceba670b73f91f988f1ac04a831f5d9995517dae79991a343d1e9260b0438b\"\n}\n],\n\"handshake_hash\": \"52909fce7b8611693983d7329518ea31df51acf2576d906878ab6a2105735e06\"\n},\n{\n\"name\": \"Noise_INhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65390b2d4d4d0bfe8cc582fbd838c250433dd783ab6b733e9a42ad5831d008d0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d6a651f44cdd60129c08e048b47614f872b5c82025d05d6ec8654e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ac34076bfbce1bd9cbd8d1d16f8d9fe3404bcc209771085961a46\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"97ab828d71346ab2f4d0105c93e39194ba8a1f2b272a414eb34175de3af2735c04\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"20b802d1caafcfe8cbab7779c856ad7376e50a691768d57551b8f0483fa1d7c1045b424e4d\"\n}\n],\n\"handshake_hash\": \"db2c5fbdbad27afa38cc2fe2eafb2a26378b54e6807fd1cc88932fd82d887e06d327912ab08054617a431e953aa849c6dbd3e7cd51686aeba37f3e7b7f651ceb\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e770d10bd4b9148f6407b0e0c7db5c6d053e551b0cbe7d1d09506ebe525e6a1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3019d00cc9ccb8a72fd7c4502160f08603cecce0a30f5a07753edc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bc2f32d015d19fb7b25b7d7b8c1b3807d25c661f92019c0ad95623\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7e9cdb7f739a1ce85bd2d6b7f5696e839a8c362109c058551ca25df6fd2fe9d028\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1e57dc584843b17f78443a408cfa23927a8553739a22a98b186a91a7e5b0b2e672f1de68e4\"\n}\n],\n\"handshake_hash\": \"58f52f56ad845f06ba5cbc60d2c3027a71db4ef93daecb64dad2b26f2189e9dc\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e8e1c618867842ab8a1453cea7b48dc5cb7325ec88ea0fed575ac5ce55d2cac\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"675751774330ed4b1cdfbca8276b7af56e1fa7282445ff08a05c35\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"215753e4897b4003586f32002b2f9799ba23096601018b8376f72a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"20a4e9bbf22a9518cac0404beaffe34e029c2a000bfd85aa001e40885b64af2654\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"550e494dd3b47acc446832a2756d0cabdb94479d642dcbff4891a4748deab05e4975ada84a\"\n}\n],\n\"handshake_hash\": \"7351b60b448781f0a1e4dd63bcc715577dbd50797301f70f9e839aae5b354a2f3a644bc2dcf198cf06de85eecba6bed5f10c9bfc990dafbac82a7bbb2934135f\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ed7e37c6ff977aa6b7c0ae976c2fa4fa68281a87d2586e282bf134159c720c9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3a896428212cdc0bb4e741bbd892902a5510299e382cf5980d73d4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"836dafe5cd83bef4b4a45d44549dea19eb9fe134b32421a00a0ea6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e1db8015afe45fa9ca2957bfca35e004ae2393f268b50831883184faee54f35cc5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"106e9bada606c41a2d7a3a166a1bd0e4941544659a0694da901fdb0ef8cc5068ab6884b51f\"\n}\n],\n\"handshake_hash\": \"e46a5eca90467ed570547bf43f338716acf272db5ae91e5a61ccac2587395d88\"\n},\n{\n\"name\": \"Noise_INhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e858bbf189199a5c68c5543b4bbb7966067c51c36fd1fd75b2840d645edd968\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c3afcf8a8ab9229e0ed1a6ab9c01fb1f944351e5d1ee1e5415412c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cb22ca2dddbc9098c027137da97857aaf6ac926f265c3cff5dadc7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8ff19ce31b970ab8bc1baa00183940c232a72072554db8e019a8cda4732933edb5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"84c739782c040cb66df4c0a5555325c4998d3272d1146012381ac644a47469239b1ec2bad9\"\n}\n],\n\"handshake_hash\": \"3aab73d88198cee3e289efd5afa8fd977bdbccacbcc3e9300ecc1a45c5fe1b23885faba09a91ab78287d66c8d0e731f434f7467c89b7a7d41aefdda62ee69184\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944c8be0c602f2bb58299d3ae5b39bc24f895b41b3e2ab8fdc3002ab8cf75f8bcc28bb23abd7adff1e260cf9110a4e39a78542f33b65c5dc2e412e226a58d0b33ca5e1698d2ce52c0aed71f6001a79f90b3e2a52ef6dacb387494626051cda698e6561540d319c7d6780b1dfaede4ee1cfac0c7547742ad4656771cad18fe4fbacbc35ebae41fa4df45328b2d88041e83d5a9624ce324a5a5c9\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884305b347a564e141e8126a10f28f1530af2d98bbb112a9d2b6f6d95ea1b1b373cacccb4f0751f340ee43093b9baa17bd80e38bb6c88a6ee80236986948b128f994d9743942ee1937572d31b0dacc212ae023c45c5520466e2888c8ae30de96b026b5f251ef1d832e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d27c823232fcb9e6d0968eb8421df4b26e0ed6dff4439d9a867f14\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"171f4c682b225ff098215e41b27ba80977fcb3e45880b29ccdfc76\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"25ce6aeadcb48c7e73a12b41532001c29a5fb70050b41686d331c7e453a960f3cc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a0b54891b18dcda2a9b4800cbc2ad5a320e049c648769314b5189ef738f2effff87b98fde9\"\n}\n],\n\"handshake_hash\": \"afd9f52ced1fa382f90079038bf8ea4e7fa5170209291668bf3ccb152cd3c9c1\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ff448ad33b8229825537538dbbe58fb4d9270b1ff56be96dcb8773a4c8b162e72abdbaf3ed596c94b7ae0fefd1227209e0d3e86cdd75f943a5c5d6b6d2212c937e918b83501f66c8a8370b57abaf3c38c073d31ad2fcfa065765049129b8b76e5977c6d99167ae2d5a4469d4629d44546d7af65f86e8535c4333604880f8cb5bb9bd721f025ed66e9fc2d6ff9091f114596cd30c70d49b2d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884316634e9753133e97b214a2ae268644d6499a7e63ba3d39db2b87c3b67e4da683bc0138e5677507cf3ae369f4cb7b1eaa3f7d0bcb6717e4df52524cf3aa8674a9558915b1d33a099ec3e64fbf5ec9c123c163629c0b82c1a9b3ccefffb491280f995bdd223357ef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2ab1ad26e306fe566038ca42dd91f96920b29cef4bfdc3d5cd7f91\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fea3159a2bcc515c79e2b543437967a38f515475603069c0da85c7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"435e848ac417a16840722a7b90985048f92263e53a77d01e3ac576205dcb456b87\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1b1cbb079c7f7282de0cf416ba09f938b260c76c130a62988cda1bfa8531a781a4a24826f0\"\n}\n],\n\"handshake_hash\": \"fa2cb224380404f7fc190a82b0d02619c34edaf31ba24ca7820e960aeed60a2c94841afe676d1c208503e5833ef0a7d9b194ad08e38f0c10de99cecdc517ff8f\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944cd396e171db9a60b52b3673c4c6ed78f4169258e6c81498feda44d78c09dfe5b902d81383c554c929bf40f573a1f245c626ae9f928341887febf8bcee18e6a563ed7872fcbdbf7e0a827dd5c32954867c2be69069a6c1ae82cc56b0ec2490fbdeacf723cade9250b7ab9fab1a20ca355a2edc3e9452405a04acce5f3695916b496d3d09e00b16bb39904e48f8b300deaa7e10b82cb8eff6b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843767847e8d886c30f9921154130862b3f255431080c333bcc59079bc266c662fe8d113f9dfa11417cbcddcfd39e6c9b796153cf7a8432497fd8afd1a120a529cd11102d3a06213ec73fe1e58738e315cf62418cd37c9b2c4af4fb3a62353a683aa55f9cb9e04ba1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"75b7b0ec00ca91bfce52eb69023436308263810550f33bda85ce4a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6754ca6a2ea5eb40fb85187f81151a68ad85f08064dab2cd1ab400\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4536e343451a47a0760f347763d41056295cff4369dfa7e3555436a176a3472246\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"14463e37440e67a03e0a77b91427f9d35acbd8b603b9926a4aeec449618be3463b36126b7f\"\n}\n],\n\"handshake_hash\": \"d385b01ce8b80006c6ded814cf48b6c147e71d33846298e94d2182178136a59c\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446ba9e507379998dfdb868816b5b9097aff3be01077bcc323fde411de6602f481c57f225a0e6a0d1fab54074d647e0ca686f64abd0e35f8f29c7e0cc24fa9fbfe084574456aef3c932e786d9db8fc2de2fa06b8df210701dfcbe3bd9cec7c9b79091ade1c78e3b8bd6577af39bf0bba7628ebc334f6b825eb7ff17454cf95895d40a910076fad27562b1073bddb0361f66d04d3524cef5fc5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c240a8233c506aa04265f9bedae8c9cb6c2667685fb01129183b8bb30f8430704b54e7a4f38c470609bda4382b12440ef5a09087785c6b4d6be83eed58e3b2b40728f73d7a885ae9d6031f9cdc415990b88982fde4f10f40e0844e0bd9f47941efe38fdea33f47\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"be0ca7b59c63a9597e19f976cd22cc67d39d8b238d016296afe8db\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"fc0e7f541ecf82141dc2ba3673082fcde3d637e4a1a67cce4cc046\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4145463e3da58c4df507c20019a6d2efab0a5f8f7cdf0e6763130d31cf4c9e809f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0dfc389a4ea664d185349639387c4456e1e2b2ae8ff68d27f91bf6612f5a91926aecba3661\"\n}\n],\n\"handshake_hash\": \"23d07e85403e3fc1ca158db91020361766f6800fd4d3d5a35a58f35da87a839b6e7ff5e20fbfb273f962dcb0fb09e4dcc0fa33dba6604a859d4edc70894c4063\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944275e4d5abe6f3e741bbd2aff3455ec2c880a030ed9c502fe6855beb3f1985d8dcd96423c9dec57000224033e089791ed69c7a0bbdf71db2151938b54f6ef04996af82be85e61db4994ea5636fdbe8cf42e44cdf36bc8b013894a2329be955e3c777bbac8ec15d8c3f3413ff39012c6f7435939dac6169cd7d6a7838cbbe93d81618b346f6de1d8e534f5d03eb13a9ae8d2abf3e6a0e6b899b88d0f41a1c48507b2185f09f878b4efda98b3f9e60147c0f6805fe184dd2550bb1d5f22ccce9f7eac7a7e9f69930afd570ae3baf6e84e96d5063e5d2d3f83f602cdf55912a96883b8c6958dd015119bf71c7384e8f08bd9b1aa5ab2ca38fc581c6f67c6514f9d1ca3f5e183785b7181edcbf21eab810347b5ed2c5b0beba0efbcd4e64c43ae0bf57af546ceac415da4ff895781673b28e145c08f1d1de13718a4d1290a0f24579f2c898d37258218ca6e7a00b77dedf9e2e3f085b9e1a95af8b5af689f555381a4ed5bfb366ef93d45d4bf13a1d5c7d19a65f079a14d36b3b3794d39763c6d56df3ea68eac8ca0bf14bf2d9d4fa12c20a1b14afcdef51f3bc2abf4fd716a94c09721ddc8a18ae00d320efc8533870fd1f3d6e0df20a36e1027e1282fa1f22e07ac4054ec75ef2d5294a3b3ae09651d678a9c55b8ea743cf18dc13d86038657ffbc28d575cf68d36a39c5585acb533b916445263026bff6c0afa7634b6dfd3fe40ab3516453fc931f6029f886e18d0e50413267a83a3f50be268d4bd1449600387781753c55512238e6ba3fbcddc1ddb39585802bb1495d8b31a3df44812a9feef25f300a3eaede8833333e6b9a5200b3a166d734bf60cd84f9274f9bda02b92f8ecc8c1962a0c6ad280aa1f9da54983fe1867cbb8ecf2f33d3dc19554277385ca489d11445f6281b3a2dacb70f2d2904277cb48b1f51d1ba331dc90d8207198c223c35edb7afac4d3171bfd32395f2084161b0bf46b6d797045fda13b5464c5ea226a15d5a936bb9136b20b42694197fd2d24befa65c57d7e72a65643b39d94f25462a768e0fb662e3e05c1528310d5346c76fd649423a640fd29dbe3180186aa1c79990e193c8eabe447a9262c2a06859c4288204cea3e14647e6a29221a0176e4052e61eb48b8fdd2d637889fe1c66d45d28f00a858136c538f33c684af7f9a412a7429fe6fb324bb2fbf2ca3aad3e32ade358046fc23cb69af6b284838e04748e3913c5d219d055f2b9fea4374b451e5678971923184136f4df1933d4d18f51d133cae6dc5c7badea1f708cc663ee5136d52025f64b5f24fc5a9e78ab42016a1c8e2a7076dcbbe6a8a43136d1f90a21aa8ec7a1d714ebf2197b61240418cd8ce54a0df34e0c72c46c35c8b7a01dbf8ad04beab846bfc944961d1271b7f841eb2bbf2b1731757dc60478b25f3f76a25e3f92d7ca7fa32ae7c218f49cb273ad52287815cd680d153ad460aeed59a9ecc7c1a93c080bdfa95920eefd9a55f7727e89d1c47d1230660c55610b6e016988f7519d567ee8c9bc3296ee4081db510adf805ed0d9a5320749fd2373037334468913e929d0b9c6099f53d6dc646e3a73f64b16eb183424dfe2405fb369c428ec1440383b28303a625345622d89faf5416a1cb1e863990c053c688cb853269c17cb69beb5536e403d33856e5ea8de4100e1523b9745e871b38b8168b6f93f83e88efe13cd04a104c5403677da99b0f9bc248b323d93d0281dbcac2b5c1868f392cb8012b303f365747ae57d062aa9ec4e9e83848e601cd96b1352c95fcca18577d3f35c0c049f8ec52ebfeac5d6de88698f4066c6dcad77394f612b7613520536e55f231898a0215805420e8a57959849606fa04edc19e5e4af67045a08e3adf533d084575e677c9210b4daec5d3108c84cd19b36facde195eebddd38e0756628ac66dc5eee40f2c0466785ef2153ac556caa7ec0f3fb43276206f525e456a8f329774eff556aac01f83fca49885276f86ca42c747dfaeff24442218e3a945e4600d2cba2527e8cc3e4a9c4665d374c103e9ae112fd5fed2bd9f00de4294fa3ff4444fc533407d304003741fb4579a9229758e9e17c30fb33bf08c676d5ac56068bd17da7f56ee7e8fecbdf90f2a90b917eb94b2e2c7567f78b7bbcf467dcb25d9f03e499e1b3e6f5ace08d6c27ce5645710aff4dee3a51047bb96196281145e77386ab53a80748fbd6a91d0f6c9e8aa36ce5735481cac14c2d5974ee665e7864594198b23098e6669b9b5ddc60ec93ddcbce1dbc4d090c9a4f36d9a7f4c6c5a296f83e4c859a17306429bdc71e844438543a4ca90f0ee342a6f72ffdd82bae058527d81f1f84b6993c25ee43b2a8fede085c6987248652764642c0e051ed565cee78799e88728651cd9a441a2c0ccfe93ab564910e1d4ce833f29a326df54600fff8d1c13fff03e5a74a98865e68b7ab03cf90dbd8f02091094908e9c044b12ca1d6681a47d0916a25ec79316c22ed9720179f0057145156d50a1eccfdb416a8a000e2c605a0bfd16ac52571243aaecde1099c54d3f646f49f306899ca31a6e3a9b7cf4c3e5fd9567f9f75ceac4c0ee29e68d8da81cd69b7d3b4687cc95f00626b041fc34cd0d9ebf73c0690a0f00fedaebb9bf83aedf4eef16c078273766744b4772027aa8d82680095e520ac4274580fe793f472f0b544d002484171047c88f16ee5fac58bcd3696f48d398ac04b58bd\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430430dfabda67ea02249fdd43f0e98f27c388c95d58becab68fd8dc16e6d9390d2b3f16f6760e1a3b48e6f2d8c5c1d23f09857f5f5ad10af539b85f370373b62abe3711efa99313169f64df987de04cb54b726992053434447574833d27f42a8f3477c29bef18812e91aefac6f5ba66da22d25dcc318fc0c6ceb8aa5ab4cbbee80f0820b2b83bc5d1627263f9963a765876455afc31bfa38b3d5afdb0df475e31c703718076af7117ec79d8985aebaa8b5eefe84cab50b1babd476b6be9abf6a488be8870c4b7b2fe03dd57069b836eaa8c93433d6ea1233951740669c322dadc6dc5c2d4333f13c8124a34c68b1c48cd99922e4341b7ada40f6886e8447dcc57d62b47e1b0f4072efce2fd9a0e89e01f3cdb85de23e85af90d0aff28efb0711f381bbffbbb510ccdbcb22368b62a6503797906e320483670d6b236f267a4a513e41d390dec5c4e28a447ece3fd625c8b8a7df52a6439911595ee1b1f8272d783169cfc771f1aec64ebba67f7eec644fd63c2db47db4935772301e62ec53b079faefba366bf14e7f7372c119fa32f795b51aeff2979e332b01f7ed231c4e2cd77b2702abefadb684ecb982865bf12d4cdfc4e013840b72e2452b8a5cf7ec8174113907ede8131bd031b7729b02e8bb7d6d73803393232d407485220c8813b48fb9a21471b381cd44559abcde47a186fb2c56b12c6f02c4730de00b14850a40d2240df1ca1c4b59e3674cb92f1c278ae72281714b2708d688bc14826acbb059fa355c5845772ea717fbed0801edbf7174beef0616a4733ed549e3a9e8dfc0814294c4df66fb4457a0806cd4ad6b75c5c1501ca61488a4c858ec23a2e548ecec6241fb56c99b5ca6d0063da0a170dab29e5c3eda00465d0950cae5754331071090bde8d6f811e3362703e1642649a96aa0cf76024f4cb0ad254c231d0014dda454f084ddcdf5692f405a53a9c251a885ff66c0d159dfdff41a4f8b441848f192f1ca23ec45652899253d0669e6cc1bed97e58209cb01a2e04e08b5f07f42bde7818bd394bb1309e2e72435700f3f051b062362c724e063008e6072bdbf36d2246b4b5898bd0ca5f47da2072d6790406c9195232bcea98145cebc0cd1d64d16f3db6b72de057655532907f18684f3584ab8b84d02f7ad482bad0ad5d96b3f41fb90defefdeccb491d983528a8be6c2fd838ea48ec69382a4011fbabfb7bc551c2f727a96ba09024e6dcb8eed9ff34939063dc886f82b88bebc64f8d1cc7da80e34f60b3ee3167b07a5f120387c2bb53b1adbc931dd1c9745133fab617bcdf072c8860f67e74f7a3fda33c31afaa23f4218e1d7353fc44d0bea1e99e66f9effd0cdf8d8839b34f6154248b519443e7c9af5b8562ac65ca7c00c67ede92410f9c356c6ccf7a19e58ae25ac20cc36c43f80ecd5cf858359e3e7f817bb67d1aa60ee31ce09681be96b39ca0e729b007a312ca403c198741692b46b31e842110fe70183629350908835985e1874fbd9fe0393f0279da81371f0d7ef4815d28e26e851c1c477744f517dc42f3174f3487c7d3bfb6dbccc6b76724514c08ece2f777090b5e2932ae227bd2d2464b31bb9d7e88eea83839914175096d8af684d8e0719a8a600954f836e90cc5c6f90ccd7cacce599a91145bc658722b5a25cf23856de2f86e9e1c8ef31c497074f1e1052b7e7fb425911a4b682d0b43949dbdef0d9ea82d27f0dd72f518b780aa017151279c06d5393710c416305b434aa425c6117eebc19d623624618f4600652fe9c6697fa6b954416b68e6f014d1d9a3ed89ea483d247c26ddbdfdda9e7e0dc7b6e1b7e5eb4c22eaf3800631701cbb8d726958b7151563512b9e35ab9cdbca7ca1c7ace0ee846b5645caa5d6f12f86dd7638c3a8572d42d72d263b88fab2b611e3455ac920b34be7a99b304a3c3f8fa8175b535cf8d28e40205e0e4f1ccc6aad671be7c2a7dd64dc92128272b89770dea359f7e59b74d3f3f66a25b244f15d25034ce88cc910e7f8314794116b37dffef775d24b2affc574f474393173218a1b2ceefda56e1412b2daa057f135584e030195b9502128be9d573c1f8c92e2721bdaf816c635f900f695c2b19130a6eda6d9e15fd23438dffe2b55e224977ba90b56067899ea77fb5beb8c629f616f4d1dd160ebe915588201ed7441e80a37e5b76ed9dc5821627abfb186a2259d75b2c1d9ab6122d497f01d6a8476a1e376d5fba7d379c86b3b17f819276725a50edd58aad7fafb8368aec90970f120195832d9fa016e8efbe2c07f3af708b150a3d95b7c65cda85e70cc3b72dd204d982f951cd4c43639e95fe1214b0d76125da23e7b7616779ec86abce3333237e859f95de72c8dc9e41fe34128f9c89ecac3030341480b8b467cba7f2eadcbb5157d4b847adb8149b05907eb09e3c1a9accac3b2e5635b451ace0fdd50958a1c04fda59690bb9b36ff5f28d882300ba1269de5e00f510b5b6f258656b4a13f9ce1da78de7c29e33ddf03b5ee2e8c6912405385b5a85154d7b73f9ea340e14aef64ae4463d3ecd48066527adaa87f0ebc4bbe4d7051e7f2acc29d463c98fa449b388047e8e8f82736afbf58289529624acce8be7056673301a7f14c2be17c9b636ae67e29e5f7a8ed38106f856f937c31ef3bd48453f591a33dc73d0b2bace9dd0b16899ba74cd033a8ba76ba1d15095d8c54e801ea749494ef0fecde39f4d268e6aeb0c99b153ed039bce459f5df51e99a1ecb3a0868b0d0271cd820143bf4dc73d8a43301877cc73ee54042352a138db009d9c493f90c72cab30a9aacf188cba66a49efaa73974e7a2622da5c2567d323c0e7b89c4029afc83dfd162321586406c25c318506607b462cd98b2340d72329fee8f44b85d1c332369d0d90cec315512150c35557bc6f1a29d2a794d2692809609eb584f3f93c55d7853627b108093d96f74dea6a5f5cbd0c384\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f6cba54ff7e33a8c6044e2df5008f72c15e9f4e4d5bd3f679ad074\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"71614d724c3b0a060515e39159eaf0257d83ead798e2428869e6e1\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f0ec8f8a335f1e22bf29b74427b198d73042601e1f469aa4f6827b3aa5ddaed465\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"aea9587aeb82a92e0a2eafd843076978882dcc16612429c92593fb01a40f513c1898127884\"\n}\n],\n\"handshake_hash\": \"43b631816fae78140620575ddbd510d5d35b7528eaa75ad0f0d679b7e33bc55f\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944b4fc70af43df6304a5e8dfad7e63b837d2bcee1e01a90a9ca990bc97b667a576ccad69514891dd5f46b494d64b489d2ae13c5c848dd133fa7f7fda8295cf5a0b460b538a1c6bd826d9ea509866669282ac8e83d2c0ba518701cc84a9e229834db6f1cc580b4f2c83feb37ed4e1dc98e72b98bfa296d4d91ef49d786ce78c37744031b2585d081a167b303fb3711987383b56093c85055ac89a04171c4e5c1e44287d9f26b3cf6299c5c01a3ddabf9130e8fde917db54dc6ba4b3ab4ee6ee0e5b3cb35ce1387a6938af8becbef9496d5539705c5e0b25830ec76b3a84061cefa141040ffd2c3f368b885ef21a5f689ab6809e0b971f71bdf6b41b7633832f2142fa61c458b2ecba7ecd049edd47bd57d66303ca06a40fec51c71a34e6610e7607301c5835adc098138e50a6ee337a67127a0f4283de6eaa09509c60fd5c97c3c49af2dc21141be2e87b226dd4440ec0c156a1ddb0a061b86d4e52778e89c77639a3857b6e14a1cb9709bbd396489c68e05d365279895a291e14d43b30c45af61716b0135b106d6593dd99dc7d30fea6a56e19971607680b96c5cc57349dce5c8a714251f80bd4733a0eccf12e85cff027810351a9e351bb2e3cde34b18fbf5ef23e1503c5433fa69295f3b2afa9ea9fba0d43bf9f0dc8fd4da253478b8a464b9c8ccf47134763687e0218e1fc6ba213ef99f0a218eb39cc01fb34ac50cad89ee7b3fc0e1c81f6e70f7f28b07cd0bbc868d596204fdd71954ee799af43738b31f1cdb05bf761ccc650a585362658d2f9ecffd1c27c93757fba2bbdee902430def491bfc0c9e83824058e2146996f2f2231994da609df783d4e4fe21b32b1709f7da8fe70eb361328cfcd69a55c1a0dfe5cffb48558a13d436129656a59115f0590267780cb3b3966292fb3e8367108115e72a1186a4ed59d83c42ad2b4eae41f8e05d8b942da1fa226b9ad978db99b78d8c51ba6985ec7ce7eb453526d03ede3fc45fdcf176e472ac2b4a1a153705e61a1e695c956612aa61549d9d647645a48bcbc4cacf85d44a895c70cd37095864344ea32d3224418647f64c5fd87edac8186c8b1255d026f896b78b1f2518f694e2e5d80f1a65fbbb0833b7ffc9a96761983bd54d22669f21713b58183e758179b32e666de1eaf5c6c4ee10ebef4cd8da20291265d53e91298cf3f46a222b9d516d88b9648f1dd4835ec16f3ff92489d66661275ef56bc1f46cec3b01df12cab569071ecabb868273590d269d28f51187c4293b757591f92050b684677e48f57fc113a973d31a344dca9edbfa0aaf634ab871cbbebe49b9a3b79ae59ffc4aaacae5d4bd93fd824a9235b1e5753ff3f1f22a0c9b2d40dfe38f25d421843d893a6824da79d6ef77b2638469cf9ba40319593227d18c48e2467b990b57d765d51a33b018234a5ef4092f04291629ef76f1fe80106d5d0f38b1b1cda7c7271fc708edf54b114b407b0b6861f1d2ddc7a8be442808d6aca81dfb96a673e7c50067f27eed37f538ae281a36b598ad5e29393a5d52a63369f36476a66d70bb5b989671acec8f16a28a0db6465904e0b1c39ff55f8d0e9b6a9714a7b957da636fa8024261d2de073337d4134e1c5c31ed1c86ff42603fb1347b0bf2152b92b18aba2d08a547ea417f27ea7dbcd9b4f5ee0d69aaca687bdbfdc2d6c127c3688a0e0a9bd6cfd6b23bdefc1275274b6b2d8be7518121fd839eef8638a8e5f8f2fcfec7613565a27b040506ec6fb28a2e772c6dbe5c8b116509c56260136a1df8620a935ab64e9654b914d5953bbe62443a006bbd2f5ac5ea4feea54bff07f5aabf4dc62f2ea65217aa55f983e75595e12734b651b12ac3b69d184ae582f62a421f829f21f6a8db4523bef2475ef90ea0817f9a988920f37d7b6fce9c5b3c072a1a0bf10fab0e5c3c47673f6a36d09a1c01e26fc1b6d5390b5388bd5085ac36fb7003c41eb4d7d963d04b84f5df837f57371aa3adf8fa533d849dc77c462e7d082465de975177c75e3bccad1d201cde61c76df029cca7711a3731c5982ad87fb1ee355a37629f3ae726181ee7576989433074527894953aef5f477de79a0de89d28e18a344947fdb5b7d64b64df873a8c39f35143702e29755f8b823dd80805ae6af5c6e21461f89af9edb197ba13a551363d4c238effad7fd965ff98dc634939e451c60b18fd05971f221fda243447da51a4a9b029323eabbbbceff5ff09c20808cd62497a01b99342ff6abeab671050b49c632515333e35337800a764a2f1edb0f2515abae4adb3c7546d0cdc776a3553a2b2726936b266a21f92d57e29db4bff6ee979eb1301fa13eebb7884d3ce458057c30f708dbeec90e47ffb219b7bc3fe65dc3818ffda2205814c40e210779a1dc46175d329ee6cdd0c75c069a217c81be647391bb08b0bff0eb740fd27a5d51f2df980a4260b0a8754d35dd2e5a8b00c396e88fa0eb6e2b622f473914cc0f7fc3318e5b9d3606a5d44634722bc61f4590148a0b589864faaf4c879d8076f5e373057f675bc7b21949b41c292ec3d6d82f755417fd15f2b4dc99d93346b620762eb2dee06c94429f6259868e546bebe2d4e3a492d191a46d7d24176d3a3822fa53ab2971d23c2dcc911f0c652893fa747066f7c7f832520f7c6d19d00b2b63ee0296ae581257a557db496846fbff0dabd778ac40a8e3a8bea0fa4a0e3ff9540b7b853a31afd909\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884348c612ab87451da2f9d6752a197a27ebd16af0afbae1ede0a245fef9a7838bfcf3bca909c34ea8b2c9c576775e0a06009396da7ec14cc40516f23a207cd6873965164d304c1681d192d5d52c3f0419cae73d4f2a1b51c2f54d8a32a076cd987b620c26fe1876994dfecf17773e81098e642d22b78d72d3da7b210776d69af20c34ea762c7a8ead2b8c5d1f55cc6162ac0bf5cbf92359e0a05508e0ac82935822c31d62668a4e539b52785097abfcd2f4658579a8b1b71b5bd7fbba3fba6b1867ac89f5f8f12f0ab374c330dd1f4673099c128c3e85ddcf58afe078c67d8bd1f397a46da297cc52556c0e1cad89804e6b14f9139851a16dfe405d93c3ca78b844c3929f8cb2892500e15cceea3beee5cf883977b7596db1a36e856af2512c5e72425cef77bfcce56b41b578182bad251c1e56dea0e857bed5cf89884ff1b2add0f264cbf616525298a80a8bf4bc58c01dec9cc8fbe34a405adbad26e484b2bd51d14df800cc933b30b41038527f4b38ee5c3fe9e750d81a5788126d02010dddae71b00e994ab5b1731dcda592e1cdc32281cf1d7d1502d836cfc58c65769b64111d8f221f68c4d9316aefce94574fff3d483b34ef1a8a744ffa33933dc331748d90868d1279a9572de94057afa3f9920591529f95831d7c9610a7e2a529127cbf6a7f54fd5fe9c769c1fd26499cf3e1122dfd8d0bde861246286d7a3e38ed3df037b73986532a488c9d2a53e9ee7bce6d3cc53735a88545c705c25ec133115971aaf5304a668632c36fdca62deefbe31e24e9148cb3942a0403711a82cc90a9edc141d57f715dfd0995a5f4999ea574656a5049ced5e863692d920d9bd5c2d26d49061d73ed73598e18578025be1a973d3df6fc3116c9494aa26a95198d429857309ed0f2a38163b44b6e13602a1d182f20f13a7823153fcf0d9fc8e0923572ac2b392213fda71806a0a53d4dc90069b675d0e98e32cf4ae742220bcba3f77192ce7735c8f4b6fdc826db3e825027e40e21a9392e6d16e00601c2ee4320220df725546ad57f60867314f1f0a2b87b48be45b33aec8362de69994e8261e3bd5118f51a942e8fc2156453131251833ae988aa484d4ff6e83e54e2cb774e2a6ed3c5df532ee044db6112c3b5e632d603dd76ab93177154e274f47e1ef03748b96a83218ee1b5b231affea7acdeabdc68a05af91d9ce4c43f53410e206ca672df94b52e5082b96d40297e63eabb3af9ed82aa40cba2874bf4f955d69acd9cd669448035db766b6b87afdc5e0d36b06b757740e8ef1989d424d10c90b4be8cc1df5811ea64b5c52146ad2eeb156fcc898c262b142279c35ca512122481bb25cc6a6e2acf519e41b1cc33ebc814f4030087a6950773e78badf98766af563a681c1b31de51ceed7e79754dcd09025237cb3b366f823a5efefabe2d0685b72c259a020e622f4a9191d8467c9f5d0a1c4a971acaa0387af59e2e631c997f709273dd12581ddc8de81e66e025b4c9c73046f2c1fddd952010ef33518714b36dfc83e425a8d19edf1f5d86333857135b91da24d0163bf697653d59aa0920fd7c5ab6c3176add4ed39a32419de59834006af19f33423ceffabee7e61a16886ac4d0c8c43bd8000453243a0cda5d5680d4f0598ae68cc0edcb807850fce1ea61e0c5a7b2605ed48fc93fc3914df44476f662feafef3f120541bc6a686f8162db1ba2593a7625ab6616325f55580fa666fd2792390a819760bbe8d9509614a30749517cd65ad5165399c3cf0b50a6d5afdf3a9ad1af688c6b81092f33f271b69f4cb09f35617c649a1423939361e257fd5eac17e5cd64fc374359ba09a8f32da191a718007d48dc87b28fde5bf37a35394f851f91350478ea8d9e99cc9b7013cde5f3ac728bf9b4fa4b24b3fcb11e000c807029f8b251febcebaa8d9b41829547400feb2353cd1260894950d5edbfd8a1e13fc9180d040b3e8b37762dd98f84ef39b82cdabc08e2324d56e0b8bc19baf7f344a9fab63ea2feac19d92afd0cf458bba6235f018ea604a04ecd1e16a01d04d7aea0a442060856e62f717047e461b7850f383ee6608d6e5e0dccf435fe520e859c6c0cb95ad2bec2193c85dfa15eabec026b47f43c73d33b4144e5eb796e34a7679cbd5e3ebdefc7a64c6c6ef46a2c08759891d53ee931a45928bae49d2723f6d542c567a807feadd9d488f5c8cca942f2a7651e03409c82447ccbf2a6587a03a9ecb9b3829ea2f557674be0330511b9245889de69697dbc9e9854ab96a17600b2504d4707597cd2cdb6a48c5f2000db37aa35f74dac3cff0c4d37b1186f4a7ca8880e94913a1aa1b8ed318bf6cf0cee5b63da5016362aaf9ca457ecfc2ea789787f5fc6d109a2964b01abaf749201be646f28391d32e6265585737351b18ff04d17329d94e8b994dd9957b010046cd097cb1e4505ecd02835ebc20c8cee50e87f66e86eb1249a8cf889cd3423092c61c78138f44697d621989197b45814bb879424d94c35d858192b6e23ff1c9aefcb0fc305b39cc4448172d4b746a65a1f5bb099c2b518aa794152f66d5944625a73f3b4a55235d71329bb63b54e35783e6c3db6a31b3838fc23068413327f6644320db7d896620cf4ab7647b2ecc8d6d984e1f5aa8a1a03b34aa2a1d962a51d7f727fc5bb1c488bfe6c4503f95be7a29d2ca6db92f0f669926e4de9f47bedc2957614264b1b0ab90f95dd13e7cf4b9b468ba2d7a3a01a58ce8b14aa027737c529c8a58b7a162668fcfcdd62e8d66685310e06eb1e01be974034fec096f633554cb929a03e32e483f2f2796459b3d4a56621b4452621fabf8d8bb39c0aca9d9569233daee494d2626a53cf99e0de41840ca78a6c6cd3d553e24e70c2c9592619e4503b527381d3e81c1df4daacaba9f38bbf9ea2c927c984fef8c1222fd6f8af601fce7f5d21b212d58c9891ccda9ac3115af94e5b684c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bb2be8ef10c2fa0cead1ba59738b68b456f7f458e264b3c9f00815\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"81e1ef8ed5da8bff69d99fdcc8880abb13d49b94d8dbbe5311e371\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"33e0ae052984b48458842f378d29d76f03dc8fa9a5e9e54a4e4942417d868aeb50\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3d77113f0c25861000889c244e7284f8ff33dcb132cabd34a795918442a3954f05e5c95711\"\n}\n],\n\"handshake_hash\": \"faac1b5e3465052ff06943f5442ce64849bcfd0af1bcfd8cb128ea924fa4690babb0172a7c6c0d264536b52b84323ae0459c008add83b0d5012f1822fb2bf572\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944181e7d4d7cb947c76e9cac588c5fe34a4aa825b324fa1d6028adf93bdb0ff5fd7191c78e295a4284b1e5ad5a26c0841a20ab1b4db2ffc07f5fdb9f7398d4e399a3f5df5f58c013dd8e55b17d250de5585c7179a04b5bc0bd7196a25cbfde81420713f06be2d3ae5a4214140a72a796ebd42b738a050e6b8ee1acbb763a72825c9f6240d04c97f3d26e894e3ac3c31aa8ab2414f99c05faa9abc5bcd79c17705b169e62dcf2f1c2939c8a76e291ccc2e2ca288404834dd25bbd77b16bc26c95738f714484a10534d04eddb8093c4393cee08a9bf4f4aa00153a2fdce06dffcaf0b704dbe0e5ef8eb9d257752e26f134e211d61646c1836be38d09acece94ec36557e7dcff4cf0566807149fac62ab79da53340cb312993f5f82fbcb7ca0e9d50de9d1a991b06db235e1bb936dd7d5f65ec4e689a1e0755303a201dbfa97e27f83b45592b0a554d2857177dc9af28ee7f90aa20e5c66ba8bec85fda86e9dfb0efccc69db4c192495f8b04163c88ff9702261de5699efb478b4b1d8340ef7a6921f50af06a7b73e480a69ea61e93ada3ad3b43f3837fe0120fd9e5e92fb74f51ea9fd84a18db28e0ac1f2f06499233c92a246f09a4177097f8489e1e30a10954a0a515ed8bf24d9ad7098235bfa6e593ff78031b9aa9c622fe19488864e9a0b0316be53c430c8722e6b227de4bb92bc1374fa260dfa40f733caa5911312f6c0703dd0c5e43404ef0aa907c3b9c1fd96308e21d86a0ab0d6b0e99dbe2423cd43c8b34113ae2aaef1efa857c8d7b3b49b747e60618e534bf9cb764b5009775c75b90ee3a3821c37e8bb7de791746512dd81a362380f52ea81bd84b74d5a26aafdf2011dcb17349d9f5644904e39268d7b564d13cfbf68170226079068948b72661c09ad470d5687c1b4345bbe064c3e6141edbcbd84a1fd240998f0f1ee813e726347318647154d6e14693c484e2934eab60b48f2719ea96a3f0e16e93c0081906bea04eb7ff508f8fbe223f6667dd1ba3dc864e5b6aa54c393c266bf4ff65755bfff5d0eaf6c8550f3549fdbd2c84744dc8ee893b62a7d79fd04371c231420b77052a41b28916a29a9d8a7d6ae307dda2948814510311453c88299d3c85e83020b542459c4fecafed86821c74b9b494433758bffeae15c6d80272922ffc2c3947e7ee43f9d5d65002a2d23ae0f6cb3f36f779e07337eda5e0e5d36524e09df124674d1168aa055c4c50256b3fccdd7dee00de99e02415985efbaf2bd99dceb8127d21f933edcd61008e1b7e4782f22bed56ba89c733952750ca4db14b7edee0eb5ae292af9914c9aec027cdb1f7b9665354360d2f1facb3ac221b7f604ad98739ea6b75565803f230bbf0be83f9f5acab48d0ad402a92895ba38563c21e120c46ba285760644854663c69eecadef67a4b0aa173e001cdaf32306d57236cd43062fdffbaf2533cdd521c82a7b43c6e3ec7e4784c20b23db115d760a35eca933006a37550409e066312e94423889ddf4ddf72f910ee069a08890f9a9e01bf9ecd5f70fc8119f534818627e34bb6d2adabc987bd04d9840513a1c16b3e9109070798d1a04e5c721755a63d671a5b8c64bd0c87651dad7b45ac1c792a007984563d81b17c6e48429b4452d5e7876f3916e6f26f427c2330ccebcd454ff34bbf708051c4b5d1474834ace80291d65ddd41c123bf32479857210d69c9957fa5a16cdda8ea97230de00ed9230736626739acd1a311e8578cfb0ce16aa8d1136a3ba70738cdafa69c8ae8ff2e9170cd185cf6e5929a4beb993f70d27cfff667088623230517396f865ed1580f7df48e2cd9aa06ae2ff9482978f76a62d01118febc4cb577be38990c3de36187a8902f9086f7f23d24ea38697206991c87af3fc9b83282843ed2fb0c0aa1dbd948c821d16bbe7f5b09d60b7e5017353c1949e21c16d56257085dfac278ec8fec702847c15b30cde01c9eb71801bcbfb6dc0619b05beed6777f6564e103567f61f92300a5f4828dc05866f50141dcebcc595b007bbd3d6151f0f10885632565c4459d15c8df6039036e057019939179b17450781c3b4d6000f1384c3b1f5b9e1fff8a61d57519994fa8201541aa79af1d5608c29e8bc8ac4cd0c900fa36455ae4976cf5bce6bb42964ad76ac9b532de278beb112685e8d56fea060e1d173039fa714dd9e602a7e0814ceb04dc77cb727e4683cb873be0ce9f37aba3376af1eef682fcbc31fd0f494355490708e983a35fc4e6e50f9bc399ba24b1cce0f4e156d86539e30a67bcdc6664a5f78f7d4f5a9da5661e71f2b3893402330cb8bc0ed2ae5fed5c0fbda5529a7385fd1abfa490ba79636777c3e4ca41eb226d684483ef45afb7e5d51f17744dfb940e8fa5d14fc125159378944563bccb7437a6d5894cff300d3d2aa1086f94d6e5bf9f5ac318255e67201cbcc2683a9be04b816324a4b4d319a01738e73ea27fe96e15bc2ddd287c4b0701986936f2c561167106b9cbe6428efe91018a4124dc94470785775186f97ac51099d9204d86b9cca6424c8e7353255808fe0a0f37c58127dabbb158673efdf9554cd1316241864af58800cfd5dad2039e66a968b3aa9a8962ff7ac723f912d580a39d252def06bac7d642c1d700ea49b000363adb761b294762fd2a7bc43e20e628ca3e4d5a91f24b3e3688fae08997013b3d1568f39cbd118f8ab72569321a03be3a5f79092\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843bbdd40137c58d949d184d2e56ad15d73ae19edc15c27d9d552505bd0172a8a67ea57f6077ce8999f794054f3986952eec71c034e692fe95bb6161c042569b3c28357bf62d3c82283005a9d7b1fb2c3306c952a3be63f4cc42e604010ce7d150aa10be65a4a54843087c29de798f56745aa562d11205bff01c71676149ceae4c234c5d78da429deaab78cd1ad678331698acae8001c887bda3daed8e366d68dafc6b503a25d0940b43bb8c5cbe100d0e6565199e0a5f7a50ccc913743c8360337cf455517a2132f2ca417a22fab650a3d18301d427c6ede8d383716105f53a1abb09af722d6084b4a467d6cc6c6385f0da5638388250fe8fb6dbc7cc0321df48fc0634a460b5717eb54fa221497b7cd65653d29f64e6243b5d05b638d9064eb1b5fd57d7ceaa799953dfed38353825191643adc69a1bfe6a85b74bda60e13660b15d5c828a81cfda92c64f873bac101f7eca7862390e681637da85612f865b6aa1133149a5d7640997447800c6609b22b0233297b5b7220d5a0badbddf579f0b2928816f71a9ab115db19137cca0715d54c0c5fc60607946feefd7038f1b87ba37e1b3957d146ca5b052ce74cc857b7ac1773575eb7482727b786a8451ea54b11e63a1f8fc49badc22705f82e52daa7cac33f3ebdcb63daf60ae6f0d3709b7f2ac0faf77b8f562878d1e63bd447972f868e7b458691248c4081ec1ee2b9256563d0194bd87b822d92301ab3853cd78fa24dae3ae39e8ecd7cbd8bfbe997017f7554226ac8cdc4466ab9ea56718b0c583cc66856d1ebea697068dd0503469de2f2fef36c78f13d7c3f0d8638eb0b92710de911ad204ea8603fab4eccdde9e5f26e1b991fad041bec87a736dde7f4dccc029ed20ce5a13b3a93b6f87869a73f640be681723699162765db9c45706a05149d4cd5fa0e5d0d7f2b911ee4844bbc0f5143272da2267ed34d4b6d64538d62bb39b5c0044feaf1b1604a060da75d0ad37badea6ca93b5d696430bae785f7458407afe2a3a215f387dee1bc425cac5274421b5329e2bbccc93c0a8e77d5a2841664b5b6ae73e0e22ba2e9752fba7d0be48ef72c100c48dd5a9b5a57926710c67c44965fc128a2ded82c838ec2f64cf0456de8d21d9fb5f6cfa8feebc255d8cd756a32ede83fe2d0c59115cb08c0a323f8a09b000a67d0316a5dac8836075b027d527f6183a25c5ae71390e2ec1b0385b198970ca5183888a330a4ebc5cc009375bb086b95aa65e010d814745bcec21c11d7971ce7278405ae38342ca667756031e295d7865a763f1ecca481ac2b1b2f4ccdd4b7bf50f3fc50c3f09098703821f6b36b4b5ce08af1e995ba8d72abfc7236549d8cc24fef88c426d447d0fc319ad3550986d72df3e401fe8280175f0307e8c2630fc8ad0e3f39e2bb3f83f544410925b25922c48168c96ae4ae86710b2b4eb42b1807ef12e89cd12dc677b34c751d8b5e309036f9de74628fccf85a7fa9a45c018eec470f2ecde28d9a320be8b16645107f9583744ac82e45b7a257a06c5403c4a546693406a23a190be1a57918d1d41da8e59c41a3baf8158fdd3af6aeba49a7cc70496af0377f9232fd875c86c537eca4f3f8c3524fca6adde924e15b51e2edd5db23f1f33c0a2f8bcb40e18f613c2d29e16a479e3c37b13954b64eb7dd4f3c7ee397681437c294c7923fcf9ecb7e946ab6e5801881beea40a67b2fca0ea844291ad8f46d12cc1d678992bced17495c82b1ac9bbe4f49fde4f06f0d8fbfa8d898132b5f31c6809905aab62a1ee13222a01ec98dc2fa68bdd9e5289440e7479a490b015b64a27d522ce62396b686b3e66856fbb17ffe445c5a777f3e116d5e680cad7511269eb597d3b95a2ee7df9d5c7160414e65837923661cdc3771fbf0052e216c78a892b1cd7009af81859b8964b7b244a642316e727cfb2489aa965985f7c7a86507413497c5d431d5a2220f62b8ebc9e1d24a6a6e40d319e4d343f9a8a65535d75d4f62f82ae1a6946be4b8f128e566249727c3e04ac54e4e3ccf93d3a4a957cf65453c30fe325a32cc558b4fa60ba0969529048acea350569b786b9a2e908b9cd213d78496296168b211fa51d1a479eed84348766c9d934f8bccac1c31025eaa0c34d1f9946f2f5d3c39d52f50b65285b857eb8a4e742b0b97945951df78401d4af433931caf5c024b016e9e314df15800ad9f7f79e93fe7fc4e2804bd10c0460dffb10a9d6edc436334327669be158b5d8641a0c50f08d9369cf9512e506dd58c3e1600f34a39a33d018511ba857af2a4532743077521dd8e38fedc25e618efaac5f49f71631f4bdd960b697d72c0f30860140ddc4c42b88800f0f66e49a743ac5740095caedc164c69e3b983f9114617683fbc145cad4720c5bd8c0627bda36caf4e191f1d57f020497f8031f23155bf22a9c44c51c1e93a6a877fca922df3633a9c1ad83e3dccd419ae3d813cc1368988e3b187a98b1002e0b2fdb39ed85ffe836a83df5c6502d45c7e2b07fb670e3b72f988bf11301b4d59ddb25a68e101f38446f5a170957d194618f0c2b463b0ab48008b274a9a695fc8c1ceb860d306c23145059cc4dc473002e1be3e937a0c9f8dfec997544a99833abe526be08d7f28d00f6c0702431a1a7cb03e1f4632b58fdb063c0d258935d28b3eaf497234394e702b4576897256c1697e0c04e0c4b6b118709973d92f8b7cd7f5bb7ccfe16d42e745fe10481523abd846797c26ac92bfda420563db68d70f6328e52ac6f7c7d6769687a280ecb7edde2567b1355c6cdcec35dcc66db3420dba9d3a643add66b0033bd79e6f1ca64eb99071c75b2515e45f76079fdee54d5a3821cfa08020b4c428a0aefffa0cdf590f4dfab23e5c09773b59b2a99b1614f467cba489147360e2a499843e702ffa9edb6df1f114b87847f91368dd34953dd71787066805a77942025ecfb41fc9742461\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a64e65a4e4d1fb97d7d239f02d6c2a9c265d507cfb6b2f64aa87d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"37d5a791a9ce5f3dc0b065fa9a47d5edd5088704d40fea053d5d6c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"43861871838690c2d7140f821d22ab2cf0c5fa01a132bbefd93f96cc35570ae3cd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"883eec1d1ab8da429833d2280f86e581cfe34900f6b1db274e0a4a20a37e87e6554ab3376e\"\n}\n],\n\"handshake_hash\": \"3a3b7f719020e3402c107e83763aa05a6e56486816311887e72e354ddaeacd0a\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79441785088bb2d91209b893bca46c30682c43aa88b64de31bb3e5dd685a8927b816075b5c66be9f584428a19259852ba64b1b5eb4f0a71a01347ab96dc2701f8c7745112310cb3742dd1e07f38dba9fe9afae0fef79a725f5c39c3fa0a8304c08afe2afa3f13bfed2d64710ecffeeb3d1d7bdd7bdf6b83371e1a6989278513d4e70959786ed85771f3a5f7f3f9e6d5c864453c3434764cbc3e230ff89b3bbd468bab320cc9a66f221b411c6bc93f67fb109dd561b095bb3a2c7c17678a5de337f9a40dd7ce82f5fdfdcd183a69dc0764f99c161b4df0274d287056c26466a28032b331b202e0cde80a8aa1ec795071a93058cd9e754653502c10f6edacbc5ab99608d1becfa1c5d3e2ecab2452e62af5cb3f326ccc4fbf75fc32e4745410e526a6ae32d57aba723ca223ab91b71f89fd2fb3eec754e4a729bac451769804ea2fd872dd8eae993806e013f70e5c2d8a8f6c1a5d8aec03b12e2535470b529d565490adc78ae2d4124242f8b773234ceb55dec61d9db5c5d75daefdb95ecfcc14f7a43c88ae634b857178ed4a77b5ef676f40a31cc131cab02d79a0ebbbc9cc645f07f48e3630133e23c338cbbc2844b25c355c2969964b0c44dc9f8a9b77a2152bf4bd83857cce67df9589442a0aebd72d76037c4803a151b07c7d4053ea136c63cc8f2be4b3a682365616e867c80d44aff92aa4468371585644347a378dd8446fced5dcf75c1ccd168c6281c4240ea42cf3a812d33a0fcfbce240fc91df754c133ccf341ea5f1fe57a403068bf63fd66f3b20a6296b808ddfd0ba5cece8f27eea2f6ff0d5e53a9c22ce92d33d81ae3483097066ccf5f3bfdbf42d03d8ad3eae200344888e38d97b3ac13928e9c2dda34685a3817bbfd2d3831e8dd95e749d670c42ea8d6fdc89ab04bd39d39303028c1350d099a2aeaf884773c9f36efd3755b0e6fd85e0111202c92bd1b374b742ce08f77f421f9d7de1929487655a3af32b5938e36962621a660e07f276e0a7eb1576048207d66a4a5412c338cb5d2e66463badf4b52b1504f176aff57c091e942c7d944b156566d3d48cdd7180827250860ba1551aea456fb14414818df807f04170c12ef20d6a6c2dd5f130f6e183b344f10f2d74ce1764c804a73cef5d6719f230eaa567f25904d1d555745fcb6535704217350607f541aa446c4a9b71a78ffb60dac2eb53b0787afbcc3db202515183f23159ce9dcf581631cdcb38a30c09c379e4613c3faad42e46e8f5a00d682283ee74c198807b5db8d42026ba3dff34517484a43754385acba570be8f8b211074312730dd4096a887b88010e103953d91b8dee5ece657b150457f0b18494f198e511b49af98fad22ee71be4b84a26a9f62777bef2d540299e8268c51c1fdb946733ec538251659a29b0c1101e78f4938dc2de2297c4bce8e4e3d9e4273c0c5a227f94a043bfd96e5a588e767eb5d1f38f337df1451b68adc9e576cabd0fb9350e5ad247010a31a38f15744ccab193c80f747332dd47674990d1ca6f03c678e641fd233ab9c75313208f9ec203f6483ad25a2193e5d392a63c355fc95e8f7f2c82dd68d81d86a96151689ffd6406546db9da1ed0adf3ac9b6195d1ff92f86eec189909f3ca022e8940403549274a04bc4ce26ac909f3f15b293939806b14fac35a009f59d712554ecd681601eeb86104aee493a5d55024b484b6e98872b18dc7718bdefa6c6585b726c80cb5213345579b29d32e5bec3ed527967fe7a2435bb2fe6c71f7f136c5575fb28147642d0b3590e9b220811c0bd474d9b72d173c3bec5895f650f660335f43848b43f02bc42befd98252add521ec5bf3967f4a803fdee5aaaf5ae6330444207d918270a05800a96e6cd400d4ccb82a651863af5b3e69bf73b6b0f95f819f36b0a041e50dcc489af1e49bf6f8cfd6be3de69d4a928dec4d441ea9e006007faeaef792c4bce35322c957e06e953f377e9f4a47e184e815555638b409fc96d6ea7ba2aa211929e154c5262ebfdd464a82a5446ce7c872be17ef23a9ae2950cf76041b6b297bc95c2e4dbfc9b19d17678e619795454ac827004cf60c413f85a0f7c4247f8e92806a82949531f169a62bca040441e08addd3c1a4aa4d4be9b88aeaf7e63fff5dc56a971296de8919976e2e8313212e7cc8d4e51b24bbb758bf29babe849d4b713700c948311f5fa93153626830bf3f11ad479367b6ae4062254fdaf3a466e4e4019e3841ba3ccb5d9b37392adc1f5260b423484aec9c2e21c6b4b6455d4bc1722e1f2b33f4d00c621db02201e1d7bd1e633586ac73c64308c70a19415a627b83a448936594c3d5c7bdd46b648102ef3e426fa3371a6203368b2999ed5689531caa7baef6a1f96e46d3cb19fec7069421306eaae0a47602033613f9ae95476e3c9c19bac1686119668b8557b40955e3db3742ce15a6bbff429e1bd571b002c6ef79389b8e8f4abb87a7fca493f1411f23c90491c4a0216477382e675b222f80c8c75d43ed88216ed01e54da8dca48dd8b113f3d5798eb308cd53b5d3b3f305a79742b52f6b395d13da3a80648d8cbb23f831b7b5ca0d9666d35ac99e977e27f87099557d9b7b8ecf0fcfc45480da7373ee7288d5017d6001264c7c8240704d309d66a33fc7cacea19deedc7f5d6c2fd9a6e8e2fb5d95c6024d91e8397889ef8401cfc2815fe6df504904a3ff6e5331d78ed1140b8a03\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843427474b8bb61f6fa8595c0ca617e10745e5e53201e5a9a5510fc313287518ccf591f958a41510dc93bd6b9c42849cb670a9228bcd577b3267978ee018af6d33098e6fccb048642ec4bddb7bb7121b827530449188c4f7aec64a746608855e805ca048a0eca2f015948eab9fea9ab0ec42b3f1c830fc75dd4ede2e0ea998d6fc513f305ad90aeabb09aecf0c1cb04ba4234e9f75c66c6e0e47ac7767e76fc107e37cd0391d85c592ede92d2bcd5f68b0393ac2d1141e7f247a56705a7b6913bfc0ff407b144c4ecce2b9e361670af97488b0fd5152738c69cec52d09125812ff0f2a4496f561ba60cbe4ae5d627bfb380f80433d3a0de5a557b1603df695a8717052602907f3736a253c3e316e3502458530836f3ff8c3f7d8b913f0c36fcaaaff9a939927f0d28d9d9a427fd6cffa9750146645eff8c036d0ae78c891982ec0bcff0b9cd7c4957a15e3228262475db0a99584dc19e551889531d00e853fe6c4b291d75ca706d4e9adad443294152cf264412c9e46999a5048bf4b660def99ce229ef54c9da535765c79073daa1e4c1c1acf9dbcadf25beb2b35ff95d6ac910b293f56229187dd5fede0c8a84466bbdecbfd60886a57da2984bf0944de5fd61cec94554f43c376182873acf468581acce7d3304a05180a887c97ee403411c4fbb06161ea35b01bb700ff1ac4764daa54afea31d224d74124261ba2e79922a7cc3d6079e565d5010fe2a8ca516b4c5e700dd150fe08c1a68726224ea36b6528b328f7ab45face9853fef1fe3f4f642cbed9f36293d04ee8946142e447226725894d0090b47ebf5ad25240cd87dcd1119a986986a4356a0345033897898d25af76feca45147818c445e99592b1823b5551b7cefe47029f26aa76bef2c5c1e9d94acac0f520abc30cf2312105a0e7d0ebd53523e9b949a4ee305936ce9d972c5b2cece4ade099dae48381e3cf137f63dca8dc4202b4cde39881c8bca36b39a361aeb0e4c37e6e69f69a68f9c600048ea26d2e3f14d9c793bc98816237d5ba3cc82998bfe4dca21c33ebc93371058f4913bb2e89e1c8483b6365e1d763e911e72d329fccc1d61478652591a9315765b7f725d56c12f10bd50b56488ceaae2adfedae826bca6f25c48910a1e9906fdeb99ba1ecdbb590a80b4d1c1d35e5f5d08387070a61d3ba4d194dc7b8f49e863b080187d1a4d701e12fa7756d9866e3e592ce6c43fde0a653242d63b429087d5ff3c089b430054d0cd04a609301ae20819b05378526daa6155f098579c634e75387f42889787ae3240554e35f1cd94a35e867ee607bfed421414d519bd4c4f2fbda9c431455d37570eec1f047eb456c053ba07dfe3c4418eca252c49a2fd0975edef051db20bdcb4c9442b046dd7b192440c3be3a4f21aad3df3895585a09a146e4f58d6e52cbe2fe86386952689df2526553188d54588a19b51241f46e3c4b1e5fef035a6901fa6aca6b6f2d375e8f64efc8d407c905fc6c024c28786b44cdbc323765145e33d6ccd4adc61a9d03daf152edeceaffd7cfaed3368fdb1899181e99f12a3fffc21a642fd9ff549954e8bf06abd1f60a8cbc376ba2cca84e0e6166cb6516a4081b3e60bc43775834cf5d8af0df32cbd7224d0b7c896679b4034be37fc94fe5cffe05a511cd5418eefa1b8f8a17f11604732b17cdc70fcf94fa09dd886fcdab2727ace1882ef04c62943b4a735716b36e5ec6160f1b2af2e2d639387052acb77a799fade928b8229fbf4e34969bb14690e340846df68113433b5348bbc202bc5548434383ba19ff84fc006d489cd1e8b7babfa561e4c9832b252523d2f0d8a512106e1b09b3be502ad6bae06555ffa65f17b535da2df0a2a41127898f7efd05e011956f0bbccd0322f0b6b4f7ee376e2fe0b6213ee77df89552e543e32d59e4fbae1c40cdd59e6df673c2e6e9dfd040ec93b7197ba1fbfbcaff060f1e671a7577cbcc6b7c6230af2d1402f5d5f38f6e4ab323c0003612b93243a39da584cff3c02fe127191d68995ea32cd2100426bd30eb86ef1b6d6a9e8649182886b8821bfb8d5e26bf5b23218ac646f7dc6cd5de6d3eb898df3e8c308fb66ebc70ba72dc2bfa4308577dd7c88d4067fb332fb40ac571b3002d8ebc4e62061c9312dcb7bf107b6849a7ce75099835b077a2bc4d50b505d2d81c4c432c0f2a3740b382fddc4745a52569c6fc5fec318b69c16bcefc909fafc627dd410bcc71c8c1065c92ca18fbff1ec068c5fa645738f0245ceacdea8bc8cbb9cecf7c590955a168f6c48a44503dadadd73cd91b4174264ee7767aeed4a00cafc172427a20e4a6a0a7b1fc12e078685a053f7e7454e7a1800cfe4c3563413826e1e0e09db549d8849da84ab392035c81c8c3db8506fb275dd36c5addb7eb70d1cf574a17e4e504d819d69d0fa40b39520818790c9280d19d67b12a5ad4f890ee3d0352c7fea6aef087adb28ca505dcd2acc1eb258127340b016c08f533a851a214bb2241f3824a61a0815a33dd76be779ba64eb1ca4e0d186f348040650cf26f3ca7a8eb1fe1fafcfef8152cf2b3358e7ecbff532a828ef04acbc07e1d1b6f037bc81bbdcfc685dcb8b14e9e3b6bf1731ef2212430da08c1c37231080925f3dcaf07e80cf4679f4bff2feb84a1e7c4aa41d11f1cae72163f1afcc964412659e20a83053163e19fee37cb3deabd69fa4ff5e65854a93ad333c41a0a6b84a1994df7af165fe69598e872bd63765ee0ed7f8ee4ce3e3e21c9e4f54fcfc260dd9a8a14f251482558f1149ed25608d6615d2f5dccb8dbd6aa8406b2b7ee9afb97f84e23e71a096fc4d4fd67df56ff50838a899475691c3d9cf94e3e4353557d81397e6462778762e98a9698d507ef6c3c2df6583cbe528d05135320a0c3e4d67fd43c57c800ad7928dad2f5dad06881a9372282c8667ef47cd4cad48017e412e4420c52850090936f82cad24\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8309878616ce4d87a53b81dcd97a4c4f2fcccf63c212fd3372a7e0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a3f8d3131b3656686c38e766ca863f7b03c37bad918db50ab38926\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2e01da665fb82090c46a35fe14dabecf762ce23698d68d05c0f5834075d84d4d22\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"37f9e9184616211c79eaa35e413f008bd0d984c856c484618884517b2e1b7e05d99c159928\"\n}\n],\n\"handshake_hash\": \"a74b7c753a809a78a264f0f7f58ffc4838aafc09ce62ce5da97bae8667ec1afc6ce45f3c78ce59a1ba6069a7e3cac7126df3f95909683fa1f5fafa1b6189ec02\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794437cbf8766a5998e9ac1b9cc87587c51328fa04cc59112dbf0b16498f3b8443e4743fdbb59e06bad8163090e47ed79e47131a713bf6fed0e8339576e17723a78b67ae3542859664c0f49a62c3c1787811f3e4071a337b55bd626db213ac48d1f603aaf3d2196e89be40e500a1e28babe7145ab787fddf7361e93e948d9ec68ebd83426b2c04d4f72f720778d84525214010c92dddec813d36\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884360b2cd2156d9cf8387c2710f96c43ea4b239eb73f23fc99047f8a54f2000c07ba4f25549b4def3baf1b4c2ead5eb97520900d5468b446b3dd05e158133b223220b26ed190caf103a25a96e2833b01d4ceeb9f309a1499081a636d870b28a446de49a416f7b46ae\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8e0da65adeb263d2f586c45491a14f344278854c8d0a60bade6343\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ee1bc880f5586029a0c2957d7936b5b8a58757bcc9c7b26e44c5be\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"02b35e96d130fbd64d3eaded79d54491dc524fafe9d0947ee059e0a2beb1dd2a50\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8b0be1d0e997a54e48d467493f03ee1b1e8c4a92ff9f1edb4deec869a097819ba4bc64730b\"\n}\n],\n\"handshake_hash\": \"4d5c8d22bc47405d3f034a8d7f0d800f148a2af5a20664ce58fd6bc0a7a187bf\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794485510b5ebd8b6ef3d389f6a584980e0753fb391a60f6b3db0b0260f954dd56b818451ed2add6553a6584ec474fad8bcb46bad8ecdb6ada4033fef8ef82f7de6e837844dc401a50d38f277d8ff4efb157a30937dd211cce5f3adc3647942ba9ab82dc1e6d83b7166dd06fbc4d5166c5f9204976781dec46c5abca661a2e221b9ab9abf65e2909e61d7c434056cbf1700f07c76639bc94fc4e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d66e6fef825ee451521f10ff6737aa897cf21d5049b99273434251687ef003981e8ca683c85480dcac2e79c94dfe3603232bf5e4f0d297154296e9bcaa5c0e5df48d81a193257d45b1fca2581e9022487a4539b703c4a23b6fea38730b61f8176d71b42d6e793b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e3a8fef323c394724634509659ae7f113b72eb33ff1399ad0a58f4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"24e1efa1ef10593f2d547453d2e401ae6de60566e476b7f88f135b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ea792439e3c27a8c4a5ff226918010e01f156ecb477c9b80cd2679854ce96c206d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ec90fd778b5974a2d9158cb1e8bd9976aae9790a740ec638540c68289c2b9e1a732ba29b6a\"\n}\n],\n\"handshake_hash\": \"ac2dc2c9d7f6db9333ba2730de033bf2e4540e3d85cd7bea14ffeb1937ce37c3e03e6bef9ae1ab5d8b1a6d20c05d64fdc1b50063c4e93baf039c55be64f90d8a\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944976c80d3a2907e69e1674e65bea246ca0d91b400bd926ffb28550e37bf2bbe7c76aac7cfa61aaefef6d2b0913f41589949ba77c6cdbfa56491b8af615b16a8ef51ca75da45735a61b21b390ca4565d8f9c0fa6b95fb9c874b44376248a3e2227030259c92e231f7442319fb853f3b0528e5e34108481930160e32bea2b237e65a67bd3f22277aa07c804d211e3a25465528e8b4be845094f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439d3dc7b5893ab7e0190c8646e6611584b71a175456f3b0d23c7d518415697820e40d8aca598889160955221a01c85c7aab029c11315b90a2193dad528a87293c496248fee54aebf221a6ef75d40d94e9014246e46059ebddbbea59259cfa41c37e1d4d87498b07\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d73a3615eab4ea86d8d9fc2f6357d4086cde554344326b496c2497\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2efa12e51c3522f82fca45481ecacb1c11f4d872dae9e85e3e3762\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2a56b5c8b4ac4b80994369d25ade0448f435bf7705f3a3728c33687ea28be763ac\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ebe856f7a4fe5d24dbbcf99dbfcff405960000cee09813f26c44ca33b8d750d18998191a9b\"\n}\n],\n\"handshake_hash\": \"5ab17aef72c44ea2eedcfad138c60933e905a5f8ed9366f057a1d06855536225\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fb281b2b3f5be16523160912d68daa1b2266e0b830a9a44f37e518ba1a6387b92cf489d8694d22019db108679355ea749f816ff0d76d81256bb9ce537511f12620326426674f4a3cfd7f181ed4ab1e39ba3ffbacef347289ea9090cdcff809e4c244be2206eaee62c294250fc1ea1a63fd5a45ac31c4866317d5bed4f8a4455daa1d6b8c26dd3fac46fe7fd4fa16861f3a3a85f2196f1297\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884369a38d367009efe59e89443fc6496d958b46c604045d871db81fcabc08605d583f4b7dc2e99ebf1ad76ce0870f8e105f3b93bce6ddc4bd2865a88ecea81eac5fea19ba5017b642ba0125469c3c43aa5d7a9c839b1eacdda12c9c12fb9f25e05b15544664873bef\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"be068b74996a112481deaaa92773f50d0c6bd54323159d47da47b5\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"85844c20569cb3595049e8d494e403da30ef26303e1e00e188271a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7a05858557008019c8fb029cdee0189a905899eb9c2737f4cfc283afba84978e01\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"066864627d5340dd59e025633d14745c806fe1ca9ad942637bdd65b8ab7356b300a8f3b701\"\n}\n],\n\"handshake_hash\": \"2578db3d84577ee8ceac59f973d1e9182b0a69808edd7b4b165c75b16d9e63bc065d42d0d099ab31640e0b4740b8c50142e4ed8531874237572377ba8d0f0fb2\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ba74567e5620293a1a6eb56d49e5029509c14deefabaee182221ee718856c8118a2880f55abf4168a1e7e2cc1b252b79e6a3cc1a61af5d9d5343d4a93cd7e29d8868264a2607345647b17503e22e47f0aba9b965c6db599a94056c9097ce42ef02ebe5fd5cfb14cd5bb279f71416e095c8eefa41507364e14e030e28ce323386f18cdc9c6c08bea01d2d4181a8b952553e26432f3061408b79d093a28ae4fd2140f7f6396974a2413c49dad6c9a5d9a0d2ab27420caeb1f0c063af92e8763d7966edd8036fd95c2f00cf1e9819c27f999645c7fe494444791ed058812bb4f6c2da7887c85d0f58a98ce5087231bded7ed56fed2dfb46387f3ad72d3fcdc71ef39d86bfb0b7d6946d93f2b7be8bb48d2093c697a5bd4eaf7ba32ff3e7c98b1fb474463d7c59810299f7efb1630094c17c4b772465ec51d29c2d1dc371e49666f848acb558d3fdc19a69eab503865ce15f17c44c97cfd60489285415842777aeba4c50317c5b38e313a20ff641f1efa0479820ecb491565e0054452255d5c93fede50bf2c8f62885e6f5ce590250ffbfa1957b2f5b0f60e8a760a8f71189cb9efb349f01120c0dc47e1f06af72723953dd4bcfb4c3ced177df933c3c52119c3812bf998a5dcce653ad1ae15daace90af1f7f3f654a39ff3850a2320a9b3daacfe85f59cb6a9f0cc6df79ce6a26256578f268d2633b9411921d6e9b63a0e0f05605b8e9ea453fe4926ac22f88f521c5bbc20ba48d5d211d589733d148e91cda2bebdff10c8bfa184f4c2bf8339e01b3239b934de453f073d7247129e6af9bfd3533b7576672fbb65f998e8254f76be1fe1000dc5be4d1f45969fb00eff6a7054b3f1cb76f67ee9e41b044dab71e703eb1e3cbd4b949722c42017567e6d61d79e7ff2382260da3b3618756dc246c898e812b37079929b44fa26e89005e933b5cd4e428e7138f02e3378c2150fc091f919e97f8097665d9b116c17982c6fde74280a13b932215b2955e6ac388ff66c3a4c0052b5ec9944d6db8abc1c2197e55db5a7d24c3b2bcedcb13376a97590abce5ac1e04278b62b60054d24b5815ead30e36409f2745736091779d5f2faeb68bfa3c12f89915ce145b04d7e5f09cf7f4842390fcbdb971c692aa2338d66e50724514c332f0391c348dabc3879c5cfa1890cce53c9146f79654f64990ee8bdfe99df0c4e68b8f085d0e454ffdb6e0c3eb6ea6e510cad6aaae7f106822257ca3b30032be0b619cdc9483e01adf0ec425721f7dd3a5b7e772dff1843d858ab41e8702071271387d0501ebbd2364850f771c1bf8de3f6172ef5a9e206696d9a488f6b7688722f3175453d0753e1ef572d701f6014256a5a00c1467ff567e3051ea7cd9e122a40c29ea9dce0eff6b7ec139fa9d4ca22028c357960e199236a34949007f2ed83a07e95bb55822ae7b98cbaf9593713bbce6c77acc72abbbb7150e16332fea8a08d2213ca1547ed513b68d7e03eea70bd8f9970c84c686d53856076ce3cb4f209e2dcc06d519c23fec5190b769369a089a9cb6634b2a0283e847894d9bac5921c51cf4563c46968b405fdea742454a0d0871ecdc32183c92172467bd43de1b97a23b41b6ac3dd4f36da89e45fe8cc893d0d3d5f0ddbdad08a1044739b71b3968d744777cc46eb3f2d2cde1be31ea2af5384a965006089144baa257974ade9a4e8c665fe1e08b64cdb8eba1605dd71fd0d4f61d3a50bc8f55b78c619680b0ee6e5ba88e2f115f45db3eb5c758eb6ba526c0483dced277d4b35be220dc31de7b2decc98c3f1f3101265cc48510069c96971c8da81b04238dc2964e9cacd3c82783ee94a985c95442005cc51d5f7b0e09151e66676d568915712d676d9905d075f0278b60bad939bf258b4484eeecb79e4a485c412c3525dcd0deb6447abff7a169f3d85969e20f4c6d06ccb92c57be634cf38e7623320e1eaeb7182e7a36db3c9b6054ab49a1be0b33b63395d2a7862bc53e6099d182ae8de86a5c45ad3b4b13954e3fa6753ced6476190654e8207ade63e95938a7c43ffde682e11e622c76d326793a61b2fe2e1e457651276dae5674eafe8ee16848058171b623dcfd4f4522170eca0f19c3be5ca008f397a54c8b74b450d35a7625f8157cb0bff648452223670bc62335f55e26c17634abcc8fe5ad7658885d9572e554267a5ecccfc0962fa1fb42349d9185d6f4699ddc2c1ddf787413fabbe849f1c001b8027e3fa6f2de18dc798fad536c425b6673a7ca92969a86487fc197b194fef90acf6f43abc0edf5f7cec1e38ac9d0835dfc50a6bebc855ff32bf2b58202c2c93a50676c8fbcea1c3abe6f09a2dd5f715ca90e3ede920b1e79de5ae2ed82e2411cbbaea6519cb4d13a5497e7733067e613f00658efeaf23e7bfe2029e579bcd55b196f9554d81e60007ec91ed6146f823529bd33615981d33cc2b25fb948065d5f0c601f64ce0e1decbfddb64eb354d1c3a5ec44bdd8e3c6b22d5656120f21e41be52ce9f8f1778af183f81239823e098e9f76d2399eb04ec45c5a5d3299dc353cc989ad717594590f7504f2a819be9a101dc07e429746cae15051ee3a047f300a88a62954c9ed2462ec3eda10c8530bf6530997be16e3b955a234f295d893e5a6858f561d1ae053a1daeba89d75da8f6eb7383863a39432f2a29c028edf084ec115dd148430ac4bee7a31b33e5ab108cccd043edb0f2cc5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843aad6730b47a9af48e23f04baabceeeceb906d71820d5ca38d1898f889d1dc7c1d36d369baa2e6999ffd1727cc0f5ef9a3320a2f3c12095b21e06a92eff9a31abb2300a72e7e7eee6dc2f280503ed12b2bef0a8b7d7dbcf68766406f90a8c3717123ddf311d751cf180ee1329541b5c4ee1ad141fd6f3cecbb5904753e44d1b5fb51fedd1fdd952ab1795127abefa073fd81ace3bcfe2d28528cf26dc3af77ccc39d9876189fcca0bc4a72895cb19ce583d6c9ee52892d3087b05760e5900af7ccc3f5ef4d14fc03caaf3902d70f7906e71e7896cffd7bcbf0796afae5eabe4afe398b30db9de4cb5a396e339eea9013c4a9d8b5705239bd89ede8dfc99ecd3312192d57091b76d1a2a2495fcca73709402115d4d8d191e533652e54374a291156ac5149d9014918422458f841c55c0d6dc7ab031ad3fda63fdae8c39ffdfe3eca3b1b03dcb3f8ec9d4bdb99804a3bf25e2edd4fa212f1c69334aaf78311891194b51203e1c27982cb08b84972af5f8620382170d788c2ddf4c7bd5e65bceeb806651ddc343fd4e45db32abd7f0db6e88d0499e62fc65bddb593734445143d49c1e9decaa1b43e670fc1be9963e090a91dc463975b502ae05854c0f05a2b9f1b64f5f11ce70b532a63d3fa69cc648ea5dc08e89b9128907df0871c61444202d531cd6d01aee0f217b2a1f514857f0201315a4effc91652f08d9caf2f2153ed22a19af5d18a57d024a59f67a2cb040e664ab88783ac0c95a765f2ca4b76bc22c94bb232244839c688ef5a09b653a761e1d9620df112e6a84dd13adcc1fd0c90f7aa44ae741b234c8e7a12d02ed5fd3ce354dd95e9ac3a12fb613b2f88e47682cc393820f5513f9b80bf91ca1ec1a76467a77e16011778a817fbf13e4a03013c5459ffe0ca2d7197d68944970db941256fa361ba7243a2bc2b0422aceb4b4d1560e32a82f111a517d6c658c08d8e645aaf301ea254e4450fc56c2f7c62aecf6e04c2229f5669592102d8b2905fe1b4d8099cad6c35cee8bac09aa2e3fd6aafb610b10b5b3214be460c5513642670ebeb324ff8669be4b3a0689b2bc285ed89f6b92a90c10b82ce70d089457f9c704cec0e4c9c07ed385bc775c2ec352e631e30a949c21f83c89d869c0dfadf8ef9024e94bb742e0bd1a1784ae183bc575c345a496ff3a20a73dea6a725c02e5db681f6070e4ac70aafc5f508ce9afbb994c7be954c3b53e9dfaea5c8673820cd6c7d50771fa335f64507341f12615a1e2819f9094a87f7c32cd8d76433c01a6ea8f9e8804421bbd5ad162d900060383841a47a43a5f8d720221da33bbfa0f45ec90fd3aa42473455f0f6db29c5ebfb1eb157867710846e7cc4e903e270eaee341119c7d61c5ed5e9a604cd51847e3ee87e58f3e157c8fb7987a2dbe0d62286d45641d1bd5535551f8fa61e7ae3d6e4db883e93870b7614dc6b85af3b6fc40756aee1b7e5fd93bf21bf61a3facbda25a7a0ef8fcce16e10abb46fcd3e9e39ee2607a7068c4f94498bd8cbff318357354523a6f2225becc0e340dff918d0b0e105642b9b5287a0735c033bad409cc0e6a0d162b43e01616777d8fb8c6450e9ccc32d5a2ea4814fe57804c05dca825b3e94e32efce44588477e8a23fa615335b6a4e5dd1f361ac4674dde64e3501a9e470d1ea740f04c12504902411f768a83d37542fd2e50a3db93ad9792ef0c068ba721208ec52ab6c2e75ffc2bce3f867334df2bfb5f1d256ca62fbf9f86c1140228d86570ec90ad306e3cc9d6ff142665fba2d96b6774877524e9b6eaae9b98203b22323e17c25bb2b13f2f5d2dbf12cec8c775d26c7845946238f825d601fbdcde15a5b2ad24970f250aede8f3d4fd2238e05d68f66053d8f50ac7077ea32b879af0e496bb630bb4b343f24019339e0d87eab9528847fb84967f7a3c3cfd9fb53fee66cd4cc942ea3a1e8584f1f2e6742f412b141ee93737b33935cfe815d4f0cc2a5aaf8dfb09901aed3c602c6e9aadb4e9301c504cc3724efe133efa3d82defe8f3d00e9d29df00028762caea25537f65cbc6ad0c1672aa8459a998b1b89e5e2a12b2682ae64d2b18119e5bc6e450ac1a23de34db7ab548beba13209df67e59169da7b97f052f5dc3458f75a5e76775a74904df2dcc38972bdddfbf1d427b9b226dd95da56591d58def6dfaaec09a70c31b00d388e272281b58978b7ab39ee88166f2c28e4f198d7f0f0770d97cd897a66fde5cd65648c55a7f4157e350e970a5730a6bfa295aa64e1580b926f679e0494ef68a65d6965311235e5a94c4b971d5aaf65c3de6c85b07b58fff4a584f8a3204ae33b87b13006413c0f543f3ab630d711197e9f5935291248a24778015755878619e3fc691fb91418083aa2c97be30bd9c9482b838252839c05b1e20efd3dfb58f899449b6ab27aaf25a1df55e3832af3179a8989e2a381fc5087eb7a22881f87359e47e27d1f8b75c5de2f78bfb81fecb74b16e3695c155a94ead0c5da38338fc992feb3a10e4fdaba1f2b04f34e3bc5801544f92bba6fec76ec90836f7e53ee565351a42e205eb38a6ea261cdf9563a053cd1288c81fb70b22509a1ff45aa530412c602bfa08b1159e6123519ff70fd23ea233f096d5ae306650ea1d79203746b2b86891e46df2f0ab923d788c316425e5e0450a0d8272c146fd4357cfb4ad5e3b643d93cadb4e7baefbb09b5d6955e2cb35d294971851cdb4aa99f68e9d43bb1d80fb887ebac99966bab5c84c1c688edfe61706560a3c0f067b6fa9fa6a1d3db3d0dfd75a627ed0556ac764c5d50d15c2f795d3b9346f73536147925df4971529412bf3beb663892fbf2d2cf134159745c5b0853b85d017821fbe9c4afef555da6ca1eaa58413bbd0e56372564c893277bceaa9c1dc9db58d98817491c6a9b6e04ab3de957bd6a4fa0be626f064058ace6a444078a004ee77bee73d07ebee2c976c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c028ab67a3e04683b49f3ee8e542365962ac7a508dd5b4a510c1d1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e0ad82887269b7028f457b397d0e784c7cc006822148f54672387b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a242df4bd70cc745642ff7ef1de3683d59ae90265ce309245eebacaa04b9027c32\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d40e730d8653e6b964b4e2cc01a7e1d05f5f5795aeaf2f766b80320467148ba184e284bc49\"\n}\n],\n\"handshake_hash\": \"7da413e2c4cc19ac5da735da815670c74a730ad7d0fa0145ee5e8ff1c389dbf4\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442a98f632a64bde62e3e359d8ac9e1b6904283ea936d1a0cdc44e338f941807863dee4e8455e1921763b5e5ecc6c2a535af11837365edebfcd246afe94f5932c224421ce6cf32aab669b4cdadac7b40eeaffb444eec4456ff08579d2ff449ff72ef447c8aad074d9d639a771be8b0b08801e3a803418af4503e62f5732e227f050308acf9851007452fd1c79f43908ff271ae6592d98453fb36688aa3039234c0296bd3502870164a9057e344571117f8e4741e5aa289ce55acc5e9b40756b266f19b1ec3224d19d296cf44dfb96568dafb7564a740e934889174b98c79b5fde51f904b9c7bd554974f3b4a733b4d4996fa81aa02f08ebc9679519fa1b2016b807e27975ac69481d1005420e0998dfb6b60fc7f8ba06b159a88182648dce245e3a3b1b05e6fab0ae09997b91dc3665131531475618af4f2219ba1134b71562c7f58d753312cdf43d12276f609a8a39e0bc5f01c8fa4397636e7ed21670f0d8662fe3ec18b1a0d7d89256a82bd3b3c9ad04111f93b29027204afecc5aebc7ed7564cce9e0d48834cf719a1fd4f344938c7d983767fe675a1a4e11a090ebcf4285762e55291469c1a360be2bdf7f522417f558ecaa935d003e663aa8111450302171171c260a66e4e27bdc0f43c7c5dc9ab7aa7336739b15558a1cbad155389b66b7b022b2ad1e871854cbb850af0e25b91b5402c5084234c0f4a8297f8d6b1811fbc829b7497781861ca3f33f3085c660bedb093e9cd3f428fc73702b08c329400984d38dc90cb637db6b566c05e3f7ac241d948ab5131125df3bc29e2ad3132546d7f1ca52bd1bb0f7c7f21f97665c5322203ef6c7a958c4ba6b8e1520800a68f9b56e202462922ce77d5b2c62858f2fa7b23f7849de218b78c16a5fc39ad4263097a49dd7aa8c7a08b9d6da6f1350c7998ea53617623523fe3d40ed5f7a3b36f3987325b0858f1cb744af8526a6e74b86690862988fcf95eb3c8f88309f994f79e042b7e529da1bcdae1346051fbf08c8e7c1b331a17d5cccbd62239ba25f4819255610d6ba0201a7f2a7e43c4edb578a54293bece03c333a9b758fc4fb742783c7c96fd4c40469ac5e18a937d82e0a49b15f06205aa66d6c24a7dab2a82823891496b0929f7deeae99be08dfdcef0af3c9e344b720e9d35b4790767329bf5204591d458e9b270a72aaa4c0c67563dcf71558e0d453c7280ee7975a1b438103c9af8ceca927b6840096ff120d4bd95fef08c8fb41af6b87e4ba86e9475a14c2d224a78c81911f12a7247691470e7de4fcf8f3dcb5da2563ef0beb128b94c29e2e811aac9f3c4f181b3ea995166b1bcd7b5ad8936031b96fd2d6fb128257c75ad8d9b8466bc502e29425d9c9efa766f83d665ba9ff53e693c84817aa439ff60a8cb54cea552d9da47482da26c704444b3dc04ad9feca6618c1361ad4f8d2b268e06748d5b430484eaa789a88301e6e400941af25a328aa9c2ebcab8de49698a15264928fcafedfc95f1796f6b4d77aa55d05549123afbce9c19f98788ca2b9e2991e96096504fb00e6756ad0135a577c5e43def185f1dde86f419cea7592cff6bf6fbe3542eb8689815c75d09384036c1bca6599e39e9f5644d9408100323b71a43e73939f88fb5ff8b3b16da1e9d93da5b86cbaa0e6ef8d1ce2206b5e67d4c5498a85f444ab0c4efc13e7c423ef2db6e5337f6d8dd3699220a05f8cde929cd8292eca66cfa8cb319279ea8972ec4408de95439409803bda4bb8249ca598b7b0a2d737d5243d382afabc42006a080a8fc544950f2e716a6a95d11f02edb0f6fde39f4ede006e275ed048688f330e27e4f004d759fc32d9dd9650ad2618b58707837c18f1c0d322dc69698cc81ae3de60d4b3563dd1787ea0885bdbcf4d80d8bbbf330969815921f3f7fc9a9b807ae5f70277923458049aaa497b1dcdc5c77203040dcc3dde7528d9618c6db2a11dded0e21f4025c928a0567c458bd02bfb1b0e3659b5778bae8e7eb9a3b628d1adfa55db2f7b05f2540897bb22127fdaa560c501d68000f5904848b16fea8c1c06279a4a300b7c8d7f6956bedcf8a9ff0912804cc958913877d30449dd56b11ed6b9017f96fa88c49906c4bd39ad9551c0b33891529aa837f3fcd5d9775ae5f07a4379a6b7c3dd7bf3c531df613b8eeede0a151538e098bb3aa7c500afe3f706e58f3f705678ca2a2c4bb3f2698f151b43d4eb9c34873b856db4a012ec9d51304b19118650f3b710fe5ac02a38ccdfe19ce47377547dbf0d99ea36fc1bb12846889b7bad73cb0f463c642d0628010f4ea22b86dcebcbab9e16f0a37e45aa59bd9b774df5fbe3e4299bfcbdb9926cc02230f1ac57283f5d03d2d9d704e7bd6375ce75a4ed754436424ff53786dcc8bc855e844d2255c8dff9931d82272f9d960285e3380a4f1ae0b28ffdf63c9006ad0cd3426e5f7af6e53debad0b68217525406a5c7e8358fb08775b6dbaf1b61a3e72e41a7ded1a3eb134b006c1edfd5861a1fa00e2001758b9952a08327ce511a3be74f5aea057f4dcefc11735fa595fbf8826e2881f7c04f54f5f5eb9c9283d38ac7ff89f2fb907879ffeb36e60e54585d7a8bc74fca66faa51015ce6fd7a480737cd37e58a13569dbdfd6f5ad749a97b20beb0d8016344283eb47939d34943b930ea40332676d84ce548f1975a1486ccedd4e7a118ef347337e403f7ae4e0a471e421ba1f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430928c9525309b9592e5c05b52a90140802825406c64559ad6d95888fa0a627cd90507fb8baf8fdbfc751a5e3ffd3fdd87805daf6599c1cce340f31c43656f7b11b6327611af31ce76c92b4c1b920709692951f300593b345eb2ac93e91a92226537d91b137c3649ff2aaf81b34efbcf2a506df1d14cc1db1100bb7d4fde1fc518b06319302b528199aaab31e8e9189762554e94d33fc8520409d8d0dd8e7f5196add17276be5499cc72e939c23c36bffa5abdb90fc9d059932baeeaa2a70576f100e98b3aa4395c2fdc089a78c7a60aa1a95e6bc24c9ae55eec0872f05a00fc56ff22502050d3c284d249a309626130d88f3949ceeca379ccb6f1ca189d0a3a0fc958f2e84f09c32af9044d47fcfedc17bce0d6d5d7f02a2fe886d19534a8a01d84c04b60f4f11be9987a1dd7bd22cf50edbd2e00e8b7f2787afcc8c4962a139b0d959ce1fdf2c244ac2cd0671c8a6fbb09f399a7be94971244a25f8dbee7e72dc8fe0db9b0b67355de4843e0bb2deede59cbf14f3fad2d930337b74aa508b6318fbeae13025415bdf307d30328be3a40e4045689c413ad8ff16a719cc348c29f9bfbd4916b1c08cca9fccf47097010cc140bb36c4ad225122def07d383c230eb2b5439ea128f137bbd4f00779d5dcf3b526b4feabf97e9b23fc069623b99d8e6f1b08550582711a69a0c7e0a18867b1f7c02f43925cc9ccd596f5ddda0e1063f9eabfe1bc4d1cb126b7336f8c26e749a46808ed41f7e72d1c79435ca72e1198dda3c3f3acdc2706231b6eb4b17ea40ae69d3f4ce2f272c8387bf3896d1d2bd4182eacc39110318af65ef59a577a6f4458a60b6c37bd9245bb45096a41862dbf948bc10437e22bc71b5d78253770363716193af15ad52f70223eca000a3680bb1c2fe0455684e19592147a21580e88d3efe01fa68f12b3a6e8f143ba5f477dd0a793537b9572bbd74262dd3210bc56b0cb4b31fe1d71d04d67e4628e19d961395e7beb73332edd6531c46a27e978d13c09bc50fb0e318d56420395c91f5c0ee755366f9a0beb3b2ab93bc5f38278166ba9bdeb17e2af1178560a65da4ff9ccefca3bf09bab806ac72beeb13d3c319940dc8c7a04ae37a71041f6fd997261cd711623227a8d545639552743cd9bc7637887c47ca91736241baaeff0b56a0a755d6043ad95d3bdba1ae9adbd6e08649c45d094cad7c411c1d0718de630a0de0b36bb3e87ca59a8b3c667244192954f4aa8b255c2f81577fe05fc7c6ea3ff3dd2862d61f7a246f57bef06e538718eec65b1f7ba00ea0c3bfd9e8d44d64685f63dcbe33e17f6363ccc373360e26723d63a18eaecd6b02c10bdd9e38b40c752153d851d078ae44cf4558b860ae460a26b47a02be95c0f3689df3f3d5d24bd028ac27d87c7bb95e56b6ee9a97316fb61e237b750604f6dc390f33daec3be2fbdfa860830ed38a386fa4c13fcd931925ee331839de69dc54a100d649ed80f996af0d2b89b559e30fd101fc605c371d4ace7474d7b6cf98c8f536920a53e6fb3643440f6fe51a46885218e12a0ee4be92ef78cfb2ceb4c6ac05b54c7d05c0224924698995c8f09b519f8d0135e32ce78a04caca9692c2006380187640a6e1d650d8d936235b4769484e1ac275079f97166c59a9797b8fb2d0381246654e56dbc579ac3e5f4f6dc9d6ef539ad5e2b46cffc7bb43829c426bf36065371d85ec52fc34ebb997f36f415a17222756343e4f8d070befcdf4cc312e8dd25423a1cf7de4a6de92047ccf4a3ec72b841df6aca3cdff8a240382f3e9c385958841c0ca357f408d6ae4ec1d0c7e2eb5c5d953e9c713c4d933050c28f155eb8ac093fe8aefe09035e14ddc7a009990081ada7af60758e94c0a2c045cb06d5f08315e389ae04bcd5f001acb77148eacee6df15cbde9ed3378f193d25b0288f1e3e3fd32a43122d4107e747fecc9059c36e280076085b52e293d7966db21af41d6fdb4c891e544e95a1f830ec4016766f8620d42894a0eb0520b01796bed887ae7c83615df33d58da95b053a35fc311e08916f0fb44887c637a2055b82114c62abf00b22ba8365c1fd2a7f1997877e9128ede823e6be0aea2f77842659bbf813ba8f28d808d4fc62a3dd04c6c71543b9d09bfae73829ebdfa95c1f770fda5707c50f88123fb26ffa6d5a23341e188e647567efbba568835e08e8894e691eb2a20afe95e09a527b12b006bbf82a3f6661d449e6ca408972a3ccae12b5dd76830ec07023a346f68e26571c63f2e500867b4ee7104dbfbb0f9ad692b4c324dd1b61a03edfbf765df2eabd75373aed45c1477b7b2cc019222b0307c20beaf82f4754719709c41d16776db170a69db6c216fbf58b11ddcdbd783c1c1efcc9b9530c99a09864a3da2267e5698e4aeeb17a9ec8ce2636f063750fd0a7b71ec8f4e45ae0ea3f2d051f4b62e37feebe984264fafbaaaf42819e121ef79e1463d77eb87580d0cc5ce82067c60a7ae2596e0797bafbee1a15d106f7294a24c26a96bbbe368eeeaf235e5271677b10cf27898964d3380b293f7f9742be57c0d7b2672f494e01ed4a5e2d21ad5cd564fbc360802f5af25efd10772a9c4ed1de6fcebbe309a47755d9f3c468bff535ea6605ff8c89b1727e2e084768853459eb880155f1bc30d560fbeb313094cd5c2fbcf9b3e3f368ed6a8efa68527c1cab621ff9da254840885867f4ef78773e4d5c0e2b36a521cfe6b8dcf534f9947ab866264535aaed2108e25bbbd32b21a531d0a3c0afabe869532036697215cd769216aea0528ad7a52a3d589baf1187729ea7e4d3157a420abc068b5830173277045d5455d148342105e9f1b33c21cc5c16cbd60c2107896c55a7d8e110b6ae8c85296a74ab635c51358a3954768f501a3fe36e07981c96d00d9dc61221c0fcd7cb2cb36e29f5fb16c9f215d3b495c5997e5c793c4780a7b533fccae0b4a5ed2a2ce9e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"16cc2e34dfb16403dfbaacef309c8b5cfa913d69da7c15bb9e80a8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b726d274217ec7c1a5e83a45f5e59962b3dd019a45cee3bab8f1fb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e5ef333fe9c9e8945179ee1f44a396840328c94eb9c05e09a1f13813a67a8e4aca\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e3e3548ebf9fd655a38629baeeda5f8a5a55735548da65f2e3ffc3ac27d44b7bcfe92b804c\"\n}\n],\n\"handshake_hash\": \"9035d87596a5ea4db919fbf823dac682220b8b27b754f6559a25fc6fb3952e208473f83bc679e66aac8cb9ba97bd72da40ee72df779207a1b467e12cee6cecfd\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944252457b26af40e82bdc390336513c0ec3b49636a38e089ff89f5289f69ef0e437998de85822bd62240528cef5191839c31500028227c2fae73dc25250eccb6a46d578c8286b6036048424c3faae09de2b9febfe7cf7a4b9865f28e749ac7291103e99dcefaf226a7f7fa251b9fd2d999cef381f6b0f7280297c981669b1908c79a0d9f6d5c48eccc4e098ef45e48dc33367cfab43c7bf4eb53f1cea49a54c5c3d3e75b01b35b2605a99e2b71cbbbed982f7a44aabc254fd25a142be7f1d3ef15a7f609d8f51d57bfc30c2bb43ecdd9fe2660ef23f59844d6c76c12ce045901a1393cff28ef9a058c9c5455d9bbe84906c095f59fcdf6ec60bad7a5654c557b99e32570cb7bb9fd271271237fe3f8d04ab040c009cab01f40180781059e5b329a31934592af157f65eaf56e1d1b23cc8f2a4ff82bd6b3a0c199444f2566482b0ef917cd49eeb8280cefe2811fb5f5fc30ee875a17ff3c165d5cb29e66d0c351e7d1eef09c80b0c1ef749b0fb037488cabd0f5d6c08c5c453e5ac26eb39ad94487e8dd5cf89066d5f4af8d61940344abcf9feaf7e2a435cbcb47be3712583866934ccd57a59ecd126b7dc8d0b29932d90cd7c33fcf583175e55c7ce01992625c02d44abc5ad22cee4c8c60a6357841d80e1de0d0ea7df389198c16dacf667b59a0c16bfb065d027f9e49ab6d9891a0fc129ec3b1ae80d294aac70308a7f495ae4674fa33d555605c0dcef7549e97da88cf1f8fea7f43d698e4c944a8c646ae18167d2e84f0bb4222aaca084af0db12edeccb51be041edc79b16e25dcc0af3e1a05525f6c876c95937786c1f3c588f2e3ceb46d57ebf1d06237502ba876dfe9d65bf17a77fdd54ad065590474af77e6204a8e9f2dffb74cecba7c048b637a3bc3e3039e28ae7b9580c2bbf21d4e50e93f5859e720dfb9e2eefad0883b679e16bd20308598f6c93c1b4f2e1e519c66ed5070b49545fef623dc16252b200c394713fdf29de72c200ded98223054c3e7ae73a73c241d6b414a08025f8ff664cbdc16e4ef0ced5b5f79ade02a5add1ab159bea98fb6bbc1cf156618b7945ac79995061b82ee92046930e0e5b61560e8fc4ea2eee6c419f27a55712eebb3eb326d32453e0c3220132a528fa5ffbafd04f1ba4ad2b8dd8a1487417095f8581860c248f1162bd26a62e0a0ca4423c09b7480173451f719c58d59ada62753bfb679a4e566129cf364a70a0b2c7c1f5c35dd6d82df5c79152fb24c700ca2e77dba22650aa9fda2d78cf5906f256d5b8a08454f90ea89f4d3eda7f44e20d86a0997b1bcaf68508d4594fa842cfbc190e552689c2fc5583ff99fea103df1b99722e8ef35dcd9a866cd54907866c51be94725537d71432f6e6fd1c029a81d9ae3b4c7d05328860b05e392d7dd78ff73ade7bb91087d5926f0ede01daa0a9bb4cc2e6770dcbfa2e3631fabe74fe95a0909c74d2412d7a23f9c040d59885ca763189debb6474d5a0fea55dd81cb69c201a767b9594df722dc21dc8bea51da46b822df439845463c93b4965823b40ffed3ea8c6a2f3fbeb3d767ad4b57aba97d2ca95c131ad91b41922f24d5e121bc57d1de91bf43f0edb97f95ce5c0feb867bf013e1b4c1db009cc1e6c8eecfd7b488a68ff35eefca16b1c16cb88a15285ce7ff793794c8ee812a8eea7ceda183e389c7805dfeae7e94e8c05e4099716ba03efd90268e0842902fa7c33c2c11ebffa9367c51a538383beb80c34d3ba1ec4ced6a107a739b3a7259ec1ad02d821f2cecfa08187ca8f8ff74318f7e373af13a62f5a4301674eca512b76352c1b098214cc9829eb9923e5d4eb776b7d628c8b46b050768a746cd8c8648a9ced76104942f07c628d0b9adb783c0a7beac64995832795423591bf40726343bc2e73ba669ebe846ef0dbfa2b006f8542893e74835a4a5af23827c504fc289329f9cd73398f183082af18ccf0a21af56dc3bcfdd76a93bb60e153909777d9285b65935a7efc0950b0088cc1961fbc4531f9d31cbb5b092dec0ce6b61943cc2bd48d47948f6660972812365e5e16ee13bbe33cc3e88a3a3129127bfdfa2b04a189e5e99e93180375d1fb86ce8d3526d8e6fee75be5ee20f795a74df9c664046aa9eb48a5b8af0f455210d047c2f99d390c6f2cf8719f025349b747797420e810cc2ec8d6340095affdc5a9d079054d9b81401df976cc0acda877626fd4a3b111fc32fed61e8c583d0d4d89d54252ae4b554cb8bad0f843da773307cf4a2a7f70441607c857637b01f4e458ec177584b6e7c980ad777c40415d9e8aa88bf241f7b8919b7e68a269af1574bb2c184a99fcb9fbb252236c0566ec05c64d169a9548ee38abf765ad31058f9461fc9c59aa0121736e1a08045e92ae2e02aa142786b5015d2e69947db8831f7ced1d7b4746715df78c36ba36426121a97f5a6e8f8e3caee606c15ef1a1a1f4318d8edd3c822b675e4391800ecdb2f45c1c6749977638cd454ecec0c6a283f6740c0ae003df9addb9cb63899eb40780035dda0afad56b7939b6f3ad404145d8ade6ab5cc9842b26f1a9be6f2c73ab7538d24f008d59ed22b5f9d3aeae06f6803c489d70a435123d0bcf5c39683f0855f976ad5b3c0139c05e6780755cee0b9c5d1aa9cf611ef2bfc86767870311e9ba67606f6107de9da8a8374c3752fee8041577abc84f932870c00af2cccf8b5ab83cf42f7aa4d35\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d83a28c6966cc539824ffd42991adc73133e5ca21a5e0210a709a67f0ef5b2b026ee1a0d11f4c13c75959a4eb91f8aa9a9daeb2926ff431ecb0dc8b6cf593e1ce10d9ea5e01548db8ed378d73cc7fcff65284e7ed782d612b712ec587ee212ea74d56b27284823bb3603f8338b755a74ad48a20d7842607567e527c2d9008f70472207359be94dc560053a1b1c101909cfbc585954686ec7e1ab8533df9d640276c7e572ada13e2b9ed76a52d0b46d055d734a3412a85494a7e6e4288b8b4339aeaf1792d860f97614f7bc4786d50e569194b69ce2d5fa3233b578dbac274d501dbefef45e23a569bacb68d8e22ccc464234865efba1064047f0d72f74c5983c06ed034f5d2ca59843c0ce05f6b21a9ea2c969799dec2c57237f69cf38033388e047a9597b661d3571a96a1059e30ba7d62ec588d7c4a574c366ff1859608e014c549ac29a46026d97730414aa5e4948bc320470b1966ba90879fec8af2935de0738643116f76e3a755446de56419106052e88094219e0358e9609311daf8c42e19b3347369343d95b8e83cf8b46554d3aa35d43b184e034bc6cf59490028c85397188b6b255eb2082b34e49698dbcaf7145931acdd24069fd7c5afe8f862d49e6d56badaad8e12d55d45ee425532407f02e2ae981cd3454af051c64c857b306eda48e6f57838a90ce46bf5a1f290c505beb7a3c02044d6140bdd2957bfb93a0ec419431d9b62a16a6488b86e037f06905b5d76531556fdccf7800dcf5daf622ae94921ac7b32680316e867f0dd6f9bd3cc0de89066f48d94ee910bb90e45e55237c9ed3c74f297bf8cdfa3f74c9b19e426f7a962ed67fc6f14127247dc37a8fe211fd3d8d6b98e2ded2a94017d758983a45a1e345bf2477f3a98ccf73330ad2394befa36e2f84e4a39b869a10af4254dad2dc086f1f3a1eef5e61a8003f62ec2c336fdd7a17cc1bf55b2fd55cb1f49f307e1bc3a0c297ebfcd4f7d97bd2ff3f5e9c4a48152ba96372c6b1104fb0500e3808590a5c269031bc5f643cf92014d592d1da75fa44576a315012945e3de6b74a08f189f6e66e43ac867d6a2f8c777df593e85c1505131e88a3cd6f022b5b5b00623a0dbf57e742f104133cbc15c0537626436e2a85fbe08369519373e96bed129aa8e020ad77801db2746c52ea6ae900c84721bf7fdaee57eff23d7de2c4ac40a2c2570e88db3955815273539927e3cc4728980a0aa0d12e67e0c7b1819a1976c22d26f860adfb193596a937c8cd9c09ee161c990747ce17469c091fa7200d1e55a915e02b66d5725e3ce2c36b2d08a7e6531a0f004efbc86f03c92468595c6f050b135e414fd676b8073dc9bb246fda4c354ed796987b61ced6e0221d109578374b49109aaf36d7f25818cd8fa2128ef758ca66cf705c7606dbf05a6e85bd179bafda878a622532c668b0fe66ba595382d9888dcb1242ed79532b92da277c13a207a5f1881ae44130c425911b000963c020e62756b7359c8740948b129484a6f54d379842109880349558b79c7d2c6c8be2f94b6534f0410150d53a45acbc5617479384262a60bb72cb0c61c4dfdb6bade842b3454e38e1a68131cceb756dadb71b91a255b6d7b687774eeb03e065e4511e7947a5a8daa1ffa20896a97b8360456f9131091ee305c02cc79f2d4a9abf5717b92e9221f98ad6634ee03b7e01e0d7a6588612248d907e1e18f237f21cfc7b49a58369e856ff27a81e5f2a171453d4e45aa344f9f42f8b83fbef72bd60fa9d7df02fd27a0abc144696326b20d44cf63970e6fa457460efec92ab8efd44cec702195c90e0e1a8910509c78a902f06361f66ce78f395342029b8afc056f6657b800df55d3729a4d209936e51f81612c8d4adb77fc96ddbc90cf43ef378868c8cfbfc81d486d52da5230e580d784360b58fbc0b894e7319cda07a6d4de19e4c0178b48534f5d41a6e2e878a5d7012e311f20431c93e679363137f6fea54d5e7d467022aaed15704d5f42085a047eb1f0c4be31af5bea1703218d8fca52f561ece77b261776877c2e9261359f9e5293f35b2040e98b22e4774cd8c5e637c6bd6b787f1108749396368ccc4fb87f8a4927bb36fa860c4763a6b1ad159273d2d69e751b8ca168032706ce71c917af3c9465b7e095735a909f3d2f6c7864e06737b520e23757b46c77e2d4e60655741000b8664e00393ed95e3b51905788dd5f3db7b6251d95dd04c90158c80a21371e97c036ab09d992f1277b4da77c09ae83a59f6293c4c381c546529f463aa16e7f547421a0a2a6d30c7f10f6441710f5e700d1bc33ff5b8f7c5d409db0e7d617fcb3de6c7f271fad6314c37dbbf3494bfba1ab2d1cf7ab3fe9b484ae12eb321e754261511edcdda7dba16416c27a6dee9bf836f8da8bf21cd7f8c3a8fb36c65f767cbf79f85e9cd0b2ac08afd6f81ef34b668b806b315fe897ac3bae308e6988767bb8647b0a851a38cd7d8a6850e0a954bff0a3169edd2d14ae03404089172a3c74a3f1892917cc3bbfa7e7b3f73ab507c000726ebad28e4fe0eccef8a081bce4a3cc882888b8020342c028fa067403922e52743b374c5f383cc51b3c4b38dab675318ffa70cd8bd7aaccf14c13e85e8ff3ddc59500570f6b83edc6199e16f4244db95755347383a3958952ea4339a9bbdb8dc70f37f83cd497f6c0bb3898e6479bc68faa2ff5d5990c0a840ff5c60867f17eb66c90dc5b03b3a066d56853533bdc324adb3f3dcbd21644cb0932c20085f7cf1591aa2f44b416b6e0a1b2b943ea0d22e7acf78ddbd06e3d03352d79735c466ba4662c517529741d4dfc0204ed425551e7ea2ebac0c651745080f7072564d73fec59f7b9a25e3ec91ae7394878a6e3aa56fac2c21a986cbbd8a9e21d7871b12867f02863d6774574c12dba00e27d5dfc83fb6e15a6049d7cf70379ec489a722704d34488dab70f476668842e2ea\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"dc110bf3c951ea89175c245e1620286916bb40f4b16d57682602e3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"288d9759d4743d2d590764e8a828350bc921c302eb91a4fafd64ec\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a82216a22cb36f02e08cb26067e3bcd03d4e30260cc814529addd84d7f7d07d87\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2d39a7abe2699ab718e9d7f513bfaaf94aa958d247f1e7a44ed67b128c93c2984845b5a146\"\n}\n],\n\"handshake_hash\": \"9c8458098e922117b61a35b9430b12b9b0b25aec5bda7cc622f3587f4dd7c64a\"\n},\n{\n\"name\": \"NoisePSK_INhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"INhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d47c619bcbe848e6d20753e9749c8e68c14f4f633853c579b5c7abe476bfeba28c618429ded931f24889a5a250fd4d266d492340d15cc30c91f87bc9a9c3572d98e1d7dcc235cb638be9a973a20be9eefa94b71777a6fbbaf026d471a7007b1f2d441fa56e395862f187f8998460842adf9441c72e61ae7076fb436025a568079df042f2528b89c4635ce844cd273d2e80789a128cac6478aa92550a0615570563782d9b3b9aa3f7c93efa3e0cce1dc6e78d7716bc87c94e0c486e7dd98a4bdbc6869feecb265bbacdeda3d2c1a65fbbbb652b75bd8f8831cf41bdf4b7e54898e2dcd934e68a2d31f7a785fd1a8676441a4c7e14567e8cedeace0e3cd3d2fbe176ebe80d9b0d8a117ed1fd56ba34697f21df5cbd50d867f9ebeecaab562ef36036ace19c5f04133a687ffae8a40e6d7b4ad83781e0a109456a958060f24e8de8eb35dda6d6eb36e2dbfab6454bbb868581852f5d131fc0693a2ccce5f3f1987564ccc4e217c82be77b08707bc10dc9a9bf00e8441635651a26ea3c621026bb06cfeedc4be6dfc1d44a74a9ef11d2cd950960fd121e1890c5423e725e7f276b551dc97a703c15b61b6a227d3b0d1ec588ebc732cad00bc57f9419c431f7e7e42a60781de494c89a6519337a129f42a9f13db9b9ed2677b91e58e5224f3fe47a718cc3dcc94c853cf30a76f0fd3648862c310904033550fc4857c22f03ec6616bae4a294cef7151ceef73250b966edeabe0d4833af932155087bc8c04a6d20a60ec954d4e520ebf883eb21de61f78d74e1ea13c49ba6db26b270cf6e005f4087d9115ac03839ff9d6ce80c3364cef32aad2bec86a0fe42e122c3d7378c75d0963641ba413d0f06d2d9d8ce3afeebe82b69c0107cb37b1e8a6404d5e5f42b8b68b670a380ccca4774c25d554644e472b9422d9192a7fab3b9240e785a72c36cedb97c8c9d46253d3c396be1a5d6491fdd23f82a2edf3db2d62e6619a9b685f1fe5248033eb6a5936a84b3c4ede47e66a4e9a797fc813a4a27ad90b29e86fc6b3073bcc47d751ff0e63a3f483eb4f69d3b15cf182724eb529468ec7f5f67ad67cbbe09845611834cede3f6fda9d5600acc436abae98cc5e71dcfec4bdeeae52d116dfaf8d36b5504b6c5da4e7a70f840321651d5e13911a536264ebdb4193b3e7b5cb644a8754ebdcb8f985fcbaae633bce40606d596324d6849da07a9d85ca33c01c2e9fb84c3cb09a0e2e83e7230847d6d880ac699ead6f84fbc431a9707ae80df0038f5323f3cb2d1eb782adbe2467fa015be05b9f58e15b63770088ed11d6ec52a8aaa39edba30c586383a5a86b2931f519e2d15770255911e233a7c3bcc16fcd81e25bfdd9c8b79ab852e88ada0256f352bcd7947b5d3f97db4c963230941baafb25a316351e00dd4f7ad2a7a1842f1adba9b5ccd28be8819ec6acb3fea15185e01d49456f51d9bed2e7340a44d91f69947638bb3ad2e429584c6397e3c03321c7a9440059fa17dd1d30c5f3959b984fc6b745d18bf4a8f85d81a41882d7a69c507f743ac04a09fc811c19ae92fe2fa924de310d1cebc91dd844a75c8a9a04a889e6e3b411676a77ad6ef22d2768508113dd25e5df53e6cfa2fe7f82840eecb946b7bb684cb30ea90e4421668068c7bbdefe3bf5727287dce099e1787724c5762d4d6d190859a0f7d66f75becb393a2d2e81994e5002fac6e8726ea98836dcf39e46ad93075db6082e556f1aadb78d0675cad6c9c8c32ce92d5faca97001e70f1bb608491f10bee2cb6c5e41f2d18c61a6604b5fa5ed07ad73802711378aad756880bc390b5817a034f46c77bb57a3f8186b358bae3861227970cd583de91154f4ede28d383398d6236f2f7f205c2cbae41320560e31a4f01da73b563748e45418252e5f1997fdcef6908a6b09b4ffb424b196f50556e325f1221ad58ebcd275e2700843e66c973399c8ff6a1fb561546dfc77d3df1156f8b64bfc46a19183c576996c0f3407c95dfda855ffb857dfabfc7c51ef176222b8b19afd031cec9e7d24e5e1b5b29933343e7affab41f3b6840609d73828176e1af954686d0f7e054e2b677443dfad18eae06586874755862df0b5f31ce4be839c4908dbf3b34db6041dcf6575c88cd12b74bb62414beca6d61da8f9d08fd85ae4d1c17a2cb65bab683559c1b0758046c55327516c656f2ca8973c580c4360a086aa7efe13d8d4c7a3fd45de779451fb6c42dd7160251773003d62c0d6d2631de2e171e5490c5416c5aa3115ccded1e1c156653d1991844f12c152c081130fd2d807a1284e9d743fa29530158510c158aafe05f990cbe5e445e124e26c0e66023b80a04e187113ace7e1991cf06d37a1addeafbe7b60f42cae53f0e55700a2986c7b5e0d50b244d58685f6c2a7be037ab16b67bd3a994e566b266d28a4aa6d0ff09aa77f83d7ada7f997d16ec0a0479143dbd1b1e5c7b7af017ab895399eab87467f256eef38836392724158edf0e473015b370dec01502acc3e23f0d75064d022c68b1bf546a7e8672f8560fee809b2defb87780e3f2c4772432a491bc748fa63b3272b754a62d6b75ff40058daea88200370f630c14165a633243693132f0acb325235e524864b28031c11257195ca93ab23046f9489e84ba8bf56a990eeb6d3330bce90e112825fd838da849b3c281d1a93e0d276639a155297f4dbdd0a541c91504c7b219d813\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884372772473927416814aad471440857c3bf27a0828039939e9f6b6c862bd26e0c31b79cd2e00fbe45d10af95295a56b53b4743d3c72b422d516cc741313aa4b816ad9254d64d34d4c6153c0dab46e27b0b8a1903b5f2345d2726ecbc483eea3efca1cade19b3f7ec48cce6185c3787b2a8d24ee95ba0608b40b0d2244a0a1d3c3bdfa970dbf4f7eaffed3fe98a321a83c570f9db4c99c5a314b3a750055f925839e2493e0957c2f945ac56d2a19d04945bf412f6ea6e2fd39b5cba4daca3f87563aadba39f00b40274b0e0a7f040c9fcb60ca1bc66adf8bd8f25591afabf02f4d2692ad05c88283164bb5289c22b939ce92bfe88463ac56e26149a53d4494d1079742f2a4c90175acfdd14a7145ed21ce42169bbced109f52d0e80a7041a21de3c52ebfada24746084b5967fd5fc9f48b423fd0142b0b00211112c6ccd5b2291fe56bf9b00015cef2628e8c00d7f963670014b85bcd59492804d33bf27b0b76fbbff56922f745096875de34b49ad1b2d70c9d47972e6fc2545fb731f0e16a11dbcd7db3f7e014ceb7297ec0a87fc6a877eeb2b05fbd7778b13f9960190b9262230e1ad7d120689c712d255de0327d15aa651091cca2ab6d2a6ebda3e0cd100877b675d754075a8ac73639d0e19368d4cc904c9a217b10242f6f0da74af9b81467b5d46cb1ef8591109472c0f13d32f28080464268396b8acfdb8255ed62a3b0def2a5c3d3fba0ccf30385da4b146c674420932938ece18757be4814bcdbe4930ffab9c74f8df3c5d724a14e308463be3897f9db31ac47c78e16b6321be47e16506373df842e6fd9bcad6eb0b7bcf2fecbb8a35710391a839b8f9aa9cf44e4d5f25d41926d85175b31c3e2cd82b9120c89616fb0b83712dc9bd8ede3ef7fbeec6c930fd844146a4b85f67e39194d83e0c5ee5338334f358c936403957185696bfcd445baff12855640ecc0688ec51c3b578b8d74fb4e25d376157e5413d039b9d96f6b9fa1e4f622ab1ef715160812abfb514c0b021e7af0585fada01de9ffbf73991b5065f8a7ad7ab9ddb92e3f7ee1a9afb8dcf270ee6ad3a76a4bf06176fb8c9c3e5bd23848e7fe1a3eb9c97023420fa9a64a8f8f55a1da07dc2ab5256fa9df874535382a583cd8af8f2c1da8ec7b741bfd9072f3daef41e652227005d4b0f2b520f13e4b750fcdf83d63d841b44ac78c834a8e6abfd4e4bed55611c8e4d8ffc936c2292454498abbed761ca1a68a39d8c529e6569fc0e77e3d104df5eb1b5588c6aefee2c9ec5eb7dfda9fa5f677f56c83d0d4330734cdc8be493a3d95f2e6221a83b6d0949872e4bf7b0a168d47dea63dc46a2bef6f139a6d88a93274e5bbd1d557b5d773245c16a52ec33fca4df92672f79ee49624825bd22b60af5efe416800c488f1a42c7a47ca5d628636592f0e729808ba9f6719962c1cdbd38571f42c9b370ea9bc137ce09df3e437d17c479e02bf2a230563daae8ed4aa0697e2ccc322fdf340ea130530366930298edd2ebee775b133266b6fbe95ad7c45461a9b2d4324a81e7b619e6d1c69b59cb12b55a702f1a66af95d5fb3a1bee4ae218d7593d959f43f5f19af1baebd0ffe2992befe3a5412c62bf1f80aee40399fd7bf619770d28a423ab934b107b8b4701a3d00d1f27f3e91853766762918af20ea2894e29cb207810a2a8599963ac50e3f8089301b8c02e596eb999beb9e04dc874bdb9189020ce16982ced90130acd802a87a034e2c18ddba5a2ac7a1daa80fc83603fd7df4113a1a3576fea687923467e4d57b1a02bb9ebbc2bb4609b67e4a4d456031e66358311e45f44e905927b4972bdb8b6405a37d44c5a254a7d213301f2d31cf7cdc36fcf59ba93d721ec55071f35dcf926ba7969383b70ab7c8cb3bb1a00b428fbccab949ba67e91b00bb236dd2572fedfdb71a2ed7f1873b18c2a02e3828c90805c24aa1da87133248307961ee5d37f6dca0b391cd30adfdebf79f0e32f48a6a57c61328069f80ca799895120f8a1542adc6a9071e16755a5b89138f310596da9b82e7632484b0356282912b1412bee8d42e6d08dbdf79a041d048dbe88b95a1076ac1de7e8dbc5086e3b660662d754fcd19d8025a2ea8b2264553dee4b185ba2a5afb9162519964aadb4837e60a2923087c91609740bf2df3fd6e7e47f3da9fff450ea9f6d6f6a9b79c97c9359c34563388a5c7be25fd827b0678b0be7856fe00514cf24eaba143f3b21eaaf0f921e7821d16dc2d992a706471be60a3ea17a69bb2ae29a999ea73782e39efecb8912776da65ff42bb0593a94227ac0a543bbdff689b2f9e6ad5d30b2f74304010ed47932878859e2b8b02d140a12ce46c6fb91f0a45ffd09eca1c41014292a40c3fa40c219e256b27ae183f93ad880b7af26c83b905dd7f1ab1ed8a71dbe2bcdeffef371d0e5faa2d5d234b718a48c80a00a534139a975de7f37034156c1f3096fe58580d41573c6619a68cd68798936a4d443a60e3d5685b3f4e82dbc10f23f8b40cb71a3549641df40280da73f36b75bba56a36f650e3077bc4f4439481341f89a1917c5ca1cebe019557bdf0e1548d26845bada400949fc28c8e5d167a1b41f8d1e6dcf659a3d8f7029b908f1983d6d50bf7d5751389ea6bf78d054c4b17e5ab0005939691db0dcba7c8672608ae58e8660e2a55bc4133312bf8ea63a43e75344e307bb2bf214fc0a387d564781c0588a2d6b4918e3e5442a3a164861d61d9203c22f3760ca007075c4b77567a0e893a4d6540e37df3e8e95cf3db3e4bfbd056938bbd24d63618d0d0a956b7191ae2c93feaf8e60d438febe4e760dc6a287a07761778d5fad8a920b5f7d369cfae31e37132b0465a39c08088ba71a9412f6159d8dda642a8ef35098376bcbe066cf7e68c86f02b8a62b992a1c6f9645690288ccd3ea2386bc7730ca32c5581488c069db4019b69ada14a175e653d53c9285\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c9cc31c149da3b83229245c01199257462d5a68a7e35a5e3e00112\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6de2f72f601e65af3f16b3cdca967694b0467a6828a19294a29122\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a0017fa34c42950df79f8e4668a20636efda66a2ebc334dc196edc9a3db0ee382c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eee62484a89ce211c5ad093f10869eb376393bfea14e8beb5152bf44213be3f6becf224e04\"\n}\n],\n\"handshake_hash\": \"97fe43cc35dc9e1399b0e4b17560d925839205a938e2f87635333c9f3d1fa6715b26868c14b9f3e0fca76064019ce611813808b47d8efedf3807e19aebd71407\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a3c76eb4560ce41341b1b01e0d553a8854893662d25fee01ff09abc8b0bc88d8ab4ccf6eaf4a9d97082b50be53e59d8d9ca3fc7677c55f33d677c4e40f04e112b342bfe314ba18989acf13768735b6ad5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088439856b5eb0f292f6313c61800527ff84eedcc011f4d5aebce1ff061991114ef2413cf3aeca5946fbc90487eae56c89c23684ecc85fd51768aad6b41246dfcc745ccee47fead04899af2ccd481c489407f6177884784e86bb70ea487f6b63453ea6dffca0ab28d1f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8a438c6696b04c3ca774f80a58cf8ae43e69a1ffa04630c16af0e8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3100e256325bf5bd1e76d91917889a1005f5b5cca51e52483c0c15\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c684872b5f67cefaddc56752901852f4a18c77de7b9b2e5c22b1a42318e438d796\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"51bccc3ff84c573a9a2244442ae1f76d5303fdd17619f27e00f32a7b26e0c009e991888dc6\"\n}\n],\n\"handshake_hash\": \"c57cca5696d6529e4d6cd346ce211824b8e3fe9a3f134f1b323a54c7fc8d25e3\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a9d3e9721471721c8ea3868b9fa178b47ca24af5e5842b326f9beccede7afa8e3ab060703c4d1f7b92ce86b4d0cc633a5263e0b91be4e5567b89f5d19c1bb01ed7a0eb280bef7a7bdf000e57590845dfe\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a29402d3908b8369490d8419207a3450ee12e1d45106a8293d4f1338cb96d143a72693da72b6850ac466ef90e55016a03eac20d9cd8b992ff0f3dcd8d58a533b36d81df99cea72966663e8166618b2d2fa475add74bb18b2fb9909367569ef5b358fc9487c8811\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"096a40b1a12229e2c69e2328d30615015828f950b2560c1714329b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e269d430e6ab95b74f68651b59b3ebf7d4a6e69c726539198e9ac0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"329de220e22c0946cc363caf4660ee2847c348fb4675e18e49a24bf0a6cba1df5a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"a6b0b2d25fb85f1c5603cfffbd8b6d1869d32d2d5e4c003ad84358f41a6b4c8e70566097e4\"\n}\n],\n\"handshake_hash\": \"f1a1f86108621dcd1a2cc1ffb1bb9774f8778a7ce40f494b7fcdd4e356f3cb5016452cf64901e343e5873dfd8c4f7f5af41e96e1bf05166cc52d4531004d5002\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a568ec14fb93d4c5f0986a3dc6e0d49834c32a5db5cc4975f07a6d3128d168f8f4f420615f80207e8cf7e6ecf7ffaaa62f56a2db9c591905afe86fa8b7d321070a4f6e56907c29348a46b8b8894473e4d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843af95250053065e303c924bb24b92b2366d07c864d76660ede3f4ace62b799fa7b18586acafae453e7cc921e23a1b93583320bf3d555ca03be6372097ee4e880b6fe8b897a0b6ae38971c2918678042e2f4ee6c2fe30089be91292c64505d43ef46f5d3b8eccee5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"3c425aac6583b6368d2912452d3286096f4269cdc089b1b483113a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1d956de49988d9332a453d1fded6690ba356040b7a77b8c23ab1f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"6b9d1056cbfc65d59455d182a2dae2102c7d77c2c069cd1e6957c8b502148041ea\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4bace617d593b4f8e14338b10c04d2743bac0babeb152e2991d40879078ce1eb62407a09fa\"\n}\n],\n\"handshake_hash\": \"42d791fee87753f91909301864977a0dd6ae57c3284eda5bbf495ba9d9d1c10c\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a8ae8a03265b92300d8d3ec7ed8fa4910a1b825e35d1fbe716fac5df910b448c0bc548f1ba2f08dbbf4261f375b70370e33e9d53aa4060b05b6daded37df8652f97585da2b995916fa04867ced81265ef\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884353059d4f10a0c58aaf555b028674ee7279921ff4d6ae98b2bfff4ddd1ce9f2d24b3cd0a91204ed9857eea2c3277f1cfd3f0f3f4242aca7780df6155c97baa43c8b4d3b60cb6ee068746bb44d6cc477497d47bab9299b01ac3518eb47e53c738b0e60b58ef10621\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cee97f410552067f2c58e2f740512956d37b4463bf0ee874a6851a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ce74e2cb158958068d61bb6384d6b3c545e5e8f97705bf586073cb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"03c07d608ffca339b8a921a11671a6315897d67c7187b0dad97d54926e5bd1d872\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3af3659fd9b338a7c5ffe17e868ce404fa8c269f2a814f5eea33511666ea28d9e37684f408\"\n}\n],\n\"handshake_hash\": \"0037de709dd46a7c05c0f12ba63118ecbd910518541255a9616104c87c5606b59958d3c6155c65878e5c62a40b6a84fe0ffc324c3e80ecaec3d46c1253b1e62e\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be1d91a91e4d0459a5c57ff0a4b877ac388a62df580ce9b339375bd136b3b97845aa9e7f428e2a7ea7e629c5e70388397b47125315335b895d0f5b9f29f85071ba211d8603346fe2d59c54cfb6273b0fdb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843648f0994bfa6f9d929bfdc5ea132510c2eea534330e41b1be149b3630c5f42a5d40d7fb181b9655ac8f1e0541b8a0918c31d586aa5d5b3e94a66b8b34942b89912c1bed8e11d2583fe5593c02aed0c76a02f17b86ac5d3348cde9494c9a19d4b9f0b5e6c13b10c7d948992c53dc9fda45114f36628b2e3f6794d097c3fd896e79b8caa60cf7a4a17fea39cec9735109c9f5570de372c3393e0ef20ee2cc5026b50119fac86c38752eee51dc3807c65724a823a368935ee686cd6601eb7b42ea44b4c330a38dbf0661f02a00764516048cfcb72d4273ecdaf776dca645d11211aab1759cb793ff922471ab5249b88de53ef1d0be01f03829a2df34b3a8d264dd7c70cdb99a143056097f6fb68f5e6555d0c8c647dbd1731b62041a15249f21b4570a220367a7cfe7164b2b8d85444df492c069f59c2d2e2dcd173176cf8303d9af5fb1eea68606bb77846754d9c350cf2a851a134a35e106b0955ea24a4d6e37841d4687732bdd6de5af3e4959f461915394dec7304c369c746fdaaa93e898bc67747517014d988d50e2390a0604c91807621ae3859c76a84109d6a2ee1d80c748abd58e29fc02edb3902dc0e5e9e21c1ba99564c5d525057cdaf6a98cbad0b321945b7c15cae9320209f1cbbb4abb99eb463ef44aac51660484b95264f7c1d02663767a644e7435664dcd77f6f72267d401935bd1e8a0f70548d2027f0891ccda43a0c2332f95f4e2ba3165aae3e9b3dcc0c71bc8d4bab395ade0b6f0d92e75a62af8c48367c5befc36457056e723e7021d1199cffdebebd164c430662733f82bb22010931d8aa6b2e29cc4740e50ea22d52c9b3285542d2a8a24aba3fc3e072b518b7f50f37e354d3e0c11db46b565a7fe95e7a2dd0cf81fe9f77d3eadde10f3ef8f8c8f55e4e2f0bdf174918384b8909956e8754337ee2bca57cfe9746abd99d96df3a5a6d60af603606367a4af611db7843fba6f478039bac94dd7fb54d9ec3a13bbcfe1a2bb657a0c18d7bc3074a9b6d93795370907b6c35befa0ccdc8d68e958d6767e940f3c466b694e8e1baed97ad9cd93af28fd457e3d736fdbfe90936c37cd07f36fe80e9318c7f0b974cef8dcc8284601be3f3ad0e938a241a2a73b97351a2401a4e42cdd4b92819152009f5bc8e23c3cfac3cf4f13d16d76a448c6f1aab68bef2aad1c4c6c90c819deadeccdb5012d9a6c756fa748bc5148f24ca6616cef880260ce05e818072bb2b8ca94cda8963e382f209a10daa1a084f554550f84cedea4818eb411a80071fae87c5229ef1c8ed71ceb6c3d23378666d2379b04d29af8dbe6230678cff20268dd8a5c69813bb501b5219f311b0ad537f07a3b42dc9e03e49de59426aca518b9519ac8d5a945a5dbe9eb17cd17adee7830dd1c6b4d6fcd913885035a0f1b096d57a3b53d51800f3c1802f19adc840dcdebc6c9cf47e2dc19fd65c89f8466384246c1f4972ddb600f51b451945fd92884b53780e8933a028e81607f895544c95641cb369713673135e1a106e4f65d19ff61e73c8bf1c1b586822222f38778823134db2c0f0a0f8cf1395f183ff1e76a3f8db1702aa97423fdce2d1466d8cec8b2c418b02dbb670277586191d2e53e4b756d7c81ee8cef0aeba2d031d41bfcc90648cd5b627c3433cf958806d17555d36e1088a69cbff1f14db68efc54a312ee35177d0f9c2d0ea1d5c28f4c6ee129f8fd1b80510f3826972e37979b204dcf7f47e28b4cccfb6e380d2e8177cc0e2748e45df1cb91564d2da7a0321da357758328591ab9c9cfcd3d54b6c2c35a344996f3e57d9f619d9c4cd87f3c3e2a47e6f8f7717f505aa8451edae301498a25349c4eac5df97755de67a48ce45a950533de46efe610225a2d8c6d417aa16042cf652cde85e5e1e91074107890f0605851b0457e2f587474c743205637a9dda2ede4464413d4709e5f77044bd8b0f0c4505e058fb312633f426b58262005c7a5c87dcfc464a09e5d0daf22e30cb37a25d96a86c27281a243bee2dcc0b209cd7a5378e1ef99eac02900e3bb04fd05fdae6789a54f53e6ee341ce9e48b553172093549421b909c5a24687e70052492473ef50a8960f62ff77a71d2d712dff800abc96d1aa80998517eeb2ac0de80aa2a908658704ddd81fcb867a7d20da3af2af74dfedd4ee2365cc649fd6a182593e54e4fb4d312c5c3b490512cf3a17af2cf9d75aa494db957366d2376ba43ffd701e810f058a8242df5d66fc661d1be35c9b3c6651cac68a5b557cb8d2cce2b83edb97984781edef000f466817accd9846b3e239522901bec0fd5e41b60ce41f492c0e3b81e0913a4da5c2c05d865c10599f4750db4362c494ebfb1f67ea4f82ea25a57fbc5888d279e5b24494f15aaa81af22948b3f0d669e0f1d7825a77929f2a8f0924a891f637e3b336f4e66d37ad577fa67cb11328d94f13c21c7a5c5b94bca74cd8cf736484fe46a3bd945b833e8f297e095746af4451feebaf26e2f5e3b631f79b441be5648daa1534796aa7dcfe69606ac2965975f0d84f60f7f0d43435d1025ed98edc37d1e42427b49f30f8aa99a721cb005de5f176787d9b64b3c4b57b8c389a63b0b4ad7e6c89c33e5252622bc244b334ad279e27290c84806465f47bd0079e63bd89e1f549122755eaf7887da18db15238f210985118851f415e0da697fa9d2b1f1541c4e9c699220a0d647aeb0a615a9dbea3654542f97ff71f7b7efb235c0786ab3c23558ebdd6dd0a3b4738c6cc25a082533756474182140c8651e9c94794f4a97185af9b5419849a0db5e002532652d966ff7cfa1f888aa093e08f2072e1e2f78d52f0d6a6112eea406537543f3d3b1106e83ff9a8e94f77e1030fad3125677540e271914807b4543b1433e6b9eb18889c10c16aaf130fbe236b9eaf2ffd6d34ca090ff1a81c65e2d96238d556e0683f1e13ba9a1d89cce7fe0adcdbe1253\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23e12c441cd54ed2aea0c5925fbccc0477f2e0c8b5352f80471581\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cc8c5ed1b45cb84d9a5e1ebab83283879b500606ccc31dc8daa5c5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d124bf411d378ec90ee2056e78402b0e32e15141bac5dbd679a81c2ca26a934b73\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"31e904f7692a7a4bd2298a88715e1bda9280423ba62328f597d6bac7c20338c08fda4ac3c1\"\n}\n],\n\"handshake_hash\": \"19e8e335703256b814eda4116f29d97a8f4c7804d847ea9063a330ee79d6e733\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be8fd370ab640101e813b7c8d72605e20def71936b18e97f5568bfee14bfd42de620398df65b5e6446a65d908caffe5d6f19635daaaa7e66e25a2b069954df122a304fc337075f47ce2b5892c85aec429b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843edd9ebe14262779a19572a622179171824baaa7a681c696be074f8e61425b519542161ff68974ec7514452a0893d63e472dc4a2a979bc98b1cef42c7f32c0d319646529d23548b8d2765f7d0f15998f7c42cc5b97ffe39af49a3e533509d0b7a207d2f00ea5ade12dc11a8e35dd72ec2ee773b65aa3d9f4a9bfc34ba287f0da15b14cbaac28432c1bc7eb6762d322b521c0dd905b255688fa7eced1f863f0df40631572eac0c4a2bf7177a21534693e015fb76083c0c73ea7b2f74ecadd39b2b0da0419912da89d3533a84768fba16f7f90e0d6bf91878347291d63e114d20498863fea27824b3bec1392294e49c1c7df547888a187eac6fb10a1b32ccdef8b90d4a722a239783d76b904d0c8c9802234a38d47b08d1a83426453463c7e3d75dec268c8a0ae6ae22ed5619ebcd6c0a16afd4e43ba19a38fc6fb6043f03f23499b5f9b7c044eee706112109a31a726d326ad735a5a5c37dd01b1e02d967230216db5b5039fda96085b18896f65528db7f82f4c4261ec70ec627292a515683c0c51b5af8282d98902a623fcee4caff84ceffaedde78a669bc13110bb30e8f700f04b2c9e4f786dbbf73da3d4bc875b3eeb13920d9812b9e5430171c77b74e4ffaad91c3ccc151cfde8ae6aaa4fa95cb5bd3363a7b7acabc4eafd93a586d4f1b8d766f7c2b8a1d29b2b25e381968a5902d91e4f88d4e1f0b3d7828b6755c07db500ab430d3db0772d5d0973104455ab87ccd1a5ebb447a26bc8941dc072de6ef46aa951bc4f20cfa742cd3093c8f4bd7db73c721d227ff1057eeeb3d26e70304ce7039f6ee7563e8ec5290b583e95fc76fad560bca6e9a0e5b0e390fad05df34d9bc202798333d6a87d0d1e5ddbdb7356b01e2934832cf0426328082030a6e3ed5985757a0bc6c57a31590dc9d453dc8b7b5feeacb9a1a66b07b2e924192acd61165e9ca3c086f8b08ef96748d7af05e2014bf68f41a05cd85b8e57e4e26fc864ad0956ccc02b5a8f8b3217f4fe1dc0d3a889df0d3ce38b407858419bd98fe9a7f2b09d3d7a36f8a2cd6685618dca4aa404c5667d23b51b1bf1d656f300aa9e1631489e93c2b6771fc58d02160293fbec5102af0f0f4b8aa9fbd9d752258794b469a8faa54d55e13642225fef4dc2c095e60de24d2a24d196d7e66a5b0c585d5046eb0156548f1ee32379f5c2b4778c3e982ad90bcd201356c47e1f60e5177c8b2455aa4fb2d12d129dc7415258bb0a6530bc8365912159fad538d8b359addc9ead44884b6489851408419c7e66fc7371b1224efb1ce212864c6c46936a629f0d79628a74934f38615fcfca1215e5784399202cd7dda1709001724db39784984f1bc2008c780be10b6e65fafb7cf6375c6ec0419f13dfa98a4b287d3d00fe6adc43dddab7f3155ab02db50e3ad02635fd828aeb8f258eccae3749caf23556d3c225ddb0deec2396ce3811984d62d78ead01c63a5c17020918dfe3a8ac068e70dde2ffcae896cc27f6ea9c1cd3adc900a717ebaa7d192cf5dc019d84c9343068a8b89070bad1afa75f0cfce3a98bd0e1ce46e5469fc9c23547e1acfe02af5bbfec90a8553a5a9fff84c4e9c727b8fc8ef0476f6c17c37bd86015a1ad05454911717821df7c5c1348e617a60ee04d523d6857507649b97cc12685e3f0be2d127a4029aff6f742a71df4d98d32ab485df54edc94a61832c8bed5ead8d84d02d24f36fd990437b4be3439b278fb16a860cb767ec5a55430c292f7ba60e6317037d285b1d6494f61a64e94df031eabd2512ff3a6f82f50e6414d0c15bcf55b28eab25ccc1c51c92690b0bd7f675bc2d92bfdeae1cef299ffade39b4e129e937dccec4aa5eb269a2dc14be7d044f9514460651ca78a6ea5b7fb160be0055a76b7c6bb9ea0a870a7476768576ba984563712f7b44c55066b2e39c159dfe0f7e07edf5b9b2493b4ff141259cae2f7ed89a1047cfd43a008b80c2a14dbe4579554ee3bef0032d8e6c168d5ebee41e6167225c1a3a63b4ba0f5d312bbb22e7e6b4a3ed194633703e5e5513cabef93c33f103042874d65d7406e48ab3550f9d41c599bfc7a0a2e10eceb7916c21baa637099174bc0ac4ba11b6b632a39b8d5f72660719b6ede5d747c4115b3e440c1e2455a2dca0c8aebce5dde80a466dba93c74f6070299bd7288e672bfbfde4b99b309ae0c1de8a6b71305bc54a043868e64bae37a9ea1de458a88568f66edfb3888ceb9c8ed087ce46bad70d6aa96c511f0746d8d94c47b07affa4cc25fe67de245493b1001306ca43b1a65b8f5722eafcedcd135d75c051a7cdd5223be70b3e6822dcd664ca43d5d89598de173cba047d28a4233de69a61f65708262cfe5fcceb8dadb5bdee83b203106fccce0fe55c2d4e394436b52fabf09bdef03d94242c2b107d9ffd9dd6b38e9d613923c062d61eac7f01cd6369f462f2ed03889c3b538b5d354b4bd1905c1bfb01f6bcb189d8ab2685d8c8cce3cfaa5bb88e3a5505180ea346cae2ffa7e02232cb0ce12ddabac5cc31839166cf6c609e438e982b098f174b1e6d9c8fbd2790626e6b15019f3fba6adab1f0f8f36c43893569f4f0ad9ec436016382601f5304ce5cd48779db098e6a2dec981c93f283c65733cb179719e5907ccb2d7f23a4be5ec47bfe310f21d843ee79a5db6d7f17ecdd42be0ffe2be374d8e427ba4295446b5dd317f76905b3aec3226f513555564d1046981002b80ec6854e7aa2078b917c1c85851746ee217ec2f451c7d6ea15f25450bee83bdea7b9679d3e65711b3d92930f6875aeb1fd9ea73c1747ddc80439b73f9dc8c177190e5fb079cbb1370f3e76627db180cdb1110e0fe0e3397459080351b51e2bc7e400adf623ebd3f7cc54a83a62613175fdece338fb6e9dc39fc160605bc18d34783afd8398c82ad2493905f4b6ba1943db622d9da415ff45be2a87ec76eb1a1fce6f8b48ca48bd3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9d67aebebc8167b1f222692f2f5bf47df75751b84cae5b3c570092\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7d28111dfff1def917bc6a97424e71a1363ddd4c47a87992735a1e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b7682e17d4011fcf85eb91e0dd6aee5d8b608bc78af54d7138e9a5a092722a5ebb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"37f5baf79665a74288fc6bb14299379f9c6809c866224748b223b9ea806c7e03038b0a2dd2\"\n}\n],\n\"handshake_hash\": \"424624e27782945d86693b7deb3f173b7eba604f2ac500289a3d9d56959325adcc157930c89a6564f581d1f93b73e1aeee613e26a379ef0324bb2c48013ba820\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be163016d251154167b0d300b42dc667bc727415d6d8096c30254466aba5ec4ebfedea6c0430799d4e5967a182828b5dab88e8a270fa5b8a3243c98e367a1b305dbed8d5765191a53e91229799606a7a72\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088436f32b90f62770dd42d6e55f65ba98c46c28a4251c250822a8fdfd729c8eb92344433bf1438debefccff4504612d67cb0acf75b676fc7da7511e65f0f3efd99dc5a1a2ab272b7a33d3776a9b7dea3236cc2e39176558107d3fa98720f83f85365ce092f6904a959663e93ae00782dfce569aa62123ec8aeb9fd4f18cfe7a47013dadb630d06a424f315d835a29514d175960769bf6ab68859dbefd65a338cd8a1b20433ebae0c339947b721cc26e5d37d52cb4b607376b42ac77bd7e3d9d876161508d6392d9221668fabb1ac07280b330a2985bcb6b6eb26b0e0d77eb5d6ed1feec2afa1335687f3c5195dcd42e1b0d5055f6177d7e51f484e1880f1837f84509dbb2f99d508221217d4edeed950b9067e3b5e81515586d69273d409bf149dc0e3dbc57409412b6e2e5435569a671eecb7d2b15874ec8a53ee7597b30480393517e4c5cfb2f3a05665ccfec84ae904abc2c577076eca6c47e5cac2bdc1905a85774d7f560701c018a5d24e04ad672d443a1d9649e45f33e52488087bfda997d2da3854753df1d4fc14216adc3c00acd18ea6092000c0e2d900455d345f9234ed4f67b20fcbb09574ad8259c1133feb4a70c66f213873c69fb014eda69c18776ca2cf9cacfdad54c8fe4e128f41f8badd847e237d73c163cccd1538d0bde9d9b697996e3fa6a9560884bc0937422b3e6e2e732d1867f1afb349ad258aef4013da859a849e216c63a4d79248c740866495427ea5f14e1a40762cdf898b9ff8e542622fd943cea19db842d05cdc9aa2f108c12ef663767dc13ba436bf66871ee2112b43c03411cbe3931601fac0b2fcba996098424713d48d21fa46c7620018a934590f2b9f8712649eeda7ac3f2282994abf9d4c3980a86c71d5327cce1bd98cffaccc8bde4f4f5d99a992ab015b583c414a6cd2ed2fbb12e9196597018d3d92d1011c91891e9d14afcd613508a07d1484575f3f8ef2e28b475d57aa296bfcfa175c07a3fc882657ac993e2751da714af53f5e53b2bd1bfee16163878794c835fe77f3d9b1182a33c06a58b4beb2557c0ce1c5111422d59d29203f1eae47e6dceb2ae0794b702fdefe70e5c419cb0f8407661335470c5d6a3c6782e73f29de44686d5df3f77a7a9a1dd7da8eeb1f58fb1eb5e328d63bdc2d365553ba36dbaac00c78b6f770a355d935671d452d0da468335e3fc101e59e524e95ff3767491fc8e1a00bd53aa996fb267ea527ca0a7d3235078d8f16b7ce129b2b480fb15b15e4a83182048cf1e5b682629cf734cef4441e4e66de7f6bd2a8cb4ab9a842467157bfcf4a39d5f0017db340afc7b4f0896947ed168cbc67b2a661ce0951345e573bbd7a290f460bde032893edf37eb4ef1152e4667aa89b04c039d53d065670c4b1435ff3a6d79f5622ed8ac46e96ea7a1cd5264b9f608c70a27ef91f92d8fb137248467d98505f16822199ddf2611209ad847f2d871ab04a16c1ea76fbbf1d7838aeda53708f8aa00bcc61570440a365c95b055b8529cce7d8383e8aaf7da7edf450a083677541ccb281da7fd24d6d310ad6f94eeae9cf78a1340ed7001442bcbf56070bd58690e29c46f1be9a111fd4235e50e076def0bd012058900e2f2e7fab503eb99ed9a5290030b63cddb207c1b2d20a725a07464780962a249f8c71adadbca95ed08aad77795aee621dfb5e45d0b0ab87fa7622a65ee16643fac7e40e2a46ca1f53cbe38b19ae4ecf722e394d91597cd329764091becb8478459f92a95c57e809e2bc812515c8fb9cc165c12235bd9912053c7937934ffecf09567968335ddfdc0c1e03c90bd2973655df6a0dc9e659b3d116e9a6825d7b747271c506a0be746d96bcd868fcc60c7a5e6d559715ace7e8afb8a026958721d227456ec5da0ad3753b345c0f7067ac59b28a5fbd226802f49fd30331a4c18bbab467adbff9c37fd6c6483d9e2f3ea2ea6d2110062010e8b4df43d15599d3a63d5db28a5ef1d82fc42ac49d6e3824ad67193777be77a6781955d6d12be1fab5148b14b268500babe157d8bc23896f0fe0d5a3ddcc89a3cbcdccde5b069c07a9aeeae5da065ecee79fb8d3bb678073aa29064eb2317d4d6a19b8b2471822716aaf6a5e4f740424e9225505ec98e3251183a6976384db1176d0be1e1921ac0e336467a17ddc3a9b6a65ce5131aa6a9a9c3d0d8a8ec5abac12edd5571860c3642ce64e04a04dcfc6262866e113464ddadb8d447dcfc60a36fd5210caa7a9d9174fe1ed6eb8d63a90cea9fcba3537f9e22e469ce44f4f6067a148ddd6f8825a83fccd341d0edfc1a17101b7b79c545c37d443e96ae42f07d98984872defe0411c568614d4fd6697c239ef5991be389b3bceb95dbb7364caf205c85a3b5d90b2970549d59d6c82999985b320bff9e94721694abaca8ca01c1bdb9cb1fb28fafaeed550da07f2632ab9af44ed9ac9babc028add010ea19bd3e50f63f8dc65d79f586513bc1cbc81efee1637cc8be5cbc05f9104e7f4b5516fadfe736bb16995a4dfbc276c58fdcd20f77236973e3195a00480edf064bb5fcf48fb343e0a0ff58045f7cd12364bf3ac89ca1d1932c8f2a885405290a39593e2f1650a2fc22cbd898db03ea7050e77a73998ef91c83ce5f169a4c1da8900368172bf2b3686efd3759bdef6f2acb4b95d3b7a0b0fe43bb7ab33a4c6f4f06830096f74a0b4924996f937baca857c5374fae6c2f6e55a366d97671e77fadbdee9ec90a82cb8025a3a33ca52eb0924651ad4625d68bae2f2946742938e182edcdb364890168fd63f258131285463f380d315934a1e4d275b2993692ae6f94675f9b8803e7949735cc9a074e78bcf55a4d9f54089dda7243a0501da5a261dfd83858206600092b620f33ad3786917e9685d96a1b77a319ac7bc302d04421087c772ae3894fc76924b141335bbce83ef06bf07cd899e2d0ffc17b16e6bb6f847896ebe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8d9a7d1ea30b04ec2c385bee7551ef42e46596e4aa618c7f506fcb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"51e9cffcddef37ce225afc2ddd6824d19bb3558a4cfc63e5cab79a\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5dc8aecf340c124f7f30a35aadd4d596ee229fa921146c304b59b65a0d5b0287f0\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"de3607d669166a09cc834cdaef857c82ad647afdd97e0ef683007e024e0d0a3d66b25893ed\"\n}\n],\n\"handshake_hash\": \"99a5d67f870214b00da2e8900fdd1c20a9faa59c93a89f711af25b8a872e416d\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be5a1e0db054c5b2caf1e719e5248e82bdc0ac1106bae8dc931d12963f911feefd15db52db9124a0b2056a26b36f4bd1760b6a196d6c3564a7536c8499e09d5ef91a536ca9264b304cdd7d8c9ff5ee03ca\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088433768d89297f40248bf778f8374c14c8a9bf455b88f3c7389ba207a7aaf05d51ad12fcbc8b171e0fa103a11daa1210e105c8d0c3354a3e043bef3a8ce549e69d5c0000cbd390c925a654b2479ed26b9b12740217f16ef959b019c8005641fdc1747bc8acd85e05b138c60ae936843e47f82645c451d1bc79f342fa18a6652ff0952297f9f1b03eef139b3c88ffb9ac5c397cbba12455da1446afe02cda7622674a74b743fe9c8317c94c2d0831fe6284954ae8b3e859513061bc84b80fe12e49ff60bb7e3fcebbb91130bc4d70a6f588853bbaba2302a82b9b5c9cfc88a69a0c1f7bdfaf12c84aa5e89473ac8be825776af1c735e0745723f26e26cfa912b2273f16d1d29c124898e217c8ab49d468512d4ef5dd8bba1fdbbe4b89cb7fac6e9fea29abd9a0a39b6b9bb7a46a7bb48f97409c7eea198525b76f979ca48af0a169510cdbea5d9d2bf177f6cd6a915b1405c227409df9ef30a6ba2cabd19d9d6c470ee11defb25345c93fd1ee095d6f296d43a86e25568a50f3939fb8c1dce1042924e0d2556ac738252e6a622820fce37f5918e373a04df613131f7b0b82963559d5fb0bd9351d2e0ea904cf260af4ef3e1f69e78e0036d55a56a8edf614491789512478b00991381692094c6e3ed07f784a924ec8e4e79b2e345a9b6d77e14095fa528a104e4b670ed65910ec1330ff2962f424ac7113e6217898aaac40ae3b7dc869d6a0c4c6060a827ef721857335e94d1e3ba63201cb1fccc663f49958b40cf04b39c029ca1670c23eb6807988fa4c9a97723b64a6575128cbf2f8a2e7ed3029bda02b72a0910f20d7585be75dfc72c9595ffb8ad912a5940e820d04384e5a602350d72f6858a8d8670fa1039d84765dcdbfcc7dbdf87fc5f5712dd5bdb1f820229bd6b28f7fe96862eb7cee0f94a4dabbbc0515fc7f710f0ddef9016d787dc56dafbd478331f5d7236c3efba09f033bff4fb83975442df041e526ae1bd789d50291bf98995632bb92224a7cba0cf4a54361d2d3bf8467fe6fca11ece3afd182a61bd2461befb518f243babf08d132bced72bb7a62f1f0f3ab050b8b5cdf002c5d697a0deb1804a5fb6096c18ba2daec58b9d5dbdb6b0cfdeb5b1be5145e4da16ffa4b936b09f5accefedb5304be2bb2117e180ce9159287aae6035dbe97d9ebb9af28d545c299b753dbb5f1ea7ed790bee8bf94a39bd631dd95457c15a75c26c925356c07fb4d345adf99a2b97fa2d444e3ef65f7d12aa366293f8e0eafaf9ed040dc76a96116d2d511fb47e08898b15a8ba4900742d4e8bcc349713aa5e2751b05bf6acde3a0ffa62b3ae49a5d6cdac19e24f80bb4ede2cf7be4b0adbdacceedaa0d30fc8533bbf210a50fea5edc7102da7188bd7e99e15a0c11e5aa24833020c560b22276231db9596eb3dec95c8fa91c5e8838a7f6bad2c9ec14fe35575b8316076cf512aa0ee6f1177820e05f2a1c6fd19fa090137449c6ceddc5e80ba3b5e634167ddcd4a4dd59e449578e7d043d700803d7553c79d2e7d32fc221045318d8ea4a6e11c92cd2d72c14d7d51d963cdb8e8e02f65083a79b2bfefc651432de780d445682ba46a5dba01289e4a722ed4b990d769976dc6098209fb45dcf3c6b72495bd0fa3670d28a4a46d13e0a810475deaa9bde84bddb0dc69d2210570570afd8f86fd1943b036565b2c2ba83a89888a02877255fef83dec998f05059b1becc6baba5a68f898d3ca501aff506e6b3c0fe79e8d214e0e32b81127714a9da8f720e25174e25b73dab5ace73436e5bb64c546189d9832578af06029598fe4dbae71163a53b509299e95862ad02725262ca76bcc308ad9121d45100bf7e9c90ee9b5e0bd3a603fb5f18df89b5fb20ab53d3cec9c3f6618258510caf9fb560e610e9d9a77b66e0f5a8eb77a23fec1033a3619de70d734cf2a252141e5838d5b3c7747edb16df9653948296233aea2c0196e98762bec26174d8382d87595c381db8218beea4cbbdf49b16dda3022255845b6ed878cfb6456e2c4c5a771272e59869a456948f52d54a7d1861d1a32f52001272009e7d75cc36365903a6f9d7b16ef3d3e80d84dc73b2a89f18a6d39852b3ba05ac213265661ea8e9f615bcc3d75a7aceb8879668b17b91f6f548464febe457aeb26d563184eae7dbe73905e5cbb6f191e8536a406a70761e6b8fc7b625229e50075fa5a72388d5318e031a1d6e9a5f091e78f3e3865397fdc89b4f927f1cf03abfef8e45a4bf883333434629b65895fb06e51a56c4b137983e7058961f12c7afa897e14d1e4821623abe1e9b1ae70de6ad8f5caaefb09476a28118619490b4561b4a0b9417e43d69337692421828a4ba319d00620ebf20b08665b653c8a5768373e476a5a65813b8a9276d63668c97bcdc1ba06de4f8dcc457b26f4f1f643fccb38cac6e8f0885eb7ef428a1b3794f7eed22b5cb4f19e229dcd16dc930458eaf6a222d936808466b4b480dfd3c8ac4ebf80d9492f4eddf3869fa0a6f02800810f63fa7d5af756478399ea30ebcfc365449872386dcd9f3f7e12b5aead8a51570cdb67b34dc0bf4a3cb42e00e0b6d6df85fe134584541253954a39761885e8a6134ee807b68f3c39c81e7989d68911f601bddafbe8ffec1f6c5e6b0ada72533cedca2e8165037b3036bd18fe5c2fae520a9e657977a903f3bd1ae121de9b55026b386fd90d49f68dc8a92c3258b2a6d61fe93dbfa664b51509a71b1f5b4a79e0e8944e74e5457de6ee1d0ecf63165c5f0c3909c17fb46238bdb5b29413304c730fb98e49d6b0b75325b8a3d7bd30e491edc33235366281c0467d99f6c0ee5cd8a61118afa2b3291fe242ef121e9ea23dc6bfa432638eb39b5618c7b8aa8399ad3d5f601ec919ad90c51587a5e17baacecb3a34c281f3564129b26da428b484693ea77db29e25b501ecbabced82ab2424161da375dbd9e1d3d400ae7d07\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4bac236257e0438b7fff8f6caffd21f64973cbea504a5c4cfbdf9a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"41cd44b304067041c5812757cbcf494fdb976539f75acdf8a88501\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"fa9d11a1d7f566449237d51e93d31cb283913c1eb68e8b2c5409c5e854ecf49d5e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"86d501217031ed62143536d799ae5ca18d8e0c83bbc71d5a8050e212c7876b7bf5776757cb\"\n}\n],\n\"handshake_hash\": \"8787e771eabf9b6333730873a2edc374ae77cb06a5c6ccba05eee78eaf03b4127f894b3b40e5703e47a919f900a32da3c1a242b3ae45efd9aa296191d1355a85\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a19744c1c1621b67df41ee05b7d07b3fa507d20e37a7162e2939b6cac0a5e17d32616f7fb1a0d4c38c8abd412743d775324cf5392dd7a80d21758124afff6b8d6224597c7d2bf74cb83650b83370da924\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843ad8c3ba8614f1578390e38725fad4e987f56c2bc9ddb78eb612b915deecf20b167fe09cf5520bd5a412cc8c815330955630f4d52a82afec2bace19f4e4416822242f6ad5d79efc8cb90dcc1ebbe51f28c75664cfa0d42d6a15a8c3f1f063f3ceed854bb37708d9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4479f7fd2e7b9ffd1580029413720d2e6a9d32767b657b4a823cbc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ea4512611f925716928472f93ec12afdf28e77415bc2ed1a0d5e6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b43bff75d342c9ef2ed4aad9770157422884a6c03671c36b3d0bcc7d06566b5352\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"abf87d2e99baafa5c60e8c1581861a19a75079b3114d6b86c8305387347d033f81f019c19c\"\n}\n],\n\"handshake_hash\": \"c0385d400f197802b22c243ca23422a12571bf64f75457b6bfc03f15d47ae48c\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af6b6351ba8d54a082a7d17934abe41fe2e84cc293736fdd30504aead466409c593c5609602346a768e0f4bff9bded1d1f43bc57b00c9e395d4fff03bc30ea3ace4f93407df781f2d727e792c52dbed6c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843483de3ef1acbacc99188f81035abe330a5de2703c609996dba2b98c527a4eceb95a87221852cf1e44874a0693531469fa9d3198b45303b306a3b21b11dfa4ce979a57b207620ec2e89e376b4b94da86f629d05a045131732d239ce741b0b30169e3271c3a3ebc8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a891c3376073db583c2ce42e88a312858b1d133b2d770b68104ed1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1f0895ff7eeb1653fe728f6bcdde5dc9a8aa82846b1b2f393dd81f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"872c57749d789f377ebd418f43857153832fb95ac5ea41a319a1e882043b43c9d3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4fbe16dc717b1ce1ffa49a3a1d0c64eb7a5642691a0846ae352a70e0d699a71b3e27153327\"\n}\n],\n\"handshake_hash\": \"de4fafe5d677b5e46e8abc92be1592f3590038b499f5b30a8666becb4e067b1882e0962e25501b31f58e79d23b8ad8e827a566012011cd33b6028f6d1c3d6b92\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49af2ca225d8ac41f613104a8051051709c2fa3b48fe42c24518d2bc99ae508598a56841e14fa464f6d3d83ba13d6807c5963785e9b2643d755f7c4c44c9fc56b8a04274879da5c3da5cfbe414df51377ad\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884317899c8aa947e9e7c883a0d9544564f59e0547290406b85e43412f7f9d8b062416bcf41ff241d73ac4200ff65d82a0ba7206c873846e707eadff2343d2f3ceef8a050888927751b8d3ab3cadadf3fb3db2222122ca8548f787bdc742c6089682a04a67bab48d48\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"243f093fb36173d6a823febfa8d01a7f454affa4a0e43a278c662b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ef4cf77aa72152e9f1591aa87d18b185b150a0ec2b3ef94ed54c06\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"241fc791b83b54b07d6bf01be0707cdc333d4988a744bbdd31c7b6311881adb37d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"96a9d9ec3d964bea21ebdee89cdfc0844c909da7b757010f7396d5819d3b4c355fb8dfa16b\"\n}\n],\n\"handshake_hash\": \"c4ec4b94b6419e4e17bcee57b60e44fefe9f1c7395dd85b69adb6062dee1f17f\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ad4f312c9051ff225ffd97a8ba2e54b36e17701e7f34a82658ec3c9130f582088c84c5ed3e382f03ed18d9a1d33e6368c74c470b2b28d0a7fc37bf733ab81ff5622334b3a8cb7b95a268ca810378a124b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843682d349bda2eecc71db59cdbb48b78c35a68491dc41486beee2784a70b15a12892d1c82c03ef4f55888d156a3ceabd3089f391f5f40d93c56f118e1cf714ba4202dd93d1199d0239c375dd4c9260a69cba9406bade27db59391ee4c9bf7e34fa4dbf2f3533dbf3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9a776d7fa02074585560e963ac2f51a41aea0cce41f999bff3bee9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"77a96c4b4c526daca1868cc2a2e391e520944dda9c3119afd382ee\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"08592b92d96e9e3b16b9882341a1425b01bca5e6084f7b11ae14e9acd8857ab4a8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"266834c622ccdf98bc679a501053aa0ca165f10960aa5b0a152d800635105c80fa8a5d6245\"\n}\n],\n\"handshake_hash\": \"b8bbeceb0f4993d0162e9e7616e3ecaf59e4e87de6950074b6d5622dee10aef5c4a1722bcc17fb2a411f77990e12e593a1f5bff7fcfc372743ed8c85aebd63ac\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331bec18eb84d794136dc34125154df968a6177c7dad4496b078f9b11e2918d81708e77cf963add987c337971cdd536498a0ac52a0068cfa5ea451b368c1c1eae2d2f73fbfdfe77d81fbf4917a7b8aee4f81e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c3d7b01822b2a7057f4d8e5b4736abca67d1ac87f2f4c574b17575105849f532a3ed4575c28612f3ac9a3cd4140fa3a49670e4e56850ef96af6fa292b11c2218f1b162283394389125105cbc22f3ed28e247cf0890393e949b925f40d1d777876c07f14e0dd3339abf85e1f2b459ce1d35ff42a6c48da9f4b9726f9f52eff61a4d8f9dfbd792a7f9ec193d0f56dc41d08ff2b900d9cba9cf43f7bb690ed06169ed6f752f2b754cd24977ab0388f84ba98ed4a48911c759b9edfd6e6729ead106364a614cb64a507cbd1020a5ef22fb35a4ffce47adaa61052620d86df3fd12d6442a6a0de681931d9fc39ead10250969c4a52fc6cd7baec54dcf6be9837371f8316c82834e24ea163a5722a8979f94758e8550d910731ae65d15186d4b99317422950b2411b2add1dfc7d9e2dfebf1d6b211eef18c009488659b807e1d3dcdd46e3b0cce0e85ae515062f59977a23d381dd2f1a4c1154e3048cfc533a26222122d080cad1d5fa5ad2e2ed9c516505fa59a11a43340e58f895587f3b68aaacefe6bf181efa671eff5162530035e6ac3fa466aadee859c52c566b745825f1bbff0ca0a5f6d2efbeefef81757f9e82b2cddf604b7922e214b7c97930061c91a499c997656dbab72a5fec2ad877e305705d6cfe365a823393d5f466e71368d0dc078058cb03ff4f679fe5803a0646f480011a935aeda18df3027a670d8ea6dfa0f87dc00446e432715f479af2da21dd286d176cd8d817877a666c996a2ed46de716e42aa013a1911c722d042a4c93d48af70e211833ba66ccaeb31af0e8bedc4ab2fc0043c84749223661cbb07c03e7b2162b2143c25286de0139e404d0fda0ee9a88aae4540b6bc308ba1e523cedba2fbd9e6a1f646f61bc29ebc1d6700970bb5a5242b156f5733e2697ff56862cc2f5a22373c924ec821767f1aced73f30a3d09ce66591c92c9167e32a679e9392559fe571fdb3681055912578f1927b9ddb65caf978a29bcc2315503f9d4e84d83d80dfef6b105c46083f1f8794843a6e0ac89972749d8c30029b69cc583043a2f995c168c6e0731895e2431cf88461bbb75788b8b5c0f3536d443a6cb91f05d6ec6c46d7af22a0a3a89db9815254e7c9ea5b69aa8b47afb50dcabbde33306e30da50045aaefc73bd1b30fa17b36ab39a862be4dff97d208b3a944cb1e81364a0d55c7f28960692582314d268010e7b7537e9469a74b0f1bd91eea3e57b5a92e6cceddcae0cfad62329dd360b782173afc6194789d45afa41aa3c0e03c48374c3fe1cacd700b76444182511c117c901aa60e62417a7f8a111c6021cd02c55cd65fe7b56231b0e5e1ada5d1f123004a08fa279d5f182076e86fc2dd92d3fa06d8493a96b7e2738869260a3f16be0c358fd7299d09b579d037996047c0566e1c7121964c78abbcb93d677f093efd935998c934f8c52d7f6c1c979a48a4d4c613cfed7dab107f6aa2d85af6501a72969411ad77edaa9ec3fdb44ae6b4abe6f10b8e8c4bc19861048d3e02f6e94921ce1cdfa12c9ac21a1ca874d08552b4d359aa5239c7721218c5965c125176881192c481aa5b0979dd0aa1f168cc8f54720ccca909c0cfdd86ab5d91861ebee87d32caa16c0fadc8ab01c5ac7bbc869ea710a9526d38464d66346bde6cbca4c2b7b4277ce5546ef14ad3b77e52b798a11cf1634042ea2dd5bc895e48fa150f24d5bffc89bf53aaaa1a954f24f9e3a81a999bffac84fd2c765cb765238d2e6f0f3caa4884086524716199b7eadd570ddbd2fab2851f572bb362d1e7d0a656b479cc598d9d6cb905f331af8cc3990e19a7d7cd06f827bfbb11b56eb1bf0a67459a80b79d8f32545bf8f33c52a8ac8fa549b0bbae41db9942322d5027e18dccf0e6372d126e4a73ad3961df3d369107ba02777d462c66a467efea0f7d9193c42a219036363330f8f6b370cc5a4f3afc1a9cef5518f66b0db892a16e0932b0f5638dc2bcf3f1abf9c4891c9a8e4d1fe50b4872175ec32a410b59da5c4ca74799bec908f7fdc77d2123920509ba004bb675faab4982211c965730c2a7df2dc22f67456d6ec3c71b5a39dcdc5dac1d813ba861ede29cceeaa075ebee892375407fe10e083472251fc053d5d20c806abfb8829c24b9f0257011a997ea67a9cc8c14fc3a00d6aba4942aabc4f951a1d40cc9ab67f01fddbaac0726d72939a6abbbe884211823bf43ae3e78f03b2676522c022abc8f336227865a61b696e679670f60dca1049d9f0d491b5808478ba383c19cfed353855dbc6576b28608c8fde612b6add811f0abd720b523fac251e9b0bdf39a90141a4de1b379b49b715440faa54c3c96a2bf668f3343b0f8c37341f99b78254d800ded3ee1732d9ed7ee00843862216bd74d19b4e2562cf453a42e74ae74377b871872eea5a8aafa6d9a64854878fc5bef1c882fcedbcfd89f0e1f0dea45bd0240a521491d57e4fa8426e6e9229915706837f3c52200532e3862ac8ab20c298d803d392540efa61839350bc6b256ed050a7501b40c550f2ec02dec277243e37dd6722edaa5dd78460bf1e1a934125e018fa4b5cf9f14403e1871cbc573118f916810bfd090fd40c18faca66456b9528e13311fadf911bf79387a3baf364f5917c91478db3b55aedea890e917846902bd181fb71ab40cfe12bd2cfaf3ddde4dd88ed8538b91b4381d1636427026211e87be36f1515d1eea9be8791c1cdffb872d694db601f081a8b3d69258a8965b5aa02f382844e7620a5e5c8a2a4e047477d2f60bdc837f44e83dd714410a2db990c69852d27c1e73e583371422fdd307962169c3e6f4f26e87e3ac42b57f56eef40f40a6bd2bcca2e2dbd1f87b928006b289076904f674297b066f56f659d617800edef2ef8427f74333c095e8abeb2e300031a6155de3f54b48c8a96be1860456ab3d9b7767da0eb94d8b571b73d0b8a213660be5de9b396\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d572499b843997e8fc64417d03f12045059a01770e4e56f0d2586e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"efc365317970c52738580a06b85b1b70a042d5cdba10bd9063b4e0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f86c41b7f15ad7558a250410cf3022546b0c48ba8312b47a21a6b84bc7f5b3455d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9dc958f4ab9c1d1ad77d93573987c87747b909007ef83d31162a20fc28b33422e5bb1be6dc\"\n}\n],\n\"handshake_hash\": \"462bd52c9e6386de0ba79c122f98f2da339b47d2248a0144325019f579e12626\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be7bafeb271fd56e7b88233dd91c8db69e511481ed07248360e0378e9f601d4f22df376d5c052e5d0a1020bfa004478c2c13fb2c45722108740f7f223d098d583465df4843ac84aac8b8cded3ef53f123e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843195861dc54552ec96fa2ee9ae3234698820818e5b658ec01b39b79b849cb2a6edea795183bba27af3a7759b76f706addd51f8d3b100265e93bc74eb212c9827e6f79768dc22b42a6dbe2e59d8d7a1eddec0e4cb7fd64b8c3f9942eca83cc3072af44fad4d8d6d8b5481d19de43b62be71efb72ccecd06c550f200878bca967d44ec0f337a917235a40a1f4edc73c9df4e7fff7acb4d242e9b3ba44473211388f9fb34f867b641347496f04fa91e99aebd61422522b8ded36af5b263ddeeacaae63cb810bc1de29451eaa67e53d55d294e200605108584fe35b95aef5990fa5704f7fb3b3f039ea7b93cb6da10d158625c8684bef2689f83c4c8af439db2ce6aa2d04d9e437d10c4f26d6fc26471052ada24b4824e8d73cd04e62931825e64db59771b236daefee728b276642ee7e70fcd04961bce0b4b19d6c9c1c5e285c66347b452b8231c03f2876282f344e6d9a546042592143955b0950bf0ab1a347c2c9c21fdeeee87f9e815f981ce24d2891f5fae7f787e72d83839be98b0aeb2ed913e5589df21ec68b95b3f6173a7b8ff0caa27d4dad733be362cd92b003db5fe960e5793d06007dffcc0ac259be4169859a590b85771a9887d297718fe2b5e1d759e138fca522514717f22c1da3f149a9bc643c5de567b4ab110b8746855b46aa2d21048f2e56c4f6aa80218582deb8ee0cc1c198b54a61024972946bed3828845c333ff04a5675b042861df26a8568edce54121b1db8c6fccbe75c0e0f83d555769be4295f3aa647f6a0c770ad03edc547df5f2dee2612e08e7912fd44039e8e86ed38f18ec70452f7b685888906b39c2e5dfc6f92f41904308b91c94081b680a671adbd1a50282298368741a26487cfe090bb5bcf9dd73d86d153f8530ac81697c773bc859705f0a6b7017a0bd10e5bfe12eaa784842e1da2f0cbea3648e141318ab90e4bfc10035867c76c49a8629e3c27551670cce65554b939245a9faec0cab316dfb4510d412bbd179971de30214bd2d14ada0c9298a56c36422f8e18acf53cf52331269ec8e8a115651055f730e805bd604d05eb482c2229b5969c4e673bcb7aaabedd98cafc9028962e2107cf963cd867b1c232cffa051bc07a9ef9a594d6b2e35cbd50c00799e314dd04ffb77159b5dcf8dbd8fb2e45bfb8d7e13c423a0a437ef84a996878f95dc34d90198e794121acfcaf63ffe947d475192c3b2a7a5ed1878920ad46d8858afaf03078dc301d634a7edb3d5a7b5181d097b6c68f36ec7fa60cf87d5783839d8aeebd14db278af3142b2786b0ba6ccdcc5d023d385b11e0c7a65de531adc8c3f07cd09b3b85f5c6dd638c10e79f97e7e8a67fbb7c2ccd8f9d269da1cfca1c04057f32941ed5fc475ddf14ec675eff87b4acd988ce90af5f798578509821019d765eb989be088301565d437890530eb3a40443d1031cfbd702da2cd9fcc5c76f55a1a8f9a35aab08433b874b8d311c877d2e15b93872d7c1e672c0c4d9718e5f49be7ba37a3a020bbd5117afcc185eb88584fb57b801c6e9faa547cc310ada03ae43854f42ed3964ff604a1659603f9e2ec874cf98b88ff376257dacbfd1e4431a35615b4ebb62d9d737b10630cac053eb9ee12a900f66b2e9f78e4dc67448f3fc68861bd5990c7e756dbb906db100b2ea86227281f0cade9e6edcc077962d95d4f83daeaa258871278602722dec4aff2350d86a72c33dd7c968868cc5bfdf75efeeb5eb587ffe9d3d7f1c85dcf1c1e1dc96d58edc0fa08ca89200dae9ab79910cf2ff7d42f4e3fa4d86c305fc735bf8d8ba9d49bc5c91bb72e84e22f520911cb8d702987a860b43c964e9bcb4ec4b0ec97c1a85df443aa0c54700bfbe878a6b5a5eb656e955e2529a69fb40094f5c42dde3a6c028344f0c05b2f721ee370ef304e3373c583c9a525321aab8b51345485c311e64b359e2b1351de530b1ea8295773cba212a573ae563c1548a04a6285dcd7717235b0e8fd5f00749a55ee4dfd7a39807855c576afd692fcb04be9aa9c77ad41ea0cf80ce167aa5f220661134358e0d4f2bece22faf174c5004503c5414ad21f953ac2c0af95108328df0dba1a327b06da53888e98d87ac66b93ea4f46e772d20b378701057bec65cfb0bceaf7512e5083efc888511b5012275f2de55c643a86e79b3cdda6213e968861448d7f42bcd32cc819262b49814bc2e7d7d445eabec320e08d00145facb34e50addc8b4f6778e6beee0bf60c97feb7ae73afd7604c821b30f1b73eb2e58c6f23e8391ad209ced69569d21faeb7781c11f69853833aae336cf421b23a3f4cd3da10ebff7739cd07bf5a2daa55c79cecb3031c45dd00132fd6494b6c36b3198dd2177707c931faf36a5449d2a66bcc4d1f434a18fa8a52f9fb0630835fdfaf6998b3b2d4bfa1183c9e72c144c8a9a2cc9d51f991dc57b632c1d86474a29c423d4a5971d31b940aaf14a682678bf108ee2e84ea819c0f4cdbcfd9a97bd62d7ee2f43740cc70c720a4677e54f7f3df080ab9be168cbbc1dd53d7cc56e809b7e1eec974f1c4e7966ab796ecb85e01c5d9acb155d2192fc135ef8b35919be8843abc248965624883bec55d2ae04954abaf9e021c2ce0e100c733750981543c04bafde7a7327b569abf1ae4e15ebb8621241b3ee9981454dbb96334790ff449d8929ca8cc22ed2ecacfcadf81e1622a113654bae2dae7c789e41bde0bd6e6d95d7cfbe49b1cc6b9566797840385a2a05c61bce5c9baab69fb5be0db5dfc5377b4efc306621dee0ef70f6ff5e10536bc95c9818081aff190e9792ea251798c3559aeef5df1b863726fd39f61fc7c4f04016536a42502d64ddddc0b24f4879c4caabe4b4c57cf1fba688e27b4bfdf06296745e5d13236011e0ef508424e0b37bf0fa1b5ee5549bb61649b0c75ce4188a6ec094a6b927130dfa76eca37b555faf81fd51a2cfdb34973a304490e6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2db389ddbe822671d09f4f8aba08ac84b9564b408fd551ca94cf0a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7997df0e44694b4e54aee351adcdd307a888f5ca10ca5172a3306d\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"f815a8479917d51471711f92b36edacd0f530b621b525ae8e21b508a05353c1ea1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9bf64840e6a6b038032bee3010f08688eaf6012b76a7bc813e7725af2862f2332a0a8f287b\"\n}\n],\n\"handshake_hash\": \"7d930dbe3dfdbfb0e6c8636fd2a5d57c7ca55500aa6fa6646ccf0d9abf7754699666a8a26a560449039ed10f65ff5ef587bb4770509d7f77cfca648bdc23384d\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331beae9f533dd63ed51a34c432060b32962edb6f0916f2be08a788f9ee436c9e6720e128276f9da96c7829fc574dbf207a59f7c2b16e3e3b8c8cfad5a7ecc3fa1bbf9899e8709f311b2bc3089ad6709c7f43\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088438559efc95aee3c0c0286d6e463fe6ed8d953ce8f23d4c4e5fa0f2a64068cc97ca2d257e2f2254ca528e960a240566e63b3297dae0f33454e0f58dbc6367ed217f3e7527ba2a99df325c0d757f4124c0d44886c63d9dd502343d43133b01f30cb641f4a5903d6a166c69764809d4d648d9cb95f34ff1c280f9cef65825d333497bb4459536a1001c0975ab13b135a45ab89f852c24a08848830053f75aeb5750f75845894b8efcadeba8f43eff558a89e840f9777c04ca99ddf618e828f4f60a40e9e9a077e3a7ee42c0eacbf0c3c38b43262e8537b1eac914d4ee3d4680a48c0480c783569c3fe613df0567d293ffb34c43881a8476250857a942f7685d514edc77c604d4155d4642e60b4f746a77a74cfcc21eb287a58857f0b8a22b975ea7a00cebff636ce1375cfa02927c1d0248474d42bb22ec6e3ae2f68f9a2516a82337e9c5e53120b7ba4ceacfb370398c3e0aed2745d7b19ba2da84773e6cbf7b6f55892e90df07808368f246c7c47461b56e015296ae30b68e12467351d49ee1751b88fe080032189dd18fa06c841d1c2aefdc831fa7b84430272ebdd6f9d5cb3f1b4025ccc8ebf1a9ff54827ff8f86185f0862b3dc5e56c701402c625db825c460c87e8fef7a0b18a8130f339db0358c4a18c4cbda79ed813fb1091fe4840e758604e35be25cf913e8082ecab4c7e749246301caabdba89c928fee3cfa41c416a9d7a78dd1d92d1639aa9bb5e0fbe4004b8926f86a1d63aae645e8ef41097b87be8e09e96b4fae55b1277b2449cf0dca75b40a3432a3343b01c62e8b98aa4760fc42ea06a705885fd2ec72dee10ba49d68b43b35220c27798b2590113648015a0716c9fa1f247e5bc535c26662cc7b3e09c881ffdae8e1dbf463fb0ea2b1a2106f0f1b337462f7732bfec077b8d09b28682bcbb6ca83040abccf37b7949b7552d94608e7fb612d2644d57cf09a14cef117fd73a8631dc6df4f151ed08cc7f16c8cfe652c666a360e96d62428cd8a05616c731dd0d0ea6420d35f2b3f872b1527531c171b2d8b4c5dab0871f303b74401add1b5d45a68efcf51e3772139c99e79a55d951088ebb2b606cc22a1f7be2d2f683b5550568fef2274a8754a10c8b5b2c567681c4e233d490236f6b5901ef92850fea4c7b89f3a3612719d52c2ff8771d2157f1f05cd3444ebc76c66ffb18d43353b20a30d6a8a8844940c2291dd9ea1c42709e4adf0520ff02069838158ba2170402da6be245f06819b0554fe543273588abe156fdd517e6a5958d5cb3a25fbad179f42ee22be579652f8a931fb97b8f056b90f3fcedbf630f2e20eff4a5b5049fceeaff749524d27dc5ab4625566fe77f3417ae30e1ffbc42a96fe04eedc925032843b032eb4234ac15f34b5555f8ec8ac129aaceb66c0407a7aeeeb5ce22eb21580acd61387fa959fdef5ce0210287e1a9b23f0f45c713b411ca2a05e851b76de5aa3f9b801b9391517410ecd9f341334069ab9d0379fef1a7db58ffb3a529889fd83e1df16db715dd75417ccc604fcc7c5ec1d1125bcd50a421cbb433b7b5d811487e522c1a88e7d3f8aebd203efb65ac8f0f9f62ec4af7ac82ba2badb6fceb74eb991afceedf15730829ba6c6a21be32dd7f8b2b83b2eacf8b5998675fba53843127d5ace352eb305bc59cd656eba84495de8e91313e1bdbf4b461ef8661d754fbffffbd6f88280e4574c2032481d5a6b5360d868ab73dce30bf0fede1a378de31b9324154cd16878249499bfa12372520ceb4fafcad1e081d97154b7860ec9af16e5028d7803241358ef485e220c0198eba36a2156a95264119ec946a5e9afde1d4448356c43c3c246a9f9a47df8f5fabfdd277336d8d64f581c63294a4e9864b0ede87ecae7e1df92513d442771e50ac04f091c856d1f2c9e4ef9d098dfe659de8655e8e76749bb8581bbc24d88b591edc0e3a5519718f2ee6e29851a1d9af0bcbc2af6d6bc9d7da2835b9c979dc1f45c626896b4d3d5d6379112dc394275510fa90961baf752a9632d6be1171ee06501956186d72f0d06b0670c54a7a3a2bf354498a2c9778b5ee3bfb72f4bdf70853288a8fd018becda61f1b77a608ebabd692b4e1ff3942a31739325bdad6511a19c907482ee710e82ee6b67b0ee6c68ae3e980166cf0a2fcc7f6e81ba9a13d9ca6564ba29cac1b88e478e8799335ee04e456890577165c63ac4b13447070f8d368bfaeb6964ec80249aa3f5cda5449cbcd12e101fd4de7e3458fe678aba7250dc15984edf0a98c9b46e7fc2a924e289ea42fe5d35c27fcd93d590196d85776c125425112101ddf7fa1feb2987db549e2cb347bb2edfcccf2ce49b67a71dd6307068df29b7c8eb05a2444547b47affb826b97b1c17e0ea6c29d8c8f127662b9c51e6072bce5350a6871751e386cfe8818f4040e263c0eea31c3d35fe00bfd05753e2809fc8612e713b142d9d58fa6f192fbf2f5c511a6da38b8dcb9b95ccc688516dfd80a26e3c3c03afe8085cf8e5a0533ad628b3695ec2e5825f307e08531bf43bf3002c646774854158163575f82c68b007f35c42218f41d1ba00014d8dc9a73016460ddb1ac8fb278de6a364db3ffccf122f99c767fee41951c8e6bb5d8b0b66e14d528951f4373cf973a448efe70ebf4dfd33bac70758d8cdf7f061cbb5f10b80102cf6a37c29c64e358d5d4ae499ddca31829f8759c9118e8d9e27784fdf6134f8d0a354c697cf8720072f08273a241fbb9331c57b5e43038aaa45e13964654f2b1758fbedabcd26bf9bac35f26125078daca470d028a72e81fb79ebfc58b5cde55cc416434fed7d0f773430767e6ba74028f523035df0521ac363487bb86460babf52ac51c4fbcdd02ecbda9a70e9375d9f371ba0e81bd6a40929dacb84ee9298e5461dd96fd983a4b3bf54511480b3779365814de494f42b2267a0ebd591b4c41f11c3ef1382e236fbe3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4e8800759c63dadf505ee536d4d2f94410ad24993800d39d20de65\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"91532c898099b155c40f0afe9fb4fcac75ce1713ca4abe8bd94a7c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"20903af08637a0596d8bb941ba251b76d20da0fac149533d1d15b6572eb5897af8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"78c42f227f1ec637433563db6f62c8af0098e647c96da57fdf2253ebc7ccb78c5c5d30659f\"\n}\n],\n\"handshake_hash\": \"81555904054adc53646a60a236d7b0ea4b9b18334efd354b4f4863f06d5fea5a\"\n},\n{\n\"name\": \"Noise_IKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be013bd70d5238e7f9ae418636dd56b24f6e9755d459e2eb33760834808fb05af017746dbe2dcfddc9219738c6a2c4946b3e5efcd4a1f621a70914f8d054ddfc104c4625ad3f36aef6f8316e07e465827a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884307acddb6cbea03e4b0aed4a0b12f6f8c03881f9069cf20397a31c528c3a97b03508d2b06a82aeb2cb299d4f8587715d6afd1ccc1baabd0d6c442a2e84994390a4007826ed234c72a2b116947fcf99b408db87ba6a2fc2162d50760dd09a3713224026934891c2d90bab878575f5befad6c633051a8519f997fe61ee417f5d68d85d15a2d5b1765d77c2016787b7aef0abddbd328e9fe388769916ddd19cd2b839dd83fde860bb34ce913dd5d76330e30ca23a389dca5d8e19ec5170fe838def1a1cfc96cd95bd8e93f1e6c3539887a42d5043e9cec32ceb30384bfa98ab9c76034ed38c272023a8bc232cee789aa75d1a8eff52c671eca3a464e0e3c0a574124557a6563bc37ab92845dbf6930969cc642e1c342aeb02b3c5f391d92e023a5512235a326fc85a967b95dc34f83eb1b0dd016b129ad419be54c1d97c8c0fe11634d2a6f52d0159a18f74bdda262d76cb9f78cab1dc09edacb364e714fd56593482cde95990f8616ea73e415a80bf1bc45fe780cb4eae2b3b858a48f65e47584527ce8fe3840a7540f2c97bef5a07fcb1341c027b2f469a4db77daba623838d1ce54b121022e4858e117fda857d140e4180acb360eb4f18ea4888247e40f7750494bd7782d4975c930a846ef269452a81b840b13a940cdcf08eaa2914133ce722c7b9385ead282d8efb9353b1c16dc165f17430b44eff24be70f936a3c4b716c5ef745f642c25e9a8ddf9ae4deb2b2a7e43b2fabe2b035fdeed40036ee8864af17880754416cddd864a801b6d0433468da65ba7141c56772ad8ae6ba4dcf7203e09e6b5a74ece9257f1a26dd7edab9be0f1478adc68458d19e3596eb6cfdaa882518813a201b8050df41ab91134973109d4dc1f5239bd5c40d83e8c11cb0a793c442224cddf9b4f036aa0099ec3672dd4ce0e04bc388bf8dcedf3e18d09fe2fceb4257923111bf45b57baf40e3fac171dbf46e22686c09729d74b6e11a50a34cb767a662c2918f57e917fa95a3d151e3068dce7858755ab8fdb1e960f7ce310226fabe550dbefe7aab509408df6bfca889ed69d9f9e21a66131d6b19e5786400ed221217665fa0654aacf9587317a91b63780b8050f4879dd30b390819525071d1932c2a444dcad9e1f626aba1832739d4734c07d951cf93186e2ba50da94d4f550469cca1a18f02cf3a40b110847f5009f798920c8a058416f88118919933f6d7b96bff852d135761d9c726168343e61a0c7099ee683c69000ad4b2321280e73b2197f4aec58f1712481da8d9600480b9c96dc18dacfd4f7f464e4a86495e9d22384bb4e6fb8510ed617a58c61eb3e641eb825356b7a8456f79d6aff63f6918e7fb3c0ad9c44a0ebca146a7e4000acd1df41e1298598866d1f29cb8b5b42b97dcd265678eb3915be40598064a902c50bf4635f49b5b3ab2db992e5f7261f88be37f30e39ec1f2b6eb6e082fe4d12b0ee20b392b9a2e970e55e6a9a43b5d52daa88e92fb24382dd11756bb28504b24b0b3efc83ca970f33921b09e67a0947503a9fbebb5cdea7f34cc9a3fc7929b9bf62e3a10265275ccf376b066042995d95ee841281bf83c655e2dfacbf4a88c90edbbf27d66298be51c8991a130462742f51353c634425782130240dec8c87997d6ad9933cc2739f42629dd28d6490d2640ea2ea12d59452c27077e9a72418ec38f8dd16e6a9e18d29cf4eaffa563085fe0dcb9c600698eaf619a1e694426d8aa9e2bdea178a98453aa0062e8d671b66ea80784b88f647e13e420acc74d5de97a59a015d8c8195a59fe10e03c3335e168ec5e070caa789162a5f177654049f3c2cfd3b37173511348cb08925ef0e4438750ca20d9b3fac934643a3dbbaa321e4c1e1568f7b0d575233f94a07248f140641fbb9e2d3215b8610843c19166f1f7d6ad06128e983b04f799d27cd4298ad13a09e2cf714f57cebbde4ab531be870af8b58cc0ee07f04c8ff4d806f7493a3b8a5d9b4efbe24fd75fa623cf3600030ec40089debe78f7129e7447e4f80acb6b5e7d0c755bbb30e4b96c9819b6ac9f805833f6630259541db924f019d57d03fee49c1672a07db72dd4640d195ab37cea2030880b29de3a241f0164a38168ee566b9ca0aa53d3db1504b883fd5a89cb5d791170bbaecbef5ef3235dbe9dcdd6a1047792f5038178224f9c5b3c71bfa47ecc96ac7887ea893d202d8f7dbe9fa27e8309aedfba93c1b54390c12cde31689c11bb9341e8882fbd02c20fac81ff3efb8b3e9f02035db0d7523eee9266d4804bb5106c3293257e2ab74c76a48e859d9efb1ba9277ea0d28c894d68647394711758eaf7cb66b1e083c00561c499b1ce9c7fa7d0d35c3ad68851bfc63bd9bc9b2694071c3d942655959e5c57e14852d9a11210c6556d32f9e112cdf996a7e4f62c34445d063665c2b95d94ab5a09c23031162f37412daca693d2e795b801fb8e948bf71d34165cd693e1d7b21ecc0ad21241eb7d848982f9f5d5ff1c92da6f1819a7f70c9f2a34c65577bde61a59abe7873c9ed9ef87538fe4c5e5df8105363eec907c17f2b9ca0e2865cc932c8ba64015d0fef8a34ec380060fb32e7119886b798dd5bd91820f8441bef84b116af524203e648331add7ed95ccd60892dc1ab6d86850c7e9930e756dc4a98a4bc82941fdd4c7aa920592bc732ef5eb8eaf4d412225cb7b4e8ecf50a1cb7f691a4080bc224c1ed945ecfca8bac0190142e2f482277548284f27f2b4577eccdd4ff2212537a5a6d44ee84b14bce7b691aec14a37a7dfca9672864c6ebfdef7ef9942142ae08afdb33b9bb8124365887a463e48ac87a0d78be25667d92b2c4273290c02ec83e7c0fb22813382fd768f84a5d9f0357beeac8b43423dd5b32016e36fdcfefd07431307e84c771d8d188faa0b386c0900fcf7a4077a4540cdfeea5c655d9218d2aba4442c5609f9df1bdb8d3c4a15dc21276e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"502b867a99a92c69275122127e80c5687ecdbacec053b3981c1c81\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"48791a6d3da71f00c74861eb290a72f9a6ecc771e25ac38990329c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"157125f75bf74bb51fbf5d030c5f32e674c335e6c771578b30e1c5216db63626e5\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1fccb38411c5534ccae6c38862739c5bdb15ac60ce388972526cabf6512b76245030150f27\"\n}\n],\n\"handshake_hash\": \"dbb84d07a3af692b716f516c2e8456410d1c8bc204ae393a790ef00262b3e57495bd9e37f0c267a6c525895a430ab6a9f394249e6c42f7fe0d1fa2d99e23c24c\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944873b9663f2cea0c6fe89adcbee86822433ac483dd61d0cd357b08f74e089c86730d127e2885e2310d259b997f75a9799918acce1b7a37929ba81e4bbe148efc244b12e67860a02649848585bbd0ac4e98888a204068254ac4c3fcae189bd36d3c344436a3ade918d10b51179f5be1a9b2dd3db3047c39a2753ee7023a4609b9ccfceb1ac0db9a0e9436cd6c9f21e9614e08127a28df93cf7\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843da3ef9f04965384759a1a2fb2bf2e7283e51ee91214f9a0c4fbd86199fb3953b74d700ea944f7d9be7f66b5c9404703bf56b08109d734370038579ea0ae9c67ab695250f797f03b544b7938fd4d0adaa7509b780826089e50fe433b7e9d2c2c28eddc1387eb92b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"46afef34a4c1c5ea6ca323ee881db178a452e8661fb45067ca4c16\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b1f6deb290b89344570b33c95a3f80abb1804c9025257d40e837cb\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1a151b8f72c7939184ccd4a8502890341c4b5090febff356d0a6c154e826ee7beb\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d0df2762f7899805d8c4c182f3f37e86efd050c1a0c1c6a5065ea3da6d833e6496f2d9bfc3\"\n}\n],\n\"handshake_hash\": \"5fd0400af419c19ebe69b31b634cecdf7aa4d856397cef54f30f4a2844139348\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794466dfc9cd53a3874e749c2d4e39677c597c5cb45e23dd2200b4e90f8cb56addc195b0c85a4c7054f417b9ec22d089ada12363543e4c1e5c67a57bfdd8009205e25b30fa80981e66489ac1b75eb5fdf0ec898dbf11f1792a7a9f119d537da406e1e0ad8feeba73f36a57d32c716cac1cb0ff1229282baef73a610c7add7087236b9d7452ffcba21bc2ffaa20c39e921d0135998af1d5150893\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884308762d08ebcb62ed100e5ea5f5e6a0ca1b13eb640c1e868cec5b3e18de4dc04037afd310688254d87cf470cfc0d5c1fba478304bfe39c1b013322a7c6bedadc421ff22dba360b793ed74368255a881386465daf77f8329c91f315005027c809144c088f7682582\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aeb0c7fa27552d8f9f0c5ef58d7257f0fb956fed584b094506ad2c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"dd7013eccfd40e2403e7866cb0a49008df23662f08a74a2ae8dd15\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"442e417a986b36c58c1fe6eb7e714b3d74e2a260171dce3ba491f580a85383f557\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5251eecf327c0d31561e60ef39d86f18dc7b248e0a0b9f56f5c441497664f68e0aa96f58e5\"\n}\n],\n\"handshake_hash\": \"eef5c6ffe3772397951628bdefd577fd6424068d519b302815340e8fb2add2164c2e3ed26288cd7da4c3705762d41afa102b0f41c3a0c4ee752001e1b5a860ea\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e4faf7d1cce1f41464ec96c837c7b6ae4007e3f5a8d7a10de280099b32c46baa618cc4eb96eb8a18061912ccd645b105d8f1bb1e0189564b64be4cf30860c617ed3aa7b7f5c4453e4166f8fb7469430933cb2663923213bc3218f5a52021435d14473e7d9f860163d640427080ff9b853dce697431d4be46cb032f7175f59320dceae51b228bf17d03174d0390046b1ee841277f5f76ac36\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a747b96be4412a15344b55e944ad56455075e3e7011a1ec89afc912f8a2480d888fed32138d69c8dbd8fd1c6a4c92637cb593ff91e50d142009580e27111dab341817509a33b4593cc6d4f8f223c1a8636e2b5803397c637980ea5a6197c7f45acd9e91d97491c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ca3f72f7cceae64f9395fe671999e4941b54902deb8a0453358f0a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"742e6c2765cb66d1e6691641f819254cb610d39d85084a19a22c86\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e032bad882498924d65059c1512673cc40c22cf38f73ca058c73e19ca36ed618da\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"08faa76686a303436fa39c3856f1caf1f20d1ca966fa6decad7e298cb4f7d2b487beb86f6b\"\n}\n],\n\"handshake_hash\": \"1ad25161dbc84a6f6730286ed511ec9bcf3b0a137a2def487b7e064374d094ac\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79444b5f3888b80bc46cc0134a6d48d9b5846e6c0460f4324c45267ef7996b19ab43396ef9d7120e9feb5c6b3ebd65b3d7c281f0cb7f89bdb1d5e300384ca6044af1ec61497a3ace0dbd66a1b6f23a09e0f2fdf32b0aeb8725aa5a7bdd4451d8eafddfc311585994bb69c266979cbd790b2468de6ae47fa4362e03e6498782310369f5cb5d8a114d09c70fe56973cb7f2152dcad1e2190638db3\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088431d4f9ccc51a39448d142d6d5e48429cb2669e94263079e3749c1cecc94a7f0a4ab17b28226dad2b9179de8204c602f896c8167ae4e60bb3c0dee50e835176a0ac3ff958308d93545199fcf61e9905725913407da7b13faf61ddd8a57acd65061f3addc2eb342f8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"9fb07be3eb5efe4e8353fbb067d14bf3a2f0ef0e89bd2a37f38acc\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"68ef6ff7c2c3f5380928b47f70503b8dc1fc1f393b334155915fbc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cfd2bc8faaca5828e7df6a503f21aa4af80607e833be178d79f0f8b6fcc84041fd\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0b6bff45b49a0de959ce7a5942f3dd2a716b41f624fa7221a775bbb8223e0fcac4215a1fb6\"\n}\n],\n\"handshake_hash\": \"2af94363136e154b3980e5e3da0007bca11cf959006ae94147ba612ae27804ba6b97fcc6729f6fe928d83befeee270cd4a22882c9f6736e8e882098ce64efbe0\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79447ba0b74ca08c35e7494769fcc849bdf8f55a23dedb4c1154a11f0cff5414e02321f7f264f0e700b300d1f1896a8e8742a8a4449cdf97b8104643935d361203314b2ec0617eb68841cdcb14c89d807657fa41a64c7d190ebbf4aa9c021ab018173d5cfb46ba7f251e93f645ca75a14c8f32f3c8ecf6a23f8d733240e2b351858e1c462a59259e19cfc072087f504f73834ce97136f2a47359561008842451cf6e1afc8b3c4af1a460a9ca1275b01fa23e714e8ed8ecf20f4aaaa9dc07570987fb92042429d118b7afa3057a37361363be0af73ff13d3a9615bdd918b1de2a3034a88de18b0ffb48061788b6e31a976756c4143ea819b059a483a87ade676395c8803eee194d944662022623cdc1bd22fbd83504a414bca9368afc112f8f32aa19548976f80e405287ca2de645cb8e88db0509a0e5beb32ded2642199daa94086f9092d94748a1f120df3139a2d33b14a8c3cc95c5ffe49fa14f7078de3f17c5ce8a65d995653a4b3d44e5a605dc927b4b3a1ea51038e41facdf56e5d98589542c3b1581c2f10b618dca05917249d99f005f53580271cfe8fd545e0f757f67f138fa23cee530010aeed224655dfc80b318e7b5480990112fd6420a535288ce22b0fb0377395917dd372b6caa127dbc518844496d6965b619518236de3b966b342ca24d4458873fb2aa3f7ecab601876d0b51d9ffbfc15ca8473054884a398101562cb39443b991f1b715c541d4b8b190278b2bb050dd8b355b721933399d7e303e0818050a2fc7d30645375fd862f71cc68ed89788ade79b2dbbcb2d01dc81742b14c119a75fad676afa3b7432c384a4e67be458dc52372c7002f94df1f2049a7a3a4d382f6b8d7be953e6eaa1a290b871a548aef6a141db05e286c030bd5816856414bad5cbd253ff678cf96b7cc751f6ff8edf8b1c4e5e618bf8c9a38e70eb3ffef70dc8c98984e55cf263d129efcedb8fed7c46a43afd899a1ab0b5ab9a659bc951495427fb01c5f39ccb69102a9955e07200d511f5eb270025d42dfef2ae64ce1515a876941e58d46c16e192b1c66d257233e134020d896a701e643771c068f59ef96738bb9abe802f4e858bf41dff83601c76dc106d71aa856243f77661ee4a6433e05d8c2dc87d9e3684bb6b5d4d3b8423ab84c1c088d9ecc6fc4e0dc8f625b00f3d8b9b61cbe3a9ca6a71a7537857a0427dabc7adc9bd173612905918d8d015e6a0e62bef48b626f44a407b18b70ded635a2067ea7ff150b99772c809ac5eb13170cee53a2eadfafc69af9e81c8c259a7e03689c5d55427de5a048f0973213d58cdc45d88d58d2b80299701f17bc406e015e69e30234024e4dec30a90e17489c3afe06c78273acad8ae7c8fcd2598b15da90f1d858f220371c0fd14e04162a34da51858c7c1028caec300a4f62074ddc45f92d2fea10406387010d2f45fe9f1b2a4ea706366c1b2b3321f373f9b871d9bb2441345f30a7e0a338a5a8d90e4d619ef866ac5baa5ac3c249b44f24a91baac7d50890d5c40298c772f4c9dc53fbe98ebb598d9a181083d0e56004ec35e60067372b59f4abb294054049488d396049943e93e6f364e07c706e351cd9ba486873d98926c805758195edffdc5869216bcf9a7eeb91eda644cb3bf93827024c2abcfb43e168c97c49b0a8fe7271f4a20cb5f3000483a39e3678f4799c0a79eb13c7ee03a3e00832e1af95aa5d217df8e628e2436de07c14ed37247130b193e3117eef90016cd1c7c5e18686cd08bdb6b59dff41bf1c917a94887fb67decafaf0a6a039342ec9fc1c0c19e836c694af9a89c0225691d656a297b08cbd9d3e27f876cb33bfed9b39c9513b636739ff2e677a5fa75476ad11d6ab1e6e67b879a53a6d8a634d0772896563703cfbbeae982ff864e63410652ff5b7b1cc9de46fc17e1d8c41d1b2e61aee2a85ffe2919d8ffb2137ef89922208a212fa391a7f85074ef26b4f1ffd5d741fd58502fa402596345ec2278a1e3fd736746e455a8dc518143782e675fb15c8787841a7673e078d0db93ccf0284f3e2e48531554410dece7c1063ab5bcb65073705856fc6e8819b3d75785579a95aa859727e954be625fd51a86d3377f316bb3dd51a2fadc83462ea56915a98c951e4af1d448177ba0b067ad98b07967bc1e4d00d4f26a9859c9b13e8eaff8a3db161aa7541d7f8cf3a62cb00f19ef7d643ab8d7746d644cc6529182666f2544b400a1703562ac134de0dbbe3e66e95d5eb407de408a468d1a2898995b2457e5c7d801e9e447423507f54efd2302eb7bceba424dad7cc23e6b913fb1a9848f7e9c1978fc930f89d4ce6a3c525d8be22b053c69f60ea4f58777153b7acc0f3cdc72cc29bde7777443e61998c25a72ff8f867d4d7747df8723cee9767b0b03bd1b99973a3da629ce1365ec9e3b31dfc1ed3b369f96707679849ede1c35333ae2f77546da44d8f4b41303151cdef8ad58fe380903694331582002881b8f47bc6e507aa0c12662722c48673dedc90c1d2c6051b440f6ac257cbe1b846926e216717d22c144c165d132008f0b9d3d517580ccace3f145d6216672adcafc002ffc2f46c433efc6c125082e2c951ef0232da6d43e82f403d8301badcb00ab370158e11fcd58ca13ca141e5366d10798c163614f664a466b0888d320071bf64b4c669422cb82ea5fb0c0c09837b0b6c8737d7ece08020ef675a627b4a3d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843639a7ff7bdbdd5e5a8b6bae7fb04f48d48c625d03aea1134c4ef67b19df4276559973ff883666320244ea52b1c93f57cf3e08276e60724179ae673a7a8e7eeea14f6f4e8e667132d6a2ccb0945e86a53300f85482e2a4f4986c00ac3cb683c4f0d944be4063de5837855da034c332a9917c5839ae9ea71283f52c2a665265319cb369bfa2959fb9bb199242f773c5d6ced55cf73180bedaccf5751bb9d6d9ee0aff1d99a11a02f5f9220bff7ee37cba8356ee7fbaac314092f6634052fd4367c9f8a6092490bd8ac75878eb9db1057661408596efb357398559406c50374ade3851f59e888ca1974c4653b2131ad52a964016d045c5e1cda7e417bc5c3ca05861b42f780c469b59e384a6a04943351f7c1edf6782c532f58c7000bc1ac49811357ef03ede32c1fa0343fb7dd5236b28edc7d78089dcb44a4817c3796b9d3341d2858f7bac107564bb059a4787cfaa8d2060964322fec7ff13b9af5e2f007aa226a737493db79dd1da1cf5451a6a6d8526fb9810a713a2947bc7ed02f0a693eac49db022e281f7877f34841065111f1663c19a21f7b777ad4f411458937c4e862774e6db8d03cce5e756078dd3c58352b8930574f08f09e6a68a435920633270558d6fe75f1523d59f6b5cafac62160b2d019d9a9de79c60090ffe51032f0b1279d1af74bae2ff0cddf3b6b596e9a269c2ceb4bf9afa72dce0e8d4972dee7aa83c54266370a38619ac1af9c092fa985a718ca9c27bf64b6eb34e466faef5cf03aaebb97db9550203586d5e651ed42631d85b16d8a38a18ca0c6b976a0962e520a05673a130a0725dce3159593782b31b791f7be455ee2580c6f9efd7d879de6dc968576d58534cb7f82af1ac64e9c39a56524b44211acb086fcc408f8bb93f41a974899a70331a57d837a9385c92dd1d9a1a7a63b2c7099aff9831f9a46c8863b7e22d21e499acd4cb6748ef5b3656c07697556f029234632ebbd44565e7c49da575e1c4282d1fe27fb53545c84cd18e2ecd12c29634ed10d76f499de14405b87e7ebd76d8dd76a4e10fc4d49fe0ec193da171ae4612d8befe9d3cd883001baf13eff76cc8159eb7f8e1f366eb32c2bbe2f7af47ddd4c42eb9556632d297bed5a4dc00170e718f861c0fc6e6c8d3eadd2ea326d9ee12d969dc0a08f2a7314ea16b1a6dbd29fca58c845fbe2e2e5c251734a3f06ad023b1407760f3beda517f6c487e46d5f1bac2a7d73978d96642e4fa31950e215d27daf9603b518e0eb4be10bf60ec43c0722ed2cb0a09f391491b9955b52fd58303320f518a760e059a548e4a62aacbef1b81bd0a77fc40a02e92dcf3684368b579fc5d22be2e7add5198e6bb2ed83d4dc446fadf50df9fa139da50a640aefe7dc845f780a91133dd76655065489b096e2f5bc9015eaa728513b9c52f46c2673375edc1078153d22e0c823b12234828ad8ec9ce51590e2ba0f2eb0bc61db08863ec0dabd13fde1156bdd10cee27f03297c193d872084203584b202df6ca22fdd4a3fe12cb0713bb6db99782c46dd98829bb5269041dfad2956adce3065f01002a8ccfc2310003a7e9603ffcbbe7b3b6e5174eed0ea9b037d1745f8a200fe161dcb78376653a66bc298fc0319cfe378e25b0956569f89ec19bb8fa47141d0a6df1f4b88a473b561dcf383a5d7f51b0ed16524a0ea38a5ef406962904f5a1f04d6f96b6b900cea0b413de325c14c2763157781dce6fc6bed4d9d2a4cc107f7a73c0ea585fceb77dc975962fb0622ce509ef73a1b4984498418ee6587de8082553bb11ebe6ceaa4e99fdcd2e00411116a25d34391fd661d760f04409253c2c43a5cd3acdac022ce9b7da7c99f2f8fad8ba46a0eb6a6ccac40ce09193988d9f1a80643315be8c7c29385ef794b4ca2ffd640644eb921cb7944ef6e3ddbd20f02b50157e4fa9a7d331d609110656b2cb256db75b15eba0a0be85dc144d7bede679492081113000f6d3c95d2405d22e30f338184984adbb26cdeaff094d3e19bc71cc40b9d46174b261dc733c389c848e1a2f3d7863cc3dbae56915267a11c39e8f19a6e651419365239a5527d3faec27de20e18572da990333d313ec0b65a6440539fc57274e2774a6273680a5e9d6b35df43a3a5882c9120043c9d8abe8f97248e9984f30bb0987461df55a8d41ce4d5feb02eab4c0e20fafb5b5c64d6e1600e5e2666cfe725be283883cf56a7f63c11095fc659467bedd67890b1d733ae796911eb8786d8732a68ba16854f77af1d6673faf66caa4ade187b6e96ca6edd444872dee87acdb9b80bc5c0bb8a9f5046125e07584fe2fd2580c4bccd7b0c476945c62bb1462b3dbd1b492e960fe7d2ce9b6660ab8807109d03fb3502988551cc1eedbf675f36874540f640df2ae3a1766bfbfe6f3f187c3d3479a780323e4c3beb907fe5c33af0e16c6b0beca80791e19c4ff1972f975fa64bb6bfbb5aaa1fbcd3f2fa89f095693458225ecf30c30a7174185e914c09d88e11ccbc2ac5f58e71e95be1c6fb4b8339263ddf52ab74d344923266b552008588b73b96a097f57635bb426bbf5c140cbd2a9cf587549f16ec019615c7db0ac5009ebed8989daf7ec5fa8dafe8d0c30215320357c2455f2dcc7ad010a1b0eb570bb7b47061e58cf4cb16418170ea45cb3798c9b208e9ba364452981070aefede1f6ad149b4d23648fd4d186678228797e12b6de2044b08125879381f93df7ef40a2e2701e06dae25341a7b3f8403b327547c8e58dd02d9ca37d87580920b152ca76a2c12efc2330097111246543b91defe4610902be854d92a97dc10c38d6193827b8bbd5008e1fbbad0ba5e8a8799692bcbb9e5458aee751e5270f35a3f2f1bf76ee0e85ff5022bfc0a6ba0f8e49e46b69dfbf47fae8ca5db270f88a2de6043a9cd4c06b9a88fb7fdf43ec247680e3b8f674727e5ed76327e7236da8adef14b7da9a66ff3a66e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a1ea4b239b96d5673b7af498447b04765f88f139c6bf29f56b1510\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"6e0166c5b76d9cd4389eecd612d8769404ca25d78c4b8be0340c0e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7b98c8d4f43f15d85558d9d6c8893bf871c5bbae838c138f7ceaa60bdc559f473b\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"58793f618ff210f92c36e66c4f992fc67bcb39025c1bd32f2175869a8d412334b9e767f52f\"\n}\n],\n\"handshake_hash\": \"3b33241b0b5117284c98ee9aeedaf42139015e8363f2c0acc832c6d9206bced2\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ee4a86b5d96a7d5eef192b048e3fd95d21d1b3cf937fe2ec85f37d3533d8f0b5fea612183935b23532a77700720d3e1b72a92695737228e2b20957d2236bb3486fb0977782ec92b97800cfce597afbbe35792fae9291a8fa3e301af88c911d9e0f9e6d0643da403bef5d8592be0a308e5841dc8e50387ee1331e322038d668764e1ec4ba1bf2f1e88f497c81e7c647a50ee5e229d021a665e97852b790be492a8aea2e0611fb916a3774b0344775e0148b236960963f89a15fcd77b55e5dd3590c3d8f8b0a4f77a5976831024e23afd11ee308b5db99895d8f2ab881e71d32e2a625faecf42f4b02c9d14215307cac2f7bab9a8056eb07d9566b655c54bada72a3e3798c907bd11e4f568c35806c6991ac203971e27904e6728973346604ffed5db815a35c98eabe6bb65fcf06ab161a9ba25a5eb46b349c135173b7d74b1dc95bb038296027fc25145c1fa6d9a10aa1157625e5742dffe33c47f5d05a36c0d5a1a35dca1c372b17d1aea7e990047a754b74031975e370b739b3db37337f382a3b723eba0865038777b350af66cb81727f0cffe32cf511edb7c76edce5a5f82e5a635f6d8620c23265d31c199aaddc9f7c528dd862fa90d1aad439d14e25d8490d31e7e108e53ea64c209714c0a2e4f65e8468469cacb85799a9e2ae270dc83c0af1abef7f9bac14d20084b44652134057c33e249cdff8c444f3b23464319b966ad3b3a3d3e96f52cc5829a1ee4555912f7a5f9bfbe4c93fa2b3d227c1686528c843b654cd1ef81c7c68688389bffaecd9c00893bf5a45ebea16c3e8cd16f0ceed32a99c7d943dda464be3764da2892d160f30c91cdbfd82688caa1bb6ef960116c0481b4d4b70fea7e61da5ca5da8312f7adf01771444b1ff86775e18e5cebcb4b75a8edb98bc98d9c03a6131cdcd85e7ffd89b39b00e19a0f340cb230e11aa026585aa5eb5d0fe6e6504492a88e9ad0776555fd842fe1d25533d6ec42f73cc9cd5334fa1448eccd9d6ca152d006bf0c8ad6374b19a267f4b2af8db34251a85fb7c2163455bbc95249a865a37e811fa7c6886c5a93489381126b76361e245e7c02204ad27fa181c3ac5c1f5d25f58cac2578fcdd2ec7be21cfab803d2d3c091765b97144919267d0db7a88cb5e6255aec496837e91b7e0148df00d1f122c906e21f370c534b4c73800e7be82f84e858ad7be6e432435eb19d485189281cf831314e5ce47dde7c52d57058adba9de03502c034a61ce2c8d3ef781f9da6c521860e83e752f896094e0c05b4c2cfbebdbe8183b640a7e96d761ca482a63074d3988035a6da667ff2c3198cc99ef56e2c7e6f334ae33929ee6a297c44b3aa3ff210c959b1b5ce760987b62412c6fd5e7e24e04bac01de08f6e7fa63a0cacbfeae1b5d2630f7cc7534518278c429caca143c343f438e4f8b57523bc8f3495dbdffe28ab05f59fcc9ea7724c20a35a9ae223eeb86061040b4f621f526e9df90177579ff5e42747a72b5826e616e0e812ac0701a3d0366cebc48065345f79099770c2d00cc3e3d151e497039aca7d311f5af01d48f49f5809ae05b632b842ec57a99b8f3d5ab194e2cf6cf9f1d740ab758c2b6faecd11c3d1292db17dd32ff6e81809bc6d78ccafbdb69b4f99e2fb8e3e05a2eee9def024b153a918cab7e9f0a6f211245bdcfe7322e3891f67530854b24fc15ed52f90843ba20ba660b49492d2bbff3c31a6399d7cf72f2579a70470737eb5d04574db51c4e98b2ebf6d1efba5fbbdce3a5610fa7cc69982af384dbcbfa32b20be54b50bc1ddb91f5752ecb6500ca92a5a72b83938f5a5d7642266d021450b19a4aa844808eff3c59196a0f4847148804b48e9881cac2cd052493b3d5a44869f59ec1dafc81512abe85d4b6c0d3c2df657526f87e08a9addc286dd706fe6014b5d0e0a17f49f7847dbbcf26a3fc54ea58bc52592484c681984cf7a428bbeee61239f459e8335ef8ad1ed695e9833f98818bc3b7d81983b571ab9781e3f2c85151e4a4adbcaa7abeeb3223ce62a5a8ea5e7017a1db3d45f7c595f86e132e9a37d58b1eec7c6d446350e2b1efa8f5f7dcf3d7f3dd8cc6ceff604dfc8fe32e5251c0d1b89fb1b70e3c0886f5324bd0e1caa473d8541d3ac04e90b0a200440e4880c3864b7e52bbf4e9fd919aa37fb13cd66e8068ba4c091bfa09fe1b093304cc90ca7ea0f9facbe285ed0866b722794a6f6981795be5f3e99e5fdbf5f534a00ccc1fd6b49cbb3842281aecdb8f4f98f5ad05849206a924be94338f2aa879d05568fa66824b7caeff0f6cb6351b18bfaf40c6fc70d7d53af9d388a2f243d3093e0b3ccdf92b584e725199a9191536069f7586196bb83de25eaf10e4203f6eb596ac23dc5bf996df1fb60496c3128ff843cba90162a6683696cdbb51e764b176a17228742009352b76d83fc7b4adea417c7410a9c194da18667ca66fa11113b20c4d3fe8df30ee263a45e2edcecd16ee478f108b2e3f6bd813c4a41c5fa88bbd7a2a802cc04bc88cbd0a2d8200840d4e100bf566cdf94c4f0d84037f28f1632f418c6c0a93314059d22cf79c9e6d176cf8c8aa79936c1dc0fe280521f9129ab951db679b23824c953af752b2f43a5ba6e20cc051bd22b78d869c013282049a92ab9c4e8885d651524af2ac0c7eaf2ec2755e652273bedd93ff88c2acf0f771ce5f736773212d4ed96d69343e976b79d5aeae\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884318ccb5a6d8cd1e40610d2935bc6a7c349af3a2f304bf1c18e3cf63a2118ac9dd331943d03d9c660a71c3a5261027aaca926ef81e311c5599ffaa22dcc28b613157dd6aa7603c6cc87d6e72de76682e859d02bfb44de77d08739a86941ef3e2c72b4229297f2c3e4aca89a249580c8c6bdf80420079728ac2a4cfda0b6a91439d3adffd35ad5aa65e23427f33f644894eb7b523f68ff7a252c2f08580d80e981d3f26ff25e76157ec3651a1292a1ab4fa0fdb5bc768d048fd39ed1292646dd013e687dc61743d0c1d786375eb8d4045bc83093856bec309916bc8ccd39d09f6f766a000e9e633af77e2b68afbbefef27f325a2c2abfe8e88097e7a853c6f274c54bc3210ab2a8da8e3cc0c1dbd46a0685777b93cc38a629269f47d079db849a7a7f8aa10356e1553d5f92f6778be51ebd2879013c74ae857971710c92daa88dd420e53c0c4c06b04813c7b96a92bee229726cf19dade78a1fe3a73ae6c25510d59a2ce2dc66057b04b74ab08be6d79b1f25f97addb759724b14a82fe6bdc925542b6ade2f39d45034058835fb1d5b448ed0ed22e4156b231dc06fb79f59c6c36deb3062cd3c4c770b963d771cec5fb17e9641ac98ba991bf49825a36d2ebab6c0ba1456e30dc513a5bb787171b84f675295b925864258d2a2438ac73709e6fa229f358f94102feafadf0f5876a3a31ebdb4e66d235aed401fa83f552030464238063cf7f43f009634a5217e941c4a4cf4db9f65256920720eb4781585e689bac8317c9cb9e923abf867fc2c551789e6d8bfdb33141f975ffa90e62eb611ec020ca5048f4779393456a83412dbb24676b53ac2552036a97dbc2c57599092105d256101d8aa880002904c5908f969f6ffe5155b41fd2fadf92b00bfbc24724501eb8718243e8ed5629ea13f89b38251d2a4d5085d87926433c886405b5d9f695a5c3be6b655e4adc769680f548df690bd0405c73b7aa635750f25cdab83fe69276264a95c7ae7a04194955fe611b25b1178c8c64c474fdb6cf9afc8c354752a6ce3056746926c7d529b7b4fee6653b2d1e0a42fdb745343a5895d5620d78aa9abe9b2131d7ea5da38188a0f2caeb969c7dc3ef51d59cff4276bb50486c488a72a4de882c1d4290e3189b4043785cbdbe866bb881f7552961255ce651940237845d1644a73946dfcbf2265986c940507a79d9a930b4d4cdf7fa7cd1bf43ed6fa0505070f5636947a00c6c414d3ca14174af4512aae3f11be337d6e28720adc0e1078bd304fc5635fc5419f8942a640f811b991a7cc213c6d80ced8fdb0d86fb267155c6553f299578365b17340bae57ae63669362149043c6eb5a813296058ffe47142a6191b101a55ad9e68cbb2df6a6b0c40ff141b3dc8781062b9d33297c5bd4940731220fda35a431ce93a6d4bb50276a71f8d8fba1ebc389b77d8ec6456124055abd90b4d5f9d332d6767b0595913cb9879bce4d648e38d0f81dad3a1911b985fc6af163481ba1fdbc957fe8431027f9305b5d950bb452e1595d021529bd01cb18035795c1da3ce8333a9c4a95e20d4808b031d8f02e639503f80f0a1ea228efd29b65ba6ae52bcb6b9999d7e1070f5abd105fbc1554b34d074aaf5dede1b00a8249e44c9fd769fcbb994563d284214989941a97b963d17e2b89891440560ad48e6954d52915338bcd32ca088fcc3e1c266f14671d709ef56f6e17012282019e937d5a7e30fc2989345b9456196701fccc6e9fe03799e12f79862597727080c9e15c1f76c4b619e1400c7707865333f11e12d83986601591c7ffd95d9c4e9ca424e12a7b5db00544f784a24ccbc139827474ad4e64c4bdee318b5e6855b0f94b282e12b6c7e985900a3b5666a81a57970423132dbf990aa85344f791c9b97f88dd21970c24566810e78e764bcc081b5a978f992f19a5115c27d5ce0bedfee18d0af94d605d159ac4870c5daf4b3b1675a0f8b302433b67f0e86b826e74ae71fb7910352059bc7255715fc041c85b4068fce7ebd97d9d6ee51b0596bcd19bdea44e04d19d8fb0193ba440027fd0244d6e08556ac16d89bb47c20e9b4b11ba604dfe515b11e627ff773010bfe72d2fe543b84465f5600b91409f9075e1b71c4d0c8842f5cb591a8301019ef777ca3307ebf96b28255bd054558334ba51733f0e778e52a341340b9c49d167aec59d0896741f87e028dc26c2f7749c251a194fc713ecf32a6c1b1d9aaf8620b18cc3863eb22558ae245c06c53b2a1b41efdae3c3ddfa938fbabb36a9bb2183a3971d19c965cd78966dd7a3392fb6395c43c064386130292acb606297a6c8e4611d57473c49b1e973f80f80036ad6d35ea1743f645186e28a6c641b9b195c01e433a859fa8c9adf27eaf2e7f5be4c38cff8afeb98d78fb79b81444b4b569af5d1fe5be0eb9e52e4882bd309edfc3339f010b1f630b2e58fe3f4f7e7aa8e3f40c218b442d1a431d691baaa919344f5718d1ad520bbc1083ceb1f2017f13f4ba250cb7287f94f4fa380c7f1bac877a89aef740b030d61e8bfc55e200dcc33de400b794d3dc599ba609fc324bc38792749e2214a77cdd82302a00bc3161382a9bb038537489f5d76d1e158f43a5b3703ba4fd76ce2fa069c70001947fb651155e44b2a24c93078a3411b8856391df7b5ff06cccc210bba4389d3c1c47d47648e215aac44efa1e9c6df9d5d90b56326db96d8ccb5a4e2a7104a8a77d4c149339513b5e40670a6b556103f4a33f12123ffff8b840ab679e054525c53ab0da5907cb9e86048fe602de7792db2f2260c7b23b0a4797ba2a9b2c880394f8ba6a45a9d5df0b229d3c3880a2358161742378d843678e8c05fe4bc751238971d00754c9c49c84dd1be19b198eb5c127d69ff6fc3084d93c795bef7d815aca44da1299fc8b80c10c2ba0453ef590d50ac8f6fff107719e6dfad70f48dffac72d0be3332a32d40165e1e0\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0280b85aa421d76ce93a91af49fe12b000485f0c7e089de9dc9f5e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cd9bada1898550c913665293e0dd11085af45f904d3de3bab30b85\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8568f9f85c5d9b27580e7492a96bbdf345a98cbaab33a2fc8130224e40242e71e4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d376035c1aed800ee680426cfb9462a2ba4f1cfbbc7a9bbbdd750f132ee48f89ef797b5d5d\"\n}\n],\n\"handshake_hash\": \"5d260b38d329985f6ae03d00d74d8ccd1b72264fe00255fb0b55c81914628d4e9e2327ee099e1a6158d00f8edf6ccfe41823e780b7ef89687dafbf2a98459158\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944d9b13570831f4a198c6d4f12c2a5528d3a1da88300838eda504a0ef3a98fd46f821b84141a0a0a4ec37db92741272a0d68ad5dd58fbeda67c3b9de73baa427499de4c370995fc587fee8dca7d8959893af525b61c261eb3b191129468f3b75f39d0f4759b4f613451a2642b18f0115a3f0ec6eb5ff787b6f03f315964e8d76dbc65c5731f6acfe53744c7bc87e10e240b9aac67f8e693adc2649aa16ae18bde10a64daf6d11e045c52d3da9b37aa273063d8acd87f7625d8ca4670df79a09f1f2664bde9ae9c7c4fa1ee8b1b78c3b6b37e61d36b1e9347dce74ce0c389ca9457476919c2548b9b7933b893d672f6ac6b42fe7bbd041f7eafe412ec852d386fa4aacc1bfad48826a612c737c1b2638e36d7b6c2c1db979fb871019927e00a5b39b1cfd19994bb77ddbf4249e43c47d1f50aa4339967b9ee128e60a0141253f0dd9186a1618ab80a61633583bee36a398b1786899a9d33a870f9799db7576b0badef3eeaa02878902c81f224a29118dba4c63f07fac64dcf9672e5bd153a802ce949807367c742a88d69c8f93c7d941b3a3ad9bd662fb6134094a51b44fc6a95e50f5e76ee700e79bb0d4d2f842e078ecf59d3a2ee81c6b6dd6ea87fbf47512f22a2d0b706dc481ec08a93697b0d6f19a761f71f8340ffa4ed03b4b439e44b5a9d719279db5da99f0b5f54be9a933be0ebb1fd61c688128cb029698d9c8506ba9e73749d52c5317c91f94372a0b07126404837a98f81f64ee9be954c7a68009d8e5211a74fdc9341e7bc7d7a648fa27c7337d866f3abc1c8453ba76f55787e334c5e5abe1479efeb38e2db00b248181f5a326f27c4d0876e616c941fe6639125e2b9f3f97883c9b4fda147898454f018fbd7bcc16673c6a84d9d9a59016671e30b009ad3278e773949f22697db4b23e4f4c78e3ac5d92ecc6c8cab0bc687d9f4ea5c343f02540de8b68a857cb9df2f3308055fe3829a3286fd016ea583dcc8f70a25ce69f029c7d5ae7768ab08415beb78921fa4bd660efe24cc62401d95068117b1663588cca72422b3b39458986c0842eb8e38f7423d21978b06dc60b32d60a9d0b0215cee8d44c1bb561d8736d3aaab19ebdb1f6eefd0f707df2c436c22568e6eb0ce835758361f30f55ed5082f521823fce5910974acde1e2cfb247fb2daef493c4573c40cb9ea163a4456a0cf6eb184f4153c8c38e01d871ea54d9a23b4cd8156b2dc5cc0e9a76acca32b247838c33e90e439887baaa568f16b259ca238966efb22e09154db69f68d16bdd3d585e7908ae0281f2183e16744dfb836efa1b54f9a0ea2d52f0755e7eb65f3e97effb461e990e2ba7483f182f545b8f47691a7e29d6a0a9098ea8677b7a2ad7c312c8913ce7c1199b9d8260f6da4590557a38ef42c61b993fb7528115677ae55c7d41217d131619aca074e45155edeea81085b2e81965702b3527c39534983616798742131fc6681d36ae3e3c1a07b31c3f4d64a586511eed2575fad9ce27e556ac403f61313a26dbb2ce1b94daa84353f17e4135e73ef00ab5acf49c1703314f5caabdbbc7df7262eb01683b0f08eca7bcd3530e39cdb96bb4d0ad53b0269a34c4ca0b9f8a3b7347eb6a464ff7251da78624887652aca65bcfea6664caea49d5641a6229a7353e3eac17b0783d7dedf457d671c15b1f968e2dcad2f36a82f2ef5eca09fcce65804021361db18ad7cafc68907ef084862571df9abef2fd4ed46da979cc1701cf39935831dd4d86b0be2fbf5a8b05a60ca888972d72777bea4eb4f7ea70a1503870a03af186cea9a9d08ef6a8d2cf0107469405275387497842951848addcc20e59e5656ccf238db048ff341855d67f1077109192bb82d33ce9d88548a5c88ad061cceab6bafd784d511f0e529ab59659c7b47d27d393c3131cff8fa7c39e914e02929119f85e6d466c7a68b286db287559d8524f24069bcd1b682700f58a7e801276f22afc80815ae73d407912e53f736875a86ccc1ab82acf27d555dc020a704e85908d9bf0385ae06c594f94ab42166068de91fc41d956b51816a3eac3d8723f30d05cc1f8944166e7b0d36b8863f27bbefb6e2f7899f18f794e13eb281edd8d8894cf84960a0d42ff6085115b3b3be2010d3c0dc99807ccb8a4ccbd64510e7a65050b49926602233445ce572e64459d6f2f8553f45f88fffd0b6704efc114de8ad0601665773a2c00d7c44272bb2c767d7370fe90f5b7a6e4cc19cb44cf5a9612224d9cf7f573f1381312de912aaabb6ac8ff5192e4c3521e9b24dbf88cf6ac65dcffa327180dd664c501188b1be8a567cd0bb7705a26ef47b8c65f304c883d03a391e7365f0c6934f79b04c92106f81ed934fb52d9e95207ea6771f2c874b12b154886bcf098b735cbaf23636f0cfb1ee7af2cec286389749d5c90ddf27bb7a6d11f6efeb28c62c5eb1e28126dbdaa58528a1651a48e4327fbaa985370c0002592a55d5fb1ec319086dfe35f2457eac8fb73ef07ccb16fb56e31518ada3c21405800ae623b3e3d29b962d56cb49d1fd8ef6e054ce7ec9ca3f839df15b33c9bd5db8d20b5e948c7dc6a23c8d24d0d5036053a3ac2d65181b00dfb31ec05a2ea5b9393ff459be5cbb0dd4776a47582dd2afdd6c285194625756363322c4d016f6ec1fab2e4f3ee8ee414283467ce91ee2b4f926eeba6312a9c48875981e07a8ab05ef4b6ba1b0c3ecc8614c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884302cd08e707762d5371c784195c006b61db43e5bf1a6e5fc9df52eaa361db3d616ed51a06992ff2190b04eb2c134f746a70b6dbeeb1ad95ece9abf2c292162064676491fe91ddceb41cf9fc80f140e3fe2942975b6b81c0a20b7d54171818a9feb51d69ee0bd0911aeb4d14addff7d3e821ef1adf30d72ae8830a6ce42279899ccc4fe14dc62dfaea96c4bd0c64258760648e2d7c797a1276062d490ad553a8574779a24e257e6d5879e821f6ffb53b00b37d2c1c53d523d8d59a748a3da6d66d2d94587235af11152d6d5b3fe06a24405a14bcbef3975f6de0d22661d43885b9e6b73a71385d847422a8b5c2fbaadf4b48caf196e09f9166cb47be8f17c89c1d9f39f3c036ccc0c567286236f339104e16e125d373e281168c922545c6493a90d891778c01abea9cce3698810f3d9caaa6d27fb01bef077b56a94be8286658e5e3c6c03f92823ea780cbd1aced4b6fcab4a23783ddd5b262f28564585f36775bc7543c0f4a8faccf57ffc07bd6db471ebf4d1c311a44d679925911683a40ab9037072bfe640d9b689f394bbdc3027017441634d73010b0a990ade90b5e185996296ce04784f333fdb328160310c41fc65f07ddd4efe15f44fea1dbca75e60bcac74c9079fd1c6817566fd54531a8a07e4e8542ca3161d6c21e32313edb56319529be3bfb5d9f15622072297c195f5a6896ceead4629a768d6e9efb64cbf323d4f944124aa2f880df9fb68568934e4d02d7b28e7184adfab6613a471d4f82f547cdb23936231bb17b0eb1035a8a848635cb33215b7c4e7051e663591a15e1368231c089dd80152669ebd2d336a6cd96937fe5964039b85396603e40a9301435bd79824376a5b647a27a76d24e5884f1ecf2dafbfaa6356e536ae5fb62d32afbc4e83fdff4e212e3fc6d9d7f9e5c0d23a52e9384706457d235a01ea4c3106009a24f96ae080a3c1357bddec60aaf70753a9a407d47a917e450a6ffc489dd4fd0dc0bd8e73674f61fb6fe5c68afcb85b8382105416e12a80d2cd67e378e396dd56b4df4b469015bbff42d5aab0cb26dedcce9f5189527c86dbb2bfc820e10e5045b91966709cf5bf7e5c06950ad9067ebb988df1434ddd85d21431643d09a449b15e97de7824b1d8fb246f44eb5c96286a511093c33f71a0f4fabebb858373dffaaf40ed0255e3131c4080a143fe2419cc29903df2d2dd2b386c16c17f37886f8f9241002063e6d26262cf3004d82953d92cfc3a19acc742c3488166f7bf4f31ef7da572b8efd18b5fd4cbdadcef75f8354a60578313f7650a69f1037ab3c85e776e879ded417823b9065b7bd2d65c5fc3495b5346a556bddaa4c83442184e7846996cb5519686223db91e1d4c37d8df5a7c9fc390fd228bc331d24a4fda478fb121016d324a7b5912885f18e583368ad6d6bc52b24b4201d1b360dc7142726108c5e8a575d9575b22b8319807bd7b5dc1d7ed652e0bbf1ab17140e28d5812a4fb249bf02ebc0da4b11b5bd04f5ba5d1bb8047c2902a3a0381704901f65ed47cf5faff41910aaf33fcc79362e0bc1723bd0195e4aecce7fe9700c2e78c792ce6d67d60607efb3567298764e050a566d65cdd3584fefe42cd753c2d4d61931ffcf94b0acb62ea5c2441aafc50b708d4b225955eb664e295aa7cfdc0e1151f99e2314ac3d8b81636cfe337a7f9231a2fbb4428d1be64edb2af8f2f72fd122a2d3ece9f7019badb2ba7bb1cee8f41a13fda7f5db90346c44e8641bec9bc76416eb3013da8aa62eb291c1e2fb5016d728b7efc8f3d843bd1663d1a0e66748d94155af2b6afd05f85b602504f19df54aa5eda5ccd1f6574225ef87e726cbf4c6ed3a26b6bb7ab8f7464daf93973d1c5c5916ed7b772b0b0d7d6f82c99b206ccb00e3f01ebdfac1c94a6a0a48eeb1159c9554224ff281d694a44682511207a170f0011a5b4a92bf2ebf86d634904a7f6158ff309f85e400c10094e1fadf0273af1a1a45ac38f388064877609cc07b8781b07ae387bb2b008640362482a4d9239546ee4d1094c4dd8fa888a7bde0f55cf8e2feda73fa97ccfdbdd93173e76aa879a6f40d3e3b129adc423f394b0b8d1b5fc3fea814a4f8a396910411db301eeb33741c32645a4a528f2a3d2ad3ec86ecebf3ea497e1771526131dac720d03bcbe2ff464feca68a6e2ad86fa2a78a9b9b2900ad2b20ca1d2b9de35a1d5b4815f5f75e7097958fdb4026e6fe6cf99300dd169d75d392c0b2b18353cfa0bece0807c5e85f17a074540d5463b5358247db3702962e184dd10c30c81051c19f063b87d2f0b9331f8e467cbe38d90c81bedf47f9d6b918cb714f2053088cc62d004f8d74538e30801cbb0ecd4e760833c540b5dc2742ef4adaee33362c888341e5b1012e259e74f2cddc89ce4af80de87fd63519fdc68bd2816783adea4a715c793fb1e22aa617a3a48c1a794dcbfbcbe094852c351329887840e0919a5d7ccab6899be82e5bd467f44d973a425b1ab792fba3ea0aa18e921fa1f4b51d65657edae392c7160e73c3776414fd4f049a947d1d4aa9250c01ec5a548830a21f7c1f2af6e0d3963257edeb11f249a9bb4eb23e10fcb7dd140794b5ff92ce5e53bddec23c366d3c6c5946a42f44b441308bc0366ada2e4a238f6ba953ebd740a0284ff93167810a131e3eb848e629bc0d778e63531c1d96f4323ae9cc5b39f55cf4c4ceb1bbb493b157875d5d4d999dcf38719a1c9dff58e715c79dc782823095b9135f9e4bead007ae918361533b9cf4b61154b4fdb1afbaece19f902a87afe1df77a7480703340549cced100ecf338f3b7b2116a6fd5aa0a155f3d9eda80b78c88faf374c1ab8a1b9884ff5bf374ffa4f982bd1aa0281d8e373b8d5c5b991f12170b3f4d8c03c5d5c12a950e59872be214f7238cb6deda8d59a3d89ec8aee5bd58f8601f5b457a31fbce12e2c80bb5a6fd2a551b639b1f7ed\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"be79b8c5409fba4d1df3956374cef0661e4283136724069283ac56\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b04f3580e43bc44c09ac7643835223df66c7ced7885a7a2067d468\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e5a73c3d0f4630b21ab0012b8caa9d613da6d93f180284b7d70383151e5ff0e5b8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e28d3802ef1f7de6474f5a13b5b853053ab265501f5fadfb29a1002d5e25c860302dc99d45\"\n}\n],\n\"handshake_hash\": \"d1ec409b6a7e8fdca3fa9eb12473bc02b564b8e85e4f5657592e994b3f27b15d\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446dd42c787da18725be34b2e85019a177e69f01d602b36d3571c96ee13aec728cb680892ea7f3689aa709493fa20b2ed6efd59ed33c6b8c2b420370df409764465190dcebf263bf571faa09edb67800e71ff57f45ef11273dc9f16b16566b30fb1d20ec1d0164bb98903ef665bbe4f68d7198c39cb423307ef46954c86aec2977d88ae8c71029349e90bba424f21f8fb6fcce95919841c3b1085ed3c47e65b5a58e12606ab0a45d42a6594d60f1a20520264396591fb82e332504ca2566c2bb0d62c66b0d670b6c3bfcec9f885528d453b84435d440ede7e472adcbf68ed304294fc64c495be859db2ed2c2454e754479307989e83270a0686178a52066c1b2651ed10ad9311e4115c28607436e768fe628c860999ed7cce2b0bce7b07f1dc65a1911971fce1a43a7f74c8f33495a68a4d9568f48e25b166273f92b3d863067b0d09de058d75006a5249ee1378a21f4d644faf9087f882b6a3efb20edcb66a6986659c996153d7652b450d9e0381a9093fe0712e0bc34977882d62857b277ae89d359d98cb4d8f0d26a75e2b55c9a5fb56c8a947409e7800751bcdb234afa2b3e3491269a39f443e8abc808621c07a9f77b1eb76e38185a9caf560bb97cb42828acc5b38d77ced62385cf223224ad89ec28ec8bd1bd00f50ba9823944c412f946d400fb730237c5733161ed943b8b8a78b0f2dd4700157d9702e6541b598741a548d1d5af04893e90b9b897fd16702f321baa10a2aa80e6373b0f06cc33e96a53071603bae4afa13e36ddd8b0e1841f1f459173ac985daaa19e3dfbba6e28ff841e81d2623d31d356ec6eecfd1f94d48ba0591f35b0abe47258aaa5a4e68577b16df4756549ac23a4ea39a8ed8696e150f12c289cee206a833ed82ad5a1c09aa49ead6018d9ec419d910140109f69b37cf50c54895bbb2a99a3456a5e026225580f6138a840f874d820f5f4110893aa83f3492ccbdeb6cb25ea0be444ffe93dda985365718cca790ba43f4f2594d1e12aab6bdd22c40787e936fd990161ff57d15ed9392195e5e61b1ff19e55b8919b3790223fae56b4b62ebf7423161e68da33f7828e0a197c0b8a8e733117d42e00f0017a5315a69e44695c73357fabd9d69a086692f529de4eb497da8df3d2b180effcbdec3ab22da371954775fc25b9cc5e9685a62a418af06c9e325253ecffef194c8413fdc382959931dc997521b60bb69dfcbb013e1e04bf646dced21008937711f34145c2f74725613a85d7a37da89ae63c98b8f85ba58bf99c0c8c17f122c4d8a095f4d119eb59719ca8ee4e5d1b008fdbc5dd76a1201119db1985a281670196ac446ecd931454b898bdf2a6d062b71e3bb0ca2ac629810bd7d7b2944931c2a8520bb6356577b8d59e580144493c238a058d30ccb86c4fd2b9a4dff36d9df4342a7745978e97407dabe4b1e42ffd3c1cc8d4d103ed889ca2319707ae6806e703d7a8ab5af7fa9973234f053f6202e2bb8d11d6f413c09833f120bbcc63aa6ccd9faaa6062dab3161a626e4e75922ab937d1dc838de8a02618c54c0d75f47cc9b3a192f4ea7dbae1b997cd8f3a383593913fa6d56260258e1f51152f46c209815a513ca5386303e8e3aaf77519a95fe43d5ec06b83c698c423407774d51e15b873f3d033dc423e6e72298292f3059ebbf33f94b383885be0a4639aadb84d71c43d81a60bb8c24ecf1accdaf8c011796e9998aad0cb3b167ddc0cfa6a14f1626290076b9e10a8893ff0402ab048ce982a1d23a129509d395d7cb5058b91c7f5b52397e6385591a6d22b5a6fb9b0a0547fcb15d15e05b9d9eaef4e98a18f73fd847bb971a9d5cf2b5e32c7dc2f12a80526034509af85602a08ca23a86f6d76aa6b1dd017cf4b0213f0da1744c51c4521342dfea88fb3d264c56f5ee2c7935c8dab1fe6903610a978c3fad04878fe692274be7ce9a4c7a5dcada37faef045103a76a5ce4f9beee9ef5d081742019be639a39e9f03810bad38371ece2f7165cafc24a09d2bda3c6b0377f9cbbf77fbe1d6ca08b26c0cb60e54286fe0021002db93ca375227a20ef9a9d84bafc96b95b329e2257a72e6091d7bb7d9569f10c16060b3e3c05b7fe7ecc8ebd5fb6a74f201e975899c46467f274878e03ec3d7995e4ccf798e375ca4d175272dc90443992f64b2438cdfabce4db40fad2e526674c942b7980c76451f7f8f41735a4a54ff241f0100f990f3879ae17abea22069f9ee93514fc868b344f26e749231308bbda49ddeafa61fc1cffa38a7719463f6a8cfdf97cf990d43580ba010d3a3a27f4a141e4d766967ac3aaccc135abd60d86e5d2653a7ccf77041cf7ff5aa36109f2478e8b4cedf5c07fbfdf11bfdf378309d6f6855b404a3e157a28d8a515d4734fa9b1a9a64a0597c6faeb8edf8b8d60980c60cab9c87245d4ffc805c2ed6ddadfc37636f51b4c2fa22eed1ffe9f9cf68aec8804adeda987f72b9f9bb9ae3891f986a6421835f5f240c8ab32be18eab1ad4270d62465cd4b4e24a5220ecd60aeef79799f5e4d368826bee4dbb4fc568978a70f167e42b35c93241790db2add1b6c6aaf7cb79b462629ff402ade2b66c818d11c9c9431754b6b0a4174179363bd499b87fe68ddc0fa9cd03ebc377ab800801d3d42beb0f6f5dbd56d57070bfd8b0f2227543768fa06f4d57edad6aa1f46e25c1f0e99c2685c025ef79cc97cd2fa19f79b32\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884384242df657b228819c751bbe03b27bec0a3c50c0dc0f92e46c35457671a94d41cb9373485b0383de020c56abd292fccd2e30aaad43f18abe49b7b30b9423d10cc9fc154b50d855cab249cdfcb2c8d482c206ee849f54d3ee8acaab676fb9f4f18a4b3486950a3e466d2e2d1194e27ab5ccb66e5939258027cd1f483b047866f14bc5d1668d2443677d3bcfddfb614850650f89a21ab058b6da0ba551b81d06930e4ad9ae38394bf58d5a3e5e7aa0d44cfbe9815ebb3964fd3e4d0779e6baff2e4f9f16f121ab3a6a65308e7600cc9b56e6c01bd84205f941e0597da07c6128e2a1aaec017bd9c9b67f1f44b16cee91683cde6f6812c8c290c18f7d2b68def02e314205b8a7d66c75af7e0804a48e000bc71ebb8d726eb1863ab92fbe4dc3066fca4f71cc6db511bca50bf2207d45a87b280cb10707a75b956f14197462656af43fc56faf0eb92effd27737e4cefc6d1f305f8d476af5eb6d2407ed0e1980e8c69ba5da75b057535e39580149c374af0961e83a3d79af16e3b17c098ed3f1b60e9f04838a34e4c7290eb2bda18f5a0b26abf29a96fb91c8b0c321aac05779105caa9d876d91ddaa26c8cc1f04a85ac0521c4c7aa6fe1eb4d7ede03c936a21c07a79af4401f073a1f4725a320b60a376ab7c7d00a42d9f25a293d74782f865ca78490033455a1f000f3387d78f96c5e1c99544c2226f132d55d558e20697f4616ba290c4c0a9b1ec0756ebb7e568c48d590ce7aae47fb47b2c6983ddfaa68a60829586b81ec3684aa175e71a70ecb349e997e16821c08b3314c1c7397ac101986c53c0ed3a81c5d3e8d78d392c9c9e0053983a5d642e3c3a4819ddf0a867cc51a437704cf0341a975ea3deb0d84957505096dfc5bff4dd6e0c598621ab930873986dea32c800fb1c22ccd5cd4841c3ee23df2440cc2b0d26b57b46f85e379f9b1d138ad75d2af6b5f04cd6d05c00103c296f2e056b4692e5e89d3a941827724db7fc2eabd3572509239926d2f83f100bbcdf8bd1c85499e7dd77f4f863f0dadb7c1c4a110f7cff61f8f91b7ea6a9c4bf998d3902077e0be2579c3af040b0a08eca47892b610d08832f2414b2c61e1b4a60e520e25872ecb2c4dd2df6de144868b35a130bdd7395a7b6c5b92241a27fdf95c6434ebe90d01527ad34eee12a67d6546c39b05e64439fdaa6a1e4ae31fdfe459950df23ed99b6d5e0016d207e470389cd7bd7594e7cc12fc8216d781d3e12a4d923acef3a3e8d9694064066cb049fa70da641cd2dfe14e78d2021d370c76322d4ec6b9cb315fa4564f854277e379d1d7247605906f361904861d9245d06b7e39fbd88a0503109ff26248049fa5af73024182aab3e414a81305a93233082526edbd0ca971ba1249fd9e49d1516e0c390b437a9079196db7d8825e9c5663a1c236051e6bdcaad77890387db0aafb927a5509c0a76f664ae2fae09222220bc14f3a03b9bad0e4fc5ba0fce9b13884f9d49f73a8b047151b9f7db32036363499402d9324164543493081bdab8a9c6125f9eae4384174ab394415b5ae78371cd5045a6599071bb332d3486398835cf00f4317026b066c55c73a9e8b1520428cd25cecb7fa5dfc48f5c8c4f35e41be582becefe73f5897557afc15d5c75581c17aebb25052203a6702fd6b0e1b63d9e191665dfbd6cb6d5ff782f65eb2199c001a75b95d3c803e06af6442d63adbf506715e7091101014702373a85b6d9d8a82218c34d4c5b659597b8ff2e5ccd4bdc4d32b2793847a13ccfba2963a86fc685fc3b1a52fef147eec947d69ec72391be212180ff01a82d1c52d008d59c111a83b09a6c10c71850e0f55db877acb7c32282023385a60bd6e608c2856a73f0fc4f5c6a0b0bfd129654a60d053226643d60860974507e65672012bc75497c202e1188a5c6c86ad0b602ebd0b06ec546e1a6b3b8128e1f6132c154736dacafd59f3d97c563a6b5a2f723694f1a5bce0bd6a139bdb2dc9afe42ba46acd1cf0fd6ba0f500537f13dec9f4b904b0c7deb62969635bf39d07b8b146efd957e5183e8364a9b2503d3dbe2f5da1189badb108ee0438bb2c597a765117ccacbb3b8485c94c749c3fc1a93cad51af6b2941c1a52bbac1a39165268e856ebd0b1a0b92c749b88d3835a2fa0b2530b5c0f0743755d58201a7a0fae9cf65ac5700d2841f3e6f2a736fb561087c7189bda8499acbeb4a6d9ffeba8abedbd803095e3113d4089af7006b1b4fee0680e81d5ec9ec023b114a9d331990de9a01f33ddabf215543161f1286ca0019e647396a83b7fcd33427b840f77cd215a9782a1a44263b21b068a131a31630cbfbe8f3282d58a390197e01ef605dd12a3b7919a26f1a22c64df51cc5414bbdb4a7ad5393769a040f86fc5f4642b20729f2df5816e10d20413ae873f843bcebe74d218a5d22117fe680076a80e5f211b46e38e1bb84080eaa93a0b69172bda4488b7def718da5f39a5d888caaf0c3c413f93ac1c03b2eee422f87409c47623002489554db8fd17c8dd4c30d225f0c8dcce4311685b81ffdcfce93c05bcda18224ae4ea678f6dd334c2edfe2a0c20cac11c10cfdd0256771a8f499b42d744b356569ee00c99efcebb06611f00f8375119c11d9db787019e89f2194f22c9a3171ebf3e0c87fc6c088f24f96aa7dd2002d9b0189f63122d2aa2c61e4c76283a1eefa7fbfdc2a3e7d578839f0080dc2333701fc373aa859d8f9fd5cb8b61bb97bbd68ece4fbdc307658d72642942549a43599dc677ff2ec8e6013f425ea86ac548ff8308871517136f2d6f0f2b42657cc22268b9921eb05e7365ad037aaf1b75a63a16907ef77ca001f423b408b9361bbe6130a39e7ad6cefb7d51971007906cc700b97fd8d6839c7a204dc9ac7d1a99990d1e86431b2f4f77379cb3b2b845db9e6d4fb464f9c236c756800df65253848d4c5d954d61783b0e1530467a66a62b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"12f79310fd37b2e5279ea3827e2e0bf14a7ab02fba9d1326311dd3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a0eb7268b533c6fb7092994b907debccd029049bbf2c464010b9a7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5331aae75e944498729401a25aea94736a818e7fe6644f5bc42b753088d7140aac\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5d1142caa68ada9151337a33d3585be4a6aaa3d7644366c416e84f583a43faf97d2e7cd16a\"\n}\n],\n\"handshake_hash\": \"2165a063d68714fc5e2a5d2c4c27692a554c6fcfe71373740fe3e6232221aaedc36457b9890dbf8aa294c26ae2263f093dca5e9077761492a838bcdcbf4125ec\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79442f2be6671080a501cf99b59eeae06b48f6e582a85664e2d21557aa987469dbe82d9d2df7106a2c7a84fc77738a09544cf99b870723e5aba8c2759b57889828d07fbe467d5f3fcbc1069313f2ac5f9d6b1d43fc808725c3461a854dbd129f161a2edb818ea63395da5ffa4a9b6494d6068f2bf3a01d8a7c94aaa76e9d6f493a16fbfef18a66e618255b12b2ae910059d20a7e935f1fb87020\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884387a0bc7d4a08b18513d85f87ab1dc85e3821c346458f72ae794fec26fcbea88c43ecc3b1a1825941529b5a104c068671571eb42c506a784cc186d7da2df06ded164ce5046008c247562b9c7ca094efb67e871c745a0a293e7cc79cfdd61b57010c18fb24be24dc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a2a8dc62c6ef061c88c9915fd907aa9c687b5bdfc6c25fe14c9a98\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"20106061e1e6b00da0aded24f95877b5056017e2cd737ad8b98a03\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5d15c54bf48d80adca185ae5e0844633de005b94c5f35631c596972c42a83e8646\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b0495903283f7ec825ee5d72e2788734634bdae6d0d9692e483f58c408101add684d01d19c\"\n}\n],\n\"handshake_hash\": \"03dfad62c8f5773bbb47e1de73517f22533ebe34990b8e02173dbb4c28a637ad\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944329a0bbf849be4f3892d9f36e5cc1f9e3751121caef31fed8b92b5c7d909e8991bfb3963be5686ca7ccfa1f40b42980ad19d716113c8f5b234060d97dd078cc77d06ad1dc71f36d927e409bc84c46f3c663b0d2d99de4ce20bf3854541c7c43d7663892a16a24a6c4c5232e16279200e86c467c14d2e7a0b2401eee8ba1e0a3182f3a51a58f61794417f8f8638e90c44edd6131b42569684\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c4d48cf4487ce0a69a08432a936ce45a033ec802f89fbee019ca330edc4cbd99e17f932d5fc6affb85d688bf39fca3b6bc9551be668353a9b29c02bd13e59c6431bbf8d01c2e86b926bc90a236c02f692d008c3314712d2aa2a4cfd1e293f6ee77e6b19065473d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"06cbedf133496ab86ac2ba1b9c7468222bd283ef4271a455953f01\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8ae965dc644ffe7ac7d3cffb275dbac309a47d50789f814e9965d9\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"0bd3ddd2392ed732bae805576ac61c0d9e403f546e6fb5d8d851ccaa9b8c6985f3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"8aef90f37d0c08254d92917b653eed8278b8653c4e10a03bf7592936a0569187e3e8135df0\"\n}\n],\n\"handshake_hash\": \"3ad91b2ea02c2ac0ea6766ca9e1123c8dc4502e24b3c4bd8375c0c263c0a5aac4c6f5f6818d8cddee5a868a6b228746b25cadd8bcf8960d55bc7dca246cb31e7\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944199634b42bfbd42d5b0e1d7c75b63cbcbc45f4d7204fc2030a5f7a13fcdfed00b7c16fd23e56805d3de6b46bfbe0b2adf48fa792258bb1998d7a61fff86d4ad3d881b3eb65817ab6aaaa46de2cdbd9677a875ea6f389957ccd2634b0ba13f0ef1bdd197187f68df59a69afaef245503ce68ddfeb58b51064ace048411ad5c9d14c94ecd2c0e64018b58780473576b86ea0f26df223077a0a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cf0d8890034986314d5413c835f2d5b543bfa7fd84473536620ca35373c35830c6ad1897ca82b823065e7a010efc8fd9868f925508656fe7217b033cafbba7e64f7ed3f1342a61c6af3e859dd7cdabfe427362c5ade8bb1d274f2a388635b26dcc6128687aacb3\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1c28bcbd49e8e00d725fb3027667f724ec4db0ea617c3f02ca75c6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"3e40b85ebd2f1e511504398e202fd3a01feaae26ed05767e629743\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"799921bebf53376d4d8bf9e939668c311f4d1a5f597aff1f0b9859485ca0506650\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5a4a93ec49d4834839208fbfa191ac53751375e73a6005a49640c0fb453d80c574fb165be7\"\n}\n],\n\"handshake_hash\": \"d3bfb8ddceabf27c6806e0cf219b6ba31c4eb05e0bf7ae416c86361c89bab5bf\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448e529b61d68ff584e1000da1afed968db5d0b8431cc922b09ce6c4b9f164f3510683016034ab958ddce091430eaa173e2a04b33326f409d1e10c45596c87a817ede43368836c6f1f8f0c63b04a3cd59da45b30477591e2b7a1e616976f32fa89a663b01ac090c89a2de25d2d72ef5265fd528c9e5d457b68f367708848130ee095f7c1d9564b74c165a4c20b8208ec2d72ebbef859c76610\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843e0e8f62f17199e6c2e8e9e9025500f01f20b441d0e7c8dc4a8ff0a77b1edcffd2eac97e985c776e82ef2062b1dbdd8bd21f1c3b02ecfea225f08b4629bb6047529bc1fc2298178c79caa80d44936cfe80e89d026acb13efbea51f57659e4c3ce757f8c2baca3f1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d6df1f2b8001d6bdc9234ac4801387574d8d71f4d9919596a802ac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c605dedb62be692695cdf9ca65248fb1c9967b34148ce57596ae80\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"40a1fd61e66f5cfd337562b3ebc7c1de99399d13c91483050655a76e75a816f28c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f0b3adc8102ab58cdd65f391b7022f8b11ec109546fe4badf29be88e8bdc2fe1e9abab8539\"\n}\n],\n\"handshake_hash\": \"d047e1f7083a632b41dafa3804f4be9c9fcbddc1c851505f0c9b87ac99c59e8e04d7a82d3a8fb1b2815852f2fa8ad636b818917ec00412ded4ce6e0c67c78cc5\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944db98428a933bf098cf3d494550964f81491daa2b0f72946ed36d8a96b935ccdf77fd43a0c17432831db3f62e2d48d49235a7e9043886fd2284b703f60e0097b3c3ec27fafcd3882fac07ce133a01592b905740e12b82419e641cc2824c44e6cd9a0040312548d37df507d133c895c1e8702348c3aade07a36f5d47e3cf0749a3ccccfeb0c5900c345630ad6625eae8df1ac95e299de491f97a660952aaa74d8a8ee4f909c6ebd3b2bf2a441ddd359e6716c004d25a28833b9f4829416c8d77631c8bcac786358fdddebdddda7b5c82589bb9003a134f9f4967059008f4b3010a5fda041a8b1db1073cf4e81bd635016c8dfae9b5189cc05c94712f5cc13537d097e6806339293eb62609bd737a40bac779811e457daef603c836a2c880fdc5b034c5a83e53f94b50aeb2fb1c950652ff2aa0d58157fa36a6b2401db586caefcc3ea46f7be234bf0ec12fe04b70724039e1af4aef68549333881192da102d9b140ef462d80411d319f6a9600eb49990b8b67186e81607d364bddad10f0470ade1fd3bdfe36c8931c2a977a9739a56195b6f30f38e86c04931530dc49ab7ad7f84636872e3736094ca328c7ddeb8e09e59628994bc289b1880e9b456b7a4a0fb25d6f2a1651bb3fe27db163efc178195379e4a9aa86f71fe1e56d1d5bb658471ee5e9d0b6c88b8b28a930e241514267b283216ce7944a9e4c6702557e3e1dd59c84dc0461a9926e5c6fe4be25b43060436fcceb6e1706be89183bc97cf38ff71633fa0f9841bffd0945a7534ae93120b6428eb9325b79912f426c49f1dcec53244938fa970a92c199a0dd1ac5af0e5740a22ab5df31da86796a8adc74755036544b61ad7bf5d06b4d5b964647c881aef398f5f932e3a95f2205312f4cd608830e70574c554fc3228172e0ea4650208bc960da6223befdf975f335210c3a622f10765e9985e28fe71c2b240a56c8e5431fdab82ddc79e76a1da5e99f41b9ce07febc7ac4190bbb32cba75da03a2d093df6e69876a6a4932b11cd18235614191e1d0dbac90eade5ddfd4c00d6bff8b91bb671404c342e3b4150362fc26b1030a57da1fdba5c0891f6e26f0faabbb277be18eadf01c4022b3fe0efb52e1ec4a6b45039c4e1da81efaba939433c0c59145efff2880a79d36cac8c45348db3345b1e96b2d654f523670d4654902d5bc840f2d23c6b520138881ac4d8fa146cca3f4313ea2ea7ce123ffbaa098bf5c6337983c76196616a4d67453e214489bfd1f314a7b7cd66361a38883821fef10686b55a7d0ed84cca1ed0fb077e658aa436adf69ca85dfe2d377e6463686710035f302a7e78c6a8c88cea8e195070a7ae9368b491764c4bb24a6d16ffb82dda77e82ad8fd62b1b409b14d8d89ee326e068f32b0a4857f3312af03440881ebad54c82b969209b7a1582862f70d883d1de0f55a9e2230ab761c58ec499a8661997f72930b6f6e587bd0e55143e84676a1bbb2df681b08683ff2e9031fbe0358f4f59aaeec44cc1ed9c5056104c45fe79f1e65f3d94a0dd186c793b4c0454a7317aae5f187d49bfff08f7b4bdc8173ac96fd6aaa33bfd439d09c482657e7f91140b1ab34871e62fc4ed726bd48487d96d72c12a6b10780dd3f3f0cc90f2280e8230f6ae796511a9d2aed235c3743052df989449f782470b11e8a9283c5537c242b6715cd8fb2ca9a43911a227182b8456f62bdffceea74490eb5b01e203913e3d8b13f5919372b771b2f8e94f849df429dfc060ff97c88bb331bb53a70e456368066cbaad0f13249351bcdf964b62076fff5ff957aa7e7ad4bb6134cbdd18d439b22de70b62c7c21ef1206f20b3134770abe7c867b92315d50ad61a57038f15d97f1421dc2f13fdd304cc9b45f9a52bab88586b48f4ec7bfe14d539837cf4fb630960665d7abf5ecd6b7c676c1f173a15f7b0eeb9fcbb3e3d4ba7d8c2d56eeb37ef1c5fd74c2a50fe8f131ee3c96aea861713f3ebfc4ffe974b3df5d8a1a38c437d1932eabfdac067e34d867a9671b55dcbc75a77934ef76fd88a6f3e679050e0596f1fcea85df4445652120ed1da79fa612740494a3690e747e73108a52f343015f58bb08ebce78664d6ef2ad815eb21b57cb9bd726f55df6ad0914d0182ebf9aafc0e24e947b4b5af7655baf18207d3ae10edb26aa3bab701d81b5c46c4e86192ef236ab08a1af838231d54d8d6c6ad8a2f93e34f394b8b89d83d9b511b5f654cf0ffab507b275d849d257801d9621b576dc0e3a1a3475ac38accd0515b665911301ccfa1ba75fc966c54099c550c327d4e8b37f7e3f7b0f3c7cd91244a3e731d344bce24e0a90e36152f32a149bc7ba1e7e28f301e9ba1d298eb31fb26ddca0fdc284a79570ba85bfdb4bc62a05bcd40c2cea5b29486a14fd4611868d172c7e027a8f80333aca1d7453ba99806784d117443eb1032361de043f29ca212cfada1df15cb22869921f94093378f52446db431589cbfab6df0fd9c322a3f89f8a5836faad861e55c07cdaaf37abbfad45fa0edc67543570d71af6fd40922111c1b75a6f996d40a843510228944e722c10e39438b1d1d91af3b3f4a60ba8da615e44cbc6fc2aeb296fed620262def0463a5404b71ae7dd6878f40d5bbf5768107276bccc73fcf8f37301d79e5b3a2ddd37cef4b59ec20712843e2941cc8d394aebe5abc7fb525354c0fdcdeb0924f59f77efceccb2c30de\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884374d739917dc63c9f70e56c910b3afe9d86afafef88b587f881b80aeb9e1aabf45457722c9adfab1d781c4b9643a120c1c5be14f6f081163339a3519c1ebc6a585462546d04eac04bc7e8403e912cb9cae8207c4e58e7dd64dcd0c7d8dbe271950042eb761294987ec085ed118e8825899745bde1d7cfc73ab3bec8cb410b796023c6ea5e56f508226e43982e276ca02209087e8bcd41e676f8686b406d10089cd9807357a0eb2a663761ec5dccff73a04badcd76808156fa89f934d8a11b8959baa29fe64d11390d038038c8d31ee4cf6fedf40f613e868444b74f536dd7301ab99e2a3464cd25865551deeb1a1b5f890513a24da9b95a60e53895227dfc8b1f7ab06037e881c2604fe5cc8a5077b7bffc3167181cf7e19c82364f7fe0ea4d1ce64d83b9b1e768f955d6348a7a77b34b6c359a9cda020c1bc4a7afff54b3fe6063288f798703826d255aa33da71ebf5a4829d48eedc62b27f121102cc3d2b3e7952e9c5ac497cd9a05ea4077c79e01f2d6424ad6f6112a3092487bbd4d52c2881a3cf1ad3c20ae112dcc4eca0a79e21a32ba2baf02d633ee8ea61ae312d506520a5a93a96a092647f588bf27e68171f647108bdfe2d4e2f1122cfbba1fae98c7ab25c5fbcbeac600f4c6a2c100bd5cf94ac292015d167483cc128bae50a4e4d1d20c60c1b8c9304f3bd5a18e0fb6711750f97da89729b5ccc4caddedc801597b29558a0ef110b5e93bc0a45fae62b82ceee4f55994a11762b53f520de1a7c154f1c60a1875e5e71778d284a9217df12684597b1ca0361cf8c67ffe57e56657b7c51f6513993fe1752cd65537655ed2ed10c01ee14c3a192583075860793d2101c85f9fbb14b82b0a7c8f5513ce2695d95f8718066b7590adbf006b2fccf5a14aba82ddff3f2c74837a8517a8e38463d15c58495f5c81770a2b1ca1d161cee818b4b59e0989187e973fd06706c02c8360b6de8b9027f712b32405bbf3a834cddbd2265a8a4a0061783f3bd2ec1b8230208d3f3906036e98857b7337a88a17e77082432faedc15314b8c484e6e9e3ebc72b7ba14ee2f699fb93e80c4e732026524c89b2e061e61b068db6a150e59498fa8c55dbce71d953f83bf21f29dd7a3218f80099b1b6f032bf9f4ec450f7916eaaa1d50e2b79f2e396f64ddfb564f945b51c60f7b83466e72f534c8f5c835b0bf501cd02fae3000a17782f93bc6ab811a9166a48441f3fdd876287979ee5e78988ca5adf6d1a23d7fde688d517e361709851c615db7487f0d2873910c35d6b0b3fdca7699c72fe10b1d07b41d9bdd2088fbc8c45248939cb737d8462255fd48ec620f3484d950844d28a68e68f7b53eb9e4119d40f8c0f03d5ad661e3517075c7e4a70187ae0eb5593afafeecb3522328b39a59d0d1d43278d18fd8bae3b4d26243c040073371c0ccde056e31af4efd321eae64c8918e970b34ed75e858e5e34d179cb66380967896c7fc45d88ea66d185ba262dd1ef2bb9fb6698ae7015824ef1768e986dd2bb8914a3ca7fe19073bbe4bbd7767809ebc3839ed285ce0e0a25ad739312ac1c22adaf8cfdd6cc0e48bb7bdbcb4a537077b303cb83ea79a4021c9aa167c23f44a4aca915b23a71bad20a326b0fcac09c535a43173b77afa810cb31fa034cdbd51ab5de1b40143001a6ac01f3b5fb6ded2e322e262795167b325e68a2c88df5c0eca865f0455e83a355c1c3c72d5bec940dc316ce9ee3e44f46291979f24f53957759c451732940368988cbd9fbac5f894377d0a7053a76fdc9208eb657e5ede79d91c80094c24ae3d38858356217e9ba5815eb73d1cabe937451cdae3c5810bb539030c0e198fdd05bed63c76d8d7966a65eefa2d1ee7e2a1adff638a1f940907ad3f74bacc2ad286afa803a5954c937a157491d8e0d2ea852eca2f019272d9861c385bdad96a882074461897c5ed1d824faa23921b8558716fcde3cd59bbb6e4c9628f8d06d4a1d88c903c515e264b3119dd2fdaba4f02fee978e5132a4c06f3be5e247f94297a425394c021a348dba01ecf44fbc84db7d9733d9e39aa91948eb28933df20c59093dcd554e1441ab931eceed0adc3be6259fefd7a9a852d0fd1c216540006e0bc2720e50458eb6f49a1928007245d36ae515ba6b9a511b89d79b88434600ef7458518b2b8d6a9e0bbfa07a8f69a6b26592ade12e901a31fecca60d8ef308245feb89ee7b4d12320431b9d88d43e38f6e057fc86d9f716cb8e4eb3d0345d3c640fa7441daa2ec328306d87f1ba635af20f836f34c2840c3216c43bf41524c28b5432910328d60cb7f471369a62b3e789e14d828cb4e321152e45c1cbe781b4b95a35e8197341ec5728bdb87158215d7dada083511475c3335ff4cd51094a76d5dfc4f1b6ae413764f4d7bb71dc77501b8404b67e447d996b3297cccefaf1b7346a334d6253e1a9c2d2523463a0310130b7bf4b32c53675955b3a80a6e872e268180db12ca87db3e72b55bba0c0c273411bc35a3eaf46e0cc3ca958b6783a7a83b15816eb75b83d603cebc1a11d80cfb179cc7ab29051b551960d2f21ae4d89e8dcb45e55a96dae341357e7a32f9d4cb67b6d498ee3ccf9b504c9e6652a72058ccce0b5b3a4396f3182f7d738fa60a42ef2835647836a76f2a16fd010871adfa3b06ff1d7f3e8717ce35a2f4a1deceea1f3b5230bbecfe144660fe4f67104859b583b8f91322078d4b6118005bfe053e0b6252df9c2ca925294b61b5085301cddce023d789c975b9233e5e6dc2a4c2f27a10f1c1342dd1ef9e61f900265d076bdeacb6fc354bd2706eedbb918c28cd576e9e0f2e82c1be05b152f0a30fd607469bdce58b1c071ea21c23a9249bb31ec65aef000a3635fc157cf7cefcdc6a4eeba21744cdf015b1b1834658a03932cf8df1c5cf75f8b1e04364d0ed56de89a9ce048d82b68ddf6aa19e61e0d5fa32bf98d993b0469\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f8553866873190ab85fabde1d7e8ce8825a035c96563875ed16c02\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2ff93f574eafb498a0810713c4aa3699cf7cca4ba2bd61fb990441\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d346ea874fba108635038d5fbb854ecf2c8d5d2b1a4268d6c71407dc97f8562b50\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e06d1a75255a126d1a304013d7554e402f44cb0b930ea32861119e73631dc9a76b9f5ca3b1\"\n}\n],\n\"handshake_hash\": \"489e7aa790618df5eb1497f2ddf6fe8e88890fd1542f6dd4fd7976e6826af172\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794426677ae541f6e55c08d72141889a367f8c7d397375654a94197dd775688207318300b06df8aa62b47df25bca8842afb43eafb6e9e47a3f9eb19648d49dccb3fc41b10838158bf8c0f7f1698cd8aea4aa4d67e99fda3eb2dbefdd5115e3b42cf704af0ddb50cc699f26e8b874a58616c6da258a80c16bc1264700683258c08ad126d2ee4b48ca9028c99f68fdc5698619718e8fd0d98048b0a8d17a516bc561d5a4076c5dc0fc303e9366fa7a32575d8704e0ca987afe8e658d587ba18fadfbfbd30c8a09a2cfc6a1a74ce6e7cf0c000137ce391515ccbc03d081556005c800b20af0ca004f135201b39ce2040ff9217cf417d63935a74f779ca43e402ecf997d1c071d8d463bdf1b594e2106153dd53393047d3445405df704db6a9ed5bf43874f199c8b89447059e1c1273cf9587672668232e6dc8023b292aa3421a5f947ae51c8f9093c0f1eb0bfd9ec2881bafb5f484a1dfdbc5571862fcdcb62f2027f1e80f68acaab18123a2994e3c05ad1cf92b21c3a2e4d2a0e805f7b6ddbf38c23fc8c46433967280542e1b4d0f5dcc606b02eabbb1ed9dd256898c6bf96c46bfd6d7c8f64a182bd9d450f6d84ac413e05cbaeb65d1766e256e312c9e4a8570ae7a1da5944b90c9e2213b73bf21db6a88bf639622bbc8f0dfa7b154a7f31c50a0edb204bf0c654b2f5ea94378be1d801e7c2e6305d047b51f14dc09a8189cde278fdafd2d941d03e511769856a65db0b7c3710f3dbf7824a56889be373877638f282a4c9c8dd76b706638e5376d4dc0f554b32edc28b4d6a59b219936e6e53c383462c05601fc3d3d03ce3096781ef2f26fc5b0eec473e61478f9f7de21ad1e878c69a423f60f1cd41448177726a312058316603f04ec2b9ab0794afb501c8b8dcb73c2d5026829b5ce8946b24d699f0b320418872ce79730dfe8f59207cef3284bfc60dd6fb1b552c38cda40d50329756c3118d1fe0d60b0ddae5706085a705f7f0b45fa3c0f426b5b2a31904b3bb6472404ba565a233991f531c002d45c9054b6f00e41934471ee550f579ac0d38b142aaeb8a605631884074ce906ec26d92b521791872b6602c14e133a1de55d6c0df708c979f3ec255756ab390c0643f0642b64c06bd2472ce91ade840d6979f94d06fc833ca210b8a56b5e3b009a4a496c4c64d555e3b7be22b361eaf3e63972a0a017bb81c0b4282088d3ab5576ac5f7de3bec9d72ad7a5ca9c12b5b894d2be191527e9541c413bc94802e2344b5de2e4f29d168c8a36aad8cc1021ea92346e46ebbf63da08f61a6309a5a4484dcf0c21bdebbc50c433a8a1479143dd8bdb394c6aebefc4f13a52ab58d819998fdec698902ae6b12e00e041080a0dd2cf899e8e1903cf1bd355dec7d074229a9a5f9d2e036edcc5fc121a21b481d8799d4983dba241f428153c29fe632f6a80c9cfc05bfcdc5ffa4d247621d8d652fc81dce9ad6be2fbc0654b1bed8eac974660899b350ebdb20b348f5028d07b2675df92519c21ef7b98f219b8f9a2cd480cb86219cb8ba259506b2bea46963ef1f0813a24eb19cf3c4be1c9b3f51539293f8cfbf555d787283f3f18f76c8e8cd6a42f499243f1da046a4dfe4949f22a528945f9e824029821e28ce539c5d59b1b7cdb18e839459b1a8fe18bd9bb4e099d320278af6d7f8d5e76b97580ec5ea304d104ac83ffce5f28eab8364f20984007c023cd2ed8d2f7e19306e5ffdff5e23dfefa3ebd77b3e2ac0905ba355b907ba968154abeaf5752dcd9d0db8354d4cac243e1a3a1b6620c8100ca54d24824716518277177a65a924ca59ba401a337235146db3be45a3cb392db72b84742b206b8be13e5f58ff9f624729ef88e73bc3cad05a13287a1111a209f12f81bdeb19e6843d0edb0d131cd587d023dfdb3f9ee4de6807ef4a7cc6801c3fd461935f24d5ad471ed50b57149e0b4312ffe9a1a26f8608c3e96798eacc3538ca796494b8ea8114e36f7a82f02baee2b0ea3a0a009e3af2c4096c2903b3985083967cd5330c51455c1660196c59bf183aaa064aacc95b42b4b6eb0adf04d5f1272ce5f62f5435b4ab6ce8076165262b39ccd6cea4aa494e8e06fa0645a466be843c79b314eb0a6168d458fd4a811250a9d9bf310f4d7cbf78b8d0a2a50a68444ab758181125ef498ed3d8f5027c35687915fd9912eb7579556eba5ea8a2de5841ce380f035884cef512477bd1283fedb3e0eb8f580a6e60f3e64cc190743d1aa940d683d34bb265c28eb5341cb80067775112e2f219f4773b1242f80bfeb621d9cddeb13ef8eb7f614e40a501376f2565fd764f38d2b3feb3ac82a5b292181c3aed75194001c07d627d989c46a0abb3b10730a145f431914d8b432e260c3b03c1ce46170119d9b494350c9eb9ae15421d4565b309e0669d89f150bee79fc3df84318aa45fe5ff236b5d40ee602c2827df20769752e7cc903770d6a865e474500fc7a59b278b42cc3fd074cfb6b9bc000619840647bb49b8084340edb09274a328a0f17289e5b60dbe896de072c5cf49b0f8e7a28ed263cd66d21e9120b3cc5cf387c5da91a14e12e2faa08b0311d687155d8d32eb544e4ffa4b0c478bcd24f94f9aafe2c5a4060d1f0f81934e5a952a4f2eb6d1831611008b170bd3689978854c50d215575ae91e20075cda8bc8a155b97fcc85a42f242e78a3e60fd89f1ed190eb7464a9771c016cc5707616\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843dae131fffbaafccef919b101fd30e9dcd13829fc00e193bcef1afdc5af3c9480f3f56594b5016039e4d18900455ceee9a911c14e799a22f1834fda61fb40b97d4d2048764991455f6ee3873090a9dc8439b71b39e04c372bcedc5d02414ee66581aa4e758b923aa1364a19c757552920970b8115d1ba9be973ca99b4c178119c35014fe60756e4dac7cd3c914c70a97acd3971460c539197d0c42c677e1928636c690f6c265f949c47a36deba63303dd59e43fdc8388b4700558b16d5d4b9481cf59b2515cf29c0dbe56a7b1b58c4a14cc528e62b0118e390abc935e943a79bfc405c06b75adae909ef2b7f76c4f9cf5a6faf77e55f6c7981ae817ea73ea37e72c8f2c7544200c157d142d7b811318ac55dd02a39691b548bdce9e6d43671d0ad42b509c6cf35e163b3ffc89bd59cdf5c8c2bcdb4e31b6a345c0e689493026682c6d9ce5855b8ae25a90cd7da6ec05a63ffa116e57d6fc5048cddb0ed9455cafd5c4f32a51a4c4478bde78c596a8697979402486ccbb93df6d89d16fa8c6265e4e01d9001b1c3b74e058502138cc02bf8112ba9734d3ca764badc4bec61f4e26cbc92e507788f9fb6bec807cfbf3431a9cd4a05a3ba8571e36965229ae7d2804c4b8d488704f171d176f3530c151079f4f3de7bf1adddc9b786f38375354a8cc9b3a31e7782fa3f3245bbb03e9f848ddd1c9e4c045fd49871e78776089decfc4d428574e5873a7b8477d78d596ec707b4e13090a5b55738231bbe44582b6eec427ac51e53dacac1ed2c52ddda6f3eb37804f3c37979a49c2ba5f93396a1d1d8cd30dd56ca27d2d8c0733e6f697d7d07f158ed4c6665bfecf6a56a80db4a4d3f2d21e85c4f60bfb4914db5cb4a30cb82d967edf277daf054ce601a5036ac5f81256ad692b61657ca8589378184122000c947d50b37ed62209284e0cab74e9131293c85a428ee85c2ebc7b42e5605b7395211247bc8352993cb69210641250ae7e10f68e60ef11a8798583b93cde48d5c63df1a1d23d40303cd39cebed3c7263666a6c53dc7fbfeeba596cf4a6a0acd0450c3133c452808cb44f594b0b026ddab593035772ee76e42fdc959ff497c444ac30b421fc3a9dd14eeb6b3520e2c28aa8aa75f95dbf316c862511121b021fb82a29e96a5dab3d776386490c26b1fb005cf7581873f4ee44f19cf1cbc2ecbaec9f39e13d2c6ca785a8335232f8c6b265c8aca28cdd56198757629e6b27729ff15c44d3eab78a82a0e05ffbe262673023bed876ca43c317e9f83e81b0ec866ab18801d0dfe9c3198dd84d8f01f8481aa1ffeccd7a5aefac4b0df4690ff9281670634d5cce7b9feb15d5cd69ee056c34d76df9dec333812081c7940e26fece545922098971f97db67524d168ba901554df1923af33ae46964f50b7e3cf1073f6a5a7a5164b4efbeac67a37089a6b516ef83a23ff1234cb6f352d056144ebe6a9e822b09fba7593f5a090db00421c67fed4b47ac441a0a0953134fb867e86e8049bc5d49564c52c23edb4ef19187b54b9e5a43394cfc2db369831d4e49362fef9040393a88e118512feffb39dc09e6605f71a6ee190c29192a43db28429e9309c61e39face4bd426f016c646b576a7cb421140cdeb241d91c76e983e8b287db30f0e3e6d54baa46d57f6c8ae9ff6fad5b219280058d0db76951d77867c78fc6a1c154c5da2188c0f8610707af9c477aa09f39e1877cfea0f9ba0e5e48626b5ce656d98cbbc821d3a0e41db73b060c1db959459d351c57c4e9502daf585fc0342f474b98246ea1127c852d0d92ba4bbd5160fb2f7a8c300dd71e1be1ff86dc4e8fd226a755d1c3b99e6a19477ba39e64a4069d66be292fea6dfdb4168ae79889a3a989c02b826d4d8d7c17e6c5298087c8985cc36e6461adfb278a1afee78cd9b5a76ef7ce3d247e3ba2f7ca3c9716fc2b50dd15280b5fdb6be10143df8427832d2f4a3ba73e148a399aef0ae2eb576700ad7c38252a043e2a4c5488668b5d35d29232d5e48273d6c8ce6cfe3fb31888e9624b75c1c0cdc37b5824e7024722bc3cd86ce9e4e956009f42778e0c65d6d62aa8a37313b8190be4ed2669816aa1c2bb3d5c288a1536e89949519b81a3d1f078482227d8eab88a53a7c04a20b524fcca872bb161b56f716853cb16dc824cd9bb9b3f537b94741ae16a66761197c394f3ba55fea1bfcf48703c5ddf3637e0068fc5062c00044de79a0943cc631751b8873b0042df8f55eb1280369ee1bd932520b84ded859b229dff221df9cb75b028168ad7f4d63c555bc763f144128b1048ce5bd7313f91868e91262e5a7db59449c10223aee64f41f978b24ed7c1638e21a57ef097d39b88a3b49dcb3fbe223aeece061766555ed39f47fd4c4506f54291ef8d77efcb8eec7ac23484bfc155e6c7ed85567bbafd7b4e615fb92fc1dd99e722eff48adf86909b114a2c2922d1325a4dc4a8eb1642d47e32ab38ef0ed7b3d46315140a302e49e056b590caf6e2d361557f66aa4c3639337c345165f07f899843469624bd0ffed3baab8e2c26adeb1f185db7c6db6723aa86c9602ff889822d6a62d2873566afc5787ca7fba92fffa6476a124fb1a9910e96d433aeaa12f771be98cab1fa38a7fb296a6bb2698add650a81128a9820a86ce6f830f1269b69aae6dabe4ecd481eaae41561adc304cbb5962b1f5933c5a3581d704ed9ec82e5afc0d9cdb911a0860377984ec373c4fcf8e52f12e18af5a137453bcf278802856382c5a4cded2273658ebc7e1ef4e93058db553b6762799f989d40efff96aaae442a7a0dcfd47562660ee15094bb331c69ce7146996f44d337abebb03b7c9bef93dcbee36ee884addb883857e2a4f86e3f25238c03928c8d46c57f4b03377e1c5fb62c2259ee6b6e0a5d064199fa3012fdac29c08b75d2e12e0ac0acca9cfe5f66c654f341979fb31b0e1026c907fa3ad4ef04\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c85c180926af310f536ff233d77003098300e8688c21a085c4e2a6\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"82ca2f44bc20b83d68d63b86eb2c18eed227a3029ee2d05fe1c314\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"75b13ddddf4e5f7089d0014272f8f8fa234a41b8b5f8055271527f036d7811a7c1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"071f4882272865c6e8a8e20bcc6013289de31ba290245e129280de6f3b69c0e2f1fd28ea22\"\n}\n],\n\"handshake_hash\": \"8ca8bd4ee464e3a4045b6c81112f1c5d6b708fe3aedd6c93175fe23761da34c678b42cf86d7dfbc363610a9e518066e94a02348ea089e5ec2eae84693ae4fe17\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ce81524b16283f68015a81e35ee8f4afb2fec1ba725a2be61b82843a0990b764da834b0a8e874f6ea4e98463c2bf75ca33af00ea17b6dc93726b7c6308e6648f6dc021b26ed3eee5c8358fe760d7e3b67875ad792ce5aa6175edbea4ad33f43bf23a6065a7880c3dc58d289247035d57136a24428827266350b1fdc95d48fad66b43e61b589bfde358149633bf510d425a49ed5401bfc28c94b7b82a72e4bbc483e50df6b0e054c747eb1b0e5093295d10968bb10759c15417c9c4d02ebe2bc4f387a7458ef7137ea0291db5cd811f039653f20525054592341fba4281747234c50910af5df165d742a3bd754d5842cfd13ee8ce7a2a8f7ad563a0aa83c22afc19add73dd39832f9302e8d423fa5387bb3ad7578f2cfa267f951f4c15ce9cef4a0d5d6de6992fcbd27a00b9c380bd42db921f0052f99b80021985823866cfba37022bfdb33a1e5e5a56932cd3230bc0a8476d849bf023ed208171118020994a70d70fc7e198ac728c2c9f15ae54704d3265439c29cf0276090c5c79d7eaa77c900cc3978fc8b1b6485efa1ac1ec97eb4b19ed5126e515351fd33da2f8568b2681a42e6088b6e6ca88a6292b7fe63eee907c778880853649ab3def372233d03b1f06d20e37e789173b4b3584a5230b7119a701f93837f802e716b0c347fcd942ef7665a7505a7ceca06a095f3772d0f87826f7c8e06b5aa9b22b9e52bb48200f07bfb0a6af2a3c9e0b0d8a70eaab9f131e10b88d17cd1608f7ea77fbea3ca61f4f6c8679f6b5f047987571eebc9dacd45c079eec1e63fd0c001bccfae89471d27bc0429fc9baa5631e2ffecd7c080ceac844ed4a0bb1ea4c33878bc56cee09f04bb9f3bf7bb30fbaf3674b35d477bcc5e9adfa8d503ff2d73d07414d0cd1051e7fa176d392414d40d00b5cfcc0331d9ad0ad35bf65c2f8338ec0d1247a554818778d7cd28cf79442ae3fddc3878ba079445b7c153bce9a44f711e3367a7eca586c0a549e31424398003574444cdeaa98529777fb5a4934ccbc18ec2a2691eb9c1ba697231b4987c4a32c62893f28b3c042a47077ebc53f43322853fe5ca40a450c90f4359b705c29fb89633d6f673b04e4b0d88095d500289304906a42388f20705fd7a9be56dc759a78573d6cc799e512f995bc51b84accc2e9a019464f926fdffe088f88dc2b5db2b46935eb7465b31b33c0bb37b466f9250d96c7f629cca8b5f1882e04942ac125d1684e6fee976559e4cf0a9fd2cd4a9a2ac337904bcb2e3d70994af5fb0a192ddedf03c0dde24c9f45285dcd447062f04a25a8dba46a518dcec096c15c232c2f6c125dfc9b683c60b5bfdff9ca2226ac3af1e0392520bb229d17979b87972c0699ea51cf258b8a8e4d8962743c78a29e7b3bb1aef3d56ddbb539e82c2d3d416dbfd0d204f3fed99c68f38f6e2199e632781e5a29b7e7018ee94e6a82b650f861a17375578eb79d481e23d7f5ed9828e766b6dd793a439db4729ec0c06ba41e21d822caae7315baadcf0569fd52297e255e21315aaaaf98352add61d9a33af00b66f34ad7892659d7d28f28ab091e6910ba755174d3754f82d03b8a57122733e006a6cf18d959ce3c0801ab1800698b5a41387fe75f60b267de41a201d4b087903efc0ebc5a73d3723593b1c1d318acd31e45781641ef8ad1e02b5212c9c711940552127bb482bf889f2c4a03843a8c73e698ae60bcc35344461cefedac02e79a98ac2207917a521e95ec1b4658ba7b47f5bd80f21df00345a69341b281d0cabcab513db27888030195f0f59b5d3f48654637f334581567ea038773616a2be556c533d9216c048a81cae2e25967065705a2cd20856b6a68e8d2bd7bc3b3fd3076c04135db54478fe8fc9c5c16a828e6590eb28e2b323df325211ba946e136dc95d43a9f3764c0171ecea326abb36b11c0bb4f4163ecf444f8bccc5b0b3303e1e5d176996529ce18d8f832985079a0fc8d50a8e32109d475c926790273ba2a2d77e4f1326efadd2a490f24b76d3de59b877ab490802490f80318654c0f373d841ad29d3dcdd625d78c347d196b5ef64b3a69644c27e8dfe9c2c7d6c370fc13e0fbb1863e4c8becd9456f961258a45cb27c2c795e3c08431cb047247fef3bebc70d9a54127e8bc0d6e63b828059a6e0228b732d1f52756d688f5db40d65e095e8f6f2fa39ecc6d6d967e882e605ce8842f97de6d77ba448cd74e519fb4641500df8b20eeec9286d296c2874f1417568fe218baafc29527c6b71375a7cb571d9cb4de0355f1744ecd7ecd7c3e6bf741654e5e126683db32bfe11b7af78c264b219d7265d398b5df574513a81c805e1e151d8afba6258e5bef672b5941c787288a1d6ad1ab975008dda71c2454cf919dd365e8482d7ec65320e58d5952449c17544910368f50e23a225b7ccc4a225feb54b44af668c2a23c2cf4bbd7d5ebe203a871f7f857d3c60cbae927afc1ef4372b9cb8515829439b42b119257c6b92310ce6f0dfe6c580319722f60389688b485de3d8bab42a9ea82b9c80f4e778e51d9d4600b5cda7a6ca4d9bd675dc929ec7a8041ced6ef97d37240447fd80e7e968f51b62ce2d81503350c15363d63b342619bb17247aec7d0685f956732ceff5c4ae75eda86220b9232caca11a358738d752d6bb8c5a5489c26c3ec84cf679cddaf46e4ff870782cc9d89d2d273c3a8dd42242f54ae589ecba188a5\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884301533d41204338f4cc06692c0a999536810238ec3aa006f5df20a3f54412edcffebb971f8ea2fee14575b6e185f16c26e1f3bdf20079d7f71f55e04e068c898544249d4d5e5c130f5ae9dc4a452246b5a7a18b72f9e11fa89a0ce8b91e1316d1180bb5eb61ab1edb324d14a77a7b1504d18b36f9d98690091e817f79d718d5021e03c231daf649b8a626fff95adda75758165fee7ed14a6845bec62f313ac1e5eef773134362de35f96b677ef87f666f59197eae18d287e6dbdefa72ae6bbb09a024f7efe6da465c617379b40ec0609b70a4878b29e18525bafd3a00858a5f4ba4428f04ce5bc80cad8a70bef50b03a63dc269fb4acb7c97f8b3cd25a8cebf3e21e949c44ebdc47bc1fd215720c9fd9909df790bf28f5dd7c88a27a23c03f3e2495914b32381406dc41af9bbfd16e840c7adfb88ae836c9ea62dda559ff280bd57d2d03a7e01a4f1c42882e5336b4884a73a200f36f418ff0087c95d84204da3a0738d4956d8fdff86fdc222a72c92c4cadcaabe63fdcaee8325cc2d8c42b9cb80526d80e99866678903f4e15bbfa91615e6dbb5d9c6695d3cd362e1ba91d9e0719c6e354ea2a92af191efe47479877fc913c276c0abc01fdd184960e192acaf8f0bc3bc5dad186e3b88715f869bd278c93c0decb2f64195846ec9b0b07eb88ceb775d189c72463b898a446f1b075e2a2dfd615ad20a4ff69e0f3fd058bfac03eeace50742701bac5cfc56a2db1b5f25944f65337d10f2b6feb2f20d4b093309bdec135aefa194fdde173469d0f8717972c44ef184400502cb63c2054c0c95a7fa45047f907636629bfed0f28903d81989569f1c24eaa87d887eb88f472fc449c2311a4bf9ba7c2afabf835386d4e87306b88f4c659fa60687e50f2bab1fd9e0b24f8324be00139ca58c9223f6696737497b92b988ae166a980802a6a9938c99e6c2fc799f66e280e8fadcd18a4ed052bb61d6e37571beb93aed96fbe02ef5078166f546a34daebc166d9e88c4e0a59e01718b49b415750063a24c1a9e5d79d2effd28d6733a4912e263d6652b40a723be053dfb4cc071eac247e5b4c1edec6d9345017dfe91cb5bbf5c37c11eee7218345b5d4fd7f4a8a52638dc9d19b170d12d2b8682f1ee1ea31f32b7d1c1bc0ce3c9fd01595d17f7c09371434430b6984f3fdcafe7625dfc72954e0373b4173bb95f901fcdd46fbd4ac3f72eebe83b3e951cb091e73c4e9152ae2169c2027cc3d2b6bd2cd59f23912f8bf2cd733875b64df59d68e5295a17a19051d42c355028489555795a13ee4f543f36021bbf8765b2ee9ec81c2aaf856bab6eef3c7433949ce54140d466df1e064fe5bd9d4a8a2d62a9e3d574b030e6608cafb1ef8397a821216dd3880c8dae6502fc2a87cf0c52167d1dffa1c942f65055ae003558bc479a620b91db435275786d8c788438e71a3fe86dd055f820c69b18936938d910fade6b3e6b88d1fd168ca0b1654aa4a2f08fef65b3136f2db91c67d3b2ae11fb8c9570b34b058de1369a5ad633e7e03ec477537de57194753d55ecc0e76fa8570448a0e03fd337c0db275597f6e6db50855753220833a950e933951e6cb274ac4c73861dba0d6d81d362a5d61513882aad705eb33b48582ea540d45df72430feda42027722c1f4a11a5c5246dfb5da51eeffe6348569dcc0e56e1f0239b8d929e588c5b6d8ea192c57d6796a979ae48d0befbb2f3d6de490186b371856674b5d69f073eb074222649e230cc64f938c6d1c393827b7b4774acf9a27461d6fa2c5c495cea1f90cc8c3323458f41bc4038b0663117248fbeecc81474a2e61ebe24eef53c6232b3885ce0a2a48d597dd14a397eb57c8270d0bc7e71ab20096d51cb8389480a7bd74086a9dd6be5dcb066774a4b040129808ef9aa874060a624de07e11c95321fd58360295187f3e7c7041ea615a192ae4a9a6104e05be3e3a1fd19020bfd4cb45244247f677dd104004e40573160630c13626aea42acf31c89461bfdc12ff3b829c373b07b2a678d04667f0d07c5b40235141d04ea9165ba6695677d5ad882dd767a7e18fb36ab2c27ff8215e32ec1376dc4938995e61c71d2513a879c1b8154221d7bad6959f237882432fcfd5d1cf9549a0885f566fbf17526d60ccbe5dbdd7b212e12c63950f8e66a6619891d2de35c2efd324bb610697108d99b1aded2b1712a61fa1cce96b46950904de150003e7c955f6dff6c473e0e08fc17fe88a24cad5cb3c916f83141bf79205e8f6458b88f6a4e295d8304fb9a91b2365d8ecfbadd4acb7d0f96512508f5607e4d531e4c3571fe7aaed1e4e02a7e799ec2e821c7a6bc09484fbb8402969633258198d272ad3c87010a3691c4a5bfe838ed9d0269cf995d002a4cbb9a1a83fd068b86d14f394c15e51973eb9c6df88e4172bf321a89bd42d122255ac0787aee21ec413004d4c2423c43469d4da9a73c33e9e19a9e6f8c44fc1d0dcd4763d47fa533599fa589c899b392c747bda272e6ee04a7f4661f4ca486c689fd308e7dd4b126897a0e45f3f31fe61f6665da006fa972416772e4e9f452f2e75c351132f4330184d650bbb8098aa4c116ee64ee7bcac5f8b9e3d2f10f67698d686ca46bdbce591efd00aaeb7a1646f520dc7768a119d6e3640a87efb7192cbb6b5e77d22fbf547ca3aed32ab81c2e533b0b1a94d6878c415dd4db09f1ca3260dedbcffc6e0656bcea30b6392f82efc5af994edbb304e8880d5be974e0a66b069e18d6c21aa2ded2f84d96f843b9ad2f1fb3ea5f0ca29933d331033ba84442c08220a1ad8af84faa4f5cd951328c76830cb51143c44caab484f01837cc6d1149841e2294190b906f282c0f137cd42e8169042daabc6ce67e8dc65f873cb695343bf724491554b0514fca750c5236840a6f6d9606ea37400d34df3de8db86da1b1bbbf8a2d8ccef18a8be669661624f69bd4380cfd321d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c165a550b1e9f291a7d56434828e56050493adb5dcc51c71ee8706\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"82bbd27cf6d94fe82ab2556312f372dade066bd56538106a036d13\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5ab1ab8856b66736018a025bea781f3a4bc73f89bb7d7ef0e4c29dac0761413300\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"94e0e4ded667e7797ab806a2218e1c21e3beef056a7e979893fc526b43876469dd71bb7b58\"\n}\n],\n\"handshake_hash\": \"770d423d71c3d724a2decca606a1e5aa45e43889b31521a2411a8f5f9a8dd3d6\"\n},\n{\n\"name\": \"NoisePSK_IKhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"31e0303fd6418d2f8c0e78b91f22e8caed0fbe48656dcf4767e4834f701b8f62\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a5556d7781c5cbf415a313ae65278434b5b69e3d1bafc3425fb838c3c0a85b1dae18967551e9ca1cbd8e7f8d31e1f63aa071211235a7c908944fa751ca5ef5ef5900a4b04e53a2acee8a8034230f1fe10ac298c9c21a60fe6aa67050f8d613f93c12af3f1a462a326923cf79a3633131a57053041fa773713af7c95b40980e95b996f22d97f76774423d1da683308ab1b052e94d3fd3ff584cb5a7816a2ce7e2926ebda9156032b2870e1fb30992f23026c044adc6e4aef4a0a485364847486edb15ce969a5a9812bdf01ca9c6f4ebf597902e29a3df6b3f1ecb56422a5a452cd5cd5826f90e264bf56a8a495d3f6fadeba07741727f6b3180b20ce9033b7de854cef362fa3d1b948c450ae7171c417ebbeaafd41ff206ac7b62ea03ec96a2439f87a7200af3084791d4ac6cf38dd6939ac1bd1d175cf31c1cbc95e37dedfe4ee4fca7d4dc7a20f1e3f216426b0e970fcd4fdd53095d260e4ef70f2dfd19d2217223db05536dde99281c81cebbd783287b34ec32c472198d835374640ae1641176769e0d7c01a45a48d04ccc46cbb909dc3330f5d03d2c3b84f542a6ba68e6cc51c00569710699316eefaa1fb7cf23af48ba10998cd5f0b00bf566f223544ab8b8add2749d2aaae67d5dbfdc2f9b8a579c051d83aeaac3694447c7860fda9c9ae28208739e828615171ef180c234e70b1a58a0022e83aa98228a1fac42d34b6d9df2086967a4599bcbba5e667f0b7c74a3dcac1b127294d5753b66f5e33a29473c4df7750b6a7a522c62ef119fdd9f7d1a173bf4d993c0d03235a8be43179b9f0bec329062fed87c8b43b8ca8f6b8e8a4c0cfc44842381c3b72f5ac244c8eecab82b4e819aa87ad2501ce09ab62aa6450b4f54d5b08ec995d35f50266ee897395a31f62c075eb13be18239ad529a6c7f26fcab5a104ea669ec038f2d813df589ed767d54521d9156aa075997340eb4d79a192f9add21ca5119e99eda1010b788acf70472bfc07e96d4bc3b8b63489524da95a9d46dd04cfab3872d125b69cd739d94731ef82490d47875438caf1e7fec78e1a60eb6a70282666438d96ced70214d6a0a1d47a7025b76beb210690eb76e90ac8abbe2f03d6a42eb69a10840e0219c494d0cb9458dcae1b1f4fd673cc698a0b384abba31488f9595a15d44d888bea5475a9768e715219fa23a95a872d8f9811fe15afe03a1039694127a0336498132cb8eca84f28e55e5eed84fa52bdffc73004b54bd818bfbb7989d23b0a7806470c6ae988f0a0827385ca1e8933666c385d1cce7fe1954a6498ff43a4a4b5e30384e31c4b136373a3577b6deb8e612ca31ab4f01ed51e325bd7eaa0686380e53aed743ac648da8108066f4ca51fc234e20f42be44f026a96a7e746b697fc1e2ce50960ac943e37c73646664482169a4f3185138825aae26e30426d7a65bae0ac35d3b2789ece4c6febcd3ca942182e471b7d4c04fdd690471ecc02c172385cacdbaea926b8a19b96f59e7059000574bceb09ddf172c05d4c24fdf767acd2119c9f3fabb94638cb7a258e40ae3c71b0ff31597f9778ec422ad782d116c5ce6b940e58ddd358e21ea9f9c2f735163944e8e142d2c297a461a908e01f2b7e675cfdabbc87d534336cbf442eca01871b95c2d481221802a18c5a7f51ffa8a235dd3467d4aaa765dee907f1680ac81067950fd7f6e1a6aa252da32711cbc9abfeb941d7ce12459ee84be88192b8080c4fa4ca7fa7d1c6f92ce32b78feceead6566a06457bdc290c8e5e95dafa244c09364f5d8e01acca1695531eade9891510864d23705d4329943453276719ff98613b91dbaaf91587e3be1394bd1ea8bf6626423b96b81fb8eb1f57cb6e3d3789917356e5f84e5e88b28696f78bbbd8d4f788f6f3fbc2efe4744071863ff42f8f650d476a71d1ccdadc13442507f926f154b4807e378e7dddf1b6f35ce5a016929377132d6a217926223dd4e74bba1222116f992eecf6a25f31cab8b2e141967020cee8ea7c740c40158af5b1db05a8862e197a0bdc403d1aab9163614d1a4aa8db0bd2fe49a5b0f9c496af1035d119f7bbc6ffb4dc81aff19a6b3cea9292e0914708ebaa62e0b88915a971782ee327720868772e341ab5ea7c7dba06a2439685e8079f42469bed953516f574b10bb66a49dbde68cc021f06185218941fb7fbf4eb5dd3b34f7b960a4f89093c3a14fb70e3052150bc9a46b3ecc2aad7257c03570c7eda64c57ceec3b492064f6aa9bfa3a1e8d0d764507b646fe5e18026f6bbfb75b29e895a49a2e1443835b4941bc56e8a2670c8143b7135753d76ad77192e0adb3653d844abb19c7d434b3cacc0cacd71db42ccbad0d83cbda0e836cb2e8ff8b19ccbeae66c2adb08677357ba65116addc6342267a1d1b7f37e64bc28d4952fdb578fcbad99af8ab9a5a08ff53ff6b97ad2e5b408554d83a3d902a260eb287b5dc9b6950bc8e94f82f5107c4af9dcb27b0d3a604bb423dc75af798943dfa44fc5af495037f128bc4686f4f22a4789d86297d3cddfc9ec44a40b9b1a36226d18fc953e3b99a57869327a6f4b815a4adfa7741af136cd1184e6d7d243e6be336430ab483c19eb91ca11d3e979a9840a534d6aa717e5419edb19bc0a3ac2aa03b7bd45c0e1f75446a79d06b2758df03b2abcff78dcdbcfca3b6e9986119cfec8ecaaefa402c920cf6d8e4d08c895d914677de9fcc8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7b9ef87578128b4a9eee215f1919ec7d747ecb94a1f58cb748e2e87a2f5a7c68f0af2ac36787f13ce7ed3e999594f9c5318f7ae2be37202a22e065b9e2e3c2e54214786876086aaa5d42700c88b09011bd8a6544a21ae477a4d8fb8397f5d4c2f52c119d97d3ef42608308b12f79f25130a6b093565f3451283ccd6585452bc8a19cb97f835dc02e272c73d9c95ece7ded66d357c92071048f6b9db3802fb233b27c32c97cce230d18933511e19d08b3d6cc8eec40b4162e0c0e723c576dcc3a5564d629d4b34f20b108684b09416feb2ce3d20924c4d356e46b99f5486b138c97bd0eca689a063bae90ca201ea7afcfb5dc4d812352a342862af55a56e65f45a7dc4e96f0b8a2a68d84b8f2d15f90be593e0ea53f971133af5ffa6d6d0747b6ab2d8db2a5f880557365672d9cf79fbc02636839389ae80f640b16e3113ad17398d8f6c10015e1ba2ed928e9d5ab41fab4fe677d0a192bde078458d90c697dd7a4668ff79310fdc4df7982300c1ce5b67c35c583ef3e08d098a56e4aeaeb395e43c659f9a5f8083083e9abff3c7526d8fa323ef7369f2156287ec4c9489b97f1807b4cc903607daf876749471913b9345f26883bce448b02ce025fd7b30db4f4bf1b282016bdbdf3accdd4aa958939275c10fa3437d949fe6b9982c0da90c4db4d80d5edd9e70b0b7082bfcb97a4a1bc72cc17217202c39e4558c371231930b2c41291d6ce3991499f50c80ff89ebbaef2fd4130260e11d8844d00d64118b4749dd94a06db0c3bf8a21da669b59993e8868ecabf40019724a82d7f837d2d55e91398dd6faa51beb127aa917943d539e8b0799344dd096d32b370907ea8b5a0cadc19d9e6d563f8b66b4d1584c5e8163f24800c66b1f5cd7c2611b2d96c389700e4600d8912deaa37acf933b6dba3d25257bf68879c91e8e135b7d74efa53e0d83f2e826389a1d497491b8604ab4d0a0391cc2db4b8ce65998202871b33290e0bbe6b3731ad416b1f7ac532ec0519c5f9c8cd91f1af5cf09be167cf2641cc8bdd9e5aceeb0ef9a8cf8d44b8fa7253791cad3ce0d625f396518dbe81e509969c98be08785e88de52ef104169d465f0f8ece75f007e95d5b55b834cb91dd5c21fdc6c7b9afe7bf83ad730c67c645e5c6c2ac9d894719ccdf70ada44ffa8b425c36fd15d6116f322626686f27442b27afbfe9a4b8f35481f1c968937076341df1dbf4c01d53435a357ad31b5d1bee898e56875c02a9ed4705a542d077a1f5ea2fa4a3c51522669c71e98e0dbeffc99f9a7edb22022e5f777981bc719e7d12f0fe149e9349db4bf4450186c5f52f65a1c76a5b984b737a1188bd52261f0b553f4e0e1de1b09d17b21bce1b977e9343fb837f23fccfb145f9008d216af5dcdc19da5d01b415fea7d7fa52c5a3be84dc5e77035041d9eba41a48f08be3b0983dd5735a20198ce871451efb50c66a10941759f6cb49da53583e8d9fe06e0844d790821c990eb3444f051acfb283a5d31a63d21ad89e957921ae894683296c8b39e9f4bca43d6a482bf83ddd6696d3214c34396b7065c756cb0dc075eb4ce6fd23beb92520555f73627f73a66ffd394b816c3777f1520fc0138f18a85734e5aa8c589f1795366f6f3ea2effe87408f80bcb38db0014b8fdd6e6965ae6411b9478eab44477c6e2501d48c71618182fd21dde11160b02088f882553af6bfe6147a14b40beb585f4302d87156bec6c9807da02d95730c2a378c9911c0bb79968770c2fddcb22ac79d6363e44cc5e132616dd89a18eb98ea376fdb094e5afc13872cfe736509529ec6fa1a6357a8d70f9176ca5f577c201f0a47f457ed67fcc973f95a5d26114b357cfccbb4f972ac0a8fa6b81971aab103dfd9fe9c29d0fa3f19d5940504ef1c7e47b3162eae70d021dff376856b082f274d7c8498d9cb652774ee75af8c7f957c92ac3d668e2db4030258b70d672a39178d760e8281225ced9038574503d47790d80ec4ccf4b519887c54d6e7962e80b32ef5f4d6c899306ac5abb02cfe4badece0955ca69c6b383c6641c00142744d3c2396c27e15568e6654c9f3c39aed2415fb5eab99e11dde276e6336d12b5908d692b4bc52befcdc5870976abf1f935a3fd1c494dbc9f439fd67d6ff3ac26401b37ff6292a5e1098b1189898bc04c40c3ea0d139092c15a2ab4f088b03d048b11b8497d5d85c8817ea74cb95593a2455d55d693e498915b168bafaff8791813a481bbd48bd48f405815cfe683bceb3297e4c4a50b66095496fa7dbc52356a56baa1befd74eebab5fbcebd8b6a262cdf9e89adbcc49a7921c393606895da98a4ea84a0e898230c4b6d5219c7c37f3338208019bd62f52cbc4f2a17c16b213009b0d39003a0177d4ceb6e10c15907f7345fcf868171180693ba21e7ce8d40bae2c18e2e1d9f940d5ff3fb16221dc0c28b8027c7a3c99d26e9f8652460aa62b9d84d90107700b772cdb362e9fe413d9f2f536279c60e42fd6c4b411cc5c220add3919d9be8e9c88afba5ddecfbb8c619501e50e3d03b871695747cd0563105db8212e4cbacd765b513e394f78ce0a265f52dd35b244a9202be00c51d23f026146cceca9114c3da342ce41173210b129c4fa9eb0e73fbe5e72895d11b457dfe4069c796288b41e91e115aebebd4bbe4a6a23eafcfd28db57c7b1596f4ac566df121cfe25f0df7661b9286b77f0abbb51bc7895a9198210178c17213f9dc664ab4abe0826fb6cbaf4b06b76bd4531a2e04667920d4da86f6348f0974da7adb875b08775ddb377b787a0ddb9dd37a70eb440268ae2d3b34fd10aa67ce60a68c80e0568adbd5eac21e491211b668454953ad5a53bd36f6aa552461aca5080db041099c87a53d687ceb33323743a4c4a48086770b4f60129f1fb8ee48872787749a7ddc527100328fe63dc5bfc93ac9f6f9cb99afb8cd59b226437e8c182c71713e9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a3ca8ba68099775d1d4722a3d6e888c608a00254aa79096995f63b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"cb216cd82cfedfee4dc58fcbe35bc6f74337ceeb9a3992b48f0472\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"16a563af7c62d4d72b235162a0c766929285a1b4d2ae0f467dfcc1d8385a6cca52\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"eb1f0b3b61c944d417fa79aaa646a68560901d91ef3a5e33e3b491f611626284534f62c9d9\"\n}\n],\n\"handshake_hash\": \"ed60c61bf08c71e68c16774d012696e205cbc40a83a9e82d925461c0ef5b37353b3cdadb234c1e02caaac57a4739d24bcd9dca25bf05116ef0c2ad62fa25e74a\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65cc8e56cddfff4b7cf2d10a18a5c64473f2f55fc9f4eaf0a54c0827733acc504d047f0fe36861c234e45971e0baa66dbcdbae581a7543e48ae5cd21bfe4042b1f3d17280f09e73711cf22a42d411ecb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8054121da01210d6d30f980e41feb6735c729cc5a941e804b5e808\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"4824847a4b37b48bbf4bb065bb8837c71bdf3d255a791624353e4f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"298832030ab0d38cbaa2b8ccfbf62542aeb5f1563a9129fce55b20b7febf3f6ef1\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b737114b1a12acd1e3b6dadfc54af73f11b2bf0bea690e4af95c5d1e2492da813eb8f633aa\"\n}\n],\n\"handshake_hash\": \"4218cc9b7e10d1d3d29fdc68eb9158abeecdf397a6f4c24eef6f157d5142d715\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65e3fef7e198207bc8af05336576ee40b6209b95478944b23b2f95c6bd7f750dd24e7fd779241fc27e9a22e3ad60953a3a9bdb81ae50229a8118a1c659d4a1a966a158d6d46cd066af464362c2e122fa\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"57dee2a44478d9b3dfa01add503f60d8b033b4832bb01119d1c135\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c0928c002d26081e3b74dcd347d308d59782297f83a8e21b4abc69\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"706a9e2e5bb7d7f8d59a6660e3ca2b574da28e0cfa726d32f2075da98720c0269d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2b5d1d80391dfd71566ba02fe4c4581aa6eb5246069b658bffb1d074ca1bacd11358b0157b\"\n}\n],\n\"handshake_hash\": \"4b6d4a8f9ddc2a0dadc6ce81b07d1a527eff358ca4cb4863fd1d5c928bd1975d187404864b7f0b51dec21203d9349099461580aaaab0bd4da51e59f3749f32f1\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d656466a987143d844561e529bb604059927bb6b945d774d08577cc3af9a9b36e6014c759740129ac2b645edc3cb97736e62d80a5e5b404597cccabdbefb0eafcd371c3e6d08e3739aa2dd2d3b6f5a2e5\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"33f872202dfeb118c046a490223da6e48be8cdda0244b6fe4dc4b0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ebb94a5e0dfa09d43125cb36744e3184a5142883fbaf22ff12fdf7\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7f6d43de8f171787955027fb1fa8b79dea524740099500e432f858657bf9b648a7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"fa43136a7cc66bbbae8a82fb8e2169bcfd857dfc8c817013973866044c4e45d79d97cbadc8\"\n}\n],\n\"handshake_hash\": \"fb3ee928c12978b99719dd465159d5dd6cb09ec319774e93fae66cb42c01f855\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d658ab895c5ea5dd8f1ce81b7f7128e75d35e4201c843bca0210056dc42354fa99d0a6fde3180fb5a2d942a39cf41c43145fbe5640e7567250e966152cb50ee2d93a33bae7f2eed69c6cb09f47b548944\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"038264cea82a7c91553823f5b9275729516db994cbf5695700e4eb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d01b9b32dcc69caa599914c4849d60ca11a03e4577cdc5427d1809\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7bd1fffb3846506ca9e2f8805a12a761beb89cfab6182171a1cac2f9115ba6317e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f9da45a9a2109caf97cb7529e832a2b0e45674ec8a5c01e233492c38cb6ea076a17e6b14c5\"\n}\n],\n\"handshake_hash\": \"dc399f1a75e5b1a80c2f11f7dc0aa3d3264a7e613603c761dc8892f88a1a1cf5c071c6a100df09c0eea94b779059c679dab1154ec564ed8dcd7546c3e415a0cc\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e60546fad2da680dfab1a2e749fd5704056f654b0ab12ba16bfe913672908d307b6ffd7f156ec4dbf1983e9c82c6fd41e0cac2a6fdeaa0ebfd5388c0a68af9f067001597b534817c4b1c7ffb9b7d17d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6299dd330a2e232b589bfeef2cbb5fb377d5e594c6630921866ad9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f1540779e64ae5b6eddfc7c7dbd14a9870cc334cf324844b7e983c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"32504da9b5084f9bbb5059f99b4b1614851eb1895f592f275025c32f4bc50dd7e4\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e241854ec87da865704c2ed8c5fad3668e35958edeaf8a5dd627852675a76ab76711cf2bf3\"\n}\n],\n\"handshake_hash\": \"5e3c6a94ffe26a90a3ff14a66be9f51fe92a3c17e946eaab1f32f7c2303b2a39\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e80e126db00a68a371e1834abc163d931f7a6865cce617cb87ba3fbdc4ee9736e2883c8a80777507de604f86da8ee19321171f7acf8830b2aec6a70d156ccbadc729cc440776307817a4b8019da85a9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5a7ac50c3a99a93e691666ff95ee181b6d20f7df55179098dd63fe\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db1f1f2df4f738fb9a70ad7811a046cc163a08d97873b2db809449\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"c15e535cc61e3c4ffb7f541f85652597d7d75f57e3b635b27f849dc48acd56f17d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b4fd9114f3769873fe83d81c2922143d172127d6e8ffa3a841778ffce1da31fdec69188b1d\"\n}\n],\n\"handshake_hash\": \"24555f1dc901e216c208dbb45a4f65cbd8846039ecb3928f39d38f71c4c71de7f9d9f958511917e40b75a25efef2aaeac6b2aff0abb83b441914a618fe5f4319\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e4f0d7b2288cc4d3b337dfb89e8f550d10f2d8a1c0625ae9bf5d4efde83622516afd94991d1faf29e61c0715d5576f45d6e60b8d4429a15adf417dbb6e3aebd2adc773164e6e55463d274ad928b244f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"23cf8d43ff32e4d7d2e57b67abda61fb1c86eb44438d14685a0925\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"14cebe3fd9c56c21a459b697e0b1a4a4ebc6c44c21e6a09c3f4285\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"ebd228fa0c63c192bd6afabfa20af2a04842c4c77f49d610df082f201144b3b503\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"caf8b8738f2f1b7e5846edb099df0614204198fd32355a6fa6c140a223d670f5a01bbe189a\"\n}\n],\n\"handshake_hash\": \"40678fb908265c0432eb2e8cba27f366da6bededf1bfa1b38400e1f44240c837\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27eb391ea1c8741d80f05b2f4c54be237e3aed504fc2fcdd4a9aee32087a8d1a6339e0be9de8ea308544196a87107302d41c549eb8b1d7c9a3af3769e233bac541cb9631d969a4156b6f3dfd45d9b8981\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"bb662a431a6af6457988556f193a2c7abdfc16ed46ecbbf296e367\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"42835dc98d8fa2e2063f5f6b19d067ed08c5800cb4c673bf7f28b5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"907e489de5e27e2d50aac5755947ce4b1a9e10f06eb1686fc88149a156cbeebc57\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1ba339ccca656849e53fd20ad74d789fe17adaa3b4d9a32ee9c247cc2827e03c4d543f1911\"\n}\n],\n\"handshake_hash\": \"b2e6447bd70894c061b8be2f1dba7abc443867c79411ca52a7ddb7c9b6e4f6d18914ed11a943a5c8cd92c406189cfd43f35baae5ca3e70e895cdd1c69400a6e6\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6513401f81f08fcf27729e2b5fc05d1e146358cc25233d6b6f506bfd88c6eb15056d6dfab5738f031ab2921f2046d02d4db54a0d9f2a85c09ba25a8fd999b14beae2a1b9d27ee8e07039fe58d4804d78\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"344d72331faca63f8bd451b22e714fd66f2e7e1c4c1cf6be05d408\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5fb6703964b80cdc50b20872327a723ccb75ec1a16e4242837c21f\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4f54226f393a5a780e6101afbaf7fe5793fc698f78e820c8f73fb6b21ce40a419c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"5eadb3ec87f145f0554868fa0473e49341d1306456a43dba93cbbc21a46e5622063b606e8a\"\n}\n],\n\"handshake_hash\": \"e9c64514e26dc69be4a950739ccee78c607b24ca80f12e770c9073e81e05a898\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d652b13a4ffddca371b916de7a2c1d6f811bbea9d317c48d60cc46a8acf83b98ab1e49a323aac40420cc4edcdd027e949f3cdad8660f1b9f75f3a38995ddff2cb5f71c85302d7c8dca5b14f5f8fa316eb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"500b5d864995094c15087e4750f243dca0377b58e1b266ab3b194c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"96e7360be4de35183f53586381c258790aefe5ea4fac0661c42b88\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"39062fd7f65903572f3f66422217ddc2d5b4e74a499eeea24c388a090d1344d18f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f685b46186eefa46fc541e2f9a52c03f0b2e37c24060153be05433fbb072961f01e08e11bb\"\n}\n],\n\"handshake_hash\": \"38a49ad9866f5819d8e8112624bf41fb529f00f447d3b37ec56e6dbdb0ebddf23ec2772734ed60e5a4a35d6b41edaf6a8ebc737613b64d4af81fe416c580fc37\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6515eca813c71e67559162086727db5472026f536f3785cb962a57437b5a9aa8990f66212eab196e21f89bcb41d0120892eef59c668e9ac132e2ae9cdd37f118951d40757a5ad0093eaacbbc12407630\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"82b227e1da64f75d80facde60aca3e2e1bb1ee257dab24bae0d069\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e6a0ebf01b795beee34352271ce3901a48312513b586a38332b798\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"093ff164e81f81b4f1da369d30ccf5fd91e26f49ef1c9588d1d6b97a1b0dd76adc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"e5b5dd2382232d638556f9e51f595d8f089c75327974db5d0f62dbd35b3cb5bf3099086623\"\n}\n],\n\"handshake_hash\": \"32fbb59e150e08ac78283ea4d9ddccab000c367bd3a4f2475c754a5302396969\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d654f83bec521642b69246ba4fab364874f9264571a8c6ad9b2f5449c5098f26d3331f8828938c009d176aec8ff339e329ed1a1919b47c93a919d151608d629f4a64417bdc4c0c9927b2d39a67e374f93\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"89650fd35db1be161e4d8100968aef7f87ed7374a59a55effa8ce4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ebc25c492ee205dc56778756f6bd6e895e3b808f88d942b9a4d091\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2208feb3df3f49be38c07d1c0974b4c78583beee4f371312fd65f384cc34d425e8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"787349f9b2c3e281f2e15b61551bfc4ad8afc0b203a5a0a07b12f75ebee4b9742bf74718f0\"\n}\n],\n\"handshake_hash\": \"a322c3faab363690df1ff560e44034ae6009dac0a1d8205b731353a1c6012cc05c4f1d6dca92277dcf9143c0a5641c556da134682c1e6f283b4b3eb70cc24aa1\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e61481d7602ba0a9d4ec093349876f0ba75c4e6c7b2800e1abac7e845020e3306ba7187b665f9fb0b2e14496ad2df8711fb48bf948f0163044439da680ecf4febcc2a6bb671c8c4dde5299de370fdaf\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"870de4b624b0bdd28d675727ee2f9bbaf04c96c2ef8898c881802b\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"95a18760fd3c503c1ef1b023a12d417b01214fb3e2878452abee27\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b52a600fad544ab1b54e20ad8cfbb1a650648c5486f3306b74095a06349b58e53f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"88b32d7429d6998234988ae105ee254b19a7a82c709536f31d91765423a306baab4d68e192\"\n}\n],\n\"handshake_hash\": \"8332ee9c699df5126e269d706869bd50cd7298ddd5d61d80ab4f08929be4d23f\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27eb16663d5112caa2fe8c5f9c4fb4d40d712c332955ce81cc4cee1ab909d82f707246c26949263e4ffe788ca41d92a1226df06453f55b608dec6317fe9f529c488f0acb7a73fa829d1c5db00e790638d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c0b21982a498959e4d46da118c9a799111d82b4501b1b885bbc9bd\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"348b3efd84144ae23b8d67186c93efaf1dd6f7bad3676c1e0e2ae6\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"e3304f0d1e8459afb1cb85a924f513266e41761e48be93440f266be21637ae989e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"98c5fa3623f69e13d363bc8fec3b98740d591a2943b75aa588fe950a769d6be6085aed8a4a\"\n}\n],\n\"handshake_hash\": \"5ee9f7fe055bc8eace3d40cfa13efe32712d5a76b0a0767b6fa06ebe37640b1e8aa1416755ce644767174e06ba3070b87a382351079985b6f705370153cccf06\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e111344218bc8240c2016813b65907aa65d2a05549bbefb56bc687d24b11297539e7517b899912e693cfc01a14d5c323c9e2032874d6a01bc2f75ef515706fd6d75908e93bc0a9e180fab5a0a6a65ec\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4b10e37446856feed565638c5a02447baceb8dad15002e808e8ca4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a60132c842dc48a4f1b64e87017c67f1a54edca71a0f73b65c78bf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5b72f83bb72813a1558b2b1dc1615500de7f74b6a66716fefa9a0825be4fb6b8bf\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"602a935735c6486b759304bfa0491026d7311db820958c7ee84507b3399504de997b92df0c\"\n}\n],\n\"handshake_hash\": \"4c8cdb827c9e17d0f551d44d0ea42cee841d03a18a2c2f81c6044b46b4fc8682\"\n},\n{\n\"name\": \"Noise_IXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6bc3822a2aa7f4e6981d6538692b3cdf3e6df9eea6ed269eb41d93c22757b75a4c756477696720766f6e204d69736573\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e09713e3c2a7cf612d26664ade4f15da8836ecd87139e72639f0a7c1e6f05aefd187ace7fab5f9dadce756b832fb6c28ef5d4fa0890892f9bc0fb9cc706a0c146d4413e6a92fbef25ba261d51f0fabe\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"93be6b78a0b6d5bd4b72ab0d17f16fed934960c3f06b97dbb8bffa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0dcedd0e2764b006e8455130bfbdc36e28b68afbf68375277dc27c\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"a82af90f153c2e955a74e2f23b7a6ec3f1c69f8ed28cf46a63ffbcdd9cdf7be418\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1de1f61626c20b4c9f30648d362e2dce3d5643631a6b5f4ff53c79ba86577d7bc20a6d6b00\"\n}\n],\n\"handshake_hash\": \"5d3ee7420117a7b5024d58b6049aaeef30c40c4dd4fbd809237001f57c355351bfeb6b1f70deb40dc7341159ec7b5c1019c72333527b5d73116d34352c8a2d43\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79448438cc710096686e5d8a9aa47e46a69c3013ad717e6977ec02247c993c85124128639de75e7a88acd6a031543358158355675fb4277f92205fbdf7a85d154e7d4e4a718acfe21df4c71c25633a81e60555ebc4abfd193a93cd03cbf023025b7ba259539b67db7272560a74cd2df33fa1ed1a012725de82d5b30a2f5485c0d569712b13ddbb24ac5733c9d07e947a6b7da2195fe8311681f2\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843cb0163d61398d70acfc62c3da3117676227095260c8b97906fef4a82b8e92e043e8ddaca31eefa660f3b12c70d35b72ebf150924b5990382345518abe0bc5a3a8cde51b19757badf92b5ef053d6446f3d33b0710209a464e3262607b99303d31d55bb7257ea33d4426e5d5d80f6793429b7d72c4be6ab9588a74c6c4cdcb7570a6aff85c1415c27104aa05c0e1356709bbf1f5e7ae30b6\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c5eb9ff1935fe9f40ee1135b93eb4314ff25ec804178a198cb08d8\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2b594231cbf294786e9d6fe807cd883f0c4db483d421eb6efb9910\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"08c2fdc5613fe724a2d312f800f68994fdb104d1f4fe4da80d45d9905d0acdd71c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b9ef83a2221514a2e4a95fc8cd2e84e5c72d98153016df2189c1c719027bd5a21e070fd0cc\"\n}\n],\n\"handshake_hash\": \"6e022edef69f41e4ccd63228b38686425ef09e29fda1921a46df6796532f44c9\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944696b31755ea7069910b810a7a7fe042127d54e25771158ba18c63807318184215a09fdb105592b5f94ac65efa916c12c360e2bb5d2b888c5a10fc7500f39969ddbaf7dc1da857c74742b80e149c4ccbc3ba08ee6e53e117fe6c5b104714248c430e8c96cdde46eea71c05ef80ff71910dd38705f73753bfb9fafa8d0042c9a1e8e105d6baeadbec1e453e5bced493126d760984c2d824240\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843c0343a6da1f2862c9b5f965b4fa24b9feee23ce6285547467156c229fbb5a01599f15aaec941af38a1adffa77bf66171b445a8f61edd60ff8a1120b20efac82aed931f1a42aef19bbe9c1cbf9879e2f6c3f56b722262130467e76afd2d91abdb9dc4fb4c7525548e0f7cc42ec17ce6c6b8b13ad7ce0b6dc0ed1048129fd0cd1088e410103d4ca38241b13278dfab384df6de01d9d8b5c8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cebe32fde1126dbb186a95367dbe7453a9e42e1819955c8f7f593c\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1bb67894829813608c66c958af319ae1cdbd25df4ecd64bd544301\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"15d6665a280af4bee6182d10081bf079977646490bbef28374a24bc3e9f12a1ebc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"907313fb8cb0961e09a3aa4ad270edea7a8f41e1096a6cf07d126fd185c2f44bf0989a0e28\"\n}\n],\n\"handshake_hash\": \"d643b810e1f7e850fd69bfbd1815952415806c480bffe0d69cd1779cab36322f1c97c02d0c7ce4dc6f4287b00cfae6c21151eae62fde9d3744312dd45b04600f\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944ca6eb3c4bb2fd6009c87f1cce6ccf6a0a3edfb962699034a169e3ebadd7c81026c7fa4fdcdffa7f9c71c20d2326473331b8ef24f2623ba6868890a4af886a979ca832643e76da89f1cc2faf8fa36bfd4dbf0f3dbbf71f2b55b45351d3a03c5a3768e9a13cfc22d6543d44929c03a493e532674ce86229413cae6bef3864df6da7f6439ebabaef9273b0bd2dd2345a16a2407df9fdc30316c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843884064d5bd73df279232a7e71e68a2b73105cfe76e16367ad34e8659cf756dbc6aafb1441c60ae88c2498b69a58bd5b710de11a8e9c4f4532f76a540e827ba7c778a04c677d766dba2a2c06875af770f24c4ecaf54bfe06b8fa7d3bcbd72611c93c301c918054ba6382667890da4d757a0f752e4bf6336ae544aff3ef668d80109d2b6d66e9845602d01076ac08cd0ab1b2b2114b41c2b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"756f9e460e96a65e2f29ac2fc27321113f4bac7a15e784a18a8cac\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a23ae967cb61d50c1bbfc0c0d7b78623541f1e299c066f538b1798\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"eb482b9266c33d6d42cf39a53eedfd0cc46a744116853b72c3e448f949ebe4de5e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bcfdf150ed92d14e95167b9617cefd1a6da4942c6ab07703c1b44b73c74015101a081b4301\"\n}\n],\n\"handshake_hash\": \"93033e75e4639ef58dd68672922b88238fb9745afc65d98476bc79ff8dfa7f86\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944746bffaee0d99d5059484f88e9b51ccf9829bff9e3952068436fcd4273fb5eef2bd4f8a1d5b62c5ece9f4557218fff9c894247145b678f04c5c3a3e0a7a1e649591a30524f92d9ea08aff0613a6448a60afa4812bbfe17b46e650637acdc01ad40ce8dfa89fd4ebda1b3196669d19e7a24a8e48e0f903d5ccd589a9440f33e682a29bc33c735693f6d0b882b731534a885ebcaffb9587f55\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884327bb9dd9701da6bf2de4f67aed34173a7dceea273f82259d5aeb74f93c7a94b09f054b07ee62aff989ac0ee2e9474e2788d1afb5839cc16e040e7d152196ca607463fc092082c7285e6d1bab5f52efe2d0c455b075fbc9183d620319e7201bcb97213336f8b58c47584db9cd04ca6b44592c86b8cd65c9644385ea2212ddcd6e3f5115ae9a55b24e3c9cdff4ce0f4a51f1bc885f21f194\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4c37c153c9a682032c6e34534e13f3102bb4e1a41e8356f2087d04\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2d54e988951faf481d89670215a41141029723374497315cc454b2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"73ab6973e260ed24c3c46636dbb7ca9680d4037b36e6f01be191054e81255182e9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"71743ffbbc1893c295e1b716c2748e30cd2150439c3936586e5a363ebc8a5186c181336ca7\"\n}\n],\n\"handshake_hash\": \"0b9b8efa134bedfab3d901b95d27269ca45954a39a4d66c2b0493aa2281d8b10252ba67327fb42066dcf85f86a14d4be67c51ae37f5e8f576cca1abce84ef57b\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e31d0b67dea8dd4d3b9e3b3679d010136d8f2152be5a435efeb80e5187cf12d0de7fc0134cf63464dde2ae336554638b8f7c83de3b0dece4771d34498ddd26ddd34f258f93386509559173f05ccfbd711777a0bb2558f4e7feb20bfa011fb15c58421d4e0cea796b9bd10591c477fa03780071d838b6282ca87265f1ebc40be663d7d204538ba209fd8a8c439def41eeb79fde0371f9abf3cdeb87f3826d9fd5764de714273910d9b8a786a5eaac47cd787c1d7c9f4538f00a70796231abca1b4fdb1db6eb0562515d3fb88b608029c249c46a3e893c1432bc86bb5a22685c2cb5c2a8f47ccb19a1a880cfd6a2ed00a38a4a87f737c7c2cc7988c450b25884687b07e6c982cddbd61a87af47e056e0f8f83d35c63c2ad22440c71993269ecb40314fe020d50d55414c93fab13e8d90298f11b69c6d579a7bba3a40464a9e37620a1588cf085f3d0fedf9d8aa9947dedbcbd0df0b58ea8d68ee85df250d87136b910496bebe572dc410f51e24c3d60b09d079fd12659e6b42fd624fb92e66718041ffa22decc2ca6f399afdefccfa6c72180255a245203a85aca313c074eb4b270fe7928fd4e1439e634601ba1c18ba8da801dfd79e1485f9bd3b99d4bd165f4c05791b5a68adefb63f8056e33d37836ed385f4341f7b2f9765b6379cc4573feeb6cb96186101017a0fa831e2dc35690eb460611aa18bc7794770055de738072cc985c5adc7cae9f4e7aeb78ae5d1d36241f46590acf8d9ff3748c6d713ba9ada4ddb08e11164daa15d67d32c8682413a2817c1d2f4085dfb0dd79d091e22d36d996f29bc62f4d4e58907535eee157a4e81cbe86f56ca5407dc78045eec1662be46a04f74668a5c751c33000b69599df21bb31d0d597420ec9798592b6407ea6cf627ab71b18f2f53d81d100214309233439e7711cac53b93204314a7e2dd7d7473e69eaafb13256fd6f3a705f24f1d6d1a63288f4c5130028c299a076b18e5ce83809bf8cea0297be9ae376d0292e64cbf76a366b5a679d87fbb6e1062eae86f913f0be8adfbfba3b39b8eb5153fb480a9b6f61338c666cc7f14adfda92c55d2a245a7a435a8329c77bd1dda1c79d202bbe69a6be4064312e0bc0257d1cbd3fa0b3a7584ab7396fc11064a8597a46ae4c71db716b2c381ce812de5edc521a527fd85c708e87359e174e1d24d238b664585e952955af629d74c15b6a1c136c93583922d6ddb9137a480b1c9d0db9354a84c3d29116f94d27bd13c1b5f2a4e7e8ca088027bf1a366ab4d6d49d98ee94a1bf0341b399ec5858dfa858c4399126ef16a7ebf8e80518a8925229c7f71555e73682ec4fdc4008060c2e255e6b8daf9e7e19403b6b65fa96a84cf31690883175aa1edaf1f95e2254141d57ad8694b1c7f2e1a794ad2e938ae838ac45bc3fb8be58a6315b5244d915303d19df8c7b1181676414e3d60d5e45dea7733e924a3fb8138ed2c76ea8d627d884d8a2143b47da6593dfaeef80545cfbc58710b54368db5aa3771aeec3a5ac3ee8c2b4a0f56294664cd95a8dd3667a21d546805455eaf26cbc6711c56d645743e4e751454997d4fe708516fca00fb5095a9a16a12900f5507c16deb6185a26a1a6a415dd916eaecd5c051bd50372a4035c576b779dc6381ceb14c1d7d848939a1043f3de23126600de87a53777446e2888bc2dca4cbb2da0329d79a9a5d1984ffe49bce5aa2799dc671b5fbe156780491dfaff4d2d893cd16c2eef5a166631c905def04cd341a7f11ea484eac2f9a04603ee3a836cc4498f245e686ff97e8cc7ab5e1d581014899a1538b4ed03f86034c8c27bc9cfed7ad8141ee9699a9fc0f2c7bd3a49e739728fa69262baf8ddc418bdbb47801aadaff2db6baad2a168258c76c2200bc3cdb0ca063de7155f41d4d55c28aa6b9bee8c169e8ea8681b0a87c8cb6d06192003b69aeb1696a9c8b21daff08a39d626f2cba01dc236883176c4b0d25bdd2ad3c672d2488bfe4bc9cc65ada52ba0648aef6bc56f8631efcc87a6b7eed22f6dce585588cb50e46a892ae92ae79e59fb51794602f9906eac3a53d98642ba68ad477ffd0467271b55c90ce45462873a66eeabdfcd9711b5873cf72c7c3573fec3d7147483c110703465f33a558fcfd3558f888e9dabec36fc742f6cf14fb1ff2bf0adcda83d56283b7e896d4f7fd2cc829e7b974ecfcc698f9650dffa81680f00b42b4e7df1430b818d7af226ca99f4badf8f2c8cf6328480d67f968f95d1a83a551421f081153f81e910f49442d98d34367798a2bdbeafaeefcc534730ac1c51768172b987e002e57fb5947854a8631815c466839c3e1df7f8fa5fd696173ea81e884d94f666b6732b80237d0d919a88e5fb8a13fc8ad75d1daec3085f5dc18a2d09753fb71ad5c8eb52f7ad928098df9c969506d0e098a9667c89aea96d65bbd20eb7432f1b663ff094f5d2ae4844b2e9d63d25612ea220cefd266f7b1def347daecd13fbfca87ffabe2d2a38595557e509a5e9234af8a6e844570542d57d71fa22ab35d611afa55b4f157cae4542d86d1bc1af9dc67a0d881f31967c0cd858fccbfa03e267a5c4c746ec81f22a15f46a7b6adccfb308cf4909c275ce9a7d819a841382e5ebc9e42d739ee7ce958c78507c1f23ab1f7de29dab894ce976566c0f0e180bc0f3643c3f3b3ae03a55861060082b4d8954ebadced2fb7a157cdc98c0deff4\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884373e85354ddd37ce2a96f7579233fecd5762f52eb55a4572b9b23c1d6b2d5b0454d8246dd3652b6ea9d0cefde993c1ab00a7afbc7a7501d316bc7fc19b532b06e81decb578b9920568d1b96cafbf7b7f6d18c0e1759c0dc8a2d11b292b486fae037639f05855e30556292a28ff72e04d24f27e863c915b94661a679cf6713f376587bb5d4609fefb7f490242cc9c7da47d4d3054ae6bf3b6fa6ba278aef70f6b595e3bc87e0df2dc0b48ae7e7da9d0b09c8e9ae9f5bfa600468302ed3895e887a6f18c1835ef829d1e020d9a6edcff6b5257d4e114361c6d2a8da3120723aeaf95255306864869637ede7aff2aba8c765a88206f01769e4d587ba163eb0350a9e1ea19c91d341b1d3517ec68102602a8f6c253e7554c2683095e9c8b81eca5c9b84ee29d2a3035481eca37790b80dfd16495dce2b84d5c002f517ed588a7922af2e060146040a568ecf02862f83110e2c0fe86f2ceb4ebc53570caac4fbce878f6e63b28816a302dab250dde703c898ef5f6580d29cd76ed1a152466517d0bd23dd32c6010a714c6710b4366b4564e1e1de74612caa745e298718813d38deea20f01d8f96ab6ffad14491fdba04d49eb71bdc210f9edf93aee7154bb3e054f28f2ee81875ec469021f80d245524b7ce1ea79536c9f0a6a95011cd345a4bdb41b5b74bc3823d028251ba5cbe9a0756caa102f47f3f82df7561928c63efff65495905e76fb3bacbf94dd0eddb4fe0238eddc239039fd445718298f5dd9378ed820c2c4bc3e05fd948b773dcf86860bbddd123deb9cc0d6afc90774ff34574ee226d4122d9a924f914b156e52f8d5d4753d76c1fbb28eb0d7a8c2dba199646bf768777dc27c889eb3466af64748929a35d4f6f3efcf8c7331d655ef5a6e1f40e31b14c1e272904c3dc8ce197d076ebe89d60ce91f7fe7df50eb4c93d128113fa04f2f53f4558bf8d0e4bef8b014dd26285ae23bcdb1427d6d10aaf51f480260cc80d7e60ce07bb5e929f537dc37cfac539f055479644811f0e5ffdc2df963832d45c8e47b059dac33688fe5be1aed629a33b892e9298b1c7682aea93650223d6e651db87051a03a72f23a733f3d4fcdd5f0c18c04ad808cecf0656ad12d486f2ab683b6b56d2da360037a4b75e933ca9cab5e9356bd081a353d720a9670b32b8c787205c6de8d9fac4fabf929302db4086574b4355b93f5988c0d51ca74c6d85734ff69f126f1bb83d894ac5033565d84075d577cfcea81737712a1a45e412141d2a72b8c44f55ad1cbd3f3c3166e1bf8ac37284c40d52543f736df44b304e84fbde11e6d249987e9cbe10f70c1a6f86f94c8d01cc1e23a5b36f39318020d18eeb02d7ce6448b1bf2fd33f420f3a247bbb5b5b7b41f79a12c3d4b569ac99c79fa75315a62d1afbf8b8ceed3fd60af6bc143950d280b4badbd84e8643fdbb1d691bc8a490d94081774ba9c0bf365531783a4822e6a20ed381495b8120be2408220fda9cc945985e5275b86349f450aca021192cb6d3c6c5bf6ee40eb5e833334f8bae264c59720fb760b57308c183a493f64c9270f10a7a75f3d2944ad85c5803026f61f679ab9eabe8ad21e63dda0ffe82d219efc3e5e518cdc4fbd2501247ab2df7e8877eacd4330f742d354df04a529f246d8c920c6e2ecb6ea9323f8f828cb47983b695ae6ec84c741cd79df77e310197bbf64c457b41ce6e49d6263da9937fa5ae5c5babd363e1890ce86598452ee01dc71d7b9f77c33214f3cdfeabbe83078a6a39666bcaf1e1b7aa6014af7aade70f342b75e93c27c013a68a9991dbbe3d31c52623d62d44e5948a524dbf19699829a37574080bafd214e794028d640554b9f2d9d5905afd2005441076a19294b36ece3b72b330fb63ad93203b25465f36aed913ab875861b88a23575aecaf7993c5143cc30b08186b804a7239b15d3ce36c03d680be32ead7a0f17c20fc16cbca7213e585cdb7d269df5289f352cb7a7b4bbfb7d8ab1be8d1bf15913e9db47802859daed46312cdc7c2abf679e52f34f6f9a4cd81142772462bf91926e34a808d5168d58ce76a1c92349c26499d5c09b4eadd8631acb577c7be90ee7b7633e9cb59f68683b6761959ea7a5ccf5317a6143a0c15faf0ce4587a61707aa3908590bea841e1d31cc5ed61fef6395c45ae520dd0b3cbe50b5e4eb8f73eef5d0c3a0c13c41bd7304bb6910abf0cb12f663652e0fc009d5f60464dce7661b0000f3f44a900e6291388825567d7cf68e97944b9608863b7d1dc3340d27b214beac417420f87d8a5aa18e2848a0a9fd763c78783ba3680154e9a172ecaee084168f730cecb3cfa9dbbfeebac4931af2b38cbea0169007d332021e1828bc0c9e3363c4236aaf566cda91024a4036b7ff47e408ef76ab1d1ce38fe83310b10a83354c29212b2487dc13b4d172ec08dccbc1d3d97265a5c334cb01e7f9a7ae23b30adc011f2ca0c9b39ed339976adece4be7ef383a8143aebdf1d55d35d9e59c4fd945148f493189b54426894743eda610fca46b703958e6f4249cd7f4faf3f28e64eea26030f677e6b653f046884fc77a06f6298ef0df48d92ba1ab1f377539628edc178ae2af484ee986aac7043f7be2f109255d77622c83d934746b0d574147a28018a01099a64b9a53c059abda0bb7a94e44001a0ea628c47f32adf5a1c297ade899a2ead8dec22903124c3dca75c3c55a38d54cab88fba2c72b42822c7e497ef460c62e0362b251f299f7f7c57a93e485934d173c702f304be049efdcd8dd76284bc52ea8129a83efad6924987916b9fef602064c645dd6f418d9ed8f58980e376f3b6f444d34c685092ce58d70b7e429814ed6cf99b77e9f54d29034fd4b858a457dce00a6e36ba375567a938f99f681a35693a6ad8f7b80186c41e550942a45bf74ce0f8d38f4af21784713e6cac697f5a930f9a7cc925f09b62821dcf9454c37f8df213829fe2f40b6f5a7fe435f5afbd140fb5e12f9f283f608e500f023a2cf42d033818367f40a581217d51e2af3f1c0dc\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"54a5e2b436c6ccdd3e99e6600becb9cdba5f2760d4b8b7a84bbda7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"1fcfb859ce8dacdae81df9dfaebac512b5237dec4868d1304fcb53\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"8e6973e05485a43dcd52d88a8496577f48a0b09683c4c36997ffbb6a4091ca9a94\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7571fd27cfd62f2c3dec55a26bbbd2640b9fb54d7904799445d1b7b37b27dbfdc548b8d653\"\n}\n],\n\"handshake_hash\": \"6e457d1d6fa6dca5d9bbbe2c94fdd791dd81449ce0c04ace03948daa40375974\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794454c49cf53ad20725d0453233c3163c5a15f031fc445a1e9d615fd96105f55e5c5fceea64f0a61827c0c8fd19e112fb5ad8052e305609b5ee0db0794520b64377259a6544be68449e41157c2866fb0267e9dd6ddabe0a547198cbc18112c11ba23a22011a350ec96deb549c81dd75bcc0e2fe60925e45118977134ed35d08e925000f08aa7df12828fd2456b933d4cc0f79ca4717dbb3e1300b389336ceea4809bef90e923ba57c7a83513b89ce973361a8fddf0fa9dbca8572a9d8f793c8a6f424dcc2598ff1b858d68e716b1c8235464e4224ca9a3f04543c4d3ba8af714fd2ef8fd6335f1472422bfc5db63f91f06761b8ac20c6ac2284ebb1e94afb55f7ab93f06ee625850bb47b1a884789b88b440cddc37ac4df331355f5388b44b1b416783b7d22d6e4fc5a12902dc0ee19ae3107d2bf5b5927e0a5217fceb0232cf6c8eb92ed92e83c8392c66fff35295d3aa67ddae0e31c8eb80f703f82f52cd80131794050fe15568d22963815fc83a375c5b44b1d0b3085fd5dec1a894d2b58eb302141c83069e74b8dd281c2d0dda6d6e0edbe8e4e7b852501536614ce5c2597fb0238694c2e1ddcc30306026864f5b7c2de0530000ee518fa812e909e2efd3842fb453438ab8ef4a9a7000a955cff026c3041da7566226be376f9a9f6cd60d3f33aa71afecc2ed9da257517f2716966d3a92f217ba3be2fc666c062063463fb922b7a46eff40bec4c7d2db959aa2b31f04a8bd287b4c3cc122f44451752733f286e5ef2d371978de9587023bac5d4466916b143d07acfa0733dec2ec8a5973b27be4019e38bd77524d9bbede2dccdc1108f25f1df3810cc00fcc24441a7b2230a4fa665c022db8afbf8653335c77ee51a81363136db99624d9b1b96a84289c7ee0454373d3693b38e4b8a5872247a4d54a0baf9eb5b23ec32293bc4946b20d2926cde2ddf1070a27e737147bcc7baf2688d5b4123b3f8553324c6e2bfb5aba38f7ef540dc47a28dd3a637eb945a679ddb3db9945da7f546136e8eebba1ef6c6c091a5920e9e187b8286464b2389e4d74f377500302e020712dab68ef4bf78554a3a7e46907f864781f2aabf9f157d19e79758b3a26bfd34990f2ff5522ebacbae268be6ff97d8b735c472dd5f8ef0110e463af8f07496d9d26ded5755a5475326ea384804a9ae6ff59b75877bcd014814195372d6097900f3fbf111d50a468be5eafe95e8f13cff1935ef1d15d057c629c24a79e1eedb85fbd593bc564f09368d52c16542b74c7dfdc1e8bb453a82d2cff3d75dd5a1ef91906d074711651cff33d4237981e5732b99c4df71652216d9816e76515e8badb3e1bb57f824fa3005e2f8c4ca6d2255a0058da52aaf283863022971a3c420dd8f3647e887db68570771ced6055297385b28fc812e635c1dd7a0aa00fc1f88197329f7939852066c68fbec79b42fc6a9c05ae885dfcea3925042e7a86d599de8e4536aa8af0a357c3562a5b16567d7af12d32f9623071503511116c3ba37690086bf16d982658f5738fda7317a56eb86d5b42c2a21caa01b0f0f3f3c4ce41e30ba39e2bb60aad9b0c42a29318b8a46eca258690e58a7d5c6b96259672514480454bac707ae3162f6f0c55a7d9df221bd6ec8a36d320f77d634757d8427191472f4eeab65ecd0123a98f24545e164d90fca0158309658480bc34924eed09421d3127544bedf05819c7a1f01e9fd73d7f82ac782729c5a360eb5faa21cfded7594247d06d93c08b71ea5995ccb0738258dacfcde51730e59b24d0a7e22932c9bf5f3fd7e425bd5e6668789189d7113b2ef8ccf627aa1d2d8d2f8b2263c2135773f92333b2699b6a99a64fd98c76027b78e35af837aaf1f76a81e51fd7d623feeeb7028a770f4ddbf229af5ff526c85cd3f484217f0cf02f9ae177c24ebec21bcc20a143431b075515bfe5e2a16d95966171ca86a9d0fc8f977108392ab0a5834f13847d2f21a489b4068b29bb86929bf6843a30dd77c3148c1cab616d82dc94cc338cf6f3d63f7ed17d80a2aa9b93e9759c9ef91232bfa9cef7a10ee13bf4692478469f112cb34005b3a20e33956b65a24703af89b7def14b8fb131f46672f6ce15120826b9fbbc3f6e214036e4a8cee4ebcdf45e7252f116d792e2b6af3b1addaa8fe846fed0772ae8f577fc07c499c79a97fb15007aaf97743555c691a451fd4ce75e83d9764741cce347dc5e45708d23d70758dd04af970fa7115b7eeefb651c4179dff9adf0aaa0fc7b096c29802844a2e5b3b094626cc7e05f4266afaaccd0d5f3e0e238704401b6cbba0bf701d8f7793eea8c233d2562100e75f96285bc9878bd4f0d357a48fdcf14414a448a04b46f6c55f3c7c11d8b86bf5b8e2baf0f6baa7793ce89c564c4ecb560933cd75bf65e8d0e6fc499a6f018a6eeac64be337a38374ab00b7da1f9af87983092f7571e0ad4e45acbf717130e0cd238f15e2eadb6da7e72e9736ef8d4e990150155cbc23ec2110b7799d25feacb768da745c63dd292282f737b461527d5dd09a510ad93a181b95137fbedee7618e622356cfe9a0cdcaf020e8ce7f0478e44f5104ea191e1529baf64d0079dde4657382018d503465c4ad9629edcc0ce5cc2b0bedc749f8619253ab0c536bec2c8a31f8358bc7bf28c107e8c4ccee4e7631d98ab16e3c57dcae8a309fc20356f00acf7d2d268175b6970e070d8b0f4ac8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884364199c41a42e4c1e82d98a6aa03d51e4831020c6aaac33b9242173b9347fc7c3ee90dc4842b9b60e91f82ca989e189e58f78f9e905ce4912bf64567c07e49f2e442e209d0060e362383447eea5ea4aaeedbf4782c03ec4d0a0ff9ad60fcc4aea42c574bf3f38e45439d393ec88e9b2f39bbc16f5aa3d0123beabcb8ac9329cbadcb8d303fb57fc64ffec7d9d2bfe9fa2b4f83a60871331b3bcb417f382b2541bcd83945a4782dce42425d257a27362b077db6858d2246e3f40a3edf0ba36db9747144ecff060cfb77a0f8140bdc651a15ab3c348164d8e664b806672ad448172d7286acfce4d24088be0bfabb383ef7b904a57165727f24cfcb3077529beb5400106784018cb5006b851301bc2c4192b04b627a0bdb368821eb408c97de0a52955b4fb8f5923bbb23a003116becfc1346fb78f7500ed5957dcb1f06055af79aa7a183bc52c9559bbb88cf9643f5fb00261b5a217f80ecf45a08be1c57fffa4affa1ca2719972bbe3e7a85e9c5bcec6d3c112f4bf8ba1238b653755a75ce77359c992c63c4afed47bac9c2cbecd5c94eb6c6c52d2a60fd8d045e13b2015a34f34cb40c4e022e4a67d9c6f48dec93bed76e61858cea84e1f6c467c4da1206456eef3154c1beb7afa21be9d4ac48e5967e186bf9b8771ae6fe0122ed5588a57e8b6dbf3bdc33616ac96bb7ae41fc42b8ced947dd7f2612262c3beb17dc212280d45921db4f2db3a203dcf7116f5f2dd47b43686e57b0db11d503ad72f1d452642466dd2030fc909367b76c6af71616f017a90eeafaaab68d25d840a9e6bff441fde0ebb2345a4795b29d9098dc5556e8d37787f19955c4cf619d9b35b5f8aa6abb748830f752b6c3fedb06ad7240a29da77d00013e0e92980c1903038422cd0b4c3f42eb2a2dae114f134aa78d3317abd46e3103d5a44d4e296fe3ab6dc327df299a04d4eee3c7c43737abaf1f8fd290983706d9ac5eee4502f2d187b547c7396cddcae195e9b62eecea1031cc90de822ccf10430fc5303d0e0b11781f145b7c355de47b613d20439deac8bfb9f431fd923614548e221d95f1fde745c0cccdbe80f0d4b69c9b67b18130bffffa698af88e97de635e2c90e7138c355aa72ecc7dd3990596ff63379b7c9d1908ec14093c7fc32c436c9ea78dc9c2f9b3fc000af853b243c99a44dd493bab709e77141a6a3f73b8cd9fe31b841c5cde71fc16309dafb4c1a206ba7a2333469fe09766ac315507bea8554c7896b05cb36894c833fbf1c1650dda844a290768d42978c61354f32740a35d7114ec19e8749bd51da38daabf405c3683bd7caf66a692dff5b3aafc0d8793b4e4c205bb575753911e7756619f072bf81ceced44816bfa2c43ff866a7925d5cdef797abca9260ee786dea74d4acab6f3ec52b76696da307c18f1c1fbf2f8646c4a2ecb564733128cee3715e3de636996902eee9abcca061c1dd1881a159c077e516dd02b265a88ff2bbdbab926874424b98f0400396dc11c08f8f1cdcddf06b2aa7ac3271061fe28391b14278f5ebf3fcc1e6190bf3fd7233d6d1a8884130afcaac7a0ff132758e9b0c8de2a5304b67a9b9a32f9d6ee0473a66e5dfae9682beef4eba7735138de6af48ddc77a4d829b033265377e851ed931e8dc5ce93d78c727dda4e09c4bdb706cfd8d6947736eea545b995cfab54527c931903bcdaeb271fa4ce137b265a64bdf0450fec2e888d5a6b5becd9afb05144100742c0142959a431e35cd8011c59c42ada1dd8ba3667c86088a936548cecec2f202cd092b41f5912a15ae90796c136259e53993ef5ae7b7b0bd4425dc972fa14511fbae9c6d62a6530e15a6ff83e03a0c9f5c5712a5d000dd578b1c4d3995d82307afa73792ba69cc105eac81ab9ef7507365ed7862c82477d800e72d46bd2a1e4f17cd48a09394236ccea54af59e4ef960bccb692acbed802d78e29135455527d73ca4f57dc60a450cc5f7f2f76b8b51aaa89364d6c45572a6d88e484874f5cc1e975db8888d6cd6f1f513e2ebf3efdf86f67fd38ecaddde3fdc36b2c8ff80fde0105a1504da4fe662eb023ba438882e1d60792b16fce5d5ba745455f530ca81e533dfd0df598b1551938c87671173419507b81ffa626a316255d7fd97af44ec0dc46a2d42fae3bd9a9efd06e19856787b48c0d1ccb59bc55ab2672446838e61dabf47292cbb9a18aec610fb34582b485345f7c52451615dfe0cc49b1776c1f6bb1f294fc0d525c0e0f27f39904e249d2f64739ecedc4a9aae913bed90f739b871afe8deefc06f91eac7ce05fccb51dd0802de11ea067081045bea09cbd18c08e58ba81cfe66cb2d21f5973c589c2d3944e424814f9fe38747c59c2a87e8be2549fbad4c12dbe1248fd7484253681e7002f44de988456e7f7c2211f9b631082047c5d6a9cb41256228915dce114cb5fae025356e35088b34f83a875e74b50eb51e6f33dfb1b442515fd8f3cc2ce9855b041d5ab9f8e6e3e515bb0d76a1b402f230d4aba8ee27aaf24701304c1320979f45b8acc0896d057bbf455ba3f6c7b0294e95ff010c26ed97f48ee73db5bc62fc599f40340f83e07e6603abfbfb6f6e91ffcf9f598f8f7ec826bd57738d648298672eeaa883ad25375b5d345ae1f2af88815123f8fe16d97d875218b86065550b25a7e6ef62d4d9dacb5cccab3b3205a66181fe1f61273452fabd1a11db3e9765d5ba6fc71b752a4a5b91df9f35c36b9a0bd1d28072c3bacf33491d7c73a31245cf2c6c619e88d4ca28114b9a7bf98532b09a904598c6eb6eff02bfe802c6a264c4bff99f33a7913896b05cd414f900c857bf2a4cc7be81cb8c22fa1f735121bb4d98de3ad54a471a3bc08f3cd151dad543642528008aa8d3fa5e7ce1cb593505c829d9be1cf012991a2e4dda63afdff781b01dcf0bd373e0ea2cdd1f1898338e49471460f0a6d9e7139ace4a61a6a5d51177675a01d9741a2406d76e37fb326efc121370160186ab27fcd4c2eea0ab4d0d78c57e47b928333f9617a2c2fbaba4e621\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"62c13eae840f693db7604dcc5fd650e78b3bf0f78581d8e18e0d46\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"bae6c8952628a281979114bdf2aa5fd2f95614001143a7bb20fa62\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"1466b7945ce2c1262f5bf77bf7c8ef8b4c5316e908aaa04238e81a37ebcb3901b7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"c3d3a5211fd6b6a0e30bc780acf96bbebb44b6f678f0e081a1966d8ead7c922fc77d70c531\"\n}\n],\n\"handshake_hash\": \"6242ac291a874c526a0a9dd1561a460c4b80a76051d7dc3149a53c321d1db4b2506feda09d00b115b1d79ef12a20f1180a161141e4bf456912f54a7f0a98973f\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446e6d87612595d12144dd665404b95b282c38fe2de1bf0cc7f5a289b77bce4b047ee9d9d3482aa6d1230f0394be4477f4d0031fb430c1cb7065815c8a7f0ab4dc9596d3201b7b765af6a1250a473d2491d3c64aa62fe20b8eea573e66cfd8ff5b66766f113df63165455280f64660521abd67f0011fc9796a075ff4c6a26da8ed1905d93ff739ee6bdd6722f699921fb46b0869d11fc61b67ce77e06624facd7392a5d7b0dfbb24e108954b2b944f53389e7dd07a827790566ff7240926a987ca4dbe4277d4cd495c4f2af1bce25045577c5d4ddc61f75ae17e7c9950896c4de41f58c2b7ba248418cf07e864030783348a38a35861b649e3de7094bfbecc8f82013bedb1c5d7a26094386f9eae3dad49ba87732a18ab31753da49a02b997f9adf80ad30d5c7c3933f6ac4382bd04865e458c988d466afb9047e50f08b183fcfce5f03a41e0b2e01cbefc54fc4a1e230a5b131c9c27f50388fb834932760f109cfbd10dc87f2971a1dcb877291e982d7318ff5efd01c875afc1466618a635c484c005620acdd51ba66e45acf6b8a0e141e5e7c8ed383d6ae337f81c3c412975f204d41a3d23f8b281b4a9319c3113a45d06d2f1a903e51927edb3cee4a7180eab5ea89cb37f27f1bb7e2fe28712659606b3497f5d83c5d61cc36f4b499cb0de40c7be894f4d851a9b4f6169596fd246ecf89aefbf122018aa643052d924a32d591a6eee8394609c4111f20cb6840176688ccec4ad6d731dfcdd328aaa9856e786c09f4da009098a3ecb8cf59370e079bf1c5672c90362eaebc6c49124c4a3ebc382c5cf43cde90e93177b6a08b5e1051d0fe25c0662b23e7dee4a208ccc63b9f90af5e7c0923b0f3efdbdc664f800e90a9b13524be5dba4f28d29b9ff14bfa78424d017527cace97402606d47de962ecaaed9f4a402081059985bd4de4ec82c5dc581eed73b2409fee69192fd80d09131345216cc583855886cd83ac1e0f53dcbf7bc1470e15e48e079953e99f93160239a1cf0e9e8ce93e8e24689fb05cd726a29c7954d5d3f21fce4f7d436f5b8adc2b47b620f23d473582f45b879c36847a7b7c899276f9dfe77066843c0384a0300e9a72ba23fc861a38d67e3a30bf1b242120c133dd7d806b5505bf5d2493d2486bd331aa4f9dd39f853adf0def5935db63b083088c92559cde7b556cc098418f96da928d9095cd534f8c37310cdcd2268e6d232231d6acdb6ceb52a82fe49e8ab89e8083644e8dcd3181a47dace1123bdf1a650b994d05579d9085eac1f69d94685fe6ab59e6ff61e07c559db2c9d316a778fccd600d5b66d0fc12960b1d6e9a64b226b96e6f20fc18d24ee963bf17ffdc5b2e3558884e54835192d903e086e6f3509efae0fb605df88b4eb7dd9527a4babaf07668d8275a36800c1d9ce661f9d24bca01b0a534dca845ec230cb864115913d46ceadb0a83e44241182c2d16d117d1a89e8df3c4e23342e37ab5f9f120a16f9af0ccd914c3608ede6bbf1430f86bad8691f442c7636900ec246fbb9ef155d8bc8a64e880cf5467345d2ccf55942646d9d38282b1dd132ccbe003012d37737cbea0b76321f24c02e4a2870c9ca8361d454dcfa61c50affdbfd49675e444db6e7178fece80be8570baffe4ac09565887806fcfed752e807e59729c9604b7b40c91b936dfc9d60773cf87a1304ec24c06db69b9ebc8a84e5632b8a0e8e8f99b8c03ec7e3b6c640a5ddea69931000e64563ec508ef423977877ba86d314de2d358ea9dc503e703c68cd1331fcca6cbd9cdd68a2acd8d2c38601f24a6afe2300f0a06cb08aa99646580eb2f0c708c96f2c0c88b8702a25feffad8a01aad4f162b6ec3d081f061a537948fa2e3e661d8a6a0f0a3e7313425fd515660422cf32a9d23424e32136c5f7cb9ffc4364989d6506b22c7dec70fbeedf98e4d213db56983bacb2425ac739abbec4ce5952d419cf4a5eedf541fa9ec98ff399189afa54454bda7e8ad991f91aaaf6bdfdbbb76af683880cb675dc670883731228e2b3bdd08ff0dd5b38195fb8d1350577a8a494748d24e29cda814962b7c43632200c8dace6da0acde6dcf5e097b0dc086a8a1e2656e7c435d83719def2f2cc826c07d267c2a4c17fbf7967efc93d1da530af3a1f959f95602e3fde49b1f0d26b5da54a3200dfcba058c5317f3ccbcd74f41cab8b6c46b63050959fd49f5750795cb3e8a9786f76222ed227cf9a6487bb6fe359927b59b212511ea435ced0bbcac4720020ce76a5af6c7176f78c63a7d8cf57875d6e821ed25866085d8d37c3dc29a751d52f2a6258e7e0c3b548ca4769142ae3840d5059c755d54f5ba871eb7b0f5ec66bdd69e78231d8ba2cd0233de1d17db910c3a0f154634b8c7304cb3d67ca1ea94901e3badc9683ea1008c91380685d2247382e88f0b65af202955a6d062df1bca3284eea7b82a5f8425d96d215e4e062237db21f7a6be8a036a21e724ffc14c7a3855d54b805295f0a7ff11c4908da9745257ecef25f8ff14dbf52aa5f07975f5f67267108319304a22b42d757816f9f7417124e977efc069f0f939adbbdb9649968f9c0e8ea879a39a4b02ce9aad1987c02f1e8eb7b3879b043b1d68c5b783821163120b1956f203bd03004d6b12c1fb146373df0cb46b81c357feab445bb71cdb4e4409f29f8e313819a76b3d1a29454e0dc54dc7a82864b53690d0133246490\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843851a921fb399fd30198c382759f4b1f6bccb90e02fb468293783e4b025f04fa050f7f676e41bf2fa17319e3544b453f4673f6c39cd273a1d6f6be367d58080e9ffddddeaf62921a6604bf075a1f266d8f3c91132a56423d36f8c7c64876d1d343c2b84d3ebcc0c400b1f7ae620ede105987e4f2b81e601851dea487d9a059c77737a322e7ebe72c8ab8a3a35f317e6a7cd47b89df9fe97d70d3d115173e84dd28768a7078546975185cd2250a2cd31f0cd291f2f57b7839092ad14a99d0518b8ae95fc320d0f6c474a2081ca8879ce6fac065eac7021c21ff4bc838e61abb22ca18a2d96809d1bec2d900c0c6c1040538b44544d135471b17e80f1d13dc7c0b1abd5c3d85531577328f4007461d30ccbb47762102ece90303a7f32d26223904bb1d3258f443b4a7f9095643f74e09dafce939bdeab51f590223101eca92245f39d7f670a39b72d965061245b563b153550171ed395e151e5877901ce843ce10ebeb211832bd2613e557b6d85f3bc0d4aea1b1fa0eceed0545a4cc77fc58bdf12576bc8829826a5daaceee7b6382a0d5f99a511b8486c4b2f213c1740999b662e666ea24eacbaac33115a05b1b6973fffd3f5026c75d4cef888a23c82534ebb7a22ea15e498d333907e043b946ece0e9453a27839e7279e2fb018be79f7816830ca2226b8cd36ae21337f01794e6d2c5d7a23b2dc9e5b86d010c071ec4b53fd90ceaa0ad89fc2d3249ebde18072b76620b53f52bc671006483a8888bb6e28e5941e93edbe59dccf06f18db2bcf2aa55cd319c019c3c2304a955b56ac12f7d58c98bf1f74c9bf632fe1e2b0384a0c609d5822b3a78e5884af55659d00b1142b9ecb3e980e65ce48866c80efc18d18760322fbd7d26ddd64d1ff7b6744739cbc7b2221c2191799a051f7d88ae7ea00759c89d5d63fdc40990d7bf073fba66f76054033b6729ed1caf0d991afcda303d69a832219e4921ea7d2e2cc2cead19415ad88eb23a1fd7b7f68939c840075f61b3de8258a43c90783cdf01744adbc2c1f15299a9acc6410f8707b75c44ad1c4bfbc2e097fa55865038acc477c07fa583523a84f315dcada0f73effcccdbd41150cf1d519d4ff2a6a5c1cf020b0b6bd95b21902a6a32f2629feb0a4eca0b54b38016f67dc84b104c62dc04095aabb1cb5811af648257cc7589044e3b039ba4318bf6779b47a7e2ceb57cd45b9b4538fc7a052f1c428b789a15724e659720287820ead441277830adea5b9b8008415677fce6d4c17e4e28594c021e1b6d952d3c180cb0a0b63d6e590b147aff5952063d0474db6d908c6910237bb6577fd9a1a5fcdc0aacaba734c1152a32ae46ef78e0d9af0e46bb7bc335adac8037390f19ff66e6e44cf8df46f2b0a2731f2b3fc92442b483862b492a72c3ce99d86024ba65d9bb3d9d116c60e77ad87613e8f5b8f33c7b6b2261b63d40982a459b4d2dbc2f675812637ea19d5d7a22e766062ccbebe766f20d59f13554a0999047c42db1670130706a0426d28fef8080818adfa0ff7cf5d6de1db6c9df102e839211afa3cb265ab2d2de1c9c157221da64d6e7747ef8cafc2c8ed5ddead6785f8f8d0e7cd28bdce6e632fe217004ced3d801a5b0697c9a6f2ad3a8e1e908bdab22ff75689ef6557f3d43482b4fcd399c24eca7fe3dbf1350dff132230ec3c1f18fd309be073ba813e3d4683176119ded236771d975a14005721ff193bea11eddc4ee73865213cd5b72684e9826b933b947605c3e46342a954aa4ea54ade1c284ce8c57837398c93804e598c128acd4844659f58da6e1d2bbc4cef4330cb082e5707bc694d5354688720921b65d481d21cd63da9e6281e3ec755b8d8dd5b288ce45901d832c8b9889e5b72d579fbb9a1aede97ce796b931e9f36bb013d51b2b66025a88e460cefd9486026bccbded5ff7f95ddb3c743c9a65126725768dda4c13c0159e4e17b45c9444947bb731b5b9761c87d5e74d7ebb39ef852dc63c6edb6213c0e4b385ccad9e9f476d58ece9bfd9fcff4164928d6fe9d5df3ca43eeb664c2ba240bc15fd2ccaa6f65d8b5bf3614022d98363009ebcf8f876f50ced13573ee63c15e547783623fba92d5bcfac6e34e3ad23955914e8cc95a2c5542f7eb5d1b746e1818b0a1afd2dc333aee77ac7000c1337ac4db5b0d4a52b075314e9357e9dfb6dce40b75bb5b13831f18765e859314b7fae56f15489968ffa05b1ac5e659adb7edbe05f73c2f0279397e972d989960ac2b466d199bf1e4a47dd9a812ba1666e7fe8d2d59e923310f25028bc159e9cfb44a72fb6106bb97aa18baafbfdec674e849cf53a0e2e4839b5a802fc3ea7ca332d96138b30c64fd744997b429a0b5f31380339941de9ec1eb994a1b120686084001d606d47572be5d219b7efa15b7fd55fc0c21e091ec995526cc1a8420fe8cf5559bcb10ba99c6982813a93700a2fc10d74ae9ff86ff70f0ed4764ee8f7032728273309a672597d595f7258a86e4e07511fbf335a16e08b04116e160464a74af59398576922f39f4d2b82e5be4a5ed10c1960ab99d6158ed76630cc5bd8c931d8a40d330f5de9fe0d27927b9f8c261aa660180db9e7b45e0b03a6847fec6ead2ecd703092dc958b230b62f1451bcec7859056e8d004fc0f13f40234a649fce1ba3ff31342a8d65b96778d79828f3c10b76f463143f3582f8310d03ae3e47aa709466a24ffeb3fa0157db0f476ccd92ca99323129b5cc49cf362f24ad7a9c3e82ca15bbede5d88cedd64f4669d0d5d8efadca6d0020325ceab58a3c9afb9ec2f7a1e713e30aeb3565409e0c3b0b06af2e6f92ce152729ae6f09ec27053e1cce4c8cf4ad931aa825b433224088f0a7dc8a920ba28639a94afd6c945ccdb2b8427aa86393c6263212f224cc3fdcc7caf84c0b45c66cd711081ea1eeeb9a4037d54aa1f53ade2db018977e5d4da52d48c781891be14bd9826e746489c07e959773ab98cb1b2f44e495de6c452be8ac670a4ccaffa54396106562dcff9d9bd11b5e9becec0b4f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"498e90da416eb5d85b1d2b53d171ec0522b606d015ccc318c84a78\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c15f96de25cb6d86a4eeabbed0ffd41e853206de13ee06b485330e\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cc8e0cfd734c6a79ed885762daa4919734221b4325710ce8d2b240e5384308609f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"92d715371ea46e5c893750dd7745fb8a95ddbf8262a406e6f898f7c73d3b5c768ae0b7e012\"\n}\n],\n\"handshake_hash\": \"5798762263ff4f267bc106c621c76a51ade8c6fa590f6c8b2033c0ddb39c2261\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79440074d05d1677903790137ac35ac4eb5a72a34a94665d2c23b4cb415cb7c33399ba3c115c58621d8fcb0c5619c3795a76d507af3dfc5704038ce262ad3300474e9a57a488dfb5c67dc77f29ac56a2e484d233cc30e02b28d6dab12f3be78299c0edbdda9f06d9d5c5396e7433a96d1725064a425adc1d7a59d62af17080769575ca5c1349753029ce3369b762618c54b0de1d901543bed70f8606bccaecc8a4d4b98a6ed96b862912cb23a4b8b9ade9bb175495170ff29e58bf47ceda4288ac149e1791a0078062c03e852d56699c391fa6e8ea56e3a4f56f3ab9c80fe689039e46896328b5159998865b1a4355b2eb0b2cf0058332d3300e074b50cb54a2bff438ac9b71482fcdeac4bb81dde147c41be299a84ad6e58a3953cab50b1085d4891e42b5936742107915cea2d301a3d0ccb3a5c783051a224654dda948971fd6210876dbea14942357986520b14dcba50b138a98bae1ddd934067bcc4b6e34193893b9d1932c9da068fdfa231aa25ca87d903f308eae1b19f40456247aca83ebdbce320a8ef4198f5f1adf952cb32550a9dbe2dbc3c8ccf944140047c57e8ad4c7a63e3d9ad45b74f1cf8c27ed0d25965c7e4dbead3b97c6a5de57d455d809492dc5f7a8af2b2fbe42e047f02719bb340aebed3bf43b9cc182f619e068bdee9559469d4e3492aa596e906bb8973d941d29a8e59127947c94f87b5b10eeda6084c226afc0c953c8ebdaf5627253219dddaa8c6b70b6eaad19399147bfac985f410faf1fdb448d82fcb65a60c66279459b48326ee940c9faf934eb034bd0337e9a5387a65143e73dc8643d83a884274ec87d5fc11af3ba9ba62e54e3f881b9e2e5481a75fa75804267f3e75d0b1ced2afc1f7944fab380b7b21c365c0488ba057c4e05182faa6dc11a1fa3e1fa0b3bb49f0cd9450ab75268b91cecf43444a523555e024f479cbc96751cc22db1ac326d5dac9ea4e087d1f0b3495421fe3ea9f3b1b41c6359b29cf929d8a691f55d417d8d190778db1cfd8f9683c0b82a421a1e26ef11434e7a5d6dc001cf16023b0481f289e9bb935a78e5e8f3a480fe61ca73b843db474af27661c074849ff4d26fd86ec6c24d95a798aa6c8b842a25b7d6085a2020817d37b8cc99914f4bc90790c89cdfc22008f507165c9c25bfb34dbb5398abbd9836e5721d85f0338894851c8f72442de2f82e6a8a05a80efa6f07079e07a069a0b3f251c3456a7edf513be047be3d1c5507004ab9cd9d288f35c9b7518dc13ccd69e6cf6b3638ef786470223b08947e0f128f63b9e527a2506fe2d1239391a28aac8f2a7395284b79cf2a1320e61dfd62c642c391dc691a0cf6b3f20520ad4255cf72be0b53663975c4518c5569582cf604dced14d1ed3b5718286253f20f7cb8c45528386e6ba827fafb2e5742c8021bdd106c91790894c66ae10c5fe8f21e386a353caa10d1db752ed321a9449fd2aa78ac857c48aeedcc1d6cd41a61b0e2ffd067af806dabc2e177b744b3a0dd73ec4f9dd9516e1a59d9e8d5bbf9f1b732c69cb54b9388c4cc767a2b348d500633e31f50967b2a33bfc7347172169a0a747d031f3292fa322212dc33b6ed4fbce70f6193b47dd5a5f85fe1690a9783bd3b3986afcade6569a9a68b3066ac511a43c7c08e9b64e2ee32a60b1ddfaa6976d7205916415f2336f7004478f03f8eca7dd843dac76fd185fba801ae029ba07bf0765c7cf378224e9e141136fc79daa11048c40272ed40b038c7fa7d802bf1230706636d96df011c894d67bbb6fd0e7996bc49332af57be9497cf6d6782545525e6207180b139402ca344d4630dd7ed6074baae2e7fcc47cee7f3ee09688b32b1ed6ec897e214abddab6dd4cf1cfa1a7a1061da532bd517ef82b0cdd6f1065af8d66d13ffdc2bc241bb1aeafda926d936bae5b4342e900c7a1b46f2a577fbc652cb376c90da7399c507c0ba79960e1ed51145caec6a9510d34db9185fb99e33d4d6ee2e32ad3d90eb4a4fccac507bddcdd1931e7431df036db3f466042ce0d5f98539d7dc73463c1f277b16e4ca1efc4f4dfee6a2b8ce57b2c09c8dba1d0045f5a1be35efff2c5da572bf33f0364aaf5dc3778fb556dd005c7b1747d6d7ad41e4862d244fe512069ab4c812f41b331182e63ba55c90ea4569bf1cf8b9f80f94380b7e3876aa26f711768e2c7bdea6583fdc39846b829ee50733cd1bb4bf9a86be2052d306d8969cdfaec881e53ff2b79e728c50bd06a309b6a599267b0fe14ddf770677d4f274a524038ac70d7d5f331d0f5916d4a25c68b3c0b515580759c704f9c48ae97eb00efa32a20b8fa17c1a35b27bfc2d50d31a97403fe02775efe6c1306770fb528c4fa35a01b91b56ab8f90d7a3a08aed654ecdfeb6b328029fc1da7f969e3252ea8e8b612f5015589a4286bf7540b9d12b8c9eec07807cd1d979490f548599109e88f017e84a5eb849700731ae174d0475bd5cce878d2ee57271a81e54d8922a60a5450be0bc3bfabfd6feddc31a1fb65dd7b5b9ee00998e5598b53f9a3a8c69052e9d893da454804776a5cc15f90b93ec112ddc218436d7e1c85f8296e4dd70cd95199967d7eb0db49c41e1c84789101cb6b8a0ef7b7c93e548293eca35909b8d3665b3eed0b177022ca68d83cfa842aaa13823802ecc9848a73d839eaecb01d079b9d8c41f65d018632f4345107ca40c584fbfc794419882724\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088435963547c77a4a9a5a9c4265afd9aa24d9bc59a7159bd8ea32d0e6c5cc2ba536dbf18a246d779bfb5ab718ba196c0358f09f084982187913e89910d254028df7bab2e1fe06302ec834d5b13e4ae7b5d1af86b156baa7032786b209df18a5e2af7b3e423ebd8ec82b94d4ca20fe0d307eb0cf175da96d9394f228ce35d2944c6c3987a732b8d7da2fa75fa072c2767f87cf0966bdf733092bf4a39af46e276bffd068bb4b20cd9754c4f6d32c8f2799f813ab3a2d377ee987eaa1af10bf1a651a58d2a80d478a3056a5f402ea17d2a236342a5c139455fcc2fcbf31a6efd7c203ade08c2e3487fcf36d536bc16190b1652a18c9d92d28bb995faf9614287ccd48e0f19f6b3fdf5b167690806cfd8ddc642d7061dca130d802f369062c2cc667301f87f2303ece2f9bd942b301a4dda20abe7daa9528ea79ea3fe9bb38d3cdd40af01749c0d05f895859a7948dc392f828ba080d5553d2211c78d622ff6bc8b37dd38c04143d0f605f02d6da337c89d131f48e76391be004c8252bc882bcae1870c8bbb8866752d97ae4ac5fb417ae140192c7b658d0f041f2d396f0d2429d131a95b850b5d89d7fe1d9838db9ae22cb4e56eaa4c115c04f86b2362944e25d92f31842f1189d5358756d5f0df04103fd0889c09c76d84b086b63087231aa7dc7ba1f4cc6df76e72ef9a3f19dce32c1f2c1dff4da53636820ff967ba8ead84fa60928711050abafba13187208c8060afef1cb1dd49d0931933643e7ba25e8f793d6d8247afb06dd3e6c63bf298c190fbfaf3fe72967e73c55c55bb5f66e993a8a95c74bd43513b6b1d3c57d29bcc84e72617ce880d1cc311092bfeb69b53e8aa136da34c6cb9192bb169e2a0b4df28911c4a80170948577968e6be06730a4d9761d9e29f757abd953d468583b060be1c69072ae36c51e1e88f7819a98c8e0fdca63871c722c96a2d99176b5ec1393254ba468672a8e41a894939cf794ef131bfb45544bc1e04c73bc217e99651d760035b2266edb2b34e300078ccf82eacf9627594d3a9dc46d345b232f7079f2a3013e17bc920bc03bc2c79387b7dcbf3f85ae2d5939df7c30e969a3f2bec70ace2df2a48a2f3be7ab32949555125e90143ba98a9fd6915c932b2bcec7406fc5dd6511393d1569fbf864d41098dd552f3f8f5fc8dfff4f270bb79137ff70cf94a84e1772192339ea6ab0f41b4c512b1c7a36d796b64fdb58dbed92da06c9121f7186d6846a70b4eb2318ff6cfe9c0a365059a9dc4cc59bd49a0ca3a02920697d1c39c97823929422834703984889777b553dabdb2fa1f39e73fa89b4974f0696d65d012337654f04752ffc0739612289a518d8c44c69b35fe4506d80540ce44007ac2f0506e1973ef961c0fd06af8c8c289270fc783e8eb8b3ab1ace93ed792904838e7cff3625a586efb0345111522c841b6c592e2c44b0ecce883b159f03059431ba6a7d7abb0b970c6e3aad4f79e2e830f0e465ce0ab9aa781c2824c5d1e83a56fa4f8bdcc7d71f237c0aa593a96cd03173130fbb65edf8d69fdc48f9ff4f852f8e519ef0d79db3cc311ecd8173e9f9c3f216a01af85db5372b78277cfc11107d2ca1a321372519b017238f4292a50f2c91e8c5d765e7ff914d2e400cd5d2f6a14896e97ec43fda8bafb153594e58df283b43cef908f438c4a35852ac73500631f1c47888ddb154bbf8c74487ffdd611f4b46dbc0e5de54e2ede6003062a229226c4b088043a9a62c5577df817deebe93a32958e2efb8f539f68fd6f24d1538735970df47562b2dfdf83c9609c87950c99d10c613e715e50ba8d1b8aec4461702eb100f2e200a40a7020aa6741fa95851d30fa5475bc48c32f7397ac185e58dbac207a48874989c3ef42e0ff7c72d807f7e9009ed87836167bb065b403a0ffebd757681dc56adaaf642121e31ad879195c2b84ecdb45e8c5cc9d50eb7365693cbafaab7c4cad85ddf87be45ccad8dc1b44102cde54babed36aee04dd7191aa88318dbc979c55508bdcf9bf6c4155e058696741fb5eeab45ba5dd4c5adea474efa5a977b90314fb68a5f0a68ab164caeaf9ee2d6e7c328421e25f0ada4945b2e05c98a1cbbded62baec67b305206f0755f1932cc8a0058c5c8243a6bcc418050d63ae0f5ce552c5251cb31eda61c69739ad4778b0d8777cee9d63ad5d96c3cf840239aeed0af09513507d734af546f7497918cd09aee20e6d54b9d27596de295cb3f7e5c6bad04f024cbe8af417e287918e91903829d39cffec319dcbffef0ec6c6adaa777eaf84fd4b11783f2565463cafe937fa53c4f1dd52e8fca387c23e926f43636c6e6030b2539fdc2956244485e02fb10f9b2eff07614f8298089a5d3adcd3cbbbc2d25ca150318d7178482eec74eeddac87a3330b07d1ebc267dacc094d12b8dab11c7ff1c045326d9bd6661996cd2ff0a1ded28c631536468b2c88e230a74a21427ef64b1efeb9baccb2be72fece5f8eccca9766bf57aee7ebfd1ff6c8e9874cf097ad6ef38d7e671ecc30c8f3f3e14b0f9450ab2ecc2440631e470368d665250aeaf3c569ead19e16084030378adebe0d87ef871e68f674a2a9d36f7014884b2a0dd37bffe0f17c75b3cb06246a471f1a378be4ec58defd006fdd93ba9e6a3db92b62daadb8af32507ef14d7c8d359bbb7a280de246b23e18ba5a761181509783948c907e489a12e411446e0de4e51430df0ee1fb5875648fb23b417c1ae39865ad242980e486a0cdfb648cb1ecbc0061bee976a2cbb2b1eb7137839d1335dfbea46a751ccd2d81b2a7f284aa50ebf7e16927f6e60aaeca982d73446fbd64491a5268644e2b16fa8b4b42715c2d7be3770b8c8388036156c1884c617eec49f7ff0932c3037b8faad120176ccbf2e5c9599830336bfdcaff767cd1fc4bf73b8ce59c84eb1e20f0ce3949fb118c3b35cc171fc410a6453c797666ebd6b8b453e5e7471da6e7f6aa70e728fdc76ae416899ae2442e9a753c272c15418eb2fcc18d204707e69e72428b45ecd869b7a8\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"56a7aef997a2a64ba01e21274e63a92967b16f52cbe80a7feb7a0f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5c857c137facd54c51e0de6cdf596368316a65e20cb6c6448dcd39\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"4e6eecfbc99714617cc49e097d1b0f5597d3d66f45fba666351ffcc7f7e5724e25\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"45331d17802b690f754845be4a708c8f0100bc2cc599f1fd7c5c8377514d850a3f4c4bf1fd\"\n}\n],\n\"handshake_hash\": \"9d3d49c1dc4a60c3d5bbf93ab618b39778d82316abe51cba7eb093458971b2c878c25509e2b3b2899901a5eab077ca1aa5b86e5ffa51181950c6cd184d1553e2\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944f8e7737569e3d106f63ccb5b7fd7ca9924c81a776d5bfa3119e759a25af96e1f6e5d98229670094ad9393385edb45c0c18033ae4493aa2834dd9e9e7ae1bc0ce97d3f8076023a5590cb0c1ed0cf6cdbaefebf5121b4a51dc7b752e0252da511167cecd6770fdeb878f24151ce28374f3a6e177a124f12fde9f3c99999ea92985c6e47c62a34063a8dfb943604ad7644d8f17095ac839341f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843a03b9ac3afc6b8b38695206f33f0b5e6dfa76ecee3347b3aa4ca9720cee5c594422cbb7354281293d44b702cd6dc09999aebf32d5affdcb26eb5d95b1dd8c31fb00bdda3f1aff8a492c36bb84593e2513cc84698b51c8320e330265486d452029544598c7a0cc11a31ffe3d107c9ea39f308f0232cb3cf64c9eb702218f27880fe3963ff305c484e6aa47f68413da138caefec6a18d1ff\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"fee5bd163525392639722c45b31d71adb8f2908a658604406153a7\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"2350f29700f052644f4203411f10abce2a784ab7138222232253f8\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"22df20a998117f1df2f1c3ddbebf6c4bd5820b75e22800404c36fb6c266d0416ad\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"3cbd734bac62b708ab89b5e7945c3ad5cd780cf89f643d6ffe88647738127910d039b20760\"\n}\n],\n\"handshake_hash\": \"bc66bb55205e49b42761fe8a41f5e7758a140f01f466b3fb9ec20efc5578a375\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79445b686deb8b9beaba56cf1faa1267c1425078d96ff1ebe4894da01f2c234ecf24717ce8ed49015f2be2d846e2bdabfd1f33b99ee7c44dd5643dff9c4ea61fbd5ce2650534ad654de41cec6c84eb3ae5eca56ed09620b2a44a132f299f27a95469e68209f507edf9ea0a47c7573a414761051dd0c7f532969dc855d9baf0b63dd10d44bc60aa2f27018e12f55fa5facf910f31c136e40f1e54\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884385a15c0b3bd418035072d307a7c1c18ea2847868ced948c666f4006a030d3fb6b9cd333e4dd49a88f63114ab656937281cde867922023a7e61aa68a592597975c2561582fd006a4f97777ed94080be1e7b38304b8e4ae691cc7a142bcfc19f809b048b3239da8f92cdccd72f7b15fa4f054182306c5e1665ef154e437a8d73de8bdeb8c145e2d9ff6032a6a1e8763ed5df9b78ff4b5b1d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"02d5d29e452fc0492458cc3a7970bbf7f44629cc56e22ae3f542ef\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"d7ad4511f2afbe6d73f7bde87a1cc8ae19851f279563f0be862c98\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"9a04b77911b6223bf98acf3edad175f5a7a3e6802e8a88278b544fb6e35e01395d\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"20acdd435507da4400a7ecaacecbde7bc96b298fe2bb6f29693b59d266946681a31f64b40c\"\n}\n],\n\"handshake_hash\": \"4ffc7cd0222cee41f73d751d794750734674be09b6e1515d490a2933ddca9178adc67657ae32d829b48153dbf5bab68e2a3033a4df82ae652fb3f3630dccbb45\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c794422cfa2dce017960012d0372a56c4f57289e18b2ff024f0d6f91eeef3e0aaab2faa0b593667bf1e99284dd2357fbeb3ebf864290025b231aac98618e091cea4228e755bc1f83cd67ab7a6ba606e5e9db218d2b0e6b5748abc6fbb31772a3769557888e3afac9c0a7e3b98e77a89d720c1458497eb68b96d9c7a94d2d2ac7071b076423f6e75c06c8dca0d2b49b49f0a443ac7ce7aeb72098c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884397f5a1392d63fe5dd913426840a454bb0d8392802c2e20439422ac2ce510a80d3efe3c610c9bff712f74897093aa89825dc7ae24e78ae488beacdfa60efe19cb1ffc585927a921c61ca37976e5be6f30123a3f82c7ac4657d696e32063ebf406df50b32e6b69533f628b1addd47b41b48984b55bfbf964f981fee0397812ebcea79ef36df65a76899e6597d88089a1936d399ebe8dfb9f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"1a65f18f9d48937d56f410f3a2409eb326b8a4fee7801a0924506f\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"ca766629759c2dc172ee025c8cd70f8dc4f403b88b54ee07af7041\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"34af6c9b70e7f3820dbdfac86d5e2f9d74dabd95381b5f03f10fac03041cde7a50\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"83ec69daeeeb961f9faaf216701bf13240baeb0aa72fbd8ec3f5747a375f7d237a63bb8e80\"\n}\n],\n\"handshake_hash\": \"7544c08e876b6b3e4f55ab035d136eb528bff1a5eed970eedcefff3956a84693\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944184044b9037b3dbb56076cc2c4e92ac73d2717e76ab841224783c019f63784acf60eb0f5b327046b67a1027a94462263ef4df8fcf8c4c803af131d5dc7bbef216e7bf498ea4ddf21904a2fa16839dc7995ae79653d882c87c85ef24dffa9071c7a0e388bfc7f6d72279da05b01fd8f5e2c3f45c248537b0e1513a0923a8648abc2ac142f49b640f16d878ab42c30ddc78bc44a8055649117\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884387a298b782c281aa96f40b51a51b72f2b2d01f9f20063ccd160808dc7b13efced79ae87ba1da952655a23dba2c5dafbf0a169047ae52a648688711ab5f27ba2e4f4c553bd33cf602a035604355f247f439ad611079f36ab5551f49defceb482dfa5cf933826aa6dfe8bc95095d57f2fe0fc8a42aec80ec127e097e4fb443f330f6801ac59e7aec5fe7143130b3885eb84816b905f2205c\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"34e2de529ce6fa44a80243864eecdd5d4f4eeb57bdcef508420844\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"018758137a7b2e0d3fb591fca92a2aa2c1006c757559541ee66cac\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"579c3391756868ba363f76a3fc2a1d49c65ab67911a5c4dc6890bc090f8d86b9b3\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"bb53b9252a95c3b818c7c0feaaa0a97030f15871b1487ce523183e37c7f6f36ccbeec2baac\"\n}\n],\n\"handshake_hash\": \"ed014d1286071017945f19ea45dbff50155aca28145709cb80d45c3b2544fb60f5b1f1ca76141cf16689b833f933072126708835c2219e6cc1251a44eef14f6d\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79443f57cb04451c6f779c7531f6a28b94a7458561fa236b423a2843c7a0b8e5487233565825af7deedb249c5ee36c2fdcb52a128174a330441fc3accf7617f408c3c1aad7e8da1ae489dea1028e35bc9e3869ce00a4db8751060f88bc857413630b8e0eee0c7dabcba791cc40c67ac9f41a58eaaa98f467f8f7f0ff75bb135eda1c7c45cfb50729d2dd544b57a397a57936cb9da443085e1f509ebb682a616f0a4d3bf7f0a427df9b54e3fe07c7d6f05a17caf5afe2f1c3f6daef311915c67a1d7c02f4cc37cf9b3bc28575d7849756418b598c35220a138575cd29a03e6e353082b29fec1d723b4c0fb1bde1057d401583e9ace6578915ebc6c38eb9f122e646d4c7568922cbcab2a79c8bb8dcaa55b4e2268662448ff74a2b9a4d7d89bda17ace59225502eeec3ff51a3380c72e4eb9e34eaa9996d61e5502a99e262dd8d7309f68228a27fa4cd87d2ac8022622ae5e0708f97d6949c59a41b5399b07f588db2f9d8e62dbcb7ff64b72d40928ae67ac853b8679a074bd66689a53bd44437eae681a85357cfaf2b131642a265f9e8327b63c136f3e45e87a46e80f8d0d02a7d113a4013cf7ce220bc4909dbd856fe1319f99cb90ee5573026565d7d9ba8a1939023e09a8294d6655cff1ec6c850297e1f559949d83549454b3ca6ec7537238daf9438a28a929948c9632591cb10e1cbf287a618d3328fdee047d1b36b66243bd6d844082b884ac91e15c136ef8e105baf4f8c0e5aff1d38e2a908b1f5f1625589a4738640267aa17526d452f05c6b9c98a351960cf184b8b946743f4d9d280b27f3a46d35d5a94249b7244cd40ae73aad535730f3b531992594ce172e22fcbf96b13586a205365ca2bebae6a9f2cb154c7610b82c8b16cc26a85253f3c15c6018ccf6520483d35ae5b0941c410d173617b109db3fc525381593ec5ef3f0ce25e907372fa534ab7fb7931e34d298de90ba466ba997f720b688d6ee8e51803a6286ba66d75639630a67ba28b0f645719df9c54fa215be670a37dbc216a9190fb112acaf7e799b7473584df8105abcdc971648e9f73754cfa9fe46844acde10e9d80e27cb6c4935c10d8fe9a93221dcce6cb1adf2cba564375e2e95895066e2f8307c8b696ff0fac6d6179287e5806042f43719ea813bc5b09d3436fe0abcc8f27c9c0d6f064a0eac0913a46d459d6e71c9bae580b580a73c5d0dab09426e68e48d5f9afe3c15152b3974f135904f89309aa287a8c8bfedafe3346ea089f5aaad56c05520dd02219ce0d921f983e2e81632ffceb6347179e3bf33ab98c75883dfb59f9496feb1fcd954a5c89e472e14c0ce0714e80a0fa5fdad3fe085591b7d942ce962dc097aa9772d6d948777d561f99d916326ab119856e30dcf44f95bcd9352550d283ca3b393dffd523f4377693d4eff567f21625f3eb83359ffe85f86a201c5771a21ab5bd30bb4b6fdb944dad6728f6a5bac3ef5bce42a51735f4b719cc574eabce33d32a2481b8eb59498ee096e561cc633c7894d262bddd646131b4062a2e194019cbbc7261226bc8b5d60adb6760ff46f784d3348ee735ea8a7edb4804f0dff6016ed5629d2bf7522ad14d637e24a27145a4447d3b21c2b1149966b4c37df58cf97e5a40d9a7214d44719032c6154761cde01f8b372aa2a34ca8d908baa589ed14b9a5fde7161aa049299bfaeca07443c5a722c8cdcdf9cbdc6695853308538a80cefcffc3f422ca63b0c10ca94cbef8f18bbf686daeff92b90f04760263503c257c9adf746c6bb43efd801797e30504fe379dea78b9e67a8d0dd7036b0a026c2af380d991bf613a2a925ca932f2061a27e147a563f777c0d03775c0c2eea6ed90f4bf72bfe38642e84f944069c52c9c8600073b929a95e23a409a90142a0561729e354a6d43bacad716fd06cdf4c39722058b82fec607060484523c37283045af69a750dd19bf550c2359839c35893665d7502725376b5e4e873c1c0ba6171ee89e662678ab6576c57b14874ff9d15af035bf46741491e09089589caadd816f6631d8d62086ddf496dc74fd9d056cdc63c2be809b7e7d32118a9de65208c0c3cc4d56c8f8bf46b28cebd1ae383f32a5a9215c30b3a4be2fccc08d382719520d681e7bf6d75145fc334c45d70a985de6aef8da3383581d190694d19cada1842cc8e3590609320873938acd683c59c460219f49b5f9d33a942fbe29d3869a44f1d0f4cf77fb183ac8492780dd6f1f04f3ebde140d962704ea0d7a1edbfe4af74cf7ee27bc59608c286d0d30e6818e64faacf02c5739a19db53517f70a993addbb86b529dd21e9cf9dcbe7941eeccc8fd8c65d7b14d43baec8b09f1eb0ca8002cd5543030d12a2143a993714ca00553b8c764c963c6f886418412eea947acc6cc8f9ecea1dba2e78cb6a6591fbbce07ed9e46e46dc4134bc712a3251cec9a4d443b2b5b9079e85d04366f18ebefca3b8fe70700b8c9fe920206b51df7754adc5a2b3ad0c4d92cd42254f21857a2e09d51e16c241d9fb0dc9b07de69792e61b299a1e51ff1a3f8bca1077891fb52cb84730d648728fb05d0145fc99c7a6442997d6e44142fc97b3aad695f498fa3cfed6703fbd04a9a1054d8426821b2110acbb0391efc9508d0ab16548cfa0702078370a83f456ab10fc6e892e3e2c7998ed086b76ef0d9d57c5dbb6cd721c2e1bc5a32fff436d72689b6b32a8d5d9de69e\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349b1d60a93b7f19f0606927e918700247d2ffce7fcd65ba7d0006cda440a6bb5de389d868edaf31ff4f93d3a50580d61dea443e40a3f26c26e9ed683af955cd5b3e432c98be98a5015c71943093e8a8a272e9de3d56106bd0a415747714e94f384c626838c66043af82f502f89448a505ceb262306a6387791437735ab16185efe7dc3c627213981a73c2fa0b49c8af054451ee9e5de9843613fbae9c6cf3baa570a0afd94de64a3b5b832af7dc80db07596b6c6443a54808eb990b0962f1b3c0756169f7b14e81c14587da2a60371aed7afd2d0e57e04193efd5a00d3c45a26734c8bd3570f445df05363964e375f55433e9f2cc31bc0b51e005bb6999b5b4b84bced0ed1c4341ee6d4532105b262e890f4ad753a32ef920ee2ff14184f124a6479b0d8575be18deb0c592fe5cbebdd58f5f48275543cd5a76345e19d4c9dbfd8cbceafdd49f22b330f13860038eb16cda679e0892115bf047894834b778904674d375d88288f1c2db03973668f29349c8a1e4cab61c9e94fd03f12c39129d21a3031ce89e2821a16806c4ec648e2e2984b38382ee9d6106194c02e67644df53502a7114be234d46c8f01f94bdfdb33de51826c96894c5d9affa46ec74277d532f3e6be977e652a13e4f8eb6baea249873b69ef3d51980e1b961b97fcdfd9df5b80da4d4e8072f16cf56940566a598927153d196a9bd69cb329951efefb6bc98a685355fe4e6a710bb6153bc2cb9e3e02d5c8e0b0517575dee45eba0bab232f872f87ce13f18942a5b0650e357b8e3e6568c0a7cb3aa4cb90aa2e4c96e42acf5896ff145e27e3a2c08869b3d5dc3f8a10fc42c774b32917be7326230d92bdff9e3b989ec4291f730dbd8c2efa3d02a95fe7296e231454526c4acd49d3a23f69165b6860553cb116884e9495c57d517362fbbf27bc4ea0a6b6f3c84103bdfd76723b7abee16e0ac91a296a80780290d13841d1a02a8dba98073eba2935820ffb1ff136bbb04380563d0374cebf9719342fa9550056a9042588f9009c57f885015a792f433f037978585390e615ccb5f0ab082e633337b5de03d5fc64ed804119dd26c91f6d7e5dff9e52cd56105af70716830e69797e25b0630f2d1546f36e57ab8e0368bbcd9201a030e9c62c2f1fad01349aa04d65c7b87a951de684a1c5080d1c2034cbac8bf3beaae2bcb176c9f88c3cc2cc43984607666125141a2f929eef9d3e4c7ec8e697e2b55424fd76737cc9f41c5854c3ca388a37f7ab5d0aa0c0e5e557f1308cb763a86e0b654ff9b9fbc31422844f088531f9b2f9bcaddd35e73698e13b6a26e099fe365ad48747dd84a0bd032dde306e9e042e10059283a64de0a6636b012763d732896bf3ebf3b97fcf521b8adc731f29590b735d0b46e46bd7502509ae754b1835d0b54b16fe0070545b20140761afac3251663e24691467a870420a2b2b0d74fa63f10454142628bce75e73caa4f05018ce0f4229717869001b583a6cfb98d0da1f3c5dda9a7232c82325a6d16d80186ded9bb1d24a30a4e04e5383872588d72dfbc096519992b86e5aca23d50b039d2c251d319d45b5f905979e1a6df99ae0f2fb361e33a6c7e1e0d9163cc4336dce37334be2d0d87943af5309314c2087cb41cad346e39f35a70a9fdc372002c2379cdc6631a54dbcaab70af99812732b9fd56533ad8a2891ba8781755105ff81d4e728556817c8cd31998dd9ef5bed637986913dccb7e151dd645e89c3bb909b8c7e9eafb91de762decb09e7f5e521d81cfdf64c2225cfe17259a2be1c0e418c27eef585765f2d1c179e6fd8a1172cc1b3eb4626b1637b52546ca189c42c16a8e1c4717a5cf2dc594010968c8e3f49a60a279d8ccea066048ad91c7261eb20148ecae13e2b654935a7c95ee1f8c5f7c9111c79e36e2333d19195f7e5056e424dbf36669e21982f8b4d407b09a12104d4e96b94619086344ba106d753bb785c4e1edd61c1120e93f36db2a4f161f1da01dbac2abbee934f3b010ce2c29c8bdce27a58e4d1073375193fffd4639fe76e27966c5f8871dfeefa87f7390675633c41b309222731260fa919439870dd4d32972ced9d4a20da606d13f90f67eb5bbaa90b46b575f35d8f41facb4a08b7aeba9ddd318be1e48241e20baa5f6e5a5b607b2523833388c6734271543e41468d00f473e0dc4d829009f1e1eb2549ee0401db91e31c7d507689e7330b1593fc20df5e9a26a4a96f4cf6d2fb10121a327a37d8238b729bccf444986cc4b23b355567b4d2839f2e7166b02e23cc9709bb8313e7fcd6de8448ec11881bb50f440110fd08357fca338f2ed70a235d072406917f9000a2189d384580812446f5de7506de22440fcedfe189cc7068b77023efec92c240f0e51ae4f5487d28f42fa33605360fe24c48df2216bf42089034f35bde391d238bb622a5d2b925097c9065270a1f329316a02eaef8162b96b71af34ef895c2f9e7897855f676124c280a9d0cc1d93a5a197124c063918461f51946422abbccc5bb1531a50c98b812a947851e153b7d27dadf490e000d2fb07033f6c834d050600638dc40cd619ba56a664ffc9e5e4e5c14d356be1b4d3e8a9b4e6ee79f74ed4f4902094916abb6bdfc14fa478ad0e9a61a5a5e47c42eb812286f18732a43ba094e6b25aaf9ea6f6a7c80e4e6d0de2e9b335f019bee36100382e6e791c0c47ee3183aaaad9a29dda91069d39f1ee83692c37b5813b042b9456a4b5417623b6208c8e5a04745ffdbada1847a544ec7db198813c68ae563de5b98a536bb8cd896e01bd9d8a19c7c9aefc50464d9f1dcff3d8f6daa8b8ec648a2d75612bdb9aef44aa9688db3596a9ab485a9fcaa7ca4866be65b0650e65669a69f26c801029d720fb91c635aa24a7e129f366a588754730176d29dcef1abd9dad438bd1fc7bd7b7b58088df7419415dbcb6d8300099dec88d4d7f5e6b3c3b23a63d8fea5a38d262ecae2d456180bfa54125e8499cc0d893388941ac8f6f299608d2b5868a744eeceb90a6fc6df1842\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"6ae107428ae7616387155850f426153b29207fa63f022e4274a805\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"db7bf4291ae78e556030d446f3fc46ed4c047f7bd5a052d9b93fc0\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5d98035a3a5e6bdb0e2909a8b7bdd2a6dfbe324090bc9310cf8a6c75d9e54b31ca\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"73a45c201762f0ac58b6bbb7fff27fe6a72c9a66e2304c88762a5127320164606ee0565bb2\"\n}\n],\n\"handshake_hash\": \"021d5036ad1b6aba7e116faa2a8b70ffc35b549b652fd6c381bedab147c2eaa1\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944e707b8695a9459c08f7a1aec80d8f197a845f2200e8442b4f0775a4f4a483cd9a266ea2cb9817ecc82832139f2eee078b14d93982192444a64622c599f2a0b05f0a5cc677b3eb4a49501ecd977a287e3c7fa5873143b5b3763f9e5c8bca476c94c66b344b3837bdd7986a7972e9bbdfe3680147e66f523ae5efa22ca97356e86d62ac3b69f98e0d77c0da7f43be97fcda93045b50623633ff823ef894f6c03aff861eb618037c3c9e3a4ffcff50bdbd967817922614352ffbd5dd3162e7abd2f69cb1957381ba591f208d61d4df57dd7e1106be81de19ebba4bd61c49fabe227560bc4e0301c069a99843e747e1d56f18001f5ec00481e64cb10222616fca7b5c8c47aa511f562f85de587b5c8deda989b3b379a10f4065bf9ce8b0959cd232006b86c6405a8f606cdd5737581877fe54e66e77cd413447c44d729eec48384dbf4c53590cf7e7b368e6afc7fab458744bd303df80d6dd2927fa1907379c5ff1c708bf8ad400529c19c4cdee96e12860bf064adeb522ad1ed3668b3339d87356dad45ea0ad0aff28efe7e8da670623726b709f3eae9bcd666730cbbdb62c4b6adb7817826d81bd1cfaa9a4f3ae37bda5cc882fd64ef54cd6d29297d3d9c6257da3d042c8ca789fd95d9afdf5bdc00cd79c506c6d723ffe806d5336c91f49d06c809049bd620da057d675a41ad1895af3d621314dfc57ef2fc8ef1d6d42e3aa422e7d69ffb7a2f2348414fd3ecd74391848ba782668c62632019ddfe80ef5698142bce445b75c5ffafe626172e39878451eae98a28bef9bcba99df890db50a9274866429c2479df50a22f2845187e17307c3b2d036036f8dabc183fbcb87dc870216cd37458d065f15dca27e37570fd4e24d54f7f0baac4ce1818fe0bf45aa9dfaad044e0048719e27c2a25858b206f397bb308ca8100f8991b459904d6aea816664999defe0e223a05228c21bcebe640ef27eb587120228b0e5c3d390eeec221c0ddd116a52e86c2642701f858206b519939104029002c7653654d6f6ebdcdc98bd86d422ea84f4088ff083cd20188d1f3abba24b2e22d5ff8c973c0e967de8047594f9fa5d10c6cc83bc70f7a368fac3716bb41891519e4a6c54a24c46847c0d6650f620eb95d36d1bb22ead2189030d4b1f0a4b7f2f9641c0890b17f140c386b63410f1cc831f943f23d0b2e2277beb1e4563566842262bf18da8e6843c749a52ab97dfa338933f2fdd9dedcc78f913903c795dd0bcaef32e305f4206712acc4ddef80bd24b5a34bfed605fce7d20950e98aeb15c0215622420caa4a5867ee27139bcfa5d41a52f53bfee75139523b4bd5641b7b9e96079ad358460d24f99ab045b8272c4a21becd164f1f943713f24eb4d0135980ed4c6e1de56567afb470264047cf787a7fe224e8470144cb29c2e1a821bd440e5f986dcc1dbc60f3a264a94c03a859510338560fb6d84d123595076136d33b290d4e8d895e2cbf8f502bfa7cd40372546c0fd43e883ca7966a5c67b330e7a023b101ce7821038f8996129db1de64ec5f17c97b0d0352dff661f47fe3fa038823d9cada968e60468ac6eeec5df0482f9e1e1763a0780de08a5a3c3f6497480bdc75419eea499601b8ed0b3290025ff2b3d8437ef059ce164fec921dc1456e3db3e60234b2f50fec8c8e1909316d48578dca185f7985c1ec1329b329710d72358f22b20c69926c544a7c0dc35d9924469dd0b740e37ab4fe1fbe7bd4313cc56607915372cd9c8fd6a872d4746a8cb590242444563982fc3b7caa028bdfc97431cc0acecc531730b12ac859d75ddbc657ee44a27f2a2f680229e28e6a74225ebc32ce0a31f0b24f3d9e67fb0b100dd60d0d0fe9b9e618bb6740c5ff48b1faef246abbb95915562aaaa0c47be1b5c5e8206e334165779d7a472ca8f92bc89c87c8b37d56c5969a6200094610e008684bf3f1fd64cd036f8b5c8703ff394c7be105a3441e1cfba45c5285b8f3b2e249b5e4768194a8437e58a695b7eafb158165afd45777ac895c8f9e4cc5f77f20910b4bfa9cd5102385b87b29c5fc7e219f0b6f349b10f04a267d2c337335635e21e194f46347490df97656589925c034284fd420cdffd68841a668bef87fe8074feff45c6583c444e69a235b0f5abde90f33c846aa5953e15e3009ae2f3066431c4f478cf3c972cfc87653d5b249a7ced42ca83e9ebb5f975c3a7b74c0460b95057370a3bf30a920e991442a76a4189c18db5894543f22ae0c1c0f31fb712e3d3099791af51fd6fb6a6b69eadded063fccb382566939f654e056489fbaf7f2efc06bf0c687069dc5d0516e8308779e1a2fedb7306ea27b52b8b08f1c00d3b05179b2159632ef3b79997bd6d208bd7b6393d629de49437d73632752392036e8bf1016456439e404736ef010c59c27fde636a0a182ce16a2e1222ecad6e09328978cc118f0d2fc6da2662cd29ce5f991f4d69a4392d9bc06a21f064263d6ffdc4fa2ae76e716e8066184c355e50f5fb10837d56c6d1f12ec228f1b33c18a1dadfac9d1bb006ecead3794f847a5afdc23a3c54236cadc1bfa225a9a6f660faa0383032f85fbf0836a15248d3b3d69967eb87048a9446d1de5f5e2ff8e1a81e7506d37ad2a0b325e11283dba3d70f5087aa95168f21eeae99e3495cc46ce622b9412b146a062a54862960f5cd3133c1c2df28b452df932343a268cf185e1a704b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088430951df9b126c36b1fd3e533a4fe47fdf593e44e6534986b28b55d577d642691f4c4d50c718a57955676a8ad92a4bcd03647beece75623998c1ced27d4929ff6e81c189b44d47c97a308634a157b6832eb42ec58c973c89cee624a00da36619460c834b2551433c162738cafaf640035939f2fa7f7d1df79903470009534e64f250e29a2826c1772e1c8efce338be7ee4dca8977e9491a27512350417ea2adb8777f1d5fa3899b89978e9aa484eca249e7b2d4d19cef2458bc074eb399aebcb9e0ebda3f39a71b19cf7c699893c539fa6f5ab936422194284646f4ae1a526662e2054819c92535a2155c564414c8f73420bd2d82274f5d517d69e3cfa48e8230b7d3f310da6f71bc3e6fb2d558a3a4f086c8d9bcf0e1c4c4b2707857f41715503433c03ed2d78e96168bf673b679f560e70af2d8258428b806d33a5b3a0cbeb2443c780a467999c6a73b912b62e8e476b99c9f4bb6cf86203cd8fe34a94240866150b375cb2120e9f22d897bc5881e4e6f576df1d499acf0155b67881f6455c5f40f1b7e9dc9f32868e4ee3d7d98f320436ce738d56a8c16855b512f1d7ff9066eb7c7c670250405d3f8f2531eeed02a5eaaa603ea2671bc85dcc8c204a1dafee59ba9e9493e545a075e2dcef934d1e23e644f0fb69c3bee642b3b8641c9023104a2531f63ac13b0d0df3f4b5aaf7d6198a081d54ca9aab197e9f41beaf8913888687239c56d47f40cb9011ef2bf120497e56936e4f1408074ea9a5bd7debe27d1b6136e938aa301e5e84475b4832ffcf445b406d4bbe2ee0393e650d13c71a64c8a727a27ea7e1fd1d018b02a9efef430e3d37de00ffc89617ff293a8d9367fe43034b047fcff1d99d3ce051b28cc8dd9ca6e2d739433a2b8d43f38cd1d243b6d673f435e6e4d55c117d35332ede15c6d23cc3327611cba05ed7a92c221f569aec46d84dfcd7b1afd39cd7724ef2b22bf8524c0ce3838bba99295620f43a7db8cddb4b32aef443213567c59efe6eb2ab6a295b6b9246b5097cc7c1fa04e7fd5f466f63a39df6ab71d575e48501b8cbfa7757284f4156d5bdc9fec7127095d0bce1f3b764b6936b322b0ddc28070fbf2e32b7aa980fb471430a7381c9689dc76251f4447229841f9fa6f564b0990a16eac94c4852e960ab4e03b350910d276bc8b3ff59bdfbca2df02c640047e489064c87e88ed803b610cc24ecf27f42cf42db01e7b3894cd8fdfece17e339243587fc88f22ede74e8556db1570f32ae4464db5a01a3e37445e637d699ede7cdf8871fcc4a6ddf57b98411db6d0dcd4dcdeba42ed7e99cef3eb0c64ad85de91dd3bc5221c07fbd976cf19943cd9a29e0765dee6452c559b2e5104db8f4d91daa3d0e671e12939ba907a5d3fa809f42b1879aacbeb2adeb3bb8daacac26294a6206d7dd9007470f5ca0d765bfe7d9568e286b9d38b2ceb95d659e84a970cc37f7c383b2a89048892d3048ea79ddcdde15c7b1c7f24d408ac3bbda79e7db67cf7b454df00ad3e6aab9dd298d29cf91c5982318a87e7b1662d62bfb21d796495b2f29290866f8585c2714c77ff77a2b7a3912219edddcd1387306132ca6ead034b4aabbf7b6e6af9a10c8179b34f79524174d36cce8a7753a26ebb8b6059524adc254d121be5c82633999baa03574d76aced37fb540b2a45f04107885cc5e9e6cfce64dba0f17377450acab30f06a3ead10984ac4739fa17d803ae15624562582724a641e006427c96d6669feccd13736820067f9a86ffea99f0a6a062d3f4679b02574ee0284ed2dd966c05a5b54b16f9f3e1024f07cb7e7f01c321984b1b8b8de3161690121c7f5e42e5f1a9b5e8f71143d8706d9665312fdf4225740402ff9744f3ddc2022f12f70f8536911b1846fabaf84953e9bae82312eafd2e7a5fff4d0c9638fc26d748f924ef0f29258557b6d9d6b4b991406a6c5bf5e9f566855d378a699af66e08d2e1980ff23b20a4b63336fe0a773bcc479febe9e9d28ca4f9d0d0492cd67ea3d7f8d5468c31851713518c21672ddb84036a3e6f8e50c76f9f963db2f638b25a1f75fd9a92992df90fb54493300b05d2a0c0c46c803b0155f7cb49f524c8af6ece968108ece77e4f125a573a029a7b504ce899de70b1ef753271902fe87cf70863c0c133f81d98ee71f00e8f217a980055a6e267818930e9c5662019a72962e053b320e8232d7c3210b254b2a66c289dfe4dd8be32320a9a0a7a0c3b829ea7e7ff3e4aecb0e8480e4c86fa99ed9c96875739bfae38df3c7faf6f1373c0016cd30bce78ebcc50b16fee53fed8687c7e2deada0dc7373769cccd5c399655535a648b32f89d5fcd90c5c6ae4e3e5fe2948cbbe7c34c3dbc4ae086ac06f46e4229804262aaf563705bc715a856ea3bc29337dbc61fd9b35f368fddb478959bd2512cb6a930d0d78141f7cf6a26160eaad6f1a76c5c495fe1f71a0809f242a12761aa688687eba8d9e7ac773d45a24e843447cadcadd1faf9ec05b545177ccfa464a1125886c9c353a897df52877881cf834f0bc68173d04c262341a131db7a70cddbfaa825424f60e947b3661ef7651cc81ffae6227214579dd857600894fdc65a331cf4b7c82e446841743feeab950e7356fe72341bc2bbdcd4210cb3a6c07911022c5074650352a43a9d587f66b5e2b2d755230eea08ce2f477c35a2e9a7edd0722ae9cbe9cedc61c64db455e7f3601b12da7eb46e5b765c8bb986f2a10b0e0b8e1bb907b8d334d253c9efc1710f00b2399c006853ba7a2cc7f06ab35ca06029062d83dc88a9cac860c3bc2beebac5cc321f8eca5bb1537557d235f1af203f6608c343076b36e9d2855c36b7d349d9bc830268de8bee545e76c0297420e69c776ef6515fb966dd7201b1c5db8ffb73eb825c2c96f5a6a89362359c1f5c7294857ddb6e7f37f41ee0204166e2df60ac09498fdf4284593e76f6b4b28715f62512808e995645463c7373c49a8304c6757b02bb5aebfa0e4e8603ff504d57e855b91067fb2749c16cf9388f0d0be10\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"2d044730e54daa1cd7033327d277b7cbc5cabe20539e4e62f6c0d2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"72b53bb6221630adb17bdd87100e3b47ac75284d972dd9e96638dc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5278f2c0dae35d2cbcf8a1b83937240adc765ad348d260b19cbcb2d094a0d17a95\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"75c84de85ccdaf338b5567f56fc8837284cd9bd6dd60478327fa1e5445cd26c6ab659a40cf\"\n}\n],\n\"handshake_hash\": \"a9eb5f0d896f3e9a786b4075b41495b889ec1d2909830f7dad6f670bf839e7369e830b4ffd5465da27401c98e338c83f82fcf6cd63a8e3261758c907b856128a\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79449c728cef2344f8c27077465aa10004bb3e89a4ff7efd772207db5d28d17574ffbf4d2ef929bae4c9b6910c0222639774a6e12add6fef5a4d9b95d005235ba789f1733b6c3b1cb0a5b97882a4d6eec296c0ab63ec2ee97f841650cbe9330aabb7e09886870644d1ed9d6087a0cfaad1b76c39535aa3cf4bf3fe202c42d440692de83556a7e4f1287bfdd831d402fe6ca5094065c1c8e75334aa8b1f70f317549bb19fc6f635fe22e32c964c2db0ecba650f1ab9c681f0b2c14fcdf4180da68049113279f6732a0e4011df9f65fec2e96aa2f40cadd219180c2644c3a59f4d5fc1c907bd4ed682ee807522e056d3ffbe54b0dfeec51e1d9dc7ce5cd34e4646b998609576a8e0fe5a1c1aba2f6c587064dff8e4829cdc89d2bc9e45689c049445c9afff56f753e9beb8732a3250b6b7bb45089978d0d1715d10a9cd5cd9f5d00e88e6821450f036af94323666d4649540ec0fdc4c3bcf257fbdfddc7017f5973e2c9f5e500ffb856cedbe8ce2457da44561f47da3557dcb409449afddcd003c8c6eb07391856b51d6768108767d33485138a9d99114466189ff2958a6fd79362382acd916a0a3138fcfe1b7af032b682359767a63e3e9887f63276415085f786e7a3d39883c86fc091328a253cc16f22304d471475baa670e3b17ea98522012479f7d466720870aeec4bdbae3244c7a8fa6e26a2c3574d6f1f1570b9778cebafa3d2f51d4727bce2d50f7be073c49e026a9766b86caeae52fe124c86b3accc02c93f2bc249b43255556709c7f9a4a1288fe842c7f8bf158cd36b8b97cb44eb1763f724dbe8d2873c044960c4cc56bda030111190e4075634d43f63dbc68f9205275403bf7f99d08ac333c0996626a42f80d33bdeaebd95d202cc3be5f02cefe4ec84da1c4f80247d8df98c7994157223808daeb4d963e4606461f1900f38b4290115a37e38e59e7d03e4014d4e036faa0c4e1bea0d468b66a924234b80e47ca56b23dee0270dc847cae55093a5b27cbfb5dbc6a7ad2a3c3f8d4025d421f59ad7f2ff356df5e2f8fd0540a954fbfc01c4e0c97aaeafaf1c6c873c6927cbfaabf5ada77e8b170f2a33cc114dddb5baf5bd062f6549a2eb34d7f6e1e67fddcbb66a568c1f9bc2735a1de31147f56c31c9be8329fad233406d7673229ccfd1085826e00bbbcba00f6014f80059e05b964fb62985b84d4bbfa8a3ede30190499b924adc3603a1ece57e8774c7078ebd44411f46c2c979f07d49bba2da12cf3ad0263e434cc7acb4dddfa2c53b87f3279fcad0934679fb05a920397d677893b4b6e0646feb79f2050a1920045a8daa72b1549e829e93b2da17967ae4a44dc817207bf0008001c170ae1e476bea13b7da822f293f34b3106f1322bd77e68d585e4318546030a8b99ef80b70fa058e15f37f171cf65d3c75099585c2324057246290851d1cc674a703c949807db0e01dad66cf4f2f66c15015a4e3537a0f9bd3388523c1d5ef2a87c3d8f5e3aa589bd1be65fd8044e20fc9e2068725a7ae299f8c8a4f35f10242c905a7cc116767c00fea5616d5b839064a8c3c93338792ea4ec2408956df35c325c5a02d70c05403c4f66a9b106cc3d02376d8ddd9581069699b88a98713d8be00ebb3eabfe14ec034571dd0f4427b52a1b5a25eadca6038c8ae21955d2769d1068925f420805a19285544cf6936896974dd2923c701cb0752b31c4f7d5154a84dc7cb72b816ab2b138b53a9b9e9667985d572877250208b0a17d776ecc2108c18346c7a2a3290d0dc67c24fe9b0122ac1ac56e40286255bdfc6f5be9df59485f5223fea64d0692b25e235c69f5e196dce3c71135b5d8eca730b131816693234b1488bbee19e09980fd911f4d0ff5f50f245c5df391207b8eb859c0eaea75908e095f4b3148cff8ca7f5489b4a69e58ce79f412a8ea79f89fa6e663b128f3cea76a9bc2a7f879b78446f1cbbdc9aadc322fe71899cf3ee9eec848e5a3ce1c172c6e3cca636e28671c13a665f213ac784187203163267041b65ffc19ce5560b4c23da9a3b2e61ecffa12b6a3e4b84422fd9094070d9877f4f6949ce4c24fe54b1cde243a4bb63268f254fc2e35a5a3eb276f92270870e3619e3dc0694aef8f39e1018e5cd9d85f3bd8b9b51d91acbd8d4d7cd657ef5ad1c616bf74c9097289bd2f171f83c4cb2d529a42392cdde19e516e36ec4983b5d318775a69ad7f9af08c49d33b2642e782d92b0dbe5ad1d126cf1fa546e13145a8a7c93944f3f944f37b45524166b8dfcff90d076883af84869c660dd27465bfdf8de78ec8f82fa9dc57ba12f0c058a2f6a073133e39ec9df78e9320976fb56de653e2c9c5819ffa63fc7a14b456af914e6fbfced4f16313c081631a428db01cb449c498a2f6d1b1eb6a5bf42b93fb788f20b3a5bfebd583f10ad6759cf7b9cf1c11af88d4c789fd3cdae984851b33e2aaaaf4290bbc9915b6ab13490f05e5b7418f8b2fa729ce76ba465a2efa53b5e18005bbdda6158ce8ca17ff6aa8e6fcd38adbfae24311fb6e139a0882e1448bbf8e3fd985beac994325ae637e1ac6fce319fbf93f5f058e12bcf5a7d90ed8922ee3d731f2293c1c16f81e3c8cec6e03aaa81951bbfa5a3f4a66ba0af03f8184e9378f6b9a3077f3a521637fba1d22d887aadcd85168314eba4f5083d07658cd3a52df5c479c8ca43e9ecbbe69e3dcabcdb3820e33e8e4cd18b0\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843d3cf7989f6c3c9dda9a20f7e6d539691b4d15dfe2613ee07caf49d54b7c83d538154116a1e15aab5319067a4473da245f517149ed5e807d8cc4a33e99438e9dcad1d4ec0f8b0f88e644aecc6802cde8206aaf4396053723e396dfa2d56dcffb0e6ab71ddea8a2d087225bd20d7de33494c170f776f37f7a5334757b22e78b8ac8ac0dd74ab655262369a85167ea5c34fe8c673eb47ef21cab513e777264aa26d64e6a826699492fb124ff214b24d6fce34d9ed1b5ed89322637bee1f0b8afe552a25ba4b29e9271e6612e830ae7fa4d346d6ea5876f38513f3d6f20b6bb4895141322430e660a89dda50fb32f2f4b682dc6ac540f93cc0672257eaba567de6411107fbf1a2a160300c20ee353daf487a5e7b2bc623cbff66d511bf0c9707f3b3c6d2099f984d93119e1a4176933e0eafcb9690b484a75da2f4ade2f5f6d7ca364e304964f43ab38f485e7a2343ea5b00090aa8f458eeb1e70efc70414016689200cf827f01da139d579ab7826422ed9bc5b65e8540b221cb10016f969f536c8f860f008ce58a69945139ba9babf471cbc26c3db2c8b4b8faa42f5cff6fc620ff39514632f5c37bbf2d58085775e9939b8c6c7acfbaef69998202b53f892153bbaafdc56ed59b0ce3e2b58cdf10d8048fc7b86c91efd4da18a08b6ddef69ec81dc5aaf0373aa67acb5c1c365b9c1878d75b152284163cfeb31379ad28f0d3a1a1f8caaa3262d5c27cd76f5cdc6da708b135f7e45b52db0be1afbcd265c9a12afe6442c3936ccfd4d83edd129b747ba60daa6baf57c5d55a88e60bffbc436ac14ab548e9b8d03f08652abd8c8d13e9d24bb36a1355a0785726bf9504b73d38f05a6a1fb17d46447516afbbf069245aac051ad620d80a74578e2317a630e2766aeb1cc32dc2b98821309bebea530a88db566c9628b22686efb094c6d66991582c0f645dfd7323c0b160fa30f2c85926a249787cc467951afe8e862988c812af51d9828d9b4e1a2f521b5df6814134c93fea053a0da37140b567ee5b46620f80c4e0bdb7490b30bca59eb95d638f72ced87448239522e503c5825ed67a77525fcb99afc4adb02f903c508359658266b28f067b205f5b40fa42078cf5d32e551fed2fd00d8d95ecf08886a4ac9e83d59be87be64be60a69cad2cc0da6ba33590af88a5f8956a3d0f712a789537c32c7ed543275c1ffa463fa29d5bf701dcbdd8fafd4f194c2161bfeca546c0a39ed1cefa701879139f3a470e047bf18151d7c8331017cdbdea7bcffca748b92e632f840d7a3988509c0c0161b2df5011032215625fc79205ffb26029e4fac784c5f098c0f69dc0644a164515335b5e01e5182b250209c5a02d17b34adf2609c089beaf0ee95298d589278af53d78e32c9b0638cf0636c532fec490cad269b39e9f78858192f9a64c3ca39682d66810274e5a212c986e7843e767444c838a55e09af8eb28524f062d0093f386ad237b0fcd3a065c39fa9138890fa0389917e54a8ebd1bedc63041f1aa819d2096c507336dbb3685037a9decc5b031400b106414727425a02ccd40bd3544dbd1f8597a6c5c6259443fc61a545687d86a59afc2724e02e317d428d796a3474ab024e999820443ea0a700b419593e60e36be30aada46ba3d1538e94383cb8f594a95002cee38ae30595fd6dfb8748f5bb8c1744e4793459e25caada330326c61fc57b8ee00811ab4889948018593ee5f3dc8b96542ebc8404fede79566f4c1c4f144a34240e5bc56d7fee45dd2a70e9b0f99b470b56a1bad532c1f24929538a7e71a1092177a5d49603994bf8a29cd372761ada353dbc94b747222e05654981cac67c793560164f7e7b116fc7bba071555482ea0157a0b3885b3951168b7dd3dd25799de9e7c5ea8e280f79a6f9e7cc28a791c001ebfff61a88334326b865c0e74bddf7e3150dbb261f1bf7ff998266670f1d03942c479afd0e6251f579a2e805a6f48e20bcadb3502b0c34092fd79dcdde86ebc827a748d61c6f8e735f4c5fa8ffc17476724ffe5c4af8126a7bc63b2f414cbe6c4263cf0c3ca56dd86f8f4b8755ce096b8fe23ce7597f09c42ee4f6b4e6fb4061e426eecfb4a2ea3251f418c179df2f340635bb8d05fbba733505442d780bbbd30dfea89e59f532671a7c415fb0830594f08efd6d8b1bde7a06172e29f8e8eaec7183ff9ff99503d944d7e2cc0c82cd2f81182fff36756d9d7c1a5157a0c7c98738984a4187af04e4740910b2b7266bbe7df6dfffac8b1bd40f2198e9c24e601545defb9278245271e451a8960283cc68a3d2aca5e9dfd989e1ffabbb4329c2a42685c015822f9036f6578b7ed4ee63c666151ed01eacaf93ebd7fc5aea991118e5b4d7b3311b565294e232454cbbbdf6cd8dbe273ad2135e8c890fdd502c1f336579ee19faab5a1eaae8c7cb6bea706bfa0de8ce12cf911d57afc48f807991d8b451ac5f1ab3f6c5edc31e7751483ba65433646b2d99ee0b3af0d8ce078ef1ba8acd6f41deaac07eb988f9492b5bb1b705956333b8629485c9075a02444ec37ef7c8c67305b78c285e3ff7005d445f11e3e0cc0475e0dc54e0db7126f0e0aae5d1d4950fa70993ebdda3dcd65465315bc5319f079df0af73bc3f5a8a8d6df725843813b93b27ecc6afc921f9d74106ad1143f9f26cef82b9471487dee79a283e05f656ef516abed6e008f44bcef9ceeb7d06df701350b60901afd9214663fc2cc74c2a37408633552ad6995ae271e6a8ccb28372d68271c552b8ab2230425223e83922be2ef5563d8eac6fa67093636bfe9cfe32ee3efdf2ab92cda8f66d0d252f5cde7d32fc3cdb4061d9d1a45d24a11657944833ac7888053ce0722da2cbc42704a86b708fae5fdba5239480b16a85eded85541719dca1976ddec5e34974de470e295a109d232d131a78e7e9ec514fd357c9986ef84ade367cc2ed5075a1713b20fc07094438bc9a63e8a480cd39f9acf5f3c23983a7e087de47fcd4b7b699cd36684c16db880b38222798d0f6653b46f87a421a\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"232facbc52bb52ef9d95cf0096a6ed4a7ab835f42968698204a6c2\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e86a2ce79ebd9dd50425f6c5497440d56c8ea7708ae554fede7a26\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"32e2f504e185ac3fb1b592d418b6d2f031a5d423b0e1c1516422d397b7df8a5b25\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"ca32a26ffe4b1d7a8a024fe46bfd57365275334c018ea0fcc183f3c3116fd136394f650bf5\"\n}\n],\n\"handshake_hash\": \"92c1840464bda07600b4647d38c963f5c90d2fb0c6ab0cd9364cafbcd5e278ad\"\n},\n{\n\"name\": \"NoisePSK_IXhfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"IXhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_psk\": \"000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944fe734bd1443ec88ea45001624fbd5925783cdf8eda33512eb168bd6bb864a86d99fec97fdecb714c9348d5cafc4208f531aace67356b11327f789020c39aac34148635a69ff20136f02de0910864332272ad118d3dad416539a28c09bad8c9e76f406df71a1849a48d76b55956c6d1869cb998b27186c51435e7ee95cb7f5a16d44b76d014a234dacf707393b8e47f1c72bd0b95af535084e2d70f9aa50bd1610144a4a9211bffcd51a7945b3ee831464d4104a7ccac7ca2242eac6336a95c93b3f1eff8f75ff8db5f93eb7e93ab64615e9c9af4fbb5aca95e7e6d1866abb8964f9fcbc988f4b2f6a267a980e61a6224daee64247013642eef79bedc1a5e04d9b1dd3c7ee9730406686d07daac6900b44b18a7d91b1faadc30ce0efd71af3135587a2b58d847b4fb5662c2815bd331029ce14f76b60ec0f41f89177b4033b52b71e78e60a5e3161380cc61b56abed0bc4671ba16e2679c0c00ed9166b2e943cde9eb6e03b15bb158e775a99eadf89bc44ced970f0917a2fe7eeff4cf0d44815ac3cc92b0c483693786588da92a0a5b0dafe91176afa52ec9aaea0ecf0edbc1a80ba95e63dfe08097265fc4ab3cd2f53a4c8ba63a2025f05667766cfce1bf252b210c2886b69e78395285d261bf85acea65153eb31052ae3aa9ffeeeb69d11b599a5e5e6505595c7e603e4844378acc88d04becfa30efd3a88b84243a9c416fef79545707275f93e744763676a753bf7d149af3ad3160ce971535f4d9222c0c128dd97cf760e3f158c39dde461e578dc46cf71124052a0ba5f517c886c51a1f7503fbf6c02eef231e34b144934b111c6ad6302be2b981d316359a159743984f8984d1914b0bba664b180a6d9f52d76368bb279314ebf5e999b29d5ab6e9c8737f5bb032cdf666594112e67be92929e514f9cd9d202fb78a8c022bd44b22bb4162f68470960a699cacec77d13827e8c589e431474726860945347081043b921cd72193a5600f477fe51830c68206fe71450c3e42fbfd31894d64dc66cf0f4e8b83c0a70c8f04b68e2cf4f0c795eb6f39137407763f704f58c6e5eef5b01acba66293c9e27681db132e4b469e9aa2456d94c067c6733dc1c7d61a97e041d136a337710e6d4abdb6b272abe15474a2d4901c46781e5b62841a7e3c9e964d726f567d170077e1ddfd237ccd17941c49e5a33402a03dae28e1fb4c3e783db938ffc4166b1730b8111d6cfc94ff4d6a2b46e597178d6e9a8dd6c420a224b4f16c9f42a8e0807d489ee9402e38d108cbc8ac45fd9e9410688ca527b19427cf835c87f2507c4fb9707e392170e2b60ead6e3e4f6090795bbea94cb9726b53d87da48697478d1926f6636c2d7a67ccbebf228a79ff7303ec751362fe1cccb9ceccd9e728a8662de235c55b79bc987083775ef72c7f1fc0d8ddb99519148d75998f285f62bdcf70af7de0d449f4957b249bb183492bfaf95756dfd190ce19b0f4f7bb2bed2e1785c51f5475d4f00ed1110a25d3a83fc809f610435e0dc7f2018d1153e2729abade3cd00d2baa98e032833e7d8519b18f10ceaa4f828e604a01bfd295908461aefe52b6c92c2fe4e474d5d7f015064fd59d701908864df51ffd213f1119f739aaa8e44e00c2ef09d14820f8c7d6dadcf1acd989561418e8909128b0c87014dbe8280fd7997e96b574dfde725f12a4b21e4e8a7d72a64b5fa4ad26af054af45ebc004031db02e4db92c403663cf1303c128acf3669438e777b19fe3126106d614d8617eac919a835bed00dd15521128636739335a5dd21e75cd8b1e4e31cef7253ddd9794aaf53d6b92593d819dac4fad0d9f2b36b00d1f5bd92efc3e1507dadf29a8d79dfa010903944443a38a4dad125f4b6c8f9b011e9e1b44d5dce27acca88f624b6790005585d77afd404703fdbedfd26d52588797b5341b490f5bdcd026b8b34fb53a43f78bcd79f3fa0fd31e38dc26974d6df82a118cfc8f8da2ace88dd62fa3ed80a3b683ec9a99b7eea310657c4f75b26dedb0cf3a76f8e1aacb2da0afa42c3782d4f65d79e7623e5ce43ae59bd90c48202218e7c47b95af5f97773897d7971bf6d81ff518867597b02e912632d23b0273574fa5f4955a2aac2908d0774e7a50b8ac47f595667dea219b22aa5ed00e0803a5f569adee247496c32db34447dda9cc2cc0b4ca19180936b7bf681cebccc83f3fca832c4ae65521bc5f632675d60ae0b1b624f16572d7d465c405ed8113da4be86ef5c0d7b86c7b63289c06ab78e462ab7c164158aa76afd97b5cae0a4d6b001d54cd28a7724410efb94c2f1291b51d23aed5e268b16f92d430c6a7da14d6dba957a515cfe8a2b1a642ed6afd9ad560382e910026d21a2b8794c7f4374aafb26d71794da3f0603fe29cbb50d784e54b27a37fa1477db5c284fb0315bdab20e76c8cdaa99e77296b0ebb766c94e642dd5e275f67a09470f122ede897266f572747c4ef2e640c2444488f01db5ecc24436abd83c02b3278be4d84d2b7976feb4402070ee44f7f1e781ef7506bae902114e0ea16bce3dc49a91637addba45261f833997a42dcbce3befc025ae9b397024d9396436e23c53d0e3a0c6ee483061268a55e4577855950ebc4cd76e1010441a0bb64ca79ee322a714bb04b317ad34541f4a8c1c1cad7fe3b71903a84ada895259282dc6f6e9e3efc8b50d09e2464621291147ada5672cb46ede19\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f1448088432f5c371c9a17f56f93ed11d856be4668feabdc3a9b8e31d0e9307e694e00ed85468a91e2ca7bdee06f796de23d7cbea56c6c03e2c70dbe506091f0e9d5eb6a7e1da9d83e6848f106c75b2780c6462e2d3ed2d428d4cac4e2a5edbb81f9410d407700e392ba320f4fdb3cc31b5443fa1b0152ef15c2ba41339697f0d4e613c346f79d851dea1e1577749462b5f3cbfe4cd085a3f81bbe98fc27f61047d982092888f7c7b35b90e424fbeead89817df63960e836adc5100783a679c5769611c7d46c4cf8e98fb8b85f79a51ca02b25effa78e2d9463f3abd0a6b1d8db25706ffdb50c82dadfc21ceddd4f12dabfb38a18a19f22f995e0a42c399a1c1d432562b1426073d53c8c0037698157787a6743aed7a4cab203bfa7e5e77cab08e727ecb0df078f99928b5fa51d77c9bcf57a5e28d68bf8c8ce4c5cec241914cd716eae691f0c4cfe80f8b8a3807e1d2321ad44b41afffe150a6f1db05d83e2e893595e5f04b5839634290a0cbb4ff1bdf080898a70d9235a58e7090ea0de90175a843f9736581736f637af44a7ce4ce17598607323f3e179cde53c8733756d57dad925dc882f5da637954fef2b12b7c012f90d943ff8a209fbdaef415004d918a8be44dfc8a1fa0a715d5909fb49909d83be84a7cee7d3c69d9fa01d9e77fb0b1a392082b5e5b9bea3f4486b26d2ca3b60f86c7ea3bdabfef76b13c1872d6f32f3669bf2b6a9f8fea24cc77801a25bb7c899b5df8fb86b4e8d5ad7cceb3af31cf28a182609937e333657568a201fb766c6c62520f026a7622ddd333f7123ab7130c8a7bb0f7bdcfb1de4b0360daba89222c9171be2a23b4484950289be246ff16d1d747f939dfab3202e15a527e676350ef19481d8bc5022f583e93b1f079fd994209c59d53961f9439a79c6786b50ddb2833a79fe23df59386f99a34d0d1111caf694e0ec5a3b53cf0fd75674fce69dc3a5f4aa30626c508135eb339f8fe01c3698ad00c79b56a3246d2cabeea735c80ba8d6c180841ed64a78a585fee9c2b9411962022622340b9db538202539d6a8bd6f3256c16899215ed587d07d1ae4efe463455a843280ea215429c387b19d1ab1545119642a5b52e152fdff44fe8556269f423827adacf5f89c53284a5a615d79c79009c13548f42683b9f78993191f028153e895977fd99e727034152d22d813b7bb4452ee26162b8ff73c239b420de1c33f4ebdd48506cbaeca2169a7a71b7fbb20e0bb99cea64e0b42cab91edd1d11d95e8e27051f8e0363639f6397163966d08966ce9175a3bcdfa6dc40758d35b5ffe2ca42507ed76b956bb775851dbfcfcfe64c87b26c5fc186122a616e58cf707ccef23d87d2fd5a7625bd3c480ecb47515d11bb95ab2ce71276af3cbb5e89f8c251aacad5b6715ed507c4cc94a1d27240d5bb1aed9f20fa4ee3314e06d92aa90e85169b31a06644f0260c3935cbe3baf482443cedc5b28ee36f694c7ee28ba1ecce424546da746356f632843e1caccbc24e4ae0620398a32a77cdd62030ef03aaaa34084e22bf9916f5fafff3e7d4f9599971b9780d920b8abd99579b0e0f2cc29c98077450d85ec69c841a5a05e535e61f2794c50c6f641d2b28fbb46a185ceada7a385d7afa8ce35b623410e55164f1f8188e415f0bf0f797e1088ab40687d0b148c07308950aeca44cacd58b5450b16f22533dc72b7ef4775d501ffa74a7404b490de5d96d7bd08418c43b49394657eff0e99443b1e882c754b5f9b0fae8b628adb0f6ca36aa3312ce966ff4142e9ef17b726d59b1f58bb0c1ee1e661db5d40dbe5cf97f60c5e9c1483d63752b17dd8c6c2934df27919d4a0151d40ea366e14cd8f7d18dfefdf6adbd9399f29dee9ecc4d7354f41b7a692f08072e99b11f2f1d078b3bc1c31b06e97751c1d3309eafb5c09da9fc1b5fe3612b0b0efcb64f0f52ba2d4d665d735b6566089b5665eaa9d00e44dc3852cda2c8809df123c5106b684f6d930501f19bdda79632193beca732ea4db180eeea5b94f3e3beaade767b22d9bab5289c3973409e24708349ce6b0015e4c93c40d8463668d0dc939ab313e9dbb04bbe8bf9d50cbd65d75d5e474f7968175fedc77942639bb2ccc9f7fe227537dd80fb07791aaa99e19a24d7ae4c138b168c42dfdb017dbbbc9195035a52a0bba5d512630707e0e7c9485c29df0d15db7af99070c9389c7966df4f83b5c6ac756a83f30ab03c71f3e41f8b5ab7445faf9b8c357dc6977291b332e85a3b7c412225aa033fc212ad545538370fc8e6d3a017ecaae7b48ed785bad1d98128ba616365e67363389d36a5965bc81405edd60b6671d05e6647c0ae1f08b483667e809f1e4493d6b547ef253bb56c8d76b392db8f2c559dbfa7d8578115c9903273cf3819e08a6aedd4fd8af7303a642319ac1baacf1a3db49d59bc1f7e9483cc6df63293e1dc56091e844a0529d08723410f60accb2791f3e41184f4d4d81c122b841ccb95578a8aa8f920962974d93ea2ff4cddde49b5fa98edcdffa28d4f6c800c3ac8c580c84021a3ae585dda45b09c81d5a347dc4fa708992de6df6aa36ef05698fde206de0fac8039b4b1b3e02f6c76be778524178761e7230cf1192bcdc10380ec401bbf10ce55c75b406f5975c1cb99bc12be037bcbb7dc3e1b13828a2dd31971ef10e4afd1b3b044b5ac7b0f6ac0d4b6d821b88f9cbb129399d8dd620175bcf9f146359d7a37b3446b0a9d5762d89b1e28d4621bff504611759aaacdc2e9dee66eab52000a646abfe2c8ee3b277824e6c529c9e08961a58d575304c77ab59eb15858387eb877f8a316f52546ce774aa41a5834efb8691a8880959e0220be60092302f2ace981ec895c7491e6e7703ce63da5445148133fd098a88a48190cbed95088bd6eb945aab79935464279822405bdd26e3b8bf52e4ded4ec10e7f883e320e2745d816e14606c60db200e6cb54f5732e31ad707a3a42c88fe76226dd972319db61fc58c4ddfa73d93343e376002828328ad3612dfac889b82e818d795\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"a62b4d803fbc2e697f19476fea7a7cbbe9410c6b0bc3119afa19d0\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0eaeb6fd74c8ec406db9d99b2693cebbb9b3d33b2500a0812153df\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"916dbb541fe04d2587a1b4cb28cca55e30bcc96b2659d94c05110edf1f88828d30\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b49d837e7f729716ec0970cdf99a58452c20c12e92e5e2bea5c8bdc90aa4a435a4657125d5\"\n}\n],\n\"handshake_hash\": \"c66badf2d702580f6ef72c7f79502b9aede46d0061e855ba5aa02703f96800a72347221d8f8d0339ceb59c4f4752d978e49bfcbc4c1a259f69e18d43a25d279a\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a463033ea1b2724846e3bef59c139a66b71f9aff7a1b4122a52b8568b8c3552beefd68eb3447f45714371243bf8b4e92ba4c0817a5ee6b6adef7fdd48bb54be327a63b077378db7138d904bb299388f18\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65885d93141fc3409c4a652d852c241c704609455f26c3fadba2e54cb7cb2375190736f666ccbb21c73a252f99e929e358c017902fac9e4aabfa80397438ece6cee00ebea91b5a73f36fd2ec6c8c726f\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"d000f3e80a55b3cec012be4c81aff0c819151354bf3f414e2fcd5f0b9bc02ee40a56569a437d5ff81ce985b5de2555a355cd80734ef86c5f9ed0081b755d84dd17ba15b094a30afce08df1\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"c149ab94917e2ecd43fd816d372f2066fa9d1fafb6e61dc5c28009\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"357e0833da1fdbbb963a7ade47dc1a8e245942a061f59eacc42e4ea7c32e8ca592\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"43a72c05c79422d1124db000836e42ff2b492250ae0c0f0cf9bfb834ff108a45ec4fc0f6db\"\n}\n],\n\"handshake_hash\": \"4155538e41143c57b0716ba3e8016ac0cc9682612b4f618df6ab510d31e605a8\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ab564a99b4956894410487b75ee596880c8c84969a82901f2b5c56afe7abaa77915d91f79a935a234866c6088a2010ed19cba738e1750d78e611bc6469ef4ca98932fa523cc363d96b399b3aab9b54a3d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b59606c5978cdaf856d1cf9cc280452ab8b6e5edb92be528f8eceec8bf7dbead15664d8445dc37bc5569dd1f1728ce0efe7af9bf9d18a32ac3aa7cf8ffd2097a55be8816fb3e1e106736c5a8240c59\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"68d17f2487cd2be61e58298d2c6ac83777b88ee21fd2d03a2eb1a7c582d770318765f7eb0eed74665f504930ce90010b879281713b720aaa3d7cdb9804732c5437cc76a3ae53ea0dfc6b8e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0ab55e651a0610a32c7fc649dd72ec8b462a793567b66d137d2dc2\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"415c87e578e8b4dd013e10a0255704afabef06fb6ecdd5be1837f8acf1d8bcf7a9\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"50ad6a33c720aa062326a28c7d2c63560fc2837c1dca057cac0987431e3d0e967b6f9bbb61\"\n}\n],\n\"handshake_hash\": \"3d38858fb63f1f27678a924a623164341ca23fe427fc590e815a07392da876018b14e5dbad4b5cb3a8f27aefc5a913f2cfb98fca309714e0fa6c6c3edab74134\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_ChaChaPoly_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a82f41f17bdd168d984f28338b798123c35ce3abb0e1840d49759e139e588871a3987762bc0892714851820db31c938b6c0d19cdcad8b844826e227f223a5985e15c7e71d51931bc32cc93a19134210fb\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6508b8bbef9b39e333eb8391ddf01b145b4be25d2bda14e97103b37c2e69294bbca65bdbda3a9a15e5844ae4f195f6f390b10db71f2aa798221fd5bce54668d91e031555754343d4e0a8b2cc8e780694\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"5eb92dcaee253c7549466523cbf65ac22a3c99ffb9ead014c270785762901df1c5f25f409f2899f23b11dba5730580ada050c1c2df4957597bf38829d6789f18a7d21fb7b3e49bc03ef129\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f90c24cc826aa0e46cb967f3d207d0ca40fbfefce1419bb275f561\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5a0f2c2623c442a09c04dface93d68f7b188072b1f29e4c62792fface2e41b6cf7\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d70885cb7aa414e0f364575abe96372e88564210c0e3a8cf79c2e7d72f9e4f5fc959347651\"\n}\n],\n\"handshake_hash\": \"7c1ca7d7d36b5f10fd67831a2b1a59bd4e784e76429dcefca41289cb4e8706e7\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_ChaChaPoly_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a04e3bb66d43bc868cadd9ac8bb127cddec92a1feb6b382b4722fc5be852860008865cb5096061fdc2eedc08b53a7dcabea5f29ead470f831056d8439a35993ee30773693c13fb8ec97cf0a0330165a89\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d651fbfdf300901e10c2778146a76d592d690359dff78fd494ae2f6f5d9f99fd565ac4f661a798679b47e60154d83aea345a6cfe5d757845643557895bf5eed370ced97afdde926dcf1aad9117fdc1d73\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"aad6c1bdc66134c50d9b785650d1d2b56f929462506c47671c9a3b047abe9025b343274e9eec612e0064ac37cc0877ba91674a2ec13ab53f761a6c9cd4728169f884d66ea95e8af4b5b2b9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"b601ea588643f6216e9b9c863510a57156ec222dc858a0d650be81\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"b3c2a5e0d2ba6a80cf637cbb69f85bc1bf6e76caf462927d32a42c53ff9aa5418f\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"da067d950f7dbfa1d3f15bdf394b6356372444e9be107442aba034ecb750c431c16d81192c\"\n}\n],\n\"handshake_hash\": \"e0d27203e41005aa7558121d768548f45346028bb621785f9adbe6578af965cf8421fa396915681f3e4ab2da1a12e4eae5b832dde16736c0ea9111f3e4b25256\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_ChaChaPoly_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be9a1423bd78eb6c4fa26eb8de1f1e41f74dfcdb74e8b127114a7f900eaa51cc42c5f4514441a3f5e995a387a408062d6ddc7b29e533a32f7427060540a0e99774fd43094bc2dc7bc997d264316977ac92\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ec8cc12065729480904a886daf161df307c6946b8b300c676c66114ce22beee9b338f464947d5fc3d3a55ffe5bfbbbf9a695ac2815f5c94d147d50da714d63388a023330f5ae1c850331dc869221d03\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"4efcb60320e8c775b1cfd644cb0e450f2f8e045cfd6c66efd5277b600a64e7fc883f64496666bd42a9796b0d7a23f3024cd8d8c817838f9bfac049ce9ee767c8712084e548b1341758de4a\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"62a2c2ec59807e17714a8a42f4366254f5c46da97e93c625a4bf12\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"5468f7c1b34b0bf3b763c9b9ae36db626c5d2b8278ec931ea8142066464eab2aec\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"f2e50ff53bc269ba7b7c93dacad9cfa62c36e533bb784b0cf32407ce774b9cca86ec2adad3\"\n}\n],\n\"handshake_hash\": \"638ccc7b4a479a024fb74ff87e2903bd2aac2405f24c14d4343b4108088fc452\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_ChaChaPoly_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6a381c6ac94aef3004139e79d8e126c099d90684bc7efb92976e05299a0381ebb66b6e37afb150b79a27ced4d7d669d4e7804f68792789d327591bb0ce99aacffac5d7b347a7273736a2ea4fc1c2234b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e2b0ddedc9fd0b094ecc261c0fea1d88d76901cdc2ed0d79a31c2f770620fdbb9ab829e7bc47391079f5097bb62af5a57b36a925cc7d52dda5ae2d855ef7cee7bfde5848fb68b999e24d60adc1cff7b\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"f1ef3f236b22e4a66833e128f59b0b7c6c7361800856c63b603d43c1135cc40876eba694db1ac7d4d670e6766dfe6f1959b70a2d7f69533b9bdb4a5d2787e550c4f2953ab6651821fe1cdb\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"29b3e8a5bba82262fb4ddd12a0bd4f6e19ca2f03ac73a82a5184e5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"7315a2c2d7c8b8d166b467e4527c8b3500a6e65cac9b3896c0de0841b10cf12f4e\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"d17d58eab8acbacf158fad95be976faae75a550f6a6d654b8af2bae6a47e4c6c738a34dabe\"\n}\n],\n\"handshake_hash\": \"a208402880175b105c838d08c1a28297966e1255c1d97c9a435e5b0f607c511c29675526cbcad09836e3e182b2145189ccd897bcb6fff0651612534966711776\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_ChaChaPoly_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331bea7ff44b0da206f2f77da26ccaf304f99d214c78616c55151f9babfbb53aa1f4f0e6444fc11c1505c3113136aea7472809fdfe0c50dad5743661558c01fb4a28c19988765bc505066015f19655542cd4a\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e50b6115d368220f7e63538acbd53d3d9d3f247f051b8465ba2d3a61c1ec092a8572e913c140d3c952e23ac4142c259d858c8b3d18b0aeb08bb2bbfd714a8f120f8fb881d2761f68c3f11dd9619cedb\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"95e6e416b4af7d2e6e771d270365afae78f8896dd494be10140ddeedcfd0e6a393339541f1b348d3671bfb5be6a1ae7133b399f0f75d417219b4d3a1479e0586afe9da0e4d9df701a4e4a3\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"a15ecc0440cb6201dc3b9b8c556a117e330a1acbdf52b6409719bf\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"2f484be1e9d4fdc40a5a3e4f25d30addbfec55e64310fc3bf6d39f35d117e0995c\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"7de56832da161ae3757844c0caaaee2955217cda8b2df2222ba58baf989d4ddfb21403ffd7\"\n}\n],\n\"handshake_hash\": \"70a1d5a5893af6df4dce9d63f27123f866b8e146b17de8c3e7959b4366e1afb2\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_ChaChaPoly_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"ChaChaPoly\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be9a3475df28e9e7292716e4ad963f2cc16ec044305756e9829c0240fba85149564c56f265eee0ae9df1007f9d3858cda3fd58546d952a9bbc5ef182143098cdef4377fe1cfe63ac686f7a9f3810c00492\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e276608d44b8ba7023a087454a1cea576422704783e27704fc7c68f85ba2bac91330453c942dc169434e17563f2500d3930b7a47f44188c4dfea4186528230c0964d991e942649f8fdb3d51ae776380\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"8b79b448527cc9830b19ec8604a9262d356408cdb641cae63772a59a697f598e6150a4719c587c8854c5b29e995527fcd9f964bd7a41498fd2feb80200df47b53ececd010fc3d6e4e7dee4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"94cde6679727c07387812e1f1c597882bb0efe02f5310c23f258a3\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"cf2f3b61f45cc2f40ebefbf0730b459ef378ca869efc1cdfe1eef0cb187b4f3876\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"1f77aa97543349fa4296d87a4a3b5188bea958a775e47c01e5b8633ed5982580b4dcc73f35\"\n}\n],\n\"handshake_hash\": \"6cf36b2a15d156ec6d166e6be36063c9354d3b7a4603cfd2cf28126315dc905216b0df1714950dd0ea7a0d25eecc1c3a3dee0a11e2fce6a1eec79e81e86d7a0c\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_AESGCM_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a4e1f47c1aeae929c282ea12a247da585a45a3bcf48a0dd850ef011d148034b7549b8d68fce4b2d8eefab9b460f3c18cbc962c671c78d9cdad0915a66f0be3584723308ae9767ecc50966d4c4128bc818\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d6576966dc9d939f4fea31137f3541f18e4cf4c6d14db6a72fcb1a254a897e233898f30d14be43fc4006e8efb84df82cef7cb59d44befe1ddd42443932abe855da22f7b28741ca35669cdae6d1f9dda10\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"cb024f1357249044ff6661e071d7c2ccf21b4053963eb2af82e457afc04395339f8696b64b59ef43248c9d37a5df08e141e17672b72712a10e55f36d283ad35caa398eea860d2709d7b1d9\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"0d572828b2d263a536c201481b9b479f74319e4a91fced2bbb7b4b\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"05fca0091d35667af446281bb17a721c023c4fb8ad7e6ec62fe4b50a294db20cb8\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"0483617a73dfb8a0c0a4e6c9d4231bb8258db6b13ae6de4d5e735c460fe88661e154eba122\"\n}\n],\n\"handshake_hash\": \"28f6b0df1485dcde70ef4df3f51b031712ced766515fa0d9be31a03190fd56a6\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_AESGCM_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49a97d371ad163921b5a8c35cb2fe7bc5df1d57081b57513713a0033aee82f9ad224edbdacd34a86d181a38f6284aa12e5668f7715c5d8b0d52e55c5df7bbfba101ec8113d9830ef7ec8c94346ead6846f8\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65492225497920dc597d1c43f25d328f815d7b277fe71645de9ffc6a0922a5038d8f2343a0d595996dc432cff9a93cd25c80a0119c4b94506f0ea82e28d2cd7d148587e479b9943b39d4acd65d068dd9\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"c8c5e22b00d56afaa682d9f258f258c9d631a37809fae50209047f5ef14fa1b1bb24cbe4b8020ba20e72e20c1dfe2cd985a03c5223d44a5092fa82f55c66e8dc9d1ae617960be950c10967\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"83aed7f846c4f08bce70f0be08f2ca336f98eef4fe7e7a07a0f014\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"d9c98c43b6418f72d1413963aeed41060093912f3652c1ddbe428cdd6029b307ae\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"b784faa46b5d689da7d26eef26a90fb8c37283f314c7004f4f5ce45ee8cf6a2e7600bcc0bc\"\n}\n],\n\"handshake_hash\": \"073bc03e469d063d984c973992e8c6e19c7784613fbef48f23c952eae39f7101b9c65a310edfea9264625cfbf8ee6d338d253a90c555334cd9511f1a8893b34b\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_AESGCM_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49aef24e35a71d465090ec4da20fe928f902b65f4bf07e5d59dfb7433c9a6838211c06302d637772d3aba309e4caf8e14180bc76f1033b946d9ca44563805478d718e840103e12e13a6dcfa98c7578f2621\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65d9a7460711d7d68d5e1a9f00499c5c92ca77f52f07e663b2db872bc8eaf585a45f875afd39af156efa3a79800cc68e0f7a11d52edcb2e872eddd4eb96a263f23510e5c5751f14a9c6a359b72a89dc1\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"ced3975853075fff7128457f58634006da23f7371fe39b0f7d9876f9540532b1b47f6ccb04aecc906eea2fd796475d8026d714500f59267b440b7ae17bec92de591739ff738a044ea67e42\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"5191c32b604ec28820bc90b4b945539ad402121fac43496e3470a4\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"576e34d01f90ba1d2d260089e57d9ce1e957fbaf19509ce8bfc571ee7e9cd37ebc\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"4d12087f26e1e22c1cd0cf61faf3b1a66eb44069a2c2af044030dd33c91da0e95e13506000\"\n}\n],\n\"handshake_hash\": \"d041a6048bd142dae48994cf16a84f9aae6a0555e4cda7e560de8133bcd8c97b\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+448_AESGCM_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"448\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"7fd26c8b8a0d5c98c85ff9ca1d7bc66d78578b9f2c4c170850748b27992767e6ea6cc9992a561c9d19dfc342e260c280ef4f3f9b8f879d4e\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"3facf7503ebee252465689f1d4e3b1dd219639ef9de4ffd6049d6d71a0f62126840febb99042421ce12af6626d98d9170260390fbc8399a5\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c79446cfcb98ae6b1bc5659cadc595bf664e17094404eae6b45fde6fc40ca937d1dbe1464cb66eb21fdbaa487cd0d11d6dce5aa07b8219bfdc49ae80ead9f0ce315c12441a12997b1f75f70eab40455bb692c3dc99e1a5ad8ec7d7a1cfef26368dcaebc597c4b48dfcff138d439ee969b7022fa5667210a4d6e362e40cae3ff3cc31263efccbc7c41362b\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f144808843f7eb9a09468f9564819de07ada77a6cf5d5eacd84682067538bf2c4e4c905e5cc35cc3ff41241e47ae3bd296477a236ef185e5a8a0f18d65b30fb47309de9fb111550dd33ddc4f9e243b186da3349508d85626fff5acc8abeb6d09685e8fcb637583eb6b3c8aae7f51d5fa1b3e822ad43f4208d98743bb28d68be03a8af75cb3d6b5ccd5006027\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"451d4271c6d5d1ac828c8e89f4891757f9f909f8c9a4bfa2e2587aaa9dab4608c964c59ffeadea09404a8a6fc110d99d5b440d3c7c72132efaff5b74a5d1cc1229877b6eb070c9116ac68e\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"7284258fcc298448c1de66c9bbad997cc687303f1124bddbe0b7e5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"febcb78e19b00d1544caa22cf89ee45e95a3a0ef87a76eea6c8fcf7eb93e3f4533\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"87a54986b44af9fc181dbf07024cdb589c49be29e6605f67b790535dee544d34d9dee985d0\"\n}\n],\n\"handshake_hash\": \"760b6b770783f90027dd3cf48fc7a78c6358439c46a97c0187af81057755cea7be9a93e1c7118b69e54dbca21f8d6398875db9b1ff1a8f740240927810d05da2\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_AESGCM_BLAKE2s\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2s\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331bee3be59769b7c8c6c7ca847fa478fc3040c38f4f41dce79b0313aa834049eb263a9095d5422fdf464b851e07f4c4ffb2138c3223570f2c26accefdea4ffd736475701892567d6a9f30a9bc976bbf5c02c\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ecd1fddfa01445d325d7372d5d9f140ddcc1d0680540b5e9e52d9119897e12e369f8e08d3dcb60f5b6adbab94d1385dd3448c43892f853e5b0b07c932a79bd9e5dbe0d8882846a238c0650bda3ee9cd\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"b7332831d9126fa7ede384c05e7d7d69bf56eaeff3230612d0b5fb67f69f6adbece2cf1b63f2fc5ae3e0873a3900388464023811e50fc34df5edc10203d2ee4f61a0e23bcd6e96511e4bfa\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"16e727b616bbe8468154d2a07dbf8c27f5b9939638d54fd16c23f5\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"975a8e3de3e98622062c96f0954eaa567e11c9e572616cfc8551d8f842ce8b816a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2f5f6dd5d1306562515334982dca6631edf574c700d0cd97d405102806a0fd88b6c5bc1582\"\n}\n],\n\"handshake_hash\": \"55f290ac76ca62714cfa005ef24ccd5fcbf92c27760ced932f126752c0d6b50b\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_AESGCM_BLAKE2b\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"BLAKE2b\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be6556c897d79bb88454c0cf8087b62e854598ec92930373d14cfb6b54b1e97898b195eac2152a6e95542683410081a7e7ac093b14ee87ac6a77a5e3f2a22d8f51bd57fed6491a551cb0423b054d414631\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e1ab54518a84fd992b5744c72d919de547440349d65e7836db98cd667dcab258bc66f3ac1188272184a6180fb8b65f7fff75c167b1fff1bc9220a063608b4d5a816898f507982393c903c8fd91acf8d\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"35ba8d22677312c81b6a62509fba89a1467616301c932ff32a8d7c94ceb8f3e65bcc4f48bf68e4e1c37d2874885e17858c1b7388466e3e6e249c9edbc55187a992a8412d935d52bd87ad87\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"8fe389ead346f14fc46dc7e6ccac9670c14fa4df352d0dfeae67ea\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"872082822ebb0622895f4ce897730b2fb9c8ffd6e40c718672418f18e7f28e87ed\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"9267dcba3c108c4f5ee9515ad0fb3b2b423b69dc845eaced3425a42f674aeaaa9e0f6b76a0\"\n}\n],\n\"handshake_hash\": \"0637c7cdb49c1b703e88a8be8b9511558b7e09fb1f0b0bdcc786154679f1a5842d6ac30d0de529e30df1b92b5582d5bc33444c49c8110dd4f47dc36f658a4f6a\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_AESGCM_SHA256\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA256\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331beab81b212596583d598aff2771eb70be95d53b7393e6c45014421c064b385f21a06ec22305a54b356e8417806cbcf691d3b37db56693e253aa9162d3d75292eb9d4e3ceace569b1c5d25e86004b98202d\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27e522ca2c20e9e21cf15bd685f54f781eb6fd44bf7237ea19783c6f45915b18e1498f7b6c7d0fb40e5833c0d544840814b73a90483bb0ec9dba8ed59c789178213855a563c87269bc1e7122828796600\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"0237b77baf2da4d41f0936a599add4cbd6d75f755ca9ce1be9f6ff625e13e747c85dc7cd712830c2ac87dbd6c195c614b902712622c7d6fa6ad1cdbec5a3a480968a51688ba0be899ec477\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"f20fcb0348323e2fd635ef78fa0f74fb9d11294e044bdea5f528ee\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"efe9d748e193f3a79a2ed098c8cea1b724c3e5656d7d5843387c1048dba196a4aa\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"981bef1e7b224e363e83f501bedc2911a9ca606fdaa1f1609468df7208510c95fe08aa2ab1\"\n}\n],\n\"handshake_hash\": \"ae1d8ac93e285b41fe0b8d7a7c463ef41710995dcee8c4192056e387734cf75f\"\n},\n{\n\"name\": \"Noise_XXfallback+hfs_25519+NewHope_AESGCM_SHA512\",\n\"pattern\": \"IKhfs\",\n\"dh\": \"25519\",\n\"hybrid\": \"NewHope\",\n\"cipher\": \"AESGCM\",\n\"hash\": \"SHA512\",\n\"fallback\": true,\n\"fallback_pattern\": \"XXfallback+hfs\",\n\"init_prologue\": \"50726f6c6f677565313233\",\n\"init_static\": \"e61ef9919cde45dd5f82166404bd08e38bceb5dfdfded0a34c8df7ed542214d1\",\n\"init_ephemeral\": \"893e28b9dc6ca8d611ab664754b8ceb7bac5117349a4439a6b0569da977c464a\",\n\"init_hybrid_ephemeral\": \"934d60b35624d740b30a7f227af2ae7c678e4e04e13c5f509eade2b79aea77e23e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0\",\n\"init_remote_static\": \"f215fe4ad54b354588d3fa52166179b723b9a211ec67167b9bf1729260972a23\",\n\"resp_prologue\": \"50726f6c6f677565313233\",\n\"resp_static\": \"4a3acbfdb163dec651dfa3194dece676d437029c62a408b4c5ea9114246e4893\",\n\"resp_ephemeral\": \"bbdb4cdbd309f1a1f2e1456967fe288cadd6f712d65dc7b7793d5e63da6b375b\",\n\"resp_hybrid_ephemeral\": \"bac5ba881dd35c59719670004692d675b83c98db6a0e55800bafeb7e70491bf4\",\n\"messages\": [\n{\n\"payload\": \"4c756477696720766f6e204d69736573\",\n\"ciphertext\": \"ca35def5ae56cec33dc2036731ab14896bc4c75dbb07a61f879f8e3afa4c7944a857f3c12d1ea43ccd04ebc9ed8d785369e47e76325aac7788dc7498676452db778e7d50d397c5e1794adf2593dbc322ac214c7337d3d83ad7a819a3635653d32e8133b4a5888a0ae022497a1010a71d37c628a05ee0e2a0326d2728ef335bb9904232eaa1799c620f2b5d21ca46eca6ba5076c6a50447835fd53441c856e38e7e8ad26a4f5bd239c73fc2889b0aeb44bffdbee787c1f2a4be05f993d22b16f8ad45930c593c5065f5c43b566ccc7e5761a0a792d91c42e18755888472e91399a07f3e48b813644a19dd0e9a1ae2fa5f88961e0f0b16f05c151f8b91e0006423adcfc372e9c261e02f973696706870899dc7196a262ccf2ef689e8027788390a5b2012a91c45e6f87189c290bfd8de694a52d9e9f22db495968566e4805015839fab857d40520a541e81d8710dc79ebabae0754ed9a5858908811214562d07c13440f3152ca9eee11523066de0b48937b34de8e15d8849099576a5205c84510b1789e17daf9b6c09c44c005edc2c6071c4e4b8bbe5cbf879b98fc1649a2162e42282116fb4c6126711c2b8d83d15bfa38f9726c6c952824d05ca9f86bff00e4eb46b2c4e4955bbc202653f85e43c193226470aa14f239fe87010d2b4f1cef0b6159f4774a9a0250dc725d4f90d6c5b8941a5e8510c37d135208276415e9b5235a7d420f6e14989700403621193e97c18670e662d69a84db81cc0f2d118da3639a9c3564fde48c34c5057a025195c2b130217f515729631667d5e8b6e053c49c3f038abe42580c0a8372e9c19404a0d8c26682bf0be984677adcbf9ebe20866a27ac2e7b69f94a0c6c0e9b13c9758695365dcb10f05f65502ae584986c5e1f338864e2365645df0a6c7e57a8b839612aca05049d8c2476deab9b7ef591909c6cd00b77186eca6e839d0699bb8e3a70646e606abd38a221f64704d5b69282e308fae9b8f3632d1328c1a8130bc046a7348e932ce903388086e3439ba6da26cdba215f9287cecfc33f5a683d4a053284f3e4101c09a404f6a4e3cdb121a89a9170a5125c339b4b7f4a31012479e4c11d726528191594ac2d9b4f40cb2a768ab1331a268b36bbfbaaae493b04dd21aca0a6159226ee92950a368180ee7f45aa94759aef037786a29e7f54733da5d076abec3ad5dbc1043cd48f0226e8b92730111d88b5a43623058d642086afe5452d8a5a793bac60a664e06cbce9bdf85bc2bc908c408a0b1761125574ef802c6abea6ada34b77eca22662604488f8e76229d740a2de0609061dc63f4c0adb054fa543dcd2fa0135a391568bb99d262a3c0a7564aec6637599ef3890ec1934ca38627d84e9fe0e8baf6a174ad1767ed84eeda59a50345f9954c498f4c882ac9650e038efa76626d17421690d499750f2967732557b5a8960a66c7695e460748b0145f5607f008fbca75a5b053c7b74a338832928794579c683efae120163f6ca76f6cb7594826603241ed236d9cb4c1c774e74d5e3b605406b800ca70b36338a05149599cd4b1704f295c66c3355911d4782a88851a187a3f4bc7f7978ac8369eed9b42fe9c16a882df139de45f2eeb1a61dec425432838d9e5145aecc534d04c729ac568b74845795715473b2488928a9f8f6ab89f212bcfa9a5b4581145c759e967fca8a4ba1b2da80e40ad48c2cb44ea7a57f54de8f22b7932c4acdb704e98194443b732a819003c9e16170c4a0009eb0046028881aacad75914326a792f687483299667c0aee2a99c12ec4ad6db41f186955788c8d600559e837563ac8e9c46da26a034d56ba3e1684bb9ac81721329707a2a9fd4e5ec179f4479bce275986c59b9346eb1106f2414788f86d5b7fe167fdea141647c93298008414f49567222860ac5c141f8e163e75556bb4542b7021716a5e7044bf4eb460ab915ca642e4225ed031933e89282c10337e9923912c5dbe741ec9aa2c5593aea9e6899656e2dc9e2359fe59243f05f515b974b4e991cb898554c00c142d827a00cc1401f6d0c675cada73ee69692e7ee0913b5af5c970082e8c4b4305bb398c21c7fa14b4c89c55d5cfd19a6c16c9d589a2e751060f8313dc7b9a736c044e10afe6bfea4be885963182f8eaebfa2eecbb6b1025f5c4df780e692066e5fb484d17758522ac4a8b5b4ffe438115165aa42195e8612417ff7c3e6a07eacaf8daff57639447949cbb987c21c03c1817d6a2d4e8930d652023926a67bc7d2772505b665e02fe7437c57bc0ca57acdf5649aaa3a16f569aeb5a38c27c1b80faea8acb515006e8023bef6e08d11a218ad3b68923c4645a8f409f2aaebdf5174952474a8e68b26417148d8144fb106600ca6dbb0883b1a0c03ce8580d87a88995c5854dc75839d53f4e939ee3ed0820cb737ec49fde77c9987e053585982300824841c0c5d8686819ce111317867c15068911e092fed4aba53a7a1b9406f648c22026bfd27634b5c774b00252c41550b0a2d0040d684c20259aa95d095f8bb3a0ca4dae2e0c4fd68c94e9f330fa96f271e7f0953799b9e5c5b15798178349a9e8c91d116780ff9c7db6089ed4c06b34edaa848bbffd98542827e5331be460b5d6081ad062fe61a2457f816ee795b14abe46a9cf5a7dc8cd2b79334d72cde3c3b126d168d03119e21b3ab64fbd7a62fab401ae6af9351f7835a2a7e232132564955b19f9aa1e6d3e8b0992faf8f\"\n},\n{\n\"payload\": \"4d757272617920526f746862617264\",\n\"ciphertext\": \"95ebc60d2b1fa672c1f46a8aa265ef51bfe38e7ccb39ec5be34069f14480884349a57402d42988e29808f7865989a000fa3b6a5d4fe6009c58490db2af40036992d53dc6e13348725072ba65ac647ab9419d50a2a2ea94454211d41b0e6c2c7e20e652696da304931d11b3f2a82f98d4b35116b4dfc5fc49f9693a4d0663b4344c041b4e7337f845a238df3713f095b358c7f5588460a05bef96fbef2cb3e60e5c1028554b136aac611b5a8525c0f0580ea08612470e15b7e04a3b0ff2091d3c85a3504d1b81f85021c45e5a84262c236ef850489aa49b4f000705a1b0eb15c114c69a18ca81d1fb973d02405b0ef5ab8cb05b4e04b630d69a6347a4a9e2f0457d1eaf065fec596e6e7c725e66172f18fbe0747db3f9532333be163e4d890ed76bad7725def4c9014a1b22dd65d4865a1b241a06657a0e8389212e2af5c9aeb1aa0b09b58c09bd50d8cac36a5130a311357dc5b6d7deeaa412be5444885ad82ee143aee82c7074617503c0c7186838901acc6858f186389b244496b41ab1735d922958697f0a83950228515f7052820660659ee025a142c915737d4b7c55e92643aac4fe9296d53409427a2649feb5a19b69213919789007a74226fd51f316ebd5425864e59ae891bb6680c6253e5a0c11b7b0060f838d66708486654adc52a3286b96a08c468088985d31aa7a3cf5a3e2e50ea46b7c5125a0e6ae2769d9d6e91f0a0a2b281e327a3e3d8e13e262a8b843bb9ee4008c0979e5673028aa2e530e026c91dcf1ab90aa0419ec8286ef281d201ef971cfca3636f650666e1399141368973521ce486b50b35bc4cd5379986e631a4e201411aa74ce9103c5449bdd20d7a8675c15e7c297824b5562261169c8ab4529148562c6c76dbdb22b9b63c85d8fc04ba4c1c33265dbdcfbd6bc389ac6e4471724021ecd84b4b5536197a1132c9a81cabaed9bf2c4a61c97a3169bf5c095bd2a90ead898b6a73e27730ac67aa824949797c96134f01410c99c6c5310e3824914156c670d39e18bc888c99ce7d5643aa00868553184246e1c5bed06654410f46d5cf88f2c7637ab9ff83388b644925a1ad9861e971d4f84ad153d5c6e9d812338b004a2e5eb03a8771c85e43a2f78861919d0c7eef42b95d0cae4d3ba60a946b7337db02e08a3e9ba40993d1fcca05ba8e2b20da76f5ad225ac3dc372787c5e279cc14c34b49487d19a28087e246e1ada142265e47a189301ba102a0dd0148d4368149cfa2eb4785b5ca6ae6c1800697e130b194d62c650b46b1c96e6d8558c6ec78fc71db00ef2ded7d75069b5690b40f3ea0aa2bd67c1b66fd8944b4d7ef786490ec2db06f3065d0cdb5582f7b9514bd6670eda618a4e45519feafa1e47094bb543ac309d8281eb130145543fcdda792ad43e82970b914240a4e68036d6046225c392af527d9233c80953e5218917a203f5f38078334edc3810430907370d1a03d11274c206f041f5318ba94bfa35b8f431e8accf22a3612b9c6a35a6a31c87f29e54334dae698eeb5e0bbd4527112d0cab4b3213751a9853b8c590f6c7c26babe27320030062ce94940c6de69878244846a6d9646685780421e06972025a99e3bfd6d689367c9360c5ffc084a20dfa33a492ae8ad07982c88e57eae7e33b62a8bc698e4b78c6686663c81f10fb026bcf6a5a95bf7c2b5298bd8097e044bd87092067cd476d19f72503704b458526627f6c6ab94227a9b0300509d1f36926f17d27e4bba6f6306b3710939980ddb9d5cabce5513931d68b7315e7e9739c585f35516c0d2fad426645002065436be217841e0c6b2a9b50d9479a51c1469b550ea7832a70da0868262e281a95dd000b03179b92b14865a8da5273667b2d11bb59eaf20b49ec8ce2f0386957cf13a064252fe1c9a1a5ba91baa285cb32b5ccad67a48982e2525feb4c0740960c7d3544ae268b0c35ec1b09838a5a6a2f9c5f7998708720c0adb7a2912859e9ffb56c211b3649cbe9f6f10d23242e34d89035ded63a6071205a0de9f5d867a22c10e4d7db721c86231e6e41dd4a6415aec056016e8dd8199bea768c20c0464c965cfe6da32de06a5fa5098054f855b69462c00d3f260be52327c1125420e4678711ac5bc0b8b6e547df85c475842847213bfcf1506d2c7b8785c53ac7e27e11e399b3da87b762f11d5d4056a329b848a7a5e398751f284269967d194876b2bbec855acb0518bae9f0479b0d51d515c2daa530872b6afdb1df940c001099c7461923064e4b28c92459670f0d90a45428cbc4d847226210a245b281f6b91538eefe1a4b849ecaddda613add1d7e56c3fbe7dc72749a6f8b6ae4063bddbf3625e405420d5b791e94b30faf132841bd6e1fc99798db4540748f5bd3943a12cb5bbb96a604374658c4b7a8aa8033cbd5380496bb61ae7fb32750202b10f8d780555e220f97b5cc3e0da60e51883fac186d2f2d3601d975a2cc34b9f65869dfd467d4f11c9a7f10481b6da299e5ca41d07c6d40e9c9170789157799dadf32bd9a184feb093569b43a91adfbc708d81f46c7b2a6c48c703040d3a52a64a5679dc7d4fa3a6fe4d9f5e29e4857f6e52638a222db14a3d8a9c39505f2b15b1a08a5f8c26edf7756b2c73db3a57bf00f6fea59d868dc3760caeedd080a0b3982848f8720fd1691149e94abb9dc9b94bd36de4e9978b6641a6ad74d466bba314fab1bac59c00da0b65a16d3728978adf02b5818e4dbd08bdfd38c0e9d38a1994b3dac845fcd9c6e01dda07dd01a71b90692674b73037facc9ada5fe9ae012c96b09fdce371023896bd7bbd520be6328b26e07a7bf11e30aeda8478e7b3cf69b6af9a62ee7ceb0b00912998f8d41abf370d1910fe2f1c4a293480b83f6d79173dfe94fb917cb7b39b0ff07dfb50697b66fbe8f48ef0509ee9663f45a9341567df69e826119a8c27ec169ade9afa67de4c5cf6b5deb99c2c0b4b96375375fb497e26763ec97404c25a7faf3c991d1735e06bef1760f5151fa2a9ad04bddfee7d3cae8222eaf345afef2a153b6d32f2fecb9dfb889f3fd0e\"\n},\n{\n\"payload\": \"462e20412e20486179656b\",\n\"ciphertext\": \"e43d684320f2a36351c1d2b2e4a2fcf2e3bce37886af4cf6aee2f7e7093486f9b55b7a8c9c3c09c8d5732194efd52b4d85c966206c251c669e514341fa217c2ec7ffff2d54f7213c3c11e4\"\n},\n{\n\"payload\": \"4361726c204d656e676572\",\n\"ciphertext\": \"e74230aa5adf863a7bc522d03c2c386153609f06f3b6df84acafbc\"\n},\n{\n\"payload\": \"4a65616e2d426170746973746520536179\",\n\"ciphertext\": \"04b0ab0465b10c480a7597a0b3760e03b1a8ef9f8f2a53b511bfb4c3f6cd2ba70a\"\n},\n{\n\"payload\": \"457567656e2042f6686d20766f6e2042617765726b\",\n\"ciphertext\": \"2a3264ab3d1f8421e1f4b1bcdeb151249b8b1596c8675b73db9c594fd3303bf5df4a40d313\"\n}\n],\n\"handshake_hash\": \"f37eba79e869a523a841863b3ff76a1b8ec23c753314b5403fb6474ff8a6f9bcd15578fa3c8e596efcc6d6758d26743921f39ba21c6b7048835aafb1bfa93ed7\"\n}\n]\n}\n"
  },
  {
    "path": "tests/vector/test-vector.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include <noise/protocol.h>\n#include \"json-reader.h\"\n#include <setjmp.h>\n#include <stdlib.h>\n#include <unistd.h>\n\n#define MAX_MESSAGES 32\n#define MAX_MESSAGE_SIZE 4096\n\n/**\n * \\brief Information about a single test vector.\n */\ntypedef struct\n{\n    long line_number;               /**< Line number for the \"name\" */\n    char *name;                     /**< Full name of the test case */\n    char *protocol_name;            /**< Full name of the protocol */\n    char *pattern;                  /**< Name of the handshake pattern */\n    char *dh;                       /**< Name of the DH algorithm */\n    char *hybrid;                   /**< Name of the hybrid secrecy algorithm */\n    char *cipher;                   /**< Name of the cipher algorithm */\n    char *hash;                     /**< Name of the hash algorithm */\n    uint8_t *init_static;           /**< Initiator's static private key */\n    size_t init_static_len;         /**< Length of init_static in bytes */\n    uint8_t *init_public_static;    /**< Initiator's public key known to responder */\n    size_t init_public_static_len;  /**< Length of init_public_static in bytes */\n    uint8_t *resp_static;           /**< Responder's static private key */\n    size_t resp_static_len;         /**< Length of resp_static in bytes */\n    uint8_t *resp_public_static;    /**< Responder's public key known to initiator */\n    size_t resp_public_static_len;  /**< Length of resp_public_static in bytes */\n    uint8_t *init_ephemeral;        /**< Initiator's ephemeral key */\n    size_t init_ephemeral_len;      /**< Length of init_ephemeral in bytes */\n    uint8_t *resp_ephemeral;        /**< Responder's ephemeral key */\n    size_t resp_ephemeral_len;      /**< Length of resp_ephemeral in bytes */\n    uint8_t *init_hybrid;           /**< Initiator's hybrid ephemeral key */\n    size_t init_hybrid_len;         /**< Length of init_hybrid in bytes */\n    uint8_t *resp_hybrid;           /**< Responder's hybrid ephemeral key */\n    size_t resp_hybrid_len;         /**< Length of resp_hybrid in bytes */\n    uint8_t *init_prologue;         /**< Initiator's prologue data */\n    size_t init_prologue_len;       /**< Length of init_prologue in bytes */\n    uint8_t *resp_prologue;         /**< Responder's prologue data */\n    size_t resp_prologue_len;       /**< Length of resp_prologue in bytes */\n    uint8_t *init_psk;              /**< Initiator's pre shared key */\n    size_t init_psk_len;            /**< Length of init_psk in bytes */\n    uint8_t *resp_psk;              /**< Responder's pre shared key */\n    size_t resp_psk_len;            /**< Length of resp_psk in bytes */\n    uint8_t *handshake_hash;        /**< Hash at the end of the handshake */\n    size_t handshake_hash_len;      /**< Length of handshake_hash in bytes */\n    int fail;                       /**< Failure expected on last message */\n    int fallback;                   /**< Handshake involves IK to XXfallback */\n    char *fallback_pattern;         /**< Name of the pattern to fall back to */\n    struct {\n        uint8_t *payload;           /**< Payload for this message */\n        size_t payload_len;         /**< Length of payload in bytes */\n        uint8_t *ciphertext;        /**< Ciphertext for this message */\n        size_t ciphertext_len;      /**< Length of ciphertext in bytes */\n    } messages[MAX_MESSAGES];       /**< All test messages */\n    size_t num_messages;            /**< Number of test messages */\n\n} TestVector;\n\n/**\n * \\brief Frees the memory for a test vector.\n *\n * \\param vec The test vector.\n */\nstatic void test_vector_free(TestVector *vec)\n{\n    size_t index;\n    #define free_field(name) do { if (vec->name) free(vec->name); } while (0)\n    free_field(name);\n    free_field(protocol_name);\n    free_field(pattern);\n    free_field(dh);\n    free_field(hybrid);\n    free_field(cipher);\n    free_field(hash);\n    free_field(init_static);\n    free_field(init_public_static);\n    free_field(resp_static);\n    free_field(resp_public_static);\n    free_field(init_ephemeral);\n    free_field(resp_ephemeral);\n    free_field(init_hybrid);\n    free_field(resp_hybrid);\n    free_field(init_prologue);\n    free_field(resp_prologue);\n    free_field(init_psk);\n    free_field(resp_psk);\n    free_field(handshake_hash);\n    free_field(fallback_pattern);\n    for (index = 0; index < vec->num_messages; ++index) {\n        if (vec->messages[index].payload)\n            free(vec->messages[index].payload);\n        if (vec->messages[index].ciphertext)\n            free(vec->messages[index].ciphertext);\n    }\n    memset(vec, 0, sizeof(TestVector));\n}\n\nstatic jmp_buf test_jump_back;\n\n/**\n * \\brief Immediate fail of the test.\n *\n * \\param message The failure message to print.\n */\n#define _fail(message)   \\\n    do { \\\n        printf(\"%s, failed at \" __FILE__ \":%d\\n\", (message), __LINE__); \\\n        longjmp(test_jump_back, 1); \\\n    } while (0)\n#define fail(message) _fail((message))\n\n/**\n * \\brief Skips the current test.\n */\n#define skip() longjmp(test_jump_back, 2)\n\n/**\n * \\brief Verifies that a condition is true, failing the test if not.\n *\n * \\param condition The boolean condition to test.\n */\n#define _verify(condition)   \\\n    do { \\\n        if (!(condition)) { \\\n            printf(#condition \" failed at \" __FILE__ \":%d\\n\", __LINE__); \\\n            longjmp(test_jump_back, 1); \\\n        } \\\n    } while (0)\n#define verify(condition) _verify((condition))\n\n/**\n * \\brief Compares two integer values for equality, failing the test if not.\n *\n * \\param actual The actual value that was computed by the code under test.\n * \\param expected The value that is expected.\n */\n#define compare(actual, expected) \\\n    do { \\\n        long long _actual = (long long)(actual); \\\n        long long _expected = (long long)(expected); \\\n        if (_actual != _expected) { \\\n            printf(#actual \" != \" #expected \" at \" __FILE__ \":%d\\n\", __LINE__); \\\n            printf(\"    actual  : %lld (0x%llx)\\n\", _actual, _actual); \\\n            printf(\"    expected: %lld (0x%llx)\\n\", _expected, _expected); \\\n            longjmp(test_jump_back, 1); \\\n        } \\\n    } while (0)\n\nstatic void dump_block(uint8_t *block, size_t len)\n{\n    size_t index;\n    if (len > 16)\n        printf(\"\\n       \");\n    for (index = 0; index < len; ++index) {\n        printf(\" %02x\", block[index]);\n        if ((index % 16) == 15 && len > 16)\n            printf(\"\\n       \");\n    }\n    printf(\"\\n\");\n}\n\n#define compare_blocks(name, actual, actual_len, expected, expected_len)  \\\n    do { \\\n        if ((actual_len) != (expected_len) || \\\n                memcmp((actual), (expected), (actual_len)) != 0) { \\\n            printf(\"%s wrong at \" __FILE__ \":%d\\n\", (name), __LINE__); \\\n            printf(\"    actual  :\"); \\\n            dump_block((actual), (actual_len)); \\\n            printf(\"    expected:\"); \\\n            dump_block((expected), (expected_len)); \\\n            longjmp(test_jump_back, 1); \\\n        } \\\n    } while (0)\n\n/**\n * \\brief Checks an identifier from a protocol name.\n *\n * \\param id The identifier to check.\n * \\param category The identifier category.\n * \\param name The name to check against.\n */\nstatic void check_id(int id, int category, const char *name)\n{\n    const char *n = noise_id_to_name(category, id);\n    verify(name != 0);\n    verify(n != 0);\n    verify(!strcmp(name, n));\n}\n\n/**\n * \\brief Tests the parsing of the protocol name into components.\n *\n * \\param vec The test vector.\n *\n * \\return Non-zero if the handshake pattern is one-way.\n */\nstatic int test_name_parsing(const TestVector *vec)\n{\n    NoiseProtocolId id;\n    compare(noise_protocol_name_to_id\n                (&id, vec->protocol_name, strlen(vec->protocol_name)),\n            NOISE_ERROR_NONE);\n    if (vec->init_psk || vec->resp_psk)\n        compare(id.prefix_id, NOISE_PREFIX_PSK);\n    else\n        compare(id.prefix_id, NOISE_PREFIX_STANDARD);\n    check_id(id.pattern_id, NOISE_PATTERN_CATEGORY, vec->pattern);\n    check_id(id.dh_id, NOISE_DH_CATEGORY, vec->dh);\n    check_id(id.cipher_id, NOISE_CIPHER_CATEGORY, vec->cipher);\n    check_id(id.hash_id, NOISE_HASH_CATEGORY, vec->hash);\n    if (vec->hybrid)\n        check_id(id.hybrid_id, NOISE_DH_CATEGORY, vec->hybrid);\n    else\n        compare(id.hybrid_id, 0);\n    return id.pattern_id == NOISE_PATTERN_N ||\n           id.pattern_id == NOISE_PATTERN_X ||\n           id.pattern_id == NOISE_PATTERN_K;\n}\n\n/**\n * \\brief Test a connection between an initiator and a responder.\n *\n * \\param vec The test vector.\n * \\param is_one_way Non-zero if the handshake pattern is one-way.\n */\nstatic void test_connection(const TestVector *vec, int is_one_way)\n{\n    NoiseHandshakeState *initiator;\n    NoiseHandshakeState *responder;\n    NoiseHandshakeState *send;\n    NoiseHandshakeState *recv;\n    NoiseDHState *dh;\n    NoiseCipherState *c1init;\n    NoiseCipherState *c2init;\n    NoiseCipherState *c1resp;\n    NoiseCipherState *c2resp;\n    NoiseCipherState *csend;\n    NoiseCipherState *crecv;\n    NoiseBuffer mbuf;\n    NoiseBuffer pbuf;\n    uint8_t message[MAX_MESSAGE_SIZE];\n    uint8_t payload[MAX_MESSAGE_SIZE];\n    size_t index;\n    size_t mac_len;\n    int role;\n    int fallback = vec->fallback;\n\n    /* Create the two ends of the connection */\n    compare(noise_handshakestate_new_by_name\n                (&initiator, vec->protocol_name, NOISE_ROLE_INITIATOR),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_new_by_name\n                (&responder, vec->protocol_name, NOISE_ROLE_RESPONDER),\n            NOISE_ERROR_NONE);\n\n    /* Set all keys that we need to use */\n    if (vec->init_static) {\n        dh = noise_handshakestate_get_local_keypair_dh(initiator);\n        compare(noise_dhstate_set_keypair_private\n                    (dh, vec->init_static, vec->init_static_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->init_public_static) {\n        dh = noise_handshakestate_get_remote_public_key_dh(responder);\n        compare(noise_dhstate_set_public_key\n                    (dh, vec->init_public_static, vec->init_public_static_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->resp_static) {\n        dh = noise_handshakestate_get_local_keypair_dh(responder);\n        compare(noise_dhstate_set_keypair_private\n                    (dh, vec->resp_static, vec->resp_static_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->resp_public_static) {\n        dh = noise_handshakestate_get_remote_public_key_dh(initiator);\n        compare(noise_dhstate_set_public_key\n                    (dh, vec->resp_public_static, vec->resp_public_static_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->init_ephemeral) {\n        dh = noise_handshakestate_get_fixed_ephemeral_dh(initiator);\n        compare(noise_dhstate_set_keypair_private\n                    (dh, vec->init_ephemeral, vec->init_ephemeral_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->init_hybrid) {\n        dh = noise_handshakestate_get_fixed_hybrid_dh(initiator);\n        compare(noise_dhstate_set_keypair_private\n                    (dh, vec->init_hybrid, vec->init_hybrid_len),\n                NOISE_ERROR_NONE);\n    }\n    /* Note: The test data contains responder ephemeral keys for one-way\n       patterns which doesn't actually make sense.  Ignore those keys. */\n    if (vec->resp_ephemeral && strlen(vec->pattern) != 1) {\n        dh = noise_handshakestate_get_fixed_ephemeral_dh(responder);\n        compare(noise_dhstate_set_keypair_private\n                    (dh, vec->resp_ephemeral, vec->resp_ephemeral_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->resp_hybrid && strlen(vec->pattern) != 1) {\n        dh = noise_handshakestate_get_fixed_hybrid_dh(responder);\n        compare(noise_dhstate_set_keypair_private\n                    (dh, vec->resp_hybrid, vec->resp_hybrid_len),\n                NOISE_ERROR_NONE);\n    }\n\n    /* Set the prologues and pre shared keys */\n    if (vec->init_prologue) {\n        compare(noise_handshakestate_set_prologue\n                    (initiator, vec->init_prologue, vec->init_prologue_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->resp_prologue) {\n        compare(noise_handshakestate_set_prologue\n                    (responder, vec->resp_prologue, vec->resp_prologue_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->init_psk) {\n        compare(noise_handshakestate_set_pre_shared_key\n                    (initiator, vec->init_psk, vec->init_psk_len),\n                NOISE_ERROR_NONE);\n    }\n    if (vec->resp_psk) {\n        compare(noise_handshakestate_set_pre_shared_key\n                    (responder, vec->resp_psk, vec->resp_psk_len),\n                NOISE_ERROR_NONE);\n    }\n\n    /* Should be able to start the handshake now on both sides */\n    compare(noise_handshakestate_start(initiator), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_start(responder), NOISE_ERROR_NONE);\n\n    /* Work through the messages one by one until both sides \"split\" */\n    role = NOISE_ROLE_INITIATOR;\n    for (index = 0; index < vec->num_messages; ++index) {\n        if (noise_handshakestate_get_action(initiator) == NOISE_ACTION_SPLIT &&\n            noise_handshakestate_get_action(responder) == NOISE_ACTION_SPLIT) {\n            break;\n        }\n        if (role == NOISE_ROLE_INITIATOR) {\n            /* Send on the initiator, receive on the responder */\n            send = initiator;\n            recv = responder;\n            if (!is_one_way)\n                role = NOISE_ROLE_RESPONDER;\n        } else {\n            /* Send on the responder, receive on the initiator */\n            send = responder;\n            recv = initiator;\n            role = NOISE_ROLE_INITIATOR;\n        }\n        compare(noise_handshakestate_get_action(send),\n                NOISE_ACTION_WRITE_MESSAGE);\n        compare(noise_handshakestate_get_action(recv),\n                NOISE_ACTION_READ_MESSAGE);\n        noise_buffer_set_output(mbuf, message, sizeof(message));\n        noise_buffer_set_input(pbuf, vec->messages[index].payload,\n                               vec->messages[index].payload_len);\n        compare(noise_handshakestate_write_message(send, &mbuf, &pbuf),\n                NOISE_ERROR_NONE);\n        compare_blocks(\"ciphertext\", mbuf.data, mbuf.size,\n                       vec->messages[index].ciphertext,\n                       vec->messages[index].ciphertext_len);\n        if (fallback) {\n            /* Look up the pattern to fall back to */\n            int fallback_id = NOISE_PATTERN_XX_FALLBACK;\n            if (vec->fallback_pattern) {\n                fallback_id = noise_name_to_id\n                    (NOISE_PATTERN_CATEGORY, vec->fallback_pattern,\n                     strlen(vec->fallback_pattern));\n            }\n\n            /* Perform a read on the responder, which will fail */\n            compare(noise_handshakestate_read_message(recv, &mbuf, &pbuf),\n                    NOISE_ERROR_MAC_FAILURE);\n\n            /* Initiate fallback on both sides */\n            compare(noise_handshakestate_fallback_to(responder, fallback_id),\n                    NOISE_ERROR_NONE);\n            compare(noise_handshakestate_fallback_to(initiator, fallback_id),\n                    NOISE_ERROR_NONE);\n\n            /* Restart the protocols */\n            compare(noise_handshakestate_start(initiator), NOISE_ERROR_NONE);\n            compare(noise_handshakestate_start(responder), NOISE_ERROR_NONE);\n\n            /* Only need to fallback once */\n            fallback = 0;\n        } else {\n            noise_buffer_set_output(pbuf, payload, sizeof(payload));\n            compare(noise_handshakestate_read_message(recv, &mbuf, &pbuf),\n                    NOISE_ERROR_NONE);\n            compare_blocks(\"plaintext\", pbuf.data, pbuf.size,\n                           vec->messages[index].payload,\n                           vec->messages[index].payload_len);\n        }\n    }\n\n    /* Handshake finished.  Check the handshake hash values */\n    if (vec->handshake_hash_len) {\n        memset(payload, 0xAA, sizeof(payload));\n        compare(noise_handshakestate_get_handshake_hash\n                    (initiator, payload, vec->handshake_hash_len),\n                NOISE_ERROR_NONE);\n        compare_blocks(\"handshake_hash\", payload, vec->handshake_hash_len,\n                       vec->handshake_hash, vec->handshake_hash_len);\n        memset(payload, 0xAA, sizeof(payload));\n        compare(noise_handshakestate_get_handshake_hash\n                    (responder, payload, vec->handshake_hash_len),\n                NOISE_ERROR_NONE);\n        compare_blocks(\"handshake_hash\", payload, vec->handshake_hash_len,\n                       vec->handshake_hash, vec->handshake_hash_len);\n    }\n\n    /* Now handle the data transport */\n    compare(noise_handshakestate_split(initiator, &c1init, &c2init),\n            NOISE_ERROR_NONE);\n    compare(noise_handshakestate_split(responder, &c2resp, &c1resp),\n            NOISE_ERROR_NONE);\n    mac_len = noise_cipherstate_get_mac_length(c1init);\n    for (; index < vec->num_messages; ++index) {\n        if (role == NOISE_ROLE_INITIATOR) {\n            /* Send on the initiator, receive on the responder */\n            csend = c1init;\n            crecv = c1resp;\n            if (!is_one_way)\n                role = NOISE_ROLE_RESPONDER;\n        } else {\n            /* Send on the responder, receive on the initiator */\n            csend = c2resp;\n            crecv = c2init;\n            role = NOISE_ROLE_INITIATOR;\n        }\n        verify(sizeof(message) >= (vec->messages[index].payload_len + mac_len));\n        memcpy(message, vec->messages[index].payload,\n               vec->messages[index].payload_len);\n        noise_buffer_set_inout(mbuf, message, vec->messages[index].payload_len,\n                               sizeof(message));\n        compare(noise_cipherstate_encrypt(csend, &mbuf),\n                NOISE_ERROR_NONE);\n        compare_blocks(\"ciphertext\", mbuf.data, mbuf.size,\n                       vec->messages[index].ciphertext,\n                       vec->messages[index].ciphertext_len);\n        compare(noise_cipherstate_decrypt(crecv, &mbuf),\n                NOISE_ERROR_NONE);\n        compare_blocks(\"plaintext\", mbuf.data, mbuf.size,\n                       vec->messages[index].payload,\n                       vec->messages[index].payload_len);\n    }\n\n    /* Clean up */\n    compare(noise_handshakestate_free(initiator), NOISE_ERROR_NONE);\n    compare(noise_handshakestate_free(responder), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(c1init), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(c2init), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(c1resp), NOISE_ERROR_NONE);\n    compare(noise_cipherstate_free(c2resp), NOISE_ERROR_NONE);\n}\n\n/**\n * \\brief Runs a fully parsed test vector.\n *\n * \\param reader The input stream, for error reporting.\n * \\param vec The test vector.\n *\n * \\return Non-zero if the test succeeded, zero if it failed.\n */\nstatic int test_vector_run(JSONReader *reader, const TestVector *vec)\n{\n    int value;\n    printf(\"%s ... \", vec->name);\n    fflush(stdout);\n    if ((value = setjmp(test_jump_back)) == 0) {\n        int is_one_way = test_name_parsing(vec);\n        test_connection(vec, is_one_way);\n        printf(\"ok\\n\");\n        return 1;\n    } else if (value == 2) {\n        printf(\"skipped\\n\");\n        return 1;\n    } else {\n        printf(\"-> test data at %s:%ld\\n\", reader->filename, vec->line_number);\n        return 0;\n    }\n}\n\n/**\n * \\brief Look for a specific token next in the input stream.\n *\n * \\param reader The input stream.\n * \\param token The token code.\n * \\param name The token name for error reporting.\n */\nstatic void expect_token(JSONReader *reader, JSONToken token, const char *name)\n{\n    if (reader->errors)\n        return;\n    if (reader->token == token)\n        json_next_token(reader);\n    else\n        json_error(reader, \"Expecting '%s'\", name);\n}\n\n/**\n * \\brief Look for a specific field name next in the input stream,\n * followed by a colon.\n *\n * \\param reader The input stream.\n * \\param name The field name.\n */\nstatic void expect_name(JSONReader *reader, const char *name)\n{\n    if (reader->errors)\n        return;\n    if (json_is_name(reader, name)) {\n        json_next_token(reader);\n        expect_token(reader, JSON_TOKEN_COLON, \":\");\n    } else {\n        json_error(reader, \"Expecting \\\"%s\\\"\", name);\n    }\n}\n\n/**\n * \\brief Look for a field with a string value.\n *\n * \\param reader The input stream.\n * \\param value The location where to place the string value.\n */\nstatic void expect_string_field(JSONReader *reader, char **value)\n{\n    json_next_token(reader);\n    expect_token(reader, JSON_TOKEN_COLON, \":\");\n    if (!reader->errors && reader->token == JSON_TOKEN_STRING) {\n        *value = reader->str_value;\n        reader->str_value = 0;\n        json_next_token(reader);\n        if (!reader->errors && reader->token == JSON_TOKEN_COMMA)\n            json_next_token(reader);\n    }\n}\n\n/**\n * \\brief Converts an ASCII character into a hexadecimal digit.\n *\n * \\param ch The ASCII character.\n *\n * \\return The digit between 0 and 15, or -1 if \\a ch is not hexadecimal.\n */\nstatic int from_hex_digit(int ch)\n{\n    if (ch >= '0' && ch <= '9')\n        return ch - '0';\n    else if (ch >= 'A' && ch <= 'F')\n        return ch - 'A' + 10;\n    else if (ch >= 'a' && ch <= 'f')\n        return ch - 'a' + 10;\n    else\n        return -1;\n}\n\n/**\n * \\brief Look for a field with a binary value.\n *\n * \\param reader The input stream.\n * \\param value The location where to place the binary value.\n *\n * \\return The size of the binary value in bytes.\n */\nstatic size_t expect_binary_field(JSONReader *reader, uint8_t **value)\n{\n    size_t size = 0;\n    size_t posn;\n    const char *hex;\n    int digit1, digit2;\n    json_next_token(reader);\n    expect_token(reader, JSON_TOKEN_COLON, \":\");\n    if (!reader->errors && reader->token == JSON_TOKEN_STRING) {\n        size = strlen(reader->str_value) / 2;\n        *value = calloc(1, size + 1);\n        if (!(*value)) {\n            json_error(reader, \"Out of memory\");\n            return 0;\n        }\n        hex = reader->str_value;\n        for (posn = 0; posn < size; ++posn) {\n            digit1 = from_hex_digit(hex[posn * 2]);\n            digit2 = from_hex_digit(hex[posn * 2 + 1]);\n            if (digit1 < 0 || digit2 < 0) {\n                json_error(reader, \"Invalid hexadecimal data\");\n                return 0;\n            }\n            (*value)[posn] = digit1 * 16 + digit2;\n        }\n        json_next_token(reader);\n        if (!reader->errors && reader->token == JSON_TOKEN_COMMA)\n            json_next_token(reader);\n    }\n    return size;\n}\n\n/**\n * \\brief Look for a field with a boolean value.\n *\n * \\param reader The input stream.\n * \\return The boolean value.\n */\nstatic int expect_boolean_field(JSONReader *reader)\n{\n    int result = 0;\n    json_next_token(reader);\n    expect_token(reader, JSON_TOKEN_COLON, \":\");\n    if (!reader->errors && (reader->token == JSON_TOKEN_TRUE ||\n                            reader->token == JSON_TOKEN_FALSE)) {\n        result = (reader->token == JSON_TOKEN_TRUE);\n        json_next_token(reader);\n        if (!reader->errors && reader->token == JSON_TOKEN_COMMA)\n            json_next_token(reader);\n    }\n    return result;\n}\n\n/**\n * \\brief Processes a single test vector from an input stream.\n *\n * \\param reader The reader representing the input stream.\n *\n * \\return Non-zero if the test succeeded, zero if it failed.\n */\nstatic int process_test_vector(JSONReader *reader)\n{\n    TestVector vec;\n    char protocol_name[NOISE_MAX_PROTOCOL_NAME];\n    int retval = 1;\n    memset(&vec, 0, sizeof(TestVector));\n    while (!reader->errors && reader->token == JSON_TOKEN_STRING) {\n        if (json_is_name(reader, \"name\")) {\n            vec.line_number = reader->line_number;\n            expect_string_field(reader, &(vec.name));\n        } else if (json_is_name(reader, \"pattern\")) {\n            expect_string_field(reader, &(vec.pattern));\n        } else if (json_is_name(reader, \"dh\")) {\n            expect_string_field(reader, &(vec.dh));\n        } else if (json_is_name(reader, \"hybrid\")) {\n            expect_string_field(reader, &(vec.hybrid));\n        } else if (json_is_name(reader, \"cipher\")) {\n            expect_string_field(reader, &(vec.cipher));\n        } else if (json_is_name(reader, \"hash\")) {\n            expect_string_field(reader, &(vec.hash));\n        } else if (json_is_name(reader, \"init_static\")) {\n            vec.init_static_len =\n                expect_binary_field(reader, &(vec.init_static));\n        } else if (json_is_name(reader, \"init_remote_static\")) {\n            /* Refers to the initiator have pre-knowledge of the responder's\n               public key, which is \"resp_public_static\" in TestVector */\n            vec.resp_public_static_len =\n                expect_binary_field(reader, &(vec.resp_public_static));\n        } else if (json_is_name(reader, \"resp_static\")) {\n            vec.resp_static_len =\n                expect_binary_field(reader, &(vec.resp_static));\n        } else if (json_is_name(reader, \"resp_remote_static\")) {\n            /* Refers to the responder have pre-knowledge of the initiator's\n               public key, which is \"init_public_static\" in TestVector */\n            vec.init_public_static_len =\n                expect_binary_field(reader, &(vec.init_public_static));\n        } else if (json_is_name(reader, \"init_ephemeral\")) {\n            vec.init_ephemeral_len =\n                expect_binary_field(reader, &(vec.init_ephemeral));\n        } else if (json_is_name(reader, \"resp_ephemeral\")) {\n            vec.resp_ephemeral_len =\n                expect_binary_field(reader, &(vec.resp_ephemeral));\n        } else if (json_is_name(reader, \"init_hybrid_ephemeral\")) {\n            vec.init_hybrid_len =\n                expect_binary_field(reader, &(vec.init_hybrid));\n        } else if (json_is_name(reader, \"resp_hybrid_ephemeral\")) {\n            vec.resp_hybrid_len =\n                expect_binary_field(reader, &(vec.resp_hybrid));\n        } else if (json_is_name(reader, \"init_prologue\")) {\n            vec.init_prologue_len =\n                expect_binary_field(reader, &(vec.init_prologue));\n        } else if (json_is_name(reader, \"resp_prologue\")) {\n            vec.resp_prologue_len =\n                expect_binary_field(reader, &(vec.resp_prologue));\n        } else if (json_is_name(reader, \"init_psk\")) {\n            vec.init_psk_len =\n                expect_binary_field(reader, &(vec.init_psk));\n        } else if (json_is_name(reader, \"resp_psk\")) {\n            vec.resp_psk_len =\n                expect_binary_field(reader, &(vec.resp_psk));\n        } else if (json_is_name(reader, \"handshake_hash\")) {\n            vec.handshake_hash_len =\n                expect_binary_field(reader, &(vec.handshake_hash));\n        } else if (json_is_name(reader, \"fail\")) {\n            vec.fail = expect_boolean_field(reader);\n        } else if (json_is_name(reader, \"fallback\")) {\n            vec.fallback = expect_boolean_field(reader);\n        } else if (json_is_name(reader, \"fallback_pattern\")) {\n            expect_string_field(reader, &(vec.fallback_pattern));\n        } else if (json_is_name(reader, \"messages\")) {\n            json_next_token(reader);\n            expect_token(reader, JSON_TOKEN_COLON, \":\");\n            expect_token(reader, JSON_TOKEN_LSQUARE, \"[\");\n            while (!reader->errors && reader->token == JSON_TOKEN_LBRACE) {\n                if (vec.num_messages >= MAX_MESSAGES) {\n                    json_error(reader, \"Too many messages for test vector\");\n                    break;\n                }\n                expect_token(reader, JSON_TOKEN_LBRACE, \"{\");\n                while (!reader->errors && reader->token == JSON_TOKEN_STRING) {\n                    if (json_is_name(reader, \"payload\")) {\n                        vec.messages[vec.num_messages].payload_len =\n                            expect_binary_field\n                                (reader, &(vec.messages[vec.num_messages].payload));\n                    } else if (json_is_name(reader, \"ciphertext\")) {\n                        vec.messages[vec.num_messages].ciphertext_len =\n                            expect_binary_field\n                                (reader, &(vec.messages[vec.num_messages].ciphertext));\n                    } else {\n                        json_error(reader, \"Unknown message field '%s'\",\n                                   reader->str_value);\n                    }\n                }\n                if (!vec.messages[vec.num_messages].payload)\n                    json_error(reader, \"Missing payload for message\");\n                if (!vec.messages[vec.num_messages].ciphertext)\n                    json_error(reader, \"Missing ciphertext for message\");\n                ++(vec.num_messages);\n                expect_token(reader, JSON_TOKEN_RBRACE, \"}\");\n                if (!reader->errors && reader->token == JSON_TOKEN_COMMA)\n                    json_next_token(reader);\n            }\n            expect_token(reader, JSON_TOKEN_RSQUARE, \"]\");\n            if (!reader->errors && reader->token == JSON_TOKEN_COMMA)\n                json_next_token(reader);\n        } else {\n            json_error(reader, \"Unknown field '%s'\", reader->str_value);\n        }\n    }\n    snprintf(protocol_name, sizeof(protocol_name), \"Noise%s_%s_%s%s%s_%s_%s\",\n             (vec.init_psk || vec.resp_psk) ? \"PSK\" : \"\",\n             vec.pattern, vec.dh,\n             (vec.hybrid ? \"+\" : \"\"),\n             (vec.hybrid ? vec.hybrid : \"\"),\n             vec.cipher, vec.hash);\n    vec.protocol_name = strdup(protocol_name);\n    if (!reader->errors) {\n        retval = test_vector_run(reader, &vec);\n    }\n    test_vector_free(&vec);\n    return retval;\n}\n\n/**\n * \\brief Processes the test vectors from an input stream.\n *\n * \\param reader The reader representing the input stream.\n */\nstatic void process_test_vectors(JSONReader *reader)\n{\n    int ok = 1;\n    printf(\"--------------------------------------------------------------\\n\");\n    printf(\"Processing vectors from %s\\n\", reader->filename);\n    json_next_token(reader);\n    expect_token(reader, JSON_TOKEN_LBRACE, \"{\");\n    expect_name(reader, \"vectors\");\n    expect_token(reader, JSON_TOKEN_LSQUARE, \"[\");\n    while (!reader->errors && reader->token != JSON_TOKEN_RSQUARE) {\n        expect_token(reader, JSON_TOKEN_LBRACE, \"{\");\n        if (!process_test_vector(reader))\n            ok = 0;\n        expect_token(reader, JSON_TOKEN_RBRACE, \"}\");\n        if (!reader->errors && reader->token == JSON_TOKEN_COMMA)\n            expect_token(reader, JSON_TOKEN_COMMA, \",\");\n    }\n    expect_token(reader, JSON_TOKEN_RSQUARE, \"]\");\n    expect_token(reader, JSON_TOKEN_RBRACE, \"}\");\n    expect_token(reader, JSON_TOKEN_END, \"EOF\");\n    printf(\"--------------------------------------------------------------\\n\");\n    if (!ok) {\n        /* Some of the test vectors failed, so report a global failure */\n        ++(reader->errors);\n    }\n}\n\nstatic int process_file(const char *filename)\n{\n    int retval = 0;\n    FILE *file = fopen(filename, \"r\");\n    if (file) {\n        JSONReader reader;\n        json_init(&reader, filename, file);\n        process_test_vectors(&reader);\n        if (reader.errors > 0)\n            retval = 1;\n        json_free(&reader);\n        fclose(file);\n    } else {\n        perror(filename);\n        retval = 1;\n    }\n    return retval;\n}\n\nint main(int argc, char *argv[])\n{\n    if (noise_init() != NOISE_ERROR_NONE) {\n        fprintf(stderr, \"Noise initialization failed\\n\");\n        return 1;\n    }\n\n    int retval = 0;\n    char *srcdir = getenv(\"srcdir\");\n    if (argc <= 1 && !srcdir) {\n        fprintf(stderr, \"Usage: %s vectors1.txt vectors2.txt ...\\n\", argv[0]);\n        return 1;\n    } else if (argc > 1) {\n        while (argc > 1) {\n            retval |= process_file(argv[1]);\n            --argc;\n            ++argv;\n        }\n    } else {\n        if (chdir(srcdir) < 0) {\n            perror(srcdir);\n            return 1;\n        }\n        retval |= process_file(\"cacophony.txt\");\n        retval |= process_file(\"noise-c-basic.txt\");\n        retval |= process_file(\"noise-c-fallback.txt\");\n        retval |= process_file(\"noise-c-hybrid.txt\");\n    }\n    return retval;\n}\n"
  },
  {
    "path": "tools/Makefile.am",
    "content": "\nSUBDIRS = keytool protoc\n"
  },
  {
    "path": "tools/keytool/.gitignore",
    "content": "noise-keytool\nnoise-keytool.exe\n"
  },
  {
    "path": "tools/keytool/Makefile.am",
    "content": "\nbin_PROGRAMS = noise-keytool\n\nnoise_keytool_SOURCES = \\\n\tgenerate.c \\\n\tkeytool.c \\\n\tshow.c \\\n\tsign.c\n\nAM_CPPFLAGS = -I$(top_srcdir)/include\nAM_CFLAGS = @WARNING_FLAGS@\n\nLDADD = ../../src/keys/libnoisekeys.a \\\n        ../../src/protobufs/libnoiseprotobufs.a \\\n        ../../src/protocol/libnoiseprotocol.a\n\nif USE_LIBSODIUM\nAM_CPPFLAGS += -DUSE_LIBSODIUM=1\nAM_CFLAGS += $(libsodium_CFLAGS)\nLDADD += $(libsodium_LIBS)\nendif\n\nif USE_OPENSSL\nAM_CPPFLAGS += -DUSE_OPENSSL=1\nAM_CFLAGS += $(openssl_CFLAGS)\nLDADD += $(openssl_LIBS)\nendif\n"
  },
  {
    "path": "tools/keytool/generate.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"keytool.h\"\n\n#define short_options \"i:n:r:a:p:\"\n\nstatic struct option const long_options[] = {\n    {\"id\",                      required_argument,      NULL,       'i'},\n    {\"name\",                    required_argument,      NULL,       'n'},\n    {\"role\",                    required_argument,      NULL,       'r'},\n    {\"algorithms\",              required_argument,      NULL,       'a'},\n    {\"passphrase\",              required_argument,      NULL,       'p'},\n    {NULL,                      0,                      NULL,        0 }\n};\n\n/* Name of the encryption scheme to use to protect private keys */\n#define PROTECT_NAME    \"ChaChaPoly_BLAKE2b_PBKDF2\"\n\n#define MAX_ALGS 16\n\nstatic char *id = NULL;\nstatic char *name = NULL;\nstatic char *role = NULL;\nstatic char *passphrase = NULL;\nstatic char *certificate_file = NULL;\nstatic char *private_key_file = NULL;\nstatic int alg_ids[MAX_ALGS];\nstatic int num_alg_ids = 0;\n\n/* Print help/usage information */\nvoid help_generate(const char *progname)\n{\n    fprintf(stdout, \"Usage: %s generate [options] certificate-file private-key-file\\n\\n\", progname);\n    fprintf(stdout, \"Options:\\n\\n\");\n    fprintf(stdout, \"    --id=ID, -i ID\\n\");\n    fprintf(stdout, \"        Identifier for the key owner; e.g. foo@domain.\\n\\n\");\n    fprintf(stdout, \"    --name=NAME, -n NAME\\n\");\n    fprintf(stdout, \"        Human-readable name for the key owner.\\n\\n\");\n    fprintf(stdout, \"    --role=ROLE, -r ROLE\\n\");\n    fprintf(stdout, \"        Role indicating how the key will be used.\\n\\n\");\n    fprintf(stdout, \"    --algorithms=ALGS, -a ALGS\\n\");\n    fprintf(stdout, \"        Comma-separated list of the public key algorithms to generate keys for.\\n\");\n    fprintf(stdout, \"        Allowed values: '25519', '448', 'Ed25519', 'all'.  Default is 'all'.\\n\\n\");\n    fprintf(stdout, \"    --passphrase=PASSPHRASE, -p PASSPHRASE\\n\");\n    fprintf(stdout, \"        Specifies the passphrase to use to protect the private key.\\n\");\n    fprintf(stdout, \"        Prompt the user if not specified on the command-line.\\n\\n\");\n}\n\n/* Adds an ID to the list of algorithms to generate keys for */\nstatic void add_algorithm_id(int id)\n{\n    int index;\n    for (index = 0; index < num_alg_ids; ++index) {\n        if (alg_ids[index] == id)\n            return;\n    }\n    if (num_alg_ids < MAX_ALGS)\n        alg_ids[num_alg_ids++] = id;\n}\n\n/* Parse the algorithm names */\nstatic int parse_algorithms(const char *names)\n{\n    char *end;\n    size_t len;\n    while (*names != '\\0') {\n        end = strchr(names, ',');\n        if (end)\n            len = end - names;\n        else\n            len = strlen(names);\n        if (len == 3 && !strncmp(names, \"all\", 3)) {\n            add_algorithm_id(NOISE_DH_CURVE25519);\n            add_algorithm_id(NOISE_DH_CURVE448);\n            add_algorithm_id(NOISE_SIGN_ED25519);\n        } else {\n            int id = noise_name_to_id(NOISE_DH_CATEGORY, names, len);\n            if (id == NOISE_DH_NONE) {\n                id = noise_name_to_id(NOISE_SIGN_CATEGORY, names, len);\n                if (id == NOISE_SIGN_NONE) {\n                    fprintf(stderr, \"Unknown algorithm id '\");\n                    fwrite(names, 1, len, stderr);\n                    fprintf(stderr, \"'\\n\");\n                    return 0;\n                }\n                add_algorithm_id(id);\n            }\n        }\n        names += len;\n        if (*names == ',')\n            ++names;\n    }\n    return 1;\n}\n\n/* Parse the command-line options */\nstatic int parse_options_generate(const char *progname, int argc, char *argv[])\n{\n    int index = 0;\n    int ch;\n    while ((ch = getopt_long(argc, argv, short_options, long_options, &index)) != -1) {\n        switch (ch) {\n        case 'i':   id = optarg; break;\n        case 'n':   name = optarg; break;\n        case 'r':   role = optarg; break;\n        case 'a':\n            if (!parse_algorithms(optarg))\n                return 0;\n            break;\n        case 'p':   passphrase = optarg; break;\n        default:\n            help_generate(progname);\n            return 0;\n        }\n    }\n    if (!num_alg_ids) {\n        parse_algorithms(\"all\");\n    }\n    if ((optind + 2) != argc) {\n        help_generate(progname);\n        return 0;\n    }\n    certificate_file = argv[optind];\n    private_key_file = argv[optind + 1];\n    return 1;\n}\n\n/* Main entry point for the \"generate\" subcommand */\nint main_generate(const char *progname, int argc, char *argv[])\n{\n    int retval = 0;\n    Noise_PrivateKey *key = 0;\n    Noise_Certificate *cert = 0;\n    Noise_SubjectInfo *subject = 0;\n    uint8_t *private_key = 0;\n    uint8_t *public_key = 0;\n    size_t private_key_length = 0;\n    size_t public_key_length = 0;\n    int index, err;\n\n    /* Parse the command-line options */\n    if (!parse_options_generate(progname, argc, argv))\n        return 1;\n\n    /* If there was no passphrase on the command-line, then prompt for one */\n    if (!passphrase) {\n        passphrase = ask_for_passphrase(1);\n        if (!passphrase)\n            return 1;\n    }\n\n    /* Create the private key and certificate objects */\n    CHECK_ERROR(Noise_PrivateKey_new(&key));\n    CHECK_ERROR(Noise_Certificate_new(&cert));\n    CHECK_ERROR(Noise_Certificate_set_version(cert, 1));\n    CHECK_ERROR(Noise_Certificate_get_new_subject(cert, &subject));\n    if (id) {\n        CHECK_ERROR(Noise_PrivateKey_set_id(key, id, strlen(id)));\n        CHECK_ERROR(Noise_SubjectInfo_set_id(subject, id, strlen(id)));\n    }\n    if (name) {\n        CHECK_ERROR(Noise_PrivateKey_set_name(key, name, strlen(name)));\n        CHECK_ERROR(Noise_SubjectInfo_set_name(subject, name, strlen(name)));\n    }\n    if (role) {\n        CHECK_ERROR(Noise_PrivateKey_set_role(key, role, strlen(role)));\n        CHECK_ERROR(Noise_SubjectInfo_set_role(subject, role, strlen(role)));\n    }\n\n    /* Generate the key pairs */\n    for (index = 0; index < num_alg_ids; ++index) {\n        int id = alg_ids[index];\n        const char *name = noise_id_to_name(0, id);\n        Noise_PublicKeyInfo *pub_key = 0;\n        Noise_PrivateKeyInfo *priv_key = 0;\n        if (!name)\n            continue;   /* Shouldn't happen, but just in case */\n        CHECK_ERROR(Noise_SubjectInfo_add_keys(subject, &pub_key));\n        CHECK_ERROR(Noise_PublicKeyInfo_set_algorithm\n                        (pub_key, name, strlen(name)));\n        CHECK_ERROR(Noise_PrivateKey_add_keys(key, &priv_key));\n        CHECK_ERROR(Noise_PrivateKeyInfo_set_algorithm\n                        (priv_key, name, strlen(name)));\n        if ((id & 0xFF00) == NOISE_DH_CATEGORY) {\n            /* Create a Diffie-Hellman keypair */\n            NoiseDHState *dh = 0;\n            if (noise_dhstate_new_by_id(&dh, id) == NOISE_ERROR_NONE) {\n                public_key_length = noise_dhstate_get_public_key_length(dh);\n                private_key_length = noise_dhstate_get_private_key_length(dh);\n                public_key = (uint8_t *)malloc(public_key_length);\n                private_key = (uint8_t *)malloc(private_key_length);\n                if (!public_key || !private_key) {\n                    fprintf(stderr, \"Insufficient memory for key objects\\n\");\n                    retval = 1;\n                    goto cleanup;\n                }\n                err = noise_dhstate_generate_keypair(dh);\n                if (err != NOISE_ERROR_NONE) {\n                    noise_perror(name, err);\n                    retval = 1;\n                    goto cleanup;\n                }\n                noise_dhstate_get_keypair\n                    (dh, private_key, private_key_length,\n                     public_key, public_key_length);\n                noise_dhstate_free(dh);\n            } else {\n                fprintf(stderr, \"Unknown Diffie-Hellman algorithm '%s'\\n\",\n                        name);\n                retval = 1;\n                goto cleanup;\n            }\n        } else {\n            /* Create a signing keypair */\n            NoiseSignState *sign = 0;\n            if (noise_signstate_new_by_id(&sign, id) == NOISE_ERROR_NONE) {\n                public_key_length = noise_signstate_get_public_key_length(sign);\n                private_key_length = noise_signstate_get_private_key_length(sign);\n                public_key = (uint8_t *)malloc(public_key_length);\n                private_key = (uint8_t *)malloc(private_key_length);\n                if (!public_key || !private_key) {\n                    fprintf(stderr, \"Insufficient memory for key objects\\n\");\n                    retval = 1;\n                    goto cleanup;\n                }\n                err = noise_signstate_generate_keypair(sign);\n                if (err != NOISE_ERROR_NONE) {\n                    noise_perror(name, err);\n                    retval = 1;\n                    goto cleanup;\n                }\n                noise_signstate_get_keypair\n                    (sign, private_key, private_key_length,\n                     public_key, public_key_length);\n                noise_signstate_free(sign);\n            } else {\n                fprintf(stderr, \"Unknown signing algorithm '%s'\\n\",\n                        name);\n                retval = 1;\n                goto cleanup;\n            }\n        }\n        CHECK_ERROR(Noise_PublicKeyInfo_set_key\n                        (pub_key, public_key, public_key_length));\n        CHECK_ERROR(Noise_PrivateKeyInfo_set_key\n                        (priv_key, private_key, private_key_length));\n        noise_free(private_key, private_key_length);\n        noise_free(public_key, public_key_length);\n        private_key = 0;\n        public_key = 0;\n        private_key_length = 0;\n        public_key_length = 0;\n    }\n\n    /* Save the certificate and private key */\n    err = noise_save_certificate_to_file(cert, certificate_file);\n    if (err == NOISE_ERROR_SYSTEM) {\n        perror(certificate_file);\n        retval = 1;\n        goto cleanup;\n    } else if (err != NOISE_ERROR_NONE) {\n        noise_perror(certificate_file, err);\n        retval = 1;\n        goto cleanup;\n    }\n    err = noise_save_private_key_to_file\n        (key, private_key_file, passphrase, strlen(passphrase),\n         PROTECT_NAME);\n    if (err == NOISE_ERROR_SYSTEM) {\n        perror(private_key_file);\n        retval = 1;\n        goto cleanup;\n    } else if (err != NOISE_ERROR_NONE) {\n        noise_perror(private_key_file, err);\n        retval = 1;\n        goto cleanup;\n    }\n\n    /* Clean up and exit */\ncleanup:\n    Noise_PrivateKey_free(key);\n    Noise_Certificate_free(cert);\n    noise_free(private_key, private_key_length);\n    noise_free(public_key, public_key_length);\n    return retval;\n}\n"
  },
  {
    "path": "tools/keytool/keytool.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"keytool.h\"\n\n#define MAX_PASSPHRASE  1024\n\nstatic char passphrase[MAX_PASSPHRASE];\n\n/* Print usage information */\nstatic void usage(const char *progname)\n{\n    fprintf(stdout, \"Usage: %s command [options] ...\\n\\n\", progname);\n    fprintf(stdout, \"Commands:\\n\\n\");\n    fprintf(stdout, \"    generate   Generate a private key and certificate.\\n\");\n    fprintf(stdout, \"    show       Show information about a key or certificate.\\n\");\n    fprintf(stdout, \"    sign       Sign a certificate.\\n\");\n    fprintf(stdout, \"    help       Show command-specific help.\\n\");\n    fprintf(stdout, \"\\n\");\n}\n\n/* Clean up sensitive information before we exit */\nstatic void cleanup(void)\n{\n    noise_clean(passphrase, sizeof(passphrase));\n}\n\nint main(int argc, char *argv[])\n{\n    const char *progname = argv[0];\n    int retval = 0;\n\n    /* Need at least 1 argument for the subcommand name */\n    if (argc < 2) {\n        usage(progname);\n        return 1;\n    }\n\n    if (noise_init() != NOISE_ERROR_NONE) {\n        fprintf(stderr, \"Noise initialization failed\\n\");\n        return 1;\n    }\n\n    /* Determine which subcommand to run */\n    if (!strcmp(argv[1], \"generate\")) {\n        retval = main_generate(progname, argc - 1, argv + 1);\n    } else if (!strcmp(argv[1], \"show\")) {\n        retval = main_show(progname, argc - 1, argv + 1);\n    } else if (!strcmp(argv[1], \"sign\")) {\n        retval = main_sign(progname, argc - 1, argv + 1);\n    } else if (!strcmp(argv[1], \"help\") && argc > 2) {\n        if (!strcmp(argv[2], \"generate\")) {\n            help_generate(progname);\n        } else if (!strcmp(argv[2], \"show\")) {\n            help_show(progname);\n        } else if (!strcmp(argv[2], \"sign\")) {\n            help_sign(progname);\n        } else {\n            usage(progname);\n            retval = 1;\n        }\n    } else {\n        usage(progname);\n        retval = 1;\n    }\n\n    /* Clean up and exit */\n    cleanup();\n    return retval;\n}\n\nvoid report_error(const char *file, long line, int err)\n{\n    char errstr[256];\n    noise_strerror(err, errstr, sizeof(errstr));\n    fprintf(stderr, \"Internal error (%s:%ld): %s\\n\", file, line, errstr);\n}\n\nchar *ask_for_passphrase(int confirm)\n{\n#if defined(__WIN32__) || defined(WIN32) || defined(__ANDROID__)\n    /* TODO */\n    return 0;\n#else\n    char *pp = getpass(\"Passphrase: \");\n    char *np;\n    if (!pp) {\n        perror(\"getpass\");\n        return 0;\n    }\n    strncpy(passphrase, pp, sizeof(passphrase));\n    passphrase[sizeof(passphrase) - 1] = '\\0';\n    noise_clean(pp, strlen(pp));\n    if (!confirm)\n        return passphrase;\n    np = getpass(\"Confirm Passphrase: \");\n    if (!np) {\n        perror(\"getpass\");\n        return 0;\n    }\n    if (strcmp(passphrase, np) != 0) {\n        noise_clean(np, strlen(np));\n        fprintf(stderr, \"The two passphrases do not match.\\n\");\n        return 0;\n    }\n    noise_clean(np, strlen(np));\n    return passphrase;\n#endif\n}\n"
  },
  {
    "path": "tools/keytool/keytool.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef __KEYTOOL_H__\n#define __KEYTOOL_H__\n\n#include <noise/protocol.h>\n#include <noise/keys.h>\n#include <stdio.h>\n#include <string.h>\n#include <stdlib.h>\n#include <unistd.h>\n#include <getopt.h>\n\nvoid help_generate(const char *progname);\nvoid help_show(const char *progname);\nvoid help_sign(const char *progname);\n\nint main_generate(const char *progname, int argc, char *argv[]);\nint main_show(const char *progname, int argc, char *argv[]);\nint main_sign(const char *progname, int argc, char *argv[]);\n\nvoid report_error(const char *file, long line, int err);\n\nchar *ask_for_passphrase(int confirm);\n\n#define CHECK_ERROR(code)   \\\n    do { \\\n        int err = (code); \\\n        if (err != NOISE_ERROR_NONE) { \\\n            report_error(__FILE__, __LINE__, err); \\\n            retval = 1; \\\n            goto cleanup; \\\n        } \\\n    } while (0)\n\n#endif\n"
  },
  {
    "path": "tools/keytool/show.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"keytool.h\"\n\n#define short_options \"p:fF\"\n\nstatic struct option const long_options[] = {\n    {\"passphrase\",              required_argument,      NULL,       'p'},\n    {\"basic-fingerprint\",       no_argument,            NULL,       'f'},\n    {\"full-fingerprint\",        no_argument,            NULL,       'F'},\n    {NULL,                      0,                      NULL,        0 }\n};\n\nstatic char *passphrase = NULL;\nstatic int fingerprint_type = NOISE_FINGERPRINT_BASIC;\nstatic int first_file_index = 0;\nstatic int multiple_files = 0;\n\n/* Print usage/help information */\nvoid help_show(const char *progname)\n{\n    fprintf(stdout, \"Usage: %s show [options] file ...\\n\\n\", progname);\n    fprintf(stdout, \"Options:\\n\\n\");\n    fprintf(stdout, \"    --passphrase=PASSPHRASE, -p PASSPHRASE\\n\");\n    fprintf(stdout, \"        Specifies the passphrase to unlock a private key file.\\n\");\n    fprintf(stdout, \"        Prompt the user if not specified on the command-line.\\n\\n\");\n    fprintf(stdout, \"    --basic-fingerprint, -f\\n\");\n    fprintf(stdout, \"        Show a basic fingerprint for all public keys (default).\\n\\n\");\n    fprintf(stdout, \"    --full-fingerprint, -F\\n\");\n    fprintf(stdout, \"        Show a full fingerprint for all public keys.\\n\\n\");\n}\n\n/* Parse the command-line options */\nstatic int parse_options_show(const char *progname, int argc, char *argv[])\n{\n    int index = 0;\n    int ch;\n    while ((ch = getopt_long(argc, argv, short_options, long_options, &index)) != -1) {\n        switch (ch) {\n        case 'p':   passphrase = optarg; break;\n        case 'f':   fingerprint_type = NOISE_FINGERPRINT_BASIC; break;\n        case 'F':   fingerprint_type = NOISE_FINGERPRINT_FULL; break;\n        default:\n            help_show(progname);\n            return 0;\n        }\n    }\n    if ((optind + 1) > argc) {\n        help_show(progname);\n        return 0;\n    }\n    if ((optind + 2) <= argc) {\n        multiple_files = 1;\n    }\n    first_file_index = optind;\n    return 1;\n}\n\n/* Dump the information within a certificate */\nstatic void dump_certificate(const Noise_Certificate *cert)\n{\n    size_t index, count;\n    char fingerprint[NOISE_MAX_FINGERPRINT_LEN];\n    printf(\"Version: %lu\\n\",\n           (unsigned long)Noise_Certificate_get_version(cert));\n    if (Noise_Certificate_has_subject(cert)) {\n        const Noise_SubjectInfo *subject = Noise_Certificate_get_subject(cert);\n        if (Noise_SubjectInfo_has_id(subject)) {\n            printf(\"Id: %s\\n\", Noise_SubjectInfo_get_id(subject));\n        }\n        if (Noise_SubjectInfo_has_name(subject)) {\n            printf(\"Name: %s\\n\", Noise_SubjectInfo_get_name(subject));\n        }\n        if (Noise_SubjectInfo_has_role(subject)) {\n            printf(\"Role: %s\\n\", Noise_SubjectInfo_get_role(subject));\n        }\n        count = Noise_SubjectInfo_count_keys(subject);\n        for (index = 0; index < count; ++index) {\n            const Noise_PublicKeyInfo *key =\n                Noise_SubjectInfo_get_at_keys(subject, index);\n            const char *algorithm = Noise_PublicKeyInfo_get_algorithm(key);\n            size_t key_size = Noise_PublicKeyInfo_get_size_key(key);\n            const uint8_t *key_data =\n                (const uint8_t *)Noise_PublicKeyInfo_get_key(key);\n            if (!algorithm)\n                algorithm = \"Unknown\";\n            if (key_size) {\n                int err = noise_format_fingerprint\n                    (fingerprint_type, fingerprint, sizeof(fingerprint),\n                     key_data, key_size);\n                if (err != NOISE_ERROR_NONE)\n                    noise_perror(\"fingerprint\", err);\n                printf(\"Public-Key-%s: %s\\n\", algorithm, fingerprint);\n            } else {\n                printf(\"Public-Key-%s: Not-Specified\\n\", algorithm);\n            }\n        }\n        count = Noise_SubjectInfo_count_meta(subject);\n        for (index = 0; index < count; ++index) {\n            const Noise_MetaInfo *meta =\n                Noise_SubjectInfo_get_at_meta(subject, index);\n            const char *name = Noise_MetaInfo_get_name(meta);\n            const char *value = Noise_MetaInfo_get_name(meta);\n            if (!name)\n                name = \"Unknown\";\n            if (!value)\n                value = \"\";\n            printf(\"Meta: %s=%s\\n\", name, value);\n        }\n    }\n}\n\n/* Shows details for a certificate */\nstatic int show_certificate(const char *filename, NoiseProtobuf *pbuf)\n{\n    Noise_Certificate *cert;\n    int err;\n\n    /* Load the certificate from the buffer */\n    err = noise_load_certificate_from_buffer(&cert, pbuf);\n    if (err != NOISE_ERROR_NONE) {\n        noise_perror(filename, err);\n        return 0;\n    }\n\n    /* Dump the certificate details */\n    if (multiple_files) {\n        printf(\"--------\\n\");\n        printf(\"%s:\\n\", filename);\n    }\n    dump_certificate(cert);\n\n    /* Clean up and exit */\n    Noise_Certificate_free(cert);\n    return 1;\n}\n\n/* Shows details for a certificate chain */\nstatic int show_certificate_chain(const char *filename, NoiseProtobuf *pbuf)\n{\n    Noise_CertificateChain *chain;\n    size_t index, count;\n    int err;\n\n    /* Load the certificate chain from the buffer */\n    err = noise_load_certificate_chain_from_buffer(&chain, pbuf);\n    if (err != NOISE_ERROR_NONE) {\n        noise_perror(filename, err);\n        return 0;\n    }\n\n    /* Dump the certificate chain details */\n    if (multiple_files) {\n        printf(\"--------\\n\");\n        printf(\"%s:\\n\", filename);\n    }\n    count = Noise_CertificateChain_count_certs(chain);\n    for (index = 0; index < count; ++index) {\n        if (index != 0)\n            printf(\"--------\\n\");\n        dump_certificate(Noise_CertificateChain_get_at_certs(chain, index));\n    }\n\n    /* Clean up and exit */\n    Noise_CertificateChain_free(chain);\n    return 1;\n}\n\n/* Dump the information within a private key */\nstatic void dump_private_key(const Noise_PrivateKey *priv_key)\n{\n    size_t index, count;\n    char fingerprint[NOISE_MAX_FINGERPRINT_LEN];\n    if (Noise_PrivateKey_has_id(priv_key)) {\n        printf(\"Id: %s\\n\", Noise_PrivateKey_get_id(priv_key));\n    }\n    if (Noise_PrivateKey_has_name(priv_key)) {\n        printf(\"Name: %s\\n\", Noise_PrivateKey_get_name(priv_key));\n    }\n    if (Noise_PrivateKey_has_role(priv_key)) {\n        printf(\"Role: %s\\n\", Noise_PrivateKey_get_role(priv_key));\n    }\n    count = Noise_PrivateKey_count_keys(priv_key);\n    for (index = 0; index < count; ++index) {\n        const Noise_PrivateKeyInfo *key =\n            Noise_PrivateKey_get_at_keys(priv_key, index);\n        const char *algorithm = Noise_PrivateKeyInfo_get_algorithm(key);\n        size_t key_size = Noise_PrivateKeyInfo_get_size_key(key);\n        const uint8_t *key_data =\n            (const uint8_t *)Noise_PrivateKeyInfo_get_key(key);\n        if (!algorithm)\n            algorithm = \"Unknown\";\n        if (key_size) {\n            NoiseDHState *dh = 0;\n            NoiseSignState *sign = 0;\n            int err;\n            strcpy(fingerprint, \"Unknown\");\n            if (noise_dhstate_new_by_name(&dh, algorithm) == NOISE_ERROR_NONE) {\n                err = noise_dhstate_set_keypair_private\n                        (dh, key_data, key_size);\n                if (err == NOISE_ERROR_NONE) {\n                    noise_dhstate_format_fingerprint\n                        (dh, fingerprint_type, fingerprint,\n                         sizeof(fingerprint));\n                }\n            } else if (noise_signstate_new_by_name(&sign, algorithm) == NOISE_ERROR_NONE) {\n                err = noise_signstate_set_keypair_private\n                        (sign, key_data, key_size);\n                if (err == NOISE_ERROR_NONE) {\n                    noise_signstate_format_fingerprint\n                        (sign, fingerprint_type, fingerprint,\n                         sizeof(fingerprint));\n                }\n            }\n            printf(\"Public-Key-%s: %s\\n\", algorithm, fingerprint);\n            noise_dhstate_free(dh);\n            noise_signstate_free(sign);\n        } else {\n            printf(\"Public-Key-%s: Not-Specified\\n\", algorithm);\n        }\n    }\n    count = Noise_PrivateKey_count_meta(priv_key);\n    for (index = 0; index < count; ++index) {\n        const Noise_MetaInfo *meta =\n            Noise_PrivateKey_get_at_meta(priv_key, index);\n        const char *name = Noise_MetaInfo_get_name(meta);\n        const char *value = Noise_MetaInfo_get_name(meta);\n        if (!name)\n            name = \"Unknown\";\n        if (!value)\n            value = \"\";\n        printf(\"Meta: %s=%s\\n\", name, value);\n    }\n}\n\n/* Shows details for a private key after decrypting it */\nstatic int show_private_key(const char *filename, NoiseProtobuf *pbuf)\n{\n    Noise_PrivateKey *priv_key;\n    const char *pp;\n    int err;\n\n    /* Prompt for the passphrase if necessary */\n    if (passphrase) {\n        pp = passphrase;\n    } else {\n        pp = ask_for_passphrase(0);\n        if (!pp)\n            return 0;\n    }\n\n    /* Load the certificate from the buffer */\n    err = noise_load_private_key_from_buffer(&priv_key, pbuf, pp, strlen(pp));\n    if (err == NOISE_ERROR_MAC_FAILURE) {\n        fprintf(stderr, \"%s: Incorrect passphrase\\n\", filename);\n        return 0;\n    } else if (err != NOISE_ERROR_NONE) {\n        noise_perror(filename, err);\n        return 0;\n    }\n\n    /* Dump the private key details */\n    if (multiple_files) {\n        printf(\"--------\\n\");\n        printf(\"%s:\\n\", filename);\n    }\n    dump_private_key(priv_key);\n\n    /* Clean up and exit */\n    Noise_PrivateKey_free(priv_key);\n    return 1;\n}\n\n/* Shows the contents of a certificate or key file */\nstatic int show_file(const char *filename)\n{\n    FILE *file;\n    int ok = 1;\n    uint8_t *data;\n    size_t len;\n    NoiseProtobuf pbuf;\n\n    /* Read the file's contents into memory */\n    data = (uint8_t *)malloc(NOISE_MAX_PAYLOAD_LEN);\n    if (!data) {\n        perror(\"malloc\");\n        return 0;\n    }\n    file = fopen(filename, \"rb\");\n    if (!file) {\n        perror(filename);\n        noise_free(data, NOISE_MAX_PAYLOAD_LEN);\n        return 0;\n    }\n    len = fread(data, 1, NOISE_MAX_PAYLOAD_LEN, file);\n    if (!len) {\n        if (ferror(file))\n            perror(filename);\n        else\n            fprintf(stderr, \"%s: Empty file\\n\", filename);\n        fclose(file);\n        noise_free(data, NOISE_MAX_PAYLOAD_LEN);\n        return 0;\n    }\n    fclose(file);\n\n    /* Based on the first tag byte, determine whether we have a\n       certificate, a certificate chain, or a private key */\n    noise_protobuf_prepare_input(&pbuf, data, len);\n    if (data[0] == 0x50) {\n        /* Encrypted private key */\n        ok = show_private_key(filename, &pbuf);\n    } else if (data[0] == 0x40) {\n        /* Certificate chain */\n        ok = show_certificate_chain(filename, &pbuf);\n    } else {\n        /* Everything else is assumed to be a plain certificate */\n        ok = show_certificate(filename, &pbuf);\n    }\n\n    /* Clean up and exit */\n    noise_free(data, NOISE_MAX_PAYLOAD_LEN);\n    return ok;\n}\n\n/* Main entry point for the \"show\" subcommand */\nint main_show(const char *progname, int argc, char *argv[])\n{\n    int retval = 0;\n\n    /* Parse the command-line options */\n    if (!parse_options_show(progname, argc, argv))\n        return 1;\n\n    /* Process all files */\n    while (first_file_index < argc) {\n        if (!show_file(argv[first_file_index]))\n            retval = 1;\n        ++first_file_index;\n    }\n\n    /* Clean up and exit */\n    return retval;\n}\n"
  },
  {
    "path": "tools/keytool/sign.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"keytool.h\"\n\n#define short_options \"k:a:p:m:n:\"\n\nstatic struct option const long_options[] = {\n    {\"signing-key\",             required_argument,      NULL,       'k'},\n    {\"algorithm\",               required_argument,      NULL,       'a'},\n    {\"passphrase\",              required_argument,      NULL,       'p'},\n    {\"valid-months\",            required_argument,      NULL,       'm'},\n    {\"nonce-size\",              required_argument,      NULL,       'n'},\n    {NULL,                      0,                      NULL,        0 }\n};\n\nstatic char *algorithm = NULL;\nstatic char *passphrase = NULL;\nstatic char *signing_key_file = NULL;\nstatic char *input_certificate = NULL;\nstatic char *output_certificate = NULL;\nstatic int valid_months = 24;\nstatic int nonce_size = 16;\n\n/* Print usage/help information */\nvoid help_sign(const char *progname)\n{\n    fprintf(stdout, \"Usage: %s sign [options] input-certificate output-certificate\\n\\n\", progname);\n    fprintf(stdout, \"Options:\\n\\n\");\n    fprintf(stdout, \"    --signing-key=FILE, -s FILE\\n\");\n    fprintf(stdout, \"        Specifies the private key to sign the certificate with (required).\\n\\n\");\n    fprintf(stdout, \"    --passphrase=PASSPHRASE, -p PASSPHRASE\\n\");\n    fprintf(stdout, \"        Specifies the passphrase to use to unlock the private key.\\n\");\n    fprintf(stdout, \"        Prompt the user if not specified on the command-line.\\n\\n\");\n    fprintf(stdout, \"    --algorithm=ALG, -a ALG\\n\");\n    fprintf(stdout, \"        Specifies the algorithm to sign with.  Default is to use the first\\n\");\n    fprintf(stdout, \"        key value that is capable of signing.\\n\\n\");\n    fprintf(stdout, \"    --valid-months=NUM-MONTHS, -m NUM-MONTHS\\n\");\n    fprintf(stdout, \"        Number of months that the certificate is valid for.  Default is 24.\\n\");\n    fprintf(stdout, \"        If the value is zero, then the validity period is unspecified.\\n\\n\");\n    fprintf(stdout, \"    --nonce-size=SIZE, -n SIZE\\n\");\n    fprintf(stdout, \"        Size of the nonce value in bytes: 0, 16, 32, or 64.  Default is 16.\\n\\n\");\n}\n\n/* Parse the command-line options */\nstatic int parse_options_sign(const char *progname, int argc, char *argv[])\n{\n    int index = 0;\n    int ch;\n    while ((ch = getopt_long(argc, argv, short_options, long_options, &index)) != -1) {\n        switch (ch) {\n        case 'k':   signing_key_file = optarg; break;\n        case 'a':   algorithm = optarg; break;\n        case 'p':   passphrase = optarg; break;\n        case 'm':\n            /* Sanity check the range a little bit: 0 to 20 years */\n            valid_months = atoi(optarg);\n            if (valid_months < 0)\n                valid_months = 0;\n            else if (valid_months > (20 * 12))\n                valid_months = 20 * 12;\n            break;\n        case 'n':\n            nonce_size = atoi(optarg);\n            if (nonce_size != 0 && nonce_size != 16 &&\n                    nonce_size != 32 && nonce_size != 64) {\n                help_sign(progname);\n                return 0;\n            }\n            break;\n        default:\n            help_sign(progname);\n            return 0;\n        }\n    }\n    if (!signing_key_file || (optind + 2) != argc) {\n        help_sign(progname);\n        return 0;\n    }\n    input_certificate = argv[optind];\n    output_certificate = argv[optind + 1];\n    return 1;\n}\n\n/* Main entry point for the \"sign\" subcommand */\nint main_sign(const char *progname, int argc, char *argv[])\n{\n    int retval = 0;\n\n    /* Parse the command-line options */\n    if (!parse_options_sign(progname, argc, argv))\n        return 1;\n\n    // TODO\n\n    /* Clean up and exit */\n    return retval;\n}\n"
  },
  {
    "path": "tools/protoc/.gitignore",
    "content": "proto3-grammar.c\nproto3-grammar.h\nproto3-lexer.c\nnoise-protoc\nnoise-protoc.exe\n"
  },
  {
    "path": "tools/protoc/Makefile.am",
    "content": "\nbin_PROGRAMS = noise-protoc\n\nBUILT_SOURCES = proto3-grammar.h\n\nnoise_protoc_SOURCES = \\\n\tmain.c \\\n        proto3-ast.c \\\n        proto3-generate-c.c \\\n        proto3-grammar.y \\\n        proto3-lexer.l\n\nAM_CFLAGS = @WARNING_FLAGS@\nAM_YFLAGS = -d\n\nCLEANFILES = proto3-grammar.c proto3-grammar.h proto3-lexer.c\n\nEXTRA_DIST = test.proto\n"
  },
  {
    "path": "tools/protoc/main.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include <stdio.h>\n#include <string.h>\n#include <unistd.h>\n#include <getopt.h>\n#include \"proto3-ast.h\"\n\n#define short_options \"c:h:l:\"\n\nstatic struct option const long_options[] = {\n    {\"output-c\",                required_argument,      NULL,       'c'},\n    {\"output-h\",                required_argument,      NULL,       'h'},\n    {\"license\",                 required_argument,      NULL,       'l'},\n    {NULL,                      0,                      NULL,        0 }\n};\n\nint parse_file(const char *filename);\nvoid generate_c(const char *output_c_name, FILE *output_c,\n                const char *output_h_name, FILE *output_h);\n\nstatic char *output_c_file = \"proto_defs.c\";\nstatic char *output_h_file = \"proto_defs.h\";\nstatic char *input_file = NULL;\nchar *license_file = NULL;\n\n/* Print usage information */\nstatic void usage(const char *progname)\n{\n    fprintf(stderr, \"Usage: %s [options] proto-file\\n\\n\", progname);\n    fprintf(stderr, \"Options:\\n\\n\");\n    fprintf(stderr, \"    --output-c=filename, -c filename\\n\");\n    fprintf(stderr, \"        Name of the file for the output C source code.\\n\");\n    fprintf(stderr, \"        Defaults to proto_defs.c in the current directory.\\n\\n\");\n    fprintf(stderr, \"    --output-h=filename, -h filename\\n\");\n    fprintf(stderr, \"        Name of the file for the output C header definitions.\\n\");\n    fprintf(stderr, \"        Defaults to proto_defs.h in the current directory.\\n\\n\");\n    fprintf(stderr, \"    --license=filename, -l filename\\n\");\n    fprintf(stderr, \"        File containing Copyright license details to add to all outputs.\\n\");\n}\n\n/* Parse the command-line options */\nstatic int parse_options(int argc, char *argv[])\n{\n    const char *progname = argv[0];\n    int index = 0;\n    int ch;\n    while ((ch = getopt_long(argc, argv, short_options, long_options, &index)) != -1) {\n        switch (ch) {\n        case 'c':   output_c_file = optarg; break;\n        case 'h':   output_h_file = optarg; break;\n        case 'l':   license_file = optarg; break;\n        default:\n            usage(progname);\n            return 0;\n        }\n    }\n    if ((optind + 1) != argc) {\n        usage(progname);\n        return 0;\n    }\n    input_file = argv[optind];\n    return 1;\n}\n\nint main(int argc, char *argv[])\n{\n    int retval = 0;\n    FILE *output_c = NULL;\n    FILE *output_h = NULL;\n\n    /* Parse the command-line options */\n    if (!parse_options(argc, argv))\n        return 1;\n\n    /* Parse the input file */\n    if (!parse_file(input_file))\n        retval = 1;\n\n    /* Open the output files */\n    if (!retval) {\n        output_c = fopen(output_c_file, \"w\");\n        if (!output_c) {\n            perror(output_c_file);\n            retval = 1;\n        }\n    }\n    if (!retval) {\n        output_h = fopen(output_h_file, \"w\");\n        if (!output_h) {\n            perror(output_h_file);\n            retval = 1;\n        }\n    }\n\n    /* Generate the output */\n    if (!retval) {\n        generate_c(output_c_file, output_c, output_h_file, output_h);\n    }\n\n    /* Close the output files */\n    if (output_c)\n        fclose(output_c);\n    if (output_h)\n        fclose(output_h);\n\n    /* Clean up and exit */\n    proto3_cleanup();\n    if (retval) {\n        unlink(output_c_file);\n        unlink(output_h_file);\n    }\n    return retval;\n}\n"
  },
  {
    "path": "tools/protoc/proto3-ast.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"proto3-ast.h\"\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nvoid yyerror(const char *msg, ...);\nvoid yyerror_on_line(const char *msg, long line, ...);\nvoid yywarning(const char *msg, ...);\nvoid yywarning_on_line(const char *msg, long line, ...);\n\ntypedef struct _Proto3StringBlock\n{\n    struct _Proto3StringBlock *next;\n    char data[1];\n\n} Proto3StringBlock;\n\ntypedef struct _Proto3Scope\n{\n    struct _Proto3Scope *next;\n    Proto3ScopeId id;\n    Proto3Name name;\n    Proto3Message *message;\n    Proto3Enum *enum_node;\n\n} Proto3Scope;\n\nstatic Proto3StringBlock *blocks = 0;\nstatic Proto3Scope *scopes = 0;\nstatic Proto3Name package_name = {0};\nstatic Proto3Message *messages = 0;\nstatic Proto3Enum *enums = 0;\n\n/**\n * \\brief Interns a string into the global string table.\n *\n * \\param str The string to be interned.\n * \\param len The length of the string in bytes.\n *\n * \\return The interned version of the string.\n */\nProto3Name proto3_string(const char *str, size_t len)\n{\n    Proto3Name n;\n    Proto3StringBlock *block;\n    block = (Proto3StringBlock *)malloc(sizeof(Proto3StringBlock) + len);\n    if (!block)\n        exit(1);\n    block->next = blocks;\n    blocks = block;\n    memcpy(block->data, str, len);\n    block->data[len] = '\\0';\n    n.name = block->data;\n    return n;\n}\n\n/**\n * \\brief Interns a name into the global string table.\n *\n * \\param name The name to be interned.\n *\n * \\return The interned version of the name.\n */\nProto3Name proto3_basic_name(const char *name)\n{\n    return proto3_string(name, strlen(name));\n}\n\n/**\n * \\brief Creates a qualified name.\n *\n * \\param parent The name of the parent scope.\n * \\param name The name within the scope.\n *\n * \\return The concatenation of \\a parent, \".\", and \\a name.\n */\nProto3Name proto3_qualified_name(Proto3Name parent, Proto3Name name)\n{\n    Proto3Name n;\n    Proto3StringBlock *block;\n    size_t parent_len = strlen(parent.name);\n    size_t name_len = strlen(name.name);\n    size_t len = parent_len + name_len + 1;\n    block = (Proto3StringBlock *)malloc(sizeof(Proto3StringBlock) + len);\n    if (!block)\n        exit(1);\n    block->next = blocks;\n    blocks = block;\n    memcpy(block->data, parent.name, parent_len);\n    block->data[parent_len] = '.';\n    memcpy(block->data + parent_len + 1, name.name, name_len);\n    block->data[len] = '\\0';\n    n.name = block->data;\n    return n;\n}\n\n/**\n * \\brief Creates a qualified name.\n *\n * \\param parent The name of the parent scope.\n * \\param parent_len The length of the parent's name.\n * \\param name The name within the scope.\n *\n * \\return The concatenation of \\a parent, \".\", and \\a name.\n */\nProto3Name proto3_qualified_name_2(Proto3Name parent, size_t parent_len, Proto3Name name)\n{\n    Proto3Name n;\n    Proto3StringBlock *block;\n    size_t name_len = strlen(name.name);\n    size_t len = parent_len + name_len + 1;\n    block = (Proto3StringBlock *)malloc(sizeof(Proto3StringBlock) + len);\n    if (!block)\n        exit(1);\n    block->next = blocks;\n    blocks = block;\n    memcpy(block->data, parent.name, parent_len);\n    block->data[parent_len] = '.';\n    memcpy(block->data + parent_len + 1, name.name, name_len);\n    block->data[len] = '\\0';\n    n.name = block->data;\n    return n;\n}\n\n/**\n * \\brief Qualifies a name using the current scope or package name.\n *\n * \\param name The basic name to be qualified.\n *\n * \\return The qualified form of \\a name.\n */\nProto3Name proto3_qualify_name(Proto3Name name)\n{\n    if (scopes)\n        return proto3_qualified_name(scopes->name, name);\n    else if (package_name.name)\n        return proto3_qualified_name(package_name, name);\n    else\n        return name;\n}\n\n/**\n * \\brief Pushes into a new scope.\n *\n * \\param id The identifier for the scope, message or enum.\n * \\param name The name of the scope.\n * \\param line The line where the name was declared.\n */\nvoid proto3_push_scope(Proto3ScopeId id, Proto3Name name, int line)\n{\n    Proto3Message *message, *prev_message;\n    Proto3Enum *enum_node, *prev_enum;\n    Proto3Scope *scope = (Proto3Scope *)calloc(1, sizeof(Proto3Scope));\n    if (!scope)\n        exit(1);\n    scope->next = scopes;\n    scope->id = id;\n    scope->name = name;\n    scopes = scope;\n    if (id == PROTO3_SCOPE_MESSAGE) {\n        message = messages;\n        prev_message = 0;\n        while (message != 0) {\n            if (!strcmp(message->name.name, name.name)) {\n                yyerror(\"'%s' redeclared\", name.name);\n                yyerror_on_line(\"previous declaration here\", message->line);\n            }\n            prev_message = message;\n            message = message->next;\n        }\n        enum_node = enums;\n        while (enum_node != 0) {\n            if (!strcmp(enum_node->name.name, name.name)) {\n                yyerror(\"'%s' redeclared\", name.name);\n                yyerror_on_line(\"previous declaration here\", enum_node->line);\n            }\n            enum_node = enum_node->next;\n        }\n        message = (Proto3Message *)calloc(1, sizeof(Proto3Message));\n        if (!message)\n            exit(1);\n        message->next = 0;\n        if (prev_message)\n            prev_message->next = message;\n        else\n            messages = message;\n        message->name = name;\n        message->fields = 0;\n        message->line = line;\n        scope->message = message;\n    } else {\n        enum_node = enums;\n        prev_enum = 0;\n        while (enum_node != 0) {\n            if (!strcmp(enum_node->name.name, name.name)) {\n                yyerror(\"'%s' redeclared\", name.name);\n                yyerror_on_line(\"previous declaration here\", enum_node->line);\n            }\n            prev_enum = enum_node;\n            enum_node = enum_node->next;\n        }\n        message = messages;\n        while (message != 0) {\n            if (!strcmp(message->name.name, name.name)) {\n                yyerror(\"'%s' redeclared\", name.name);\n                yyerror_on_line(\"previous declaration here\", message->line);\n            }\n            message = message->next;\n        }\n        enum_node = (Proto3Enum *)calloc(1, sizeof(Proto3Enum));\n        if (!enum_node)\n            exit(1);\n        enum_node->next = 0;\n        if (prev_enum)\n            prev_enum->next = enum_node;\n        else\n            enums = enum_node;\n        enum_node->name = name;\n        enum_node->values = 0;\n        enum_node->line = line;\n        scope->enum_node = enum_node;\n    }\n}\n\n/**\n * \\brief Pop from the current scope level.\n */\nvoid proto3_pop_scope(void)\n{\n    if (scopes) {\n        Proto3Scope *next = scopes->next;\n        free(scopes);\n        scopes = next;\n    }\n}\n\n/**\n * \\brief Creates a basic type descriptor.\n *\n * \\param id The type identifier.\n *\n * \\return The type descriptor.\n */\nProto3Type proto3_basic_type(Proto3TypeId id)\n{\n    Proto3Type type;\n    memset(&type, 0, sizeof(type));\n    type.id = id;\n    return type;\n}\n\n/**\n * \\brief Creates a map type descriptor.\n *\n * \\param key_type The type descriptor for keys.\n * \\param value_type The type descriptor for values.\n *\n * \\return The descriptor for the map type.\n */\nProto3Type proto3_map_type(Proto3Type key_type, Proto3Type value_type)\n{\n    Proto3Type type;\n    memset(&type, 0, sizeof(type));\n    type.id = PROTO3_TYPE_MAP;\n    type.key_type_id = key_type.id;\n    type.value_type_id = value_type.id;\n    type.name = value_type.name;\n    return type;\n}\n\n/**\n * \\brief Creates a named type descriptor.\n *\n * \\param name The type name.\n *\n * \\return The type descriptor.\n */\nProto3Type proto3_named_type(Proto3Name name)\n{\n    Proto3Type type;\n    memset(&type, 0, sizeof(type));\n    type.id = PROTO3_TYPE_NAMED;\n    type.name = name;\n    return type;\n}\n\n/**\n * \\brief Determine if a type can be used with the \"packed\" encoding.\n *\n * \\param type The type to test.\n *\n * \\return Non-zero if the \\a type can be packed, zero otherwise.\n */\nint proto3_can_pack_type(Proto3Type type)\n{\n    switch (type.id) {\n    case PROTO3_TYPE_INT32:\n    case PROTO3_TYPE_UINT32:\n    case PROTO3_TYPE_INT64:\n    case PROTO3_TYPE_UINT64:\n    case PROTO3_TYPE_SINT32:\n    case PROTO3_TYPE_SINT64:\n    case PROTO3_TYPE_FIXED32:\n    case PROTO3_TYPE_SFIXED32:\n    case PROTO3_TYPE_FIXED64:\n    case PROTO3_TYPE_SFIXED64:\n    case PROTO3_TYPE_FLOAT:\n    case PROTO3_TYPE_DOUBLE:\n    case PROTO3_TYPE_BOOL:\n        return 1;\n    default:\n        return 0;\n    }\n}\n\n/**\n * \\brief Adds a field to a message scope.\n *\n * \\param qualifier The field qualifier: required, repeated, etc.\n * \\param type The field type.\n * \\param name The field name.\n * \\param tag The numeric tag for the field.\n * \\param option An extra field option.\n * \\param line The line where the name was declared.\n */\nvoid proto3_add_field(Proto3FieldQualifier qualifier, Proto3Type type,\n                      Proto3Name name, uint64_t tag, Proto3Option option,\n                      int line)\n{\n    Proto3Message *message;\n    Proto3Field *field, *prev;\n    if (!scopes || !scopes->message) {\n        yyerror(\"field outside a message block\");\n        return;\n    }\n    message = scopes->message;\n    field = message->fields;\n    while (field != 0) {\n        if (!strcmp(field->name.name, name.name)) {\n            yyerror(\"'%s' redeclared\", name.name);\n            yyerror_on_line(\"previous declaration here\", field->line);\n        }\n        if (field->tag == tag) {\n            yyerror(\"tag number %lu reused\", (unsigned long)tag);\n            yyerror_on_line(\"previous use here\", field->line);\n        }\n        field = field->next;\n    }\n    field = message->fields;\n    prev = 0;\n    while (field != 0 && field->tag <= tag) {\n        prev = field;\n        field = field->next;\n    }\n    field = (Proto3Field *)calloc(1, sizeof(Proto3Field));\n    if (!field)\n        exit(1);\n    if (prev) {\n        field->next = prev->next;\n        prev->next = field;\n    } else {\n        field->next = message->fields;\n        message->fields = field;\n    }\n    field->qualifier = qualifier;\n    field->name = name;\n    field->type = type;\n    field->tag = tag;\n    field->option = option;\n    field->line = line;\n}\n\n/**\n * \\brief Adds an enum value to an enum scope.\n *\n * \\param name The name of the enum.\n * \\param value The numeric value to associate with the enum.\n * \\param line The line where the name was declared.\n */\nvoid proto3_add_enum(Proto3Name name, uint64_t value, int line)\n{\n    Proto3Enum *enum_node;\n    Proto3EnumValue *enum_value, *prev;\n    if (!scopes || !scopes->enum_node) {\n        yyerror(\"enum value outside an enum block\");\n        return;\n    }\n    enum_node = scopes->enum_node;\n    enum_value = enum_node->values;\n    prev = 0;\n    while (enum_value != 0) {\n        if (!strcmp(enum_value->name.name, name.name)) {\n            yyerror(\"'%s' redeclared\", name.name);\n            yyerror(\"previous declaration here\", enum_value->line);\n        }\n        prev = enum_value;\n        enum_value = enum_value->next;\n    }\n    enum_value = (Proto3EnumValue *)calloc(1, sizeof(Proto3EnumValue));\n    if (!enum_value)\n        exit(1);\n    if (prev) {\n        enum_value->next = prev->next;\n        prev->next = enum_value;\n    } else {\n        enum_value->next = enum_node->values;\n        enum_node->values = enum_value;\n    }\n    enum_value->name = name;\n    enum_value->value = value;\n    enum_value->line = line;\n}\n\n/**\n * \\brief Adds an option to the current scope.\n *\n * \\param option The option to add.\n */\nvoid proto3_add_scope_option(Proto3Option option)\n{\n    /* Nothing to do here yet: ignore all options */\n}\n\n/**\n * \\brief Determine if the current message scope has fields.\n *\n * \\return Non-zero if the message has fields, zero if not.\n */\nint proto3_have_scope_fields(void)\n{\n    if (!scopes || !scopes->message)\n        return 0;\n    else\n        return scopes->message->fields != 0;\n}\n\n/**\n * \\brief Determine if the current enum scope has enumerated values.\n *\n * \\return Non-zero if the enum has values, zero if not.\n */\nint proto3_have_scope_enums(void)\n{\n    if (!scopes || !scopes->enum_node)\n        return 0;\n    else\n        return scopes->enum_node->values != 0;\n}\n\n/**\n * \\brief Sets the name of the package for definitions in the current file.\n *\n * \\param name The name of the package.\n */\nvoid proto3_set_package_name(Proto3Name name)\n{\n    if (!package_name.name) {\n        package_name = name;\n    } else {\n        yyerror(\"package name has already been declared\");\n    }\n}\n\n/**\n * \\brief Tries to resolve a fully-qualified type name.\n *\n * \\param name The name to try.\n *\n * \\return Non-zero if the name is found, zero if not.\n */\nstatic int proto3_resolve_try_name(Proto3Name name)\n{\n    Proto3Message *message = messages;\n    Proto3Enum *enum_node = enums;\n    while (message != 0) {\n        if (!strcmp(message->name.name, name.name))\n            return 1;\n        message = message->next;\n    }\n    while (enum_node != 0) {\n        if (!strcmp(enum_node->name.name, name.name))\n            return 1;\n        enum_node = enum_node->next;\n    }\n    return 0;\n}\n\n/**\n * \\brief Resolves a name to a fully-qualified type name.\n *\n * \\param parent Name of the parent scope.\n * \\param name The name to be resolved.\n *\n * \\return The resolved version of the name, or NULL if not found.\n */\nstatic Proto3Name proto3_resolve_name(Proto3Name parent, Proto3Name name)\n{\n    size_t len = strlen(parent.name);\n    Proto3Name trial;\n    char *ptr;\n    for (;;) {\n        if (len)\n            trial = proto3_qualified_name_2(parent, len, name);\n        else\n            trial = name;\n        if (proto3_resolve_try_name(trial))\n            return trial;\n        if (!len)\n            break;\n        ptr = parent.name + len;\n        while (ptr != parent.name) {\n            --ptr;\n            if (*ptr == '.')\n                break;\n        }\n        len = ptr - parent.name;\n    }\n    trial.name = 0;\n    return trial;\n}\n\n/**\n * \\brief Resolves a reference to a type.\n *\n * \\param parent Name of the parent scope.\n * \\param type The type to be resolved.\n * \\param line The line number where the field was declared.\n *\n * \\return The resolved version of the type.\n */\nstatic Proto3Type proto3_resolve_type\n    (Proto3Name parent, Proto3Type type, int line)\n{\n    if (type.id == PROTO3_TYPE_NAMED) {\n        /* Resolve a type name to either an enum or message type */\n        Proto3Name name = proto3_resolve_name(parent, type.name);\n        if (!name.name) {\n            yywarning_on_line(\"'%s' cannot be resolved to a type\", line,\n                              type.name.name);\n            return type;\n        }\n        return proto3_named_type(name);\n    } else if (type.id == PROTO3_TYPE_MAP) {\n        /* Resolve a map type */\n        Proto3Type key_type;\n        Proto3Type value_type;\n        memset(&key_type, 0, sizeof(key_type));\n        memset(&value_type, 0, sizeof(value_type));\n        key_type.id = type.key_type_id;\n        value_type.id = type.value_type_id;\n        value_type.name = type.name;\n        return proto3_map_type\n            (key_type, proto3_resolve_type(parent, value_type, line));\n    }\n    return type;\n}\n\n/**\n * \\brief Resolves all type name references.\n */\nvoid proto3_resolve_types(void)\n{\n    Proto3Message *message = messages;\n    Proto3Field *field;\n    while (message != 0) {\n        field = message->fields;\n        while (field != 0) {\n            field->type = proto3_resolve_type\n                (message->name, field->type, field->line);\n            field = field->next;\n        }\n        message = message->next;\n    }\n}\n\n#define proto3_cleanup_list(type, list) \\\n    do { \\\n        type *current, *next; \\\n        current = (list); \\\n        while (current != 0) { \\\n            next = current->next; \\\n            free(current); \\\n            current = next; \\\n        } \\\n        (list) = 0; \\\n    } while (0)\n\n/**\n * \\brief Cleans up all structures that were allocated during parsing.\n */\nvoid proto3_cleanup(void)\n{\n    proto3_cleanup_list(Proto3StringBlock, blocks);\n    proto3_cleanup_list(Proto3Scope, scopes);\n    proto3_cleanup_list(Proto3Message, messages);\n    proto3_cleanup_list(Proto3Enum, enums);\n    package_name.name = 0;\n}\n\n/**\n * \\brief Gets a pointer to the first message declaration.\n */\nProto3Message *proto3_first_message(void)\n{\n    return messages;\n}\n\n/**\n * \\brief Gets a pointer to the first enum declaration.\n */\nProto3Enum *proto3_first_enum(void)\n{\n    return enums;\n}\n"
  },
  {
    "path": "tools/protoc/proto3-ast.h",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#ifndef __PROTO3_AST_H__\n#define __PROTO3_AST_H__\n\n#include <stdint.h>\n#include <stddef.h>\n\n#define PROTO3_MAX_NAME_LEN 128\n\ntypedef struct {\n    char *name;\n} Proto3Name;\n\ntypedef enum {\n    PROTO3_TYPE_INVALID,\n    PROTO3_TYPE_INT32,\n    PROTO3_TYPE_UINT32,\n    PROTO3_TYPE_INT64,\n    PROTO3_TYPE_UINT64,\n    PROTO3_TYPE_SINT32,\n    PROTO3_TYPE_SINT64,\n    PROTO3_TYPE_FIXED32,\n    PROTO3_TYPE_SFIXED32,\n    PROTO3_TYPE_FIXED64,\n    PROTO3_TYPE_SFIXED64,\n    PROTO3_TYPE_FLOAT,\n    PROTO3_TYPE_DOUBLE,\n    PROTO3_TYPE_BOOL,\n    PROTO3_TYPE_STRING,\n    PROTO3_TYPE_BYTES,\n    PROTO3_TYPE_MAP,\n    PROTO3_TYPE_NAMED,\n    PROTO3_TYPE_ENUM\n} Proto3TypeId;\n\ntypedef struct {\n    Proto3TypeId id;\n    Proto3Name name;\n    Proto3TypeId key_type_id;\n    Proto3TypeId value_type_id;\n} Proto3Type;\n\ntypedef enum {\n    PROTO3_SCOPE_MESSAGE,\n    PROTO3_SCOPE_ENUM\n} Proto3ScopeId;\n\ntypedef enum {\n    PROTO3_QUAL_REPEATED,\n    PROTO3_QUAL_REQUIRED,\n    PROTO3_QUAL_OPTIONAL,\n    PROTO3_QUAL_PACKED\n} Proto3FieldQualifier;\n\ntypedef enum {\n    PROTO3_VALUE_NONE,\n    PROTO3_VALUE_NUMBER,\n    PROTO3_VALUE_BOOL,\n    PROTO3_VALUE_STRING,\n    PROTO3_VALUE_IDENTIFIER\n} Proto3ValueTypeId;\n\ntypedef struct {\n    Proto3ValueTypeId type;\n    uint64_t num_value;\n    Proto3Name name_value;\n} Proto3OptionValue;\n\ntypedef struct {\n    Proto3Name name;\n    Proto3OptionValue value;\n} Proto3Option;\n\ntypedef struct _Proto3Field {\n    struct _Proto3Field *next;\n    Proto3FieldQualifier qualifier;\n    Proto3Name name;\n    Proto3Type type;\n    uint64_t tag;\n    Proto3Option option;\n    int line;\n} Proto3Field;\n\ntypedef struct _Proto3Message {\n    struct _Proto3Message *next;\n    Proto3Name name;\n    Proto3Field *fields;\n    int line;\n} Proto3Message;\n\ntypedef struct _Proto3EnumValue {\n    struct _Proto3EnumValue *next;\n    Proto3Name name;\n    uint64_t value;\n    int line;\n} Proto3EnumValue;\n\ntypedef struct _Proto3Enum {\n    struct _Proto3Enum *next;\n    Proto3Name name;\n    Proto3EnumValue *values;\n    int line;\n} Proto3Enum;\n\nProto3Name proto3_string(const char *str, size_t len);\n\nProto3Name proto3_basic_name(const char *name);\nProto3Name proto3_qualified_name(Proto3Name parent, Proto3Name name);\nProto3Name proto3_qualify_name(Proto3Name name);\n\nvoid proto3_push_scope(Proto3ScopeId id, Proto3Name name, int line);\nvoid proto3_pop_scope(void);\n\nProto3Type proto3_basic_type(Proto3TypeId id);\nProto3Type proto3_map_type(Proto3Type key_type, Proto3Type value_type);\nProto3Type proto3_named_type(Proto3Name name);\nint proto3_can_pack_type(Proto3Type type);\n\nvoid proto3_add_field(Proto3FieldQualifier qualifier, Proto3Type type,\n                      Proto3Name name, uint64_t tag, Proto3Option option,\n                      int line);\nvoid proto3_add_enum(Proto3Name name, uint64_t value, int line);\nvoid proto3_add_scope_option(Proto3Option option);\nint proto3_have_scope_fields(void);\nint proto3_have_scope_enums(void);\n\nvoid proto3_set_package_name(Proto3Name name);\n\nvoid proto3_resolve_types(void);\n\nvoid proto3_cleanup(void);\n\nProto3Message *proto3_first_message(void);\nProto3Enum *proto3_first_enum(void);\n\n#endif\n"
  },
  {
    "path": "tools/protoc/proto3-generate-c.c",
    "content": "/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include \"proto3-ast.h\"\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n\nextern char *license_file;\n\nstatic FILE *output = NULL;\nstatic int indent_level = 0;\n\ntypedef struct _Proto3TypeOps Proto3TypeOps;\nstruct _Proto3TypeOps\n{\n    const char *proto_name;\n    const char *c_name;\n    void (*declare_field)(const Proto3TypeOps *type, Proto3Field *field);\n    void (*free_field)(const Proto3TypeOps *type, Proto3Field *field);\n    void (*clear_field)(const Proto3TypeOps *type, Proto3Field *field);\n    void (*write_field)(const Proto3TypeOps *type, int tag, Proto3Field *field);\n    void (*read_field)(const Proto3TypeOps *type, int tag, Proto3Message *message, Proto3Field *field);\n    void (*declare_field_ops)(const Proto3TypeOps *type, Proto3Message *message, Proto3Field *field, int header_only);\n};\n\nstatic void print_indent(void)\n{\n    int indent = indent_level;\n    while (indent > 0) {\n        fputs(\"    \", output);\n        --indent;\n    }\n}\n\n/**\n * \\brief Generates a name into the output with '.' replaced by '_'.\n */\nstatic void generate_name(FILE *output, const char *name)\n{\n    while (name && *name != '\\0') {\n        int ch = (*name++ & 0xFF);\n        if (ch != '.')\n            putc(ch, output);\n        else\n            putc('_', output);\n    }\n}\n\n/**\n * \\brief Declares a numeric field in a struct.\n */\nstatic void type_numeric_declare_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"%s *%s;\\n\", type->c_name, field->name.name);\n        print_indent();\n        fprintf(output, \"size_t %s_count_;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"size_t %s_max_;\\n\", field->name.name);\n    } else {\n        print_indent();\n        fprintf(output, \"%s %s;\\n\", type->c_name, field->name.name);\n    }\n}\n\n/**\n * \\brief Free a numeric field.\n */\nstatic void type_numeric_free_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"noise_protobuf_free_memory(obj->%s, obj->%s_max_ * sizeof(%s));\\n\",\n                field->name.name, field->name.name, type->c_name);\n    }\n}\n\n/**\n * \\brief Clears a numeric field.\n */\nstatic void type_numeric_clear_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    type_numeric_free_field(type, field);\n    print_indent();\n    fprintf(output, \"obj->%s = 0;\\n\", field->name.name);\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"obj->%s_count_ = 0;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"obj->%s_max_ = 0;\\n\", field->name.name);\n    }\n}\n\n/**\n * \\brief Writes a numeric field.\n */\nstatic void type_numeric_write_field\n    (const Proto3TypeOps *type, int tag, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED) {\n        print_indent();\n        fprintf(output, \"for (index = obj->%s_count_; index > 0; --index)\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_%s(pbuf, %d, obj->%s[index - 1]);\\n\",\n                type->proto_name, tag, field->name.name);\n        --indent_level;\n    } else if (field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_end_element(pbuf, &end_packed);\\n\");\n        print_indent();\n        fprintf(output, \"for (index = obj->%s_count_; index > 0; --index)\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_%s(pbuf, 0, obj->%s[index - 1]);\\n\",\n                type->proto_name, field->name.name);\n        --indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_start_element(pbuf, %d, end_packed);\\n\", tag);\n    } else if (field->qualifier == PROTO3_QUAL_OPTIONAL &&\n                    (field->type.id != PROTO3_TYPE_FLOAT &&\n                     field->type.id != PROTO3_TYPE_DOUBLE)) {\n        print_indent();\n        fprintf(output, \"if (obj->%s)\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_%s(pbuf, %d, obj->%s);\\n\",\n                type->proto_name, tag, field->name.name);\n        --indent_level;\n    } else {\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_%s(pbuf, %d, obj->%s);\\n\",\n                type->proto_name, tag, field->name.name);\n    }\n}\n\n/**\n * \\brief Reads a numeric field.\n */\nstatic void type_numeric_read_field\n    (const Proto3TypeOps *type, int tag, Proto3Message *message, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED) {\n        print_indent();\n        fprintf(output, \"%s value = 0;\\n\", type->c_name);\n        print_indent();\n        fprintf(output, \"noise_protobuf_read_%s(pbuf, %d, &value);\\n\",\n                type->proto_name, tag);\n        print_indent();\n        generate_name(output, message->name.name);\n        fprintf(output, \"_add_%s(*obj, value);\\n\", field->name.name);\n    } else if (field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"size_t end_packed = 0;\\n\");\n        print_indent();\n        fprintf(output, \"noise_protobuf_read_start_element(pbuf, %d, &end_packed);\\n\", tag);\n        print_indent();\n        fprintf(output, \"while (!noise_protobuf_read_at_end_element(pbuf, end_packed)) {\\n\");\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"%s value = 0;\\n\", type->c_name);\n        print_indent();\n        fprintf(output, \"noise_protobuf_read_%s(pbuf, 0, &value);\\n\",\n                type->proto_name);\n        print_indent();\n        generate_name(output, message->name.name);\n        fprintf(output, \"_add_%s(*obj, value);\\n\", field->name.name);\n        --indent_level;\n        print_indent();\n        fprintf(output, \"}\\n\");\n        print_indent();\n        fprintf(output, \"noise_protobuf_read_end_element(pbuf, end_packed);\\n\");\n    } else {\n        print_indent();\n        fprintf(output, \"noise_protobuf_read_%s(pbuf, %d, &((*obj)->%s));\\n\",\n                type->proto_name, tag, field->name.name);\n    }\n}\n\n/**\n * \\brief Declare the field operations for a numeric field.\n */\nstatic void type_numeric_declare_field_ops\n    (const Proto3TypeOps *type, Proto3Message *message, Proto3Field *field, int header_only)\n{\n    /* Output the clear() method */\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_clear_%s(\", field->name.name);\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (header_only) {\n        fprintf(output, \";\\n\");\n    } else {\n        fprintf(output, \"\\n{\\n\");\n        fprintf(output, \"    if (obj) {\\n\");\n        indent_level = 2;\n        (*(type->clear_field))(type, field);\n        print_indent();\n        fprintf(output, \"return NOISE_ERROR_NONE;\\n\");\n        fprintf(output, \"    }\\n\");\n        fprintf(output, \"    return NOISE_ERROR_INVALID_PARAM;\\n\");\n        fprintf(output, \"}\\n\\n\");\n    }\n\n    /* Output the has() method */\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_has_%s(const \", field->name.name);\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (header_only) {\n        fprintf(output, \";\\n\");\n    } else {\n        fprintf(output, \"\\n{\\n\");\n        if (field->qualifier == PROTO3_QUAL_REPEATED ||\n                field->qualifier == PROTO3_QUAL_PACKED) {\n            fprintf(output, \"    return obj ? (obj->%s_count_ != 0) : 0;\\n\",\n                    field->name.name);\n        } else if (field->qualifier == PROTO3_QUAL_REQUIRED) {\n            fprintf(output, \"    return obj ? 1 : 0;\\n\");\n        } else {\n            fprintf(output, \"    return obj ? (obj->%s != 0) : 0;\\n\",\n                    field->name.name);\n        }\n        fprintf(output, \"}\\n\\n\");\n    }\n\n    /* Output the value accessors */\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        /* Output the count() method */\n        fprintf(output, \"size_t \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_count_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    return obj ? obj->%s_count_ : 0;\\n\",\n                    field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the get_at() method */\n        fprintf(output, \"%s \", type->c_name);\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_at_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, size_t index)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (obj && index < obj->%s_count_)\\n\",\n                    field->name.name);\n            fprintf(output, \"        return obj->%s[index];\\n\",\n                    field->name.name);\n            fprintf(output, \"    else\\n\");\n            fprintf(output, \"        return 0;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the add() method */\n        fprintf(output, \"int \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_add_%s(\", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, %s value)\", type->c_name);\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (!obj)\\n\");\n            fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"    return noise_protobuf_add_to_array(\");\n            fprintf(output, \"(void **)&(obj->%s), &(obj->%s_count_), \",\n                    field->name.name, field->name.name);\n            fprintf(output, \"&(obj->%s_max_), &value, sizeof(%s));\\n\",\n                    field->name.name, type->c_name);\n            fprintf(output, \"}\\n\\n\");\n        }\n    } else {\n        /* Output the get() method */\n        fprintf(output, \"%s \", type->c_name);\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    return obj ? obj->%s : 0;\\n\", field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the set() method */\n        fprintf(output, \"int \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_set_%s(\", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, %s value)\", type->c_name);\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (obj) {\\n\");\n            fprintf(output, \"        obj->%s = value;\\n\", field->name.name);\n            fprintf(output, \"        return NOISE_ERROR_NONE;\\n\");\n            fprintf(output, \"    }\\n\");\n            fprintf(output, \"    return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n    }\n}\n\n/**\n * \\brief Declares a string field in a struct.\n */\nstatic void type_string_declare_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"%s*%s;\\n\", type->c_name, field->name.name);\n        print_indent();\n        fprintf(output, \"size_t *%s_size_;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"size_t %s_count_;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"size_t %s_max_;\\n\", field->name.name);\n    } else {\n        print_indent();\n        fprintf(output, \"%s%s;\\n\", type->c_name, field->name.name);\n        print_indent();\n        fprintf(output, \"size_t %s_size_;\\n\", field->name.name);\n    }\n}\n\n/**\n * \\brief Free a string field.\n */\nstatic void type_string_free_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"for (index = 0; index < obj->%s_count_; ++index)\\n\",\n                field->name.name);\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_free_memory(obj->%s[index], obj->%s_size_[index]);\\n\",\n                field->name.name, field->name.name);\n        --indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_free_memory(obj->%s, obj->%s_max_ * sizeof(%s));\\n\",\n                field->name.name, field->name.name, type->c_name);\n        print_indent();\n        fprintf(output, \"noise_protobuf_free_memory(obj->%s_size_, obj->%s_max_ * sizeof(size_t));\\n\",\n                field->name.name, field->name.name);\n    } else {\n        print_indent();\n        fprintf(output, \"noise_protobuf_free_memory(obj->%s, obj->%s_size_);\\n\",\n                field->name.name, field->name.name);\n    }\n}\n\n/**\n * \\brief Clears a string field.\n */\nstatic void type_string_clear_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    type_string_free_field(type, field);\n    print_indent();\n    fprintf(output, \"obj->%s = 0;\\n\", field->name.name);\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"obj->%s_count_ = 0;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"obj->%s_max_ = 0;\\n\", field->name.name);\n    } else {\n        print_indent();\n        fprintf(output, \"obj->%s_size_ = 0;\\n\", field->name.name);\n    }\n}\n\n/**\n * \\brief Writes a string field.\n */\nstatic void type_string_write_field\n    (const Proto3TypeOps *type, int tag, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"for (index = obj->%s_count_; index > 0; --index)\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_%s(pbuf, %d, obj->%s[index - 1], obj->%s_size_[index - 1]);\\n\",\n                type->proto_name, tag, field->name.name, field->name.name);\n        --indent_level;\n    } else if (field->qualifier == PROTO3_QUAL_OPTIONAL) {\n        print_indent();\n        fprintf(output, \"if (obj->%s)\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_%s(pbuf, %d, obj->%s, obj->%s_size_);\\n\",\n                type->proto_name, tag, field->name.name, field->name.name);\n        --indent_level;\n    } else {\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_%s(pbuf, %d, obj->%s, obj->%s_size_);\\n\",\n                type->proto_name, tag, field->name.name, field->name.name);\n    }\n}\n\n/**\n * \\brief Reads a string field.\n */\nstatic void type_string_read_field\n    (const Proto3TypeOps *type, int tag, Proto3Message *message, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"%svalue = 0;\\n\", type->c_name);\n        print_indent();\n        fprintf(output, \"size_t len = 0;\\n\");\n        if (field->type.id == PROTO3_TYPE_STRING) {\n            fprintf(output, \"noise_protobuf_read_alloc_string(pbuf, %d, &value, 0, &len);\\n\", tag);\n        } else {\n            fprintf(output, \"noise_protobuf_read_alloc_bytes(pbuf, %d, &value, 0, &len);\\n\", tag);\n        }\n        print_indent();\n        generate_name(output, message->name.name);\n        fprintf(output, \"_add_%s(*obj, value, len);\\n\", field->name.name);\n    } else {\n        print_indent();\n        fprintf(output, \"noise_protobuf_free_memory((*obj)->%s, (*obj)->%s_size_);\\n\",\n                field->name.name, field->name.name);\n        print_indent();\n        fprintf(output, \"(*obj)->%s = 0;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"(*obj)->%s_size_ = 0;\\n\", field->name.name);\n        print_indent();\n        if (field->type.id == PROTO3_TYPE_STRING) {\n            fprintf(output, \"noise_protobuf_read_alloc_string(pbuf, %d, &((*obj)->%s), 0, &((*obj)->%s_size_));\\n\",\n                    tag, field->name.name, field->name.name);\n        } else {\n            fprintf(output, \"noise_protobuf_read_alloc_bytes(pbuf, %d, &((*obj)->%s), 0, &((*obj)->%s_size_));\\n\",\n                    tag, field->name.name, field->name.name);\n        }\n    }\n}\n\n/**\n * \\brief Declare the field operations for a string field.\n */\nstatic void type_string_declare_field_ops\n    (const Proto3TypeOps *type, Proto3Message *message, Proto3Field *field, int header_only)\n{\n    /* Output the clear() method */\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_clear_%s(\", field->name.name);\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (header_only) {\n        fprintf(output, \";\\n\");\n    } else {\n        fprintf(output, \"\\n{\\n\");\n        if (field->qualifier == PROTO3_QUAL_REPEATED ||\n                field->qualifier == PROTO3_QUAL_PACKED) {\n            fprintf(output, \"    size_t index;\\n\");\n        }\n        fprintf(output, \"    if (obj) {\\n\");\n        indent_level = 2;\n        (*(type->clear_field))(type, field);\n        print_indent();\n        fprintf(output, \"return NOISE_ERROR_NONE;\\n\");\n        fprintf(output, \"    }\\n\");\n        fprintf(output, \"    return NOISE_ERROR_INVALID_PARAM;\\n\");\n        fprintf(output, \"}\\n\\n\");\n    }\n\n    /* Output the has() method */\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_has_%s(const \", field->name.name);\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (header_only) {\n        fprintf(output, \";\\n\");\n    } else {\n        fprintf(output, \"\\n{\\n\");\n        if (field->qualifier == PROTO3_QUAL_REPEATED ||\n                field->qualifier == PROTO3_QUAL_PACKED) {\n            fprintf(output, \"    return obj ? (obj->%s_count_ != 0) : 0;\\n\",\n                    field->name.name);\n        } else {\n            fprintf(output, \"    return obj ? (obj->%s != 0) : 0;\\n\",\n                    field->name.name);\n        }\n        fprintf(output, \"}\\n\\n\");\n    }\n\n    /* Output the value accessors */\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        /* Output the count() method */\n        fprintf(output, \"size_t \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_count_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    return obj ? obj->%s_count_ : 0;\\n\",\n                    field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the get_at() method */\n        fprintf(output, \"const %s\", type->c_name);\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_at_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, size_t index)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (obj && index < obj->%s_count_)\\n\",\n                    field->name.name);\n            fprintf(output, \"        return obj->%s[index];\\n\",\n                    field->name.name);\n            fprintf(output, \"    else\\n\");\n            fprintf(output, \"        return 0;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the get_size_at() method */\n        fprintf(output, \"size_t \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_size_at_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, size_t index)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (obj && index < obj->%s_count_)\\n\",\n                    field->name.name);\n            fprintf(output, \"        return obj->%s_size_[index];\\n\",\n                    field->name.name);\n            fprintf(output, \"    else\\n\");\n            fprintf(output, \"        return 0;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the add() method */\n        fprintf(output, \"int \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_add_%s(\", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, const %svalue, size_t size)\", type->c_name);\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (!obj)\\n\");\n            fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n            if (field->type.id == PROTO3_TYPE_STRING) {\n                fprintf(output, \"    return noise_protobuf_add_to_string_array(\");\n                fprintf(output, \"&(obj->%s), &(obj->%s_size_), &(obj->%s_count_), \",\n                        field->name.name, field->name.name, field->name.name);\n                fprintf(output, \"&(obj->%s_max_), value, size);\\n\",\n                        field->name.name);\n            } else {\n                fprintf(output, \"    return noise_protobuf_add_to_bytes_array(\");\n                fprintf(output, \"&(obj->%s), &(obj->%s_size_), &(obj->%s_count_), \",\n                        field->name.name, field->name.name, field->name.name);\n                fprintf(output, \"&(obj->%s_max_), value, size);\\n\",\n                        field->name.name);\n            }\n            fprintf(output, \"}\\n\\n\");\n        }\n    } else {\n        /* Output the get() method */\n        fprintf(output, \"const %s\", type->c_name);\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    return obj ? obj->%s : 0;\\n\",\n                    field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the get_size() method */\n        fprintf(output, \"size_t \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_size_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    return obj ? obj->%s_size_ : 0;\\n\",\n                    field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the set() method */\n        fprintf(output, \"int \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_set_%s(\", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, const %svalue, size_t size)\", type->c_name);\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (obj) {\\n\");\n            indent_level = 2;\n            (*(type->free_field))(type, field);\n            if (field->type.id == PROTO3_TYPE_STRING) {\n                fprintf(output, \"        obj->%s = (%s)malloc(size + 1);\\n\",\n                        field->name.name, type->c_name);\n                fprintf(output, \"        if (obj->%s) {\\n\", field->name.name);\n                fprintf(output, \"            memcpy(obj->%s, value, size);\\n\",\n                        field->name.name);\n                fprintf(output, \"            obj->%s[size] = 0;\\n\",\n                        field->name.name);\n            } else {\n                fprintf(output, \"        obj->%s = (%s)malloc(size ? size : 1);\\n\",\n                        field->name.name, type->c_name);\n                fprintf(output, \"        if (obj->%s) {\\n\", field->name.name);\n                fprintf(output, \"            memcpy(obj->%s, value, size);\\n\",\n                        field->name.name);\n            }\n            fprintf(output, \"            obj->%s_size_ = size;\\n\",\n                    field->name.name);\n            fprintf(output, \"            return NOISE_ERROR_NONE;\\n\");\n            fprintf(output, \"        } else {\\n\");\n            fprintf(output, \"            obj->%s_size_ = 0;\\n\",\n                    field->name.name);\n            fprintf(output, \"            return NOISE_ERROR_NO_MEMORY;\\n\");\n            fprintf(output, \"        }\\n\");\n            fprintf(output, \"    }\\n\");\n            fprintf(output, \"    return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n    }\n}\n\n/**\n * \\brief Declares a named object field in a struct.\n */\nstatic void type_named_declare_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" **%s;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"size_t %s_count_;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"size_t %s_max_;\\n\", field->name.name);\n    } else {\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" *%s;\\n\", field->name.name);\n    }\n}\n\n/**\n * \\brief Free a named object field.\n */\nstatic void type_named_free_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"for (index = 0; index < obj->%s_count_; ++index)\\n\",\n                field->name.name);\n        ++indent_level;\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_free(obj->%s[index]);\\n\", field->name.name);\n        --indent_level;\n        print_indent();\n        fprintf(output, \"noise_protobuf_free_memory(obj->%s, obj->%s_max_ * sizeof(\",\n                field->name.name, field->name.name);\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" *));\\n\");\n    } else {\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_free(obj->%s);\\n\", field->name.name);\n    }\n}\n\n/**\n * \\brief Clears a named object field.\n */\nstatic void type_named_clear_field\n    (const Proto3TypeOps *type, Proto3Field *field)\n{\n    type_named_free_field(type, field);\n    print_indent();\n    fprintf(output, \"obj->%s = 0;\\n\", field->name.name);\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"obj->%s_count_ = 0;\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"obj->%s_max_ = 0;\\n\", field->name.name);\n    }\n}\n\n/**\n * \\brief Writes a named object field.\n */\nstatic void type_named_write_field\n    (const Proto3TypeOps *type, int tag, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        fprintf(output, \"for (index = obj->%s_count_; index > 0; --index)\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_write(pbuf, %d, obj->%s[index - 1]);\\n\",\n                tag, field->name.name);\n        --indent_level;\n    } else if (field->qualifier == PROTO3_QUAL_REQUIRED) {\n        /* If a named object field is required but the value is NULL,\n           we write out an empty object with no fields */\n        print_indent();\n        fprintf(output, \"if (obj->%s) {\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_write(pbuf, %d, obj->%s);\\n\",\n                tag, field->name.name);\n        --indent_level;\n        print_indent();\n        fprintf(output, \"} else {\\n\");\n        ++indent_level;\n        print_indent();\n        fprintf(output, \"size_t end;\\n\");\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_end_element(pbuf, &end);\\n\");\n        print_indent();\n        fprintf(output, \"noise_protobuf_write_start_element(pbuf, %d, end);\\n\", tag);\n        --indent_level;\n        print_indent();\n        fprintf(output, \"}\\n\");\n    } else {\n        print_indent();\n        fprintf(output, \"if (obj->%s)\\n\", field->name.name);\n        ++indent_level;\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_write(pbuf, %d, obj->%s);\\n\",\n                tag, field->name.name);\n        --indent_level;\n    }\n}\n\n/**\n * \\brief Reads a named object field.\n */\nstatic void type_named_read_field\n    (const Proto3TypeOps *type, int tag, Proto3Message *message, Proto3Field *field)\n{\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" *value = 0;\\n\");\n        print_indent();\n        fprintf(output, \"int err;\\n\");\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_read(pbuf, %d, &value);\\n\", tag);\n        print_indent();\n        fprintf(output, \"err = noise_protobuf_add_to_array(\");\n        fprintf(output, \"(void **)&((*obj)->%s), &((*obj)->%s_count_), \",\n                field->name.name, field->name.name);\n        fprintf(output, \"&((*obj)->%s_max_), &value, sizeof(value));\\n\",\n                field->name.name);\n        print_indent();\n        fprintf(output, \"if (err != NOISE_ERROR_NONE && pbuf->error != NOISE_ERROR_NONE)\\n\");\n        print_indent();\n        fprintf(output, \"   pbuf->error = err;\\n\");\n    } else {\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_free((*obj)->%s);\\n\", field->name.name);\n        print_indent();\n        fprintf(output, \"(*obj)->%s = 0;\\n\", field->name.name);\n        print_indent();\n        generate_name(output, field->type.name.name);\n        fprintf(output, \"_read(pbuf, %d, &((*obj)->%s));\\n\",\n                tag, field->name.name);\n    }\n}\n\n/**\n * \\brief Declare the field operations for a named object field.\n */\nstatic void type_named_declare_field_ops\n    (const Proto3TypeOps *type, Proto3Message *message, Proto3Field *field, int header_only)\n{\n    /* Output the clear() method */\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_clear_%s(\", field->name.name);\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (header_only) {\n        fprintf(output, \";\\n\");\n    } else {\n        fprintf(output, \"\\n{\\n\");\n        if (field->qualifier == PROTO3_QUAL_REPEATED ||\n                field->qualifier == PROTO3_QUAL_PACKED) {\n            fprintf(output, \"    size_t index;\\n\");\n        }\n        fprintf(output, \"    if (obj) {\\n\");\n        indent_level = 2;\n        (*(type->clear_field))(type, field);\n        print_indent();\n        fprintf(output, \"return NOISE_ERROR_NONE;\\n\");\n        fprintf(output, \"    }\\n\");\n        fprintf(output, \"    return NOISE_ERROR_INVALID_PARAM;\\n\");\n        fprintf(output, \"}\\n\\n\");\n    }\n\n    /* Output the has() method */\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_has_%s(const \", field->name.name);\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (header_only) {\n        fprintf(output, \";\\n\");\n    } else {\n        fprintf(output, \"\\n{\\n\");\n        if (field->qualifier == PROTO3_QUAL_REPEATED ||\n                field->qualifier == PROTO3_QUAL_PACKED) {\n            fprintf(output, \"    return obj ? (obj->%s_count_ != 0) : 0;\\n\",\n                    field->name.name);\n        } else {\n            fprintf(output, \"    return obj ? (obj->%s != 0) : 0;\\n\",\n                    field->name.name);\n        }\n        fprintf(output, \"}\\n\\n\");\n    }\n\n    /* Output the value accessors */\n    if (field->qualifier == PROTO3_QUAL_REPEATED ||\n            field->qualifier == PROTO3_QUAL_PACKED) {\n        /* Output the count() method */\n        fprintf(output, \"size_t \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_count_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    return obj ? obj->%s_count_ : 0;\\n\",\n                    field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the get_at() method */\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" *\");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_at_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, size_t index)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (obj && index < obj->%s_count_)\\n\",\n                    field->name.name);\n            fprintf(output, \"        return obj->%s[index];\\n\",\n                    field->name.name);\n            fprintf(output, \"    else\\n\");\n            fprintf(output, \"        return 0;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the add() method */\n        fprintf(output, \"int \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_add_%s(\", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, \");\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" **value)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    int err;\\n\");\n            fprintf(output, \"    if (!value)\\n\");\n            fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"    *value = 0;\\n\");\n            fprintf(output, \"    if (!obj)\\n\");\n            fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"    err = \");\n            generate_name(output, field->type.name.name);\n            fprintf(output, \"_new(value);\\n\");\n            fprintf(output, \"    if (err != NOISE_ERROR_NONE)\\n\");\n            fprintf(output, \"        return err;\\n\");\n            fprintf(output, \"    err = noise_protobuf_add_to_array(\");\n            fprintf(output, \"(void **)&(obj->%s), &(obj->%s_count_), \",\n                    field->name.name, field->name.name);\n            fprintf(output, \"&(obj->%s_max_), value, sizeof(*value));\\n\",\n                    field->name.name);\n            fprintf(output, \"    if (err != NOISE_ERROR_NONE) {\\n\");\n            fprintf(output, \"        \");\n            generate_name(output, field->type.name.name);\n            fprintf(output, \"_free(*value);\\n\");\n            fprintf(output, \"        *value = 0;\\n\");\n            fprintf(output, \"        return err;\\n\");\n            fprintf(output, \"    }\\n\");\n            fprintf(output, \"    return NOISE_ERROR_NONE;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the insert() method */\n        fprintf(output, \"int \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_insert_%s(\", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, size_t index, \");\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" *value)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    if (!obj || !value)\\n\");\n            fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"    return noise_protobuf_insert_into_array(\");\n            fprintf(output, \"(void **)&(obj->%s), &(obj->%s_count_), \",\n                    field->name.name, field->name.name);\n            fprintf(output, \"&(obj->%s_max_), index, &value, sizeof(value));\\n\",\n                    field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n    } else {\n        /* Output the get() method */\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" *\");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_%s(const \", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    return obj ? obj->%s : 0;\\n\",\n                    field->name.name);\n            fprintf(output, \"}\\n\\n\");\n        }\n\n        /* Output the get_new() method */\n        fprintf(output, \"int \");\n        generate_name(output, message->name.name);\n        fprintf(output, \"_get_new_%s(\", field->name.name);\n        generate_name(output, message->name.name);\n        fprintf(output, \" *obj, \");\n        generate_name(output, field->type.name.name);\n        fprintf(output, \" **value)\");\n        if (header_only) {\n            fprintf(output, \";\\n\");\n        } else {\n            fprintf(output, \"\\n{\\n\");\n            fprintf(output, \"    int err;\\n\");\n            fprintf(output, \"    if (!value)\\n\");\n            fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"    *value = 0;\\n\");\n            fprintf(output, \"    if (!obj)\\n\");\n            fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n            fprintf(output, \"    err = \");\n            generate_name(output, field->type.name.name);\n            fprintf(output, \"_new(value);\\n\");\n            fprintf(output, \"    if (err != NOISE_ERROR_NONE)\\n\");\n            fprintf(output, \"        return err;\\n\");\n            fprintf(output, \"    \");\n            generate_name(output, field->type.name.name);\n            fprintf(output, \"_free(obj->%s);\\n\", field->name.name);\n            fprintf(output, \"    obj->%s = *value;\\n\", field->name.name);\n            fprintf(output, \"    return NOISE_ERROR_NONE;\\n\");\n            fprintf(output, \"}\\n\\n\");\n        }\n    }\n}\n\n/* Field operations for all of the protobuf types */\nstatic Proto3TypeOps const type_int32 = {\n    .proto_name = \"int32\",\n    .c_name = \"int32_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_uint32 = {\n    .proto_name = \"uint32\",\n    .c_name = \"uint32_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_int64 = {\n    .proto_name = \"int64\",\n    .c_name = \"int64_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_uint64 = {\n    .proto_name = \"uint64\",\n    .c_name = \"uint64_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_sint32 = {\n    .proto_name = \"sint32\",\n    .c_name = \"int32_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_sint64 = {\n    .proto_name = \"sint64\",\n    .c_name = \"int64_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_fixed32 = {\n    .proto_name = \"fixed32\",\n    .c_name = \"uint32_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_sfixed32 = {\n    .proto_name = \"sfixed32\",\n    .c_name = \"int32_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_fixed64 = {\n    .proto_name = \"fixed64\",\n    .c_name = \"uint64_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_sfixed64 = {\n    .proto_name = \"sfixed64\",\n    .c_name = \"int64_t\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_float = {\n    .proto_name = \"float\",\n    .c_name = \"float\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_double = {\n    .proto_name = \"double\",\n    .c_name = \"double\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_bool = {\n    .proto_name = \"bool\",\n    .c_name = \"int\",\n    .declare_field = type_numeric_declare_field,\n    .free_field = type_numeric_free_field,\n    .clear_field = type_numeric_clear_field,\n    .write_field = type_numeric_write_field,\n    .read_field = type_numeric_read_field,\n    .declare_field_ops = type_numeric_declare_field_ops\n};\nstatic Proto3TypeOps const type_string = {\n    .proto_name = \"string\",\n    .c_name = \"char *\",\n    .declare_field = type_string_declare_field,\n    .free_field = type_string_free_field,\n    .clear_field = type_string_clear_field,\n    .write_field = type_string_write_field,\n    .read_field = type_string_read_field,\n    .declare_field_ops = type_string_declare_field_ops\n};\nstatic Proto3TypeOps const type_bytes = {\n    .proto_name = \"bytes\",\n    .c_name = \"void *\",\n    .declare_field = type_string_declare_field,\n    .free_field = type_string_free_field,\n    .clear_field = type_string_clear_field,\n    .write_field = type_string_write_field,\n    .read_field = type_string_read_field,\n    .declare_field_ops = type_string_declare_field_ops\n};\nstatic Proto3TypeOps const type_named = {\n    .proto_name = \"named\",\n    .c_name = \"void *\",\n    .declare_field = type_named_declare_field,\n    .free_field = type_named_free_field,\n    .clear_field = type_named_clear_field,\n    .write_field = type_named_write_field,\n    .read_field = type_named_read_field,\n    .declare_field_ops = type_named_declare_field_ops\n};\n\n/**\n * \\brief Gets the operation list for a type.\n */\nstatic const Proto3TypeOps *type_ops(Proto3Type type)\n{\n    switch (type.id) {\n    case PROTO3_TYPE_INVALID:\n        break;\n\n    case PROTO3_TYPE_INT32:\n    case PROTO3_TYPE_ENUM:\n        return &type_int32;\n\n    case PROTO3_TYPE_UINT32:\n        return &type_uint32;\n\n    case PROTO3_TYPE_INT64:\n        return &type_int64;\n\n    case PROTO3_TYPE_UINT64:\n        return &type_uint64;\n\n    case PROTO3_TYPE_SINT32:\n        return &type_sint32;\n\n    case PROTO3_TYPE_SINT64:\n        return &type_sint64;\n\n    case PROTO3_TYPE_FIXED32:\n        return &type_fixed32;\n\n    case PROTO3_TYPE_SFIXED32:\n        return &type_sfixed32;\n\n    case PROTO3_TYPE_FIXED64:\n        return &type_fixed64;\n\n    case PROTO3_TYPE_SFIXED64:\n        return &type_sfixed64;\n\n    case PROTO3_TYPE_FLOAT:\n        return &type_float;\n\n    case PROTO3_TYPE_DOUBLE:\n        return &type_double;\n\n    case PROTO3_TYPE_BOOL:\n        return &type_bool;\n\n    case PROTO3_TYPE_STRING:\n        return &type_string;\n\n    case PROTO3_TYPE_BYTES:\n        return &type_bytes;\n\n    case PROTO3_TYPE_MAP:\n        /* TODO */\n        break;\n\n    case PROTO3_TYPE_NAMED:\n        return &type_named;\n    }\n    return 0;\n}\n\n/**\n * \\brief Generates the license block at the top of a header/source file.\n */\nstatic void generate_license(FILE *output)\n{\n    FILE *lfile;\n    char buffer[BUFSIZ];\n    if (!license_file)\n        return;\n    lfile = fopen(license_file, \"r\");\n    if (!lfile) {\n        perror(license_file);\n        return;\n    }\n    fprintf(output, \"/*\\n\");\n    while (fgets(buffer, sizeof(buffer), lfile)) {\n        fprintf(output, \" * \");\n        fputs(buffer, output);\n    }\n    fprintf(output, \" */\\n\\n\");\n    fclose(lfile);\n}\n\n/**\n * \\brief Determine if a message contains repeated fields.\n */\nstatic int has_repeated(const Proto3Message *message)\n{\n    const Proto3Field *field = message->fields;\n    while (field != 0) {\n        if (field->qualifier == PROTO3_QUAL_REPEATED)\n            return 1;\n        field = field->next;\n    }\n    return 0;\n}\n\n/**\n * \\brief Determine if a message contains packed fields.\n */\nstatic int has_packed(const Proto3Message *message)\n{\n    const Proto3Field *field = message->fields;\n    while (field != 0) {\n        if (field->qualifier == PROTO3_QUAL_PACKED)\n            return 1;\n        field = field->next;\n    }\n    return 0;\n}\n\n/**\n * \\brief Generates the declaration for a constructor.\n */\nstatic void generate_declare_ctor\n    (FILE *output, Proto3Message *message, int is_h)\n{\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_new(\");\n    generate_name(output, message->name.name);\n    fprintf(output, \" **obj)\");\n    if (is_h)\n        putc(';', output);\n    fprintf(output, \"\\n\");\n}\n\n/**\n * \\brief Generates the declaration for a destructor.\n */\nstatic void generate_declare_dtor\n    (FILE *output, Proto3Message *message, int is_h)\n{\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_free(\");\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (is_h)\n        putc(';', output);\n    fprintf(output, \"\\n\");\n}\n\n/**\n * \\brief Generates the write function declaration for a message type.\n */\nstatic void generate_declare_write\n    (FILE *output, Proto3Message *message, int is_h)\n{\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_write(NoiseProtobuf *pbuf, int tag, const \");\n    generate_name(output, message->name.name);\n    fprintf(output, \" *obj)\");\n    if (is_h)\n        putc(';', output);\n    fprintf(output, \"\\n\");\n}\n\n/**\n * \\brief Generates the read function declaration for a message type.\n */\nstatic void generate_declare_read\n    (FILE *output, Proto3Message *message, int is_h)\n{\n    fprintf(output, \"int \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_read(NoiseProtobuf *pbuf, int tag, \");\n    generate_name(output, message->name.name);\n    fprintf(output, \" **obj)\");\n    if (is_h)\n        putc(';', output);\n    fprintf(output, \"\\n\");\n}\n\n/**\n * \\brief Generates the header file for the protobuf definition.\n */\nstatic void generate_c_header(const char *output_h_name, FILE *output_h)\n{\n    Proto3Enum *enum_node;\n    Proto3EnumValue *enum_value;\n    Proto3Message *message;\n    Proto3Field *field;\n    const Proto3TypeOps *ops;\n    int need_space = 0;\n\n    /* Output the header */\n    output = output_h;\n    generate_license(output);\n    fprintf(output, \"#ifndef __\");\n    generate_name(output, output_h_name);\n    fprintf(output, \"__\\n#define __\");\n    generate_name(output, output_h_name);\n    fprintf(output, \"__\\n\\n\");\n    fprintf(output, \"#include <noise/protobufs.h>\\n\\n\");\n    fprintf(output, \"#ifdef __cplusplus\\n\");\n    fprintf(output, \"extern \\\"C\\\" {\\n\");\n    fprintf(output, \"#endif\\n\\n\");\n\n    /* Generate macros for all enumerated constants */\n    enum_node = proto3_first_enum();\n    while (enum_node != 0) {\n        if (need_space)\n            fprintf(output, \"\\n\");\n        enum_value = enum_node->values;\n        while (enum_value != 0) {\n            fprintf(output, \"#define \");\n            generate_name(output, enum_node->name.name);\n            putc('_', output);\n            generate_name(output, enum_value->name.name);\n            fprintf(output, \" %lu\\n\", (unsigned long)(enum_value->value));\n            enum_value = enum_value->next;\n        }\n        need_space = 1;\n        enum_node = enum_node->next;\n    }\n    if (need_space) {\n        fprintf(output, \"\\n\");\n        need_space = 0;\n    }\n\n    /* Generate typedef's for all message types */\n    message = proto3_first_message();\n    while (message != 0) {\n        fprintf(output, \"typedef struct _\");\n        generate_name(output, message->name.name);\n        putc(' ', output);\n        generate_name(output, message->name.name);\n        fprintf(output, \";\\n\");\n        need_space = 1;\n        message = message->next;\n    }\n\n    /* Generate the accessor API's for all message types */\n    message = proto3_first_message();\n    while (message != 0) {\n        if (need_space)\n            fprintf(output, \"\\n\");\n        generate_declare_ctor(output, message, 1);\n        generate_declare_dtor(output, message, 1);\n        generate_declare_write(output, message, 1);\n        generate_declare_read(output, message, 1);\n        field = message->fields;\n        while (field != 0) {\n            ops = type_ops(field->type);\n            (*(ops->declare_field_ops))(ops, message, field, 1);\n            field = field->next;\n        }\n        need_space = 1;\n        message = message->next;\n    }\n\n    /* Output the footer */\n    if (need_space)\n        fprintf(output, \"\\n\");\n    fprintf(output, \"#ifdef __cplusplus\\n\");\n    fprintf(output, \"};\\n\");\n    fprintf(output, \"#endif\\n\\n\");\n    fprintf(output, \"#endif\\n\");\n}\n\n/**\n * \\brief Generates the implementation for a constructor.\n */\nstatic void generate_implement_ctor(FILE *output, Proto3Message *message)\n{\n    generate_declare_ctor(output, message, 0);\n    fprintf(output, \"{\\n\");\n    fprintf(output, \"    if (!obj)\\n\");\n    fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n    fprintf(output, \"    *obj = (\");\n    generate_name(output, message->name.name);\n    fprintf(output, \" *)calloc(1, sizeof(\");\n    generate_name(output, message->name.name);\n    fprintf(output, \"));\\n\");\n    fprintf(output, \"    if (!(*obj))\\n\");\n    fprintf(output, \"        return NOISE_ERROR_NO_MEMORY;\\n\");\n    fprintf(output, \"    return NOISE_ERROR_NONE;\\n\");\n    fprintf(output, \"}\\n\\n\");\n}\n\n/**\n * \\brief Generates the implementation for a destructor.\n */\nstatic void generate_implement_dtor(FILE *output, Proto3Message *message)\n{\n    const Proto3TypeOps *ops;\n    Proto3Field *field = message->fields;\n    generate_declare_dtor(output, message, 0);\n    fprintf(output, \"{\\n\");\n    if (has_repeated(message) || has_packed(message))\n        fprintf(output, \"    size_t index;\\n\");\n    fprintf(output, \"    if (!obj)\\n\");\n    fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n    indent_level = 1;\n    while (field != 0) {\n        ops = type_ops(field->type);\n        ops->free_field(ops, field);\n        field = field->next;\n    }\n    fprintf(output, \"    noise_protobuf_free_memory(obj, sizeof(\");\n    generate_name(output, message->name.name);\n    fprintf(output, \"));\\n\");\n    fprintf(output, \"    return NOISE_ERROR_NONE;\\n\");\n    fprintf(output, \"}\\n\\n\");\n}\n\n/**\n * \\brief Generates the write function implementation for a message field.\n *\n * Field writes are output in reverse order of tag number.\n */\nstatic void generate_implement_field_write\n    (Proto3Message *message, Proto3Field *field)\n{\n    const Proto3TypeOps *ops;\n    if (!field)\n        return;\n    generate_implement_field_write(message, field->next);\n    ops = type_ops(field->type);\n    ops->write_field(ops, (int)(field->tag), field);\n}\n\n/**\n * \\brief Generates the write function implementation for a message type.\n */\nstatic void generate_implement_write(Proto3Message *message)\n{\n    generate_declare_write(output, message, 0);\n    fprintf(output, \"{\\n\");\n    fprintf(output, \"    size_t end_posn;\\n\");\n    if (has_packed(message)) {\n        fprintf(output, \"    size_t end_packed;\\n\");\n        fprintf(output, \"    size_t index;\\n\");\n    } else if (has_repeated(message)) {\n        fprintf(output, \"    size_t index;\\n\");\n    }\n    fprintf(output, \"    if (!pbuf || !obj)\\n\");\n    fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n    fprintf(output, \"    noise_protobuf_write_end_element(pbuf, &end_posn);\\n\");\n    indent_level = 1;\n    generate_implement_field_write(message, message->fields);\n    fprintf(output, \"    return noise_protobuf_write_start_element(pbuf, tag, end_posn);\\n\");\n    fprintf(output, \"}\\n\\n\");\n}\n\n/**\n * \\brief Generates the read function implementation for a message type.\n */\nstatic void generate_implement_read(FILE *output, Proto3Message *message)\n{\n    const Proto3TypeOps *ops;\n    Proto3Field *field;\n    int tag;\n    generate_declare_read(output, message, 0);\n    fprintf(output, \"{\\n\");\n    fprintf(output, \"    int err;\\n\");\n    fprintf(output, \"    size_t end_posn;\\n\");\n    fprintf(output, \"    if (!obj)\\n\");\n    fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n    fprintf(output, \"    *obj = 0;\\n\");\n    fprintf(output, \"    if (!pbuf)\\n\");\n    fprintf(output, \"        return NOISE_ERROR_INVALID_PARAM;\\n\");\n    fprintf(output, \"    err = \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_new(obj);\\n\");\n    fprintf(output, \"    if (err != NOISE_ERROR_NONE)\\n\");\n    fprintf(output, \"        return err;\\n\");\n    fprintf(output, \"    noise_protobuf_read_start_element(pbuf, tag, &end_posn);\\n\");\n    fprintf(output, \"    while (!noise_protobuf_read_at_end_element(pbuf, end_posn)) {\\n\");\n    fprintf(output, \"        switch (noise_protobuf_peek_tag(pbuf)) {\\n\");\n    indent_level = 3;\n    field = message->fields;\n    while (field != 0) {\n        tag = (int)(field->tag);\n        ops = type_ops(field->type);\n        print_indent();\n        fprintf(output, \"case %d: {\\n\", tag);\n        ++indent_level;\n        ops->read_field(ops, tag, message, field);\n        --indent_level;\n        print_indent();\n        fprintf(output, \"} break;\\n\");\n        field = field->next;\n    }\n    fprintf(output, \"            default: {\\n\");\n    fprintf(output, \"                noise_protobuf_read_skip(pbuf);\\n\");\n    fprintf(output, \"            } break;\\n\");\n    fprintf(output, \"        }\\n\");\n    fprintf(output, \"    }\\n\");\n    fprintf(output, \"    err = noise_protobuf_read_end_element(pbuf, end_posn);\\n\");\n    fprintf(output, \"    if (err != NOISE_ERROR_NONE) {\\n\");\n    fprintf(output, \"        \");\n    generate_name(output, message->name.name);\n    fprintf(output, \"_free(*obj);\\n\");\n    fprintf(output, \"        *obj = 0;\\n\");\n    fprintf(output, \"    }\\n\");\n    fprintf(output, \"    return err;\\n\");\n    fprintf(output, \"}\\n\\n\");\n}\n\n/**\n * \\brief Generates the source file for the protobuf definition.\n */\nstatic void generate_c_source(const char *output_c_name,\n                              const char *output_h_name,\n                              FILE *output_c)\n{\n    const Proto3TypeOps *ops;\n    Proto3Message *message;\n    Proto3Field *field;\n\n    /* Output the header */\n    output = output_c;\n    indent_level = 0;\n    generate_license(output);\n    fprintf(output, \"#include \\\"%s\\\"\\n\", output_h_name);\n    fprintf(output, \"#include <stdlib.h>\\n\");\n    fprintf(output, \"#include <string.h>\\n\");\n    fprintf(output, \"\\n\");\n\n    /* Output the message struct definitions */\n    message = proto3_first_message();\n    while (message != 0) {\n        print_indent();\n        fprintf(output, \"struct _\");\n        generate_name(output, message->name.name);\n        fprintf(output, \" {\\n\");\n        ++indent_level;\n        field = message->fields;\n        while (field != 0) {\n            ops = type_ops(field->type);\n            ops->declare_field(ops, field);\n            field = field->next;\n        }\n        --indent_level;\n        print_indent();\n        fprintf(output, \"};\\n\\n\");\n        message = message->next;\n    }\n\n    /* Output the accessor implementations for all message types */\n    message = proto3_first_message();\n    while (message != 0) {\n        generate_implement_ctor(output, message);\n        generate_implement_dtor(output, message);\n        generate_implement_write(message);\n        generate_implement_read(output, message);\n        field = message->fields;\n        while (field != 0) {\n            ops = type_ops(field->type);\n            (*(ops->declare_field_ops))(ops, message, field, 0);\n            field = field->next;\n        }\n        message = message->next;\n    }\n\n}\n\nvoid generate_c(const char *output_c_name, FILE *output_c,\n                const char *output_h_name, FILE *output_h)\n{\n    char *ptr;\n\n    /* Trim the filenames to remove paths */\n    ptr = strrchr(output_c_name, '/');\n    if (!ptr)\n        ptr = strrchr(output_c_name, '\\\\');\n    if (ptr)\n        output_c_name = ptr + 1;\n    ptr = strrchr(output_h_name, '/');\n    if (!ptr)\n        ptr = strrchr(output_h_name, '\\\\');\n    if (ptr)\n        output_h_name = ptr + 1;\n\n    /* Output the header definitions */\n    generate_c_header(output_h_name, output_h);\n\n    /* Output the source definitions */\n    generate_c_source(output_c_name, output_h_name, output_c);\n}\n"
  },
  {
    "path": "tools/protoc/proto3-grammar.y",
    "content": "%{\n/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include <stdio.h>\n#include <stdint.h>\n#include <stdarg.h>\n#include <string.h>\n#include \"proto3-ast.h\"\n#include \"proto3-grammar.h\"\n\nextern FILE *yyin;\nextern int yylex(void);\nextern int yyparse(void);\nextern void yyrestart(FILE *file);\n\nint error_count = 0;\nconst char *input_filename = 0;\n\nvoid yyerror(const char *msg, ...)\n{\n    va_list va;\n    va_start(va, msg);\n    if (input_filename)\n        fprintf(stderr, \"%s:%ld: \", input_filename, (long)yylloc.first_line);\n    else\n        fprintf(stderr, \"%ld: \", (long)yylloc.first_line);\n    vfprintf(stderr, msg, va);\n    putc('\\n', stderr);\n    ++error_count;\n    va_end(va);\n}\n\nvoid yyerror_on_line(const char *msg, long line, ...)\n{\n    va_list va;\n    va_start(va, line);\n    if (input_filename)\n        fprintf(stderr, \"%s:%ld: \", input_filename, line);\n    else\n        fprintf(stderr, \"%ld: \", line);\n    vfprintf(stderr, msg, va);\n    putc('\\n', stderr);\n    ++error_count;\n    va_end(va);\n}\n\nvoid yywarning(const char *msg, ...)\n{\n    va_list va;\n    va_start(va, msg);\n    if (input_filename)\n        fprintf(stderr, \"%s:%ld: warning: \", input_filename, (long)yylloc.first_line);\n    else\n        fprintf(stderr, \"%ld: warning: \", (long)yylloc.first_line);\n    vfprintf(stderr, msg, va);\n    putc('\\n', stderr);\n    va_end(va);\n}\n\nvoid yywarning_on_line(const char *msg, long line, ...)\n{\n    va_list va;\n    va_start(va, line);\n    if (input_filename)\n        fprintf(stderr, \"%s:%ld: warning: \", input_filename, line);\n    else\n        fprintf(stderr, \"%ld: warning: \", line);\n    vfprintf(stderr, msg, va);\n    putc('\\n', stderr);\n    va_end(va);\n}\n\nint parse_file(const char *filename)\n{\n    FILE *file = fopen(filename, \"r\");\n    int retval;\n    if (!file) {\n        perror(filename);\n        return 0;\n    }\n    input_filename = filename;\n    yylloc.first_line = 1;\n    yyrestart(file);\n    retval = yyparse();\n    yyin = NULL;\n    input_filename = 0;\n    if (error_count)\n        return 0;\n    else\n        return retval ? 0 : 1;\n}\n\n%}\n\n%locations\n\n%token K_IDENTIFIER \"an identifier\"\n%token K_STRING_LITERAL \"a string\"\n%token K_NUMBER \"a number\"\n%token K_SYNTAX \"`syntax'\"\n%token K_MESSAGE \"`message'\"\n%token K_REPEATED \"`repeated'\"\n%token K_REQUIRED \"`required'\"\n%token K_OPTIONAL \"`optional'\"\n%token K_RESERVED \"`reserved'\"\n%token K_TO \"`to'\"\n%token K_ENUM \"`enum'\"\n%token K_OPTION \"`option'\"\n%token K_IMPORT \"`import'\"\n%token K_PUBLIC \"`public'\"\n/* %token K_ONEOF \"`oneof'\"         -- not supported */\n%token K_MAP \"`map'\"\n%token K_PACKAGE \"`package'\"\n/* %token K_SERVICE \"`service'\"     -- not supported */\n%token K_DOUBLE \"`double'\"\n%token K_FLOAT \"`float'\"\n%token K_INT32 \"`int32'\"\n%token K_INT64 \"`int64'\"\n%token K_UINT32 \"`uint32'\"\n%token K_UINT64 \"`uint64'\"\n%token K_SINT32 \"`sint32'\"\n%token K_SINT64 \"`sint64'\"\n%token K_FIXED32 \"`fixed32'\"\n%token K_FIXED64 \"`fixed64'\"\n%token K_SFIXED32 \"`sfixed32'\"\n%token K_SFIXED64 \"`sfixed64'\"\n%token K_BOOL \"`bool'\"\n%token K_STRING \"`string'\"\n%token K_BYTES \"`bytes'\"\n%token K_TRUE \"`true'\"\n%token K_FALSE \"`false'\"\n\n%union {\n    Proto3Name string;\n    uint64_t number;\n    Proto3Type type;\n    Proto3Name name;\n    Proto3FieldQualifier qualifier;\n    Proto3OptionValue optvalue;\n    Proto3Option option;\n}\n\n%type <string>      K_STRING_LITERAL\n%type <number>      K_NUMBER Tag\n%type <type>        Type ScalarType KeyType\n%type <name>        K_IDENTIFIER Name QualifiedName\n%type <qualifier>   FieldQualifier\n%type <optvalue>    OptionValue\n%type <option>      FieldOption OptionDeclaration\n\n%%\n\nProto3File\n    : SyntaxDeclaration ImportDeclarations Declarations {\n            proto3_resolve_types();\n        }\n    ;\n\nSyntaxDeclaration\n    : K_SYNTAX '=' K_STRING_LITERAL ';'     {\n            if (strcmp($3.name, \"proto3\") != 0) {\n                yyerror(\"unsupported syntax '%s'\", $3);\n            }\n        }\n    | /* empty */       {\n            yywarning(\"proto2 syntax not supported; assuming proto3\");\n        }\n    ;\n\nImportDeclarations\n    : ImportDeclarationList     {\n            yywarning(\"imports are not supported; ignoring\");\n        }\n    | /* empty */\n    ;\n\nImportDeclarationList\n    : ImportDeclarationList ImportDeclaration\n    | ImportDeclaration\n    ;\n\nImportDeclaration\n    : K_IMPORT K_STRING_LITERAL ';'\n    | K_IMPORT K_PUBLIC K_STRING_LITERAL ';'\n    ;\n\nDeclarations\n    : DeclarationList\n    | /* empty */\n    ;\n\nDeclarationList\n    : DeclarationList Declaration\n    | Declaration\n    ;\n\nDeclaration\n    : MessageDeclaration\n    | EnumDeclaration\n    | OptionDeclaration {\n            proto3_add_scope_option($1);\n        }\n    | PackageDeclaration\n    ;\n\nPackageDeclaration\n    : K_PACKAGE QualifiedName ';'   {\n                proto3_set_package_name($2);\n            }\n    ;\n\nMessageDeclaration\n    : K_MESSAGE Name {\n            proto3_push_scope(PROTO3_SCOPE_MESSAGE, proto3_qualify_name($2), @2.first_line);\n        } Fields {\n            if (!proto3_have_scope_fields())\n                yyerror(\"no message fields defined\");\n            proto3_pop_scope();\n        }\n    ;\n\nFields\n    : '{' FieldList '}'\n    | '{' '}'\n    | '{' error '}'\n    ;\n\nFieldList\n    : FieldList Field\n    | Field\n    ;\n\nField\n    : FieldQualifier Type Name '=' Tag FieldOption ';'  {\n            Proto3FieldQualifier qualifier = $1;\n            int pack_type = -1;\n            if ($6.name.name && !strcmp($6.name.name, \"packed\")) {\n                if ($6.value.type == PROTO3_VALUE_BOOL) {\n                    pack_type = ($6.value.num_value != 0);\n                } else {\n                    yyerror(\"'packed' option must have a boolean value\");\n                    pack_type = 1;\n                }\n            }\n            if (qualifier == PROTO3_QUAL_REPEATED) {\n                if (proto3_can_pack_type($2)) {\n                    if (pack_type == -1 || pack_type == 1)\n                        qualifier = PROTO3_QUAL_PACKED;\n                } else if (pack_type == 1) {\n                    yyerror(\"cannot pack repeated fields of this type\");\n                }\n            }\n            proto3_add_field(qualifier, $2, $3, $5, $6, @3.first_line);\n        }\n    | K_RESERVED ReservedNumbers ';'\n    | K_RESERVED ReservedNames ';'\n    | MessageDeclaration\n    | EnumDeclaration\n    | OptionDeclaration     {\n            proto3_add_scope_option($1);\n        }\n    | error ';'\n    ;\n\nFieldQualifier\n    : K_REPEATED        { $$ = PROTO3_QUAL_REPEATED; }\n    | K_REQUIRED        { $$ = PROTO3_QUAL_REQUIRED; }\n    | K_OPTIONAL        { $$ = PROTO3_QUAL_OPTIONAL; }\n    | /* empty */       { $$ = PROTO3_QUAL_OPTIONAL; }\n    ;\n\nTag\n    : K_NUMBER  {\n            uint64_t tag = $1;\n            if ((tag >= 1 && tag <= 536870911) && !(tag >= 19000 && tag <= 19999)) {\n                $$ = tag;\n            } else {\n                yyerror(\"invalid tag number\");\n                $$ = 0;\n            }\n        }\n    ;\n\nEnumDeclaration\n    : K_ENUM Name {\n            proto3_push_scope(PROTO3_SCOPE_ENUM, proto3_qualify_name($2), @2.first_line);\n        } Enums {\n            if (!proto3_have_scope_enums())\n                yyerror(\"no enumerated values defined\");\n            proto3_pop_scope();\n        }\n    ;\n\nEnums\n    : '{' EnumList '}'\n    | '{' '}'\n    | '{' error '}'\n    ;\n\nEnumList\n    : EnumList Enum\n    | Enum\n    ;\n\nEnum\n    : Name '=' K_NUMBER ';' {\n            if (!proto3_have_scope_enums() && $3 != 0) {\n                yywarning(\"first enumerated value should be zero\");\n            }\n            if ($3 > 2147483647ULL) {\n                yywarning(\"enumerated value is not 32-bit\");\n            }\n            proto3_add_enum($1, $3, @1.first_line);\n        }\n    | OptionDeclaration     {\n            proto3_add_scope_option($1);\n        }\n    | error ';'\n    ;\n\nFieldOption\n    : '[' Name '=' OptionValue ']'      {\n            $$.name = $2;\n            $$.value = $4;\n        }\n    | /* empty */   {\n            memset(&($$), 0, sizeof($$));\n            $$.value.type = PROTO3_VALUE_NONE;\n        }\n    ;\n\nOptionDeclaration\n    : K_OPTION Name '=' OptionValue ';' {\n            $$.name = $2;\n            $$.value = $4;\n        }\n    ;\n\nOptionValue\n    : K_NUMBER          {\n            memset(&($$), 0, sizeof($$));\n            $$.type = PROTO3_VALUE_NUMBER;\n            $$.num_value = $1;\n        }\n    | K_TRUE            {\n            memset(&($$), 0, sizeof($$));\n            $$.type = PROTO3_VALUE_BOOL;\n            $$.num_value = 1;\n        }\n    | K_FALSE           {\n            memset(&($$), 0, sizeof($$));\n            $$.type = PROTO3_VALUE_BOOL;\n            $$.num_value = 0;\n        }\n    | K_STRING_LITERAL  {\n            memset(&($$), 0, sizeof($$));\n            $$.type = PROTO3_VALUE_STRING;\n            $$.name_value = $1;\n        }\n    | K_IDENTIFIER      {\n            memset(&($$), 0, sizeof($$));\n            $$.type = PROTO3_VALUE_IDENTIFIER;\n            $$.name_value = $1;\n        }\n    ;\n\nReservedNumbers\n    : ReservedNumbers ',' ReservedNumber\n    | ReservedNumber\n    ;\n\nReservedNumber\n    : Tag                                   {}\n    | Tag K_TO Tag                          {}\n    ;\n\nReservedNames\n    : ReservedNames ',' K_STRING_LITERAL    {}\n    | K_STRING_LITERAL                      {}\n    ;\n\nName\n    : K_IDENTIFIER  { $$ = $1; }\n    ;\n\nQualifiedName\n    : QualifiedName '.' K_IDENTIFIER    { $$ = proto3_qualified_name($1, $3); }\n    | Name                              { $$ = $1; }\n    ;\n\nType\n    : ScalarType                        { $$ = $1; }\n    | QualifiedName                     { $$ = proto3_named_type($1);   }\n    | K_MAP '<' KeyType ',' Type '>'    {\n            yyerror(\"map types are not supported\");\n            $$ = proto3_map_type($3, $5);\n        }\n    ;\n\nScalarType\n    : K_DOUBLE          { $$ = proto3_basic_type(PROTO3_TYPE_DOUBLE);   }\n    | K_FLOAT           { $$ = proto3_basic_type(PROTO3_TYPE_FLOAT);    }\n    | K_INT32           { $$ = proto3_basic_type(PROTO3_TYPE_INT32);    }\n    | K_INT64           { $$ = proto3_basic_type(PROTO3_TYPE_INT64);    }\n    | K_UINT32          { $$ = proto3_basic_type(PROTO3_TYPE_UINT32);   }\n    | K_UINT64          { $$ = proto3_basic_type(PROTO3_TYPE_UINT64);   }\n    | K_SINT32          { $$ = proto3_basic_type(PROTO3_TYPE_SINT32);   }\n    | K_SINT64          { $$ = proto3_basic_type(PROTO3_TYPE_SINT64);   }\n    | K_FIXED32         { $$ = proto3_basic_type(PROTO3_TYPE_FIXED32);  }\n    | K_FIXED64         { $$ = proto3_basic_type(PROTO3_TYPE_FIXED64);  }\n    | K_SFIXED32        { $$ = proto3_basic_type(PROTO3_TYPE_SFIXED32); }\n    | K_SFIXED64        { $$ = proto3_basic_type(PROTO3_TYPE_SFIXED64); }\n    | K_BOOL            { $$ = proto3_basic_type(PROTO3_TYPE_BOOL);     }\n    | K_STRING          { $$ = proto3_basic_type(PROTO3_TYPE_STRING);   }\n    | K_BYTES           { $$ = proto3_basic_type(PROTO3_TYPE_BYTES);    }\n    ;\n\nKeyType\n    : K_INT32           { $$ = proto3_basic_type(PROTO3_TYPE_INT32);    }\n    | K_INT64           { $$ = proto3_basic_type(PROTO3_TYPE_INT64);    }\n    | K_UINT32          { $$ = proto3_basic_type(PROTO3_TYPE_UINT32);   }\n    | K_UINT64          { $$ = proto3_basic_type(PROTO3_TYPE_UINT64);   }\n    | K_SINT32          { $$ = proto3_basic_type(PROTO3_TYPE_SINT32);   }\n    | K_SINT64          { $$ = proto3_basic_type(PROTO3_TYPE_SINT64);   }\n    | K_FIXED32         { $$ = proto3_basic_type(PROTO3_TYPE_FIXED32);  }\n    | K_FIXED64         { $$ = proto3_basic_type(PROTO3_TYPE_FIXED64);  }\n    | K_SFIXED32        { $$ = proto3_basic_type(PROTO3_TYPE_SFIXED32); }\n    | K_SFIXED64        { $$ = proto3_basic_type(PROTO3_TYPE_SFIXED64); }\n    | K_BOOL            { $$ = proto3_basic_type(PROTO3_TYPE_BOOL);     }\n    | K_STRING          { $$ = proto3_basic_type(PROTO3_TYPE_STRING);   }\n    ;\n\n%%\n"
  },
  {
    "path": "tools/protoc/proto3-lexer.l",
    "content": "%{\n/*\n * Copyright (C) 2016 Southern Storm Software, Pty Ltd.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation\n * the rights to use, copy, modify, merge, publish, distribute, sublicense,\n * and/or sell copies of the Software, and to permit persons to whom the\n * Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <stdint.h>\n#include \"proto3-ast.h\"\n#include \"proto3-grammar.h\"\n\n#define YY_NO_INPUT\n\n%}\n\n%option noyywrap nounput\n\nID          [a-zA-Z][a-zA-Z_0-9]*\nNUMBER      [0-9]+\nWHITE       [ \\t\\v\\r]+\nQUOTE       [\"]\nSTRCHAR     [^\"\\n]\n\n%%\n\n\"syntax\"    { return K_SYNTAX; }\n\"message\"   { return K_MESSAGE; }\n\"repeated\"  { return K_REPEATED; }\n\"required\"  { return K_REQUIRED; }\n\"optional\"  { return K_OPTIONAL; }\n\"reserved\"  { return K_RESERVED; }\n\"to\"        { return K_TO; }\n\"enum\"      { return K_ENUM; }\n\"option\"    { return K_OPTION; }\n\"import\"    { return K_IMPORT; }\n\"public\"    { return K_PUBLIC; }\n\"map\"       { return K_MAP; }\n\"package\"   { return K_PACKAGE; }\n\"double\"    { return K_DOUBLE; }\n\"float\"     { return K_FLOAT; }\n\"int32\"     { return K_INT32; }\n\"int64\"     { return K_INT64; }\n\"uint32\"    { return K_UINT32; }\n\"uint64\"    { return K_UINT64; }\n\"sint32\"    { return K_SINT32; }\n\"sint64\"    { return K_SINT64; }\n\"fixed32\"   { return K_FIXED32; }\n\"fixed64\"   { return K_FIXED64; }\n\"sfixed32\"  { return K_SFIXED32; }\n\"sfixed64\"  { return K_SFIXED64; }\n\"bool\"      { return K_BOOL; }\n\"string\"    { return K_STRING; }\n\"bytes\"     { return K_BYTES; }\n\"true\"      { return K_TRUE; }\n\"false\"     { return K_FALSE; }\n\n{ID}        {\n                yylval.name = proto3_basic_name(yytext);\n                return K_IDENTIFIER;\n            }\n{NUMBER}    {\n                yylval.number = strtoull(yytext, NULL, 10);\n                return K_NUMBER;\n            }\n\n{QUOTE}{STRCHAR}*{QUOTE} {\n                size_t len = strlen(yytext) - 2;\n                yylval.name = proto3_string(yytext + 1, len);\n                return K_STRING_LITERAL;\n            }\n\n{WHITE}     ;\n\n\\n          { ++yylloc.first_line; }\n\n\"//\".*\\n    { ++yylloc.first_line; }\n\n.           { return yytext[0]; }\n\n%%\n"
  },
  {
    "path": "tools/protoc/test.proto",
    "content": "\n// Test protobuf definition that has one of everything.\n\nsyntax=\"proto3\";\n\nmessage BasicFields {\n    int32 f_int32 = 1;\n    uint32 f_uint32 = 2;\n    int64 f_int64 = 3;\n    uint64 f_uint64 = 4;\n    sint32 f_sint32 = 5;\n    sint64 f_sint64 = 6;\n    fixed32 f_fixed32 = 7;\n    sfixed32 f_sfixed32 = 8;\n    fixed64 f_fixed64 = 9;\n    sfixed64 f_sfixed64 = 10;\n    float f_float = 11;\n    double f_double = 12;\n    bool f_bool = 13;\n    string f_string = 14;\n    bytes f_bytes = 15;\n    Object f_object = 16;\n}\n\nmessage RepeatedFields {\n    repeated int32 f_int32 = 1;\n    repeated uint32 f_uint32 = 2;\n    repeated int64 f_int64 = 3;\n    repeated uint64 f_uint64 = 4;\n    repeated sint32 f_sint32 = 5;\n    repeated sint64 f_sint64 = 6;\n    repeated fixed32 f_fixed32 = 7;\n    repeated sfixed32 f_sfixed32 = 8;\n    repeated fixed64 f_fixed64 = 9;\n    repeated sfixed64 f_sfixed64 = 10;\n    repeated float f_float = 11;\n    repeated double f_double = 12;\n    repeated bool f_bool = 13;\n    repeated string f_string = 14;\n    repeated bytes f_bytes = 15;\n    repeated Object f_object = 16;\n}\n\nmessage RepeatedFieldsUnpacked {\n    repeated int32 f_int32 = 1 [packed=false];\n    repeated uint32 f_uint32 = 2 [packed=false];\n    repeated int64 f_int64 = 3 [packed=false];\n    repeated uint64 f_uint64 = 4 [packed=false];\n    repeated sint32 f_sint32 = 5 [packed=false];\n    repeated sint64 f_sint64 = 6 [packed=false];\n    repeated fixed32 f_fixed32 = 7 [packed=false];\n    repeated sfixed32 f_sfixed32 = 8 [packed=false];\n    repeated fixed64 f_fixed64 = 9 [packed=false];\n    repeated sfixed64 f_sfixed64 = 10 [packed=false];\n    repeated float f_float = 11 [packed=false];\n    repeated double f_double = 12 [packed=false];\n    repeated bool f_bool = 13 [packed=false];\n    repeated string f_string = 14 [packed=false];\n    repeated bytes f_bytes = 15 [packed=false];\n    repeated Object f_object = 16 [packed=false];\n}\n\nmessage RequiredFields {\n    required int32 f_int32 = 1;\n    required uint32 f_uint32 = 2;\n    required int64 f_int64 = 3;\n    required uint64 f_uint64 = 4;\n    required sint32 f_sint32 = 5;\n    required sint64 f_sint64 = 6;\n    required fixed32 f_fixed32 = 7;\n    required sfixed32 f_sfixed32 = 8;\n    required fixed64 f_fixed64 = 9;\n    required sfixed64 f_sfixed64 = 10;\n    required float f_float = 11;\n    required double f_double = 12;\n    required bool f_bool = 13;\n    required string f_string = 14;\n    required bytes f_bytes = 15;\n    required Object f_object = 16;\n}\n\nmessage Object {\n    int32 x = 1;\n}\n\nenum Enum {\n    Default = 0;\n    Enum1 = 1;\n    Enum2 = 2;\n}\n"
  }
]